From 781f13889f42ab69567fc290b6e8daa91a16f345 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Sun, 4 Nov 2012 07:11:28 -0800 Subject: [PATCH] Imported Upstream version 0.4.8 --- ANNOUNCE | 70 + COPYING | 89 + ChangeLog | 2016 ++ Makefile.am | 32 + Makefile.in | 730 + README | 131 + THANKS | 73 + TODO | 155 + aclocal.m4 | 7243 +++++++ config.guess | 1500 ++ config.h.in | 142 + config.sub | 1608 ++ configure | 22145 ++++++++++++++++++++ configure.in | 344 + depcomp | 584 + doc/Makefile.am | 18 + doc/Makefile.in | 358 + doc/draft-irtf-nmrg-smi-xml-00.txt | 672 + doc/draft-irtf-nmrg-smi-xml-01.txt | 1008 + doc/draft-irtf-nmrg-sming-02.txt | 5880 ++++++ doc/ibrpib-assignments.txt | 35 + doc/smi.dia | 2275 ++ doc/smi.dtd | 275 + doc/smi.xsd | 586 + install-sh | 507 + lib/Makefile.am | 54 + lib/Makefile.in | 662 + lib/check.c | 2207 ++ lib/check.h | 71 + lib/data.c | 4802 +++++ lib/data.h | 757 + lib/error.c | 1034 + lib/error.h | 45 + lib/errormacros.h | 275 + lib/libsmi.3 | 77 + lib/libsmi.3.in | 77 + lib/parser-smi.c | 10065 +++++++++ lib/parser-smi.h | 32 + lib/parser-smi.tab.h | 271 + lib/parser-smi.y | 7253 +++++++ lib/parser-sming.c | 5601 +++++ lib/parser-sming.h | 32 + lib/parser-sming.tab.h | 224 + lib/parser-sming.y | 3124 +++ lib/scanner-smi.c | 14173 +++++++++++++ lib/scanner-smi.h | 29 + lib/scanner-smi.l | 898 + lib/scanner-sming.c | 7508 +++++++ lib/scanner-sming.h | 29 + lib/scanner-sming.l | 576 + lib/smi.c | 2667 +++ lib/smi.h | 668 + lib/smi.h.in | 668 + lib/smi_attribute.3 | 143 + lib/smi_attribute.3.in | 143 + lib/smi_class.3 | 86 + lib/smi_class.3.in | 86 + lib/smi_config.3 | 240 + lib/smi_config.3.in | 240 + lib/smi_event.3 | 58 + lib/smi_event.3.in | 58 + lib/smi_identity.3 | 74 + lib/smi_identity.3.in | 74 + lib/smi_macro.3 | 70 + lib/smi_macro.3.in | 70 + lib/smi_module.3 | 127 + lib/smi_module.3.in | 127 + lib/smi_node.3 | 229 + lib/smi_node.3.in | 229 + lib/smi_render.3 | 94 + lib/smi_render.3.in | 94 + lib/smi_type.3 | 128 + lib/smi_type.3.in | 128 + lib/smi_util.3 | 38 + lib/smi_util.3.in | 38 + lib/snprintf.c | 631 + lib/snprintf.h | 56 + lib/util.c | 192 + lib/util.h | 63 + libsmi.m4 | 38 + libsmi.pc | 12 + libsmi.pc.in | 12 + ltmain.sh | 6871 ++++++ mibs/Makefile.am | 15 + mibs/Makefile.in | 514 + mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB | 131 + mibs/iana/IANA-CHARSET-MIB | 345 + mibs/iana/IANA-FINISHER-MIB | 283 + mibs/iana/IANA-GMPLS-TC-MIB | 292 + mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB | 448 + mibs/iana/IANA-ITU-ALARM-TC-MIB | 333 + mibs/iana/IANA-LANGUAGE-MIB | 127 + mibs/iana/IANA-MALLOC-MIB | 67 + mibs/iana/IANA-MAU-MIB | 770 + mibs/iana/IANA-PRINTER-MIB | 1319 ++ mibs/iana/IANA-RTPROTO-MIB | 92 + mibs/iana/IANATn3270eTC-MIB | 306 + mibs/iana/IANAifType-MIB | 572 + mibs/iana/Makefile.am | 21 + mibs/iana/Makefile.in | 392 + mibs/ietf/ACCOUNTING-CONTROL-MIB | 771 + mibs/ietf/ADSL-LINE-EXT-MIB | 1245 ++ mibs/ietf/ADSL-LINE-MIB | 4313 ++++ mibs/ietf/ADSL-TC-MIB | 113 + mibs/ietf/ADSL2-LINE-MIB | 5795 +++++ mibs/ietf/ADSL2-LINE-TC-MIB | 781 + mibs/ietf/AGENTX-MIB | 547 + mibs/ietf/AGGREGATE-MIB | 506 + mibs/ietf/ALARM-MIB | 1191 ++ mibs/ietf/APM-MIB | 2245 ++ mibs/ietf/APPC-MIB | 5387 +++++ mibs/ietf/APPLETALK-MIB | 3409 +++ mibs/ietf/APPLICATION-MIB | 2999 +++ mibs/ietf/APPN-DLUR-MIB | 666 + mibs/ietf/APPN-MIB | 5980 ++++++ mibs/ietf/APPN-TRAP-MIB | 493 + mibs/ietf/APS-MIB | 1780 ++ mibs/ietf/ARC-MIB | 423 + mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB | 404 + mibs/ietf/ATM-MIB | 3020 +++ mibs/ietf/ATM-TC-MIB | 710 + mibs/ietf/ATM2-MIB | 3452 +++ mibs/ietf/BGP4-MIB | 1298 ++ mibs/ietf/BLDG-HVAC-MIB | 612 + mibs/ietf/BRIDGE-MIB | 1556 ++ mibs/ietf/CHARACTER-MIB | 648 + mibs/ietf/CIRCUIT-IF-MIB | 383 + mibs/ietf/CLNS-MIB | 1297 ++ mibs/ietf/COFFEE-POT-MIB | 145 + mibs/ietf/COPS-CLIENT-MIB | 879 + mibs/ietf/DECNET-PHIV-MIB | 3020 +++ mibs/ietf/DIAL-CONTROL-MIB | 1267 ++ mibs/ietf/DIFFSERV-CONFIG-MIB | 258 + mibs/ietf/DIFFSERV-DSCP-TC | 68 + mibs/ietf/DIFFSERV-MIB | 3704 ++++ mibs/ietf/DIRECTORY-SERVER-MIB | 788 + mibs/ietf/DISMAN-EVENT-MIB | 1955 ++ mibs/ietf/DISMAN-EXPRESSION-MIB | 1227 ++ mibs/ietf/DISMAN-NSLOOKUP-MIB | 533 + mibs/ietf/DISMAN-PING-MIB | 1661 ++ mibs/ietf/DISMAN-SCHEDULE-MIB | 720 + mibs/ietf/DISMAN-SCRIPT-MIB | 1820 ++ mibs/ietf/DISMAN-TRACEROUTE-MIB | 1946 ++ mibs/ietf/DLSW-MIB | 3571 ++++ mibs/ietf/DNS-RESOLVER-MIB | 1197 ++ mibs/ietf/DNS-SERVER-MIB | 1079 + mibs/ietf/DOCS-BPI-MIB | 1625 ++ mibs/ietf/DOCS-CABLE-DEVICE-MIB | 3313 +++ mibs/ietf/DOCS-IETF-BPI2-MIB | 3644 ++++ mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB | 1532 ++ mibs/ietf/DOCS-IETF-QOS-MIB | 3241 +++ mibs/ietf/DOCS-IETF-SUBMGT-MIB | 714 + mibs/ietf/DOCS-IF-MIB | 5582 +++++ mibs/ietf/DOT12-IF-MIB | 764 + mibs/ietf/DOT12-RPTR-MIB | 1963 ++ mibs/ietf/DOT3-EPON-MIB | 2661 +++ mibs/ietf/DOT3-OAM-MIB | 2227 ++ mibs/ietf/DS0-MIB | 306 + mibs/ietf/DS0BUNDLE-MIB | 314 + mibs/ietf/DS1-MIB | 3181 +++ mibs/ietf/DS3-MIB | 1894 ++ mibs/ietf/DSA-MIB | 653 + mibs/ietf/DSMON-MIB | 4715 +++++ mibs/ietf/EBN-MIB | 751 + mibs/ietf/EFM-CU-MIB | 3162 +++ mibs/ietf/ENTITY-MIB | 1499 ++ mibs/ietf/ENTITY-SENSOR-MIB | 474 + mibs/ietf/ENTITY-STATE-MIB | 348 + mibs/ietf/ENTITY-STATE-TC-MIB | 178 + mibs/ietf/ETHER-CHIPSET-MIB | 530 + mibs/ietf/ETHER-WIS | 730 + mibs/ietf/EtherLike-MIB | 1954 ++ mibs/ietf/FC-MGMT-MIB | 2442 +++ mibs/ietf/FCIP-MGMT-MIB | 1122 + mibs/ietf/FDDI-SMT73-MIB | 2129 ++ mibs/ietf/FIBRE-CHANNEL-FE-MIB | 1794 ++ mibs/ietf/FLOW-METER-MIB | 1901 ++ mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB | 1102 + mibs/ietf/FR-MFR-MIB | 917 + mibs/ietf/FRAME-RELAY-DTE-MIB | 1039 + mibs/ietf/FRNETSERV-MIB | 2564 +++ mibs/ietf/FRSLD-MIB | 1823 ++ mibs/ietf/Finisher-MIB | 919 + mibs/ietf/GMPLS-LABEL-STD-MIB | 724 + mibs/ietf/GMPLS-LSR-STD-MIB | 531 + mibs/ietf/GMPLS-TC-STD-MIB | 129 + mibs/ietf/GMPLS-TE-STD-MIB | 1849 ++ mibs/ietf/GSMP-MIB | 1680 ++ mibs/ietf/HC-ALARM-MIB | 745 + mibs/ietf/HC-PerfHist-TC-MIB | 235 + mibs/ietf/HC-RMON-MIB | 3333 +++ mibs/ietf/HCNUM-TC | 122 + mibs/ietf/HDSL2-SHDSL-LINE-MIB | 2648 +++ mibs/ietf/HOST-RESOURCES-MIB | 1534 ++ mibs/ietf/HOST-RESOURCES-TYPES | 387 + mibs/ietf/HPR-IP-MIB | 514 + mibs/ietf/HPR-MIB | 1346 ++ mibs/ietf/IANA-ITU-ALARM-TC-MIB | 350 + mibs/ietf/IF-CAP-STACK-MIB | 305 + mibs/ietf/IF-INVERTED-STACK-MIB | 159 + mibs/ietf/IF-MIB | 1899 ++ mibs/ietf/IFCP-MGMT-MIB | 1076 + mibs/ietf/IGMP-STD-MIB | 545 + mibs/ietf/INET-ADDRESS-MIB | 421 + mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB | 221 + mibs/ietf/INTEGRATED-SERVICES-MIB | 789 + mibs/ietf/INTERFACETOPN-MIB | 1065 + mibs/ietf/IP-FORWARD-MIB | 1357 ++ mibs/ietf/IP-MIB | 5254 +++++ mibs/ietf/IPATM-IPMC-MIB | 3238 +++ mibs/ietf/IPMCAST-MIB | 2519 +++ mibs/ietf/IPMROUTE-STD-MIB | 906 + mibs/ietf/IPOA-MIB | 1647 ++ mibs/ietf/IPS-AUTH-MIB | 1219 ++ mibs/ietf/IPSEC-SPD-MIB | 2849 +++ mibs/ietf/IPV6-FLOW-LABEL-MIB | 63 + mibs/ietf/IPV6-ICMP-MIB | 529 + mibs/ietf/IPV6-MIB | 1450 ++ mibs/ietf/IPV6-MLD-MIB | 444 + mibs/ietf/IPV6-TC | 67 + mibs/ietf/IPV6-TCP-MIB | 209 + mibs/ietf/IPV6-UDP-MIB | 141 + mibs/ietf/ISCSI-MIB | 3276 +++ mibs/ietf/ISDN-MIB | 1249 ++ mibs/ietf/ISIS-MIB | 4581 ++++ mibs/ietf/ISNS-MIB | 3442 +++ mibs/ietf/ITU-ALARM-MIB | 502 + mibs/ietf/ITU-ALARM-TC-MIB | 89 + mibs/ietf/Job-Monitoring-MIB | 1732 ++ mibs/ietf/L2TP-MIB | 2815 +++ mibs/ietf/LANGTAG-TC-MIB | 58 + mibs/ietf/LMP-MIB | 3374 +++ mibs/ietf/MALLOC-MIB | 1452 ++ mibs/ietf/MAU-MIB | 1837 ++ mibs/ietf/MIDCOM-MIB | 2386 +++ mibs/ietf/MIOX25-MIB | 708 + mibs/ietf/MIP-MIB | 2121 ++ mibs/ietf/MOBILEIPV6-MIB | 4964 +++++ mibs/ietf/MPLS-FTN-STD-MIB | 1086 + mibs/ietf/MPLS-L3VPN-STD-MIB | 1682 ++ mibs/ietf/MPLS-LC-ATM-STD-MIB | 356 + mibs/ietf/MPLS-LC-FR-STD-MIB | 275 + mibs/ietf/MPLS-LDP-ATM-STD-MIB | 792 + mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB | 662 + mibs/ietf/MPLS-LDP-GENERIC-STD-MIB | 336 + mibs/ietf/MPLS-LDP-STD-MIB | 2547 +++ mibs/ietf/MPLS-LSR-STD-MIB | 2232 ++ mibs/ietf/MPLS-TC-STD-MIB | 670 + mibs/ietf/MPLS-TE-STD-MIB | 2631 +++ mibs/ietf/MSDP-MIB | 1247 ++ mibs/ietf/MTA-MIB | 1215 ++ mibs/ietf/Makefile.am | 17 + mibs/ietf/Makefile.in | 388 + mibs/ietf/Modem-MIB | 1340 ++ mibs/ietf/NAT-MIB | 2534 +++ mibs/ietf/NETWORK-SERVICES-MIB | 619 + mibs/ietf/NHRP-MIB | 2609 +++ mibs/ietf/NOTIFICATION-LOG-MIB | 784 + mibs/ietf/OPT-IF-MIB | 6996 +++++++ mibs/ietf/OSPF-MIB | 4398 ++++ mibs/ietf/OSPF-TRAP-MIB | 616 + mibs/ietf/P-BRIDGE-MIB | 1216 ++ mibs/ietf/PARALLEL-MIB | 292 + mibs/ietf/PIM-MIB | 924 + mibs/ietf/PIM-STD-MIB | 3967 ++++ mibs/ietf/PINT-MIB | 593 + mibs/ietf/PKTC-IETF-MTA-MIB | 2199 ++ mibs/ietf/PKTC-IETF-SIG-MIB | 3199 +++ mibs/ietf/POLICY-BASED-MANAGEMENT-MIB | 2194 ++ mibs/ietf/POWER-ETHERNET-MIB | 659 + mibs/ietf/PPP-BRIDGE-NCP-MIB | 449 + mibs/ietf/PPP-IP-NCP-MIB | 214 + mibs/ietf/PPP-LCP-MIB | 798 + mibs/ietf/PPP-SEC-MIB | 304 + mibs/ietf/PTOPO-MIB | 839 + mibs/ietf/PerfHist-TC-MIB | 191 + mibs/ietf/Printer-MIB | 4638 ++++ mibs/ietf/Q-BRIDGE-MIB | 2489 +++ mibs/ietf/RADIUS-ACC-CLIENT-MIB | 694 + mibs/ietf/RADIUS-ACC-SERVER-MIB | 772 + mibs/ietf/RADIUS-AUTH-CLIENT-MIB | 755 + mibs/ietf/RADIUS-AUTH-SERVER-MIB | 824 + mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB | 816 + mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB | 742 + mibs/ietf/RAQMON-MIB | 1514 ++ mibs/ietf/RDBMS-MIB | 1398 ++ mibs/ietf/RFC-1212 | 75 + mibs/ietf/RFC-1215 | 34 + mibs/ietf/RFC1065-SMI | 132 + mibs/ietf/RFC1155-SMI | 129 + mibs/ietf/RFC1158-MIB | 1493 ++ mibs/ietf/RFC1213-MIB | 2621 +++ mibs/ietf/RFC1269-MIB | 375 + mibs/ietf/RFC1271-MIB | 3356 +++ mibs/ietf/RFC1285-MIB | 1870 ++ mibs/ietf/RFC1316-MIB | 513 + mibs/ietf/RFC1381-MIB | 1011 + mibs/ietf/RFC1382-MIB | 2625 +++ mibs/ietf/RFC1414-MIB | 134 + mibs/ietf/RIPv2-MIB | 530 + mibs/ietf/RMON-MIB | 3952 ++++ mibs/ietf/RMON2-MIB | 6019 ++++++ mibs/ietf/ROHC-MIB | 1197 ++ mibs/ietf/ROHC-RTP-MIB | 655 + mibs/ietf/ROHC-UNCOMPRESSED-MIB | 206 + mibs/ietf/RS-232-MIB | 792 + mibs/ietf/RSTP-MIB | 327 + mibs/ietf/RSVP-MIB | 2812 +++ mibs/ietf/RTP-MIB | 1012 + mibs/ietf/SCSI-MIB | 2930 +++ mibs/ietf/SCTP-MIB | 1641 ++ mibs/ietf/SFLOW-MIB | 410 + mibs/ietf/SIP-COMMON-MIB | 2013 ++ mibs/ietf/SIP-MIB | 1117 + mibs/ietf/SIP-SERVER-MIB | 901 + mibs/ietf/SIP-TC-MIB | 183 + mibs/ietf/SIP-UA-MIB | 209 + mibs/ietf/SLAPM-MIB | 2821 +++ mibs/ietf/SMON-MIB | 1262 ++ mibs/ietf/SNA-NAU-MIB | 2764 +++ mibs/ietf/SNA-SDLC-MIB | 2759 +++ mibs/ietf/SNMP-COMMUNITY-MIB | 443 + mibs/ietf/SNMP-FRAMEWORK-MIB | 564 + mibs/ietf/SNMP-MPD-MIB | 153 + mibs/ietf/SNMP-NOTIFICATION-MIB | 621 + mibs/ietf/SNMP-PROXY-MIB | 305 + mibs/ietf/SNMP-REPEATER-MIB | 3268 +++ mibs/ietf/SNMP-TARGET-MIB | 693 + mibs/ietf/SNMP-USER-BASED-SM-MIB | 959 + mibs/ietf/SNMP-USM-AES-MIB | 68 + mibs/ietf/SNMP-USM-DH-OBJECTS-MIB | 537 + mibs/ietf/SNMP-VIEW-BASED-ACM-MIB | 870 + mibs/ietf/SNMPv2-CONF | 318 + mibs/ietf/SNMPv2-MIB | 903 + mibs/ietf/SNMPv2-SMI | 352 + mibs/ietf/SNMPv2-TC | 786 + mibs/ietf/SNMPv2-TM | 194 + mibs/ietf/SNMPv2-USEC-MIB | 255 + mibs/ietf/SONET-MIB | 2523 +++ mibs/ietf/SOURCE-ROUTING-MIB | 456 + mibs/ietf/SSPM-MIB | 1090 + mibs/ietf/SYSAPPL-MIB | 1543 ++ mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB | 1322 ++ mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB | 1822 ++ mibs/ietf/T11-FC-FABRIC-LOCK-MIB | 515 + mibs/ietf/T11-FC-FSPF-MIB | 1234 ++ mibs/ietf/T11-FC-NAME-SERVER-MIB | 1192 ++ mibs/ietf/T11-FC-ROUTE-MIB | 475 + mibs/ietf/T11-FC-RSCN-MIB | 799 + mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB | 553 + mibs/ietf/T11-FC-ZONE-SERVER-MIB | 2807 +++ mibs/ietf/T11-TC-MIB | 69 + mibs/ietf/TCP-ESTATS-MIB | 3108 +++ mibs/ietf/TCP-MIB | 829 + mibs/ietf/TCPIPX-MIB | 337 + mibs/ietf/TE-LINK-STD-MIB | 1860 ++ mibs/ietf/TE-MIB | 1773 ++ mibs/ietf/TIME-AGGREGATE-MIB | 396 + mibs/ietf/TN3270E-MIB | 1943 ++ mibs/ietf/TN3270E-RT-MIB | 890 + mibs/ietf/TOKEN-RING-RMON-MIB | 2301 ++ mibs/ietf/TOKENRING-MIB | 841 + mibs/ietf/TOKENRING-STATION-SR-MIB | 177 + mibs/ietf/TRANSPORT-ADDRESS-MIB | 444 + mibs/ietf/TRIP-MIB | 2117 ++ mibs/ietf/TRIP-TC-MIB | 139 + mibs/ietf/TUNNEL-MIB | 774 + mibs/ietf/UDP-MIB | 579 + mibs/ietf/UDPLITE-MIB | 548 + mibs/ietf/UPS-MIB | 1913 ++ mibs/ietf/URI-TC-MIB | 139 + mibs/ietf/VDSL-LINE-EXT-MCM-MIB | 705 + mibs/ietf/VDSL-LINE-EXT-SCM-MIB | 477 + mibs/ietf/VDSL-LINE-MIB | 3014 +++ mibs/ietf/VPN-TC-STD-MIB | 76 + mibs/ietf/VRRP-MIB | 792 + mibs/ietf/WWW-MIB | 1276 ++ mibs/irtf/IRTF-NMRG-SMING | 61 + mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS | 76 + mibs/irtf/IRTF-NMRG-SMING-TYPES | 952 + mibs/irtf/Makefile.am | 17 + mibs/irtf/Makefile.in | 388 + mibs/site/Makefile.am | 17 + mibs/site/Makefile.in | 388 + mibs/tubs/Makefile.am | 17 + mibs/tubs/Makefile.in | 388 + mibs/tubs/POLICY-DEVICE-AUX-MIB | 233 + mibs/tubs/POLICY-DEVICE-AUX-MIB-orig | 233 + mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES | 208 + mibs/tubs/TUBS-IBR-LINUX-MIB | 131 + mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB | 636 + mibs/tubs/TUBS-IBR-NFS-MIB | 372 + mibs/tubs/TUBS-IBR-PING-MIB | 127 + mibs/tubs/TUBS-IBR-PROC-MIB | 87 + mibs/tubs/TUBS-IBR-TEST-MIB | 74 + mibs/tubs/TUBS-IBR-TNM-MIB | 330 + mibs/tubs/TUBS-IBR-XEN-MIB | 387 + mibs/tubs/TUBS-SMI | 101 + missing | 367 + pibs/Makefile.am | 23 + pibs/Makefile.in | 552 + pibs/ietf/COPS-PR-SPPI | 509 + pibs/ietf/COPS-PR-SPPI-TC | 95 + pibs/ietf/DIFFSERV-PIB | 3128 +++ pibs/ietf/FRAMEWORK-FEEDBACK-PIB | 1013 + pibs/ietf/FRAMEWORK-PIB | 2278 ++ pibs/ietf/FRAMEWORK-TC-PIB | 259 + pibs/ietf/Makefile.am | 14 + pibs/ietf/Makefile.in | 354 + pibs/site/Makefile.am | 14 + pibs/site/Makefile.in | 354 + pibs/tubs/ACCESSBIND-PIB | 2511 +++ pibs/tubs/ACCESSBIND-PIB-orig | 1626 ++ pibs/tubs/ACCOUNTING-FRAMEWORK-PIB | 292 + pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig | 291 + pibs/tubs/FEEDBACK-FRAMEWORK-PIB | 826 + pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig | 825 + pibs/tubs/IP-TE-PIB | 847 + pibs/tubs/IP-TE-PIB-orig | 844 + pibs/tubs/IPSEC-POLICY-PIB | 4159 ++++ pibs/tubs/IPSEC-POLICY-PIB-orig | 4157 ++++ pibs/tubs/LOAD-BALANCING-PIB | 572 + pibs/tubs/LOAD-BALANCING-PIB-orig | 568 + pibs/tubs/META-POLICY-PIB | 938 + pibs/tubs/META-POLICY-PIB-orig | 915 + pibs/tubs/MPLS-SETUP-PIB | 1300 ++ pibs/tubs/MPLS-SETUP-PIB-orig | 1299 ++ pibs/tubs/Makefile.am | 14 + pibs/tubs/Makefile.in | 354 + pibs/tubs/PARTITION-PIB | 917 + pibs/tubs/PARTITION-PIB-orig | 924 + pibs/tubs/POLICY-FRAMEWORK-PIB | 263 + pibs/tubs/POLICY-FRAMEWORK-PIB-orig | 283 + pibs/tubs/PPVPN-PIB | 993 + pibs/tubs/PPVPN-PIB-orig | 987 + pibs/tubs/QOS-POLICY-802-PIB | 608 + pibs/tubs/QOS-POLICY-802-PIB-orig | 602 + pibs/tubs/QOS-POLICY-IP-PIB | 1341 ++ pibs/tubs/QOS-POLICY-IP-PIB-orig | 1335 ++ pibs/tubs/RSVP-PCC-PIB | 1179 ++ pibs/tubs/RSVP-PCC-PIB-orig | 1167 ++ pibs/tubs/SLS-NEGOTIATION-PIB | 686 + pibs/tubs/SLS-NEGOTIATION-PIB-orig | 669 + pibs/tubs/UMTS-PIB | 399 + pibs/tubs/UMTS-PIB-orig | 396 + smi.conf-example | 50 + test/Makefile.am | 52 + test/Makefile.in | 685 + test/dumps/Makefile.am | 16 + test/dumps/Makefile.in | 516 + test/dumps/cm/IF-MIB | 1631 ++ test/dumps/cm/MAU-MIB | 1795 ++ test/dumps/cm/Makefile.am | 14 + test/dumps/cm/Makefile.in | 354 + test/dumps/cm/RMON2-MIB | 7067 +++++++ test/dumps/cm/SNMPv2-MIB | 841 + test/dumps/corba/IF_MIB.idl | 999 + test/dumps/corba/IF_MIB.oid | 62 + test/dumps/corba/MAU_MIB.idl | 1195 ++ test/dumps/corba/MAU_MIB.oid | 59 + test/dumps/corba/Makefile.am | 14 + test/dumps/corba/Makefile.in | 354 + test/dumps/corba/RMON2_MIB.idl | 3707 ++++ test/dumps/corba/RMON2_MIB.oid | 225 + test/dumps/corba/SNMPv2_MIB.idl | 496 + test/dumps/corba/SNMPv2_MIB.oid | 38 + test/dumps/identifiers/IF-MIB | 96 + test/dumps/identifiers/MAU-MIB | 92 + test/dumps/identifiers/Makefile.am | 14 + test/dumps/identifiers/Makefile.in | 354 + test/dumps/identifiers/RMON2-MIB | 303 + test/dumps/identifiers/SNMPv2-MIB | 72 + test/dumps/imports/IF-MIB | 31 + test/dumps/imports/MAU-MIB | 49 + test/dumps/imports/Makefile.am | 14 + test/dumps/imports/Makefile.in | 354 + test/dumps/imports/RMON2-MIB | 74 + test/dumps/imports/SNMPv2-MIB | 13 + test/dumps/jax/AddressMap.java | 135 + test/dumps/jax/AddressMapControlEntry.java | 127 + test/dumps/jax/AddressMapControlEntryImpl.java | 109 + test/dumps/jax/AddressMapControlTable.java | 121 + test/dumps/jax/AddressMapEntry.java | 80 + test/dumps/jax/AddressMapEntryImpl.java | 45 + test/dumps/jax/AddressMapImpl.java | 60 + test/dumps/jax/AddressMapTable.java | 86 + test/dumps/jax/AlHostEntry.java | 107 + test/dumps/jax/AlHostEntryImpl.java | 62 + test/dumps/jax/AlHostTable.java | 107 + test/dumps/jax/AlMatrixDSEntry.java | 104 + test/dumps/jax/AlMatrixDSEntryImpl.java | 54 + test/dumps/jax/AlMatrixDSTable.java | 93 + test/dumps/jax/AlMatrixSDEntry.java | 104 + test/dumps/jax/AlMatrixSDEntryImpl.java | 54 + test/dumps/jax/AlMatrixSDTable.java | 93 + test/dumps/jax/AlMatrixTopNControlEntry.java | 223 + test/dumps/jax/AlMatrixTopNControlEntryImpl.java | 196 + test/dumps/jax/AlMatrixTopNControlTable.java | 184 + test/dumps/jax/AlMatrixTopNEntry.java | 98 + test/dumps/jax/AlMatrixTopNEntryImpl.java | 71 + test/dumps/jax/AlMatrixTopNTable.java | 128 + test/dumps/jax/AuthenticationFailure.java | 37 + test/dumps/jax/BroadMauBasicEntry.java | 67 + test/dumps/jax/BroadMauBasicEntryImpl.java | 56 + test/dumps/jax/BroadMauBasicTable.java | 107 + test/dumps/jax/Channel2Entry.java | 44 + test/dumps/jax/Channel2EntryImpl.java | 39 + test/dumps/jax/Channel2Table.java | 86 + test/dumps/jax/ColdStart.java | 37 + test/dumps/jax/EtherStats2Entry.java | 44 + test/dumps/jax/EtherStats2EntryImpl.java | 39 + test/dumps/jax/EtherStats2Table.java | 86 + test/dumps/jax/Filter2Entry.java | 84 + test/dumps/jax/Filter2EntryImpl.java | 77 + test/dumps/jax/Filter2Table.java | 100 + test/dumps/jax/HistoryControl2Entry.java | 38 + test/dumps/jax/HistoryControl2EntryImpl.java | 34 + test/dumps/jax/HistoryControl2Table.java | 79 + test/dumps/jax/HlHostControlEntry.java | 209 + test/dumps/jax/HlHostControlEntryImpl.java | 182 + test/dumps/jax/HlHostControlTable.java | 184 + test/dumps/jax/HlMatrixControlEntry.java | 209 + test/dumps/jax/HlMatrixControlEntryImpl.java | 182 + test/dumps/jax/HlMatrixControlTable.java | 184 + test/dumps/jax/HostControl2Entry.java | 44 + test/dumps/jax/HostControl2EntryImpl.java | 39 + test/dumps/jax/HostControl2Table.java | 86 + test/dumps/jax/IfEntry.java | 186 + test/dumps/jax/IfEntryImpl.java | 158 + test/dumps/jax/IfJackEntry.java | 65 + test/dumps/jax/IfJackEntryImpl.java | 38 + test/dumps/jax/IfJackTable.java | 79 + test/dumps/jax/IfMIBObjects.java | 97 + test/dumps/jax/IfMIBObjectsImpl.java | 34 + test/dumps/jax/IfMauAutoNegEntry.java | 225 + test/dumps/jax/IfMauAutoNegEntryImpl.java | 189 + test/dumps/jax/IfMauAutoNegTable.java | 191 + test/dumps/jax/IfMauEntry.java | 161 + test/dumps/jax/IfMauEntryImpl.java | 139 + test/dumps/jax/IfMauJabberTrap.java | 47 + test/dumps/jax/IfMauTable.java | 184 + test/dumps/jax/IfRcvAddressEntry.java | 102 + test/dumps/jax/IfRcvAddressEntryImpl.java | 79 + test/dumps/jax/IfRcvAddressTable.java | 100 + test/dumps/jax/IfStackEntry.java | 75 + test/dumps/jax/IfStackEntryImpl.java | 55 + test/dumps/jax/IfStackTable.java | 86 + test/dumps/jax/IfTable.java | 233 + test/dumps/jax/IfTestEntry.java | 151 + test/dumps/jax/IfTestEntryImpl.java | 138 + test/dumps/jax/IfTestTable.java | 142 + test/dumps/jax/IfXEntry.java | 209 + test/dumps/jax/IfXEntryImpl.java | 184 + test/dumps/jax/IfXTable.java | 226 + test/dumps/jax/Interfaces.java | 81 + test/dumps/jax/InterfacesImpl.java | 29 + test/dumps/jax/LinkDown.java | 67 + test/dumps/jax/LinkUp.java | 67 + test/dumps/jax/Makefile.am | 14 + test/dumps/jax/Makefile.in | 354 + test/dumps/jax/MatrixControl2Entry.java | 44 + test/dumps/jax/MatrixControl2EntryImpl.java | 39 + test/dumps/jax/MatrixControl2Table.java | 86 + test/dumps/jax/NetConfigEntry.java | 125 + test/dumps/jax/NetConfigEntryImpl.java | 107 + test/dumps/jax/NetConfigTable.java | 114 + test/dumps/jax/NlHostEntry.java | 104 + test/dumps/jax/NlHostEntryImpl.java | 65 + test/dumps/jax/NlHostTable.java | 114 + test/dumps/jax/NlMatrixDSEntry.java | 95 + test/dumps/jax/NlMatrixDSEntryImpl.java | 52 + test/dumps/jax/NlMatrixDSTable.java | 93 + test/dumps/jax/NlMatrixSDEntry.java | 95 + test/dumps/jax/NlMatrixSDEntryImpl.java | 52 + test/dumps/jax/NlMatrixSDTable.java | 93 + test/dumps/jax/NlMatrixTopNControlEntry.java | 223 + test/dumps/jax/NlMatrixTopNControlEntryImpl.java | 196 + test/dumps/jax/NlMatrixTopNControlTable.java | 184 + test/dumps/jax/NlMatrixTopNEntry.java | 92 + test/dumps/jax/NlMatrixTopNEntryImpl.java | 66 + test/dumps/jax/NlMatrixTopNTable.java | 121 + test/dumps/jax/ProbeConfig.java | 328 + test/dumps/jax/ProbeConfigImpl.java | 180 + test/dumps/jax/ProtocolDir.java | 81 + test/dumps/jax/ProtocolDirEntry.java | 223 + test/dumps/jax/ProtocolDirEntryImpl.java | 191 + test/dumps/jax/ProtocolDirImpl.java | 29 + test/dumps/jax/ProtocolDirTable.java | 170 + test/dumps/jax/ProtocolDistControlEntry.java | 133 + test/dumps/jax/ProtocolDistControlEntryImpl.java | 114 + test/dumps/jax/ProtocolDistControlTable.java | 128 + test/dumps/jax/ProtocolDistStatsEntry.java | 62 + test/dumps/jax/ProtocolDistStatsEntryImpl.java | 41 + test/dumps/jax/ProtocolDistStatsTable.java | 86 + test/dumps/jax/RingStationControl2Entry.java | 44 + test/dumps/jax/RingStationControl2EntryImpl.java | 39 + test/dumps/jax/RingStationControl2Table.java | 86 + test/dumps/jax/RpJackEntry.java | 74 + test/dumps/jax/RpJackEntryImpl.java | 40 + test/dumps/jax/RpJackTable.java | 79 + test/dumps/jax/RpMauEntry.java | 120 + test/dumps/jax/RpMauEntryImpl.java | 102 + test/dumps/jax/RpMauJabberTrap.java | 47 + test/dumps/jax/RpMauTable.java | 149 + test/dumps/jax/SerialConfigEntry.java | 287 + test/dumps/jax/SerialConfigEntryImpl.java | 257 + test/dumps/jax/SerialConfigTable.java | 198 + test/dumps/jax/SerialConnectionEntry.java | 266 + test/dumps/jax/SerialConnectionEntryImpl.java | 239 + test/dumps/jax/SerialConnectionTable.java | 184 + test/dumps/jax/Snmp.java | 567 + test/dumps/jax/SnmpImpl.java | 195 + test/dumps/jax/SnmpSet.java | 103 + test/dumps/jax/SnmpSetImpl.java | 50 + test/dumps/jax/SnmpTrap.java | 97 + test/dumps/jax/SnmpTrapImpl.java | 34 + test/dumps/jax/SourceRoutingStats2Entry.java | 44 + test/dumps/jax/SourceRoutingStats2EntryImpl.java | 39 + test/dumps/jax/SourceRoutingStats2Table.java | 86 + test/dumps/jax/SysOREntry.java | 58 + test/dumps/jax/SysOREntryImpl.java | 44 + test/dumps/jax/SysORTable.java | 93 + test/dumps/jax/System.java | 268 + test/dumps/jax/SystemImpl.java | 133 + test/dumps/jax/TokenRingMLStats2Entry.java | 44 + test/dumps/jax/TokenRingMLStats2EntryImpl.java | 39 + test/dumps/jax/TokenRingMLStats2Table.java | 86 + test/dumps/jax/TokenRingPStats2Entry.java | 44 + test/dumps/jax/TokenRingPStats2EntryImpl.java | 39 + test/dumps/jax/TokenRingPStats2Table.java | 86 + test/dumps/jax/TrapDestEntry.java | 179 + test/dumps/jax/TrapDestEntryImpl.java | 158 + test/dumps/jax/TrapDestTable.java | 142 + test/dumps/jax/UsrHistoryControlEntry.java | 179 + test/dumps/jax/UsrHistoryControlEntryImpl.java | 157 + test/dumps/jax/UsrHistoryControlTable.java | 149 + test/dumps/jax/UsrHistoryEntry.java | 83 + test/dumps/jax/UsrHistoryEntryImpl.java | 53 + test/dumps/jax/UsrHistoryObjectEntry.java | 102 + test/dumps/jax/UsrHistoryObjectEntryImpl.java | 79 + test/dumps/jax/UsrHistoryObjectTable.java | 100 + test/dumps/jax/UsrHistoryTable.java | 100 + test/dumps/jax/WarmStart.java | 37 + test/dumps/metrics/IF-MIB | 149 + test/dumps/metrics/MAU-MIB | 143 + test/dumps/metrics/Makefile.am | 14 + test/dumps/metrics/Makefile.in | 354 + test/dumps/metrics/RMON2-MIB | 188 + test/dumps/metrics/SNMPv2-MIB | 127 + test/dumps/mosy/IF-MIB | 160 + test/dumps/mosy/MAU-MIB | 201 + test/dumps/mosy/Makefile.am | 14 + test/dumps/mosy/Makefile.in | 354 + test/dumps/mosy/RMON2-MIB | 518 + test/dumps/mosy/SNMPv2-MIB | 112 + test/dumps/netsnmp/Makefile.am | 14 + test/dumps/netsnmp/Makefile.in | 354 + test/dumps/netsnmp/if-mib-agt-stub.c | 794 + test/dumps/netsnmp/if-mib-agt.c | 38 + test/dumps/netsnmp/if-mib-mgr-stub.c | 664 + test/dumps/netsnmp/if-mib.h | 351 + test/dumps/netsnmp/mau-mib-agt-stub.c | 650 + test/dumps/netsnmp/mau-mib-agt.c | 38 + test/dumps/netsnmp/mau-mib-mgr-stub.c | 565 + test/dumps/netsnmp/mau-mib.h | 300 + test/dumps/netsnmp/rmon2-mib-agt-stub.c | 3648 ++++ test/dumps/netsnmp/rmon2-mib-agt.c | 38 + test/dumps/netsnmp/rmon2-mib-mgr-stub.c | 2785 +++ test/dumps/netsnmp/rmon2-mib.h | 1545 ++ test/dumps/netsnmp/snmpv2-mib-agt-stub.c | 548 + test/dumps/netsnmp/snmpv2-mib-agt.c | 38 + test/dumps/netsnmp/snmpv2-mib-mgr-stub.c | 480 + test/dumps/netsnmp/snmpv2-mib.h | 235 + test/dumps/orig-smiv2/IF-MIB | 39 + test/dumps/orig-smiv2/MAU-MIB | 31 + test/dumps/orig-smiv2/Makefile.am | 14 + test/dumps/orig-smiv2/Makefile.in | 354 + test/dumps/orig-smiv2/RMON2-MIB | 18 + test/dumps/orig-smiv2/SNMPv2-MIB | 35 + test/dumps/python/IF-MIB | 2753 +++ test/dumps/python/MAU-MIB | 2619 +++ test/dumps/python/Makefile.am | 14 + test/dumps/python/Makefile.in | 354 + test/dumps/python/RMON2-MIB | 8224 ++++++++ test/dumps/python/SNMPv2-MIB | 1382 ++ test/dumps/smilint-smiv2/IF-MIB | 4 + test/dumps/smilint-smiv2/MAU-MIB | 10 + test/dumps/smilint-smiv2/Makefile.am | 14 + test/dumps/smilint-smiv2/Makefile.in | 354 + test/dumps/smilint-smiv2/RMON2-MIB | 21 + test/dumps/smilint-smiv2/SNMPv2-MIB | 1 + test/dumps/sming/IF-MIB | 1697 ++ test/dumps/sming/MAU-MIB | 1754 ++ test/dumps/sming/Makefile.am | 14 + test/dumps/sming/Makefile.in | 354 + test/dumps/sming/RMON2-MIB | 5332 +++++ test/dumps/sming/SNMPv2-MIB | 854 + test/dumps/smiv1/IF-MIB | 1804 ++ test/dumps/smiv1/MAU-MIB | 1848 ++ test/dumps/smiv1/Makefile.am | 14 + test/dumps/smiv1/Makefile.in | 354 + test/dumps/smiv1/RMON2-MIB | 5676 +++++ test/dumps/smiv1/SNMPv2-MIB | 848 + test/dumps/smiv2-smiv2/IF-MIB | 1721 ++ test/dumps/smiv2-smiv2/MAU-MIB | 1776 ++ test/dumps/smiv2-smiv2/Makefile.am | 14 + test/dumps/smiv2-smiv2/Makefile.in | 354 + test/dumps/smiv2-smiv2/RMON2-MIB | 5590 +++++ test/dumps/smiv2-smiv2/SNMPv2-MIB | 804 + test/dumps/smiv2/IF-MIB | 1721 ++ test/dumps/smiv2/MAU-MIB | 1776 ++ test/dumps/smiv2/Makefile.am | 14 + test/dumps/smiv2/Makefile.in | 354 + test/dumps/smiv2/RMON2-MIB | 5590 +++++ test/dumps/smiv2/SNMPv2-MIB | 804 + test/dumps/tree/IF-MIB | 150 + test/dumps/tree/MAU-MIB | 140 + test/dumps/tree/Makefile.am | 14 + test/dumps/tree/Makefile.in | 354 + test/dumps/tree/RMON2-MIB | 443 + test/dumps/tree/SNMPv2-MIB | 111 + test/dumps/types/IF-MIB | 33 + test/dumps/types/MAU-MIB | 27 + test/dumps/types/Makefile.am | 14 + test/dumps/types/Makefile.in | 354 + test/dumps/types/RMON2-MIB | 122 + test/dumps/types/SNMPv2-MIB | 20 + test/dumps/xml/IF-MIB | 1907 ++ test/dumps/xml/MAU-MIB | 1937 ++ test/dumps/xml/Makefile.am | 14 + test/dumps/xml/Makefile.in | 354 + test/dumps/xml/RMON2-MIB | 5733 +++++ test/dumps/xml/SNMPv2-MIB | 919 + test/dumps/yang/IF-MIB | 1206 ++ test/dumps/yang/MAU-MIB | 1346 ++ test/dumps/yang/Makefile.am | 14 + test/dumps/yang/Makefile.in | 354 + test/dumps/yang/RMON2-MIB | 4802 +++++ test/dumps/yang/SNMPv2-MIB | 648 + test/mibs/LIBSMI-TEST-001-MIB | 42 + test/mibs/LIBSMI-TEST-002-MIB | 45 + test/mibs/LIBSMI-TEST-003-MIB | 58 + test/mibs/LIBSMI-TEST-004-MIB | 45 + test/mibs/LIBSMI-TEST-005-MIB | 43 + test/mibs/LIBSMI-TEST-006-MIB | 40 + test/mibs/LIBSMI-TEST-007-MIB | 46 + test/mibs/LIBSMI-TEST-008-MIB | 204 + test/mibs/LIBSMI-TEST-009-MIB | 134 + test/mibs/LIBSMI-TEST-010-MIB | 140 + test/mibs/LIBSMI-TEST-011-MIB | 131 + test/mibs/LIBSMI-TEST-012-MIB | 71 + test/mibs/LIBSMI-TEST-013-MIB | 93 + test/mibs/LIBSMI-TEST-014-MIB | 317 + test/mibs/LIBSMI-TEST-015-MIB | 91 + test/mibs/LIBSMI-TEST-016-MIB | 221 + test/mibs/LIBSMI-TEST-017-MIB | 268 + test/mibs/LIBSMI-TEST-018-MIB | 67 + test/mibs/LIBSMI-TEST-MIB | 41 + test/mibs/Makefile.am | 24 + test/mibs/Makefile.in | 364 + test/parser.test | 29 + test/parser.test.in | 29 + test/smidiff.test | 44 + test/smidiff.test.in | 44 + test/smidiff/DISMAN-SCRIPT-MIB.diff | 79 + test/smidiff/DISMAN-SCRIPT-MIB.old | 1465 ++ test/smidiff/IF-MIB.diff | 120 + test/smidiff/IF-MIB.old | 1445 ++ test/smidiff/INET-ADDRESS-MIB.diff | 27 + test/smidiff/INET-ADDRESS-MIB.old | 188 + test/smidiff/Makefile.am | 14 + test/smidiff/Makefile.in | 354 + test/smidiff/Printer-MIB.diff | 1236 ++ test/smidiff/Printer-MIB.new | 5200 +++++ test/smidiff/SMIDIFF-TEST-001-MIB.diff | 0 test/smidiff/SMIDIFF-TEST-001-MIB.new | 33 + test/smidiff/SMIDIFF-TEST-001-MIB.old | 33 + test/smidiff/SMIDIFF-TEST-002-MIB.diff | 18 + test/smidiff/SMIDIFF-TEST-002-MIB.new | 131 + test/smidiff/SMIDIFF-TEST-002-MIB.old | 129 + test/smidiff/SMIDIFF-TEST-003-MIB.diff | 14 + test/smidiff/SMIDIFF-TEST-003-MIB.new | 155 + test/smidiff/SMIDIFF-TEST-003-MIB.old | 156 + test/smidiff/SMIDIFF-TEST-004-MIB.diff | 7 + test/smidiff/SMIDIFF-TEST-004-MIB.new | 59 + test/smidiff/SMIDIFF-TEST-004-MIB.old | 57 + test/smidiff/SMIDIFF-TEST-005-MIB.diff | 10 + test/smidiff/SMIDIFF-TEST-005-MIB.new | 271 + test/smidiff/SMIDIFF-TEST-005-MIB.old | 270 + test/smidiff/SMIDIFF-TEST-006-MIB.diff | 5 + test/smidiff/SMIDIFF-TEST-006-MIB.new | 44 + test/smidiff/SMIDIFF-TEST-006-MIB.old | 48 + test/smidiff/SMIDIFF-TEST-007-MIB.diff | 10 + test/smidiff/SMIDIFF-TEST-007-MIB.new | 69 + test/smidiff/SMIDIFF-TEST-007-MIB.old | 59 + test/smidiff/SMIDIFF-TEST-MIB | 40 + test/smidump-cm.test | 97 + test/smidump-cm.test.in | 97 + test/smidump-corba.test | 97 + test/smidump-corba.test.in | 97 + test/smidump-identifiers.test | 97 + test/smidump-identifiers.test.in | 97 + test/smidump-imports.test | 97 + test/smidump-imports.test.in | 97 + test/smidump-jax.test | 97 + test/smidump-jax.test.in | 97 + test/smidump-metrics.test | 97 + test/smidump-metrics.test.in | 97 + test/smidump-mosy.test | 97 + test/smidump-mosy.test.in | 97 + test/smidump-netsnmp.test | 97 + test/smidump-netsnmp.test.in | 97 + test/smidump-orig-smiv2.test | 97 + test/smidump-orig-smiv2.test.in | 97 + test/smidump-python.test | 97 + test/smidump-python.test.in | 97 + test/smidump-sming.test | 97 + test/smidump-sming.test.in | 97 + test/smidump-smiv1.test | 97 + test/smidump-smiv1.test.in | 97 + test/smidump-smiv2-smiv2.test | 97 + test/smidump-smiv2-smiv2.test.in | 97 + test/smidump-smiv2.test | 97 + test/smidump-smiv2.test.in | 97 + test/smidump-tree.test | 97 + test/smidump-tree.test.in | 97 + test/smidump-types.test | 97 + test/smidump-types.test.in | 97 + test/smidump-xml.test | 97 + test/smidump-xml.test.in | 97 + test/smidump-yang.test | 97 + test/smidump-yang.test.in | 97 + test/smilint-smiv2.test | 56 + test/smilint-smiv2.test.in | 56 + tools/Makefile.am | 59 + tools/Makefile.in | 696 + tools/dstring.c | 231 + tools/dstring.h | 90 + tools/dump-boilerplate.c | 241 + tools/dump-cm.c | 1209 ++ tools/dump-compliance.c | 298 + tools/dump-corba.c | 1739 ++ tools/dump-fig.c | 220 + tools/dump-identifiers.c | 226 + tools/dump-imports.c | 199 + tools/dump-jax.c | 1528 ++ tools/dump-metrics.c | 1687 ++ tools/dump-mosy.c | 547 + tools/dump-netsnmp.c | 1343 ++ tools/dump-perl.c | 1129 + tools/dump-python.c | 1112 + tools/dump-scli.c | 3393 +++ tools/dump-sizes.c | 1345 ++ tools/dump-smi.c | 2045 ++ tools/dump-sming.c | 1695 ++ tools/dump-sppi.c | 1745 ++ tools/dump-svg-script.h | 616 + tools/dump-svg-script.js | 614 + tools/dump-svg.c | 3342 +++ tools/dump-tree.c | 540 + tools/dump-types.c | 697 + tools/dump-xml.c | 1030 + tools/dump-xsd.c | 2163 ++ tools/dump-yang.c | 1426 ++ tools/fortopat.c | 773 + tools/fortopat.h | 43 + tools/fprint.c | 107 + tools/fprint.h | 36 + tools/mib2svg.cgi.in | 148 + tools/rea.c | 1820 ++ tools/rea.h | 226 + tools/shhopt.c | 432 + tools/shhopt.h | 41 + tools/smicache.1 | 64 + tools/smicache.1.in | 64 + tools/smicache.in | 80 + tools/smidiff.1 | 87 + tools/smidiff.1.in | 87 + tools/smidiff.c | 3211 +++ tools/smidump.1 | 194 + tools/smidump.1.in | 194 + tools/smidump.c | 433 + tools/smidump.h | 125 + tools/smilint.1 | 153 + tools/smilint.1.in | 153 + tools/smilint.c | 332 + tools/smiquery.1 | 66 + tools/smiquery.1.in | 66 + tools/smiquery.c | 485 + tools/smistrip.1 | 73 + tools/smistrip.1.in | 73 + tools/smistrip.in | 187 + tools/smixlate.1 | 84 + tools/smixlate.1.in | 84 + tools/smixlate.c | 328 + win/GNUmakefile | 155 + win/Makefile.mingw | 204 + win/README.mingw | 78 + win/README.win | 104 + win/config.h | 89 + win/config.h.in | 89 + win/makefile | 236 + win/win.c | 29 + win/win.h | 88 + 904 files changed, 772173 insertions(+) create mode 100644 ANNOUNCE create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 README create mode 100644 THANKS create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.in create mode 100755 depcomp create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.in create mode 100644 doc/draft-irtf-nmrg-smi-xml-00.txt create mode 100644 doc/draft-irtf-nmrg-smi-xml-01.txt create mode 100644 doc/draft-irtf-nmrg-sming-02.txt create mode 100644 doc/ibrpib-assignments.txt create mode 100644 doc/smi.dia create mode 100644 doc/smi.dtd create mode 100644 doc/smi.xsd create mode 100755 install-sh create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/check.c create mode 100644 lib/check.h create mode 100644 lib/data.c create mode 100644 lib/data.h create mode 100644 lib/error.c create mode 100644 lib/error.h create mode 100644 lib/errormacros.h create mode 100644 lib/libsmi.3 create mode 100644 lib/libsmi.3.in create mode 100644 lib/parser-smi.c create mode 100644 lib/parser-smi.h create mode 100644 lib/parser-smi.tab.h create mode 100644 lib/parser-smi.y create mode 100644 lib/parser-sming.c create mode 100644 lib/parser-sming.h create mode 100644 lib/parser-sming.tab.h create mode 100644 lib/parser-sming.y create mode 100644 lib/scanner-smi.c create mode 100644 lib/scanner-smi.h create mode 100644 lib/scanner-smi.l create mode 100644 lib/scanner-sming.c create mode 100644 lib/scanner-sming.h create mode 100644 lib/scanner-sming.l create mode 100644 lib/smi.c create mode 100644 lib/smi.h create mode 100644 lib/smi.h.in create mode 100644 lib/smi_attribute.3 create mode 100644 lib/smi_attribute.3.in create mode 100644 lib/smi_class.3 create mode 100644 lib/smi_class.3.in create mode 100644 lib/smi_config.3 create mode 100644 lib/smi_config.3.in create mode 100644 lib/smi_event.3 create mode 100644 lib/smi_event.3.in create mode 100644 lib/smi_identity.3 create mode 100644 lib/smi_identity.3.in create mode 100644 lib/smi_macro.3 create mode 100644 lib/smi_macro.3.in create mode 100644 lib/smi_module.3 create mode 100644 lib/smi_module.3.in create mode 100644 lib/smi_node.3 create mode 100644 lib/smi_node.3.in create mode 100644 lib/smi_render.3 create mode 100644 lib/smi_render.3.in create mode 100644 lib/smi_type.3 create mode 100644 lib/smi_type.3.in create mode 100644 lib/smi_util.3 create mode 100644 lib/smi_util.3.in create mode 100644 lib/snprintf.c create mode 100644 lib/snprintf.h create mode 100644 lib/util.c create mode 100644 lib/util.h create mode 100644 libsmi.m4 create mode 100644 libsmi.pc create mode 100644 libsmi.pc.in create mode 100644 ltmain.sh create mode 100644 mibs/Makefile.am create mode 100644 mibs/Makefile.in create mode 100644 mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB create mode 100644 mibs/iana/IANA-CHARSET-MIB create mode 100644 mibs/iana/IANA-FINISHER-MIB create mode 100644 mibs/iana/IANA-GMPLS-TC-MIB create mode 100644 mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB create mode 100644 mibs/iana/IANA-ITU-ALARM-TC-MIB create mode 100644 mibs/iana/IANA-LANGUAGE-MIB create mode 100644 mibs/iana/IANA-MALLOC-MIB create mode 100644 mibs/iana/IANA-MAU-MIB create mode 100644 mibs/iana/IANA-PRINTER-MIB create mode 100644 mibs/iana/IANA-RTPROTO-MIB create mode 100644 mibs/iana/IANATn3270eTC-MIB create mode 100644 mibs/iana/IANAifType-MIB create mode 100644 mibs/iana/Makefile.am create mode 100644 mibs/iana/Makefile.in create mode 100644 mibs/ietf/ACCOUNTING-CONTROL-MIB create mode 100644 mibs/ietf/ADSL-LINE-EXT-MIB create mode 100644 mibs/ietf/ADSL-LINE-MIB create mode 100644 mibs/ietf/ADSL-TC-MIB create mode 100644 mibs/ietf/ADSL2-LINE-MIB create mode 100644 mibs/ietf/ADSL2-LINE-TC-MIB create mode 100644 mibs/ietf/AGENTX-MIB create mode 100644 mibs/ietf/AGGREGATE-MIB create mode 100644 mibs/ietf/ALARM-MIB create mode 100644 mibs/ietf/APM-MIB create mode 100644 mibs/ietf/APPC-MIB create mode 100644 mibs/ietf/APPLETALK-MIB create mode 100644 mibs/ietf/APPLICATION-MIB create mode 100644 mibs/ietf/APPN-DLUR-MIB create mode 100644 mibs/ietf/APPN-MIB create mode 100644 mibs/ietf/APPN-TRAP-MIB create mode 100644 mibs/ietf/APS-MIB create mode 100644 mibs/ietf/ARC-MIB create mode 100644 mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB create mode 100644 mibs/ietf/ATM-MIB create mode 100644 mibs/ietf/ATM-TC-MIB create mode 100644 mibs/ietf/ATM2-MIB create mode 100644 mibs/ietf/BGP4-MIB create mode 100644 mibs/ietf/BLDG-HVAC-MIB create mode 100644 mibs/ietf/BRIDGE-MIB create mode 100644 mibs/ietf/CHARACTER-MIB create mode 100644 mibs/ietf/CIRCUIT-IF-MIB create mode 100644 mibs/ietf/CLNS-MIB create mode 100644 mibs/ietf/COFFEE-POT-MIB create mode 100644 mibs/ietf/COPS-CLIENT-MIB create mode 100644 mibs/ietf/DECNET-PHIV-MIB create mode 100644 mibs/ietf/DIAL-CONTROL-MIB create mode 100644 mibs/ietf/DIFFSERV-CONFIG-MIB create mode 100644 mibs/ietf/DIFFSERV-DSCP-TC create mode 100644 mibs/ietf/DIFFSERV-MIB create mode 100644 mibs/ietf/DIRECTORY-SERVER-MIB create mode 100644 mibs/ietf/DISMAN-EVENT-MIB create mode 100644 mibs/ietf/DISMAN-EXPRESSION-MIB create mode 100644 mibs/ietf/DISMAN-NSLOOKUP-MIB create mode 100644 mibs/ietf/DISMAN-PING-MIB create mode 100644 mibs/ietf/DISMAN-SCHEDULE-MIB create mode 100644 mibs/ietf/DISMAN-SCRIPT-MIB create mode 100644 mibs/ietf/DISMAN-TRACEROUTE-MIB create mode 100644 mibs/ietf/DLSW-MIB create mode 100644 mibs/ietf/DNS-RESOLVER-MIB create mode 100644 mibs/ietf/DNS-SERVER-MIB create mode 100644 mibs/ietf/DOCS-BPI-MIB create mode 100644 mibs/ietf/DOCS-CABLE-DEVICE-MIB create mode 100644 mibs/ietf/DOCS-IETF-BPI2-MIB create mode 100644 mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB create mode 100644 mibs/ietf/DOCS-IETF-QOS-MIB create mode 100644 mibs/ietf/DOCS-IETF-SUBMGT-MIB create mode 100644 mibs/ietf/DOCS-IF-MIB create mode 100644 mibs/ietf/DOT12-IF-MIB create mode 100644 mibs/ietf/DOT12-RPTR-MIB create mode 100644 mibs/ietf/DOT3-EPON-MIB create mode 100644 mibs/ietf/DOT3-OAM-MIB create mode 100644 mibs/ietf/DS0-MIB create mode 100644 mibs/ietf/DS0BUNDLE-MIB create mode 100644 mibs/ietf/DS1-MIB create mode 100644 mibs/ietf/DS3-MIB create mode 100644 mibs/ietf/DSA-MIB create mode 100644 mibs/ietf/DSMON-MIB create mode 100644 mibs/ietf/EBN-MIB create mode 100644 mibs/ietf/EFM-CU-MIB create mode 100644 mibs/ietf/ENTITY-MIB create mode 100644 mibs/ietf/ENTITY-SENSOR-MIB create mode 100644 mibs/ietf/ENTITY-STATE-MIB create mode 100644 mibs/ietf/ENTITY-STATE-TC-MIB create mode 100644 mibs/ietf/ETHER-CHIPSET-MIB create mode 100644 mibs/ietf/ETHER-WIS create mode 100644 mibs/ietf/EtherLike-MIB create mode 100644 mibs/ietf/FC-MGMT-MIB create mode 100644 mibs/ietf/FCIP-MGMT-MIB create mode 100644 mibs/ietf/FDDI-SMT73-MIB create mode 100644 mibs/ietf/FIBRE-CHANNEL-FE-MIB create mode 100644 mibs/ietf/FLOW-METER-MIB create mode 100644 mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB create mode 100644 mibs/ietf/FR-MFR-MIB create mode 100644 mibs/ietf/FRAME-RELAY-DTE-MIB create mode 100644 mibs/ietf/FRNETSERV-MIB create mode 100644 mibs/ietf/FRSLD-MIB create mode 100644 mibs/ietf/Finisher-MIB create mode 100644 mibs/ietf/GMPLS-LABEL-STD-MIB create mode 100644 mibs/ietf/GMPLS-LSR-STD-MIB create mode 100644 mibs/ietf/GMPLS-TC-STD-MIB create mode 100644 mibs/ietf/GMPLS-TE-STD-MIB create mode 100644 mibs/ietf/GSMP-MIB create mode 100644 mibs/ietf/HC-ALARM-MIB create mode 100644 mibs/ietf/HC-PerfHist-TC-MIB create mode 100644 mibs/ietf/HC-RMON-MIB create mode 100644 mibs/ietf/HCNUM-TC create mode 100644 mibs/ietf/HDSL2-SHDSL-LINE-MIB create mode 100644 mibs/ietf/HOST-RESOURCES-MIB create mode 100644 mibs/ietf/HOST-RESOURCES-TYPES create mode 100644 mibs/ietf/HPR-IP-MIB create mode 100644 mibs/ietf/HPR-MIB create mode 100644 mibs/ietf/IANA-ITU-ALARM-TC-MIB create mode 100644 mibs/ietf/IF-CAP-STACK-MIB create mode 100644 mibs/ietf/IF-INVERTED-STACK-MIB create mode 100644 mibs/ietf/IF-MIB create mode 100644 mibs/ietf/IFCP-MGMT-MIB create mode 100644 mibs/ietf/IGMP-STD-MIB create mode 100644 mibs/ietf/INET-ADDRESS-MIB create mode 100644 mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB create mode 100644 mibs/ietf/INTEGRATED-SERVICES-MIB create mode 100644 mibs/ietf/INTERFACETOPN-MIB create mode 100644 mibs/ietf/IP-FORWARD-MIB create mode 100644 mibs/ietf/IP-MIB create mode 100644 mibs/ietf/IPATM-IPMC-MIB create mode 100644 mibs/ietf/IPMCAST-MIB create mode 100644 mibs/ietf/IPMROUTE-STD-MIB create mode 100644 mibs/ietf/IPOA-MIB create mode 100644 mibs/ietf/IPS-AUTH-MIB create mode 100644 mibs/ietf/IPSEC-SPD-MIB create mode 100644 mibs/ietf/IPV6-FLOW-LABEL-MIB create mode 100644 mibs/ietf/IPV6-ICMP-MIB create mode 100644 mibs/ietf/IPV6-MIB create mode 100644 mibs/ietf/IPV6-MLD-MIB create mode 100644 mibs/ietf/IPV6-TC create mode 100644 mibs/ietf/IPV6-TCP-MIB create mode 100644 mibs/ietf/IPV6-UDP-MIB create mode 100644 mibs/ietf/ISCSI-MIB create mode 100644 mibs/ietf/ISDN-MIB create mode 100644 mibs/ietf/ISIS-MIB create mode 100644 mibs/ietf/ISNS-MIB create mode 100644 mibs/ietf/ITU-ALARM-MIB create mode 100644 mibs/ietf/ITU-ALARM-TC-MIB create mode 100644 mibs/ietf/Job-Monitoring-MIB create mode 100644 mibs/ietf/L2TP-MIB create mode 100644 mibs/ietf/LANGTAG-TC-MIB create mode 100644 mibs/ietf/LMP-MIB create mode 100644 mibs/ietf/MALLOC-MIB create mode 100644 mibs/ietf/MAU-MIB create mode 100644 mibs/ietf/MIDCOM-MIB create mode 100644 mibs/ietf/MIOX25-MIB create mode 100644 mibs/ietf/MIP-MIB create mode 100644 mibs/ietf/MOBILEIPV6-MIB create mode 100644 mibs/ietf/MPLS-FTN-STD-MIB create mode 100644 mibs/ietf/MPLS-L3VPN-STD-MIB create mode 100644 mibs/ietf/MPLS-LC-ATM-STD-MIB create mode 100644 mibs/ietf/MPLS-LC-FR-STD-MIB create mode 100644 mibs/ietf/MPLS-LDP-ATM-STD-MIB create mode 100644 mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB create mode 100644 mibs/ietf/MPLS-LDP-GENERIC-STD-MIB create mode 100644 mibs/ietf/MPLS-LDP-STD-MIB create mode 100644 mibs/ietf/MPLS-LSR-STD-MIB create mode 100644 mibs/ietf/MPLS-TC-STD-MIB create mode 100644 mibs/ietf/MPLS-TE-STD-MIB create mode 100644 mibs/ietf/MSDP-MIB create mode 100644 mibs/ietf/MTA-MIB create mode 100644 mibs/ietf/Makefile.am create mode 100644 mibs/ietf/Makefile.in create mode 100644 mibs/ietf/Modem-MIB create mode 100644 mibs/ietf/NAT-MIB create mode 100644 mibs/ietf/NETWORK-SERVICES-MIB create mode 100644 mibs/ietf/NHRP-MIB create mode 100644 mibs/ietf/NOTIFICATION-LOG-MIB create mode 100644 mibs/ietf/OPT-IF-MIB create mode 100644 mibs/ietf/OSPF-MIB create mode 100644 mibs/ietf/OSPF-TRAP-MIB create mode 100644 mibs/ietf/P-BRIDGE-MIB create mode 100644 mibs/ietf/PARALLEL-MIB create mode 100644 mibs/ietf/PIM-MIB create mode 100644 mibs/ietf/PIM-STD-MIB create mode 100644 mibs/ietf/PINT-MIB create mode 100644 mibs/ietf/PKTC-IETF-MTA-MIB create mode 100644 mibs/ietf/PKTC-IETF-SIG-MIB create mode 100644 mibs/ietf/POLICY-BASED-MANAGEMENT-MIB create mode 100644 mibs/ietf/POWER-ETHERNET-MIB create mode 100644 mibs/ietf/PPP-BRIDGE-NCP-MIB create mode 100644 mibs/ietf/PPP-IP-NCP-MIB create mode 100644 mibs/ietf/PPP-LCP-MIB create mode 100644 mibs/ietf/PPP-SEC-MIB create mode 100644 mibs/ietf/PTOPO-MIB create mode 100644 mibs/ietf/PerfHist-TC-MIB create mode 100644 mibs/ietf/Printer-MIB create mode 100644 mibs/ietf/Q-BRIDGE-MIB create mode 100644 mibs/ietf/RADIUS-ACC-CLIENT-MIB create mode 100644 mibs/ietf/RADIUS-ACC-SERVER-MIB create mode 100644 mibs/ietf/RADIUS-AUTH-CLIENT-MIB create mode 100644 mibs/ietf/RADIUS-AUTH-SERVER-MIB create mode 100644 mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB create mode 100644 mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB create mode 100644 mibs/ietf/RAQMON-MIB create mode 100644 mibs/ietf/RDBMS-MIB create mode 100644 mibs/ietf/RFC-1212 create mode 100644 mibs/ietf/RFC-1215 create mode 100644 mibs/ietf/RFC1065-SMI create mode 100644 mibs/ietf/RFC1155-SMI create mode 100644 mibs/ietf/RFC1158-MIB create mode 100644 mibs/ietf/RFC1213-MIB create mode 100644 mibs/ietf/RFC1269-MIB create mode 100644 mibs/ietf/RFC1271-MIB create mode 100644 mibs/ietf/RFC1285-MIB create mode 100644 mibs/ietf/RFC1316-MIB create mode 100644 mibs/ietf/RFC1381-MIB create mode 100644 mibs/ietf/RFC1382-MIB create mode 100644 mibs/ietf/RFC1414-MIB create mode 100644 mibs/ietf/RIPv2-MIB create mode 100644 mibs/ietf/RMON-MIB create mode 100644 mibs/ietf/RMON2-MIB create mode 100644 mibs/ietf/ROHC-MIB create mode 100644 mibs/ietf/ROHC-RTP-MIB create mode 100644 mibs/ietf/ROHC-UNCOMPRESSED-MIB create mode 100644 mibs/ietf/RS-232-MIB create mode 100644 mibs/ietf/RSTP-MIB create mode 100644 mibs/ietf/RSVP-MIB create mode 100644 mibs/ietf/RTP-MIB create mode 100644 mibs/ietf/SCSI-MIB create mode 100644 mibs/ietf/SCTP-MIB create mode 100644 mibs/ietf/SFLOW-MIB create mode 100644 mibs/ietf/SIP-COMMON-MIB create mode 100644 mibs/ietf/SIP-MIB create mode 100644 mibs/ietf/SIP-SERVER-MIB create mode 100644 mibs/ietf/SIP-TC-MIB create mode 100644 mibs/ietf/SIP-UA-MIB create mode 100644 mibs/ietf/SLAPM-MIB create mode 100644 mibs/ietf/SMON-MIB create mode 100644 mibs/ietf/SNA-NAU-MIB create mode 100644 mibs/ietf/SNA-SDLC-MIB create mode 100644 mibs/ietf/SNMP-COMMUNITY-MIB create mode 100644 mibs/ietf/SNMP-FRAMEWORK-MIB create mode 100644 mibs/ietf/SNMP-MPD-MIB create mode 100644 mibs/ietf/SNMP-NOTIFICATION-MIB create mode 100644 mibs/ietf/SNMP-PROXY-MIB create mode 100644 mibs/ietf/SNMP-REPEATER-MIB create mode 100644 mibs/ietf/SNMP-TARGET-MIB create mode 100644 mibs/ietf/SNMP-USER-BASED-SM-MIB create mode 100644 mibs/ietf/SNMP-USM-AES-MIB create mode 100644 mibs/ietf/SNMP-USM-DH-OBJECTS-MIB create mode 100644 mibs/ietf/SNMP-VIEW-BASED-ACM-MIB create mode 100644 mibs/ietf/SNMPv2-CONF create mode 100644 mibs/ietf/SNMPv2-MIB create mode 100644 mibs/ietf/SNMPv2-SMI create mode 100644 mibs/ietf/SNMPv2-TC create mode 100644 mibs/ietf/SNMPv2-TM create mode 100644 mibs/ietf/SNMPv2-USEC-MIB create mode 100644 mibs/ietf/SONET-MIB create mode 100644 mibs/ietf/SOURCE-ROUTING-MIB create mode 100644 mibs/ietf/SSPM-MIB create mode 100644 mibs/ietf/SYSAPPL-MIB create mode 100644 mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB create mode 100644 mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB create mode 100644 mibs/ietf/T11-FC-FABRIC-LOCK-MIB create mode 100644 mibs/ietf/T11-FC-FSPF-MIB create mode 100644 mibs/ietf/T11-FC-NAME-SERVER-MIB create mode 100644 mibs/ietf/T11-FC-ROUTE-MIB create mode 100644 mibs/ietf/T11-FC-RSCN-MIB create mode 100644 mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB create mode 100644 mibs/ietf/T11-FC-ZONE-SERVER-MIB create mode 100644 mibs/ietf/T11-TC-MIB create mode 100644 mibs/ietf/TCP-ESTATS-MIB create mode 100644 mibs/ietf/TCP-MIB create mode 100644 mibs/ietf/TCPIPX-MIB create mode 100644 mibs/ietf/TE-LINK-STD-MIB create mode 100644 mibs/ietf/TE-MIB create mode 100644 mibs/ietf/TIME-AGGREGATE-MIB create mode 100644 mibs/ietf/TN3270E-MIB create mode 100644 mibs/ietf/TN3270E-RT-MIB create mode 100644 mibs/ietf/TOKEN-RING-RMON-MIB create mode 100644 mibs/ietf/TOKENRING-MIB create mode 100644 mibs/ietf/TOKENRING-STATION-SR-MIB create mode 100644 mibs/ietf/TRANSPORT-ADDRESS-MIB create mode 100644 mibs/ietf/TRIP-MIB create mode 100644 mibs/ietf/TRIP-TC-MIB create mode 100644 mibs/ietf/TUNNEL-MIB create mode 100644 mibs/ietf/UDP-MIB create mode 100644 mibs/ietf/UDPLITE-MIB create mode 100644 mibs/ietf/UPS-MIB create mode 100644 mibs/ietf/URI-TC-MIB create mode 100644 mibs/ietf/VDSL-LINE-EXT-MCM-MIB create mode 100644 mibs/ietf/VDSL-LINE-EXT-SCM-MIB create mode 100644 mibs/ietf/VDSL-LINE-MIB create mode 100644 mibs/ietf/VPN-TC-STD-MIB create mode 100644 mibs/ietf/VRRP-MIB create mode 100644 mibs/ietf/WWW-MIB create mode 100644 mibs/irtf/IRTF-NMRG-SMING create mode 100644 mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS create mode 100644 mibs/irtf/IRTF-NMRG-SMING-TYPES create mode 100644 mibs/irtf/Makefile.am create mode 100644 mibs/irtf/Makefile.in create mode 100644 mibs/site/Makefile.am create mode 100644 mibs/site/Makefile.in create mode 100644 mibs/tubs/Makefile.am create mode 100644 mibs/tubs/Makefile.in create mode 100644 mibs/tubs/POLICY-DEVICE-AUX-MIB create mode 100644 mibs/tubs/POLICY-DEVICE-AUX-MIB-orig create mode 100644 mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES create mode 100644 mibs/tubs/TUBS-IBR-LINUX-MIB create mode 100644 mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB create mode 100644 mibs/tubs/TUBS-IBR-NFS-MIB create mode 100644 mibs/tubs/TUBS-IBR-PING-MIB create mode 100644 mibs/tubs/TUBS-IBR-PROC-MIB create mode 100644 mibs/tubs/TUBS-IBR-TEST-MIB create mode 100644 mibs/tubs/TUBS-IBR-TNM-MIB create mode 100644 mibs/tubs/TUBS-IBR-XEN-MIB create mode 100644 mibs/tubs/TUBS-SMI create mode 100755 missing create mode 100644 pibs/Makefile.am create mode 100644 pibs/Makefile.in create mode 100644 pibs/ietf/COPS-PR-SPPI create mode 100644 pibs/ietf/COPS-PR-SPPI-TC create mode 100644 pibs/ietf/DIFFSERV-PIB create mode 100644 pibs/ietf/FRAMEWORK-FEEDBACK-PIB create mode 100644 pibs/ietf/FRAMEWORK-PIB create mode 100644 pibs/ietf/FRAMEWORK-TC-PIB create mode 100644 pibs/ietf/Makefile.am create mode 100644 pibs/ietf/Makefile.in create mode 100644 pibs/site/Makefile.am create mode 100644 pibs/site/Makefile.in create mode 100644 pibs/tubs/ACCESSBIND-PIB create mode 100644 pibs/tubs/ACCESSBIND-PIB-orig create mode 100644 pibs/tubs/ACCOUNTING-FRAMEWORK-PIB create mode 100644 pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig create mode 100644 pibs/tubs/FEEDBACK-FRAMEWORK-PIB create mode 100644 pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig create mode 100644 pibs/tubs/IP-TE-PIB create mode 100644 pibs/tubs/IP-TE-PIB-orig create mode 100644 pibs/tubs/IPSEC-POLICY-PIB create mode 100644 pibs/tubs/IPSEC-POLICY-PIB-orig create mode 100644 pibs/tubs/LOAD-BALANCING-PIB create mode 100644 pibs/tubs/LOAD-BALANCING-PIB-orig create mode 100644 pibs/tubs/META-POLICY-PIB create mode 100644 pibs/tubs/META-POLICY-PIB-orig create mode 100644 pibs/tubs/MPLS-SETUP-PIB create mode 100644 pibs/tubs/MPLS-SETUP-PIB-orig create mode 100644 pibs/tubs/Makefile.am create mode 100644 pibs/tubs/Makefile.in create mode 100644 pibs/tubs/PARTITION-PIB create mode 100644 pibs/tubs/PARTITION-PIB-orig create mode 100644 pibs/tubs/POLICY-FRAMEWORK-PIB create mode 100644 pibs/tubs/POLICY-FRAMEWORK-PIB-orig create mode 100644 pibs/tubs/PPVPN-PIB create mode 100644 pibs/tubs/PPVPN-PIB-orig create mode 100644 pibs/tubs/QOS-POLICY-802-PIB create mode 100644 pibs/tubs/QOS-POLICY-802-PIB-orig create mode 100644 pibs/tubs/QOS-POLICY-IP-PIB create mode 100644 pibs/tubs/QOS-POLICY-IP-PIB-orig create mode 100644 pibs/tubs/RSVP-PCC-PIB create mode 100644 pibs/tubs/RSVP-PCC-PIB-orig create mode 100644 pibs/tubs/SLS-NEGOTIATION-PIB create mode 100644 pibs/tubs/SLS-NEGOTIATION-PIB-orig create mode 100644 pibs/tubs/UMTS-PIB create mode 100644 pibs/tubs/UMTS-PIB-orig create mode 100644 smi.conf-example create mode 100644 test/Makefile.am create mode 100644 test/Makefile.in create mode 100644 test/dumps/Makefile.am create mode 100644 test/dumps/Makefile.in create mode 100644 test/dumps/cm/IF-MIB create mode 100644 test/dumps/cm/MAU-MIB create mode 100644 test/dumps/cm/Makefile.am create mode 100644 test/dumps/cm/Makefile.in create mode 100644 test/dumps/cm/RMON2-MIB create mode 100644 test/dumps/cm/SNMPv2-MIB create mode 100644 test/dumps/corba/IF_MIB.idl create mode 100644 test/dumps/corba/IF_MIB.oid create mode 100644 test/dumps/corba/MAU_MIB.idl create mode 100644 test/dumps/corba/MAU_MIB.oid create mode 100644 test/dumps/corba/Makefile.am create mode 100644 test/dumps/corba/Makefile.in create mode 100644 test/dumps/corba/RMON2_MIB.idl create mode 100644 test/dumps/corba/RMON2_MIB.oid create mode 100644 test/dumps/corba/SNMPv2_MIB.idl create mode 100644 test/dumps/corba/SNMPv2_MIB.oid create mode 100644 test/dumps/identifiers/IF-MIB create mode 100644 test/dumps/identifiers/MAU-MIB create mode 100644 test/dumps/identifiers/Makefile.am create mode 100644 test/dumps/identifiers/Makefile.in create mode 100644 test/dumps/identifiers/RMON2-MIB create mode 100644 test/dumps/identifiers/SNMPv2-MIB create mode 100644 test/dumps/imports/IF-MIB create mode 100644 test/dumps/imports/MAU-MIB create mode 100644 test/dumps/imports/Makefile.am create mode 100644 test/dumps/imports/Makefile.in create mode 100644 test/dumps/imports/RMON2-MIB create mode 100644 test/dumps/imports/SNMPv2-MIB create mode 100644 test/dumps/jax/AddressMap.java create mode 100644 test/dumps/jax/AddressMapControlEntry.java create mode 100644 test/dumps/jax/AddressMapControlEntryImpl.java create mode 100644 test/dumps/jax/AddressMapControlTable.java create mode 100644 test/dumps/jax/AddressMapEntry.java create mode 100644 test/dumps/jax/AddressMapEntryImpl.java create mode 100644 test/dumps/jax/AddressMapImpl.java create mode 100644 test/dumps/jax/AddressMapTable.java create mode 100644 test/dumps/jax/AlHostEntry.java create mode 100644 test/dumps/jax/AlHostEntryImpl.java create mode 100644 test/dumps/jax/AlHostTable.java create mode 100644 test/dumps/jax/AlMatrixDSEntry.java create mode 100644 test/dumps/jax/AlMatrixDSEntryImpl.java create mode 100644 test/dumps/jax/AlMatrixDSTable.java create mode 100644 test/dumps/jax/AlMatrixSDEntry.java create mode 100644 test/dumps/jax/AlMatrixSDEntryImpl.java create mode 100644 test/dumps/jax/AlMatrixSDTable.java create mode 100644 test/dumps/jax/AlMatrixTopNControlEntry.java create mode 100644 test/dumps/jax/AlMatrixTopNControlEntryImpl.java create mode 100644 test/dumps/jax/AlMatrixTopNControlTable.java create mode 100644 test/dumps/jax/AlMatrixTopNEntry.java create mode 100644 test/dumps/jax/AlMatrixTopNEntryImpl.java create mode 100644 test/dumps/jax/AlMatrixTopNTable.java create mode 100644 test/dumps/jax/AuthenticationFailure.java create mode 100644 test/dumps/jax/BroadMauBasicEntry.java create mode 100644 test/dumps/jax/BroadMauBasicEntryImpl.java create mode 100644 test/dumps/jax/BroadMauBasicTable.java create mode 100644 test/dumps/jax/Channel2Entry.java create mode 100644 test/dumps/jax/Channel2EntryImpl.java create mode 100644 test/dumps/jax/Channel2Table.java create mode 100644 test/dumps/jax/ColdStart.java create mode 100644 test/dumps/jax/EtherStats2Entry.java create mode 100644 test/dumps/jax/EtherStats2EntryImpl.java create mode 100644 test/dumps/jax/EtherStats2Table.java create mode 100644 test/dumps/jax/Filter2Entry.java create mode 100644 test/dumps/jax/Filter2EntryImpl.java create mode 100644 test/dumps/jax/Filter2Table.java create mode 100644 test/dumps/jax/HistoryControl2Entry.java create mode 100644 test/dumps/jax/HistoryControl2EntryImpl.java create mode 100644 test/dumps/jax/HistoryControl2Table.java create mode 100644 test/dumps/jax/HlHostControlEntry.java create mode 100644 test/dumps/jax/HlHostControlEntryImpl.java create mode 100644 test/dumps/jax/HlHostControlTable.java create mode 100644 test/dumps/jax/HlMatrixControlEntry.java create mode 100644 test/dumps/jax/HlMatrixControlEntryImpl.java create mode 100644 test/dumps/jax/HlMatrixControlTable.java create mode 100644 test/dumps/jax/HostControl2Entry.java create mode 100644 test/dumps/jax/HostControl2EntryImpl.java create mode 100644 test/dumps/jax/HostControl2Table.java create mode 100644 test/dumps/jax/IfEntry.java create mode 100644 test/dumps/jax/IfEntryImpl.java create mode 100644 test/dumps/jax/IfJackEntry.java create mode 100644 test/dumps/jax/IfJackEntryImpl.java create mode 100644 test/dumps/jax/IfJackTable.java create mode 100644 test/dumps/jax/IfMIBObjects.java create mode 100644 test/dumps/jax/IfMIBObjectsImpl.java create mode 100644 test/dumps/jax/IfMauAutoNegEntry.java create mode 100644 test/dumps/jax/IfMauAutoNegEntryImpl.java create mode 100644 test/dumps/jax/IfMauAutoNegTable.java create mode 100644 test/dumps/jax/IfMauEntry.java create mode 100644 test/dumps/jax/IfMauEntryImpl.java create mode 100644 test/dumps/jax/IfMauJabberTrap.java create mode 100644 test/dumps/jax/IfMauTable.java create mode 100644 test/dumps/jax/IfRcvAddressEntry.java create mode 100644 test/dumps/jax/IfRcvAddressEntryImpl.java create mode 100644 test/dumps/jax/IfRcvAddressTable.java create mode 100644 test/dumps/jax/IfStackEntry.java create mode 100644 test/dumps/jax/IfStackEntryImpl.java create mode 100644 test/dumps/jax/IfStackTable.java create mode 100644 test/dumps/jax/IfTable.java create mode 100644 test/dumps/jax/IfTestEntry.java create mode 100644 test/dumps/jax/IfTestEntryImpl.java create mode 100644 test/dumps/jax/IfTestTable.java create mode 100644 test/dumps/jax/IfXEntry.java create mode 100644 test/dumps/jax/IfXEntryImpl.java create mode 100644 test/dumps/jax/IfXTable.java create mode 100644 test/dumps/jax/Interfaces.java create mode 100644 test/dumps/jax/InterfacesImpl.java create mode 100644 test/dumps/jax/LinkDown.java create mode 100644 test/dumps/jax/LinkUp.java create mode 100644 test/dumps/jax/Makefile.am create mode 100644 test/dumps/jax/Makefile.in create mode 100644 test/dumps/jax/MatrixControl2Entry.java create mode 100644 test/dumps/jax/MatrixControl2EntryImpl.java create mode 100644 test/dumps/jax/MatrixControl2Table.java create mode 100644 test/dumps/jax/NetConfigEntry.java create mode 100644 test/dumps/jax/NetConfigEntryImpl.java create mode 100644 test/dumps/jax/NetConfigTable.java create mode 100644 test/dumps/jax/NlHostEntry.java create mode 100644 test/dumps/jax/NlHostEntryImpl.java create mode 100644 test/dumps/jax/NlHostTable.java create mode 100644 test/dumps/jax/NlMatrixDSEntry.java create mode 100644 test/dumps/jax/NlMatrixDSEntryImpl.java create mode 100644 test/dumps/jax/NlMatrixDSTable.java create mode 100644 test/dumps/jax/NlMatrixSDEntry.java create mode 100644 test/dumps/jax/NlMatrixSDEntryImpl.java create mode 100644 test/dumps/jax/NlMatrixSDTable.java create mode 100644 test/dumps/jax/NlMatrixTopNControlEntry.java create mode 100644 test/dumps/jax/NlMatrixTopNControlEntryImpl.java create mode 100644 test/dumps/jax/NlMatrixTopNControlTable.java create mode 100644 test/dumps/jax/NlMatrixTopNEntry.java create mode 100644 test/dumps/jax/NlMatrixTopNEntryImpl.java create mode 100644 test/dumps/jax/NlMatrixTopNTable.java create mode 100644 test/dumps/jax/ProbeConfig.java create mode 100644 test/dumps/jax/ProbeConfigImpl.java create mode 100644 test/dumps/jax/ProtocolDir.java create mode 100644 test/dumps/jax/ProtocolDirEntry.java create mode 100644 test/dumps/jax/ProtocolDirEntryImpl.java create mode 100644 test/dumps/jax/ProtocolDirImpl.java create mode 100644 test/dumps/jax/ProtocolDirTable.java create mode 100644 test/dumps/jax/ProtocolDistControlEntry.java create mode 100644 test/dumps/jax/ProtocolDistControlEntryImpl.java create mode 100644 test/dumps/jax/ProtocolDistControlTable.java create mode 100644 test/dumps/jax/ProtocolDistStatsEntry.java create mode 100644 test/dumps/jax/ProtocolDistStatsEntryImpl.java create mode 100644 test/dumps/jax/ProtocolDistStatsTable.java create mode 100644 test/dumps/jax/RingStationControl2Entry.java create mode 100644 test/dumps/jax/RingStationControl2EntryImpl.java create mode 100644 test/dumps/jax/RingStationControl2Table.java create mode 100644 test/dumps/jax/RpJackEntry.java create mode 100644 test/dumps/jax/RpJackEntryImpl.java create mode 100644 test/dumps/jax/RpJackTable.java create mode 100644 test/dumps/jax/RpMauEntry.java create mode 100644 test/dumps/jax/RpMauEntryImpl.java create mode 100644 test/dumps/jax/RpMauJabberTrap.java create mode 100644 test/dumps/jax/RpMauTable.java create mode 100644 test/dumps/jax/SerialConfigEntry.java create mode 100644 test/dumps/jax/SerialConfigEntryImpl.java create mode 100644 test/dumps/jax/SerialConfigTable.java create mode 100644 test/dumps/jax/SerialConnectionEntry.java create mode 100644 test/dumps/jax/SerialConnectionEntryImpl.java create mode 100644 test/dumps/jax/SerialConnectionTable.java create mode 100644 test/dumps/jax/Snmp.java create mode 100644 test/dumps/jax/SnmpImpl.java create mode 100644 test/dumps/jax/SnmpSet.java create mode 100644 test/dumps/jax/SnmpSetImpl.java create mode 100644 test/dumps/jax/SnmpTrap.java create mode 100644 test/dumps/jax/SnmpTrapImpl.java create mode 100644 test/dumps/jax/SourceRoutingStats2Entry.java create mode 100644 test/dumps/jax/SourceRoutingStats2EntryImpl.java create mode 100644 test/dumps/jax/SourceRoutingStats2Table.java create mode 100644 test/dumps/jax/SysOREntry.java create mode 100644 test/dumps/jax/SysOREntryImpl.java create mode 100644 test/dumps/jax/SysORTable.java create mode 100644 test/dumps/jax/System.java create mode 100644 test/dumps/jax/SystemImpl.java create mode 100644 test/dumps/jax/TokenRingMLStats2Entry.java create mode 100644 test/dumps/jax/TokenRingMLStats2EntryImpl.java create mode 100644 test/dumps/jax/TokenRingMLStats2Table.java create mode 100644 test/dumps/jax/TokenRingPStats2Entry.java create mode 100644 test/dumps/jax/TokenRingPStats2EntryImpl.java create mode 100644 test/dumps/jax/TokenRingPStats2Table.java create mode 100644 test/dumps/jax/TrapDestEntry.java create mode 100644 test/dumps/jax/TrapDestEntryImpl.java create mode 100644 test/dumps/jax/TrapDestTable.java create mode 100644 test/dumps/jax/UsrHistoryControlEntry.java create mode 100644 test/dumps/jax/UsrHistoryControlEntryImpl.java create mode 100644 test/dumps/jax/UsrHistoryControlTable.java create mode 100644 test/dumps/jax/UsrHistoryEntry.java create mode 100644 test/dumps/jax/UsrHistoryEntryImpl.java create mode 100644 test/dumps/jax/UsrHistoryObjectEntry.java create mode 100644 test/dumps/jax/UsrHistoryObjectEntryImpl.java create mode 100644 test/dumps/jax/UsrHistoryObjectTable.java create mode 100644 test/dumps/jax/UsrHistoryTable.java create mode 100644 test/dumps/jax/WarmStart.java create mode 100644 test/dumps/metrics/IF-MIB create mode 100644 test/dumps/metrics/MAU-MIB create mode 100644 test/dumps/metrics/Makefile.am create mode 100644 test/dumps/metrics/Makefile.in create mode 100644 test/dumps/metrics/RMON2-MIB create mode 100644 test/dumps/metrics/SNMPv2-MIB create mode 100644 test/dumps/mosy/IF-MIB create mode 100644 test/dumps/mosy/MAU-MIB create mode 100644 test/dumps/mosy/Makefile.am create mode 100644 test/dumps/mosy/Makefile.in create mode 100644 test/dumps/mosy/RMON2-MIB create mode 100644 test/dumps/mosy/SNMPv2-MIB create mode 100644 test/dumps/netsnmp/Makefile.am create mode 100644 test/dumps/netsnmp/Makefile.in create mode 100644 test/dumps/netsnmp/if-mib-agt-stub.c create mode 100644 test/dumps/netsnmp/if-mib-agt.c create mode 100644 test/dumps/netsnmp/if-mib-mgr-stub.c create mode 100644 test/dumps/netsnmp/if-mib.h create mode 100644 test/dumps/netsnmp/mau-mib-agt-stub.c create mode 100644 test/dumps/netsnmp/mau-mib-agt.c create mode 100644 test/dumps/netsnmp/mau-mib-mgr-stub.c create mode 100644 test/dumps/netsnmp/mau-mib.h create mode 100644 test/dumps/netsnmp/rmon2-mib-agt-stub.c create mode 100644 test/dumps/netsnmp/rmon2-mib-agt.c create mode 100644 test/dumps/netsnmp/rmon2-mib-mgr-stub.c create mode 100644 test/dumps/netsnmp/rmon2-mib.h create mode 100644 test/dumps/netsnmp/snmpv2-mib-agt-stub.c create mode 100644 test/dumps/netsnmp/snmpv2-mib-agt.c create mode 100644 test/dumps/netsnmp/snmpv2-mib-mgr-stub.c create mode 100644 test/dumps/netsnmp/snmpv2-mib.h create mode 100644 test/dumps/orig-smiv2/IF-MIB create mode 100644 test/dumps/orig-smiv2/MAU-MIB create mode 100644 test/dumps/orig-smiv2/Makefile.am create mode 100644 test/dumps/orig-smiv2/Makefile.in create mode 100644 test/dumps/orig-smiv2/RMON2-MIB create mode 100644 test/dumps/orig-smiv2/SNMPv2-MIB create mode 100644 test/dumps/python/IF-MIB create mode 100644 test/dumps/python/MAU-MIB create mode 100644 test/dumps/python/Makefile.am create mode 100644 test/dumps/python/Makefile.in create mode 100644 test/dumps/python/RMON2-MIB create mode 100644 test/dumps/python/SNMPv2-MIB create mode 100644 test/dumps/smilint-smiv2/IF-MIB create mode 100644 test/dumps/smilint-smiv2/MAU-MIB create mode 100644 test/dumps/smilint-smiv2/Makefile.am create mode 100644 test/dumps/smilint-smiv2/Makefile.in create mode 100644 test/dumps/smilint-smiv2/RMON2-MIB create mode 100644 test/dumps/smilint-smiv2/SNMPv2-MIB create mode 100644 test/dumps/sming/IF-MIB create mode 100644 test/dumps/sming/MAU-MIB create mode 100644 test/dumps/sming/Makefile.am create mode 100644 test/dumps/sming/Makefile.in create mode 100644 test/dumps/sming/RMON2-MIB create mode 100644 test/dumps/sming/SNMPv2-MIB create mode 100644 test/dumps/smiv1/IF-MIB create mode 100644 test/dumps/smiv1/MAU-MIB create mode 100644 test/dumps/smiv1/Makefile.am create mode 100644 test/dumps/smiv1/Makefile.in create mode 100644 test/dumps/smiv1/RMON2-MIB create mode 100644 test/dumps/smiv1/SNMPv2-MIB create mode 100644 test/dumps/smiv2-smiv2/IF-MIB create mode 100644 test/dumps/smiv2-smiv2/MAU-MIB create mode 100644 test/dumps/smiv2-smiv2/Makefile.am create mode 100644 test/dumps/smiv2-smiv2/Makefile.in create mode 100644 test/dumps/smiv2-smiv2/RMON2-MIB create mode 100644 test/dumps/smiv2-smiv2/SNMPv2-MIB create mode 100644 test/dumps/smiv2/IF-MIB create mode 100644 test/dumps/smiv2/MAU-MIB create mode 100644 test/dumps/smiv2/Makefile.am create mode 100644 test/dumps/smiv2/Makefile.in create mode 100644 test/dumps/smiv2/RMON2-MIB create mode 100644 test/dumps/smiv2/SNMPv2-MIB create mode 100644 test/dumps/tree/IF-MIB create mode 100644 test/dumps/tree/MAU-MIB create mode 100644 test/dumps/tree/Makefile.am create mode 100644 test/dumps/tree/Makefile.in create mode 100644 test/dumps/tree/RMON2-MIB create mode 100644 test/dumps/tree/SNMPv2-MIB create mode 100644 test/dumps/types/IF-MIB create mode 100644 test/dumps/types/MAU-MIB create mode 100644 test/dumps/types/Makefile.am create mode 100644 test/dumps/types/Makefile.in create mode 100644 test/dumps/types/RMON2-MIB create mode 100644 test/dumps/types/SNMPv2-MIB create mode 100644 test/dumps/xml/IF-MIB create mode 100644 test/dumps/xml/MAU-MIB create mode 100644 test/dumps/xml/Makefile.am create mode 100644 test/dumps/xml/Makefile.in create mode 100644 test/dumps/xml/RMON2-MIB create mode 100644 test/dumps/xml/SNMPv2-MIB create mode 100644 test/dumps/yang/IF-MIB create mode 100644 test/dumps/yang/MAU-MIB create mode 100644 test/dumps/yang/Makefile.am create mode 100644 test/dumps/yang/Makefile.in create mode 100644 test/dumps/yang/RMON2-MIB create mode 100644 test/dumps/yang/SNMPv2-MIB create mode 100644 test/mibs/LIBSMI-TEST-001-MIB create mode 100644 test/mibs/LIBSMI-TEST-002-MIB create mode 100644 test/mibs/LIBSMI-TEST-003-MIB create mode 100644 test/mibs/LIBSMI-TEST-004-MIB create mode 100644 test/mibs/LIBSMI-TEST-005-MIB create mode 100644 test/mibs/LIBSMI-TEST-006-MIB create mode 100644 test/mibs/LIBSMI-TEST-007-MIB create mode 100644 test/mibs/LIBSMI-TEST-008-MIB create mode 100644 test/mibs/LIBSMI-TEST-009-MIB create mode 100644 test/mibs/LIBSMI-TEST-010-MIB create mode 100644 test/mibs/LIBSMI-TEST-011-MIB create mode 100644 test/mibs/LIBSMI-TEST-012-MIB create mode 100644 test/mibs/LIBSMI-TEST-013-MIB create mode 100644 test/mibs/LIBSMI-TEST-014-MIB create mode 100644 test/mibs/LIBSMI-TEST-015-MIB create mode 100644 test/mibs/LIBSMI-TEST-016-MIB create mode 100644 test/mibs/LIBSMI-TEST-017-MIB create mode 100644 test/mibs/LIBSMI-TEST-018-MIB create mode 100644 test/mibs/LIBSMI-TEST-MIB create mode 100644 test/mibs/Makefile.am create mode 100644 test/mibs/Makefile.in create mode 100755 test/parser.test create mode 100644 test/parser.test.in create mode 100755 test/smidiff.test create mode 100644 test/smidiff.test.in create mode 100644 test/smidiff/DISMAN-SCRIPT-MIB.diff create mode 100644 test/smidiff/DISMAN-SCRIPT-MIB.old create mode 100644 test/smidiff/IF-MIB.diff create mode 100644 test/smidiff/IF-MIB.old create mode 100644 test/smidiff/INET-ADDRESS-MIB.diff create mode 100644 test/smidiff/INET-ADDRESS-MIB.old create mode 100644 test/smidiff/Makefile.am create mode 100644 test/smidiff/Makefile.in create mode 100644 test/smidiff/Printer-MIB.diff create mode 100644 test/smidiff/Printer-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-001-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-001-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-001-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-002-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-002-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-002-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-003-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-003-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-003-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-004-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-004-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-004-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-005-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-005-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-005-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-006-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-006-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-006-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-007-MIB.diff create mode 100644 test/smidiff/SMIDIFF-TEST-007-MIB.new create mode 100644 test/smidiff/SMIDIFF-TEST-007-MIB.old create mode 100644 test/smidiff/SMIDIFF-TEST-MIB create mode 100755 test/smidump-cm.test create mode 100644 test/smidump-cm.test.in create mode 100755 test/smidump-corba.test create mode 100644 test/smidump-corba.test.in create mode 100755 test/smidump-identifiers.test create mode 100644 test/smidump-identifiers.test.in create mode 100755 test/smidump-imports.test create mode 100644 test/smidump-imports.test.in create mode 100755 test/smidump-jax.test create mode 100644 test/smidump-jax.test.in create mode 100755 test/smidump-metrics.test create mode 100644 test/smidump-metrics.test.in create mode 100755 test/smidump-mosy.test create mode 100644 test/smidump-mosy.test.in create mode 100755 test/smidump-netsnmp.test create mode 100644 test/smidump-netsnmp.test.in create mode 100755 test/smidump-orig-smiv2.test create mode 100644 test/smidump-orig-smiv2.test.in create mode 100755 test/smidump-python.test create mode 100644 test/smidump-python.test.in create mode 100755 test/smidump-sming.test create mode 100644 test/smidump-sming.test.in create mode 100755 test/smidump-smiv1.test create mode 100644 test/smidump-smiv1.test.in create mode 100755 test/smidump-smiv2-smiv2.test create mode 100644 test/smidump-smiv2-smiv2.test.in create mode 100755 test/smidump-smiv2.test create mode 100644 test/smidump-smiv2.test.in create mode 100755 test/smidump-tree.test create mode 100644 test/smidump-tree.test.in create mode 100755 test/smidump-types.test create mode 100644 test/smidump-types.test.in create mode 100755 test/smidump-xml.test create mode 100644 test/smidump-xml.test.in create mode 100755 test/smidump-yang.test create mode 100644 test/smidump-yang.test.in create mode 100755 test/smilint-smiv2.test create mode 100644 test/smilint-smiv2.test.in create mode 100644 tools/Makefile.am create mode 100644 tools/Makefile.in create mode 100644 tools/dstring.c create mode 100644 tools/dstring.h create mode 100644 tools/dump-boilerplate.c create mode 100644 tools/dump-cm.c create mode 100644 tools/dump-compliance.c create mode 100644 tools/dump-corba.c create mode 100644 tools/dump-fig.c create mode 100644 tools/dump-identifiers.c create mode 100644 tools/dump-imports.c create mode 100644 tools/dump-jax.c create mode 100644 tools/dump-metrics.c create mode 100644 tools/dump-mosy.c create mode 100644 tools/dump-netsnmp.c create mode 100644 tools/dump-perl.c create mode 100644 tools/dump-python.c create mode 100644 tools/dump-scli.c create mode 100644 tools/dump-sizes.c create mode 100644 tools/dump-smi.c create mode 100644 tools/dump-sming.c create mode 100644 tools/dump-sppi.c create mode 100644 tools/dump-svg-script.h create mode 100644 tools/dump-svg-script.js create mode 100644 tools/dump-svg.c create mode 100644 tools/dump-tree.c create mode 100644 tools/dump-types.c create mode 100644 tools/dump-xml.c create mode 100644 tools/dump-xsd.c create mode 100644 tools/dump-yang.c create mode 100644 tools/fortopat.c create mode 100644 tools/fortopat.h create mode 100644 tools/fprint.c create mode 100644 tools/fprint.h create mode 100644 tools/mib2svg.cgi.in create mode 100644 tools/rea.c create mode 100644 tools/rea.h create mode 100644 tools/shhopt.c create mode 100644 tools/shhopt.h create mode 100644 tools/smicache.1 create mode 100644 tools/smicache.1.in create mode 100644 tools/smicache.in create mode 100644 tools/smidiff.1 create mode 100644 tools/smidiff.1.in create mode 100644 tools/smidiff.c create mode 100644 tools/smidump.1 create mode 100644 tools/smidump.1.in create mode 100644 tools/smidump.c create mode 100644 tools/smidump.h create mode 100644 tools/smilint.1 create mode 100644 tools/smilint.1.in create mode 100644 tools/smilint.c create mode 100644 tools/smiquery.1 create mode 100644 tools/smiquery.1.in create mode 100644 tools/smiquery.c create mode 100644 tools/smistrip.1 create mode 100644 tools/smistrip.1.in create mode 100644 tools/smistrip.in create mode 100644 tools/smixlate.1 create mode 100644 tools/smixlate.1.in create mode 100644 tools/smixlate.c create mode 100644 win/GNUmakefile create mode 100644 win/Makefile.mingw create mode 100644 win/README.mingw create mode 100644 win/README.win create mode 100644 win/config.h create mode 100644 win/config.h.in create mode 100644 win/makefile create mode 100644 win/win.c create mode 100644 win/win.h diff --git a/ANNOUNCE b/ANNOUNCE new file mode 100644 index 0000000..c802f61 --- /dev/null +++ b/ANNOUNCE @@ -0,0 +1,70 @@ +From: Frank Strauss +Newsgroups: comp.protocols.snmp,comp.dcom.net-management +To: mibs@ops.ietf.org, snmpv3@lists.tislabs.com, libsmi@ibr.cs.tu-bs.de +Date: 21 Jun 2002 16:45:00 +0200 +Subject: libsmi-0.4 announcement +Message-ID: + +Libsmi 0.4 is available for download. + +Copyright (c) 1999-2002 Frank Strauss, Technical University of Braunschweig. + +Libsmi is a C library that allows network management applications and +MIB and PIB authoring tools to access SMI MIB module information and +SPPI PIB module information through a well defined API that hides the +nasty details of locating and parsing MIB or PIB modules. Libsmi +supports exact and iterative retrieval functions for all major SMIv1/v2 +and SPPI constructs. + +There are five tools on top of the library and a sh/awk-script: + + - Smiquery allows simple queries for single MIB/PIB module items. + + - Smilint allows to increase the verbosity of the parser(s), so that + module files can be checked for syntax and semantic errors. + + - Smidump can be used to dump MIB and PIBmodules in various + formats. The current output backends allow to dump trees of OIDs, + type definitions and recursive imports, to convert modules between + SMIv1 and SMIv2, to dump SPPI PIBs, to produce JIDM compliant + CORBA-IDL files, UCD-SNMP code stubs, MOSY style output, JAX Java + AgentX sub-agent templates, XML and XML-Schema MIB + representations, Perl and Python representations, graphical + conceptual models, and SCLI code stubs. + + - Smidiff allows MIB authors, MIB reviewers and implementors to + compare two revisions of the same MIB for legal and illegal + changes. + + - Finally, smistrip allows to strip SMIv1/v2 and SPPI modules from + documents like RFCs and Internet-Drafts. + +Enclosed with the libsmi package, there are all (bug fixed) current +IETF standard MIB modules as of 2002-06-21, as well as some other +modules, some SPPI PIBs that are taken from Internet Drafts, man pages +for all library functions and tools, and a small libsmi test suite. + +The software comes with automake/autoconf and libtool support. Hence +it should compile and build with or without shared libraries on most +UNIX style platforms, as well as on W32/cygwin, though it's just +developed on Sun Solaris 2.5.x and Linux. However, questions about all +platforms can be discussed on the libsmi mailinglist. + +For those familiar with recent libsmi development: The most +significant changes since the previous 0.3.x releases is the addition +of the SPPI parser (which is integrated into the SMI parser), the +addition of an SPPI dump driver (both supplied by Moritz Bunkus), and +major enhancements of the XML Schema dump driver (supplied by Torsten +Klie). Furthermore, a number of bugs have been fixed and many +Standard MIB modules and PIB modules have been updated and added. + +Online information on libsmi together with download and CVS access +information, the (free) license terms, manual pages, and the mailing +list is available at: + + http://www.ibr.cs.tu-bs.de/projects/libsmi/ + + +Enjoy! + + Frank Strauss diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..861251d --- /dev/null +++ b/COPYING @@ -0,0 +1,89 @@ + +Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. + +This software is copyrighted by Frank Strauss, the Technical University +of Braunschweig, and other parties. The following terms apply to all +files associated with the software unless explicitly disclaimed in +individual files. + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY +DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE +IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE +NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. + +------------------------------------------------------------------------------ + +lib/snprintf.c, lib/snprintf.h: + + * Copyright (c) 1995-1999 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + +------------------------------------------------------------------------------ + +tools/shhopt.c, tools/shhopt.h: + +Title: shhopt - library for parsing command line options. +Version: 1.1.2 +Entered-date: 23MAR97 +Description: C-functions for parsing command line options, both + traditional one-character options, and GNU'ish + --long-options. +Keywords: programming, library, lib, commandline, options +Author: s.h.huseby@usit.uio.no (Sverre H. Huseby) +Primary-site: http://www.ifi.uio.no/~sverrehu/pub-unix/ +Alternate-site: sunsite.unc.edu /pub/Linux/libs + shhopt-1.1.2.tar.gz +Platforms: Requires ANSI C-compiler. +Copying-policy: BeerWare: If you have the time and money, send me a bottle + of your favourite beer. If not, just send me a mail or + something. Copy and use as you wish; just leave the + author's name where you find it. + +------------------------------------------------------------------------------ + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..f30bfb6 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,2016 @@ + +2008-04-18 Frank Strauss + + * test/*: updated a couple of checks. + * tools/*: fixed a couple of minor compiler warnings. + * mibs/ietf/PKTC-IETF-SIG-MIB: added (RFC 5098). + * mibs/ietf/MIDCOM-MIB: added (RFC 5190). + * libsmi-0.4.8.tar.gz: released version 0.4.8. + +2008-02-27 Frank Strauss + + * tools/Makefile.am: added missing files to the distribution. + * libsmi-0.4.7.tar.gz: released version 0.4.7. + +2008-02-27 Frank Strauss + + * mibs/ietf/URI-TC-MIB: added (RFC 5017). + * mibs/ietf/PIM-STD-MIB: added (RFC 5060). + * mibs/ietf/IF-CAP-STACK-MIB,EFM-CU-MIB: added (RFC 5066). + * mibs/ietf/UDPLITE-MIB: added (RFC 5097). + * mibs/ietf/LANGTAG-TC-MIB: added (RFC 5131). + * mibs/ietf/IPMCAST-MIB: added (RFC 5132). + * updated IANA MIBs. + * libsmi-0.4.6.tar.gz: released version 0.4.6. + +2007-09-03 Frank Strauss + + * mibs/ietf/T11-FC-RSCN-MIB: added (RFC 4983). + +2007-08-08 Frank Strauss + + * mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB: added (RFC 4935). + * mibs/ietf/T11-FC-FABRIC-LOCK-MIB,T11-FC-ZONE-SERVER-MIB: added + (RFC 4936). + * mibs/ietf/ISNS-MIB: added (RFC 4939). + +2007-07-19 Frank Strauss + + * mibs/ietf/DOT3-EPON-MIB: added (RFC 4837). + * mibs/ietf/DOT3-OAM-MIB: added (RFC 4878). + +2007-06-08 Frank Strauss + + * mibs/ietf/TCP-ESTATS-MIB: added (RFC 4898). + +2007-05-08 Frank Strauss + + * mibs/ietf/SIP-{UA,TC,COMMON,SERVER}-MIB: added (RFC 4780). + * mibs/ietf/MAU-MIB: updated (RFC 4836). + +2007-03-05 Frank Strauss + + * mibs/ietf/DS1-MIB: updated (RFC 4805). + * mibs/ietf/IPSEC-SPD-MIB: added (RFC 4807). + +2007-03-05 Frank Strauss + + * mibs/iana/IANA-GMPLS-TC-MIB,IANA-IPPM-METRICS-REGISTRY-MIB, + IANA-ITU-ALARM-TC-MIB,IANA-MAU-MIB: added. + * mibs/iana/IANA-CHARSET-MIB,IANA-ADDRESS-FAMILY-NUMBERS-MIB, + IANAifType-MIB: added. + * mibs/ietf/GMPLS-TC-STD-MIB (RFC 4801): added. + * mibs/ietf/GMPLS-TE-STD-MIB (RFC 4802): added. + * mibs/ietf/GMPLS-LSR-STD-MIB,GMPLS-LABEL-STD-MIB (RFC 4803): added. + +2007-02-01 Frank Strauss + + * mibs/ietf/MSDP-MIB: added (RFC 4624). + * mibs/ietf/PKTC-IETF-MTA-MIB: added (RFC 4682). + * mibs/ietf/ADSL2-LINE-MIB,ADSL2-LINE-TC-MIB: added (RFC 4706). + * mibs/ietf/RAQMON-MIB: added (RFC 4711). + * mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB: added (RFC 4747). + * mibs/ietf/DOCS-CABLE-DEVICE-MIB: updated (RFC 4639). + * mibs/ietf/OSPF-MIB,OSPF-TRAP-MIB: updated (RFC 4750). + * lib/scanner-smi.l: accept also \r as end-of-line. + +2006-10-04 Frank Strauss + + * mibs/ietf/T11-FC-ROUTE-MIB: added (RFC 4625). + * mibs/ietf/T11-FC-FSPF-MIB: added (RFC 4626). + * mibs/ietf/LMP-MIB: updated (RFC 4631). + * mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB: added (RFC 4672). + * mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB: added (RFC 4673). + +2006-09-06 Frank Strauss + + * autogen.sh: Use glibtool instead of libtool on Darwin. + Thanks to Sebastian. + +2006-08-30 Frank Strauss + + * mibs/ietf/RADIUS-AUTH-CLIENT-MIB: updated (RFC 4668). + * mibs/ietf/RADIUS-AUTH-SERVER-MIB: updated (RFC 4669). + * mibs/ietf/RADIUS-ACC-CLIENT-MIB: updated (RFC 4670). + * mibs/ietf/RADIUS-ACC-SERVER-MIB: updated (RFC 4671). + +2006-07-15 Frank Strauss + + * mibs/ietf/DOCS-IF-MIB: updated (RFC 4546). + * mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB: added (RFC 4547). + * mibs/ietf/DISMAN-NSLOOKUP-MIB,DISMAN-PING-MIB,DISMAN-TRACEROUTE-MIB: + updated (RFC 4560). + +2006-06-12 Frank Strauss + + * mibs/ietf/ISCSI-MIB: added (RFC 4544). + * mibs/ietf/IPS-AUTH-MIB: added (RFC 4545). + +2006-05-30 Frank Strauss + + * mibs/ietf/SNMP-USM-AES-MIB: updated (RFC 3826). + +2006-05-29 Frank Strauss + + * mibs/ietf/BGP4-MIB: updated (RFC 4273). + * mibs/ietf/IP-FORWARD-MIB: updated (RFC 4292). + * mibs/ietf/IP-MIB: updated (RFC 4293). + * mibs/ietf/MOBILEIPV6-MIB: added (RFC 4295). + * mibs/ietf/RSTP-MIB: added (RFC 4318). + * mibs/ietf/DOCS-IETF-QOS-MIB: added (RFC 4323). + * mibs/ietf/LMP-MIB: added (RFC 4327). + * mibs/ietf/{P-BRIDGE-MIB,Q-BRIDGE-MIB}: updated (RFC 4363). + * mibs/ietf/{MPLS-LC-ATM-STD-MIB,MPLS-LC-FR-STD-MIB): + added (RFC 4368). + * mibs/ietf/IFCP-MGMT-MIB: added (RFC 4369). + * mibs/ietf/MPLS-L3VPN-STD-MIB: added (RFC 4382). + * mibs/ietf/FCIP-MGMT-MIB: added (RFC 4404). + * mibs/ietf/T11-FC-NAME-SERVER-MIB: added (RFC 4438). + * mibs/ietf/{T11-TC-MIB,T11-FC-FABRIC-ADDR-MGR-MIB}: + added (RFC 4439). + * mibs/ietf/ISIS-MIB: added (RFC 4444). + * mibs/ietf/SCSI-MIB: added (RFC 4455). + * mibs/ietf/{AGGREGATE-MIB,TIME-AGGREGATE-MIB}: added (RFC 4498). + * mibs/ietf/RMON2-MIB: updated (RFC 4502). + + * libsmi-0.4.5.tar.gz: released version 0.4.5. + There was a bug that breaks compliation of 0.4.4, so here + is a new release. + +2006-05-16 Frank Strauss + + * libsmi-0.4.4.tar.gz: released version 0.4.4. + This is more or less just a snapshot to give package + maintainers a fresh and handy release number. + +2005-12-18 Frank Strauss + + * mibs/ietf/HDSL2-SHDSL-LINE-MIB: updated (RFC 4319). + +2005-12-16 Frank Strauss + + * mibs/ietf/{ENTITY-STATE-MIB,ENTITY-STATE-TC-MIB}: + added (RFC 4268). + +2005-11-25 Frank Strauss + + * mibs/ietf/TE-LINK-STD-MIB: added (RFC 4220). + + * mibs/ietf/VPN-TC-STD-MIB: added (RFC 4265). + +2005-10-10 Frank Strauss + + * mibs/ietf/DOCS-IETF-BPI2-MIB: added (RFC 4131). + + * mibs/ietf/ENTITY-MIB: updated (RFC 4133). + + * mibs/ietf/BRIDGE-MIB: updated (RFC 4188). + +2005-10-10 Frank Strauss + + * mibs/ietf/SSPM-MIB: added (RFC 4149). + +2005-06-23 Frank Strauss + + * mibs/ietf/TUNNEL-MIB: updated (RFC 4087). + + * mibs/ietf/UDP-MIB: updated (RFC 4113). + +2005-05-17 Frank Strauss + + * mibs/ietf/FC-MGMT-MIB: added (RFC 4044). + +2005-05-12 Frank Strauss + + * mibs/ietf/VDSL-LINE-EXT-SCM-MIB: added (RFC 4069). + + * mibs/ietf/VDSL-LINE-EXT-MCM-MIB: added (RFC 4070). + +2005-05-04 Frank Strauss + + * mibs/ietf/DOCS-IETF-SUBMGT-MIB: added (RFC 4036). + +2005-04-01 Frank Strauss + + * mibs/ietf/NAT-MIB: added (RFC 4008). + + * mibs/ietf/POLICY-BASED-MANAGEMENT-MIB: added (RFC 4011). + + * mibs/ietf/TCP-MIB: updated (RFC 4022). + +2005-03-04 Frank Strauss + + * mibs/ietf/INET-ADDRESS-MIB: updated (RFC 4001). + +2005-01-17 Frank Strauss + + * mibs/ietf/TE-MIB: added (RFC 3970). + +2004-11-30 Frank Strauss + + * lib/parser-smi.y, lib/data.c, lib/error.c: improved handling + of identifiers in the "NameAndNumberForm", incl. improved + warnings if OIDs or identifiers change. Thanks to Mike, David + Perkins, and Randy Presuhn for clarifications. + +2004-11-29 Frank Strauss + + * lib/parser-smi.y, lib/data.c: fixed handling of "pending" + nodes when modules are imported right in the middle of another + module (i.e., in MODULE-COMPLIANCE statements). + +2004-09-29 Frank Strauss + + * mibs/ietf/ARC-MIB: added (RFC 3878). + + * mibs/ietf/SNMP-NOTIFICATION-MIB: fixed. + + * mibs/ietf/ALARM-MIB: added (RFC 3877). + +2004-09-28 Frank Strauss + + * mibs/ietf/{TRIP-MIB,TRIP-TC-MIB,SCTP-MIB,IANA-ITU-ALARM-TC-MIB, + ITU-ALARM-MIB,ITU-ALARM-TC-MIB,SNMP-NOTIFICATION-MIB,DS1-MIB, + DS3-MIB}: added/updated (RFCs 3872,3874,3877,3895,3896). + +2004-08-18 Frank Strauss + + * libsmi-0.4.3.tar.gz: released version 0.4.3. Time for a new + release to get it out with the next stable Debian release (3.1). + The are numerous bug fixes, improvements to smidump drivers, + MIB updates, added MIBs, and new smilint checks. + +2004-07-27 Frank Strauss + + * lib/check.c, lib/error.c: Added checks for object groups + containing notifications and vice versa. Thanks to Mike. + +2004-07-22 Frank Strauss + + * lib/parser-smi.y, lib/error.c, lib/data.c: Added checks for + revision clauses that reveal revisions after LAST-UPDATED, + revisions that are not in reverse chronological order and + missing revisions for the LAST-UPDATED timestamp. Besides that, + revisions are now implcitly sorted in reverse chronological + order. + +2004-06-22 Frank Strauss + + * mibs/ietf/{MPLS-TE-STD-MIB,MPLS-LSR-STD-MIB,MPLS-FTN-STD-MIB, + MPLS-LDP-STD-MIB,MPLS-LDP-ATM-STD-MIB,MPLS-LDP-FRAME-RELAY-STD-MIB, + MPLS-LDP-GENERIC-STD-MIB}: added (RFCs 3812,3813,3814,3815). + +2004-06-17 Frank Strauss + + * mibs/ietf/{Printer-MIB,Finisher-MIB,MPLS-TC-STD-MIB}, + mibs/iana/{IANA-PRINTER-MIB,IANA-FINISHER-MIB,IANA-CHARSET-MIB}: + updated and added (RFCs 3805,3806,3808,3811). + +2004-06-10 Frank Strauss + + * mibs/ietf/{ROHC-MIB,ROHC-RTP-MIB,ROHC-UNCOMPRESSED-MIB}: + added (RFC 3816). + +2004-06-02 Frank Strauss + + * tools/dump-netsnmp.c: Cleanup session in case of errors, + Thanks to Michael Hocke. + +2004-04-14 Frank Strauss + + * mibs/ietf/DIFFSERV-CONFIG-MIB: added (RFC 3747). + +2004-03-03 Frank Strauss + + * mibs/ietf/APM-MIB: added (RFC 3729). + +2004-02-27 Frank Strauss + + * mibs/ietf/VDSL-LINE-MIB: added (RFC 3728). + +2004-02-11 Frank Strauss + + * mibs/ietf/HC-PerfHist-TC-MIB: added (RFC 3705). + +2004-01-12 Frank Strauss + + * tools/smidiff.c: Fixed potential segfault in + checkTypeCompatibility(). Thanks to Mike. + +2003-12-25 Frank Strauss + + * mibs/ietf/POWER-ETHERNET-MIB: added (RFC 3621). + +2003-12-12 Frank Strauss + + * tools/dump-python.c, tools/dump-xml.c: Fixed segfaults upon + unresolvable parent type names. + + * tools/dump-cm.c: Added an explicit float-cast in one place + to ensure execatly equal values on different platforms so that + the test suite is happy again. + +2003-12-05 Frank Strauss + + * libsmi-0.4.2.tar.gz: released version 0.4.2. Time for a new + release upon several requests during recent days and months. :-) + The are numerous bug fixes, MIB updates, added MIBs, and new + smilint and smidiff checks. + + * test/dumps/*: Checked and ppdated all test cases so + that the whole suite should complete without failures + again. + +2003-12-01 Frank Strauss + + * tools/smidiff.c: Fixed error messages on changed base + types for node comparisons: now the node names are reported + and not the underlying type names. Thanks to Mike. + + * mibs/*: More robust Makefiles, initially to support the + cygwin build and installation process. Thanks to Harold. + +2003-11-06 Frank Strauss + + * mibs/ietf/ATM2-MIB: added (RFC 3606). + +2003-10-02 Frank Strauss + + * lib/data.c: Fixed a bug with pending (forward, but not + resolved) definitions of identifiers that appear again in a + subsequently loaded module. Thanks to Fredrick. + + * mibs/ietf/ETHER-WIS: added (RFC 3637). + +2003-10-01 Frank Strauss + + * mibs/ietf/EtherLike-MIB: updated (RFC 3635). + + * mibs/ietf/MAU-MIB: updated (RFC 3636). + +2003-09-15 Frank Strauss + + * mibs/ietf/IPV6-FLOW-LABEL-MIB: added (RFC 3595). + +2003-09-03 Frank Strauss + + * mibs/ietf/OPT-IF-MIB: added (RFC 3591). + + * mibs/ietf/SONET-MIB: updated (RFC 3592). + + * mibs/ietf/PerfHist-TC-MIB: updated (RFC 3593). + +2003-08-07 Frank Strauss + + * pibs/ietf/FRAMEWORK-FEEDBACK-PIB: added (RFC 3571). + +2003-06-20 Frank Strauss + + * mibs/ietf/BLDG-HVAC-MIB: added (RFC 3512) (it's just an + example MIB). + + * mibs/ietf/MALLOC-MIB: added (RFC 3559). + +2003-03-08 Frank Strauss + + * pibs/ietf/DIFFSERV-PIB: added (RFC 3317). + + * pibs/ietf/FRAMEWORK-PIB,FRAMEWORK-TC-PIB: added (RFC 3318). + + * mibs/ietf/APS-MIB: added (RFC 3498). + +2003-01-03 Frank Strauss + + * mibs/ietf/ADSL-LINE-EXT-MIB: added (RFC 3440). + +2002-12-26 Frank Strauss + + * mibs/ietf/HC-ALARM-MIB: added (RFC 3434). + +2002-12-22 Frank Strauss + + * mibs/ietf/ENTITY-SENSOR-MIB: added (RFC 3433). + + * pibs/*: Moved PIBs from mibs/tubs/* to pibs/* and adapted + Makefiles and configure script accordingly. + +2002-12-19 Frank Strauss + + * mibs/ietf/{SNMP-FRAMEWORK-MIB,SNMP-MPD-MIB,SNMP-NOTIFICATION-MIB, + SNMP-PROXY-MIB,SNMP-TARGET-MIB,SNMP-USER-BASED-SM-MIB, + SNMP-VIEW-BASED-ACM-MIB,SNMPv2-MIB,SNMPv2-TM}: updated to + Full Standard (RFCs 3411-3418). + + * mibs/ietf/TRANSPORT-ADDRESS-MIB: added (RFC 3419). + +2002-11-29 Frank Strauss + + * mibs/ietf/SFLOW-MIB: added (RFC 3176). + +2002-11-19 Frank Strauss + + * tools/dump-{smi,sming,smiv3}.c: Fixed list of imports in case + of imported types only used for inline restricted types. Thanks + to Linda. + +2002-11-18 Frank Strauss + + * libsmi-0.4.1.tar.gz: released version 0.4.1. It's just time + for a new snapshot release: Since 0.4, there are some bug fixes, + enhancements especially to the XSD smidump driver and some + added and updated Standard MIBs. + +2002-10-23 Frank Strauss + + * lib/parser-smi.y: Fixed a missing error checks in case SMIv2 + application types that are not imported. Aligned with similar + checks for SPPI PIBs. Thanks to Mike. + + * mibs/iana/*: Updated the IANA MIBs as of 2002-10-23. + + * configure.in: Updated AC_DEFINE()'s to contain defaults and + removed the obsolete acconfig.h file. + +2002-09-06 Frank Strauss + + * mibs/ietf/L2TP-MIB: added (RFC 3371). + +2002-07-16 Frank Strauss + + * mibs/ietf/HC-RMON-MIB: added (RFC 3273). + +2002-07-09 Frank Strauss + + * lib/parser-smi.y: Fixed a NULL pointer dereference. Thanks to Bill. + + * mibs/ietf/DSMON-MIB: added (RFC 3287). + +2002-06-21 Frank Strauss + + * tools/: Updated man pages. + + * test/: Updated test suite. + + * libsmi-0.4.tar.gz: released version 0.4. There are two major + improvements in this release: It is the first release that + supports parsing and dumping of SPPI PIB modules (thanks to + Moritz for this great piece of good work!). Additionally the + support of an XML Schema dump format (smidump -f xsd) has + received a lot of enhancements, which might be of interest to + some people (thanks to Torsten for his great former and + ongoing work on all the details of this topic!). + +2002-06-19 Frank Strauss + + * lib/data.c: Fixed illegal reference to already freed type + structs in smiFreeData(). Thanks to Nick. + + * lib/parser-smi.h: Added a check for mismatching tables' + SEQUENCE OF types and row types. Thanks to Mike. + +2002-06-14 Frank Strauss + + * mibs/ietf/GSMP-MIB: added (RFC 3295). + +2002-06-10 Frank Strauss + + * lib/smi.c: call smiInit() in smiSetPath() if not yet initialized. + Thanks to Yogeshwara. + +2002-06-08 Frank Strauss + + * mibs/ietf/DIFFSERV-MIB,DIFFSERV-DSCP-TC: added (RFC 3289). + +2002-05-29 Frank Strauss + + * lib/data.c: Fixed lost named numbers in case of forward + referenced TCs and type assignments. + +2002-05-25 Frank Strauss + + * mibs/ietf/HDSL2-SHDSL-LINE-MIB: added (RFC 3276). + +2002-05-25 Frank Strauss + + * win/*: Patches from Erik to ease W32 support. + +2002-05-18 Frank Strauss + + * mibs/ietf/INET-ADDRESS-MIB: updated (RFC 3291). + +2002-05-17 Frank Strauss + + * lib/data.c: Fixed nodekind for iso, ccitt, and joint-iso-ccitt. + Thanks to Mark Kaplun. + + * mibs/ietf/INET-ADDRESS-MIB: updated to the new version + which is expected to be published as RFC rsn. + + * lib/parser-smi.y: Added check for counter access. + + * lib/check.c: Fixed check for not-accessible auxiliary objects. + + * parser-smi.y,mibs/tubs/*: Moritz Bunkus added a bunch of + patches so that we can now parser SPPI PIBs. There are also + a number of PIBs (temporarily in mibs/tubs/, as long as they + are not published). Thanks to Moritz for this good piece + of work. + +2002-04-22 Frank Strauss + + * lib/smi.c,...: Added a `parser' argument to the loadModule() + function so that line numbers can be reported when an imported + module cannot be loaded. Thanks to Mark Kaplun and Bill Fenner. + +2002-03-05 Frank Strauss + + * lib/check.c: Fixed a bug in the range normalization code. + Thanks to Joey Seek . + + * lib/error.c: When a severe error occurs (severity <= 0), it is + now the default error handler that terminates the process by exit(). + This means that an application now has the chance to install its + own error handler and call any cleanup code even in case of severe + errors. [Sorry, Dave, that it took sooo long to do this change.] + + * libsmi-0.3.1.tar.gz: released version 0.3.1. + +2002-02-28 Frank Strauss + + * lib/parser-smi.y: Added checks for appropriate nodekinds + of each node's parent node. + +2002-01-28 Frank Strauss + + * tools/dump-jax.c: Removed a misplaced `static' keyword from the + generated code. Thanks to Brian Remick . + +2002-01-12 Frank Strauss + + * mibs/ietf/DISMAN-SCHEDULE-MIB: updated (RFC 3231). + +2002-01-09 Frank Strauss + + * lib/parser-smi.y: Fixed segfault on illegal VARIABLES in + SMIv1 TRAPs. Thanks to . Sorry, I cannot determine + your name in ISO-8859-1. ;-) + + * smi/util.c: Fixed type derivation checks used for TDomain/TAddress + and InetAddressType/InetAddress checks. + + * tools/dump-xml.c: Added switches to turn DOCTYPE and XML Schema + specs off. + +2002-01-08 Frank Strauss + + * mibs/ietf/CIRCUIT-IF-MIB: added (RFC 3201). + + * mibs/ietf/FRSLD-MIB: added (RFC 3202). + + * tools/smidiff.c: Fixed warning messages on group membership + changes. Thanks to Bill. + +2001-12-27 Frank Strauss + + * tools/dump-perl.c: Martin Schulz submitted a patch to fix + the representation of notifications. + +2001-12-14 Frank Strauss + + * lib/parser-smi.y: Added check for incompatible types in SEQUENCE + item and object type definition. Thanks to Vivekanandan.V + . + +2001-11-23 Frank Strauss + + * libsmi-0.3.tar.gz: released version 0.3. + + * ANNOUNCE: Finalized things for release 0.3. + + * tools/smidiff.c: Torsten Klie and + Juergen Schoenwaelder have spent a + lot of work on this new tool during the past three months. + +2001-10-12 Frank Strauss + + * lib/parser-smi.y: Chris Avis supplied a + patch to detect zero value enumeration numbers in SMIv1, which + is illegal. + +2001-09-19 Frank Strauss + + * lib/parser-smi.y: Fixed warning on numerical OID DEFVALs. + +2001-08-31 Frank Strauss + + * lib/data.c: Fixed some missing fclose() calls. Thanks to + Abhay Deshmukh. + +2001-08-30 Frank Strauss + + * mibs/ietf/DISMAN-SCRIPT-MIB: updated (RFC 3165). + +2001-08-28 Frank Strauss + + * mibs/ietf/DOCS-BPI-MIB: added (RFC 3083). + + * mibs/ietf/INTERFACETOPN-MIB: added (RFC 3144). + +2001-08-27 Frank Strauss + + * win/makefile: Added a fix from Yigal. + + * lib/smi.c,data.c: #ifdef'ed caching, so that MSC systems + don't have problems. + +2001-08-24 Frank Strauss + + * libsmi-0.2.17.tar.gz: released version 0.2.17. + + * lib/smi.c: Fixed a bug with `-f/dev/null'. + +2001-08-22 Frank Strauss + + * lib/data.c,smi.c,...: Added support for multiple MIB data sets. + + * lib/check.c: Updated the InetAddressType/InetAddress check. + +2001-08-16 Frank Strauss + + * Makefile.in,...: Kicked out files from the CVS repository + that don't belong there and added an autogen.sh script. + + * lib/parser-smi.y,data.c: Fixed more memory leaks. + +2001-08-15 Frank Strauss + + * doc/draft-irtf-nmrg-smi-xml-00.txt,smi.dtd: Added these + files to document the xml output driver. Note that this + Internet Draft has expired. + + * lib/parser-smi.y,data.c: Added Bill's dmalloc patch and + trimmed down the number of non-freed chunks significantly. + +2001-06-25 Frank Strauss + + * lib/parser-smi.y: Added some checks for zero-length + descriptions, references, organizations, contacts, formats + and units strings. + +2001-06-12 Frank Strauss + + * lib/parser-smi.y: Added special treatment of RFC1065-SMI. + + * lib/parser-smi.y: Added optional OID between modulename and + `DEFINITIONS' (which is legal in ASN.1). + +2001-06-11 Frank Strauss + + * tools/dump-jax.c: Fixed a bug in the generated code for + notifications that have multiple OBJECTS; reported by + Teemu Koponen. + + * tools/smicache.in,lib/smi.c: Added a MIB caching scheme: + The configuration file may contain the new `cache' statement + which, in combination with an external caching program like + smicache, can be used to fetch MIB modules that are not found + in one of the local directories from any (remote?) resources. + Note that this is *experimental*! + +2001-06-06 Frank Strauss + + * lib/parser-smi.y,check.c: Bill contributed another table check + and improved two other checks. + + * lib/parser-smi.y: fixed a bug in checkObjects() reported by + Dave Shield. + +2001-05-08 Frank Strauss + + * tools/dump-python.c: Keith submitted a patch that turns + (unordered) index element sets into (ordered) lists. However, + it might cause other problems. + +2001-05-04 Frank Strauss + + * lib/Makefile.am: renamed parser-*.tab.c to parser-*.c. Harrie + Hazewinkel reported problems with libtool some systems would + have otherwise. + +2001-04-24 Frank Strauss + + * config.sub, config.guess: Updated to recent versions from GNU CVS + to get it working on PARISC. Thanks to LaMont Jones + . + +2001-04-18 Frank Strauss + + * tools/dump-xml.c: Fixed DOCTYPE root identifier to contain + no namespace prefix. Thanks to Andreas Goll. + +2001-04-14 Frank Strauss + + * libsmi-0.2.16.tar.gz: released version 0.2.16. + + * tools/smilint.c, smiquery.c: fixed obsolete use of the + optind variable. + + * libsmi-0.2.15.tar.gz: released version 0.2.15. + + * tools/dump-stools.c: Update for stools >= 0.1.16. + +2001-04-09 Frank Strauss + + * lib/parser-smi.y: Fixed RFC1155-SMI::Counter, Gauge, and + TimeTicks ranges. + +2001-03-15 Frank Strauss + + * tools/dump-jax.c: Fixed a bug on non not-accessible INDEX + columns, reported by Joerg Mattes . + +2001-03-12 Frank Strauss + + * lib/check.c: Bill contributed more checks on group/compliance + statements. + + * lib/check.c: Fixed core dump with recent type checks. Thanks + to Bill. + +2001-03-06 Frank Strauss + + * libsmi-0.2.14.tar.gz: released version 0.2.14. + + * lib/check.c: Added more type usage checks. + +2001-03-05 Frank Strauss + + * lib/parser-smi.y: Added some defval and type usage checks. + +2001-03-01 Frank Strauss + + * lib/parser-smi.y: Added checks to compare SEQUENCEs against + columnar objects. + +2001-02-26 Frank Strauss + + * lib/check.c: Lowered severity of recent compliant status checks. + + * lib/parser-smi.y: Bill contributed check for imported Counter64 + when used. + + * lib/check.c: Bill contributed check for node >= group >= compliance + status constraints. + +2001-02-15 Frank Strauss + + * lib/scanner-smi.l: Martin Schulz noticed a problem with + the use of the isspace() macro on Solaris. Thanks. + +2001-02-10 Frank Strauss + + * mibs/ietf/PINT-MIB: added (RFC 3055). + +2001-02-01 Frank Strauss + + * mibs/ietf/IPV6-MLD-MIB: added (RFC 3019). + +2001-01-26 Frank Strauss + + * lib/parser-smi.y: Martin Schulz fixed setting of UNITS + of OBJECT-TYPEs. Thanks! + +2001-01-24 Frank Strauss + + * libsmi-0.2.13.tar.gz: released version 0.2.13. + + * tools/dump-netsnmp.c: Juergen added support for manager stub + code. + +2001-01-04 Frank Strauss + + * tools/dump-jax.c: Null pointer fixes from Juergen. + + * tools/dump-perl.c: Martin Schulz contributed + a perl driver, based on the python driver. It maps each and every + piece of information to a string, even dates and and numerical + values. However, maybe it is useful to some people. + +2000-12-21 Frank Strauss + + * lib/parser-smi.y: Some well-known SMI identifiers imported + from RFC* modules are now suggested to be imported from SMIv2 + modules, where appropriate. This modifies an earlier patch + from Bill. + +2000-12-18 Frank Strauss + + * tools/dump-identifers.c: Juergen made dump-lines.c obsolete + by adding two options to the `identifiers' format. + +2000-12-15 Frank Strauss + + * tools/smidump.c: Bill contributed a `lines' dump format to + print line numbers of definitions. He contributed also a patch + that allows the `identifiers' format to report identifiers with + OID definitions that could not be resolved (as in {mib-2 xxx}). + + * lib/parser-smi.h: Bill added special handling for unintentionally + terminated comments and hints on definitions that could be imported + from more recent modules. + +2000-12-12 Frank Strauss + + * lib/dump-*.c: More patches from Juergen. Most drivers are + now `-o file' aware. The `imports' driver does no longer hang + in an endless loop on recursive imports. + +2000-12-11 Frank Strauss + + * lib/parser-*.h: yyerror-verbose is now non-optional. + + * tools/dump-*.c: Juergen fixed various dump drivers. `cm' is + now a single format with an `explain' option. Man pages are + updated to include long options. + +2000-12-09 Frank Strauss + + * tools/dump-*.c: Fixes from Juergen. + +2000-12-08 Frank Strauss + + * mibs/ietf/NOTIFICATION-LOG-MIB: added (RFC 3014). + + * mibs/ietf/FR-MFR-MIB: added (RFC 3020). + +2000-12-05 Frank Strauss + + * libsmi-0.2.12.tar.gz: released version 0.2.12. + + * configure.in: Bill added --with-yyerror-verbose option. + + * lib/parser-smi.y: Patch from Bill: Reset capabilitiesModulePtr + at the end of each module. Fixed typo in unsigned32. Fixed + flawed data structures for Opaque as well. Removed a bunch of + unnecessary setTypeParent() and setTypeDecl() calls. + +2000-12-04 Frank Strauss + + * lib/parser-smi.y: Fixed `GAUGE32 integerSubType' rule. + + * lib/parser-smi.y: Fixed flawed data structures in case of + illegal range sub-typing of enum types and enum sub-typing of + range restricted integer types. Thanks to Bill for the hints. + +2000-11-30 Frank Strauss + + * tools/smidump.c: Juergen fixed some bugs and added some + modifications changes to the recent smidump changes. + +2000-11-29 Frank Strauss + + * win/config.h.in: Added to the distribution files. + + * libsmi-0.2.11.tar.gz: released version 0.2.11. + + * tools/dump-*.c: Now all smidump driver modules register their + format drivers with smidump with an init_() function. + Additionally, we allow a driver to register format specific + options. See dump-identifiers.c for a first small example. + + * tools/shhopt.[ch]: Added support for long options. Thanks + to Sverre H. Huseby for his small and beatiful shhopt library. + See http://shh.thathost.com/pub-unix/. + +2000-11-27 Frank Strauss + + * tools/dump-*.c: Fixed some minor compiler warnings. + + * ltconfig: Updated to libtool 1.3.5. + + * win/GNUmakefile: Added this GNU makefile using the MSVC compiler + contributed by Yigal Hochberg. + + * lib/check.c: Bill Fenner fixed wrong line numbers reported + on TCs. + +2000-11-24 Frank Strauss + + * libsmi-0.2.10.tar.gz: released version 0.2.10. + + * configure.in: Fixed broken 64 bit type configuration. + +2000-11-20 Frank Strauss + + * changed filenames of file created by the corba and netsnmp + dump drivers. Adapted test suite. + + * libsmi-0.2.9.tar.gz: released version 0.2.9. + +2000-11-16 Frank Strauss + + * smi.conf-example: Added a configuration file example. + + * configure.in: Dir separator is now configurable and distinguished + in util/smiIsPath(). + + * win/*: Some changes for clean MSVC compilation. Yigal. + +2000-11-14 Frank Strauss + + * win/config.h: Added macros for 64 bit types on MSVC systems. + Added a necessary compiler flag to compile scanner-*.c on MSVC. + Thanks to Yigal. + + * configure.in: Fixed: completely broken AC_TRY_RUN check for + 64 bit types. Somehow, I did it in a way that was syntactically + correct. ;-) + + * acconfig.h: renamed MIN/MAX macros to suppress redefinitions + on Solaris 2.6+. + +2000-11-13 Frank Strauss + + * libsmi-0.2.8.tar.gz: released version 0.2.8. + + * test/Makefile.am: Added tests for formats: identifiers, + metrics, xml, cm, python. + + * tools/dump-jax.c: Fixed dangling pointers. Test suite + is happy again. + + * tools/dump-corba.c: The driver now creates idl and oid files + instead of writing to stdout. + + * test/*: Reorganized the test suite. All scripts for + smidump scripts are now identical. Added jax test (and found + a bug that is not yet fixed). + +2000-11-12 Frank Strauss + + * tools/dump-netsnmp.c: Renamed dump-ucdsnmp.c to dump-netsnmp.c. + + * test/Makefile.am: Commented out checks for the obsolete + corba-{idl,oid} checks to make the test suite happy. + + * configure.in: The availability of `long long' type is now + checked during configuration. The result now also affects printf + formats. + + * configure.in: Path separator is now configurable (useful to + use ":" instead of ";" as well in cygwin environments). + +2000-11-09 Frank Strauss + + * tools/smidump.c: Juergen did a major rework of the internal + smidump interface for the output drivers. Visible changes: + corba-idl and corba-oid are integrated into a single format + corba; -o option. + +2000-11-08 Frank Strauss + + * mibs/iana/*: Updated IANA maintained modules. + + * lib/parser-smi.y: Suppressed an module conformance error + message in case of SMIv1. + +2000-11-08 Frank Strauss + + * lib/check.c,parser-smi.y: Bill Fenner fixed some duplicated + error messages. + + * tools/dump-smi.c,dump-tree.c: Bill Fenner fixed some core + dumps on erroneous MIB modules. + + * tools/dump-ucdsnmp.c: Juergen changed the UCD-SNMP driver + so that it now creates three file (header, stubs & implementation) + with a single smidump format option (netsnmp). + + * lib/parser-smi.y: Added checks for illegal subtyping; adjusted + test suite, so that is runs successfully for all current tests. + + * lib/scanner-smi.l,scanner-sming.l: Bill Fenner contributed + a patch to continue scanning after unexpected characters have + been read. + +2000-11-06 Frank Strauss + + * libsmi-0.2.7.tar.gz: released version 0.2.7. + + * lib/parser-smi.y: Fixed `0' ranges for some core types on Solaris. + + * lib/smi_config.3.in: Updated the library man pages. + + * tools/smidump.c: addModule() now inserts NULL module at the + head of the list as expected by the dump drivers. + + * lib/check.c: Added checks for OID redifinitions and recursive + definitions, based on a contribution from Bill Fenner. + + * lib/smi.h.in: Added a SmiModule.conformance attribute that + allows applications to determine, `how syntactically correct' + a module is. + +2000-11-04 Frank Strauss + + * mibs/ietf/DISMAN-EVENT-MIB: added (RFC 2981). + + * mibs/ietf/DISMAN-EXPRESSION-MIB: added (RFC 2982). It needed + a small fix. + +2000-11-01 Frank Strauss + + * lib/smi.c: Reworked the smiPath initialization upon a hint + from Bill Fenner. Note that the order of evaluation of the SMIPATH + environment variable and configuration files has changed and that + the syntax of `path' commands in configuration files has changed. + See smi_config(3), section MODULE LOCATIONS for details. + +2000-10-27 Frank Strauss + + * lib/check.c: Juergen fixed index checks for Bits/fixed-length + octet strings. + +2000-10-25 Frank Strauss + + * tools/smidump.c: Removed again `-X' option to eliminate parser + options that might lead to different results. + +2000-10-21 Frank Strauss + + * lib/error.c: Added a fourth arg to the error handler representing + the error name. This has been wished and contributed by Bill Fenner. + Note that this changed the API slightly. + +2000-10-20 Frank Strauss + + * lib/check.c: Fixed index length checks for OCTET STRINGs, + IpAddresses and OBJECT-IDENTIFIERs. Thanks to Bill Fenner. + + * lib/error.c: Fixed two minor typos. Thanks to Bill. + +2000-10-19 Frank Strauss + + * tools/dump-python.c: a new dump format to generate Python MIB + dictionary code. Contributed by Pat Knight. + + * tools/dump-xml.c: Fixed missing end tag of rows and tables + in certain cases. Contributed by Pat Knight. + + * tools/smidump.c: Added option `-X' for `lax' parsing. Some + people wish to accept things like underscores or upper case + first letters in object type names. Note that it is usually + a *bad* idea to use lax parsing! + +2000-10-18 Frank Strauss + + * mibs/ietf/FRNETSERV-MIB: updated (RFC 2954). + + * mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB: added (RFC 2955). + +2000-10-17 Frank Strauss + + * tools/dump-ucdsnmp.c: Juergen fixed BITS handling. + +2000-10-12 Frank Strauss + + * mibs/ietf/RTP-MIB: added (RFC 2959). + + * mibs/ietf/COPS-CLIENT-MIB: added (RFC 2940). + +2000-10-07 Frank Strauss + + * mibs/ietf/IPMROUTE-STD-MIB: added (RFC 2932). + + * mibs/ietf/IGMP-STD-MIB: added (RFC 2933). + + * mibs/ietf/PIM-MIB: added (RFC 2934). + +2000-10-05 Frank Strauss + + * mibs/ietf/DISMAN-NSLOOKUP-MIB,DISMAN-PING-MIB,DISMAN-TRACEROUTE-MIB: + added (RFC 2925). + +2000-10-04 Frank Strauss + + * lib/scanner-smi.l: Fixed lex'ing of comments. Thanks to + Bill Fenner. + +2000-10-02 Frank Strauss + + * lib/data.c: Changed all function header to ANSI style. + + * configure.in: changed compiler flags in case of Sun WorkShop + compiler. Thanks to Bert Helthuis. + + * mibs/ietf/RDBMS-MIB: Fixed an unknown imported identifier. + Thanks to Pat Knight. + +2000-10-01 Frank Strauss + + * mibs/ietf/PTOPO-MIB: added (RFC 2922). + +2000-09-26 Frank Strauss + + * mibs/iana/IANA-RTPROTO-MIB: added IANA maintained MIB module. + +2000-08-28 Frank Strauss + + * mibs/ietf/UPS-MIB: fixed two illegal integer range restrictions. + +2000-08-24 Frank Strauss + + * tools/dump-identifiers.c: update from Juergen. + +2000-08-18 Frank Strauss + + * tools/dump-identifiers.c: added simple list of all identifiers. + + * tools/dump-cm.c: minor changes by Andreas. + +2000-07-17 Frank Strauss + + * libsmi-0.2.5.tar.gz: released version 0.2.5. + + * configure.in (LIBTOOL_VERSION): added checks for additional + Sun compiler flag (others may follow) to make the flex generated + scanner happy about prototypes. + + * lib/smi.h.in: many compilers are unhappy with empty structures + (not only MS VC++). + + * lib/scanner-smi.h: moved YY_DECLs from scanner-*.h to scanner-*.l. + +2000-07-11 Frank Strauss + + * win/Makefile.mingw: Updated to reflect check.c and dump-metrics.c. + +2000-07-05 Frank Strauss + + * tools/dump-jax.c: simplified output by moving some code to + the static parent class of the JAX package. Some code cleanups. + +2000-07-04 Frank Strauss + + * lib/parser-smi.y: fixed line numbers of object, type, and + macro definitions to be the first line of the defining SMI + statement. + + * lib/check.c: Bill Fenner contributed a patch that fixes + the location of complained identifiers if they are imported. + +2000-06-28 Frank Strauss + + * libsmi-0.2.4.tar.gz: released version 0.2.4. + + * lib/smi.h.in: added more library version information. + + * tools/dump-jax.c (dumpEntry): added entry get methods for + index elements. Thanks to Sven. + + * mibs/ietf/IF-MIB: updated (RFC 2863). + + * mibs/ietf/IF-INVERTED-STACK-MIB: added (RFC 2864). + +2000-06-21 Frank Strauss + + * mibs/ietf/HCNUM-TC: added (RFC 2856). + + * tools/dump-xmp.c: Juergen updated the XML dump format. + + * lib/scanner-smi.l: Fixed scanning of module files ending + without a newline. + + * win/: Juergen changed some win things. + +2000-06-20 Frank Strauss + + * mibs/ietf/RFC-1212: fixed recursive import. + + * lib/check.c: Juergen added various checks for INDEX clauses. + + * lib/check.c: added various checks for range and size restrictions. + +2000-06-19 Frank Strauss + + * lib/smi.c (smiReadConfig): Fixed path separator when path + values from the configuration file get concatenated. + + * mibs/ietf/: Fixed some imports. + + * win/makefile.vc: Minor fixes. Thanks to Yigal Hochberg. + +2000-06-18 Frank Strauss + + * libsmi-0.2.3.tar.gz: released version 0.2.3. + + * Makefile.am: added the win/ directory to the distribution. + +2000-06-16 Frank Strauss + + * libsmi-0.2.2.tar.gz: released version 0.2.2. + + * Juergen sent a huge patch: moved parser checks to a separate + C file, aligned error messages, aligned identifier prefixes, + aligned MIB test suite. + + * mibs/ietf/INET-ADDRESS-MIB: added (RFC 2851). + +2000-06-15 Frank Strauss + + * tools/dump-jax.c: added a missing .0 instance indentifier + for scalar objects. + + * lib/error.c: Juergen added some code for error lists and + error handlers. + +2000-06-14 Frank Strauss + + * lib/data.c: Juergen refined the conditional expensive checks + for identifier redefinitions. + + * lib/util.c: introduced a unique identifer prefix for util + functions. + + * tools/dump-jax.c: fixed some compiler warnings. + + * lib/parser-smi.y: fixed some compiler warnings. + + * lib/parser-smi.y: adjusted lines of definition in cases of + forward references. + + * lib/data.c (freeData): fixed a misplaced free() that caused + endless loops. + + * mibs/ietf/: removed RFC-1213 and fixed some modules to + import RFC1213-MIB instead of RFC-1213. + +2000-06-08 Frank Strauss + + * configure.in: added dmalloc option. + + * lib/util.c (timegm): fixed access to freed memory. Thanks + to Bill Fenner. + +2000-06-07 Frank Strauss + + * tools/smistrip.in: patch to strip modules from I-Ds. + + * lib/parser-smi.y: added checks for range restrictions applied + to enumeration types. + + * test/: adjusted LIBSMI-TEST-* mibs and dumps/ files to + satisfy the test suite. + + * lib/parser-smi.y: fixed crashes in case of lowercase identifier + DEFVALs for objects that are neither enums nor oids. Thanks to + Bill Fenner. + + * lib/parser-smi.y (checkObjects): fixed crashes in case of + unknown oids. + + * lib/smi.c (smiGetNextNode): fixed segfault caused by missing + modules. + + * tools/dump-jax.c (dumpScalars): fixed setScalar OID check. + Thanks to Bill Rizzi. + +2000-06-06 Frank Strauss + + * tools/: minor patches from Juergen. + + * tools/dump-types.c: dumping also implicit types. + + * mibs/ietf/ and mibs/iana: various MIB module updates. + + * mibs/ietf/RMON-MIB: updated RMON-MIB (RFC 2819). + +2000-06-02 Frank Strauss + + * lib/parser-smi.y (checkObjects): fixed endless loop, as + occuring in original Modem-MIB for mdmMIB (RFC 1696). + + * mibs/ietf/: added FIBRE-CHANNEL-FE-MIB. + +2000-05-30 Frank Strauss + + * lib/parser-smi.y: Juergen added code for checks of inherited + types. + +2000-05-26 Frank Strauss + + * tools/dump-cm.c: changed dump driver calling conventions + from Juergen. dump-cm patch from Andreas. + +2000-05-25 Frank Strauss + + * libsmi-0.2.1.tar.gz: released version 0.2.1. + +2000-05-20 Frank Strauss + + * tools/dump-metrics.c: New output format supplied by Juergen. + It prints metrics of MIB modules. + +2000-05-18 Frank Strauss + + * tools/dump-smi.c (printNotifications): fixed determination of + the ENTERPRISE object. Thanks to Ira Wolf. + + * tools/dump-smi.c (getOidString): fixed printing of OIDs with + a length of 2. Thanks to Ira Wolf. + + * test/Makefile.am: removed GNU specific diff options + from check scripts. + +2000-05-17 Frank Strauss + + * lib/data.c (setObjectName): fixed crashes on unresolved + labels. Thanks to Bill Fenner. + + * win/: applied patches from Erik. + +2000-05-16 Frank Strauss + + * lib/data.c (loadModule): added checks for missing imported + modules. + + * configure.in: fixed mibdir default. Thanks to Saurabh. + + * lib/data.c (setObjectName): fixed bug in case of multiple + definitions for the same OID in multiple modules. + + * tools/dump-jax.c: Patch from Juergen: made file creation more + generic. + +2000-05-15 Frank Strauss + + * tools/dump-jax.c (dumpEntry): changed *EntryImpl classes to + use the super() method. + +2000-05-02 Frank Strauss + + * tools/smidump.c: Patch from Juergen: flags can now be passed + to the dump modules. + +2000-04-12 Frank Strauss + + * lib/parser-smi.y: fixed seg-faults on various imported but + not found definitions. Based on a patch contributed by + Bill Fenner. + +2000-04-11 Frank Strauss + + * tools/dump-smi.c: fixed trailing comma in SMIv1 SEQUENCEs. + Reported by Ira Wolf. + + * tools/smistrip.in: fixed bug reported by Ira Wolf: now we do not + terminate a module when we've read the `END' of a macro definition. + + * win/: added VC++ build directory; Erik and Juergen. + + * tools/dump-{java,jdmk,dia}: removed obsolete experimental formats. + +2000-04-10 Frank Strauss + + * tools/dump-smi.c: fixed 'xxxx'H DEFVALs as suggested by Ira Wolf. + + * tools/dump-cm.c: Update from Andreas. + + * Erik contributed various patches to compile libsmi in Win32 + systems using the VC++ compiler. Juergen aligned some of them. + Some are still left to be done. + +2000-04-08 Frank Strauss + + * tools/dump-cm.c: added conception model (cm) dump format from + Andreas Mueller. + + * tools/dump-xml.c: various cleanups from Juergen. + +2000-04-04 Frank Strauss + + * tools/dump-smi.c: applied some patches from Ira Wolf. + +2000-03-20 Frank Strauss + + * Keith Dart has contributed a Python + binding. See the mailinglist archive. + +2000-03-29 Frank Strauss + + * tools/: removed some obsolete header files. + + * tools/: some cleanups from Juergen. + + * tools/dump-jax.c (dumpScalars): added Sven's patches for + notifications and scalar groups. + +2000-03-21 Frank Strauss + + * tools/*.c: added dump-xml from Juergen. replaced bcmp by memcmp. + fixed multiple printing of groups in dump-sming.c. + + * mibs/ietf/: added HOST-RESOURCES-MIB and HOST-RESOURCES-TYPES. + + * lib/data.h: changed //-comment to /* comment */. + + * tools/dump-sming.c: modified quoted string indentation from + absoulte to relative. + +2000-03-20 Frank Strauss + + * mibs/ietf/: added SNMP-COMMUNITY-MIB. + +2000-03-19 Frank Strauss + + * mibs/ietf/: added SLAPM-MIB and SNMP-USM-DH-OBJECTS-MIB. + +2000-03-02 Frank Strauss + + * tools/dump-jax.c: A new dump format (it writes separate files + instead to stdout) has been started for Java AgentX sub-agent code. + + * David Reeder contributed a C++ interface. + See the mailinglist archive. + +2000-02-28 Frank Strauss + + * lib/smi.c: Remember the longest common OID prefix of all nodes + defined in a module. This is used by smiGetFirstNode() and + smiGetNextNode() to limit the searched subtree. + + * lib/smi.h.in: Dropped SmiValueformat. The way a value is + specified in a module file is no longer visible at the API. + +2000-02-24 Frank Strauss + + * lib/parser-smi.y: fixed basetype in default value SmiValue + structs. + + * tools/dump-smi.c (getValueString): fixed printing of zero-length + binary and hexadecimal strings in several dump modules. fixed + braces in BITS default values. + + * lib/parser-smi.y (checkDefvals): OID DEFVALs are now + represented as a string of the form ``Module::name'' with + SmiValueformat == SMI_VALUEFORMAT_NAME. + + * lib/scanner-smi.l: Juergen applied some *enormous* scanner + speedup patches. + + * lib/smi.h.in: A new flag SMI_FLAG_NODESCR can be used to + suppress storage of descriptions and references in memory. + +2000-02-15 Frank Strauss + + * ANNOUNCE: Finalized things for release 0.2. Many bugs + have been fixed and things have changed against the latest + 0.1.x release. Only some of them are listed below. + +2000-02-12 Frank Strauss + + * lib/parser-smi.y: Rudimentary AGENT-CAPABILITIES support. + They can be parsed to nodes and dumped as nodes or object + identities in SMIv1/v2/ng. Other attributes than status, + description and references are not yet supported. + + * lib/parser-smi.y: Solved all shift/reduce and reduce/reduce + conflicts of the SMIv1/v2 grammar. + +2000-02-10 Frank Strauss + + * lib/smi.c: Types of tables (SEQUENCE) and rows (SEQUENCE OF) + are now hidden from the API. + + * tools/smiquery.c: implicitly defined types are no longer + exported with visible names. So `smiquery type ...' now must + detect node names to retrieve their implicit types. + + * mibs/ietf/SNMPv2-USEC-MIB: added module (RFC 1910). + + * lib/smi.c: fixed smiGetXXX() functions to find items even + if no module is specified. + + * lib/smi.h.in: added path to struct SmiModule. + + * ATTENTION: all the (internal and API) data structures are + changed for significantly improved performance. This means that + applications must be adapted to recompile, but it's worth! + + * configure.in: incremented libtool versioning major number. + +2000-02-09 Frank Strauss + + * tools/smilint.c: added `-c configfile' option to the three + tools. It allows to explicitly specifiy a configuration file. + If at least one configfile is specified no default files are + read. + + * mibs/tubs/TUBS-SMI: some changes to the TUBS-* MIBS from Juergen. + + * configure.in: fixed misused $prefix + + * tools/dump-corba.c: fixed module names of augmented entries. + + * tools/dump-tree.c: nodes that are not defined in the local + module are gone. augmentation entries now list the index + elements. + + * tools/dump-smi.c: fixed SMIv1 INDEX clauses where an SMIv2 + AUGMENTS clause was parsed. + +2000-02-07 Frank Strauss + + * tools/dump-mosy.c: fixed determination of types of %tc's and + objects; added special type `ObjectID'. Added distinction of + read-write/read-create. Checked output against mosy output for + some standard modules (IF-MIB, RMON2-MIB, ...). + +2000-02-06 Frank Strauss + + * lib/parser-sming.y: added parsing of SMIng extension statement. + Its contents are stored in new elements of struct SmiMacro. + + * lib/parser-smi.y: made the mktime() call for parsed date + information timezone idependent. + +2000-02-05 Frank Strauss + + * lib/smi.h: removed lastupdated from SmiModule. This information has + to be retrieved from the associated SmiRevisions, if present. + + * ATTENTION: first steps towards a reorganisation of internal + data structures. This also leads to major changes in the API. + +2000-02-02 Frank Strauss + + * lib/parser-smi.y: Juergen added checks for illegally imported + SMI types and ASN.1 type definitions instead of TCs in SMIv2. + +2000-01-28 Frank Strauss + + * lib/parser-smi.y: Juergen added special handling for the + NetworkAddress SMIv1 type. + + * tools/smiquery.c: Juergen fixed crash on unknown node and + introduces SMIng notation for fully quallified identifiers. + +2000-01-27 Frank Strauss + + * lib/parser-smi.y: Andrew Hood pointed out wrong typed constants. + + * test/Makefile.am: Andrew supplied a patch so that make check + works even before make install. + +2000-01-26 Frank Strauss + + * mibs/ietf/AGENTX-MIB: MIB module added. + +2000-01-13 Frank Strauss + + * lib/scanner-smi.l: Bert Helthuis pointed out an incorrect warning + when SNMPv2-SMI is parsed. Fixed. + + * Juergen Schoenwaelder applied a lot of memory leak fixes, error + detections and cleanups. + +2000-01-07 Frank Strauss + + * mibs/ietf/MIP-MIB: Bert Helthuis gave a hint on a slight bug + in MIP-MIB. Fixed. + +2000-01-04 Frank Strauss + + * lib/parser-smi.y: Added TRAP-TYPE handling. Changed + ExtUTCTime handling. + +2000-01-03 Frank Strauss + + * lib/parser-smi.y: added revision by LAST-UPDATED clause for + modules without any REVISION clause. + + * Juergen contributed another patch: SMIv1/SMIv2 scanner/parser + now get numbers as numbers and not as strings. Fixed a Y2K bug in + parser-smi.y. Make sure we use util_malloc() and friends + everywhere. Added a length check for identifiers in SMIng. Rewrote + the length checking code for SMIv1/SMIv2 to make it shorter. + Removed malloc error checks that will never happen. + +1999-12-22 Frank Strauss + + * Juergen contributed a lot of patches: some error cleanups, + some scanner/parser cleanups, automatic SMI language recognition, + and some more. + +1999-12-15 Frank Strauss + + * added two IETF MIB modules. + + * fixed a recent bug on MODULE-COMPLIANCE statement parsing. + +1999-12-14 Frank Strauss + + * libsmi-0.1.8.tar.gz: released version 0.1.8. + + * replaced updated SMIng I-D. updated README. minor cleanups. + + * tools/*.1.in: updated option lists in man pages. + + * lib/smi.c (smiReadConfig): changed config file syntax. + + * lib/error.c: moved fatal errors to level -1 and non-error + output (statistics) to level 0. + + * lib/data.c (loadModule): fixed lex recursion level of + statistics output. + + * mibs/ietf/RFC1158-MIB (IpNetToMediaEntry): fixed typos in + original MIB. + +1999-12-13 Frank Strauss + + * lib/parser-smi.y: fixed wrong complaints about imported but + unused identifiers in MODULE sections of MODULE-COMPLIANCE + statements. + + * lib/error.c (errorSeverity): error severities can now be + changed, e.g. by smilint `-i error-name-prefix options or config + file `hide error-name-prefix commands, the severity of all errors + with names prefixed by the pattern is raised to 9. this means + they only show up at error level 9. Note, that not yet all errors + have names, since it's not easy to find explanatory names with + grouping prefixes. + + * lib/smi.c: new config file commands: `path' prepends an element + to the module search path. `level' sets the error level. + + * lib/parser-smi.y: Opaque size restrictions are now allowed. + Warning about Opaque usage in SMIv2 modules. + +1999-12-10 Frank Strauss + + * lib/smi.c (smiReadConfig): a global and a user configuration + file are now read, if existent: /usr/local/etc/smi.conf and + ~/.smirc. The first and only directive `load ' may be + used to preload any MIB modules. This feature still needs some + enhancements, like per application directives. + +1999-11-01 Frank Strauss + + * tools/smidump.c: Again, Juergen Schoenwaelder contributed + a huge chunk of patches that improve dump formats. The CORBA + IDL output is updated and an smidump option to suppress comments + (-s) has been added. + +1999-10-25 Frank Strauss + + * tools/smistrip.in (VERSION): smistrip (plus man page) has + been added to the libsmi distribution. It allows to extract + modules from text documents like RFCs and I-Ds. + +1999-10-07 Frank Strauss + + * libsmi-0.1.7.tar.gz: released version 0.1.7. + + * lib/error.c: added check for illegal type restrictions + in SEQUENCEs. + +1999-10-06 Frank Strauss + + * mibs/Makefile.am: the MIB module files have been reorganized in + subdirectories and updated to the latest RFCs and IANA modules. + +1999-10-05 Frank Strauss + + * test/Makefile.am: restructured tests slightly. + + * mibs/Makefile.am: added a huge amount of (nearly all current?) + Standard MIBS and some more. They still have to be checked + for completeness and `libsmi robustness'. + +1999-10-04 Frank Strauss + + * lib/parser-smi.y: fixed problems with OID DEFVALS in SMIv1 + modules. now {0 0} works. + + * lib/smi.c (smiGetParentNode): fixed a bug where the wrong + node has been returned for implicitly defined nodes as used + in notification types. + + * lib/smi.c (smiGetNextNode): fixed a similar bug here that + caused loops. + + * lib/parser-smi.y: added check for multiple groups or + object refinements for the same object in a single + compliance statement. this caused loops before. + + * tools/smidump.c: applied another patch by Juergen Schoenwaelder + that beautifies various dump formats and introduces a regression + test system. + +1999-10-01 Frank Strauss + + * lib/parser-smi.y: fixed range of Counter64. + + * tools/dump-types.c: applied a patch by Juergen Schoenwaelder + that beautifies the dump formats for imports and types. + +1999-09-30 Frank Strauss + + * lib/parser-smi.y: fixed some more decl settings. + + * tools/smidump.c: applied a huge patch by Juergen Schoenwaelder + that reorganizes the smidump format modules and adds a (not + yet compiled) new format for xfig figures. + +1999-09-29 Frank Strauss + + * lib/data.h: new struct Value. Now all smi.h structs are + separated from the data.h structs. This was needed to handle + OID DEFVALs correctly. + + * tools/smiquery.c (main): added default values und beatified + some other output. + + * lib/smi.h: SMI_DECL_IMPLICIT_TYPE denotes implicitly defined + types. Fixed some other decl settings for types in the SMIv1/v2 + parser. + + * tools/dump-data.c: Applied a patch from Juergen Schoenwaelder + that fixes some types for the tree dump format. + +1999-09-27 Frank Strauss + + * configure.in: added checks for 64bit strtoX() functions to + work on FreeBSD systems. + +1999-09-24 Frank Strauss + + * tools/dump-smi.c: fixed some generated import for SMIv1 + modules. also fixed some typename conversions for SMIv2 + modules generated from SMIv1. + + * lib/smi.c: fixed a conceptual bug that led to loops when a + single node appears multiple times in a list like in OBJECTS + of a NOTIFICATION-TYPE. This is similar to the earlier bug with + multiple items in an index clause. Hence, the struct SmiIndex + has been renamed to SmiListItem is used for different kinds + of lists. This also made some API functions obsolete that have + been removed: smiGetFirst/NextMemberNode, + smiGetFirst/NextObjectNode, smiGetFirst/NextMandatoryNode. + The bug has been reported by Ira Wolf on comp.protocols.snmp. + +1999-09-23 Frank Strauss + + * lib/data.c (mergeNodeTrees): fixed a nasty ptr bug reported + by Jochen Friedrich some weeks ago. + + * lib/parser-sming.y: a checkFormat() call contained a wrong + argument, leading to claimed format data that are correct. + + * lib/parser-smi.y: David Reeder pointed out a slight bug where + an error message contained a wrong argument. + + * tools/dump-mosy.c: Juergen Schoenwaelder contributed further + patches to various dump modules and some checks in SMI and SMIng + parsers. + + * tools/dump-ucdsnmp.c: Juergen Schoenwaelder contributed this + new dump module that generates UCD-SNMP mib2c like output. + +1999-07-09 Frank Strauss + + * mibs/: extracted updated MIB modules from RFCs. + + * lib/data.c: findObjectByNode() now first looks for objects in + the current view. + +1999-07-02 Frank Strauss + + * tools/smidump.c: Juergen Schoenwaelder contributed further + smidump cleanup and formats: CORBA IDL files can be written + according to the JIDM specifications (formats corba-idl and + corba-oid) and nice trees of MIB nodes can be drawn with the + tree format. + +1999-06-30 Frank Strauss + + * lib/error.c: added minor checks + + * lib/smi.h: removed SEQUENCE and SEQUENCEOF basetypes. + Removed WRITE_ONLY and READ_CREATE access values. + +1999-06-23 Frank Strauss + + * libsmi-0.1.6.tar.gz: released version 0.1.6. + +1999-06-22 Frank Strauss + + * tools/smidump.c: Juergen Schoenwaelder contributed another + smidump patch: now smidump supports SMIv1 output format. + +1999-06-21 Frank Strauss + + * lib/data.c: fixed a bug with merging two subtrees of nodes + defined in two separate MIB files (reported by Jochen Friedrich). + +1999-06-17 Frank Strauss + + * lib/parser-smi.y: fixed incorrect base types of SNMPv2-SMI + application types. + +1999-06-16 Frank Strauss + + * libsmi-0.1.5.tar.gz: released version 0.1.5. + + * tools/dump-java.c: started a new dump format that represents + java classes for MIB tables. This is experimental and may be + removed from smidump in future revisions. + + * lib/data.c: more changes to internal data structure to make + them language independant, especially hiding all occurances + of the SMIng namespace operator `::'. + + * data.c: cleaned up libsmi base types to be less language + dependant. + + * lib/smi.h: add API function smiGetNodeByOID() to retrieve + an SmiNode based on an OID given by an integer array. + + * lib/smi.c: smiGetNode() now returns the node with the longest + common OID prefix, if its argument is given by OID. + +1999-06-15 Frank Strauss + + * lib/smi.h: added SmiLanguage and an appropriate element to the + SmiModule struct to represent the language that has been used to + read a MIB module. + +1999-06-14 Frank Strauss + + * lib/smi.h: Hiding knowledge on the underlying language from + the API: SmiNode contains a new element `nodekind' that represents + the kind of any node in the tree independant from the actual + language statement. Hence, most application no longer need to + use SmiDecl. smiquery and smidump are adapted accordingly. + +1999-06-11 Frank Strauss + + * lib/smi.c: implemented smiGetFirstChild() and smiGetNextChild(). + + * lib/smi.h: OIDs are now represented by a more efficient array + of integers instead of a string. + +1999-06-10 Frank Strauss + + * test/parser.test.in: started to write a set of MIB modules + to test the capabilities of MIB parsers to detect syntax and + semantic errors. + + * tools/dump-smi.c: fixed bug when dumping modules without + any compliance statement. + + * libsmi-0.1.4.tar.gz: released version 0.1.4. + + * lib/error.h: undef'ed yyerror to suppress compile warning. + + * tools/dump-sming.c (printObjects): fixed bug with missing + nodes read from OBJECT-IDENTITY constructs. + + * lib/parser-sming.y: fixed bug in name creation of pseudo types + in compliance statements. + +1999-06-09 Frank Strauss + + * lib/parser-smi.y: fixed bug in name creation of pseudo types + in compliance statements. + + * lib/data.c: added `.smiv2' extension to look for SMIv2 files. + + * tools/dump-smi.c: the dump format `smiv2' is back! + + * lib/parser-smi.y: fixed bug with wrong module references + in compliance statements. + +1999-06-08 Frank Strauss + + * libsmi-0.1.3.tar.gz: released version 0.1.3. + + * lib/parser-sming.y: fixed various SMIng related bugs. + + * tools/dump-sming.c: fixed bug when printing OIDs with more + than one trailing sub-identifiers that cannot be resolved to + identifers. + + * tools/dump-sming.c (printGroups): no longer sorting group + statements separately based on underlying OG/NG types, but + continuously based on OID. + + * lib/smi.c (smiGetNode): fixed bug, when retrieving node by + OID. + +1999-06-07 Frank Strauss + + * lib/smi.c: added path expansion semantics if SMIPATH + environment variable starts or ends with a colon. + + * test/Makefile.am: started some test routines. + + * lib/parser-sming.y: SMIng `create' statement bugfix. + + * configure.in: added checks for flex and bison. + + * tools/dump-mosy.c: Juergen Schoenwaelder contributed a + dump module to generate MOSY conformant output and patches + to clean up the management of dump formats. + + * tools/dump-sming.c: bug fix on SMIng subtype syntax. + +1999-06-05 Frank Strauss + + * lib/smi.c: minor fixes. + +1999-06-04 Frank Strauss + + * tools/dump-imports.c: added `imports' format do smidump to + display the import hirarchy of a module. + + * lib/parser-smi.y: bugfix: allow status `deprecated' in SMIv1 + modules. + + * tools/smiquery.c: adapted index command. + + * lib/smi.h: had to add struct SmiIndex and smiGetFirstIndex() + and smiGetNextIndex(), since otherwise we have no chance to + distinguish objects that apear more than once in a single + index clause, like in RMON2-MIB::alHostEntry. + + * mibs/RFC1271-MIB: MIB file added. + + * tools/dump-sming.c: some bugfixes. + + * lib/parser-sming.y: bugfix for adjustments of forward references + in index structs. + +1999-06-03 Frank Strauss + + * libsmi-0.1.2.tar.gz: released version 0.1.2. + + * lib/smi.c: added smiGetPath() and smiSetPath() functions. + + * lib/smi.c (smiLoadModule): fixed bug when module is + specified by pathname. + + * lib/defs.h: obsoleted and removed defs.h completely. + + * lib/defs.h (MAX_LINEBUF_LENGTH): eliminated restriction of + maximum the length of MIB module lines. + +1999-06-02 Frank Strauss + + * libsmi-0.1.1.tar.gz: released version 0.1.1. + + * configure.in: added default smipath support. bugfix for + missing SMIPATH environment variable. + + * libsmi-0.1.tar.gz: released version 0.1. + +1999-06-01 Frank Strauss + + * lib/*.3.in, tools/*.1.in: updated manual pages. + + * README: updated installation information and added a hint + on online information. + +1999-05-31 Frank Strauss + + * COPYING et al: applied the license that scotty uses to + all files. + +1999-05-28 Frank Strauss + + * lib/Makefile.am: added automake and libtool support + +1999-05-27 Frank Strauss + + * lib/smi.h: added SmiOption and SmiRefinement functions. + +1999-05-25 Frank Strauss + + * README et al: applied GNU General Public License (NOT L-GPL). + + * tools/smiquery.c: adapted to current API. + + * lib/smi.h: added IndexNode and MemberNode functions. + +1999-05-22 Frank Strauss + + * configure.in: LIBSMI_VERSION=0.1 + + * Makefile: now building shared library. This heavily depends + on the platform and bin-utils. Just tested for Solaris 2.5.1 + and Linux with GNU gcc and bin-utils. + + * configure.in: started GNU configure support. + + * ChangeLog: started ChangeLog. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..0b667b2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,32 @@ +# +# Makefile.am -- +# +# Template to generate the toplevel Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1670 2004-08-09 14:06:04Z strauss $ +# + +AUTOMAKE_OPTIONS = no-dependencies foreign + +EXTRA_DIST = ANNOUNCE \ + win/Makefile.mingw win/README.mingw win/README.win \ + win/config.h win/config.h.in \ + win/makefile win/GNUmakefile win/win.c win/win.h \ + smi.conf-example libsmi.m4 libsmi.pc + +SUBDIRS = lib tools mibs pibs test doc + +m4datadir = $(datadir)/aclocal +m4data_DATA = libsmi.m4 + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libsmi.pc +$(pkgconfig_DATA): config.status + +anoncvs: + RSYNC_RSH=ssh rsync -rlt --delete $(HOME)/.cvs-repository/libsmi anoncvs@anoncvs:/var/lib/cvs diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..8459ddc --- /dev/null +++ b/Makefile.in @@ -0,0 +1,730 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the toplevel Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1670 2004-08-09 14:06:04Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/libsmi.pc.in $(top_srcdir)/configure \ + $(top_srcdir)/win/config.h.in COPYING ChangeLog THANKS TODO \ + config.guess config.sub depcomp install-sh ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = libsmi.pc win/config.h +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" +m4dataDATA_INSTALL = $(INSTALL_DATA) +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(m4data_DATA) $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = no-dependencies foreign +EXTRA_DIST = ANNOUNCE \ + win/Makefile.mingw win/README.mingw win/README.win \ + win/config.h win/config.h.in \ + win/makefile win/GNUmakefile win/win.c win/win.h \ + smi.conf-example libsmi.m4 libsmi.pc + +SUBDIRS = lib tools mibs pibs test doc +m4datadir = $(datadir)/aclocal +m4data_DATA = libsmi.m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libsmi.pc +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +libsmi.pc: $(top_builddir)/config.status $(srcdir)/libsmi.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +win/config.h: $(top_builddir)/config.status $(top_srcdir)/win/config.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ + $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ + rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ + done +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-m4dataDATA install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-m4dataDATA uninstall-pkgconfigDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgconfigDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-m4dataDATA \ + uninstall-pkgconfigDATA + +$(pkgconfig_DATA): config.status + +anoncvs: + RSYNC_RSH=ssh rsync -rlt --delete $(HOME)/.cvs-repository/libsmi anoncvs@anoncvs:/var/lib/cvs +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/README b/README new file mode 100644 index 0000000..6de9d27 --- /dev/null +++ b/README @@ -0,0 +1,131 @@ + +LIBSMI -- A LIBRARY FOR SMI MANAGEMENT INFORMATION +================================================== + +Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. + +See the file "COPYING" for information on usage and redistribution +of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +@(#) $Id: README 7795 2008-02-27 10:23:25Z strauss $ + +This project has been started as part of Frank Strauss' master's +thesis at the Technical University of Braunschweig, Germany in 1999. +Since then numerous people applied very major improvements, fixes, and +new features, namely Juergen Schoenwaelder who also initiated the +whole project and supervised my thesis work, as well as Torsten Klie, +Andreas Mueller, Moritz Bunkus, Jens Mueller, and Klaus Sperner. Many +others contributed lots of patches, improvements, and feature requests. + +This software comprises + + - a library to parse and maintain MIB and PIB modules, + + - a set of tools based on the library to check, convert, and compare + MIB and PIB modules. + + - a collection of all published IETF and IANA Standards Track MIB + and PIB modules and some more. + +Please read the manual pages and the project's web pages for further +information. + + +MANIFEST +======== + +README this file +COPYING the libsmi lincense terms +ChangeLog a rough history of changes +TODO incomplete list of things to be done +THANKS a list of people who contributed +configure configure script +lib/ library source code +tools/ tools source code +doc/ some related documents +mibs/ MIB modules to be installed +pibs/ PIB modules to be installed +test/ some test patterns +win/ Win32 port source code + + +INSTALLATION +============ + +Requirements: GNU make, gcc, flex, bison, and other things most UNIX +systems have on board. The compiler has to support `long long' types. + +To configure libsmi, first check + + ./configure --help + +output to see, what options are available. Then run + + ./configure [options] + +with the options of your choice. Choose mibdir, pibdir and smipath +values appripriate for your environment so that users can live without +an SMIPATH environment variable and without configuration files. + +On HP-UX platforms the build process is reported to require gcc +and the --disable-shared configure option. + +To build libsmi and the tools, run + + make + +This should build the library libsmi in lib/ and the tools, namely +tools/smilint, tools/smidump, tools/smiquery, tools/smidiff, +tools/smixlate and the shell script tools/smistrip. + +Now, you may run some checks by + + make check + +Note that some tests of this test suite may fail, if GNU diff was not +found. + +If you wish to install the library, the MIB and PIB modules, the tools +and the man pages, run + + make install + +To use libsmi applications you might want to configure its behaviour. +Detailed library options, including per-application options, can +be configured through a global and a user level configuration file. +Additionally the SMIPATH environment variable can be used to configure +paths of module locations. See the smi_config(3) man page. + + +DEBUGGING +========= + +If you encounter any crashes or feel for any other reasons the need to +debug the libsmi tools, you should link the tools statically. This is +the easiest way to get around the problems when your debugger claims to +be unable to read the libsmi binary files, since they are built using +libtool. You can build the libsmi tools statically by + + make clean + ./configure --enable-static --disable-shared + make + + +FURTHER READING +=============== + +Read the man pages for library concepts and usage and for the tools. +Please note that SMIng is currently in a quite inconsistent and +outdated state. It does *not* reflect what is being specified in RFCs +3780/3781. Therefore, SMIng is not enabled by default. See the old +specs in doc/draft-irtf-nmrg-sming-02.txt for details on SMIng as it +is implemented. + +You may find further information online, along with the subscription +information on the libsmi mailing list at + + http://www.ibr.cs.tu-bs.de/projects/libsmi/. + + + + Frank Strauss diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..5578eaf --- /dev/null +++ b/THANKS @@ -0,0 +1,73 @@ +libsmi has originally been written by Frank Strauss, inspired by +Juergen Schoenwaelder. Other people contributed to libsmi by reporting +problems, suggesting various improvements or submitting actual code. +Here is a list of these people. Help me keeping it complete and +exempt of errors. + +Jochen Friedrich +Juergen Schoenwaelder +Erik Schoenfelder +David Reeder +Ira Wolf +Bert Helthuis +Andrew Hood +Marcin Cieslak +Yigal Hochberg +Saurabh Jang +Keith Dart +Andreas Mueller +Bill Fenner +Bill Rizzi +Ted Soo-Hoo +Niels Baggesen +Pat Knight +Martin Schulz +Joerg Mattes +Andreas Goll +LaMont Jones +Harrie Hazewinkel +Dave Shield +Teemu Koponen +Abhay Deshmukh +Jerry Ryan +Chris Avis +Andy Bierman +Torsten Klie +Vivekanandan V + +Brian Remick +Joey Seek +Brecht Vermeulen +Pamela Heckmann +Steve Hills +Mark Kaplun +Caffaratti Fabrizio +Moritz Bunkus +Mark Kaplun +Nick Thomson +Mike Heard +Linda Lin +Claus Klein +Pete Flugstad +Fredrick Paul Eisele +Juergen Quittek +Harold L Hunt II +Bert Wijnen +Michael Hocke +Remco van de Meent +Mark D. Baushke +Daniel Chuang +Henrik Puls +Erik B. Nase +Allen McIntosh +David T. Perkins +Randy Presuhn +Corey Minyard +Li Xiaonong-CXL004 +Jose Pedro Oliveira +Randy Couey +Arndt Jonasson +Sebastian Strollo +Luis EG Ontanon +Kaloyan Kanev +Anders Broman diff --git a/TODO b/TODO new file mode 100644 index 0000000..7f5c14a --- /dev/null +++ b/TODO @@ -0,0 +1,155 @@ +o libsmi crashes on LIBSMI-TEST-010-MIB because it mixes up range, size + and named number restrictions internally so that later these data + structures are casted to the wrong type. A real fix to this problem + may require to redesign internal data structures to get rid of the + opaque list. + +o libsmi crashes on LIBSMI-TEST-011-MIB which contains a nice set of + nasty forward references. + + +o error detection: detect IMPORTs of SMIv1 specific and SMIv2 specific + items in the same module, e.g. old OBJECT-TYPE macro and (new) + NOTIFICATION-TYPE macro. + +o error detection: does table node have exactly one row sub node + with oid == 1? (2578.7.10) + +o warning detection: non continuous sub oids in column node list? + +o warning detection: not reversible DISPLAY-HINT definitions + +o remove SMI_DECL_IMPL_SEQUENCEOF from smi.h: the smiv1/smiv2 parser + should keep internal data structures for sequence types so that it + can set the correct nodekinds and that it can check the SEQUENCE + contents (see previous item). these internal data structures can + be released at the end of a MIB module. + +o warning detection: enumerations SHOULD NOT contain signedNumber's. + SHOULD start at 1. SHOULD be numbered contiguously. + e.g. DISMAN-SCHEDULE-MIB.SnmpPduErrorStatus + +o warning detection: subtyping not allowed for counter or timeticks + +o warning detection: defvals not allowed for counter + +o warning detection: missing display hints for OCTET STRING derived types + +o parser-smi.y: handle forbidden WS at some places + ( Module . label, ...) + +o dump-sming.c: ensure an order without forward references in typedef's. + +o dump-sming.c: support all(!) kinds of index clauses + +o smi.c: smiGetNames() is not yet implemented. do we really need it? + +o thread safety (global vars? static vars? strtok() and other funcs?) + different views + +o need a handle to distinguish different views. + +o clearly separate language dependent information at the API: SMI_STATUS_* + map STATUS to a non-language-dependent type + +o OID/Name Lookup Service (continue work on smid?) + +o how to convert SMIng types derived from other defined types correctly + to SMIv2? + +o various dump modules don't print identifiers fully qualified where + appropriate + +o Web online conversion to SMIng? + +o special handling for well-known traps (reversibility?) + +o smidump -f smiv1 now prints read AUGMENTS clauses as index lists correctly + but these index objects might not be imported. + +o smidump might print defvals for OIDs by label without importing it. + +o line breaks in long bits defaults values (dump-*.c) + +o Add smiGetFirstChildType(SmiType *smiType) and + smiGetNextChildType(SmiType *smiType) to the API. + +o Make sure we always get the newest definition when looking up things + that are not unique. + +o The SMIv1/SMIv2/SMIng dump modules should build proper IMPORTS for + OIDs that show up in DEFVAL or default clauses. + +o The default value conversion functions (e.g. getValueString()) should + return malloced memory to avoid potential memory overwrite problems. + +o Suppress the following types: SNMPv2-SMI::ExtUTCTime, + SNMPv2-SMI::ObjectName, SNMPv2-SMI::NotificationName. + +o Check format specifier text in SMIng spec and add a `u' format specifier + for unsigned numbers. + +o smidump -f tree -u IF-MIB SNA-SDLC-MIB vs. + smidump -f tree -u SNA-SDLC-MIB IF-MIB : e.g. ifEntry differences. + +o rename test modules: TUBS-IBR prefix. + +o make libsmi aware of annotations (when SMIng supports annotations). + +o sming: in rule `refinedBaseType -> EnumerationKeyword optsep namedNumberSpec' + the `optsep' has to be inserted. + +o sming: in rule `refinedBaseType -> BitsKeyword optsep namedNumberSpec' + the `optsep' has to be inserted. + +o sming: ensure enum namedNumbers can be signed and bits namedNumbers cannot. + +o split the library into wo layers: (a) a lower layer that is very + restrictive on allowed input, does not care about memory management, etc. + and (b) a higher layer of utility functions, like display-hint based value + formatting, oid-to-instance-element parsing, constant-to-string mappings, + etc. + +o extend smicache so that MIB authors can use it to submit URLs for their + MIBs to a central MIB http/ftp service? Ask Aiko, whether the SimpleWeb + should offer such a MIB service? + +o Allow the MIB server to support lookup by OID. + +o Is there any value in MIB-by-OID lookup through DNS? ;-) + +o Include documents (draft on xml, etc.) with the distribution. + +o X.208, section 28 allows different forms of OID values. Some of them are + not accepted by the parser. Note also that the SMIv1 ENTERPRISE construct + contains an OID value, although it's common practice to specify its value + in a plain identifier name form, which is not matched by the ASN.1 OID + syntax. + +o Check the code for OID allocations of a constant length (128). Avoid + wasting memory. Avoid problems with OIDs that are (illegally) too long. + +o Check, whether all necessary occurences of &, <, >, ', and + &qout; are handled correctly in dump-xml and dump-xsd. + +o smidiff does not yet support the -i option, like smilint does. + +o error detection: different types in SEQUENCE and OBJECT-TYPE macros + (recognized for a MIB where the SEQUENCE contains "INTEGER" for a column + for which the OBJECT-TYPE's type is SNMPv2-TC::TruthValue. Notify Bert + when fixed. + +o error detection: integer DEFVAL for an enumeration typed OBJECT-TYPE. + Notify Bert when fixed. + +o API: several applications need a mechanism to iterate through the + index components of a row definition, e.g. many of the dump-* drivers. + For example, see dump-scli.oc: foreachIndexDo(). Maybe something like + smiGetFirstIndex()/smiGetNextIndex() would be a good idea. + +o API/Utility Functions: getMinSize()/getMaxSize() is needed by multiple + smidump drivers. See dump-scli.c for a good implementation. + +o generate a warning if a module is listed multiple times in the + imports and if a symbol is imported twice (Dave Perkins) + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..90e91ec --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,7243 @@ +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_if(m4_PACKAGE_VERSION, [2.61],, +[m4_fatal([this file was generated for autoconf 2.61. +You have another version of autoconf. If you want to use that, +you should regenerate the build system entirely.], [63])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10])dnl +_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..396482d --- /dev/null +++ b/config.guess @@ -0,0 +1,1500 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[3456]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[3456]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..d521586 --- /dev/null +++ b/config.h.in @@ -0,0 +1,142 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* "" */ +#undef BACKEND_SMI + +/* "" */ +#undef BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#undef DEFAULT_ERRORLEVEL + +/* The full pathname of the global configuration file. */ +#undef DEFAULT_GLOBALCONFIG + +/* The default search path to lookup SMI module files. */ +#undef DEFAULT_SMIPATH + +/* The basename of the per-user configuration file searched in $HOME. */ +#undef DEFAULT_USERCONFIG + +/* The default path separator character. */ +#undef DIR_SEPARATOR + +/* Define to 1 if you have the `asnprintf' function. */ +#undef HAVE_ASNPRINTF + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* "" */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_REGEX_H + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + +/* Define to 1 if you have the `strtoq' function. */ +#undef HAVE_STRTOQ + +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + +/* Define to 1 if you have the `strtouq' function. */ +#undef HAVE_STRTOUQ + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `timegm' function. */ +#undef HAVE_TIMEGM + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vasnprintf' function. */ +#undef HAVE_VASNPRINTF + +/* Define to 1 if you have the `vasprintf' function. */ +#undef HAVE_VASPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* The signed 64 bit integer format conversion specification string. */ +#undef INT64_FORMAT + +/* The signed 64 bit integer maximum value. */ +#undef LIBSMI_INT64_MAX + +/* The unsigned 64 bit integer minimum value. */ +#undef LIBSMI_INT64_MIN + +/* The unsigned 64 bit integer maximum value. */ +#undef LIBSMI_UINT64_MAX + +/* The maximum module import recursion depth. */ +#undef MAX_LEX_DEPTH + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The default path separator character. */ +#undef PATH_SEPARATOR + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* The unsigned 64 bit integer format conversion specification string. */ +#undef UINT64_FORMAT + +/* Version number of package */ +#undef VERSION diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..387c18d --- /dev/null +++ b/config.sub @@ -0,0 +1,1608 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..a6d40f2 --- /dev/null +++ b/configure @@ -0,0 +1,22145 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="tools/smilint.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +CPP +GREP +EGREP +FLEX +BISON +BASH +SH +WGET +DIFF +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +LN_S +ECHO +AR +RANLIB +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +LIBTOOL_DEPS +STATIC +LIBSMI_MAJOR +LIBSMI_MINOR +LIBSMI_PATCHLEVEL +LIBTOOL_VERSION +LIBTOOL_REVISION +LIBTOOL_AGE +VERSION_STRING +VERSION_LIBTOOL +UINT64_TYPE +INT64_TYPE +srcdir +mibdir +pibdir +smipath +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-dmalloc enable dmalloc debugging (www.dmalloc.com) + --disable-smi disable SMIv1/v2 parser support + --enable-sming enable SMIng parser support + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-cflags=FLAGS use FLAGS for CFLAGS + --with-cc=CC use CC as the C compiler + --with-mibdir=DIR use DIR to install libsmi MIB modules DATADIR/mibs + --with-pibdir=DIR use DIR to install libsmi PIB modules DATADIR/pibs + --with-smipath=DIR:DIR default DIRs to search for MIB/PIB modules MIBDIR... + --with-pathseparator=C use C as the path separator : on UNIX, ; on WIN32 + --with-dirseparator=C use C as the dir separator / on UNIX, \\ on WIN32 + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +LIBSMI_MAJOR=0 +LIBSMI_MINOR=4 +LIBSMI_PATCHLEVEL=8 +LIBTOOL_VERSION=2 +LIBTOOL_REVISION=27 +LIBTOOL_AGE=0 + +VERSION_STRING="$LIBSMI_MAJOR.$LIBSMI_MINOR.$LIBSMI_PATCHLEVEL" +VERSION_LIBTOOL="$LIBTOOL_VERSION:$LIBTOOL_REVISION:$LIBTOOL_AGE" + +am__api_version='1.10' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm -f conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=libsmi + VERSION=$VERSION_STRING + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + +ac_config_headers="$ac_config_headers config.h" + + + +cat >>confdefs.h <<\_ACEOF +#define MAX_LEX_DEPTH 30 +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_ERRORLEVEL 3 +_ACEOF + + + +# Check whether --with-cflags was given. +if test "${with_cflags+set}" = set; then + withval=$with_cflags; CFLAGS="$withval" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Check whether --with-cc was given. +if test "${with_cc+set}" = set; then + withval=$with_cc; CC="$withval" +fi + + +{ echo "$as_me:$LINENO: checking for additional required compiler flags" >&5 +echo $ECHO_N "checking for additional required compiler flags... $ECHO_C" >&6; } + +if test "$cross_compiling" = yes; then + ADDCFLAGS="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef __SUNPRO_C + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ADDCFLAGS="-DYY_USE_PROTOS" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ADDCFLAGS="" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +echo $ADDCFLAGS +CFLAGS="$CFLAGS $ADDCFLAGS" + + + + + +for ac_func in strtoll strtoull strtoq strtouq +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +for ac_func in timegm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + +for ac_func in vsnprintf snprintf asprintf asnprintf vasprintf vasnprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + +for ac_header in pwd.h unistd.h regex.h stdint.h limits.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# In case regex is not in libc +{ echo "$as_me:$LINENO: checking for regexec in -lc" >&5 +echo $ECHO_N "checking for regexec in -lc... $ECHO_C" >&6; } +if test "${ac_cv_lib_c_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_c_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_c_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_c_regexec" >&6; } +if test $ac_cv_lib_c_regexec = yes; then + LDFLAGS="$LDFLAGS" +else + + { echo "$as_me:$LINENO: checking for regexec in -lrxspencer" >&5 +echo $ECHO_N "checking for regexec in -lrxspencer... $ECHO_C" >&6; } +if test "${ac_cv_lib_rxspencer_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrxspencer $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_rxspencer_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_rxspencer_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_rxspencer_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_rxspencer_regexec" >&6; } +if test $ac_cv_lib_rxspencer_regexec = yes; then + LDFLAGS="$LDFLAGS -lrxspencer" +else + + { echo "$as_me:$LINENO: checking for regexec in -lregex" >&5 +echo $ECHO_N "checking for regexec in -lregex... $ECHO_C" >&6; } +if test "${ac_cv_lib_regex_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lregex $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_regex_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_regex_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_regex_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_regex_regexec" >&6; } +if test $ac_cv_lib_regex_regexec = yes; then + LDFLAGS="$LDFLAGS -lregex" +fi + + +fi + + +fi + + +if test "x$prefix" = "xNONE" ; then + prefix=/usr/local +fi + + +# Check whether --with-mibdir was given. +if test "${with_mibdir+set}" = set; then + withval=$with_mibdir; mibdir="$withval" +else + mibdir="$prefix/share/mibs" +fi + + + +# Check whether --with-pibdir was given. +if test "${with_pibdir+set}" = set; then + withval=$with_pibdir; pibdir="$withval" +else + pibdir="$prefix/share/pibs" +fi + + + +# Check whether --with-smipath was given. +if test "${with_smipath+set}" = set; then + withval=$with_smipath; smipath="$withval" +else + smipath="$mibdir/ietf:$mibdir/iana:$mibdir/irtf:$mibdir/site:$mibdir/tubs:$pibdir/ietf:$pibdir/site:$pibdir/tubs" +fi + + + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_SMIPATH "$smipath" +_ACEOF + + + +# Check whether --with-pathseparator was given. +if test "${with_pathseparator+set}" = set; then + withval=$with_pathseparator; pathseparator="$withval" +else + pathseparator="" +fi + + + +# Check whether --with-dirseparator was given. +if test "${with_dirseparator+set}" = set; then + withval=$with_dirseparator; dirseparator="$withval" +else + dirseparator="" +fi + + +{ echo "$as_me:$LINENO: checking for path separator character" >&5 +echo $ECHO_N "checking for path separator character... $ECHO_C" >&6; } +if test "$pathseparator" = "" ; then + if test "$cross_compiling" = yes; then + pathseparator=":" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + pathseparator=";" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +pathseparator=":" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +echo $pathseparator + +{ echo "$as_me:$LINENO: checking for dir separator character" >&5 +echo $ECHO_N "checking for dir separator character... $ECHO_C" >&6; } +if test "$dirseparator" = "" ; then + if test "$cross_compiling" = yes; then + dirseparator="/" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + dirseparator="\\\\" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +dirseparator="/" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +echo $dirseparator + + +cat >>confdefs.h <<_ACEOF +#define PATH_SEPARATOR '$pathseparator' +_ACEOF + + + +cat >>confdefs.h <<_ACEOF +#define DIR_SEPARATOR '$dirseparator' +_ACEOF + + + +{ echo "$as_me:$LINENO: checking for 64 bit types" >&5 +echo $ECHO_N "checking for 64 bit types... $ECHO_C" >&6; } +# +# Note that int64_min is defined as -9223372036854775807LL and NOT as +# -9223372036854775808LL. gcc (version 2.95.4 and others) complains with +# "warning: decimal constant is so large that it is unsigned" +# if used with the (correct) value -9223372036854775808LL. +# +if test "$cross_compiling" = yes; then + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + long long ll; + unsigned long long ull; + exit(0); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +uint64_type="unsigned long"; int64_type="long"; + uint64_format="%lu"; int64_format="%ld"; + uint64_max="4294967295"; + int64_min="-2147483648"; int64_max="2147483647" + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +echo $int64_type/$int64_format, etc. + +UINT64_TYPE=$uint64_type +INT64_TYPE=$int64_type + +cat >>confdefs.h <<_ACEOF +#define UINT64_FORMAT "$uint64_format" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define INT64_FORMAT "$int64_format" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_UINT64_MAX $uint64_max +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_INT64_MIN $int64_min +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_INT64_MAX $int64_max +_ACEOF + + + +# Check whether --enable-dmalloc was given. +if test "${enable_dmalloc+set}" = set; then + enableval=$enable_dmalloc; LIBS="$LIBS -ldmalloc" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DMALLOC_H 1 +_ACEOF + +fi + + + +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMI 1 +_ACEOF + +# Check whether --enable-smi was given. +if test "${enable_smi+set}" = set; then + enableval=$enable_smi; +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMI 1 +_ACEOF + +fi + + +# Check whether --enable-sming was given. +if test "${enable_sming+set}" = set; then + enableval=$enable_sming; +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMING 0 +_ACEOF + +fi + + +# Extract the first word of ""flex"", so it can be a program name with args. +set dummy "flex"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_FLEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $FLEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +FLEX=$ac_cv_path_FLEX +if test -n "$FLEX"; then + { echo "$as_me:$LINENO: result: $FLEX" >&5 +echo "${ECHO_T}$FLEX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +if test -z "${FLEX}" ; then + echo "NOTE: We will not be able to build scanner C code from flex sources." +fi + +# Extract the first word of ""bison"", so it can be a program name with args. +set dummy "bison"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_BISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BISON in + [\\/]* | ?:[\\/]*) + ac_cv_path_BISON="$BISON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +BISON=$ac_cv_path_BISON +if test -n "$BISON"; then + { echo "$as_me:$LINENO: result: $BISON" >&5 +echo "${ECHO_T}$BISON" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +if test -z "${BISON}" ; then + echo "NOTE: We will not be able to build parser C code from bison sources." +fi + +# Extract the first word of ""bash"", so it can be a program name with args. +set dummy "bash"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_BASH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BASH in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +BASH=$ac_cv_path_BASH +if test -n "$BASH"; then + { echo "$as_me:$LINENO: result: $BASH" >&5 +echo "${ECHO_T}$BASH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of ""sh"", so it can be a program name with args. +set dummy "sh"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SH in + [\\/]* | ?:[\\/]*) + ac_cv_path_SH="$SH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SH=$ac_cv_path_SH +if test -n "$SH"; then + { echo "$as_me:$LINENO: result: $SH" >&5 +echo "${ECHO_T}$SH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "awk", so it can be a program name with args. +set dummy awk; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_AWK="$AWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +AWK=$ac_cv_path_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_WGET+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_WGET="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { echo "$as_me:$LINENO: result: $WGET" >&5 +echo "${ECHO_T}$WGET" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +for ac_prog in gdiff diff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_DIFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { echo "$as_me:$LINENO: result: $DIFF" >&5 +echo "${ECHO_T}$DIFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$DIFF" && break +done + +$DIFF --version >/dev/null 2>&1 +if test $? -eq 0 ; then + DIFF="$DIFF --ignore-matching-lines='generated by smidump' --ignore-matching-lines='\$Id.*\$' --ignore-matching-lines='@author.*smidump'" +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +{ echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6; } + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 6261 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + + +esac + +need_locks="$enable_libtool_lock" + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } +else + { echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6; } +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } +else + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8513: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8517: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8781: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8785: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8885: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8889: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + ;; + *) + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + { echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13618: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13622: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13722: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13726: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15283: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15287: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15387: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15391: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17574: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17578: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17842: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17846: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17946: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:17950: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + + + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_GLOBALCONFIG "${sysconfdir}/smi.conf" +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_USERCONFIG ".smirc" +_ACEOF + + +if ${CONFIG_SHELL} ./libtool --features | grep "enable static" >/dev/null; then + STATIC=-static +else + STATIC= +fi + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_config_files="$ac_config_files Makefile lib/Makefile tools/Makefile mibs/Makefile mibs/iana/Makefile mibs/ietf/Makefile mibs/irtf/Makefile mibs/tubs/Makefile mibs/site/Makefile pibs/Makefile pibs/ietf/Makefile pibs/tubs/Makefile pibs/site/Makefile test/Makefile test/mibs/Makefile test/smidiff/Makefile test/dumps/Makefile test/dumps/corba/Makefile test/dumps/imports/Makefile test/dumps/jax/Makefile test/dumps/netsnmp/Makefile test/dumps/mosy/Makefile test/dumps/orig-smiv2/Makefile test/dumps/smilint-smiv2/Makefile test/dumps/sming/Makefile test/dumps/smiv1/Makefile test/dumps/smiv2/Makefile test/dumps/smiv2-smiv2/Makefile test/dumps/tree/Makefile test/dumps/types/Makefile test/dumps/identifiers/Makefile test/dumps/metrics/Makefile test/dumps/xml/Makefile test/dumps/cm/Makefile test/dumps/python/Makefile test/dumps/yang/Makefile doc/Makefile lib/smi.h lib/libsmi.3 lib/smi_macro.3 lib/smi_module.3 lib/smi_node.3 lib/smi_type.3 lib/smi_config.3 lib/smi_render.3 lib/smi_util.3 lib/smi_class.3 lib/smi_attribute.3 lib/smi_event.3 lib/smi_identity.3 tools/smistrip tools/smicache tools/smiquery.1 tools/smilint.1 tools/smidump.1 tools/smidiff.1 tools/smistrip.1 tools/smicache.1 tools/smixlate.1 tools/mib2svg.cgi test/parser.test test/smidump-corba.test test/smidump-jax.test test/smidump-netsnmp.test test/smidump-imports.test test/smidump-mosy.test test/smidump-orig-smiv2.test test/smidump-sming.test test/smidump-yang.test test/smidump-smiv1.test test/smidump-smiv2-smiv2.test test/smidump-smiv2.test test/smidump-tree.test test/smidump-types.test test/smidump-identifiers.test test/smidump-metrics.test test/smidump-xml.test test/smidump-cm.test test/smidump-python.test test/smilint-smiv2.test test/smidiff.test libsmi.pc win/config.h" + +ac_config_commands="$ac_config_commands default" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "mibs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/Makefile" ;; + "mibs/iana/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/iana/Makefile" ;; + "mibs/ietf/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/ietf/Makefile" ;; + "mibs/irtf/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/irtf/Makefile" ;; + "mibs/tubs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/tubs/Makefile" ;; + "mibs/site/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/site/Makefile" ;; + "pibs/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/Makefile" ;; + "pibs/ietf/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/ietf/Makefile" ;; + "pibs/tubs/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/tubs/Makefile" ;; + "pibs/site/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/site/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "test/mibs/Makefile") CONFIG_FILES="$CONFIG_FILES test/mibs/Makefile" ;; + "test/smidiff/Makefile") CONFIG_FILES="$CONFIG_FILES test/smidiff/Makefile" ;; + "test/dumps/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/Makefile" ;; + "test/dumps/corba/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/corba/Makefile" ;; + "test/dumps/imports/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/imports/Makefile" ;; + "test/dumps/jax/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/jax/Makefile" ;; + "test/dumps/netsnmp/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/netsnmp/Makefile" ;; + "test/dumps/mosy/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/mosy/Makefile" ;; + "test/dumps/orig-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/orig-smiv2/Makefile" ;; + "test/dumps/smilint-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smilint-smiv2/Makefile" ;; + "test/dumps/sming/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/sming/Makefile" ;; + "test/dumps/smiv1/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv1/Makefile" ;; + "test/dumps/smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv2/Makefile" ;; + "test/dumps/smiv2-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv2-smiv2/Makefile" ;; + "test/dumps/tree/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/tree/Makefile" ;; + "test/dumps/types/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/types/Makefile" ;; + "test/dumps/identifiers/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/identifiers/Makefile" ;; + "test/dumps/metrics/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/metrics/Makefile" ;; + "test/dumps/xml/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/xml/Makefile" ;; + "test/dumps/cm/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/cm/Makefile" ;; + "test/dumps/python/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/python/Makefile" ;; + "test/dumps/yang/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/yang/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "lib/smi.h") CONFIG_FILES="$CONFIG_FILES lib/smi.h" ;; + "lib/libsmi.3") CONFIG_FILES="$CONFIG_FILES lib/libsmi.3" ;; + "lib/smi_macro.3") CONFIG_FILES="$CONFIG_FILES lib/smi_macro.3" ;; + "lib/smi_module.3") CONFIG_FILES="$CONFIG_FILES lib/smi_module.3" ;; + "lib/smi_node.3") CONFIG_FILES="$CONFIG_FILES lib/smi_node.3" ;; + "lib/smi_type.3") CONFIG_FILES="$CONFIG_FILES lib/smi_type.3" ;; + "lib/smi_config.3") CONFIG_FILES="$CONFIG_FILES lib/smi_config.3" ;; + "lib/smi_render.3") CONFIG_FILES="$CONFIG_FILES lib/smi_render.3" ;; + "lib/smi_util.3") CONFIG_FILES="$CONFIG_FILES lib/smi_util.3" ;; + "lib/smi_class.3") CONFIG_FILES="$CONFIG_FILES lib/smi_class.3" ;; + "lib/smi_attribute.3") CONFIG_FILES="$CONFIG_FILES lib/smi_attribute.3" ;; + "lib/smi_event.3") CONFIG_FILES="$CONFIG_FILES lib/smi_event.3" ;; + "lib/smi_identity.3") CONFIG_FILES="$CONFIG_FILES lib/smi_identity.3" ;; + "tools/smistrip") CONFIG_FILES="$CONFIG_FILES tools/smistrip" ;; + "tools/smicache") CONFIG_FILES="$CONFIG_FILES tools/smicache" ;; + "tools/smiquery.1") CONFIG_FILES="$CONFIG_FILES tools/smiquery.1" ;; + "tools/smilint.1") CONFIG_FILES="$CONFIG_FILES tools/smilint.1" ;; + "tools/smidump.1") CONFIG_FILES="$CONFIG_FILES tools/smidump.1" ;; + "tools/smidiff.1") CONFIG_FILES="$CONFIG_FILES tools/smidiff.1" ;; + "tools/smistrip.1") CONFIG_FILES="$CONFIG_FILES tools/smistrip.1" ;; + "tools/smicache.1") CONFIG_FILES="$CONFIG_FILES tools/smicache.1" ;; + "tools/smixlate.1") CONFIG_FILES="$CONFIG_FILES tools/smixlate.1" ;; + "tools/mib2svg.cgi") CONFIG_FILES="$CONFIG_FILES tools/mib2svg.cgi" ;; + "test/parser.test") CONFIG_FILES="$CONFIG_FILES test/parser.test" ;; + "test/smidump-corba.test") CONFIG_FILES="$CONFIG_FILES test/smidump-corba.test" ;; + "test/smidump-jax.test") CONFIG_FILES="$CONFIG_FILES test/smidump-jax.test" ;; + "test/smidump-netsnmp.test") CONFIG_FILES="$CONFIG_FILES test/smidump-netsnmp.test" ;; + "test/smidump-imports.test") CONFIG_FILES="$CONFIG_FILES test/smidump-imports.test" ;; + "test/smidump-mosy.test") CONFIG_FILES="$CONFIG_FILES test/smidump-mosy.test" ;; + "test/smidump-orig-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-orig-smiv2.test" ;; + "test/smidump-sming.test") CONFIG_FILES="$CONFIG_FILES test/smidump-sming.test" ;; + "test/smidump-yang.test") CONFIG_FILES="$CONFIG_FILES test/smidump-yang.test" ;; + "test/smidump-smiv1.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv1.test" ;; + "test/smidump-smiv2-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv2-smiv2.test" ;; + "test/smidump-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv2.test" ;; + "test/smidump-tree.test") CONFIG_FILES="$CONFIG_FILES test/smidump-tree.test" ;; + "test/smidump-types.test") CONFIG_FILES="$CONFIG_FILES test/smidump-types.test" ;; + "test/smidump-identifiers.test") CONFIG_FILES="$CONFIG_FILES test/smidump-identifiers.test" ;; + "test/smidump-metrics.test") CONFIG_FILES="$CONFIG_FILES test/smidump-metrics.test" ;; + "test/smidump-xml.test") CONFIG_FILES="$CONFIG_FILES test/smidump-xml.test" ;; + "test/smidump-cm.test") CONFIG_FILES="$CONFIG_FILES test/smidump-cm.test" ;; + "test/smidump-python.test") CONFIG_FILES="$CONFIG_FILES test/smidump-python.test" ;; + "test/smilint-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smilint-smiv2.test" ;; + "test/smidiff.test") CONFIG_FILES="$CONFIG_FILES test/smidiff.test" ;; + "libsmi.pc") CONFIG_FILES="$CONFIG_FILES libsmi.pc" ;; + "win/config.h") CONFIG_FILES="$CONFIG_FILES win/config.h" ;; + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +am__isrc!$am__isrc$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +FLEX!$FLEX$ac_delim +BISON!$BISON$ac_delim +BASH!$BASH$ac_delim +SH!$SH$ac_delim +WGET!$WGET$ac_delim +DIFF!$DIFF$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +LN_S!$LN_S$ac_delim +ECHO!$ECHO$ac_delim +AR!$AR$ac_delim +RANLIB!$RANLIB$ac_delim +CXX!$CXX$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +CXXFLAGS!$CXXFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +CXXDEPMODE!$CXXDEPMODE$ac_delim +am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim +am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim +CXXCPP!$CXXCPP$ac_delim +F77!$F77$ac_delim +FFLAGS!$FFLAGS$ac_delim +ac_ct_F77!$ac_ct_F77$ac_delim +LIBTOOL!$LIBTOOL$ac_delim +LIBTOOL_DEPS!$LIBTOOL_DEPS$ac_delim +STATIC!$STATIC$ac_delim +LIBSMI_MAJOR!$LIBSMI_MAJOR$ac_delim +LIBSMI_MINOR!$LIBSMI_MINOR$ac_delim +LIBSMI_PATCHLEVEL!$LIBSMI_PATCHLEVEL$ac_delim +LIBTOOL_VERSION!$LIBTOOL_VERSION$ac_delim +LIBTOOL_REVISION!$LIBTOOL_REVISION$ac_delim +LIBTOOL_AGE!$LIBTOOL_AGE$ac_delim +VERSION_STRING!$VERSION_STRING$ac_delim +VERSION_LIBTOOL!$VERSION_LIBTOOL$ac_delim +UINT64_TYPE!$UINT64_TYPE$ac_delim +INT64_TYPE!$INT64_TYPE$ac_delim +srcdir!$srcdir$ac_delim +mibdir!$mibdir$ac_delim +pibdir!$pibdir$ac_delim +smipath!$smipath$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| . 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + "default":C) chmod a+x test/*.test + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..9b678e2 --- /dev/null +++ b/configure.in @@ -0,0 +1,344 @@ +# +# configure.in -- +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: configure.in 8090 2008-04-18 12:56:29Z strauss $ +# + +AC_INIT(tools/smilint.c) + +LIBSMI_MAJOR=0 +LIBSMI_MINOR=4 +LIBSMI_PATCHLEVEL=8 +LIBTOOL_VERSION=2 +LIBTOOL_REVISION=27 +LIBTOOL_AGE=0 + +VERSION_STRING="$LIBSMI_MAJOR.$LIBSMI_MINOR.$LIBSMI_PATCHLEVEL" +VERSION_LIBTOOL="$LIBTOOL_VERSION:$LIBTOOL_REVISION:$LIBTOOL_AGE" + +AM_INIT_AUTOMAKE(libsmi,$VERSION_STRING) +AM_CONFIG_HEADER(config.h) + +AC_DEFINE([MAX_LEX_DEPTH], 30, +[The maximum module import recursion depth.]) + +AC_DEFINE([DEFAULT_ERRORLEVEL], 3, +[The default error level at libsmi initialization.]) + +AC_ARG_WITH(cflags, +[ --with-cflags=FLAGS use FLAGS for CFLAGS], +CFLAGS="$withval") + +AC_PROG_CC +AC_ARG_WITH(cc, +[ --with-cc=CC use CC as the C compiler], +CC="$withval") + +AC_MSG_CHECKING([for additional required compiler flags]) +AC_TRY_RUN([#include + main() { + #ifdef __SUNPRO_C + exit(0); + #else + exit(1); + #endif + } +], ADDCFLAGS="-DYY_USE_PROTOS", ADDCFLAGS="", ADDCFLAGS="") +echo $ADDCFLAGS +CFLAGS="$CFLAGS $ADDCFLAGS" + +AC_CHECK_FUNCS(strtoll strtoull strtoq strtouq) + +AC_CHECK_FUNCS(timegm) + +AC_CHECK_FUNCS(vsnprintf snprintf asprintf asnprintf vasprintf vasnprintf) + +AC_CHECK_HEADERS(pwd.h unistd.h regex.h stdint.h limits.h) + +# In case regex is not in libc +AC_CHECK_LIB(c,regexec,LDFLAGS="$LDFLAGS", +[ + AC_CHECK_LIB(rxspencer,regexec,LDFLAGS="$LDFLAGS -lrxspencer", + [ + AC_CHECK_LIB(regex,regexec,LDFLAGS="$LDFLAGS -lregex") + ]) +]) + +if test "x$prefix" = "xNONE" ; then + prefix=/usr/local +fi + +AC_ARG_WITH(mibdir, +[ --with-mibdir=DIR use DIR to install libsmi MIB modules [DATADIR/mibs]], +mibdir="$withval", mibdir="$prefix/share/mibs") + +AC_ARG_WITH(pibdir, +[ --with-pibdir=DIR use DIR to install libsmi PIB modules [DATADIR/pibs]], +pibdir="$withval", pibdir="$prefix/share/pibs") + +AC_ARG_WITH(smipath, +[ --with-smipath=DIR:DIR default DIRs to search for MIB/PIB modules [MIBDIR...]], +smipath="$withval", smipath="$mibdir/ietf:$mibdir/iana:$mibdir/irtf:$mibdir/site:$mibdir/tubs:$pibdir/ietf:$pibdir/site:$pibdir/tubs") + +AC_DEFINE_UNQUOTED([DEFAULT_SMIPATH], "$smipath", +[The default search path to lookup SMI module files.]) + +AC_ARG_WITH(pathseparator, +[ --with-pathseparator=C use C as the path separator [: on UNIX, ; on WIN32]], +pathseparator="$withval", pathseparator="") + +AC_ARG_WITH(dirseparator, +[ --with-dirseparator=C use C as the dir separator [/ on UNIX, \\ on WIN32]], +dirseparator="$withval", dirseparator="") + +AC_MSG_CHECKING([for path separator character]) +if test "$pathseparator" = "" ; then + AC_TRY_RUN([#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + ], pathseparator=";", pathseparator=":", pathseparator=":") +fi +echo $pathseparator + +AC_MSG_CHECKING([for dir separator character]) +if test "$dirseparator" = "" ; then + AC_TRY_RUN([#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + ], dirseparator="\\\\", dirseparator="/", dirseparator="/") +fi +echo $dirseparator + +AC_DEFINE_UNQUOTED([PATH_SEPARATOR], '$pathseparator', +[The default path separator character.]) + +AC_DEFINE_UNQUOTED([DIR_SEPARATOR], '$dirseparator', +[The default path separator character.]) + + +AC_MSG_CHECKING([for 64 bit types]) +# +# Note that int64_min is defined as -9223372036854775807LL and NOT as +# -9223372036854775808LL. gcc (version 2.95.4 and others) complains with +# "warning: decimal constant is so large that it is unsigned" +# if used with the (correct) value -9223372036854775808LL. +# +AC_TRY_RUN([#include + main() { + long long ll; + unsigned long long ull; + exit(0); + } + ], + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + , + uint64_type="unsigned long"; int64_type="long"; + uint64_format="%lu"; int64_format="%ld"; + uint64_max="4294967295"; + int64_min="-2147483648"; int64_max="2147483647" + , + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" +) +echo $int64_type/$int64_format, etc. + +UINT64_TYPE=$uint64_type +INT64_TYPE=$int64_type +AC_DEFINE_UNQUOTED([UINT64_FORMAT], "$uint64_format", +[The unsigned 64 bit integer format conversion specification string.]) +AC_DEFINE_UNQUOTED([INT64_FORMAT], "$int64_format", +[The signed 64 bit integer format conversion specification string.]) +AC_DEFINE_UNQUOTED([LIBSMI_UINT64_MAX], $uint64_max, +[The unsigned 64 bit integer maximum value.]) +AC_DEFINE_UNQUOTED([LIBSMI_INT64_MIN], $int64_min, +[The unsigned 64 bit integer minimum value.]) +AC_DEFINE_UNQUOTED([LIBSMI_INT64_MAX], $int64_max, +[The signed 64 bit integer maximum value.]) + + +AC_ARG_ENABLE(dmalloc, +[ --enable-dmalloc enable dmalloc debugging (www.dmalloc.com)], +LIBS="$LIBS -ldmalloc" +AC_DEFINE([HAVE_DMALLOC_H], 1, "")) + +AC_DEFINE(BACKEND_SMI, 1, "") +AC_ARG_ENABLE(smi, +[ --disable-smi disable SMIv1/v2 parser support], +AC_DEFINE(BACKEND_SMI, 1, "")) + +AC_ARG_ENABLE(sming, +[ --enable-sming enable SMIng parser support], +AC_DEFINE(BACKEND_SMING, 0, "")) + +AC_PATH_PROG(FLEX, "flex") +if test -z "${FLEX}" ; then + echo "NOTE: We will not be able to build scanner C code from flex sources." +fi + +AC_PATH_PROG(BISON, "bison") +if test -z "${BISON}" ; then + echo "NOTE: We will not be able to build parser C code from bison sources." +fi + +AC_PATH_PROG(BASH, "bash") +AC_PATH_PROG(SH, "sh") +AC_PATH_PROG(AWK, awk) +AC_PATH_PROG(WGET, wget) + +AC_PATH_PROGS(DIFF, gdiff diff) +$DIFF --version >/dev/null 2>&1 +if test $? -eq 0 ; then + DIFF="$DIFF --ignore-matching-lines='generated by smidump' --ignore-matching-lines='\$Id.*\$' --ignore-matching-lines='@author.*smidump'" +fi + +AC_EXEEXT +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AM_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) + +AC_DEFINE_UNQUOTED([DEFAULT_GLOBALCONFIG], "${sysconfdir}/smi.conf", +[The full pathname of the global configuration file.]) + +AC_DEFINE([DEFAULT_USERCONFIG], ".smirc", +[The basename of the per-user configuration file searched in $HOME.]) + +if ${CONFIG_SHELL} ./libtool --features | grep "enable static" >/dev/null; then + STATIC=-static +else + STATIC= +fi +AC_SUBST(STATIC) + +AC_SUBST(LIBSMI_MAJOR) +AC_SUBST(LIBSMI_MINOR) +AC_SUBST(LIBSMI_PATCHLEVEL) +AC_SUBST(LIBTOOL_VERSION) +AC_SUBST(LIBTOOL_REVISION) +AC_SUBST(LIBTOOL_AGE) +AC_SUBST(VERSION_STRING) +AC_SUBST(VERSION_LIBTOOL) +AC_SUBST(UINT64_TYPE) +AC_SUBST(INT64_TYPE) + +AC_SUBST(EXEEXT) +AC_SUBST(BASH) +AC_SUBST(SH) +AC_SUBST(AWK) +AC_SUBST(WGET) +AC_SUBST(DIFF) +AC_SUBST(CC) +AC_SUBST(CFLAGS) +AC_SUBST(srcdir) +AC_SUBST(mibdir) +AC_SUBST(pibdir) +AC_SUBST(smipath) + +AC_OUTPUT([ +Makefile +lib/Makefile +tools/Makefile +mibs/Makefile +mibs/iana/Makefile +mibs/ietf/Makefile +mibs/irtf/Makefile +mibs/tubs/Makefile +mibs/site/Makefile +pibs/Makefile +pibs/ietf/Makefile +pibs/tubs/Makefile +pibs/site/Makefile +test/Makefile +test/mibs/Makefile +test/smidiff/Makefile +test/dumps/Makefile +test/dumps/corba/Makefile +test/dumps/imports/Makefile +test/dumps/jax/Makefile +test/dumps/netsnmp/Makefile +test/dumps/mosy/Makefile +test/dumps/orig-smiv2/Makefile +test/dumps/smilint-smiv2/Makefile +test/dumps/sming/Makefile +test/dumps/smiv1/Makefile +test/dumps/smiv2/Makefile +test/dumps/smiv2-smiv2/Makefile +test/dumps/tree/Makefile +test/dumps/types/Makefile +test/dumps/identifiers/Makefile +test/dumps/metrics/Makefile +test/dumps/xml/Makefile +test/dumps/cm/Makefile +test/dumps/python/Makefile +test/dumps/yang/Makefile +doc/Makefile +lib/smi.h +lib/libsmi.3 +lib/smi_macro.3 +lib/smi_module.3 +lib/smi_node.3 +lib/smi_type.3 +lib/smi_config.3 +lib/smi_render.3 +lib/smi_util.3 +lib/smi_class.3 +lib/smi_attribute.3 +lib/smi_event.3 +lib/smi_identity.3 +tools/smistrip +tools/smicache +tools/smiquery.1 +tools/smilint.1 +tools/smidump.1 +tools/smidiff.1 +tools/smistrip.1 +tools/smicache.1 +tools/smixlate.1 +tools/mib2svg.cgi +test/parser.test +test/smidump-corba.test +test/smidump-jax.test +test/smidump-netsnmp.test +test/smidump-imports.test +test/smidump-mosy.test +test/smidump-orig-smiv2.test +test/smidump-sming.test +test/smidump-yang.test +test/smidump-smiv1.test +test/smidump-smiv2-smiv2.test +test/smidump-smiv2.test +test/smidump-tree.test +test/smidump-types.test +test/smidump-identifiers.test +test/smidump-metrics.test +test/smidump-xml.test +test/smidump-cm.test +test/smidump-python.test +test/smilint-smiv2.test +test/smidiff.test +libsmi.pc +win/config.h], +chmod a+x test/*.test +) diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..ca5ea4e --- /dev/null +++ b/depcomp @@ -0,0 +1,584 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2006-10-15.18 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software +# Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..6c5d9e4 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,18 @@ +# +# Makefile.am -- +# +# Template to generate the doc Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1509 2002-12-22 16:23:04Z strauss $ +# + +EXTRA_DIST = draft-irtf-nmrg-sming-02.txt \ + draft-irtf-nmrg-smi-xml-00.txt smi.dtd \ + draft-irtf-nmrg-smi-xml-01.txt smi.xsd \ + ibrpib-assignments.txt smi.dia + diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..135f585 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,358 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the doc Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1509 2002-12-22 16:23:04Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = draft-irtf-nmrg-sming-02.txt \ + draft-irtf-nmrg-smi-xml-00.txt smi.dtd \ + draft-irtf-nmrg-smi-xml-01.txt smi.xsd \ + ibrpib-assignments.txt smi.dia + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/draft-irtf-nmrg-smi-xml-00.txt b/doc/draft-irtf-nmrg-smi-xml-00.txt new file mode 100644 index 0000000..c557c72 --- /dev/null +++ b/doc/draft-irtf-nmrg-smi-xml-00.txt @@ -0,0 +1,672 @@ + + +Network Working Group J. Schoenwaelder +Internet-Draft F. Strauss +Expires: December 20, 2000 TU Braunschweig + June 21, 2000 + + + Using XML to Exchange SMI Definitions + draft-irtf-nmrg-smi-xml-00.txt + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as + Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months and may be updated, replaced, or obsoleted by other documents + at any time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To view the entire list of Internet-Draft Shadow Directories, see + http://www.ietf.org/shadow.html. + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/iid-abstracts.txt + + This Internet-Draft will expire on December 20, 2000. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + +Abstract + + This memo describes how the Extensible Markup Language (XML) can be + used to exchange SMIv1, SMIv2 and SMIng definitions between XML + enabled applications. + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 1] + +Internet-Draft XML SMI Exchange Format June 2000 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. SMI XML DTD . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + 4. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 + References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 2] + +Internet-Draft XML SMI Exchange Format June 2000 + + +1. Introduction + + This memo describes how the Extensible Markup Language (XML) [1] can + be used to exchange SMIv1 [2][3][4], SMIv2 [5][6][7] and SMIng [8] + definitions between XML enabled applications. The acronym SMI is + used throughout this document as a version neutral name for SMIv1, + SMIv2 or SMIng. + + The Document Type Definition (DTD) defined in this memo allows + applications with embedded generic XML parsers to read (or edit) the + original SMI definitions. The XML DTD is optimized for this purpose. + Terseness of the XML output was of minimal importance since humans + are expected to read the originial SMI definitions. + + In fact, the XML format of an SMI module is significantly longer + compared to the original SMI definition. This is inline with the + design goals for XML, which favours computer readability over + terseness. + + There are several scenarios where an XML representation of SMI + definitions is useful: + o The XML format may be used as an intermediate format between a + validating SMI compiler/parser and post processing tools such as + code or schema generators. (The undocumented mosy format has been + used in the past for this purpose. The mosy format does not + preserve all information present in a SMI module and is therefore + problematic.) + o The XML format can be used with XSLT post processors to generate + documentation in various formats. + o The XML format makes it possible to access SMI definition from a + variety of programming languages. XML parsers are available in + Java, C, C++, Tcl, Perl, Python, and GNU Emacs Lisp in both + commercial and open source forms. + o There are generic tools for maintaining large sets of XML + definitions. This includes tools to search for definitions with a + specific property. Such generic XML tools can be very useful in + organizations that are required to maintain large amounts of SMI + definitions. + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 3] + +Internet-Draft XML SMI Exchange Format June 2000 + + +2. SMI XML DTD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 4] + +Internet-Draft XML SMI Exchange Format June 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 5] + +Internet-Draft XML SMI Exchange Format June 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3. Examples + +4. Acknowledgments + + This document is the result of discussions within the Network + Management Research Group (NMRG) of the Internet Research Task + Force[9] (IRTF). + + Special thanks to Bert Helthuis, Atin Banerjee and Debnarayan Kar + for providing useful feedback and access to their private SMI XML + DTDs. + + A prototype implementation of an SMIv1/SMIv2/SMIng converter to XML + is freely available as part of the libsmi[10] SMI parser library + distribution. + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 9] + +Internet-Draft XML SMI Exchange Format June 2000 + + +References + + [1] World Wide Web Consortium, "Extensible Markup Language (XML) + 1.0", W3C REC-xml-19980210, February 1998. + + [2] Rose, M. and K. McCloghrie, "Structure and Identification of + Management Information for TCP/IP-based Internets", STD 16, RFC + 1155, May 1990. + + [3] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, + RFC 1212, March 1991. + + [4] Rose, M., "A Convention for Defining Traps for use with the + SNMP", RFC 1215, March 1991. + + [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Structure of Management Information + Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. + + [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, + RFC 2579, April 1999. + + [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Conformance Statements for SMIv2", STD + 58, RFC 2580, April 1999. + + [8] Strauss, F., "SMIng - A new Structure of Management + Information", Internet Draft draft-irtf-nmrg-sming-02.txt, + February 2000. + + [9] http://www.irtf.org/ + + [10] http://www.ibr.cs.tu-bs.de/projects/libsmi/ + +Authors' Addresses + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 10] + +Internet-Draft XML SMI Exchange Format June 2000 + + + Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 11] + +Internet-Draft XML SMI Exchange Format June 2000 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph + are included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 12] + diff --git a/doc/draft-irtf-nmrg-smi-xml-01.txt b/doc/draft-irtf-nmrg-smi-xml-01.txt new file mode 100644 index 0000000..2b9a9dc --- /dev/null +++ b/doc/draft-irtf-nmrg-smi-xml-01.txt @@ -0,0 +1,1008 @@ + + +Network Working Group J. Schoenwaelder +Internet-Draft F. Strauss +Expires: July 10, 2002 TU Braunschweig + January 9, 2002 + + + Using XML to Exchange SMI Definitions + draft-irtf-nmrg-smi-xml-01 + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as Internet- + Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/1id-abstracts.txt. + + The list of Internet-Draft Shadow Directories can be accessed at + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on July 10, 2002. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This memo describes how the Extensible Markup Language (XML) can be + used to exchange SMIv1 and SMIv2 definitions between XML enabled + applications. + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 1] + +Internet-Draft XML SMI Exchange Format January 2002 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. SMI XML Schema . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 4. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 5. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 + References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 17 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . 18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 2] + +Internet-Draft XML SMI Exchange Format January 2002 + + +1. Introduction + + This memo describes how the Extensible Markup Language (XML) [1] can + be used to exchange SMIv1 [2][3][4] and SMIv2 [5][6][7] definitions + between XML enabled applications. The acronym SMI is used throughout + this document as a version neutral name for SMIv1 or SMIv2. + + The XML Schema defined in this memo allows applications with embedded + generic XML parsers to read (or edit) the original SMI definitions. + The XML Schema is optimized for this purpose. Terseness of the XML + output was of minimal importance since humans are expected to read + the originial SMI definitions. + + In fact, the XML format of an SMI module is significantly longer + compared to the original SMI definition. This is in line with the + design goals for XML, which favours computer readability over + terseness. + + There are several scenarios where an XML representation of SMI + definitions is useful: + + o The XML format may be used as an intermediate format between a + validating SMI compiler/parser and post processing tools such as + code or schema generators. (The undocumented mosy format has been + used in the past for this purpose. The mosy format does not + preserve all information present in a SMI module and is therefore + problematic.) + + o The XML format can be used with XSLT post processors to generate + documentation in various formats. + + o The XML format makes it possible to access SMI definitions from a + variety of programming languages. E.g., XML parsers are available + in Java, C, C++, Tcl, Perl, Python, and GNU Emacs Lisp in both + commercial and open source forms. + + o There are generic tools for maintaining large sets of XML + definitions. This includes tools to search for definitions with a + specific property. Such generic XML tools can be very useful in + organizations that must maintain large amounts of SMI definitions. + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 3] + +Internet-Draft XML SMI Exchange Format January 2002 + + +2. SMI XML Schema + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 4] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 5] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 6] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 7] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 8] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 9] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 10] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 11] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 12] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 13] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 14] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 15] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + +3. Examples + +4. Open Issues + + Shall we get rid of the identity element by making it an optional + attribute of the module element? + + +5. Acknowledgments + + This document is the result of discussions within the Network + Management Research Group (NMRG) of the Internet Research Task + Force[8] (IRTF). + + Special thanks to Bert Helthuis, Atin Banerjee and Debnarayan Kar for + providing useful feedback and access to their private SMI XML DTDs. + + A prototype implementation of an SMIv1/v2 converter to XML is freely + available as part of the libsmi[9] SMI parser library distribution. + +References + + [1] World Wide Web Consortium, "Extensible Markup Language (XML) 1.0 + (Second Edition)", W3C REC-xml-20001006, October 2000. + + [2] Rose, M. and K. McCloghrie, "Structure and identification of + management information for TCP/IP-based internets", STD 16, RFC + 1155, May 1990. + + [3] Rose, M. and K. McCloghrie, "Concise MIB definitions", STD 16, + RFC 1212, March 1991. + + [4] Rose, M., "Convention for defining traps for use with the SNMP", + RFC 1215, March 1991. + + [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., + McCloghrie, K., Rose, M. and S. Waldbusser, "Structure of + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 16] + +Internet-Draft XML SMI Exchange Format January 2002 + + + Management Information Version 2 (SMIv2)", STD 58, RFC 2578, + April 1999. + + [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., + McCloghrie, K., Rose, M. and S. Waldbusser, "Textual Conventions + for SMIv2", STD 58, RFC 2579, April 1999. + + [7] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance + Statements for SMIv2", STD 58, RFC 2580, April 1999. + + [8] + + [9] + + +Authors' Addresses + + Juergen Schoenwaelder + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + + Frank Strauss + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 17] + +Internet-Draft XML SMI Exchange Format January 2002 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 18] + diff --git a/doc/draft-irtf-nmrg-sming-02.txt b/doc/draft-irtf-nmrg-sming-02.txt new file mode 100644 index 0000000..3d4f624 --- /dev/null +++ b/doc/draft-irtf-nmrg-sming-02.txt @@ -0,0 +1,5880 @@ + + +Network Working Group F. Strauss +Internet-Draft TU Braunschweig +Expires: August 15, 2000 February 15, 2000 + + + SMIng - A new Structure of Management Information + draft-irtf-nmrg-sming-02 + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as + Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months and may be updated, replaced, or obsoleted by other documents + at any time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To view the entire list of Internet-Draft Shadow Directories, see + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on August 15, 2000. + +Abstract + + This memo presents a language for management information + specifications. It eliminates known problems present in the current + SMIv2 as specified in [2], [3], and [4]. Language extensibility + features and a more efficient and programmer-friendly notation are + introduced. Conversions from SMIv2 to SMIng and vice versa are also + considered by this document. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 1] + +Internet-Draft SMIng February 2000 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . 6 + 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . 6 + 1.2 Relation to SNMP . . . . . . . . . . . . . . . . . . . . 6 + 2. The Information Model . . . . . . . . . . . . . . . . . 8 + 2.1 Identifiers . . . . . . . . . . . . . . . . . . . . . . 9 + 2.2 Object Identifier Hierarchy . . . . . . . . . . . . . . 10 + 2.3 Kinds of Nodes . . . . . . . . . . . . . . . . . . . . . 11 + 2.4 Scalar and Columnar Objects' Instances . . . . . . . . . 12 + 3. Base Types and Derived Types . . . . . . . . . . . . . . 15 + 3.1 OctetString . . . . . . . . . . . . . . . . . . . . . . 15 + 3.2 ObjectIdentifier . . . . . . . . . . . . . . . . . . . . 16 + 3.3 Integer32 . . . . . . . . . . . . . . . . . . . . . . . 17 + 3.4 Integer64 . . . . . . . . . . . . . . . . . . . . . . . 18 + 3.5 Unsigned32 . . . . . . . . . . . . . . . . . . . . . . . 18 + 3.6 Unsigned64 . . . . . . . . . . . . . . . . . . . . . . . 19 + 3.7 Float32 . . . . . . . . . . . . . . . . . . . . . . . . 20 + 3.8 Float64 . . . . . . . . . . . . . . . . . . . . . . . . 21 + 3.9 Float128 . . . . . . . . . . . . . . . . . . . . . . . . 22 + 3.10 Enumeration . . . . . . . . . . . . . . . . . . . . . . 23 + 3.11 Bits . . . . . . . . . . . . . . . . . . . . . . . . . . 23 + 3.12 Display Formats . . . . . . . . . . . . . . . . . . . . 24 + 4. The SMIng File Structure . . . . . . . . . . . . . . . . 27 + 4.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . 27 + 4.2 Statements and Arguments . . . . . . . . . . . . . . . . 27 + 5. The module Statement . . . . . . . . . . . . . . . . . . 28 + 5.1 The module's import Statement . . . . . . . . . . . . . 28 + 5.2 The module's organization Statement . . . . . . . . . . 29 + 5.3 The module's contact Statement . . . . . . . . . . . . . 29 + 5.4 The module's description Statement . . . . . . . . . . . 29 + 5.5 The module's reference Statement . . . . . . . . . . . . 29 + 5.6 The module's revision Statement . . . . . . . . . . . . 29 + 5.6.1 The revision's date Statement . . . . . . . . . . . . . 30 + 5.6.2 The revision's description Statement . . . . . . . . . . 30 + 5.7 The module's identity Statement . . . . . . . . . . . . 30 + 5.8 Usage Example . . . . . . . . . . . . . . . . . . . . . 30 + 6. The extension Statement . . . . . . . . . . . . . . . . 32 + 6.1 The extension's status Statement . . . . . . . . . . . . 32 + 6.2 The extension's description Statement . . . . . . . . . 32 + 6.3 The extension's reference Statement . . . . . . . . . . 32 + 6.4 The extension's abnf Statement . . . . . . . . . . . . . 33 + 7. The typedef Statement . . . . . . . . . . . . . . . . . 34 + 7.1 The typedef's type Statement . . . . . . . . . . . . . . 34 + 7.2 The typedef's default Statement . . . . . . . . . . . . 34 + 7.3 The typedef's format Statement . . . . . . . . . . . . . 34 + 7.4 The typedef's units Statement . . . . . . . . . . . . . 35 + 7.5 The typedef's status Statement . . . . . . . . . . . . . 35 + 7.6 The typedef's description Statement . . . . . . . . . . 36 + + +Strauss Expires August 15, 2000 [Page 2] + +Internet-Draft SMIng February 2000 + + + 7.7 The typedef's reference Statement . . . . . . . . . . . 36 + 7.8 Usage Examples . . . . . . . . . . . . . . . . . . . . . 36 + 8. The node Statement . . . . . . . . . . . . . . . . . . . 38 + 8.1 The node's oid Statement . . . . . . . . . . . . . . . . 38 + 8.2 The node's status Statement . . . . . . . . . . . . . . 38 + 8.3 The node's description Statement . . . . . . . . . . . . 38 + 8.4 The node's reference Statement . . . . . . . . . . . . . 38 + 8.5 Usage Examples . . . . . . . . . . . . . . . . . . . . . 39 + 9. The scalar Statement . . . . . . . . . . . . . . . . . . 40 + 9.1 The scalar's oid Statement . . . . . . . . . . . . . . . 40 + 9.2 The scalar's type Statement . . . . . . . . . . . . . . 40 + 9.3 The scalar's access Statement . . . . . . . . . . . . . 40 + 9.4 The scalar's default Statement . . . . . . . . . . . . . 40 + 9.5 The scalar's format Statement . . . . . . . . . . . . . 41 + 9.6 The scalar's units Statement . . . . . . . . . . . . . . 41 + 9.7 The scalar's status Statement . . . . . . . . . . . . . 41 + 9.8 The scalar's description Statement . . . . . . . . . . . 42 + 9.9 The scalar's reference Statement . . . . . . . . . . . . 42 + 9.10 Usage Examples . . . . . . . . . . . . . . . . . . . . . 42 + 10. The table Statement . . . . . . . . . . . . . . . . . . 43 + 10.1 The table's oid Statement . . . . . . . . . . . . . . . 43 + 10.2 The table's status Statement . . . . . . . . . . . . . . 43 + 10.3 The table's description Statement . . . . . . . . . . . 43 + 10.4 The table's reference Statement . . . . . . . . . . . . 43 + 10.5 The table's row Statement . . . . . . . . . . . . . . . 44 + 10.5.1 The row's oid Statement . . . . . . . . . . . . . . . . 44 + 10.5.2 Table Indexing Statements . . . . . . . . . . . . . . . 44 + 10.5.2.1 The row's index Statement for Table Indexing . . . . . . 44 + 10.5.2.2 The row's augments Statement for Table Indexing . . . . 44 + 10.5.2.3 The row's sparse Statement for Table Indexing . . . . . 45 + 10.5.2.4 The row's reorders Statement for Table Indexing . . . . 45 + 10.5.2.5 The row's expands Statement for Table Indexing . . . . . 46 + 10.5.3 The row's create Statement . . . . . . . . . . . . . . . 46 + 10.5.4 The row's status Statement . . . . . . . . . . . . . . . 46 + 10.5.5 The row's description Statement . . . . . . . . . . . . 46 + 10.5.6 The row's reference Statement . . . . . . . . . . . . . 47 + 10.6 The table row's column Statement . . . . . . . . . . . . 47 + 10.6.1 The column's oid Statement . . . . . . . . . . . . . . . 47 + 10.6.2 The column's type Statement . . . . . . . . . . . . . . 47 + 10.6.3 The column's access Statement . . . . . . . . . . . . . 47 + 10.6.4 The column's default Statement . . . . . . . . . . . . . 48 + 10.6.5 The column's format Statement . . . . . . . . . . . . . 48 + 10.6.6 The column's units Statement . . . . . . . . . . . . . . 48 + 10.6.7 The column's status Statement . . . . . . . . . . . . . 49 + 10.6.8 The column's description Statement . . . . . . . . . . . 49 + 10.6.9 The column's reference Statement . . . . . . . . . . . . 49 + 10.7 Usage Example . . . . . . . . . . . . . . . . . . . . . 49 + 11. The notification Statement . . . . . . . . . . . . . . . 52 + 11.1 The notification's oid Statement . . . . . . . . . . . . 52 + + +Strauss Expires August 15, 2000 [Page 3] + +Internet-Draft SMIng February 2000 + + + 11.2 The notification's objects Statement . . . . . . . . . . 52 + 11.3 The notification's status Statement . . . . . . . . . . 52 + 11.4 The notification's description Statement . . . . . . . . 53 + 11.5 The notification's reference Statement . . . . . . . . . 53 + 11.6 Usage Example . . . . . . . . . . . . . . . . . . . . . 53 + 12. The group Statement . . . . . . . . . . . . . . . . . . 54 + 12.1 The group's oid Statement . . . . . . . . . . . . . . . 54 + 12.2 The group's members Statement . . . . . . . . . . . . . 54 + 12.3 The group's status Statement . . . . . . . . . . . . . . 54 + 12.4 The group's description Statement . . . . . . . . . . . 54 + 12.5 The group's reference Statement . . . . . . . . . . . . 55 + 12.6 Usage Example . . . . . . . . . . . . . . . . . . . . . 55 + 13. The compliance Statement . . . . . . . . . . . . . . . . 56 + 13.1 The compliance's oid Statement . . . . . . . . . . . . . 56 + 13.2 The compliance's status Statement . . . . . . . . . . . 56 + 13.3 The compliance's description Statement . . . . . . . . . 56 + 13.4 The compliance's reference Statement . . . . . . . . . . 56 + 13.5 The compliance's mandatory Statement . . . . . . . . . . 56 + 13.6 The compliance's optional Statement . . . . . . . . . . 57 + 13.6.1 The optional's description Statement . . . . . . . . . . 57 + 13.7 The compliance's refine Statement . . . . . . . . . . . 57 + 13.7.1 The refine's type Statement . . . . . . . . . . . . . . 58 + 13.7.2 The refine's writetype Statement . . . . . . . . . . . . 58 + 13.7.3 The refine's access Statement . . . . . . . . . . . . . 58 + 13.7.4 The refine's description Statement . . . . . . . . . . . 58 + 13.8 Usage Example . . . . . . . . . . . . . . . . . . . . . 58 + 14. SMIng Core Modules . . . . . . . . . . . . . . . . . . . 60 + 14.1 IRTF-NMRG-SMING . . . . . . . . . . . . . . . . . . . . 60 + 14.2 IRTF-NMRG-SMING-TYPES . . . . . . . . . . . . . . . . . 61 + 14.3 IRTF-NMRG-SMING-EXTENSIONS . . . . . . . . . . . . . . . 80 + 15. Extending a Module . . . . . . . . . . . . . . . . . . . 83 + 16. SMIng Language Extensibility . . . . . . . . . . . . . . 85 + 17. Module Conversions . . . . . . . . . . . . . . . . . . . 87 + 17.1 Converting SMIv2 to SMIng . . . . . . . . . . . . . . . 87 + 17.2 Converting SMIng to SMIv2 . . . . . . . . . . . . . . . 87 + 17.3 SMIv1 . . . . . . . . . . . . . . . . . . . . . . . . . 87 + 18. Security Considerations . . . . . . . . . . . . . . . . 88 + 19. Acknowledgements . . . . . . . . . . . . . . . . . . . . 89 + References . . . . . . . . . . . . . . . . . . . . . . . 90 + Author's Address . . . . . . . . . . . . . . . . . . . . 91 + A. The SMIng ABNF grammar . . . . . . . . . . . . . . . . . 92 + B. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 104 + + + + + + + + + +Strauss Expires August 15, 2000 [Page 4] + +Internet-Draft SMIng February 2000 + + +1. Introduction + + Management information is viewed as a collection of managed objects, + residing in a virtual information store, termed the Management + Information Base (MIB). Collections of related objects are defined + in MIB modules. These modules are written conforming to a + specification language, the Structure of Management Information + (SMI). There are different versions of the SMI. SMIv1 [5], [6], [7] + and SMIv2 [2], [3], [4] are based on adapted subsets of OSI's + Abstract Syntax Notation One, ASN.1 [9]. It is the purpose of this + document to define a successor of SMIv1 and SMIv2, the SMIng, in a + self-contained way independent from other standardization bodies' + documents. + + Section 2 gives an overview of some basic concepts of the + information model while the subsequent sections present the concepts + of SMIng: the base types, the SMIng file structure, and all SMIng + statements in detail. Section 14 contains three core modules that + are part of the SMIng specification. Section 15 lists rules to + follow when changes are applied to a module. One flexible feature of + SMIng is its extensibility which is described in Section 16. + Finally, Section 17 discusses conversions of SMIv2 modules to SMIng + and vice versa. Appendix A contains the grammar of SMIng in ABNF + [8] notation. + +1.1 Terminology + + Many terms in SMIv1 and SMIv2 are derived from ASN.1. In some cases, + SMIv1/v2 uses different terms for equal or similar language items + without precise definitions. Appendix B presents a glossary of terms + used throughout this document and in related SMIng documents. Also + refer to the glossary and Appendix A to get detailed information on + the syntax of single language items where not explained in place. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [1]. + +1.2 Relation to SNMP + + Although SMIng is primarily intended to be applied to the SNMP + management framework [10], SMIng is designed to have as few + relations to a specific management protocol as possible. However, + there are some implications of SNMP on SMIv2 that have to be + retained in SMIng: + + o In SNMP the last item on a list of objects used to identify a + table row can be encoded without an explicit length encoding. + This has to be expressed by the SMIng `implied' keyword. See + + +Strauss Expires August 15, 2000 [Page 5] + +Internet-Draft SMIng February 2000 + + + Section 10.5 for details. + + o SNMP allows to distinguish several related types "on the wire" + while SMIng has a minimal but complete set of base types. To + keep SMIng compatible with the SNMP framework, additional types + derived from SMIng base types are defined in the standard SMIng + module IRTF-NMRG-SMING-TYPES (Section 14.2). + + o The encoding of values of type `Bits' in SNMP is dependent on + their named number values. It is RECOMMENDED that they start at 0 + and be numbered contiguously to allow a compact encoding for use + with SNMP. + + o SNMP implies some restrictions on indexing columnar objects: + Those columns that are used for indexing have to be defined as + non-accessible auxiliary objects, with two exceptions. Hence, the + access level `noaccess' has to be retained in SMIng. + + o In order to achieve compatibility with SNMPv1 traps, the next to + last sub-identifier of notification object identifiers SHOULD + have the value zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 6] + +Internet-Draft SMIng February 2000 + + +2. The Information Model + + Internet management is based on the model of "managed objects". A + managed object represents a class of any real or synthesized + variable of systems that are to be managed. Those objects are + organized hierarchically in an "object identifier tree", where only + leaf nodes may represent objects. + + Nodes may also identify tables, row definitions of tables, + notifications, groups of objects and/or notifications, compliance + statements, modules or other information. Each node is identified + by an unique "object identifier" value which is an ordered list of + non-negative numbers, named "sub-identifiers", where the left-most + sub-identifier refers to the node next to the root of the tree and + the right-most sub-identifier refers to the node that is identified + by the complete object identifier. + + The SMI in general, and SMIng in particular, is the information + model used to define and organize the structure of managed objects + and related information. Thus, SMIng describes a language designed + to specify management information in a way readable to computer + programs, named MIB compilers, as well as to human readers. + + Related management information is defined in MIB modules. A module + may refer to definitions from other modules by importing identifiers + from those modules. Each module may serve one or multiple purposes: + + o the definition of inter-related managed objects, notifications + and groups of them, + + o the definition of (restricted) types for use in the local module + or in other modules, + + o the definition of compliance statements for groups of objects and + notifications to guide agent implementors in what they have to + serve or implementors of management applications in what they can + expect, + + o the definition of SMIng extensions to allow the local module or + other modules to specify information beyond the scope of the base + SMIng in a machine readable notation, + + o the definition of information beyond the scope of the base SMIng + statements, based on locally defined or imported SMIng + extensions, like capability statements for agent implementations. + + This classification scheme does not imply a rigid taxonomy. For + example, a "standard" module will normally include definitions of + managed objects and a compliance statement. Similarly, an + + +Strauss Expires August 15, 2000 [Page 7] + +Internet-Draft SMIng February 2000 + + + "enterprise-specific" module might include definitions of managed + objects and a capability statement based on an extension. Of course, + a "standard" module may not contain capability statements. + + Each module is identified by an upper-case identifier. The names of + all standard modules must be unique (but different versions of the + same module should have the same name). Developers of enterprise + modules are encouraged to choose names for their modules that will + have a low probability of colliding with standard or other + enterprise modules, e.g. by using the enterprise or organization + name as a prefix. + +2.1 Identifiers + + Identifiers are used to identify different kinds of SMIng items by + name. These names are valid in a namespace which is dependent on the + SMIng item. Those items are + + o modules (Section 5), whose namespace is the global range of all + SMIng definitions, + + o defined data types (Section 7), whose namespace is the local + module where the type is defined, + + o elements of enumeration and bitset types (Section 3.10, Section + 3.11), whose namespace is the related type definition construct + and all constructs using that type, + + o object identifier tree nodes of different kinds (Section 5, and + Section 8 through Section 13), whose namespace is the local + module where the node is defined, and + + o SMIng extension statements (Section 6), whose namespace is the + local module where the extension is defined. + + Each identifier starts with an upper-case or lower-case character, + dependent on the kind of SMIng item, followed by zero or more + letters, digits, and hyphens. + + For all identifiers of a single kind of item defined in a namespace, + the identifier MUST be unique and SHOULD NOT only differ in case. + Identifiers MUST NOT exceed 64 characters in length. Furthermore, + the set of all identifiers defined in all modules of a single + standardization body or organization SHOULD be unique and mnemonic. + This promotes a common language for humans to use when discussing a + module. + + To reference an item that is defined in the local module, its + definition MUST sequentially precede the reference. Thus, there MUST + + +Strauss Expires August 15, 2000 [Page 8] + +Internet-Draft SMIng February 2000 + + + NOT be any forward references, except in two cases: + + 1. The optional module's `identity' statement, which is located + near the head of a module, specifies an identity node, which is + defined in a subsequent section of the local module. + + 2. The specification of table indexing objects in a table row may + include objects that cannot be defined without the definition of + the current table row. Hence table indexing statements are + allowed to include forward references. + + To reference an item, that is defined in an external module it MUST + be imported into the local module's namespace (Section 5.1). + Identifiers that are neither defined nor imported MUST NOT be + visible in the local module. On the other hand, all items defined in + a module are implicitly exported. + + Note when identifiers from external modules are referenced, there is + the possibility of name collisions. As such, if different items with + the same identifier are imported or if imported identifiers collide + with identifiers of locally defined items, then this ambiguity is + resolved by prefixing those identifiers with the names of their + modules and the namespace operator `::', i.e. `Module::item'. Of + course, this notation can be used to refer to identifiers even when + there is no name collision. + + Note that SMIng language keywords MUST NOT be imported. The main set + of keywords are SMIng statements and base types. See the + `...Keyword' rules of the SMIng ABNF grammar in Appendix A for a + list of those keywords. + + Finally, by convention, if the identifier refers to an object with a + counter type (Counter32 or Counter64, derived from Unsigned32 and + Unsigned64) then the identifier used for the object SHOULD denote + plurality. + +2.2 Object Identifier Hierarchy + + The layers of the object identifier tree near the root are well + defined and organized by standardization bodies. The first level + next to the root has three nodes: + + 0: ccitt + + 1: iso + + 2: joint-iso-ccitt + + Note that the renaming of the Commite Consultatif International de + + +Strauss Expires August 15, 2000 [Page 9] + +Internet-Draft SMIng February 2000 + + + Telegraphique et Telephonique (CCITT) to International + Telecommunications Union (ITU) had no consequence on the names used + in the object identifier tree. + + The root of the subtree administered by the Internet Assigned + Numbers Authority (IANA) for the Internet is `1.3.6.1' which is + assigned with the identifier `internet'. That is, the Internet + subtree of object identifiers starts with the prefix `1.3.6.1.'. + + Several branches underneath this subtree are used for network + management: + + The `mgmt' (internet.2) subtree is used to identify "standard" + information. + + The `experimental' (internet.3) subtree is used to identify + information being designed by working groups of the IETF or IRTF. If + a module produced by a working group becomes a "standard" module + then at the very beginning of its entry onto the Internet standards + track, the information is moved under the mgmt subtree. + + The `private' (internet.4) subtree is used to identify information + defined unilaterally. The `enterprises' (private.1) subtree beneath + private is used, among other things, to permit providers of + networking subsystems to register models of their products. + + These and some other nodes are defined in the SMIng standard module + IRTF-NMRG-SMING (Section 14.1). + +2.3 Kinds of Nodes + + Each node in the object identifier tree may be of a single kind + which may represent management information or not: + + o simple nodes, that do not represent management information, but + may be used for grouping nodes in a subtree, + + o nodes representing the identity of a module to allow references + to a module in other objects of type `ObjectIdentifier', + + o scalar objects, which have zero or one object instance and no + child nodes. See Section 2.4 for scalar objects' instances, + + o tables, which represent the root node of a collection of + information structured in table rows. A table node SHOULD have no + more child nodes than the single row node of this table, + + o rows, which belong to a table (that is, the table's full object + identifier is a prefix of the row's object identifier) and + + +Strauss Expires August 15, 2000 [Page 10] + +Internet-Draft SMIng February 2000 + + + represent a sequence of one or more columnar objects. Those + columnar objects MUST be the only child nodes of a table row. A + row's object identifier MUST be constructed by appending a `1' + sub-identifier to the table's object identifier, + + o columnar objects, which belong to a row (that is, the row's full + object identifier is a prefix of the columnar objects' object + identifier) and have zero or more object instances and no child + nodes. Each columnar object's object identifier MUST be + constructed by appending a single sub-identifier to the row's + object identifier. See Section 2.4 for columnar objects' + instances, + + o notifications, which represent information that is sent by agents + within unsolicited transmissions. A notification's object + identifier SHOULD not have any child node, + + o groups of objects and notifications, which may be used for + compliance statements or other purposes, + + o compliance statements which define requirements for MIB module + implementations, + + o other nodes, that may be used to identify arbitrary information. + +2.4 Scalar and Columnar Objects' Instances + + Instances of managed objects are identified by appending an + instance-identifier to the object's object identifier. Scalar + objects and columnar objects use different ways to construct the + instance-identifier. + + Scalar objects have zero or one object instance. If it exists, it is + identified by appending a single `0' sub-identifier to the object + identifier of the scalar object. + + Within tables, different instances of the same columnar object are + identified by appending a sequence of one or more sub-identifiers to + the object identifier of the columnar object which consists of the + values of object instances that unambiguously distinguish a table + row. These indexing objects can be columnar objects of the same + and/or another table, but MUST NOT be scalar objects. Multiple + applications of the same object in a single table indexing + specification are strongly discouraged. + + The base types (Section 3) of the indexing objects indicate how to + form the instance-identifier: + + o integer-valued or enumeration-valued: a single sub-identifier + + +Strauss Expires August 15, 2000 [Page 11] + +Internet-Draft SMIng February 2000 + + + taking the integer value (this works only for non-negative + integers and integers of a size of up to 32 bits), + + o string-valued, fixed-length strings (or variable-length with + compact encoding): `n' sub-identifiers, where `n' is the length + of the string (each octet of the string is encoded in a separate + sub-identifier), + + o string-valued, variable-length strings or bits-valued: `n+1' + sub-identifiers, where `n' is the length of the string or bits + encoding (the first sub-identifier is `n' itself, following this, + each octet of the string or bits is encoded in a separate + sub-identifier), + + o object identifier-valued (with compact encoding): `n' + sub-identifiers, where `n' is the number of sub-identifiers in + the value (each sub-identifier of the value is copied into a + separate sub-identifier), + + o object identifier-valued: `n+1' sub-identifiers, where `n' is the + number of sub-identifiers in the value (the first sub-identifier + is `n' itself, following this, each sub-identifier in the value + is copied), + + Note that compact encoding can only be applied to an object having a + variable-length syntax (e.g., variable-length strings, bits objects + or object identifier-valued objects). Further, compact encoding can + only be associated with the last object in a list of indexing + objects. Finally, compact encoding MUST NOT be used on a + variable-length string object if that string might have a value of + zero-length. + + Instances identified by use of integer-valued or enumeration-valued + objects are RECOMMENDED to be numbered starting from one (i.e., not + from zero). Integer objects that allow negative values, Unsigned64 + objects, Integer64 objects and floating point objects MUST NOT be + used for table indexing. + + Objects which are both specified for indexing in a row and also + columnar objects of the same row are termed auxiliary objects. + Auxiliary objects SHOULD be non-accessible, except in the following + circumstances: + + o within a MIB module originally written to conform to SMIv1, or + + o a row must contain at least one columnar object which is not an + auxiliary object. In the event that all of a row's columnar + objects are also specified to be indexing objects then one of + them MUST be accessible. (Note that this situation does not arise + + +Strauss Expires August 15, 2000 [Page 12] + +Internet-Draft SMIng February 2000 + + + for a row allowing create access, since such a row will have a + status column which will not be an auxiliary object.) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 13] + +Internet-Draft SMIng February 2000 + + +3. Base Types and Derived Types + + SMIng has a minimal but complete set of base types, similar to those + of many programming languages, but with some differences due to + special requirements from the management information model described + in Section 2. + + Additional types may be defined, derived from those base types and + even from other derived types. Derived types may use subtyping to + formally restrict the possible values. A set of derived types + commonly used in the SNMP framework is defined in the SMIng standard + module IRTF-NMRG-SMING-TYPES (Section 14.2). + + Note that types can also be restricted "inline" in object + definitions (Section 9, Section 10.6) or in refinements of + compliance statements (Section 13) without referring an explicitly + defined type. + + The different base types and its derived types allow different kinds + of subtyping, namely size restrictions and range restrictions. See + the following sections on base types (Section 3.1 through Section + 3.11) for details. + +3.1 OctetString + + The OctetString base type represents arbitrary binary or textual + data. Although SMIng has a theoretical size limitation of 2^32-1 + (4294967295) octets for this base type, MIB designers should realize + that there may be implementation and interoperability limitations + for sizes in excess of 255 octets. + + Values of octet strings may be denoted as textual data enclosed in + double quotes or as arbitrary binary data denoted as a `0x'-prefixed + hexadecimal value of arbitrary but even length, where each pair of + hexadecimal digits represents a single octet. Letters in hexadecimal + values MAY be upper-case but lower-case characters are RECOMMENDED. + Textual data may contain any number (possibly zero) of any 7-bit + displayable ASCII characters except double quote `"', including tab + characters, spaces and line terminator characters (nl or cr & nl). + Textual data may span multiple lines, where each subsequent line + prefix containing only white space up to the column where the first + line's data starts SHOULD be skipped by parsers for a better text + formatting. + + When defining a type derived (directly or indirectly) from the + OctetString base type, the size in octets may be restricted by + appending a list of size ranges or explicit size values, separated + by pipe `|' characters and the whole list enclosed in parenthesis. A + size range consists of a lower bound, two consecutive dots `..' and + + +Strauss Expires August 15, 2000 [Page 14] + +Internet-Draft SMIng February 2000 + + + an upper bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. Of course, size restricting values MUST NOT be + negative. If multiple values or ranges are given, they all MUST be + disjunct and SHOULD be in ascending order. If a size restriction is + applied to an already size restricted octet string the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative size choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + "This is a multiline + textual data example." // legal + "This is "illegally" quoted." // illegal quotes + "But this is 'ok'." // legal apostrophe quoting + "" // legal zero length + 0x123 // illegal odd hex length + 0x534d496e670a // legal octet string + + Restriction Examples: + + OctetString (0 | 4..255) // legal size spec + OctetString (4) // legal exact size + OctetString (-1 | 1) // illegal negative size + OctetString (1 | 1..10) // illegal overlapping + +3.2 ObjectIdentifier + + The ObjectIdentifier base type represents any object identifier + value, which is a list of up to 128 numbers, named sub-identifiers. + Each sub-identifier has a value between 0 and 2^32-1 (4294967295). + + Values of object identifiers may be denoted as a sequence of + numerical sub-identifier values (decimal or `0x'-prefixed + hexadecimal) separated by single dots and without any intermediate + white space. Alternatively (and preferred in most cases), the first + element may be a previously defined or imported lower-case + identifier, representing a static object identifier prefix while the + total number of sub-identifiers MUST NOT exceed 128 including the + expanded identifier. + + Object identifier derived types cannot be restricted in any way. + + Value Examples: + + + + + + + +Strauss Expires August 15, 2000 [Page 15] + +Internet-Draft SMIng February 2000 + + + 0 // legal single subid + 1.3.6.1 // legal numerical oid + mib-2.1 // legal oid with identifier prefix + internet.4.1.0x0627.0x01 // legal oid with hex subids + iso.-1 // illegal negative subid + iso.org.6 // illegal non-heading identifier + IF-MIB::ifNumber.0 // legel fully quallified instance oid + +3.3 Integer32 + + The Integer32 base type represents integer values between -2^31 + (-2147483648) and 2^31-1 (2147483647). + + Values of type Integer32 may be denoted as decimal or hexadecimal + numbers, where only decimal numbers can be negative. Other decimal + numbers than zero MUST NOT have leading zero digits. Hexadecimal + numbers are prefixed by `0x' and MUST have an even number of + hexadecimal digits, where letters MAY be upper-case but lower-case + characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Integer32 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // legal negative value + - 1 // illegal intermediate space + 0xabc // illegal hexadecimal value length + -0xff // illegal sign on hex value + 0x80000000 // illegal value, too large + 0xf00f // legal hexadecimal value + + Restriction Examples: + + Integer32 (0 | 5..10) // legal range spec + Integer32 (4..8 | 5..10) // illegal overlapping + + + + +Strauss Expires August 15, 2000 [Page 16] + +Internet-Draft SMIng February 2000 + + +3.4 Integer64 + + The Integer64 base type represents integer values between -2^63 + (-9223372036854775808) and 2^63-1 (9223372036854775807). + + Values of type Integer64 may be denoted as decimal or hexadecimal + numbers, where only decimal numbers can be negative. Other decimal + numbers than zero MUST NOT have leading zero digits. Hexadecimal + numbers are prefixed by `0x' and MUST have an even number of + hexadecimal digits, where letters MAY be upper-case but lower-case + characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Integer64 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // legal negative value + - 1 // illegal intermediate space + 0xabc // illegal hexadecimal value length + -0xff // illegal sign on hex value + 0x80000000 // legal value + + Restriction Examples: + + Integer64 (0 | 5..10) // legal range spec + Integer64 (4..8 | 5..10) // illegal overlapping + +3.5 Unsigned32 + + The Unsigned32 base type represents positive integer values between + 0 and 2^32-1 (4294967295). + + Values of type Unsigned32 may be denoted as decimal or hexadecimal + numbers. Other decimal numbers than zero MUST NOT have leading zero + digits. Hexadecimal numbers are prefixed by `0x' and MUST have an + even number of hexadecimal digits, where letters MAY be upper-case + but lower-case characters are RECOMMENDED. + + +Strauss Expires August 15, 2000 [Page 17] + +Internet-Draft SMIng February 2000 + + + When defining a type derived (directly or indirectly) from the + Unsigned32 base type, the set of possible values may be restricted + by appending a list of ranges or explicit values, separated by pipe + `|' characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // illegal negative value + 0xabc // illegal hexadecimal value length + 0x80000000 // legal hexadecimal value + 0x8080000000 // illegal value, too large]]> + + Restriction Examples: + + Unsigned32 (0 | 5..10) // legal range spec + Unsigned32 (4..8 | 5..10) // illegal overlapping + +3.6 Unsigned64 + + The Unsigned64 base type represents positive integer values between + 0 and 2^64-1 (18446744073709551615). + + Values of type Unsigned64 may be denoted as decimal or hexadecimal + numbers. Other decimal numbers than zero MUST NOT have leading zero + digits. Hexadecimal numbers are prefixed by `0x' and MUST have an + even number of hexadecimal digits, where letters MAY be upper-case + but lower-case characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Unsigned64 base type, the set of possible values may be restricted + by appending a list of ranges or explicit values, separated by pipe + `|' characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + +Strauss Expires August 15, 2000 [Page 18] + +Internet-Draft SMIng February 2000 + + + Value Examples: + + 015 // illegal leading zero + -123 // illegal negative value + 0xabc // illegal hexadecimal value length + 0x8080000000 // legal hexadecimal value + + Restriction Examples: + + Unsigned64 (1..10000000000) // legal range spec + +3.7 Float32 + + The Float32 base type represents floating point values of single + precision as described by [11]. + + Values of type Float32 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float32 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float32. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + +Strauss Expires August 15, 2000 [Page 19] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float32 (-1.0..1.0) // legal range spec + Float32 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float32 (-10.0..10.0 | 0) // illegal overlapping + +3.8 Float64 + + The Float64 base type represents floating point values of double + precision as described by [11]. + + Values of type Float64 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float64 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. If 0.0 is included, -0.0 will also be. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float64. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + + +Strauss Expires August 15, 2000 [Page 20] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float64 (-1.0..1.0) // legal range spec + Float64 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float64 (-10.0..10.0 | 0) // illegal overlapping + +3.9 Float128 + + The Float128 base type represents floating point values of quadruple + precision as described by [11]. + + Values of type Float128 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float128 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. If 0.0 is included, -0.0 will also be. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float128. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + + +Strauss Expires August 15, 2000 [Page 21] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float128 (-1.0..1.0) // legal range spec + Float128 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float128 (-10.0..10.0 | 0) // illegal overlapping + +3.10 Enumeration + + The Enumeration base type represents values from a set of integers + in the range between -2^31 (-2147483648) and 2^31-1 (2147483647), + where each value has an assigned name. The list of those named + numbers has to be comma-separated, enclosed in parenthesis and + appended to the `Enumeration' keyword. Each named number is denoted + by its lower-case identifier followed by the assigned integer value, + denoted as a decimal or `0x'-prefixed hexadecimal number, enclosed + in parenthesis. Every name and every number in an enumeration type + MUST be unique. It is RECOMMENDED that values start at 1 and be + numbered contiguously. + + Values of enumeration types may be denoted as decimal or + `0x'-prefixed hexadecimal numbers or preferably as their assigned + names. + + When defining a type derived (directly or indirectly) from an + enumeration type, the set of named numbers may be restricted by + removing one or more named numbers. But no named numbers may be + added or changed regarding its name, value, or both. + + Type and Value Examples: + + Enumeration (up(1), down(2), testing(3)) + + 0 // illegal, value 0 out of range + up // legal value given by name + 2 // legal value given by number + +3.11 Bits + + The Bits base type represents bit sets. That is, a Bits value is a + set of flags identified by small integer numbers starting at 0. + Each bit number has an assigned name. The list of those named + numbers has to be comma-separated, enclosed in parenthesis and + appended to the `Bits' keyword. Each named number is denoted by its + lower-case identifier followed by the assigned integer value, + denoted as a decimal or `0x'-prefixed hexadecimal number, enclosed + + +Strauss Expires August 15, 2000 [Page 22] + +Internet-Draft SMIng February 2000 + + + in parenthesis. Every name and every number in a bits type MUST be + unique. It is RECOMMENDED that numbers start at 0 and be numbered + contiguously. + + Values of bits types may be denoted as a comma-separated list of + decimal or `0x'-prefixed hexadecimal numbers or preferably their + assigned names enclosed in parenthesis. There MUST NOT be any + element (by name or number) listed more than once. It is RECOMMENDED + to list elements in ascending order, although the order is + semantically irrelevant. + + When defining a type derived (directly or indirectly) from a bits + type, the set of named numbers may be restricted by removing one or + more named numbers. But no named numbers may be added or changed + regarding its name, value, or both. + + Type and Value Examples: + + Bits (readable(0), writeable(1), executable(2)) + + () // legal empty value + (readable, writeable, 2) // legal value + (0, readable, executable) // illegal, readable(0) appears twice + (writeable, 4) // illegal, element 4 out of range + +3.12 Display Formats + + Some SMIng definitions, namely scalar and columnar object + definitions and type definitions, allow the specification of a + format to be used, when a value of that object or an object of that + type is displayed. Format specifications are represented as textual + data. + + When the object or type has an underlying base type of Integer32, + Integer64, Unsigned32, or Unsigned64, the format consists of an + integer-format specification, containing two parts. The first part + is a single character suggesting a display format, either: `x' for + hexadecimal, or `d' for decimal, or `o' for octal, or `b' for + binary. For all types, when rendering the value, leading zeros are + omitted, and for negative values, a minus sign is rendered + immediately before the digits. The second part is always omitted + for `x', `o' and `b', and need not be present for `d'. If present, + the second part starts with a hyphen and is followed by a decimal + number, which defines the implied decimal point when rendering the + value. For example `d-2' suggests that a value of 1234 be rendered + as `12.34'. + + When the object or type has an underlying base type of OctetString, + the format consists of one or more octet-format specifications. + + +Strauss Expires August 15, 2000 [Page 23] + +Internet-Draft SMIng February 2000 + + + Each specification consists of five parts, with each part using and + removing zero or more of the next octets from the value and + producing the next zero or more characters to be displayed. The + octets within the value are processed in order of significance, most + significant first. + + The five parts of a octet-format specification are: + + 1. the (optional) repeat indicator; if present, this part is a `*', + and indicates that the current octet of the value is to be used + as the repeat count. The repeat count is an unsigned integer + (which may be zero) which specifies how many times the remainder + of this octet-format specification should be successively + applied. If the repeat indicator is not present, the repeat + count is one. + + 2. the octet length: one or more decimal digits specifying the + number of octets of the value to be used and formatted by this + octet-specification. Note that the octet length can be zero. + If less than this number of octets remain in the value, then the + lesser number of octets are used. + + 3. the display format, either: `x' for hexadecimal, `d' for + decimal, `o' for octal, `a' for ASCII, or `t' for UTF-8 [12]. If + the octet length part is greater than one, and the display + format part refers to a numeric format, then network + byte-ordering (big-endian encoding) is used interpreting the + octets in the value. The octets processed by the `t' display + format do not necessarily form an integral number of UTF-8 + characters. Trailing octets which do not form a valid UTF-8 + encoded character are discarded. + + 4. the (optional) display separator character; if present, this + part is a single character which is produced for display after + each application of this octet-specification; however, this + character is not produced for display if it would be immediately + followed by the display of the repeat terminator character for + this octet specification. This character can be any character + other than a decimal digit and a `*'. + + 5. the (optional) repeat terminator character, which can be present + only if the display separator character is present and this + octet specification begins with a repeat indicator; if present, + this part is a single character which is produced after all the + zero or more repeated applications (as given by the repeat + count) of this octet specification. This character can be any + character other than a decimal digit and a `*'. + + Output of a display separator character or a repeat terminator + + +Strauss Expires August 15, 2000 [Page 24] + +Internet-Draft SMIng February 2000 + + + character is suppressed if it would occur as the last character of + the display. + + If the octets of the value are exhausted before all the octet format + specification have been used, then the excess specifications are + ignored. If additional octets remain in the value after + interpreting all the octet format specifications, then the last + octet format specification is re-interpreted to process the + additional octets, until no octets remain in the value. + + Note that for some types (e.g. ObjectIdentifier) no format + specifications are defined and SHOULD be omitted. Implementations + MUST ignore format specifications they cannot interpret. Also note + that the SMIng grammar (Appendix A) does not specify the syntax of + format specifications. + + Display Format Examples: + + Base Type Format Example Value Rendered Value + ----------- ------------------- ---------------- ----------------- + OctetString 255a "Hello World." Hello World. + OctetString 1x: "Hello!" 48:65:6c:6c:6f:21 + OctetString 1d:1d:1d.1d,1a1d:1d 0x0d1e0f002d0400 13:30:15.0,-4:0 + OctetString 1d.1d.1d.1d/2d 0x0a0000010400 10.0.0.1/1024 + OctetString *1x:/1x: 0x02aabbccddee aa:bb/cc:dd:ee + Integer32 d-2 1234 12.34 + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 25] + +Internet-Draft SMIng February 2000 + + +4. The SMIng File Structure + + The topmost container of SMIng information is a file. An SMIng file + may contain zero, one or more modules. It is RECOMMENDED to separate + modules into files named by their modules, where possible. Though, + for dedicated purposes it may be reasonable to collect several + modules in a single file. + + The top level SMIng construct is the `module' statement (Section 5) + that defines a single MIB module. A module contains a sequence of + sections in an obligatory order with different kinds of definitions. + Whether these sections contain statements or remain empty mainly + depends on the purpose of the module (see Section 2). + +4.1 Comments + + Comments can be included at any position in an SMIng file, except in + between the characters of a single token like those of a quoted + strings. However, it is RECOMMENDED that all substantive + descriptions be placed within an appropriate description clause. + + Comments commence with a pair of adjacent slashes `//' and end at + the end of the line. + +4.2 Statements and Arguments + + SMIng has a very small set of basic grammar rules based on the + concept of statements. Each statement starts with a lower-case + keyword identifying the statement followed by a number (possibly + zero) of arguments. An argument may be quoted text, an identifier, a + value of any base type, a list of identifiers enclosed in + parenthesis `( )' or a statement block enclosed in curly braces `{ + }'. Since statement blocks are valid arguments, it is possible to + nest statement sequences. Each statement is terminated by a + semicolon `;'. + + The core set of statements may be extended using the SMIng + `extension' statement. See Section 6 and Section 16 for details. + + At places where a statement is expected, but an unknown lower-case + word is read, those statements MUST be skipped up to the proper + semicolon, including nested statement blocks. + + + + + + + + + +Strauss Expires August 15, 2000 [Page 26] + +Internet-Draft SMIng February 2000 + + +5. The module Statement + + The `module' statement is used as a container of all definitions of + a single SMIng MIB module. It gets two arguments: an upper-case + module name and a statement block that contains mandatory and + optional statements and sections of statements in an obligatory + order: + + module { + + + + + + + + + + + + + + + + + + + + + + }; + + The optional `import' statements are followed by the mandatory + `organization', `contact', and `description' statements and the + optional `reference' statement, which in turn are followed by the + mandatory `revision' statements. This part defines the module's meta + information while the following sections contain its main + definitions. + + See the `moduleStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `module' statement. + +5.1 The module's import Statement + + The optional module's `import' statement is used to import + descriptors from external modules into the local module's namespace. + It gets two arguments: the name of the external module and a + comma-separated list of one or more identifiers to be imported + enclosed in parenthesis. + + +Strauss Expires August 15, 2000 [Page 27] + +Internet-Draft SMIng February 2000 + + + Multiple `import' statements for the same module but with disjunct + lists of identifiers are allowed, though NOT RECOMMENDED. Anyhow, + the same identifier from the same module MUST NOT be imported + multiple times. To import identifiers with the same name from + different modules might be necessary and is allowed. To distinguish + them in the local module, they have to be referred by qualified + names. It is NOT RECOMMENDED to import identifiers not used in the + local module. + + See the `importStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `import' statement. + +5.2 The module's organization Statement + + The module's `organization' statement, which must be present, gets + one argument which is used to specify a textual description of the + organization(s) under whose auspices this module was developed. + +5.3 The module's contact Statement + + The module's `contact' statement, which must be present, gets one + argument which is used to specify the name, postal address, + telephone number, and electronic mail address of the person to whom + technical queries concerning this revision of this module should be + sent. + +5.4 The module's description Statement + + The module's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the contents of this module. + +5.5 The module's reference Statement + + The module's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + management information, or some other document which provides + additional information relevant to this module. + +5.6 The module's revision Statement + + The module's `revision' statement is repeatedly used to specify the + editorial revisions of the module, including the initial revision. + It gets one argument which is a statement block that holds detailed + information in an obligatory order. A module MUST have at least one + initial `revision' statement. For every editorial change, a new one + MUST be added in front of the revisions sequence, so that all + revisions are in reverse chronological order. + + +Strauss Expires August 15, 2000 [Page 28] + +Internet-Draft SMIng February 2000 + + + See the `revisionStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `revision' statement. + +5.6.1 The revision's date Statement + + The revision's `date' statement, which must be present, gets one + argument which is used to specify the date and time of the revision + in the format `YYYY-MM-DD HH:MM' or `YYYY-MM-DD' which implies the + time `00:00'. The time is always given in UTC. + + See the `date' rule of the SMIng grammar (Appendix A) for the formal + syntax of the revision's `date' statement. + +5.6.2 The revision's description Statement + + The revision's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the revision. + +5.7 The module's identity Statement + + The module's `identity' statement, which need not be present, gets + one argument which specifies a node identifier within the local + module, so that the object identifier of this node can be used to + identify the module. + +5.8 Usage Example + + Consider how a skeletal MIB module might be constructed: e.g., + + module FIZBIN-MIB { + + import IRTF-NMRG-SMING (experimental); + + organization + "IETF SNMPv2 Working Group, + IRTF Network Management Research Group (NMRG)"; + + contact + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + DE + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + + +Strauss Expires August 15, 2000 [Page 29] + +Internet-Draft SMIng February 2000 + + + description + "The MIB module for entities implementing + the xxxx protocol."; + + reference + "RFC 2578, Section 5.7."; + + revision { + date "1999-09-28"; + description + "Conversion from SMIv2 to SMIng."; + }; + revision { + date "1995-05-24 18:11"; + description + "Revision for RFC 1902."; + }; + revision { + date "1992-10-07 04:33"; + description + "The initial version of this MIB module, + published in RFC 1442."; + }; + + identity fizbin; + + // ... further definitions ... + + }; // end of module FIZBIN-MIB. + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 30] + +Internet-Draft SMIng February 2000 + + +6. The extension Statement + + The `extension' statement is used to define new statements to be + used in the local module following this extension statement + definition or in external modules that may import this extension + statement definition. The `extension' statement gets two arguments: + a lower-case extension statement identifier and a statement block + that holds detailed extension information in an obligatory order. + + Extension statement identifiers SHOULD NOT contain any upper-case + characters or hyphens. + + Note that the SMIng extension feature does not allow to formally + specify the context, argument syntax and semantics of an extension. + Its only purpose is to declare the existence of an extension and to + allow a unique reference to an extension. See Section 16 for + detailed information on extensions and Section 14.3 for a common + example, the `agentcaps' extension. + + See the `extensionStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `extension' statement. + +6.1 The extension's status Statement + + The extension's `status' statement, which need not be present, gets + one argument which is used to specify whether this extension + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + If the `status' statement is omitted, the status value `current' is + implied. + +6.2 The extension's description Statement + + The extension's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the extension statement. + + It is RECOMMENDED to include information on the extension's context, + its semantics, and implementation conditions. See also Section 16. + +6.3 The extension's reference Statement + + The extension's `reference' statement, which need not be present, + + +Strauss Expires August 15, 2000 [Page 31] + +Internet-Draft SMIng February 2000 + + + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + extension definitions, or some other document which provides + additional information relevant to this extension. + +6.4 The extension's abnf Statement + + The extension's `abnf' statement, which need not be present, gets + one argument which is used to specify a formal ABNF [8] grammar + definition of the extension. + + Note that the `abnf' statement should contain only pure ABNF and no + additional text, though comments prefixed by semicolon are allowed + but should probably be moved to the description statement. Note also + that double quotes are not allowed inside textual descriptions which + are itself enclosed in double quotes. So they have to be replaced by + single quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 32] + +Internet-Draft SMIng February 2000 + + +7. The typedef Statement + + The `typedef' statement is used to define new data types to be used + in the local module or in external modules. It gets two arguments: + an upper-case type identifier and a statement block that holds + detailed type information in an obligatory order. + + Type identifiers SHOULD NOT consist of all upper-case characters and + SHOULD NOT contain hyphens. + + See the `typedefStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `typedef' statement. + +7.1 The typedef's type Statement + + The typedef's `type' statement, which must be present, gets one + argument which is used to specify the type from which this type is + derived. Optionally, type restrictions may be applied to the new + type by appending subtyping information according to the rules of + the base type. See Section 3 for SMIng base types and their type + restrictions. + +7.2 The typedef's default Statement + + The typedef's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for objects of this type. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the typedef's `type' + statement. + + The default value of a type may be overwritten by a default value of + an object of this type. + + Note that for some types, default values make no sense, e.g. + IRTF-NMRG-SMING-TYPES::Counter32. + +7.3 The typedef's format Statement + + The typedef's `format' statement, which need not be present, gets + one argument which is used to give a hint as to how the value of an + instance of an object of this type might be displayed. See Section + 3.12 for a description of format specifications. + + If no format is specified, it is inherited from the type given in + the `type' statement. On the other hand, the format specification + + +Strauss Expires August 15, 2000 [Page 33] + +Internet-Draft SMIng February 2000 + + + of a type may be overwritten by a format specification of an object + of this type. + +7.4 The typedef's units Statement + + The typedef's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with objects of this type. + + If no units are specified, they are inherited from the type given in + the `type' statement. On the other hand, the units specification of + a type may be overwritten by a units specification of an object of + this type. + + The units specification has to be appropriate for values displayed + according to the typedef's format specification, if present. E.g., + if the type defines frequency values of type Unsigned64 measured in + thousands of Hertz, the format specification should be `d-3' and the + units specification should be `Hertz' or `Hz'. If the format + specification would be omitted, the units specification should be + `Milli-Hertz' or `mHz'. MIB Authors should pay attention to keep + format and units specifications of type and object definitions + synced. Application implementors MUST NOT implement units + specifications without implementing format specifications. + +7.5 The typedef's status Statement + + The typedef's `status' statement, which need not be present, gets + one argument which is used to specify whether this type definition + is current or historic. The value `current' means that the + definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + Derived types SHOULD NOT be defined as `current' if their underlying + type is `deprecated' or `obsolete'. Similarly, they SHOULD NOT be + defined as `deprecated' if their underlying type is `obsolete'. + Nevertheless, subsequent revisions of the underlying type cannot be + avoided, but SHOULD be taken into account in subsequent revisions of + the local module. + + If the `status' statement is omitted, the status value `current' is + implied. + + + + + +Strauss Expires August 15, 2000 [Page 34] + +Internet-Draft SMIng February 2000 + + +7.6 The typedef's description Statement + + The typedef's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the newly defined type. + + It is RECOMMENDED to include all semantic definitions necessary for + implementation, and to embody any information which would otherwise + be communicated in any commentary annotations associated with this + type definition. + +7.7 The typedef's reference Statement + + The typedef's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + type definitions, or some other document which provides additional + information relevant to this type definition. + +7.8 Usage Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 35] + +Internet-Draft SMIng February 2000 + + + typedef RptrOperStatus { + type Enumeration (other(1), ok(2), rptrFailure(3), + groupFailure(4), portFailure(5), + generalFailure(6)); + default other; // undefined by default. + status deprecated; + description + "A type to indicate the operational state + of a repeater."; + reference + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState."; + }; + + typedef DateAndTime { + type OctetString (8 | 11); + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + status current; // could be omitted + description + "A date-time specification. + ... + Note that if only local time is known, then timezone + information (fields 8-10) is not present."; + reference + "RFC 2579, SNMPv2-TC.DateAndTime."; + }; + + typedef Frequency { + type Unsigned64; + format "d-3" + units "Hertz"; + description + "A wide-range frequency specification measured + in thousands of Hertz."; + }; + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 36] + +Internet-Draft SMIng February 2000 + + +8. The node Statement + + The `node' statement is used to name and describe a node in the + object identifier tree, without associating object information with + this node. This may be useful to group definitions in a subtree of + related management information, or to uniquely define an identity of + arbitrary kind to be referenced in objects of type ObjectIdentifier. + The `node' statement gets two arguments: a lower-case node + identifier and a statement block that holds detailed node + information in an obligatory order. + + See the `nodeStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `node' statement. + +8.1 The node's oid Statement + + The node's `oid' statement, which must be present, gets one argument + which specifies the object identifier value that is assigned to this + node. + +8.2 The node's status Statement + + The node's `status' statement, which need not be present, gets one + argument which is used to specify whether this node definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted, the status value `current' is + implied. + +8.3 The node's description Statement + + The node's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this node. + + It is RECOMMENDED to include all semantics and purposes of this + node. + +8.4 The node's reference Statement + + The node's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + + +Strauss Expires August 15, 2000 [Page 37] + +Internet-Draft SMIng February 2000 + + + nodes, or some other document which provides additional information + relevant to this node. + +8.5 Usage Examples + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + reference "RFC 2578, 2. Definitions."; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 38] + +Internet-Draft SMIng February 2000 + + +9. The scalar Statement + + The `scalar' statement is used to define a scalar managed object. + The `scalar' statement gets two arguments: a lower-case scalar + identifier and a statement block that holds detailed object + information in an obligatory order. + + See the `scalarStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `scalar' statement. + +9.1 The scalar's oid Statement + + The scalar's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this scalar object. + +9.2 The scalar's type Statement + + The scalar's `type' statement, which must be present, gets one + argument which is used to specify the data type of this scalar + object. Optionally, type restrictions may be applied to the type by + appending subtyping information according to the rules of the base + type. See Section 3 for SMIng base types and their type + restrictions. + +9.3 The scalar's access Statement + + The scalar's `access' statement, which must be present, gets one + argument which is used to specify whether it makes sense to read + and/or write an instance of the object, or to include its value in a + notification. This is the maximal level of access for the object. + This maximal level of access is independent of any administrative + authorization policy. + + The value `readwrite' indicates that read and write access makes + sense. The value `readonly' indicates that read access makes sense, + but write access is never possible. The value `notifyonly' indicates + an object which is accessible only via a notification. + + These values are ordered, from least to greatest access level: + `notifyonly', `readonly', `readwrite'. + +9.4 The scalar's default Statement + + The scalar's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for this scalar object. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + +Strauss Expires August 15, 2000 [Page 39] + +Internet-Draft SMIng February 2000 + + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the scalar's `type' + statement. + + The scalar's default value overrides the default value of the + underlying type definition, if both are present. + + Note that for objects of some types, default values make no sense, + e.g. IRTF-NMRG-SMING-TYPES::Counter32. + +9.5 The scalar's format Statement + + The scalar's `format' statement, which need not be present, gets one + argument which is used to give a hint as to how the value of an + instance of this object might be displayed. See Section 3.12 for a + description of format specifications. + + The scalar's format specification overrides the format specification + of the underlying type definition if both are present. + +9.6 The scalar's units Statement + + The scalar's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with this scalar object. + + The scalar's units specification overrides the units specification + of the underlying type definition if both are present. + + The units specification has to be appropriate for values displayed + according to the scalar's format specification if present. E.g., if + the scalar object represents a frequency value of type Unsigned64 + measured in thousands of Hertz, the format specification should be + `d-3' and the units specification should be `Hertz' or `Hz'. If the + format specification would be omitted, the units specification + should be `Milli-Hertz' or `mHz'. MIB Authors should pay attention + to keep format and units specifications of type and object + definitions synced. Application implementors MUST NOT implement + units specifications without implementing format specifications. + +9.7 The scalar's status Statement + + The scalar's `status' statement, which need not be present, gets one + argument which is used to specify whether this scalar object + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + + +Strauss Expires August 15, 2000 [Page 40] + +Internet-Draft SMIng February 2000 + + + implementation in order to foster interoperability with + older/existing implementations. + + Scalar objects SHOULD NOT be defined as `current' if their type is + `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as + `deprecated' if their type is `obsolete'. Nevertheless, subsequent + revisions of used type definition cannot be avoided, but SHOULD be + taken into account in subsequent revisions of the local module. + + If the `status' statement is omitted the status value `current' is + implied. + +9.8 The scalar's description Statement + + The scalar's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of this scalar object. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this scalar object. + +9.9 The scalar's reference Statement + + The scalar's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + scalar objects, or some other document which provides additional + information relevant to this scalar object. + +9.10 Usage Examples + + scalar dialCtlTrapEnable { + oid dialCtlConfiguration.2; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + default disabled; + description + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + all peers. If the value of this object is enabled(1), + traps will be generated for all peers. If the value + of this object is disabled(2), traps will be generated + only for peers having dialCtlPeerCfgTrapEnable set + to enabled(1)."; + }; + + + + + + +Strauss Expires August 15, 2000 [Page 41] + +Internet-Draft SMIng February 2000 + + +10. The table Statement + + The `table' statement is used to define the root node of a table. + The `table' statement gets two arguments: a lower-case table + identifier and a statement block that holds detailed table + information in an obligatory order. + + See the `tableStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `table' statement. + +10.1 The table's oid Statement + + The table's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this table node. + +10.2 The table's status Statement + + The table's `status' statement, which need not be present, gets one + argument which is used to specify whether this table definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted the status value `current' is + implied. + +10.3 The table's description Statement + + The table's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this table. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this table. + +10.4 The table's reference Statement + + The table's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + tables, or some other document which provides additional information + relevant to this table. + + + + +Strauss Expires August 15, 2000 [Page 42] + +Internet-Draft SMIng February 2000 + + +10.5 The table's row Statement + + The table's `row' statement, which must be present, gets two + arguments: a lower-case row identifier and a statement block that + holds detailed row information in an obligatory order. + + See the `rowStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `row' statement. + +10.5.1 The row's oid Statement + + The row's `oid' statement, which must be present, gets one argument + which specifies the object identifier value that is assigned to this + table row. Note that the object identifier of a table row MUST be + built be the table's object identifier followed by a `1' + sub-identifier. + +10.5.2 Table Indexing Statements + + SMIng offers five methods to supply table indexing information: + ordinary tables, table augmentations, sparse table augmentations, + table expansions, and reordered tables use different statements to + denote their indexing information. Each table row definition must + contain exactly one of the following indexing statements. + +10.5.2.1 The row's index Statement for Table Indexing + + The row's `index' statement, which is used to supply table indexing + information of base table rows, gets at least one argument that + specifies a comma-separated list of object identifiers, that are + used for table indexing, enclosed in parenthesis. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + +10.5.2.2 The row's augments Statement for Table Indexing + + The row's `augments' statement, which is used to supply table + indexing information of table rows that augment a base table row, + gets one argument that specifies the identifier of the table row to + be augmented. Note that a row augmentation cannot itself be + augmented. Anyhow, a base row may be augmented by multiple row + augmentations. + + A row augmentation makes instances of subordinate columnar objects + identified according to the index specification of the base row + corresponding to the row named in the `augments' statement. + Further, instances of subordinate columnar objects of a row + + +Strauss Expires August 15, 2000 [Page 43] + +Internet-Draft SMIng February 2000 + + + augmentation exist according to the same semantics as instances of + subordinate columnar objects of the base row being augmented. As + such, note that creation of a base row implies the correspondent + creation of any row augmentations. Row augmentations MUST NOT be + used in row creation and deletion operations. + +10.5.2.3 The row's sparse Statement for Table Indexing + + The row's `sparse' statement, which is used to supply table indexing + information of table rows that sparsely augment a base table row, + gets one argument that specifies the identifier of the table row to + be sparsely augmented. Note that a sparse row augmentation cannot + itself be augmented. Anyhow, a base row may be augmented by multiple + row augmentations, sparsely or not. + + A sparse row augmentation makes instances of subordinate columnar + objects identified, if present, according to the index specification + of the base row corresponding to the row named in the `sparse' + statement. Further, instances of subordinate columnar objects of a + sparse row augmentation exist according to the semantics as + instances of subordinate columnar objects of the base row and the + (non-formal) rules that confine the sparse relationship. As such, + note that creation of a sparse row augmentation may be implied by + the creation of a base row as well as done by an explicit creation. + However, if a base row gets deleted, any dependent sparse row + augmentations get also deleted implicitly. + +10.5.2.4 The row's reorders Statement for Table Indexing + + The row's `reorders' statement is used to supply table indexing + information of table rows, that contain exactly the same index + objects of a base table row, except in another order. It gets at + least two arguments. The first one specifies the identifier of the + base table row. The second one specifies a comma-separated list of + exactly those object identifiers of the base row's `index' + statement, but in the order to be used in this table. Note that a + reordered table cannot itself be reordered. Anyhow, a base row may + be used for multiple reordered tables. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + + Instances of subordinate columnar objects of a reordered table exist + according to the same semantics as instances of subordinate columnar + objects of the base row. As such, note that creation of a base row + implies the correspondent creation of any related reordered table. + Rows or reordered tables MUST NOT be used in row creation and + deletion operations. + + +Strauss Expires August 15, 2000 [Page 44] + +Internet-Draft SMIng February 2000 + + +10.5.2.5 The row's expands Statement for Table Indexing + + The row's `expands' statement is used to supply table indexing + information of table row expansions. Table row expansions use + exactly the same index objects of another row together with + additional indexing objects. Thus, the `expands' statement gets at + least two arguments. The first one specifies the identifier of the + related table row. The second one specifies a comma-separated list + of the additional object identifiers used for indexing. Note that an + expanded table may itself be expanded, and related rows may be used + for multiple table expansions. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + +10.5.3 The row's create Statement + + The row's `create' statement, which need not be present, gets no + argument. If the `create' statement is present, row creation (and + deletion) is possible. + +10.5.4 The row's status Statement + + The row's `status' statement, which need not be present, gets one + argument which is used to specify whether this row definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted the status value `current' is + implied. + +10.5.5 The row's description Statement + + The row's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this table row. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this table row. Especially, if the row's + indexing statement contains objects that are not columnar objects of + the row, it SHOULD be described how these objects are used in + uniquely identifying instances of the row's columnar objects. + + + +Strauss Expires August 15, 2000 [Page 45] + +Internet-Draft SMIng February 2000 + + +10.5.6 The row's reference Statement + + The row's `reference' statement, which need not be present, gets one + argument which is used to specify a textual cross-reference to some + other document, either another module which defines related table + rows, or some other document which provides additional information + relevant to this table row. + +10.6 The table row's column Statement + + The row's `column' statement is used to define a columnar managed + object. The `column' statement gets two arguments: a lower-case + column identifier and a statement block that holds detailed object + information in an obligatory order. + + See the `columnStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `column' statement. + +10.6.1 The column's oid Statement + + The column's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this columnar object. + +10.6.2 The column's type Statement + + The column's `type' statement, which must be present, gets at least + one argument which is used to specify the data type of this columnar + object. Optionally, type restrictions may be applied to the type by + appending subtyping information according to the rules of the base + type. See Section 3 for SMIng base types and their type + restrictions. + +10.6.3 The column's access Statement + + The column's `access' statement, which must be present, gets one + argument which is used to specify whether it makes sense to read + and/or write an instance of the object, or to include its value in a + notification. This is the maximal level of access for the object. + This maximal level of access is independent of any administrative + authorization policy. + + The value `readwrite' indicates that read and write access makes + sense. The value `readonly' indicates that read access makes sense, + but write access is never possible. The value `noaccess' indicates + an auxiliary object (see Section 2.4). The value `notifyonly' + indicates an object which is accessible only via a notification. + + These values are ordered, from least to greatest access level: + + +Strauss Expires August 15, 2000 [Page 46] + +Internet-Draft SMIng February 2000 + + + `noaccess', `notifyonly', `readonly', `readwrite'. + +10.6.4 The column's default Statement + + The column's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for this columnar object. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the column's `type' + statement. + + The column's default value overrides the default value of the + underlying type definition if both are present. + + Note that for objects of some types, default values make no sense, + e.g. IRTF-NMRG-SMING-TYPES::Counter32. + +10.6.5 The column's format Statement + + The column's `format' statement, which need not be present, gets one + argument which is used to give a hint as to how the value of an + instance of this object might be displayed. See Section 3.12 for a + description of format specifications. + + The column's format specification overrides the format specification + of the underlying type definition if both are present. + +10.6.6 The column's units Statement + + The column's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with this columnar object. + + The column's units specification overrides the units specification + of the underlying type definition if both are present. + + The units specification has to be appropriate for values displayed + according to the column's format specification if present. E.g., if + the columnar object represents a frequency value of type Unsigned64 + measured in thousands of Hertz, the format specification should be + `d-3' and the units specification should be `Hertz' or `Hz'. If the + format specification would be omitted the units specification should + be `Milli-Hertz' or `mHz'. MIB Authors should pay attention to keep + format and units specifications of type and object definitions + synced. Application implementors MUST NOT implement units + specifications without implementing format specifications. + + +Strauss Expires August 15, 2000 [Page 47] + +Internet-Draft SMIng February 2000 + + +10.6.7 The column's status Statement + + The column's `status' statement, which need not be present, gets one + argument which is used to specify whether this columnar object + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + Columnar objects SHOULD NOT be defined as `current' if their type is + `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as + `deprecated' if their type is `obsolete'. Nevertheless, subsequent + revisions of used type definition cannot be avoided, but SHOULD be + taken into account in subsequent revisions of the local module. + + If the `status' statement is omitted the status value `current' is + implied. + +10.6.8 The column's description Statement + + The column's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of this columnar object. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this columnar object. + +10.6.9 The column's reference Statement + + The column's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + columnar objects, or some other document which provides additional + information relevant to this columnar object. + +10.7 Usage Example + + Consider how one might define a table and its subordinates. (This + example uses the RowStatus type defined in Section 14.2.) + + scalar evalSlot { + oid eval.1; + type Integer32 (0..2147483647); + access readonly; + description + "The index number of the first unassigned entry in the + + +Strauss Expires August 15, 2000 [Page 48] + +Internet-Draft SMIng February 2000 + + + evaluation table, or the value of zero indicating that + all entries are assigned. + + A management station should create new entries in the + evaluation table using this algorithm: first, issue a + management protocol retrieval operation to determine the + value of evalSlot; and, second, issue a management + protocol set operation to create an instance of the + evalStatus object setting its value to createAndGo(4) or + createAndWait(5). If this latter operation succeeds, + then the management station may continue modifying the + instances corresponding to the newly created conceptual + row, without fear of collision with other management + stations."; + }; + + table evalTable { + oid eval.2; + description + "The (conceptual) evaluation table."; + reference + "RFC 2578, 7.11."; + + row evalEntry { + oid evalTable.1; + index (evalIndex); + create (evalStatus); + description + "An entry (conceptual row) in the evaluation table."; + + column evalIndex { + oid evalEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "The auxiliary variable used for identifying instances of + the columnar objects in the evaluation table."; + }; + + column evalString { + oid evalEntry.2; + type DisplayString; + access readwrite; + description + "The string to evaluate."; + }; + + column evalValue { + oid evalEntry.3; + + +Strauss Expires August 15, 2000 [Page 49] + +Internet-Draft SMIng February 2000 + + + type Integer32; + access readonly; + default 0; + description + "The value when evalString was last evaluated, or zero if + no such value is available."; + }; + + column evalStatus { + oid evalEntry.4; + type RowStatus; + access readwrite; + default active; + description + "The status column used for creating, modifying, and + deleting instances of the columnar objects in the + evaluation table."; + }; + }; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 50] + +Internet-Draft SMIng February 2000 + + +11. The notification Statement + + The `notification' statement is used to define a notification. It + gets two arguments: a lower-case notification identifier and a + statement block that holds detailed information in an obligatory + order. + + See the `notificationStatement' rule of the SMIng grammar (Appendix + A) for the formal syntax of the `notification' statement. + +11.1 The notification's oid Statement + + The notification's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this notification. + +11.2 The notification's objects Statement + + The notification's `objects' statement, which need not be present, + gets one argument which specifies an ordered sequence of objects by + their identifiers to be emitted within this notification. The list + of objects has to be comma-separated and enclosed in parenthesis. + + One and only one object instance for each occurrence of each object + must be present, and in the specified order, in every instance of + the notification. If the same object occurs multiple times in a + notification's `objects' statement, then an object instance is + present for each of them. An object specified in this sequence must + not have an `access' statement argument of `noaccess'. + + Note that an agent is allowed, at its own discretion, to append as + many additional objects as it considers useful to the end of the + notification (i.e., after the objects defined by the notification's + `objects' statement if present). + +11.3 The notification's status Statement + + The notification's `status' statement, which need not be present, + gets one argument which is used to specify whether this notification + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + If the `status' statement is omitted the status value `current' is + implied. + + +Strauss Expires August 15, 2000 [Page 51] + +Internet-Draft SMIng February 2000 + + +11.4 The notification's description Statement + + The notification's `description' statement, which must be present, + gets one argument which is used to specify a high-level textual + description of this notification. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this notification. In particular, it SHOULD be + documented which instances of the objects mentioned in the `objects' + statement should be contained within notifications of this type. + +11.5 The notification's reference Statement + + The notification's `reference' statement, which need not be present, + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + notifications, or some other document which provides additional + information relevant to this notification. + +11.6 Usage Example + + Consider how a configuration change notification might be described: + + node entityMIBTraps { oid entityMIB.2; }; + + node entityMIBTrapPrefix { oid entityMIBTraps.0; }; + + notification entConfigChange { + oid entityMIBTrapPrefix.1; + description + "An entConfigChange trap is sent when the value of + entLastChangeTime changes. It can be utilized by an NMS + to trigger logical/physical entity table maintenance + polls. An agent must not generate more than one + entConfigChange 'trap-event' in a five second period, + where a 'trap-event' is the transmission of a single + trap PDU to a list of trap destinations. If additional + configuration changes occur within the five second + 'throttling' period then these trap-events should be + suppressed by the agent. An NMS should periodically + check the value of entLastChangeTime to detect any + missed entConfigChange trap-events, e.g. due to + throttling or transmission loss."; + }; + + + + + + + +Strauss Expires August 15, 2000 [Page 52] + +Internet-Draft SMIng February 2000 + + +12. The group Statement + + The `group' statement is used to define a group of arbitrary nodes + in the object identifier tree. It gets two arguments: a lower-case + group identifier and a statement block that holds detailed group + information in an obligatory order. + + Note that the primary application of groups are compliance + statements, although they might be referred in other formal or + informal documents. + + See the `groupStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `group' statement. + +12.1 The group's oid Statement + + The group's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this group. + +12.2 The group's members Statement + + The group's `members' statement, which must be present, gets one + argument which specifies the list of nodes by their identifiers to + be contained in this group. The list of nodes has to be + comma-separated and enclosed in parenthesis. + +12.3 The group's status Statement + + The group's `status' statement, which need not be present, gets one + argument which is used to specify whether this group definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and the group should no longer be used. While the value + `deprecated' also indicates an obsolete definition, it permits + new/continued use of this group. + + If the `status' statement is omitted the status value `current' is + implied. + +12.4 The group's description Statement + + The group's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this group. It is RECOMMENDED to include any relation to other + groups. + + + + + +Strauss Expires August 15, 2000 [Page 53] + +Internet-Draft SMIng February 2000 + + +12.5 The group's reference Statement + + The group's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + groups, or some other document which provides additional information + relevant to this group. + +12.6 Usage Example + + The snmpGroup, originally defined in [13], may be described as + follows: + + group snmpGroup { + oid snmpMIBGroups.8; + objects (snmpInPkts, snmpInBadVersions, + snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, + snmpEnableAuthenTraps); + description + "A collection of objects providing basic + instrumentation and control of an agent."; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 54] + +Internet-Draft SMIng February 2000 + + +13. The compliance Statement + + The `compliance' statement is used to define a set of compliance + requirements, named a `compliance statement'. It gets two arguments: + a lower-case compliance identifier and a statement block that holds + detailed compliance information in an obligatory order. + + See the `complianceStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `compliance' statement. + +13.1 The compliance's oid Statement + + The compliance's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this compliance statement. + +13.2 The compliance's status Statement + + The compliance's `status' statement, which need not be present, gets + one argument which is used to specify whether this compliance + statement is current or historic. The value `current' means that the + definition is current and valid. The value `obsolete' means the + definition is obsolete and no longer specifies a valid definition of + conformance. While the value `deprecated' also indicates an + obsolete definition, it permits new/continued use of the compliance + specification. + + If the `status' statement is omitted the status value `current' is + implied. + +13.3 The compliance's description Statement + + The compliance's `description' statement, which must be present, + gets one argument which is used to specify a high-level textual + description of this compliance statement. + +13.4 The compliance's reference Statement + + The compliance's `reference' statement, which need not be present, + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + compliance statements, or some other document which provides + additional information relevant to this compliance statement. + +13.5 The compliance's mandatory Statement + + The compliance's `mandatory' statement, which need not be present, + gets one argument which is used to specify a comma-separated list of + one or more groups (Section 12) of objects and/or notifications + + +Strauss Expires August 15, 2000 [Page 55] + +Internet-Draft SMIng February 2000 + + + enclosed in parenthesis. These groups are unconditionally mandatory + for implementation. + + If an agent claims compliance to a MIB module then it must implement + each and every object and notification within each group listed the + `mandatory' statement(s) of the compliance statement(s) of that + module. + +13.6 The compliance's optional Statement + + The compliance's `optional' statement, which need not be present, is + repeatedly used to name each group which is conditionally mandatory + for compliance to the module. It can also be used to name + unconditionally optional groups. A group named in an `optional' + statement MUST be absent from the correspondent `mandatory' + statement. The `optional' statement gets two arguments: a lower-case + group identifier and a statement block that holds detailed + compliance information on that group. + + Conditionally mandatory groups include those which are mandatory + only if a particular protocol is implemented, or only if another + group is implemented. The `description' statement specifies the + conditions under which the group is conditionally mandatory. + + A group which is named in neither a `mandatory' statement nor an + `optional' statement, is unconditionally optional for compliance to + the module. + + See the `optionalStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `optional' statement. + +13.6.1 The optional's description Statement + + The optional's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the conditions under which this group is + conditionally mandatory or unconditionally optional. + +13.7 The compliance's refine Statement + + The compliance's `refine' statement, which need not be present, is + repeatedly used to specify each object for which compliance has a + refined requirement with respect to the module definition. The + object must be present in one of the conformance groups named in the + correspondent `mandatory' or `optional' statements. The `refine' + statement gets two arguments: a lower-case identifier of a scalar or + columnar object and a statement block that holds detailed refinement + information on that object. + + + +Strauss Expires August 15, 2000 [Page 56] + +Internet-Draft SMIng February 2000 + + + See the `refineStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `refine' statement. + +13.7.1 The refine's type Statement + + The refine's `type' statement, which need not be present, gets one + argument that is used to provide a refined type for the + correspondent object. Type restrictions may be applied by appending + subtyping information according to the rules of the base type. See + Section 3 for SMIng base types and their type restrictions. + + Note that if a `type' and a `writetype' statement are both present + then this type only applies when instances of the correspondent + object are read. + +13.7.2 The refine's writetype Statement + + The refine's `writetype' statement, which need not be present, gets + one argument that is used to provide a refined type for the + correspondent object, only when instances of that object are + written. Type restrictions may be applied by appending subtyping + information according to the rules of the base type. See Section 3 + for SMIng base types and their type restrictions. + +13.7.3 The refine's access Statement + + The refine's `access' statement, which need not be present, gets one + argument that is used to specify the minimal level of access that + the correspondent object must implement in the sense of its original + `access' statement. Hence, the refine's `access' statement MUST NOT + specify a greater level of access than is specified in the + correspondent object definition. + + An implementation is compliant if the level of access it provides is + greater or equal to the minimal level in the refine's `access' + statement and less or equal to the maximal level in the object's + `access' statement. + +13.7.4 The refine's description Statement + + The refine's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the refined compliance requirement. + +13.8 Usage Example + + The compliance statement contained in the SNMPv2-MIB, converted to + SMIng: + + + +Strauss Expires August 15, 2000 [Page 57] + +Internet-Draft SMIng February 2000 + + + compliance snmpBasicCompliance { + oid snmpMIBCompliances.2; + description + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMPv2 entities which + support community-based authentication."; + }; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 58] + +Internet-Draft SMIng February 2000 + + +14. SMIng Core Modules + + MIB modules, either SMIv1, SMIv2 or SMIng, are built on top of some + core definitions. These core definitions are imported from some + "well-defined" core modules. In case of SMIng, there are two core + modules: + + 1. IRTF-NMRG-SMING, which defines a special node, named + `zeroDotZero' that may be used by objects of type + `ObjectIdentifier' as a null value, and a core set of 18 nodes + near the root of the object identifier tree. Only some of those + core nodes are significant for the Internet management and have + been described in Section 2.2. + + 2. IRTF-NMRG-SMING-TYPES, which defines SMIng data types. Regarding + to their origin, these types can be divided into two groups: + those being ASN.1 application types defined as SMIv2 core types + [2] and those being textual conventions in SMIv2 [3]. For use in + SMIng, there is no need to care about these differences, though + it might be useful in SNMP applications, to know that some types + are distinguishable "on the wire" and others are not. + + 3. IRTF-NMRG-SMING-EXTENSIONS, which defines proposed SMIng + extensions. At this moment, there is only one extension, the + `agentcaps' statement. See Section 16 for details on extensions. + +14.1 IRTF-NMRG-SMING + + module IRTF-NMRG-SMING { + + // + // $RCSfile: IRTF-NMRG-SMING,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + +Strauss Expires August 15, 2000 [Page 59] + +Internet-Draft SMIng February 2000 + + + description "Core node definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + node ccitt { oid 0; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + }; + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + node directory { oid internet.1; }; + node mgmt { oid internet.2; }; + node mib-2 { oid mgmt.1; }; + node transmission { oid mib-2.10; }; + node experimental { oid internet.3; }; + node private { oid internet.4; }; + node enterprises { oid private.1; }; + node security { oid internet.5; }; + node snmpV2 { oid internet.6; }; + node snmpDomains { oid snmpV2.1; }; + node snmpProxys { oid snmpV2.2; }; + node snmpModules { oid snmpV2.3; }; + + node joint-iso-ccitt { oid 2; }; + + }; + +14.2 IRTF-NMRG-SMING-TYPES + + module IRTF-NMRG-SMING-TYPES { + + // + // $RCSfile: IRTF-NMRG-SMING-TYPES,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + + +Strauss Expires August 15, 2000 [Page 60] + +Internet-Draft SMIng February 2000 + + + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core type definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + typedef Gauge32 { + type Unsigned32; + description + "The Gauge32 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^32-1 (4294967295 decimal), and the minimum value + can not be smaller than 0. The value of a Gauge32 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge32 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + reference + "RFC 2578, Sections 2. and 7.1.7."; + + +Strauss Expires August 15, 2000 [Page 61] + +Internet-Draft SMIng February 2000 + + + }; + + typedef Counter32 { + type Unsigned32; + description + "The Counter32 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter32 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter32."; + reference + "RFC 2578, Sections 2. and 7.1.6."; + }; + + typedef Gauge64 { + type Unsigned64; + description + "The Gauge64 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^64-1 (18446744073709551615), and the minimum value + can not be smaller than 0. The value of a Gauge64 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + + +Strauss Expires August 15, 2000 [Page 62] + +Internet-Draft SMIng February 2000 + + + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge64 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + }; + + typedef Counter64 { + type Unsigned64; + description + "The Counter64 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615), when + it wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter64 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter64."; + reference + "RFC 2578, Sections 2. and 7.1.10."; + }; + + typedef Opaque { + type OctetString; + description + "The Opaque type is provided solely for + backward-compatibility, and shall not be used for + newly-defined object types. + + The Opaque type supports the capability to pass + + +Strauss Expires August 15, 2000 [Page 63] + +Internet-Draft SMIng February 2000 + + + arbitrary ASN.1 syntax. A value is encoded using + the ASN.1 Basic Encoding Rules into a string of + octets. This, in turn, is encoded as an + OctetString, in effect `double-wrapping' the + original ASN.1 value. + + Note that a conforming implementation need only be + able to accept and recognize opaquely-encoded data. + It need not be able to unwrap the data and then + interpret its contents. + + A requirement on `standard' MIB modules is that no + object may have a type value of Opaque."; + reference + "RFC 2578, Sections 2. and 7.1.9."; + }; + + typedef IpAddress { + type OctetString (4); + status deprecated; + description + "******* THIS TYPE DEFINITION IS DEPRECATED ******* + + The IpAddress type represents a 32-bit internet + IPv4 address. It is represented as an OctetString + of length 4, in network byte-order. + + Note that the IpAddress type is present for + historical reasons. IPv4 and IPv6 addresses should + be represented using the IpAddr type. Generic + Network addresses should be represented using a + pair of TDomain and TAddress types (all defined in + this module)."; + reference + "RFC 2578, Sections 2. and 7.1.5."; + }; + + typedef TimeTicks { + type Unsigned32; + description + "The TimeTicks type represents a non-negative + integer which represents the time, modulo 2^32 + (4294967296 decimal), in hundredths of a second + between two epochs. When objects are defined which + use this type, the description of the object + identifies both of the reference epochs. + + For example, the TimeStamp type (defined in this + module) is based on the TimeTicks type. + + +Strauss Expires August 15, 2000 [Page 64] + +Internet-Draft SMIng February 2000 + + + With a TimeStamp, the first reference epoch is + defined as the time when SNMPv2-MIB::sysUpTime was + zero, and the second reference epoch is defined as + the current value of sysUpTime. + + The TimeTicks type should not be sub-typed."; + reference + "RFC 2578, Sections 2. and 7.1.8."; + }; + + // + // The following type definitions are plain + // conversions of the textual conventions from + // the SNMPv2-TC module (RFC 2579). + // + + typedef DisplayString { + type OctetString (0..255); + format "255a"; + 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."; + }; + + +Strauss Expires August 15, 2000 [Page 65] + +Internet-Draft SMIng February 2000 + + + typedef PhysAddress { + type OctetString; + format "1x:"; + description + "Represents media- or physical-level addresses."; + }; + + typedef MacAddress { + type OctetString (6); + format "1x:"; + 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."; + }; + + typedef TruthValue { + type Enumeration (true(1), false(2)); + description + "Represents a boolean value."; + }; + + typedef TestAndIncr { + type Integer32 (0..2147483647); + 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 + + +Strauss Expires August 15, 2000 [Page 66] + +Internet-Draft SMIng February 2000 + + + the re-initialization, or (if the value prior to the re- + initialization is unknown) be set to a pseudo-randomly + generated value."; + }; + + typedef AutonomousType { + type ObjectIdentifier; + 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."; + }; + + typedef InstancePointer { + type ObjectIdentifier; + 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."; + }; + + typedef VariablePointer { + type ObjectIdentifier; + description + "A pointer to a specific object instance. For example, + sysContact.0 or ifInOctets.3."; + }; + + typedef RowPointer { + type ObjectIdentifier; + 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)."; + }; + + typedef RowStatus { + type Enumeration (active(1), notInService(2), + + +Strauss Expires August 15, 2000 [Page 67] + +Internet-Draft SMIng February 2000 + + + notReady(3), createAndGo(4), + createAndWait(5), destroy(6)); + 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 + + +Strauss Expires August 15, 2000 [Page 68] + +Internet-Draft SMIng February 2000 + + + 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 | | | + --------------+--------------+-----------+-------------+------------- + + +Strauss Expires August 15, 2000 [Page 69] + +Internet-Draft SMIng February 2000 + + + 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, 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. + + +Strauss Expires August 15, 2000 [Page 70] + +Internet-Draft SMIng February 2000 + + + 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 + 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. + + 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 + + +Strauss Expires August 15, 2000 [Page 71] + +Internet-Draft SMIng February 2000 + + + 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 + + +Strauss Expires August 15, 2000 [Page 72] + +Internet-Draft SMIng February 2000 + + + 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 + + +Strauss Expires August 15, 2000 [Page 73] + +Internet-Draft SMIng February 2000 + + + 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 + + +Strauss Expires August 15, 2000 [Page 74] + +Internet-Draft SMIng February 2000 + + + `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 + + +Strauss Expires August 15, 2000 [Page 75] + +Internet-Draft SMIng February 2000 + + + 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 + + +Strauss Expires August 15, 2000 [Page 76] + +Internet-Draft SMIng February 2000 + + + 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."; + }; + + typedef TimeStamp { + type TimeTicks; + 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. When the specific occurrence occurred prior to the + last time sysUpTime was zero, then the TimeStamp value is + zero. Note that this requires all TimeStamp values to be + reset to zero when the value of sysUpTime reaches 497+ days + and wraps around to zero."; + }; + + typedef TimeInterval { + type Integer32 (0..2147483647); + description + "A period of time, measured in units of 0.01 seconds."; + }; + + typedef DateAndTime { + + +Strauss Expires August 15, 2000 [Page 77] + +Internet-Draft SMIng February 2000 + + + type OctetString (8 | 11); + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + 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 big-endian encoding + - 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."; + }; + + typedef StorageType { + type Enumeration (other(1), volatile(2), + nonVolatile(3), permanent(4), + readOnly(5)); + 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). (All illegal modifications result in a + + +Strauss Expires August 15, 2000 [Page 78] + +Internet-Draft SMIng February 2000 + + + '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."; + }; + + typedef TDomain { + type ObjectIdentifier; + 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)'."; + }; + + typedef TAddress { + type OctetString (1..255); + 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. + Cosult 'Transport Mappings for Version 2 of the Simple + Network Management Protocol (SNMPv2)' for further + information on snmpUDPDomain."; + }; + + }; + +14.3 IRTF-NMRG-SMING-EXTENSIONS + + module IRTF-NMRG-SMING-EXTENSIONS { + + // + // $RCSfile: IRTF-NMRG-SMING-EXTENSIONS,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + + +Strauss Expires August 15, 2000 [Page 79] + +Internet-Draft SMIng February 2000 + + + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core extension definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + extension agentcaps { + status current; + description + "The agentcaps extension statement is used to describe + an agent's deviation from the compliance statements + of the modules it implements. It is designed to be + compatible with the SMIv2 AGENT-CAPABILITIES macro. + + The agentcaps extension statement should only be used + in the statement body of a module that does not + contain any other type or node definitions that do not + correspond to an agent implementation."; + reference + "RFC 2580, Section 6 describes the SMIv2 + compatible AGENT-CAPABILITIES macro."; + abnf + "agentcapsStatement = 'agentcaps' sep lcIdentifier + optsep '{' stmtsep + oidStatement stmtsep + releaseStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *(includesStatement stmtsep) + '}' optsep ';' + + includesStatement = 'includes' sep qlcIdentifier + optsep '{' stmtsep + *(variationStatement stmtsep) + '}' optsep ';' + + +Strauss Expires August 15, 2000 [Page 80] + +Internet-Draft SMIng February 2000 + + + variationStatement = 'variation' sep qlcIdentifier + optsep '{' stmtsep + typeStatement stmtsep + writetypeStatement stmtsep + accessStatement stmtsep + createStatement stmtsep + '}' optsep ';' + "; + }; + + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 81] + +Internet-Draft SMIng February 2000 + + +15. Extending a Module + + As experience is gained with a module, it may be desirable to revise + that module. However, changes are not allowed if they have any + potential to cause interoperability problems between an + implementation using an original specification and an implementation + using an updated specification(s). + + For any change, some statements near the top of the module MUST be + updated to include information about the revision: specifically, a + new `revision' statement (Section 5.6) must be included in front of + the `revision' statements. Furthermore, any necessary changes MUST + be applied to other statements, including the `organization' and + `contact' statements (Section 5.2, Section 5.3). + + Note that any definition contained in a module is available to be + imported by any other module, and is referenced in an `import' + statement via the module name. Thus, a module name MUST NOT be + changed. Specifically, the module name (e.g., `FIZBIN-MIB' in the + example of Section 5.8) MUST NOT be changed when revising a module + (except to correct typographical errors), and definitions MUST NOT + be moved from one module to another. + + Also note, that obsolete definitions MUST NOT be removed from + modules since their descriptors may still be referenced by other + modules, and the object identifiers used to name them MUST never be + re-assigned. + + A definition may be revised in any of the following ways: + + o In `typedef', `scalar' and `column' statement blocks, a `type' + statement containing an `Enumeration' or `Bits' type may have new + named numbers added. + + o In `typedef', `scalar' and `column' statement blocks, the value + of a `type' statement may be replaced by another type if the new + type is derived (directly or indirectly) from the same base type, + has the same set of values, and has identical semantics. + + o In any statement block, a `status' statement value of `current' + (or a missing `status' statement) may be revised as `deprecated' + or `obsolete'. Similarly, a `status' statement value of + `deprecated' may be revised as `obsolete'. When making such a + change, the `description' statement SHOULD be updated to explain + the rationale. + + o In `typedef', `scalar' and `column' statement blocks, a `default' + statement may be added or updated. + + + +Strauss Expires August 15, 2000 [Page 82] + +Internet-Draft SMIng February 2000 + + + o In any statement block, a `reference' statement may be added or + updated. + + o In `typedef', `scalar' and `column' statement blocks, a `units' + statement may be added. + + o A row may be augmented by adding new columnar objects (`column' + statements) at the end of the row's statement block. + + o In any statement block, clarifications and additional information + may be included in the `description' statement. + + o Entirely new extensions, types, nodes, scalar objects, tables, + groups, or compliance statements may be defined, using previously + unassigned identifiers and object identifier values. + + Otherwise, if the semantics of any previous definition are changed + (i.e., if a non-editorial change is made to any definition other + than those specifically allowed above), then the `oid' statement + value associated with that object MUST also be changed. + + Note that changing the identifier associated with an existing object + is considered a semantic change, as these strings may be used in an + `import' statement. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 83] + +Internet-Draft SMIng February 2000 + + +16. SMIng Language Extensibility + + While SMIng has a well defined set of statements (Section 5 through + Section 13) that are used to specify those aspects of management + information commonly regarded as necessary, there may be further + information, people wish to express. To describe additional + information informally in description statements has the + disadvantage, that this information cannot be parsed by any program. + + SMIng allows modules to include statements that are unknown to a + parser but fulfill some core grammar rules (Section 4.2). + Furthermore, additional statements may be defined by the `extension' + statement (Section 6). Extensions can be used in the local module or + in other modules, that import the extension. This has some + advantages: + + o A parser can differentiate between statements known as extensions + and unknown statements. This enables the parser to complain about + unknown statements, e.g. due to typos. + + o If an extension's definition contains a formal ABNF grammar + definition and a parser is able to interpret this ABNF + definition, this enables the parser also to complain about wrong + usage of an extension. + + o Since, there might be some common need for extensions, there is a + relatively high probability of extension name collisions + originated by different organizations, as long as there is no + standardized extension for that purpose. The requirement to + explicitly import extension statements allows to distinguish + those extensions. + + o The supported extensions of an SMIng implementation, e.g. a MIB + compiler, can be clearly expressed. + + The only formal effect of an extension statement definition is to + declare its existence and its status, and optionally its ABNF + grammar. All additional aspects SHOULD be described in the + `description' statement: + + o The detailed semantics of the new statement SHOULD be described. + + o The contexts in which the new statement can be used, SHOULD be + described, e.g., a new statement may be designed to be used only + in the statement block of a module, but not in other nested + statement blocks. Others may be applicable in multiple contexts. + In addition, the point in the sequence of an obligatory order of + other statements, where the new statement may be inserted, might + be prescribed. + + +Strauss Expires August 15, 2000 [Page 84] + +Internet-Draft SMIng February 2000 + + + o The circumstances that make the new statement mandatory or + optional SHOULD be described. + + o The syntax of the new statement SHOULD at least be described + informally, if not supplied formally in an `abnf' statement. + + o It might be reasonable to give some suggestions under which + conditions the implementation of the new statement is adequate + and how it could be integrated into existent implementations. + + Some possible extension applications might be: + + o Agent capabilities statements, that allow to describe an agent + implemention's deviation from the compliance statements of the + modules they implement. SMIv2 has a regular AGENT-CAPABILITIES + construct [4], though it's rarely used. That's why it's not a + common SMIng statement. Instead, it is defined as an `agentcaps' + extension statement in the module IRTF-NMRG-SMING-EXTENSIONS + (Section 14.3). + + o Inlined annotations to definitions. E.g., a vendor may wish to + describe additional information to object definitions in private + modules. An example are severity levels of notifications in the + statement block of a `notification' statement. + + o Arbitrary annotations to external definitions. E.g., a vendor may + wish to describe additional information to object definitions in + a "standard" module. This allows a vendor to implement "standard" + modules as well as additional private features, without redundant + MIB definitions, but on top of "standard" MIB definitions. + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 85] + +Internet-Draft SMIng February 2000 + + +17. Module Conversions + +17.1 Converting SMIv2 to SMIng + + Conversions of SMIv2 modules to SMIng are feasible. The only SMIv2 + construct that cannot be mapped to an SMIng statement is the + AGENT-CAPABILITIES macro. However, this can be mapped to the + `agentcaps' extension. All other constructs and types are directly + mappable without loss of information. + + Detailed mapping information is subject to a future document. + +17.2 Converting SMIng to SMIv2 + + SMIng is more liberal in some aspects to ensure a more consistent + information model and a short grammar with less exceptions. This + leads to a limited backwards convertability to SMIv2 of different + kinds of identifiers, groups, type definition hierarchies, octet + string length limitations, and object identifier values (those with + a single sub-identifier). Some other information gets lost when + being converted to SMIv2: some occurences of references, units, + formats, default values, table indexing information, and table row + creation information. + + Detailed mapping information is subject to a future document. + +17.3 SMIv1 + + Conversions between SMIv1 and SMIng are not covered by this + document. Anyhow, conversions between SMIv1 and SMIv2 are subject to + SMIv2 and partly described in [14]. Conversions between SMIv2 and + SMIng are covered in the sections above. + + In few words, conversion from SMIv1 to SMIng is not possible in some + cases and without some additional information. Conversion from SMIng + to SMIv1 is possible if 64 bit types and floating point data types + are not used and if identifiers conform to the SMIv1 restrictions. + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 86] + +Internet-Draft SMIng February 2000 + + +18. Security Considerations + + This document defines a language with which to write and read + descriptions of management information. The language itself has no + security impact on the Internet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 87] + +Internet-Draft SMIng February 2000 + + +19. Acknowledgements + + This document is originated as a central part of a master's thesis + at the Technical University of Braunschweig, under the guidance of + Juergen Schoenwaelder. + + Since SMIng represents a successor of SMIv2, a huge amount of + paragraphs and phrases are taken from the SMIv2 specifications [2], + [3], [4] written by Jeff Case, Keith McCloghrie, David Perkins, + Marshall T. Rose, Juergen Schoenwaelder, and Steven L. Waldbusser. + + Finally, Marshall T. Rose's work on an XML framework for RFC authors + [15] made the writing of an Internet standards document much more + feasible. + + Thanks to these people and the authors of these documents. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 88] + +Internet-Draft SMIng February 2000 + + +References + + [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", RFC 2119, BCP 14, March 1997. + + [2] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Structure of Management Information + Version 2 (SMIv2)", RFC 2578, STD 58, April 1999. + + [3] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Textual Conventions for SMIv2", RFC 2579, + STD 59, April 1999. + + [4] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Conformance Statements for SMIv2", RFC + 2580, STD 60, April 1999. + + [5] Rose, M., McCloghrie, K., "Structure and Identification of + Management Information for TCP/IP-based Internets", RFC 1155, + STD 16, May 1990. + + [6] Rose, M., McCloghrie, K., "Concise MIB Definitions", RFC 1212, + STD 16, March 1991. + + [7] Rose, M., "A Convention for Defining Traps for use with the + SNMP", RFC 1215, March 1991. + + [8] Crocker, D., Overell, P., "Augmented BNF for Syntax + Specifications: ABNF", RFC 2234, November 1997. + + [9] International Organization for Standardization, "Specification + of Abstract Syntax Notation One (ASN.1)", International + Standard 8824, December 1987. + + [10] Harrington, D., Presuhn, R., Wijnen, B., "An Architecture for + Describing SNMP Management Frameworks", RFC 2271, January 1999. + + [11] Institute of Electrical and Electronics Engineers, "IEEE + Standard for Binary Floating-Point Arithmetic", ANSI/IEEE + Standard 754-1985, August 1985. + + [12] Yergeau, F., "UTF-8, a transformation format of ISO 10646", + RFC 2279, January 1998. + + [13] Case, J., McCloghrie, K., Rose, M., Waldbusser, S., + "Management Information Base for Version 2 of the Simple + Network Management Protocol (SNMPv2)", RFC 1907, January 1996. + + [14] Wijnen, B., Levi, D., "V2ToV1 - Mapping SNMPv2 onto SNMPv1 + + +Strauss Expires August 15, 2000 [Page 89] + +Internet-Draft SMIng February 2000 + + + within a bi-lingual SNMP agent", RFC 2089, January 1997. + + [15] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June + 1999. + +Author's Address + + Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + URI: http://www.ibr.cs.tu-bs.de/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 90] + +Internet-Draft SMIng February 2000 + + +Appendix A. The SMIng ABNF grammar + + The SMIng grammar conforms to the Augmented Backus-Naur Form + (ABNF)[8], with one exception: For readability, keywords are + represented as quoted strings, although ABNF would declare these + strings to be case-insensitive. Anyhow, SMIng keyword are meant to + be case-sensitive. + + ;; + ;; sming.abnf -- SMIng grammar in ABNF notation (RFC 2234). + ;; + ;; @(#) $Id: draft-irtf-nmrg-sming-02.txt 817 2000-02-15 10:41:02Z strauss $ + ;; + ;; Copyright (C) The Internet Society (1999). All Rights Reserved. + ;; + + smingFile = optsep *(moduleStatement optsep) + + ;; + ;; Statement rules. + ;; + + moduleStatement = moduleKeyword sep ucIdentifier optsep "{" stmtsep + *(importStatement stmtsep) + organizationStatement stmtsep + contactStatement stmtsep + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + 1*(revisionStatement stmtsep) + *1(identityStatement stmtsep) + *(extensionStatement stmtsep) + *(typedefStatement stmtsep) + *(anyObjectStatement stmtsep) + *(notificationStatement stmtsep) + *(groupStatement stmtsep) + *(complianceStatement stmtsep) + "}" optsep ";" + + extensionStatement = extensionKeyword sep lcIdentifier optsep + "{" stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *1(abnfStatement stmtsep) + "}" optsep ";" + + typedefStatement = typedefKeyword sep ucIdentifier optsep + "{" stmtsep + typedefTypeStatement stmtsep + + +Strauss Expires August 15, 2000 [Page 91] + +Internet-Draft SMIng February 2000 + + + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + anyObjectStatement = nodeStatement / + scalarStatement / + tableStatement + + nodeStatement = nodeKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + *1(descriptionStatement stmtsep) + *1(referenceStatement stmtsep) + "}" optsep ";" + + scalarStatement = scalarKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + typeStatement stmtsep + accessStatement stmtsep + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + tableStatement = tableKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + rowStatement stmtsep + "}" optsep ";" + + rowStatement = rowKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + anyIndexStatement stmtsep + *1(createStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + + +Strauss Expires August 15, 2000 [Page 92] + +Internet-Draft SMIng February 2000 + + + *1(referenceStatement stmtsep) + 1*(columnStatement stmtsep) + "}" optsep ";" + + columnStatement = columnKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + typeStatement stmtsep + accessStatement stmtsep + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + notificationStatement = notificationKeyword sep lcIdentifier + optsep "{" stmtsep + oidStatement stmtsep + *1(objectsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + groupStatement = groupKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + membersStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + complianceStatement = complianceKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *1(mandatoryStatement stmtsep) + *(optionalStatement stmtsep) + *(refineStatement stmtsep) + "}" optsep ";" + + importStatement = importKeyword sep ucIdentifier optsep + "(" optsep + identifierList optsep + + +Strauss Expires August 15, 2000 [Page 93] + +Internet-Draft SMIng February 2000 + + + ")" optsep ";" + + revisionStatement = revisionKeyword optsep "{" stmtsep + dateStatement stmtsep + descriptionStatement stmtsep + "}" optsep ";" + + identityStatement = identityKeyword sep lcIdentifier optsep ";" + + typedefTypeStatement = typeKeyword sep refinedBaseType optsep ";" + + typeStatement = typeKeyword sep + (refinedBaseType / refinedType) + optsep ";" + + writetypeStatement = writetypeKeyword sep + (refinedBaseType / refinedType) + optsep ";" + + anyIndexStatement = indexStatement / + augmentsStatement / + reordersStatement / + sparseStatement / + expandsStatement + + indexStatement = indexKeyword *1(sep impliedKeyword) optsep + "(" optsep qlcIdentifierList + optsep ")" optsep ";" + + augmentsStatement = augmentsKeyword sep qlcIdentifier + optsep ";" + + reordersStatement = reordersKeyword sep qlcIdentifier + *1(sep impliedKeyword) + optsep "(" optsep + qlcIdentifierList optsep ")" + optsep ";" + + sparseStatement = sparseKeyword sep qlcIdentifier optsep ";" + + expandsStatement = expandsKeyword sep qlcIdentifier + *1(sep impliedKeyword) + optsep "(" optsep + qlcIdentifierList optsep ")" + optsep ";" + + createStatement = createKeyword optsep ";" + + oidStatement = oidKeyword sep objectIdentifier optsep ";" + + +Strauss Expires August 15, 2000 [Page 94] + +Internet-Draft SMIng February 2000 + + + dateStatement = dateKeyword sep date optsep ";" + + organizationStatement = organizationKeyword sep text optsep ";" + + contactStatement = contactKeyword sep text optsep ";" + + formatStatement = formatKeyword sep format optsep ";" + + unitsStatement = unitsKeyword sep units optsep ";" + + statusStatement = statusKeyword sep status optsep ";" + + accessStatement = accessKeyword sep access optsep ";" + + defaultStatement = defaultKeyword sep anyValue optsep ";" + + descriptionStatement = descriptionKeyword sep text optsep ";" + + referenceStatement = referenceKeyword sep text optsep ";" + + abnfStatement = abnfKeyword sep text optsep ";" + + membersStatement = membersKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + objectsStatement = objectsKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + mandatoryStatement = mandatoryKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + optionalStatement = optionalKeyword sep qlcIdentifier optsep + "{" descriptionStatement stmtsep + "}" optsep ";" + + refineStatement = refineKeyword sep qlcIdentifier optsep "{" + *1(typeStatement stmtsep) + *1(writetypeStatement stmtsep) + *1(accessStatement stmtsep) + descriptionStatement stmtsep + "}" optsep ";" + + ;; + ;; + ;; + + + +Strauss Expires August 15, 2000 [Page 95] + +Internet-Draft SMIng February 2000 + + + refinedBaseType = OctetStringKeyword *1(optsep numberSpec) / + ObjectIdentifierKeyword / + Integer32Keyword *1(optsep numberSpec) / + Unsigned32Keyword *1(optsep numberSpec) / + Integer64Keyword *1(optsep numberSpec) / + Unsigned64Keyword *1(optsep numberSpec) / + Float32Keyword *1(optsep floatSpec) / + Float64Keyword *1(optsep floatSpec) / + Float128Keyword *1(optsep floatSpec) / + EnumerationKeyword optsep namedNumberSpec / + // TODO: inserted optsep, do also in parser grammar! + BitsKeyword optsep namedNumberSpec + // TODO: inserted optsep, do also in parser grammar! + + refinedType = qucIdentifier *1(optsep anySpec) + + anySpec = numberSpec / floatSpec + + numberSpec = "(" optsep numberElement + *furtherNumberElement + optsep ")" + + furtherNumberElement = optsep "|" optsep numberElement + + numberElement = signedNumber *1numberUpperLimit + + numberUpperLimit = optsep ".." optsep signedNumber + + floatSpec = "(" optsep floatElement + *furtherFloatElement + optsep ")" + + furtherFloatElement = optsep "|" optsep floatElement + + floatElement = floatValue *1floatUpperLimit + + floatUpperLimit = optsep ".." optsep floatValue + + namedNumberSpec = "(" optsep namedNumberList optsep ")" + + namedNumberList = namedNumberItem + *(optsep "," optsep namedNumberItem) + *1(optsep ",") + + namedNumberItem = lcIdentifier optsep "(" optsep number + optsep ")" + + identifierList = identifier + *(optsep "," optsep identifier) + + +Strauss Expires August 15, 2000 [Page 96] + +Internet-Draft SMIng February 2000 + + + *1(optsep ",") + + qIdentifierList = qIdentifier + *(optsep "," optsep qIdentifier) + *1(optsep ",") + + qlcIdentifierList = qlcIdentifier + *(optsep "," optsep qlcIdentifier) + *1(optsep ",") + + bitsValue = "(" optsep bitsList optsep ")" + + bitsList = *1(lcIdentifier + *(optsep "," optsep lcIdentifier)) + *1(optsep ",") + + ;; + ;; Other basic rules. + ;; + + identifier = ucIdentifier / lcIdentifier + + qIdentifier = qucIdentifier / qlcIdentifier + + ucIdentifier = ucAlpha *63(ALPHA / DIGIT / "-") + + qucIdentifier = *1(ucIdentifier "::") ucIdentifier + + lcIdentifier = lcAlpha *63(ALPHA / DIGIT / "-") + + qlcIdentifier = *1(ucIdentifier "::") lcIdentifier + + text = textSegment *(optsep textSegment) + + textSegment = DQUOTE *textAtom DQUOTE + + textAtom = textVChar / HTAB / SP / lineBreak + + date = DQUOTE 4DIGIT "-" 2DIGIT "-" 2DIGIT + *1(" " 2DIGIT ":" 2DIGIT) + DQUOTE + ; always in UTC + + format = textSegment + + units = textSegment + + anyValue = bitsValue / + negativeNumber / + + +Strauss Expires August 15, 2000 [Page 97] + +Internet-Draft SMIng February 2000 + + + hexadecimalNumber / + floatValue / + text / + objectIdentifier + ; Note: `objectIdentifer' includes the + ; syntax of enumeration labels and postive + ; numbers. They are not named literally to + ; avoid reduce/reduce conflicts when + ; building LR parsers based on this + ; grammar. + + status = currentKeyword / + deprecatedKeyword / + obsoleteKeyword + + access = noaccessKeyword / + notifyonlyKeyword / + readonlyKeyword / + readwriteKeyword + + objectIdentifier = (qlcIdentifier / subid) *127("." subid) + + subid = decimalNumber + + number = hexadecimalNumber / decimalNumber + + negativeNumber = "-" decimalNumber + + signedNumber = number / negativeNumber + + decimalNumber = "0" / (nonZeroDigit *DIGIT) + + zeroDecimalNumber = 1*DIGIT + + hexadecimalNumber = "0x" 1*(HEXDIG HEXDIG) + + floatValue = neginfKeyword / + posinfKeyword / + snanKeyword / + qnanKeyword / + signedNumber "." zeroDecimalNumber + *1("E" ("+"/"-") zeroDecimalNumber) + + ;; + ;; Rules to skip unknown statements + ;; with arbitrary arguments and blocks. + ;; + + unknownStatement = unknownKeyword optsep *unknownArgument + + +Strauss Expires August 15, 2000 [Page 98] + +Internet-Draft SMIng February 2000 + + + optsep ";" + + unknownArgument = ("(" optsep unknownList optsep ")") / + ("{" optsep *unknownStatement optsep "}") / + qucIdentifier / + anyValue / + anySpec + + unknownList = namedNumberList / + qIdentifierList + + unknownKeyword = lcIdentifier + + ;; + ;; Keyword rules. + ;; + ;; Typically, keywords are represented by tokens returned from the + ;; lexical analyzer. Note, that the lexer has to be stateful to + ;; distinguish keywords from identifiers depending on the context + ;; position in the input stream. + ;; + ;; Also note, that these keyword definitions are represented in + ;; cleartext for readability, while SMIng keywords are meant to be + ;; case-sensitive, although ABNF makes quoted strings like these to + ;; be case-insensitive. + ;; + + ;; Statement keywords. + + moduleKeyword = "module" + importKeyword = "import" + revisionKeyword = "revision" + oidKeyword = "oid" + dateKeyword = "date" + organizationKeyword = "organization" + contactKeyword = "contact" + descriptionKeyword = "description" + referenceKeyword = "reference" + identityKeyword = "identity" + extensionKeyword = "extension" + typedefKeyword = "typedef" + typeKeyword = "type" + writetypeKeyword = "writetype" + nodeKeyword = "node" + scalarKeyword = "scalar" + tableKeyword = "table" + columnKeyword = "column" + rowKeyword = "row" + notificationKeyword = "notification" + + +Strauss Expires August 15, 2000 [Page 99] + +Internet-Draft SMIng February 2000 + + + groupKeyword = "group" + complianceKeyword = "compliance" + formatKeyword = "format" + unitsKeyword = "units" + statusKeyword = "status" + accessKeyword = "access" + defaultKeyword = "default" + impliedKeyword = "implied" + indexKeyword = "index" + augmentsKeyword = "augments" + reordersKeyword = "reorders" + sparseKeyword = "sparse" + expandsKeyword = "expands" + createKeyword = "create" + membersKeyword = "members" + objectsKeyword = "objects" + mandatoryKeyword = "mandatory" + optionalKeyword = "optional" + refineKeyword = "refine" + abnfKeyword = "abnf" + + ;; Base type keywords. + + OctetStringKeyword = "OctetString" + ObjectIdentifierKeyword = "ObjectIdentifier" + Integer32Keyword = "Integer32" + Unsigned32Keyword = "Unsigned32" + Integer64Keyword = "Integer64" + Unsigned64Keyword = "Unsigned64" + Float32Keyword = "Float32" + Float64Keyword = "Float64" + Float128Keyword = "Float128" + BitsKeyword = "Bits" + EnumerationKeyword = "Enumeration" + + ;; Status keyword. + + currentKeyword = "current" + deprecatedKeyword = "deprecated" + obsoleteKeyword = "obsolete" + + ;; Access keywords. + + noaccessKeyword = "noaccess" + notifyonlyKeyword = "notifyonly" + readonlyKeyword = "readonly" + readwriteKeyword = "readwrite" + + ;; Special floating point values' keywords. + + +Strauss Expires August 15, 2000 [Page 100] + +Internet-Draft SMIng February 2000 + + + neginfKeyword = "neginf" + posinfKeyword = "posinf" + snanKeyword = "snan" + qnanKeyword = "qnan" + + ;; + ;; Some low level rules. + ;; These tokens are typically skipped by the lexical analyzer. + ;; + + sep = 1*(comment / lineBreak / WSP) + ; unconditional separator + + optsep = *(comment / lineBreak / WSP) + + stmtsep = *(comment / + lineBreak / + WSP / + unknownStatement) + + comment = "//" *(WSP / VCHAR) lineBreak + + lineBreak = CRLF / LF + + ;; + ;; Encoding specific rules. + ;; + + textVChar = %x21 / %x23-7E + ; any VCHAR except DQUOTE + + ucAlpha = %x41-5A + + lcAlpha = %x61-7A + + nonZeroDigit = %x31-39 + + ;; + ;; RFC 2234 core rules. + ;; + + ALPHA = %x41-5A / %x61-7A + ; A-Z / a-z + + CR = %x0D + ; carriage return + + CRLF = CR LF + ; Internet standard newline + + +Strauss Expires August 15, 2000 [Page 101] + +Internet-Draft SMIng February 2000 + + + DIGIT = %x30-39 + ; 0-9 + + DQUOTE = %x22 + ; " (Double Quote) + + HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" + + HTAB = %x09 + ; horizontal tab + + LF = %x0A + ; linefeed + + SP = %x20 + ; space + + VCHAR = %x21-7E + ; visible (printing) characters + + WSP = SP / HTAB + ; white space + + ;; + ;; EOF + ;; + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 102] + +Internet-Draft SMIng February 2000 + + +Appendix B. Glossary + + columnar object: An object in a table row that may have zero, one or + more object instances. Instances are identified by using the + values of `indexing objects' as `instance identifier'. + + extension: The SMIng `extension' statement can be used to define new + statements. Extensions can express annotations to existent + management information, agent capabilities known from SMIv2, or + arbitrary other information. See Section 16 for details. + + identifier: The name of any definition, either a module, type, node, + scalar object, table, row, columnar object, notification, group, + compliance, a named number of an enumeration or bits type or any + construct defined by an SMIng extension. Every identifier starts + with an upper-case or lower-case character, followed by letters, + digits and hyphens, but without consecutive or trailing hyphens. + The length of an identifier MUST NOT exceed 64 characters. Note + that SMIng keywords may be used as identifiers, though it's NOT + RECOMMENDED. See also Section 2.1. + + indexing objects: A Table may contain multiple instances of single + columnar objects. That is, there may be multiple rows. The + table's `indexing objects' are used to unambiguously distinguish + the rows of a table. A special encoding of their values + represents the columns' instance-identifier, and thus identifies + the row. + + instance-identifier: That part of an object identifier value, that + is used to unambiguously identify an instance of an object. For + scalar objects, the instance-identifier is `0'. For columnar + objects, the instance-identifier is built from the values of the + `indexing objects'. See also Section 2.4. + + module: A module is the container of inter-related management + information, either managed objects or other definitions like + type definitions or annotations. A module has to conform the + SMIng grammar and semantics described by this document. A module + represents a namespace in which local definitions are available + and external definitions have to be imported. + + named number: Values of `Enumeration' types (Section 3.10) and + single elements of `Bits' (Section 3.11) types are integer + numbers, each associated with an identifers. Those + number-identifier pairs are called `named numbers'. + + object: A leaf definition in the object identifier tree, that + represents a class of object instances. Objects are exactly those + definitions declared by the SMIng keywords `scalar' or `column'. + + +Strauss Expires August 15, 2000 [Page 103] + +Internet-Draft SMIng February 2000 + + + object identifier: Management information is organized in a tree of + nodes. Each node is unambiguously identified by an `object + identifier', that consists of a sequence of integer numbers + (`sub-identifiers') which represent the path of nodes from the + root to the addressed node in the tree. See also Section 2. + + row: The kind of node used to group columnar objects of a table. + Some significant information on table indexing and information + used for row creation and deletion is associated with a table's + row definition. + + scalar object: An object that has zero or one object instance. + + sub-identifier: A single component of an object identifier. There + are at most 128 sub-identifiers in an object identifier value and + each sub-identifier has a maximum value of 2^32-1 (4294967295). + + table: The kind of node used to group management information that is + organized in a sequence of rows. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 104] + +Internet-Draft SMIng February 2000 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implmentation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph + are included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 105] + diff --git a/doc/ibrpib-assignments.txt b/doc/ibrpib-assignments.txt new file mode 100644 index 0000000..ecf1f70 --- /dev/null +++ b/doc/ibrpib-assignments.txt @@ -0,0 +1,35 @@ +Assignments for ibrpib +---------------------- + +As long as Standard PIBs are being developed and temporarily published +in Internet-Drafts, we have assigned them to OIDs under TUBS-SMI::ibrpib. +Once, when the documents are published officially as RFCs and get IANA +assigned OID registrations (or when they are dropped), they will be +deprecated from this list. + + +--- TUBS-SMI::ibrpib child sub-id. + | +- PIB MODULE-IDENTITY name. + | | + 1 INET-ADDRESS-TC-PIB::inetAddressTcPib + 2 ACCESSBIND-PIB::accessBindPib + 3 UMTS-PIB::uMTSPib + 4 QOS-POLICY-IP-PIB::qosPolicyIpPib + 5 QOS-POLICY-802-PIB::qosPolicy802Pib + 6 IPSEC-POLICY-PIB::ipSecPolicyPib + 7 FEEDBACK-FRAMEWORK-PIB::feedbackPolFrameworkPib + 8 DIFFSERV-PIB::qosPolicyPib + 9 ACCOUNTING-FRAMEWORK-PIB::acctPolFrameworkPib + 10 FRAMEWORD-TC-PIB::frwkTcPib + 11 SLS-NEGOTIATION-PIB::slsPolicyPib + 12 RSVP-PCC-PIB::rsvpPccPib + 13 FRAMEWORK-PIB::frameworkPib + 14 RADIUS-PIB::radiusModelPib + 15 POLICY-FRAMEWORK-PIB::policyFrameworkPib + 16 DIFFSERV-DSCP-TC::diffServDSCPTC + 17 DIFFSERV-MIB::diffServMib + 18 PPVPN-PIB::ppvpn2547PolicyPib + 19 PARTITION-PIB::switchPartitionPib + 20 MPLS-SETUP-PIB::mplsSetupPib + 21 META-POLICY-PIB::metaPolicyPib + 22 LOAD-BALANCING-PIB::lbPolicyPib + 23 IP-TE-PIB::ipTePib diff --git a/doc/smi.dia b/doc/smi.dia new file mode 100644 index 0000000..d5926bc --- /dev/null +++ b/doc/smi.dia @@ -0,0 +1,2275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiModule# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #path# + + + #char *# + + + + + + + + + + + + + + + + + #organization# + + + #char *# + + + + + + + + + + + + + + + + + #contactinfo# + + + #char *# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + #language# + + + #SmiLanguage# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiImport# + + + + + + + + + + + + + + + + + + + + + + + #module# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiRevision# + + + + + + + + + + + + + + + + + + + + + + + #date# + + + #time_t# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiMacro# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiType# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #basetype# + + + #SmiBasetype# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #format# + + + #char *# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + #units# + + + #char *# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiNode# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #oidlen# + + + #int# + + + + + + + + + + + + + + + + + #oid# + + + #SmiSubid[]# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #access# + + + #SmiAccess# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #format# + + + #char *# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + #units# + + + #char *# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + #indexkind# + + + #SmiIndexkind# + + + + + + + + + + + + + + + + + #implied# + + + #int# + + + + + + + + + + + + + + + + + #create# + + + #int# + + + + + + + + + + + + + + + + + #nodekind# + + + #SmiNodekind# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmIRange# + + + + + + + + + + + + + + + + + + + + + + + #minValue# + + + #SmiValue# + + + + + + + + + + + + + + + + + #maxValue# + + + #SmiValue# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiNamedNumber# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiElement# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiOption# + + + + + + + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiRefinement# + + + + + + + + + + + + + + + + + + + + + + + #access# + + + #SmiAccess# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #contained definitions# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #type restrictions# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Row/Group/Notif/Compl# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # Compliance Node# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Refined # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/smi.dtd b/doc/smi.dtd new file mode 100644 index 0000000..43dec61 --- /dev/null +++ b/doc/smi.dtd @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/smi.xsd b/doc/smi.xsd new file mode 100644 index 0000000..f673210 --- /dev/null +++ b/doc/smi.xsd @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..4fbbae7 --- /dev/null +++ b/install-sh @@ -0,0 +1,507 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-10-14.15 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac +done + +if test $# -ne 0 && test -z "$dir_arg$dstarg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix=/ ;; + -*) prefix=./ ;; + *) prefix= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..f7cb4c0 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1,54 @@ +# +# Makefile.am -- +# +# Template to generate libsmi Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7735 2008-02-15 08:09:17Z schoenw $ +# + +EXTRA_DIST = parser-sming.y parser-smi.y \ + scanner-sming.l scanner-smi.l \ + errormacros.h data.h check.h error.h util.h \ + snprintf.h \ + scanner-smi.h parser-smi.h parser-smi.tab.h \ + scanner-sming.h parser-sming.h parser-sming.tab.h \ + $(man_MANS) +include_HEADERS = smi.h +CLEANFILES = parser-smi.output parser-sming.output +MAINTAINERCLEANFILES = parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c \ + parser-smi.tab.h parser-sming.tab.h \ + errormacros.h +man_MANS = libsmi.3 smi_config.3 smi_module.3 smi_macro.3 \ + smi_node.3 smi_type.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_identity.3 \ + smi_event.3 +lib_LTLIBRARIES = libsmi.la +libsmi_la_SOURCES = data.c check.c error.c util.c snprintf.c smi.c \ + parser-smi.c scanner-smi.c \ + parser-sming.c scanner-sming.c +libsmi_la_LDFLAGS = -version-info @VERSION_LIBTOOL@ + +parser-smi.c parser-smi.tab.h: parser-smi.y scanner-smi.h parser-smi.h + $(BISON) --defines=parser-smi.tab.h -t -psmi -o parser-smi.c parser-smi.y + +parser-sming.c: parser-sming.y scanner-sming.h parser-sming.h + $(BISON) --defines=parser-sming.tab.h -t -psming -o parser-sming.c parser-sming.y + +scanner-smi.c: scanner-smi.l scanner-smi.h parser-smi.tab.h + $(FLEX) -Cfe -Psmi -t scanner-smi.l > scanner-smi.c + +scanner-sming.c: scanner-sming.l scanner-sming.h parser-sming.tab.h + $(FLEX) -Cfe -Psming -t scanner-sming.l > scanner-sming.c + +error.h data.lo: errormacros.h + +errormacros.h: error.c + cat error.c | grep ERR_ | \ + sed -e 's/^.*\(ERR_[a-zA-Z0-9_]*\).*$$/\1/' | \ + awk '{printf "#define %-50s %d\n", $$1, NR-1}' > errormacros.h diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..96204e4 --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate libsmi Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7735 2008-02-15 08:09:17Z schoenw $ +# + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = lib +DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/libsmi.3.in $(srcdir)/smi.h.in \ + $(srcdir)/smi_attribute.3.in $(srcdir)/smi_class.3.in \ + $(srcdir)/smi_config.3.in $(srcdir)/smi_event.3.in \ + $(srcdir)/smi_identity.3.in $(srcdir)/smi_macro.3.in \ + $(srcdir)/smi_module.3.in $(srcdir)/smi_node.3.in \ + $(srcdir)/smi_render.3.in $(srcdir)/smi_type.3.in \ + $(srcdir)/smi_util.3.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = smi.h libsmi.3 smi_macro.3 smi_module.3 \ + smi_node.3 smi_type.3 smi_config.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_event.3 smi_identity.3 +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" \ + "$(DESTDIR)$(includedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libsmi_la_LIBADD = +am_libsmi_la_OBJECTS = data.lo check.lo error.lo util.lo snprintf.lo \ + smi.lo parser-smi.lo scanner-smi.lo parser-sming.lo \ + scanner-sming.lo +libsmi_la_OBJECTS = $(am_libsmi_la_OBJECTS) +libsmi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libsmi_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libsmi_la_SOURCES) +DIST_SOURCES = $(libsmi_la_SOURCES) +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(man_MANS) +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = parser-sming.y parser-smi.y \ + scanner-sming.l scanner-smi.l \ + errormacros.h data.h check.h error.h util.h \ + snprintf.h \ + scanner-smi.h parser-smi.h parser-smi.tab.h \ + scanner-sming.h parser-sming.h parser-sming.tab.h \ + $(man_MANS) + +include_HEADERS = smi.h +CLEANFILES = parser-smi.output parser-sming.output +MAINTAINERCLEANFILES = parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c \ + parser-smi.tab.h parser-sming.tab.h \ + errormacros.h + +man_MANS = libsmi.3 smi_config.3 smi_module.3 smi_macro.3 \ + smi_node.3 smi_type.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_identity.3 \ + smi_event.3 + +lib_LTLIBRARIES = libsmi.la +libsmi_la_SOURCES = data.c check.c error.c util.c snprintf.c smi.c \ + parser-smi.c scanner-smi.c \ + parser-sming.c scanner-sming.c + +libsmi_la_LDFLAGS = -version-info @VERSION_LIBTOOL@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign lib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +smi.h: $(top_builddir)/config.status $(srcdir)/smi.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +libsmi.3: $(top_builddir)/config.status $(srcdir)/libsmi.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_macro.3: $(top_builddir)/config.status $(srcdir)/smi_macro.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_module.3: $(top_builddir)/config.status $(srcdir)/smi_module.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_node.3: $(top_builddir)/config.status $(srcdir)/smi_node.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_type.3: $(top_builddir)/config.status $(srcdir)/smi_type.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_config.3: $(top_builddir)/config.status $(srcdir)/smi_config.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_render.3: $(top_builddir)/config.status $(srcdir)/smi_render.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_util.3: $(top_builddir)/config.status $(srcdir)/smi_util.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_class.3: $(top_builddir)/config.status $(srcdir)/smi_class.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_attribute.3: $(top_builddir)/config.status $(srcdir)/smi_attribute.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_event.3: $(top_builddir)/config.status $(srcdir)/smi_event.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_identity.3: $(top_builddir)/config.status $(srcdir)/smi_identity.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libsmi.la: $(libsmi_la_OBJECTS) $(libsmi_la_DEPENDENCIES) + $(libsmi_la_LINK) -rpath $(libdir) $(libsmi_la_OBJECTS) $(libsmi_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser-smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser-sming.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner-smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner-sming.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man3: $(man3_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \ + done +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man3dir)/$$inst"; \ + done +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(MANS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-man + +install-dvi: install-dvi-am + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-info: install-info-am + +install-man: install-man3 + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-man + +uninstall-man: uninstall-man3 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-includeHEADERS install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-man3 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-man uninstall-man3 + + +parser-smi.c parser-smi.tab.h: parser-smi.y scanner-smi.h parser-smi.h + $(BISON) --defines=parser-smi.tab.h -t -psmi -o parser-smi.c parser-smi.y + +parser-sming.c: parser-sming.y scanner-sming.h parser-sming.h + $(BISON) --defines=parser-sming.tab.h -t -psming -o parser-sming.c parser-sming.y + +scanner-smi.c: scanner-smi.l scanner-smi.h parser-smi.tab.h + $(FLEX) -Cfe -Psmi -t scanner-smi.l > scanner-smi.c + +scanner-sming.c: scanner-sming.l scanner-sming.h parser-sming.tab.h + $(FLEX) -Cfe -Psming -t scanner-sming.l > scanner-sming.c + +error.h data.lo: errormacros.h + +errormacros.h: error.c + cat error.c | grep ERR_ | \ + sed -e 's/^.*\(ERR_[a-zA-Z0-9_]*\).*$$/\1/' | \ + awk '{printf "#define %-50s %d\n", $$1, NR-1}' > errormacros.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/check.c b/lib/check.c new file mode 100644 index 0000000..7338c12 --- /dev/null +++ b/lib/check.c @@ -0,0 +1,2207 @@ +/* + * check.c -- + * + * This module contains semantics checks that are shared between + * the SMI parser backends. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: check.c 7640 2008-01-31 15:29:52Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "data.h" +#include "check.h" +#include "smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + *---------------------------------------------------------------------- + * + * compareValues -- + * + * Compare two SmiValues a and b. + * + * Results: + * <= -2 if a is less than b-1 + * -1 if a is b-1 + * 0 if equal + * 1 if a is b+1 + * >= 2 if a is greater than b+1 + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +compareValues(SmiValue *a, SmiValue *b) { + if ((a->basetype == SMI_BASETYPE_UNSIGNED32) && + (b->basetype == SMI_BASETYPE_UNSIGNED32)) { + if (a->value.unsigned32 == b->value.unsigned32) { + return 0; + } else { + if (a->value.unsigned32 > b->value.unsigned32) { + if (a->value.unsigned32 == b->value.unsigned32 + 1) { + return 1; + } else { + return 2; + } + } else if (a->value.unsigned32 < b->value.unsigned32) { + if (a->value.unsigned32 + 1 == b->value.unsigned32) { + return -1; + } else { + return -2; + } + } + } + } + if ((a->basetype == SMI_BASETYPE_INTEGER32) && + (b->basetype == SMI_BASETYPE_INTEGER32)) { + if (a->value.integer32 == b->value.integer32) { + return 0; + } else { + if (a->value.integer32 > b->value.integer32) { + if (a->value.integer32 == b->value.integer32 + 1) { + return 1; + } else { + return 2; + } + } else if (a->value.integer32 < b->value.integer32) { + if (a->value.integer32 + 1 == b->value.integer32) { + return -1; + } else { + return -2; + } + } + } + } + if ((a->basetype == SMI_BASETYPE_UNSIGNED32) && + (b->basetype == SMI_BASETYPE_INTEGER32)) { + if ((b->value.integer32 < -1) || + ((a->value.unsigned32 > 1) && + (a->value.unsigned32-1 > 2147483647))) { + return 2; + } + return a->value.unsigned32 - b->value.integer32; + } + if ((a->basetype == SMI_BASETYPE_INTEGER32) && + (b->basetype == SMI_BASETYPE_UNSIGNED32)) { + if ((a->value.integer32 < -1) || + ((b->value.unsigned32 > 1) && + (b->value.unsigned32-1 > 2147483647))) { + return -2; + } + return b->value.unsigned32 - a->value.integer32; + } + return 0; +} + + + +/* + *---------------------------------------------------------------------- + * + * redefinition -- + * + * Print out error messages about a (case) redefinition. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +redefinition(Parser *parser, int line1, char *name1, Module *module, + int line2, char *name2) +{ + char *tmp = parser->path; + int equal = (strcmp(name1, name2) == 0); + + if (!strcmp(name1, "IpAddress") || + !strcmp(name1, "TimeTicks") || + !strcmp(name1, "Opaque") || + !strcmp(name1, "Integer32") || + !strcmp(name1, "Unsigned32") || + !strcmp(name1, "Counter32") || + !strcmp(name1, "Gauge32") || + !strcmp(name1, "Counter64") || + !strcmp(name1, "Integer64") || + !strcmp(name1, "Unsigned64")) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_BASETYPE_REDEFINITION, line1, name1); + } else { + smiPrintError(parser, ERR_BASETYPE_REDEFINITION, name1); + } + } else { + if (! module) { + if (equal) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_REDEFINITION, line1, name1); + } else { + smiPrintError(parser, ERR_REDEFINITION, name1); + } + } else { + if (line1) { + smiPrintErrorAtLine(parser, ERR_CASE_REDEFINITION, + line1, name1, name2); + } else { + smiPrintError(parser, ERR_CASE_REDEFINITION, name1, name2); + } + } + } else { + if (equal) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_EXT_REDEFINITION, line1, + module->export.name, name1); + } else { + smiPrintError(parser, ERR_EXT_REDEFINITION, + module->export.name, name1); + } + } else { + if (line1) { + smiPrintErrorAtLine(parser, ERR_EXT_CASE_REDEFINITION, line1, + name1, module->export.name, name2); + } else { + smiPrintError(parser, ERR_EXT_CASE_REDEFINITION, + name1, module->export.name, name2); + } + } + parser->path = module->export.path; + } + smiPrintErrorAtLine(parser, ERR_PREVIOUS_DEFINITION, line2, name2); + if (module) { + parser->path = tmp; + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckObjectName -- + * + * Check whether a given object name already exists + * in a given module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckObjectName(Parser *parser, Module *module, char *name) +{ + Object *objectPtr; + Type *typePtr; + Module *modPtr; + + int errRedef = smiGetErrorSeverity(ERR_REDEFINITION); + int errExtRedef = smiGetErrorSeverity(ERR_EXT_REDEFINITION); + int errCaseRedef = smiGetErrorSeverity(ERR_CASE_REDEFINITION); + int errExtCaseRedef = smiGetErrorSeverity(ERR_EXT_CASE_REDEFINITION); + + if (! (parser->flags & SMI_FLAG_ERRORS) + || (errRedef > smiHandle->errorLevel + && errExtRedef > smiHandle->errorLevel + && errCaseRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel)) { + return; + } + + /* + * This would really benefit from having a hash table... + */ + + for (modPtr = smiHandle->firstModulePtr; + modPtr; modPtr = modPtr->nextPtr) { + + /* + * Skip all external modules if we are not interested in + * generating warning on extern redefinitions. + */ + + if (errExtRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel + && modPtr != module) { + continue; + } + + for (objectPtr = modPtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + if (! (objectPtr->flags & FLAG_INCOMPLETE) + && ! strcasecmp(name, objectPtr->export.name)) { + redefinition(parser, 0, name, + modPtr == module ? NULL : objectPtr->modulePtr, + objectPtr->line, objectPtr->export.name); + } + } + for (typePtr = modPtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + /* TODO: must ignore SEQUENCE types here ... */ + if (! (typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && !strcasecmp(name, typePtr->export.name)) { + redefinition(parser, 0, name, + modPtr == module ? NULL : typePtr->modulePtr, + typePtr->line, typePtr->export.name); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeName -- + * + * Check whether a given type name already exists + * in a given module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeName(Parser *parser, Module *module, char *name, int line) +{ + Object *objectPtr; + Type *typePtr; + Module *modPtr; + + int errRedef = smiGetErrorSeverity(ERR_REDEFINITION); + int errExtRedef = smiGetErrorSeverity(ERR_EXT_REDEFINITION); + int errCaseRedef = smiGetErrorSeverity(ERR_CASE_REDEFINITION); + int errExtCaseRedef = smiGetErrorSeverity(ERR_EXT_CASE_REDEFINITION); + + if (! (parser->flags & SMI_FLAG_ERRORS) + || (errRedef > smiHandle->errorLevel + && errExtRedef > smiHandle->errorLevel + && errCaseRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel)) { + return; + } + + /* + * This would really benefit from having a hash table... + */ + + for (modPtr = smiHandle->firstModulePtr; + modPtr; modPtr = modPtr->nextPtr) { + + /* + * Skip all external modules if we are not interested in + * generating warning on extern redefinitions. + */ + + if (errExtRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel + && modPtr != module) { + continue; + } + + for (typePtr = modPtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + /* TODO: must ignore SEQUENCE types here ... */ + if (! (typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && !strcasecmp(name, typePtr->export.name)) { + redefinition(parser, line, name, + modPtr == module ? NULL : typePtr->modulePtr, + typePtr->line, typePtr->export.name); + } + } + + for (objectPtr = modPtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + if (! (objectPtr->flags & FLAG_INCOMPLETE) + && ! strcasecmp(name, objectPtr->export.name)) { + redefinition(parser, line, name, + modPtr == module ? NULL : objectPtr->modulePtr, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckFormat -- + * + * Check whether a format specification is valid. + * + * Results: + * Returns 1 of the format is acceptable and 0 otherwise. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +smiCheckFormat(Parser *parser, SmiBasetype basetype, char *format, int line) +{ + int n, repeat, error = 1; + char *p = format; + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_UNSIGNED64: + if (*p == 'x' || *p == 'o' || *p == 'b') { + p++; + error = (*p != 0); + } else if (*p == 'd') { + p++; + if (! *p) { + error = 0; + break; + } + if (*p != '-') { + error = 0; + break; + } + for (n = 0, p++; *p && isdigit((int) *p); p++, n++) ; + error = (*p != 0 || n <= 0); + } + break; + case SMI_BASETYPE_OCTETSTRING: + while (*p) { + if ((repeat = (*p == '*'))) p++; /* part 1 */ + + for (n = 0; *p && isdigit((int) *p); p++, n++) ;/* part 2 */ + if (! *p || n == 0) { + break; + } + + if (*p != 'x' && *p != 'd' && *p != 'o' /* part 3 */ + && *p != 'a' && *p != 't') { + break; + } + p++; + + if (*p /* part 4 */ + && ! isdigit((int) *p) && *p != '*') p++; + + if (repeat && *p /* part 5 */ + && ! isdigit((int) *p) && *p != '*') p++; + } + error = *p; + break; + default: + break; + } + + if (error) { + if (line) { + smiPrintErrorAtLine(parser, ERR_INVALID_FORMAT, line, format); + } else { + smiPrintError(parser, ERR_INVALID_FORMAT, format); + } + } + + return ! error; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumberRedefinition -- + * + * Check whether named numbers redefine names or numbers. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumberRedefinition(Parser *parser, Type *type) +{ + List *list1Ptr, *list2Ptr; + NamedNumber *nn1Ptr, *nn2Ptr; + + if (! type || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (list1Ptr = type->listPtr; + list1Ptr; list1Ptr = list1Ptr->nextPtr) { + + nn1Ptr = (NamedNumber *)(list1Ptr->ptr); + + for (list2Ptr = list1Ptr->nextPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nn2Ptr = (NamedNumber *)(list2Ptr->ptr); + + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (!strcmp(nn1Ptr->export.name, nn2Ptr->export.name)) { + smiPrintErrorAtLine(parser, ERR_ENUM_NAME_REDEFINITION, + type->line, + nn1Ptr->export.name); + } + if (nn1Ptr->export.value.value.integer32 + == nn2Ptr->export.value.value.integer32) { + smiPrintErrorAtLine(parser, ERR_ENUM_NUMBER_REDEFINITION, + type->line, + nn1Ptr->export.value.value.integer32); + } + } + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (!strcmp(nn1Ptr->export.name, nn2Ptr->export.name)) { + smiPrintErrorAtLine(parser, ERR_BITS_NAME_REDEFINITION, + type->line, + nn1Ptr->export.name); + } + if (nn1Ptr->export.value.value.unsigned32 + == nn2Ptr->export.value.value.unsigned32) { + smiPrintErrorAtLine(parser, ERR_BITS_NUMBER_REDEFINITION, + type->line, + nn1Ptr->export.value.value.unsigned32); + } + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumberSubtyping -- + * + * Check whether named numbers in a derived type are compatible + * with the named numbers in the parent type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumberSubtyping(Parser *parser, Type *type) +{ + List *list1Ptr, *list2Ptr; + NamedNumber *nn1Ptr, *nn2Ptr; + + if (! type || ! type->parentPtr || ! type->parentPtr->parentPtr + || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (list1Ptr = type->listPtr; + list1Ptr; list1Ptr = list1Ptr->nextPtr) { + + nn1Ptr = (NamedNumber *)(list1Ptr->ptr); + + for (list2Ptr = type->parentPtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nn2Ptr = (NamedNumber *)(list2Ptr->ptr); + + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (! strcmp(nn1Ptr->export.name, nn2Ptr->export.name) + && nn1Ptr->export.value.value.integer32 + == nn2Ptr->export.value.value.integer32) { + break; + } + } + + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (! strcmp(nn1Ptr->export.name, nn2Ptr->export.name) + && nn1Ptr->export.value.value.unsigned32 + == nn2Ptr->export.value.value.unsigned32) { + break; + } + } + } + + if (! list2Ptr) { + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (type->parentPtr->export.name) { + smiPrintErrorAtLine(parser, ERR_ENUM_SUBTYPE_OF, + type->line, + nn1Ptr->export.name, + nn1Ptr->export.value.value.integer32, + type->parentPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_ENUM_SUBTYPE, + type->line, + nn1Ptr->export.name, + nn1Ptr->export.value.value.integer32); + } + } + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (type->parentPtr->export.name) { + smiPrintErrorAtLine(parser, ERR_BITS_SUBTYPE_OF, + type->line, + nn1Ptr->export.name, + type->parentPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_BITS_SUBTYPE, + type->line, + nn1Ptr->export.name); + } + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumbersOrder -- + * + * Check and normalize the order of named numbers in a bits + * or enumeration type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumbersOrder(Parser *parser, Type *type) +{ + List *listPtr, *lastPtr, *nextPtr, *ptr; + NamedNumber *nnPtr; + int shutup = 0; + + if (! type || ! type->parentPtr + || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + /* Check whether the first bit has been given a name. */ + + if (type->export.basetype == SMI_BASETYPE_BITS) { + for (listPtr = type->listPtr; listPtr; listPtr = listPtr->nextPtr) { + nnPtr = (NamedNumber *)(listPtr->ptr); + if (nnPtr->export.value.value.unsigned32 == 0) break; + } + if (! listPtr) { + smiPrintErrorAtLine(parser, ERR_BITS_ZERO_NOT_NAMED, type->line); + } + } + + lastPtr = NULL; + for (listPtr = type->listPtr; listPtr; listPtr = nextPtr) { + + nextPtr = listPtr->nextPtr; + + nnPtr = (NamedNumber *)(listPtr->ptr); + + if (lastPtr) { + + if ((type->export.basetype == SMI_BASETYPE_ENUM) && + (((NamedNumber *)(listPtr->ptr))->export.value.value.integer32 <= + ((NamedNumber *)(lastPtr->ptr))->export.value.value.integer32)) { + if (!shutup) { + smiPrintErrorAtLine(parser, ERR_NAMED_NUMBERS_NOT_ASCENDING, + type->line, + type->export.name); + shutup = 1; + } + /* remove listPtr from the list */ + lastPtr->nextPtr = listPtr->nextPtr; + /* re-insert listPtr at the right position */ + if (((NamedNumber *)(type->listPtr->ptr))->export.value.value.integer32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.integer32) { + listPtr->nextPtr = type->listPtr; + type->listPtr = listPtr; + } else { + for (ptr = type->listPtr; ptr; ptr = ptr->nextPtr) { + if ((!ptr->nextPtr) || + (((NamedNumber *)(ptr->nextPtr->ptr))->export.value.value.integer32 >= ((NamedNumber *)(listPtr->ptr))->export.value.value.integer32)) { + listPtr->nextPtr = ptr->nextPtr; + ptr->nextPtr = listPtr; + break; + } + } + } + /* set lastPtr to the last processed item */ + for (lastPtr = listPtr; lastPtr->nextPtr != nextPtr; + lastPtr = lastPtr->nextPtr); + continue; + } + if ((type->export.basetype == SMI_BASETYPE_BITS) && + (((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32 <= + ((NamedNumber *)(lastPtr->ptr))->export.value.value.unsigned32)) { + if (!shutup) { + smiPrintErrorAtLine(parser, ERR_NAMED_NUMBERS_NOT_ASCENDING, + type->line, + type->export.name); + shutup = 1; + } + /* remove listPtr from the list */ + lastPtr->nextPtr = listPtr->nextPtr; + /* re-insert listPtr at the right position */ + if (((NamedNumber *)(type->listPtr->ptr))->export.value.value.unsigned32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32) { + listPtr->nextPtr = type->listPtr; + type->listPtr = listPtr; + } else { + for (ptr = type->listPtr; ptr; ptr = ptr->nextPtr) { + if ((!ptr->nextPtr) || + (((NamedNumber *)(ptr->nextPtr->ptr))->export.value.value.unsigned32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32)) { + listPtr->nextPtr = ptr->nextPtr; + ptr->nextPtr = listPtr; + break; + } + } + } + /* set lastPtr to the last processed item */ + for (lastPtr = listPtr; lastPtr->nextPtr != nextPtr; + lastPtr = lastPtr->nextPtr); + continue; + } + } + lastPtr = listPtr; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckIndex -- + * + * Check whether an index conforms to the SMI restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckIndex(Parser *parser, Object *object) +{ + List *listPtr, *list2Ptr; + Object *indexPtr; + Type *typePtr, *rTypePtr; + Range *rangePtr; + NamedNumber *nnPtr; + Node *nodePtr; + int minSize, maxSize, len = 0; + int aux = 0, cols = 0, acc = 0; + + for (nodePtr = object->nodePtr->firstChildPtr, cols = 0; + nodePtr; nodePtr = nodePtr->nextPtr) { + cols++; + } + + for (listPtr = object->listPtr; listPtr; listPtr = listPtr->nextPtr) { + + indexPtr = (Object *) listPtr->ptr; + typePtr = indexPtr->typePtr; + + /* checkObjects() already handles unknown objects */ + if (indexPtr->export.nodekind != SMI_NODEKIND_COLUMN && + ((indexPtr->flags & FLAG_INCOMPLETE) == 0)) { + smiPrintErrorAtLine(parser, ERR_INDEX_NOT_COLUMN, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + + if (!typePtr) + continue; + + switch (typePtr->export.basetype) { + case SMI_BASETYPE_INTEGER32: + for (rTypePtr = typePtr; rTypePtr && ! rTypePtr->listPtr; + rTypePtr = rTypePtr->parentPtr) { + } + if (! rTypePtr) { + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_NO_RANGE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_NO_RANGE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + } else { + for (list2Ptr = rTypePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + rangePtr = (Range *) list2Ptr->ptr; + if (rangePtr->export.maxValue.value.integer32 < 0) { + smiPrintErrorAtLine(parser, ERR_INDEX_RANGE_NEGATIVE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + break; + } + } + } + len++; + break; + case SMI_BASETYPE_OCTETSTRING: + /* TODO: We need to check ranges of parent types as well + if this type does not have a range restriction. */ + for (rTypePtr = typePtr; rTypePtr && ! rTypePtr->listPtr; + rTypePtr = rTypePtr->parentPtr) { + } + minSize = 65535; + maxSize = -1; + if (! rTypePtr) { + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_STRING_NO_SIZE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_STRING_NO_SIZE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + minSize = 0; + maxSize = 65535; + } else { + for (list2Ptr = rTypePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + rangePtr = (Range *) list2Ptr->ptr; + if (rangePtr->export.minValue.value.integer32 < minSize) { + minSize = rangePtr->export.minValue.value.integer32; + } + if (rangePtr->export.maxValue.value.integer32 > maxSize) { + maxSize = rangePtr->export.maxValue.value.integer32; + } + } + if (minSize == 65535) { + minSize = 0; + } + if (maxSize < 0) { + maxSize = 65535; + } + } + len += maxSize; + if (minSize != maxSize) { + if (! (object->export.implied && (! listPtr->nextPtr))) { + len++; + } + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_OID_NO_SIZE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_OID_NO_SIZE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + len += 128; + if (!indexPtr->export.implied) { + len++; + } + break; + case SMI_BASETYPE_UNSIGNED32: + len++; + break; + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED64: + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + smiPrintErrorAtLine(parser, ERR_INDEX_BASETYPE, object->line, + typePtr->export.name ? typePtr->export.name + : "[unknown]", + indexPtr->export.name, object->export.name); + break; + case SMI_BASETYPE_BITS: + /* TODO: BITS are somehow treated as octet strings - but + what is the max len? */ + break; + case SMI_BASETYPE_ENUM: + for (list2Ptr = typePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nnPtr = (NamedNumber *)(list2Ptr->ptr); + + if (nnPtr->export.value.value.integer32 < 0) { + smiPrintErrorAtLine(parser, ERR_INDEX_ENUM_NEGATIVE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + break; + } + } + len++; + break; + } + + if (indexPtr->export.value.basetype != SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parser, ERR_INDEX_DEFVAL, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + + for (nodePtr = object->nodePtr->firstChildPtr; + nodePtr; nodePtr = nodePtr->nextPtr) { + if (indexPtr == nodePtr->lastObjectPtr) { + aux++; + break; + } + } + } + + if (object->export.oidlen + 1 + len > 128) { + smiPrintErrorAtLine(parser, ERR_INDEX_TOO_LARGE, object->line, + object->export.name, + (object->export.oidlen + 1 + len) - 128); + } + + /* RFC 2578 section 7.7: Auxiliary objects must be not-accessible except + in some interesting corner cases. */ + + for (listPtr = object->listPtr; listPtr; listPtr = listPtr->nextPtr) { + + indexPtr = (Object *) listPtr->ptr; + typePtr = indexPtr->typePtr; + + if (aux < cols) { + if ((parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (indexPtr->nodePtr->parentPtr == object->nodePtr)) { + if (indexPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parser, ERR_INDEX_ACCESSIBLE, + object->line, + indexPtr->export.name, object->export.name); + } + } + } + + for (nodePtr = object->nodePtr->firstChildPtr, acc = 0; + nodePtr; nodePtr = nodePtr->nextPtr) { + if (indexPtr == nodePtr->lastObjectPtr + && indexPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + acc++; + } + } + } + + if ((parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && aux == cols && acc != 1) { + smiPrintErrorAtLine(parser, ERR_INDEX_NON_ACCESSIBLE, + object->line, object->export.name); + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckAugment -- + * + * Check whether a table augmentation conforms to the SMI + * restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckAugment(Parser *parser, Object *object) +{ + if (! object->relatedPtr) { + return; + } + + if (object->relatedPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parser, ERR_AUGMENT_NO_ROW, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + if (object->relatedPtr->export.indexkind == SMI_INDEX_INDEX) + return; + + if (object->export.indexkind == SMI_INDEX_AUGMENT) + { + smiPrintErrorAtLine(parser, ERR_AUGMENT_NESTED, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + if (object->relatedPtr->export.indexkind != SMI_INDEX_SPARSE) { + smiPrintErrorAtLine(parser, ERR_EXTENDS_WRONG_ROW_TYPE, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + /* + * TODO: Check the size of the instance identifier and the OID + * for this entry node. + */ +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeRanges -- + * + * Check whether all ranges of a given type are valid. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeRanges(Parser *parser, Type *type) +{ + List *p, *nextPtr, *pp, *nextPP; + + for (p = type->listPtr; p; p = nextPtr) { + + nextPtr = p->nextPtr; + + ((Range *)p->ptr)->typePtr = type; + + if (type->export.basetype == SMI_BASETYPE_INTEGER32) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.minValue.value.unsigned32 > + 2147483647)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.maxValue.value.unsigned32 > + 2147483647)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_INTEGER32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_INTEGER32; + } + + if (type->export.basetype == SMI_BASETYPE_UNSIGNED32) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.minValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.maxValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_UNSIGNED32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_UNSIGNED32; + } + + if (type->export.basetype == SMI_BASETYPE_OCTETSTRING) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.minValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.maxValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.minValue.value.unsigned32 > 65535)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.maxValue.value.unsigned32 > 65535)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_UNSIGNED32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_UNSIGNED32; + } + + if (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)p->ptr)->export.maxValue) > 0) { + SmiValue v; + v = ((Range *)p->ptr)->export.minValue; + ((Range *)p->ptr)->export.minValue = ((Range *)p->ptr)->export.maxValue; + ((Range *)p->ptr)->export.maxValue = v; + smiPrintError(parser, ERR_EXCHANGED_RANGE_LIMITS); + } + + /* sort */ + p->nextPtr = NULL; + if (p != type->listPtr) { + if (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)type->listPtr->ptr)->export.minValue) <= 0) { + if (compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)type->listPtr->ptr)->export.minValue) >= 0) { + smiPrintError(parser, ERR_RANGE_OVERLAP); + } + smiPrintError(parser, ERR_RANGES_NOT_ASCENDING); + p->nextPtr = type->listPtr; + type->listPtr = p; + } else { + for (pp = type->listPtr; pp; pp = nextPP) { + nextPP = pp->nextPtr; + if ((!nextPP) || + (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)nextPP->ptr)->export.minValue) <= 0)) { + if (((nextPP) && + (compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)nextPP->ptr)->export.minValue) >= 0)) || + (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)pp->ptr)->export.maxValue) <= 0)) { + smiPrintError(parser, ERR_RANGE_OVERLAP); + } + p->nextPtr = pp->nextPtr; + pp->nextPtr = p; + if (p->nextPtr) { + smiPrintError(parser, ERR_RANGES_NOT_ASCENDING); + pp->nextPtr = NULL; + } + break; + } + } + } + } + } + + /* range normalization */ + for (p = type->listPtr, pp = p; p; p = nextPtr) { + nextPtr = p->nextPtr; + if (nextPtr && + compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)nextPtr->ptr)->export.minValue) == -1) { + ((Range *)nextPtr->ptr)->export.minValue = + ((Range *)p->ptr)->export.minValue; + if (p == type->listPtr) { + type->listPtr = nextPtr; + pp = nextPtr; + } else { + pp->nextPtr = nextPtr; + } + smiFree(p); + } else { + pp = p; + } + } + +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeFormat -- + * + * Check whether we know a format specification for integer types. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeFormat(Parser *parser, Type *type) +{ + Type *t; + + if (! type || !type->export.name) { + return; + } + + if (type->export.basetype != SMI_BASETYPE_INTEGER32 + && type->export.basetype != SMI_BASETYPE_INTEGER64 + && type->export.basetype != SMI_BASETYPE_UNSIGNED32 + && type->export.basetype != SMI_BASETYPE_UNSIGNED64 + && type->export.basetype != SMI_BASETYPE_OCTETSTRING) { + return; + } + + for (t = type; t; t = t->parentPtr) { + if (t->export.format) { + break; + } + } + + if (! t) { + smiPrintErrorAtLine(parser, ERR_TYPE_WITHOUT_FORMAT, type->line, + type->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckValueType -- + * + * Check whether a given value matches a given type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckValueType(Parser *parser, SmiValue *value, Type *type, int line) +{ + List *p, *nextPtr; + + if (value && (value->basetype != SMI_BASETYPE_UNKNOWN) && type) { + + /* + * If defval type and object type don't match, check whether + * the defval value is in the allowed range of the object's basetype. + */ + if ((type->export.basetype == SMI_BASETYPE_INTEGER32) || + (type->export.basetype == SMI_BASETYPE_ENUM)) { + if (((value->basetype == SMI_BASETYPE_INTEGER64) && + ((value->value.integer64 < (SmiInteger64)(-2147483647 - 1)) || + (value->value.integer64 > (SmiInteger64)2147483647))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED32) && + ((value->value.unsigned32 > 2147483647))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED64) && + ((value->value.unsigned32 > 2147483647)))) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_BASETYPE, line); + } + } + if (type->export.basetype == SMI_BASETYPE_UNSIGNED32) { + if (((value->basetype == SMI_BASETYPE_INTEGER64) && + ((value->value.integer64 < 0) || + (value->value.integer64 > (SmiInteger64)4294967295UL))) || + ((value->basetype == SMI_BASETYPE_INTEGER32) && + ((value->value.integer32 < 0))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED64) && + ((value->value.unsigned32 > (SmiUnsigned32)4294967295UL)))) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_BASETYPE, line); + } + } + + /* + * "cast" the defval to the object's basetype. + */ + value->basetype = type->export.basetype; + + /* + * check whether the defval matches the object's range restriction. + */ + if ((value->basetype == SMI_BASETYPE_UNSIGNED32) || + (value->basetype == SMI_BASETYPE_UNSIGNED64) || + (value->basetype == SMI_BASETYPE_INTEGER32) || + (value->basetype == SMI_BASETYPE_INTEGER64)) { + for (p = type->listPtr; p; p = nextPtr) { + nextPtr = p->nextPtr; + if ((compareValues(&((Range *)p->ptr)->export.minValue, + value) <= 0) && + (compareValues(&((Range *)p->ptr)->export.maxValue, + value) >= 0)) { + break; + } + } + if ((p == NULL) && type->listPtr) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_RANGE, line); + } + } + + /* + * check whether the defval matches the object's enumeration. + */ + if (value->basetype == SMI_BASETYPE_ENUM) { + for (p = type->listPtr; p; p = nextPtr) { + nextPtr = p->nextPtr; + + if (((NamedNumber *)(p->ptr))->export.value.value.integer32 == + value->value.integer32) { + break; + } + } + if (p == NULL) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_ENUM, line); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckDefault -- + * + * Check whether the default value (if present) matches the + * underlying type and restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckDefault(Parser *parser, Object *object) +{ + smiCheckValueType(parser, &object->export.value, object->typePtr, + object->line); +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeUsage -- + * + * Check whether the types of all objects are used appropriately. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +checkInetAddressType(Parser *parserPtr, Module *modulePtr, Object *objectPtr) +{ + Module *inetModulePtr = NULL; /* RFC 3291 */ + Type *inetAddressTypePtr = NULL; /* RFC 3291 */ + Type *inetAddressPtr = NULL; /* RFC 3291 */ + Node *nodePtr; + List *listPtr = NULL; + int i; + + const char *protected[] = { + "InetAddressIPv4", "InetAddressIPv6", + "InetAddressIPv4z", "InetAddressIPv6z", + "InetAddressDNS", NULL + }; + + inetModulePtr = findModuleByName("INET-ADDRESS-MIB"); + if (! inetModulePtr) { + return; + } + + inetAddressTypePtr = findTypeByModuleAndName(inetModulePtr, + "InetAddressType"); + inetAddressPtr = findTypeByModuleAndName(inetModulePtr, + "InetAddress"); + + if (!inetAddressTypePtr || !inetAddressPtr) { + return; + } + + /* check InetAddressType/InetAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, inetAddressPtr)) { + Object *indexObject = NULL; + Object *entryObject = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (entryObject) { + switch (entryObject->export.indexkind) { + case SMI_INDEX_INDEX: + indexObject = entryObject; + break; + case SMI_INDEX_AUGMENT: + indexObject = entryObject->relatedPtr; + break; + default: + /* xxx need to handle other index constructions */ + indexObject = NULL; + break; + } + } + if (indexObject) { + for (listPtr = indexObject->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + Object *iObject = (Object *) listPtr->ptr; + if (iObject + && iObject->typePtr == inetAddressTypePtr) { + break; + } + } + + } + if (! indexObject || ! listPtr) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->subid < objectPtr->nodePtr->subid && + nodePtr->lastObjectPtr->typePtr != + inetAddressTypePtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->subid >= objectPtr->nodePtr->subid) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESS_WITHOUT_TYPE, + objectPtr->line); + } + } + } + + /* check InetAddressType subtyping */ + if (objectPtr->typePtr->parentPtr == inetAddressTypePtr) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESSTYPE_SUBTYPED, + objectPtr->line); + } + + /* check for TCs that should not be used directly */ + for (i = 0; protected[i]; i++) { + if (objectPtr->typePtr == findTypeByModuleAndName(inetModulePtr, + protected[i])) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESS_SPECIFIC, + objectPtr->line, + objectPtr->typePtr->export.name); + break; + } + } +} + + +static void +checkTransportAddressType(Parser *parserPtr, Module *modulePtr, Object *objectPtr) +{ + Module *transportModulePtr = NULL; /* RFC 3419 */ + Type *transportAddressTypePtr = NULL; /* RFC 3419 */ + Type *transportAddressPtr = NULL; /* RFC 3419 */ + Type *transportDomainPtr = NULL; /* RFC 3419 */ + Node *nodePtr; + List *listPtr = NULL; + int i; + + const char *protected[] = { + "TransportAddressIPv4", "TransportAddressIPv6", + "TransportAddressIPv4z", "TransportAddressIPv6z", + "TransportAddressDNS", "TransportAddressLocal", + NULL + }; + + transportModulePtr = findModuleByName("TRANSPORT-ADDRESS-MIB"); + if (! transportModulePtr) { + return; + } + + transportAddressTypePtr = findTypeByModuleAndName(transportModulePtr, + "TransportAddressType"); + transportAddressPtr = findTypeByModuleAndName(transportModulePtr, + "TransportAddress"); + transportDomainPtr = findTypeByModuleAndName(transportModulePtr, + "TransportDomain"); + + if (!transportAddressTypePtr || !transportAddressPtr || !transportDomainPtr) { + return; + } + + /* check TransportAddressType/TransportAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, transportAddressPtr)) { + Object *indexObject = NULL; + Object *entryObject = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (entryObject) { + switch (entryObject->export.indexkind) { + case SMI_INDEX_INDEX: + indexObject = entryObject; + break; + case SMI_INDEX_AUGMENT: + indexObject = entryObject->relatedPtr; + break; + default: + /* xxx need to handle other index constructions */ + indexObject = NULL; + break; + } + } + if (indexObject) { + for (listPtr = indexObject->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + Object *iObject = (Object *) listPtr->ptr; + if (iObject + && (iObject->typePtr == transportAddressTypePtr + || iObject->typePtr == transportDomainPtr)) { + break; + } + } + } + if (! indexObject || ! listPtr) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->subid < objectPtr->nodePtr->subid && + nodePtr->lastObjectPtr->typePtr != + transportAddressTypePtr && + nodePtr->lastObjectPtr->typePtr != + transportDomainPtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->subid >= objectPtr->nodePtr->subid) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESS_WITHOUT_TYPE, + objectPtr->line); + } + } + } + + /* check TransportAddressType subtyping */ + if (objectPtr->typePtr->parentPtr == transportAddressTypePtr) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESSTYPE_SUBTYPED, + objectPtr->line); + } + + /* check for TCs that should not be used directly */ + for (i = 0; protected[i]; i++) { + if (objectPtr->typePtr == findTypeByModuleAndName(transportModulePtr, + protected[i])) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESS_SPECIFIC, + objectPtr->line, + objectPtr->typePtr->export.name); + break; + } + } +} + + +void +smiCheckTypeUsage(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Module *tcModulePtr = NULL; + Type *rowStatusPtr = NULL; + Type *storageTypePtr = NULL; + Type *taddressPtr = NULL; + Type *tdomainPtr = NULL; + NamedNumber *nnPtr; + Node *nodePtr; + + tcModulePtr = findModuleByName("SNMPv2-TC"); + if (tcModulePtr) { + rowStatusPtr = findTypeByModuleAndName(tcModulePtr, "RowStatus"); + storageTypePtr = findTypeByModuleAndName(tcModulePtr, "StorageType"); + taddressPtr = findTypeByModuleAndName(tcModulePtr, "TAddress"); + tdomainPtr = findTypeByModuleAndName(tcModulePtr, "TDomain"); + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + if (objectPtr->typePtr) { + + if (tcModulePtr) { + + /* check RowStatus DEFVAL */ + if (objectPtr->typePtr == rowStatusPtr) { + if ((objectPtr->export.value.value.integer32 >= 4) && + (objectPtr->export.value.value.integer32 <= 6)) { + nnPtr = findTypeNamedNumber(rowStatusPtr, + objectPtr->export.value.value.integer32); + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_ROWSTATUS_DEFAULT, + objectPtr->line, + nnPtr->export.name); + } + } + + /* check RowStatus read-create status */ + if (objectPtr->typePtr == rowStatusPtr) { + Object *entryObject + = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (objectPtr->export.access != SMI_ACCESS_READ_WRITE + || !entryObject->export.create) { + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_ROWSTATUS_ACCESS, + objectPtr->line); + } + } + + /* check StorageType DEFVAL */ + if (objectPtr->typePtr == storageTypePtr) { + if ((objectPtr->export.value.value.integer32 >= 4) && + (objectPtr->export.value.value.integer32 <= 5)) { + nnPtr = findTypeNamedNumber(storageTypePtr, + objectPtr->export.value.value.integer32); + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_STORAGETYPE_DEFAULT, + objectPtr->line, + nnPtr->export.name); + } + } + + /* check TDomain/TAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, taddressPtr)) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->lastObjectPtr->typePtr != tdomainPtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->lastObjectPtr->typePtr != tdomainPtr) { + smiPrintErrorAtLine(parserPtr, + ERR_TADDRESS_WITHOUT_TDOMAIN, + objectPtr->line); + } + } + + } + checkInetAddressType(parserPtr, modulePtr, objectPtr); + checkTransportAddressType(parserPtr, modulePtr, objectPtr); + } + } +} + + +static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + +static int +memberOfGroup(Object *object, Object *group) +{ + List *listPtr; + + for (listPtr = group->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (listPtr->ptr == object) { + return 1; + } + } + return 0; +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckComplianceStatus -- + * + * Make sure that all groups and objects in a compliance statement + * are at least as current as the compliance itself. + * XXX I'm not sure I traversed the whole compliance statement, + * this at least covers the common case + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckComplianceStatus(Parser *parser, Object *compliance) +{ + List *listPtr, *groupListPtr; + Object *memberPtr; + Object *group; + + for (listPtr = compliance->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + if (!memberPtr) + continue; + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_GROUP_STATUS, + compliance->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + for (listPtr = compliance->optionlistPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = ((Option *) listPtr->ptr)->objectPtr; + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_GROUP_STATUS, + ((Option *) listPtr->ptr)->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + for (listPtr = compliance->refinementlistPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = ((Refinement *) listPtr->ptr)->objectPtr; + + for (groupListPtr = compliance->listPtr; + groupListPtr; groupListPtr = groupListPtr->nextPtr) { + + group = (Object *) groupListPtr->ptr; + if (group && memberOfGroup(memberPtr, group)) { + break; + } + } + + if (! groupListPtr) { + for (groupListPtr = compliance->optionlistPtr; + groupListPtr; groupListPtr = groupListPtr->nextPtr) { + + group = ((Option *) groupListPtr->ptr)->objectPtr; + if (group && memberOfGroup(memberPtr, group)) { + break; + } + } + } + + if (! groupListPtr) { + smiPrintErrorAtLine(parser, ERR_REFINEMENT_NOT_LISTED, + ((Refinement *) listPtr->ptr)->line, + memberPtr->export.name); + } + + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_OBJECT_STATUS, + ((Refinement *) listPtr->ptr)->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckGroupMembers -- + * + * Check whether only scalar and column nodes and notifications + * are contained in a conformance group. + * + * Also ensure that group members are at least as current + * as the group itself. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckGroupMembers(Parser *parser, Object *group) +{ + List *listPtr; + Object *memberPtr; + int scalarsOrColumns = 0; + int notifications = 0; + + for (listPtr = group->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + + if (((memberPtr->export.nodekind == SMI_NODEKIND_COLUMN + || memberPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && memberPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) + || memberPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + if (memberPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + notifications++; + if (group->export.decl == SMI_DECL_OBJECTGROUP) { + smiPrintErrorAtLine(parser, + ERR_NOTIFICATION_IN_OBJECT_GROUP, + group->line, + group->export.name, + memberPtr->export.name); + } + } else { + scalarsOrColumns++; + if (group->export.decl == SMI_DECL_NOTIFICATIONGROUP) { + smiPrintErrorAtLine(parser, + ERR_OBJECT_IN_NOTIFICATION_GROUP, + group->line, + group->export.name, + memberPtr->export.name); + } + } + addObjectFlags(memberPtr, FLAG_INGROUP); + } else if (!(memberPtr->flags & FLAG_INCOMPLETE)) { + /* unknown OIDs are already flagged */ + smiPrintErrorAtLine(parser, ERR_INVALID_GROUP_MEMBER, + group->line, + memberPtr->export.name, + group->export.name); + } + if (memberPtr->export.status > group->export.status) { + smiPrintErrorAtLine(parser, ERR_GROUP_OBJECT_STATUS, + group->line, + status[group->export.status], + group->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + + if (scalarsOrColumns && notifications) { + smiPrintErrorAtLine(parser, ERR_MIXED_GROUP_MEMBERS, + group->line, + group->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckGroupMembership -- + * + * Check whether scalar and column nodes and notifications are + * contained in at least one conformance group. + * + * This function assumes that smiCheckGroupMembers() has been + * called on all group objects and smiCheckComplianceStatus() + * has been called on all compliance objects before. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckGroupMembership(Parser *parser, Object *objectPtr) +{ + int found; + + if (((objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) + || objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + + found = (objectPtr->flags & FLAG_INGROUP); + + if (! found) { + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_NOT_IN_GROUP, + objectPtr->line, + objectPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_NODE_NOT_IN_GROUP, + objectPtr->line, + objectPtr->export.name); + } + } + } + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + + found = (objectPtr->flags & FLAG_INCOMPLIANCE); + + if (!found && objectPtr->export.status != SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parser, ERR_GROUP_UNREF, + objectPtr->line, + status[objectPtr->export.status], + objectPtr->export.name); + } + } + +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckObjectReuse -- + * + * Check whether a newly defined Object represents a duplicate + * or a reused OID. + * + * Results: + * None. + * + * Side effects: + * Allocates a new Object and adjusts the objectPtr parameter. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckObjectReuse(Parser *parser, char *name, Object **objectPtr) +{ + if ((((*objectPtr)->flags & FLAG_INCOMPLETE) == 0) && + strcmp(name, (*objectPtr)->export.name)) { + if ((*objectPtr)->export.decl >= SMI_DECL_OBJECTTYPE) { + smiPrintError(parser, ERR_OID_REGISTERED, name, + (*objectPtr)->export.name); + } else { + smiPrintError(parser, ERR_OID_REUSE, name, + (*objectPtr)->export.name); + } + smiPrintErrorAtLine(parser, ERR_PREVIOUS_DEFINITION, + (*objectPtr)->line, (*objectPtr)->export.name); + *objectPtr = duplicateObject(*objectPtr, 0, parser); + } + + if ((*objectPtr)->modulePtr != parser->modulePtr) { + *objectPtr = duplicateObject(*objectPtr, 0, parser); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckNotificationOid -- + * + * Check whether SMIv2 notifications are reversible and whether + * the last sub-identifer fits into a signed 32-bit integer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNotificationOid(Parser *parser, Module *module, Object *object) +{ + static const char *name[] = { + "SNMPv2-MIB", "coldStart", + "SNMPv2-MIB", "warmStart", + "IF-MIB", "linkDown", + "IF-MIB", "linkUp", + "SNMPv2-MIB", "authenticationFailure", + /* egpNeighborLoss is not really defined in any SMI module */ + NULL, NULL }; + + int i; + + if (parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (i = 0; name[i]; i+= 2) { + if (strcmp(name[i], module->export.name) == 0 + && strcmp(name[i+1], object->export.name) == 0) { + break; + } + } + if (! name[i]) { + Node *parent = object->nodePtr->parentPtr; + if (parent && parent->subid != 0) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_NOT_REVERSIBLE, + object->line, object->export.name); + } + } + } + + if (object->nodePtr->subid > 2147483647) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_ID_TOO_LARGE, + object->line, object->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckNotificationMembers -- + * + * Check whether a newly defined notification contains only members + * of a single logical object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNotificationMembers(Parser *parser, Object *object) +{ + List *listPtr; + Object *memberPtr; +#if 0 + Node *parent = NULL; +#endif + Node *node = NULL; + + for (listPtr = object->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + + if (memberPtr->export.nodekind == SMI_NODEKIND_SCALAR) { + if (memberPtr->nodePtr && memberPtr->nodePtr->parentPtr) { + node = memberPtr->nodePtr->parentPtr; + } + } else if (memberPtr->export.nodekind == SMI_NODEKIND_COLUMN) { + if (memberPtr->nodePtr && memberPtr->nodePtr->parentPtr + && memberPtr->nodePtr->parentPtr->parentPtr) { + node = memberPtr->nodePtr->parentPtr->parentPtr; + } + } else { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_TYPE, + object->line, memberPtr->export.name, + object->export.name); + } + + if (memberPtr->export.access == SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_ACCESS, + object->line, memberPtr->export.name, + object->export.name); + } + + /* xxx check for duplicates */ +#if 0 + if (node) { + if (! parent) { + parent = node; + } else { + if (parent != node) { + /* xxx do not report multiple times xxx */ + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_MIX, + object->line, object->export.name); + } + } + } +#endif + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckUniqueness -- + * + * Check whether all entries for an UNIQUENESS clause are in fact + * columns. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void smiCheckUniqueness(Parser *parser, Object *object) +{ + List *p; + + for (p = object->uniquenessPtr; p; p = p->nextPtr) { + Object *uniq = (Object *)p->ptr; + int found = 0; + List *pp; + + if (uniq && object->typePtr) { + for (pp = object->typePtr->listPtr; pp; pp = pp->nextPtr) + if (pp->ptr && + !strcmp(uniq->export.name, ((Object *)pp->ptr)->export.name)) { + found = 1; + break; + } + if (!found) { + if (((object->export.indexkind == SMI_INDEX_AUGMENT) || + (object->export.indexkind == SMI_INDEX_SPARSE)) && + (object->relatedPtr && object->relatedPtr->typePtr)) { + for (pp = object->relatedPtr->typePtr->listPtr; pp; + pp = pp->nextPtr) + if (pp->ptr && + !strcmp(uniq->export.name, ((Object *)pp->ptr)->export.name)) { + found = 1; + break; + } + } + } + if (!found) + smiPrintErrorAtLine(parser, ERR_NOT_A_COLUMN, + object->line, uniq->export.name); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckModuleIdentityRegistration -- + * + * Check whether the module identity is registered in a well + * known (IANA) controlled location. In particular, warn if + * the OID is below iso(1).org(3).dod(6).mgmt(1) and not + * below well known registration locations such as mib-2, + * transmission, or snmpModules. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckModuleIdentityRegistration(Parser *parser, Object *object) +{ + static const SmiSubid mgmt[] = { 1, 3, 6, 1, 2 }; + static const SmiSubid mib2[] = { 1, 3, 6, 1, 2, 1 }; + static const SmiSubid transmission[] = { 1, 3, 6, 1, 2, 1, 10 }; + static const SmiSubid snmpModules[] = { 1, 3, 6, 1, 6, 3 }; + + if (object->export.oidlen < sizeof(mgmt)/sizeof(SmiSubid) + || memcmp(object->export.oid, mgmt, sizeof(mgmt)) != 0) { + return; + } + + if (object->export.oidlen == sizeof(mib2)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, mib2, sizeof(mib2)) == 0) { + return; + } + + if (object->export.oidlen == sizeof(transmission)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, transmission, sizeof(transmission)) == 0) { + return; + } + + if (object->export.oidlen == sizeof(snmpModules)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, snmpModules, sizeof(snmpModules)) == 0) { + return; + } + + smiPrintErrorAtLine(parser, ERR_MODULE_IDENTITY_REGISTRATION, + object->line); +} + +/* + *---------------------------------------------------------------------- + * + * smiyyerror -- + * + * Prints an error message from the parser. In SMIv1 and v2, + * a common error is to terminate a comment early, so if the + * current line contains a comment (parserPtr->lcline) print + * the ERR_COMMENT_TERMINATES. + * + *---------------------------------------------------------------------- + */ +void smiyyerror(char *msg, Parser *parserPtr) +{ + if (parserPtr->line == parserPtr->lcline && + parserPtr->modulePtr && + (parserPtr->modulePtr->export.language == SMI_LANGUAGE_SMIV1 || + parserPtr->modulePtr->export.language == SMI_LANGUAGE_SMIV2)) + smiPrintError(parserPtr, ERR_COMMENT_TERMINATES); + smiPrintError(parserPtr, ERR_OTHER_ERROR, msg); +} diff --git a/lib/check.h b/lib/check.h new file mode 100644 index 0000000..0b9b9ff --- /dev/null +++ b/lib/check.h @@ -0,0 +1,71 @@ +/* + * check.h -- + * + * Definitions for the semantic check functions. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: check.h 2032 2005-01-06 23:58:00Z schoenw $ + */ + +#ifndef _CHECK_H +#define _CHECK_H + + +#include "data.h" +#include "smi.h" + + +extern void smiCheckObjectName(Parser *parser, Module *module, char *name); + +extern void smiCheckTypeName(Parser *parser, + Module *module, char *name, int line); + +extern int smiCheckFormat(Parser *parser, + SmiBasetype basetype, char *format, int line); + +extern void smiCheckTypeRanges(Parser *parser, Type *type); + +extern void smiCheckTypeFormat(Parser *parser, Type *type); + +extern void smiCheckTypeUsage(Parser *parserPtr, Module *modulePtr); + +extern void smiCheckValueType(Parser *parser, SmiValue *value, Type *type, + int line); + +extern void smiCheckDefault(Parser *parser, Object *object); + +extern void smiCheckComplianceStatus(Parser *parser, Object *compliance); + +extern void smiCheckNamedNumberRedefinition(Parser *parser, Type *type); + +extern void smiCheckNamedNumberSubtyping(Parser *parser, Type *type); + +extern void smiCheckNamedNumbersOrder(Parser *parser, Type *type); + +extern void smiCheckIndex(Parser *parser, Object *object); + +extern void smiCheckAugment(Parser *parser, Object *object); + +extern void smiCheckGroupMembership(Parser *parser, Object *object); + +extern void smiCheckGroupMembers(Parser *parser, Object *group); + +extern void smiCheckObjectReuse(Parser *parser, + char *name, Object **objectPtr); + +extern void smiCheckNotificationOid(Parser *parser, Module *module, + Object *object); + +extern void smiCheckNotificationMembers(Parser *parser, Object *object); + +extern void smiCheckUniqueness(Parser *parser, Object *object); + +extern void smiCheckModuleIdentityRegistration(Parser *parser, Object *object); + +extern void smiyyerror(char *msg, Parser *parserPtr); + +#endif /* _CHECK_H */ diff --git a/lib/data.c b/lib/data.c new file mode 100644 index 0000000..b3868cc --- /dev/null +++ b/lib/data.c @@ -0,0 +1,4802 @@ +/* + * data.c -- + * + * Operations on the main data structures. + * + * Copyright (c) 1999-2002 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: data.c 7822 2008-03-01 13:22:42Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#if !defined(_MSC_VER) && !defined(__MINGW32__) +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "data.h" +#include "smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifdef BACKEND_SMI +#include "scanner-smi.h" +extern int smiparse(); +#endif + +#ifdef BACKEND_SMING +#include "scanner-sming.h" +extern int smingparse(); +#endif + +#define stringKind(kind) ( \ + (kind == KIND_ANY) ? "ANY" : \ + (kind == KIND_MODULE) ? "MODULE" : \ + (kind == KIND_MACRO) ? "MACRO" : \ + (kind == KIND_TYPE) ? "TYPE" : \ + (kind == KIND_OBJECT) ? "OBJECT" : \ + (kind == KIND_IMPORT) ? "IMPORT" : \ + "unknown" ) + + +int smiDepth = 0; +static Handle *firstHandlePtr = NULL; +static Handle *lastHandlePtr = NULL; + + +/* + *---------------------------------------------------------------------- + * + * addHandle -- + * + * Adds a libsmi handle with a given name. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Handle *addHandle(const char *name) +{ + Handle *handlePtr; + + handlePtr = (Handle *) smiMalloc(sizeof(Handle)); + + handlePtr->name = smiStrdup(name); + + handlePtr->nextPtr = NULL; + handlePtr->prevPtr = lastHandlePtr; + if (!firstHandlePtr) firstHandlePtr = handlePtr; + if (lastHandlePtr) lastHandlePtr->nextPtr = handlePtr; + lastHandlePtr = handlePtr; + + return (handlePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * removeHandle -- + * + * Removes a given libsmi handle. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void removeHandle(Handle *handlePtr) +{ + if (handlePtr->prevPtr) { + handlePtr->prevPtr->nextPtr = handlePtr->nextPtr; + } else { + firstHandlePtr = handlePtr->nextPtr; + } + if (handlePtr->nextPtr) { + handlePtr->nextPtr->prevPtr = handlePtr->prevPtr; + } else { + lastHandlePtr = handlePtr->prevPtr; + } + + smiFree(handlePtr->name); + smiFree(handlePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findHandleByName -- + * + * Lookup an libsmi handle by its name. + * + * Results: + * A pointer to the Handle structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Handle *findHandleByName(const char *name) +{ + Handle *handlePtr; + + if (!name) + return NULL; + + for (handlePtr = firstHandlePtr; handlePtr; + handlePtr = handlePtr->nextPtr) { + if (!strcmp(handlePtr->name, name)) { + return (handlePtr); + } + } + + return NULL; + +} + + + +/* + *---------------------------------------------------------------------- + * + * addView -- + * + * Add a module to the `view' (the list of modules, seen by the user). + * + * Results: + * A pointer to the new View structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +View *addView(const char *modulename) +{ + View *viewPtr; + + viewPtr = (View *) smiMalloc(sizeof(View)); + + viewPtr->name = smiStrdup(modulename); + viewPtr->nextPtr = NULL; + viewPtr->prevPtr = smiHandle->lastViewPtr; + if (!smiHandle->firstViewPtr) smiHandle->firstViewPtr = viewPtr; + if (smiHandle->lastViewPtr) smiHandle->lastViewPtr->nextPtr = viewPtr; + smiHandle->lastViewPtr = viewPtr; + + return (viewPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * isInView -- + * + * Check, whether a given module is in the current view. + * + * Results: + * != 0 if in view, 0 otherwise. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int isInView(const char *modulename) +{ + View *viewPtr; + +#if 0 + if (smiHandle->flags & SMI_FLAG_VIEWALL) { + return 1; + } +#endif + + for (viewPtr = smiHandle->firstViewPtr; viewPtr; viewPtr = viewPtr->nextPtr) { + if (!strcmp(modulename, viewPtr->name)) { + return 1; + } + } + return 0; +} + + +/* + *---------------------------------------------------------------------- + * + * addModule -- + * + * Create a new MIB module. + * + * Results: + * A pointer to the new Module structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *addModule(char *modulename, char *path, ModuleFlags flags, + Parser *parserPtr) +{ + Module *modulePtr; + + modulePtr = (Module *) smiMalloc(sizeof(Module)); + + modulePtr->export.name = modulename; + modulePtr->export.path = path; + modulePtr->export.language = SMI_LANGUAGE_UNKNOWN; + modulePtr->export.organization = NULL; + modulePtr->export.contactinfo = NULL; + modulePtr->export.description = NULL; + modulePtr->export.reference = NULL; + modulePtr->export.conformance = 0; + + modulePtr->lastUpdated = 0; + modulePtr->flags = flags; + modulePtr->objectPtr = NULL; + + modulePtr->prefixNodePtr = NULL; + modulePtr->firstObjectPtr = NULL; + modulePtr->lastObjectPtr = NULL; + modulePtr->firstTypePtr = NULL; + modulePtr->lastTypePtr = NULL; + modulePtr->firstMacroPtr = NULL; + modulePtr->lastMacroPtr = NULL; + modulePtr->firstImportPtr = NULL; + modulePtr->lastImportPtr = NULL; + modulePtr->firstRevisionPtr = NULL; + modulePtr->lastRevisionPtr = NULL; + + modulePtr->numImportedIdentifiers = 0; + modulePtr->numStatements = 0; + modulePtr->numModuleIdentities = 0; + + modulePtr->nextPtr = NULL; + modulePtr->prevPtr = smiHandle->lastModulePtr; + if (!smiHandle->firstModulePtr) smiHandle->firstModulePtr = modulePtr; + if (smiHandle->lastModulePtr) smiHandle->lastModulePtr->nextPtr = modulePtr; + smiHandle->lastModulePtr = modulePtr; + + return (modulePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleIdentityObject -- + * + * Set the objectPtr of a given Module to the OBJECT-IDENTITY object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleIdentityObject(Module *modulePtr, Object *objectPtr) +{ + modulePtr->objectPtr = objectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleLastUpdated -- + * + * Set the lastUpdated time_t value of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleLastUpdated(Module *modulePtr, time_t lastUpdated) +{ + modulePtr->lastUpdated = lastUpdated; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleOrganization -- + * + * Set the organization string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleOrganization(Module *modulePtr, char *organization) +{ + modulePtr->export.organization = organization; + while (strlen(organization) && organization[strlen(organization)-1] == '\n') { + organization[strlen(organization) - 1] = 0; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleContactInfo -- + * + * Set the contactInfo string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleContactInfo(Module *modulePtr, char *contactinfo) +{ + modulePtr->export.contactinfo = contactinfo; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleDescription -- + * + * Set the description string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleDescription(Module *modulePtr, char *description, + Parser *parserPtr) +{ + if (modulePtr->export.description) + smiFree(modulePtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + modulePtr->export.description = NULL; + } else { + modulePtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleReference -- + * + * Set the reference string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleReference(Module *modulePtr, char *reference, Parser *parserPtr) +{ + if (modulePtr->export.reference) + smiFree(modulePtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + modulePtr->export.reference = NULL; + } else { + modulePtr->export.reference = reference; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * findModuleByName -- + * + * Lookup a Module by a given name. + * + * Results: + * A pointer to the Module structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *findModuleByName(const char *modulename) +{ + Module *modulePtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + if ((modulePtr->export.name) && + !strcmp(modulePtr->export.name, modulename)) { + return (modulePtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addRevision -- + * + * Adds a revision entry for the given module. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Revision *addRevision(time_t date, char *description, Parser *parserPtr) +{ + Revision *revisionPtr, *r; + Module *modulePtr; + + revisionPtr = (Revision *) smiMalloc(sizeof(Revision)); + + modulePtr = parserPtr->modulePtr; + + revisionPtr->modulePtr = modulePtr; + revisionPtr->export.date = date; + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + revisionPtr->export.description = NULL; + } else { + revisionPtr->export.description = description; + } + revisionPtr->line = parserPtr ? parserPtr->line : -1; + + for (r = modulePtr->lastRevisionPtr; r; r = r->prevPtr) { + if (r->export.date > date) break; + } + if (r) { + revisionPtr->nextPtr = r->nextPtr; + revisionPtr->prevPtr = r; + if (r->nextPtr) { + r->nextPtr->prevPtr = revisionPtr; + } else { + modulePtr->lastRevisionPtr = revisionPtr; + } + r->nextPtr = revisionPtr; + } else { + revisionPtr->prevPtr = NULL; + if (modulePtr->firstRevisionPtr) { + modulePtr->firstRevisionPtr->prevPtr = revisionPtr; + revisionPtr->nextPtr = modulePtr->firstRevisionPtr; + } else { + modulePtr->lastRevisionPtr = revisionPtr; + revisionPtr->nextPtr = NULL; + } + modulePtr->firstRevisionPtr = revisionPtr; + } + + return (revisionPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setRevisionLine -- + * + * Set the line of definition of a given Revision. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setRevisionLine(Revision *revisionPtr, int line, Parser *parserPtr) +{ + if (line) { + revisionPtr->line = line; + } else { + revisionPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * addImport -- + * + * Adds a descriptor to the actual module's list of imported + * descriptors. This list may be checked by checkImports() + * afterwards. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *addImport(char *name, Parser *parserPtr) +{ + Import *importPtr; + Module *modulePtr; + + importPtr = (Import *) smiMalloc(sizeof(Import)); + + modulePtr = parserPtr->modulePtr; + + importPtr->modulePtr = modulePtr; + importPtr->export.name = name; + importPtr->export.module = NULL; /* not yet known */ + importPtr->kind = KIND_UNKNOWN; /* not yet known */ + importPtr->use = 0; + importPtr->flags = 0; + importPtr->line = parserPtr ? parserPtr->line : -1; + + importPtr->nextPtr = NULL; + importPtr->prevPtr = modulePtr->lastImportPtr; + if (!modulePtr->firstImportPtr) + modulePtr->firstImportPtr = importPtr; + if (modulePtr->lastImportPtr) + modulePtr->lastImportPtr->nextPtr = importPtr; + modulePtr->lastImportPtr = importPtr; + + return (importPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addImportFlags -- + * + * Add flags to the flags of a given Import struct. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addImportFlags(Import *importPtr, ImportFlags flags) +{ + importPtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * setImportModulename -- + * + * Set the modulename part of a given Import struct. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setImportModulename(Import *importPtr, char *modulename) +{ + if (importPtr->export.module) { + smiFree(importPtr->export.module); + } + importPtr->export.module = modulename; +} + + + +/* + *---------------------------------------------------------------------- + * + * checkImports -- + * + * Check wheather all descriptors in the actual module's list + * are imported by a given Module. Implicitly set all Imports' + * module names. + * + * Results: + * 0 on success or -1 on an error or number of descriptors not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int checkImports(Module *modulePtr, Parser *parserPtr) +{ + int n = 0; + Import *importPtr; + SmiNode *smiNode; + SmiType *smiType; + SmiMacro *smiMacro; + + for (importPtr = parserPtr->modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + + if (importPtr->kind == KIND_UNKNOWN) { + if (modulePtr) { + if ((smiNode = smiGetNode(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_OBJECT; + } else if ((smiType = smiGetType(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_TYPE; + } else if ((smiMacro = smiGetMacro(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_MACRO; + } else { + n++; + importPtr->export.module = + smiStrdup(modulePtr->export.name); + smiPrintError(parserPtr, ERR_IDENTIFIER_NOT_IN_MODULE, + importPtr->export.name, + modulePtr->export.name); + importPtr->kind = KIND_NOTFOUND; + } + } else { + n++; + importPtr->export.module = smiStrdup(""); + importPtr->kind = KIND_NOTFOUND; + } + } + } + + return (n); +} + + + +/* + *---------------------------------------------------------------------- + * + * findImportByName -- + * + * Lookup an import descriptor by its name and the module to look in. + * + * Results: + * A pointer to the Import structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *findImportByName(const char *name, Module *modulePtr) +{ + Import *importPtr; + + if (!name) + return NULL; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.name, name)) && + (!(importPtr->flags & FLAG_INCOMPLIANCE))) { + return (importPtr); + } + } + + return NULL; + +} + + + +/* + *---------------------------------------------------------------------- + * + * findImportByModulenameAndName -- + * + * Lookup an import descriptor by its name and the modulename + * it is imported from and the module to look in. + * + * Results: + * A pointer to the Import structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *findImportByModulenameAndName(const char *modulename, + const char *name, Module *modulePtr) +{ + Import *importPtr; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.name, name)) && + (!strcmp(importPtr->export.module, modulename))) { + return (importPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addObject -- + * + * Create a new Object and Node or update an existing one. + * Also updates other Objects and Nodes according + * to the PendingNode information. + * + * Results: + * A pointer to the new Object structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *addObject(char *objectname, Node *parentNodePtr, SmiSubid subid, + ObjectFlags flags, Parser *parserPtr) +{ + Object *objectPtr; + Node *nodePtr; + Module *modulePtr; + + + objectPtr = (Object *) smiMalloc(sizeof(Object)); + + modulePtr = parserPtr ? parserPtr->modulePtr : NULL; + + objectPtr->export.name = objectname; + objectPtr->export.decl = SMI_DECL_UNKNOWN; + objectPtr->export.access = SMI_ACCESS_UNKNOWN; + objectPtr->export.status = SMI_STATUS_UNKNOWN; + objectPtr->export.format = NULL; + objectPtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + objectPtr->export.units = NULL; + objectPtr->export.description = NULL; + objectPtr->export.reference = NULL; + objectPtr->export.indexkind = SMI_INDEX_UNKNOWN; + objectPtr->export.implied = 0; + objectPtr->export.create = 0; + objectPtr->export.nodekind = SMI_NODEKIND_UNKNOWN; + + objectPtr->modulePtr = modulePtr; + objectPtr->nodePtr = NULL; + objectPtr->prevSameNodePtr = NULL; + objectPtr->nextSameNodePtr = NULL; + objectPtr->typePtr = NULL; + objectPtr->listPtr = NULL; + objectPtr->flags = flags; + objectPtr->line = parserPtr ? parserPtr->line : -1; + + objectPtr->uniquenessPtr = NULL; + + objectPtr->export.oidlen = 0; /* filled in by */ + objectPtr->export.oid = NULL; /* second pass. */ + + objectPtr->nextPtr = NULL; + if (modulePtr) { + objectPtr->prevPtr = modulePtr->lastObjectPtr; + if (!modulePtr->firstObjectPtr) + modulePtr->firstObjectPtr = objectPtr; + if (modulePtr->lastObjectPtr) + modulePtr->lastObjectPtr->nextPtr = objectPtr; + modulePtr->lastObjectPtr = objectPtr; + } else { + objectPtr->prevPtr = NULL; + } + + /* + * Link it into the tree. + */ + nodePtr = findNodeByParentAndSubid(parentNodePtr, subid); + if ((parentNodePtr == parserPtr->pendingNodePtr) || (!nodePtr)) { + + /* a new Node has to be created for this Object */ + nodePtr = addNode(parentNodePtr, subid, flags, parserPtr); + nodePtr->firstObjectPtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + } else { + + objectPtr->prevSameNodePtr = nodePtr->lastObjectPtr; + if (!nodePtr->firstObjectPtr) + nodePtr->firstObjectPtr = objectPtr; + if (nodePtr->lastObjectPtr) + nodePtr->lastObjectPtr->nextSameNodePtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + } + objectPtr->nodePtr = nodePtr; + + return (objectPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * duplicateObject -- + * + * Create a new Object as a duplicate of a given one but with + * an affiliation to another module with new flags and with + * uninitialzied values. + * + * Results: + * A pointer to the new Object structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *duplicateObject(Object *templatePtr, ObjectFlags flags, + Parser *parserPtr) +{ + Object *objectPtr; + Node *nodePtr; + Module *modulePtr; + + objectPtr = (Object *) smiMalloc(sizeof(Object)); + + modulePtr = parserPtr->modulePtr; + nodePtr = templatePtr->nodePtr; + + objectPtr->export.name = NULL; + objectPtr->export.decl = SMI_DECL_UNKNOWN; + objectPtr->export.access = SMI_ACCESS_UNKNOWN; + objectPtr->export.status = SMI_STATUS_UNKNOWN; + objectPtr->export.format = NULL; + objectPtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + objectPtr->export.units = NULL; + objectPtr->export.description = NULL; + objectPtr->export.reference = NULL; + objectPtr->export.indexkind = SMI_INDEX_UNKNOWN; + objectPtr->export.implied = 0; + objectPtr->export.create = 0; + objectPtr->export.nodekind = SMI_NODEKIND_UNKNOWN; + + objectPtr->modulePtr = modulePtr; + objectPtr->nodePtr = nodePtr; + objectPtr->prevSameNodePtr = NULL; + objectPtr->nextSameNodePtr = NULL; + objectPtr->typePtr = NULL; + objectPtr->listPtr = NULL; + objectPtr->flags = flags; + objectPtr->line = parserPtr ? parserPtr->line : -1; + + objectPtr->export.oidlen = 0; /* filled in by */ + objectPtr->export.oid = NULL; /* second pass. */ + + objectPtr->nextPtr = NULL; + if (modulePtr) { + objectPtr->prevPtr = modulePtr->lastObjectPtr; + if (!modulePtr->firstObjectPtr) + modulePtr->firstObjectPtr = objectPtr; + if (modulePtr->lastObjectPtr) + modulePtr->lastObjectPtr->nextPtr = objectPtr; + modulePtr->lastObjectPtr = objectPtr; + } else { + objectPtr->prevPtr = NULL; + } + + objectPtr->prevSameNodePtr = nodePtr->lastObjectPtr; + if (!nodePtr->firstObjectPtr) + nodePtr->firstObjectPtr = objectPtr; + if (nodePtr->lastObjectPtr) + nodePtr->lastObjectPtr->nextSameNodePtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + objectPtr->nodePtr = nodePtr; + + return (objectPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addNode -- + * + * Create a new Node by a given parent Node and subid. + * + * Results: + * A pointer to the new Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *addNode (Node *parentNodePtr, SmiSubid subid, NodeFlags flags, + Parser *parserPtr) +{ + Node *nodePtr; + Node *c; + + nodePtr = (Node *) smiMalloc(sizeof(Node)); + + nodePtr->flags = flags; + nodePtr->subid = subid; + nodePtr->parentPtr = parentNodePtr; + nodePtr->firstChildPtr = NULL; + nodePtr->lastChildPtr = NULL; + nodePtr->firstObjectPtr = NULL; + nodePtr->lastObjectPtr = NULL; + + /* + * this cannot be set in all situations (pending sub trees). + * we delay it to the second pass. + */ + nodePtr->oidlen = 0; + nodePtr->oid = NULL; + + if (parentNodePtr) { + if (parentNodePtr->firstChildPtr) { + for (c = parentNodePtr->firstChildPtr; + c && (c->subid < subid); + c = c->nextPtr); + if (c) { + if (c != parentNodePtr->firstChildPtr) { + c->prevPtr->nextPtr = nodePtr; + nodePtr->prevPtr = c->prevPtr; + c->prevPtr = nodePtr; + nodePtr->nextPtr = c; + } else { + c->prevPtr = nodePtr; + nodePtr->nextPtr = c; + nodePtr->prevPtr = NULL; + parentNodePtr->firstChildPtr = nodePtr; + } + } else { + nodePtr->nextPtr = NULL; + nodePtr->prevPtr = parentNodePtr->lastChildPtr; + parentNodePtr->lastChildPtr->nextPtr = nodePtr; + parentNodePtr->lastChildPtr = nodePtr; + } + } else { + parentNodePtr->firstChildPtr = nodePtr; + parentNodePtr->lastChildPtr = nodePtr; + nodePtr->nextPtr = NULL; + nodePtr->prevPtr = NULL; + } + } + + return nodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * createNodes -- + * + * Create all missing Nodes down the tree along all subids of + * a given Oid. + * + * Results: + * A pointer to the leaf Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *createNodes(unsigned int oidlen, SmiSubid *oid) +{ + Node *parentNodePtr, *nodePtr; + unsigned int i; + + parentNodePtr = smiHandle->rootNodePtr; + + for(i = 0; i < oidlen; i++) { + if (!(nodePtr = findNodeByParentAndSubid(parentNodePtr, oid[i]))) { + nodePtr = addNode(parentNodePtr, oid[i], 0, NULL); + } + parentNodePtr = nodePtr; + } + + return parentNodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * createNodesByOidString -- + * + * Create all missing Nodes down the tree along all subids of + * a given Oid. + * + * Results: + * A pointer to the leaf Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *createNodesByOidString(const char *oid) +{ + char *p, *elements; + Node *parentNodePtr, *nodePtr; + SmiSubid subid; + + parentNodePtr = smiHandle->rootNodePtr; + elements = smiStrdup(oid); + + p = strtok(elements, "."); + do { + subid = (unsigned int)strtoul(p, NULL, 0); + if (!(nodePtr = findNodeByParentAndSubid(parentNodePtr, + subid))) { + nodePtr = addNode(parentNodePtr, subid, 0, NULL); + } + parentNodePtr = nodePtr; + } while ((p = strtok(NULL, "."))); + + smiFree(elements); + + return parentNodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * getParentNode -- + * + * Return the parent of a given Node. + * + * Results: + * A pointer to the parent Node structure. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *getParentNode(Node *nodePtr) +{ + return nodePtr->parentPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * mergeNodeTrees -- + * + * Merge the subtree rooted at `from' into the `to' tree recursively + * and release the `from' tree. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void mergeNodeTrees(Node *toNodePtr, Node *fromNodePtr, + Parser *parserPtr) +{ + Node *nodePtr, *toChildPtr, *nextPtr; + Object *objectPtr; + + /* (1) merge lists of Objects for this node */ + if (fromNodePtr->firstObjectPtr) { + if (!toNodePtr->firstObjectPtr) { + toNodePtr->firstObjectPtr = fromNodePtr->firstObjectPtr; + toNodePtr->lastObjectPtr = fromNodePtr->lastObjectPtr; + } else { + fromNodePtr->firstObjectPtr->prevSameNodePtr = + toNodePtr->lastObjectPtr; + toNodePtr->lastObjectPtr->nextSameNodePtr = + fromNodePtr->firstObjectPtr; + toNodePtr->lastObjectPtr = fromNodePtr->lastObjectPtr; + } + } + for (objectPtr = fromNodePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextSameNodePtr) { + objectPtr->nodePtr = toNodePtr; + + } + + /* (2) loop: merge all first-level `from' sub-trees to `to' */ + /* adjust all `from' sub-nodes' parentPtrs */ + for (nodePtr = fromNodePtr->firstChildPtr; nodePtr; + nodePtr = nodePtr->nextPtr) { + nodePtr->parentPtr = toNodePtr; + } + if (!toNodePtr->firstChildPtr) { + /* + * if `to' has no sub-nodes, just move the `from' sub-nodes. + */ + toNodePtr->firstChildPtr = fromNodePtr->firstChildPtr; + toNodePtr->lastChildPtr = fromNodePtr->lastChildPtr; + } else { + /* + * otherwise, we really have to merge both trees... + */ + for (nodePtr = fromNodePtr->firstChildPtr; nodePtr; ) { + nextPtr = nodePtr->nextPtr; + if ((toChildPtr = findNodeByParentAndSubid(toNodePtr, + nodePtr->subid))) { + /* + * if a sub-node with the same subid is already present + * in `to', merge them recursively. + */ + mergeNodeTrees(toChildPtr, nodePtr, parserPtr); + } else { + /* + * otherwise, move the sub-tree from `from' to `to'. + */ + if (nodePtr->subid < toNodePtr->firstChildPtr->subid) { + /* move to the head. */ + nodePtr->nextPtr = toNodePtr->firstChildPtr; + toNodePtr->firstChildPtr = nodePtr; + } else if (nodePtr->subid > toNodePtr->lastChildPtr->subid) { + /* move to the end. */ + nodePtr->prevPtr = toNodePtr->lastChildPtr; + toNodePtr->lastChildPtr->nextPtr = nodePtr; + toNodePtr->lastChildPtr = nodePtr; + } else { + /* move to the appropriate place in the `to' list. */ + for (toChildPtr = toNodePtr->firstChildPtr; + toChildPtr->nextPtr->subid < nodePtr->subid; + toChildPtr = toChildPtr->nextPtr); + toChildPtr->nextPtr->prevPtr = nodePtr; + nodePtr->nextPtr = toChildPtr->nextPtr; + nodePtr->prevPtr = toChildPtr; + toChildPtr->nextPtr = nodePtr; + } + } + nodePtr = nextPtr; + } + } + + smiFree(fromNodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectName -- + * + * Set the name of a given Object. Combine two Objects if the name + * already exists. + * + * Results: + * (Object *) of the potentially combined object. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *setObjectName(Object *objectPtr, char *name, Parser *parserPtr) +{ + Node *nodePtr, *nextPtr; + Module *modulePtr; + Object *newObjectPtr; + + if (objectPtr->export.name) { + smiFree(objectPtr->export.name); + } + objectPtr->export.name = name; + /* + * If this name is found on the pending list (at depth==1 in + * pendingRootNode), we have to move the corresponding subtree to + * the main tree. + */ + for (nodePtr = parserPtr->pendingNodePtr->firstChildPtr; nodePtr; + nodePtr = nextPtr) { + + /* + * probably we change the contents of `pending', so remember + * the next pointer. + */ + nextPtr = nodePtr->nextPtr; + + if (!strcmp(nodePtr->firstObjectPtr->export.name, name)) { + + /* + * remove nodePtr from the pendingRootNode tree. + */ + if (nodePtr->prevPtr) { + nodePtr->prevPtr->nextPtr = nodePtr->nextPtr; + } else { + parserPtr->pendingNodePtr->firstChildPtr = nodePtr->nextPtr; + } + if (nodePtr->nextPtr) { + nodePtr->nextPtr->prevPtr = nodePtr->prevPtr; + } else { + parserPtr->pendingNodePtr->lastChildPtr = nodePtr->prevPtr; + } + +#if 0 + objectPtr->nodePtr->firstObjectPtr = NULL; + objectPtr->nodePtr->lastObjectPtr = NULL; +#else + if (objectPtr->nodePtr->lastObjectPtr != NULL) { + if (objectPtr->nodePtr->lastObjectPtr->export.oid == NULL) { + objectPtr->nodePtr->lastObjectPtr = + objectPtr->nodePtr->lastObjectPtr->prevSameNodePtr; + if (objectPtr->nodePtr->lastObjectPtr == NULL) { + objectPtr->nodePtr->firstObjectPtr = NULL; + } + } + } +#endif + + newObjectPtr = nodePtr->firstObjectPtr; + if (newObjectPtr) { + modulePtr = newObjectPtr->modulePtr; + if (modulePtr->objectPtr == objectPtr) { + modulePtr->objectPtr = newObjectPtr; + } + if (modulePtr->firstObjectPtr == objectPtr) { + modulePtr->firstObjectPtr = objectPtr->nextPtr; + modulePtr->firstObjectPtr->prevPtr = NULL; + } + if (modulePtr->lastObjectPtr == objectPtr) { + modulePtr->lastObjectPtr = objectPtr->prevPtr; + modulePtr->lastObjectPtr->nextPtr = NULL; + } + + mergeNodeTrees(objectPtr->nodePtr, nodePtr, parserPtr); + smiFree(objectPtr->export.name); + smiFree(objectPtr); + return newObjectPtr; + } else { + return objectPtr; + } + } + } + return objectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectType -- + * + * Set the type (pointer to a Type struct) of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectType(Object *objectPtr, Type *typePtr) +{ + objectPtr->typePtr = typePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectAccess -- + * + * Set the access of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectAccess(Object *objectPtr, SmiAccess access) +{ + objectPtr->export.access = access; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectStatus -- + * + * Set the status of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectStatus(Object *objectPtr, SmiStatus status) +{ + objectPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectDescription -- + * + * Set the description of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectDescription(Object *objectPtr, char *description, + Parser *parserPtr) +{ + if (objectPtr->export.description) + smiFree(objectPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + objectPtr->export.description = NULL; + } else { + objectPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectReference -- + * + * Set the reference of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectReference(Object *objectPtr, char *reference, Parser *parserPtr) +{ + if (objectPtr->export.reference) + smiFree(objectPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + objectPtr->export.reference = NULL; + } else { + objectPtr->export.reference = reference; + } +} + + +/* + *---------------------------------------------------------------------- + * + * setObjectFormat -- + * + * Set the format of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectFormat(Object *objectPtr, char *format) +{ + if (objectPtr->export.format) smiFree(objectPtr->export.format); + objectPtr->export.format = format; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectUnits -- + * + * Set the units of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectUnits(Object *objectPtr, char *units) +{ + if (objectPtr->export.units) smiFree(objectPtr->export.units); + objectPtr->export.units = units; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectDecl -- + * + * Set the declaring macro of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectDecl(Object *objectPtr, SmiDecl decl) +{ + objectPtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectLine -- + * + * Set the line of definition of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectLine(Object *objectPtr, int line, Parser *parserPtr) +{ + if (line) { + objectPtr->line = line; + } else { + objectPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectNodekind -- + * + * Set the language independant SmiNodekind of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectNodekind(Object *objectPtr, SmiNodekind nodekind) +{ + objectPtr->export.nodekind = nodekind; +} + + + +/* + *---------------------------------------------------------------------- + * + * addObjectFlags -- + * + * Add flags to the flags of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + objectPtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * deleteObjectFlags -- + * + * Delete flags from the flags of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void deleteObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + objectPtr->flags &= ~flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * checkObjectFlag -- + * + * Check whether a given set of flags of a given Object are all set. + * + * Results: + * true if all named flags are set. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int checkObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + return ((objectPtr->flags & flags) == flags); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectIndex -- + * + * Set the list of INDEX elements of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +/* TODO remove me +void setObjectIndex(Object *objectPtr, Index *indexPtr) + Object *objectPtr; + Index *indexPtr; +{ + objectPtr->indexPtr = indexPtr; +} +*/ + + +/* + *---------------------------------------------------------------------- + * + * setObjectList -- + * + * Set the list of objects of a notification type or object group + * or the list of notifications of a notification group. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectList(Object *objectPtr, List *listPtr) +{ + objectPtr->listPtr = listPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectRelated -- + * + * Set the related object of a given object (e.g. SMIv2 AUGMENTS) + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectRelated(Object *objectPtr, Object *relatedPtr) +{ + objectPtr->relatedPtr = relatedPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectImplied -- + * + * Set the implied flag of a given object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectImplied(Object *objectPtr, int implied) +{ + objectPtr->export.implied = implied; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectCreate -- + * + * Set the create flag of a given (table entry) object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectCreate(Object *objectPtr, int create) +{ + objectPtr->export.create = create; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectIndexkind -- + * + * Set the indexkind of a given (table entry) object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectIndexkind(Object *objectPtr, SmiIndexkind indexkind) +{ + objectPtr->export.indexkind = indexkind; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectValue -- + * + * Set the default value pointer of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectValue(Object *objectPtr, SmiValue *valuePtr) +{ + objectPtr->export.value = *valuePtr; + smiFree(valuePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectUniqueness -- + * + * Set the uniqueness entry of an object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectUniqueness(Object *objectPtr, List *listPtr) +{ + objectPtr->uniquenessPtr = listPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectInstallErrors -- + * + * Set the install errors entry of an object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +/*void setObjectInstallErrors(Object *objectPtr, List *listPtr) +{ + objectPtr->installErrorsPtr = listPtr; +}*/ + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByParentAndSubid -- + * + * Lookup a Node by a given parent and subid value. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByParentAndSubid(Node *parentNodePtr, SmiSubid subid) +{ + Node *nodePtr; + + if (parentNodePtr && + (parentNodePtr != smiHandle->parserPtr->pendingNodePtr)) { + for (nodePtr = parentNodePtr->firstChildPtr; nodePtr; + nodePtr = nodePtr->nextPtr) { + if (nodePtr->subid == subid) { + return (nodePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByOid -- + * + * Lookup a Node by a given array of numerical subids. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByOid(unsigned int oidlen, SmiSubid *oid) +{ + Node *nodePtr; + unsigned int i; + + nodePtr = smiHandle->rootNodePtr; + for(i = 0; i < oidlen && nodePtr; i++) { + nodePtr = findNodeByParentAndSubid(nodePtr, oid[i]); + } + + return (nodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByOidString -- + * + * Lookup a Node by a given string of concatinated numerical subids. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByOidString(char *oid) +{ + Node *nodePtr; + char *s; + char *p; + + s = smiStrdup(oid); + nodePtr = smiHandle->rootNodePtr; + for(p = strtok(s, ". "); p && nodePtr; p = strtok(NULL, ". ")) { + nodePtr = findNodeByParentAndSubid(nodePtr, atoi(p)); + } + + smiFree(s); + return (nodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByNode -- + * + * Lookup an Object by a given Node. Note, that there might be + * multiple definitions for one node. + * + * Results: + * A pointer to the first Object structure in the current View or + * a pointer to the first Object if none is in the current View or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByNode(Node *nodePtr) +{ + Object *objectPtr; + Object *goodObjectPtr = NULL; + + /* first, try to find an object in the current view. */ + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (isInView(objectPtr->modulePtr->export.name)) { + if (! goodObjectPtr) { + goodObjectPtr = objectPtr; + } else if (objectPtr->modulePtr->export.language + > goodObjectPtr->modulePtr->export.language) { + goodObjectPtr = objectPtr; + } + } + } + + return goodObjectPtr ? goodObjectPtr : nodePtr->firstObjectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModuleAndNode -- + * + * Lookup an Object by a given Node and Module. This is necessary + * since there might be different declarations in different modules + * for the same OID. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModuleAndNode(Module *modulePtr, Node *nodePtr) +{ + Object *objectPtr; + + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (objectPtr->modulePtr == modulePtr) { + return (objectPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModulenameAndNode -- + * + * Lookup an Object by a given Node and Modulename. This is necessary + * since there might be different declarations in different modules + * for the same OID. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModulenameAndNode(const char *modulename, Node *nodePtr) +{ + Object *objectPtr; + + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (!strcmp(objectPtr->modulePtr->export.name, modulename)) { + return (objectPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByName -- + * + * Lookup an Object by a given name. Note, that + * there might be more than one Object with the same name. + * In this case, it is undefined which Object is returned. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByName(const char *objectname) +{ + Module *modulePtr; + Object *objectPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + /* + * We return the first matching object. + * TODO: probably we should check if there are more matching + * objects, and give a warning if there's another one. + */ + return (objectPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNextObjectByName -- + * + * Lookup the next Object by a given name. Note, that + * there might be more than one Object with the same name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findNextObjectByName(const char *objectname, Object *prevObjectPtr) +{ + Module *modulePtr; + Object *objectPtr; + + for (modulePtr = prevObjectPtr->modulePtr->nextPtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) + && !strcmp(objectPtr->export.name, objectname)) { + /* + * We return the first matching object. + * TODO: probably we should check if there are more matching + * objects, and give a warning if there's another one. + */ + return (objectPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModulenameAndName -- + * + * Lookup a Object by a given Module and name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModulenameAndName(const char *modulename, + const char *objectname) +{ + Module *modulePtr; + Object *objectPtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + return (objectPtr); + } + } + } + + /* + * Some toplevel Objects seem to be always known. + */ + if ((!strcmp(objectname, "iso")) || + (!strcmp(objectname, "ccitt")) || + (!strcmp(objectname, "joint-iso-ccitt"))) { + return findObjectByName(objectname); + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModuleAndName -- + * + * Lookup a Object by a given Module and name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModuleAndName(Module *modulePtr, const char *objectname) +{ + Object *objectPtr; + + if (! objectname) { + return NULL; + } + + if (modulePtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + return (objectPtr); + } + } + } + + /* + * Some toplevel Objects seem to be always known. + */ + if ((!strcmp(objectname, "iso")) || + (!strcmp(objectname, "ccitt")) || + (!strcmp(objectname, "joint-iso-ccitt"))) { + return findObjectByName(objectname); + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addType -- + * + * Create a new Type structure. + * + * Results: + * A pointer to the new Type structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *addType(char *type_name, SmiBasetype basetype, TypeFlags flags, + Parser *parserPtr) +{ + Type *typePtr; + Module *modulePtr; + + modulePtr = parserPtr ? parserPtr->modulePtr : NULL; + + typePtr = smiMalloc(sizeof(Type)); + + typePtr->export.name = type_name; + typePtr->export.basetype = basetype; + typePtr->export.decl = SMI_DECL_UNKNOWN; + typePtr->export.format = NULL; + typePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + typePtr->export.units = NULL; + typePtr->export.status = SMI_STATUS_UNKNOWN; + typePtr->export.description = NULL; + typePtr->export.reference = NULL; + + typePtr->modulePtr = modulePtr; + typePtr->listPtr = NULL; + typePtr->flags = flags; + typePtr->parentPtr = NULL; + typePtr->line = parserPtr ? parserPtr->line : -1; + + typePtr->nextPtr = NULL; + if (modulePtr) { + typePtr->prevPtr = modulePtr->lastTypePtr; + if (!modulePtr->firstTypePtr) + modulePtr->firstTypePtr = typePtr; + if (modulePtr->lastTypePtr) + modulePtr->lastTypePtr->nextPtr = typePtr; + modulePtr->lastTypePtr = typePtr; + } else { + typePtr->prevPtr = NULL; + } + + return (typePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * duplicateType -- + * + * Create a new Type as a duplicate of a given one but with + * an affiliation to the current module. + * + * Results: + * A pointer to the new Type structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *duplicateType(Type *templatePtr, TypeFlags flags, Parser *parserPtr) +{ + Type *typePtr; + Module *modulePtr; + + typePtr = (Type *) smiMalloc(sizeof(Type)); + + modulePtr = parserPtr->modulePtr; + + typePtr->export.name = NULL; + typePtr->export.basetype = templatePtr->export.basetype; + typePtr->export.decl = SMI_DECL_IMPLICIT_TYPE; + typePtr->export.format = NULL; + typePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + typePtr->export.units = NULL; + typePtr->export.status = templatePtr->export.status; + typePtr->export.description = NULL; + typePtr->export.reference = NULL; + + typePtr->modulePtr = modulePtr; + typePtr->listPtr = NULL; + typePtr->flags = templatePtr->flags; + typePtr->line = parserPtr ? parserPtr->line : -1; + + typePtr->nextPtr = NULL; + typePtr->prevPtr = modulePtr->lastTypePtr; + if (!modulePtr->firstTypePtr) + modulePtr->firstTypePtr = typePtr; + if (modulePtr->lastTypePtr) + modulePtr->lastTypePtr->nextPtr = typePtr; + modulePtr->lastTypePtr = typePtr; + + setTypeParent(typePtr, templatePtr); + + return (typePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeName -- + * + * Set the name of a given Type. If it already exists, merge the + * two types. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *setTypeName(Type *typePtr, char *name) +{ + Type *type2Ptr; + List *listPtr; + + if (typePtr->export.name) { + smiFree(typePtr->export.name); + } + typePtr->export.name = smiStrdup(name); + + if (! typePtr->export.name) { + return typePtr; + } + + /* + * If a type with this name already exists, it must be a forward + * reference and both types have to be merged. + */ + for (type2Ptr = typePtr->modulePtr->firstTypePtr; type2Ptr; + type2Ptr = type2Ptr->nextPtr) { + + if (type2Ptr->export.name && + (!strcmp(type2Ptr->export.name, name)) && + (type2Ptr != typePtr)) { + + /* + * remove typePtr from the type list. + */ + if (typePtr->prevPtr) { + typePtr->prevPtr->nextPtr = typePtr->nextPtr; + } else { + typePtr->modulePtr->firstTypePtr = typePtr->nextPtr; + } + if (typePtr->nextPtr) { + typePtr->nextPtr->prevPtr = typePtr->prevPtr; + } else { + typePtr->modulePtr->lastTypePtr = typePtr->prevPtr; + } + + type2Ptr->export.basetype = typePtr->export.basetype; + type2Ptr->export.decl = typePtr->export.decl; + type2Ptr->export.format = typePtr->export.format; + type2Ptr->export.value = typePtr->export.value; + type2Ptr->export.units = typePtr->export.units; + type2Ptr->export.status = typePtr->export.status; + type2Ptr->export.description = typePtr->export.description; + type2Ptr->export.reference = typePtr->export.reference; + + type2Ptr->parentPtr = typePtr->parentPtr; + type2Ptr->listPtr = typePtr->listPtr; + type2Ptr->flags = typePtr->flags; + type2Ptr->line = typePtr->line; + + /* + * if it's an enum or bits type, we also have to adjust + * the references from the named numbers back to the type. + */ + if ((type2Ptr->export.basetype == SMI_BASETYPE_ENUM) || + (type2Ptr->export.basetype == SMI_BASETYPE_BITS)) { + for (listPtr = type2Ptr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + ((NamedNumber *)(listPtr->ptr))->typePtr = type2Ptr; + } + } + + smiFree(typePtr->export.name); + smiFree(typePtr); + + return type2Ptr; + } + } + return typePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeParent -- + * + * Set the parent of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeParent(Type *typePtr, Type *parentPtr) +{ + typePtr->parentPtr = parentPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeStatus -- + * + * Set the status of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeStatus(Type *typePtr, SmiStatus status) +{ + typePtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeBasetype -- + * + * Set the basetype of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeBasetype(Type *typePtr, SmiBasetype basetype) +{ + typePtr->export.basetype = basetype; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeDescription -- + * + * Set the description of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeDescription(Type *typePtr, char *description, Parser *parserPtr) +{ + if (typePtr->export.description) + smiFree(typePtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + typePtr->export.description = NULL; + } else { + typePtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeReference -- + * + * Set the reference of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeReference(Type *typePtr, char *reference, Parser *parserPtr) +{ + if (typePtr->export.reference) + smiFree(typePtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + typePtr->export.reference = NULL; + } else { + typePtr->export.reference = reference; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeList -- + * + * Set the pointer to a struct list. This used for + * - columns of a SEQUENCE type, + * - enumeration items of an enumeration integer type, + * - min-max pair items of a range restricted type, + * - min-max pars items of a size restricted type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeList(Type *typePtr, List *listPtr) +{ + if (!typePtr->listPtr) { + typePtr->listPtr = listPtr; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeFormat -- + * + * Set the format (displayHint) of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeFormat(Type *typePtr, char *format) +{ + if (typePtr->export.format) smiFree(typePtr->export.format); + typePtr->export.format = format; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeUnits -- + * + * Set the units of a given Type. Note: units of types are only + * present in SMIng, not in SMIv2. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeUnits(Type *typePtr, char *units) +{ + if (typePtr->export.units) smiFree(typePtr->export.units); + typePtr->export.units = units; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeDecl -- + * + * Set the declaring macro of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeDecl(Type *typePtr, SmiDecl decl) +{ + typePtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeLine -- + * + * Set the line of definition of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeLine(Type *typePtr, int line, Parser *parserPtr) +{ + if (line) { + typePtr->line = line; + } else { + typePtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeValue -- + * + * Set the default value pointer of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeValue(Type *typePtr, SmiValue *valuePtr) +{ + typePtr->export.value = *valuePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * addTypeFlags -- + * + * Add flags to the flags of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addTypeFlags(Type *typePtr, TypeFlags flags) +{ + typePtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * deleteTypeFlags -- + * + * Delete flags from the flags of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void deleteTypeFlags(Type *typePtr, TypeFlags flags) +{ + typePtr->flags &= ~flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByName -- + * + * Lookup a Type by a given name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type * findTypeByName(const char *type_name) +{ + Module *modulePtr; + Type *typePtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNextTypeByName -- + * + * Lookup the next Type by a given name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findNextTypeByName(const char *type_name, Type *prevTypePtr) +{ + Module *modulePtr; + Type *typePtr; + + for (modulePtr = prevTypePtr->modulePtr->nextPtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByModulenameAndName -- + * + * Lookup a Type by a given Module and name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findTypeByModulenameAndName(const char *modulename, + const char *type_name) +{ + Type *typePtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByModuleAndName -- + * + * Lookup a Type by a given Module and name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findTypeByModuleAndName(Module *modulePtr, const char *type_name) +{ + Type *typePtr; + + if (modulePtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeNamedNumber -- + * + * + * + * Results: + * + * Side effects: + * + *---------------------------------------------------------------------- */ + +NamedNumber *findTypeNamedNumber(Type *typePtr, + SmiInteger32 number) +{ + List *listPtr; + + for (listPtr = typePtr->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.value.value.integer32 == + number) + break; + } + + return (NamedNumber *)(listPtr->ptr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addIdentity -- + * + * Create a new Identity structure. + * + * Results: + * A pointer to the new Identity structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Identity *addIdentity(char *identityname, Parser *parserPtr) +{ + Identity *identityPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + identityPtr = (Identity*) smiMalloc(sizeof(Identity)); + + identityPtr->export.name = identityname; + identityPtr->export.status = SMI_STATUS_UNKNOWN; + identityPtr->export.description = NULL; + identityPtr->export.reference = NULL; + identityPtr->parentPtr = NULL; + + identityPtr->modulePtr = parserPtr->modulePtr; + identityPtr->line = parserPtr ? parserPtr->line : -1; + + identityPtr->nextPtr = NULL; + identityPtr->prevPtr = modulePtr->lastIdentityPtr; + if (!modulePtr->firstIdentityPtr) + modulePtr->firstIdentityPtr = identityPtr; + if (modulePtr->lastIdentityPtr) + modulePtr->lastIdentityPtr->nextPtr = identityPtr; + modulePtr->lastIdentityPtr = identityPtr; + + return (identityPtr); + +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityDecl -- + * + * Set the declaring macro of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityDecl(Identity *identityPtr, SmiDecl decl) +{ + identityPtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityStatus -- + * + * Set the status of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityStatus(Identity *identityPtr, SmiStatus status) +{ + identityPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setIdentityDescription -- + * + * Set the description of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityDescription(Identity *identityPtr, char *description, Parser *parserPtr) +{ + if (identityPtr->export.description) smiFree(identityPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + identityPtr->export.description = NULL; + } else { + identityPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setIdentityReference -- + * + * Set the reference of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityReference(Identity *identityPtr, char *reference, Parser *parserPtr) +{ + if (identityPtr->export.reference) + smiFree(identityPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + identityPtr->export.reference = NULL; + } else { + identityPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityParent -- + * + * Set the parent of a given Identity to given Identity pointer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityParent(Identity *identityPtr, Identity *parentPtr) +{ + if(identityPtr) identityPtr->parentPtr = parentPtr; +} + + +/* + *---------------------------------------------------------------------- + * + * findIdentityByName -- + * + * Lookup a Identity by a given name. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByName(const char *identityname) +{ + Module *modulePtr; + Identity *identityPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && + !strcmp(identityPtr->export.name, identityname)) { + return (identityPtr); + } + } + } + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * findIdentityByModuleAndName -- + * + * Lookup a Identity by a given name and Module. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByModuleAndName(Module *modulePtr, + const char *identityname) +{ + Identity *identityPtr; + + + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && + !strcmp(identityPtr->export.name, identityname)) { + return (identityPtr); + } + } + + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * findIdentityByModulenameAndName -- + * + * Lookup a Identity by a given Module and name. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByModulenameAndName(const char *modulename, + const char *identity_name) +{ + Identity *identityPtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && !strcmp(identityPtr->export.name, identity_name)) { + return (identityPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addClass -- + * + * Create a new Class structure. + * + * Results: + * A pointer to the new Class structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Class *addClass(char *classname, Parser *parserPtr) +{ + Class *classPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + classPtr = (Class*) smiMalloc(sizeof(Class)); + + classPtr->export.name = classname; + classPtr->export.status = SMI_STATUS_UNKNOWN; + classPtr->export.description = NULL; + classPtr->export.reference = NULL; + + classPtr->modulePtr = parserPtr->modulePtr; + classPtr->line = parserPtr ? parserPtr->line : -1; + + classPtr->parentPtr = NULL; + classPtr->firstAttributePtr = NULL; + classPtr->lastAttributePtr = NULL; + classPtr->firstEventPtr = NULL; + classPtr->lastEventPtr = NULL; + + classPtr->nextPtr = NULL; + classPtr->prevPtr = modulePtr->lastClassPtr; + if (!modulePtr->firstClassPtr) + modulePtr->firstClassPtr = classPtr; + if (modulePtr->lastClassPtr) + modulePtr->lastClassPtr->nextPtr = classPtr; + modulePtr->lastClassPtr = classPtr; + + return (classPtr); + +} + +/* + *---------------------------------------------------------------------- + * + * setClassDecl -- + * + * Set the declaring macro of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassDecl(Class *classPtr, SmiDecl decl) +{ + classPtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setClassStatus -- + * + * Set the status of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassStatus(Class *classPtr, SmiStatus status) +{ + classPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setClassDescription -- + * + * Set the description of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassDescription(Class *classPtr, char *description, Parser *parserPtr) +{ + if (classPtr->export.description) smiFree(classPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + classPtr->export.description = NULL; + } else { + classPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setClassReference -- + * + * Set the reference of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassReference(Class *classPtr, char *reference, Parser *parserPtr) +{ + if (classPtr->export.reference) + smiFree(classPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + classPtr->export.reference = NULL; + } else { + classPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setClassParent -- + * + * Set the parent of a given Class to given Class pointer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassParent(Class *classPtr, Class *parentPtr) +{ + if(classPtr) classPtr->parentPtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * findClassByModuleAndName -- + * + * Lookup a Class by a given name. + * + * Results: + * A pointer to the Class structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +Class *findClassByModuleAndName(Module *modulePtr,char *name) +{ + Class *classPtr; + + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = classPtr->nextPtr) { + if ((classPtr->export.name) && + !strcmp(classPtr->export.name, name)) { + return (classPtr); + } + } + + return NULL; +} + +/* + *---------------------------------------------------------------------- + * + * findClassByModulenameAndName -- + * + * Lookup a Class by a given Module and name. + * + * Results: + * A pointer to the Class structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Class *findClassByModulenameAndName(const char *modulename, + const char *class_name) +{ + Class *classPtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = classPtr->nextPtr) { + if ((classPtr->export.name) && !strcmp(classPtr->export.name, class_name)) { + return (classPtr); + } + } + } + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * duplicateTypeToAttribute -- + * + * Create a new Attribute as a duplicate of a given type but with + * an affiliation to the given Class. + * + * Results: + * A pointer to the new Attribute structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Attribute *duplicateTypeToAttribute(Type *templatePtr, Class *classPtr, Parser *parserPtr) +{ + Attribute *attributePtr; + + if(!classPtr) return NULL; + + attributePtr = (Attribute *) smiMalloc(sizeof(Attribute)); + + + attributePtr->export.name = NULL; + attributePtr->export.basetype = templatePtr->export.basetype; + attributePtr->export.decl = SMI_DECL_ATTRIBUTE; + attributePtr->export.format = NULL; + attributePtr->export.value.basetype = templatePtr->export.basetype; + attributePtr->export.units = NULL; + attributePtr->export.status = templatePtr->export.status; + attributePtr->export.description = NULL; + attributePtr->export.reference = NULL; + + attributePtr->classPtr = classPtr; + attributePtr->listPtr = NULL; + attributePtr->line = parserPtr ? parserPtr->line : -1; + + attributePtr->nextPtr = NULL; + attributePtr->prevPtr = classPtr->lastAttributePtr; + if (!classPtr->firstAttributePtr) + classPtr->firstAttributePtr = attributePtr; + if (classPtr->lastAttributePtr) + classPtr->lastAttributePtr->nextPtr = attributePtr; + classPtr->lastAttributePtr = attributePtr; + + setAttributeParentType(attributePtr, templatePtr); + + return (attributePtr); +} + + +/* + *---------------------------------------------------------------------- + * + * addAttribute -- + * + * Create a new Attribute structure and tie it to the given Class. + * + * Results: + * A pointer to the new Attribute structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Attribute *addAttribute(char *attribute_name, + Class *classPtr, Parser *parserPtr) +{ + Attribute *attributePtr; + + attributePtr = smiMalloc(sizeof(Attribute)); + + attributePtr->export.name = attribute_name; + attributePtr->export.basetype = SMI_BASETYPE_UNKNOWN; + attributePtr->export.decl = SMI_DECL_UNKNOWN; + attributePtr->export.format = NULL; + attributePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + attributePtr->export.units = NULL; + attributePtr->export.status = SMI_STATUS_UNKNOWN; + attributePtr->export.description = NULL; + attributePtr->export.reference = NULL; + + attributePtr->classPtr = classPtr; + attributePtr->listPtr = NULL; + attributePtr->parentTypePtr = NULL; + attributePtr->parentClassPtr = NULL; + attributePtr->line = parserPtr ? parserPtr->line : -1; + + attributePtr->nextPtr = NULL; + if (classPtr) { + attributePtr->prevPtr = classPtr->lastAttributePtr; + if (!classPtr->firstAttributePtr) + classPtr->firstAttributePtr = attributePtr; + if (classPtr->lastAttributePtr) + classPtr->lastAttributePtr->nextPtr = attributePtr; + classPtr->lastAttributePtr = attributePtr; + } else { + attributePtr->prevPtr = NULL; + } + + return (attributePtr); +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeDecl -- + * + * Set the declaring macro of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeDecl(Attribute *attributePtr, SmiDecl decl) +{ + attributePtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeParentType -- + * + * Set the parent of a given attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeParentType(Attribute *attributePtr, Type *parentPtr) +{ + attributePtr->parentTypePtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeParentClass -- + * + * Set the parent Class of a given attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeParentClass(Attribute *attributePtr, Class *parentPtr) +{ + attributePtr->parentClassPtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeList -- + * + * Set the pointer to a struct list. This used for + * - enumeration items of an enumeration integer type, + * - min-max pair items of a range restricted type, + * - min-max pars items of a size restricted type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeList(Attribute *attributePtr, List *listPtr) +{ + if (!attributePtr->listPtr) { + attributePtr->listPtr = listPtr; + } +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeName -- + * + * Set the name of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeName(Attribute *attributePtr, char *name) +{ + + attributePtr->export.name = smiStrdup(name); +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeAccess -- + * + * Set the access of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +void setAttributeAccess(Attribute *attributePtr,SmiAccess access) +{ + attributePtr->export.access = access; +} + + +/* + *---------------------------------------------------------------------- + * + * addEvent -- + * + * Create a new Event structure and tie it to the given Class. + * + * Results: + * A pointer to the new Event structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +Event *addEvent(char *eventname, Class *classPtr, + Parser *parserPtr) +{ + Event *eventPtr; + + eventPtr = smiMalloc(sizeof(Event)); + + eventPtr->export.name = eventname; + eventPtr->export.decl = SMI_DECL_EVENT; + eventPtr->export.status = SMI_STATUS_UNKNOWN; + eventPtr->export.description = NULL; + eventPtr->export.reference = NULL; + + eventPtr->classPtr = classPtr; + eventPtr->line = parserPtr ? parserPtr->line : -1; + + eventPtr->nextPtr = NULL; + if (classPtr) { + eventPtr->prevPtr = classPtr->lastEventPtr; + if (!classPtr->firstEventPtr) + classPtr->firstEventPtr = eventPtr; + if (classPtr->lastEventPtr) + classPtr->lastEventPtr->nextPtr = eventPtr; + classPtr->lastEventPtr = eventPtr; + } else { + eventPtr->prevPtr = NULL; + } + + return (eventPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addMacro -- + * + * Create a new Macro structure. + * + * Results: + * A pointer to the new Macro structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Macro *addMacro(char *macroname, MacroFlags flags, Parser *parserPtr) +{ + Macro *macroPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + /* TODO: Check wheather this macro already exists?? */ + + macroPtr = (Macro *) smiMalloc(sizeof(Macro)); + + macroPtr->export.name = macroname; + macroPtr->export.status = SMI_STATUS_UNKNOWN; + macroPtr->export.description = NULL; + macroPtr->export.reference = NULL; + + macroPtr->modulePtr = parserPtr->modulePtr; + macroPtr->flags = flags; + macroPtr->line = parserPtr ? parserPtr->line : -1; + + macroPtr->nextPtr = NULL; + macroPtr->prevPtr = modulePtr->lastMacroPtr; + if (!modulePtr->firstMacroPtr) + modulePtr->firstMacroPtr = macroPtr; + if (modulePtr->lastMacroPtr) + modulePtr->lastMacroPtr->nextPtr = macroPtr; + modulePtr->lastMacroPtr = macroPtr; + + return (macroPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroStatus -- + * + * Set the status of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroStatus(Macro *macroPtr, SmiStatus status) +{ + macroPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroDescription -- + * + * Set the description of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroDescription(Macro *macroPtr, char *description, Parser *parserPtr) +{ + if (macroPtr->export.description) smiFree(macroPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + macroPtr->export.description = NULL; + } else { + macroPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroReference -- + * + * Set the reference of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroReference(Macro *macroPtr, char *reference, Parser *parserPtr) +{ + if (macroPtr->export.reference) + smiFree(macroPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + macroPtr->export.reference = NULL; + } else { + macroPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setMacroAbnf -- + * + * Set the abnf string of a given extension(SMIng only). + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroAbnf(Macro *macroPtr, char *abnf, Parser *parserPtr) +{ + if (macroPtr->export.abnf) + smiFree(macroPtr->export.abnf); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(abnf); + macroPtr->export.abnf = NULL; + } else { + macroPtr->export.abnf = abnf; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroDecl -- + * + * Set the declaring macro of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroDecl(Macro *macroPtr, SmiDecl decl) +{ + macroPtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroLine -- + * + * Set the line of definition of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroLine(Macro *macroPtr, int line, Parser *parserPtr) +{ + if (line) { + macroPtr->line = line; + } else { + macroPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * findMacroByName -- + * + * Lookup a Macro by a given name. + * + * Results: + * A pointer to the Macro structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Macro *findMacroByName(const char *macroname) +{ + Module *modulePtr; + Macro *macroPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = macroPtr->nextPtr) { + if ((macroPtr->export.name) && + !strcmp(macroPtr->export.name, macroname)) { + return (macroPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findMacroByModuleAndName -- + * + * Lookup a Macro by a given Module and name. + * + * Results: + * A pointer to the Macro structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Macro *findMacroByModuleAndName(Module *modulePtr, const char *macroname) +{ + Macro *macroPtr; + + if (modulePtr) { + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = macroPtr->nextPtr) { + if (!strcmp(macroPtr->export.name, macroname)) { + return (macroPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNamedNumberByName -- + * + * Lookup the value of a namev nuber in a given typ. + * + * Results: + * A pointer to the NamedNumber structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +NamedNumber *findNamedNumberByName(Type *typePtr,const char *name) +{ + List *listPtr; + + if(typePtr->export.basetype != SMI_BASETYPE_ENUM && + typePtr->export.basetype != SMI_BASETYPE_BITS) return NULL; + + for (listPtr = typePtr->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name + , name)) + return (NamedNumber *)(listPtr->ptr); + } + + return NULL; +} + + + + + +/* + *---------------------------------------------------------------------- + * + * smiInitData -- + * + * Initialize all need data structures at program start. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int smiInitData() +{ + Object *objectPtr; + Parser parser; + + smiHandle->flags = 0; + + smiHandle->firstModulePtr = NULL; + smiHandle->lastModulePtr = NULL; + smiHandle->firstViewPtr = NULL; + smiHandle->lastViewPtr = NULL; + + /* + * Initialize a root Node for the main MIB tree. + */ + smiHandle->rootNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + smiHandle->parserPtr = &parser; + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + /* + * Initialize the top level well-known nodes, ccitt, iso, joint-iso-ccitt + * belonging to a dummy module "". This is needed for SMIv1/v2. SMIng + * defines it in a special SMIng module. + */ + parser.path = NULL; + parser.flags = smiHandle->flags; + parser.file = NULL; + parser.line = -1; + parser.modulePtr = addModule(smiStrdup(""), smiStrdup(""), 0, NULL); + + addView(""); + + objectPtr = addObject(smiStrdup("ccitt"), smiHandle->rootNodePtr, 0, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 0; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + objectPtr = addObject(smiStrdup("iso"), smiHandle->rootNodePtr, 1, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 1; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + objectPtr = addObject(smiStrdup("joint-iso-ccitt"), smiHandle->rootNodePtr, 2, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 2; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + + + smiHandle->typeOctetStringPtr = + addType(smiStrdup("OctetString"), + SMI_BASETYPE_OCTETSTRING, 0, &parser); + smiHandle->typeObjectIdentifierPtr = + addType(smiStrdup("ObjectIdentifier"), + SMI_BASETYPE_OBJECTIDENTIFIER, 0, &parser); + smiHandle->typeInteger32Ptr = + addType(smiStrdup("Integer32"), + SMI_BASETYPE_INTEGER32, 0, &parser); + smiHandle->typeUnsigned32Ptr = + addType(smiStrdup("Unsigned32"), + SMI_BASETYPE_UNSIGNED32, 0, &parser); + smiHandle->typeInteger64Ptr = + addType(smiStrdup("Integer64"), + SMI_BASETYPE_INTEGER64, 0, &parser); + smiHandle->typeUnsigned64Ptr = + addType(smiStrdup("Unsigned64"), + SMI_BASETYPE_UNSIGNED64, 0, &parser); + smiHandle->typeFloat32Ptr = + addType(smiStrdup("Float32"), + SMI_BASETYPE_FLOAT32, 0, &parser); + smiHandle->typeFloat64Ptr = + addType(smiStrdup("Float64"), + SMI_BASETYPE_FLOAT64, 0, &parser); + smiHandle->typeFloat128Ptr = + addType(smiStrdup("Float128"), + SMI_BASETYPE_FLOAT128, 0, &parser); + smiHandle->typeEnumPtr = + addType(smiStrdup("Enumeration"), + SMI_BASETYPE_ENUM, 0, &parser); + smiHandle->typeBitsPtr = + addType(smiStrdup("Bits"), + SMI_BASETYPE_BITS, 0, &parser); + smiHandle->typePointerPtr = + addType(smiStrdup("Pointer"), + SMI_BASETYPE_POINTER, 0, &parser); + + return (0); +} + + + +/* + *---------------------------------------------------------------------- + * + * freeNodeTree -- + * + * Free all node of a node (sub)tree. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void freeNodeTree(Node *rootPtr) +{ + Node *nodePtr, *nextPtr; + + for (nodePtr = rootPtr->firstChildPtr; nodePtr; nodePtr = nextPtr) { + nextPtr = nodePtr->nextPtr; + freeNodeTree(nodePtr); + smiFree(nodePtr->oid); + smiFree(nodePtr); + } + rootPtr->firstChildPtr = NULL; + rootPtr->lastChildPtr = NULL; + rootPtr->firstObjectPtr = NULL; + rootPtr->lastObjectPtr = NULL; + rootPtr->nextPtr = NULL; + rootPtr->prevPtr = NULL; + rootPtr->parentPtr = NULL; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiFreeData -- + * + * Free all data structures. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void smiFreeData() +{ + View *viewPtr, *nextViewPtr; + Macro *macroPtr, *nextMacroPtr; + Module *modulePtr, *nextModulePtr; + Import *importPtr, *nextImportPtr; + Identity *identityPtr, *nextIdentityPtr; + Revision *revisionPtr, *nextRevisionPtr; + List *listPtr, *nextListPtr; + Type *typePtr, *nextTypePtr; + Class *classPtr, *nextClassPtr; + Attribute *attributePtr, *nextAttributePtr; + Event *eventPtr, *nextEventPtr; + Object *objectPtr, *nextObjectPtr; + + for (viewPtr = smiHandle->firstViewPtr; viewPtr; viewPtr = nextViewPtr) { + nextViewPtr = viewPtr->nextPtr; + smiFree(viewPtr->name); + smiFree(viewPtr); + } + + /* + * In this first module loop we remove each module's imports, + * revisions, macros, and objects. + */ + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = nextModulePtr) { + nextModulePtr = modulePtr->nextPtr; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = nextImportPtr) { + nextImportPtr = importPtr->nextPtr; + smiFree(importPtr->export.module); + smiFree(importPtr->export.name); + smiFree(importPtr); + } + + for (revisionPtr = modulePtr->firstRevisionPtr; revisionPtr; + revisionPtr = nextRevisionPtr) { + nextRevisionPtr = revisionPtr->nextPtr; + smiFree(revisionPtr->export.description); + smiFree(revisionPtr); + } + + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = nextMacroPtr) { + nextMacroPtr = macroPtr->nextPtr; + smiFree(macroPtr->export.name); + smiFree(macroPtr->export.abnf); + smiFree(macroPtr->export.reference); + smiFree(macroPtr->export.description); + smiFree(macroPtr); + + } + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = nextIdentityPtr) { + nextIdentityPtr = identityPtr->nextPtr; + smiFree(identityPtr->export.name); + smiFree(identityPtr->export.reference); + smiFree(identityPtr->export.description); + smiFree(identityPtr); + } + + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = nextObjectPtr) { + + nextObjectPtr = objectPtr->nextPtr; + smiFree(objectPtr->export.name); + smiFree(objectPtr->export.description); + smiFree(objectPtr->export.reference); + smiFree(objectPtr->export.format); + smiFree(objectPtr->export.units); + for (listPtr = objectPtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(listPtr); + } + for (listPtr = objectPtr->optionlistPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((Option *)(listPtr->ptr))->export.description); + smiFree((Option *)(listPtr->ptr)); + smiFree(listPtr); + } + for (listPtr = objectPtr->refinementlistPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((Refinement *)(listPtr->ptr))->export.description); + smiFree((Refinement *)(listPtr->ptr)); + smiFree(listPtr); + } + if (objectPtr->typePtr) { + if ((objectPtr->typePtr->export.basetype == + SMI_BASETYPE_OCTETSTRING || + objectPtr->typePtr->export.basetype == + SMI_BASETYPE_BITS)) { + smiFree(objectPtr->export.value.value.ptr); + } else if ((objectPtr->typePtr->export.basetype == + SMI_BASETYPE_OBJECTIDENTIFIER) && + (objectPtr->export.value.basetype == + objectPtr->typePtr->export.basetype)) { + smiFree(objectPtr->export.value.value.oid); + } + + } + smiFree(objectPtr); + + + + + } + + + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = nextClassPtr) { + + nextClassPtr = classPtr->nextPtr; + for (attributePtr = classPtr->firstAttributePtr; attributePtr; + attributePtr = nextAttributePtr) { + + nextAttributePtr = attributePtr->nextPtr; + + for (listPtr = attributePtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + if ((attributePtr->export.basetype == SMI_BASETYPE_BITS) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM)) { + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + } else if ((attributePtr->export.basetype == SMI_BASETYPE_INTEGER32) || + (attributePtr->export.basetype == SMI_BASETYPE_INTEGER64) || + (attributePtr->export.basetype == SMI_BASETYPE_UNSIGNED32) || + (attributePtr->export.basetype == SMI_BASETYPE_UNSIGNED64) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT32) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT64) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT128) || + (attributePtr->export.basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((Range *)(listPtr->ptr)); + } + smiFree(listPtr); + } + smiFree(attributePtr->export.name); + smiFree(attributePtr->export.format); + smiFree(attributePtr->export.units); + smiFree(attributePtr->export.description); + smiFree(attributePtr->export.reference); + smiFree(attributePtr); + + } + + for (eventPtr = classPtr->firstEventPtr; eventPtr; + eventPtr = nextEventPtr) { + + nextEventPtr = eventPtr->nextPtr; + smiFree(eventPtr->export.name); + smiFree(eventPtr->export.reference); + smiFree(eventPtr->export.description); + } + + + for (listPtr = classPtr->uniqueList; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(listPtr); + } + + smiFree(classPtr->export.name); + smiFree(classPtr->export.description); + smiFree(classPtr->export.reference); + smiFree(classPtr); + + } + } + + /* + * In this second module loop we remove each module's types + * and the modules themselves. This separation is required, because + * we reference some types of foreign modules in the first loop. + */ + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = nextModulePtr) { + nextModulePtr = modulePtr->nextPtr; + + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = nextTypePtr) { + nextTypePtr = typePtr->nextPtr; + for (listPtr = typePtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + if ((typePtr->export.basetype == SMI_BASETYPE_BITS) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM)) { + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + } else if ((typePtr->export.basetype == SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype == SMI_BASETYPE_INTEGER64) || + (typePtr->export.basetype == SMI_BASETYPE_UNSIGNED32) || + (typePtr->export.basetype == SMI_BASETYPE_UNSIGNED64) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT32) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT64) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT128) || + (typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((Range *)(listPtr->ptr)); + } + smiFree(listPtr); + } + smiFree(typePtr->export.name); + smiFree(typePtr->export.format); + smiFree(typePtr->export.units); + smiFree(typePtr->export.description); + smiFree(typePtr->export.reference); + smiFree(typePtr); + } + + smiFree(modulePtr->export.name); + smiFree(modulePtr->export.path); + smiFree(modulePtr->export.organization); + smiFree(modulePtr->export.contactinfo); + smiFree(modulePtr->export.description); + smiFree(modulePtr->export.reference); + smiFree(modulePtr); + } + + freeNodeTree(smiHandle->rootNodePtr); + smiFree(smiHandle->rootNodePtr); + + return; +} + + + +/* + *---------------------------------------------------------------------- + * + * loadModule -- + * + * Load a MIB module. If modulename is a plain name, the file is + * search along the SMIPATH environment variable. If modulename + * contains a `.' or DIR_SEPARATOR it is assumed to be the path. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *loadModule(const char *modulename, Parser *parserPtr) +{ + Parser parser; + Parser *parentParserPtr; + char *path = NULL, *dir, *smipath; + int sming = 0; + int c, i; + FILE *file; + char sep[2]; + + static const char *ext[] = { + "", ".my", ".smiv1", ".smiv2", ".sming", ".mib", ".txt", NULL + }; + + if ((!modulename) || !strlen(modulename)) { + return NULL; + } + + if (!smiIsPath(modulename)) { + /* + * A plain modulename. Lookup the path along SMIPATH... + */ + if (!smiHandle->path) { + return NULL; + } + + smipath = smiStrdup(smiHandle->path); + sep[0] = PATH_SEPARATOR; sep[1] = 0; + for (dir = strtok(smipath, sep); + dir; dir = strtok(NULL, sep)) { + for (i = 0; ext[i]; i++) { + smiAsprintf(&path, "%s%c%s%s", dir, DIR_SEPARATOR, + modulename, ext[i]); + if (! access(path, R_OK)) { + break; + } + smiFree(path); + } + if (ext[i]) break; + { + char *newmodulename = smiStrdup(modulename); + for (i = 0; newmodulename[i]; i++) { + newmodulename[i] = tolower(newmodulename[i]); + } + for (i = 0; ext[i]; i++) { + smiAsprintf(&path, "%s%c%s%s", dir, DIR_SEPARATOR, + newmodulename, ext[i]); + if (! access(path, R_OK)) { + break; + } + smiFree(path); + } + smiFree(newmodulename); + if (ext[i]) break; + } + + path = NULL; + } + smiFree(smipath); + } else { + /* + * A full path. Take it. + */ + path = smiStrdup(modulename); + } + +#if !defined(_MSC_VER) && !defined(__MINGW32__) + if (!path && smiHandle->cache && smiHandle->cacheProg) { + /* Not found in the path; now try to fetch & cache the module. */ + int pid; + char *argv[4]; + char *cmd; + int status; + smiAsprintf(&path, "%s%c%s", + smiHandle->cache, DIR_SEPARATOR, modulename); + if (access(path, R_OK)) { + smiAsprintf(&cmd, "%s %s", smiHandle->cacheProg, modulename); + pid = fork(); + if (pid != -1) { + if (!pid) { + argv[0] = "sh"; argv[1] = "-c"; argv[2] = cmd; argv[3] = 0; + execv("/bin/sh", argv); + exit(127); + } + waitpid(pid, &status, 0); + } + smiFree(cmd); + if (access(path, R_OK)) { + smiFree(path); + path = NULL; + } + } + } +#endif + + if (!path) { + smiPrintError(parserPtr, ERR_MODULE_NOT_FOUND, modulename); + return NULL; + } + + parser.path = path; + + /* + * Look into the file to determine whether it contains + * SMIv1/SMIv2 or SMIng definitions. + */ + + file = fopen(path, "r"); + if (! file) { + smiPrintError(parserPtr, ERR_OPENING_INPUTFILE, path, strerror(errno)); + smiFree(path); + return NULL; + } + while ((c = fgetc(file))) { + if (c == '-' || isupper(c)) { + sming = 0; + break; + } else if (c == '/' || c == 'm') { + sming = 1; + break; + } else if (c == EOF || ! isspace(c)) { + smiPrintError(parserPtr, ERR_ILLEGAL_INPUTFILE, path); + smiFree(path); + fclose(file); + return NULL; + } + } + rewind(file); + + + if (sming == 0) { +#ifdef BACKEND_SMI + parentParserPtr = smiHandle->parserPtr; + smiHandle->parserPtr = &parser; + parser.path = path; + parser.flags = smiHandle->flags; + parser.modulePtr = NULL; + parser.complianceModulePtr = NULL; + parser.capabilitiesModulePtr = NULL; + parser.currentDecl = SMI_DECL_UNKNOWN; + parser.firstStatementLine = 0; + parser.firstNestedStatementLine = 0; + parser.firstRevisionLine = 0; + parser.file = file; + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + if (smiEnterLexRecursion(parser.file) < 0) { + smiPrintError(&parser, ERR_MAX_LEX_DEPTH); + fclose(parser.file); + } + smiDepth++; + parser.line = 1; + smiparse((void *)&parser); + freeNodeTree(parser.pendingNodePtr); + smiFree(parser.pendingNodePtr); + smiLeaveLexRecursion(); + smiDepth--; + fclose(parser.file); + smiFree(path); + smiHandle->parserPtr = parentParserPtr; + return parser.modulePtr; +#else + smiPrintError(parserPtr, ERR_SMI_NOT_SUPPORTED, path); + smiFree(path); + fclose(file); + return NULL; +#endif + } + + if (sming == 1) { +#ifdef BACKEND_SMING + parentParserPtr = smiHandle->parserPtr; + smiHandle->parserPtr = &parser; + parser.path = path; + parser.flags = smiHandle->flags; + parser.modulePtr = NULL; + parser.complianceModulePtr = NULL; + parser.capabilitiesModulePtr = NULL; + parser.currentDecl = SMI_DECL_UNKNOWN; + parser.firstStatementLine = 0; + parser.firstNestedStatementLine = 0; + parser.firstRevisionLine = 0; + parser.file = file; + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + if (smingEnterLexRecursion(parser.file) < 0) { + smiPrintError(&parser, ERR_MAX_LEX_DEPTH); + fclose(parser.file); + } + smiDepth++; + parser.line = 1; + smingparse((void *)&parser); + freeNodeTree(parser.pendingNodePtr); + smiFree(parser.pendingNodePtr); + smingLeaveLexRecursion(); + smiDepth--; + fclose(parser.file); + smiFree(path); + smiHandle->parserPtr = parentParserPtr; + return parser.modulePtr; +#else + smiPrintError(parserPtr, ERR_SMING_NOT_SUPPORTED, path); + smiFree(path); + fclose(file); + return NULL; +#endif + } + + smiFree(path); + fclose(file); + return NULL; +} diff --git a/lib/data.h b/lib/data.h new file mode 100644 index 0000000..1343780 --- /dev/null +++ b/lib/data.h @@ -0,0 +1,757 @@ +/* + * data.h -- + * + * Definitions for the main data structures. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: data.h 7966 2008-03-27 21:25:52Z schoenw $ + */ + +#ifndef _DATA_H +#define _DATA_H + + +#include + +#include "smi.h" + + + +typedef struct List { + SmiElement export; + void *ptr; + struct List *nextPtr; +} List; + +typedef enum Kind { + KIND_UNKNOWN = 0 , /* */ + KIND_MODULE = 1 , /* */ + KIND_MACRO = 2 , /* */ + KIND_TYPE = 3 , /* */ + KIND_OBJECT = 4 , /* */ + KIND_IMPORT = 5 , /* descriptors to be imported. */ + KIND_IMPORTED = 6 , /* imported descriptor. syntax `mod.descr'. */ + KIND_NOTFOUND = 7 /* to be imported, but not found */ +} Kind; +#define NUM_KINDS 7 + + + +typedef unsigned short ParserFlags; +typedef unsigned short ModuleFlags; +typedef unsigned short ImportFlags; +typedef unsigned short ObjectFlags; +typedef unsigned short NodeFlags; +typedef unsigned short TypeFlags; +typedef unsigned short MacroFlags; + +#define NODE_FLAG_ROOT 0x0001 /* mark node tree's root */ + +#define FLAG_SEQTYPE 0x0002 /* type is set from SMIv1/2 SEQUENCE. */ +#define FLAG_REGISTERED 0x0004 /* On an Object: this is registered. */ +#define FLAG_INCOMPLETE 0x0008 /* Just defined by a forward */ + /* referenced type or object. */ +#define FLAG_CREATABLE 0x0040 /* On a Row: New rows can be created. */ +#define FLAG_INGROUP 0x0080 /* Node is contained in a group. */ +#define FLAG_INCOMPLIANCE 0x0100 /* Group is mentioned in a compliance + statement. + In case of ImportFlags: the import + is done through a compliance + MODULE phrase. */ +#define FLAG_INSYNTAX 0x0200 /* Type is mentioned in a syntax + statement. */ + + +typedef struct View { + char *name; + struct View *nextPtr; + struct View *prevPtr; +} View; + + + +typedef struct Module { + SmiModule export; + time_t lastUpdated; /* only for SMIv2 modules */ + struct Object *objectPtr; + struct Object *firstObjectPtr; + struct Object *lastObjectPtr; + struct Type *firstTypePtr; + struct Type *lastTypePtr; + struct Class *firstClassPtr; + struct Class *lastClassPtr; + struct Macro *firstMacroPtr; + struct Macro *lastMacroPtr; + struct Identity *firstIdentityPtr; + struct Identity *lastIdentityPtr; + struct Import *firstImportPtr; + struct Import *lastImportPtr; + struct Revision *firstRevisionPtr; + struct Revision *lastRevisionPtr; + ModuleFlags flags; + int numImportedIdentifiers; + int numStatements; + int numModuleIdentities; + struct Module *nextPtr; + struct Module *prevPtr; + struct Node *prefixNodePtr; +} Module; + + + +typedef struct Revision { + SmiRevision export; + Module *modulePtr; + struct Revision *nextPtr; + struct Revision *prevPtr; + int line; +} Revision; + + + +typedef struct Import { + SmiImport export; + Module *modulePtr; + ImportFlags flags; + struct Import *nextPtr; + struct Import *prevPtr; + Kind kind; + int use; + int line; +} Import; + + + +typedef struct NamedNumber { + SmiNamedNumber export; + struct Type *typePtr; +} NamedNumber; + + + +typedef struct Range { + SmiRange export; + struct Type *typePtr; +} Range; + + + +typedef struct Type { + SmiType export; + Module *modulePtr; + struct Type *parentPtr; + struct List *listPtr; + TypeFlags flags; + struct Type *nextPtr; + struct Type *prevPtr; + int line; +} Type; + + + +typedef struct Option { + SmiOption export; + struct Object *compliancePtr; + struct Object *objectPtr; + int line; +} Option; + + + +typedef struct Refinement { + SmiRefinement export; + struct Object *compliancePtr; /* the compl. Object this Ref belongs to */ + struct Object *objectPtr; /* the Object refined by this Refinement */ + Type *typePtr; /* the refined Type (or NULL) */ + Type *writetypePtr; /* the refined WriteType (or NULL) */ + int line; +} Refinement; + + + +typedef struct Compl { + List *mandatorylistPtr; + List *optionlistPtr; + List *refinementlistPtr; +} Compl; + + + +typedef struct Index { + int implied; + SmiIndexkind indexkind; + struct List *listPtr; /* list of index columns (Object *) */ + struct Object *rowPtr; /* a referenced row (e.g. SMIv2 AUGMENTS) */ +} Index; + + +typedef struct SubjectCategories { + struct List *categories; + int allCategories; +} SubjectCategories; + + +typedef struct Object { + SmiNode export; + Module *modulePtr; + ObjectFlags flags; + Type *typePtr; + struct Object *relatedPtr; /* a related Object (augmented row) */ + struct List *listPtr; /* OG, NT, NG, MC */ + struct List *optionlistPtr; + struct List *refinementlistPtr; + struct Node *nodePtr; + struct Object *prevPtr; /* chain of Objects in this Module */ + struct Object *nextPtr; + struct Object *prevSameNodePtr; /* chain of Objects for this Node */ + struct Object *nextSameNodePtr; + struct List *uniquenessPtr; /* UNIQUENESS */ + int line; +} Object; + + + +typedef struct Node { + SmiSubid subid; + NodeFlags flags; + int oidlen; + SmiSubid *oid; + struct Node *parentPtr; + struct Node *nextPtr; + struct Node *prevPtr; + struct Node *firstChildPtr; + struct Node *lastChildPtr; + Object *firstObjectPtr; + Object *lastObjectPtr; +} Node; + + + +typedef struct Macro { + SmiMacro export; + Module *modulePtr; + MacroFlags flags; + struct Macro *nextPtr; + struct Macro *prevPtr; + int line; +} Macro; + +typedef struct Identity { + SmiIdentity export; + Module *modulePtr; + struct Identity *parentPtr; + struct Identity *nextPtr; + struct Identity *prevPtr; + int line; +} Identity; + +typedef struct Class { + SmiClass export; + Module *modulePtr; + struct Attribute *firstAttributePtr; + struct Attribute *lastAttributePtr; + struct List *uniqueList; + struct Event *firstEventPtr; + struct Event *lastEventPtr; + struct Class *parentPtr; + struct Class *nextPtr; + struct Class *prevPtr; + int line; +} Class; +/*NOTE: if first element of uniqueList points + to current class that is class->uniqueList-> = class; + the class is scalar. If uniqueList = NULL; it is not + meant to be instatiated directly. Otherwise it contains + list of pointers to the class unique attributes. +*/ + + +typedef struct Attribute { + SmiAttribute export; + Class *classPtr; + struct Type *parentTypePtr; + struct List *listPtr; + struct Attribute *nextPtr; + struct Attribute *prevPtr; + int line; + struct Class *parentClassPtr; +} Attribute; + +typedef struct Event { + SmiEvent export; + Class *classPtr; + struct Event *nextPtr; + struct Event *prevPtr; + int line; +} Event; + + + + +typedef struct Parser { + char *path; + FILE *file; + int line; + int lcline; /* for SMI comment warning */ + Module *modulePtr; + ParserFlags flags; + List *firstIndexlabelPtr; /* only for the SMIng parser */ + char *identityObjectName; /* only for the SMIng parser */ + Module *complianceModulePtr; + Module *capabilitiesModulePtr; + Node *parentNodePtr; + int currentDecl; + int firstStatementLine; + int firstNestedStatementLine; + int firstRevisionLine; + Node *pendingNodePtr; +} Parser; + + + +typedef struct Handle { + char *name; + struct Handle *prevPtr; + struct Handle *nextPtr; + View *firstViewPtr; + View *lastViewPtr; + Module *firstModulePtr; + Module *lastModulePtr; + Node *rootNodePtr; + Type *typeOctetStringPtr; + Type *typeObjectIdentifierPtr; + Type *typeInteger32Ptr; + Type *typeUnsigned32Ptr; + Type *typeInteger64Ptr; + Type *typeUnsigned64Ptr; + Type *typeFloat32Ptr; + Type *typeFloat64Ptr; + Type *typeFloat128Ptr; + Type *typeEnumPtr; + Type *typeBitsPtr; + Type *typePointerPtr; + int flags; + char *path; + char *cache; + char *cacheProg; + int errorLevel; + SmiErrorHandler *errorHandler; + Parser *parserPtr; +} Handle; + + + +extern int smiDepth; /* SMI parser recursion depth */ + +extern Handle *smiHandle; /* The current handle */ + + + +extern Handle *addHandle(const char *name); + +extern void removeHandle(Handle *handlePtr); + +extern Handle *findHandleByName(const char *name); + + + +extern View *addView(const char *modulename); + +extern int isInView(const char *modulename); + + + +extern Module *addModule(char *modulename, + char *path, + ModuleFlags flags, + Parser *parserPtr); + +extern void setModuleIdentityObject(Module *modulePtr, + Object *objectPtr); + +extern void setModuleLastUpdated(Module *modulePtr, + time_t lastUpdated); + +extern void setModuleOrganization(Module *modulePtr, + char *organization); + +extern void setModuleContactInfo(Module *modulePtr, + char *contactinfo); + +extern void setModuleDescription(Module *modulePtr, + char *description, + Parser *parserPtr); + +extern void setModuleReference(Module *modulePtr, + char *reference, + Parser *parserPtr); + +extern Module *findModuleByName(const char *modulename); + + + +extern Revision *addRevision(time_t date, + char *description, + Parser *parserPtr); + +extern void setRevisionLine(Revision *revisionPtr, + int line, + Parser *parserPtr); + + + +extern Import *addImport(char *name, + Parser *parserPtr); + +extern void addImportFlags(Import *importPtr, ImportFlags flags); + +extern void setImportModulename(Import *importPtr, + char *modulename); + +extern int checkImports(Module *modulePtr, + Parser *parserPtr); + +extern Import *findImportByName(const char *name, + Module *modulePtr); + +extern Import *findImportByModulenameAndName(const char *modulename, + const char *name, + Module *modulePtr); + +extern Object *addObject(char *objectname, + Node *parentNodePtr, + SmiSubid subid, + ObjectFlags flags, + Parser *parserPtr); + +extern Object *duplicateObject(Object *templatePtr, + ObjectFlags flags, + Parser *parserPtr); + +extern Node *addNode(Node *parentNodePtr, + SmiSubid subid, + NodeFlags flags, + Parser *parserPtr); + +extern Node *createNodes(unsigned int oidlen, SmiSubid *oid); + +extern Node *createNodesByOidString(const char *oid); + +extern Node *getParentNode(Node *nodePtr); + +/* + * setObjectName() might relink MIB tree object structures. If the + * current objectPtr is to be used after the call, it should look like + * objectPtr = setObjectName(objectPtr, name); + */ +extern Object *setObjectName(Object *objectPtr, + char *name, Parser *parserPtr); + +extern void setObjectType(Object *objectPtr, + Type *typePtr); + +extern void setObjectAccess(Object *objectPtr, + SmiAccess access); + +extern void setObjectStatus(Object *objectPtr, + SmiStatus status); + +extern void setObjectDescription(Object *objectPtr, + char *description, + Parser *parserPtr); + +extern void setObjectReference(Object *objectPtr, + char *reference, + Parser *parserPtr); + +extern void setObjectDecl(Object *objectPtr, + SmiDecl decl); + +extern void setObjectUniqueness(Object *objectPtr, List *listPtr); + +extern void setObjectInstallErrors(Object *objectPtr, List *listPtr); + +extern void setObjectLine(Object *objectPtr, + int line, + Parser *parserPtr); + +extern void setObjectNodekind(Object *objectPtr, + SmiNodekind nodekind); + +extern void addObjectFlags(Object *objectPtr, + ObjectFlags flags); + +extern void deleteObjectFlags(Object *objectPtr, + ObjectFlags flags); + +extern int checkObjectFlags(Object *objectPtr, ObjectFlags flags); + +extern void setObjectList(Object *objectPtr, + struct List *listPtr); + +extern void setObjectRelated(Object *objectPtr, + Object *relatedPtr); + +extern void setObjectImplied(Object *objectPtr, + int implied); + +extern void setObjectCreate(Object *objectPtr, + int create); + +extern void setObjectIndexkind(Object *objectPtr, + SmiIndexkind indexkind); + +extern void setObjectIndex(Object *objectPtr, + Index *indexPtr); + +extern void setObjectFormat(Object *objectPtr, + char *format); + +extern void setObjectUnits(Object *objectPtr, + char *units); + +extern void setObjectValue(Object *objectPtr, + SmiValue *valuePtr); + +extern Node *findNodeByParentAndSubid(Node *parentNodePtr, + SmiSubid subid); + +extern Node *findNodeByOid(unsigned int oidlen, SmiSubid *oid); + +extern Node *findNodeByOidString(char *oid); + +extern Object *findObjectByNode(Node *nodePtr); + +extern Object *findObjectByModuleAndNode(Module *modulePtr, + Node *nodePtr); + +extern Object *findObjectByModulenameAndNode(const char *modulename, + Node *nodePtr); + +extern Object *findObjectByName(const char *objectname); + +extern Object *findNextObjectByName(const char *objectname, + Object *prevObjectPtr); + +extern Object *findObjectByModuleAndName(Module *modulePtr, + const char *objectname); + +extern Object *findObjectByModulenameAndName(const char *modulename, + const char *objectname); + + + +extern Type *addType(char *type_name, + SmiBasetype basetype, + TypeFlags flags, + Parser *parserPtr); + +extern Type *duplicateType(Type *templatePtr, + TypeFlags flags, + Parser *parserPtr); + +extern Type *setTypeName(Type *typePtr, + char *name); + +extern void setTypeStatus(Type *typePtr, + SmiStatus status); + +extern void setTypeBasetype(Type *typePtr, + SmiBasetype basetype); + +extern void setTypeParent(Type *typePtr, + Type *parentPtr); + +extern void setTypeList(Type *typePtr, + struct List *listPtr); + +extern void setTypeDescription(Type *typePtr, + char *description, + Parser *parserPtr); + +extern void setTypeReference(Type *typePtr, + char *reference, + Parser *parserPtr); + +extern void setTypeDecl(Type *typePtr, + SmiDecl decl); + +extern void setTypeLine(Type *typePtr, + int line, + Parser *parserPtr); + +extern void addTypeFlags(Type *typePtr, + TypeFlags flags); + +extern void deleteTypeFlags(Type *typePtr, + TypeFlags flags); + +extern void setTypeFormat(Type *typePtr, + char *format); + +extern void setTypeUnits(Type *typePtr, + char *units); + +extern void setTypeValue(Type *typePtr, + SmiValue *valuePtr); + + + +extern Type *findTypeByName(const char *type_name); + +extern Type *findNextTypeByName(const char *type_name, + Type *prevTypePtr); + +extern Type *findTypeByModuleAndName(Module *modulePtr, + const char *type_name); + +extern Type *findTypeByModulenameAndName(const char *modulename, + const char *type_name); + +extern NamedNumber *findTypeNamedNumber(Type *typePtr, + SmiInteger32 number); + + + +extern Identity *addIdentity(char *identityname, + Parser *parserPtr); + +extern void setIdentityDecl(Identity *identityPtr, + SmiDecl decl); + +extern void setIdentityStatus(Identity *identityPtr, + SmiStatus status); + +extern void setIdentityDescription(Identity *identityPtr, + char *description, + Parser *parserPtr); + +extern void setIdentityReference(Identity *identityPtr, + char *reference, + Parser *parserPtr); + +extern void setIdentityParent(Identity *identityPtr, + Identity *parentPtr); + +extern Identity *findIdentityByName(const char *identityname); + +extern Identity *findIdentityByModuleAndName(Module *modulePtr, + const char *identityname); + +extern Identity *findIdentityByModulenameAndName(const char *modulename, + const char *identity_name); + + + + +extern Class *addClass(char *classname, + Parser *parserPtr); + +extern void setClassDecl(Class *classPtr, + SmiDecl decl); + +extern void setClassStatus(Class *classPtr, + SmiStatus status); + +extern void setClassDescription(Class *classPtr, + char *description, + Parser *parserPtr); + +extern void setClassReference(Class *classPtr, + char *reference, + Parser *parserPtr); + +extern Class *findClassByModuleAndName(Module *modulePtr, char *name); + +extern Class *findClassByModulenameAndName(const char *modulename, + const char *class_name); + + + +extern Attribute *duplicateTypeToAttribute(Type *templatePtr, + Class *classPtr, Parser *parserPtr); + +extern Attribute *addAttribute(char *attribute_name, + Class *classPtr, Parser *parserPtr); + +extern void setAttributeName(Attribute *attributePtr, char *name); + +extern void setAttributeDecl(Attribute *attributePtr, + SmiDecl decl); + +extern void setAttributeStatus(Attribute *attributePtr, + SmiStatus status); + +extern void setAttributeDescription(Attribute *attributePtr, + char *description); + +extern void setAttributeReference(Attribute *attributePtr, + char *reference); + +extern void setAttributeAccess(Attribute *attributePtr,SmiAccess access); + +extern void setAttributeParentType(Attribute *attributePtr, + Type *parentPtr); + +extern void setAttributeParentClass(Attribute *attributePtr, + Class *parentPtr); + +extern void setAttributeList(Attribute *attributePtr, List *listPtr); + + +extern Event *addEvent(char *eventname, Class *classPtr, + Parser *parserPtr); + + +extern Macro *addMacro(char *macroname, + MacroFlags flags, + Parser *parserPtr); + +extern void setMacroStatus(Macro *macroPtr, + SmiStatus status); + +extern void setMacroDescription(Macro *macroPtr, + char *description, + Parser *parserPtr); + +extern void setMacroReference(Macro *macroPtr, + char *reference, + Parser *parserPtr); + +extern void setMacroDecl(Macro *macroPtr, + SmiDecl decl); + +extern void setMacroAbnf(Macro *macroPtr, + char *abnf, + Parser *parserPtr); + +extern void setMacroLine(Macro *macroPtr, + int line, + Parser *parserPtr); + +extern Macro *findMacroByName(const char *macroname); + +extern Macro *findMacroByModuleAndName(Module *modulePtr, + const char *macroname); + +extern Macro *findMacroByModulenameAndName(const char *modulename, + const char *macroname); + + +extern NamedNumber *findNamedNumberByName(Type *typePtr, + const char *name); + + + +extern int smiInitData(void); + +extern void smiFreeData(void); + +extern Module *loadModule(const char *modulename, Parser *parserPtr); + + +#endif /* _DATA_H */ diff --git a/lib/error.c b/lib/error.c new file mode 100644 index 0000000..b9b931b --- /dev/null +++ b/lib/error.c @@ -0,0 +1,1034 @@ +/* + * error.c -- + * + * Error handling routines. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: error.c 7734 2008-02-15 07:49:14Z schoenw $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * Structure to hold error messages with their associated error level. + * Note that it is possible to modify the error levels at run time. + */ + +typedef struct Error { + int level; /* 0: fatal, no way to continue */ + /* 1: severe, changing semantics to continue */ + /* must be corrected */ + /* 2: error, but able to continue, */ + /* should be corrected */ + /* 3: minor error, but should be corrected */ + /* 4: change is recommended if possible */ + /* 5: warning, but might totally correct */ + /* under some circumstances */ + /* 6: just a notice */ + /* 128+: flag to signal an ignored error msg */ + int id; /* error id, used in error() invocation */ + char *tag; /* tag for error identification on cmd line */ + char *fmt; /* the complete error format string */ + char *description; /* text describing the error in more detail */ +} Error; + + + +/* + * Note: The Makefile produces a list of error macros for every `ERR...' + * pattern in this file (error.c). This list is written to errormacros.h. + */ + +static Error errors[] = { + { 0, ERR_INTERNAL, "internal", + "internal error!", + "An internal error occured in the libsmi core, which is not further\n" + "specified. This is most likely not related to a bug in a MIB/PIB\n" + "module or any unexpected circumstances of your system environment.\n" + "Please submit a detailed bug report to the libsmi maintainer or the\n" + "libsmi mailing list at ."}, + { 0, ERR_MAX_LEX_DEPTH, "import-depth", + "maximum IMPORTS nesting, probably a loop?", + "A new parser instance is created whenever a module imports from\n" + "another module that has not yet been parsed. This might lead to\n" + "recursive creation of parser instances in case of recursive imports.\n" + "The maximum depth of these recursive imports is limited (30).\n" + "Usually this limit should never be reached. However, this error\n" + "might occur when modules illegally import definitions in a loop."}, + { 0, ERR_OUT_OF_MEMORY, "internal-memory", + "out of memory", + "Libsmi needs to allocate memory dynamically during runtime, but\n" + "the system did run out of memory."}, + { 1, ERR_LEX_UNEXPECTED_CHAR, "lexical", + "lexically unexpected character, skipping to end of line", + "While parsing a MIB/PIB file a lexically unexpected character has\n" + "been read, so that subsequent input is dropped up to the end of\n" + "line. Note that MIBs and PIBs only allow 7-bit ASCII characters and\n" + "no international characters at any place in the file (RFC 2578,\n" + "Section 3.1.1)."}, + { 1, ERR_OTHER_ERROR, "internal-other", + "%s", + "An unspecified error occured. Please submit a detailed bug report\n" + "to the libsmi maintainer or the libsmi mailing list at\n" + "."}, + { 1, ERR_ILLEGAL_KEYWORD, "keyword-illegal", + "illegal keyword `%s'", + "ASN.1 has some language keywords that are explicitly forbidden in\n" + "MIB and PIB files. Such a keyword has been read from the current\n" + "file (RFC 2578, Section 3.7)."}, + { 2, ERR_ID_ENDS_IN_HYPHEN, "hyphen-end", + "identifier `%s' illegally ends in a hyphen", NULL}, + { 3, ERR_LEADING_ZEROS, "number-leading-zero", + "leading zero(s) on a number", + "A decimal number other than 0 must not start with a 0 digit. The\n" + "value 0 must be represented as a single 0 digit."}, + { 2, ERR_NUMBER_TOO_LARGE, "number-range", + "number `%s' too large", + "The range of numerical values is restricted depending on the\n" + "underlying base type and possibly further type refinements."}, + { 2, ERR_MODULENAME_64, "namelength-64-module", + "module name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_MODULENAME_32, "namelength-32-module", + "module name `%s' longer than 32 characters", NULL}, + { 2, ERR_TYPENAME_64, "namelength-64-type", + "type name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_TYPENAME_32, "namelength-32-type", + "type name `%s' longer than 32 characters", NULL}, + { 2, ERR_OIDNAME_64, "namelength-64-object", + "object identifier name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_OIDNAME_32, "namelength-32-object", + "object identifier name `%s' longer than 32 characters", NULL}, + { 2, ERR_ENUMNAME_64, "namelength-64-enumeration", + "enumeration name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_ENUMNAME_32, "namelength-32-enumeration", + "enumeration name `%s' longer than 32 characters", NULL}, + { 2, ERR_BITNAME_64, "namelength-64-bit", + "bit name `%s' must not be longer than 64 characters", NULL}, + { 128 + 4, ERR_BITNAME_32, "namelength-32-bit", + "bit name `%s' longer than 32 characters", NULL}, + { 2, ERR_UCIDENTIFIER_64, "namelength-64-uc-identifier", + "uppercase identifier `%s' must not be longer than 64 characters", NULL}, + { 2, ERR_LCIDENTIFIER_64, "namelength-64-lc-identifier", + "lowercase identifier `%s' must not be longer than 64 characters", NULL}, + { 2, ERR_TRAP_TYPE, "trap", + "TRAP-TYPE macro is not allowed in SMIv2", NULL}, + { 2, ERR_TOO_MANY_MODULE_IDENTITIES, "module-identity-multiple", + "more than one MODULE-IDENTITY clause in SMIv2 MIB", NULL}, + { 2, ERR_NO_MODULE_IDENTITY, "module-identity-missing", + "missing MODULE-IDENTITY clause in SMIv2 MIB", NULL}, + { 2, ERR_OID_DEFVAL_TOO_LONG_SMIV2, "default-too-long-smiv2", + "object identifier default values must be expressed as a single identifier", NULL}, + { 4, ERR_OID_DEFVAL_TOO_LONG_SMIV1, "default-too-long-smiv1", + "object identifier default values in form of sub-identifier sequences are not implemented", NULL}, + { 2, ERR_INVALID_SMIV1_ACCESS, "access-invalid-smiv1", + "invalid access `%s' in SMIv1 MIB", NULL}, + { 2, ERR_INVALID_SMIV2_ACCESS, "access-invalid-smiv2", + "invalid access `%s' in SMIv2 MIB", NULL}, + { 2, ERR_SMIV2_WRITE_ONLY, "access-write-only-smiv2", + "access `write-only' is no longer allowed in SMIv2", NULL}, + { 4, ERR_SMIV1_WRITE_ONLY, "access-write-only-smiv1", + "access `write-only' is not a good idea", NULL}, + { 2, ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, "variation-access-notification", + "invalid access `%s' in a notification variation", NULL}, + { 2, ERR_INVALID_VARIATION_ACCESS, "variation-access", + "invalid access `%s' in a variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_SYNTAX, "variation-syntax", + "SYNTAX is not allowed in a notification variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_WRITESYNTAX, "variation-writesyntax", + "WRITE-SYNTAX is not allowed in a notification variation", NULL}, + { 2, ERR_DEFVAL_SYNTAX, "defval-syntax", + "default value syntax does not match object syntax", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_DEFVAL, "variation-defval", + "default value is not allowed in a notification variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_CREATION, "variation-creation", + "CREATION-REQUIRES is not allowed in a notification variation", NULL}, + { 3, ERR_MODULE_IDENTITY_NOT_FIRST, "module-identity-not-first", + "MODULE-IDENTITY clause must be the first declaration in a module", NULL}, + { 2, ERR_INVALID_SMIV1_STATUS, "status-invalid-smiv1", + "invalid status `%s' in SMIv1 MIB", NULL}, + { 2, ERR_INVALID_SMIV2_STATUS, "status-invalid-smiv2", + "invalid status `%s' in SMIv2 MIB", NULL}, + { 2, ERR_INVALID_CAPABILITIES_STATUS, "status-invalid-capabilities", + "invalid status `%s' in AGENT-CAPABILITIES macro", NULL}, + { 5, ERR_OIDNAME_INCLUDES_HYPHEN, "hyphen-in-object", + "object identifier name `%s' should not include hyphens in SMIv2 MIB", NULL}, + { 2, ERR_ILLEGAL_CHAR_IN_STRING, "char-illegal-string", + "illegal character `%c' (0x%2x) in quoted string", NULL}, + { 2, ERR_BIN_STRING_MUL8, "stringlength-binary", + "length of binary string `%s' is not a multiple of 8", NULL}, + { 2, ERR_HEX_STRING_MUL2, "stringlength-hexadecimal", + "length of hexadecimal string `%s' is not a multiple of 2", NULL}, + { 5, ERR_FLUSH_DECLARATION, "internal-flushing", + "flushing recent incorrect declaration, see previous error(s)", NULL}, + { 2, ERR_MAX_ACCESS_IN_SMIV1, "maxaccess-in-smiv1", + "MAX-ACCESS is SMIv2 style, use ACCESS in SMIv1 MIBs instead", NULL}, + { 2, ERR_ACCESS_IN_SMIV2, "access-in-smiv2", + "ACCESS is SMIv1 style, use MAX-ACCESS in SMIv2 MIBs instead", NULL}, + { 1, ERR_MODULE_NOT_FOUND, "module-not-found", + "failed to locate MIB module `%s'", NULL}, + { 1, ERR_OPENING_INPUTFILE, "module-not-readable", + "%s: %s", NULL}, + { 1, ERR_ILLEGAL_INPUTFILE, "module-unknown-format", + "%s: unable to determine SMI version", NULL}, + { 1, ERR_UNKNOWN_OIDLABEL, "object-identifier-unknown", + "unknown object identifier label `%s'", NULL}, + { 5, ERR_OIDLABEL_CHANGED, "object-identifier-label-not-matching", + "label `%s' does not match previous label `%s' for same object identifier", NULL}, + { 5, ERR_IDENTIFIER_OID_CHANGED, "object-identifier-oid-not-matching", + "object identifier for label `%s' does not match previous label usage", NULL}, + { 2, ERR_EXISTENT_OBJECT, "object-identifier-redefined", + "an object named `%s' already exists", NULL}, + { 2, ERR_IDENTIFIER_NOT_IN_MODULE, "import-failed", + "identifier `%s' cannot be imported from module `%s'", NULL}, + { 1, ERR_MACRO, "macro-not-allowed", + "MACRO definitions are only allowed in SMI base modules", NULL}, + { 1, ERR_CHOICE, "choice-not-allowed", + "CHOICE type definitions are only allowed in SMI base modules", NULL}, + { 1, ERR_TYPE_SMI_OR_SPPI, "type-not-allowed", + "type `%s' may only be defined in SMI/SPPI base modules", NULL}, + { 1, ERR_TYPE_SPPI, "type-not-allowed-sppi", + "type `%s' may only be defined in SPPI base modules", NULL}, + { 1, ERR_TYPE_TAG, "tagged-type-not-allowed", + "tagged or IMPLICIT types may only be defined in SMI base modules", NULL}, + { 1, ERR_EXPORTS, "export-not-allowed", + "EXPORTS are only allowed in SMIv1 base modules", NULL}, + { 1, ERR_ILLEGALLY_QUALIFIED, "object-identifier-qualified", + "illegally qualified object identifier label `%s'", NULL}, + { 2, ERR_MISSING_DESCRIPTION, "description-missing", + "description missing in object definition", NULL}, + { 2, ERR_OIDLABEL_NOT_FIRST, "object-identifier-not-prefix", + "Object identifier element `%s' name only allowed as first element", NULL}, + { 2, ERR_UNKNOWN_TYPE, "type-unknown", + "unknown type `%s'", NULL}, + { 2, ERR_UNKNOWN_CLASS, "class-unknown", + "unknown class `%s'", NULL}, + { 2, ERR_UNKNOWN_TYPE_OR_CLASS, "type-or-class-unknown", + "unknown type or class `%s' in attribute statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_ACCESS, "class-refference-access-statement", + "attribute `%s' refferences class and must not have access statement", NULL}, + { 2, ERR_ATTRIBUTE_MISSING_ACCESS, "type-refference-missing-access-statement", + "attribute `%s' refferences type and must have access statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_DEFAULT, "class-refference-default-statement", + "attribute `%s' refferences class and must not have default statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_FORMAT, "class-refference-format-statement", + "attribute `%s' refferences class and must not have format statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_UNITS, "class-refference-unit-statement", + "attribute `%s' refferences class and must not have units statement", NULL}, + { 2, ERR_DUPLICATE_TYPE_NAME, "duplicate-type-name", + "type name `%s' already used in this module", NULL}, + { 2, ERR_ATTRIBUTE_NOT_FOUND, "unknown-attribute-name", + "attribute name `%s' is not defined in this class", NULL}, + { 2, ERR_DUPLICATE_ATTRIBUTE_NAME, "duplicate-attribute-name", + "attribute name `%s' already used in this class", NULL}, + { 2, ERR_DUPLICATE_CLASS_NAME, "duplicate-class-name", + "class name `%s' already used in this module", NULL}, + { 2, ERR_ILLEGAL_RANGE_FOR_COUNTER, "counter-range-illegal", + "illegal range restriction for counter type `%s'", NULL}, + { 2, ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, "range-illegal", + "illegal range restriction for non-numerical parent type `%s'", NULL}, + { 2, ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, "size-illegal", + "illegal size restriction for non-octet-string parent type `%s'", NULL}, + { 2, ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, "enum-illegal", + "illegal enumeration or bits restriction for non-enumeration-or-bits parent type `%s'", NULL}, + { 1, ERR_SMIV2_SIGNED_NUMBER_RANGE, "out-of-range-signed", + "number `%s' is out of SMIv1/SMIv2 signed number range", NULL}, + { 1, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, "out-of-range-unsigned", + "number `%s' is out of SMIv1/SMIv2 unsigned number range", NULL}, + { 1, ERR_INTEGER32_TOO_LARGE, "out-of-range-integer32", + "Integer32 value `%u' is too large", NULL}, + { 1, ERR_UNEXPECTED_VALUETYPE, "type-not-matching", + "type of value does not match declaration", NULL}, + { 1, ERR_FLOAT_OVERFLOW, "under-or-overflow-float", + "float value `%s' cannot be stored as it causes over or underflow", NULL}, + { 1, ERR_SMI_NOT_SUPPORTED, "smi-not-supported", + "file `%s' seems to be SMIv1 or SMIv2 which is not supported", NULL}, + { 1, ERR_SMING_NOT_SUPPORTED, "sming-not-supported", + "file `%s' seems to be SMIng which is not supported", NULL}, + { 5, ERR_UNUSED_IMPORT, "import-unused", + "identifier `%s' imported from module `%s' is never used", NULL}, + { 2, ERR_MACRO_NOT_IMPORTED, "macro-not-imported", + "macro `%s' has not been imported from module `%s'", NULL}, + { 5, ERR_IMPLICIT_NODE, "node-implicit", + "implicit node definition", NULL}, + { 3, ERR_SCALAR_READCREATE, "scalar-not-creatable", + "scalar object must not have a `read-create' access value", NULL}, + { 4, ERR_NAMEDNUMBER_INCLUDES_HYPHEN, "hyphen-in-label", + "named number `%s' must not include a hyphen in SMIv2", NULL}, + { 4, ERR_NAMEDBIT_INCLUDES_HYPHEN, "hyphen-in-label", + "named bit `%s' must not include a hyphen in SMIv2", NULL}, + { 2, ERR_REDEFINITION, "identifier-redefined", + "redefinition of identifier `%s'", NULL}, + { 5, ERR_EXT_REDEFINITION, "identifier-external-redefined", + "redefinition of identifier `%s::%s'", NULL}, + { 5, ERR_CASE_REDEFINITION, "identifier-case-match", + "identifier `%s' differs from `%s' only in case", NULL}, + { 5, ERR_EXT_CASE_REDEFINITION, "identifier-external-case-match", + "identifier `%s' differs from `%s::%s' only in case", NULL}, + { 5, ERR_BASETYPE_REDEFINITION, "identifier-basetype-redefined", + "definition of identifier `%s' which is already a SMI or SPPI basetype", NULL}, + { 6, ERR_PREVIOUS_DEFINITION, "previous-definition", + "previous definition of `%s'", NULL}, + { 2, ERR_INVALID_FORMAT, "invalid-format", + "invalid format specification `%s'", NULL}, + { 3, ERR_REFINEMENT_ALREADY_EXISTS, "refinement-exists", + "refinement for `%s' already exists in this compliance statement", NULL}, + { 3, ERR_OPTIONALGROUP_ALREADY_EXISTS, "optional-group-exists", + "optional group definition for `%s' already exists in this compliance statement", NULL}, + { 2, ERR_UNEXPECTED_TYPE_RESTRICTION, "subtype-illegal", + "subtyping not allowed", + "The types OBJECT IDENTIFIER, IpAddress, Counter32, Counter64,\n" + "and TimeTicks, and any types in a SEQUENCE clause must not be\n" + "sub-typed (RFC 2578, Sections 7.1.12 and 9)."}, + { 1, ERR_UNKNOWN_CONFIG_CMD, "config-command-unknown", + "unknown configuration command `%s' in file `%s'", NULL}, + { 6, ERR_CACHE_CONFIG_NOT_SUPPORTED, "config-caching-not-supported", + "module caching is not supported though configured in file `%s'", NULL}, + { 4, ERR_SMIV2_OPAQUE_OBSOLETE, "opaque-smiv2", + "SMIv2 provides Opaque solely for backward-compatibility", NULL}, + { 4, ERR_SPPI_OPAQUE_OBSOLETE, "opaque-sppi", + "SPPI provides Opaque solely for backward-compatibility", NULL}, + { 2, ERR_DATE_CHARACTER, "date-character", + "date specification `%s' contains an illegal character", NULL}, + { 2, ERR_DATE_LENGTH, "date-length", + "date specification `%s' has an illegal length", NULL}, + { 2, ERR_DATE_VALUE, "date-value", + "date specification `%s' contains an illegal value", NULL}, + { 5, ERR_DATE_YEAR_2DIGITS, "date-year-2digits", + "date specification `%s' contains a two-digit year representing `%d'", NULL}, + { 2, ERR_DATE_YEAR, "date-year", + "date specification `%s' contains an illegal year", NULL}, + { 2, ERR_DATE_MONTH, "date-month", + "date specification `%s' contains an illegal month", NULL}, + { 2, ERR_DATE_DAY, "date-day", + "date specification `%s' contains an illegal day", NULL}, + { 2, ERR_DATE_HOUR, "date-hour", + "date specification `%s' contains an illegal hour", NULL}, + { 2, ERR_DATE_MINUTES, "date-minutes", + "date specification `%s' contains illegal minutes", NULL}, + { 4, ERR_DATE_IN_FUTURE, "date-in-future", + "date specification `%s' is in the future", NULL}, + { 4, ERR_DATE_IN_PAST, "date-in-past", + "date specification `%s' predates the SMI standard", NULL}, + { 3, ERR_REVISION_NOT_DESCENDING, "revision-not-descending", + "revision not in reverse chronological order", NULL}, + { 3, ERR_REVISION_MISSING, "revision-missing", + "revision for last update is missing", NULL}, + { 3, ERR_REVISION_AFTER_LAST_UPDATE, "revision-after-update", + "revision date after last update", NULL}, + { 5, ERR_INTEGER_IN_SMIV2, "integer-misuse", + "use Integer32 instead of INTEGER in SMIv2", NULL}, + { 5, ERR_MODULE_ALREADY_LOADED, "module-already-loaded", + "module `%s' is already loaded, aborting parser on this file", NULL}, + { 5, ERR_IDENTITY_PARENT_NOT_FOUND, "sming-identity-parent-not-found", + "sming identity parent `%s' could not be found, or is forward reference", NULL}, + { 2, ERR_SMIV2_BASETYPE_NOT_IMPORTED, "basetype-not-imported", + "SMIv2 base type `%s' must be imported from SNMPv2-SMI", NULL}, + { 2, ERR_BASETYPE_UNKNOWN, "basetype-unknown", + "type `%s' of node `%s' does not resolve to a known base type", NULL}, + { 2, ERR_ROW_SUBID_ONE, "row-node-subidentifier-one", + "subidentifier of row node `%s' must be 1", NULL}, + { 5, ERR_ROWNAME_ENTRY, "row-name-entry", + "row identifier `%s' should match `*Entry'", NULL}, + { 5, ERR_TABLENAME_TABLE, "table-name-table", + "table identifier `%s' should match `*Table'", NULL}, + { 5, ERR_ROWNAME_TABLENAME, "row-name-table-name", + "row identifier `%s' should have the same prefix as table identifier `%s'", NULL}, + { 5, ERR_SMIV2_TYPE_ASSIGNEMENT, "type-assignement-smiv2", + "type assignement `%s' should be a textual convention in SMIv2", NULL}, + { 5, ERR_ILLEGAL_IMPORT, "import-illegal", + "identifier `%s' may not be imported from module `%s'", NULL}, + { 3, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, "textual-convention-nested", + "textual convention `%s' can not be derived from the textual convention `%s'", NULL}, + { 3, ERR_TABLE_ACCESS, "access-table-illegal", + "table node `%s' must be `not-accessible'", NULL}, + { 3, ERR_ROW_ACCESS, "access-row-illegal", + "row node `%s' must be `not-accessible'", NULL}, + { 4, ERR_COUNTER_ACCESS, "access-counter-illegal", + "counter object `%s' must be `read-only' or `accessible-for-notify'", NULL}, + { 2, ERR_ENUM_SUBTYPE_OF, "subtype-enumeration-illegal", + "named number `%s(%d)' illegal in sub-type of `%s'", NULL}, + { 2, ERR_BITS_SUBTYPE_OF, "subtype-bits-illegal", + "named number `%s' illegal in sub-type of `%s'", NULL}, + { 2, ERR_ENUM_SUBTYPE, "subtype-enumeration-illegal", + "named number `%s(%d)' illegal in sub-type", NULL}, + { 2, ERR_BITS_SUBTYPE, "subtype-bits-illegal", + "named number `%s' illegal in sub-type", NULL}, + { 2, ERR_ENUM_NAME_REDEFINITION, "enum-name-redefinition", + "redefinition of name `%s' in number enumeration", NULL}, + { 2, ERR_ENUM_NUMBER_REDEFINITION, "enum-number-redefinition", + "redefinition of number `%d' in number enumeration", NULL}, + { 2, ERR_ENUM_NAME_NOT_DEFINED, "enum-name-not-defined", + "enumeration name `%s' not defined in this scope ", NULL}, + { 2, ERR_ENUM_ZERO, "enum-zero", + "number enumeration contains zero value in SMIv1 MIB", NULL}, + { 2, ERR_BITS_NAME_REDEFINITION, "bits-name-redefinition", + "redefinition of name `%s' in named bits list", NULL}, + { 2, ERR_BITS_NUMBER_REDEFINITION, "bits-number-redefinition", + "redefinition of number `%u' in named bits list", NULL}, + { 2, ERR_BITS_NUMBER_NEGATIVE, "bits-number-negative", + "there is negative number in bits definition", NULL}, + { 2, ERR_BITS_NUMBER_TOO_LARGE, "bits-number-too-large", + "named bit `%s(%u)' exceeds maximum bit position", NULL}, + { 4, ERR_BITS_NUMBER_LARGE, "bits-number-large", + "named bit `%s(%u)' may cause interoperability or implementation problems", NULL}, + { 4, ERR_BITS_ZERO_NOT_NAMED, "bits-zero-not-used", + "first bit (bit zero) has no name assigned", + "Named bits should start at bit position zero (RFC 2578,\n" + "Section 7.1.4)."}, + { 2, ERR_RANGE_OUT_OF_BASETYPE, "range-bounds", + "range limit exceeds underlying basetype", NULL}, + { 2, ERR_RANGE_OVERLAP, "range-overlap", + "overlapping range limits", NULL}, + { 5, ERR_RANGES_NOT_ASCENDING, "range-ascending", + "ranges not in ascending order", NULL}, + { 5, ERR_NAMED_NUMBERS_NOT_ASCENDING, "named-numbers-ascending", + "named numbers not in ascending order", NULL}, + { 2, ERR_EXCHANGED_RANGE_LIMITS, "range-exchanged", + "range limits must be `lower-bound .. upper-bound'", NULL}, + { 1, ERR_INDEX_BASETYPE, "index-illegal-basetype", + "illegal base type `%s' in index element `%s' of row %s", NULL}, + { 5, ERR_INDEX_TOO_LARGE, "index-exceeds-too-large", + "index of row `%s' can exceed OID size limit by %d subidentifier(s)", NULL}, + { 2, ERR_INDEX_NO_RANGE, "index-element-no-range", + "index element `%s' of row `%s' must have a range restriction", NULL}, + { 2, ERR_INDEX_NO_RANGE_MOD, "index-element-no-range", + "index element `%s::%s' of row `%s' must have a range restriction", NULL}, + { 3, ERR_INDEX_STRING_NO_SIZE, "index-element-no-size", + "index element `%s' of row `%s' must have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that index elements used to form\n" + "instance identifiers must have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5)."}, + { 3, ERR_INDEX_STRING_NO_SIZE_MOD, "index-element-no-size", + "index element `%s::%s' of row `%s' must have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that index elements used to form\n" + "instance identifiers must have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5)."}, + { 3, ERR_INDEX_OID_NO_SIZE, "index-element-no-size", + "index element `%s' of row `%s' should but cannot have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that all index elements used to form\n" + "instance identifiers should have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n" + "be restricted in size (Section 9) although it is legal to use\n" + "objects of type OBJECT IDENTIFIER as index elements."}, + { 6, ERR_INDEX_OID_NO_SIZE_MOD, "index-element-no-size", + "index element `%s::%s' of row `%s' should but cannot have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that all index elements used to form\n" + "instance identifiers should have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n" + "be restricted in size (Section 9) although it is legal to use\n" + "objects of type OBJECT IDENTIFIER as index elements."}, + { 1, ERR_INDEX_RANGE_NEGATIVE, "index-element-range-negative", + "range restriction of index element `%s' of row `%s' must be non-negative", NULL}, + { 1, ERR_INDEX_ENUM_NEGATIVE, "index-element-enum-negative", + "enumerations of index element `%s' of row `%s' must be non-negative", NULL}, + { 5, ERR_INDEX_NOT_COLUMN, "index-element-not-column", + "index element `%s' of row `%s' must be a column", NULL}, + { 2, ERR_AUGMENT_NESTED, "augment-nested", + "row `%s' augments `%s' which is not a base table row", NULL}, + { 2, ERR_AUGMENT_NO_ROW, "augment-no-row", + "row `%s' augments or extends `%s' which is not a row", NULL}, + { 4, ERR_NODE_NOT_IN_GROUP, "group-membership", + "node `%s' must be contained in at least one conformance group", NULL}, + { 4, ERR_NOTIFICATION_NOT_IN_GROUP, "group-membership", + "notification `%s' must be contained in at least one conformance group", NULL}, + { 3, ERR_INVALID_GROUP_MEMBER, "group-member-invalid", + "node `%s' is an invalid member of group `%s'", NULL}, + { 3, ERR_MIXED_GROUP_MEMBERS, "group-member-mixed", + "group `%s' contains scalars/columns and notifications", NULL}, + { 2, ERR_BAD_LOWER_IDENTIFIER_CASE, "bad-identifier-case", + "`%s' should start with a lower case letter", NULL}, + { 2, ERR_UNDERSCORE_IN_IDENTIFIER, "underscore-in-identifier", + "identifier `%s' must not contain an underscore", NULL}, + { 5, ERR_OID_REUSE, "oid-reuse", + "identifier `%s' reuses object identifier assigned to identifier `%s'", NULL}, + { 1, ERR_OID_REGISTERED, "oid-registered", + "identifier `%s' registers object identifier already registered by `%s'", NULL}, + { 1, ERR_OID_RECURSIVE, "oid-recursive", + "object identifier `%s' defined recursively or too long", NULL}, + { 5, ERR_COMMENT_TERMINATES, "comment-terminates", + "note, -- terminates a comment", NULL}, + { 5, ERR_OBSOLETE_IMPORT, "obsolete-import", + "identifier `%s' should be imported from `%s' instead of `%s'", NULL}, + { 4, ERR_GROUP_OBJECT_STATUS, "group-object-status", + "%s group `%s' includes %s object `%s'", NULL}, + { 4, ERR_COMPLIANCE_GROUP_STATUS, "compliance-group-status", + "%s compliance statement `%s' includes %s group `%s'", NULL}, + { 4, ERR_COMPLIANCE_OBJECT_STATUS, "compliance-object-status", + "%s compliance statement `%s' includes %s object `%s'", NULL}, + { 5, ERR_GROUP_UNREF, "group-unref", + "%s group `%s' is not referenced in this module", NULL}, + { 5, ERR_TYPE_UNREF, "type-unref", + "%s type `%s' is not referenced in this module", NULL}, + { 5, ERR_SEQUENCE_ORDER, "sequence-order", + "SEQUENCE element #%d `%s' does not match order of columnar objects under `%s'", NULL}, + { 3, ERR_SEQUENCE_NO_COLUMN, "sequence-no-column", + "SEQUENCE element #%d `%s' is not a child node under `%s'", NULL}, + { 3, ERR_SEQUENCE_MISSING_COLUMN, "sequence-missing-column", + "SEQUENCE of `%s' is missing columnar object `%s'", NULL}, + { 4, ERR_ILLEGAL_ROWSTATUS_DEFAULT, "rowstatus-default", + "illegal `RowStatus' default value `%s'", NULL}, + { 4, ERR_ILLEGAL_ROWSTATUS_ACCESS, "rowstatus-access", + "illegal `RowStatus' access value", NULL}, + { 4, ERR_ILLEGAL_STORAGETYPE_DEFAULT, "storagetype-default", + "illegal `StorageType' default value `%s'", NULL}, + { 2, ERR_DEFVAL_OUT_OF_BASETYPE, "defval-basetype", + "default value exceeds range of underlying basetype", NULL}, + { 2, ERR_DEFVAL_OUT_OF_RANGE, "defval-range", + "default value does not match range restriction of underlying type", NULL}, + { 2, ERR_DEFVAL_OUT_OF_ENUM, "defval-enum", + "default value does not match underlying enumeration type", NULL}, + { 5, ERR_TADDRESS_WITHOUT_TDOMAIN, "taddress-tdomain", + "`TAddress' object should have an accompanied `TDomain' object", NULL}, + { 5, ERR_INETADDRESS_WITHOUT_TYPE, "inetaddress-inetaddresstype", + "`InetAddress' object should have an accompanied preceding `InetAdressType' object", NULL}, + { 5, ERR_INETADDRESSTYPE_SUBTYPED, "inetaddresstype-subtyped", + "`InetAddressType' should not be subtyped", NULL}, + { 5, ERR_INETADDRESS_SPECIFIC, "inetaddress-specific", + "`InetAddress' should be used instead of `%s'", NULL}, + { 5, ERR_TRANSPORTADDRESS_WITHOUT_TYPE, "transportaddress-transportaddresstype", + "`TransportAddress' object should have an accompanied preceding `TransportAdressType' or `TransportDomain' object", NULL}, + { 5, ERR_TRANSPORTADDRESSTYPE_SUBTYPED, "transportaddresstype-subtyped", + "`TransportAddressType' should not be subtyped", NULL}, + { 5, ERR_TRANSPORTADDRESS_SPECIFIC, "transportaddress-specific", + "`TransportAddress' should be used instead of `%s'", NULL}, + { 3, ERR_NOTIFICATION_OBJECT_TYPE, "notification-object-type", + "object `%s' of notification `%s' must be a scalar or column", NULL}, + { 3, ERR_NOTIFICATION_OBJECT_ACCESS, "notification-object-access", + "object `%s' of notification `%s' must not be `not-accessible'", NULL}, + { 5, ERR_NOTIFICATION_OBJECT_MIX, "notification-object-mix", + "notification `%s' contains objects from multiple tables/groups", NULL}, + { 5, ERR_EMPTY_DESCRIPTION, "empty-description", + "zero-length description string", NULL}, + { 5, ERR_EMPTY_REFERENCE, "empty-reference", + "zero-length reference string", NULL}, + { 5, ERR_EMPTY_ORGANIZATION, "empty-organization", + "zero-length organization string", NULL}, + { 5, ERR_EMPTY_CONTACT, "empty-contact", + "zero-length contact string", NULL}, + { 5, ERR_EMPTY_FORMAT, "empty-format", + "zero-length format string", NULL}, + { 5, ERR_EMPTY_UNITS, "empty-units", + "zero-length units string", NULL}, + { 5, ERR_INDEX_DEFVAL, "index-element-has-default", + "index element `%s' of row `%s' has a default value", NULL}, + { 2, ERR_SEQUENCE_TYPE_MISMATCH, "sequence-type-mismatch", + "type of `%s' in sequence and object type definition do not match", NULL}, + { 5, ERR_INDEX_ACCESSIBLE, "index-element-accessible", + "index element `%s' of row `%s' should be not-accessible in SMIv2 MIB", NULL}, + { 5, ERR_INDEX_NON_ACCESSIBLE, "index-element-not-accessible", + "exactly one index element of row `%s' must be accessible", NULL}, + { 3, ERR_REFINEMENT_NOT_LISTED, "refinement-not-listed", + "refined object `%s' not listed in a mandatory or optional group", NULL}, + { 5, ERR_NOTIFICATION_NOT_REVERSIBLE, "notification-not-reversible", + "notification `%s' is not reverse mappable", NULL}, + { 5, ERR_NOTIFICATION_ID_TOO_LARGE, "notification-id-too-large", + "last sub-identifier of notification `%s' too large", NULL}, + { 2, ERR_NODE_PARENT_TYPE, "parent-node", + "node's parent node must be simple node", NULL}, + { 2, ERR_SCALAR_PARENT_TYPE, "parent-scalar", + "scalar's parent node must be simple node", NULL}, + { 2, ERR_TABLE_PARENT_TYPE, "parent-table", + "table's parent node must be simple node", NULL}, + { 2, ERR_TABLE_ROW_TYPE_MISMATCH, "table-type", + "table's SEQUENCE OF type does not match row type", NULL}, + { 2, ERR_ROW_PARENT_TYPE, "parent-row", + "row's parent node must be a table node", NULL}, + { 2, ERR_COLUMN_PARENT_TYPE, "parent-column", + "columnar object's parent node must be a row", NULL}, + { 2, ERR_NOTIFICATION_PARENT_TYPE, "parent-notification", + "notifications's parent node must be a simple node", NULL}, + { 2, ERR_GROUP_PARENT_TYPE, "parent-group", + "group's parent node must be a simple node", NULL}, + { 2, ERR_COMPLIANCE_PARENT_TYPE, "parent-compliance", + "compliance's parent node must be a simple node", NULL}, + { 2, ERR_CAPABILITIES_PARENT_TYPE, "parent-capabilities", + "capabilities' parent node must be a simple node", NULL}, + { 1, ERR_SPPI_SIGNED64_NUMBER_RANGE, "out-of-range-signed64", + "number `%s' is out of range for SPPI 64bit signed numbers", NULL}, + { 1, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, "out-of-range-unsigned64", + "number `%s' is out of range for SPPI 64bit unsigned numbers", NULL}, + { 1, ERR_SMI_CONSTRUCT_IN_PIB, "keyword-illegal-in-pib", + "the SMI construct/keyword `%s' may not be used in a PIB", NULL}, + { 5, ERR_SMI_TYPE_IN_PIB, "smi-type-in-pib", + "`%s' is a base type in SMI", NULL}, + { 1, ERR_SPPI_CONSTRUCT_IN_MIB, "keyword-illegal-in-mib", + "the SPPI construct/keyword `%s' may not be used in a MIB", NULL}, + { 5, ERR_SPPI_TYPE_IN_MIB, "sppi-type-in-mib", + "`%s' is a base type in SPPI", NULL}, + { 2, ERR_POLICY_ACCESS_IN_PIB, "policy-access", + "the PIB uses POLICY-ACCESS where PIB-ACCESS is required", NULL}, + { 2, ERR_INVALID_SPPI_ACCESS, "access-invalid-sppi", + "invalid access `%s' in SPPI PIB", NULL}, + { 2, ERR_INVALID_SPPI_STATUS, "status-invalid-sppi", + "invalid status `%s' in SPPI PIB", NULL}, + { 1, ERR_SUBJECT_CATEGORIES_MISSING, "subject-categories-missing", + "a MODULE-IDENTITY clause lacks SUBJECT-CATEGORIES", NULL}, + { 2, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS, "not-accessible-in-pib-access", + "PIB-ACCESS must not be set to `not-accessible'", NULL}, + { 2, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS, "report-only-in-pib-min-access", + "PIB-MIN-ACCESS must not be set to `report-only'", NULL}, + { 1, ERR_INDEX_AND_AUGMENTS_USED, "index-and-augments", + "either INDEX or AUGMENTS may be used, but not both", NULL}, + { 1, ERR_INDEX_WITHOUT_PIB_INDEX, "index-without-pib-index", + "INDEX may not be used without PIB-INDEX", NULL}, + { 3, ERR_ERROR_NUMBER_RANGE, "install-error-range", + "the named-number for an INSTALL-ERROR is out of range: allowed 1..65535, current %d", NULL}, + { 2, ERR_SPPI_BASETYPE_NOT_IMPORTED, "sppi-basetype-not-imported", + "SPPI basetype `%s' must be imported from COPS-PR-SPPI", NULL}, + { 2, ERR_ROW_LACKS_PIB_INDEX, "row-lacks-pib-index", + "row definition lacks a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL}, + { 2, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, "pib-index-with-non-row-type", + "non row type contains a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL}, + { 2, ERR_OPAQUE_IN_SYNTAX, "opaque-in-syntax", + "`Opaque' must not be used in SYNTAX clauses in PIB modules", NULL}, + { 2, ERR_IPADDRESS_IN_SYNTAX, "ipaddress-in-syntax", + "`IpAddress' must not be used in SYNTAX clauses in PIB modules", NULL}, + { 2, ERR_TABLE_LACKS_PIB_ACCESS, "table-lacks-pib-access", + "the table definition must contain a PIB-ACCESS clause", NULL}, + { 2, ERR_PIB_ACCESS_FOR_NON_TABLE, "pib-access-for-non-table", + "type is not a table but contains a PIB-ACCESS clause", NULL}, + { 2, ERR_INSTALL_ERRORS_FOR_NON_TABLE, "install-errors-for-non-table", + "type is not a table but contains a INSTALL-ERRORS clause", NULL}, + { 2, ERR_UNIQUENESS_FOR_NON_ROW, "uniqueness-for-non-row", + "type is not a row but contains a UNIQUENESS clause", NULL}, + { 2, ERR_NOT_A_COLUMN, "not-a-column", + "`%s', which is used in a UNIQUENESS clause, is not a column in this table", NULL}, + { 2, ERR_EXTENDS_WRONG_ROW_TYPE, "extend-row-type", + "row `%s' extends `%s' which is neither a base table row nor a sparsely-augmented table row", NULL}, + { 2, ERR_PIB_INDEX_NOT_INSTANCEID, "pib-index-not-instanceid", + "the PIB-INDEX `%s' must be of type `InstanceId'", NULL}, + { 2, ERR_LACKING_PIB_REFERENCES, "type-lacking-pib-references", + "objects with SYNTAX `ReferenceId' must contain a PIB-REFERENCES clause", NULL}, + { 2, ERR_PIB_REFERENCES_WRONG_TYPE, "pib-references-with-wrong-type", + "object contains a PIB-REFERENCES clause but is not of type `ReferenceId'", NULL}, + { 2, ERR_PIB_REFERENCES_NOT_ROW, "pib-references-not-row", + "the PIB-REFERENCES does not point to a row", NULL}, + { 2, ERR_LACKING_PIB_TAG, "type-lacking-pib-tag", + "objects with SYNTAX `TagReferenceId' must contain a PIB-TAG clause", NULL}, + { 2, ERR_PIB_TAG_WRONG_TYPE, "pib-tag-with-wrong-type", + "object contains a PIB-TAG clause but is not of type `TagReferenceId'", NULL}, + { 2, ERR_SUBJECT_CATEGORIES_MISSING_SUBID, "subject-categories-missing-subid", + "the SUBJECT-CATEGORIES are missing a sub-identifier", NULL}, + { 2, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID, "subject-categories-all-with-subid", + "the SUBJECT-CATEGORIES `all' must not have a sub-identifier", NULL}, + { 3, ERR_SUBJECT_CATEGORIES_ALL, "subject-categories-all", + "SUBJECT-CATEGORIES contains several categories although `all' is used aswell", NULL}, + { 2, ERR_PIB_TAG_TYPE, "pib-tag-type", + "a PIB-TAG must point to an object with a SYNTAX of `TagId'", NULL}, + { 3, ERR_ATTRIBUTE_NOT_IN_GROUP, "attribute-not-in-group", + "attribute `%s' must be contained in at least one conformance group", NULL}, + { 0, ERR_OBJECTPTR_ELEMENT_IN_USE, "objectptr-element-in-use", + "objectPtr->%s is already in use (%s)", NULL}, + { 1, ERR_OID_ADMIN_ZERO, "last-subid-zero", + "last subidentifier assigned to `%s' may not be zero", NULL}, + { 5, ERR_TYPE_STATUS_DEPRECATED, "type-status-deprecated", + "type `%s' used by `%s' is deprecated", NULL}, + { 5, ERR_TYPE_STATUS_OBSOLETE, "type-status-obsolete", + "type `%s' used by `%s' is obsolete", + "This warning is generated in cases where something with status\n" + "`current' uses a type whose status has been changed to `obsolete'.\n" + "Note that the status of imported types can change without the\n" + "control of the modules using these types." }, + { 3, ERR_COMPLIANCE_MEMBER_NOT_LOCAL, "compliance-member-not-local", + "OBJECTS or NOTIFICATIONS member `%s' is not defined in this module", + "All elements of an OBJECTS statement within an OBJECT-GROUP clause\n" + "and all elements of a NOTIFICATIONS statement within a\n" + "NOTIFICATION-GROUP clause must be defined in the same module\n" + "where this OBJECT-GROUP or NOTIFICATION-GROUP appears (RFC 2580,\n" + "Sections 3.1 and 4.1)."}, + { 5, ERR_MIB_MODULENAME_SUFFIX, "module-name-suffix", + "module name `%s' should match `*-MIB'", NULL}, + { 5, ERR_PIB_MODULENAME_SUFFIX, "module-name-suffix", + "module name `%s' should match `*-PIB'", NULL}, + { 5, ERR_TYPE_WITHOUT_FORMAT, "type-without-format", + "type `%s' has no format specification", NULL}, + { 2, ERR_OBJECT_IN_NOTIFICATION_GROUP, "group-notifications-object", + "notification group `%s' includes object `%s'", NULL}, + { 2, ERR_NOTIFICATION_IN_OBJECT_GROUP, "group-objects-notification", + "object group `%s' includes notification `%s'", NULL}, + { 4, ERR_MODULE_IDENTITY_REGISTRATION, "module-identity-registration", + "uncontrolled MODULE-IDENTITY registration", + "The identities of IETF MIB modules should be registered below\n" + "mib-2, transmission, or snmpModules so that the registration\n" + "space can be controlled by IANA."}, + { 0, 0, NULL, NULL, NULL } +}; + + + +/* + *---------------------------------------------------------------------- + * + * smiSetErrorSeverity -- + * + * Sets the severity of errors with tags matching pattern. + * 0 <= severity <= 15 : sets severity to this value. + * severity == 128 : makes the parser to ignore the error. + * severity == -1 : makes the parser to allow the error. + * + * Results: + * None. + * + * Side effects: + * Changes the severity in the module internal error table. + * + *---------------------------------------------------------------------- + */ + +void +smiSetErrorSeverity(char *pattern, int severity) +{ + int i; + + for (i = 0; errors[i].fmt; i++) { + if (strstr(errors[i].tag, pattern) == errors[i].tag) { + if (severity == 128) { + errors[i].level |= 128; + } else if (severity == -1) { + errors[i].level &= 127; + } else { + errors[i].level = severity; + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiSetErrorHandler -- + * + * Set the function that is called to handle error messages. + * + * Results: + * None. + * + * Side effects: + * Changes the error handler used for subsequent error messages. + * + *---------------------------------------------------------------------- + */ + +void +smiSetErrorHandler(SmiErrorHandler smiErrorHandler) +{ + smiHandle->errorHandler = smiErrorHandler; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorSeverity -- + * + * Return the severity of the error identified by id. + * + * Results: + * The error severity. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +smiGetErrorSeverity(int id) +{ + if (id < 0 || id >= (sizeof(errors) / sizeof(Error)) - 1) { + return -1; + } + return errors[id].level; +} + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorTag -- + * + * Return the tag of the error identified by id. + * + * Results: + * The error tag or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorTag(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].tag; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorMsg -- + * + * Return the message of the error identified by id. + * + * Results: + * The error message or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorMsg(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].fmt; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorDescription -- + * + * Return the description of the error identified by id. + * + * Results: + * The error description or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorDescription(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].description; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiErrorHandler -- + * + * This is the default error printing function. This is the + * only place in the libsmi where any output is generated. + * This function may be replaced by an application specific + * error message handler. + * + * Results: + * None. + * + * Side effects: + * Prints error messages to the stderr output channel. + * + *---------------------------------------------------------------------- + */ + +void +smiErrorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + /* + * A severe error, no way to continue :-( + */ + if (severity <= 0) { + exit(1); + } +} + + + +/* + *---------------------------------------------------------------------- + * + * printError -- + * + * Internal error printer which is called by the varargs + * entry points (see below). If formats the error message + * and calls the error handling function that is currently + * registered. + * + * Results: + * None. + * + * Side effects: + * Terminates the program if the error is severe and there + * is no way to continue. + * + *---------------------------------------------------------------------- + */ + +static void +printError(Parser *parser, int id, int line, va_list ap) +{ + char *buffer; + int i; + + if (! smiHandle->errorHandler) { + return; + } + + /* + * Search for the tag instead of just using the id as an index so + * that we do not run into trouble if the id is bogus. + */ + + for (i = 0; errors[i].fmt; i++) { + if (errors[i].id == id) break; + } + if (! errors[i].fmt) { + i = 0; /* assumes that 0 is the internal error */ + } + + if (parser) { + + if (parser->modulePtr) { + if ((parser->modulePtr->export.conformance > errors[i].level) || + (parser->modulePtr->export.conformance == 0)) { + parser->modulePtr->export.conformance = errors[i].level; + } + } + + if ((errors[i].level <= smiHandle->errorLevel) && + (parser->flags & SMI_FLAG_ERRORS) && + ((smiDepth == 1) || (parser->flags & SMI_FLAG_RECURSIVE))) { + smiVasprintf(&buffer, errors[i].fmt, ap); + (smiHandle->errorHandler) (parser->path, line, + errors[i].level, buffer, errors[i].tag); + } + } else { + if (errors[i].level <= smiHandle->errorLevel) { + smiVasprintf(&buffer, errors[i].fmt, ap); + (smiHandle->errorHandler) (NULL, 0, errors[i].level, + buffer, errors[i].tag); + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiPrintErrorAtLine -- + * + * Like smiPrintError() but shows a specfic line no. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiPrintErrorAtLine(Parser *parser, int id, int line, ...) +{ + va_list ap; + + va_start(ap, line); + printError(parser, id, line, ap); + va_end(ap); +} + + + +/* + *---------------------------------------------------------------------- + * + * smiPrintError -- + * + * Prints an error message. The line number is taken from + * the current parser position. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiPrintError(Parser *parser, int id, ...) +{ + va_list ap; + + va_start(ap, id); + printError(parser, id, parser ? parser->line : 0, ap); + va_end(ap); +} diff --git a/lib/error.h b/lib/error.h new file mode 100644 index 0000000..3318ace --- /dev/null +++ b/lib/error.h @@ -0,0 +1,45 @@ +/* + * error.h -- + * + * Definitions for error handling. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: error.h 1151 2001-08-22 17:51:42Z strauss $ + */ + +#ifndef _ERROR_H +#define _ERROR_H + +#include "data.h" +#include "errormacros.h" /* list of error macros generated from error.c */ + + + +#ifdef yyerror +#undef yyerror +#endif +#define yyerror(msg) smiyyerror(msg, parserPtr) + + +extern int smiErrorLevel; /* Higher levels produce more warnings */ + +extern void smiErrorHandler(char *path, int line, int severity, + char *msg, char *tag); + +extern void smiSetErrorSeverity(char *pattern, int severity); + +extern int smiGetErrorSeverity(int id); + +extern char* smiGetErrorTag(int id); + +extern char* smiGetErrorMsg(int id); + +extern void smiPrintError(Parser *parser, int id, ...); + +extern void smiPrintErrorAtLine(Parser *parser, int id, int line, ...); + +#endif /* _ERROR_H */ diff --git a/lib/errormacros.h b/lib/errormacros.h new file mode 100644 index 0000000..2fe9896 --- /dev/null +++ b/lib/errormacros.h @@ -0,0 +1,275 @@ +#define ERR_INTERNAL 0 +#define ERR_MAX_LEX_DEPTH 1 +#define ERR_OUT_OF_MEMORY 2 +#define ERR_LEX_UNEXPECTED_CHAR 3 +#define ERR_OTHER_ERROR 4 +#define ERR_ILLEGAL_KEYWORD 5 +#define ERR_ID_ENDS_IN_HYPHEN 6 +#define ERR_LEADING_ZEROS 7 +#define ERR_NUMBER_TOO_LARGE 8 +#define ERR_MODULENAME_64 9 +#define ERR_MODULENAME_32 10 +#define ERR_TYPENAME_64 11 +#define ERR_TYPENAME_32 12 +#define ERR_OIDNAME_64 13 +#define ERR_OIDNAME_32 14 +#define ERR_ENUMNAME_64 15 +#define ERR_ENUMNAME_32 16 +#define ERR_BITNAME_64 17 +#define ERR_BITNAME_32 18 +#define ERR_UCIDENTIFIER_64 19 +#define ERR_LCIDENTIFIER_64 20 +#define ERR_TRAP_TYPE 21 +#define ERR_TOO_MANY_MODULE_IDENTITIES 22 +#define ERR_NO_MODULE_IDENTITY 23 +#define ERR_OID_DEFVAL_TOO_LONG_SMIV2 24 +#define ERR_OID_DEFVAL_TOO_LONG_SMIV1 25 +#define ERR_INVALID_SMIV1_ACCESS 26 +#define ERR_INVALID_SMIV2_ACCESS 27 +#define ERR_SMIV2_WRITE_ONLY 28 +#define ERR_SMIV1_WRITE_ONLY 29 +#define ERR_INVALID_NOTIFICATION_VARIATION_ACCESS 30 +#define ERR_INVALID_VARIATION_ACCESS 31 +#define ERR_NOTIFICATION_VARIATION_SYNTAX 32 +#define ERR_NOTIFICATION_VARIATION_WRITESYNTAX 33 +#define ERR_DEFVAL_SYNTAX 34 +#define ERR_NOTIFICATION_VARIATION_DEFVAL 35 +#define ERR_NOTIFICATION_VARIATION_CREATION 36 +#define ERR_MODULE_IDENTITY_NOT_FIRST 37 +#define ERR_INVALID_SMIV1_STATUS 38 +#define ERR_INVALID_SMIV2_STATUS 39 +#define ERR_INVALID_CAPABILITIES_STATUS 40 +#define ERR_OIDNAME_INCLUDES_HYPHEN 41 +#define ERR_ILLEGAL_CHAR_IN_STRING 42 +#define ERR_BIN_STRING_MUL8 43 +#define ERR_HEX_STRING_MUL2 44 +#define ERR_FLUSH_DECLARATION 45 +#define ERR_MAX_ACCESS_IN_SMIV1 46 +#define ERR_ACCESS_IN_SMIV2 47 +#define ERR_MODULE_NOT_FOUND 48 +#define ERR_OPENING_INPUTFILE 49 +#define ERR_ILLEGAL_INPUTFILE 50 +#define ERR_UNKNOWN_OIDLABEL 51 +#define ERR_OIDLABEL_CHANGED 52 +#define ERR_IDENTIFIER_OID_CHANGED 53 +#define ERR_EXISTENT_OBJECT 54 +#define ERR_IDENTIFIER_NOT_IN_MODULE 55 +#define ERR_MACRO 56 +#define ERR_CHOICE 57 +#define ERR_TYPE_SMI_OR_SPPI 58 +#define ERR_TYPE_SPPI 59 +#define ERR_TYPE_TAG 60 +#define ERR_EXPORTS 61 +#define ERR_ILLEGALLY_QUALIFIED 62 +#define ERR_MISSING_DESCRIPTION 63 +#define ERR_OIDLABEL_NOT_FIRST 64 +#define ERR_UNKNOWN_TYPE 65 +#define ERR_UNKNOWN_CLASS 66 +#define ERR_UNKNOWN_TYPE_OR_CLASS 67 +#define ERR_ATTRIBUTE_CLASS_ACCESS 68 +#define ERR_ATTRIBUTE_MISSING_ACCESS 69 +#define ERR_ATTRIBUTE_CLASS_DEFAULT 70 +#define ERR_ATTRIBUTE_CLASS_FORMAT 71 +#define ERR_ATTRIBUTE_CLASS_UNITS 72 +#define ERR_DUPLICATE_TYPE_NAME 73 +#define ERR_ATTRIBUTE_NOT_FOUND 74 +#define ERR_DUPLICATE_ATTRIBUTE_NAME 75 +#define ERR_DUPLICATE_CLASS_NAME 76 +#define ERR_ILLEGAL_RANGE_FOR_COUNTER 77 +#define ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE 78 +#define ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE 79 +#define ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE 80 +#define ERR_SMIV2_SIGNED_NUMBER_RANGE 81 +#define ERR_SMIV2_UNSIGNED_NUMBER_RANGE 82 +#define ERR_INTEGER32_TOO_LARGE 83 +#define ERR_UNEXPECTED_VALUETYPE 84 +#define ERR_FLOAT_OVERFLOW 85 +#define ERR_SMI_NOT_SUPPORTED 86 +#define ERR_SMING_NOT_SUPPORTED 87 +#define ERR_UNUSED_IMPORT 88 +#define ERR_MACRO_NOT_IMPORTED 89 +#define ERR_IMPLICIT_NODE 90 +#define ERR_SCALAR_READCREATE 91 +#define ERR_NAMEDNUMBER_INCLUDES_HYPHEN 92 +#define ERR_NAMEDBIT_INCLUDES_HYPHEN 93 +#define ERR_REDEFINITION 94 +#define ERR_EXT_REDEFINITION 95 +#define ERR_CASE_REDEFINITION 96 +#define ERR_EXT_CASE_REDEFINITION 97 +#define ERR_BASETYPE_REDEFINITION 98 +#define ERR_PREVIOUS_DEFINITION 99 +#define ERR_INVALID_FORMAT 100 +#define ERR_REFINEMENT_ALREADY_EXISTS 101 +#define ERR_OPTIONALGROUP_ALREADY_EXISTS 102 +#define ERR_UNEXPECTED_TYPE_RESTRICTION 103 +#define ERR_UNKNOWN_CONFIG_CMD 104 +#define ERR_CACHE_CONFIG_NOT_SUPPORTED 105 +#define ERR_SMIV2_OPAQUE_OBSOLETE 106 +#define ERR_SPPI_OPAQUE_OBSOLETE 107 +#define ERR_DATE_CHARACTER 108 +#define ERR_DATE_LENGTH 109 +#define ERR_DATE_VALUE 110 +#define ERR_DATE_YEAR_2DIGITS 111 +#define ERR_DATE_YEAR 112 +#define ERR_DATE_MONTH 113 +#define ERR_DATE_DAY 114 +#define ERR_DATE_HOUR 115 +#define ERR_DATE_MINUTES 116 +#define ERR_DATE_IN_FUTURE 117 +#define ERR_DATE_IN_PAST 118 +#define ERR_REVISION_NOT_DESCENDING 119 +#define ERR_REVISION_MISSING 120 +#define ERR_REVISION_AFTER_LAST_UPDATE 121 +#define ERR_INTEGER_IN_SMIV2 122 +#define ERR_MODULE_ALREADY_LOADED 123 +#define ERR_IDENTITY_PARENT_NOT_FOUND 124 +#define ERR_SMIV2_BASETYPE_NOT_IMPORTED 125 +#define ERR_BASETYPE_UNKNOWN 126 +#define ERR_ROW_SUBID_ONE 127 +#define ERR_ROWNAME_ENTRY 128 +#define ERR_TABLENAME_TABLE 129 +#define ERR_ROWNAME_TABLENAME 130 +#define ERR_SMIV2_TYPE_ASSIGNEMENT 131 +#define ERR_ILLEGAL_IMPORT 132 +#define ERR_SMIV2_NESTED_TEXTUAL_CONVENTION 133 +#define ERR_TABLE_ACCESS 134 +#define ERR_ROW_ACCESS 135 +#define ERR_COUNTER_ACCESS 136 +#define ERR_ENUM_SUBTYPE_OF 137 +#define ERR_BITS_SUBTYPE_OF 138 +#define ERR_ENUM_SUBTYPE 139 +#define ERR_BITS_SUBTYPE 140 +#define ERR_ENUM_NAME_REDEFINITION 141 +#define ERR_ENUM_NUMBER_REDEFINITION 142 +#define ERR_ENUM_NAME_NOT_DEFINED 143 +#define ERR_ENUM_ZERO 144 +#define ERR_BITS_NAME_REDEFINITION 145 +#define ERR_BITS_NUMBER_REDEFINITION 146 +#define ERR_BITS_NUMBER_NEGATIVE 147 +#define ERR_BITS_NUMBER_TOO_LARGE 148 +#define ERR_BITS_NUMBER_LARGE 149 +#define ERR_BITS_ZERO_NOT_NAMED 150 +#define ERR_RANGE_OUT_OF_BASETYPE 151 +#define ERR_RANGE_OVERLAP 152 +#define ERR_RANGES_NOT_ASCENDING 153 +#define ERR_NAMED_NUMBERS_NOT_ASCENDING 154 +#define ERR_EXCHANGED_RANGE_LIMITS 155 +#define ERR_INDEX_BASETYPE 156 +#define ERR_INDEX_TOO_LARGE 157 +#define ERR_INDEX_NO_RANGE 158 +#define ERR_INDEX_NO_RANGE_MOD 159 +#define ERR_INDEX_STRING_NO_SIZE 160 +#define ERR_INDEX_STRING_NO_SIZE_MOD 161 +#define ERR_INDEX_OID_NO_SIZE 162 +#define ERR_INDEX_OID_NO_SIZE_MOD 163 +#define ERR_INDEX_RANGE_NEGATIVE 164 +#define ERR_INDEX_ENUM_NEGATIVE 165 +#define ERR_INDEX_NOT_COLUMN 166 +#define ERR_AUGMENT_NESTED 167 +#define ERR_AUGMENT_NO_ROW 168 +#define ERR_NODE_NOT_IN_GROUP 169 +#define ERR_NOTIFICATION_NOT_IN_GROUP 170 +#define ERR_INVALID_GROUP_MEMBER 171 +#define ERR_MIXED_GROUP_MEMBERS 172 +#define ERR_BAD_LOWER_IDENTIFIER_CASE 173 +#define ERR_UNDERSCORE_IN_IDENTIFIER 174 +#define ERR_OID_REUSE 175 +#define ERR_OID_REGISTERED 176 +#define ERR_OID_RECURSIVE 177 +#define ERR_COMMENT_TERMINATES 178 +#define ERR_OBSOLETE_IMPORT 179 +#define ERR_GROUP_OBJECT_STATUS 180 +#define ERR_COMPLIANCE_GROUP_STATUS 181 +#define ERR_COMPLIANCE_OBJECT_STATUS 182 +#define ERR_GROUP_UNREF 183 +#define ERR_TYPE_UNREF 184 +#define ERR_SEQUENCE_ORDER 185 +#define ERR_SEQUENCE_NO_COLUMN 186 +#define ERR_SEQUENCE_MISSING_COLUMN 187 +#define ERR_ILLEGAL_ROWSTATUS_DEFAULT 188 +#define ERR_ILLEGAL_ROWSTATUS_ACCESS 189 +#define ERR_ILLEGAL_STORAGETYPE_DEFAULT 190 +#define ERR_DEFVAL_OUT_OF_BASETYPE 191 +#define ERR_DEFVAL_OUT_OF_RANGE 192 +#define ERR_DEFVAL_OUT_OF_ENUM 193 +#define ERR_TADDRESS_WITHOUT_TDOMAIN 194 +#define ERR_INETADDRESS_WITHOUT_TYPE 195 +#define ERR_INETADDRESSTYPE_SUBTYPED 196 +#define ERR_INETADDRESS_SPECIFIC 197 +#define ERR_TRANSPORTADDRESS_WITHOUT_TYPE 198 +#define ERR_TRANSPORTADDRESSTYPE_SUBTYPED 199 +#define ERR_TRANSPORTADDRESS_SPECIFIC 200 +#define ERR_NOTIFICATION_OBJECT_TYPE 201 +#define ERR_NOTIFICATION_OBJECT_ACCESS 202 +#define ERR_NOTIFICATION_OBJECT_MIX 203 +#define ERR_EMPTY_DESCRIPTION 204 +#define ERR_EMPTY_REFERENCE 205 +#define ERR_EMPTY_ORGANIZATION 206 +#define ERR_EMPTY_CONTACT 207 +#define ERR_EMPTY_FORMAT 208 +#define ERR_EMPTY_UNITS 209 +#define ERR_INDEX_DEFVAL 210 +#define ERR_SEQUENCE_TYPE_MISMATCH 211 +#define ERR_INDEX_ACCESSIBLE 212 +#define ERR_INDEX_NON_ACCESSIBLE 213 +#define ERR_REFINEMENT_NOT_LISTED 214 +#define ERR_NOTIFICATION_NOT_REVERSIBLE 215 +#define ERR_NOTIFICATION_ID_TOO_LARGE 216 +#define ERR_NODE_PARENT_TYPE 217 +#define ERR_SCALAR_PARENT_TYPE 218 +#define ERR_TABLE_PARENT_TYPE 219 +#define ERR_TABLE_ROW_TYPE_MISMATCH 220 +#define ERR_ROW_PARENT_TYPE 221 +#define ERR_COLUMN_PARENT_TYPE 222 +#define ERR_NOTIFICATION_PARENT_TYPE 223 +#define ERR_GROUP_PARENT_TYPE 224 +#define ERR_COMPLIANCE_PARENT_TYPE 225 +#define ERR_CAPABILITIES_PARENT_TYPE 226 +#define ERR_SPPI_SIGNED64_NUMBER_RANGE 227 +#define ERR_SPPI_UNSIGNED64_NUMBER_RANGE 228 +#define ERR_SMI_CONSTRUCT_IN_PIB 229 +#define ERR_SMI_TYPE_IN_PIB 230 +#define ERR_SPPI_CONSTRUCT_IN_MIB 231 +#define ERR_SPPI_TYPE_IN_MIB 232 +#define ERR_POLICY_ACCESS_IN_PIB 233 +#define ERR_INVALID_SPPI_ACCESS 234 +#define ERR_INVALID_SPPI_STATUS 235 +#define ERR_SUBJECT_CATEGORIES_MISSING 236 +#define ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS 237 +#define ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS 238 +#define ERR_INDEX_AND_AUGMENTS_USED 239 +#define ERR_INDEX_WITHOUT_PIB_INDEX 240 +#define ERR_ERROR_NUMBER_RANGE 241 +#define ERR_SPPI_BASETYPE_NOT_IMPORTED 242 +#define ERR_ROW_LACKS_PIB_INDEX 243 +#define ERR_PIB_INDEX_FOR_NON_ROW_TYPE 244 +#define ERR_OPAQUE_IN_SYNTAX 245 +#define ERR_IPADDRESS_IN_SYNTAX 246 +#define ERR_TABLE_LACKS_PIB_ACCESS 247 +#define ERR_PIB_ACCESS_FOR_NON_TABLE 248 +#define ERR_INSTALL_ERRORS_FOR_NON_TABLE 249 +#define ERR_UNIQUENESS_FOR_NON_ROW 250 +#define ERR_NOT_A_COLUMN 251 +#define ERR_EXTENDS_WRONG_ROW_TYPE 252 +#define ERR_PIB_INDEX_NOT_INSTANCEID 253 +#define ERR_LACKING_PIB_REFERENCES 254 +#define ERR_PIB_REFERENCES_WRONG_TYPE 255 +#define ERR_PIB_REFERENCES_NOT_ROW 256 +#define ERR_LACKING_PIB_TAG 257 +#define ERR_PIB_TAG_WRONG_TYPE 258 +#define ERR_SUBJECT_CATEGORIES_MISSING_SUBID 259 +#define ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID 260 +#define ERR_SUBJECT_CATEGORIES_ALL 261 +#define ERR_PIB_TAG_TYPE 262 +#define ERR_ATTRIBUTE_NOT_IN_GROUP 263 +#define ERR_OBJECTPTR_ELEMENT_IN_USE 264 +#define ERR_OID_ADMIN_ZERO 265 +#define ERR_TYPE_STATUS_DEPRECATED 266 +#define ERR_TYPE_STATUS_OBSOLETE 267 +#define ERR_COMPLIANCE_MEMBER_NOT_LOCAL 268 +#define ERR_MIB_MODULENAME_SUFFIX 269 +#define ERR_PIB_MODULENAME_SUFFIX 270 +#define ERR_TYPE_WITHOUT_FORMAT 271 +#define ERR_OBJECT_IN_NOTIFICATION_GROUP 272 +#define ERR_NOTIFICATION_IN_OBJECT_GROUP 273 +#define ERR_MODULE_IDENTITY_REGISTRATION 274 diff --git a/lib/libsmi.3 b/lib/libsmi.3 new file mode 100644 index 0000000..6e2cad4 --- /dev/null +++ b/lib/libsmi.3 @@ -0,0 +1,77 @@ +.\" +.\" $Id: libsmi.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH libsmi 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +libsmi \- library to access SMI management information +.SH DESCRIPTION +This library contains functions that allow access to SMI management +information stored in repositories that are managed by \fBlibsmi\fP, +currently directories containing SMIv1/v2 and SMIng MIB module files. +.PP +The libsmi API is defined in \fBsmi.h\fP. Functions are +documented in \fBsmi_config\fP(3), \fBsmi_module\fP(3), +\fBsmi_node\fP(3), \fBsmi_type\fP(3), and \fBsmi_macro\fP(3). +.PP +The purpose of libsmi is to separate the weird parsing and handling of +MIB modules from management applications. MIB modules conforming to +SMIv1, SMIv2 and SMIng - a new language for management information, +developed at the Technical University of Braunschweig, Germany - can +be handled by libsmi. +.PP +NOTE: SMIng support in the current release of libsmi is neither stable +nor representing the work done in the IETF SMING working group. It is +based research efforts at TU Braunschweig and within the IRTF in 1999-2000. +.PP +.SH "EXAMPLE" +.nf +#include +#include +#include + +int main(int argc, char *argv[]) +{ + SmiNode *smiNode; + int oidlen, first = 1; + + if (argc != 2) { + fprintf(stderr, "Usage: smisubtree oid\\n"); + exit(1); + } + + smiInit(NULL); + + for((smiNode = smiGetNode(NULL, argv[1])) && + (oidlen = smiNode->oidlen); + smiNode && (first || smiNode->oidlen > oidlen); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY), + first = 0) { + + printf("%*s%-32s\\n", + (smiNode->oidlen - oidlen + 1) * 2, " ", + smiNode->name); + + }; + + exit(0); +} +.fi +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR "RFCs 2578-2580" +specify the SMIv2 standard [STD 58]. The (obsolete) SMIng specification +has been a working document of the IRTF +Network Management Working Group (NMRG) (draft-irtf-nmrg-sming-02). +.PP +.BR smi.h ", " +.BR smi_config "(3), " +.BR smi_module "(3), " +.BR smi_node "(3), " +.BR smi_type "(3), " +.BR smi_macro "(3), " +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/libsmi.3.in b/lib/libsmi.3.in new file mode 100644 index 0000000..c5dc0b1 --- /dev/null +++ b/lib/libsmi.3.in @@ -0,0 +1,77 @@ +.\" +.\" $Id: libsmi.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH libsmi 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +libsmi \- library to access SMI management information +.SH DESCRIPTION +This library contains functions that allow access to SMI management +information stored in repositories that are managed by \fBlibsmi\fP, +currently directories containing SMIv1/v2 and SMIng MIB module files. +.PP +The libsmi API is defined in \fBsmi.h\fP. Functions are +documented in \fBsmi_config\fP(3), \fBsmi_module\fP(3), +\fBsmi_node\fP(3), \fBsmi_type\fP(3), and \fBsmi_macro\fP(3). +.PP +The purpose of libsmi is to separate the weird parsing and handling of +MIB modules from management applications. MIB modules conforming to +SMIv1, SMIv2 and SMIng - a new language for management information, +developed at the Technical University of Braunschweig, Germany - can +be handled by libsmi. +.PP +NOTE: SMIng support in the current release of libsmi is neither stable +nor representing the work done in the IETF SMING working group. It is +based research efforts at TU Braunschweig and within the IRTF in 1999-2000. +.PP +.SH "EXAMPLE" +.nf +#include +#include +#include + +int main(int argc, char *argv[]) +{ + SmiNode *smiNode; + int oidlen, first = 1; + + if (argc != 2) { + fprintf(stderr, "Usage: smisubtree oid\\n"); + exit(1); + } + + smiInit(NULL); + + for((smiNode = smiGetNode(NULL, argv[1])) && + (oidlen = smiNode->oidlen); + smiNode && (first || smiNode->oidlen > oidlen); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY), + first = 0) { + + printf("%*s%-32s\\n", + (smiNode->oidlen - oidlen + 1) * 2, " ", + smiNode->name); + + }; + + exit(0); +} +.fi +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR "RFCs 2578-2580" +specify the SMIv2 standard [STD 58]. The (obsolete) SMIng specification +has been a working document of the IRTF +Network Management Working Group (NMRG) (draft-irtf-nmrg-sming-02). +.PP +.BR smi.h ", " +.BR smi_config "(3), " +.BR smi_module "(3), " +.BR smi_node "(3), " +.BR smi_type "(3), " +.BR smi_macro "(3), " +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/parser-smi.c b/lib/parser-smi.c new file mode 100644 index 0000000..9fa7c9c --- /dev/null +++ b/lib/parser-smi.c @@ -0,0 +1,10065 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse smiparse +#define yylex smilex +#define yyerror smierror +#define yylval smilval +#define yychar smichar +#define yydebug smidebug +#define yynerrs sminerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT_DOT = 258, + COLON_COLON_EQUAL = 259, + UPPERCASE_IDENTIFIER = 260, + LOWERCASE_IDENTIFIER = 261, + NUMBER = 262, + NEGATIVENUMBER = 263, + NUMBER64 = 264, + NEGATIVENUMBER64 = 265, + BIN_STRING = 266, + HEX_STRING = 267, + QUOTED_STRING = 268, + ACCESS = 269, + AGENT_CAPABILITIES = 270, + APPLICATION = 271, + AUGMENTS = 272, + BEGIN_ = 273, + BITS = 274, + CHOICE = 275, + CONTACT_INFO = 276, + CREATION_REQUIRES = 277, + COUNTER32 = 278, + COUNTER64 = 279, + DEFINITIONS = 280, + DEFVAL = 281, + DESCRIPTION = 282, + DISPLAY_HINT = 283, + END = 284, + ENTERPRISE = 285, + EXPORTS = 286, + EXTENDS = 287, + FROM = 288, + GROUP = 289, + GAUGE32 = 290, + IDENTIFIER = 291, + IMPLICIT = 292, + IMPLIED = 293, + IMPORTS = 294, + INCLUDES = 295, + INDEX = 296, + INSTALL_ERRORS = 297, + INTEGER = 298, + INTEGER32 = 299, + INTEGER64 = 300, + IPADDRESS = 301, + LAST_UPDATED = 302, + MACRO = 303, + MANDATORY_GROUPS = 304, + MAX_ACCESS = 305, + MIN_ACCESS = 306, + MODULE = 307, + MODULE_COMPLIANCE = 308, + MODULE_IDENTITY = 309, + NOT_ACCESSIBLE = 310, + NOTIFICATIONS = 311, + NOTIFICATION_GROUP = 312, + NOTIFICATION_TYPE = 313, + OBJECT = 314, + OBJECT_GROUP = 315, + OBJECT_IDENTITY = 316, + OBJECT_TYPE = 317, + OBJECTS = 318, + OCTET = 319, + OF = 320, + ORGANIZATION = 321, + OPAQUE = 322, + PIB_ACCESS = 323, + PIB_DEFINITIONS = 324, + PIB_INDEX = 325, + PIB_MIN_ACCESS = 326, + PIB_REFERENCES = 327, + PIB_TAG = 328, + POLICY_ACCESS = 329, + PRODUCT_RELEASE = 330, + REFERENCE = 331, + REVISION = 332, + SEQUENCE = 333, + SIZE = 334, + STATUS = 335, + STRING = 336, + SUBJECT_CATEGORIES = 337, + SUPPORTS = 338, + SYNTAX = 339, + TEXTUAL_CONVENTION = 340, + TIMETICKS = 341, + TRAP_TYPE = 342, + UNIQUENESS = 343, + UNITS = 344, + UNIVERSAL = 345, + UNSIGNED32 = 346, + UNSIGNED64 = 347, + VALUE = 348, + VARIABLES = 349, + VARIATION = 350, + WRITE_SYNTAX = 351 + }; +#endif +/* Tokens. */ +#define DOT_DOT 258 +#define COLON_COLON_EQUAL 259 +#define UPPERCASE_IDENTIFIER 260 +#define LOWERCASE_IDENTIFIER 261 +#define NUMBER 262 +#define NEGATIVENUMBER 263 +#define NUMBER64 264 +#define NEGATIVENUMBER64 265 +#define BIN_STRING 266 +#define HEX_STRING 267 +#define QUOTED_STRING 268 +#define ACCESS 269 +#define AGENT_CAPABILITIES 270 +#define APPLICATION 271 +#define AUGMENTS 272 +#define BEGIN_ 273 +#define BITS 274 +#define CHOICE 275 +#define CONTACT_INFO 276 +#define CREATION_REQUIRES 277 +#define COUNTER32 278 +#define COUNTER64 279 +#define DEFINITIONS 280 +#define DEFVAL 281 +#define DESCRIPTION 282 +#define DISPLAY_HINT 283 +#define END 284 +#define ENTERPRISE 285 +#define EXPORTS 286 +#define EXTENDS 287 +#define FROM 288 +#define GROUP 289 +#define GAUGE32 290 +#define IDENTIFIER 291 +#define IMPLICIT 292 +#define IMPLIED 293 +#define IMPORTS 294 +#define INCLUDES 295 +#define INDEX 296 +#define INSTALL_ERRORS 297 +#define INTEGER 298 +#define INTEGER32 299 +#define INTEGER64 300 +#define IPADDRESS 301 +#define LAST_UPDATED 302 +#define MACRO 303 +#define MANDATORY_GROUPS 304 +#define MAX_ACCESS 305 +#define MIN_ACCESS 306 +#define MODULE 307 +#define MODULE_COMPLIANCE 308 +#define MODULE_IDENTITY 309 +#define NOT_ACCESSIBLE 310 +#define NOTIFICATIONS 311 +#define NOTIFICATION_GROUP 312 +#define NOTIFICATION_TYPE 313 +#define OBJECT 314 +#define OBJECT_GROUP 315 +#define OBJECT_IDENTITY 316 +#define OBJECT_TYPE 317 +#define OBJECTS 318 +#define OCTET 319 +#define OF 320 +#define ORGANIZATION 321 +#define OPAQUE 322 +#define PIB_ACCESS 323 +#define PIB_DEFINITIONS 324 +#define PIB_INDEX 325 +#define PIB_MIN_ACCESS 326 +#define PIB_REFERENCES 327 +#define PIB_TAG 328 +#define POLICY_ACCESS 329 +#define PRODUCT_RELEASE 330 +#define REFERENCE 331 +#define REVISION 332 +#define SEQUENCE 333 +#define SIZE 334 +#define STATUS 335 +#define STRING 336 +#define SUBJECT_CATEGORIES 337 +#define SUPPORTS 338 +#define SYNTAX 339 +#define TEXTUAL_CONVENTION 340 +#define TIMETICKS 341 +#define TRAP_TYPE 342 +#define UNIQUENESS 343 +#define UNITS 344 +#define UNIVERSAL 345 +#define UNSIGNED32 346 +#define UNSIGNED64 347 +#define VALUE 348 +#define VARIABLES 349 +#define VARIATION 350 +#define WRITE_SYNTAX 351 + + + + +/* Copy the first part of user declarations. */ +#line 14 "parser-smi.y" + + +#include + +#ifdef BACKEND_SMI + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" +#include "scanner-smi.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp is not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static int impliedFlag; +static SmiNodekind variationkind; +static SmiBasetype defaultBasetype; +static int indexFlag; + +/* + * Values for the indexFlag variable + */ +#define INDEXFLAG_NONE 0 +#define INDEXFLAG_PIBINDEX 1 +#define INDEXFLAG_AUGMENTS 2 +#define INDEXFLAG_EXTENDS 3 + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + + +static char *convertImportv2[] = { + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1065-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1065-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1065-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1065-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1065-SMI", "private", "SNMPv2-SMI", "private", + "RFC1065-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1065-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1065-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1065-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1065-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1065-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + NULL, NULL, NULL, NULL +}; + + + +static void +checkDescr(Parser *parser, char *descr) +{ + if (descr) { + if (descr[0] == 0) { + smiPrintError(parser, ERR_EMPTY_DESCRIPTION); + } + /* we might want to add more checks since I have recently + seen things like DESCRIPTION "." to cirumvent warnings */ + } +} + + + +static void +checkNameLen(Parser *parser, char *name, int error_32, int error_64) +{ + int len = strlen(name); + + if (len > 64) { + smiPrintError(parser, error_64, name); + } else if (len > 32) { + smiPrintError(parser, error_32, name); + } +} + + + +static void +checkModuleName(Parser *parserPtr, Module *modulePtr) +{ + static char *mib_ignore[] = { + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + static char *pib_ignore[] = { + "COPS-PR-SPPI", "COPS-PR-SPPI-TC", + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + const char *name = thisModulePtr->export.name; + const int len = strlen(name); + int i; + + switch (modulePtr->export.language) { + case SMI_LANGUAGE_SMIV1: + case SMI_LANGUAGE_SMIV2: + case SMI_LANGUAGE_SMING: + for (i = 0; mib_ignore[i]; i++) { + if (strcmp(mib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-MIB") != 0)) { + smiPrintError(parserPtr, ERR_MIB_MODULENAME_SUFFIX, name); + return; + } + break; + case SMI_LANGUAGE_SPPI: + for (i = 0; pib_ignore[i]; i++) { + if (strcmp(pib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-PIB") != 0)) { + smiPrintError(parserPtr, ERR_PIB_MODULENAME_SUFFIX, name); + } + break; + case SMI_LANGUAGE_UNKNOWN: + break; + } +} + + + +static void +checkModuleIdentity(Parser *parserPtr, Module *modulePtr) +{ + if ((modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (modulePtr->numModuleIdentities < 1) + && strcmp(modulePtr->export.name, "SNMPv2-SMI") + && strcmp(modulePtr->export.name, "SNMPv2-CONF") + && strcmp(modulePtr->export.name, "SNMPv2-TC") + && strcmp(modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parserPtr, ERR_NO_MODULE_IDENTITY); + } +} + + + +static void +checkObjects(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Node *nodePtr; + int i; + Type *counterTypePtr, *counter32TypePtr, *counter64TypePtr; + + counterTypePtr = findTypeByName("Counter"); + counter32TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter32"); + counter64TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter64"); + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) && + objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Set nodekinds of all newly defined objects. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_VALUEASSIGNMENT) || + (objectPtr->export.decl == SMI_DECL_OBJECTIDENTITY)) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF)) { + objectPtr->export.nodekind = SMI_NODEKIND_TABLE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } else if ((objectPtr->export.decl == SMI_DECL_NOTIFICATIONTYPE) || + (objectPtr->export.decl == SMI_DECL_TRAPTYPE)) { + objectPtr->export.nodekind = SMI_NODEKIND_NOTIFICATION; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTGROUP) || + (objectPtr->export.decl == SMI_DECL_NOTIFICATIONGROUP)) { + objectPtr->export.nodekind = SMI_NODEKIND_GROUP; + } else if (objectPtr->export.decl == SMI_DECL_MODULECOMPLIANCE) { + objectPtr->export.nodekind = SMI_NODEKIND_COMPLIANCE; + } else if (objectPtr->export.decl == SMI_DECL_AGENTCAPABILITIES) { + objectPtr->export.nodekind = SMI_NODEKIND_CAPABILITIES; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_COLUMN; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind == SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_SCALAR; + } + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if (objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Check whether the associated type resolves to a known base type. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parserPtr, ERR_BASETYPE_UNKNOWN, + objectPtr->line, + objectPtr->typePtr->export.name ? + objectPtr->typePtr->export.name : "[unknown]", + objectPtr->export.name); + if (objectPtr->nodePtr->parentPtr->firstObjectPtr->export.nodekind + == SMI_NODEKIND_TABLE) { + /* the parent node is a table node, so assume this is + * a row node. this adjusts missing INDEXs in RFC 1158. + */ + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } + } + + /* + * Mark types that are referenced in this module. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->typePtr->export.decl == SMI_DECL_TYPEDEF + || objectPtr->typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + || objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE)) { + addTypeFlags(objectPtr->typePtr, FLAG_INSYNTAX); + if (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) { + addTypeFlags(objectPtr->typePtr->parentPtr, FLAG_INSYNTAX); + } + } + + /* + * Check whether the status of the associated type matches the + * status of the object. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->export.status < objectPtr->typePtr->export.status)) { + if (objectPtr->typePtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + if (objectPtr->typePtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + } + + /* + * Check the nodekind of the parent node. + */ + + if (parentPtr) { + switch (objectPtr->export.nodekind) { + case SMI_NODEKIND_COLUMN: + if (parentPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parserPtr, ERR_COLUMN_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_ROW: + if (parentPtr->export.nodekind != SMI_NODEKIND_TABLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parentPtr->typePtr && parentPtr->typePtr->parentPtr && + strcmp(parentPtr->typePtr->parentPtr->export.name, + objectPtr->typePtr->export.name)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ROW_TYPE_MISMATCH, + objectPtr->line, + objectPtr->export.name); + } + break; + case SMI_NODEKIND_TABLE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_SCALAR: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_SCALAR_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if ((parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parserPtr && parentPtr->nodePtr->parentPtr && + parentPtr->nodePtr->parentPtr->lastObjectPtr) { + Object *parent2Ptr = parentPtr->nodePtr->parentPtr->lastObjectPtr; + if ((parent2Ptr->export.nodekind != SMI_NODEKIND_NODE) && + (parent2Ptr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, + ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, + objectPtr->export.name); + } + } + break; + case SMI_NODEKIND_NODE: + /* Node defined by OBJECT IDENTIFIER assignments can have + arbitrary parent node. */ + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (objectPtr->export.decl != SMI_DECL_VALUEASSIGNMENT)) { + smiPrintErrorAtLine(parserPtr, ERR_NODE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_GROUP: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_GROUP_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_COMPLIANCE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_COMPLIANCE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_CAPABILITIES: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_CAPABILITIES_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + } + } + + /* + * Check whether groups only contain scalars, columns and + * notifications. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + smiCheckGroupMembers(parserPtr, objectPtr); + } + + /* + * Check whether compliance statements contain out of date + * groups or objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + smiCheckComplianceStatus(parserPtr, objectPtr); + } + + /* + * Check whether notification statements contain useful + * objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiCheckNotificationOid(parserPtr, modulePtr, objectPtr); + smiCheckNotificationMembers(parserPtr, objectPtr); + } + + if (modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Check whether tables and rows are not accessible + * (RFC 2578 7.1.12). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + /* + * Check whether counter objects are read-only or + * accessible-for-notify (RFC 2578, 7.1.6). + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) || + (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN)) && + (objectPtr->export.access != SMI_ACCESS_NOTIFY) && + (objectPtr->export.access != SMI_ACCESS_READ_ONLY) && + (smiTypeDerivedFrom(objectPtr->typePtr, counterTypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter32TypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter64TypePtr))) { + smiPrintErrorAtLine(parserPtr, ERR_COUNTER_ACCESS, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * Check whether a row's subid is 1, see RFC 2578 7.10 (1). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + int len; + + if (objectPtr->nodePtr->subid != 1) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_SUBID_ONE, + objectPtr->line, objectPtr->export.name); + } + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Entry")) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_ENTRY, + objectPtr->line, objectPtr->export.name); + } else { + + /* + * This misreports some cases where the table name + * does not have the "*Table" suffix. This is trying + * to allow Entry names of either fooTableEntry or + * fooEntry. + */ + if (parentPtr && + !(((int)strlen(parentPtr->export.name) == len || + (int)strlen(parentPtr->export.name) == len - 5) && + !strncmp(objectPtr->export.name, parentPtr->export.name, + len - 5))) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_TABLENAME, + objectPtr->line, + objectPtr->export.name, + parentPtr->export.name); + } + } + } + + /* + * Check whether a row's SEQUENCE contains exactly the list + * of child nodes (columns). An unknown SEQUENCE type + * is handled later. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW && + ((objectPtr->typePtr->flags & FLAG_INCOMPLETE) == 0)) { + List *p; + Node *seqNodePtr, *childNodePtr; + Object *colPtr; + int i; + + /* + * Walk through the SEQUENCE elements and find those + * that are misordered or have no matching columnar object. + */ + for (p = objectPtr->typePtr->listPtr, i = 1, + childNodePtr = objectPtr->nodePtr->firstChildPtr; + p && childNodePtr; + p = p->nextPtr, childNodePtr = childNodePtr->nextPtr, i++) { + seqNodePtr = ((Object *)p->ptr)->nodePtr; + + if (seqNodePtr->parentPtr != childNodePtr->parentPtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + continue; + } + + if (seqNodePtr != childNodePtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_ORDER, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + break; + } + } + if ((p != NULL) && (childNodePtr == NULL)) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + } + + /* + * Walk through all child objects and find those + * that were missing in the SEQUENCE. + */ + for (childNodePtr = objectPtr->nodePtr->firstChildPtr; + childNodePtr; childNodePtr = childNodePtr->nextPtr) { + colPtr = findObjectByModuleAndNode(modulePtr, childNodePtr); + if (!colPtr) continue; + for (p = objectPtr->typePtr->listPtr; p; p = p->nextPtr) { + if (((Object *)p->ptr)->nodePtr == colPtr->nodePtr) + break; + } + if (!p) { + if (colPtr->export.name) { + /* + * Don't complain, if it's an implcitly defined + * unnamed node (could happen for parent node of + * TRAP-TYPE definitions). + */ + smiPrintErrorAtLine(parserPtr, + ERR_SEQUENCE_MISSING_COLUMN, + objectPtr->typePtr->line, + objectPtr->typePtr->export.name, + colPtr->export.name); + } + } + } + + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE) { + int len; + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Table")) { + smiPrintErrorAtLine(parserPtr, ERR_TABLENAME_TABLE, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * TODO: check whether the row is the only node below the + * table node + */ + + /* + * Check references to unknown identifiers. + */ + + if ((objectPtr->flags & FLAG_INCOMPLETE) && + (objectPtr->export.decl != SMI_DECL_IMPL_OBJECT)) { + if (objectPtr->export.name) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + objectPtr->line, objectPtr->export.name); + } else { + smiPrintErrorAtLine(parserPtr, ERR_IMPLICIT_NODE, + objectPtr->line); + } + } + + /* + * Adjust the status of implicit type definitions. + */ + + if (objectPtr->typePtr + && (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) + && (objectPtr->typePtr->export.status == SMI_STATUS_UNKNOWN)) { + objectPtr->typePtr->export.status = objectPtr->export.status; + } + + /* + * Link implicit type definition from refinements into + * the type derivation tree. Adjust the status of implicit + * type definitions in refinements. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + + List *listPtr; + + for (listPtr = objectPtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + + Refinement *refinementPtr; + Type *typePtr; + + refinementPtr = ((Refinement *)(listPtr->ptr)); + typePtr = refinementPtr->typePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + typePtr = refinementPtr->writetypePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + } + /* relocate the refinement type into the type tree */ + /* relocate the write refinement type into the type tree */ + } + + /* + * Set the oidlen/oid values that are not yet correct. + */ + + if (objectPtr->export.oidlen == 0) { + if (objectPtr->nodePtr->oidlen == 0) { + for (nodePtr = objectPtr->nodePtr, i = 1; + nodePtr->parentPtr != thisParserPtr->pendingNodePtr && + nodePtr->parentPtr != smiHandle->rootNodePtr && + nodePtr != nodePtr->parentPtr && + i <= 128; + nodePtr = nodePtr->parentPtr, i++); + if ((objectPtr->export.name) && + ((i > 128) || (nodePtr == nodePtr->parentPtr))) { + smiPrintErrorAtLine(parserPtr, ERR_OID_RECURSIVE, + objectPtr->line, + objectPtr->export.name); + } + objectPtr->nodePtr->oid = smiMalloc(i * sizeof(SmiSubid)); + objectPtr->nodePtr->oidlen = i; + for (nodePtr = objectPtr->nodePtr; i > 0; i--) { + objectPtr->nodePtr->oid[i-1] = nodePtr->subid; + nodePtr = nodePtr->parentPtr; + } + } + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen; + objectPtr->export.oid = objectPtr->nodePtr->oid; + } + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) + && (objectPtr->export.nodekind != SMI_NODEKIND_NODE) + && objectPtr->export.name + && objectPtr->export.oid[objectPtr->export.oidlen-1] == 0 + && objectPtr->export.oidlen != 2 && objectPtr->export.oid[0] != 0) { + smiPrintErrorAtLine(parserPtr, ERR_OID_ADMIN_ZERO, + objectPtr->line, + objectPtr->export.name); + } + + /* + * Check whether the module identity is registered in a well + * known controlled location. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + smiCheckModuleIdentityRegistration(parserPtr, objectPtr); + } + + /* + * Check table linkage constraints for row objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + switch (objectPtr->export.indexkind) { + case SMI_INDEX_INDEX: + smiCheckIndex(parserPtr, objectPtr); + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + smiCheckAugment(parserPtr, objectPtr); + break; + default: + break; + } + } + + /* + * Determine the longest common OID prefix of all nodes. + */ + + if (!modulePtr->prefixNodePtr) { + modulePtr->prefixNodePtr = objectPtr->nodePtr; + } else { + if (objectPtr->nodePtr->oidlen < modulePtr->prefixNodePtr->oidlen) { + Node *nodePtr = findNodeByOid(objectPtr->nodePtr->oidlen, + modulePtr->prefixNodePtr->oid); + if (nodePtr) + modulePtr->prefixNodePtr = nodePtr; + else + smiPrintError(parserPtr, ERR_OTHER_ERROR, + "Failed to create complete object tree - " + "expect incorrect output"); + } + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) { + if (modulePtr->prefixNodePtr->oid[i] != + objectPtr->nodePtr->oid[i]) { + modulePtr->prefixNodePtr = + findNodeByOid(i, modulePtr->prefixNodePtr->oid); + break; + } + } + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + /* + * Check whether all objects and notifications are contained in at + * least one conformance group (RFC 2580 3.3 and 4.1). + */ + + smiCheckGroupMembership(parserPtr, objectPtr); + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SPPI) { + Object *parentPtr; + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + /* + * All checks for SPPI constructs + */ + if (objectPtr->nodePtr->parentPtr) + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + else + parentPtr = NULL; + + /* + * Do all rows contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if (parentPtr && + (parentPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.indexkind != SMI_INDEX_INDEX) && + (objectPtr->export.indexkind != SMI_INDEX_AUGMENT) && + (objectPtr->export.indexkind != SMI_INDEX_SPARSE)) + smiPrintErrorAtLine(parserPtr, ERR_ROW_LACKS_PIB_INDEX, + objectPtr->line); + + /* + * Does any non row contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if ((objectPtr->export.nodekind != SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, + objectPtr->line); + + /* + * Check the PIB-INDEX and other indices + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind == SMI_INDEX_INDEX)) { + + /* + * Only the first element (PIB-INDEX) has to be an InstanceId. + * See RFC 3159 7.5 + */ + if (objectPtr->listPtr && objectPtr->listPtr->ptr) { + Object *pibindex = (Object *)objectPtr->listPtr->ptr; + if (pibindex->typePtr && pibindex->typePtr->export.name && + strcmp(pibindex->typePtr->export.name, "InstanceId")) + smiPrintErrorAtLine(thisParserPtr, ERR_PIB_INDEX_NOT_INSTANCEID, + pibindex->line, pibindex->export.name); + } + } + + /* + * Do all tables contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.access == SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_TABLE_LACKS_PIB_ACCESS, + objectPtr->line); + + /* + * Does any non table types contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_NODE) || + (objectPtr->export.nodekind == SMI_NODEKIND_ROW) || + (objectPtr->export.nodekind == SMI_NODEKIND_SCALAR)) && + (objectPtr->export.access != SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_ACCESS_FOR_NON_TABLE, + objectPtr->line); + + /* + * Check the UNIQUENESS clause and its entries + * See RFC 3159 7.9 + */ + if (objectPtr->uniquenessPtr) { + if (objectPtr->export.nodekind != SMI_NODEKIND_ROW) + smiPrintErrorAtLine(parserPtr, ERR_UNIQUENESS_FOR_NON_ROW, + objectPtr->line); + else + smiCheckUniqueness(parserPtr, objectPtr); + } + + /* + * Does the PIB-REFERENCES object point to a PRC (table)? + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId") && + objectPtr->relatedPtr && + (objectPtr->relatedPtr->export.nodekind != SMI_NODEKIND_ROW)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_NOT_ROW, + objectPtr->line); + + /* + * Do all PIB-TAGs point to objects with a SYNTAX of TagId? + * See RFC 3159 7.12 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId") && + objectPtr->relatedPtr && objectPtr->relatedPtr->typePtr && + objectPtr->relatedPtr->typePtr->export.name && + strcmp(objectPtr->relatedPtr->typePtr->export.name, "TagId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_TYPE, objectPtr->line); + + /* + * Is the attribute member of at least one compliance group? + * See RFC 3159 9.1 + */ + if (objectPtr->export.nodekind & SMI_NODEKIND_COLUMN) { + Object *group; + int found = 0; + + for (group = modulePtr->firstObjectPtr; group; + group = group->nextPtr) { + if ((group->export.nodekind == SMI_NODEKIND_GROUP) && + group->listPtr) { + List *l; + + for (l = group->listPtr; l; l = l->nextPtr) + if (((Object *)l->ptr)->export.name && + !strcmp(((Object *)l->ptr)->export.name, + objectPtr->export.name)) { + found = 1; + break; + } + } + if (found) + break; + } + if (!found) + smiPrintErrorAtLine(parserPtr, ERR_ATTRIBUTE_NOT_IN_GROUP, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for (typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Check references to unknown types. + */ + + if ((typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && (typePtr->export.decl == SMI_DECL_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_TYPE, + typePtr->line, typePtr->export.name); + } + + /* + * Use TCs instead of type assignments in SMIv2. + */ + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2 + && typePtr->export.decl == SMI_DECL_TYPEASSIGNMENT + && typePtr->export.basetype != SMI_BASETYPE_UNKNOWN + && strcmp(thisModulePtr->export.name, "SNMPv2-SMI")) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_TYPE_ASSIGNEMENT, + typePtr->line, typePtr->export.name); + } + + /* + * Check whether we have types that are not used in this + * module. + */ + + if ((typePtr->export.decl == SMI_DECL_TYPEDEF + || typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION) + && ! (typePtr->flags & FLAG_INSYNTAX)) { + static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + smiPrintErrorAtLine(parserPtr, ERR_TYPE_UNREF, + typePtr->line, + status[typePtr->export.status], + typePtr->export.name); + } + + /* + * Complain about TCs derived from other TCs (RFC 2579 3.5). + */ + + if (typePtr->parentPtr + && typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + && typePtr->export.decl == typePtr->parentPtr->export.decl) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, + typePtr->line, + typePtr->export.name, + typePtr->parentPtr->export.name); + + if (typePtr->export.status < typePtr->parentPtr->export.status) { + if (typePtr->parentPtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + if (typePtr->parentPtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + } + } + + smiCheckTypeFormat(parserPtr, typePtr); + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static void +adjustDefval(Parser *parserPtr, SmiValue *valuePtr, Type *typePtr, int line) +{ + Object *object2Ptr; + List *bitsListPtr, *valueListPtr, *p, *pp, *nextPtr, *listPtr; + Import *importPtr; + int nBits, bit; + + if (valuePtr->basetype == SMI_BASETYPE_UNKNOWN) + return; + + if (valuePtr->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + /* a len of -1 indicates an unresolved label in ptr */ + if (valuePtr->len == -1) { + object2Ptr = findObjectByModuleAndName(parserPtr->modulePtr, + (char *)valuePtr->value.ptr); + if (!object2Ptr) { + importPtr = findImportByName( + (char *)valuePtr->value.ptr, parserPtr->modulePtr); + if (importPtr) { /* imported object */ + importPtr->use++; + object2Ptr = findObjectByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (!object2Ptr) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + line, + (char *)valuePtr->value.ptr); + smiFree(valuePtr->value.ptr); + valuePtr->value.ptr = NULL; + valuePtr->basetype = SMI_BASETYPE_UNKNOWN; + } else { + smiFree(valuePtr->value.ptr); + valuePtr->len = object2Ptr->export.oidlen; + valuePtr->value.ptr = smiMalloc(object2Ptr->export.oidlen * + sizeof(SmiSubid)); + memcpy(valuePtr->value.ptr, + object2Ptr->export.oid, + object2Ptr->export.oidlen * sizeof(SmiSubid)); + } + } + } else if (valuePtr->basetype == SMI_BASETYPE_BITS) { + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.integer32) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.integer32; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = ((NamedNumber *)(pp->ptr))->export.value.value.integer32; + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } + } else if (valuePtr->basetype == SMI_BASETYPE_ENUM) { + /* a len of -1 indicates an unresolved enum label in ptr */ + if (valuePtr->len == -1) { + for (listPtr = typePtr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name, + (char *)valuePtr->value.ptr)) { + smiFree(valuePtr->value.ptr); + valuePtr->value.integer32 = + ((NamedNumber *)(listPtr->ptr))-> + export.value.value.integer32; + valuePtr->len = 1; + break; + } + } + } + } +} + + + +static void +checkDefvals(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + + /* + * Check unknown identifiers in OID DEFVALs. + */ + + for(objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + adjustDefval(parserPtr, &objectPtr->export.value, + objectPtr->typePtr, objectPtr->line); + + if (objectPtr->export.value.len == -1) { + smiPrintErrorAtLine(parserPtr, + ERR_DEFVAL_SYNTAX, objectPtr->line); + } + + smiCheckDefault(parserPtr, objectPtr); + } +} + + + +static void +checkImportsUsage(Parser *parserPtr, Module *modulePtr) +{ + Import *importPtr; + + /* + * Check usage of all imported identifiers. + */ + + if (strcmp(modulePtr->export.name, "SNMPv2-TC") && + strcmp(modulePtr->export.name, "SNMPv2-CONF") && + strcmp(modulePtr->export.name, "RFC-1212") && + strcmp(modulePtr->export.name, "RFC-1215")) { + for(importPtr = modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + if (! strcmp(importPtr->export.module, "SNMPv2-SMI")) { + if (! strcmp(importPtr->export.name, "ExtUTCTime") + || !strcmp(importPtr->export.name, "ObjectName") + || !strcmp(importPtr->export.name, "NotificationName")) { + smiPrintErrorAtLine(parserPtr, ERR_ILLEGAL_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + } + /* checkImports() handles KIND_NOTFOUND */ + if (importPtr->use == 0 && importPtr->kind != KIND_NOTFOUND) { + smiPrintErrorAtLine(parserPtr, ERR_UNUSED_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + int j; + for (j = 0; convertImportv2[j]; j += 4) { + if ((strcmp(convertImportv2[j], + importPtr->export.module) == 0) + && (strcmp(convertImportv2[j+1], + importPtr->export.name) == 0)) { + smiPrintErrorAtLine(parserPtr, + ERR_OBSOLETE_IMPORT, + importPtr->line, + importPtr->export.name, + convertImportv2[j+2], + importPtr->export.module); + } + } + } + } + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 11 || len == 13) { + for (i = 0; i < len; i++) { + if ( (i < len-1 && ! isdigit((int) date[i])) + || (i == len-1 && date[len-1] != 'Z')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; + i < ((len == 11) ? 2 : 4); i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + if (len == 11) { + tm.tm_year += 1900; + if (tm.tm_year < 1990) + smiPrintError(parserPtr, ERR_DATE_YEAR_2DIGITS, + date, tm.tm_year); + } + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 1288 "parser-smi.y" +{ + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} +/* Line 187 of yacc.c. */ +#line 1575 "parser-smi.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 1588 "parser-smi.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 664 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 107 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 224 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 427 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 712 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 351 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 101, 102, 2, 2, 100, 2, 105, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 103, 2, 104, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 97, 106, 98, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 6, 8, 11, 12, 23, 27, + 28, 30, 32, 34, 35, 39, 40, 41, 45, 47, + 48, 50, 53, 57, 59, 63, 65, 67, 69, 71, + 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, + 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, + 113, 115, 117, 119, 121, 122, 124, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, + 154, 155, 156, 162, 164, 166, 168, 170, 172, 174, + 176, 178, 180, 182, 183, 187, 189, 191, 192, 201, + 202, 207, 209, 211, 213, 215, 217, 219, 221, 223, + 225, 227, 229, 231, 233, 235, 237, 239, 240, 241, + 253, 255, 259, 261, 266, 268, 272, 275, 277, 282, + 284, 286, 289, 291, 295, 296, 302, 303, 304, 305, + 320, 321, 322, 346, 347, 350, 351, 352, 364, 369, + 370, 372, 376, 378, 381, 382, 384, 386, 387, 390, + 392, 394, 395, 401, 402, 403, 409, 410, 411, 417, + 418, 420, 421, 423, 427, 429, 430, 436, 437, 439, + 443, 448, 449, 453, 454, 458, 459, 460, 461, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 510, 515, + 516, 518, 520, 524, 526, 531, 533, 536, 538, 540, + 542, 544, 550, 556, 558, 560, 562, 564, 565, 569, + 570, 574, 576, 577, 581, 582, 586, 591, 594, 599, + 602, 603, 608, 611, 616, 620, 622, 624, 626, 628, + 630, 632, 634, 636, 640, 643, 646, 650, 654, 657, + 660, 663, 665, 668, 670, 673, 676, 678, 681, 684, + 687, 689, 692, 694, 697, 700, 703, 706, 709, 712, + 714, 717, 719, 721, 723, 725, 727, 728, 732, 739, + 741, 745, 747, 751, 753, 755, 757, 759, 761, 763, + 767, 769, 773, 774, 780, 782, 784, 786, 788, 791, + 792, 795, 796, 798, 799, 805, 810, 811, 817, 818, + 819, 825, 826, 828, 832, 835, 837, 839, 841, 846, + 847, 849, 853, 855, 856, 858, 862, 864, 866, 869, + 870, 872, 873, 875, 878, 879, 885, 890, 891, 896, + 898, 902, 904, 909, 911, 915, 917, 919, 921, 922, + 925, 927, 930, 932, 936, 938, 943, 950, 952, 954, + 957, 962, 964, 965, 966, 967, 983, 984, 985, 986, + 1002, 1003, 1004, 1005, 1021, 1023, 1025, 1028, 1029, 1035, + 1038, 1040, 1041, 1046, 1047, 1049, 1053, 1055, 1057, 1058, + 1060, 1063, 1065, 1067, 1068, 1074, 1075, 1084, 1087, 1088, + 1091, 1092, 1094, 1097, 1100, 1101, 1102, 1103, 1104, 1122, + 1124, 1125, 1127, 1130, 1131, 1140, 1142, 1146, 1148, 1151, + 1153, 1155, 1156, 1158, 1161, 1162, 1163, 1164, 1165, 1166, + 1181, 1184, 1185, 1187, 1192, 1193, 1195, 1199 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 108, 0, -1, 109, -1, -1, 110, -1, 109, 110, + -1, -1, 126, 111, 112, 113, 4, 18, 116, 114, + 127, 29, -1, 97, 269, 98, -1, -1, 25, -1, + 69, -1, 115, -1, -1, 39, 118, 99, -1, -1, + -1, 31, 117, 99, -1, 119, -1, -1, 120, -1, + 119, 120, -1, 121, 33, 126, -1, 122, -1, 121, + 100, 122, -1, 6, -1, 5, -1, 123, -1, 124, + -1, 125, -1, 19, -1, 44, -1, 46, -1, 49, + -1, 53, -1, 54, -1, 60, -1, 61, -1, 62, + -1, 67, -1, 85, -1, 86, -1, 91, -1, 15, + -1, 23, -1, 24, -1, 35, -1, 57, -1, 58, + -1, 87, -1, 45, -1, 92, -1, 5, -1, 128, + -1, -1, 129, -1, 128, 129, -1, 139, -1, 137, + -1, 159, -1, 163, -1, 167, -1, 193, -1, 197, + -1, 284, -1, 276, -1, 280, -1, 307, -1, 130, + -1, 1, 98, -1, -1, -1, 133, 131, 48, 132, + 29, -1, 54, -1, 62, -1, 87, -1, 58, -1, + 61, -1, 85, -1, 60, -1, 57, -1, 53, -1, + 15, -1, -1, 20, 135, 98, -1, 6, -1, 5, + -1, -1, 136, 138, 59, 36, 4, 97, 269, 98, + -1, -1, 141, 140, 4, 146, -1, 5, -1, 142, + -1, 145, -1, 143, -1, 144, -1, 46, -1, 86, + -1, 67, -1, 44, -1, 91, -1, 23, -1, 35, + -1, 24, -1, 45, -1, 92, -1, 154, -1, -1, + -1, 85, 147, 237, 80, 235, 27, 267, 148, 255, + 84, 154, -1, 134, -1, 78, 65, 150, -1, 5, + -1, 78, 97, 152, 98, -1, 153, -1, 152, 100, + 153, -1, 6, 155, -1, 210, -1, 19, 97, 156, + 98, -1, 212, -1, 19, -1, 5, 224, -1, 157, + -1, 156, 100, 157, -1, -1, 6, 158, 101, 7, + 102, -1, -1, -1, -1, 6, 160, 61, 161, 80, + 235, 27, 267, 162, 255, 4, 97, 269, 98, -1, + -1, -1, 6, 164, 62, 165, 84, 154, 238, 174, + 177, 179, 80, 235, 166, 186, 255, 240, 243, 181, + 249, 4, 97, 253, 98, -1, -1, 27, 267, -1, + -1, -1, 136, 168, 87, 169, 30, 269, 170, 173, + 255, 4, 7, -1, 94, 97, 171, 98, -1, -1, + 172, -1, 171, 100, 172, -1, 253, -1, 27, 267, + -1, -1, 190, -1, 175, -1, -1, 176, 239, -1, + 74, -1, 68, -1, -1, 72, 178, 97, 248, 98, + -1, -1, -1, 73, 180, 97, 253, 98, -1, -1, + -1, 88, 182, 97, 183, 98, -1, -1, 184, -1, + -1, 185, -1, 184, 100, 185, -1, 253, -1, -1, + 42, 187, 97, 188, 98, -1, -1, 189, -1, 188, + 100, 189, -1, 6, 101, 7, 102, -1, -1, 50, + 191, 239, -1, -1, 14, 192, 239, -1, -1, -1, + -1, 6, 194, 58, 195, 260, 80, 235, 27, 267, + 196, 255, 4, 97, 254, 98, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, 198, 54, 199, 206, + 200, 47, 268, 201, 66, 267, 202, 21, 267, 203, + 27, 267, 204, 256, 205, 4, 97, 269, 98, -1, + 82, 97, 207, 98, -1, -1, 208, -1, 209, -1, + 208, 100, 209, -1, 6, -1, 6, 101, 7, 102, + -1, 214, -1, 211, 214, -1, 149, -1, 150, -1, + 151, -1, 222, -1, 103, 16, 7, 104, 37, -1, + 103, 90, 7, 104, 37, -1, 221, -1, 223, -1, + 220, -1, 43, -1, -1, 43, 215, 225, -1, -1, + 43, 216, 230, -1, 44, -1, -1, 44, 217, 225, + -1, -1, 5, 218, 230, -1, 126, 105, 5, 230, + -1, 5, 225, -1, 126, 105, 5, 225, -1, 64, + 81, -1, -1, 64, 81, 219, 226, -1, 5, 226, + -1, 126, 105, 5, 226, -1, 59, 36, 224, -1, + 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, + 12, -1, 6, -1, 13, -1, 97, 273, 98, -1, + 43, 224, -1, 44, 224, -1, 64, 81, 224, -1, + 59, 36, 224, -1, 46, 224, -1, 23, 224, -1, + 23, 225, -1, 35, -1, 35, 225, -1, 91, -1, + 91, 225, -1, 86, 224, -1, 67, -1, 67, 226, + -1, 24, 224, -1, 24, 225, -1, 45, -1, 45, + 225, -1, 92, -1, 92, 225, -1, 46, 224, -1, + 23, 224, -1, 35, 224, -1, 91, 224, -1, 86, + 224, -1, 67, -1, 24, 224, -1, 45, -1, 92, + -1, 225, -1, 226, -1, 230, -1, -1, 101, 227, + 102, -1, 101, 79, 101, 227, 102, 102, -1, 228, + -1, 227, 106, 228, -1, 229, -1, 229, 3, 229, + -1, 8, -1, 7, -1, 10, -1, 9, -1, 12, + -1, 11, -1, 97, 231, 98, -1, 232, -1, 231, + 100, 232, -1, -1, 6, 233, 101, 234, 102, -1, + 7, -1, 8, -1, 6, -1, 6, -1, 28, 267, + -1, -1, 89, 267, -1, -1, 6, -1, -1, 70, + 241, 97, 248, 98, -1, 17, 97, 248, 98, -1, + -1, 32, 242, 97, 248, 98, -1, -1, -1, 41, + 244, 97, 245, 98, -1, -1, 246, -1, 245, 100, + 246, -1, 38, 247, -1, 247, -1, 253, -1, 253, + -1, 26, 97, 250, 98, -1, -1, 213, -1, 97, + 251, 98, -1, 252, -1, -1, 6, -1, 252, 100, + 6, -1, 269, -1, 269, -1, 76, 267, -1, -1, + 257, -1, -1, 258, -1, 257, 258, -1, -1, 77, + 268, 259, 27, 267, -1, 63, 97, 262, 98, -1, + -1, 63, 97, 262, 98, -1, 263, -1, 262, 100, + 263, -1, 253, -1, 56, 97, 265, 98, -1, 266, + -1, 265, 100, 266, -1, 254, -1, 13, -1, 13, + -1, -1, 270, 271, -1, 272, -1, 271, 272, -1, + 136, -1, 126, 105, 6, -1, 7, -1, 6, 101, + 7, 102, -1, 126, 105, 6, 101, 7, 102, -1, + 274, -1, 275, -1, 274, 275, -1, 6, 101, 7, + 102, -1, 7, -1, -1, -1, -1, 6, 277, 60, + 278, 261, 80, 235, 27, 267, 279, 255, 4, 97, + 269, 98, -1, -1, -1, -1, 6, 281, 57, 282, + 264, 80, 235, 27, 267, 283, 255, 4, 97, 269, + 98, -1, -1, -1, -1, 6, 285, 53, 286, 80, + 235, 27, 267, 287, 255, 288, 4, 97, 269, 98, + -1, 289, -1, 290, -1, 289, 290, -1, -1, 52, + 292, 291, 293, 296, -1, 5, 269, -1, 5, -1, + -1, 49, 97, 294, 98, -1, -1, 295, -1, 294, + 100, 295, -1, 269, -1, 297, -1, -1, 298, -1, + 297, 298, -1, 299, -1, 301, -1, -1, 34, 300, + 269, 27, 267, -1, -1, 59, 302, 253, 303, 304, + 306, 27, 267, -1, 84, 154, -1, -1, 96, 305, + -1, -1, 154, -1, 51, 239, -1, 71, 239, -1, + -1, -1, -1, -1, 6, 308, 15, 309, 75, 267, + 80, 236, 27, 267, 310, 255, 311, 4, 97, 269, + 98, -1, 312, -1, -1, 313, -1, 312, 313, -1, + -1, 83, 317, 314, 40, 97, 315, 98, 318, -1, + 316, -1, 315, 100, 316, -1, 269, -1, 5, 269, + -1, 5, -1, 319, -1, -1, 320, -1, 319, 320, + -1, -1, -1, -1, -1, -1, 95, 253, 321, 303, + 322, 304, 323, 326, 328, 324, 249, 325, 27, 267, + -1, 14, 327, -1, -1, 6, -1, 22, 97, 329, + 98, -1, -1, 330, -1, 329, 100, 330, -1, 253, + -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 1586, 1586, 1591, 1596, 1598, 1607, 1606, 1668, 1671, + 1674, 1676, 1685, 1688, 1691, 1706, 1708, 1707, 1728, 1731, + 1735, 1737, 1741, 1786, 1788, 1796, 1802, 1808, 1824, 1834, + 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, + 1850, 1851, 1852, 1855, 1856, 1857, 1858, 1859, 1860, 1861, + 1864, 1865, 1868, 1880, 1883, 1887, 1889, 1893, 1898, 1903, + 1908, 1913, 1918, 1923, 1928, 1933, 1938, 1943, 1948, 1953, + 1968, 1980, 1967, 2013, 2014, 2015, 2016, 2017, 2018, 2019, + 2020, 2021, 2022, 2026, 2025, 2055, 2060, 2076, 2075, 2116, + 2115, 2281, 2285, 2309, 2323, 2324, 2333, 2334, 2335, 2336, + 2337, 2340, 2341, 2342, 2345, 2346, 2349, 2366, 2397, 2365, + 2433, 2441, 2455, 2500, 2508, 2514, 2534, 2617, 2623, 2645, + 2649, 2654, 2687, 2693, 2707, 2706, 2742, 2752, 2777, 2741, + 2805, 2815, 2804, 3111, 3120, 3128, 3138, 3127, 3210, 3215, + 3220, 3230, 3252, 3258, 3264, 3267, 3271, 3280, 3283, 3287, + 3291, 3296, 3295, 3303, 3307, 3306, 3314, 3319, 3318, 3326, + 3329, 3332, 3335, 3341, 3355, 3360, 3359, 3367, 3370, 3376, + 3390, 3412, 3411, 3423, 3422, 3436, 3446, 3466, 3435, 3497, + 3507, 3532, 3536, 3540, 3547, 3554, 3558, 3496, 3604, 3611, + 3618, 3625, 3631, 3646, 3667, 3690, 3694, 3714, 3719, 3724, + 3729, 3746, 3748, 3756, 3761, 3778, 3787, 3801, 3800, 3820, + 3819, 3834, 3861, 3860, 3892, 3891, 3945, 3992, 4047, 4097, + 4103, 4102, 4114, 4160, 4201, 4208, 4215, 4221, 4228, 4235, + 4261, 4284, 4304, 4321, 4354, 4358, 4383, 4387, 4393, 4421, + 4447, 4484, 4510, 4543, 4567, 4594, 4622, 4660, 4706, 4732, + 4769, 4795, 4832, 4858, 4901, 4929, 4955, 4981, 5005, 5033, + 5073, 5099, 5124, 5151, 5168, 5185, 5204, 5211, 5221, 5233, + 5239, 5253, 5260, 5270, 5276, 5282, 5288, 5294, 5317, 5344, + 5350, 5356, 5370, 5369, 5391, 5406, 5415, 5474, 5490, 5500, + 5505, 5515, 5520, 5587, 5586, 5604, 5615, 5614, 5628, 5634, + 5633, 5667, 5672, 5678, 5692, 5697, 5703, 5713, 5719, 5734, + 5738, 5740, 5748, 5751, 5754, 5760, 5773, 5779, 5785, 5795, + 5798, 5801, 5804, 5806, 5811, 5810, 5841, 5846, 5851, 5857, + 5863, 5876, 5888, 5894, 5900, 5913, 5924, 5935, 5941, 5941, + 5956, 5960, 5969, 6063, 6167, 6191, 6251, 6320, 6324, 6326, + 6330, 6332, 6337, 6347, 6366, 6336, 6397, 6407, 6429, 6396, + 6461, 6471, 6489, 6460, 6553, 6559, 6563, 6599, 6598, 6627, + 6636, 6646, 6651, 6656, 6661, 6667, 6680, 6703, 6710, 6717, + 6721, 6788, 6794, 6803, 6802, 6836, 6835, 6882, 6891, 6896, + 6908, 6913, 6919, 6925, 6934, 6940, 6950, 6972, 6939, 7007, + 7010, 7013, 7015, 7020, 7019, 7046, 7056, 7073, 7079, 7088, + 7098, 7101, 7104, 7106, 7111, 7119, 7126, 7134, 7141, 7110, + 7164, 7167, 7170, 7235, 7238, 7241, 7243, 7247 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "DOT_DOT", "COLON_COLON_EQUAL", + "UPPERCASE_IDENTIFIER", "LOWERCASE_IDENTIFIER", "NUMBER", + "NEGATIVENUMBER", "NUMBER64", "NEGATIVENUMBER64", "BIN_STRING", + "HEX_STRING", "QUOTED_STRING", "ACCESS", "AGENT_CAPABILITIES", + "APPLICATION", "AUGMENTS", "BEGIN_", "BITS", "CHOICE", "CONTACT_INFO", + "CREATION_REQUIRES", "COUNTER32", "COUNTER64", "DEFINITIONS", "DEFVAL", + "DESCRIPTION", "DISPLAY_HINT", "END", "ENTERPRISE", "EXPORTS", "EXTENDS", + "FROM", "GROUP", "GAUGE32", "IDENTIFIER", "IMPLICIT", "IMPLIED", + "IMPORTS", "INCLUDES", "INDEX", "INSTALL_ERRORS", "INTEGER", "INTEGER32", + "INTEGER64", "IPADDRESS", "LAST_UPDATED", "MACRO", "MANDATORY_GROUPS", + "MAX_ACCESS", "MIN_ACCESS", "MODULE", "MODULE_COMPLIANCE", + "MODULE_IDENTITY", "NOT_ACCESSIBLE", "NOTIFICATIONS", + "NOTIFICATION_GROUP", "NOTIFICATION_TYPE", "OBJECT", "OBJECT_GROUP", + "OBJECT_IDENTITY", "OBJECT_TYPE", "OBJECTS", "OCTET", "OF", + "ORGANIZATION", "OPAQUE", "PIB_ACCESS", "PIB_DEFINITIONS", "PIB_INDEX", + "PIB_MIN_ACCESS", "PIB_REFERENCES", "PIB_TAG", "POLICY_ACCESS", + "PRODUCT_RELEASE", "REFERENCE", "REVISION", "SEQUENCE", "SIZE", "STATUS", + "STRING", "SUBJECT_CATEGORIES", "SUPPORTS", "SYNTAX", + "TEXTUAL_CONVENTION", "TIMETICKS", "TRAP_TYPE", "UNIQUENESS", "UNITS", + "UNIVERSAL", "UNSIGNED32", "UNSIGNED64", "VALUE", "VARIABLES", + "VARIATION", "WRITE_SYNTAX", "'{'", "'}'", "';'", "','", "'('", "')'", + "'['", "']'", "'.'", "'|'", "$accept", "mibFile", "modules", "module", + "@1", "moduleOid", "definitions", "linkagePart", "linkageClause", + "exportsClause", "@2", "importPart", "imports", "import", + "importIdentifiers", "importIdentifier", "importedKeyword", + "importedSMIKeyword", "importedSPPIKeyword", "moduleName", + "declarationPart", "declarations", "declaration", "macroClause", "@3", + "@4", "macroName", "choiceClause", "@5", "fuzzy_lowercase_identifier", + "valueDeclaration", "@6", "typeDeclaration", "@7", "typeName", "typeSMI", + "typeSMIandSPPI", "typeSMIonly", "typeSPPIonly", "typeDeclarationRHS", + "@8", "@9", "conceptualTable", "row", "entryType", "sequenceItems", + "sequenceItem", "Syntax", "sequenceSyntax", "NamedBits", "NamedBit", + "@10", "objectIdentityClause", "@11", "@12", "@13", "objectTypeClause", + "@14", "@15", "descriptionClause", "trapTypeClause", "@16", "@17", + "VarPart", "VarTypes", "VarType", "DescrPart", "MaxOrPIBAccessPart", + "PibAccessPart", "PibAccess", "SPPIPibReferencesPart", "@18", + "SPPIPibTagPart", "@19", "SPPIUniquePart", "@20", "UniqueTypesPart", + "UniqueTypes", "UniqueType", "SPPIErrorsPart", "@21", "Errors", "Error", + "MaxAccessPart", "@22", "@23", "notificationTypeClause", "@24", "@25", + "@26", "moduleIdentityClause", "@27", "@28", "@29", "@30", "@31", "@32", + "@33", "@34", "SubjectCategoriesPart", "SubjectCategories", + "CategoryIDs", "CategoryID", "ObjectSyntax", "typeTag", + "sequenceObjectSyntax", "valueofObjectSyntax", "SimpleSyntax", "@35", + "@36", "@37", "@38", "@39", "valueofSimpleSyntax", + "sequenceSimpleSyntax", "ApplicationSyntax", "sequenceApplicationSyntax", + "anySubType", "integerSubType", "octetStringSubType", "ranges", "range", + "value", "enumSpec", "enumItems", "enumItem", "@40", "enumNumber", + "Status", "Status_Capabilities", "DisplayPart", "UnitsPart", "Access", + "IndexPart", "@41", "@42", "MibIndex", "@43", "IndexTypes", "IndexType", + "Index", "Entry", "DefValPart", "Value", "BitsValue", "BitNames", + "ObjectName", "NotificationName", "ReferPart", "RevisionPart", + "Revisions", "Revision", "@44", "NotificationObjectsPart", + "ObjectGroupObjectsPart", "Objects", "Object", "NotificationsPart", + "Notifications", "Notification", "Text", "ExtUTCTime", + "objectIdentifier", "@45", "subidentifiers", "subidentifier", + "objectIdentifier_defval", "subidentifiers_defval", + "subidentifier_defval", "objectGroupClause", "@46", "@47", "@48", + "notificationGroupClause", "@49", "@50", "@51", "moduleComplianceClause", + "@52", "@53", "@54", "ComplianceModulePart", "ComplianceModules", + "ComplianceModule", "@55", "ComplianceModuleName", "MandatoryPart", + "MandatoryGroups", "MandatoryGroup", "CompliancePart", "Compliances", + "Compliance", "ComplianceGroup", "@56", "ComplianceObject", "@57", + "SyntaxPart", "WriteSyntaxPart", "WriteSyntax", "AccessPart", + "agentCapabilitiesClause", "@58", "@59", "@60", + "ModulePart_Capabilities", "Modules_Capabilities", "Module_Capabilities", + "@61", "CapabilitiesGroups", "CapabilitiesGroup", + "ModuleName_Capabilities", "VariationPart", "Variations", "Variation", + "@62", "@63", "@64", "@65", "@66", "VariationAccessPart", + "VariationAccess", "CreationPart", "Cells", "Cell", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 123, 125, 59, + 44, 40, 41, 91, 93, 46, 124 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 107, 108, 108, 109, 109, 111, 110, 112, 112, + 113, 113, 114, 114, 115, 116, 117, 116, 118, 118, + 119, 119, 120, 121, 121, 122, 122, 122, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, + 125, 125, 126, 127, 127, 128, 128, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 131, 132, 130, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 135, 134, 136, 136, 138, 137, 140, + 139, 141, 141, 141, 142, 142, 143, 143, 143, 143, + 143, 144, 144, 144, 145, 145, 146, 147, 148, 146, + 146, 149, 150, 151, 152, 152, 153, 154, 154, 155, + 155, 155, 156, 156, 158, 157, 160, 161, 162, 159, + 164, 165, 163, 166, 166, 168, 169, 167, 170, 170, + 171, 171, 172, 173, 173, 174, 174, 174, 175, 176, + 176, 178, 177, 177, 180, 179, 179, 182, 181, 181, + 183, 183, 184, 184, 185, 187, 186, 186, 188, 188, + 189, 191, 190, 192, 190, 194, 195, 196, 193, 198, + 199, 200, 201, 202, 203, 204, 205, 197, 206, 206, + 207, 208, 208, 209, 209, 210, 210, 210, 210, 210, + 210, 211, 211, 212, 212, 213, 214, 215, 214, 216, + 214, 214, 217, 214, 218, 214, 214, 214, 214, 214, + 219, 214, 214, 214, 214, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 221, 221, 221, 221, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 224, 224, 224, 224, 225, 226, 227, + 227, 228, 228, 229, 229, 229, 229, 229, 229, 230, + 231, 231, 233, 232, 234, 234, 235, 236, 237, 237, + 238, 238, 239, 241, 240, 240, 242, 240, 240, 244, + 243, 243, 245, 245, 246, 246, 247, 248, 249, 249, + 250, 250, 251, 251, 252, 252, 253, 254, 255, 255, + 256, 256, 257, 257, 259, 258, 260, 260, 261, 262, + 262, 263, 264, 265, 265, 266, 267, 268, 270, 269, + 271, 271, 272, 272, 272, 272, 272, 273, 274, 274, + 275, 275, 277, 278, 279, 276, 281, 282, 283, 280, + 285, 286, 287, 284, 288, 289, 289, 291, 290, 292, + 292, 292, 293, 293, 294, 294, 295, 296, 296, 297, + 297, 298, 298, 300, 299, 302, 301, 303, 303, 304, + 304, 305, 306, 306, 306, 308, 309, 310, 307, 311, + 311, 312, 312, 314, 313, 315, 315, 316, 317, 317, + 318, 318, 319, 319, 321, 322, 323, 324, 325, 320, + 326, 326, 327, 328, 328, 329, 329, 330 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 0, 1, 2, 0, 10, 3, 0, + 1, 1, 1, 0, 3, 0, 0, 3, 1, 0, + 1, 2, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 0, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 3, 1, 1, 0, 8, 0, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 11, + 1, 3, 1, 4, 1, 3, 2, 1, 4, 1, + 1, 2, 1, 3, 0, 5, 0, 0, 0, 14, + 0, 0, 23, 0, 2, 0, 0, 11, 4, 0, + 1, 3, 1, 2, 0, 1, 1, 0, 2, 1, + 1, 0, 5, 0, 0, 5, 0, 0, 5, 0, + 1, 0, 1, 3, 1, 0, 5, 0, 1, 3, + 4, 0, 3, 0, 3, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 4, 0, + 1, 1, 3, 1, 4, 1, 2, 1, 1, 1, + 1, 5, 5, 1, 1, 1, 1, 0, 3, 0, + 3, 1, 0, 3, 0, 3, 4, 2, 4, 2, + 0, 4, 2, 4, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 2, 3, 3, 2, 2, + 2, 1, 2, 1, 2, 2, 1, 2, 2, 2, + 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, + 2, 1, 1, 1, 1, 1, 0, 3, 6, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, + 1, 3, 0, 5, 1, 1, 1, 1, 2, 0, + 2, 0, 1, 0, 5, 4, 0, 5, 0, 0, + 5, 0, 1, 3, 2, 1, 1, 1, 4, 0, + 1, 3, 1, 0, 1, 3, 1, 1, 2, 0, + 1, 0, 1, 2, 0, 5, 4, 0, 4, 1, + 3, 1, 4, 1, 3, 1, 1, 1, 0, 2, + 1, 2, 1, 3, 1, 4, 6, 1, 1, 2, + 4, 1, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 15, 1, 1, 2, 0, 5, 2, + 1, 0, 4, 0, 1, 3, 1, 1, 0, 1, + 2, 1, 1, 0, 5, 0, 8, 2, 0, 2, + 0, 1, 2, 2, 0, 0, 0, 0, 17, 1, + 0, 1, 2, 0, 8, 1, 3, 1, 2, 1, + 1, 0, 1, 2, 0, 0, 0, 0, 0, 14, + 2, 0, 1, 4, 0, 1, 3, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 3, 52, 0, 2, 4, 6, 1, 5, 9, 338, + 0, 0, 0, 10, 11, 0, 8, 86, 85, 344, + 0, 342, 339, 340, 0, 0, 0, 341, 15, 0, + 343, 16, 13, 345, 0, 0, 19, 0, 12, 0, + 17, 26, 25, 43, 30, 44, 45, 46, 31, 50, + 32, 33, 34, 35, 47, 48, 36, 37, 38, 39, + 40, 41, 49, 42, 51, 0, 18, 20, 0, 23, + 27, 28, 29, 0, 86, 85, 82, 101, 103, 102, + 99, 104, 96, 81, 73, 80, 76, 79, 77, 74, + 98, 78, 97, 75, 100, 105, 0, 0, 55, 68, + 70, 87, 58, 57, 89, 92, 94, 95, 93, 59, + 60, 61, 62, 63, 65, 66, 64, 67, 346, 14, + 21, 0, 0, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 56, 0, 0, 0, 0, 22, 24, + 127, 131, 176, 180, 353, 357, 361, 396, 71, 0, + 136, 0, 0, 0, 327, 189, 0, 0, 0, 0, + 0, 0, 0, 112, 0, 83, 266, 266, 241, 206, + 211, 250, 266, 0, 0, 246, 0, 107, 266, 243, + 252, 0, 0, 110, 90, 197, 198, 199, 106, 117, + 0, 195, 200, 0, 0, 0, 0, 0, 181, 0, + 0, 0, 0, 0, 0, 72, 0, 338, 0, 0, + 217, 222, 0, 0, 0, 239, 240, 264, 265, 248, + 249, 0, 242, 0, 0, 0, 251, 238, 263, 266, + 219, 0, 247, 0, 0, 289, 245, 244, 253, 0, + 0, 0, 52, 196, 286, 0, 291, 338, 0, 0, + 0, 338, 0, 338, 0, 0, 336, 0, 338, 139, + 274, 273, 276, 275, 278, 277, 0, 0, 269, 271, + 215, 124, 0, 122, 84, 282, 0, 280, 208, 210, + 213, 224, 0, 112, 111, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 147, 331, 0, 329, 316, + 0, 193, 0, 190, 191, 0, 0, 0, 335, 0, + 333, 317, 0, 0, 0, 0, 0, 144, 0, 267, + 0, 0, 0, 118, 0, 0, 279, 0, 221, 266, + 120, 266, 266, 266, 266, 266, 261, 266, 0, 0, + 259, 266, 266, 262, 116, 119, 203, 204, 113, 0, + 288, 0, 0, 0, 218, 223, 216, 128, 290, 173, + 171, 150, 149, 153, 146, 0, 145, 326, 338, 0, + 0, 188, 0, 337, 182, 328, 0, 332, 338, 0, + 362, 287, 0, 88, 338, 0, 319, 0, 270, 272, + 0, 123, 0, 281, 121, 255, 260, 256, 234, 235, + 254, 266, 266, 258, 257, 115, 0, 201, 202, 319, + 0, 0, 151, 156, 292, 148, 330, 177, 0, 192, + 0, 354, 334, 358, 319, 0, 0, 140, 142, 143, + 0, 0, 0, 0, 284, 285, 0, 237, 236, 0, + 0, 174, 172, 0, 154, 0, 319, 194, 0, 319, + 319, 0, 397, 138, 338, 318, 0, 268, 125, 283, + 108, 0, 338, 0, 0, 0, 183, 0, 0, 371, + 0, 364, 365, 319, 141, 137, 319, 338, 0, 307, + 338, 133, 0, 0, 0, 0, 370, 367, 0, 366, + 400, 0, 0, 152, 0, 0, 167, 338, 0, 338, + 338, 369, 373, 338, 0, 0, 399, 401, 0, 129, + 155, 134, 165, 319, 0, 184, 0, 0, 0, 378, + 0, 338, 403, 0, 402, 109, 0, 298, 178, 0, + 355, 359, 338, 383, 385, 368, 377, 379, 381, 382, + 363, 408, 0, 338, 0, 0, 296, 293, 301, 0, + 376, 0, 374, 338, 338, 380, 0, 0, 0, 0, + 168, 338, 0, 0, 299, 159, 185, 372, 338, 0, + 388, 338, 398, 0, 166, 0, 0, 338, 338, 0, + 157, 309, 321, 375, 0, 0, 390, 407, 0, 405, + 0, 169, 295, 0, 0, 338, 0, 0, 0, 0, + 186, 320, 322, 384, 387, 0, 394, 411, 338, 170, + 297, 294, 338, 0, 302, 305, 306, 338, 0, 0, + 324, 0, 323, 391, 389, 0, 0, 0, 338, 404, + 410, 412, 406, 304, 300, 338, 0, 160, 162, 164, + 231, 225, 226, 227, 228, 229, 230, 232, 313, 310, + 205, 0, 338, 0, 0, 392, 393, 0, 414, 413, + 303, 158, 338, 314, 351, 0, 312, 0, 347, 348, + 308, 0, 0, 338, 386, 388, 163, 0, 311, 0, + 233, 0, 349, 132, 325, 0, 415, 0, 315, 187, + 390, 350, 416, 421, 0, 424, 422, 420, 0, 417, + 338, 309, 427, 0, 425, 418, 423, 338, 0, 426, + 0, 419 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 2, 3, 4, 8, 10, 15, 37, 38, 32, + 35, 65, 66, 67, 68, 69, 70, 71, 72, 182, + 96, 97, 98, 99, 134, 160, 100, 183, 213, 21, + 102, 135, 103, 137, 104, 105, 106, 107, 108, 184, + 235, 476, 185, 186, 187, 286, 287, 188, 344, 272, + 273, 322, 109, 124, 152, 409, 110, 125, 153, 496, + 111, 136, 162, 317, 426, 427, 386, 363, 364, 365, + 413, 443, 445, 463, 581, 596, 636, 637, 638, 513, + 526, 559, 560, 366, 411, 410, 112, 126, 154, 446, + 113, 127, 155, 250, 420, 483, 529, 582, 621, 198, + 302, 303, 304, 189, 190, 345, 649, 191, 223, 224, + 225, 209, 282, 650, 346, 192, 347, 215, 228, 217, + 267, 268, 269, 218, 276, 277, 325, 436, 245, 382, + 289, 295, 415, 548, 563, 562, 565, 579, 613, 614, + 615, 478, 598, 651, 665, 666, 479, 308, 431, 600, + 601, 602, 653, 196, 200, 297, 298, 202, 309, 310, + 257, 374, 299, 12, 22, 23, 667, 668, 669, 114, + 128, 156, 449, 115, 129, 157, 450, 116, 130, 158, + 424, 470, 471, 472, 502, 487, 519, 551, 552, 535, + 536, 537, 538, 553, 539, 554, 586, 606, 624, 627, + 117, 131, 159, 473, 505, 506, 507, 542, 588, 589, + 522, 629, 630, 631, 675, 690, 693, 701, 708, 695, + 697, 699, 703, 704 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -461 +static const yytype_int16 yypact[] = +{ + 19, -461, 36, 19, -461, -461, -461, -461, -58, -461, + -5, -31, 54, -461, -461, 78, -461, -1, 9, -461, + 38, -461, 54, -461, 107, 154, 160, -461, 138, 88, + 90, -461, 153, -461, 186, 95, 561, 350, -461, 93, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, 97, 561, -461, -23, -461, + -461, -461, -461, 99, 195, 70, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, 171, 496, -461, -461, + -461, 115, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, 19, 561, -461, 140, 141, 146, 151, 149, 155, + 158, 191, -461, -461, 166, 156, 129, 213, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, 183, + -461, 202, 143, 134, 157, 142, 167, 173, 152, 161, + 204, 227, 205, 2, 145, -461, -47, -47, 150, -18, + 159, 150, -47, 203, 162, 169, -49, -461, -47, 150, + 150, -2, 148, -461, -461, -461, -461, -461, -461, -461, + 52, -461, -461, 244, 233, 165, 174, 170, -461, 176, + 178, 177, 179, 244, 242, -461, 184, -461, 35, 185, + -461, -461, 257, 187, 265, -461, -461, -461, -461, -461, + -461, 175, -461, 150, 185, 150, -461, -461, -461, -47, + 188, 193, -461, 270, 277, 256, -461, -461, -461, 279, + 283, 286, 5, -461, -461, 268, 207, -461, 244, 292, + 254, -461, 244, -461, 244, 275, -461, 223, -461, 210, + -461, -461, -461, -461, -461, -461, 206, 3, -461, 303, + -461, -461, 15, -461, -461, -461, 37, -461, -461, -461, + -461, -461, 169, -461, -461, 441, 41, -461, 242, 229, + 208, 209, -47, 242, 242, 13, -461, 44, -461, -461, + 287, 214, 212, 217, -461, 305, 48, 293, -461, 51, + -461, -461, 294, 242, 316, 225, 230, 299, 175, -461, + 175, 175, 228, -461, 257, 231, -461, 265, -461, -47, + -461, -47, -47, -47, -47, -47, -461, -47, 295, 247, + -461, -47, -47, -461, -461, -461, -461, -461, -461, 277, + -461, 244, 296, 297, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 258, -461, 329, -461, -461, -461, 242, + 330, -461, 292, -461, -461, -461, 242, -461, -461, 242, + -461, -461, 311, -461, -461, 242, 263, 6, -461, -461, + 333, -461, 126, -461, -461, -461, -461, -461, -461, -461, + -461, -47, -47, -461, -461, -461, 314, -461, -461, 263, + 329, 329, -461, 269, -461, -461, -461, -461, 241, -461, + 278, -461, -461, -461, 263, 242, 55, -461, -461, -461, + 242, 341, 245, 246, -461, -461, 248, -461, -461, 242, + 342, -461, -461, 255, -461, 273, 263, -461, 242, 263, + 263, 302, -461, -461, -461, -461, 351, -461, -461, -461, + -461, 260, -461, 262, 244, 356, -461, 357, 358, 359, + 363, 302, -461, 263, -461, -461, 263, -461, 272, -461, + -461, 336, 271, 354, 280, 281, 114, -461, 284, -461, + 300, 304, 282, -461, 288, 242, 334, -461, 242, -461, + -461, -461, 335, -461, 385, 387, 300, -461, 233, -461, + -461, -461, -461, 263, 301, -461, 307, 317, 312, -3, + 320, 352, -461, 322, -461, -461, 323, 20, -461, 370, + -461, -461, -461, -461, -461, -461, -3, -461, -461, -461, + -461, -461, 360, -461, 392, 324, -461, -461, 361, 242, + -461, 58, -461, -461, -461, -461, 325, 326, 313, 59, + -461, -461, 331, 332, -461, 338, -461, -461, -461, 374, + 339, -461, -461, 420, -461, 392, 340, -461, -461, 337, + -461, 404, 355, -461, 242, 233, 343, -461, 64, -461, + 345, -461, -461, 346, 347, 393, 353, 362, 429, 305, + -461, 355, -461, -461, -461, 233, -13, 348, -461, -461, + -461, -461, -461, 67, -461, -461, -461, 364, 63, 366, + -461, 436, -461, -461, -461, 329, 329, 421, -461, -461, + 348, -461, -461, -461, -461, 393, 368, 349, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, 172, -461, + -461, 369, -461, 424, 372, -461, -461, 242, -461, -461, + -461, -461, -461, 371, -461, 373, 375, 376, 182, -461, + -461, 380, 242, -461, -461, 339, -461, 445, -461, 447, + -461, 371, -461, -461, -461, 381, -461, 378, -461, -461, + 343, -461, -461, 442, 449, 435, -461, -461, 384, -461, + -461, 404, -461, 77, -461, -461, -461, -461, 431, -461, + 242, -461 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -461, -461, -461, 467, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 407, -461, 367, -461, -461, -461, 29, + -461, -461, 386, -461, -461, -461, -461, -461, -461, -4, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 249, -461, -461, 144, -192, -461, -461, + 168, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, 42, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -167, -461, + -461, -461, -77, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, 127, -461, -461, -461, -461, 319, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -161, -145, -156, + 189, 190, 192, -194, -461, 194, -461, -461, -199, -461, + -461, -461, -398, -461, -461, -461, -461, -461, -461, -132, + -108, -460, -195, -461, -461, -461, -246, 17, -384, -461, + -461, -86, -461, -461, -461, 266, 180, -461, -461, 196, + -285, -83, -9, -461, -461, 500, -461, -461, -150, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 53, -461, -461, -461, -461, -42, -461, + -461, -8, -461, -461, -461, -461, -146, -160, -461, -461, + -461, -461, -461, -461, -461, -461, 30, -461, -461, -73, + -461, -461, -461, -93, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -169 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -410 +static const yytype_int16 yytable[] = +{ + 11, 296, 246, 350, 255, 296, 219, 211, 357, 358, + 121, 227, 441, 442, 239, 270, 233, 236, 210, 232, + 13, 216, 220, 222, 1, 440, 226, 359, 380, 5, + 279, 533, 5, 101, 237, 238, 6, 545, 625, 9, + 451, 20, 260, 261, 262, 263, 264, 265, 234, 300, + 214, 20, 546, 307, 208, 312, 534, 242, 626, 17, + 18, 19, 465, 360, 14, 467, 468, 16, 281, 640, + 641, 642, 643, 644, 645, 646, 647, 122, 278, -209, + 280, 361, 24, -207, 417, -395, 211, 362, 240, 490, + 547, 421, 491, 101, 423, 169, 170, 210, 356, -214, + 429, 576, -214, 208, -52, 319, 208, -52, 432, 320, + 25, 173, 320, 323, 266, 324, 174, 593, 594, -338, + -338, -338, 296, -360, -179, 28, 328, -356, -175, 527, + -352, -126, -130, 434, 435, 326, 355, 327, 428, 348, + 452, 349, 367, 26, 368, 455, 375, 354, 368, 377, + 138, 378, 406, 453, 460, 454, 567, 574, 568, 575, + 648, 29, 607, 466, 608, 634, 30, 635, 394, 31, + 395, 396, 397, 398, 399, 706, 400, 707, 663, 664, + 403, 404, 260, 261, 262, 263, 264, 265, 681, 664, + 33, 34, 36, 39, 40, 118, 119, 123, 259, -91, + 132, 140, -135, 141, 142, 143, 147, 163, 428, 144, + 511, 146, 145, 515, 148, 149, 150, 151, 194, 161, + 195, 164, 165, 193, 197, 166, 167, 655, 656, 201, + 199, 206, 203, 205, 494, 207, 204, 168, 163, 229, + 437, 438, 212, 230, 311, 169, 170, 171, 172, 315, + 244, 221, 164, 241, 248, 256, 166, 167, 252, 254, + -212, 173, 247, 271, 566, 481, 174, 249, 168, 175, + 231, 275, 266, 251, 253, 283, 169, 170, 171, 172, + 176, 258, 214, 285, 288, 274, 290, 177, 178, -220, + 291, 292, 173, 179, 180, 293, 294, 174, 301, 603, + 175, 305, 313, 314, 316, 181, 321, 318, 570, 351, + 371, 176, 352, 353, 369, 370, 525, 372, 373, 178, + 376, 379, 381, 383, 179, 180, 385, 384, 402, 390, + 412, 401, 392, 407, 408, 414, 181, 418, 425, 430, + 433, 439, 444, 447, 448, 456, 461, 457, 458, 616, + 459, 73, 462, 464, 469, 74, 75, 477, 475, 480, + 482, 484, 485, 495, 486, 76, 616, 488, 497, 311, + 493, 639, 674, 77, 78, 498, 512, 499, 500, -54, + 509, 503, 658, 504, 518, 79, 510, 684, 508, 616, + 521, 523, -409, 604, 80, 81, 82, 549, 558, 528, + 556, 584, 564, 83, 84, 530, 671, 85, 86, 532, + 87, 88, 89, 623, 573, 531, 639, 90, 540, 543, + 544, 561, 571, 585, 572, 711, 580, 590, 577, 578, + 597, 612, 599, 619, 595, 91, 92, 93, 592, 605, + 654, 94, 95, 628, 610, 611, 329, 609, 657, 662, + 617, 672, 687, 688, 702, 696, 694, 698, 710, 618, + 330, 702, -161, 652, 331, 332, 661, 670, 492, 673, + 7, 678, 677, 120, 680, 679, 333, 501, 683, 689, + 691, 700, 284, 133, 334, 335, 336, 337, 311, 139, + 516, 517, 391, 405, 520, 676, 474, 73, 591, 419, + 338, 74, 75, 660, 633, 339, 705, 387, 340, 243, + 388, 76, 541, 389, 514, 622, 620, 306, 682, 77, + 78, 393, 27, 550, 489, -53, 583, 341, 555, 686, + 692, 79, 342, 343, 557, 632, 524, 659, 709, 0, + 80, 81, 82, 0, 569, 0, 0, 0, 416, 83, + 84, 0, 0, 85, 86, 0, 87, 88, 89, 550, + 0, 0, 587, 90, 0, 0, 41, 42, 0, 0, + 0, 0, 0, 0, 422, 0, 43, 0, 0, 0, + 44, 91, 92, 93, 45, 46, 0, 94, 95, 0, + 0, 0, 0, 0, 0, 0, 47, 0, 0, 587, + 0, 0, 0, 0, 0, 48, 49, 50, 0, 0, + 51, 0, 0, 0, 52, 53, 0, 0, 54, 55, + 0, 56, 57, 58, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 61, 62, 0, + 0, 0, 63, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 685 +}; + +static const yytype_int16 yycheck[] = +{ + 9, 247, 194, 288, 203, 251, 167, 163, 293, 294, + 33, 172, 410, 411, 16, 209, 65, 178, 163, 175, + 25, 166, 167, 168, 5, 409, 171, 14, 313, 0, + 224, 34, 3, 37, 179, 180, 0, 17, 51, 97, + 424, 12, 7, 8, 9, 10, 11, 12, 97, 248, + 97, 22, 32, 252, 101, 254, 59, 5, 71, 5, + 6, 7, 446, 50, 69, 449, 450, 98, 229, 6, + 7, 8, 9, 10, 11, 12, 13, 100, 223, 97, + 225, 68, 4, 101, 369, 15, 242, 74, 90, 473, + 70, 376, 476, 97, 379, 43, 44, 242, 292, 97, + 385, 561, 97, 101, 105, 102, 101, 105, 102, 106, + 101, 59, 106, 98, 79, 100, 64, 577, 578, 5, + 6, 7, 368, 53, 54, 18, 282, 57, 58, 513, + 60, 61, 62, 7, 8, 98, 292, 100, 384, 98, + 425, 100, 98, 105, 100, 430, 98, 292, 100, 98, + 121, 100, 351, 98, 439, 100, 98, 98, 100, 100, + 97, 7, 98, 448, 100, 98, 6, 100, 329, 31, + 331, 332, 333, 334, 335, 98, 337, 100, 6, 7, + 341, 342, 7, 8, 9, 10, 11, 12, 6, 7, + 102, 101, 39, 7, 99, 102, 99, 98, 207, 4, + 29, 61, 87, 62, 58, 54, 15, 5, 454, 60, + 495, 53, 57, 498, 48, 59, 87, 4, 84, 36, + 63, 19, 20, 80, 82, 23, 24, 625, 626, 56, + 63, 4, 80, 29, 480, 30, 75, 35, 5, 36, + 401, 402, 97, 81, 253, 43, 44, 45, 46, 258, + 6, 101, 19, 105, 80, 13, 23, 24, 80, 80, + 101, 59, 97, 6, 549, 464, 64, 97, 35, 67, + 101, 6, 79, 97, 97, 5, 43, 44, 45, 46, + 78, 97, 97, 6, 28, 98, 7, 85, 86, 101, + 7, 5, 59, 91, 92, 27, 89, 64, 6, 584, + 67, 47, 27, 80, 94, 103, 3, 101, 554, 80, + 98, 78, 104, 104, 27, 101, 508, 100, 13, 86, + 27, 27, 6, 98, 91, 92, 27, 97, 81, 101, + 72, 36, 101, 37, 37, 6, 103, 7, 27, 76, + 7, 27, 73, 102, 66, 4, 4, 102, 102, 595, + 102, 1, 97, 80, 52, 5, 6, 97, 7, 97, + 4, 4, 4, 27, 5, 15, 612, 4, 97, 378, + 98, 617, 657, 23, 24, 21, 42, 97, 97, 29, + 98, 97, 628, 83, 49, 35, 98, 672, 84, 635, + 5, 4, 40, 585, 44, 45, 46, 27, 6, 98, + 40, 27, 41, 53, 54, 98, 652, 57, 58, 97, + 60, 61, 62, 605, 101, 98, 662, 67, 98, 97, + 97, 97, 97, 84, 98, 710, 88, 7, 97, 97, + 26, 38, 77, 4, 97, 85, 86, 87, 98, 96, + 4, 91, 92, 95, 98, 98, 5, 102, 27, 100, + 97, 27, 7, 6, 700, 6, 14, 22, 27, 97, + 19, 707, 98, 97, 23, 24, 98, 98, 477, 97, + 3, 98, 101, 66, 98, 100, 35, 486, 98, 98, + 102, 97, 233, 97, 43, 44, 45, 46, 497, 122, + 499, 500, 324, 349, 503, 662, 454, 1, 575, 372, + 59, 5, 6, 635, 612, 64, 701, 318, 67, 190, + 320, 15, 521, 321, 497, 601, 599, 251, 668, 23, + 24, 327, 22, 532, 471, 29, 568, 86, 536, 675, + 690, 35, 91, 92, 543, 608, 506, 630, 707, -1, + 44, 45, 46, -1, 553, -1, -1, -1, 368, 53, + 54, -1, -1, 57, 58, -1, 60, 61, 62, 568, + -1, -1, 571, 67, -1, -1, 5, 6, -1, -1, + -1, -1, -1, -1, 378, -1, 15, -1, -1, -1, + 19, 85, 86, 87, 23, 24, -1, 91, 92, -1, + -1, -1, -1, -1, -1, -1, 35, -1, -1, 608, + -1, -1, -1, -1, -1, 44, 45, 46, -1, -1, + 49, -1, -1, -1, 53, 54, -1, -1, 57, 58, + -1, 60, 61, 62, -1, -1, -1, -1, 67, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, + -1, -1, 91, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 673 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 5, 108, 109, 110, 126, 0, 110, 111, 97, + 112, 269, 270, 25, 69, 113, 98, 5, 6, 7, + 126, 136, 271, 272, 4, 101, 105, 272, 18, 7, + 6, 31, 116, 102, 101, 117, 39, 114, 115, 7, + 99, 5, 6, 15, 19, 23, 24, 35, 44, 45, + 46, 49, 53, 54, 57, 58, 60, 61, 62, 67, + 85, 86, 87, 91, 92, 118, 119, 120, 121, 122, + 123, 124, 125, 1, 5, 6, 15, 23, 24, 35, + 44, 45, 46, 53, 54, 57, 58, 60, 61, 62, + 67, 85, 86, 87, 91, 92, 127, 128, 129, 130, + 133, 136, 137, 139, 141, 142, 143, 144, 145, 159, + 163, 167, 193, 197, 276, 280, 284, 307, 102, 99, + 120, 33, 100, 98, 160, 164, 194, 198, 277, 281, + 285, 308, 29, 129, 131, 138, 168, 140, 126, 122, + 61, 62, 58, 54, 60, 57, 53, 15, 48, 59, + 87, 4, 161, 165, 195, 199, 278, 282, 286, 309, + 132, 36, 169, 5, 19, 20, 23, 24, 35, 43, + 44, 45, 46, 59, 64, 67, 78, 85, 86, 91, + 92, 103, 126, 134, 146, 149, 150, 151, 154, 210, + 211, 214, 222, 80, 84, 63, 260, 82, 206, 63, + 261, 56, 264, 80, 75, 29, 4, 30, 101, 218, + 225, 226, 97, 135, 97, 224, 225, 226, 230, 224, + 225, 101, 225, 215, 216, 217, 225, 224, 225, 36, + 81, 101, 226, 65, 97, 147, 224, 225, 225, 16, + 90, 105, 5, 214, 6, 235, 154, 97, 80, 97, + 200, 97, 80, 97, 80, 235, 13, 267, 97, 269, + 7, 8, 9, 10, 11, 12, 79, 227, 228, 229, + 230, 6, 156, 157, 98, 6, 231, 232, 225, 230, + 225, 224, 219, 5, 150, 6, 152, 153, 28, 237, + 7, 7, 5, 27, 89, 238, 253, 262, 263, 269, + 235, 6, 207, 208, 209, 47, 262, 235, 254, 265, + 266, 269, 235, 27, 80, 269, 94, 170, 101, 102, + 106, 3, 158, 98, 100, 233, 98, 100, 226, 5, + 19, 23, 24, 35, 43, 44, 45, 46, 59, 64, + 67, 86, 91, 92, 155, 212, 221, 223, 98, 100, + 267, 80, 104, 104, 225, 226, 230, 267, 267, 14, + 50, 68, 74, 174, 175, 176, 190, 98, 100, 27, + 101, 98, 100, 13, 268, 98, 27, 98, 100, 27, + 267, 6, 236, 98, 97, 27, 173, 227, 228, 229, + 101, 157, 101, 232, 224, 224, 224, 224, 224, 224, + 224, 36, 81, 224, 224, 153, 235, 37, 37, 162, + 192, 191, 72, 177, 6, 239, 263, 267, 7, 209, + 201, 267, 266, 267, 287, 27, 171, 172, 253, 267, + 76, 255, 102, 7, 7, 8, 234, 224, 224, 27, + 255, 239, 239, 178, 73, 179, 196, 102, 66, 279, + 283, 255, 267, 98, 100, 267, 4, 102, 102, 102, + 267, 4, 97, 180, 80, 255, 267, 255, 255, 52, + 288, 289, 290, 310, 172, 7, 148, 97, 248, 253, + 97, 235, 4, 202, 4, 4, 5, 292, 4, 290, + 255, 255, 269, 98, 253, 27, 166, 97, 21, 97, + 97, 269, 291, 97, 83, 311, 312, 313, 84, 98, + 98, 267, 42, 186, 254, 267, 269, 269, 49, 293, + 269, 5, 317, 4, 313, 154, 187, 255, 98, 203, + 98, 98, 97, 34, 59, 296, 297, 298, 299, 301, + 98, 269, 314, 97, 97, 17, 32, 70, 240, 27, + 269, 294, 295, 300, 302, 298, 40, 269, 6, 188, + 189, 97, 242, 241, 41, 243, 267, 98, 100, 269, + 253, 97, 98, 101, 98, 100, 248, 97, 97, 244, + 88, 181, 204, 295, 27, 84, 303, 269, 315, 316, + 7, 189, 98, 248, 248, 97, 182, 26, 249, 77, + 256, 257, 258, 267, 154, 96, 304, 98, 100, 102, + 98, 98, 38, 245, 246, 247, 253, 97, 97, 4, + 268, 205, 258, 154, 305, 51, 71, 306, 95, 318, + 319, 320, 316, 247, 98, 100, 183, 184, 185, 253, + 6, 7, 8, 9, 10, 11, 12, 13, 97, 213, + 220, 250, 97, 259, 4, 239, 239, 27, 253, 320, + 246, 98, 100, 6, 7, 251, 252, 273, 274, 275, + 98, 253, 27, 97, 267, 321, 185, 101, 98, 100, + 98, 6, 275, 98, 267, 269, 303, 7, 6, 98, + 322, 102, 304, 323, 14, 326, 6, 327, 22, 328, + 97, 324, 253, 329, 330, 249, 98, 100, 325, 330, + 27, 267 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 1587 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 3: +#line 1591 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 4: +#line 1597 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 5: +#line 1599 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 6: +#line 1607 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + thisParserPtr->modulePtr = findModuleByName((yyvsp[(1) - (1)].id)); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule((yyvsp[(1) - (1)].id), + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers = 0; + thisParserPtr->modulePtr-> + numStatements = 0; + thisParserPtr->modulePtr-> + numModuleIdentities = 0; + if (!strcmp((yyvsp[(1) - (1)].id), "SNMPv2-SMI")) { + /* + * SNMPv2-SMI is an SMIv2 module + * that cannot be identified by + * importing from SNMPv2-SMI. + */ + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + (yyvsp[(1) - (1)].id)); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + ;} + break; + + case 7: +#line 1651 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + checkModuleName(thisParserPtr, thisModulePtr); + checkModuleIdentity(thisParserPtr, thisModulePtr); + checkObjects(thisParserPtr, thisModulePtr); + checkTypes(thisParserPtr, thisModulePtr); + checkDefvals(thisParserPtr, thisModulePtr); + checkImportsUsage(thisParserPtr, thisModulePtr); + smiCheckTypeUsage(thisParserPtr, thisModulePtr); + + thisParserPtr->capabilitiesModulePtr = NULL; + + (yyval.err) = 0; + ;} + break; + + case 8: +#line 1669 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 9: +#line 1671 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 10: +#line 1675 "parser-smi.y" + { ;} + break; + + case 11: +#line 1677 "parser-smi.y" + { + thisModulePtr->export.language = SMI_LANGUAGE_SPPI; + ;} + break; + + case 12: +#line 1686 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 13: +#line 1688 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 14: +#line 1692 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if ((thisModulePtr->export.language != SMI_LANGUAGE_SMIV2) && + (thisModulePtr->export.language != SMI_LANGUAGE_SPPI)) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + + (yyval.err) = 0; + ;} + break; + + case 15: +#line 1706 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 16: +#line 1708 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == + SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "EXPORTS"); + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if (strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI")) { + smiPrintError(thisParserPtr, ERR_EXPORTS); + } + ;} + break; + + case 17: +#line 1725 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 18: +#line 1729 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 19: +#line 1731 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 20: +#line 1736 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 21: +#line 1738 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 22: +#line 1744 "parser-smi.y" + { + Import *importPtr; + Module *modulePtr; + + /* + * Recursively call the parser to suffer + * the IMPORTS, if the module is not yet + * loaded. + */ + modulePtr = findModuleByName((yyvsp[(3) - (3)].id)); + if (!modulePtr) { + modulePtr = loadModule((yyvsp[(3) - (3)].id), thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + + if (modulePtr && !strcmp((yyvsp[(3) - (3)].id), "SNMPv2-SMI")) { + /* + * A module that imports a macro or + * type definition from SNMPv2-SMI + * seems to be SMIv2 style - but only if + * it is not SPPI yet. + */ + if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + for (importPtr = + thisModulePtr->firstImportPtr; + importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.module, + (yyvsp[(3) - (3)].id))) && + ((importPtr->kind == KIND_MACRO) || + (importPtr->kind == KIND_TYPE))) { + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } + } + } + + smiFree((yyvsp[(3) - (3)].id)); + ;} + break; + + case 23: +#line 1787 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 24: +#line 1790 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 25: +#line 1797 "parser-smi.y" + { + addImport((yyvsp[(1) - (1)].id), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 26: +#line 1803 "parser-smi.y" + { + addImport((yyvsp[(1) - (1)].id), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 27: +#line 1809 "parser-smi.y" + { + addImport(smiStrdup((yyvsp[(1) - (1)].id)), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 28: +#line 1825 "parser-smi.y" + { + /* + * There are PIBs that import e.g. Counter64 - so + * don't complain here about SMI keywords. + */ + /* if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1);*/ + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 29: +#line 1835 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_TYPE_IN_MIB, (yyvsp[(1) - (1)].id)); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 52: +#line 1869 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_MODULENAME_32, ERR_MODULENAME_64); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 53: +#line 1881 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 54: +#line 1883 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 55: +#line 1888 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 56: +#line 1890 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 57: +#line 1894 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 58: +#line 1899 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 59: +#line 1904 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 60: +#line 1909 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 61: +#line 1914 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 62: +#line 1919 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 63: +#line 1924 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 64: +#line 1929 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 65: +#line 1934 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 66: +#line 1939 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 67: +#line 1944 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 68: +#line 1949 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 69: +#line 1954 "parser-smi.y" + { + smiPrintError(thisParserPtr, + ERR_FLUSH_DECLARATION); + yyerrok; + (yyval.err) = 1; + ;} + break; + + case 70: +#line 1968 "parser-smi.y" + { + Macro *macroPtr; + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MACRO; + + macroPtr = addMacro(smiStrdup((yyvsp[(1) - (1)].id)), + 0, thisParserPtr); + setMacroLine(macroPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + ;} + break; + + case 71: +#line 1980 "parser-smi.y" + { + /* + * ASN.1 macros are known to be in these + * modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1215") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI-TC")) { + smiPrintError(thisParserPtr, ERR_MACRO); + } + ;} + break; + + case 72: +#line 2008 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 73: +#line 2013 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 74: +#line 2014 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 75: +#line 2015 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 76: +#line 2016 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 77: +#line 2017 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 78: +#line 2018 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 79: +#line 2019 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 80: +#line 2020 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 81: +#line 2021 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 82: +#line 2022 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 83: +#line 2026 "parser-smi.y" + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_CHOICE); + } + ;} + break; + + case 84: +#line 2046 "parser-smi.y" + { + (yyval.typePtr) = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + ;} + break; + + case 85: +#line 2056 "parser-smi.y" + { + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 86: +#line 2061 "parser-smi.y" + { + smiPrintError (thisParserPtr, + ERR_BAD_LOWER_IDENTIFIER_CASE, + (yyvsp[(1) - (1)].id)); + /* xxx + if ((thisParserPtr->flags & SMI_FLAG_BE_LAX) == 0) { + YYERROR; + } + */ + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 87: +#line 2076 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_VALUEASSIGNMENT; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-') && + (strcmp((yyvsp[(1) - (1)].id), "mib-2") || + strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + smiPrintError(thisParserPtr, + ERR_OIDNAME_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 88: +#line 2097 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(7) - (8)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (8)].id), &objectPtr); + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (8)].id), thisParserPtr); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_VALUEASSIGNMENT); + (yyval.err) = 0; + ;} + break; + + case 89: +#line 2116 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TYPEASSIGNMENT; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_TYPENAME_32, ERR_TYPENAME_64); + ;} + break; + + case 90: +#line 2124 "parser-smi.y" + { + Type *typePtr; + + if (strlen((yyvsp[(1) - (4)].id))) { + if ((yyvsp[(4) - (4)].typePtr)->export.basetype != SMI_BASETYPE_UNKNOWN) { + smiCheckTypeName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (4)].id), + thisParserPtr->firstStatementLine); + } + setTypeLine((yyvsp[(4) - (4)].typePtr), thisParserPtr->firstStatementLine, + thisParserPtr); + setTypeName((yyvsp[(4) - (4)].typePtr), (yyvsp[(1) - (4)].id)); + (yyval.err) = 0; + } else { + (yyval.err) = 0; + } + + /* + * If we are in an SMI module, some type + * definitions derived from ASN.1 `INTEGER' + * must be modified to libsmi basetypes. + */ + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Counter32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Gauge32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Counter64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned64Ptr); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "RFC1155-SMI") || + !strcmp(thisModulePtr->export.name, "RFC1065-SMI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Counter")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Gauge")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "NetworkAddress")) { + setTypeName((yyvsp[(4) - (4)].typePtr), smiStrdup("NetworkAddress")); + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_OCTETSTRING; + setTypeParent((yyvsp[(4) - (4)].typePtr), findTypeByModuleAndName( + thisModulePtr, + "IpAddress")); + } else if (!strcmp((yyvsp[(1) - (4)].id), "IpAddress")) { + typePtr = findTypeByModuleAndName( + thisModulePtr, "NetworkAddress"); + if (typePtr) + setTypeParent(typePtr, (yyvsp[(4) - (4)].typePtr)); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned64Ptr); + } else if (!strcmp((yyvsp[(1) - (4)].id), "Integer64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_INTEGER64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeInteger64Ptr); + } + } + ;} + break; + + case 91: +#line 2282 "parser-smi.y" + { + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 92: +#line 2286 "parser-smi.y" + { + (yyval.id) = smiStrdup((yyvsp[(1) - (1)].id)); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_SMI_OR_SPPI, (yyvsp[(1) - (1)].id)); + } + ;} + break; + + case 93: +#line 2310 "parser-smi.y" + { + (yyval.id) = smiStrdup((yyvsp[(1) - (1)].id)); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if ((strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) && + (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI)) + smiPrintError(thisParserPtr, ERR_TYPE_SPPI, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 95: +#line 2325 "parser-smi.y" + { + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName((yyvsp[(1) - (1)].id), thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, (yyvsp[(1) - (1)].id)); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 106: +#line 2350 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].typePtr)->export.name) { + /* + * If we found an already defined type, + * we have to inherit a new type structure. + * (Otherwise the `Syntax' rule created + * a new type for us.) + */ + (yyval.typePtr) = duplicateType((yyvsp[(1) - (1)].typePtr), 0, thisParserPtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + } else { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + } + ;} + break; + + case 107: +#line 2366 "parser-smi.y" + { + Import *importPtr; + + thisParserPtr->currentDecl = SMI_DECL_TEXTUALCONVENTION; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-TC")) { + importPtr = + findImportByName("TEXTUAL-CONVENTION", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "SNMPv2-TC"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "COPS-PR-SPPI"); + } + } + ;} + break; + + case 108: +#line 2397 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(7) - (7)].text)); + ;} + break; + + case 109: +#line 2402 "parser-smi.y" + { + if (((yyvsp[(11) - (11)].typePtr)) && !((yyvsp[(11) - (11)].typePtr)->export.name)) { + /* + * If the Type we found has just been + * defined, we don't have to allocate + * a new one. + */ + (yyval.typePtr) = (yyvsp[(11) - (11)].typePtr); + } else { + if (!((yyvsp[(11) - (11)].typePtr))) + smiPrintError(thisParserPtr, ERR_INTERNAL); + /* + * Otherwise, we have to allocate a + * new Type struct, inherited from $10. + */ + (yyval.typePtr) = duplicateType((yyvsp[(11) - (11)].typePtr), 0, thisParserPtr); + } + setTypeDescription((yyval.typePtr), (yyvsp[(7) - (11)].text), thisParserPtr); + if ((yyvsp[(9) - (11)].text)) { + setTypeReference((yyval.typePtr), (yyvsp[(9) - (11)].text), thisParserPtr); + } + setTypeStatus((yyval.typePtr), (yyvsp[(5) - (11)].status)); + if ((yyvsp[(3) - (11)].text)) { + if (smiCheckFormat(thisParserPtr, + (yyval.typePtr)->export.basetype, (yyvsp[(3) - (11)].text), + thisParserPtr->firstStatementLine)) { + setTypeFormat((yyval.typePtr), (yyvsp[(3) - (11)].text)); + } + } + setTypeDecl((yyval.typePtr), SMI_DECL_TEXTUALCONVENTION); + ;} + break; + + case 110: +#line 2434 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + ;} + break; + + case 111: +#line 2442 "parser-smi.y" + { + if ((yyvsp[(3) - (3)].typePtr)) { + (yyval.typePtr) = addType(NULL, + SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeDecl((yyval.typePtr), SMI_DECL_IMPL_SEQUENCEOF); + setTypeParent((yyval.typePtr), (yyvsp[(3) - (3)].typePtr)); + } else { + (yyval.typePtr) = NULL; + } + ;} + break; + + case 112: +#line 2461 "parser-smi.y" + { + Type *typePtr; + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, (yyvsp[(1) - (1)].id)); + if (! (yyval.typePtr)) { + importPtr = findImportByName((yyvsp[(1) - (1)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType((yyvsp[(1) - (1)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = typePtr; + } else { + /* + * imported type. + * TODO: is this allowed in a SEQUENCE? + */ + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree((yyvsp[(1) - (1)].id)); + } + } else { + smiFree((yyvsp[(1) - (1)].id)); + } + ;} + break; + + case 113: +#line 2501 "parser-smi.y" + { + (yyval.typePtr) = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (4)].listPtr)); + ;} + break; + + case 114: +#line 2509 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 115: +#line 2516 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 116: +#line 2535 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + Type *typePtr; + + objectPtr = + findObjectByModuleAndName(thisParserPtr->modulePtr, + (yyvsp[(1) - (2)].id)); + + if (!objectPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + objectPtr = addObject((yyvsp[(1) - (2)].id), thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE | + FLAG_SEQTYPE, + thisParserPtr); + setObjectType(objectPtr, (yyvsp[(2) - (2)].typePtr)); + } else { + /* + * imported object. + */ + importPtr->use++; + objectPtr = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + smiFree((yyvsp[(1) - (2)].id)); + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (((yyvsp[(2) - (2)].typePtr) != typePtr) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } else { + smiFree((yyvsp[(1) - (2)].id)); + if (objectPtr->typePtr) { + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (((yyvsp[(2) - (2)].typePtr) != typePtr) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + + } else { + setObjectType(objectPtr, (yyvsp[(2) - (2)].typePtr)); + addObjectFlags(objectPtr, + FLAG_SEQTYPE); + } + } + + (yyval.objectPtr) = objectPtr; + ;} + break; + + case 117: +#line 2618 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + if ((yyval.typePtr)) + defaultBasetype = (yyval.typePtr)->export.basetype; + ;} + break; + + case 118: +#line 2626 "parser-smi.y" + { + Type *typePtr; + List *p; + + defaultBasetype = SMI_BASETYPE_BITS; + typePtr = addType(NULL, SMI_BASETYPE_BITS, + FLAG_INCOMPLETE, + thisParserPtr); + setTypeDecl(typePtr, SMI_DECL_IMPLICIT_TYPE); + setTypeParent(typePtr, smiHandle->typeBitsPtr); + setTypeList(typePtr, (yyvsp[(3) - (4)].listPtr)); + for (p = (yyvsp[(3) - (4)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = typePtr; + smiCheckNamedNumbersOrder(parserPtr, typePtr); + (yyval.typePtr) = typePtr; + ;} + break; + + case 119: +#line 2646 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 120: +#line 2650 "parser-smi.y" + { + /* TODO: */ + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 121: +#line 2655 "parser-smi.y" + { + Type *typePtr; + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, (yyvsp[(1) - (2)].id)); + if (! (yyval.typePtr)) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType((yyvsp[(1) - (2)].id), SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = typePtr; + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree((yyvsp[(1) - (2)].id)); + } + } else { + smiFree((yyvsp[(1) - (2)].id)); + } + ;} + break; + + case 122: +#line 2688 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 123: +#line 2694 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 124: +#line 2707 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_BITNAME_32, ERR_BITNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDBIT_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 125: +#line 2720 "parser-smi.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (5)].id); + (yyval.namedNumberPtr)->export.value.basetype = + SMI_BASETYPE_UNSIGNED32; + (yyval.namedNumberPtr)->export.value.value.unsigned32 = (yyvsp[(4) - (5)].unsigned32); + /* RFC 2578 7.1.4 */ + if ((yyvsp[(4) - (5)].unsigned32) >= 65535*8) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_TOO_LARGE, + (yyvsp[(1) - (5)].id), (yyvsp[(4) - (5)].unsigned32)); + } else { + if ((yyvsp[(4) - (5)].unsigned32) >= 128) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_LARGE, + (yyvsp[(1) - (5)].id), (yyvsp[(4) - (5)].unsigned32)); + } + } + ;} + break; + + case 126: +#line 2742 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTIDENTITY; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 127: +#line 2752 "parser-smi.y" + { + Import *importPtr; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI")) { + importPtr = findImportByName("OBJECT-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "SNMPv2-SMI"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "COPS-PR-SPPI"); + } + } + ;} + break; + + case 128: +#line 2777 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + ;} + break; + + case 129: +#line 2783 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(13) - (14)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (14)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (14)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, (yyvsp[(6) - (14)].status)); + setObjectDescription(objectPtr, (yyvsp[(8) - (14)].text), thisParserPtr); + if ((yyvsp[(10) - (14)].text)) { + setObjectReference(objectPtr, (yyvsp[(10) - (14)].text), thisParserPtr); + } + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + (yyval.err) = 0; + ;} + break; + + case 130: +#line 2805 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 131: +#line 2815 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("OBJECT-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "SNMPv2-SMI"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "COPS-PR-SPPI"); + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "RFC-1212"); + } + } + indexFlag = 0; + ;} + break; + + case 132: +#line 2855 "parser-smi.y" + { + Object *objectPtr, *parentPtr; + Type *typePtr = NULL; + + objectPtr = (yyvsp[(22) - (23)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (23)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (23)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + if (checkObjectFlags(objectPtr, FLAG_SEQTYPE)) { + deleteObjectFlags(objectPtr, FLAG_SEQTYPE); + if ((yyvsp[(6) - (23)].typePtr)) { + if ((yyvsp[(6) - (23)].typePtr)->export.name) { + typePtr = (yyvsp[(6) - (23)].typePtr); + /* + * According to RFC 3159 7.1.3. Opaque must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "Opaque")) + smiPrintError(thisParserPtr, ERR_OPAQUE_IN_SYNTAX); + /* + * According to RFC 3159 7.1.4. IpAddress must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "IpAddress")) + smiPrintError(thisParserPtr, ERR_IPADDRESS_IN_SYNTAX); + } else { + typePtr = (yyvsp[(6) - (23)].typePtr)->parentPtr; + } + if ((objectPtr->typePtr != typePtr) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } + setObjectType(objectPtr, (yyvsp[(6) - (23)].typePtr)); + if (!((yyvsp[(6) - (23)].typePtr)->export.name)) { + /* + * An inlined type. + */ +#if 0 /* export implicitly defined types by the node's lowercase name */ + setTypeName((yyvsp[(6) - (23)].typePtr), (yyvsp[(1) - (23)].id)); +#endif + } + setObjectUnits(objectPtr, (yyvsp[(7) - (23)].text)); + setObjectAccess(objectPtr, (yyvsp[(8) - (23)].access)); + if (thisParserPtr->flags & FLAG_CREATABLE) { + thisParserPtr->flags &= ~FLAG_CREATABLE; + parentPtr = + objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (parentPtr && + parentPtr->export.indexkind != + SMI_INDEX_UNKNOWN) { + /* + * add objectPtr to the parent object's + * listPtr, which is the list of columns + * needed for row creation. + * + * Note, that this would clash, if the + * parent row object-type is not yet + * defined. + */ + /* + newlistPtr = smiMalloc(sizeof(List)); + newlistPtr->nextPtr = NULL; + newlistPtr->ptr = objectPtr; + */ + /* + * Look up the parent object-type. + */ + /* + if (parentPtr->listPtr) { + for(listPtr = parentPtr->listPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = newlistPtr; + } else { + parentPtr->listPtr = newlistPtr; + } + */ + addObjectFlags(parentPtr, FLAG_CREATABLE); + setObjectCreate(parentPtr, 1); + } else { + smiPrintError(thisParserPtr, + ERR_SCALAR_READCREATE); + } + } + setObjectStatus(objectPtr, (yyvsp[(12) - (23)].status)); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + if ((yyvsp[(13) - (23)].text)) { + setObjectDescription(objectPtr, (yyvsp[(13) - (23)].text), thisParserPtr); + } + if ((yyvsp[(15) - (23)].text)) { + setObjectReference(objectPtr, (yyvsp[(15) - (23)].text), thisParserPtr); + } + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * For SMI documents either $16 (IndexPart) or $17 (MibIndex) + * are used, but not both. This is signalled via the indexFlag + * which is 1 if IndexPart has been used. + */ + if (indexFlag == INDEXFLAG_AUGMENTS) { /* IndexPart was used */ + if ((yyvsp[(16) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(16) - (23)].index).listPtr); + setObjectImplied(objectPtr, (yyvsp[(16) - (23)].index).implied); + setObjectIndexkind(objectPtr, (yyvsp[(16) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(16) - (23)].index).rowPtr); + } + } else { + if ((yyvsp[(17) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(17) - (23)].index).listPtr); + setObjectImplied(objectPtr, (yyvsp[(17) - (23)].index).implied); + setObjectIndexkind(objectPtr, (yyvsp[(17) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(17) - (23)].index).rowPtr); + } + } + } else { + /* + * PIBs contain either PIB-INDEX or AUGMENTS or EXTENDS - + * but only with one Index entry. A PIB-INDEX may be + * followed by a full INDEX. We get the indexkind + * from the first. + * Note that PIB-INDEX/AUGMENTS/EXTENS is always + * the first element in objectPtr->listPtr. + * If an optional INDEX exists then it is + * appended to this list. + */ + if ((yyvsp[(16) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(16) - (23)].index).listPtr); + setObjectIndexkind(objectPtr, (yyvsp[(16) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(16) - (23)].index).rowPtr); + } + if ((yyvsp[(17) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + if (objectPtr->listPtr) { + List *p; + for (p = objectPtr->listPtr; p->nextPtr; + p = p->nextPtr); + p->nextPtr = (yyvsp[(17) - (23)].index).listPtr; + } + setObjectImplied(objectPtr, (yyvsp[(17) - (23)].index).implied); + } + } + if ((yyvsp[(18) - (23)].listPtr)) { + setObjectUniqueness(objectPtr, (yyvsp[(18) - (23)].listPtr)); + } + if ((yyvsp[(19) - (23)].valuePtr)) { + if (objectPtr->typePtr + && (((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING) && + ((yyvsp[(19) - (23)].valuePtr)->basetype != SMI_BASETYPE_OCTETSTRING)) + || ((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + ((yyvsp[(19) - (23)].valuePtr)->basetype != SMI_BASETYPE_OBJECTIDENTIFIER)))) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + smiFree((yyvsp[(19) - (23)].valuePtr)->value.oid); + } + if (((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_BITS) || + ((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((yyvsp[(19) - (23)].valuePtr)->value.ptr); + } + smiFree((yyvsp[(19) - (23)].valuePtr)); + } else { + setObjectValue(objectPtr, (yyvsp[(19) - (23)].valuePtr)); + } + } + if ((yyvsp[(9) - (23)].objectPtr)) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-REFERENCES"); + /* + * PIB-REFERENCES clauses are only allowed for + * objects with a SYNTAX of 'ReferenceId'. + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, (yyvsp[(9) - (23)].objectPtr)); + } else { + /* + * Does this object have a SYNTAX of 'ReferenceId' + * and a PIB-REFERENCES clause? + * See RFC 3159 7.10 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_REFERENCES, + objectPtr->line); + } + if ((yyvsp[(10) - (23)].objectPtr)) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-TAG"); + /* + * PIB-TAG clauses are only allowed for + * objects with a SYNTAX of 'TagReferenceId'. + * See RFC 3159 7.11 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, (yyvsp[(10) - (23)].objectPtr)); + } else { + /* + * Does this object have a SYNTAX of 'TagReferenceId' + * and a PIB-TAG clause? + * See RFC 3159 7.11 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_TAG, + objectPtr->line); + + } + if ((yyvsp[(14) - (23)].listPtr)) { + if (objectPtr->listPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "listPtr", "INSTALL-ERRORS"); + /* + * Are INSTALL-ERRORS only used with tables? + * See RFC 3159 7.4 + */ + if (!((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF))) + smiPrintErrorAtLine(parserPtr, ERR_INSTALL_ERRORS_FOR_NON_TABLE, + objectPtr->line); + else + setObjectList(objectPtr, (yyvsp[(14) - (23)].listPtr)); + } + (yyval.err) = 0; + ;} + break; + + case 133: +#line 3111 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) || + (thisModulePtr->export.language == SMI_LANGUAGE_SPPI)) + { + smiPrintError(thisParserPtr, + ERR_MISSING_DESCRIPTION); + } + (yyval.text) = NULL; + ;} + break; + + case 134: +#line 3121 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + checkDescr(thisParserPtr, (yyvsp[(2) - (2)].text)); + ;} + break; + + case 135: +#line 3128 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TRAPTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 136: +#line 3138 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "TRAP-TYPE"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_TRAP_TYPE); + } + + importPtr = findImportByName("TRAP-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TRAP-TYPE", "RFC-1215"); + } + ;} + break; + + case 137: +#line 3164 "parser-smi.y" + { + Object *objectPtr; + Node *nodePtr; + + objectPtr = (yyvsp[(6) - (11)].objectPtr); + nodePtr = findNodeByParentAndSubid( + objectPtr->nodePtr, 0); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + objectPtr = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + objectPtr->nodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + objectPtr = addObject(NULL, + objectPtr->nodePtr, + (yyvsp[(11) - (11)].unsigned32), + FLAG_INCOMPLETE, + thisParserPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (11)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (11)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_TRAPTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, (yyvsp[(7) - (11)].listPtr)); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + setObjectDescription(objectPtr, (yyvsp[(8) - (11)].text), thisParserPtr); + if ((yyvsp[(9) - (11)].text)) { + setObjectReference(objectPtr, (yyvsp[(9) - (11)].text), thisParserPtr); + } + (yyval.err) = 0; + ;} + break; + + case 138: +#line 3211 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 139: +#line 3215 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 140: +#line 3221 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].objectPtr)) { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + } else { + (yyval.listPtr) = NULL; + } + ;} + break; + + case 141: +#line 3231 "parser-smi.y" + { + List *p, *pp; + + if ((yyvsp[(3) - (3)].objectPtr)) { + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + if ((yyvsp[(1) - (3)].listPtr)) { + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; + pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + } else { + (yyval.listPtr) = p; + } + } else { + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + } + ;} + break; + + case 142: +#line 3253 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 143: +#line 3259 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + checkDescr(thisParserPtr, (yyvsp[(2) - (2)].text)); + ;} + break; + + case 144: +#line 3264 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 145: +#line 3268 "parser-smi.y" + { + (yyval.access) = (yyvsp[(1) - (1)].access); + ;} + break; + + case 146: +#line 3272 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "MAX-ACCESS"); + if ((yyvsp[(1) - (1)].access) == SMI_ACCESS_NOT_ACCESSIBLE) + smiPrintError(thisParserPtr, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS); + (yyval.access) = (yyvsp[(1) - (1)].access); + ;} + break; + + case 147: +#line 3280 "parser-smi.y" + { (yyval.access) = 0; ;} + break; + + case 148: +#line 3284 "parser-smi.y" + { (yyval.access) = (yyvsp[(2) - (2)].access); ;} + break; + + case 149: +#line 3288 "parser-smi.y" + { + smiPrintError(thisParserPtr, ERR_POLICY_ACCESS_IN_PIB); + ;} + break; + + case 150: +#line 3292 "parser-smi.y" + { ;} + break; + + case 151: +#line 3296 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-REFERENCES"); + ;} + break; + + case 152: +#line 3301 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(4) - (5)].objectPtr); ;} + break; + + case 153: +#line 3303 "parser-smi.y" + { (yyval.objectPtr) = 0; ;} + break; + + case 154: +#line 3307 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-TAG"); + ;} + break; + + case 155: +#line 3312 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(4) - (5)].objectPtr); ;} + break; + + case 156: +#line 3314 "parser-smi.y" + { (yyval.objectPtr) = 0; ;} + break; + + case 157: +#line 3319 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "UNIQUENESS"); + ;} + break; + + case 158: +#line 3324 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(4) - (5)].listPtr); ;} + break; + + case 159: +#line 3326 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 160: +#line 3330 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); ;} + break; + + case 161: +#line 3332 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 162: +#line 3336 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 163: +#line 3343 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 164: +#line 3356 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); ;} + break; + + case 165: +#line 3360 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "INSTALL-ERRORS"); + ;} + break; + + case 166: +#line 3365 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(4) - (5)].listPtr); ;} + break; + + case 167: +#line 3367 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 168: +#line 3371 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 169: +#line 3378 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 170: +#line 3391 "parser-smi.y" + { + Object *objectPtr; + + if (((yyvsp[(3) - (4)].unsigned32) < 1) || ((yyvsp[(3) - (4)].unsigned32) > 65536)) + smiPrintError(thisParserPtr, ERR_ERROR_NUMBER_RANGE, (yyvsp[(3) - (4)].unsigned32)); + /* + * This is not a regular object that will be added vid + * 'addObject' as error identifier have no other + * meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = (yyvsp[(1) - (4)].id); + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)(yyvsp[(3) - (4)].unsigned32); + (yyval.objectPtr) = objectPtr; + ;} + break; + + case 171: +#line 3412 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) + { + smiPrintError(thisParserPtr, + ERR_MAX_ACCESS_IN_SMIV1); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MAX-ACCESS"); + ;} + break; + + case 172: +#line 3421 "parser-smi.y" + { (yyval.access) = (yyvsp[(3) - (3)].access); ;} + break; + + case 173: +#line 3423 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_ACCESS_IN_SMIV2); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "ACCESS"); + ;} + break; + + case 174: +#line 3432 "parser-smi.y" + { (yyval.access) = (yyvsp[(3) - (3)].access); ;} + break; + + case 175: +#line 3436 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 176: +#line 3446 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-TYPE"); + + importPtr = findImportByName("NOTIFICATION-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-TYPE", + "SNMPv2-SMI"); + } + ;} + break; + + case 177: +#line 3466 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 178: +#line 3472 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + (yyval.err) = 0; + ;} + break; + + case 179: +#line 3497 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULEIDENTITY; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 180: +#line 3507 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("MODULE-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-IDENTITY", + "SNMPv2-SMI"); + } + + if (thisParserPtr->modulePtr->numModuleIdentities > 0) + { + smiPrintError(thisParserPtr, + ERR_TOO_MANY_MODULE_IDENTITIES); + } + if (thisParserPtr->modulePtr->numStatements > 0) { + smiPrintError(thisParserPtr, + ERR_MODULE_IDENTITY_NOT_FIRST); + } + ;} + break; + + case 181: +#line 3532 "parser-smi.y" + { + /* do nothing at the moment */ + ;} + break; + + case 182: +#line 3536 "parser-smi.y" + { + setModuleLastUpdated(thisParserPtr->modulePtr, (yyvsp[(8) - (8)].date)); + ;} + break; + + case 183: +#line 3540 "parser-smi.y" + { + if ((yyvsp[(11) - (11)].text) && !strlen((yyvsp[(11) - (11)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_ORGANIZATION); + } + ;} + break; + + case 184: +#line 3547 "parser-smi.y" + { + if ((yyvsp[(14) - (14)].text) && !strlen((yyvsp[(14) - (14)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_CONTACT); + } + ;} + break; + + case 185: +#line 3554 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(17) - (17)].text)); + ;} + break; + + case 186: +#line 3558 "parser-smi.y" + { + if ((!thisModulePtr->firstRevisionPtr) || + (thisModulePtr->firstRevisionPtr->export.date != + thisModulePtr->lastUpdated)) { + smiPrintError(thisParserPtr, + ERR_REVISION_MISSING); + addRevision(thisModulePtr->lastUpdated, + smiStrdup( + "[Revision added by libsmi due to a LAST-UPDATED clause.]"), + thisParserPtr); + } + ;} + break; + + case 187: +#line 3572 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(23) - (24)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (24)].id), &objectPtr); + + thisParserPtr->modulePtr->numModuleIdentities++; + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (24)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_MODULEIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setModuleIdentityObject(thisParserPtr->modulePtr, + objectPtr); + setModuleOrganization(thisParserPtr->modulePtr, + (yyvsp[(11) - (24)].text)); + setModuleContactInfo(thisParserPtr->modulePtr, + (yyvsp[(14) - (24)].text)); + setModuleDescription(thisParserPtr->modulePtr, + (yyvsp[(17) - (24)].text), thisParserPtr); + if ((yyvsp[(5) - (24)].subjectCategoriesPtr) != NULL) { + setObjectList(objectPtr, (yyvsp[(5) - (24)].subjectCategoriesPtr)->categories); + smiFree((yyvsp[(5) - (24)].subjectCategoriesPtr)); + } + /* setObjectDescription(objectPtr, $15); */ + (yyval.err) = 0; + ;} + break; + + case 188: +#line 3605 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "SUBJECT-CATEGORIES"); + (yyval.subjectCategoriesPtr) = (yyvsp[(3) - (4)].subjectCategoriesPtr); + ;} + break; + + case 189: +#line 3611 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING); + (yyval.subjectCategoriesPtr) = NULL; + ;} + break; + + case 190: +#line 3619 "parser-smi.y" + { + (yyval.subjectCategoriesPtr) = smiMalloc(sizeof(SubjectCategories)); + (yyval.subjectCategoriesPtr)->categories = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 191: +#line 3626 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 192: +#line 3632 "parser-smi.y" + { + List *p, *pp; + + if ((yyvsp[(1) - (3)].listPtr)->ptr == NULL) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL); + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 193: +#line 3647 "parser-smi.y" + { + Object *objectPtr; + + if (strcmp((yyvsp[(1) - (1)].id), "all")) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING_SUBID); + else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = "all"; + objectPtr->export.oidlen = 0; + objectPtr->export.oid = 0; + (yyval.objectPtr) = objectPtr; + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 194: +#line 3668 "parser-smi.y" + { + Object *objectPtr; + + if (!strcmp((yyvsp[(1) - (4)].id), "all")) { + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID); + (yyval.objectPtr) = NULL; + } else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = (yyvsp[(1) - (4)].id); + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)(yyvsp[(3) - (4)].unsigned32); + (yyval.objectPtr) = objectPtr; + } + ;} + break; + + case 195: +#line 3691 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 196: +#line 3695 "parser-smi.y" + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_TAG, (yyvsp[(1) - (2)].err)); + } + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + ;} + break; + + case 197: +#line 3715 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 198: +#line 3720 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 199: +#line 3725 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 200: +#line 3730 "parser-smi.y" + { + Import *importPtr; + + if ((yyvsp[(1) - (1)].typePtr) && (yyvsp[(1) - (1)].typePtr)->export.name) { + importPtr = findImportByName((yyvsp[(1) - (1)].typePtr)->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 201: +#line 3747 "parser-smi.y" + { (yyval.err) = 0; /* TODO: check range */ ;} + break; + + case 202: +#line 3749 "parser-smi.y" + { (yyval.err) = 0; /* TODO: check range */ ;} + break; + + case 203: +#line 3757 "parser-smi.y" + { (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); ;} + break; + + case 204: +#line 3762 "parser-smi.y" + { + Import *importPtr; + + if ((yyvsp[(1) - (1)].typePtr) && (yyvsp[(1) - (1)].typePtr)->export.name) { + importPtr = findImportByName((yyvsp[(1) - (1)].typePtr)->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 205: +#line 3779 "parser-smi.y" + { (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); ;} + break; + + case 206: +#line 3788 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + defaultBasetype = SMI_BASETYPE_INTEGER32; + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 207: +#line 3801 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + ;} + break; + + case 208: +#line 3805 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 209: +#line 3820 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_ENUM; + ;} + break; + + case 210: +#line 3824 "parser-smi.y" + { + List *p; + + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + ;} + break; + + case 211: +#line 3835 "parser-smi.y" + { + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_INTEGER32; + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + /* TODO: any need to distinguish from INTEGER? */ + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 212: +#line 3861 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + ;} + break; + + case 213: +#line 3865 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 214: +#line 3892 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_ENUM; + ;} + break; + + case 215: +#line 3896 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + List *p; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (3)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (3)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (3)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + (yyvsp[(1) - (3)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (3)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (3)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + ;} + break; + + case 216: +#line 3947 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + List *p; + + defaultBasetype = SMI_BASETYPE_ENUM; + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = + findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = + findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + for (p = (yyvsp[(4) - (4)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 217: +#line 3993 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (2)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + (yyvsp[(1) - (2)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (2)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 218: +#line 4049 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 219: +#line 4098 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 220: +#line 4103 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + ;} + break; + + case 221: +#line 4107 "parser-smi.y" + { + + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 222: +#line 4115 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (2)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + (yyvsp[(1) - (2)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (2)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 223: +#line 4162 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 224: +#line 4202 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 225: +#line 4210 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 226: +#line 4216 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + ;} + break; + + case 227: +#line 4222 "parser-smi.y" + { + /* The scanner already checks for the language */ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = (yyvsp[(1) - (1)].unsigned64); + ;} + break; + + case 228: +#line 4229 "parser-smi.y" + { + /* The scanner already checks for the language */ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = (yyvsp[(1) - (1)].integer64); + ;} + break; + + case 229: +#line 4236 "parser-smi.y" + { + char s[9]; + int i, len, j; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = + smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + (yyval.valuePtr)->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + (yyval.valuePtr)->len = (len+7)/8; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 2); + } + ;} + break; + + case 230: +#line 4262 "parser-smi.y" + { + char s[3]; + int i, len; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + (yyval.valuePtr)->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + (yyval.valuePtr)->len = (len+1)/2; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + } + ;} + break; + + case 231: +#line 4285 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if ((defaultBasetype != SMI_BASETYPE_ENUM) && + (defaultBasetype != SMI_BASETYPE_OBJECTIDENTIFIER)) { + smiPrintError(thisParserPtr, ERR_DEFVAL_SYNTAX); + (yyval.valuePtr)->basetype = defaultBasetype; + if (defaultBasetype == SMI_BASETYPE_ENUM) { + (yyval.valuePtr)->len = 1; + (yyval.valuePtr)->value.unsigned32 = 0; + } else { + (yyval.valuePtr)->len = 0; + (yyval.valuePtr)->value.ptr = NULL; + } + } else { + (yyval.valuePtr)->basetype = defaultBasetype; + (yyval.valuePtr)->len = -1; /* indicates unresolved ptr */ + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].id); /* JS: needs strdup? */ + } + ;} + break; + + case 232: +#line 4305 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = smiStrdup((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + ;} + break; + + case 233: +#line 4328 "parser-smi.y" + { + /* + * SMIv1 allows something like { 0 0 } ! + * SMIv2 does not! + */ + /* TODO: make it work correctly for SMIv1 */ + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV2); + } else { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV1); + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->len = 2; + (yyval.valuePtr)->value.oid = smiMalloc(2 * sizeof(SmiSubid)); + (yyval.valuePtr)->value.oid[0] = 0; + (yyval.valuePtr)->value.oid[1] = 0; + ;} + break; + + case 234: +#line 4355 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 235: +#line 4359 "parser-smi.y" + { + Import *importPtr; + + /* TODO: any need to distinguish from INTEGER? */ + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + ;} + break; + + case 236: +#line 4384 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 237: +#line 4388 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 238: +#line 4394 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("IpAddress"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + ;} + break; + + case 239: +#line 4422 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "COUNTER32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 240: +#line 4448 "parser-smi.y" + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter32"); + for (listPtr = (yyvsp[(2) - (2)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 241: +#line 4485 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + (yyval.typePtr) = findTypeByName("Gauge32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 242: +#line 4511 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + parentPtr = findTypeByName("Gauge32"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 243: +#line 4544 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 244: +#line 4568 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 245: +#line 4595 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("TimeTicks"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + ;} + break; + + case 246: +#line 4623 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("Opaque"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 247: +#line 4661 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByName("Opaque"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + (yyval.typePtr) = NULL; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 248: +#line 4707 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 249: +#line 4733 "parser-smi.y" + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter64"); + for (listPtr = (yyvsp[(2) - (2)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 250: +#line 4770 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! (yyval.typePtr)) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + (yyval.typePtr) = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + ;} + break; + + case 251: +#line 4796 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! parentPtr) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + ;} + break; + + case 252: +#line 4833 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! (yyval.typePtr)) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + (yyval.typePtr) = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + ;} + break; + + case 253: +#line 4859 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! parentPtr) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + ;} + break; + + case 254: +#line 4902 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("IpAddress"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + ;} + break; + + case 255: +#line 4930 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 256: +#line 4956 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + (yyval.typePtr) = findTypeByName("Gauge32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 257: +#line 4982 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 258: +#line 5006 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("TimeTicks"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + ;} + break; + + case 259: +#line 5034 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("Opaque"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 260: +#line 5074 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisModulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 261: +#line 5100 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + (yyval.typePtr) = findTypeByName("Integer64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + } + + importPtr = findImportByName("Integer64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } + ;} + break; + + case 262: +#line 5125 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) && (!importPtr)) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + (yyval.typePtr) = findTypeByName("Unsigned64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + } + + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } + ;} + break; + + case 263: +#line 5152 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 264: +#line 5169 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 265: +#line 5186 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 266: +#line 5204 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 267: +#line 5218 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(2) - (3)].listPtr); ;} + break; + + case 268: +#line 5228 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 269: +#line 5234 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 270: +#line 5240 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 271: +#line 5254 "parser-smi.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (1)].valuePtr); + (yyval.rangePtr)->export.maxValue = *(yyvsp[(1) - (1)].valuePtr); + smiFree((yyvsp[(1) - (1)].valuePtr)); + ;} + break; + + case 272: +#line 5261 "parser-smi.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (3)].valuePtr); + (yyval.rangePtr)->export.maxValue = *(yyvsp[(3) - (3)].valuePtr); + smiFree((yyvsp[(1) - (3)].valuePtr)); + smiFree((yyvsp[(3) - (3)].valuePtr)); + ;} + break; + + case 273: +#line 5271 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + ;} + break; + + case 274: +#line 5277 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 275: +#line 5283 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = (yyvsp[(1) - (1)].integer64); + ;} + break; + + case 276: +#line 5289 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = (yyvsp[(1) - (1)].unsigned64); + ;} + break; + + case 277: +#line 5295 "parser-smi.y" + { + char s[3]; + int i, len; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + (yyval.valuePtr)->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + (yyval.valuePtr)->len = (len+1)/2; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + } + ;} + break; + + case 278: +#line 5318 "parser-smi.y" + { + char s[9]; + int i, len, j; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + (yyval.valuePtr)->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + (yyval.valuePtr)->len = (len+7)/8; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 2); + } + ;} + break; + + case 279: +#line 5345 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 280: +#line 5351 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 281: +#line 5357 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 282: +#line 5370 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_ENUMNAME_32, ERR_ENUMNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDNUMBER_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 283: +#line 5383 "parser-smi.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (5)].id); + (yyval.namedNumberPtr)->export.value = *(yyvsp[(4) - (5)].valuePtr); + smiFree((yyvsp[(4) - (5)].valuePtr)); + ;} + break; + + case 284: +#line 5392 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].unsigned32) > SMI_BASETYPE_INTEGER32_MAX) { + smiPrintError(thisParserPtr, + ERR_INTEGER32_TOO_LARGE, (yyvsp[(1) - (1)].unsigned32)); + } + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) && + ((yyvsp[(1) - (1)].unsigned32) == 0)) { + smiPrintError(thisParserPtr, + ERR_ENUM_ZERO); + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 285: +#line 5407 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + /* TODO: non-negative is suggested */ + ;} + break; + + case 286: +#line 5416 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_DEPRECATED; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_STATUS, + (yyvsp[(1) - (1)].id)); + if (!strcmp((yyvsp[(1) - (1)].id), "mandatory") + || !strcmp((yyvsp[(1) - (1)].id), "optional")) { + /* best guess */ + (yyval.status) = SMI_STATUS_CURRENT; + } else { + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp((yyvsp[(1) - (1)].id), "mandatory")) { + (yyval.status) = SMI_STATUS_MANDATORY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "optional")) { + (yyval.status) = SMI_STATUS_OPTIONAL; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_STATUS, + (yyvsp[(1) - (1)].id)); + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + /* best guess */ + (yyval.status) = SMI_STATUS_MANDATORY; + } else { + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + } else { /* it is SPPI */ + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_STATUS, (yyvsp[(1) - (1)].id)); + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 287: +#line 5475 "parser-smi.y" + { + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_CAPABILITIES_STATUS, + (yyvsp[(1) - (1)].id)); + (yyval.status) = SMI_STATUS_UNKNOWN; + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 288: +#line 5491 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_FORMAT); + } + ;} + break; + + case 289: +#line 5500 "parser-smi.y" + { + (yyval.text) = NULL; + ;} + break; + + case 290: +#line 5506 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_UNITS); + } + ;} + break; + + case 291: +#line 5515 "parser-smi.y" + { + (yyval.text) = NULL; + ;} + break; + + case 292: +#line 5521 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp((yyvsp[(1) - (1)].id), + "accessible-for-notify")) { + (yyval.access) = SMI_ACCESS_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-create")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + thisParserPtr->flags |= FLAG_CREATABLE; + /* TODO:remember it's really read-create */ + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV1_WRITE_ONLY); + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } else { + if (!strcmp((yyvsp[(1) - (1)].id), "install")) { + (yyval.access) = SMI_ACCESS_INSTALL; + } else if (!strcmp((yyvsp[(1) - (1)].id), "install-notify")) { + (yyval.access) = SMI_ACCESS_INSTALL_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "notify")) { + (yyval.access) = SMI_ACCESS_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "report-only")) { + (yyval.access) = SMI_ACCESS_REPORT_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 293: +#line 5587 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-INDEX"); + ;} + break; + + case 294: +#line 5592 "parser-smi.y" + { + List *p = smiMalloc(sizeof(List)); + + p->ptr = (yyvsp[(4) - (5)].objectPtr); + p->nextPtr = NULL; + + (yyval.index).indexkind = SMI_INDEX_INDEX; + (yyval.index).implied = impliedFlag; + (yyval.index).listPtr = p; + (yyval.index).rowPtr = NULL; + indexFlag = INDEXFLAG_PIBINDEX; + ;} + break; + + case 295: +#line 5607 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_AUGMENT; + (yyval.index).implied = 0; + (yyval.index).listPtr = NULL; + (yyval.index).rowPtr = (yyvsp[(3) - (4)].objectPtr); + indexFlag = INDEXFLAG_AUGMENTS; + ;} + break; + + case 296: +#line 5615 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "EXTENDS"); + ;} + break; + + case 297: +#line 5620 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_SPARSE; + (yyval.index).implied = 0; + (yyval.index).listPtr = NULL; + (yyval.index).rowPtr = (yyvsp[(4) - (5)].objectPtr); + indexFlag = INDEXFLAG_EXTENDS; + ;} + break; + + case 298: +#line 5628 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_UNKNOWN; + ;} + break; + + case 299: +#line 5634 "parser-smi.y" + { + /* + * To avoid ambiguity caused by merging + * the SMI and SPPI parser we use a flag. + */ + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Only INDEX or AUGMENTS are allowed for SMI + */ + if (indexFlag != INDEXFLAG_NONE) + smiPrintError(thisParserPtr, ERR_INDEX_AND_AUGMENTS_USED); + } else { + /* + * INDEX may only be used if PIB_INDEX was used + */ + if (indexFlag != INDEXFLAG_PIBINDEX) + smiPrintError(thisParserPtr, ERR_INDEX_WITHOUT_PIB_INDEX); + } + + /* + * Use a global variable to fetch and remember + * whether we have seen an IMPLIED keyword. + */ + impliedFlag = 0; + ;} + break; + + case 300: +#line 5660 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_INDEX; + (yyval.index).implied = impliedFlag; + (yyval.index).listPtr = (yyvsp[(4) - (5)].listPtr); + (yyval.index).rowPtr = NULL; + ;} + break; + + case 301: +#line 5667 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_UNKNOWN; + ;} + break; + + case 302: +#line 5673 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 303: +#line 5680 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 304: +#line 5693 "parser-smi.y" + { + impliedFlag = 1; + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + ;} + break; + + case 305: +#line 5698 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 306: +#line 5708 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 307: +#line 5714 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 308: +#line 5720 "parser-smi.y" + { + (yyval.valuePtr) = (yyvsp[(3) - (4)].valuePtr); + if ((defaultBasetype == SMI_BASETYPE_BITS) && + ((yyval.valuePtr)->basetype != SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ((yyval.valuePtr)->basetype == SMI_BASETYPE_OCTETSTRING) { + smiFree((yyval.valuePtr)->value.ptr); + } + smiFree((yyval.valuePtr)); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 309: +#line 5734 "parser-smi.y" + { (yyval.valuePtr) = NULL; ;} + break; + + case 310: +#line 5739 "parser-smi.y" + { (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); ;} + break; + + case 311: +#line 5741 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_BITS; + (yyval.valuePtr)->value.ptr = (void *)(yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 312: +#line 5749 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); ;} + break; + + case 313: +#line 5751 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 314: +#line 5755 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].id); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 315: +#line 5761 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].id); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 316: +#line 5774 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 317: +#line 5780 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 318: +#line 5786 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_REFERENCE); + } + ;} + break; + + case 319: +#line 5795 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 320: +#line 5799 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 321: +#line 5801 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 322: +#line 5805 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 323: +#line 5807 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 324: +#line 5811 "parser-smi.y" + { + thisParserPtr->firstRevisionLine = thisParserPtr->line; + + if (thisParserPtr->modulePtr->lastRevisionPtr && + ((yyvsp[(2) - (2)].date) >= thisParserPtr->modulePtr->lastRevisionPtr->export.date)) { + smiPrintError(thisParserPtr, + ERR_REVISION_NOT_DESCENDING); + } + + if ((yyvsp[(2) - (2)].date) > thisParserPtr->modulePtr->lastUpdated) { + smiPrintError(thisParserPtr, + ERR_REVISION_AFTER_LAST_UPDATE); + } + ;} + break; + + case 325: +#line 5826 "parser-smi.y" + { + Revision *revisionPtr; + + checkDescr(thisParserPtr, (yyvsp[(5) - (5)].text)); + + revisionPtr = addRevision((yyvsp[(2) - (5)].date), (yyvsp[(5) - (5)].text), thisParserPtr); + if (revisionPtr) { + setRevisionLine(revisionPtr, + thisParserPtr->firstRevisionLine, + thisParserPtr); + } + (yyval.err) = revisionPtr ? 0 : -1; + ;} + break; + + case 326: +#line 5842 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 327: +#line 5846 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 328: +#line 5852 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 329: +#line 5858 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 330: +#line 5864 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 331: +#line 5877 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if ((thisParserPtr->currentDecl == SMI_DECL_OBJECTGROUP) && + (yyval.objectPtr)->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + (yyval.objectPtr)->export.name); + } + ;} + break; + + case 332: +#line 5889 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 333: +#line 5895 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 334: +#line 5901 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 335: +#line 5914 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if ((yyval.objectPtr)->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + (yyval.objectPtr)->export.name); + } + ;} + break; + + case 336: +#line 5925 "parser-smi.y" + { + int len; + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + len = strlen((yyval.text)); + while (len > 0 && (yyval.text)[len-1] == '\n') { + (yyval.text)[--len] = 0; + } + ;} + break; + + case 337: +#line 5936 "parser-smi.y" + { + (yyval.date) = checkDate(thisParserPtr, (yyvsp[(1) - (1)].text)); + ;} + break; + + case 338: +#line 5941 "parser-smi.y" + { + thisParserPtr->parentNodePtr = smiHandle->rootNodePtr; + ;} + break; + + case 339: +#line 5945 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + if ((yyval.objectPtr)) { + thisParserPtr->parentNodePtr = (yyvsp[(2) - (2)].objectPtr)->nodePtr; + } else { + thisParserPtr->parentNodePtr = NULL; + } + ;} + break; + + case 340: +#line 5957 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 341: +#line 5962 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + ;} + break; + + case 342: +#line 5970 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, (yyvsp[(1) - (1)].id)); + } + objectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + (yyval.objectPtr) = objectPtr; + smiFree((yyvsp[(1) - (1)].id)); + } else { + importPtr = findImportByName((yyvsp[(1) - (1)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (1)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (1)].id), + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (1)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (1)].id), + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + (yyval.objectPtr) = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + (yyval.objectPtr) = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (1)].id)); + smiFree((yyvsp[(1) - (1)].id)); + } + } + if ((yyval.objectPtr)) + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + ;} + break; + + case 343: +#line 6064 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + char *md; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + md = smiMalloc(sizeof(char) * + (strlen((yyvsp[(1) - (3)].id)) + strlen((yyvsp[(3) - (3)].id)) + 2)); + sprintf(md, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, md); + smiFree(md); + } else { + objectPtr = findObjectByModulenameAndName( + (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + if (objectPtr) { + (yyval.objectPtr) = objectPtr; + smiFree((yyvsp[(1) - (3)].id)); + smiFree((yyvsp[(3) - (3)].id)); + } else { + importPtr = findImportByModulenameAndName( + (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id), thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* TODO: check: $1 == thisModule ? */ + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, (yyvsp[(1) - (3)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (3)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (3)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (3)].id), + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, (yyvsp[(1) - (3)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (3)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (3)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (3)].id), + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject((yyvsp[(3) - (3)].id), + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiFree((yyvsp[(1) - (3)].id)); + } + (yyval.objectPtr) = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + (yyval.objectPtr) = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(3) - (3)].id)); + smiFree((yyvsp[(1) - (3)].id)); + smiFree((yyvsp[(3) - (3)].id)); + } + } + if ((yyval.objectPtr)) + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + ;} + break; + + case 344: +#line 6168 "parser-smi.y" + { + Node *nodePtr; + Object *objectPtr; + + nodePtr = findNodeByParentAndSubid(thisParserPtr->parentNodePtr, + (yyvsp[(1) - (1)].unsigned32)); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + (yyval.objectPtr) = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + thisParserPtr->parentNodePtr, + (yyvsp[(1) - (1)].unsigned32), + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.objectPtr) = objectPtr; + } + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + ;} + break; + + case 345: +#line 6192 "parser-smi.y" + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + + /* TODO: search in local module and + * in imported modules + */ + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, (yyvsp[(3) - (4)].unsigned32)); + oldObjectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (4)].id)); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != (yyvsp[(3) - (4)].unsigned32)) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + (yyvsp[(1) - (4)].id)); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject((yyvsp[(1) - (4)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + oldNodePtr->lastObjectPtr->export.name && + strcmp(oldNodePtr->lastObjectPtr->export.name, (yyvsp[(1) - (4)].id))) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + (yyvsp[(1) - (4)].id), oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject((yyvsp[(1) - (4)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else { + objectPtr = addObject((yyvsp[(1) - (4)].id), thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + ;} + break; + + case 346: +#line 6252 "parser-smi.y" + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + char *md; + + md = smiMalloc(sizeof(char) * + (strlen((yyvsp[(1) - (6)].id)) + strlen((yyvsp[(3) - (6)].id)) + 2)); + sprintf(md, "%s.%s", (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id)); + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, (yyvsp[(5) - (6)].unsigned32)); + oldObjectPtr = findObjectByModulenameAndName( + (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id)); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != (yyvsp[(5) - (6)].unsigned32)) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + (yyvsp[(3) - (6)].id)); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject((yyvsp[(3) - (6)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + strcmp(oldNodePtr->lastObjectPtr->export.name, (yyvsp[(3) - (6)].id))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + (yyvsp[(3) - (6)].id), oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject((yyvsp[(3) - (6)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + objectPtr = addObject((yyvsp[(3) - (6)].id), thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + smiFree(md); + ;} + break; + + case 347: +#line 6321 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 348: +#line 6325 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 349: +#line 6327 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 350: +#line 6331 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 351: +#line 6333 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 352: +#line 6337 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTGROUP; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 353: +#line 6347 "parser-smi.y" + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("OBJECT-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-GROUP", "SNMPv2-CONF"); + } + ;} + break; + + case 354: +#line 6366 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 355: +#line 6371 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + (yyval.err) = 0; + ;} + break; + + case 356: +#line 6397 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONGROUP; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 357: +#line 6407 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-GROUP"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("NOTIFICATION-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-GROUP", + "SNMPv2-CONF"); + } + ;} + break; + + case 358: +#line 6429 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 359: +#line 6434 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + (yyval.err) = 0; + ;} + break; + + case 360: +#line 6461 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULECOMPLIANCE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 361: +#line 6471 "parser-smi.y" + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + importPtr = findImportByName("MODULE-COMPLIANCE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-COMPLIANCE", + "SNMPv2-CONF"); + } + ;} + break; + + case 362: +#line 6489 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + ;} + break; + + case 363: +#line 6495 "parser-smi.y" + { + Object *objectPtr; + Option *optionPtr; + Refinement *refinementPtr; + List *listPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_MODULECOMPLIANCE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(6) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(8) - (15)].text), thisParserPtr); + if ((yyvsp[(10) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(10) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(11) - (15)].compl).mandatorylistPtr); + objectPtr->optionlistPtr = (yyvsp[(11) - (15)].compl).optionlistPtr; + objectPtr->refinementlistPtr = + (yyvsp[(11) - (15)].compl).refinementlistPtr; + + if ((yyvsp[(11) - (15)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(11) - (15)].compl).optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + optionPtr = ((Option *)(listPtr->ptr)); + optionPtr->compliancePtr = objectPtr; + } + } + + /* + * Dirty: Fake the types' names in the + * refinement list: + * ``++type'' + * ``++writetype'' + */ + if ((yyvsp[(11) - (15)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(11) - (15)].compl).refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + refinementPtr = + ((Refinement *)(listPtr->ptr)); + refinementPtr->compliancePtr = objectPtr; + } + } + + (yyval.err) = 0; + ;} + break; + + case 364: +#line 6554 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 365: +#line 6560 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 366: +#line 6564 "parser-smi.y" + { + List *listPtr; + + /* concatenate lists in $1 and $2 */ + if ((yyvsp[(1) - (2)].compl).mandatorylistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).mandatorylistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).mandatorylistPtr; + (yyval.compl).mandatorylistPtr = (yyvsp[(1) - (2)].compl).mandatorylistPtr; + } else { + (yyval.compl).mandatorylistPtr = (yyvsp[(2) - (2)].compl).mandatorylistPtr; + } + if ((yyvsp[(1) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } else { + (yyval.compl).optionlistPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + if ((yyvsp[(1) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } else { + (yyval.compl).refinementlistPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + ;} + break; + + case 367: +#line 6599 "parser-smi.y" + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ((yyvsp[(2) - (2)].modulePtr) == thisModulePtr) + thisParserPtr->complianceModulePtr = NULL; + else + thisParserPtr->complianceModulePtr = (yyvsp[(2) - (2)].modulePtr); + ;} + break; + + case 368: +#line 6615 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = (yyvsp[(4) - (5)].listPtr); + (yyval.compl).optionlistPtr = (yyvsp[(5) - (5)].compl).optionlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(5) - (5)].compl).refinementlistPtr; + if (thisParserPtr->complianceModulePtr) { + checkImports(thisParserPtr->complianceModulePtr, + thisParserPtr); + thisParserPtr->complianceModulePtr = NULL; + } + ;} + break; + + case 369: +#line 6628 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (2)].id)); + /* TODO: handle objectIdentifier */ + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (2)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + ;} + break; + + case 370: +#line 6637 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (1)].id)); + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (1)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 371: +#line 6646 "parser-smi.y" + { + (yyval.modulePtr) = thisModulePtr; + ;} + break; + + case 372: +#line 6652 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 373: +#line 6656 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 374: +#line 6662 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 375: +#line 6668 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 376: +#line 6681 "parser-smi.y" + { + /* TODO: check that objectIdentifier is + found, is defined in thisParserPtr->complianceModulePtr, + and is a group node. */ + Import *importPtr; + + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if (thisParserPtr->complianceModulePtr) { + (yyval.objectPtr) = findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, + (yyvsp[(1) - (1)].objectPtr)->export.name); + } + if (thisParserPtr->complianceModulePtr && (yyvsp[(1) - (1)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(1) - (1)].objectPtr)->export.name, thisModulePtr); + if (importPtr) + importPtr->use++; + } + ;} + break; + + case 377: +#line 6704 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (1)].compl).optionlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (1)].compl).refinementlistPtr; + ;} + break; + + case 378: +#line 6710 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = NULL; + (yyval.compl).refinementlistPtr = NULL; + ;} + break; + + case 379: +#line 6718 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 380: +#line 6722 "parser-smi.y" + { + List *listPtr; + int stop; + + (yyval.compl).mandatorylistPtr = NULL; + + /* check for duplicates in optionlist */ + stop = 0; + if ((yyvsp[(2) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Option *)listPtr->ptr)->objectPtr == + ((Option *)(yyvsp[(2) - (2)].compl).optionlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_OPTIONALGROUP_ALREADY_EXISTS, + ((Option *)(yyvsp[(2) - (2)].compl).optionlistPtr->ptr)->objectPtr->export.name); + stop = 1; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } + } + } + + /* concatenate optionlists */ + if ((yyvsp[(1) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } else { + (yyval.compl).optionlistPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + + /* check for duplicates in refinementlist */ + stop = 0; + if ((yyvsp[(2) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Refinement *)listPtr->ptr)->objectPtr == + ((Refinement *)(yyvsp[(2) - (2)].compl).refinementlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_REFINEMENT_ALREADY_EXISTS, + ((Refinement *)(yyvsp[(2) - (2)].compl).refinementlistPtr->ptr)->objectPtr->export.name); + stop = 1; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } + } + } + + /* concatenate refinementlists */ + if ((yyvsp[(1) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } else { + (yyval.compl).refinementlistPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + ;} + break; + + case 381: +#line 6789 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (1)].listPtr); + (yyval.compl).refinementlistPtr = NULL; + ;} + break; + + case 382: +#line 6795 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = NULL; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 383: +#line 6803 "parser-smi.y" + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + ;} + break; + + case 384: +#line 6808 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && (yyvsp[(3) - (5)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(3) - (5)].objectPtr)->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, (yyvsp[(5) - (5)].text)); + + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->nextPtr = NULL; + (yyval.listPtr)->ptr = smiMalloc(sizeof(Option)); + ((Option *)((yyval.listPtr)->ptr))->line = thisParserPtr->firstNestedStatementLine; + ((Option *)((yyval.listPtr)->ptr))->objectPtr = (yyvsp[(3) - (5)].objectPtr); + if (! (thisModulePtr->flags & SMI_FLAG_NODESCR)) { + ((Option *)((yyval.listPtr)->ptr))->export.description = (yyvsp[(5) - (5)].text); + } else { + smiFree((yyvsp[(5) - (5)].text)); + } + ;} + break; + + case 385: +#line 6836 "parser-smi.y" + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + ;} + break; + + case 386: +#line 6844 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && (yyvsp[(3) - (8)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(3) - (8)].objectPtr)->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + + thisParserPtr->flags &= ~FLAG_CREATABLE; + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->nextPtr = NULL; + (yyval.listPtr)->ptr = smiMalloc(sizeof(Refinement)); + ((Refinement *)((yyval.listPtr)->ptr))->line = + thisParserPtr->firstNestedStatementLine; + ((Refinement *)((yyval.listPtr)->ptr))->objectPtr = (yyvsp[(3) - (8)].objectPtr); + ((Refinement *)((yyval.listPtr)->ptr))->typePtr = (yyvsp[(4) - (8)].typePtr); + if ((yyvsp[(4) - (8)].typePtr)) { + (yyvsp[(4) - (8)].typePtr)->parentPtr = (yyvsp[(3) - (8)].objectPtr)->typePtr; + } + ((Refinement *)((yyval.listPtr)->ptr))->writetypePtr = (yyvsp[(5) - (8)].typePtr); + if ((yyvsp[(5) - (8)].typePtr)) { + (yyvsp[(5) - (8)].typePtr)->parentPtr = (yyvsp[(3) - (8)].objectPtr)->typePtr; + } + ((Refinement *)((yyval.listPtr)->ptr))->export.access = (yyvsp[(6) - (8)].access); + if (! (thisParserPtr->flags & SMI_FLAG_NODESCR)) { + ((Refinement *)((yyval.listPtr)->ptr))->export.description = (yyvsp[(8) - (8)].text); + } else { + smiFree((yyvsp[(8) - (8)].text)); + } + ;} + break; + + case 387: +#line 6883 "parser-smi.y" + { + if ((yyvsp[(2) - (2)].typePtr)->export.name) { + (yyval.typePtr) = duplicateType((yyvsp[(2) - (2)].typePtr), 0, thisParserPtr); + } else { + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + } + ;} + break; + + case 388: +#line 6891 "parser-smi.y" + { + (yyval.typePtr) = NULL; + ;} + break; + + case 389: +#line 6897 "parser-smi.y" + { + /* must not be present in PIBs */ + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "WRITE-SYNTAX"); + if ((yyvsp[(2) - (2)].typePtr)->export.name) { + (yyval.typePtr) = duplicateType((yyvsp[(2) - (2)].typePtr), 0, thisParserPtr); + } else { + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + } + ;} + break; + + case 390: +#line 6908 "parser-smi.y" + { + (yyval.typePtr) = NULL; + ;} + break; + + case 391: +#line 6914 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 392: +#line 6920 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MIN-ACCESS"); + (yyval.access) = (yyvsp[(2) - (2)].access); + ;} + break; + + case 393: +#line 6926 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-MIN-ACCESS"); + if ((yyvsp[(2) - (2)].access) == SMI_ACCESS_REPORT_ONLY) + smiPrintError(thisParserPtr, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS); + (yyval.access) = (yyvsp[(2) - (2)].access); + ;} + break; + + case 394: +#line 6934 "parser-smi.y" + { + (yyval.access) = SMI_ACCESS_UNKNOWN; + ;} + break; + + case 395: +#line 6940 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_AGENTCAPABILITIES; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 396: +#line 6950 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "AGENT-CAAPABILITIES"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("AGENT-CAPABILITIES", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "AGENT-CAPABILITIES", + "SNMPv2-CONF"); + } + ;} + break; + + case 397: +#line 6972 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(10) - (10)].text)); + ;} + break; + + case 398: +#line 6978 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(16) - (17)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (17)].id), &objectPtr); + + setObjectName(objectPtr, (yyvsp[(1) - (17)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_AGENTCAPABILITIES); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(8) - (17)].status)); + setObjectDescription(objectPtr, (yyvsp[(10) - (17)].text), thisParserPtr); + if ((yyvsp[(12) - (17)].text)) { + setObjectReference(objectPtr, (yyvsp[(12) - (17)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + /* + * TODO: PRODUCT_RELEASE Text + * TODO: ModulePart_Capabilities + */ + (yyval.err) = 0; + ;} + break; + + case 399: +#line 7008 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 400: +#line 7010 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 401: +#line 7014 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 402: +#line 7016 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 403: +#line 7020 "parser-smi.y" + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ((yyvsp[(2) - (2)].modulePtr) == thisModulePtr) + thisParserPtr->capabilitiesModulePtr = NULL; + else + thisParserPtr->capabilitiesModulePtr = (yyvsp[(2) - (2)].modulePtr); + ;} + break; + + case 404: +#line 7036 "parser-smi.y" + { + if (thisParserPtr->capabilitiesModulePtr) { + checkImports(thisParserPtr->capabilitiesModulePtr, + thisParserPtr); + thisParserPtr->capabilitiesModulePtr = NULL; + } + (yyval.err) = 0; + ;} + break; + + case 405: +#line 7047 "parser-smi.y" + { +#if 0 + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].listPtr); + (yyval.listPtr)->nextPtr = NULL; +#else + (yyval.listPtr) = NULL; +#endif + ;} + break; + + case 406: +#line 7057 "parser-smi.y" + { +#if 0 + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].listPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); +#else + (yyval.listPtr) = NULL; +#endif + ;} + break; + + case 407: +#line 7074 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 408: +#line 7080 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (2)].id)); + /* TODO: handle objectIdentifier */ + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (2)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + ;} + break; + + case 409: +#line 7089 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (1)].id)); + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (1)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 410: +#line 7099 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 411: +#line 7101 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 412: +#line 7105 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 413: +#line 7107 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 414: +#line 7111 "parser-smi.y" + { + if ((yyvsp[(2) - (2)].objectPtr)) { + variationkind = (yyvsp[(2) - (2)].objectPtr)->export.nodekind; + } else { + variationkind = SMI_NODEKIND_UNKNOWN; + } + ;} + break; + + case 415: +#line 7119 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_SYNTAX); + } + ;} + break; + + case 416: +#line 7126 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_WRITESYNTAX); + } + ;} + break; + + case 417: +#line 7134 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_CREATION); + } + ;} + break; + + case 418: +#line 7141 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_DEFVAL); + } else if ((yyvsp[(11) - (11)].valuePtr)) { + adjustDefval(thisParserPtr, + (yyvsp[(11) - (11)].valuePtr), (yyvsp[(2) - (11)].objectPtr)->typePtr, + thisParserPtr->line); + smiCheckValueType(thisParserPtr, + (yyvsp[(11) - (11)].valuePtr), (yyvsp[(2) - (11)].objectPtr)->typePtr, + thisParserPtr->line); + } + ;} + break; + + case 419: +#line 7155 "parser-smi.y" + { + thisParserPtr->flags &= ~FLAG_CREATABLE; + (yyval.err) = 0; + variationkind = SMI_NODEKIND_UNKNOWN; + + checkDescr(thisParserPtr, (yyvsp[(14) - (14)].text)); + ;} + break; + + case 420: +#line 7165 "parser-smi.y" + { (yyval.access) = (yyvsp[(2) - (2)].access); ;} + break; + + case 421: +#line 7167 "parser-smi.y" + { (yyval.access) = 0; ;} + break; + + case 422: +#line 7171 "parser-smi.y" + { + if (!strcmp((yyvsp[(1) - (1)].id), "not-implemented")) { + (yyval.access) = SMI_ACCESS_NOT_IMPLEMENTED; + } else if (!strcmp((yyvsp[(1) - (1)].id), "accessible-for-notify")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_NOTIFY; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-create")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; /* TODO */ + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + } + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + ;} + break; + + case 423: +#line 7236 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 424: +#line 7238 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 425: +#line 7242 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 426: +#line 7244 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 427: +#line 7248 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 9848 "parser-smi.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 7251 "parser-smi.y" + + +#endif + diff --git a/lib/parser-smi.h b/lib/parser-smi.h new file mode 100644 index 0000000..8c7b3a2 --- /dev/null +++ b/lib/parser-smi.h @@ -0,0 +1,32 @@ +/* + * parser-smi.h -- + * + * Definition for the SMIv1/v2 parser. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-smi.h 1061 2000-12-11 09:11:00Z strauss $ + */ + +#ifndef _PARSER_SMI_H +#define _PARSER_SMI_H + +#include + +#include "data.h" + + + +#define YYERROR_VERBOSE + + + +extern int smiparse(); + + + +#endif /* _PARSER_SMI_H */ + diff --git a/lib/parser-smi.tab.h b/lib/parser-smi.tab.h new file mode 100644 index 0000000..a85fad8 --- /dev/null +++ b/lib/parser-smi.tab.h @@ -0,0 +1,271 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT_DOT = 258, + COLON_COLON_EQUAL = 259, + UPPERCASE_IDENTIFIER = 260, + LOWERCASE_IDENTIFIER = 261, + NUMBER = 262, + NEGATIVENUMBER = 263, + NUMBER64 = 264, + NEGATIVENUMBER64 = 265, + BIN_STRING = 266, + HEX_STRING = 267, + QUOTED_STRING = 268, + ACCESS = 269, + AGENT_CAPABILITIES = 270, + APPLICATION = 271, + AUGMENTS = 272, + BEGIN_ = 273, + BITS = 274, + CHOICE = 275, + CONTACT_INFO = 276, + CREATION_REQUIRES = 277, + COUNTER32 = 278, + COUNTER64 = 279, + DEFINITIONS = 280, + DEFVAL = 281, + DESCRIPTION = 282, + DISPLAY_HINT = 283, + END = 284, + ENTERPRISE = 285, + EXPORTS = 286, + EXTENDS = 287, + FROM = 288, + GROUP = 289, + GAUGE32 = 290, + IDENTIFIER = 291, + IMPLICIT = 292, + IMPLIED = 293, + IMPORTS = 294, + INCLUDES = 295, + INDEX = 296, + INSTALL_ERRORS = 297, + INTEGER = 298, + INTEGER32 = 299, + INTEGER64 = 300, + IPADDRESS = 301, + LAST_UPDATED = 302, + MACRO = 303, + MANDATORY_GROUPS = 304, + MAX_ACCESS = 305, + MIN_ACCESS = 306, + MODULE = 307, + MODULE_COMPLIANCE = 308, + MODULE_IDENTITY = 309, + NOT_ACCESSIBLE = 310, + NOTIFICATIONS = 311, + NOTIFICATION_GROUP = 312, + NOTIFICATION_TYPE = 313, + OBJECT = 314, + OBJECT_GROUP = 315, + OBJECT_IDENTITY = 316, + OBJECT_TYPE = 317, + OBJECTS = 318, + OCTET = 319, + OF = 320, + ORGANIZATION = 321, + OPAQUE = 322, + PIB_ACCESS = 323, + PIB_DEFINITIONS = 324, + PIB_INDEX = 325, + PIB_MIN_ACCESS = 326, + PIB_REFERENCES = 327, + PIB_TAG = 328, + POLICY_ACCESS = 329, + PRODUCT_RELEASE = 330, + REFERENCE = 331, + REVISION = 332, + SEQUENCE = 333, + SIZE = 334, + STATUS = 335, + STRING = 336, + SUBJECT_CATEGORIES = 337, + SUPPORTS = 338, + SYNTAX = 339, + TEXTUAL_CONVENTION = 340, + TIMETICKS = 341, + TRAP_TYPE = 342, + UNIQUENESS = 343, + UNITS = 344, + UNIVERSAL = 345, + UNSIGNED32 = 346, + UNSIGNED64 = 347, + VALUE = 348, + VARIABLES = 349, + VARIATION = 350, + WRITE_SYNTAX = 351 + }; +#endif +/* Tokens. */ +#define DOT_DOT 258 +#define COLON_COLON_EQUAL 259 +#define UPPERCASE_IDENTIFIER 260 +#define LOWERCASE_IDENTIFIER 261 +#define NUMBER 262 +#define NEGATIVENUMBER 263 +#define NUMBER64 264 +#define NEGATIVENUMBER64 265 +#define BIN_STRING 266 +#define HEX_STRING 267 +#define QUOTED_STRING 268 +#define ACCESS 269 +#define AGENT_CAPABILITIES 270 +#define APPLICATION 271 +#define AUGMENTS 272 +#define BEGIN_ 273 +#define BITS 274 +#define CHOICE 275 +#define CONTACT_INFO 276 +#define CREATION_REQUIRES 277 +#define COUNTER32 278 +#define COUNTER64 279 +#define DEFINITIONS 280 +#define DEFVAL 281 +#define DESCRIPTION 282 +#define DISPLAY_HINT 283 +#define END 284 +#define ENTERPRISE 285 +#define EXPORTS 286 +#define EXTENDS 287 +#define FROM 288 +#define GROUP 289 +#define GAUGE32 290 +#define IDENTIFIER 291 +#define IMPLICIT 292 +#define IMPLIED 293 +#define IMPORTS 294 +#define INCLUDES 295 +#define INDEX 296 +#define INSTALL_ERRORS 297 +#define INTEGER 298 +#define INTEGER32 299 +#define INTEGER64 300 +#define IPADDRESS 301 +#define LAST_UPDATED 302 +#define MACRO 303 +#define MANDATORY_GROUPS 304 +#define MAX_ACCESS 305 +#define MIN_ACCESS 306 +#define MODULE 307 +#define MODULE_COMPLIANCE 308 +#define MODULE_IDENTITY 309 +#define NOT_ACCESSIBLE 310 +#define NOTIFICATIONS 311 +#define NOTIFICATION_GROUP 312 +#define NOTIFICATION_TYPE 313 +#define OBJECT 314 +#define OBJECT_GROUP 315 +#define OBJECT_IDENTITY 316 +#define OBJECT_TYPE 317 +#define OBJECTS 318 +#define OCTET 319 +#define OF 320 +#define ORGANIZATION 321 +#define OPAQUE 322 +#define PIB_ACCESS 323 +#define PIB_DEFINITIONS 324 +#define PIB_INDEX 325 +#define PIB_MIN_ACCESS 326 +#define PIB_REFERENCES 327 +#define PIB_TAG 328 +#define POLICY_ACCESS 329 +#define PRODUCT_RELEASE 330 +#define REFERENCE 331 +#define REVISION 332 +#define SEQUENCE 333 +#define SIZE 334 +#define STATUS 335 +#define STRING 336 +#define SUBJECT_CATEGORIES 337 +#define SUPPORTS 338 +#define SYNTAX 339 +#define TEXTUAL_CONVENTION 340 +#define TIMETICKS 341 +#define TRAP_TYPE 342 +#define UNIQUENESS 343 +#define UNITS 344 +#define UNIVERSAL 345 +#define UNSIGNED32 346 +#define UNSIGNED64 347 +#define VALUE 348 +#define VARIABLES 349 +#define VARIATION 350 +#define WRITE_SYNTAX 351 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 1288 "parser-smi.y" +{ + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} +/* Line 1489 of yacc.c. */ +#line 264 "parser-smi.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/lib/parser-smi.y b/lib/parser-smi.y new file mode 100644 index 0000000..d7ff04f --- /dev/null +++ b/lib/parser-smi.y @@ -0,0 +1,7253 @@ +/* + * parser-smi.y -- + * + * Syntax rules for parsing the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-smi.y 8090 2008-04-18 12:56:29Z strauss $ + */ + +%{ + +#include + +#ifdef BACKEND_SMI + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" +#include "scanner-smi.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp is not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static int impliedFlag; +static SmiNodekind variationkind; +static SmiBasetype defaultBasetype; +static int indexFlag; + +/* + * Values for the indexFlag variable + */ +#define INDEXFLAG_NONE 0 +#define INDEXFLAG_PIBINDEX 1 +#define INDEXFLAG_AUGMENTS 2 +#define INDEXFLAG_EXTENDS 3 + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + + +static char *convertImportv2[] = { + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1065-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1065-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1065-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1065-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1065-SMI", "private", "SNMPv2-SMI", "private", + "RFC1065-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1065-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1065-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1065-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1065-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1065-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + NULL, NULL, NULL, NULL +}; + + + +static void +checkDescr(Parser *parser, char *descr) +{ + if (descr) { + if (descr[0] == 0) { + smiPrintError(parser, ERR_EMPTY_DESCRIPTION); + } + /* we might want to add more checks since I have recently + seen things like DESCRIPTION "." to cirumvent warnings */ + } +} + + + +static void +checkNameLen(Parser *parser, char *name, int error_32, int error_64) +{ + int len = strlen(name); + + if (len > 64) { + smiPrintError(parser, error_64, name); + } else if (len > 32) { + smiPrintError(parser, error_32, name); + } +} + + + +static void +checkModuleName(Parser *parserPtr, Module *modulePtr) +{ + static char *mib_ignore[] = { + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + static char *pib_ignore[] = { + "COPS-PR-SPPI", "COPS-PR-SPPI-TC", + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + const char *name = thisModulePtr->export.name; + const int len = strlen(name); + int i; + + switch (modulePtr->export.language) { + case SMI_LANGUAGE_SMIV1: + case SMI_LANGUAGE_SMIV2: + case SMI_LANGUAGE_SMING: + for (i = 0; mib_ignore[i]; i++) { + if (strcmp(mib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-MIB") != 0)) { + smiPrintError(parserPtr, ERR_MIB_MODULENAME_SUFFIX, name); + return; + } + break; + case SMI_LANGUAGE_SPPI: + for (i = 0; pib_ignore[i]; i++) { + if (strcmp(pib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-PIB") != 0)) { + smiPrintError(parserPtr, ERR_PIB_MODULENAME_SUFFIX, name); + } + break; + case SMI_LANGUAGE_UNKNOWN: + break; + } +} + + + +static void +checkModuleIdentity(Parser *parserPtr, Module *modulePtr) +{ + if ((modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (modulePtr->numModuleIdentities < 1) + && strcmp(modulePtr->export.name, "SNMPv2-SMI") + && strcmp(modulePtr->export.name, "SNMPv2-CONF") + && strcmp(modulePtr->export.name, "SNMPv2-TC") + && strcmp(modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parserPtr, ERR_NO_MODULE_IDENTITY); + } +} + + + +static void +checkObjects(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Node *nodePtr; + int i; + Type *counterTypePtr, *counter32TypePtr, *counter64TypePtr; + + counterTypePtr = findTypeByName("Counter"); + counter32TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter32"); + counter64TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter64"); + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) && + objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Set nodekinds of all newly defined objects. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_VALUEASSIGNMENT) || + (objectPtr->export.decl == SMI_DECL_OBJECTIDENTITY)) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF)) { + objectPtr->export.nodekind = SMI_NODEKIND_TABLE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } else if ((objectPtr->export.decl == SMI_DECL_NOTIFICATIONTYPE) || + (objectPtr->export.decl == SMI_DECL_TRAPTYPE)) { + objectPtr->export.nodekind = SMI_NODEKIND_NOTIFICATION; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTGROUP) || + (objectPtr->export.decl == SMI_DECL_NOTIFICATIONGROUP)) { + objectPtr->export.nodekind = SMI_NODEKIND_GROUP; + } else if (objectPtr->export.decl == SMI_DECL_MODULECOMPLIANCE) { + objectPtr->export.nodekind = SMI_NODEKIND_COMPLIANCE; + } else if (objectPtr->export.decl == SMI_DECL_AGENTCAPABILITIES) { + objectPtr->export.nodekind = SMI_NODEKIND_CAPABILITIES; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_COLUMN; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind == SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_SCALAR; + } + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if (objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Check whether the associated type resolves to a known base type. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parserPtr, ERR_BASETYPE_UNKNOWN, + objectPtr->line, + objectPtr->typePtr->export.name ? + objectPtr->typePtr->export.name : "[unknown]", + objectPtr->export.name); + if (objectPtr->nodePtr->parentPtr->firstObjectPtr->export.nodekind + == SMI_NODEKIND_TABLE) { + /* the parent node is a table node, so assume this is + * a row node. this adjusts missing INDEXs in RFC 1158. + */ + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } + } + + /* + * Mark types that are referenced in this module. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->typePtr->export.decl == SMI_DECL_TYPEDEF + || objectPtr->typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + || objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE)) { + addTypeFlags(objectPtr->typePtr, FLAG_INSYNTAX); + if (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) { + addTypeFlags(objectPtr->typePtr->parentPtr, FLAG_INSYNTAX); + } + } + + /* + * Check whether the status of the associated type matches the + * status of the object. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->export.status < objectPtr->typePtr->export.status)) { + if (objectPtr->typePtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + if (objectPtr->typePtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + } + + /* + * Check the nodekind of the parent node. + */ + + if (parentPtr) { + switch (objectPtr->export.nodekind) { + case SMI_NODEKIND_COLUMN: + if (parentPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parserPtr, ERR_COLUMN_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_ROW: + if (parentPtr->export.nodekind != SMI_NODEKIND_TABLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parentPtr->typePtr && parentPtr->typePtr->parentPtr && + strcmp(parentPtr->typePtr->parentPtr->export.name, + objectPtr->typePtr->export.name)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ROW_TYPE_MISMATCH, + objectPtr->line, + objectPtr->export.name); + } + break; + case SMI_NODEKIND_TABLE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_SCALAR: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_SCALAR_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if ((parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parserPtr && parentPtr->nodePtr->parentPtr && + parentPtr->nodePtr->parentPtr->lastObjectPtr) { + Object *parent2Ptr = parentPtr->nodePtr->parentPtr->lastObjectPtr; + if ((parent2Ptr->export.nodekind != SMI_NODEKIND_NODE) && + (parent2Ptr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, + ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, + objectPtr->export.name); + } + } + break; + case SMI_NODEKIND_NODE: + /* Node defined by OBJECT IDENTIFIER assignments can have + arbitrary parent node. */ + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (objectPtr->export.decl != SMI_DECL_VALUEASSIGNMENT)) { + smiPrintErrorAtLine(parserPtr, ERR_NODE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_GROUP: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_GROUP_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_COMPLIANCE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_COMPLIANCE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_CAPABILITIES: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_CAPABILITIES_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + } + } + + /* + * Check whether groups only contain scalars, columns and + * notifications. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + smiCheckGroupMembers(parserPtr, objectPtr); + } + + /* + * Check whether compliance statements contain out of date + * groups or objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + smiCheckComplianceStatus(parserPtr, objectPtr); + } + + /* + * Check whether notification statements contain useful + * objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiCheckNotificationOid(parserPtr, modulePtr, objectPtr); + smiCheckNotificationMembers(parserPtr, objectPtr); + } + + if (modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Check whether tables and rows are not accessible + * (RFC 2578 7.1.12). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + /* + * Check whether counter objects are read-only or + * accessible-for-notify (RFC 2578, 7.1.6). + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) || + (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN)) && + (objectPtr->export.access != SMI_ACCESS_NOTIFY) && + (objectPtr->export.access != SMI_ACCESS_READ_ONLY) && + (smiTypeDerivedFrom(objectPtr->typePtr, counterTypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter32TypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter64TypePtr))) { + smiPrintErrorAtLine(parserPtr, ERR_COUNTER_ACCESS, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * Check whether a row's subid is 1, see RFC 2578 7.10 (1). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + int len; + + if (objectPtr->nodePtr->subid != 1) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_SUBID_ONE, + objectPtr->line, objectPtr->export.name); + } + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Entry")) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_ENTRY, + objectPtr->line, objectPtr->export.name); + } else { + + /* + * This misreports some cases where the table name + * does not have the "*Table" suffix. This is trying + * to allow Entry names of either fooTableEntry or + * fooEntry. + */ + if (parentPtr && + !(((int)strlen(parentPtr->export.name) == len || + (int)strlen(parentPtr->export.name) == len - 5) && + !strncmp(objectPtr->export.name, parentPtr->export.name, + len - 5))) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_TABLENAME, + objectPtr->line, + objectPtr->export.name, + parentPtr->export.name); + } + } + } + + /* + * Check whether a row's SEQUENCE contains exactly the list + * of child nodes (columns). An unknown SEQUENCE type + * is handled later. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW && + ((objectPtr->typePtr->flags & FLAG_INCOMPLETE) == 0)) { + List *p; + Node *seqNodePtr, *childNodePtr; + Object *colPtr; + int i; + + /* + * Walk through the SEQUENCE elements and find those + * that are misordered or have no matching columnar object. + */ + for (p = objectPtr->typePtr->listPtr, i = 1, + childNodePtr = objectPtr->nodePtr->firstChildPtr; + p && childNodePtr; + p = p->nextPtr, childNodePtr = childNodePtr->nextPtr, i++) { + seqNodePtr = ((Object *)p->ptr)->nodePtr; + + if (seqNodePtr->parentPtr != childNodePtr->parentPtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + continue; + } + + if (seqNodePtr != childNodePtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_ORDER, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + break; + } + } + if ((p != NULL) && (childNodePtr == NULL)) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + } + + /* + * Walk through all child objects and find those + * that were missing in the SEQUENCE. + */ + for (childNodePtr = objectPtr->nodePtr->firstChildPtr; + childNodePtr; childNodePtr = childNodePtr->nextPtr) { + colPtr = findObjectByModuleAndNode(modulePtr, childNodePtr); + if (!colPtr) continue; + for (p = objectPtr->typePtr->listPtr; p; p = p->nextPtr) { + if (((Object *)p->ptr)->nodePtr == colPtr->nodePtr) + break; + } + if (!p) { + if (colPtr->export.name) { + /* + * Don't complain, if it's an implcitly defined + * unnamed node (could happen for parent node of + * TRAP-TYPE definitions). + */ + smiPrintErrorAtLine(parserPtr, + ERR_SEQUENCE_MISSING_COLUMN, + objectPtr->typePtr->line, + objectPtr->typePtr->export.name, + colPtr->export.name); + } + } + } + + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE) { + int len; + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Table")) { + smiPrintErrorAtLine(parserPtr, ERR_TABLENAME_TABLE, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * TODO: check whether the row is the only node below the + * table node + */ + + /* + * Check references to unknown identifiers. + */ + + if ((objectPtr->flags & FLAG_INCOMPLETE) && + (objectPtr->export.decl != SMI_DECL_IMPL_OBJECT)) { + if (objectPtr->export.name) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + objectPtr->line, objectPtr->export.name); + } else { + smiPrintErrorAtLine(parserPtr, ERR_IMPLICIT_NODE, + objectPtr->line); + } + } + + /* + * Adjust the status of implicit type definitions. + */ + + if (objectPtr->typePtr + && (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) + && (objectPtr->typePtr->export.status == SMI_STATUS_UNKNOWN)) { + objectPtr->typePtr->export.status = objectPtr->export.status; + } + + /* + * Link implicit type definition from refinements into + * the type derivation tree. Adjust the status of implicit + * type definitions in refinements. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + + List *listPtr; + + for (listPtr = objectPtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + + Refinement *refinementPtr; + Type *typePtr; + + refinementPtr = ((Refinement *)(listPtr->ptr)); + typePtr = refinementPtr->typePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + typePtr = refinementPtr->writetypePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + } + /* relocate the refinement type into the type tree */ + /* relocate the write refinement type into the type tree */ + } + + /* + * Set the oidlen/oid values that are not yet correct. + */ + + if (objectPtr->export.oidlen == 0) { + if (objectPtr->nodePtr->oidlen == 0) { + for (nodePtr = objectPtr->nodePtr, i = 1; + nodePtr->parentPtr != thisParserPtr->pendingNodePtr && + nodePtr->parentPtr != smiHandle->rootNodePtr && + nodePtr != nodePtr->parentPtr && + i <= 128; + nodePtr = nodePtr->parentPtr, i++); + if ((objectPtr->export.name) && + ((i > 128) || (nodePtr == nodePtr->parentPtr))) { + smiPrintErrorAtLine(parserPtr, ERR_OID_RECURSIVE, + objectPtr->line, + objectPtr->export.name); + } + objectPtr->nodePtr->oid = smiMalloc(i * sizeof(SmiSubid)); + objectPtr->nodePtr->oidlen = i; + for (nodePtr = objectPtr->nodePtr; i > 0; i--) { + objectPtr->nodePtr->oid[i-1] = nodePtr->subid; + nodePtr = nodePtr->parentPtr; + } + } + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen; + objectPtr->export.oid = objectPtr->nodePtr->oid; + } + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) + && (objectPtr->export.nodekind != SMI_NODEKIND_NODE) + && objectPtr->export.name + && objectPtr->export.oid[objectPtr->export.oidlen-1] == 0 + && objectPtr->export.oidlen != 2 && objectPtr->export.oid[0] != 0) { + smiPrintErrorAtLine(parserPtr, ERR_OID_ADMIN_ZERO, + objectPtr->line, + objectPtr->export.name); + } + + /* + * Check whether the module identity is registered in a well + * known controlled location. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + smiCheckModuleIdentityRegistration(parserPtr, objectPtr); + } + + /* + * Check table linkage constraints for row objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + switch (objectPtr->export.indexkind) { + case SMI_INDEX_INDEX: + smiCheckIndex(parserPtr, objectPtr); + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + smiCheckAugment(parserPtr, objectPtr); + break; + default: + break; + } + } + + /* + * Determine the longest common OID prefix of all nodes. + */ + + if (!modulePtr->prefixNodePtr) { + modulePtr->prefixNodePtr = objectPtr->nodePtr; + } else { + if (objectPtr->nodePtr->oidlen < modulePtr->prefixNodePtr->oidlen) { + Node *nodePtr = findNodeByOid(objectPtr->nodePtr->oidlen, + modulePtr->prefixNodePtr->oid); + if (nodePtr) + modulePtr->prefixNodePtr = nodePtr; + else + smiPrintError(parserPtr, ERR_OTHER_ERROR, + "Failed to create complete object tree - " + "expect incorrect output"); + } + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) { + if (modulePtr->prefixNodePtr->oid[i] != + objectPtr->nodePtr->oid[i]) { + modulePtr->prefixNodePtr = + findNodeByOid(i, modulePtr->prefixNodePtr->oid); + break; + } + } + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + /* + * Check whether all objects and notifications are contained in at + * least one conformance group (RFC 2580 3.3 and 4.1). + */ + + smiCheckGroupMembership(parserPtr, objectPtr); + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SPPI) { + Object *parentPtr; + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + /* + * All checks for SPPI constructs + */ + if (objectPtr->nodePtr->parentPtr) + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + else + parentPtr = NULL; + + /* + * Do all rows contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if (parentPtr && + (parentPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.indexkind != SMI_INDEX_INDEX) && + (objectPtr->export.indexkind != SMI_INDEX_AUGMENT) && + (objectPtr->export.indexkind != SMI_INDEX_SPARSE)) + smiPrintErrorAtLine(parserPtr, ERR_ROW_LACKS_PIB_INDEX, + objectPtr->line); + + /* + * Does any non row contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if ((objectPtr->export.nodekind != SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, + objectPtr->line); + + /* + * Check the PIB-INDEX and other indices + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind == SMI_INDEX_INDEX)) { + + /* + * Only the first element (PIB-INDEX) has to be an InstanceId. + * See RFC 3159 7.5 + */ + if (objectPtr->listPtr && objectPtr->listPtr->ptr) { + Object *pibindex = (Object *)objectPtr->listPtr->ptr; + if (pibindex->typePtr && pibindex->typePtr->export.name && + strcmp(pibindex->typePtr->export.name, "InstanceId")) + smiPrintErrorAtLine(thisParserPtr, ERR_PIB_INDEX_NOT_INSTANCEID, + pibindex->line, pibindex->export.name); + } + } + + /* + * Do all tables contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.access == SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_TABLE_LACKS_PIB_ACCESS, + objectPtr->line); + + /* + * Does any non table types contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_NODE) || + (objectPtr->export.nodekind == SMI_NODEKIND_ROW) || + (objectPtr->export.nodekind == SMI_NODEKIND_SCALAR)) && + (objectPtr->export.access != SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_ACCESS_FOR_NON_TABLE, + objectPtr->line); + + /* + * Check the UNIQUENESS clause and its entries + * See RFC 3159 7.9 + */ + if (objectPtr->uniquenessPtr) { + if (objectPtr->export.nodekind != SMI_NODEKIND_ROW) + smiPrintErrorAtLine(parserPtr, ERR_UNIQUENESS_FOR_NON_ROW, + objectPtr->line); + else + smiCheckUniqueness(parserPtr, objectPtr); + } + + /* + * Does the PIB-REFERENCES object point to a PRC (table)? + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId") && + objectPtr->relatedPtr && + (objectPtr->relatedPtr->export.nodekind != SMI_NODEKIND_ROW)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_NOT_ROW, + objectPtr->line); + + /* + * Do all PIB-TAGs point to objects with a SYNTAX of TagId? + * See RFC 3159 7.12 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId") && + objectPtr->relatedPtr && objectPtr->relatedPtr->typePtr && + objectPtr->relatedPtr->typePtr->export.name && + strcmp(objectPtr->relatedPtr->typePtr->export.name, "TagId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_TYPE, objectPtr->line); + + /* + * Is the attribute member of at least one compliance group? + * See RFC 3159 9.1 + */ + if (objectPtr->export.nodekind & SMI_NODEKIND_COLUMN) { + Object *group; + int found = 0; + + for (group = modulePtr->firstObjectPtr; group; + group = group->nextPtr) { + if ((group->export.nodekind == SMI_NODEKIND_GROUP) && + group->listPtr) { + List *l; + + for (l = group->listPtr; l; l = l->nextPtr) + if (((Object *)l->ptr)->export.name && + !strcmp(((Object *)l->ptr)->export.name, + objectPtr->export.name)) { + found = 1; + break; + } + } + if (found) + break; + } + if (!found) + smiPrintErrorAtLine(parserPtr, ERR_ATTRIBUTE_NOT_IN_GROUP, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for (typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Check references to unknown types. + */ + + if ((typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && (typePtr->export.decl == SMI_DECL_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_TYPE, + typePtr->line, typePtr->export.name); + } + + /* + * Use TCs instead of type assignments in SMIv2. + */ + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2 + && typePtr->export.decl == SMI_DECL_TYPEASSIGNMENT + && typePtr->export.basetype != SMI_BASETYPE_UNKNOWN + && strcmp(thisModulePtr->export.name, "SNMPv2-SMI")) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_TYPE_ASSIGNEMENT, + typePtr->line, typePtr->export.name); + } + + /* + * Check whether we have types that are not used in this + * module. + */ + + if ((typePtr->export.decl == SMI_DECL_TYPEDEF + || typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION) + && ! (typePtr->flags & FLAG_INSYNTAX)) { + static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + smiPrintErrorAtLine(parserPtr, ERR_TYPE_UNREF, + typePtr->line, + status[typePtr->export.status], + typePtr->export.name); + } + + /* + * Complain about TCs derived from other TCs (RFC 2579 3.5). + */ + + if (typePtr->parentPtr + && typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + && typePtr->export.decl == typePtr->parentPtr->export.decl) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, + typePtr->line, + typePtr->export.name, + typePtr->parentPtr->export.name); + + if (typePtr->export.status < typePtr->parentPtr->export.status) { + if (typePtr->parentPtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + if (typePtr->parentPtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + } + } + + smiCheckTypeFormat(parserPtr, typePtr); + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static void +adjustDefval(Parser *parserPtr, SmiValue *valuePtr, Type *typePtr, int line) +{ + Object *object2Ptr; + List *bitsListPtr, *valueListPtr, *p, *pp, *nextPtr, *listPtr; + Import *importPtr; + int nBits, bit; + + if (valuePtr->basetype == SMI_BASETYPE_UNKNOWN) + return; + + if (valuePtr->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + /* a len of -1 indicates an unresolved label in ptr */ + if (valuePtr->len == -1) { + object2Ptr = findObjectByModuleAndName(parserPtr->modulePtr, + (char *)valuePtr->value.ptr); + if (!object2Ptr) { + importPtr = findImportByName( + (char *)valuePtr->value.ptr, parserPtr->modulePtr); + if (importPtr) { /* imported object */ + importPtr->use++; + object2Ptr = findObjectByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (!object2Ptr) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + line, + (char *)valuePtr->value.ptr); + smiFree(valuePtr->value.ptr); + valuePtr->value.ptr = NULL; + valuePtr->basetype = SMI_BASETYPE_UNKNOWN; + } else { + smiFree(valuePtr->value.ptr); + valuePtr->len = object2Ptr->export.oidlen; + valuePtr->value.ptr = smiMalloc(object2Ptr->export.oidlen * + sizeof(SmiSubid)); + memcpy(valuePtr->value.ptr, + object2Ptr->export.oid, + object2Ptr->export.oidlen * sizeof(SmiSubid)); + } + } + } else if (valuePtr->basetype == SMI_BASETYPE_BITS) { + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.integer32) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.integer32; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = ((NamedNumber *)(pp->ptr))->export.value.value.integer32; + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } + } else if (valuePtr->basetype == SMI_BASETYPE_ENUM) { + /* a len of -1 indicates an unresolved enum label in ptr */ + if (valuePtr->len == -1) { + for (listPtr = typePtr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name, + (char *)valuePtr->value.ptr)) { + smiFree(valuePtr->value.ptr); + valuePtr->value.integer32 = + ((NamedNumber *)(listPtr->ptr))-> + export.value.value.integer32; + valuePtr->len = 1; + break; + } + } + } + } +} + + + +static void +checkDefvals(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + + /* + * Check unknown identifiers in OID DEFVALs. + */ + + for(objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + adjustDefval(parserPtr, &objectPtr->export.value, + objectPtr->typePtr, objectPtr->line); + + if (objectPtr->export.value.len == -1) { + smiPrintErrorAtLine(parserPtr, + ERR_DEFVAL_SYNTAX, objectPtr->line); + } + + smiCheckDefault(parserPtr, objectPtr); + } +} + + + +static void +checkImportsUsage(Parser *parserPtr, Module *modulePtr) +{ + Import *importPtr; + + /* + * Check usage of all imported identifiers. + */ + + if (strcmp(modulePtr->export.name, "SNMPv2-TC") && + strcmp(modulePtr->export.name, "SNMPv2-CONF") && + strcmp(modulePtr->export.name, "RFC-1212") && + strcmp(modulePtr->export.name, "RFC-1215")) { + for(importPtr = modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + if (! strcmp(importPtr->export.module, "SNMPv2-SMI")) { + if (! strcmp(importPtr->export.name, "ExtUTCTime") + || !strcmp(importPtr->export.name, "ObjectName") + || !strcmp(importPtr->export.name, "NotificationName")) { + smiPrintErrorAtLine(parserPtr, ERR_ILLEGAL_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + } + /* checkImports() handles KIND_NOTFOUND */ + if (importPtr->use == 0 && importPtr->kind != KIND_NOTFOUND) { + smiPrintErrorAtLine(parserPtr, ERR_UNUSED_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + int j; + for (j = 0; convertImportv2[j]; j += 4) { + if ((strcmp(convertImportv2[j], + importPtr->export.module) == 0) + && (strcmp(convertImportv2[j+1], + importPtr->export.name) == 0)) { + smiPrintErrorAtLine(parserPtr, + ERR_OBSOLETE_IMPORT, + importPtr->line, + importPtr->export.name, + convertImportv2[j+2], + importPtr->export.module); + } + } + } + } + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 11 || len == 13) { + for (i = 0; i < len; i++) { + if ( (i < len-1 && ! isdigit((int) date[i])) + || (i == len-1 && date[len-1] != 'Z')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; + i < ((len == 11) ? 2 : 4); i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + if (len == 11) { + tm.tm_year += 1900; + if (tm.tm_year < 1990) + smiPrintError(parserPtr, ERR_DATE_YEAR_2DIGITS, + date, tm.tm_year); + } + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +%} + +/* + * The grammars start symbol. + */ +%start mibFile + + + +/* + * We call the parser from within the parser when IMPORTing modules, + * hence we need reentrant parser code. This is a bison feature. + */ +%pure_parser + + + +/* + * The attributes. + */ +%union { + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} + + + +/* + * Tokens and their attributes. + */ +%token DOT_DOT +%token COLON_COLON_EQUAL + +%token UPPERCASE_IDENTIFIER +%token LOWERCASE_IDENTIFIER +%token NUMBER +%token NEGATIVENUMBER +%token NUMBER64 +%token NEGATIVENUMBER64 +%token BIN_STRING +%token HEX_STRING +%token QUOTED_STRING + +%token ACCESS +%token AGENT_CAPABILITIES +%token APPLICATION +%token AUGMENTS +%token BEGIN_ +%token BITS +%token CHOICE +%token CONTACT_INFO +%token CREATION_REQUIRES +%token COUNTER32 +%token COUNTER64 +%token DEFINITIONS +%token DEFVAL +%token DESCRIPTION +%token DISPLAY_HINT +%token END +%token ENTERPRISE +%token EXPORTS +%token EXTENDS +%token FROM +%token GROUP +%token GAUGE32 +%token IDENTIFIER +%token IMPLICIT +%token IMPLIED +%token IMPORTS +%token INCLUDES +%token INDEX +%token INSTALL_ERRORS +%token INTEGER +%token INTEGER32 +%token INTEGER64 +%token IPADDRESS +%token LAST_UPDATED +%token MACRO +%token MANDATORY_GROUPS +%token MAX_ACCESS +%token MIN_ACCESS +%token MODULE +%token MODULE_COMPLIANCE +%token MODULE_IDENTITY +%token NOT_ACCESSIBLE +%token NOTIFICATIONS +%token NOTIFICATION_GROUP +%token NOTIFICATION_TYPE +%token OBJECT +%token OBJECT_GROUP +%token OBJECT_IDENTITY +%token OBJECT_TYPE +%token OBJECTS +%token OCTET +%token OF +%token ORGANIZATION +%token OPAQUE +%token PIB_ACCESS +%token PIB_DEFINITIONS +%token PIB_INDEX +%token PIB_MIN_ACCESS +%token PIB_REFERENCES +%token PIB_TAG +%token POLICY_ACCESS +%token PRODUCT_RELEASE +%token REFERENCE +%token REVISION +%token SEQUENCE +%token SIZE +%token STATUS +%token STRING +%token SUBJECT_CATEGORIES +%token SUPPORTS +%token SYNTAX +%token TEXTUAL_CONVENTION +%token TIMETICKS +%token TRAP_TYPE +%token UNIQUENESS +%token UNITS +%token UNIVERSAL +%token UNSIGNED32 +%token UNSIGNED64 +%token VALUE +%token VARIABLES +%token VARIATION +%token WRITE_SYNTAX + + + +/* + * Types of non-terminal symbols. + */ +%type mibFile +%type modules +%type module +%type moduleOid +%type moduleName +%type importIdentifier +%type importIdentifiers +%type importedKeyword +%type importedSMIKeyword +%type importedSPPIKeyword +%type linkagePart +%type linkageClause +%type importPart +%type imports +%type declarationPart +%type declarations +%type declaration +%type exportsClause +%type macroClause +%type macroName +%type choiceClause +%type typeName +%type typeSMI +%type typeSMIonly +%type typeSMIandSPPI +%type typeSPPIonly +%type typeTag +%type fuzzy_lowercase_identifier +%type valueDeclaration +%type conceptualTable +%type row +%type entryType +%type sequenceItems +%type sequenceItem +%type Syntax +%type sequenceSyntax +%type NamedBits +%type NamedBit +%type objectIdentityClause +%type objectTypeClause +%type trapTypeClause +%type descriptionClause +%type VarPart +%type VarTypes +%type VarType +%type DescrPart +%type MaxAccessPart +%type MaxOrPIBAccessPart +%type PibAccessPart +%type notificationTypeClause +%type moduleIdentityClause +%type typeDeclaration +%type typeDeclarationRHS +%type ObjectSyntax +%type sequenceObjectSyntax +%type valueofObjectSyntax +%type SimpleSyntax +%type valueofSimpleSyntax +%type sequenceSimpleSyntax +%type ApplicationSyntax +%type sequenceApplicationSyntax +%type anySubType +%type integerSubType +%type octetStringSubType +%type ranges +%type range +%type value +%type enumSpec +%type enumItems +%type enumItem +%type enumNumber +%type Status +%type Status_Capabilities +%type DisplayPart +%type UnitsPart +%type Access +%type IndexPart +%type MibIndex +%type IndexTypes +%type IndexType +%type Index +%type Entry +%type DefValPart +%type Value +%type BitsValue +%type BitNames +%type ObjectName +%type NotificationName +%type ReferPart +%type RevisionPart +%type Revisions +%type Revision +%type NotificationObjectsPart +%type ObjectGroupObjectsPart +%type Objects +%type Object +%type NotificationsPart +%type Notifications +%type Notification +%type Text +%type ExtUTCTime +%type objectIdentifier +%type subidentifiers +%type subidentifier +%type objectIdentifier_defval +%type subidentifiers_defval +%type subidentifier_defval +%type objectGroupClause +%type notificationGroupClause +%type moduleComplianceClause +%type ComplianceModulePart +%type ComplianceModules +%type ComplianceModule +%type ComplianceModuleName +%type MandatoryPart +%type MandatoryGroups +%type MandatoryGroup +%type CompliancePart +%type Compliances +%type Compliance +%type ComplianceGroup +%type ComplianceObject +%type SyntaxPart +%type WriteSyntaxPart +%type WriteSyntax +%type AccessPart +%type agentCapabilitiesClause +%type ModulePart_Capabilities +%type Modules_Capabilities +%type Module_Capabilities +%type ModuleName_Capabilities +%type CapabilitiesGroups +%type CapabilitiesGroup +%type VariationPart +%type Variations +%type Variation +%type VariationAccessPart +%type VariationAccess +%type CreationPart +%type Cells +%type Cell +%type SPPIPibReferencesPart +%type SPPIPibTagPart +%type SubjectCategoriesPart +%type SubjectCategories +%type CategoryIDs +%type CategoryID +%type UniqueType +%type UniqueTypes +%type UniqueTypesPart +%type SPPIUniquePart +%type Error +%type Errors +%type SPPIErrorsPart + +%% + +/* + * Yacc rules. + * + */ + + +/* + * One mibFile may contain multiple MIB modules. + * It's also possible that there's no module in a file. + */ +mibFile: + modules + { + $$ = 0; + } +| /* empty */ + { + $$ = 0; + } +; + +modules: module + { $$ = 0; } + | modules module + { $$ = 0; } + ; + +/* + * The general structure of a module is described at REF:RFC1902,3. . + * An example is given at REF:RFC1902,5.7. . + */ +module: moduleName + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + thisParserPtr->modulePtr = findModuleByName($1); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule($1, + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers = 0; + thisParserPtr->modulePtr-> + numStatements = 0; + thisParserPtr->modulePtr-> + numModuleIdentities = 0; + if (!strcmp($1, "SNMPv2-SMI")) { + /* + * SNMPv2-SMI is an SMIv2 module + * that cannot be identified by + * importing from SNMPv2-SMI. + */ + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + $1); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + } + moduleOid + definitions + COLON_COLON_EQUAL BEGIN_ + exportsClause + linkagePart + declarationPart + END + { + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + checkModuleName(thisParserPtr, thisModulePtr); + checkModuleIdentity(thisParserPtr, thisModulePtr); + checkObjects(thisParserPtr, thisModulePtr); + checkTypes(thisParserPtr, thisModulePtr); + checkDefvals(thisParserPtr, thisModulePtr); + checkImportsUsage(thisParserPtr, thisModulePtr); + smiCheckTypeUsage(thisParserPtr, thisModulePtr); + + thisParserPtr->capabilitiesModulePtr = NULL; + + $$ = 0; + } + ; + +moduleOid: '{' objectIdentifier '}' + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +definitions: DEFINITIONS + { } + | PIB_DEFINITIONS + { + thisModulePtr->export.language = SMI_LANGUAGE_SPPI; + } + ; + +/* + * REF:RFC1902,3.2. + */ +linkagePart: linkageClause + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +linkageClause: IMPORTS importPart ';' + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if ((thisModulePtr->export.language != SMI_LANGUAGE_SMIV2) && + (thisModulePtr->export.language != SMI_LANGUAGE_SPPI)) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + + $$ = 0; + } + + ; + +exportsClause: /* empty */ + { $$ = 0; } + | EXPORTS + { + if (thisParserPtr->modulePtr->export.language == + SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "EXPORTS"); + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if (strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI")) { + smiPrintError(thisParserPtr, ERR_EXPORTS); + } + } + /* the scanner skips until... */ + ';' + { $$ = 0; } + ; + +importPart: imports + { $$ = 0; } + | /* empty */ + { $$ = 0; } + /* TODO: ``IMPORTS ;'' allowed? refer ASN.1! */ + ; + +imports: import + { $$ = 0; } + | imports import + { $$ = 0; } + ; + +import: importIdentifiers FROM moduleName + /* TODO: multiple clauses with same moduleName + * allowed? I guess so. refer ASN.1! */ + { + Import *importPtr; + Module *modulePtr; + + /* + * Recursively call the parser to suffer + * the IMPORTS, if the module is not yet + * loaded. + */ + modulePtr = findModuleByName($3); + if (!modulePtr) { + modulePtr = loadModule($3, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + + if (modulePtr && !strcmp($3, "SNMPv2-SMI")) { + /* + * A module that imports a macro or + * type definition from SNMPv2-SMI + * seems to be SMIv2 style - but only if + * it is not SPPI yet. + */ + if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + for (importPtr = + thisModulePtr->firstImportPtr; + importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.module, + $3)) && + ((importPtr->kind == KIND_MACRO) || + (importPtr->kind == KIND_TYPE))) { + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } + } + } + + smiFree($3); + } + ; + +importIdentifiers: importIdentifier + { $$ = 0; } + | importIdentifiers ',' importIdentifier + /* TODO: might this list list be empty? */ + { $$ = 0; } + ; + +/* + * Note that some named types must not be imported, REF:RFC1902,590 . + */ +importIdentifier: LOWERCASE_IDENTIFIER + { + addImport($1, thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + | UPPERCASE_IDENTIFIER + { + addImport($1, thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + | importedKeyword + { + addImport(smiStrdup($1), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + ; + +/* + * These keywords are no real keywords. They have to be imported + * from the SMI, TC, CONF MIBs. + */ +/* + * TODO: Think! Shall we really leave these words as keywords or should + * we prefer the symbol table appropriately?? + */ +importedKeyword: importedSMIKeyword + { + /* + * There are PIBs that import e.g. Counter64 - so + * don't complain here about SMI keywords. + */ + /* if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1);*/ + $$ = $1; + } + | importedSPPIKeyword + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_TYPE_IN_MIB, $1); + $$ = $1; + } + | BITS + | INTEGER32 + | IPADDRESS + | MANDATORY_GROUPS + | MODULE_COMPLIANCE + | MODULE_IDENTITY + | OBJECT_GROUP + | OBJECT_IDENTITY + | OBJECT_TYPE + | OPAQUE + | TEXTUAL_CONVENTION + | TIMETICKS + | UNSIGNED32 + ; + +importedSMIKeyword: AGENT_CAPABILITIES + | COUNTER32 + | COUNTER64 + | GAUGE32 + | NOTIFICATION_GROUP + | NOTIFICATION_TYPE + | TRAP_TYPE + ; + +importedSPPIKeyword: INTEGER64 + | UNSIGNED64 + ; + +moduleName: UPPERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_MODULENAME_32, ERR_MODULENAME_64); + $$ = $1; + } + ; + +/* + * The paragraph at REF:RFC1902,490 lists roughly what's allowed + * in the body of an information module. + */ +declarationPart: declarations + { $$ = 0; } + | /* empty */ + { $$ = 0; } + /* TODO: might this list really be emtpy? */ + ; + +declarations: declaration + { $$ = 0; } + | declarations declaration + { $$ = 0; } + ; + +declaration: typeDeclaration + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | valueDeclaration + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectIdentityClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | trapTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | notificationTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | moduleIdentityClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | moduleComplianceClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectGroupClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | notificationGroupClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | agentCapabilitiesClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | macroClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | error '}' + { + smiPrintError(thisParserPtr, + ERR_FLUSH_DECLARATION); + yyerrok; + $$ = 1; + } + ; + +/* + * Macro clauses. Its contents are not really parsed, but skipped by + * the scanner until 'END' is read. This is just to make the SMI + * documents readable. + */ +macroClause: macroName + { + Macro *macroPtr; + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MACRO; + + macroPtr = addMacro(smiStrdup($1), + 0, thisParserPtr); + setMacroLine(macroPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + } + MACRO + { + /* + * ASN.1 macros are known to be in these + * modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1215") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI-TC")) { + smiPrintError(thisParserPtr, ERR_MACRO); + } + } + /* the scanner skips until... */ + END + { + $$ = 0; + } + ; + +macroName: MODULE_IDENTITY { $$ = $1; } + | OBJECT_TYPE { $$ = $1; } + | TRAP_TYPE { $$ = $1; } + | NOTIFICATION_TYPE { $$ = $1; } + | OBJECT_IDENTITY { $$ = $1; } + | TEXTUAL_CONVENTION { $$ = $1; } + | OBJECT_GROUP { $$ = $1; } + | NOTIFICATION_GROUP { $$ = $1; } + | MODULE_COMPLIANCE { $$ = $1; } + | AGENT_CAPABILITIES { $$ = $1; } + ; + +choiceClause: CHOICE + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_CHOICE); + } + } + /* the scanner skips until... */ + '}' + { + $$ = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + } + ; + +/* + * The only ASN.1 value declarations are for OIDs, REF:RFC1902,491 . + */ +fuzzy_lowercase_identifier: LOWERCASE_IDENTIFIER + { + $$ = $1; + } + | + UPPERCASE_IDENTIFIER + { + smiPrintError (thisParserPtr, + ERR_BAD_LOWER_IDENTIFIER_CASE, + $1); + /* xxx + if ((thisParserPtr->flags & SMI_FLAG_BE_LAX) == 0) { + YYERROR; + } + */ + $$ = $1; + } + ; + +/* valueDeclaration: LOWERCASE_IDENTIFIER */ +valueDeclaration: fuzzy_lowercase_identifier + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_VALUEASSIGNMENT; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-') && + (strcmp($1, "mib-2") || + strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + smiPrintError(thisParserPtr, + ERR_OIDNAME_INCLUDES_HYPHEN, + $1); + } + } + } + OBJECT IDENTIFIER + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $7; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_VALUEASSIGNMENT); + $$ = 0; + } + ; + +/* + * This is for simple ASN.1 style type assignments and textual conventions. + */ +typeDeclaration: typeName + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TYPEASSIGNMENT; + + checkNameLen(thisParserPtr, $1, + ERR_TYPENAME_32, ERR_TYPENAME_64); + } + COLON_COLON_EQUAL typeDeclarationRHS + { + Type *typePtr; + + if (strlen($1)) { + if ($4->export.basetype != SMI_BASETYPE_UNKNOWN) { + smiCheckTypeName(thisParserPtr, + thisModulePtr, $1, + thisParserPtr->firstStatementLine); + } + setTypeLine($4, thisParserPtr->firstStatementLine, + thisParserPtr); + setTypeName($4, $1); + $$ = 0; + } else { + $$ = 0; + } + + /* + * If we are in an SMI module, some type + * definitions derived from ASN.1 `INTEGER' + * must be modified to libsmi basetypes. + */ + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + if (!strcmp($1, "Counter32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Gauge32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Unsigned32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Counter64")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent($4, smiHandle->typeUnsigned64Ptr); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "RFC1155-SMI") || + !strcmp(thisModulePtr->export.name, "RFC1065-SMI"))) { + if (!strcmp($1, "Counter")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Gauge")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "NetworkAddress")) { + setTypeName($4, smiStrdup("NetworkAddress")); + $4->export.basetype = SMI_BASETYPE_OCTETSTRING; + setTypeParent($4, findTypeByModuleAndName( + thisModulePtr, + "IpAddress")); + } else if (!strcmp($1, "IpAddress")) { + typePtr = findTypeByModuleAndName( + thisModulePtr, "NetworkAddress"); + if (typePtr) + setTypeParent(typePtr, $4); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) { + if (!strcmp($1, "Unsigned32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Unsigned64")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent($4, smiHandle->typeUnsigned64Ptr); + } else if (!strcmp($1, "Integer64")) { + $4->export.basetype = SMI_BASETYPE_INTEGER64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + } + setTypeParent($4, smiHandle->typeInteger64Ptr); + } + } + } + ; + +typeName: UPPERCASE_IDENTIFIER + { + $$ = $1; + } + | typeSMI + { + $$ = smiStrdup($1); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_SMI_OR_SPPI, $1); + } + } + | typeSPPIonly + { + $$ = smiStrdup($1); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if ((strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) && + (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI)) + smiPrintError(thisParserPtr, ERR_TYPE_SPPI, $1); + } + ; + +typeSMI: typeSMIandSPPI + | typeSMIonly + { + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName($1, thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1); + $$ = $1; + } + ; + +typeSMIandSPPI: IPADDRESS + | TIMETICKS + | OPAQUE + | INTEGER32 + | UNSIGNED32 + ; + +typeSMIonly: COUNTER32 + | GAUGE32 + | COUNTER64 + ; + +typeSPPIonly: INTEGER64 + | UNSIGNED64 + ; + +typeDeclarationRHS: Syntax + { + if ($1->export.name) { + /* + * If we found an already defined type, + * we have to inherit a new type structure. + * (Otherwise the `Syntax' rule created + * a new type for us.) + */ + $$ = duplicateType($1, 0, thisParserPtr); + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } else { + $$ = $1; + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } + } + | TEXTUAL_CONVENTION + { + Import *importPtr; + + thisParserPtr->currentDecl = SMI_DECL_TEXTUALCONVENTION; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-TC")) { + importPtr = + findImportByName("TEXTUAL-CONVENTION", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "SNMPv2-TC"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "COPS-PR-SPPI"); + } + } + } + DisplayPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $7); + } + ReferPart + SYNTAX Syntax + { + if (($11) && !($11->export.name)) { + /* + * If the Type we found has just been + * defined, we don't have to allocate + * a new one. + */ + $$ = $11; + } else { + if (!($11)) + smiPrintError(thisParserPtr, ERR_INTERNAL); + /* + * Otherwise, we have to allocate a + * new Type struct, inherited from $10. + */ + $$ = duplicateType($11, 0, thisParserPtr); + } + setTypeDescription($$, $7, thisParserPtr); + if ($9) { + setTypeReference($$, $9, thisParserPtr); + } + setTypeStatus($$, $5); + if ($3) { + if (smiCheckFormat(thisParserPtr, + $$->export.basetype, $3, + thisParserPtr->firstStatementLine)) { + setTypeFormat($$, $3); + } + } + setTypeDecl($$, SMI_DECL_TEXTUALCONVENTION); + } + | choiceClause + { + $$ = $1; + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } + ; + +/* REF:RFC1902,7.1.12. */ +conceptualTable: SEQUENCE OF row + { + if ($3) { + $$ = addType(NULL, + SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeDecl($$, SMI_DECL_IMPL_SEQUENCEOF); + setTypeParent($$, $3); + } else { + $$ = NULL; + } + } + ; + +row: UPPERCASE_IDENTIFIER + /* + * In this case, we do NOT allow `Module.Type'. + * The identifier must be defined in the local + * module. + */ + { + Type *typePtr; + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, $1); + if (! $$) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = typePtr; + } else { + /* + * imported type. + * TODO: is this allowed in a SEQUENCE? + */ + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree($1); + } + } else { + smiFree($1); + } + } + /* TODO: this must be an entryType */ + ; + +/* REF:RFC1902,7.1.12. */ +entryType: SEQUENCE '{' sequenceItems '}' + { + $$ = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeList($$, $3); + } +; + +sequenceItems: sequenceItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | sequenceItems ',' sequenceItem + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + * NOTE: REF:RFC1902,7.1.12. was less clear, it said: + * `normally omitting the sub-typing information' + */ +sequenceItem: LOWERCASE_IDENTIFIER sequenceSyntax + { + Object *objectPtr; + Import *importPtr; + Type *typePtr; + + objectPtr = + findObjectByModuleAndName(thisParserPtr->modulePtr, + $1); + + if (!objectPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + objectPtr = addObject($1, thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE | + FLAG_SEQTYPE, + thisParserPtr); + setObjectType(objectPtr, $2); + } else { + /* + * imported object. + */ + importPtr->use++; + objectPtr = findObjectByModulenameAndName( + importPtr->export.module, $1); + smiFree($1); + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (($2 != typePtr) && + (($2->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (($2->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } else { + smiFree($1); + if (objectPtr->typePtr) { + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (($2 != typePtr) && + (($2->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (($2->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + + } else { + setObjectType(objectPtr, $2); + addObjectFlags(objectPtr, + FLAG_SEQTYPE); + } + } + + $$ = objectPtr; + } + ; + +Syntax: ObjectSyntax + { + $$ = $1; + if ($$) + defaultBasetype = $$->export.basetype; + } + | BITS '{' NamedBits '}' + /* TODO: standalone `BITS' ok? seen in RMON2-MIB */ + /* -> no, it's only allowed in a SEQUENCE {...} */ + { + Type *typePtr; + List *p; + + defaultBasetype = SMI_BASETYPE_BITS; + typePtr = addType(NULL, SMI_BASETYPE_BITS, + FLAG_INCOMPLETE, + thisParserPtr); + setTypeDecl(typePtr, SMI_DECL_IMPLICIT_TYPE); + setTypeParent(typePtr, smiHandle->typeBitsPtr); + setTypeList(typePtr, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = typePtr; + smiCheckNamedNumbersOrder(parserPtr, typePtr); + $$ = typePtr; + } + ; + +sequenceSyntax: /* ObjectSyntax */ + sequenceObjectSyntax + { + $$ = $1; + } + | BITS + { + /* TODO: */ + $$ = smiHandle->typeOctetStringPtr; + } + | UPPERCASE_IDENTIFIER anySubType + { + Type *typePtr; + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, $1); + if (! $$) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType($1, SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = typePtr; + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree($1); + } + } else { + smiFree($1); + } + } + ; + +NamedBits: NamedBit + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | NamedBits ',' NamedBit + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +NamedBit: LOWERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_BITNAME_32, ERR_BITNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDBIT_INCLUDES_HYPHEN, + $1); + } + } + } + '(' NUMBER ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value.basetype = + SMI_BASETYPE_UNSIGNED32; + $$->export.value.value.unsigned32 = $4; + /* RFC 2578 7.1.4 */ + if ($4 >= 65535*8) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_TOO_LARGE, + $1, $4); + } else { + if ($4 >= 128) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_LARGE, + $1, $4); + } + } + } + ; + +objectIdentityClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTIDENTITY; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_IDENTITY + { + Import *importPtr; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI")) { + importPtr = findImportByName("OBJECT-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "SNMPv2-SMI"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "COPS-PR-SPPI"); + } + } + } + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $8); + } + ReferPart + COLON_COLON_EQUAL + '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $13; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, $6); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($10) { + setObjectReference(objectPtr, $10, thisParserPtr); + } + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + $$ = 0; + } + ; + +objectTypeClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_TYPE + { + Import *importPtr; + + importPtr = findImportByName("OBJECT-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "SNMPv2-SMI"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "COPS-PR-SPPI"); + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "RFC-1212"); + } + } + indexFlag = 0; + } + SYNTAX Syntax /* old $6, new $6 */ + UnitsPart /* old $7, new $7 */ + MaxOrPIBAccessPart /* old $8, new $8 */ + SPPIPibReferencesPart /* SPPI only, $9 */ + SPPIPibTagPart /* SPPI only, $10 */ + STATUS Status /* old $9 $10, new $11 $12 */ + descriptionClause /* old $11, new $13 */ + SPPIErrorsPart /* SPPI only, $14 */ + ReferPart /* old $12, new $15 */ + IndexPart /* modified, old $13, new $16 */ + MibIndex /* new, $17 */ + SPPIUniquePart /* SPPI only, $18 */ + DefValPart /* old $14, new $19 */ + COLON_COLON_EQUAL '{' ObjectName '}' /* old $17, new $22 */ + { + Object *objectPtr, *parentPtr; + Type *typePtr = NULL; + + objectPtr = $22; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + if (checkObjectFlags(objectPtr, FLAG_SEQTYPE)) { + deleteObjectFlags(objectPtr, FLAG_SEQTYPE); + if ($6) { + if ($6->export.name) { + typePtr = $6; + /* + * According to RFC 3159 7.1.3. Opaque must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "Opaque")) + smiPrintError(thisParserPtr, ERR_OPAQUE_IN_SYNTAX); + /* + * According to RFC 3159 7.1.4. IpAddress must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "IpAddress")) + smiPrintError(thisParserPtr, ERR_IPADDRESS_IN_SYNTAX); + } else { + typePtr = $6->parentPtr; + } + if ((objectPtr->typePtr != typePtr) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } + setObjectType(objectPtr, $6); + if (!($6->export.name)) { + /* + * An inlined type. + */ +#if 0 /* export implicitly defined types by the node's lowercase name */ + setTypeName($6, $1); +#endif + } + setObjectUnits(objectPtr, $7); + setObjectAccess(objectPtr, $8); + if (thisParserPtr->flags & FLAG_CREATABLE) { + thisParserPtr->flags &= ~FLAG_CREATABLE; + parentPtr = + objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (parentPtr && + parentPtr->export.indexkind != + SMI_INDEX_UNKNOWN) { + /* + * add objectPtr to the parent object's + * listPtr, which is the list of columns + * needed for row creation. + * + * Note, that this would clash, if the + * parent row object-type is not yet + * defined. + */ + /* + newlistPtr = smiMalloc(sizeof(List)); + newlistPtr->nextPtr = NULL; + newlistPtr->ptr = objectPtr; + */ + /* + * Look up the parent object-type. + */ + /* + if (parentPtr->listPtr) { + for(listPtr = parentPtr->listPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = newlistPtr; + } else { + parentPtr->listPtr = newlistPtr; + } + */ + addObjectFlags(parentPtr, FLAG_CREATABLE); + setObjectCreate(parentPtr, 1); + } else { + smiPrintError(thisParserPtr, + ERR_SCALAR_READCREATE); + } + } + setObjectStatus(objectPtr, $12); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + if ($13) { + setObjectDescription(objectPtr, $13, thisParserPtr); + } + if ($15) { + setObjectReference(objectPtr, $15, thisParserPtr); + } + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * For SMI documents either $16 (IndexPart) or $17 (MibIndex) + * are used, but not both. This is signalled via the indexFlag + * which is 1 if IndexPart has been used. + */ + if (indexFlag == INDEXFLAG_AUGMENTS) { /* IndexPart was used */ + if ($16.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $16.listPtr); + setObjectImplied(objectPtr, $16.implied); + setObjectIndexkind(objectPtr, $16.indexkind); + setObjectRelated(objectPtr, $16.rowPtr); + } + } else { + if ($17.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $17.listPtr); + setObjectImplied(objectPtr, $17.implied); + setObjectIndexkind(objectPtr, $17.indexkind); + setObjectRelated(objectPtr, $17.rowPtr); + } + } + } else { + /* + * PIBs contain either PIB-INDEX or AUGMENTS or EXTENDS - + * but only with one Index entry. A PIB-INDEX may be + * followed by a full INDEX. We get the indexkind + * from the first. + * Note that PIB-INDEX/AUGMENTS/EXTENS is always + * the first element in objectPtr->listPtr. + * If an optional INDEX exists then it is + * appended to this list. + */ + if ($16.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $16.listPtr); + setObjectIndexkind(objectPtr, $16.indexkind); + setObjectRelated(objectPtr, $16.rowPtr); + } + if ($17.indexkind != SMI_INDEX_UNKNOWN) { + if (objectPtr->listPtr) { + List *p; + for (p = objectPtr->listPtr; p->nextPtr; + p = p->nextPtr); + p->nextPtr = $17.listPtr; + } + setObjectImplied(objectPtr, $17.implied); + } + } + if ($18) { + setObjectUniqueness(objectPtr, $18); + } + if ($19) { + if (objectPtr->typePtr + && (((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING) && + ($19->basetype != SMI_BASETYPE_OCTETSTRING)) + || ((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + ($19->basetype != SMI_BASETYPE_OBJECTIDENTIFIER)))) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ($19->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + smiFree($19->value.oid); + } + if (($19->basetype == SMI_BASETYPE_BITS) || + ($19->basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree($19->value.ptr); + } + smiFree($19); + } else { + setObjectValue(objectPtr, $19); + } + } + if ($9) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-REFERENCES"); + /* + * PIB-REFERENCES clauses are only allowed for + * objects with a SYNTAX of 'ReferenceId'. + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, $9); + } else { + /* + * Does this object have a SYNTAX of 'ReferenceId' + * and a PIB-REFERENCES clause? + * See RFC 3159 7.10 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_REFERENCES, + objectPtr->line); + } + if ($10) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-TAG"); + /* + * PIB-TAG clauses are only allowed for + * objects with a SYNTAX of 'TagReferenceId'. + * See RFC 3159 7.11 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, $10); + } else { + /* + * Does this object have a SYNTAX of 'TagReferenceId' + * and a PIB-TAG clause? + * See RFC 3159 7.11 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_TAG, + objectPtr->line); + + } + if ($14) { + if (objectPtr->listPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "listPtr", "INSTALL-ERRORS"); + /* + * Are INSTALL-ERRORS only used with tables? + * See RFC 3159 7.4 + */ + if (!((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF))) + smiPrintErrorAtLine(parserPtr, ERR_INSTALL_ERRORS_FOR_NON_TABLE, + objectPtr->line); + else + setObjectList(objectPtr, $14); + } + $$ = 0; + } + ; + +descriptionClause: /* empty */ + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) || + (thisModulePtr->export.language == SMI_LANGUAGE_SPPI)) + { + smiPrintError(thisParserPtr, + ERR_MISSING_DESCRIPTION); + } + $$ = NULL; + } + | DESCRIPTION Text + { + $$ = $2; + checkDescr(thisParserPtr, $2); + } + ; + +trapTypeClause: fuzzy_lowercase_identifier + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TRAPTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + TRAP_TYPE + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "TRAP-TYPE"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_TRAP_TYPE); + } + + importPtr = findImportByName("TRAP-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TRAP-TYPE", "RFC-1215"); + } + } + ENTERPRISE objectIdentifier + VarPart + DescrPart + ReferPart + COLON_COLON_EQUAL NUMBER + /* TODO: range of number? */ + { + Object *objectPtr; + Node *nodePtr; + + objectPtr = $6; + nodePtr = findNodeByParentAndSubid( + objectPtr->nodePtr, 0); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + objectPtr = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + objectPtr->nodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + objectPtr = addObject(NULL, + objectPtr->nodePtr, + $11, + FLAG_INCOMPLETE, + thisParserPtr); + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_TRAPTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, $7); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($9) { + setObjectReference(objectPtr, $9, thisParserPtr); + } + $$ = 0; + } + ; + +VarPart: VARIABLES '{' VarTypes '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +VarTypes: VarType + { + if ($1) { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } else { + $$ = NULL; + } + } + | VarTypes ',' VarType + { + List *p, *pp; + + if ($3) { + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + if ($1) { + for (pp = $1; pp->nextPtr; + pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } else { + $$ = p; + } + } else { + $$ = $1; + } + } + ; + +VarType: ObjectName + { + $$ = $1; + } + ; + +DescrPart: DESCRIPTION Text + { + $$ = $2; + checkDescr(thisParserPtr, $2); + } + | /* empty */ + { $$ = NULL; } + ; + +MaxOrPIBAccessPart: MaxAccessPart + { + $$ = $1; + } + | PibAccessPart + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "MAX-ACCESS"); + if ($1 == SMI_ACCESS_NOT_ACCESSIBLE) + smiPrintError(thisParserPtr, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS); + $$ = $1; + } + | /* empty */ + { $$ = 0; } + ; + +PibAccessPart: PibAccess Access + { $$ = $2; } + ; + +PibAccess: POLICY_ACCESS + { + smiPrintError(thisParserPtr, ERR_POLICY_ACCESS_IN_PIB); + } + | PIB_ACCESS + { } + ; + +SPPIPibReferencesPart: PIB_REFERENCES + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-REFERENCES"); + } + '{' Entry '}' + { $$ = $4; } + | /* empty */ + { $$ = 0; } + ; + +SPPIPibTagPart: PIB_TAG + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-TAG"); + } + '{' ObjectName '}' + { $$ = $4; } + | /* empty */ + { $$ = 0; } + ; + + +SPPIUniquePart: UNIQUENESS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "UNIQUENESS"); + } + '{' UniqueTypesPart '}' + { $$ = $4; } + | /* empty */ + { $$ = NULL; } + ; + +UniqueTypesPart: UniqueTypes + { $$ = $1; } + | /* empty */ + { $$ = NULL; } + ; + +UniqueTypes: UniqueType + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | UniqueTypes ',' UniqueType + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +UniqueType: ObjectName + { $$ = $1; } + ; + +SPPIErrorsPart: INSTALL_ERRORS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "INSTALL-ERRORS"); + } + '{' Errors '}' + { $$ = $4; } + | /* empty */ + { $$ = NULL; } + ; + +Errors: Error + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Errors ',' Error + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Error: LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr; + + if (($3 < 1) || ($3 > 65536)) + smiPrintError(thisParserPtr, ERR_ERROR_NUMBER_RANGE, $3); + /* + * This is not a regular object that will be added vid + * 'addObject' as error identifier have no other + * meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = $1; + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)$3; + $$ = objectPtr; + } + ; + + +MaxAccessPart: MAX_ACCESS + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) + { + smiPrintError(thisParserPtr, + ERR_MAX_ACCESS_IN_SMIV1); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MAX-ACCESS"); + } + Access + { $$ = $3; } + | ACCESS + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_ACCESS_IN_SMIV2); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "ACCESS"); + } + Access + /* TODO: limited values in v1 */ + { $$ = $3; } + ; + +notificationTypeClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + NOTIFICATION_TYPE + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-TYPE"); + + importPtr = findImportByName("NOTIFICATION-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-TYPE", + "SNMPv2-SMI"); + } + } + NotificationObjectsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL + '{' NotificationName '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, $5); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + $$ = 0; + } + ; + +moduleIdentityClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULEIDENTITY; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + MODULE_IDENTITY + { + Import *importPtr; + + importPtr = findImportByName("MODULE-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-IDENTITY", + "SNMPv2-SMI"); + } + + if (thisParserPtr->modulePtr->numModuleIdentities > 0) + { + smiPrintError(thisParserPtr, + ERR_TOO_MANY_MODULE_IDENTITIES); + } + if (thisParserPtr->modulePtr->numStatements > 0) { + smiPrintError(thisParserPtr, + ERR_MODULE_IDENTITY_NOT_FIRST); + } + } + SubjectCategoriesPart /* SPPI only */ + { + /* do nothing at the moment */ + } + LAST_UPDATED ExtUTCTime + { + setModuleLastUpdated(thisParserPtr->modulePtr, $8); + } + ORGANIZATION Text + { + if ($11 && !strlen($11)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_ORGANIZATION); + } + } + CONTACT_INFO Text + { + if ($14 && !strlen($14)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_CONTACT); + } + } + DESCRIPTION Text + { + checkDescr(thisParserPtr, $17); + } + RevisionPart + { + if ((!thisModulePtr->firstRevisionPtr) || + (thisModulePtr->firstRevisionPtr->export.date != + thisModulePtr->lastUpdated)) { + smiPrintError(thisParserPtr, + ERR_REVISION_MISSING); + addRevision(thisModulePtr->lastUpdated, + smiStrdup( + "[Revision added by libsmi due to a LAST-UPDATED clause.]"), + thisParserPtr); + } + } + COLON_COLON_EQUAL + '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $23; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + thisParserPtr->modulePtr->numModuleIdentities++; + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_MODULEIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setModuleIdentityObject(thisParserPtr->modulePtr, + objectPtr); + setModuleOrganization(thisParserPtr->modulePtr, + $11); + setModuleContactInfo(thisParserPtr->modulePtr, + $14); + setModuleDescription(thisParserPtr->modulePtr, + $17, thisParserPtr); + if ($5 != NULL) { + setObjectList(objectPtr, $5->categories); + smiFree($5); + } + /* setObjectDescription(objectPtr, $15); */ + $$ = 0; + } + ; + +SubjectCategoriesPart: SUBJECT_CATEGORIES '{' SubjectCategories '}' + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "SUBJECT-CATEGORIES"); + $$ = $3; + } + | /* empty */ + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING); + $$ = NULL; + } + ; + +SubjectCategories: CategoryIDs + { + $$ = smiMalloc(sizeof(SubjectCategories)); + $$->categories = $1; + } + ; + +CategoryIDs: CategoryID + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | CategoryIDs ',' CategoryID + { + List *p, *pp; + + if ($1->ptr == NULL) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL); + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +CategoryID: LOWERCASE_IDENTIFIER + { + Object *objectPtr; + + if (strcmp($1, "all")) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING_SUBID); + else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = "all"; + objectPtr->export.oidlen = 0; + objectPtr->export.oid = 0; + $$ = objectPtr; + } + smiFree($1); + } + | LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr; + + if (!strcmp($1, "all")) { + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID); + $$ = NULL; + } else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = $1; + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)$3; + $$ = objectPtr; + } + } + ; + +ObjectSyntax: SimpleSyntax + { + $$ = $1; + } + | typeTag SimpleSyntax + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_TAG, $1); + } + $$ = $2; + } + | conceptualTable /* TODO: possible? row? entry? */ + { + /* TODO */ + $$ = $1; + } + | row /* the uppercase name of a row */ + { + /* TODO */ + $$ = $1; + } + | entryType /* SEQUENCE { ... } phrase */ + { + /* TODO */ + $$ = $1; + } + | ApplicationSyntax + { + Import *importPtr; + + if ($1 && $1->export.name) { + importPtr = findImportByName($1->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + $$ = $1; + } + ; + +typeTag: '[' APPLICATION NUMBER ']' IMPLICIT + { $$ = 0; /* TODO: check range */ } + | '[' UNIVERSAL NUMBER ']' IMPLICIT + { $$ = 0; /* TODO: check range */ } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceObjectSyntax: sequenceSimpleSyntax + { $$ = $1; } +/* | conceptualTable /* TODO: possible? row? entry? */ +/* | row /* the uppercase name of a row */ +/* | entryType /* it's SEQUENCE { ... } phrase */ + | sequenceApplicationSyntax + { + Import *importPtr; + + if ($1 && $1->export.name) { + importPtr = findImportByName($1->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + $$ = $1; + } + ; + +valueofObjectSyntax: valueofSimpleSyntax + { $$ = $1; } + /* conceptualTables and rows do not have DEFVALs + */ + /* valueofApplicationSyntax would not introduce any + * further syntax of ObjectSyntax values. + */ + ; + +SimpleSyntax: INTEGER /* (-2147483648..2147483647) */ + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + defaultBasetype = SMI_BASETYPE_INTEGER32; + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + integerSubType + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList($$, $3); + smiCheckTypeRanges(thisParserPtr, $$); + } + | INTEGER + { + defaultBasetype = SMI_BASETYPE_ENUM; + } + enumSpec + { + List *p; + + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + } + | INTEGER32 /* (-2147483648..2147483647) */ + { + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_INTEGER32; + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + /* TODO: any need to distinguish from INTEGER? */ + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER32 + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + integerSubType + { + Import *importPtr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList($$, $3); + smiCheckTypeRanges(thisParserPtr, $$); + } + | UPPERCASE_IDENTIFIER + { + defaultBasetype = SMI_BASETYPE_ENUM; + } + enumSpec + { + Type *parentPtr; + Import *importPtr; + List *p; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER enumSpec + /* TODO: UPPERCASE_IDENTIFIER must be an INTEGER */ + { + Type *parentPtr; + Import *importPtr; + List *p; + + defaultBasetype = SMI_BASETYPE_ENUM; + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = + findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = + findTypeByModulenameAndName($1, $3); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } + setTypeList($$, $4); + for (p = $4; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + smiFree($1); + smiFree($3); + } + | UPPERCASE_IDENTIFIER integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER integerSubType + /* TODO: UPPERCASE_IDENTIFIER must be an INT/Int32. */ + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + $1, $3); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + smiFree($1); + smiFree($3); + } + | OCTET STRING /* (SIZE (0..65535)) */ + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + $$ = smiHandle->typeOctetStringPtr; + } + | OCTET STRING + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + } + octetStringSubType + { + + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + } + | UPPERCASE_IDENTIFIER octetStringSubType + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER octetStringSubType + /* TODO: UPPERCASE_IDENTIFIER must be an OCTET STR. */ + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + $1, $3); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + smiFree($1); + smiFree($3); + } + | OBJECT IDENTIFIER anySubType + { + defaultBasetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$ = smiHandle->typeObjectIdentifierPtr; + } + ; + +valueofSimpleSyntax: NUMBER /* 0..2147483647 */ + /* NOTE: Counter64 must not have a DEFVAL */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = $1; + } + | NEGATIVENUMBER /* -2147483648..0 */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NUMBER64 /* 0..18446744073709551615 */ + { + /* The scanner already checks for the language */ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = $1; + } + | NEGATIVENUMBER64 /* -9223372036854775807..0 */ + { + /* The scanner already checks for the language */ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = $1; + } + | BIN_STRING /* number or OCTET STRING */ + { + char s[9]; + int i, len, j; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = + smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &$1[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + $$->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + $$->len = (len+7)/8; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 2); + } + } + | HEX_STRING /* number or OCTET STRING */ + { + char s[3]; + int i, len; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &$1[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + $$->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + $$->len = (len+1)/2; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + } + } + | LOWERCASE_IDENTIFIER /* enumeration or named oid */ + { + $$ = smiMalloc(sizeof(SmiValue)); + if ((defaultBasetype != SMI_BASETYPE_ENUM) && + (defaultBasetype != SMI_BASETYPE_OBJECTIDENTIFIER)) { + smiPrintError(thisParserPtr, ERR_DEFVAL_SYNTAX); + $$->basetype = defaultBasetype; + if (defaultBasetype == SMI_BASETYPE_ENUM) { + $$->len = 1; + $$->value.unsigned32 = 0; + } else { + $$->len = 0; + $$->value.ptr = NULL; + } + } else { + $$->basetype = defaultBasetype; + $$->len = -1; /* indicates unresolved ptr */ + $$->value.ptr = $1; /* JS: needs strdup? */ + } + } + | QUOTED_STRING /* an OCTET STRING */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = smiStrdup($1); + $$->len = strlen($1); + } + /* NOTE: If the value is an OBJECT IDENTIFIER, then + * it must be expressed as a single ASN.1 + * identifier, and not as a collection of + * of sub-identifiers. + * REF: draft,p.34 + * Anyway, we try to accept it. But it's only + * possible for numbered sub-identifiers, since + * other identifiers would make something like + * { gaga } indistiguishable from a BitsValue. + */ + | '{' objectIdentifier_defval '}' + /* + * This is only for some MIBs with invalid numerical + * OID notation for DEFVALs. We DO NOT parse them + * correctly. We just don't want to produce a + * parser error. + */ + { + /* + * SMIv1 allows something like { 0 0 } ! + * SMIv2 does not! + */ + /* TODO: make it work correctly for SMIv1 */ + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV2); + } else { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV1); + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->len = 2; + $$->value.oid = smiMalloc(2 * sizeof(SmiSubid)); + $$->value.oid[0] = 0; + $$->value.oid[1] = 0; + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceSimpleSyntax: INTEGER anySubType + { + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER32 anySubType + { + Import *importPtr; + + /* TODO: any need to distinguish from INTEGER? */ + $$ = smiHandle->typeInteger32Ptr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + } + | OCTET STRING anySubType + { + $$ = smiHandle->typeOctetStringPtr; + } + | OBJECT IDENTIFIER anySubType + { + $$ = smiHandle->typeObjectIdentifierPtr; + } + ; + +ApplicationSyntax: IPADDRESS anySubType + { + Import *importPtr; + + $$ = findTypeByName("IpAddress"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + } + | COUNTER32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "COUNTER32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | COUNTER32 integerSubType + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter32"); + for (listPtr = $2; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | GAUGE32 /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + $$ = findTypeByName("Gauge32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | GAUGE32 integerSubType + { + Type *parentPtr; + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + parentPtr = findTypeByName("Gauge32"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | UNSIGNED32 /* (0..4294967295) */ + { + Import *importPtr; + + $$ = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | UNSIGNED32 integerSubType + { + Import *importPtr; + + $$ = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | TIMETICKS anySubType + { + Import *importPtr; + + $$ = findTypeByName("TimeTicks"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + } + | OPAQUE /* IMPLICIT OCTET STRING */ + { + Import *importPtr; + + $$ = findTypeByName("Opaque"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | OPAQUE octetStringSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByName("Opaque"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + $$ = NULL; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | COUNTER64 anySubType /* (0..18446744073709551615) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | COUNTER64 integerSubType + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter64"); + for (listPtr = $2; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | INTEGER64 /* (-9223372036854775807..9223372036854775807) */ + { + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! $$) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + $$ = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + } + | INTEGER64 integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! parentPtr) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + } + | UNSIGNED64 /* (0..18446744073709551615) */ + { + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! $$) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + $$ = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + } + | UNSIGNED64 integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! parentPtr) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceApplicationSyntax: IPADDRESS anySubType + { + Import *importPtr; + + $$ = findTypeByName("IpAddress"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + } + | COUNTER32 anySubType + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | GAUGE32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + $$ = findTypeByName("Gauge32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | UNSIGNED32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + $$ = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | TIMETICKS anySubType /* (0..4294967295) */ + { + Import *importPtr; + + $$ = findTypeByName("TimeTicks"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + } + | OPAQUE /* IMPLICIT OCTET STRING */ + { + Import *importPtr; + + $$ = findTypeByName("Opaque"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | COUNTER64 anySubType /* (0..18446744073709551615) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisModulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | INTEGER64 /* (-9223372036854775807..9223372036854775807) */ + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + $$ = findTypeByName("Integer64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + } + + importPtr = findImportByName("Integer64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } + } + | UNSIGNED64 /* (0..18446744073709551615) */ + { + Import *importPtr; + + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) && (!importPtr)) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + $$ = findTypeByName("Unsigned64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + } + + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } + } + ; + +anySubType: integerSubType + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | octetStringSubType + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | enumSpec + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | /* empty */ + { + $$ = NULL; + } + ; + + +/* REF: draft,p.46 */ +integerSubType: '(' ranges ')' /* at least one range */ + /* + * the specification mentions an alternative of an + * empty RHS here. this would lead to reduce/reduce + * conflicts. instead, we differentiate the parent + * rule(s) (SimpleSyntax). + */ + { $$ = $2; } + ; + +octetStringSubType: '(' SIZE '(' ranges ')' ')' + /* + * the specification mentions an alternative of an + * empty RHS here. this would lead to reduce/reduce + * conflicts. instead, we differentiate the parent + * rule(s) (SimpleSyntax). + */ + { + $$ = $4; + } + ; + +ranges: range + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | ranges '|' range + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + + $$ = $1; + } + ; + +range: value + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + $$->export.maxValue = *$1; + smiFree($1); + } + | value DOT_DOT value + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + $$->export.maxValue = *$3; + smiFree($1); + smiFree($3); + } + ; + +value: NEGATIVENUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = $1; + } + | NEGATIVENUMBER64 + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = $1; + } + | NUMBER64 + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = $1; + } + | HEX_STRING + { + char s[3]; + int i, len; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &$1[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + $$->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + $$->len = (len+1)/2; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + } + } + | BIN_STRING + { + char s[9]; + int i, len, j; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &$1[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + $$->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + $$->len = (len+7)/8; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 2); + } + } + ; + +enumSpec: '{' enumItems '}' + { + $$ = $2; + } + ; + +enumItems: enumItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | enumItems ',' enumItem + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +enumItem: LOWERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_ENUMNAME_32, ERR_ENUMNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDNUMBER_INCLUDES_HYPHEN, + $1); + } + } + } + '(' enumNumber ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value = *$4; + smiFree($4); + } + ; + +enumNumber: NUMBER + { + if ($1 > SMI_BASETYPE_INTEGER32_MAX) { + smiPrintError(thisParserPtr, + ERR_INTEGER32_TOO_LARGE, $1); + } + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) && + ($1 == 0)) { + smiPrintError(thisParserPtr, + ERR_ENUM_ZERO); + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NEGATIVENUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + /* TODO: non-negative is suggested */ + } + ; + +Status: LOWERCASE_IDENTIFIER + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_DEPRECATED; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_STATUS, + $1); + if (!strcmp($1, "mandatory") + || !strcmp($1, "optional")) { + /* best guess */ + $$ = SMI_STATUS_CURRENT; + } else { + $$ = SMI_STATUS_UNKNOWN; + } + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp($1, "mandatory")) { + $$ = SMI_STATUS_MANDATORY; + } else if (!strcmp($1, "optional")) { + $$ = SMI_STATUS_OPTIONAL; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_STATUS, + $1); + if (!strcmp($1, "current")) { + /* best guess */ + $$ = SMI_STATUS_MANDATORY; + } else { + $$ = SMI_STATUS_UNKNOWN; + } + } + } else { /* it is SPPI */ + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_STATUS, $1); + $$ = SMI_STATUS_UNKNOWN; + } + } + smiFree($1); + } + ; + +Status_Capabilities: LOWERCASE_IDENTIFIER + { + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_CAPABILITIES_STATUS, + $1); + $$ = SMI_STATUS_UNKNOWN; + } + smiFree($1); + } + ; + +DisplayPart: DISPLAY_HINT Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_FORMAT); + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +UnitsPart: UNITS Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_UNITS); + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +Access: LOWERCASE_IDENTIFIER + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp($1, + "accessible-for-notify")) { + $$ = SMI_ACCESS_NOTIFY; + } else if (!strcmp($1, "read-only")) { + $$ = SMI_ACCESS_READ_ONLY; + } else if (!strcmp($1, "read-write")) { + $$ = SMI_ACCESS_READ_WRITE; + } else if (!strcmp($1, "read-create")) { + $$ = SMI_ACCESS_READ_WRITE; + thisParserPtr->flags |= FLAG_CREATABLE; + /* TODO:remember it's really read-create */ + } else if (!strcmp($1, "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + $$ = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp($1, "read-only")) { + $$ = SMI_ACCESS_READ_ONLY; + } else if (!strcmp($1, "read-write")) { + $$ = SMI_ACCESS_READ_WRITE; + } else if (!strcmp($1, "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV1_WRITE_ONLY); + $$ = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } else { + if (!strcmp($1, "install")) { + $$ = SMI_ACCESS_INSTALL; + } else if (!strcmp($1, "install-notify")) { + $$ = SMI_ACCESS_INSTALL_NOTIFY; + } else if (!strcmp($1, "notify")) { + $$ = SMI_ACCESS_NOTIFY; + } else if (!strcmp($1, "report-only")) { + $$ = SMI_ACCESS_REPORT_ONLY; + } else if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } + smiFree($1); + } + ; + +IndexPart: PIB_INDEX + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-INDEX"); + } + '{' Entry '}' + { + List *p = smiMalloc(sizeof(List)); + + p->ptr = $4; + p->nextPtr = NULL; + + $$.indexkind = SMI_INDEX_INDEX; + $$.implied = impliedFlag; + $$.listPtr = p; + $$.rowPtr = NULL; + indexFlag = INDEXFLAG_PIBINDEX; + } + | AUGMENTS '{' Entry '}' + /* TODO: no AUGMENTS clause in v1 */ + /* TODO: how to differ INDEX and AUGMENTS ? */ + { + $$.indexkind = SMI_INDEX_AUGMENT; + $$.implied = 0; + $$.listPtr = NULL; + $$.rowPtr = $3; + indexFlag = INDEXFLAG_AUGMENTS; + } + | EXTENDS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "EXTENDS"); + } + '{' Entry '}' + { + $$.indexkind = SMI_INDEX_SPARSE; + $$.implied = 0; + $$.listPtr = NULL; + $$.rowPtr = $4; + indexFlag = INDEXFLAG_EXTENDS; + } + | /* empty */ + { + $$.indexkind = SMI_INDEX_UNKNOWN; + } + ; + +MibIndex: INDEX + { + /* + * To avoid ambiguity caused by merging + * the SMI and SPPI parser we use a flag. + */ + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Only INDEX or AUGMENTS are allowed for SMI + */ + if (indexFlag != INDEXFLAG_NONE) + smiPrintError(thisParserPtr, ERR_INDEX_AND_AUGMENTS_USED); + } else { + /* + * INDEX may only be used if PIB_INDEX was used + */ + if (indexFlag != INDEXFLAG_PIBINDEX) + smiPrintError(thisParserPtr, ERR_INDEX_WITHOUT_PIB_INDEX); + } + + /* + * Use a global variable to fetch and remember + * whether we have seen an IMPLIED keyword. + */ + impliedFlag = 0; + } + '{' IndexTypes '}' + { + $$.indexkind = SMI_INDEX_INDEX; + $$.implied = impliedFlag; + $$.listPtr = $4; + $$.rowPtr = NULL; + } + | /* empty */ + { + $$.indexkind = SMI_INDEX_UNKNOWN; + } + ; + +IndexTypes: IndexType + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | IndexTypes ',' IndexType + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +IndexType: IMPLIED Index + { + impliedFlag = 1; + $$ = $2; + } + | Index + { + $$ = $1; + } + ; + +Index: ObjectName + /* + * TODO: use the SYNTAX value of the correspondent + * OBJECT-TYPE invocation + */ + { + $$ = $1; + } + ; + +Entry: ObjectName + { + $$ = $1; + } + ; + +DefValPart: DEFVAL '{' Value '}' + { + $$ = $3; + if ((defaultBasetype == SMI_BASETYPE_BITS) && + ($$->basetype != SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ($$->basetype == SMI_BASETYPE_OCTETSTRING) { + smiFree($$->value.ptr); + } + smiFree($$); + $$ = NULL; + } + } + | /* empty */ + { $$ = NULL; } + /* TODO: different for DefValPart in AgentCaps ? */ + ; + +Value: valueofObjectSyntax + { $$ = $1; } + | '{' BitsValue '}' + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_BITS; + $$->value.ptr = (void *)$2; + } + ; + +BitsValue: BitNames + { $$ = $1; } + | /* empty */ + { $$ = NULL; } + ; + +BitNames: LOWERCASE_IDENTIFIER + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | BitNames ',' LOWERCASE_IDENTIFIER + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +ObjectName: objectIdentifier + { + $$ = $1; + } + ; + +NotificationName: objectIdentifier + { + $$ = $1; + } + ; + +ReferPart: REFERENCE Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_REFERENCE); + } + } + | /* empty */ + { $$ = NULL; } + ; + +RevisionPart: Revisions + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Revisions: Revision + { $$ = 0; } + | Revisions Revision + { $$ = 0; } + ; + +Revision: REVISION ExtUTCTime + { + thisParserPtr->firstRevisionLine = thisParserPtr->line; + + if (thisParserPtr->modulePtr->lastRevisionPtr && + ($2 >= thisParserPtr->modulePtr->lastRevisionPtr->export.date)) { + smiPrintError(thisParserPtr, + ERR_REVISION_NOT_DESCENDING); + } + + if ($2 > thisParserPtr->modulePtr->lastUpdated) { + smiPrintError(thisParserPtr, + ERR_REVISION_AFTER_LAST_UPDATE); + } + } + DESCRIPTION Text + { + Revision *revisionPtr; + + checkDescr(thisParserPtr, $5); + + revisionPtr = addRevision($2, $5, thisParserPtr); + if (revisionPtr) { + setRevisionLine(revisionPtr, + thisParserPtr->firstRevisionLine, + thisParserPtr); + } + $$ = revisionPtr ? 0 : -1; + } + ; + +NotificationObjectsPart: OBJECTS '{' Objects '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +ObjectGroupObjectsPart: OBJECTS '{' Objects '}' + { + $$ = $3; + } + ; + +Objects: Object + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Objects ',' Object + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Object: ObjectName + { + $$ = $1; + if ((thisParserPtr->currentDecl == SMI_DECL_OBJECTGROUP) && + $$->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + $$->export.name); + } + } + ; + +NotificationsPart: NOTIFICATIONS '{' Notifications '}' + { + $$ = $3; + } + ; + +Notifications: Notification + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Notifications ',' Notification + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Notification: NotificationName + { + $$ = $1; + if ($$->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + $$->export.name); + } + } + ; + +Text: QUOTED_STRING + { + int len; + $$ = smiStrdup($1); + len = strlen($$); + while (len > 0 && $$[len-1] == '\n') { + $$[--len] = 0; + } + } + ; + +ExtUTCTime: QUOTED_STRING + { + $$ = checkDate(thisParserPtr, $1); + } + ; + +objectIdentifier: { + thisParserPtr->parentNodePtr = smiHandle->rootNodePtr; + } + subidentifiers + { + $$ = $2; + if ($$) { + thisParserPtr->parentNodePtr = $2->nodePtr; + } else { + thisParserPtr->parentNodePtr = NULL; + } + } + ; + +subidentifiers: + subidentifier + { + $$ = $1; + } + | subidentifiers + subidentifier + { + $$ = $2; + } + ; + +subidentifier: + /* LOWERCASE_IDENTIFIER */ + fuzzy_lowercase_identifier + { + Object *objectPtr; + Import *importPtr; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, $1); + } + objectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, $1); + if (objectPtr) { + $$ = objectPtr; + smiFree($1); + } else { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + $$ = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + $$ = findObjectByModulenameAndName( + importPtr->export.module, $1); + smiFree($1); + } + } + if ($$) + thisParserPtr->parentNodePtr = $$->nodePtr; + } + | moduleName '.' LOWERCASE_IDENTIFIER + { + Object *objectPtr; + Import *importPtr; + char *md; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + md = smiMalloc(sizeof(char) * + (strlen($1) + strlen($3) + 2)); + sprintf(md, "%s.%s", $1, $3); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, md); + smiFree(md); + } else { + objectPtr = findObjectByModulenameAndName( + $1, $3); + if (objectPtr) { + $$ = objectPtr; + smiFree($1); + smiFree($3); + } else { + importPtr = findImportByModulenameAndName( + $1, $3, thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* TODO: check: $1 == thisModule ? */ + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject($3, + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiFree($1); + } + $$ = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + $$ = findObjectByModulenameAndName( + importPtr->export.module, $3); + smiFree($1); + smiFree($3); + } + } + if ($$) + thisParserPtr->parentNodePtr = $$->nodePtr; + } + } + | NUMBER + { + Node *nodePtr; + Object *objectPtr; + + nodePtr = findNodeByParentAndSubid(thisParserPtr->parentNodePtr, + $1); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + $$ = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + thisParserPtr->parentNodePtr, + $1, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = objectPtr; + } + thisParserPtr->parentNodePtr = $$->nodePtr; + } + | LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + + /* TODO: search in local module and + * in imported modules + */ + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, $3); + oldObjectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, $1); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != $3) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + $1); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject($1, + thisParserPtr->parentNodePtr, + $3, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + oldNodePtr->lastObjectPtr->export.name && + strcmp(oldNodePtr->lastObjectPtr->export.name, $1)) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + $1, oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject($1, + thisParserPtr->parentNodePtr, + $3, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else { + objectPtr = addObject($1, thisParserPtr->parentNodePtr, + $3, 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } + } + | moduleName '.' LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + char *md; + + md = smiMalloc(sizeof(char) * + (strlen($1) + strlen($3) + 2)); + sprintf(md, "%s.%s", $1, $3); + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, $5); + oldObjectPtr = findObjectByModulenameAndName( + $1, $3); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != $5) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + $3); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject($3, + thisParserPtr->parentNodePtr, + $5, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + strcmp(oldNodePtr->lastObjectPtr->export.name, $3)) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + $3, oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject($3, + thisParserPtr->parentNodePtr, + $5, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + objectPtr = addObject($3, thisParserPtr->parentNodePtr, + $5, 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } + smiFree(md); + } + ; + +objectIdentifier_defval: subidentifiers_defval + { $$ = NULL; } + ; /* TODO */ + +subidentifiers_defval: subidentifier_defval + { $$ = 0; } + | subidentifiers_defval subidentifier_defval + { $$ = 0; } + ; /* TODO */ + +subidentifier_defval: LOWERCASE_IDENTIFIER '(' NUMBER ')' + { $$ = 0; } + | NUMBER + { $$ = 0; } + ; /* TODO */ + +objectGroupClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTGROUP; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_GROUP + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("OBJECT-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-GROUP", "SNMPv2-CONF"); + } + } + ObjectGroupObjectsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $5); + $$ = 0; + } + ; + +notificationGroupClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONGROUP; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + NOTIFICATION_GROUP + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-GROUP"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("NOTIFICATION-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-GROUP", + "SNMPv2-CONF"); + } + } + NotificationsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $5); + $$ = 0; + } + ; + +moduleComplianceClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULECOMPLIANCE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + MODULE_COMPLIANCE + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + importPtr = findImportByName("MODULE-COMPLIANCE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-COMPLIANCE", + "SNMPv2-CONF"); + } + } + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $8); + } + ReferPart + ComplianceModulePart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + Option *optionPtr; + Refinement *refinementPtr; + List *listPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_MODULECOMPLIANCE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $6); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($10) { + setObjectReference(objectPtr, $10, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $11.mandatorylistPtr); + objectPtr->optionlistPtr = $11.optionlistPtr; + objectPtr->refinementlistPtr = + $11.refinementlistPtr; + + if ($11.optionlistPtr) { + for (listPtr = $11.optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + optionPtr = ((Option *)(listPtr->ptr)); + optionPtr->compliancePtr = objectPtr; + } + } + + /* + * Dirty: Fake the types' names in the + * refinement list: + * ``++type'' + * ``++writetype'' + */ + if ($11.refinementlistPtr) { + for (listPtr = $11.refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + refinementPtr = + ((Refinement *)(listPtr->ptr)); + refinementPtr->compliancePtr = objectPtr; + } + } + + $$ = 0; + } + ; + +ComplianceModulePart: ComplianceModules + { + $$ = $1; + } + ; + +ComplianceModules: ComplianceModule + { + $$ = $1; + } + | ComplianceModules ComplianceModule + { + List *listPtr; + + /* concatenate lists in $1 and $2 */ + if ($1.mandatorylistPtr) { + for (listPtr = $1.mandatorylistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.mandatorylistPtr; + $$.mandatorylistPtr = $1.mandatorylistPtr; + } else { + $$.mandatorylistPtr = $2.mandatorylistPtr; + } + if ($1.optionlistPtr) { + for (listPtr = $1.optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.optionlistPtr; + $$.optionlistPtr = $1.optionlistPtr; + } else { + $$.optionlistPtr = $2.optionlistPtr; + } + if ($1.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.refinementlistPtr; + $$.refinementlistPtr = $1.refinementlistPtr; + } else { + $$.refinementlistPtr = $2.refinementlistPtr; + } + } + ; + +ComplianceModule: MODULE ComplianceModuleName + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ($2 == thisModulePtr) + thisParserPtr->complianceModulePtr = NULL; + else + thisParserPtr->complianceModulePtr = $2; + } + MandatoryPart + CompliancePart + { + $$.mandatorylistPtr = $4; + $$.optionlistPtr = $5.optionlistPtr; + $$.refinementlistPtr = $5.refinementlistPtr; + if (thisParserPtr->complianceModulePtr) { + checkImports(thisParserPtr->complianceModulePtr, + thisParserPtr); + thisParserPtr->complianceModulePtr = NULL; + } + } + ; + +ComplianceModuleName: UPPERCASE_IDENTIFIER objectIdentifier + { + $$ = findModuleByName($1); + /* TODO: handle objectIdentifier */ + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | UPPERCASE_IDENTIFIER + { + $$ = findModuleByName($1); + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | /* empty, only if contained in MIB module */ + /* TODO: RFC 1904 looks a bit different, is this ok? */ + { + $$ = thisModulePtr; + } + ; + +MandatoryPart: MANDATORY_GROUPS '{' MandatoryGroups '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +MandatoryGroups: MandatoryGroup + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | MandatoryGroups ',' MandatoryGroup + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +MandatoryGroup: objectIdentifier + { + /* TODO: check that objectIdentifier is + found, is defined in thisParserPtr->complianceModulePtr, + and is a group node. */ + Import *importPtr; + + $$ = $1; + if (thisParserPtr->complianceModulePtr) { + $$ = findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, + $1->export.name); + } + if (thisParserPtr->complianceModulePtr && $1->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $1->export.name, thisModulePtr); + if (importPtr) + importPtr->use++; + } + } + ; + +CompliancePart: Compliances + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = $1.optionlistPtr; + $$.refinementlistPtr = $1.refinementlistPtr; + } + | /* empty */ + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = NULL; + $$.refinementlistPtr = NULL; + } + ; + +Compliances: Compliance + { + $$ = $1; + } + | Compliances Compliance + { + List *listPtr; + int stop; + + $$.mandatorylistPtr = NULL; + + /* check for duplicates in optionlist */ + stop = 0; + if ($2.optionlistPtr) { + for (listPtr = $1.optionlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Option *)listPtr->ptr)->objectPtr == + ((Option *)$2.optionlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_OPTIONALGROUP_ALREADY_EXISTS, + ((Option *)$2.optionlistPtr->ptr)->objectPtr->export.name); + stop = 1; + $$.optionlistPtr = $1.optionlistPtr; + } + } + } + + /* concatenate optionlists */ + if ($1.optionlistPtr) { + for (listPtr = $1.optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = $2.optionlistPtr; + } + $$.optionlistPtr = $1.optionlistPtr; + } else { + $$.optionlistPtr = $2.optionlistPtr; + } + + /* check for duplicates in refinementlist */ + stop = 0; + if ($2.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Refinement *)listPtr->ptr)->objectPtr == + ((Refinement *)$2.refinementlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_REFINEMENT_ALREADY_EXISTS, + ((Refinement *)$2.refinementlistPtr->ptr)->objectPtr->export.name); + stop = 1; + $$.refinementlistPtr = $1.refinementlistPtr; + } + } + } + + /* concatenate refinementlists */ + if ($1.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = $2.refinementlistPtr; + } + $$.refinementlistPtr = $1.refinementlistPtr; + } else { + $$.refinementlistPtr = $2.refinementlistPtr; + } + } + ; + +Compliance: ComplianceGroup + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = $1; + $$.refinementlistPtr = NULL; + } + | ComplianceObject + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = NULL; + $$.refinementlistPtr = $1; + } + ; + +ComplianceGroup: GROUP + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + } + objectIdentifier + DESCRIPTION Text + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && $3->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $3->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, $5); + + $$ = smiMalloc(sizeof(List)); + $$->nextPtr = NULL; + $$->ptr = smiMalloc(sizeof(Option)); + ((Option *)($$->ptr))->line = thisParserPtr->firstNestedStatementLine; + ((Option *)($$->ptr))->objectPtr = $3; + if (! (thisModulePtr->flags & SMI_FLAG_NODESCR)) { + ((Option *)($$->ptr))->export.description = $5; + } else { + smiFree($5); + } + } + ; + +ComplianceObject: OBJECT + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + } + ObjectName + SyntaxPart + WriteSyntaxPart /* modified for SPPI */ + AccessPart /* modified for SPPI */ + DESCRIPTION Text + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && $3->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $3->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, $8); + + thisParserPtr->flags &= ~FLAG_CREATABLE; + $$ = smiMalloc(sizeof(List)); + $$->nextPtr = NULL; + $$->ptr = smiMalloc(sizeof(Refinement)); + ((Refinement *)($$->ptr))->line = + thisParserPtr->firstNestedStatementLine; + ((Refinement *)($$->ptr))->objectPtr = $3; + ((Refinement *)($$->ptr))->typePtr = $4; + if ($4) { + $4->parentPtr = $3->typePtr; + } + ((Refinement *)($$->ptr))->writetypePtr = $5; + if ($5) { + $5->parentPtr = $3->typePtr; + } + ((Refinement *)($$->ptr))->export.access = $6; + if (! (thisParserPtr->flags & SMI_FLAG_NODESCR)) { + ((Refinement *)($$->ptr))->export.description = $8; + } else { + smiFree($8); + } + } + ; + +SyntaxPart: SYNTAX Syntax + { + if ($2->export.name) { + $$ = duplicateType($2, 0, thisParserPtr); + } else { + $$ = $2; + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +WriteSyntaxPart: WRITE_SYNTAX WriteSyntax + { + /* must not be present in PIBs */ + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "WRITE-SYNTAX"); + if ($2->export.name) { + $$ = duplicateType($2, 0, thisParserPtr); + } else { + $$ = $2; + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +WriteSyntax: Syntax + { + $$ = $1; + } + ; + +AccessPart: MIN_ACCESS Access + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MIN-ACCESS"); + $$ = $2; + } + | PIB_MIN_ACCESS Access + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-MIN-ACCESS"); + if ($2 == SMI_ACCESS_REPORT_ONLY) + smiPrintError(thisParserPtr, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS); + $$ = $2; + } + | /* empty */ + { + $$ = SMI_ACCESS_UNKNOWN; + } + ; + +agentCapabilitiesClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_AGENTCAPABILITIES; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + AGENT_CAPABILITIES + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "AGENT-CAAPABILITIES"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("AGENT-CAPABILITIES", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "AGENT-CAPABILITIES", + "SNMPv2-CONF"); + } + } + PRODUCT_RELEASE Text + STATUS Status_Capabilities + DESCRIPTION Text + { + checkDescr(thisParserPtr, $10); + } + ReferPart + ModulePart_Capabilities + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $16; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_AGENTCAPABILITIES); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $8); + setObjectDescription(objectPtr, $10, thisParserPtr); + if ($12) { + setObjectReference(objectPtr, $12, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + /* + * TODO: PRODUCT_RELEASE Text + * TODO: ModulePart_Capabilities + */ + $$ = 0; + } + ; + +ModulePart_Capabilities: Modules_Capabilities + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Modules_Capabilities: Module_Capabilities + { $$ = 0; } + | Modules_Capabilities Module_Capabilities + { $$ = 0; } + ; + +Module_Capabilities: SUPPORTS ModuleName_Capabilities + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ($2 == thisModulePtr) + thisParserPtr->capabilitiesModulePtr = NULL; + else + thisParserPtr->capabilitiesModulePtr = $2; + } + INCLUDES '{' CapabilitiesGroups '}' + VariationPart + { + if (thisParserPtr->capabilitiesModulePtr) { + checkImports(thisParserPtr->capabilitiesModulePtr, + thisParserPtr); + thisParserPtr->capabilitiesModulePtr = NULL; + } + $$ = 0; + } + ; + +CapabilitiesGroups: CapabilitiesGroup + { +#if 0 + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; +#else + $$ = NULL; +#endif + } + | CapabilitiesGroups ',' CapabilitiesGroup + { +#if 0 + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; +#else + $$ = NULL; +#endif + } + ; + +CapabilitiesGroup: objectIdentifier + { + $$ = NULL; + } + ; + +ModuleName_Capabilities: UPPERCASE_IDENTIFIER objectIdentifier + { + $$ = findModuleByName($1); + /* TODO: handle objectIdentifier */ + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | UPPERCASE_IDENTIFIER + { + $$ = findModuleByName($1); + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + ; + +VariationPart: Variations + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Variations: Variation + { $$ = 0; } + | Variations Variation + { $$ = 0; } + ; + +Variation: VARIATION ObjectName + { + if ($2) { + variationkind = $2->export.nodekind; + } else { + variationkind = SMI_NODEKIND_UNKNOWN; + } + } + SyntaxPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_SYNTAX); + } + } + WriteSyntaxPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_WRITESYNTAX); + } + } + VariationAccessPart + CreationPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_CREATION); + } + } + DefValPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_DEFVAL); + } else if ($11) { + adjustDefval(thisParserPtr, + $11, $2->typePtr, + thisParserPtr->line); + smiCheckValueType(thisParserPtr, + $11, $2->typePtr, + thisParserPtr->line); + } + } + DESCRIPTION Text + { + thisParserPtr->flags &= ~FLAG_CREATABLE; + $$ = 0; + variationkind = SMI_NODEKIND_UNKNOWN; + + checkDescr(thisParserPtr, $14); + } + ; + +VariationAccessPart: ACCESS VariationAccess + { $$ = $2; } + | /* empty */ + { $$ = 0; } + ; + +VariationAccess: LOWERCASE_IDENTIFIER + { + if (!strcmp($1, "not-implemented")) { + $$ = SMI_ACCESS_NOT_IMPLEMENTED; + } else if (!strcmp($1, "accessible-for-notify")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_NOTIFY; + } + } else if (!strcmp($1, "read-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_ONLY; + } + } else if (!strcmp($1, "read-write")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp($1, "read-create")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp($1, "write-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; /* TODO */ + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + } + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } + ; + +CreationPart: CREATION_REQUIRES '{' Cells '}' + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Cells: Cell + { $$ = 0; } + | Cells ',' Cell + { $$ = 0; } + ; + +Cell: ObjectName + { $$ = 0; } + ; + +%% + +#endif diff --git a/lib/parser-sming.c b/lib/parser-sming.c new file mode 100644 index 0000000..823b5a7 --- /dev/null +++ b/lib/parser-sming.c @@ -0,0 +1,5601 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse smingparse +#define yylex sminglex +#define yyerror smingerror +#define yylval sminglval +#define yychar smingchar +#define yydebug smingdebug +#define yynerrs smingnerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT = 258, + DOT_DOT = 259, + COLON_COLON = 260, + ucIdentifier = 261, + lcIdentifier = 262, + floatValue = 263, + textSegment = 264, + decimalNumber = 265, + hexadecimalNumber = 266, + OID = 267, + moduleKeyword = 268, + importKeyword = 269, + revisionKeyword = 270, + identityKeyword = 271, + oidKeyword = 272, + dateKeyword = 273, + organizationKeyword = 274, + contactKeyword = 275, + descriptionKeyword = 276, + referenceKeyword = 277, + extensionKeyword = 278, + typedefKeyword = 279, + typeKeyword = 280, + formatKeyword = 281, + unitsKeyword = 282, + statusKeyword = 283, + accessKeyword = 284, + defaultKeyword = 285, + impliedKeyword = 286, + indexKeyword = 287, + augmentsKeyword = 288, + reordersKeyword = 289, + sparseKeyword = 290, + expandsKeyword = 291, + createKeyword = 292, + membersKeyword = 293, + objectsKeyword = 294, + mandatoryKeyword = 295, + optionalKeyword = 296, + refineKeyword = 297, + abnfKeyword = 298, + OctetStringKeyword = 299, + ObjectIdentifierKeyword = 300, + Integer32Keyword = 301, + Unsigned32Keyword = 302, + Integer64Keyword = 303, + Unsigned64Keyword = 304, + Float32Keyword = 305, + Float64Keyword = 306, + Float128Keyword = 307, + BitsKeyword = 308, + EnumerationKeyword = 309, + currentKeyword = 310, + deprecatedKeyword = 311, + obsoleteKeyword = 312, + readonlyKeyword = 313, + readwriteKeyword = 314, + parentKeyword = 315, + classKeyword = 316, + extendsKeyword = 317, + attributeKeyword = 318, + uniqueKeyword = 319, + eventKeyword = 320, + PointerKeyword = 321, + eventonlyKeyword = 322, + neginfKeyword = 323, + posinfKeyword = 324, + snanKeyword = 325, + qnanKeyword = 326 + }; +#endif +/* Tokens. */ +#define DOT 258 +#define DOT_DOT 259 +#define COLON_COLON 260 +#define ucIdentifier 261 +#define lcIdentifier 262 +#define floatValue 263 +#define textSegment 264 +#define decimalNumber 265 +#define hexadecimalNumber 266 +#define OID 267 +#define moduleKeyword 268 +#define importKeyword 269 +#define revisionKeyword 270 +#define identityKeyword 271 +#define oidKeyword 272 +#define dateKeyword 273 +#define organizationKeyword 274 +#define contactKeyword 275 +#define descriptionKeyword 276 +#define referenceKeyword 277 +#define extensionKeyword 278 +#define typedefKeyword 279 +#define typeKeyword 280 +#define formatKeyword 281 +#define unitsKeyword 282 +#define statusKeyword 283 +#define accessKeyword 284 +#define defaultKeyword 285 +#define impliedKeyword 286 +#define indexKeyword 287 +#define augmentsKeyword 288 +#define reordersKeyword 289 +#define sparseKeyword 290 +#define expandsKeyword 291 +#define createKeyword 292 +#define membersKeyword 293 +#define objectsKeyword 294 +#define mandatoryKeyword 295 +#define optionalKeyword 296 +#define refineKeyword 297 +#define abnfKeyword 298 +#define OctetStringKeyword 299 +#define ObjectIdentifierKeyword 300 +#define Integer32Keyword 301 +#define Unsigned32Keyword 302 +#define Integer64Keyword 303 +#define Unsigned64Keyword 304 +#define Float32Keyword 305 +#define Float64Keyword 306 +#define Float128Keyword 307 +#define BitsKeyword 308 +#define EnumerationKeyword 309 +#define currentKeyword 310 +#define deprecatedKeyword 311 +#define obsoleteKeyword 312 +#define readonlyKeyword 313 +#define readwriteKeyword 314 +#define parentKeyword 315 +#define classKeyword 316 +#define extendsKeyword 317 +#define attributeKeyword 318 +#define uniqueKeyword 319 +#define eventKeyword 320 +#define PointerKeyword 321 +#define eventonlyKeyword 322 +#define neginfKeyword 323 +#define posinfKeyword 324 +#define snanKeyword 325 +#define qnanKeyword 326 + + + + +/* Copy the first part of user declarations. */ +#line 14 "parser-sming.y" + + +#include + +#ifdef BACKEND_SMING + +#define _ISOC99_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "parser-sming.h" +#include "scanner-sming.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp ist not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static char *typeIdentifier, *macroIdentifier, *identityIdentifier, + *classIdentifier, *attributeIdentifier; +static char *importModulename = NULL; +static Type *typePtr = NULL; +static Macro *macroPtr = NULL; +static Identity *identityPtr = NULL; +static Class *classPtr = NULL; +static Attribute *attributePtr = NULL; +static Event *eventPtr = NULL; +static SmiBasetype defaultBasetype = SMI_BASETYPE_UNKNOWN; +static NamedNumber *namedNumberPtr = NULL; +static int bitsFlag = 0; /* used to differentiate bits definition from enum*/ +static int attributeFlag = 0; /* + *Used to differentiate between attribute and + *and typedef to tie the type statement + *respectively to class or module. + */ + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + +static Type * +findType(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + Import *importPtr; + char *module, *type; + + type = strstr(spec, "::"); + if (!type) { + typePtr = findTypeByModuleAndName(modulePtr, spec); + if (!typePtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + typePtr = findTypeByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + type = &type[2]; + typePtr = findTypeByModulenameAndName(module, type); + } + return typePtr; +} + + +static Identity * +findIdentity(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Identity *identityPtr; + Import *importPtr; + char *module, *identity; + + identity = strstr(spec, "::"); + if (!identity) { + identityPtr = findIdentityByModuleAndName(modulePtr, spec); + if (!identityPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + identityPtr = findIdentityByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + identity = &identity[2]; + identityPtr = findIdentityByModulenameAndName(module, identity); + } + return identityPtr; +} + +static Class * +findClass(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Class *classPtr; + Import *importPtr; + char *module, *class; + + class = strstr(spec, "::"); + if (!class) { + classPtr = findClassByModuleAndName(modulePtr, spec); + if (!classPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + classPtr = findClassByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + class = &class[2]; + classPtr = findClassByModulenameAndName(module, class); + } + return classPtr; +} + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for(typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Complain about empty description clauses. + */ + + if (! parserPtr->flags & SMI_FLAG_NODESCR + && (! typePtr->export.description + || ! typePtr->export.description[0])) { + smiPrintErrorAtLine(parserPtr, ERR_EMPTY_DESCRIPTION, + typePtr->line, typePtr->export.name); + } + + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 10 || len == 16) { + for (i = 0; i < len; i++) { + if (((i < 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 11 + || i == 12 || i == 14 || i == 15) && ! isdigit((int)date[i])) + || ((i == 4 || i == 7) && date[i] != '-') + || (i == 10 && date[i] != ' ') + || (i == 13 && date[i] != ':')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; i < 4; i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + p++; + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + if (len == 16) { + p++; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + } + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +static char *hexToStr(char *hexStr, int len) +{ + union{ + char ch; + long l; + } hex2char; + + char* res =(char*)malloc(sizeof(char)*len/2+1); + char* tmp =(char*)malloc(sizeof(char)*3); + int i,j = 0; + + tmp[2]=0; + for(i=2; i+1basetype != SMI_BASETYPE_BITS) + return; + + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = (int)(((NamedNumber *)(pp->ptr))->export.value.value.unsigned64); + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } +} + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 360 "parser-sming.y" +{ + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} +/* Line 187 of yacc.c. */ +#line 600 "parser-sming.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 613 "parser-sming.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 542 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 80 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 175 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 271 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 545 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 326 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 75, 76, 2, 2, 78, 79, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 74, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 72, 77, 73, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 7, 9, 11, 14, 17, 18, + 19, 20, 21, 22, 50, 51, 53, 55, 58, 61, + 62, 63, 64, 65, 66, 85, 86, 88, 90, 93, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 130, + 131, 133, 135, 138, 141, 142, 143, 144, 145, 146, + 147, 170, 171, 173, 175, 178, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 217, 218, 220, 222, + 225, 228, 229, 230, 231, 232, 249, 250, 252, 254, + 257, 260, 261, 262, 276, 277, 279, 281, 284, 287, + 299, 300, 302, 304, 307, 310, 311, 312, 313, 314, + 315, 334, 340, 346, 352, 358, 364, 365, 368, 374, + 375, 378, 384, 385, 388, 394, 395, 398, 406, 408, + 412, 413, 416, 422, 423, 426, 432, 433, 436, 442, + 444, 446, 448, 449, 452, 458, 459, 462, 468, 469, + 472, 478, 479, 482, 488, 490, 492, 494, 496, 499, + 501, 504, 507, 510, 513, 516, 519, 522, 525, 528, + 529, 533, 536, 538, 541, 544, 547, 550, 553, 556, + 559, 562, 565, 566, 570, 573, 576, 577, 580, 582, + 584, 585, 588, 595, 596, 598, 600, 603, 608, 611, + 612, 614, 619, 620, 623, 630, 631, 633, 635, 638, + 643, 646, 647, 649, 654, 656, 658, 660, 662, 663, + 666, 672, 678, 682, 683, 685, 687, 690, 695, 703, + 707, 708, 710, 712, 715, 720, 726, 728, 732, 733, + 735, 737, 740, 745, 747, 749, 753, 755, 759, 761, + 764, 765, 767, 769, 772, 775, 777, 779, 781, 783, + 785, 788, 790, 792, 795, 797, 799, 801, 803, 807, + 809, 811, 813, 815, 817, 819, 822, 824, 826, 827, + 828, 829 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 81, 0, -1, 253, 82, -1, -1, 83, -1, 84, + -1, 83, 84, -1, 85, 253, -1, -1, -1, -1, + -1, -1, 13, 252, 6, 86, 253, 72, 254, 143, + 165, 254, 87, 166, 254, 88, 186, 254, 89, 187, + 90, 149, 91, 153, 100, 112, 73, 253, 74, -1, + -1, 92, -1, 93, -1, 92, 93, -1, 94, 254, + -1, -1, -1, -1, -1, -1, 23, 252, 7, 95, + 253, 72, 254, 171, 96, 185, 97, 187, 98, 189, + 99, 73, 253, 74, -1, -1, 101, -1, 102, -1, + 101, 102, -1, 103, 254, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 24, 252, 6, 104, 253, 72, + 254, 162, 254, 105, 178, 106, 167, 107, 169, 108, + 171, 109, 185, 110, 187, 111, 73, 253, 74, -1, + -1, 113, -1, 114, -1, 113, 114, -1, 115, 254, + -1, -1, -1, -1, -1, -1, -1, 61, 252, 6, + 116, 253, 72, 254, 176, 117, 122, 173, 118, 135, + 171, 119, 185, 120, 187, 121, 73, 253, 74, -1, + -1, 123, -1, 124, -1, 123, 124, -1, 125, 254, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 63, 252, 7, 126, 253, 72, 254, 163, 127, 180, + 128, 178, 129, 167, 130, 169, 131, 171, 132, 185, + 133, 187, 134, 73, 253, 74, -1, -1, 136, -1, + 137, -1, 136, 137, -1, 138, 254, -1, -1, -1, + -1, -1, 65, 252, 7, 139, 253, 72, 254, 171, + 140, 185, 141, 187, 142, 73, 253, 74, -1, -1, + 144, -1, 145, -1, 144, 145, -1, 146, 254, -1, + -1, -1, 14, 252, 6, 147, 253, 75, 253, 226, + 148, 253, 76, 253, 74, -1, -1, 150, -1, 151, + -1, 150, 151, -1, 152, 254, -1, 15, 253, 72, + 254, 164, 254, 186, 254, 73, 253, 74, -1, -1, + 154, -1, 155, -1, 154, 155, -1, 156, 254, -1, + -1, -1, -1, -1, -1, 16, 252, 7, 157, 253, + 72, 254, 183, 158, 171, 159, 185, 160, 187, 161, + 73, 253, 74, -1, 25, 252, 191, 253, 74, -1, + 25, 252, 192, 253, 74, -1, 18, 252, 242, 253, + 74, -1, 19, 252, 238, 253, 74, -1, 20, 252, + 238, 253, 74, -1, -1, 168, 254, -1, 26, 252, + 243, 253, 74, -1, -1, 170, 254, -1, 27, 252, + 244, 253, 74, -1, -1, 172, 254, -1, 28, 252, + 247, 253, 74, -1, -1, 174, 254, -1, 64, 252, + 75, 175, 76, 253, 74, -1, 251, -1, 7, 232, + 251, -1, -1, 177, 254, -1, 62, 252, 6, 253, + 74, -1, -1, 179, 254, -1, 30, 252, 245, 253, + 74, -1, -1, 181, 254, -1, 29, 252, 182, 253, + 74, -1, 58, -1, 59, -1, 67, -1, -1, 184, + 254, -1, 60, 252, 7, 253, 74, -1, -1, 186, + 254, -1, 21, 252, 238, 253, 74, -1, -1, 188, + 254, -1, 22, 252, 238, 253, 74, -1, -1, 190, + 254, -1, 43, 252, 238, 253, 74, -1, 193, -1, + 197, -1, 195, -1, 198, -1, 44, 201, -1, 45, + -1, 46, 201, -1, 47, 201, -1, 48, 201, -1, + 49, 201, -1, 50, 209, -1, 51, 209, -1, 52, + 209, -1, 66, 218, -1, 54, 220, -1, -1, 53, + 194, 220, -1, 44, 201, -1, 45, -1, 46, 201, + -1, 47, 201, -1, 48, 201, -1, 49, 201, -1, + 50, 209, -1, 51, 209, -1, 52, 209, -1, 66, + 218, -1, 54, 220, -1, -1, 53, 196, 220, -1, + 236, 199, -1, 236, 199, -1, -1, 253, 200, -1, + 202, -1, 210, -1, -1, 253, 202, -1, 75, 253, + 206, 203, 253, 76, -1, -1, 204, -1, 205, -1, + 204, 205, -1, 253, 77, 253, 206, -1, 250, 207, + -1, -1, 208, -1, 253, 4, 253, 250, -1, -1, + 253, 210, -1, 75, 253, 214, 211, 253, 76, -1, + -1, 212, -1, 213, -1, 212, 213, -1, 253, 77, + 253, 214, -1, 8, 215, -1, -1, 216, -1, 253, + 4, 253, 8, -1, 68, -1, 69, -1, 71, -1, + 70, -1, -1, 253, 219, -1, 75, 253, 237, 253, + 76, -1, 75, 253, 221, 253, 76, -1, 225, 222, + 251, -1, -1, 223, -1, 224, -1, 223, 224, -1, + 253, 78, 253, 225, -1, 7, 253, 75, 253, 250, + 253, 76, -1, 235, 227, 251, -1, -1, 228, -1, + 229, -1, 228, 229, -1, 253, 78, 253, 235, -1, + 75, 253, 231, 253, 76, -1, 251, -1, 7, 232, + 251, -1, -1, 233, -1, 234, -1, 233, 234, -1, + 253, 78, 253, 7, -1, 6, -1, 7, -1, 6, + 5, 6, -1, 6, -1, 6, 5, 7, -1, 7, + -1, 9, 239, -1, -1, 240, -1, 241, -1, 240, + 241, -1, 253, 9, -1, 9, -1, 9, -1, 9, + -1, 230, -1, 10, -1, 79, 10, -1, 11, -1, + 8, -1, 79, 8, -1, 217, -1, 238, -1, 237, + -1, 246, -1, 6, 5, 12, -1, 12, -1, 55, + -1, 56, -1, 57, -1, 11, -1, 10, -1, 79, + 10, -1, 248, -1, 249, -1, -1, -1, -1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 611, 611, 622, 625, 631, 635, 650, 665, 695, + 702, 709, 716, 664, 736, 739, 749, 753, 769, 784, + 793, 799, 806, 813, 783, 827, 830, 840, 844, 860, + 875, 889, 909, 932, 941, 947, 953, 960, 874, 978, + 981, 991, 995, 1011, 1026, 1042, 1048, 1091, 1097, 1104, + 1025, 1118, 1121, 1131, 1135, 1151, 1166, 1180, 1191, 1211, + 1228, 1244, 1256, 1261, 1266, 1165, 1279, 1282, 1292, 1296, + 1312, 1327, 1333, 1338, 1343, 1326, 1355, 1358, 1364, 1368, + 1383, 1398, 1403, 1397, 1430, 1433, 1439, 1443, 1458, 1472, + 1482, 1485, 1495, 1499, 1515, 1530, 1538, 1544, 1550, 1557, + 1529, 1568, 1574, 1580, 1586, 1592, 1599, 1602, 1608, 1615, + 1618, 1624, 1631, 1634, 1640, 1647, 1650, 1656, 1662, 1670, + 1682, 1685, 1691, 1702, 1705, 1711, 1718, 1721, 1727, 1733, + 1737, 1741, 1748, 1751, 1757, 1767, 1770, 1776, 1783, 1786, + 1792, 1799, 1802, 1808, 1816, 1820, 1826, 1830, 1837, 1852, + 1856, 1871, 1886, 1901, 1916, 1931, 1946, 1961, 1972, 1988, + 1987, 2016, 2028, 2034, 2047, 2060, 2073, 2086, 2099, 2112, + 2125, 2134, 2148, 2147, 2173, 2187, 2220, 2223, 2229, 2233, + 2240, 2243, 2249, 2259, 2262, 2268, 2274, 2287, 2293, 2308, + 2311, 2317, 2324, 2327, 2333, 2343, 2346, 2352, 2358, 2371, + 2377, 2394, 2397, 2403, 2410, 2414, 2418, 2422, 2429, 2432, + 2441, 2447, 2453, 2463, 2466, 2472, 2478, 2493, 2499, 2507, + 2516, 2519, 2525, 2531, 2544, 2550, 2556, 2560, 2570, 2573, + 2579, 2585, 2598, 2604, 2608, 2614, 2625, 2631, 2640, 2646, + 2666, 2669, 2675, 2679, 2689, 2695, 2701, 2707, 2720, 2740, + 2778, 2798, 2835, 2883, 2924, 2965, 2978, 3011, 3025, 3034, + 3041, 3045, 3049, 3055, 3061, 3069, 3082, 3086, 3097, 3104, + 3110, 3116 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "DOT", "DOT_DOT", "COLON_COLON", + "ucIdentifier", "lcIdentifier", "floatValue", "textSegment", + "decimalNumber", "hexadecimalNumber", "OID", "moduleKeyword", + "importKeyword", "revisionKeyword", "identityKeyword", "oidKeyword", + "dateKeyword", "organizationKeyword", "contactKeyword", + "descriptionKeyword", "referenceKeyword", "extensionKeyword", + "typedefKeyword", "typeKeyword", "formatKeyword", "unitsKeyword", + "statusKeyword", "accessKeyword", "defaultKeyword", "impliedKeyword", + "indexKeyword", "augmentsKeyword", "reordersKeyword", "sparseKeyword", + "expandsKeyword", "createKeyword", "membersKeyword", "objectsKeyword", + "mandatoryKeyword", "optionalKeyword", "refineKeyword", "abnfKeyword", + "OctetStringKeyword", "ObjectIdentifierKeyword", "Integer32Keyword", + "Unsigned32Keyword", "Integer64Keyword", "Unsigned64Keyword", + "Float32Keyword", "Float64Keyword", "Float128Keyword", "BitsKeyword", + "EnumerationKeyword", "currentKeyword", "deprecatedKeyword", + "obsoleteKeyword", "readonlyKeyword", "readwriteKeyword", + "parentKeyword", "classKeyword", "extendsKeyword", "attributeKeyword", + "uniqueKeyword", "eventKeyword", "PointerKeyword", "eventonlyKeyword", + "neginfKeyword", "posinfKeyword", "snanKeyword", "qnanKeyword", "'{'", + "'}'", "';'", "'('", "')'", "'|'", "','", "'-'", "$accept", "smingFile", + "moduleStatement_optsep_0n", "moduleStatement_optsep_1n", + "moduleStatement_optsep", "moduleStatement", "@1", "@2", "@3", "@4", + "@5", "extensionStatement_stmtsep_0n", "extensionStatement_stmtsep_1n", + "extensionStatement_stmtsep", "extensionStatement", "@6", "@7", "@8", + "@9", "@10", "typedefStatement_stmtsep_0n", + "typedefStatement_stmtsep_1n", "typedefStatement_stmtsep", + "typedefStatement", "@11", "@12", "@13", "@14", "@15", "@16", "@17", + "@18", "classStatement_stmtsep_0n", "classStatement_stmtsep_1n", + "classStatement_stmtsep", "classStatement", "@19", "@20", "@21", "@22", + "@23", "@24", "attributeStatement_stmtsep_0n", + "attributeStatement_stmtsep_1n", "attributeStatement_stmtsep", + "attributeStatement", "@25", "@26", "@27", "@28", "@29", "@30", "@31", + "@32", "@33", "eventStatement_stmtsep_0n", "eventStatement_stmtsep_1n", + "eventStatement_stmtsep", "eventStatement", "@34", "@35", "@36", "@37", + "importStatement_stmtsep_0n", "importStatement_stmtsep_1n", + "importStatement_stmtsep", "importStatement", "@38", "@39", + "revisionStatement_stmtsep_0n", "revisionStatement_stmtsep_1n", + "revisionStatement_stmtsep", "revisionStatement", + "identityStatement_stmtsep_0n", "identityStatement_stmtsep_1n", + "identityStatement_stmtsep", "identityStatement", "@40", "@41", "@42", + "@43", "@44", "typedefTypeStatement", "attributeTypeStatement", + "dateStatement", "organizationStatement", "contactStatement", + "formatStatement_stmtsep_01", "formatStatement", + "unitsStatement_stmtsep_01", "unitsStatement", + "statusStatement_stmtsep_01", "statusStatement", + "uniqueStatement_stmtsep_01", "uniqueStatement", "uniqueSpec", + "extendsStatement_stmtsep_01", "extendsStatement", + "defaultStatement_stmtsep_01", "defaultStatement", + "accessStatement_stmtsep_01", "accessStatement", "access", + "parentStatement_stmtsep_01", "parentStatement", + "descriptionStatement_stmtsep_01", "descriptionStatement", + "referenceStatement_stmtsep_01", "referenceStatement", + "abnfStatement_stmtsep_01", "abnfStatement", + "refinedBaseType_refinedType", "attribute_refinedBaseType_refinedType", + "refinedBaseType", "@45", "attribute_refinedBaseType", "@46", + "refinedType", "attribute_refinedType", "optsep_anySpec_01", "anySpec", + "optsep_numberSpec_01", "numberSpec", "furtherNumberElement_0n", + "furtherNumberElement_1n", "furtherNumberElement", "numberElement", + "numberUpperLimit_01", "numberUpperLimit", "optsep_floatSpec_01", + "floatSpec", "furtherFloatElement_0n", "furtherFloatElement_1n", + "furtherFloatElement", "floatElement", "floatUpperLimit_01", + "floatUpperLimit", "specialFloatValue", "optsep_pointerRestr_01", + "pointerRestr", "bitsOrEnumerationSpec", "bitsOrEnumerationList", + "furtherBitsOrEnumerationItem_0n", "furtherBitsOrEnumerationItem_1n", + "furtherBitsOrEnumerationItem", "bitsOrEnumerationItem", + "identifierList", "furtherIdentifier_0n", "furtherIdentifier_1n", + "furtherIdentifier", "bitsValue", "bitsList", "furtherLcIdentifier_0n", + "furtherLcIdentifier_1n", "furtherLcIdentifier", "identifier", + "qucIdentifier", "qlcIdentifier", "text", "optsep_textSegment_0n", + "optsep_textSegment_1n", "optsep_textSegment", "date", "format", "units", + "anyValue", "qOID", "status", "number", "negativeNumber", "signedNumber", + "optsep_comma_01", "sep", "optsep", "stmtsep", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 123, 125, 59, 40, 41, 124, 44, 45 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 80, 81, 82, 82, 83, 83, 84, 86, 87, + 88, 89, 90, 85, 91, 91, 92, 92, 93, 95, + 96, 97, 98, 99, 94, 100, 100, 101, 101, 102, + 104, 105, 106, 107, 108, 109, 110, 111, 103, 112, + 112, 113, 113, 114, 116, 117, 118, 119, 120, 121, + 115, 122, 122, 123, 123, 124, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 125, 135, 135, 136, 136, + 137, 139, 140, 141, 142, 138, 143, 143, 144, 144, + 145, 147, 148, 146, 149, 149, 150, 150, 151, 152, + 153, 153, 154, 154, 155, 157, 158, 159, 160, 161, + 156, 162, 163, 164, 165, 166, 167, 167, 168, 169, + 169, 170, 171, 171, 172, 173, 173, 174, 175, 175, + 176, 176, 177, 178, 178, 179, 180, 180, 181, 182, + 182, 182, 183, 183, 184, 185, 185, 186, 187, 187, + 188, 189, 189, 190, 191, 191, 192, 192, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, + 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 196, 195, 197, 198, 199, 199, 200, 200, + 201, 201, 202, 203, 203, 204, 204, 205, 206, 207, + 207, 208, 209, 209, 210, 211, 211, 212, 212, 213, + 214, 215, 215, 216, 217, 217, 217, 217, 218, 218, + 219, 220, 221, 222, 222, 223, 223, 224, 225, 226, + 227, 227, 228, 228, 229, 230, 231, 231, 232, 232, + 233, 233, 234, 235, 235, 236, 236, 237, 237, 238, + 239, 239, 240, 240, 241, 242, 243, 244, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, + 247, 247, 247, 248, 248, 249, 250, 250, 251, 252, + 253, 254 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 0, 1, 1, 2, 2, 0, 0, + 0, 0, 0, 27, 0, 1, 1, 2, 2, 0, + 0, 0, 0, 0, 18, 0, 1, 1, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, + 22, 0, 1, 1, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 1, 1, 2, + 2, 0, 0, 0, 0, 16, 0, 1, 1, 2, + 2, 0, 0, 13, 0, 1, 1, 2, 2, 11, + 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, + 18, 5, 5, 5, 5, 5, 0, 2, 5, 0, + 2, 5, 0, 2, 5, 0, 2, 7, 1, 3, + 0, 2, 5, 0, 2, 5, 0, 2, 5, 1, + 1, 1, 0, 2, 5, 0, 2, 5, 0, 2, + 5, 0, 2, 5, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 3, 2, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 3, 2, 2, 0, 2, 1, 1, + 0, 2, 6, 0, 1, 1, 2, 4, 2, 0, + 1, 4, 0, 2, 6, 0, 1, 1, 2, 4, + 2, 0, 1, 4, 1, 1, 1, 1, 0, 2, + 5, 5, 3, 0, 1, 1, 2, 4, 7, 3, + 0, 1, 1, 2, 4, 5, 1, 3, 0, 1, + 1, 2, 4, 1, 1, 3, 1, 3, 1, 2, + 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 0, 0, + 0, 0 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 270, 0, 3, 1, 269, 2, 4, 5, 270, 0, + 6, 7, 8, 270, 0, 271, 76, 269, 0, 77, + 78, 271, 0, 269, 271, 79, 80, 81, 0, 9, + 270, 240, 270, 0, 0, 239, 241, 242, 0, 0, + 269, 271, 270, 243, 244, 104, 0, 10, 0, 270, + 0, 233, 234, 82, 220, 0, 269, 271, 270, 268, + 221, 222, 0, 105, 0, 11, 0, 219, 223, 270, + 270, 138, 270, 0, 0, 269, 12, 271, 0, 224, + 137, 0, 84, 139, 83, 270, 270, 14, 85, 86, + 271, 0, 0, 269, 90, 15, 16, 271, 87, 88, + 140, 271, 0, 269, 25, 91, 92, 271, 17, 18, + 0, 19, 0, 269, 39, 26, 27, 271, 93, 94, + 269, 271, 270, 95, 0, 269, 0, 40, 41, 271, + 28, 29, 0, 0, 0, 270, 30, 0, 270, 42, + 43, 245, 270, 271, 271, 0, 270, 44, 0, 0, + 0, 112, 271, 0, 270, 13, 103, 270, 269, 20, + 271, 132, 271, 0, 0, 0, 135, 113, 269, 96, + 271, 0, 271, 89, 260, 261, 262, 270, 21, 271, + 0, 112, 133, 269, 271, 120, 0, 138, 136, 270, + 97, 0, 31, 269, 45, 271, 114, 22, 0, 135, + 236, 180, 149, 180, 180, 180, 180, 192, 192, 192, + 159, 0, 208, 270, 144, 145, 176, 123, 0, 51, + 121, 141, 134, 98, 0, 148, 0, 150, 151, 152, + 153, 154, 0, 155, 156, 0, 270, 158, 157, 0, + 0, 174, 0, 269, 32, 271, 270, 269, 115, 52, + 53, 271, 269, 23, 271, 138, 235, 270, 181, 270, + 193, 160, 0, 270, 209, 101, 270, 177, 178, 179, + 0, 106, 124, 0, 0, 269, 46, 271, 54, 55, + 0, 0, 142, 99, 0, 0, 270, 270, 213, 0, + 0, 0, 238, 252, 249, 251, 259, 204, 205, 207, + 206, 270, 0, 254, 248, 256, 255, 270, 257, 269, + 33, 271, 122, 56, 0, 66, 116, 270, 270, 0, + 264, 263, 0, 183, 266, 267, 189, 201, 195, 0, + 0, 268, 214, 215, 0, 0, 270, 0, 268, 253, + 250, 0, 0, 109, 107, 270, 268, 269, 112, 67, + 68, 271, 0, 0, 270, 265, 270, 184, 185, 0, + 188, 190, 0, 200, 202, 0, 270, 196, 197, 0, + 270, 211, 212, 216, 270, 0, 0, 237, 258, 228, + 270, 226, 125, 246, 270, 269, 34, 271, 0, 228, + 0, 118, 0, 47, 69, 70, 143, 24, 0, 0, + 186, 270, 270, 270, 0, 198, 270, 0, 0, 210, + 268, 229, 230, 0, 0, 0, 0, 112, 110, 271, + 268, 270, 71, 135, 100, 182, 0, 0, 0, 194, + 0, 270, 217, 227, 231, 270, 225, 108, 247, 270, + 35, 0, 119, 0, 270, 48, 187, 191, 203, 199, + 0, 0, 0, 135, 269, 57, 117, 0, 138, 218, + 232, 111, 36, 0, 126, 271, 49, 138, 180, 162, + 180, 180, 180, 180, 192, 192, 192, 172, 0, 208, + 270, 146, 147, 176, 269, 58, 271, 112, 0, 37, + 161, 163, 164, 165, 166, 167, 168, 169, 0, 171, + 170, 0, 175, 0, 123, 127, 72, 270, 0, 173, + 102, 129, 130, 131, 270, 59, 135, 0, 270, 0, + 106, 73, 50, 0, 128, 60, 138, 38, 109, 74, + 61, 0, 112, 270, 62, 0, 135, 75, 63, 138, + 64, 0, 270, 0, 65 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 5, 6, 7, 8, 13, 33, 50, 71, + 82, 94, 95, 96, 97, 122, 166, 187, 221, 281, + 114, 115, 116, 117, 146, 217, 271, 343, 417, 453, + 467, 508, 126, 127, 128, 129, 154, 219, 315, 423, + 458, 488, 248, 249, 250, 251, 345, 464, 504, 520, + 528, 532, 536, 539, 541, 348, 349, 350, 351, 444, + 516, 526, 531, 18, 19, 20, 21, 30, 58, 87, + 88, 89, 90, 104, 105, 106, 107, 135, 181, 199, + 255, 319, 184, 455, 121, 24, 41, 310, 311, 386, + 387, 159, 160, 276, 277, 390, 194, 195, 244, 245, + 485, 486, 514, 169, 170, 178, 179, 76, 77, 253, + 254, 213, 480, 214, 235, 481, 498, 215, 482, 241, + 267, 225, 258, 356, 357, 358, 323, 360, 361, 231, + 260, 366, 367, 368, 328, 363, 364, 303, 238, 264, + 237, 287, 331, 332, 333, 288, 53, 59, 60, 61, + 304, 380, 410, 411, 412, 54, 216, 305, 32, 35, + 36, 37, 142, 384, 439, 307, 308, 177, 324, 325, + 326, 67, 9, 226, 16 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -391 +static const yytype_int16 yypact[] = +{ + -391, 11, 1, -391, -391, -391, 1, -391, -391, 35, + -391, -391, -391, -391, -54, -391, 30, -391, 34, 30, + -391, -391, 51, -391, -391, -391, -391, -391, 50, -391, + -391, 54, -391, 44, -10, -391, 54, -391, 57, -7, + -391, -391, -391, -391, -391, -391, 50, -391, 40, -391, + 47, -391, -391, -391, 9, -3, -391, -391, -391, -391, + 9, -391, 10, -391, 50, -391, 2, -391, -391, -391, + -391, 60, -391, 40, 15, -391, -391, -391, 18, -391, + -391, 50, 64, -391, -391, -391, -391, 70, 64, -391, + -391, 22, 27, -391, 67, 70, -391, -391, -391, -391, + -391, -391, 90, -391, 78, 67, -391, -391, -391, -391, + 85, -391, 97, -391, 45, 78, -391, -391, -391, -391, + -391, -391, -391, -391, 103, -391, 37, 45, -391, -391, + -391, -391, 104, 47, 42, -391, -391, 109, -391, -391, + -391, -391, -391, -391, -391, 46, -391, -391, 43, 52, + 55, 88, -391, 48, -391, -391, -391, -391, -391, -391, + -391, 59, -391, 58, 53, -5, 47, -391, -391, -391, + -391, 98, -391, -391, -391, -391, -391, -391, -391, -391, + 117, 88, -391, -391, -391, 69, 62, 60, -391, -391, + -391, 447, -391, -391, -391, -391, -391, -391, 63, 47, + 124, 65, -391, 65, 65, 65, 65, 65, 65, 65, + -391, 66, 65, -391, -391, -391, 65, 102, 128, 76, + -391, 100, -391, -391, 138, -391, 74, -391, -391, -391, + -391, -391, 75, -391, -391, 66, -391, -391, -391, 77, + 79, -391, 83, -391, -391, -391, -391, -391, 87, 76, + -391, -391, -391, -391, -391, 60, -391, -391, -391, -391, + -391, -391, 152, -391, -391, -391, -391, -391, -391, -391, + 386, 134, -391, 89, 154, -391, -391, -391, -391, -391, + 50, 92, -391, -391, 5, 159, -391, -391, 9, 49, + 12, 157, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, 25, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, 93, 106, -391, -391, -391, 99, + -391, -391, 163, 101, -391, -391, 171, 171, 101, 107, + 105, -391, 9, -391, 108, 174, -391, 17, 177, -391, + -391, 111, 178, 164, -391, -391, 183, -391, 88, 106, + -391, -391, 118, 119, -391, -391, -391, 101, -391, 120, + -391, -391, 190, -391, -391, 191, -391, 101, -391, 121, + -391, -391, -391, -391, -391, 189, 125, -391, -391, 9, + -391, -391, -391, -391, -391, -391, -391, -391, 130, 9, + 127, -391, 193, -391, -391, -391, -391, -391, 131, 135, + -391, -391, -391, -391, 139, -391, -391, 5, 152, -391, + -391, 9, -391, 126, 141, 132, 201, 88, -391, -391, + -391, -391, -391, 47, -391, -391, 5, 5, 206, -391, + 159, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, 194, -391, 144, -391, -391, -391, -391, -391, -391, + 145, 213, 148, 47, -391, -391, -391, 151, 60, -391, + -391, -391, -391, 475, 195, -391, -391, 60, 65, -391, + 65, 65, 65, 65, 65, 65, 65, -391, 66, 65, + -391, -391, -391, 65, -391, -391, -391, 88, 153, -391, + -391, -391, -391, -391, -391, -391, -391, -391, 66, -391, + -391, 155, -391, -19, 102, -391, -391, -391, 160, -391, + -391, -391, -391, -391, -391, -391, 47, 158, -391, 161, + 134, -391, -391, 166, -391, -391, 60, -391, 164, -391, + -391, 168, 88, -391, -391, 169, 47, -391, -391, 60, + -391, 172, -391, 173, -391 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -391, -391, -391, -391, 219, -391, -391, -391, -391, -391, + -391, -391, -391, 133, -391, -391, -391, -391, -391, -391, + -391, -391, 136, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, 115, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -1, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -99, -391, -391, + -391, -391, -391, -391, -391, 233, -391, -391, -391, -391, + -391, 165, -391, -391, -391, 149, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -264, -391, -268, + -391, -179, -391, -391, -391, -391, -391, -391, -239, -391, + -391, -391, -391, -391, -391, -192, -38, -178, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -216, + -391, -130, 26, -391, -391, -88, -156, -391, -391, -203, + 32, -391, -391, -92, -154, -391, -391, -391, -202, -391, + -234, -391, -391, -391, -53, -126, -391, -391, -391, 218, + -391, -391, -106, -391, -127, 212, -173, 3, -43, -391, + -391, 255, -391, -391, -391, -391, -391, -391, -391, -391, + -390, -312, -13, 0, 4 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -271 +static const yytype_int16 yytable[] = +{ + 2, 261, 190, 49, 22, 233, 234, 223, 11, 197, + 28, 3, 57, 14, 4, 320, 321, 431, 15, 372, + 327, 70, 320, 321, 377, 26, 381, 46, 29, 378, + 34, 38, 39, 339, 391, 340, 38, 447, 85, 511, + 512, 12, 48, 64, 17, 47, 51, 52, 513, 55, + 174, 175, 176, 23, 62, 335, 292, 27, 66, 31, + 62, 65, 81, -270, 40, 42, 44, 45, 56, 73, + 74, 63, 78, 227, 228, 229, 230, 283, 72, 86, + 102, 83, 75, 103, 322, 91, 92, -270, 69, 80, + 112, 322, 84, 93, 99, 143, 100, 111, 433, 101, + 124, 109, 113, 120, 123, 110, 125, 132, 442, 136, + 138, 119, 137, 141, 144, 147, 158, 155, 152, 168, + 162, 131, 134, 183, 189, 133, 156, 173, 157, 224, + 172, 193, 243, 140, 246, 145, 196, 222, 148, 247, + -270, 236, 149, 252, 256, 165, 153, 150, 151, 257, + 259, 275, 263, 265, 163, 180, 161, 164, 266, 286, + 309, 313, 337, 312, 167, 318, 171, 327, 346, 393, + 191, 347, 354, 355, 182, -270, 185, 186, -270, 375, + 218, 371, 370, 188, 379, 382, 374, 383, 192, 198, + 389, 385, 396, 397, 402, 403, 377, 401, 406, 220, + 422, 409, 419, 421, 435, 424, 437, 232, 232, 232, + 438, 425, 239, 240, 448, 429, 242, 436, 456, 454, + 460, 459, 461, 465, 484, 10, 507, 306, 108, 510, + 270, 445, 522, 518, 274, 524, 262, 317, 440, 280, + 527, 533, 139, 537, 499, 542, 273, 544, 278, 272, + 394, 130, 25, 98, 118, 279, 525, 284, 282, 285, + 530, 462, 314, 289, 509, 515, 290, 502, 268, 400, + 446, 495, 496, 497, 269, 405, 449, 500, 68, 373, + 466, 316, 432, 420, 434, 79, 329, 330, 334, 489, + 483, 43, 336, 0, 0, 0, 342, 0, 0, 0, + 0, 338, 0, 0, 0, 0, 0, 341, 506, 0, + 0, 0, 0, 0, 0, 344, 0, 352, 353, 0, + 0, 0, 0, 359, 521, 0, 362, 365, 369, 0, + 0, 0, 334, 0, 392, 0, 376, 0, 490, 0, + 491, 492, 493, 494, 538, 388, 0, 0, 529, 0, + 0, 0, 0, 534, 398, 395, 399, 359, 0, 0, + 0, 540, 0, 0, 0, 0, 404, 369, 0, 0, + 407, 0, 416, 0, 408, 0, 0, 0, 0, 413, + 414, 0, 0, 0, 415, 0, 0, 0, 0, 413, + 0, 418, 291, 292, 293, 31, 294, 295, 296, 0, + 0, 426, 427, 428, 0, 0, 430, 0, 0, 0, + 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 443, 0, 441, 0, 0, 0, 0, 0, 0, + 0, 450, 0, 0, 0, 451, 0, 0, 0, 452, + 0, 463, 0, 0, 457, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 297, 298, 299, 300, 0, 0, + 0, 301, 0, 0, 0, 302, 0, 0, 0, 487, + 0, 503, 0, 0, 232, 232, 232, 0, 0, 239, + 501, 200, 0, 242, 0, 0, 0, 0, 0, 0, + 505, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 0, 0, 0, 0, 0, 517, 0, 0, + 0, 0, 0, 212, 519, 0, 0, 0, 523, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 0, 0, 0, 535, 0, 0, 0, 0, 0, 0, + 0, 479, 543 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 235, 181, 46, 17, 208, 209, 199, 8, 187, + 23, 0, 50, 13, 13, 10, 11, 407, 72, 331, + 8, 64, 10, 11, 7, 21, 338, 40, 24, 12, + 30, 31, 32, 8, 346, 10, 36, 427, 81, 58, + 59, 6, 42, 56, 14, 41, 6, 7, 67, 49, + 55, 56, 57, 19, 54, 6, 7, 6, 58, 9, + 60, 57, 75, 9, 20, 75, 9, 74, 21, 69, + 70, 74, 72, 203, 204, 205, 206, 255, 76, 15, + 93, 77, 22, 16, 79, 85, 86, 78, 78, 74, + 103, 79, 74, 23, 90, 133, 74, 7, 410, 72, + 113, 97, 24, 18, 7, 101, 61, 120, 420, 6, + 73, 107, 125, 9, 72, 6, 28, 74, 72, 60, + 72, 117, 122, 25, 7, 121, 74, 74, 73, 5, + 72, 62, 30, 129, 6, 135, 74, 74, 138, 63, + 75, 75, 142, 43, 6, 158, 146, 143, 144, 75, + 75, 64, 75, 74, 154, 168, 152, 157, 75, 7, + 26, 7, 5, 74, 160, 73, 162, 8, 75, 348, + 183, 65, 73, 10, 170, 4, 172, 177, 77, 5, + 193, 76, 75, 179, 7, 74, 78, 9, 184, 189, + 7, 27, 74, 74, 4, 4, 7, 77, 77, 195, + 7, 76, 72, 76, 78, 74, 74, 207, 208, 209, + 9, 76, 212, 213, 8, 76, 216, 76, 74, 25, + 7, 76, 74, 72, 29, 6, 73, 270, 95, 74, + 243, 423, 74, 73, 247, 74, 236, 280, 417, 252, + 74, 73, 127, 74, 478, 73, 246, 74, 249, 245, + 349, 115, 19, 88, 105, 251, 520, 257, 254, 259, + 528, 453, 275, 263, 498, 504, 266, 483, 242, 357, + 426, 474, 475, 476, 242, 367, 430, 479, 60, 332, + 458, 277, 408, 389, 411, 73, 286, 287, 288, 467, + 463, 36, 289, -1, -1, -1, 309, -1, -1, -1, + -1, 301, -1, -1, -1, -1, -1, 307, 487, -1, + -1, -1, -1, -1, -1, 311, -1, 317, 318, -1, + -1, -1, -1, 323, 516, -1, 326, 327, 328, -1, + -1, -1, 332, -1, 347, -1, 336, -1, 468, -1, + 470, 471, 472, 473, 536, 345, -1, -1, 526, -1, + -1, -1, -1, 532, 354, 351, 356, 357, -1, -1, + -1, 539, -1, -1, -1, -1, 366, 367, -1, -1, + 370, -1, 385, -1, 374, -1, -1, -1, -1, 379, + 380, -1, -1, -1, 384, -1, -1, -1, -1, 389, + -1, 387, 6, 7, 8, 9, 10, 11, 12, -1, + -1, 401, 402, 403, -1, -1, 406, -1, -1, -1, + -1, 411, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 421, -1, 419, -1, -1, -1, -1, -1, -1, + -1, 431, -1, -1, -1, 435, -1, -1, -1, 439, + -1, 454, -1, -1, 444, -1, -1, -1, -1, -1, + -1, -1, -1, 6, 68, 69, 70, 71, -1, -1, + -1, 75, -1, -1, -1, 79, -1, -1, -1, 465, + -1, 484, -1, -1, 474, 475, 476, -1, -1, 479, + 480, 6, -1, 483, -1, -1, -1, -1, -1, -1, + 486, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, -1, -1, 507, -1, -1, + -1, -1, -1, 66, 514, -1, -1, -1, 518, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + -1, -1, -1, 533, -1, -1, -1, -1, -1, -1, + -1, 66, 542 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 81, 253, 0, 13, 82, 83, 84, 85, 252, + 84, 253, 6, 86, 253, 72, 254, 14, 143, 144, + 145, 146, 252, 19, 165, 145, 254, 6, 252, 254, + 147, 9, 238, 87, 253, 239, 240, 241, 253, 253, + 20, 166, 75, 241, 9, 74, 252, 254, 253, 238, + 88, 6, 7, 226, 235, 253, 21, 186, 148, 227, + 228, 229, 253, 74, 252, 254, 253, 251, 229, 78, + 238, 89, 76, 253, 253, 22, 187, 188, 253, 235, + 74, 252, 90, 254, 74, 238, 15, 149, 150, 151, + 152, 253, 253, 23, 91, 92, 93, 94, 151, 254, + 74, 72, 252, 16, 153, 154, 155, 156, 93, 254, + 254, 7, 252, 24, 100, 101, 102, 103, 155, 254, + 18, 164, 95, 7, 252, 61, 112, 113, 114, 115, + 102, 254, 252, 254, 253, 157, 6, 252, 73, 114, + 254, 9, 242, 186, 72, 253, 104, 6, 253, 253, + 254, 254, 72, 253, 116, 74, 74, 73, 28, 171, + 172, 254, 72, 253, 253, 252, 96, 254, 60, 183, + 184, 254, 72, 74, 55, 56, 57, 247, 185, 186, + 252, 158, 254, 25, 162, 254, 253, 97, 254, 7, + 171, 252, 254, 62, 176, 177, 74, 187, 253, 159, + 6, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 66, 191, 193, 197, 236, 105, 252, 117, + 254, 98, 74, 185, 5, 201, 253, 201, 201, 201, + 201, 209, 253, 209, 209, 194, 75, 220, 218, 253, + 253, 199, 253, 30, 178, 179, 6, 63, 122, 123, + 124, 125, 43, 189, 190, 160, 6, 75, 202, 75, + 210, 220, 253, 75, 219, 74, 75, 200, 202, 210, + 252, 106, 254, 253, 252, 64, 173, 174, 124, 254, + 252, 99, 254, 187, 253, 253, 7, 221, 225, 253, + 253, 6, 7, 8, 10, 11, 12, 68, 69, 70, + 71, 75, 79, 217, 230, 237, 238, 245, 246, 26, + 167, 168, 74, 7, 252, 118, 254, 238, 73, 161, + 10, 11, 79, 206, 248, 249, 250, 8, 214, 253, + 253, 222, 223, 224, 253, 6, 237, 5, 253, 8, + 10, 253, 252, 107, 254, 126, 75, 65, 135, 136, + 137, 138, 253, 253, 73, 10, 203, 204, 205, 253, + 207, 208, 253, 215, 216, 253, 211, 212, 213, 253, + 75, 76, 251, 224, 78, 5, 253, 7, 12, 7, + 231, 251, 74, 9, 243, 27, 169, 170, 253, 7, + 175, 251, 252, 171, 137, 254, 74, 74, 253, 253, + 205, 77, 4, 4, 253, 213, 77, 253, 253, 76, + 232, 233, 234, 253, 253, 253, 252, 108, 254, 72, + 232, 76, 7, 119, 74, 76, 253, 253, 253, 76, + 253, 250, 225, 251, 234, 78, 76, 74, 9, 244, + 171, 254, 251, 253, 139, 185, 206, 250, 8, 214, + 253, 253, 253, 109, 25, 163, 74, 253, 120, 76, + 7, 74, 185, 252, 127, 72, 187, 110, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 66, + 192, 195, 198, 236, 29, 180, 181, 254, 121, 187, + 201, 201, 201, 201, 201, 209, 209, 209, 196, 220, + 218, 253, 199, 252, 128, 254, 171, 73, 111, 220, + 74, 58, 59, 67, 182, 178, 140, 253, 73, 253, + 129, 185, 74, 253, 74, 167, 141, 74, 130, 187, + 169, 142, 131, 73, 171, 253, 132, 74, 185, 133, + 187, 134, 73, 253, 74 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 612 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed modules. + */ + (yyval.rc) = (yyvsp[(2) - (2)].rc); + ;} + break; + + case 3: +#line 622 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 4: +#line 626 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 5: +#line 632 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 6: +#line 636 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * modules or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 7: +#line 651 "parser-sming.y" + { + /* + * If we got a (Module *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].modulePtr) != NULL) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 8: +#line 665 "parser-sming.y" + { + thisParserPtr->modulePtr = findModuleByName((yyvsp[(3) - (3)].text)); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule((yyvsp[(3) - (3)].text), + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + (yyvsp[(3) - (3)].text)); + free((yyvsp[(3) - (3)].text)); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + thisModulePtr->export.language = SMI_LANGUAGE_SMING; + thisParserPtr->modulePtr->numImportedIdentifiers + = 0; + thisParserPtr->modulePtr->numStatements = 0; + thisParserPtr->modulePtr->numModuleIdentities = 0; + thisParserPtr->firstIndexlabelPtr = NULL; + thisParserPtr->identityObjectName = NULL; + ;} + break; + + case 9: +#line 695 "parser-sming.y" + { + if ((yyvsp[(9) - (10)].text)) { + setModuleOrganization(thisParserPtr->modulePtr, + (yyvsp[(9) - (10)].text)); + } + ;} + break; + + case 10: +#line 702 "parser-sming.y" + { + if ((yyvsp[(12) - (13)].text)) { + setModuleContactInfo(thisParserPtr->modulePtr, + (yyvsp[(12) - (13)].text)); + } + ;} + break; + + case 11: +#line 709 "parser-sming.y" + { + if ((yyvsp[(15) - (16)].text)) { + setModuleDescription(thisParserPtr->modulePtr, + (yyvsp[(15) - (16)].text), thisParserPtr); + } + ;} + break; + + case 12: +#line 716 "parser-sming.y" + { + if ((yyvsp[(18) - (18)].text)) { + setModuleReference(thisParserPtr->modulePtr, + (yyvsp[(18) - (18)].text), thisParserPtr); + } + ;} + break; + + case 13: +#line 728 "parser-sming.y" + { + checkTypes(thisParserPtr, thisModulePtr); + + (yyval.modulePtr) = thisModulePtr; + ;} + break; + + case 14: +#line 736 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 15: +#line 740 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed extension statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 16: +#line 750 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 17: +#line 755 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * extensions or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 18: +#line 770 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].macroPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 19: +#line 784 "parser-sming.y" + { + macroIdentifier = (yyvsp[(3) - (3)].text); + macroPtr = addMacro(macroIdentifier, + 0, + thisParserPtr); + setMacroDecl(macroPtr, SMI_DECL_EXTENSION); + ;} + break; + + case 20: +#line 793 "parser-sming.y" + { + if (macroPtr && (yyvsp[(8) - (8)].status)) { + setMacroStatus(macroPtr, (yyvsp[(8) - (8)].status)); + } + ;} + break; + + case 21: +#line 799 "parser-sming.y" + { + if (macroPtr && (yyvsp[(10) - (10)].text)) { + setMacroDescription(macroPtr, (yyvsp[(10) - (10)].text), + thisParserPtr); + } + ;} + break; + + case 22: +#line 806 "parser-sming.y" + { + if (macroPtr && (yyvsp[(12) - (12)].text)) { + setMacroReference(macroPtr, (yyvsp[(12) - (12)].text), + thisParserPtr); + } + ;} + break; + + case 23: +#line 813 "parser-sming.y" + { + if (macroPtr && (yyvsp[(14) - (14)].text)) { + setMacroAbnf(macroPtr, (yyvsp[(14) - (14)].text), + thisParserPtr); + } + ;} + break; + + case 24: +#line 820 "parser-sming.y" + { + (yyval.macroPtr) = 0; + macroPtr = NULL; + ;} + break; + + case 25: +#line 827 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 26: +#line 831 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 27: +#line 841 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 28: +#line 846 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * typedefs or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 29: +#line 861 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].typePtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 30: +#line 875 "parser-sming.y" + { + typeIdentifier = (yyvsp[(3) - (3)].text); + /* + *check for duplicate names in the module + */ + if(typePtr = + findType(typeIdentifier, thisParserPtr,thisModulePtr)) + if( typePtr->modulePtr == thisParserPtr->modulePtr) + smiPrintError(thisParserPtr, + ERR_DUPLICATE_TYPE_NAME, + typeIdentifier); + ;} + break; + + case 31: +#line 889 "parser-sming.y" + { + if ((yyvsp[(8) - (9)].typePtr)) { + if ((yyvsp[(8) - (9)].typePtr)->export.name) { + /* + * If the exact type has been found + * and no new Type structure has been + * created, we have to create a + * duplicate now. + */ + typePtr = duplicateType((yyvsp[(8) - (9)].typePtr), 0, + thisParserPtr); + } else { + typePtr = (yyvsp[(8) - (9)].typePtr); + } + typePtr = setTypeName(typePtr, typeIdentifier); + setTypeDecl(typePtr, SMI_DECL_TYPEDEF); + } + defaultBasetype = typePtr->export.basetype; + ;} + break; + + case 32: +#line 909 "parser-sming.y" + { + if (typePtr && (yyvsp[(11) - (11)].valuePtr)) { + if(typePtr->export.basetype == + SMI_BASETYPE_ENUM) + //check ENUM value for correctness + { + if((yyvsp[(11) - (11)].valuePtr)->len) + if(namedNumberPtr = findNamedNumberByName(typePtr, + (yyvsp[(11) - (11)].valuePtr)->value.ptr)){ + smiFree((yyvsp[(11) - (11)].valuePtr)); + (yyvsp[(11) - (11)].valuePtr) = &namedNumberPtr->export.value; + } + else{ smiPrintError(thisParserPtr, + ERR_ENUM_NAME_NOT_DEFINED, + (yyvsp[(11) - (11)].valuePtr)->value.ptr); + } + } + //NOTE that the bits default value is set in the anyval + //rule + setTypeValue(typePtr, (yyvsp[(11) - (11)].valuePtr)); + } + ;} + break; + + case 33: +#line 932 "parser-sming.y" + { + if (typePtr && (yyvsp[(13) - (13)].text) + && smiCheckFormat(thisParserPtr, + typePtr->export.basetype, + (yyvsp[(13) - (13)].text), 0)) { + setTypeFormat(typePtr, (yyvsp[(13) - (13)].text)); + } + ;} + break; + + case 34: +#line 941 "parser-sming.y" + { + if (typePtr && (yyvsp[(15) - (15)].text)) { + setTypeUnits(typePtr, (yyvsp[(15) - (15)].text)); + } + ;} + break; + + case 35: +#line 947 "parser-sming.y" + { + if (typePtr && (yyvsp[(17) - (17)].status)) { + setTypeStatus(typePtr, (yyvsp[(17) - (17)].status)); + } + ;} + break; + + case 36: +#line 953 "parser-sming.y" + { + if (typePtr && (yyvsp[(19) - (19)].text)) { + setTypeDescription(typePtr, (yyvsp[(19) - (19)].text), + thisParserPtr); + } + ;} + break; + + case 37: +#line 960 "parser-sming.y" + { + if (typePtr && (yyvsp[(21) - (21)].text)) { + setTypeReference(typePtr, (yyvsp[(21) - (21)].text), thisParserPtr); + } + ;} + break; + + case 38: +#line 966 "parser-sming.y" + { + smiCheckNamedNumberSubtyping(thisParserPtr , typePtr); + smiCheckNamedNumbersOrder(thisParserPtr , typePtr); + smiCheckNamedNumberRedefinition(thisParserPtr , typePtr); + (yyval.typePtr) = 0; + typePtr = NULL; + free(typeIdentifier); + defaultBasetype = SMI_BASETYPE_UNKNOWN; + ;} + break; + + case 39: +#line 978 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 40: +#line 982 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 41: +#line 992 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 42: +#line 997 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * classes or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 43: +#line 1012 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].classPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 44: +#line 1026 "parser-sming.y" + { + classIdentifier = (yyvsp[(3) - (3)].text); + if(findClassByModuleAndName(thisModulePtr, classIdentifier)) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_CLASS_NAME, + attributeIdentifier); + } + else{ + classPtr = addClass(classIdentifier, + thisParserPtr); + setClassDecl(classPtr, SMI_DECL_CLASS); + } + ;} + break; + + case 45: +#line 1042 "parser-sming.y" + { + if(classPtr && (yyvsp[(8) - (8)].classPtr)) + classPtr->parentPtr = (yyvsp[(8) - (8)].classPtr); + ;} + break; + + case 46: +#line 1048 "parser-sming.y" + { + List *tmpList; + Attribute *tmpAttribute; + if(classPtr && (yyvsp[(11) - (11)].listPtr)) + { + + //Check for "magic" value #@# that defines + //scalar class. See NOTE after Class definitino in data.h + if(!strcmp((char*)((yyvsp[(11) - (11)].listPtr)->ptr),"#@#")) + { + classPtr->uniqueList = (List*)malloc(sizeof(List)); + classPtr->uniqueList->ptr = classPtr; + classPtr->uniqueList->nextPtr = NULL; + smiFree((yyvsp[(11) - (11)].listPtr)); + } + else + { + tmpList = (yyvsp[(11) - (11)].listPtr); + //convert all attribute names to atributes + for(tmpList; tmpList; tmpList=tmpList->nextPtr) + { + if(tmpAttribute = + (Attribute*)smiGetAttribute(&(classPtr->export),(char*)(tmpList->ptr))) + { + smiFree(tmpList->ptr); + tmpList->ptr = tmpAttribute; + } + else + { + smiFree(tmpList->ptr); + tmpList->ptr = NULL; + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_NOT_FOUND, + attributeIdentifier); + } + } + + classPtr->uniqueList = (yyvsp[(11) - (11)].listPtr); + } + } + ;} + break; + + case 47: +#line 1091 "parser-sming.y" + { + if (classPtr && (yyvsp[(14) - (14)].status)) { + setClassStatus(classPtr, (yyvsp[(14) - (14)].status)); + } + ;} + break; + + case 48: +#line 1097 "parser-sming.y" + { + if (classPtr && (yyvsp[(16) - (16)].text)) { + setClassDescription(classPtr, (yyvsp[(16) - (16)].text), + thisParserPtr); + } + ;} + break; + + case 49: +#line 1104 "parser-sming.y" + { + if (classPtr && (yyvsp[(18) - (18)].text)) { + setClassReference(classPtr, (yyvsp[(18) - (18)].text), + thisParserPtr); + } + ;} + break; + + case 50: +#line 1111 "parser-sming.y" + { + (yyval.classPtr) = 0; + classPtr = NULL; + ;} + break; + + case 51: +#line 1118 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 52: +#line 1122 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 53: +#line 1132 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 54: +#line 1137 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * attributes or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 55: +#line 1152 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].attributePtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 56: +#line 1166 "parser-sming.y" + { + attributeIdentifier = (yyvsp[(3) - (3)].text); + attributePtr = (Attribute*)smiGetAttribute(&(classPtr->export), + attributeIdentifier); + if(attributePtr) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_ATTRIBUTE_NAME, + attributeIdentifier); + attributePtr = NULL; + } + ;} + break; + + case 57: +#line 1180 "parser-sming.y" + { + if ((yyvsp[(8) - (8)].attributePtr)) { + attributePtr = (yyvsp[(8) - (8)].attributePtr); + setAttributeName(attributePtr, + attributeIdentifier); + setAttributeDecl(attributePtr, + SMI_DECL_ATTRIBUTE); + defaultBasetype = attributePtr->export.basetype; + } + ;} + break; + + case 58: +#line 1191 "parser-sming.y" + { + if((yyvsp[(10) - (10)].access) && attributePtr){ + /* check whether there's access for class reference, + which is not allowed */ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_ACCESS, + attributeIdentifier); + else { + setAttributeAccess(attributePtr,(yyvsp[(10) - (10)].access)); + } + } + else if(attributePtr && attributePtr->parentTypePtr) + { + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_MISSING_ACCESS, + attributeIdentifier); + } + ;} + break; + + case 59: +#line 1211 "parser-sming.y" + { + if((yyvsp[(12) - (12)].valuePtr) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_DEFAULT, + attributeIdentifier); + else{ + attributePtr->export.value = *(yyvsp[(12) - (12)].valuePtr); + } + } + else if(attributePtr) + { + attributePtr->export.value.basetype = + SMI_BASETYPE_UNKNOWN; + } + ;} + break; + + case 60: +#line 1228 "parser-sming.y" + { + if((yyvsp[(14) - (14)].text) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_FORMAT, + attributeIdentifier); + else{ + if (smiCheckFormat(thisParserPtr, + attributePtr->export.basetype,(yyvsp[(14) - (14)].text), 0)) + { + attributePtr->export.format = (yyvsp[(14) - (14)].text); + } + } + } + ;} + break; + + case 61: +#line 1244 "parser-sming.y" + { + if((yyvsp[(16) - (16)].text) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_UNITS, + attributeIdentifier); + else{ + attributePtr->export.units = (yyvsp[(16) - (16)].text); + } + } + ;} + break; + + case 62: +#line 1256 "parser-sming.y" + { + if (attributePtr && (yyvsp[(18) - (18)].status)) + attributePtr->export.status = (yyvsp[(18) - (18)].status); + ;} + break; + + case 63: +#line 1261 "parser-sming.y" + { + if (attributePtr && (yyvsp[(20) - (20)].text)) + attributePtr->export.description = (yyvsp[(20) - (20)].text); + ;} + break; + + case 64: +#line 1266 "parser-sming.y" + { + if (attributePtr && (yyvsp[(22) - (22)].text)) + attributePtr->export.reference = (yyvsp[(22) - (22)].text); + ;} + break; + + case 65: +#line 1271 "parser-sming.y" + { + (yyval.attributePtr) = attributePtr; + attributePtr = NULL; + defaultBasetype = SMI_BASETYPE_UNKNOWN; + ;} + break; + + case 66: +#line 1279 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 67: +#line 1283 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed event statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 68: +#line 1293 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 69: +#line 1298 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * events or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 70: +#line 1313 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].eventPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 71: +#line 1327 "parser-sming.y" + { + //TODO check for repeated names + eventPtr=addEvent((yyvsp[(3) - (3)].text),classPtr,thisParserPtr); + ;} + break; + + case 72: +#line 1333 "parser-sming.y" + { + if((yyvsp[(8) - (8)].status) && eventPtr) + eventPtr->export.status = (yyvsp[(8) - (8)].status); + ;} + break; + + case 73: +#line 1338 "parser-sming.y" + { + if((yyvsp[(10) - (10)].text) && eventPtr) + eventPtr->export.description = (yyvsp[(10) - (10)].text); + ;} + break; + + case 74: +#line 1343 "parser-sming.y" + { + if((yyvsp[(12) - (12)].text) && eventPtr) + eventPtr->export.reference = (yyvsp[(12) - (12)].text); + ;} + break; + + case 75: +#line 1348 "parser-sming.y" + { + (yyval.eventPtr) = eventPtr; + eventPtr = NULL; + ;} + break; + + case 76: +#line 1355 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 77: +#line 1359 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 78: +#line 1365 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 79: +#line 1369 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * imports or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 80: +#line 1384 "parser-sming.y" + { + /* + * If we got an (Object *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].listPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 81: +#line 1398 "parser-sming.y" + { + importModulename = smiStrdup((yyvsp[(3) - (3)].text)); + ;} + break; + + case 82: +#line 1403 "parser-sming.y" + { + List *listPtr, *nextPtr; + + for (listPtr = (yyvsp[(8) - (8)].listPtr); listPtr; listPtr = nextPtr) { + addImport(listPtr->ptr, thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers++; + nextPtr = listPtr->nextPtr; + free(listPtr); + } + ;} + break; + + case 83: +#line 1415 "parser-sming.y" + { + Module *modulePtr; + char *s = importModulename; + + modulePtr = findModuleByName(s); + if (!modulePtr) { + modulePtr = loadModule(s, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + free(s); + (yyval.listPtr) = NULL; + ;} + break; + + case 84: +#line 1430 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 85: +#line 1434 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 86: +#line 1440 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 87: +#line 1444 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * revisions or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 88: +#line 1459 "parser-sming.y" + { + /* + * If we got a (Revision *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].revisionPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 89: +#line 1476 "parser-sming.y" + { + (yyval.revisionPtr) = addRevision((yyvsp[(5) - (11)].date), (yyvsp[(7) - (11)].text), thisParserPtr); + ;} + break; + + case 90: +#line 1482 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 91: +#line 1486 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed identity statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 92: +#line 1496 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 93: +#line 1501 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * identities or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 94: +#line 1516 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].identityPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 95: +#line 1530 "parser-sming.y" + { + identityIdentifier = (yyvsp[(3) - (3)].text); + identityPtr = addIdentity(identityIdentifier, + thisParserPtr); + setIdentityDecl(identityPtr, SMI_DECL_IDENTITY); + ;} + break; + + case 96: +#line 1538 "parser-sming.y" + { + if(identityPtr && (yyvsp[(8) - (8)].identityPtr)) { + setIdentityParent(identityPtr,(yyvsp[(8) - (8)].identityPtr)); + } + ;} + break; + + case 97: +#line 1544 "parser-sming.y" + { + if (identityPtr && (yyvsp[(10) - (10)].status)) { + setIdentityStatus(identityPtr, (yyvsp[(10) - (10)].status)); + } + ;} + break; + + case 98: +#line 1550 "parser-sming.y" + { + if (identityPtr && (yyvsp[(12) - (12)].text)) { + setIdentityDescription(identityPtr, (yyvsp[(12) - (12)].text), + thisParserPtr); + } + ;} + break; + + case 99: +#line 1557 "parser-sming.y" + { + setIdentityReference(identityPtr, (yyvsp[(14) - (14)].text), + thisParserPtr) + ;} + break; + + case 100: +#line 1562 "parser-sming.y" + { + (yyval.identityPtr) = 0; + identityPtr = NULL; + ;} + break; + + case 101: +#line 1569 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(3) - (5)].typePtr); + ;} + break; + + case 102: +#line 1575 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(3) - (5)].attributePtr); + ;} + break; + + case 103: +#line 1581 "parser-sming.y" + { + (yyval.date) = (yyvsp[(3) - (5)].date); + ;} + break; + + case 104: +#line 1587 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 105: +#line 1593 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 106: +#line 1599 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 107: +#line 1603 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 108: +#line 1609 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 109: +#line 1615 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 110: +#line 1619 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 111: +#line 1625 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 112: +#line 1631 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_CURRENT; + ;} + break; + + case 113: +#line 1635 "parser-sming.y" + { + (yyval.status) = (yyvsp[(1) - (2)].status); + ;} + break; + + case 114: +#line 1641 "parser-sming.y" + { + (yyval.status) = (yyvsp[(3) - (5)].status); + ;} + break; + + case 115: +#line 1647 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 116: +#line 1651 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 117: +#line 1657 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(4) - (7)].listPtr); + ;} + break; + + case 118: +#line 1663 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = "#@#"; //used to indicate that unique + //statement is present and empty + //i.e. the class is scalar + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 119: +#line 1671 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 120: +#line 1682 "parser-sming.y" + { + (yyval.classPtr) = NULL; + ;} + break; + + case 121: +#line 1686 "parser-sming.y" + { + (yyval.classPtr) = (yyvsp[(1) - (2)].classPtr); + ;} + break; + + case 122: +#line 1692 "parser-sming.y" + { + (yyval.classPtr) = findClass((yyvsp[(3) - (5)].text), thisParserPtr,thisModulePtr); + if(!(yyval.classPtr))smiPrintError(thisParserPtr, + ERR_UNKNOWN_CLASS, + (yyvsp[(3) - (5)].text)); + + ;} + break; + + case 123: +#line 1702 "parser-sming.y" + { + (yyval.valuePtr) = NULL; + ;} + break; + + case 124: +#line 1706 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (2)].valuePtr); + ;} + break; + + case 125: +#line 1712 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(3) - (5)].valuePtr); + ;} + break; + + case 126: +#line 1718 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_UNKNOWN; + ;} + break; + + case 127: +#line 1722 "parser-sming.y" + { + (yyval.access) = (yyvsp[(1) - (2)].access); + ;} + break; + + case 128: +#line 1728 "parser-sming.y" + { + (yyval.access) = (yyvsp[(3) - (5)].access); + ;} + break; + + case 129: +#line 1734 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_READ_ONLY; + ;} + break; + + case 130: +#line 1738 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_READ_WRITE; + ;} + break; + + case 131: +#line 1742 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_EVENT_ONLY; + ;} + break; + + case 132: +#line 1748 "parser-sming.y" + { + (yyval.identityPtr) = NULL; + ;} + break; + + case 133: +#line 1752 "parser-sming.y" + { + (yyval.identityPtr) = (yyvsp[(1) - (2)].identityPtr); + ;} + break; + + case 134: +#line 1758 "parser-sming.y" + { + (yyval.identityPtr) = findIdentity((yyvsp[(3) - (5)].text), thisParserPtr, thisModulePtr); + if(!(yyval.identityPtr))smiPrintError(thisParserPtr, + ERR_IDENTITY_PARENT_NOT_FOUND, + (yyvsp[(3) - (5)].text)); + ;} + break; + + case 135: +#line 1767 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 136: +#line 1771 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 137: +#line 1777 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 138: +#line 1783 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 139: +#line 1787 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 140: +#line 1793 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 141: +#line 1799 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 142: +#line 1803 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 143: +#line 1809 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 144: +#line 1817 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 145: +#line 1821 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 146: +#line 1827 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(1) - (1)].attributePtr); + ;} + break; + + case 147: +#line 1831 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(1) - (1)].attributePtr); + ;} + break; + + case 148: +#line 1838 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeOctetStringPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 149: +#line 1853 "parser-sming.y" + { + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 150: +#line 1857 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeInteger32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 151: +#line 1872 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeUnsigned32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 152: +#line 1887 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeInteger64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeInteger64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeInteger64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 153: +#line 1902 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeUnsigned64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeUnsigned64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 154: +#line 1917 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 155: +#line 1932 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 156: +#line 1947 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat128Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat128Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat128Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 157: +#line 1962 "parser-sming.y" + { + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typePointerPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typePointerPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typePointerPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + } + ;} + break; + + case 158: +#line 1973 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeEnumPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeEnumPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 159: +#line 1988 "parser-sming.y" + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + ;} + break; + + case 160: +#line 1997 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(3) - (3)].listPtr)) { + (yyval.typePtr) = smiHandle->typeBitsPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeBitsPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeBitsPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + } + + bitsFlag = 0;//reset flag + ;} + break; + + case 161: +#line 2017 "parser-sming.y" + { + List *p; + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeOctetStringPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeOctetStringPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 162: +#line 2029 "parser-sming.y" + { + (yyval.attributePtr) = duplicateTypeToAttribute( + smiHandle->typeObjectIdentifierPtr, classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeObjectIdentifierPtr); + ;} + break; + + case 163: +#line 2035 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeInteger32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeInteger32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 164: +#line 2048 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeUnsigned32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 165: +#line 2061 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeInteger64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeInteger64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 166: +#line 2074 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeUnsigned64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeUnsigned64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 167: +#line 2087 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 168: +#line 2100 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 169: +#line 2113 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat128Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat128Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 170: +#line 2126 "parser-sming.y" + { + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typePointerPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typePointerPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + } + ;} + break; + + case 171: +#line 2135 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeEnumPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeEnumPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 172: +#line 2148 "parser-sming.y" + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + ;} + break; + + case 173: +#line 2157 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeBitsPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeBitsPtr); + if ((yyvsp[(1) - (3)].rc)) { + setAttributeList((yyval.attributePtr), (yyvsp[(1) - (3)].rc)); + for (p = (yyvsp[(1) - (3)].rc); p; p = p->nextPtr) + ((NamedNumber *)(p->ptr))->typePtr = (Type*)(yyval.attributePtr); + } + + bitsFlag = 0; /* reset flag */ + ;} + break; + + case 174: +#line 2174 "parser-sming.y" + { + typePtr = findType((yyvsp[(1) - (2)].text), thisParserPtr, + thisModulePtr); + if (typePtr && (yyvsp[(2) - (2)].listPtr)) { + typePtr = duplicateType(typePtr, 0, + thisParserPtr); + setTypeList(typePtr, (yyvsp[(2) - (2)].listPtr)); + } + + (yyval.typePtr) = typePtr; + ;} + break; + + case 175: +#line 2188 "parser-sming.y" + { + Class *tmp; + typePtr = findType((yyvsp[(1) - (2)].text), thisParserPtr, + thisModulePtr); + if (typePtr && (yyvsp[(2) - (2)].listPtr)) { + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeList(attributePtr, (yyvsp[(2) - (2)].listPtr)); + setAttributeParentType(attributePtr, typePtr); + } else if( typePtr ){ + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeParentType(attributePtr, typePtr); + } else if((yyvsp[(2) - (2)].listPtr)){ + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, (yyvsp[(1) - (2)].text)); + attributePtr = NULL; + } else if (tmp = findClass((yyvsp[(1) - (2)].text), + thisParserPtr,thisModulePtr)){ + attributePtr = addAttribute((yyvsp[(1) - (2)].text), classPtr, thisParserPtr); + setAttributeParentClass(attributePtr, tmp); + } else { + attributePtr = NULL; + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE_OR_CLASS, (yyvsp[(1) - (2)].text)); + } + + + (yyval.attributePtr) = attributePtr; + ;} + break; + + case 176: +#line 2220 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 177: +#line 2224 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 178: +#line 2230 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 179: +#line 2234 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 180: +#line 2240 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 181: +#line 2244 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 182: +#line 2251 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(3) - (6)].rangePtr); + (yyval.listPtr)->nextPtr = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 183: +#line 2259 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 184: +#line 2263 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 185: +#line 2269 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 186: +#line 2275 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 187: +#line 2288 "parser-sming.y" + { + (yyval.rangePtr) = (yyvsp[(4) - (4)].rangePtr); + ;} + break; + + case 188: +#line 2294 "parser-sming.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (2)].valuePtr); + if ((yyvsp[(2) - (2)].valuePtr)) { + (yyval.rangePtr)->export.maxValue = *(yyvsp[(2) - (2)].valuePtr); + smiFree((yyvsp[(2) - (2)].valuePtr)); + } else { + (yyval.rangePtr)->export.maxValue = *(yyvsp[(1) - (2)].valuePtr); + } + smiFree((yyvsp[(1) - (2)].valuePtr)); + ;} + break; + + case 189: +#line 2308 "parser-sming.y" + { + (yyval.valuePtr) = NULL; + ;} + break; + + case 190: +#line 2312 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 191: +#line 2318 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(4) - (4)].valuePtr); + ;} + break; + + case 192: +#line 2324 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 193: +#line 2328 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 194: +#line 2335 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(3) - (6)].rangePtr); + (yyval.listPtr)->nextPtr = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 195: +#line 2343 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 196: +#line 2347 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 197: +#line 2353 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 198: +#line 2359 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 199: +#line 2372 "parser-sming.y" + { + (yyval.rangePtr) = (yyvsp[(4) - (4)].rangePtr); + ;} + break; + + case 200: +#line 2378 "parser-sming.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue.basetype = SMI_BASETYPE_FLOAT64; + (yyval.rangePtr)->export.minValue.value.float64 = strtod((yyvsp[(1) - (2)].text), NULL); + if ((yyvsp[(2) - (2)].text)) { + (yyval.rangePtr)->export.maxValue.basetype = + SMI_BASETYPE_FLOAT64; + (yyval.rangePtr)->export.maxValue.value.float64 = + strtod((yyvsp[(2) - (2)].text), NULL); + } else { + (yyval.rangePtr)->export.maxValue = (yyval.rangePtr)->export.minValue; + } + ;} + break; + + case 201: +#line 2394 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 202: +#line 2398 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 203: +#line 2404 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 204: +#line 2411 "parser-sming.y" + { + (yyval.text)="-inf"; + ;} + break; + + case 205: +#line 2415 "parser-sming.y" + { + (yyval.text)="+inf"; + ;} + break; + + case 206: +#line 2419 "parser-sming.y" + { + (yyval.text)="nan"; + ;} + break; + + case 207: +#line 2423 "parser-sming.y" + { + (yyval.text)="nan"; + ;} + break; + + case 208: +#line 2429 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 209: +#line 2433 "parser-sming.y" + { + NamedNumber *nn =(NamedNumber*)smiMalloc(sizeof(NamedNumber)); + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = nn; + nn->export.name = (yyvsp[(2) - (2)].text); + ;} + break; + + case 210: +#line 2442 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 211: +#line 2448 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(3) - (5)].listPtr); + ;} + break; + + case 212: +#line 2455 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].namedNumberPtr); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 213: +#line 2463 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 214: +#line 2467 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 215: +#line 2473 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 216: +#line 2480 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 217: +#line 2494 "parser-sming.y" + { + (yyval.namedNumberPtr) = (yyvsp[(4) - (4)].namedNumberPtr); + ;} + break; + + case 218: +#line 2500 "parser-sming.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (7)].text); + (yyval.namedNumberPtr)->export.value = *(yyvsp[(5) - (7)].valuePtr); + ;} + break; + + case 219: +#line 2508 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 220: +#line 2516 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 221: +#line 2520 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 222: +#line 2526 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].text); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 223: +#line 2532 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].text); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 224: +#line 2545 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 225: +#line 2551 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(3) - (5)].listPtr); + ;} + break; + + case 226: +#line 2557 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 227: +#line 2561 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 228: +#line 2570 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 229: +#line 2574 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 230: +#line 2580 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].text); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 231: +#line 2586 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].text); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 232: +#line 2599 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 233: +#line 2605 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 234: +#line 2609 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 235: +#line 2615 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + free((yyvsp[(1) - (3)].text)); + free((yyvsp[(3) - (3)].text)); + ;} + break; + + case 236: +#line 2626 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 237: +#line 2632 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + ;} + break; + + case 238: +#line 2641 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 239: +#line 2647 "parser-sming.y" + { + int len; + if ((yyvsp[(2) - (2)].text)) { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (2)].text)) + strlen((yyvsp[(2) - (2)].text)) + 1); + strcpy((yyval.text), (yyvsp[(1) - (2)].text)); + strcat((yyval.text), (yyvsp[(2) - (2)].text)); + free((yyvsp[(1) - (2)].text)); + free((yyvsp[(2) - (2)].text)); + } else { + (yyval.text) = smiStrdup((yyvsp[(1) - (2)].text)); + } + len = strlen((yyval.text)); + while (len > 0 && (yyval.text)[len-1] == '\n') { + (yyval.text)[--len] = 0; + } + ;} + break; + + case 240: +#line 2666 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 241: +#line 2670 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 242: +#line 2676 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 243: +#line 2680 "parser-sming.y" + { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (2)].text)) + strlen((yyvsp[(2) - (2)].text)) + 1); + strcpy((yyval.text), (yyvsp[(1) - (2)].text)); + strcat((yyval.text), (yyvsp[(2) - (2)].text)); + free((yyvsp[(1) - (2)].text)); + free((yyvsp[(2) - (2)].text)); + ;} + break; + + case 244: +#line 2690 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(2) - (2)].text)); + ;} + break; + + case 245: +#line 2696 "parser-sming.y" + { + (yyval.date) = checkDate(thisParserPtr, (yyvsp[(1) - (1)].text)); + ;} + break; + + case 246: +#line 2702 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + ;} + break; + + case 247: +#line 2708 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + ;} + break; + + case 248: +#line 2721 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_BITS) { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_BITS; + (yyval.valuePtr)->value.ptr = (void*)((yyvsp[(1) - (1)].listPtr)); + //set the bits value in the value.integer32 + if(typePtr){ + createBitsValue((yyval.valuePtr),typePtr); + } + else if(attributePtr){ + createBitsValue((yyval.valuePtr), + (Type*)smiGetAttributeParentType(&(attributePtr->export))); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 249: +#line 2741 "parser-sming.y" + { + /* Note: might also be an OID or signed */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_UNSIGNED64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = strtol((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = strtoll((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiStrdup((yyvsp[(1) - (1)].text)); + /* TODO */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 250: +#line 2779 "parser-sming.y" + { + switch (defaultBasetype) { + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = - strtol((yyvsp[(2) - (2)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = - strtoll((yyvsp[(2) - (2)].text), NULL, 10); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 251: +#line 2799 "parser-sming.y" + { + /* Note: might also be an octet string */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_UNSIGNED64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = strtol((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = strtoll((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_OCTETSTRING: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = hexToStr((yyvsp[(1) - (1)].text),strlen((yyvsp[(1) - (1)].text))); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 252: +#line 2836 "parser-sming.y" + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = strtof((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = strtod((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = strtold((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = smiMalloc(strlen((yyvsp[(1) - (1)].text))+1); + strcpy((yyval.valuePtr)->value.ptr,(yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 253: +#line 2884 "parser-sming.y" + { + + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 254: +#line 2925 "parser-sming.y" + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = strtof((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = strtod((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = strtold((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 255: +#line 2966 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 256: +#line 2979 "parser-sming.y" + { + /* Note: might be an Enumeration item or OID */ + /* TODO: convert if it's an oid? */ + switch (defaultBasetype) { + case SMI_BASETYPE_ENUM: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_ENUM; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX convert to int */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX convert to oid if found */ + break; + case SMI_BASETYPE_POINTER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX check if valid reference found */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 257: +#line 3012 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_OBJECTIDENTIFIER){ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + } + else + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + ;} + break; + + case 258: +#line 3026 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + ;} + break; + + case 259: +#line 3035 "parser-sming.y" + { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (1)].text))+1); + strcpy((yyval.text),(yyvsp[(1) - (1)].text)); + ;} + break; + + case 260: +#line 3042 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_CURRENT; + ;} + break; + + case 261: +#line 3046 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_DEPRECATED; + ;} + break; + + case 262: +#line 3050 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_OBSOLETE; + ;} + break; + + case 263: +#line 3056 "parser-sming.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 16); + ;} + break; + + case 264: +#line 3062 "parser-sming.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 10); + ;} + break; + + case 265: +#line 3070 "parser-sming.y" + { + if(bitsFlag){ + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_NEGATIVE); + (yyval.valuePtr) = NULL; + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = - strtoll((yyvsp[(2) - (2)].text), NULL, 10); + ;} + break; + + case 266: +#line 3083 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 267: +#line 3087 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 268: +#line 3097 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 269: +#line 3104 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 270: +#line 3110 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 271: +#line 3116 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 5383 "parser-sming.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 3121 "parser-sming.y" + + +#endif + + diff --git a/lib/parser-sming.h b/lib/parser-sming.h new file mode 100644 index 0000000..ed78780 --- /dev/null +++ b/lib/parser-sming.h @@ -0,0 +1,32 @@ +/* + * parser-sming.h -- + * + * Definition for the SMIv1/v2 parser. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-sming.h 1061 2000-12-11 09:11:00Z strauss $ + */ + +#ifndef _PARSER_SMING_H +#define _PARSER_SMING_H + +#include + +#include "data.h" + + + +#define YYERROR_VERBOSE + + + +extern int smingparse(); + + + +#endif /* _PARSER_SMING_H */ + diff --git a/lib/parser-sming.tab.h b/lib/parser-sming.tab.h new file mode 100644 index 0000000..dab3fec --- /dev/null +++ b/lib/parser-sming.tab.h @@ -0,0 +1,224 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT = 258, + DOT_DOT = 259, + COLON_COLON = 260, + ucIdentifier = 261, + lcIdentifier = 262, + floatValue = 263, + textSegment = 264, + decimalNumber = 265, + hexadecimalNumber = 266, + OID = 267, + moduleKeyword = 268, + importKeyword = 269, + revisionKeyword = 270, + identityKeyword = 271, + oidKeyword = 272, + dateKeyword = 273, + organizationKeyword = 274, + contactKeyword = 275, + descriptionKeyword = 276, + referenceKeyword = 277, + extensionKeyword = 278, + typedefKeyword = 279, + typeKeyword = 280, + formatKeyword = 281, + unitsKeyword = 282, + statusKeyword = 283, + accessKeyword = 284, + defaultKeyword = 285, + impliedKeyword = 286, + indexKeyword = 287, + augmentsKeyword = 288, + reordersKeyword = 289, + sparseKeyword = 290, + expandsKeyword = 291, + createKeyword = 292, + membersKeyword = 293, + objectsKeyword = 294, + mandatoryKeyword = 295, + optionalKeyword = 296, + refineKeyword = 297, + abnfKeyword = 298, + OctetStringKeyword = 299, + ObjectIdentifierKeyword = 300, + Integer32Keyword = 301, + Unsigned32Keyword = 302, + Integer64Keyword = 303, + Unsigned64Keyword = 304, + Float32Keyword = 305, + Float64Keyword = 306, + Float128Keyword = 307, + BitsKeyword = 308, + EnumerationKeyword = 309, + currentKeyword = 310, + deprecatedKeyword = 311, + obsoleteKeyword = 312, + readonlyKeyword = 313, + readwriteKeyword = 314, + parentKeyword = 315, + classKeyword = 316, + extendsKeyword = 317, + attributeKeyword = 318, + uniqueKeyword = 319, + eventKeyword = 320, + PointerKeyword = 321, + eventonlyKeyword = 322, + neginfKeyword = 323, + posinfKeyword = 324, + snanKeyword = 325, + qnanKeyword = 326 + }; +#endif +/* Tokens. */ +#define DOT 258 +#define DOT_DOT 259 +#define COLON_COLON 260 +#define ucIdentifier 261 +#define lcIdentifier 262 +#define floatValue 263 +#define textSegment 264 +#define decimalNumber 265 +#define hexadecimalNumber 266 +#define OID 267 +#define moduleKeyword 268 +#define importKeyword 269 +#define revisionKeyword 270 +#define identityKeyword 271 +#define oidKeyword 272 +#define dateKeyword 273 +#define organizationKeyword 274 +#define contactKeyword 275 +#define descriptionKeyword 276 +#define referenceKeyword 277 +#define extensionKeyword 278 +#define typedefKeyword 279 +#define typeKeyword 280 +#define formatKeyword 281 +#define unitsKeyword 282 +#define statusKeyword 283 +#define accessKeyword 284 +#define defaultKeyword 285 +#define impliedKeyword 286 +#define indexKeyword 287 +#define augmentsKeyword 288 +#define reordersKeyword 289 +#define sparseKeyword 290 +#define expandsKeyword 291 +#define createKeyword 292 +#define membersKeyword 293 +#define objectsKeyword 294 +#define mandatoryKeyword 295 +#define optionalKeyword 296 +#define refineKeyword 297 +#define abnfKeyword 298 +#define OctetStringKeyword 299 +#define ObjectIdentifierKeyword 300 +#define Integer32Keyword 301 +#define Unsigned32Keyword 302 +#define Integer64Keyword 303 +#define Unsigned64Keyword 304 +#define Float32Keyword 305 +#define Float64Keyword 306 +#define Float128Keyword 307 +#define BitsKeyword 308 +#define EnumerationKeyword 309 +#define currentKeyword 310 +#define deprecatedKeyword 311 +#define obsoleteKeyword 312 +#define readonlyKeyword 313 +#define readwriteKeyword 314 +#define parentKeyword 315 +#define classKeyword 316 +#define extendsKeyword 317 +#define attributeKeyword 318 +#define uniqueKeyword 319 +#define eventKeyword 320 +#define PointerKeyword 321 +#define eventonlyKeyword 322 +#define neginfKeyword 323 +#define posinfKeyword 324 +#define snanKeyword 325 +#define qnanKeyword 326 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 360 "parser-sming.y" +{ + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} +/* Line 1489 of yacc.c. */ +#line 217 "parser-sming.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/lib/parser-sming.y b/lib/parser-sming.y new file mode 100644 index 0000000..555e570 --- /dev/null +++ b/lib/parser-sming.y @@ -0,0 +1,3124 @@ +/* + * parser-sming.y -- + * + * Syntax rules for parsing the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-sming.y 7966 2008-03-27 21:25:52Z schoenw $ + */ + +%{ + +#include + +#ifdef BACKEND_SMING + +#define _ISOC99_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "parser-sming.h" +#include "scanner-sming.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp ist not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static char *typeIdentifier, *macroIdentifier, *identityIdentifier, + *classIdentifier, *attributeIdentifier; +static char *importModulename = NULL; +static Type *typePtr = NULL; +static Macro *macroPtr = NULL; +static Identity *identityPtr = NULL; +static Class *classPtr = NULL; +static Attribute *attributePtr = NULL; +static Event *eventPtr = NULL; +static SmiBasetype defaultBasetype = SMI_BASETYPE_UNKNOWN; +static NamedNumber *namedNumberPtr = NULL; +static int bitsFlag = 0; /* used to differentiate bits definition from enum*/ +static int attributeFlag = 0; /* + *Used to differentiate between attribute and + *and typedef to tie the type statement + *respectively to class or module. + */ + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + +static Type * +findType(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + Import *importPtr; + char *module, *type; + + type = strstr(spec, "::"); + if (!type) { + typePtr = findTypeByModuleAndName(modulePtr, spec); + if (!typePtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + typePtr = findTypeByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + type = &type[2]; + typePtr = findTypeByModulenameAndName(module, type); + } + return typePtr; +} + + +static Identity * +findIdentity(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Identity *identityPtr; + Import *importPtr; + char *module, *identity; + + identity = strstr(spec, "::"); + if (!identity) { + identityPtr = findIdentityByModuleAndName(modulePtr, spec); + if (!identityPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + identityPtr = findIdentityByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + identity = &identity[2]; + identityPtr = findIdentityByModulenameAndName(module, identity); + } + return identityPtr; +} + +static Class * +findClass(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Class *classPtr; + Import *importPtr; + char *module, *class; + + class = strstr(spec, "::"); + if (!class) { + classPtr = findClassByModuleAndName(modulePtr, spec); + if (!classPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + classPtr = findClassByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + class = &class[2]; + classPtr = findClassByModulenameAndName(module, class); + } + return classPtr; +} + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for(typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Complain about empty description clauses. + */ + + if (! parserPtr->flags & SMI_FLAG_NODESCR + && (! typePtr->export.description + || ! typePtr->export.description[0])) { + smiPrintErrorAtLine(parserPtr, ERR_EMPTY_DESCRIPTION, + typePtr->line, typePtr->export.name); + } + + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 10 || len == 16) { + for (i = 0; i < len; i++) { + if (((i < 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 11 + || i == 12 || i == 14 || i == 15) && ! isdigit((int)date[i])) + || ((i == 4 || i == 7) && date[i] != '-') + || (i == 10 && date[i] != ' ') + || (i == 13 && date[i] != ':')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; i < 4; i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + p++; + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + if (len == 16) { + p++; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + } + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +static char *hexToStr(char *hexStr, int len) +{ + union{ + char ch; + long l; + } hex2char; + + char* res =(char*)malloc(sizeof(char)*len/2+1); + char* tmp =(char*)malloc(sizeof(char)*3); + int i,j = 0; + + tmp[2]=0; + for(i=2; i+1basetype != SMI_BASETYPE_BITS) + return; + + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = (int)(((NamedNumber *)(pp->ptr))->export.value.value.unsigned64); + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } +} + + +%} + +/* + * The grammars start symbol. + */ +%start smingFile + + + +/* + * We call the parser from within the parser when IMPORTing modules, + * hence we need reentrant parser code. This is a bison feature. + */ +%pure_parser + + + +/* + * The attributes. + */ +%union { + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} + + + +/* + * Tokens and their attributes. + */ +%token DOT +%token DOT_DOT +%token COLON_COLON + +%token ucIdentifier +%token lcIdentifier + +%token floatValue +%token textSegment +%token decimalNumber +%token hexadecimalNumber +%token OID + +%token moduleKeyword +%token importKeyword +%token revisionKeyword +%token identityKeyword +%token oidKeyword +%token dateKeyword +%token organizationKeyword +%token contactKeyword +%token descriptionKeyword +%token referenceKeyword +%token extensionKeyword +%token typedefKeyword +%token typeKeyword +%token formatKeyword +%token unitsKeyword +%token statusKeyword +%token accessKeyword +%token defaultKeyword +%token impliedKeyword +%token indexKeyword +%token augmentsKeyword +%token reordersKeyword +%token sparseKeyword +%token expandsKeyword +%token createKeyword +%token membersKeyword +%token objectsKeyword +%token mandatoryKeyword +%token optionalKeyword +%token refineKeyword +%token abnfKeyword +%token OctetStringKeyword +%token ObjectIdentifierKeyword +%token Integer32Keyword +%token Unsigned32Keyword +%token Integer64Keyword +%token Unsigned64Keyword +%token Float32Keyword +%token Float64Keyword +%token Float128Keyword +%token BitsKeyword +%token EnumerationKeyword +%token currentKeyword +%token deprecatedKeyword +%token obsoleteKeyword +%token readonlyKeyword +%token readwriteKeyword + +%token parentKeyword +%token classKeyword +%token extendsKeyword +%token attributeKeyword +%token uniqueKeyword +%token eventKeyword +%token PointerKeyword +%token eventonlyKeyword +%token neginfKeyword +%token posinfKeyword +%token snanKeyword +%token qnanKeyword + + +/* + * Types of non-terminal symbols. + */ + +%type smingFile +%type moduleStatement_optsep_0n +%type moduleStatement_optsep_1n +%type moduleStatement_optsep +%type moduleStatement +%type extensionStatement_stmtsep_0n +%type extensionStatement_stmtsep_1n +%type extensionStatement_stmtsep +%type extensionStatement +%type identityStatement_stmtsep_0n +%type identityStatement_stmtsep_1n +%type identityStatement_stmtsep +%type identityStatement +%type parentStatement_stmtsep_01 +%type parentStatement +%type typedefStatement_stmtsep_0n +%type typedefStatement_stmtsep_1n +%type typedefStatement_stmtsep +%type typedefStatement +%type attributeStatement_stmtsep_0n +%type attributeStatement_stmtsep_1n +%type attributeStatement_stmtsep +%type attributeStatement +%type eventStatement_stmtsep_0n +%type eventStatement_stmtsep_1n +%type eventStatement_stmtsep +%type eventStatement +%type classStatement_stmtsep_0n +%type classStatement_stmtsep_1n +%type classStatement_stmtsep +%type classStatement +%type extendsStatement_stmtsep_01 +%type extendsStatement +%type importStatement_stmtsep_0n +%type importStatement_stmtsep_1n +%type importStatement_stmtsep +%type importStatement +%type revisionStatement_stmtsep_0n +%type revisionStatement_stmtsep_1n +%type revisionStatement_stmtsep +%type revisionStatement +%type typedefTypeStatement +%type attributeTypeStatement +%type dateStatement +%type organizationStatement +%type contactStatement +%type formatStatement_stmtsep_01 +%type formatStatement +%type unitsStatement_stmtsep_01 +%type unitsStatement +%type statusStatement_stmtsep_01 +%type statusStatement +%type defaultStatement_stmtsep_01 +%type defaultStatement +%type accessStatement_stmtsep_01 +%type accessStatement +%type access +%type descriptionStatement_stmtsep_01 +%type descriptionStatement +%type referenceStatement_stmtsep_01 +%type referenceStatement +%type abnfStatement_stmtsep_01 +%type abnfStatement +%type refinedBaseType_refinedType +%type refinedBaseType +%type refinedType +%type attribute_refinedBaseType_refinedType +%type attribute_refinedBaseType +%type attribute_refinedType +%type optsep_anySpec_01 +%type anySpec +%type optsep_numberSpec_01 +%type numberSpec +%type furtherNumberElement_0n +%type furtherNumberElement_1n +%type furtherNumberElement +%type numberElement +%type numberUpperLimit_01 +%type numberUpperLimit +%type optsep_floatSpec_01 +%type floatSpec +%type furtherFloatElement_0n +%type furtherFloatElement_1n +%type furtherFloatElement +%type floatElement +%type floatUpperLimit_01 +%type floatUpperLimit +%type specialFloatValue +%type optsep_pointerRestr_01 +%type pointerRestr +%type bitsOrEnumerationSpec +%type bitsOrEnumerationList +%type furtherBitsOrEnumerationItem_0n +%type furtherBitsOrEnumerationItem_1n +%type furtherBitsOrEnumerationItem +%type bitsOrEnumerationItem +%type identifierList +%type furtherIdentifier_0n +%type furtherIdentifier_1n +%type furtherIdentifier +%type uniqueStatement_stmtsep_01 +%type uniqueStatement +%type uniqueSpec +%type bitsValue +%type bitsList +%type furtherLcIdentifier_0n +%type furtherLcIdentifier_1n +%type furtherLcIdentifier +%type identifier +%type qucIdentifier +%type qlcIdentifier +%type text +%type optsep_textSegment_0n +%type optsep_textSegment_1n +%type optsep_textSegment +%type date +%type format +%type units +%type anyValue +%type status +%type number +%type negativeNumber +%type signedNumber +%type optsep_comma_01 +%type sep +%type optsep +%type stmtsep +%type qOID + +%% + +/* + * Yacc rules. + * + */ + + +/* + * One mibFile may contain multiple MIB modules. + * It's also possible that there's no module in a file. + */ +smingFile: optsep moduleStatement_optsep_0n + { + /* + * Return the number of successfully + * parsed modules. + */ + $$ = $2; + } + ; + +moduleStatement_optsep_0n: /* empty */ + { + $$ = 0; + } + | moduleStatement_optsep_1n + { + $$ = $1; + } + ; + +moduleStatement_optsep_1n: moduleStatement_optsep + { + $$ = $1; + } + | moduleStatement_optsep_1n moduleStatement_optsep + { + /* + * Sum up the number of successfully parsed + * modules or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +moduleStatement_optsep: moduleStatement optsep + { + /* + * If we got a (Module *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1 != NULL) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +moduleStatement: moduleKeyword sep ucIdentifier + { + thisParserPtr->modulePtr = findModuleByName($3); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule($3, + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + $3); + free($3); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + thisModulePtr->export.language = SMI_LANGUAGE_SMING; + thisParserPtr->modulePtr->numImportedIdentifiers + = 0; + thisParserPtr->modulePtr->numStatements = 0; + thisParserPtr->modulePtr->numModuleIdentities = 0; + thisParserPtr->firstIndexlabelPtr = NULL; + thisParserPtr->identityObjectName = NULL; + } + optsep '{' stmtsep + importStatement_stmtsep_0n + organizationStatement stmtsep + { + if ($9) { + setModuleOrganization(thisParserPtr->modulePtr, + $9); + } + } + contactStatement stmtsep + { + if ($12) { + setModuleContactInfo(thisParserPtr->modulePtr, + $12); + } + } + descriptionStatement stmtsep + { + if ($15) { + setModuleDescription(thisParserPtr->modulePtr, + $15, thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if ($18) { + setModuleReference(thisParserPtr->modulePtr, + $18, thisParserPtr); + } + } + revisionStatement_stmtsep_0n + extensionStatement_stmtsep_0n + identityStatement_stmtsep_0n + typedefStatement_stmtsep_0n + classStatement_stmtsep_0n + '}' optsep ';' + { + checkTypes(thisParserPtr, thisModulePtr); + + $$ = thisModulePtr; + } + ; + +extensionStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | extensionStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed extension statements. + */ + $$ = $1; + } + ; + +extensionStatement_stmtsep_1n: extensionStatement_stmtsep + { + $$ = $1; + } + | extensionStatement_stmtsep_1n + extensionStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * extensions or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +extensionStatement_stmtsep: extensionStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +extensionStatement: extensionKeyword sep lcIdentifier + { + macroIdentifier = $3; + macroPtr = addMacro(macroIdentifier, + 0, + thisParserPtr); + setMacroDecl(macroPtr, SMI_DECL_EXTENSION); + } + optsep '{' stmtsep + statusStatement_stmtsep_01 + { + if (macroPtr && $8) { + setMacroStatus(macroPtr, $8); + } + } + descriptionStatement_stmtsep_01 + { + if (macroPtr && $10) { + setMacroDescription(macroPtr, $10, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (macroPtr && $12) { + setMacroReference(macroPtr, $12, + thisParserPtr); + } + } + abnfStatement_stmtsep_01 + { + if (macroPtr && $14) { + setMacroAbnf(macroPtr, $14, + thisParserPtr); + } + } + '}' optsep ';' + { + $$ = 0; + macroPtr = NULL; + } + ; + +typedefStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | typedefStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +typedefStatement_stmtsep_1n: typedefStatement_stmtsep + { + $$ = $1; + } + | typedefStatement_stmtsep_1n + typedefStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * typedefs or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +typedefStatement_stmtsep: typedefStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +typedefStatement: typedefKeyword sep ucIdentifier + { + typeIdentifier = $3; + /* + *check for duplicate names in the module + */ + if(typePtr = + findType(typeIdentifier, thisParserPtr,thisModulePtr)) + if( typePtr->modulePtr == thisParserPtr->modulePtr) + smiPrintError(thisParserPtr, + ERR_DUPLICATE_TYPE_NAME, + typeIdentifier); + } + optsep '{' stmtsep + typedefTypeStatement stmtsep + { + if ($8) { + if ($8->export.name) { + /* + * If the exact type has been found + * and no new Type structure has been + * created, we have to create a + * duplicate now. + */ + typePtr = duplicateType($8, 0, + thisParserPtr); + } else { + typePtr = $8; + } + typePtr = setTypeName(typePtr, typeIdentifier); + setTypeDecl(typePtr, SMI_DECL_TYPEDEF); + } + defaultBasetype = typePtr->export.basetype; + } + defaultStatement_stmtsep_01 + { + if (typePtr && $11) { + if(typePtr->export.basetype == + SMI_BASETYPE_ENUM) + //check ENUM value for correctness + { + if($11->len) + if(namedNumberPtr = findNamedNumberByName(typePtr, + $11->value.ptr)){ + smiFree($11); + $11 = &namedNumberPtr->export.value; + } + else{ smiPrintError(thisParserPtr, + ERR_ENUM_NAME_NOT_DEFINED, + $11->value.ptr); + } + } + //NOTE that the bits default value is set in the anyval + //rule + setTypeValue(typePtr, $11); + } + } + formatStatement_stmtsep_01 + { + if (typePtr && $13 + && smiCheckFormat(thisParserPtr, + typePtr->export.basetype, + $13, 0)) { + setTypeFormat(typePtr, $13); + } + } + unitsStatement_stmtsep_01 + { + if (typePtr && $15) { + setTypeUnits(typePtr, $15); + } + } + statusStatement_stmtsep_01 + { + if (typePtr && $17) { + setTypeStatus(typePtr, $17); + } + } + descriptionStatement_stmtsep_01 + { + if (typePtr && $19) { + setTypeDescription(typePtr, $19, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (typePtr && $21) { + setTypeReference(typePtr, $21, thisParserPtr); + } + } + '}' optsep ';' + { + smiCheckNamedNumberSubtyping(thisParserPtr , typePtr); + smiCheckNamedNumbersOrder(thisParserPtr , typePtr); + smiCheckNamedNumberRedefinition(thisParserPtr , typePtr); + $$ = 0; + typePtr = NULL; + free(typeIdentifier); + defaultBasetype = SMI_BASETYPE_UNKNOWN; + } + ; + +classStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | classStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +classStatement_stmtsep_1n: classStatement_stmtsep + { + $$ = $1; + } + | classStatement_stmtsep_1n + classStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * classes or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +classStatement_stmtsep: classStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +classStatement: classKeyword sep ucIdentifier + { + classIdentifier = $3; + if(findClassByModuleAndName(thisModulePtr, classIdentifier)) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_CLASS_NAME, + attributeIdentifier); + } + else{ + classPtr = addClass(classIdentifier, + thisParserPtr); + setClassDecl(classPtr, SMI_DECL_CLASS); + } + } + optsep '{' stmtsep + extendsStatement_stmtsep_01 + { + if(classPtr && $8) + classPtr->parentPtr = $8; + } + attributeStatement_stmtsep_0n + uniqueStatement_stmtsep_01 + { + List *tmpList; + Attribute *tmpAttribute; + if(classPtr && $11) + { + + //Check for "magic" value #@# that defines + //scalar class. See NOTE after Class definitino in data.h + if(!strcmp((char*)($11->ptr),"#@#")) + { + classPtr->uniqueList = (List*)malloc(sizeof(List)); + classPtr->uniqueList->ptr = classPtr; + classPtr->uniqueList->nextPtr = NULL; + smiFree($11); + } + else + { + tmpList = $11; + //convert all attribute names to atributes + for(tmpList; tmpList; tmpList=tmpList->nextPtr) + { + if(tmpAttribute = + (Attribute*)smiGetAttribute(&(classPtr->export),(char*)(tmpList->ptr))) + { + smiFree(tmpList->ptr); + tmpList->ptr = tmpAttribute; + } + else + { + smiFree(tmpList->ptr); + tmpList->ptr = NULL; + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_NOT_FOUND, + attributeIdentifier); + } + } + + classPtr->uniqueList = $11; + } + } + } + eventStatement_stmtsep_0n + statusStatement_stmtsep_01 + { + if (classPtr && $14) { + setClassStatus(classPtr, $14); + } + } + descriptionStatement_stmtsep_01 + { + if (classPtr && $16) { + setClassDescription(classPtr, $16, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (classPtr && $18) { + setClassReference(classPtr, $18, + thisParserPtr); + } + } + '}' optsep ';' + { + $$ = 0; + classPtr = NULL; + } + ; + +attributeStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | attributeStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +attributeStatement_stmtsep_1n: attributeStatement_stmtsep + { + $$ = $1; + } + | attributeStatement_stmtsep_1n + attributeStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * attributes or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +attributeStatement_stmtsep: attributeStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +attributeStatement: attributeKeyword sep lcIdentifier + { + attributeIdentifier = $3; + attributePtr = (Attribute*)smiGetAttribute(&(classPtr->export), + attributeIdentifier); + if(attributePtr) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_ATTRIBUTE_NAME, + attributeIdentifier); + attributePtr = NULL; + } + } + optsep '{' stmtsep + attributeTypeStatement + { + if ($8) { + attributePtr = $8; + setAttributeName(attributePtr, + attributeIdentifier); + setAttributeDecl(attributePtr, + SMI_DECL_ATTRIBUTE); + defaultBasetype = attributePtr->export.basetype; + } + } + accessStatement_stmtsep_01 + { + if($10 && attributePtr){ + /* check whether there's access for class reference, + which is not allowed */ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_ACCESS, + attributeIdentifier); + else { + setAttributeAccess(attributePtr,$10); + } + } + else if(attributePtr && attributePtr->parentTypePtr) + { + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_MISSING_ACCESS, + attributeIdentifier); + } + } + defaultStatement_stmtsep_01 + { + if($12 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_DEFAULT, + attributeIdentifier); + else{ + attributePtr->export.value = *$12; + } + } + else if(attributePtr) + { + attributePtr->export.value.basetype = + SMI_BASETYPE_UNKNOWN; + } + } + formatStatement_stmtsep_01 + { + if($14 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_FORMAT, + attributeIdentifier); + else{ + if (smiCheckFormat(thisParserPtr, + attributePtr->export.basetype,$14, 0)) + { + attributePtr->export.format = $14; + } + } + } + } + unitsStatement_stmtsep_01 + { + if($16 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_UNITS, + attributeIdentifier); + else{ + attributePtr->export.units = $16; + } + } + } + statusStatement_stmtsep_01 + { + if (attributePtr && $18) + attributePtr->export.status = $18; + } + descriptionStatement_stmtsep_01 + { + if (attributePtr && $20) + attributePtr->export.description = $20; + } + referenceStatement_stmtsep_01 + { + if (attributePtr && $22) + attributePtr->export.reference = $22; + } + '}' optsep ';' + { + $$ = attributePtr; + attributePtr = NULL; + defaultBasetype = SMI_BASETYPE_UNKNOWN; + } + ; + +eventStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | eventStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed event statements. + */ + $$ = $1; + } + ; + +eventStatement_stmtsep_1n: eventStatement_stmtsep + { + $$ = $1; + } + | eventStatement_stmtsep_1n + eventStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * events or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +eventStatement_stmtsep: eventStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +eventStatement: eventKeyword sep lcIdentifier + { + //TODO check for repeated names + eventPtr=addEvent($3,classPtr,thisParserPtr); + } + optsep '{' stmtsep + statusStatement_stmtsep_01 + { + if($8 && eventPtr) + eventPtr->export.status = $8; + } + descriptionStatement_stmtsep_01 + { + if($10 && eventPtr) + eventPtr->export.description = $10; + } + referenceStatement_stmtsep_01 + { + if($12 && eventPtr) + eventPtr->export.reference = $12; + } + '}' optsep ';' + { + $$ = eventPtr; + eventPtr = NULL; + } + ; + +importStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | importStatement_stmtsep_1n + { + $$ = $1; + } + ; + +importStatement_stmtsep_1n: importStatement_stmtsep + { + $$ = $1; + } + | importStatement_stmtsep_1n importStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * imports or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +importStatement_stmtsep: importStatement stmtsep + { + /* + * If we got an (Object *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +importStatement: importKeyword sep ucIdentifier + { + importModulename = smiStrdup($3); + } + optsep '(' optsep + identifierList + { + List *listPtr, *nextPtr; + + for (listPtr = $8; listPtr; listPtr = nextPtr) { + addImport(listPtr->ptr, thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers++; + nextPtr = listPtr->nextPtr; + free(listPtr); + } + } + optsep ')' optsep ';' + { + Module *modulePtr; + char *s = importModulename; + + modulePtr = findModuleByName(s); + if (!modulePtr) { + modulePtr = loadModule(s, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + free(s); + $$ = NULL; + } + ; + +revisionStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | revisionStatement_stmtsep_1n + { + $$ = $1; + } + ; + +revisionStatement_stmtsep_1n: revisionStatement_stmtsep + { + $$ = $1; + } + | revisionStatement_stmtsep_1n revisionStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * revisions or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +revisionStatement_stmtsep: revisionStatement stmtsep + { + /* + * If we got a (Revision *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +revisionStatement: revisionKeyword optsep '{' stmtsep + dateStatement stmtsep + descriptionStatement stmtsep + '}' optsep ';' + { + $$ = addRevision($5, $7, thisParserPtr); + } + ; + +identityStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | identityStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed identity statements. + */ + $$ = $1; + } + ; + +identityStatement_stmtsep_1n: identityStatement_stmtsep + { + $$ = $1; + } + | identityStatement_stmtsep_1n + identityStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * identities or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +identityStatement_stmtsep: identityStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +identityStatement: identityKeyword sep lcIdentifier + { + identityIdentifier = $3; + identityPtr = addIdentity(identityIdentifier, + thisParserPtr); + setIdentityDecl(identityPtr, SMI_DECL_IDENTITY); + } + optsep '{' stmtsep + parentStatement_stmtsep_01 + { + if(identityPtr && $8) { + setIdentityParent(identityPtr,$8); + } + } + statusStatement_stmtsep_01 + { + if (identityPtr && $10) { + setIdentityStatus(identityPtr, $10); + } + } + descriptionStatement_stmtsep_01 + { + if (identityPtr && $12) { + setIdentityDescription(identityPtr, $12, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + setIdentityReference(identityPtr, $14, + thisParserPtr) + } + '}' optsep ';' + { + $$ = 0; + identityPtr = NULL; + } + ; + +typedefTypeStatement: typeKeyword sep refinedBaseType_refinedType optsep ';' + { + $$ = $3; + } + ; + +attributeTypeStatement: typeKeyword sep attribute_refinedBaseType_refinedType optsep ';' + { + $$ = $3; + } + ; + +dateStatement: dateKeyword sep date optsep ';' + { + $$ = $3; + } + ; + +organizationStatement: organizationKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +contactStatement: contactKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +formatStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | formatStatement stmtsep + { + $$ = $1; + } + ; + +formatStatement: formatKeyword sep format optsep ';' + { + $$ = $3; + } + ; + +unitsStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | unitsStatement stmtsep + { + $$ = $1; + } + ; + +unitsStatement: unitsKeyword sep units optsep ';' + { + $$ = $3; + } + ; + +statusStatement_stmtsep_01: /* empty */ + { + $$ = SMI_STATUS_CURRENT; + } + | statusStatement stmtsep + { + $$ = $1; + } + ; + +statusStatement: statusKeyword sep status optsep ';' + { + $$ = $3; + } + ; + +uniqueStatement_stmtsep_01: + { + $$ = NULL; + } + | uniqueStatement stmtsep + { + $$ = $1; + } + ; + +uniqueStatement: uniqueKeyword sep '(' uniqueSpec ')' optsep ';' + { + $$ = $4; + } + ; + +uniqueSpec: optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = "#@#"; //used to indicate that unique + //statement is present and empty + //i.e. the class is scalar + $$->nextPtr = NULL; + } + | lcIdentifier furtherLcIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + + + + +extendsStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | extendsStatement stmtsep + { + $$ = $1; + } + ; + +extendsStatement: extendsKeyword sep ucIdentifier optsep ';' + { + $$ = findClass($3, thisParserPtr,thisModulePtr); + if(!$$)smiPrintError(thisParserPtr, + ERR_UNKNOWN_CLASS, + $3); + + } + ; + +defaultStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | defaultStatement stmtsep + { + $$ = $1; + } + ; + +defaultStatement: defaultKeyword sep anyValue optsep ';' + { + $$ = $3; + } + ; + +accessStatement_stmtsep_01: /* empty */ + { + $$ = SMI_ACCESS_UNKNOWN; + } + | accessStatement stmtsep + { + $$ = $1; + } + ; + +accessStatement: accessKeyword sep access optsep ';' + { + $$ = $3; + } + ; + +access: readonlyKeyword + { + $$ = SMI_ACCESS_READ_ONLY; + } + | readwriteKeyword + { + $$ = SMI_ACCESS_READ_WRITE; + } + | eventonlyKeyword + { + $$ = SMI_ACCESS_EVENT_ONLY; + } + ; + +parentStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | parentStatement stmtsep + { + $$ = $1; + } + ; + +parentStatement: parentKeyword sep lcIdentifier optsep ';' + { + $$ = findIdentity($3, thisParserPtr, thisModulePtr); + if(!$$)smiPrintError(thisParserPtr, + ERR_IDENTITY_PARENT_NOT_FOUND, + $3); + } + ; + +descriptionStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | descriptionStatement stmtsep + { + $$ = $1; + } + ; + +descriptionStatement: descriptionKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +referenceStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | referenceStatement stmtsep + { + $$ = $1; + } + ; + +referenceStatement: referenceKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +abnfStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | abnfStatement stmtsep + { + $$ = $1; + } + ; + +abnfStatement: abnfKeyword sep text optsep ';' + { + $$ = $3; + } + ; + + + +refinedBaseType_refinedType: refinedBaseType + { + $$ = $1; + } + | refinedType + { + $$ = $1; + } + ; + +attribute_refinedBaseType_refinedType: attribute_refinedBaseType + { + $$ = $1; + } + | attribute_refinedType + { + $$ = $1; + } + ; + + +refinedBaseType: OctetStringKeyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeOctetStringPtr; + } else { + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeOctetStringPtr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | ObjectIdentifierKeyword + { + $$ = smiHandle->typeObjectIdentifierPtr; + } + | Integer32Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeInteger32Ptr; + } else { + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeInteger32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Unsigned32Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeUnsigned32Ptr; + } else { + $$ = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeUnsigned32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Integer64Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeInteger64Ptr; + } else { + $$ = duplicateType(smiHandle->typeInteger64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeInteger64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Unsigned64Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeUnsigned64Ptr; + } else { + $$ = duplicateType(smiHandle->typeUnsigned64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeUnsigned64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float32Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat32Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float64Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat64Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float128Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat128Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat128Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat128Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | PointerKeyword optsep_pointerRestr_01 + { + if (!$2) { + $$ = smiHandle->typePointerPtr; + } else { + $$ = duplicateType(smiHandle->typePointerPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typePointerPtr); + setTypeList($$, $2); + } + } + | EnumerationKeyword bitsOrEnumerationSpec + { + List *p; + + if (!$2) { + $$ = smiHandle->typeEnumPtr; + } else { + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeEnumPtr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + } + } + | BitsKeyword + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + } + bitsOrEnumerationSpec + { + List *p; + + if (!$3) { + $$ = smiHandle->typeBitsPtr; + } else { + $$ = duplicateType(smiHandle->typeBitsPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeBitsPtr); + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + } + + bitsFlag = 0;//reset flag + } + ; + + +attribute_refinedBaseType: OctetStringKeyword optsep_numberSpec_01 + { + List *p; + $$ = duplicateTypeToAttribute(smiHandle->typeOctetStringPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeOctetStringPtr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | ObjectIdentifierKeyword + { + $$ = duplicateTypeToAttribute( + smiHandle->typeObjectIdentifierPtr, classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeObjectIdentifierPtr); + } + | Integer32Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeInteger32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeInteger32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Unsigned32Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeUnsigned32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeUnsigned32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Integer64Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeInteger64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeInteger64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Unsigned64Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeUnsigned64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeUnsigned64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float32Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float64Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float128Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat128Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat128Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | PointerKeyword optsep_pointerRestr_01 + { + $$ = duplicateTypeToAttribute(smiHandle->typePointerPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typePointerPtr); + if ($2) { + setAttributeList($$, $2); + } + } + | EnumerationKeyword bitsOrEnumerationSpec + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeEnumPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeEnumPtr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (Type*)$$; + } + } + | BitsKeyword + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + } + bitsOrEnumerationSpec + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeBitsPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeBitsPtr); + if ($1) { + setAttributeList($$, $1); + for (p = $1; p; p = p->nextPtr) + ((NamedNumber *)(p->ptr))->typePtr = (Type*)$$; + } + + bitsFlag = 0; /* reset flag */ + } + ; + +refinedType: qucIdentifier optsep_anySpec_01 + { + typePtr = findType($1, thisParserPtr, + thisModulePtr); + if (typePtr && $2) { + typePtr = duplicateType(typePtr, 0, + thisParserPtr); + setTypeList(typePtr, $2); + } + + $$ = typePtr; + } + ; + +attribute_refinedType: qucIdentifier optsep_anySpec_01 + { + Class *tmp; + typePtr = findType($1, thisParserPtr, + thisModulePtr); + if (typePtr && $2) { + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeList(attributePtr, $2); + setAttributeParentType(attributePtr, typePtr); + } else if( typePtr ){ + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeParentType(attributePtr, typePtr); + } else if($2){ + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, $1); + attributePtr = NULL; + } else if (tmp = findClass($1, + thisParserPtr,thisModulePtr)){ + attributePtr = addAttribute($1, classPtr, thisParserPtr); + setAttributeParentClass(attributePtr, tmp); + } else { + attributePtr = NULL; + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE_OR_CLASS, $1); + } + + + $$ = attributePtr; + } + ; + +optsep_anySpec_01: /* empty */ + { + $$ = NULL; + } + | optsep anySpec + { + $$ = $2; + } + ; + +anySpec: numberSpec + { + $$ = $1; + } + | floatSpec + { + $$ = $1; + } + ; + +optsep_numberSpec_01: /* empty */ + { + $$ = NULL; + } + | optsep numberSpec + { + $$ = $2; + } + ; + +numberSpec: '(' optsep numberElement furtherNumberElement_0n + optsep ')' + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $3; + $$->nextPtr = $4; + } + ; + +furtherNumberElement_0n: /* empty */ + { + $$ = NULL; + } + | furtherNumberElement_1n + { + $$ = $1; + } + ; + +furtherNumberElement_1n: furtherNumberElement + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherNumberElement_1n furtherNumberElement + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherNumberElement: optsep '|' optsep numberElement + { + $$ = $4; + } + ; + +numberElement: signedNumber numberUpperLimit_01 + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + if ($2) { + $$->export.maxValue = *$2; + smiFree($2); + } else { + $$->export.maxValue = *$1; + } + smiFree($1); + } + ; + +numberUpperLimit_01: /* empty */ + { + $$ = NULL; + } + | numberUpperLimit + { + $$ = $1; + } + ; + +numberUpperLimit: optsep DOT_DOT optsep signedNumber + { + $$ = $4; + } + ; + +optsep_floatSpec_01: /* empty */ + { + $$ = NULL; + } + | optsep floatSpec + { + $$ = $2; + } + ; + +floatSpec: '(' optsep floatElement furtherFloatElement_0n + optsep ')' + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $3; + $$->nextPtr = $4; + } + ; + +furtherFloatElement_0n: /* empty */ + { + $$ = NULL; + } + | furtherFloatElement_1n + { + $$ = $1; + } + ; + +furtherFloatElement_1n: furtherFloatElement + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherFloatElement_1n furtherFloatElement + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherFloatElement: optsep '|' optsep floatElement + { + $$ = $4; + } + ; + +floatElement: floatValue floatUpperLimit_01 + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue.basetype = SMI_BASETYPE_FLOAT64; + $$->export.minValue.value.float64 = strtod($1, NULL); + if ($2) { + $$->export.maxValue.basetype = + SMI_BASETYPE_FLOAT64; + $$->export.maxValue.value.float64 = + strtod($2, NULL); + } else { + $$->export.maxValue = $$->export.minValue; + } + } + ; + +floatUpperLimit_01: /* empty */ + { + $$ = NULL; + } + | floatUpperLimit + { + $$ = $1; + } + ; + +floatUpperLimit: optsep DOT_DOT optsep floatValue + { + $$ = $4; + } + ; + +specialFloatValue: + neginfKeyword + { + $$="-inf"; + } + | posinfKeyword + { + $$="+inf"; + } + | qnanKeyword + { + $$="nan"; + } + | snanKeyword + { + $$="nan"; + } + ; + +optsep_pointerRestr_01: /* empty */ + { + $$ = NULL; + } + | optsep pointerRestr + { + NamedNumber *nn =(NamedNumber*)smiMalloc(sizeof(NamedNumber)); + $$ = smiMalloc(sizeof(List)); + $$->ptr = nn; + nn->export.name = $2; + } + ; + +pointerRestr: '(' optsep qlcIdentifier optsep ')' + { + $$ = $3; + } + ; + +bitsOrEnumerationSpec: '(' optsep bitsOrEnumerationList optsep ')' + { + $$ = $3; + } + ; + +bitsOrEnumerationList: bitsOrEnumerationItem furtherBitsOrEnumerationItem_0n + optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +furtherBitsOrEnumerationItem_0n: /* empty */ + { + $$ = NULL; + } + | furtherBitsOrEnumerationItem_1n + { + $$ = $1; + } + ; + +furtherBitsOrEnumerationItem_1n: furtherBitsOrEnumerationItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherBitsOrEnumerationItem_1n + furtherBitsOrEnumerationItem + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + + +furtherBitsOrEnumerationItem: optsep ',' optsep bitsOrEnumerationItem + { + $$ = $4; + } + ; + +bitsOrEnumerationItem: lcIdentifier optsep '(' optsep signedNumber optsep ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value = *$5; + } + ; + +identifierList: identifier furtherIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +furtherIdentifier_0n: /* empty */ + { + $$ = NULL; + } + | furtherIdentifier_1n + { + $$ = $1; + } + ; + +furtherIdentifier_1n: furtherIdentifier + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherIdentifier_1n furtherIdentifier + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherIdentifier: optsep ',' optsep identifier + { + $$ = $4; + } + ; + +bitsValue: '(' optsep bitsList optsep ')' + { + $$ = $3; + } + ; + +bitsList: optsep_comma_01 + { + $$ = NULL; + } + | lcIdentifier furtherLcIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +//NOTE used also for unique statement +furtherLcIdentifier_0n: /* empty */ + { + $$ = NULL; + } + | furtherLcIdentifier_1n + { + $$ = $1; + } + ; + +furtherLcIdentifier_1n: furtherLcIdentifier + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherLcIdentifier_1n furtherLcIdentifier + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherLcIdentifier: optsep ',' optsep lcIdentifier + { + $$ = $4; + } + ; + +identifier: ucIdentifier + { + $$ = $1; + } + | lcIdentifier + { + $$ = $1; + } + ; + +qucIdentifier: ucIdentifier COLON_COLON ucIdentifier + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + free($1); + free($3); + } + | ucIdentifier + { + $$ = $1; + } + ; + +qlcIdentifier: ucIdentifier COLON_COLON lcIdentifier + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + } + | lcIdentifier + { + $$ = $1; + } + ; + +text: textSegment optsep_textSegment_0n + { + int len; + if ($2) { + $$ = smiMalloc(strlen($1) + strlen($2) + 1); + strcpy($$, $1); + strcat($$, $2); + free($1); + free($2); + } else { + $$ = smiStrdup($1); + } + len = strlen($$); + while (len > 0 && $$[len-1] == '\n') { + $$[--len] = 0; + } + } + ; + +optsep_textSegment_0n: /* empty */ + { + $$ = NULL; + } + | optsep_textSegment_1n + { + $$ = $1; + } + ; + +optsep_textSegment_1n: optsep_textSegment + { + $$ = $1; + } + | optsep_textSegment_1n optsep_textSegment + { + $$ = smiMalloc(strlen($1) + strlen($2) + 1); + strcpy($$, $1); + strcat($$, $2); + free($1); + free($2); + } + ; + +optsep_textSegment: optsep textSegment + { + $$ = smiStrdup($2); + } + ; + +date: textSegment + { + $$ = checkDate(thisParserPtr, $1); + } + ; + +format: textSegment + { + $$ = smiStrdup($1); + } + ; + +units: textSegment + { + $$ = smiStrdup($1); + } + ; + +/* + * The type of `anyValue' must be determined from the + * context. `anyValue' appears only in default value clauses. Hence, + * we set a global variable defaultBasetype in the object type + * declaring clause to remember the expected type. Here, we use this + * variable to build an SmiValue with the appropriate base type. + */ +anyValue: bitsValue + { + if (defaultBasetype == SMI_BASETYPE_BITS) { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_BITS; + $$->value.ptr = (void*)($1); + //set the bits value in the value.integer32 + if(typePtr){ + createBitsValue($$,typePtr); + } + else if(attributePtr){ + createBitsValue($$, + (Type*)smiGetAttributeParentType(&(attributePtr->export))); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + } + } + | decimalNumber + { + /* Note: might also be an OID or signed */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 10); + break; + case SMI_BASETYPE_UNSIGNED64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 10); + break; + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = strtol($1, NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = strtoll($1, NULL, 10); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->len = strlen($1); + $$->value.ptr = smiStrdup($1); + /* TODO */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | '-' decimalNumber + { + switch (defaultBasetype) { + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = - strtol($2, NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = - strtoll($2, NULL, 10); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | hexadecimalNumber + { + /* Note: might also be an octet string */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + break; + case SMI_BASETYPE_UNSIGNED64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 16); + break; + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = strtol($1, NULL, 16); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = strtoll($1, NULL, 16); + break; + case SMI_BASETYPE_OCTETSTRING: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = hexToStr($1,strlen($1)); + $$->len = strlen($$->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | floatValue + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = strtof($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = strtod($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = strtold($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = smiMalloc(strlen($1)+1); + strcpy($$->value.ptr,$1); + $$->len = strlen($$->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | '-' floatValue + { + + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | specialFloatValue + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = strtof($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = strtod($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = strtold($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | text + { + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = $1; + $$->len = strlen($1); + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + } + } + | qlcIdentifier + { + /* Note: might be an Enumeration item or OID */ + /* TODO: convert if it's an oid? */ + switch (defaultBasetype) { + case SMI_BASETYPE_ENUM: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_ENUM; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX convert to int */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX convert to oid if found */ + break; + case SMI_BASETYPE_POINTER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX check if valid reference found */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | qOID + { + if (defaultBasetype == SMI_BASETYPE_OBJECTIDENTIFIER){ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($$->value.ptr); + } + else + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + } + ; + +qOID: ucIdentifier COLON_COLON OID + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + } + | OID + { + $$ = smiMalloc(strlen($1)+1); + strcpy($$,$1); + } + ; + +status: currentKeyword + { + $$ = SMI_STATUS_CURRENT; + } + | deprecatedKeyword + { + $$ = SMI_STATUS_DEPRECATED; + } + | obsoleteKeyword + { + $$ = SMI_STATUS_OBSOLETE; + } + ; + +number: hexadecimalNumber + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 16); + } + | decimalNumber + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 10); + } + ; + +negativeNumber: '-' decimalNumber + { + if(bitsFlag){ + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_NEGATIVE); + $$ = NULL; + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = - strtoll($2, NULL, 10); + } + ; + +signedNumber: number + { + $$ = $1; + } + | negativeNumber + { + $$ = $1; + } + ; + +/* decimalNumber, hexadecimalNumber, floatValue */ + +/* unknown... */ + +optsep_comma_01: /* empty */ + { + $$ = 0; + } +/* | optsep ',' */ + ; + +sep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +optsep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +stmtsep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +%% + +#endif + diff --git a/lib/scanner-smi.c b/lib/scanner-smi.c new file mode 100644 index 0000000..a900351 --- /dev/null +++ b/lib/scanner-smi.c @@ -0,0 +1,14173 @@ + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE smirestart(smiin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int smileng; + +extern FILE *smiin, *smiout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smitext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up smitext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via smirestart()), so that the user can continue scanning by + * just pointing smiin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when smitext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int smileng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow smiwrap()'s to do buffer switches + * instead of setting up a fresh smiin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void smirestart (FILE *input_file ); +void smi_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE smi_create_buffer (FILE *file,int size ); +void smi_delete_buffer (YY_BUFFER_STATE b ); +void smi_flush_buffer (YY_BUFFER_STATE b ); +void smipush_buffer_state (YY_BUFFER_STATE new_buffer ); +void smipop_buffer_state (void ); + +static void smiensure_buffer_stack (void ); +static void smi_load_buffer_state (void ); +static void smi_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER smi_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE smi_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE smi_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE smi_scan_bytes (yyconst char *bytes,int len ); + +void *smialloc (yy_size_t ); +void *smirealloc (void *,yy_size_t ); +void smifree (void * ); + +#define yy_new_buffer smi_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + smiensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + smi_create_buffer(smiin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + smiensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + smi_create_buffer(smiin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define smiwrap() 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *smiin = (FILE *) 0, *smiout = (FILE *) 0; + +typedef int yy_state_type; + +extern int smilineno; + +int smilineno = 1; + +extern char *smitext; +#define yytext_ptr smitext +static yyconst flex_int16_t yy_nxt[][68] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + + { + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 24, 24, 24, 24, 24, 25, 20, 14, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, + + 33, 35, 36, 37, 38, 39, 33, 40, 41, 42, + 43, 44, 45, 33, 33, 33, 14, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 20 + }, + + { + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 24, 24, 24, 24, 24, 25, 20, 14, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, + 33, 35, 36, 37, 38, 39, 33, 40, 41, 42, + 43, 44, 45, 33, 33, 33, 14, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 20 + }, + + { + 13, 47, 47, 48, 49, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 50, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + }, + + { + 13, 47, 47, 48, 49, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + + 47, 47, 47, 47, 50, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + }, + + { + 13, 51, 51, 52, 53, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 54 + }, + + { + 13, 51, 51, 52, 53, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 54 + }, + + { + 13, 55, 55, 56, 57, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 58, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + }, + + { + 13, 55, 55, 56, 57, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 58, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + }, + + { + 13, 59, 59, 60, 61, 59, 59, 59, 62, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59 + + }, + + { + 13, 59, 59, 60, 61, 59, 59, 59, 62, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59 + }, + + { + 13, 63, 63, 64, 65, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 13, 63, 63, 64, 65, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13 + }, + + { + 13, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14 + }, + + { + 13, -15, 66, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15 + }, + + { + 13, -16, -16, -16, 67, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16 + }, + + { + 13, -17, -17, 67, -17, -17, -17, -17, -17, -17, + + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17 + }, + + { + 13, 68, 68, 68, 68, 69, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68 + }, + + { + 13, -19, -19, -19, -19, -19, 70, -19, -19, -19, + 71, 71, 72, 72, 72, 72, 72, -19, -19, -19, + 72, 72, 72, 72, 72, 72, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, 72, 72, 72, + 72, 72, 72, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19 + + }, + + { + 13, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20 + }, + + { + 13, -21, -21, -21, -21, -21, -21, -21, 73, -21, + 74, 75, 75, 75, 75, 75, 75, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21 + }, + + { + 13, -22, -22, -22, -22, -22, -22, -22, -22, 76, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + + -22, -22, -22, -22, -22, -22, -22, -22 + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 78, 79, 79, 79, 79, 79, 79, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 80, 80, 80, 80, 80, 80, 80, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, 81, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25 + }, + + { + 13, -26, -26, -26, -26, -26, -26, -26, 82, -26, + 83, 83, 83, 83, 83, 83, 83, -26, -26, -26, + 83, 84, 85, 83, 83, 83, 86, 83, 83, 83, + 83, 83, 83, 87, 83, 88, 83, 83, 83, 83, + 89, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -26 + }, + + { + 13, -27, -27, -27, -27, -27, -27, -27, 82, -27, + + 83, 83, 83, 83, 83, 83, 83, -27, -27, -27, + 83, 83, 83, 83, 90, 83, 83, 83, 91, 83, + 83, 83, 83, 83, 92, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -27 + }, + + { + 13, -28, -28, -28, -28, -28, -28, -28, 82, -28, + 83, 83, 83, 83, 83, 83, 83, -28, -28, -28, + 83, 83, 83, 83, 83, 83, 83, 94, 83, 83, + 83, 83, 83, 83, 95, 83, 83, 96, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 97, 83, 83, 83, 83, 83, 83, -28 + }, + + { + 13, -29, -29, -29, -29, -29, -29, -29, 82, -29, + 83, 83, 83, 83, 83, 83, 83, -29, -29, -29, + 83, 83, 83, 83, 98, 83, 83, 83, 99, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -29 + + }, + + { + 13, -30, -30, -30, -30, -30, -30, -30, 82, -30, + 83, 83, 83, 83, 83, 83, 83, -30, -30, -30, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 100, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 101, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -30 + }, + + { + 13, -31, -31, -31, -31, -31, -31, -31, 82, -31, + 83, 83, 83, 83, 83, 83, 83, -31, -31, -31, + 102, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 103, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -31 + }, + + { + 13, -32, -32, -32, -32, -32, -32, -32, 82, -32, + 83, 83, 83, 83, 83, 83, 83, -32, -32, -32, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 104, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 105, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -32 + }, + + { + 13, -33, -33, -33, -33, -33, -33, -33, 82, -33, + 83, 83, 83, 83, 83, 83, 83, -33, -33, -33, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -33 + }, + + { + 13, -34, -34, -34, -34, -34, -34, -34, 82, -34, + 83, 83, 83, 83, 83, 83, 83, -34, -34, -34, + + 83, 83, 83, 106, 83, 83, 83, 83, 83, 83, + 83, 83, 107, 108, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 109, + 83, 110, 83, 83, 83, 83, 83, -34 + }, + + { + 13, -35, -35, -35, -35, -35, -35, -35, 82, -35, + 83, 83, 83, 83, 83, 83, 83, -35, -35, -35, + 111, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -35 + }, + + { + 13, -36, -36, -36, -36, -36, -36, -36, 82, -36, + 83, 83, 83, 83, 83, 83, 83, -36, -36, -36, + 112, 83, 83, 83, 83, 83, 83, 83, 113, 83, + 83, 83, 83, 83, 114, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -36 + }, + + { + 13, -37, -37, -37, -37, -37, -37, -37, 82, -37, + + 83, 83, 83, 83, 83, 83, 83, -37, -37, -37, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 115, 83, 83, 83, 83, 83, + 116, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -37 + }, + + { + 13, -38, -38, -38, -38, -38, -38, -38, 82, -38, + 83, 83, 83, 83, 83, 83, 83, -38, -38, -38, + 83, 117, 118, 83, 83, 119, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 120, 83, 121, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 122, 83, 83, 83, 83, 83, -38 + }, + + { + 13, -39, -39, -39, -39, -39, -39, -39, 82, -39, + 83, 83, 83, 83, 83, 83, 83, -39, -39, -39, + 83, 83, 83, 83, 83, 83, 83, 83, 123, 83, + 83, 124, 83, 83, 125, 83, 83, 126, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -39 + + }, + + { + 13, -40, -40, -40, -40, -40, -40, -40, 82, -40, + 83, 83, 83, 83, 83, 83, 83, -40, -40, -40, + 83, 83, 83, 83, 127, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -40 + }, + + { + 13, -41, -41, -41, -41, -41, -41, -41, 82, -41, + 83, 83, 83, 83, 83, 83, 83, -41, -41, -41, + 83, 83, 83, 83, 128, 83, 83, 83, 129, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 130, + 131, 83, 83, 83, 132, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -41 + }, + + { + 13, -42, -42, -42, -42, -42, -42, -42, 82, -42, + 83, 83, 83, 83, 83, 83, 83, -42, -42, -42, + 133, 83, 83, 83, 134, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 135, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 136, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -42 + }, + + { + 13, -43, -43, -43, -43, -43, -43, -43, 82, -43, + 83, 83, 83, 83, 83, 83, 83, -43, -43, -43, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 137, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 138, + 83, 83, 83, 83, 83, 83, 83, -43 + }, + + { + 13, -44, -44, -44, -44, -44, -44, -44, 82, -44, + 83, 83, 83, 83, 83, 83, 83, -44, -44, -44, + + 139, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -44 + }, + + { + 13, -45, -45, -45, -45, -45, -45, -45, 82, -45, + 83, 83, 83, 83, 83, 83, 83, -45, -45, -45, + 83, 83, 83, 83, 83, 83, 83, 83, 140, 83, + 83, 83, 83, 83, 83, 83, 83, 141, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -45 + }, + + { + 13, -46, -46, -46, -46, -46, -46, -46, 142, -46, + 143, 143, 143, 143, 143, 143, 143, -46, -46, -46, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, -46 + }, + + { + 13, -47, -47, -47, -47, -47, -47, -47, -47, -47, + + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47 + }, + + { + 13, -48, -48, -48, 144, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48 + }, + + { + 13, -49, -49, 144, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49 + + }, + + { + 13, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, 145, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50 + }, + + { + 13, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51 + }, + + { + 13, -52, -52, -52, 146, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + + -52, -52, -52, -52, -52, -52, -52, -52 + }, + + { + 13, -53, -53, 146, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53 + }, + + { + 13, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -55, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 147, 148, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -56, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 148, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, -57, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58 + }, + + { + 13, 149, 149, -59, -59, 149, 149, 149, -59, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149 + + }, + + { + 13, -60, -60, -60, 150, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60 + }, + + { + 13, -61, -61, 150, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61 + }, + + { + 13, -62, -62, -62, -62, -62, -62, -62, 151, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + + -62, -62, -62, -62, -62, -62, -62, -62 + }, + + { + 13, 152, 152, 153, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -64, -64, -64, 155, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64 + }, + + { + 13, 152, 152, 156, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -66, 66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66 + }, + + { + 13, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67 + }, + + { + 13, 68, 68, 68, 68, 69, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68 + }, + + { + 13, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69 + + }, + + { + 13, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, 157, -70, -70, -70, -70, -70, 158, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, 157, -70, + -70, -70, -70, -70, 158, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70 + }, + + { + 13, -71, -71, -71, -71, -71, 70, -71, -71, -71, + 71, 71, 72, 72, 72, 72, 72, -71, -71, -71, + 72, 72, 72, 72, 72, 72, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, 72, 72, 72, + 72, 72, 72, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71 + }, + + { + 13, -72, -72, -72, -72, -72, 159, -72, -72, -72, + 72, 72, 72, 72, 72, 72, 72, -72, -72, -72, + 72, 72, 72, 72, 72, 72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, 72, 72, 72, + 72, 72, 72, -72, -72, -72, -72, -72, -72, -72, + + -72, -72, -72, -72, -72, -72, -72, -72 + }, + + { + 13, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + -74, -74, -74, -74, -74, -74, -74, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76 + }, + + { + 13, -77, -77, -77, -77, -77, -77, -77, -77, -77, + + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77 + }, + + { + 13, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 78, 79, 79, 79, 79, 79, 79, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78 + }, + + { + 13, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79 + + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 80, 80, 80, 80, 80, 80, 80, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, 162, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81 + }, + + { + 13, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 83, 83, 83, 83, 83, 83, 83, -82, -82, -82, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -82 + }, + + { + 13, -83, -83, -83, -83, -83, -83, -83, 82, -83, + 83, 83, 83, 83, 83, 83, 83, -83, -83, -83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -83 + }, + + { + 13, -84, -84, -84, -84, -84, -84, -84, 82, -84, + 83, 83, 83, 83, 83, 83, 83, -84, -84, -84, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 163, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -84 + }, + + { + 13, -85, -85, -85, -85, -85, -85, -85, 82, -85, + 83, 83, 83, 83, 83, 83, 83, -85, -85, -85, + 83, 83, 164, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -85 + }, + + { + 13, -86, -86, -86, -86, -86, -86, -86, 82, -86, + 83, 83, 83, 83, 83, 83, 83, -86, -86, -86, + 83, 83, 83, 83, 165, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -86 + }, + + { + 13, -87, -87, -87, -87, -87, -87, -87, 82, -87, + + 83, 83, 83, 83, 83, 83, 83, -87, -87, -87, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -87 + }, + + { + 13, -88, -88, -88, -88, -88, -88, -88, 82, -88, + 83, 83, 83, 83, 83, 83, 83, -88, -88, -88, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 166, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -88 + }, + + { + 13, -89, -89, -89, -89, -89, -89, -89, 82, -89, + 83, 83, 83, 83, 83, 83, 83, -89, -89, -89, + 83, 83, 83, 83, 83, 83, 167, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -89 + + }, + + { + 13, -90, -90, -90, -90, -90, -90, -90, 82, -90, + 83, 83, 83, 83, 83, 83, 83, -90, -90, -90, + 83, 83, 83, 83, 83, 83, 168, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -90 + }, + + { + 13, -91, -91, -91, -91, -91, -91, -91, 82, -91, + 83, 83, 83, 83, 83, 83, 83, -91, -91, -91, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 169, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -91 + }, + + { + 13, -92, -92, -92, -92, -92, -92, -92, 82, -92, + 83, 83, 83, 83, 83, 83, 83, -92, -92, -92, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 170, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -92 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -94, -94, -94, -94, -94, -94, -94, 82, -94, + 83, 83, 83, 83, 83, 83, 83, -94, -94, -94, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 174, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -94 + }, + + { + 13, -95, -95, -95, -95, -95, -95, -95, 82, -95, + 83, 83, 83, 83, 83, 83, 83, -95, -95, -95, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 175, 176, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -95 + }, + + { + 13, -96, -96, -96, -96, -96, -96, -96, 82, -96, + 83, 83, 83, 83, 83, 83, 83, -96, -96, -96, + 83, 83, 83, 83, 177, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -96 + }, + + { + 13, -97, -97, -97, -97, -97, -97, -97, 82, -97, + + 83, 83, 83, 83, 83, 83, 83, -97, -97, -97, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 178, -97 + }, + + { + 13, -98, -98, -98, -98, -98, -98, -98, 82, -98, + 83, 83, 83, 83, 83, 83, 83, -98, -98, -98, + 83, 83, 83, 83, 83, 179, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 180, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -98 + }, + + { + 13, -99, -99, -99, -99, -99, -99, -99, 82, -99, + 83, 83, 83, 83, 83, 83, 83, -99, -99, -99, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 181, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -99 + + }, + + { + 13, -100, -100, -100, -100, -100, -100, -100, 82, -100, + 83, 83, 83, 83, 83, 83, 83, -100, -100, -100, + 83, 83, 83, 182, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 183, + 184, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -100 + }, + + { + 13, -101, -101, -101, -101, -101, -101, -101, 82, -101, + 83, 83, 83, 83, 83, 83, 83, -101, -101, -101, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 185, 83, 83, 83, 186, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -101 + }, + + { + 13, -102, -102, -102, -102, -102, -102, -102, 82, -102, + 83, 83, 83, 83, 83, 83, 83, -102, -102, -102, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 187, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -102 + }, + + { + 13, -103, -103, -103, -103, -103, -103, -103, 82, -103, + 83, 83, 83, 83, 83, 83, 83, -103, -103, -103, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 188, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -103 + }, + + { + 13, -104, -104, -104, -104, -104, -104, -104, 82, -104, + 83, 83, 83, 83, 83, 83, 83, -104, -104, -104, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 189, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -104 + }, + + { + 13, -105, -105, -105, -105, -105, -105, -105, 82, -105, + 83, 83, 83, 83, 83, 83, 83, -105, -105, -105, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 190, -105 + }, + + { + 13, -106, -106, -106, -106, -106, -106, -106, 82, -106, + 83, 83, 83, 83, 83, 83, 83, -106, -106, -106, + 83, 83, 83, 83, 191, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -106 + }, + + { + 13, -107, -107, -107, -107, -107, -107, -107, 82, -107, + + 83, 83, 83, 83, 83, 83, 83, -107, -107, -107, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 192, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -107 + }, + + { + 13, -108, -108, -108, -108, -108, -108, -108, 82, -108, + 83, 83, 83, 83, 83, 83, 83, -108, -108, -108, + 83, 83, 193, 194, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 195, 196, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -108 + }, + + { + 13, -109, -109, -109, -109, -109, -109, -109, 82, -109, + 83, 83, 83, 83, 83, 83, 83, -109, -109, -109, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 197, 83, -109 + + }, + + { + 13, -110, -110, -110, -110, -110, -110, -110, 82, -110, + 83, 83, 83, 83, 83, 83, 83, -110, -110, -110, + 198, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -110 + }, + + { + 13, -111, -111, -111, -111, -111, -111, -111, 82, -111, + 83, 83, 83, 83, 83, 83, 83, -111, -111, -111, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 199, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -111 + }, + + { + 13, -112, -112, -112, -112, -112, -112, -112, 82, -112, + 83, 83, 83, 83, 83, 83, 83, -112, -112, -112, + 83, 83, 200, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 201, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 202, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -112 + }, + + { + 13, -113, -113, -113, -113, -113, -113, -113, 82, -113, + 83, 83, 83, 83, 83, 83, 83, -113, -113, -113, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 203, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -113 + }, + + { + 13, -114, -114, -114, -114, -114, -114, -114, 82, -114, + 83, 83, 83, 83, 83, 83, 83, -114, -114, -114, + + 83, 83, 83, 204, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -114 + }, + + { + 13, -115, -115, -115, -115, -115, -115, -115, 82, -115, + 83, 83, 83, 83, 83, 83, 83, -115, -115, -115, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 205, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -115 + }, + + { + 13, -116, -116, -116, -116, -116, -116, -116, 82, -116, + 83, 83, 83, 83, 83, 83, 83, -116, -116, -116, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 206, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -116 + }, + + { + 13, -117, -117, -117, -117, -117, -117, -117, 82, -117, + + 83, 83, 83, 83, 83, 83, 83, -117, -117, -117, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 207, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -117 + }, + + { + 13, -118, -118, -118, -118, -118, -118, -118, 82, -118, + 83, 83, 83, 83, 83, 83, 83, -118, -118, -118, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 208, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -118 + }, + + { + 13, 209, 209, 209, 209, 209, 209, 209, 210, 209, + 83, 83, 83, 83, 83, 83, 83, 209, 209, 209, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 211, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 209 + + }, + + { + 13, -120, -120, -120, -120, -120, -120, -120, 82, -120, + 83, 83, 83, 83, 83, 83, 83, -120, -120, -120, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 212, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -120 + }, + + { + 13, -121, -121, -121, -121, -121, -121, -121, 82, -121, + 83, 83, 83, 83, 83, 83, 83, -121, -121, -121, + 83, 83, 83, 83, 83, 83, 213, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -121 + }, + + { + 13, -122, -122, -122, -122, -122, -122, -122, 82, -122, + 83, 83, 83, 83, 83, 83, 83, -122, -122, -122, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 214, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -122 + }, + + { + 13, -123, -123, -123, -123, -123, -123, -123, 82, -123, + 83, 83, 83, 83, 83, 83, 83, -123, -123, -123, + 83, 215, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -123 + }, + + { + 13, -124, -124, -124, -124, -124, -124, -124, 82, -124, + 83, 83, 83, 83, 83, 83, 83, -124, -124, -124, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 216, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -124 + }, + + { + 13, -125, -125, -125, -125, -125, -125, -125, 82, -125, + 83, 83, 83, 83, 83, 83, 83, -125, -125, -125, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 217, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -125 + }, + + { + 13, -126, -126, -126, -126, -126, -126, -126, 82, -126, + 83, 83, 83, 83, 83, 83, 83, -126, -126, -126, + 83, 83, 83, 83, 218, 83, 83, 83, 219, 83, + 83, 83, 83, 83, 220, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -126 + }, + + { + 13, -127, -127, -127, -127, -127, -127, -127, 82, -127, + + 83, 83, 83, 83, 83, 83, 83, -127, -127, -127, + 221, 83, 83, 83, 83, 222, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 223, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -127 + }, + + { + 13, -128, -128, -128, -128, -128, -128, -128, 82, -128, + 83, 83, 83, 83, 83, 83, 83, -128, -128, -128, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 224, 83, 83, 93, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -128 + }, + + { + 13, -129, -129, -129, -129, -129, -129, -129, 82, -129, + 83, 83, 83, 83, 83, 83, 83, -129, -129, -129, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 225, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -129 + + }, + + { + 13, -130, -130, -130, -130, -130, -130, -130, 82, -130, + 83, 83, 83, 83, 83, 83, 83, -130, -130, -130, + 226, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 227, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -130 + }, + + { + 13, -131, -131, -131, -131, -131, -131, -131, 82, -131, + 83, 83, 83, 83, 83, 83, 83, -131, -131, -131, + 83, 228, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 229, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -131 + }, + + { + 13, -132, -132, -132, -132, -132, -132, -132, 82, -132, + 83, 83, 83, 83, 83, 83, 83, -132, -132, -132, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 230, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -132 + }, + + { + 13, -133, -133, -133, -133, -133, -133, -133, 82, -133, + 83, 83, 83, 83, 83, 83, 83, -133, -133, -133, + 83, 83, 83, 83, 83, 83, 231, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -133 + }, + + { + 13, -134, -134, -134, -134, -134, -134, -134, 82, -134, + 83, 83, 83, 83, 83, 83, 83, -134, -134, -134, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 232, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -134 + }, + + { + 13, -135, -135, -135, -135, -135, -135, -135, 82, -135, + 83, 83, 83, 83, 83, 83, 83, -135, -135, -135, + 233, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 234, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -135 + }, + + { + 13, -136, -136, -136, -136, -136, -136, -136, 82, -136, + 83, 83, 83, 83, 83, 83, 83, -136, -136, -136, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 235, 83, + 83, 83, 83, 83, 83, 83, 83, -136 + }, + + { + 13, -137, -137, -137, -137, -137, -137, -137, 82, -137, + + 83, 83, 83, 83, 83, 83, 83, -137, -137, -137, + 83, 83, 83, 83, 83, 83, 83, 83, 236, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -137 + }, + + { + 13, -138, -138, -138, -138, -138, -138, -138, 82, -138, + 83, 83, 83, 83, 83, 83, 83, -138, -138, -138, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 237, 83, 83, -138 + }, + + { + 13, -139, -139, -139, -139, -139, -139, -139, 82, -139, + 83, 83, 83, 83, 83, 83, 83, -139, -139, -139, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 238, 83, 83, 83, 83, 83, 239, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -139 + + }, + + { + 13, -140, -140, -140, -140, -140, -140, -140, 82, -140, + 83, 83, 83, 83, 83, 83, 83, -140, -140, -140, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 240, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -140 + }, + + { + 13, -141, -141, -141, -141, -141, -141, -141, 82, -141, + 83, 83, 83, 83, 83, 83, 83, -141, -141, -141, + 83, 83, 83, 83, 83, 83, 83, 83, 241, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -141 + }, + + { + 13, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 143, 143, 143, 143, 143, 143, 143, -142, -142, -142, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + + 143, 143, 143, 143, 143, 143, 143, -142 + }, + + { + 13, -143, -143, -143, -143, -143, -143, -143, 142, -143, + 143, 143, 143, 143, 143, 143, 143, -143, -143, -143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, -143 + }, + + { + 13, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144 + }, + + { + 13, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, 242, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145 + }, + + { + 13, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, -147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -148, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 149, 149, -149, -149, 149, 149, 149, -149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149 + + }, + + { + 13, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150 + }, + + { + 13, -151, -151, -151, -151, -151, -151, -151, 243, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151 + }, + + { + 13, 152, 152, 153, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -153, -153, -153, 155, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153 + }, + + { + 13, 152, 152, 156, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155 + }, + + { + 13, -156, -156, -156, 155, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156 + }, + + { + 13, -157, -157, -157, -157, -157, -157, -157, -157, -157, + + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157 + }, + + { + 13, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158 + }, + + { + 13, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, 158, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, 158, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159 + + }, + + { + 13, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + + -162, -162, -162, -162, -162, -162, -162, -162 + }, + + { + 13, -163, -163, -163, -163, -163, -163, -163, 82, -163, + 83, 83, 83, 83, 83, 83, 83, -163, -163, -163, + 83, 83, 83, 83, 244, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -163 + }, + + { + 13, -164, -164, -164, -164, -164, -164, -164, 82, -164, + 83, 83, 83, 83, 83, 83, 83, -164, -164, -164, + + 83, 83, 83, 83, 245, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -164 + }, + + { + 13, -165, -165, -165, -165, -165, -165, -165, 82, -165, + 83, 83, 83, 83, 83, 83, 83, -165, -165, -165, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 246, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -165 + }, + + { + 13, -166, -166, -166, -166, -166, -166, -166, 82, -166, + 83, 83, 83, 83, 83, 83, 83, -166, -166, -166, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 247, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -166 + }, + + { + 13, -167, -167, -167, -167, -167, -167, -167, 82, -167, + + 83, 83, 83, 83, 83, 83, 83, -167, -167, -167, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 248, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -167 + }, + + { + 13, -168, -168, -168, -168, -168, -168, -168, 82, -168, + 83, 83, 83, 83, 83, 83, 83, -168, -168, -168, + 83, 83, 83, 83, 83, 83, 83, 83, 249, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -168 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 250, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + + }, + + { + 13, -170, -170, -170, -170, -170, -170, -170, 82, -170, + 83, 83, 83, 83, 83, 83, 83, -170, -170, -170, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 251, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -170 + }, + + { + 13, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171 + }, + + { + 13, -172, -172, -172, -172, -172, -172, -172, 252, -172, + 83, 83, 83, 83, 83, 83, 83, -172, -172, -172, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -172 + }, + + { + 13, -173, -173, -173, -173, -173, -173, -173, 82, -173, + 83, 83, 83, 83, 83, 83, 83, -173, -173, -173, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -173 + }, + + { + 13, -174, -174, -174, -174, -174, -174, -174, 82, -174, + 83, 83, 83, 83, 83, 83, 83, -174, -174, -174, + + 83, 83, 83, 83, 83, 83, 83, 83, 253, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -174 + }, + + { + 13, -175, -175, -175, -175, -175, -175, -175, 82, -175, + 83, 83, 83, 83, 83, 83, 83, -175, -175, -175, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 254, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -175 + }, + + { + 13, -176, -176, -176, -176, -176, -176, -176, 82, -176, + 83, 83, 83, 83, 83, 83, 83, -176, -176, -176, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 255, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -176 + }, + + { + 13, -177, -177, -177, -177, -177, -177, -177, 82, -177, + + 83, 83, 83, 83, 83, 83, 83, -177, -177, -177, + 256, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -177 + }, + + { + 13, -178, -178, -178, -178, -178, -178, -178, 82, -178, + 83, 83, 83, 83, 83, 83, 83, -178, -178, -178, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 257, + 83, 83, 83, 83, 83, 83, 83, -178 + }, + + { + 13, -179, -179, -179, -179, -179, -179, -179, 82, -179, + 83, 83, 83, 83, 83, 83, 83, -179, -179, -179, + 258, 83, 83, 83, 83, 83, 83, 83, 259, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 260, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -179 + + }, + + { + 13, -180, -180, -180, -180, -180, -180, -180, 82, -180, + 83, 83, 83, 83, 83, 83, 83, -180, -180, -180, + 83, 83, 261, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -180 + }, + + { + 13, -181, -181, -181, -181, -181, -181, -181, 82, -181, + 83, 83, 83, 83, 83, 83, 83, -181, -181, -181, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 262, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -181 + }, + + { + 13, 263, 263, 263, 263, 263, 263, 263, 264, 263, + 83, 83, 83, 83, 83, 83, 83, 263, 263, 263, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 265, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 263 + }, + + { + 13, -183, -183, -183, -183, -183, -183, -183, 82, -183, + 83, 83, 83, 83, 83, 83, 83, -183, -183, -183, + 83, 83, 83, 83, 266, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -183 + }, + + { + 13, -184, -184, -184, -184, -184, -184, -184, 82, -184, + 83, 83, 83, 83, 83, 83, 83, -184, -184, -184, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 267, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -184 + }, + + { + 13, -185, -185, -185, -185, -185, -185, -185, 82, -185, + 83, 83, 83, 83, 83, 83, 83, -185, -185, -185, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 268, 83, 83, 269, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -185 + }, + + { + 13, -186, -186, -186, -186, -186, -186, -186, 82, -186, + 83, 83, 83, 83, 83, 83, 83, -186, -186, -186, + 83, 83, 83, 83, 270, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -186 + }, + + { + 13, -187, -187, -187, -187, -187, -187, -187, 82, -187, + + 83, 83, 83, 83, 83, 83, 83, -187, -187, -187, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 271, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -187 + }, + + { + 13, -188, -188, -188, -188, -188, -188, -188, 82, -188, + 83, 83, 83, 83, 83, 83, 83, -188, -188, -188, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 272, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -188 + }, + + { + 13, -189, -189, -189, -189, -189, -189, -189, 82, -189, + 83, 83, 83, 83, 83, 83, 83, -189, -189, -189, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 273, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -189 + + }, + + { + 13, -190, -190, -190, -190, -190, -190, -190, 82, -190, + 83, 83, 83, 83, 83, 83, 83, -190, -190, -190, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 274, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -190 + }, + + { + 13, -191, -191, -191, -191, -191, -191, -191, 82, -191, + 83, 83, 83, 83, 83, 83, 83, -191, -191, -191, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 275, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -191 + }, + + { + 13, -192, -192, -192, -192, -192, -192, -192, 82, -192, + 83, 83, 83, 83, 83, 83, 83, -192, -192, -192, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 276, 83, 83, 277, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -192 + }, + + { + 13, -193, -193, -193, -193, -193, -193, -193, 82, -193, + 83, 83, 83, 83, 83, 83, 83, -193, -193, -193, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 278, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -193 + }, + + { + 13, -194, -194, -194, -194, -194, -194, -194, 82, -194, + 83, 83, 83, 83, 83, 83, 83, -194, -194, -194, + + 83, 83, 83, 83, 279, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -194 + }, + + { + 13, -195, -195, -195, -195, -195, -195, -195, 82, -195, + 83, 83, 83, 83, 83, 83, 83, -195, -195, -195, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 280, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -195 + }, + + { + 13, -196, -196, -196, -196, -196, -196, -196, 82, -196, + 83, 83, 83, 83, 83, 83, 83, -196, -196, -196, + 83, 83, 83, 83, 281, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -196 + }, + + { + 13, -197, -197, -197, -197, -197, -197, -197, 82, -197, + + 83, 83, 83, 83, 83, 83, 83, -197, -197, -197, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 282, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -197 + }, + + { + 13, -198, -198, -198, -198, -198, -198, -198, 82, -198, + 83, 83, 83, 83, 83, 83, 83, -198, -198, -198, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 283, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -198 + }, + + { + 13, -199, -199, -199, -199, -199, -199, -199, 82, -199, + 83, 83, 83, 83, 83, 83, 83, -199, -199, -199, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 284, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -199 + + }, + + { + 13, -200, -200, -200, -200, -200, -200, -200, 82, -200, + 83, 83, 83, 83, 83, 83, 83, -200, -200, -200, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 285, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -200 + }, + + { + 13, -201, -201, -201, -201, -201, -201, -201, 82, -201, + 83, 83, 83, 83, 83, 83, 83, -201, -201, -201, + 83, 83, 83, 286, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -201 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 287, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 288, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 289, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -204, -204, -204, -204, -204, -204, -204, 82, -204, + 83, 83, 83, 83, 83, 83, 83, -204, -204, -204, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 290, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -204 + }, + + { + 13, -205, -205, -205, -205, -205, -205, -205, 82, -205, + 83, 83, 83, 83, 83, 83, 83, -205, -205, -205, + 83, 83, 83, 83, 83, 83, 83, 83, 291, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -205 + }, + + { + 13, -206, -206, -206, -206, -206, -206, -206, 82, -206, + 83, 83, 83, 83, 83, 83, 83, -206, -206, -206, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -206 + }, + + { + 13, -207, -207, -207, -207, -207, -207, -207, 82, -207, + + 83, 83, 83, 83, 83, 83, 83, -207, -207, -207, + 83, 83, 83, 83, 292, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -207 + }, + + { + 13, -208, -208, -208, -208, -208, -208, -208, 82, -208, + 83, 83, 83, 83, 83, 83, 83, -208, -208, -208, + 83, 83, 83, 83, 293, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -208 + }, + + { + 13, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209 + + }, + + { + 13, -210, -210, -210, -210, -210, -210, -210, 209, -210, + 83, 83, 83, 83, 83, 83, 83, -210, -210, -210, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -210 + }, + + { + 13, -211, -211, -211, -211, -211, -211, -211, 82, -211, + 83, 83, 83, 83, 83, 83, 83, -211, -211, -211, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -211 + }, + + { + 13, -212, -212, -212, -212, -212, -212, -212, 82, -212, + 83, 83, 83, 83, 83, 83, 83, -212, -212, -212, + 83, 83, 83, 83, 83, 83, 83, 83, 294, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -212 + }, + + { + 13, -213, -213, -213, -213, -213, -213, -213, 82, -213, + 83, 83, 83, 83, 83, 83, 83, -213, -213, -213, + 295, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -213 + }, + + { + 13, -214, -214, -214, -214, -214, -214, -214, 82, -214, + 83, 83, 83, 83, 83, 83, 83, -214, -214, -214, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 296, 83, 83, 83, 83, -214 + }, + + { + 13, -215, -215, -215, -215, -215, -215, -215, 297, -215, + 83, 83, 83, 83, 83, 83, 83, -215, -215, -215, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -215 + }, + + { + 13, -216, -216, -216, -216, -216, -216, -216, 82, -216, + 83, 83, 83, 83, 83, 83, 83, -216, -216, -216, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 298, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -216 + }, + + { + 13, -217, -217, -217, -217, -217, -217, -217, 82, -217, + + 83, 83, 83, 83, 83, 83, 83, -217, -217, -217, + 83, 83, 83, 83, 83, 83, 83, 83, 299, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -217 + }, + + { + 13, -218, -218, -218, -218, -218, -218, -218, 82, -218, + 83, 83, 83, 83, 83, 83, 83, -218, -218, -218, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 300, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -218 + }, + + { + 13, -219, -219, -219, -219, -219, -219, -219, 82, -219, + 83, 83, 83, 83, 83, 83, 83, -219, -219, -219, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 301, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -219 + + }, + + { + 13, -220, -220, -220, -220, -220, -220, -220, 82, -220, + 83, 83, 83, 83, 83, 83, 83, -220, -220, -220, + 83, 83, 83, 302, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -220 + }, + + { + 13, -221, -221, -221, -221, -221, -221, -221, 82, -221, + 83, 83, 83, 83, 83, 83, 83, -221, -221, -221, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -221 + }, + + { + 13, -222, -222, -222, -222, -222, -222, -222, 82, -222, + 83, 83, 83, 83, 83, 83, 83, -222, -222, -222, + 83, 83, 83, 83, 303, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -222 + }, + + { + 13, -223, -223, -223, -223, -223, -223, -223, 82, -223, + 83, 83, 83, 83, 83, 83, 83, -223, -223, -223, + 83, 83, 83, 83, 83, 83, 83, 83, 304, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -223 + }, + + { + 13, -224, -224, -224, -224, -224, -224, -224, 82, -224, + 83, 83, 83, 83, 83, 83, 83, -224, -224, -224, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 305, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -224 + }, + + { + 13, -225, -225, -225, -225, -225, -225, -225, 82, -225, + 83, 83, 83, 83, 83, 83, 83, -225, -225, -225, + 83, 83, 83, 83, 306, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -225 + }, + + { + 13, -226, -226, -226, -226, -226, -226, -226, 82, -226, + 83, 83, 83, 83, 83, 83, 83, -226, -226, -226, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 307, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -226 + }, + + { + 13, -227, -227, -227, -227, -227, -227, -227, 82, -227, + + 83, 83, 83, 83, 83, 83, 83, -227, -227, -227, + 83, 83, 83, 83, 83, 83, 83, 83, 308, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -227 + }, + + { + 13, -228, -228, -228, -228, -228, -228, -228, 82, -228, + 83, 83, 83, 83, 83, 83, 83, -228, -228, -228, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 309, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -228 + }, + + { + 13, -229, -229, -229, -229, -229, -229, -229, 82, -229, + 83, 83, 83, 83, 83, 83, 83, -229, -229, -229, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 310, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -229 + + }, + + { + 13, -230, -230, -230, -230, -230, -230, -230, 82, -230, + 83, 83, 83, 83, 83, 83, 83, -230, -230, -230, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 311, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -230 + }, + + { + 13, -231, -231, -231, -231, -231, -231, -231, 82, -231, + 83, 83, 83, 83, 83, 83, 83, -231, -231, -231, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 93, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -231 + }, + + { + 13, -232, -232, -232, -232, -232, -232, -232, 82, -232, + 83, 83, 83, 83, 83, 83, 83, -232, -232, -232, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 312, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -232 + }, + + { + 13, -233, -233, -233, -233, -233, -233, -233, 82, -233, + 83, 83, 83, 83, 83, 83, 83, -233, -233, -233, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 313, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -233 + }, + + { + 13, -234, -234, -234, -234, -234, -234, -234, 82, -234, + 83, 83, 83, 83, 83, 83, 83, -234, -234, -234, + + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -234 + }, + + { + 13, -235, -235, -235, -235, -235, -235, -235, 82, -235, + 83, 83, 83, 83, 83, 83, 83, -235, -235, -235, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 314, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -235 + }, + + { + 13, -236, -236, -236, -236, -236, -236, -236, 82, -236, + 83, 83, 83, 83, 83, 83, 83, -236, -236, -236, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 315, 83, 83, 316, + 83, 317, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -236 + }, + + { + 13, -237, -237, -237, -237, -237, -237, -237, 82, -237, + + 83, 83, 83, 83, 83, 83, 83, -237, -237, -237, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 318, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -237 + }, + + { + 13, -238, -238, -238, -238, -238, -238, -238, 82, -238, + 83, 83, 83, 83, 83, 83, 83, -238, -238, -238, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 319, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -238 + }, + + { + 13, -239, -239, -239, -239, -239, -239, -239, 82, -239, + 83, 83, 83, 83, 83, 83, 83, -239, -239, -239, + 83, 83, 83, 83, 83, 83, 83, 83, 320, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -239 + + }, + + { + 13, -240, -240, -240, -240, -240, -240, -240, 82, -240, + 83, 83, 83, 83, 83, 83, 83, -240, -240, -240, + 83, 83, 83, 83, 83, 83, 83, 93, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -240 + }, + + { + 13, -241, -241, -241, -241, -241, -241, -241, 82, -241, + 83, 83, 83, 83, 83, 83, 83, -241, -241, -241, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 321, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -241 + }, + + { + 13, 322, 322, 322, 322, 322, 322, 322, 323, 322, + -242, -242, -242, -242, -242, -242, -242, 322, 322, 322, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, 322, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, 322 + }, + + { + 13, -243, -243, 324, 325, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243 + }, + + { + 13, -244, -244, -244, -244, -244, -244, -244, 82, -244, + 83, 83, 83, 83, 83, 83, 83, -244, -244, -244, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 326, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -244 + }, + + { + 13, -245, -245, -245, -245, -245, -245, -245, 82, -245, + 83, 83, 83, 83, 83, 83, 83, -245, -245, -245, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 327, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -245 + }, + + { + 13, -246, -246, -246, -246, -246, -246, -246, 82, -246, + 83, 83, 83, 83, 83, 83, 83, -246, -246, -246, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 328, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -246 + }, + + { + 13, -247, -247, -247, -247, -247, -247, -247, 82, -247, + + 83, 83, 83, 83, 83, 83, 83, -247, -247, -247, + 83, 83, 83, 83, 83, 83, 83, 83, 329, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -247 + }, + + { + 13, -248, -248, -248, -248, -248, -248, -248, 82, -248, + 83, 83, 83, 83, 83, 83, 83, -248, -248, -248, + 83, 83, 83, 83, 330, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -248 + }, + + { + 13, -249, -249, -249, -249, -249, -249, -249, 82, -249, + 83, 83, 83, 83, 83, 83, 83, -249, -249, -249, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 331, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -249 + + }, + + { + 13, 332, 332, 332, 332, 332, 332, 332, 333, 332, + 83, 83, 83, 83, 83, 83, 83, 332, 332, 332, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 334, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 332 + }, + + { + 13, -251, -251, -251, -251, -251, -251, -251, 82, -251, + 83, 83, 83, 83, 83, 83, 83, -251, -251, -251, + 83, 83, 83, 83, 335, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -251 + }, + + { + 13, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252 + }, + + { + 13, -253, -253, -253, -253, -253, -253, -253, 82, -253, + 83, 83, 83, 83, 83, 83, 83, -253, -253, -253, + 83, 83, 336, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -253 + }, + + { + 13, -254, -254, -254, -254, -254, -254, -254, 82, -254, + 83, 83, 83, 83, 83, 83, 83, -254, -254, -254, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 337, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -254 + }, + + { + 13, -255, -255, -255, -255, -255, -255, -255, 82, -255, + 83, 83, 83, 83, 83, 83, 83, -255, -255, -255, + 338, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -255 + }, + + { + 13, -256, -256, -256, -256, -256, -256, -256, 82, -256, + 83, 83, 83, 83, 83, 83, 83, -256, -256, -256, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 339, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -256 + }, + + { + 13, -257, -257, -257, -257, -257, -257, -257, 82, -257, + + 83, 83, 83, 83, 83, 83, 83, -257, -257, -257, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 340, 83, -257 + }, + + { + 13, -258, -258, -258, -258, -258, -258, -258, 82, -258, + 83, 83, 83, 83, 83, 83, 83, -258, -258, -258, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 341, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -258 + }, + + { + 13, -259, -259, -259, -259, -259, -259, -259, 82, -259, + 83, 83, 83, 83, 83, 83, 83, -259, -259, -259, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 342, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -259 + + }, + + { + 13, -260, -260, -260, -260, -260, -260, -260, 82, -260, + 83, 83, 83, 83, 83, 83, 83, -260, -260, -260, + 343, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -260 + }, + + { + 13, -261, -261, -261, -261, -261, -261, -261, 82, -261, + 83, 83, 83, 83, 83, 83, 83, -261, -261, -261, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 344, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -261 + }, + + { + 13, -262, -262, -262, -262, -262, -262, -262, 82, -262, + 83, 83, 83, 83, 83, 83, 83, -262, -262, -262, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 345, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -262 + }, + + { + 13, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263 + }, + + { + 13, -264, -264, -264, -264, -264, -264, -264, 263, -264, + 83, 83, 83, 83, 83, 83, 83, -264, -264, -264, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -264 + }, + + { + 13, -265, -265, -265, -265, -265, -265, -265, 82, -265, + 83, 83, 83, 83, 83, 83, 83, -265, -265, -265, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -265 + }, + + { + 13, -266, -266, -266, -266, -266, -266, -266, 82, -266, + 83, 83, 83, 83, 83, 83, 83, -266, -266, -266, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 346, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -266 + }, + + { + 13, -267, -267, -267, -267, -267, -267, -267, 82, -267, + + 83, 83, 83, 83, 83, 83, 83, -267, -267, -267, + 83, 83, 83, 83, 347, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -267 + }, + + { + 13, -268, -268, -268, -268, -268, -268, -268, 82, -268, + 83, 83, 83, 83, 83, 83, 83, -268, -268, -268, + 83, 83, 83, 83, 83, 83, 83, 83, 348, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -268 + }, + + { + 13, -269, -269, -269, -269, -269, -269, -269, 82, -269, + 83, 83, 83, 83, 83, 83, 83, -269, -269, -269, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 349, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -269 + + }, + + { + 13, -270, -270, -270, -270, -270, -270, -270, 82, -270, + 83, 83, 83, 83, 83, 83, 83, -270, -270, -270, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 350, 83, 83, 83, 351, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -270 + }, + + { + 13, -271, -271, -271, -271, -271, -271, -271, 82, -271, + 83, 83, 83, 83, 83, 83, 83, -271, -271, -271, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -271 + }, + + { + 13, 352, 352, 352, 352, 352, 352, 352, 353, 352, + 83, 83, 83, 83, 83, 83, 83, 352, 352, 352, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 354, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 352 + }, + + { + 13, -273, -273, -273, -273, -273, -273, -273, 82, -273, + 83, 83, 83, 83, 83, 83, 83, -273, -273, -273, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 355, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -273 + }, + + { + 13, -274, -274, -274, -274, -274, -274, -274, 82, -274, + 83, 83, 83, 83, 83, 83, 83, -274, -274, -274, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 356, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -274 + }, + + { + 13, -275, -275, -275, -275, -275, -275, -275, 82, -275, + 83, 83, 83, 83, 83, 83, 83, -275, -275, -275, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 357, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -275 + }, + + { + 13, -276, -276, -276, -276, -276, -276, -276, 82, -276, + 83, 83, 83, 83, 83, 83, 83, -276, -276, -276, + 83, 83, 83, 83, 83, 83, 83, 83, 358, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -276 + }, + + { + 13, -277, -277, -277, -277, -277, -277, -277, 82, -277, + + 83, 83, 83, 83, 83, 83, 83, -277, -277, -277, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 359, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -277 + }, + + { + 13, -278, -278, -278, -278, -278, -278, -278, 82, -278, + 83, 83, 83, 83, 83, 83, 83, -278, -278, -278, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 360, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -278 + }, + + { + 13, -279, -279, -279, -279, -279, -279, -279, 82, -279, + 83, 83, 83, 83, 83, 83, 83, -279, -279, -279, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 361, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -279 + + }, + + { + 13, -280, -280, -280, -280, -280, -280, -280, 82, -280, + 83, 83, 83, 83, 83, 83, 83, -280, -280, -280, + 362, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -280 + }, + + { + 13, -281, -281, -281, -281, -281, -281, -281, 82, -281, + 83, 83, 83, 83, 83, 83, 83, -281, -281, -281, + 83, 83, 83, 83, 83, 83, 363, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -281 + }, + + { + 13, -282, -282, -282, -282, -282, -282, -282, 82, -282, + 83, 83, 83, 83, 83, 83, 83, -282, -282, -282, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 364, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -282 + }, + + { + 13, -283, -283, -283, -283, -283, -283, -283, 82, -283, + 83, 83, 83, 83, 83, 83, 83, -283, -283, -283, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 365, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -283 + }, + + { + 13, -284, -284, -284, -284, -284, -284, -284, 366, -284, + 83, 83, 83, 83, 83, 83, 83, -284, -284, -284, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -284 + }, + + { + 13, -285, -285, -285, -285, -285, -285, -285, 82, -285, + 83, 83, 83, 83, 83, 83, 83, -285, -285, -285, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 367, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -285 + }, + + { + 13, -286, -286, -286, -286, -286, -286, -286, 82, -286, + 83, 83, 83, 83, 83, 83, 83, -286, -286, -286, + 368, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -286 + }, + + { + 13, -287, -287, -287, -287, -287, -287, -287, 252, -287, + + 83, 83, 83, 83, 83, 83, 83, -287, -287, -287, + 369, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -287 + }, + + { + 13, -288, -288, -288, -288, -288, -288, -288, 252, -288, + 83, 83, 83, 83, 83, 83, 83, -288, -288, -288, + 370, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -288 + }, + + { + 13, -289, -289, -289, -289, -289, -289, -289, 82, -289, + 83, 83, 83, 83, 83, 83, 83, -289, -289, -289, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 371, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -289 + + }, + + { + 13, -290, -290, -290, -290, -290, -290, -290, 82, -290, + 83, 83, 83, 83, 83, 83, 83, -290, -290, -290, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 372, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -290 + }, + + { + 13, -291, -291, -291, -291, -291, -291, -291, 82, -291, + 83, 83, 83, 83, 83, 83, 83, -291, -291, -291, + 83, 83, 83, 83, 83, 373, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -291 + }, + + { + 13, -292, -292, -292, -292, -292, -292, -292, 82, -292, + 83, 83, 83, 83, 83, 83, 83, -292, -292, -292, + 83, 83, 374, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -292 + }, + + { + 13, -293, -293, -293, -293, -293, -293, -293, 82, -293, + 83, 83, 83, 83, 83, 83, 83, -293, -293, -293, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 375, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -293 + }, + + { + 13, -294, -294, -294, -294, -294, -294, -294, 82, -294, + 83, 83, 83, 83, 83, 83, 83, -294, -294, -294, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 376, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -294 + }, + + { + 13, -295, -295, -295, -295, -295, -295, -295, 82, -295, + 83, 83, 83, 83, 83, 83, 83, -295, -295, -295, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 377, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -295 + }, + + { + 13, -296, -296, -296, -296, -296, -296, -296, 82, -296, + 83, 83, 83, 83, 83, 83, 83, -296, -296, -296, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 378, -296 + }, + + { + 13, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + 83, 83, 83, 83, 83, 83, 83, -297, -297, -297, + 379, 83, 83, 380, 83, 83, 83, 83, 381, 83, + 83, 83, 382, 83, 83, 83, 83, 383, 83, 384, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -297 + }, + + { + 13, -298, -298, -298, -298, -298, -298, -298, 385, -298, + 83, 83, 83, 83, 83, 83, 83, -298, -298, -298, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -298 + }, + + { + 13, -299, -299, -299, -299, -299, -299, -299, 82, -299, + 83, 83, 83, 83, 83, 83, 83, -299, -299, -299, + 83, 83, 386, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -299 + + }, + + { + 13, -300, -300, -300, -300, -300, -300, -300, 82, -300, + 83, 83, 83, 83, 83, 83, 83, -300, -300, -300, + 83, 83, 83, 83, 387, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -300 + }, + + { + 13, -301, -301, -301, -301, -301, -301, -301, 82, -301, + 83, 83, 83, 83, 83, 83, 83, -301, -301, -301, + 388, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -301 + }, + + { + 13, -302, -302, -302, -302, -302, -302, -302, 82, -302, + 83, 83, 83, 83, 83, 83, 83, -302, -302, -302, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 389, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -302 + }, + + { + 13, -303, -303, -303, -303, -303, -303, -303, 82, -303, + 83, 83, 83, 83, 83, 83, 83, -303, -303, -303, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 390, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -303 + }, + + { + 13, -304, -304, -304, -304, -304, -304, -304, 82, -304, + 83, 83, 83, 83, 83, 83, 83, -304, -304, -304, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 391, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -304 + }, + + { + 13, -305, -305, -305, -305, -305, -305, -305, 82, -305, + 83, 83, 83, 83, 83, 83, 83, -305, -305, -305, + 83, 83, 83, 83, 392, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -305 + }, + + { + 13, 393, 393, 393, 393, 393, 393, 393, 394, 393, + 83, 83, 83, 83, 83, 83, 83, 393, 393, 393, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 395, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 393 + }, + + { + 13, -307, -307, -307, -307, -307, -307, -307, 82, -307, + + 83, 83, 83, 83, 83, 83, 83, -307, -307, -307, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 396, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -307 + }, + + { + 13, -308, -308, -308, -308, -308, -308, -308, 82, -308, + 83, 83, 83, 83, 83, 83, 83, -308, -308, -308, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 397, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -308 + }, + + { + 13, -309, -309, -309, -309, -309, -309, -309, 82, -309, + 83, 83, 83, 83, 83, 83, 83, -309, -309, -309, + 83, 83, 83, 83, 398, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -309 + + }, + + { + 13, -310, -310, -310, -310, -310, -310, -310, 82, -310, + 83, 83, 83, 83, 83, 83, 83, -310, -310, -310, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 399, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -310 + }, + + { + 13, -311, -311, -311, -311, -311, -311, -311, 82, -311, + 83, 83, 83, 83, 83, 83, 83, -311, -311, -311, + 400, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -311 + }, + + { + 13, -312, -312, -312, -312, -312, -312, -312, 82, -312, + 83, 83, 83, 83, 83, 83, 83, -312, -312, -312, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 401, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -312 + }, + + { + 13, -313, -313, -313, -313, -313, -313, -313, 402, -313, + 83, 83, 83, 83, 83, 83, 83, -313, -313, -313, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -313 + }, + + { + 13, -314, -314, -314, -314, -314, -314, -314, 82, -314, + 83, 83, 83, 83, 83, 83, 83, -314, -314, -314, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 403, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -314 + }, + + { + 13, -315, -315, -315, -315, -315, -315, -315, 82, -315, + 83, 83, 83, 83, 83, 83, 83, -315, -315, -315, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 404, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -315 + }, + + { + 13, -316, -316, -316, -316, -316, -316, -316, 82, -316, + 83, 83, 83, 83, 83, 83, 83, -316, -316, -316, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 405, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -316 + }, + + { + 13, -317, -317, -317, -317, -317, -317, -317, 82, -317, + + 83, 83, 83, 83, 83, 83, 83, -317, -317, -317, + 83, 83, 83, 83, 406, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -317 + }, + + { + 13, -318, -318, -318, -318, -318, -318, -318, 82, -318, + 83, 83, 83, 83, 83, 83, 83, -318, -318, -318, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 407, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -318 + }, + + { + 13, -319, -319, -319, -319, -319, -319, -319, 82, -319, + 83, 83, 83, 83, 83, 83, 83, -319, -319, -319, + 83, 83, 83, 83, 408, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -319 + + }, + + { + 13, -320, -320, -320, -320, -320, -320, -320, 82, -320, + 83, 83, 83, 83, 83, 83, 83, -320, -320, -320, + 409, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -320 + }, + + { + 13, -321, -321, -321, -321, -321, -321, -321, 82, -321, + 83, 83, 83, 83, 83, 83, 83, -321, -321, -321, + 83, 83, 83, 83, 410, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -321 + }, + + { + 13, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + + -322, -322, -322, -322, -322, -322, -322, -322 + }, + + { + 13, -323, -323, -323, -323, -323, -323, -323, 322, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323 + }, + + { + 13, -324, -324, -324, 411, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324 + }, + + { + 13, -325, -325, 411, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325 + }, + + { + 13, -326, -326, -326, -326, -326, -326, -326, 82, -326, + 83, 83, 83, 83, 83, 83, 83, -326, -326, -326, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -326 + }, + + { + 13, -327, -327, -327, -327, -327, -327, -327, 82, -327, + + 83, 83, 83, 83, 83, 83, 83, -327, -327, -327, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 412, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -327 + }, + + { + 13, -328, -328, -328, -328, -328, -328, -328, 413, -328, + 83, 83, 83, 83, 83, 83, 83, -328, -328, -328, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -328 + }, + + { + 13, -329, -329, -329, -329, -329, -329, -329, 82, -329, + 83, 83, 83, 83, 83, 83, 83, -329, -329, -329, + 83, 83, 414, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -329 + + }, + + { + 13, -330, -330, -330, -330, -330, -330, -330, 82, -330, + 83, 83, 83, 83, 83, 83, 83, -330, -330, -330, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 415, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -330 + }, + + { + 13, 416, 416, 416, 416, 416, 416, 416, 417, 416, + 83, 83, 83, 83, 83, 83, 83, 416, 416, 416, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 418, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 416 + }, + + { + 13, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + + -332, -332, -332, -332, -332, -332, -332, -332 + }, + + { + 13, -333, -333, -333, -333, -333, -333, -333, 332, -333, + 83, 83, 83, 83, 83, 83, 83, -333, -333, -333, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -333 + }, + + { + 13, -334, -334, -334, -334, -334, -334, -334, 82, -334, + 83, 83, 83, 83, 83, 83, 83, -334, -334, -334, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -334 + }, + + { + 13, -335, -335, -335, -335, -335, -335, -335, 82, -335, + 83, 83, 83, 83, 83, 83, 83, -335, -335, -335, + 419, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -335 + }, + + { + 13, -336, -336, -336, -336, -336, -336, -336, 82, -336, + 83, 83, 83, 83, 83, 83, 83, -336, -336, -336, + 83, 83, 83, 83, 420, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -336 + }, + + { + 13, -337, -337, -337, -337, -337, -337, -337, 82, -337, + + 83, 83, 83, 83, 83, 83, 83, -337, -337, -337, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 421, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -337 + }, + + { + 13, -338, -338, -338, -338, -338, -338, -338, 82, -338, + 83, 83, 83, 83, 83, 83, 83, -338, -338, -338, + 83, 83, 422, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -338 + }, + + { + 13, -339, -339, -339, -339, -339, -339, -339, 82, -339, + 83, 83, 83, 83, 83, 83, 83, -339, -339, -339, + 83, 83, 83, 83, 83, 83, 83, 83, 423, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -339 + + }, + + { + 13, -340, -340, -340, -340, -340, -340, -340, 82, -340, + 83, 83, 83, 83, 83, 83, 83, -340, -340, -340, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 424, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -340 + }, + + { + 13, -341, -341, -341, -341, -341, -341, -341, 82, -341, + 83, 83, 83, 83, 83, 83, 83, -341, -341, -341, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 425, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -341 + }, + + { + 13, -342, -342, -342, -342, -342, -342, -342, 82, -342, + 83, 83, 83, 83, 83, 83, 83, -342, -342, -342, + 83, 83, 83, 83, 426, 83, 83, 83, 427, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -342 + }, + + { + 13, -343, -343, -343, -343, -343, -343, -343, 82, -343, + 83, 83, 83, 83, 83, 83, 83, -343, -343, -343, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 428, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -343 + }, + + { + 13, -344, -344, -344, -344, -344, -344, -344, 82, -344, + 83, 83, 83, 83, 83, 83, 83, -344, -344, -344, + + 83, 83, 83, 83, 83, 83, 83, 83, 429, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -344 + }, + + { + 13, -345, -345, -345, -345, -345, -345, -345, 82, -345, + 83, 83, 83, 83, 83, 83, 83, -345, -345, -345, + 430, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -345 + }, + + { + 13, -346, -346, -346, -346, -346, -346, -346, 82, -346, + 83, 83, 83, 83, 83, 83, 83, -346, -346, -346, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 431, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -346 + }, + + { + 13, -347, -347, -347, -347, -347, -347, -347, 82, -347, + + 83, 83, 83, 83, 83, 83, 83, -347, -347, -347, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 432, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -347 + }, + + { + 13, -348, -348, -348, -348, -348, -348, -348, 82, -348, + 83, 83, 83, 83, 83, 83, 83, -348, -348, -348, + 83, 83, 433, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -348 + }, + + { + 13, -349, -349, -349, -349, -349, -349, -349, 82, -349, + 83, 83, 83, 83, 83, 83, 83, -349, -349, -349, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 434, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -349 + + }, + + { + 13, -350, -350, -350, -350, -350, -350, -350, 82, -350, + 83, 83, 83, 83, 83, 83, 83, -350, -350, -350, + 83, 83, 83, 435, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -350 + }, + + { + 13, -351, -351, -351, -351, -351, -351, -351, 82, -351, + 83, 83, 83, 83, 83, 83, 83, -351, -351, -351, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 436, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -351 + }, + + { + 13, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + + -352, -352, -352, -352, -352, -352, -352, -352 + }, + + { + 13, -353, -353, -353, -353, -353, -353, -353, 352, -353, + 83, 83, 83, 83, 83, 83, 83, -353, -353, -353, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -353 + }, + + { + 13, -354, -354, -354, -354, -354, -354, -354, 82, -354, + 83, 83, 83, 83, 83, 83, 83, -354, -354, -354, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -354 + }, + + { + 13, 437, 437, 437, 437, 437, 437, 437, 438, 437, + 83, 83, 83, 83, 83, 83, 83, 437, 437, 437, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 439, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 437 + }, + + { + 13, -356, -356, -356, -356, -356, -356, -356, 82, -356, + 83, 83, 83, 440, 83, 83, 83, -356, -356, -356, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -356 + }, + + { + 13, -357, -357, -357, -357, -357, -357, -357, 82, -357, + + 83, 83, 83, 83, 83, 83, 83, -357, -357, -357, + 83, 83, 83, 83, 83, 83, 83, 83, 441, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -357 + }, + + { + 13, -358, -358, -358, -358, -358, -358, -358, 82, -358, + 83, 83, 83, 83, 83, 83, 83, -358, -358, -358, + 83, 83, 442, 83, 443, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -358 + }, + + { + 13, -359, -359, -359, -359, -359, -359, -359, 82, -359, + 83, 83, 83, 83, 83, 83, 83, -359, -359, -359, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 444, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -359 + + }, + + { + 13, -360, -360, -360, -360, -360, -360, -360, 82, -360, + 83, 83, 83, 83, 83, 83, 83, -360, -360, -360, + 83, 83, 83, 445, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -360 + }, + + { + 13, 446, 446, 446, 446, 446, 446, 446, 447, 446, + 83, 83, 83, 83, 83, 83, 83, 446, 446, 446, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 448, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 446 + }, + + { + 13, -362, -362, -362, -362, -362, -362, -362, 82, -362, + 83, 83, 83, 83, 83, 83, 83, -362, -362, -362, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 449, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -362 + }, + + { + 13, -363, -363, -363, -363, -363, -363, -363, 82, -363, + 83, 83, 83, 83, 83, 83, 83, -363, -363, -363, + 83, 83, 83, 83, 450, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -363 + }, + + { + 13, -364, -364, -364, -364, -364, -364, -364, 82, -364, + 83, 83, 83, 83, 83, 83, 83, -364, -364, -364, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 451, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -364 + }, + + { + 13, -365, -365, -365, -365, -365, -365, -365, 82, -365, + 83, 83, 83, 83, 83, 83, 83, -365, -365, -365, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 452, 83, 83, 83, -365 + }, + + { + 13, -366, -366, -366, -366, -366, -366, -366, -366, -366, + 83, 83, 83, 83, 83, 83, 83, -366, -366, -366, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 453, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -366 + }, + + { + 13, -367, -367, -367, -367, -367, -367, -367, 82, -367, + + 83, 83, 83, 83, 83, 83, 83, -367, -367, -367, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -367 + }, + + { + 13, -368, -368, -368, -368, -368, -368, -368, 82, -368, + 83, 83, 83, 83, 83, 83, 83, -368, -368, -368, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 454, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -368 + }, + + { + 13, -369, -369, -369, -369, -369, -369, -369, 82, -369, + 83, 83, 83, 83, 83, 83, 83, -369, -369, -369, + 83, 83, 455, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -369 + + }, + + { + 13, -370, -370, -370, -370, -370, -370, -370, 82, -370, + 83, 83, 83, 83, 83, 83, 83, -370, -370, -370, + 83, 83, 456, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -370 + }, + + { + 13, -371, -371, -371, -371, -371, -371, -371, 457, -371, + 83, 83, 83, 83, 83, 83, 83, -371, -371, -371, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -371 + }, + + { + 13, -372, -372, -372, -372, -372, -372, -372, 82, -372, + 83, 83, 83, 83, 83, 83, 83, -372, -372, -372, + 83, 83, 83, 83, 458, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -372 + }, + + { + 13, -373, -373, -373, -373, -373, -373, -373, 82, -373, + 83, 83, 83, 83, 83, 83, 83, -373, -373, -373, + 83, 83, 83, 83, 83, 83, 83, 83, 459, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -373 + }, + + { + 13, -374, -374, -374, -374, -374, -374, -374, 82, -374, + 83, 83, 83, 83, 83, 83, 83, -374, -374, -374, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 460, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -374 + }, + + { + 13, 461, 461, 461, 461, 461, 461, 461, 462, 461, + 83, 83, 83, 83, 83, 83, 83, 461, 461, 461, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 463, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 461 + }, + + { + 13, -376, -376, -376, -376, -376, -376, -376, 82, -376, + 83, 83, 83, 83, 83, 83, 83, -376, -376, -376, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 464, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -376 + }, + + { + 13, -377, -377, -377, -377, -377, -377, -377, 82, -377, + + 83, 83, 83, 83, 83, 83, 83, -377, -377, -377, + 83, 83, 83, 83, 83, 83, 83, 83, 465, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -377 + }, + + { + 13, -378, -378, -378, -378, -378, -378, -378, 82, -378, + 83, 83, 83, 83, 83, 83, 83, -378, -378, -378, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 466, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -378 + }, + + { + 13, -379, -379, -379, -379, -379, -379, -379, 82, -379, + 83, 83, 83, 83, 83, 83, 83, -379, -379, -379, + 83, 83, 467, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -379 + + }, + + { + 13, -380, -380, -380, -380, -380, -380, -380, 82, -380, + 83, 83, 83, 83, 83, 83, 83, -380, -380, -380, + 83, 83, 83, 83, 468, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -380 + }, + + { + 13, -381, -381, -381, -381, -381, -381, -381, 82, -381, + 83, 83, 83, 83, 83, 83, 83, -381, -381, -381, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 469, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -381 + }, + + { + 13, -382, -382, -382, -382, -382, -382, -382, 82, -382, + 83, 83, 83, 83, 83, 83, 83, -382, -382, -382, + 83, 83, 83, 83, 83, 83, 83, 83, 470, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -382 + }, + + { + 13, -383, -383, -383, -383, -383, -383, -383, 82, -383, + 83, 83, 83, 83, 83, 83, 83, -383, -383, -383, + 83, 83, 83, 83, 471, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -383 + }, + + { + 13, -384, -384, -384, -384, -384, -384, -384, 82, -384, + 83, 83, 83, 83, 83, 83, 83, -384, -384, -384, + + 472, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -384 + }, + + { + 13, -385, -385, -385, -385, -385, -385, -385, -385, -385, + 83, 83, 83, 83, 83, 83, 83, -385, -385, -385, + 83, 83, 83, 83, 83, 83, 83, 83, 473, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -385 + }, + + { + 13, -386, -386, -386, -386, -386, -386, -386, 82, -386, + 83, 83, 83, 83, 83, 83, 83, -386, -386, -386, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 474, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -386 + }, + + { + 13, -387, -387, -387, -387, -387, -387, -387, 82, -387, + + 83, 83, 83, 83, 83, 83, 83, -387, -387, -387, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 475, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -387 + }, + + { + 13, -388, -388, -388, -388, -388, -388, -388, 82, -388, + 83, 83, 83, 83, 83, 83, 83, -388, -388, -388, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 476, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -388 + }, + + { + 13, -389, -389, -389, -389, -389, -389, -389, 82, -389, + 83, 83, 83, 83, 83, 83, 83, -389, -389, -389, + 83, 83, 477, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -389 + + }, + + { + 13, -390, -390, -390, -390, -390, -390, -390, 82, -390, + 83, 83, 83, 83, 83, 83, 83, -390, -390, -390, + 83, 83, 83, 83, 478, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -390 + }, + + { + 13, -391, -391, -391, -391, -391, -391, -391, 82, -391, + 83, 83, 83, 83, 83, 83, 83, -391, -391, -391, + 83, 83, 83, 83, 83, 83, 83, 83, 479, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -391 + }, + + { + 13, -392, -392, -392, -392, -392, -392, -392, 82, -392, + 83, 83, 83, 83, 83, 83, 83, -392, -392, -392, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 480, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -392 + }, + + { + 13, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393 + }, + + { + 13, -394, -394, -394, -394, -394, -394, -394, 393, -394, + 83, 83, 83, 83, 83, 83, 83, -394, -394, -394, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -394 + }, + + { + 13, -395, -395, -395, -395, -395, -395, -395, 82, -395, + 83, 83, 83, 83, 83, 83, 83, -395, -395, -395, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -395 + }, + + { + 13, -396, -396, -396, -396, -396, -396, -396, 82, -396, + 83, 83, 83, 83, 83, 83, 83, -396, -396, -396, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 481, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -396 + }, + + { + 13, -397, -397, -397, -397, -397, -397, -397, 82, -397, + + 83, 83, 83, 83, 83, 83, 83, -397, -397, -397, + 83, 83, 83, 83, 83, 83, 482, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -397 + }, + + { + 13, -398, -398, -398, -398, -398, -398, -398, 82, -398, + 83, 83, 83, 83, 83, 83, 83, -398, -398, -398, + 83, 83, 483, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -398 + }, + + { + 13, -399, -399, -399, -399, -399, -399, -399, 82, -399, + 83, 83, 83, 83, 83, 83, 83, -399, -399, -399, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 484, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -399 + + }, + + { + 13, -400, -400, -400, -400, -400, -400, -400, 82, -400, + 83, 83, 83, 83, 83, 83, 83, -400, -400, -400, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 485, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -400 + }, + + { + 13, -401, -401, -401, -401, -401, -401, -401, 82, -401, + 83, 83, 83, 83, 83, 83, 83, -401, -401, -401, + 486, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -401 + }, + + { + 13, -402, -402, -402, -402, -402, -402, -402, -402, -402, + 83, 83, 83, 83, 83, 83, 83, -402, -402, -402, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 487, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -402 + }, + + { + 13, -403, -403, -403, -403, -403, -403, -403, 82, -403, + 83, 83, 83, 83, 83, 83, 83, -403, -403, -403, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 488, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -403 + }, + + { + 13, -404, -404, -404, -404, -404, -404, -404, 82, -404, + 83, 83, 83, 83, 83, 83, 83, -404, -404, -404, + + 83, 83, 83, 83, 489, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -404 + }, + + { + 13, 490, 490, 490, 490, 490, 490, 490, 491, 490, + 83, 83, 83, 83, 83, 83, 83, 490, 490, 490, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 492, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 490 + }, + + { + 13, -406, -406, -406, -406, -406, -406, -406, 82, -406, + 83, 83, 83, 83, 83, 83, 83, -406, -406, -406, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 493, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -406 + }, + + { + 13, -407, -407, -407, -407, -407, -407, -407, 82, -407, + + 83, 83, 83, 83, 83, 83, 83, -407, -407, -407, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 494, + 83, 83, 83, 83, 83, 83, 83, -407 + }, + + { + 13, 495, 495, 495, 495, 495, 495, 495, 496, 495, + 83, 83, 83, 83, 83, 83, 83, 495, 495, 495, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 497, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 495 + }, + + { + 13, -409, -409, -409, -409, -409, -409, -409, 82, -409, + 83, 83, 83, 83, 83, 83, 83, -409, -409, -409, + 83, 498, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 499, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -409 + + }, + + { + 13, -410, -410, -410, -410, -410, -410, -410, 500, -410, + 83, 83, 83, 83, 83, 83, 83, -410, -410, -410, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -410 + }, + + { + 13, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411 + }, + + { + 13, 501, 501, 501, 501, 501, 501, 501, 502, 501, + 83, 83, 83, 83, 83, 83, 83, 501, 501, 501, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 503, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 501 + }, + + { + 13, -413, -413, -413, -413, -413, -413, -413, -413, -413, + 83, 83, 83, 83, 83, 83, 83, -413, -413, -413, + 83, 83, 504, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -413 + }, + + { + 13, -414, -414, -414, -414, -414, -414, -414, 82, -414, + 83, 83, 83, 83, 83, 83, 83, -414, -414, -414, + + 505, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -414 + }, + + { + 13, -415, -415, -415, -415, -415, -415, -415, 82, -415, + 83, 83, 83, 83, 83, 83, 83, -415, -415, -415, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 506, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -415 + }, + + { + 13, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416 + }, + + { + 13, -417, -417, -417, -417, -417, -417, -417, 416, -417, + + 83, 83, 83, 83, 83, 83, 83, -417, -417, -417, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -417 + }, + + { + 13, -418, -418, -418, -418, -418, -418, -418, 82, -418, + 83, 83, 83, 83, 83, 83, 83, -418, -418, -418, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -418 + }, + + { + 13, -419, -419, -419, -419, -419, -419, -419, 82, -419, + 83, 83, 83, 83, 83, 83, 83, -419, -419, -419, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -419 + + }, + + { + 13, -420, -420, -420, -420, -420, -420, -420, 82, -420, + 83, 83, 83, 83, 83, 83, 83, -420, -420, -420, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -420 + }, + + { + 13, -421, -421, -421, -421, -421, -421, -421, 82, -421, + 83, 83, 83, 83, 83, 83, 83, -421, -421, -421, + 83, 83, 83, 83, 507, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -421 + }, + + { + 13, -422, -422, -422, -422, -422, -422, -422, 82, -422, + 83, 83, 83, 83, 83, 83, 83, -422, -422, -422, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 508, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -422 + }, + + { + 13, -423, -423, -423, -423, -423, -423, -423, 82, -423, + 83, 83, 83, 83, 83, 83, 83, -423, -423, -423, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 509, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -423 + }, + + { + 13, -424, -424, -424, -424, -424, -424, -424, 82, -424, + 83, 83, 83, 83, 83, 83, 83, -424, -424, -424, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 510, 83, 83, 83, -424 + }, + + { + 13, -425, -425, -425, -425, -425, -425, -425, 82, -425, + 83, 83, 83, 83, 83, 83, 83, -425, -425, -425, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -425 + }, + + { + 13, -426, -426, -426, -426, -426, -426, -426, 82, -426, + 83, 83, 83, 83, 83, 83, 83, -426, -426, -426, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -426 + }, + + { + 13, -427, -427, -427, -427, -427, -427, -427, 82, -427, + + 83, 83, 83, 83, 83, 83, 83, -427, -427, -427, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 511, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -427 + }, + + { + 13, 512, 512, 512, 512, 512, 512, 512, 513, 512, + 83, 83, 83, 83, 83, 83, 83, 512, 512, 512, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 514, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 512 + }, + + { + 13, -429, -429, -429, -429, -429, -429, -429, 82, -429, + 83, 83, 83, 83, 83, 83, 83, -429, -429, -429, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 515, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -429 + + }, + + { + 13, -430, -430, -430, -430, -430, -430, -430, 82, -430, + 83, 83, 83, 83, 83, 83, 83, -430, -430, -430, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 516, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -430 + }, + + { + 13, -431, -431, -431, -431, -431, -431, -431, 82, -431, + 83, 83, 83, 83, 83, 83, 83, -431, -431, -431, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 517, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -431 + }, + + { + 13, -432, -432, -432, -432, -432, -432, -432, 82, -432, + 83, 83, 83, 83, 83, 83, 83, -432, -432, -432, + 518, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -432 + }, + + { + 13, -433, -433, -433, -433, -433, -433, -433, 82, -433, + 83, 83, 83, 83, 83, 83, 83, -433, -433, -433, + 83, 83, 83, 83, 83, 83, 83, 83, 519, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -433 + }, + + { + 13, -434, -434, -434, -434, -434, -434, -434, 82, -434, + 83, 83, 83, 83, 83, 83, 83, -434, -434, -434, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 520, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -434 + }, + + { + 13, -435, -435, -435, -435, -435, -435, -435, 82, -435, + 83, 83, 83, 83, 83, 83, 83, -435, -435, -435, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 521, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -435 + }, + + { + 13, -436, -436, -436, -436, -436, -436, -436, 82, -436, + 83, 83, 83, 83, 83, 83, 83, -436, -436, -436, + 522, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -436 + }, + + { + 13, -437, -437, -437, -437, -437, -437, -437, -437, -437, + + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437 + }, + + { + 13, -438, -438, -438, -438, -438, -438, -438, 437, -438, + 83, 83, 83, 83, 83, 83, 83, -438, -438, -438, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -438 + }, + + { + 13, -439, -439, -439, -439, -439, -439, -439, 82, -439, + 83, 83, 83, 83, 83, 83, 83, -439, -439, -439, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -439 + + }, + + { + 13, -440, -440, -440, -440, -440, -440, -440, 82, -440, + 83, 83, 523, 83, 83, 83, 83, -440, -440, -440, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -440 + }, + + { + 13, -441, -441, -441, -441, -441, -441, -441, 82, -441, + 83, 83, 83, 83, 83, 83, 83, -441, -441, -441, + 83, 83, 83, 83, 83, 524, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -441 + }, + + { + 13, -442, -442, -442, -442, -442, -442, -442, 82, -442, + 83, 83, 83, 83, 83, 83, 83, -442, -442, -442, + 83, 83, 83, 83, 83, 83, 83, 83, 525, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -442 + }, + + { + 13, -443, -443, -443, -443, -443, -443, -443, 82, -443, + 83, 83, 83, 83, 83, 83, 83, -443, -443, -443, + 83, 83, 83, 526, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -443 + }, + + { + 13, -444, -444, -444, -444, -444, -444, -444, 82, -444, + 83, 83, 83, 83, 83, 83, 83, -444, -444, -444, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 527, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -444 + }, + + { + 13, -445, -445, -445, -445, -445, -445, -445, 82, -445, + 83, 83, 83, 83, 83, 83, 83, -445, -445, -445, + 83, 83, 83, 83, 528, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -445 + }, + + { + 13, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446 + }, + + { + 13, -447, -447, -447, -447, -447, -447, -447, 446, -447, + + 83, 83, 83, 83, 83, 83, 83, -447, -447, -447, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -447 + }, + + { + 13, -448, -448, -448, -448, -448, -448, -448, 82, -448, + 83, 83, 83, 83, 83, 83, 83, -448, -448, -448, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -448 + }, + + { + 13, -449, -449, -449, -449, -449, -449, -449, 82, -449, + 83, 83, 83, 83, 83, 83, 83, -449, -449, -449, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 529, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -449 + + }, + + { + 13, -450, -450, -450, -450, -450, -450, -450, 82, -450, + 83, 83, 83, 83, 83, 83, 83, -450, -450, -450, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 530, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -450 + }, + + { + 13, -451, -451, -451, -451, -451, -451, -451, 82, -451, + 83, 83, 83, 83, 83, 83, 83, -451, -451, -451, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 531, 83, 83, 83, -451 + }, + + { + 13, -452, -452, -452, -452, -452, -452, -452, 82, -452, + 83, 83, 83, 83, 83, 83, 83, -452, -452, -452, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 532, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -452 + }, + + { + 13, -453, -453, -453, -453, -453, -453, -453, 82, -453, + 83, 83, 83, 83, 83, 83, 83, -453, -453, -453, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 533, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -453 + }, + + { + 13, -454, -454, -454, -454, -454, -454, -454, 82, -454, + 83, 83, 83, 83, 83, 83, 83, -454, -454, -454, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 534, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -454 + }, + + { + 13, -455, -455, -455, -455, -455, -455, -455, 82, -455, + 83, 83, 83, 83, 83, 83, 83, -455, -455, -455, + 83, 83, 535, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -455 + }, + + { + 13, -456, -456, -456, -456, -456, -456, -456, 82, -456, + 83, 83, 83, 83, 83, 83, 83, -456, -456, -456, + 83, 83, 536, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -456 + }, + + { + 13, -457, -457, -457, -457, -457, -457, -457, -457, -457, + + 83, 83, 83, 83, 83, 83, 83, -457, -457, -457, + 83, 83, 83, 83, 83, 83, 83, 83, 537, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -457 + }, + + { + 13, 538, 538, 538, 538, 538, 538, 538, 539, 538, + 83, 83, 83, 83, 83, 83, 83, 538, 538, 538, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 540, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 538 + }, + + { + 13, -459, -459, -459, -459, -459, -459, -459, 82, -459, + 83, 83, 83, 83, 83, 83, 83, -459, -459, -459, + 83, 83, 541, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -459 + + }, + + { + 13, 542, 542, 542, 542, 542, 542, 542, 543, 542, + 83, 83, 83, 83, 83, 83, 83, 542, 542, 542, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 544, 83, + 83, 83, 83, 83, 83, 83, 545, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 542 + }, + + { + 13, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461 + }, + + { + 13, -462, -462, -462, -462, -462, -462, -462, 461, -462, + 83, 83, 83, 83, 83, 83, 83, -462, -462, -462, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -462 + }, + + { + 13, -463, -463, -463, -463, -463, -463, -463, 82, -463, + 83, 83, 83, 83, 83, 83, 83, -463, -463, -463, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -463 + }, + + { + 13, -464, -464, -464, -464, -464, -464, -464, 82, -464, + 83, 83, 83, 83, 83, 83, 83, -464, -464, -464, + + 546, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -464 + }, + + { + 13, -465, -465, -465, -465, -465, -465, -465, 82, -465, + 83, 83, 83, 83, 83, 83, 83, -465, -465, -465, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 547, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -465 + }, + + { + 13, 548, 548, 548, 548, 548, 548, 548, 549, 548, + 83, 83, 83, 83, 83, 83, 83, 548, 548, 548, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 550, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 548 + }, + + { + 13, -467, -467, -467, -467, -467, -467, -467, 82, -467, + + 83, 83, 83, 83, 83, 83, 83, -467, -467, -467, + 83, 83, 551, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -467 + }, + + { + 13, -468, -468, -468, -468, -468, -468, -468, 82, -468, + 83, 83, 83, 83, 83, 83, 83, -468, -468, -468, + 83, 83, 83, 83, 83, 552, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -468 + }, + + { + 13, -469, -469, -469, -469, -469, -469, -469, 82, -469, + 83, 83, 83, 83, 83, 83, 83, -469, -469, -469, + 83, 83, 83, 553, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -469 + + }, + + { + 13, -470, -470, -470, -470, -470, -470, -470, 82, -470, + 83, 83, 83, 83, 83, 83, 83, -470, -470, -470, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 554, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -470 + }, + + { + 13, -471, -471, -471, -471, -471, -471, -471, 82, -471, + 83, 83, 83, 83, 83, 83, 83, -471, -471, -471, + 83, 83, 83, 83, 83, 555, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -471 + }, + + { + 13, -472, -472, -472, -472, -472, -472, -472, 82, -472, + 83, 83, 83, 83, 83, 83, 83, -472, -472, -472, + 83, 83, 83, 83, 83, 83, 556, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -472 + }, + + { + 13, -473, -473, -473, -473, -473, -473, -473, 82, -473, + 83, 83, 83, 83, 83, 83, 83, -473, -473, -473, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 557, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -473 + }, + + { + 13, -474, -474, -474, -474, -474, -474, -474, 558, -474, + 83, 83, 83, 83, 83, 83, 83, -474, -474, -474, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -474 + }, + + { + 13, -475, -475, -475, -475, -475, -475, -475, 82, -475, + 83, 83, 83, 83, 83, 83, 83, -475, -475, -475, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -475 + }, + + { + 13, -476, -476, -476, -476, -476, -476, -476, 82, -476, + 83, 83, 83, 83, 83, 83, 83, -476, -476, -476, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -476 + }, + + { + 13, -477, -477, -477, -477, -477, -477, -477, 82, -477, + + 83, 83, 83, 83, 83, 83, 83, -477, -477, -477, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 559, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -477 + }, + + { + 13, -478, -478, -478, -478, -478, -478, -478, 82, -478, + 83, 83, 83, 83, 83, 83, 83, -478, -478, -478, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 560, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -478 + }, + + { + 13, -479, -479, -479, -479, -479, -479, -479, 82, -479, + 83, 83, 83, 83, 83, 83, 83, -479, -479, -479, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 561, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -479 + + }, + + { + 13, -480, -480, -480, -480, -480, -480, -480, 82, -480, + 83, 83, 83, 83, 83, 83, 83, -480, -480, -480, + 83, 83, 562, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -480 + }, + + { + 13, 563, 563, 563, 563, 563, 563, 563, 564, 563, + 83, 83, 83, 83, 83, 83, 83, 563, 563, 563, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 565, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 563 + }, + + { + 13, 566, 566, 566, 566, 566, 566, 566, 567, 566, + 83, 83, 83, 83, 83, 83, 83, 566, 566, 566, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 568, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 566 + }, + + { + 13, -483, -483, -483, -483, -483, -483, -483, 82, -483, + 83, 83, 83, 83, 83, 83, 83, -483, -483, -483, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 569, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -483 + }, + + { + 13, -484, -484, -484, -484, -484, -484, -484, 82, -484, + 83, 83, 83, 83, 83, 83, 83, -484, -484, -484, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 570, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -484 + }, + + { + 13, 571, 571, 571, 571, 571, 571, 571, 572, 571, + 83, 83, 83, 83, 83, 83, 83, 571, 571, 571, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 573, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 571 + }, + + { + 13, -486, -486, -486, -486, -486, -486, -486, 82, -486, + 83, 83, 83, 83, 83, 83, 83, -486, -486, -486, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 574, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -486 + }, + + { + 13, -487, -487, -487, -487, -487, -487, -487, 82, -487, + + 83, 83, 83, 83, 83, 83, 83, -487, -487, -487, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 575, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -487 + }, + + { + 13, -488, -488, -488, -488, -488, -488, -488, 82, -488, + 83, 83, 83, 83, 83, 83, 83, -488, -488, -488, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -488 + }, + + { + 13, -489, -489, -489, -489, -489, -489, -489, 82, -489, + 83, 83, 83, 83, 83, 83, 83, -489, -489, -489, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 577, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -489 + + }, + + { + 13, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490 + }, + + { + 13, -491, -491, -491, -491, -491, -491, -491, 490, -491, + 83, 83, 83, 83, 83, 83, 83, -491, -491, -491, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -491 + }, + + { + 13, -492, -492, -492, -492, -492, -492, -492, 82, -492, + 83, 83, 83, 83, 83, 83, 83, -492, -492, -492, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -492 + }, + + { + 13, -493, -493, -493, -493, -493, -493, -493, 82, -493, + 83, 83, 83, 83, 83, 83, 83, -493, -493, -493, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 578, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -493 + }, + + { + 13, -494, -494, -494, -494, -494, -494, -494, 82, -494, + 83, 83, 83, 83, 83, 83, 83, -494, -494, -494, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 579, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -494 + }, + + { + 13, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495 + }, + + { + 13, -496, -496, -496, -496, -496, -496, -496, 495, -496, + 83, 83, 83, 83, 83, 83, 83, -496, -496, -496, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -496 + }, + + { + 13, -497, -497, -497, -497, -497, -497, -497, 82, -497, + + 83, 83, 83, 83, 83, 83, 83, -497, -497, -497, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -497 + }, + + { + 13, -498, -498, -498, -498, -498, -498, -498, 82, -498, + 83, 83, 83, 83, 83, 83, 83, -498, -498, -498, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 580, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -498 + }, + + { + 13, -499, -499, -499, -499, -499, -499, -499, 82, -499, + 83, 83, 83, 83, 83, 83, 83, -499, -499, -499, + 83, 83, 83, 83, 83, 83, 83, 83, 581, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -499 + + }, + + { + 13, -500, -500, -500, -500, -500, -500, -500, -500, -500, + 83, 83, 83, 83, 83, 83, 83, -500, -500, -500, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 582, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -500 + }, + + { + 13, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501 + }, + + { + 13, -502, -502, -502, -502, -502, -502, -502, 501, -502, + 83, 83, 83, 83, 83, 83, 83, -502, -502, -502, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -502 + }, + + { + 13, -503, -503, -503, -503, -503, -503, -503, 82, -503, + 83, 83, 83, 83, 83, 83, 83, -503, -503, -503, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -503 + }, + + { + 13, -504, -504, -504, -504, -504, -504, -504, 82, -504, + 83, 83, 83, 83, 83, 83, 83, -504, -504, -504, + + 583, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -504 + }, + + { + 13, -505, -505, -505, -505, -505, -505, -505, 82, -505, + 83, 83, 83, 83, 83, 83, 83, -505, -505, -505, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 584, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -505 + }, + + { + 13, -506, -506, -506, -506, -506, -506, -506, 82, -506, + 83, 83, 83, 83, 83, 83, 83, -506, -506, -506, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 585, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -506 + }, + + { + 13, -507, -507, -507, -507, -507, -507, -507, 82, -507, + + 83, 83, 83, 83, 83, 83, 83, -507, -507, -507, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 586, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -507 + }, + + { + 13, -508, -508, -508, -508, -508, -508, -508, 587, -508, + 83, 83, 83, 83, 83, 83, 83, -508, -508, -508, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -508 + }, + + { + 13, -509, -509, -509, -509, -509, -509, -509, 82, -509, + 83, 83, 83, 83, 83, 83, 83, -509, -509, -509, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 588, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -509 + + }, + + { + 13, -510, -510, -510, -510, -510, -510, -510, 82, -510, + 83, 83, 83, 589, 83, 83, 590, -510, -510, -510, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -510 + }, + + { + 13, -511, -511, -511, -511, -511, -511, -511, 82, -511, + 83, 83, 83, 83, 83, 83, 83, -511, -511, -511, + 83, 83, 83, 83, 83, 83, 83, 83, 591, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -511 + }, + + { + 13, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + + -512, -512, -512, -512, -512, -512, -512, -512 + }, + + { + 13, -513, -513, -513, -513, -513, -513, -513, 512, -513, + 83, 83, 83, 83, 83, 83, 83, -513, -513, -513, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -513 + }, + + { + 13, -514, -514, -514, -514, -514, -514, -514, 82, -514, + 83, 83, 83, 83, 83, 83, 83, -514, -514, -514, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -514 + }, + + { + 13, -515, -515, -515, -515, -515, -515, -515, 82, -515, + 83, 83, 83, 83, 83, 83, 83, -515, -515, -515, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 592, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -515 + }, + + { + 13, -516, -516, -516, -516, -516, -516, -516, 593, -516, + 83, 83, 83, 83, 83, 83, 83, -516, -516, -516, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -516 + }, + + { + 13, -517, -517, -517, -517, -517, -517, -517, 82, -517, + + 83, 83, 83, 83, 83, 83, 83, -517, -517, -517, + 83, 83, 83, 83, 83, 83, 83, 83, 594, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -517 + }, + + { + 13, -518, -518, -518, -518, -518, -518, -518, 82, -518, + 83, 83, 83, 83, 83, 83, 83, -518, -518, -518, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 595, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -518 + }, + + { + 13, -519, -519, -519, -519, -519, -519, -519, 82, -519, + 83, 83, 83, 83, 83, 83, 83, -519, -519, -519, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -519 + + }, + + { + 13, -520, -520, -520, -520, -520, -520, -520, 82, -520, + 83, 83, 83, 83, 83, 83, 83, -520, -520, -520, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -520 + }, + + { + 13, 596, 596, 596, 596, 596, 596, 596, 597, 596, + 83, 83, 83, 83, 83, 83, 83, 596, 596, 596, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 598, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 596 + }, + + { + 13, -522, -522, -522, -522, -522, -522, -522, 82, -522, + 83, 83, 83, 83, 83, 83, 83, -522, -522, -522, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -522 + }, + + { + 13, 599, 599, 599, 599, 599, 599, 599, 600, 599, + 83, 83, 83, 83, 83, 83, 83, 599, 599, 599, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 601, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 599 + }, + + { + 13, -524, -524, -524, -524, -524, -524, -524, 82, -524, + 83, 83, 83, 83, 83, 83, 83, -524, -524, -524, + + 83, 83, 83, 83, 83, 83, 83, 83, 602, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -524 + }, + + { + 13, -525, -525, -525, -525, -525, -525, -525, 82, -525, + 83, 83, 83, 83, 83, 83, 83, -525, -525, -525, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 603, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -525 + }, + + { + 13, 604, 604, 604, 604, 604, 604, 604, 605, 604, + 83, 83, 83, 83, 83, 83, 83, 604, 604, 604, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 606, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 604 + }, + + { + 13, 607, 607, 607, 607, 607, 607, 607, 608, 607, + + 83, 83, 83, 83, 83, 83, 83, 607, 607, 607, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 609, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 607 + }, + + { + 13, -528, -528, -528, -528, -528, -528, -528, 82, -528, + 83, 83, 83, 83, 83, 83, 83, -528, -528, -528, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 610, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -528 + }, + + { + 13, -529, -529, -529, -529, -529, -529, -529, 611, -529, + 83, 83, 83, 83, 83, 83, 83, -529, -529, -529, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -529 + + }, + + { + 13, 612, 612, 612, 612, 612, 612, 612, 613, 612, + 83, 83, 83, 83, 83, 83, 83, 612, 612, 612, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 614, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 612 + }, + + { + 13, -531, -531, -531, -531, -531, -531, -531, 82, -531, + 83, 83, 83, 615, 83, 83, 616, -531, -531, -531, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -531 + }, + + { + 13, -532, -532, -532, -532, -532, -532, -532, 82, -532, + 83, 83, 83, 83, 83, 83, 83, -532, -532, -532, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 617, 83, 83, -532 + }, + + { + 13, -533, -533, -533, -533, -533, -533, -533, 82, -533, + 83, 83, 83, 83, 83, 83, 83, -533, -533, -533, + 83, 83, 83, 618, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -533 + }, + + { + 13, -534, -534, -534, -534, -534, -534, -534, 82, -534, + 83, 83, 83, 83, 83, 83, 83, -534, -534, -534, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 619, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -534 + }, + + { + 13, -535, -535, -535, -535, -535, -535, -535, 82, -535, + 83, 83, 83, 83, 83, 83, 83, -535, -535, -535, + 83, 83, 83, 83, 620, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -535 + }, + + { + 13, -536, -536, -536, -536, -536, -536, -536, 82, -536, + 83, 83, 83, 83, 83, 83, 83, -536, -536, -536, + 83, 83, 83, 83, 621, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -536 + }, + + { + 13, -537, -537, -537, -537, -537, -537, -537, 82, -537, + + 83, 83, 83, 83, 83, 83, 83, -537, -537, -537, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 622, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -537 + }, + + { + 13, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538 + }, + + { + 13, -539, -539, -539, -539, -539, -539, -539, 538, -539, + 83, 83, 83, 83, 83, 83, 83, -539, -539, -539, + 83, 83, 623, 83, 83, 83, 83, 83, 624, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -539 + + }, + + { + 13, -540, -540, -540, -540, -540, -540, -540, 82, -540, + 83, 83, 83, 83, 83, 83, 83, -540, -540, -540, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -540 + }, + + { + 13, -541, -541, -541, -541, -541, -541, -541, 82, -541, + 83, 83, 83, 83, 83, 83, 83, -541, -541, -541, + 625, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -541 + }, + + { + 13, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + + -542, -542, -542, -542, -542, -542, -542, -542 + }, + + { + 13, -543, -543, -543, -543, -543, -543, -543, 542, -543, + 83, 83, 83, 83, 83, 83, 83, -543, -543, -543, + 83, 83, 83, 83, 83, 83, 626, 83, 627, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 628, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -543 + }, + + { + 13, 629, 629, 629, 629, 629, 629, 629, 630, 629, + 83, 83, 83, 83, 83, 83, 83, 629, 629, 629, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 631, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 629 + }, + + { + 13, -545, -545, -545, -545, -545, -545, -545, 82, -545, + 83, 83, 83, 83, 83, 83, 83, -545, -545, -545, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -545 + }, + + { + 13, -546, -546, -546, -546, -546, -546, -546, 82, -546, + 83, 83, 83, 83, 83, 83, 83, -546, -546, -546, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -546 + }, + + { + 13, -547, -547, -547, -547, -547, -547, -547, 82, -547, + + 83, 83, 83, 83, 83, 83, 83, -547, -547, -547, + 632, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -547 + }, + + { + 13, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548 + }, + + { + 13, -549, -549, -549, -549, -549, -549, -549, 548, -549, + 83, 83, 83, 83, 83, 83, 83, -549, -549, -549, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -549 + + }, + + { + 13, -550, -550, -550, -550, -550, -550, -550, 82, -550, + 83, 83, 83, 83, 83, 83, 83, -550, -550, -550, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -550 + }, + + { + 13, -551, -551, -551, -551, -551, -551, -551, 82, -551, + 83, 83, 83, 83, 83, 83, 83, -551, -551, -551, + 83, 83, 83, 83, 633, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -551 + }, + + { + 13, -552, -552, -552, -552, -552, -552, -552, 82, -552, + 83, 83, 83, 83, 83, 83, 83, -552, -552, -552, + 83, 83, 83, 83, 83, 83, 83, 83, 634, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -552 + }, + + { + 13, -553, -553, -553, -553, -553, -553, -553, 82, -553, + 83, 83, 83, 83, 83, 83, 83, -553, -553, -553, + 83, 83, 83, 83, 635, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -553 + }, + + { + 13, -554, -554, -554, -554, -554, -554, -554, 636, -554, + 83, 83, 83, 83, 83, 83, 83, -554, -554, -554, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -554 + }, + + { + 13, -555, -555, -555, -555, -555, -555, -555, 82, -555, + 83, 83, 83, 83, 83, 83, 83, -555, -555, -555, + 83, 83, 83, 83, 637, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -555 + }, + + { + 13, 638, 638, 638, 638, 638, 638, 638, 639, 638, + 83, 83, 83, 83, 83, 83, 83, 638, 638, 638, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 640, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 638 + }, + + { + 13, -557, -557, -557, -557, -557, -557, -557, 82, -557, + + 83, 83, 83, 83, 83, 83, 83, -557, -557, -557, + 83, 83, 83, 83, 83, 641, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -557 + }, + + { + 13, -558, -558, -558, -558, -558, -558, -558, -558, -558, + 83, 83, 83, 83, 83, 83, 83, -558, -558, -558, + 642, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -558 + }, + + { + 13, -559, -559, -559, -559, -559, -559, -559, 643, -559, + 83, 83, 83, 83, 83, 83, 83, -559, -559, -559, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -559 + + }, + + { + 13, -560, -560, -560, -560, -560, -560, -560, 82, -560, + 83, 83, 83, 83, 83, 83, 83, -560, -560, -560, + 83, 83, 644, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -560 + }, + + { + 13, -561, -561, -561, -561, -561, -561, -561, 82, -561, + 83, 83, 83, 83, 83, 83, 83, -561, -561, -561, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 645, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -561 + }, + + { + 13, -562, -562, -562, -562, -562, -562, -562, 82, -562, + 83, 83, 83, 83, 83, 83, 83, -562, -562, -562, + 83, 83, 83, 83, 646, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -562 + }, + + { + 13, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563 + }, + + { + 13, -564, -564, -564, -564, -564, -564, -564, 563, -564, + 83, 83, 83, 83, 83, 83, 83, -564, -564, -564, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -564 + }, + + { + 13, -565, -565, -565, -565, -565, -565, -565, 82, -565, + 83, 83, 83, 83, 83, 83, 83, -565, -565, -565, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -565 + }, + + { + 13, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566 + }, + + { + 13, -567, -567, -567, -567, -567, -567, -567, 566, -567, + + 83, 83, 83, 83, 83, 83, 83, -567, -567, -567, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -567 + }, + + { + 13, -568, -568, -568, -568, -568, -568, -568, 82, -568, + 83, 83, 83, 83, 83, 83, 83, -568, -568, -568, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -568 + }, + + { + 13, -569, -569, -569, -569, -569, -569, -569, 647, -569, + 83, 83, 83, 83, 83, 83, 83, -569, -569, -569, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -569 + + }, + + { + 13, -570, -570, -570, -570, -570, -570, -570, 82, -570, + 83, 83, 83, 83, 83, 83, 83, -570, -570, -570, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 648, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -570 + }, + + { + 13, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571 + }, + + { + 13, -572, -572, -572, -572, -572, -572, -572, 571, -572, + 83, 83, 83, 83, 83, 83, 83, -572, -572, -572, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -572 + }, + + { + 13, -573, -573, -573, -573, -573, -573, -573, 82, -573, + 83, 83, 83, 83, 83, 83, 83, -573, -573, -573, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -573 + }, + + { + 13, -574, -574, -574, -574, -574, -574, -574, 649, -574, + 83, 83, 83, 83, 83, 83, 83, -574, -574, -574, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -574 + }, + + { + 13, -575, -575, -575, -575, -575, -575, -575, 82, -575, + 83, 83, 83, 83, 83, 83, 83, -575, -575, -575, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 650, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -575 + }, + + { + 13, -576, -576, -576, -576, -576, -576, -576, 82, -576, + 83, 83, 83, 83, 83, 83, 83, -576, -576, -576, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 651, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -576 + }, + + { + 13, -577, -577, -577, -577, -577, -577, -577, 82, -577, + + 83, 83, 83, 83, 83, 83, 83, -577, -577, -577, + 83, 83, 83, 83, 652, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -577 + }, + + { + 13, -578, -578, -578, -578, -578, -578, -578, 82, -578, + 83, 83, 83, 83, 83, 83, 83, -578, -578, -578, + 653, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -578 + }, + + { + 13, -579, -579, -579, -579, -579, -579, -579, 82, -579, + 83, 83, 83, 83, 83, 83, 83, -579, -579, -579, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 654, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -579 + + }, + + { + 13, -580, -580, -580, -580, -580, -580, -580, 82, -580, + 83, 83, 83, 83, 83, 83, 83, -580, -580, -580, + 83, 83, 83, 83, 655, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -580 + }, + + { + 13, -581, -581, -581, -581, -581, -581, -581, 82, -581, + 83, 83, 83, 83, 83, 83, 83, -581, -581, -581, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 656, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -581 + }, + + { + 13, -582, -582, -582, -582, -582, -582, -582, 82, -582, + 83, 83, 83, 83, 83, 83, 83, -582, -582, -582, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 657, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -582 + }, + + { + 13, -583, -583, -583, -583, -583, -583, -583, 82, -583, + 83, 83, 83, 83, 83, 83, 83, -583, -583, -583, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 658, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -583 + }, + + { + 13, -584, -584, -584, -584, -584, -584, -584, 82, -584, + 83, 83, 83, 83, 83, 83, 83, -584, -584, -584, + + 83, 83, 83, 83, 83, 83, 83, 83, 659, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -584 + }, + + { + 13, 660, 660, 660, 660, 660, 660, 660, 661, 660, + 83, 83, 83, 83, 83, 83, 83, 660, 660, 660, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 662, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 660 + }, + + { + 13, -586, -586, -586, -586, -586, -586, -586, 82, -586, + 83, 83, 83, 83, 83, 83, 83, -586, -586, -586, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 663, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -586 + }, + + { + 13, -587, -587, -587, -587, -587, -587, -587, -587, -587, + + 83, 83, 83, 83, 83, 83, 83, -587, -587, -587, + 83, 83, 83, 83, 83, 83, 83, 83, 664, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -587 + }, + + { + 13, -588, -588, -588, -588, -588, -588, -588, 665, -588, + 83, 83, 83, 83, 83, 83, 83, -588, -588, -588, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -588 + }, + + { + 13, -589, -589, -589, -589, -589, -589, -589, 82, -589, + 83, 83, 666, 83, 83, 83, 83, -589, -589, -589, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -589 + + }, + + { + 13, -590, -590, -590, -590, -590, -590, -590, 82, -590, + 83, 83, 83, 83, 667, 83, 83, -590, -590, -590, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -590 + }, + + { + 13, -591, -591, -591, -591, -591, -591, -591, 82, -591, + 83, 83, 83, 83, 83, 83, 83, -591, -591, -591, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 668, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -591 + }, + + { + 13, -592, -592, -592, -592, -592, -592, -592, 82, -592, + 83, 83, 83, 83, 83, 83, 83, -592, -592, -592, + 83, 83, 83, 83, 83, 83, 83, 83, 669, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -592 + }, + + { + 13, -593, -593, -593, -593, -593, -593, -593, -593, -593, + 83, 83, 83, 83, 83, 83, 83, -593, -593, -593, + 83, 83, 83, 83, 83, 83, 83, 670, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -593 + }, + + { + 13, -594, -594, -594, -594, -594, -594, -594, 82, -594, + 83, 83, 83, 83, 83, 83, 83, -594, -594, -594, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 671, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -594 + }, + + { + 13, -595, -595, -595, -595, -595, -595, -595, 82, -595, + 83, 83, 83, 83, 83, 83, 83, -595, -595, -595, + 83, 83, 83, 83, 672, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -595 + }, + + { + 13, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596 + }, + + { + 13, -597, -597, -597, -597, -597, -597, -597, 596, -597, + + 83, 83, 83, 83, 83, 83, 83, -597, -597, -597, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -597 + }, + + { + 13, -598, -598, -598, -598, -598, -598, -598, 82, -598, + 83, 83, 83, 83, 83, 83, 83, -598, -598, -598, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -598 + }, + + { + 13, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599 + + }, + + { + 13, -600, -600, -600, -600, -600, -600, -600, 599, -600, + 83, 83, 83, 83, 83, 83, 83, -600, -600, -600, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -600 + }, + + { + 13, -601, -601, -601, -601, -601, -601, -601, 82, -601, + 83, 83, 83, 83, 83, 83, 83, -601, -601, -601, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -601 + }, + + { + 13, -602, -602, -602, -602, -602, -602, -602, 82, -602, + 83, 83, 83, 83, 83, 83, 83, -602, -602, -602, + 83, 83, 83, 83, 673, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -602 + }, + + { + 13, 674, 674, 674, 674, 674, 674, 674, 675, 674, + 83, 83, 83, 83, 83, 83, 83, 674, 674, 674, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 676, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 674 + }, + + { + 13, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604 + }, + + { + 13, -605, -605, -605, -605, -605, -605, -605, 604, -605, + 83, 83, 83, 83, 83, 83, 83, -605, -605, -605, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -605 + }, + + { + 13, -606, -606, -606, -606, -606, -606, -606, 82, -606, + 83, 83, 83, 83, 83, 83, 83, -606, -606, -606, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -606 + }, + + { + 13, -607, -607, -607, -607, -607, -607, -607, -607, -607, + + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607 + }, + + { + 13, -608, -608, -608, -608, -608, -608, -608, 607, -608, + 83, 83, 83, 83, 83, 83, 83, -608, -608, -608, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -608 + }, + + { + 13, -609, -609, -609, -609, -609, -609, -609, 82, -609, + 83, 83, 83, 83, 83, 83, 83, -609, -609, -609, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -609 + + }, + + { + 13, 677, 677, 677, 677, 677, 677, 677, 678, 677, + 83, 83, 83, 83, 83, 83, 83, 677, 677, 677, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 679, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 677 + }, + + { + 13, -611, -611, -611, -611, -611, -611, -611, -611, -611, + 83, 83, 83, 83, 83, 83, 83, -611, -611, -611, + 83, 83, 83, 83, 680, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -611 + }, + + { + 13, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + + -612, -612, -612, -612, -612, -612, -612, -612 + }, + + { + 13, -613, -613, -613, -613, -613, -613, -613, 612, -613, + 83, 83, 83, 83, 83, 83, 83, -613, -613, -613, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -613 + }, + + { + 13, -614, -614, -614, -614, -614, -614, -614, 82, -614, + 83, 83, 83, 83, 83, 83, 83, -614, -614, -614, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -614 + }, + + { + 13, -615, -615, -615, -615, -615, -615, -615, 82, -615, + 83, 83, 681, 83, 83, 83, 83, -615, -615, -615, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -615 + }, + + { + 13, -616, -616, -616, -616, -616, -616, -616, 82, -616, + 83, 83, 83, 83, 682, 83, 83, -616, -616, -616, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -616 + }, + + { + 13, -617, -617, -617, -617, -617, -617, -617, 82, -617, + + 83, 83, 83, 83, 83, 83, 83, -617, -617, -617, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 683, 83, 83, -617 + }, + + { + 13, -618, -618, -618, -618, -618, -618, -618, 82, -618, + 83, 83, 83, 83, 83, 83, 83, -618, -618, -618, + 684, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -618 + }, + + { + 13, -619, -619, -619, -619, -619, -619, -619, 82, -619, + 83, 83, 83, 83, 83, 83, 83, -619, -619, -619, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 685, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -619 + + }, + + { + 13, -620, -620, -620, -620, -620, -620, -620, 82, -620, + 83, 83, 83, 83, 83, 83, 83, -620, -620, -620, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 686, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -620 + }, + + { + 13, -621, -621, -621, -621, -621, -621, -621, 82, -621, + 83, 83, 83, 83, 83, 83, 83, -621, -621, -621, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 687, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -621 + }, + + { + 13, -622, -622, -622, -622, -622, -622, -622, 82, -622, + 83, 83, 83, 83, 83, 83, 83, -622, -622, -622, + 83, 83, 83, 83, 83, 688, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -622 + }, + + { + 13, -623, -623, -623, -623, -623, -623, -623, 82, -623, + 83, 83, 83, 83, 83, 83, 83, -623, -623, -623, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 689, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -623 + }, + + { + 13, -624, -624, -624, -624, -624, -624, -624, 82, -624, + 83, 83, 83, 83, 83, 83, 83, -624, -624, -624, + + 83, 83, 83, 690, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -624 + }, + + { + 13, -625, -625, -625, -625, -625, -625, -625, 82, -625, + 83, 83, 83, 83, 83, 83, 83, -625, -625, -625, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 691, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -625 + }, + + { + 13, -626, -626, -626, -626, -626, -626, -626, 82, -626, + 83, 83, 83, 83, 83, 83, 83, -626, -626, -626, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 692, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -626 + }, + + { + 13, -627, -627, -627, -627, -627, -627, -627, 82, -627, + + 83, 83, 83, 83, 83, 83, 83, -627, -627, -627, + 83, 83, 83, 693, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -627 + }, + + { + 13, -628, -628, -628, -628, -628, -628, -628, 82, -628, + 83, 83, 83, 83, 83, 83, 83, -628, -628, -628, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 694, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -628 + }, + + { + 13, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629 + + }, + + { + 13, -630, -630, -630, -630, -630, -630, -630, 629, -630, + 83, 83, 83, 83, 83, 83, 83, -630, -630, -630, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -630 + }, + + { + 13, -631, -631, -631, -631, -631, -631, -631, 82, -631, + 83, 83, 83, 83, 83, 83, 83, -631, -631, -631, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -631 + }, + + { + 13, -632, -632, -632, -632, -632, -632, -632, 82, -632, + 83, 83, 83, 83, 83, 83, 83, -632, -632, -632, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 695, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -632 + }, + + { + 13, -633, -633, -633, -633, -633, -633, -633, 82, -633, + 83, 83, 83, 83, 83, 83, 83, -633, -633, -633, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 696, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -633 + }, + + { + 13, -634, -634, -634, -634, -634, -634, -634, 82, -634, + 83, 83, 83, 83, 83, 83, 83, -634, -634, -634, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 697, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -634 + }, + + { + 13, -635, -635, -635, -635, -635, -635, -635, 82, -635, + 83, 83, 83, 83, 83, 83, 83, -635, -635, -635, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 698, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -635 + }, + + { + 13, -636, -636, -636, -636, -636, -636, -636, -636, -636, + 83, 83, 83, 83, 83, 83, 83, -636, -636, -636, + 699, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -636 + }, + + { + 13, -637, -637, -637, -637, -637, -637, -637, 82, -637, + + 83, 83, 83, 83, 83, 83, 83, -637, -637, -637, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 700, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -637 + }, + + { + 13, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638 + }, + + { + 13, -639, -639, -639, -639, -639, -639, -639, 638, -639, + 83, 83, 83, 83, 83, 83, 83, -639, -639, -639, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -639 + + }, + + { + 13, -640, -640, -640, -640, -640, -640, -640, 82, -640, + 83, 83, 83, 83, 83, 83, 83, -640, -640, -640, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -640 + }, + + { + 13, -641, -641, -641, -641, -641, -641, -641, 82, -641, + 83, 83, 83, 83, 83, 83, 83, -641, -641, -641, + 83, 83, 83, 83, 83, 83, 83, 83, 701, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -641 + }, + + { + 13, -642, -642, -642, -642, -642, -642, -642, 82, -642, + 83, 83, 83, 83, 83, 83, 83, -642, -642, -642, + 83, 83, 702, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -642 + }, + + { + 13, -643, -643, -643, -643, -643, -643, -643, -643, -643, + 83, 83, 83, 83, 83, 83, 83, -643, -643, -643, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 703, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -643 + }, + + { + 13, -644, -644, -644, -644, -644, -644, -644, 82, -644, + 83, 83, 83, 83, 83, 83, 83, -644, -644, -644, + + 83, 83, 83, 83, 704, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -644 + }, + + { + 13, 705, 705, 705, 705, 705, 705, 705, 706, 705, + 83, 83, 83, 83, 83, 83, 83, 705, 705, 705, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 707, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 705 + }, + + { + 13, 708, 708, 708, 708, 708, 708, 708, 709, 708, + 83, 83, 83, 83, 83, 83, 83, 708, 708, 708, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 710, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 708 + }, + + { + 13, -647, -647, -647, -647, -647, -647, -647, -647, -647, + + 83, 83, 83, 83, 83, 83, 83, -647, -647, -647, + 83, 83, 711, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -647 + }, + + { + 13, 712, 712, 712, 712, 712, 712, 712, 713, 712, + 83, 83, 83, 83, 83, 83, 83, 712, 712, 712, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 714, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 712 + }, + + { + 13, -649, -649, -649, -649, -649, -649, -649, -649, -649, + 83, 83, 83, 83, 83, 83, 83, -649, -649, -649, + 83, 83, 715, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -649 + + }, + + { + 13, -650, -650, -650, -650, -650, -650, -650, 82, -650, + 83, 83, 83, 83, 83, 83, 83, -650, -650, -650, + 83, 83, 83, 83, 716, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -650 + }, + + { + 13, -651, -651, -651, -651, -651, -651, -651, 82, -651, + 83, 83, 83, 83, 83, 83, 83, -651, -651, -651, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 717, 83, 83, -651 + }, + + { + 13, -652, -652, -652, -652, -652, -652, -652, 82, -652, + 83, 83, 83, 83, 83, 83, 83, -652, -652, -652, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 718, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -652 + }, + + { + 13, -653, -653, -653, -653, -653, -653, -653, 82, -653, + 83, 83, 83, 83, 83, 83, 83, -653, -653, -653, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 719, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -653 + }, + + { + 13, -654, -654, -654, -654, -654, -654, -654, 82, -654, + 83, 83, 83, 720, 83, 83, 721, -654, -654, -654, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -654 + }, + + { + 13, -655, -655, -655, -655, -655, -655, -655, 82, -655, + 83, 83, 83, 83, 83, 83, 83, -655, -655, -655, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 722, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -655 + }, + + { + 13, -656, -656, -656, -656, -656, -656, -656, 82, -656, + 83, 83, 83, 83, 83, 83, 83, -656, -656, -656, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 723, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -656 + }, + + { + 13, -657, -657, -657, -657, -657, -657, -657, 82, -657, + + 83, 83, 83, 83, 83, 83, 83, -657, -657, -657, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 724, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -657 + }, + + { + 13, -658, -658, -658, -658, -658, -658, -658, 82, -658, + 83, 83, 83, 83, 83, 83, 83, -658, -658, -658, + 725, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -658 + }, + + { + 13, -659, -659, -659, -659, -659, -659, -659, 82, -659, + 83, 83, 83, 83, 83, 83, 83, -659, -659, -659, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 726, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -659 + + }, + + { + 13, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660 + }, + + { + 13, -661, -661, -661, -661, -661, -661, -661, 660, -661, + 83, 83, 83, 83, 83, 83, 83, -661, -661, -661, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -661 + }, + + { + 13, -662, -662, -662, -662, -662, -662, -662, 82, -662, + 83, 83, 83, 83, 83, 83, 83, -662, -662, -662, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -662 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 93, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -664, -664, -664, -664, -664, -664, -664, 82, -664, + 83, 83, 83, 83, 83, 83, 83, -664, -664, -664, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 727, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -664 + }, + + { + 13, -665, -665, -665, -665, -665, -665, -665, -665, -665, + 83, 83, 83, 83, 83, 83, 83, -665, -665, -665, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 728, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -665 + }, + + { + 13, 729, 729, 729, 729, 729, 729, 729, 730, 729, + 83, 83, 83, 83, 83, 83, 83, 729, 729, 729, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 731, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 729 + }, + + { + 13, 732, 732, 732, 732, 732, 732, 732, 733, 732, + + 83, 83, 83, 83, 83, 83, 83, 732, 732, 732, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 734, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 732 + }, + + { + 13, -668, -668, -668, -668, -668, -668, -668, 82, -668, + 83, 83, 83, 83, 83, 83, 83, -668, -668, -668, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 735, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -668 + }, + + { + 13, -669, -669, -669, -669, -669, -669, -669, 82, -669, + 83, 83, 83, 83, 83, 83, 83, -669, -669, -669, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 736, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -669 + + }, + + { + 13, -670, -670, -670, -670, -670, -670, -670, 82, -670, + 83, 83, 83, 83, 83, 83, 83, -670, -670, -670, + 83, 83, 83, 83, 83, 83, 83, 83, 737, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -670 + }, + + { + 13, -671, -671, -671, -671, -671, -671, -671, 82, -671, + 83, 83, 83, 83, 83, 83, 83, -671, -671, -671, + 83, 83, 83, 83, 738, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -671 + }, + + { + 13, -672, -672, -672, -672, -672, -672, -672, 82, -672, + 83, 83, 83, 83, 83, 83, 83, -672, -672, -672, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -672 + }, + + { + 13, -673, -673, -673, -673, -673, -673, -673, 82, -673, + 83, 83, 83, 83, 83, 83, 83, -673, -673, -673, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 739, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -673 + }, + + { + 13, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674 + }, + + { + 13, -675, -675, -675, -675, -675, -675, -675, 674, -675, + 83, 83, 83, 83, 83, 83, 83, -675, -675, -675, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -675 + }, + + { + 13, -676, -676, -676, -676, -676, -676, -676, 82, -676, + 83, 83, 83, 83, 83, 83, 83, -676, -676, -676, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -676 + }, + + { + 13, -677, -677, -677, -677, -677, -677, -677, -677, -677, + + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677 + }, + + { + 13, -678, -678, -678, -678, -678, -678, -678, 677, -678, + 83, 83, 83, 83, 83, 83, 83, -678, -678, -678, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -678 + }, + + { + 13, -679, -679, -679, -679, -679, -679, -679, 82, -679, + 83, 83, 83, 83, 83, 83, 83, -679, -679, -679, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -679 + + }, + + { + 13, -680, -680, -680, -680, -680, -680, -680, 82, -680, + 83, 83, 83, 83, 83, 83, 83, -680, -680, -680, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 740, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -680 + }, + + { + 13, 741, 741, 741, 741, 741, 741, 741, 742, 741, + 83, 83, 83, 83, 83, 83, 83, 741, 741, 741, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 743, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 741 + }, + + { + 13, 744, 744, 744, 744, 744, 744, 744, 745, 744, + 83, 83, 83, 83, 83, 83, 83, 744, 744, 744, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 746, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 744 + }, + + { + 13, 747, 747, 747, 747, 747, 747, 747, 748, 747, + 83, 83, 83, 83, 83, 83, 83, 747, 747, 747, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 749, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 747 + }, + + { + 13, -684, -684, -684, -684, -684, -684, -684, 82, -684, + 83, 83, 83, 83, 83, 83, 83, -684, -684, -684, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 750, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -684 + }, + + { + 13, -685, -685, -685, -685, -685, -685, -685, 751, -685, + 83, 83, 83, 83, 83, 83, 83, -685, -685, -685, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -685 + }, + + { + 13, -686, -686, -686, -686, -686, -686, -686, 82, -686, + 83, 83, 83, 83, 83, 83, 83, -686, -686, -686, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 752, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -686 + }, + + { + 13, -687, -687, -687, -687, -687, -687, -687, 82, -687, + + 83, 83, 83, 83, 83, 83, 83, -687, -687, -687, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 753, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -687 + }, + + { + 13, -688, -688, -688, -688, -688, -688, -688, 82, -688, + 83, 83, 83, 83, 83, 83, 83, -688, -688, -688, + 83, 83, 83, 83, 83, 83, 83, 83, 754, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -688 + }, + + { + 13, -689, -689, -689, -689, -689, -689, -689, 82, -689, + 83, 83, 83, 83, 83, 83, 83, -689, -689, -689, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 755, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -689 + + }, + + { + 13, -690, -690, -690, -690, -690, -690, -690, 82, -690, + 83, 83, 83, 83, 83, 83, 83, -690, -690, -690, + 83, 83, 83, 83, 756, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -690 + }, + + { + 13, -691, -691, -691, -691, -691, -691, -691, 82, -691, + 83, 83, 83, 83, 83, 83, 83, -691, -691, -691, + 83, 83, 83, 83, 83, 83, 83, 83, 757, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -691 + }, + + { + 13, -692, -692, -692, -692, -692, -692, -692, 82, -692, + 83, 83, 83, 83, 83, 83, 83, -692, -692, -692, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 758, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -692 + }, + + { + 13, -693, -693, -693, -693, -693, -693, -693, 82, -693, + 83, 83, 83, 83, 83, 83, 83, -693, -693, -693, + 83, 83, 83, 83, 759, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -693 + }, + + { + 13, -694, -694, -694, -694, -694, -694, -694, 82, -694, + 83, 83, 83, 83, 83, 83, 83, -694, -694, -694, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 760, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -694 + }, + + { + 13, -695, -695, -695, -695, -695, -695, -695, 82, -695, + 83, 83, 83, 83, 83, 83, 83, -695, -695, -695, + 83, 83, 83, 83, 83, 83, 83, 83, 761, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -695 + }, + + { + 13, -696, -696, -696, -696, -696, -696, -696, 82, -696, + 83, 83, 83, 83, 83, 83, 83, -696, -696, -696, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 762, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -696 + }, + + { + 13, -697, -697, -697, -697, -697, -697, -697, 82, -697, + + 83, 83, 83, 83, 83, 83, 83, -697, -697, -697, + 83, 83, 83, 83, 83, 83, 83, 83, 763, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -697 + }, + + { + 13, 764, 764, 764, 764, 764, 764, 764, 765, 764, + 83, 83, 83, 83, 83, 83, 83, 764, 764, 764, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 766, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 764 + }, + + { + 13, -699, -699, -699, -699, -699, -699, -699, 82, -699, + 83, 83, 83, 83, 83, 83, 83, -699, -699, -699, + 83, 83, 767, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -699 + + }, + + { + 13, -700, -700, -700, -700, -700, -700, -700, 82, -700, + 83, 83, 83, 83, 83, 83, 83, -700, -700, -700, + 83, 83, 83, 83, 768, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -700 + }, + + { + 13, -701, -701, -701, -701, -701, -701, -701, 82, -701, + 83, 83, 83, 83, 83, 83, 83, -701, -701, -701, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 769, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -701 + }, + + { + 13, -702, -702, -702, -702, -702, -702, -702, 82, -702, + 83, 83, 83, 83, 83, 83, 83, -702, -702, -702, + 83, 83, 770, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -702 + }, + + { + 13, -703, -703, -703, -703, -703, -703, -703, 82, -703, + 83, 83, 83, 83, 83, 83, 83, -703, -703, -703, + 83, 83, 83, 83, 771, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -703 + }, + + { + 13, 772, 772, 772, 772, 772, 772, 772, 773, 772, + 83, 83, 83, 83, 83, 83, 83, 772, 772, 772, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 774, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 772 + }, + + { + 13, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705 + }, + + { + 13, -706, -706, -706, -706, -706, -706, -706, 705, -706, + 83, 83, 83, 83, 83, 83, 83, -706, -706, -706, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -706 + }, + + { + 13, -707, -707, -707, -707, -707, -707, -707, 82, -707, + + 83, 83, 83, 83, 83, 83, 83, -707, -707, -707, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -707 + }, + + { + 13, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708 + }, + + { + 13, -709, -709, -709, -709, -709, -709, -709, 708, -709, + 83, 83, 83, 83, 83, 83, 83, -709, -709, -709, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -709 + + }, + + { + 13, -710, -710, -710, -710, -710, -710, -710, 82, -710, + 83, 83, 83, 83, 83, 83, 83, -710, -710, -710, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -710 + }, + + { + 13, -711, -711, -711, -711, -711, -711, -711, 82, -711, + 83, 83, 83, 83, 83, 83, 83, -711, -711, -711, + 775, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -711 + }, + + { + 13, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + + -712, -712, -712, -712, -712, -712, -712, -712 + }, + + { + 13, -713, -713, -713, -713, -713, -713, -713, 712, -713, + 83, 83, 83, 83, 83, 83, 83, -713, -713, -713, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -713 + }, + + { + 13, -714, -714, -714, -714, -714, -714, -714, 82, -714, + 83, 83, 83, 83, 83, 83, 83, -714, -714, -714, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -714 + }, + + { + 13, -715, -715, -715, -715, -715, -715, -715, 82, -715, + 83, 83, 83, 83, 83, 83, 83, -715, -715, -715, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 776, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -715 + }, + + { + 13, 777, 777, 777, 777, 777, 777, 777, 778, 777, + 83, 83, 83, 83, 83, 83, 83, 777, 777, 777, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 779, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 777 + }, + + { + 13, 780, 780, 780, 780, 780, 780, 780, 781, 780, + + 83, 83, 83, 83, 83, 83, 83, 780, 780, 780, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 782, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 780 + }, + + { + 13, -718, -718, -718, -718, -718, -718, -718, 82, -718, + 83, 83, 83, 83, 83, 83, 83, -718, -718, -718, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 783, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -718 + }, + + { + 13, 784, 784, 784, 784, 784, 784, 784, 785, 784, + 83, 83, 83, 83, 83, 83, 83, 784, 784, 784, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 786, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 784 + + }, + + { + 13, -720, -720, -720, -720, -720, -720, -720, 82, -720, + 83, 83, 787, 83, 83, 83, 83, -720, -720, -720, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -720 + }, + + { + 13, -721, -721, -721, -721, -721, -721, -721, 82, -721, + 83, 83, 83, 83, 788, 83, 83, -721, -721, -721, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -721 + }, + + { + 13, 789, 789, 789, 789, 789, 789, 789, 790, 789, + 83, 83, 83, 83, 83, 83, 83, 789, 789, 789, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 791, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 789 + }, + + { + 13, 792, 792, 792, 792, 792, 792, 792, 793, 792, + 83, 83, 83, 83, 83, 83, 83, 792, 792, 792, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 794, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 792 + }, + + { + 13, -724, -724, -724, -724, -724, -724, -724, 82, -724, + 83, 83, 83, 83, 83, 83, 83, -724, -724, -724, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 795, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -724 + }, + + { + 13, -725, -725, -725, -725, -725, -725, -725, 82, -725, + 83, 83, 83, 83, 83, 83, 83, -725, -725, -725, + 83, 796, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -725 + }, + + { + 13, -726, -726, -726, -726, -726, -726, -726, 82, -726, + 83, 83, 83, 83, 83, 83, 83, -726, -726, -726, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 797, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -726 + }, + + { + 13, -727, -727, -727, -727, -727, -727, -727, 82, -727, + + 83, 83, 83, 83, 83, 83, 83, -727, -727, -727, + 83, 83, 83, 83, 83, 798, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -727 + }, + + { + 13, -728, -728, -728, -728, -728, -728, -728, 82, -728, + 83, 83, 83, 83, 83, 83, 83, -728, -728, -728, + 83, 83, 83, 83, 799, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -728 + }, + + { + 13, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729 + + }, + + { + 13, -730, -730, -730, -730, -730, -730, -730, 729, -730, + 83, 83, 83, 83, 83, 83, 83, -730, -730, -730, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -730 + }, + + { + 13, -731, -731, -731, -731, -731, -731, -731, 82, -731, + 83, 83, 83, 83, 83, 83, 83, -731, -731, -731, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -731 + }, + + { + 13, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + + -732, -732, -732, -732, -732, -732, -732, -732 + }, + + { + 13, -733, -733, -733, -733, -733, -733, -733, 732, -733, + 83, 83, 83, 83, 83, 83, 83, -733, -733, -733, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -733 + }, + + { + 13, -734, -734, -734, -734, -734, -734, -734, 82, -734, + 83, 83, 83, 83, 83, 83, 83, -734, -734, -734, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -734 + }, + + { + 13, -735, -735, -735, -735, -735, -735, -735, 82, -735, + 83, 83, 83, 83, 83, 83, 83, -735, -735, -735, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 800, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -735 + }, + + { + 13, -736, -736, -736, -736, -736, -736, -736, 82, -736, + 83, 83, 83, 83, 83, 83, 83, -736, -736, -736, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 801, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -736 + }, + + { + 13, -737, -737, -737, -737, -737, -737, -737, 82, -737, + + 83, 83, 83, 83, 83, 83, 83, -737, -737, -737, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 802, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -737 + }, + + { + 13, 803, 803, 803, 803, 803, 803, 803, 804, 803, + 83, 83, 83, 83, 83, 83, 83, 803, 803, 803, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 805, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 803 + }, + + { + 13, 806, 806, 806, 806, 806, 806, 806, 807, 806, + 83, 83, 83, 83, 83, 83, 83, 806, 806, 806, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 808, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 806 + + }, + + { + 13, -740, -740, -740, -740, -740, -740, -740, 82, -740, + 83, 83, 83, 83, 83, 83, 83, -740, -740, -740, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 809, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -740 + }, + + { + 13, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741 + }, + + { + 13, -742, -742, -742, -742, -742, -742, -742, 741, -742, + 83, 83, 83, 83, 83, 83, 83, -742, -742, -742, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -742 + }, + + { + 13, -743, -743, -743, -743, -743, -743, -743, 82, -743, + 83, 83, 83, 83, 83, 83, 83, -743, -743, -743, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -743 + }, + + { + 13, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744 + }, + + { + 13, -745, -745, -745, -745, -745, -745, -745, 744, -745, + 83, 83, 83, 83, 83, 83, 83, -745, -745, -745, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -745 + }, + + { + 13, -746, -746, -746, -746, -746, -746, -746, 82, -746, + 83, 83, 83, 83, 83, 83, 83, -746, -746, -746, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -746 + }, + + { + 13, -747, -747, -747, -747, -747, -747, -747, -747, -747, + + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747 + }, + + { + 13, -748, -748, -748, -748, -748, -748, -748, 747, -748, + 83, 83, 83, 83, 83, 83, 83, -748, -748, -748, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -748 + }, + + { + 13, -749, -749, -749, -749, -749, -749, -749, 82, -749, + 83, 83, 83, 83, 83, 83, 83, -749, -749, -749, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -749 + + }, + + { + 13, -750, -750, -750, -750, -750, -750, -750, 82, -750, + 83, 83, 83, 83, 83, 83, 83, -750, -750, -750, + 83, 83, 83, 83, 810, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -750 + }, + + { + 13, -751, -751, -751, -751, -751, -751, -751, -751, -751, + 83, 83, 83, 83, 83, 83, 83, -751, -751, -751, + 83, 83, 83, 83, 83, 83, 811, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -751 + }, + + { + 13, 812, 812, 812, 812, 812, 812, 812, 813, 812, + 83, 83, 83, 83, 83, 83, 83, 812, 812, 812, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 814, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 812 + }, + + { + 13, 815, 815, 815, 815, 815, 815, 815, 816, 815, + 83, 83, 83, 83, 83, 83, 83, 815, 815, 815, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 817, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 815 + }, + + { + 13, -754, -754, -754, -754, -754, -754, -754, 82, -754, + 83, 83, 83, 83, 83, 83, 83, -754, -754, -754, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 818, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -754 + }, + + { + 13, -755, -755, -755, -755, -755, -755, -755, 82, -755, + 83, 83, 83, 83, 83, 83, 83, -755, -755, -755, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 819, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -755 + }, + + { + 13, -756, -756, -756, -756, -756, -756, -756, 82, -756, + 83, 83, 83, 83, 83, 83, 83, -756, -756, -756, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 820, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -756 + }, + + { + 13, -757, -757, -757, -757, -757, -757, -757, 82, -757, + + 83, 83, 83, 83, 83, 83, 83, -757, -757, -757, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 821, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -757 + }, + + { + 13, -758, -758, -758, -758, -758, -758, -758, 82, -758, + 83, 83, 83, 83, 83, 83, 83, -758, -758, -758, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 822, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -758 + }, + + { + 13, -759, -759, -759, -759, -759, -759, -759, 82, -759, + 83, 83, 83, 83, 83, 83, 83, -759, -759, -759, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 823, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -759 + + }, + + { + 13, -760, -760, -760, -760, -760, -760, -760, 82, -760, + 83, 83, 83, 83, 83, 83, 83, -760, -760, -760, + 83, 83, 83, 83, 824, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -760 + }, + + { + 13, -761, -761, -761, -761, -761, -761, -761, 82, -761, + 83, 83, 83, 83, 83, 83, 83, -761, -761, -761, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 825, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -761 + }, + + { + 13, 826, 826, 826, 826, 826, 826, 826, 827, 826, + 83, 83, 83, 83, 83, 83, 83, 826, 826, 826, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 828, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 826 + }, + + { + 13, -763, -763, -763, -763, -763, -763, -763, 82, -763, + 83, 83, 83, 83, 83, 83, 83, -763, -763, -763, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 829, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -763 + }, + + { + 13, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764 + }, + + { + 13, -765, -765, -765, -765, -765, -765, -765, 764, -765, + 83, 83, 83, 83, 83, 83, 83, -765, -765, -765, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -765 + }, + + { + 13, -766, -766, -766, -766, -766, -766, -766, 82, -766, + 83, 83, 83, 83, 83, 83, 83, -766, -766, -766, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -766 + }, + + { + 13, -767, -767, -767, -767, -767, -767, -767, 82, -767, + + 83, 83, 83, 83, 83, 83, 83, -767, -767, -767, + 83, 83, 830, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -767 + }, + + { + 13, -768, -768, -768, -768, -768, -768, -768, 82, -768, + 83, 83, 83, 83, 83, 83, 83, -768, -768, -768, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 831, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -768 + }, + + { + 13, -769, -769, -769, -769, -769, -769, -769, 82, -769, + 83, 83, 83, 83, 83, 83, 83, -769, -769, -769, + 83, 83, 83, 83, 83, 83, 83, 83, 832, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -769 + + }, + + { + 13, -770, -770, -770, -770, -770, -770, -770, 82, -770, + 83, 83, 83, 83, 83, 83, 83, -770, -770, -770, + 83, 83, 83, 83, 833, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -770 + }, + + { + 13, -771, -771, -771, -771, -771, -771, -771, 82, -771, + 83, 83, 83, 83, 83, 83, 83, -771, -771, -771, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 834, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -771 + }, + + { + 13, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + + -772, -772, -772, -772, -772, -772, -772, -772 + }, + + { + 13, -773, -773, -773, -773, -773, -773, -773, 772, -773, + 83, 83, 83, 83, 83, 83, 83, -773, -773, -773, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -773 + }, + + { + 13, -774, -774, -774, -774, -774, -774, -774, 82, -774, + 83, 83, 83, 83, 83, 83, 83, -774, -774, -774, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -774 + }, + + { + 13, -775, -775, -775, -775, -775, -775, -775, 82, -775, + 83, 83, 83, 83, 83, 83, 83, -775, -775, -775, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 835, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -775 + }, + + { + 13, -776, -776, -776, -776, -776, -776, -776, 82, -776, + 83, 83, 83, 83, 83, 83, 83, -776, -776, -776, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 836, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -776 + }, + + { + 13, -777, -777, -777, -777, -777, -777, -777, -777, -777, + + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777 + }, + + { + 13, -778, -778, -778, -778, -778, -778, -778, 777, -778, + 83, 83, 83, 83, 83, 83, 83, -778, -778, -778, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -778 + }, + + { + 13, -779, -779, -779, -779, -779, -779, -779, 82, -779, + 83, 83, 83, 83, 83, 83, 83, -779, -779, -779, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -779 + + }, + + { + 13, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780 + }, + + { + 13, -781, -781, -781, -781, -781, -781, -781, 780, -781, + 83, 83, 83, 83, 83, 83, 83, -781, -781, -781, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -781 + }, + + { + 13, -782, -782, -782, -782, -782, -782, -782, 82, -782, + 83, 83, 83, 83, 83, 83, 83, -782, -782, -782, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -782 + }, + + { + 13, 837, 837, 837, 837, 837, 837, 837, 838, 837, + 83, 83, 83, 83, 83, 83, 83, 837, 837, 837, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 839, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 837 + }, + + { + 13, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784 + }, + + { + 13, -785, -785, -785, -785, -785, -785, -785, 784, -785, + 83, 83, 83, 83, 83, 83, 83, -785, -785, -785, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -785 + }, + + { + 13, -786, -786, -786, -786, -786, -786, -786, 82, -786, + 83, 83, 83, 83, 83, 83, 83, -786, -786, -786, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -786 + }, + + { + 13, 840, 840, 840, 840, 840, 840, 840, 841, 840, + + 83, 83, 83, 83, 83, 83, 83, 840, 840, 840, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 842, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 840 + }, + + { + 13, 843, 843, 843, 843, 843, 843, 843, 844, 843, + 83, 83, 83, 83, 83, 83, 83, 843, 843, 843, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 845, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 843 + }, + + { + 13, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789 + + }, + + { + 13, -790, -790, -790, -790, -790, -790, -790, 789, -790, + 83, 83, 83, 83, 83, 83, 83, -790, -790, -790, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -790 + }, + + { + 13, -791, -791, -791, -791, -791, -791, -791, 82, -791, + 83, 83, 83, 83, 83, 83, 83, -791, -791, -791, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -791 + }, + + { + 13, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + + -792, -792, -792, -792, -792, -792, -792, -792 + }, + + { + 13, -793, -793, -793, -793, -793, -793, -793, 792, -793, + 83, 83, 83, 83, 83, 83, 83, -793, -793, -793, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -793 + }, + + { + 13, -794, -794, -794, -794, -794, -794, -794, 82, -794, + 83, 83, 83, 83, 83, 83, 83, -794, -794, -794, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -794 + }, + + { + 13, -795, -795, -795, -795, -795, -795, -795, 82, -795, + 83, 83, 83, 83, 83, 83, 83, -795, -795, -795, + 846, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -795 + }, + + { + 13, -796, -796, -796, -796, -796, -796, -796, 82, -796, + 83, 83, 83, 83, 83, 83, 83, -796, -796, -796, + 83, 83, 83, 83, 83, 83, 83, 83, 847, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -796 + }, + + { + 13, 848, 848, 848, 848, 848, 848, 848, 849, 848, + + 83, 83, 83, 83, 83, 83, 83, 848, 848, 848, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 850, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 848 + }, + + { + 13, -798, -798, -798, -798, -798, -798, -798, 82, -798, + 83, 83, 83, 83, 83, 83, 83, -798, -798, -798, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 851, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -798 + }, + + { + 13, -799, -799, -799, -799, -799, -799, -799, 82, -799, + 83, 83, 83, 83, 83, 83, 83, -799, -799, -799, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 852, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -799 + + }, + + { + 13, 853, 853, 853, 853, 853, 853, 853, 854, 853, + 83, 83, 83, 83, 83, 83, 83, 853, 853, 853, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 855, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 853 + }, + + { + 13, 856, 856, 856, 856, 856, 856, 856, 857, 856, + 83, 83, 83, 83, 83, 83, 83, 856, 856, 856, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 858, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 856 + }, + + { + 13, -802, -802, -802, -802, -802, -802, -802, 82, -802, + 83, 83, 83, 83, 83, 83, 83, -802, -802, -802, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 859, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -802 + }, + + { + 13, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803 + }, + + { + 13, -804, -804, -804, -804, -804, -804, -804, 803, -804, + 83, 83, 83, 83, 83, 83, 83, -804, -804, -804, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -804 + }, + + { + 13, -805, -805, -805, -805, -805, -805, -805, 82, -805, + 83, 83, 83, 83, 83, 83, 83, -805, -805, -805, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -805 + }, + + { + 13, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806 + }, + + { + 13, -807, -807, -807, -807, -807, -807, -807, 806, -807, + + 83, 83, 83, 83, 83, 83, 83, -807, -807, -807, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -807 + }, + + { + 13, -808, -808, -808, -808, -808, -808, -808, 82, -808, + 83, 83, 83, 83, 83, 83, 83, -808, -808, -808, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -808 + }, + + { + 13, -809, -809, -809, -809, -809, -809, -809, 82, -809, + 83, 83, 83, 83, 83, 83, 83, -809, -809, -809, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 860, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -809 + + }, + + { + 13, -810, -810, -810, -810, -810, -810, -810, 82, -810, + 83, 83, 83, 83, 83, 83, 83, -810, -810, -810, + 83, 83, 83, 861, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -810 + }, + + { + 13, -811, -811, -811, -811, -811, -811, -811, 82, -811, + 83, 83, 83, 83, 83, 83, 83, -811, -811, -811, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 862, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -811 + }, + + { + 13, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + + -812, -812, -812, -812, -812, -812, -812, -812 + }, + + { + 13, -813, -813, -813, -813, -813, -813, -813, 812, -813, + 83, 83, 83, 83, 83, 83, 83, -813, -813, -813, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -813 + }, + + { + 13, -814, -814, -814, -814, -814, -814, -814, 82, -814, + 83, 83, 83, 83, 83, 83, 83, -814, -814, -814, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -814 + }, + + { + 13, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815 + }, + + { + 13, -816, -816, -816, -816, -816, -816, -816, 815, -816, + 83, 83, 83, 83, 83, 83, 83, -816, -816, -816, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -816 + }, + + { + 13, -817, -817, -817, -817, -817, -817, -817, 82, -817, + + 83, 83, 83, 83, 83, 83, 83, -817, -817, -817, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -817 + }, + + { + 13, -818, -818, -818, -818, -818, -818, -818, 82, -818, + 83, 83, 83, 83, 83, 83, 83, -818, -818, -818, + 83, 83, 83, 83, 83, 83, 83, 83, 863, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -818 + }, + + { + 13, -819, -819, -819, -819, -819, -819, -819, 82, -819, + 83, 83, 83, 83, 83, 83, 83, -819, -819, -819, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 864, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -819 + + }, + + { + 13, -820, -820, -820, -820, -820, -820, -820, 82, -820, + 83, 83, 83, 83, 83, 83, 83, -820, -820, -820, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 865, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -820 + }, + + { + 13, -821, -821, -821, -821, -821, -821, -821, 82, -821, + 83, 83, 83, 83, 83, 83, 83, -821, -821, -821, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 866, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -821 + }, + + { + 13, -822, -822, -822, -822, -822, -822, -822, 82, -822, + 83, 83, 83, 83, 83, 83, 83, -822, -822, -822, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 867, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -822 + }, + + { + 13, -823, -823, -823, -823, -823, -823, -823, 82, -823, + 83, 83, 83, 83, 83, 83, 83, -823, -823, -823, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 868, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -823 + }, + + { + 13, 869, 869, 869, 869, 869, 869, 869, 870, 869, + 83, 83, 83, 83, 83, 83, 83, 869, 869, 869, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 871, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 869 + }, + + { + 13, -825, -825, -825, -825, -825, -825, -825, 82, -825, + 83, 83, 83, 83, 83, 83, 83, -825, -825, -825, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 872, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -825 + }, + + { + 13, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826 + }, + + { + 13, -827, -827, -827, -827, -827, -827, -827, 826, -827, + + 83, 83, 83, 83, 83, 83, 83, -827, -827, -827, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -827 + }, + + { + 13, -828, -828, -828, -828, -828, -828, -828, 82, -828, + 83, 83, 83, 83, 83, 83, 83, -828, -828, -828, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -828 + }, + + { + 13, -829, -829, -829, -829, -829, -829, -829, 82, -829, + 83, 83, 83, 83, 83, 83, 83, -829, -829, -829, + 83, 83, 83, 83, 83, 83, 83, 83, 873, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -829 + + }, + + { + 13, -830, -830, -830, -830, -830, -830, -830, 82, -830, + 83, 83, 83, 83, 83, 83, 83, -830, -830, -830, + 83, 83, 83, 83, 874, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -830 + }, + + { + 13, -831, -831, -831, -831, -831, -831, -831, 82, -831, + 83, 83, 83, 83, 83, 83, 83, -831, -831, -831, + 83, 83, 875, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -831 + }, + + { + 13, -832, -832, -832, -832, -832, -832, -832, 82, -832, + 83, 83, 83, 83, 83, 83, 83, -832, -832, -832, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 876, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -832 + }, + + { + 13, -833, -833, -833, -833, -833, -833, -833, 82, -833, + 83, 83, 83, 83, 83, 83, 83, -833, -833, -833, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 877, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -833 + }, + + { + 13, -834, -834, -834, -834, -834, -834, -834, 82, -834, + 83, 83, 83, 83, 83, 83, 83, -834, -834, -834, + + 83, 83, 83, 83, 878, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -834 + }, + + { + 13, -835, -835, -835, -835, -835, -835, -835, 82, -835, + 83, 83, 83, 83, 83, 83, 83, -835, -835, -835, + 83, 83, 83, 83, 879, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -835 + }, + + { + 13, -836, -836, -836, -836, -836, -836, -836, 82, -836, + 83, 83, 83, 83, 83, 83, 83, -836, -836, -836, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 880, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -836 + }, + + { + 13, -837, -837, -837, -837, -837, -837, -837, -837, -837, + + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837 + }, + + { + 13, -838, -838, -838, -838, -838, -838, -838, 837, -838, + 83, 83, 83, 83, 83, 83, 83, -838, -838, -838, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -838 + }, + + { + 13, -839, -839, -839, -839, -839, -839, -839, 82, -839, + 83, 83, 83, 83, 83, 83, 83, -839, -839, -839, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -839 + + }, + + { + 13, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840 + }, + + { + 13, -841, -841, -841, -841, -841, -841, -841, 840, -841, + 83, 83, 83, 83, 83, 83, 83, -841, -841, -841, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -841 + }, + + { + 13, -842, -842, -842, -842, -842, -842, -842, 82, -842, + 83, 83, 83, 83, 83, 83, 83, -842, -842, -842, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -842 + }, + + { + 13, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843 + }, + + { + 13, -844, -844, -844, -844, -844, -844, -844, 843, -844, + 83, 83, 83, 83, 83, 83, 83, -844, -844, -844, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -844 + }, + + { + 13, -845, -845, -845, -845, -845, -845, -845, 82, -845, + 83, 83, 83, 83, 83, 83, 83, -845, -845, -845, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -845 + }, + + { + 13, -846, -846, -846, -846, -846, -846, -846, 82, -846, + 83, 83, 83, 83, 83, 83, 83, -846, -846, -846, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 881, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -846 + }, + + { + 13, -847, -847, -847, -847, -847, -847, -847, 82, -847, + + 83, 83, 83, 83, 83, 83, 83, -847, -847, -847, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 882, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -847 + }, + + { + 13, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848 + }, + + { + 13, -849, -849, -849, -849, -849, -849, -849, 848, -849, + 83, 83, 83, 83, 83, 83, 83, -849, -849, -849, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -849 + + }, + + { + 13, -850, -850, -850, -850, -850, -850, -850, 82, -850, + 83, 83, 83, 83, 83, 83, 83, -850, -850, -850, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -850 + }, + + { + 13, 883, 883, 883, 883, 883, 883, 883, 884, 883, + 83, 83, 83, 83, 83, 83, 83, 883, 883, 883, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 885, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 883 + }, + + { + 13, -852, -852, -852, -852, -852, -852, -852, 82, -852, + 83, 83, 83, 83, 83, 83, 83, -852, -852, -852, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 886, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -852 + }, + + { + 13, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853 + }, + + { + 13, -854, -854, -854, -854, -854, -854, -854, 853, -854, + 83, 83, 83, 83, 83, 83, 83, -854, -854, -854, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -854 + }, + + { + 13, -855, -855, -855, -855, -855, -855, -855, 82, -855, + 83, 83, 83, 83, 83, 83, 83, -855, -855, -855, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -855 + }, + + { + 13, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856 + }, + + { + 13, -857, -857, -857, -857, -857, -857, -857, 856, -857, + + 83, 83, 83, 83, 83, 83, 83, -857, -857, -857, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -857 + }, + + { + 13, -858, -858, -858, -858, -858, -858, -858, 82, -858, + 83, 83, 83, 83, 83, 83, 83, -858, -858, -858, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -858 + }, + + { + 13, 887, 887, 887, 887, 887, 887, 887, 888, 887, + 83, 83, 83, 83, 83, 83, 83, 887, 887, 887, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 889, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 887 + + }, + + { + 13, -860, -860, -860, -860, -860, -860, -860, 82, -860, + 83, 83, 83, 83, 83, 83, 83, -860, -860, -860, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 890, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -860 + }, + + { + 13, 891, 891, 891, 891, 891, 891, 891, 892, 891, + 83, 83, 83, 83, 83, 83, 83, 891, 891, 891, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 893, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 891 + }, + + { + 13, -862, -862, -862, -862, -862, -862, -862, 82, -862, + 83, 83, 83, 83, 83, 83, 83, -862, -862, -862, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 894, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -862 + }, + + { + 13, -863, -863, -863, -863, -863, -863, -863, 82, -863, + 83, 83, 83, 83, 83, 83, 83, -863, -863, -863, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 895, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -863 + }, + + { + 13, -864, -864, -864, -864, -864, -864, -864, 82, -864, + 83, 83, 83, 83, 83, 83, 83, -864, -864, -864, + + 83, 83, 83, 83, 83, 83, 83, 83, 896, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -864 + }, + + { + 13, -865, -865, -865, -865, -865, -865, -865, 82, -865, + 83, 83, 83, 83, 83, 83, 83, -865, -865, -865, + 83, 83, 83, 83, 83, 83, 83, 83, 897, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -865 + }, + + { + 13, -866, -866, -866, -866, -866, -866, -866, 898, -866, + 83, 83, 83, 83, 83, 83, 83, -866, -866, -866, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 899, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -866 + }, + + { + 13, 900, 900, 900, 900, 900, 900, 900, 901, 900, + + 83, 83, 83, 83, 83, 83, 83, 900, 900, 900, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 902, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 900 + }, + + { + 13, -868, -868, -868, -868, -868, -868, -868, 82, -868, + 83, 83, 83, 83, 83, 83, 83, -868, -868, -868, + 83, 83, 83, 83, 83, 83, 83, 83, 903, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -868 + }, + + { + 13, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869 + + }, + + { + 13, -870, -870, -870, -870, -870, -870, -870, 869, -870, + 83, 83, 83, 83, 83, 83, 83, -870, -870, -870, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -870 + }, + + { + 13, -871, -871, -871, -871, -871, -871, -871, 82, -871, + 83, 83, 83, 83, 83, 83, 83, -871, -871, -871, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -871 + }, + + { + 13, 904, 904, 904, 904, 904, 904, 904, 905, 904, + 83, 83, 83, 83, 83, 83, 83, 904, 904, 904, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 906, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 904 + }, + + { + 13, -873, -873, -873, -873, -873, -873, -873, 82, -873, + 83, 83, 83, 83, 83, 83, 83, -873, -873, -873, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 907, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -873 + }, + + { + 13, -874, -874, -874, -874, -874, -874, -874, 82, -874, + 83, 83, 83, 83, 83, 83, 83, -874, -874, -874, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 908, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -874 + }, + + { + 13, -875, -875, -875, -875, -875, -875, -875, 82, -875, + 83, 83, 83, 83, 83, 83, 83, -875, -875, -875, + 83, 83, 83, 83, 909, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -875 + }, + + { + 13, -876, -876, -876, -876, -876, -876, -876, 82, -876, + 83, 83, 83, 83, 83, 83, 83, -876, -876, -876, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -876 + }, + + { + 13, -877, -877, -877, -877, -877, -877, -877, 82, -877, + + 83, 83, 83, 83, 83, 83, 83, -877, -877, -877, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 910, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -877 + }, + + { + 13, -878, -878, -878, -878, -878, -878, -878, 82, -878, + 83, 83, 83, 83, 83, 83, 83, -878, -878, -878, + 911, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -878 + }, + + { + 13, -879, -879, -879, -879, -879, -879, -879, 82, -879, + 83, 83, 83, 83, 83, 83, 83, -879, -879, -879, + 83, 83, 83, 83, 83, 83, 912, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -879 + + }, + + { + 13, -880, -880, -880, -880, -880, -880, -880, 82, -880, + 83, 83, 83, 83, 83, 83, 83, -880, -880, -880, + 83, 83, 83, 83, 913, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -880 + }, + + { + 13, 914, 914, 914, 914, 914, 914, 914, 915, 914, + 83, 83, 83, 83, 83, 83, 83, 914, 914, 914, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 916, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 914 + }, + + { + 13, -882, -882, -882, -882, -882, -882, -882, 82, -882, + 83, 83, 83, 83, 83, 83, 83, -882, -882, -882, + 83, 83, 83, 83, 83, 83, 83, 83, 917, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -882 + }, + + { + 13, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883 + }, + + { + 13, -884, -884, -884, -884, -884, -884, -884, 883, -884, + 83, 83, 83, 83, 83, 83, 83, -884, -884, -884, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -884 + }, + + { + 13, -885, -885, -885, -885, -885, -885, -885, 82, -885, + 83, 83, 83, 83, 83, 83, 83, -885, -885, -885, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -885 + }, + + { + 13, -886, -886, -886, -886, -886, -886, -886, 82, -886, + 83, 83, 83, 83, 83, 83, 83, -886, -886, -886, + 83, 83, 83, 83, 83, 83, 83, 83, 918, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -886 + }, + + { + 13, -887, -887, -887, -887, -887, -887, -887, -887, -887, + + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887 + }, + + { + 13, -888, -888, -888, -888, -888, -888, -888, 887, -888, + 83, 83, 83, 83, 83, 83, 83, -888, -888, -888, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -888 + }, + + { + 13, -889, -889, -889, -889, -889, -889, -889, 82, -889, + 83, 83, 83, 83, 83, 83, 83, -889, -889, -889, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -889 + + }, + + { + 13, -890, -890, -890, -890, -890, -890, -890, 82, -890, + 83, 83, 83, 83, 83, 83, 83, -890, -890, -890, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 919, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -890 + }, + + { + 13, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891 + }, + + { + 13, -892, -892, -892, -892, -892, -892, -892, 891, -892, + 83, 83, 83, 83, 83, 83, 83, -892, -892, -892, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -892 + }, + + { + 13, -893, -893, -893, -893, -893, -893, -893, 82, -893, + 83, 83, 83, 83, 83, 83, 83, -893, -893, -893, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -893 + }, + + { + 13, -894, -894, -894, -894, -894, -894, -894, 82, -894, + 83, 83, 83, 83, 83, 83, 83, -894, -894, -894, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 920, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -894 + }, + + { + 13, -895, -895, -895, -895, -895, -895, -895, 82, -895, + 83, 83, 83, 83, 83, 83, 83, -895, -895, -895, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -895 + }, + + { + 13, -896, -896, -896, -896, -896, -896, -896, 82, -896, + 83, 83, 83, 83, 83, 83, 83, -896, -896, -896, + 921, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -896 + }, + + { + 13, -897, -897, -897, -897, -897, -897, -897, 82, -897, + + 83, 83, 83, 83, 83, 83, 83, -897, -897, -897, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 922, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -897 + }, + + { + 13, -898, -898, -898, -898, -898, -898, -898, -898, -898, + 83, 83, 83, 83, 83, 83, 83, -898, -898, -898, + 83, 83, 83, 83, 83, 83, 923, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 924, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -898 + }, + + { + 13, 925, 925, 925, 925, 925, 925, 925, 926, 925, + 83, 83, 83, 83, 83, 83, 83, 925, 925, 925, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 927, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 925 + + }, + + { + 13, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900 + }, + + { + 13, -901, -901, -901, -901, -901, -901, -901, 900, -901, + 83, 83, 83, 83, 83, 83, 83, -901, -901, -901, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -901 + }, + + { + 13, -902, -902, -902, -902, -902, -902, -902, 82, -902, + 83, 83, 83, 83, 83, 83, 83, -902, -902, -902, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -902 + }, + + { + 13, -903, -903, -903, -903, -903, -903, -903, 82, -903, + 83, 83, 83, 83, 83, 83, 83, -903, -903, -903, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 928, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -903 + }, + + { + 13, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904 + }, + + { + 13, -905, -905, -905, -905, -905, -905, -905, 904, -905, + 83, 83, 83, 83, 83, 83, 83, -905, -905, -905, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -905 + }, + + { + 13, -906, -906, -906, -906, -906, -906, -906, 82, -906, + 83, 83, 83, 83, 83, 83, 83, -906, -906, -906, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -906 + }, + + { + 13, -907, -907, -907, -907, -907, -907, -907, 82, -907, + + 83, 83, 83, 83, 83, 83, 83, -907, -907, -907, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 929, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -907 + }, + + { + 13, -908, -908, -908, -908, -908, -908, -908, 82, -908, + 83, 83, 83, 83, 83, 83, 83, -908, -908, -908, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 930, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -908 + }, + + { + 13, -909, -909, -909, -909, -909, -909, -909, 82, -909, + 83, 83, 83, 83, 83, 83, 83, -909, -909, -909, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 931, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -909 + + }, + + { + 13, 932, 932, 932, 932, 932, 932, 932, 933, 932, + 83, 83, 83, 83, 83, 83, 83, 932, 932, 932, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 934, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 932 + }, + + { + 13, -911, -911, -911, -911, -911, -911, -911, 82, -911, + 83, 83, 83, 83, 83, 83, 83, -911, -911, -911, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 935, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -911 + }, + + { + 13, -912, -912, -912, -912, -912, -912, -912, 82, -912, + 83, 83, 83, 83, 83, 83, 83, -912, -912, -912, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 936, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -912 + }, + + { + 13, -913, -913, -913, -913, -913, -913, -913, 82, -913, + 83, 83, 83, 83, 83, 83, 83, -913, -913, -913, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 937, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -913 + }, + + { + 13, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914 + }, + + { + 13, -915, -915, -915, -915, -915, -915, -915, 914, -915, + 83, 83, 83, 83, 83, 83, 83, -915, -915, -915, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -915 + }, + + { + 13, -916, -916, -916, -916, -916, -916, -916, 82, -916, + 83, 83, 83, 83, 83, 83, 83, -916, -916, -916, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -916 + }, + + { + 13, -917, -917, -917, -917, -917, -917, -917, 82, -917, + + 83, 83, 83, 83, 83, 83, 83, -917, -917, -917, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 938, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -917 + }, + + { + 13, -918, -918, -918, -918, -918, -918, -918, 82, -918, + 83, 83, 83, 83, 83, 83, 83, -918, -918, -918, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 939, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -918 + }, + + { + 13, 940, 940, 940, 940, 940, 940, 940, 941, 940, + 83, 83, 83, 83, 83, 83, 83, 940, 940, 940, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 942, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 940 + + }, + + { + 13, -920, -920, -920, -920, -920, -920, -920, 82, -920, + 83, 83, 83, 83, 83, 83, 83, -920, -920, -920, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 943, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -920 + }, + + { + 13, -921, -921, -921, -921, -921, -921, -921, 82, -921, + 83, 83, 83, 83, 83, 83, 83, -921, -921, -921, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 944, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -921 + }, + + { + 13, -922, -922, -922, -922, -922, -922, -922, 82, -922, + 83, 83, 83, 83, 83, 83, 83, -922, -922, -922, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 945, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -922 + }, + + { + 13, -923, -923, -923, -923, -923, -923, -923, 82, -923, + 83, 83, 83, 83, 83, 83, 83, -923, -923, -923, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 946, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -923 + }, + + { + 13, -924, -924, -924, -924, -924, -924, -924, 82, -924, + 83, 83, 83, 83, 83, 83, 83, -924, -924, -924, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 947, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -924 + }, + + { + 13, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925 + }, + + { + 13, -926, -926, -926, -926, -926, -926, -926, 925, -926, + 83, 83, 83, 83, 83, 83, 83, -926, -926, -926, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -926 + }, + + { + 13, -927, -927, -927, -927, -927, -927, -927, 82, -927, + + 83, 83, 83, 83, 83, 83, 83, -927, -927, -927, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -927 + }, + + { + 13, -928, -928, -928, -928, -928, -928, -928, 82, -928, + 83, 83, 83, 83, 83, 83, 83, -928, -928, -928, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 948, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -928 + }, + + { + 13, -929, -929, -929, -929, -929, -929, -929, 82, -929, + 83, 83, 83, 83, 83, 83, 83, -929, -929, -929, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 949, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -929 + + }, + + { + 13, 950, 950, 950, 950, 950, 950, 950, 951, 950, + 83, 83, 83, 83, 83, 83, 83, 950, 950, 950, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 952, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 950 + }, + + { + 13, 953, 953, 953, 953, 953, 953, 953, 954, 953, + 83, 83, 83, 83, 83, 83, 83, 953, 953, 953, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 955, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 953 + }, + + { + 13, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + + -932, -932, -932, -932, -932, -932, -932, -932 + }, + + { + 13, -933, -933, -933, -933, -933, -933, -933, 932, -933, + 83, 83, 83, 83, 83, 83, 83, -933, -933, -933, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -933 + }, + + { + 13, -934, -934, -934, -934, -934, -934, -934, 82, -934, + 83, 83, 83, 83, 83, 83, 83, -934, -934, -934, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -934 + }, + + { + 13, -935, -935, -935, -935, -935, -935, -935, 82, -935, + 83, 83, 83, 83, 83, 83, 83, -935, -935, -935, + 83, 83, 83, 83, 956, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -935 + }, + + { + 13, -936, -936, -936, -936, -936, -936, -936, 82, -936, + 83, 83, 83, 83, 83, 83, 83, -936, -936, -936, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 957, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -936 + }, + + { + 13, -937, -937, -937, -937, -937, -937, -937, 82, -937, + + 83, 83, 83, 83, 83, 83, 83, -937, -937, -937, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 958, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -937 + }, + + { + 13, -938, -938, -938, -938, -938, -938, -938, 82, -938, + 83, 83, 83, 83, 83, 83, 83, -938, -938, -938, + 83, 83, 83, 83, 83, 83, 83, 83, 959, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -938 + }, + + { + 13, -939, -939, -939, -939, -939, -939, -939, 82, -939, + 83, 83, 83, 83, 83, 83, 83, -939, -939, -939, + 83, 83, 83, 83, 960, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -939 + + }, + + { + 13, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940 + }, + + { + 13, -941, -941, -941, -941, -941, -941, -941, 940, -941, + 83, 83, 83, 83, 83, 83, 83, -941, -941, -941, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -941 + }, + + { + 13, -942, -942, -942, -942, -942, -942, -942, 82, -942, + 83, 83, 83, 83, 83, 83, 83, -942, -942, -942, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -942 + }, + + { + 13, -943, -943, -943, -943, -943, -943, -943, 82, -943, + 83, 83, 83, 83, 83, 83, 83, -943, -943, -943, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 961, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -943 + }, + + { + 13, -944, -944, -944, -944, -944, -944, -944, 82, -944, + 83, 83, 83, 83, 83, 83, 83, -944, -944, -944, + + 83, 83, 962, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -944 + }, + + { + 13, 963, 963, 963, 963, 963, 963, 963, 964, 963, + 83, 83, 83, 83, 83, 83, 83, 963, 963, 963, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 965, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 963 + }, + + { + 13, -946, -946, -946, -946, -946, -946, -946, 82, -946, + 83, 83, 83, 83, 83, 83, 83, -946, -946, -946, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 966, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -946 + }, + + { + 13, -947, -947, -947, -947, -947, -947, -947, 82, -947, + + 83, 83, 83, 83, 83, 83, 83, -947, -947, -947, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 967, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -947 + }, + + { + 13, 968, 968, 968, 968, 968, 968, 968, 969, 968, + 83, 83, 83, 83, 83, 83, 83, 968, 968, 968, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 970, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 968 + }, + + { + 13, 971, 971, 971, 971, 971, 971, 971, 972, 971, + 83, 83, 83, 83, 83, 83, 83, 971, 971, 971, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 973, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 971 + + }, + + { + 13, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950 + }, + + { + 13, -951, -951, -951, -951, -951, -951, -951, 950, -951, + 83, 83, 83, 83, 83, 83, 83, -951, -951, -951, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -951 + }, + + { + 13, -952, -952, -952, -952, -952, -952, -952, 82, -952, + 83, 83, 83, 83, 83, 83, 83, -952, -952, -952, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -952 + }, + + { + 13, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953 + }, + + { + 13, -954, -954, -954, -954, -954, -954, -954, 953, -954, + 83, 83, 83, 83, 83, 83, 83, -954, -954, -954, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -954 + }, + + { + 13, -955, -955, -955, -955, -955, -955, -955, 82, -955, + 83, 83, 83, 83, 83, 83, 83, -955, -955, -955, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -955 + }, + + { + 13, 974, 974, 974, 974, 974, 974, 974, 975, 974, + 83, 83, 83, 83, 83, 83, 83, 974, 974, 974, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 976, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 974 + }, + + { + 13, -957, -957, -957, -957, -957, -957, -957, 82, -957, + + 83, 83, 83, 83, 83, 83, 83, -957, -957, -957, + 83, 83, 83, 83, 83, 83, 83, 83, 977, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -957 + }, + + { + 13, -958, -958, -958, -958, -958, -958, -958, 82, -958, + 83, 83, 83, 83, 83, 83, 83, -958, -958, -958, + 83, 83, 83, 83, 83, 83, 83, 83, 978, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -958 + }, + + { + 13, -959, -959, -959, -959, -959, -959, -959, 82, -959, + 83, 83, 83, 83, 83, 83, 83, -959, -959, -959, + 83, 83, 83, 83, 979, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -959 + + }, + + { + 13, -960, -960, -960, -960, -960, -960, -960, 82, -960, + 83, 83, 83, 83, 83, 83, 83, -960, -960, -960, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 980, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -960 + }, + + { + 13, 981, 981, 981, 981, 981, 981, 981, 982, 981, + 83, 83, 83, 83, 83, 83, 83, 981, 981, 981, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 983, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 981 + }, + + { + 13, -962, -962, -962, -962, -962, -962, -962, 82, -962, + 83, 83, 83, 83, 83, 83, 83, -962, -962, -962, + 83, 83, 83, 83, 984, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -962 + }, + + { + 13, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963 + }, + + { + 13, -964, -964, -964, -964, -964, -964, -964, 963, -964, + 83, 83, 83, 83, 83, 83, 83, -964, -964, -964, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -964 + }, + + { + 13, -965, -965, -965, -965, -965, -965, -965, 82, -965, + 83, 83, 83, 83, 83, 83, 83, -965, -965, -965, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -965 + }, + + { + 13, -966, -966, -966, -966, -966, -966, -966, 82, -966, + 83, 83, 83, 83, 83, 83, 83, -966, -966, -966, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 985, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -966 + }, + + { + 13, -967, -967, -967, -967, -967, -967, -967, 82, -967, + + 83, 83, 83, 83, 83, 83, 83, -967, -967, -967, + 83, 83, 83, 83, 986, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -967 + }, + + { + 13, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968 + }, + + { + 13, -969, -969, -969, -969, -969, -969, -969, 968, -969, + 83, 83, 83, 83, 83, 83, 83, -969, -969, -969, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -969 + + }, + + { + 13, -970, -970, -970, -970, -970, -970, -970, 82, -970, + 83, 83, 83, 83, 83, 83, 83, -970, -970, -970, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -970 + }, + + { + 13, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971 + }, + + { + 13, -972, -972, -972, -972, -972, -972, -972, 971, -972, + 83, 83, 83, 83, 83, 83, 83, -972, -972, -972, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -972 + }, + + { + 13, -973, -973, -973, -973, -973, -973, -973, 82, -973, + 83, 83, 83, 83, 83, 83, 83, -973, -973, -973, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -973 + }, + + { + 13, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974 + }, + + { + 13, -975, -975, -975, -975, -975, -975, -975, 974, -975, + 83, 83, 83, 83, 83, 83, 83, -975, -975, -975, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -975 + }, + + { + 13, -976, -976, -976, -976, -976, -976, -976, 82, -976, + 83, 83, 83, 83, 83, 83, 83, -976, -976, -976, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -976 + }, + + { + 13, -977, -977, -977, -977, -977, -977, -977, 82, -977, + + 83, 83, 83, 83, 83, 83, 83, -977, -977, -977, + 83, 83, 83, 83, 987, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -977 + }, + + { + 13, -978, -978, -978, -978, -978, -978, -978, 82, -978, + 83, 83, 83, 83, 83, 83, 83, -978, -978, -978, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 988, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -978 + }, + + { + 13, -979, -979, -979, -979, -979, -979, -979, 82, -979, + 83, 83, 83, 83, 83, 83, 83, -979, -979, -979, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 989, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -979 + + }, + + { + 13, 990, 990, 990, 990, 990, 990, 990, 991, 990, + 83, 83, 83, 83, 83, 83, 83, 990, 990, 990, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 992, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 990 + }, + + { + 13, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981 + }, + + { + 13, -982, -982, -982, -982, -982, -982, -982, 981, -982, + 83, 83, 83, 83, 83, 83, 83, -982, -982, -982, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -982 + }, + + { + 13, -983, -983, -983, -983, -983, -983, -983, 82, -983, + 83, 83, 83, 83, 83, 83, 83, -983, -983, -983, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -983 + }, + + { + 13, 993, 993, 993, 993, 993, 993, 993, 994, 993, + 83, 83, 83, 83, 83, 83, 83, 993, 993, 993, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 995, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 993 + }, + + { + 13, -985, -985, -985, -985, -985, -985, -985, 82, -985, + 83, 83, 83, 83, 83, 83, 83, -985, -985, -985, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 996, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -985 + }, + + { + 13, 997, 997, 997, 997, 997, 997, 997, 998, 997, + 83, 83, 83, 83, 83, 83, 83, 997, 997, 997, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 999, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 997 + }, + + { + 13, -987, -987, -987, -987, -987, -987, -987, 82, -987, + + 83, 83, 83, 83, 83, 83, 83, -987, -987, -987, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 1000, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -987 + }, + + { + 13, -988, -988, -988, -988, -988, -988, -988, 82, -988, + 83, 83, 83, 83, 83, 83, 83, -988, -988, -988, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 1001, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -988 + }, + + { + 13, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1002, + 83, 83, 83, 83, 83, 83, 83, 1002, 1002, 1002, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1004, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1002 + + }, + + { + 13, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990 + }, + + { + 13, -991, -991, -991, -991, -991, -991, -991, 990, -991, + 83, 83, 83, 83, 83, 83, 83, -991, -991, -991, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -991 + }, + + { + 13, -992, -992, -992, -992, -992, -992, -992, 82, -992, + 83, 83, 83, 83, 83, 83, 83, -992, -992, -992, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -992 + }, + + { + 13, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993 + }, + + { + 13, -994, -994, -994, -994, -994, -994, -994, 993, -994, + 83, 83, 83, 83, 83, 83, 83, -994, -994, -994, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -994 + }, + + { + 13, -995, -995, -995, -995, -995, -995, -995, 82, -995, + 83, 83, 83, 83, 83, 83, 83, -995, -995, -995, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -995 + }, + + { + 13, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1006, 1005, + 83, 83, 83, 83, 83, 83, 83, 1005, 1005, 1005, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1007, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1005 + }, + + { + 13, -997, -997, -997, -997, -997, -997, -997, -997, -997, + + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997 + }, + + { + 13, -998, -998, -998, -998, -998, -998, -998, 997, -998, + 83, 83, 83, 83, 83, 83, 83, -998, -998, -998, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -998 + }, + + { + 13, -999, -999, -999, -999, -999, -999, -999, 82, -999, + 83, 83, 83, 83, 83, 83, 83, -999, -999, -999, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -999 + + }, + + { + 13, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1008, + 83, 83, 83, 83, 83, 83, 83, 1008, 1008, 1008, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1010, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1008 + }, + + { + 13, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1012, 1011, + 83, 83, 83, 83, 83, 83, 83, 1011, 1011, 1011, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1013, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1011 + }, + + { + 13,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002 + }, + + { + 13,-1003,-1003,-1003,-1003,-1003,-1003,-1003, 1002,-1003, + 83, 83, 83, 83, 83, 83, 83,-1003,-1003,-1003, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1003 + }, + + { + 13,-1004,-1004,-1004,-1004,-1004,-1004,-1004, 82,-1004, + 83, 83, 83, 83, 83, 83, 83,-1004,-1004,-1004, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1004 + }, + + { + 13,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005 + }, + + { + 13,-1006,-1006,-1006,-1006,-1006,-1006,-1006, 1005,-1006, + 83, 83, 83, 83, 83, 83, 83,-1006,-1006,-1006, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1006 + }, + + { + 13,-1007,-1007,-1007,-1007,-1007,-1007,-1007, 82,-1007, + + 83, 83, 83, 83, 83, 83, 83,-1007,-1007,-1007, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1007 + }, + + { + 13,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008 + }, + + { + 13,-1009,-1009,-1009,-1009,-1009,-1009,-1009, 1008,-1009, + 83, 83, 83, 83, 83, 83, 83,-1009,-1009,-1009, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1009 + + }, + + { + 13,-1010,-1010,-1010,-1010,-1010,-1010,-1010, 82,-1010, + 83, 83, 83, 83, 83, 83, 83,-1010,-1010,-1010, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1010 + }, + + { + 13,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011 + }, + + { + 13,-1012,-1012,-1012,-1012,-1012,-1012,-1012, 1011,-1012, + 83, 83, 83, 83, 83, 83, 83,-1012,-1012,-1012, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83,-1012 + }, + + { + 13,-1013,-1013,-1013,-1013,-1013,-1013,-1013, 82,-1013, + 83, 83, 83, 83, 83, 83, 83,-1013,-1013,-1013, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1013 + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up smitext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + smileng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 115 +#define YY_END_OF_BUFFER 116 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[1014] = + { 0, + 22, 22, 0, 0, 0, 0, 7, 7, 17, 17, + 0, 0, 116, 114, 22, 23, 23, 114, 114, 19, + 19, 19, 114, 114, 19, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 106, 3, 2, 2, 3, + 11, 10, 10, 12, 7, 6, 6, 8, 17, 16, + 16, 18, 114, 113, 113, 22, 23, 0, 112, 0, + 0, 0, 13, 0, 0, 20, 108, 107, 107, 0, + 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 106, 106, 2, 0, 10, 7, 6, 17, 16, + 14, 0, 113, 113, 113, 113, 110, 111, 0, 109, + 0, 21, 105, 105, 105, 105, 105, 105, 105, 105, + 103, 105, 103, 105, 105, 105, 105, 105, 105, 105, + 105, 38, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 71, 105, + 71, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 0, 0, 105, 105, 105, 105, 105, 105, 105, + 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 38, 105, 38, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 4, 0, 15, 15, 105, 105, 105, 105, 105, + 105, 29, 105, 29, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 41, 105, 41, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 1, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 85, 105, 85, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 15, 105, 105, 105, 105, 28, 105, 28, 105, 9, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 42, 105, 42, 105, + 105, 105, 105, 105, 105, 49, 105, 49, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 70, 105, 70, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + 105, 95, 105, 105, 99, 105, 99, 105, 105, 105, + + 24, 105, 24, 105, 105, 105, 105, 105, 105, 105, + 105, 35, 105, 35, 105, 105, 105, 105, 105, 5, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 59, 105, 59, + 105, 65, 105, 105, 65, 105, 105, 73, 105, 73, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 86, 105, 86, 87, 105, 87, 105, 105, + 90, 105, 90, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 40, 105, 40, 43, 105, + + 43, 105, 105, 46, 105, 46, 47, 105, 47, 105, + 105, 51, 105, 51, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 69, 105, + 69, 105, 105, 105, 105, 105, 105, 79, 105, 79, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 27, + 105, 27, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 45, 105, 45, 48, 105, 48, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 83, 105, 83, 84, 105, 84, + 105, 89, 105, 89, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 32, 105, + 32, 33, 105, 33, 105, 105, 105, 105, 105, 105, + 52, 105, 52, 53, 105, 53, 54, 105, 54, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 76, 105, 76, 105, 105, 105, 105, + 105, 82, 105, 82, 105, 105, 93, 105, 93, 92, + 105, 92, 105, 96, 105, 96, 105, 105, 100, 105, + 100, 101, 105, 101, 105, 105, 105, 105, 105, 105, + + 105, 105, 39, 105, 39, 44, 105, 44, 105, 105, + 105, 57, 105, 57, 58, 105, 58, 105, 105, 105, + 105, 105, 105, 105, 105, 74, 105, 74, 105, 105, + 105, 105, 105, 105, 105, 105, 94, 105, 94, 97, + 105, 97, 98, 105, 98, 105, 105, 26, 105, 26, + 105, 105, 34, 105, 34, 36, 105, 36, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 68, 105, + 68, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 30, 105, 30, 105, 37, 105, 37, 105, + 55, 105, 55, 105, 105, 105, 105, 105, 105, 66, + + 105, 66, 105, 72, 105, 72, 105, 105, 105, 105, + 105, 105, 105, 102, 105, 102, 105, 105, 105, 105, + 105, 105, 105, 105, 64, 105, 64, 105, 105, 105, + 105, 80, 105, 80, 105, 105, 105, 105, 105, 50, + 105, 50, 105, 105, 105, 105, 105, 105, 105, 77, + 105, 77, 78, 105, 78, 105, 105, 105, 105, 105, + 105, 105, 61, 105, 61, 105, 105, 67, 105, 67, + 75, 105, 75, 81, 105, 81, 105, 105, 105, 105, + 56, 105, 56, 105, 105, 105, 105, 105, 105, 31, + 105, 31, 60, 105, 60, 105, 63, 105, 63, 105, + + 105, 25, 105, 25, 62, 105, 62, 88, 105, 88, + 91, 105, 91 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 1, 1, 1, 1, 6, 7, + 7, 1, 1, 7, 8, 9, 1, 10, 11, 12, + 13, 14, 15, 16, 15, 15, 15, 17, 18, 1, + 19, 1, 1, 1, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 7, 1, 7, 1, 46, 1, 47, 48, 49, 50, + + 51, 52, 53, 54, 55, 56, 57, 56, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 56, 56, 56, + 56, 56, 7, 7, 67, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int smi_flex_debug; +int smi_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *smitext; +#line 1 "scanner-smi.l" +/* + * scanner-smi.l -- + * + * Lexical rules for scanning the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.l 6539 2007-02-01 08:23:54Z strauss $ + */ +#line 17 "scanner-smi.l" + +#include + + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-smi.h" +#include "parser-smi.tab.h" +#include "scanner-smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so smilex gets arguments */ +#if 0 +#define YY_DECL int smilex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int smilex(YYSTYPE *lvalp,void *parser) +#endif + + +#define thisParser (*(Parser *) parser) + + +#define MAX_UNSIGNED64 "18446744073709551615" +#define MIN_UNSIGNED64 0 +#define MAX_UNSIGNED32 4294967295 +#define MIN_UNSIGNED32 0 +#define MAX_INTEGER32 2147483647 +#define MIN_INTEGER32 -2147483648 + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smiEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + smi_switch_to_buffer(smi_create_buffer(file,YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smiLeaveLexRecursion() +{ + smi_delete_buffer(YY_CURRENT_BUFFER); + smi_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +/* + * Lex pattern definitions. + */ +/* + * Lex state definitions. + */ + + + + + +#line 11498 "" + +#define INITIAL 0 +#define Macro 1 +#define Choice 2 +#define Exports 3 +#define Comment 4 +#define Skipline 5 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int smiwrap (void ); +#else +extern int smiwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( smitext, smileng, 1, smiout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( smiin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( smiin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, smiin))==0 && ferror(smiin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(smiin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int smilex (void); + +#define YY_DECL int smilex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after smitext and smileng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 121 "scanner-smi.l" + + + + + /* + * Lex rules. + */ + + /* + * Lex rules for skipping MACRO. + */ + +#line 11669 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! smiin ) + smiin = stdin; + + if ( ! smiout ) + smiout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + smiensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + smi_create_buffer(smiin,YY_BUF_SIZE ); + } + + smi_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of smitext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + + ++yy_cp; + } + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos) + 1; + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 133 "scanner-smi.l" +{ + BEGIN(Macro); + yylval.id = smitext; + return MACRO; +} + YY_BREAK +case 2: +/* rule 2 can match eol */ +YY_RULE_SETUP +#line 139 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 143 "scanner-smi.l" +{ +} + YY_BREAK +case 4: +/* rule 4 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 3; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 146 "scanner-smi.l" +{ + BEGIN(INITIAL); + yylval.id = smitext; + return END; +} + YY_BREAK +/* + * Lex rules for skipping EXPORTS. + */ +case 5: +YY_RULE_SETUP +#line 156 "scanner-smi.l" +{ + BEGIN(Exports); + yylval.id = smitext; + return EXPORTS; +} + YY_BREAK +case 6: +/* rule 6 can match eol */ +YY_RULE_SETUP +#line 162 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 7: +/* rule 7 can match eol */ +YY_RULE_SETUP +#line 166 "scanner-smi.l" +{ +} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 169 "scanner-smi.l" +{ + BEGIN(INITIAL); + return smitext[0]; +} + YY_BREAK +/* + * Lex rules for skipping CHOICE. + */ +case 9: +YY_RULE_SETUP +#line 178 "scanner-smi.l" +{ + BEGIN(Choice); + yylval.id = smitext; + return CHOICE; +} + YY_BREAK +case 10: +/* rule 10 can match eol */ +YY_RULE_SETUP +#line 184 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 11: +/* rule 11 can match eol */ +YY_RULE_SETUP +#line 188 "scanner-smi.l" +{ +} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 191 "scanner-smi.l" +{ + BEGIN(INITIAL); + return smitext[0]; +} + YY_BREAK +/* + * Lex rules for comments. + */ +case 13: +YY_RULE_SETUP +#line 200 "scanner-smi.l" +{ + BEGIN(Comment); +} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 204 "scanner-smi.l" +{ + thisParser.lcline = thisParser.line; + BEGIN(INITIAL); +} + YY_BREAK +/* Special-case a common error (dashed seperator lines with + * 4n+1 dashes, meaning a single dash outside the comment). + * Print the "lexically unexpected" error that you would normally + * get, and stick in the comment FYI also. + */ +case 15: +/* rule 15 can match eol */ +YY_RULE_SETUP +#line 214 "scanner-smi.l" +{ + smiPrintError(parser, ERR_COMMENT_TERMINATES); + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +case 16: +/* rule 16 can match eol */ +YY_RULE_SETUP +#line 221 "scanner-smi.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 226 "scanner-smi.l" +{ +} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 228 "scanner-smi.l" +{ +} + YY_BREAK +/* + * Lex rules for some special tokens. + */ +case 19: +YY_RULE_SETUP +#line 235 "scanner-smi.l" +{ + return smitext[0]; +} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 239 "scanner-smi.l" +{ + return DOT_DOT; +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 243 "scanner-smi.l" +{ + return COLON_COLON_EQUAL; +} + YY_BREAK +/* + * Lex rules for white space. + */ +case 22: +YY_RULE_SETUP +#line 251 "scanner-smi.l" +{ +} + YY_BREAK +case 23: +/* rule 23 can match eol */ +YY_RULE_SETUP +#line 254 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +/* + * Lex rules for known keywords. + */ +/* SMI(ng) specific */ +case 24: +/* rule 24 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 263 "scanner-smi.l" +{ + yylval.id = smitext; + return ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 269 "scanner-smi.l" +{ + yylval.id = smitext; + return AGENT_CAPABILITIES; +} + YY_BREAK +case 26: +/* rule 26 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 274 "scanner-smi.l" +{ + yylval.id = smitext; + return APPLICATION; +} + YY_BREAK +case 27: +/* rule 27 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 279 "scanner-smi.l" +{ + yylval.id = smitext; + return AUGMENTS; +} + YY_BREAK +case 28: +/* rule 28 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 284 "scanner-smi.l" +{ + yylval.id = smitext; + return BEGIN_; +} + YY_BREAK +case 29: +/* rule 29 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 289 "scanner-smi.l" +{ + yylval.id = smitext; + return BITS; +} + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 294 "scanner-smi.l" +{ + yylval.id = smitext; + return CONTACT_INFO; +} + YY_BREAK +/* SMI(ng) specific */ +case 31: +/* rule 31 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 300 "scanner-smi.l" +{ + yylval.id = smitext; + return CREATION_REQUIRES; +} + YY_BREAK +/* SMI(ng) specific */ +case 32: +/* rule 32 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 306 "scanner-smi.l" +{ + yylval.id = smitext; + return COUNTER32; +} + YY_BREAK +/* SMI(ng) specific */ +case 33: +/* rule 33 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 312 "scanner-smi.l" +{ + yylval.id = smitext; + return COUNTER64; +} + YY_BREAK +/* SMI(ng) specific */ +case 34: +/* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 318 "scanner-smi.l" +{ + yylval.id = smitext; + return DEFINITIONS; +} + YY_BREAK +case 35: +/* rule 35 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 323 "scanner-smi.l" +{ + yylval.id = smitext; + return DEFVAL; +} + YY_BREAK +case 36: +/* rule 36 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 328 "scanner-smi.l" +{ + yylval.id = smitext; + return DESCRIPTION; +} + YY_BREAK +case 37: +/* rule 37 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 333 "scanner-smi.l" +{ + yylval.id = smitext; + return DISPLAY_HINT; +} + YY_BREAK +case 38: +/* rule 38 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 3; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 338 "scanner-smi.l" +{ + yylval.id = smitext; + return END; +} + YY_BREAK +/* SMI(ng) specific */ +case 39: +/* rule 39 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 344 "scanner-smi.l" +{ + yylval.id = smitext; + return ENTERPRISE; +} + YY_BREAK +/* SPPI specific */ +case 40: +/* rule 40 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 350 "scanner-smi.l" +{ + yylval.id = smitext; + return EXTENDS; +} + YY_BREAK +case 41: +/* rule 41 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 355 "scanner-smi.l" +{ + yylval.id = smitext; + return FROM; +} + YY_BREAK +case 42: +/* rule 42 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 360 "scanner-smi.l" +{ + yylval.id = smitext; + return GROUP; +} + YY_BREAK +/* SMI(ng) specific */ +case 43: +/* rule 43 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 366 "scanner-smi.l" +{ + yylval.id = smitext; + return GAUGE32; +} + YY_BREAK +case 44: +/* rule 44 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 371 "scanner-smi.l" +{ + yylval.id = smitext; + return IDENTIFIER; +} + YY_BREAK +case 45: +/* rule 45 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 376 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPLICIT; +} + YY_BREAK +case 46: +/* rule 46 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 381 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPLIED; +} + YY_BREAK +case 47: +/* rule 47 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 386 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPORTS; +} + YY_BREAK +/* SMI(ng) specific */ +case 48: +/* rule 48 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 392 "scanner-smi.l" +{ + yylval.id = smitext; + return INCLUDES; +} + YY_BREAK +case 49: +/* rule 49 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 397 "scanner-smi.l" +{ + yylval.id = smitext; + return INDEX; +} + YY_BREAK +/* SPPI specific */ +case 50: +/* rule 50 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 403 "scanner-smi.l" +{ + yylval.id = smitext; + return INSTALL_ERRORS; +} + YY_BREAK +case 51: +/* rule 51 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 408 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER; +} + YY_BREAK +case 52: +/* rule 52 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 413 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER32; +} + YY_BREAK +/* SPPI specific */ +case 53: +/* rule 53 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 419 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER64; +} + YY_BREAK +case 54: +/* rule 54 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 424 "scanner-smi.l" +{ + yylval.id = smitext; + return IPADDRESS; +} + YY_BREAK +case 55: +/* rule 55 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 429 "scanner-smi.l" +{ + yylval.id = smitext; + return LAST_UPDATED; +} + YY_BREAK +case 56: +/* rule 56 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 16; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 434 "scanner-smi.l" +{ + yylval.id = smitext; + return MANDATORY_GROUPS; +} + YY_BREAK +/* SMI(ng) specific */ +case 57: +/* rule 57 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 440 "scanner-smi.l" +{ + yylval.id = smitext; + return MAX_ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 58: +/* rule 58 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 446 "scanner-smi.l" +{ + yylval.id = smitext; + return MIN_ACCESS; +} + YY_BREAK +case 59: +/* rule 59 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 451 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE; +} + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 456 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE_COMPLIANCE; +} + YY_BREAK +case 61: +/* rule 61 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 461 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE_IDENTITY; +} + YY_BREAK +/* SMI(ng) specific */ +case 62: +/* rule 62 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 467 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATION_GROUP; +} + YY_BREAK +/* SMI(ng) specific */ +case 63: +/* rule 63 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 473 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATION_TYPE; +} + YY_BREAK +/* SMI(ng) specific */ +case 64: +/* rule 64 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 13; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 479 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATIONS; +} + YY_BREAK +case 65: +/* rule 65 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 484 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT; +} + YY_BREAK +case 66: +/* rule 66 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 489 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_GROUP; +} + YY_BREAK +case 67: +/* rule 67 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 494 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_IDENTITY; +} + YY_BREAK +case 68: +/* rule 68 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 499 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_TYPE; +} + YY_BREAK +case 69: +/* rule 69 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 504 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECTS; +} + YY_BREAK +case 70: +/* rule 70 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 509 "scanner-smi.l" +{ + yylval.id = smitext; + return OCTET; +} + YY_BREAK +case 71: +/* rule 71 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 2; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 514 "scanner-smi.l" +{ + yylval.id = smitext; + return OF; +} + YY_BREAK +case 72: +/* rule 72 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 519 "scanner-smi.l" +{ + yylval.id = smitext; + return ORGANIZATION; +} + YY_BREAK +case 73: +/* rule 73 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 524 "scanner-smi.l" +{ + yylval.id = smitext; + return OPAQUE; +} + YY_BREAK +/* SPPI specific */ +case 74: +/* rule 74 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 530 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_ACCESS; +} + YY_BREAK +/* SPPI specific */ +case 75: +/* rule 75 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 536 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_DEFINITIONS; +} + YY_BREAK +/* SPPI specific */ +case 76: +/* rule 76 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 542 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_INDEX; +} + YY_BREAK +/* SPPI specific */ +case 77: +/* rule 77 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 548 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_MIN_ACCESS; +} + YY_BREAK +/* SPPI specific */ +case 78: +/* rule 78 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 554 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_REFERENCES; +} + YY_BREAK +/* SPPI specific */ +case 79: +/* rule 79 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 560 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_TAG; +} + YY_BREAK +/* SPPI specific */ +case 80: +/* rule 80 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 13; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 566 "scanner-smi.l" +{ + yylval.id = smitext; + return POLICY_ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 81: +/* rule 81 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 572 "scanner-smi.l" +{ + yylval.id = smitext; + return PRODUCT_RELEASE; +} + YY_BREAK +case 82: +/* rule 82 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 577 "scanner-smi.l" +{ + yylval.id = smitext; + return REFERENCE; +} + YY_BREAK +case 83: +/* rule 83 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 582 "scanner-smi.l" +{ + yylval.id = smitext; + return REVISION; +} + YY_BREAK +case 84: +/* rule 84 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 587 "scanner-smi.l" +{ + yylval.id = smitext; + return SEQUENCE; +} + YY_BREAK +case 85: +/* rule 85 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 592 "scanner-smi.l" +{ + yylval.id = smitext; + return SIZE; +} + YY_BREAK +case 86: +/* rule 86 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 597 "scanner-smi.l" +{ + yylval.id = smitext; + return STATUS; +} + YY_BREAK +case 87: +/* rule 87 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 602 "scanner-smi.l" +{ + yylval.id = smitext; + return STRING; +} + YY_BREAK +/* SPPI specific */ +case 88: +/* rule 88 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 608 "scanner-smi.l" +{ + yylval.id = smitext; + return SUBJECT_CATEGORIES; +} + YY_BREAK +/* SMI(ng) specific */ +case 89: +/* rule 89 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 614 "scanner-smi.l" +{ + yylval.id = smitext; + return SUPPORTS; +} + YY_BREAK +case 90: +/* rule 90 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 619 "scanner-smi.l" +{ + yylval.id = smitext; + return SYNTAX; +} + YY_BREAK +case 91: +/* rule 91 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 624 "scanner-smi.l" +{ + yylval.id = smitext; + return TEXTUAL_CONVENTION; +} + YY_BREAK +case 92: +/* rule 92 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 629 "scanner-smi.l" +{ + yylval.id = smitext; + return TIMETICKS; +} + YY_BREAK +/* SMI(ng) specific */ +case 93: +/* rule 93 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 635 "scanner-smi.l" +{ + yylval.id = smitext; + return TRAP_TYPE; +} + YY_BREAK +/* SPPI specific */ +case 94: +/* rule 94 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 641 "scanner-smi.l" +{ + yylval.id = smitext; + return UNIQUENESS; +} + YY_BREAK +case 95: +/* rule 95 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 646 "scanner-smi.l" +{ + yylval.id = smitext; + return UNITS; +} + YY_BREAK +/* SMI(ng) specific */ +case 96: +/* rule 96 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 652 "scanner-smi.l" +{ + yylval.id = smitext; + return UNIVERSAL; +} + YY_BREAK +case 97: +/* rule 97 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 657 "scanner-smi.l" +{ + yylval.id = smitext; + return UNSIGNED32; +} + YY_BREAK +/* SPPI specific */ +case 98: +/* rule 98 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 663 "scanner-smi.l" +{ + yylval.id = smitext; + return UNSIGNED64; +} + YY_BREAK +/* SPPI specific */ +case 99: +/* rule 99 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 669 "scanner-smi.l" +{ + yylval.id = smitext; + return VALUE; +} + YY_BREAK +/* SMI(ng) specific */ +case 100: +/* rule 100 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 675 "scanner-smi.l" +{ + yylval.id = smitext; + return VARIABLES; +} + YY_BREAK +/* SMI(ng) specific */ +case 101: +/* rule 101 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 681 "scanner-smi.l" +{ + yylval.id = smitext; + return VARIATION; +} + YY_BREAK +/* SMI(ng) specific */ +case 102: +/* rule 102 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 687 "scanner-smi.l" +{ + yylval.id = smitext; + return WRITE_SYNTAX; +} + YY_BREAK +/* + * Lex rules for forbidden keywords. Do you use {delim} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ +case 103: +/* rule 103 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 698 "scanner-smi.l" +{ + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, smitext); +} + YY_BREAK +case 104: +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 702 "scanner-smi.l" +{ + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, smitext); +} + YY_BREAK +/* + * Lex rules for descriptors. + */ +/* e.g. module names: REF: draft,p.12-13 */ +case 105: +YY_RULE_SETUP +#line 711 "scanner-smi.l" +{ + if (smitext[smileng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smitext); + } + if (strchr(smitext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smitext); + } + yylval.id = smiStrdup(smitext); + return UPPERCASE_IDENTIFIER; +} + YY_BREAK +/* same for lowercase names */ +case 106: +YY_RULE_SETUP +#line 723 "scanner-smi.l" +{ + if (smitext[smileng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smitext); + } + if (strchr(smitext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smitext); + } + yylval.id = smiStrdup(smitext); + return LOWERCASE_IDENTIFIER; +} + YY_BREAK +/* + * Lex rules for numbers. + */ +case 107: +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 738 "scanner-smi.l" +{ + smiPrintError(parser, ERR_LEADING_ZEROS); +} + YY_BREAK +case 108: +/* rule 108 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 742 "scanner-smi.l" +{ + errno = 0; + yylval.unsigned32 = strtoul(smitext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if ((thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) || + (thisParser.modulePtr->export.language == SMI_LANGUAGE_SMIV2)) { + yylval.unsigned64 = strtoull(smitext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%llu", yylval.unsigned64); + if (strcmp(smitext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, smitext); + } + return NUMBER64; + } + + /* We don't want to see this error for the SNMPv2-SMI module, + * neither for COPS-PR-SPPI. */ + if (strcmp(thisParser.modulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parser, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, smitext); + } + } + return NUMBER; +} + YY_BREAK +case 109: +/* rule 109 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 775 "scanner-smi.l" +{ + errno = 0; + yylval.integer32 = strtol(smitext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if (thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) { + yylval.integer64 = strtoll(smitext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%lld", yylval.integer64); + if (strcmp(smitext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_SIGNED64_NUMBER_RANGE, smitext); + } + return NEGATIVENUMBER64; + } + /* We don't want to see this error for the COPS-PR-SPPI module. */ + if (strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) + smiPrintError(parser, ERR_SMIV2_SIGNED_NUMBER_RANGE, smitext); + } + return NEGATIVENUMBER; +} + YY_BREAK +/* + * Lex rules for binary, hexadecimal and quoted strings (RFC 2578 3.1.1) + */ +case 110: +YY_RULE_SETUP +#line 807 "scanner-smi.l" +{ + yylval.text = smitext + 1; + smitext[smileng-2] = '\0'; + if ((smileng-3) % 8) { + smiPrintError(parser, ERR_BIN_STRING_MUL8, yylval.text); + } + return BIN_STRING; +} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 816 "scanner-smi.l" +{ + yylval.text = smitext + 1; + smitext[smileng-2] = '\0'; + if ((smileng-3) % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yylval.text); + } + return HEX_STRING; +} + YY_BREAK +case 112: +/* rule 112 can match eol */ +YY_RULE_SETUP +#line 825 "scanner-smi.l" +{ + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + smitext[smileng-1] = '\0'; + for (d = smitext, s = smitext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line++; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n' || s[0] == '\r') { /* simple newline */ + thisParser.line++; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = smitext; + return QUOTED_STRING; +} + YY_BREAK +/* + * Skip the remainder of the line + */ +case 113: +/* rule 113 can match eol */ +YY_RULE_SETUP +#line 884 "scanner-smi.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +/* + * Everything else... + */ +case 114: +YY_RULE_SETUP +#line 893 "scanner-smi.l" +{ + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + YY_BREAK +case 115: +YY_RULE_SETUP +#line 898 "scanner-smi.l" +ECHO; + YY_BREAK +#line 13190 "" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(Macro): +case YY_STATE_EOF(Choice): +case YY_STATE_EOF(Exports): +case YY_STATE_EOF(Comment): +case YY_STATE_EOF(Skipline): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed smiin at a new source and called + * smilex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = smiin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( smiwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * smitext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of smilex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + smirealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + smirestart(smiin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + if ( ! yy_is_jam ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up smitext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + smirestart(smiin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( smiwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve smitext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void smirestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + smiensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + smi_create_buffer(smiin,YY_BUF_SIZE ); + } + + smi_init_buffer(YY_CURRENT_BUFFER,input_file ); + smi_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void smi_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * smipop_buffer_state(); + * smipush_buffer_state(new_buffer); + */ + smiensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + smi_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (smiwrap()) processing, but the only time this flag + * is looked at is after smiwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void smi_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + smiin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE smi_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) smialloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in smi_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) smialloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in smi_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + smi_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with smi_create_buffer() + * + */ + void smi_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + smifree((void *) b->yy_ch_buf ); + + smifree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a smirestart() or at EOF. + */ + static void smi_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + smi_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then smi_init_buffer was _probably_ + * called from smirestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void smi_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + smi_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void smipush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + smiensure_buffer_stack(); + + /* This block is copied from smi_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from smi_switch_to_buffer. */ + smi_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void smipop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + smi_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + smi_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void smiensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)smialloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)smirealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE smi_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) smialloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in smi_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + smi_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to smilex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * smi_scan_bytes() instead. + */ +YY_BUFFER_STATE smi_scan_string (yyconst char * yystr ) +{ + + return smi_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to smilex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE smi_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) smialloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in smi_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = smi_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in smi_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smitext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + smitext[smileng] = (yy_hold_char); \ + (yy_c_buf_p) = smitext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + smileng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int smiget_lineno (void) +{ + + return smilineno; +} + +/** Get the input stream. + * + */ +FILE *smiget_in (void) +{ + return smiin; +} + +/** Get the output stream. + * + */ +FILE *smiget_out (void) +{ + return smiout; +} + +/** Get the length of the current token. + * + */ +int smiget_leng (void) +{ + return smileng; +} + +/** Get the current token. + * + */ + +char *smiget_text (void) +{ + return smitext; +} + +/** Set the current line number. + * @param line_number + * + */ +void smiset_lineno (int line_number ) +{ + + smilineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see smi_switch_to_buffer + */ +void smiset_in (FILE * in_str ) +{ + smiin = in_str ; +} + +void smiset_out (FILE * out_str ) +{ + smiout = out_str ; +} + +int smiget_debug (void) +{ + return smi_flex_debug; +} + +void smiset_debug (int bdebug ) +{ + smi_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from smilex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + smiin = stdin; + smiout = stdout; +#else + smiin = (FILE *) 0; + smiout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * smilex_init() + */ + return 0; +} + +/* smilex_destroy is for both reentrant and non-reentrant scanners. */ +int smilex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + smi_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + smipop_buffer_state(); + } + + /* Destroy the stack itself. */ + smifree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * smilex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *smialloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *smirealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void smifree (void * ptr ) +{ + free( (char *) ptr ); /* see smirealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 898 "scanner-smi.l" + + + diff --git a/lib/scanner-smi.h b/lib/scanner-smi.h new file mode 100644 index 0000000..e9aa075 --- /dev/null +++ b/lib/scanner-smi.h @@ -0,0 +1,29 @@ +/* + * scanner-smi.h -- + * + * Definition of lexical tokens of the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.h 973 2000-07-17 09:34:36Z strauss $ + */ + +#ifndef _SCANNER_SMI_H +#define _SCANNER_SMI_H + +#include + +#include "parser-smi.h" + +#define YY_NO_UNPUT + +extern char *yytext; +extern int yyleng; + +extern int smiEnterLexRecursion(FILE *file); +extern void smiLeaveLexRecursion(); + +#endif /* _SCANNER_SMI_H */ diff --git a/lib/scanner-smi.l b/lib/scanner-smi.l new file mode 100644 index 0000000..37b4743 --- /dev/null +++ b/lib/scanner-smi.l @@ -0,0 +1,898 @@ +/* + * scanner-smi.l -- + * + * Lexical rules for scanning the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.l 6539 2007-02-01 08:23:54Z strauss $ + */ + +%option noyywrap + +%{ + +#include + + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-smi.h" +#include "parser-smi.tab.h" +#include "scanner-smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so yylex gets arguments */ +#if 0 +#define YY_DECL int yylex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int yylex(YYSTYPE *lvalp, void *parser) +#endif + + +#define thisParser (*(Parser *) parser) + + +#define MAX_UNSIGNED64 "18446744073709551615" +#define MIN_UNSIGNED64 0 +#define MAX_UNSIGNED32 4294967295 +#define MIN_UNSIGNED32 0 +#define MAX_INTEGER32 2147483647 +#define MIN_INTEGER32 -2147483648 + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smiEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smiLeaveLexRecursion() +{ + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +%} + + + +/* + * Lex pattern definitions. + */ +delim ([^a-zA-Z0-9-])|-- +enddelim ([^a-zA-Z0-9-])|--|"" +eol ("\n"|"\n\015"|"\015\n"|"\015") + + + +/* + * Lex state definitions. + */ +%s Macro +%s Choice +%s Exports +%s Comment +%s Skipline + + + +%% + + + + /* + * Lex rules. + */ + + /* + * Lex rules for skipping MACRO. + */ + +MACRO { + BEGIN(Macro); + yylval.id = yytext; + return MACRO; +} + +{eol} { + thisParser.line++; +} + +. { +} + +END/{delim} { + BEGIN(INITIAL); + yylval.id = yytext; + return END; +} + + /* + * Lex rules for skipping EXPORTS. + */ + +EXPORTS { + BEGIN(Exports); + yylval.id = yytext; + return EXPORTS; +} + +{eol} { + thisParser.line++; +} + +[^\;]* { +} + +\; { + BEGIN(INITIAL); + return yytext[0]; +} + + /* + * Lex rules for skipping CHOICE. + */ + +CHOICE { + BEGIN(Choice); + yylval.id = yytext; + return CHOICE; +} + +{eol} { + thisParser.line++; +} + +[^\}] { +} + +\} { + BEGIN(INITIAL); + return yytext[0]; +} + + /* + * Lex rules for comments. + */ + +"--" { + BEGIN(Comment); +} + +"--" { + thisParser.lcline = thisParser.line; + BEGIN(INITIAL); +} + + /* Special-case a common error (dashed seperator lines with + * 4n+1 dashes, meaning a single dash outside the comment). + * Print the "lexically unexpected" error that you would normally + * get, and stick in the comment FYI also. + */ +"---"{eol} { + smiPrintError(parser, ERR_COMMENT_TERMINATES); + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + thisParser.line++; + BEGIN(INITIAL); +} + +{eol} { + thisParser.line++; + BEGIN(INITIAL); +} + +[^-\n\015]* { +} +"-" { +} + + /* + * Lex rules for some special tokens. + */ + +[\[\]\{\}\(\)\:\;\,\-\.\|] { + return yytext[0]; +} + +".." { + return DOT_DOT; +} + +"::=" { + return COLON_COLON_EQUAL; +} + + /* + * Lex rules for white space. + */ + +[ \t]* { +} + +{eol} { + thisParser.line++; +} + + /* + * Lex rules for known keywords. + */ + + /* SMI(ng) specific */ +ACCESS/{delim} { + yylval.id = yytext; + return ACCESS; +} + + /* SMI(ng) specific */ +AGENT-CAPABILITIES/{delim} { + yylval.id = yytext; + return AGENT_CAPABILITIES; +} + +APPLICATION/{delim} { + yylval.id = yytext; + return APPLICATION; +} + +AUGMENTS/{delim} { + yylval.id = yytext; + return AUGMENTS; +} + +BEGIN/{delim} { + yylval.id = yytext; + return BEGIN_; +} + +BITS/{delim} { + yylval.id = yytext; + return BITS; +} + +CONTACT-INFO/{delim} { + yylval.id = yytext; + return CONTACT_INFO; +} + + /* SMI(ng) specific */ +CREATION-REQUIRES/{delim} { + yylval.id = yytext; + return CREATION_REQUIRES; +} + + /* SMI(ng) specific */ +Counter32/{delim} { + yylval.id = yytext; + return COUNTER32; +} + + /* SMI(ng) specific */ +Counter64/{delim} { + yylval.id = yytext; + return COUNTER64; +} + + /* SMI(ng) specific */ +DEFINITIONS/{delim} { + yylval.id = yytext; + return DEFINITIONS; +} + +DEFVAL/{delim} { + yylval.id = yytext; + return DEFVAL; +} + +DESCRIPTION/{delim} { + yylval.id = yytext; + return DESCRIPTION; +} + +DISPLAY-HINT/{delim} { + yylval.id = yytext; + return DISPLAY_HINT; +} + +END/{enddelim} { + yylval.id = yytext; + return END; +} + + /* SMI(ng) specific */ +ENTERPRISE/{delim} { + yylval.id = yytext; + return ENTERPRISE; +} + + /* SPPI specific */ +EXTENDS/{delim} { + yylval.id = yytext; + return EXTENDS; +} + +FROM/{delim} { + yylval.id = yytext; + return FROM; +} + +GROUP/{delim} { + yylval.id = yytext; + return GROUP; +} + + /* SMI(ng) specific */ +Gauge32/{delim} { + yylval.id = yytext; + return GAUGE32; +} + +IDENTIFIER/{delim} { + yylval.id = yytext; + return IDENTIFIER; +} + +IMPLICIT/{delim} { + yylval.id = yytext; + return IMPLICIT; +} + +IMPLIED/{delim} { + yylval.id = yytext; + return IMPLIED; +} + +IMPORTS/{delim} { + yylval.id = yytext; + return IMPORTS; +} + + /* SMI(ng) specific */ +INCLUDES/{delim} { + yylval.id = yytext; + return INCLUDES; +} + +INDEX/{delim} { + yylval.id = yytext; + return INDEX; +} + + /* SPPI specific */ +INSTALL-ERRORS/{delim} { + yylval.id = yytext; + return INSTALL_ERRORS; +} + +INTEGER/{delim} { + yylval.id = yytext; + return INTEGER; +} + +Integer32/{delim} { + yylval.id = yytext; + return INTEGER32; +} + + /* SPPI specific */ +Integer64/{delim} { + yylval.id = yytext; + return INTEGER64; +} + +IpAddress/{delim} { + yylval.id = yytext; + return IPADDRESS; +} + +LAST-UPDATED/{delim} { + yylval.id = yytext; + return LAST_UPDATED; +} + +MANDATORY-GROUPS/{delim} { + yylval.id = yytext; + return MANDATORY_GROUPS; +} + + /* SMI(ng) specific */ +MAX-ACCESS/{delim} { + yylval.id = yytext; + return MAX_ACCESS; +} + + /* SMI(ng) specific */ +MIN-ACCESS/{delim} { + yylval.id = yytext; + return MIN_ACCESS; +} + +MODULE/{delim} { + yylval.id = yytext; + return MODULE; +} + +MODULE-COMPLIANCE/{delim} { + yylval.id = yytext; + return MODULE_COMPLIANCE; +} + +MODULE-IDENTITY/{delim} { + yylval.id = yytext; + return MODULE_IDENTITY; +} + + /* SMI(ng) specific */ +NOTIFICATION-GROUP/{delim} { + yylval.id = yytext; + return NOTIFICATION_GROUP; +} + + /* SMI(ng) specific */ +NOTIFICATION-TYPE/{delim} { + yylval.id = yytext; + return NOTIFICATION_TYPE; +} + + /* SMI(ng) specific */ +NOTIFICATIONS/{delim} { + yylval.id = yytext; + return NOTIFICATIONS; +} + +OBJECT/{delim} { + yylval.id = yytext; + return OBJECT; +} + +OBJECT-GROUP/{delim} { + yylval.id = yytext; + return OBJECT_GROUP; +} + +OBJECT-IDENTITY/{delim} { + yylval.id = yytext; + return OBJECT_IDENTITY; +} + +OBJECT-TYPE/{delim} { + yylval.id = yytext; + return OBJECT_TYPE; +} + +OBJECTS/{delim} { + yylval.id = yytext; + return OBJECTS; +} + +OCTET/{delim} { + yylval.id = yytext; + return OCTET; +} + +OF/{delim} { + yylval.id = yytext; + return OF; +} + +ORGANIZATION/{delim} { + yylval.id = yytext; + return ORGANIZATION; +} + +Opaque/{delim} { + yylval.id = yytext; + return OPAQUE; +} + + /* SPPI specific */ +PIB-ACCESS/{delim} { + yylval.id = yytext; + return PIB_ACCESS; +} + + /* SPPI specific */ +PIB-DEFINITIONS/{delim} { + yylval.id = yytext; + return PIB_DEFINITIONS; +} + + /* SPPI specific */ +PIB-INDEX/{delim} { + yylval.id = yytext; + return PIB_INDEX; +} + + /* SPPI specific */ +PIB-MIN-ACCESS/{delim} { + yylval.id = yytext; + return PIB_MIN_ACCESS; +} + + /* SPPI specific */ +PIB-REFERENCES/{delim} { + yylval.id = yytext; + return PIB_REFERENCES; +} + + /* SPPI specific */ +PIB-TAG/{delim} { + yylval.id = yytext; + return PIB_TAG; +} + + /* SPPI specific */ +POLICY-ACCESS/{delim} { + yylval.id = yytext; + return POLICY_ACCESS; +} + + /* SMI(ng) specific */ +PRODUCT-RELEASE/{delim} { + yylval.id = yytext; + return PRODUCT_RELEASE; +} + +REFERENCE/{delim} { + yylval.id = yytext; + return REFERENCE; +} + +REVISION/{delim} { + yylval.id = yytext; + return REVISION; +} + +SEQUENCE/{delim} { + yylval.id = yytext; + return SEQUENCE; +} + +SIZE/{delim} { + yylval.id = yytext; + return SIZE; +} + +STATUS/{delim} { + yylval.id = yytext; + return STATUS; +} + +STRING/{delim} { + yylval.id = yytext; + return STRING; +} + + /* SPPI specific */ +SUBJECT-CATEGORIES/{delim} { + yylval.id = yytext; + return SUBJECT_CATEGORIES; +} + + /* SMI(ng) specific */ +SUPPORTS/{delim} { + yylval.id = yytext; + return SUPPORTS; +} + +SYNTAX/{delim} { + yylval.id = yytext; + return SYNTAX; +} + +TEXTUAL-CONVENTION/{delim} { + yylval.id = yytext; + return TEXTUAL_CONVENTION; +} + +TimeTicks/{delim} { + yylval.id = yytext; + return TIMETICKS; +} + + /* SMI(ng) specific */ +TRAP-TYPE/{delim} { + yylval.id = yytext; + return TRAP_TYPE; +} + + /* SPPI specific */ +UNIQUENESS/{delim} { + yylval.id = yytext; + return UNIQUENESS; +} + +UNITS/{delim} { + yylval.id = yytext; + return UNITS; +} + + /* SMI(ng) specific */ +UNIVERSAL/{delim} { + yylval.id = yytext; + return UNIVERSAL; +} + +Unsigned32/{delim} { + yylval.id = yytext; + return UNSIGNED32; +} + + /* SPPI specific */ +Unsigned64/{delim} { + yylval.id = yytext; + return UNSIGNED64; +} + + /* SPPI specific */ +VALUE/{delim} { + yylval.id = yytext; + return VALUE; +} + + /* SMI(ng) specific */ +VARIABLES/{delim} { + yylval.id = yytext; + return VARIABLES; +} + + /* SMI(ng) specific */ +VARIATION/{delim} { + yylval.id = yytext; + return VARIATION; +} + + /* SMI(ng) specific */ +WRITE-SYNTAX/{delim} { + yylval.id = yytext; + return WRITE_SYNTAX; +} + + /* + * Lex rules for forbidden keywords. Do you use {delim} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +ABSENT|ANY|BIT|BOOLEAN|BY|COMPONENT|COMPONENTS|DEFAULT|DEFINED|ENUMERATED|EXPLICIT|EXTERNAL|FALSE|MAX|MIN|MINUS-INFINITY|NULL|OPTIONAL|PLUS-INFINITY|PRESENT|PRIVATE|REAL|SET|TAGS|TRUE|WITH/[^a-zA-Z0-9-] { + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, yytext); +} + +ABSENT|ANY|BIT|BOOLEAN|BY|COMPONENT|COMPONENTS|DEFAULT|DEFINED|ENUMERATED|EXPLICIT|EXTERNAL|FALSE|MAX|MIN|MINUS-INFINITY|NULL|OPTIONAL|PLUS-INFINITY|PRESENT|PRIVATE|REAL|SET|TAGS|TRUE|WITH/-- { + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, yytext); +} + + /* + * Lex rules for descriptors. + */ + + /* e.g. module names: REF: draft,p.12-13 */ +[A-Z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.id = smiStrdup(yytext); + return UPPERCASE_IDENTIFIER; +} + + /* same for lowercase names */ +[a-z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.id = smiStrdup(yytext); + return LOWERCASE_IDENTIFIER; +} + + /* + * Lex rules for numbers. + */ + +0+/[0-9] { + smiPrintError(parser, ERR_LEADING_ZEROS); +} + +([1-9][0-9]*|0)/[^0-9] { + errno = 0; + yylval.unsigned32 = strtoul(yytext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if ((thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) || + (thisParser.modulePtr->export.language == SMI_LANGUAGE_SMIV2)) { + yylval.unsigned64 = strtoull(yytext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%llu", yylval.unsigned64); + if (strcmp(yytext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, yytext); + } + return NUMBER64; + } + + /* We don't want to see this error for the SNMPv2-SMI module, + * neither for COPS-PR-SPPI. */ + if (strcmp(thisParser.modulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parser, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, yytext); + } + } + return NUMBER; +} + +-([1-9][0-9]*|0)/[^0-9] { + errno = 0; + yylval.integer32 = strtol(yytext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if (thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) { + yylval.integer64 = strtoll(yytext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%lld", yylval.integer64); + if (strcmp(yytext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_SIGNED64_NUMBER_RANGE, yytext); + } + return NEGATIVENUMBER64; + } + /* We don't want to see this error for the COPS-PR-SPPI module. */ + if (strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) + smiPrintError(parser, ERR_SMIV2_SIGNED_NUMBER_RANGE, yytext); + } + return NEGATIVENUMBER; +} + + /* + * Lex rules for binary, hexadecimal and quoted strings (RFC 2578 3.1.1) + */ + +\'[01]*\'[bB] { + yylval.text = yytext + 1; + yytext[yyleng-2] = '\0'; + if ((yyleng-3) % 8) { + smiPrintError(parser, ERR_BIN_STRING_MUL8, yylval.text); + } + return BIN_STRING; +} + +\'[0123456789AaBbCcDdEeFf]*\'[hH] { + yylval.text = yytext + 1; + yytext[yyleng-2] = '\0'; + if ((yyleng-3) % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yylval.text); + } + return HEX_STRING; +} + +\"[^\"]*\" { + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + yytext[yyleng-1] = '\0'; + for (d = yytext, s = yytext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line++; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n' || s[0] == '\r') { /* simple newline */ + thisParser.line++; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = yytext; + return QUOTED_STRING; +} + + /* + * Skip the remainder of the line + */ +.*{eol} { + thisParser.line++; + BEGIN(INITIAL); +} + + /* + * Everything else... + */ + +. { + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + +%% diff --git a/lib/scanner-sming.c b/lib/scanner-sming.c new file mode 100644 index 0000000..2d6ef23 --- /dev/null +++ b/lib/scanner-sming.c @@ -0,0 +1,7508 @@ + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE smingrestart(smingin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int smingleng; + +extern FILE *smingin, *smingout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smingtext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up smingtext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via smingrestart()), so that the user can continue scanning by + * just pointing smingin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when smingtext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int smingleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow smingwrap()'s to do buffer switches + * instead of setting up a fresh smingin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void smingrestart (FILE *input_file ); +void sming_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE sming_create_buffer (FILE *file,int size ); +void sming_delete_buffer (YY_BUFFER_STATE b ); +void sming_flush_buffer (YY_BUFFER_STATE b ); +void smingpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void smingpop_buffer_state (void ); + +static void smingensure_buffer_stack (void ); +static void sming_load_buffer_state (void ); +static void sming_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER sming_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE sming_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE sming_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE sming_scan_bytes (yyconst char *bytes,int len ); + +void *smingalloc (yy_size_t ); +void *smingrealloc (void *,yy_size_t ); +void smingfree (void * ); + +#define yy_new_buffer sming_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + smingensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + sming_create_buffer(smingin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + smingensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + sming_create_buffer(smingin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define smingwrap() 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *smingin = (FILE *) 0, *smingout = (FILE *) 0; + +typedef int yy_state_type; + +extern int sminglineno; + +int sminglineno = 1; + +extern char *smingtext; +#define yytext_ptr smingtext +static yyconst flex_int16_t yy_nxt[][59] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + + { + 5, 6, 7, 8, 9, 7, 6, 10, 11, 6, + 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, + 15, 16, 17, 18, 19, 20, 17, 21, 22, 23, + 17, 24, 6, 6, 25, 26, 27, 28, 29, 30, + + 26, 26, 31, 26, 26, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 26, 26, 26, 26, 26 + }, + + { + 5, 6, 7, 8, 9, 7, 6, 10, 11, 6, + 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, + 15, 16, 17, 18, 19, 20, 17, 21, 22, 23, + 17, 24, 6, 6, 25, 26, 27, 28, 29, 30, + 26, 26, 31, 26, 26, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 26, 26, 26, 26, 26 + }, + + { + 5, 41, 41, 42, 43, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41 + }, + + { + 5, 41, 41, 42, 43, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41 + + }, + + { + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5 + }, + + { + 5, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6 + }, + + { + 5, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7 + }, + + { + 5, -8, -8, -8, 44, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8 + }, + + { + 5, -9, -9, 44, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9 + + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11 + }, + + { + 5, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 49, 48, 50, 50, 50, 50, 50, 50, 50, + 50, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48 + }, + + { + 5, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, 51, -13, -13, -13, -13, -13, -13, -13, + + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13 + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 55, 56, 56, 56, 56, 56, 56, + 56, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 58, 57, 57 + + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 59, 59, 59, 59, 59, 59, 59, + 59, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57 + }, + + { + 5, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, 60, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16 + }, + + { + 5, -17, -17, -17, -17, -17, -17, -17, -17, -17, + 61, 62, -17, 63, 63, 63, 63, 63, 63, 63, + 63, -17, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -17, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -18, -18, -18, -18, -18, -18, -18, -18, -18, + 61, 62, -18, 63, 63, 63, 63, 63, 63, 63, + + 63, -18, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -18, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -19, -19, -19, -19, -19, -19, -19, -19, -19, + 61, 62, -19, 63, 63, 63, 63, 63, 63, 63, + 63, -19, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -19, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 66, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -20, -20, -20, -20, -20, -20, -20, -20, -20, + 61, 62, -20, 63, 63, 63, 63, 63, 63, 63, + 63, -20, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -20, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 67, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -21, -21, -21, -21, -21, -21, -21, -21, -21, + 61, 62, -21, 63, 63, 63, 63, 63, 63, 63, + 63, -21, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -21, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 68, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -22, -22, -22, -22, -22, -22, -22, -22, -22, + 61, 62, -22, 63, 63, 63, 63, 63, 63, 63, + 63, -22, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -22, 64, 63, 69, 70, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -23, -23, -23, -23, -23, -23, -23, -23, -23, + 61, 62, -23, 63, 63, 63, 63, 63, 63, 63, + + 63, -23, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -23, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 71, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -24, -24, -24, -24, -24, -24, -24, -24, -24, + 61, 62, -24, 63, 63, 63, 63, 63, 63, 63, + 63, -24, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -24, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 72, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -25, -25, -25, -25, -25, -25, -25, -25, -25, + 73, 62, -25, 74, 74, 74, 74, 74, 74, 74, + 74, -25, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -25, 75, 74, 76, 77, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 78, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -26, -26, -26, -26, -26, -26, -26, -26, -26, + 73, 62, -26, 74, 74, 74, 74, 74, 74, 74, + 74, -26, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -26, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -27, -27, -27, -27, -27, -27, -27, -27, -27, + 73, 62, -27, 74, 74, 74, 74, 74, 74, 74, + 74, -27, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -27, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 79, 74, 74, 80, 74, 74, + 74, 74, 74, 81, 74, 74, 74, 74, 74 + }, + + { + 5, -28, -28, -28, -28, -28, -28, -28, -28, -28, + 73, 62, -28, 74, 74, 74, 74, 74, 74, 74, + + 74, -28, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -28, 75, 82, 74, 74, 74, 83, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -29, -29, -29, -29, -29, -29, -29, -29, -29, + 73, 62, -29, 74, 74, 74, 74, 74, 74, 74, + 74, -29, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -29, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 84, 74, 85, 74, 74 + + }, + + { + 5, -30, -30, -30, -30, -30, -30, -30, -30, -30, + 73, 62, -30, 74, 74, 74, 74, 74, 74, 74, + 74, -30, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -30, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 86, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -31, -31, -31, -31, -31, -31, -31, -31, -31, + 73, 62, -31, 74, 74, 74, 74, 74, 74, 74, + 74, -31, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -31, 75, 74, 74, 74, 87, 74, 74, + + 74, 74, 74, 74, 74, 88, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -32, -32, -32, -32, -32, -32, -32, -32, -32, + 73, 62, -32, 74, 74, 74, 74, 74, 74, 74, + 74, -32, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -32, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 89, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -33, -33, -33, -33, -33, -33, -33, -33, -33, + 73, 62, -33, 74, 74, 74, 74, 74, 74, 74, + + 74, -33, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -33, 75, 74, 74, 74, 74, 90, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -34, -34, -34, -34, -34, -34, -34, -34, -34, + 73, 62, -34, 74, 74, 74, 74, 74, 74, 74, + 74, -34, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -34, 75, 74, 91, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 92, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -35, -35, -35, -35, -35, -35, -35, -35, -35, + 73, 62, -35, 74, 74, 74, 74, 74, 74, 74, + 74, -35, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -35, 75, 93, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 94, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -36, -36, -36, -36, -36, -36, -36, -36, -36, + 73, 62, -36, 74, 74, 74, 74, 74, 74, 74, + 74, -36, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -36, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 95, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -37, -37, -37, -37, -37, -37, -37, -37, -37, + 73, 62, -37, 74, 74, 74, 74, 74, 74, 74, + 74, -37, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -37, 75, 74, 74, 74, 74, 96, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -38, -38, -38, -38, -38, -38, -38, -38, -38, + 73, 62, -38, 74, 74, 74, 74, 74, 74, 74, + + 74, -38, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -38, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 97, 74, 74, 74, + 74, 74, 98, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -39, -39, -39, -39, -39, -39, -39, -39, -39, + 73, 62, -39, 74, 74, 74, 74, 74, 74, 74, + 74, -39, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -39, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 99, 74 + + }, + + { + 5, -40, -40, -40, -40, -40, -40, -40, -40, -40, + 73, 62, -40, 74, 74, 74, 74, 74, 74, 74, + 74, -40, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -40, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 100, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 101, 101, 102, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -42, -42, -42, 104, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42 + }, + + { + 5, 101, 101, 105, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44 + + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46 + }, + + { + 5, 45, 45, 45, 45, 45, 45, 106, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48 + }, + + { + 5, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49 + + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, + 108, 107, 107, 107, 109, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 109, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -51, 110, 111, 112, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110 + }, + + { + 5, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52 + }, + + { + 5, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, 62, -53, 113, 113, 113, 113, 113, 113, 113, + + 113, -53, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -53, -53, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, 114, 114, 114, 114, 114, 114, 114, + 114, -54, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -54, -54, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -55, -55, -55, -55, -55, -55, -55, -55, -55, + 116, 117, -55, 55, 56, 56, 56, 56, 56, 56, + 56, -55, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -55, -55, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -56, -56, -56, -56, -56, -56, -56, -56, -56, + 116, 117, -56, 118, 118, 118, 118, 118, 118, 118, + 118, -56, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -56, -56, 113, 113, 113, 113, 113, 113, + + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 116, 62, -57, 113, 113, 113, 113, 113, 113, 113, + 113, -57, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -57, -57, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -58, -58, -58, -58, -58, -58, -58, -58, -58, + 116, 62, -58, 119, 119, 119, 119, 119, 119, 119, + + 119, -58, 119, 119, 119, 119, 113, 113, 113, 113, + 113, 113, -58, -58, 119, 119, 119, 119, 119, 119, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 59, 59, 59, 59, 59, 59, 59, + 59, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57 + + }, + + { + 5, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60 + }, + + { + 5, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, 62, -61, 63, 63, 63, 63, 63, 63, 63, + 63, -61, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -61, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, 115, 115, 115, 115, 115, 115, 115, + 115, -62, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -62, -62, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -63, -63, -63, -63, -63, -63, -63, -63, -63, + 61, 62, -63, 63, 63, 63, 63, 63, 63, 63, + + 63, -63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -63, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -64, -64, -64, -64, -64, -64, -64, -64, -64, + 120, -64, -64, 64, 64, 64, 64, 64, 64, 64, + 64, -64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, -65, -65, -65, -65, -65, -65, -65, -65, -65, + 61, 62, -65, 63, 63, 63, 63, 63, 63, 63, + 63, -65, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -65, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 121, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -66, -66, -66, -66, -66, -66, -66, -66, -66, + 61, 62, -66, 63, 63, 63, 63, 63, 63, 63, + 63, -66, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -66, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 122, 63, 63, 63, 63, 63 + }, + + { + 5, -67, -67, -67, -67, -67, -67, -67, -67, -67, + 61, 62, -67, 63, 63, 63, 63, 63, 63, 63, + 63, -67, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -67, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 123, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -68, -68, -68, -68, -68, -68, -68, -68, -68, + 61, 62, -68, 63, 63, 63, 63, 63, 63, 63, + + 63, -68, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -68, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 124, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -69, -69, -69, -69, -69, -69, -69, -69, -69, + 61, 62, -69, 63, 63, 63, 63, 63, 63, 63, + 63, -69, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -69, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 125, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -70, -70, -70, -70, -70, -70, -70, -70, -70, + 61, 62, -70, 63, 63, 63, 63, 63, 63, 63, + 63, -70, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -70, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 126, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -71, -71, -71, -71, -71, -71, -71, -71, -71, + 61, 62, -71, 63, 63, 63, 63, 63, 63, 63, + 63, -71, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -71, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 127, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 61, 62, -72, 63, 63, 63, 63, 63, 63, 63, + 63, -72, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -72, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 128, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, 62, -73, 74, 74, 74, 74, 74, 74, 74, + + 74, -73, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -73, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -74, -74, -74, -74, -74, -74, -74, -74, -74, + 73, 62, -74, 74, 74, 74, 74, 74, 74, 74, + 74, -74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -74, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -75, -75, -75, -75, -75, -75, -75, -75, -75, + 129, -75, -75, 75, 75, 75, 75, 75, 75, 75, + 75, -75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -76, -76, -76, -76, -76, -76, -76, -76, -76, + 73, 62, -76, 74, 74, 74, 74, 74, 74, 74, + 74, -76, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -76, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 130, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -77, -77, -77, -77, -77, -77, -77, -77, -77, + 73, 62, -77, 74, 74, 74, 74, 74, 74, 74, + 74, -77, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -77, 75, 74, 74, 131, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 73, 62, -78, 74, 74, 74, 74, 74, 74, 74, + + 74, -78, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -78, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 132, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -79, -79, -79, -79, -79, -79, -79, -79, -79, + 73, 62, -79, 74, 74, 74, 74, 74, 74, 74, + 74, -79, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -79, 75, 133, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -80, -80, -80, -80, -80, -80, -80, -80, -80, + 73, 62, -80, 74, 74, 74, 74, 74, 74, 74, + 74, -80, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -80, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 134, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 73, 62, -81, 74, 74, 74, 74, 74, 74, 74, + 74, -81, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -81, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 135, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 73, 62, -82, 74, 74, 74, 74, 74, 74, 74, + 74, -82, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -82, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 136, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -83, -83, -83, -83, -83, -83, -83, -83, -83, + 73, 62, -83, 74, 74, 74, 74, 74, 74, 74, + + 74, -83, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -83, 75, 74, 74, 74, 74, 74, 137, + 74, 74, 74, 74, 74, 74, 74, 74, 138, 74, + 74, 139, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -84, -84, -84, -84, -84, -84, -84, -84, -84, + 73, 62, -84, 74, 74, 74, 74, 74, 74, 74, + 74, -84, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -84, 75, 74, 74, 74, 74, 140, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -85, -85, -85, -85, -85, -85, -85, -85, -85, + 73, 62, -85, 74, 74, 74, 74, 74, 74, 74, + 74, -85, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -85, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 141, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -86, -86, -86, -86, -86, -86, -86, -86, -86, + 73, 62, -86, 74, 74, 74, 74, 74, 74, 74, + 74, -86, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -86, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 142, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -87, -87, -87, -87, -87, -87, -87, -87, -87, + 73, 62, -87, 74, 74, 74, 74, 74, 74, 74, + 74, -87, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -87, 75, 74, 74, 74, 74, 143, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -88, -88, -88, -88, -88, -88, -88, -88, -88, + 73, 62, -88, 74, 74, 74, 74, 74, 74, 74, + + 74, -88, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -88, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 144, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -89, -89, -89, -89, -89, -89, -89, -89, -89, + 73, 62, -89, 74, 74, 74, 74, 74, 74, 74, + 74, -89, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -89, 75, 74, 74, 74, 145, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 73, 62, -90, 74, 74, 74, 74, 74, 74, 74, + 74, -90, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -90, 75, 74, 74, 74, 74, 74, 74, + 146, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -91, -91, -91, -91, -91, -91, -91, -91, -91, + 73, 62, -91, 74, 74, 74, 74, 74, 74, 74, + 74, -91, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -91, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 147, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -92, -92, -92, -92, -92, -92, -92, -92, -92, + 73, 62, -92, 74, 74, 74, 74, 74, 74, 74, + 74, -92, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -92, 75, 74, 74, 74, 74, 74, 74, + 148, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -93, -93, -93, -93, -93, -93, -93, -93, -93, + 73, 62, -93, 74, 74, 74, 74, 74, 74, 74, + + 74, -93, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -93, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 149, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -94, -94, -94, -94, -94, -94, -94, -94, -94, + 73, 62, -94, 74, 74, 74, 74, 74, 74, 74, + 74, -94, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -94, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 150, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -95, -95, -95, -95, -95, -95, -95, -95, -95, + 73, 62, -95, 74, 74, 74, 74, 74, 74, 74, + 74, -95, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -95, 75, 151, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -96, -96, -96, -96, -96, -96, -96, -96, -96, + 73, 62, -96, 74, 74, 74, 74, 74, 74, 74, + 74, -96, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -96, 75, 152, 74, 74, 74, 74, 153, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 154, 74, 74, 74, 74 + }, + + { + 5, -97, -97, -97, -97, -97, -97, -97, -97, -97, + 73, 62, -97, 74, 74, 74, 74, 74, 74, 74, + 74, -97, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -97, 75, 155, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -98, -98, -98, -98, -98, -98, -98, -98, -98, + 73, 62, -98, 74, 74, 74, 74, 74, 74, 74, + + 74, -98, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -98, 75, 156, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -99, -99, -99, -99, -99, -99, -99, -99, -99, + 73, 62, -99, 74, 74, 74, 74, 74, 74, 74, + 74, -99, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -99, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 157, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -100, -100, -100, -100, -100, -100, -100, -100, -100, + 73, 62, -100, 74, 74, 74, 74, 74, 74, 74, + 74, -100, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -100, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 158, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 101, 101, 102, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -102, -102, -102, 104, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102 + }, + + { + 5, 101, 101, 105, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104 + + }, + + { + 5, -105, -105, -105, 104, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105 + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, + + 108, 107, 107, 107, 109, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 109, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -109, -109, -109, -109, -109, -109, -109, -109, 159, + 159, -109, -109, 160, 160, 160, 160, 160, 160, 160, + 160, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109 + + }, + + { + 5, -110, 110, 111, 112, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110 + }, + + { + 5, -111, -111, -111, 161, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111 + }, + + { + 5, -112, -112, 162, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112 + }, + + { + 5, -113, -113, -113, -113, -113, -113, -113, -113, -113, + 116, 62, -113, 113, 113, 113, 113, 113, 113, 113, + + 113, -113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -113, -113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 163, 164, 107, 114, 114, 114, 114, 114, 114, 114, + 114, 107, 165, 165, 166, 165, 165, 165, 165, 165, + 165, 165, 107, 107, 165, 165, 165, 165, 166, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165 + + }, + + { + 5, -115, -115, -115, -115, -115, -115, -115, -115, -115, + 167, 168, -115, 115, 115, 115, 115, 115, 115, 115, + 115, -115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -115, -115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, 62, -116, 113, 113, 113, 113, 113, 113, 113, + 113, -116, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -116, -116, 113, 113, 113, 113, 113, 113, + + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, 114, 114, 114, 114, 114, 114, 114, + 114, -117, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -117, -117, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -118, -118, -118, -118, -118, -118, -118, -118, -118, + 116, 117, -118, 118, 118, 118, 118, 118, 118, 118, + + 118, -118, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -118, -118, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 170, 171, 169, 119, 119, 119, 119, 119, 119, 119, + 119, 169, 119, 119, 119, 119, 172, 172, 172, 172, + 172, 172, 169, 169, 119, 119, 119, 119, 119, 119, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172 + + }, + + { + 5, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, 64, 64, 64, 64, 64, 64, 64, + 64, -120, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -120, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -121, -121, -121, -121, -121, -121, -121, -121, -121, + 61, 62, -121, 63, 63, 63, 63, 63, 63, 63, + 63, -121, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -121, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 173, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -122, -122, -122, -122, -122, -122, -122, -122, -122, + 61, 62, -122, 63, 63, 63, 63, 63, 63, 63, + 63, -122, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -122, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 174, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -123, -123, -123, -123, -123, -123, -123, -123, -123, + 61, 62, -123, 63, 63, 63, 63, 63, 63, 63, + + 63, -123, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -123, 64, 175, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -124, -124, -124, -124, -124, -124, -124, -124, -124, + 61, 62, -124, 63, 63, 63, 63, 63, 63, 63, + 63, -124, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -124, 64, 63, 63, 63, 63, 176, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -125, -125, -125, -125, -125, -125, -125, -125, -125, + 61, 62, -125, 63, 63, 63, 63, 63, 63, 63, + 63, -125, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -125, 64, 63, 63, 63, 63, 177, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -126, -126, -126, -126, -126, -126, -126, -126, -126, + 61, 62, -126, 63, 63, 63, 63, 63, 63, 63, + 63, -126, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -126, 64, 63, 63, 63, 63, 178, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -127, -127, -127, -127, -127, -127, -127, -127, -127, + 61, 62, -127, 63, 63, 63, 63, 63, 63, 63, + 63, -127, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -127, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 179, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -128, -128, -128, -128, -128, -128, -128, -128, -128, + 61, 62, -128, 63, 63, 63, 63, 63, 63, 63, + + 63, -128, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -128, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 180, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, 75, 75, 75, 75, 75, 75, 75, + 75, -129, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -129, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -130, -130, -130, -130, -130, -130, -130, -130, -130, + 73, 62, -130, 74, 74, 74, 74, 74, 74, 74, + 74, -130, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -130, 75, 74, 74, 74, 74, 74, 181, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -131, -131, -131, -131, -131, -131, -131, -131, -131, + 73, 62, -131, 74, 74, 74, 74, 74, 74, 74, + 74, -131, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -131, 75, 74, 74, 74, 74, 182, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -132, -132, -132, -132, -132, -132, -132, -132, -132, + 73, 62, -132, 74, 74, 74, 74, 74, 74, 74, + 74, -132, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -132, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 183, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -133, -133, -133, -133, -133, -133, -133, -133, -133, + 73, 62, -133, 74, 74, 74, 74, 74, 74, 74, + + 74, -133, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -133, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 184, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -134, -134, -134, -134, -134, -134, -134, -134, -134, + 73, 62, -134, 74, 74, 74, 74, 74, 74, 74, + 74, -134, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -134, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 185, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -135, -135, -135, -135, -135, -135, -135, -135, -135, + 73, 62, -135, 74, 74, 74, 74, 74, 74, 74, + 74, -135, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -135, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 186, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -136, -136, -136, -136, -136, -136, -136, -136, -136, + 73, 62, -136, 74, 74, 74, 74, 74, 74, 74, + 74, -136, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -136, 75, 74, 74, 74, 74, 187, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -137, -137, -137, -137, -137, -137, -137, -137, -137, + 73, 62, -137, 74, 74, 74, 74, 74, 74, 74, + 74, -137, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -137, 75, 188, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -138, -138, -138, -138, -138, -138, -138, -138, -138, + 73, 62, -138, 74, 74, 74, 74, 74, 74, 74, + + 74, -138, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -138, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 189, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -139, -139, -139, -139, -139, -139, -139, -139, -139, + 73, 62, -139, 74, 74, 74, 74, 74, 74, 74, + 74, -139, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -139, 75, 74, 74, 190, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -140, -140, -140, -140, -140, -140, -140, -140, -140, + 73, 62, -140, 74, 74, 74, 74, 74, 74, 74, + 74, -140, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -140, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 191, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -141, -141, -141, -141, -141, -141, -141, -141, -141, + 73, 62, -141, 74, 74, 74, 74, 74, 74, 74, + 74, -141, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -141, 75, 74, 74, 74, 74, 192, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 73, 62, -142, 74, 74, 74, 74, 74, 74, 74, + 74, -142, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -142, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 193, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -143, -143, -143, -143, -143, -143, -143, -143, -143, + 73, 62, -143, 74, 74, 74, 74, 74, 74, 74, + + 74, -143, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -143, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 194, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -144, -144, -144, -144, -144, -144, -144, -144, -144, + 73, 62, -144, 74, 74, 74, 74, 74, 74, 74, + 74, -144, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -144, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 195, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -145, -145, -145, -145, -145, -145, -145, -145, -145, + 73, 62, -145, 74, 74, 74, 74, 74, 74, 74, + 74, -145, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -145, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 196, 74, 74, 74, 74, 74 + }, + + { + 5, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 73, 62, -146, 74, 74, 74, 74, 74, 74, 74, + 74, -146, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -146, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 197, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -147, -147, -147, -147, -147, -147, -147, -147, -147, + 73, 62, -147, 74, 74, 74, 74, 74, 74, 74, + 74, -147, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -147, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 198, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -148, -148, -148, -148, -148, -148, -148, -148, -148, + 73, 62, -148, 74, 74, 74, 74, 74, 74, 74, + + 74, -148, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -148, 75, 199, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -149, -149, -149, -149, -149, -149, -149, -149, -149, + 73, 62, -149, 74, 74, 74, 74, 74, 74, 74, + 74, -149, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -149, 75, 74, 74, 74, 74, 200, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -150, -150, -150, -150, -150, -150, -150, -150, -150, + 73, 62, -150, 74, 74, 74, 74, 74, 74, 74, + 74, -150, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -150, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 201, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -151, -151, -151, -151, -151, -151, -151, -151, -151, + 73, 62, -151, 74, 74, 74, 74, 74, 74, 74, + 74, -151, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -151, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 202, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -152, -152, -152, -152, -152, -152, -152, -152, -152, + 73, 62, -152, 74, 74, 74, 74, 74, 74, 74, + 74, -152, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -152, 75, 74, 74, 74, 203, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -153, -153, -153, -153, -153, -153, -153, -153, -153, + 73, 62, -153, 74, 74, 74, 74, 74, 74, 74, + + 74, -153, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -153, 75, 74, 74, 74, 74, 204, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -154, -154, -154, -154, -154, -154, -154, -154, -154, + 73, 62, -154, 74, 74, 74, 74, 74, 74, 74, + 74, -154, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -154, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 205, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -155, -155, -155, -155, -155, -155, -155, -155, -155, + 73, 62, -155, 74, 74, 74, 74, 74, 74, 74, + 74, -155, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -155, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 206, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -156, -156, -156, -156, -156, -156, -156, -156, -156, + 73, 62, -156, 74, 74, 74, 74, 74, 74, 74, + 74, -156, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -156, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 207, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -157, -157, -157, -157, -157, -157, -157, -157, -157, + 73, 62, -157, 74, 74, 74, 74, 74, 74, 74, + 74, -157, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -157, 75, 74, 74, 74, 74, 208, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -158, -158, -158, -158, -158, -158, -158, -158, -158, + 73, 62, -158, 74, 74, 74, 74, 74, 74, 74, + + 74, -158, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -158, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 209, + 74, 74, 210, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, 160, 160, 160, 160, 160, 160, 160, + 160, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159 + + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 160, 160, 160, 160, 160, 160, 160, + 160, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161 + }, + + { + 5, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162 + }, + + { + 5, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, 168, -163, 115, 115, 115, 115, 115, 115, 115, + + 115, -163, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -163, -163, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, 211, 211, 211, 211, 211, 211, 211, + 211, -164, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, -164, -164, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + + }, + + { + 5, -165, -165, -165, -165, -165, -165, -165, -165, -165, + 167, 168, -165, 115, 115, 115, 115, 115, 115, 115, + 115, -165, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -165, -165, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -166, -166, -166, -166, -166, -166, -166, -166, 159, + 212, 168, -166, 213, 213, 213, 213, 213, 213, 213, + 213, -166, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -166, -166, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, 168, -167, 115, 115, 115, 115, 115, 115, 115, + 115, -167, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -167, -167, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, 211, 211, 211, 211, 211, 211, 211, + + 211, -168, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, -168, -168, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169 + + }, + + { + 5, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, 62, -170, 113, 113, 113, 113, 113, 113, 113, + 113, -170, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -170, -170, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, 115, 115, 115, 115, 115, 115, 115, + 115, -171, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -171, -171, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -172, -172, -172, -172, -172, -172, -172, -172, -172, + 116, 62, -172, 113, 113, 113, 113, 113, 113, 113, + 113, -172, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -172, -172, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 61, 215, 214, 63, 63, 63, 63, 63, 63, 63, + + 63, 214, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 214, 216, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -174, -174, -174, -174, -174, -174, -174, -174, -174, + 61, 62, -174, 63, 63, 63, 63, 63, 63, 63, + 63, -174, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -174, 64, 63, 63, 63, 63, 217, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -175, -175, -175, -175, -175, -175, -175, -175, -175, + 61, 62, -175, 63, 63, 63, 63, 63, 63, 63, + 63, -175, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -175, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 218, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -176, -176, -176, -176, -176, -176, -176, -176, -176, + 61, 62, -176, 63, 63, 63, 63, 63, 63, 63, + 63, -176, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -176, 64, 63, 63, 63, 63, 63, 63, + + 219, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -177, -177, -177, -177, -177, -177, -177, -177, -177, + 61, 62, -177, 63, 63, 63, 63, 63, 63, 63, + 63, -177, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -177, 64, 63, 63, 220, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -178, -178, -178, -178, -178, -178, -178, -178, -178, + 61, 62, -178, 63, 63, 63, 63, 63, 63, 63, + + 63, -178, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -178, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 221, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -179, -179, -179, -179, -179, -179, -179, -179, -179, + 61, 62, -179, 63, 63, 63, 63, 63, 63, 63, + 63, -179, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -179, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 222, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -180, -180, -180, -180, -180, -180, -180, -180, -180, + 61, 62, -180, 63, 63, 63, 63, 63, 63, 63, + 63, -180, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -180, 64, 63, 63, 63, 63, 63, 63, + 223, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 73, 225, 224, 74, 74, 74, 74, 74, 74, 74, + 74, 224, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 224, 226, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -182, -182, -182, -182, -182, -182, -182, -182, -182, + 73, 62, -182, 74, 74, 74, 74, 74, 74, 74, + 74, -182, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -182, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 227, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -183, -183, -183, -183, -183, -183, -183, -183, -183, + 73, 62, -183, 74, 74, 74, 74, 74, 74, 74, + + 74, -183, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -183, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 228, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -184, -184, -184, -184, -184, -184, -184, -184, -184, + 73, 62, -184, 74, 74, 74, 74, 74, 74, 74, + 74, -184, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -184, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 229, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -185, -185, -185, -185, -185, -185, -185, -185, -185, + 73, 62, -185, 74, 74, 74, 74, 74, 74, 74, + 74, -185, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -185, 75, 230, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -186, -186, -186, -186, -186, -186, -186, -186, -186, + 73, 62, -186, 74, 74, 74, 74, 74, 74, 74, + 74, -186, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -186, 75, 74, 74, 74, 74, 231, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 73, 233, 232, 74, 74, 74, 74, 74, 74, 74, + 74, 232, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 232, 234, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 73, 62, -188, 74, 74, 74, 74, 74, 74, 74, + + 74, -188, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -188, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 235, 74, 74, 74, 74, 74 + }, + + { + 5, -189, -189, -189, -189, -189, -189, -189, -189, -189, + 73, 62, -189, 74, 74, 74, 74, 74, 74, 74, + 74, -189, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -189, 75, 74, 74, 74, 74, 236, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -190, -190, -190, -190, -190, -190, -190, -190, -190, + 73, 62, -190, 74, 74, 74, 74, 74, 74, 74, + 74, -190, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -190, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 237, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -191, -191, -191, -191, -191, -191, -191, -191, -191, + 73, 62, -191, 74, 74, 74, 74, 74, 74, 74, + 74, -191, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -191, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 238, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 73, 62, -192, 74, 74, 74, 74, 74, 74, 74, + 74, -192, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -192, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 239, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -193, -193, -193, -193, -193, -193, -193, -193, -193, + 73, 62, -193, 74, 74, 74, 74, 74, 74, 74, + + 74, -193, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -193, 75, 240, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -194, -194, -194, -194, -194, -194, -194, -194, -194, + 73, 62, -194, 74, 74, 74, 74, 74, 74, 74, + 74, -194, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -194, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 241, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -195, -195, -195, -195, -195, -195, -195, -195, -195, + 73, 62, -195, 74, 74, 74, 74, 74, 74, 74, + 74, -195, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -195, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 242, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -196, -196, -196, -196, -196, -196, -196, -196, -196, + 73, 62, -196, 74, 74, 74, 74, 74, 74, 74, + 74, -196, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -196, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 243, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -197, -197, -197, -197, -197, -197, -197, -197, -197, + 73, 62, -197, 74, 74, 74, 74, 74, 74, 74, + 74, -197, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -197, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 244, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -198, -198, -198, -198, -198, -198, -198, -198, -198, + 73, 62, -198, 74, 74, 74, 74, 74, 74, 74, + + 74, -198, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -198, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 245, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -199, -199, -199, -199, -199, -199, -199, -199, -199, + 73, 62, -199, 74, 74, 74, 74, 74, 74, 74, + 74, -199, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -199, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 246, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -200, -200, -200, -200, -200, -200, -200, -200, -200, + 73, 62, -200, 74, 74, 74, 74, 74, 74, 74, + 74, -200, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -200, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 247, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -201, -201, -201, -201, -201, -201, -201, -201, -201, + 73, 62, -201, 74, 74, 74, 74, 74, 74, 74, + 74, -201, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -201, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 248, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 73, 250, 249, 74, 74, 74, 74, 74, 74, 74, + 74, 249, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 249, 251, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -203, -203, -203, -203, -203, -203, -203, -203, -203, + 73, 62, -203, 74, 74, 74, 74, 74, 74, 74, + + 74, -203, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -203, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 252, 74, 74, + 74, 74, 74, 74, 74, 253, 74, 74, 74 + }, + + { + 5, -204, -204, -204, -204, -204, -204, -204, -204, -204, + 73, 62, -204, 74, 74, 74, 74, 74, 74, 74, + 74, -204, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -204, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 254, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -205, -205, -205, -205, -205, -205, -205, -205, -205, + 73, 62, -205, 74, 74, 74, 74, 74, 74, 74, + 74, -205, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -205, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 255, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 73, 257, 256, 74, 74, 74, 74, 74, 74, 74, + 74, 256, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 256, 258, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -207, -207, -207, -207, -207, -207, -207, -207, -207, + 73, 62, -207, 74, 74, 74, 74, 74, 74, 74, + 74, -207, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -207, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 259, 74, 74, 74, 74, 74 + }, + + { + 5, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 73, 261, 260, 74, 74, 74, 74, 74, 74, 74, + + 74, 260, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 260, 262, 74, 74, 74, 263, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 73, 62, -209, 74, 74, 74, 74, 74, 74, 74, + 74, -209, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -209, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 264, 74, 74, 74, 74, 74 + + }, + + { + 5, -210, -210, -210, -210, -210, -210, -210, -210, -210, + 73, 62, -210, 74, 74, 74, 74, 74, 74, 74, + 74, -210, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -210, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 265, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 267, 268, 266, 211, 211, 211, 211, 211, 211, 211, + 211, 266, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 266, 266, 211, 211, 211, 211, 211, 211, + + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, 168, -212, 213, 213, 213, 213, 213, 213, 213, + 213, -212, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -212, -212, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 163, 164, 107, 213, 213, 213, 213, 213, 213, 213, + + 213, 107, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 107, 107, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165 + }, + + { + 5, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214 + + }, + + { + 5, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, 115, 115, 115, 115, 115, 115, 115, + 115, -215, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -215, -215, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -216, -216, -216, -216, -216, -216, -216, -216, -216, + 120, -216, -216, 64, 64, 64, 64, 64, 64, 64, + 64, -216, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -216, 64, 64, 64, 64, 64, 64, 64, + + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -217, -217, -217, -217, -217, -217, -217, -217, -217, + 61, 62, -217, 63, 63, 63, 63, 63, 63, 63, + 63, -217, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -217, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 269, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -218, -218, -218, -218, -218, -218, -218, -218, -218, + 61, 62, -218, 63, 270, 63, 271, 63, 63, 272, + + 63, -218, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -218, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -219, -219, -219, -219, -219, -219, -219, -219, -219, + 61, 62, -219, 63, 63, 63, 63, 63, 63, 63, + 63, -219, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -219, 64, 63, 63, 63, 63, 273, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -220, -220, -220, -220, -220, -220, -220, -220, -220, + 61, 62, -220, 63, 63, 63, 63, 63, 63, 63, + 63, -220, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -220, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 274, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -221, -221, -221, -221, -221, -221, -221, -221, -221, + 61, 62, -221, 63, 63, 63, 63, 63, 63, 63, + 63, -221, 63, 63, 63, 63, 63, 63, 63, 63, + 275, 63, -221, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -222, -222, -222, -222, -222, -222, -222, -222, -222, + 61, 62, -222, 63, 63, 63, 63, 63, 63, 63, + 63, -222, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -222, 64, 63, 63, 63, 63, 276, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -223, -223, -223, -223, -223, -223, -223, -223, -223, + 61, 62, -223, 63, 63, 63, 63, 63, 63, 63, + + 63, -223, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -223, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 277, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224 + + }, + + { + 5, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, 115, 115, 115, 115, 115, 115, 115, + 115, -225, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -225, -225, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -226, -226, -226, -226, -226, -226, -226, -226, -226, + 129, -226, -226, 75, 75, 75, 75, 75, 75, 75, + 75, -226, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -226, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -227, -227, -227, -227, -227, -227, -227, -227, -227, + 73, 62, -227, 74, 74, 74, 74, 74, 74, 74, + 74, -227, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -227, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 278, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -228, -228, -228, -228, -228, -228, -228, -228, -228, + 73, 62, -228, 74, 74, 74, 74, 74, 74, 74, + + 74, -228, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -228, 75, 74, 279, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 73, 281, 280, 74, 74, 74, 74, 74, 74, 74, + 74, 280, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 280, 282, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -230, -230, -230, -230, -230, -230, -230, -230, -230, + 73, 62, -230, 74, 74, 74, 74, 74, 74, 74, + 74, -230, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -230, 75, 74, 74, 283, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -231, -231, -231, -231, -231, -231, -231, -231, -231, + 73, 62, -231, 74, 74, 74, 74, 74, 74, 74, + 74, -231, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -231, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 284, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232 + }, + + { + 5, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, 115, 115, 115, 115, 115, 115, 115, + + 115, -233, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -233, -233, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -234, -234, -234, -234, -234, -234, -234, -234, -234, + 129, -234, -234, 75, 75, 75, 75, 75, 75, 75, + 75, -234, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -234, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -235, -235, -235, -235, -235, -235, -235, -235, -235, + 73, 62, -235, 74, 74, 74, 74, 74, 74, 74, + 74, -235, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -235, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 285, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -236, -236, -236, -236, -236, -236, -236, -236, -236, + 73, 62, -236, 74, 74, 74, 74, 74, 74, 74, + 74, -236, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -236, 75, 74, 74, 286, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -237, -237, -237, -237, -237, -237, -237, -237, -237, + 73, 62, -237, 74, 74, 74, 74, 74, 74, 74, + 74, -237, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -237, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 287, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 73, 289, 288, 74, 74, 74, 74, 74, 74, 74, + + 74, 288, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 288, 290, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 291, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -239, -239, -239, -239, -239, -239, -239, -239, -239, + 73, 62, -239, 74, 74, 74, 74, 74, 74, 74, + 74, -239, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -239, 75, 74, 74, 74, 292, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 293, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -240, -240, -240, -240, -240, -240, -240, -240, -240, + 73, 62, -240, 74, 74, 74, 74, 74, 74, 74, + 74, -240, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -240, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 294, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -241, -241, -241, -241, -241, -241, -241, -241, -241, + 73, 62, -241, 74, 74, 74, 74, 74, 74, 74, + 74, -241, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -241, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 295, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -242, -242, -242, -242, -242, -242, -242, -242, -242, + 73, 62, -242, 74, 74, 74, 74, 74, 74, 74, + 74, -242, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -242, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 296, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -243, -243, -243, -243, -243, -243, -243, -243, -243, + 73, 62, -243, 74, 74, 74, 74, 74, 74, 74, + + 74, -243, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -243, 75, 74, 74, 74, 74, 297, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -244, -244, -244, -244, -244, -244, -244, -244, -244, + 73, 62, -244, 74, 74, 74, 74, 74, 74, 74, + 74, -244, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -244, 75, 74, 74, 74, 74, 74, 298, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -245, -245, -245, -245, -245, -245, -245, -245, -245, + 73, 62, -245, 74, 74, 74, 74, 74, 74, 74, + 74, -245, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -245, 75, 74, 74, 74, 74, 299, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -246, -246, -246, -246, -246, -246, -246, -246, -246, + 73, 62, -246, 74, 74, 74, 74, 74, 74, 74, + 74, -246, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -246, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 300, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -247, -247, -247, -247, -247, -247, -247, -247, -247, + 73, 62, -247, 74, 74, 74, 74, 74, 74, 74, + 74, -247, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -247, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 301, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -248, -248, -248, -248, -248, -248, -248, -248, -248, + 73, 62, -248, 74, 74, 74, 74, 74, 74, 74, + + 74, -248, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -248, 75, 74, 74, 74, 74, 74, 302, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249 + + }, + + { + 5, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, 115, 115, 115, 115, 115, 115, 115, + 115, -250, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -250, -250, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -251, -251, -251, -251, -251, -251, -251, -251, -251, + 129, -251, -251, 75, 75, 75, 75, 75, 75, 75, + 75, -251, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -251, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -252, -252, -252, -252, -252, -252, -252, -252, -252, + 73, 62, -252, 74, 74, 74, 74, 74, 74, 74, + 74, -252, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -252, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 303, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -253, -253, -253, -253, -253, -253, -253, -253, -253, + 73, 62, -253, 74, 74, 74, 74, 74, 74, 74, + + 74, -253, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -253, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 304, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -254, -254, -254, -254, -254, -254, -254, -254, -254, + 73, 62, -254, 74, 74, 74, 74, 74, 74, 74, + 74, -254, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -254, 75, 74, 74, 74, 74, 305, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -255, -255, -255, -255, -255, -255, -255, -255, -255, + 73, 62, -255, 74, 74, 74, 74, 74, 74, 74, + 74, -255, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -255, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 306, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256 + }, + + { + 5, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, 115, 115, 115, 115, 115, 115, 115, + 115, -257, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -257, -257, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -258, -258, -258, -258, -258, -258, -258, -258, -258, + 129, -258, -258, 75, 75, 75, 75, 75, 75, 75, + + 75, -258, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -258, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -259, -259, -259, -259, -259, -259, -259, -259, -259, + 73, 62, -259, 74, 74, 74, 74, 74, 74, 74, + 74, -259, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -259, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 307, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260 + }, + + { + 5, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, 115, 115, 115, 115, 115, 115, 115, + 115, -261, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -261, -261, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -262, -262, -262, -262, -262, -262, -262, -262, -262, + 129, -262, -262, 75, 75, 75, 75, 75, 75, 75, + 75, -262, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -262, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -263, -263, -263, -263, -263, -263, -263, -263, -263, + 73, 62, -263, 74, 74, 74, 74, 74, 74, 74, + + 74, -263, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -263, 75, 74, 74, 74, 74, 308, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -264, -264, -264, -264, -264, -264, -264, -264, -264, + 73, 62, -264, 74, 74, 74, 74, 74, 74, 74, + 74, -264, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -264, 75, 74, 74, 74, 74, 309, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 73, 311, 310, 74, 74, 74, 74, 74, 74, 74, + 74, 310, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 310, 312, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 268, 266, 211, 211, 211, 211, 211, 211, 211, + 211, 266, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 266, 266, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, 313, 313, 313, 313, 313, 313, 313, + + 313, -268, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, -268, -268, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -269, -269, -269, -269, -269, -269, -269, -269, -269, + 61, 62, -269, 63, 63, 63, 63, 63, 63, 63, + 63, -269, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -269, 64, 314, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 61, 62, -270, 63, 63, 315, 63, 63, 63, 63, + 63, -270, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -270, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 61, 62, -271, 63, 63, 316, 63, 63, 63, 63, + 63, -271, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -271, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 61, 62, -272, 63, 63, 63, 63, 317, 63, 63, + 63, -272, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -272, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -273, -273, -273, -273, -273, -273, -273, -273, -273, + 61, 62, -273, 63, 63, 63, 63, 63, 63, 63, + + 63, -273, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -273, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 318, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -274, -274, -274, -274, -274, -274, -274, -274, -274, + 61, 62, -274, 63, 63, 63, 63, 63, 63, 63, + 63, -274, 63, 63, 63, 63, 63, 319, 63, 63, + 63, 63, -274, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -275, -275, -275, -275, -275, -275, -275, -275, -275, + 61, 62, -275, 63, 63, 63, 63, 63, 63, 63, + 63, -275, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -275, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 320, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -276, -276, -276, -276, -276, -276, -276, -276, -276, + 61, 62, -276, 63, 63, 63, 63, 63, 63, 63, + 63, -276, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -276, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 321, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -277, -277, -277, -277, -277, -277, -277, -277, -277, + 61, 62, -277, 63, 63, 63, 63, 63, 63, 63, + 63, -277, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -277, 64, 63, 63, 63, 63, 322, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 73, 324, 323, 74, 74, 74, 74, 74, 74, 74, + + 74, 323, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 323, 325, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 73, 62, -279, 74, 74, 74, 74, 74, 74, 74, + 74, -279, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -279, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 326, 74, 74, 74, 74, 74 + + }, + + { + 5, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280 + }, + + { + 5, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 115, 115, 115, 115, 115, 115, 115, + 115, -281, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -281, -281, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -282, -282, -282, -282, -282, -282, -282, -282, -282, + 129, -282, -282, 75, 75, 75, 75, 75, 75, 75, + 75, -282, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -282, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -283, -283, -283, -283, -283, -283, -283, -283, -283, + 73, 62, -283, 74, 74, 74, 74, 74, 74, 74, + + 74, -283, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -283, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 327, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 73, 62, -284, 74, 74, 74, 74, 74, 74, 74, + 74, -284, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -284, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 328, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 73, 62, -285, 74, 74, 74, 74, 74, 74, 74, + 74, -285, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -285, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 329, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -286, -286, -286, -286, -286, -286, -286, -286, -286, + 73, 62, -286, 74, 74, 74, 74, 74, 74, 74, + 74, -286, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -286, 75, 330, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -287, -287, -287, -287, -287, -287, -287, -287, -287, + 73, 62, -287, 74, 74, 74, 74, 74, 74, 74, + 74, -287, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -287, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 331, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288 + }, + + { + 5, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, 115, 115, 115, 115, 115, 115, 115, + 115, -289, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -289, -289, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -290, -290, -290, -290, -290, -290, -290, -290, -290, + 129, -290, -290, 75, 75, 75, 75, 75, 75, 75, + 75, -290, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -290, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -291, -291, -291, -291, -291, -291, -291, -291, -291, + 73, 62, -291, 74, 74, 74, 74, 74, 74, 74, + 74, -291, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -291, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 332, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -292, -292, -292, -292, -292, -292, -292, -292, -292, + 73, 62, -292, 74, 74, 74, 74, 74, 74, 74, + 74, -292, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -292, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 333, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -293, -293, -293, -293, -293, -293, -293, -293, -293, + 73, 62, -293, 74, 74, 74, 74, 74, 74, 74, + + 74, -293, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -293, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 334, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 73, 336, 335, 74, 74, 74, 74, 74, 74, 74, + 74, 335, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 335, 337, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -295, -295, -295, -295, -295, -295, -295, -295, -295, + 73, 62, -295, 74, 74, 74, 74, 74, 74, 74, + 74, -295, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -295, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 338, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 73, 340, 339, 74, 74, 74, 74, 74, 74, 74, + 74, 339, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 339, 341, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 73, 343, 342, 74, 74, 74, 74, 74, 74, 74, + 74, 342, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 342, 344, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 73, 346, 345, 74, 74, 74, 74, 74, 74, 74, + + 74, 345, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 345, 347, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 73, 62, -299, 74, 74, 74, 74, 74, 74, 74, + 74, -299, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -299, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 348, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -300, -300, -300, -300, -300, -300, -300, -300, -300, + 73, 62, -300, 74, 74, 74, 74, 74, 74, 74, + 74, -300, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -300, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 349 + }, + + { + 5, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 73, 351, 350, 74, 74, 74, 74, 74, 74, 74, + 74, 350, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 350, 352, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 73, 354, 353, 74, 74, 74, 74, 74, 74, 74, + 74, 353, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 353, 355, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -303, -303, -303, -303, -303, -303, -303, -303, -303, + 73, 62, -303, 74, 74, 74, 74, 74, 74, 74, + + 74, -303, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -303, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 356, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -304, -304, -304, -304, -304, -304, -304, -304, -304, + 73, 62, -304, 74, 74, 74, 74, 74, 74, 74, + 74, -304, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -304, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 357, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -305, -305, -305, -305, -305, -305, -305, -305, -305, + 73, 62, -305, 74, 74, 74, 74, 74, 74, 74, + 74, -305, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -305, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 358, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -306, -306, -306, -306, -306, -306, -306, -306, -306, + 73, 62, -306, 74, 74, 74, 74, 74, 74, 74, + 74, -306, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -306, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 359, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 360, 360, 360, 360, 360, 360, 360, 360, 360, + 73, 361, 360, 74, 74, 74, 74, 74, 74, 74, + 74, 360, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 360, 362, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -308, -308, -308, -308, -308, -308, -308, -308, -308, + 73, 62, -308, 74, 74, 74, 74, 74, 74, 74, + + 74, -308, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -308, 75, 74, 74, 74, 74, 74, 363, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 73, 365, 364, 74, 74, 74, 74, 74, 74, 74, + 74, 364, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 364, 366, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310 + }, + + { + 5, -311, -311, -311, -311, -311, -311, -311, -311, -311, + -311, -311, -311, 115, 115, 115, 115, 115, 115, 115, + 115, -311, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -311, -311, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -312, -312, -312, -312, -312, -312, -312, -312, -312, + 129, -312, -312, 75, 75, 75, 75, 75, 75, 75, + 75, -312, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -312, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 367, 268, 266, 313, 313, 313, 313, 313, 313, 313, + + 313, 266, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 266, 266, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -314, -314, -314, -314, -314, -314, -314, -314, -314, + 61, 62, -314, 63, 63, 63, 63, 63, 63, 63, + 63, -314, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -314, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 368, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -315, -315, -315, -315, -315, -315, -315, -315, -315, + 61, 62, -315, 63, 63, 63, 63, 63, 63, 63, + 369, -315, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -315, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 61, 371, 370, 63, 63, 63, 63, 63, 63, 63, + 63, 370, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 370, 372, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 61, 374, 373, 63, 63, 63, 63, 63, 63, 63, + 63, 373, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 373, 375, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -318, -318, -318, -318, -318, -318, -318, -318, -318, + 61, 62, -318, 63, 63, 63, 376, 63, 63, 377, + + 63, -318, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -318, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -319, -319, -319, -319, -319, -319, -319, -319, -319, + 61, 62, -319, 63, 63, 63, 63, 63, 63, 63, + 63, -319, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -319, 64, 63, 63, 63, 378, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -320, -320, -320, -320, -320, -320, -320, -320, -320, + 61, 62, -320, 63, 63, 63, 63, 63, 63, 63, + 63, -320, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -320, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 379, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 61, 381, 380, 63, 63, 63, 63, 63, 63, 63, + 63, 380, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 380, 382, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -322, -322, -322, -322, -322, -322, -322, -322, -322, + 61, 62, -322, 63, 63, 63, 63, 63, 63, 63, + 63, -322, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -322, 64, 63, 63, 63, 383, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323 + }, + + { + 5, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, 115, 115, 115, 115, 115, 115, 115, + 115, -324, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -324, -324, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -325, -325, -325, -325, -325, -325, -325, -325, -325, + 129, -325, -325, 75, 75, 75, 75, 75, 75, 75, + 75, -325, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -325, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -326, -326, -326, -326, -326, -326, -326, -326, -326, + 73, 62, -326, 74, 74, 74, 74, 74, 74, 74, + 74, -326, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -326, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 384, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 73, 386, 385, 74, 74, 74, 74, 74, 74, 74, + 74, 385, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 385, 387, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 73, 389, 388, 74, 74, 74, 74, 74, 74, 74, + + 74, 388, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 388, 390, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 73, 392, 391, 74, 74, 74, 74, 74, 74, 74, + 74, 391, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 391, 393, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -330, -330, -330, -330, -330, -330, -330, -330, -330, + 73, 62, -330, 74, 74, 74, 74, 74, 74, 74, + 74, -330, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -330, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 394, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -331, -331, -331, -331, -331, -331, -331, -331, -331, + 73, 62, -331, 74, 74, 74, 74, 74, 74, 74, + 74, -331, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -331, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 395, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -332, -332, -332, -332, -332, -332, -332, -332, -332, + 73, 62, -332, 74, 74, 74, 74, 74, 74, 74, + 74, -332, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -332, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 396, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 397, 397, 397, 397, 397, 397, 397, 397, 397, + 73, 398, 397, 74, 74, 74, 74, 74, 74, 74, + + 74, 397, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 397, 399, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -334, -334, -334, -334, -334, -334, -334, -334, -334, + 73, 62, -334, 74, 74, 74, 74, 74, 74, 74, + 74, -334, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -334, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 400, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335 + }, + + { + 5, -336, -336, -336, -336, -336, -336, -336, -336, -336, + -336, -336, -336, 115, 115, 115, 115, 115, 115, 115, + 115, -336, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -336, -336, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -337, -337, -337, -337, -337, -337, -337, -337, -337, + 129, -337, -337, 75, 75, 75, 75, 75, 75, 75, + 75, -337, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -337, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -338, -338, -338, -338, -338, -338, -338, -338, -338, + 73, 62, -338, 74, 74, 74, 74, 74, 74, 74, + + 74, -338, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -338, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 401, 74 + }, + + { + 5, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339 + + }, + + { + 5, -340, -340, -340, -340, -340, -340, -340, -340, -340, + -340, -340, -340, 115, 115, 115, 115, 115, 115, 115, + 115, -340, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -340, -340, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -341, -341, -341, -341, -341, -341, -341, -341, -341, + 129, -341, -341, 75, 75, 75, 75, 75, 75, 75, + 75, -341, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -341, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342 + }, + + { + 5, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, 115, 115, 115, 115, 115, 115, 115, + + 115, -343, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -343, -343, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -344, -344, -344, -344, -344, -344, -344, -344, -344, + 129, -344, -344, 75, 75, 75, 75, 75, 75, 75, + 75, -344, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -344, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345 + }, + + { + 5, -346, -346, -346, -346, -346, -346, -346, -346, -346, + -346, -346, -346, 115, 115, 115, 115, 115, 115, 115, + 115, -346, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -346, -346, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -347, -347, -347, -347, -347, -347, -347, -347, -347, + 129, -347, -347, 75, 75, 75, 75, 75, 75, 75, + 75, -347, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -347, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -348, -348, -348, -348, -348, -348, -348, -348, -348, + 73, 62, -348, 74, 74, 74, 74, 74, 74, 74, + + 74, -348, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -348, 75, 74, 74, 74, 74, 402, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -349, -349, -349, -349, -349, -349, -349, -349, -349, + 73, 62, -349, 74, 74, 74, 74, 74, 74, 74, + 74, -349, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -349, 75, 403, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350 + }, + + { + 5, -351, -351, -351, -351, -351, -351, -351, -351, -351, + -351, -351, -351, 115, 115, 115, 115, 115, 115, 115, + 115, -351, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -351, -351, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -352, -352, -352, -352, -352, -352, -352, -352, -352, + 129, -352, -352, 75, 75, 75, 75, 75, 75, 75, + 75, -352, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -352, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353 + }, + + { + 5, -354, -354, -354, -354, -354, -354, -354, -354, -354, + -354, -354, -354, 115, 115, 115, 115, 115, 115, 115, + 115, -354, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -354, -354, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -355, -355, -355, -355, -355, -355, -355, -355, -355, + 129, -355, -355, 75, 75, 75, 75, 75, 75, 75, + 75, -355, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -355, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -356, -356, -356, -356, -356, -356, -356, -356, -356, + 73, 62, -356, 74, 74, 74, 74, 74, 74, 74, + 74, -356, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -356, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 404, 74 + }, + + { + 5, -357, -357, -357, -357, -357, -357, -357, -357, -357, + 73, 62, -357, 74, 74, 74, 74, 74, 74, 74, + 74, -357, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -357, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 405, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -358, -358, -358, -358, -358, -358, -358, -358, -358, + 73, 62, -358, 74, 74, 74, 74, 74, 74, 74, + + 74, -358, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -358, 75, 74, 74, 406, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -359, -359, -359, -359, -359, -359, -359, -359, -359, + 73, 62, -359, 74, 74, 74, 74, 74, 74, 74, + 74, -359, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -359, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 407, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360 + }, + + { + 5, -361, -361, -361, -361, -361, -361, -361, -361, -361, + -361, -361, -361, 115, 115, 115, 115, 115, 115, 115, + 115, -361, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -361, -361, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -362, -362, -362, -362, -362, -362, -362, -362, -362, + 129, -362, -362, 75, 75, 75, 75, 75, 75, 75, + 75, -362, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -362, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 73, 409, 408, 74, 74, 74, 74, 74, 74, 74, + + 74, 408, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 408, 410, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364 + + }, + + { + 5, -365, -365, -365, -365, -365, -365, -365, -365, -365, + -365, -365, -365, 115, 115, 115, 115, 115, 115, 115, + 115, -365, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -365, -365, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -366, -366, -366, -366, -366, -366, -366, -366, -366, + 129, -366, -366, 75, 75, 75, 75, 75, 75, 75, + 75, -366, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -366, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 268, 266, 313, 313, 313, 313, 313, 313, 313, + 313, 266, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 266, 266, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -368, -368, -368, -368, -368, -368, -368, -368, -368, + 61, 62, -368, 63, 63, 63, 63, 63, 63, 63, + + 63, -368, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -368, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 411, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 412, 412, 412, 412, 412, 412, 412, 412, 412, + 61, 413, 412, 63, 63, 63, 63, 63, 63, 63, + 63, 412, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 412, 414, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370 + }, + + { + 5, -371, -371, -371, -371, -371, -371, -371, -371, -371, + -371, -371, -371, 115, 115, 115, 115, 115, 115, 115, + 115, -371, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -371, -371, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -372, -372, -372, -372, -372, -372, -372, -372, -372, + 120, -372, -372, 64, 64, 64, 64, 64, 64, 64, + 64, -372, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -372, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373 + }, + + { + 5, -374, -374, -374, -374, -374, -374, -374, -374, -374, + -374, -374, -374, 115, 115, 115, 115, 115, 115, 115, + 115, -374, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -374, -374, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -375, -375, -375, -375, -375, -375, -375, -375, -375, + 120, -375, -375, 64, 64, 64, 64, 64, 64, 64, + 64, -375, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -375, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -376, -376, -376, -376, -376, -376, -376, -376, -376, + 61, 62, -376, 63, 63, 415, 63, 63, 63, 63, + 63, -376, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -376, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -377, -377, -377, -377, -377, -377, -377, -377, -377, + 61, 62, -377, 63, 63, 63, 63, 416, 63, 63, + 63, -377, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -377, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -378, -378, -378, -378, -378, -378, -378, -378, -378, + 61, 62, -378, 63, 63, 63, 63, 63, 63, 63, + + 63, -378, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -378, 64, 63, 63, 63, 63, 417, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -379, -379, -379, -379, -379, -379, -379, -379, -379, + 61, 62, -379, 63, 63, 63, 63, 63, 63, 63, + 63, -379, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -379, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 418, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380 + }, + + { + 5, -381, -381, -381, -381, -381, -381, -381, -381, -381, + -381, -381, -381, 115, 115, 115, 115, 115, 115, 115, + 115, -381, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -381, -381, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -382, -382, -382, -382, -382, -382, -382, -382, -382, + 120, -382, -382, 64, 64, 64, 64, 64, 64, 64, + 64, -382, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -382, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -383, -383, -383, -383, -383, -383, -383, -383, -383, + 61, 62, -383, 63, 63, 63, 419, 63, 63, 420, + + 63, -383, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -383, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -384, -384, -384, -384, -384, -384, -384, -384, -384, + 73, 62, -384, 74, 74, 74, 74, 74, 74, 74, + 74, -384, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -384, 75, 74, 74, 74, 74, 421, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385 + }, + + { + 5, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -386, -386, -386, 115, 115, 115, 115, 115, 115, 115, + 115, -386, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -386, -386, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -387, -387, -387, -387, -387, -387, -387, -387, -387, + 129, -387, -387, 75, 75, 75, 75, 75, 75, 75, + 75, -387, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -387, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388 + }, + + { + 5, -389, -389, -389, -389, -389, -389, -389, -389, -389, + -389, -389, -389, 115, 115, 115, 115, 115, 115, 115, + 115, -389, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -389, -389, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -390, -390, -390, -390, -390, -390, -390, -390, -390, + 129, -390, -390, 75, 75, 75, 75, 75, 75, 75, + 75, -390, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -390, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391 + }, + + { + 5, -392, -392, -392, -392, -392, -392, -392, -392, -392, + -392, -392, -392, 115, 115, 115, 115, 115, 115, 115, + 115, -392, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -392, -392, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -393, -393, -393, -393, -393, -393, -393, -393, -393, + 129, -393, -393, 75, 75, 75, 75, 75, 75, 75, + + 75, -393, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -393, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -394, -394, -394, -394, -394, -394, -394, -394, -394, + 73, 62, -394, 74, 74, 74, 74, 74, 74, 74, + 74, -394, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -394, 75, 74, 74, 74, 74, 422, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -395, -395, -395, -395, -395, -395, -395, -395, -395, + 73, 62, -395, 74, 74, 74, 74, 74, 74, 74, + 74, -395, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -395, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 423, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -396, -396, -396, -396, -396, -396, -396, -396, -396, + 73, 62, -396, 74, 74, 74, 74, 74, 74, 74, + 74, -396, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -396, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 424, 74 + }, + + { + 5, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397 + }, + + { + 5, -398, -398, -398, -398, -398, -398, -398, -398, -398, + -398, -398, -398, 115, 115, 115, 115, 115, 115, 115, + + 115, -398, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -398, -398, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -399, -399, -399, -399, -399, -399, -399, -399, -399, + 129, -399, -399, 75, 75, 75, 75, 75, 75, 75, + 75, -399, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -399, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -400, -400, -400, -400, -400, -400, -400, -400, -400, + 73, 62, -400, 74, 74, 74, 74, 74, 74, 74, + 74, -400, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -400, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 425, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 73, 427, 426, 74, 74, 74, 74, 74, 74, 74, + 74, 426, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 426, 428, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 73, 430, 429, 74, 74, 74, 74, 74, 74, 74, + 74, 429, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 429, 431, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -403, -403, -403, -403, -403, -403, -403, -403, -403, + 73, 62, -403, 74, 74, 74, 74, 74, 74, 74, + + 74, -403, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -403, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 432, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 73, 434, 433, 74, 74, 74, 74, 74, 74, 74, + 74, 433, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 433, 435, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -405, -405, -405, -405, -405, -405, -405, -405, -405, + 73, 62, -405, 74, 74, 74, 74, 74, 74, 74, + 74, -405, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -405, 75, 74, 74, 74, 74, 436, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -406, -406, -406, -406, -406, -406, -406, -406, -406, + 73, 62, -406, 74, 74, 74, 74, 74, 74, 74, + 74, -406, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -406, 75, 74, 74, 74, 74, 437, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 438, 438, 438, 438, 438, 438, 438, 438, 438, + 73, 439, 438, 74, 74, 74, 74, 74, 74, 74, + 74, 438, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 438, 440, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408 + }, + + { + 5, -409, -409, -409, -409, -409, -409, -409, -409, -409, + -409, -409, -409, 115, 115, 115, 115, 115, 115, 115, + 115, -409, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -409, -409, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -410, -410, -410, -410, -410, -410, -410, -410, -410, + 129, -410, -410, 75, 75, 75, 75, 75, 75, 75, + 75, -410, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -410, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -411, -411, -411, -411, -411, -411, -411, -411, -411, + 61, 62, -411, 63, 63, 63, 63, 63, 63, 63, + 63, -411, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -411, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 441, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412 + }, + + { + 5, -413, -413, -413, -413, -413, -413, -413, -413, -413, + -413, -413, -413, 115, 115, 115, 115, 115, 115, 115, + + 115, -413, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -413, -413, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -414, -414, -414, -414, -414, -414, -414, -414, -414, + 120, -414, -414, 64, 64, 64, 64, 64, 64, 64, + 64, -414, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -414, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 61, 443, 442, 63, 63, 63, 63, 63, 63, 63, + 63, 442, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 442, 444, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 61, 446, 445, 63, 63, 63, 63, 63, 63, 63, + 63, 445, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 445, 447, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -417, -417, -417, -417, -417, -417, -417, -417, -417, + 61, 62, -417, 63, 63, 63, 63, 63, 63, 63, + 63, -417, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -417, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 448, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -418, -418, -418, -418, -418, -418, -418, -418, -418, + 61, 62, -418, 63, 63, 63, 63, 63, 63, 63, + + 63, -418, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -418, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 449, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -419, -419, -419, -419, -419, -419, -419, -419, -419, + 61, 62, -419, 63, 63, 450, 63, 63, 63, 63, + 63, -419, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -419, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -420, -420, -420, -420, -420, -420, -420, -420, -420, + 61, 62, -420, 63, 63, 63, 63, 451, 63, 63, + 63, -420, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -420, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 73, 453, 452, 74, 74, 74, 74, 74, 74, 74, + 74, 452, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 452, 454, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -422, -422, -422, -422, -422, -422, -422, -422, -422, + 73, 62, -422, 74, 74, 74, 74, 74, 74, 74, + 74, -422, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -422, 75, 74, 74, 74, 455, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -423, -423, -423, -423, -423, -423, -423, -423, -423, + 73, 62, -423, 74, 74, 74, 74, 74, 74, 74, + + 74, -423, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -423, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 456, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 73, 458, 457, 74, 74, 74, 74, 74, 74, 74, + 74, 457, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 457, 459, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 73, 461, 460, 74, 74, 74, 74, 74, 74, 74, + 74, 460, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 460, 462, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426 + }, + + { + 5, -427, -427, -427, -427, -427, -427, -427, -427, -427, + -427, -427, -427, 115, 115, 115, 115, 115, 115, 115, + 115, -427, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -427, -427, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -428, -428, -428, -428, -428, -428, -428, -428, -428, + 129, -428, -428, 75, 75, 75, 75, 75, 75, 75, + + 75, -428, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -428, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429 + + }, + + { + 5, -430, -430, -430, -430, -430, -430, -430, -430, -430, + -430, -430, -430, 115, 115, 115, 115, 115, 115, 115, + 115, -430, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -430, -430, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -431, -431, -431, -431, -431, -431, -431, -431, -431, + 129, -431, -431, 75, 75, 75, 75, 75, 75, 75, + 75, -431, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -431, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -432, -432, -432, -432, -432, -432, -432, -432, -432, + 73, 62, -432, 74, 74, 74, 74, 74, 74, 74, + 74, -432, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -432, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 463, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433 + }, + + { + 5, -434, -434, -434, -434, -434, -434, -434, -434, -434, + -434, -434, -434, 115, 115, 115, 115, 115, 115, 115, + 115, -434, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -434, -434, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -435, -435, -435, -435, -435, -435, -435, -435, -435, + 129, -435, -435, 75, 75, 75, 75, 75, 75, 75, + 75, -435, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -435, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 73, 465, 464, 74, 74, 74, 74, 74, 74, 74, + 74, 464, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 464, 466, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 467, 467, 467, 467, 467, 467, 467, 467, 467, + 73, 468, 467, 74, 74, 74, 74, 74, 74, 74, + 74, 467, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 467, 469, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438 + }, + + { + 5, -439, -439, -439, -439, -439, -439, -439, -439, -439, + -439, -439, -439, 115, 115, 115, 115, 115, 115, 115, + 115, -439, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -439, -439, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -440, -440, -440, -440, -440, -440, -440, -440, -440, + 129, -440, -440, 75, 75, 75, 75, 75, 75, 75, + 75, -440, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -440, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -441, -441, -441, -441, -441, -441, -441, -441, -441, + 61, 62, -441, 63, 63, 63, 63, 63, 63, 63, + 63, -441, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -441, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 470, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442 + }, + + { + 5, -443, -443, -443, -443, -443, -443, -443, -443, -443, + -443, -443, -443, 115, 115, 115, 115, 115, 115, 115, + + 115, -443, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -443, -443, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -444, -444, -444, -444, -444, -444, -444, -444, -444, + 120, -444, -444, 64, 64, 64, 64, 64, 64, 64, + 64, -444, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -444, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445 + }, + + { + 5, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, 115, 115, 115, 115, 115, 115, 115, + 115, -446, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -446, -446, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -447, -447, -447, -447, -447, -447, -447, -447, -447, + 120, -447, -447, 64, 64, 64, 64, 64, 64, 64, + 64, -447, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -447, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -448, -448, -448, -448, -448, -448, -448, -448, -448, + 61, 62, -448, 63, 63, 63, 63, 63, 63, 63, + + 63, -448, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -448, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 471, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -449, -449, -449, -449, -449, -449, -449, -449, -449, + 61, 62, -449, 63, 63, 63, 63, 63, 63, 63, + 63, -449, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -449, 64, 63, 63, 63, 63, 63, 63, + 472, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, 473, 473, 473, 473, 473, 473, 473, 473, 473, + 61, 474, 473, 63, 63, 63, 63, 63, 63, 63, + 63, 473, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 473, 475, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 61, 477, 476, 63, 63, 63, 63, 63, 63, 63, + 63, 476, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 476, 478, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452 + }, + + { + 5, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, 115, 115, 115, 115, 115, 115, 115, + + 115, -453, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -453, -453, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -454, -454, -454, -454, -454, -454, -454, -454, -454, + 129, -454, -454, 75, 75, 75, 75, 75, 75, 75, + 75, -454, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -454, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, 479, 479, 479, 479, 479, 479, 479, 479, 479, + 73, 480, 479, 74, 74, 74, 74, 74, 74, 74, + 74, 479, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 479, 481, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -456, -456, -456, -456, -456, -456, -456, -456, -456, + 73, 62, -456, 74, 74, 74, 74, 74, 74, 74, + 74, -456, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -456, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 482, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457 + }, + + { + 5, -458, -458, -458, -458, -458, -458, -458, -458, -458, + -458, -458, -458, 115, 115, 115, 115, 115, 115, 115, + + 115, -458, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -458, -458, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -459, -459, -459, -459, -459, -459, -459, -459, -459, + 129, -459, -459, 75, 75, 75, 75, 75, 75, 75, + 75, -459, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -459, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460 + }, + + { + 5, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 115, 115, 115, 115, 115, 115, 115, + 115, -461, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -461, -461, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -462, -462, -462, -462, -462, -462, -462, -462, -462, + 129, -462, -462, 75, 75, 75, 75, 75, 75, 75, + 75, -462, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -462, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -463, -463, -463, -463, -463, -463, -463, -463, -463, + 73, 62, -463, 74, 74, 74, 74, 74, 74, 74, + + 74, -463, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -463, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 483, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464 + + }, + + { + 5, -465, -465, -465, -465, -465, -465, -465, -465, -465, + -465, -465, -465, 115, 115, 115, 115, 115, 115, 115, + 115, -465, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -465, -465, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -466, -466, -466, -466, -466, -466, -466, -466, -466, + 129, -466, -466, 75, 75, 75, 75, 75, 75, 75, + 75, -466, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -466, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467 + }, + + { + 5, -468, -468, -468, -468, -468, -468, -468, -468, -468, + -468, -468, -468, 115, 115, 115, 115, 115, 115, 115, + + 115, -468, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -468, -468, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -469, -469, -469, -469, -469, -469, -469, -469, -469, + 129, -469, -469, 75, 75, 75, 75, 75, 75, 75, + 75, -469, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -469, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 61, 485, 484, 63, 63, 63, 63, 63, 63, 63, + 63, 484, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 484, 486, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -471, -471, -471, -471, -471, -471, -471, -471, -471, + 61, 62, -471, 63, 63, 63, 63, 63, 63, 63, + 63, -471, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -471, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 487, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 61, 489, 488, 63, 63, 63, 63, 63, 63, 63, + 63, 488, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 488, 490, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473 + }, + + { + 5, -474, -474, -474, -474, -474, -474, -474, -474, -474, + -474, -474, -474, 115, 115, 115, 115, 115, 115, 115, + 115, -474, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -474, -474, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -475, -475, -475, -475, -475, -475, -475, -475, -475, + 120, -475, -475, 64, 64, 64, 64, 64, 64, 64, + 64, -475, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -475, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476 + }, + + { + 5, -477, -477, -477, -477, -477, -477, -477, -477, -477, + -477, -477, -477, 115, 115, 115, 115, 115, 115, 115, + 115, -477, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -477, -477, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -478, -478, -478, -478, -478, -478, -478, -478, -478, + 120, -478, -478, 64, 64, 64, 64, 64, 64, 64, + + 64, -478, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -478, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479 + + }, + + { + 5, -480, -480, -480, -480, -480, -480, -480, -480, -480, + -480, -480, -480, 115, 115, 115, 115, 115, 115, 115, + 115, -480, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -480, -480, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -481, -481, -481, -481, -481, -481, -481, -481, -481, + 129, -481, -481, 75, 75, 75, 75, 75, 75, 75, + 75, -481, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -481, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 73, 492, 491, 74, 74, 74, 74, 74, 74, 74, + 74, 491, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 491, 493, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -483, -483, -483, -483, -483, -483, -483, -483, -483, + 73, 62, -483, 74, 74, 74, 74, 74, 74, 74, + + 74, -483, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -483, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 494, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484 + + }, + + { + 5, -485, -485, -485, -485, -485, -485, -485, -485, -485, + -485, -485, -485, 115, 115, 115, 115, 115, 115, 115, + 115, -485, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -485, -485, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -486, -486, -486, -486, -486, -486, -486, -486, -486, + 120, -486, -486, 64, 64, 64, 64, 64, 64, 64, + 64, -486, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -486, 64, 64, 64, 64, 64, 64, 64, + + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -487, -487, -487, -487, -487, -487, -487, -487, -487, + 61, 62, -487, 63, 63, 63, 63, 63, 63, 63, + 63, -487, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -487, 64, 63, 63, 63, 63, 63, 495, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488 + }, + + { + 5, -489, -489, -489, -489, -489, -489, -489, -489, -489, + -489, -489, -489, 115, 115, 115, 115, 115, 115, 115, + 115, -489, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -489, -489, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -490, -490, -490, -490, -490, -490, -490, -490, -490, + 120, -490, -490, 64, 64, 64, 64, 64, 64, 64, + 64, -490, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -490, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491 + }, + + { + 5, -492, -492, -492, -492, -492, -492, -492, -492, -492, + -492, -492, -492, 115, 115, 115, 115, 115, 115, 115, + 115, -492, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -492, -492, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -493, -493, -493, -493, -493, -493, -493, -493, -493, + 129, -493, -493, 75, 75, 75, 75, 75, 75, 75, + + 75, -493, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -493, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 73, 497, 496, 74, 74, 74, 74, 74, 74, 74, + 74, 496, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 496, 498, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -495, -495, -495, -495, -495, -495, -495, -495, -495, + 61, 62, -495, 63, 63, 63, 63, 63, 63, 63, + 63, -495, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -495, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 499, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496 + }, + + { + 5, -497, -497, -497, -497, -497, -497, -497, -497, -497, + -497, -497, -497, 115, 115, 115, 115, 115, 115, 115, + 115, -497, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -497, -497, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -498, -498, -498, -498, -498, -498, -498, -498, -498, + 129, -498, -498, 75, 75, 75, 75, 75, 75, 75, + + 75, -498, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -498, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -499, -499, -499, -499, -499, -499, -499, -499, -499, + 61, 62, -499, 63, 63, 63, 63, 63, 63, 63, + 63, -499, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -499, 64, 63, 63, 63, 63, 500, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -500, -500, -500, -500, -500, -500, -500, -500, -500, + 61, 62, -500, 63, 63, 63, 63, 63, 63, 63, + 63, -500, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -500, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 501, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 61, 503, 502, 63, 63, 63, 63, 63, 63, 63, + 63, 502, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 502, 504, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502 + }, + + { + 5, -503, -503, -503, -503, -503, -503, -503, -503, -503, + -503, -503, -503, 115, 115, 115, 115, 115, 115, 115, + + 115, -503, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -503, -503, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -504, -504, -504, -504, -504, -504, -504, -504, -504, + 120, -504, -504, 64, 64, 64, 64, 64, 64, 64, + 64, -504, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -504, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up smingtext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + smingleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[505] = + { 0, + 0, 0, 0, 0, 67, 65, 9, 8, 65, 65, + 4, 4, 65, 65, 65, 65, 56, 56, 56, 56, + 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 65, 64, 65, 8, 0, 63, 0, 6, 5, 6, + 0, 59, 59, 59, 58, 58, 59, 59, 0, 7, + 56, 0, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 0, 64, 0, 64, 64, 63, 61, 0, 61, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 0, 0, + 2, 3, 61, 61, 61, 61, 0, 0, 60, 60, + 60, 60, 56, 56, 56, 56, 56, 56, 56, 56, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 0, 0, 0, 44, 44, 44, 56, 56, 56, 56, + 56, 56, 56, 33, 33, 33, 57, 57, 57, 57, + 57, 13, 13, 13, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 55, 55, + 55, 57, 57, 57, 57, 54, 54, 54, 57, 20, + 20, 20, 57, 57, 57, 62, 62, 62, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 57, 57, 23, + 23, 23, 57, 57, 57, 57, 57, 27, 27, 27, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 57, 57, 57, 57, 57, 57, 57, 57, 57, 29, + 29, 29, 0, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 31, 31, 31, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 28, 28, 28, 57, 11, 11, + 11, 10, 10, 10, 52, 52, 52, 57, 57, 21, + 21, 21, 53, 53, 53, 57, 57, 57, 57, 30, + 30, 30, 57, 26, 26, 26, 62, 56, 56, 41, + 41, 41, 42, 42, 42, 56, 56, 56, 56, 35, + 35, 35, 56, 57, 15, 15, 15, 46, 46, 46, + 32, 32, 32, 57, 57, 57, 24, 24, 24, 57, + + 57, 57, 57, 57, 57, 57, 57, 19, 19, 19, + 56, 43, 43, 43, 56, 56, 56, 56, 56, 56, + 57, 57, 57, 57, 57, 22, 22, 22, 48, 48, + 48, 57, 50, 50, 50, 57, 57, 12, 12, 12, + 56, 37, 37, 37, 38, 38, 38, 56, 56, 56, + 56, 25, 25, 25, 57, 57, 49, 49, 49, 18, + 18, 18, 57, 51, 51, 51, 17, 17, 17, 56, + 56, 56, 39, 39, 39, 40, 40, 40, 47, 47, + 47, 57, 57, 45, 45, 45, 56, 34, 34, 34, + 16, 16, 16, 57, 56, 14, 14, 14, 56, 56, + + 56, 36, 36, 36 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 6, 7, 6, 6, 6, 6, 6, 8, + 8, 6, 9, 8, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 18, 20, 18, 21, 8, 6, + 6, 6, 6, 6, 22, 23, 22, 22, 24, 25, + 26, 26, 27, 26, 26, 26, 26, 26, 28, 29, + 26, 26, 30, 26, 31, 26, 26, 26, 26, 26, + 6, 32, 6, 6, 33, 6, 34, 35, 36, 37, + + 38, 39, 40, 41, 42, 43, 41, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 8, 8, 8, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int sming_flex_debug; +int sming_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *smingtext; +#line 1 "scanner-sming.l" +/* + * scanner-sming.l -- + * + * Lexical rules for scanning the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.l 7734 2008-02-15 07:49:14Z schoenw $ + */ +#line 17 "scanner-sming.l" + +#include + +#ifdef BACKEND_SMING + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-sming.h" +#include "parser-sming.tab.h" +#include "scanner-sming.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so sminglex gets arguments */ +#if 0 +#define YY_DECL int sminglex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int sminglex(YYSTYPE *lvalp,void *parser) +#endif + + + +#define thisParser (*(Parser *) parser) + + + +#define MAX_NUMBER "18446744073709551615" /* max Counter64 */ + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smingEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + sming_switch_to_buffer(sming_create_buffer(file,YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smingLeaveLexRecursion() +{ + sming_delete_buffer(YY_CURRENT_BUFFER); + sming_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +/* + * Lex pattern definitions. + */ +/* + * Lex state definitions. + */ + +#line 5435 "" + +#define INITIAL 0 +#define Skipline 1 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int smingwrap (void ); +#else +extern int smingwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( smingtext, smingleng, 1, smingout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( smingin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( smingin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, smingin))==0 && ferror(smingin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(smingin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int sminglex (void); + +#define YY_DECL int sminglex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after smingtext and smingleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 115 "scanner-sming.l" + + + + + /* + * Lex rules for comments. Do you use {lineBreak} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +#line 5600 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! smingin ) + smingin = stdin; + + if ( ! smingout ) + smingout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + smingensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + sming_create_buffer(smingin,YY_BUF_SIZE ); + } + + sming_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of smingtext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + + ++yy_cp; + } + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos) + 1; + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +/* rule 1 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 125 "scanner-sming.l" +{ +} + YY_BREAK +case 2: +/* rule 2 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 128 "scanner-sming.l" +{ +} + YY_BREAK +case 3: +/* rule 3 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 131 "scanner-sming.l" +{ +} + YY_BREAK +/* + * Lex rules for some special tokens. + */ +case 4: +YY_RULE_SETUP +#line 138 "scanner-sming.l" +{ + return smingtext[0]; +} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 142 "scanner-sming.l" +{ + return DOT_DOT; +} + YY_BREAK +case 6: +/* rule 6 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 146 "scanner-sming.l" +{ + return DOT; +} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 150 "scanner-sming.l" +{ + return COLON_COLON; +} + YY_BREAK +/* + * Lex rules for separators. + */ +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +#line 158 "scanner-sming.l" +{ + thisParser.line++; +} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 162 "scanner-sming.l" +{ +} + YY_BREAK +/* + * Lex rules for known keywords. + */ +case 10: +/* rule 10 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 169 "scanner-sming.l" +{ + yylval.id = smingtext; + return moduleKeyword; +} + YY_BREAK +case 11: +/* rule 11 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 174 "scanner-sming.l" +{ + yylval.id = smingtext; + return importKeyword; +} + YY_BREAK +case 12: +/* rule 12 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 179 "scanner-sming.l" +{ + yylval.id = smingtext; + return revisionKeyword; +} + YY_BREAK +case 13: +/* rule 13 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 184 "scanner-sming.l" +{ + yylval.id = smingtext; + return dateKeyword; +} + YY_BREAK +case 14: +/* rule 14 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 189 "scanner-sming.l" +{ + yylval.id = smingtext; + return organizationKeyword; +} + YY_BREAK +case 15: +/* rule 15 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 194 "scanner-sming.l" +{ + yylval.id = smingtext; + return contactKeyword; +} + YY_BREAK +case 16: +/* rule 16 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 199 "scanner-sming.l" +{ + yylval.id = smingtext; + return descriptionKeyword; +} + YY_BREAK +case 17: +/* rule 17 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 204 "scanner-sming.l" +{ + yylval.id = smingtext; + return referenceKeyword; +} + YY_BREAK +case 18: +/* rule 18 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 209 "scanner-sming.l" +{ + yylval.id = smingtext; + return extensionKeyword; +} + YY_BREAK +case 19: +/* rule 19 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 214 "scanner-sming.l" +{ + yylval.id = smingtext; + return typedefKeyword; +} + YY_BREAK +case 20: +/* rule 20 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 219 "scanner-sming.l" +{ + yylval.id = smingtext; + return typeKeyword; +} + YY_BREAK +case 21: +/* rule 21 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 224 "scanner-sming.l" +{ + yylval.id = smingtext; + return parentKeyword; +} + YY_BREAK +case 22: +/* rule 22 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 229 "scanner-sming.l" +{ + yylval.id = smingtext; + return identityKeyword; +} + YY_BREAK +case 23: +/* rule 23 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 234 "scanner-sming.l" +{ + yylval.id = smingtext; + return classKeyword; +} + YY_BREAK +case 24: +/* rule 24 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 239 "scanner-sming.l" +{ + yylval.id = smingtext; + return extendsKeyword; +} + YY_BREAK +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 244 "scanner-sming.l" +{ + yylval.id = smingtext; + return attributeKeyword; +} + YY_BREAK +case 26: +/* rule 26 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 249 "scanner-sming.l" +{ + yylval.id = smingtext; + return uniqueKeyword; +} + YY_BREAK +case 27: +/* rule 27 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 254 "scanner-sming.l" +{ + yylval.id = smingtext; + return eventKeyword; +} + YY_BREAK +case 28: +/* rule 28 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 259 "scanner-sming.l" +{ + yylval.id = smingtext; + return formatKeyword; +} + YY_BREAK +case 29: +/* rule 29 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 264 "scanner-sming.l" +{ + yylval.id = smingtext; + return unitsKeyword; +} + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 269 "scanner-sming.l" +{ + yylval.id = smingtext; + return statusKeyword; +} + YY_BREAK +case 31: +/* rule 31 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 274 "scanner-sming.l" +{ + yylval.id = smingtext; + return accessKeyword; +} + YY_BREAK +case 32: +/* rule 32 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 279 "scanner-sming.l" +{ + yylval.id = smingtext; + return defaultKeyword; +} + YY_BREAK +case 33: +/* rule 33 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 284 "scanner-sming.l" +{ + yylval.id = smingtext; + return abnfKeyword; +} + YY_BREAK +/* + *Base types keywords + */ +case 34: +/* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 293 "scanner-sming.l" +{ + yylval.id = smingtext; + return OctetStringKeyword; +} + YY_BREAK +case 35: +/* rule 35 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 298 "scanner-sming.l" +{ + yylval.id = smingtext; + return PointerKeyword; +} + YY_BREAK +case 36: +/* rule 36 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 16; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 303 "scanner-sming.l" +{ + yylval.id = smingtext; + return ObjectIdentifierKeyword; +} + YY_BREAK +case 37: +/* rule 37 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 308 "scanner-sming.l" +{ + yylval.id = smingtext; + return Integer32Keyword; +} + YY_BREAK +case 38: +/* rule 38 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 313 "scanner-sming.l" +{ + yylval.id = smingtext; + return Integer64Keyword; +} + YY_BREAK +case 39: +/* rule 39 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 318 "scanner-sming.l" +{ + yylval.id = smingtext; + return Unsigned32Keyword; +} + YY_BREAK +case 40: +/* rule 40 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 323 "scanner-sming.l" +{ + yylval.id = smingtext; + return Unsigned64Keyword; +} + YY_BREAK +case 41: +/* rule 41 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 328 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float32Keyword; +} + YY_BREAK +case 42: +/* rule 42 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 333 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float64Keyword; +} + YY_BREAK +case 43: +/* rule 43 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 338 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float128Keyword; +} + YY_BREAK +case 44: +/* rule 44 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 343 "scanner-sming.l" +{ + yylval.id = smingtext; + return BitsKeyword; +} + YY_BREAK +case 45: +/* rule 45 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 348 "scanner-sming.l" +{ + yylval.id = smingtext; + return EnumerationKeyword; +} + YY_BREAK +/* + *Status keywords + */ +case 46: +/* rule 46 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 357 "scanner-sming.l" +{ + yylval.id = smingtext; + return currentKeyword; +} + YY_BREAK +case 47: +/* rule 47 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 362 "scanner-sming.l" +{ + yylval.id = smingtext; + return deprecatedKeyword; +} + YY_BREAK +case 48: +/* rule 48 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 367 "scanner-sming.l" +{ + yylval.id = smingtext; + return obsoleteKeyword; +} + YY_BREAK +/* + *Access keywords + */ +case 49: +/* rule 49 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 376 "scanner-sming.l" +{ + yylval.id = smingtext; + return eventonlyKeyword; +} + YY_BREAK +case 50: +/* rule 50 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 381 "scanner-sming.l" +{ + yylval.id = smingtext; + return readonlyKeyword; +} + YY_BREAK +case 51: +/* rule 51 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 386 "scanner-sming.l" +{ + yylval.id = smingtext; + return readwriteKeyword; +} + YY_BREAK +/* + *Special floating point values' keywords + */ +case 52: +/* rule 52 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 395 "scanner-sming.l" +{ + yylval.id = smingtext; + return neginfKeyword; +} + YY_BREAK +case 53: +/* rule 53 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 400 "scanner-sming.l" +{ + yylval.id = smingtext; + return posinfKeyword; +} + YY_BREAK +case 54: +/* rule 54 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 405 "scanner-sming.l" +{ + yylval.id = smingtext; + return snanKeyword; +} + YY_BREAK +case 55: +/* rule 55 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 410 "scanner-sming.l" +{ + yylval.id = smingtext; + return qnanKeyword; +} + YY_BREAK +/* + * Lex rules for identifiers. + */ +/* e.g. module names: REF: draft,p.12-13 */ +case 56: +YY_RULE_SETUP +#line 422 "scanner-sming.l" +{ + if (smingtext[smingleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smingtext); + } + if (smingleng > 64) { + smiPrintError(parser, ERR_UCIDENTIFIER_64, smingtext); + } + if (strchr(smingtext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smingtext); + } + yylval.text = smiStrdup(smingtext); + return ucIdentifier; +} + YY_BREAK +/* same for lowercase names */ +case 57: +YY_RULE_SETUP +#line 437 "scanner-sming.l" +{ + if (smingtext[smingleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smingtext); + } + if (smingleng > 64) { + smiPrintError(parser, ERR_LCIDENTIFIER_64, smingtext); + } + if (strchr(smingtext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smingtext); + } + yylval.text = smiStrdup(smingtext); + return lcIdentifier; +} + YY_BREAK +/* + * Lex rules for numbers. + * + * NOTE: `-' is a separate token. Hence, there are no negative numbers. + */ +case 58: +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 457 "scanner-sming.l" +{ + smiPrintError(parser, ERR_LEADING_ZEROS); +} + YY_BREAK +case 59: +/* rule 59 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 461 "scanner-sming.l" +{ + if ((smingleng > sizeof(MAX_NUMBER)-1) || + ((smingleng == sizeof(MAX_NUMBER)-1) && + (strcmp(smingtext, MAX_NUMBER) > 0))) { + smiPrintError(parser, ERR_NUMBER_TOO_LARGE, smingtext); + } + yylval.text = smingtext; + return decimalNumber; +} + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 471 "scanner-sming.l" +{ + if (smingleng % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, smingtext); + } + yylval.text = smingtext; + return hexadecimalNumber; +} + YY_BREAK +/* + * Lex rules for floating point values. + */ +case 61: +/* rule 61 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 482 "scanner-sming.l" +{ + yylval.text = smingtext; + return floatValue; +} + YY_BREAK +/* + * Lex rules for OID's. + */ +case 62: +/* rule 62 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 491 "scanner-sming.l" +{ + yylval.text = smingtext; + return OID; +} + YY_BREAK +/* + * Lex rules for textSegments. + */ +case 63: +/* rule 63 can match eol */ +YY_RULE_SETUP +#line 501 "scanner-sming.l" +{ + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + smingtext[smingleng-1] = '\0'; + for (d = smingtext, s = smingtext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line += 1; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n') { /* simple newline */ + thisParser.line += 1; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = smingtext; + return textSegment; +} + YY_BREAK +/* + * Skip the remainder of the line + */ +case 64: +/* rule 64 can match eol */ +YY_RULE_SETUP +#line 560 "scanner-sming.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +/* + * Everything else... + */ +case 65: +YY_RULE_SETUP +#line 569 "scanner-sming.l" +{ + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + YY_BREAK +case 66: +YY_RULE_SETUP +#line 574 "scanner-sming.l" +ECHO; + YY_BREAK +#line 6527 "" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(Skipline): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed smingin at a new source and called + * sminglex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = smingin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( smingwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * smingtext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of sminglex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + smingrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + smingrestart(smingin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + if ( ! yy_is_jam ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up smingtext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + smingrestart(smingin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( smingwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve smingtext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void smingrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + smingensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + sming_create_buffer(smingin,YY_BUF_SIZE ); + } + + sming_init_buffer(YY_CURRENT_BUFFER,input_file ); + sming_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void sming_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * smingpop_buffer_state(); + * smingpush_buffer_state(new_buffer); + */ + smingensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + sming_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (smingwrap()) processing, but the only time this flag + * is looked at is after smingwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void sming_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + smingin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE sming_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) smingalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in sming_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) smingalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in sming_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + sming_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with sming_create_buffer() + * + */ + void sming_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + smingfree((void *) b->yy_ch_buf ); + + smingfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a smingrestart() or at EOF. + */ + static void sming_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + sming_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then sming_init_buffer was _probably_ + * called from smingrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void sming_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + sming_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void smingpush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + smingensure_buffer_stack(); + + /* This block is copied from sming_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from sming_switch_to_buffer. */ + sming_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void smingpop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + sming_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + sming_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void smingensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)smingalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)smingrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE sming_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) smingalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in sming_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + sming_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to sminglex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * sming_scan_bytes() instead. + */ +YY_BUFFER_STATE sming_scan_string (yyconst char * yystr ) +{ + + return sming_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to sminglex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE sming_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) smingalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in sming_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = sming_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in sming_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smingtext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + smingtext[smingleng] = (yy_hold_char); \ + (yy_c_buf_p) = smingtext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + smingleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int smingget_lineno (void) +{ + + return sminglineno; +} + +/** Get the input stream. + * + */ +FILE *smingget_in (void) +{ + return smingin; +} + +/** Get the output stream. + * + */ +FILE *smingget_out (void) +{ + return smingout; +} + +/** Get the length of the current token. + * + */ +int smingget_leng (void) +{ + return smingleng; +} + +/** Get the current token. + * + */ + +char *smingget_text (void) +{ + return smingtext; +} + +/** Set the current line number. + * @param line_number + * + */ +void smingset_lineno (int line_number ) +{ + + sminglineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see sming_switch_to_buffer + */ +void smingset_in (FILE * in_str ) +{ + smingin = in_str ; +} + +void smingset_out (FILE * out_str ) +{ + smingout = out_str ; +} + +int smingget_debug (void) +{ + return sming_flex_debug; +} + +void smingset_debug (int bdebug ) +{ + sming_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from sminglex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + smingin = stdin; + smingout = stdout; +#else + smingin = (FILE *) 0; + smingout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * sminglex_init() + */ + return 0; +} + +/* sminglex_destroy is for both reentrant and non-reentrant scanners. */ +int sminglex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + sming_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + smingpop_buffer_state(); + } + + /* Destroy the stack itself. */ + smingfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * sminglex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *smingalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *smingrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void smingfree (void * ptr ) +{ + free( (char *) ptr ); /* see smingrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 574 "scanner-sming.l" + + + +#endif + diff --git a/lib/scanner-sming.h b/lib/scanner-sming.h new file mode 100644 index 0000000..2213094 --- /dev/null +++ b/lib/scanner-sming.h @@ -0,0 +1,29 @@ +/* + * scanner-sming.h -- + * + * Definition of lexical tokens of the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.h 973 2000-07-17 09:34:36Z strauss $ + */ + +#ifndef _SCANNER_SMING_H +#define _SCANNER_SMING_H + +#include + +#include "parser-sming.h" + +#define YY_NO_UNPUT + +extern char *yytext; +extern int yyleng; + +extern int smingEnterLexRecursion(FILE *file); +extern void smingLeaveLexRecursion(); + +#endif /* _SCANNER_SMING_H */ diff --git a/lib/scanner-sming.l b/lib/scanner-sming.l new file mode 100644 index 0000000..06de492 --- /dev/null +++ b/lib/scanner-sming.l @@ -0,0 +1,576 @@ +/* + * scanner-sming.l -- + * + * Lexical rules for scanning the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.l 7734 2008-02-15 07:49:14Z schoenw $ + */ + +%option noyywrap + +%{ + +#include + +#ifdef BACKEND_SMING + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-sming.h" +#include "parser-sming.tab.h" +#include "scanner-sming.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so yylex gets arguments */ +#if 0 +#define YY_DECL int yylex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int yylex(YYSTYPE *lvalp, void *parser) +#endif + + + +#define thisParser (*(Parser *) parser) + + + +#define MAX_NUMBER "18446744073709551615" /* max Counter64 */ + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smingEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smingLeaveLexRecursion() +{ + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +%} + + + +/* + * Lex pattern definitions. + */ +delim ([^a-zA-Z0-9-]) +lineBreak ("\n"|"\n\015"|"\015\n") +WSP (" "|"\t") +VCHAR ([\041-\176]) +HTAB "\t" +SP " " + + +/* + * Lex state definitions. + */ +%s Skipline + +%% + + + + /* + * Lex rules for comments. Do you use {lineBreak} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +"//"({WSP}|{VCHAR})*/"\n" { +} + +"//"({WSP}|{VCHAR})*/"\n\015" { +} + +"//"({WSP}|{VCHAR})*/"\015\n" { +} + + /* + * Lex rules for some special tokens. + */ + +[\{\}\(\)\;\,\-\.\|] { + return yytext[0]; +} + +".." { + return DOT_DOT; +} + +"."/[^\.] { + return DOT; +} + +"::" { + return COLON_COLON; +} + + /* + * Lex rules for separators. + */ + +{lineBreak} { + thisParser.line++; +} + +{WSP} { +} + + /* + * Lex rules for known keywords. + */ + +module/{delim} { + yylval.id = yytext; + return moduleKeyword; +} + +import/{delim} { + yylval.id = yytext; + return importKeyword; +} + +revision/{delim} { + yylval.id = yytext; + return revisionKeyword; +} + +date/{delim} { + yylval.id = yytext; + return dateKeyword; +} + +organization/{delim} { + yylval.id = yytext; + return organizationKeyword; +} + +contact/{delim} { + yylval.id = yytext; + return contactKeyword; +} + +description/{delim} { + yylval.id = yytext; + return descriptionKeyword; +} + +reference/{delim} { + yylval.id = yytext; + return referenceKeyword; +} + +extension/{delim} { + yylval.id = yytext; + return extensionKeyword; +} + +typedef/{delim} { + yylval.id = yytext; + return typedefKeyword; +} + +type/{delim} { + yylval.id = yytext; + return typeKeyword; +} + +parent/{delim} { + yylval.id = yytext; + return parentKeyword; +} + +identity/{delim} { + yylval.id = yytext; + return identityKeyword; +} + +class/{delim} { + yylval.id = yytext; + return classKeyword; +} + +extends/{delim} { + yylval.id = yytext; + return extendsKeyword; +} + +attribute/{delim} { + yylval.id = yytext; + return attributeKeyword; +} + +unique/{delim} { + yylval.id = yytext; + return uniqueKeyword; +} + +event/{delim} { + yylval.id = yytext; + return eventKeyword; +} + +format/{delim} { + yylval.id = yytext; + return formatKeyword; +} + +units/{delim} { + yylval.id = yytext; + return unitsKeyword; +} + +status/{delim} { + yylval.id = yytext; + return statusKeyword; +} + +access/{delim} { + yylval.id = yytext; + return accessKeyword; +} + +default/{delim} { + yylval.id = yytext; + return defaultKeyword; +} + +abnf/{delim} { + yylval.id = yytext; + return abnfKeyword; +} + + + /* + *Base types keywords + */ +OctetString/{delim} { + yylval.id = yytext; + return OctetStringKeyword; +} + +Pointer/{delim} { + yylval.id = yytext; + return PointerKeyword; +} + +ObjectIdentifier/{delim} { + yylval.id = yytext; + return ObjectIdentifierKeyword; +} + +Integer32/{delim} { + yylval.id = yytext; + return Integer32Keyword; +} + +Integer64/{delim} { + yylval.id = yytext; + return Integer64Keyword; +} + +Unsigned32/{delim} { + yylval.id = yytext; + return Unsigned32Keyword; +} + +Unsigned64/{delim} { + yylval.id = yytext; + return Unsigned64Keyword; +} + +Float32/{delim} { + yylval.id = yytext; + return Float32Keyword; +} + +Float64/{delim} { + yylval.id = yytext; + return Float64Keyword; +} + +Float128/{delim} { + yylval.id = yytext; + return Float128Keyword; +} + +Bits/{delim} { + yylval.id = yytext; + return BitsKeyword; +} + +Enumeration/{delim} { + yylval.id = yytext; + return EnumerationKeyword; +} + + /* + *Status keywords + */ + +current/{delim} { + yylval.id = yytext; + return currentKeyword; +} + +deprecated/{delim} { + yylval.id = yytext; + return deprecatedKeyword; +} + +obsolete/{delim} { + yylval.id = yytext; + return obsoleteKeyword; +} + + /* + *Access keywords + */ + +eventonly/{delim} { + yylval.id = yytext; + return eventonlyKeyword; +} + +readonly/{delim} { + yylval.id = yytext; + return readonlyKeyword; +} + +readwrite/{delim} { + yylval.id = yytext; + return readwriteKeyword; +} + + /* + *Special floating point values' keywords + */ + +neginf/{delim} { + yylval.id = yytext; + return neginfKeyword; +} + +posinf/{delim} { + yylval.id = yytext; + return posinfKeyword; +} + +snan/{delim} { + yylval.id = yytext; + return snanKeyword; +} + +qnan/{delim} { + yylval.id = yytext; + return qnanKeyword; +} + + + + /* + * Lex rules for identifiers. + */ + + /* e.g. module names: REF: draft,p.12-13 */ +[A-Z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (yyleng > 64) { + smiPrintError(parser, ERR_UCIDENTIFIER_64, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.text = smiStrdup(yytext); + return ucIdentifier; +} + + /* same for lowercase names */ +[a-z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (yyleng > 64) { + smiPrintError(parser, ERR_LCIDENTIFIER_64, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.text = smiStrdup(yytext); + return lcIdentifier; +} + + /* + * Lex rules for numbers. + * + * NOTE: `-' is a separate token. Hence, there are no negative numbers. + */ + +0+/[0-9] { + smiPrintError(parser, ERR_LEADING_ZEROS); +} + +([1-9][0-9]*|0)/[^0-9] { + if ((yyleng > sizeof(MAX_NUMBER)-1) || + ((yyleng == sizeof(MAX_NUMBER)-1) && + (strcmp(yytext, MAX_NUMBER) > 0))) { + smiPrintError(parser, ERR_NUMBER_TOO_LARGE, yytext); + } + yylval.text = yytext; + return decimalNumber; +} + +0x[0-9a-fA-F]+/[^0-9a-fA-F] { + if (yyleng % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yytext); + } + yylval.text = yytext; + return hexadecimalNumber; +} + /* + * Lex rules for floating point values. + */ + +([0-9]*\.[0-9]+([eE][+-]?[0-9]+)?)/[^0-9] { + yylval.text = yytext; + return floatValue; +} + + /* + * Lex rules for OID's. + */ + +([0-9A-Za-z]-?)+\.([0-9A-Za-z]-?)+\.([0-9A-Za-z]-?)+(\.([0-9A-Za-z]-?)+)*/([^0-9A-Za-z]) { + yylval.text = yytext; + return OID; +} + + + /* + * Lex rules for textSegments. + */ + +\"([^\"]|(\\\"))*\" { + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + yytext[yyleng-1] = '\0'; + for (d = yytext, s = yytext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line += 1; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n') { /* simple newline */ + thisParser.line += 1; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = yytext; + return textSegment; +} + + /* + * Skip the remainder of the line + */ +.*{lineBreak} { + thisParser.line++; + BEGIN(INITIAL); +} + + /* + * Everything else... + */ + +. { + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + +%% + +#endif diff --git a/lib/smi.c b/lib/smi.c new file mode 100644 index 0000000..244629e --- /dev/null +++ b/lib/smi.c @@ -0,0 +1,2667 @@ +/* + * smi.c -- + * + * Interface Implementation of libsmi. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.c 8071 2008-04-17 11:14:46Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_PWD_H +#include +#endif + +#include "smi.h" +#include "data.h" +#include "error.h" +#include "util.h" +#include "snprintf.h" + +#ifdef BACKEND_SMI +#include "scanner-smi.h" +#include "parser-smi.h" +#endif + +#ifdef BACKEND_SMING +#include "scanner-sming.h" +#include "parser-sming.h" +#endif + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif + + + +const char *smi_library_version = SMI_LIBRARY_VERSION; +const char *smi_version_string = SMI_VERSION_STRING; + +Handle *smiHandle = NULL; + + + +/* + * Internal functions. + */ + +static void getModulenameAndName(const char *arg1, const char *arg2, + char **module, char **name) +{ + char *p; + int l; + + if ((!arg1) && (!arg2)) { + *module = NULL; + *name = NULL; + } else if (!arg2) { + if (isupper((int)arg1[0])) { + if ((p = strstr(arg1, "::"))) { + /* SMIng style module/label separator */ + *name = smiStrdup(&p[2]); + l = strcspn(arg1, "::"); + *module = smiStrndup(arg1, l); + } else if ((p = strchr(arg1, '!'))) { + /* old scotty style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg1, "!"); + *module = smiStrndup(arg1, l); + } else if ((p = strchr(arg1, '.'))) { + /* SMIv1/v2 style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg1, "."); + *module = smiStrndup(arg1, l); + } else { + *name = smiStrdup(arg1); + *module = smiStrdup(""); + } + } else { + *name = smiStrdup(arg1); + *module = smiStrdup(""); + } + } else if (!arg1) { + if (isupper((int)arg2[0])) { + if ((p = strstr(arg2, "::"))) { + /* SMIng style module/label separator */ + *name = smiStrdup(&p[2]); + l = strcspn(arg2, "::"); + *module = smiStrndup(arg2, l); + } else if ((p = strchr(arg2, '!'))) { + /* old scotty style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg2, "!"); + *module = smiStrndup(arg2, l); + } else if ((p = strchr(arg2, '.'))) { + /* SMIv1/v2 style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg2, "."); + *module = smiStrndup(arg2, l); + } else { + *name = smiStrdup(arg2); + *module = smiStrdup(""); + } + } else { + *name = smiStrdup(arg2); + *module = smiStrdup(""); + } + } else { + *module = smiStrdup(arg1); + *name = smiStrdup(arg2); + } +} + + + +static Node *getNode(unsigned int oidlen, SmiSubid oid[]) +{ + Node *nodePtr, *parentPtr; + unsigned int i; + + for(nodePtr = smiHandle->rootNodePtr, i=0; i < oidlen; i++) { + parentPtr = nodePtr; + nodePtr = findNodeByParentAndSubid(parentPtr, oid[i]); + if (!nodePtr) { + return parentPtr; + } + } + + return nodePtr; +} + + + +static Object *getNextChildObject(Node *startNodePtr, Module *modulePtr, + SmiNodekind nodekind) +{ + Node *nodePtr; + Object *objectPtr = NULL; + + if (!startNodePtr || !modulePtr) + return NULL; + + for (nodePtr = startNodePtr; nodePtr; nodePtr = nodePtr->nextPtr) { + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (((!modulePtr) || (objectPtr->modulePtr == modulePtr)) && + ((nodekind == SMI_NODEKIND_ANY) || + (nodekind & objectPtr->export.nodekind))) { + break; + } + } + if (objectPtr) break; + objectPtr = getNextChildObject(nodePtr->firstChildPtr, + modulePtr, nodekind); + if (objectPtr) break; + } + + return objectPtr; +} + + + +/* + * Interface Functions. + */ + +int smiInit(const char *tag) +{ + char *p, *pp, *tag2; +#ifdef HAVE_PWD_H + struct passwd *pw; +#endif + + smiHandle = findHandleByName(tag); + if (smiHandle) { + return 0; + } + smiHandle = addHandle(tag); + + smiDepth = 0; + + smiHandle->errorLevel = DEFAULT_ERRORLEVEL; + smiHandle->errorHandler = smiErrorHandler; +#if !defined(_MSC_VER) + smiHandle->cache = NULL; + smiHandle->cacheProg = NULL; +#endif + + if (smiInitData()) { + return -1; + } + + /* + * Setup the SMI MIB module search path: + * 1. set to builtin DEFAULT_SMIPATH + * 2. read global config file if present (append/prepend/replace) + * 3. read user config file if present (append/prepend/replace) + * 4. evaluate SMIPATH env-var if set (append/prepend/replace) + */ + + /* 1. set to builtin DEFAULT_SMIPATH */ + smiHandle->path = smiStrdup(DEFAULT_SMIPATH); + + tag2 = smiStrdup(tag); + if (tag2) tag2 = strtok(tag2, ":"); + if (tag2) { + /* 2. read global config file if present (append/prepend/replace) */ + smiReadConfig(DEFAULT_GLOBALCONFIG, tag2); +#ifdef HAVE_PWD_H + pw = getpwuid(getuid()); + if (pw && pw->pw_dir) { + /* 3. read user config file if present (append/prepend/replace) */ + smiAsprintf(&p, "%s%c%s", + pw->pw_dir, DIR_SEPARATOR, DEFAULT_USERCONFIG); + smiReadConfig(p, tag2); + smiFree(p); + } +#endif + } + smiFree(tag2); + + /* 4. evaluate SMIPATH env-var if set (append/prepend/replace) */ + p = getenv("SMIPATH"); + if (p) { + if (p[0] == PATH_SEPARATOR) { + smiAsprintf(&pp, "%s%s", smiHandle->path, p); + smiFree(smiHandle->path); + smiHandle->path = pp; + } else if (p[strlen(p)-1] == PATH_SEPARATOR) { + smiAsprintf(&pp, "%s%s", p, smiHandle->path); + smiFree(smiHandle->path); + smiHandle->path = pp; + } else { + smiHandle->path = smiStrdup(p); + } + } + + if (!smiHandle->path) { + return -1; + } + + return 0; +} + + + +void smiExit() +{ + if (!smiHandle) + return; + + smiFreeData(); + + smiFree(smiHandle->path); +#if !defined(_MSC_VER) + smiFree(smiHandle->cache); + smiFree(smiHandle->cacheProg); +#endif + + removeHandle(smiHandle); + + smiHandle = NULL; + return; +} + + + +char *smiGetPath() +{ + if (smiHandle->path) { + return smiStrdup(smiHandle->path); + } else { + return NULL; + } +} + + + +int smiSetPath(const char *s) +{ + char *s2; + + if (!smiHandle) smiInit(NULL); + + if (!s) { + smiFree(smiHandle->path); + smiHandle->path = NULL; + return 0; + } + + s2 = smiStrdup(s); + if (s2) { + smiFree(smiHandle->path); + smiHandle->path = s2; + return 0; + } else { + return -1; + } + +} + + + +void smiSetSeverity(char *pattern, int severity) +{ + smiSetErrorSeverity(pattern, severity); +} + + + +int smiReadConfig(const char *filename, const char *tag) +{ + FILE *file; + char buf[201]; + char *cmd, *arg, *s; + + file = fopen(filename, "r"); + if (file) { + while (!feof(file)) { + if (!fgets(buf, 200, file)) continue; + if ((!strlen(buf)) || (buf[0] == '#')) continue; + cmd = strtok(buf, " \t\n\r"); + if (!cmd) continue; + if (cmd[0] == '#') continue; + if (cmd[strlen(cmd)-1] == ':') { + if (!tag) continue; + cmd[strlen(cmd)-1] = 0; + if (strcmp(cmd, tag)) continue; + cmd = strtok(NULL, " \t\n\r"); + } + arg = strtok(NULL, " \t\n\r"); + if (!strcmp(cmd, "load")) { + smiLoadModule(arg); + } else if (!strcmp(cmd, "path")) { + if (arg) { + if (arg[0] == PATH_SEPARATOR) { + smiAsprintf(&s, "%s%s", smiHandle->path, arg); + smiFree(smiHandle->path); + smiHandle->path = s; + } else if (arg[strlen(arg)-1] == PATH_SEPARATOR) { + smiAsprintf(&s, "%s%s", arg, smiHandle->path); + smiFree(smiHandle->path); + smiHandle->path = s; + } else { + smiHandle->path = smiStrdup(arg); + } + } + } else if (!strcmp(cmd, "cache")) { +#if !defined(_MSC_VER) + smiFree(smiHandle->cache); + smiFree(smiHandle->cacheProg); +#endif + if (arg && strcmp(arg, "off")) { +#if !defined(_MSC_VER) + smiHandle->cache = smiStrdup(arg); + arg = strtok(NULL, "\n\r"); + smiHandle->cacheProg = smiStrdup(arg); +#else + smiPrintError(NULL, ERR_CACHE_CONFIG_NOT_SUPPORTED, + filename); +#endif + } + } else if (!strcmp(cmd, "level")) { + smiSetErrorLevel(atoi(arg)); + } else if (!strcmp(cmd, "hide")) { + smiSetSeverity(arg, 9); + } else { + smiPrintError(NULL, ERR_UNKNOWN_CONFIG_CMD, cmd, filename); + } + } + fclose(file); + return 0; + } + return -1; +} + + + +int smiIsLoaded(const char *module) +{ + if (!module) + return 0; + + return isInView(module); +} + + + +char *smiLoadModule(const char *module) +{ + Module *modulePtr; + + if (!smiHandle) smiInit(NULL); + + if (smiIsPath(module)) { + + modulePtr = loadModule(module, NULL); + + if (modulePtr) { + if (!isInView(modulePtr->export.name)) { + addView(modulePtr->export.name); + } + return modulePtr->export.name; + } else { + return NULL; + } + + } else { + + if ((modulePtr = findModuleByName(module))) { + /* already loaded. */ + if (!isInView(module)) { + addView(module); + } + return modulePtr->export.name; + } else { + if ((modulePtr = loadModule(module, NULL))) { + if (!isInView(module)) { + addView(module); + } + return modulePtr->export.name; + } else { + return NULL; + } + } + } +} + + + +void smiSetErrorLevel(int level) +{ + if (!smiHandle) smiInit(NULL); + + smiHandle->errorLevel = level; +} + + + +void smiSetFlags(int userflags) +{ + if (!smiHandle) smiInit(NULL); + + smiHandle->flags = (smiHandle->flags & ~SMI_FLAG_MASK) | userflags; +} + + + +int smiGetFlags() +{ + if (!smiHandle) smiInit(NULL); + + return smiHandle->flags & SMI_FLAG_MASK; +} + + + +SmiModule *smiGetModule(const char *module) +{ + Module *modulePtr; + + if (!module) { + return NULL; + } + + modulePtr = findModuleByName(module); + + if (!modulePtr) { + modulePtr = loadModule(module, NULL); + } + + return &modulePtr->export; +} + + + +SmiModule *smiGetFirstModule() +{ + Module *modulePtr; + + for (modulePtr = smiHandle->firstModulePtr; + modulePtr && modulePtr->export.name && + (strlen(modulePtr->export.name) == 0); + modulePtr = modulePtr->nextPtr); + + return &modulePtr->export; +} + + + +SmiModule *smiGetNextModule(SmiModule *smiModulePtr) +{ + Module *modulePtr; + + if (!smiModulePtr) { + return NULL; + } + + + for (modulePtr = ((Module *)smiModulePtr)->nextPtr; + modulePtr && modulePtr->export.name && + (strlen(modulePtr->export.name) == 0); + modulePtr = modulePtr->nextPtr); + + return &modulePtr->export; +} + + + +SmiImport *smiGetFirstImport(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->firstImportPtr->export; +} + + + +SmiImport *smiGetNextImport(SmiImport *smiImportPtr) +{ + if (!smiImportPtr) { + return NULL; + } + + return &((Import *)smiImportPtr)->nextPtr->export; +} + + + +int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, + char *importedName) +{ + Import *importPtr; + Module *modulePtr; + char *importedModule; + + if ((!smiModulePtr) || (!importedName)) { + return 0; + } + + modulePtr = (Module *)smiModulePtr; + + if (importedModulePtr) { + importedModule = importedModulePtr->name; + } else { + importedModule = NULL; + } + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importedName, importPtr->export.name)) && + ((!importedModule) || + (!strcmp(importedModule, importPtr->export.module)))) { + return 1; + } + } + + return 0; +} + + + +SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->firstRevisionPtr->export; +} + + + +SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr) +{ + if (!smiRevisionPtr) { + return NULL; + } + + return &((Revision *)smiRevisionPtr)->nextPtr->export; +} + + + +int smiGetRevisionLine(SmiRevision *smiRevisionPtr) +{ + return ((Revision *)smiRevisionPtr)->line; +} + + + +SmiType *smiGetType(SmiModule *smiModulePtr, char *type) +{ + Type *typePtr = NULL; + Module *modulePtr = NULL; + char *module2, *type2; + + if (!type) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, type, + &module2, &type2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (modulePtr) { + typePtr = findTypeByModuleAndName(modulePtr, type2); + } else { + typePtr = findTypeByName(type2); + } + + smiFree(module2); + smiFree(type2); + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiType *smiGetFirstType(SmiModule *smiModulePtr) +{ + Type *typePtr; + + if (!smiModulePtr) { + return NULL; + } + + for (typePtr = ((Module *)smiModulePtr)->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + /* loop until we found a `real' type */ + if (typePtr->export.name && + typePtr->export.basetype != SMI_BASETYPE_UNKNOWN) { + break; + } + } + + return &typePtr->export; +} + + + +SmiType *smiGetNextType(SmiType *smiTypePtr) +{ + Type *typePtr; + + if (!smiTypePtr) { + return NULL; + } + + for (typePtr = ((Type *)smiTypePtr)->nextPtr; typePtr; + typePtr = typePtr->nextPtr) { + /* loop until we found a `real' type */ + if (typePtr->export.name && + typePtr->export.basetype != SMI_BASETYPE_UNKNOWN) { + break; + } + } + + return &typePtr->export; +} + + +SmiType *smiGetParentType(SmiType *smiTypePtr) +{ + Type *typePtr; + + if (!smiTypePtr) { + return NULL; + } + + typePtr = ((Type *)smiTypePtr)->parentPtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiModule *smiGetTypeModule(SmiType *smiTypePtr) +{ + return &((Type *)smiTypePtr)->modulePtr->export; +} + +int smiGetTypeLine(SmiType *smiTypePtr) +{ + return ((Type *)smiTypePtr)->line; +} + + + +SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr) +{ + Type *typePtr; + + typePtr = (Type *)smiTypePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + ((typePtr->export.basetype != SMI_BASETYPE_ENUM) && + (typePtr->export.basetype != SMI_BASETYPE_BITS) && + (typePtr->export.basetype != SMI_BASETYPE_POINTER))) { + return NULL; + } + + return &((NamedNumber *)typePtr->listPtr->ptr)->export; +} + + + +SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr) +{ + Type *typePtr; + List *listPtr; + + if (!smiNamedNumberPtr) { + return NULL; + } + + typePtr = ((NamedNumber *)smiNamedNumberPtr)->typePtr; + + + if ((!typePtr) || (!typePtr->listPtr) || + ((typePtr->export.basetype != SMI_BASETYPE_ENUM) && + (typePtr->export.basetype != SMI_BASETYPE_BITS))) { + return NULL; + } + + for (listPtr = typePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.name == + smiNamedNumberPtr->name) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((NamedNumber *)listPtr->nextPtr->ptr)->export; +} + +SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr) +{ + Attribute *attributePtr; + + attributePtr = (Attribute *)smiAttributePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + ((attributePtr->export.basetype != SMI_BASETYPE_ENUM) && + (attributePtr->export.basetype != SMI_BASETYPE_BITS) && + (attributePtr->export.basetype != SMI_BASETYPE_POINTER))) { + return NULL; + } + + return &((NamedNumber *)attributePtr->listPtr->ptr)->export; +} + + + +SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr) +{ + Attribute *attributePtr; + List *listPtr; + + if (!smiNamedNumberPtr) { + return NULL; + } + + attributePtr = (Attribute*)(((NamedNumber *)smiNamedNumberPtr)->typePtr); + + + if ((!attributePtr) || (!attributePtr->listPtr) || + ((attributePtr->export.basetype != SMI_BASETYPE_ENUM) && + (attributePtr->export.basetype != SMI_BASETYPE_BITS))) { + return NULL; + } + + for (listPtr = attributePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.name == + smiNamedNumberPtr->name) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((NamedNumber *)listPtr->nextPtr->ptr)->export; +} + +SmiRange *smiGetFirstRange(SmiType *smiTypePtr) +{ + Type *typePtr; + + typePtr = (Type *)smiTypePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM) || + (typePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + return &((Range *)typePtr->listPtr->ptr)->export; +} + + + +SmiRange *smiGetNextRange(SmiRange *smiRangePtr) +{ + Type *typePtr; + List *listPtr; + + if (!smiRangePtr) { + return NULL; + } + + typePtr = ((Range *)smiRangePtr)->typePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM) || + (typePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + for (listPtr = typePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (!memcmp(&((Range *)listPtr->ptr)->export.minValue, + &smiRangePtr->minValue, sizeof(struct SmiValue))) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((Range *)listPtr->nextPtr->ptr)->export; +} + +SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr) +{ + Attribute *attributePtr; + + attributePtr = (Attribute *)smiAttributePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM) || + (attributePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + return &((Range *)attributePtr->listPtr->ptr)->export; +} + + + +SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr) +{ + Attribute *attributePtr; + List *listPtr; + + if (!smiRangePtr) { + return NULL; + } + + attributePtr = (Attribute*)((Range *)smiRangePtr)->typePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM) || + (attributePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + for (listPtr = attributePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (!memcmp(&((Range *)listPtr->ptr)->export.minValue, + &smiRangePtr->minValue, sizeof(struct SmiValue))) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((Range *)listPtr->nextPtr->ptr)->export; +} + + +SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstIdentityPtr ? + &((Module *)smiModulePtr)->firstIdentityPtr->export : NULL; + +} + +SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr) +{ + if (!smiIdentityPtr) { + return NULL; + } + + return ((Identity *)smiIdentityPtr)->nextPtr ? + &((Identity *)smiIdentityPtr)->nextPtr->export : NULL; +} + +SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr) +{ + return &((Identity *)smiIdentityPtr)->modulePtr->export; +} + +SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr) +{ + return (SmiIdentity*)(((Identity *)smiIdentityPtr)->parentPtr); +} + +SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr, char *identity) +{ + + if (!smiModulePtr) { + return NULL; + } + else + { + SmiIdentity *ide; + + for(ide = smiGetFirstIdentity(smiModulePtr); + ide; + ide = smiGetNextIdentity(ide)) + if(!strncmp(ide->name,identity,64))return ide; + + return NULL; + } + +} + +int smiGetIdentityLine(SmiIdentity *smiIdentityPtr) +{ + return ((Identity *)smiIdentityPtr)->line; +} + + +SmiClass *smiGetFirstClass(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstClassPtr ? + &((Module *)smiModulePtr)->firstClassPtr->export : NULL; + +} + +SmiClass *smiGetNextClass(SmiClass *smiClassPtr) +{ + if (!smiClassPtr) { + return NULL; + } + + return ((Class *)smiClassPtr)->nextPtr ? + &((Class *)smiClassPtr)->nextPtr->export : NULL; +} + +SmiModule *smiGetClassModule(SmiClass *smiClassPtr) +{ + return &((Class *)smiClassPtr)->modulePtr->export; +} + +SmiClass *smiGetParentClass(SmiClass *smiClassPtr) +{ + return (SmiClass*)(((Class *)smiClassPtr)->parentPtr); +} + +SmiClass *smiGetClass(SmiModule *smiModulePtr, char *class) +{ + + if (!smiModulePtr) { + return NULL; + } + else + { + SmiClass *cl; + + for(cl = smiGetFirstClass(smiModulePtr); + cl; + cl = smiGetNextClass(cl)) + if(!strncmp(cl->name,class,64))return cl; + + return NULL; + } + +} + +int smiGetClassLine(SmiClass *smiClassPtr) +{ + return ((Class *)smiClassPtr)->line; +} + +SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr) +{ + Attribute *attributePtr; + + if (!smiClassPtr) { + return NULL; + } + + attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + + return &attributePtr->export; +} + + SmiAttribute *smiGetNextAttribute( SmiAttribute *smiTypePtr) +{ + Attribute *attributePtr; + + if (!smiTypePtr) { + return NULL; + } + + attributePtr = ((Attribute *)smiTypePtr)->nextPtr; + + return &attributePtr->export; +} + +SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute) +{ + Attribute *attributePtr; + + if (! smiClassPtr) { + return NULL; + } + + attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + + for (attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + attributePtr; attributePtr = attributePtr->nextPtr) + { + if (!strncmp(attributePtr->export.name, attribute,64)) { + return &attributePtr->export; + } + } + + /* + * attribute might belong to the parent so check parent if + * attribute not found + */ + + smiClassPtr = smiGetParentClass(smiClassPtr); + attributePtr = (Attribute*)smiGetAttribute(smiClassPtr , attribute); + + return &attributePtr->export; +} + +SmiType *smiGetAttributeParentType(SmiAttribute *smiAttributePtr) +{ + Type *parentTypePtr; + + if (! smiAttributePtr) { + return NULL; + } + + parentTypePtr = ((Attribute*)smiAttributePtr)->parentTypePtr; + + return (parentTypePtr) ? &parentTypePtr->export : NULL; +} + +SmiClass *smiGetAttributeParentClass( SmiAttribute *smiAttributePtr) +{ + Class *parentClassPtr; + + if (! smiAttributePtr) { + return NULL; + } + + parentClassPtr = ((Attribute*)smiAttributePtr)->parentClassPtr; + + return parentClassPtr ? &parentClassPtr->export : NULL; +} + +SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr) +{ + Class *classPtr; + + if (! smiClassPtr) { + return NULL; + } + + classPtr = (Class*)smiClassPtr; + + if (! classPtr->uniqueList) { + return NULL; + } + + if (classPtr->uniqueList->ptr == classPtr) { + return NULL; /* scalar class */ + } + + return (SmiAttribute*)(classPtr->uniqueList->ptr); +} + +SmiAttribute *smiGetNextUniqueAttribute( SmiAttribute *smiTypePtr) +{ + Class *classPtr; + List *listPtr; + + if (! smiTypePtr) { + return NULL; + } + + classPtr = ((Attribute*)smiTypePtr)->classPtr; + + if (classPtr && classPtr->uniqueList) { + for (listPtr=classPtr->uniqueList;listPtr; listPtr=listPtr->nextPtr) { + if (&((Attribute*)(listPtr->ptr))->export == smiTypePtr) { + if (listPtr->nextPtr) { + return &((Attribute*)(listPtr->nextPtr->ptr))->export; + } + } + } + } + return NULL; +} + + + +int smiGetAttributeLine(SmiAttribute *smiAttributePtr) +{ + return ((Attribute *)smiAttributePtr)->line; +} + + + +int smiIsClassScalar(SmiClass *smiClassPtr) +{ + Class *classPtr; + + if (! smiClassPtr) { + return 0; + } + + classPtr = (Class*)smiClassPtr; + + if (! classPtr->uniqueList) { + return 0; + } + + return (classPtr->uniqueList->ptr == classPtr); +} + + + +SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr) +{ + Event *eventPtr; + + if (! smiClassPtr) { + return NULL; + } + + eventPtr = ((Class *)smiClassPtr)->firstEventPtr; + return &(eventPtr->export); +} + + + +SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr) +{ + Event *eventPtr; + + if (! smiEventPtr) { + return NULL; + } + + eventPtr = ((Event *)smiEventPtr)->nextPtr; + return &eventPtr->export; +} + + + +int smiGetEventLine(SmiEvent *smiEventPtr) +{ + return ((Event *)smiEventPtr)->line; +} + + + +SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro) +{ + Macro *macroPtr = NULL; + Module *modulePtr = NULL; + char *module2, *macro2; + + if (!macro) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, macro, + &module2, ¯o2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (modulePtr) { + macroPtr = findMacroByModuleAndName(modulePtr, macro2); + } else { + macroPtr = findMacroByName(macro2); + } + + smiFree(module2); + smiFree(macro2); + return macroPtr ? ¯oPtr->export : NULL; +} + + + +SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstMacroPtr ? + &((Module *)smiModulePtr)->firstMacroPtr->export : NULL; +} + + + +SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr) +{ + if (!smiMacroPtr) { + return NULL; + } + + return ((Macro *)smiMacroPtr)->nextPtr ? + &((Macro *)smiMacroPtr)->nextPtr->export : NULL; +} + + +SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr) +{ + return &((Macro *)smiMacroPtr)->modulePtr->export; +} + + +int smiGetMacroLine(SmiMacro *smiMacroPtr) +{ + return ((Macro *)smiMacroPtr)->line; +} + + +SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *node) +{ + Object *objectPtr = NULL; + Module *modulePtr = NULL; + Node *nodePtr; + char *module2, *node2, *p; + unsigned int oidlen; + SmiSubid oid[128]; + + if (!node) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, node, + &module2, &node2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (isdigit((int)node2[0])) { + for (oidlen = 0, p = strtok(node2, ". "); p; + oidlen++, p = strtok(NULL, ". ")) { + oid[oidlen] = strtoul(p, NULL, 0); + } + nodePtr = getNode(oidlen, oid); + if (nodePtr) { + if (modulePtr) { + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + } else { + objectPtr = findObjectByNode(nodePtr); + } + } + } else { + p = strtok(node2, ". "); + if (modulePtr) { + objectPtr = findObjectByModuleAndName(modulePtr, p); + } else { + objectPtr = findObjectByName(p); + } + } + + smiFree(module2); + smiFree(node2); + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]) +{ + Node *nodePtr; + Object *objectPtr; + + if (!oidlen) { + return NULL; + } + + nodePtr = getNode(oidlen, oid); + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind) +{ + Module *modulePtr; + Node *nodePtr = NULL; + Object *objectPtr; + + if (!smiModulePtr) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + if (modulePtr && modulePtr->prefixNodePtr) { + /* start at the common oid prefix of this module */ + nodePtr = modulePtr->prefixNodePtr; + } else { + nodePtr = smiHandle->rootNodePtr->firstChildPtr; + } + + do { + objectPtr = getNextChildObject(nodePtr, modulePtr, nodekind); + + if (objectPtr) + return &objectPtr->export; + + if (nodePtr->firstChildPtr) { + nodePtr = nodePtr->firstChildPtr; + } else if (nodePtr->nextPtr) { + nodePtr = nodePtr->nextPtr; + } else { + for (nodePtr = nodePtr->parentPtr; + nodePtr && (nodePtr->parentPtr) && (!nodePtr->nextPtr); + nodePtr = nodePtr->parentPtr); + if (nodePtr) nodePtr = nodePtr->nextPtr; + } + } while (nodePtr); + + return NULL; +} + + + +SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + int i; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!modulePtr) { + return NULL; + } + + if (!nodePtr) { + return NULL; + } + + do { + if (nodePtr->firstChildPtr) { + nodePtr = nodePtr->firstChildPtr; + } else if (nodePtr->nextPtr) { + nodePtr = nodePtr->nextPtr; + } else { + for (nodePtr = nodePtr->parentPtr; + (nodePtr->parentPtr) && (!nodePtr->nextPtr); + nodePtr = nodePtr->parentPtr); + nodePtr = nodePtr->nextPtr; + /* did we move outside the common oid prefix of this module? */ + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) + if ((!nodePtr) || (!nodePtr->oid) || + (nodePtr->oid[i] != modulePtr->prefixNodePtr->oid[i])) + return NULL; + } + + objectPtr = getNextChildObject(nodePtr, modulePtr, nodekind); + + if (objectPtr) + return &objectPtr->export; + + } while (nodePtr); + + return NULL; +} + + + +SmiNode *smiGetParentNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Import *importPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + if (nodePtr == smiHandle->rootNodePtr) { + return NULL; + } + + nodePtr = nodePtr->parentPtr; + if (! nodePtr) { + return NULL; + } + + /* + * First, try to find a definition in the same module. + */ + objectPtr = NULL; + if (modulePtr) { + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + } + + /* + * If found, check if it's imported. In case, get the original definition. + */ + if (objectPtr) { + importPtr = findImportByName(objectPtr->export.name, + objectPtr->modulePtr); + if (importPtr) { + objectPtr = findObjectByModulenameAndNode(importPtr->export.module, + nodePtr); + } else { + objectPtr = NULL; + } + } + + /* + * If not yet found, try to find any definition. + */ + if (!objectPtr) { + objectPtr = findObjectByNode(nodePtr); + + if ((!objectPtr) && (nodePtr->parentPtr)) { + /* an implicitly created node, e.g. gaga.0 in an object + * definition with oid == gaga.0.1. + */ + objectPtr = addObject(SMI_UNKNOWN_LABEL, + nodePtr->parentPtr, nodePtr->subid, + 0, NULL); + objectPtr->nodePtr = nodePtr; + objectPtr->modulePtr = modulePtr; + } + } + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr) +{ + if (!smiNodePtr) { + return NULL; + } + + return &((Object *)smiNodePtr)->relatedPtr->export; +} + + + +SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + nodePtr = nodePtr->firstChildPtr; + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + if (!objectPtr) objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + nodePtr = nodePtr->nextPtr; + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + if (!objectPtr) objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->objectPtr->export; +} + + + +SmiModule *smiGetNodeModule(SmiNode *smiNodePtr) +{ + return &((Object *)smiNodePtr)->modulePtr->export; +} + + + +SmiType *smiGetNodeType(SmiNode *smiNodePtr) +{ + Type *typePtr; + + typePtr = ((Object *)smiNodePtr)->typePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +int smiGetNodeLine(SmiNode *smiNodePtr) +{ + return ((Object *)smiNodePtr)->line; +} + + + +SmiElement *smiGetFirstElement(SmiNode *smiNodePtr) +{ + List *listPtr; + + if (!smiNodePtr) { + return NULL; + } + + listPtr = ((Object *)smiNodePtr)->listPtr; + + return (SmiElement *)listPtr; +} + + + +SmiElement *smiGetNextElement(SmiElement *smiElementPtr) +{ + List *listPtr; + + if (!smiElementPtr) { + return NULL; + } + + listPtr = ((List *)smiElementPtr)->nextPtr; + + return (SmiElement *)listPtr; +} + + + +SmiNode *smiGetElementNode(SmiElement *smiElementPtr) +{ + if ((Object *)((List *)smiElementPtr)->ptr) + return &((Object *)((List *)smiElementPtr)->ptr)->export; + else + return NULL; +} + + + +SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr) +{ + Object *objectPtr; + + if (!smiComplianceNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiComplianceNodePtr; + + if (!objectPtr->optionlistPtr) { + return NULL; + } + + if (objectPtr->export.nodekind != SMI_NODEKIND_COMPLIANCE) { + return NULL; + } + + return &((Option *)objectPtr->optionlistPtr->ptr)->export; +} + + + +SmiOption *smiGetNextOption(SmiOption *smiOptionPtr) +{ + List *listPtr; + + if (!smiOptionPtr) { + return NULL; + } + + for (listPtr = + ((Option *)smiOptionPtr)->compliancePtr->optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + if ((Option *)(listPtr->ptr) == (Option *)smiOptionPtr) { + if (listPtr->nextPtr) { + return &((Option *)listPtr->nextPtr->ptr)->export; + } else { + return NULL; + } + } + } + + return NULL; +} + + + +SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr) +{ + return &((Option *)smiOptionPtr)->objectPtr->export; +} + + + +int smiGetOptionLine(SmiOption *smiOptionPtr) +{ + return ((Option *)smiOptionPtr)->line; +} + + + +SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr) +{ + Object *objectPtr; + + if (!smiComplianceNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiComplianceNodePtr; + + if (!objectPtr->refinementlistPtr) { + return NULL; + } + + if (objectPtr->export.nodekind != SMI_NODEKIND_COMPLIANCE) { + return NULL; + } + + return &((Refinement *)objectPtr->refinementlistPtr->ptr)->export; +} + + + +SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr) +{ + List *listPtr; + + if (!smiRefinementPtr) { + return NULL; + } + + for (listPtr = + ((Refinement *)smiRefinementPtr)->compliancePtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + if ((Refinement *)(listPtr->ptr) == (Refinement *)smiRefinementPtr) { + if (listPtr->nextPtr) { + return &((Refinement *)listPtr->nextPtr->ptr)->export; + } else { + return NULL; + } + } + } + + return NULL; +} + + + +SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr) +{ + return &((Refinement *)smiRefinementPtr)->objectPtr->export; +} + + + +SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr) +{ + Type *typePtr; + + typePtr = ((Refinement *)smiRefinementPtr)->typePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr) +{ + Type *typePtr; + + typePtr = ((Refinement *)smiRefinementPtr)->writetypePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +int smiGetRefinementLine(SmiRefinement *smiRefinementPtr) +{ + return ((Refinement *)smiRefinementPtr)->line; +} + + + +SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr) +{ + List *listPtr; + + if (!smiNodePtr) { + return NULL; + } + + listPtr = ((Object *)smiNodePtr)->uniquenessPtr; + + return (SmiElement *)listPtr; +} + + + +char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags) +{ + SmiNode *nodePtr = NULL; + SmiModule *modulePtr = NULL; + unsigned int i = 0; + char *ss, *s = NULL; + + if (!oid) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + + if (flags & (SMI_RENDER_NAME | SMI_RENDER_QUALIFIED)) { + int len; + for (len = oidlen; len; len--) { + nodePtr = smiGetNodeByOID(len, oid); + if (! nodePtr || nodePtr->name) break; + } + if (nodePtr && nodePtr->name) { + i = nodePtr->oidlen; + if (flags & SMI_RENDER_QUALIFIED) { + modulePtr = smiGetNodeModule(nodePtr); + } + if (modulePtr) { + smiAsprintf(&s, "%s::%s", + modulePtr->name, nodePtr->name); + } else { + smiAsprintf(&s, "%s", nodePtr->name); + } + } + } + + for (; i < oidlen; i++) { + ss = s; + smiAsprintf(&s, "%s%s%u", ss ? ss : "", i ? "." : "", oid[i]); + smiFree(ss); + } + + if ((!s) && (flags & SMI_RENDER_UNKNOWN)) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } + + return s; +} + + + +char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, int flags) +{ + unsigned int i, pfx; + int j, k, n, have_pfx; + char *last_fmt, *fmt; + SmiUnsigned64 vv; + int xlen; + SmiNamedNumber *nn; + char *s, *ss; + char f[8]; + SmiUnsigned32 v32; + SmiUnsigned64 v64; + + if (!smiValuePtr) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + + switch (smiValuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + if (!(flags & SMI_RENDER_FORMAT) || + !smiTypePtr || !smiTypePtr->format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + smiAsprintf(&s, "%0*lu.", + 1 + i, + smiValuePtr->value.unsigned32); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, "%lu", smiValuePtr->value.unsigned32); + } + } else if (smiTypePtr->format[0] == 'x') { + smiAsprintf(&s, "%lx", smiValuePtr->value.unsigned32); + } else if (smiTypePtr->format[0] == 'o') { + smiAsprintf(&s, "%lo", smiValuePtr->value.unsigned32); + } else if (smiTypePtr->format[0] == 'b') { + for (i = 32 - 1; + i > 0 && !(smiValuePtr->value.unsigned32 & (1 << i)); i--); + s = smiMalloc(i + 1 + 1); + if (s) { + for (j = 0; i >= 0; i--, j++) { + s[j] = smiValuePtr->value.unsigned32 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + sprintf(f, "%%0%s.", UINT64_FORMAT); + f[2] = '*'; + smiAsprintf(&s, f, + 1 + i, + smiValuePtr->value.unsigned64); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, UINT64_FORMAT, smiValuePtr->value.unsigned64); + } + } else if (smiTypePtr->format[0] == 'x') { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, smiValuePtr->value.unsigned64); + } else if (smiTypePtr->format[0] == 'o') { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, smiValuePtr->value.unsigned64); + } else if (smiTypePtr->format[0] == 'b') { + for (i = 64 - 1; + i > 0 && !(smiValuePtr->value.unsigned64 & (1 << i)); i--); + s = smiMalloc(i + 1 + 1); + if (s) { + for (j = 0; i >= 0; i--, j++) { + s[j] = smiValuePtr->value.unsigned64 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + smiAsprintf(&s, "%0*ld.", + 1 + i + (smiValuePtr->value.integer32 < 0 ? 1 : 0), + smiValuePtr->value.integer32); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'x') { + if (smiValuePtr->value.integer32 >= 0) { + smiAsprintf(&s, "%lx", smiValuePtr->value.integer32); + } else { + smiAsprintf(&s, "-%lx", - smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'o') { + if (smiValuePtr->value.integer32 >= 0) { + smiAsprintf(&s, "%lo", smiValuePtr->value.integer32); + } else { + smiAsprintf(&s, "-%lo", - smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'b') { + if (smiValuePtr->value.integer32 >= 0) { + v32 = smiValuePtr->value.integer32; + j = 0; + } else { + v32 = - smiValuePtr->value.integer32; + j = 1; + } + for (i = 32 - 1; + i > 0 && !(v32 & (1 << i)); i--); + s = smiMalloc(i + j + 1 + 1); + if (s) { + s[0] = '-'; + for (; i >= 0; i--, j++) { + s[j] = v32 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + sprintf(f, "%%0%s.", INT64_FORMAT); + f[2] = '*'; + smiAsprintf(&s, f, + 1 + i + (smiValuePtr->value.integer64 < 0 ? 1 : 0), + smiValuePtr->value.integer64); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, INT64_FORMAT, smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'x') { + if (smiValuePtr->value.integer64 >= 0) { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, smiValuePtr->value.integer64); + } else { + sprintf(f, "-%s", UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, - smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'o') { + if (smiValuePtr->value.integer64 >= 0) { + strcpy(f, UINT64_FORMAT); + sprintf(f, "-%s", UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, smiValuePtr->value.integer64); + } else { + smiAsprintf(&s, f, - smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'b') { + if (smiValuePtr->value.integer64 >= 0) { + v64 = smiValuePtr->value.integer64; + j = 0; + } else { + v64 = - smiValuePtr->value.integer64; + j = 1; + } + for (i = 64 - 1; + i > 0 && !(v64 & (1 << i)); i--); + s = smiMalloc(i + j + 1 + 1); + if (s) { + s[0] = '-'; + for (; i >= 0; i--, j++) { + s[j] = v64 & (1<len, smiValuePtr->value.oid, flags); + break; + case SMI_BASETYPE_OCTETSTRING: + if (!(flags & SMI_RENDER_FORMAT) || + (!smiTypePtr->format && + (smiTypePtr->name && strcmp( smiTypePtr->name, "IpAddress")) ) ) { + for (i = 0; i < smiValuePtr->len; i++) { + if (!isprint((int)smiValuePtr->value.ptr[i])) break; + } + if ((i < smiValuePtr->len) || + !(flags & SMI_RENDER_PRINTABLE)) { + smiAsprintf(&s, ""); + for (i=0; i < smiValuePtr->len; i++) { + ss = s; + smiAsprintf(&s, "%s%02x", ss, smiValuePtr->value.ptr[i]); + smiFree(ss); + } + } else { + smiAsprintf(&s, "%s", smiValuePtr->value.ptr); + } + } else { + i = 0; + smiAsprintf(&s, ""); + /* SNMPv2-SMI:IpAddress does not have a display hint. + ==> let's use this one: "1d." if we have an IpAddress here */ + fmt = (smiTypePtr->name && + strcmp( smiTypePtr->name, "IpAddress" ) ) ? + smiTypePtr->format : "1d."; + while (*fmt && i < smiValuePtr->len) { + last_fmt = fmt; + have_pfx = pfx = 0; /* scan prefix: */ + while (*fmt && isdigit((int)*fmt)) { + pfx = pfx * 10 + *fmt - '0', have_pfx = 1, fmt++; + } + if (! have_pfx) { + pfx = 1; + } + switch (*fmt) { + case 't': + /* XXX UTF-8 not implemented, fall through to ASCII (a) */ + case 'a': + n = (pfx < (smiValuePtr->len - i)) ? + pfx : smiValuePtr->len - i; + for (k = 0; k < n; k++) { + if (! isascii((int) smiValuePtr->value.ptr[i+k])) { + smiFree(s); + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + ss = s; + smiAsprintf(&s, "%s%c", ss, smiValuePtr->value.ptr[i+k]); + smiFree(ss); + } + i += n; + break; + case 'b': + case 'd': + case 'o': + case 'x': + /* XXX: limited to no more than + sizeof(SmiUnsigned64) octets */ + vv = 0; + xlen = pfx * 2; + while (pfx > 0 && i < smiValuePtr->len) { + vv = vv * 256 + + ((unsigned char)smiValuePtr->value.ptr[i]); + i++; + pfx--; + } + switch (*fmt) { + case 'd': + ss = s; + sprintf(f, "%%s%s", UINT64_FORMAT); + smiAsprintf(&s, f, ss, vv); + smiFree(ss); + break; + case 'o': + ss = s; + sprintf(f, "%%s%s", UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, ss, vv); + smiFree(ss); + break; + case 'x': + ss = s; + sprintf(f, "%%s%%0%s", UINT64_FORMAT); + f[4] = '*'; + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, ss, xlen, vv); + smiFree(ss); + break; + case 'b': + k = pfx * 8 - 1; + if (k > sizeof(SmiUnsigned64) * 8 - 1) + k = sizeof(SmiUnsigned64) * 8 - 1; + for (j = 0; k >= 0; k--, j++) { + ss = s; + smiAsprintf(&s, "%s%c", + ss, vv & (1 << k) ? '1' : '0'); + smiFree(ss); + } + break; + } + break; + default: + smiFree(s); + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + fmt++; + + /* + * Check for a separator and repeat with last format if + * data is still available. + */ + if (*fmt && ! isdigit((int) *fmt) && *fmt != '*') { + if (i < smiValuePtr->len) { + ss = s; + smiAsprintf(&s, "%s%c", ss, fmt[0]); + smiFree(ss); + } + fmt++; + } + + if (! *fmt && (i < smiValuePtr->len)) { + fmt = last_fmt; + } + } + } + break; + case SMI_BASETYPE_ENUM: + if ((flags & SMI_RENDER_NAME) && (smiTypePtr)) { + for (nn = smiGetFirstNamedNumber(smiTypePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.integer32 == smiValuePtr->value.integer32) + break; + } + if (nn) { + if (flags & SMI_RENDER_NUMERIC) { + smiAsprintf(&s, "%s(%ld)", + nn->name, nn->value.value.integer32); + } else { + smiAsprintf(&s, "%s", nn->name); + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + break; + case SMI_BASETYPE_BITS: + smiAsprintf(&s, ""); + for (i = 0, nn = NULL; i < smiValuePtr->len * 8; i++) { + if (smiValuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if ((flags & SMI_RENDER_NAME) && (smiTypePtr)) { + for (nn = smiGetFirstNamedNumber(smiTypePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + } + ss = s; + if ((flags & SMI_RENDER_NAME) && + (flags & SMI_RENDER_NUMERIC) && nn) { + smiAsprintf(&s, "%s%s%s(%d)", + ss, strlen(ss) ? " " : "", nn->name, i); + } else if (nn) { + smiAsprintf(&s, "%s%s%s", + ss, strlen(ss) ? " " : "", nn->name); + } else { + smiAsprintf(&s, "%s%s%d", + ss, strlen(ss) ? " " : "", i); + } + smiFree(ss); + } + } + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + default: + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + break; + } + + return s; +} + +char *smiRenderNode(SmiNode *smiNodePtr, int flags) +{ + char *s; + SmiModule *modulePtr; + + if ((!smiNodePtr) || (smiNodePtr->name == NULL)) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + } else { + modulePtr = smiGetNodeModule(smiNodePtr); + if ((!(flags & SMI_RENDER_QUALIFIED)) || + (!modulePtr) || + (!strlen(modulePtr->name))) { + smiAsprintf(&s, "%s", smiNodePtr->name); + } else { + smiAsprintf(&s, "%s::%s", modulePtr->name, smiNodePtr->name); + } + } + return s; +} + + + +char *smiRenderType(SmiType *smiTypePtr, int flags) +{ + char *s; + SmiModule *modulePtr; + + if ((!smiTypePtr) || (smiTypePtr->name == NULL)) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + } else { + modulePtr = smiGetTypeModule(smiTypePtr); + if ((!(flags & SMI_RENDER_QUALIFIED)) || + (!modulePtr) || + (!strlen(modulePtr->name))) { + smiAsprintf(&s, "%s", smiTypePtr->name); + } else { + smiAsprintf(&s, "%s::%s", modulePtr->name, smiTypePtr->name); + } + } + return s; +} + + + +unsigned int smiGetMinSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + unsigned int min = 65535, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_BITS: + return 0; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 0; + break; + default: + return 0; + } + + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->minValue.value.unsigned32 < min) { + min = smiRange->minValue.value.unsigned32; + } + } + if (min < 65535 && min > size) { + size = min; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = smiGetMinSize(parentType); + if (psize > size) { + size = psize; + } + } + + return size; +} + + + +unsigned int smiGetMaxSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + SmiNamedNumber *nn; + unsigned int max = 0, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OCTETSTRING: + size = 65535; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 128; + break; + default: + return 0xffffffff; + } + + if (smiType->basetype == SMI_BASETYPE_BITS) { + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 > max) { + max = nn->value.value.unsigned32; + } + } + size = (max / 8) + 1; + return size; + } + + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->maxValue.value.unsigned32 > max) { + max = smiRange->maxValue.value.unsigned32; + } + } + if (max > 0 && max < size) { + size = max; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = smiGetMaxSize(parentType); + if (psize < size) { + size = psize; + } + } + + return size; +} + + + +int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen) +{ + SmiNode *indexNode = NULL; + SmiElement *smiElement; + SmiNode *iNode; + SmiType *iType; + int i, j, last = 0; + + if (!vals || !valslen || !row || !oid) { + return 0; + } + + switch (row->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = row; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(row); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + *valslen = 0; + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) break; + (*valslen)++; + } + } + if (smiElement) { + return 0; + } + + *vals = smiMalloc(*valslen * sizeof(SmiValue)); + + for (smiElement = smiGetFirstElement(indexNode), i = 0, j = 0; + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + iType = smiGetNodeType(iNode); + fprintf(stderr, "** %s (%s)\n", iNode->name, iType->name); + (*vals)[i].basetype = iType->basetype; + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + (*vals)[i].value.integer32 = oid[j]; j++; + break; + case SMI_BASETYPE_UNSIGNED32: + (*vals)[i].value.unsigned32 = oid[j]; j++; + break; + case SMI_BASETYPE_OCTETSTRING: + /* need to know whether implied/fixed length or not */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* need to know whether implied/fixed length or not */ + break; + default: + return 0; + } + } + + return *valslen; +} + + + +int smiAsprintf(char **strp, const char *format, ...) +{ + int rc; + va_list ap; + + va_start(ap, format); + rc = vasprintf(strp, format, ap); + va_end(ap); + if (! strp) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return rc; +} + + + +int smiVasprintf(char **strp, const char *format, va_list ap) +{ + int rc; + + rc = vasprintf(strp, format, ap); + if (! strp) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return rc; +} + + +int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max) +{ + SmiBasetype basetype = SMI_BASETYPE_UNKNOWN; + SmiRange *range; + + min->basetype = max->basetype = SMI_BASETYPE_UNKNOWN; + min->len = max->len = 0; + + range = smiGetFirstRange(smiType); + if (!range) { + return 0; + } + + basetype = range->minValue.basetype; + min->basetype = max->basetype = basetype; + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + min->value.integer32 = SMI_BASETYPE_INTEGER32_MAX; + max->value.integer32 = SMI_BASETYPE_INTEGER32_MIN; + break; + case SMI_BASETYPE_INTEGER64: + min->value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + max->value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + break; + case SMI_BASETYPE_UNSIGNED32: + min->value.unsigned32 = SMI_BASETYPE_UNSIGNED32_MAX; + max->value.unsigned32 = SMI_BASETYPE_UNSIGNED32_MIN; + break; + case SMI_BASETYPE_UNSIGNED64: + min->value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + max->value.unsigned64 = SMI_BASETYPE_UNSIGNED32_MIN; + break; + default: + fprintf(stderr, "smidump: unexpected basetype %d\n", basetype); + return -1; + } + + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + if (range->minValue.value.integer32 < min->value.integer32) { + min->value.integer32 = range->minValue.value.integer32; + } + if (range->maxValue.value.integer32 > max->value.integer32) { + max->value.integer32 = range->maxValue.value.integer32; + } + break; + case SMI_BASETYPE_INTEGER64: + if (range->minValue.value.integer64 < min->value.integer64) { + min->value.integer64 = range->minValue.value.integer64; + } + if (range->maxValue.value.integer64 > max->value.integer64) { + max->value.integer64 = range->maxValue.value.integer64; + } + break; + case SMI_BASETYPE_UNSIGNED32: + if (range->minValue.value.unsigned32 < min->value.unsigned32) { + min->value.unsigned32 = range->minValue.value.unsigned32; + } + if (range->maxValue.value.unsigned32 > max->value.unsigned32) { + max->value.unsigned32 = range->maxValue.value.unsigned32; + } + break; + case SMI_BASETYPE_UNSIGNED64: + if (range->minValue.value.unsigned64 < min->value.unsigned64) { + min->value.unsigned64 = range->minValue.value.unsigned64; + } + if (range->maxValue.value.unsigned64 > max->value.unsigned64) { + max->value.unsigned64 = range->maxValue.value.unsigned64; + } + break; + default: + fprintf(stderr, "smidump: unexpected basetype %d\n", basetype); + return -1; + } + } + + return 0; +} diff --git a/lib/smi.h b/lib/smi.h new file mode 100644 index 0000000..0875bc4 --- /dev/null +++ b/lib/smi.h @@ -0,0 +1,668 @@ +/* + * smi.h -- + * + * Interface Definition of libsmi (version 2:27:0). + * + * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.h.in 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SMI_H +#define _SMI_H + +#include +#include +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include "limits.h" +#endif +#include + + +#ifdef __cplusplus +extern "C" { +#endif + + +#define SMI_LIBRARY_VERSION "2:27:0" +extern const char *smi_library_version; + +#define SMI_VERSION_MAJOR 0 +#define SMI_VERSION_MINOR 4 +#define SMI_VERSION_PATCHLEVEL 8 +#define SMI_VERSION_STRING "0.4.8" +extern const char *smi_version_string; + + + +#define SMI_FLAG_NODESCR 0x0800 /* do not load descriptions/references. */ +#define SMI_FLAG_VIEWALL 0x1000 /* all modules are `known', need no views. */ +#define SMI_FLAG_ERRORS 0x2000 /* print parser errors. */ +#define SMI_FLAG_RECURSIVE 0x4000 /* recursively parse imported modules. */ +#define SMI_FLAG_STATS 0x8000 /* print statistics after parsing module. */ +#define SMI_FLAG_MASK (SMI_FLAG_NODESCR|SMI_FLAG_VIEWALL|SMI_FLAG_STATS|\ + SMI_FLAG_RECURSIVE|SMI_FLAG_ERRORS) + + + +/* misc mappings of SMI types to C types */ +typedef char *SmiIdentifier; +typedef unsigned long SmiUnsigned32; +typedef long SmiInteger32; +#ifdef _MSC_VER /* if using MSVC and not configure */ +typedef __int64 SmiInteger64; +typedef unsigned __int64 SmiUnsigned64; +#else +typedef unsigned long long SmiUnsigned64; +typedef long long SmiInteger64; +#endif +typedef unsigned int SmiSubid; +typedef float SmiFloat32; +typedef double SmiFloat64; +typedef long double SmiFloat128; + + + +/* SmiLanguage -- language of an actual MIB module */ +typedef enum SmiLanguage { + SMI_LANGUAGE_UNKNOWN = 0, /* should not occur */ + SMI_LANGUAGE_SMIV1 = 1, + SMI_LANGUAGE_SMIV2 = 2, + SMI_LANGUAGE_SMING = 3, + SMI_LANGUAGE_SPPI = 4 +} SmiLanguage; + +/* SmiBasetype -- base types of all languages */ +typedef enum SmiBasetype { + SMI_BASETYPE_UNKNOWN = 0, /* should not occur */ + SMI_BASETYPE_INTEGER32 = 1, /* also SMIv1/v2 INTEGER */ + SMI_BASETYPE_OCTETSTRING = 2, + SMI_BASETYPE_OBJECTIDENTIFIER = 3, + SMI_BASETYPE_UNSIGNED32 = 4, + SMI_BASETYPE_INTEGER64 = 5, /* SMIng and SPPI */ + SMI_BASETYPE_UNSIGNED64 = 6, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_FLOAT32 = 7, /* only SMIng */ + SMI_BASETYPE_FLOAT64 = 8, /* only SMIng */ + SMI_BASETYPE_FLOAT128 = 9, /* only SMIng */ + SMI_BASETYPE_ENUM = 10, + SMI_BASETYPE_BITS = 11, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_POINTER = 12 /* only SMIng */ +} SmiBasetype; + +#ifdef INT32_MIN +#define SMI_BASETYPE_INTEGER32_MIN INT32_MIN +#else +#define SMI_BASETYPE_INTEGER32_MIN INT_MIN +#endif +#ifdef INT32_MAX +#define SMI_BASETYPE_INTEGER32_MAX INT32_MAX +#else +#define SMI_BASETYPE_INTEGER32_MAX INT_MAX +#endif +#define SMI_BASETYPE_INTEGER64_MIN LIBSMI_INT64_MIN +#define SMI_BASETYPE_INTEGER64_MAX LIBSMI_INT64_MAX +#define SMI_BASETYPE_UNSIGNED32_MIN 0 +#ifdef UINT32_MAX +#define SMI_BASETYPE_UNSIGNED32_MAX UINT32_MAX +#else +#define SMI_BASETYPE_UNSIGNED32_MAX UINT_MAX +#endif +#define SMI_BASETYPE_UNSIGNED64_MIN 0 +#define SMI_BASETYPE_UNSIGNED64_MAX LIBSMI_UINT64_MAX + +/* SmiStatus -- values of status levels */ +typedef enum SmiStatus { + SMI_STATUS_UNKNOWN = 0, /* should not occur */ + SMI_STATUS_CURRENT = 1, /* only SMIv2, SMIng and SPPI */ + SMI_STATUS_DEPRECATED = 2, /* SMIv1, SMIv2, SMIng and SPPI */ + SMI_STATUS_MANDATORY = 3, /* only SMIv1 */ + SMI_STATUS_OPTIONAL = 4, /* only SMIv1 */ + SMI_STATUS_OBSOLETE = 5 /* SMIv1, SMIv2, SMIng and SPPI */ +} SmiStatus; + +/* SmiAccess -- values of access levels */ +typedef enum SmiAccess { + SMI_ACCESS_UNKNOWN = 0, /* should not occur */ + SMI_ACCESS_NOT_IMPLEMENTED = 1, /* only for agent capability variations */ + SMI_ACCESS_NOT_ACCESSIBLE = 2, /* the values 2 to 5 are allowed to be */ + SMI_ACCESS_NOTIFY = 3, /* compared by relational operators. */ + SMI_ACCESS_READ_ONLY = 4, + SMI_ACCESS_READ_WRITE = 5, + SMI_ACCESS_INSTALL = 6, /* these three entries are only valid */ + SMI_ACCESS_INSTALL_NOTIFY = 7, /* for SPPI */ + SMI_ACCESS_REPORT_ONLY = 8, + SMI_ACCESS_EVENT_ONLY = 9 /* this entry is valid only for SMIng */ +} SmiAccess; + +/* SmiNodekind -- type or statement that leads to a definition */ +typedef unsigned int SmiNodekind; +#define SMI_NODEKIND_UNKNOWN 0x0000 /* should not occur */ +#define SMI_NODEKIND_NODE 0x0001 +#define SMI_NODEKIND_SCALAR 0x0002 +#define SMI_NODEKIND_TABLE 0x0004 +#define SMI_NODEKIND_ROW 0x0008 +#define SMI_NODEKIND_COLUMN 0x0010 +#define SMI_NODEKIND_NOTIFICATION 0x0020 +#define SMI_NODEKIND_GROUP 0x0040 +#define SMI_NODEKIND_COMPLIANCE 0x0080 +#define SMI_NODEKIND_CAPABILITIES 0x0100 +#define SMI_NODEKIND_ANY 0xffff + +/* SmiDecl -- type or statement that leads to a definition */ +typedef enum SmiDecl { + SMI_DECL_UNKNOWN = 0, /* should not occur */ + /* SMIv1/v2 ASN.1 statements and macros */ + SMI_DECL_IMPLICIT_TYPE = 1, + SMI_DECL_TYPEASSIGNMENT = 2, + SMI_DECL_IMPL_SEQUENCEOF = 4, /* this will go away */ + SMI_DECL_VALUEASSIGNMENT = 5, + SMI_DECL_OBJECTTYPE = 6, /* values >= 6 are assumed to be */ + SMI_DECL_OBJECTIDENTITY = 7, /* registering an OID, see check.c */ + SMI_DECL_MODULEIDENTITY = 8, + SMI_DECL_NOTIFICATIONTYPE = 9, + SMI_DECL_TRAPTYPE = 10, + SMI_DECL_OBJECTGROUP = 11, + SMI_DECL_NOTIFICATIONGROUP = 12, + SMI_DECL_MODULECOMPLIANCE = 13, + SMI_DECL_AGENTCAPABILITIES = 14, + SMI_DECL_TEXTUALCONVENTION = 15, + SMI_DECL_MACRO = 16, + SMI_DECL_COMPL_GROUP = 17, + SMI_DECL_COMPL_OBJECT = 18, + SMI_DECL_IMPL_OBJECT = 19, /* object label in sth like "iso(1)" */ + /* SMIng statements */ + SMI_DECL_MODULE = 33, + SMI_DECL_EXTENSION = 34, + SMI_DECL_TYPEDEF = 35, + SMI_DECL_NODE = 36, + SMI_DECL_SCALAR = 37, + SMI_DECL_TABLE = 38, + SMI_DECL_ROW = 39, + SMI_DECL_COLUMN = 40, + SMI_DECL_NOTIFICATION = 41, + SMI_DECL_GROUP = 42, + SMI_DECL_COMPLIANCE = 43, + SMI_DECL_IDENTITY = 44, + SMI_DECL_CLASS = 45, + SMI_DECL_ATTRIBUTE = 46, + SMI_DECL_EVENT = 47 +} SmiDecl; + +/* SmiIndexkind -- actual kind of a table row's index method */ +typedef enum SmiIndexkind { + SMI_INDEX_UNKNOWN = 0, + SMI_INDEX_INDEX = 1, + SMI_INDEX_AUGMENT = 2, + SMI_INDEX_REORDER = 3, + SMI_INDEX_SPARSE = 4, + SMI_INDEX_EXPAND = 5 +} SmiIndexkind; + +/* SmiValue -- any single value; for use in default values and subtyping */ +typedef struct SmiValue { + SmiBasetype basetype; + unsigned int len; /* OID, OctetString, Bits */ + union { + SmiUnsigned64 unsigned64; + SmiInteger64 integer64; + SmiUnsigned32 unsigned32; + SmiInteger32 integer32; + SmiFloat32 float32; + SmiFloat64 float64; + SmiFloat128 float128; + SmiSubid *oid; + char *ptr; /* OctetString, Bits */ + } value; +} SmiValue; + +/* SmiNamedNumber -- a named number; for enumeration and bitset types */ +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +/* SmiRange -- a min-max value range; for subtyping of sizes or numbers */ +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +/* SmiModule -- the main structure of a module */ +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +/* SmiRevision -- content of a single module's revision clause */ +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +/* SmiImport -- an imported descriptor */ +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +/* SmiMacro -- the main structure of a SMIv1/v2 macro or SMIng extension */ +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; + char *abnf; /* only for SMIng */ +} SmiMacro; + +/* SmiIdentity -- the main structure of a SMIng Identity. */ +/* NOTE: Not to be confused with SMIv2 MODULE-IDENTITY */ +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +/* SmiType -- the main structure of a type definition (also base types) */ +/* also SMIng attributes */ +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +/* SmiNode -- the main structure of any clause that defines a node */ +typedef struct SmiNode { + SmiIdentifier name; + unsigned int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; /* only valid for rows */ + int implied; /* only valid for rows */ + int create; /* only valid for rows */ + SmiNodekind nodekind; +} SmiNode; + +/* SmiElement -- an item in a list (row index column, notification object) */ +typedef struct SmiElement { +#ifndef __GNUC__ + char dummy; /* many compilers are unhappy with empty structures. */ +#endif + /* no visible attributes */ +} SmiElement; + +/* SmiOption -- an optional group in a compliance statement */ +typedef struct SmiOption { + char *description; +} SmiOption; + +/* SmiRefinement -- a refined object in a compliance statement */ +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +/* SmiClass -- main structure for SMIng class statement */ +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +/* SmiClass -- main structure for class attribute */ +typedef struct SmiAttribute { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; + SmiAccess access; +} SmiAttribute; + + +/* SmiEvent -- the main structure of a SMIng Event(part of class definition).*/ +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + + + +extern int smiInit(const char *tag); + +extern void smiExit(void); + +extern void smiSetErrorLevel(int level); + +extern int smiGetFlags(void); + +extern void smiSetFlags(int userflags); + +extern char *smiGetPath(void); + +extern int smiSetPath(const char *path); + +extern void smiSetSeverity(char *pattern, int severity); + +extern int smiReadConfig(const char *filename, const char *tag); + +extern char *smiLoadModule(const char *module); + +extern int smiIsLoaded(const char *module); + + +typedef void (SmiErrorHandler) (char *path, int line, int severity, char *msg, char *tag); + +extern void smiSetErrorHandler(SmiErrorHandler smiErrorHandler); + + +extern SmiModule *smiGetModule(const char *module); + +extern SmiModule *smiGetFirstModule(void); + +extern SmiModule *smiGetNextModule(SmiModule *smiModulePtr); + +extern SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr); + +extern SmiImport *smiGetFirstImport(SmiModule *smiModulePtr); + +extern SmiImport *smiGetNextImport(SmiImport *smiImportPtr); + +extern int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, char *importedName); + +extern SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr); + +extern SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr); + +extern int smiGetRevisionLine(SmiRevision *smiRevisionPtr); + + + +extern SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr); + +extern SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr); + +extern int smiGetIdentityLine(SmiIdentity *smiIdentityPtr); + +extern SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr,char *identity); + + + +extern SmiType *smiGetType(SmiModule *smiModulePtr, char *type); + +extern SmiType *smiGetFirstType(SmiModule *smiModulePtr); + +extern SmiType *smiGetNextType(SmiType *smiTypePtr); + +extern SmiType *smiGetParentType(SmiType *smiTypePtr); + +extern SmiModule *smiGetTypeModule(SmiType *smiTypePtr); + +extern int smiGetTypeLine(SmiType *smiTypePtr); + +extern SmiRange *smiGetFirstRange(SmiType *smiTypePtr); + +extern SmiRange *smiGetNextRange(SmiRange *smiRangePtr); + +extern int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max); + +extern SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr); + +extern SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); + + +extern SmiClass *smiGetFirstClass(SmiModule *smiModulePtr); + +extern SmiClass *smiGetNextClass(SmiClass *smiClassPtr); + +extern SmiClass *smiGetParentClass(SmiClass *smiClassPtr); + +extern SmiModule *smiGetClassModule(SmiClass *smiClassPtr); + +extern SmiClass *smiGetClass(SmiModule *smiModulePtr,char *class); + +extern int smiGetClassLine(SmiClass *smiClassPtr); + + + +extern SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute); + +extern SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAtrributePtr); + +extern SmiType *smiGetAttributeParentType(SmiAttribute *smiAtrributePtr); + +extern SmiClass *smiGetAttributeParentClass(SmiAttribute *smiAtrributePtr); + +extern SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiTypePtr); + +extern int smiIsClassScalar(SmiClass *smiClassPtr); + +extern SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr); + +extern SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); +extern SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr); + +extern SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr); + +extern int smiGetAttributeLine(SmiAttribute *smiAttributePtr); + + +extern SmiEvent *smiGetEvent(SmiClass *smiClassPtr, char *attribute); + +extern SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr); + +extern SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr); + +extern int smiGetEventLine(SmiEvent *smiEventPtr); + + +extern SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro); + +extern SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr); + +extern SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr); + +extern SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr); + +extern int smiGetMacroLine(SmiMacro *smiMacroPtr); + + +extern SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *name); + +extern SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]); + +extern SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetParentNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr); + +extern SmiModule *smiGetNodeModule(SmiNode *smiNodePtr); + +extern SmiType *smiGetNodeType(SmiNode *smiNodePtr); + +extern int smiGetNodeLine(SmiNode *smiNodePtr); + + + + +extern SmiElement *smiGetFirstElement(SmiNode *smiNodePtr); + +extern SmiElement *smiGetNextElement(SmiElement *smiElementPtr); + +extern SmiNode *smiGetElementNode(SmiElement *smiElementPtr); + + + +extern SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr); + +extern SmiOption *smiGetNextOption(SmiOption *smiOptionPtr); + +extern SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr); + +extern int smiGetOptionLine(SmiOption *smiOptionPtr); + + +extern SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr); + +extern SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr); + +extern SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr); + +extern int smiGetRefinementLine(SmiRefinement *smiRefinementPtr); + + +extern SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr); + +#define smiGetNextUniquenessElement(p) smiGetNextElement(p) + +extern char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags); + +extern char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, + int flags); + +extern char *smiRenderNode(SmiNode *smiNodePtr, int flags); + +extern char *smiRenderType(SmiType *smiTypePtr, int flags); + +#define SMI_RENDER_NUMERIC 0x01 /* render as numeric values */ +#define SMI_RENDER_NAME 0x02 /* render as names */ +#define SMI_RENDER_QUALIFIED 0x04 /* render names with module prefix */ +#define SMI_RENDER_FORMAT 0x08 /* render by applying the type's format if + type is given and format is present */ +#define SMI_RENDER_PRINTABLE 0x10 /* render string values as a printable + string if all octets are isprint() */ +#define SMI_RENDER_UNKNOWN 0x20 /* render even unknown items as strings + ("") so that we never get NULL */ +#define SMI_RENDER_ALL 0xff /* render as `human friendly' as possible */ + +#define SMI_UNKNOWN_LABEL "" + + +/* + * The functions smiGetMaxSize() and smiGetMinSize() compute the + * max size constraint on a given BITS, OCTET STRING or OBJECT + * IDENTIFIER type. The functions recurse towards the top of the + * type derivation tree. + */ + +extern unsigned int smiGetMinSize(SmiType *smiType); +extern unsigned int smiGetMaxSize(SmiType *smiType); + +/* + * Two utility functions to pack and unpack instance identifiers. + * The smiUnpack() function allocates the array of SmiValues and + * the smiPack() function allocates the array of SmiSubids. + */ + +extern int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen); + +extern int smiPack(SmiNode *row, SmiValue *vals, int valslen, + SmiSubid **oid, unsigned int *oidlen); + +/* + * Two printf functions that allocate memory dynamically. The call has + * to free the allocated memory. + */ + +extern int smiAsprintf(char **strp, const char *format, ...); + +extern int smiVasprintf(char **strp, const char *format, va_list ap); + + +/* + * The functions smiMalloc() and friends are used within the library + * for all memory allocations and deallocations. These functions are + * simple wrappers around the standard malloc() and friends functions, + * sometimes with some additional checking. We export these functions + * because on some systems (e.g. Windows) it is necessary to allocate + * / deallocate memory with the 'right' version of malloc() and + * friends. + */ + +#ifdef HAVE_DMALLOC_H + +extern void *_smiMalloc(char *, int, size_t); +extern void *_smiRealloc(char *, int, void *ptr, size_t size); +extern char *_smiStrdup(char *, int, const char *s1); +extern char *_smiStrndup(char *, int, const char *s1, size_t n); +extern void _smiFree(char *, int, void *ptr); + +#define smiMalloc(s) _smiMalloc(__FILE__, __LINE__, s) +#define smiRealloc(p,s) _smiRealloc(__FILE__, __LINE__, p, s) +#define smiStrdup(s) _smiStrdup(__FILE__, __LINE__, s) +#define smiStrndup(s,n) _smiStrndup(__FILE__, __LINE__, s, n) +#define smiFree(p) _smiFree(__FILE__, __LINE__, p) + +#else +extern void *smiMalloc(size_t size); +extern void *smiRealloc(void *ptr, size_t size); +extern char *smiStrdup(const char *s1); +extern char *smiStrndup(const char *s1, size_t n); +extern void smiFree(void *ptr); +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _SMI_H */ diff --git a/lib/smi.h.in b/lib/smi.h.in new file mode 100644 index 0000000..c28fca8 --- /dev/null +++ b/lib/smi.h.in @@ -0,0 +1,668 @@ +/* + * smi.h -- + * + * Interface Definition of libsmi (version @VERSION_LIBTOOL@). + * + * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.h.in 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SMI_H +#define _SMI_H + +#include +#include +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include "limits.h" +#endif +#include + + +#ifdef __cplusplus +extern "C" { +#endif + + +#define SMI_LIBRARY_VERSION "@VERSION_LIBTOOL@" +extern const char *smi_library_version; + +#define SMI_VERSION_MAJOR @LIBSMI_MAJOR@ +#define SMI_VERSION_MINOR @LIBSMI_MINOR@ +#define SMI_VERSION_PATCHLEVEL @LIBSMI_PATCHLEVEL@ +#define SMI_VERSION_STRING "@VERSION_STRING@" +extern const char *smi_version_string; + + + +#define SMI_FLAG_NODESCR 0x0800 /* do not load descriptions/references. */ +#define SMI_FLAG_VIEWALL 0x1000 /* all modules are `known', need no views. */ +#define SMI_FLAG_ERRORS 0x2000 /* print parser errors. */ +#define SMI_FLAG_RECURSIVE 0x4000 /* recursively parse imported modules. */ +#define SMI_FLAG_STATS 0x8000 /* print statistics after parsing module. */ +#define SMI_FLAG_MASK (SMI_FLAG_NODESCR|SMI_FLAG_VIEWALL|SMI_FLAG_STATS|\ + SMI_FLAG_RECURSIVE|SMI_FLAG_ERRORS) + + + +/* misc mappings of SMI types to C types */ +typedef char *SmiIdentifier; +typedef unsigned long SmiUnsigned32; +typedef long SmiInteger32; +#ifdef _MSC_VER /* if using MSVC and not configure */ +typedef __int64 SmiInteger64; +typedef unsigned __int64 SmiUnsigned64; +#else +typedef @UINT64_TYPE@ SmiUnsigned64; +typedef @INT64_TYPE@ SmiInteger64; +#endif +typedef unsigned int SmiSubid; +typedef float SmiFloat32; +typedef double SmiFloat64; +typedef long double SmiFloat128; + + + +/* SmiLanguage -- language of an actual MIB module */ +typedef enum SmiLanguage { + SMI_LANGUAGE_UNKNOWN = 0, /* should not occur */ + SMI_LANGUAGE_SMIV1 = 1, + SMI_LANGUAGE_SMIV2 = 2, + SMI_LANGUAGE_SMING = 3, + SMI_LANGUAGE_SPPI = 4 +} SmiLanguage; + +/* SmiBasetype -- base types of all languages */ +typedef enum SmiBasetype { + SMI_BASETYPE_UNKNOWN = 0, /* should not occur */ + SMI_BASETYPE_INTEGER32 = 1, /* also SMIv1/v2 INTEGER */ + SMI_BASETYPE_OCTETSTRING = 2, + SMI_BASETYPE_OBJECTIDENTIFIER = 3, + SMI_BASETYPE_UNSIGNED32 = 4, + SMI_BASETYPE_INTEGER64 = 5, /* SMIng and SPPI */ + SMI_BASETYPE_UNSIGNED64 = 6, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_FLOAT32 = 7, /* only SMIng */ + SMI_BASETYPE_FLOAT64 = 8, /* only SMIng */ + SMI_BASETYPE_FLOAT128 = 9, /* only SMIng */ + SMI_BASETYPE_ENUM = 10, + SMI_BASETYPE_BITS = 11, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_POINTER = 12 /* only SMIng */ +} SmiBasetype; + +#ifdef INT32_MIN +#define SMI_BASETYPE_INTEGER32_MIN INT32_MIN +#else +#define SMI_BASETYPE_INTEGER32_MIN INT_MIN +#endif +#ifdef INT32_MAX +#define SMI_BASETYPE_INTEGER32_MAX INT32_MAX +#else +#define SMI_BASETYPE_INTEGER32_MAX INT_MAX +#endif +#define SMI_BASETYPE_INTEGER64_MIN LIBSMI_INT64_MIN +#define SMI_BASETYPE_INTEGER64_MAX LIBSMI_INT64_MAX +#define SMI_BASETYPE_UNSIGNED32_MIN 0 +#ifdef UINT32_MAX +#define SMI_BASETYPE_UNSIGNED32_MAX UINT32_MAX +#else +#define SMI_BASETYPE_UNSIGNED32_MAX UINT_MAX +#endif +#define SMI_BASETYPE_UNSIGNED64_MIN 0 +#define SMI_BASETYPE_UNSIGNED64_MAX LIBSMI_UINT64_MAX + +/* SmiStatus -- values of status levels */ +typedef enum SmiStatus { + SMI_STATUS_UNKNOWN = 0, /* should not occur */ + SMI_STATUS_CURRENT = 1, /* only SMIv2, SMIng and SPPI */ + SMI_STATUS_DEPRECATED = 2, /* SMIv1, SMIv2, SMIng and SPPI */ + SMI_STATUS_MANDATORY = 3, /* only SMIv1 */ + SMI_STATUS_OPTIONAL = 4, /* only SMIv1 */ + SMI_STATUS_OBSOLETE = 5 /* SMIv1, SMIv2, SMIng and SPPI */ +} SmiStatus; + +/* SmiAccess -- values of access levels */ +typedef enum SmiAccess { + SMI_ACCESS_UNKNOWN = 0, /* should not occur */ + SMI_ACCESS_NOT_IMPLEMENTED = 1, /* only for agent capability variations */ + SMI_ACCESS_NOT_ACCESSIBLE = 2, /* the values 2 to 5 are allowed to be */ + SMI_ACCESS_NOTIFY = 3, /* compared by relational operators. */ + SMI_ACCESS_READ_ONLY = 4, + SMI_ACCESS_READ_WRITE = 5, + SMI_ACCESS_INSTALL = 6, /* these three entries are only valid */ + SMI_ACCESS_INSTALL_NOTIFY = 7, /* for SPPI */ + SMI_ACCESS_REPORT_ONLY = 8, + SMI_ACCESS_EVENT_ONLY = 9 /* this entry is valid only for SMIng */ +} SmiAccess; + +/* SmiNodekind -- type or statement that leads to a definition */ +typedef unsigned int SmiNodekind; +#define SMI_NODEKIND_UNKNOWN 0x0000 /* should not occur */ +#define SMI_NODEKIND_NODE 0x0001 +#define SMI_NODEKIND_SCALAR 0x0002 +#define SMI_NODEKIND_TABLE 0x0004 +#define SMI_NODEKIND_ROW 0x0008 +#define SMI_NODEKIND_COLUMN 0x0010 +#define SMI_NODEKIND_NOTIFICATION 0x0020 +#define SMI_NODEKIND_GROUP 0x0040 +#define SMI_NODEKIND_COMPLIANCE 0x0080 +#define SMI_NODEKIND_CAPABILITIES 0x0100 +#define SMI_NODEKIND_ANY 0xffff + +/* SmiDecl -- type or statement that leads to a definition */ +typedef enum SmiDecl { + SMI_DECL_UNKNOWN = 0, /* should not occur */ + /* SMIv1/v2 ASN.1 statements and macros */ + SMI_DECL_IMPLICIT_TYPE = 1, + SMI_DECL_TYPEASSIGNMENT = 2, + SMI_DECL_IMPL_SEQUENCEOF = 4, /* this will go away */ + SMI_DECL_VALUEASSIGNMENT = 5, + SMI_DECL_OBJECTTYPE = 6, /* values >= 6 are assumed to be */ + SMI_DECL_OBJECTIDENTITY = 7, /* registering an OID, see check.c */ + SMI_DECL_MODULEIDENTITY = 8, + SMI_DECL_NOTIFICATIONTYPE = 9, + SMI_DECL_TRAPTYPE = 10, + SMI_DECL_OBJECTGROUP = 11, + SMI_DECL_NOTIFICATIONGROUP = 12, + SMI_DECL_MODULECOMPLIANCE = 13, + SMI_DECL_AGENTCAPABILITIES = 14, + SMI_DECL_TEXTUALCONVENTION = 15, + SMI_DECL_MACRO = 16, + SMI_DECL_COMPL_GROUP = 17, + SMI_DECL_COMPL_OBJECT = 18, + SMI_DECL_IMPL_OBJECT = 19, /* object label in sth like "iso(1)" */ + /* SMIng statements */ + SMI_DECL_MODULE = 33, + SMI_DECL_EXTENSION = 34, + SMI_DECL_TYPEDEF = 35, + SMI_DECL_NODE = 36, + SMI_DECL_SCALAR = 37, + SMI_DECL_TABLE = 38, + SMI_DECL_ROW = 39, + SMI_DECL_COLUMN = 40, + SMI_DECL_NOTIFICATION = 41, + SMI_DECL_GROUP = 42, + SMI_DECL_COMPLIANCE = 43, + SMI_DECL_IDENTITY = 44, + SMI_DECL_CLASS = 45, + SMI_DECL_ATTRIBUTE = 46, + SMI_DECL_EVENT = 47 +} SmiDecl; + +/* SmiIndexkind -- actual kind of a table row's index method */ +typedef enum SmiIndexkind { + SMI_INDEX_UNKNOWN = 0, + SMI_INDEX_INDEX = 1, + SMI_INDEX_AUGMENT = 2, + SMI_INDEX_REORDER = 3, + SMI_INDEX_SPARSE = 4, + SMI_INDEX_EXPAND = 5 +} SmiIndexkind; + +/* SmiValue -- any single value; for use in default values and subtyping */ +typedef struct SmiValue { + SmiBasetype basetype; + unsigned int len; /* OID, OctetString, Bits */ + union { + SmiUnsigned64 unsigned64; + SmiInteger64 integer64; + SmiUnsigned32 unsigned32; + SmiInteger32 integer32; + SmiFloat32 float32; + SmiFloat64 float64; + SmiFloat128 float128; + SmiSubid *oid; + char *ptr; /* OctetString, Bits */ + } value; +} SmiValue; + +/* SmiNamedNumber -- a named number; for enumeration and bitset types */ +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +/* SmiRange -- a min-max value range; for subtyping of sizes or numbers */ +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +/* SmiModule -- the main structure of a module */ +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +/* SmiRevision -- content of a single module's revision clause */ +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +/* SmiImport -- an imported descriptor */ +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +/* SmiMacro -- the main structure of a SMIv1/v2 macro or SMIng extension */ +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; + char *abnf; /* only for SMIng */ +} SmiMacro; + +/* SmiIdentity -- the main structure of a SMIng Identity. */ +/* NOTE: Not to be confused with SMIv2 MODULE-IDENTITY */ +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +/* SmiType -- the main structure of a type definition (also base types) */ +/* also SMIng attributes */ +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +/* SmiNode -- the main structure of any clause that defines a node */ +typedef struct SmiNode { + SmiIdentifier name; + unsigned int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; /* only valid for rows */ + int implied; /* only valid for rows */ + int create; /* only valid for rows */ + SmiNodekind nodekind; +} SmiNode; + +/* SmiElement -- an item in a list (row index column, notification object) */ +typedef struct SmiElement { +#ifndef __GNUC__ + char dummy; /* many compilers are unhappy with empty structures. */ +#endif + /* no visible attributes */ +} SmiElement; + +/* SmiOption -- an optional group in a compliance statement */ +typedef struct SmiOption { + char *description; +} SmiOption; + +/* SmiRefinement -- a refined object in a compliance statement */ +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +/* SmiClass -- main structure for SMIng class statement */ +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +/* SmiClass -- main structure for class attribute */ +typedef struct SmiAttribute { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; + SmiAccess access; +} SmiAttribute; + + +/* SmiEvent -- the main structure of a SMIng Event(part of class definition).*/ +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + + + +extern int smiInit(const char *tag); + +extern void smiExit(void); + +extern void smiSetErrorLevel(int level); + +extern int smiGetFlags(void); + +extern void smiSetFlags(int userflags); + +extern char *smiGetPath(void); + +extern int smiSetPath(const char *path); + +extern void smiSetSeverity(char *pattern, int severity); + +extern int smiReadConfig(const char *filename, const char *tag); + +extern char *smiLoadModule(const char *module); + +extern int smiIsLoaded(const char *module); + + +typedef void (SmiErrorHandler) (char *path, int line, int severity, char *msg, char *tag); + +extern void smiSetErrorHandler(SmiErrorHandler smiErrorHandler); + + +extern SmiModule *smiGetModule(const char *module); + +extern SmiModule *smiGetFirstModule(void); + +extern SmiModule *smiGetNextModule(SmiModule *smiModulePtr); + +extern SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr); + +extern SmiImport *smiGetFirstImport(SmiModule *smiModulePtr); + +extern SmiImport *smiGetNextImport(SmiImport *smiImportPtr); + +extern int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, char *importedName); + +extern SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr); + +extern SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr); + +extern int smiGetRevisionLine(SmiRevision *smiRevisionPtr); + + + +extern SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr); + +extern SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr); + +extern int smiGetIdentityLine(SmiIdentity *smiIdentityPtr); + +extern SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr,char *identity); + + + +extern SmiType *smiGetType(SmiModule *smiModulePtr, char *type); + +extern SmiType *smiGetFirstType(SmiModule *smiModulePtr); + +extern SmiType *smiGetNextType(SmiType *smiTypePtr); + +extern SmiType *smiGetParentType(SmiType *smiTypePtr); + +extern SmiModule *smiGetTypeModule(SmiType *smiTypePtr); + +extern int smiGetTypeLine(SmiType *smiTypePtr); + +extern SmiRange *smiGetFirstRange(SmiType *smiTypePtr); + +extern SmiRange *smiGetNextRange(SmiRange *smiRangePtr); + +extern int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max); + +extern SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr); + +extern SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); + + +extern SmiClass *smiGetFirstClass(SmiModule *smiModulePtr); + +extern SmiClass *smiGetNextClass(SmiClass *smiClassPtr); + +extern SmiClass *smiGetParentClass(SmiClass *smiClassPtr); + +extern SmiModule *smiGetClassModule(SmiClass *smiClassPtr); + +extern SmiClass *smiGetClass(SmiModule *smiModulePtr,char *class); + +extern int smiGetClassLine(SmiClass *smiClassPtr); + + + +extern SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute); + +extern SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAtrributePtr); + +extern SmiType *smiGetAttributeParentType(SmiAttribute *smiAtrributePtr); + +extern SmiClass *smiGetAttributeParentClass(SmiAttribute *smiAtrributePtr); + +extern SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiTypePtr); + +extern int smiIsClassScalar(SmiClass *smiClassPtr); + +extern SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr); + +extern SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); +extern SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr); + +extern SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr); + +extern int smiGetAttributeLine(SmiAttribute *smiAttributePtr); + + +extern SmiEvent *smiGetEvent(SmiClass *smiClassPtr, char *attribute); + +extern SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr); + +extern SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr); + +extern int smiGetEventLine(SmiEvent *smiEventPtr); + + +extern SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro); + +extern SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr); + +extern SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr); + +extern SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr); + +extern int smiGetMacroLine(SmiMacro *smiMacroPtr); + + +extern SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *name); + +extern SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]); + +extern SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetParentNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr); + +extern SmiModule *smiGetNodeModule(SmiNode *smiNodePtr); + +extern SmiType *smiGetNodeType(SmiNode *smiNodePtr); + +extern int smiGetNodeLine(SmiNode *smiNodePtr); + + + + +extern SmiElement *smiGetFirstElement(SmiNode *smiNodePtr); + +extern SmiElement *smiGetNextElement(SmiElement *smiElementPtr); + +extern SmiNode *smiGetElementNode(SmiElement *smiElementPtr); + + + +extern SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr); + +extern SmiOption *smiGetNextOption(SmiOption *smiOptionPtr); + +extern SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr); + +extern int smiGetOptionLine(SmiOption *smiOptionPtr); + + +extern SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr); + +extern SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr); + +extern SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr); + +extern int smiGetRefinementLine(SmiRefinement *smiRefinementPtr); + + +extern SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr); + +#define smiGetNextUniquenessElement(p) smiGetNextElement(p) + +extern char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags); + +extern char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, + int flags); + +extern char *smiRenderNode(SmiNode *smiNodePtr, int flags); + +extern char *smiRenderType(SmiType *smiTypePtr, int flags); + +#define SMI_RENDER_NUMERIC 0x01 /* render as numeric values */ +#define SMI_RENDER_NAME 0x02 /* render as names */ +#define SMI_RENDER_QUALIFIED 0x04 /* render names with module prefix */ +#define SMI_RENDER_FORMAT 0x08 /* render by applying the type's format if + type is given and format is present */ +#define SMI_RENDER_PRINTABLE 0x10 /* render string values as a printable + string if all octets are isprint() */ +#define SMI_RENDER_UNKNOWN 0x20 /* render even unknown items as strings + ("") so that we never get NULL */ +#define SMI_RENDER_ALL 0xff /* render as `human friendly' as possible */ + +#define SMI_UNKNOWN_LABEL "" + + +/* + * The functions smiGetMaxSize() and smiGetMinSize() compute the + * max size constraint on a given BITS, OCTET STRING or OBJECT + * IDENTIFIER type. The functions recurse towards the top of the + * type derivation tree. + */ + +extern unsigned int smiGetMinSize(SmiType *smiType); +extern unsigned int smiGetMaxSize(SmiType *smiType); + +/* + * Two utility functions to pack and unpack instance identifiers. + * The smiUnpack() function allocates the array of SmiValues and + * the smiPack() function allocates the array of SmiSubids. + */ + +extern int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen); + +extern int smiPack(SmiNode *row, SmiValue *vals, int valslen, + SmiSubid **oid, unsigned int *oidlen); + +/* + * Two printf functions that allocate memory dynamically. The call has + * to free the allocated memory. + */ + +extern int smiAsprintf(char **strp, const char *format, ...); + +extern int smiVasprintf(char **strp, const char *format, va_list ap); + + +/* + * The functions smiMalloc() and friends are used within the library + * for all memory allocations and deallocations. These functions are + * simple wrappers around the standard malloc() and friends functions, + * sometimes with some additional checking. We export these functions + * because on some systems (e.g. Windows) it is necessary to allocate + * / deallocate memory with the 'right' version of malloc() and + * friends. + */ + +#ifdef HAVE_DMALLOC_H + +extern void *_smiMalloc(char *, int, size_t); +extern void *_smiRealloc(char *, int, void *ptr, size_t size); +extern char *_smiStrdup(char *, int, const char *s1); +extern char *_smiStrndup(char *, int, const char *s1, size_t n); +extern void _smiFree(char *, int, void *ptr); + +#define smiMalloc(s) _smiMalloc(__FILE__, __LINE__, s) +#define smiRealloc(p,s) _smiRealloc(__FILE__, __LINE__, p, s) +#define smiStrdup(s) _smiStrdup(__FILE__, __LINE__, s) +#define smiStrndup(s,n) _smiStrndup(__FILE__, __LINE__, s, n) +#define smiFree(p) _smiFree(__FILE__, __LINE__, p) + +#else +extern void *smiMalloc(size_t size); +extern void *smiRealloc(void *ptr, size_t size); +extern char *smiStrdup(const char *s1); +extern char *smiStrndup(const char *s1, size_t n); +extern void smiFree(void *ptr); +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _SMI_H */ diff --git a/lib/smi_attribute.3 b/lib/smi_attribute.3 new file mode 100644 index 0000000..bd33272 --- /dev/null +++ b/lib/smi_attribute.3 @@ -0,0 +1,143 @@ +.TH "smi_attribute" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetAttribute, +smiGetFirstAttribute, +smiGetNextAttribute, +smiGetAttributeParentClass, +smiGetAttributeParentType, +smiGetFirstUniqueAttribute, +smiGetNextUniqueAttribute, +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent, +smiGetAttributeFirstRange, +smiGetAttributeNextRange, +smiGetAttributeFirstNamedNumber, +smiGetAttributeNextNamedNumber +.\" END OF MAN PAGE COPIES +\- SMI Attribute +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiAttribute *smiGetAttribute(SmiClass *" smiClassPtr ", char *" name); +.RE +.sp +.BI "SmiAttribute *smiGetFirstAttribute(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiAttribute *smiGetNextAttribute(SmiAttribute *" smiAttributePtr ); +.RE +.sp +.BI "SmiType *smiGetAttributeParentType(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiClass *smiGetAttributeParentClass(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *" smiClassPtr); +.RE +.sp +.BI "SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeFirstRange(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeNextRange(SmiRange *" smiRangePtr); +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *" smiAttributePtr) ; +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr); +.RE + + +typedef struct SmiAttribute { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiAttribute; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng Attribute definition (SMIng). +.PP +\fBsmiGetAttribute(SmiClass *smiClassPtr, char *name)\fP returns a +pointer to \fBstruct SmiAttribute\fP for the Attribute with the given +\fIname\fP in the given class(\fIsmiClassPtr\fP), or NULL if the +attribute with the given name does not exist. +.PP +\fBsmiGetFirstAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextAttribute(SmiAttribute *smiAttributePtr)\fP are used to +iterate through the attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents an attribute or NULL if there are no attributes left +in the class, or error has occurred. +.PP +\fBsmiGetAttributeParentClass(SmiAttribute *smiAttributePtr)\fP +returns a pointer to a \fBstruct SmiClass\fP, pointing to the parent +class of the given \fIsmiAttributePtr\fP, or NULL if the attribute +does not reference class. Note that attributes always have either +parent type or parent class. +.PP +\fBsmiGetAttributeParentType(SmiType *smiAttributePtr)\fP returns a +pointer to a \fBstruct SmiType\fP, pointing to the parent type of the +given \fIsmiAttributePtr\fP, or NULL if the attribute does not +reference type. Note that attributes always have either parent type +or parent class. +.PP +\fBsmiGetFirstUniqueAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextUniqueAttribute(SmiType *smiAttributePtr)\fP are used to +iterate through the unique attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents a unique attribute or NULL if there are no unique +attributes left in the class, or error has occurred. This function +\fBMUST NOT\fP be used for scalar classes, so it should only be called +after \fBisClassScalar()\fP has returned 0. +.PP +\fBsmiGetAttributeFirstRange(SmiAttribute *smiAttributePtr)\fP, and +\fBsmiGetAttributeNextRange(SmiRange *smiRangePtr)\fP are used to +iterate through ranges that restrict number or octet string types. +Both functions return a pointer to the \fBstruct SmiRange\fP +representing the range, or NULL if there are no more ranges, or error +has occurred. +.PP +\fBsmiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr)\fP +and \fBsmiGetAttributeNextNamedNumber(SmiNamedNumber +*smiNamedNumberPtr)\fP are used to iterate through named numbers of +bits or enumerations for attributes, which reference types, and to +retrieve the reference restriction of a pointer. Both functions +return a pointer to the struct SmiNamedNumber representing the named +number, or NULL if there are no named numbers left, or error has +occurred. \fBsmiGetFirstNamedNumber()\fP can be used to retrieve the +name of the identity that is restricting Pointer type, as it is stored +as the name of the first named number. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_attribute.3.in b/lib/smi_attribute.3.in new file mode 100644 index 0000000..9bd7d0a --- /dev/null +++ b/lib/smi_attribute.3.in @@ -0,0 +1,143 @@ +.TH "smi_attribute" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetAttribute, +smiGetFirstAttribute, +smiGetNextAttribute, +smiGetAttributeParentClass, +smiGetAttributeParentType, +smiGetFirstUniqueAttribute, +smiGetNextUniqueAttribute, +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent, +smiGetAttributeFirstRange, +smiGetAttributeNextRange, +smiGetAttributeFirstNamedNumber, +smiGetAttributeNextNamedNumber +.\" END OF MAN PAGE COPIES +\- SMI Attribute +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiAttribute *smiGetAttribute(SmiClass *" smiClassPtr ", char *" name); +.RE +.sp +.BI "SmiAttribute *smiGetFirstAttribute(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiAttribute *smiGetNextAttribute(SmiAttribute *" smiAttributePtr ); +.RE +.sp +.BI "SmiType *smiGetAttributeParentType(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiClass *smiGetAttributeParentClass(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *" smiClassPtr); +.RE +.sp +.BI "SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeFirstRange(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeNextRange(SmiRange *" smiRangePtr); +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *" smiAttributePtr) ; +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr); +.RE + + +typedef struct SmiAttribute { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiAttribute; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng Attribute definition (SMIng). +.PP +\fBsmiGetAttribute(SmiClass *smiClassPtr, char *name)\fP returns a +pointer to \fBstruct SmiAttribute\fP for the Attribute with the given +\fIname\fP in the given class(\fIsmiClassPtr\fP), or NULL if the +attribute with the given name does not exist. +.PP +\fBsmiGetFirstAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextAttribute(SmiAttribute *smiAttributePtr)\fP are used to +iterate through the attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents an attribute or NULL if there are no attributes left +in the class, or error has occurred. +.PP +\fBsmiGetAttributeParentClass(SmiAttribute *smiAttributePtr)\fP +returns a pointer to a \fBstruct SmiClass\fP, pointing to the parent +class of the given \fIsmiAttributePtr\fP, or NULL if the attribute +does not reference class. Note that attributes always have either +parent type or parent class. +.PP +\fBsmiGetAttributeParentType(SmiType *smiAttributePtr)\fP returns a +pointer to a \fBstruct SmiType\fP, pointing to the parent type of the +given \fIsmiAttributePtr\fP, or NULL if the attribute does not +reference type. Note that attributes always have either parent type +or parent class. +.PP +\fBsmiGetFirstUniqueAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextUniqueAttribute(SmiType *smiAttributePtr)\fP are used to +iterate through the unique attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents a unique attribute or NULL if there are no unique +attributes left in the class, or error has occurred. This function +\fBMUST NOT\fP be used for scalar classes, so it should only be called +after \fBisClassScalar()\fP has returned 0. +.PP +\fBsmiGetAttributeFirstRange(SmiAttribute *smiAttributePtr)\fP, and +\fBsmiGetAttributeNextRange(SmiRange *smiRangePtr)\fP are used to +iterate through ranges that restrict number or octet string types. +Both functions return a pointer to the \fBstruct SmiRange\fP +representing the range, or NULL if there are no more ranges, or error +has occurred. +.PP +\fBsmiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr)\fP +and \fBsmiGetAttributeNextNamedNumber(SmiNamedNumber +*smiNamedNumberPtr)\fP are used to iterate through named numbers of +bits or enumerations for attributes, which reference types, and to +retrieve the reference restriction of a pointer. Both functions +return a pointer to the struct SmiNamedNumber representing the named +number, or NULL if there are no named numbers left, or error has +occurred. \fBsmiGetFirstNamedNumber()\fP can be used to retrieve the +name of the identity that is restricting Pointer type, as it is stored +as the name of the first named number. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_class.3 b/lib/smi_class.3 new file mode 100644 index 0000000..bdeeeae --- /dev/null +++ b/lib/smi_class.3 @@ -0,0 +1,86 @@ +.\" +.TH "smi_class" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetClass +smiGetFirstClass, +smiGetNextClass, +smiGetClassModule, +smiGetParentClass, +smiIsClassScalar +.\" END OF MAN PAGE COPIES +\- SMI class +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiClass *smiGetClass(SmiModule *" smiModulePtr ", char *" name ); +.RE +.sp +.BI "SmiClass *smiGetFirstClass(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiClass *smiGetNextClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiClass *smiGetParentClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiModule *smiGetClassModule(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "int smiIsClassScalar(SmiClass *" smiClassPtr ); +.RE + +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng class definition (SMIng). +.PP +\fBsmiGetClass(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiClass\fP that represents the class with the +given \fIname\fP in the given module(\fIsmiModulePtr\fP ), or NULL if +the class with the given name does not exist. +.PP +\fBsmiGetFirstClass(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextClass(SmiClass *smiClassPtr)\fP are used to iterate +through the classes of the module given by \fIsmiModulePtr\fP. They +return a pointer to \fBstruct SmiClass\fP that represents a class or +NULL if there are no classes left in the module, or error has +occurred. +.PP +\fBsmiGetClassModule(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiModule\fP, of the module containing the given class. +.PP +\fBsmiGetParentClass(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiClass\fP pointing to the parent of the given +\fIsmiClassPtr\fP, or NULL if the class is not derived. +.PP +\fBsmiIsClassScalar(SmiClass *smiClassPtr)\fP returns \fBint\fP +\fI1\fP if the class is scalar(its unique statement contains an empty +list) or \fI0\fP otherwise. This method can be used in conjunction +with \fBsmiGetFirstUniqueAttribute()\fP to determine whether the class +is meant to be instantiated separately (has unique statement with +nonempty list), or if it is meant to be used as part of another class +(has no unique statement). +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_class.3.in b/lib/smi_class.3.in new file mode 100644 index 0000000..6924ae9 --- /dev/null +++ b/lib/smi_class.3.in @@ -0,0 +1,86 @@ +.\" +.TH "smi_class" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetClass +smiGetFirstClass, +smiGetNextClass, +smiGetClassModule, +smiGetParentClass, +smiIsClassScalar +.\" END OF MAN PAGE COPIES +\- SMI class +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiClass *smiGetClass(SmiModule *" smiModulePtr ", char *" name ); +.RE +.sp +.BI "SmiClass *smiGetFirstClass(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiClass *smiGetNextClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiClass *smiGetParentClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiModule *smiGetClassModule(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "int smiIsClassScalar(SmiClass *" smiClassPtr ); +.RE + +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng class definition (SMIng). +.PP +\fBsmiGetClass(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiClass\fP that represents the class with the +given \fIname\fP in the given module(\fIsmiModulePtr\fP ), or NULL if +the class with the given name does not exist. +.PP +\fBsmiGetFirstClass(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextClass(SmiClass *smiClassPtr)\fP are used to iterate +through the classes of the module given by \fIsmiModulePtr\fP. They +return a pointer to \fBstruct SmiClass\fP that represents a class or +NULL if there are no classes left in the module, or error has +occurred. +.PP +\fBsmiGetClassModule(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiModule\fP, of the module containing the given class. +.PP +\fBsmiGetParentClass(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiClass\fP pointing to the parent of the given +\fIsmiClassPtr\fP, or NULL if the class is not derived. +.PP +\fBsmiIsClassScalar(SmiClass *smiClassPtr)\fP returns \fBint\fP +\fI1\fP if the class is scalar(its unique statement contains an empty +list) or \fI0\fP otherwise. This method can be used in conjunction +with \fBsmiGetFirstUniqueAttribute()\fP to determine whether the class +is meant to be instantiated separately (has unique statement with +nonempty list), or if it is meant to be used as part of another class +(has no unique statement). +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_config.3 b/lib/smi_config.3 new file mode 100644 index 0000000..88217b1 --- /dev/null +++ b/lib/smi_config.3 @@ -0,0 +1,240 @@ +.\" +.\" $Id: smi_config.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_config 3 "August 22, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiInit, +smiExit, +smiSetErrorLevel, +smiGetFlags, +smiSetFlags, +smiLoadModule, +smiGetPath, +smiSetPath, +smiReadConfig +.\" END OF MAN PAGE COPIES +\- SMI library +configuration routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "int smiInit(const char *" tag ); +.RE +.sp +.B "int smiExit();" +.RE +.sp +.BI "void smiSetErrorLevel(int " level ); +.RE +.sp +.BI "int smiGetFlags();" +.RE +.sp +.BI "void smiSetFlags(int " userflags ); +.RE +.sp +.BI "char *smiLoadModule(char *" module ); +.RE +.sp +.BI "int smiIsLoaded(char *" module ); +.RE +.sp +.BI "char *smiGetPath();" +.RE +.sp +.BI "int smiSetPath(char *" path ); +.RE +.sp +.BI "int smiSetSeverity(char *" pattern ", int " severity ); +.RE +.sp +.BI "int smiReadConfig(char *" filename ", const char *" tag ); +.RE +.sp +.BI "void smiSetErrorHandler(SmiErrorHandler *" smiErrorHandler ); +.RE + +typedef void (SmiErrorHandler) (char *path, int line, + int severity, char *msg, char *tag); + +.fi +.SH DESCRIPTION +These functions provide some initialization and adjustment operations +for the SMI library. +.PP +The \fBsmiInit()\fP function should be the first SMI function called +in an application. It initializes its internal structures. If \fItag\fP is +not NULL, the global configuration file and (on UNIX systems) +a user configuration file are read implicitly, if existent. All +global statements and those statements with a tag (a ``tag: '' prefix) that +matches the \fBtag\fP argument are executed. +(see also CONFIGURATION FILES below). +\fBsmiInit()\fP returns zero on success, or otherwise a negative value. +.PP +The \fBsmiInit()\fP function can also be used to support multiple sets +of MIB data. In this case, the \fBtag\fP argument may be prepended by +a colon and a name to differentiate the data sets. Any library +function call subsequent to an \fBsmiInit("tag:dataset")\fP call is +using the specified data set. +.PP +The \fBsmiExit()\fP function should be called when the application +no longer needs any SMI information to release any allocated SMI +resources. +.PP +The \fBsmiSetErrorLevel()\fP function sets the pedantic level (0-9) of +the SMI parsers of the SMI library, currently SMIv1/v2 and SMIng. +The higher the level, the louder it complains. Values up to 3 +should be regarded as errors, higher level could be interpreted as +warnings. But note that this classification is some kind of personal +taste. The default level is 0, since usually only MIB checkers want +to tune a higher level. +.PP +The \fBsmiGetFlags()\fP and \fBsmiSetFlags()\fP functions allow to +fetch, modify, and set some \fIuserflags\fP that control the SMI +library's behaviour. If \fBSMI_FLAG_ERRORS\fP is not set, no error messages +are printed at all to keep the SMI library totally quiet, which might +be mandatory for some applications. If \fBSMI_FLAG_STATS\fP is set, the +library prints some module statistics. If \fBSMI_FLAG_RECURSIVE\fP is set, +the library also complains about errors in modules that are read due +to import statements. If \fBSMI_FLAG_NODESCR\fP is set, no description +and references strings are stored in memory. This may save a huge amount +of memory in case of applications that do not need this information. +.PP +The \fBsmiSetSeverity()\fP function allows to set the severity of +all error that have name prefixed by \fBpattern\fP to the value \fBseverity\fP. +.PP +The \fBsmiLoadModule()\fP function specifies an additional MIB \fImodule\fP +that the application claims to know or an additional file path to read. +Only after a +module is made known through this function, iterating retrieval +functions and retrieval functions without fully qualified identifiers +will return results from this module. \fBsmiLoadModule()\fP returns the +name of the loaded module, of NULL if it could not be loaded. +.PP +The \fBsmiIsLoaded()\fP function returns a positive value if the +module named \fImodule\fP is already loaded, or zero otherwise. +.PP +The \fBsmiGetPath()\fP and \fBsmiSetPath()\fP functions allow to +fetch, modify, and set the path that is used to search MIB modules. +\fBsmiGetPath()\fP returns a copy of the current search path in the +form "DIR1:DIR2:...", or NULL if no path is set. +The application should free this string if it is +no longer needed. \fBsmiSetPath()\fP sets the search path to +\fIpath\fP. +.PP +The \fBsmiReadConfig()\fP function reads the configuration file \fIfilename\fP. +All global statements in the configuration file and those statements with +a tag (a ``tag: '' prefix) that matches the \fBtag\fP argument, if present, +are executed. +.PP +The \fBsmiSetErrorHandler()\fP function allows to set a callback function +that is called by the MIB parsers deviating from the builtin default +error handler, that prints error messages to stderr. The error handler +has to comply with the \fBSmiErrorHandler\fP function type. The \fBpath\fP, +\fBline\fP, \fBseverity\fP, \fBmsg\fP, and \fPtag\fP arguements carry the +module's pathname, the line number within the module, the error severity +level, a textual error message, and a short error name of the error being +reported. +.SH "MODULE LOCATIONS" +The SMI library may retrieve MIB modules from different kinds of +resources. Currently, SMIv1/v2 and SMIng module files are supported. +If in an \fBsmiLoadModule()\fP function call a module is specified by +a path name (identified by containing at least one dot or slash character), +this +is assumed to be the exact file to read. Otherwise, if a module is identified +by its plain module name, the correspondant file (either SMIv1/2 or +SMIng) is searched along a path. This path is initialized with /usr/local/share/mibs/ietf:/usr/local/share/mibs/iana:/usr/local/share/mibs/irtf:/usr/local/share/mibs/site:/usr/local/share/mibs/tubs:/usr/local/share/pibs/ietf:/usr/local/share/pibs/site:/usr/local/share/pibs/tubs. +Afterwards the optional global and user configuration files are parsed for +`path' commands, and finally the optional \fBSMIPATH\fP environment variable +is evaluated. The `path' command argument and the environment variable +either start with a path separator character (`:' on UNIX-like systems, `;' +on MS-Windows systems) to append +to the path, or end with a path separator character to prepend to the path, +or otherwise completely replace the path. +The path can also be controlled by the \fBsmiGetPath()\fP +and \fBsmiSetPath()\fP functions (see above). +.PP +When files are searched by a given module name, they might have no +extension or one of the extensions `.my', `.smiv2', `.sming', `.mib', +or `.txt'. However, the +MIB module language is identified by the file's content, not by its +file name extension. +.SH "CONFIGURATION FILES" +SMI library configuration files read at initialization and on demand +by \fBsmiReadConfig()\fP have a simple line oriented syntax. Empty lines +and those starting with `#' are ignored. Other lines start with an optional +tag (prepended by a colon), +followed by a command and options dependent on the command. Tags +are used to limit the scope of a command to those applications that are +using this tag. +.PP +The \fBload\fP command is used to preload a given MIB module. If multiple +modules shall be preloaded, multiple \fBload\fP commands must be used. +.PP +The \fBpath\fP command allows to prepend or append components to the +MIB module search path or to modify it completely (see +also MODULE LOCATIONS above). +.PP +The \fBcache\fP command allows to add an additional directory for +MIB module lookup as a last resort. The first argument specifies the +directory and the rest of the line starting from the second argument +specifies the caching method, which is invoked with the MIB module +name appended if the module is found neither in one of the regular directories +nor in the cache directory beforehand. +.PP +The \fBlevel\fP command sets the error level. +.PP +The \fBhide\fP command allows to tune the list of errors that are reported. +It raises all errors with names prefixed by the given pattern to severity +level 9. [Currently, there is no way to list the error names. RTFS: error.c.] +.PP +Example configuration: +.nf + + # + # $HOME/.smirc + # + + # add a private directory + path :/usr/home/strauss/lib/mibs + + # don't show any errors by default + level 0 + + # preload some basic modules + load SNMPv2-SMI + load SNMPv2-TC + load SNMPv2-CONF + + # want to make smilint shout + smilint: level 8 + + # but please don't claim about + # any names longer than 32 chars + smilint: hide namelength-32 + + tcpdump: load DISMAN-SCRIPT-MIB + + smiquery: load IF-MIB + smiquery: load DISMAN-SCRIPT-MIB +.fi +.SH "FILES" +.nf +${prefix}/etc/smi.conf global configuration file +$HOME/.smirc user configuration file +${prefix}/include/smi.h SMI library header file +/usr/local/share/mibs/ SMI module repository directory +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_config.3.in b/lib/smi_config.3.in new file mode 100644 index 0000000..940b98a --- /dev/null +++ b/lib/smi_config.3.in @@ -0,0 +1,240 @@ +.\" +.\" $Id: smi_config.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_config 3 "August 22, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiInit, +smiExit, +smiSetErrorLevel, +smiGetFlags, +smiSetFlags, +smiLoadModule, +smiGetPath, +smiSetPath, +smiReadConfig +.\" END OF MAN PAGE COPIES +\- SMI library +configuration routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "int smiInit(const char *" tag ); +.RE +.sp +.B "int smiExit();" +.RE +.sp +.BI "void smiSetErrorLevel(int " level ); +.RE +.sp +.BI "int smiGetFlags();" +.RE +.sp +.BI "void smiSetFlags(int " userflags ); +.RE +.sp +.BI "char *smiLoadModule(char *" module ); +.RE +.sp +.BI "int smiIsLoaded(char *" module ); +.RE +.sp +.BI "char *smiGetPath();" +.RE +.sp +.BI "int smiSetPath(char *" path ); +.RE +.sp +.BI "int smiSetSeverity(char *" pattern ", int " severity ); +.RE +.sp +.BI "int smiReadConfig(char *" filename ", const char *" tag ); +.RE +.sp +.BI "void smiSetErrorHandler(SmiErrorHandler *" smiErrorHandler ); +.RE + +typedef void (SmiErrorHandler) (char *path, int line, + int severity, char *msg, char *tag); + +.fi +.SH DESCRIPTION +These functions provide some initialization and adjustment operations +for the SMI library. +.PP +The \fBsmiInit()\fP function should be the first SMI function called +in an application. It initializes its internal structures. If \fItag\fP is +not NULL, the global configuration file and (on UNIX systems) +a user configuration file are read implicitly, if existent. All +global statements and those statements with a tag (a ``tag: '' prefix) that +matches the \fBtag\fP argument are executed. +(see also CONFIGURATION FILES below). +\fBsmiInit()\fP returns zero on success, or otherwise a negative value. +.PP +The \fBsmiInit()\fP function can also be used to support multiple sets +of MIB data. In this case, the \fBtag\fP argument may be prepended by +a colon and a name to differentiate the data sets. Any library +function call subsequent to an \fBsmiInit("tag:dataset")\fP call is +using the specified data set. +.PP +The \fBsmiExit()\fP function should be called when the application +no longer needs any SMI information to release any allocated SMI +resources. +.PP +The \fBsmiSetErrorLevel()\fP function sets the pedantic level (0-9) of +the SMI parsers of the SMI library, currently SMIv1/v2 and SMIng. +The higher the level, the louder it complains. Values up to 3 +should be regarded as errors, higher level could be interpreted as +warnings. But note that this classification is some kind of personal +taste. The default level is 0, since usually only MIB checkers want +to tune a higher level. +.PP +The \fBsmiGetFlags()\fP and \fBsmiSetFlags()\fP functions allow to +fetch, modify, and set some \fIuserflags\fP that control the SMI +library's behaviour. If \fBSMI_FLAG_ERRORS\fP is not set, no error messages +are printed at all to keep the SMI library totally quiet, which might +be mandatory for some applications. If \fBSMI_FLAG_STATS\fP is set, the +library prints some module statistics. If \fBSMI_FLAG_RECURSIVE\fP is set, +the library also complains about errors in modules that are read due +to import statements. If \fBSMI_FLAG_NODESCR\fP is set, no description +and references strings are stored in memory. This may save a huge amount +of memory in case of applications that do not need this information. +.PP +The \fBsmiSetSeverity()\fP function allows to set the severity of +all error that have name prefixed by \fBpattern\fP to the value \fBseverity\fP. +.PP +The \fBsmiLoadModule()\fP function specifies an additional MIB \fImodule\fP +that the application claims to know or an additional file path to read. +Only after a +module is made known through this function, iterating retrieval +functions and retrieval functions without fully qualified identifiers +will return results from this module. \fBsmiLoadModule()\fP returns the +name of the loaded module, of NULL if it could not be loaded. +.PP +The \fBsmiIsLoaded()\fP function returns a positive value if the +module named \fImodule\fP is already loaded, or zero otherwise. +.PP +The \fBsmiGetPath()\fP and \fBsmiSetPath()\fP functions allow to +fetch, modify, and set the path that is used to search MIB modules. +\fBsmiGetPath()\fP returns a copy of the current search path in the +form "DIR1:DIR2:...", or NULL if no path is set. +The application should free this string if it is +no longer needed. \fBsmiSetPath()\fP sets the search path to +\fIpath\fP. +.PP +The \fBsmiReadConfig()\fP function reads the configuration file \fIfilename\fP. +All global statements in the configuration file and those statements with +a tag (a ``tag: '' prefix) that matches the \fBtag\fP argument, if present, +are executed. +.PP +The \fBsmiSetErrorHandler()\fP function allows to set a callback function +that is called by the MIB parsers deviating from the builtin default +error handler, that prints error messages to stderr. The error handler +has to comply with the \fBSmiErrorHandler\fP function type. The \fBpath\fP, +\fBline\fP, \fBseverity\fP, \fBmsg\fP, and \fPtag\fP arguements carry the +module's pathname, the line number within the module, the error severity +level, a textual error message, and a short error name of the error being +reported. +.SH "MODULE LOCATIONS" +The SMI library may retrieve MIB modules from different kinds of +resources. Currently, SMIv1/v2 and SMIng module files are supported. +If in an \fBsmiLoadModule()\fP function call a module is specified by +a path name (identified by containing at least one dot or slash character), +this +is assumed to be the exact file to read. Otherwise, if a module is identified +by its plain module name, the correspondant file (either SMIv1/2 or +SMIng) is searched along a path. This path is initialized with @smipath@. +Afterwards the optional global and user configuration files are parsed for +`path' commands, and finally the optional \fBSMIPATH\fP environment variable +is evaluated. The `path' command argument and the environment variable +either start with a path separator character (`:' on UNIX-like systems, `;' +on MS-Windows systems) to append +to the path, or end with a path separator character to prepend to the path, +or otherwise completely replace the path. +The path can also be controlled by the \fBsmiGetPath()\fP +and \fBsmiSetPath()\fP functions (see above). +.PP +When files are searched by a given module name, they might have no +extension or one of the extensions `.my', `.smiv2', `.sming', `.mib', +or `.txt'. However, the +MIB module language is identified by the file's content, not by its +file name extension. +.SH "CONFIGURATION FILES" +SMI library configuration files read at initialization and on demand +by \fBsmiReadConfig()\fP have a simple line oriented syntax. Empty lines +and those starting with `#' are ignored. Other lines start with an optional +tag (prepended by a colon), +followed by a command and options dependent on the command. Tags +are used to limit the scope of a command to those applications that are +using this tag. +.PP +The \fBload\fP command is used to preload a given MIB module. If multiple +modules shall be preloaded, multiple \fBload\fP commands must be used. +.PP +The \fBpath\fP command allows to prepend or append components to the +MIB module search path or to modify it completely (see +also MODULE LOCATIONS above). +.PP +The \fBcache\fP command allows to add an additional directory for +MIB module lookup as a last resort. The first argument specifies the +directory and the rest of the line starting from the second argument +specifies the caching method, which is invoked with the MIB module +name appended if the module is found neither in one of the regular directories +nor in the cache directory beforehand. +.PP +The \fBlevel\fP command sets the error level. +.PP +The \fBhide\fP command allows to tune the list of errors that are reported. +It raises all errors with names prefixed by the given pattern to severity +level 9. [Currently, there is no way to list the error names. RTFS: error.c.] +.PP +Example configuration: +.nf + + # + # $HOME/.smirc + # + + # add a private directory + path :/usr/home/strauss/lib/mibs + + # don't show any errors by default + level 0 + + # preload some basic modules + load SNMPv2-SMI + load SNMPv2-TC + load SNMPv2-CONF + + # want to make smilint shout + smilint: level 8 + + # but please don't claim about + # any names longer than 32 chars + smilint: hide namelength-32 + + tcpdump: load DISMAN-SCRIPT-MIB + + smiquery: load IF-MIB + smiquery: load DISMAN-SCRIPT-MIB +.fi +.SH "FILES" +.nf +@sysconfdir@/smi.conf global configuration file +$HOME/.smirc user configuration file +@includedir@/smi.h SMI library header file +@mibdir@/ SMI module repository directory +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_event.3 b/lib/smi_event.3 new file mode 100644 index 0000000..d770bce --- /dev/null +++ b/lib/smi_event.3 @@ -0,0 +1,58 @@ +.TH "smi_event" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "smiGetEvent(SmiClass *" smiClassPtr, char *" name) ; +.RE +.sp +.BI "smiGetFirstEvent(SmiClass *" smiClassPtr); +.RE +.sp +.BI "smiGetNextEvent(SmiEvent *" smiEventPtr); +.RE + +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng event definition (SMIng). +.PP +\fBsmiGetEvent(SmiClass *smiClassPtr, char *name)\fP returns a pointer +to \fBstruct SmiEvent\fP for the event with the given \fIname\fP in +the given class(\fIsmiClassPtr\fP), or NULL if the event with the +given name does not exist +.PP +\fBsmiGetFirstEvent(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextEvent(SmiEvent *smiEventPtr)\fP are used to iterate +through the events of the class given by \fIsmiClassPtr\fP. They +return a pointer to \fBstruct SmiEvent\fP that represents an event or +NULL if there are no events left in the class, or error has occurred. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi_class "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_event.3.in b/lib/smi_event.3.in new file mode 100644 index 0000000..a21733a --- /dev/null +++ b/lib/smi_event.3.in @@ -0,0 +1,58 @@ +.TH "smi_event" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "smiGetEvent(SmiClass *" smiClassPtr, char *" name) ; +.RE +.sp +.BI "smiGetFirstEvent(SmiClass *" smiClassPtr); +.RE +.sp +.BI "smiGetNextEvent(SmiEvent *" smiEventPtr); +.RE + +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng event definition (SMIng). +.PP +\fBsmiGetEvent(SmiClass *smiClassPtr, char *name)\fP returns a pointer +to \fBstruct SmiEvent\fP for the event with the given \fIname\fP in +the given class(\fIsmiClassPtr\fP), or NULL if the event with the +given name does not exist +.PP +\fBsmiGetFirstEvent(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextEvent(SmiEvent *smiEventPtr)\fP are used to iterate +through the events of the class given by \fIsmiClassPtr\fP. They +return a pointer to \fBstruct SmiEvent\fP that represents an event or +NULL if there are no events left in the class, or error has occurred. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi_class "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_identity.3 b/lib/smi_identity.3 new file mode 100644 index 0000000..bad1389 --- /dev/null +++ b/lib/smi_identity.3 @@ -0,0 +1,74 @@ +.TH "smi_identity" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetIdentity, +smiGetFirstIdentity, +smiGetNextIdentity, +smiGetParentIdentity, +smiGetIdentityModule +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiIdentity *smiGetIdentity(SmiModule *" smiModulePtr ", char *" name); +.RE +.sp +.BI "SmiIdentity *smiGetFirstIdentity(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiIdentity *smiGetNextIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiIdentity *smiGetParentIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiModule *smiGetIdentityModule(SmiType *" smiIdentityPtr ); +.RE + +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng identity definition (SMIng). +.PP +\fBsmiGetIdentity(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiIdentity\fP for the identity with the given +\fIname\fP in the given module(\fIsmiModulePtr\fP), or NULL if the +idenity with the given name does not exist +.PP +\fBsmiGetFirstIdentity(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextIdentity(SmiIdentity *smiIdentityPtr)\fP are used to +iterate through the identities of the module given by +\fIsmiModulePtr\fP. They return a pointer to \fBstruct SmiIdentity\fP +hat represents an identity or NULL if there are no identities left in +the module, or error has occurred. +.PP +\fBsmiGetIdentityModule(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiModule\fP, of the module containing the given +identity. +.PP +\fBsmiGetParentIdentity(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiIdentity\fP pointing to the parent of the +given \fIsmiIdentityPtr\fP, or NULL if the Identity is not derived. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_identity.3.in b/lib/smi_identity.3.in new file mode 100644 index 0000000..8c09144 --- /dev/null +++ b/lib/smi_identity.3.in @@ -0,0 +1,74 @@ +.TH "smi_identity" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetIdentity, +smiGetFirstIdentity, +smiGetNextIdentity, +smiGetParentIdentity, +smiGetIdentityModule +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiIdentity *smiGetIdentity(SmiModule *" smiModulePtr ", char *" name); +.RE +.sp +.BI "SmiIdentity *smiGetFirstIdentity(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiIdentity *smiGetNextIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiIdentity *smiGetParentIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiModule *smiGetIdentityModule(SmiType *" smiIdentityPtr ); +.RE + +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng identity definition (SMIng). +.PP +\fBsmiGetIdentity(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiIdentity\fP for the identity with the given +\fIname\fP in the given module(\fIsmiModulePtr\fP), or NULL if the +idenity with the given name does not exist +.PP +\fBsmiGetFirstIdentity(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextIdentity(SmiIdentity *smiIdentityPtr)\fP are used to +iterate through the identities of the module given by +\fIsmiModulePtr\fP. They return a pointer to \fBstruct SmiIdentity\fP +hat represents an identity or NULL if there are no identities left in +the module, or error has occurred. +.PP +\fBsmiGetIdentityModule(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiModule\fP, of the module containing the given +identity. +.PP +\fBsmiGetParentIdentity(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiIdentity\fP pointing to the parent of the +given \fIsmiIdentityPtr\fP, or NULL if the Identity is not derived. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_macro.3 b/lib/smi_macro.3 new file mode 100644 index 0000000..5aeffd5 --- /dev/null +++ b/lib/smi_macro.3 @@ -0,0 +1,70 @@ +.\" +.\" $Id: smi_macro.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_macro 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMacro, +smiGetFirstMacro, +smiGetNextMacro, +smiGetMacroModule +\- SMI macro and extension information routines +.\" END OF MAN PAGE COPIES +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiMacro *smiGetMacro(SmiModule *" smiModulePtr ", char *" macro ); +.RE +.sp +.BI "SmiMacro *smiGetFirstMacro(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiMacro *smiGetNextMacro(SmiMacro *" smiMacroPtr ); +.RE +.sp +.BI "SmiModule *smiGetMacroModule(SmiMacro *" smiMacroPtr ); +.RE + +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiMacro; + +.fi +.SH DESCRIPTION +These functions retrieve information on an extension statement +definition (SMIng) or a macro (SMIv1/v2). +.PP +The \fBsmiGetMacro()\fP function retrieves a \fBstruct SmiMacro\fP that +represents an extension or macro definition. \fIMacro\fP may be either a +fully qualified descriptor or a simple macro or extension name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the macro is not found, \fBsmiGetMacro()\fP returns NULL. +.PP +The \fBsmiGetFirstMacro()\fP and \fBsmiGetNextMacro()\fP functions are +used to iteratively retrieve \fBstruct SmiMacro\fPs. +\fBsmiGetFirstMacro()\fP returns the first one defined in the module +specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextMacro()\fP return the following ones. +If there are no +more extension or macro definitions in the module, NULL is returned. +.PP +The \fBsmiGetMacroModule()\fP function returns the module that defines +the macro or extension given by \fIstruct SmiMacroPtr\fP. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_macro.3.in b/lib/smi_macro.3.in new file mode 100644 index 0000000..884b3c9 --- /dev/null +++ b/lib/smi_macro.3.in @@ -0,0 +1,70 @@ +.\" +.\" $Id: smi_macro.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_macro 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMacro, +smiGetFirstMacro, +smiGetNextMacro, +smiGetMacroModule +\- SMI macro and extension information routines +.\" END OF MAN PAGE COPIES +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiMacro *smiGetMacro(SmiModule *" smiModulePtr ", char *" macro ); +.RE +.sp +.BI "SmiMacro *smiGetFirstMacro(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiMacro *smiGetNextMacro(SmiMacro *" smiMacroPtr ); +.RE +.sp +.BI "SmiModule *smiGetMacroModule(SmiMacro *" smiMacroPtr ); +.RE + +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiMacro; + +.fi +.SH DESCRIPTION +These functions retrieve information on an extension statement +definition (SMIng) or a macro (SMIv1/v2). +.PP +The \fBsmiGetMacro()\fP function retrieves a \fBstruct SmiMacro\fP that +represents an extension or macro definition. \fIMacro\fP may be either a +fully qualified descriptor or a simple macro or extension name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the macro is not found, \fBsmiGetMacro()\fP returns NULL. +.PP +The \fBsmiGetFirstMacro()\fP and \fBsmiGetNextMacro()\fP functions are +used to iteratively retrieve \fBstruct SmiMacro\fPs. +\fBsmiGetFirstMacro()\fP returns the first one defined in the module +specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextMacro()\fP return the following ones. +If there are no +more extension or macro definitions in the module, NULL is returned. +.PP +The \fBsmiGetMacroModule()\fP function returns the module that defines +the macro or extension given by \fIstruct SmiMacroPtr\fP. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_module.3 b/lib/smi_module.3 new file mode 100644 index 0000000..2b0a9ff --- /dev/null +++ b/lib/smi_module.3 @@ -0,0 +1,127 @@ +.\" +.\" $Id: smi_module.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_module 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetModule, +smiGetFirstModule, +smiGetNextModule, +smiGetModuleIdentityNode, +smiGetFirstImport, +smiGetNextImport, +smiIsImported, +smiGetFirstRevision, +smiGetNextRevision +.\" END OF MAN PAGE COPIES +\- SMI module information routines +.SH SYNOPSIS +.nf +.B #include +.B #include +.RS +.RE +.sp +.BI "SmiModule *smiGetModule(char *" module ); +.RE +.sp +.BI "SmiModule *smiGetFirstModule(); +.RE +.sp +.BI "SmiModule *smiGetNextModule(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiNode *smiGetModuleIdentityNode(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetFirstImport(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetNextImport(SmiImport *" smiImportPtr ); +.RE +.sp +.BI "int smiIsImported(SmiModule *" smiModulePtr ", SmiModule *" importedModulePtr ", char *" importedName ); +.RE +.sp +.BI "SmiRevision *smiGetFirstRevision(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiRevision *smiGetNextRevision(SmiRevision *" smiRevisionPtr ); +.RE + +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +.fi +.SH DESCRIPTION +These functions retrieve various meta information on MIB +modules. Other functions to retrieve the definitions within a module are +documented in \fBsmi_type\fP(3), \fBsmi_node\fP(3), and \fBsmi_macro\fP(3). +.PP +The \fBsmiGetModule()\fP function retrieves a \fBstruct SmiModule\fP +that represents the SMI module named \fBmodule\fP. Elements not available +or not present for this module contain NULL. If the module is not found, +\fBsmiGetModule()\fP returns NULL. +.PP +The \fBsmiGetFirstModule()\fP and \fBsmiGetNextModule()\fP functions are +used to iteratively retrieve \fBstruct SmiModule\fPs of all known modules. +\fBsmiGetFirstModule()\fP returns the first known module. +Subsequent calls to \fBsmiGetNextModule()\fP return the following ones. +If there are no more modules NULL is returned. +.PP +The \fBsmiGetModuleIdentityNode()\fP function retrieves +a \fBstruct SmiNode\fP that represents the node that is used to +identify the containing MIB module specified by \fIsmiModulePtr\fP. +If there is no such identity node, i.e. if this is not an SMIv2 or +SMIng module converted from SMIv2, \fBsmiGetModuleIdentityNode()\fP +returns NULL. +.PP +The \fBsmiGetFirstImport()\fP and \fBsmiGetNextImport()\fP functions are +used to iteratively retrieve \fBstruct SmiImport\fPs of a given module. +\fBsmiGetFirstImport()\fP returns the first identifier imported by +the module specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextImport()\fP return the following ones. +If there are no more imported identifiers NULL is returned. +.PP +The \fBsmiIsImported()\fP function returns a positive value if the +identifier \fIimportedName\fP defined in the module specified by +\fIimportedModulePtr\fP is imported in the module specified by +\fIsmiModulePtr\fP, or zero otherwise. +.PP +The \fBsmiGetFirstRevision()\fP and \fBsmiGetNextRevision()\fP +functions are used to iteratively retrieve \fBstruct SmiRevision\fPs of +a given module. \fBsmiGetFirstRevision()\fP returns the first (that is +most recent) revision information of the module specified by +\fIsmiModulePtr\fP. Subsequent calls to \fBsmiGetNextRevision()\fP +return the revision after (timely before) that one. If there are no +more revisions NULL is returned. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_node "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_module.3.in b/lib/smi_module.3.in new file mode 100644 index 0000000..7b00b69 --- /dev/null +++ b/lib/smi_module.3.in @@ -0,0 +1,127 @@ +.\" +.\" $Id: smi_module.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_module 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetModule, +smiGetFirstModule, +smiGetNextModule, +smiGetModuleIdentityNode, +smiGetFirstImport, +smiGetNextImport, +smiIsImported, +smiGetFirstRevision, +smiGetNextRevision +.\" END OF MAN PAGE COPIES +\- SMI module information routines +.SH SYNOPSIS +.nf +.B #include +.B #include +.RS +.RE +.sp +.BI "SmiModule *smiGetModule(char *" module ); +.RE +.sp +.BI "SmiModule *smiGetFirstModule(); +.RE +.sp +.BI "SmiModule *smiGetNextModule(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiNode *smiGetModuleIdentityNode(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetFirstImport(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetNextImport(SmiImport *" smiImportPtr ); +.RE +.sp +.BI "int smiIsImported(SmiModule *" smiModulePtr ", SmiModule *" importedModulePtr ", char *" importedName ); +.RE +.sp +.BI "SmiRevision *smiGetFirstRevision(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiRevision *smiGetNextRevision(SmiRevision *" smiRevisionPtr ); +.RE + +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +.fi +.SH DESCRIPTION +These functions retrieve various meta information on MIB +modules. Other functions to retrieve the definitions within a module are +documented in \fBsmi_type\fP(3), \fBsmi_node\fP(3), and \fBsmi_macro\fP(3). +.PP +The \fBsmiGetModule()\fP function retrieves a \fBstruct SmiModule\fP +that represents the SMI module named \fBmodule\fP. Elements not available +or not present for this module contain NULL. If the module is not found, +\fBsmiGetModule()\fP returns NULL. +.PP +The \fBsmiGetFirstModule()\fP and \fBsmiGetNextModule()\fP functions are +used to iteratively retrieve \fBstruct SmiModule\fPs of all known modules. +\fBsmiGetFirstModule()\fP returns the first known module. +Subsequent calls to \fBsmiGetNextModule()\fP return the following ones. +If there are no more modules NULL is returned. +.PP +The \fBsmiGetModuleIdentityNode()\fP function retrieves +a \fBstruct SmiNode\fP that represents the node that is used to +identify the containing MIB module specified by \fIsmiModulePtr\fP. +If there is no such identity node, i.e. if this is not an SMIv2 or +SMIng module converted from SMIv2, \fBsmiGetModuleIdentityNode()\fP +returns NULL. +.PP +The \fBsmiGetFirstImport()\fP and \fBsmiGetNextImport()\fP functions are +used to iteratively retrieve \fBstruct SmiImport\fPs of a given module. +\fBsmiGetFirstImport()\fP returns the first identifier imported by +the module specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextImport()\fP return the following ones. +If there are no more imported identifiers NULL is returned. +.PP +The \fBsmiIsImported()\fP function returns a positive value if the +identifier \fIimportedName\fP defined in the module specified by +\fIimportedModulePtr\fP is imported in the module specified by +\fIsmiModulePtr\fP, or zero otherwise. +.PP +The \fBsmiGetFirstRevision()\fP and \fBsmiGetNextRevision()\fP +functions are used to iteratively retrieve \fBstruct SmiRevision\fPs of +a given module. \fBsmiGetFirstRevision()\fP returns the first (that is +most recent) revision information of the module specified by +\fIsmiModulePtr\fP. Subsequent calls to \fBsmiGetNextRevision()\fP +return the revision after (timely before) that one. If there are no +more revisions NULL is returned. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_node "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_node.3 b/lib/smi_node.3 new file mode 100644 index 0000000..ac5ead6 --- /dev/null +++ b/lib/smi_node.3 @@ -0,0 +1,229 @@ +.\" +.\" $Id: smi_node.3.in 5762 2006-08-17 08:10:17Z schoenw $ +.\" +.TH smi_node 3 "March 30, 2004" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetNode, +smiGetNodeByOID, +smiGetFirstNode, +smiGetNextNode, +smiGetParentNode, +smiGetRelatedNode, +smiGetFirstChildNode, +smiGetNextChildNode, +smiGetNodeModule, +smiGetNodeType, +smiGetNodeLine, +smiGetFirstElement, +smiGetNextElement, +smiGetElementNode, +smiGetFirstOption, +smiGetNextOption, +smiGetOptionNode, +smiGetFirstRefinement, +smiGetNextRefinement, +smiGetRefinementModule, +smiGetRefinementNode, +smiGetRefinementType, +smiGetRefinementWriteType +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiNode *smiGetNode(SmiModule *" smiModulePtr ", char *" node ); +.RE +.sp +.BI "SmiNode *smiGetNodeByOID(unsigned int " oidlen ", SmiSubid " oid[] ); +.RE +.sp +.BI "SmiNode *smiGetFirstNode(SmiModule *" smiModulePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetNextNode(SmiNode *" smiNodePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetParentNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetRelatedNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetFirstChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetNextChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiModule *smiGetNodeModule(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiType *smiGetNodeType(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "int smiGetNodeLine(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetFirstElement(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetNextElement(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiNode *smiGetElementNode(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiOption *smiGetFirstOption(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiOption *smiGetNextOption(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiNode *smiGetOptionNode(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiRefinement *smiGetFirstRefinement(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiRefinement *smiGetNextRefinement(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiNode *smiGetRefinementNode(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementType(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementWriteType(SmiRefinement *" smiRefinementPtr ); +.RE + +typedef struct SmiNode { + SmiIdentifier name; + int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; + int implied; + int create; + SmiNodekind nodekind; +} SmiNode; + +typedef struct SmiElement { + /* no visible attributes */ +} SmiElement; + +typedef struct SmiOption { + char *description; +} SmiOption; + +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +.fi +.SH DESCRIPTION +These functions retrieve information on any SMI node definition in the +object identifier tree, these are ASN.1 object identifier assignments, +MODULE-IDENTITYs, OBJECT-IDENTITYs, OBJECT-TYPEs, NOTIFICATION-TYPEs, +TRAP-TYPEs, OBJECT-GROUPs, NOTIFICATION-GROUPs, MODULE-COMPLIANCEs, +and AGENT-CAPABILITYs in SMIv1/v2 and node, scalar, table, +row, column, notification, group, and compliance statements in SMIng. +.PP +The \fBsmiGetNode()\fP function retrieves a \fBstruct SmiNode\fP that +represents a node of any kind. \fINode\fP may be either a +fully qualified descriptor, a simple node name, or a numerical OID. +Nodes are also found, if \fInode\fP contains an instance identifier +suffix. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the node is not found, \fBsmiGetNode()\fP returns NULL. +.PP +The \fBsmiGetNodeByOID()\fP function retrieves a \fBstruct SmiNode\fP that +matches the longest prefix of the node that is specified by the +object identifier \fIoid[]\fP with the length \fIoidlen\fP. +If no such node is not found, \fBsmiGetNodeByOID()\fP returns NULL. +.PP +The \fBsmiGetFirstNode()\fP and \fBsmiGetNextNode()\fP functions are +used to iteratively retrieve \fBstruct SmiNode\fPs in tree pre-order. +\fBsmiGetFirstNode()\fP returns the first node defined in the module +specified by \fIsmiModulePtr\fP that is of any kind specified in +the \fIkinds\fP bitset. +Subsequent calls to \fBsmiGetNextNode()\fP return the next node of +any kind specified in the \fIkinds\fP bitset. If there are no +more node definitions in the module, NULL is returned. +.PP +The \fBsmiGetFirstChildNode()\fP and \fBsmiGetNextChildNode()\fP +functions are used to iteratively retrieve \fBstruct SmiNode\fPs that +represent the immediate child nodes of the node specified +by \fIsmiNodePtr\fP passed to the \fBsmiGetFirstChildNode()\fP call. +.PP +The \fBsmiGetParentNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that represents the parent node of the node +specified by \fIsmiNodePtr\fP. +.PP +The \fBsmiGetRelatedNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that is related to the node specified +by \fIsmiNodePtr\fP. Actually, this is used for SMIv2 table augmentation +entries and similar SMIng constructs. +.PP +The \fBsmiGetNodeModule()\fP function returns the module that defines +the node given by \fIstruct SmiNodePtr\fP. +.PP +The \fBsmiGetNodeType()\fP function returns the type of +the (scalar or columnar) node given by \fIstruct SmiNodePtr\fP. +If \fIstruct SmiNodePtr\fP does not specify a scalar or columnar +node, NULL is returned. +.PP +The \fBsmiGetFirstElement()\fP and \fBsmiGetNextElement()\fP functions are +used to iteratively retrieve \fBstruct SmiElement\fPs that represent +elements of index clauses or notification object lists, groups of object +types or notification types, and mandatory groups of module compliance +statements. The node to which the list belongs has to be specified +by \fIsmiNodePtr\fP. To retrieve the node that is represented by +a \fBstruct SmiElement\fP, the \fBsmiGetElementNode()\fP function has +to be called. +.PP +The \fBsmiGetFirstOption()\fP and \fBsmiGetNextOption()\fP functions are +used to iteratively retrieve \fBstruct SmiOption\fPs that represent +statements on optional (object or notification) groups within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The group node which is +subject of such a statement can be retrieved by the \fBsmiGetOptionNode()\fP +function. +.PP +Similarly, the \fBsmiGetFirstRefinement()\fP and \fBsmiGetNextRefinement()\fP +functions are used to iteratively retrieve \fBstruct SmiRefinement\fPs that +represent statements on optional object refinements within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The node which is +subject of such a refinement can be retrieved by +the \fBsmiGetRefinementNode()\fP function. The optional refined type and +write-type of a refinement can be retrieved by +the \fBsmiGetRefinementType()\fP and \fBsmiGetRefinementWriteType()\fP +functions. If they are not present, NULL is returned. +.PP +The \fBsmiGetNodeLine()\fP function returns the line number within the +module where the node specified by \fIsmiNodePtr\fP is defined. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_type "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_node.3.in b/lib/smi_node.3.in new file mode 100644 index 0000000..8dc6b2a --- /dev/null +++ b/lib/smi_node.3.in @@ -0,0 +1,229 @@ +.\" +.\" $Id: smi_node.3.in 5762 2006-08-17 08:10:17Z schoenw $ +.\" +.TH smi_node 3 "March 30, 2004" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetNode, +smiGetNodeByOID, +smiGetFirstNode, +smiGetNextNode, +smiGetParentNode, +smiGetRelatedNode, +smiGetFirstChildNode, +smiGetNextChildNode, +smiGetNodeModule, +smiGetNodeType, +smiGetNodeLine, +smiGetFirstElement, +smiGetNextElement, +smiGetElementNode, +smiGetFirstOption, +smiGetNextOption, +smiGetOptionNode, +smiGetFirstRefinement, +smiGetNextRefinement, +smiGetRefinementModule, +smiGetRefinementNode, +smiGetRefinementType, +smiGetRefinementWriteType +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiNode *smiGetNode(SmiModule *" smiModulePtr ", char *" node ); +.RE +.sp +.BI "SmiNode *smiGetNodeByOID(unsigned int " oidlen ", SmiSubid " oid[] ); +.RE +.sp +.BI "SmiNode *smiGetFirstNode(SmiModule *" smiModulePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetNextNode(SmiNode *" smiNodePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetParentNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetRelatedNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetFirstChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetNextChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiModule *smiGetNodeModule(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiType *smiGetNodeType(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "int smiGetNodeLine(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetFirstElement(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetNextElement(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiNode *smiGetElementNode(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiOption *smiGetFirstOption(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiOption *smiGetNextOption(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiNode *smiGetOptionNode(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiRefinement *smiGetFirstRefinement(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiRefinement *smiGetNextRefinement(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiNode *smiGetRefinementNode(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementType(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementWriteType(SmiRefinement *" smiRefinementPtr ); +.RE + +typedef struct SmiNode { + SmiIdentifier name; + int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; + int implied; + int create; + SmiNodekind nodekind; +} SmiNode; + +typedef struct SmiElement { + /* no visible attributes */ +} SmiElement; + +typedef struct SmiOption { + char *description; +} SmiOption; + +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +.fi +.SH DESCRIPTION +These functions retrieve information on any SMI node definition in the +object identifier tree, these are ASN.1 object identifier assignments, +MODULE-IDENTITYs, OBJECT-IDENTITYs, OBJECT-TYPEs, NOTIFICATION-TYPEs, +TRAP-TYPEs, OBJECT-GROUPs, NOTIFICATION-GROUPs, MODULE-COMPLIANCEs, +and AGENT-CAPABILITYs in SMIv1/v2 and node, scalar, table, +row, column, notification, group, and compliance statements in SMIng. +.PP +The \fBsmiGetNode()\fP function retrieves a \fBstruct SmiNode\fP that +represents a node of any kind. \fINode\fP may be either a +fully qualified descriptor, a simple node name, or a numerical OID. +Nodes are also found, if \fInode\fP contains an instance identifier +suffix. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the node is not found, \fBsmiGetNode()\fP returns NULL. +.PP +The \fBsmiGetNodeByOID()\fP function retrieves a \fBstruct SmiNode\fP that +matches the longest prefix of the node that is specified by the +object identifier \fIoid[]\fP with the length \fIoidlen\fP. +If no such node is not found, \fBsmiGetNodeByOID()\fP returns NULL. +.PP +The \fBsmiGetFirstNode()\fP and \fBsmiGetNextNode()\fP functions are +used to iteratively retrieve \fBstruct SmiNode\fPs in tree pre-order. +\fBsmiGetFirstNode()\fP returns the first node defined in the module +specified by \fIsmiModulePtr\fP that is of any kind specified in +the \fIkinds\fP bitset. +Subsequent calls to \fBsmiGetNextNode()\fP return the next node of +any kind specified in the \fIkinds\fP bitset. If there are no +more node definitions in the module, NULL is returned. +.PP +The \fBsmiGetFirstChildNode()\fP and \fBsmiGetNextChildNode()\fP +functions are used to iteratively retrieve \fBstruct SmiNode\fPs that +represent the immediate child nodes of the node specified +by \fIsmiNodePtr\fP passed to the \fBsmiGetFirstChildNode()\fP call. +.PP +The \fBsmiGetParentNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that represents the parent node of the node +specified by \fIsmiNodePtr\fP. +.PP +The \fBsmiGetRelatedNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that is related to the node specified +by \fIsmiNodePtr\fP. Actually, this is used for SMIv2 table augmentation +entries and similar SMIng constructs. +.PP +The \fBsmiGetNodeModule()\fP function returns the module that defines +the node given by \fIstruct SmiNodePtr\fP. +.PP +The \fBsmiGetNodeType()\fP function returns the type of +the (scalar or columnar) node given by \fIstruct SmiNodePtr\fP. +If \fIstruct SmiNodePtr\fP does not specify a scalar or columnar +node, NULL is returned. +.PP +The \fBsmiGetFirstElement()\fP and \fBsmiGetNextElement()\fP functions are +used to iteratively retrieve \fBstruct SmiElement\fPs that represent +elements of index clauses or notification object lists, groups of object +types or notification types, and mandatory groups of module compliance +statements. The node to which the list belongs has to be specified +by \fIsmiNodePtr\fP. To retrieve the node that is represented by +a \fBstruct SmiElement\fP, the \fBsmiGetElementNode()\fP function has +to be called. +.PP +The \fBsmiGetFirstOption()\fP and \fBsmiGetNextOption()\fP functions are +used to iteratively retrieve \fBstruct SmiOption\fPs that represent +statements on optional (object or notification) groups within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The group node which is +subject of such a statement can be retrieved by the \fBsmiGetOptionNode()\fP +function. +.PP +Similarly, the \fBsmiGetFirstRefinement()\fP and \fBsmiGetNextRefinement()\fP +functions are used to iteratively retrieve \fBstruct SmiRefinement\fPs that +represent statements on optional object refinements within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The node which is +subject of such a refinement can be retrieved by +the \fBsmiGetRefinementNode()\fP function. The optional refined type and +write-type of a refinement can be retrieved by +the \fBsmiGetRefinementType()\fP and \fBsmiGetRefinementWriteType()\fP +functions. If they are not present, NULL is returned. +.PP +The \fBsmiGetNodeLine()\fP function returns the line number within the +module where the node specified by \fIsmiNodePtr\fP is defined. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_type "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_render.3 b/lib/smi_render.3 new file mode 100644 index 0000000..4308618 --- /dev/null +++ b/lib/smi_render.3 @@ -0,0 +1,94 @@ +.\" +.\" $Id: smi_render.3.in 1432 2002-07-24 11:54:18Z strauss $ +.\" +.TH smi_render 3 "July 24, 2002" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiRenderOID, +smiRenderValue, +smiRenderNode, +smiRenderType +.\" END OF MAN PAGE COPIES +\- SMI data and MIB data rendering routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "char *smiRenderOID(unsigned int " oidlen ", SmiSubid *" oid ", int " flags ); +.RE +.sp +.BI "char *smiRenderValue(SmiValue *" smiValuePtr ", SmiType *" smiTypePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderNode(SmiNode *" smiNodePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderType(SmiType *" smiTypePtr ", int " flags ); +.RE +.SH DESCRIPTION +These functions provide can be used to render OIDs, values of MIB data, +or names of MIB nodes or types. +.PP +The \fBsmiRenderOID()\fP function renders an OID given by its +length \fIoidlen\fP and its array of sub-identifiers \fIoid*\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderValue()\fP function renders a MIB data value given by +\fIsmiValuePtr\fP. An underlying type \fIsmiTypePtr\fP may be supplied +to support a more human friendly rendering. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderNode()\fP function renders the name of a node given +by \fIsmiNodePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderType()\fP function renders the name of a type given +by \fIsmiTypePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.SH "FORMATS" +Each of these functions gets a last argument named \fIflags\fP. This is +a logcially or-ed set of flags that can be used to control the format +of the rendered items: +.TP +\fBSMI_RENDER_NUMERIC +Allow numeric representation (default). +.TP +\fBSMI_RENDER_NAME +Allow a representation by name(s) if possible. +.TP +\fBSMI_RENDER_QUALIFIED +In case of a name representation, force a module prefix, e.g. IF-MIB::ifIndex +instead of just ifIndex. +.TP +\fBSMI_RENDER_FORMAT +In case of \fIsmiRenderValue()\fP, force the application of a format +specification (e.g. an SMIv2 DISPLAY-HINT) of an underlying type if +the \fIsmiTypePtr\fP argument is not NULL and this type contains such a +format specification. +.TP +\fBSMI_RENDER_PRINTABLE +In case of octet string value rendering, force a printable representation +if all octets of the octet string are printable. +.TP +\fBSMI_RENDER_UNKNOWN +Force the return of a string containing SMI_LABEL_UNKNOWN (""), +if the rendering would fail. This way, the only condition where NULL can +be returned is the lack of memory. +.TP +\fBSMI_RENDER_ALL +Apply a combination of all these flags. This supports the (hopefully) most +human friendly representations. +.SH "RETURN VALUE" +All of these functions return a string, if successful, or NULL in case +of a rendering failure. See also the \fBSMI_RENDER_UNKNOWN\fP flag above. +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2002 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_render.3.in b/lib/smi_render.3.in new file mode 100644 index 0000000..4308618 --- /dev/null +++ b/lib/smi_render.3.in @@ -0,0 +1,94 @@ +.\" +.\" $Id: smi_render.3.in 1432 2002-07-24 11:54:18Z strauss $ +.\" +.TH smi_render 3 "July 24, 2002" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiRenderOID, +smiRenderValue, +smiRenderNode, +smiRenderType +.\" END OF MAN PAGE COPIES +\- SMI data and MIB data rendering routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "char *smiRenderOID(unsigned int " oidlen ", SmiSubid *" oid ", int " flags ); +.RE +.sp +.BI "char *smiRenderValue(SmiValue *" smiValuePtr ", SmiType *" smiTypePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderNode(SmiNode *" smiNodePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderType(SmiType *" smiTypePtr ", int " flags ); +.RE +.SH DESCRIPTION +These functions provide can be used to render OIDs, values of MIB data, +or names of MIB nodes or types. +.PP +The \fBsmiRenderOID()\fP function renders an OID given by its +length \fIoidlen\fP and its array of sub-identifiers \fIoid*\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderValue()\fP function renders a MIB data value given by +\fIsmiValuePtr\fP. An underlying type \fIsmiTypePtr\fP may be supplied +to support a more human friendly rendering. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderNode()\fP function renders the name of a node given +by \fIsmiNodePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderType()\fP function renders the name of a type given +by \fIsmiTypePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.SH "FORMATS" +Each of these functions gets a last argument named \fIflags\fP. This is +a logcially or-ed set of flags that can be used to control the format +of the rendered items: +.TP +\fBSMI_RENDER_NUMERIC +Allow numeric representation (default). +.TP +\fBSMI_RENDER_NAME +Allow a representation by name(s) if possible. +.TP +\fBSMI_RENDER_QUALIFIED +In case of a name representation, force a module prefix, e.g. IF-MIB::ifIndex +instead of just ifIndex. +.TP +\fBSMI_RENDER_FORMAT +In case of \fIsmiRenderValue()\fP, force the application of a format +specification (e.g. an SMIv2 DISPLAY-HINT) of an underlying type if +the \fIsmiTypePtr\fP argument is not NULL and this type contains such a +format specification. +.TP +\fBSMI_RENDER_PRINTABLE +In case of octet string value rendering, force a printable representation +if all octets of the octet string are printable. +.TP +\fBSMI_RENDER_UNKNOWN +Force the return of a string containing SMI_LABEL_UNKNOWN (""), +if the rendering would fail. This way, the only condition where NULL can +be returned is the lack of memory. +.TP +\fBSMI_RENDER_ALL +Apply a combination of all these flags. This supports the (hopefully) most +human friendly representations. +.SH "RETURN VALUE" +All of these functions return a string, if successful, or NULL in case +of a rendering failure. See also the \fBSMI_RENDER_UNKNOWN\fP flag above. +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2002 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_type.3 b/lib/smi_type.3 new file mode 100644 index 0000000..8326456 --- /dev/null +++ b/lib/smi_type.3 @@ -0,0 +1,128 @@ +.\" +.\" $Id: smi_type.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_type 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetType, +smiGetFirstType, +smiGetNextType, +smiGetParentType, +smiGetTypeLine, +smiGetFirstRange, +smiGetNextRange, +smiGetFirstNamedNumber, +smiGetNextNamedNumber, +smiGetTypeModule +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiType *smiGetType(SmiModule *" smiModulePtr ", char *" type ); +.RE +.sp +.BI "SmiType *smiGetFirstType(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiType *smiGetNextType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiType *smiGetParentType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "int smiGetTypeLine(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetFirstRange(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetNextRange(SmiRange *" smiRangePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetFirstNamedNumber(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr ); +.RE +.sp +.BI "SmiModule *smiGetTypeModule(SmiType *" smiTypePtr ); +.RE + +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +.fi +.SH DESCRIPTION +These functions retrieve information on a type definition (SMIng) or +a simple ASN.1 type definition (SMIv1/v2) or a TEXTUAL-CONVENTION +definition (SMIv2). Base types may also be retrieved by these functions. +.PP +The \fBsmiGetType()\fP function retrieves a \fBstruct SmiType\fP that +represents a type. \fIType\fP may be either a +fully qualified descriptor or a simple type name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the type is not found, \fBsmiGetType()\fP returns NULL. +.PP +The \fBsmiGetFirstType()\fP and \fBsmiGetNextType()\fP functions are +used to iteratively retrieve \fBstruct SmiType\fPs. \fBsmiGetFirstType()\fP +returns the first one defined in the module +specified by \fIsmiModulePtr\fP. Subsequent calls to +\fBsmiGetNextType()\fP return the following ones. If there are no +more type definitions in the module NULL is returned. +.PP +The \fBsmiGetParentType()\fP function retrieves a \fBstruct SmiType\fP +of the type from which the type specified by \fIsmiTypePtr\fP is +derived. If there is no parent type (i.e. the type specified +by \fIsmiTypePtr\fP is a base type), \fBsmiGetParentType()\fP returns NULL. +.PP +Similarly, the \fBsmiGetFirstRange()\fP and \fBsmiGetNextRange()\fP +functions are used to iteratively retrieve \fBstruct SmiRange\fPs +that represent range restrictions of the type specified by \fIsmiTypePtr\fP, +either size ranges of an octet string type or value +ranges in case of a numeric type. +.PP +Similarly, the \fBsmiGetFirstNamedNumber()\fP and \fBsmiGetNextNamedNumber()\fP +functions are used to iteratively retrieve \fBstruct SmiNamedNumber\fPs +that represent named numbers of the type specified by \fIsmiTypePtr\fP, which +has to be either a bit set or an enumeration type. +.PP +The \fBsmiGetTypeModule()\fP function returns the module that defines +the type given by \fIstruct SmiTypePtr\fP. +.PP +The \fBsmiGetTypeLine()\fP function returns the line number within the +module where the type specified by \fIsmiTypePtr\fP is defined. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_type.3.in b/lib/smi_type.3.in new file mode 100644 index 0000000..7d99aaa --- /dev/null +++ b/lib/smi_type.3.in @@ -0,0 +1,128 @@ +.\" +.\" $Id: smi_type.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_type 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetType, +smiGetFirstType, +smiGetNextType, +smiGetParentType, +smiGetTypeLine, +smiGetFirstRange, +smiGetNextRange, +smiGetFirstNamedNumber, +smiGetNextNamedNumber, +smiGetTypeModule +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiType *smiGetType(SmiModule *" smiModulePtr ", char *" type ); +.RE +.sp +.BI "SmiType *smiGetFirstType(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiType *smiGetNextType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiType *smiGetParentType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "int smiGetTypeLine(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetFirstRange(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetNextRange(SmiRange *" smiRangePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetFirstNamedNumber(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr ); +.RE +.sp +.BI "SmiModule *smiGetTypeModule(SmiType *" smiTypePtr ); +.RE + +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +.fi +.SH DESCRIPTION +These functions retrieve information on a type definition (SMIng) or +a simple ASN.1 type definition (SMIv1/v2) or a TEXTUAL-CONVENTION +definition (SMIv2). Base types may also be retrieved by these functions. +.PP +The \fBsmiGetType()\fP function retrieves a \fBstruct SmiType\fP that +represents a type. \fIType\fP may be either a +fully qualified descriptor or a simple type name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the type is not found, \fBsmiGetType()\fP returns NULL. +.PP +The \fBsmiGetFirstType()\fP and \fBsmiGetNextType()\fP functions are +used to iteratively retrieve \fBstruct SmiType\fPs. \fBsmiGetFirstType()\fP +returns the first one defined in the module +specified by \fIsmiModulePtr\fP. Subsequent calls to +\fBsmiGetNextType()\fP return the following ones. If there are no +more type definitions in the module NULL is returned. +.PP +The \fBsmiGetParentType()\fP function retrieves a \fBstruct SmiType\fP +of the type from which the type specified by \fIsmiTypePtr\fP is +derived. If there is no parent type (i.e. the type specified +by \fIsmiTypePtr\fP is a base type), \fBsmiGetParentType()\fP returns NULL. +.PP +Similarly, the \fBsmiGetFirstRange()\fP and \fBsmiGetNextRange()\fP +functions are used to iteratively retrieve \fBstruct SmiRange\fPs +that represent range restrictions of the type specified by \fIsmiTypePtr\fP, +either size ranges of an octet string type or value +ranges in case of a numeric type. +.PP +Similarly, the \fBsmiGetFirstNamedNumber()\fP and \fBsmiGetNextNamedNumber()\fP +functions are used to iteratively retrieve \fBstruct SmiNamedNumber\fPs +that represent named numbers of the type specified by \fIsmiTypePtr\fP, which +has to be either a bit set or an enumeration type. +.PP +The \fBsmiGetTypeModule()\fP function returns the module that defines +the type given by \fIstruct SmiTypePtr\fP. +.PP +The \fBsmiGetTypeLine()\fP function returns the line number within the +module where the type specified by \fIsmiTypePtr\fP is defined. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_util.3 b/lib/smi_util.3 new file mode 100644 index 0000000..1e9f1fc --- /dev/null +++ b/lib/smi_util.3 @@ -0,0 +1,38 @@ +.\" +.\" $Id: smi_util.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_util 3 "August 21, 2006" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMinSize, +smiGetMaxSize, +smiPack, +smiUnpack +.\" END OF MAN PAGE COPIES +\- SMI type utility functions +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "unsigned int smiGetMinSize(SmiType *" smiTypePtr ); +.RE +.sp +.BI "unsigned int smiGetMaxSize(SmiTyep *" smiTypePtr ); +.RE + +.fi +.SH DESCRIPTION +These functions +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_util.3.in b/lib/smi_util.3.in new file mode 100644 index 0000000..757b66c --- /dev/null +++ b/lib/smi_util.3.in @@ -0,0 +1,38 @@ +.\" +.\" $Id: smi_util.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_util 3 "August 21, 2006" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMinSize, +smiGetMaxSize, +smiPack, +smiUnpack +.\" END OF MAN PAGE COPIES +\- SMI type utility functions +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "unsigned int smiGetMinSize(SmiType *" smiTypePtr ); +.RE +.sp +.BI "unsigned int smiGetMaxSize(SmiTyep *" smiTypePtr ); +.RE + +.fi +.SH DESCRIPTION +These functions +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/snprintf.c b/lib/snprintf.c new file mode 100644 index 0000000..9b79511 --- /dev/null +++ b/lib/snprintf.c @@ -0,0 +1,631 @@ +/* + * Copyright (c) 1995-1999 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* $Id: snprintf.c 1429 2002-07-23 23:12:20Z strauss $ */ + +#include + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_DMALLOC_H +#include +#endif + +#include "snprintf.h" + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif + + + +enum format_flags { + minus_flag = 1, + plus_flag = 2, + space_flag = 4, + alternate_flag = 8, + zero_flag = 16 +}; + +/* + * Common state + */ + +struct state { + unsigned char *str; + unsigned char *s; + unsigned char *theend; + size_t sz; + size_t max_sz; + int (*append_char)(struct state *, unsigned char); + int (*reserve)(struct state *, size_t); + /* XXX - methods */ +}; + +#ifndef HAVE_VSNPRINTF +static int +sn_reserve (struct state *state, size_t n) +{ + return state->s + n > state->theend; +} + +static int +sn_append_char (struct state *state, unsigned char c) +{ + if (sn_reserve (state, 1)) { + return 1; + } else { + *state->s++ = c; + return 0; + } +} +#endif + +static int +as_reserve (struct state *state, size_t n) +{ + if (state->s + n > state->theend) { + int off = state->s - state->str; + unsigned char *tmp; + + if (state->max_sz && state->sz >= state->max_sz) + return 1; + + state->sz = MAX(state->sz * 2, state->sz + n); + if (state->max_sz) + state->sz = MIN(state->sz, state->max_sz); + tmp = realloc (state->str, state->sz); + if (tmp == NULL) + return 1; + state->str = tmp; + state->s = state->str + off; + state->theend = state->str + state->sz - 1; + } + return 0; +} + +static int +as_append_char (struct state *state, unsigned char c) +{ + if(as_reserve (state, 1)) + return 1; + else { + *state->s++ = c; + return 0; + } +} + +static int +append_number(struct state *state, + unsigned long num, unsigned base, char *rep, + int width, int prec, int flags, int minusp) +{ + int len = 0; + int i; + + /* given precision, ignore zero flag */ + if(prec != -1) + flags &= ~zero_flag; + else + prec = 1; + /* zero value with zero precision -> "" */ + if(prec == 0 && num == 0) + return 0; + do{ + if((*state->append_char)(state, rep[num % base])) + return 1; + len++; + num /= base; + }while(num); + prec -= len; + /* pad with prec zeros */ + while(prec-- > 0){ + if((*state->append_char)(state, '0')) + return 1; + len++; + } + /* add length of alternate prefix (added later) to len */ + if(flags & alternate_flag && (base == 16 || base == 8)) + len += base / 8; + /* pad with zeros */ + if(flags & zero_flag){ + width -= len; + if(minusp || (flags & space_flag) || (flags & plus_flag)) + width--; + while(width-- > 0){ + if((*state->append_char)(state, '0')) + return 1; + len++; + } + } + /* add alternate prefix */ + if(flags & alternate_flag && (base == 16 || base == 8)){ + if(base == 16) + if((*state->append_char)(state, rep[10] + 23)) /* XXX */ + return 1; + if((*state->append_char)(state, '0')) + return 1; + } + /* add sign */ + if(minusp){ + if((*state->append_char)(state, '-')) + return 1; + len++; + } else if(flags & plus_flag) { + if((*state->append_char)(state, '+')) + return 1; + len++; + } else if(flags & space_flag) { + if((*state->append_char)(state, ' ')) + return 1; + len++; + } + if(flags & minus_flag) + /* swap before padding with spaces */ + for(i = 0; i < len / 2; i++){ + char c = state->s[-i-1]; + state->s[-i-1] = state->s[-len+i]; + state->s[-len+i] = c; + } + width -= len; + while(width-- > 0){ + if((*state->append_char)(state, ' ')) + return 1; + len++; + } + if(!(flags & minus_flag)) + /* swap after padding with spaces */ + for(i = 0; i < len / 2; i++){ + char c = state->s[-i-1]; + state->s[-i-1] = state->s[-len+i]; + state->s[-len+i] = c; + } + + return 0; +} + +static int +append_string (struct state *state, + unsigned char *arg, + int width, + int prec, + int flags) +{ + if(prec != -1) + width -= prec; + else + width -= strlen((char *)arg); + if(!(flags & minus_flag)) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + if (prec != -1) { + while (*arg && prec--) + if ((*state->append_char) (state, *arg++)) + return 1; + } else { + while (*arg) + if ((*state->append_char) (state, *arg++)) + return 1; + } + if(flags & minus_flag) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + return 0; +} + +static int +append_char(struct state *state, + unsigned char arg, + int width, + int flags) +{ + while(!(flags & minus_flag) && --width > 0) + if((*state->append_char) (state, ' ')) + return 1; + + if((*state->append_char) (state, arg)) + return 1; + while((flags & minus_flag) && --width > 0) + if((*state->append_char) (state, ' ')) + return 1; + + return 0; +} + +/* + * This can't be made into a function... + */ + +#define PARSE_INT_FORMAT(res, arg, unsig) \ +if (long_flag) \ + res = (unsig long)va_arg(arg, unsig long); \ +else if (short_flag) \ + res = (unsig short)va_arg(arg, unsig int); \ +else \ + res = (unsig int)va_arg(arg, unsig int) + +/* + * zyxprintf - return 0 or -1 + */ + +static int +xyzprintf (struct state *state, const char *char_format, va_list ap) +{ + const unsigned char *format = (const unsigned char *)char_format; + unsigned char c; + + while((c = *format++)) { + if (c == '%') { + int flags = 0; + int width = 0; + int prec = -1; + int long_flag = 0; + int short_flag = 0; + + /* flags */ + while((c = *format++)){ + if(c == '-') + flags |= minus_flag; + else if(c == '+') + flags |= plus_flag; + else if(c == ' ') + flags |= space_flag; + else if(c == '#') + flags |= alternate_flag; + else if(c == '0') + flags |= zero_flag; + else + break; + } + + if((flags & space_flag) && (flags & plus_flag)) + flags ^= space_flag; + + if((flags & minus_flag) && (flags & zero_flag)) + flags ^= zero_flag; + + /* width */ + if (isdigit(c)) + do { + width = width * 10 + c - '0'; + c = *format++; + } while(isdigit(c)); + else if(c == '*') { + width = va_arg(ap, int); + c = *format++; + } + + /* precision */ + if (c == '.') { + prec = 0; + c = *format++; + if (isdigit(c)) + do { + prec = prec * 10 + c - '0'; + c = *format++; + } while(isdigit(c)); + else if (c == '*') { + prec = va_arg(ap, int); + c = *format++; + } + } + + /* size */ + + if (c == 'h') { + short_flag = 1; + c = *format++; + } else if (c == 'l') { + long_flag = 1; + c = *format++; + } + + switch (c) { + case 'c' : + if(append_char(state, va_arg(ap, int), width, flags)) + return -1; + break; + case 's' : + if (append_string(state, + va_arg(ap, unsigned char*), + width, + prec, + flags)) + return -1; + break; + case 'd' : + case 'i' : { + long arg; + unsigned long num; + int minusp = 0; + + PARSE_INT_FORMAT(arg, ap, signed); + + if (arg < 0) { + minusp = 1; + num = -arg; + } else + num = arg; + + if (append_number (state, num, 10, "0123456789", + width, prec, flags, minusp)) + return -1; + break; + } + case 'u' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 10, "0123456789", + width, prec, flags, 0)) + return -1; + break; + } + case 'o' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 010, "01234567", + width, prec, flags, 0)) + return -1; + break; + } + case 'x' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 0x10, "0123456789abcdef", + width, prec, flags, 0)) + return -1; + break; + } + case 'X' :{ + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 0x10, "0123456789ABCDEF", + width, prec, flags, 0)) + return -1; + break; + } + case 'p' : { + unsigned long arg = (unsigned long)va_arg(ap, void*); + + if (append_number (state, arg, 0x10, "0123456789ABCDEF", + width, prec, flags, 0)) + return -1; + break; + } + case 'n' : { + int *arg = va_arg(ap, int*); + *arg = state->s - state->str; + break; + } + case '\0' : + --format; + /* FALLTHROUGH */ + case '%' : + if ((*state->append_char)(state, c)) + return -1; + break; + default : + if ( (*state->append_char)(state, '%') + || (*state->append_char)(state, c)) + return -1; + break; + } + } else + if ((*state->append_char) (state, c)) + return -1; + } + return 0; +} + +#ifndef HAVE_SNPRINTF +int +snprintf (char *str, size_t sz, const char *format, ...) +{ + va_list args; + int ret; + + va_start(args, format); + ret = vsnprintf (str, sz, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + + tmp = malloc (sz); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (ret != ret2 || strcmp(str, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return ret; +} +#endif + +#ifndef HAVE_ASPRINTF +int +asprintf (char **ret, const char *format, ...) +{ + va_list args; + int val; + + va_start(args, format); + val = vasprintf (ret, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + tmp = malloc (val + 1); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (val != ret2 || strcmp(*ret, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return val; +} +#endif + +#ifndef HAVE_ASNPRINTF +int +asnprintf (char **ret, size_t max_sz, const char *format, ...) +{ + va_list args; + int val; + + va_start(args, format); + val = vasnprintf (ret, max_sz, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + tmp = malloc (val + 1); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (val != ret2 || strcmp(*ret, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return val; +} +#endif + +#ifndef HAVE_VASPRINTF +int +vasprintf (char **ret, const char *format, va_list args) +{ + return vasnprintf (ret, 0, format, args); +} +#endif + + +#ifndef HAVE_VASNPRINTF +int +vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) +{ + int st; + size_t len; + struct state state; + + state.max_sz = max_sz; + state.sz = 1; + state.str = malloc(state.sz); + if (state.str == NULL) { + *ret = NULL; + return -1; + } + state.s = state.str; + state.theend = state.s + state.sz - 1; + state.append_char = as_append_char; + state.reserve = as_reserve; + + st = xyzprintf (&state, format, args); + if (st) { + free (state.str); + *ret = NULL; + return -1; + } else { + char *tmp; + + *state.s = '\0'; + len = state.s - state.str; + tmp = realloc (state.str, len+1); + if (tmp == NULL) { + free (state.str); + *ret = NULL; + return -1; + } + *ret = tmp; + return len; + } +} +#endif + +#ifndef HAVE_VSNPRINTF +int +vsnprintf (char *str, size_t sz, const char *format, va_list args) +{ + struct state state; + int ret; + unsigned char *ustr = (unsigned char *)str; + + state.max_sz = 0; + state.sz = sz; + state.str = ustr; + state.s = ustr; + state.theend = ustr + sz - 1; + state.append_char = sn_append_char; + state.reserve = sn_reserve; + + ret = xyzprintf (&state, format, args); + *state.s = '\0'; + if (ret) + return sz; + else + return state.s - state.str; +} +#endif diff --git a/lib/snprintf.h b/lib/snprintf.h new file mode 100644 index 0000000..8ec656a --- /dev/null +++ b/lib/snprintf.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1995-1999 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include +#include +#include + +#ifndef HAVE_SNPRINTF +extern int snprintf (char *str, size_t sz, const char *format, ...); +#endif + +#ifndef HAVE_VSNPRINTF +extern int vsnprintf (char *str, size_t sz, const char *format, va_list args); +#endif + +extern int asprintf (char **ret, const char *format, ...); + +extern int asnprintf (char **ret, size_t max_sz, const char *format, ...); + +extern int vasprintf (char **ret, const char *format, va_list args); + +extern int vasnprintf (char **ret, size_t max_sz, const char *format, + va_list args); + diff --git a/lib/util.c b/lib/util.c new file mode 100644 index 0000000..8b7354d --- /dev/null +++ b/lib/util.c @@ -0,0 +1,192 @@ +/* + * util.c -- + * + * Misc utility functions. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: util.c 1470 2002-11-13 13:15:03Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include + +#include "util.h" +#include "snprintf.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifdef HAVE_DMALLOC_H + +void *_smiMalloc(char *file, int line, size_t size) +{ + char *m = _calloc_leap(file, line, 1, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +void *_smiRealloc(char *file, int line, void *ptr, size_t size) +{ + char *m = _realloc_leap(file, line, ptr, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +char *_smiStrdup(char *file, int line, const char *s1) +{ + if (s1) { + char *m = _strdup_leap(file, line, s1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; + } else { + return NULL; + } +} + +char *_smiStrndup(char *file, int line, const char *s1, size_t n) +{ + char *m; + + m = _smiMalloc(file, line, n+1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + strncpy(m, s1, n); + m[n] = 0; + return m; +} + +void _smiFree(char *file, int line, void *ptr) +{ + if (ptr) { + _free_leap(file, line, ptr); + } +} + +#else + +void *smiMalloc(size_t size) +{ + char *m = calloc(1, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +void *smiRealloc(void *ptr, size_t size) +{ + char *m = realloc(ptr, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +char *smiStrdup(const char *s1) +{ + if (s1) { + char *m = strdup(s1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; + } else { + return NULL; + } +} + +char *smiStrndup(const char *s1, size_t n) +{ + char *m; + + m = smiMalloc(n+1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + strncpy(m, s1, n); + m[n] = 0; + return m; +} + +void smiFree(void *ptr) +{ + if (ptr) { + free(ptr); + } +} + +#endif + + + +int smiIsPath(const char *s) +{ + return (strchr(s, '.') || strchr(s, DIR_SEPARATOR)); +} + + + +#ifndef HAVE_TIMEGM +time_t timegm(struct tm *tm) +{ + char *tz; + static char *s = NULL; + char *tofree = NULL; + time_t t; + + /* ensure to call mktime() for UTC */ + tz = getenv("TZ"); + if (tz) { + tofree = s; + smiAsprintf(&s, "TZ=%s", tz); + } + putenv("TZ=NULL"); + t = mktime(tm); + if (tz) { + putenv(s); + } else { + putenv("TZ="); + } + if (tofree) smiFree(tofree); + + return t; +} +#endif + + + +int smiTypeDerivedFrom(Type *typePtr, Type *parentTypePtr) +{ + Type *t; + + if ((!typePtr) || (!parentTypePtr)) { + return 0; + } + + for (t = typePtr; t != NULL; t = t->parentPtr) { + if (parentTypePtr == t) { + return 1; + } + } + + return 0; +} diff --git a/lib/util.h b/lib/util.h new file mode 100644 index 0000000..da68a10 --- /dev/null +++ b/lib/util.h @@ -0,0 +1,63 @@ +/* + * util.h -- + * + * Misc utility functions. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: util.h 8062 2008-04-16 14:25:53Z schoenw $ + */ + +#ifndef _UTIL_H +#define _UTIL_H + +#include +#include + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" + + + +#ifdef __CHECKER__ +#undef HAVE_TIMEGM +#undef HAVE_STRTOULL +#undef HAVE_STRTOUQ +#undef HAVE_STRTOLL +#undef HAVE_STRTOQ +#endif + +/* + * Make sure we have strtoull() and strtoll() on this system. + */ + +#ifndef HAVE_STRTOULL +#ifdef HAVE_STRTOUQ +#define strtoull strtouq +#else +#define strtoull strtoul /* TODO */ +#endif +#endif + +#ifndef HAVE_STRTOLL +#ifdef HAVE_STRTOQ +#define strtoll strtoq +#else +#define strtoll strtol +#endif +#endif + +extern int smiIsPath(const char *s); + +#ifndef HAVE_TIMEGM +time_t timegm(struct tm *tm); +#endif + +int smiTypeDerivedFrom(Type *typePtr, Type *parentTypePtr); + +#endif /* _UTIL_H */ + diff --git a/libsmi.m4 b/libsmi.m4 new file mode 100644 index 0000000..29ce719 --- /dev/null +++ b/libsmi.m4 @@ -0,0 +1,38 @@ +# Configure paths for libsmi. + +dnl AM_PATH_LIBSMI() +dnl Test for libsmi and defines the symbol LIBSMI if the test is +dnl successful. Also defines HAVE_LIBSMI_H and adds -llibsmi to the +dnl LIBS variable. +dnl +AC_DEFUN([AM_PATH_LIBSMI], +[ + AC_CHECK_HEADERS(smi.h) + AC_CHECK_LIB(smi, smiInit) + AC_MSG_CHECKING([whether to enable libsmi]) + AC_TRY_RUN([ /* libsmi available check */ +#include +main() +{ + int current, revision, age, n; + const int required = 2; + if (smiInit("")) + exit(1); + if (strcmp(SMI_LIBRARY_VERSION, smi_library_version)) + exit(2); + n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age); + if (n != 3) + exit(3); + if (required < current - age || required > current) + exit(4); + exit(0); +} +], + [ AC_MSG_RESULT(yes) + libsmi=yes], + [ AC_MSG_RESULT(no) + libsmi=no], + [ AC_MSG_RESULT(not when cross-compiling) + libsmi=no] + ) +]) diff --git a/libsmi.pc b/libsmi.pc new file mode 100644 index 0000000..73d1069 --- /dev/null +++ b/libsmi.pc @@ -0,0 +1,12 @@ +prefix=/usr/local +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsmi +Description: SMI parser library +Requires: +Version: 0.4.8 +Libs: -L${libdir} -lsmi +Cflags: -I${includedir} + diff --git a/libsmi.pc.in b/libsmi.pc.in new file mode 100644 index 0000000..dc7f962 --- /dev/null +++ b/libsmi.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libsmi +Description: SMI parser library +Requires: +Version: @VERSION@ +Libs: -L${libdir} -lsmi +Cflags: -I${includedir} + diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..c715b59 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,6871 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="1.5.22 Debian 1.5.22-4" +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/mibs/Makefile.am b/mibs/Makefile.am new file mode 100644 index 0000000..1cabeff --- /dev/null +++ b/mibs/Makefile.am @@ -0,0 +1,15 @@ +# +# Makefile.am -- +# +# Template to generate the mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +MIBDIRS = iana ietf irtf tubs site +SUBDIRS = $(MIBDIRS) diff --git a/mibs/Makefile.in b/mibs/Makefile.in new file mode 100644 index 0000000..0122e8a --- /dev/null +++ b/mibs/Makefile.in @@ -0,0 +1,514 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +MIBDIRS = iana ietf irtf tubs site +SUBDIRS = $(MIBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB b/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB new file mode 100644 index 0000000..f3fcb1e --- /dev/null +++ b/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB @@ -0,0 +1,131 @@ + + + IANA-ADDRESS-FAMILY-NUMBERS-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaAddressFamilyNumbers MODULE-IDENTITY + LAST-UPDATED "200203140000Z" -- March 14, 2002 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module defines the AddressFamilyNumbers + textual convention." + + -- revision history + + REVISION "200203140000Z" -- March 14, 2002 + DESCRIPTION "AddressFamilyNumbers assignment 22 to + fibreChannelWWPN. AddressFamilyNumbers + assignment 23 to fibreChannelWWNN. + AddressFamilyNumers assignment 24 to gwid." + + REVISION "200009080000Z" -- September 8, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 19 to xtpOverIpv4. + AddressFamilyNumbers assignment 20 to xtpOverIpv6. + AddressFamilyNumbers assignment 21 to xtpNativeModeXTP." + + REVISION "200003010000Z" -- March 1, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 17 to distinguishedName. + AddressFamilyNumbers assignment 18 to asNumber." + + REVISION "200002040000Z" -- February 4, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 16 to dns." + + REVISION "9908260000Z" -- August 26, 1999 + DESCRIPTION "Initial version, published as RFC 2677." + + ::= { mib-2 72 } + + + AddressFamilyNumbers ::= TEXTUAL-CONVENTION + + STATUS current + DESCRIPTION + "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.) + + The enumerations are described as: + + other(0), -- none of the following + ipV4(1), -- IP Version 4 + ipV6(2), -- IP Version 6 + nsap(3), -- NSAP + hdlc(4), -- (8-bit multidrop) + bbn1822(5), + all802(6), -- (includes all 802 media + -- plus Ethernet 'canonical format') + e163(7), + e164(8), -- (SMDS, Frame Relay, ATM) + f69(9), -- (Telex) + x121(10), -- (X.25, Frame Relay) + ipx(11), -- IPX (Internet Protocol Exchange) + appleTalk(12), -- Apple Talk + decnetIV(13), -- DEC Net Phase IV + banyanVines(14), -- Banyan Vines + e164withNsap(15), + -- (E.164 with NSAP format subaddress) + dns(16), -- (Domain Name System) + distinguishedName(17), -- (Distinguished Name, per X.500) + asNumber(18), -- (16-bit quantity, per the AS number space) + xtpOverIpv4(19), -- XTP over IP version 4 + xtpOverIpv6(20), -- XTP over IP version 6 + xtpNativeModeXTP(21), -- XTP native mode XTP + fibreChannelWWPN(22), -- Fibre Channel World-Wide Port Name + fibreChannelWWNN(23), -- Fibre Channel World-Wide Node Name + gwid(24), -- Gateway Identifier + afi(25), -- AFI for L2VPN information + reserved(65535) + + + + Requests for new values should be made to IANA via + email (iana&iana.org)." + + SYNTAX INTEGER { + other(0), + ipV4(1), + ipV6(2), + nsap(3), + hdlc(4), + bbn1822(5), + all802(6), + e163(7), + e164(8), + f69(9), + x121(10), + ipx(11), + appleTalk(12), + decnetIV(13), + banyanVines(14), + e164withNsap(15), + dns(16), + distinguishedName(17), -- (Distinguished Name, per X.500) + asNumber(18), -- (16-bit quantity, per the AS number space) + xtpOverIpv4(19), + xtpOverIpv6(20), + xtpNativeModeXTP(21), + fibreChannelWWPN(22), + fibreChannelWWNN(23), + gwid(24), + afi(25), + reserved(65535) + } + END diff --git a/mibs/iana/IANA-CHARSET-MIB b/mibs/iana/IANA-CHARSET-MIB new file mode 100644 index 0000000..499d54e --- /dev/null +++ b/mibs/iana/IANA-CHARSET-MIB @@ -0,0 +1,345 @@ +IANA-CHARSET-MIB DEFINITIONS ::= BEGIN +-- http://www.iana.org/assignments/ianacharset-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianaCharsetMIB MODULE-IDENTITY + LAST-UPDATED "200705140000Z" + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines the IANACharset + TEXTUAL-CONVENTION. The IANACharset TC is used to + specify the encoding of string objects defined in + a MIB. + + Each version of this MIB will be released based on + the IANA Charset Registry file (see RFC 2978) at + http://www.iana.org/assignments/character-sets. + + Note: The IANACharset TC, originally defined in + RFC 1759, was inaccurately named CodedCharSet. + + Note: Best practice is to define new MIB string + objects with invariant UTF-8 (RFC 3629) syntax + using the SnmpAdminString TC (defined in RFC 3411) + in accordance with IETF Policy on Character Sets and + Languages (RFC 2277). + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3808; for full legal notices see the RFC + itself. Supplementary information may be + available on + http://www.ietf.org/copyrights/ianamib.html." + + -- revision history + + REVISION "200705140000Z" + DESCRIPTION "Registration of new charset 2107." + + REVISION "200612070000Z" + DESCRIPTION "Registration of new charsets numbered 118, 119, + and 2106." + + REVISION "200406080000Z" + DESCRIPTION "Original version transferred from Printer MIB, + generated from the IANA maintained assignments + http://www.iana.org/assignments/character-sets." + + ::= { mib-2 106 } + +IANACharset ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies an IANA registered 'charset' - coded character set + (CCS) plus optional character encoding scheme (CES) - terms + defined in 'IANA Charset Registration Procedures' (RFC 2978). + + Objects of this syntax are used to specify the encoding for + string objects defined in one or more MIBs. For example, the + prtLocalizationCharacterSet, prtInterpreterDefaultCharSetIn, and + prtInterpreterDefaultCharSetOut objects defined in Printer MIB. + + The current list of 'charset' names and enumerated values + is contained in the IANA Character Set Registry at: + + http://www.iana.org/assignments/character-sets + + Enum names are derived from the IANA Charset Registry 'Alias' + fields that begin with 'cs' (for character set). + Enum values are derived from the parallel 'MIBenum' fields." + SYNTAX INTEGER { + other(1), -- used if the designated + -- character set is not currently + -- registered by IANA + unknown(2), -- used as a default value + csASCII(3), + csISOLatin1(4), + csISOLatin2(5), + csISOLatin3(6), + csISOLatin4(7), + csISOLatinCyrillic(8), + csISOLatinArabic(9), + csISOLatinGreek(10), + csISOLatinHebrew(11), + csISOLatin5(12), + csISOLatin6(13), + csISOTextComm(14), + csHalfWidthKatakana(15), + csJISEncoding(16), + csShiftJIS(17), + csEUCPkdFmtJapanese(18), + csEUCFixWidJapanese(19), + csISO4UnitedKingdom(20), + csISO11SwedishForNames(21), + csISO15Italian(22), + csISO17Spanish(23), + csISO21German(24), + csISO60DanishNorwegian(25), + csISO69French(26), + csISO10646UTF1(27), + csISO646basic1983(28), + csINVARIANT(29), + csISO2IntlRefVersion(30), + csNATSSEFI(31), + csNATSSEFIADD(32), + csNATSDANO(33), + csNATSDANOADD(34), + csISO10Swedish(35), + csKSC56011987(36), + csISO2022KR(37), + csEUCKR(38), + csISO2022JP(39), + csISO2022JP2(40), + csISO13JISC6220jp(41), + csISO14JISC6220ro(42), + csISO16Portuguese(43), + csISO18Greek7Old(44), + csISO19LatinGreek(45), + csISO25French(46), + csISO27LatinGreek1(47), + csISO5427Cyrillic(48), + csISO42JISC62261978(49), + csISO47BSViewdata(50), + csISO49INIS(51), + csISO50INIS8(52), + csISO51INISCyrillic(53), + csISO54271981(54), + csISO5428Greek(55), + csISO57GB1988(56), + csISO58GB231280(57), + csISO61Norwegian2(58), + csISO70VideotexSupp1(59), + csISO84Portuguese2(60), + csISO85Spanish2(61), + csISO86Hungarian(62), + csISO87JISX0208(63), + csISO88Greek7(64), + csISO89ASMO449(65), + csISO90(66), + csISO91JISC62291984a(67), + csISO92JISC62991984b(68), + csISO93JIS62291984badd(69), + csISO94JIS62291984hand(70), + csISO95JIS62291984handadd(71), + csISO96JISC62291984kana(72), + csISO2033(73), + csISO99NAPLPS(74), + csISO102T617bit(75), + csISO103T618bit(76), + csISO111ECMACyrillic(77), + csa71(78), + csa72(79), + csISO123CSAZ24341985gr(80), + csISO88596E(81), + csISO88596I(82), + csISO128T101G2(83), + csISO88598E(84), + csISO88598I(85), + csISO139CSN369103(86), + csISO141JUSIB1002(87), + csISO143IECP271(88), + csISO146Serbian(89), + csISO147Macedonian(90), + csISO150(91), + csISO151Cuba(92), + csISO6937Add(93), + csISO153GOST1976874(94), + csISO8859Supp(95), + csISO10367Box(96), + csISO158Lap(97), + csISO159JISX02121990(98), + csISO646Danish(99), + csUSDK(100), + csDKUS(101), + csKSC5636(102), + csUnicode11UTF7(103), + csISO2022CN(104), + csISO2022CNEXT(105), + csUTF8(106), + csISO885913(109), + csISO885914(110), + csISO885915(111), + csISO885916(112), + csGBK(113), + csGB18030(114), + csOSDEBCDICDF0415(115), + csOSDEBCDICDF03IRV(116), + csOSDEBCDICDF041(117), + csISO115481(118), + csKZ1048(119), + csUnicode(1000), + csUCS4(1001), + csUnicodeASCII(1002), + csUnicodeLatin1(1003), + csUnicodeIBM1261(1005), + csUnicodeIBM1268(1006), + csUnicodeIBM1276(1007), + csUnicodeIBM1264(1008), + csUnicodeIBM1265(1009), + csUnicode11(1010), + csSCSU(1011), + csUTF7(1012), + csUTF16BE(1013), + csUTF16LE(1014), + csUTF16(1015), + csCESU8(1016), + csUTF32(1017), + csUTF32BE(1018), + csUTF32LE(1019), + csBOCU1(1020), + csWindows30Latin1(2000), + csWindows31Latin1(2001), + csWindows31Latin2(2002), + csWindows31Latin5(2003), + csHPRoman8(2004), + csAdobeStandardEncoding(2005), + csVenturaUS(2006), + csVenturaInternational(2007), + csDECMCS(2008), + csPC850Multilingual(2009), + csPCp852(2010), + csPC8CodePage437(2011), + csPC8DanishNorwegian(2012), + csPC862LatinHebrew(2013), + csPC8Turkish(2014), + csIBMSymbols(2015), + csIBMThai(2016), + csHPLegal(2017), + csHPPiFont(2018), + csHPMath8(2019), + csHPPSMath(2020), + csHPDesktop(2021), + csVenturaMath(2022), + csMicrosoftPublishing(2023), + csWindows31J(2024), + csGB2312(2025), + csBig5(2026), + csMacintosh(2027), + csIBM037(2028), + csIBM038(2029), + csIBM273(2030), + csIBM274(2031), + csIBM275(2032), + csIBM277(2033), + csIBM278(2034), + csIBM280(2035), + csIBM281(2036), + csIBM284(2037), + csIBM285(2038), + csIBM290(2039), + csIBM297(2040), + csIBM420(2041), + csIBM423(2042), + csIBM424(2043), + csIBM500(2044), + csIBM851(2045), + csIBM855(2046), + csIBM857(2047), + csIBM860(2048), + csIBM861(2049), + csIBM863(2050), + csIBM864(2051), + csIBM865(2052), + csIBM868(2053), + csIBM869(2054), + csIBM870(2055), + csIBM871(2056), + csIBM880(2057), + csIBM891(2058), + csIBM903(2059), + csIBBM904(2060), + csIBM905(2061), + csIBM918(2062), + csIBM1026(2063), + csIBMEBCDICATDE(2064), + csEBCDICATDEA(2065), + csEBCDICCAFR(2066), + csEBCDICDKNO(2067), + csEBCDICDKNOA(2068), + csEBCDICFISE(2069), + csEBCDICFISEA(2070), + csEBCDICFR(2071), + csEBCDICIT(2072), + csEBCDICPT(2073), + csEBCDICES(2074), + csEBCDICESA(2075), + csEBCDICESS(2076), + csEBCDICUK(2077), + csEBCDICUS(2078), + csUnknown8BiT(2079), + csMnemonic(2080), + csMnem(2081), + csVISCII(2082), + csVIQR(2083), + csKOI8R(2084), + csHZGB2312(2085), + csIBM866(2086), + csPC775Baltic(2087), + csKOI8U(2088), + csIBM00858(2089), + csIBM00924(2090), + csIBM01140(2091), + csIBM01141(2092), + csIBM01142(2093), + csIBM01143(2094), + csIBM01144(2095), + csIBM01145(2096), + csIBM01146(2097), + csIBM01147(2098), + csIBM01148(2099), + csIBM01149(2100), + csBig5HKSCS(2101), + csIBM1047(2102), + csPTCP154(2103), + csAmiga1251(2104), + csKOI7switched(2105), + csBRF(2106), + csTSCII(2107), + cswindows1250(2250), + cswindows1251(2251), + cswindows1252(2252), + cswindows1253(2253), + cswindows1254(2254), + cswindows1255(2255), + cswindows1256(2256), + cswindows1257(2257), + cswindows1258(2258), + csTIS620(2259), + reserved(3000) + } +END + diff --git a/mibs/iana/IANA-FINISHER-MIB b/mibs/iana/IANA-FINISHER-MIB new file mode 100644 index 0000000..feda6be --- /dev/null +++ b/mibs/iana/IANA-FINISHER-MIB @@ -0,0 +1,283 @@ +IANA-FINISHER-MIB DEFINITIONS ::= BEGIN + -- http://www.iana.org/assignments/ianafinisher-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianafinisherMIB MODULE-IDENTITY + LAST-UPDATED "200406020000Z" -- June 2, 2004 + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines a set of finishing-related + TEXTUAL-CONVENTIONs for use in Finisher MIB (RFC 3806) + and other MIBs which need to specify finishing + mechanism details. + + Any additions or changes to the contents of this MIB + module require either publication of an RFC, or + Designated Expert Review as defined in RFC 2434, + Guidelines for Writing an IANA Considerations Section + in RFCs. The Designated Expert will be selected by + the IESG Area Director(s) of the Applications Area. + + Copyright (C) The Internet Society (2004). The + + initial version of this MIB module was published + in RFC 3806. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406020000Z" -- June 2, 2004 + DESCRIPTION "Original version, published in coordination + with Finisher MIB (RFC 3806)." + + ::= { mib-2 110 } + +-- TEXTUAL-CONVENTIONs for this MIB module + +FinDeviceTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined finishing device subunit process + enumerations." + SYNTAX INTEGER { + other(1), + unknown(2), + stitcher(3), + folder(4), + binder(5), + trimmer(6), + dieCutter(7), + puncher(8), + perforater(9), + slitter(10), + separationCutter(11), + imprinter(12), + wrapper(13), + bander(14), + makeEnvelope(15), + stacker(16), + sheetRotator(17), + inserter(18) + } + +FinAttributeTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION defines the set of enums for use in + the finDeviceAttributeTable. See section 5.7 for the complete + specification of each attribute." + SYNTAX INTEGER { + other(1), + deviceName(3), + + deviceVendorName(4), + deviceModel(5), + deviceVersion(6), + deviceSerialNumber(7), + maximumSheets(8), + finProcessOffsetUnits(9), + finReferenceEdge(10), + finAxisOffset(11), + finJogEdge(12), + finHeadLocation(13), + finOperationRestrictions(14), + finNumberOfPositions(15), + namedConfiguration(16), + finMediaTypeRestriction(17), + finPrinterInputTraySupported(18), + finPreviousFinishingOperation(19), + finNextFinishingOperation(20), + stitchingType(30), + stitchingDirection(31), + foldingType(40), + bindingType(50), + punchHoleType(80), + punchHoleSizeLongDim(81), + punchHoleSizeShortDim(82), + punchPattern(83), + slittingType(100), + wrappingType(130), + stackOutputType(160), + stackOffset(161), + stackRotation(162) + } + +FinEdgeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies an edge for a Finishing Process." + SYNTAX INTEGER { + topEdge(3), + bottomEdge(4), + leftEdge(5), + rightEdge(6) + } + +FinStitchingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined stitching type enumerations. For the edgeStitch and + stapleDual enums, the finReferenceEdge attribute is recommended + + to define the edge to which the operation applies." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + stapleTopLeft(4), + stapleBottomLeft(5), + stapleTopRight(6), + stapleBottomRight(7), + saddleStitch(8), + edgeStitch(9), + stapleDual(10) + } + +FinStitchingDirTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Defines the direction, relative to the top sheet in the output + subunit, that the stitching operation was performed. For a + topDown(3) process, the staple will be clinched on the bottom + of the stack. This parameter can be used to determine what + order the pages of a booklet are to be printed such that the + staple clinch will be on the inside of the resulting booklet." + SYNTAX INTEGER { + unknown(2), + topDown(3), + bottomUp(4) + } + +FinStitchingAngleTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This enumeration provides a description of the angular + orientation of each stitch in a single or multiple stitching + operation, relative to the 'X' axis. As with all finishing + operations, the 'X' axis is always relative to the portrait + orientation of the document regardless of the orientation + of the printed image. This enum is primarily applicable to + corner stitching operations." + SYNTAX INTEGER { + unknown(2), + horizontal(3), + vertical(4), + slanted(5) + } + +FinFoldingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + "The defined folding device process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + zFold(3), + halfFold(4), + letterFold(5) + } + +FinBindingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined binding type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + tape(4), + plastic(5), + velo(6), + perfect(7), + spiral(8), + adhesive(9), + comb(10), + padding(11) + } + +FinPunchHoleTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined hole type punch process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + round(3), + oblong(4), + square(5), + rectangular(6), + star(7) + } + +FinPunchPatternTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined hole pattern punch process enumerations." + SYNTAX INTEGER { + other(1), --Pattern to be defined in other attributes + unknown(2), + twoHoleUSTop(4), --Letter/legal, 8.5 inch edge + + threeHoleUS(5), --Letter/ledger, 11 inch edge + twoHoleDIN(6), --A4/A3, 297 mm edge + fourHoleDIN(7), --A4/A3, 297 mm edge + twentyTwoHoleUS(8), --Letter/ledger, 11 inch edge + nineteenHoleUS(9), --Letter/ledger, 11 inch edge + twoHoleMetric(10), --B5/B4, 257 mm edge + swedish4Hole(11), --A4/A3, 297 mm edge + twoHoleUSSide(12), --Letter/ledger, 11 inch edge + fiveHoleUS(13), --Letter/ledger, 11 inch edge + sevenHoleUS(14), --Letter/ledger, 11 inch edge + mixed7H4S(15), --A4/A3, 297 mm edge + norweg6Hole(16), --A4/A3, 297 mm edge + metric26Hole(17), --B5/B4, 257 mm edge + metric30Hole(18) --A4/A3, 297 mm edge + } + +FinSlittingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined slitting type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + slitAndSeparate(4), + slitAndMerge(5) + } + +FinWrappingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined wrapping device process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + shrinkWrap(4), + paperWrap(5) + } + +FinStackOutputTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined stack output type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + straight(4), -- No offset, one on top of another + offset(5), + crissCross(6) -- Rotated + + } +END diff --git a/mibs/iana/IANA-GMPLS-TC-MIB b/mibs/iana/IANA-GMPLS-TC-MIB new file mode 100644 index 0000000..31bf3a0 --- /dev/null +++ b/mibs/iana/IANA-GMPLS-TC-MIB @@ -0,0 +1,292 @@ + +IANA-GMPLS-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- RFC 2578 + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- RFC 2579 + + ianaGmpls MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority + Postal: 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + DESCRIPTION + "Copyright (C) The IETF Trust (2007). The initial version + of this MIB module was published in RFC 4802. For full legal + notices see the RFC itself. Supplementary information + may be available on: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4802." + + ::= { mib-2 152 } + + IANAGmplsLSPEncodingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent and control + the LSP encoding type of an LSP signaled by a GMPLS + signaling protocol. + + This textual convention is strongly tied to the LSP + Encoding Types sub-registry of the GMPLS Signaling + Parameters registry managed by IANA. Values should be + assigned by IANA in step with the LSP Encoding Types + sub-registry and using the same registry management rules. + However, the actual values used in this textual convention + are solely within the purview of IANA and do not + necessarily match the values in the LSP Encoding Types + sub-registry. + + 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&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1. + 2. Generalized MPLS Signalling Extensions for G.709 Optical + Transport Networks Control, RFC 4328, section 3.1.1." + SYNTAX INTEGER { + tunnelLspNotGmpls(0), -- GMPLS is not in use + tunnelLspPacket(1), -- Packet + tunnelLspEthernet(2), -- Ethernet + tunnelLspAnsiEtsiPdh(3), -- PDH + -- the value 4 is deprecated + tunnelLspSdhSonet(5), -- SDH or SONET + -- the value 6 is deprecated + tunnelLspDigitalWrapper(7), -- Digital Wrapper + tunnelLspLambda(8), -- Lambda + tunnelLspFiber(9), -- Fiber + -- the value 10 is deprecated + tunnelLspFiberChannel(11), -- Fiber Channel + + tunnelDigitalPath(12), -- Digital Path + tunnelOpticalChannel(13) -- Optical Channel + } + + IANAGmplsSwitchingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent and + control the LSP switching type of an LSP signaled by a + GMPLS signaling protocol. + + This textual convention is strongly tied to the Switching + Types sub-registry of the GMPLS Signaling Parameters + registry managed by IANA. Values should be assigned by + IANA in step with the Switching Types sub-registry and + using the same registry management rules. However, the + actual values used in this textual convention are solely + within the purview of IANA and do not necessarily match + the values in the Switching Types sub-registry. + + 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&iana.org)." + REFERENCE + "1. Routing Extensions in Support of Generalized + Multi-Protocol Label Switching, RFC 4202, section 2.4. + 2. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1." + SYNTAX INTEGER { + unknown(0), -- none of the following, or not known + psc1(1), -- Packet-Switch-Capable 1 + psc2(2), -- Packet-Switch-Capable 2 + psc3(3), -- Packet-Switch-Capable 3 + psc4(4), -- Packet-Switch-Capable 4 + l2sc(51), -- Layer-2-Switch-Capable + tdm(100), -- Time-Division-Multiplex + lsc(150), -- Lambda-Switch-Capable + fsc(200) -- Fiber-Switch-Capable + } + + IANAGmplsGeneralizedPidTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to represent and control the LSP + Generalized Protocol Identifier (G-PID) of an LSP + signaled by a GMPLS signaling protocol. + + This textual convention is strongly tied to the Generalized + PIDs (G-PID) sub-registry of the GMPLS Signaling Parameters + registry managed by IANA. Values should be assigned by + IANA in step with the Generalized PIDs (G-PID) sub-registry + and using the same registry management rules. However, the + actual values used in this textual convention are solely + within the purview of IANA and do not necessarily match the + values in the Generalized PIDs (G-PID) sub-registry. + + 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&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1. + 2. Generalized MPLS Signalling Extensions for G.709 Optical + Transport Networks Control, RFC 4328, section 3.1.3." + SYNTAX INTEGER { + unknown(0), -- unknown or none of the following + -- the values 1, 2, 3 and 4 are reserved in RFC 3471 + asynchE4(5), + asynchDS3T3(6), + asynchE3(7), + bitsynchE3(8), + bytesynchE3(9), + asynchDS2T2(10), + bitsynchDS2T2(11), + reservedByRFC3471first(12), + asynchE1(13), + bytesynchE1(14), + bytesynch31ByDS0(15), + asynchDS1T1(16), + bitsynchDS1T1(17), + + bytesynchDS1T1(18), + vc1vc12(19), + reservedByRFC3471second(20), + reservedByRFC3471third(21), + ds1SFAsynch(22), + ds1ESFAsynch(23), + ds3M23Asynch(24), + ds3CBitParityAsynch(25), + vtLovc(26), + stsSpeHovc(27), + posNoScramble16BitCrc(28), + posNoScramble32BitCrc(29), + posScramble16BitCrc(30), + posScramble32BitCrc(31), + atm(32), + ethernet(33), + sdhSonet(34), + digitalwrapper(36), + lambda(37), + ansiEtsiPdh(38), + lapsSdh(40), + fddi(41), + dqdb(42), + fiberChannel3(43), + hdlc(44), + ethernetV2DixOnly(45), + ethernet802dot3Only(46), + g709ODUj(47), + g709OTUk(48), + g709CBRorCBRa(49), + g709CBRb(50), + g709BSOT(51), + g709BSNT(52), + gfpIPorPPP(53), + gfpEthernetMAC(54), + gfpEthernetPHY(55), + g709ESCON(56), + g709FICON(57), + g709FiberChannel(58) + } + + IANAGmplsAdminStatusInformationTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type determines the setting of the + Admin Status flags in the Admin Status object or TLV, as + described in RFC 3471. Setting this object to a non-zero + value will result in the inclusion of the Admin Status + + object or TLV on signaling messages. + + This textual convention is strongly tied to the + Administrative Status Information Flags sub-registry of + the GMPLS Signaling Parameters registry managed by IANA. + Values should be assigned by IANA in step with the + Administrative Status Flags sub-registry and using the + same registry management rules. However, the actual + values used in this textual convention are solely + within the purview of IANA and do not necessarily match + the values in the Administrative Status Information + Flags sub-registry. + + 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&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section 8. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, + RFC 3473, section 7. + 3. GMPLS - Communication of Alarm Information, + RFC 4783, section 3.2.1." + SYNTAX BITS { + reflect(0), -- Reflect bit (RFC 3471) + reserved1(1), -- reserved + reserved2(2), -- reserved + reserved3(3), -- reserved + reserved4(4), -- reserved + reserved5(5), -- reserved + reserved6(6), -- reserved + reserved7(7), -- reserved + reserved8(8), -- reserved + reserved9(9), -- reserved + reserved10(10), -- reserved + reserved11(11), -- reserved + reserved12(12), -- reserved + reserved13(13), -- reserved + reserved14(14), -- reserved + reserved15(15), -- reserved + reserved16(16), -- reserved + + reserved17(17), -- reserved + reserved18(18), -- reserved + reserved19(19), -- reserved + reserved20(20), -- reserved + reserved21(21), -- reserved + reserved22(22), -- reserved + reserved23(23), -- reserved + reserved24(24), -- reserved + reserved25(25), -- reserved + reserved26(26), -- reserved + reserved27(27), -- Inhibit Alarm bit (RFC 4783) + reserved28(28), -- reserved + testing(29), -- Testing bit (RFC 3473) + administrativelyDown(30), -- Admin down (RFC 3473) + deleteInProgress(31) -- Delete bit (RFC 3473) + } +END + diff --git a/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB b/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB new file mode 100644 index 0000000..ea85137 --- /dev/null +++ b/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB @@ -0,0 +1,448 @@ +IANA-IPPM-METRICS-REGISTRY-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-IDENTITY, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI; + + ianaIppmMetricsRegistry MODULE-IDENTITY + LAST-UPDATED "200612040000Z" -- December 04, 2006 + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION + + "This module defines a registry for IP Performance Metrics. + + Registrations are done sequentially by IANA in the ianaIppmMetrics + subtree on the bases of 'Specification Required' as defined in + [RFC2434]. + + The reference of the specification must point to a stable document + including a title, a revision and a date. + + The name always starts with the name of the organization and must + respect the SMIv2 rules for descriptors defined in the section 3.1 + of [RFC2578]; + + A document that creates new metrics would have an IANA + considerations section in which it would describe new metrics to + register. + + An OBJECT IDENTITY assigned to a metric is definitive and cannot + be reused. If a new version of a metric is produced then it is + assigned with a new name and a new identifier. + + Copyright (C) The Internet Society (2005). The initial version of + this MIB module was published in RFC 4148; for full legal notices + see the RFC itself or see: + http://www.ietf.org/copyrights/ianamib.html. " + + REVISION "200612040000Z" -- September 27, 2006 + DESCRIPTION + "Added values 34-45 as published in RFC4737." + + + REVISION "200504120000Z" -- April 12th, 2005 + DESCRIPTION + "Initial version of the IPPM metrics registry module. + This version published as RFC 4148." + ::= { mib-2 128 } + + ianaIppmMetrics OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Registration point for IP Performance Metrics." + ::= { ianaIppmMetricsRegistry 1 } + + -- + -- Registry of the metrics of the IPPM WG RFCs + -- + + -- + -- RFC 2678 " IPPM Metrics for Measuring Connectivity" + -- + + ietfInstantUnidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Instantaneous-Unidirectional-Connectivity" + REFERENCE "RFC2678, section 2." + ::= { ianaIppmMetrics 1} + + ietfInstantBidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Instantaneous-Bidirectional-Connectivity" + REFERENCE "RFC2678, section 3." + ::= { ianaIppmMetrics 2} + + ietfIntervalUnidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Interval-Unidirectional-Connectivity" + REFERENCE "RFC2678, section 4." + ::= { ianaIppmMetrics 3 } + + ietfIntervalBidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Interval-Bidirectional-Connectivity" + REFERENCE "RFC2678, section 5." + ::= { ianaIppmMetrics 4 } + + ietfIntervalTemporalConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P1-P2-Interval-Temporal-Connectivity" + REFERENCE "RFC2678, section 6." + ::= { ianaIppmMetrics 5 } + + + + + -- + -- RFC 2679 "A One-way Delay Metric for IPPM" + -- + + ietfOneWayDelay OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay" + REFERENCE "RFC2679, section 3." + ::= { ianaIppmMetrics 6 } + + ietfOneWayDelayPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Poisson-Stream" + REFERENCE "RFC2679, section 4." + ::= { ianaIppmMetrics 7 } + + ietfOneWayDelayPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Percentile" + REFERENCE "RFC2679, section 5.1." + ::= { ianaIppmMetrics 8 } + + ietfOneWayDelayMedian OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Median" + REFERENCE "RFC2679, section 5.2." + ::= { ianaIppmMetrics 9 } + + ietfOneWayDelayMinimum OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Minimum" + REFERENCE "RFC2679, section 5.3." + ::= { ianaIppmMetrics 10 } + + ietfOneWayDelayInversePercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Inverse-Percentile" + REFERENCE "RFC2679, section 5.4." + ::= { ianaIppmMetrics 11 } + + -- + -- RFC 2680 "One Way Packet Loss Metric for IPPM" + -- + + ietfOneWayPktLoss OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss" + REFERENCE "RFC2680, section 2." + ::= { ianaIppmMetrics 12 } + + ietfOneWayPktLossPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss-Poisson-Stream" + REFERENCE "RFC2680, section 3." + ::= { ianaIppmMetrics 13 } + + ietfOneWayPktLossAverage OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss-Average" + REFERENCE "RFC2680, section 4." + ::= { ianaIppmMetrics 14 } + + + + + -- + -- RFC2681 "A Round-trip Delay Metric for IPPM" + -- + + ietfRoundTripDelay OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay" + REFERENCE " section 2 of the rfc2681." + ::= { ianaIppmMetrics 15 } + + ietfRoundTripDelayPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Poisson-Stream" + REFERENCE "RFC2681, section 4." + ::= { ianaIppmMetrics 16 } + + ietfRoundTripDelayPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Percentile" + REFERENCE "RFC2681, section 4.1." + ::= { ianaIppmMetrics 17 } + + ietfRoundTripDelayMedian OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Median" + REFERENCE "RFC2681, section 4.2." + ::= { ianaIppmMetrics 18 } + + ietfRoundTripDelayMinimum OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Minimum" + REFERENCE "RFC2681, section 4.3." + ::= { ianaIppmMetrics 19 } + + ietfRoundTripDelayInvPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Inverse-Percentile" + REFERENCE "RFC2681, section 4.4." + ::= { ianaIppmMetrics 20 } + + + + + -- + -- RFC3357: "One-way Loss Pattern Sample Metrics" + -- + + ietfOneWayLossDistanceStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Distance-Stream" + REFERENCE " RFC3357, section 5.4.1." + ::={ ianaIppmMetrics 21} + + ietfOneWayLossPeriodStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Stream" + REFERENCE " RFC3357, section 5.4.2." + ::={ ianaIppmMetrics 22} + + ietfOneWayLossNoticeableRate OBJECT-IDENTITY + + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Noticeable-Rate" + REFERENCE " RFC3357, section 6.1." + ::= { ianaIppmMetrics 23 } + + ietfOneWayLossPeriodTotal OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Total" + REFERENCE " RFC3357, section 6.2." + ::= { ianaIppmMetrics 24 } + + ietfOneWayLossPeriodLengths OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Lengths" + REFERENCE " RFC3357, section 6.3." + ::= { ianaIppmMetrics 25 } + + ietfOneWayInterLossPeriodLengths OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Inter-Loss-Period-Lengths" + REFERENCE " RFC3357, section 6.4." + ::= { ianaIppmMetrics 26 } + + + + + -- + -- RFC3393: + -- IP Packet Delay Variation Metric for IP Performance Metrics (IPPM) + + ietfOneWayIpdv OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv" + REFERENCE " RFC3393, section 2." + ::= { ianaIppmMetrics 27 } + + ietfOneWayIpdvPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-Poisson-stream" + REFERENCE " RFC3393, section 3." + ::= { ianaIppmMetrics 28 } + + ietfOneWayIpdvPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-percentile" + REFERENCE " RFC3393, section 4.3." + ::= { ianaIppmMetrics 29 } + + ietfOneWayIpdvInversePercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-inverse-percentile" + REFERENCE " RFC3393, section 4.4." + ::= { ianaIppmMetrics 30 } + + ietfOneWayIpdvJitter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-jitter" + REFERENCE " RFC3393, section 4.5." + ::= { ianaIppmMetrics 31 } + + ietfOneWayPeakToPeakIpdv OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-peak-to-peak-ipdv" + REFERENCE " RFC3393, section 4.6." + ::= { ianaIppmMetrics 32 } + + + + -- + -- RFC3432: "Network performance measurement with periodic streams" + -- + + ietfOneWayDelayPeriodicStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Periodic-Stream" + REFERENCE " RFC3432, section 4." + ::= { ianaIppmMetrics 33 } + + + + -- + -- RFC4737 "Packet Reordering Metric for IPPM" + -- + + ietfReorderedSingleton OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Reordered" + REFERENCE + "Reference RFC4737, section 3" + ::= { ianaIppmMetrics 34 } + + ietfReorderedPacketRatio OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Reordered-Ratio-Stream" + REFERENCE + "Reference RFC4737, section 4.1" + ::= { ianaIppmMetrics 35 } + + ietfReorderingExtent OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Extent-Stream" + REFERENCE + "Reference RFC4737, section 4.2" + ::= { ianaIppmMetrics 36 } + + ietfReorderingLateTimeOffset OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Late-Time-Stream" + REFERENCE + "Reference RFC4737, section 4.3" + ::= { ianaIppmMetrics 37 } + + ietfReorderingByteOffset OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Byte-Offset-Stream" + REFERENCE + "Reference RFC4737, section 4.4" + ::= { ianaIppmMetrics 38 } + + ietfReorderingGap OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Gap-Stream" + REFERENCE + "Reference RFC4737, section 4.5" + ::= { ianaIppmMetrics 39 } + + ietfReorderingGapTime OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-GapTime-Stream" + REFERENCE + "Reference RFC4737, section 4.5" + ::= { ianaIppmMetrics 40 } + + ietfReorderingFreeRunx OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-x-numruns-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 41 } + + ietfReorderingFreeRunq OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-q-squruns-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 42 } + + ietfReorderingFreeRunp OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-p-numpkts-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 43 } + + ietfReorderingFreeRuna OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-a-accpkts-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 44 } + + ietfnReordering OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-n-Reordering-Stream" + REFERENCE + "Reference RFC4737, section 5" + ::= { ianaIppmMetrics 45 } + + + END + + + diff --git a/mibs/iana/IANA-ITU-ALARM-TC-MIB b/mibs/iana/IANA-ITU-ALARM-TC-MIB new file mode 100644 index 0000000..7c0da3e --- /dev/null +++ b/mibs/iana/IANA-ITU-ALARM-TC-MIB @@ -0,0 +1,333 @@ +IANA-ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaItuAlarmNumbers MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module defines the ITU Alarm + textual convention for objects expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 119 } + + + IANAItuProbableCause ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU-T probable cause values. Duplicate values defined in + X.733 are appended with X733 to ensure syntactic uniqueness. + Probable cause value 0 is reserved for special purposes. + + The Internet Assigned Number Authority (IANA) is responsible + for the assignment of the enumerations in this TC. + IANAItuProbableCause value of 0 is reserved for special + purposes and MUST NOT be assigned. + + Values of IANAItuProbableCause in the range 1 to 1023 are + reserved for causes that correspond to ITU-T probable cause. + + All other requests for new causes will be handled on a + first-come, first served basis and will be assigned + enumeration values starting with 1025. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique and + sufficiently descriptive. + + While some effort will be taken to ensure that new probable + causes do not conceptually duplicate existing probable + causes it is acknowledged that the existence of conceptual + duplicates in the starting probable cause list is an known + industry reality. + + To aid IANA in the administration of probable cause names + and values, the OPS Area Director will appoint one or more + experts to help review requests. + + See http://www.iana.org" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + + SYNTAX INTEGER + { + -- The following probable causes were defined in M.3100 + aIS (1), + callSetUpFailure (2), + degradedSignal (3), + farEndReceiverFailure (4), + framingError (5), + lossOfFrame (6), + lossOfPointer (7), + lossOfSignal (8), + payloadTypeMismatch (9), + transmissionError (10), + remoteAlarmInterface (11), + excessiveBER (12), + pathTraceMismatch (13), + unavailable (14), + signalLabelMismatch (15), + lossOfMultiFrame (16), + receiveFailure (17), + transmitFailure (18), + modulationFailure (19), + demodulationFailure (20), + broadcastChannelFailure (21), + connectionEstablishmentError (22), + invalidMessageReceived (23), + localNodeTransmissionError (24), + remoteNodeTransmissionError (25), + routingFailure (26), + --Values 27-50 are reserved for communications alarm related + --probable causes + -- The following are used with equipment alarm. + backplaneFailure (51), + dataSetProblem (52), + equipmentIdentifierDuplication (53), + externalIFDeviceProblem (54), + lineCardProblem (55), + multiplexerProblem (56), + nEIdentifierDuplication (57), + powerProblem (58), + processorProblem (59), + protectionPathFailure (60), + receiverFailure (61), + replaceableUnitMissing (62), + replaceableUnitTypeMismatch (63), + synchronizationSourceMismatch (64), + terminalProblem (65), + timingProblem (66), + transmitterFailure (67), + trunkCardProblem (68), + replaceableUnitProblem (69), + realTimeClockFailure (70), + --An equipment alarm to be issued if the system detects that the + --real time clock has failed + antennaFailure (71), + batteryChargingFailure (72), + diskFailure (73), + frequencyHoppingFailure (74), + iODeviceError (75), + lossOfSynchronisation (76), + lossOfRedundancy (77), + powerSupplyFailure (78), + signalQualityEvaluationFailure (79), + tranceiverFailure (80), + protectionMechanismFailure (81), + protectingResourceFailure (82), + -- Values 83-100 are reserved for equipment alarm related probable + -- causes + -- The following are used with environmental alarm. + airCompressorFailure (101), + airConditioningFailure (102), + airDryerFailure (103), + batteryDischarging (104), + batteryFailure (105), + commercialPowerFailure (106), + coolingFanFailure (107), + engineFailure (108), + fireDetectorFailure (109), + fuseFailure (110), + generatorFailure (111), + lowBatteryThreshold (112), + pumpFailure (113), + rectifierFailure (114), + rectifierHighVoltage (115), + rectifierLowFVoltage (116), + ventilationsSystemFailure (117), + enclosureDoorOpen (118), + explosiveGas (119), + fire (120), + flood (121), + highHumidity (122), + highTemperature (123), + highWind (124), + iceBuildUp (125), + intrusionDetection (126), + lowFuel (127), + lowHumidity (128), + lowCablePressure (129), + lowTemperatue (130), + lowWater (131), + smoke (132), + toxicGas (133), + coolingSystemFailure (134), + externalEquipmentFailure (135), + externalPointFailure (136), + -- Values 137-150 are reserved for environmental alarm related + -- probable causes + -- The following are used with Processing error alarm. + storageCapacityProblem (151), + memoryMismatch (152), + corruptData (153), + outOfCPUCycles (154), + sfwrEnvironmentProblem (155), + sfwrDownloadFailure (156), + lossOfRealTimel (157), + --A processing error alarm to be issued after the system has + --reinitialised. This will indicate + --to the management systems that the view they have of the managed + --system may no longer + --be valid. Usage example: The managed + --system issues this alarm after a reinitialization with severity + --warning to inform the + --management system about the event. No clearing notification will + --be sent. + applicationSubsystemFailure (158), + configurationOrCustomisationError (159), + databaseInconsistency (160), + fileError (161), + outOfMemory (162), + softwareError (163), + timeoutExpired (164), + underlayingResourceUnavailable (165), + versionMismatch (166), + --Values 168-200 are reserved for processing error alarm related + -- probable causes. + bandwidthReduced (201), + congestion (202), + excessiveErrorRate (203), + excessiveResponseTime (204), + excessiveRetransmissionRate (205), + reducedLoggingCapability (206), + systemResourcesOverload (207 ), + -- The following were defined X.733 + adapterError (500), + applicationSubsystemFailture (501), + bandwidthReducedX733 (502), + callEstablishmentError (503), + communicationsProtocolError (504), + communicationsSubsystemFailure (505), + configurationOrCustomizationError (506), + congestionX733 (507), + coruptData (508), + cpuCyclesLimitExceeded (509), + dataSetOrModemError (510), + degradedSignalX733 (511), + dteDceInterfaceError (512), + enclosureDoorOpenX733 (513), + equipmentMalfunction (514), + excessiveVibration (515), + fileErrorX733 (516), + fireDetected (517), + framingErrorX733 (518), + heatingVentCoolingSystemProblem (519), + humidityUnacceptable (520), + inputOutputDeviceError (521), + inputDeviceError (522), + lanError (523), + leakDetected (524), + localNodeTransmissionErrorX733 (525), + lossOfFrameX733 (526), + lossOfSignalX733 (527), + materialSupplyExhausted (528), + multiplexerProblemX733 (529), + outOfMemoryX733 (530), + ouputDeviceError (531), + performanceDegraded (532), + powerProblems (533), + pressureUnacceptable (534), + processorProblems (535), + pumpFailureX733 (536), + queueSizeExceeded (537), + receiveFailureX733 (538), + receiverFailureX733 (539), + remoteNodeTransmissionErrorX733 (540), + resourceAtOrNearingCapacity (541), + responseTimeExecessive (542), + retransmissionRateExcessive (543), + softwareErrorX733 (544), + softwareProgramAbnormallyTerminated (545), + softwareProgramError (546), + storageCapacityProblemX733 (547), + temperatureUnacceptable (548), + thresholdCrossed (549), + timingProblemX733 (550), + toxicLeakDetected (551), + transmitFailureX733 (552), + transmiterFailure (553), + underlyingResourceUnavailable (554), + versionMismatchX733 (555), + -- The following are defined in X.736 + authenticationFailure (600), + breachOfConfidentiality (601), + cableTamper (602), + delayedInformation (603), + denialOfService (604), + duplicateInformation (605), + informationMissing (606), + informationModificationDetected (607), + informationOutOfSequence (608), + keyExpired (609), + nonRepudiationFailure (610), + outOfHoursActivity (611), + outOfService (612), + proceduralError (613), + unauthorizedAccessAttempt (614), + unexpectedInformation (615), + + other (1024) + } + + IANAItuEventType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ITU event Type values. + + The Internet Assigned Number Authority (IANA) is + responsible for the assignment of the enumerations + in this TC. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique + and sufficiently descriptive. + + See http://www.iana.org " + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + SYNTAX INTEGER + { + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmentalAlarm (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation (9), + securityServiceOrMechanismViolation (10), + timeDomainViolation (11) + } + + END diff --git a/mibs/iana/IANA-LANGUAGE-MIB b/mibs/iana/IANA-LANGUAGE-MIB new file mode 100644 index 0000000..6210f72 --- /dev/null +++ b/mibs/iana/IANA-LANGUAGE-MIB @@ -0,0 +1,127 @@ + + IANA-LANGUAGE-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI; + + ianaLanguages MODULE-IDENTITY + LAST-UPDATED "200005100000Z" -- May 10, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority (IANA) + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 x20 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module registers object identifier values for + well-known programming and scripting languages. Every + language registration MUST describe the format used + when transferring scripts written in this language. + + Any additions or changes to the contents of this MIB + module require Designated Expert Review as defined in + the Guidelines for Writing IANA Considerations Section + document. The Designated Expert will be selected by + the IESG Area Director of the OPS Area. + + Note, this module does not have to register all possible + languages since languages are identified by object + identifier values. It is therefore possible to registered + languages in private OID trees. The references given below are not + normative with regard to the language version. Other + references might be better suited to describe some newer + versions of this language. The references are only + provided as `a pointer into the right direction'." + + -- Revision log, in reverse chronological order + + REVISION "200005100000Z" -- May 10, 2000 + DESCRIPTION "Import mib-2 instead of experimental, so that + this module compiles" + + REVISION "199909090900Z" -- September 9, 1999 + DESCRIPTION "Initial version as published at time of + publication of RFC 2591." + + ::= { mib-2 73 } + + + ianaLangJavaByteCode OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Java byte code to be processed by a Java virtual machine. + A script written in Java byte code is transferred by using + the Java archive file format (JAR)." + REFERENCE + "The Java Virtual Machine Specification. + ISBN 0-201-63452-X" + ::= { ianaLanguages 1 } + + ianaLangTcl OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Tool Command Language (Tcl). A script written in the + Tcl language is transferred in Tcl source code format." + REFERENCE + "Tcl and the Tk Toolkit. + ISBN 0-201-63337-X" + ::= { ianaLanguages 2 } + + ianaLangPerl OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Perl language. A script written in the Perl language + is transferred in Perl source code format." + REFERENCE + "Programming Perl. + ISBN 1-56592-149-6" + ::= { ianaLanguages 3 } + + ianaLangScheme OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Scheme language. A script written in the Scheme + language is transferred in Scheme source code format." + REFERENCE + "The Revised^4 Report on the Algorithmic Language Scheme. + MIT Press" + ::= { ianaLanguages 4 } + + ianaLangSRSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP Script Language defined by SNMP Research. A + script written in the SNMP Script Language is transferred + in the SNMP Script Language source code format." + ::= { ianaLanguages 5 } + + ianaLangPSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Patrol Script Language defined by BMC Software. A script + written in the Patrol Script Language is transferred in the + Patrol Script Language source code format." + REFERENCE + "PATROL Script Language Reference Manual, Version 3.0, + November 30, 1995. BMC Software, Inc. 2101 City West Blvd., + Houston, Texas 77042." + ::= { ianaLanguages 6 } + + ianaLangSMSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Systems Management Scripting Language. A script written + in the SMSL language is transferred in the SMSL source code + format." + REFERENCE + "ISO/ITU Command Sequencer. + ISO 10164-21 or ITU X.753" + ::= { ianaLanguages 7 } + + END + diff --git a/mibs/iana/IANA-MALLOC-MIB b/mibs/iana/IANA-MALLOC-MIB new file mode 100644 index 0000000..7c007f5 --- /dev/null +++ b/mibs/iana/IANA-MALLOC-MIB @@ -0,0 +1,67 @@ + +IANA-MALLOC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ianaMallocMIB MODULE-IDENTITY + LAST-UPDATED "200301271200Z" -- January 27, 2003 + ORGANIZATION "IANA" + CONTACT-INFO + " Internet Assigned Numbers Authority + Internet Corporation for Assigned Names and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + + Phone: +1 310 823 9358 + EMail: iana&iana.org" + DESCRIPTION + "This MIB module defines the IANAscopeSource and + IANAmallocRangeSource textual conventions for use in MIBs + which need to identify ways of learning multicast scope and + range information. + + Any additions or changes to the contents of this MIB module + require either publication of an RFC, or Designated Expert + Review as defined in the Guidelines for Writing IANA + Considerations Section document. The Designated Expert will + be selected by the IESG Area Director(s) of the Transport + Area." + + -- revision log + + REVISION "200301271200Z" -- January 27, 2003 + DESCRIPTION + "Initial version." + ::= { mib-2 102 } + +IANAscopeSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source of multicast scope information." + SYNTAX INTEGER { + other(1), -- none of the following + manual(2), -- statically configured + local(3), -- automatically added by the system, + -- such as a Source-Specific Multicast + -- scope + mzap(4), -- MZAP + madcap(5) -- MADCAP + } + +IANAmallocRangeSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source of multicast address allocation range + information." + SYNTAX INTEGER { + other(1), -- none of the following + manual(2), -- statically configured + local(3) -- automatically added by the system, + -- such as a Source-Specific Multicast + -- range + } + +END + diff --git a/mibs/iana/IANA-MAU-MIB b/mibs/iana/IANA-MAU-MIB new file mode 100644 index 0000000..35c3f4a --- /dev/null +++ b/mibs/iana/IANA-MAU-MIB @@ -0,0 +1,770 @@ +IANA-MAU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ; + + ianaMauMIB MODULE-IDENTITY + LAST-UPDATED "200704210000Z" -- April 21, 2007 + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1-310-823-9358 + EMail: iana&iana.org" + + DESCRIPTION + "This MIB module defines dot3MauType OBJECT-IDENTITIES and + IANAifMauListBits, IANAifMauMediaAvailable, + IANAifMauAutoNegCapBits, and IANAifJackType + + TEXTUAL-CONVENTIONs, specifying enumerated values of the + ifMauTypeListBits, ifMauMediaAvailable / rpMauMediaAvailable, + ifMauAutoNegCapabilityBits / ifMauAutoNegCapAdvertisedBits / + ifMauAutoNegCapReceivedBits and ifJackType / rpJackType objects + respectively, defined in the MAU-MIB. + + It is intended that each new MAU type, Media Availability + state, Auto Negotiation capability and/or Jack type defined by + the IEEE 802.3 working group and approved for publication in a + revision of IEEE Std 802.3 will be added to this MIB module, + provided that it is suitable for being managed by the base + objects in the MAU-MIB. An Expert Review, as defined in + RFC 2434 [RFC2434], is REQUIRED for such additions. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for + Information technology - Telecommunications and information + exchange between systems - Local and metropolitan area + networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications'. + + This reference should be updated as appropriate when new + MAU types, Media Availability states, Auto Negotiation + capabilities, and/or Jack types are added to this MIB module. + + Copyright (C) The IETF Trust (2007). + The initial version of this MIB module was published in + RFC 4836; for full legal notices see the RFC itself. + Supplementary information may be available at: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200704210000Z" -- April 21, 2007 + DESCRIPTION "Initial version of this MIB as published in + RFC 4836." + ::= { mib-2 154 } + + -- Textual Conventions + + IANAifMauTypeListBits ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the ifMauTypeListBits + object in the (updated) definition of MAU-MIB's ifMauTable. + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org). + + Note that changes in this textual convention SHALL be + synchronized with relevant changes in the dot3MauType + OBJECT-IDENTITIES." + REFERENCE + "[IEEE802.3], Section 30.5.1.1.2" + SYNTAX BITS { + bOther(0), -- other or unknown + bAUI(1), -- AUI + b10base5(2), -- 10BASE-5 + bFoirl(3), -- FOIRL + + b10base2(4), -- 10BASE-2 + b10baseT(5), -- 10BASE-T duplex mode unknown + b10baseFP(6), -- 10BASE-FP + b10baseFB(7), -- 10BASE-FB + b10baseFL(8), -- 10BASE-FL duplex mode unknown + b10broad36(9), -- 10BROAD36 + b10baseTHD(10), -- 10BASE-T half duplex mode + b10baseTFD(11), -- 10BASE-T full duplex mode + b10baseFLHD(12), -- 10BASE-FL half duplex mode + b10baseFLFD(13), -- 10BASE-FL full duplex mode + b100baseT4(14), -- 100BASE-T4 + b100baseTXHD(15), -- 100BASE-TX half duplex mode + b100baseTXFD(16), -- 100BASE-TX full duplex mode + b100baseFXHD(17), -- 100BASE-FX half duplex mode + b100baseFXFD(18), -- 100BASE-FX full duplex mode + b100baseT2HD(19), -- 100BASE-T2 half duplex mode + b100baseT2FD(20), -- 100BASE-T2 full duplex mode + + b1000baseXHD(21), -- 1000BASE-X half duplex mode + b1000baseXFD(22), -- 1000BASE-X full duplex mode + b1000baseLXHD(23), -- 1000BASE-LX half duplex mode + b1000baseLXFD(24), -- 1000BASE-LX full duplex mode + b1000baseSXHD(25), -- 1000BASE-SX half duplex mode + b1000baseSXFD(26), -- 1000BASE-SX full duplex mode + b1000baseCXHD(27), -- 1000BASE-CX half duplex mode + b1000baseCXFD(28), -- 1000BASE-CX full duplex mode + b1000baseTHD(29), -- 1000BASE-T half duplex mode + b1000baseTFD(30), -- 1000BASE-T full duplex mode + + b10GbaseX(31), -- 10GBASE-X + b10GbaseLX4(32), -- 10GBASE-LX4 + + b10GbaseR(33), -- 10GBASE-R + b10GbaseER(34), -- 10GBASE-ER + b10GbaseLR(35), -- 10GBASE-LR + b10GbaseSR(36), -- 10GBASE-SR + b10GbaseW(37), -- 10GBASE-W + b10GbaseEW(38), -- 10GBASE-EW + b10GbaseLW(39), -- 10GBASE-LW + b10GbaseSW(40), -- 10GBASE-SW + -- new since RFC 3636 + b10GbaseCX4(41), -- 10GBASE-CX4 + b2BaseTL(42), -- 2BASE-TL + b10PassTS(43), -- 10PASS-TS + b100BaseBX10D(44), -- 100BASE-BX10D + b100BaseBX10U(45), -- 100BASE-BX10U + b100BaseLX10(46), -- 100BASE-LX10 + b1000BaseBX10D(47), -- 1000BASE-BX10D + b1000BaseBX10U(48), -- 1000BASE-BX10U + b1000BaseLX10(49), -- 1000BASE-LX10 + b1000BasePX10D(50), -- 1000BASE-PX10D + b1000BasePX10U(51), -- 1000BASE-PX10U + b1000BasePX20D(52), -- 1000BASE-PX20D + b1000BasePX20U(53) -- 1000BASE-PX20U + } + + IANAifMauMediaAvailable ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + ifMauMediaAvailable and rpMauMediaAvailable objects in the + (updated) definition of MAU-MIB's ifMauTable and rpMauTable + respectively. + + Possible values are: + other(1) - undefined (not listed below) + unknown(2) - MAU's true state is unknown; e.g., + during initialization + available(3) - link, light, or loopback is normal + notAvailable(4) - link loss, low light, or no loopback + remoteFault(5) - a fault has been detected at the + remote end of the link. This value + applies to 10BASE-FB, 100BASE-T4 Far + End Fault Indication and non-specified + remote faults from a system running + auto-negotiation + invalidSignal(6) - invalid signal has been received from + the other end of the link, 10BASE-FB + only + remoteJabber(7) - remote fault, due to jabber + + remoteLinkLoss(8) - remote fault, due to link loss + remoteTest(9) - remote fault, due to test + offline(10) - offline, Clause 37 Auto-Negotiation + only + autoNegError(11) - Auto-Negotiation Error, Clause 37 + Auto-Negotiation only + pmdLinkFault(12) - PMA/PMD receive link fault. In case + of PAF (2BASE-TL / 10PASS-TS PHYs), + all PMEs in the aggregation group have + detected a link fault + wisFrameLoss(13) - WIS loss of frame, 10GBASE-W only + wisSignalLoss(14) - WIS loss of signal, 10GBASE-W only + pcsLinkFault(15) - PCS receive link fault + excessiveBER(16) - PCS Bit Error Ratio monitor + reporting excessive error ratio + dxsLinkFault(17) - DTE XGXS receive link fault, XAUI only + pxsLinkFault(18) - PHY XGXS receive link fault, XAUI only + availableReduced(19) - link normal, reduced bandwidth, + 2BASE-TL / 10PASS-TS only + ready(20) - at least one PME in the aggregation + group is detecting handshake tones, + 2BASE-TL / 10PASS-TS only + + If the MAU is a 10M b/s link or fiber type (FOIRL, 10BASE-T, + 10BASE-F), then this is equivalent to the link test fail + state/low light function. For an AUI, 10BASE2, 10BASE5, or + 10BROAD36 MAU, this indicates whether loopback is detected on + the DI circuit. The value of this attribute persists between + packets for MAU types AUI, 10BASE5, 10BASE2, 10BROAD36, and + 10BASEFP. + + At power-up or following a reset, the Media Available state + will be unknown(2) for AUI, 10BASE5, 10BASE2, 10BROAD36, and + 10BASE-FP MAUs. For these MAUs loopback will be tested on each + transmission during which no collision is detected. + If DI is receiving input when DO returns to IDL after a + transmission and there has been no collision during the + transmission, then loopback will be detected. The Media + Available state will only change during noncollided + transmissions for AUI, 10BASE2, 10BASE5, 10BROAD36, and + 10BASE-FP MAUs. + + For 100BASE-T2, 100BASE-T4, 100BASE-TX, 100BASE-FX, + 100BASE-LX10, and 100BASE-BX10 PHYs the enumerations match the + states within the link integrity state diagram. + Any MAU that implements management of [IEEE802.3] Clause + 28 Auto-Negotiation, will map remote fault indication to + remoteFault(5). + + Any MAU that implements management of Clause 37 + Auto-Negotiation, will map the received RF1 and RF2 bits as + follows: Offline maps to offline(10), Link_Failure maps to + remoteFault(5), and Auto-Negotiation Error maps to + autoNegError(11). + + The value remoteFault(5) applies to 10BASE-FB remote + fault indication, the 100BASE-X far-end fault indication, and + nonspecified remote faults from a system running Clause 28 + Auto-Negotiation. + + The value remoteJabber(7), remoteLink loss(8), or remoteTest(9) + SHOULD be used instead of remoteFault(5) where the reason for + remote fault is identified in the remote signaling protocol. + Where a Clause 22 MII or Clause 35 GMII is present, a logic + one in the remote fault bit maps to the value remoteFault(5), + a logic zero in the link status bit maps to the enumeration + notAvailable(4). The value notAvailable(4) takes precedence + over remoteFault(5). + + For 2BASE-TL and 10PASS-TS PHYs, the value unknown(2) maps to + the condition where the PHY (PCS with connected PMEs) is + initializing, the value ready(20) maps to the condition where + the interface is down and at least one PME in the aggregation + group is ready for handshake, the value available(3) maps to + the condition where all the PMEs in the aggregation group are + up, the value notAvailable(4) maps to the condition where all + the PMEs in the aggregation group are down and no handshake + tones are detected, the value availableReduced(19) maps to the + condition where the interface is up, a link fault is detected + at the receive direction by one or more PMEs in the + aggregation group, but at least one PME is up and the + enumeration pmdLinkFault(12) maps to the condition where a link + fault is detected at the receive direction by all of the PMEs + in the aggregation group. + + For 10 Gb/s the enumerations map to value of the link_fault + variable within the Link Fault Signaling state diagram + as follows: the value OK maps to the value available(3), + the value Local Fault maps to the value notAvailable(4), + and the value Remote Fault maps to the value remoteFault(5). + The value pmdLinkFault(12), wisFrameLoss(13), + wisSignalLoss(14), pcsLinkFault(15), excessiveBER(16), or + dxsLinkFault(17) SHOULD be used instead of the value + notAvailable(4), where the reason for the Local Fault state can + be identified through the use of the Clause 45 MDIO Interface. + Where multiple reasons for the Local Fault state can be + identified, only the highest precedence error SHOULD be + + reported. This precedence in descending order is as follows: + + pxsLinkFault + pmdLinkFault + wisFrameLoss + wisSignalLoss + pcsLinkFault + excessiveBER + dxsLinkFault. + + Where a Clause 45 MDIO interface is present a logic zero in + the PMA/PMD Receive link status bit ([IEEE802.3] + Section 45.2.1.2.2) maps to the value pmdLinkFault(12), + logic one in the LOF status bit (Section 45.2.2.10.4) maps + to the value wisFrameLoss(13), a logic one in the LOS + status bit (Section 45.2.2.10.5) maps to the value + wisSignalLoss, a logic zero in the PCS Receive + link status bit (Section 45.2.3.2.2) maps to the value + pcsLinkFault(15), a logic one in the 10GBASE-R PCS Latched + high BER status bit (Section 45.2.3.12.2) maps to the value + excessiveBER, a logic zero in the DTE XS receive link status + bit (Section 45.2.5.2.2) maps to the value dxsLinkFault(17) + and a logic zero in the PHY XS transmit link status bit + (Section 45.2.4.2.2) maps to the value pxsLinkFault(18). + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + REFERENCE + "[IEEE802.3], Section 30.5.1.1.4" + SYNTAX INTEGER { + other(1), + unknown(2), + available(3), + notAvailable(4), + remoteFault(5), + invalidSignal(6), + remoteJabber(7), + remoteLinkLoss(8), + remoteTest(9), + offline(10), + autoNegError(11), + pmdLinkFault(12), + wisFrameLoss(13), + wisSignalLoss(14), + pcsLinkFault(15), + + excessiveBER(16), + dxsLinkFault(17), + pxsLinkFault(18), + availableReduced(19), + ready(20) + } + + IANAifMauAutoNegCapBits ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + ifMauAutoNegCapabilityBits, ifMauAutoNegCapAdvertisedBits, and + ifMauAutoNegCapReceivedBits objects in the (updated) definition + of MAU-MIB's ifMauAutoNegTable. + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + REFERENCE + "[IEEE802.3], Section 30.6.1.1.5" + SYNTAX BITS { + bOther(0), -- other or unknown + b10baseT(1), -- 10BASE-T half duplex mode + b10baseTFD(2), -- 10BASE-T full duplex mode + b100baseT4(3), -- 100BASE-T4 + b100baseTX(4), -- 100BASE-TX half duplex mode + b100baseTXFD(5), -- 100BASE-TX full duplex mode + b100baseT2(6), -- 100BASE-T2 half duplex mode + b100baseT2FD(7), -- 100BASE-T2 full duplex mode + bFdxPause(8), -- PAUSE for full-duplex links + bFdxAPause(9), -- Asymmetric PAUSE for full-duplex + -- links + bFdxSPause(10), -- Symmetric PAUSE for full-duplex + -- links + bFdxBPause(11), -- Asymmetric and Symmetric PAUSE for + -- full-duplex links + b1000baseX(12), -- 1000BASE-X, -LX, -SX, -CX half + -- duplex mode + b1000baseXFD(13), -- 1000BASE-X, -LX, -SX, -CX full + -- duplex mode + b1000baseT(14), -- 1000BASE-T half duplex mode + b1000baseTFD(15) -- 1000BASE-T full duplex mode + } + + IANAifJackType ::= TEXTUAL-CONVENTION + STATUS current + + DESCRIPTION + "Common enumeration values for repeater and interface MAU + jack types. This data type is used as the syntax of the + ifJackType and rpJackType objects in the (updated) definition + of MAU-MIB's ifJackTable and rpJackTable respectively. + + Possible values are: + other(1) - undefined or unknown + rj45(2) - RJ45 + rj45S(3) - RJ45 shielded + db9(4) - DB9 + bnc(5) - BNC + fAUI(6) - AUI female + mAUI(7) - AUI male + fiberSC(8) - SC fiber + fiberMIC(9) - MIC fiber + fiberST(10) - ST fiber + telco(11) - Telco + mtrj(12) - MT-RJ fiber + hssdc(13) - fiber channel style-2 + fiberLC(14) - LC fiber + cx4(15) - IB4X for 10GBASE-CX4 + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + SYNTAX INTEGER { + other(1), + rj45(2), + rj45S(3), + db9(4), + bnc(5), + fAUI(6), + mAUI(7), + fiberSC(8), + fiberMIC(9), + fiberST(10), + telco(11), + mtrj(12), + hssdc(13), + fiberLC(14), + -- new since RFC 3636 + cx4(15) + } + + -- OBJECT IDENTITIES for MAU types + + -- (see rpMauType and ifMauType of MAU-MIB for usage) + -- The following definitions has been moved from RFC 3636 and + -- no longer appear in its revision. + + dot3MauType OBJECT IDENTIFIER ::= { mib-2 snmpDot3MauMgt(26) 4 } + + dot3MauTypeAUI OBJECT-IDENTITY + STATUS current + DESCRIPTION "no internal MAU, view from AUI" + REFERENCE "[IEEE802.3], Section 7" + ::= { dot3MauType 1 } + + dot3MauType10Base5 OBJECT-IDENTITY + STATUS current + DESCRIPTION "thick coax MAU" + REFERENCE "[IEEE802.3], Section 7" + ::= { dot3MauType 2 } + + dot3MauTypeFoirl OBJECT-IDENTITY + STATUS current + DESCRIPTION "FOIRL MAU" + REFERENCE "[IEEE802.3], Section 9.9" + ::= { dot3MauType 3 } + + dot3MauType10Base2 OBJECT-IDENTITY + STATUS current + DESCRIPTION "thin coax MAU" + REFERENCE "[IEEE802.3], Section 10" + ::= { dot3MauType 4 } + + dot3MauType10BaseT OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU. + Note that it is strongly recommended that + agents return either dot3MauType10BaseTHD or + dot3MauType10BaseTFD if the duplex mode is + known. However, management applications should + be prepared to receive this MAU type value from + older agent implementations." + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 5 } + + dot3MauType10BaseFP OBJECT-IDENTITY + STATUS current + DESCRIPTION "passive fiber MAU" + REFERENCE "[IEEE802.3], Section 16" + ::= { dot3MauType 6 } + + dot3MauType10BaseFB OBJECT-IDENTITY + STATUS current + DESCRIPTION "sync fiber MAU" + REFERENCE "[IEEE802.3], Section 17" + ::= { dot3MauType 7 } + + dot3MauType10BaseFL OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU. + Note that it is strongly recommended that + agents return either dot3MauType10BaseFLHD or + dot3MauType10BaseFLFD if the duplex mode is + known. However, management applications should + be prepared to receive this MAU type value from + older agent implementations." + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 8 } + + dot3MauType10Broad36 OBJECT-IDENTITY + STATUS current + DESCRIPTION "broadband DTE MAU. + Note that 10BROAD36 MAUs can be attached to + interfaces but not to repeaters." + REFERENCE "[IEEE802.3], Section 11" + ::= { dot3MauType 9 } + + ------ new since RFC 1515: + dot3MauType10BaseTHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU, half duplex mode" + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 10 } + + dot3MauType10BaseTFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU, full duplex mode" + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 11 } + + dot3MauType10BaseFLHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU, half duplex mode" + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 12 } + + dot3MauType10BaseFLFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU, full duplex mode" + + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 13 } + + dot3MauType100BaseT4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "4 pair category 3 UTP" + REFERENCE "[IEEE802.3], Section 23" + ::= { dot3MauType 14 } + + dot3MauType100BaseTXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 5 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 25" + ::= { dot3MauType 15 } + + dot3MauType100BaseTXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 5 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 25" + ::= { dot3MauType 16 } + + dot3MauType100BaseFXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over PMT, half duplex mode" + REFERENCE "[IEEE802.3], Section 26" + ::= { dot3MauType 17 } + + dot3MauType100BaseFXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over PMT, full duplex mode" + REFERENCE "[IEEE802.3], Section 26" + ::= { dot3MauType 18 } + + dot3MauType100BaseT2HD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 3 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 32" + ::= { dot3MauType 19 } + + dot3MauType100BaseT2FD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 3 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 32" + ::= { dot3MauType 20 } + + ------ new since RFC 2239: + dot3MauType1000BaseXHD OBJECT-IDENTITY + STATUS current + + DESCRIPTION "PCS/PMA, unknown PMD, half duplex mode" + REFERENCE "[IEEE802.3], Section 36" + ::= { dot3MauType 21 } + + dot3MauType1000BaseXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "PCS/PMA, unknown PMD, full duplex mode" + REFERENCE "[IEEE802.3], Section 36" + ::= { dot3MauType 22 } + + dot3MauType1000BaseLXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over long-wavelength laser, half duplex + mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 23 } + + dot3MauType1000BaseLXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over long-wavelength laser, full duplex + mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 24 } + + dot3MauType1000BaseSXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over short-wavelength laser, half + duplex mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 25 } + + dot3MauType1000BaseSXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over short-wavelength laser, full + duplex mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 26 } + + dot3MauType1000BaseCXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Copper over 150-Ohm balanced cable, half + duplex mode" + REFERENCE "[IEEE802.3], Section 39" + ::= { dot3MauType 27 } + + dot3MauType1000BaseCXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Copper over 150-Ohm balanced cable, full + + duplex mode" + REFERENCE "[IEEE802.3], Section 39" + ::= { dot3MauType 28 } + + dot3MauType1000BaseTHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Four-pair Category 5 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 40" + ::= { dot3MauType 29 } + + dot3MauType1000BaseTFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Four-pair Category 5 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 40" + ::= { dot3MauType 30 } + + ------ new since RFC 2668: + dot3MauType10GigBaseX OBJECT-IDENTITY + STATUS current + DESCRIPTION "X PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 48" + ::= { dot3MauType 31 } + + dot3MauType10GigBaseLX4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over WWDM optics" + REFERENCE "[IEEE802.3], Section 53" + ::= { dot3MauType 32 } + + dot3MauType10GigBaseR OBJECT-IDENTITY + STATUS current + DESCRIPTION "R PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 49" + ::= { dot3MauType 33 } + + dot3MauType10GigBaseER OBJECT-IDENTITY + STATUS current + DESCRIPTION "R fiber over 1550 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 34 } + + dot3MauType10GigBaseLR OBJECT-IDENTITY + STATUS current + DESCRIPTION "R fiber over 1310 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 35 } + + dot3MauType10GigBaseSR OBJECT-IDENTITY + + STATUS current + DESCRIPTION "R fiber over 850 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 36 } + + dot3MauType10GigBaseW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 49 and 50" + ::= { dot3MauType 37 } + + dot3MauType10GigBaseEW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 1550 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 38 } + + dot3MauType10GigBaseLW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 1310 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 39 } + + dot3MauType10GigBaseSW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 850 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 40 } + + ------ new since RFC 3636: + dot3MauType10GigBaseCX4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "X copper over 8 pair 100-Ohm balanced cable" + REFERENCE "[IEEE802.3], Section 54" + ::= { dot3MauType 41 } + + dot3MauType2BaseTL OBJECT-IDENTITY + STATUS current + DESCRIPTION "Voice grade UTP copper, up to 2700m, optional PAF" + REFERENCE "[IEEE802.3], Sections 61 and 63" + ::= { dot3MauType 42 } + + dot3MauType10PassTS OBJECT-IDENTITY + STATUS current + DESCRIPTION "Voice grade UTP copper, up to 750m, optional PAF" + REFERENCE "[IEEE802.3], Sections 61 and 62" + ::= { dot3MauType 43 } + + dot3MauType100BaseBX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 44 } + + dot3MauType100BaseBX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 45 } + + dot3MauType100BaseLX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Two single-mode fibers, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 46 } + + dot3MauType1000BaseBX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 47 } + + dot3MauType1000BaseBX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 48 } + + dot3MauType1000BaseLX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Two sigle-mode fiber, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 49 } + + dot3MauType1000BasePX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON OLT, 10km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 50 } + + dot3MauType1000BasePX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON ONU, 10km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 51 } + + dot3MauType1000BasePX20D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON OLT, 20km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 52 } + + dot3MauType1000BasePX20U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON ONU, 20km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 53 } + +END diff --git a/mibs/iana/IANA-PRINTER-MIB b/mibs/iana/IANA-PRINTER-MIB new file mode 100644 index 0000000..1f322e9 --- /dev/null +++ b/mibs/iana/IANA-PRINTER-MIB @@ -0,0 +1,1319 @@ +IANA-PRINTER-MIB DEFINITIONS ::= BEGIN + -- http://www.iana.org/assignments/ianaprinter-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianaPrinterMIB MODULE-IDENTITY + LAST-UPDATED "200509140000Z" -- September 14, 2005 + + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines a set of printing-related + TEXTUAL-CONVENTIONs for use in Printer MIB (RFC 3805), + Finisher MIB (RFC 3806), and other MIBs which need to + specify printing mechanism details. + + Any additions or changes to the contents of this MIB + module require either publication of an RFC, or + Designated Expert Review as defined in RFC 2434, + Guidelines for Writing an IANA Considerations Section + in RFCs. The Designated Expert will be selected by + the IESG Area Director(s) of the Applications Area. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3805. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200509140000Z" -- September 14, 2005 + DESCRIPTION "Updates to include missing 'unknown' values + for PrtCoverStatusTC, PrtChannelTypeTC, + PrtAlertGroupTC and removal of comment for + for PrtAlertGroupTC." + + REVISION "200406020000Z" -- June 2, 2004 + DESCRIPTION "Original version, published in coordination + with Printer MIB (RFC 3805)." + ::= { mib-2 109 } + +-- +-- Generic TEXTUAL-CONVENTIONs +-- + +PrtCoverStatusTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtCoverStatus in RFC 1759. + STATUS current + DESCRIPTION + "Values for encoding the state of a particular cover or + access panel on the printer case or enclosure." + SYNTAX INTEGER { + other(1), + unknown(2), + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6) + + } + +-- +-- General Group TEXTUAL-CONVENTIONs +-- + +PrtGeneralResetTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtGeneralReset in RFC 1759. + STATUS current + DESCRIPTION + "Values for reading and writing the prtGeneralReset object. + + If a device does not have NVRAM, the device shall none the + less respond to a SET with the value resetToNVRAM(5) with a + sort of warm reset that resets the device to implementation- + defined state that is preferably under control of the system + administrator by some means outside the scope of the Printer + MIB specification." + + SYNTAX INTEGER { + notResetting(3), + powerCycleReset(4), -- Cold Start + resetToNVRAM(5), -- Warm Start + resetToFactoryDefaults(6) -- Reset contents of + -- NVRAM to factory + -- defaults + } +-- +-- Channel Group TEXTUAL-CONVENTIONs +-- + +PrtChannelTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtChannelType in RFC 1759. + STATUS current + DESCRIPTION + "This enumeration indicates the type of channel that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), + chSerialPort(3), + chParallelPort(4), + chIEEE1284Port(5), + chSCSIPort(6), + chAppleTalkPAP(7), + -- AppleTalk Printer + -- Access Protocol (PAP) + -- + -- prtChannelInformation entry: + + -- + -- Printer Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The name of the printer + -- within the AppleTalk naming scope + chLPDServer(8), + -- prtChannelInformation entry: + -- + -- Printer queue name + -- Keyword: Queue + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: queue name as + -- defined in [RFC1179]. + chNetwareRPrinter(9), + -- Novell, Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair of + -- keywords. For Netware 3.x channels this must + -- be a (PServer, Printer) pair. For Netware + -- 4.x channels and for IntranetWare channels + -- this must be a (NDSTree, NDSPrinter) pair. + -- + -- prtChannelInformation entries: + + -- Print Server Name + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The Pserver's SAP name + -- + -- Printer Number + -- Keyword: Printer + -- Syntax: Integer + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The printer number + -- + -- NDSTree + -- Keyword: NDSTree + -- Syntax: Name + -- Multiplicity: Single + -- Description: The tree's SAP name + + -- + -- NDS Printer object + -- Keyword: NDSPrinter + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the Printer + -- + -- In the Netware 3.x environment, the + -- client checks the Bindery object + -- representing the named PServer. The + -- client then checks for queues which + -- are associated with the numbered + -- printer. In the 4.x and IntraNetware + -- environment, the client looks up the + -- queues which are associated with the + -- NDS Printer Object in the named Tree. + -- Depending on client access rights to + -- those queues, the client submits jobs + -- to the appropriate queue. + chNetwarePServer(10), + -- Novell,Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair + -- of keywords. For Netware 3.x channels + -- this must be a (Server, PServer) pair. + -- For Netware 4.x and IntranetWare + -- channels, this must be a + -- (NDSTree, NDSPServer) pair. + -- + -- prtChannelInformation entries: + -- + -- Server Name + -- Keyword: Server + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SAP name of the + -- server for which the PServer is defined. + -- + -- PServer + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The bindery name of + -- the PServer + + -- + -- NDS Tree + -- Keyword: NDSTree + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDS Tree name + -- + -- PServer + -- Keyword: NDSPServer + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the PServer object in the tree. + -- + -- In the 3.x environment, the client + -- checks the bindery object + -- representing the named PServer on the + -- named Server. In the 4.x and + -- IntranetWare environment, + -- the client checks the NDS object + -- representing the named PServer in the + -- named Tree. In either case, the + -- client then checks for all queues + -- associated with the Pserver object. + -- Depending on client access rights + -- to those queues, the client submits + -- jobs to the appropriate queue. + chPort9100(11), + -- DEPRECATED + -- (see chPortTCP - 37; chBidirPortTCP - 38) + chAppSocket(12), + -- A bi-directional, LPD-like, protocol using + -- 9101 for control and 9100 for data. + -- Adobe Systems, Inc. + chFTP(13), -- [RFC959] + chTFTP(14), -- [RFC1350] + chDLCLLCPort(15), + chIBM3270(16), -- IBM Coax + chIBM5250(17), -- IBM Twinax + chFax(18), + chIEEE1394(19), + chTransport1(20), + -- TCP port 35, for reserved TCP port list see + -- [RFC3232]. This RFC should also be + -- referenced for other channel + -- enumerations utilizing TCP port + + -- numbers 0 through 1024. + chCPAP(21), -- TCP port 170 + -- Digital Equipment Corp. + chDCERemoteProcCall(22), -- OSF + -- DEPRECATED + chONCRemoteProcCall(23), -- SUN Microsystems + -- DEPRECATED + chOLE(24), -- Microsoft + -- DEPRECATED + chNamedPipe(25), + chPCPrint(26), -- Banyan + chServerMessageBlock(27), + -- File/Print sharing protocol used by + -- various network operating systems + -- from IBM 3Com, Microsoft and others + -- + -- prtChannelInformation entry: + -- + -- Service Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The service name of + -- the printer + chDPMF(28), -- IBM Infoprint + chDLLAPI(29), -- Microsoft + -- DEPRECATED + chVxDAPI(30), -- Microsoft + -- DEPRECATED + chSystemObjectManager(31), -- IBM + chDECLAT(32), + -- Digital Equipment Corp. + -- + -- prtChannelInformation entries: + -- + -- Port Name + -- Keyword: Port + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- (see note below) + -- Multiplicity: Single + -- Description: LAT port name + -- + -- Service Name + -- Keyword: Service + -- Syntax: Name + + -- Status: Conditionally + -- Mandatory + -- Multiplicity: Single + -- Description: LAT service name + -- + -- The LAT channel may be + -- identified by either a port or + -- service, so either a + -- Port or Service entry must be + -- specified, but not both. + chNPAP(33), + chUSB(34), -- Not in RFC 1759 + -- Universal Serial Bus + chIRDA(35), -- Not in RFC 1759 + -- Infrared Data Assoc. Prot. + chPrintXChange(36), -- Not in RFC 1759 + -- PrintXChange Protocol + chPortTCP(37), -- Not in RFC 1759 + -- A unidirectional "raw" TCP + -- channel that uses an administratively + -- assigned TCP port address. + -- + -- prtChannelInformation entry: + -- + -- Port Number + -- Keyword: Port + -- Syntax: decimal number + -- Status: Mandatory + -- Multiplicity: Single + -- Description: TCP port number + chBidirPortTCP(38), -- Not in RFC 1759 + -- A bi-directional version of chPortTCP + -- + -- prtChannelInformation entries: + -- (See chPortTCP) + chUNPP(39), -- Not in RFC 1759 + -- Universal Network Printing + -- Protocol(UNPP). A bi-directional, + -- multiport network printing + -- application protocol available on + -- multiple transport protocols. + -- Underscore, Inc. + -- Contact: info&underscore.com + chAppleTalkADSP(40), -- Not in RFC 1759 + -- AppleTalk Data Stream Protocol. + -- ADSP is part of the AppleTalk + -- suite of protocols. + -- It is a symmetric, connection- + + -- oriented protocol that makes + -- possible the establishment + -- and maintenance of full-duplex + -- streams of data bytes between + -- two sockets in an AppleTalk + -- internet. + -- See [APPLEMAC]. + chPortSPX(41), -- Not in RFC 1759 + -- Sequenced Packet Exchange (SPX) + -- socket. + -- Novell, Inc. Similar to TCP, a + -- bi-directional data pipe using + -- Novell SPX as a transport. + -- + -- prtChannelInformation entries: + -- + -- Network Number + -- Keyword: Net + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The network number + -- + -- Node Number + -- Keyword: Node + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The node number + -- + -- Socket Number + -- Keyword: Socket + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SPX socket number + -- + -- There must be exactly one "Net" and + -- one "Node" and one "Socket" entry. A + -- HexString is a binary value + -- represented as a string of + -- ASCII characters using hexadecimal + -- notation. + chPortHTTP(42), -- Not in RFC 1759 + -- Hypertext Transfer Protocol. See [RFC1945] + -- and [RFC2616]. + chNDPS(43), -- Not in RFC 1759 + -- Novell, Inc. + + -- + -- prtChannelInformation entry: + -- + -- Printer Agent Name + -- Keyword: PA + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDPS Printer + -- Agent Name + chIPP(44), -- Not in RFC 1759 + -- Internet Printing Protocol (IPP), + -- (IPP/1.1 - see [RFC2910] and [RFC2911]) + -- also applies to all future versions of IPP. + -- + -- IPP Printer URI + -- Keyword: URI + -- Syntax: URI (Unicode UTF-8 per + -- [RFC2396]) + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: URI of this IPP Printer + -- within Internet naming scope. Unicode + -- UTF-8 [RFC3629] string with + -- hexadecimal escapes for any non-ASCII + -- characters (per [RFC2396]). + -- Conformance: An IPP Printer shall list all + -- IPP URI it supports (one per IPP Channel + -- entry). If a URI contains the 'http:' + -- scheme it must have an explicit port. + -- See: [RFC3629], [RFC2396], [RFC2910], + -- [RFC2911]. + -- + -- IPP Printer Client Authentication + -- Keyword: Auth + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A client authentication + -- mechanism supported for this IPP Printer + -- URI: + -- 'none' + -- no client authentication mechanism + -- 'requesting-user-name' + -- authenticated user in 'requesting- + -- user-name' + + -- 'basic' + -- authenticated user via HTTP Basic + -- mechanism + -- 'digest' + -- authenticated user via HTTP Digest + -- mechanism + -- 'certificate' + -- authenticated user via certificate + -- mechanism + -- Conformance: An IPP Printer should list + -- all IPP client authentication mechanisms + -- it supports (one per IPP Channel entry). + -- See: [RFC2911] and [RFC2910]. + -- + -- IPP Printer Security + -- Keyword: Security + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A security mechanism + -- supported for this IPP Printer URI: + -- 'none' + -- no security mechanism + -- 'ssl3' + -- SSL3 secure communications channel + -- protocol + -- 'tls' + -- TLS secure communications channel + -- protocol + -- Conformance: An IPP Printer should list + -- all IPP security mechanisms it supports + -- (one per IPP Channel entry). + -- See: [RFC2246], [RFC2911]. + -- + -- IPP Printer Protocol Version + -- Keyword: Version + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Multiple + -- Default: '1.1' + -- Description: All of the IPP protocol + -- versions (major.minor) supported for + -- this IPP Printer URI: + -- '1.0' + -- IPP/1.0 conforming Printer + -- '1.1' + -- IPP/1.1 conforming Printer + + -- Conformance: An IPP Printer should list + -- all IPP versions it supports (all listed + -- in each IPP Channel entry). An IPP + -- Client should select the highest + -- numbered version the IPP Client supports + -- for use in all IPP Requests (for optimum + -- interworking). + -- See: [RFC2911]. + chSMTP(45) + -- Print Job submission via Simple Mail + -- Transfer Protocol (SMTP) - see [RFC2821] + -- + -- prtChannelInformation entry: + -- + -- Keyword: Mailto + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: The SMTP URL of the printer. +} + +-- +-- Interpreter Group TEXTUAL-CONVENTIONs +-- + +PrtInterpreterLangFamilyTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterLangFamily in RFC 1759. + STATUS current + DESCRIPTION + "This enumeration indicates the type of interpreter that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), -- Not in RFC 1759 + langPCL(3), -- PCL. Starting with PCL version 5, + -- HP-GL/2 is included as part of the + -- PCL language. + -- PCL and HP-GL/2 are registered + -- trademarks of Hewlett-Packard + -- Company. + langHPGL(4), -- Hewlett-Packard Graphics Language. + -- HP-GL is a registered trademark of + -- Hewlett-Packard Company. + langPJL(5), -- Peripheral Job Language. Appears in + -- the data stream between data intended + -- for a page description language. + -- Hewlett-Packard Co. + + langPS(6), -- PostScript (tm) Language + -- Postscript - a trademark of Adobe + -- Systems Incorporated which may be + -- registered in certain jurisdictions + langIPDS(7), -- Intelligent Printer Data Stream + -- Bi-directional print data stream for + -- documents consisting of data objects + -- (text, image, graphics, bar codes), + -- resources (fonts, overlays) and page, + -- form and finishing instructions. + -- Facilitates system level device + -- control, document tracking and error + -- recovery throughout the print + -- process. + -- IBM Corporation. + langPPDS(8), -- IBM Personal Printer Data Stream. + -- Originally called IBM ASCII, the name + -- was changed to PPDS when the Laser + -- Printer was introduced in 1989. + -- Lexmark International, Inc. + langEscapeP(9), -- Epson Corp. + langEpson(10), + langDDIF(11), -- Digital Document Interchange Format + -- Digital Equipment Corp., Maynard MA + langInterpress(12), + -- Xerox Corp. + langISO6429(13), -- ISO 6429. Control functions for + -- Coded Character Sets (has ASCII + -- control characters, plus additional + -- controls for + -- character imaging devices.) + langLineData(14), -- line-data: Lines of data as + -- separate ASCII or EBCDIC records + -- and containing no control functions + -- (no CR, LF, HT, FF, etc.) + -- For use with traditional line + -- printers. May use CR and/or LF to + -- delimit lines, instead of records. + -- See ISO 10175 Document Printing + -- Application (DPA) [ISO10175]. + langMODCA(15), -- Mixed Object Document Content + -- Architecture + -- Definitions that allow the + -- composition, interchange, and + -- presentation of final form + -- documents as a collection of data + -- objects (text, image, graphics, bar + -- codes), resources (fonts, overlays) + + -- and page, form and finishing + -- instructions. + -- IBM Corporation. + langREGIS(16), -- Remote Graphics Instruction Set, + -- Digital Equipment Corp., Maynard MA + langSCS(17), -- SNA Character String + -- Bi-directional print data stream for + -- SNA LU-1 mode of communication. + -- IBM + langSPDL(18), -- ISO 10180 Standard Page Description + -- Language + -- ISO Standard + langTEK4014(19), -- Tektronix Corp. + langPDS(20), + langIGP(21), -- Printronix Corp. + langCodeV(22), -- Magnum Code-V, Image and printer + -- control language used to control + -- impact/dot-matrix printers. + -- QMS, Inc., Mobile AL + langDSCDSE(23), -- DSC-DSE: Data Stream Compatible and + -- Emulation Bi-directional print data + -- stream for non-SNA (DSC) and SNA LU-3 + -- 3270 controller (DSE) communications + -- IBM + langWPS(24), -- Windows Printing System, Resource + -- based command/data stream used by + -- Microsoft At Work Peripherals. + -- Developed by the Microsoft + -- Corporation. + langLN03(25), -- Early DEC-PPL3, Digital Equipment + -- Corp. + langCCITT(26), + langQUIC(27), -- QUIC (Quality Information Code), Page + -- Description Language for laser + -- printers. Included graphics, printer + -- control capability and emulation of + -- other well-known printer. + -- QMS, Inc. + langCPAP(28), -- Common Printer Access Protocol + -- Digital Equipment Corp. + langDecPPL(29), -- Digital ANSI-Compliant Printing + -- Protocol + -- (DEC-PPL) + -- Digital Equipment Corp. + langSimpleText(30), + -- simple-text: character coded data, + -- including NUL, CR , LF, HT, and FF + -- control characters. See ISO 10175 + + -- Document Printing Application (DPA) + -- [ISO10175]. + langNPAP(31), -- Network Printer Alliance Protocol + -- (NPAP). This protocol has been + -- superseded by the IEEE 1284.1 TIPSI + -- Std (ref. LangTIPSI(49)). + langDOC(32), -- Document Option Commands, Appears in + -- the data stream between data + -- intended for a page description. + -- QMS, Inc. + langimPress(33), -- imPRESS, Page description language + -- originally developed for the + -- ImageServer product line. A binary + -- language providing representations + -- of text, simple graphics, and some + -- large forms (simple + -- bit-map and CCITT group 3/4 + -- encoded).The + -- language was intended to be sent over + -- an 8-bit channel and supported early + -- document preparation languages (e.g., + -- TeX and TROFF). + -- QMS, Inc. + langPinwriter(34), + -- 24 wire dot matrix printer for + -- USA, Europe, and Asia except + -- Japan. + -- More widely used in Germany, and + -- some Asian countries than in US. + -- NEC + langNPDL(35), -- Page printer for Japanese market. + -- NEC + langNEC201PL(36), -- Serial printer language used in + -- the Japanese market. + -- NEC + langAutomatic(37), + -- Automatic PDL sensing. Automatic + -- sensing of the interpreter + -- language family by the printer + -- examining the document content. + -- Which actual interpreter language + -- families are sensed depends on + -- the printer implementation. + langPages(38), -- Page printer Advanced Graphic + -- Escape Set + -- IBM Japan + langLIPS(39), -- LBP Image Processing System + langTIFF(40), -- Tagged Image File Format (Aldus) + + langDiagnostic(41), + -- A hex dump of the input to the + -- interpreter + langPSPrinter(42), + -- The PostScript Language used for + -- control (with any PDLs) + -- Adobe Systems Incorporated + langCaPSL(43), -- Canon Print Systems Language + langEXCL(44), -- Extended Command Language + -- Talaris Systems Inc. + langLCDS(45), -- Line Conditioned Data Stream + -- Xerox Corporation + langXES(46), -- Xerox Escape Sequences + -- Xerox Corporation + langPCLXL(47), -- Not in RFC 1759 + -- Printer Control Language. Extended + -- language features for printing, and + -- printer control. + -- Hewlett-Packard Co. + langART(48), -- Not in RFC 1759 + -- Advanced Rendering Tools (ART). + -- Page Description language + -- originally developed for the Laser + -- Press printers. + -- Technical reference manual: "ART IV + -- Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langTIPSI(49), -- Not in RFC 1759 + -- Transport Independent Printer + -- System Interface (ref. IEEE Std. + -- 1284.1) + langPrescribe(50), -- Not in RFC 1759 + -- Page description and printer + -- control language. It can be + -- described with ordinary ASCII + -- Technical reference manual: + -- "PRESCRIBE II Programming Manual" + langLinePrinter(51), -- Not in RFC 1759 + -- A simple-text character stream which + -- supports the control codes LF, VT, + -- FF, and plus Centronics or + -- Dataproducts Vertical Format Unit + -- (VFU) language is commonly used on + -- many older model line and matrix + -- printers. + langIDP(52), -- Not in RFC 1759 + -- Imaging Device Protocol + -- Apple Computer. + + langXJCL(53), -- Not in RFC 1759 + -- Xerox Job Control Language (JCL). + -- A Job Control language originally + -- developed for the LaserPress printers + -- and is capable of switching PDLs. + -- Technical reference manual: + -- "ART IV Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langPDF(54), -- Not in RFC 1759 + -- Adobe Portable Document Format + -- Adobe Systems, Inc. + langRPDL(55), -- Not in RFC 1759 + -- Ricoh Page Description Language for + -- printers. + -- Technical manual "RPDL command + -- reference" No.307029 + -- RICOH, Co. LTD + langIntermecIPL(56), -- Not in RFC 1759 + -- Intermec Printer Language for label + -- printers. + -- Technical Manual: "IPL Programmers + -- Reference Manual" + -- Intermec Corporation + langUBIFingerprint(57), -- Not in RFC 1759 + -- An intelligent basic-like programming + -- language for label printers. + -- Reference Manual: "UBI Fingerprint + -- 7.1", No. 1-960434-00 + -- United Barcode Industries + langUBIDirectProtocol(58), -- Not in RFC 1759 + -- An intelligent control language for + -- label printers. + -- Programmers guide: " UBI Direct + -- Protocol", No. 1-960419-00 + -- United Barcode Industries + langFujitsu(59), -- Not in RFC 1759 + -- Fujitsu Printer Language + -- Reference Manual: + -- "FM Printer Sequence" No. 80HP-0770 + -- FUJITSU LIMITED + langCGM(60), -- Not in RFC 1759 + -- Computer Graphics Metafile + -- MIME type 'image/cgm' + langJPEG(61), -- Not in RFC 1759 + -- Joint Photographic Experts Group + -- MIME type 'image/jpeg' + langCALS1(62), -- Not in RFC 1759 + -- US DOD CALS1 (see MIL-STD-1840) + + -- MIME type 'application/cals-1840' + langCALS2(63), -- Not in RFC 1759 + -- US DOD CALS2 (see MIL-STD-1840) + -- MIME type 'application/cals-1840' + langNIRS(64), -- Not in RFC 1759 + -- US DOD NIRS (see MIL-STD-1840) + -- MIME type 'application/cals-1840' + langC4(65) -- Not in RFC 1759 + -- US DOD C4 (see MIL-STD-1840) + -- MIME type 'application/cals-1840' +} + +-- +-- Input/Output Group TEXTUAL-CONVENTIONs +-- + +PrtInputTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInputType in RFC 1759. + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by a specific component or + components." + SYNTAX INTEGER { + other(1), + unknown(2), + sheetFeedAutoRemovableTray(3), + sheetFeedAutoNonRemovableTray(4), + sheetFeedManual(5), + continuousRoll(6), + continuousFanFold(7) + } + +PrtOutputTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputType in RFC 1759. + STATUS current + DESCRIPTION + "The Type of technology supported by this output subunit." + SYNTAX INTEGER { + other(1), + unknown(2), + removableBin(3), + unRemovableBin(4), + continuousRollDevice(5), + mailBox(6), + continuousFanFold(7) + } + +-- +-- Marker Group TEXTUAL-CONVENTIONs +-- + +PrtMarkerMarkTechTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerMarkTech in RFC 1759. + STATUS current + DESCRIPTION + "The type of marking technology used for this marking + subunit." + SYNTAX INTEGER { + other(1), + unknown(2), + electrophotographicLED(3), + electrophotographicLaser(4), + electrophotographicOther(5), + impactMovingHeadDotMatrix9pin(6), + impactMovingHeadDotMatrix24pin(7), + impactMovingHeadDotMatrixOther(8), + impactMovingHeadFullyFormed(9), + impactBand(10), + impactOther(11), + inkjetAqueous(12), + inkjetSolid(13), + inkjetOther(14), + pen(15), + thermalTransfer(16), + thermalSensitive(17), + thermalDiffusion(18), + thermalOther(19), + electroerosion(20), + electrostatic(21), + photographicMicrofiche(22), + photographicImagesetter(23), + photographicOther(24), + ionDeposition(25), + eBeam(26), + typesetter(27) + } + +PrtMarkerSuppliesTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesType in RFC 1759. + STATUS current + DESCRIPTION + "The type of this supply." + SYNTAX INTEGER { + other(1), + unknown(2), + + -- Values for Printer MIB + toner(3), + wasteToner(4), + ink(5), + inkCartridge(6), + inkRibbon(7), + wasteInk(8), + opc(9), -- photo conductor + developer(10), + fuserOil(11), + solidWax(12), + ribbonWax(13), + wasteWax(14), + fuser(15), -- Not in RFC 1759 + coronaWire(16), -- Not in RFC 1759 + fuserOilWick(17), -- Not in RFC 1759 + cleanerUnit(18), -- Not in RFC 1759 + fuserCleaningPad(19), -- Not in RFC 1759 + transferUnit(20), -- Not in RFC 1759 + tonerCartridge(21), -- Not in RFC 1759 + fuserOiler(22), -- Not in RFC 1759 + -- End of values for Printer MIB + -- Values for Finisher MIB + water(23), -- Not in RFC 1759 + wasteWater(24), -- Not in RFC 1759 + glueWaterAdditive(25),-- Not in RFC 1759 + wastePaper(26), -- Not in RFC 1759 + bindingSupply(27), -- Not in RFC 1759 + bandingSupply(28), -- Not in RFC 1759 + stitchingWire(29), -- Not in RFC 1759 + shrinkWrap(30), -- Not in RFC 1759 + paperWrap(31), -- Not in RFC 1759 + staples(32), -- Not in RFC 1759 + inserts(33), -- Not in RFC 1759 + covers(34) -- Not in RFC 1759 + -- End of values for Finisher MIB + } + +-- +-- Media Path TEXTUAL-CONVENTIONs +-- + +PrtMediaPathTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMediaPathType in RFC 1759. + STATUS current + DESCRIPTION + "The type of the media path for this media path." + SYNTAX INTEGER { + + other(1), + unknown(2), + longEdgeBindingDuplex(3), + shortEdgeBindingDuplex(4), + simplex(5) + } + +-- +-- Console Group TEXTUAL-CONVENTIONs +-- + +PrtConsoleColorTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtConsoleColor in RFC 1759. + STATUS current + DESCRIPTION + "The color of this light." + SYNTAX INTEGER { + other(1), + unknown(2), + white(3), + red(4), + green(5), + blue(6), + cyan(7), + magenta(8), + yellow(9), + orange(10) -- Not in RFC 1759 + } + +PrtConsoleDisableTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtConsoleDisable in RFC 1759. + STATUS current + DESCRIPTION + "This value indicates whether or not input is accepted from + the operator console. A value of 'enabled' indicates that + input is accepted from the console, and a value of 'disabled' + indicates that input is not accepted from the console. " + SYNTAX INTEGER { + enabled(3), + disabled(4) + } + +-- +-- Alert Group TEXTUAL-CONVENTIONs +-- + +PrtAlertTrainingLevelTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertTrainingLevel in RFC 1759. + + STATUS current + DESCRIPTION + "The level of training required to handle this alert, if + human intervention is required. The noInterventionRequired + value should be used if the event does not require any human + intervention. The training level is an enumeration that is + determined and assigned by the printer manufacturer based on + the information or training required to handle this alert. + The printer will break alerts into these different training + levels. It is the responsibility of a management application + in the system to determine how a particular alert is handled + and how and to whom that alert is routed. The following are + the four training levels of alerts: + + Field Service - Alerts that typically require advanced + training and technical knowledge of the printer and its + subunits. An example of a technical person would be a + manufacturer's Field Service representative, or other + person formally trained by the manufacturer or similar + representative. + Trained - Alerts that require an intermediate or moderate + knowledge of the printer and its subunits. A typical + example of such an alert is replacing a toner cartridge. + Untrained - Alerts that can be fixed without prior + training either because the action to correct the alert + is obvious or the printer can help the untrained person + fix the problem. A typical example of such an alert is + reloading paper trays or emptying output bins on a low + end printer. + Management - Alerts that have to do with overall operation + of and configuration of the printer. Examples of such + management events are configuration change of subunits." + SYNTAX INTEGER { + other(1), + unknown(2), + untrained(3), + trained(4), + fieldService(5), + management(6), + noInterventionRequired(7) -- Not in RFC 1759 + } + +PrtAlertGroupTC ::= TEXTUAL-CONVENTION + -- Values in the range 1 to 29 must not be IANA-assigned without + -- re-publishing Printer MIB. + -- Values of 30 and greater are for use in MIBs that augment + -- the Printer MIB, such as the Finisher MIB. + -- This TC extracted from prtAlertGroup in RFC 1759. + + STATUS current + DESCRIPTION + "The type of subunit within the printer model that this alert + is related. Input, output, and markers are examples of + printer model groups, i.e., examples of types of subunits. + Wherever possible, the enumerations match the sub-identifier + that identifies the relevant table in the Printer MIB. + + NOTE: Alert type codes have been added for the Host Resources + MIB storage table and device table. These additional types + are for situations in which the printer's storage and device + objects must generate alerts (and possibly traps for critical + alerts)." + SYNTAX INTEGER { + other(1), + unknown(2), + -- Values for Host Resources MIB + hostResourcesMIBStorageTable(3), + hostResourcesMIBDeviceTable(4), + -- Values for Printer MIB + generalPrinter(5), + cover(6), + localization(7), + input(8), + output(9), + marker(10), + markerSupplies(11), + markerColorant(12), + mediaPath(13), + channel(14), + interpreter(15), + consoleDisplayBuffer(16), + consoleLights(17), + alert(18), -- Not in RFC 1759 + -- Values (5) to (29) reserved for Printer MIB + -- Values for Finisher MIB + finDevice(30), -- Not in RFC 1759 + finSupply(31), -- Not in RFC 1759 + finSupplyMediaInput(32), -- Not in RFC 1759 + finAttribute(33) -- Not in RFC 1759 + -- Values (30) to (39) reserved for Finisher MIB + } + +PrtAlertCodeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertCode in RFC 1759. + STATUS current + DESCRIPTION + "The code that describes the type of alert for this entry in + + the table. Binary change event alerts describe states of the + subunit while unary change event alerts describe a single + event. The same alert code can be used for a binary change + event or a unary change event, depending on implementation. + Also, the same alert code can be used to indicate a critical + or non-critical (warning) alert, depending on implementation. + The value of prtAlertSeverityLevel specifies binary vs. unary + and critical vs. non-critical for each event for the + implementation. + + While there are some specific codes for many subunits, the + generic codes should be used for most subunit alerts. The + network management station can then query the subunit + specified by prtAlertGroup to determine further subunit + status and other subunit information. + + An agent shall not add two entries to the alert table for the + same event, one containing a generic event code and the other + containing a specific event code; the agent shall add only + one entry in the alert table for each event; either generic + (preferred) or specific, not both. + + Implementation of the unary change event + alertRemovalOfBinaryChangeEntry(1801) is optional. When + implemented, this alert code shall indicate to network + management stations that the trailing edge of a binary change + event has occurred and the corresponding alert entry has been + removed from the alert table. As with all events, the + alertRemovalOfBinaryChangeEntry(1801) alert shall be placed + at the end of the alert table. Such an alert table entry + shall specify the following information: + + prtAlertSeverityLevel warningUnaryChangeEvent(4) + prtAlertTrainingLevel noInterventionRequired(7) + prtAlertGroup alert(18) + prtAlertGroupIndex the index of the row in the + alert table of the binary + change event that this event + has removed. + prtAlertLocation unknown (-2) + prtAlertCode alertRemovalOfBinaryChangeEntry(1801) + prtAlertDescription + prtAlertTime the value of sysUpTime at + the time of the removal of the + binary change event from the + alert table. + + Optionally, the agent may generate a trap coincident with + + removing the binary change event and placing the unary change + event alertRemovalOfBinaryChangeEntry(1801) in the alert + table. For such a trap, the prtAlertIndex sent with the above + trap parameters shall be the index of the + alertRemovalOfBinaryChangeEvent row that was added to the + prtAlertTable; not the index of the row that was removed from + the prtAlertTable." + SYNTAX INTEGER { + other(1), + -- an event that is not represented + -- by one of the alert codes + -- specified below. + unknown(2), + -- The following generic codes are common to + -- multiple groups. The NMS may examine the + -- prtAlertGroup object to determine what group + -- to query for further information. + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6), + configurationChange(7), + jam(8), + subunitMissing(9), -- Not in RFC 1759 + -- The subunit tray, bin, etc. + -- has been removed. + subunitLifeAlmostOver(10), -- Not in RFC 1759 + subunitLifeOver(11), -- Not in RFC 1759 + subunitAlmostEmpty(12), -- Not in RFC 1759 + subunitEmpty(13), -- Not in RFC 1759 + subunitAlmostFull(14), -- Not in RFC 1759 + subunitFull(15), -- Not in RFC 1759 + subunitNearLimit(16), -- Not in RFC 1759 + subunitAtLimit(17), -- Not in RFC 1759 + subunitOpened(18), -- Not in RFC 1759 + subunitClosed(19), -- Not in RFC 1759 + subunitTurnedOn(20), -- Not in RFC 1759 + subunitTurnedOff(21), -- Not in RFC 1759 + subunitOffline(22), -- Not in RFC 1759 + subunitPowerSaver(23), -- Not in RFC 1759 + subunitWarmingUp(24), -- Not in RFC 1759 + subunitAdded(25), -- Not in RFC 1759 + subunitRemoved(26), -- Not in RFC 1759 + subunitResourceAdded(27), -- Not in RFC 1759 + subunitResourceRemoved(28), -- Not in RFC 1759 + subunitRecoverableFailure(29), + -- Not in RFC 1759 + subunitUnrecoverableFailure(30), + + -- Not in RFC 1759 + subunitRecoverableStorageError(31), + -- Not in RFC 1759 + subunitUnrecoverableStorageError(32), + -- Not in RFC 1759 + subunitMotorFailure(33), -- Not in RFC 1759 + subunitMemoryExhausted(34), -- Not in RFC 1759 + subunitUnderTemperature(35), -- Not in RFC 1759 + subunitOverTemperature(36), -- Not in RFC 1759 + subunitTimingFailure(37), -- Not in RFC 1759 + subunitThermistorFailure(38), -- Not in RFC 1759 + + -- General Printer group + doorOpen(501), -- DEPRECATED + -- Use coverOpened(3) + doorClosed(502), -- DEPRECATED + -- Use coverClosed(4) + powerUp(503), + powerDown(504), + printerNMSReset(505), -- Not in RFC 1759 + -- The printer has been reset by some + -- network management station(NMS) + -- writing into 'prtGeneralReset'. + printerManualReset(506), -- Not in RFC 1759 + -- The printer has been reset manually. + printerReadyToPrint(507), -- Not in RFC 1759 + -- The printer is ready to print. (i.e., + -- not warming up, not in power save + -- state, not adjusting print quality, + -- etc.). + + -- Input Group + inputMediaTrayMissing(801), + inputMediaSizeChange(802), + inputMediaWeightChange(803), + inputMediaTypeChange(804), + inputMediaColorChange(805), + inputMediaFormPartsChange(806), + inputMediaSupplyLow(807), + inputMediaSupplyEmpty(808), + inputMediaChangeRequest(809), -- Not in RFC 1759 + -- An interpreter has detected that a + -- different medium is need in this input + -- tray subunit. The prtAlertDescription may + -- be used to convey a human readable + -- description of the medium required to + -- satisfy the request. + inputManualInputRequest(810), -- Not in RFC 1759 + + -- An interpreter has detected that manual + -- input is required in this subunit. The + -- prtAlertDescription may be used to convey + -- a human readable description of the medium + -- required to satisfy the request. + inputTrayPositionFailure(811), -- Not in RFC 1759 + -- The input tray failed to position correctly. + inputTrayElevationFailure(812), + -- Not in RFC 1759 + inputCannotFeedSizeSelected(813), + -- Not in RFC 1759 + -- Output Group + outputMediaTrayMissing(901), + outputMediaTrayAlmostFull(902), + outputMediaTrayFull(903), + outputMailboxSelectFailure(904), + -- Not in RFC 1759 + -- Marker group + markerFuserUnderTemperature(1001), + markerFuserOverTemperature(1002), + markerFuserTimingFailure(1003), + -- Not in RFC 1759 + markerFuserThermistorFailure(1004), + -- Not in RFC 1759 + markerAdjustingPrintQuality(1005), + -- Not in RFC 1759 + -- Marker Supplies group + markerTonerEmpty(1101), + markerInkEmpty(1102), + markerPrintRibbonEmpty(1103), + markerTonerAlmostEmpty(1104), + markerInkAlmostEmpty(1105), + markerPrintRibbonAlmostEmpty(1106), + markerWasteTonerReceptacleAlmostFull(1107), + markerWasteInkReceptacleAlmostFull(1108), + markerWasteTonerReceptacleFull(1109), + markerWasteInkReceptacleFull(1110), + markerOpcLifeAlmostOver(1111), + markerOpcLifeOver(1112), + markerDeveloperAlmostEmpty(1113), + markerDeveloperEmpty(1114), + markerTonerCartridgeMissing(1115), + -- Not in RFC 1759 + -- Media Path Device Group + mediaPathMediaTrayMissing(1301), + mediaPathMediaTrayAlmostFull(1302), + mediaPathMediaTrayFull(1303), + mediaPathCannotDuplexMediaSelected(1304), + + -- Not in RFC 1759 + -- Interpreter Group + interpreterMemoryIncrease(1501), + interpreterMemoryDecrease(1502), + interpreterCartridgeAdded(1503), + interpreterCartridgeDeleted(1504), + interpreterResourceAdded(1505), + interpreterResourceDeleted(1506), + interpreterResourceUnavailable(1507), + interpreterComplexPageEncountered(1509), + -- Not in RFC 1759 + -- The interpreter has encountered a page + -- that is too complex for the resources that + -- are available. + -- Alert Group + alertRemovalOfBinaryChangeEntry(1801) + -- Not in RFC 1759 + -- A binary change event entry has been + -- removed from the alert table. This unary + -- change alert table entry is added to the + -- end of the alert table. + } +END + + diff --git a/mibs/iana/IANA-RTPROTO-MIB b/mibs/iana/IANA-RTPROTO-MIB new file mode 100644 index 0000000..952c84e --- /dev/null +++ b/mibs/iana/IANA-RTPROTO-MIB @@ -0,0 +1,92 @@ + +IANA-RTPROTO-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ianaRtProtoMIB MODULE-IDENTITY + LAST-UPDATED "200009260000Z" -- September 26, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + " Internet Assigned Numbers Authority + Internet Corporation for Assigned Names and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + + Phone: +1 310 823 9358 + EMail: iana&iana.org" + DESCRIPTION + "This MIB module defines the IANAipRouteProtocol and + IANAipMRouteProtocol textual conventions for use in MIBs + which need to identify unicast or multicast routing + mechanisms. + + Any additions or changes to the contents of this MIB module + require either publication of an RFC, or Designated Expert + Review as defined in RFC 2434, Guidelines for Writing an + IANA Considerations Section in RFCs. The Designated Expert + will be selected by the IESG Area Director(s) of the Routing + Area." + + REVISION "200009260000Z" -- September 26, 2000 + DESCRIPTION "Original version, published in coordination + with RFC 2932." + + ::= { mib-2 84 } + +IANAipRouteProtocol ::= TEXTUAL-CONVENTION + STATUS current + + DESCRIPTION + "A mechanism for learning routes. Inclusion of values for + routing protocols is not intended to imply that those + protocols need be supported." + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16), -- Cisco EIGRP + dvmrp (17) -- DVMRP + } + +IANAipMRouteProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The multicast routing protocol. Inclusion of values for + multicast routing protocols is not intended to imply that + those protocols need be supported." + SYNTAX INTEGER { + other(1), -- none of the following + local(2), -- e.g., manually configured + netmgmt(3), -- set via net.mgmt protocol + dvmrp(4), + mospf(5), + pimSparseDense(6), -- PIMv1, both DM and SM + cbt(7), + pimSparseMode(8), -- PIM-SM + pimDenseMode(9), -- PIM-DM + igmpOnly(10), + bgmp(11), + msdp(12) + } + +END + + diff --git a/mibs/iana/IANATn3270eTC-MIB b/mibs/iana/IANATn3270eTC-MIB new file mode 100644 index 0000000..e774ac0 --- /dev/null +++ b/mibs/iana/IANATn3270eTC-MIB @@ -0,0 +1,306 @@ + + IANATn3270eTC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + ianaTn3270eTcMib MODULE-IDENTITY + LAST-UPDATED "200005100000Z" -- May 10, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 x20 + E-Mail: iana&iana.org" + DESCRIPTION + "This module defines a set of textual conventions + for use by the TN3270E-MIB and the TN3270E-RT-MIB. + + Any additions or changes to the contents of this + MIB module must first be discussed on the tn3270e + working group list at: tn3270e&list.nih.gov + and approved by one of the following TN3270E + working group contacts: + + Ed Bailey (co-chair) - elbailey&us.ibm.com + Michael Boe (co-chair) - mboe&cisco.com + Ken White - kennethw&vnet.ibm.com + Robert Moore - remoore&us.ibm.com + + The above list of contacts can be altered with + the approval of the two co-chairs. + + The Textual Conventions defined within this MIB have + no security issues associated with them unless + explicitly stated in their corresponding + DESCRIPTION clause." + + -- revision log, in reverse chronological order + + REVISION "200005100000Z" -- May 10, 2000 + DESCRIPTION "Fix to import mib-2 instead of experimental." + + REVISION "199909011000Z" -- September 1, 1999 + DESCRIPTION + "Initial version transferred from the TN3270E + working group to IANA." + + ::= { mib-2 61 } + + + -- Textual Conventions + + IANATn3270eAddrType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the type of a + client address. The enumeration value unknown(0) is + also used to indicate that no actual address is present." + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2) + } + + IANATn3270eAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a client address. The type of client address is + determined by use of the IANATn3270eAddrType textual +convention. + The length in octets of a IANATn3270eAddress object is: + + IANATn3270eAddrType Address Length + +++++++++++++++++++ ++++++++++++++ + unknown(0) not specified or unknown; the + actual length of the + IANATn3270eAddress octet string + indicates if an address + is present + ipv4(1) 4 OCTETS + ipv6(2) 16 OCTETS + + This textual convention is similar to the TAddress + TC defined by RFC1903 except that it allows a + zero-length octet string and is not a full transport + layer address." + SYNTAX OCTET STRING (SIZE (0..255)) + + IANATn3270eClientType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the set of + enumerations used by tn3270eTcpConnClientIdFormat + in the TN3270E-MIB: + + ENUMERATION OCTETs DESCRIPTION + + none(1) 0 Not specified + other(2) 1..512 Implementation specific + ipv4(3) 6 4-octet IP Address plus + 2-octet TCP Port + ipv6(4) 18 16-octet IPv6 Address + plus 2-octet TCP Port + domainName(5) 1..512 The DNS name of a + client. + truncDomainName(6) 1..512 The (truncated) DNS name + of a client. + string(7) 1..512 Unknown Utf8String + certificate(8) 1..512 certificate + userId(9) 1..8 Client's userid + x509dn(10) 1..512 X.509 Distinguished Name + + Representation of a certificate(8) may be lead to + a security exposure and is NOT RECOMMENDED without + adequate security." + SYNTAX INTEGER { + none(1), + other(2), + ipv4(3), + ipv6(4), + domainName(5), + truncDomainName(6), + string(7), + certificate(8), + userId(9), + x509dn(10) + } + + IANATn3270Functions ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention reflects the current set of + TN3270 and TN3270E functions that can be negotiated + between a server and its client: + + RFC856 + transmitBinary The sender of this command REQUESTS + permission to begin transmitting, or + confirms that it will now begin + transmitting characters which are to + be interpreted as 8 bits of binary + data by the receiver of the data. + RFC860 + timingMark The sender of this command REQUESTS + that the receiver of this command + return a WILL TIMING-MARK in the data + stream at the 'appropriate place'. + RFC885 + endOfRecord The sender of this command requests + permission to begin transmission of + the Telnet END-OF-RECORD (EOR) code + when transmitting data characters, or + the sender of this command confirms it + will now begin transmission of EORs + with transmitted data characters. + RFC1091 + terminalType Sender is willing to send terminal + type information in a subsequent + sub-negotiation. + + RFC1041 + tn3270Regime Sender is willing to send list of + supported 3270 Regimes in a + subsequent sub-negotiation. + RFC2355 + scsCtlCodes (Printer sessions only). Allows the + use of the SNA Character Stream (SCS) + and SCS control codes on the session. + SCS is used with LU type 1 SNA sessions. + dataStreamCtl (Printer sessions only). Allows the use + of the standard 3270 data stream. This + corresponds to LU type 3 SNA sessions. + responses Provides support for positive and + negative response handling. Allows the + server to reflect to the client any and + all definite, exception, and no response + requests sent by the host application. + bindImage Allows the server to send the SNA Bind + image and Unbind notification to the + client. + sysreq Allows the client and server to emulate + some (or all, depending on the server) of + the functions of the SYSREQ key in an SNA + environment." + SYNTAX BITS { + transmitBinary(0),-- rfc856 + timemark(1), -- rfc860 + endOfRecord(2), -- rfc885 + terminalType(3), -- rfc1091 + tn3270Regime(4), -- rfc1041 + scsCtlCodes(5), -- rfc2355 + dataStreamCtl(6), -- rfc2355 + responses(7), -- rfc2355 + bindImage(8), -- rfc2355 + sysreq(9) -- rfc2355 + } + + IANATn3270ResourceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of resource defined by a resource pool. Refer + to tn3270eResPoolTable." + SYNTAX INTEGER { + other(1), + terminal(2), + printer(3), + terminalOrPrinter(4) + } + + IANATn3270DeviceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention defines the list of device + types that can be set, as defined by RFC 2355." + SYNTAX INTEGER { + -- terminals + ibm3278d2(1), -- (24 row x 80 col display) + ibm3278d2E(2), -- (24 row x 80 col display) + ibm3278d3(3), -- (32 row x 80 col display) + ibm3278d3E(4), -- (32 row x 80 col display) + ibm3278d4(5), -- (43 row x 80 col display) + ibm3278d4E(6), -- (43 row x 80 col display) + ibm3278d5(7), -- (27 row x 132 col display) + ibm3278d5E(8), -- (27 row x 132 col display) + ibmDynamic(9), -- (no pre-defined display size) + + -- printers + ibm3287d1(10), + + unknown(100) + } + + IANATn3270eLogData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string representing log data as pertaining to + either a TN3270 or TN3270E Session as reported from a + TN3270E Server. Log data is stored in an octet string + in time order (from earliest to latest). + + Each log element has the following form: + + +------+----+---------+------------+ + !length!type!TimeStamp! data ! + +------+----+---------+------------+ + + where + + length = one-octet length of the data portion of the + trace element, not including the length, + type, and TimeStamp fields + type = one-octet code point characterizing the data. + TimeStamp = A 4-octet field representing the number of + TimeTicks since the TN3270E server was last + activated. The server's last activation time + is available in the tn3270eSrvrConfLastActTime + object in the TN3270E MIB, which has the + syntax DateAndTime. + data = initial part of a PDU. + + length type + + 0-255 x'00' - unknown + 0 x'01' - inactivity timer expired + 0 x'02' - dynamic timer expired + 0 x'03' - actlu req + 0 x'04' - bind req + 0 x'05' - clear req + 0 x'06' - dactlu req + 0 x'07' - warm actpu req + 0 x'08' - sdt req + 0 x'09' - unbind req + 0 x'0A' - notify resp + 0 x'0B' - reply PSID neg rsp + 0 x'0C' - reply PSID pos rsp + 0 x'0D' - unbind rsp + 0 x'0E' - hierarchical reset + 0 x'0F' - client connect req + 0 x'10' - client disconnect req + 0 x'11' - timingmark received + 0 x'12' - flowControl timer expired + 0 x'13' - neg rsp to host + 0 x'14' - neg rsp from host + 0 x'15' - data contention + 0 x'16' - no buffer to send SNA data + 0 x'17' - receive response while inbound + 0 x'18' - client protocol error + 0 x'19' - badClientSequenceReceived + 1-255 x'1A' - utf8String + 2 x'1B' - hexCode, implementation dependent + + Log element entries have a minimum length of 6 octets. + The zero-length string indicates that no log data is + available." + SYNTAX OCTET STRING (SIZE (0 | 6..2048)) + + END + + diff --git a/mibs/iana/IANAifType-MIB b/mibs/iana/IANAifType-MIB new file mode 100644 index 0000000..39dddf9 --- /dev/null +++ b/mibs/iana/IANAifType-MIB @@ -0,0 +1,572 @@ + IANAifType-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaifType MODULE-IDENTITY + LAST-UPDATED "200709130000Z" -- September 13, 2007 + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines the IANAifType Textual + Convention, and thus the enumerated values of + the ifType object defined in MIB-II's ifTable." + + REVISION "200709130000Z" -- September 13, 2007 + DESCRIPTION "Registration of new IANAifTypes 243 and 244." + + REVISION "200705290000Z" -- May 29, 2007 + DESCRIPTION "Changed the description for IANAifType 228." + + REVISION "200703080000Z" -- March 08, 2007 + DESCRIPTION "Registration of new IANAifType 242." + + REVISION "200701230000Z" -- January 23, 2007 + DESCRIPTION "Registration of new IANAifTypes 239, 240, and 241." + + REVISION "200610170000Z" -- October 17, 2006 + DESCRIPTION "Deprecated/Obsoleted IANAifType 230. Registration of + IANAifType 238." + + REVISION "200609250000Z" -- September 25, 2006 + DESCRIPTION "Changed the description for IANA ifType + 184 and added new IANA ifType 237." + + REVISION "200608170000Z" -- August 17, 2006 + DESCRIPTION "Changed the descriptions for IANAifTypes + 20 and 21." + + REVISION "200608110000Z" -- August 11, 2006 + DESCRIPTION "Changed the descriptions for IANAifTypes + 7, 11, 62, 69, and 117." + + REVISION "200607250000Z" -- July 25, 2006 + DESCRIPTION "Registration of new IANA ifType 236." + + REVISION "200606140000Z" -- June 14, 2006 + DESCRIPTION "Registration of new IANA ifType 235." + + REVISION "200603310000Z" -- March 31, 2006 + DESCRIPTION "Registration of new IANA ifType 234." + + REVISION "200603300000Z" -- March 30, 2006 + DESCRIPTION "Registration of new IANA ifType 233." + + REVISION "200512220000Z" -- December 22, 2005 + DESCRIPTION "Registration of new IANA ifTypes 231 and 232." + + REVISION "200510100000Z" -- October 10, 2005 + DESCRIPTION "Registration of new IANA ifType 230." + + REVISION "200509090000Z" -- September 09, 2005 + DESCRIPTION "Registration of new IANA ifType 229." + + REVISION "200505270000Z" -- May 27, 2005 + DESCRIPTION "Registration of new IANA ifType 228." + + REVISION "200503030000Z" -- March 3, 2005 + DESCRIPTION "Added the IANAtunnelType TC and deprecated + IANAifType sixToFour (215) per RFC4087." + + REVISION "200411220000Z" -- November 22, 2004 + DESCRIPTION "Registration of new IANA ifType 227 per RFC4631." + + REVISION "200406170000Z" -- June 17, 2004 + DESCRIPTION "Registration of new IANA ifType 226." + + REVISION "200405120000Z" -- May 12, 2004 + DESCRIPTION "Added description for IANAifType 6, and + changed the descriptions for IANAifTypes + 180, 181, and 182." + + REVISION "200405070000Z" -- May 7, 2004 + DESCRIPTION "Registration of new IANAifType 225." + + REVISION "200308250000Z" -- Aug 25, 2003 + DESCRIPTION "Deprecated IANAifTypes 7 and 11. Obsoleted + IANAifTypes 62, 69, and 117. ethernetCsmacd (6) + should be used instead of these values" + + REVISION "200308180000Z" -- Aug 18, 2003 + DESCRIPTION "Registration of new IANAifType + 224." + + REVISION "200308070000Z" -- Aug 7, 2003 + DESCRIPTION "Registration of new IANAifTypes + 222 and 223." + + REVISION "200303180000Z" -- Mar 18, 2003 + DESCRIPTION "Registration of new IANAifType + 221." + + REVISION "200301130000Z" -- Jan 13, 2003 + DESCRIPTION "Registration of new IANAifType + 220." + + REVISION "200210170000Z" -- Oct 17, 2002 + DESCRIPTION "Registration of new IANAifType + 219." + + REVISION "200207160000Z" -- Jul 16, 2002 + DESCRIPTION "Registration of new IANAifTypes + 217 and 218." + + REVISION "200207100000Z" -- Jul 10, 2002 + DESCRIPTION "Registration of new IANAifTypes + 215 and 216." + + REVISION "200206190000Z" -- Jun 19, 2002 + DESCRIPTION "Registration of new IANAifType + 214." + + REVISION "200201040000Z" -- Jan 4, 2002 + DESCRIPTION "Registration of new IANAifTypes + 211, 212 and 213." + + REVISION "200112200000Z" -- Dec 20, 2001 + DESCRIPTION "Registration of new IANAifTypes + 209 and 210." + + REVISION "200111150000Z" -- Nov 15, 2001 + DESCRIPTION "Registration of new IANAifTypes + 207 and 208." + + + REVISION "200111060000Z" -- Nov 6, 2001 + DESCRIPTION "Registration of new IANAifType + 206." + + + REVISION "200111020000Z" -- Nov 2, 2001 + DESCRIPTION "Registration of new IANAifType + 205." + + + REVISION "200110160000Z" -- Oct 16, 2001 + DESCRIPTION "Registration of new IANAifTypes + 199, 200, 201, 202, 203, and 204." + + + REVISION "200109190000Z" -- Sept 19, 2001 + DESCRIPTION "Registration of new IANAifType + 198." + + REVISION "200105110000Z" -- May 11, 2001 + DESCRIPTION "Registration of new IANAifType + 197." + + + REVISION "200101120000Z" -- Jan 12, 2001 + DESCRIPTION "Registration of new IANAifTypes + 195 and 196." + + REVISION "200012190000Z" -- Dec 19, 2000 + DESCRIPTION "Registration of new IANAifTypes + 193 and 194." + + REVISION "200012070000Z" -- Dec 07, 2000 + DESCRIPTION "Registration of new IANAifTypes + 191 and 192." + + REVISION "200012040000Z" -- Dec 04, 2000 + DESCRIPTION "Registration of new IANAifType + 190." + + REVISION "200010170000Z" -- Oct 17, 2000 + DESCRIPTION "Registration of new IANAifTypes + 188 and 189." + + REVISION "200010020000Z" -- Oct 02, 2000 + DESCRIPTION "Registration of new IANAifType 187." + + REVISION "200009010000Z" -- Sept 01, 2000 + DESCRIPTION "Registration of new IANAifTypes + 184, 185, and 186." + + REVISION "200008240000Z" -- Aug 24, 2000 + DESCRIPTION "Registration of new IANAifType 183." + + REVISION "200008230000Z" -- Aug 23, 2000 + DESCRIPTION "Registration of new IANAifTypes + 174-182." + + REVISION "200008220000Z" -- Aug 22, 2000 + DESCRIPTION "Registration of new IANAifTypes 170, + 171, 172 and 173." + + REVISION "200004250000Z" -- Apr 25, 2000 + DESCRIPTION "Registration of new IANAifTypes 168 and 169." + + REVISION "200003060000Z" -- Mar 6, 2000 + DESCRIPTION "Fixed a missing semi-colon in the IMPORT. + Also cleaned up the REVISION log a bit. + It is not complete, but from now on it will + be maintained and kept up to date with each + change to this MIB module." + + REVISION "199910081430Z" -- Oct 08, 1999 + DESCRIPTION "Include new name assignments up to cnr(85). + This is the first version available via the WWW + at: ftp://ftp.isi.edu/mib/ianaiftype.mib" + + REVISION "199401310000Z" -- Jan 31, 1994 + DESCRIPTION "Initial version of this MIB as published in + RFC 1573." + + ::= { 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&iana.org). + + 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), -- for all ethernet-like interfaces, + -- regardless of speed, as per RFC3635 + iso88023Csmacd(7), -- Deprecated via RFC3635 + -- ethernetCsmacd (6) should be used instead + iso88024TokenBus(8), + iso88025TokenRing(9), + iso88026Man(10), + starLan(11), -- Deprecated via RFC3635 + -- ethernetCsmacd (6) should be used instead + proteon10Mbit(12), + proteon80Mbit(13), + hyperchannel(14), + fddi(15), + lapb(16), + sdlc(17), + ds1(18), -- DS1-MIB + e1(19), -- Obsolete see DS1-MIB + basicISDN(20), -- no longer used + -- see also RFC2127 + primaryISDN(21), -- no longer used + -- see also RFC2127 + propPointToPointSerial(22), -- proprietary serial + ppp(23), + softwareLoopback(24), + eon(25), -- CLNP over IP + ethernet3Mbit(26), + nsip(27), -- XNS over IP + slip(28), -- generic SLIP + ultra(29), -- ULTRA technologies + ds3(30), -- DS3-MIB + sip(31), -- SMDS, coffee + 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), -- FRNETSERV-MIB + 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 + ieee80212(55), -- 100BaseVG + fibreChannel(56), -- Fibre Channel + hippiInterface(57), -- HIPPI interfaces + frameRelayInterconnect(58), -- Obsolete use either + -- frameRelay(32) or + -- frameRelayService(44). + aflane8023(59), -- ATM Emulated LAN for 802.3 + aflane8025(60), -- ATM Emulated LAN for 802.5 + cctEmul(61), -- ATM Emulated circuit + fastEther(62), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + isdn(63), -- ISDN and X.25 + v11(64), -- CCITT V.11/X.21 + v36(65), -- CCITT V.36 + g703at64k(66), -- CCITT G703 at 64Kbps + g703at2mb(67), -- Obsolete see DS1-MIB + qllc(68), -- SNA QLLC + fastEtherFX(69), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + channel(70), -- channel + ieee80211(71), -- radio spread spectrum + ibm370parChan(72), -- IBM System 360/370 OEMI Channel + escon(73), -- IBM Enterprise Systems Connection + dlsw(74), -- Data Link Switching + isdns(75), -- ISDN S/T interface + isdnu(76), -- ISDN U interface + lapd(77), -- Link Access Protocol D + ipSwitch(78), -- IP Switching Objects + rsrb(79), -- Remote Source Route Bridging + atmLogical(80), -- ATM Logical Port + ds0(81), -- Digital Signal Level 0 + ds0Bundle(82), -- group of ds0s on the same ds1 + bsc(83), -- Bisynchronous Protocol + async(84), -- Asynchronous Protocol + cnr(85), -- Combat Net Radio + iso88025Dtr(86), -- ISO 802.5r DTR + eplrs(87), -- Ext Pos Loc Report Sys + arap(88), -- Appletalk Remote Access Protocol + propCnls(89), -- Proprietary Connectionless Protocol + hostPad(90), -- CCITT-ITU X.29 PAD Protocol + termPad(91), -- CCITT-ITU X.3 PAD Facility + frameRelayMPI(92), -- Multiproto Interconnect over FR + x213(93), -- CCITT-ITU X213 + adsl(94), -- Asymmetric Digital Subscriber Loop + radsl(95), -- Rate-Adapt. Digital Subscriber Loop + sdsl(96), -- Symmetric Digital Subscriber Loop + vdsl(97), -- Very H-Speed Digital Subscrib. Loop + iso88025CRFPInt(98), -- ISO 802.5 CRFP + myrinet(99), -- Myricom Myrinet + voiceEM(100), -- voice recEive and transMit + voiceFXO(101), -- voice Foreign Exchange Office + voiceFXS(102), -- voice Foreign Exchange Station + voiceEncap(103), -- voice encapsulation + voiceOverIp(104), -- voice over IP encapsulation + atmDxi(105), -- ATM DXI + atmFuni(106), -- ATM FUNI + atmIma (107), -- ATM IMA + pppMultilinkBundle(108), -- PPP Multilink Bundle + ipOverCdlc (109), -- IBM ipOverCdlc + ipOverClaw (110), -- IBM Common Link Access to Workstn + stackToStack (111), -- IBM stackToStack + virtualIpAddress (112), -- IBM VIPA + mpc (113), -- IBM multi-protocol channel support + ipOverAtm (114), -- IBM ipOverAtm + iso88025Fiber (115), -- ISO 802.5j Fiber Token Ring + tdlc (116), -- IBM twinaxial data link control + gigabitEthernet (117), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + hdlc (118), -- HDLC + lapf (119), -- LAP F + v37 (120), -- V.37 + x25mlp (121), -- Multi-Link Protocol + x25huntGroup (122), -- X25 Hunt Group + trasnpHdlc (123), -- Transp HDLC + interleave (124), -- Interleave channel + fast (125), -- Fast channel + ip (126), -- IP (for APPN HPR in IP networks) + docsCableMaclayer (127), -- CATV Mac Layer + docsCableDownstream (128), -- CATV Downstream interface + docsCableUpstream (129), -- CATV Upstream interface + a12MppSwitch (130), -- Avalon Parallel Processor + tunnel (131), -- Encapsulation interface + coffee (132), -- coffee pot + ces (133), -- Circuit Emulation Service + atmSubInterface (134), -- ATM Sub Interface + l2vlan (135), -- Layer 2 Virtual LAN using 802.1Q + l3ipvlan (136), -- Layer 3 Virtual LAN using IP + l3ipxvlan (137), -- Layer 3 Virtual LAN using IPX + digitalPowerline (138), -- IP over Power Lines + mediaMailOverIp (139), -- Multimedia Mail over IP + dtm (140), -- Dynamic syncronous Transfer Mode + dcn (141), -- Data Communications Network + ipForward (142), -- IP Forwarding Interface + msdsl (143), -- Multi-rate Symmetric DSL + ieee1394 (144), -- IEEE1394 High Performance Serial Bus + if-gsn (145), -- HIPPI-6400 + dvbRccMacLayer (146), -- DVB-RCC MAC Layer + dvbRccDownstream (147), -- DVB-RCC Downstream Channel + dvbRccUpstream (148), -- DVB-RCC Upstream Channel + atmVirtual (149), -- ATM Virtual Interface + mplsTunnel (150), -- MPLS Tunnel Virtual Interface + srp (151), -- Spatial Reuse Protocol + voiceOverAtm (152), -- Voice Over ATM + voiceOverFrameRelay (153), -- Voice Over Frame Relay + idsl (154), -- Digital Subscriber Loop over ISDN + compositeLink (155), -- Avici Composite Link Interface + ss7SigLink (156), -- SS7 Signaling Link + propWirelessP2P (157), -- Prop. P2P wireless interface + frForward (158), -- Frame Forward Interface + rfc1483 (159), -- Multiprotocol over ATM AAL5 + usb (160), -- USB Interface + ieee8023adLag (161), -- IEEE 802.3ad Link Aggregate + bgppolicyaccounting (162), -- BGP Policy Accounting + frf16MfrBundle (163), -- FRF .16 Multilink Frame Relay + h323Gatekeeper (164), -- H323 Gatekeeper + h323Proxy (165), -- H323 Voice and Video Proxy + mpls (166), -- MPLS + mfSigLink (167), -- Multi-frequency signaling link + hdsl2 (168), -- High Bit-Rate DSL - 2nd generation + shdsl (169), -- Multirate HDSL2 + ds1FDL (170), -- Facility Data Link 4Kbps on a DS1 + pos (171), -- Packet over SONET/SDH Interface + dvbAsiIn (172), -- DVB-ASI Input + dvbAsiOut (173), -- DVB-ASI Output + plc (174), -- Power Line Communtications + nfas (175), -- Non Facility Associated Signaling + tr008 (176), -- TR008 + gr303RDT (177), -- Remote Digital Terminal + gr303IDT (178), -- Integrated Digital Terminal + isup (179), -- ISUP + propDocsWirelessMaclayer (180), -- Cisco proprietary Maclayer + propDocsWirelessDownstream (181), -- Cisco proprietary Downstream + propDocsWirelessUpstream (182), -- Cisco proprietary Upstream + hiperlan2 (183), -- HIPERLAN Type 2 Radio Interface + propBWAp2Mp (184), -- PropBroadbandWirelessAccesspt2multipt + -- use of this iftype for IEEE 802.16 WMAN + -- interfaces as per IEEE Std 802.16f is + -- deprecated and ifType 237 should be used instead. + sonetOverheadChannel (185), -- SONET Overhead Channel + digitalWrapperOverheadChannel (186), -- Digital Wrapper + aal2 (187), -- ATM adaptation layer 2 + radioMAC (188), -- MAC layer over radio links + atmRadio (189), -- ATM over radio links + imt (190), -- Inter Machine Trunks + mvl (191), -- Multiple Virtual Lines DSL + reachDSL (192), -- Long Reach DSL + frDlciEndPt (193), -- Frame Relay DLCI End Point + atmVciEndPt (194), -- ATM VCI End Point + opticalChannel (195), -- Optical Channel + opticalTransport (196), -- Optical Transport + propAtm (197), -- Proprietary ATM + voiceOverCable (198), -- Voice Over Cable Interface + infiniband (199), -- Infiniband + teLink (200), -- TE Link + q2931 (201), -- Q.2931 + virtualTg (202), -- Virtual Trunk Group + sipTg (203), -- SIP Trunk Group + sipSig (204), -- SIP Signaling + docsCableUpstreamChannel (205), -- CATV Upstream Channel + econet (206), -- Acorn Econet + pon155 (207), -- FSAN 155Mb Symetrical PON interface + pon622 (208), -- FSAN622Mb Symetrical PON interface + bridge (209), -- Transparent bridge interface + linegroup (210), -- Interface common to multiple lines + voiceEMFGD (211), -- voice E&M Feature Group D + voiceFGDEANA (212), -- voice FGD Exchange Access North American + voiceDID (213), -- voice Direct Inward Dialing + mpegTransport (214), -- MPEG transport interface + sixToFour (215), -- 6to4 interface (DEPRECATED) + gtp (216), -- GTP (GPRS Tunneling Protocol) + pdnEtherLoop1 (217), -- Paradyne EtherLoop 1 + pdnEtherLoop2 (218), -- Paradyne EtherLoop 2 + opticalChannelGroup (219), -- Optical Channel Group + homepna (220), -- HomePNA ITU-T G.989 + gfp (221), -- Generic Framing Procedure (GFP) + ciscoISLvlan (222), -- Layer 2 Virtual LAN using Cisco ISL + actelisMetaLOOP (223), -- Acteleis proprietary MetaLOOP High Speed Link + fcipLink (224), -- FCIP Link + rpr (225), -- Resilient Packet Ring Interface Type + qam (226), -- RF Qam Interface + lmp (227), -- Link Management Protocol + cblVectaStar (228), -- Cambridge Broadband Networks Limited VectaStar + docsCableMCmtsDownstream (229), -- CATV Modular CMTS Downstream Interface + adsl2 (230), -- Asymmetric Digital Subscriber Loop Version 2 + -- (DEPRECATED/OBSOLETED - please use adsl2plus 238 instead) + macSecControlledIF (231), -- MACSecControlled + macSecUncontrolledIF (232), -- MACSecUncontrolled + aviciOpticalEther (233), -- Avici Optical Ethernet Aggregate + atmbond (234), -- atmbond + voiceFGDOS (235), -- voice FGD Operator Services + mocaVersion1 (236), -- MultiMedia over Coax Alliance (MoCA) Interface + -- as documented in information provided privately to IANA + ieee80216WMAN (237), -- IEEE 802.16 WMAN interface + adsl2plus (238), -- Asymmetric Digital Subscriber Loop Version 2, + -- Version 2 Plus and all variants + dvbRcsMacLayer (239), -- DVB-RCS MAC Layer + dvbTdm (240), -- DVB Satellite TDM + dvbRcsTdma (241), -- DVB-RCS TDMA + x86Laps (242), -- LAPS based on ITU-T X.86/Y.1323 + wwanPP (243), -- 3GPP WWAN + wwanPP2 (244) -- 3GPP2 WWAN + } + +IANAtunnelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The encapsulation method used by a tunnel. The value + direct indicates that a packet is encapsulated + directly within a normal IP header, with no + intermediate header, and unicast to the remote tunnel + endpoint (e.g., an RFC 2003 IP-in-IP tunnel, or an RFC + 1933 IPv6-in-IPv4 tunnel). The value minimal indicates + that a Minimal Forwarding Header (RFC 2004) is + inserted between the outer header and the payload + packet. The value UDP indicates that the payload + packet is encapsulated within a normal UDP packet + (e.g., RFC 1234). + + The values sixToFour, sixOverFour, and isatap + indicates that an IPv6 packet is encapsulated directly + within an IPv4 header, with no intermediate header, + and unicast to the destination determined by the 6to4, + 6over4, or ISATAP protocol. + + The remaining protocol-specific values indicate that a + header of the protocol of that name is inserted + between the outer header and the payload header. + + The assignment policy for IANAtunnelType values is + identical to the policy for assigning IANAifType + values." + SYNTAX INTEGER { + other(1), -- none of the following + direct(2), -- no intermediate header + gre(3), -- GRE encapsulation + minimal(4), -- Minimal encapsulation + l2tp(5), -- L2TP encapsulation + pptp(6), -- PPTP encapsulation + l2f(7), -- L2F encapsulation + udp(8), -- UDP encapsulation + atmp(9), -- ATMP encapsulation + msdp(10), -- MSDP encapsulation + sixToFour(11), -- 6to4 encapsulation + sixOverFour(12), -- 6over4 encapsulation + isatap(13), -- ISATAP encapsulation + teredo(14) -- Teredo encapsulation + } + + END + + + + + + + + + diff --git a/mibs/iana/Makefile.am b/mibs/iana/Makefile.am new file mode 100644 index 0000000..2f63cbd --- /dev/null +++ b/mibs/iana/Makefile.am @@ -0,0 +1,21 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/iana Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 6629 2007-03-05 14:59:30Z strauss $ +# + +ianadir = $(mibdir)/iana +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +iana_DATA = $(MIBS) +MIBURLS = http://www.iana.org/assignments/ianaaddressfamilynumbers-mib http://www.iana.org/assignments/ianacharset-mib http://www.iana.org/assignments/ianafinisher-mib http://www.iana.org/assignments/ianaiftype-mib http://www.iana.org/assignments/ianaiprouteprotocol-mib http://www.iana.org/assignments/ianalanguage-mib http://www.iana.org/assignments/ianamalloc-mib http://www.iana.org/assignments/ianaprinter-mib http://www.iana.org/assignments/ianatn3270etc-mib http://www.iana.org/assignments/ianagmplstc-mib http://www.iana.org/assignments/ianaippmmetricsregistry-mib http://www.iana.org/assignments/ianaitualarmtc-mib http://www.iana.org/assignments/ianamau-mib + +download: + mkdir tmp ; cd tmp ; for m in $(MIBURLS) ; do curl -s -O $$m ; b=`basename $$m` ; f=`head -5 $$b | grep DEFINITIONS | awk '{print $$1}'` ; cmp -s $$b ../$$f || cp -v $$b ../$$f ; done ; cd .. ; rm -rf tmp diff --git a/mibs/iana/Makefile.in b/mibs/iana/Makefile.in new file mode 100644 index 0000000..562e909 --- /dev/null +++ b/mibs/iana/Makefile.in @@ -0,0 +1,392 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/iana Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 6629 2007-03-05 14:59:30Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/iana +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(ianadir)" +ianaDATA_INSTALL = $(INSTALL_DATA) +DATA = $(iana_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ianadir = $(mibdir)/iana +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +iana_DATA = $(MIBS) +MIBURLS = http://www.iana.org/assignments/ianaaddressfamilynumbers-mib http://www.iana.org/assignments/ianacharset-mib http://www.iana.org/assignments/ianafinisher-mib http://www.iana.org/assignments/ianaiftype-mib http://www.iana.org/assignments/ianaiprouteprotocol-mib http://www.iana.org/assignments/ianalanguage-mib http://www.iana.org/assignments/ianamalloc-mib http://www.iana.org/assignments/ianaprinter-mib http://www.iana.org/assignments/ianatn3270etc-mib http://www.iana.org/assignments/ianagmplstc-mib http://www.iana.org/assignments/ianaippmmetricsregistry-mib http://www.iana.org/assignments/ianaitualarmtc-mib http://www.iana.org/assignments/ianamau-mib +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/iana/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/iana/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ianaDATA: $(iana_DATA) + @$(NORMAL_INSTALL) + test -z "$(ianadir)" || $(MKDIR_P) "$(DESTDIR)$(ianadir)" + @list='$(iana_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(ianaDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ianadir)/$$f'"; \ + $(ianaDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ianadir)/$$f"; \ + done + +uninstall-ianaDATA: + @$(NORMAL_UNINSTALL) + @list='$(iana_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(ianadir)/$$f'"; \ + rm -f "$(DESTDIR)$(ianadir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(ianadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-ianaDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-ianaDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-ianaDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-ianaDATA + + +download: + mkdir tmp ; cd tmp ; for m in $(MIBURLS) ; do curl -s -O $$m ; b=`basename $$m` ; f=`head -5 $$b | grep DEFINITIONS | awk '{print $$1}'` ; cmp -s $$b ../$$f || cp -v $$b ../$$f ; done ; cd .. ; rm -rf tmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/ietf/ACCOUNTING-CONTROL-MIB b/mibs/ietf/ACCOUNTING-CONTROL-MIB new file mode 100644 index 0000000..4b66b7c --- /dev/null +++ b/mibs/ietf/ACCOUNTING-CONTROL-MIB @@ -0,0 +1,771 @@ +ACCOUNTING-CONTROL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + mib-2, Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TestAndIncr, + DisplayString, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ifIndex FROM IF-MIB; + + +accountingControlMIB MODULE-IDENTITY + LAST-UPDATED "9809281000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing the collection and storage of + accounting information for connections in a connection- + oriented network such as ATM." + ::= { mib-2 60 } + + +acctngMIBObjects OBJECT IDENTIFIER ::= { accountingControlMIB 1 } + +acctngSelectionControl OBJECT IDENTIFIER ::= { acctngMIBObjects 1 } +acctngFileControl OBJECT IDENTIFIER ::= { acctngMIBObjects 2 } +acctngInterfaceControl OBJECT IDENTIFIER ::= { acctngMIBObjects 3 } +acctngTrapControl OBJECT IDENTIFIER ::= { acctngMIBObjects 4 } + +-- Textual Conventions + + +DataCollectionSubtree ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The subtree component of a (subtree, list) tuple. Such a + (subtree, list) tuple defines a set of objects and their + values to be collected as accounting data for a connection. + The subtree specifies a single OBJECT IDENTIFIER value such + that each object in the set is named by the subtree value + appended with a single additional sub-identifier." + SYNTAX OBJECT IDENTIFIER + +DataCollectionList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list component of a (subtree, list) tuple. Such a + (subtree, list) tuple defines a set of objects and their + values to be collected as accounting data for a connection. + The subtree specifies a single OBJECT IDENTIFIER value such + that each object in the set is named by the subtree value + appended with a single additional sub-identifier. The list + specifies a set of data items, where the presence of an item + in the list indicates that the item is (to be) present in + the data collected for a connection; the absence of an item + from the list indicates that the item is not (to be) present + in the data collected for a connection. Each data item is + represented by an integer which when appended (as as + additional sub-identifier) to the OBJECT IDENTIFIER value of + the subtree identified by the tuple, is the name of an + object defining that data item (its description and its + syntax). + + The list is specified as an OCTET STRING in which each data + item is represented by a single bit, where data items 1 + through 8 are represented by the bits in the first octet, + data items 9 through 16 by the bits in the second octet, + etc. In each octet, the lowest numbered data item is + represented by the most significant bit, and the highest + numbered data item by the least significant bit. A data + item is present in the list when its bit is set, and absent + when its bit is reset. If the length of an OCTET STRING + value is too short to represent one or more data items + defined in a subtree, then those data items are absent from + the set identified by the tuple of that subtree and that + OCTET STRING value." + SYNTAX OCTET STRING (SIZE(0..8)) + +FileIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An arbitrary integer value identifying a file into which + accounting data is being collected." + SYNTAX Integer32 (1..65535) + + +-- The Accounting Information Selection table + +acctngSelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngSelectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of accounting information selection entries. + + Note that additions, modifications and deletions of entries + in this table can occur at any time, but such changes only + take effect on the next occasion when collection begins into + a new file. Thus, between modification and the next 'swap', + the content of this table does not reflect the current + selection." + ::= { acctngSelectionControl 1 } + +acctngSelectionEntry OBJECT-TYPE + SYNTAX AcctngSelectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry identifying an (subtree, list) tuple used to + select a set of accounting information which is to be + collected." + INDEX { acctngSelectionIndex } + ::= { acctngSelectionTable 1 } + +AcctngSelectionEntry ::= + SEQUENCE { + acctngSelectionIndex Integer32, + acctngSelectionSubtree DataCollectionSubtree, + acctngSelectionList DataCollectionList, + acctngSelectionFile FileIndex, + acctngSelectionType BITS, + acctngSelectionRowStatus RowStatus + } + +acctngSelectionIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer value which uniquely identifies a + tuple stored in this table. This value is required to be + the permanent 'handle' for an entry in this table for as + long as that entry exists, including across restarts and + power outages." + ::= { acctngSelectionEntry 1 } + +acctngSelectionSubtree OBJECT-TYPE + SYNTAX DataCollectionSubtree + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The combination of acctngSelectionSubtree and + acctngSelectionList specifies one (subtree, list) tuple + which is to be collected." + ::= { acctngSelectionEntry 2 } + +acctngSelectionList OBJECT-TYPE + SYNTAX DataCollectionList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The combination of acctngSelectionSubtree and + acctngSelectionList specifies one (subtree, list) tuple + which is to be collected." + ::= { acctngSelectionEntry 3 } + +acctngSelectionFile OBJECT-TYPE + SYNTAX FileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the file into which the accounting + information identified by this entry is to be stored. If + there is no conceptual row in the acctngFileTable for which + the value of acctngFileIndex has the same value as this + object, then the information selected by this entry is not + collected." + ::= { acctngSelectionEntry 4 } + +acctngSelectionType OBJECT-TYPE + SYNTAX BITS { svcIncoming(0), + svcOutgoing(1), + svpIncoming(2), + svpOutgoing(3), + pvc(4), + pvp(5), + spvcOriginator(6), + spvcTarget(7), + spvpOriginator(8), + spvpTarget(9) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the types of connections for which the + information selected by this entry are to be collected." + DEFVAL { { svcIncoming, svcOutgoing, + svpIncoming, svpOutgoing } } + ::= { acctngSelectionEntry 5 } + +acctngSelectionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. An agent may refuse to + create new conceptual rows and/or modify existing conceptual + rows, if such creation/modification would cause multiple + rows to have the same values of acctngSelectionSubtree and + acctngSelectionList. + + A conceptual row can not have the status of 'active' until + values have been assigned to the acctngSelectionSubtree, + acctngSelectionList and acctngSelectionFile columnar objects + within that row. + + An agent must not refuse to change the values of the + acctngSelectionSubtree, acctngSelectionList and + acctngSelectionFile columnar objects within a conceptual row + even while that row's status is 'active'. Similarly, an + agent must not refuse to destroy an existing conceptual row + while the file referenced by that row's instance of + acctngSelectionFile is in active use, i.e., while the + corresponding instance of acctngFileRowStatus has the value + 'active'. However, such changes only take effect upon the + next occasion when collection begins into a new (version of + the) file." + ::= { acctngSelectionEntry 6 } + +-- The Accounting File table + +acctngFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of files into which accounting information is to be + stored." + ::= { acctngFileControl 1 } + +acctngFileEntry OBJECT-TYPE + SYNTAX AcctngFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry identifying a file into which accounting + information is to be collected." + INDEX { acctngFileIndex } + ::= { acctngFileTable 1 } + +AcctngFileEntry ::= + SEQUENCE { + acctngFileIndex FileIndex, + acctngFileName DisplayString, + acctngFileNameSuffix DisplayString, + acctngFileDescription DisplayString, + acctngFileCommand INTEGER, + acctngFileMaximumSize Integer32, + acctngFileCurrentSize Integer32, + acctngFileFormat INTEGER, + acctngFileCollectMode BITS, + acctngFileCollectFailedAttempts BITS, + acctngFileInterval Integer32, + acctngFileMinAge Integer32, + acctngFileRowStatus RowStatus + } + +acctngFileIndex OBJECT-TYPE + SYNTAX FileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value identifying a file into which accounting + data is to be stored. This value is required to be the + permanent 'handle' for an entry in this table for as long as + that entry exists, including across restarts and power + outages." + ::= { acctngFileEntry 1 } + +acctngFileName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the file into which accounting data is to be + stored. If files are named using suffixes, then the name of + the current file is the concatenation of acctngFileName and + acctngFileNameSuffix. + + An agent will respond with an error (e.g., 'wrongValue') to + a management set operation which attempts to modify the + value of this object to the same value as already held by + another instance of acctngFileName. An agent will also + respond with an error (e.g., 'wrongValue') if the new value + is invalid for use as a file name on the local file system + (e.g., many file systems do not support white space embedded + in file names). + + The value of this object can not be modified while the + corresponding instance of acctngFileRowStatus is 'active'." + ::= { acctngFileEntry 2 } + +acctngFileNameSuffix OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The suffix, if any, of the name of a file into which + accounting data is currently being stored. If suffixes are + not used, then the value of this object is the zero-length + string. Note that if a separator, such as a period, is used + in appending the suffix to the file name, then that + separator appears as the first character of this value." + ::= { acctngFileEntry 3 } + +acctngFileDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual description of the accounting data which will + be stored (on the next occasion) when header information is + stored in the file. The value of this object may be + modified at any time." + DEFVAL { "" } + ::= { acctngFileEntry 4 } + +acctngFileCommand OBJECT-TYPE + SYNTAX INTEGER { + -- the following two values are states: + -- they may be read but not written + idle(1), + cmdInProgress(2), + -- the following two values are actions: + -- they may be written, but are never read + swapToNewFile(3), + collectNow(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control object for the collection of accounting data. + When read the value is either 'idle' or 'cmdInProgress'. + Writing a value is only allowed when the current value is + 'idle'. When a value is successfully written, the value + changes to 'cmdInProgress' until completion of the action, + at which time the value reverts to 'idle'. Actions are + invoked by writing the following values: + + 'swapToNewFile' - the collection of data into the current + file is terminated, and collection continues into + a new (version of the) file. + + 'collectNow' - the agent creates and stores a connection + record into the current file for each active + connection having a type matching + acctngSelectionType and an age greater than + acctngFileMinAge." + DEFVAL { idle } + ::= { acctngFileEntry 5 } + +acctngFileMaximumSize OBJECT-TYPE + SYNTAX Integer32 (100..2147483647) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum size of the file (including header + information). When the file of collected data reaches this + size, either the agent automatically swaps to a new version + (i.e., a new value acctngFileNameSuffix) of the file, or new + records are discarded. Since a file must contain an + integral number of connection records, the actual maximum + size of the file may be just less OR Just greater than the + value of this object. + + The value of this object can not be modified while the + corresponding instance of acctngFileRowStatus is 'active'. + The largest value of the maximum file size in some agents + will be less than 2147483647 bytes." + DEFVAL { 5000000 } + ::= { acctngFileEntry 6 } + +acctngFileCurrentSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current size of the file into which data is currently + being collected, including header information." + ::= { acctngFileEntry 7 } + +acctngFileFormat OBJECT-TYPE + SYNTAX INTEGER { other(1), ber(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the format in which the accounting data is + to be stored in the file. If the value is modified, the new + value takes effect after the next 'swap' to a new file. The + value ber(2) indicates the standard format." + DEFVAL { ber } + ::= { acctngFileEntry 8 } + +acctngFileCollectMode OBJECT-TYPE + SYNTAX BITS { onRelease(0), periodically(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of when accounting data is to be written into + this file. Note that in addition to the occasions indicated + by the value of this object, an agent always writes + information on appropriate connections to the file when the + corresponding instance of acctngFileCommand is set to + 'collectNow'. + + - 'onRelease' - whenever a connection (or possibly, + connection attempt) is terminated, either through + a Release message or through management removal, + information on that connection is written. + + - 'periodically' - information on appropriate connections + is written on the expiry of a periodic timer, + + This value may be modified at any time." + DEFVAL { { onRelease } } + ::= { acctngFileEntry 9 } + +acctngFileCollectFailedAttempts OBJECT-TYPE + SYNTAX BITS { soft(0), regular(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether connection data is to be collected + for failed connection attempts when the value of the + corresponding instance of acctngFileCollectMode includes + 'onRelease'. The individual values have the following + meaning: + + 'soft' - indicates that connection data is to be collected + for failed Soft PVCs/PVPs which originate or terminate at + the relevant interface. + + 'regular' - indicates that connection data is to be + collected for failed SVCs, including Soft PVCs/PVPs not + originating or terminating at the relevant interface. + + This value may be modified at any time." + DEFVAL { { soft, regular } } + ::= { acctngFileEntry 10 } + +acctngFileInterval OBJECT-TYPE + SYNTAX Integer32 (60..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between the periodic collections of + accounting data when the value of the corresponding instance + of acctngFileCollectMode includes 'periodically'. Some + agents may impose restrictions on the range of this + interval. This value may be modified at any time." + DEFVAL { 3600 } + ::= { acctngFileEntry 11 } + +acctngFileMinAge OBJECT-TYPE + SYNTAX Integer32 (60..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum age of a connection, as used to determine the + set of connections for which data is to be collected at the + periodic intervals and/or when acctngFileCommand is set to + 'collectNow'. The age of a connection is the elapsed time + since it was last installed. + + When the periodic interval expires for a file or when + acctngFileCommand is set to 'collectNow', accounting data is + collected and stored in the file for each connection having + a type matching acctngSelectionType and whose age at that + time is greater than the value of acctngFileMinAge + associated with the file. This value may be modified at any + time." + DEFVAL { 3600 } + ::= { acctngFileEntry 12 } + +acctngFileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object can not be set to 'active' until a value has + been assigned to the corresponding instance of + acctngFileName. Collection of data into the file does not + begin until this object has the value 'active' and one or + more (active) instances of acctngSelectionFile refer to it. + If this value is modified after a collection has begun, + collection into this file terminates and a new (or new + version of the) file is immediately made ready for future + collection (as if acctngFileCommand had been set to + 'swapToNewFile'), but collection into the new (or new + version of the) file does not begin until the value is + subsequently set back to active." + ::= { acctngFileEntry 13 } + +-- Overall Control + +acctngAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control object to indicate the administratively desired + state of the collection of accounting records across all + interfaces. + + Modifying the value of acctngAdminStatus to 'disabled' does + not remove or change the current configuration as + represented by the active rows in the acctngSelectionTable, + acctngFileTable and acctngInterfaceTable tables." + ::= { acctngInterfaceControl 1 } + +acctngOperStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A status object to indicate the operational state of the + collection of accounting records across all interfaces. + + When the value of acctngAdminStatus is modified to be + 'enabled', the value of this object will change to 'enabled' + providing it is possible to begin collecting accounting + records. + + When the value of acctngAdminStatus is modified to be + 'disabled', the value of this object will change to + 'disabled' as soon as the collection of accounting records + has terminated." + ::= { acctngInterfaceControl 2 } + +acctngProtection OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control object to protect against duplication of control + commands. Over some transport/network protocols, it is + possible for SNMP messages to get duplicated. Such + duplication, if it occurred at just the wrong time could + cause serious disruption to the collection and retrieval of + accounting data, e.g., if a SNMP message setting + acctngFileCommand to 'swapToNewFile' were to be duplicated, + a whole file of accounting data could be lost. + + To protect against such duplication, a management + application should retrieve the value of this object, and + include in the Set operation needing protection, a variable + binding which sets this object to the retrieved value." + ::= { acctngInterfaceControl 3 } + +acctngAgentMode OBJECT-TYPE + SYNTAX INTEGER { swapOnCommand(1), swapOnFull(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the behaviour mode of the agent when a + file becomes full: + + 'swapOnCommand' - the agent does not automatically swap + to a new file; rather, it discards newly collected + data until a management application subsequently + instructs it to swap to a new file. + + 'swapOnFull' - the agent terminates collection into the + current file as and when that file becomes full." + ::= { acctngInterfaceControl 4 } + + +-- Per-interface control table + +acctngInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table controlling the collection of accounting data on + specific interfaces of the switch." + ::= { acctngInterfaceControl 5 } + +acctngInterfaceEntry OBJECT-TYPE + SYNTAX AcctngInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which controls whether accounting data is to be + collected on an interface. The types of interfaces which + are represented in this table is implementation-specific." + INDEX { ifIndex } + ::= { acctngInterfaceTable 1 } + +AcctngInterfaceEntry ::= + SEQUENCE { + acctngInterfaceEnable TruthValue + } + +acctngInterfaceEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the collection of accounting data is + enabled on this interface." + ::= { acctngInterfaceEntry 1 } + +-- Objects for controlling the use of Notifications + +acctngControlTrapThreshold OBJECT-TYPE + SYNTAX INTEGER (0..99) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A percentage of the maximum file size at which a 'nearly- + full' trap is generated. The value of 0 indicates that no + 'nearly-full' trap is to be generated." + ::= { acctngTrapControl 1 } + +acctngControlTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An indication of whether the acctngFileNearlyFull and + acctngFileFull traps are enabled." + ::= { acctngTrapControl 2 } + +-- notifications + +acctngNotifications OBJECT IDENTIFIER ::= { accountingControlMIB 2 } + +acctngNotifyPrefix OBJECT IDENTIFIER ::= { acctngNotifications 0 } + + +acctngFileNearlyFull NOTIFICATION-TYPE + OBJECTS { acctngFileName, + acctngFileMaximumSize, + acctngControlTrapThreshold, + acctngFileNameSuffix } + STATUS current + DESCRIPTION + "An indication that the size of the file into which + accounting information is currently being collected has + exceeded the threshold percentage of its maximum file size. + This notification is generated only at the time of the + transition from not-exceeding to exceeding." + ::= { acctngNotifyPrefix 1 } + + +acctngFileFull NOTIFICATION-TYPE + OBJECTS { acctngFileName, + acctngFileMaximumSize, + acctngFileNameSuffix } + STATUS current + DESCRIPTION + "An indication that the size of the file into which + accounting information is currently being collected has + transistioned to its maximum file size. This notification + is generated (for all values of acctngAgentMode) at the time + of the transition from not-full to full. If acctngAgentMode + has the value 'swapOnCommand', it is also generated + periodically thereafter until such time as collection of + data is no longer inhibited by the file full condition." + ::= { acctngNotifyPrefix 2 } + + +-- conformance information + +acctngConformance OBJECT IDENTIFIER ::= { accountingControlMIB 3 } +acctngGroups OBJECT IDENTIFIER ::= { acctngConformance 1 } +acctngCompliances OBJECT IDENTIFIER ::= { acctngConformance 2 } + +acctngCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for switches which implement the + Accounting Control MIB." + + MODULE -- this module + MANDATORY-GROUPS { acctngBasicGroup, + acctngNotificationsGroup } + + OBJECT acctngSelectionType + SYNTAX BITS { svcIncoming(0), svcOutgoing(1) } + DESCRIPTION "The minimal requirement is collection for SVCs." + + OBJECT acctngSelectionRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCommand + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileFormat + SYNTAX INTEGER { ber(2) } + MIN-ACCESS read-only + DESCRIPTION "Only the standard format is required, and write + access is not required." + + OBJECT acctngFileMaximumSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCollectMode + SYNTAX BITS { onRelease(0) } + MIN-ACCESS read-only + DESCRIPTION "The minimal requirement is for collection on + connection release." + + OBJECT acctngFileInterval + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCollectFailedAttempts + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { acctngCompliances 1 } + + +-- units of conformance + +acctngBasicGroup OBJECT-GROUP + OBJECTS { acctngSelectionSubtree, acctngSelectionList, + acctngSelectionFile, acctngSelectionType, + acctngSelectionRowStatus, acctngFileName, + acctngFileNameSuffix, acctngFileDescription, + acctngFileCommand, acctngFileMaximumSize, + acctngFileCurrentSize, acctngFileRowStatus, + acctngFileFormat, acctngFileCollectMode, + acctngFileCollectFailedAttempts, acctngFileInterval, + acctngFileMinAge, + acctngAdminStatus, acctngOperStatus, + acctngProtection, acctngAgentMode, + acctngInterfaceEnable, + acctngControlTrapThreshold, + acctngControlTrapEnable + } + STATUS current + DESCRIPTION + "A collection of objects providing control of the basic + collection of accounting data for connection-oriented + networks." + ::= { acctngGroups 1 } + +acctngNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { acctngFileNearlyFull, acctngFileFull } + STATUS current + DESCRIPTION + "The notifications of events relating to controlling the + collection of accounting data." + ::= { acctngGroups 2 } + +END diff --git a/mibs/ietf/ADSL-LINE-EXT-MIB b/mibs/ietf/ADSL-LINE-EXT-MIB new file mode 100644 index 0000000..f948ea9 --- /dev/null +++ b/mibs/ietf/ADSL-LINE-EXT-MIB @@ -0,0 +1,1245 @@ +ADSL-LINE-EXT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, + Integer32, + NOTIFICATION-TYPE, + MODULE-IDENTITY, + OBJECT-TYPE FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION FROM SNMPv2-TC + PerfCurrentCount, + + + + PerfIntervalCount FROM PerfHist-TC-MIB + AdslPerfCurrDayCount, + AdslPerfPrevDayCount FROM ADSL-TC-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + adslLineAlarmConfProfileEntry, + adslLineConfProfileEntry, + adslAturIntervalEntry, + adslAturPerfDataEntry, + adslAtucIntervalEntry, + adslAtucPerfDataEntry, + adslLineEntry, + adslMIB FROM ADSL-LINE-MIB + ; + + adslExtMIB MODULE-IDENTITY + + LAST-UPDATED "200212100000Z" -- 10 Dec 2002 + + ORGANIZATION "IETF ADSL MIB Working Group" + + CONTACT-INFO + " + Faye Ly + Pedestal Networks + 6503 Dumbarton Circle, + Fremont, CA 94555 + Tel: +1 510-578-0158 + Fax: +1 510-744-5152 + E-Mail: faye@pedestalnetworks.com + + Gregory Bathrick + Nokia Networks + 2235 Mercury Way, + Fax: +1 707-535-7300 + E-Mail: greg.bathrick@nokia.com + + General Discussion:adslmib@ietf.org + To Subscribe: https://www1.ietf.org/mailman/listinfo/adslmib + Archive: https://www1.ietf.org/mailman/listinfo/adslmib + " + DESCRIPTION + "Copyright (C) The Internet Society (2002). This version of + this MIB module is part of RFC 3440; see the RFC itself for + full legal notices. + + This MIB Module is a supplement to the ADSL-LINE-MIB + [RFC2662]." + + + + + REVISION "200212100000Z" -- 10 dec 2002 + DESCRIPTION "Initial Version, published as RFC 3440. This MIB + module supplements the ADSL-LINE-MIB [RFC2662]." + ::= { adslMIB 3 } + + adslExtMibObjects OBJECT IDENTIFIER ::= { adslExtMIB 1 } + + AdslTransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of ADSL line transmission modes, with one bit + per mode. The notes (F) and (L) denote Full-Rate + and G.Lite respectively: + Bit 00 : Regional Std. (ANSI T1.413) (F) + Bit 01 : Regional Std. (ETSI DTS/TM06006) (F) + Bit 02 : G.992.1 POTS non-overlapped (F) + Bit 03 : G.992.1 POTS overlapped (F) + Bit 04 : G.992.1 ISDN non-overlapped (F) + Bit 05 : G.992.1 ISDN overlapped (F) + Bit 06 : G.992.1 TCM-ISDN non-overlapped (F) + Bit 07 : G.992.1 TCM-ISDN overlapped (F) + Bit 08 : G.992.2 POTS non-overlapped (L) + Bit 09 : G.992.2 POTS overlapped (L) + Bit 10 : G.992.2 with TCM-ISDN non-overlapped (L) + Bit 11 : G.992.2 with TCM-ISDN overlapped (L) + Bit 12 : G.992.1 TCM-ISDN symmetric (F) + " + SYNTAX BITS { + ansit1413(0), + etsi(1), + q9921PotsNonOverlapped(2), + q9921PotsOverlapped(3), + q9921IsdnNonOverlapped(4), + q9921isdnOverlapped(5), + q9921tcmIsdnNonOverlapped(6), + q9921tcmIsdnOverlapped(7), + q9922potsNonOverlapeed(8), + q9922potsOverlapped(9), + q9922tcmIsdnNonOverlapped(10), + q9922tcmIsdnOverlapped(11), + q9921tcmIsdnSymmetric(12) + } + + adslLineExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table is an extension of RFC 2662. It + contains ADSL line configuration and + monitoring information. This includes the ADSL + line's capabilities and actual ADSL transmission + system." + ::= { adslExtMibObjects 17 } + + adslLineExtEntry OBJECT-TYPE + SYNTAX AdslLineExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslLineEntry defined in + [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslLineEntry } + ::= { adslLineExtTable 1 } + + AdslLineExtEntry ::= + SEQUENCE { + adslLineTransAtucCap AdslTransmissionModeType, + adslLineTransAtucConfig AdslTransmissionModeType, + adslLineTransAtucActual AdslTransmissionModeType, + adslLineGlitePowerState INTEGER, + adslLineConfProfileDualLite SnmpAdminString + } + + adslLineTransAtucCap OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission modes, represented by a + bitmask that the ATU-C is capable of + supporting. The modes available are limited + by the design of the equipment." + REFERENCE "Section 7.3.2 ITU G.997.1" + ::= { adslLineExtEntry 1 } + + adslLineTransAtucConfig OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-write + STATUS current + + DESCRIPTION + "The transmission modes, represented by a bitmask, + currently enabled by the ATU-C. The manager can + only set those modes that are supported by the + + + + ATU-C. An ATU-C's supported modes are provided by + AdslLineTransAtucCap." + REFERENCE "Section 7.3.2 ITU G.997.1" + ::= { adslLineExtEntry 2 } + + adslLineTransAtucActual OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual transmission mode of the ATU-C. + During ADSL line initialization, the ADSL + Transceiver Unit - Remote terminal end (ATU-R) + will determine the mode used for the link. + This value will be limited a single transmission + mode that is a subset of those modes enabled + by the ATU-C and denoted by + adslLineTransAtucConfig. After an initialization + has occurred, its mode is saved as the 'Current' + mode and is persistence should the link go + down. This object returns 0 (i.e. BITS with no + mode bit set) if the mode is not known." + REFERENCE "Section 7.3.2 ITU G.997.1 " + ::= { adslLineExtEntry 3 } + + adslLineGlitePowerState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + l0(2), -- L0 Power on + l1(3), -- L1 Power on but reduced + l3(4) -- L3 Power off + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object specifies the power + state of this interface. L0 is power on, L1 is + power on but reduced and L3 is power off. Power + state cannot be configured by an operator but it + can be viewed via the ifOperStatus object for the + managed ADSL interface. The value of the object + ifOperStatus is set to down(2) if the ADSL + interface is in power state L3 and is set to up(1) + if the ADSL line interface is in power state L0 or + L1. If the object adslLineTransAtucActual is set to + a G.992.2 (G.Lite)-type transmission mode, the + value of this object will be one of the valid power + states: L0(2), L1(3), or L3(4). Otherwise, its + + + + value will be none(1)." + ::= { adslLineExtEntry 4 } + + adslLineConfProfileDualLite OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object extends the definition an ADSL line and + associated channels (when applicable) for cases + when it is configured in dual mode, and operating + in a G.Lite-type mode as denoted by + adslLineTransAtucActual. Dual mode exists when the + object, adslLineTransAtucConfig, is configured with + one or more full-rate modes and one or more G.Lite + modes simultaneously. + + When 'dynamic' profiles are implemented, the value + of object is equal to the index of the applicable + row in the ADSL Line Configuration Profile Table, + AdslLineConfProfileTable defined in ADSL-MIB + [RFC2662]. + + In the case when dual-mode has not been enabled, + the value of the object will be equal to the value + of the object adslLineConfProfile [RFC2662]. + + When `static' profiles are implemented, in much + like the case of the object, + adslLineConfProfileName [RFC2662], this object's + value will need to algorithmically represent the + characteristics of the line. In this case, the + value of the line's ifIndex plus a value indicating + the line mode type (e.g., G.Lite, Full-rate) will + be used. Therefore, the profile's name is a string + concatenating the ifIndex and one of the follow + values: Full or Lite. This string will be + fixed-length (i.e., 14) with leading zero(s). For + example, the profile name for ifIndex that equals + '15' and is a full rate line, it will be + '0000000015Full'." + REFERENCE "Section 5.4 Profiles, RFC 2662" + ::= { adslLineExtEntry 5 } + + adslAtucPerfDataExtTable OBJECT-TYPE + + SYNTAX SEQUENCE OF AdslAtucPerfDataExtEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table extends adslAtucPerfDataTable [RFC2662] + with additional ADSL physical line counter + information such as unavailable seconds-line and + severely errored seconds-line." + ::= { adslExtMibObjects 18 } + + adslAtucPerfDataExtEntry OBJECT-TYPE + SYNTAX AdslAtucPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslAtucPerfDataEntry defined + in [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslAtucPerfDataEntry } + ::= { adslAtucPerfDataExtTable 1 } + + AdslAtucPerfDataExtEntry ::= + SEQUENCE { + adslAtucPerfStatFastR Counter32, + adslAtucPerfStatFailedFastR Counter32, + adslAtucPerfStatSesL Counter32, + adslAtucPerfStatUasL Counter32, + adslAtucPerfCurr15MinFastR PerfCurrentCount, + adslAtucPerfCurr15MinFailedFastR PerfCurrentCount, + adslAtucPerfCurr15MinSesL PerfCurrentCount, + adslAtucPerfCurr15MinUasL PerfCurrentCount, + adslAtucPerfCurr1DayFastR AdslPerfCurrDayCount, + adslAtucPerfCurr1DayFailedFastR AdslPerfCurrDayCount, + adslAtucPerfCurr1DaySesL AdslPerfCurrDayCount, + adslAtucPerfCurr1DayUasL AdslPerfCurrDayCount, + adslAtucPerfPrev1DayFastR AdslPerfPrevDayCount, + adslAtucPerfPrev1DayFailedFastR AdslPerfPrevDayCount, + adslAtucPerfPrev1DaySesL AdslPerfPrevDayCount, + adslAtucPerfPrev1DayUasL AdslPerfPrevDayCount + } + + adslAtucPerfStatFastR OBJECT-TYPE + SYNTAX Counter32 + UNITS "line retrains" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of fast line bs since last + agent reset." + + + + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 1 } + + adslAtucPerfStatFailedFastR OBJECT-TYPE + SYNTAX Counter32 + UNITS "line retrains" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of failed fast line retrains since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 2 } + + adslAtucPerfStatSesL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of severely errored seconds-line since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 3 } + + adslAtucPerfStatUasL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of unavailable seconds-line since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 4 } + + adslAtucPerfCurr15MinFastR OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinFastR reports the current + number of seconds during which there have been + + + + fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 5 } + + adslAtucPerfCurr15MinFailedFastR OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinFailedFastR reports the + current number of seconds during which there + have been failed fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 6 } + + adslAtucPerfCurr15MinSesL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinSesL reports the current + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 7 } + + adslAtucPerfCurr15MinUasL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinUasL reports the current + number of seconds during which there have been + unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 8 } + + adslAtucPerfCurr1DayFastR OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayFastR reports the number + of seconds during which there have been + fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 9 } + + adslAtucPerfCurr1DayFailedFastR OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayFailedFastR reports the + number of seconds during which there have been + failed fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 10 } + + adslAtucPerfCurr1DaySesL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DaySesL reports the + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 11 } + + adslAtucPerfCurr1DayUasL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayUasL reports the + number of seconds during which there have been + unavailable seconds-line." + + + + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 12 } + + adslAtucPerfPrev1DayFastR OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DayFastR + reports the number of seconds during which there + were fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 13 } + + adslAtucPerfPrev1DayFailedFastR OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, + adslAtucPerfPrev1DayFailedFastR reports the number + of seconds during which there were failed fast + retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 14 } + + adslAtucPerfPrev1DaySesL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DaySesL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 15 } + + adslAtucPerfPrev1DayUasL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DayUasL + reports the number of seconds during which there + + + + were unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 16 } + + adslAtucIntervalExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATU-C + performance data collection interval for + ADSL physical interfaces whose + IfEntries' ifType is equal to adsl(94)." + ::= { adslExtMibObjects 19 } + + adslAtucIntervalExtEntry OBJECT-TYPE + SYNTAX AdslAtucIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the + adslAtucIntervalExtTable." + AUGMENTS { adslAtucIntervalEntry } + ::= { adslAtucIntervalExtTable 1 } + + AdslAtucIntervalExtEntry ::= + SEQUENCE { + adslAtucIntervalFastR PerfIntervalCount, + adslAtucIntervalFailedFastR PerfIntervalCount, + adslAtucIntervalSesL PerfIntervalCount, + adslAtucIntervalUasL PerfIntervalCount + } + + adslAtucIntervalFastR OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current interval, adslAtucIntervalFastR + reports the current number of seconds during which + there have been fast retrains." + ::= { adslAtucIntervalExtEntry 1 } + + adslAtucIntervalFailedFastR OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the each interval, adslAtucIntervalFailedFastR + reports the number of seconds during which + there have been failed fast retrains." + ::= { adslAtucIntervalExtEntry 2 } + + adslAtucIntervalSesL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAtucIntervalSesL + reports the number of seconds during which + there have been severely errored seconds-line." + ::= { adslAtucIntervalExtEntry 3 } + + adslAtucIntervalUasL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAtucIntervalUasL + reports the number of seconds during which + there have been unavailable seconds-line." + ::= { adslAtucIntervalExtEntry 4 } + + adslAturPerfDataExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ADSL physical line counters + not defined in the adslAturPerfDataTable + from the ADSL-LINE-MIB [RFC2662]." + ::= { adslExtMibObjects 20 } + + adslAturPerfDataExtEntry OBJECT-TYPE + SYNTAX AdslAturPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslAturPerfDataEntry defined + in [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslAturPerfDataEntry } + ::= { adslAturPerfDataExtTable 1 } + + + + AdslAturPerfDataExtEntry ::= + SEQUENCE { + adslAturPerfStatSesL Counter32, + adslAturPerfStatUasL Counter32, + adslAturPerfCurr15MinSesL PerfCurrentCount, + adslAturPerfCurr15MinUasL PerfCurrentCount, + adslAturPerfCurr1DaySesL AdslPerfCurrDayCount, + adslAturPerfCurr1DayUasL AdslPerfCurrDayCount, + adslAturPerfPrev1DaySesL AdslPerfPrevDayCount, + adslAturPerfPrev1DayUasL AdslPerfPrevDayCount + } + + adslAturPerfStatSesL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + severely errored second-line since the last agent + reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAturPerfDataExtEntry 1 } + + adslAturPerfStatUasL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + unavailable seconds-line since the last agent + reset." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 2 } + + adslAturPerfCurr15MinSesL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAturPerfCurr15MinSesL reports the current + number of seconds during which there have been + severely errored seconds-line." + + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + + + + ::= { adslAturPerfDataExtEntry 3 } + + adslAturPerfCurr15MinUasL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAturPerfCurr15MinUasL reports the current + number of seconds during which there have been + available seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 4 } + + adslAturPerfCurr1DaySesL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAturPerfCurr1DayTimeElapsed [RFC2662], + adslAturPerfCurr1DaySesL reports the + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + ::= { adslAturPerfDataExtEntry 5 } + + adslAturPerfCurr1DayUasL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAturPerfCurr1DayTimeElapsed [RFC2662], + adslAturPerfCurr1DayUasL reports the + number of seconds during which there have been + unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 6 } + + adslAturPerfPrev1DaySesL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the previous day, adslAturPerfPrev1DaySesL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + ::= { adslAturPerfDataExtEntry 7 } + + adslAturPerfPrev1DayUasL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAturPerfPrev1DayUasL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 8 } + + adslAturIntervalExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATU-R + performance data collection interval for + ADSL physical interfaces whose + IfEntries' ifType is equal to adsl(94)." + ::= { adslExtMibObjects 21 } + + adslAturIntervalExtEntry OBJECT-TYPE + SYNTAX AdslAturIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the + adslAturIntervalExtTable." + AUGMENTS { adslAturIntervalEntry } + ::= { adslAturIntervalExtTable 1 } + + AdslAturIntervalExtEntry ::= + SEQUENCE { + adslAturIntervalSesL PerfIntervalCount, + adslAturIntervalUasL PerfIntervalCount + } + + adslAturIntervalSesL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAturIntervalSesL + reports the number of seconds during which + there have been severely errored seconds-line." + ::= { adslAturIntervalExtEntry 1 } + + adslAturIntervalUasL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAturIntervalUasL + reports the number of seconds during which + there have been unavailable seconds-line." + ::= { adslAturIntervalExtEntry 2 } + + adslConfProfileExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The adslConfProfileExtTable extends the ADSL line + profile configuration information in the + adslLineConfProfileTable from the ADSL-LINE-MIB + [RFC2662] by adding the ability to configure the + ADSL physical line mode." + ::= { adslExtMibObjects 22 } + + adslConfProfileExtEntry OBJECT-TYPE + SYNTAX AdslConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslLineConfProfileEntry + defined in [RFC2662]. Each entry corresponds to an + ADSL line profile." + AUGMENTS { adslLineConfProfileEntry } + ::= { adslConfProfileExtTable 1 } + + AdslConfProfileExtEntry ::= + SEQUENCE { + adslConfProfileLineType INTEGER + } + + adslConfProfileLineType OBJECT-TYPE + + + + SYNTAX INTEGER { + noChannel (1), -- no channels exist + fastOnly (2), -- only fast channel exists + interleavedOnly (3), -- only interleaved channel + -- exist + fastOrInterleaved (4),-- either fast or interleaved + -- channels can exist, but + -- only one at any time + fastAndInterleaved (5)-- both the fast channel and + -- the interleaved channel + -- exist + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the ADSL physical + line mode. It has following valid values: + + noChannel(1), when no channels exist. + fastOnly(2), when only fast channel exists. + interleavedOnly(3), when only interleaved channel + exist. + fastOrInterleaved(4), when either fast or + interleaved channels can exist, but only one + at any time. + fastAndInterleaved(5), when both the fast channel + and the interleaved channel exist. + + In the case when no value has been set, the default + Value is noChannel(1). + " + DEFVAL { fastOnly } + ::= { adslConfProfileExtEntry 1 } + + adslAlarmConfProfileExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAlarmConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table extends the + adslLineAlarmConfProfileTable and provides + threshold parameters for all the counters defined + in this MIB module." + ::= { adslExtMibObjects 23 } + + adslAlarmConfProfileExtEntry OBJECT-TYPE + SYNTAX AdslAlarmConfProfileExtEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry extends the adslLineAlarmConfProfileTable + defined in [RFC2662]. Each entry corresponds to + an ADSL alarm profile." + AUGMENTS { adslLineAlarmConfProfileEntry } + ::= { adslAlarmConfProfileExtTable 1 } + + AdslAlarmConfProfileExtEntry ::= + SEQUENCE { + adslAtucThreshold15MinFailedFastR Integer32, + adslAtucThreshold15MinSesL Integer32, + adslAtucThreshold15MinUasL Integer32, + adslAturThreshold15MinSesL Integer32, + adslAturThreshold15MinUasL Integer32 + } + + adslAtucThreshold15MinFailedFastR OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerfCurr15MinFailedFastR + reaches or exceeds this value within a given + 15-minute performance data collection period, + an adslAtucFailedFastRThreshTrap notification + will be generated. The value '0' will disable + the notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 1 } + + adslAtucThreshold15MinSesL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerf15MinSesL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAtucSesLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + + + + DEFVAL { 0 } + + ::= { adslAlarmConfProfileExtEntry 2 } + + adslAtucThreshold15MinUasL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerf15MinUasL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAtucUasLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 3 } + + adslAturThreshold15MinSesL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAturPerf15MinSesL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAturSesLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 4 } + + adslAturThreshold15MinUasL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAturPerf15MinUasL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + + + + adslAturUasLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + + ::= { adslAlarmConfProfileExtEntry 5 } + + -- definitions + + adslExtTraps OBJECT IDENTIFIER ::= { adslExtMibObjects 24 } + + adslExtAtucTraps OBJECT IDENTIFIER ::= { adslExtTraps 1 } + + adslExtAtucTrapsPrefix OBJECT IDENTIFIER ::= { adslExtAtucTraps 0 } + + adslAtucFailedFastRThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinFailedFastR } + STATUS current + DESCRIPTION + "Failed Fast Retrains 15-minute threshold reached." + ::= { adslExtAtucTrapsPrefix 1 } + + adslAtucSesLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinSesL } + STATUS current + DESCRIPTION + "Severely errored seconds-line 15-minute threshold + reached." + ::= { adslExtAtucTrapsPrefix 2 } + + adslAtucUasLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinUasL } + STATUS current + DESCRIPTION + "Unavailable seconds-line 15-minute threshold + reached." + ::= { adslExtAtucTrapsPrefix 3 } + + + adslExtAturTraps OBJECT IDENTIFIER ::= { adslExtTraps 2 } + + adslExtAturTrapsPrefix OBJECT IDENTIFIER ::= { adslExtAturTraps 0 } + + adslAturSesLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinSesL } + STATUS current + DESCRIPTION + + + + "Severely errored seconds-line 15-minute threshold + reached." + ::= { adslExtAturTrapsPrefix 1 } + + adslAturUasLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinUasL } + STATUS current + DESCRIPTION + "Unavailable seconds-line 15-minute threshold + reached." + ::= { adslExtAturTrapsPrefix 2 } + + + -- conformance information + + adslExtConformance OBJECT IDENTIFIER ::= { adslExtMIB 2 } + + adslExtGroups OBJECT IDENTIFIER ::= { adslExtConformance 1 } + adslExtCompliances OBJECT IDENTIFIER ::= { adslExtConformance 2 } + + -- ATU-C agent compliance statements + + adslExtLineMibAtucCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + represent ADSL ATU-C interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslExtLineGroup, + adslExtLineConfProfileControlGroup, + adslExtLineAlarmConfProfileGroup + } + + GROUP adslExtAtucPhysPerfCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslExtAturPhysPerfCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + + + + GROUP adslExtNotificationsGroup + DESCRIPTION + "This group is optional. Implementations which + support TCA (Threshold Crossing Alert) should + implement this group." + + OBJECT adslAtucThreshold15MinFailedFastR + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAtucThreshold15MinSesL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAtucThreshold15MinUasL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAturThreshold15MinSesL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAturThreshold15MinUasL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslLineConfProfileDualLite + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + + + + ::= { adslExtCompliances 1 } + + -- units of conformance + adslExtLineGroup OBJECT-GROUP + OBJECTS { + adslLineConfProfileDualLite, + adslLineTransAtucCap, + adslLineTransAtucConfig, + adslLineTransAtucActual, + adslLineGlitePowerState + } + STATUS current + DESCRIPTION + "A collection of objects providing extended + configuration information about an ADSL Line." + ::= { adslExtGroups 1 } + + adslExtAtucPhysPerfCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfStatFastR, + adslAtucPerfStatFailedFastR, + adslAtucPerfCurr15MinFastR, + adslAtucPerfCurr15MinFailedFastR, + adslAtucPerfCurr1DayFastR, + adslAtucPerfCurr1DayFailedFastR, + adslAtucPerfPrev1DayFastR, + adslAtucPerfPrev1DayFailedFastR, + adslAtucPerfStatSesL, + adslAtucPerfStatUasL, + adslAtucPerfCurr15MinSesL, + adslAtucPerfCurr15MinUasL, + adslAtucPerfCurr1DaySesL, + adslAtucPerfCurr1DayUasL, + adslAtucPerfPrev1DaySesL, + adslAtucPerfPrev1DayUasL, + adslAtucIntervalFastR, + adslAtucIntervalFailedFastR, + adslAtucIntervalSesL, + adslAtucIntervalUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslExtGroups 2 } + + adslExtAturPhysPerfCounterGroup OBJECT-GROUP + OBJECTS { + + + + adslAturPerfStatSesL, + adslAturPerfStatUasL, + adslAturPerfCurr15MinSesL, + adslAturPerfCurr15MinUasL, + adslAturPerfCurr1DaySesL, + adslAturPerfCurr1DayUasL, + adslAturPerfPrev1DaySesL, + adslAturPerfPrev1DayUasL, + adslAturIntervalSesL, adslAturIntervalUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslExtGroups 3 } + + adslExtLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslConfProfileLineType + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system." + ::= { adslExtGroups 4 } + + adslExtLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThreshold15MinFailedFastR, + adslAtucThreshold15MinSesL, + adslAtucThreshold15MinUasL, + adslAturThreshold15MinSesL, + adslAturThreshold15MinUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm profile + control for the ADSL system." + ::= { adslExtGroups 5 } + + adslExtNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucFailedFastRThreshTrap, + adslAtucSesLThreshTrap, + adslAtucUasLThreshTrap, + adslAturSesLThreshTrap, + adslAturUasLThreshTrap + } + + + + STATUS current + DESCRIPTION + "The collection of ADSL extension notifications." + ::= { adslExtGroups 6 } + +END diff --git a/mibs/ietf/ADSL-LINE-MIB b/mibs/ietf/ADSL-LINE-MIB new file mode 100644 index 0000000..addde98 --- /dev/null +++ b/mibs/ietf/ADSL-LINE-MIB @@ -0,0 +1,4313 @@ +ADSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, + NOTIFICATION-TYPE, + transmission, Unsigned32 FROM SNMPv2-SMI + RowStatus, + TruthValue, VariablePointer FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + PerfCurrentCount, + PerfIntervalCount FROM PerfHist-TC-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + AdslPerfCurrDayCount, + AdslPerfPrevDayCount, + AdslPerfTimeElapsed, + AdslLineCodingType FROM ADSL-TC-MIB + ; + +adslMIB MODULE-IDENTITY + +LAST-UPDATED "9908190000Z" + +ORGANIZATION "IETF ADSL MIB Working Group" + +CONTACT-INFO + " + Gregory Bathrick + AG Communication Systems + A Subsidiary of Lucent Technologies + 2500 W Utopia Rd. + Phoenix, AZ 85027 USA + Tel: +1 602-582-7679 + Fax: +1 602-582-7697 + E-mail: bathricg@agcs.com + + Faye Ly + Copper Mountain Networks + Norcal Office + 2470 Embarcadero Way + Palo Alto, CA 94303 + Tel: +1 650-858-8500 + Fax: +1 650-858-8085 + E-Mail: faye@coppermountain.com + + (ADSL Forum input only) + John Burgess + Predictive Systems, Inc. + 25A Vreeland Rd. + Florham Park, NJ 07932 USA + Tel: +1 973-301-5610 + Fax: +1 973-301-5699 + E-mail: jtburgess@predictive.com + + IETF ADSL MIB Working Group (adsl@xlist.agcs.com) + " + +DESCRIPTION + "The MIB module defining objects for the management of a pair of + ADSL modems at each end of the ADSL line. Each such line has + an entry in an ifTable which may include multiple modem lines. + An agent may reside at either end of the ADSL line however the + MIB is designed to require no management communication between + them beyond that inherent in the low-level ADSL line protocol. + The agent may monitor and control this protocol for its needs. + + ADSL lines may support optional Fast or Interleaved channels. + If these are supported, additional entries corresponding to the + supported channels must be created in the ifTable. Thus an ADSL + line that supports both channels will have three entries in the + ifTable, one for each physical, fast, and interleaved, whose + ifType values are equal to adsl(94), fast(125), and + interleaved(124), respectively. The ifStackTable is used to + represent the relationship between the entries. + + Naming Conventions: + Atuc -- (ATUC) modem at near (Central) end of line + Atur -- (ATUR) modem at Remote end of line + Curr -- Current + Prev -- Previous + Atn -- Attenuation + ES -- Errored Second. + LCS -- Line Code Specific + Lof -- Loss of Frame + Lol -- Loss of Link + Los -- Loss of Signal + Lpr -- Loss of Power + xxxs-- interval of Seconds in which xxx occurs + (e.g., xxx=Lof, Los, Lpr) + Max -- Maximum + Mgn -- Margin + Min -- Minimum + Psd -- Power Spectral Density + Snr -- Signal to Noise Ratio + Tx -- Transmit + Blks-- Blocks, a data unit, see + adslAtuXChanCrcBlockLength + " + -- Revision history + REVISION "9908190000Z" -- 19 August 1999, midnight + DESCRIPTION "Initial Version, published as RFC 2662" + +::= { transmission 94 } + +adslLineMib OBJECT IDENTIFIER ::= { adslMIB 1 } + +adslMibObjects OBJECT IDENTIFIER ::= { adslLineMib 1 } + +-- objects + adslLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes common attributes describing + both ends of the line. It is required for all ADSL + physical interfaces. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 1 } + + adslLineEntry OBJECT-TYPE + SYNTAX AdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslLineTable." + INDEX { ifIndex } + ::= { adslLineTable 1 } + + AdslLineEntry ::= + SEQUENCE { + adslLineCoding AdslLineCodingType, + adslLineType INTEGER, + adslLineSpecific VariablePointer, + adslLineConfProfile SnmpAdminString, + adslLineAlarmConfProfile SnmpAdminString + } + + adslLineCoding OBJECT-TYPE + SYNTAX AdslLineCodingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the ADSL coding type used on this + line." + ::= { adslLineEntry 1 } + + adslLineType OBJECT-TYPE + SYNTAX INTEGER { + noChannel (1), -- no channels exist + fastOnly (2), -- fast channel exists only + interleavedOnly (3), -- interleaved channel exists + -- only + fastOrInterleaved (4),-- either fast or interleaved + -- channels can exist, but + -- only one at any time + fastAndInterleaved (5)-- both fast or interleaved + + -- channels exist + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of ADSL physical line + entity that exists, by defining whether and how + the line is channelized. If the line is channelized, + the value will be other than noChannel(1). This + object defines which channel type(s) are supported. + + In the case that the line is channelized, the manager + can use the ifStackTable to determine the ifIndex for + the associated channel(s)." + ::= { adslLineEntry 2 } + + adslLineSpecific OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OID instance in vendor-specific MIB. The Instance may + be used to determine shelf/slot/port of the ATUC + interface in a DSLAM." + ::= { adslLineEntry 3 } + + adslLineConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ADSL Line Configuration Profile Table, + (adslLineConfProfileTable), which applies for this + ADSL line, and channels if applicable. + + For `dynamic' mode, in the case which the + configuration profile has not been set, the + value will be set to `DEFVAL'. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only." + ::= { adslLineEntry 4 } + + adslLineAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ADSL Line Alarm Configuration Profile Table, + (adslLineAlarmConfProfileTable), which applies to this + ADSL line, and channels if applicable. + + For `dynamic' mode, in the case which the + alarm profile has not been set, the + value will be set to `DEFVAL'. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only." + ::= { adslLineEntry 5 } + + adslAtucPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC. + Each row contains the Physical Layer Parameters + table for that ATUC. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 2 } + + adslAtucPhysEntry OBJECT-TYPE + SYNTAX AdslAtucPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucPhysTable." + INDEX { ifIndex } + ::= { adslAtucPhysTable 1 } + + AdslAtucPhysEntry ::= + SEQUENCE { + adslAtucInvSerialNumber SnmpAdminString, + adslAtucInvVendorID SnmpAdminString, + adslAtucInvVersionNumber SnmpAdminString, + adslAtucCurrSnrMgn INTEGER, + adslAtucCurrAtn Gauge32, + adslAtucCurrStatus BITS, + adslAtucCurrOutputPwr INTEGER, + adslAtucCurrAttainableRate Gauge32 + } + + -- inventory group + + -- + -- These items should describe the lowest level identifiable + -- component, be it a stand-alone modem, a card in a rack, + -- a child-board, etc. + -- + adslAtucInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + vendor equipment." + ::= { adslAtucPhysEntry 1 } + + adslAtucInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary + vendor identification field defined by the + PHY[10] and expressed as readable characters." + + REFERENCE "ANSI T1.413[10]" + ::= { adslAtucPhysEntry 2 } + + adslAtucInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this ATU + as part of the initialization messages. It is a copy + of the binary version number field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413[10]" + ::= { adslAtucPhysEntry 3 } + + -- current status group + -- + adslAtucCurrSnrMgn OBJECT-TYPE + SYNTAX INTEGER (-640..640) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this ATU with respect to its + received signal in tenth dB." + ::= { adslAtucPhysEntry 4 } + + adslAtucCurrAtn OBJECT-TYPE + SYNTAX Gauge32(0..630) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer ATU and the total power received by this ATU." + ::= { adslAtucPhysEntry 5 } + + adslAtucCurrStatus OBJECT-TYPE + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4), + lossOfLink(5), + dataInitFailure(6), + configInitFailure(7), + protocolInitFailure(8), + noPeerAtuPresent(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the ATUC line. This is a + bit-map of possible conditions. The various bit + positions are: + + 0 noDefect There no defects on the line + + 1 lossOfFraming ATUC failure due to not + receiving valid frame. + + 2 lossOfSignal ATUC failure due to not + receiving signal. + + 3 lossOfPower ATUC failure due to loss of + power. + Note: the Agent may still + function. + + 4 lossOfSignalQuality Loss of Signal Quality is + declared when the Noise Margin + falls below the Minimum Noise + Margin, or the bit-error-rate + exceeds 10^-7. + + 5 lossOfLink ATUC failure due to inability + to link with ATUR. + + 6 dataInitFailure ATUC failure during + initialization due to bit + errors corrupting startup + exchange data. + + 7 configInitFailure ATUC failure during + initialization due to peer + ATU not able to support + requested configuration + + 8 protocolInitFailure ATUC failure during + initialization due to + incompatible protocol used by + the peer ATU. + + 9 noPeerAtuPresent ATUC failure during + initialization due to no + activation sequence detected + from peer ATU. + + This is intended to supplement ifOperStatus." + ::= { adslAtucPhysEntry 6 } + + adslAtucCurrOutputPwr OBJECT-TYPE + SYNTAX INTEGER (-310..310) + UNITS "tenth dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this ATU. + This is the measurement that was reported during + the last activation sequence." + ::= { adslAtucPhysEntry 7 } + + adslAtucCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + by the ATU. This value will be equal or greater than + the current line rate." + ::= { adslAtucPhysEntry 8 } + + adslAturPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR + Each row contains the Physical Layer Parameters + table for that ATUR. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 3 } + + adslAturPhysEntry OBJECT-TYPE + SYNTAX AdslAturPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturPhysTable." + INDEX { ifIndex } + ::= { adslAturPhysTable 1 } + + AdslAturPhysEntry ::= + SEQUENCE { + adslAturInvSerialNumber SnmpAdminString, + adslAturInvVendorID SnmpAdminString, + adslAturInvVersionNumber SnmpAdminString, + adslAturCurrSnrMgn INTEGER, + adslAturCurrAtn Gauge32, + adslAturCurrStatus BITS, + adslAturCurrOutputPwr INTEGER, + adslAturCurrAttainableRate Gauge32 + } + + -- inventory group + -- + adslAturInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + vendor equipment." + ::= { adslAturPhysEntry 1 } + + adslAturInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary + vendor identification field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413" + ::= { adslAturPhysEntry 2 } + + adslAturInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this ATU + as part of the initialization messages. It is a copy + of the binary version number field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413" + ::= { adslAturPhysEntry 3 } + + -- current status group + -- + adslAturCurrSnrMgn OBJECT-TYPE + SYNTAX INTEGER (-640..640) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this ATU with respect to its + received signal in tenth dB." + ::= { adslAturPhysEntry 4 } + + adslAturCurrAtn OBJECT-TYPE + SYNTAX Gauge32(0..630) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer ATU and the total power received by this ATU." + ::= { adslAturPhysEntry 5 } + + adslAturCurrStatus OBJECT-TYPE + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the ATUR line. This is a + bit-map of possible conditions. Due to the isolation + of the ATUR when line problems occur, many state + conditions like loss of power, loss of quality signal, + and initialization errors, can not be determined. + While trouble shooting ATUR, also use object, + adslAtucCurrStatus. The various bit positions are: + + 0 noDefect There no defects on the line + + 1 lossOfFraming ATUR failure due to not + receiving valid frame + + 2 lossOfSignal ATUR failure due to not + receiving signal + + 3 lossOfPower ATUR failure due to loss of + power + + 4 lossOfSignalQuality Loss of Signal Quality is + declared when the Noise Margin + falls below the Minimum Noise + Margin, or the + bit-error-rate exceeds 10^-7. + + This is intended to supplement ifOperStatus." + ::= { adslAturPhysEntry 6 } + + adslAturCurrOutputPwr OBJECT-TYPE + SYNTAX INTEGER (-310..310) + UNITS "tenth dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this ATU. + This is the measurement that was reported during + the last activation sequence." + ::= { adslAturPhysEntry 7 } + + adslAturCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + by the ATU. This value will be equal or greater than + the current line rate." + ::= { adslAturPhysEntry 8 } + + adslAtucChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 4 } + + adslAtucChanEntry OBJECT-TYPE + SYNTAX AdslAtucChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucChanTable." + INDEX { ifIndex } + ::= { adslAtucChanTable 1 } + + AdslAtucChanEntry ::= + SEQUENCE { + adslAtucChanInterleaveDelay Gauge32, + adslAtucChanCurrTxRate Gauge32, + adslAtucChanPrevTxRate Gauge32, + adslAtucChanCrcBlockLength Gauge32 + } + + -- current group + -- + adslAtucChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the + interleave channel and defines the mapping + (relative spacing) between subsequent input + bytes at the interleaver input and their placement + in the bit stream at the interleaver output. + Larger numbers provide greater separation between + consecutive input bytes in the output bit stream + allowing for improved impulse noise immunity at + the expense of payload latency. + + In the case where the ifType is Fast(125), use + noSuchObject." + ::= { adslAtucChanEntry 1 } + + adslAtucChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit rate on this channel." + ::= { adslAtucChanEntry 2 } + + adslAtucChanPrevTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rate at the time of the last + adslAtucRateChangeTrap event. It is also set at + initialization to prevent a trap being sent. + + Rate changes less than adslAtucThresh(*)RateDown + or less than adslAtucThresh(*)RateUp will not + cause a trap or cause this object to change. + (*) == Fast or Interleave. + See AdslLineAlarmConfProfileEntry." + ::= { adslAtucChanEntry 3 } + + adslAtucChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + UNITS "byte" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates. Refer to Line Code + Specific MIBs, [11] and [12] for more + information." + ::= { adslAtucChanEntry 4 } + + adslAturChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 5 } + + adslAturChanEntry OBJECT-TYPE + SYNTAX AdslAturChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturChanTable." + INDEX { ifIndex } + ::= { adslAturChanTable 1 } + + AdslAturChanEntry ::= + SEQUENCE { + adslAturChanInterleaveDelay Gauge32, + adslAturChanCurrTxRate Gauge32, + adslAturChanPrevTxRate Gauge32, + adslAturChanCrcBlockLength Gauge32 + } + + -- current group + -- + adslAturChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the + interleave channel and defines the mapping + (relative spacing) between subsequent input + bytes at the interleaver input and their placement + in the bit stream at the interleaver output. + Larger numbers provide greater separation between + consecutive input bytes in the output bit stream + allowing for improved impulse noise immunity at + the expense of payload latency. + + In the case where the ifType is Fast(125), use + noSuchObject." + ::= { adslAturChanEntry 1 } + + adslAturChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit rate on this channel." + ::= { adslAturChanEntry 2 } + + adslAturChanPrevTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rate at the time of the last + adslAturRateChangeTrap event. It is also set at + initialization to prevent a trap being sent. + Rate changes less than adslAturThresh(*)RateDown + or less than adslAturThresh(*)RateUp will not + cause a trap or cause this object to change. + (*) == Fast or Interleave. + See AdslLineAlarmConfProfileEntry." + ::= { adslAturChanEntry 3 } + + adslAturChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates. Refer to Line Code + Specific MIBs, [11] and [12] for more + information." + ::= { adslAturChanEntry 4 } + + adslAtucPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 6 } + + adslAtucPerfDataEntry OBJECT-TYPE + SYNTAX AdslAtucPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAtucPerfDataTable." + INDEX { ifIndex } + ::= { adslAtucPerfDataTable 1 } + + AdslAtucPerfDataEntry ::= + SEQUENCE { + adslAtucPerfLofs Counter32, + adslAtucPerfLoss Counter32, + adslAtucPerfLols Counter32, + adslAtucPerfLprs Counter32, + adslAtucPerfESs Counter32, + adslAtucPerfInits Counter32, + adslAtucPerfValidIntervals INTEGER, + adslAtucPerfInvalidIntervals INTEGER, + adslAtucPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAtucPerfCurr15MinLofs PerfCurrentCount, + adslAtucPerfCurr15MinLoss PerfCurrentCount, + adslAtucPerfCurr15MinLols PerfCurrentCount, + adslAtucPerfCurr15MinLprs PerfCurrentCount, + adslAtucPerfCurr15MinESs PerfCurrentCount, + adslAtucPerfCurr15MinInits PerfCurrentCount, + adslAtucPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAtucPerfCurr1DayLofs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLoss AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLols AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLprs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayESs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayInits AdslPerfCurrDayCount, + adslAtucPerfPrev1DayMoniSecs INTEGER, + adslAtucPerfPrev1DayLofs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLoss AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLols AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLprs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayESs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayInits AdslPerfPrevDayCount + } + + -- Event Counters + -- + -- Also see adslAtucIntervalTable for 15 minute interval + -- elapsed counters. + -- + adslAtucPerfLofs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Framing failures since + agent reset." + ::= { adslAtucPerfDataEntry 1 } + + adslAtucPerfLoss OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Signal failures since + agent reset." + ::= { adslAtucPerfDataEntry 2 } + + adslAtucPerfLols OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Link failures since + agent reset." + ::= { adslAtucPerfDataEntry 3 } + + adslAtucPerfLprs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Power failures since + agent reset." + ::= { adslAtucPerfDataEntry 4 } + + adslAtucPerfESs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Errored Seconds since agent + reset. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 5 } + + adslAtucPerfInits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since + agent reset. Includes both successful and failed + attempts." + ::= { adslAtucPerfDataEntry 6 } + + -- general 15 min interval information + -- + + adslAtucPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAtucPerfDataEntry 7 } + + adslAtucPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAtucPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAtucPerfDataEntry 8 } + + -- 15 min current performance group + -- + adslAtucPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAtucPerfDataEntry 9 } + + adslAtucPerfCurr15MinLofs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Framing." + ::= { adslAtucPerfDataEntry 10 } + + adslAtucPerfCurr15MinLoss OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Signal." + ::= { adslAtucPerfDataEntry 11 } + + adslAtucPerfCurr15MinLols OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Link." + ::= { adslAtucPerfDataEntry 12 } + + adslAtucPerfCurr15MinLprs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Power." + ::= { adslAtucPerfDataEntry 13 } + + adslAtucPerfCurr15MinESs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the current 15 minute + interval. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 14 } + + adslAtucPerfCurr15MinInits OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the + current 15 minute interval. Includes both successful + and failed attempts." + ::= { adslAtucPerfDataEntry 15 } + + -- 1-day current and previous performance group + -- + adslAtucPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAtucPerfDataEntry 16 } + + adslAtucPerfCurr1DayLofs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Framing during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 17 } + + adslAtucPerfCurr1DayLoss OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Signal during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 18 } + + adslAtucPerfCurr1DayLols OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Link during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 19 } + + adslAtucPerfCurr1DayLprs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Power during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 20 } + + adslAtucPerfCurr1DayESs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during the current day as + measured by adslAtucPerfCurr1DayTimeElapsed. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 21 } + + adslAtucPerfCurr1DayInits OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the + day as measured by adslAtucPerfCurr1DayTimeElapsed. + Includes both successful and failed attempts." + ::= { adslAtucPerfDataEntry 22 } + + adslAtucPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAtucPerfDataEntry 23 } + + adslAtucPerfPrev1DayLofs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 24 } + + adslAtucPerfPrev1DayLoss OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 25 } + + adslAtucPerfPrev1DayLols OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Link within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 26 } + + adslAtucPerfPrev1DayLprs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 27 } + + adslAtucPerfPrev1DayESs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds within the most recent + previous 1-day period. The errored second parameter is + a count of one-second intervals containing one or more + crc anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 28 } + + adslAtucPerfPrev1DayInits OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the most + recent previous 1-day period. Includes both successful + and failed attempts." + ::= { adslAtucPerfDataEntry 29 } + + adslAturPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 7 } + + adslAturPerfDataEntry OBJECT-TYPE + SYNTAX AdslAturPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAturPerfDataTable." + INDEX { ifIndex } + ::= { adslAturPerfDataTable 1 } + + AdslAturPerfDataEntry ::= + SEQUENCE { + adslAturPerfLofs Counter32, + adslAturPerfLoss Counter32, + adslAturPerfLprs Counter32, + adslAturPerfESs Counter32, + adslAturPerfValidIntervals INTEGER, + adslAturPerfInvalidIntervals INTEGER, + adslAturPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAturPerfCurr15MinLofs PerfCurrentCount, + adslAturPerfCurr15MinLoss PerfCurrentCount, + adslAturPerfCurr15MinLprs PerfCurrentCount, + adslAturPerfCurr15MinESs PerfCurrentCount, + adslAturPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAturPerfCurr1DayLofs AdslPerfCurrDayCount, + adslAturPerfCurr1DayLoss AdslPerfCurrDayCount, + adslAturPerfCurr1DayLprs AdslPerfCurrDayCount, + adslAturPerfCurr1DayESs AdslPerfCurrDayCount, + adslAturPerfPrev1DayMoniSecs INTEGER, + adslAturPerfPrev1DayLofs AdslPerfPrevDayCount, + adslAturPerfPrev1DayLoss AdslPerfPrevDayCount, + adslAturPerfPrev1DayLprs AdslPerfPrevDayCount, + adslAturPerfPrev1DayESs AdslPerfPrevDayCount + } + + -- Event (Raw) Counters + -- + -- Also see adslAturIntervalTable for 15 minute interval + -- elapsed counters. + -- + adslAturPerfLofs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Framing failures since + agent reset." + ::= { adslAturPerfDataEntry 1 } + + adslAturPerfLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Signal failures since + agent reset." + ::= { adslAturPerfDataEntry 2 } + + adslAturPerfLprs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Power failures since + agent reset." + ::= { adslAturPerfDataEntry 3 } + + adslAturPerfESs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Errored Seconds since agent + reset. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAturPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAturPerfDataEntry 5 } + + adslAturPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAturPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAturPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAturPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAturPerfDataEntry 7 } + + adslAturPerfCurr15MinLofs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Framing." + ::= { adslAturPerfDataEntry 8 } + + adslAturPerfCurr15MinLoss OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Signal." + ::= { adslAturPerfDataEntry 9 } + + adslAturPerfCurr15MinLprs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Power." + ::= { adslAturPerfDataEntry 10 } + + adslAturPerfCurr15MinESs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the current 15 minute + interval. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + + ::= { adslAturPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAturPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAturPerfDataEntry 12 } + + adslAturPerfCurr1DayLofs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Framing during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 13 } + + adslAturPerfCurr1DayLoss OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Signal during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 14 } + + adslAturPerfCurr1DayLprs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Power during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 15 } + + adslAturPerfCurr1DayESs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during the current day as + measured by adslAturPerfCurr1DayTimeElapsed. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 16 } + + adslAturPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAturPerfDataEntry 17 } + + adslAturPerfPrev1DayLofs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 18 } + + adslAturPerfPrev1DayLoss OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 19 } + + adslAturPerfPrev1DayLprs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 20 } + + adslAturPerfPrev1DayESs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds within the most recent + previous 1-day period. The errored second parameter is + a count of one-second intervals containing one or more + crc anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 21 } + + adslAtucIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC + performance data collection interval. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 8 } + + adslAtucIntervalEntry OBJECT-TYPE + SYNTAX AdslAtucIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucIntervalTable." + INDEX { ifIndex, adslAtucIntervalNumber } + ::= { adslAtucIntervalTable 1 } + + AdslAtucIntervalEntry ::= + SEQUENCE { + adslAtucIntervalNumber INTEGER, + adslAtucIntervalLofs PerfIntervalCount, + adslAtucIntervalLoss PerfIntervalCount, + adslAtucIntervalLols PerfIntervalCount, + adslAtucIntervalLprs PerfIntervalCount, + adslAtucIntervalESs PerfIntervalCount, + adslAtucIntervalInits PerfIntervalCount, + adslAtucIntervalValidData TruthValue + } + + adslAtucIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAtucIntervalEntry 1 } + + adslAtucIntervalLofs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Framing." + ::= { adslAtucIntervalEntry 2 } + + adslAtucIntervalLoss OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Signal." + ::= { adslAtucIntervalEntry 3 } + + adslAtucIntervalLols OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Link." + ::= { adslAtucIntervalEntry 4 } + + adslAtucIntervalLprs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Power." + ::= { adslAtucIntervalEntry 5 } + + adslAtucIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the interval. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucIntervalEntry 6 } + + adslAtucIntervalInits OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts + during the interval. Includes both successful + and failed attempts." + ::= { adslAtucIntervalEntry 7 } + + adslAtucIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAtucIntervalEntry 8 } + + adslAturIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR + performance data collection interval. + ADSL physical interfaces are those + ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 9 } + + adslAturIntervalEntry OBJECT-TYPE + SYNTAX AdslAturIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturIntervalTable." + INDEX { ifIndex, adslAturIntervalNumber } + ::= { adslAturIntervalTable 1 } + + AdslAturIntervalEntry ::= + SEQUENCE { + adslAturIntervalNumber INTEGER, + adslAturIntervalLofs PerfIntervalCount, + adslAturIntervalLoss PerfIntervalCount, + adslAturIntervalLprs PerfIntervalCount, + adslAturIntervalESs PerfIntervalCount, + adslAturIntervalValidData TruthValue + } + + adslAturIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAturIntervalEntry 1 } + + adslAturIntervalLofs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing." + ::= { adslAturIntervalEntry 2 } + + adslAturIntervalLoss OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal." + ::= { adslAturIntervalEntry 3 } + + adslAturIntervalLprs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power." + ::= { adslAturIntervalEntry 4 } + + adslAturIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the interval. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturIntervalEntry 5 } + + adslAturIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAturIntervalEntry 6 } + + adslAtucChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 10 } + + adslAtucChanPerfDataEntry OBJECT-TYPE + + SYNTAX AdslAtucChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAtucChanPerfDataTable." + INDEX { ifIndex } + ::= { adslAtucChanPerfDataTable 1 } + + AdslAtucChanPerfDataEntry ::= + SEQUENCE { + adslAtucChanReceivedBlks Counter32, + adslAtucChanTransmittedBlks Counter32, + adslAtucChanCorrectedBlks Counter32, + adslAtucChanUncorrectBlks Counter32, + adslAtucChanPerfValidIntervals INTEGER, + adslAtucChanPerfInvalidIntervals INTEGER, + adslAtucChanPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinTransmittedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinCorrectedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinUncorrectBlks PerfCurrentCount, + adslAtucChanPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayTransmittedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayCorrectedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayUncorrectBlks AdslPerfCurrDayCount, + adslAtucChanPerfPrev1DayMoniSecs INTEGER, + adslAtucChanPerfPrev1DayReceivedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayTransmittedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayCorrectedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayUncorrectBlks AdslPerfPrevDayCount + } + -- performance group + + -- + -- Note: block is intended to be the length of the channel + -- data-block on which the CRC operates. See + -- adslAtucChanCrcBlockLength for more information. + -- + adslAtucChanReceivedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + since agent reset." + ::= { adslAtucChanPerfDataEntry 1 } + + adslAtucChanTransmittedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel since agent reset." + ::= { adslAtucChanPerfDataEntry 2 } + + adslAtucChanCorrectedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected since agent reset. These blocks are passed + on as good data." + ::= { adslAtucChanPerfDataEntry 3 } + + adslAtucChanUncorrectBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors since agent reset." + ::= { adslAtucChanPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAtucChanPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAtucChanPerfDataEntry 5 } + + adslAtucChanPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAtucChanPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAtucChanPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAtucChanPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAtucChanPerfDataEntry 7 } + + adslAtucChanPerfCurr15MinReceivedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + within the current 15 minute interval." + ::= { adslAtucChanPerfDataEntry 8 } + + adslAtucChanPerfCurr15MinTransmittedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the current 15 minute interval." + ::= { adslAtucChanPerfDataEntry 9 } + + adslAtucChanPerfCurr15MinCorrectedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the current 15 minute + interval." + ::= { adslAtucChanPerfDataEntry 10 } + + adslAtucChanPerfCurr15MinUncorrectBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the current 15 minute + interval." + ::= { adslAtucChanPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAtucChanPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAtucChanPerfDataEntry 12 } + + adslAtucChanPerfCurr1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel during the current day as measured by + adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 13 } + + adslAtucChanPerfCurr1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during the current day as measured by + adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 14 } + + adslAtucChanPerfCurr1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during the current day as + measured by adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 15 } + + adslAtucChanPerfCurr1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during the current day as + measured by adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 16 } + + adslAtucChanPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAtucChanPerfDataEntry 17 } + + adslAtucChanPerfPrev1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the most recent previous 1-day + period." + ::= { adslAtucChanPerfDataEntry 18 } + + adslAtucChanPerfPrev1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the most recent previous 1-day + period." + ::= { adslAtucChanPerfDataEntry 19 } + + adslAtucChanPerfPrev1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the most recent + previous 1-day period." + ::= { adslAtucChanPerfDataEntry 20 } + + adslAtucChanPerfPrev1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the most recent previous + 1-day period." + ::= { adslAtucChanPerfDataEntry 21 } + + adslAturChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 11 } + + adslAturChanPerfDataEntry OBJECT-TYPE + SYNTAX AdslAturChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAturChanPerfDataTable." + INDEX { ifIndex } + ::= { adslAturChanPerfDataTable 1 } + + AdslAturChanPerfDataEntry ::= + SEQUENCE { + adslAturChanReceivedBlks Counter32, + adslAturChanTransmittedBlks Counter32, + adslAturChanCorrectedBlks Counter32, + adslAturChanUncorrectBlks Counter32, + adslAturChanPerfValidIntervals INTEGER, + adslAturChanPerfInvalidIntervals INTEGER, + adslAturChanPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinTransmittedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinCorrectedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinUncorrectBlks PerfCurrentCount, + adslAturChanPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayTransmittedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayCorrectedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayUncorrectBlks AdslPerfCurrDayCount, + adslAturChanPerfPrev1DayMoniSecs INTEGER, + adslAturChanPerfPrev1DayReceivedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayTransmittedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayCorrectedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayUncorrectBlks AdslPerfPrevDayCount + } + -- performance group + -- + -- Note: block is intended to be the length of the channel + -- data-block on which the CRC operates. See + -- adslAturChanCrcBlockLength for more information. + -- + adslAturChanReceivedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + since agent reset." + ::= { adslAturChanPerfDataEntry 1 } + + adslAturChanTransmittedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel since agent reset." + ::= { adslAturChanPerfDataEntry 2 } + + adslAturChanCorrectedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected since agent reset. These blocks are passed + on as good data." + ::= { adslAturChanPerfDataEntry 3 } + + adslAturChanUncorrectBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors since agent reset." + ::= { adslAturChanPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAturChanPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAturChanPerfDataEntry 5 } + + adslAturChanPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAturChanPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAturChanPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAturChanPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval. + A full interval is 900 seconds." + ::= { adslAturChanPerfDataEntry 7 } + + adslAturChanPerfCurr15MinReceivedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the current 15 minute interval." + ::= { adslAturChanPerfDataEntry 8 } + + adslAturChanPerfCurr15MinTransmittedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the current 15 minute interval." + ::= { adslAturChanPerfDataEntry 9 } + + adslAturChanPerfCurr15MinCorrectedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the current 15 minute + interval." + ::= { adslAturChanPerfDataEntry 10 } + + adslAturChanPerfCurr15MinUncorrectBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the current 15 minute + interval." + ::= { adslAturChanPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAturChanPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAturChanPerfDataEntry 12 } + + adslAturChanPerfCurr1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel during the current day as measured by + adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 13 } + + adslAturChanPerfCurr1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during the current day as measured by + adslAturChanPerfCurr1DayTimeElapsed." + + ::= { adslAturChanPerfDataEntry 14 } + + adslAturChanPerfCurr1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during the current day as + measured by adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 15 } + + adslAturChanPerfCurr1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during the current day as + measured by adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 16 } + + adslAturChanPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAturChanPerfDataEntry 17 } + + adslAturChanPerfPrev1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the most recent previous 1-day + period." + ::= { adslAturChanPerfDataEntry 18 } + + adslAturChanPerfPrev1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the most recent previous 1-day + period." + ::= { adslAturChanPerfDataEntry 19 } + + adslAturChanPerfPrev1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the most recent + previous 1-day period." + ::= { adslAturChanPerfDataEntry 20 } + + adslAturChanPerfPrev1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the most recent previous + 1-day period." + ::= { adslAturChanPerfDataEntry 21 } + + adslAtucChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel's + performance data collection interval. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 12 } + + adslAtucChanIntervalEntry OBJECT-TYPE + SYNTAX AdslAtucChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucIntervalTable." + INDEX { ifIndex, adslAtucChanIntervalNumber } + ::= { adslAtucChanIntervalTable 1 } + + AdslAtucChanIntervalEntry ::= + SEQUENCE { + adslAtucChanIntervalNumber INTEGER, + adslAtucChanIntervalReceivedBlks PerfIntervalCount, + adslAtucChanIntervalTransmittedBlks PerfIntervalCount, + adslAtucChanIntervalCorrectedBlks PerfIntervalCount, + adslAtucChanIntervalUncorrectBlks PerfIntervalCount, + adslAtucChanIntervalValidData TruthValue + } + adslAtucChanIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAtucChanIntervalEntry 1 } + + adslAtucChanIntervalReceivedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + during this interval." + ::= { adslAtucChanIntervalEntry 2 } + + adslAtucChanIntervalTransmittedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during this interval." + ::= { adslAtucChanIntervalEntry 3 } + + adslAtucChanIntervalCorrectedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during this interval." + ::= { adslAtucChanIntervalEntry 4 } + + adslAtucChanIntervalUncorrectBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during this interval." + ::= { adslAtucChanIntervalEntry 5 } + + adslAtucChanIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAtucChanIntervalEntry 6 } + + adslAturChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel's + performance data collection interval. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 13 } + + adslAturChanIntervalEntry OBJECT-TYPE + SYNTAX AdslAturChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturIntervalTable." + INDEX { ifIndex, adslAturChanIntervalNumber } + ::= { adslAturChanIntervalTable 1 } + + AdslAturChanIntervalEntry ::= + SEQUENCE { + adslAturChanIntervalNumber INTEGER, + adslAturChanIntervalReceivedBlks PerfIntervalCount, + adslAturChanIntervalTransmittedBlks PerfIntervalCount, + adslAturChanIntervalCorrectedBlks PerfIntervalCount, + adslAturChanIntervalUncorrectBlks PerfIntervalCount, + adslAturChanIntervalValidData TruthValue + } + adslAturChanIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAturChanIntervalEntry 1 } + + adslAturChanIntervalReceivedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + during this interval." + ::= { adslAturChanIntervalEntry 2 } + + adslAturChanIntervalTransmittedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during this interval." + ::= { adslAturChanIntervalEntry 3 } + + adslAturChanIntervalCorrectedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during this interval." + ::= { adslAturChanIntervalEntry 4 } + + adslAturChanIntervalUncorrectBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during this interval." + ::= { adslAturChanIntervalEntry 5 } + + adslAturChanIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAturChanIntervalEntry 6 } + + -- Profile Group + -- + + adslLineConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the ADSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the ADSL line." + ::= { adslMibObjects 14} + + adslLineConfProfileEntry OBJECT-TYPE + SYNTAX AdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of an ADSL modem. + + When `dynamic' profiles are implemented, a default + profile will always exist. This profile's name will + be set to `DEFVAL' and its parameters will be set + to vendor specific values, unless otherwise specified + in this document. + + When `static' profiles are implemented, profiles + are automaticly created or destroyed as ADSL + physical lines are discovered and removed by + the system. The name of the profile will be + equivalent to the decimal value of the line's + interface index. + " + INDEX { IMPLIED adslLineConfProfileName} + ::= { adslLineConfProfileTable 1} + + AdslLineConfProfileEntry ::= + SEQUENCE { + adslLineConfProfileName SnmpAdminString, + adslAtucConfRateMode INTEGER, + adslAtucConfRateChanRatio INTEGER, + adslAtucConfTargetSnrMgn INTEGER, + adslAtucConfMaxSnrMgn INTEGER, + adslAtucConfMinSnrMgn INTEGER, + adslAtucConfDownshiftSnrMgn INTEGER, + adslAtucConfUpshiftSnrMgn INTEGER, + adslAtucConfMinUpshiftTime INTEGER, + adslAtucConfMinDownshiftTime INTEGER, + adslAtucChanConfFastMinTxRate Unsigned32, + adslAtucChanConfInterleaveMinTxRate Unsigned32, + adslAtucChanConfFastMaxTxRate Unsigned32, + adslAtucChanConfInterleaveMaxTxRate Unsigned32, + adslAtucChanConfMaxInterleaveDelay INTEGER, + adslAturConfRateMode INTEGER, + adslAturConfRateChanRatio INTEGER, + adslAturConfTargetSnrMgn INTEGER, + adslAturConfMaxSnrMgn INTEGER, + adslAturConfMinSnrMgn INTEGER, + adslAturConfDownshiftSnrMgn INTEGER, + adslAturConfUpshiftSnrMgn INTEGER, + adslAturConfMinUpshiftTime INTEGER, + adslAturConfMinDownshiftTime INTEGER, + adslAturChanConfFastMinTxRate Unsigned32, + adslAturChanConfInterleaveMinTxRate Unsigned32, + adslAturChanConfFastMaxTxRate Unsigned32, + adslAturChanConfInterleaveMaxTxRate Unsigned32, + adslAturChanConfMaxInterleaveDelay INTEGER, + adslLineConfProfileRowStatus RowStatus + } + + adslLineConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the line configuration table + in order to identify a row of this table. + + When `dynamic' profiles are implemented, the profile + name is user specified. Also, the system will always + provide a default profile whose name is `DEFVAL'. + + When `static' profiles are implemented, there is an + one-to-one relationship between each line and its + profile. In which case, the profile name will + need to algorithmicly represent the Line's ifIndex. + Therefore, the profile's name is a decimalized string + of the ifIndex that is fixed-length (i.e., 10) with + leading zero(s). For example, the profile name for + ifIndex which equals '15' will be '0000000015'." + ::= { adslLineConfProfileEntry 1 } + + adslAtucConfRateMode OBJECT-TYPE + SYNTAX INTEGER { + fixed (1), -- no rate adaptation + adaptAtStartup (2), -- perform rate adaptation + -- only at initialization + adaptAtRuntime (3) -- perform rate adaptation at + -- any time + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines what form of transmit rate adaptation is + configured on this modem. See ADSL Forum TR-005 [3] + for more information." + ::= { adslLineConfProfileEntry 2 } + + adslAtucConfRateChanRatio OBJECT-TYPE + SYNTAX INTEGER(0..100) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured allocation ratio of excess transmit + bandwidth between fast and interleaved channels. Only + applies when two channel mode and RADSL are supported. + Distribute bandwidth on each channel in excess of the + corresponding ChanConfMinTxRate so that: + adslAtucConfRateChanRatio = + + [Fast / (Fast + Interleaved)] * 100 + + In other words this value is the fast channel + percentage." + ::= { adslLineConfProfileEntry 3 } + + adslAtucConfTargetSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Target Signal/Noise Margin. + This is the Noise Margin the modem must achieve + with a BER of 10-7 or better to successfully complete + initialization." + ::= { adslLineConfProfileEntry 4 } + + adslAtucConfMaxSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum acceptable Signal/Noise Margin. + If the Noise Margin is above this the modem should + attempt to reduce its power output to optimize its + operation." + ::= { adslLineConfProfileEntry 5 } + + adslAtucConfMinSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum acceptable Signal/Noise Margin. + If the noise margin falls below this level, the modem + should attempt to increase its power output. If that + is not possible the modem will attempt to + re-initialize or shut down." + ::= { adslLineConfProfileEntry 6 } + + adslAtucConfDownshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate downshift. + If the noise margin falls below this level, the modem + should attempt to decrease its transmit rate. In + the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 7 } + + adslAtucConfUpshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate upshift. + If the noise margin rises above this level, the modem + should attempt to increase its transmit rate. In + the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 8 } + + adslAtucConfMinUpshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is above + UpshiftSnrMgn before an upshift occurs. + In the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 9 } + adslAtucConfMinDownshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is below + DownshiftSnrMgn before a downshift occurs. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 10 } + + adslAtucChanConfFastMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Fast' channels, + in bps. See adslAtucConfRateChanRatio for information + regarding RADSL mode and ATUR transmit rate for + ATUC receive rates." + ::= { adslLineConfProfileEntry 11 } + + adslAtucChanConfInterleaveMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Interleave' + channels, in bps. See adslAtucConfRateChanRatio for + information regarding RADSL mode and see + ATUR transmit rate for receive rates." + ::= { adslLineConfProfileEntry 12 } + + adslAtucChanConfFastMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Fast' channels, + in bps. See adslAtucConfRateChanRatio for information + regarding RADSL mode and see ATUR transmit rate for + ATUC receive rates." + ::= { adslLineConfProfileEntry 13 } + + adslAtucChanConfInterleaveMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Interleave' + channels, in bps. See adslAtucConfRateChanRatio for + information regarding RADSL mode and ATUR transmit + rate for ATUC receive rates." + ::= { adslLineConfProfileEntry 14 } + + adslAtucChanConfMaxInterleaveDelay OBJECT-TYPE + SYNTAX INTEGER(0..255) + UNITS "milli-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured maximum Interleave Delay for this channel. + + Interleave delay applies only to the interleave channel + and defines the mapping (relative spacing) between + subsequent input bytes at the interleaver input and + their placement in the bit stream at the interleaver + output. Larger numbers provide greater separation + between consecutive input bytes in the output bit + stream allowing for improved impulse noise immunity + at the expense of payload latency." + ::= { adslLineConfProfileEntry 15 } + + adslAturConfRateMode OBJECT-TYPE + SYNTAX INTEGER { + fixed (1), -- no rate adaptation + adaptAtStartup (2), -- perform rate adaptation + + -- only at initialization + adaptAtRuntime (3) -- perform rate adaptation at + -- any time + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines what form of transmit rate adaptation is + configured on this modem. See ADSL Forum TR-005 [3] + for more information." + ::= { adslLineConfProfileEntry 16 } + + adslAturConfRateChanRatio OBJECT-TYPE + SYNTAX INTEGER(0..100) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured allocation ratio of excess transmit + bandwidth between fast and interleaved channels. Only + applies when two channel mode and RADSL are supported. + Distribute bandwidth on each channel in excess of the + corresponding ChanConfMinTxRate so that: + adslAturConfRateChanRatio = + + [Fast / (Fast + Interleaved)] * 100 + + In other words this value is the fast channel + percentage." + ::= { adslLineConfProfileEntry 17 } + + adslAturConfTargetSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Target Signal/Noise Margin. + This is the Noise Margin the modem must achieve + with a BER of 10-7 or better to successfully complete + initialization." + ::= { adslLineConfProfileEntry 18 } + + adslAturConfMaxSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum acceptable Signal/Noise Margin. + If the Noise Margin is above this the modem should + attempt to reduce its power output to optimize its + operation." + ::= { adslLineConfProfileEntry 19 } + + adslAturConfMinSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum acceptable Signal/Noise Margin. + If the noise margin falls below this level, the modem + should attempt to increase its power output. If that + is not possible the modem will attempt to + re-initialize or shut down." + ::= { adslLineConfProfileEntry 20 } + + adslAturConfDownshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate downshift. + If the noise margin falls below this level, the modem + should attempt to decrease its transmit rate. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 21 } + + adslAturConfUpshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate upshift. + If the noise margin rises above this level, the modem + should attempt to increase its transmit rate. + In the case that RADSL is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 22 } + + adslAturConfMinUpshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is above + UpshiftSnrMgn before an upshift occurs. + In the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 23 } + + adslAturConfMinDownshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is below + DownshiftSnrMgn before a downshift occurs. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 24 } + + adslAturChanConfFastMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Fast' channels, + in bps. See adslAturConfRateChanRatio for information + regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 25 } + + adslAturChanConfInterleaveMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Interleave' + channels, in bps. See adslAturConfRateChanRatio for + information regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 26 } + + adslAturChanConfFastMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Fast' channels, + in bps. See adslAturConfRateChanRatio for information + regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 27 } + + adslAturChanConfInterleaveMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Interleave' + channels, in bps. See adslAturConfRateChanRatio for + information regarding RADSL mode and see + ATUC transmit rate for ATUR receive rates." + ::= { adslLineConfProfileEntry 28 } + + adslAturChanConfMaxInterleaveDelay OBJECT-TYPE + SYNTAX INTEGER(0..255) + UNITS "milli-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured maximum Interleave Delay for this channel. + + Interleave delay applies only to the interleave channel + and defines the mapping (relative spacing) between + subsequent input bytes at the interleaver input and + their placement in the bit stream at the interleaver + output. Larger numbers provide greater separation + between consecutive input bytes in the output bit + stream allowing for improved impulse noise immunity + at the expense of payload latency." + ::= { adslLineConfProfileEntry 29 } + + adslLineConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile activated by setting this object to + `active'. When `active' is set, the system + will validate the profile. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `outOfService') it must be first unreferenced + from all associated lines. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only and its value + is always to be `active'." + ::= { adslLineConfProfileEntry 30 } + + adslLineAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the ADSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the modem for a physical line" + ::= { adslMibObjects 15} + + adslLineAlarmConfProfileEntry OBJECT-TYPE + SYNTAX AdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of an ADSL modem. + + When `dynamic' profiles are implemented, a default + profile will always exist. This profile's name will + be set to `DEFVAL' and its parameters will be set to + vendor specific values, unless otherwise specified + in this document. + + When `static' profiles are implemented, profiles + are automaticly created or destroyed as ADSL + physical lines are discovered and removed by + the system. The name of the profile will be + equivalent to the decimal value of the line's + interface index. + " + INDEX { IMPLIED adslLineAlarmConfProfileName} + ::= { adslLineAlarmConfProfileTable 1} + + AdslLineAlarmConfProfileEntry ::= + SEQUENCE { + adslLineAlarmConfProfileName SnmpAdminString, + adslAtucThresh15MinLofs INTEGER, + adslAtucThresh15MinLoss INTEGER, + adslAtucThresh15MinLols INTEGER, + adslAtucThresh15MinLprs INTEGER, + adslAtucThresh15MinESs INTEGER, + adslAtucThreshFastRateUp Unsigned32, + adslAtucThreshInterleaveRateUp Unsigned32, + adslAtucThreshFastRateDown Unsigned32, + adslAtucThreshInterleaveRateDown Unsigned32, + adslAtucInitFailureTrapEnable INTEGER, + adslAturThresh15MinLofs INTEGER, + adslAturThresh15MinLoss INTEGER, + adslAturThresh15MinLprs INTEGER, + adslAturThresh15MinESs INTEGER, + adslAturThreshFastRateUp Unsigned32, + adslAturThreshInterleaveRateUp Unsigned32, + adslAturThreshFastRateDown Unsigned32, + adslAturThreshInterleaveRateDown Unsigned32, + adslLineAlarmConfProfileRowStatus RowStatus + } + + adslLineAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the line alarm configuration + table in order to identify a row of this table. + + When `dynamic' profiles are implemented, the profile + name is user specified. Also, the system will always + provide a default profile whose name is `DEFVAL'. + + When `static' profiles are implemented, there is an + one-to-one relationship between each line and its + profile. In which case, the profile name will + need to algorithmicly represent the Line's ifIndex. + Therefore, the profile's name is a decimalized string + of the ifIndex that is fixed-length (i.e., 10) with + leading zero(s). For example, the profile name for + ifIndex which equals '15' will be '0000000015'." + ::= { adslLineAlarmConfProfileEntry 1} + + adslAtucThresh15MinLofs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Frame Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLofsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 2} + + adslAtucThresh15MinLoss OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Signal Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLossThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 3} + + adslAtucThresh15MinLols OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Link Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLolsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 4} + + adslAtucThresh15MinLprs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Power Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLprsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 5} + + adslAtucThresh15MinESs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Errored Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfESsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 6} + + adslAtucThreshFastRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 7} + + adslAtucThreshInterleaveRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 8} + + adslAtucThreshFastRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 9 } + + adslAtucThreshInterleaveRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 10 } + + adslAtucInitFailureTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enable (1), + disable (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Enables and disables the InitFailureTrap. This + object is defaulted disable(2)." + DEFVAL { disable } + ::= { adslLineAlarmConfProfileEntry 11 } + + adslAturThresh15MinLofs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Frame Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLofsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 12 } + + adslAturThresh15MinLoss OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Signal Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLossThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 13 } + + adslAturThresh15MinLprs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Power Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLprsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 14 } + + adslAturThresh15MinESs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Errored Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfESsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 15 } + + adslAturThreshFastRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 16 } + + adslAturThreshInterleaveRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 17 } + + adslAturThreshFastRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 18 } + + adslAturThreshInterleaveRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 19 } + + adslLineAlarmConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to + `active'. When `active' is set, the system + will validate the profile. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `outOfService') it must be first unreferenced + from all associated lines. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only and its value + is always to be `active'." + ::= { adslLineAlarmConfProfileEntry 20 } + + -- Line Code Specific Tables + + -- These are place holders for the Line Code Specific MIBs + -- once they become available. + + adslLCSMib OBJECT IDENTIFIER ::= { adslMibObjects 16 } + +-- trap definitions + +adslTraps OBJECT IDENTIFIER ::= { adslLineMib 2 } + +adslAtucTraps OBJECT IDENTIFIER ::= { adslTraps 1 } + + adslAtucPerfLofsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLofs, + adslAtucThresh15MinLofs } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold reached." + ::= { adslAtucTraps 0 1 } + + adslAtucPerfLossThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLoss, + adslAtucThresh15MinLoss } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold reached." + ::= { adslAtucTraps 0 2 } + + adslAtucPerfLprsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLprs, + adslAtucThresh15MinLprs } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold reached." + ::= { adslAtucTraps 0 3 } + + adslAtucPerfESsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinESs, + adslAtucThresh15MinESs } + STATUS current + DESCRIPTION + "Errored Second 15-minute interval threshold reached." + ::= { adslAtucTraps 0 4 } + + adslAtucRateChangeTrap NOTIFICATION-TYPE + OBJECTS { adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate } + STATUS current + DESCRIPTION + "The ATUCs transmit rate has changed (RADSL mode only)" + ::= { adslAtucTraps 0 5 } + + adslAtucPerfLolsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLols, + adslAtucThresh15MinLols } + STATUS current + DESCRIPTION + "Loss of Link 15-minute interval threshold reached." + ::= { adslAtucTraps 0 6 } + + adslAtucInitFailureTrap NOTIFICATION-TYPE + OBJECTS { adslAtucCurrStatus } + STATUS current + DESCRIPTION + "ATUC initialization failed. See adslAtucCurrStatus + for potential reasons." + ::= { adslAtucTraps 0 7 } + +adslAturTraps OBJECT IDENTIFIER ::= { adslTraps 2 } + + adslAturPerfLofsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLofs, + adslAturThresh15MinLofs } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold reached." + ::= { adslAturTraps 0 1 } + + adslAturPerfLossThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLoss, + adslAturThresh15MinLoss } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold reached." + ::= { adslAturTraps 0 2 } + + adslAturPerfLprsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLprs, + adslAturThresh15MinLprs } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold reached." + ::= { adslAturTraps 0 3 } + + adslAturPerfESsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinESs, + adslAturThresh15MinESs } + STATUS current + DESCRIPTION + "Errored Second 15-minute interval threshold reached." + ::= { adslAturTraps 0 4 } + + adslAturRateChangeTrap NOTIFICATION-TYPE + OBJECTS { adslAturChanCurrTxRate, + adslAturChanPrevTxRate } + STATUS current + DESCRIPTION + "The ATURs transmit rate has changed (RADSL mode only)" + ::= { adslAturTraps 0 5 } + + -- no adslAturPerfLolsThreshTrap possible { 0 6 } + + -- no adslAturInitFailureTrap possible { 0 7 } + +-- conformance information + +adslConformance OBJECT IDENTIFIER ::= { adslLineMib 3 } + +adslGroups OBJECT IDENTIFIER ::= { adslConformance 1 } +adslCompliances OBJECT IDENTIFIER ::= { adslConformance 2 } + + -- ATU-C agent compliance statements + + adslLineMibAtucCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which manage ADSL ATU-C interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslLineGroup, adslPhysicalGroup, adslChannelGroup, + adslAtucPhysPerfIntervalGroup, + adslAturPhysPerfIntervalGroup, adslLineConfProfileGroup, + adslLineAlarmConfProfileGroup, + adslLineConfProfileControlGroup + } + + GROUP adslAtucPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslAturPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + GROUP adslAtucChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-C channel block event counters should + implement this group." + GROUP adslAturChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-R channel block event counters should + implement this group." + + OBJECT adslLineConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable when static + profiles are implemented." + + OBJECT adslAtucConfRateMode + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfRateChanRatio + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfTargetSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMaxSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfDownshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAtucConfUpshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinUpshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinDownshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfFastMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfInterleaveMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfFastMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfInterleaveMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfMaxInterleaveDelay + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturConfRateMode + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfRateChanRatio + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfTargetSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMaxSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMinSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfDownshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfUpshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMinUpshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturConfMinDownshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfFastMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfInterleaveMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfFastMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfInterleaveMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfMaxInterleaveDelay + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslLineAlarmConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + OBJECT adslAtucThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLols + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAtucThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucInitFailureTrapEnable + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineAlarmConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + ::= { adslCompliances 1 } + + -- ATU-R agent compliance statements + + adslLineMibAturCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which manage ADSL ATU-R interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslAturLineGroup, adslAturPhysicalGroup, + adslAturChannelGroup, + adslAturAtucPhysPerfIntervalGroup, + adslAturAturPhysPerfIntervalGroup, + adslAturLineAlarmConfProfileGroup, + adslAturLineConfProfileControlGroup + } + + GROUP adslAturAtucPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslAturAturPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + GROUP adslAturAtucChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-C channel block event counters should + implement this group." + + GROUP adslAturAturChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-R channel block event counters should + implement this group." + + OBJECT adslLineAlarmConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslAtucThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucInitFailureTrapEnable + MIN-ACCESS read-write + + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineAlarmConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslAtucCurrStatus + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2) + } + DESCRIPTION + "It is allowable to implement only noDefect(0), + lossOfFraming(1) and lossOfSignal(2) by the ATU-R + agent." + + ::= { adslCompliances 2 } + + -- units of conformance + adslLineGroup OBJECT-GROUP + OBJECTS { + adslLineCoding, adslLineType, adslLineSpecific + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL Line." + ::= { adslGroups 1 } + + adslPhysicalGroup OBJECT-GROUP + OBJECTS { + adslAtucInvSerialNumber, adslAtucInvVendorID, + adslAtucInvVersionNumber, adslAtucCurrSnrMgn, + adslAtucCurrAtn, adslAtucCurrStatus, + adslAtucCurrOutputPwr, adslAtucCurrAttainableRate, + adslAturInvSerialNumber, adslAturInvVendorID, + adslAturInvVersionNumber, adslAturCurrSnrMgn, + adslAturCurrAtn, adslAturCurrStatus, + adslAturCurrOutputPwr, adslAturCurrAttainableRate + } + STATUS current + DESCRIPTION + "A collection of objects providing physical + configuration information of the ADSL Line." + ::= { adslGroups 2 } + + adslChannelGroup OBJECT-GROUP + OBJECTS { + adslAtucChanInterleaveDelay, adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate, adslAtucChanCrcBlockLength, + adslAturChanInterleaveDelay, adslAturChanCurrTxRate, + adslAturChanPrevTxRate, adslAturChanCrcBlockLength + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL channel." + ::= { adslGroups 3 } + + adslAtucPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfLofs, adslAtucPerfLoss, + adslAtucPerfLols, adslAtucPerfLprs, + adslAtucPerfESs, adslAtucPerfInits + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslGroups 4 } + + adslAtucPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfValidIntervals, + adslAtucPerfInvalidIntervals, + adslAtucPerfCurr15MinTimeElapsed, + adslAtucPerfCurr15MinLofs, adslAtucPerfCurr15MinLoss, + adslAtucPerfCurr15MinLols, adslAtucPerfCurr15MinLprs, + adslAtucPerfCurr15MinESs, adslAtucPerfCurr15MinInits, + adslAtucPerfCurr1DayLofs, adslAtucPerfCurr1DayLoss, + adslAtucPerfCurr1DayLols, adslAtucPerfCurr1DayLprs, + adslAtucPerfCurr1DayESs, adslAtucPerfCurr1DayInits, + adslAtucPerfPrev1DayMoniSecs, + adslAtucPerfPrev1DayLofs, adslAtucPerfPrev1DayLoss, + adslAtucPerfPrev1DayLols, adslAtucPerfPrev1DayLprs, + adslAtucPerfPrev1DayESs, adslAtucPerfPrev1DayInits, + adslAtucIntervalLofs, adslAtucIntervalLoss, + adslAtucIntervalLols, adslAtucIntervalLprs, + adslAtucIntervalESs, adslAtucIntervalInits, + adslAtucIntervalValidData + } + + STATUS current + DESCRIPTION + "A collection of objects providing current 15-minute, + 1-day; and previous 1-day performance counts on + ADSL Line (ATU-C end) ." + ::= { adslGroups 5 } + + adslAturPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAturPerfLofs, adslAturPerfLoss, + adslAturPerfLprs, adslAturPerfESs + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-R end)." + ::= { adslGroups 6 } + + adslAturPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAturPerfValidIntervals, + adslAturPerfInvalidIntervals, + adslAturPerfCurr15MinTimeElapsed, + adslAturPerfCurr15MinLofs, adslAturPerfCurr15MinLoss, + adslAturPerfCurr15MinLprs, adslAturPerfCurr15MinESs, + adslAturPerfCurr1DayTimeElapsed, + adslAturPerfCurr1DayLofs, adslAturPerfCurr1DayLoss, + adslAturPerfCurr1DayLprs, adslAturPerfCurr1DayESs, + adslAturPerfPrev1DayMoniSecs, + adslAturPerfPrev1DayLofs, adslAturPerfPrev1DayLoss, + adslAturPerfPrev1DayLprs, adslAturPerfPrev1DayESs, + adslAturIntervalLofs, + adslAturIntervalLoss, adslAturIntervalLprs, + adslAturIntervalESs, adslAturIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current 15-minute, + 1-day; and previous 1-day performance counts on + ADSL Line (ATU-R end)." + ::= { adslGroups 7 } + + adslAtucChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAtucChanReceivedBlks, + adslAtucChanTransmittedBlks, + adslAtucChanCorrectedBlks, + adslAtucChanUncorrectBlks, + adslAtucChanPerfValidIntervals, + adslAtucChanPerfInvalidIntervals, + adslAtucChanPerfCurr15MinTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks, + adslAtucChanPerfCurr15MinTransmittedBlks, + adslAtucChanPerfCurr15MinCorrectedBlks, + adslAtucChanPerfCurr15MinUncorrectBlks, + adslAtucChanPerfCurr1DayTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks, + adslAtucChanPerfCurr1DayTransmittedBlks, + adslAtucChanPerfCurr1DayCorrectedBlks, + adslAtucChanPerfCurr1DayUncorrectBlks, + adslAtucChanPerfPrev1DayMoniSecs, + adslAtucChanPerfPrev1DayReceivedBlks, + adslAtucChanPerfPrev1DayTransmittedBlks, + adslAtucChanPerfPrev1DayCorrectedBlks, + adslAtucChanPerfPrev1DayUncorrectBlks, + adslAtucChanIntervalReceivedBlks, + adslAtucChanIntervalTransmittedBlks, + adslAtucChanIntervalCorrectedBlks, + adslAtucChanIntervalUncorrectBlks, + adslAtucChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end)." + ::= { adslGroups 8 } + + adslAturChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAturChanReceivedBlks, + adslAturChanTransmittedBlks, + adslAturChanCorrectedBlks, + adslAturChanUncorrectBlks, + adslAturChanPerfValidIntervals, + adslAturChanPerfInvalidIntervals, + adslAturChanPerfCurr15MinTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks, + adslAturChanPerfCurr15MinTransmittedBlks, + adslAturChanPerfCurr15MinCorrectedBlks, + adslAturChanPerfCurr15MinUncorrectBlks, + adslAturChanPerfCurr1DayTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks, + adslAturChanPerfCurr1DayTransmittedBlks, + adslAturChanPerfCurr1DayCorrectedBlks, + adslAturChanPerfCurr1DayUncorrectBlks, + adslAturChanPerfPrev1DayMoniSecs, + adslAturChanPerfPrev1DayReceivedBlks, + adslAturChanPerfPrev1DayTransmittedBlks, + adslAturChanPerfPrev1DayCorrectedBlks, + adslAturChanPerfPrev1DayUncorrectBlks, + adslAturChanIntervalReceivedBlks, + adslAturChanIntervalTransmittedBlks, + adslAturChanIntervalCorrectedBlks, + adslAturChanIntervalUncorrectBlks, + adslAturChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end)." + ::= { adslGroups 9 } + + adslLineConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucConfRateMode, adslAtucConfRateChanRatio, + adslAtucConfTargetSnrMgn, adslAtucConfMaxSnrMgn, + adslAtucConfMinSnrMgn, + adslAtucConfDownshiftSnrMgn, + adslAtucConfUpshiftSnrMgn, + adslAtucConfMinUpshiftTime, + adslAtucConfMinDownshiftTime, + adslAtucChanConfFastMinTxRate, + adslAtucChanConfInterleaveMinTxRate, + adslAtucChanConfFastMaxTxRate, + adslAtucChanConfInterleaveMaxTxRate, + adslAtucChanConfMaxInterleaveDelay, + adslAturConfRateMode, adslAturConfRateChanRatio, + adslAturConfTargetSnrMgn, adslAturConfMaxSnrMgn, + adslAturConfMinSnrMgn, adslAturConfDownshiftSnrMgn, + adslAturConfUpshiftSnrMgn, + adslAturConfMinUpshiftTime, + adslAturConfMinDownshiftTime, + adslAturChanConfFastMinTxRate, + adslAturChanConfInterleaveMinTxRate, + adslAturChanConfFastMaxTxRate, + adslAturChanConfInterleaveMaxTxRate, + adslAturChanConfMaxInterleaveDelay + } + STATUS current + DESCRIPTION + "A collection of objects providing provisioning + information about an ADSL Line." + ::= { adslGroups 10 } + + adslLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThresh15MinLofs, adslAtucThresh15MinLoss, + adslAtucThresh15MinLols, adslAtucThresh15MinLprs, + adslAtucThresh15MinESs, adslAtucThreshFastRateUp, + adslAtucThreshInterleaveRateUp, + adslAtucThreshFastRateDown, + adslAtucThreshInterleaveRateDown, + adslAtucInitFailureTrapEnable, + adslAturThresh15MinLofs, adslAturThresh15MinLoss, + adslAturThresh15MinLprs, adslAturThresh15MinESs, + adslAturThreshFastRateUp, + adslAturThreshInterleaveRateUp, + adslAturThreshFastRateDown, + adslAturThreshInterleaveRateDown + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm provisioning + information about an ADSL Line." + ::= { adslGroups 11 } + + adslLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslLineConfProfile, adslLineAlarmConfProfile, + adslLineConfProfileRowStatus, + adslLineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system." + ::= { adslGroups 12 } + + adslNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucPerfLofsThreshTrap, + adslAtucPerfLossThreshTrap, + adslAtucPerfLprsThreshTrap, + adslAtucPerfESsThreshTrap, + adslAtucRateChangeTrap, + adslAtucPerfLolsThreshTrap, + adslAtucInitFailureTrap, + adslAturPerfLofsThreshTrap, + adslAturPerfLossThreshTrap, + adslAturPerfLprsThreshTrap, + adslAturPerfESsThreshTrap, + adslAturRateChangeTrap + } + STATUS current + DESCRIPTION + "The collection of adsl notifications." + ::= { adslGroups 13 } + +-- units of conformance for ATU-R agent + + adslAturLineGroup OBJECT-GROUP + OBJECTS { + adslLineCoding + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL Line on the ATU-R side." + ::= { adslGroups 14 } + + adslAturPhysicalGroup OBJECT-GROUP + OBJECTS { + adslAtucInvVendorID, + adslAtucInvVersionNumber, + adslAtucCurrOutputPwr, adslAtucCurrAttainableRate, + adslAturInvSerialNumber, adslAturInvVendorID, + adslAturInvVersionNumber, adslAturCurrSnrMgn, + adslAturCurrAtn, adslAturCurrStatus, + adslAturCurrOutputPwr, adslAturCurrAttainableRate, + adslAtucCurrStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing physical + configuration information of the ADSL Line on the + ATU-R side." + ::= { adslGroups 15 } + + adslAturChannelGroup OBJECT-GROUP + OBJECTS { + adslAtucChanInterleaveDelay, adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate, + adslAturChanInterleaveDelay, adslAturChanCurrTxRate, + adslAturChanPrevTxRate, adslAturChanCrcBlockLength + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL channel on the ATU-R + side." + ::= { adslGroups 16 } + + adslAturAtucPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfLofs, adslAtucPerfLoss, + adslAtucPerfESs, adslAtucPerfInits + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end) provided by the + ATU-R agent." + ::= { adslGroups 17 } + + adslAturAtucPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfValidIntervals, + adslAtucPerfInvalidIntervals, + adslAtucPerfCurr15MinTimeElapsed, + adslAtucPerfCurr15MinLofs, adslAtucPerfCurr15MinLoss, + adslAtucPerfCurr15MinESs, adslAtucPerfCurr15MinInits, + adslAtucPerfCurr1DayTimeElapsed, + adslAtucPerfCurr1DayLofs, adslAtucPerfCurr1DayLoss, + adslAtucPerfCurr1DayESs, adslAtucPerfCurr1DayInits, + adslAtucPerfPrev1DayMoniSecs, + adslAtucPerfPrev1DayLofs, adslAtucPerfPrev1DayLoss, + adslAtucPerfPrev1DayESs, adslAtucPerfPrev1DayInits, + adslAtucIntervalLofs, adslAtucIntervalLoss, + adslAtucIntervalESs, adslAtucIntervalInits, + adslAtucIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current + 15-minute, 1-day; and previous 1-day performance + counts on ADSL Line (ATU-C end) provided by the + ATU-R agent." + ::= { adslGroups 18 } + + adslAturAturPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAturPerfLofs, adslAturPerfLoss, + adslAturPerfLprs, adslAturPerfESs + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-R end) provided by the + ATU-R agent." + ::= { adslGroups 19 } + + adslAturAturPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAturPerfValidIntervals, + adslAturPerfInvalidIntervals, + adslAturPerfCurr15MinTimeElapsed, + adslAturPerfCurr15MinLofs, adslAturPerfCurr15MinLoss, + adslAturPerfCurr15MinLprs, adslAturPerfCurr15MinESs, + adslAturPerfCurr1DayTimeElapsed, + adslAturPerfCurr1DayLofs, adslAturPerfCurr1DayLoss, + adslAturPerfCurr1DayLprs, adslAturPerfCurr1DayESs, + adslAturPerfPrev1DayMoniSecs, + adslAturPerfPrev1DayLofs, adslAturPerfPrev1DayLoss, + adslAturPerfPrev1DayLprs, adslAturPerfPrev1DayESs, + adslAturIntervalLofs, + adslAturIntervalLoss, adslAturIntervalLprs, + adslAturIntervalESs, adslAturIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current + 15-minute, 1-day; and previous 1-day performance + counts on ADSL Line (ATU-R end) provided by the + ATU-R agent." + ::= { adslGroups 20 } + + adslAturAtucChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAtucChanReceivedBlks, + adslAtucChanTransmittedBlks, + adslAtucChanCorrectedBlks, + adslAtucChanUncorrectBlks, + adslAtucChanPerfCurr15MinTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks, + adslAtucChanPerfCurr15MinTransmittedBlks, + adslAtucChanPerfCurr15MinCorrectedBlks, + adslAtucChanPerfCurr15MinUncorrectBlks, + adslAtucChanPerfCurr1DayTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks, + adslAtucChanPerfCurr1DayTransmittedBlks, + adslAtucChanPerfCurr1DayCorrectedBlks, + adslAtucChanPerfCurr1DayUncorrectBlks, + adslAtucChanPerfPrev1DayMoniSecs, + adslAtucChanPerfPrev1DayReceivedBlks, + adslAtucChanPerfPrev1DayTransmittedBlks, + adslAtucChanPerfPrev1DayCorrectedBlks, + adslAtucChanPerfPrev1DayUncorrectBlks, + adslAtucChanPerfValidIntervals, + adslAtucChanPerfInvalidIntervals, + adslAtucChanIntervalReceivedBlks, + adslAtucChanIntervalTransmittedBlks, + adslAtucChanIntervalCorrectedBlks, + adslAtucChanIntervalUncorrectBlks, + adslAtucChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end) provided by the ATU-R agent." + ::= { adslGroups 21 } + + adslAturAturChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAturChanReceivedBlks, + adslAturChanTransmittedBlks, + adslAturChanCorrectedBlks, + adslAturChanUncorrectBlks, + adslAturChanPerfValidIntervals, + adslAturChanPerfInvalidIntervals, + adslAturChanPerfCurr15MinTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks, + adslAturChanPerfCurr15MinTransmittedBlks, + adslAturChanPerfCurr15MinCorrectedBlks, + adslAturChanPerfCurr15MinUncorrectBlks, + adslAturChanPerfCurr1DayTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks, + adslAturChanPerfCurr1DayTransmittedBlks, + adslAturChanPerfCurr1DayCorrectedBlks, + adslAturChanPerfCurr1DayUncorrectBlks, + adslAturChanPerfPrev1DayMoniSecs, + adslAturChanPerfPrev1DayReceivedBlks, + adslAturChanPerfPrev1DayTransmittedBlks, + adslAturChanPerfPrev1DayCorrectedBlks, + adslAturChanPerfPrev1DayUncorrectBlks, + adslAturChanIntervalReceivedBlks, + adslAturChanIntervalTransmittedBlks, + adslAturChanIntervalCorrectedBlks, + adslAturChanIntervalUncorrectBlks, + adslAturChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-R end) provided by the ATU-R agent." + ::= { adslGroups 22 } + + adslAturLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThresh15MinLofs, adslAtucThresh15MinLoss, + adslAtucThresh15MinESs, adslAtucThreshFastRateUp, + adslAtucThreshInterleaveRateUp, + adslAtucThreshFastRateDown, + adslAtucThreshInterleaveRateDown, + adslAtucInitFailureTrapEnable, + adslAturThresh15MinLofs, adslAturThresh15MinLoss, + adslAturThresh15MinLprs, adslAturThresh15MinESs, + adslAturThreshFastRateUp, + adslAturThreshInterleaveRateUp, + adslAturThreshFastRateDown, + adslAturThreshInterleaveRateDown + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm +provisioning + information about an ADSL Line provided by the + ATU-R agent." + ::= { adslGroups 23 } + + adslAturLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslLineAlarmConfProfile, + adslLineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system by the ATU-R agent." + ::= { adslGroups 24 } + + adslAturNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucPerfLofsThreshTrap, + adslAtucPerfLossThreshTrap, + adslAtucPerfESsThreshTrap, + adslAtucRateChangeTrap, + adslAturPerfLofsThreshTrap, + adslAturPerfLossThreshTrap, + adslAturPerfLprsThreshTrap, + adslAturPerfESsThreshTrap, + adslAturRateChangeTrap + } + STATUS current + DESCRIPTION + "The collection of ADSL notifications implemented by + the ATU-R agent." + ::= { adslGroups 25 } + +END diff --git a/mibs/ietf/ADSL-TC-MIB b/mibs/ietf/ADSL-TC-MIB new file mode 100644 index 0000000..6dec4e3 --- /dev/null +++ b/mibs/ietf/ADSL-TC-MIB @@ -0,0 +1,113 @@ +ADSL-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + transmission, + MODULE-IDENTITY, Gauge32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +adsltcmib MODULE-IDENTITY + +LAST-UPDATED "9908190000Z" + +ORGANIZATION "IETF ADSL MIB Working Group" + +CONTACT-INFO + " + Gregory Bathrick + AG Communication Systems + A Subsidiary of Lucent Technologies + 2500 W Utopia Rd. + Phoenix, AZ 85027 USA + Tel: +1 602-582-7679 + Fax: +1 602-582-7697 + E-mail: bathricg@agcs.com + + Faye Ly + Copper Mountain Networks + Norcal Office + 2470 Embarcadero Way + Palo Alto, CA 94303 + Tel: +1 650-858-8500 + Fax: +1 650-858-8085 + E-Mail: faye@coppermountain.com + IETF ADSL MIB Working Group (adsl@xlist.agcs.com) + " + DESCRIPTION + "The MIB module which provides a ADSL + Line Coding Textual Convention to be used + by ADSL Lines." + + -- Revision history + REVISION "9908190000Z" -- 19 August 1999, midnight + DESCRIPTION "Initial Version, published as RFC 2662" + + ::= { transmission 94 2 } -- adslMIB 2 + + AdslLineCodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the ADSL + Line Code." + SYNTAX INTEGER { + other(1),-- none of the following + dmt (2), -- Discrete MultiTone + cap (3), -- Carrierless Amplitude & Phase modulation + qam (4) -- Quadrature Amplitude Modulation + } + + AdslPerfCurrDayCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with interface performance + measurements in a current 1-day (24 hour) measurement + interval. + + The value of this counter starts at zero at the + beginning of an interval and is increased when + associated events occur, until the end of the + 1-day interval. At that time the value of the + counter is stored in the previous 1-day history + interval, if available, and the current interval + counter is restarted at zero. + + In the case where the agent has no valid data available + for this interval the corresponding object + instance is not available and upon a retrieval + request a corresponding error message shall be + returned to indicate that this instance does + not exist (for example, a noSuchName error for + SNMPv1 and a noSuchInstance for SNMPv2 GET + operation)." + SYNTAX Gauge32 + + AdslPerfPrevDayCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with interface performance + measurements during the most previous 1-day (24 hour) + measurement interval. The value of this counter is + equal to the value of the current day counter at + the end of its most recent interval. + + In the case where the agent has no valid data available + for this interval the corresponding object + instance is not available and upon a retrieval + request a corresponding error message shall be + returned to indicate that this instance does + not exist (for example, a noSuchName error for + SNMPv1 and a noSuchInstance for SNMPv2 GET + operation)." + SYNTAX Gauge32 + + AdslPerfTimeElapsed ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since + the beginning of the current measurement period. + If, for some reason, such as an adjustment in the + system's time-of-day clock, the current interval + exceeds the maximum value, the agent will return + the maximum value." + SYNTAX Gauge32 + +END diff --git a/mibs/ietf/ADSL2-LINE-MIB b/mibs/ietf/ADSL2-LINE-MIB new file mode 100644 index 0000000..2f9bb30 --- /dev/null +++ b/mibs/ietf/ADSL2-LINE-MIB @@ -0,0 +1,5795 @@ +ADSL2-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + transmission, + Unsigned32, + NOTIFICATION-TYPE, + Integer32, + Counter32 + FROM SNMPv2-SMI + + ifIndex + FROM IF-MIB + + TruthValue, + RowStatus + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + HCPerfIntervalThreshold, + HCPerfTimeElapsed + FROM HC-PerfHist-TC-MIB -- [RFC3705] + + Adsl2Unit, + Adsl2Direction, + Adsl2TransmissionModeType, + Adsl2RaMode, + Adsl2InitResult, + Adsl2OperationModes, + Adsl2PowerMngState, + Adsl2ConfPmsForce, + Adsl2LConfProfPmMode, + Adsl2LineLdsf, + Adsl2LdsfResult, + Adsl2SymbolProtection, + Adsl2MaxBer, + Adsl2ScMaskDs, + Adsl2ScMaskUs, + Adsl2RfiDs, + Adsl2PsdMaskDs, + Adsl2PsdMaskUs, + Adsl2Tssi, + Adsl2LastTransmittedState, + Adsl2LineStatus, + Adsl2ChAtmStatus, + + + Adsl2ChPtmStatus + FROM ADSL2-LINE-TC-MIB -- [This document] + + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +adsl2MIB MODULE-IDENTITY + LAST-UPDATED "200610040000Z" -- October 4th, 2006 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair & Co-editor: + Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + + Co-editor: Moti Morgenstern + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: moti.morgenstern@ecitele.com + Phone: +972 3 926 6258 + + Co-editor: Scott Baillie + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: scott.baillie@nec.com.au + Phone: +61 3 9264 3986 + + Co-editor: Umberto Bonollo + + + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: umberto.bonollo@nec.com.au + Phone: +61 3 9264 3385 + " + DESCRIPTION + " + This document defines a Management Information Base (MIB) + module for use with network management protocols in the + Internet community for the purpose of managing ADSL, ADSL2, + and ADSL2+ lines. The MIB module described in RFC 2662 + [RFC2662] describes objects used for managing Asymmetric + Bit-Rate DSL (ADSL) interfaces per [T1E1.413], [G.992.1], + and [G.992.2]. These object descriptions are based upon the + specifications for the ADSL Embedded Operations Channel + (EOC) as defined in American National Standards Institute + (ANSI) T1E1.413/1995 [T1E1.413] and International + Telecommunication Union (ITU-T) G.992.1 [G.992.1] and + G.992.2 [G.992.2]. + + This document does not obsolete RFC 2662 [RFC2662], but + rather provides a more comprehensive management model that + includes the ADSL2 and ADSL2+ technologies per G.992.3, + G.992.4, and G.992.5 ([G.992.3], [G.992.4], and [G.992.5], + respectively). In addition, objects have been added to + improve the management of ADSL, ADSL2, and ADSL2+ lines. + + Additionally, the management framework for New Generation + ADSL lines specified by the Digital Subscriber Line Forum + (DSLF) has been taken into consideration [TR-90]. That + framework is based on ITU-T G.997.1 standard [G.997.1] as + well as two amendments: [G.997.1am1] and [G.997.1am2]. + + Note that the revised ITU-T G.997.1 standard also refers to + the next generation of VDSL technology, known as VDSL2, per + ITU-T G.993.2 [G.993.2]. However, managing VDSL2 lines is + currently beyond the scope of this document. + + The MIB module is located in the MIB tree under MIB 2 + transmission, as discussed in the IANA Considerations section + of this document. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4706: see the RFC itself for + full legal notices." + + + + REVISION "200610040000Z" -- October 4th, 2006 + DESCRIPTION "Initial version, published as RFC 4706." + ::= { transmission 238 } + + adsl2 OBJECT IDENTIFIER ::= { adsl2MIB 1 } + ------------------------------------------------ + adsl2Line OBJECT IDENTIFIER ::= { adsl2 1 } + adsl2Status OBJECT IDENTIFIER ::= { adsl2 2 } + adsl2Inventory OBJECT IDENTIFIER ::= { adsl2 3 } + adsl2PM OBJECT IDENTIFIER ::= { adsl2 4 } + adsl2Profile OBJECT IDENTIFIER ::= { adsl2 5 } + adsl2Scalar OBJECT IDENTIFIER ::= { adsl2 6 } + adsl2Notifications OBJECT IDENTIFIER ::= { adsl2 0 } + adsl2Conformance OBJECT IDENTIFIER ::= { adsl2 7 } + ------------------------------------------------ + adsl2PMLine OBJECT IDENTIFIER ::= { adsl2PM 1 } + adsl2PMChannel OBJECT IDENTIFIER ::= { adsl2PM 2 } + ------------------------------------------------ + adsl2ProfileLine OBJECT IDENTIFIER ::= { adsl2Profile 1 } + adsl2ProfileChannel OBJECT IDENTIFIER ::= { adsl2Profile 2 } + adsl2ProfileAlarmConf OBJECT IDENTIFIER ::= { adsl2Profile 3 } + ------------------------------------------------ + adsl2ScalarSC OBJECT IDENTIFIER ::= { adsl2Scalar 1 } + ------------------------------------------------ + + +------------------------------------------------ +-- adsl2LineTable -- +------------------------------------------------ +adsl2LineTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineTable contains configuration, + command, and status parameters of the ADSL2 line. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238). + + Several objects in this table MUST be maintained in a + persistent manner." + ::= { adsl2Line 1 } + +adsl2LineEntry OBJECT-TYPE + SYNTAX Adsl2LineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The table adsl2LineTable contains configuration, + commands, and status parameters of the ADSL2 line" + INDEX { ifIndex } + ::= { adsl2LineTable 1 } + +Adsl2LineEntry ::= + SEQUENCE { + adsl2LineCnfgTemplate SnmpAdminString, + adsl2LineAlarmCnfgTemplate SnmpAdminString, + adsl2LineCmndConfPmsf Adsl2ConfPmsForce, + adsl2LineCmndConfLdsf Adsl2LineLdsf, + adsl2LineCmndConfLdsfFailReason Adsl2LdsfResult, + adsl2LineCmndAutomodeColdStart TruthValue, + adsl2LineStatusAtuTransSys Adsl2TransmissionModeType, + adsl2LineStatusPwrMngState Adsl2PowerMngState, + adsl2LineStatusInitResult Adsl2InitResult, + adsl2LineStatusLastStateDs Adsl2LastTransmittedState, + adsl2LineStatusLastStateUs Adsl2LastTransmittedState, + adsl2LineStatusAtur Adsl2LineStatus, + adsl2LineStatusAtuc Adsl2LineStatus, + adsl2LineStatusLnAttenDs Unsigned32, + adsl2LineStatusLnAttenUs Unsigned32, + adsl2LineStatusSigAttenDs Unsigned32, + adsl2LineStatusSigAttenUs Unsigned32, + adsl2LineStatusSnrMarginDs Integer32, + adsl2LineStatusSnrMarginUs Integer32, + adsl2LineStatusAttainableRateDs Unsigned32, + adsl2LineStatusAttainableRateUs Unsigned32, + adsl2LineStatusActPsdDs Integer32, + adsl2LineStatusActPsdUs Integer32, + adsl2LineStatusActAtpDs Integer32, + adsl2LineStatusActAtpUs Integer32 + } + +adsl2LineCnfgTemplate OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Configuration Templates Table, (adsl2LineConfTemplateTable), + which applies for this ADSL2 line. + + This object MUST be maintained in a persistent manner." + REFERENCE "DSL Forum TR-90, paragraph 5.1.1" + DEFVAL { "DEFVAL" } + ::= { adsl2LineEntry 1 } + + + +adsl2LineAlarmCnfgTemplate OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Alarm Configuration Template Table, + (adsl2LineAlarmConfTemplateTable), which applies to this ADSL2 + line. + + This object MUST be maintained in a persistent manner." + REFERENCE "DSL Forum TR-90, paragraph 5.1.1" + DEFVAL { "DEFVAL" } + ::= { adsl2LineEntry 2 } + +adsl2LineCmndConfPmsf OBJECT-TYPE + SYNTAX Adsl2ConfPmsForce + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Power management state forced. Defines the line states to be + forced by the near-end ATU on this line. The various possible + values are: + l3toL0(0), + l0toL2(2), or + l0orL2toL3(3). + + This object MUST be maintained in a persistent manner." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.3" + DEFVAL { l3toL0 } + ::= { adsl2LineEntry 3 } + +adsl2LineCmndConfLdsf OBJECT-TYPE + SYNTAX Adsl2LineLdsf + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Loop diagnostics mode forced (LDSF). Defines whether the line + should be forced into the loop diagnostics mode by the + near-end ATU on this line or only be responsive to loop + diagnostics initiated by the far-end ATU. + + This object MUST be maintained in a persistent manner. + However, in case the operator forces loop diagnostics mode + then the access node should reset the object (inhibit) when + loop diagnostics mode procedures are completed." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.8" + DEFVAL { inhibit } + + + ::= { adsl2LineEntry 4 } + +adsl2LineCmndConfLdsfFailReason OBJECT-TYPE + SYNTAX Adsl2LdsfResult + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the recent occasion the Loop diagnostics mode + forced (LDSF) was issued for the associated line. Possible + values are: + none(1) - The default value in case LDSF was never + requested for the associated line. + success(2) - The recent command completed + successfully. + inProgress(3) - The Loop Diagnostics process is in + progress. + unsupported(4) - The NE or the line card doesn't support + LDSF. + cannotRun(5) - The NE cannot initiate the command, due + to a nonspecific reason. + aborted(6) - The Loop Diagnostics process aborted. + failed(7) - The Loop Diagnostics process failed. + illegalMode(8) - The NE cannot initiate the command, due + to the specific mode of the relevant + line. + adminUp(9) - The NE cannot initiate the command, as + the relevant line is administratively + 'Up'. + tableFull(10) - The NE cannot initiate the command, due + to reaching the maximum number of rows + in the results table. + noResources(11) - The NE cannot initiate the command, due + to lack of internal memory resources." + DEFVAL { none } + ::= { adsl2LineEntry 5 } + + adsl2LineCmndAutomodeColdStart OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Automode cold start forced. This parameter is defined + in order to improve testing of the performance of ATUs + supporting automode when it is enabled in the MIB. + Change the value of this parameter to 'true' indicates + a change in loop conditions applied to the devices under + test. The ATUs shall reset any historical information + used for automode and for shortening G.994.1 handshake + + + and initialization. + + Automode is the case where multiple operation-modes are + enabled through the adsl2LConfProfAtuTransSysEna object + in the line configuration profile being used for the + ADSL line, and where the selection of the actual + operation-mode depends not only on the common + capabilities of both ATUs (as exchanged in G.994.1), but + also on achievable data rates under given loop + conditions. + + This object MUST be maintained in a persistent manner." + + REFERENCE "ITU-T G.997.1 (amendment 1), 7.3.1.1.10" + DEFVAL { false } + ::= { adsl2LineEntry 6 } + + +adsl2LineStatusAtuTransSys OBJECT-TYPE + SYNTAX Adsl2TransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU Transmission System (ATS) in use. + It is coded in a bit-map representation with only a single bit + set to '1' (the selected coding for the ADSL line). This + parameter may be derived from the handshaking procedures + defined in Recommendation G.994.1. A set of ADSL2 line + transmission modes, with one bit per mode." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.1" + ::= { adsl2LineEntry 7 } + +adsl2LineStatusPwrMngState OBJECT-TYPE + SYNTAX Adsl2PowerMngState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current power management state. One of four possible + power management states: + L0 - Synchronized and full transmission (i.e., Showtime). + L1 - Low Power with reduced net data rate (G.992.2 only). + L2 - Low Power with reduced net data rate (G.992.3 and + G.992.4 only). + L3 - No power. + The various possible values are: l0(1), l1(2), l2(3), or + l3(4)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.2" + ::= { adsl2LineEntry 8 } + + +adsl2LineStatusInitResult OBJECT-TYPE + SYNTAX Adsl2InitResult + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the result of the last full initialization performed + on the line. It is an enumeration type with the following + values: noFail(0), configError(1), configNotFeasible(2), + commFail(3), noPeerAtu(4), or otherCause(5)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.3" + ::= { adsl2LineEntry 9 } + +adsl2LineStatusLastStateDs OBJECT-TYPE + SYNTAX Adsl2LastTransmittedState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last successful transmitted initialization state in + the downstream direction in the last full initialization + performed on the line." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.4" + ::= { adsl2LineEntry 10 } + +adsl2LineStatusLastStateUs OBJECT-TYPE + SYNTAX Adsl2LastTransmittedState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last successful transmitted initialization state in the + upstream direction in the last full initialization performed + on the line." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.5" + ::= { adsl2LineEntry 11 } + +adsl2LineStatusAtur OBJECT-TYPE + SYNTAX Adsl2LineStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state (existing failures) of the ATU-R. + This is a bit-map of possible conditions." + REFERENCE "ITU-T G.997.1, paragraph 7.1.1.2" + ::= { adsl2LineEntry 12 } + +adsl2LineStatusAtuc OBJECT-TYPE + SYNTAX Adsl2LineStatus + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "Indicates current state (existing failures) of the ATU-C. + This is a bit-map of possible conditions." + REFERENCE "ITU-T G.997.1, paragraph 7.1.1.1" + ::= { adsl2LineEntry 13 } + +adsl2LineStatusLnAttenDs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during diagnostics mode and initialization. It + ranges from 0 to 1270 units of 0.1 dB (physical values + are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.6" + ::= { adsl2LineEntry 14 } + +adsl2LineStatusLnAttenUs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during diagnostics mode and initialization. + It ranges from 0 to 1270 units of 0.1 dB (physical values are + 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.7" + ::= { adsl2LineEntry 15 } + +adsl2LineStatusSigAttenDs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The measured difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during Showtime. It ranges from 0 to 1270 units of + 0.1 dB (physical values are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.8" + ::= { adsl2LineEntry 16 } + +adsl2LineStatusSigAttenUs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during Showtime. It ranges from 0 to 1270 units of + 0.1 dB (physical values are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.9" + ::= { adsl2LineEntry 17 } + +adsl2LineStatusSnrMarginDs OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Downstream SNR Margin is the maximum increase in dB of the + noise power received at the ATU-R, such that the BER + requirements are met for all downstream bearer channels. It + ranges from -640 to 630 units of 0.1 dB (physical values are + -64 to 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.10" + ::= { adsl2LineEntry 18 } + +adsl2LineStatusSnrMarginUs OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + + + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Upstream SNR Margin is the maximum increase in dB of the noise + power received at the ATU-C, such that the BER requirements + are met for all downstream bearer channels. It ranges from + -640 to 630 units of 0.1 dB (physical values are -64 to + 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.11" + ::= { adsl2LineEntry 19 } + +adsl2LineStatusAttainableRateDs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate Downstream. + The maximum downstream net data rate currently attainable by + the ATU-C transmitter and the ATU-R receiver, coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.12" + ::= { adsl2LineEntry 20 } + +adsl2LineStatusAttainableRateUs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate Upstream. + The maximum upstream net data rate currently attainable by the + ATU-R transmitter and the ATU-C receiver, coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.13" + ::= { adsl2LineEntry 21 } + +adsl2LineStatusActPsdDs OBJECT-TYPE + SYNTAX Integer32 (-900..0 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Actual Power Spectrum Density (PSD) Downstream. The average + downstream transmit PSD over the sub-carriers used for + downstream. It ranges from -900 to 0 units of 0.1 dB + (physical values are -90 to 0 dBm/Hz). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.14" + ::= { adsl2LineEntry 22 } + +adsl2LineStatusActPsdUs OBJECT-TYPE + SYNTAX Integer32 (-900..0 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Power Spectrum Density (PSD) Upstream. The average + upstream transmit PSD over the sub-carriers used for upstream. + It ranges from -900 to 0 units of 0.1 dB (physical values + are -90 to 0 dBm/Hz). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.15" + ::= { adsl2LineEntry 23 } + +adsl2LineStatusActAtpDs OBJECT-TYPE + SYNTAX Integer32 (-310..310 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power Downstream. The total amount + of transmit power delivered by the ATU-C at the U-C reference + point, at the instant of measurement. It ranges from -310 to + 310 units of 0.1 dB (physical values are -31 to 31 dBm). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.16" + ::= { adsl2LineEntry 24 } + +adsl2LineStatusActAtpUs OBJECT-TYPE + SYNTAX Integer32 (-310..310 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power Upstream. The total amount of + transmit power delivered by the ATU-R at the U-R + reference point, at the instant of measurement. It ranges + + + from -310 to 310 units of 0.1 dB (physical values are -31 + to 31 dBm). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.17" + ::= { adsl2LineEntry 25 } + + +------------------------------------------------ +-- adsl2ChannelStatusTable -- +------------------------------------------------ +adsl2ChannelStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2ChannelStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2ChannelStatusTable contains status + parameters of the ADSL2 channel. This table contains live + data from equipment." + ::= { adsl2Status 1 } + +adsl2ChannelStatusEntry OBJECT-TYPE + SYNTAX Adsl2ChannelStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2ChannelStatusTable contains status + parameters of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit." + INDEX { ifIndex, adsl2ChStatusUnit } + ::= { adsl2ChannelStatusTable 1 } + +Adsl2ChannelStatusEntry ::= + SEQUENCE { + adsl2ChStatusUnit Adsl2Unit, + adsl2ChStatusChannelNum Unsigned32, + adsl2ChStatusActDataRate Unsigned32, + adsl2ChStatusPrevDataRate Unsigned32, + adsl2ChStatusActDelay Unsigned32, + adsl2ChStatusAtmStatus Adsl2ChAtmStatus, + adsl2ChStatusPtmStatus Adsl2ChPtmStatus + } + +adsl2ChStatusUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + ::= { adsl2ChannelStatusEntry 1 } + +adsl2ChStatusChannelNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Provides the bearer channel number associated with this + row (i.e., the channel ifIndex). + This enables determining the channel configuration profile + and the channel thresholds profile applicable for this + bearer channel." + ::= { adsl2ChannelStatusEntry 2 } + +adsl2ChStatusActDataRate OBJECT-TYPE + SYNTAX Unsigned32(0..200000000) + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual net data rate that the bearer channel is operating + at, if in L0 power management state. In L1 or L2 states, it + relates to the previous L0 state. The data rate is coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.1" + ::= { adsl2ChannelStatusEntry 3 } + +adsl2ChStatusPrevDataRate OBJECT-TYPE + SYNTAX Unsigned32(0..200000000) + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The previous net data rate that the bearer channel was + operating at just before the latest rate change event. This + could be a full or short initialization, fast retrain, DRA or + power management transitions, excluding transitions between L0 + state and L1 or L2 states. The data rate is coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.2" + ::= { adsl2ChannelStatusEntry 4 } + +adsl2ChStatusActDelay OBJECT-TYPE + SYNTAX Unsigned32(0..8176) + UNITS "milliseconds" + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual one-way interleaving delay introduced by the + PMS-TC in the direction of the bearer channel, if in L0 + power management state. In L1 or L2 states, it relates to + the previous L0 state. It is coded in ms (rounded to the + nearest ms)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.3" + ::= { adsl2ChannelStatusEntry 5 } + +adsl2ChStatusAtmStatus OBJECT-TYPE + SYNTAX Adsl2ChAtmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state (existing failures) of the ADSL + channel in case its Data Path is ATM. This is a bit-map of + possible conditions. The various bit positions are: + noDefect(0), + noCellDelineation(1), or + lossOfCellDelineation(2). + In the case where the channel is not an ATM Data Path, the + object is set to '0'." + REFERENCE "ITU-T G.997.1, paragraph 7.1.4" + ::= { adsl2ChannelStatusEntry 6 } + +adsl2ChStatusPtmStatus OBJECT-TYPE + SYNTAX Adsl2ChPtmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state (existing failures) of the ADSL + channel in case its Data Path is PTM. This is a bit-map of + possible conditions. The various bit positions are: + noDefect(0), or + outOfSync(1). + In the case where the channel is not a PTM Data Path, the + object is set to '0'." + REFERENCE "ITU-T G.997.1, paragraph 7.1.5" + ::= { adsl2ChannelStatusEntry 7 } + + +------------------------------------------------ +-- Scalars that relate to the adsl2SCStatusTable. +------------------------------------------------ + +adsl2ScalarSCMaxInterfaces OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value determines the upper size of adsl2SCStatusTable. + The maximum number of entries in adsl2SCStatusTable is equal + to two times the value of this attribute." + ::= { adsl2ScalarSC 1 } + +adsl2ScalarSCAvailInterfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value determines the amount of space that is + currently available in adsl2SCStatusTable. + The number of entries available in adsl2SCStatusTable is equal + to two times the value of this attribute." + ::= { adsl2ScalarSC 2 } + +------------------------------------------------ +-- adsl2SCStatusTable -- +------------------------------------------------ + +adsl2SCStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2SCStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2SCStatusTable contains status parameters + of the ADSL2 sub-carriers. The following points apply to this + table: + 1. The main purpose of this table is to hold the results + of a DELT. + 2. This table also holds parameters obtained at line + initialization time. + 3. The rows in this table are volatile; that is, they are + lost if the SNMP agent is rebooted. + 4. Due to the large OCTET STRING attributes in this table, + the worst case memory requirements for this table are + very high. The manager may use the row status attribute + of this table to delete rows in order to reclaim memory. + 5. The manager may create rows in this table. The SNMP + agent may create rows in this table. Only the manager + may delete rows in this table. + 6. The maximum number of rows allowable in this table is + indicated by the scalar attribute + adsl2ScalarSCMaxInterfaces. + + + + The number of rows available in this table is indicated + by the scalar attribute adsl2ScalarSCAvailInterfaces. + 7. The SNMP agent is permitted to create rows in this table + when a DELT completes successfully or when line + initialization occurs. It is not mandatory for the SNMP + agent to create rows in this table; hence, it may be + necessary for the manager to create rows in this table + before any results can be stored. + 8. If the manager attempts to create a row in this table + and there are no more rows available, the creation + attempt will fail, and the response to the SNMP SET PDU + will contain the error noCreation(11). + 9. If the SNMP agent attempts to create a row in this table + and there are no more rows available, the creation + attempt will fail, and the attribute + adsl2LineCmndConfLdsfFailReason will indicate the + reason for the failure. The failure reason will be either + tableFull(10) or noResources(11). + 10. An example of use of this table is as follows: + Step 1. : The DELT is started by setting the + : adsl2LineCmndConfLdsf from inhibit to force. + Step 2. : The DELT completes, and valid data is + : available. + Step 3. : The row in the adsl2SCStatusTable where the + : results will be stored does not yet exist so + : the SNMP agent attempts to create the row. + Step 4. : Due to a low memory condition, a row in the + : adsl2SCStatusTable table cannot be created at + : this time. + Step 5. : The reason for the failure, tableFull(10), is + : indicated in the adsl2LineCmndConfLdsfFailReason + : attribute. + 11. Another example of use of this table is as follows : + Step 1. : The DELT is started by setting the + : adsl2LineCmndConfLdsf from inhibit to force. + Step 2. : The DELT completes and valid data is + : available. + Step 3. : The row in the adsl2SCStatusTable where the + : results will be stored does not yet exist so + : the SNMP agent attempts to create the row. + Step 4. : The row creation is successful. + Step 5. : The value of the attribute + : adsl2LineCmndConfLdsfFailReasonreason is set + : to success(2). + 12. Another example of use of this table is as follows: + Step 1. : The manager creates a row in adsl2SCStatusTable + : for a particular ADSL2 line. + Step 2. : The DELT is started on the above-mentioned + + + + : line by setting the adsl2LineCmndConfLdsf from + : inhibit to force. + Step 3. : The DELT completes, and valid data is + : available. + Step 4. : The value of the attribute + : adsl2LineCmndConfLdsfFailReasonreason is set + : to success(2)." + ::= { adsl2Status 2 } + +adsl2SCStatusEntry OBJECT-TYPE + SYNTAX Adsl2SCStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table Adsl2SCStatusEntry contains status parameters + of the ADSL2 sub-carriers. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238)." + INDEX { ifIndex, adsl2SCStatusDirection } + ::= { adsl2SCStatusTable 1 } + +Adsl2SCStatusEntry ::= + SEQUENCE { + adsl2SCStatusDirection Adsl2Direction, + adsl2SCStatusMtime Unsigned32, + adsl2SCStatusSnr OCTET STRING, + adsl2SCStatusBitsAlloc OCTET STRING, + adsl2SCStatusGainAlloc OCTET STRING, + adsl2SCStatusTssi Adsl2Tssi, + adsl2SCStatusLinScale Unsigned32, + adsl2SCStatusLinReal OCTET STRING, + adsl2SCStatusLinImg OCTET STRING, + adsl2SCStatusLogMt Unsigned32, + adsl2SCStatusLog OCTET STRING, + adsl2SCStatusQlnMt Unsigned32, + adsl2SCStatusQln OCTET STRING, + adsl2SCStatusLnAtten Unsigned32, + adsl2SCStatusSigAtten Unsigned32, + adsl2SCStatusSnrMargin Integer32, + adsl2SCStatusAttainableRate Unsigned32, + adsl2SCStatusActAtp Integer32, + adsl2SCStatusRowStatus RowStatus + } + +adsl2SCStatusDirection OBJECT-TYPE + SYNTAX Adsl2Direction + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The direction of the sub-carrier is either + upstream or downstream." + ::= { adsl2SCStatusEntry 1 } + +adsl2SCStatusMtime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SNR Measurement Time. The number of symbols used to + measure the SNR values on the respective transmission + direction. It should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second + time interval for G.992.3). This parameter corresponds to + 1 second in loop diagnostic procedure and should be updated + otherwise." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.20.1 (SNRMTds) + and paragraph 7.5.1.20.3 (SNRMTus)" + ::= { adsl2SCStatusEntry 2 } + +adsl2SCStatusSnr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..512)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNR Margin per sub-carrier, expressing the ratio between + the received signal power and received noise power per + subscriber. It is an array of 512 octets, designed for + supporting up to 512 (downstream) sub-carriers. + The number of utilized octets on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Octet i (0 <= i < NSC) is set to a value in the range 0 to + 254 to indicate that the respective downstream or upstream sub- + carrier i has SNR of: (-32 + Adsl2SubcarrierSnr(i)/2) in dB + (i.e., -32 to 95dB). + The special value 255 means that no measurement could be done + for the subcarrier because it is out of the PSD mask passband + or that the noise PSD is out of range to be represented. + Each value in this array is 8 bits wide." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.20.2 (SNRpsds) + and paragraph 7.5.1.20.4 (SNRpsus)" + ::= { adsl2SCStatusEntry 3 } + +adsl2SCStatusBitsAlloc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + + + + UNITS "bits" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bits allocation per sub-carrier. An array of 256 octets + (512 nibbles), designed for supporting up to 512 (downstream) + sub-carriers. + The number of utilized nibbles on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Nibble i (0 <= i < NSC) is set to a value in the range 0 + to 15 to indicate that the respective downstream or upstream + sub-carrier i has the same amount of bits allocation." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.1 (BITSpsds) + and paragraph 7.5.1.21.2 (BITSpsus)" + ::= { adsl2SCStatusEntry 4 } + +adsl2SCStatusGainAlloc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The gain allocation per sub-carrier. An array of 512 16-bits + values, designed for supporting up to 512 (downstream) sub- + carriers. + The number of utilized octets on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Value i (0 <= i < NSC) is in the range 0 to 4093 to indicate + that the respective downstream or upstream sub-carrier i has the + same amount of gain value. + The gain value is represented as a multiple of 1/512 on a + linear scale. Each value in this array is 16 bits wide and is + stored in big endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.3 (GAINSpsds) + and paragraph 7.5.1.21.4 (GAINSpsus)" + ::= { adsl2SCStatusEntry 5 } + +adsl2SCStatusTssi OBJECT-TYPE + SYNTAX Adsl2Tssi + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmit spectrum shaping (TSSi) breakpoints expressed + as the set of breakpoints exchanged during G.994.1. + Each breakpoint is a pair of values occupying 3 octets with the + following structure: + First 2 octets - Index of the subcarrier used in the context of + + + + the breakpoint. + Third octet - The shaping parameter at the breakpoint. + Subcarrier index is an unsigned number in the range 1 to either + NSCds (downstream direction) or NSCus (upstream direction). + The shaping parameter value is in the range 0 to 127 (units of + -0.5dB). The special value 127 indicates that the subcarrier + is not transmitted." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.5 (TSSpsds) + and paragraph 7.5.1.21.6 (TSSpsus)" + ::= { adsl2SCStatusEntry 6 } + +adsl2SCStatusLinScale OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor to be applied to the H(f) linear + representation values for the respective transmission direction. + This parameter is only available after a loop diagnostic + procedure." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.1 (HLINSCds) + and paragraph 7.5.1.18.5 (HLINSCus)" + ::= { adsl2SCStatusEntry 7 } + +adsl2SCStatusLinReal OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 complex H(f) linear representation + values in linear scale for the respective transmission + direction. It is designed to support up to 512 (downstream) + sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the real component [referred to here + as a(i)] of Hlin(f = i*Df) value for a particular sub-carrier + index i (0 <= i < NSC). + Hlin(f) is represented as ((scale/2^15)*((a(i)+j*b(i))/2^15)), + where scale is Adsl2SubcarrierLinScale and a(i) and b(i) + [provided by the Adsl2SubcarrierLinImg object] are in the range + (-2^15+1) to (+2^15-1). + A special value a(i)=b(i)= -2^15 indicates that no measurement + could be done for the subcarrier because it is out of the + passband or that the attenuation is out of range to be + represented. This parameter is only available after a loop + diagnostic procedure. + + + + Each value in this array is 16 bits wide and is stored in big + endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.2 (HLINpsds) + and paragraph 7.5.1.18.6 (HLINpsds)" + ::= { adsl2SCStatusEntry 8 } + +adsl2SCStatusLinImg OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 complex H(f) linear representation + values in linear scale for the respective transmission + direction. It is designed to support up to 512 (downstream) + sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the imaginary component [referred + to here as b(i)] of Hlin(f = i*Df) value for a particular sub- + carrier index i (0 <= i < NSC). + Hlin(f) is represented as ((scale/2^15)*((a(i)+j*b(i))/2^15)), + where scale is Adsl2SubcarrierLinScale and a(i) [provided by + the Adsl2SubcarrierLinReal object] and b(i) are in the range + (-2^15+1) to (+2^15-1). + A special value a(i)=b(i)= -2^15 indicates that no measurement + could be done for the subcarrier because it is out of the + passband or that the attenuation is out of range to be + represented. This parameter is only available after a loop + diagnostic procedure. + Each value in this array is 16 bits wide and is stored in big + endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.2 (HLINpsds) + and paragraph 7.5.1.18.6 (HLINpsds)" + ::= { adsl2SCStatusEntry 9 } + +adsl2SCStatusLogMt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbols used to measure the H(f) logarithmic + measurement values for the respective transmission direction. + This parameter should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second + time interval for G.992.3). This parameter corresponds to 1 + second in loop diagnostic procedure and should be updated in + initialization" + + + + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.3 (HLOGMTds) + and paragraph 7.5.1.18.7 (HLOGMTus)" + ::= { adsl2SCStatusEntry 10 } + +adsl2SCStatusLog OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 real H(f) logarithmic representation + values in dB for the respective transmission direction. It is + designed to support up to 512 (downstream) sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the real Hlog(f = i*Df) value for a + particular sub-carrier index i, (0 <= i < NSC). + The real Hlog(f) value is represented as (6-m(i)/10), with m(i) + in the range 0 to 1022. A special value m=1023 indicates that + no measurement could be done for the subcarrier because it is + out of the passband or that the attenuation is out of range to + be represented. This parameter is applicable in loop + diagnostic procedure and initialization. + Each value in this array is 16 bits wide and is stored + in big endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.4 (HLOGpsds) + and paragraph 7.5.1.18.8 (HLOGpsus)" + ::= { adsl2SCStatusEntry 11 } + +adsl2SCStatusQlnMt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbols used to measure the Quiet Line Noise + values on the respective transmission direction. This + parameter should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second time + interval for G.992.3). This parameter corresponds to 1 second + in loop diagnostic procedure and should be updated in + initialization " + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.19.1 (QLNMTds) + and paragraph 7.5.1.19.3 (QLNMTus)" + ::= { adsl2SCStatusEntry 12 } + +adsl2SCStatusQln OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..512)) + UNITS "dBm/Hz" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 real Quiet Line Noise values in dBm/Hz + for the respective transmission direction. It is designed for + up to 512 (downstream) sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the QLN(f = i*Df) value for a + particular sub-carrier index i, (0 <= i < NSC). + The QLN(f) is represented as ( -23-n(i)/2), with n(i) in the + range 0 to 254. A special value n(i)=255 indicates that no + measurement could be done for the subcarrier because it is out + of the passband or that the noise PSD is out of range to be + represented. + This parameter is applicable in loop diagnostic procedure and + initialization. Each value in this array is 8 bits wide." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.19.2 (QLNpsds) + and paragraph 7.5.1.19.4 (QLNpsus)" + ::= { adsl2SCStatusEntry 13 } + +adsl2SCStatusLnAtten OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When referring to the downstream direction, it is the measured + difference in the total power transmitted by the ATU-C and the + total power received by the ATU-R over all sub-carriers during + diagnostics mode. + When referring to the upstream direction, it is the measured + difference in the total power transmitted by the ATU-R and the + total power received by the ATU-C over all sub-carriers during + diagnostics mode. + It ranges from 0 to 1270 units of 0.1 dB (physical values are + 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.6 (LATNds) + and paragraph 7.5.1.7 (LATNus)" + + + + ::= { adsl2SCStatusEntry 14 } + +adsl2SCStatusSigAtten OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When referring to the downstream direction, it is the measured + difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during Showtime after the diagnostics mode. + When referring to the upstream direction, it is the measured + difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during Showtime after the diagnostics mode. + It ranges from 0 to 1270 units of 0.1 dB (physical values + are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.8 (SATNds) + and paragraph 7.5.1.9 (SATNus)" + ::= { adsl2SCStatusEntry 15 } + +adsl2SCStatusSnrMargin OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SNR Margin is the maximum increase in dB of the noise power + received at the ATU (ATU-R on downstream direction and ATU-C + on upstream direction), such that the BER requirements are met + for all bearer channels received at the ATU. It ranges from + -640 to 630 units of 0.1 dB (physical values are -64 to + 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + + + + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.10 (SNRMds) + and paragraph 7.5.1.11 (SNRMus)" + ::= { adsl2SCStatusEntry 16 } + +adsl2SCStatusAttainableRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate. The maximum net data rate + currently attainable by the ATU-C transmitter and ATU-R + receiver (when referring to downstream direction) or by the + ATU-R transmitter and ATU-C receiver (when referring to + upstream direction). Value is coded in bits/second. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.12 (ATTNDRds) + and paragraph 7.5.1.13 (ATTNDRus)" + ::= { adsl2SCStatusEntry 17 } + +adsl2SCStatusActAtp OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power from the ATU (ATU-R on + downstream direction and ATU-C on upstream direction), at the + instant of measurement. It ranges from -310 to 310 units of + 0.1 dB (physical values are -31 to 31 dBm). A value of all + 1's indicates the measurement is out of range to be + represented. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.16 (ACTATPds) + and paragraph 7.5.1.17 (ACTATPus)" + ::= { adsl2SCStatusEntry 18 } + +adsl2SCStatusRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Row Status. The manager may create and delete rows + of this table. Please see the description of + adsl2SCStatusTable above for more details." + ::= { adsl2SCStatusEntry 19 } + +------------------------------------------------ +-- adsl2LineInventoryTable -- +------------------------------------------------ +adsl2LineInventoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineInventoryTable contains inventory of the + ADSL2 units." + ::= { adsl2Inventory 1 } + +adsl2LineInventoryEntry OBJECT-TYPE + SYNTAX Adsl2LineInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineInventoryTable contains inventory of the + ADSL2 units. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238)." + INDEX { ifIndex, adsl2LInvUnit } + ::= { adsl2LineInventoryTable 1 } + +Adsl2LineInventoryEntry ::= + SEQUENCE { + adsl2LInvUnit Adsl2Unit, + adsl2LInvG994VendorId OCTET STRING, + adsl2LInvSystemVendorId OCTET STRING, + adsl2LInvVersionNumber OCTET STRING, + adsl2LInvSerialNumber OCTET STRING, + adsl2LInvSelfTestResult Unsigned32, + adsl2LInvTransmissionCapabilities Adsl2TransmissionModeType + } + +adsl2LInvUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + + + + ::= { adsl2LineInventoryEntry 1 } + +adsl2LInvG994VendorId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU G.994.1 Vendor ID as inserted in the G.994.1 CL/CLR + message. It consists of 8 binary octets, including a country + code followed by a (regionally allocated) provider code, as + defined in Recommendation T.35." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 2 } + +adsl2LInvSystemVendorId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU System Vendor ID (identifies the ATU system + integrator) as inserted in the Overhead Messages (both ATUs + for G.992.3 and G.992.4) or in the Embedded Operations + Channel (only ATU-R in G.992.1 and G.992.2). It consists of + 8 binary octets, with the same format as used for + Adsl2InvG994VendorId." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 3 } + +adsl2LInvVersionNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU version number (vendor-specific information) as + inserted in the Overhead Messages (both ATUs for G.992.3 and + G.992.4) or in the Embedded Operations Channel (only ATU-R in + G.992.1 and G.992.2). It consists of up to 16 binary octets." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 4 } + +adsl2LInvSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU serial number (vendor-specific information) as + inserted in the Overhead Messages (both ATUs for G.992.3 and + G.992.4) or in the Embedded Operations Channel (only ATU-R in + + + + G.992.1 and G.992.2). It is vendor-specific information. It + consists of up to 32 ASCII characters." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 5 } + +adsl2LInvSelfTestResult OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU self-test result, coded as a 32-bit value. The + most significant octet of the result is '0' if the self-test + passed, and '1' if the self-test failed. The interpretation + of the other octets is vendor discretionary." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 6 } + +adsl2LInvTransmissionCapabilities OBJECT-TYPE + SYNTAX Adsl2TransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU transmission system capability list of the different + coding types. It is coded in a bit-map representation with 1 + or more bits set. A bit set to '1' means that the ATU + supports the respective coding. The value may be derived + from the handshaking procedures defined in G.994.1. A set + of ADSL2 line transmission modes, with one bit per mode." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 7 } + + +------------------------------------------------ +-- adsl2LineConfTemplateTable -- +------------------------------------------------ +adsl2LineConfTemplateTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineConfTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfTemplateTable contains ADSL2 line + configuration templates. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { adsl2ProfileLine 1 } + +adsl2LineConfTemplateEntry OBJECT-TYPE + + + + SYNTAX Adsl2LineConfTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfTemplateTable contains the ADSL2 line + configuration template. + A default template with an index of 'DEFVAL' will + always exist, and its parameters will be set to vendor- + specific values, unless otherwise specified in this document." + INDEX { adsl2LConfTempTemplateName } + ::= { adsl2LineConfTemplateTable 1 } + +Adsl2LineConfTemplateEntry ::= + SEQUENCE { + adsl2LConfTempTemplateName SnmpAdminString, + adsl2LConfTempLineProfile SnmpAdminString, + adsl2LConfTempChan1ConfProfile SnmpAdminString, + adsl2LConfTempChan1RaRatioDs Unsigned32, + adsl2LConfTempChan1RaRatioUs Unsigned32, + adsl2LConfTempChan2ConfProfile SnmpAdminString, + adsl2LConfTempChan2RaRatioDs Unsigned32, + adsl2LConfTempChan2RaRatioUs Unsigned32, + adsl2LConfTempChan3ConfProfile SnmpAdminString, + adsl2LConfTempChan3RaRatioDs Unsigned32, + adsl2LConfTempChan3RaRatioUs Unsigned32, + adsl2LConfTempChan4ConfProfile SnmpAdminString, + adsl2LConfTempChan4RaRatioDs Unsigned32, + adsl2LConfTempChan4RaRatioUs Unsigned32, + adsl2LConfTempRowStatus RowStatus + } + +adsl2LConfTempTemplateName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table." + REFERENCE "DSL Forum TR-90, paragraph 5.1.4" + ::= { adsl2LineConfTemplateEntry 1 } + +adsl2LConfTempLineProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Configuration Profile Table, (adsl2LineConfProfTable), + which applies for this ADSL2 line." + + + + REFERENCE "DSL Forum TR-90, paragraph 5.1.4" + DEFVAL { "DEFVAL" } + ::= { adsl2LineConfTemplateEntry 2 } + +adsl2LConfTempChan1ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table, + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #1. The channel profile name specified here must + match the name of an existing row in the + adsl2ChConfProfileTable table." + DEFVAL { "DEFVAL" } + ::= { adsl2LineConfTemplateEntry 3 } + +adsl2LConfTempChan1RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #1 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan1RaRatioDs is the ratio of excess data + rate to be assigned to all other bearer channels on Downstream + direction. The sum of rate adaptation ratios over all bearers + on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 100 } + ::= { adsl2LineConfTemplateEntry 4 } + +adsl2LConfTempChan1RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #1 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + + + + 100 - adsl2LConfTempChan1RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 100 } + ::= { adsl2LineConfTemplateEntry 5 } + +adsl2LConfTempChan2ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #2. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a zero-length string only if + adsl2LConfTempChan3ConfProfile contains a zero-length + string." + + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 6 } + +adsl2LConfTempChan2RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #2 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan2RaRatioDs is the ratio of excess + data rate to be assigned to all other bearer channels on + Downstream direction. The sum of rate adaptation ratios + over all bearers on the same direction shall be equal to + 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 7 } + +adsl2LConfTempChan2RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #2 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan2RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 8 } + +adsl2LConfTempChan3ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #3. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a zero-length string only if + adsl2LConfTempChan4ConfProfile contains a zero-length + string. + This object may be set to a non-zero-length string only if + adsl2LConfTempChan2ConfProfile contains a non-zero-length + string." + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 9 } + +adsl2LConfTempChan3RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #3 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan3RaRatioDs is the ratio of excess data + rate to be assigned to all other bearer channels on Downstream + + + + direction. The sum of rate adaptation ratios over all bearers + on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 10 } + +adsl2LConfTempChan3RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #3 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan3RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 11 } + +adsl2LConfTempChan4ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #4. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a non-zero-length string only if + adsl2LConfTempChan3ConfProfile contains a non-zero-length + string." + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 12 } + +adsl2LConfTempChan4RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + + + + into account for the bearer channel #4 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan4RaRatioDs is the ratio of + excess data rate to be assigned to all other bearer channels. + The sum of rate adaptation ratios over all bearers on the same + direction shall sum to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 13 } + +adsl2LConfTempChan4RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #4 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over + all bearer channels. Also, the 100 - + adsl2LConfTempChan4RaRatioUs is the + ratio of excess data rate to be assigned to all other bearer + channels. The sum of rate adaptation ratios over all bearers + on the same direction shall sum to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 14 } + +adsl2LConfTempRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or to modify or + delete an existing row in this table. + + A template is activated by setting this object to 'active'. + When 'active' is set, the system will validate the template. + + Before a template can be deleted or taken out of service + (by setting this object to 'destroy' or 'notInService'), + it must first be unreferenced from all associated + lines." + ::= { adsl2LineConfTemplateEntry 15 } + + + + +------------------------------------------ +-- adsl2LineConfProfTable -- +------------------------------------------ +adsl2LineConfProfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineConfProfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfProfTable contains ADSL2 line profile + configuration. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { adsl2ProfileLine 2 } + +adsl2LineConfProfEntry OBJECT-TYPE + SYNTAX Adsl2LineConfProfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfProfTable contains ADSL2 line profile + configuration. + + A default profile with an index of 'DEFVAL' will + always exist, and its parameters will be set to vendor- + specific values, unless otherwise specified in this document." + INDEX { adsl2LConfProfProfileName } + ::= { adsl2LineConfProfTable 1 } + +Adsl2LineConfProfEntry ::= + SEQUENCE { + adsl2LConfProfProfileName SnmpAdminString, + adsl2LConfProfScMaskDs Adsl2ScMaskDs, + adsl2LConfProfScMaskUs Adsl2ScMaskUs, + adsl2LConfProfRfiBandsDs Adsl2RfiDs, + adsl2LConfProfRaModeDs Adsl2RaMode, + adsl2LConfProfRaModeUs Adsl2RaMode, + adsl2LConfProfRaUsNrmDs Unsigned32, + adsl2LConfProfRaUsNrmUs Unsigned32, + adsl2LConfProfRaUsTimeDs Unsigned32, + adsl2LConfProfRaUsTimeUs Unsigned32, + adsl2LConfProfRaDsNrmsDs Unsigned32, + adsl2LConfProfRaDsNrmsUs Unsigned32, + adsl2LConfProfRaDsTimeDs Unsigned32, + adsl2LConfProfRaDsTimeUs Unsigned32, + adsl2LConfProfTargetSnrmDs Unsigned32, + adsl2LConfProfTargetSnrmUs Unsigned32, + adsl2LConfProfMaxSnrmDs Unsigned32, + + + + adsl2LConfProfMaxSnrmUs Unsigned32, + adsl2LConfProfMinSnrmDs Unsigned32, + adsl2LConfProfMinSnrmUs Unsigned32, + adsl2LConfProfMsgMinUs Unsigned32, + adsl2LConfProfMsgMinDs Unsigned32, + adsl2LConfProfAtuTransSysEna Adsl2TransmissionModeType, + adsl2LConfProfPmMode Adsl2LConfProfPmMode, + adsl2LConfProfL0Time Unsigned32, + adsl2LConfProfL2Time Unsigned32, + adsl2LConfProfL2Atpr Unsigned32, + adsl2LConfProfL2Atprt Unsigned32, + adsl2LConfProfRowStatus RowStatus + } + +adsl2LConfProfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table." + ::= { adsl2LineConfProfEntry 1 } + +adsl2LConfProfScMaskDs OBJECT-TYPE + SYNTAX Adsl2ScMaskDs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sub-carriers mask. A bitmap of 512 bits that allows masking + up to 512 downstream sub-carriers, depending on NSCds. If bit + i (0 <= i < NSCds) is set to '1', the respective + downstream sub-carrier i is masked, and if set to '0', the + respective sub-carrier is unmasked. Note that there should + always be unmasked sub-carriers (i.e., the object cannot be + all 1's). Also note that if NSCds < 512, all bits + i (NSCds < i <= 512) should be set to '1'." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.2.6" + ::= { adsl2LineConfProfEntry 2 } + +adsl2LConfProfScMaskUs OBJECT-TYPE + SYNTAX Adsl2ScMaskUs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sub-carriers mask. A bitmap of 64 bits that allows masking + up to 64 downstream sub-carriers, depending on NSCds. If + bit i (0 <= i < NSCus) is set to '1', the respective + upstream sub-carrier i is masked, and if set to '0', the + respective sub-carrier is unmasked. Note that there + + + + should always be unmasked sub-carriers (i.e., the object + cannot be all 1's). Also note that if NSCus < + 64, all bits i (NSCus < i <= 64) should be set to '1'." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.2.7" + ::= { adsl2LineConfProfEntry 3 } + +adsl2LConfProfRfiBandsDs OBJECT-TYPE + SYNTAX Adsl2RfiDs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The subset of downstream PSD mask breakpoints that shall be + used to notch an RFI band. + The specific interpolation around these points is defined in + G.992.5. It is a bitmap of 512 bits that allows referring to + up to 512 downstream sub-carriers, depending on NSCds. If bit + i (0 <= i < NSCds) is set to '1', the respective downstream + sub-carrier i is part of a notch filter, and if set to '0', + the respective sub-carrier is not part of a notch filter. + This information complements the specification provided by + adsl2LConfProfPsdMaskDs. + Note that if NSCds < 512, all bits i (NSCds= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >=1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >=1 OR RDI >=1 OR LPR-FE >=1 . + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 6 } + +adsl2PMLCurr15MSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1 . + This parameter is inhibited during UAS." + + + + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 7 } + +adsl2PMLCurr15MLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 8 } + +adsl2PMLCurr15MUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this + interval. Unavailability begins at the onset of 10 + contiguous severely-errored seconds, and ends at the + onset of 10 contiguous seconds with no severely-errored + seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 9 } + +adsl2PMLCurr1DayValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMLineCurrEntry 10 } + +adsl2PMLCurr1DayInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMLineCurrEntry 11 } + +adsl2PMLCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrEntry 12 } + +adsl2PMLCurr1DayFecs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 13 } + +adsl2PMLCurr1DayEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 14 } + +adsl2PMLCurr1DaySes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1 + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + + + + ::= { adsl2PMLineCurrEntry 15 } + +adsl2PMLCurr1DayLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 16 } + +adsl2PMLCurr1DayUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 17 } + + +------------------------------------------------ +-- PM line init current counters -- +------------------------------------------------ + +adsl2PMLineCurrInitTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineCurrInitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineCurrInitTable contains current + initialization counters of the ADSL2 line. + The PM counters in the table are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLine 2 } + +adsl2PMLineCurrInitEntry OBJECT-TYPE + SYNTAX Adsl2PMLineCurrInitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The table adsl2PMLineCurrInitTable contains current + initialization counters of the ADSL2 line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and a + termination unit." + INDEX { ifIndex } + ::= { adsl2PMLineCurrInitTable 1 } + +Adsl2PMLineCurrInitEntry ::= + SEQUENCE { + adsl2PMLCurrInit15MTimeElapsed Unsigned32, + adsl2PMLCurrInit15MFullInits Unsigned32, + adsl2PMLCurrInit15MFailedFullInits Unsigned32, + adsl2PMLCurrInit15MShortInits Unsigned32, + adsl2PMLCurrInit15MFailedShortInits Unsigned32, + adsl2PMLCurrInit1DayTimeElapsed Unsigned32, + adsl2PMLCurrInit1DayFullInits Unsigned32, + adsl2PMLCurrInit1DayFailedFullInits Unsigned32, + adsl2PMLCurrInit1DayShortInits Unsigned32, + adsl2PMLCurrInit1DayFailedShortInits Unsigned32 + } + +adsl2PMLCurrInit15MTimeElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrInitEntry 1 } + +adsl2PMLCurrInit15MFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 2 } + +adsl2PMLCurrInit15MFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 3 } + +adsl2PMLCurrInit15MShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 4 } + +adsl2PMLCurrInit15MFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 5 } + +adsl2PMLCurrInit1DayTimeElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrInitEntry 6 } + +adsl2PMLCurrInit1DayFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 7 } + + + + +adsl2PMLCurrInit1DayFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 8 } + +adsl2PMLCurrInit1DayShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 9 } + +adsl2PMLCurrInit1DayFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 10 } + + + +------------------------------------------- +-- PM line history 15 Minutes -- +------------------------------------------- +adsl2PMLineHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist15MinTable contains PM line history + for 15min intervals of the ADSL2 line." + ::= { adsl2PMLine 3 } + +adsl2PMLineHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMLineHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The table adsl2PMLineHist15MinTable contains PM line history + for 15min intervals of the ADSL2 line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), along with a + termination unit, and an interval number." + INDEX { ifIndex, + adsl2PMLHist15MUnit, + adsl2PMLHist15MInterval } + ::= { adsl2PMLineHist15MinTable 1 } + +Adsl2PMLineHist15MinEntry ::= + SEQUENCE { + adsl2PMLHist15MUnit Adsl2Unit, + adsl2PMLHist15MInterval Unsigned32, + adsl2PMLHist15MMonitoredTime Unsigned32, + adsl2PMLHist15MFecs Counter32, + adsl2PMLHist15MEs Counter32, + adsl2PMLHist15MSes Counter32, + adsl2PMLHist15MLoss Counter32, + adsl2PMLHist15MUas Counter32, + adsl2PMLHist15MValidInterval TruthValue + } + +adsl2PMLHist15MUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + ::= { adsl2PMLineHist15MinEntry 1 } + +adsl2PMLHist15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineHist15MinEntry 2 } + +adsl2PMLHist15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineHist15MinEntry 3 } + + + +adsl2PMLHist15MFecs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 4 } + +adsl2PMLHist15MEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 5 } + +adsl2PMLHist15MSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 6 } + +adsl2PMLHist15MLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 7 } + +adsl2PMLHist15MUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 8 } + +adsl2PMLHist15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineHist15MinEntry 9 } + + + +--------------------------------------- +-- PM line history 1 Day -- +--------------------------------------- +adsl2PMLineHist1DayTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist1DayTable contains PM line history + for 24-hour intervals of the ADSL2 line." + ::= { adsl2PMLine 4 } + +adsl2PMLineHist1DayEntry OBJECT-TYPE + SYNTAX Adsl2PMLineHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist1DayTable contains PM line history + for 24-hour intervals of the ADSL2 line. + + + + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), along with a + termination unit, and an interval number." + INDEX { ifIndex, + adsl2PMLHist1DUnit, + adsl2PMLHist1DInterval } + ::= { adsl2PMLineHist1DayTable 1 } + +Adsl2PMLineHist1DayEntry ::= + SEQUENCE { + adsl2PMLHist1DUnit Adsl2Unit, + adsl2PMLHist1DInterval Unsigned32, + adsl2PMLHist1DMonitoredTime Unsigned32, + adsl2PMLHist1DFecs Counter32, + adsl2PMLHist1DEs Counter32, + adsl2PMLHist1DSes Counter32, + adsl2PMLHist1DLoss Counter32, + adsl2PMLHist1DUas Counter32, + adsl2PMLHist1DValidInterval TruthValue + } + +adsl2PMLHist1DUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMLineHist1DayEntry 1 } + +adsl2PMLHist1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineHist1DayEntry 2 } + +adsl2PMLHist1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineHist1DayEntry 3 } + +adsl2PMLHist1DFecs OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 4 } + +adsl2PMLHist1DEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 5 } + +adsl2PMLHist1DSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >> 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 6 } + +adsl2PMLHist1DLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + + + + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 7 } + +adsl2PMLHist1DUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 8 } + +adsl2PMLHist1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineHist1DayEntry 9 } + + + + +------------------------------------------- +-- PM line init history 15 Minutes -- +------------------------------------------- + +adsl2PMLineInitHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineInitHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist15MinTable contains PM line + initialization history for 15-minute intervals of the ADSL2 + line." + ::= { adsl2PMLine 5 } + +adsl2PMLineInitHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMLineInitHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist15MinTable contains PM line + + + + initialization history for 15 minutes intervals of the ADSL2 + line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and an interval + number." + INDEX { ifIndex, + adsl2PMLHistInit15MInterval } + ::= { adsl2PMLineInitHist15MinTable 1 } + +Adsl2PMLineInitHist15MinEntry ::= + SEQUENCE { + adsl2PMLHistInit15MInterval Unsigned32, + adsl2PMLHistInit15MMonitoredTime Unsigned32, + adsl2PMLHistInit15MFullInits Unsigned32, + adsl2PMLHistInit15MFailedFullInits Unsigned32, + adsl2PMLHistInit15MShortInits Unsigned32, + adsl2PMLHistInit15MFailedShortInits Unsigned32, + adsl2PMLHistInit15MValidInterval TruthValue + } + +adsl2PMLHistInit15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineInitHist15MinEntry 1 } + +adsl2PMLHistInit15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineInitHist15MinEntry 2 } + +adsl2PMLHistInit15MFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 3 } + +adsl2PMLHistInit15MFailedFullInits OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 4 } + +adsl2PMLHistInit15MShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 5 } + +adsl2PMLHistInit15MFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 6 } + +adsl2PMLHistInit15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineInitHist15MinEntry 7 } + + + +------------------------------------------- +-- PM line init history 1 Day -- +------------------------------------------- +adsl2PMLineInitHist1DayTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineInitHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The table adsl2PMLineInitHist1DayTable contains PM line + initialization history for 24-hour intervals of the ADSL2 + line." + ::= { adsl2PMLine 6 } + +adsl2PMLineInitHist1DayEntry OBJECT-TYPE + SYNTAX Adsl2PMLineInitHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist1DayTable contains PM line + initialization history for 24-hour intervals of the ADSL2 + line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and an interval + number." + INDEX { ifIndex, + adsl2PMLHistinit1DInterval } + ::= { adsl2PMLineInitHist1DayTable 1 } + +Adsl2PMLineInitHist1DayEntry ::= + SEQUENCE { + adsl2PMLHistinit1DInterval Unsigned32, + adsl2PMLHistinit1DMonitoredTime Unsigned32, + adsl2PMLHistinit1DFullInits Unsigned32, + adsl2PMLHistinit1DFailedFullInits Unsigned32, + adsl2PMLHistinit1DShortInits Unsigned32, + adsl2PMLHistinit1DFailedShortInits Unsigned32, + adsl2PMLHistinit1DValidInterval TruthValue + } + +adsl2PMLHistinit1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineInitHist1DayEntry 1 } + +adsl2PMLHistinit1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineInitHist1DayEntry 2 } + + + + +adsl2PMLHistinit1DFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 3 } + +adsl2PMLHistinit1DFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 4 } + +adsl2PMLHistinit1DShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 5 } + +adsl2PMLHistinit1DFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 6 } + +adsl2PMLHistinit1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineInitHist1DayEntry 7 } + + + +--------------------------------------------------- +-- PM channel current counters -- +--------------------------------------------------- +adsl2PMChCurrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The PM counters in the table are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChannel 1 } + +adsl2PMChCurrEntry OBJECT-TYPE + SYNTAX Adsl2PMChCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit." + INDEX { ifIndex, adsl2PMChCurrUnit } + ::= { adsl2PMChCurrTable 1 } + +Adsl2PMChCurrEntry ::= + SEQUENCE { + adsl2PMChCurrUnit Adsl2Unit, + adsl2PMChCurrValidIntervals Unsigned32, + adsl2PMChCurrInvalidIntervals Unsigned32, + adsl2PMChCurr15MTimeElapsed HCPerfTimeElapsed, + adsl2PMChCurr15MCodingViolations Unsigned32, + adsl2PMChCurr15MCorrectedBlocks Unsigned32, + adsl2PMChCurr1DayValidIntervals Unsigned32, + adsl2PMChCurr1DayInvalidIntervals Unsigned32, + adsl2PMChCurr1DayTimeElapsed HCPerfTimeElapsed, + adsl2PMChCurr1DayCodingViolations Unsigned32, + adsl2PMChCurr1DayCorrectedBlocks Unsigned32 + } + +adsl2PMChCurrUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The termination unit." + ::= { adsl2PMChCurrEntry 1 } + +adsl2PMChCurrValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMChCurrEntry 2 } + +adsl2PMChCurrInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMChCurrEntry 3 } + +adsl2PMChCurr15MTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChCurrEntry 4 } + +adsl2PMChCurr15MCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 5 } + +adsl2PMChCurr15MCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 6 } + +adsl2PMChCurr1DayValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMChCurrEntry 7 } + +adsl2PMChCurr1DayInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMChCurrEntry 8 } + +adsl2PMChCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChCurrEntry 9 } + +adsl2PMChCurr1DayCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + + + + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 10 } + +adsl2PMChCurr1DayCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 11 } + + + +------------------------------------------- +-- PM channel history 15 Minutes -- +------------------------------------------- +adsl2PMChHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel." + ::= { adsl2PMChannel 2 } + +adsl2PMChHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMChHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit, and the + interval number." + INDEX { ifIndex, + adsl2PMChHist15MUnit, + adsl2PMChHist15MInterval } + ::= { adsl2PMChHist15MinTable 1 } + + + +Adsl2PMChHist15MinEntry ::= + SEQUENCE { + adsl2PMChHist15MUnit Adsl2Unit, + adsl2PMChHist15MInterval Unsigned32, + adsl2PMChHist15MMonitoredTime Unsigned32, + adsl2PMChHist15MCodingViolations Unsigned32, + adsl2PMChHist15MCorrectedBlocks Unsigned32, + adsl2PMChHist15MValidInterval TruthValue + } + +adsl2PMChHist15MUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMChHist15MinEntry 1 } + +adsl2PMChHist15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMChHist15MinEntry 2 } + +adsl2PMChHist15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMChHist15MinEntry 3 } + +adsl2PMChHist15MCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist15MinEntry 4 } + + + +adsl2PMChHist15MCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist15MinEntry 5 } + +adsl2PMChHist15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMChHist15MinEntry 6 } + + + +------------------------------------------ +-- PM channel history 1 Day -- +------------------------------------------ +adsl2PMChHist1DTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChHist1DEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChHist1DayTable contains PM channel history + for 1-day intervals of ADSL2." + ::= { adsl2PMChannel 3 } + +adsl2PMChHist1DEntry OBJECT-TYPE + SYNTAX Adsl2PMChHist1DEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChHist1DayTable contains PM channel history + for 1-day intervals of ADSL2. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit, and the + interval number." + + + + INDEX { ifIndex, + adsl2PMChHist1DUnit, + adsl2PMChHist1DInterval } + ::= { adsl2PMChHist1DTable 1 } + +Adsl2PMChHist1DEntry ::= + SEQUENCE { + adsl2PMChHist1DUnit Adsl2Unit, + adsl2PMChHist1DInterval Unsigned32, + adsl2PMChHist1DMonitoredTime Unsigned32, + adsl2PMChHist1DCodingViolations Unsigned32, + adsl2PMChHist1DCorrectedBlocks Unsigned32, + adsl2PMChHist1DValidInterval TruthValue + } + +adsl2PMChHist1DUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMChHist1DEntry 1 } + +adsl2PMChHist1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMChHist1DEntry 2 } + +adsl2PMChHist1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMChHist1DEntry 3 } + +adsl2PMChHist1DCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + + + + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist1DEntry 4 } + +adsl2PMChHist1DCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist1DEntry 5 } + +adsl2PMChHist1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMChHist1DEntry 6 } + +------------------------------------------- +-- Notifications Group -- +------------------------------------------- + +adsl2LinePerfFECSThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MFecs, + adsl2LineAlarmConfProfileAtucThresh15MinFecs + } + STATUS current + DESCRIPTION + "This notification indicates that the FEC seconds threshold + has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 1 } + +adsl2LinePerfFECSThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MFecs, + adsl2LineAlarmConfProfileAturThresh15MinFecs + } + STATUS current + DESCRIPTION + "This notification indicates that the FEC seconds threshold + has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 2 } + +adsl2LinePerfESThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MEs, + adsl2LineAlarmConfProfileAtucThresh15MinEs + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds threshold + has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 3 } + +adsl2LinePerfESThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MEs, + adsl2LineAlarmConfProfileAturThresh15MinEs + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds threshold + has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 4 } + +adsl2LinePerfSESThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MSes, + adsl2LineAlarmConfProfileAtucThresh15MinSes + } + STATUS current + DESCRIPTION + "This notification indicates that the severely-errored seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 5 } + +adsl2LinePerfSESThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MSes, + adsl2LineAlarmConfProfileAturThresh15MinSes + } + STATUS current + DESCRIPTION + "This notification indicates that the severely-errored seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 6 } + +adsl2LinePerfLOSSThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MLoss, + adsl2LineAlarmConfProfileAtucThresh15MinLoss + } + STATUS current + DESCRIPTION + "This notification indicates that the LOS seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 7 } + +adsl2LinePerfLOSSThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MLoss, + adsl2LineAlarmConfProfileAturThresh15MinLoss + } + STATUS current + DESCRIPTION + "This notification indicates that the LOS seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 8 } + +adsl2LinePerfUASThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MUas, + adsl2LineAlarmConfProfileAtucThresh15MinUas + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 9 } + +adsl2LinePerfUASThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MUas, + adsl2LineAlarmConfProfileAturThresh15MinUas + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 10 } + +adsl2LinePerfCodingViolationsThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCodingViolations, + adsl2ChAlarmConfProfileAtucThresh15MinCodingViolations + } + STATUS current + DESCRIPTION + "This notification indicates that the coding violations + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 11 } + +adsl2LinePerfCodingViolationsThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCodingViolations, + adsl2ChAlarmConfProfileAturThresh15MinCodingViolations + } + STATUS current + DESCRIPTION + "This notification indicates that the coding violations + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 12 } + +adsl2LinePerfCorrectedThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCorrectedBlocks, + adsl2ChAlarmConfProfileAtucThresh15MinCorrected + } + STATUS current + DESCRIPTION + "This notification indicates that the corrected blocks + (FEC events) threshold has been reached/exceeded for the + referred ATU-C." + ::= { adsl2Notifications 13 } + +adsl2LinePerfCorrectedThreshAtur NOTIFICATION-TYPE + OBJECTS + + + + { + adsl2PMChCurr15MCorrectedBlocks, + adsl2ChAlarmConfProfileAturThresh15MinCorrected + } + STATUS current + DESCRIPTION + "This notification indicates that the corrected blocks + (FEC events) threshold has been reached/exceeded for the + referred ATU-R." + ::= { adsl2Notifications 14 } + +adsl2LinePerfFailedFullInitThresh NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurrInit15MFailedFullInits, + adsl2LineAlarmConfProfileThresh15MinFailedFullInt + } + STATUS current + DESCRIPTION + "This notification indicates that the failed full + initializations threshold has been reached/exceeded for the + referred ADSL/ADSL2 or ADSL2+ line." + ::= { adsl2Notifications 15 } + +adsl2LinePerfFailedShortInitThresh NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurrInit15MFailedShortInits, + adsl2LineAlarmConfProfileThresh15MinFailedShrtInt + } + STATUS current + DESCRIPTION + "This notification indicates that the failed short + initializations threshold has been reached/exceeded for the + referred ADSL/ADSL2 or ADSL2+ line." + ::= { adsl2Notifications 16 } + +adsl2LineStatusChangeAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2LineStatusAtuc + } + STATUS current + DESCRIPTION + "This notification indicates that a status change is + detected for the referred ATU-C." + ::= { adsl2Notifications 17 } + + + + +adsl2LineStatusChangeAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2LineStatusAtur + } + STATUS current + DESCRIPTION + "This notification indicates that a status change is + detected for the referred ATU-R." + ::= { adsl2Notifications 18 } + + + -- conformance information + + adsl2Groups OBJECT IDENTIFIER ::= { adsl2Conformance 1 } + adsl2Compliances OBJECT IDENTIFIER ::= { adsl2Conformance 2 } + + adsl2LineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + manage ADSL/ADSL2 or ADSL2+ interfaces." + MODULE -- this module + MANDATORY-GROUPS + { + adsl2LineGroup, + adsl2ChannelStatusGroup, + adsl2SCStatusGroup, + adsl2LineInventoryGroup, + adsl2LineConfTemplateGroup, + adsl2LineConfProfGroup, + adsl2LineConfProfModeSpecGroup, + adsl2ChConfProfileGroup, + adsl2LineAlarmConfTemplateGroup, + adsl2PMLineCurrGroup, + adsl2PMLineCurrInitGroup, + adsl2PMLineHist15MinGroup, + adsl2PMLineHist1DayGroup, + adsl2PMLineInitHist15MinGroup, + adsl2PMLineInitHist1DayGroup, + adsl2PMChCurrGroup, + adsl2PMChHist15MinGroup, + adsl2PMChHist1DGroup + } + + GROUP adsl2ChannelStatusAtmGroup + DESCRIPTION + "The group of status objects required when the data path + + + + is ATM." + + GROUP adsl2ChannelStatusPtmGroup + DESCRIPTION + "The group of status objects required when the data path + is PTM." + + GROUP adsl2LineConfProfRaGroup + DESCRIPTION + "The group of objects required for controlling the rate- + adaptive behavior of the line." + + GROUP adsl2LineConfProfMsgMinGroup + DESCRIPTION + "The group of objects required for controlling the rate + reserved for Overhead traffic." + + GROUP adsl2LineAlarmConfProfileGroup + DESCRIPTION + "The group of objects that define the alarm thresholds + on line-level PM counters." + + GROUP adsl2ChAlarmConfProfileGroup + DESCRIPTION + "The group of objects that define the alarm thresholds + on channel-level PM counters." + + GROUP adsl2ChConfProfileAtmGroup + DESCRIPTION + "The group of configuration objects required when the data + path is ATM." + + GROUP adsl2ChConfProfileMinResGroup + DESCRIPTION + "The group of configuration objects required for the + reserved data rate." + + GROUP adsl2PMLineCurrInitShortGroup + DESCRIPTION + "The group of PM counters for the current interval's + short initializations." + + GROUP adsl2PMLineInitHist15MinShortGroup + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's short initializations." + + GROUP adsl2PMLineInitHist1DayShortGroup + + + + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's short initializations." + + GROUP adsl2ScalarSCGroup + DESCRIPTION + "The group of objects that report the available memory + resources for DELT processes." + + GROUP adsl2ThreshNotificationGroup + DESCRIPTION + "The group of threshold crossing notifications." + + GROUP adsl2StatusChangeNotificationGroup + DESCRIPTION + "The group of status change notifications." + + ::= { adsl2Compliances 1 } + + -- units of conformance + + adsl2LineGroup OBJECT-GROUP + OBJECTS + { + adsl2LineCnfgTemplate, + adsl2LineAlarmCnfgTemplate, + adsl2LineCmndConfPmsf, + adsl2LineCmndConfLdsf, + adsl2LineCmndConfLdsfFailReason, + adsl2LineCmndAutomodeColdStart, + adsl2LineStatusAtuTransSys, + adsl2LineStatusPwrMngState, + adsl2LineStatusInitResult, + adsl2LineStatusLastStateDs, + adsl2LineStatusLastStateUs, + adsl2LineStatusAtur, + adsl2LineStatusAtuc, + adsl2LineStatusLnAttenDs, + adsl2LineStatusLnAttenUs, + adsl2LineStatusSigAttenDs, + adsl2LineStatusSigAttenUs, + adsl2LineStatusSnrMarginDs, + adsl2LineStatusSnrMarginUs, + adsl2LineStatusAttainableRateDs, + adsl2LineStatusAttainableRateUs, + adsl2LineStatusActPsdDs, + adsl2LineStatusActPsdUs, + adsl2LineStatusActAtpDs, + + + + adsl2LineStatusActAtpUs + } + STATUS current + DESCRIPTION + "The group of configuration, status, and commands objects + on the line level." + ::= { adsl2Groups 1 } + + adsl2ChannelStatusGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusChannelNum, + adsl2ChStatusActDataRate, + adsl2ChStatusPrevDataRate, + adsl2ChStatusActDelay + } + STATUS current + DESCRIPTION + "The group of status objects on the channel level." + ::= { adsl2Groups 2 } + + adsl2ChannelStatusAtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusAtmStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the data path level + when it is ATM." + ::= { adsl2Groups 3 } + + adsl2ChannelStatusPtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusPtmStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the data path level + when it is PTM." + ::= { adsl2Groups 4 } + + adsl2SCStatusGroup OBJECT-GROUP + OBJECTS + { + adsl2SCStatusMtime, + adsl2SCStatusSnr, + + + + adsl2SCStatusBitsAlloc, + adsl2SCStatusGainAlloc, + adsl2SCStatusTssi, + adsl2SCStatusLinScale, + adsl2SCStatusLinReal, + adsl2SCStatusLinImg, + adsl2SCStatusLogMt, + adsl2SCStatusLog, + adsl2SCStatusQlnMt, + adsl2SCStatusQln, + adsl2SCStatusLnAtten, + adsl2SCStatusSigAtten, + adsl2SCStatusSnrMargin, + adsl2SCStatusAttainableRate, + adsl2SCStatusActAtp, + adsl2SCStatusRowStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the sub-carrier level. + They are updated as a result of a DELT process." + ::= { adsl2Groups 5 } + + adsl2LineInventoryGroup OBJECT-GROUP + OBJECTS + { + adsl2LInvG994VendorId, + adsl2LInvSystemVendorId, + adsl2LInvVersionNumber, + adsl2LInvSerialNumber, + adsl2LInvSelfTestResult, + adsl2LInvTransmissionCapabilities + } + STATUS current + DESCRIPTION + "The group of inventory objects per XTU." + ::= { adsl2Groups 6 } + + adsl2LineConfTemplateGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfTempLineProfile, + adsl2LConfTempChan1ConfProfile, + adsl2LConfTempChan1RaRatioDs, + adsl2LConfTempChan1RaRatioUs, + adsl2LConfTempChan2ConfProfile, + adsl2LConfTempChan2RaRatioDs, + adsl2LConfTempChan2RaRatioUs, + + + + adsl2LConfTempChan3ConfProfile, + adsl2LConfTempChan3RaRatioDs, + adsl2LConfTempChan3RaRatioUs, + adsl2LConfTempChan4ConfProfile, + adsl2LConfTempChan4RaRatioDs, + adsl2LConfTempChan4RaRatioUs, + adsl2LConfTempRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration template." + ::= { adsl2Groups 7 } + + adsl2LineConfProfGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfScMaskDs, + adsl2LConfProfScMaskUs, + adsl2LConfProfRfiBandsDs, + adsl2LConfProfRaModeDs, + adsl2LConfProfRaModeUs, + adsl2LConfProfTargetSnrmDs, + adsl2LConfProfTargetSnrmUs, + adsl2LConfProfMaxSnrmDs, + adsl2LConfProfMaxSnrmUs, + adsl2LConfProfMinSnrmDs, + adsl2LConfProfMinSnrmUs, + adsl2LConfProfAtuTransSysEna, + adsl2LConfProfPmMode, + adsl2LConfProfL0Time, + adsl2LConfProfL2Time, + adsl2LConfProfL2Atpr, + adsl2LConfProfL2Atprt, + adsl2LConfProfRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration profile." + ::= { adsl2Groups 8 } + + adsl2LineConfProfRaGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfRaUsNrmDs, + adsl2LConfProfRaUsNrmUs, + adsl2LConfProfRaUsTimeDs, + adsl2LConfProfRaUsTimeUs, + adsl2LConfProfRaDsNrmsDs, + + + + adsl2LConfProfRaDsNrmsUs, + adsl2LConfProfRaDsTimeDs, + adsl2LConfProfRaDsTimeUs + } + STATUS current + DESCRIPTION + "The group of objects required for controlling the rate- + adaptive behavior of the line." + ::= { adsl2Groups 9 } + + adsl2LineConfProfMsgMinGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfMsgMinUs, + adsl2LConfProfMsgMinDs + } + STATUS current + DESCRIPTION + "The group of objects required for controlling the rate + reserved for Overhead traffic." + ::= { adsl2Groups 10 } + + adsl2LineConfProfModeSpecGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfMaxNomPsdDs, + adsl2LConfProfMaxNomPsdUs, + adsl2LConfProfMaxNomAtpDs, + adsl2LConfProfMaxNomAtpUs, + adsl2LConfProfMaxAggRxPwrUs, + adsl2LConfProfPsdMaskDs, + adsl2LConfProfPsdMaskUs, + adsl2LConfProfPsdMaskSelectUs, + adsl2LConfProfModeSpecRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration profile + that have an instance for each operation mode allowed." + ::= { adsl2Groups 11 } + + adsl2ChConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfMinDataRateDs, + adsl2ChConfProfMinDataRateUs, + adsl2ChConfProfMaxDataRateDs, + adsl2ChConfProfMaxDataRateUs, + + + + adsl2ChConfProfMinDataRateLowPwrDs, + adsl2ChConfProfMaxDelayDs, + adsl2ChConfProfMaxDelayUs, + adsl2ChConfProfMinProtectionDs, + adsl2ChConfProfMinProtectionUs, + adsl2ChConfProfMaxBerDs, + adsl2ChConfProfMaxBerUs, + adsl2ChConfProfUsDataRateDs, + adsl2ChConfProfDsDataRateDs, + adsl2ChConfProfUsDataRateUs, + adsl2ChConfProfDsDataRateUs, + adsl2ChConfProfRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a channel configuration profile." + ::= { adsl2Groups 12 } + + adsl2ChConfProfileAtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfImaEnabled, + adsl2ChStatusAtmStatus + } + STATUS current + DESCRIPTION + "The group of configuration objects required when the data + path is ATM." + ::= { adsl2Groups 13 } + + adsl2ChConfProfileMinResGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfMinResDataRateDs, + adsl2ChConfProfMinResDataRateUs + } + STATUS current + DESCRIPTION + "The group of configuration objects required for the + reserved data rate." + ::= { adsl2Groups 14 } + + adsl2LineAlarmConfTemplateGroup OBJECT-GROUP + OBJECTS + { + adsl2LAlarmConfTempLineProfile, + adsl2LAlarmConfTempChan1ConfProfile, + adsl2LAlarmConfTempChan2ConfProfile, + + + + adsl2LAlarmConfTempChan3ConfProfile, + adsl2LAlarmConfTempChan4ConfProfile, + adsl2LAlarmConfTempRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line alarm + template." + ::= { adsl2Groups 15 } + + adsl2LineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2LineAlarmConfProfileAtucThresh15MinFecs, + adsl2LineAlarmConfProfileAtucThresh15MinEs, + adsl2LineAlarmConfProfileAtucThresh15MinSes, + adsl2LineAlarmConfProfileAtucThresh15MinLoss, + adsl2LineAlarmConfProfileAtucThresh15MinUas, + adsl2LineAlarmConfProfileAturThresh15MinFecs, + adsl2LineAlarmConfProfileAturThresh15MinEs, + adsl2LineAlarmConfProfileAturThresh15MinSes, + adsl2LineAlarmConfProfileAturThresh15MinLoss, + adsl2LineAlarmConfProfileAturThresh15MinUas, + adsl2LineAlarmConfProfileThresh15MinFailedFullInt, + adsl2LineAlarmConfProfileThresh15MinFailedShrtInt, + adsl2LineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line alarm profile." + ::= { adsl2Groups 16 } + + adsl2ChAlarmConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2ChAlarmConfProfileAtucThresh15MinCodingViolations, + adsl2ChAlarmConfProfileAtucThresh15MinCorrected, + adsl2ChAlarmConfProfileAturThresh15MinCodingViolations, + adsl2ChAlarmConfProfileAturThresh15MinCorrected, + adsl2ChAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a channel alarm profile." + ::= { adsl2Groups 17 } + + adsl2PMLineCurrGroup OBJECT-GROUP + OBJECTS + + + + { + adsl2PMLCurrValidIntervals, + adsl2PMLCurrInvalidIntervals, + adsl2PMLCurr15MTimeElapsed, + adsl2PMLCurr15MFecs, + adsl2PMLCurr15MEs, + adsl2PMLCurr15MSes, + adsl2PMLCurr15MLoss, + adsl2PMLCurr15MUas, + adsl2PMLCurr1DayValidIntervals, + adsl2PMLCurr1DayInvalidIntervals, + adsl2PMLCurr1DayTimeElapsed, + adsl2PMLCurr1DayFecs, + adsl2PMLCurr1DayEs, + adsl2PMLCurr1DaySes, + adsl2PMLCurr1DayLoss, + adsl2PMLCurr1DayUas + } + STATUS current + DESCRIPTION + "The group of objects that report the line-level + counters for current PM intervals." + ::= { adsl2Groups 18 } + + adsl2PMLineCurrInitGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLCurrInit15MTimeElapsed, + adsl2PMLCurrInit15MFullInits, + adsl2PMLCurrInit15MFailedFullInits, + adsl2PMLCurrInit1DayTimeElapsed, + adsl2PMLCurrInit1DayFullInits, + adsl2PMLCurrInit1DayFailedFullInits + } + STATUS current + DESCRIPTION + "The group of objects that report the full + initialization counters for current PM intervals." + ::= { adsl2Groups 19 } + + adsl2PMLineCurrInitShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLCurrInit15MShortInits, + adsl2PMLCurrInit15MFailedShortInits, + adsl2PMLCurrInit1DayShortInits, + adsl2PMLCurrInit1DayFailedShortInits + } + + + + STATUS current + DESCRIPTION + "The group of objects that report the short + initialization counters for current PM intervals." + ::= { adsl2Groups 20 } + + adsl2PMLineHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHist15MMonitoredTime, + adsl2PMLHist15MFecs, + adsl2PMLHist15MEs, + adsl2PMLHist15MSes, + adsl2PMLHist15MLoss, + adsl2PMLHist15MUas, + adsl2PMLHist15MValidInterval + } + STATUS current + DESCRIPTION + "The group of line-level PM counters for the previous + 15-minute interval." + ::= { adsl2Groups 21 } + + adsl2PMLineHist1DayGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHist1DMonitoredTime, + adsl2PMLHist1DFecs, + adsl2PMLHist1DEs, + adsl2PMLHist1DSes, + adsl2PMLHist1DLoss, + adsl2PMLHist1DUas, + adsl2PMLHist1DValidInterval + } + STATUS current + DESCRIPTION + "The group of line-level PM counters for the previous + 24-hour interval." + ::= { adsl2Groups 22 } + + adsl2PMLineInitHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistInit15MMonitoredTime, + adsl2PMLHistInit15MFullInits, + adsl2PMLHistInit15MFailedFullInits, + adsl2PMLHistInit15MValidInterval + } + + + + STATUS current + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's full initializations." + ::= { adsl2Groups 23 } + + adsl2PMLineInitHist15MinShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistInit15MShortInits, + adsl2PMLHistInit15MFailedShortInits + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's short initializations." + ::= { adsl2Groups 24 } + + adsl2PMLineInitHist1DayGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistinit1DMonitoredTime, + adsl2PMLHistinit1DFullInits, + adsl2PMLHistinit1DFailedFullInits, + adsl2PMLHistinit1DValidInterval + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's full initializations." + ::= { adsl2Groups 25 } + + adsl2PMLineInitHist1DayShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistinit1DShortInits, + adsl2PMLHistinit1DFailedShortInits + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's short initializations." + ::= { adsl2Groups 26 } + + adsl2PMChCurrGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChCurrValidIntervals, + + + + adsl2PMChCurrInvalidIntervals, + adsl2PMChCurr15MTimeElapsed, + adsl2PMChCurr15MCodingViolations, + adsl2PMChCurr15MCorrectedBlocks, + adsl2PMChCurr1DayValidIntervals, + adsl2PMChCurr1DayInvalidIntervals, + adsl2PMChCurr1DayTimeElapsed, + adsl2PMChCurr1DayCodingViolations, + adsl2PMChCurr1DayCorrectedBlocks + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for current PM intervals." + ::= { adsl2Groups 27 } + + adsl2PMChHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChHist15MMonitoredTime, + adsl2PMChHist15MCodingViolations, + adsl2PMChHist15MCorrectedBlocks, + adsl2PMChHist15MValidInterval + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for previous 15-minute PM intervals." + ::= { adsl2Groups 28 } + + adsl2PMChHist1DGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChHist1DMonitoredTime, + adsl2PMChHist1DCodingViolations, + adsl2PMChHist1DCorrectedBlocks, + adsl2PMChHist1DValidInterval + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for previous 24-hour PM intervals." + ::= { adsl2Groups 29 } + + adsl2ScalarSCGroup OBJECT-GROUP + OBJECTS + { + adsl2ScalarSCMaxInterfaces, + + + + adsl2ScalarSCAvailInterfaces + } + STATUS current + DESCRIPTION + "The group of objects that report the available memory + resources for DELT processes." + ::= { adsl2Groups 30 } + + adsl2ThreshNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + adsl2LinePerfFECSThreshAtuc, + adsl2LinePerfFECSThreshAtur, + adsl2LinePerfESThreshAtuc, + adsl2LinePerfESThreshAtur, + adsl2LinePerfSESThreshAtuc, + adsl2LinePerfSESThreshAtur, + adsl2LinePerfLOSSThreshAtuc, + adsl2LinePerfLOSSThreshAtur, + adsl2LinePerfUASThreshAtuc, + adsl2LinePerfUASThreshAtur, + adsl2LinePerfCodingViolationsThreshAtuc, + adsl2LinePerfCodingViolationsThreshAtur, + adsl2LinePerfCorrectedThreshAtuc, + adsl2LinePerfCorrectedThreshAtur, + adsl2LinePerfFailedFullInitThresh, + adsl2LinePerfFailedShortInitThresh + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with ADSL/ADSL2/ADSL2+ lines." + ::= { adsl2Groups 31 } + + adsl2StatusChangeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + adsl2LineStatusChangeAtuc, + adsl2LineStatusChangeAtur + } + STATUS current + DESCRIPTION + "This group supports notifications of threshold crossing + associated with ADSL/ADSL2/ADSL2+ lines." + ::= { adsl2Groups 32 } + +END diff --git a/mibs/ietf/ADSL2-LINE-TC-MIB b/mibs/ietf/ADSL2-LINE-TC-MIB new file mode 100644 index 0000000..dd132d8 --- /dev/null +++ b/mibs/ietf/ADSL2-LINE-TC-MIB @@ -0,0 +1,781 @@ +ADSL2-LINE-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + transmission + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +adsl2TCMIB MODULE-IDENTITY + LAST-UPDATED "200610040000Z" -- October 4th, 2006 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair & Co-editor: + Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + + + + + + + Co-editor: Moti Morgenstern + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: moti.morgenstern@ecitele.com + Phone: +972 3 926 6258 + + Co-editor: Scott Baillie + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: scott.baillie@nec.com.au + Phone: +61 3 9264 3986 + + Co-editor: Umberto Bonollo + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: umberto.bonollo@nec.com.au + Phone: +61 3 9264 3385 + " + DESCRIPTION + "This MIB Module provides Textual Conventions to be + used by the ADSL2-LINE-MIB module for the purpose of + managing ADSL, ADSL2, and ADSL2+ lines. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4706: see the RFC itself for + full legal notices." + + REVISION "200610040000Z" -- October 4th, 2006 + DESCRIPTION "Initial version, published as RFC 4706." + ::= { transmission 238 2 } -- adsl2MIB 2 + +------------------------------------------------ +-- Textual Conventions -- +------------------------------------------------ + +Adsl2Unit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a transceiver as being either an ATU-C or + an ATU-R. An ADSL line consists of two transceivers, an ATU-C + and an ATU-R. Attributes with this syntax reference the two + sides of a line. Specified as an INTEGER, the two values + + + + are: + + atuc(1) -- Central office ADSL terminal unit (ATU-C). + atur(2) -- Remote ADSL terminal unit (ATU-R)." + SYNTAX INTEGER { + atuc(1), + atur(2) + } + +Adsl2Direction ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the direction of a band as being + either upstream or downstream. Specified as an INTEGER, + the two values are: + upstream(1), and + downstream(2)." + SYNTAX INTEGER { + upstream(1), + downstream(2) + } + + + +Adsl2TransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of ADSL2 line transmission modes, with one bit + per mode. The notes (F) and (L) denote Full-Rate + and Lite/splitterless, respectively: + Bit 00 : Regional Std. (ANSI T1.413) (F) + Bit 01 : Regional Std. (ETSI DTS/TM06006) (F) + Bit 02 : G.992.1 POTS non-overlapped (F) + Bit 03 : G.992.1 POTS overlapped (F) + Bit 04 : G.992.1 ISDN non-overlapped (F) + Bit 05 : G.992.1 ISDN overlapped (F) + Bit 06 : G.992.1 TCM-ISDN non-overlapped (F) + Bit 07 : G.992.1 TCM-ISDN overlapped (F) + Bit 08 : G.992.2 POTS non-overlapped (L) + Bit 09 : G.992.2 POTS overlapped (L) + Bit 10 : G.992.2 with TCM-ISDN non-overlapped (L) + Bit 11 : G.992.2 with TCM-ISDN overlapped (L) + Bit 12 : G.992.1 TCM-ISDN symmetric (F) -- not in G.997.1 + Bit 13-17: Reserved + Bit 18 : G.992.3 POTS non-overlapped (F) + Bit 19 : G.992.3 POTS overlapped (F) + Bit 20 : G.992.3 ISDN non-overlapped (F) + Bit 21 : G.992.3 ISDN overlapped (F) + + + + Bit 22-23: Reserved + Bit 24 : G.992.4 POTS non-overlapped (L) + Bit 25 : G.992.4 POTS overlapped (L) + Bit 26-27: Reserved + Bit 28 : G.992.3 Annex I All-Digital non-overlapped (F) + Bit 29 : G.992.3 Annex I All-Digital overlapped (F) + Bit 30 : G.992.3 Annex J All-Digital non-overlapped (F) + Bit 31 : G.992.3 Annex J All-Digital overlapped (F) + Bit 32 : G.992.4 Annex I All-Digital non-overlapped (L) + Bit 33 : G.992.4 Annex I All-Digital overlapped (L) + Bit 34 : G.992.3 Annex L POTS non-overlapped, mode 1, + wide U/S (F) + Bit 35 : G.992.3 Annex L POTS non-overlapped, mode 2, + narrow U/S(F) + Bit 36 : G.992.3 Annex L POTS overlapped, mode 3, + wide U/S (F) + Bit 37 : G.992.3 Annex L POTS overlapped, mode 4, + narrow U/S (F) + Bit 38 : G.992.3 Annex M POTS non-overlapped (F) + Bit 39 : G.992.3 Annex M POTS overlapped (F) + Bit 40 : G.992.5 POTS non-overlapped (F) + Bit 41 : G.992.5 POTS overlapped (F) + Bit 42 : G.992.5 ISDN non-overlapped (F) + Bit 43 : G.992.5 ISDN overlapped (F) + Bit 44-45: Reserved + Bit 46 : G.992.5 Annex I All-Digital non-overlapped (F) + Bit 47 : G.992.5 Annex I All-Digital overlapped (F) + Bit 48 : G.992.5 Annex J All-Digital non-overlapped (F) + Bit 49 : G.992.5 Annex J All-Digital overlapped (F) + Bit 50 : G.992.5 Annex M POTS non-overlapped (F) + Bit 51 : G.992.5 Annex M POTS overlapped (F) + Bit 52-55: Reserved" + SYNTAX BITS { + ansit1413(0), + etsi(1), + g9921PotsNonOverlapped(2), + g9921PotsOverlapped(3), + g9921IsdnNonOverlapped(4), + g9921isdnOverlapped(5), + g9921tcmIsdnNonOverlapped(6), + g9921tcmIsdnOverlapped(7), + g9922potsNonOverlapped(8), + g9922potsOverlapped(9), + g9922tcmIsdnNonOverlapped(10), + g9922tcmIsdnOverlapped(11), + g9921tcmIsdnSymmetric(12), + reserved1(13), + reserved2(14), + + + + reserved3(15), + reserved4(16), + reserved5(17), + g9923PotsNonOverlapped(18), + g9923PotsOverlapped(19), + g9923IsdnNonOverlapped(20), + g9923isdnOverlapped(21), + reserved6(22), + reserved7(23), + g9924potsNonOverlapped(24), + g9924potsOverlapped(25), + reserved8(26), + reserved9(27), + g9923AnnexIAllDigNonOverlapped(28), + g9923AnnexIAllDigOverlapped(29), + g9923AnnexJAllDigNonOverlapped(30), + g9923AnnexJAllDigOverlapped(31), + g9924AnnexIAllDigNonOverlapped(32), + g9924AnnexIAllDigOverlapped(33), + g9923AnnexLMode1NonOverlapped(34), + g9923AnnexLMode2NonOverlapped(35), + g9923AnnexLMode3Overlapped(36), + g9923AnnexLMode4Overlapped(37), + g9923AnnexMPotsNonOverlapped(38), + g9923AnnexMPotsOverlapped(39), + g9925PotsNonOverlapped(40), + g9925PotsOverlapped(41), + g9925IsdnNonOverlapped(42), + g9925isdnOverlapped(43), + reserved10(44), + reserved11(45), + g9925AnnexIAllDigNonOverlapped(46), + g9925AnnexIAllDigOverlapped(47), + g9925AnnexJAllDigNonOverlapped(48), + g9925AnnexJAllDigOverlapped(49), + g9925AnnexMPotsNonOverlapped(50), + g9925AnnexMPotsOverlapped(51), + reserved12(52), + reserved13(53), + reserved14(54), + reserved15(55) + } + +Adsl2RaMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the rate adaptation behavior for the line. + The three possible behaviors are: + + + + manual(1) - No Rate-Adaptation. The initialization + process attempts to synchronize to a + specified rate. + raInit(2) - Rate-Adaptation during initialization process + only, which attempts to synchronize to a rate + between minimum and maximum specified values. + dynamicRa(3) - Dynamic Rate-Adaptation during initialization + process as well as during SHOWTIME." + SYNTAX INTEGER { + manual(1), + raInit(2), + dynamicRa(3) + } + +Adsl2InitResult ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the result of a full initialization attempt; the + six possible result values are: + noFail(0) - Successful initialization. + configError(1) - Configuration failure. + configNotFeasible(2) - Configuration details not supported. + commFail(3) - Communication failure. + noPeerAtu(4) - Peer ATU not detected. + otherCause(5) - Other initialization failure reason. + + The values used are as defined in ITU-T G.997.1, + paragraph 7.5.1.3" + + SYNTAX INTEGER { + noFail(0), + configError(1), + configNotFeasible(2), + commFail(3), + noPeerAtu(4), + otherCause(5) + } + +Adsl2OperationModes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ADSL2 management model specified includes an ADSL Mode + attribute that identifies an instance of ADSL Mode-Specific + PSD Configuration object in the ADSL Line Profile. The + following classes of ADSL operating mode are defined. + The notes (F) and (L) denote Full-Rate and Lite/splitterless + respectively: + + + + + +-------+--------------------------------------------------+ + | Value | ADSL operation mode description | + +-------+--------------------------------------------------+ + + 1 - The default/generic PSD configuration. Default + configuration will be used when no other matching + mode-specific configuration can be found. + 2 - ADSL family. The attributes included in the Mode- + Specific PSD Configuration are irrelevant for + ITU-T G.992.1 and G.992.2 ADSL modes. Hence, it + is possible to map those modes to this generic + class. + 3-7 - Unused. Reserved for future ITU-T specification. + 8 - G.992.3 POTS non-overlapped (F) + 9 - G.992.3 POTS overlapped (F) + 10 - G.992.3 ISDN non-overlapped (F) + 11 - G.992.3 ISDN overlapped (F) + 12-13 - Unused. Reserved for future ITU-T specification. + 14 - G.992.4 POTS non-overlapped (L) + 15 - G.992.4 POTS overlapped (L) + 16-17 - Unused. Reserved for future ITU-T specification. + 18 - G.992.3 Annex I All-Digital non-overlapped (F) + 19 - G.992.3 Annex I All-Digital overlapped (F) + 20 - G.992.3 Annex J All-Digital non-overlapped (F) + 21 - G.992.3 Annex J All-Digital overlapped (F) + 22 - G.992.4 Annex I All-Digital non-overlapped (L) + 23 - G.992.4 Annex I All-Digital overlapped (L) + 24 - G.992.3 Annex L POTS non-overlapped, mode 1, + wide U/S (F) + 25 - G.992.3 Annex L POTS non-overlapped, mode 2, + narrow U/S(F) + 26 - G.992.3 Annex L POTS overlapped, mode 3, + wide U/S (F) + 27 - G.992.3 Annex L POTS overlapped, mode 4, + narrow U/S (F) + 28 - G.992.3 Annex M POTS non-overlapped (F) + 29 - G.992.3 Annex M POTS overlapped (F) + 30 - G.992.5 POTS non-overlapped (F) + 31 - G.992.5 POTS overlapped (F) + 32 - G.992.5 ISDN non-overlapped (F) + 33 - G.992.5 ISDN overlapped (F) + 34-35 - Unused. Reserved for future ITU-T specification. + 36 - G.992.5 Annex I All-Digital non-overlapped (F) + 37 - G.992.5 Annex I All-Digital overlapped (F) + 38 - G.992.5 Annex J All-Digital non-overlapped (F) + 39 - G.992.5 Annex J All-Digital overlapped (F) + 40 - G.992.5 Annex M POTS non-overlapped (F) + 41 - G.992.5 Annex M POTS overlapped (F) + + + + " + SYNTAX INTEGER { + defMode (1), + adsl(2), + g9923PotsNonOverlapped(8), + g9923PotsOverlapped(9), + g9923IsdnNonOverlapped(10), + g9923isdnOverlapped(11), + g9924potsNonOverlapped(14), + g9924potsOverlapped(15), + g9923AnnexIAllDigNonOverlapped(18), + g9923AnnexIAllDigOverlapped(19), + g9923AnnexJAllDigNonOverlapped(20), + g9923AnnexJAllDigOverlapped(21), + g9924AnnexIAllDigNonOverlapped(22), + g9924AnnexIAllDigOverlapped(23), + g9923AnnexLMode1NonOverlapped(24), + g9923AnnexLMode2NonOverlapped(25), + g9923AnnexLMode3Overlapped(26), + g9923AnnexLMode4Overlapped(27), + g9923AnnexMPotsNonOverlapped(28), + g9923AnnexMPotsOverlapped(29), + g9925PotsNonOverlapped(30), + g9925PotsOverlapped(31), + g9925IsdnNonOverlapped(32), + g9925isdnOverlapped(33), + g9925AnnexIAllDigNonOverlapped(36), + g9925AnnexIAllDigOverlapped(37), + g9925AnnexJAllDigNonOverlapped(38), + g9925AnnexJAllDigOverlapped(39), + g9925AnnexMPotsNonOverlapped(40), + g9925AnnexMPotsOverlapped(41) + } + + +Adsl2PowerMngState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax uniquely identify each power + management state defined for the ADSL/ADSL2 or ADSL2+ link. + The possible values are: + l0(1) - L0 - Full power management state. + l1(2) - L1 - Low power management state (for G.992.2). + l2(3) - L2 - Low power management state (for G.992.3, + G.992.4, and G.992.5). + l3(4) - L3 - Idle power management state." + + SYNTAX INTEGER { + + + + l0(1), + l1(2), + l2(3), + l3(4) + } + +Adsl2ConfPmsForce ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the desired power management state for the + ADSL/ADSL2 or ADSL2+ link: + l3toL0(0) - Perform a transition from L3 to L0 + (Full power management state). + l0toL2(2) - Perform a transition from L0 to L2 + (Low power management state). + l0orL2toL3(3) - Perform a transition into L3 (Idle + power management state). + + The values used are as defined in ITU-T G.997.1, + paragraph 7.3.1.1.3" + + SYNTAX INTEGER { + l3toL0(0), + l0toL2(2), + l0orL2toL3(3) + } + +Adsl2LConfProfPmMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the power modes/states into which the ATU-C or + ATU-R may autonomously transit. + + It is a BITS structure that allows control of the following + transit options: + allowTransitionsToIdle(0) - XTU may autonomously transit + to idle (L3) state. + allowTransitionsToLowPower(1) - XTU may autonomously transit + to low-power (L2) state." + + SYNTAX BITS { + allowTransitionsToIdle(0), + allowTransitionsToLowPower(1) + } + +Adsl2LineLdsf ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that control the Loop Diagnostic mode for the ADSL/ADSL2 or + ADSL2+ link. The possible values are: + inhibit(0) - Inhibit Loop Diagnostic mode. + force(1) - Force/Initiate Loop Diagnostic mode. + + The values used are as defined in ITU-T G.997.1, + paragraph 7.3.1.1.8" + + SYNTAX INTEGER { + inhibit(0), + force(1) + } + +Adsl2LdsfResult ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Possible failure reasons associated with performing + a Dual Ended Loop Test (DELT) on a DSL line. + Possible values are: + none(1) - The default value in case LDSF was never + requested for the associated line. + success(2) - The recent command completed + successfully. + inProgress(3) - The Loop Diagnostics process is in + progress. + unsupported(4) - The NE or the line card doesn't support + LDSF. + cannotRun(5) - The NE cannot initiate the command, due + to a nonspecific reason. + aborted(6) - The Loop Diagnostics process aborted. + failed(7) - The Loop Diagnostics process failed. + illegalMode(8) - The NE cannot initiate the command, due + to the specific mode of the relevant + line. + adminUp(9) - The NE cannot initiate the command, as + the relevant line is administratively + 'Up'. + tableFull(10) - The NE cannot initiate the command, due + to reaching the maximum number of rows + in the results table. + noResources(11) - The NE cannot initiate the command, due + to lack of internal memory resources." + SYNTAX INTEGER { + none(1), + success(2), + + + + inProgress(3), + unsupported(4), + cannotRun(5), + aborted(6), + failed(7), + illegalMode(8), + adminUp(9), + tableFull(10), + noResources(11) + } + +Adsl2SymbolProtection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the minimum-length impulse noise protection + (INP) in terms of number of symbols. The possible values are: + noProtection (i.e., INP not required), halfSymbol (i.e., INP + length is 1/2 symbol), and 1-16 symbols in steps of 1 symbol." + + SYNTAX INTEGER { + noProtection(1), + halfSymbol(2), + singleSymbol(3), + twoSymbols(4), + threeSymbols(5), + fourSymbols(6), + fiveSymbols(7), + sixSymbols(8), + sevenSymbols(9), + eightSymbols(10), + nineSymbols(11), + tenSymbols(12), + elevenSymbols(13), + twelveSymbols(14), + thirteeSymbols(15), + fourteenSymbols(16), + fifteenSymbols(17), + sixteenSymbols(18) + } +Adsl2MaxBer ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the maximum Bit Error Rate (BER). + The possible values are: + + eminus3(1) - Maximum BER=E^-3 + + + + eminus5(2) - Maximum BER=E^-5 + eminus7(3) - Maximum BER=E^-7" + SYNTAX INTEGER { + eminus3(1), + eminus5(2), + eminus7(3) + } + +Adsl2ScMaskDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 512 bits in this OCTET + STRING array represents the corresponding bin + in the downstream direction. A value of one + indicates that the bin is not in use." + SYNTAX OCTET STRING (SIZE(0..64)) + +Adsl2ScMaskUs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 64 bits in this OCTET + STRING array represents the corresponding bin + in the upstream direction. A value of one + indicates that the bin is not in use." + SYNTAX OCTET STRING (SIZE(0..8)) + +Adsl2RfiDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 512 bits in this OCTET + STRING array represents the corresponding bin + in the downstream direction. A value of one + indicates that the bin is part of a notch + filter." + SYNTAX OCTET STRING (SIZE(0..64)) + +Adsl2PsdMaskDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 32 PSD Mask breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the PSD reduction at the breakpoint from 0 + (0 dBm/Hz) to 255 (-127.5 dBm/Hz) using units of + 0.5 dBm/Hz." + SYNTAX OCTET STRING (SIZE(0..96)) + + + +Adsl2PsdMaskUs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 4 PSD Mask breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the PSD reduction at the breakpoint from 0 + (0 dBm/Hz) to 255 (-127.5 dBm/Hz) using units of + 0.5 dBm/Hz." + SYNTAX OCTET STRING (SIZE(0..12)) + +Adsl2Tssi ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 32 transmit spectrum shaping (TSSi) breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the shaping parameter at the breakpoint. It + is a value from 0 to 127 (units of -0.5 dB). The + special value 127 indicates that the sub-carrier + is not transmitted." + SYNTAX OCTET STRING (SIZE(0..96)) + +Adsl2LastTransmittedState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This parameter represents the last successfully + transmitted initialization state in the last full + initialization performed on the line. States are + per the specific xDSL technology and are numbered + from 0 (if G.994.1 is used) or 1 (if G.994.1 is + not used) up to Showtime." + SYNTAX INTEGER { + atucG9941(0), + atucQuiet1(1), + atucComb1(2), + atucQuiet2(3), + atucComb2(4), + atucIcomb1(5), + atucLineprob(6), + atucQuiet3(7), + atucComb3(8), + atucIComb2(9), + atucMsgfmt(10), + + + + atucMsgpcb(11), + atucQuiet4(12), + atucReverb1(13), + atucTref1(14), + atucReverb2(15), + atucEct(16), + atucReverb3(17), + atucTref2(18), + atucReverb4(19), + atucSegue1(20), + atucMsg1(21), + atucReverb5(22), + atucSegue2(23), + atucMedley(24), + atucExchmarker(25), + atucMsg2(26), + atucReverb6(27), + atucSegue3(28), + atucParams(29), + atucReverb7(30), + atucSegue4(31), + atucShowtime(32), + -- + aturG9941(100), + aturQuiet1(101), + aturComb1(102), + aturQuiet2(103), + aturComb2(104), + aturIcomb1(105), + aturLineprob(106), + aturQuiet3(107), + aturComb3(108), + aturIcomb2(109), + aturMsgfmt(110), + aturMsgpcb(111), + aturReverb1(112), + aturQuiet4(113), + aturReverb2(114), + aturQuiet5(115), + aturReverb3(116), + aturEct(117), + aturReverb4(118), + aturSegue1(119), + aturReverb5(120), + aturSegue2(121), + aturMsg1(122), + aturMedley(123), + aturExchmarker(124), + + + + aturMsg2(125), + aturReverb6(126), + aturSegue3(127), + aturParams(128), + aturReverb7(129), + aturSegue4(130), + aturShowtime(131) + } + +Adsl2LineStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters + that reflect the failure status for a given endpoint of + ADSL/ADSL2 or ADSL2+ link. + + This BITS structure can report the following failures: + + noDefect(0) - This bit position positively reports + that no defect or failure exists. + lossOfFrame(1) - Loss of frame synchronization. + lossOfSignal(2) - Loss of signal. + lossOfPower(3) - Loss of power. Usually this failure may + be reported for ATU-Rs only. + initFailure(4) - Recent initialization process failed. + Never active on ATU-R." + + SYNTAX BITS { + noDefect(0), + lossOfFrame(1), + lossOfSignal(2), + lossOfPower(3), + initFailure(4) + } + +Adsl2ChAtmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters that + reflect the failure status for Transmission Convergence (TC) + layer of a given ATM interface (data path over an ADSL/ADSL2 + or ADSL2+ link). + + This BITS structure can report the following failures: + noDefect(0) - This bit position positively + reports that no defect or failure + exists. + noCellDelineation(1) - The link was successfully + + + + initialized, but cell delineation + was never acquired on the + associated ATM data path. + lossOfCellDelineation(2) - Loss of cell delineation on the + associated ATM data path." + + SYNTAX BITS { + noDefect(0), + noCellDelineation(1), + lossOfCellDelineation(2) + } + +Adsl2ChPtmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters that + reflect the failure status for a given PTM interface (packet + data path over an ADSL/ADSL2 or ADSL2+ link). + + This BITS structure can report the following failures: + noDefect(0) - This bit position positively + reports that no defect or failure exists. + outOfSync(1) - Out of synchronization." + + SYNTAX BITS { + noDefect(0), + outOfSync(1) + } + +END diff --git a/mibs/ietf/AGENTX-MIB b/mibs/ietf/AGENTX-MIB new file mode 100644 index 0000000..0a1b91f --- /dev/null +++ b/mibs/ietf/AGENTX-MIB @@ -0,0 +1,547 @@ +AGENTX-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2 + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TimeStamp, TruthValue, TDomain + FROM SNMPv2-TC; +agentxMIB MODULE-IDENTITY + LAST-UPDATED "200001100000Z" -- Midnight 10 January 2000 + ORGANIZATION "AgentX Working Group" + CONTACT-INFO "WG-email: agentx@dorothy.bmc.com + Subscribe: agentx-request@dorothy.bmc.com + WG-email Archive: ftp://ftp.peer.com/pub/agentx/archives + FTP repository: ftp://ftp.peer.com/pub/agentx + http://www.ietf.org/html.charters/agentx-charter.html + + Chair: Bob Natale + ACE*COMM Corporation + Email: bnatale@acecomm.com + + WG editor: Mark Ellison + Ellison Software Consulting, Inc. + Email: ellison@world.std.com + + Co-author: Lauren Heintz + Cisco Systems, + EMail: lheintz@cisco.com + + Co-author: Smitha Gudur + Independent Consultant + Email: sgudur@hotmail.com + + + " + DESCRIPTION "This is the MIB module for the SNMP Agent Extensibility + Protocol (AgentX). This MIB module will be implemented by + the master agent. + " + + REVISION "200001100000Z" -- Midnight 10 January 2000 + DESCRIPTION + "Initial version published as RFC 2742." + + ::= { mib-2 74 } + + -- Textual Conventions + + AgentxTAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. This is identical to + the TAddress textual convention (SNMPv2-SMI) except that + zero-length values are permitted. + " + SYNTAX OCTET STRING (SIZE (0..255)) + + -- Administrative assignments + + agentxObjects OBJECT IDENTIFIER ::= { agentxMIB 1 } + agentxGeneral OBJECT IDENTIFIER ::= { agentxObjects 1 } + agentxConnection OBJECT IDENTIFIER ::= { agentxObjects 2 } + agentxSession OBJECT IDENTIFIER ::= { agentxObjects 3 } + agentxRegistration OBJECT IDENTIFIER ::= { agentxObjects 4 } + + agentxDefaultTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default length of time, in seconds, that the master + agent should allow to elapse after dispatching a message + to a session before it regards the subagent as not + responding. This is a system-wide value that may + override the timeout value associated with a particular + session (agentxSessionTimeout) or a particular registered + MIB region (agentxRegTimeout). If the associated value of + agentxSessionTimeout and agentxRegTimeout are zero, or + impractical in accordance with implementation-specific + procedure of the master agent, the value represented by + this object will be the effective timeout value for the + + + master agent to await a response to a dispatch from a + given subagent. + " + DEFVAL { 5 } + ::= { agentxGeneral 1 } + + agentxMasterAgentXVer OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AgentX protocol version supported by this master agent. + The current protocol version is 1. Note that the master agent + must also allow interaction with earlier version subagents. + " + ::= { agentxGeneral 2 } + + -- The AgentX Subagent Connection Group + + agentxConnTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxConnectionTable. + " + ::= { agentxConnection 1 } + + agentxConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The agentxConnectionTable tracks all current AgentX transport + connections. There may be zero, one, or more AgentX sessions + carried on a given AgentX connection. + " + ::= { agentxConnection 2 } + + agentxConnectionEntry OBJECT-TYPE + SYNTAX AgentxConnectionEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "An agentxConnectionEntry contains information describing a + single AgentX transport connection. A connection may be + + + used to support zero or more AgentX sessions. An entry is + created when a new transport connection is established, + and is destroyed when the transport connection is terminated. + " + INDEX { agentxConnIndex } + ::= { agentxConnectionTable 1 } + + AgentxConnectionEntry ::= SEQUENCE { + agentxConnIndex Unsigned32, + agentxConnOpenTime TimeStamp, + agentxConnTransportDomain TDomain, + agentxConnTransportAddress AgentxTAddress } + + agentxConnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "agentxConnIndex contains the value that uniquely identifies + an open transport connection used by this master agent + to provide AgentX service. Values of this index should + not be re-used. The value assigned to a given transport + connection is constant for the lifetime of that connection. + " + ::= { agentxConnectionEntry 1 } + + agentxConnOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this connection was established + and, therefore, its value when this entry was added to the table. + " + ::= { agentxConnectionEntry 2 } + + agentxConnTransportDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport protocol in use for this connection to the + subagent. + " + ::= { agentxConnectionEntry 3 } + + agentxConnTransportAddress OBJECT-TYPE + SYNTAX AgentxTAddress + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport address of the remote (subagent) end of this + connection to the master agent. This object may be zero-length + for unix-domain sockets (and possibly other types of transport + addresses) since the subagent need not bind a filename to its + local socket. + " + ::= { agentxConnectionEntry 4 } + + -- The AgentX Subagent Session Group + + agentxSessionTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxSessionTable. + " + ::= { agentxSession 1 } + + agentxSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of AgentX subagent sessions currently in effect. + " + ::= { agentxSession 2 } + + agentxSessionEntry OBJECT-TYPE + SYNTAX AgentxSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single open session between the AgentX + master agent and a subagent is contained in this entry. An + entry is created when a new session is successfully established + and is destroyed either when the subagent transport connection + has terminated or when the subagent session is closed. + " + INDEX { agentxConnIndex, agentxSessionIndex } + ::= { agentxSessionTable 1 } + + AgentxSessionEntry ::= SEQUENCE { + agentxSessionIndex Unsigned32, + + + agentxSessionObjectID OBJECT IDENTIFIER, + agentxSessionDescr SnmpAdminString, + agentxSessionAdminStatus INTEGER, + agentxSessionOpenTime TimeStamp, + agentxSessionAgentXVer INTEGER, + agentxSessionTimeout INTEGER + } + + agentxSessionIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for the subagent session. It is the same as + h.sessionID defined in the agentx header. Note that if + a subagent's session with the master agent is closed for + any reason its index should not be re-used. + A value of zero(0) is specifically allowed in order + to be compatible with the definition of h.sessionId. + " + ::= { agentxSessionEntry 1 } + + agentxSessionObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is taken from the o.id field of the agentx-Open-PDU. + This attribute will report a value of '0.0' for subagents + not supporting the notion of an AgentX session object + identifier. + " + ::= { agentxSessionEntry 2 } + + agentxSessionDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the session. This is analogous to + sysDescr defined in the SNMPv2-MIB in RFC 1907 [19] and is + taken from the o.descr field of the agentx-Open-PDU. + This attribute will report a zero-length string value for + subagents not supporting the notion of a session description. + " + ::= { agentxSessionEntry 3 } + + agentxSessionAdminStatus OBJECT-TYPE + + + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative (desired) status of the session. Setting + the value to 'down(2)' closes the subagent session (with c.reason + set to 'reasonByManager'). + " + ::= { agentxSessionEntry 4 } + + agentxSessionOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this session was opened and, + therefore, its value when this entry was added to the table. + " + ::= { agentxSessionEntry 5 } + + agentxSessionAgentXVer OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the AgentX protocol supported by the + session. This must be less than or equal to the value of + agentxMasterAgentXVer. + " + ::= { agentxSessionEntry 6 } + + agentxSessionTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time, in seconds, that a master agent should + allow to elapse after dispatching a message to this session + before it regards the subagent as not responding. This value + is taken from the o.timeout field of the agentx-Open-PDU. + This is a session-specific value that may be overridden by + values associated with the specific registered MIB regions + (see agentxRegTimeout). A value of zero(0) indicates that + the master agent's default timeout value should be used + + + (see agentxDefaultTimeout). + " + ::= { agentxSessionEntry 7 } + + -- The AgentX Registration Group + + agentxRegistrationTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxRegistrationTable. + " + ::= { agentxRegistration 1 } + + agentxRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of registered regions. + " + ::= { agentxRegistration 2 } + + agentxRegistrationEntry OBJECT-TYPE + SYNTAX AgentxRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains information for a single registered region. An + entry is created when a session successfully registers a + region and is destroyed for any of three reasons: this region + is unregistered by the session, the session is closed, + or the subagent connection is closed. + " + INDEX { agentxConnIndex, agentxSessionIndex, agentxRegIndex } + ::= { agentxRegistrationTable 1 } + + AgentxRegistrationEntry ::= SEQUENCE { + agentxRegIndex Unsigned32, + agentxRegContext OCTET STRING, + agentxRegStart OBJECT IDENTIFIER, + agentxRegRangeSubId Unsigned32, + agentxRegUpperBound Unsigned32, + agentxRegPriority Unsigned32, + agentxRegTimeout INTEGER, + agentxRegInstance TruthValue } + + + agentxRegIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "agentxRegIndex uniquely identifies a registration entry. + This value is constant for the lifetime of an entry. + " + ::= { agentxRegistrationEntry 1 } + + agentxRegContext OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The context in which the session supports the objects in this + region. A zero-length context indicates the default context. + " + ::= { agentxRegistrationEntry 2 } + + agentxRegStart OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting OBJECT IDENTIFIER of this registration entry. The + session identified by agentxSessionIndex implements objects + starting at this value (inclusive). Note that this value could + identify an object type, an object instance, or a partial object + instance. + " + ::= { agentxRegistrationEntry 3 } + + agentxRegRangeSubId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "agentxRegRangeSubId is used to specify the range. This is + taken from r.region_subid in the registration PDU. If the value + of this object is zero, no range is specified. If it is non-zero, + it identifies the `nth' sub-identifier in r.region for which + this entry's agentxRegUpperBound value is substituted in the + OID for purposes of defining the region's upper bound. + " + ::= { agentxRegistrationEntry 4 } + + agentxRegUpperBound OBJECT-TYPE + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "agentxRegUpperBound represents the upper-bound sub-identifier in + a registration. This is taken from the r.upper_bound in the + registration PDU. If agentxRegRangeSubid (r.region_subid) is + zero, this value is also zero and is not used to define an upper + bound for this registration. + " + ::= { agentxRegistrationEntry 5 } + + agentxRegPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registration priority. Lower values have higher priority. + This value is taken from r.priority in the register PDU. + Sessions should use the value of 127 for r.priority if a + default value is desired. + " + ::= { agentxRegistrationEntry 6 } + + agentxRegTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timeout value, in seconds, for responses to + requests associated with this registered MIB region. + A value of zero(0) indicates the default value (indicated + by by agentxSessionTimeout or agentxDefaultTimeout) is to + be used. This value is taken from the r.timeout field of + the agentx-Register-PDU. + " + ::= { agentxRegistrationEntry 7 } + + agentxRegInstance OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of agentxRegInstance is `true' for + registrations for which the INSTANCE_REGISTRATION + was set, and is `false' for all other registrations. + " + + + ::= { agentxRegistrationEntry 8 } + + -- Conformance Statements for AgentX + + agentxConformance OBJECT IDENTIFIER ::= { agentxMIB 2 } + agentxMIBGroups OBJECT IDENTIFIER ::= { agentxConformance 1 } + agentxMIBCompliances OBJECT IDENTIFIER ::= { agentxConformance 2 } + + -- Compliance Statements for AgentX + + agentxMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement the + AgentX protocol. Note that a compliant agent can implement all + objects in this MIB module as read-only. + " + MODULE -- this module + MANDATORY-GROUPS { agentxMIBGroup } + + OBJECT agentxSessionAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + " + ::= { agentxMIBCompliances 1 } + + agentxMIBGroup OBJECT-GROUP + OBJECTS { + agentxDefaultTimeout, + agentxMasterAgentXVer, + agentxConnTableLastChange, + agentxConnOpenTime, + agentxConnTransportDomain, + agentxConnTransportAddress, + agentxSessionTableLastChange, + agentxSessionTimeout, + agentxSessionObjectID, + agentxSessionDescr, + agentxSessionAdminStatus, + agentxSessionOpenTime, + agentxSessionAgentXVer, + agentxRegistrationTableLastChange, + agentxRegContext, + agentxRegStart, + agentxRegRangeSubId, + agentxRegUpperBound, + agentxRegPriority, + + + agentxRegTimeout, + agentxRegInstance + } + STATUS current + DESCRIPTION + "All accessible objects in the AgentX MIB. + " + ::= { agentxMIBGroups 1 } + + END diff --git a/mibs/ietf/AGGREGATE-MIB b/mibs/ietf/AGGREGATE-MIB new file mode 100644 index 0000000..9e21d50 --- /dev/null +++ b/mibs/ietf/AGGREGATE-MIB @@ -0,0 +1,506 @@ + AGGREGATE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, experimental, Unsigned32, + OBJECT-TYPE, Opaque + FROM SNMPv2-SMI + OwnerString + FROM RMON-MIB + RowStatus, StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + aggrMIB MODULE-IDENTITY + LAST-UPDATED "200604270000Z" -- 27th April, 2006 + ORGANIZATION "Cyber Solutions Inc. NetMan Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Support Group E-mail: mibsupport@cysols.com" + + + + DESCRIPTION + "The MIB for servicing aggregate objects. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4498; + see the RFC itself for full legal notices. + " + REVISION "200604270000Z" -- 27th April, 2006 + DESCRIPTION "Initial version, published as RFC 4498." + ::= { experimental 123 } + + AggrMOErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the error status of the + constituent MO instances. The error status for a + constituent MO instance is given in terms of two elements: + o The moIndex, which indicates the position of the MO + instance (starting at 1) in the value of the aggregated + MO instance. + o The moError, which indicates the error that was + encountered in fetching that MO instance. + The syntax in ASN.1 Notation will be + ErrorStatus :: = SEQUENCE { + moIndex Integer32, + moError SnmpPduErrorStatus + } + AggrMOErrorStatus ::= SEQUENCE OF { + ErrorStatus + } + Note1: The command responder will supply values for all + constituent MO instances, in the same order in + which the MO instances are specified for the AgMO. + If an error is encountered for an MO instance, then + the corresponding value will have an ASN.1 value NULL, + and an error will be flagged in the corresponding + AggrMOErrorStatus object. + Only MOs for which errors have been encountered will + have their corresponding moIndex and moError values + set. + Note2: The error code for the component MO instances will be + in accordance with the SnmpPduErrorStatus TC defined + in the DISMAN-SCHEDULE-MIB [RFC3231]. + Note3: The command generator will need to know + constituent MO instances and their order to correctly + interpret AggrMOErrorStatus. + " + SYNTAX Opaque (SIZE (0..1024)) + + + + AggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the aggregate + MOs. It will have a format dependent on the constituent + MOs, a sequence of values. The syntax in ASN.1 Notation will + be + MOValue :: = SEQUENCE { + value ObjectSyntax + } + where 'value' is the value of a constituent MO instance. + AggrMOValue :: = SEQUENCE OF { + MOValue + } + + Note: The command generator will need to know the + constituent MO instances and their order to + correctly interpret AggrMOValue." + SYNTAX Opaque (SIZE (0..1024)) + + AggrMOCompressedValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the compressed + aggregate MOs." + SYNTAX OCTET STRING (SIZE (0..1024)) + +-- +-- The aggregation control table +-- There will be a row for each aggregate MO +-- + aggrCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that controls the aggregation of the MOs." + ::= {aggrMIB 1} + + aggrCtlEntry OBJECT-TYPE + SYNTAX AggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of the control table that defines one aggregated + MO. + + + + + + Entries in this table are required to survive a reboot + of the managed entity depending on the value of the + corresponding aggrCtlEntryStorageType instance. + " + INDEX {aggrCtlEntryID } + ::= {aggrCtlTable 1 } + + AggrCtlEntry ::= SEQUENCE { + aggrCtlEntryID + SnmpAdminString, + aggrCtlMOIndex + Unsigned32, + aggrCtlMODescr + SnmpAdminString, + aggrCtlCompressionAlgorithm + INTEGER, + aggrCtlEntryOwner + OwnerString, + aggrCtlEntryStorageType + StorageType, + aggrCtlEntryStatus + RowStatus + } + + aggrCtlEntryID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally unique, administratively assigned name + for this aggregated MO. It is used as an index to + uniquely identify this row in the table." + ::= { aggrCtlEntry 1 } + + aggrCtlMOIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to a group of MOs identified by aggrMOEntryID + in the aggrMOTable. This is the group of MOs that will + be aggregated." + ::= { aggrCtlEntry 2 } + + aggrCtlMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "A textual description of the object that is + being aggregated." + ::= {aggrCtlEntry 3} + + -- only one compression algorithm is defined as of now. + aggrCtlCompressionAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + none (1), + deflate (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The compression algorithm that will be used by + the agent to compress the value of the aggregated + object. + The deflate algorithm and corresponding data format + specification is described in RFC 1951. It is + compatible with the widely used gzip utility. + " + REFERENCE + "RFC1951 : DEFLATE Compressed Data Format Specification + version 1.3 + " + DEFVAL { none } + ::= {aggrCtlEntry 4} + + aggrCtlEntryOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that created this entry." + ::= {aggrCtlEntry 5} + + aggrCtlEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + + + + " + ::= {aggrCtlEntry 6} + + aggrCtlEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The aggrCtlEntryStatus may be changed to 'active' if + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {aggrCtlEntry 7} + +-- +-- The Table of primary(simple) MOs +-- + aggrMOTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrMOEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of primary(simple) MOs that will be aggregated. + Each row in this table represents a MO that will be + aggregated. The aggrMOEntryID index is used to identify + the group of MOs that will be aggregated. The + aggrMOIndex instance in the corresponding row of the + aggrCtlTable will have a value equal to the value of + aggrMOEntryID. The aggrMOEntryMOID index is used to + identify an MO in the group. + " + ::= {aggrMIB 2} + + aggrMOEntry OBJECT-TYPE + SYNTAX AggrMOEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A row of the table that specifies one MO. + Entries in this table are required to survive a reboot + of the managed entity depending on the value of the + corresponding aggrMOEntryStorageType instance. + " + INDEX { aggrMOEntryID, aggrMOEntryMOID } + ::= {aggrMOTable 1 } + + AggrMOEntry ::= SEQUENCE { + aggrMOEntryID + Unsigned32, + aggrMOEntryMOID + Unsigned32, + aggrMOInstance + OBJECT IDENTIFIER, + aggrMODescr + SnmpAdminString, + aggrMOEntryStorageType + StorageType, + aggrMOEntryStatus + RowStatus + } + + aggrMOEntryID OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index uniquely identifying a group of MOs + that will be aggregated." + ::= { aggrMOEntry 1 } + + aggrMOEntryMOID OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify an MO instance in the + group of MO instances that will be aggregated." + ::= { aggrMOEntry 2 } + + aggrMOInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OID of the MO instance, the value of which will + be sampled by the agent." + + + + ::= { aggrMOEntry 3 } + + aggrMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the object that will + be aggregated." + ::= {aggrMOEntry 4} + + aggrMOEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + ::= {aggrMOEntry 5} + + aggrMOEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The aggrMOEntryStatus may be changed to 'active' iff + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {aggrMOEntry 6} + + -- + -- aggrDataTable: The Table of Data. Each row represents a Data + + + + -- set. aggrCtlEntryID is the key to the table. + -- It is used to identify instances of the + -- aggregated MO that are present in the table. + -- + aggrDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row of this table contains information + about an aggregateMO indexed by aggrCtlEntryID." + ::= {aggrMIB 3} + + aggrDataEntry OBJECT-TYPE + SYNTAX AggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information pertaining to + an aggregate MO." + INDEX {aggrCtlEntryID} + ::= {aggrDataTable 1 } + + AggrDataEntry ::= SEQUENCE { + aggrDataRecord + AggrMOValue, + aggrDataRecordCompressed + AggrMOCompressedValue, + aggrDataErrorRecord + AggrMOErrorStatus + } + + aggrDataRecord OBJECT-TYPE + SYNTAX AggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The snapshot value of the aggregated MO. + Note that the access privileges to this object will be + governed by the access privileges of the component + objects. Thus, an entity attempting to access an + instance of this MO MUST have access rights to all the + component instance objects and this MO instance. + " + ::= { aggrDataEntry 1} + + aggrDataRecordCompressed OBJECT-TYPE + SYNTAX AggrMOCompressedValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The compressed value of the aggregated MO. + The compression algorithm will depend on the + aggrCtlCompressionAlgorithm given in the corresponding + aggrCtlEntry. If the value of the corresponding + aggrCtlCompressionAlgorithm is (1) 'none', then the value + of all instances of this object will be a string of zero + length. + Note that the access privileges to this object will be + governed by the access privileges of the component + objects. Thus, an entity attempting to access an instance + of this MO MUST have access rights to all the component + instance objects and this MO instance. + " + ::= { aggrDataEntry 2} + + aggrDataErrorRecord OBJECT-TYPE + SYNTAX AggrMOErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error status corresponding to the MO instances + aggregated in aggrDataRecord (and + aggrDataRecordCompressed)." + ::= { aggrDataEntry 3} + + -- Conformance information + aggrConformance OBJECT IDENTIFIER ::= { aggrMIB 4 } + aggrGroups OBJECT IDENTIFIER ::= { aggrConformance 1 } + aggrCompliances OBJECT IDENTIFIER ::= { aggrConformance 2 } + + -- Compliance statements + aggrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the AGGREGATE-MIB." + MODULE -- this module + MANDATORY-GROUPS { aggrMibBasicGroup } + ::= { aggrCompliances 1 } + + -- Units of conformance + aggrMibBasicGroup OBJECT-GROUP + OBJECTS { + aggrCtlMOIndex, + aggrCtlMODescr, + + + + aggrCtlCompressionAlgorithm, + aggrCtlEntryOwner, + aggrCtlEntryStorageType, + aggrCtlEntryStatus, + aggrMOInstance, + aggrMODescr, + aggrMOEntryStorageType, + aggrMOEntryStatus, + aggrDataRecord, + aggrDataRecordCompressed, + aggrDataErrorRecord + } + STATUS current + DESCRIPTION + "A collection of objects for aggregation of MOs." + ::= { aggrGroups 1 } + END diff --git a/mibs/ietf/ALARM-MIB b/mibs/ietf/ALARM-MIB new file mode 100644 index 0000000..1fb6827 --- /dev/null +++ b/mibs/ietf/ALARM-MIB @@ -0,0 +1,1191 @@ +ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Gauge32, + TimeTicks, Counter32, Counter64, + IpAddress, Opaque, mib-2, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + DateAndTime, + RowStatus, RowPointer, + TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- [RFC3291] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB; -- [RFC2021] + + alarmMIB MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "The MIB module describes a generic solution + to model alarms and to store the current list + of active alarms. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 118 } + +alarmObjects OBJECT IDENTIFIER ::= { alarmMIB 1 } + +alarmNotifications OBJECT IDENTIFIER ::= { alarmMIB 0 } + +alarmModel OBJECT IDENTIFIER ::= { alarmObjects 1 } + +alarmActive OBJECT IDENTIFIER ::= { alarmObjects 2 } + +alarmClear OBJECT IDENTIFIER ::= { alarmObjects 3 } + +-- Textual Conventions + + -- ResourceId is intended to be a general textual convention + -- that can be used outside of the set of MIBs related to + -- Alarm Management. + + + + +ResourceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier for this resource. + + The type of the resource can be determined by looking + at the OID that describes the resource. + + Resources must be identified in a consistent manner. + For example, if this resource is an interface, this + object MUST point to an ifIndex and if this resource + is a physical entity [RFC2737], then this MUST point + to an entPhysicalDescr, given that entPhysicalIndex + is not accessible. In general, the value is the + name of the instance of the first accessible columnar + object in the conceptual row of a table that is + meaningful for this resource type, which SHOULD + be defined in an IETF standard MIB." + SYNTAX OBJECT IDENTIFIER + + -- LocalSnmpEngineOrZeroLenStr is intended to be a general + -- textual convention that can be used outside of the set of + -- MIBs related to Alarm Management. + + LocalSnmpEngineOrZeroLenStr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNMP Engine ID or a zero-length string. The + instantiation of this textual convention will provide + guidance on when this will be an SNMP Engine ID and + when it will be a zero lengths string" + SYNTAX OCTET STRING (SIZE(0 | 5..32)) + +-- Alarm Model + +alarmModelLastChanged OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + creation, deletion or modification of an entry in + the alarmModelTable. + + If the number and content of entries has been unchanged + since the last re-initialization of the local network + management subsystem, then the value of this object + MUST be zero." + + + + ::= { alarmModel 1 } + +alarmModelTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmModelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about possible alarms on the system, + and how they have been modelled." + ::= { alarmModel 2 } + +alarmModelEntry OBJECT-TYPE + SYNTAX AlarmModelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table for each possible alarm state. + This table MUST be persistent across system reboots." + INDEX { alarmListName, alarmModelIndex, alarmModelState } + ::= { alarmModelTable 1 } + +AlarmModelEntry ::= SEQUENCE { + alarmModelIndex Unsigned32, + alarmModelState Unsigned32, + alarmModelNotificationId OBJECT IDENTIFIER, + alarmModelVarbindIndex Unsigned32, + alarmModelVarbindValue Integer32, + alarmModelDescription SnmpAdminString, + alarmModelSpecificPointer RowPointer, + alarmModelVarbindSubtree OBJECT IDENTIFIER, + alarmModelResourcePrefix OBJECT IDENTIFIER, + alarmModelRowStatus RowStatus + } + +alarmModelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer that acts as an alarm Id + to uniquely identify each alarm + within the named alarm list. " + ::= { alarmModelEntry 1 } + +alarmModelState OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A value of 1 MUST indicate a clear alarm state. + The value of this object MUST be less than the + alarmModelState of more severe alarm states for + this alarm. The value of this object MUST be more + than the alarmModelState of less severe alarm states + for this alarm." + ::= { alarmModelEntry 2 } + +alarmModelNotificationId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of this alarm + state transition. If there is no notification associated + with this alarm state, the value of this object MUST be + '0.0'" + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 3 } + +alarmModelVarbindIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index into the varbind listing of the notification + indicated by alarmModelNotificationId which helps + signal that the given alarm has changed state. + If there is no applicable varbind, the value of this + object MUST be zero. + + Note that the value of alarmModelVarbindIndex acknowledges + the existence of the first two obligatory varbinds in + the InformRequest-PDU and SNMPv2-Trap-PDU (sysUpTime.0 + and snmpTrapOID.0). That is, a value of 2 refers to + the snmpTrapOID.0. + + If the incoming notification is instead an SNMPv1 Trap-PDU, + then an appropriate value for sysUpTime.0 or snmpTrapOID.0 + shall be determined by using the rules in section 3.1 of + [RFC3584]" + DEFVAL { 0 } + ::= { alarmModelEntry 4 } + +alarmModelVarbindValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The value that the varbind indicated by + alarmModelVarbindIndex takes to indicate + that the alarm has entered this state. + + If alarmModelVarbindIndex has a value of 0, so + MUST alarmModelVarbindValue. + " + DEFVAL { 0 } + ::= { alarmModelEntry 5 } + +alarmModelDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A brief description of this alarm and state suitable + to display to operators." + DEFVAL { "" } + ::= { alarmModelEntry 6 } + +alarmModelSpecificPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If no additional, model-specific Alarm MIB is supported by + the system the value of this object is `0.0'and attempts + to set it to any other value MUST be rejected appropriately. + + When a model-specific Alarm MIB is supported, this object + MUST refer to the first accessible object in a corresponding + row of the model definition in one of these model-specific + MIB and attempts to set this object to { 0 0 } or any other + value MUST be rejected appropriately." + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 7 } + + alarmModelVarbindSubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name portion of each VarBind in the notification, + in order, is compared to the value of this object. + If the name is equal to or a subtree of the value + of this object, for purposes of computing the value + + + + of AlarmActiveResourceID the 'prefix' will be the + matching portion, and the 'indexes' will be any + remainder. The examination of varbinds ends with + the first match. If the value of this object is 0.0, + then the first varbind, or in the case of v2, the + first varbind after the timestamp and the trap + OID, will always be matched. + " + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 8 } + + alarmModelResourcePrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of AlarmActiveResourceId is computed + by appending any indexes extracted in accordance + with the description of alarmModelVarbindSubtree + onto the value of this object. If this object's + value is 0.0, then the 'prefix' extracted is used + instead. + " + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 9 } + +alarmModelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for creating and deleting entries. Entries may be + modified while active. Alarms whose alarmModelRowStatus is + not active will not appear in either the alarmActiveTable + or the alarmClearTable. Setting this object to notInService + cannot be used as an alarm suppression mechanism. Entries + that are notInService will disappear as described in RFC2579. + + This row can not be modified while it is being + referenced by a value of alarmActiveModelPointer. In these + cases, an error of `inconsistentValue' will be returned to + the manager. + + This entry may be deleted while it is being + referenced by a value of alarmActiveModelPointer. This results + in the deletion of this entry and entries in the active alarms + referencing this entry via an alarmActiveModelPointer. + + + + + As all read-create objects in this table have a DEFVAL clause, + there is no requirement that any object be explicitly set + before this row can become active. Note that a row consisting + only of default values is not very meaningful." + ::= { alarmModelEntry 10 } + +-- Active Alarm Table -- + +alarmActiveLastChanged 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 alarmActiveTable. + 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." + ::= { alarmActive 1 } + + alarmActiveOverflow OBJECT-TYPE + SYNTAX Counter32 + UNITS "active alarms" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active alarms that have not been put into + the alarmActiveTable since system restart as a result + of extreme resource constraints." + ::= { alarmActive 5 } + +alarmActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Active Alarms entries." + ::= { alarmActive 2 } + +alarmActiveEntry OBJECT-TYPE + SYNTAX AlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when alarms are raised. They + are removed when the alarm is cleared. + + If under extreme resource constraint the system is unable to + + + + add any more entries into this table, then the + alarmActiveOverflow statistic will be increased by one." + INDEX { alarmListName, alarmActiveDateAndTime, + alarmActiveIndex } + ::= { alarmActiveTable 1 } + +AlarmActiveEntry ::= SEQUENCE { + alarmListName SnmpAdminString, + alarmActiveDateAndTime DateAndTime, + alarmActiveIndex Unsigned32, + alarmActiveEngineID LocalSnmpEngineOrZeroLenStr, + alarmActiveEngineAddressType InetAddressType, + alarmActiveEngineAddress InetAddress, + alarmActiveContextName SnmpAdminString, + alarmActiveVariables Unsigned32, + alarmActiveNotificationID OBJECT IDENTIFIER, + alarmActiveResourceId ResourceId, + alarmActiveDescription SnmpAdminString, + alarmActiveLogPointer RowPointer, + alarmActiveModelPointer RowPointer, + alarmActiveSpecificPointer RowPointer } + +alarmListName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the list of alarms. This SHOULD be the same as + nlmLogName if the Notification Log MIB [RFC3014] is supported. + This SHOULD be the same as, or contain as a prefix, the + applicable snmpNotifyFilterProfileName if the + SNMP-NOTIFICATION-MIB DEFINITIONS [RFC3413] is supported. + + An implementation may allow multiple named alarm lists, up to + some implementation-specific limit (which may be none). A + zero-length list name is reserved for creation and deletion + by the managed system, and MUST be used as the default log + name by systems that do not support named alarm lists." + ::= { alarmActiveEntry 1 } + +alarmActiveDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local date and time when the error occurred. + + This object facilitates retrieving all instances of + + + + alarms that have been raised or have changed state + since a given point in time. + + Implementations MUST include the offset from UTC, + if available. Implementation in environments in which + the UTC offset is not available is NOT RECOMMENDED." + ::= { alarmActiveEntry 2 } + +alarmActiveIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A strictly monotonically increasing integer which + acts as the index of entries within the named alarm + list. It wraps back to 1 after it reaches its + maximum value." + ::= { alarmActiveEntry 3 } + +alarmActiveEngineID OBJECT-TYPE + SYNTAX LocalSnmpEngineOrZeroLenStr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the alarm + originated. If the alarm is from an SNMPv1 system this + object is a zero length string." + ::= { alarmActiveEntry 4 } + +alarmActiveEngineAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates what type of address is stored in + the alarmActiveEngineAddress object - IPv4, IPv6, DNS, etc." + ::= { alarmActiveEntry 5 } + +alarmActiveEngineAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the SNMP engine on which the alarm is + occurring. + + This object MUST always be instantiated, even if the list + can contain alarms from only one engine." + + + + ::= { alarmActiveEntry 6 } + +alarmActiveContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the alarm came. + For SNMPv1 alarms this is the community string from the Trap. + Note that care MUST be taken when selecting community + strings to ensure that these can be represented as a + well-formed SnmpAdminString. Community or Context names + that are not well-formed SnmpAdminStrings will be mapped + to zero length strings. + + If the alarm's source SNMP engine is known not to support + multiple contexts, this object is a zero length string." + ::= { alarmActiveEntry 7 } + +alarmActiveVariables OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of variables in alarmActiveVariableTable for this + alarm." + ::= { alarmActiveEntry 8 } + +alarmActiveNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the alarm + state transition that is occurring." + ::= { alarmActiveEntry 9 } + +alarmActiveResourceId OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the resource under alarm. + + If there is no corresponding resource, then + the value of this object MUST be 0.0." + ::= { alarmActiveEntry 10 } + + + + +alarmActiveDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object provides a textual description of the + active alarm. This text is generated dynamically by the + notification generator to provide useful information + to the human operator. This information SHOULD + provide information allowing the operator to locate + the resource for which this alarm is being generated. + This information is not intended for consumption by + automated tools." + ::= { alarmActiveEntry 11 } + +alarmActiveLogPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in a + notification logging MIB where the state change + notification for this active alarm is logged. + If no log entry applies to this active alarm, + then this object MUST have the value of 0.0" + ::= { alarmActiveEntry 12 } + +alarmActiveModelPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the + alarmModelTable for this active alarm. This + points not only to the alarm model being + instantiated, but also to the specific alarm + state that is active." + ::= { alarmActiveEntry 13 } + +alarmActiveSpecificPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If no additional, model-specific, Alarm MIB is supported by + the system this object is `0.0'. When a model-specific Alarm + MIB is supported, this object is the instance pointer to the + specific model-specific active alarm list." + + + + ::= { alarmActiveEntry 14 } + +-- Active Alarm Variable Table -- + +alarmActiveVariableTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of variables to go with active alarm entries." + ::= { alarmActive 3 } + +alarmActiveVariableEntry OBJECT-TYPE + SYNTAX AlarmActiveVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when there are variables in + the varbind list of a corresponding alarm in + alarmActiveTable. + + Entries appear in this table as though + the trap/notification had been transported using a + SNMPv2-Trap-PDU, as defined in [RFC3416] - i.e., the + alarmActiveVariableIndex 1 will always be sysUpTime + and alarmActiveVariableIndex 2 will always be + snmpTrapOID. + + If the incoming notification is instead an SNMPv1 Trap-PDU and + the value of alarmModelVarbindIndex is 1 or 2, an appropriate + value for sysUpTime.0 or snmpTrapOID.0 shall be determined + by using the rules in section 3.1 of [RFC3584]." + INDEX { alarmListName, alarmActiveIndex, + alarmActiveVariableIndex } + ::= { alarmActiveVariableTable 1 } + +AlarmActiveVariableEntry ::= SEQUENCE { + alarmActiveVariableIndex Unsigned32, + alarmActiveVariableID OBJECT IDENTIFIER, + alarmActiveVariableValueType INTEGER, + alarmActiveVariableCounter32Val Counter32, + alarmActiveVariableUnsigned32Val Unsigned32, + alarmActiveVariableTimeTicksVal TimeTicks, + alarmActiveVariableInteger32Val Integer32, + alarmActiveVariableOctetStringVal OCTET STRING, + alarmActiveVariableIpAddressVal IpAddress, + alarmActiveVariableOidVal OBJECT IDENTIFIER, + alarmActiveVariableCounter64Val Counter64, + + + + alarmActiveVariableOpaqueVal Opaque } + +alarmActiveVariableIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A strictly monotonically increasing integer, starting at + 1 for a given alarmActiveIndex, for indexing variables + within the active alarm variable list. " + ::= { alarmActiveVariableEntry 1 } + +alarmActiveVariableID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm variable's object identifier." + ::= { alarmActiveVariableEntry 2 } + +alarmActiveVariableValueType OBJECT-TYPE + SYNTAX INTEGER { + counter32(1), + unsigned32(2), + timeTicks(3), + integer32(4), + ipAddress(5), + octetString(6), + objectId(7), + counter64(8), + opaque(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the value. One and only one of the value + objects that follow is used for a given row in this table, + based on this type." + ::= { alarmActiveVariableEntry 3 } + +alarmActiveVariableCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'counter32'." + ::= { alarmActiveVariableEntry 4 } + + + + +alarmActiveVariableUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'unsigned32'." + ::= { alarmActiveVariableEntry 5 } + +alarmActiveVariableTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'timeTicks'." + ::= { alarmActiveVariableEntry 6 } + +alarmActiveVariableInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'integer32'." + ::= { alarmActiveVariableEntry 7 } + +alarmActiveVariableOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'octetString'." + ::= { alarmActiveVariableEntry 8 } + +alarmActiveVariableIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'ipAddress'." + ::= { alarmActiveVariableEntry 9 } + +alarmActiveVariableOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'objectId'." + ::= { alarmActiveVariableEntry 10 } + + + + +alarmActiveVariableCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'counter64'." + ::= { alarmActiveVariableEntry 11 } + +alarmActiveVariableOpaqueVal OBJECT-TYPE + SYNTAX Opaque (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'opaque'. + + Note that although RFC2578 [RFC2578] forbids the use + of Opaque in 'standard' MIB modules, this particular + usage is driven by the need to be able to accurately + represent any well-formed notification, and justified + by the need for backward compatibility." + ::= { alarmActiveVariableEntry 12 } + +-- Statistics -- + +alarmActiveStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the alarm statistics + information." + ::= { alarmActive 4 } + +alarmActiveStatsEntry OBJECT-TYPE + SYNTAX AlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics on the current active alarms." + INDEX { alarmListName } + + ::= { alarmActiveStatsTable 1 } + +AlarmActiveStatsEntry ::= + SEQUENCE { + alarmActiveStatsActiveCurrent Gauge32, + alarmActiveStatsActives ZeroBasedCounter32, + alarmActiveStatsLastRaise TimeTicks, + + + + alarmActiveStatsLastClear TimeTicks + } + +alarmActiveStatsActiveCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of currently active alarms on the system." + ::= { alarmActiveStatsEntry 1 } + +alarmActiveStatsActives OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of active alarms since system restarted." + ::= { alarmActiveStatsEntry 2 } + +alarmActiveStatsLastRaise OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + alarm raise for this alarm list. + If no alarm raises have occurred since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { alarmActiveStatsEntry 3 } + +alarmActiveStatsLastClear OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + alarm clear for this alarm list. + If no alarm clears have occurred since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { alarmActiveStatsEntry 4 } + +-- Alarm Clear + +alarmClearMaximum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies the maximum number of cleared + alarms to store in the alarmClearTable. When this + number is reached, the cleared alarms with the + earliest clear time will be removed from the table." + ::= { alarmClear 1 } + +alarmClearTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmClearEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on + cleared alarms." + ::= { alarmClear 2 } + +alarmClearEntry OBJECT-TYPE + SYNTAX AlarmClearEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a cleared alarm." + INDEX { alarmListName, alarmClearDateAndTime, +alarmClearIndex } + + ::= { alarmClearTable 1 } + +AlarmClearEntry ::= + SEQUENCE { + alarmClearIndex Unsigned32, + alarmClearDateAndTime DateAndTime, + alarmClearEngineID LocalSnmpEngineOrZeroLenStr, + alarmClearEngineAddressType InetAddressType, + alarmClearEngineAddress InetAddress, + alarmClearContextName SnmpAdminString, + alarmClearNotificationID OBJECT IDENTIFIER, + alarmClearResourceId ResourceId, + alarmClearLogIndex Unsigned32, + alarmClearModelPointer RowPointer + } + +alarmClearIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer which acts as the index of entries within + + + + the named alarm list. It wraps back to 1 after it + reaches its maximum value. + + This object has the same value as the alarmActiveIndex that + this alarm instance had when it was active." + ::= { alarmClearEntry 1 } + +alarmClearDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local date and time when the alarm cleared. + + This object facilitates retrieving all instances of + alarms that have been cleared since a given point in time. + + Implementations MUST include the offset from UTC, + if available. Implementation in environments in which + the UTC offset is not available is NOT RECOMMENDED." + ::= { alarmClearEntry 2 } + +alarmClearEngineID OBJECT-TYPE + SYNTAX LocalSnmpEngineOrZeroLenStr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the alarm + originated. If the alarm is from an SNMPv1 system this + object is a zero length string." + ::= { alarmClearEntry 3 } + +alarmClearEngineAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates what type of address is stored in + the alarmActiveEngineAddress object - IPv4, IPv6, DNS, etc." + ::= { alarmClearEntry 4 } + +alarmClearEngineAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Address of the SNMP engine on which the alarm was + occurring. This is used to identify the source of an SNMPv1 + + + + trap, since an alarmActiveEngineId cannot be extracted from the + SNMPv1 trap PDU. + + This object MUST always be instantiated, even if the list + can contain alarms from only one engine." + ::= { alarmClearEntry 5 } + +alarmClearContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the alarm came. + For SNMPv1 traps this is the community string from the Trap. + Note that care needs to be taken when selecting community + strings to ensure that these can be represented as a + well-formed SnmpAdminString. Community or Context names + that are not well-formed SnmpAdminStrings will be mapped + to zero length strings. + + If the alarm's source SNMP engine is known not to support + multiple contexts, this object is a zero length string." + ::= { alarmClearEntry 6 } + +alarmClearNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the alarm + clear." + ::= { alarmClearEntry 7 } + +alarmClearResourceId OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the resource that was under alarm. + + If there is no corresponding resource, then + the value of this object MUST be 0.0." + ::= { alarmClearEntry 8 } + +alarmClearLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This number MUST be the same as the log index of the + applicable row in the notification log MIB, if it exists. + If no log index applies to the trap, then this object + MUST have the value of 0." + ::= { alarmClearEntry 9 } + +alarmClearModelPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the + alarmModelTable for this cleared alarm." + ::= { alarmClearEntry 10 } + +-- Notifications + +alarmActiveState NOTIFICATION-TYPE + OBJECTS { alarmActiveModelPointer, + alarmActiveResourceId } + STATUS current + DESCRIPTION + "An instance of the alarm indicated by + alarmActiveModelPointer has been raised + against the entity indicated by + alarmActiveResourceId. + + The agent must throttle the generation of + consecutive alarmActiveState traps so that there is at + least a two-second gap between traps of this + type against the same alarmActiveModelPointer and + alarmActiveResourceId. When traps are throttled, + they are dropped, not queued for sending at a future time. + + A management application should periodically check + the value of alarmActiveLastChanged to detect any + missed alarmActiveState notification-events, e.g., + due to throttling or transmission loss." + ::= { alarmNotifications 2 } + +alarmClearState NOTIFICATION-TYPE + OBJECTS { alarmActiveModelPointer, + alarmActiveResourceId } + STATUS current + DESCRIPTION + "An instance of the alarm indicated by + alarmActiveModelPointer has been cleared against + + + + the entity indicated by alarmActiveResourceId. + + The agent must throttle the generation of + consecutive alarmActiveClear traps so that there is at + least a two-second gap between traps of this + type against the same alarmActiveModelPointer and + alarmActiveResourceId. When traps are throttled, + they are dropped, not queued for sending at a future time. + + A management application should periodically check + the value of alarmActiveLastChanged to detect any + missed alarmClearState notification-events, e.g., + due to throttling or transmission loss." + ::= { alarmNotifications 3 } + +-- Conformance + +alarmConformance OBJECT IDENTIFIER ::= { alarmMIB 2 } + +alarmCompliances OBJECT IDENTIFIER ::= { alarmConformance 1 } + +alarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + alarmActiveGroup, + alarmModelGroup + } + GROUP alarmActiveStatsGroup + DESCRIPTION + "This group is optional." + GROUP alarmClearGroup + DESCRIPTION + "This group is optional." + GROUP alarmNotificationsGroup + DESCRIPTION + "This group is optional." + ::= { alarmCompliances 1 } + +alarmGroups OBJECT IDENTIFIER ::= { alarmConformance 2 } + +alarmModelGroup OBJECT-GROUP + OBJECTS { + alarmModelLastChanged, + alarmModelNotificationId, + + + + alarmModelVarbindIndex, + alarmModelVarbindValue, + alarmModelDescription, + alarmModelSpecificPointer, + alarmModelVarbindSubtree, + alarmModelResourcePrefix, + alarmModelRowStatus + } + STATUS current + DESCRIPTION + "Alarm model group." + ::= { alarmGroups 1} + +alarmActiveGroup OBJECT-GROUP + OBJECTS { + alarmActiveLastChanged, + alarmActiveOverflow, + alarmActiveEngineID, + alarmActiveEngineAddressType, + alarmActiveEngineAddress, + alarmActiveContextName, + alarmActiveVariables, + alarmActiveNotificationID, + alarmActiveResourceId, + alarmActiveDescription, + alarmActiveLogPointer, + alarmActiveModelPointer, + alarmActiveSpecificPointer, + alarmActiveVariableID, + alarmActiveVariableValueType, + alarmActiveVariableCounter32Val, + alarmActiveVariableUnsigned32Val, + alarmActiveVariableTimeTicksVal, + alarmActiveVariableInteger32Val, + alarmActiveVariableOctetStringVal, + alarmActiveVariableIpAddressVal, + alarmActiveVariableOidVal, + alarmActiveVariableCounter64Val, + alarmActiveVariableOpaqueVal + } + STATUS current + DESCRIPTION + "Active Alarm list group." + ::= { alarmGroups 2} + + alarmActiveStatsGroup OBJECT-GROUP + OBJECTS { + alarmActiveStatsActives, + + + + alarmActiveStatsActiveCurrent, + alarmActiveStatsLastRaise, + alarmActiveStatsLastClear + } + STATUS current + DESCRIPTION + "Active alarm summary group." + ::= { alarmGroups 3} + +alarmClearGroup OBJECT-GROUP + OBJECTS { + alarmClearMaximum, + alarmClearEngineID, + alarmClearEngineAddressType, + alarmClearEngineAddress, + alarmClearContextName, + alarmClearNotificationID, + alarmClearResourceId, + alarmClearLogIndex, + alarmClearModelPointer + } + STATUS current + DESCRIPTION + "Cleared alarm group." + ::= { alarmGroups 4} + +alarmNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { alarmActiveState, alarmClearState } + STATUS current + DESCRIPTION + "The collection of notifications that can be used to + model alarms for faults lacking pre-existing + notification definitions." + ::= { alarmGroups 6 } + +END diff --git a/mibs/ietf/APM-MIB b/mibs/ietf/APM-MIB new file mode 100644 index 0000000..c35324e --- /dev/null +++ b/mibs/ietf/APM-MIB @@ -0,0 +1,2245 @@ +APM-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, Unsigned32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp, + TimeInterval, TruthValue, DateAndTime, + StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + rmon, OwnerString FROM RMON-MIB + protocolDirLocalIndex FROM RMON2-MIB; + +-- Application Performance Measurement MIB + +apm MODULE-IDENTITY + LAST-UPDATED "200402190000Z" -- February 19, 2004 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + + + + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + Cisco Systems, Inc. + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Tel: +1 408 527-3711 + E-mail: abierman@cisco.com + + Working Group Mailing List: + To subscribe send email to: + " + DESCRIPTION + "The MIB module for measuring application performance + as experienced by end-users. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3729; see the RFC itself for + full legal notices." + + REVISION "200402190000Z" -- February 19, 2004 + DESCRIPTION + "The original version of this MIB Module, published as + RFC3729." + + ::= { rmon 23 } + +apmMibObjects OBJECT IDENTIFIER ::= { apm 1 } +apmConformance OBJECT IDENTIFIER ::= { apm 2 } +apmCompliances OBJECT IDENTIFIER ::= { apmConformance 1 } +apmGroups OBJECT IDENTIFIER ::= { apmConformance 2 } + + +AppLocalIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A locally arbitrary unique identifier associated with an + application or application verb. + + All objects of type AppLocalIndex are assigned by the agent + out of a common number space. In other words, AppLocalIndex + values assigned to entries in one table must not overlap with + AppLocalIndex values assigned to entries in another + table. Further, every protocolDirLocalIndex value registered + by the agent automatically assigns the same value out of the + + + + AppLocalIndex number space. + + For example, if the protocolDirLocalIndex values { 1, 3, 5, 7 } + have been assigned, and the apmHttpFilterAppLocalIndex values + { 6, 8, 9 } have been assigned: + + - Assignment of new AppLocalIndex values must not use the + values { 1, 3, 5, 6, 7, 8, 9 }. + - AppLocalIndex values { 1, 3, 5, 7 } are automatically + assigned and are associated with the identical value of + protocolDirLocalIndex. In particular, an entry in the + apmAppDirTable indexed by a value provides further + information about a protocol indexed by the same value + in the protocolDirTable of RMON2. + + The value for each supported application must remain constant + at least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if an application is deleted and re-created, it must be + re-created with a new value that has not been used since the + last re-initialization. + + The specific value is meaningful only within a given SNMP + entity. An AppLocalIndex value must not be re-used until the + next agent restart." + SYNTAX Unsigned32 (1..2147483647) + +ProtocolDirNetworkAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A network level address whose semantics and encoding are + specified by an associated protocolDirLocalIndex + value. Objects of this type must specify which + protocolDirLocalIndex value is used. This value is encoded + according to the encoding rules for the identified + protocolDirectory entry. + + For example, if the associated protocolDirLocalIndex indicates + an encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order. + + Objects of this type may allow this value to be the zero + length string. If so, they must identify they meaning of this + value." + SYNTAX OCTET STRING (SIZE(0..255)) + +DataSourceOrZero ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [4], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If the source of the data isn't an interface or cannot be + localized to an interface, this object would be set to 0.0" + + REFERENCE "The DataSource textual convention is defined in + RFC 2021 [5]." + SYNTAX OBJECT IDENTIFIER + +RmonClientID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A long-lived unique ID assigned to an end-system. This ID is + assigned by the agent using an implementation-specific + algorithm. + + Because a client machine may be assigned multiple addresses + over any time period it can be difficult to attribute + behavior to a particular client based solely on its + address. A ClientID may be assigned to provide a more + stable handle for referencing that client. The entity that + assigns the ClientID may use various implementation + techniques to keep track of a client but if the assigning + entity is unable to track client address mappings, it may map + client identifiers to client addresses rather than to + distinct client machines. + + This is named ClientID because it helps to solve a problem + seen in network clients (servers usually have well-known, + long-lived addresses). However, ClientID's may be assigned to + any end-system regardless of its role on the network." + SYNTAX Unsigned32 (0..4294967295) + + +TransactionAggregationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Specifies one of 4 different techniques for aggregating + transactions. + + The metrics for a single transaction are the responsiveness of + the transaction and whether the transaction succeeded (a + boolean). When such metrics are aggregated in this MIB Module, + these metrics are replaced by averages and distributions of + responsiveness and availability. The metrics describing + aggregates are constant no matter which type of aggregation is + being performed. These metrics may be found in the + apmReportTable. + + The flows(1) aggregation is the simplest. All transactions + that share common application/server/client 3-tuples are + aggregated together, resulting in a set of metrics for all + such unique 3-tuples. + + The clients(2) aggregation results in somewhat more + aggregation (i.e., fewer resulting records). All transactions + that share common application/client tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The servers(3) aggregation usually results in still more + aggregation (i.e., fewer resulting records). All transactions + that share common application/server tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The applications(4) aggregation results in the most + aggregation (i.e., the fewest resulting records). All + transactions that share a common application are aggregated + together, resulting in a set of metrics for all such unique + applications. + + Note that it is not meaningful to aggregate applications, as + different applications have widely varying characteristics. As a + result, this set of aggregations is complete." + SYNTAX INTEGER { + flows(1), -- Least Aggregation + clients(2), + servers(3), + applications(4) -- Most Aggregation + } + +-- The APM Application Directory Group + +-- The Application Directory Table contains a record for every + + + +-- application monitored by this agent. This table is also used to +-- configure whether or not an application will be measured and which +-- bucket boundaries will be used for the application. +-- +-- The bucket boundaries define the break-points between bins of a +-- histogram analysis for that application. As an example of how this +-- works, consider an entry representing response-time for http. +-- If the boundaries are set as follows: +-- Boundary1: 500 milliseconds +-- Boundary2: 1 second +-- Boundary3: 2 seconds +-- Boundary4: 5 +-- Boundary5: 15 +-- Boundary6: 60 +-- +-- If the following measurements are made (all in milliseconds): +-- 377, 8645, 1300, 487, 1405, 775, 1115, 850, 945, 1054, 7745, 9380 +-- +-- A report run during this interval would report the following +-- counts: +-- Bucket1: 2 +-- Bucket2: 3 +-- Bucket3: 4 +-- Bucket4: 0 +-- Bucket5: 3 +-- Bucket6: 0 +-- Bucket7: 0 + +apmAppDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmAppDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application + verbs. The agent will populate this table with all + applications/verbs of any responsivenessType it has the + capability to monitor. Since the agent populates this table + with every entry it has the capability to monitor, the + entries in this table are read-write, allowing the management + station to modify parameters in this table but not to add new + entries or delete entries (however, entries may be + disabled). If new entries are added to the apmHttpFilterTable + or the apmUserDefinedAppTable, the agent will add the + corresponding entries to this table. + + It is an implementation-dependent matter as to how the agent + sets these default parameters. For example, it may leave + certain entries in this table 'off(0)' if the agent developer + + + + believes that combination will be infrequently used, allowing + a manager that needs that capability to set it to 'on(1)'. + + Some applications are registered in the RMON2 protocol + directory and some are registered in other tables in this + MIB Module. Regardless of where an application is originally + registered, it is assigned an AppLocalIndex value that is the + primary index for this table. + + The contents of this table affect all reports and exceptions + generated by this agent. Accordingly, modification of this + table should be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this table - it + should reflect the preferences of the site administrator, not + the software author. As a practical matter, this requires + management software to allow the administrator to configure + the values it will use so that it can be adapted to the site + policy." + ::= { apmMibObjects 1 } + +apmAppDirEntry OBJECT-TYPE + SYNTAX ApmAppDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application + verbs. An entry will exist in this table for all applications + for which application performance measurement is supported." + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType } + ::= { apmAppDirTable 1 } + +ApmAppDirEntry ::= SEQUENCE { + apmAppDirAppLocalIndex AppLocalIndex, + apmAppDirResponsivenessType INTEGER, + apmAppDirConfig INTEGER, + apmAppDirResponsivenessBoundary1 Unsigned32, + apmAppDirResponsivenessBoundary2 Unsigned32, + apmAppDirResponsivenessBoundary3 Unsigned32, + apmAppDirResponsivenessBoundary4 Unsigned32, + apmAppDirResponsivenessBoundary5 Unsigned32, + apmAppDirResponsivenessBoundary6 Unsigned32 +} + +apmAppDirAppLocalIndex OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The AppLocalIndex assigned for this application Directory + entry." + ::= { apmAppDirEntry 1 } + +apmAppDirResponsivenessType OBJECT-TYPE + SYNTAX INTEGER { + transactionOriented(1), + throughputOriented(2), + streamingOriented(3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object describes and configures the agent's support for + application performance measurement for this application. + There are 3 types of measurements for different types of + applications: + + Transaction-Oriented applications have a fairly constant + workload to perform for all transactions. The responsiveness + metric for transaction-oriented applications is application + response time (from first request to final delivery of + service) and is measured in milliseconds. This is + commonly referred to as end-user response time. + + Throughput-Oriented applications have widely varying workloads + based on the nature of the client request. In particular, + throughput-oriented applications vary widely in the amount of + data that must be transported to satisfy the request. The + responsiveness metric for throughput-oriented applications is + kilobits per second. + + Streaming-Oriented applications deliver data at a constant + metered rate of speed regardless of the responsiveness of the + networking and computing infrastructure. This constant rate of + speed is generally specified to be below (sometimes well + below) the nominal capability of the infrastructure. However, + when the infrastructures cannot deliver data at this speed, + interruption of service or degradation of service can + result. The responsiveness metric for streaming-oriented + applications is the ratio of time that the service is degraded + or interrupted to the total service time. This metric is + measured in parts per million. + + Note that for some applications, measuring more than one + responsiveness type may be interesting. For agents that wish + + + + to support more than one measurement for a application, they + will populate this table with multiple entries for that + application, one for each type." + ::= { apmAppDirEntry 2 } + +apmAppDirConfig OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes and configures support for application + performance measurement for this application. + + If the value of this object is on(2), the agent supports + measurement of application performance metrics for this + application and is configured to measure such metrics for all + APM MIB functions and all interfaces. If the value of this + object is off(1), the agent supports measurement of + application performance for this application but is configured + to not measure these metrics for any APM MIB functions or + interfaces. Whenever this value changes from on(2) to off(1), + the agent shall delete all related entries in all tables in + this MIB Module. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 3 } + +apmAppDirResponsivenessBoundary1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket1 and bucket 2. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 4 } + +apmAppDirResponsivenessBoundary2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket2 and bucket 3. If this + + + + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 5 } + +apmAppDirResponsivenessBoundary3 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket3 and bucket 4. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 6 } + +apmAppDirResponsivenessBoundary4 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket4 and bucket 5. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 7 } + +apmAppDirResponsivenessBoundary5 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket5 and bucket 6. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 8 } + +apmAppDirResponsivenessBoundary6 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket6 and bucket 7. If this + + + + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 9 } + +-- Scalars related to the Application Directory table + +apmBucketBoundaryLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime the last time that any bucket boundary + in any appDirEntry was changed. This object can help to + determine if two managers are both trying to enforce different + configurations of this table." + ::= { apmMibObjects 2 } + +apmAppDirID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows managers to avoid downloading application + directory information when the directory is set to a known + (usually fixed) configuration. + + If the value of this object isn't 0.0, it signifies + that the entire contents of the apmAppDirTable, + apmHttpFilterTable, apmUserDefinedAppTable and + protocolDirTable are equal to a known state identified + by the value of this object. If a manager recognizes this + value as identifying a directory configuration it has a local + copy of, it may use this local copy rather than downloading + these tables. Note that it may have downloaded this local copy + (and the ID) from another agent and used this copy for all + other agents that advertised the same ID. + + If an agent recognizes that the entire contents of the + apmAppDirTable, apmHttpFilterTable, + apmUserDefinedAppTable and protocolDirTable are equal to + a known state to which an ID has been assigned, it should set + this object to that ID. + + In many cases when this feature is used, the application + directory information will be in read-only memory and thus the + tables may not be modified via SNMP requests. In the event + + + + that the tables are writable and a modification is made, the + agent is responsible for setting this object to 0.0 if it + cannot determine that the state is equal to a known state. + + An agent is not obligated to recognize and advertise all such + registered states as it may not have knowledge of all states. + Thus, a manager may encounter agents whose DirectoryID value + is 0.0 even though the contents of the directory were equal to + a registered state. + + Note that the contents of those tables includes the + protocolDirLocalIndex and appLocalIndex values. In other + words, these values can't be assigned randomly on each agent, + but must be equal to values that are part of the known + state. While it is possible for a manager to download + application directory details using SNMP and to set the + appropriate directoryID, the manager would need to have some + scheme to ensure consistent values of LocalIndex variables + from agent to agent. Such schemes are outside the scope of + this specification. + + Application directory registrations are unique within an + administrative domain. + + Typically these registrations will be made by an agent + software developer who will set the application directory + tables to a read-only state and assign a DirectoryID to that + state. Thus, all agents running this software would share the + same DirectoryID. As the application directory might change + from one software release to the next, the developer may + register different DirectoryID's for each software release. + + A customer could also create a site-wide application directory + configuration and assign a DirectoryID to that configuration + as long as consistent values of LocalIndex variables can be + ensured. + + The value of this object must persist across reboots." + ::= { apmMibObjects 3 } + +-- APM HTTP Filter Table + +-- The HTTP Filter Table creates virtual applications which measure the +-- performance of certain web pages or sets of web pages. Some +-- circumstances where this is particularly useful are: +-- +-- - An Intranet or ASP scenario where a business application is +-- running on one or more web pages or scripts. + + + +-- (i.e., /expense/submit.cgi?employeeID=3426&...) +-- - A web-hosting scenario where one wants to measure the +-- service level for a particular customer +-- - An e-commerce scenario where the performance of certain +-- pages needs to be monitored more closely. +-- (i.e., shopping cart, shipping, credit card authorization) + +apmHttpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmHttpFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that creates virtual applications which measure the + performance of certain web pages or sets of web pages. + + When an entry is added to this table, the agent will + automatically create one or more entries in the + apmAppDirTable (one for each responsivenessType it is + capable of measuring). + + Note that when entries exist in this table some HTTP + transactions will be summarized twice: in applications + represented here as well as the HTTP application. If entries + in this table overlap, these transactions may be summarized + additional times. + + The contents of this table affect all reports and exceptions + generated by this agent. Accordingly, modification of this + table should be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this table - it + should reflect the preferences of the site administrator, not + the software author." + ::= { apmMibObjects 4 } + +apmHttpFilterEntry OBJECT-TYPE + SYNTAX ApmHttpFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A virtual application which measure the performance of certain + web pages or sets of web pages." + INDEX { apmHttpFilterIndex } + ::= { apmHttpFilterTable 1 } + +ApmHttpFilterEntry ::= SEQUENCE { + apmHttpFilterIndex Unsigned32, + apmHttpFilterAppLocalIndex AppLocalIndex, + + + + apmHttpFilterServerProtocol Unsigned32, + apmHttpFilterServerAddress ProtocolDirNetworkAddress, + apmHttpFilterURLPath OCTET STRING, + apmHttpFilterMatchType INTEGER, + apmHttpFilterOwner OwnerString, + apmHttpFilterStorageType StorageType, + apmHttpFilterRowStatus RowStatus +} + +apmHttpFilterIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + apmHttpFilterTable." + ::= { apmHttpFilterEntry 1 } + +apmHttpFilterAppLocalIndex OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AppLocalIndex that represents HTTP transactions + that match this entry. + + This object is read-only. A value is created by the agent from + an unused AppLocalIndex value when this apmHttpFilterEntry is + created." + ::= { apmHttpFilterEntry 2 } + +apmHttpFilterServerProtocol OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the network level protocol + of the apmHttpFilterServerAddress." + ::= { apmHttpFilterEntry 3 } + +apmHttpFilterServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry will only represent transactions coming from the + network address specified in this object. + + + + + This is represented as an octet string with + specific semantics and length as identified + by the associated apmHttpFilterServerProtocol object. + + If this object is the zero-length string, then this entry will + match one of the addresses represented by the 'host' component + of the associated apmHttpFilterURLPath object, where the + format if a URL [9] is + http://:/?." + ::= { apmHttpFilterEntry 4 } + +apmHttpFilterURLPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry will only represent HTTP transactions + where the URL path component in the request matches this + value. This value represents the requested path regardless of + any substitution that the server might perform. + + Prior to the matching, the URL is stripped of any server + address or DNS name and consists solely of the path name on + that server. + + If the length of this object is zero, then this entry will + match if the associated apmHttpFilterServerAddress match. If + the length of that object is also zero, then this entry will + match nothing. + + The value of the associated apmHttpFilterMatchType dictates + the type of matching that will be attempted." + ::= { apmHttpFilterEntry 5 } + +apmHttpFilterMatchType OBJECT-TYPE + SYNTAX INTEGER { + exact(1), + stripTrailingSlash(2), + prefix(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The matching algorithm used to compare the URL pathname. + + If the value is exact(1), then the pathname component will be + compared with the associated apmHttpFilterURLPath and + will only be associated with this entry if it matches exactly. + + + + If the value is stripTrailingSlash(2), then the pathname + component will be compared with the associated + apmHttpFilterURLPath and will only be associated with this + entry if it matches exactly or if the pathname ends with a '/' + symbol and matches apmHttpFilterURLPath if the '/' symbol is + removed from the pathname. This option exists for those paths + where an optional trailing slash is possible but for which a + prefix match would be too broad. + + If the value is prefix(3), then the pathname component will be + compared with the associated apmHttpFilterURLPath and will + only be associated with this entry if the beginning of the + pathname matches every octet of this value. Octets that extend + beyond the length of this value are ignored." + ::= { apmHttpFilterEntry 6 } + +apmHttpFilterOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { apmHttpFilterEntry 7 } + +apmHttpFilterStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmHttpFilterEntry. If the value of + this object is 'permanent', no objects in this row need to be + writable." + ::= { apmHttpFilterEntry 8 } + +apmHttpFilterRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmHttpFilterEntry. No objects in this row + may be modified while the row's status is 'active'." + ::= { apmHttpFilterEntry 9 } + +apmHttpIgnoreUnregisteredURLs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "When true, APM measurements of HTTP transactions will only + measure transactions relating to URLs that match a filter in + the apmHttpFilterTable. Thus, measurements for the HTTP + application will present aggregated statistics for + URL-matching HTTP transactions and measurements for the HTTP + GET application verb will present aggregated statistics for + URL-matching HTTP GET transactions. + + This will be used in environments that wish to monitor only + targeted URLs and to ignore large volumes of internet web + browsing traffic. + + This object affects all APM reports and exceptions generated + by this agent. Accordingly, modification of this object should + be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this object - + it should reflect the preferences of the site administrator, + not the software author. + + The value of this object must persist across reboots." + ::= { apmMibObjects 5 } + +apmHttp4xxIsFailure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When true, this agent will recognize HTTP errors in the range + of 400 through 499 and will treat them as unavailable + transactions. When false or when this object isn't supported, + they will be treated as successful transactions. + + This object allows such error pages to be tracked at the + possible expense of having user typos treated as poor service + on the part of the web server. + + This object affects all reports and exceptions generated by + this agent. Accordingly, modification of this object should be + performed by a manager acting in the role of administrator. In + particular, management software should not require or enforce + particular configuration of this object - it should reflect + the preferences of the site administrator, not the software + author. + + The value of this object must persist across reboots." + ::= { apmMibObjects 6 } + + + +-- The APM User-Defined Application Table + +-- Many application protocols will never be registered with a +-- standards body (and thus included in a protocol directory standard) +-- because they are custom, in-house or proprietary +-- applications. Nevertheless, implementation strategies exist for +-- monitoring the end-user experience of these applications. +-- +-- This read-only table provides a means for the agent to advertise +-- which user-defined applications it is monitoring and to associate +-- each with an AppLocalIndex value. It is an implementation-dependent +-- matter as to how the agent learns how to monitor these +-- applications. + +apmUserDefinedAppTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmUserDefinedAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that advertises user-defined applications that the + agent is measuring. + + The agent will automatically create one or more entries in the + apmAppDirTable (one for each responsivenessType it is + capable of measuring) for each entry in this table. + + Note that when entries exist in this table some + transactions can be summarized more than once if there is + overlap between applications defined here and applications + defined in the protocol directory or in the httpFilter table." + ::= { apmMibObjects 7 } + +apmUserDefinedAppEntry OBJECT-TYPE + SYNTAX ApmUserDefinedAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A user-defined application that the agent is measuring, along + with its AppLocalIndex assignment. + + The apmAppDirAppLocalIndex value in the index identifies + the agent-assigned AppLocalIndex value for this user-defined + application." + INDEX { apmAppDirAppLocalIndex } + ::= { apmUserDefinedAppTable 1 } + +ApmUserDefinedAppEntry ::= SEQUENCE { + apmUserDefinedAppParentIndex Unsigned32, + + + + apmUserDefinedAppApplication SnmpAdminString +} + +apmUserDefinedAppParentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the highest-layer + protocol defined in the protocolDirTable that this + application is a child of." + ::= { apmUserDefinedAppEntry 1 } + +apmUserDefinedAppApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A human readable descriptive tag for this application." + ::= { apmUserDefinedAppEntry 2 } + +-- The APM Name Table + +apmNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A client machine may have multiple addresses during a period + of monitoring. The apmNameTable assigns a long-lived + identifier to a client and records what addresses were + assigned to that client for periods of time. Various + implementation techniques exist for tracking this mapping but + if an agent is unable to track client address mappings, it may + map client identifiers to client addresses rather than to + distinct client machines. + + A particular apmNameClientID should be a constant attribute of + a particular client. When available, the agent may also record + the machine name and/or user name which may be valuable for + displaying to humans. The apmNameMachineName and + apmNameUserName are relatively constant, changing only if + these attributes actually change on the client. + + The agent will store a historical log of these entries, aging + out old entries as the log becomes too large. Since this table + contains information vital to the interpretation of other + tables (e.g., the apmReportTable), the agent should ensure that + + + + the log doesn't age out entries that would be referenced by + data in those tables. + + Note that an entry for a clientID is active from its + StartTime until the StartTime of another entry (for the same + clientID) that supersedes it, or 'now' if none supersede + it. Therefore, if a clientID only has a single entry, it is by + definition very new and should never be aged out. No entry for + a clientID should be aged out unless it has been updated by a + new entry for the client (i.e., with an updated address) and + only if the new entry is 'old' enough. + + To determine how old is old enough, compute the maximum value + of Interval * (NumReports + 1) of all entries in the + apmReportControlTable (the '+ 1' is to allow a reasonable + period of time for the report to be downloaded). Then take the + larger of this value and the age in seconds of the oldest + entry in the current transaction table. If an entry for a + clientID is superseded by another entry whose StartTime is + more than this many seconds ago, then the older entry may be + deleted." + ::= { apmMibObjects 8 } + +apmNameEntry OBJECT-TYPE + SYNTAX ApmNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the APM name table. An entry exists for each + period of time that a client has been associated with a + particular address. + + The protocolDirLocalIndex value in the index identifies + the network layer protocol for the ClientAddress for this + entry. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmNameClientID, + protocolDirLocalIndex, apmNameClientAddress, + apmNameMappingStartTime } + ::= { apmNameTable 1 } + +ApmNameEntry ::= SEQUENCE { + apmNameClientID RmonClientID, + apmNameClientAddress ProtocolDirNetworkAddress, + + + + apmNameMappingStartTime DateAndTime, + apmNameMachineName SnmpAdminString, + apmNameUserName SnmpAdminString +} + +apmNameClientID OBJECT-TYPE + SYNTAX RmonClientID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique ID assigned to the machine represented by this + mapping. This ID is assigned by the agent using an + implementation-specific algorithm." + ::= { apmNameEntry 1 } + +apmNameClientAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network client address for this client when this mapping + was active. + + This is represented as an octet string with specific semantics + and length as identified by the protocolDirLocalIndex + component of the index. This object may not be the zero length + string. + + Since this object is an index variable, it is encoded in the + index according to the index encoding rules. For example, if + the protocolDirLocalIndex component of the index indicates an + encapsulation of ip, this object is encoded as a length octet + of 4, followed by the 4 octets of the ip address, in network + byte order. Care should be taken to avoid values of this + object that, in conjunction with the other index variables, + would result in an index longer than SNMP's maximum of 128 + subidentifiers." + ::= { apmNameEntry 2 } + +apmNameMappingStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time that the agent first discovered this mapping + as active." + ::= { apmNameEntry 3 } + + + + +apmNameMachineName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of the client machine. + + If the client has no machine name or the agent is + unable to learn the machine name, this object will be + a zero-length string." + ::= { apmNameEntry 4 } + +apmNameUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of a human user using the client + machine. If more than one user name are available + simultaneously, it is an implementation-dependent matter as to + which is used here. However, if the user name changes, this + object should change to reflect that change. + + Non-human user names like 'root' or 'administrator' aren't + intended as values for this object. If the client has no + recorded user name or the agent is unable to learn a user + name, this object will be a zero-length string." + ::= { apmNameEntry 5 } + +-- The APM Report Group + +apmReportControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmReportControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Parameters that control the creation of a set of reports that + aggregate application performance." + ::= { apmMibObjects 9 } + +apmReportControlEntry OBJECT-TYPE + SYNTAX ApmReportControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmReportControlTable. + + An example of the indexing of this table is + + + + apmReportControlInterval.3" + INDEX { apmReportControlIndex } + ::= { apmReportControlTable 1 } + +ApmReportControlEntry ::= SEQUENCE { + apmReportControlIndex Unsigned32, + apmReportControlDataSource DataSourceOrZero, + apmReportControlAggregationType TransactionAggregationType, + apmReportControlInterval Unsigned32, + apmReportControlRequestedSize Unsigned32, + apmReportControlGrantedSize Unsigned32, + apmReportControlRequestedReports Unsigned32, + apmReportControlGrantedReports Unsigned32, + apmReportControlStartTime TimeStamp, + apmReportControlReportNumber Unsigned32, + apmReportControlDeniedInserts Counter32, + apmReportControlDroppedFrames Counter32, + apmReportControlOwner OwnerString, + apmReportControlStorageType StorageType, + apmReportControlStatus RowStatus +} + + +apmReportControlIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + apmReportControlTable. Each such entry defines a unique + report whose results are placed in the apmReportTable on + behalf of this apmReportControlEntry." + ::= { apmReportControlEntry 1 } + +apmReportControlDataSource OBJECT-TYPE + SYNTAX DataSourceOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for APM Reports generated on + behalf of this apmReportControlEntry. + + If the measurement is being performed by a probe, this should + be set to interface or port where data was received for + analysis. If the measurement isn't being performed by a probe, + this should be set to the primary interface over which the + measurement is being performed. If the measurement isn't being + performed by a probe and there is no primary interface or this + + + + information isn't known, this object should be set to 0.0. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + ::= { apmReportControlEntry 2 } + +apmReportControlAggregationType OBJECT-TYPE + SYNTAX TransactionAggregationType + -- INTEGER { + -- flows(1), + -- clients(2), + -- servers(3), + -- applications(4) + -- } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of aggregation being performed for this set of + reports. + + The metrics for a single transaction are the responsiveness of + the transaction and whether the transaction succeeded (a + boolean). When such metrics are aggregated in this MIB Module, + these metrics are replaced by averages and distributions of + responsiveness and availability. The metrics describing + aggregates are constant no matter which type of aggregation is + being performed. These metrics may be found in the + apmReportTable. + + The flows(1) aggregation is the simplest. All transactions + that share common application/server/client 3-tuples are + aggregated together, resulting in a set of metrics for all + such unique 3-tuples. + + The clients(2) aggregation results in somewhat more + aggregation (i.e., fewer resulting records). All transactions + that share common application/client tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The servers(3) aggregation usually results in still more + aggregation (i.e., fewer resulting records). All transactions + that share common application/server tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The applications(4) aggregation results in the most + aggregation (i.e., the fewest resulting records). All + + + + transactions that share a common application are aggregated + together, resulting in a set of metrics for all such unique + applications. + + Note that it is not meaningful to aggregate applications, as + different applications have widely varying characteristics. + As a result, this set of aggregations is complete. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + ::= { apmReportControlEntry 3 } + +apmReportControlInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which data is accumulated before + being aggregated into a report in the apmReportTable. All + reports with the same apmReportControlIndex will be based on + the same interval. This object must be greater than zero. + + Many users desire that these reports be synchronized to within + seconds of the beginning of the hour because the results may + be correlated more meaningfully to business behavior and so + that data from multiple agents is aggregated over the same + time periods. Thus management software may take extra effort + to synchronize reports to the beginning of the hour and to one + another. However, the agent must not allow reports to 'drift' + over time as they will quickly become unsynchronized. In + particular, if there is any fixed processing delay between + reports, the reports should deduct this time from the interval + so that reports don't drift. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + DEFVAL { 3600 } + ::= { apmReportControlEntry 4 } + +apmReportControlRequestedSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of entries requested to be allocated for each + report generated on behalf of this entry." + ::= { apmReportControlEntry 5 } + + + +apmReportControlGrantedSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries per report the agent has allocated + based on the requested amount in apmReportControlRequestedSize. + Since multiple reports are saved, the total number of entries + allocated will be this number multiplied by the value of + apmReportControlGrantedReports, or 1 if that object doesn't + exist. + + When the associated apmReportControlRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. When + considering resources available, the agent must consider its + ability to allocate this many entries for all reports. + + Note that while the actual number of entries stored in the + reports may fluctuate due to changing conditions, the agent + must continue to have storage available to satisfy the full + report size for all reports when necessary. Further, the agent + must not lower this value except as a result of a set to the + associated apmReportControlRequestedSize object." + ::= { apmReportControlEntry 6 } + +apmReportControlRequestedReports OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of saved reports requested to be allocated on + behalf of this entry." + ::= { apmReportControlEntry 7 } + +apmReportControlGrantedReports OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of saved reports the agent has allocated + based on the requested amount in + apmReportControlRequestedReports. Since each report can have + many entries, the total number of entries allocated will be + this number multiplied by the value of + apmReportControlGrantedSize, or 1 if that object doesn't + exist. + + + + When the associated apmReportControlRequestedReports object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. When + considering resources available, the agent must consider its + ability to allocate this many reports each with the number of + entries represented by apmReportControlGrantedSize, or 1 if + that object doesn't exist. + + Note that while the storage required for each report may + fluctuate due to changing conditions, the agent must continue + to have storage available to satisfy the full report size for + all reports when necessary. Further, the agent must not lower + this value except as a result of a set to the associated + apmReportControlRequestedSize object." + ::= { apmReportControlEntry 8 } + +apmReportControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the system began processing the + report in progress. Note that the report in progress is not + available. + + This object may be used by the management station to figure + out the start time for all previous reports saved for this + apmReportControlEntry, as reports are started at fixed + intervals." + ::= { apmReportControlEntry 9 } + +apmReportControlReportNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of the report in progress. When an + apmReportControlEntry is activated, the first report will be + numbered one." + ::= { apmReportControlEntry 10 } + +apmReportControlDeniedInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failed attempts to add an entry to reports for + + + + this apmReportControlEntry because the number of entries + would have exceeded apmReportControlGrantedSize. + + This number is valuable in determining if enough entries have + been allocated for reports in light of fluctuating network + usage. Note that since an entry that is denied will often be + attempted again, this number will not predict the exact number + of additional entries needed, but can be used to understand + the relative magnitude of the problem. + + Also note that there is no ordering specified for the entries + in the report, thus there are no rules for which entries will + be omitted when not enough entries are available. As a + consequence, the agent is not required to delete 'least + valuable' entries first." + ::= { apmReportControlEntry 11 } + +apmReportControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the agent + and therefore not accounted for in the *StatsDropEvents, but + for which the agent chose not to count for this entry for + whatever reason. Most often, this event occurs when the agent + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + This counter is only relevant if this apm report is based on + a data source whose collection methodology is based on + analyzing network traffic. + + Note that if the apmReportTables are inactive because no + applications are enabled in the application directory, this + value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { apmReportControlEntry 12 } + +apmReportControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { apmReportControlEntry 13 } + +apmReportControlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmReportControlEntry. If the value + of this object is 'permanent', no objects in this row need to + be writable." + ::= { apmReportControlEntry 14 } + +apmReportControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmReportControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. The only + objects in the entry that may be modified while the entry is + in the active state are apmReportControlRequestedSize and + apmReportControlRequestedReports. + + If this object is not equal to active(1), all + associated entries in the apmReportTable shall be deleted + by the agent." + ::= { apmReportControlEntry 15 } + +-- The APM Report Table + +apmReportTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmReportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data resulting from aggregated APM reports. Consult the + definition of apmReportControlAggregationType for the + definition of the various types of aggregations." + ::= { apmMibObjects 10 } + +apmReportEntry OBJECT-TYPE + SYNTAX ApmReportEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the apmReportTable. + The apmReportControlIndex value in the index identifies the + apmReportControlEntry on whose behalf this entry was created. + The apmReportIndex value in the index identifies which report + (in the series of reports) this entry is a part of. + The apmAppDirAppLocalIndex value in the index identifies + the common application of the transactions aggregated in this + entry. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric reported by + this entry and uniquely identifies this entry when more + than one responsiveness metric is measured for a flow. + Entries will only exist in this table for those + combinations of AppLocalIndex and ResponsivenessType + that are configured 'on(1)'. + The protocolDirLocalIndex value in the index identifies + the network layer protocol of the apmReportServerAddress. + When the associated apmReportControlAggregationType value is + equal to applications(4) or clients(2), this + protocolDirLocalIndex value will equal 0. + The apmReportServerAddress value in the index identifies the + network layer address of the server in transactions aggregated + in this entry. + The apmNameClientID value in the index identifies the + client in transactions aggregated in this entry. If the + associated apmReportControlAggregationType is equal to + applications(4) or servers(3), then this protocolDirLocalIndex + value will equal 0. + + An example of the indexing of this entry is + apmReportTransactionCount.3.15.3.1.8.4.192.168.1.2.3232235788 + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmReportControlIndex, apmReportIndex, + apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, + protocolDirLocalIndex, apmReportServerAddress, + apmNameClientID } + ::= { apmReportTable 1 } + +ApmReportEntry ::= SEQUENCE { + apmReportIndex Unsigned32, + apmReportServerAddress ProtocolDirNetworkAddress, + + + + apmReportTransactionCount Unsigned32, + apmReportSuccessfulTransactions Unsigned32, + apmReportResponsivenessMean Unsigned32, + apmReportResponsivenessMin Unsigned32, + apmReportResponsivenessMax Unsigned32, + apmReportResponsivenessB1 Unsigned32, + apmReportResponsivenessB2 Unsigned32, + apmReportResponsivenessB3 Unsigned32, + apmReportResponsivenessB4 Unsigned32, + apmReportResponsivenessB5 Unsigned32, + apmReportResponsivenessB6 Unsigned32, + apmReportResponsivenessB7 Unsigned32 +} + +apmReportIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of apmReportControlReportNumber for the report to + which this entry belongs." + ::= { apmReportEntry 1 } + +apmReportServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network server address for this apmReportEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + Since this object is an index variable, it is encoded in the + index according to the index encoding rules. For example, if + the protocolDirLocalIndex indicates an encapsulation of ip, + this object is encoded as a length octet of 4, followed by the + 4 octets of the ip address, in network byte order. Care + should be taken to avoid values of this object that, in + conjunction with the other index variables, would result in an + index longer than SNMP's maximum of 128 subidentifiers. + + If the associated apmReportControlAggregationType is equal to + applications(4) or clients(2), then this object will be a null + string and will be encoded simply as a length octet of 0." + ::= { apmReportEntry 2 } + + + + +apmReportTransactionCount OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transactions aggregated into this record." + ::= { apmReportEntry 3 } + +apmReportSuccessfulTransactions OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful transactions aggregated into + this record." + ::= { apmReportEntry 4 } + +apmReportResponsivenessMean OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The arithmetic mean of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 5 } + +apmReportResponsivenessMin OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 6 } + +apmReportResponsivenessMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 7 } + +-- Note that when updating a report entry, a transaction will not be +-- counted in more than 1 bucket in an entry. It will be counted in +-- the first bucket that matches, starting with Bucket 1 (B1). Note +-- that if a transaction matches 2 application types, it will update + + + +-- one bucket in each of 2 entries in this table. + +apmReportResponsivenessB1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness was less than boundary1 value for + this application." + ::= { apmReportEntry 8 } + +apmReportResponsivenessB2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Bucket 1 and was + greater than or equal to the boundary1 value for this + application and less than the boundary2 value for this + application." + ::= { apmReportEntry 9 } + +apmReportResponsivenessB3 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Bucket 1 or 2 + and as greater than or equal to the boundary2 value for this + application and less than the boundary3 value for this + application." + ::= { apmReportEntry 10 } + +apmReportResponsivenessB4 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 3 and was greater than or equal to the boundary3 value + for this application and less than the boundary4 value for + this application." + ::= { apmReportEntry 11 } + + + + +apmReportResponsivenessB5 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 4 and was greater than or equal to the boundary4 value + for this application and less than the boundary5 value for + this application." + ::= { apmReportEntry 12 } + +apmReportResponsivenessB6 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 5 and was greater than or equal to the + boundary5 value for this application and less than the + boundary6 value for this application." + ::= { apmReportEntry 13 } + +apmReportResponsivenessB7 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 6 and was greater than or equal to the boundary6 value + for this application." + ::= { apmReportEntry 14 } + +-- APM Transaction Table + +apmTransactionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmTransactionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transactions that are currently running + or have recently finished." + ::= { apmMibObjects 11 } + +apmTransactionEntry OBJECT-TYPE + SYNTAX ApmTransactionEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmTransactionTable. + + The apmAppDirAppLocalIndex value in the index identifies + the application of the transaction represented by this entry. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric reported by + this entry and uniquely identifies this entry when more + than one responsiveness metric is measured for a flow. + Entries will only exist in this table for those + combinations of AppLocalIndex and ResponsivenessType + that are configured 'on(1)'. + The protocolDirLocalIndex value in the index identifies + the network layer protocol of the apmTransactionServerAddress. + The apmTransactionServerAddress value in the index identifies + the network layer address of the server in the transaction + represented by this entry. + The apmNameClientID value in the index identifies the + client in the transaction represented by this entry. + + An example of the indexing of this entry is + apmTransactionCount.3.1.8.4.192.168.1.2.3232235788.2987 + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, + protocolDirLocalIndex, apmTransactionServerAddress, + apmNameClientID, apmTransactionID } + ::= { apmTransactionTable 1 } + +ApmTransactionEntry ::= SEQUENCE { + apmTransactionServerAddress ProtocolDirNetworkAddress, + apmTransactionID Unsigned32, + apmTransactionResponsiveness Unsigned32, + apmTransactionAge TimeInterval, + apmTransactionSuccess TruthValue +} + +apmTransactionServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The network server address for this apmTransactionEntry. + + This is represented as an octet string with specific semantics + and length as identified by the protocolDirLocalIndex + component of the index. This object may not be the zero length + string. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length octet + of 4, followed by the 4 octets of the ip address, in network + byte order. Care should be taken to avoid values of this + object that, in conjunction with the other index variables, + would result in an index longer than SNMP's maximum of 128 + subidentifiers." + ::= { apmTransactionEntry 1 } + +apmTransactionID OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for this transaction amongst other + transactions sharing the same application layer protocol and + server and client addresses. Implementations may choose to use + the value of the client's source port, when possible." + ::= { apmTransactionEntry 2 } + +apmTransactionResponsiveness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the responsiveness metric for this + transaction. If this transaction has completed, the final + value of the metric will be available. + + Note that this value may change over the lifetime of the + transaction and it is the final value of this metric that is + recorded as the responsiveness of the transaction for use in + other APM MIB functions." + ::= { apmTransactionEntry 3 } + +apmTransactionAge OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this transaction is still executing, this value shall be + + + + the length of time since it was started. If it has completed, + this value shall be the length of time it was executing." + ::= { apmTransactionEntry 4 } + +apmTransactionSuccess OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The success of this transaction up to this time. Once a + transaction has been marked as failed, it cannot move back + into the successful state." + ::= { apmTransactionEntry 5 } + +apmTransactionsRequestedHistorySize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of completed transactions desired to be + retained in the apmTransactionTable. If the agent doesn't have + enough resources to retain this many, it will retain as many as + possible. Regardless of this value, the agent must attempt to + keep records for all current transactions it is monitoring. + + The value of this object must persist across reboots." + ::= { apmMibObjects 12 } + +-- The APM Exception table +-- The APM Exception Table creates filters so that a management +-- station can get immediate notification of a transaction that has +-- had poor availability or responsiveness. +-- +-- This function is particularly helpful in unaggregated situations +-- where the numbers of agents is relatively high and the transaction +-- rate per agent is relatively low (such as agents for desktops or +-- dedicated to small workgroups). Polling agents in such an +-- environment would either cause scalability problems (high rate) or +-- lead to long notification delays (low rate). + + +apmExceptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table creates filters so that a management station can + get immediate notification of a transaction that has had poor + + + + availability or responsiveness. + + Each apmExceptionEntry is associated with a particular type of + transaction and is applied to all transactions of that + type. Multiple apmExceptionEntries may be associated with a + particular type of transaction. A transaction type is + identified by the value of the apmAppDirAppLocalIndex + component of the index. + + Because the quality of a transaction is not known until it is + completed, these thresholds are only applied after the + transaction has completed." + ::= { apmMibObjects 13 } + +apmExceptionEntry OBJECT-TYPE + SYNTAX ApmExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmExceptionTable. + + The apmAppDirAppLocalIndex value in the index identifies + the application this entry will monitor. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric this entry will + monitor." + + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, apmExceptionIndex } + ::= { apmExceptionTable 1 } + +ApmExceptionEntry ::= SEQUENCE { + apmExceptionIndex Unsigned32, + apmExceptionResponsivenessComparison INTEGER, + apmExceptionResponsivenessThreshold Unsigned32, + apmExceptionUnsuccessfulException INTEGER, + apmExceptionResponsivenessEvents Counter32, + apmExceptionUnsuccessfulEvents Counter32, + apmExceptionOwner OwnerString, + apmExceptionStorageType StorageType, + apmExceptionStatus RowStatus +} + +apmExceptionIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An index that uniquely identifies an entry in the + apmExceptionTable amongst other entries with equivalent index + values for apmAppDirAppLocalIndex and + apmAppDirResponsivenessType. Each such entry sets up + thresholds for a particular measurement of a particular + application." + ::= { apmExceptionEntry 1 } + +apmExceptionResponsivenessComparison OBJECT-TYPE + SYNTAX INTEGER { + none(1), + greater(2), + less(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is greater(2) or less(3), the associated + apmExceptionResponsivenessThreshold will be compared to this + value and an exception will be created if the responsiveness + is greater than the threshold (greater(2)) or less than the + threshold (less(3))." + ::= { apmExceptionEntry 2 } + +apmExceptionResponsivenessThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold that responsiveness metrics are compared to." + ::= { apmExceptionEntry 3 } + +apmExceptionUnsuccessfulException OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is on(2), an exception will be created if a + transaction of the associated type is unsuccessful." + ::= { apmExceptionEntry 4 } + +apmExceptionResponsivenessEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The total number of responsiveness exceptions generated. This + counter will be incremented even if no notification was sent + due to notifications not being configured or due to exceeding + the apmNotificationMaxRate value." + ::= { apmExceptionEntry 5 } + +apmExceptionUnsuccessfulEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful exceptions generated. This + counter will be incremented even if no notification was sent + due to notifications not being configured or due to exceeding + the apmNotificationMaxRate value." + ::= { apmExceptionEntry 6 } + +apmExceptionOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { apmExceptionEntry 7 } + +apmExceptionStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmReportControlEntry. If the value + of this object is 'permanent', no objects in this row need to + be writable." + ::= { apmExceptionEntry 8 } + +apmExceptionStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmExceptionEntry. The only objects in the + entry that may be modified while the entry is in the active + state are apmExceptionResponsivenessComparison, + apmExceptionResponsivenessThreshold and + apmExceptionUnsuccessfulException." + ::= { apmExceptionEntry 9 } + + + +apmThroughputExceptionMinTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Because the responsiveness for throughput-oriented + transactions is divided by the elapsed time, it can be very + sensitive to short-term performance variations for + transactions that take a short period of time. For example, + when downloading a very short file, a single dropped packet + could double or triple the total response time. + + Further, throughput is usually examined for applications that + transfer a lot of data, and when doing so it is helpful to + conceptualize transaction costs that are proportional to the + amount of data separately from those costs that are relatively + fixed (i.e., independent of the amount of data). For very + short transactions, these fixed transaction costs (handshake, + setup time, authentication, round-trip time) may dominate the + total response time for the transaction, resulting in + throughput measurements that aren't really proportional to the + network's, server's and client's combined data throughput + capability. + + This object controls the minimum number of seconds that an + throughput-based transaction must exceed before an exception + can be generated for it. If this object is set to zero, then + all throughput-based transactions are candidates for + exceptions. + + The value of this object must persist across reboots." + DEFVAL { 10 } + ::= { apmMibObjects 14 } + +apmNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of notifications that can be generated + from this agent by the apmExceptionTable in any 60 second + period. + + The value of this object must persist across reboots." + DEFVAL { 1 } + ::= { apmMibObjects 15 } + + + + +-- APM Notifications + +apmNotifications OBJECT IDENTIFIER ::= { apm 0 } + +apmTransactionResponsivenessAlarm NOTIFICATION-TYPE + OBJECTS { apmExceptionResponsivenessThreshold, + apmTransactionResponsiveness } + STATUS current + DESCRIPTION + "Notification sent when a transaction exceeds a threshold + defined in the apmException table. The index of the + included apmExceptionResponsivenessThreshold object identifies + the apmExceptionEntry that specified the threshold. The + apmTransactionResponsiveness variable identifies the actual + transaction and its responsiveness. + + Agent implementors are urged to include additional data + objects in the alarm that may explain the reason for the + alarm. It is helpful to include such data in the alarm because + it describes the situation at the time the alarm was + generated, where polls after the fact may not provide + meaningful information. Examples of such information are CPU + load, memory utilization, network utilization, and transaction + statistics." + ::= { apmNotifications 1 } + +apmTransactionUnsuccessfulAlarm NOTIFICATION-TYPE + OBJECTS { apmExceptionResponsivenessThreshold } + STATUS current + DESCRIPTION + "Notification sent when a transaction is unsuccessful. + The index of the included apmExceptionResponsivenessThreshold + object identifies both the type of the transaction that caused + this notification as well as the apmExceptionEntry that + specified the threshold. + + Agent implementors are urged to include additional data + objects in the alarm that may explain the reason for the + alarm. It is helpful to include such data in the alarm because + it describes the situation at the time the alarm was + generated, where polls after the fact may not provide + meaningful information. Examples of such information are CPU + load, memory utilization, network utilization, and transaction + statistics." + ::= { apmNotifications 2 } + +apmCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Describes the requirements for conformance to + the APM MIB" + MODULE -- this module + MANDATORY-GROUPS { apmAppDirGroup, apmReportGroup } + + GROUP apmUserDefinedApplicationsGroup + DESCRIPTION + "Implementation of the apmUserDefinedApplicationsGroup + is optional." + + GROUP apmTransactionGroup + DESCRIPTION + "Implementation of the apmTransactionGroup is optional." + + GROUP apmExceptionGroup + DESCRIPTION + "Implementation of the apmExceptionGroup is optional." + + GROUP apmNotificationGroup + DESCRIPTION + "Implementation of the apmNotificationGroup is optional." + + ::= { apmCompliances 1 } + +apmAppDirGroup OBJECT-GROUP + OBJECTS { apmAppDirConfig, + apmAppDirResponsivenessBoundary1, + apmAppDirResponsivenessBoundary2, + apmAppDirResponsivenessBoundary3, + apmAppDirResponsivenessBoundary4, + apmAppDirResponsivenessBoundary5, + apmAppDirResponsivenessBoundary6, + apmBucketBoundaryLastChange, apmAppDirID, + apmNameMachineName, apmNameUserName } + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application verbs." + ::= { apmGroups 1 } + +apmUserDefinedApplicationsGroup OBJECT-GROUP + OBJECTS { apmHttpFilterAppLocalIndex, + apmHttpFilterServerProtocol, + apmHttpFilterServerAddress, apmHttpFilterURLPath, + apmHttpFilterMatchType, apmHttpFilterOwner, + apmHttpFilterStorageType, apmHttpFilterRowStatus, + apmHttpIgnoreUnregisteredURLs, apmHttp4xxIsFailure, + apmUserDefinedAppParentIndex, + + + + apmUserDefinedAppApplication } + STATUS current + DESCRIPTION + "Objects used for creating and managing user-defined + applications." + ::= { apmGroups 2 } + +apmReportGroup OBJECT-GROUP + OBJECTS { apmReportControlDataSource, + apmReportControlAggregationType, + apmReportControlInterval, + apmReportControlRequestedSize, + apmReportControlGrantedSize, + apmReportControlRequestedReports, + apmReportControlGrantedReports, + apmReportControlStartTime, + apmReportControlReportNumber, + apmReportControlDeniedInserts, + apmReportControlDroppedFrames, + apmReportControlOwner, + apmReportControlStorageType, + apmReportControlStatus, + apmReportTransactionCount, + apmReportSuccessfulTransactions, + apmReportResponsivenessMean, + apmReportResponsivenessMin, + apmReportResponsivenessMax, + apmReportResponsivenessB1, + apmReportResponsivenessB2, + apmReportResponsivenessB3, + apmReportResponsivenessB4, + apmReportResponsivenessB5, + apmReportResponsivenessB6, + apmReportResponsivenessB7 } + STATUS current + DESCRIPTION + "The apm report group controls the creation and retrieval of + reports that aggregate application performance." + ::= { apmGroups 3 } + +apmTransactionGroup OBJECT-GROUP + OBJECTS { apmTransactionResponsiveness, + apmTransactionAge, apmTransactionSuccess, + apmTransactionsRequestedHistorySize } + STATUS current + DESCRIPTION + "The apm transaction group contains statistics for + individual transactions." + + + + ::= { apmGroups 4 } + +apmExceptionGroup OBJECT-GROUP + OBJECTS { apmExceptionResponsivenessComparison, + apmExceptionResponsivenessThreshold, + apmExceptionUnsuccessfulException, + apmExceptionResponsivenessEvents, + apmExceptionUnsuccessfulEvents, + apmExceptionOwner, apmExceptionStorageType, + apmExceptionStatus, apmThroughputExceptionMinTime, + apmNotificationMaxRate } + STATUS current + DESCRIPTION + "The apm exception group causes notifications to be sent + whenever transactions are detected that had poor availability + or responsiveness." + ::= { apmGroups 5 } + +apmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { apmTransactionResponsivenessAlarm, + apmTransactionUnsuccessfulAlarm } + STATUS current + DESCRIPTION + "Notifications sent by an APM MIB agent." + ::= { apmGroups 6 } + +END diff --git a/mibs/ietf/APPC-MIB b/mibs/ietf/APPC-MIB new file mode 100644 index 0000000..c9f1c4e --- /dev/null +++ b/mibs/ietf/APPC-MIB @@ -0,0 +1,5387 @@ +APPC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, InstancePointer, TEXTUAL-CONVENTION, DateAndTime + FROM SNMPv2-TC + + mib-2, Counter32, Gauge32, Integer32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY + FROM SNMPv2-SMI + + snanauMIB + FROM SNA-NAU-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +appcMIB MODULE-IDENTITY + LAST-UPDATED "9512150000Z" + ORGANIZATION "IETF SNA NAU MIB Working Group" + CONTACT-INFO + + " + Michael Allen + Wall Data Inc. + P.O.Box 1120 + Duval, WA 98019, USA + Tel: 1 206 844 3505 + E-mail: mallen@hq.walldata.com + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Zbigniew Kielczewski + Cisco Systems + 3100 Smoketree Court + Raleigh, NC 27604, USA + Tel: 1 919 871 6326 + E-mail: zbig@cisco.com + William Kwan + Jupiter Technology Inc. + 200 Prospect Street + Waltham, MA 02254, USA + Tel: 1 617 894 9300, x423 + E-mail: billk@jti.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + CNMA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to manage network + devices with APPC capabilities." + +::= { snanauMIB 3 } + +appcObjects OBJECT IDENTIFIER ::= { appcMIB 1 } + appcGlobal OBJECT IDENTIFIER ::= { appcObjects 1 } + appcLu OBJECT IDENTIFIER ::= { appcObjects 2 } + appcTp OBJECT IDENTIFIER ::= { appcObjects 3 } + appcSession OBJECT IDENTIFIER ::= { appcObjects 4 } + appcConversation OBJECT IDENTIFIER ::= { appcObjects 5 } + appcCPIC OBJECT IDENTIFIER ::= { appcObjects 6 } + + +-- ********************************************************************* +-- Objects in this MIB are used to model an SNA device that supports +-- APPC LUs. +-- Following is the overall organization of the MIB. +-- +-- 1. APPC Global Objects - global values, defaults, +-- controls (including CNOS) +-- 2. APPC Defined Lu Tables - Admin and Oper +-- 3. APPC Defined LU Pair Tables - Admin and Oper +-- 4. APPC Mode Tables - Admin and Oper +-- 5. APPC TP Tables - Admin only +-- 6. APPC Session Tables - Active, Stats, History, RTP +-- 7. APPC Conversation Table - Active, History +-- 8. APPC CPIC side info - Admin and Oper +-- ********************************************************************* + +-- ********************************************************************* + +-- Textual Convention + +-- --------------------------------------------------------------------- +SnaSenseData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate their display by a Management Station, sense + data objects in the MIB are represented as DisplayStrings of + size 8. Eight '0' characters indicates that no sense data + identifying an SNA error condition is available." + + SYNTAX DisplayString (SIZE (8)) +-- ********************************************************************* +-- APPC Control Objects +-- --------------------------------------------------------------------- +-- The following objects allow: +-- * the collection of APPC Session information counters +-- to be started and stopped +-- * the collection of APPC Session RSCVs +-- to be started and stopped +-- * the collection of APPC tracing information to be started and +-- stopped +-- +-- These objects are for implementations that wish to provide +-- this level of operational control. This group is +-- conditionally mandatory in the conformance section of the MIB. +-- +-- ********************************************************************* + +-- ********************************************************************* +-- Control Admin +-- These objects contain the desired states for the controls. +-- The actual states are in the Oper objects. +-- ********************************************************************* +appcCntrlAdminGroup OBJECT IDENTIFIER ::= { appcGlobal 1 } + +appcCntrlAdminStat OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of statistics collection: + + notActive collection of counters is not active. + active collection of counters is active. + When this object is set to notActive, all of the entries are + removed from the appcSessStatsTable." + + ::= { appcCntrlAdminGroup 1 } + +appcCntrlAdminRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of RSCV information collection: + notActive collection of route selection control vectors + is not active. + active collection of route selection control vectors + is active." + + ::= { appcCntrlAdminGroup 2 } + +appcCntrlAdminTrace OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of tracing: + + notActive collection of tracing information is not active + active collection of tracing information is active" + + ::= { appcCntrlAdminGroup 3 } + +appcCntrlAdminTraceParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the parameter to be used in conjunction with + activating tracing. The actual content is implementation + dependent." + + ::= { appcCntrlAdminGroup 4 } + +-- ********************************************************************* + +-- Control Oper +-- These objects contain the actual states of the controls. +-- ********************************************************************* +appcCntrlOperGroup OBJECT IDENTIFIER ::= { appcGlobal 2 } + +appcCntrlOperStat OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current collection options in effect: + + notActive collection of counters is not active. + active collection of counters is active. + + Statistical entries are present in the appcSessStatsTable + only when the value of this object is 'active'." + + ::= { appcCntrlOperGroup 1 } + +appcCntrlOperStatTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperStat object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 2 } + +appcCntrlOperRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current collection options in effect: + + notActive collection of route selection control vectors + is not active. + active collection of route selection control vectors + is active." + ::= { appcCntrlOperGroup 3 } + +appcCntrlOperRscvTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperRscv object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 4 } + +appcCntrlOperTrace OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of tracing: + + notActive collection of tracing information is not active. + active collection of tracing information is active." + + ::= { appcCntrlOperGroup 5 } + +appcCntrlOperTraceTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperTrace object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 6 } + +appcCntrlOperTraceParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the parameter used in conjunction with activating + tracing. The actual content is implementation dependent." + + ::= { appcCntrlOperGroup 7 } + +-- ****************************************************************** + +-- +-- APPC global settings +-- +-- ****************************************************************** +appcGlobalObjects OBJECT IDENTIFIER ::= { appcGlobal 3 } + +appcUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time, in hundredths of a second, since the + APPC portion of the system was last reinitialized." + + ::= { appcGlobalObjects 1 } + +appcDefaultModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name to be used under the following + conditions: + + When an incoming BIND request contains a mode name not + defined at the local node. The parameters defined for + this mode are used for the inbound implicit mode + capability. + + When an APPC program issues an [MC_]ALLOCATE, + [MC_]SEND_CONVERSATION, or CNOS verb, or when a CPI-C + program issues an Allocate (CMALLC) call, + specifying a mode name not defined at the local node. The + parameters defined for this mode are used for the outbound + implicit mode capability. + + This mode name must match a defined entry in the + appcModeAdminTable." + + ::= { appcGlobalObjects 2 } + +appcDefaultLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the local LU that is to serve as the + default LU. This is the default LU to which are routed inbound + BIND requests that exclude the secondary LU name. This field + is from 1 to 17 characters in length, including a period (.) + which separates the NetId from the NAU name if the NetId is + present. This local LU name must match a defined entry in the + appcLluAdminTable." + + ::= { appcGlobalObjects 3 } + +appcDefaultImplInbndPlu OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether or not inbound implicit partner LU support + is enabled. The following values are defined: + + no - Specifies that inbound implicit partner LU support + is disabled, which means that an incoming bind that + specifies a partner LU that is not defined at the + local node will be rejected. + + yes - Specifies that inbound implicit partner LU support + is enabled, which provides the capability to accept + an incoming BIND request that contains a partner LU + name that is not defined at the local node." + + ::= { appcGlobalObjects 4 } + +appcDefaultMaxMcLlSndSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum size of a logical record to be used for + a mapped conversation when sending data to either the inbound + or outbound implicit partner LU. This size is the maximum + number of bytes in a single logical record, as indicated in the + LL field of the record. The default value is 32767. + + Note that this object does not limit the maximum size that an + application program can supply on the Send Data call for a + mapped conversation." + + ::= { appcGlobalObjects 5 } + +appcDefaultFileSpec OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local file specification that is to be searched by the + APPC attach manager when no DEFINE_TP verb has been issued + for the TP name received on an incoming attach. In this + case, the attach manager will attempt to start a program + whose file name is the same as the incoming TP name. If + found, the program is loaded. If not found, the attach is + rejected. + + The value '*' indicates that the normal search path for + executable programs is to be used for locating an undefined + transaction program. + + A null string indicates that there is no default file + specification for undefined transaction programs." + + ::= { appcGlobalObjects 6 } + +appcDefaultTpOperation OBJECT-TYPE + SYNTAX INTEGER { + other(1), + queuedOperatorStarted(2), + queuedOperatorPreloaded(3), + queuedAmStarted(4), + nonqueuedAmStarted(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies how the program will be started. + + other - Specifies that the default TP operation is none of + the methods specified below. It may be a + product-specific method. + + queuedOperatorStarted - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, APPC will issue a message to the operator to + start the specified program. Subsequent attaches + that arrive while the program is active will be + queued. + + queuedOperatorPreloaded - Specifies that one version + of the program will be run at a time. If an + incoming attach arrives and the program has not + been started yet, the Attach will be rejected. The + APPC attach manager determines that a TP has + started upon reception of an APPC RECEIVE_ALLOCATE + verb, or a CPI-C Accept_Conversation (CMACCP) or + Specify_Local_TP_Name (CMSLTP) call. No message is + sent to the operator. Subsequent attaches that + arrive while the program is active are queued. + + queuedAmStarted - Specifies that one version of the + program will be run at a time and will be started + by the APPC attach manager. Subsequent attaches + that arrive while the program is active will be + queued. + + nonqueuedAmStarted - Specifies that multiple copies of + the program will be run at a time and will be + started by the APPC attach manager. " + + ::= { appcGlobalObjects 7 } + +appcDefaultTpConvSecRqd OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether or not conversation security will be used + for default TPs. + + no - Specifies that the incoming attach does not have to + contain security information. + yes - Specifies that the incoming attach must contain + valid authentication information (e.g., user ID and + password)." + + ::= { appcGlobalObjects 8 } + +appcLocalCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the local control point. This field is + from 0 to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present. + A null string indicates that the value is unknown." + + ::= { appcGlobalObjects 9 } + +appcActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active APPC sessions supported + by this implementation. Sessions for which both LUs are local + are counted twice." + + ::= { appcGlobalObjects 10 } + +appcActiveHprSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active HPR APPC sessions." + + ::= { appcGlobalObjects 11 } + +-- ****************************************************************** +-- APPC CNOS control +-- +-- This group contains objects for issuing APPC Change-Number-of-Session +-- (CNOS) commands to a specific mode. Specifically, the commands +-- supported are: +-- INITIALIZE_SESSION_LIMIT +-- CHANGE_SESSION_LIMIT +-- RESET_SESSION_LIMIT +-- +-- +-- ****************************************************************** +appcCnosControl OBJECT IDENTIFIER ::= { appcGlobal 4 } + + +appcCnosCommand OBJECT-TYPE + SYNTAX INTEGER { + initSesslimit(1), + changeSesslimit(2), + resetSesslimit(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the CNOS command or verb to issue. First set the + values of the particular CNOS parameter objects (from the range + { appcCnosControl 2 } through { appcCnosControl 8 }) that apply + to the CNOS command to be executed, set the three CNOS target + objects ({ appcCnosControl 9 } through { appcCnosControl 11 }), + then set this object to the command to be executed. + + Here is the list of parameter objects that must be set for each + of the CNOS commands: + + INIT_SESSION_LIMIT - + appcCnosMaxSessLimit + appcCnosMinCwinLimit + appcCnosMinClosLimit + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + + CHANGE_SESSION_LIMIT - + appcCnosMaxSessLimit + appcCnosMinCwinLimit + appcCnosMinClosLimit + appcCnosResponsible + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + + RESET_SESSION_LIMIT - + appcCnosResponsible + appcCnosDrainPart + appcCnosForce + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + " + + ::= { appcCnosControl 1 } + +appcCnosMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value. + + If set (i.e., greater than 0), this overrides the maximum + session limit defined in the appcModeAdminTable. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { 0 } + + ::= { appcCnosControl 2 } + +appcCnosMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the default minimum contention winner sessions + limit. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { 0 } + + ::= { appcCnosControl 3 } + +appcCnosMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the default minimum contention loser sessions limit. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + DEFVAL { 0 } + + ::= { appcCnosControl 4 } + +appcCnosDrainSelf OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the local LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the local LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stopped or BIS + protocol). + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + + DEFVAL { no } + + ::= { appcCnosControl 5 } + +appcCnosDrainPart OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the partner LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the partner LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stop or BIS + protocol). + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + DEFVAL { yes } + + ::= { appcCnosControl 6 } + +appcCnosResponsible OBJECT-TYPE + SYNTAX INTEGER { + source(1), + target(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies which LU is responsible for selecting and + deactivating sessions as a result of a change that decreases + the session limit or the maximum number of contention winner + sessions for the source or target LU. If no session need to be + deactivated, this parameter is ignored. + + source - specifies that the source (local) LU is + responsible. The target (partner) LU + cannot negotiate this value. + target - specifies that the target (partner) LU is + responsible. The target LU can negotiate + this value to source. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the RESET_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { source } + + ::= { appcCnosControl 7 } + +appcCnosForce OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the local LU should force the resetting of + the session limit when certain error conditions occur that + prevent the successful exchange of CNOS request and reply. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + + DEFVAL { no } + + ::= { appcCnosControl 8 } + +appcCnosTargetLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SNA name of the local LU to which the CNOS command is + to be applied. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 9 } + +appcCnosTargetParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SNA name of the partner LU to which the CNOS command is + to be applied. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 10 } + +appcCnosTargetModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the mode name to which the CNOS command is to be + applied. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 11 } + + +-- ********************************************************************* +-- APPC LU information +-- --------------------------------------------------------------------- +-- Local LU +-- Partner LU +-- Mode +-- ********************************************************************* + +-- ********************************************************************* +-- APPC Local LU +-- +-- The entries in the following tables provide information for +-- independent and dependent LU 6.2. +-- +-- ********************************************************************* + +-- ********************************************************************* +-- APPC Local LU Admin Table +-- Objects in this table contain default or expected configuration +-- values for local 6.2 LUs. +-- ********************************************************************* + +appcLluAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLluAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local LU Admin Table." + + ::= { appcLu 1 } + +appcLluAdminEntry OBJECT-TYPE + SYNTAX AppcLluAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about local APPC LUs. " + INDEX { appcLluAdminName } + + ::= { appcLluAdminTable 1 } + +AppcLluAdminEntry ::= SEQUENCE { + appcLluAdminName DisplayString, + appcLluAdminDepType INTEGER, + appcLluAdminLocalAddress OCTET STRING, + appcLluAdminSessLimit Integer32, + appcLluAdminBindRspMayQ INTEGER, + appcLluAdminCompression INTEGER, + appcLluAdminInBoundCompLevel INTEGER, + appcLluAdminOutBoundCompLevel INTEGER, + appcLluAdminCompRleBeforeLZ INTEGER, + appcLluAdminAlias DisplayString + } + +appcLluAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU. This field is from 1 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcLluAdminEntry 1 } + +appcLluAdminDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies whether the LU is dependent or + independent." + + ::= { appcLluAdminEntry 2 } + +appcLluAdminLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value ranging + from 0 to 254. For dependent LUs, this value ranges from 1 to + 254; for independent LUs this value is always 0." + + ::= { appcLluAdminEntry 3 } + +appcLluAdminSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this LU." + + ::= { appcLluAdminEntry 4 } + +appcLluAdminBindRspMayQ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the local LU, as the sender of a BIND + request, allows a partner partner LU to delay sending the BIND + response if the partner LU cannot process the BIND request + immediately." + + ::= { appcLluAdminEntry 5 } + +appcLluAdminCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation + (SNA BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcLluAdminEntry 6 } + +appcLluAdminInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcLluAdminCompression for negotiation during session + activation (SNA BIND). + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger number bits used for the code, the more + storage space is required for the dictionary, but + the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluAdminEntry 7 } + +appcLluAdminOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcLluAdminCompression for negotiation during session + activation (SNA BIND). + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluAdminEntry 8 } + +appcLluAdminCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcLluAdminEntry 9 } + +appcLluAdminAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the local LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLluAdminEntry 10 } + + +-- ********************************************************************* +-- APPC Local LU Oper Table + +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for local 6.2 LUs. +-- ********************************************************************* + +appcLluOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLluOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local LU Operational Table." + ::= { appcLu 2 } + +appcLluOperEntry OBJECT-TYPE + SYNTAX AppcLluOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about local APPC LUs." + + INDEX { appcLluOperName } + + ::= { appcLluOperTable 1 } + +AppcLluOperEntry ::= SEQUENCE { + appcLluOperName DisplayString, + appcLluOperDepType INTEGER, + appcLluOperLocalAddress OCTET STRING, + appcLluOperSessLimit Integer32, + appcLluOperBindRspMayQ INTEGER, + appcLluOperCompression INTEGER, + appcLluOperInBoundCompLevel INTEGER, + appcLluOperOutBoundCompLevel INTEGER, + appcLluOperCompRleBeforeLZ INTEGER, + appcLluOperAlias DisplayString, + appcLluOperActiveSessions Gauge32 + } + +appcLluOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU. This field is from 1 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcLluOperEntry 1 } + +appcLluOperDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies whether the LU is dependent or + independent." + + ::= { appcLluOperEntry 2 } + +appcLluOperLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value ranging + from 0 to 254. For dependent LUs, this value ranges from 1 to + 254; for independent LUs this value is always 0." + + ::= { appcLluOperEntry 3 } + +appcLluOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this LU." + + ::= { appcLluOperEntry 4 } + +appcLluOperBindRspMayQ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the local LU, as the sender of a BIND + request, allows a partner LU to delay sending the BIND + response if the partner LU cannot process the BIND request + immediately." + + ::= { appcLluOperEntry 5 } + +appcLluOperCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcLluOperEntry 6 } + +appcLluOperInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcLluOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + ::= { appcLluOperEntry 7 } + +appcLluOperOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcLluAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluOperEntry 8 } + +appcLluOperCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcLluOperEntry 9 } + +appcLluOperAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the local LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLluOperEntry 10 } + +appcLluOperActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active APPC sessions for this + LU." + + ::= { appcLluOperEntry 11 } + +-- ********************************************************************* +-- APPC LU Pair Admin Table +-- Objects in this table contain default or expected configuration +-- values for 6.2 LU pairs. An LU pair consists of a local LU and +-- a partner LU, which may or may not be local. +-- ********************************************************************* +appcLuPairAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLuPairAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Partner LU administrative Table" + + ::= { appcLu 3 } + +appcLuPairAdminEntry OBJECT-TYPE + SYNTAX AppcLuPairAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Partner LU Information Table. + It is indexed by the local and partner LU Names." + + INDEX { appcLuPairAdminLocLuName, + appcLuPairAdminParLuName } + + ::= { appcLuPairAdminTable 1 } + +AppcLuPairAdminEntry ::= SEQUENCE { + + appcLuPairAdminLocLuName DisplayString, + appcLuPairAdminParLuName DisplayString, + appcLuPairAdminParLuAlias DisplayString, + appcLuPairAdminSessLimit Integer32, + appcLuPairAdminSessSec INTEGER, + appcLuPairAdminSecAccept INTEGER, + appcLuPairAdminLinkObjId InstancePointer, + appcLuPairAdminParaSessSup INTEGER + + } + +appcLuPairAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this partner LU + definition applies. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the partner LU + definition applies to all local LUs, and not just to a single + local LU." + + ::= { appcLuPairAdminEntry 1 } + +appcLuPairAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. + This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present." + ::= { appcLuPairAdminEntry 2 } + +appcLuPairAdminParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLuPairAdminEntry 3 } + +appcLuPairAdminSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this partner LU." + + ::= { appcLuPairAdminEntry 4 } + +appcLuPairAdminSessSec OBJECT-TYPE + SYNTAX INTEGER { + required(1), + accepted(2), + notAllowed(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the type of session-level security information that + a local LU will accept on BIND requests it receives from the + partner LU. + + required - Specifies that the BIND request must carry + session level verification information that + will be verified upon receipt. + accepted - Specifies that the BIND request may carry + session level verification information that + will be verified upon receipt. + notAllowed - Specifies that the BIND request must not carry + session level verification information." + ::= { appcLuPairAdminEntry 5 } + + +appcLuPairAdminSecAccept OBJECT-TYPE + SYNTAX INTEGER { + none(1), + conversation(2), + alreadyVerified(3), + persistentVerification(4), + aVandpV(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies support for different levels of access security + information in ATTACH requests received from this partner LU. + + Possible values are: + + none - No access security information will be + accepted on allocation requests (ATTACH) from + this LU. + conversation + - Allocation requests will not be accepted that + include already verified or persistent + verification indicators. Accept + conversation-level access security + information, which must include both a user + Id and password, and may also include a + profile. + alreadyVerified + - Allocation requests will be accepted that + include already verified indicators. + Persistent verification indicators will not + be accepted. + persistentVerification + - Allocation requests will be accepted that + include persistent verification indicators. + Already verified indicators will not be + accepted. + aVandpV - Allocation requests will be accepted that + include already verified or persistent + verification indicators." + + ::= { appcLuPairAdminEntry 6 } + +appcLuPairAdminLinkObjId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the link associated with this partner LU. This + value points to the row in the table containing information on + the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC + MIB module). This object may be NULL if the link is not + specified or if a link is not applicable (as for APPN-level + nodes)." + + ::= { appcLuPairAdminEntry 7 } + +appcLuPairAdminParaSessSup OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defined Parallel Sessions Supported. + + Indicates whether or not multiple sessions between the partner + LU and its associated local LU are permitted. Parallel session + support also indicates that Change Number of Sessions (CNOS) + will be used to negotiate session limits between the LUs." + + ::= { appcLuPairAdminEntry 8 } + + +-- ********************************************************************* +-- APPC LU Pair Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for 6.2 LU pairs. +-- ********************************************************************* + +appcLuPairOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLuPairOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of active partner/local LU pairs. Two entries are + present in the table when both LUs in a pair are local." + ::= { appcLu 4 } + +appcLuPairOperEntry OBJECT-TYPE + SYNTAX AppcLuPairOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one partner/local LU pair." + + INDEX { appcLuPairOperLocLuName, + appcLuPairOperParLuName } + + ::= { appcLuPairOperTable 1 } + +AppcLuPairOperEntry ::= SEQUENCE { + appcLuPairOperLocLuName DisplayString, + appcLuPairOperParLuName DisplayString, + appcLuPairOperParLuAlias DisplayString, + appcLuPairOperSessLimit Integer32, + appcLuPairOperSessSec INTEGER, + appcLuPairOperSecAccept INTEGER, + appcLuPairOperLinkObjId InstancePointer, + appcLuPairOperParaSessSup INTEGER, + appcLuPairOperParaSessSupLS INTEGER, + appcLuPairOperState INTEGER + } + +appcLuPairOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcLuPairOperEntry 1 } + +appcLuPairOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. + This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present." + + ::= { appcLuPairOperEntry 2 } + +appcLuPairOperParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLuPairOperEntry 3 } + +appcLuPairOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this partner LU." + + ::= { appcLuPairOperEntry 4 } + +appcLuPairOperSessSec OBJECT-TYPE + SYNTAX INTEGER { + required(1), + accepted(2), + notAllowed(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the type of security information that a local LU + will accept on BIND requests it receives from the partner LU. + + required - Specifies that the BIND request must carry + session level verification information that + will be verified upon receipt. + accepted - Specifies that the BIND request may carry + session level verification information that + will be verified upon receipt. + notAllowed - Specifies that the BIND request must not carry + session level verification information." + + ::= { appcLuPairOperEntry 5 } + +appcLuPairOperSecAccept OBJECT-TYPE + SYNTAX INTEGER { + none(1), + conversation(2), + alreadyVerified(3), + persistentVerification(4), + aVandpV(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies support for different levels of security acceptance + information in ATTACH requests received from this partner LU. + + Possible values are: + + none - No access security information will be + accepted on allocation requests (ATTACH) from + this LU. + conversation + - Allocation requests will not be accepted that + include already verified or persistent + verification indicators. Accept + conversation-level access security + information, which must include both a user + Id and password, and may also include a + profile. + alreadyVerified + - Allocation requests will be accepted that + include already verified indicators. + Persistent verification indicators will not + be accepted. + persistentVerification + - Allocation requests will be accepted that + include persistent verification indicators. + Already verified indicators will not be + accepted. + aVandpV - Allocation requests will be accepted that + include already verified or persistent + verification indicators." + ::= { appcLuPairOperEntry 6 } + +appcLuPairOperLinkObjId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the link associated with this partner LU. This + value points to the row in the table containing information on + the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC + MIB module). This object may be NULL if the link is not + specified or if a link is not applicable (as for APPN-level + nodes)." + + ::= { appcLuPairOperEntry 7 } + +appcLuPairOperParaSessSup OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active Parallel Sessions Supported. + + Indicates whether or not multiple session between the partner + LU and its associated local LU are permitted. Parallel + session support also indicates that Change Number of Sessions + (CNOS) will be used to negotiate session limits between the + LUs." + + ::= { appcLuPairOperEntry 8 } + +appcLuPairOperParaSessSupLS OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active Parallel Sessions Supported - last starting value. + + This object represents the initial value proposed by the local + LU the last time this capability was negotiated, i.e., when + the first session was bound between the local LU and its + partner." + + ::= { appcLuPairOperEntry 9 } + +appcLuPairOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current operational state of this LU + pair: + + inactive (1) - no active or pending session exists + between the LUs. + active (2) - an active or pending session exists + between the LUs." + + ::= { appcLuPairOperEntry 10 } + + +-- ********************************************************************* +-- APPC Mode Admin Table +-- Objects in this table contain default or expected configuration +-- values for session modes. +-- Modes that have active sessions appear in the appcModeOperTable. +-- ********************************************************************* +appcModeAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcModeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Mode Table" + + ::= { appcLu 5 } + +appcModeAdminEntry OBJECT-TYPE + SYNTAX AppcModeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Mode Information Table." + INDEX { appcModeAdminLocLuName, + appcModeAdminParLuName, + appcModeAdminModeName } + + ::= { appcModeAdminTable 1 } + +AppcModeAdminEntry ::= SEQUENCE { + appcModeAdminLocLuName DisplayString, + appcModeAdminParLuName DisplayString, + appcModeAdminModeName DisplayString, + appcModeAdminCosName DisplayString, + appcModeAdminSessEndTpName DisplayString, + appcModeAdminMaxSessLimit Integer32, + appcModeAdminMinCwinLimit Integer32, + appcModeAdminMinClosLimit Integer32, + appcModeAdminConWinAutoActLmt Integer32, + appcModeAdminRecvPacWinSz Integer32, + appcModeAdminSendPacWinSz Integer32, + appcModeAdminPrefRecvRuSz Integer32, + appcModeAdminPrefSendRuSz Integer32, + appcModeAdminRecvRuSzUpBnd Integer32, + appcModeAdminSendRuSzUpBnd Integer32, + appcModeAdminRecvRuSzLoBnd Integer32, + appcModeAdminSendRuSzLoBnd Integer32, + appcModeAdminSingSessReinit INTEGER, + appcModeAdminCompression INTEGER, + appcModeAdminInBoundCompLevel INTEGER, + appcModeAdminOutBoundCompLevel INTEGER, + appcModeAdminCompRleBeforeLZ INTEGER, + appcModeAdminSyncLvl INTEGER, + appcModeAdminCrypto INTEGER + + } + +appcModeAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this mode definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the + NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the mode definition + applies to all local LUs for the SNA node identified by + appcLocalCpName, and not just to a single local LU." + + ::= { appcModeAdminEntry 1 } + +appcModeAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU to which this mode definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the + NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the mode definition + applies to all partner LUs for the SNA node identified by + appcModeAdminLocLuName, and not just to a single partner LU." + + ::= { appcModeAdminEntry 2 } + +appcModeAdminModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 + space characters). " + + ::= { appcModeAdminEntry 3 } + +appcModeAdminCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the class of service (COS) name associated with + this mode. If the implementation does not support COS names, + a null string is returned." + + ::= { appcModeAdminEntry 4 } + +appcModeAdminSessEndTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the transaction program (TP) to be + invoked when a session using this mode is deactivated or ended. + If no such TP is defined, this object is a null string. When + the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + " + + ::= { appcModeAdminEntry 5 } + +appcModeAdminMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value." + + ::= { appcModeAdminEntry 6 } + +appcModeAdminMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the default minimum contention winner sessions + limit. Some implementations internally issue a + INITIALIZE_SESSION_LIMIT verb when a Mode is created. This + value is the parameter used for the CNOS processing of that + verb. This parameter is not used when issuing an explicit + INITIALIZE_SESSION_LIMIT verb. The equivalent object in + appcCnosCommandTable is used." + ::= { appcModeAdminEntry 7 } + +appcModeAdminMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the default minimum contention loser sessions limit. + Some implementations internally issue a + INITIALIZE_SESSION_LIMIT verb when a Mode is created. This + value is the parameter used for the CNOS processing of that + verb. This is the same as target minimum contention winner + sessions. This parameter is not used when issuing an explicit + INITIALIZE_SESSION_LIMIT verb. The equivalent object in + appcCnosCommandTable is used." + + ::= { appcModeAdminEntry 8 } + +appcModeAdminConWinAutoActLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the limit on the number of contention winner + sessions to be automatically activated when the minimum number + of contention winner sessions increases (as a result of CNOS + processing). The actual number of sessions activated is the + lesser of this value and the new minimum number of contention + winner sessions. " + ::= { appcModeAdminEntry 9 } + +appcModeAdminRecvPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the receive pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeAdminEntry 10 } + +appcModeAdminSendPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the send pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeAdminEntry 11 } + +appcModeAdminPrefRecvRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred receive RU (Request Unit) size of + normal-flow requests on the sessions. This value must be less + than or equal to the value specified in + appcModeAdminRecvRuSzUpBnd and greater than or equal to the + value specified in appcModeAdminRecvRuSzLoBnd. + + The local LU specifies this value for the receive maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeAdminRecvRuSzUpBnd + value or down to the appcModeAdminRecvRuSzLoBnd value." + ::= { appcModeAdminEntry 12 } + +appcModeAdminPrefSendRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred send RU (Request Unit) size of normal- + flow requests on the sessions. This value must be less than or + equal to the value specified in appcModeAdminSendRuSzUpBnd and + greater than or equal to the value specified in + appcModeAdminSendRuSzLoBnd. + + The local LU specifies this value for the send maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeAdminSendRuSzUpBnd + value or down to the appcModeAdminSendRuSzLoBnd value." + + ::= { appcModeAdminEntry 13 } + +appcModeAdminRecvRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 14 } + +appcModeAdminSendRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 15 } + +appcModeAdminRecvRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum receive RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 16 } + +appcModeAdminSendRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 17 } + +appcModeAdminSingSessReinit OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + operatorControlled(2), + primaryOnly(3), + secondaryOnly(4), + primaryOrSecondary(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the responsibility for session reinitiation of a + single session with the partner LU (when the session goes + down). The local LU uses this parameter to specify the session + reinitiation responsibility in session activation (SNA BIND) + requests and responses. + + notApplicable - specifies that this parameter has + no meaning since the value of + appcLuPairAdminParaSessSup is yes. + The field in the SNA BIND is + reserved (set to zero). + operatorControlled - specifies that neither LU will + automatically attempt to reinitiate + the session. The operator on either + side will manually reactivate the + session. A contention race (both + side reinitiating at the same time) + is won by the LU with the + lexicographically greater fully- + qualified LU name. + primaryOnly - specifies that the primary LU will + automatically attempt to reinitiate + the session. + secondaryOnly - specifies that the secondary LU will + automatically attempt to reinitiate + the session. + primaryOrSecondary - specifies that either the primary or + the secondary may automatically + attempt to reinitiate the session. + A contention race is handled the + same way as with operatorControlled. + " + ::= { appcModeAdminEntry 18 } + +appcModeAdminCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcModeAdminEntry 19 } + +appcModeAdminInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcModeAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeAdminEntry 20 } + +appcModeAdminOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcModeAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeAdminEntry 21 } + +appcModeAdminCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcModeAdminEntry 22 } + +appcModeAdminSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support. This value is used for + negotiation during session activations (SNA BIND). + + none - No sync level is supported. + noneConfirm - None and Confirm levels supported. + noneConfirmSyncPoint - None, Confirm, and Sync Point is + supported. + " + + ::= { appcModeAdminEntry 23 } + +appcModeAdminCrypto OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported. + This value is used for negotiation during session activations + (SNA BIND). + notSupported - Specifies session-level cryptography + is not to be used. + mandatory - Specifies session-level cryptography + must be used. + selective - Specifies session-level cryptography + is required just on selected requests + flowing on the sessions." + + ::= { appcModeAdminEntry 24 } + +-- ********************************************************************* +-- APPC Mode Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for session modes. +-- +-- ********************************************************************* +appcModeOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcModeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operational APPC Mode Information. Two entries are present in + the table when both LUs in a pair are local." + + ::= { appcLu 6 } + +appcModeOperEntry OBJECT-TYPE + SYNTAX AppcModeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC mode operational information table. This entry + does not augment the appcModeAdminEntry, but reflects an actual + operational mode for a given local LU - partner LU pair." + + INDEX { appcModeOperLocLuName, + appcModeOperParLuName, + appcModeOperModeName } + + ::= { appcModeOperTable 1 } + +AppcModeOperEntry ::= SEQUENCE { + + appcModeOperLocLuName DisplayString, + appcModeOperParLuName DisplayString, + appcModeOperModeName DisplayString, + appcModeOperCosName DisplayString, + appcModeOperSessEndTpName DisplayString, + appcModeOperSessLimit Integer32, + appcModeOperMaxSessLimit Integer32, + appcModeOperMinCwinLimit Integer32, + appcModeOperMinClosLimit Integer32, + appcModeOperConWinAutoActLmt Integer32, + appcModeOperRecvPacWinSz Integer32, + appcModeOperSendPacWinSz Integer32, + appcModeOperPrefRecvRuSz Integer32, + appcModeOperPrefSendRuSz Integer32, + appcModeOperRecvRuSzUpBnd Integer32, + appcModeOperSendRuSzUpBnd Integer32, + appcModeOperRecvRuSzLoBnd Integer32, + appcModeOperSendRuSzLoBnd Integer32, + appcModeOperSingSessReinit INTEGER, + appcModeOperCompression INTEGER, + appcModeOperInBoundCompLevel INTEGER, + appcModeOperOutBoundCompLevel INTEGER, + appcModeOperCompRleBeforeLZ INTEGER, + appcModeOperSyncLvl INTEGER, + appcModeOperCrypto INTEGER, + appcModeOperSyncLvlLastStart INTEGER, + appcModeOperCryptoLastStart INTEGER, + appcModeOperCNOSNeg INTEGER, + appcModeOperActCwin Gauge32, + appcModeOperActClos Gauge32, + appcModeOperPndCwin Gauge32, + appcModeOperPndClos Gauge32, + appcModeOperPtmCwin Gauge32, + appcModeOperPtmClos Gauge32, + appcModeOperDrainSelf INTEGER, + appcModeOperDrainPart INTEGER + } + +appcModeOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcModeOperEntry 1 } + +appcModeOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same + resource (specifically, to the same partner LU)." + + ::= { appcModeOperEntry 2 } + +appcModeOperModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 + space characters). " + + ::= { appcModeOperEntry 3 } + +appcModeOperCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the class of service (COS) name associated with + this mode. If the implementation does not support COS names, + a zero-length string is returned." + + ::= { appcModeOperEntry 4 } + +appcModeOperSessEndTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the transaction program (TP) to be + invoked when a session using this mode is deactivated or ended. + If the name is NULL, no transaction program is invoked. When + the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes)." + + ::= { appcModeOperEntry 5 } + +appcModeOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the current session limit of this mode as negotiated + through APPC CNOS (Change Number of Sessions) processing. + Identifies the total number of sessions that can be established + between the local and partner LU using this mode." + + ::= { appcModeOperEntry 6 } + +appcModeOperMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value." + + ::= { appcModeOperEntry 7 } + +appcModeOperMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the minimum contention winner sessions limit that + was negotiated via CNOS processing." + + ::= { appcModeOperEntry 8 } + +appcModeOperMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the minimum contention loser sessions limit that + was negotiated via CNOS processing. This is the same as + target minimum contention winner sessions." + + ::= { appcModeOperEntry 9 } + +appcModeOperConWinAutoActLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the limit on the number of contention winner sessions + to be automatically activated when the minimum number of + contention winner sessions increases (as a result of CNOS + processing). The actual number of sessions activated is the + lesser of this value and the new minimum number of contention + winner sessions. " + + ::= { appcModeOperEntry 10 } + +appcModeOperRecvPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the receive pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing - No limit on window size + fixed pacing - No pacing is supported" + + ::= { appcModeOperEntry 11 } + +appcModeOperSendPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the send pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeOperEntry 12 } + +appcModeOperPrefRecvRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred receive RU (Request Unit) size of + normal-flow requests on the sessions. This value must be less + than or equal to the value specified in + appcModeOperRecvRuSzUpBnd and greater than or equal to the + value specified in appcModeOperRecvRuSzLoBnd. + + The local LU specifies this value for the receive maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeOperRecvRuSzUpBnd + value or down to the appcModeOperRecvRuSzLoBnd value." + + ::= { appcModeOperEntry 13 } + +appcModeOperPrefSendRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred send RU (Request Unit) size of normal- + flow requests on the sessions. This value must be less than or + equal to the value specified in appcModeOperSendRuSzUpBnd and + greater than or equal to the value specified in + appcModeOperSendRuSzLoBnd. + + The local LU specifies this value for the send maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeOperSendRuSzUpBnd + value or down to the appcModeOperSendRuSzLoBnd value." + + ::= { appcModeOperEntry 14 } + +appcModeOperRecvRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 15 } + +appcModeOperSendRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 16 } + +appcModeOperRecvRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 17 } + +appcModeOperSendRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum send RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 18 } + +appcModeOperSingSessReinit OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + operatorControlled(2), + primaryOnly(3), + secondaryOnly(4), + primaryOrSecondary(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the responsibility for session reinitiation of a + single session with the partner LU (when the session goes + down). The local LU uses this parameter to specify the session + reinitiation responsibility in session activation (SNA BIND) + requests and responses. + + notApplicable - specifies that this parameter has + no meaning since the value of + appcLuPairOperParaSessSup is yes. + The field in the SNA BIND is + reserved (set to zero). + operatorControlled - specifies that neither LU will + automatically attempt to reinitiate + the session. The operator on either + side will manually reactivate the + session. A contention race (both + side reinitiating at the same time) + is won by the LU with the + lexicographically greater fully- + qualified LU name. + primaryOnly - specifies that the primary LU will + automatically attempt to reinitiate + the session. + secondaryOnly - specifies that the secondary LU will + automatically attempt to reinitiate + the session. + primaryOrSecondary - specifies that either the primary or + the secondary may automatically + attempt to reinitiate the session. + A contention race is handled the + same way as with operatorControlled. + " + ::= { appcModeOperEntry 19 } + +appcModeOperCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcModeOperEntry 20 } + +appcModeOperInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcModeOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeOperEntry 21 } + +appcModeOperOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcModeOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeOperEntry 22 } + +appcModeOperCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + ::= { appcModeOperEntry 23 } + +appcModeOperSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support for sessions involving this + LU pair and mode name. + + none - No sync level is supported. + noneConfirm - None and Confirm level supported. + noneConfirmSyncPoint - None, Confirm and Sync Point is + supported. + " + + ::= { appcModeOperEntry 24 } + +appcModeOperCrypto OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported for + sessions involving this LU pair and mode name. + + notSupported - Specifies session-level cryptography + is not being used. + mandatory - Specifies session-level cryptography + in being used on all requests + flowing on the sessions. + selective - Specifies session-level cryptography + is required just on selected + requests flowing on the sessions." + + ::= { appcModeOperEntry 25 } + +appcModeOperSyncLvlLastStart OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support. This value represents the + initial value proposed by the local LU the last time this + capability was negotiated, i.e., when the first session was + bound between the local LU and its partner. + + none - No sync level is supported. + noneConfirm - None and Confirm level supported. + noneConfirmSyncPoint - None, Confirm and Sync Point is + supported. + " + + ::= { appcModeOperEntry 26 } + +appcModeOperCryptoLastStart OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported. + This value represents the initial value proposed by the local + LU the last time this capability was negotiated, i.e., when + the first session was bound between the local LU and its + partner. + notSupported - Specifies session-level cryptography + is not to be used. + mandatory - Specifies session-level cryptography + must be used. + selective - Specifies session-level cryptography + is required just on selected + requests flowing on the sessions." + + ::= { appcModeOperEntry 27 } + +appcModeOperCNOSNeg OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether CNOS negotiation is in process. CNOS + negotiation is used to set or change the various session limits + for a mode." + + ::= { appcModeOperEntry 28 } + +appcModeOperActCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of active contention winner sessions." + + ::= { appcModeOperEntry 29 } + +appcModeOperActClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of active contention loser sessions." + + ::= { appcModeOperEntry 30 } + +appcModeOperPndCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention winner sessions that are + pending activation." + + ::= { appcModeOperEntry 31 } + +appcModeOperPndClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention loser sessions that are + pending activation." + + ::= { appcModeOperEntry 32 } + +appcModeOperPtmCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention winner sessions that are + pending termination." + + ::= { appcModeOperEntry 33 } + +appcModeOperPtmClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention loser sessions that are + pending termination." + + ::= { appcModeOperEntry 34 } + +appcModeOperDrainSelf OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the local LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the local LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stopped or BIS + protocol). " + + ::= { appcModeOperEntry 35 } + +appcModeOperDrainPart OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the partner LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the partner LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stop or BIS + protocol). " + + ::= { appcModeOperEntry 36 } + +-- ********************************************************************* +-- APPC TP Admin Table +-- Objects in this table contain default or expected configuration +-- values for remotely attachable transaction programs. +-- ********************************************************************* +appcTpAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcTpAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local TP Table" + + ::= { appcTp 1 } + +appcTpAdminEntry OBJECT-TYPE + SYNTAX AppcTpAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Local TP Information Table." + + INDEX { appcTpAdminLocLuName, + appcTpAdminTpName } + + ::= { appcTpAdminTable 1 } + +AppcTpAdminEntry ::= SEQUENCE { + appcTpAdminLocLuName DisplayString, + appcTpAdminTpName DisplayString, + appcTpAdminFileSpec DisplayString, + appcTpAdminStartParm DisplayString, + appcTpAdminTpOperation INTEGER, + appcTpAdminInAttachTimeout Integer32, + appcTpAdminRcvAllocTimeout Integer32, + appcTpAdminSyncLvl INTEGER, + appcTpAdminInstLmt Integer32, + appcTpAdminStatus INTEGER, + appcTpAdminLongRun INTEGER, + appcTpAdminConvType INTEGER, + appcTpAdminConvDuplex INTEGER, + appcTpAdminConvSecReq INTEGER, + appcTpAdminVerPip INTEGER, + appcTpAdminPipSubNum Integer32 + } + +appcTpAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this TP definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the NAU + name if the NetId is present. + + The reserved value '*ALL' indicates that the TP definition + applies to all local LUs, and not just to a single local LU." + + ::= { appcTpAdminEntry 1 } + +appcTpAdminTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local transaction program name. This name is sent on an + ATTACH remote allocation request. + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have a + non-displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes)." + + ::= { appcTpAdminEntry 2 } + +appcTpAdminFileSpec OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local file specification of the transaction program. + May be a zero-length string if not applicable." + + ::= { appcTpAdminEntry 3 } + +appcTpAdminStartParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A parameter string passed to the transaction program when it + is started. May be a zero-length string if not supported. " + + ::= { appcTpAdminEntry 4 } + +appcTpAdminTpOperation OBJECT-TYPE + SYNTAX INTEGER { + other(1), + queuedOperatorStarted(2), + queuedOperatorPreloaded(3), + queuedAmStarted(4), + nonqueuedAmStarted(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies how the program will be started. + other - Specifies that the program operation is none of + the methods specified. It may be a + product-specific method. + + queuedOperatorStarted - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, APPC will issue a message to the operator to + start the specified program. Subsequent attaches + that arrive while the program is active will be + queued. + + queuedOperatorPreloaded - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, the Attach will be rejected. The APPC attach + manager determines that a TP has started upon + reception of an APPC RECEIVE_ALLOCATE verb, or a + CPI-C Accept_Conversation (CMACCP) or + Specify_Local_TP_Name (CMSLTP) call. No message is + sent to the operator. Subsequent attaches that + arrive while the program is active are queued. + + queuedAmStarted - Specifies that one version of the + program will be run at a time and will be started + by the APPC attach manager. Subsequent attaches + that arrive while the program is active will be + queued. + + nonqueuedAmStarted - Specifies that multiple copies of the + program will be run at a time and will be started + by the APPC attach manager." + + ::= { appcTpAdminEntry 5 } + +appcTpAdminInAttachTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the number of seconds incoming attaches + will be queued waiting for an APPC program to issue a + RECEIVE_ALLOCATE verb or for a CPI-C program to issue an + Accept_Conversation (CMACCP) call. This parameter is + meaningful only when appcTpAdminTpOperation has one of the + following values: + queuedOperatorStarted + queuedOperatorPreloaded + queuedAmStarted + + A value of zero indicates that there is no timeout." + + ::= { appcTpAdminEntry 6 } + +appcTpAdminRcvAllocTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the number of seconds an APPC program's + RECEIVE_ALLOCATE verb or a CPI-C program's Accept_Conversation + (CMACCP) call will wait for an incoming attach to arrive. + + A value of zero indicates that there is no timeout." + + ::= { appcTpAdminEntry 7 } + +appcTpAdminSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + confirm(2), + noneAndConfirm(3), + syncpoint(4), + noneAndSyncpoint(5), + confirmAndSyncpoint(6), + all(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the synchronization level or levels that the + transaction program supports. The levels are defined as + follows: + + none - allocation requests indicating a + synchronization level of none are allowed to + start the program. + confirm - allocation requests indicating a + synchronization level of confirm are allowed + to start the program. + syncpoint - allocation requests indicating a + synchronization level of sync point are + allowed to start the program." + + ::= { appcTpAdminEntry 8 } + +appcTpAdminInstLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of concurrent instances of this transaction + program that will be supported for a local LU. A value of + zero indicates that there is no limit." + + ::= { appcTpAdminEntry 9 } + +appcTpAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + tempDisabled(2), + permDisabled(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the status of the TP relative to starting execution + when the local LU receives an allocation (ATTACH) request + naming this program. + + enabled - the local LU can start the program. + tempDisabled - the local LU cannot start the + program. The local LU rejects the + request with an indication that the + TP is not available but retry is + possible. + permDisabled - the local LU cannot start the + program. The local LU rejects the + request with an indication that the + TP is not available and retry is + not possible." + + ::= { appcTpAdminEntry 10 } + +appcTpAdminLongRun OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this is a long-running transaction program + (i.e., one that stays around even after the conversation goes + away)." + + ::= { appcTpAdminEntry 11 } + +appcTpAdminConvType OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + mapped(2), + basicOrMapped(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the conversation type (basic or mapped) that will be + used by the TP. This value is verified upon receipt of an + incoming attach. The acceptable values are: + + basic - Indicates that this transaction program + supports basic conversations. + + mapped - Indicates that this transaction program + supports mapped conversations. + + basicOrMapped - Indicates that this transaction program + supports both basic and mapped + conversations." + ::= { appcTpAdminEntry 12 } + +appcTpAdminConvDuplex OBJECT-TYPE + SYNTAX INTEGER { + half(1), + full(2), + halfOrFull(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the conversation duplex type (half or full) that + will be used by the TP. This value is verified upon receipt of + an incoming attach. The acceptable values are: + + half - Indicates that this transaction program + supports half duplex conversations. + + full - Indicates that this transaction program + supports full duplex conversations. + + halfOrFull - Indicates that this transaction program + supports either half or full duplex + conversations." + + ::= { appcTpAdminEntry 13 } + +appcTpAdminConvSecReq OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether conversation-level security information is + required on incoming attaches designating this TP name. + Conversation-level security verification is always performed on + those requests that include security information. + + yes - Indicates that conversation-level security + information is required. ATTACHs designating the + transaction program must carry a user_id and + either a password or an already verified + indicator. + + no - Indicates that no security information is + required. ATTACHs designating the transaction + program can omit or include security information." + + ::= { appcTpAdminEntry 14 } + +appcTpAdminVerPip OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the number of PIP (Program Initialization + Parameters) subfields should be verified against the number + expected (appcTpAdminPipSubNum)." + + ::= { appcTpAdminEntry 15 } + +appcTpAdminPipSubNum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of PIP subfields expected by the TP." + + ::= { appcTpAdminEntry 16 } + + +-- ********************************************************************* +-- APPC Active Session Table +-- --------------------------------------------------------------------- +-- This table contains information about active APPC sessions. +-- ********************************************************************* +appcActSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcActSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of active APPC sessions. Two entries are present in the + table when both session partners are local." + + ::= { appcSession 1 } + +appcActSessEntry OBJECT-TYPE + SYNTAX AppcActSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Session Information Table. Indexed by LU pair + and integer-valued session index." + + INDEX { appcActSessLocLuName, + appcActSessParLuName, + appcActSessIndex } + + ::= { appcActSessTable 1 } + +AppcActSessEntry ::= SEQUENCE { + appcActSessLocLuName DisplayString, + appcActSessParLuName DisplayString, + appcActSessIndex Integer32, + appcActSessPcidCpName DisplayString, + appcActSessPcid OCTET STRING, + appcActSessPluIndicator INTEGER, + appcActSessModeName DisplayString, + appcActSessCosName DisplayString, + appcActSessTransPriority INTEGER, + appcActSessEnhanceSecSup INTEGER, + appcActSessSendPacingType INTEGER, + appcActSessSendRpc Gauge32, + appcActSessSendNxWndwSize Gauge32, + appcActSessRecvPacingType INTEGER, + appcActSessRecvRpc Gauge32, + appcActSessRecvNxWndwSize Gauge32, + appcActSessRscv OCTET STRING, + appcActSessInUse INTEGER, + appcActSessMaxSndRuSize INTEGER, + appcActSessMaxRcvRuSize INTEGER, + appcActSessSndPacingSize INTEGER, + appcActSessRcvPacingSize INTEGER, + appcActSessOperState INTEGER, + appcActSessUpTime TimeTicks, + appcActSessRtpNceId OCTET STRING, + appcActSessRtpTcid OCTET STRING, + appcActSessLinkIndex InstancePointer + } + + +appcActSessLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, then the + two entries being indexed apply to the same resource + (specifically, to the same local LU)." + + ::= { appcActSessEntry 1 } + +appcActSessParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the partner LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same resource + (specifically, to the same partner LU)." + + ::= { appcActSessEntry 2 } + +appcActSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the index of the session, which is + unique for this LU pair. It is recommended that an Agent not + reuse the index of a deactivated session for a significant + period of time (e.g., one week)." + + ::= { appcActSessEntry 3 } + +appcActSessPcidCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified CP name of the node at which the session + and PCID originated. For APPN and LEN nodes, this is either CP + name of the APPN node at which the origin LU is located or the + CP name of the NN serving the LEN node at which the origin LU + is located. This field is from 3 to 17 characters in length, + including a period (.) which separates the NetId from the NAU + name. A null string indicates that the value is unknown." + ::= { appcActSessEntry 4 } + +appcActSessPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. It + is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcActSessEntry 5 } + +appcActSessPluIndicator OBJECT-TYPE + SYNTAX INTEGER { + localLuIsPlu(1), + partnerLuIsPlu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which LU is the PLU for this session. For + independent LUs, the PLU (primary LU) is the one that initiated + the session (sent BIND), while the SLU (secondary LU) is the + one that accepted the session initiation (received BIND). + + The 'local' LU is the one identified by appcLluOperName. + + The 'partner' LU is the one identified by + appcLuPairOperParLuName." + + ::= { appcActSessEntry 6 } + +appcActSessModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name used for this session." + + ::= { appcActSessEntry 7 } + +appcActSessCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used for this session. + A null string indicates that the value is unknown." + + ::= { appcActSessEntry 8 } + +appcActSessTransPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + low(2), + medium(3), + high(4), + network(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission priority of this session. + 1 = unknown priority + 2 = low priority + 3 = medium priority + 4 = high priority + 5 = network priority + " + + ::= { appcActSessEntry 9 } + +appcActSessEnhanceSecSup OBJECT-TYPE + SYNTAX INTEGER { + none(1), + level1(2), + level2(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enhanced security supported. Indicates the level of enhanced + security support: + + 1 = none + 2 = level 1 + 3 = level 2 + " + + ::= { appcActSessEntry 10 } + +appcActSessSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + fixed(2), + adaptive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of pacing being used for sending data." + + ::= { appcActSessEntry 11 } + +appcActSessSendRpc OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The send residual pace count. This represents the number of + MUs that can still be sent in the current session window." + + ::= { appcActSessEntry 12 } + +appcActSessSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the next window which will be used to send data." + + ::= { appcActSessEntry 13 } + +appcActSessRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + fixed(2), + adaptive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of pacing being used for receiving data." + + ::= { appcActSessEntry 14 } + +appcActSessRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receive residual pace count. This represents the number + of MUs that can still be received in the current session + window." + + ::= { appcActSessEntry 15 } + +appcActSessRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the next window which will be used to receive + data." + + ::= { appcActSessEntry 16 } +appcActSessRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The route selection control vector (RSCV CV2B) used for this + session. It is present for APPN-level implementations. + LEN-level implementations will return a null string. The + internal format of this vector is described in SNA Formats. + This object contains an uninterpreted copy of the control + vector (including the length and key fields)." + + ::= { appcActSessEntry 17 } + +appcActSessInUse OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the session is currently in use (i.e., in + bracket with a conversation)." + + ::= { appcActSessEntry 18 } + +appcActSessMaxSndRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for sending RUs." + ::= { appcActSessEntry 19 } + +appcActSessMaxRcvRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for receiving RUs." + + ::= { appcActSessEntry 20 } + +appcActSessSndPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the send pacing window on this session." + + ::= { appcActSessEntry 21 } + +appcActSessRcvPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the receive pacing window on this session." + + ::= { appcActSessEntry 22 } + +appcActSessOperState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + pendingBind (2), + bound (3), + pendingUnbind (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value indicates the current operational state of the + session. + + 'unbound (1)' - session has been unbound; + in this state it will be removed from the + session table by the Agent. + + 'pendingBind (2)' - this state has different + meanings for dependent and independent LUs; + for dependent LU - waiting for BIND from + the host, for independent LU - waiting for + BIND response. When a session enters this + state, the corresponding entry in the + session table is created by the Agent. + + 'bound (3)' - session has been successfully bound. + + 'pendingUnbind (4)' - session enters this state + when an UNBIND is sent and before the + rsp(UNBIND) is received. + + Session deactivation: + + If a session is in the operational state + 'bound (3)' then setting the value of this + object to 'unbound (1)' will initiate the + session shutdown. + + If a session is in the operational state + 'pendingBind (2)' then setting the value of this + object to 'unbound (1)' will initiate the session + shutdown. + + If a session is in the operational state + 'pendingUnbind (4)' for an abnormally long period + of time (e.g., three minutes) then setting the value + of this object to 'unbound (1)' will change the + session operational state to 'unbound (1)'. " + + ::= { appcActSessEntry 23 } + +appcActSessUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the session has been active, measured in + hundredths of a second." + + ::= { appcActSessEntry 24 } + +appcActSessRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local HPR Network Connection Endpoint of the session." + ::= { appcActSessEntry 25 } + +appcActSessRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local RTP connection TCID of the session." + + ::= { appcActSessEntry 26 } + +appcActSessLinkIndex OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the link over which the session passes. + This value points to the row in the table containing + information on the link instance. (e.g., the sdlcLSAdminTable + of the SNA DLC MIB module). This object may be NULL if the + link is not specified or if a link is not applicable (as for + APPN-level nodes)." + + ::= { appcActSessEntry 27 } + + +-- *************************************************************** +-- The following table contains session statistics for APPC sessions. +-- *************************************************************** + +appcSessStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcSessStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic statistical information relating + to active APPC sessions. The entries in this table cannot be + created by a Management Station. Two entries are present in + the table when both session partners are local. This table is + populated only when the value of appcCntrlOperStat is + 'active'." + + ::= { appcSession 2 } + +appcSessStatsEntry OBJECT-TYPE + SYNTAX AppcSessStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains statistics information for an APPC session. Each + entry is created by the Agent. Objects in this table have + read-only access. Each session from appcActSessTable has one + entry in this table." + + INDEX { appcSessStatsLocLuName, + appcSessStatsParLuName, + appcSessStatsSessIndex } + + ::= { appcSessStatsTable 1 } + +AppcSessStatsEntry ::= SEQUENCE { + appcSessStatsLocLuName DisplayString, + appcSessStatsParLuName DisplayString, + appcSessStatsSessIndex Integer32, + appcSessStatsSentFmdBytes Counter32, + appcSessStatsSentNonFmdBytes Counter32, + appcSessStatsRcvdFmdBytes Counter32, + appcSessStatsRcvdNonFmdBytes Counter32, + appcSessStatsSentFmdRus Counter32, + appcSessStatsSentNonFmdRus Counter32, + appcSessStatsRcvdFmdRus Counter32, + appcSessStatsRcvdNonFmdRus Counter32, + appcSessStatsCtrUpTime TimeTicks + } + +appcSessStatsLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, then the + two entries being indexed apply to the same resource + (specifically, to the same local LU)." + + ::= { appcSessStatsEntry 1 } + +appcSessStatsParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the partner LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same resource + (specifically, to the same partner LU)." + + ::= { appcSessStatsEntry 2 } + +appcSessStatsSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the index of the session, which is + unique for this LU pair. It is recommended that an Agent not + reuse the index of a deactivated session for a significant + period of time (e.g., one week). + + If this object has the same value as appcActSessIndex for the + same LU pair, then the two entries being indexed apply to the + same resource (specifically, to the same session)." + + ::= { appcSessStatsEntry 3 } + +appcSessStatsSentFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) bytes sent by the + local LU." + + ::= { appcSessStatsEntry 4 } + +appcSessStatsSentNonFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) bytes + sent by the local LU." + + ::= { appcSessStatsEntry 5 } + +appcSessStatsRcvdFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) bytes received by + the local LU." + + ::= { appcSessStatsEntry 6 } + +appcSessStatsRcvdNonFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) bytes + received by the local LU." + + ::= { appcSessStatsEntry 7 } + +appcSessStatsSentFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) RUs sent by the + local LU." + + ::= { appcSessStatsEntry 8 } + +appcSessStatsSentNonFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) RUs sent + by the local LU." + + ::= { appcSessStatsEntry 9 } + +appcSessStatsRcvdFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) RUs received by + the local LU." + + ::= { appcSessStatsEntry 10 } + +appcSessStatsRcvdNonFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) RUs + received by the local LU." + + ::= { appcSessStatsEntry 11 } + +appcSessStatsCtrUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the counters for this session have been + active, measured in hundredths of a second." + + ::= { appcSessStatsEntry 12 } + + +-- ********************************************************************* +-- APPC Historical Session Table +-- --------------------------------------------------------------------- +-- This table contains historical information about APPC sessions that +-- terminated abnormally. It is an implementation choice how long to +-- retain information on a given session. +-- ********************************************************************* +appcHistSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcHistSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about APPC sessions that + terminated abnormally. Two entries may be present in the table + when both session partners are local. It is an implementation + choice how long to retain information about a given session." + + ::= { appcSession 3 } + +appcHistSessEntry OBJECT-TYPE + SYNTAX AppcHistSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Session History Table. This table is indexed by + an integer which is continuously incremented until it + eventually wraps." + INDEX + { appcHistSessIndex } + + ::= { appcHistSessTable 1 } + +AppcHistSessEntry ::= SEQUENCE { + appcHistSessIndex INTEGER, + appcHistSessTime DateAndTime, + appcHistSessType INTEGER, + appcHistSessLocLuName DisplayString, + appcHistSessParLuName DisplayString, + appcHistSessModeName DisplayString, + appcHistSessUnbindType OCTET STRING, + appcHistSessSenseData SnaSenseData, + appcHistSessComponentId DisplayString, + appcHistSessDetectModule DisplayString + } + + +appcHistSessIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. The value of the index begins at zero + and is incremented up to a maximum value of 2**31-1 + (2,147,483,647) before wrapping." + + ::= { appcHistSessEntry 1 } + +appcHistSessTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the session was either terminated or + failed to be established." + + ::= { appcHistSessEntry 2 } + +appcHistSessType OBJECT-TYPE + SYNTAX INTEGER { + recvNegBindRsp(1), + sendNegBindRsp(2), + sessActRejected(3), + unbindSent(4), + unbindReceived(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of event that caused the entry to be made: + + recvNegBindRsp - Received a negative bind response from + the partner LU. + sendNegBindRsp - Sent a negative bind response to the + partner LU. + sessActRejected - Session activation rejected by the + partner LU. + unbindSent - Unbind sent to the partner LU. + unbindReceived - Unbind received from the partner LU. + + These event types correspond to the five SNA/MS Alerts + LU62001 through LU62005, documented in the SNA Management + Services Reference." + + ::= { appcHistSessEntry 3 } + +appcHistSessLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified local LU name. This field is from 3 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcHistSessEntry 4 } + +appcHistSessParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified partner LU name. This field is from 3 + to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present." + + ::= { appcHistSessEntry 5 } + +appcHistSessModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name of the session." + ::= { appcHistSessEntry 6 } + +appcHistSessUnbindType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of unbind which terminated the session. This + value is consists of one (1) octet; and its meaning + is defined in SNA Formats." + + ::= { appcHistSessEntry 7 } + +appcHistSessSenseData OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the termination of the + session, taken from the negative BIND response or UNBIND + request." + + ::= { appcHistSessEntry 8 } + +appcHistSessComponentId OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation-specific name of the component which + detected the problem." + + ::= { appcHistSessEntry 9 } + +appcHistSessDetectModule OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation-specific name of the module which + detected the problem." + + ::= { appcHistSessEntry 10 } + + +-- ********************************************************************* +-- APPC Session RTP Connection Table +-- --------------------------------------------------------------------- + +-- This table contains information on APPC sessions that are being +-- transported on RTP connections by High Performance Routing (HPR). +-- ********************************************************************* +appcSessRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcSessRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating how many APPC sessions terminating in this + node are transported by each RTP connection." + + ::= { appcSession 4 } + +appcSessRtpEntry OBJECT-TYPE + SYNTAX AppcSessRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC session RTP table." + + INDEX { appcSessRtpNceId, + appcSessRtpTcid } + + ::= { appcSessRtpTable 1 } + +AppcSessRtpEntry ::= SEQUENCE { + appcSessRtpNceId OCTET STRING, + appcSessRtpTcid OCTET STRING, + appcSessRtpSessions Gauge32 + } + +appcSessRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint of the RTP connection." + + ::= { appcSessRtpEntry 1 } + +appcSessRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of the RTP connection." + + ::= { appcSessRtpEntry 2 } + +appcSessRtpSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of APPC sessions terminating in this node + that are using this RTP connection." + + ::= { appcSessRtpEntry 3 } + + +-- ********************************************************************* +-- APPC Active Conversation Table +-- This table contains information about active APPC conversations. +-- ********************************************************************* + +appcActiveConvTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcActiveConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about active APPC Conversations. In this + context 'active' means that a conversation is currently + associated with a particular session. Two entries are present + in the table when both LUs for the session are local." + + ::= { appcConversation 1 } + +appcActiveConvEntry OBJECT-TYPE + SYNTAX AppcActiveConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one active APPC Conversation." + + INDEX { appcActiveConvLocLuName, + appcActiveConvParLuName, + appcActiveConvSessIndex } + + ::= { appcActiveConvTable 1} + +AppcActiveConvEntry ::= SEQUENCE { + appcActiveConvLocLuName DisplayString, + appcActiveConvParLuName DisplayString, + appcActiveConvSessIndex Integer32, + appcActiveConvId OCTET STRING, + appcActiveConvState INTEGER, + appcActiveConvType INTEGER, + appcActiveConvCorrelator OCTET STRING, + appcActiveConvSyncLvl INTEGER, + appcActiveConvSource INTEGER, + appcActiveConvDuplex INTEGER, + appcActiveConvUpTime TimeTicks, + appcActiveConvSendBytes Counter32, + appcActiveConvRcvBytes Counter32, + appcActiveConvUserid DisplayString, + appcActiveConvPcidNauName DisplayString, + appcActiveConvPcid OCTET STRING, + appcActiveConvModeName DisplayString, + appcActiveConvLuwIdName DisplayString, + appcActiveConvLuwIdInstance OCTET STRING, + appcActiveConvLuwIdSequence OCTET STRING, + appcActiveConvTpName DisplayString + } + +appcActiveConvLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU for the conversation. This field + is from 1 to 17 characters in length, including a period (.) + which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcActiveConvEntry 1 } + +appcActiveConvParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU for the conversation. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same + resource (specifically, to the same partner LU)." + + ::= { appcActiveConvEntry 2 } + +appcActiveConvSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of entry in appcActSessTable that is associated with + this conversation. If this object has the same value as + appcActSessIndex for the same LU pair, then the two entries + being indexed apply to the same resource (specifically, to the + same session)." + + ::= { appcActiveConvEntry 3 } + +appcActiveConvId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 4-byte ID of the conversation." + + ::= { appcActiveConvEntry 4 } + +appcActiveConvState OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + send(2), + receive(3), + confirm(4), + confirmSend(5), + confirmDealloc(6), + pendingDeallocate(7), + pendingPost(8), + sendReceive(9), + sendOnly(10), + receiveOnly(11), + deferReceive(12), + deferDeallocate(13), + syncpoint(14), + syncpointSend(15), + syncpointDeallocate(16), + backoutRequired(17) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the state of the conversation at the instant when + the information was retrieved. The values are: + reset + The conversation is reset (i.e., deallocated). + send + The conversation can send data. This value also + is returned if the conversation is in + Send-Pending state. + receive + The conversation can receive data. + confirm + The conversation has received a confirm + indicator. It can issue an [MC_]CONFIRMED or + [MC_]SEND_ERROR verb to change state. It will + continue in Receive state if an [MC_]CONFIRMED + verb is issued. + confirmSend + The conversation is in Confirm state and changes + to Send state when an [MC_]CONFIRMED verb is + issued. + confirmDealloc + The conversation is in Confirm state and becomes + inactive when an [MC_]CONFIRMED verb is issued. + pendingDeallocate + The conversation is in Pending-Deallocate state + while it waits for (MC_)DEALLOCATE TYPE + (sync_level) to complete. + pendingPost + The conversation is in Pending-Post state while + it waits for the [MC_]RECEIVE_AND_POST verb to + complete its receive function. + sendReceive + The full-duplex conversation can send or receive + data. + sendOnly + The full-duplex conversation can send data, but + it does not have permission to receive data, + because the partner TP has already deallocated + its side of the conversation. + receiveOnly + The full-duplex conversation can receive data, + but it does not have permission to send data, + because it has already deallocated its side of + the conversation. + deferReceive + Waiting for a successful SYNCPT verb operation to + go into the receive state. + deferDeallocate + Waiting for a successful SYNCPT verb operation to + go into the reset state. + syncpoint + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + receive. + syncpointSend + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + send. + syncpointDeallocate + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + reset. + backoutRequired + TP must execute a BACKOUT verb to backout the + transaction." + + ::= { appcActiveConvEntry 5 } + +appcActiveConvType OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + mapped(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of conversation. The values are: + + basic + Indicates that this conversation supports + basic verbs. + + mapped + Indicates that this conversation supports + mapped verbs." + + + ::= { appcActiveConvEntry 6 } + +appcActiveConvCorrelator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is an 8-byte identifier that the source LU assigns to the + conversation; the source LU is the one that sent the allocation + request. The conversation correlator is included on the + allocation request. The conversation correlator uniquely + identifies a conversation, from among all conversations, + between the local and partner LUs. It may be used, for + example, during problem determination associated with a + conversation. A length of 0 indicates that no conversation + correlator is defined." + + ::= { appcActiveConvEntry 7 } + +appcActiveConvSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + confirm(2), + syncpt(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the highest sync level support for the conversation. + The values are: + + none + Indicates that no sync-level processing can be + performed on this conversation. The + transaction program does not issue verbs or + recognize any returned parameters + relating to any sync-level function. + + confirm + Indicates that confirmation processing can be + performed on this conversation. The + transaction program can issue verbs and + recognize returned parameters relating to + confirmation. + + syncpt + Indicates that syncpt and confirmation processing + can be performed on this conversation. The + transaction program can issue verbs and recognize + returned parameters relating to syncpt and + confirmation." + + ::= { appcActiveConvEntry 8 } + +appcActiveConvSource OBJECT-TYPE + SYNTAX INTEGER { + localLu(1), + partnerLu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the local or partner LU is the source of the + conversation, that is, which LU started the conversation by + sending the allocation request. + + localLu + The local LU is the source of the conversation, + and the partner LU is the target of the + conversation. + + partnerLu + The partner LU is the source of the + conversation, and the local LU is the target of + the conversation." + + ::= { appcActiveConvEntry 9 } + +appcActiveConvDuplex OBJECT-TYPE + SYNTAX INTEGER { + half(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the conversation duplex style in effect for the + conversation. + + half Indicates that information can be transferred in + both directions, but only in one direction at a + time. + + full Indicates that information can be transferred in + both directions at the same time." + + ::= { appcActiveConvEntry 10 } + +appcActiveConvUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time since the conversation started, measured in + hundredths of a second." + + ::= { appcActiveConvEntry 11 } + +appcActiveConvSendBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of bytes that was sent on the + conversation. The count includes all SNA RU bytes sent, + including those in the FMH-5 (Attach), FMH-7 (Error + Description), SIGNAL, LUSTAT, and SNA responses; it does not + include SNA TH and RH bytes." + + ::= { appcActiveConvEntry 12 } + +appcActiveConvRcvBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of bytes that was received on the + conversation. The count includes all SNA RU bytes sent, + including those in the FMH-5 (Attach), FMH-7 (Error + Description), SIGNAL, LUSTAT, and SNA responses; it does not + include SNA TH and RH bytes." + + ::= { appcActiveConvEntry 13 } + +appcActiveConvUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user ID that the initiating program provided in the + incoming attach." + + ::= { appcActiveConvEntry 14 } + +appcActiveConvPcidNauName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified NAU name of the + node at which the session and PCID originated. For APPN + and LEN nodes, this is either CP name of the APPN node at + which the origin LU is located or the CP name of the + NN serving the LEN node at which the origin LU is + located. This field is from 3 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name. A null string indicates + that the value is unknown." + + ::= { appcActiveConvEntry 15 } + +appcActiveConvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of the session. + It is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcActiveConvEntry 16 } + +appcActiveConvModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Mode Name used for this conversation. + This is a 1-8 character name." + + ::= { appcActiveConvEntry 17 } + +appcActiveConvLuwIdName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the LU that initiated the logical unit of work + that is associated with this active TP. This field is from + 1 to 17 characters in length, including a period (.) which + separates the NetId from the LU name if the NetId is present." + + ::= { appcActiveConvEntry 18 } + +appcActiveConvLuwIdInstance OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance identifier for the logical unit of work." + + ::= { appcActiveConvEntry 19 } + +appcActiveConvLuwIdSequence OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence identifier for the logical unit of work." + + ::= { appcActiveConvEntry 20 } + +appcActiveConvTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transaction program name which started this conversation. + This name could either be from a FMH5 ATTACH for a remotely + started conversation, otherwise it could the name of the local + TP if available. + + When the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + + This name is NULL if the conversation is started locally + (i.e., not with a FMH5 ATTACH)." + + ::= { appcActiveConvEntry 21 } + +-- ********************************************************************* +-- APPC Historical Conversation Table +-- This table contains historical information about APPC +-- conversations that ended abnormally. It is an implementation +-- choice how long to retain information on a given conversation. +-- ********************************************************************* + +appcHistConvTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcHistConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about APPC Conversations that + ended in error. Possible categories of error conditions that + could be saved in this table are: + + - allocation errors, + - deallocate abend, + - program errors, and + - service errors." + + ::= { appcConversation 2 } + +appcHistConvEntry OBJECT-TYPE + SYNTAX AppcHistConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one APPC Conversation." + + INDEX + { appcHistConvIndex } + + ::= { appcHistConvTable 1} + +AppcHistConvEntry ::= SEQUENCE { + appcHistConvIndex Integer32, + appcHistConvEndTime DateAndTime, + appcHistConvLocLuName DisplayString, + appcHistConvParLuName DisplayString, + appcHistConvTpName DisplayString, + appcHistConvPcidNauName DisplayString, + appcHistConvPcid OCTET STRING, + appcHistConvSenseData SnaSenseData, + appcHistConvLogData OCTET STRING, + appcHistConvEndedBy INTEGER + } + +appcHistConvIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index for entry in Conversation table. This value identifies + the unique index of the conversation. It is recommended that + an Agent not reuse the index of a deactivated conversation for + a significant period of time (e.g. one week)." + + ::= { appcHistConvEntry 1 } + +appcHistConvEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the conversation ended." + + ::= { appcHistConvEntry 2 } + +appcHistConvLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the local LU for this conversation. This field is + from 1 to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present." + + ::= { appcHistConvEntry 3 } + +appcHistConvParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU for the conversation. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present." + + ::= { appcHistConvEntry 4 } + +appcHistConvTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transaction program name which started this conversation. + This name could either be from a FMH5 ATTACH for a remotely + started conversation, otherwise it could the name of the local + TP if available. + + When the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + + This name is NULL if the conversation is started locally + (i.e., not with a FMH5 ATTACH)." + + ::= { appcHistConvEntry 5 } + +appcHistConvPcidNauName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified NAU name of the + node at which the session and PCID originated. For APPN + and LEN nodes, this is either CP name of the APPN node at + which the origin LU is located or the CP name of the + NN serving the LEN node at which the origin LU is + located. This field is from 3 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name. A null string indicates that the + value is unknown." + + ::= { appcHistConvEntry 6 } + +appcHistConvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of the session. + It is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcHistConvEntry 7 } + +appcHistConvSenseData OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the action that ended this + conversation, e.g., FMH-7 or UNBIND." + + ::= { appcHistConvEntry 8 } + +appcHistConvLogData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The first 32 bytes of the data portion of the Log Data GDS + Variable that is associated with the last FMH-7 that occurred + on this conversation. If there was no Log Data GDS Variable + associated with the FMH-7, this object is null. + + This object reflects only the data portion of the Log Data + GDS Variable (i.e. not the LL or GDS Id)." + + ::= { appcHistConvEntry 9 } + +appcHistConvEndedBy OBJECT-TYPE + SYNTAX INTEGER { + localLu(1), + partnerLu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which LU ended the conversation." + + ::= { appcHistConvEntry 10 } + +-- ********************************************************************* +-- APPC CPIC Admin Table +-- Objects in this table contain default or expected configuration +-- values for CPI-C side information. +-- ********************************************************************* +appcCpicAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcCpicAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC CPI-C side information table." + + ::= { appcCPIC 1 } + +appcCpicAdminEntry OBJECT-TYPE + SYNTAX AppcCpicAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC CPI-C side information Table." + INDEX { appcCpicAdminLocLuName, + appcCpicAdminSymbDestName } + + ::= { appcCpicAdminTable 1 } + +AppcCpicAdminEntry ::= SEQUENCE { + appcCpicAdminLocLuName DisplayString, + appcCpicAdminSymbDestName DisplayString, + appcCpicAdminParLuAlias DisplayString, + appcCpicAdminParLuName DisplayString, + appcCpicAdminModeName DisplayString, + appcCpicAdminTpNameType INTEGER, + appcCpicAdminTpName DisplayString, + appcCpicAdminUserid DisplayString, + appcCpicAdminSecurity INTEGER + } + +appcCpicAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this CPI-C side + information definition applies. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the definition applies + to all local LUs, and not just to a single local LU." + + ::= { appcCpicAdminEntry 1 } + +appcCpicAdminSymbDestName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the symbolic destination name used by CPI-C + applications to identify this definition." + + ::= { appcCpicAdminEntry 2 } + +appcCpicAdminParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcCpicAdminEntry 3 } + + +appcCpicAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcCpicAdminEntry 4 } + + +appcCpicAdminModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 space + characters)." + + ::= { appcCpicAdminEntry 5 } + + +appcCpicAdminTpNameType OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + snaServiceTp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the TP name in appcCpicAdminTpName + identifies a normal TP or an SNA service TP. In this context, + a normal TP is one with a name consisting only of displayable + characters, while an SNA service TP has a name containing + octets that do not map to displayable characters." + + ::= { appcCpicAdminEntry 6 } + +appcCpicAdminTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the partner TP to be used when a CPI-C + application initiates a conversation specifying this side + information entry. + + Display convention + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have a + non-displayable EBCDIC code point (value less than or equal + to x'3F') as the first character, so they cannot be + directly mapped to an ASCII display string. These TP names + are converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For + example, the 2-byte TP name x'06F1' (CNOS) is converted to + the 6-byte ASCII display string '06F1' (including the two + single quotes)." + + ::= { appcCpicAdminEntry 7 } + +appcCpicAdminUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The security userid, if any, associated with the side + information definition." + + ::= { appcCpicAdminEntry 8 } + +appcCpicAdminSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + same(2), + pgm(3), + pgmStrong(4), + distributed(5), + mutual(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the security information to be used for allocating + the conversation. + none - No security information. + same - Use the security environment currently + associated with this TP. + pgm - Use the program-supplied user_id and password. + pgmStrong - Use the program-supplied user_id and password. + The local LU will insure that the password is + not exposed in clear-text form on the physical + network. + distributed - Use the security environment and a distributed + security system to generate the authentication + information for this request. If distributed + security tokens cannot be generated, then fail + the conversation. + mutual - Authenticate both the user to the destination + system and the destination system to the user." + + ::= { appcCpicAdminEntry 9 } + + +-- ********************************************************************* +-- APPC CPIC Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for CPI-C side +-- information. +-- ********************************************************************* + +appcCpicOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcCpicOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC CPI-C side information operational table." + + ::= { appcCPIC 2 } + +appcCpicOperEntry OBJECT-TYPE + SYNTAX AppcCpicOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC CPI-C side information Table." + + INDEX { appcCpicOperLocLuName, + appcCpicOperSymbDestName } + + ::= { appcCpicOperTable 1 } + +AppcCpicOperEntry ::= SEQUENCE { + appcCpicOperLocLuName DisplayString, + appcCpicOperSymbDestName DisplayString, + appcCpicOperParLuAlias DisplayString, + appcCpicOperParLuName DisplayString, + appcCpicOperModeName DisplayString, + appcCpicOperTpNameType INTEGER, + appcCpicOperTpName DisplayString, + appcCpicOperUserid DisplayString, + appcCpicOperSecurity INTEGER + } + +appcCpicOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this CPI-C side + information definition applies. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the definition applies + to all local LUs, and not just to a single local LU." + + ::= { appcCpicOperEntry 1 } + +appcCpicOperSymbDestName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the symbolic destination name used by CPI-C + applications to identify this definition." + + ::= { appcCpicOperEntry 2 } + +appcCpicOperParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or not + applicable, this object contains a zero-length string." + + ::= { appcCpicOperEntry 3 } + +appcCpicOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcCpicOperEntry 4 } + + +appcCpicOperModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 space + characters)." + + ::= { appcCpicOperEntry 5 } + + +appcCpicOperTpNameType OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + snaServiceTp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the TP name in appcCpicOperTpName identifies + a normal TP or an SNA service TP. In this context, a normal TP + is one with a name consisting only of displayable characters, + while an SNA service TP has a name containing octets that do + not map to displayable characters." + + ::= { appcCpicOperEntry 6 } + +appcCpicOperTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the partner TP to be used when a CPI-C + application initiates a conversation specifying this side + information entry. + Display convention + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have + a non-displayable EBCDIC code point (value less than or + equal to x'3F') as the first character, so they cannot be + directly mapped to an ASCII display string. These TP + names are converted to a display string that is equivalent + to a hexadecimal display of the EBCDIC code points. For + example, the 2-byte TP name x'06F1' (CNOS) is converted to + the 6-byte ASCII display string '06F1' (including the two + single quotes)." + + ::= { appcCpicOperEntry 7 } + +appcCpicOperUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The security userid, if any, associated with the active side + information definition." + + ::= { appcCpicOperEntry 8 } + +appcCpicOperSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + same(2), + pgm(3), + pgmStrong(4), + distributed(5), + mutual(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the security information to be used for allocating + the conversation. + + none - No security information. + same - Use the security environment currently + associated with this TP. + pgm - Use the program-supplied user_id and password. + pgmStrong - Use the program-supplied user_id and password. + The local LU will insure that the password is + not exposed in clear-text form on the physical + network. + distributed - Use the security environment and a distributed + security system to generate the authentication + information for this request. If distributed + security tokens cannot be generated, then fail + the conversation. + mutual - Authenticate both the user to the destination + system and the destination system to the user." + + ::= { appcCpicOperEntry 9 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +appcConformance OBJECT IDENTIFIER ::= {appcMIB 2 } + +appcCompliances OBJECT IDENTIFIER ::= {appcConformance 1 } +appcGroups OBJECT IDENTIFIER ::= {appcConformance 2 } + +-- Compliance statements +appcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the APPC MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appcGlobalConfGroup, + appcLluConfGroup, + appcParLuConfGroup, + appcModeConfGroup, + appcTpConfGroup, + appcSessionConfGroup + } + +-- Conditionally mandatory groups + GROUP appcControlConfGroup + DESCRIPTION + "The appcControlConfGroup is mandatory only for those + entities which implement activation and deactivation of + specific controls such as statistics collecting and + counting." + GROUP appcCnosConfGroup + DESCRIPTION + "The appcCnosConfGroup is mandatory only for those entities + which implement CNOS. " + + GROUP appcCpicConfGroup + DESCRIPTION + "The appcCpicConfGroup is mandatory only for those entities + which implement CPI-C. " + + + GROUP appcConversationConfGroup + DESCRIPTION + "The appcConversationConfGroup is mandatory only for those + entities which implement session endpoints for non-control + APPC sessions." + +-- MIN-ACCESS for objects + OBJECT appcActSessOperState + MIN-ACCESS read-only + DESCRIPTION + "An implementation is not required to support session + deactivation via this object." + + ::= {appcCompliances 1 } + +-- Units of conformance +appcGlobalConfGroup OBJECT-GROUP + OBJECTS { + appcUpTime, + appcDefaultModeName, + appcDefaultLuName, + appcDefaultImplInbndPlu, + appcDefaultMaxMcLlSndSize, + appcDefaultFileSpec, + appcDefaultTpOperation, + appcDefaultTpConvSecRqd, + appcLocalCpName, + appcActiveSessions, + appcActiveHprSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + global information and defaults." + + ::= { appcGroups 1 } + +appcLluConfGroup OBJECT-GROUP + OBJECTS { + appcLluAdminDepType, + appcLluAdminLocalAddress, + appcLluAdminSessLimit, + appcLluAdminBindRspMayQ, + appcLluAdminCompression, + appcLluAdminInBoundCompLevel, + appcLluAdminOutBoundCompLevel, + appcLluAdminCompRleBeforeLZ, + appcLluAdminAlias, + + appcLluOperDepType, + appcLluOperLocalAddress, + appcLluOperSessLimit, + appcLluOperBindRspMayQ, + appcLluOperCompression, + appcLluOperInBoundCompLevel, + appcLluOperOutBoundCompLevel, + appcLluOperCompRleBeforeLZ, + appcLluOperAlias, + appcLluOperActiveSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + local LU6.2s." + + ::= { appcGroups 2 } + +appcParLuConfGroup OBJECT-GROUP + OBJECTS { + appcLuPairAdminParLuAlias, + appcLuPairAdminSessLimit, + appcLuPairAdminSessSec, + appcLuPairAdminSecAccept, + appcLuPairAdminLinkObjId, + appcLuPairAdminParaSessSup, + + appcLuPairOperParLuAlias, + appcLuPairOperSessLimit, + appcLuPairOperSessSec, + appcLuPairOperSecAccept, + appcLuPairOperLinkObjId, + appcLuPairOperParaSessSup, + appcLuPairOperParaSessSupLS, + appcLuPairOperState + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + partner LUs." + + ::= { appcGroups 3 } + +appcModeConfGroup OBJECT-GROUP + OBJECTS { + appcModeAdminCosName, + appcModeAdminSessEndTpName, + appcModeAdminMaxSessLimit, + appcModeAdminMinCwinLimit, + appcModeAdminMinClosLimit, + appcModeAdminConWinAutoActLmt, + appcModeAdminRecvPacWinSz, + appcModeAdminSendPacWinSz, + appcModeAdminPrefRecvRuSz, + + appcModeAdminPrefSendRuSz, + appcModeAdminRecvRuSzUpBnd, + appcModeAdminSendRuSzUpBnd, + appcModeAdminRecvRuSzLoBnd, + appcModeAdminSendRuSzLoBnd, + appcModeAdminSingSessReinit, + appcModeAdminCompression, + appcModeAdminInBoundCompLevel, + appcModeAdminOutBoundCompLevel, + appcModeAdminCompRleBeforeLZ, + appcModeAdminSyncLvl, + appcModeAdminCrypto, + + appcModeOperCosName, + appcModeOperSessEndTpName, + appcModeOperSessLimit, + appcModeOperMaxSessLimit, + appcModeOperMinCwinLimit, + appcModeOperMinClosLimit, + appcModeOperConWinAutoActLmt, + appcModeOperRecvPacWinSz, + appcModeOperSendPacWinSz, + appcModeOperPrefRecvRuSz, + appcModeOperPrefSendRuSz, + appcModeOperRecvRuSzUpBnd, + appcModeOperSendRuSzUpBnd, + appcModeOperRecvRuSzLoBnd, + appcModeOperSendRuSzLoBnd, + appcModeOperSingSessReinit, + appcModeOperCompression, + appcModeOperInBoundCompLevel, + appcModeOperOutBoundCompLevel, + appcModeOperCompRleBeforeLZ, + appcModeOperSyncLvl, + appcModeOperCrypto, + appcModeOperSyncLvlLastStart, + appcModeOperCryptoLastStart, + appcModeOperCNOSNeg, + appcModeOperActCwin, + appcModeOperActClos, + appcModeOperPndCwin, + appcModeOperPndClos, + appcModeOperPtmCwin, + appcModeOperPtmClos, + appcModeOperDrainSelf, + appcModeOperDrainPart + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + modes." + + ::= { appcGroups 4 } + +appcTpConfGroup OBJECT-GROUP + OBJECTS { + appcTpAdminFileSpec, + appcTpAdminStartParm, + appcTpAdminTpOperation, + appcTpAdminInAttachTimeout, + appcTpAdminRcvAllocTimeout, + appcTpAdminSyncLvl, + appcTpAdminInstLmt, + appcTpAdminStatus, + appcTpAdminLongRun, + appcTpAdminConvType, + appcTpAdminConvDuplex, + appcTpAdminConvSecReq, + appcTpAdminVerPip, + appcTpAdminPipSubNum + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + Transaction Programs." + + ::= { appcGroups 5 } + +appcSessionConfGroup OBJECT-GROUP + OBJECTS { + appcActSessPcidCpName, + appcActSessPcid, + appcActSessPluIndicator, + appcActSessModeName, + appcActSessCosName, + appcActSessTransPriority, + appcActSessEnhanceSecSup, + appcActSessSendPacingType, + appcActSessSendRpc, + appcActSessSendNxWndwSize, + appcActSessRecvPacingType, + appcActSessRecvRpc, + appcActSessRecvNxWndwSize, + appcActSessRscv, + appcActSessInUse, + appcActSessMaxSndRuSize, + appcActSessMaxRcvRuSize, + appcActSessSndPacingSize, + appcActSessRcvPacingSize, + appcActSessOperState, + appcActSessUpTime, + appcActSessRtpNceId, + appcActSessRtpTcid, + appcActSessLinkIndex, + + appcSessStatsSentFmdBytes, + appcSessStatsSentNonFmdBytes, + appcSessStatsRcvdFmdBytes, + appcSessStatsRcvdNonFmdBytes, + appcSessStatsSentFmdRus, + appcSessStatsSentNonFmdRus, + appcSessStatsRcvdFmdRus, + appcSessStatsRcvdNonFmdRus, + appcSessStatsCtrUpTime, + + appcHistSessTime, + appcHistSessType, + appcHistSessLocLuName, + appcHistSessParLuName, + appcHistSessModeName, + appcHistSessUnbindType, + appcHistSessSenseData, + appcHistSessComponentId, + appcHistSessDetectModule, + + appcSessRtpSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + LU6.2 sessions." + + ::= { appcGroups 6 } + +appcControlConfGroup OBJECT-GROUP + OBJECTS { + appcCntrlAdminStat, + appcCntrlAdminRscv, + appcCntrlAdminTrace, + appcCntrlAdminTraceParm, + appcCntrlOperStat, + appcCntrlOperStatTime, + appcCntrlOperRscv, + appcCntrlOperRscvTime, + appcCntrlOperTrace, + appcCntrlOperTraceTime, + appcCntrlOperTraceParm + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + control." + + ::= { appcGroups 7 } + +appcCnosConfGroup OBJECT-GROUP + OBJECTS { + appcCnosCommand, + appcCnosMaxSessLimit, + appcCnosMinCwinLimit, + appcCnosMinClosLimit, + appcCnosDrainSelf, + appcCnosDrainPart, + appcCnosResponsible, + appcCnosForce, + appcCnosTargetLocLuName, + appcCnosTargetParLuName, + appcCnosTargetModeName + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + CNOS processing." + ::= { appcGroups 8 } + +appcCpicConfGroup OBJECT-GROUP + OBJECTS { + appcCpicAdminParLuAlias, + appcCpicAdminParLuName, + appcCpicAdminModeName, + appcCpicAdminTpNameType, + appcCpicAdminTpName, + appcCpicAdminUserid, + appcCpicAdminSecurity, + appcCpicOperParLuAlias, + appcCpicOperParLuName, + appcCpicOperModeName, + appcCpicOperTpNameType, + appcCpicOperTpName, + appcCpicOperUserid, + appcCpicOperSecurity + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + CPI-C side information." + + ::= { appcGroups 9 } + +appcConversationConfGroup OBJECT-GROUP + OBJECTS { + appcActiveConvId, + appcActiveConvState, + appcActiveConvType, + appcActiveConvCorrelator, + appcActiveConvSyncLvl, + appcActiveConvSource, + appcActiveConvDuplex, + appcActiveConvUpTime, + appcActiveConvSendBytes, + appcActiveConvRcvBytes, + appcActiveConvUserid, + appcActiveConvPcidNauName, + appcActiveConvPcid, + appcActiveConvModeName, + appcActiveConvLuwIdName, + appcActiveConvLuwIdInstance, + appcActiveConvLuwIdSequence, + appcActiveConvTpName, + + appcHistConvEndTime, + appcHistConvLocLuName, + appcHistConvParLuName, + appcHistConvTpName, + appcHistConvPcidNauName, + appcHistConvPcid, + appcHistConvSenseData, + appcHistConvLogData, + appcHistConvEndedBy + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + conversations." + + ::= { appcGroups 10 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/APPLETALK-MIB b/mibs/ietf/APPLETALK-MIB new file mode 100644 index 0000000..198124e --- /dev/null +++ b/mibs/ietf/APPLETALK-MIB @@ -0,0 +1,3409 @@ +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 diff --git a/mibs/ietf/APPLICATION-MIB b/mibs/ietf/APPLICATION-MIB new file mode 100644 index 0000000..71e5797 --- /dev/null +++ b/mibs/ietf/APPLICATION-MIB @@ -0,0 +1,2999 @@ +APPLICATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter64, Counter32, Gauge32, + mib-2, Unsigned32, zeroDotZero FROM SNMPv2-SMI + + DateAndTime, TEXTUAL-CONVENTION, + TestAndIncr, TDomain, + TimeStamp, TruthValue FROM SNMPv2-TC + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + LongUtf8String, sysApplElmtRunIndex FROM SYSAPPL-MIB; + +applicationMib MODULE-IDENTITY + LAST-UPDATED "9811171815Z" + ORGANIZATION "Application MIB Working Group" + CONTACT-INFO + "http://www.ietf.org/html.charters/applmib-charter.html + + Randy Presuhn + BMC Software, Inc. + 965 Stewart Drive + Sunnyvale, CA 94086 + USA + + Telephone: +1 408 616-3100 + Facsimile: +1 408 616-3101 + EMail: randy_presuhn@bmc.com + " + DESCRIPTION + "This MIB defines objects representing generic aspects of + applications that are of interest to management but typically + require instrumentation within managed application elements. + " + ::= { mib-2 62 } + + +-- +-- Registration hierarchy for this MIB +-- +applicationMibObjects OBJECT IDENTIFIER ::= + { applicationMib 1 } +applicationMibConformance OBJECT IDENTIFIER ::= + { applicationMib 2 } + + +-- +-- Groups defined in this MIB +-- +applServiceGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 1 } + +applChannelGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 2 } + +applPastChannelGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 3 } + +applElmtRunControlGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 4 } + + +Unsigned64TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A non-negative 64-bit bit integer, without counter + semantics." + SYNTAX Counter64 + +ApplTAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. + + For snmpUDPDomain, an ApplTAddress 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 (0..255)) + +-- **************************************************************** +-- +-- applServiceGroup - +-- +-- The service-level tables permit the identification of one +-- or more instances of named services on a system, and the +-- association of running application elements to services. +-- +-- **************************************************************** + + +-- **************************************************************** +-- +-- The service name to service instance table +-- +-- **************************************************************** + +applSrvNameToSrvInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvNameToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service name to service instance table uses + service name as its primary key, and service instance + identifier as its secondary key. It facilitates the + identification and lookup of the instances of a given + service in a system." + ::= { applServiceGroup 1 } + +applSrvNameToSrvInstEntry OBJECT-TYPE + SYNTAX ApplSrvNameToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvNameToSrvInstEntry identifies an instance of + a given service. The allocation and reservation + of unique values for applSrvIndex is an administrative + issue. + + An applSrvNameToSrvInstEntry exists for the lifetime of + that instance of that service; the index values may not + change during that lifetime. " + INDEX { applSrvName, applSrvIndex } + ::= { applSrvNameToSrvInstTable 1 } + +ApplSrvNameToSrvInstEntry ::= SEQUENCE + { + applSrvInstQual SnmpAdminString + } + + +applSrvInstQual OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of applSrcInstQual provides additional + information about this particular instance of this + service. + + Although not used for indexing purposes, the value of + this attribute should be sufficiently unique to be + helpful to an administrator in distinguishing among + service instances. " + ::= { applSrvNameToSrvInstEntry 1 } + + +-- **************************************************************** +-- +-- Service instance to Service Name table +-- +-- **************************************************************** + +applSrvInstToSrvNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvInstToSrvNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service instance to service name table uses + service instance identifier as its primary key, and + service name as its secondary key. Given a service + instance identifier, it facilitates the lookup of the + name of the service being provided." + ::= { applServiceGroup 2 } + +applSrvInstToSrvNameEntry OBJECT-TYPE + SYNTAX ApplSrvInstToSrvNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvInstToSrvNameEntry maps a service instance + identifier back to a service name." + INDEX { applSrvIndex, applSrvName } + ::= { applSrvInstToSrvNameTable 1 } + +ApplSrvInstToSrvNameEntry ::= SEQUENCE + { + applSrvName SnmpAdminString + } + +applSrvName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human-readable name of a service. Where + appropriate, as in the case where a service can be + identified in terms of a single protocol, the strings + should be established names such as those assigned by + IANA and found in STD 2 [13], or defined by some other + authority. In some cases private conventions apply + and the string should in these cases be consistent + with these non-standard conventions. An applicability + statement may specify the service name(s) to be used. + " + ::= { applSrvInstToSrvNameEntry 1 } + +-- **************************************************************** +-- +-- The service instance to running application element table +-- +-- **************************************************************** + +applSrvInstToRunApplElmtTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvInstToRunApplElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service instance to running application element + table uses the service instance identifier as its primary + key, and the running application element index as its + secondary key. This facilitates the identification + of the set of running application elements providing a + given instance of a service." + ::= { applServiceGroup 3 } + +applSrvInstToRunApplElmtEntry OBJECT-TYPE + SYNTAX ApplSrvInstToRunApplElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvInstToRunApplElmtEntry identifies a running + application element providing an instance of a service. + Note that there may be multiple running application + elements involved in the provision of an instance of + a service." + INDEX { applSrvIndex, sysApplElmtRunIndex } + ::= { applSrvInstToRunApplElmtTable 1 } + +ApplSrvInstToRunApplElmtEntry ::= SEQUENCE + { + applSrvIndex Unsigned32 + } + +applSrvIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An applSrvIndex is the system-unique identifier of + an instance of a service. The value is unique not only + across all instances of a given service, but also across + all services in a system. + + Re-use of values for this index should be avoided. + No two service instances in a given system shall + concurrently have the same value for this index. + + The value zero is excluded from the set of permitted + values for this index. This allows other tables to + potentially represent things which cannot be associated + with a specific service instance. + " + ::= { applSrvInstToRunApplElmtEntry 1 } + +-- **************************************************************** +-- +-- The running application element to service instance table +-- +-- **************************************************************** + +applRunApplElmtToSrvInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplRunApplElmtToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The running application element to service instance + table uses the running application element index as + its primary key and the service instance identifier as + its secondary key. It identifies the set of services + provided by a given running application element." + ::= { applServiceGroup 4 } + +applRunApplElmtToSrvInstEntry OBJECT-TYPE + SYNTAX ApplRunApplElmtToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applRunApplElmtToSrvInstEntry serves to identify an + instance of a service being provided by a given running + application element. Note that a particular running + application element may provide multiple services." + INDEX { sysApplElmtRunIndex, applSrvInstance } + ::= { applRunApplElmtToSrvInstTable 1 } + +ApplRunApplElmtToSrvInstEntry ::= SEQUENCE + { + applSrvInstance Unsigned32 + } + +applSrvInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An applSrvInstance is the system-unique identifier of an + instance of a service. The value is unique not only + across all instances of a given service, but also across + all services. + + Re-use of values for this index should be avoided. + No two service instances in a given system shall + concurrently have the same value for this index. + The value zero is excluded from the set of permitted + values for this index. This allows other tables to + potentially represent things which cannot be associated + with a specific service instance. + + This attribute is semantically identical to + applSrvIndex." + ::= { applRunApplElmtToSrvInstEntry 1 } + + +-- **************************************************************** +-- +-- applChannelGroup - group with tables for I/O +-- +-- In this group, the common abstraction is the Channel. +-- Channels are realized as files or connections. +-- The information flowing on a channel can always be +-- measured in terms of a byte stream. Furthermore, for many +-- channels, this information may also be measured in terms +-- of transactions. +-- +-- For all of these tables, the first two indexes determines +-- whether what is being measured is for a single running +-- application element or for an instance of a service. +-- +-- The second index identifies the running application element +-- or service instance. +-- +-- The third index is the channel id, which uniquely identifies +-- a channel within the context of a running application element +-- or service instance. +-- +-- Any remaining indexes are table-specific. +-- +-- **************************************************************** + + +-- **************************************************************** +-- +-- applOpenChannelTable - Table of Open Channels +-- +-- **************************************************************** + +applOpenChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenChannelTable reports information on open + channels for running application elements + and for service instances. This table is + indexed by applElmtOrSvc, applElmtOrSvcId, and + applOpenChannelIndex. This effectively groups all + entries for a given running application element + or service instance together. ApplChannelIndex uniquely + identifies an open channel (and, consequently, a file + or connection) within the context of a particular + running application element or service instance. + + Some of the information in this table is available + through both sixty-four and thirty-two bit counters. + The sixty-four bit counters are not accessible in + protocols that do not support this data type." + ::= { applChannelGroup 1 } + +applOpenChannelEntry OBJECT-TYPE + SYNTAX ApplOpenChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenChannelEntry indicates that a channel has been + opened by this running application element or service + instance and is still open. Note that if a file has been + opened multiple times, even by the same process, it will + have multiple channel entries." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenChannelTable 1 } + +ApplOpenChannelEntry ::= SEQUENCE + { + applElmtOrSvc INTEGER, + applElmtOrSvcId Unsigned32, + applOpenChannelIndex Unsigned32, + applOpenChannelOpenTime TimeStamp, + applOpenChannelReadRequests Counter64, + applOpenChannelReadRequestsLow Counter32, + applOpenChannelReadFailures Counter32, + applOpenChannelBytesRead Counter64, + applOpenChannelBytesReadLow Counter32, + applOpenChannelLastReadTime DateAndTime, + applOpenChannelWriteRequests Counter64, + applOpenChannelWriteRequestsLow Counter32, + applOpenChannelWriteFailures Counter32, + applOpenChannelBytesWritten Counter64, + applOpenChannelBytesWrittenLow Counter32, + applOpenChannelLastWriteTime DateAndTime + } + +applElmtOrSvc OBJECT-TYPE + SYNTAX INTEGER { service(1), + element(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applElmtOrSvc attribute serves as an index for tables + that can hold information both for individual running + application elements as well as for service instances. + + If the value is service(1), the row contains information + gathered at the level of a service. + + If the value is element(2), the row contains information + for an individual running application element." + ::= { applOpenChannelEntry 1 } + +applElmtOrSvcId OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applElmtOrSvcId attribute is used as an index in + conjunction with the applElmtOrSvc attribute. + + When the value of applElmtOrSvc is service(1), this + attribute's value corresponds to that of applSrvIndex, + when the value of applElmtOrSvc is element(2), this + attribute's value corresponds to sysApplElmtRunIndex." + ::= { applOpenChannelEntry 2 } + +applOpenChannelIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute serves to uniquely identify this open + connection in the context of the running application + element or service instance. Where suitable, the + application's native descriptor number should be used." + ::= { applOpenChannelEntry 3 } + +applOpenChannelOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of sysUpTime.0 + when this channel was opened and this entry was added to + this table. This attribute serves as a discontinuity + indicator for the counter attributes in this entry + and for any corresponding entries in the + applOpenConnectionTable, applOpenFileTable, and the + applTransactionStreamTable." + ::= { applOpenChannelEntry 4 } + +applOpenChannelReadRequests OBJECT-TYPE + SYNTAX Counter64 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of read requests + for this channel. All read requests for this channel + by this entity, regardless of completion status, are + included in this count. + + Read requests are counted in terms of system calls, + rather than API calls. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 5 } + +applOpenChannelReadRequestsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the low thirty-two bits of + applOpenChannelReadRequests. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 6 } + +applOpenChannelReadFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed read + requests. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 7 } + +applOpenChannelBytesRead OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes read from + this channel. Only bytes successfully read are included + in this count. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 8 } + +applOpenChannelBytesReadLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelBytesRead. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 9 } + +applOpenChannelLastReadTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent read + request made by this entity, regardless of completion + status, for this open channel. + + If no read requests have been made the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applOpenChannelEntry 10 } + +applOpenChannelWriteRequests OBJECT-TYPE + SYNTAX Counter64 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of write requests for + this channel made by this entity. All write requests + for this channel, regardless of completion status, are + included in this count. + + Write requests are counted in terms of system calls, + rather than API calls. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 11 } + +applOpenChannelWriteRequestsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelWriteRequests. + + Discontinuities in this counter can be detected + by monitoring the applOpenChannelOpenTime value for + this entry." + ::= { applOpenChannelEntry 12 } + +applOpenChannelWriteFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed write + requests. + + Discontinuities in this counter can be detected + by monitoring the applOpenChannelOpenTime value for + this entry." + ::= { applOpenChannelEntry 13 } + +applOpenChannelBytesWritten OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes written to + this channel. Only bytes successfully written (without + errors reported by the system to the API in use by the + application) are included in this count. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 14 } + +applOpenChannelBytesWrittenLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelBytesWritten. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 15 } + +applOpenChannelLastWriteTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent write + request made by this running application element or + service instance, regardless of completion status, for + this open channel. + If no write requests have been made, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applOpenChannelEntry 16 } + +-- **************************************************************** +-- +-- applOpenFileTable - Table of Open Files +-- +-- **************************************************************** + +applOpenFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenFileTable reports information on open files + for service instances or application elements. This + table is indexed by applElmtOrSvc and applElmtOrSvcId, + effectively grouping all entries for a given running + service instance or application element together, and + by applOpenChannelIndex, uniquely identifying an open + channel (and, consequently, a file) within the context + of a particular service instance or application element. + + Elements in this table correspond to elements in the + applOpenChannelTable that represent files. For rows in + the applOpenChannelTable that do not represent files, + corresponding rows in this table will not exist." + ::= { applChannelGroup 2 } + +applOpenFileEntry OBJECT-TYPE + SYNTAX ApplOpenFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenFileEntry indicates that a file has been + opened by this running application element and is + still open. Note that if a file has been opened + multiple times, even by the same process, it will have + multiple entries." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenFileTable 1 } + +ApplOpenFileEntry ::= SEQUENCE + { + applOpenFileName LongUtf8String, + applOpenFileSizeHigh Unsigned32, + applOpenFileSizeLow Unsigned32, + applOpenFileMode INTEGER + } + +applOpenFileName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the name of this open file. + Wherever practical, a fully qualified path name should + be reported. + + The values 'stdin', 'stdout', and 'stderr' are reserved + in accordance with common usage when the fully qualified + path name cannot be determined." + ::= { applOpenFileEntry 1 } + +applOpenFileSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 byte blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This file's current size in 2^32 byte blocks. + + For example, for a file with a total size of 4,294,967,296 + bytes, this attribute would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this attribute's + value would be 0." + ::= { applOpenFileEntry 2 } + +applOpenFileSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This file's current size modulo 2^32 bytes. + + For example, for a file with a total size of + 4,294,967,296 bytes this attribute would have a value + of 0; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 4,294,967,295." + ::= { applOpenFileEntry 3 } + +applOpenFileMode OBJECT-TYPE + SYNTAX INTEGER { read(1), + write(2), + readWrite(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the current mode of this file from + the perspective of this running application element. + + These values have the following meanings: + + read(1) - file opened for reading only + write(2) - file opened for writing only + readWrite(3) - file opened for read and write. + + These values correspond to the POSIX/ANSI C library + function fopen() 'type' parameter, using the following + mappings: + + r -> read(1) + w -> write(2) + a -> write(2) + + -> readWrite(3) + " + ::= { applOpenFileEntry 4 } + + +-- **************************************************************** +-- +-- applOpenConnectionTable - Open Connection Table +-- +-- **************************************************************** + +applOpenConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenConnectionTable provides information about + open and listening connections from the perspective + of a running application element or service instance. + Entries in this table are indexed by applElmtOrSvc, + applElmtOrSvcID, and by applOpenChannelIndex, which + serves to uniquely identify each connection in the + context of a service instance or running application + element. + + For each row in this table, a corresponding row will + exist in the applOpenChannel table. For rows in the + applOpenChannelTable which do not represent open or + listening connections, no corresponding rows will exist + in this table." + ::= { applChannelGroup 3 } + +applOpenConnectionEntry OBJECT-TYPE + SYNTAX ApplOpenConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenConnectionEntry indicates that a running + application element or service instance has an open + connection. The entry has information describing that + connection. + + In the case of a TCP transport, the element + applOpenConnectionNearEndAddr and that row's + applOpenConnectionFarEndAddr would correspond + to a tcpConnEntry. For a UDP transport, a + similar relationship exists with respect to + a udpEntry." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenConnectionTable 1 } + +ApplOpenConnectionEntry ::= SEQUENCE + { + applOpenConnectionTransport TDomain, + applOpenConnectionNearEndAddr ApplTAddress, + applOpenConnectionNearEndpoint SnmpAdminString, + applOpenConnectionFarEndAddr ApplTAddress, + applOpenConnectionFarEndpoint SnmpAdminString, + applOpenConnectionApplication SnmpAdminString + } + +applOpenConnectionTransport OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionTransport attribute identifies the + transport protocol in use for this connection. If it is + not practical to determine the underlying transport, this + attribute's value shall have a value of {0 0}." + DEFVAL { zeroDotZero } + ::= { applOpenConnectionEntry 1 } + +applOpenConnectionNearEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionNearEndAddr attribute reports the + transport address and port information for the near end + of this connection. + + If the value is not known, the value has a length + of zero." + DEFVAL { "" } + ::= { applOpenConnectionEntry 2 } + +applOpenConnectionNearEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionNearEndpoint attribute reports the + fully-qualified domain name and port information for the + near end of this connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If the value is not known, the value has a length + of zero." + DEFVAL { "" } + ::= { applOpenConnectionEntry 3 } + +applOpenConnectionFarEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionFarEndAddr attribute reports the + transport address and port information for the far end + of this connection. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applOpenConnectionEntry 4 } + +applOpenConnectionFarEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionFarEndpoint attribute reports + the fully-qualified domain name and port information + for the far end of this connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applOpenConnectionEntry 5 } + +applOpenConnectionApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionApplication attribute identifies + the application layer protocol in use. If not known, + the value of this attribute shall be a zero-length + string. + + When possible, protocol names should be those used in + the 'ASSIGNED NUMBERS' [13]. For example, an SMTP mail + server would use 'SMTP'." + DEFVAL { "" } + ::= { applOpenConnectionEntry 6 } + +-- **************************************************************** +-- +-- applTransactionStreamTable - common +-- information for transaction stream monitoring +-- +-- **************************************************************** + +applTransactionStreamTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactionStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactionStreamTable contains common + information for transaction statistic accumulation." + ::= { applChannelGroup 4 } + +applTransactionStreamEntry OBJECT-TYPE + SYNTAX ApplTransactionStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactionStreamEntry contains information for + a single transaction stream. A transaction stream + can be a network connection, file, or other source + of transactions." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applTransactionStreamTable 1 } + +ApplTransactionStreamEntry ::= SEQUENCE { + applTransactStreamDescr SnmpAdminString, + applTransactStreamUnitOfWork SnmpAdminString, + applTransactStreamInvokes Counter64, + applTransactStreamInvokesLow Counter32, + applTransactStreamInvCumTimes Counter32, + applTransactStreamInvRspTimes Counter32, + applTransactStreamPerforms Counter64, + applTransactStreamPerformsLow Counter32, + applTransactStreamPrfCumTimes Counter32, + applTransactStreamPrfRspTimes Counter32 } + +applTransactStreamDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamDescr attribute provides a + human-readable description of this transaction stream. + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applTransactionStreamEntry 1 } + +applTransactStreamUnitOfWork OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamUnitOfWork attribute provides a + human-readable definition of what the unit of work is + for this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applTransactionStreamEntry 2 } + +applTransactStreamInvokes OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of requests / invocations issued. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 3 } + +applTransactStreamInvokesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter corresponds to the low thirty-two + bits of applTransactStreamInvokes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 4 } + +applTransactStreamInvCumTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamInvCumTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the transmission of requests and the receipt of + (the first of) the corresponding response(s). + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 5 } + +applTransactStreamInvRspTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamInvRspTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the receipt of the first and last of multiple + responses to a request. + + For transaction streams which do not permit multiple + responses to a single request, this attribute will be + constant. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 6 } + +applTransactStreamPerforms OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of transactions performed. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 7 } + +applTransactStreamPerformsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter reports the low thirty-two bits of + applTransactStreamPerforms. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 8 } + +applTransactStreamPrfCumTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamPrfCumTimes attribute reports the + cumulative sum of the interval lengths measured between + receipt of requests and the transmission of the + corresponding responses. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 9 } + +applTransactStreamPrfRspTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For each transaction performed, the elapsed time between + when the first response is enqueued and when the last + response is enqueued is added to this cumulative sum. + + For single-response protocols, the value of + applTransactStreamPrfRspTimes will be constant. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 10 } + +-- **************************************************************** +-- +-- applTransactFlowTable +-- +-- **************************************************************** + +applTransactFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactFlowTable contains entries, organized by + application instance or running application element, + direction of flow, and type (request/response) for each + open transaction stream. + + The simple model of a transaction used here looks like + this: + + invoker | Request | performer + | - - - - - - > | + | | + | Response | + | < - - - - - - | + | | + + Since in some protocols it is possible for an entity + to take on both the invoker and performer roles, + information here is accumulated for transmitted and + received requests, as well as for transmitted and + received responses. Counts are maintained for both + transactions and bytes transferred." + ::= { applChannelGroup 5 } + +applTransactFlowEntry OBJECT-TYPE + SYNTAX ApplTransactFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactFlowEntry reports transaction throughput + information for requests or response in a particular + direction (transmit / receive) for a transaction stream. + + Entries in this table correspond to those in the + applTransactionStreamTable with identical values for the + applElmtOrSvc, applElmtOrSvcId, and applOpenChannelIndex. + + For all counter objects in one of these entries, + the corresponding (same value for applElmtOrSvc, + applElmtOrSvcId, and applOpenChannelIndex) + applOpenChannelOpenTime object serves as a discontinuity + indicator. " + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applOpenChannelIndex, + applTransactFlowDirection, + applTransactFlowReqRsp } + ::= { applTransactFlowTable 1 } + +ApplTransactFlowEntry ::= SEQUENCE { + applTransactFlowDirection INTEGER, + applTransactFlowReqRsp INTEGER, + applTransactFlowTrans Counter64, + applTransactFlowTransLow Counter32, + applTransactFlowBytes Counter64, + applTransactFlowBytesLow Counter32, + applTransactFlowTime DateAndTime } + +applTransactFlowDirection OBJECT-TYPE + SYNTAX INTEGER { transmit(1), + receive(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactFlowDirection index serves to identify + an entry as containing information pertaining to the + transmit (1) or receive (2) flow of a transaction + stream." + ::= { applTransactFlowEntry 1 } + +applTransactFlowReqRsp OBJECT-TYPE + SYNTAX INTEGER { request(1), + response(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the applTransactFlowReqRsp index indicates + whether this entry contains information on requests + (1), or responses (2)." + ::= { applTransactFlowEntry 2 } + +applTransactFlowTrans OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowTrans attribute reports the number + of request/response transactions (as indicated by + the applTransactFlowReqRsp index) received/generated + (as indicated by the applTransactFlowDirection index) + that this service instance or running application + element has processed for this transaction stream. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 3 } + +applTransactFlowTransLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applTransactFlowTrans. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 4 } + +applTransactFlowBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowBytes attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) bytes received/generated + (as indicated by the applTransactFlowDirection index) + handled by this application element or service instance + on this transaction stream. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 5 } + +applTransactFlowBytesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applTransactFlowBytes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 6 } + +applTransactFlowTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowTime attribute records the time of + the processing (receipt or transmission as indicated + by the applTransactFlowDirection index) by this + running application element or service instance of + the most recent request/response (as indicated by + the applTransactFlowReqRsp index) on this transaction + stream. + + If no requests/responses been received/transmitted by + this entity over this transaction stream, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applTransactFlowEntry 7 } + +-- **************************************************************** +-- +-- applTransactKindTable - transaction statistics broken down +-- according to the kinds of transactions in each direction +-- for a transaction stream. +-- +-- **************************************************************** + +applTransactKindTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactKindTable provides transaction statistics + broken down by kinds of transaction. The definition of + the kinds of transactions is specific to the application + protocol in use, and may be documented in the form of an + applicability statement. " + ::= { applChannelGroup 6 } + +applTransactKindEntry OBJECT-TYPE + SYNTAX ApplTransactKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactKindEntry reports information for a + specific service instance or running application + element's use of a specific transaction stream in + a particular direction in requests or responses + (as indicated by the applTransactFlowReqRsp index) + broken down by transaction kind, as indicated by the + applTransactKind index. + + Discontinuities in any of the counters in an entry can + be detected by monitoring the corresponding instance of + applOpenChannelOpenTime." + + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applOpenChannelIndex, + applTransactFlowDirection, + applTransactFlowReqRsp, + applTransactKind } + ::= { applTransactKindTable 1 } + +ApplTransactKindEntry ::= SEQUENCE + { + applTransactKind SnmpAdminString, + applTransactKindTrans Counter64, + applTransactKindTransLow Counter32, + applTransactKindBytes Counter64, + applTransactKindBytesLow Counter32, + applTransactKindTime DateAndTime + } + +applTransactKind OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1 .. 32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactKind index is the human-readable + identifier for a particular transaction kind within + the context of an application protocol. The values + to be used for a particular protocol may be identified + in an applicability statement." + ::= { applTransactKindEntry 1 } + +applTransactKindTrans OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTrans attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) transactions + received/generated (as indicated by the + applTransactFlowDirection index) handled by this + application instance or application element on this + transaction stream for this transaction kind. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 2 } + +applTransactKindTransLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTransLow attribute reports + the low thirty-two bits of applTransactKindTrans. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 3 } + +applTransactKindBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindBytes attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) bytes received/generated + (as indicated by the applTransactFlowDirection index) + handled by this application element on this transaction + stream for this transaction kind. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 4 } + +applTransactKindBytesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindBytesLow attribute corresponds + to the low thirty-two bits of applTransactKindBytes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 5 } + +applTransactKindTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTime attribute records the time of + the processing (receipt or transmission as indicated + by the applTransactFlowDirection index) by this + running application element or service instance of + the most recent request/response (as indicated by + the applTransactFlowReqRsp index) of this kind of + transaction on this transaction stream. + + If no requests/responses of this kind been + received/transmitted by this running application element + or service instance over this transaction stream, the + value of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applTransactKindEntry 6 } + +-- **************************************************************** +-- +-- applPastChannelGroup - logged information on former channels. +-- These tables control the collection of channel history +-- information and represent the accumulated historical data. +-- +-- **************************************************************** + +applPastChannelControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastChannelControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastChannelControlTable controls the + accumulation of history information about channels + from the perspective of service instances and running + application elements. Entries in this table are indexed + by applElmtOrSvc and applElmtOrSvcId, giving control + of channel history accumulation at the level of each + service instance and running application element." + ::= { applPastChannelGroup 1 } + +applPastChannelControlEntry OBJECT-TYPE + SYNTAX ApplPastChannelControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastChannelControlEntry provides the ability + to control the retention of channel history information + by service instances and running application elements." + INDEX { applElmtOrSvc, applElmtOrSvcId } + ::= { applPastChannelControlTable 1 } + +ApplPastChannelControlEntry ::= SEQUENCE + { + applPastChannelControlCollect INTEGER, + applPastChannelControlMaxRows Unsigned32, + applPastChannelControlTimeLimit Unsigned32, + applPastChannelControlRemItems Counter32 + } + +applPastChannelControlCollect OBJECT-TYPE + SYNTAX INTEGER { enabled (1), + frozen (2), + disabled (3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the value of applPastChannelControlCollect is + 'enabled', each time the corresponding running + application element or service instance closes + an open channel a new entry will be added to the + applPastChannelTable. + + When the value of applPastChannelControlCollect + is 'frozen', no new entries are added to the + applPastChannelTable for this running application + element or service instance, and old entries are not + aged out. + + When the value of applPastChannelControlCollect + is 'disabled', all entries are removed from + applPastChannelTable for this running application or + service instance, and no new entries are added." + DEFVAL { enabled } + ::= { applPastChannelControlEntry 1 } + +applPastChannelControlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "channel history entries" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + applPastChannelTable for this running application element + or service instance. Once the number of rows for this + running application element or service instance in the + applPastChannelTable reaches this value, when new + entries are to be added the management subsystem will + make room for them by removing the oldest entries. + Entries will be removed on the basis of oldest + applPastChannelCloseTime value first." + DEFVAL { 500 } + ::= { applPastChannelControlEntry 2 } + +applPastChannelControlTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry for this + running application element or service instance + may exist in the applPastChannelTable before it + is removed. Any entry that is older than this value + will be removed (aged out) from the table, unless the + applPastChannelControlCollect is set to 'frozen'. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the table + and must be removed to make space for a new entry so + as to not exceed applPastChannelControlMaxRows, or if the + applPastChannelControlCollect is set to 'disabled'." + DEFVAL { 7200 } + ::= { applPastChannelControlEntry 3 } + +applPastChannelControlRemItems OBJECT-TYPE + SYNTAX Counter32 + UNITS "channel history entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelControlRemItems attribute reports the + number of applPastChannelControlTable entries for this + running application element or service instance that + were deleted in order to make room for new history + entries. + + This count does NOT include entries deleted for the + following reasons: + - the corresponding applPastChannelControlCollect + attribute has been set to 'disabled' + + - the entry has been in the table longer that the + time limit indicated by the corresponding + applPastChannelControlTimeLimit. + " + ::= { applPastChannelControlEntry 4 } + + +-- **************************************************************** +-- +-- applPastChannelTable - Table of former channels +-- +-- **************************************************************** + +applPastChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastChannelTable provides history information + about channels from the perspective of running + application elements and service instances. + Entries in this table are indexed by applElmtOrSvc, + applElmtOrSvcId, and by applPastChannelIndex, which + serves to uniquely identify each former channel in the + context of a running application element or service + instance. + + Note that the value of applPastChannelIndex is + independent of the value applOpenChannelIndex had when + this channel was open. + + Entries for closed channels for a given running + application element or service instance can + be added to this table only if its entry in the + applPastChannelControlTable has the value 'enabled' + for the attribute applPastChannelControlCollect. + + Entries for closed channels are removed under the + following circumstances: + + - the running application element or service + instance no longer exists + + - the corresponding applPastChannelControlCollect + attribute has been set to 'disabled' + + - the entry has been in the table longer that the + time limit indicated by the corresponding + applPastChannelControlTimeLimit and the value of + applPastChannelControlCollect is not 'frozen' + + - this is the oldest entry for the running + application element or service instance in + question and the addition of a new element would + otherwise cause applPastChannelControlMaxRows to + be exceeded for this running application element + or service instance. + + - a value of applPastChannelIndex has been re-used. + Note that under normal circumstances, this is + unlikely. + + Removal/replacement of an entry under the + last two conditions causes the corresponding + applPastChannelControlRemItems to be incremented." + ::= { applPastChannelGroup 2 } + +applPastChannelEntry OBJECT-TYPE + SYNTAX ApplPastChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastChannelEntry indicates that a running + application element or service instance once had an open + channel, which is now closed. The entry has information + describing that channel." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastChannelTable 1 } + +ApplPastChannelEntry ::= SEQUENCE + { + applPastChannelIndex Unsigned32, + applPastChannelOpenTime DateAndTime, + applPastChannelCloseTime DateAndTime, + applPastChannelReadRequests Unsigned64TC, + applPastChannelReadReqsLow Unsigned32, + applPastChannelReadFailures Unsigned32, + applPastChannelBytesRead Unsigned64TC, + applPastChannelBytesReadLow Unsigned32, + applPastChannelLastReadTime DateAndTime, + applPastChannelWriteRequests Unsigned64TC, + applPastChannelWriteReqsLow Unsigned32, + applPastChannelWriteFailures Unsigned32, + applPastChannelBytesWritten Unsigned64TC, + applPastChannelBytesWritLow Unsigned32, + applPastChannelLastWriteTime DateAndTime + } + +applPastChannelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute serves to uniquely identify this closed + channel in the context of the running application + element or service instance. This attribute has no + other semantics. + + Note that the value of applPastChannelIndex is + independent of the value applOpenChannelIndex had when + this channel was active. + + In issuing this index value, the implementation must + avoid re-issuing an index value which has already been + assigned to an entry which has not yet been deleted due + to age or space considerations. + + The value zero is excluded from the set of permitted + values for this index in order to permit other tables to + possibly represent information that cannot be associated + with a specific entry in this table. " + ::= { applPastChannelEntry 1 } + +applPastChannelOpenTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the time when this channel was + originally opened. Note that this information is quite + different from applOpenChannelOpenTime, which is used + for the detection of counter discontinuities." + ::= { applPastChannelEntry 2 } + +applPastChannelCloseTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the time when this channel + was closed." + ::= { applPastChannelEntry 3 } + +applPastChannelReadRequests OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the number of read requests for + this channel made by this running application element or + service instance. All read requests for this channel by + this running application element or service instance, + regardless of completion status, are included in this + count. Read requests are counted in terms of system + calls, rather than API calls." + + ::= { applPastChannelEntry 4 } + +applPastChannelReadReqsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applPastChannelReadRequests." + ::= { applPastChannelEntry 5 } + +applPastChannelReadFailures OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "failed read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed read + requests." + ::= { applPastChannelEntry 6 } + +applPastChannelBytesRead OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes read from this + channel by this running application element or service + instance. Only bytes successfully read are included in + this count. " + ::= { applPastChannelEntry 7 } + +applPastChannelBytesReadLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applPastChannelBytesRead." + ::= { applPastChannelEntry 8 } + +applPastChannelLastReadTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent read + request made by this running application element or + service instance regardless of completion status, for + this former channel. + + If no read requests have been made , the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastChannelEntry 9 } + +applPastChannelWriteRequests OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelWriteRequests attribute reports + the number of write requests, regardless of completion + status, made by this running application element or + service instance for this former channel. + + Write requests are counted in terms of system calls, + rather than API calls." + ::= { applPastChannelEntry 10 } + +applPastChannelWriteReqsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastChannelWriteRequests." + ::= { applPastChannelEntry 11 } + +applPastChannelWriteFailures OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "failed write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed write + requests." + ::= { applPastChannelEntry 12 } + +applPastChannelBytesWritten OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes written to + this former channel by this running application element + or service instance. Only bytes successfully written + (no errors reported by the API in use by the application) + are included in this count." + ::= { applPastChannelEntry 13 } + +applPastChannelBytesWritLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits of + applPastChannelBytesWritten." + ::= { applPastChannelEntry 14 } + +applPastChannelLastWriteTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelLastWriteTime attribute reports + the time of the most recent write request made by + this running application element or service instance, + regardless of completion status, for this former + channel. + + If no write requests have been made the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastChannelEntry 15 } + +-- **************************************************************** +-- +-- applPastFileTable - information specific to former files +-- +-- **************************************************************** + +applPastFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastFileTable supplements the + applPastChannelTable for entries corresponding to + channels which were files. The indexing structure is + identical to applPastChannelTable. An entry exists in + the applPastFileTable only if there is a corresponding + (same index values) entry in the applPastChannelTable + and if the channel was a file. + + Entries for closed files are removed when the + corresponding entries are removed from the + applPastChannelTable." + ::= { applPastChannelGroup 3 } + +applPastFileEntry OBJECT-TYPE + SYNTAX ApplPastFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastFileEntry provides additional, file-specific + information to complement the corresponding + applPastChannelEntry for a channel which was a file." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastFileTable 1 } + +ApplPastFileEntry ::= SEQUENCE + { + applPastFileName LongUtf8String, + applPastFileSizeHigh Unsigned32, + applPastFileSizeLow Unsigned32, + applPastFileMode INTEGER + } + + +applPastFileName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the last known value of + applOpenFileName before the channel was closed." + ::= { applPastFileEntry 1 } + +applPastFileSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 byte blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileSizeHigh + at the time this channel was closed. + + For example, for a file with a total size of + 4,294,967,296 bytes, this attribute would have a value + of 1; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 0." + ::= { applPastFileEntry 2 } + +applPastFileSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileSizeLow + at the time this channel was closed. + + For example, for a file with a total size of + 4,294,967,296 bytes this attribute would have a value + of 0; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 4,294,967,295." + ::= { applPastFileEntry 3 } + +applPastFileMode OBJECT-TYPE + SYNTAX INTEGER { read(1), + write(2), + readWrite(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileMode + at the time this channel was closed. " + ::= { applPastFileEntry 4 } + +-- **************************************************************** +-- +-- applPastConTable - information specific to former connections +-- +-- **************************************************************** + +applPastConTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastConEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastConTable supplements the applPastChannelTable + for entries corresponding to channels which were + connections. The indexing structure is identical + to applPastChannelTable. An entry exists in the + applPastConTable only if there is a corresponding + (same index values) entry in the applPastChannelTable + and if the channel was a connection. + + Entries for closed connections are removed when + the corresponding entries are removed from the + applPastChannelTable." + ::= { applPastChannelGroup 4 } + +applPastConEntry OBJECT-TYPE + SYNTAX ApplPastConEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastConEntry provides additional, + connection-specific information to complement the + corresponding applPastChannelEntry for a channel which + was a connection." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastConTable 1 } + +ApplPastConEntry ::= SEQUENCE + { + applPastConTransport TDomain, + applPastConNearEndAddr ApplTAddress, + applPastConNearEndpoint SnmpAdminString, + applPastConFarEndAddr ApplTAddress, + applPastConFarEndpoint SnmpAdminString, + applPastConApplication SnmpAdminString + } + +applPastConTransport OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConTransport attribute identifies the + transport protocol that was in use for this former + connection. If the transport protocol could not be + determined, the value { 0 0 } shall be used." + DEFVAL { zeroDotZero } + ::= { applPastConEntry 1 } + +applPastConNearEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConNearEndAddr attribute reports the + transport address and port information for the near + end of this former connection. + + If the information could not be determined, the value + shall be a zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 2 } + +applPastConNearEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConNearEndpoint attribute reports the + fully-qualified domain name and port information for the + near end of this former connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If the information could not be determined, the value + shall be a zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 3 } + +applPastConFarEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConFarEnd attribute reports the transport + address and port information for the far end of this + former connection. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 4 } + +applPastConFarEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConFarEndpoint attribute reports the + transport address and port information for the far + end of this former connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 5 } + +applPastConApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConApplication attribute identifies the + application layer protocol that was in use. Where + possible, the values defined in [13] shall be used. + If not known, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 6 } + + +-- **************************************************************** +-- +-- applPastTransStreamTable - historical +-- information for transaction stream monitoring +-- +-- **************************************************************** + +applPastTransStreamTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransStreamTable contains common + information for historical transaction statistics." + ::= { applPastChannelGroup 5 } + +applPastTransStreamEntry OBJECT-TYPE + SYNTAX ApplPastTransStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransStreamEntry contains information for + a single former transaction stream. A transaction + stream could have been a network connection, file, or + other source of transactions." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastTransStreamTable 1 } + +ApplPastTransStreamEntry ::= SEQUENCE { + applPastTransStreamDescr SnmpAdminString, + applPastTransStreamUnitOfWork SnmpAdminString, + applPastTransStreamInvokes Unsigned64TC, + applPastTransStreamInvokesLow Unsigned32, + applPastTransStreamInvCumTimes Unsigned32, + applPastTransStreamInvRspTimes Unsigned32, + applPastTransStreamPerforms Unsigned64TC, + applPastTransStreamPerformsLow Unsigned32, + applPastTransStreamPrfCumTimes Unsigned32, + applPastTransStreamPrfRspTimes Unsigned32 } +applPastTransStreamDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamDescr attribute provides a + human-readable description of this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applPastTransStreamEntry 1 } + +applPastTransStreamUnitOfWork OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamUnitOfWork attribute provides a + human-readable definition of what the unit of work is + for this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applPastTransStreamEntry 2 } + +applPastTransStreamInvokes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of requests / invocations issued + for this transaction stream when it was active." + ::= { applPastTransStreamEntry 3 } + +applPastTransStreamInvokesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object corresponds to the low thirty-two + bits of applPastTransStreamInvokes." + ::= { applPastTransStreamEntry 4 } + +applPastTransStreamInvCumTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamInvCumTimes attribute reports the + cumulative sum of the lengths of the intervals times + measured between the transmission of requests and the + receipt of (the first of) the corresponding response(s)." + ::= { applPastTransStreamEntry 5 } + +applPastTransStreamInvRspTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamInvRspTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the receipt of the first and last of multiple + responses to a request. + + For transaction streams which do not permit multiple + responses to a single request, this attribute will be + zero." + ::= { applPastTransStreamEntry 6 } + +applPastTransStreamPerforms OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of transactions performed." + ::= { applPastTransStreamEntry 7 } + +applPastTransStreamPerformsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This objecy reports the low thirty-two bits of + applPastTransStreamPerforms." + ::= { applPastTransStreamEntry 8 } + +applPastTransStreamPrfCumTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamPrfCumTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between receipt of requests and the transmission of the + corresponding responses." + ::= { applPastTransStreamEntry 9 } + +applPastTransStreamPrfRspTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For each transaction performed, the elapsed time between + when the first response is enqueued and when the last + response is enqueued is added to this cumulative sum. + + For single-response protocols, the value of + applPastTransStreamPrfRspTimes will be zero." + ::= { applPastTransStreamEntry 10 } + + +-- **************************************************************** +-- +-- applPastTransFlowTable +-- +-- **************************************************************** + +applPastTransFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransFlowTable contains entries, organized by + application instance or running application element, + direction of flow, and type (request/response) for each + former transaction stream. + + The simple model of a transaction used here looks like + this: + + invoker | Request | performer + | - - - - - - > | + | | + | Response | + | < - - - - - - | + | | + + Since in some protocols it is possible for an entity + to take on both the invoker and performer roles, + information here is accumulated for transmitted and + received requests, as well as for transmitted and + received responses. Counts are maintained for both + transactions and bytes transferred." + ::= { applPastChannelGroup 6 } + +applPastTransFlowEntry OBJECT-TYPE + SYNTAX ApplPastTransFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransFlowEntry records transaction throughput + information for requests or response in a particular + direction (transmit / receive) for a transaction stream. + + Entries in this table correspond to those in the + applPastTransStreamTable with identical values + for the applElmtOrSvc, applElmtOrSvcId, and the + applPastChannelIndex." + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applPastChannelIndex, + applPastTransFlowDirection, + applPastTransFlowReqRsp } + ::= { applPastTransFlowTable 1 } + +ApplPastTransFlowEntry ::= SEQUENCE { + applPastTransFlowDirection INTEGER, + applPastTransFlowReqRsp INTEGER, + applPastTransFlowTrans Unsigned64TC, + applPastTransFlowTransLow Unsigned32, + applPastTransFlowBytes Unsigned64TC, + applPastTransFlowBytesLow Unsigned32, + applPastTransFlowTime DateAndTime } + +applPastTransFlowDirection OBJECT-TYPE + SYNTAX INTEGER { transmit(1), + receive(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransFlowDirection index serves + to identify an entry as containing information + pertaining to the transmit (1) or receive (2) flow + of a past transaction stream. This index corresponds + to applTransactFlowDirection." + ::= { applPastTransFlowEntry 1 } + +applPastTransFlowReqRsp OBJECT-TYPE + SYNTAX INTEGER { request(1), + response(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the applPastTransFlowReqRsp index indicates + whether this entry contains information on requests + (1), or responses (2). This index corresponds to + applTransactFlowReqRsp." + ::= { applPastTransFlowEntry 2 } + +applPastTransFlowTrans OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowTrans attribute reports the number + of request/response (as indicated by the + applPastTransFlowReqRsp index) transactions + received/generated (as indicated by the + applPastTransFlowDirection index) handled on this + transaction stream." + ::= { applPastTransFlowEntry 3 } + +applPastTransFlowTransLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastTransFlowTrans." + ::= { applPastTransFlowEntry 4 } + +applPastTransFlowBytes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowBytes attribute reports the number + of request/response (as indicated by the + applPastTransFlowReqRsp index) bytes received/generated + (as indicated by the applPastTransFlowDirection index) + handled on this transaction stream. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead." + ::= { applPastTransFlowEntry 5 } + +applPastTransFlowBytesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastTransFlowBytes." + ::= { applPastTransFlowEntry 6 } + +applPastTransFlowTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowTime attribute records the time of + the processing (receipt or transmission as + indicated by the applPastTransFlowDirection index) + of the last request/response (as indicated by the + applPastTransFlowReqRsp index) on this transaction + stream. + + If no requests/responses been received/transmitted by + this entity over this transaction stream, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastTransFlowEntry 7 } + +-- **************************************************************** +-- +-- applPastTransKindTable - transaction statistics broken down +-- according to the kinds of transactions in each direction +-- for a transaction stream. +-- +-- **************************************************************** + +applPastTransKindTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransKindTable provides transaction + statistics broken down by kinds of transaction. + The definition of the kinds of transactions is + specific to the application protocol in use, and may be + documented in the form of an applicability statement. " + ::= { applPastChannelGroup 7 } + +applPastTransKindEntry OBJECT-TYPE + SYNTAX ApplPastTransKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransKindEntry reports historical data for a + specific service instance or running application + element's use of a specific transaction stream in + a particular direction in requests or responses + (as indicated by the applPastTransFlowReqRsp index) + broken down by transaction kind, as indicated by the + applPastTransKind index." + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applPastChannelIndex, + applPastTransFlowDirection, + applPastTransFlowReqRsp, + applPastTransKind } + ::= { applPastTransKindTable 1 } + +ApplPastTransKindEntry ::= SEQUENCE + { + applPastTransKind SnmpAdminString, + applPastTransKindTrans Unsigned64TC, + applPastTransKindTransLow Unsigned32, + applPastTransKindBytes Unsigned64TC, + applPastTransKindBytesLow Unsigned32, + applPastTransKindTime DateAndTime + } + +applPastTransKind OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1 .. 32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransKind index is the human-readable + identifier for a particular transaction kind within + the context of an application protocol. The values + to be used for a particular protocol may be identified + in an applicability statement. This index corresponds + to applTransactKind." + ::= { applPastTransKindEntry 1 } + +applPastTransKindTrans OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this transaction stream, this attribute records + the total number of transactions of the type + identified by the indexes. The type is characterized + according to the receive/transmit direction + (applPastTransFlowDirecton), whether it was a request + or a response (applPastTransFlowReqRsp), and the + protocol-specific transaction kind (applPastTransKind). + stream for this transaction kind." + ::= { applPastTransKindEntry 2 } + +applPastTransKindTransLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindTransLow attribute reports + the low thirty-two bits of applPastTransKindTrans." + ::= { applPastTransKindEntry 3 } + +applPastTransKindBytes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this transaction stream and transaction kind, the + applPastTransKindBytes attribute reports the number + of bytes received or generated (as indicated by + the applPastTransFlowDirection index) in requests or + responses (as indicated by the applPastTransFlowReqRsp + index). + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead." + ::= { applPastTransKindEntry 4 } + +applPastTransKindBytesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindBytesLow attribute corresponds + to the low thirty-two bits of applPastTransKindBytes." + ::= { applPastTransKindEntry 5 } + +applPastTransKindTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindTime attribute records the time of + the processing (receipt or transmission as + indicated by the applPastTransFlowDirection index) + of the last request/response (as indicated by the + applPastTransFlowReqRsp index) of this kind of + transaction on this transaction stream. + + If no requests/responses of this kind were + received/transmitted over this transaction stream, the + value of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastTransKindEntry 6 } + + +-- **************************************************************** +-- +-- applElmtRunControlGroup - monitor and control running +-- application elements +-- +-- **************************************************************** + +applElmtRunStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplElmtRunStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides information on running application + elements, complementing information available in the + correspondingly indexed sysApplElmtRunTable [31]." + ::= { applElmtRunControlGroup 1 } + +applElmtRunStatusEntry OBJECT-TYPE + SYNTAX ApplElmtRunStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applElmtRunStatusEntry contains information to support + the control and monitoring of a single running application + element." + INDEX { sysApplElmtRunIndex } + ::= { applElmtRunStatusTable 1 } + +ApplElmtRunStatusEntry ::= SEQUENCE { + applElmtRunStatusSuspended TruthValue, + applElmtRunStatusHeapUsage Unsigned32, + applElmtRunStatusOpenConnections Unsigned32, + applElmtRunStatusOpenFiles Gauge32, + applElmtRunStatusLastErrorMsg SnmpAdminString, + applElmtRunStatusLastErrorTime DateAndTime } + +applElmtRunStatusSuspended OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusSuspended attribute reports + whether processing by this running application element + has been suspended, whether by management request or by + other means." + ::= { applElmtRunStatusEntry 1 } + +applElmtRunStatusHeapUsage OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusHeapUsage reports the current + approximate heap usage by this running application + element." + ::= { applElmtRunStatusEntry 2 } + +applElmtRunStatusOpenConnections OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusOpenConnections attribute reports + the current number of open connections in use by this + running application element." + ::= { applElmtRunStatusEntry 3 } + +applElmtRunStatusOpenFiles OBJECT-TYPE + SYNTAX Gauge32 + UNITS "files" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusOpenFiles attribute reports the + current number of open files in use by this running + application element." + ::= { applElmtRunStatusEntry 4 } + +applElmtRunStatusLastErrorMsg OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusLastErrorMessage attribute reports + the most recent error message (typically written to + stderr or a system error logging facility) from this + running application element. If no such message has yet + been generated, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applElmtRunStatusEntry 5 } + +applElmtRunStatusLastErrorTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusLastErrorTime attribute reports the + time of the most recent error message in + applElmtRunStatusLastErrorMsg. + + If no such message has yet been generated, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applElmtRunStatusEntry 6 } + + +-- **************************************************************** +-- +-- applElmtRunControlTable - control running application +-- elements +-- +-- **************************************************************** + +applElmtRunControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplElmtRunControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides the ability to control application + elements, complementing information available in the + correspondingly indexed sysApplElmtRunTable [31]." + ::= { applElmtRunControlGroup 2 } + +applElmtRunControlEntry OBJECT-TYPE + SYNTAX ApplElmtRunControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applElmtRunControlEntry contains information to + support the control of a single running application + element." + INDEX { sysApplElmtRunIndex } + ::= { applElmtRunControlTable 1 } + +ApplElmtRunControlEntry ::= SEQUENCE { + applElmtRunControlSuspend TruthValue, + applElmtRunControlReconfigure TestAndIncr, + applElmtRunControlTerminate TruthValue } + +applElmtRunControlSuspend OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this variable to 'true' requests the suspension + of processing by this running application element. + Setting this variable to 'false' requests that processing + be resumed. The effect, if any, will be reported by the + applElmtRunStatusSuspended attribute." + DEFVAL { false } + ::= { applElmtRunControlEntry 1 } + +applElmtRunControlReconfigure OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Changing the value of this variable requests that the + running application element re-load its configuration + (like SIGHUP for many UNIX-based daemons). + + Note that completion of a SET on this object only implies + that configuration reload was initiated, not necessarily + that the reload has been completed." + ::= { applElmtRunControlEntry 2 } + +applElmtRunControlTerminate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting the value of applElmtRunControlTerminate to + 'true' requests that the running application element + terminate processing and exit in an orderly manner. + This is a 'polite' shutdown request. + + When read, this object's value will be 'false' except + when orderly termination is in progress. + + Note that completion of a SET on this object only implies + that termination was initiated, not necessarily that the + termination has been completed." + DEFVAL { false } + ::= { applElmtRunControlEntry 3 } + + +-- **************************************************************** +-- +-- Conformance requirements +-- +-- **************************************************************** + +applicationMibGroups OBJECT IDENTIFIER ::= + { applicationMibConformance 1} + +applicationMonitorGroup OBJECT-GROUP + OBJECTS { applSrvInstQual, + applSrvName, + applSrvIndex, + applSrvInstance, + applOpenChannelOpenTime, + applOpenChannelReadRequestsLow, + applOpenChannelReadFailures, + applOpenChannelBytesReadLow, + applOpenChannelLastReadTime, + applOpenChannelWriteRequestsLow, + applOpenChannelWriteFailures, + applOpenChannelBytesWrittenLow, + applOpenChannelLastWriteTime, + applOpenFileName, + applOpenFileSizeHigh, + applOpenFileSizeLow, + applOpenFileMode, + applOpenConnectionTransport, + applOpenConnectionNearEndAddr, + applOpenConnectionNearEndpoint, + applOpenConnectionFarEndAddr, + applOpenConnectionFarEndpoint, + applOpenConnectionApplication } + STATUS current + DESCRIPTION + "This group represents the basic capabilities of this MIB." + ::= { applicationMibGroups 1 } + +applicationFastMonitorGroup OBJECT-GROUP + OBJECTS { applOpenChannelReadRequests, + applOpenChannelBytesRead, + applOpenChannelWriteRequests, + applOpenChannelBytesWritten } + STATUS current + DESCRIPTION + "This group comprises 64-bit counters mandatory in + high-throughput environments, where 32-bit counters + could wrap in less than an hour." + ::= { applicationMibGroups 2 } + +applicationTransactGroup OBJECT-GROUP + OBJECTS { applTransactStreamDescr, + applTransactStreamUnitOfWork, + applTransactStreamInvokesLow, + applTransactStreamInvCumTimes, + applTransactStreamInvRspTimes, + applTransactStreamPerformsLow, + applTransactStreamPrfCumTimes, + applTransactStreamPrfRspTimes, + applTransactFlowTransLow, + applTransactFlowBytesLow, + applTransactFlowTime, + applTransactKindTransLow, + applTransactKindBytesLow, + applTransactKindTime } + STATUS current + DESCRIPTION + "This group comprises objects appropriate from monitoring + transaction-structured flows." + ::= { applicationMibGroups 3 } + +applicationFastTransactGroup OBJECT-GROUP + OBJECTS { applTransactStreamInvokes, + applTransactStreamPerforms, + applTransactFlowTrans, + applTransactFlowBytes, + applTransactKindTrans, + applTransactKindBytes } + STATUS current + DESCRIPTION + "This group comprises 64-bit transaction counters required in + high-throughput environments, where 32-bit counters could + wrap in less than an hour." + ::= { applicationMibGroups 4 } + +applicationHistoryGroup OBJECT-GROUP + OBJECTS { applPastChannelControlCollect, + applPastChannelControlMaxRows, + applPastChannelControlTimeLimit, + applPastChannelControlRemItems, + applPastChannelOpenTime, + applPastChannelCloseTime, + applPastChannelReadReqsLow, + applPastChannelReadFailures, + applPastChannelBytesReadLow, + applPastChannelLastReadTime, + applPastChannelWriteReqsLow, + applPastChannelWriteFailures, + applPastChannelBytesWritLow, + applPastChannelLastWriteTime, + applPastFileName, + applPastFileSizeHigh, + applPastFileSizeLow, + applPastFileMode, + applPastConTransport, + applPastConNearEndAddr, + applPastConNearEndpoint, + applPastConFarEndAddr, + applPastConFarEndpoint, + applPastConApplication} + STATUS current + DESCRIPTION + "This group models basic historical data." + ::= { applicationMibGroups 5 } + +applicationFastHistoryGroup OBJECT-GROUP + OBJECTS { applPastChannelReadRequests, + applPastChannelBytesRead, + applPastChannelWriteRequests, + applPastChannelBytesWritten} + STATUS current + DESCRIPTION + "This group comprises additional 64-bit objects required + for recording historical data in high-volume environments, + where a 32-bit integer would be insufficient." + ::= { applicationMibGroups 6 } + +applicationTransHistoryGroup OBJECT-GROUP + OBJECTS { applPastTransStreamDescr, + applPastTransStreamUnitOfWork, + applPastTransStreamInvokesLow, + applPastTransStreamInvCumTimes, + applPastTransStreamInvRspTimes, + applPastTransStreamPerformsLow, + applPastTransStreamPrfCumTimes, + applPastTransStreamPrfRspTimes, + applPastTransFlowTransLow, + applPastTransFlowBytesLow, + applPastTransFlowTime, + applPastTransKindTransLow, + applPastTransKindBytesLow, + applPastTransKindTime } + STATUS current + DESCRIPTION + "This group represents historical data for transaction- + structured information streams." + ::= { applicationMibGroups 7 } + +applicationFastTransHistoryGroup OBJECT-GROUP + OBJECTS { applPastTransFlowTrans, + applPastTransFlowBytes, + applPastTransKindTrans, + applPastTransKindBytes, + applPastTransStreamPerforms, + applPastTransStreamInvokes } + STATUS current + DESCRIPTION + "This group contains 64-bit objects required for historical + records on high-volume transaction-structured streams, + where 32-bit integers would be insufficient." + ::= { applicationMibGroups 8 } + +applicationRunGroup OBJECT-GROUP + OBJECTS { applElmtRunStatusSuspended, + applElmtRunStatusHeapUsage, + applElmtRunStatusOpenConnections, + applElmtRunStatusOpenFiles, + applElmtRunStatusLastErrorMsg, + applElmtRunStatusLastErrorTime, + applElmtRunControlSuspend, + applElmtRunControlReconfigure, + applElmtRunControlTerminate } + STATUS current + DESCRIPTION + "This group represents extensions to the system application + MIB." + ::= { applicationMibGroups 9 } + +applicationMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for the application MIB." + MODULE + MANDATORY-GROUPS { applicationMonitorGroup, + applicationHistoryGroup, + applicationRunGroup } + + OBJECT applPastChannelControlCollect + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applPastChannelControlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applPastChannelControlTimeLimit + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applElmtRunControlSuspend + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + OBJECT applElmtRunControlReconfigure + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applElmtRunControlTerminate + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + GROUP applicationTransactGroup + DESCRIPTION + "The applicationTransactGroup is required when the + information stream processed has a transaction + structure. " + + GROUP applicationTransHistoryGroup + DESCRIPTION + "The applicationTransHistoryGroup must be implemented + if applicationTransactGroup and applicationHistoryGroup + are implemented." + + GROUP applicationFastMonitorGroup + DESCRIPTION + "The applicationFastMonitorGroup is mandatory when + the applicationMonitorGroup is implemented and its + counts group may exceed what can be represented in 32 bits." + + GROUP applicationFastTransactGroup + DESCRIPTION + "The applicationFastTransactGroup is mandatory when + the applicationTransactGroup is implemented and its + counts may exceed what can be represented in 32 bits." + + GROUP applicationFastHistoryGroup + DESCRIPTION + "The applicationFastHistoryGroup is mandatory when + the applicationHistoryGroup is implemented and its + counts may exceed what can be represented in 32 bits." + GROUP applicationFastTransHistoryGroup + DESCRIPTION + "The applicationFastTransHistoryGroup is mandatory when + the applicationTransHistoryGroup is implemented and its + counts may exceed what can be represented in 32 bits." + ::= { applicationMibConformance 2 } + +END diff --git a/mibs/ietf/APPN-DLUR-MIB b/mibs/ietf/APPN-DLUR-MIB new file mode 100644 index 0000000..c19997f --- /dev/null +++ b/mibs/ietf/APPN-DLUR-MIB @@ -0,0 +1,666 @@ +APPN-DLUR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, TruthValue + FROM SNMPv2-TC + + OBJECT-TYPE, MODULE-IDENTITY, Unsigned32 + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB + + SnaControlPointName + FROM APPN-MIB; + +dlurMIB MODULE-IDENTITY + LAST-UPDATED "9705101500Z" + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN/HPR MIBs SIG" + CONTACT-INFO + + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + RHJA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to manage + network devices with DLUR capabilities. This MIB + contains information that is useful for managing an APPN + product that implements a DLUR (Dependent Logical Unit + Requester). The DLUR product has a client/server + relationship with an APPN product that implements a DLUS + (Dependent Logical Unit Server)." + +::= { snanauMIB 5 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Convention +-- ********************************************************************* +-- SnaControlPointName is imported from the APPN MIB + +-- ********************************************************************* + dlurObjects OBJECT IDENTIFIER ::= { dlurMIB 1 } +-- ********************************************************************* + + +dlurNodeInfo OBJECT IDENTIFIER ::= { dlurObjects 1 } +-- ********************************************************************* +-- DLUR Capabilities of the node +-- +-- This group represents the capabilities and options of the DLUR +-- implementation. +-- ********************************************************************* +dlurNodeCapabilities OBJECT IDENTIFIER ::= { dlurNodeInfo 1 } + +dlurNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the APPN node where + this DLUR implementation resides. If this object has the same + value as the appnNodeCpName object in the APPN MIB, then the + two objects are referring to the same APPN node." + + ::= { dlurNodeCapabilities 1 } + +dlurReleaseLevel OBJECT-TYPE + SYNTAX DisplayString (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DLUR release level of this implementation. This is the + value that is encoded in the DLUR/DLUS Capabilites (CV 51). + To insure consistent display, this one-byte value is encoded + here as two displayable characters that are equivalent to a + hexadecimal display. For example, if the one-byte value as + encoded in CV51 is X'01', this object will contain the + displayable string '01'." + + ::= { dlurNodeCapabilities 2 } + +dlurAnsSupport OBJECT-TYPE + SYNTAX INTEGER { + continueOrStop(1), + stopOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Automatic Network Shutdown (ANS) capability of this node. + + - 'continueOrStop' indicates that the DLUR implementation + supports either ANS value (continue or stop) as + specified by the DLUS on ACTPU for each PU. + + - 'stopOnly' indicates that the DLUR implementation only + supports the ANS value of stop. + + ANS = continue means that the DLUR node will keep LU-LU + sessions active even if SSCP-PU and SSCP-LU control sessions + are interrupted. + + ANS = stop means that LU-LU sessions will be interrupted when + the SSCP-PU and SSCP-LU sessions are interrupted." + + ::= { dlurNodeCapabilities 3 } + +dlurMultiSubnetSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation can support + CPSVRMGR sessions that cross NetId boundaries." + + ::= { dlurNodeCapabilities 4 } + +dlurDefaultDefPrimDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the defined default primary DLUS for all of + the PUs served by this DLUR. This can be overridden for a + particular PU by a defined primary DLUS for that PU, + represented by the dlurPuDefPrimDlusName object." + + ::= { dlurNodeCapabilities 5 } + +dlurNetworkNameForwardingSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation supports + forwarding of Network Name control vectors on ACTPUs and + ACTLUs to DLUR-served PUs and their associated LUs. + + This object corresponds to byte 9. bit 3 of cv51." + + ::= { dlurNodeCapabilities 6 } + +dlurNondisDlusDlurSessDeactSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation supports + nondisruptive deactivation of its DLUR-DLUS sessions. + Upon receiving from a DLUS an UNBIND for the CPSVRMGR pipe + with sense data X'08A0 000B', a DLUR that supports this + option immediately begins attempting to activate a CPSVRMGR + pipe with a DLUS other than the one that sent the UNBIND. + + This object corresponds to byte 9. bit 4 of cv51." + + ::= { dlurNodeCapabilities 7 } + +-- ********************************************************************* +-- DLUR default defined backup DLUS table +-- ********************************************************************* + +dlurDefaultDefBackupDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurDefaultDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an ordered list of defined backup DLUSs + for all of the PUs served by this DLUR. These can be + overridden for a particular PU by a list of defined backup + DLUSs for that PU, represented by the + dlurPuDefBackupDlusNameTable. Entries in this table are + ordered from most preferred default backup DLUS to least + preferred." + + ::= { dlurNodeInfo 2 } + +dlurDefaultDefBackupDlusEntry OBJECT-TYPE + SYNTAX DlurDefaultDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by an integer-valued index, which + orders the entries from most preferred default backup DLUS + to least preferred." + + INDEX { dlurDefaultDefBackupDlusIndex } + + ::= { dlurDefaultDefBackupDlusTable 1 } + +DlurDefaultDefBackupDlusEntry ::= SEQUENCE { + dlurDefaultDefBackupDlusIndex Unsigned32, + dlurDefaultDefBackupDlusName SnaControlPointName + } + +dlurDefaultDefBackupDlusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index for this table. The index values start at 1, + which identifies the most preferred default backup DLUS." + + ::= { dlurDefaultDefBackupDlusEntry 1 } + +dlurDefaultDefBackupDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of a default backup DLUS for PUs served + by this DLUR." + + ::= { dlurDefaultDefBackupDlusEntry 2 } + +-- ********************************************************************* +-- PU Information +-- +-- The following table carries information about the PUs that this APPN +-- node is supporting via DLUR. + +-- ********************************************************************* +dlurPuInfo OBJECT IDENTIFIER ::= { dlurObjects 2 } + +dlurPuTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurPuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the PUs supported by this DLUR." + + ::= { dlurPuInfo 1 } + +dlurPuEntry OBJECT-TYPE + SYNTAX DlurPuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in a table of PU information, indexed by PU name." + + INDEX { dlurPuName } + + ::= { dlurPuTable 1 } + +DlurPuEntry ::= SEQUENCE { + dlurPuName DisplayString, + dlurPuSscpSuppliedName DisplayString, + dlurPuStatus INTEGER, + dlurPuAnsSupport INTEGER, + dlurPuLocation INTEGER, + dlurPuLsName DisplayString, + dlurPuDlusSessnStatus INTEGER, + dlurPuActiveDlusName DisplayString, + dlurPuDefPrimDlusName DisplayString + } + +dlurPuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Locally administered name of the PU." + + ::= { dlurPuEntry 1 } + + +dlurPuSscpSuppliedName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the PU. This value is supplied to a PU by the + SSCP that activated it. If a value has not been supplied, a + zero-length string is returned." + + ::= { dlurPuEntry 2 } + +dlurPuStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendReqActpuRsp(2), + pendActpu(3), + pendActpuRsp(4), + active(5), + pendLinkact(6), + pendDactpuRsp(7), + pendInop(8), + pendInopActpu(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the DLUR-supported PU. The following values are + defined: + + reset(1) - reset + pendReqActpuRsp(2) - pending a response from the DLUS + to a Request ACTPU + pendActpu(3) - pending an ACTPU from the DLUS + pendActpuRsp(4) - pending an ACTPU response from the PU + active(5) - active + pendLinkact(6) - pending activation of the link to a + downstream PU + pendDactpuRsp(7) - pending a DACTPU response from the PU + pendInop(8) - the CPSVRMGR pipe became inoperative + while the DLUR was pending an ACTPU + response from the PU + pendInopActpu(9) - when the DLUR was in the pendInop + state, a CPSVRMGR pipe became active + and a new ACTPU was received over it, + before a response to the previous + ACTPU was received from the PU." + + ::= { dlurPuEntry 3 } + +dlurPuAnsSupport OBJECT-TYPE + SYNTAX INTEGER { + continue(1), + stop(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Automatic Network Shutdown (ANS) support configured for + this PU. This value (as configured by the network + administrator) is sent by DLUS with ACTPU for each PU. + + - 'continue' means that the DLUR node will attempt to keep + LU-LU sessions active even if SSCP-PU and SSCP-LU + control sessions are interrupted. + + - 'stop' means that LU-LU sessions will be interrupted + when the SSCP-PU and SSCP-LU sessions are interrupted." + + ::= { dlurPuEntry 4 } + +dlurPuLocation OBJECT-TYPE + SYNTAX INTEGER { + internal(1), + downstream(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Location of the DLUR-support PU: + internal(1) - internal to the APPN node itself (no link) + downstream(2) - downstream of the APPN node (connected via + a link)." + + ::= { dlurPuEntry 5 } + +dlurPuLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name of the link station through + which a downstream PU is connected to this DLUR. A zero-length + string is returned for internal PUs. If this object has the + same value as the appnLsName object in the APPN MIB, then the + two are identifying the same link station." + + ::= { dlurPuEntry 6 } + +dlurPuDlusSessnStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendingActive(2), + active(3), + pendingInactive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the control session to the DLUS identified in + dlurPuActiveDlusName. This is a combination of the separate + states for the contention-winner and contention-loser sessions: + + reset(1) - none of the cases below + pendingActive(2) - either contention-winner session or + contention-loser session is pending active + active(3) - contention-winner and contention-loser + sessions are both active + pendingInactive(4) - either contention-winner session or + contention-loser session is pending + inactive - this test is made AFTER the + 'pendingActive' test. + + The following matrix provides a different representation of + how the values of this object are related to the individual + states of the contention-winner and contention-loser sessions: + + Conwinner + | pA | pI | A | X = !(pA | pI | A) + C ++++++++++++++++++++++++++++++++++ + o pA | 2 | 2 | 2 | 2 + n ++++++++++++++++++++++++++++++++++ + l pI | 2 | 4 | 4 | 4 + o ++++++++++++++++++++++++++++++++++ + s A | 2 | 4 | 3 | 1 + e ++++++++++++++++++++++++++++++++++ + r X | 2 | 4 | 1 | 1 + ++++++++++++++++++++++++++++++++++ + " + + ::= { dlurPuEntry 7 } + +dlurPuActiveDlusName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the active DLUS for this PU. If its length + is not zero, this name follows the SnaControlPointName textual + convention. A zero-length string indicates that the PU does + not currently have an active DLUS." + + ::= { dlurPuEntry 8 } + +dlurPuDefPrimDlusName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the defined primary DLUS for this PU, if one + has been defined. If present, this name follows the + SnaControlPointName textual convention. A zero-length string + indicates that no primary DLUS has been defined for this PU, in + which case the global default represented by the + dlurDefaultDefPrimDlusName object is used." + + ::= { dlurPuEntry 9 } + +-- ***************************************** +-- Defined backup DLUS table for a PU +-- ***************************************** + +dlurPuDefBackupDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurPuDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an ordered list of defined backup DLUSs + for those PUs served by this DLUR that have their own defined + backup DLUSs. PUs that have no entries in this table use the + global default backup DLUSs for the DLUR, represented by the + dlurDefaultDefBackupDlusNameTable. Entries in this table are + ordered from most preferred backup DLUS to least preferred for + each PU." + + ::= { dlurPuInfo 2 } + +dlurPuDefBackupDlusEntry OBJECT-TYPE + SYNTAX DlurPuDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by PU name and by an integer-valued + index, which orders the entries from most preferred backup DLUS + for the PU to least preferred." + + INDEX { dlurPuDefBackupDlusPuName, + dlurPuDefBackupDlusIndex } + + ::= { dlurPuDefBackupDlusTable 1 } + +DlurPuDefBackupDlusEntry ::= SEQUENCE { + dlurPuDefBackupDlusPuName DisplayString, + dlurPuDefBackupDlusIndex Unsigned32, + dlurPuDefBackupDlusName SnaControlPointName + } + +dlurPuDefBackupDlusPuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Locally administered name of the PU. If this object has the + same value as the dlurPuName object, then the two are + identifying the same PU." + + ::= { dlurPuDefBackupDlusEntry 1 } + +dlurPuDefBackupDlusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index for this table. The index values start at 1, + which identifies the most preferred backup DLUS for the PU." + + ::= { dlurPuDefBackupDlusEntry 2 } + +dlurPuDefBackupDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of a backup DLUS for this PU." + + ::= { dlurPuDefBackupDlusEntry 3 } + +-- ********************************************************************* +-- DLUS Control Sessions (CPSVRMGR Pipes) +-- +-- This table contains information about DLUS control sessions, also +-- known as CPSVRMGR pipes. Although DLUR uses a pair of CPSVRMGR +-- sessions for communication, for the purpose of status, information +-- about these two sessions is combined to yield a single status for the +-- requester/server connection. + +-- ********************************************************************* + +dlurDlusInfo OBJECT IDENTIFIER ::= { dlurObjects 3 } + +dlurDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about DLUS control sessions." + + ::= { dlurDlusInfo 1} + +dlurDlusEntry OBJECT-TYPE + SYNTAX DlurDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry is indexed by the name of the DLUS." + + INDEX { dlurDlusName } + + ::= { dlurDlusTable 1 } + +DlurDlusEntry ::= SEQUENCE { + dlurDlusName SnaControlPointName, + dlurDlusSessnStatus INTEGER + } + +dlurDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of a DLUS with which this DLUR currently has a + CPSVRMGR pipe established." + + ::= { dlurDlusEntry 1 } + +dlurDlusSessnStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendingActive(2), + active(3), + pendingInactive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the CPSVRMGR pipe between the DLUR and this DLUS. + This is a combination of the separate states for the + contention-winner and contention-loser sessions: + + reset(1) - none of the cases below + pendingActive(2) - either contention-winner session or + contention-loser session is pending active + active(3) - contention-winner and contention-loser + sessions are both active + pendingInactive(4) - either contention-winner session or + contention-loser session is pending + inactive - this test is made AFTER the + 'pendingActive' test. + + The following matrix provides a different representation of + how the values of this object are related to the individual + states of the contention-winner and contention-loser sessions: + + Conwinner + | pA | pI | A | X = !(pA | pI | A) + C ++++++++++++++++++++++++++++++++++ + o pA | 2 | 2 | 2 | 2 + n ++++++++++++++++++++++++++++++++++ + l pI | 2 | 4 | 4 | 4 + o ++++++++++++++++++++++++++++++++++ + s A | 2 | 4 | 3 | 1 + e ++++++++++++++++++++++++++++++++++ + r X | 2 | 4 | 1 | 1 + ++++++++++++++++++++++++++++++++++ + " + + ::= { dlurDlusEntry 2 } + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +dlurConformance OBJECT IDENTIFIER ::= { dlurMIB 2 } + +dlurCompliances OBJECT IDENTIFIER ::= { dlurConformance 1 } +dlurGroups OBJECT IDENTIFIER ::= { dlurConformance 2 } + +-- Compliance statements + +dlurCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the DLUR MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { dlurConfGroup } + + ::= { dlurCompliances 1 } + +-- Units of conformance +dlurConfGroup OBJECT-GROUP + OBJECTS { + dlurNodeCpName, + dlurReleaseLevel, + dlurAnsSupport, + dlurMultiSubnetSupport, + dlurNetworkNameForwardingSupport, + dlurNondisDlusDlurSessDeactSup, + dlurDefaultDefPrimDlusName, + dlurDefaultDefBackupDlusName, + dlurPuSscpSuppliedName, + dlurPuStatus, + dlurPuAnsSupport, + dlurPuLocation, + dlurPuLsName, + dlurPuDlusSessnStatus, + dlurPuActiveDlusName, + dlurPuDefPrimDlusName, + dlurPuDefBackupDlusName, + dlurDlusSessnStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information on an + implementation of APPN DLUR." + + ::= { dlurGroups 1 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/APPN-MIB b/mibs/ietf/APPN-MIB new file mode 100644 index 0000000..595d769 --- /dev/null +++ b/mibs/ietf/APPN-MIB @@ -0,0 +1,5980 @@ +APPN-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + IANAifType + FROM IANAifType-MIB + + DisplayString, VariablePointer, RowPointer, DateAndTime, + TruthValue, TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + + Counter32, Gauge32, Unsigned32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB; + +appnMIB MODULE-IDENTITY + LAST-UPDATED "9807151800Z" -- July 15, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + + " + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + + " + DESCRIPTION + "This is the MIB module for objects used to + manage network devices with APPN capabilities." + + -- Revision tracking starts with Proposed Standard (RFC 2155) + REVISION "9807151800Z" + DESCRIPTION + "Minor editorial fixes; new value 'none(5)' added + to the enumeration for the appnLocalTgBranchLinkType + object." + REVISION "9805261800Z" + DESCRIPTION + "Post-RFC 2155 conformance definitions added, + appnNodeLsCounterType and appnNodeBrNn objects + added, appnNodeMibVersion object deprecated." + + REVISION "9707311800Z" + DESCRIPTION + "Branch network node (Branch Extender) objects added." + REVISION "9703311800Z" + DESCRIPTION + "MLTG objects added." + REVISION "9703201200Z" + DESCRIPTION + "RFC 2155 (Proposed Standard)" + +::= { snanauMIB 4 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +SnaNodeIdentification ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA Node Identification consists of two parts, which + together comprise four bytes of hexadecimal data. In SNA the + Node Identification is transported in bytes 2-5 of the XID. + + The block number is the first three digits of the Node + Identification. These 3 hexadecimal digits identify the + product. + + The ID number is the last 5 digits of the Node Identification. + These 5 hexadecimal digits are administratively defined and + combined with the 3-digit block number form the 8-digit Node + Identification. A unique value is required for connections to + SNA subarea. In some implementations, the value 'bbb00000' + (where 'bbb' represents a 3-digit block number) is returned to + mean that the ID number is not unique on this node. + + An SNA Node Identification is represented as eight + ASCII-encoded hexadecimal digits, using the characters '0' - + '9' and 'A' - 'F'." + + SYNTAX OCTET STRING (SIZE (8)) + +SnaControlPointName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A fully qualified SNA control point name, consisting of a 1 to + 8 character network identifier (NetId), a period ('.'), and a 1 + to 8 character control point name (CpName). + + The NetId and CpName are constructed from the uppercase letters + 'A' - 'Z' and the numerics '0' - '9', all encoded in ASCII, + with the restriction that the first character of each must be + a letter. Trailing blanks are not allowed. + + Earlier versions of SNA permitted three additional characters + in NetIds and CpNames: '#', '@', and '$'. While this use of + these characters has been retired, a Management Station should + still accept them for backward compatibility." + + SYNTAX OCTET STRING (SIZE (3..17)) + +SnaClassOfServiceName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA class-of-service (COS) name, ranging from 1 to 8 + ASCII characters. COS names take one of two forms: + + - a user-defined COS name is constructed from the uppercase + letters 'A' - 'Z' and the numerics '0' - '9', with the + restriction that the first character of the name must be + a letter. + - an SNA-defined user-session COS name begins with the + character '#', which is followed by up to seven + additional characters from the set of uppercase letters + and numerics. + + Trailing blanks are not allowed in either form of COS name. + + A zero-length string indicates that a COS name is not + available." + + SYNTAX OCTET STRING (SIZE (0..8)) + +SnaModeName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA mode name, ranging from 1 to 8 ASCII characters. + Mode names take one of two forms: + + - a user-defined mode name is constructed from the + uppercase letters 'A' - 'Z' and the numerics '0' - '9', + with the restriction that the first character of the name + must be a letter. + - an SNA-defined user-session mode name begins with the + character '#', which is followed by up to seven + additional characters from the set of uppercase letters + and numerics. + + Trailing blanks are not allowed in either form of mode name, + with the single exception of the all-blank mode name, where + a string consisting of 8 blanks is returned. + + A zero-length string indicates that a mode name is not + available." + + SYNTAX OCTET STRING (SIZE (0..8)) + +SnaSenseData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate their display by a Management Station, sense + data objects in the MIB are represented as OCTET STRINGS + containing eight ASCII characters. Eight '0' characters + indicates that no sense data identifying an SNA error + condition is available. + + An SNA sense data is represented as eight hexadecimal digits, + using the characters '0' - '9' and 'A' - 'F'." + + SYNTAX OCTET STRING (SIZE (8)) + +DisplayableDlcAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "DLC address of a port or link station, represented as an + OCTET STRING containing 0 to 64 ASCII characters. + A Management Station should use a value of this type only + for display. The 'real' DLC address, i.e., the sequence of + bytes that flow in the DLC header, is often available in a + DLC-specific MIB. + + The zero-length string indicates that the DLC address in + question is not known to the agent." + + SYNTAX OCTET STRING (SIZE (0..64)) + +AppnNodeCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing global statistics for the entire APPN + node. A Management Station can detect discontinuities in this + counter by monitoring the appnNodeCounterDisconTime object." + + SYNTAX Counter32 + +AppnPortCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an APPN port. A + Management Station can detect discontinuities in this counter + by monitoring the appnPortCounterDisconTime object." + + SYNTAX Counter32 + +AppnLinkStationCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an APPN link station. A + Management Station can detect discontinuities in this counter + by monitoring the appnLsCounterDisconTime object." + + SYNTAX Counter32 + +AppnTopologyEntryTimeLeft ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Number of days before deletion of this entry from the topology + database. Range is 0-15. A value of 0 indicates that the + entry is either in the process of being deleted, or is being + marked for deletion at the next garbage collection cycle." + + SYNTAX INTEGER (0..15) + +AppnTgDlcData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "DLC-specific data related to a connection network transmission + group. For other TGs, a zero-length string is returned. + + Examples of the type of data returned by an object with this + syntax include the following: + + Token-Ring - MAC/SAP + X.25 Switched - dial digits + X.21 Switched - dial digits + Circuit Switch - dial digits + This MIB does not specify formats for these or any other types + of DLC-specific data. Formats may, however, be specified in + documents related to a particular DLC. + + The contents of an object with this syntax correspond to the + contents of the DLC-specific subfields of cv46, documented in + (6)." + + SYNTAX OCTET STRING (SIZE (0..64)) + +AppnTgEffectiveCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing the effective capacity of a transmission + group. This is an administratively assigned value derived from + the link bandwidth and maximum load factor. It is encoded in + the same way as byte 7 of cv47, and represents a floating-point + number in units of 300 bits per second." + + SYNTAX OCTET STRING (SIZE (1)) + +AppnTgSecurity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing the level of security on a transmission + group. A class of service definition includes an indication of + the acceptable TG security value(s) for that class of service. + + The following seven values are defined: + + nonsecure(1) - + (X'01'): none of the values listed below; + for example, satellite-connected or + located in a nonsecure country + publicSwitchedNetwork(32) - + (X'20'): public switched network; secure + in the sense that there is no + predetermined route that traffic will take + undergroundCable(64) - + (X'40'): underground cable; located in a + secure country (as determined by the + network administrator) + secureConduit(96) - + (X'60'): secure conduit, not guarded; for + example, pressurized pipe + guardedConduit(128) - + (X'80'): guarded conduit; protected + against physical tapping + encrypted(160) - + (X'A0'): link-level encryption is provided + guardedRadiation(192) - + (X'C0'): guarded conduit containing the + transmission medium; protected against + physical and radiation tapping" + + SYNTAX INTEGER { + nonsecure(1), -- X'01' + publicSwitchedNetwork(32), -- X'20' + undergroundCable(64), -- X'40' + secureConduit(96), -- X'60' + guardedConduit(128), -- X'80' + encrypted(160), -- X'A0' + guardedRadiation(192) -- X'C0' + } + +AppnTgDelay ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Relative amount of time that it takes for a signal to travel + the length of a logical link. This time is represented in + microseconds, using the same encoding scheme used in cv47 in a + topology update. Some of the more common values, along with + their encoded hex values, are: + + minimum(0), X'00' + negligible(384), X'4C' + terrestrial(9216), X'71' + packet(147456), X'91' + long(294912), X'99' + maximum(2013265920) X'FF' + + " + + SYNTAX OCTET STRING (SIZE (1)) + +-- ********************************************************************* + appnObjects OBJECT IDENTIFIER ::= { appnMIB 1 } +-- ********************************************************************* + +-- ******************** The APPN Node Group **************************** + +appnNode OBJECT IDENTIFIER ::= { appnObjects 1 } + appnGeneralInfoAndCaps OBJECT IDENTIFIER ::= { appnNode 1 } + appnNnUniqueInfoAndCaps OBJECT IDENTIFIER ::= { appnNode 2 } + appnEnUniqueCaps OBJECT IDENTIFIER ::= { appnNode 3 } + appnPortInformation OBJECT IDENTIFIER ::= { appnNode 4 } + appnLinkStationInformation OBJECT IDENTIFIER ::= { appnNode 5 } + appnVrnInfo OBJECT IDENTIFIER ::= { appnNode 6 } + +-- This group provides global information about an APPN network node, +-- an APPN end node, an APPN branch network node, or an LEN node. + +-- APPN General Information +-- This section applies to APPN network nodes, end nodes, and branch +-- network nodes, as well as to LEN end nodes. + +appnNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for this node." + + ::= { appnGeneralInfoAndCaps 1 } + +-- appnNodeMibVersion OBJECT-TYPE (deprecated: moved to end of module) + +appnNodeId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This node's Node Identification, which it sends in bytes + 2-5 of XID." + + ::= { appnGeneralInfoAndCaps 3 } + +appnNodeType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + endNode(2), + t21len(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of APPN node: + + networkNode(1) - APPN network node + endNode(2) - APPN end node + t21len(4) - LEN end node + + Note: A branch network node SHALL return endNode(2) + as the value of this object. A management application + can distinguish between a branch network node and an + actual end node by retrieving the appnNodeBrNn object." + + ::= { appnGeneralInfoAndCaps 4 } + +appnNodeUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Amount of time (in hundredths of a second) since the APPN node + was last reinitialized." + + ::= { appnGeneralInfoAndCaps 5 } + +appnNodeParallelTg OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports parallel TGs." + + ::= { appnGeneralInfoAndCaps 6 } + +appnNodeAdaptiveBindPacing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports adaptive bind pacing for + dependent LUs." + + ::= { appnGeneralInfoAndCaps 7 } + +appnNodeHprSupport OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates this node's level of support for high-performance + routing (HPR): + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + This object corresponds to cv4580, byte 9, bits 3-4." + + ::= { appnGeneralInfoAndCaps 8 } + +appnNodeMaxSessPerRtpConn OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a configuration parameter indicating + the maximum number of sessions that the APPN node is to put on + any HPR connection. The value is zero if not applicable." + + ::= { appnGeneralInfoAndCaps 9 } + +appnNodeHprIntRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups received for routes + passing through this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 10 } + +appnNodeHprIntRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by this node for + routes passing through it since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 11 } + +appnNodeHprOrgRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups sent for routes + originating in this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 12 } + +appnNodeHprOrgRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by other nodes for + routes originating in this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 13 } + +appnNodeHprEndRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups received for routes + ending in this node since the node was last reinitialized." + + ::= { appnGeneralInfoAndCaps 14 } + +appnNodeHprEndRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by this node for + routes ending in it since the node was last reinitialized." + + ::= { appnGeneralInfoAndCaps 15 } + +appnNodeCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the APPN node + was reinitialized." + ::= { appnGeneralInfoAndCaps 16 } + +appnNodeLsCounterType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + noAnr(2), + anrForLocalNces(3), + allAnr(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which ANR traffic, if any, the node includes in the + counts returned by the APPN link station counters + appnLsInXidBytes, appnLsInMsgBytes, appnLsInXidFrames, + appnLsInMsgFrames, appnLsOutXidBytes, appnLsOutMsgBytes, + appnLsOutXidFrames, and appnLsOutMsgFrames. These counters + are always incremented for ISR traffic. + + The following values are defined: + + other(1) - the node does something different + from all the options listed below + noAnr(2) - the node does not include any ANR + traffic in these counts + anrForLocalNces(3) - the node includes in these counts + ANR traffic for RTP connections + that terminate in this node, but + not ANR traffic for RTP connections + that pass through this node without + terminating in it + allAnr(4) - the node includes all ANR traffic + in these counts." + + ::= { appnGeneralInfoAndCaps 17 } + +appnNodeBrNn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is currently configured as a + branch network node. + + Note: throughout the remainder of this MIB module, branch + network node is treated as a third node type, parallel to + network node and end node. This is not how branch network + nodes are treated in the base APPN architecture, but it + increases clarity to do it here." + + ::= { appnGeneralInfoAndCaps 18 } + +-- ********************************************************************* +-- APPN Network Node Information +-- This section provides global information about an APPN network node. +-- ********************************************************************* + +appnNodeNnCentralDirectory OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports central directory + services. + + This object corresponds to cv4580, byte 8, bit 1." + + ::= { appnNnUniqueInfoAndCaps 1 } + +appnNodeNnTreeCache OBJECT-TYPE + SYNTAX INTEGER { + noCache(1), + cacheNoIncrUpdate(2), + cacheWithIncrUpdate(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates this node's level of support for caching of route + trees. Three levels are specified: + + noCache(1) - caching of route trees is not + supported + cacheNoIncrUpdate(2) - caching of route trees is + supported, but without incremental + updates + cacheWithIncrUpdate(3) - caching of route trees with + incremental updates is supported" + + ::= { appnNnUniqueInfoAndCaps 2 } + +appnNodeNnRouteAddResist OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Route addition resistance. + + This administratively assigned value indicates the relative + desirability of using this node for intermediate session + traffic. The value, which can be any integer 0-255, is used + in route computation. The lower the value, the more + desirable the node is for intermediate routing. + + This object corresponds to cv4580, byte 6." + + ::= { appnNnUniqueInfoAndCaps 3 } + +appnNodeNnIsr OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports intermediate session + routing. + + This object corresponds to cv4580, byte 8, bit 2." + + ::= { appnNnUniqueInfoAndCaps 4 } + +appnNodeNnFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last flow-reduction sequence number (FRSN) sent by this + node in a topology update to an adjacent network node." + + ::= { appnNnUniqueInfoAndCaps 5 } + +appnNodeNnPeriBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has peripheral border node + support. + + This object corresponds to cv4580, byte 9, bit 0." + + ::= { appnNnUniqueInfoAndCaps 6 } + +appnNodeNnInterchangeSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has interchange node support. + + This object corresponds to cv4580, byte 9, bit 1." + + ::= { appnNnUniqueInfoAndCaps 7 } + +appnNodeNnExteBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has extended border node support. + + This object corresponds to cv4580, byte 9, bit 2." + + ::= { appnNnUniqueInfoAndCaps 8 } + + +appnNodeNnSafeStoreFreq OBJECT-TYPE + SYNTAX INTEGER (0..32767) + UNITS "TDUs" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The topology safe store frequency. + + If this number is not zero, then the topology database is saved + each time the total number of topology database updates (TDUs) + received by this node increases by this number. A value of + zero indicates that the topology database is not being saved." + + ::= { appnNnUniqueInfoAndCaps 9 } + +appnNodeNnRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Resource sequence number for this node, which it assigns and + controls. + + This object corresponds to the numeric value in cv4580, bytes + 2-5." + + ::= { appnNnUniqueInfoAndCaps 10 } + +appnNodeNnCongested OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is congested. Other network nodes + stop routing traffic to this node while this flag is on. + + This object corresponds to cv4580, byte 7, bit 0." + ::= { appnNnUniqueInfoAndCaps 11 } + +appnNodeNnIsrDepleted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicate whether intermediated session routing resources are + depleted. Other network nodes stop routing traffic through + this node while this flag is on. + + This object corresponds to cv4580, byte 7, bit 1." + + ::= { appnNnUniqueInfoAndCaps 12 } + +appnNodeNnQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is quiescing. + + This object corresponds to cv4580, byte 7, bit 5." + + ::= { appnNnUniqueInfoAndCaps 13 } + +appnNodeNnGateway OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node has gateway services support. + + This object corresponds to cv4580, byte 8, bit 0." + + ::= { appnNnUniqueInfoAndCaps 14 } + + +-- ********************************************************************* + +-- APPN End Node Information +-- This section provides global information about an APPN end node. Two +-- of the objects are also implemented by a branch network node. +-- ********************************************************************* + +appnNodeEnModeCosMap OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this end node supports mode name to COS name + mapping." + + ::= { appnEnUniqueCaps 1 } + +appnNodeEnNnServer OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The fully qualified name of the current NN server for this end + node. An NN server is identified using the format specified in + the SnaControlPointName textual convention. The value is a + zero-length string when there is no active NN server. + + A branch network node shall also implement this object." + + ::= { appnEnUniqueCaps 2 } + +appnNodeEnLuSearch OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is to be searched for LUs as part + of a network broadcast search. + + A branch network node shall also implement this object." + + ::= { appnEnUniqueCaps 3 } + + +-- ********************************************************************* +-- APPN Port information +-- This section provides information about an APPN node's ports. +-- ********************************************************************* + +appnPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port table describes the configuration and current status + of the ports used by APPN. When it is known to the APPN + component, an OBJECT IDENTIFIER pointing to additional + information related to the port is included. This may, but + need not, be a RowPointer to an ifTable entry for a DLC + interface immediately 'below' the port." + + ::= { appnPortInformation 1 } + +appnPortEntry OBJECT-TYPE + SYNTAX AppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The port name is used as the index to this table." + + INDEX + { appnPortName } + + ::= { appnPortTable 1 } + +AppnPortEntry ::= SEQUENCE { + appnPortName DisplayString, + appnPortCommand INTEGER, + appnPortOperState INTEGER, + appnPortDlcType IANAifType, + appnPortPortType INTEGER, + appnPortSIMRIM TruthValue, + appnPortLsRole INTEGER, + appnPortNegotLs TruthValue, + appnPortDynamicLinkSupport TruthValue, + appnPortMaxRcvBtuSize INTEGER, + appnPortMaxIframeWindow Gauge32, + appnPortDefLsGoodXids AppnPortCounter, + appnPortDefLsBadXids AppnPortCounter, + appnPortDynLsGoodXids AppnPortCounter, + appnPortDynLsBadXids AppnPortCounter, + appnPortSpecific RowPointer, + appnPortDlcLocalAddr DisplayableDlcAddress, + appnPortCounterDisconTime TimeStamp + } + +appnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "Administratively assigned name for this APPN port." + + ::= { appnPortEntry 1 } + +appnPortCommand OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + activate(2), + recycle(3), + ready(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can activate, deactivate, + or recycle (i.e., cause to be deactivated and then immediately + activated) a port, by setting the value to activate(1), + deactivate(2), or recycle(3), respectively. The value ready(4) + is returned on GET operations until a SET has been processed; + after that the value received on the most recent SET is + returned." + + ::= { appnPortEntry 2 } + +appnPortOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + pendactive(2), + active(3), + pendinact(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of this port: + + inactive(1) - port is inactive + pendactive(2) - port is pending active + active(3) - port is active + pendinact(4) - port is pending inactive" + + + ::= { appnPortEntry 3 } + +appnPortDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + + ::= { appnPortEntry 4 } + +appnPortPortType OBJECT-TYPE + SYNTAX INTEGER { + leased(1), + switched(2), + sharedAccessFacilities(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the type of line used by this port: + + leased(1) - leased line + switched(2) - switched line + sharedAccessFacilities(3) - shared access facility, such + as a LAN." + + ::= { appnPortEntry 5 } + +appnPortSIMRIM OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Set Initialization Mode (SIM) and Receive + Initialization Mode (RIM) are supported for this port." + + ::= { appnPortEntry 6 } + +appnPortLsRole OBJECT-TYPE + SYNTAX INTEGER { + primary(1), + secondary(2), + negotiable(3), + abm(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial role for link stations activated through this port. + The values map to the following settings in the initial XID, + where 'ABM' indicates asynchronous balanced mode and 'NRM' + indicated normal response mode: + + primary(1): ABM support = 0 ( = NRM) + role = 01 ( = primary) + secondary(2): ABM support = 0 ( = NRM) + role = 00 ( = secondary) + negotiable(3): ABM support = 0 ( = NRM) + role = 11 ( = negotiable) + abm(4): ABM support = 1 ( = ABM) + role = 11 ( = negotiable)" + + ::= { appnPortEntry 7 } + +appnPortNegotLs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports negotiable link stations + for this port." + + ::= { appnPortEntry 8 } + +appnPortDynamicLinkSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node allows call-in on this port from + nodes not defined locally." + + ::= { appnPortEntry 9 } + +appnPortMaxRcvBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Basic Transmission Unit (BTU) size that a link station + on this port can receive. + + This object corresponds to bytes 21-22 of XID3." + + ::= { appnPortEntry 10 } + +appnPortMaxIframeWindow OBJECT-TYPE + SYNTAX Gauge32 + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of I-frames that can be received by the XID + sender before an acknowledgement is received." + + ::= { appnPortEntry 11 } + +appnPortDefLsGoodXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on all defined link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 12 } + +appnPortDefLsBadXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on all defined link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 13 } + +appnPortDynLsGoodXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on all dynamic link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 14 } + +appnPortDynLsBadXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on all dynamic link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 15 } + +appnPortSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the object, e.g., one in a DLC-specific MIB, that + can provide additional information related to this port. + + If the agent is unable to identify such an object, the value + 0.0 is returned." + + ::= { appnPortEntry 16 } + +appnPortDlcLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local DLC address of this port." + + ::= { appnPortEntry 17 } + +appnPortCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the port was + started." + + ::= { appnPortEntry 18 } + +-- ********************************************************************* +-- APPN Link Station Information +-- This section provides information about an APPN node's link stations. +-- ********************************************************************* + +appnLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains detailed information about the link + station configuration and its current status." + + ::= { appnLinkStationInformation 1 } + +appnLsEntry OBJECT-TYPE + SYNTAX AppnLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the link station name." + + INDEX + { appnLsName } + + ::= { appnLsTable 1 } + +AppnLsEntry ::= SEQUENCE { + appnLsName DisplayString, + appnLsCommand INTEGER, + appnLsOperState INTEGER, + + appnLsPortName DisplayString, + appnLsDlcType IANAifType, + appnLsDynamic TruthValue, + + appnLsAdjCpName OCTET STRING, + appnLsAdjNodeType INTEGER, + appnLsTgNum INTEGER, + appnLsLimResource TruthValue, + appnLsActOnDemand TruthValue, + appnLsMigration TruthValue, + appnLsPartnerNodeId SnaNodeIdentification, + appnLsCpCpSessionSupport TruthValue, + + appnLsMaxSendBtuSize INTEGER, +-- performance data + appnLsInXidBytes AppnLinkStationCounter, + appnLsInMsgBytes AppnLinkStationCounter, + appnLsInXidFrames AppnLinkStationCounter, + appnLsInMsgFrames AppnLinkStationCounter, + appnLsOutXidBytes AppnLinkStationCounter, + appnLsOutMsgBytes AppnLinkStationCounter, + appnLsOutXidFrames AppnLinkStationCounter, + appnLsOutMsgFrames AppnLinkStationCounter, +-- propagation delay + appnLsEchoRsps AppnLinkStationCounter, + appnLsCurrentDelay Gauge32, + appnLsMaxDelay Gauge32, + appnLsMinDelay Gauge32, + appnLsMaxDelayTime DateAndTime, +-- XID Statistics + appnLsGoodXids AppnLinkStationCounter, + appnLsBadXids AppnLinkStationCounter, +-- DLC-specific + appnLsSpecific RowPointer, + appnLsActiveTime Unsigned32, + appnLsCurrentStateTime TimeTicks, +-- HPR-specific + appnLsHprSup INTEGER, + appnLsErrRecoSup TruthValue, + appnLsForAnrLabel OCTET STRING, + appnLsRevAnrLabel OCTET STRING, + appnLsCpCpNceId OCTET STRING, + appnLsRouteNceId OCTET STRING, + appnLsBfNceId OCTET STRING, + + appnLsLocalAddr DisplayableDlcAddress, + appnLsRemoteAddr DisplayableDlcAddress, + appnLsRemoteLsName DisplayString, + appnLsCounterDisconTime TimeStamp, + appnLsMltgMember TruthValue + } + +appnLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. + The name can be from one to ten characters." + + ::= { appnLsEntry 1 } + +appnLsCommand OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + activate(2), + recycle(3), + ready(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can activate, deactivate, + or recycle (i.e., cause to be deactivated and then immediately + reactivated) a link station, by setting the value to + activate(1), deactivate(2), or recycle(3), respectively. The + value ready(4) is returned on GET operations until a SET has + been processed; after that the value received on the most + recent SET is returned." + + ::= { appnLsEntry 2 } + +appnLsOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + sentConnectOut(2), -- pending active + pendXidExch(3), -- pending active + sendActAs(4), -- pending active + sendSetMode(5), -- pending active + otherPendingActive(6),-- pending active + active(7), + sentDeactAsOrd(8), -- pending inactive + sentDiscOrd(9), -- pending inactive + sentDiscImmed(10), -- pending inactive + otherPendingInact(11) -- pending inactive + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of this link station. The comments map these more + granular states to the 'traditional' four states for SNA + resources. Values (2) through (5) represent the normal + progression of states when a link station is being activated. + Value (6) represents some other state of a link station in + the process of being activated. Values (8) through (10) + represent different ways a link station can be deactivated. + Value (11) represents some other state of a link station in + the process of being deactivated." + + ::= { appnLsEntry 3 } + +appnLsPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the port associated with + this link station. The name can be from one to ten + characters." + + ::= { appnLsEntry 4 } + +appnLsDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + + ::= { appnLsEntry 5 } + +appnLsDynamic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies whether this is a dynamic link station. Dynamic + link stations are created when links that have not been locally + defined are established by adjacent nodes." + + ::= { appnLsEntry 6 } + +appnLsAdjCpName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of the adjacent node for this link + station. An adjacent node is identified using the format + specified in the SnaControlPointName textual convention. + + The value of this object is determined as follows: + + 1. If the adjacent node's name was received on XID, it + is returned. + + 2. If the adjacent node's name was not received on XID, + but a locally-defined value is available, it is + returned. + + 3. Otherwise a string of length 0 is returned, indicating + that no name is known for the adjacent node." + + ::= { appnLsEntry 7 } + +appnLsAdjNodeType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + endNode(2), + t21len(4), + unknown(255) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Node type of the adjacent node on this link: + + networkNode(1) - APPN network node + endNode(2) - APPN end node + t21len(4) - LEN end node + unknown(255) - the agent does not know the node type + of the adjacent node + " + + ::= { appnLsEntry 8 } + +appnLsTgNum OBJECT-TYPE + SYNTAX INTEGER (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number associated with the TG to this link station, with a + range from 0 to 256. A value of 256 indicates that the TG + number has not been negotiated and is unknown at this time." + + ::= { appnLsEntry 9 } + +appnLsLimResource OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is a limited resource. A + link station that is a limited resource is deactivated when it + is no longer in use." + + ::= { appnLsEntry 10 } + +appnLsActOnDemand OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is activatable on demand. + + Such a link station is reported in the topology as active + regardless of its actual state, so that it can be considered in + route calculations. If the link station is inactive and is + chosen for a route, it will be activated at that time." + + ::= { appnLsEntry 11 } + +appnLsMigration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this link station will be used for + connections to down-level or migration partners. + + In general, migration nodes do not append their CP names on + XID3. Such nodes: (1) will not support parallel TGs, (2) + should be sent an ACTIVATE PHYSICAL UNIT (ACTPU), provided that + the partner supports ACTPUs, and (3) should not be sent + segmented BINDs. However, if this node receives an XID3 with + an appended CP name, then the partner node will not be treated + as a migration node. + + In the case of DYNAMIC TGs this object should be set to 'no'." + + ::= { appnLsEntry 12 } + +appnLsPartnerNodeId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The partner's Node Identification, from bytes 2-5 of the XID + received from the partner. If this value is not available, + then the characters '00000000' are returned." + + ::= { appnLsEntry 13 } + +appnLsCpCpSessionSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported by this + link station. For a dynamic link, this object represents + the default ('Admin') value." + ::= { appnLsEntry 14 } + +appnLsMaxSendBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Numeric value between 99 and 32767 inclusive indicating the + maximum number of bytes in a Basic Transmission Unit (BTU) sent + on this link. + + When the link state (returned by the appnLsOperState object) is + inactive or pending active, the value configured at this node + is returned. When the link state is active, the value that was + negotiated for it is returned. This negotiated value is the + smaller of the value configured at this node and the partner's + maximum receive BTU length, received in XID." + + ::= { appnLsEntry 15 } + +appnLsInXidBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID bytes received. All of the bytes in the SNA + basic transmission unit (BTU), i.e., all of the bytes in the + DLC XID Information Field, are counted." + + ::= { appnLsEntry 16 } + +appnLsInMsgBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) bytes received. All of the bytes + in the SNA basic transmission unit (BTU), including the + transmission header (TH), are counted." + + ::= { appnLsEntry 17 } + +appnLsInXidFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID frames received." + + ::= { appnLsEntry 18 } + +appnLsInMsgFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) frames received." + + ::= { appnLsEntry 19 } + +appnLsOutXidBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID bytes sent. All of the bytes in the SNA basic + transmission unit (BTU), i.e., all of the bytes in the DLC XID + Information Field, are counted." + + ::= { appnLsEntry 20 } + +appnLsOutMsgBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) bytes sent. All of the bytes + in the SNA basic transmission unit (BTU), including the + transmission header (TH), are counted." + + ::= { appnLsEntry 21 } + +appnLsOutXidFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID frames sent." + ::= { appnLsEntry 22 } + +appnLsOutMsgFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) frames sent." + + ::= { appnLsEntry 23 } + +appnLsEchoRsps OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "echo responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of echo responses returned from adjacent link station. + A response should be returned for each test frame sent by this + node. Test frames are sent to adjacent nodes periodically to + verify connectivity and to measure the actual round trip time, + that is, the time interval from when the test frame is sent + until when the response is received." + + + ::= { appnLsEntry 24 } + +appnLsCurrentDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time that it took for the last test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds." + + ::= { appnLsEntry 25 } + +appnLsMaxDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The longest time it took for a test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds . + + The value 0 is returned if no test signal has been sent and + returned." + + ::= { appnLsEntry 26 } + +appnLsMinDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The shortest time it took for a test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds. + + The value 0 is returned if no test signal has been sent and + returned." + + ::= { appnLsEntry 27 } + +appnLsMaxDelayTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the longest delay occurred. This time can be + used to identify when this high water mark occurred in relation + to other events in the APPN node, for example, the time at + which an APPC session was either terminated or failed to be + established. This latter time is available in the + appcHistSessTime object in the APPC MIB. + + The value 00000000 is returned if no test signal has been sent + and returned." + + ::= { appnLsEntry 28 } + +appnLsGoodXids OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on this link station since the time it was started." + ::= { appnLsEntry 29 } + +appnLsBadXids OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on this link station since the time it was started." + + ::= { appnLsEntry 30 } + +appnLsSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the object, e.g., one in a DLC-specific MIB, that + can provide additional information related to this link + station. + + If the agent is unable to identify such an object, the value + 0.0 is returned." + + ::= { appnLsEntry 31 } + +appnLsActiveTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative amount of time since the node was last + reinitialized, measured in hundredths of a second, that this + link station has been in the active state. A zero value + indicates that the link station has never been active since + the node was last reinitialized." + + ::= { appnLsEntry 32 } + +appnLsCurrentStateTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time, measured in hundredths of a second, that + the link station has been in its current state." + + ::= { appnLsEntry 33 } + +appnLsHprSup OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the level of high performance routing (HPR) support + over this link: + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + If the link is not active, the defined value is returned." + + ::= { appnLsEntry 34 } + +appnLsErrRecoSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is supporting + HPR link-level error recovery." + + ::= { appnLsEntry 35 } + +appnLsForAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The forward Automatic Network Routing (ANR) label for this + link station. If the link does not support HPR or the value is + unknown, a zero-length string is returned." + ::= { appnLsEntry 36 } + +appnLsRevAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reverse Automatic Network Routing (ANR) label for this + link station. If the link does not support HPR or the value is + unknown, a zero-length string is returned." + + ::= { appnLsEntry 37 } + +appnLsCpCpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for CP-CP + sessions if this node supports the HPR transport tower, a + zero-length string if the value is unknown or not meaningful + for this node." + + ::= { appnLsEntry 38 } + +appnLsRouteNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for Route + Setup if this node supports the HPR transport tower, a zero- + length string if the value is unknown or not meaningful for + this node." + + ::= { appnLsEntry 39 } + +appnLsBfNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for the + APPN/HPR boundary function if this node supports the HPR + transport tower, a zero-length string if the value is unknown + or not meaningful for this node." + + ::= { appnLsEntry 40 } + +appnLsLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local address of this link station." + + ::= { appnLsEntry 41 } + + +appnLsRemoteAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the remote link station on this link." + + ::= { appnLsEntry 42 } + +appnLsRemoteLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remote link station discovered from the XID exchange. + The name can be from one to ten characters. A zero-length + string indicates that the value is not known." + + ::= { appnLsEntry 43 } + +appnLsCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the link + station was started." + + ::= { appnLsEntry 44 } + +appnLsMltgMember OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link is a member of a multi-link TG. If + the link's TG has been brought up as a multi-link TG, then the + link is reported as a member of a multi-link TG, even if it is + currently the only active link in the TG." + + ::= { appnLsEntry 45 } + + + +--******************************************************************** +-- This table provides information about errors this node encountered +-- with connections to adjacent nodes. Entries are added for exceptional +-- conditions encountered establishing connections, and for exceptional +-- conditions that resulted in termination of a connection. It is an +-- implementation option when entries are removed from this table. +--******************************************************************** + +appnLsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information related to exceptional and + potentially exceptional conditions that occurred during the + activation, XID exchange, and termination of a connection. No + entries are created when these activities proceed normally. + + It is an implementation option when entries are removed from + this table." + + ::= { appnLinkStationInformation 2 } + +appnLsStatusEntry OBJECT-TYPE + SYNTAX AppnLsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the LsStatusIndex, which is an + integer that is continuously updated until it eventually + wraps." + + INDEX + { appnLsStatusIndex } + + ::= { appnLsStatusTable 1 } + +AppnLsStatusEntry ::= SEQUENCE { + appnLsStatusIndex INTEGER, + appnLsStatusTime DateAndTime, + appnLsStatusLsName DisplayString, + appnLsStatusCpName DisplayString, + appnLsStatusPartnerId SnaNodeIdentification, + appnLsStatusTgNum INTEGER, + appnLsStatusGeneralSense SnaSenseData, + appnLsStatusRetry TruthValue, + appnLsStatusEndSense SnaSenseData, + appnLsStatusXidLocalSense SnaSenseData, + appnLsStatusXidRemoteSense SnaSenseData, + appnLsStatusXidByteInError INTEGER, + appnLsStatusXidBitInError INTEGER, + appnLsStatusDlcType IANAifType, + appnLsStatusLocalAddr DisplayableDlcAddress, + appnLsStatusRemoteAddr DisplayableDlcAddress + } + + +appnLsStatusIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. The value of the index begins at zero + and is incremented up to a maximum value of 2**31-1 + (2,147,483,647) before wrapping." + + ::= { appnLsStatusEntry 1 } + +appnLsStatusTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time when the exception condition occurred. This time can be + used to identify when this event occurred in relation to other + events in the APPN node, for example, the time at which an APPC + session was either terminated or failed to be established. + This latter time is available in the appcHistSessTime object in + the APPC MIB." + + ::= { appnLsStatusEntry 2 } + +appnLsStatusLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the link station + experiencing the condition." + ::= { appnLsStatusEntry 3 } + +appnLsStatusCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of the adjacent node for this link + station. An adjacent node is identified using the format + specified in the SnaControlPointName textual convention. + + The value of this object is determined as follows: + + 1. If the adjacent node's name was received on XID, it + is returned. + + 2. If the adjacent node's name was not received on XID, + but a locally-defined value is available, it is + returned. + + 3. Otherwise a string of length 0 is returned, indicating + that no name is known for the adjacent node." + + ::= { appnLsStatusEntry 4 } + +appnLsStatusPartnerId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The partner's Node Identification, from bytes 2-5 of the XID + received from the partner. If this value is not available, + then the characters '00000000' are returned." + + ::= { appnLsStatusEntry 5 } + +appnLsStatusTgNum OBJECT-TYPE + SYNTAX INTEGER (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number associated with the TG to this link station, with a + range from 0 to 256. A value of 256 indicates that the TG + number was unknown at the time of the failure." + + ::= { appnLsStatusEntry 6 } + +appnLsStatusGeneralSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error sense data associated with the start sequence of + activation of a link up to the beginning of the XID sequence. + + This is the sense data that came from Configuration Services + whenever the link did not activate or when it went inactive." + + ::= { appnLsStatusEntry 7 } + +appnLsStatusRetry OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node will retry the start request to + activate the link." + + ::= { appnLsStatusEntry 8 } + +appnLsStatusEndSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the termination of the link + connection to adjacent node. + + This is the sense data that came from the DLC layer." + + ::= { appnLsStatusEntry 9 } + +appnLsStatusXidLocalSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the rejection of the XID. + + This is the sense data that came from the local node (this + node) when it built the XID Negotiation Error control vector + (cv22) to send to the remote node." + + ::= { appnLsStatusEntry 10 } + +appnLsStatusXidRemoteSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data the adjacent node returned to this node + indicating the reason the XID was rejected. + + This is the sense data that came from the remote node in the + XID Negotiation Error control vector (cv22) it sent to the + local node (this node)." + + ::= { appnLsStatusEntry 11 } + +appnLsStatusXidByteInError OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the actual byte in the XID that caused + the error. The value 65536 indicates that the object has no + meaning. + + For values in the range 0-65535, this object corresponds to + bytes 2-3 of the XID Negotiation (X'22') control vector." + + ::= { appnLsStatusEntry 12 } + +appnLsStatusXidBitInError OBJECT-TYPE + SYNTAX INTEGER (0..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the actual bit in error (0 through 7) + within the errored byte of the XID. The value 8 indicates that + this object has no meaning. + + For values in the range 0-7, this object corresponds to byte 4 + of the XID Negotiation (X'22') control vector." + + ::= { appnLsStatusEntry 13 } + +appnLsStatusDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + ::= { appnLsStatusEntry 14 } + +appnLsStatusLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local address of this link station." + + ::= { appnLsStatusEntry 15 } + +appnLsStatusRemoteAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the remote link station on this link." + + ::= { appnLsStatusEntry 16 } + +-- ********************************************************************* +-- APPN Virtual Routing Node Information +-- This section provides information relating a virtual routing node to +-- an APPN port. +-- ********************************************************************* + + +appnVrnTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnVrnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table relates a virtual routing node to an APPN port." + + ::= { appnVrnInfo 1 } + +appnVrnEntry OBJECT-TYPE + SYNTAX AppnVrnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the virtual routing node name, TG + number, and port name. There will be a matching entry in the + appnLocalTgTable to represent status and characteristics of the + TG representing each virtual routing node definition." + + INDEX + { appnVrnName, appnVrnTgNum, appnVrnPortName } + ::= { appnVrnTable 1 } + +AppnVrnEntry ::= SEQUENCE { + appnVrnName SnaControlPointName, + appnVrnTgNum INTEGER, + appnVrnPortName DisplayString +} + +appnVrnName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the virtual routing node. + This is a fully qualified name, and matches the appnLocalTgDest + name in the appnLocalTgTable." + + ::= { appnVrnEntry 1 } + +appnVrnTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with the transmission group representing + this virtual routing node definition." + + ::= { appnVrnEntry 2 } + +appnVrnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the port this virtual routing node definition is + defined to." + + ::= { appnVrnEntry 3 } + +-- ************** The APPN Topology Group ****************************** + +appnNn OBJECT IDENTIFIER ::= { appnObjects 2 } +appnNnTopo OBJECT IDENTIFIER ::= { appnNn 1 } +appnNnTopology OBJECT IDENTIFIER ::= { appnNn 2 } + +-- This group is used to represent the entire APPN network-node topology +-- including network nodes, virtual routing nodes and all TGs associated +-- with these nodes, including intersubnetwork TGs (ISTGs) and branch TGs. + +-- +-- Network nodes +-- The APPN topology database consists of information about every APPN +-- network node in this network node's topology subnetwork. This +-- information is learned over time as each network node exchanges +-- topology information with the network nodes adjacent to it. The +-- database consists of information about each node, and information +-- about all of the transmission groups used by these nodes. +-- +-- Virtual routing nodes +-- Information about virtual routing nodes (representing connection +-- networks) is treated in the same way as information about network +-- nodes, and is replicated at each network node. The FRSN, node name, +-- and node type are the only meaningful fields for a virtual routing +-- node. The other node objects return unspecified values. Each +-- node that has defined a TG with this virtual routing node as the +-- destination also defines a TG on this virtual routing node. There +-- is a TG record for each node that uses this virtual routing node. +-- +-- The APPN node table represents node information from the APPN topology +-- database, with the FRSN and APPN fully qualified CP name serving as +-- the index. The FRSN is the agent's relative time stamp of an update +-- to the network topology database. After collecting the entire database +-- once, a management application can issue GET NEXT commands starting +-- from the last rows it has retrieved from the appnNnTopologyFRTable and +-- from the appnNnTgTopologyFRTable. When the response to either of these +-- GET NEXT commands returns another row of its respective table, this +-- indicates a change to the agent's topology database. The management +-- application can then retrieve only the updates to the table, using +-- GET NEXT commands starting from the last retrieved node or TG entry. +-- +-- The format of the actual APPN topology database is as follows: +-- +-- Node table (entry for each node in network) +-- TG table (entry for each TG owned by node) +-- +-- Due to SNMP's ASN.1 limitations, we cannot represent the TG table +-- within the node table in this way. We define separate tables for +-- nodes and TGs, adding the node name to each TG entry to provide a +-- means of correlating the TG with its originating node. + +appnNnTopoMaxNodes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of node entries allowed in the APPN topology + database. It is an implementation choice whether to count only + network-node entries, or to count all node entries. If the + number of node entries exceeds this value, APPN will issue an + Alert and the node can no longer participate as a network node. + The value 0 indicates that the local node has no defined limit, + and the number of node entries is bounded only by memory." + + ::= { appnNnTopo 1 } + +appnNnTopoCurNumNodes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of node entries in this node's topology + database. It is an implementation choice whether to count only + network-node entries, or to count all node entries, but an + implementation must make the same choice here that it makes for + the appnNnTopoMaxNodes object. If this value exceeds the + maximum number of nodes allowed (appnNnTopoMaxNodes, if that + field in not 0), APPN Alert CPDB002 is issued." + + ::= { appnNnTopo 2 } + +appnNnTopoNodePurges OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of topology node records purged from this node's + topology database since the node was last reinitialized." + + ::= { appnNnTopo 3 } + +appnNnTopoTgPurges OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "TG entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of topology TG records purged from this node's + topology database since the node was last reinitialized." + + ::= { appnNnTopo 4 } + +appnNnTopoTotalTduWars OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "TDU wars" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of TDU wars detected by this node since its last + initialization." + + ::= { appnNnTopo 5 } + + + +-- APPN network node topology table (using FRSN and name as index) + +-- This table describes every APPN network node and virtual routing node +-- represented in this node's topology database. + +appnNnTopologyFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnNnTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Portion of the APPN topology database that describes all of + the APPN network nodes and virtual routing nodes known to this + node." + + ::= { appnNnTopology 3 } + +appnNnTopologyFREntry OBJECT-TYPE + SYNTAX AppnNnTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FRSN and the fully qualified node name are used to index + this table." + + INDEX + {appnNnNodeFRFrsn, + appnNnNodeFRName} + + ::= { appnNnTopologyFRTable 1 } + +AppnNnTopologyFREntry ::= SEQUENCE { + appnNnNodeFRFrsn Unsigned32, + appnNnNodeFRName SnaControlPointName, + appnNnNodeFREntryTimeLeft AppnTopologyEntryTimeLeft, + appnNnNodeFRType INTEGER, + appnNnNodeFRRsn Unsigned32, + appnNnNodeFRRouteAddResist INTEGER, + appnNnNodeFRCongested TruthValue, + appnNnNodeFRIsrDepleted TruthValue, + appnNnNodeFRQuiescing TruthValue, + appnNnNodeFRGateway TruthValue, + appnNnNodeFRCentralDirectory TruthValue, + appnNnNodeFRIsr TruthValue, + appnNnNodeFRGarbageCollect TruthValue, + + appnNnNodeFRHprSupport INTEGER, + appnNnNodeFRPeriBorderSup TruthValue, + appnNnNodeFRInterchangeSup TruthValue, + appnNnNodeFRExteBorderSup TruthValue, + appnNnNodeFRBranchAwareness TruthValue +} + +appnNnNodeFRFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Flow reduction sequence numbers (FRSNs) are associated with + Topology Database Updates (TDUs) and are unique only within + each APPN network node. A TDU can be associated with multiple + APPN resources. This FRSN indicates the last relative time + this resource was updated at the agent node." + + ::= { appnNnTopologyFREntry 1 } + +appnNnNodeFRName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned network name that is locally defined + at each network node." + + ::= { appnNnTopologyFREntry 2 } + +appnNnNodeFREntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this network node entry." + ::= { appnNnTopologyFREntry 3 } + +appnNnNodeFRType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + virtualRoutingNode(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of APPN node." + + ::= { appnNnTopologyFREntry 4 } + +appnNnNodeFRRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Resource sequence number, which is assigned and controlled by + the network node that owns this resource. An odd number + indicates that information about the resource is inconsistent. + + This object corresponds to the numeric value in cv4580, bytes + 2-5." + + ::= { appnNnTopologyFREntry 5 } + +appnNnNodeFRRouteAddResist OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Route addition resistance. + + This administratively assigned value indicates the relative + desirability of using this node for intermediate session + traffic. The value, which can be any integer 0-255, is used + in route computation. The lower the value, the more + desirable the node is for intermediate routing. + + This object corresponds to cv4580, byte 6." + + ::= { appnNnTopologyFREntry 6 } + +appnNnNodeFRCongested OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is congested. This node is not be + included in route selection by other nodes when this congestion + exists. + + This object corresponds to cv4580, byte 7, bit 0." + + ::= { appnNnTopologyFREntry 7 } + +appnNnNodeFRIsrDepleted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether intermediate session routing resources are + depleted. This node is not included in intermediate route + selection by other nodes when resources are depleted. + + This object corresponds to cv4580, byte 7, bit 1." + + ::= { appnNnTopologyFREntry 8 } + +appnNnNodeFRQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is quiescing. This node is not + included in route selection by other nodes when the node is + quiescing. + + This object corresponds to cv4580, byte 7, bit 5." + + ::= { appnNnTopologyFREntry 9 } + +appnNnNodeFRGateway OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node provide gateway services. + + This object corresponds to cv4580, byte 8, bit 0." + + + ::= { appnNnTopologyFREntry 10 } + +appnNnNodeFRCentralDirectory OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports central directory + services. + + This object corresponds to cv4580, byte 8, bit 1." + + + ::= { appnNnTopologyFREntry 11 } + +appnNnNodeFRIsr OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports intermediate session + routing (ISR). + + This object corresponds to cv4580, byte 8, bit 2." + + ::= { appnNnTopologyFREntry 12 } + +appnNnNodeFRGarbageCollect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node has been marked for garbage + collection (deletion from the topology database) upon the next + garbage collection cycle. + + This object corresponds to cv4580, byte 7, bit 3." + + ::= { appnNnTopologyFREntry 13 } + +appnNnNodeFRHprSupport OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the node's level of support for high-performance + routing (HPR): + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + This object corresponds to cv4580, byte 9, bits 3-4." + + ::= { appnNnTopologyFREntry 14 } + +appnNnNodeFRPeriBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has peripheral border node + support. + + This object corresponds to cv4580, byte 9, bit 0." + + ::= { appnNnTopologyFREntry 15 } + +appnNnNodeFRInterchangeSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has interchange node support. + + This object corresponds to cv4580, byte 9, bit 1." + + ::= { appnNnTopologyFREntry 16 } + +appnNnNodeFRExteBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has extended border node + support. + + This object corresponds to cv4580, byte 9, bit 2." + ::= { appnNnTopologyFREntry 17 } + +appnNnNodeFRBranchAwareness OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports branch awareness. + + This object corresponds to cv4580, byte 8, bit 4." + + ::= { appnNnTopologyFREntry 18 } + + +--APPN transmission group (TG) table + +-- This table describes the TGs associated with all the APPN network +-- nodes known to this node. The originating (owning) node for each +-- TG is repeated here to provide a means of correlating the TGs with +-- the nodes. + +appnNnTgTopologyFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnNnTgTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Portion of the APPN topology database that describes all of + the APPN transmissions groups between nodes in the database." + + ::= { appnNnTopology 4 } + +appnNnTgTopologyFREntry OBJECT-TYPE + SYNTAX AppnNnTgTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by four columns: FRSN, TG owner fully + qualified node name, TG destination fully qualified node name, + and TG number." + + INDEX + {appnNnTgFRFrsn, + appnNnTgFROwner, + appnNnTgFRDest, + appnNnTgFRNum} + + ::= { appnNnTgTopologyFRTable 1 } + +AppnNnTgTopologyFREntry ::= SEQUENCE { + + appnNnTgFRFrsn Unsigned32, + appnNnTgFROwner SnaControlPointName, + appnNnTgFRDest SnaControlPointName, + appnNnTgFRNum INTEGER, + appnNnTgFREntryTimeLeft AppnTopologyEntryTimeLeft, + + appnNnTgFRDestVirtual TruthValue, + appnNnTgFRDlcData AppnTgDlcData, + + appnNnTgFRRsn Unsigned32, + appnNnTgFROperational TruthValue, + appnNnTgFRQuiescing TruthValue, + appnNnTgFRCpCpSession INTEGER, + appnNnTgFREffCap AppnTgEffectiveCapacity, + appnNnTgFRConnCost INTEGER, + appnNnTgFRByteCost INTEGER, + appnNnTgFRSecurity AppnTgSecurity, + appnNnTgFRDelay AppnTgDelay, + appnNnTgFRUsr1 INTEGER, + appnNnTgFRUsr2 INTEGER, + appnNnTgFRUsr3 INTEGER, + appnNnTgFRGarbageCollect TruthValue, + appnNnTgFRSubareaNum Unsigned32, + + appnNnTgFRHprSup TruthValue, + appnNnTgFRDestHprTrans TruthValue, + appnNnTgFRTypeIndicator INTEGER, + appnNnTgFRIntersubnet TruthValue, + appnNnTgFRMltgLinkType TruthValue, + appnNnTgFRBranchTg TruthValue +} + + +appnNnTgFRFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Flow reduction sequence numbers (FRSNs) are associated with + Topology Database Updates (TDUs) and are unique only within + each APPN network node. A TDU can be associated with multiple + APPN resources. This FRSN indicates the last time this + resource was updated at this node." + + ::= { appnNnTgTopologyFREntry 1 } + +appnNnTgFROwner OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the originating node for + this TG. This is the same name specified in the node table." + + ::= { appnNnTgTopologyFREntry 2 } + +appnNnTgFRDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned fully qualified network name for the + destination node for this TG." + + ::= { appnNnTgTopologyFREntry 3 } + +appnNnTgFRNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group. Range is + 0-255." + + ::= { appnNnTgTopologyFREntry 4 } + +appnNnTgFREntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this network node TG entry + if it is not operational or has an odd (inconsistent) RSN." + + ::= { appnNnTgTopologyFREntry 5 } + +appnNnTgFRDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node is a virtual routing + node." + ::= { appnNnTgTopologyFREntry 6 } + +appnNnTgFRDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnNnTgTopologyFREntry 7 } + +appnNnTgFRRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current owning node's resource sequence number for this + resource. An odd number indicates that information about the + resource is inconsistent. + + This object corresponds to the numeric value in cv47, bytes + 2-5" + + ::= { appnNnTgTopologyFREntry 8 } + +appnNnTgFROperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational. + + This object corresponds to cv47, byte 6, bit 0." + + ::= { appnNnTgTopologyFREntry 9 } + +appnNnTgFRQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is quiescing. + + If the TG owner is either an extended border node or a + branch-aware network node (indicated, respectively, by + the appnNnNodeFRExteBorderSup and appnNnNodeFRBranchAwareness + objects in the corresponding appnNnTopologyFREntry), then + this indicator is artificially set to TRUE in the APPN + topology database, to remove the TG from other nodes' + route calculations. A management application can + determine whether the TG is actually quiescing by + examining its appnLocalTgQuiescing object at the TG owner. + + This object corresponds to cv47, byte 6, bit 2." + + ::= { appnNnTgTopologyFREntry 10 } + +appnNnTgFRCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value. + + This object corresponds to cv47, byte 6, bits 3-4." + + ::= { appnNnTgTopologyFREntry 11 } + + +appnNnTgFREffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnNnTgTopologyFREntry 12 } + +appnNnTgFRConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time. + + This is an administratively assigned value representing the + relative cost per unit of time to use this TG. Range is from + 0, which means no cost, to 255, which indicates maximum cost. + + This object corresponds to cv47, byte 13." + + ::= { appnNnTgTopologyFREntry 13 } + +appnNnTgFRByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per byte transmitted. + + This is an administratively assigned value representing the + relative cost of transmitting a byte over this TG. Range is + from 0, which means no cost, to 255, which indicates maximum + cost. + + This object corresponds to cv47, byte 14." + + ::= { appnNnTgTopologyFREntry 14 } + +appnNnTgFRSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG. + + This object corresponds to cv47, byte 16." + + ::= { appnNnTgTopologyFREntry 15 } + +appnNnTgFRDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG. + + This object corresponds to cv47, byte 17." + + ::= { appnNnTgTopologyFREntry 16 } + +appnNnTgFRUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 19." + + ::= { appnNnTgTopologyFREntry 17 } + +appnNnTgFRUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 20." + + ::= { appnNnTgTopologyFREntry 18 } + +appnNnTgFRUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 21." + + ::= { appnNnTgTopologyFREntry 19 } + +appnNnTgFRGarbageCollect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the TG has been marked for garbage + collection (deletion from the topology database) upon the next + garbage collection cycle. + + This object corresponds to cv47, byte 6, bit 1." + + ::= { appnNnTgTopologyFREntry 20 } + +appnNnTgFRSubareaNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subarea number associated with this TG. + + This object corresponds to cv4680, bytes m+2 through m+5." + + ::= { appnNnTgTopologyFREntry 21 } + +appnNnTgFRHprSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether high performance routing (HPR) + is supported over this TG. + + This object corresponds to cv4680, byte m+1, bit 2." + + ::= { appnNnTgTopologyFREntry 22 } + +appnNnTgFRDestHprTrans OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node supports + high performance routing (HPR) transport tower. + + This object corresponds to cv4680, byte m+1, bit 7." + + ::= { appnNnTgTopologyFREntry 23 } + +appnNnTgFRTypeIndicator OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + appnOrBfTg(2), + interchangeTg(3), + virtualRouteTg(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of the TG. + + This object corresponds to cv4680, byte m+1, bits 3-4." + + ::= { appnNnTgTopologyFREntry 24 } + +appnNnTgFRIntersubnet OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is an intersubnet TG, + which defines a border between subnetworks. + + This object corresponds to cv4680, byte m+1, bit 5." + + ::= { appnNnTgTopologyFREntry 25 } + +appnNnTgFRMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active. + + This object corresponds to cv47, byte 6, bit 5." + + ::= { appnNnTgTopologyFREntry 26 } + +appnNnTgFRBranchTg OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is a branch TG + (equivalently, whether the destination of the transmission + group is a branch network node). + + This object corresponds to cv4680, byte m+1, bit 1." + ::= { appnNnTgTopologyFREntry 27 } + + +-- ************** The APPN Local Topology Group ************************ +-- This MIB Group represents the local topology maintained in +-- APPN network nodes, end nodes, and branch network nodes. It consists +-- of two tables: +-- - a table containing information about all of the TGs owned +-- by this node, which is implemented by all node types. +-- - a table containing all of the information known to this node +-- about the TGs owned by its end nodes, which is implemented only +-- by network nodes. +appnLocalTopology OBJECT IDENTIFIER ::= { appnObjects 3 } + +-- APPN Local Transmission Group (TG) table +-- This table describes the TGs associated with this node only. + +appnLocalTgTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLocalTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "TG Table describes all of the TGs owned by this node. The TG + destination can be a virtual node, network node, LEN node, or + end node." + + ::= { appnLocalTopology 1 } + +appnLocalTgEntry OBJECT-TYPE + SYNTAX AppnLocalTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the destination CpName and the TG + number." + + INDEX + {appnLocalTgDest, + appnLocalTgNum} + + ::= { appnLocalTgTable 1 } + +AppnLocalTgEntry ::= SEQUENCE { + + appnLocalTgDest SnaControlPointName, + appnLocalTgNum INTEGER, + appnLocalTgDestVirtual TruthValue, + appnLocalTgDlcData AppnTgDlcData, + appnLocalTgPortName DisplayString, + + appnLocalTgQuiescing TruthValue, + appnLocalTgOperational TruthValue, + appnLocalTgCpCpSession INTEGER, + appnLocalTgEffCap AppnTgEffectiveCapacity, + appnLocalTgConnCost INTEGER, + appnLocalTgByteCost INTEGER, + appnLocalTgSecurity AppnTgSecurity, + appnLocalTgDelay AppnTgDelay, + appnLocalTgUsr1 INTEGER, + appnLocalTgUsr2 INTEGER, + appnLocalTgUsr3 INTEGER, + appnLocalTgHprSup INTEGER, + appnLocalTgIntersubnet TruthValue, + appnLocalTgMltgLinkType TruthValue, + appnLocalTgBranchLinkType INTEGER + } + +appnLocalTgDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the destination node for + this TG. This is the fully qualified name of a network node, + end node, LEN node, or virtual routing node." + + ::= { appnLocalTgEntry 1 } + +appnLocalTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group." + + ::= { appnLocalTgEntry 2 } + +appnLocalTgDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node for this TG is a + virtual routing node." + + ::= { appnLocalTgEntry 3 } + +appnLocalTgDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnLocalTgEntry 4 } + +appnLocalTgPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the local port associated + with this TG. A zero-length string indicates that this value + is unknown." + + ::= { appnLocalTgEntry 5 } + +appnLocalTgQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is quiescing." + + ::= { appnLocalTgEntry 6 } + +appnLocalTgOperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational." + + ::= { appnLocalTgEntry 7 } + +appnLocalTgCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value." + + ::= { appnLocalTgEntry 8 } + +appnLocalTgEffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnLocalTgEntry 9 } + +appnLocalTgConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time: a value representing the relative cost + per unit of time to use the TG. Range is from 0, which means + no cost, to 255." + + ::= { appnLocalTgEntry 10 } + +appnLocalTgByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Relative cost of transmitting a byte over this link. + Range is from 0 (lowest cost) to 255." + + ::= { appnLocalTgEntry 11 } + +appnLocalTgSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG." + + ::= { appnLocalTgEntry 12 } + +appnLocalTgDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG." + ::= { appnLocalTgEntry 13 } + +appnLocalTgUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 14 } + +appnLocalTgUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 15 } + +appnLocalTgUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 16 } + +appnLocalTgHprSup OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the level of high performance routing (HPR) support + over this TG : + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported" + ::= { appnLocalTgEntry 17 } + +appnLocalTgIntersubnet OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is an intersubnet TG, + which defines a border between subnetworks." + + ::= { appnLocalTgEntry 18 } + +appnLocalTgMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active." + + ::= { appnLocalTgEntry 19 } + +appnLocalTgBranchLinkType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + uplink(2), + downlink(3), + downlinkToBranchNetworkNode(4), + none(5), + unknown(255) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Branch link type of this TG: + other(1) = the agent has determined the TG's + branch link type to be a value other + than branch uplink or branch + downlink. This is the value used + for a connection network TG owned by + a branch network node. + uplink(2) = the TG is a branch uplink. + downlink(3) = the TG is a branch downlink to an + end node. + downlinkToBranchNetworkNode(4) = the TG is a branch + downlink to a cascaded branch + network node. + none(5) = the TG is not a branch TG. + unknown(255) = the agent cannot determine the + branch link type of the TG." + + ::= { appnLocalTgEntry 20 } + + +-- APPN Local End Node Transmission Group (TG) table +-- This table describes the TGs associated with all of the end nodes +-- known to this node. + +appnLocalEnTgTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLocalEnTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing all of the TGs owned by the end nodes known + to this node via TG registration. This node does not represent + its own view of the TG on behalf of the partner node in this + table. The TG destination can be a virtual routing node, + network node, or end node." + + ::= { appnLocalTopology 2 } + +appnLocalEnTgEntry OBJECT-TYPE + SYNTAX AppnLocalEnTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table requires multiple indexes to uniquely identify each + TG. They are originating CPname, destination CPname, and the + TG number." + + INDEX + {appnLocalEnTgOrigin, + appnLocalEnTgDest, + appnLocalEnTgNum} + + ::= { appnLocalEnTgTable 1 } + +AppnLocalEnTgEntry ::= SEQUENCE { + appnLocalEnTgOrigin SnaControlPointName, + appnLocalEnTgDest SnaControlPointName, + appnLocalEnTgNum INTEGER, + appnLocalEnTgEntryTimeLeft AppnTopologyEntryTimeLeft, + + appnLocalEnTgDestVirtual TruthValue, + appnLocalEnTgDlcData AppnTgDlcData, + + appnLocalEnTgOperational TruthValue, + appnLocalEnTgCpCpSession INTEGER, + appnLocalEnTgEffCap AppnTgEffectiveCapacity, + appnLocalEnTgConnCost INTEGER, + appnLocalEnTgByteCost INTEGER, + appnLocalEnTgSecurity AppnTgSecurity, + appnLocalEnTgDelay AppnTgDelay, + appnLocalEnTgUsr1 INTEGER, + appnLocalEnTgUsr2 INTEGER, + appnLocalEnTgUsr3 INTEGER, + appnLocalEnTgMltgLinkType TruthValue + } + +appnLocalEnTgOrigin OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the origin node for this + TG. This is a fully qualified network name." + + ::= { appnLocalEnTgEntry 1 } + +appnLocalEnTgDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the destination node for + this TG. This is the fully qualified name of a network node, + end node, LEN node, or virtual routing node." + + ::= { appnLocalEnTgEntry 2 } + +appnLocalEnTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group." + + ::= { appnLocalEnTgEntry 3 } + +appnLocalEnTgEntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this end node TG entry." + + ::= { appnLocalEnTgEntry 4 } + +appnLocalEnTgDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node is a virtual routing + node." + + ::= { appnLocalEnTgEntry 5 } + +appnLocalEnTgDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnLocalEnTgEntry 6 } + +appnLocalEnTgOperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational." + + ::= { appnLocalEnTgEntry 7 } + +appnLocalEnTgCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value." + + ::= { appnLocalEnTgEntry 8 } + +appnLocalEnTgEffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnLocalEnTgEntry 9 } + +appnLocalEnTgConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time: a value representing the relative cost + per unit of time to use the TG. Range is from 0, which means + no cost, to 255." + + ::= { appnLocalEnTgEntry 10 } + +appnLocalEnTgByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Relative cost of transmitting a byte over this link. + Range is from 0, which means no cost, to 255." + + ::= { appnLocalEnTgEntry 11 } + +appnLocalEnTgSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG." + + ::= { appnLocalEnTgEntry 12 } + +appnLocalEnTgDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG." + + ::= { appnLocalEnTgEntry 13 } + +appnLocalEnTgUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 14 } + +appnLocalEnTgUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 15 } + +appnLocalEnTgUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 16 } + +appnLocalEnTgMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active." + + ::= { appnLocalEnTgEntry 17 } + +-- ************** The APPN Directory Group ***************************** +appnDir OBJECT IDENTIFIER ::= { appnObjects 4 } +appnDirPerf OBJECT IDENTIFIER ::= { appnDir 1 } + +-- The APPN Directory Group + +-- The APPN Directory Database + +-- Each APPN network node and branch network node maintains directories +-- containing information on which LUs (applications) are available and +-- where they are located. LUs can be located in an APPN network node, +-- in any of its attached end nodes or branch network nodes, or in any +-- of the nodes below one of its attached branch network nodes. + +appnDirMaxCaches OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of cache entries allowed. This is an + administratively assigned value." + + ::= { appnDirPerf 1 } + +appnDirCurCaches OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of cache entries." + + ::= { appnDirPerf 2 } + +appnDirCurHomeEntries OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of home entries." + + ::= { appnDirPerf 3 } + +appnDirRegEntries OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of registered entries." + + ::= { appnDirPerf 4 } + +appnDirInLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates received since the node was last + reinitialized." + + ::= { appnDirPerf 5 } + +appnDirInBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates received since the node was last + reinitialized." + + ::= { appnDirPerf 6 } + +appnDirOutLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates sent since the node was last + reinitialized." + + ::= { appnDirPerf 7 } + +appnDirOutBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates sent since the node was last + reinitialized." + ::= { appnDirPerf 8 } + +appnDirNotFoundLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates returned with a 'not found' since + the node was last reinitialized." + + ::= { appnDirPerf 9 } + +appnDirNotFoundBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates returned with a 'not found' since + the node was last reinitialized." + + ::= { appnDirPerf 10 } + +appnDirLocateOutstands OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of outstanding Locates, both directed and + broadcast. This value varies. A value of zero indicates + that no Locates are unanswered." + + ::= { appnDirPerf 11 } + + +--APPN Directory table + +-- This table contains information about all known LUs. + +appnDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing information about all known LUs." + ::= { appnDir 2 } + +appnDirEntry OBJECT-TYPE + SYNTAX AppnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the LU name." + + INDEX + {appnDirLuName} + + ::= { appnDirTable 1 } + +AppnDirEntry ::= SEQUENCE { + appnDirLuName DisplayString, + appnDirNnServerName SnaControlPointName, + appnDirLuOwnerName SnaControlPointName, + appnDirLuLocation INTEGER, + appnDirType INTEGER, + appnDirApparentLuOwnerName DisplayString + } +appnDirLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name in the domain of the + serving network node. Entries take one of three forms: + + - Explicit entries do not contain the character '*'. + - Partial wildcard entries have the form 'ccc*', where + 'ccc' represents one to sixteen characters in a + legal SNA LuName. + - A full wildcard entry consists of the single + character '*'" + + ::= { appnDirEntry 1 } + +appnDirNnServerName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified control point (CP) name of the network node + server. For unassociated end node entries, a zero-length + string is returned." + ::= { appnDirEntry 2 } + +appnDirLuOwnerName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified CP name of the node at which the LU is + located. This name is the same as the serving NN name when + the LU is located at a network node. It is also the same as + the fully qualified LU name when this is the control point + LU for this node." + + ::= { appnDirEntry 3 } + +appnDirLuLocation OBJECT-TYPE + SYNTAX INTEGER { + local(1), --Local + domain(2), --Domain + xdomain(3) --Cross Domain + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the location of the LU with respect to the local + node." + + ::= { appnDirEntry 4 } + +appnDirType OBJECT-TYPE + SYNTAX INTEGER { + home(1), --defined as home entry + cache(2), --learned over time + registered(3) --registered by end node + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Directory types are: + 1 - Home + The LU is in the domain of the local node, and the LU + information has been configured at the local node. + + 2 - Cache + The LU has previously been located by a broadcast + search, and the location information has been saved. + 3 - Registered + The LU is at an end node that is in the domain + of the local network node. Registered entries + are registered by the served end node." + + ::= { appnDirEntry 5 } + +appnDirApparentLuOwnerName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified CP name of the node at which the LU appears to + be located. This object and the appnDirLuOwnerName object are + related as follows: + + Implementations that support this object save in their + directory database information about an LU's owning control + point that was communicated in two control vectors: + + - an Associated Resource Entry (X'3C') CV with resource + type X'00F4' (ENCP) + + - a Real Owning Control Point (X'4A') CV. + + The X'4A' CV is created by a branch network node to preserve + the name of the real owning control point for an LU below the + branch network node, before it overwrites this name with its + own name in the X'3C' CV. The X'4A' CV is not present for LUs + that are not below branch network nodes. + + If the information a node has about an LU's owning CP came only + in a X'3C' CV, then the name from the X'3C' is returned in the + appnDirLuOwnerName object, and a null string is returned in + this object. + + If the information a node has about an LU's owning CP came in + both X'3C' and X'4A' CVs, then the name from the X'4A' is + returned in the appnDirLuOwnerName object, and the name from + the X'3C' (which will be the branch network node's name) is + returned in this object." + + ::= { appnDirEntry 6 } + + +-- ************** The APPN Class of Service Group ********************** + +appnCos OBJECT IDENTIFIER ::= { appnObjects 5 } + +-- The APPN Class of Service (COS) + +-- Class of Service is a means of expressing the quality of routes and +-- the transmission priority of traffic that flows on these routes. +-- The quality of routes is specified by two tables, a COS weight table +-- for TGs and a COS weight table for nodes. Values in these COS tables +-- are administratively assigned at each APPN node, with seven default +-- tables specified by the APPN architecture. +-- ********************************************************************* + +appnCosModeTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table representing all of the defined mode names for this + node. The table contains the matching COS name for each + mode name." + + ::= { appnCos 1 } + +appnCosModeEntry OBJECT-TYPE + SYNTAX AppnCosModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the mode name." + + INDEX + {appnCosModeName} + + ::= { appnCosModeTable 1 } + +AppnCosModeEntry ::= SEQUENCE { + appnCosModeName SnaModeName, + appnCosModeCosName SnaClassOfServiceName + } + +appnCosModeName OBJECT-TYPE + SYNTAX SnaModeName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this mode." + + ::= { appnCosModeEntry 1 } + +appnCosModeCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosModeEntry 2 } + + +-- ********************************************************************* +appnCosNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table mapping all of the defined class-of-service names for + this node to their network transmission priorities." + + ::= { appnCos 2 } + +appnCosNameEntry OBJECT-TYPE + SYNTAX AppnCosNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COS name is the index to this table." + + INDEX + {appnCosName} + + ::= { appnCosNameTable 1 } + +AppnCosNameEntry ::= SEQUENCE { + appnCosName SnaClassOfServiceName, + appnCosTransPriority INTEGER + } + + +appnCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosNameEntry 1 } + +appnCosTransPriority OBJECT-TYPE + SYNTAX INTEGER { + low(1), --X'01' + medium(2), --X'02' + high(3), --X'03' + network(4) --X'04' + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transmission priority for this class of service: + + low(1) - (X'01'): low priority + medium(2) - (X'02'): medium priority + high(3) - (X'03'): high priority + network(4) - (X'04'): network priority" + + ::= { appnCosNameEntry 2 } + + +-- ********************************************************************* +appnCosNodeRowTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosNodeRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all node-row information for all classes + of service defined in this node." + + ::= { appnCos 3 } + +appnCosNodeRowEntry OBJECT-TYPE + SYNTAX AppnCosNodeRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A node entry for a given class of service." + + INDEX + {appnCosNodeRowName, + appnCosNodeRowIndex} + + ::= { appnCosNodeRowTable 1 } + +AppnCosNodeRowEntry ::= SEQUENCE { + appnCosNodeRowName SnaClassOfServiceName, + appnCosNodeRowIndex INTEGER, + appnCosNodeRowWgt DisplayString, + appnCosNodeRowResistMin INTEGER, + appnCosNodeRowResistMax INTEGER, + appnCosNodeRowMinCongestAllow INTEGER, + appnCosNodeRowMaxCongestAllow INTEGER + } + +appnCosNodeRowName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosNodeRowEntry 1 } + +appnCosNodeRowIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Subindex under appnCosNodeRowName, corresponding to a row in + the node table for the class of service identified in + appnCosNodeRowName. + + For each class of service, this subindex orders rows in the + appnCosNodeRowTable in the same order as that used for route + calculation in the APPN node." + + ::= { appnCosNodeRowEntry 2 } + +appnCosNodeRowWgt OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Weight to be associated with the nodes that fit the criteria + specified by this node row. + + This value can either be a character representation of an + integer, or a formula for calculating the weight." + + ::= { appnCosNodeRowEntry 3 } + +appnCosNodeRowResistMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum route addition resistance value for this node. + Range of values is 0-255. The lower the value, the more + desirable the node is for intermediate routing." + + ::= { appnCosNodeRowEntry 4 } + +appnCosNodeRowResistMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum route addition resistance value for this node. + Range of values is 0-255. The lower the value, the more + desirable the node is for intermediate routing." + + ::= { appnCosNodeRowEntry 5 } + +appnCosNodeRowMinCongestAllow OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether low congestion will be tolerated. This + object and appnCosNodeRowMaxCongestAllow together delineate a + range of acceptable congestion states for a node. For the + ordered pair (minimum congestion allowed, maximum congestion + allowed), the values are interpreted as follows: + + - (0,0): only low congestion is acceptable + - (0,1): either low or high congestion is acceptable + - (1,1): only high congestion is acceptable. + + Note that the combination (1,0) is not defined, since it + would identify a range whose lower bound was high congestion + and whose upper bound was low congestion." + + + ::= { appnCosNodeRowEntry 6 } + +appnCosNodeRowMaxCongestAllow OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether low congestion will be tolerated. This + object and appnCosNodeRowMinCongestAllow together delineate a + range of acceptable congestion states for a node. For the + ordered pair (minimum congestion allowed, maximum congestion + allowed), the values are interpreted as follows: + - (0,0): only low congestion is acceptable + - (0,1): either low or high congestion is acceptable + - (1,1): only high congestion is acceptable. + + Note that the combination (1,0) is not defined, since it + would identify a range whose lower bound was high congestion + and whose upper bound was low congestion." + + ::= { appnCosNodeRowEntry 7 } + + +-- ********************************************************************* +appnCosTgRowTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosTgRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing all the TG-row information for all classes of + service defined in this node." + + ::= { appnCos 4 } + +appnCosTgRowEntry OBJECT-TYPE + SYNTAX AppnCosTgRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TG entry for a given class of service." + + INDEX + {appnCosTgRowName, + appnCosTgRowIndex} + + ::= { appnCosTgRowTable 1 } + +AppnCosTgRowEntry ::= SEQUENCE { + appnCosTgRowName SnaClassOfServiceName, + appnCosTgRowIndex INTEGER, + appnCosTgRowWgt DisplayString, + appnCosTgRowEffCapMin AppnTgEffectiveCapacity, + appnCosTgRowEffCapMax AppnTgEffectiveCapacity, + appnCosTgRowConnCostMin INTEGER, + appnCosTgRowConnCostMax INTEGER, + appnCosTgRowByteCostMin INTEGER, + appnCosTgRowByteCostMax INTEGER, + appnCosTgRowSecurityMin AppnTgSecurity, + appnCosTgRowSecurityMax AppnTgSecurity, + appnCosTgRowDelayMin AppnTgDelay, + appnCosTgRowDelayMax AppnTgDelay, + appnCosTgRowUsr1Min INTEGER, + appnCosTgRowUsr1Max INTEGER, + appnCosTgRowUsr2Min INTEGER, + appnCosTgRowUsr2Max INTEGER, + appnCosTgRowUsr3Min INTEGER, + appnCosTgRowUsr3Max INTEGER + } + +appnCosTgRowName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosTgRowEntry 1 } + +appnCosTgRowIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Subindex under appnCosTgRowName, corresponding to a row in the + TG table for the class of service identified in + appnCosTgRowName. + + For each class of service, this subindex orders rows in the + appnCosTgRowTable in the same order as that used for route + calculation in the APPN node." + + ::= { appnCosTgRowEntry 2 } + +appnCosTgRowWgt OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Weight to be associated with the TGs that fit the criteria + specified by this TG row. + + This value can either be a character representation of an + integer, or a formula for calculating the weight." + + ::= { appnCosTgRowEntry 3 } + +appnCosTgRowEffCapMin OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable capacity for this class of service." + + ::= { appnCosTgRowEntry 4 } + +appnCosTgRowEffCapMax OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable capacity for this class of service." + + ::= { appnCosTgRowEntry 5 } + +appnCosTgRowConnCostMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable cost per connect time for this class of + service. + + Cost per connect time: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 6 } + +appnCosTgRowConnCostMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable cost per connect time for this class of + service. + + Cost per connect time: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 7 } + +appnCosTgRowByteCostMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable cost per byte transmitted for this class + of service. + + Cost per byte transmitted: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 8 } + +appnCosTgRowByteCostMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable cost per byte transmitted for this class + of service. + + Cost per byte transmitted: a value representing the relative + cost of transmitting a byte over this TG. Range is from 0, + which means no cost, to 255." + + ::= { appnCosTgRowEntry 9 } + +appnCosTgRowSecurityMin OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable security for this class of service." + + ::= { appnCosTgRowEntry 10 } + +appnCosTgRowSecurityMax OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable security for this class of service." + + ::= { appnCosTgRowEntry 11 } + +appnCosTgRowDelayMin OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable propagation delay for this class of + service." + + ::= { appnCosTgRowEntry 12 } + +appnCosTgRowDelayMax OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable propagation delay for this class of + service." + + ::= { appnCosTgRowEntry 13 } + +appnCosTgRowUsr1Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 14 } + +appnCosTgRowUsr1Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 15 } + +appnCosTgRowUsr2Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 16 } + +appnCosTgRowUsr2Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 17 } + +appnCosTgRowUsr3Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 18 } + +appnCosTgRowUsr3Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 19 } + +-- ********************************************************************* +-- Intermediate Session Information +-- ********************************************************************* +appnSessIntermediate OBJECT IDENTIFIER ::= { appnObjects 6 } + +-- ********************************************************************* +-- Intermediate Session Information Global Objects +-- ********************************************************************* +-- The following simple objects allow the collection of intermediate +-- session Information to be started and stopped. +-- ********************************************************************* +appnIsInGlobal OBJECT IDENTIFIER ::= { appnSessIntermediate 1 } + +appnIsInGlobeCtrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2), + ready(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can deactivate or + activate capture of intermediate-session counts and names, by + setting the value to notActive(1) or active(2), respectively. + The value ready(3) is returned on GET operations until a SET + has been processed; after that the value received on the most + recent SET is returned. + + The counts referred to here are the eight objects in the + AppnIsInTable, from appnIsInP2SFmdPius through + appnIsInS2PNonFmdBytes. The names are the four objects in this + table, from appnIsInPriLuName through appnIsInCosName. + + Setting this object to the following values has the following + effects: + + notActive(1) stop collecting count data. If a count + is queried, it returns the value 0. + Collection of names may, but need not be, + disabled. + active(2) start collecting count data. If it is + supported, collection of names is enabled." + + ::= { appnIsInGlobal 1 } + +appnIsInGlobeCtrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the intermediate session counts + are active. The counts referred to here are the eight + objects in the AppnIsInTable, from appnIsInP2SFmdPius through + appnIsInS2PNonFmdBytes. These eight counts are of type + Unsigned32 rather than Counter32 because when this object + enters the notActive state, either because a Management + Station has set appnInInGlobeCtrAdminStatus to notActive or + because of a locally-initiated transition, the counts are + all reset to 0. + + The values for this object are: + + notActive(1): collection of counts is not active; if it + is queried, a count returns the value 0. + active(2): collection of counts is active." + ::= { appnIsInGlobal 2 } + +appnIsInGlobeCtrStatusTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the appnIsInGlobeCtrOperStatus object last + changed, measured in hundredths of a second. This time can be + used to identify when this change occurred in relation to other + events in the agent, such as the last time the APPN node was + reinitialized." + + ::= { appnIsInGlobal 3 } + +appnIsInGlobeRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the current route selection control vector (RSCV) + collection option in effect, and allows a Management Station to + change the option. + + The values for this object are: + + notActive(1): collection of route selection control vectors + is not active. + active(2): collection of route selection control vectors + is active." + + ::= { appnIsInGlobal 4 } + +appnIsInGlobeRscvTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the appnIsInGlobeRscv object last changed, + measured in hundredths of a second. This time can be used to + identify when this change occurred in relation to other events + in the agent, such as the last time the APPN node was + reinitialized." + ::= { appnIsInGlobal 5 } + + +appnIsInGlobeActSess OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active intermediate sessions." + + ::= { appnIsInGlobal 6 } + +appnIsInGlobeHprBfActSess OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active HPR intermediate sessions." + + ::= { appnIsInGlobal 7 } + +-- ********************************************************************* +-- Intermediate Session Information Table +-- ********************************************************************* +-- This table contains information on intermediate sessions +-- which are currently active. +-- ********************************************************************* +appnIsInTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Intermediate Session Information Table" + + ::= { appnSessIntermediate 2 } + +appnIsInEntry OBJECT-TYPE + SYNTAX AppnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of Intermediate Session Information Table." + + INDEX + { appnIsInFqCpName, + appnIsInPcid } + ::= { appnIsInTable 1 } + +AppnIsInEntry ::= SEQUENCE { + appnIsInFqCpName SnaControlPointName, + appnIsInPcid OCTET STRING, + + appnIsInSessState INTEGER, + appnIsInPriLuName DisplayString, + appnIsInSecLuName DisplayString, + appnIsInModeName SnaModeName, + appnIsInCosName SnaClassOfServiceName, + appnIsInTransPriority INTEGER, + + appnIsInSessType INTEGER, + appnIsInSessUpTime TimeTicks, + appnIsInCtrUpTime TimeTicks, + + appnIsInP2SFmdPius Unsigned32, + appnIsInS2PFmdPius Unsigned32, + appnIsInP2SNonFmdPius Unsigned32, + appnIsInS2PNonFmdPius Unsigned32, + appnIsInP2SFmdBytes Unsigned32, + appnIsInS2PFmdBytes Unsigned32, + appnIsInP2SNonFmdBytes Unsigned32, + appnIsInS2PNonFmdBytes Unsigned32, + + appnIsInPsAdjCpName SnaControlPointName, + appnIsInPsAdjTgNum INTEGER, + appnIsInPsSendMaxBtuSize INTEGER, + appnIsInPsSendPacingType INTEGER, + appnIsInPsSendRpc Gauge32, + appnIsInPsSendNxWndwSize Gauge32, + appnIsInPsRecvPacingType INTEGER, + appnIsInPsRecvRpc Gauge32, + appnIsInPsRecvNxWndwSize Gauge32, + appnIsInSsAdjCpName SnaControlPointName, + appnIsInSsAdjTgNum INTEGER, + appnIsInSsSendMaxBtuSize INTEGER, + appnIsInSsSendPacingType INTEGER, + appnIsInSsSendRpc Gauge32, + appnIsInSsSendNxWndwSize Gauge32, + appnIsInSsRecvPacingType INTEGER, + appnIsInSsRecvRpc Gauge32, + appnIsInSsRecvNxWndwSize Gauge32, + + appnIsInRouteInfo OCTET STRING, + + appnIsInRtpNceId OCTET STRING, + appnIsInRtpTcid OCTET STRING + } + +appnIsInFqCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at which + the session and PCID originated. For APPN and LEN nodes, this + is either CP name of the APPN node at which the origin LU is + located or the CP name of the NN serving the LEN node at which + the origin LU is located. For resources served by a dependent + LU requester (DLUR), it is the name of the owning system + services control point (SSCP)." + + ::= { appnIsInEntry 1 } + +appnIsInPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. It + is an 8-byte value assigned by the primary LU." + + ::= { appnIsInEntry 2 } + +appnIsInSessState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + pendactive(2), + active(3), + pendinact(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the state of the session: + + inactive(1) - session is inactive + pendactive(2) - session is pending active + active(3) - session is active + pendinact(4) - session is pending inactive + + Active sessions can be deactivated by setting this object + to inactive(1)." + ::= { appnIsInEntry 3 } + +appnIsInPriLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary LU name of the session. A zero-length + string indicates that this name is not available." + + ::= { appnIsInEntry 4 } + +appnIsInSecLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary LU name of the session. A zero-length + string indicates that this name is not available." + + ::= { appnIsInEntry 5 } + +appnIsInModeName OBJECT-TYPE + SYNTAX SnaModeName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name used for this session." + + ::= { appnIsInEntry 6 } + +appnIsInCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used for this session." + + ::= { appnIsInEntry 7 } + +appnIsInTransPriority OBJECT-TYPE + SYNTAX INTEGER { + low(1), --X'01' + medium(2), --X'02' + high(3), --X'03' + network(4) --X'04' + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transmission priority for this class of service. Values are: + + low(1) - (X'01'): low priority + medium(2) - (X'02'): medium priority + high(3) - (X'03'): high priority + network(4) - (X'04'): network priority" + + ::= { appnIsInEntry 8 } + +appnIsInSessType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + lu62(2), + lu0thru3(3), + lu62dlur(4), + lu0thru3dlur(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of intermediate session. Defined values are + + unknown The session type is not known. + + lu62 A session between LUs of type 6.2 + (as indicated by the LU type in Bind) + + lu0thru3 A session between LUs of type 0, 1, 2, or 3 + (as indicated by the LU type in Bind) + + lu62dlur A session between LUs of type 6.2 + (as indicated by the LU type in Bind). + One of the LUs is a dependent LU supported + by the dependent LU requester (DLUR) + function at this node. + + lu0thru3dlur A session between LUs of type 0, 1, 2, or 3 + (as indicated by the LU type in Bind) + One of the LUs is a dependent LU supported + by the dependent LU requester (DLUR) + function at this node." + + ::= { appnIsInEntry 9 } + +appnIsInSessUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length of time the session has been active, measured in + hundredths of a second." + + ::= { appnIsInEntry 10 } + +appnIsInCtrUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length of time the session counters have been active, measured + in hundredths of a second." + + ::= { appnIsInEntry 11 } + +appnIsInP2SFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of function management data (FMD) path information + units (PIUs) sent from the Primary LU to the Secondary LU since + the counts were last activated." + + ::= { appnIsInEntry 12 } + +appnIsInS2PFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD PIUs sent from the Secondary LU to the Primary + LU since the counts were last activated." + + ::= { appnIsInEntry 13 } + +appnIsInP2SNonFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD PIUs sent from the Primary LU to the + Secondary LU since the counts were last activated." + + ::= { appnIsInEntry 14 } + +appnIsInS2PNonFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD PIUs sent from the Secondary LU to the + Primary LU since the counts were last activated." + + ::= { appnIsInEntry 15 } + +appnIsInP2SFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD bytes sent from the Primary LU to the Secondary + LU since the counts were last activated." + + ::= { appnIsInEntry 16 } + +appnIsInS2PFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD bytes sent from the Secondary LU to the Primary + LU since the counts were last activated." + + ::= { appnIsInEntry 17 } + +appnIsInP2SNonFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD bytes sent from the Primary LU to the + Secondary LU since the counts were last activated." + ::= { appnIsInEntry 18 } + +appnIsInS2PNonFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD bytes sent from the Secondary LU to the + Primary LU since the counts were last activated." + + ::= { appnIsInEntry 19 } + +appnIsInPsAdjCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage adjacent CP name of this session. If the + session stage traverses an RTP connection, the CP name of the + remote RTP endpoint is returned." + + ::= { appnIsInEntry 20 } + +appnIsInPsAdjTgNum OBJECT-TYPE + SYNTAX INTEGER (0..300) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage adjacent transmission group (TG) number + associated with this session. If the session stage traverses + an RTP connection, the value 256 is returned. + + Values between 257 and 300 are available for other possible + TG 'stand-ins' that may be added to APPN in the future." + + ::= { appnIsInEntry 21 } + +appnIsInPsSendMaxBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage maximum basic transmission unit (BTU) size + for sending data." + + ::= { appnIsInEntry 22 } + +appnIsInPsSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage type of pacing being used for sending data." + + ::= { appnIsInEntry 23 } + +appnIsInPsSendRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage send residual pace count. This represents + the primary stage number of message units (MUs) that can still + be sent in the current session window." + + ::= { appnIsInEntry 24 } + +appnIsInPsSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage size of the next window which will be used + to send data." + + ::= { appnIsInEntry 25 } + +appnIsInPsRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage type of pacing being used for receiving + data." + + ::= { appnIsInEntry 26 } + +appnIsInPsRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage receive residual pace count. This + represents the primary stage number of message units (MUs) that + can still be received in the current session window." + + ::= { appnIsInEntry 27 } + +appnIsInPsRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage size of the next window which will be used + to receive data." + + ::= { appnIsInEntry 28 } + +appnIsInSsAdjCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage adjacent CP name of this session. If the + session stage traverses an RTP connection, the CP name of the + remote RTP endpoint is returned." + + ::= { appnIsInEntry 29 } + +appnIsInSsAdjTgNum OBJECT-TYPE + SYNTAX INTEGER (0..300) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage adjacent transmission group (TG) number + associated with this session. If the session stage traverses + an RTP connection, the value 256 is returned. + + Values between 257 and 300 are available for other possible + TG 'stand-ins' that may be added to APPN in the future." + + ::= { appnIsInEntry 30 } + +appnIsInSsSendMaxBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage maximum basic transmission unit (BTU) size + for sending data." + + ::= { appnIsInEntry 31 } + +appnIsInSsSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage type of pacing being used for sending + data." + + ::= { appnIsInEntry 32 } + +appnIsInSsSendRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage send residual pace count. This represents + the secondary stage number of message units (MUs) that can + still be sent in the current session window." + + ::= { appnIsInEntry 33 } + +appnIsInSsSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage size of the next window which will be used + to send data." + + ::= { appnIsInEntry 34 } + +appnIsInSsRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage type of pacing being used for receiving + data." + + ::= { appnIsInEntry 35 } + +appnIsInSsRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage receive residual pace count. This + represents the secondary stage number of message units (MUs) + that can still be received in the current session window." + + ::= { appnIsInEntry 36 } + +appnIsInSsRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage size of the next window which will be used + to receive data." + + ::= { appnIsInEntry 37 } + +appnIsInRouteInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The route selection control vector (RSCV X'2B') used for this + session. It is present for APPN nodes; but is not present for + LEN nodes. The format of this vector is described in SNA + Formats. If no RSCV is available, a zero-length string is + returned." + + ::= { appnIsInEntry 38 } + +appnIsInRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The HPR local Network Connection Endpoint of the session." + + ::= { appnIsInEntry 39 } + +appnIsInRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP connection local TCID of the session." + + ::= { appnIsInEntry 40 } + +-- ********************************************************************* +-- Intermediate Session RTP Table +-- ********************************************************************* +-- This table contains information on intermediate sessions that are +-- being transported on Rapid Transport Protocol (RTP) connections by +-- High Performance Routing (HPR). +-- ********************************************************************* +appnIsRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnIsRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating how many ISR sessions are transported by + each RTP connection." + + ::= { appnSessIntermediate 3 } + +appnIsRtpEntry OBJECT-TYPE + SYNTAX AppnIsRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of Intermediate Session RTP Table." + + INDEX + { appnIsRtpNceId, + appnIsRtpTcid } + + ::= { appnIsRtpTable 1 } + +AppnIsRtpEntry ::= SEQUENCE { + appnIsRtpNceId OCTET STRING, + appnIsRtpTcid OCTET STRING, + appnIsRtpSessions Gauge32 + } + +appnIsRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint of the RTP connection." + + ::= { appnIsRtpEntry 1 } + +appnIsRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of the RTP connection." + + ::= { appnIsRtpEntry 2 } + +appnIsRtpSessions OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intermediate sessions using this RTP + connection." + + ::= { appnIsRtpEntry 3 } + + +-- ********************************************************************* + appnTraps OBJECT IDENTIFIER ::= { appnMIB 2 } +-- ********************************************************************* + +alertTrap NOTIFICATION-TYPE + OBJECTS { alertIdNumber, affectedObject } + STATUS current + DESCRIPTION + "This trap carries a 32-bit SNA Management Services (SNA/MS) + Alert ID Number, as specified in SNA/MS Formats." + + ::= { appnTraps 1 } + +alertIdNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A 32-bit SNA Management Services (SNA/MS) Alert ID Number, as + specified in SNA/MS Formats." + + ::= { appnTraps 2 } + +affectedObject OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The MIB object associated with the Alert condition, if there + is an object associated with it. If no associated object can + be identified, the value 0.0 is passed in the trap." + + ::= { appnTraps 3 } + +-- ********************************************************************* +-- Conformance information +-- ********************************************************************* + +appnConformance OBJECT IDENTIFIER ::= { appnMIB 3 } + +appnCompliances OBJECT IDENTIFIER ::= { appnConformance 1 } +appnGroups OBJECT IDENTIFIER ::= { appnConformance 2 } + +-- Compliance statements + +-- appnCompliance MODULE-COMPLIANCE (deprecated: moved to end of module) + +appnCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the APPN MIB. + + In the descriptions for the conditionally mandatory groups that + follow, the branch network node is treated as a third node type, + parallel to network node and end node. This is not how branch + network nodes are treated in the base APPN architecture, but it + increases clarity here to do it." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appnGeneralConfGroup2, + appnPortConfGroup, + appnLinkConfGroup2, + appnLocalTgConfGroup2, + appnDirTableConfGroup2 + } + +-- Conditionally mandatory groups + GROUP appnNnUniqueConfGroup + DESCRIPTION + "The appnNnUniqueConfGroup is mandatory for + network nodes." + + GROUP appnEnUniqueConfGroup + DESCRIPTION + "The appnEnUniqueConfGroup is mandatory for end + nodes." + + GROUP appnVrnConfGroup + DESCRIPTION + "The appnVrnConfGroup is mandatory for network + nodes, end nodes, and branch network nodes that + implement virtual routing node support." + + GROUP appnNnTopoConfGroup2 + DESCRIPTION + "The appnNnTopoConfGroup2 is mandatory for + network nodes." + + GROUP appnLocalEnTopoConfGroup2 + DESCRIPTION + "The appnLocalEnTopoConfGroup2 is mandatory for + network nodes." + + GROUP appnLocalDirPerfConfGroup + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory for + APPN network nodes, end nodes, and branch network + nodes." + + GROUP appnCosConfGroup + DESCRIPTION + "The appnCosConfGroup is mandatory for APPN + network nodes, end nodes, and branch network + nodes." + + GROUP appnIntSessConfGroup + DESCRIPTION + "The appnIntSessConfGroup is mandatory for + network nodes and branch network nodes." + + GROUP appnHprBaseConfGroup + DESCRIPTION + "The appnHprBaseConfGroup is mandatory for nodes + that implement the HPR base (APPN option set 1400)." + GROUP appnHprRtpConfGroup + DESCRIPTION + "The appnHprRtpConfGroup is mandatory for nodes + that implement the HPR RTP tower (APPN option set + 1401)." + + GROUP appnHprCtrlFlowsRtpConfGroup + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory for + nodes that implement the HPR Control Flows over + RTP tower (APPN option set 1402)." + + GROUP appnHprBfConfGroup + DESCRIPTION + "The appnHprBfConfGroup is mandatory for nodes + that implement the APPN/HPR boundary function." + + GROUP appnTrapConfGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnTrapNotifGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnBrNnConfGroup + DESCRIPTION + "The appnBrNnConfGroup is mandatory for branch + network nodes." + + ::= { appnCompliances 3 } + -- { appnCompliances 2 } is used by the APPN-TRAP-MIB + +-- Units of conformance +appnGeneralConfGroup2 OBJECT-GROUP + OBJECTS { + appnNodeCpName, + appnNodeId, + appnNodeType, + appnNodeUpTime, + appnNodeParallelTg, + appnNodeAdaptiveBindPacing, + appnNodeHprSupport, + appnNodeCounterDisconTime, + appnNodeLsCounterType, + appnNodeBrNn + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN general information and capabilities." + ::= { appnGroups 26 } + -- { appnGroups 21 - 25 } are used by the APPN-TRAP-MIB + +appnPortConfGroup OBJECT-GROUP + OBJECTS { + appnPortCommand, + appnPortOperState, + appnPortDlcType, + appnPortPortType, + appnPortSIMRIM, + appnPortLsRole, + appnPortNegotLs, + appnPortDynamicLinkSupport, + appnPortMaxRcvBtuSize, + appnPortMaxIframeWindow, + appnPortDefLsGoodXids, + appnPortDefLsBadXids, + appnPortDynLsGoodXids, + appnPortDynLsBadXids, + appnPortSpecific, + appnPortDlcLocalAddr, + appnPortCounterDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN port information." + ::= { appnGroups 2 } + +appnLinkConfGroup2 OBJECT-GROUP + OBJECTS { + appnLsCommand, + appnLsOperState, + appnLsPortName, + appnLsDlcType, + appnLsDynamic, + appnLsAdjCpName, + appnLsAdjNodeType, + appnLsTgNum, + appnLsLimResource, + appnLsActOnDemand, + appnLsMigration, + appnLsPartnerNodeId, + appnLsCpCpSessionSupport, + appnLsMaxSendBtuSize, + appnLsInXidBytes, + appnLsInMsgBytes, + appnLsInXidFrames, + appnLsInMsgFrames, + appnLsOutXidBytes, + appnLsOutMsgBytes, + appnLsOutXidFrames, + appnLsOutMsgFrames, + appnLsEchoRsps, + appnLsCurrentDelay, + appnLsMaxDelay, + appnLsMinDelay, + appnLsMaxDelayTime, + appnLsGoodXids, + appnLsBadXids, + appnLsSpecific, + appnLsActiveTime, + appnLsCurrentStateTime, + appnLsHprSup, + appnLsLocalAddr, + appnLsRemoteAddr, + appnLsRemoteLsName, + appnLsStatusTime, + appnLsStatusLsName, + appnLsStatusCpName, + appnLsStatusPartnerId, + appnLsStatusTgNum, + appnLsStatusGeneralSense, + appnLsStatusRetry, + appnLsStatusEndSense, + appnLsStatusXidLocalSense, + appnLsStatusXidRemoteSense, + appnLsStatusXidByteInError, + appnLsStatusXidBitInError, + appnLsStatusDlcType, + appnLsStatusLocalAddr, + appnLsStatusRemoteAddr, + appnLsCounterDisconTime, + appnLsMltgMember + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN link information." + ::= { appnGroups 27 } + +appnLocalTgConfGroup2 OBJECT-GROUP + OBJECTS { + appnLocalTgDestVirtual, + appnLocalTgDlcData, + appnLocalTgPortName, + appnLocalTgQuiescing, + appnLocalTgOperational, + appnLocalTgCpCpSession, + appnLocalTgEffCap, + appnLocalTgConnCost, + appnLocalTgByteCost, + appnLocalTgSecurity, + appnLocalTgDelay, + appnLocalTgUsr1, + appnLocalTgUsr2, + appnLocalTgUsr3, + appnLocalTgHprSup, + appnLocalTgIntersubnet, + appnLocalTgMltgLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN local TG information." + ::= { appnGroups 28 } + +appnDirTableConfGroup2 OBJECT-GROUP + OBJECTS { + appnDirNnServerName, + appnDirLuOwnerName, + appnDirLuLocation, + appnDirType, + appnDirApparentLuOwnerName + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of the + APPN directory database." + ::= { appnGroups 29 } + +appnNnUniqueConfGroup OBJECT-GROUP + OBJECTS { + appnNodeNnCentralDirectory, + appnNodeNnTreeCache, + appnNodeNnRouteAddResist, + appnNodeNnIsr, + appnNodeNnFrsn, + appnNodeNnPeriBorderSup, + appnNodeNnInterchangeSup, + appnNodeNnExteBorderSup, + appnNodeNnSafeStoreFreq, + appnNodeNnRsn, + appnNodeNnCongested, + appnNodeNnIsrDepleted, + appnNodeNnQuiescing, + appnNodeNnGateway + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation unique + to APPN network nodes." + ::= { appnGroups 6 } + +appnEnUniqueConfGroup OBJECT-GROUP + OBJECTS { + appnNodeEnModeCosMap, + appnNodeEnNnServer, + appnNodeEnLuSearch + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for + APPN end nodes. Some of these objects also appear in the + instrumentation for a branch network node." + ::= { appnGroups 7 } + +appnVrnConfGroup OBJECT-GROUP + OBJECTS { + appnVrnPortName + } + STATUS current + DESCRIPTION + "An object providing the instrumentation for virtual + routing node support in an APPN node." + ::= { appnGroups 8 } + +appnNnTopoConfGroup2 OBJECT-GROUP + OBJECTS { + appnNnTopoMaxNodes, + appnNnTopoCurNumNodes, + appnNnTopoNodePurges, + appnNnTopoTgPurges, + appnNnTopoTotalTduWars, + appnNnNodeFREntryTimeLeft, + appnNnNodeFRType, + appnNnNodeFRRsn, + appnNnNodeFRRouteAddResist, + appnNnNodeFRCongested, + appnNnNodeFRIsrDepleted, + appnNnNodeFRQuiescing, + appnNnNodeFRGateway, + appnNnNodeFRCentralDirectory, + appnNnNodeFRIsr, + appnNnNodeFRGarbageCollect, + appnNnNodeFRHprSupport, + appnNnNodeFRPeriBorderSup, + appnNnNodeFRInterchangeSup, + appnNnNodeFRExteBorderSup, + appnNnNodeFRBranchAwareness, + appnNnTgFREntryTimeLeft, + appnNnTgFRDestVirtual, + appnNnTgFRDlcData, + appnNnTgFRRsn, + appnNnTgFROperational, + appnNnTgFRQuiescing, + appnNnTgFRCpCpSession, + appnNnTgFREffCap, + appnNnTgFRConnCost, + appnNnTgFRByteCost, + appnNnTgFRSecurity, + appnNnTgFRDelay, + appnNnTgFRUsr1, + appnNnTgFRUsr2, + appnNnTgFRUsr3, + appnNnTgFRGarbageCollect, + appnNnTgFRSubareaNum, + appnNnTgFRHprSup, + appnNnTgFRDestHprTrans, + appnNnTgFRTypeIndicator, + appnNnTgFRIntersubnet, + appnNnTgFRMltgLinkType, + appnNnTgFRBranchTg + } + STATUS current + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for network + nodes." + ::= { appnGroups 30 } + +appnLocalEnTopoConfGroup2 OBJECT-GROUP + OBJECTS { + appnLocalEnTgEntryTimeLeft, + appnLocalEnTgDestVirtual, + appnLocalEnTgDlcData, + appnLocalEnTgOperational, + appnLocalEnTgCpCpSession, + appnLocalEnTgEffCap, + appnLocalEnTgConnCost, + appnLocalEnTgByteCost, + appnLocalEnTgSecurity, + appnLocalEnTgDelay, + appnLocalEnTgUsr1, + appnLocalEnTgUsr2, + appnLocalEnTgUsr3, + appnLocalEnTgMltgLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation + of the information that a network node possesses about + the end nodes directly attached to it." + ::= { appnGroups 31 } + +appnLocalDirPerfConfGroup OBJECT-GROUP + OBJECTS { + appnDirMaxCaches, + appnDirCurCaches, + appnDirCurHomeEntries, + appnDirRegEntries, + appnDirInLocates, + appnDirInBcastLocates, + appnDirOutLocates, + appnDirOutBcastLocates, + appnDirNotFoundLocates, + appnDirNotFoundBcastLocates, + appnDirLocateOutstands + } + STATUS current + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory only for APPN + network nodes and end nodes." + ::= { appnGroups 11 } + +appnCosConfGroup OBJECT-GROUP + OBJECTS { + appnCosModeCosName, + appnCosTransPriority, + appnCosNodeRowWgt, + appnCosNodeRowResistMin, + appnCosNodeRowResistMax, + appnCosNodeRowMinCongestAllow, + appnCosNodeRowMaxCongestAllow, + appnCosTgRowWgt, + appnCosTgRowEffCapMin, + appnCosTgRowEffCapMax, + appnCosTgRowConnCostMin, + appnCosTgRowConnCostMax, + appnCosTgRowByteCostMin, + appnCosTgRowByteCostMax, + appnCosTgRowSecurityMin, + appnCosTgRowSecurityMax, + appnCosTgRowDelayMin, + appnCosTgRowDelayMax, + appnCosTgRowUsr1Min, + appnCosTgRowUsr1Max, + appnCosTgRowUsr2Min, + appnCosTgRowUsr2Max, + appnCosTgRowUsr3Min, + appnCosTgRowUsr3Max + } + STATUS current + DESCRIPTION + "The appnCosConfGroup is mandatory only for APPN network + nodes and end nodes." + ::= { appnGroups 12 } + +appnIntSessConfGroup OBJECT-GROUP + OBJECTS { + appnIsInGlobeCtrAdminStatus, + appnIsInGlobeCtrOperStatus, + appnIsInGlobeCtrStatusTime, + appnIsInGlobeRscv, + appnIsInGlobeRscvTime, + appnIsInGlobeActSess, + appnIsInSessState, + appnIsInPriLuName, + appnIsInSecLuName, + appnIsInModeName, + appnIsInCosName, + appnIsInTransPriority, + appnIsInSessType, + appnIsInSessUpTime, + appnIsInCtrUpTime, + appnIsInP2SFmdPius, + appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, + appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, + appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, + appnIsInS2PNonFmdBytes, + appnIsInPsAdjCpName, + appnIsInPsAdjTgNum, + appnIsInPsSendMaxBtuSize, + appnIsInPsSendPacingType, + appnIsInPsSendRpc, + appnIsInPsSendNxWndwSize, + appnIsInPsRecvPacingType, + appnIsInPsRecvRpc, + appnIsInPsRecvNxWndwSize, + appnIsInSsAdjCpName, + appnIsInSsAdjTgNum, + appnIsInSsSendMaxBtuSize, + appnIsInSsSendPacingType, + appnIsInSsSendRpc, + appnIsInSsSendNxWndwSize, + appnIsInSsRecvPacingType, + appnIsInSsRecvRpc, + appnIsInSsRecvNxWndwSize, + appnIsInRouteInfo + } + STATUS current + DESCRIPTION + "The appnIntSessConfGroup is mandatory only for network + nodes." + ::= { appnGroups 13 } + +appnHprBaseConfGroup OBJECT-GROUP + OBJECTS { + appnNodeHprIntRteSetups, + appnNodeHprIntRteRejects, + appnLsErrRecoSup, + appnLsForAnrLabel, + appnLsRevAnrLabel + } + STATUS current + DESCRIPTION + "The appnHprBaseConfGroup is mandatory only for nodes that + implement the HPR base (APPN option set 1400)." + ::= { appnGroups 14 } + +appnHprRtpConfGroup OBJECT-GROUP + OBJECTS { + appnNodeMaxSessPerRtpConn, + appnNodeHprOrgRteSetups, + appnNodeHprOrgRteRejects, + appnNodeHprEndRteSetups, + appnNodeHprEndRteRejects, + appnLsBfNceId + } + STATUS current + DESCRIPTION + "The appnHprRtpConfGroup is mandatory only for nodes that + implement the HPR RTP tower (APPN option set 1401)." + ::= { appnGroups 15 } + +appnHprCtrlFlowsRtpConfGroup OBJECT-GROUP + OBJECTS { + appnLsCpCpNceId, + appnLsRouteNceId + } + STATUS current + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory only for nodes + that implement the HPR Control Flows over RTP tower (APPN + option set 1402)." + ::= { appnGroups 16 } + +appnHprBfConfGroup OBJECT-GROUP + OBJECTS { + appnIsInGlobeHprBfActSess, + appnIsInRtpNceId, + appnIsInRtpTcid, + appnIsRtpSessions + } + STATUS current + DESCRIPTION + "The appnHprBfConfGroup is mandatory only for nodes that + implement the APPN/HPR boundary function." + ::= { appnGroups 17 } + +appnTrapConfGroup OBJECT-GROUP + OBJECTS { + alertIdNumber, + affectedObject + } + STATUS current + DESCRIPTION + "The appnTrapConfGroup is optional for all APPN nodes. Nodes + implementing this group shall also implement the + appnTrapNotifGroup." + ::= { appnGroups 18 } + +appnTrapNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + alertTrap + } + STATUS current + DESCRIPTION + "The appnTrapNotifGroup is optional for all APPN nodes. + Nodes implementing this group shall also implement the + appnTrapConfGroup." + ::= { appnGroups 19 } + +appnBrNnConfGroup OBJECT-GROUP + OBJECTS { + appnNodeEnNnServer, + appnNodeEnLuSearch, + appnLocalTgBranchLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for + branch network nodes. Some of these objects also appear + in the instrumentation for an end node. + + Note: A branch network node always returns endNode(2) + as the value of the appnNodeType object from the + appnGeneralConfGroup2 conformance group." + ::= { appnGroups 20 } + + +-- ********************************************************************* +-- Deprecated definitions +-- ********************************************************************* + +appnNodeMibVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (11)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of LAST-UPDATED from this module's MODULE-IDENTITY + macro. This object gives a Management Station an easy way of + determining the level of the MIB supported by an agent. + + Since this object incorporates the Year 2000-unfriendly + 2-digit year specified in SMI for the LAST-UPDATED field, and + since it was not found to be particularly useful, it has been + deprecated. No replacement object has been defined." + + ::= { appnGeneralInfoAndCaps 2 } + +appnCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the APPN MIB. + + This is the compliance statement for the RFC 2155-level version + of the APPN MIB. It was deprecated as new objects were added + to the MIB for MLTG, branch network node, and other extensions + to the APPN architecture." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appnGeneralConfGroup, + appnPortConfGroup, + appnLinkConfGroup, + appnLocalTgConfGroup, + appnDirTableConfGroup + } + +-- Conditionally mandatory groups + GROUP appnNnUniqueConfGroup + DESCRIPTION + "The appnNnUniqueConfGroup is mandatory only for + network nodes." + + GROUP appnEnUniqueConfGroup + DESCRIPTION + "The appnEnUniqueConfGroup is mandatory only for end + nodes." + + GROUP appnVrnConfGroup + DESCRIPTION + "The appnVrnConfGroup is mandatory only for network + nodes and end nodes that implement virtual routing + node support." + + GROUP appnNnTopoConfGroup + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for + network nodes." + GROUP appnLocalEnTopoConfGroup + DESCRIPTION + "The appnLocalEnTopoConfGroup is mandatory only for + network nodes." + + GROUP appnLocalDirPerfConfGroup + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory only for + APPN network nodes and end nodes." + + GROUP appnCosConfGroup + DESCRIPTION + "The appnCosConfGroup is mandatory only for APPN + network nodes and end nodes." + + GROUP appnIntSessConfGroup + DESCRIPTION + "The appnIntSessConfGroup is mandatory only for + network nodes." + + GROUP appnHprBaseConfGroup + DESCRIPTION + "The appnHprBaseConfGroup is mandatory only for nodes + that implement the HPR base (APPN option set 1400)." + + GROUP appnHprRtpConfGroup + DESCRIPTION + "The appnHprRtpConfGroup is mandatory only for nodes + that implement the HPR RTP tower (APPN option set + 1401)." + GROUP appnHprCtrlFlowsRtpConfGroup + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory only + for nodes that implement the HPR Control Flows over + RTP tower (APPN option set 1402)." + + GROUP appnHprBfConfGroup + DESCRIPTION + "The appnHprBfConfGroup is mandatory only for nodes + that implement the APPN/HPR boundary function." + + GROUP appnTrapConfGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnTrapNotifGroup + DESCRIPTION + "Traps are optional for all nodes." + ::= { appnCompliances 1 } + +appnGeneralConfGroup OBJECT-GROUP + OBJECTS { + appnNodeCpName, + appnNodeMibVersion, + appnNodeId, + appnNodeType, + appnNodeUpTime, + appnNodeParallelTg, + appnNodeAdaptiveBindPacing, + appnNodeHprSupport, + appnNodeCounterDisconTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN general information and capabilities. + + This RFC 2155-level group was deprecated when the + appnNodeMibVersion object was removed and the + appnNodeLsCounterType and appnNodeBrNn objects were added." + ::= { appnGroups 1 } + +appnLinkConfGroup OBJECT-GROUP + OBJECTS { + appnLsCommand, + appnLsOperState, + appnLsPortName, + appnLsDlcType, + appnLsDynamic, + appnLsAdjCpName, + appnLsAdjNodeType, + appnLsTgNum, + appnLsLimResource, + appnLsActOnDemand, + appnLsMigration, + appnLsPartnerNodeId, + appnLsCpCpSessionSupport, + appnLsMaxSendBtuSize, + appnLsInXidBytes, + appnLsInMsgBytes, + appnLsInXidFrames, + appnLsInMsgFrames, + appnLsOutXidBytes, + appnLsOutMsgBytes, + appnLsOutXidFrames, + appnLsOutMsgFrames, + appnLsEchoRsps, + appnLsCurrentDelay, + appnLsMaxDelay, + appnLsMinDelay, + appnLsMaxDelayTime, + appnLsGoodXids, + appnLsBadXids, + appnLsSpecific, + appnLsActiveTime, + appnLsCurrentStateTime, + appnLsHprSup, + appnLsLocalAddr, + appnLsRemoteAddr, + appnLsRemoteLsName, + appnLsStatusTime, + appnLsStatusLsName, + appnLsStatusCpName, + appnLsStatusPartnerId, + appnLsStatusTgNum, + appnLsStatusGeneralSense, + appnLsStatusRetry, + appnLsStatusEndSense, + appnLsStatusXidLocalSense, + appnLsStatusXidRemoteSense, + appnLsStatusXidByteInError, + appnLsStatusXidBitInError, + appnLsStatusDlcType, + appnLsStatusLocalAddr, + appnLsStatusRemoteAddr, + appnLsCounterDisconTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN link information. + + This RFC 2155-level group was deprecated when the + appnLsMltgMember object was added." + + ::= { appnGroups 3 } + +appnLocalTgConfGroup OBJECT-GROUP + OBJECTS { + appnLocalTgDestVirtual, + appnLocalTgDlcData, + appnLocalTgPortName, + appnLocalTgQuiescing, + appnLocalTgOperational, + appnLocalTgCpCpSession, + appnLocalTgEffCap, + appnLocalTgConnCost, + appnLocalTgByteCost, + appnLocalTgSecurity, + appnLocalTgDelay, + appnLocalTgUsr1, + appnLocalTgUsr2, + appnLocalTgUsr3, + appnLocalTgHprSup, + appnLocalTgIntersubnet + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN local TG information. + + This RFC 2155-level group was deprecated when the + appnLocalTgMltgLinkType object was added." + + ::= { appnGroups 4 } + +appnDirTableConfGroup OBJECT-GROUP + OBJECTS { + appnDirNnServerName, + appnDirLuOwnerName, + appnDirLuLocation, + appnDirType + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of the + APPN directory database. + + This RFC 2155-level group was deprecated when the + appnDirApparentLuOwnerName object was added." + + ::= { appnGroups 5 } + +appnNnTopoConfGroup OBJECT-GROUP + OBJECTS { + appnNnTopoMaxNodes, + appnNnTopoCurNumNodes, + appnNnTopoNodePurges, + appnNnTopoTgPurges, + appnNnTopoTotalTduWars, + appnNnNodeFREntryTimeLeft, + appnNnNodeFRType, + appnNnNodeFRRsn, + appnNnNodeFRRouteAddResist, + appnNnNodeFRCongested, + appnNnNodeFRIsrDepleted, + appnNnNodeFRQuiescing, + appnNnNodeFRGateway, + appnNnNodeFRCentralDirectory, + appnNnNodeFRIsr, + appnNnNodeFRGarbageCollect, + appnNnNodeFRHprSupport, + appnNnNodeFRPeriBorderSup, + appnNnNodeFRInterchangeSup, + appnNnNodeFRExteBorderSup, + appnNnTgFREntryTimeLeft, + appnNnTgFRDestVirtual, + appnNnTgFRDlcData, + appnNnTgFRRsn, + appnNnTgFROperational, + appnNnTgFRQuiescing, + appnNnTgFRCpCpSession, + appnNnTgFREffCap, + appnNnTgFRConnCost, + appnNnTgFRByteCost, + appnNnTgFRSecurity, + appnNnTgFRDelay, + appnNnTgFRUsr1, + appnNnTgFRUsr2, + appnNnTgFRUsr3, + appnNnTgFRGarbageCollect, + appnNnTgFRSubareaNum, + appnNnTgFRHprSup, + appnNnTgFRDestHprTrans, + appnNnTgFRTypeIndicator, + appnNnTgFRIntersubnet + } + STATUS deprecated + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for network + nodes. + + This RFC 2155-level group was deprecated when the + appnNnNodeFRBranchAwareness, appnNnTgFRMltgLinkType, and + appnNnFRBranchTg objects were added." + + ::= { appnGroups 9 } + +appnLocalEnTopoConfGroup OBJECT-GROUP + OBJECTS { + appnLocalEnTgEntryTimeLeft, + appnLocalEnTgDestVirtual, + appnLocalEnTgDlcData, + appnLocalEnTgOperational, + appnLocalEnTgCpCpSession, + appnLocalEnTgEffCap, + appnLocalEnTgConnCost, + appnLocalEnTgByteCost, + appnLocalEnTgSecurity, + appnLocalEnTgDelay, + appnLocalEnTgUsr1, + appnLocalEnTgUsr2, + appnLocalEnTgUsr3 + } + STATUS deprecated + DESCRIPTION + "The appnLocalEnTopoConfGroup is mandatory only for network + nodes. + + This RFC 2155-level group was deprecated when the + appnLocalEnTgMltgLinkType object was added." + + + ::= { appnGroups 10 } + + +END diff --git a/mibs/ietf/APPN-TRAP-MIB b/mibs/ietf/APPN-TRAP-MIB new file mode 100644 index 0000000..e812f49 --- /dev/null +++ b/mibs/ietf/APPN-TRAP-MIB @@ -0,0 +1,493 @@ +APPN-TRAP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + Counter32, OBJECT-TYPE, MODULE-IDENTITY, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + appnMIB, appnIsInP2SFmdPius, appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, appnIsInS2PNonFmdBytes, + appnIsInSessUpTime, appnObjects, + appnLocalTgOperational, appnLocalTgCpCpSession, + appnPortOperState, appnLsOperState, + appnCompliances, appnGroups + FROM APPN-MIB + + dlurDlusSessnStatus + FROM APPN-DLUR-MIB; + +appnTrapMIB MODULE-IDENTITY + LAST-UPDATED "9808310000Z" -- August 31, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + DESCRIPTION + "This MIB module defines notifications to be generated by + network devices with APPN capabilities. It presupposes + support for the APPN MIB. It also presupposes + support for the DLUR MIB for implementations + that support the DLUR-related groups." +::= { appnMIB 0 } + +-- ********************************************************************* +-- Notifications +-- ********************************************************************* + +appnIsrAccountingDataTrap NOTIFICATION-TYPE + OBJECTS { + appnIsInP2SFmdPius, + appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, + appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, + appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, + appnIsInS2PNonFmdBytes, + appnIsInSessUpTime + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is generated by an + APPN node whenever an ISR session passing through the node is + taken down, regardless of whether the session went down + normally or abnormally. Its purpose is to allow a management + application (primarily an accounting application) that is + monitoring the ISR counts to receive the final values of these + counts, so that the application can properly account for the + amounts the counts were incremented since the last time the + application polled them. The appnIsInSessUpTime object + provides the total amount of time that the session was active. + + This notification is not a substitute for polling the ISR + counts. In particular, the count values reported in this + notification cannot be assumed to be the complete totals for + the life of the session, since they may have wrapped while the + session was up. + + The session to which the objects in this notification apply is + identified by the fully qualified CP name and PCID that make up + the table index. An instance of this notification will contain + exactly one instance of each of its objects, and these objects + will all belong to the same conceptual row of the + appnIsInTable. + + Generation of this notification is controlled by the same + object in the APPN MIB, appnIsInGlobeCtrAdminStatus, that + controls whether the count objects themselves are being + incremented." + ::= { appnTrapMIB 1 } + +appnLocalTgOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLocalTgTableChanges, + appnLocalTgOperational + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of local TG operational state changes, + and thus to reduce the frequency with which it polls + for these changes. + + This notification is sent whenever there is a change to + the appnLocalTgOperational object in a row of the + appnLocalTgTable. This notification is only sent for row + creation if the row is created with a value of 'true' for + appnLocalTgOperational. This notification is only sent for + row deletion if the last value of appnLocalTgOperational was + 'true'. In this case, the value of appnLocalTgOperational + in the notification shall be 'false', since the deletion of + a row indicates that the TG is no longer operational. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of local TG topology changes, and the + current operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLocalTgTable again. + This is the same count as used in the appnLocalCpCpStateChangeTrap. + A lost notification could indicate a local TG CP-CP session state + change or an operational state change. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 2 } + +appnLocalTgCpCpChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLocalTgTableChanges, + appnLocalTgCpCpSession + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of local TG control-point to control-point (CP-CP) + session state changes, and thus to reduce the + frequency with which it polls for these changes. + + This notification is sent whenever there is a change to + the appnLocalTgCpCpSession object but NOT the + appnLocalTgOperational object in a row of the appnLocalTgTable. + This notification is never sent for appnLocalTgTable row + creation or deletion. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of local TG topology changes, and the + current CP-CP session state itself. The count of changes allows + an application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLocalTgTable again. This + is the same count as used in the appnLocalTgOperStateChangeTrap. + A lost notification could indicate a local TG CP-CP session + state change or an operational state change. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 3 } + +appnPortOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnPortTableChanges, + appnPortOperState + } + + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of port operational state changes, and thus to + reduce the frequency with which it polls for these changes. + This notification is only sent when a appnPortOperState has + transitioned to a value of 'active' or 'inactive'. + + This notification is sent whenever there is a appnPortOperState + object transition to 'inactive' or 'active' state in the + appnPortTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + appnPortOperState. This notification is only sent for + row deletion if the last value of appnPortOperState was + 'active'. In this case, the value of appnPortOperState + in the notification shall be 'inactive', since the deletion of + a row indicates that the port is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of port table changes, and the + operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point + it knows it must retrieve the entire appnPortTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 4 } + +appnLsOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLsTableChanges, + appnLsOperState + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of link station operational state changes, and + thus to reduce the frequency with which it polls for these + changes. This notification is only sent when a appnLsOperState + has transitioned to a value of 'active' or 'inactive'. + + This notification is sent whenever there is a appnLsOperState + object transition to 'inactive' or 'active' state in the + appnLsTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + appnLsOperState. This notification is only sent for + row deletion if the last value of appnLsOperState was + 'active'. In this case, the value of appnLsOperState + in the notification shall be 'inactive', since the deletion of + a row indicates that the link station is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of link station table changes, and the + operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLsTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + ::= { appnTrapMIB 5 } + +dlurDlusStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + dlurDlusTableChanges, + dlurDlusSessnStatus + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of DLUR-DLUS session changes, and thus to reduce + the frequency with which it polls for these changes. + + This notification is sent whenever there is a dlurDlusSessnStatus + object transition to 'inactive' or 'active' state in the + dlurDlusTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + dlurDlusSessnStatus. This notification is only sent for + row deletion if the last value of dlurDlusSessnStatus was + 'active'. In this case, the value of dlurDlusSessnStatus + in the notification shall be 'inactive', since the deletion of + a row indicates that the session is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of DLUR-DLUS table changes, and the + session status itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire dlurDlusTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 6 } + +-- ********************************************************************* +-- Supporting Objects +-- ********************************************************************* + +appnTrapObjects OBJECT IDENTIFIER ::= { appnObjects 7 } + +appnTrapControl OBJECT-TYPE + + SYNTAX BITS { + appnLocalTgOperStateChangeTrap(0), + appnLocalTgCpCpChangeTrap(1), + appnPortOperStateChangeTrap(2), + appnLsOperStateChangeTrap(3), + dlurDlusStateChangeTrap(4) + -- add other notification types here + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object to turn APPN notification generation on and off. + Setting a notification type's bit to 1 enables generation of + notifications of that type, subject to further filtering + resulting from entries in the snmpNotificationMIB. Setting + this bit to 0 disables generation of notifications of that + type. + + Note that generation of the appnIsrAccountingDataTrap is + controlled by the appnIsInGlobeCtrAdminStatus object in + the APPN MIB: if counts of intermediate session traffic + are being kept at all, then the notification is also enabled." + + ::= { appnTrapObjects 1 } + +appnLocalTgTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnLocalTgTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnLocalTgOperStateChangeTrap or + appnLocalTgCpCpChangeTrap notification to be sent, whether + or not those notifications are enabled." + + ::= { appnTrapObjects 2 } + +appnPortTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnPortTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnPortOperStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 3 } + +appnLsTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnLsTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnLsOperStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 4 } + +dlurDlusTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the dlurDlusTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a dlurDlusStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 5 } + +-- ********************************************************************* +-- Conformance information +-- ********************************************************************* + +-- Tie into the conformance structure in the APPN MIB: +-- appnConformance OBJECT IDENTIFIER ::= {appnMIB 3 } +-- +-- appnCompliances OBJECT IDENTIFIER ::= {appnConformance 1 } +-- appnGroups OBJECT IDENTIFIER ::= {appnConformance 2 } + +-- Compliance statement +appnTrapMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMP entities that + implement the APPN-TRAP-MIB." + + MODULE -- this module + +-- Conditionally mandatory groups + GROUP appnTrapMibIsrNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + reporting of final ISR counter values via notifications." + + GROUP appnTrapMibTopoConfGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for local topology." + + GROUP appnTrapMibTopoNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for local topology." + + GROUP appnTrapMibDlurConfGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for the dlurDlusTable." + + GROUP appnTrapMibDlurNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for the dlurDlusTable." + + OBJECT appnTrapControl + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to support a set to + this object." + + ::= {appnCompliances 2 } + +-- Units of conformance +appnTrapMibIsrNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + appnIsrAccountingDataTrap + } + STATUS current + DESCRIPTION + "A notification for reporting the final values of the + APPN MIB's ISR counters." + + ::= { appnGroups 21 } + +appnTrapMibTopoConfGroup OBJECT-GROUP + OBJECTS { + appnTrapControl, + appnLocalTgTableChanges, + appnPortTableChanges, + appnLsTableChanges + } + STATUS current + DESCRIPTION + "A collection of objects for reducing the polling + associated with the local topology tables in the + APPN MIB. Nodes that implement this group SHALL + also implement the appnTrapMibTopoNotifGroup." + + ::= { appnGroups 22 } + +appnTrapMibTopoNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + appnLocalTgOperStateChangeTrap, + appnLocalTgCpCpChangeTrap, + appnPortOperStateChangeTrap, + appnLsOperStateChangeTrap + + } + STATUS current + DESCRIPTION + "A collection of notifications for reducing the polling + associated with the local topology tables in the + APPN MIB. Nodes that implement this group SHALL + also implement the appnTrapMibTopoConfGroup." + + ::= { appnGroups 23 } + +appnTrapMibDlurConfGroup OBJECT-GROUP + OBJECTS { + appnTrapControl, + dlurDlusTableChanges + } + STATUS current + DESCRIPTION + "A collection of objects for reducing the polling + associated with the dlurDlusTable in the DLUR + MIB. Nodes that implement this group SHALL also + implement the appnTrapMibDlurNotifGroup." + + ::= { appnGroups 24 } + +appnTrapMibDlurNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + dlurDlusStateChangeTrap + } + STATUS current + DESCRIPTION + "A notification for reducing the polling associated + with the dlurDlusTable in the DLUR MIB. Nodes that + implement this group SHALL also implement the + appnTrapMibDlurConfGroup." + + ::= { appnGroups 25 } + +END diff --git a/mibs/ietf/APS-MIB b/mibs/ietf/APS-MIB new file mode 100644 index 0000000..9bb067e --- /dev/null +++ b/mibs/ietf/APS-MIB @@ -0,0 +1,1780 @@ +APS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, + Gauge32, Counter32, Integer32, transmission + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, + TimeStamp, StorageType + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + + + + + ifIndex, InterfaceIndex + FROM IF-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +apsMIB MODULE-IDENTITY + LAST-UPDATED "200302280000Z" -- February 28, 2003 + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + " Jim Kuhfeld + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5465 + Email: jkuhfeld@redback.com + + Jeff Johnson + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5460 + Email: jeff@redback.com + + Michael Thatcher + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5449 + Email: thatcher@redback.com" + DESCRIPTION + "This management information module supports the configuration + and management of SONET linear APS groups. The definitions and + descriptions used in this MIB have been derived from + Synchronous Optical Network (SONET) Transport Systems: + Common Generic Criteria, GR-253-CORE Issue 3, September 2000, + section 5.3. The MIB is also consistent with the Multiplex + Section Protection (MSP) protocol as specified in ITU-T + Recommendation G.783, Characteristics of synchronous digital + hierarchy (SDH) equipment function blocks, Annex A and B. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3498; see the RFC itself for + full legal notices. + " + + + + + + + REVISION "200302280000Z" -- February 28, 2003 + DESCRIPTION + "Initial version of this MIB, published as RFC 3498." + ::= { transmission 49 } + +apsMIBObjects OBJECT IDENTIFIER + ::= { apsMIB 1 } + +apsMIBNotifications OBJECT IDENTIFIER + ::= { apsMIB 2 } + +apsMIBConformance OBJECT IDENTIFIER + ::= { apsMIB 3 } + +ApsK1K2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This Textual Convention describes an object that stores + a SONET K1 and K2 byte APS protocol field. + + K1 is located in the first octet, K2 is located in + the second octet. Bits are numbered from left to right. + + Bits 1-4 of the K1 byte indicate a request. + + 1111 Lockout of Protection + 1110 Forced Switch + 1101 SF - High Priority + 1100 SF - Low Priority + 1011 SD - High Priority + 1010 SD - Low Priority + 1001 not used + 1000 Manual Switch + 0111 not used + 0110 Wait-to-Restore + 0101 not used + 0100 Exercise + 0011 not used + 0010 Reverse Request + 0001 Do Not Revert + 0000 No Request + + Bits 5-8 of the K1 byte indicate the channel associated with + the request defined in bits 1-4. + + 0000 is the Null channel. + + + + + + 1-14 are working channels. + 15 is the extra traffic channel + + Bits 1-4 of the K2 byte indicate a channel. The channel is + defined with the same syntax as K1 Bits 5-8. + + Bit 5 of the K2 byte indicates the + architecture. + + 0 if the architecture is 1+1 + 1 if the architecture is 1:n + + Bits 6-8 of the K2 byte indicates the mode. + + 000 - 011 are reserved for future use + 100 indicates the mode is unidirectional + 101 indicates the mode is bidirectional + 110 RDI-L + 111 AIS-L + " + REFERENCE + "Bellcore (Telcordia Technologies) GR-253-CORE, Issue 3, + September 2000, 5.3.5." + SYNTAX OCTET STRING (SIZE (2)) + +ApsSwitchCommand ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An APS switch command allows a user to perform protection + switch actions. + + If the APS switch command cannot be executed because an + equal or higher priority request is in effect, an + inconsistentValue error is returned. + + The Switch command values are: + + noCmd + + This value should be returned by a read request when no switch + command has been written to the object in question since + initialization. This value may not be used in a write + operation. If noCmd is used in a write operation a wrongValue + error is returned. + + + + + + + + clear + + Clears all of the switch commands listed below for the + specified channel. + + lockoutOfProtection + + Prevents any of the working channels from switching to the + protection line. The specified channel should be the protection + channel, otherwise an inconsistentValue error is returned. + + forcedSwitchWorkToProtect + + Switches the specified working channel to the protection line. + If the protection channel is specified an inconsistentValue + error is returned. + + forcedSwitchProtectToWork + + Switches the working channel back from the protection + line to the working line. The specified channel should be + the protection channel, otherwise an inconsistentValue + error is returned. + + manualSwitchWorkToProtect + + Switches the specified working channel to the protection line. + If the protection channel is specified an inconsistentValue + error is returned. + + manualSwitchProtectToWork + + Switches the working channel back from the protection + line to the working line. The specified channel should be + the protection channel, otherwise an inconsistentValue + error is returned. + + exercise + + Exercises the protocol for a protection switch of the specified + channel by issuing an Exercise request for that channel and + checking the response on the APS channel. " + SYNTAX INTEGER { + noCmd(1), + clear(2), + lockoutOfProtection(3), + forcedSwitchWorkToProtect(4), + forcedSwitchProtectToWork(5), + + + + manualSwitchWorkToProtect(6), + manualSwitchProtectToWork(7), + exercise(8) + } + +ApsControlCommand ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An APS control command applies only to LTE that support the + 1:n architecture and performs the following actions. + + The Control command values are: + + noCmd + + This value should be returned by a read request when no control + command has been written to the object in question since + initialization. This value may not be used in a write + operation. If noCmd is used in a write operation a wrongValue + error is returned. + + lockoutWorkingChannel + + Prevents the specified working channel from switching to the + protection line. If the protection line is specified an + inconsistentValue error is returned. + + clearLockoutWorkingChannel + + Clears the lockout a working channel command for the channel + specified. If the protection line is specified an + inconsistentValue error is returned." + SYNTAX INTEGER { + noCmd(1), + lockoutWorkingChannel(2), + clearLockoutWorkingChannel(3) + } + +-- +-- APS Configuration Table +-- +-- This table supports the addition, configuration and deletion of APS +-- groups. +-- + +apsConfig OBJECT IDENTIFIER ::= { apsMIBObjects 1 } + + + + + +apsConfigGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of APS groups. This count includes all rows in + apsConfigTable, regardless of the value of apsConfigRowStatus." + ::= { apsConfig 1 } + +apsConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the APS groups that have been configured + on the system." + ::= { apsConfig 2 } + +apsConfigEntry OBJECT-TYPE + SYNTAX ApsConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsConfigTable." + INDEX { IMPLIED apsConfigName } + ::= { apsConfigTable 1 } + +ApsConfigEntry ::= SEQUENCE { + apsConfigName SnmpAdminString, + apsConfigRowStatus RowStatus, + apsConfigMode INTEGER, + apsConfigRevert INTEGER, + apsConfigDirection INTEGER, + apsConfigExtraTraffic INTEGER, + apsConfigSdBerThreshold Integer32, + apsConfigSfBerThreshold Integer32, + apsConfigWaitToRestore Integer32, + apsConfigCreationTime TimeStamp, + apsConfigStorageType StorageType +} + +apsConfigName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the APS group." + ::= { apsConfigEntry 1 } + + + +apsConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this APS group entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. Also, + all associated apsChanConfigEntry rows must represent + a set of consecutive channel numbers beginning with + 0 or 1, depending on the selected architecture. + + When set to notInService changes may be made to apsConfigMode, + apsConfigRevert, apsConfigDirection, apsConfigExtraTraffic, + apsConfigSdBerThreshold, apsConfigSfBerThreshold, + and apsConfigWaitToRestore. Also, associated apsChanConfigTable + objects may be added, deleted and modified." + ::= { apsConfigEntry 2 } + +apsConfigMode OBJECT-TYPE + SYNTAX INTEGER { + onePlusOne(1), + oneToN(2), + onePlusOneCompatible(3), + onePlusOneOptimized(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The architecture of the APS group. + + onePlusOne + + The 1+1 architecture permanently bridges the working + line to the protection line. + + oneToN + + The 1:n architecture allows one protection channel to + protect up to n working channels. When a fault is detected + on one of the n working channels that channel is bridged + over the protection channel. + + onePlusOneCompatible + + + + + + + This refers to 1 + 1 bidirectional switching compatible with + 1:n bidirectional switching as specified in ITU-T + Recommendation G.783 (04/97) section A.3.4.1. Since this + mode necessitates bidirectional switching, apsConfigDirection + must be set to bidirectional whenever onePlusOneCompatible + is set. + + onePlusOneOptimized + + This refers to 1 + 1 bidirectional switching optimized + for a network using predominantly 1 + 1 bidirectional + switching as specified in ITU-T Recommendation G.783 (04/97) + section B.1. Since this mode necessitates bidirectional + switching, apsConfigDirection must be set to bidirectional + whenever onePlusOneOptimized is set. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL {onePlusOne} + ::= { apsConfigEntry 3 } + +apsConfigRevert OBJECT-TYPE + SYNTAX INTEGER { nonrevertive(1), revertive(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The revertive mode of the APS group. + + nonrevertive + + Traffic remains on the protection line until another switch + request is received. + + revertive + + When the condition that caused a switch to the protection + line has been cleared the signal is switched back to the + working line. Since switching is revertive with the 1:n + architecture, apsConfigRevert must be set to revertive if + apsConfigMode is set to oneToN. + + Switching may optionally be revertive with the 1+1 architecture. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL { nonrevertive } + ::= { apsConfigEntry 4 } + + + + +apsConfigDirection OBJECT-TYPE + SYNTAX INTEGER { unidirectional(1), bidirectional(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The directional mode of the APS group. + + unidirectional + + The unidirectional mode provides protection in one direction. + + bidirectional + + The bidirectional mode provides protection in both + directions. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL {unidirectional} + ::= { apsConfigEntry 5 } + +apsConfigExtraTraffic OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables or disables the transfer of extra traffic + on the protection channel in a 1:n architecture. This object + must be set to disabled if the architecture is 1+1. It may be + necessary to disable this in order to interwork with other SONET + network elements that don't support extra traffic. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL { disabled } + ::= { apsConfigEntry 6 } + +apsConfigSdBerThreshold OBJECT-TYPE + SYNTAX Integer32 (5..9) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Degrade Bit Error Rate. + + The negated value of this number is used as the exponent of + 10 for computing the threshold value for the Bit Error Rate + (BER). For example, a value of 5 indicates a BER threshold of + 10^-5. + + + + This object may be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 5 } + ::= { apsConfigEntry 7 } + +apsConfigSfBerThreshold OBJECT-TYPE + SYNTAX Integer32 (3..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Failure Bit Error Rate. + + The negated value of this number is used as the exponent of + 10 for computing the threshold value for the Bit Error Rate + (BER). For example, a value of 5 indicates a BER threshold of + 10^-5. + + This object may be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 3 } + ::= { apsConfigEntry 8 } + +apsConfigWaitToRestore OBJECT-TYPE + SYNTAX Integer32 (0..720) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Wait To Restore period in seconds. + + After clearing of a condition that necessitated an + automatic switch, the wait to restore period must elapse + before reverting. This is intended to avoid rapid switch + oscillations. + + GR-253-CORE specifies a Wait To Restore range of 5 to 12 + minutes. G.783 defines a 5 to 12 minute Wait To Restore + range in section 5.4.1.1.3, but also allows for a shorter + WTR period in Table 2-1, + WaitToRestore value (MI_WTRtime: 0..(5)..12 minutes). + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 300 } + ::= { apsConfigEntry 9 } + + + + + + +apsConfigCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the row was + created" + ::= { apsConfigEntry 10 } + +apsConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { apsConfigEntry 11 } + +-- +-- APS Status Table +-- +-- This table provides APS group statistics. +-- + +apsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides status information about APS groups + that have been configured on the system." + ::= { apsMIBObjects 2 } + +apsStatusEntry OBJECT-TYPE + SYNTAX ApsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsStatusTable." + AUGMENTS { apsConfigEntry } + ::= { apsStatusTable 1 } + +ApsStatusEntry ::= SEQUENCE { + apsStatusK1K2Rcv ApsK1K2, + apsStatusK1K2Trans ApsK1K2, + apsStatusCurrent BITS, + + + + apsStatusModeMismatches Counter32, + apsStatusChannelMismatches Counter32, + apsStatusPSBFs Counter32, + apsStatusFEPLFs Counter32, + apsStatusSwitchedChannel Integer32, + apsStatusDiscontinuityTime TimeStamp +} + +apsStatusK1K2Rcv OBJECT-TYPE + SYNTAX ApsK1K2 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the K1 and K2 bytes received on the + protection channel." + ::= { apsStatusEntry 1 } + +apsStatusK1K2Trans OBJECT-TYPE + SYNTAX ApsK1K2 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the K1 and K2 bytes transmitted on the + protection channel." + ::= { apsStatusEntry 2 } + +apsStatusCurrent OBJECT-TYPE + SYNTAX BITS { + modeMismatch(0), + channelMismatch(1), + psbf(2), + feplf(3), + extraTraffic(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the APS group. + + modeMismatch + + Modes other than 1+1 unidirectional monitor protection line + K2 bit 5, which indicates the architecture and K2 bits + 6-8, which indicate if the mode is unidirectional or + bidirectional. A conflict between the current local mode + and the received K2 mode information constitutes a + mode mismatch. + + + + + channelMismatch + + This bit indicates a mismatch between the transmitted K1 + channel and the received K2 channel has been detected. + + psbf + + This bit indicates a Protection Switch Byte Failure (PSBF) is + in effect. This condition occurs when either an inconsistent + APS byte or an invalid code is detected. An inconsistent APS + byte occurs when no three consecutive K1 bytes of the last 12 + successive frames are identical, starting with the last frame + containing a previously consistent byte. An invalid code occurs + when the incoming K1 byte contains an unused code or a code + irrelevant for the specific switching operation (e.g., Reverse + Request while no switching request is outstanding) in three + consecutive frames. An invalid code also occurs when the + incoming K1 byte contains an invalid channel number in three + consecutive frames. + + feplf + + Modes other than 1+1 unidirectional monitor the K1 byte + for Far-End Protection-Line failures. A Far-End + Protection-Line defect is declared based on receiving + SF on the protection line. + + extraTraffic + + This bit indicates whether extra traffic is currently being + accepted on the protection line. " + ::= { apsStatusEntry 3 } + +apsStatusModeMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Mode Mismatch conditions. + + 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 + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 4 } + + + + + + +apsStatusChannelMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Channel Mismatch conditions. + + 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 + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 5 } + +apsStatusPSBFs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Protection Switch Byte Failure conditions. + This condition occurs when either an inconsistent APS + byte or an invalid code is detected. An inconsistent APS + byte occurs when no three consecutive K1 bytes of the last + 12 successive frames are identical, starting with the last + frame containing a previously consistent byte. An invalid + code occurs when the incoming K1 byte contains an unused + code or a code irrelevant for the specific switching + operation (e.g., Reverse Request while no switching request + is outstanding) in three consecutive frames. An invalid code + also occurs when the incoming K1 byte contains an invalid + channel number in three consecutive frames. + + 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 + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 6 } + +apsStatusFEPLFs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Far-End Protection-Line Failure conditions. + This condition is declared based on receiving SF on + the protection line in the K1 byte. + + + + + + + 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 + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 7 } + +apsStatusSwitchedChannel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is set to the number of the channel that is + currently switched to protection. The value 0 indicates no + channel is switched to protection. The values 1-14 indicate + that working channel is switched to protection." + ::= { apsStatusEntry 8 } + +apsStatusDiscontinuityTime 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 APS group's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this APS group of any Counter32 + object contained in apsStatusTable. If no such + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains + a zero value." + ::= { apsStatusEntry 9 } + +-- +-- APS Map Group +-- +-- Lists the SONET LTE interfaces that may be used to create APS groups. +-- + +apsMap OBJECT IDENTIFIER ::= { apsMIBObjects 3 } + +apsChanLTEs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of SONET LTE interfaces on the system. + Each interface that is included has an ifType value of + sonet(39)." + + + + ::= { apsMap 1 } + +apsMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the SONET LTE interfaces on the system. + Each interface that is listed has an ifType value of + sonet(39)." + ::= { apsMap 2 } + +apsMapEntry OBJECT-TYPE + SYNTAX ApsMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsMapTable." + INDEX { ifIndex } + ::= { apsMapTable 1 } + +ApsMapEntry ::= SEQUENCE { + apsMapGroupName SnmpAdminString, + apsMapChanNumber Integer32 +} + +apsMapGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual name for the APS group which this channel is + included in. If the channel is not part of an APS group + this value is set to a string of size 0. + + When an instance of apsChanConfigIfIndex is set equal to an + instance of ifIndex that has an ifType value of sonet(39), + apsMapGroupName is set equal to the corresponding value of + apsChanConfigGroupName. + + If an instance of ifIndex that has an ifType value of + sonet(39) ceases to be equal to an instance of + apsChanConfigIfIndex, either because of a change in the value + of apsChanConfigIfIndex, or because of row deletion in the + ApsChanConfigTable, apsMapGroupName is set to a string of + size 0." + ::= { apsMapEntry 2 } + + + + +apsMapChanNumber OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is set to a unique channel number within an APS + group. The value 0 indicates the null channel. The values + 1-14 define a working channel. If the SONET LTE is not part + of an APS group this value is set to -1. + + When an instance of apsChanConfigIfIndex is set equal to an + instance of ifIndex that has an ifType value of sonet(39), + apsMapChanNumber is set equal to the corresponding value of + apsChanConfigNumber. + + If an instance of ifIndex that has an ifType value of + sonet(39) ceases to be equal to an instance of + apsChanConfigIfIndex, either because of a change in the + value of apsChanConfigIfIndex, or because of row deletion + in the ApsChanConfigTable, apsMapChanNumber is set to -1." + ::= { apsMapEntry 3 } + +-- +-- APS Channel Configuration Table +-- +-- This table supports the addition, configuration and deletion of +-- channels in APS groups. +-- + +apsChanConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsChanConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the APS channels that have been configured + in APS groups." + ::= { apsMIBObjects 4 } + +apsChanConfigEntry OBJECT-TYPE + SYNTAX ApsChanConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsChanConfigTable." + INDEX {apsChanConfigGroupName, apsChanConfigNumber} + ::= { apsChanConfigTable 1 } + + + + + +ApsChanConfigEntry ::= SEQUENCE { + apsChanConfigGroupName SnmpAdminString, + apsChanConfigNumber Integer32, + apsChanConfigRowStatus RowStatus, + apsChanConfigIfIndex InterfaceIndex, + apsChanConfigPriority INTEGER, + apsChanConfigStorageType StorageType +} + +apsChanConfigGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the APS group which this channel is + included in." + ::= { apsChanConfigEntry 1 } + +apsChanConfigNumber OBJECT-TYPE + SYNTAX Integer32 (0..14) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This field is set to a unique channel number within an APS + group. The value 0 indicates the null channel. The values + 1-14 define a working channel. + + This field must be assigned a unique number within the group." + ::= { apsChanConfigEntry 2 } + +apsChanConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this APS channel entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + A row in the apsChanConfigTable may not be created, + deleted, set to notInService or otherwise modified + if the apsChanConfigGroupName value is equal to an + apsConfigName value and the associated apsConfigRowStatus + object is equal to active. However, if the apsConfigRowStatus + object is equal to notInService, a row may be created, deleted + or modified. In other words, a channel may not be added, + deleted or modified if the group is active. + + + + A row may be created with an apsChanConfigGroupName value + that is not equal to any existing instance of apsConfigName. + This action is the initial step in adding a SONET LTE to a + new APS group. + + If this object is set to destroy, the associated instance + of apsMapGroupName will be set to a string of size 0 and + the apsMapChanNumber will be set to -1. The channel status + entry will also be deleted by this action. + + apsChanConfigNumber must be set to a unique channel number + within the APS group. The value 0 indicates the null channel. + The values 1-14 define a working channel. When an attempt is + made to set the corresponding apsConfigRowStatus field to + active the apsChanConfigNumber values of all entries with equal + apsChanConfigGroupName fields must represent a set of + consecutive integer values beginning with 0 or 1, depending on + the architecture of the group, and ending with n, where n is + greater than or equal to 1 and less than or equal to 14. + Otherwise, the error inconsistentValue is returned to the + apsConfigRowStatus set attempt." + ::= { apsChanConfigEntry 3 } + +apsChanConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Interface Index assigned to a SONET LTE. This is an + interface with ifType sonet(39). The value of this object + must be unique among all instances of apsChanConfigIfIndex. + In other words, a particular SONET LTE can only be configured + in one APS group. + + This object cannot be set if the apsChanConfigGroupName + instance associated with this row is equal to an instance of + apsConfigName and the corresponding apsConfigRowStatus object + is set to active. In other words this value cannot be changed + if the APS group is active. However, this value may be changed + if the apsConfigRowStatus value is equal to notInService." + ::= { apsChanConfigEntry 4 } + +apsChanConfigPriority OBJECT-TYPE + SYNTAX INTEGER {low(1), high(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of the channel. + + + + This field determines whether high or low priority + SD and SF codes are used in K1 requests. + + This field is only applicable if the channel is to be included + in a group using the 1:n architecture. It is not applicable if + the channel is to be included in a group using the 1+1 + architecture, and is ignored in that case. + + This object cannot be set if the apsChanConfigGroupName + instance associated with this row is equal to an instance of + apsConfigName and the corresponding apsConfigRowStatus object + is set to active. In other words this value cannot be changed + if the APS group is active. However, this value may be changed + if the apsConfigRowStatus value is equal to notInService." + DEFVAL { low } + ::= { apsChanConfigEntry 5 } + +apsChanConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { apsChanConfigEntry 6 } + +-- +-- APS Command Table +-- +-- This table provides the ability to initiate APS commands. +-- + +apsCommandTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsCommandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows commands to be sent to configured APS + groups." + ::= { apsMIBObjects 5 } + +apsCommandEntry OBJECT-TYPE + SYNTAX ApsCommandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row in the apsCommandTable. This row exists only + if the associated apsConfigEntry is active." + INDEX {apsChanConfigGroupName, apsChanConfigNumber} + ::= { apsCommandTable 1 } + +ApsCommandEntry ::= SEQUENCE { + apsCommandSwitch ApsSwitchCommand, + apsCommandControl ApsControlCommand +} + +apsCommandSwitch OBJECT-TYPE + SYNTAX ApsSwitchCommand + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the initiation of an APS switch command on the + APS group and channel specified by the index values. + + When read this object returns the last command written + or noCmd if no command has been written to this + channel since initialization. The return of the last command + written does not imply that this command is currently in + effect. This request may have been preempted by a higher + priority local or remote request. In order to determine the + current state of the APS group it is necessary to read + the objects apsStatusK1K2Rcv and apsStatusK1K2Trans. + + The value lockoutOfProtection should only be applied to the + protection line channel since that switch command prevents any + of the working channels from switching to the protection line. + Following the same logic, forcedSwitchProtectToWork and + manualSwitchProtectToWork should only be applied to the + protection line channel. + + forcedSwitchWorkToProtect and manualSwitchWorkToProtect + should only be applied to a working channel." + ::= { apsCommandEntry 1 } + +apsCommandControl OBJECT-TYPE + SYNTAX ApsControlCommand + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the initiation of an APS control command on the + APS group and channel specified by the index values. + + + + + + + When read this object returns the last command written or + noCmd if no command has been written to this channel since + initialization. + + This object does not apply to the protection line." + ::= { apsCommandEntry 2 } + +-- +-- APS Channel Status Table +-- +-- This table provides APS channel statistics. +-- + +apsChanStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsChanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains status information for all SONET LTE + interfaces that are included in APS groups." + ::= { apsMIBObjects 6 } + +apsChanStatusEntry OBJECT-TYPE + SYNTAX ApsChanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsChanStatusTable." + AUGMENTS { apsChanConfigEntry } + ::= { apsChanStatusTable 1 } + +ApsChanStatusEntry ::= SEQUENCE { + apsChanStatusCurrent BITS, + apsChanStatusSignalDegrades Counter32, + apsChanStatusSignalFailures Counter32, + apsChanStatusSwitchovers Counter32, + apsChanStatusLastSwitchover TimeStamp, + apsChanStatusSwitchoverSeconds Counter32, + apsChanStatusDiscontinuityTime TimeStamp +} + +apsChanStatusCurrent OBJECT-TYPE + SYNTAX BITS { + lockedOut(0), + sd(1), + sf(2), + switched(3), + wtr(4) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of the port. + + lockedOut + + This bit, when applied to a working channel, indicates that + the channel is prevented from switching to the protection + line. When applied to the null channel, this bit indicates + that no working channel may switch to the protection line. + + sd + + A signal degrade condition is in effect. + + sf + + A signal failure condition is in effect. + + switched + + The switched bit is applied to a working channel if that + channel is currently switched to the protection line. + + wtr + + A Wait-to-Restore state is in effect." + ::= { apsChanStatusEntry 1 } + +apsChanStatusSignalDegrades OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Signal Degrade conditions. This condition + occurs when the line Bit Error Rate exceeds the currently + configured value of the relevant instance of + apsConfigSdBerThreshold. + + 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 + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 2 } + + + + +apsChanStatusSignalFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Signal Failure conditions that have been + detected on the incoming signal. This condition occurs + when a loss of signal, loss of frame, AIS-L or a Line + bit error rate exceeding the currently configured value of + the relevant instance of apsConfigSfBerThreshold. + + 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 + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 3 } + +apsChanStatusSwitchovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When queried with index value apsChanConfigNumber other than + 0, this object will return the number of times this channel + has switched to the protection line. + + When queried with index value apsChanConfigNumber set to 0, + which is the protection line, this object will return the + number of times that any working channel has been switched + back to the working line from this protection line. + + 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 + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 4 } + +apsChanStatusLastSwitchover OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When queried with index value apsChanConfigNumber other than + 0, this object will return the value of sysUpTime when this + channel last completed a switch to the protection line. If + + + + + this channel has never switched to the protection line, the + value 0 will be returned. + + When queried with index value apsChanConfigNumber set to 0, + which is the protection line, this object will return the + value of sysUpTime the last time that a working channel was + switched back to the working line from this protection line. + If no working channel has ever switched back to the working + line from this protection line, the value 0 will be returned." + + ::= { apsChanStatusEntry 5 } + +apsChanStatusSwitchoverSeconds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative Protection Switching Duration (PSD) time in + seconds. For a working channel, this is the cumulative number + of seconds that service was carried on the protection line. + For the protection line, this is the cumulative number of + seconds that the protection line has been used to carry any + working channel traffic. This information is only valid if + revertive switching is enabled. The value 0 will be returned + otherwise. + + 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 + apsChanStatusDiscontinuityTime. For example, if the value + of an instance of apsChanStatusSwitchoverSeconds changes + from a non-zero value to zero due to revertive switching + being disabled, it is expected that the corresponding + value of apsChanStatusDiscontinuityTime will be updated + to reflect the time of the configuration change. + " + ::= { apsChanStatusEntry 6 } + +apsChanStatusDiscontinuityTime 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 channel's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this channel of any Counter32 + object contained in apsChanStatusTable. If no such + + + + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains + a zero value." + ::= { apsChanStatusEntry 7 } + +apsNotificationEnable OBJECT-TYPE + SYNTAX BITS { + switchover(0), + modeMismatch(1), + channelMismatch(2), + psbf(3), + feplf(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Provides the ability to enable and disable notifications + defined in this MIB. + + switchover + + Indicates apsEventSwitchover notifications + should be generated. + + modeMismatch + + Indicates apsEventModeMismatch notifications + should be generated. + + channelMismatch + + Indicates apsEventChannelMismatch notifications + should be generated. + + psbf + + Indicates apsEventPSBF notifications + should be generated. + + feplf + + Indicates apsEventFEPLF notifications + should be generated. " + DEFVAL { { } } + ::= { apsMIBObjects 7 } + +-- +-- APS EVENTS + + + +-- + +apsNotificationsPrefix OBJECT IDENTIFIER + ::= { apsMIBNotifications 0 } + +apsEventSwitchover NOTIFICATION-TYPE + OBJECTS { apsChanStatusSwitchovers, apsChanStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventSwitchover notification is sent when the + value of an instance of apsChanStatusSwitchovers increments." + ::= { apsNotificationsPrefix 1 } + +apsEventModeMismatch NOTIFICATION-TYPE + OBJECTS { apsStatusModeMismatches, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventModeMismatch notification is sent when the + value of an instance of apsStatusModeMismatches increments." + ::= { apsNotificationsPrefix 2 } + +apsEventChannelMismatch NOTIFICATION-TYPE + OBJECTS { apsStatusChannelMismatches, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventChannelMismatch notification is sent when the + value of an instance of apsStatusChannelMismatches increments." + ::= { apsNotificationsPrefix 3 } + +apsEventPSBF NOTIFICATION-TYPE + OBJECTS { apsStatusPSBFs, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventPSBF notification is sent when the + value of an instance of apsStatusPSBFs increments." + ::= { apsNotificationsPrefix 4 } + +apsEventFEPLF NOTIFICATION-TYPE + OBJECTS { apsStatusFEPLFs, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventFEPLFs notification is sent when the + value of an instance of apsStatusFEPLFs increments." + ::= { apsNotificationsPrefix 5 } + +-- conformance information + + + + + +apsGroups OBJECT IDENTIFIER ::= { apsMIBConformance 1 } +apsCompliances OBJECT IDENTIFIER ::= { apsMIBConformance 2 } + +apsFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for read-create, then + such an implementation can claim read/write compliance. Linear + APS groups can then be both monitored and configured with this + MIB. + + Note that An agent is not required to process SNMP Set Requests + that affect multiple control objects within this MIB. This is + intended to simplify the processing of Set Requests for the + various control tables by eliminating the possibility that a + single Set PDU will contain multiple varbinds which are in + conflict. " + + MODULE + MANDATORY-GROUPS { apsConfigGeneral, apsStatusGeneral, + apsChanGeneral } + + OBJECT apsConfigRowStatus + SYNTAX INTEGER { active(1) } + WRITE-SYNTAX INTEGER { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT apsChanConfigRowStatus + SYNTAX INTEGER { active(1) } + WRITE-SYNTAX INTEGER { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + GROUP apsConfigWtr + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups supporting a configurable + WTR period." + + GROUP apsCommandOnePlusOne + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + + + + APS 1+1 architecture and supporting set operations." + + GROUP apsCommandOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture and supporting set operations." + + GROUP apsChanOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture." + + GROUP apsTotalsGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsMapGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsEventGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + ::= { apsCompliances 1 } + +-- +-- Read-Only Compliance +-- + +apsReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read-create + (i.e. in read-only mode), then that implementation can claim + read-only compliance. In that case, linear APS groups can be + monitored but cannot be configured with this MIB." + + MODULE + MANDATORY-GROUPS { apsConfigGeneral, apsStatusGeneral, + apsChanGeneral } + + + + OBJECT apsConfigMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigRevert + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigDirection + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigExtraTraffic + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigSdBerThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigSfBerThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigWaitToRestore + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status + that needs to be supported." + + OBJECT apsConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigIfIndex + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status + that needs to be supported." + + OBJECT apsChanConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsNotificationEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP apsConfigWtr + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups supporting a configurable + WTR period." + + GROUP apsCommandOnePlusOne + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1+1 architecture and supporting set operations." + + GROUP apsCommandOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture and supporting set operations." + + GROUP apsChanOneToN + + + + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture." + + GROUP apsTotalsGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsMapGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsEventGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + ::= { apsCompliances 2 } + +-- units of conformance + +apsConfigGeneral OBJECT-GROUP + OBJECTS + { + apsConfigMode, + apsConfigRevert, + apsConfigDirection, + apsConfigExtraTraffic, + apsConfigSdBerThreshold, + apsConfigSfBerThreshold, + apsConfigCreationTime, + apsConfigRowStatus, + apsConfigStorageType, + apsNotificationEnable + } + STATUS current + DESCRIPTION + "A collection of apsConfigTable objects providing configuration + information applicable to all linear APS groups." + ::= { apsGroups 1 } + +apsConfigWtr OBJECT-GROUP + OBJECTS + { + + + + apsConfigWaitToRestore + } + STATUS current + DESCRIPTION + "The apsConfigTable object that provides information which is + applicable to groups supporting a configurable WTR period." + ::= { apsGroups 2 } + +-- If set operations are not supported neither of the following two +-- groups are implemented. If sets are supported only one of these +-- groups is implemented for a linear APS group instance. + +apsCommandOnePlusOne OBJECT-GROUP + OBJECTS + { + apsCommandSwitch + } + STATUS current + DESCRIPTION + "The apsCommandTable object which is applicable to groups + implementing the linear APS 1+1 architecture. Also, set + operations must be supported." + ::= { apsGroups 3 } + +apsCommandOneToN OBJECT-GROUP + OBJECTS + { + apsCommandSwitch, + apsCommandControl + } + STATUS current + DESCRIPTION + "A collection of apsCommandTable objects which are applicable to + groups implementing the linear APS 1:n architecture. Also, set + operations must be supported." + ::= { apsGroups 4 } + +apsStatusGeneral OBJECT-GROUP + OBJECTS + { + apsStatusK1K2Rcv, + apsStatusK1K2Trans, + apsStatusCurrent, + apsStatusModeMismatches, + apsStatusChannelMismatches, + apsStatusPSBFs, + apsStatusFEPLFs, + apsStatusSwitchedChannel, + + + + apsStatusDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of apsStatusTable objects providing status + information applicable to all linear APS groups." + ::= { apsGroups 5 } + +apsChanGeneral OBJECT-GROUP + OBJECTS + { + apsChanConfigIfIndex, + apsChanConfigRowStatus, + apsChanConfigStorageType, + apsChanStatusCurrent, + apsChanStatusSignalDegrades, + apsChanStatusSignalFailures, + apsChanStatusSwitchovers, + apsChanStatusLastSwitchover, + apsChanStatusSwitchoverSeconds, + apsChanStatusDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of channel objects providing information + applicable to all linear APS channels." + ::= { apsGroups 6 } + +apsChanOneToN OBJECT-GROUP + OBJECTS + { + apsChanConfigPriority + } + STATUS current + DESCRIPTION + "The apsChanConfigTable object that provides information which + is only applicable to groups implementing the linear APS 1:n + architecture." + ::= { apsGroups 7 } + +apsTotalsGroup OBJECT-GROUP + OBJECTS + { + apsConfigGroups, + apsChanLTEs + } + STATUS current + DESCRIPTION + + + + "A collection of objects providing optional counts of configured + APS groups and SONET LTE interfaces." + ::= { apsGroups 8 } + +apsMapGroup OBJECT-GROUP + OBJECTS + { + apsMapGroupName, + apsMapChanNumber + } + STATUS current + DESCRIPTION + "A collection of apsMapTable objects providing a mapping + from sonet(39) InterfaceIndex to group name and channel + number for assigned APS channels and a list of unassigned + sonet(39) interfaces." + ::= { apsGroups 9 } + +apsEventGroup NOTIFICATION-GROUP + NOTIFICATIONS {apsEventSwitchover, apsEventModeMismatch, + apsEventChannelMismatch, apsEventPSBF, + apsEventFEPLF } + STATUS current + DESCRIPTION + "A collection of SONET linear APS notifications." + ::= { apsGroups 10 } + +END diff --git a/mibs/ietf/ARC-MIB b/mibs/ietf/ARC-MIB new file mode 100644 index 0000000..66e5a63 --- /dev/null +++ b/mibs/ietf/ARC-MIB @@ -0,0 +1,423 @@ +ARC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ResourceId + FROM ALARM-MIB; -- [RFC3877] + +arcMibModule MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + E-mail: randy_presuhn@mindspring.com + + Editor: Hing-Kam Lam + Lucent Technologies, 4C-616 + 101 Crawfords Corner Road + + + + Holmdel, NJ 07733 + USA + Tel: +1 732 949 8338 + E-mail: hklam@lucent.com" + + DESCRIPTION + "The MIB module describes the objects for controlling a resource + in reporting alarm conditions that it detects. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3878; see the RFC + itself for full legal notices." + + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3878." + ::={ mib-2 117 } + +------------------ +-- TEXTUAL-CONVENTION +------------------ + +IANAItuProbableCauseOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC can take any value of IANAItuProbableCause or 0. + IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC + module, which is maintained at the IANA web site and + published in the Alarm MIB document (see RFC 3877)." + REFERENCE + "IANA-ITU-ALARM-TC MIB module as maintained at the IANA web site. + The initial module was also published in RFC 3877." +-- + SYNTAX INTEGER (0..2147483647) + +------------------ +-- MIB Objects +------------------ + +arcTimeIntervals OBJECT IDENTIFIER ::= { arcMibModule 1 } +arcObjects OBJECT IDENTIFIER ::= { arcMibModule 2 } + +arcTITimeInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This variable indicates the time interval used for the nalmTI + state, in units of second. It is a pre-defined length of time + in which the resource will stay in the nalmTI state before + transition into the alm state. + + Instances of this object SHOULD persist across agent restarts." + ::= { arcTimeIntervals 1 } + +arcCDTimeInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the time interval used for the nalmQICD + state, in units of second. It is a pre-defined length of time + in which the resource will stay in the nalmQICD state before + transition into the alm state after it is problem-free. + + Instances of this object SHOULD persist across agent restarts." + ::= { arcTimeIntervals 2 } + +arcTable OBJECT-TYPE + SYNTAX SEQUENCE OF ArcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Alarm Reporting Control (ARC) settings on the system. + + Alarm Reporting Control is a feature that provides an automatic + in-service provisioning capability. Alarm reporting is turned + off on a per-resource basis for a selective set of potential + alarm conditions to allow sufficient time for customer testing + and other maintenance activities in an 'alarm free' state. + Once a resource is ready for service, alarm reporting is + automatically or manually turned on. + + Functional description and requirements of Alarm Reporting + Control are defined in ITU-T Recommendation M.3100 Amendment 3 + [M.3100 Amd3]." + + REFERENCE + "ITU Recommendation M.3100 Amendment 3, 'Generic Network + Information Model', January 2001." + ::= { arcObjects 1 } + +arcEntry OBJECT-TYPE + SYNTAX ArcEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains information about an ARC setting + of a resource in the system. + + Implementation need to be aware that if the total size of + arcIndex and arcNotificationId exceeds 114 sub-IDs, then OIDs + of column instances in this table will have more than 128 + sub-IDs and cannot be access using SNMPv1, SNMPv2c, or snmpv3." + + INDEX { arcIndex, arcAlarmType, arcNotificationId } + ::= { arcTable 1 } + +ArcEntry ::= + SEQUENCE { + arcIndex ResourceId, + arcAlarmType IANAItuProbableCauseOrZero, + arcNotificationId OBJECT IDENTIFIER, + arcState INTEGER, + arcNalmTimeRemaining Unsigned32, + arcRowStatus RowStatus, + arcStorageType StorageType + } + +arcIndex OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a resource, which is under the + arcState's control for the associated arcAlarmType. + + For example, if the resource is an interface, this object will + point to an instance of interface, e.g., ifIndex.1." + ::= { arcEntry 1 } + +arcAlarmType OBJECT-TYPE + SYNTAX IANAItuProbableCauseOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the alarm condition type controlled by the + arcState. It specifies the value 0 or a value of + IANAItuProbableCause that is applicable to the resource. + IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC + module in the Alarm MIB document. + + + + + The value of zero (0) implies any probable causes that are + applicable to the resource. Usually, the applicable probable + causes of a resource are specified in the resource-specific mib." + ::= { arcEntry 2 } + +arcNotificationId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the type of notification to be suppressed. + The notification type identified should be the one normally used + by the resource for reporting its alarms. When the value of 0.0 is + specified for this object, it implies all applicable notification + types." + ::= { arcEntry 3 } + +arcState OBJECT-TYPE + SYNTAX INTEGER { + nalm (1), + nalmQI (2), + nalmTI (3), + nalmQICD (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defined in M.3100 Amendment 3 [M.3100 Amd3], there are five + ARC states: alm, nalm, nalmQI, nalmQICD, and nalmTI. + + alm: Alarm reporting is turned on (i.e., is allowed). + nalm: Alarm reporting is turned off (i.e., not allowed). + nalmQI: nalm - Qualified Inhibit. Alarm reporting is + turned off until the managed entity is qualified + problem-free for an optional persistence interval. + Problem-free means that the condition corresponding + to the specified alarm type is cleared. + nalmQICD: nalmQI - Count down. This is a substate of nalmQI + and performs the persistence timing countdown + function after the managed entity is qualified + problem-free. + nalmTI: nalm - Timed Inhibit. Alarm reporting is turned + off for a specified time interval. + + alm may transition to nalm, nalmQI or nalmTI by management request. + + nalm may transition to alm, nalmQI or nalmTI by management request. + + + + + nalmQI may transition to nalm or alm by management request. + + nalmQI may transition to alm automatically + if qualified problem-free (if nalmQICD is not supported) or + if the CD timer expired (if nalmQICD is supported) + + nalmTI may transition to alm or nalm by management request. + + nalmTI may transition to alm automatically if the TI timer expired. + + Further details of ARC state transitions are defined in Figure 3 + of M.3100 Amd3 [M.3100 Amd3]. + + According to the requirements in M.3100 Amd3, a resource + supporting the ARC feature shall support the alm state and at + least one of the nalm, nalmTI, and nalmQI states. The nalmQICD + state is an optional substate of nalmQI. + + The arcState object controls the alarm reporting state of a + resource. Note that the state alm (alarm reporting is allowed) is + not listed in the enumeration of the value of this object. However, + this state is implicitly supported by the mib. + Once a resource enters the normal reporting mode (i.e., in the alm + state) for the specified alarm type, the corresponding + row will be automatically deleted from the arc table. + Also the manual setting of arcState to alm can be achieved through + setting the RowStatus object to 'destroy'. + + The nalamQICD state is a transitional state from nalmQI to alm. It + is optional depending on the resource type and the implementation + of the resource. If it is supported, before the state + transitions from nalmQI to alm, a count down period is activated + for a duration set by the object arcNalmCDTimeInterval. When the + time is up, the arcState transitions to alm." + + ::= { arcEntry 4 } + +arcNalmTimeRemaining OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the time remaining in the nalmTI state + or the nalmQICD state, in units of second. + + At the moment the resource enters the nalmTI state, this variable + will have the initial value equal to the value of + + + + arcNalmTITimeInterval and then starts decrementing as time goes by. + + Similarly at the moment the resource enters the nalmQICD state, + this variable will have the initial value equal to the value of + arcNalmCDTimeInterval and then starts decrementing as time goes by. + + This variable is read-create and thus will allow the manager to + write (extend or shorten), as needed, the remaining time when the + resource is in the nalmTI or nalmQICD state. + + If this variable is supported and the resource is currently not in + the nalmTI nor nalmQICD state, the value of this variable shall + equal to zero." + ::= { arcEntry 5 } + +arcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a conceptual + row of the arcTable. It is used to create and delete an arc + setting. + + Setting RowStatus to createAndGo or createAndWait implies creating + a new ARC setting for the specified resource and alarm type. + Setting RowStatus to destroy implies removing the ARC setting and + thus has the effect of resuming normal reporting behaviour of the + resource for the alarm type. + + Only the objects arcState, arcNalmTimeRemaining, and arcRowStatus + can be updated when a row is active. All the objects, except + arcNalmTimeRemaining, must be set before the row can be activated." + ::= { arcEntry 6 } + +arcStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to arcState. + Note that arcState must allow change by management request. + Therefore, no row can be created with 'readOnly'. + If a set operation tries to set the value to 'readOnly', + then an 'inconsistentValue' error must be returned." + DEFVAL { nonVolatile } + + + + ::= { arcEntry 7} + +-------------------------- +-- conformance information +-------------------------- + +arcConformance OBJECT IDENTIFIER ::= { arcMibModule 3 } + +arcCompliances OBJECT IDENTIFIER ::= { arcConformance 1 } + +arcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the ARC MIB module." + + MODULE -- this module + MANDATORY-GROUPS { + arcSettingGroup + } + + OBJECT arcStorageType + WRITE-SYNTAX StorageType { + volatile(2), + nonVolatile(3), + permanent(4) + } + DESCRIPTION + "Support for value 'other' is not required. + The arcState object must allow change by management + request. Therefore, no row can be created with + 'readOnly'." + + GROUP arcTIGroup + DESCRIPTION + "This group is REQUIRED for ARC settings + that provide the Time Inhibit (TI) function." + + GROUP arcQICDGroup + DESCRIPTION + "This group is REQUIRED for ARC settings + that provide the Quality Inhibit (QI) Count Down (CD) + function." + + ::= { arcCompliances 1 } + +arcGroups OBJECT IDENTIFIER ::= { arcConformance 2 } + + + + +arcSettingGroup OBJECT-GROUP + OBJECTS { + arcState, + arcRowStatus, + arcStorageType + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + basic ARC setting." + ::= { arcGroups 1} + +arcTIGroup OBJECT-GROUP + OBJECTS { + arcTITimeInterval, + arcNalmTimeRemaining + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + ARC setting that support the Time Inhibit (TI) + function." + ::= { arcGroups 2} + +arcQICDGroup OBJECT-GROUP + OBJECTS { + arcCDTimeInterval, + arcNalmTimeRemaining + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + ARC setting that support the Quality Inhibit (QI) + Count Down (CD) function." + ::= { arcGroups 3} + +END diff --git a/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB b/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB new file mode 100644 index 0000000..ecadae9 --- /dev/null +++ b/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB @@ -0,0 +1,404 @@ +ATM-ACCOUNTING-INFORMATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + mib-2, Integer32, Counter64 FROM SNMPv2-SMI + DisplayString, DateAndTime FROM SNMPv2-TC + AtmAddr FROM ATM-TC-MIB; + + +atmAccountingInformationMIB MODULE-IDENTITY + LAST-UPDATED "9611052000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for identifying items of accounting + information which are applicable to ATM connections." + ::= { mib-2 59 } + + +atmAcctngMIBObjects OBJECT IDENTIFIER ::= + { atmAccountingInformationMIB 1 } + + +-- Definitions of objects for use in specifying ATM accounting +-- data to be collected + +atmAcctngDataObjects OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identifier defines a subtree under which various + objects are defined such that a set of objects to be + collected as ATM accounting data can be specified as a + (subtree, list) tuple using this identifier as the subtree." + ::= { atmAcctngMIBObjects 1 } + +-- Objects defined under the atmAcctngDataObjects subtree +-- +-- In each case the semantics of the object are interpreted with +-- respect to the creation/storage of an accounting record for a +-- particular connection on a particular interface. + +atmAcctngConnectionType OBJECT-TYPE + SYNTAX INTEGER { pvc(1), + pvp(2), + svcIncoming(3), + svcOutgoing(4), + svpIncoming(5), + svpOutgoing(6), + spvcInitiator(7), + spvcTarget(8), + spvpInitiator(9), + spvpTarget(10) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of connection." + ::= { atmAcctngDataObjects 1 } + +atmAcctngCastType OBJECT-TYPE + SYNTAX INTEGER { p2p(1), p2mp(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An indication of whether the connection is point-to-point + or point-to-multipoint." + ::= { atmAcctngDataObjects 2 } + +atmAcctngIfName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the interface on which the data for the + connection was collected. If the local SNMP agent supports + the object ifName, the value of this object must be + identical to that of ifName in the conceptual row of the + ifTable corresponding to this interface." + ::= { atmAcctngDataObjects 3 } + +atmAcctngIfAlias OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 'alias' name for the interface as specified by a + network manager, e.g., via a management set operation to + modify the relevant instance of the ifAlias object. Note + that in contrast to ifIndex, ifAlias provides a non-volatile + 'handle' for the interface, the value of which is retained + across agent reboots." + ::= { atmAcctngDataObjects 4 } + +atmAcctngVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI used for the connection." + ::= { atmAcctngDataObjects 5 } + +atmAcctngVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI used for the connection." + ::= { atmAcctngDataObjects 6 } + +atmAcctngCallingParty OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's calling party. If unknown (e.g., for a + PVC), then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 7 } + +atmAcctngCalledParty OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's called party. If unknown (e.g., for a + PVC), then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 8 } + +atmAcctngCallReference OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..3)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's call reference value (e.g., from Q.2931). + If unknown (e.g., for a PVC), then the value of this object + is the zero-length string." + ::= { atmAcctngDataObjects 9 } + +atmAcctngStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time when the connection was established." + ::= { atmAcctngDataObjects 10 } + +atmAcctngCollectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time at which the data in this record was collected." + ::= { atmAcctngDataObjects 11 } + +atmAcctngCollectMode OBJECT-TYPE + SYNTAX INTEGER { onRelease(1), + periodically(2), + onCommand(3) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reason why this connection data was collected." + ::= { atmAcctngDataObjects 12 } + +atmAcctngReleaseCause OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the connection data was collected because of the release + of an SVC, then this is the cause code in the Release + message for the connection; otherwise, this object has the + value zero." + ::= { atmAcctngDataObjects 13 } + +atmAcctngServiceCategory OBJECT-TYPE + SYNTAX INTEGER { other(1), cbr(2), vbrRt(3), vbrNrt(4), + abr(5), ubr(6), unknown(7) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's service category." + ::= { atmAcctngDataObjects 14 } + +atmAcctngTransmittedCells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells, including OAM cells, transmitted by + this switch on this connection." + ::= { atmAcctngDataObjects 15 } + +atmAcctngTransmittedClp0Cells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells with CLP=0, including OAM cells, + transmitted by this switch on this connection." + ::= { atmAcctngDataObjects 16 } + +atmAcctngReceivedCells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells, including OAM cells, received by this + switch on this connection." + ::= { atmAcctngDataObjects 17 } + +atmAcctngReceivedClp0Cells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells with CLP=0, including OAM cells, + received by this switch on this connection." + ::= { atmAcctngDataObjects 18 } + +atmAcctngTransmitTrafficDescriptorType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The traffic descriptor type (as defined in RFC 1695 and its + successors) in the direction in which the switch transmits + cells on the connection." + REFERENCE + "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and + its successors." + ::= { atmAcctngDataObjects 19 } + +atmAcctngTransmitTrafficDescriptorParam1 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 20 } + +atmAcctngTransmitTrafficDescriptorParam2 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The second traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 21 } + +atmAcctngTransmitTrafficDescriptorParam3 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The third traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 22 } + +atmAcctngTransmitTrafficDescriptorParam4 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fourth traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 23 } + +atmAcctngTransmitTrafficDescriptorParam5 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fifth traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 24 } + +atmAcctngReceiveTrafficDescriptorType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The traffic descriptor type (as defined in RFC 1695 and its + successors) in the direction in which this switch receives + cells on this connection." + REFERENCE + "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and + its successors." + ::= { atmAcctngDataObjects 25 } + +atmAcctngReceiveTrafficDescriptorParam1 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 26 } + +atmAcctngReceiveTrafficDescriptorParam2 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The second traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 27 } + +atmAcctngReceiveTrafficDescriptorParam3 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The third traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 28 } + +atmAcctngReceiveTrafficDescriptorParam4 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fourth traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 29 } + +atmAcctngReceiveTrafficDescriptorParam5 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fifth traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 30 } + +atmAcctngCallingPartySubAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's calling party sub-address. If the + connection has no calling party sub-address, or it's value + is unknown, then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 31 } + +atmAcctngCalledPartySubAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's called party sub-address. If the + connection has no called party sub-address, or it's value is + unknown, then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 32 } + +atmAcctngRecordCrc16 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the CRC-16 checksum (as defined by ISO 3309 + (HDLC) and/or ITU X.25) calculated over the accounting + record containing this object. + + While the mechanism for calculating/encoding the checksum + value is specific to the method of encoding the accounting + record, an accounting record containing this object is + typically generated by initializing the value of this object + to the all-zeros string ('0000'H), with the location of + these zeros being saved. After generating the record, the + checksum is calculated over the whole connection record and + then the all-zeros value is overwritten (at the saved + location) by the calculated value of the checksum." + ::= { atmAcctngDataObjects 33 } +END diff --git a/mibs/ietf/ATM-MIB b/mibs/ietf/ATM-MIB new file mode 100644 index 0000000..c5b84f1 --- /dev/null +++ b/mibs/ietf/ATM-MIB @@ -0,0 +1,3020 @@ +ATM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, IpAddress, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndex, ifIndex + FROM IF-MIB + AtmAddr, AtmConnKind, AtmConnCastType, + AtmServiceCategory, AtmTrafficDescrParamIndex, + AtmVpIdentifier, AtmVcIdentifier, + AtmVorXAdminStatus, AtmVorXLastChange, + AtmVorXOperStatus, atmNoClpNoScr + FROM ATM-TC-MIB; + + +atmMIB MODULE-IDENTITY + LAST-UPDATED "9810191200Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + " Kaj Tesink + Postal: Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + Tel: 732-758-5254 + Fax: 732-758-2269 + E-mail: kaj@bellcore.com" + DESCRIPTION + "This is the MIB Module for ATM and AAL5-related + objects for managing ATM interfaces, ATM virtual + links, ATM cross-connects, AAL5 entities, and + and AAL5 connections." + REVISION "9810191200Z" + DESCRIPTION + "The initial revision of this module was published + as RFC 1695. Key revisions include: + o Textual Conventions and OBJECT IDENTITIES have + been moved to a separate MIB module. + o Applicability of objects to PVCs, SVCs and Soft + PVCs has been clarified. + o DEFVAL clauses have been added. + o The relationship of ifIndex values with different + layers and sublayers related to ATM has been + clarified. + o atmTrafficQosClass has been deprecated + and replaced with atmServiceCategory. + o atmInterfaceCurrentMaxVpiBits and + atmInterfaceCurrentMaxVciBits have been added with + a description on their relationship with other + objects. + o atmInterfaceAddressType and atmInterfaceAdminAddress + have been deprecated and replaced by + atmInterfaceSubscrAddress. + o atmInterfaceTCAlarmState has been clarified. + o atmTrafficDescrParamIndexNext has been introduced + in order to provide a manager a free + atmTrafficDescrParamIndex value. + o The atmTrafficFrameDiscard capability has been added. + o A connection topology type (atmVpl/VclCastType) and + a call control type (atmVpl/VclConnKind) have been + added. + o aal2 has been added to atmVccAalType." + REVISION "9406072245Z" + DESCRIPTION + "The RFC1695 version of this MIB module." + ::= { mib-2 37 } + + +atmMIBObjects OBJECT IDENTIFIER ::= {atmMIB 1} + +-- {atmMIBObjects 1} has been moved to a separate +-- specification [19]. + + +-- This ATM MIB Module consists of the following tables: +-- (1) ATM Interface configuration table +-- (2) ATM Interface DS3 PLCP table +-- (3) ATM Interface TC Sublayer table + +-- (4) Atm Traffic Descriptor table +-- (5) ATM Interface VPL configuration table +-- (6) ATM Interface VCL configuration table +-- (7) ATM VP Cross Connect table (for PVCs) +-- (8) ATM VC Cross Connect table (for PVCs) +-- (9) ATM Interface AAL5 VCC performance statistics +-- table + +-- ATM Interface Configuration Parameters Table + +-- This table contains ATM specific +-- configuration information associated with +-- an ATM interface beyond those +-- supported using the ifTable. + + + + +atmInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM local interface + configuration parameters, one entry per ATM + interface port." + ::= { atmMIBObjects 2 } + +atmInterfaceConfEntry OBJECT-TYPE + SYNTAX AtmInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains ATM interface configuration + parameters and state variables and is indexed + by ifIndex values of ATM interfaces." + INDEX { ifIndex } + ::= { atmInterfaceConfTable 1} + +AtmInterfaceConfEntry ::= SEQUENCE { + atmInterfaceMaxVpcs INTEGER, + atmInterfaceMaxVccs INTEGER, + atmInterfaceConfVpcs INTEGER, + atmInterfaceConfVccs INTEGER, + atmInterfaceMaxActiveVpiBits INTEGER, + atmInterfaceMaxActiveVciBits INTEGER, + atmInterfaceIlmiVpi AtmVpIdentifier, + atmInterfaceIlmiVci AtmVcIdentifier, + atmInterfaceAddressType INTEGER, + atmInterfaceAdminAddress AtmAddr, + atmInterfaceMyNeighborIpAddress IpAddress, + atmInterfaceMyNeighborIfName DisplayString, + atmInterfaceCurrentMaxVpiBits INTEGER, + atmInterfaceCurrentMaxVciBits INTEGER, + atmInterfaceSubscrAddress AtmAddr + } + + +atmInterfaceMaxVpcs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of VPCs (PVPCs and SVPCs) + supported at this ATM interface. At the ATM UNI, + the maximum number of VPCs (PVPCs and SVPCs) + ranges from 0 to 256 only." + ::= { atmInterfaceConfEntry 1} + +atmInterfaceMaxVccs OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of VCCs (PVCCs and SVCCs) + supported at this ATM interface." + ::= { atmInterfaceConfEntry 2} + +atmInterfaceConfVpcs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VPCs (PVPC, Soft PVPC and SVPC) + currently in use at this ATM interface. It includes + the number of PVPCs and Soft PVPCs that are configured + at the interface, plus the number of SVPCs + that are currently established at the + interface. + + At the ATM UNI, the configured number of + VPCs (PVPCs and SVPCs) can range from + 0 to 256 only." + ::= { atmInterfaceConfEntry 3} + +atmInterfaceConfVccs OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VCCs (PVCC, Soft PVCC and SVCC) + currently in use at this ATM interface. It includes + the number of PVCCs and Soft PVCCs that are configured + at the interface, plus the number of SVCCs + that are currently established at the + interface." + ::= { atmInterfaceConfEntry 4} + +atmInterfaceMaxActiveVpiBits OBJECT-TYPE + SYNTAX INTEGER (0..12) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of active VPI bits + configured for use at the ATM interface. + At the ATM UNI, the maximum number of active + VPI bits configured for use ranges from + 0 to 8 only." + ::= { atmInterfaceConfEntry 5} + +atmInterfaceMaxActiveVciBits OBJECT-TYPE + SYNTAX INTEGER (0..16) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of active VCI bits + configured for use at this ATM interface." + ::= { atmInterfaceConfEntry 6} + +atmInterfaceIlmiVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The VPI value of the VCC supporting + the ILMI at this ATM interface. If the values of + atmInterfaceIlmiVpi and atmInterfaceIlmiVci are + both equal to zero then the ILMI is not + supported at this ATM interface." + DEFVAL { 0 } + ::= { atmInterfaceConfEntry 7} + +atmInterfaceIlmiVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The VCI value of the VCC supporting + the ILMI at this ATM interface. If the values of + atmInterfaceIlmiVpi and atmInterfaceIlmiVci are + both equal to zero then the ILMI is not + supported at this ATM interface." + DEFVAL { 16 } + ::= { atmInterfaceConfEntry 8} + +atmInterfaceAddressType OBJECT-TYPE + SYNTAX INTEGER { + private(1), + nsapE164(2), + nativeE164(3), + other(4) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The type of primary ATM address configured + for use at this ATM interface." + ::= { atmInterfaceConfEntry 9 } + +-- The atmInterfaceAdminAddress object has been replaced by +-- atmInterfaceSubscrAddress. + +atmInterfaceAdminAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The primary address assigned for administrative purposes, + for example, an address associated with the + service provider side of a public network UNI + (thus, the value of this address corresponds + with the value of ifPhysAddress at the host side). + If this interface has no assigned administrative + address, or when the address used for + administrative purposes is the same as that used + for ifPhysAddress, then this is an octet string of + zero length." + ::= { atmInterfaceConfEntry 10 } + +atmInterfaceMyNeighborIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the neighbor system connected to + the far end of this interface, to which a Network + Management Station can send SNMP messages, as IP + datagrams sent to UDP port 161, in order to access + network management information concerning the + operation of that system. Note that the value + of this object may be obtained in different ways, + e.g., by manual configuration, or through ILMI + interaction with the neighbor system." + ::= { atmInterfaceConfEntry 11 } + +atmInterfaceMyNeighborIfName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual name of the interface on the neighbor + system on the far end of this interface, and to + which this interface connects. If the neighbor + system is manageable through SNMP and supports + the object ifName, the value of this object must + be identical with that of ifName for the ifEntry + of the lowest level physical interface + for this port. If this interface does not have a + textual name, the value of this object is a zero + length string. Note that the value of this object + may be obtained in different ways, e.g., by manual + configuration, or through ILMI interaction with + the neighbor system." + ::= { atmInterfaceConfEntry 12 } + +atmInterfaceCurrentMaxVpiBits OBJECT-TYPE + SYNTAX INTEGER (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of VPI Bits that may + currently be used at this ATM interface. + The value is the minimum of + atmInterfaceMaxActiveVpiBits, and the + atmInterfaceMaxActiveVpiBits of the interface's + UNI/NNI peer. + + If the interface does not negotiate with + its peer to determine the number of VPI Bits + that can be used on the interface, then the + value of this object must equal + atmInterfaceMaxActiveVpiBits." + ::= { atmInterfaceConfEntry 13 } + +atmInterfaceCurrentMaxVciBits OBJECT-TYPE + SYNTAX INTEGER (0..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of VCI Bits that may + currently be used at this ATM interface. + The value is the minimum of + atmInterfaceMaxActiveVciBits, and the + atmInterfaceMaxActiveVciBits of the interface's + UNI/NNI peer. + + If the interface does not negotiate with + its peer to determine the number of VCI Bits + that can be used on the interface, then the + value of this object must equal + atmInterfaceMaxActiveVciBits." + ::= { atmInterfaceConfEntry 14 } + +atmInterfaceSubscrAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The identifier assigned by a service provider + to the network side of a public network UNI. + If this interface has no assigned service provider + address, or for other interfaces this is an octet string + of zero length." + ::= { atmInterfaceConfEntry 15 } + +-- The ATM Interface DS3 PLCP Table + +-- This table contains the DS3 PLCP configuration and +-- state parameters of those ATM interfaces +-- which use DS3 PLCP for carrying ATM cells over DS3. + +atmInterfaceDs3PlcpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceDs3PlcpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface DS3 PLCP + parameters and state variables, one entry per + ATM interface port." + ::= { atmMIBObjects 3} + +atmInterfaceDs3PlcpEntry OBJECT-TYPE + SYNTAX AtmInterfaceDs3PlcpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains DS3 PLCP parameters and + state variables at the ATM interface and is + indexed by the ifIndex value of the ATM interface." + INDEX { ifIndex } + ::= { atmInterfaceDs3PlcpTable 1} + +AtmInterfaceDs3PlcpEntry ::= SEQUENCE { + atmInterfaceDs3PlcpSEFSs Counter32, + atmInterfaceDs3PlcpAlarmState INTEGER, + atmInterfaceDs3PlcpUASs Counter32 + } + + +atmInterfaceDs3PlcpSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of DS3 PLCP Severely Errored Framing + Seconds (SEFS). Each SEFS represents a + one-second interval which contains + one or more SEF events." + ::= { atmInterfaceDs3PlcpEntry 1} + +atmInterfaceDs3PlcpAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm(1), + receivedFarEndAlarm(2), + incomingLOF(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an + alarm present for the DS3 PLCP. The value + receivedFarEndAlarm means that the DS3 PLCP + has received an incoming Yellow + Signal, the value incomingLOF means that + the DS3 PLCP has declared a loss of frame (LOF) + failure condition, and the value noAlarm + means that there are no alarms present. + Transition from the failure to the no alarm state + occurs when no defects (e.g., LOF) are received + for more than 10 seconds." + ::= { atmInterfaceDs3PlcpEntry 2} + +atmInterfaceDs3PlcpUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds encountered by the PLCP." + ::= { atmInterfaceDs3PlcpEntry 3} + + +-- The ATM Interface TC Sublayer Table + +-- This table contains TC sublayer configuration and +-- state parameters of those ATM interfaces +-- which use TC sublayer for carrying ATM cells over +-- SONET/SDH or DS3. + + +atmInterfaceTCTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceTCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface TC + Sublayer parameters and state variables, + one entry per ATM interface port." + ::= { atmMIBObjects 4} + +atmInterfaceTCEntry OBJECT-TYPE + SYNTAX AtmInterfaceTCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains TC Sublayer parameters + and state variables at the ATM interface and is + indexed by the ifIndex value of the ATM interface." + INDEX {ifIndex } + ::= { atmInterfaceTCTable 1} + +AtmInterfaceTCEntry ::= SEQUENCE { + atmInterfaceOCDEvents Counter32, + atmInterfaceTCAlarmState INTEGER + } + +atmInterfaceOCDEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the Out of Cell + Delineation (OCD) events occur. If seven + consecutive ATM cells have Header Error + Control (HEC) violations, an OCD event occurs. + A high number of OCD events may indicate a + problem with the TC Sublayer." + ::= { atmInterfaceTCEntry 1} + + +atmInterfaceTCAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm(1), + lcdFailure(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an + alarm present for the TC Sublayer. The value + lcdFailure(2) indicates that the TC Sublayer + is currently in the Loss of Cell Delineation + (LCD) defect maintenance state. The value + noAlarm(1) indicates that the TC Sublayer + is currently not in the LCD defect + maintenance state." + ::= { atmInterfaceTCEntry 2} + +-- ATM Traffic Descriptor Parameter Table + +-- This table contains a set of self-consistent +-- ATM traffic parameters including the +-- ATM traffic service category. + +-- The ATM virtual link tables (i.e., VPL and VCL tables) +-- will use this ATM Traffic Descriptor table +-- to assign traffic parameters and service category +-- to the receive and transmit directions of +-- the ATM virtual links (i.e., VPLs and VCLs). +-- The ATM VPL or VCL table will indicate a row +-- in the atmTrafficDescrParamTable +-- using its atmTrafficDescrParamIndex value. + +-- The management application can then compare a set of +-- ATM traffic parameters with a single value. + +-- If no suitable row(s) in the atmTrafficDescrParamTable +-- exists, the manager must create a new row(s) in this +-- table. If such a row is created, agent checks the +-- sanity of that set of ATM traffic parameter values. + +-- The manager may use atmTrafficDescrParamIndexNext +-- in order to obtain a free atmTrafficDescrParamIndex +-- value. + +-- When creating a new row, the parameter values +-- will be checked for self-consistency. +-- Predefined/template rows may be supported. + +-- A row in the atmTrafficDescrParamTable is deleted +-- by setting the atmTrafficDescrRowStatus to destroy(6). +-- The agent will check whether this row is still in use +-- by any entry of the atmVplTable or atmVclTable. +-- The agent denies the request if the row is still in +-- use. + +-- The ATM Traffic Descriptor Parameter Table + + +atmTrafficDescrParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmTrafficDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on ATM traffic + descriptor type and the associated parameters." + ::= { atmMIBObjects 5} + +atmTrafficDescrParamEntry OBJECT-TYPE + SYNTAX AtmTrafficDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains ATM traffic descriptor + type and the associated parameters." + INDEX {atmTrafficDescrParamIndex} + ::= { atmTrafficDescrParamTable 1} + +AtmTrafficDescrParamEntry ::= SEQUENCE { + atmTrafficDescrParamIndex AtmTrafficDescrParamIndex, + atmTrafficDescrType OBJECT IDENTIFIER, + atmTrafficDescrParam1 Integer32, + atmTrafficDescrParam2 Integer32, + atmTrafficDescrParam3 Integer32, + atmTrafficDescrParam4 Integer32, + atmTrafficDescrParam5 Integer32, + atmTrafficQoSClass INTEGER, + atmTrafficDescrRowStatus RowStatus, + atmServiceCategory AtmServiceCategory, + atmTrafficFrameDiscard TruthValue + } + +atmTrafficDescrParamIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the virtual link + table (i.e., VPL or VCL table) + to identify the row of this table. + When creating a new row in the table + the value of this index may be obtained + by retrieving the value of + atmTrafficDescrParamIndexNext." + ::= { atmTrafficDescrParamEntry 1} + +atmTrafficDescrType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the type + of ATM traffic descriptor. + The type may indicate no traffic descriptor or + traffic descriptor with one or more parameters. + These parameters are specified as a parameter + vector, in the corresponding instances of the + objects: + atmTrafficDescrParam1 + atmTrafficDescrParam2 + atmTrafficDescrParam3 + atmTrafficDescrParam4 + atmTrafficDescrParam5." + DEFVAL { atmNoClpNoScr } + ::= { atmTrafficDescrParamEntry 2} + +atmTrafficDescrParam1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 3} + +atmTrafficDescrParam2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The second parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 4} + +atmTrafficDescrParam3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The third parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 5} + +atmTrafficDescrParam4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The fourth parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 6} + +atmTrafficDescrParam5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The fifth parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 7} + +atmTrafficQoSClass OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The value of this object identifies the QoS Class. + Four Service classes have been + specified in the ATM Forum UNI Specification: + Service Class A: Constant bit rate video and + Circuit emulation + Service Class B: Variable bit rate video/audio + Service Class C: Connection-oriented data + Service Class D: Connectionless data + Four QoS classes numbered 1, 2, 3, and 4 have + been specified with the aim to support service + classes A, B, C, and D respectively. + An unspecified QoS Class numbered `0' is used + for best effort traffic." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 8} + +atmTrafficDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create + a new row or modify or delete an + existing row in this table." + DEFVAL { active } + ::= {atmTrafficDescrParamEntry 9} + +atmServiceCategory OBJECT-TYPE + SYNTAX AtmServiceCategory + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM service category." + DEFVAL { ubr } + ::= { atmTrafficDescrParamEntry 10} + + +atmTrafficFrameDiscard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If set to 'true', this object indicates that the network + is requested to treat data for this connection, in the + given direction, as frames (e.g. AAL5 CPCS_PDU's) rather + than as individual cells. While the precise + implementation is network-specific, this treatment may + for example involve discarding entire frames during + congestion, rather than a few cells from many frames." + DEFVAL { true } + ::= { atmTrafficDescrParamEntry 11 } + +-- ATM Interface Virtual Path Link (VPL) Table + +-- This table contains configuration and state +-- information of a bi-directional Virtual Path Link +-- (VPL) + +-- This table can be used to create, delete or modify +-- a VPL that is terminated in an ATM host or switch. +-- This table can also be used to create, delete or +-- modify a VPL which is cross-connected to another +-- VPL. + +-- In the example below, the traffic flows on the receive +-- and transmit directions of the VPLs are characterized +-- by atmVplReceiveTrafficDescrIndex and +-- atmVplTransmitTrafficDescrIndex respectively. +-- The cross-connected VPLs are identified by +-- atmVplCrossConnectIdentifier. + + + +-- ________________________________ +-- | | +-- VPL | ATM Host, Switch, or Network | VPL +-- receive | | receive +-- ========> X X <======= +-- <======== X X ========> +-- transmit | | transmit +-- |______________________________| + + + +-- The ATM Interface VPL Table + +atmVplTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Virtual Path Link (VPL) table. A + bi-directional VPL is modeled as one entry + in this table. This table can be used for + PVCs, SVCs and Soft PVCs. + Entries are not present in this table for + the VPIs used by entries in the atmVclTable." + ::= { atmMIBObjects 6} + +atmVplEntry OBJECT-TYPE + SYNTAX AtmVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the VPL table. This entry is + used to model a bi-directional VPL. + To create a VPL at an ATM interface, + either of the following procedures are used: + + Negotiated VPL establishment + + (1) The management application creates + a VPL entry in the atmVplTable + by setting atmVplRowStatus to createAndWait(5). + This may fail for the following reasons: + - The selected VPI value is unavailable, + - The selected VPI value is in use. + Otherwise, the agent creates a row and + reserves the VPI value on that port. + + (2) The manager selects an existing row(s) in the + atmTrafficDescrParamTable, + thereby, selecting a set of self-consistent + ATM traffic parameters and the service category + for receive and transmit directions of the VPL. + + (2a) If no suitable row(s) in the + atmTrafficDescrParamTable exists, + the manager must create a new row(s) + in that table. + + (2b) The manager characterizes the VPL's traffic + parameters through setting the + atmVplReceiveTrafficDescrIndex and the + atmVplTransmitTrafficDescrIndex values + in the VPL table, which point to the rows + containing desired ATM traffic parameter values + in the atmTrafficDescrParamTable. The agent + will check the availability of resources and + may refuse the request. + If the transmit and receive service categories + are inconsistent, the agent should refuse the + request. + + (3) The manager activates the VPL by setting the + the atmVplRowStatus to active(1). + If this set is successful, the agent has + reserved the resources to satisfy the requested + traffic parameter values and the service category + for that VPL. + + (4) If the VPL terminates a VPC in the ATM host + or switch, the manager turns on the + atmVplAdminStatus to up(1) to turn the VPL + traffic flow on. Otherwise, the + atmVpCrossConnectTable must be used + to cross-connect the VPL to another VPL(s) + in an ATM switch or network. + + One-Shot VPL Establishment + + A VPL may also be established in one step by a + set-request with all necessary VPL parameter + values and atmVplRowStatus set to createAndGo(4). + + In contrast to the negotiated VPL establishment + which allows for detailed error checking + (i.e., set errors are explicitly linked to + particular resource acquisition failures), + the one-shot VPL establishment + performs the setup on one operation but + does not have the advantage of step-wise + error checking. + + VPL Retirement + + A VPL is released by setting atmVplRowStatus to + destroy(6), and the agent may release all + associated resources." + INDEX {ifIndex, atmVplVpi } + ::= { atmVplTable 1} + +AtmVplEntry ::= SEQUENCE { + atmVplVpi AtmVpIdentifier, + atmVplAdminStatus AtmVorXAdminStatus, + atmVplOperStatus AtmVorXOperStatus, + atmVplLastChange AtmVorXLastChange, + atmVplReceiveTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVplTransmitTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVplCrossConnectIdentifier INTEGER, + atmVplRowStatus RowStatus, + atmVplCastType AtmConnCastType, + atmVplConnKind AtmConnKind + } + + +atmVplVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VPL." + ::= { atmVplEntry 1} + +atmVplAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is instanciated only for a VPL + which terminates a VPC (i.e., one which is + NOT cross-connected to other VPLs). + Its value specifies the desired + administrative state of the VPL." + DEFVAL { down } + ::= { atmVplEntry 2} + +atmVplOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the VPL." + ::= { atmVplEntry 3} + +atmVplLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VPL entered its current operational state." + ::= { atmVplEntry 4 } + +atmVplReceiveTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the atmTrafficDescrParamTable which + applies to the receive direction of the VPL." + DEFVAL { 0 } + ::= { atmVplEntry 5} + +atmVplTransmitTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the atmTrafficDescrParamTable which + applies to the transmit direction of the VPL." + DEFVAL { 0 } + ::= { atmVplEntry 6} + +atmVplCrossConnectIdentifier OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is instantiated only for a VPL + which is cross-connected to other VPLs + that belong to the same VPC. All such + associated VPLs have the same value of this + object, and all their cross-connections are + identified either by entries that are indexed + by the same value of atmVpCrossConnectIndex in + the atmVpCrossConnectTable of this MIB module or by + the same value of the cross-connect index in + the cross-connect table for SVCs and Soft PVCs + (defined in a separate MIB module). + At no time should entries in these respective + cross-connect tables exist simultaneously + with the same cross-connect index value. + The value of this object is initialized by the + agent after the associated entries in the + atmVpCrossConnectTable have been created." + ::= {atmVplEntry 7} + +atmVplRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create, delete + or modify a row in this table. + To create a new VCL, this object is + initially set to 'createAndWait' or + 'createAndGo'. This object should not be + set to 'active' unless the following columnar + objects have been set to their desired value + in this row: + atmVplReceiveTrafficDescrIndex and + atmVplTransmitTrafficDescrIndex. + The DESCRIPTION of atmVplEntry provides + further guidance to row treatment in this table." + DEFVAL { createAndWait } + ::= {atmVplEntry 8} + +atmVplCastType OBJECT-TYPE + SYNTAX AtmConnCastType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection topology type." + DEFVAL { p2p } + ::= {atmVplEntry 9} + +atmVplConnKind OBJECT-TYPE + SYNTAX AtmConnKind + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The use of call control." + DEFVAL { pvc } + ::= {atmVplEntry 10} + +-- ATM Interface Virtual Channel Link (VCL) Table + +-- This table contains configuration and state +-- information of a bi-directional Virtual Channel +-- Link (VCL) at an ATM interface. + +-- This table can be used to create, delete or modify +-- a VCL that is terminated in an ATM host or switch. +-- This table can also be +-- used to create, delete or modify a VCL that is +-- cross-connected to another VCL. + + +-- The ATM Interface VCL Table + + +atmVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Virtual Channel Link (VCL) table. A + bi-directional VCL is modeled as one entry + in this table. This table can be used for + PVCs, SVCs and Soft PVCs." + ::= { atmMIBObjects 7} + +atmVclEntry OBJECT-TYPE + SYNTAX AtmVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the VCL table. This entry is + used to model a bi-directional VCL. + To create a VCL at an ATM interface, + either of the following procedures are used: + + Negotiated VCL establishment + + (1) The management application creates + a VCL entry in the atmVclTable + by setting atmVclRowStatus to createAndWait(5). + This may fail for the following reasons: + - The selected VPI/VCI values are unavailable, + - The selected VPI/VCI values are in use. + Otherwise, the agent creates a row and + reserves the VPI/VCI values on that port. + + (2) The manager selects an existing row(s) in the + atmTrafficDescrParamTable, + thereby, selecting a set of self-consistent + ATM traffic parameters and the service category + for receive and transmit directions of the VCL. + (2a) If no suitable row(s) in the + atmTrafficDescrParamTable exists, + the manager must create a new row(s) + in that table. + + (2b) The manager characterizes the VCL's traffic + parameters through setting the + atmVclReceiveTrafficDescrIndex and the + atmVclTransmitTrafficDescrIndex values + in the VCL table, which point to the rows + containing desired ATM traffic parameter values + in the atmTrafficDescrParamTable. The agent + will check the availability of resources and + may refuse the request. + If the transmit and receive service categories + are inconsistent, the agent should refuse the + request. + + (3) The manager activates the VCL by setting the + the atmVclRowStatus to active(1) (for + requirements on this activation see the + description of atmVclRowStatus). + If this set is successful, the agent has + reserved the resources to satisfy the requested + traffic parameter values and the service category + for that VCL. + (4) If the VCL terminates a VCC in the ATM host + or switch, the manager turns on the + atmVclAdminStatus to up(1) to turn the VCL + traffic flow on. Otherwise, the + atmVcCrossConnectTable must be used + to cross-connect the VCL to another VCL(s) + in an ATM switch or network. + + One-Shot VCL Establishment + + A VCL may also be established in one step by a + set-request with all necessary VCL parameter + values and atmVclRowStatus set to createAndGo(4). + + In contrast to the negotiated VCL establishment + which allows for detailed error checking + (i.e., set errors are explicitly linked to + particular resource acquisition failures), + the one-shot VCL establishment + performs the setup on one operation but + does not have the advantage of step-wise + error checking. + VCL Retirement + + A VCL is released by setting atmVclRowStatus to + destroy(6), and the agent may release all + associated resources." + INDEX {ifIndex, atmVclVpi, atmVclVci } + ::= { atmVclTable 1} + +AtmVclEntry ::= SEQUENCE { + atmVclVpi AtmVpIdentifier, + atmVclVci AtmVcIdentifier, + atmVclAdminStatus AtmVorXAdminStatus, + atmVclOperStatus AtmVorXOperStatus, + atmVclLastChange AtmVorXLastChange, + atmVclReceiveTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVclTransmitTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVccAalType INTEGER, + atmVccAal5CpcsTransmitSduSize INTEGER, + atmVccAal5CpcsReceiveSduSize INTEGER, + atmVccAal5EncapsType INTEGER, + atmVclCrossConnectIdentifier INTEGER, + atmVclRowStatus RowStatus, + atmVclCastType AtmConnCastType, + atmVclConnKind AtmConnKind + } + +atmVclVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VCL." + ::= { atmVclEntry 1} + +atmVclVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the VCL." + ::= { atmVclEntry 2} + +atmVclAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is instanciated only for a VCL which + terminates a VCC (i.e., one which is NOT + cross-connected to other VCLs). Its value + specifies the desired administrative state of + the VCL." + DEFVAL { down } + ::= { atmVclEntry 3} + +atmVclOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the VCL." + ::= { atmVclEntry 4} + +atmVclLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this VCL + entered its current operational state." + ::= { atmVclEntry 5 } + +atmVclReceiveTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ATM Traffic Descriptor Table which + applies to the receive direction of this VCL." + DEFVAL { 0 } + ::= { atmVclEntry 6} + +atmVclTransmitTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + of the ATM Traffic Descriptor Table which applies + to the transmit direction of this VCL." + DEFVAL { 0 } + ::= { atmVclEntry 7} + +atmVccAalType OBJECT-TYPE + SYNTAX INTEGER { + aal1(1), + aal34(2), + aal5(3), + other(4), + unknown(5), + aal2(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL is in use. + The type of AAL used on this VCC. + The AAL type includes AAL1, AAL2, AAL3/4, + and AAL5. The other(4) may be user-defined + AAL type. The unknown type indicates that + the AAL type cannot be determined." + DEFVAL { aal5 } + ::= { atmVclEntry 8 } + +atmVccAal5CpcsTransmitSduSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The maximum AAL5 CPCS SDU size in octets that is + supported on the transmit direction of this VCC." + DEFVAL { 9188 } + ::= { atmVclEntry 9 } + +atmVccAal5CpcsReceiveSduSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The maximum AAL5 CPCS SDU size in octets that is + supported on the receive direction of this VCC." + DEFVAL { 9188 } + ::= { atmVclEntry 10 } + +atmVccAal5EncapsType OBJECT-TYPE + SYNTAX INTEGER { + vcMultiplexRoutedProtocol(1), + vcMultiplexBridgedProtocol8023(2), + vcMultiplexBridgedProtocol8025(3), + vcMultiplexBridgedProtocol8026(4), + vcMultiplexLANemulation8023(5), + vcMultiplexLANemulation8025(6), + llcEncapsulation(7), + multiprotocolFrameRelaySscs(8), + other(9), + unknown(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The type of data encapsulation used over + the AAL5 SSCS layer. The definitions reference + RFC 1483 Multiprotocol Encapsulation + over ATM AAL5 and to the ATM Forum + LAN Emulation specification." + DEFVAL { llcEncapsulation } + ::= { atmVclEntry 11 } + +atmVclCrossConnectIdentifier OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is instantiated only for a VCL + which is cross-connected to other VCLs + that belong to the same VCC. All such + associated VCLs have the same value of this + object, and all their cross-connections are + identified either by entries that are indexed + by the same value of atmVcCrossConnectIndex in + the atmVcCrossConnectTable of this MIB module or by + the same value of the cross-connect index in + the cross-connect table for SVCs and Soft PVCs + (defined in a separate MIB module). + + At no time should entries in these respective + cross-connect tables exist simultaneously + with the same cross-connect index value. + The value of this object is initialized by the + agent after the associated entries in the + atmVcCrossConnectTable have been created." + ::= {atmVclEntry 12} + +atmVclRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create, delete or + modify a row in this table. To create + a new VCL, this object is initially set + to 'createAndWait' or 'createAndGo'. + This object should not be + set to 'active' unless the following columnar + objects have been set to their desired value + in this row: + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex. + In addition, if the local VCL end-point + is also the VCC end-point: + atmVccAalType. + In addition, for AAL5 connections only: + atmVccAal5CpcsTransmitSduSize, + atmVccAal5CpcsReceiveSduSize, and + atmVccAal5EncapsType. (The existence + of these objects imply the AAL connection type.). + The DESCRIPTION of atmVclEntry provides + further guidance to row treatment in this table." + DEFVAL { createAndWait } + ::= {atmVclEntry 13} + +atmVclCastType OBJECT-TYPE + SYNTAX AtmConnCastType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection topology type." + DEFVAL { p2p } + ::= {atmVclEntry 14} + + +atmVclConnKind OBJECT-TYPE + SYNTAX AtmConnKind + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The use of call control." + DEFVAL { pvc } + ::= {atmVclEntry 15} + + +-- ATM Virtual Path (VP) Cross Connect Table + +-- This table contains configuration and state +-- information of point-to-point, +-- point-to-multipoint, or multipoint-to-multipoint +-- VP cross-connects for PVCs. + +-- This table has read-create access and can be used +-- to cross-connect the VPLs together in an ATM switch +-- or network. The atmVpCrossConnectIndex +-- is used to associate the related +-- VPLs that are cross-connected together. + +-- The ATM VP Cross Connect Table +-- models each bi-directional VPC +-- cross-connect as a set of entries in +-- the atmVpCrossConnectTable. A +-- point-to-point VPC cross-connect is modeled +-- as one entry; a point-to-multipoint (N leafs) VPC +-- cross-connect as N entries in this table; and +-- a multipoint-to-multipoint (N parties) VPC cross- +-- connect as N(N-1)/2 entries in this table. +-- In the latter cases, all the N (or N(N-1)/2) entries +-- are associated with a single VPC cross-connect by +-- having the same value of atmVpCrossConnectIndex. + + +-- _________________________________________ +-- | | +-- Low | ATM Switch or Network | High +-- port| | port +-- _____|>> from low to high VPC traffic flow >>|______ +-- |<< from high to low VPC traffic flow <<| +-- | | +-- |_______________________________________| +-- + +-- The terms low and high are chosen to represent +-- numerical ordering of the two interfaces associated +-- with a VPC cross-connect. That is, the ATM interface +-- with the lower value of ifIndex is termed 'low', +-- while the other ATM interface associated with the +-- VPC cross-connect is termed 'high'. This terminology + +-- is used to provide directional information; for +-- example, the atmVpCrossConnectL2HOperStatus applies +-- to the low->high direction, and +-- atmVpCrossConnectH2LOperStatus applies to the +-- high->low direction, as illustrated above. + + + + +atmVpCrossConnectIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmVpCrossConnectIndex when creating + entries in the atmVpCrossConnectTable. The value + 0 indicates that no unassigned entries are + available. To obtain the atmVpCrossConnectIndex + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 8 } + + +-- The ATM VP Cross Connect Table + + +atmVpCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM VP Cross Connect table for PVCs. + An entry in this table models two + cross-connected VPLs. + Each VPL must have its atmConnKind set + to pvc(1)." + ::= { atmMIBObjects 9 } + + +atmVpCrossConnectEntry OBJECT-TYPE + SYNTAX AtmVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM VP Cross Connect table. + This entry is used to model a bi-directional + ATM VP cross-connect which cross-connects + two VPLs. + + Step-wise Procedures to set up a VP Cross-connect + + Once the entries in the atmVplTable are created, + the following procedures are used + to cross-connect the VPLs together. + + (1) The manager obtains a unique + atmVpCrossConnectIndex by reading the + atmVpCrossConnectIndexNext object. + + (2) Next, the manager creates a set of one + or more rows in the ATM VP Cross Connect + Table, one for each cross-connection between + two VPLs. Each row is indexed by the ATM + interface port numbers and VPI values of the + two ends of that cross-connection. + This set of rows specifies the topology of the + VPC cross-connect and is identified by a single + value of atmVpCrossConnectIndex. + + Negotiated VP Cross-Connect Establishment + + (2a) The manager creates a row in this table by + setting atmVpCrossConnectRowStatus to + createAndWait(5). The agent checks the + requested topology and the mutual sanity of + the ATM traffic parameters and + service categories, i.e., the row creation + fails if: + - the requested topology is incompatible with + associated values of atmVplCastType, + - the requested topology is not supported + by the agent, + - the traffic/service category parameter values + associated with the requested row are + incompatible with those of already existing + rows for this VP cross-connect. + [For example, for setting up + a point-to-point VP cross-connect, the + ATM traffic parameters in the receive direction + of a VPL at the low end of the cross-connect + must equal to the traffic parameters in the + transmit direction of the other VPL at the + high end of the cross-connect, + otherwise, the row creation fails.] + The agent also checks for internal errors + in building the cross-connect. + + The atmVpCrossConnectIndex values in the + corresponding atmVplTable rows are filled + in by the agent at this point. + + (2b) The manager promotes the row in the + atmVpCrossConnectTable by setting + atmVpCrossConnectRowStatus to active(1). If + this set is successful, the agent has reserved + the resources specified by the ATM traffic + parameter and Service category values + for each direction of the VP cross-connect + in an ATM switch or network. + + (3) The manager sets the + atmVpCrossConnectAdminStatus to up(1) in all + rows of this VP cross-connect to turn the + traffic flow on. + + + One-Shot VP Cross-Connect Establishment + + A VP cross-connect may also be established in + one step by a set-request with all necessary + parameter values and atmVpCrossConnectRowStatus + set to createAndGo(4). + + In contrast to the negotiated VP cross-connect + establishment which allows for detailed error + checking (i.e., set errors are explicitly linked + to particular resource acquisition failures), + the one-shot VP cross-connect establishment + performs the setup on one operation but does not + have the advantage of step-wise error checking. + + VP Cross-Connect Retirement + + A VP cross-connect identified by a particular + value of atmVpCrossConnectIndex is released by: + + (1) Setting atmVpCrossConnectRowStatus of all + rows identified by this value of + atmVpCrossConnectIndex to destroy(6). + The agent may release all + associated resources, and the + atmVpCrossConnectIndex values in the + corresponding atmVplTable row are removed. + Note that a situation when only a subset of + the associated rows are deleted corresponds + to a VP topology change. + + (2) After deletion of the appropriate + atmVpCrossConnectEntries, the manager may + set atmVplRowStatus to destroy(6) the + associated VPLs. The agent releases + the resources and removes the associated + rows in the atmVplTable. + + VP Cross-connect Reconfiguration + + At the discretion of the agent, a VP + cross-connect may be reconfigured by + adding and/or deleting leafs to/from + the VP topology as per the VP cross-connect + establishment/retirement procedures. + Reconfiguration of traffic/service category parameter + values requires release of the VP cross-connect + before those parameter values may by changed + for individual VPLs." + INDEX { atmVpCrossConnectIndex, + atmVpCrossConnectLowIfIndex, + atmVpCrossConnectLowVpi, + atmVpCrossConnectHighIfIndex, + atmVpCrossConnectHighVpi } + ::= { atmVpCrossConnectTable 1 } + +AtmVpCrossConnectEntry ::= SEQUENCE { + atmVpCrossConnectIndex INTEGER, + atmVpCrossConnectLowIfIndex InterfaceIndex, + atmVpCrossConnectLowVpi AtmVpIdentifier, + atmVpCrossConnectHighIfIndex InterfaceIndex, + atmVpCrossConnectHighVpi AtmVpIdentifier, + atmVpCrossConnectAdminStatus AtmVorXAdminStatus, + atmVpCrossConnectL2HOperStatus AtmVorXOperStatus, + atmVpCrossConnectH2LOperStatus AtmVorXOperStatus, + atmVpCrossConnectL2HLastChange AtmVorXLastChange, + atmVpCrossConnectH2LLastChange AtmVorXLastChange, + atmVpCrossConnectRowStatus RowStatus + } + +atmVpCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this VP cross-connect. + For each VPL associated with this cross-connect, + the agent reports this cross-connect index value + in the atmVplCrossConnectIdentifier attribute of + the corresponding atmVplTable entries." + ::= { atmVpCrossConnectEntry 1 } + +atmVpCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for + this VP cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmVpCrossConnectEntry." + ::= { atmVpCrossConnectEntry 2 } + +atmVpCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VP cross-connect that is + identified by atmVpCrossConnectLowIfIndex." + ::= { atmVpCrossConnectEntry 3 } + +atmVpCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for + this VP cross-connect. The term high implies that + this ATM interface has the numerically higher + ifIndex value than the other ATM interface + identified in the same atmVpCrossConnectEntry." + ::= { atmVpCrossConnectEntry 4 } + +atmVpCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VP cross-connect that is + identified by atmVpCrossConnectHighIfIndex." + ::= { atmVpCrossConnectEntry 5 } + +atmVpCrossConnectAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired administrative status of this + bi-directional VP cross-connect." + DEFVAL { down } + ::= { atmVpCrossConnectEntry 6 } + +atmVpCrossConnectL2HOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the VP cross-connect + in one direction; (i.e., from the low to + high direction)." + ::= { atmVpCrossConnectEntry 7 } + +atmVpCrossConnectH2LOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the VP cross-connect + in one direction; (i.e., from the high to + low direction)." + ::= { atmVpCrossConnectEntry 8 } + +atmVpCrossConnectL2HLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VP cross-connect entered its current operational + state in the low to high direction." + ::= { atmVpCrossConnectEntry 9 } + +atmVpCrossConnectH2LLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VP cross-connect entered its current operational + in the high to low direction." + ::= { atmVpCrossConnectEntry 10 } + +atmVpCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + atmVpCrossConnectTable. This object is used to + create a cross-connect for cross-connecting + VPLs which are created using the atmVplTable + or to change or delete an existing cross-connect. + This object must be initially set + to `createAndWait' or 'createAndGo'. + To turn on a VP cross-connect, + the atmVpCrossConnectAdminStatus + is set to `up'." + DEFVAL { createAndWait } + ::= { atmVpCrossConnectEntry 11 } + + +-- ATM Virtual Channel (VC) Cross Connect Table + +-- This table contains configuration and state +-- information of point-to-point, +-- point-to-multipoint or multipoint-to-multipoint +-- VC cross-connects for PVCs. + +-- This table has read-create access and is used +-- to cross-connect the VCLs together in an ATM switch +-- or network that belong to a VC connection. +-- The atmVcCrossConnectIndex is used to associate +-- the related VCLs that are cross-connected together. + + + +-- The model using step-wise procedures described for setting +-- up a VP cross-connect is also used for setting up +-- a VC cross-connect. + +atmVcCrossConnectIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmVcCrossConnectIndex when creating + entries in the atmVcCrossConnectTable. The value + 0 indicates that no unassigned entries are + available. To obtain the atmVcCrossConnectIndex + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 10 } + + +-- The ATM VC Cross Connect Table + + +atmVcCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM VC Cross Connect table for PVCs. + An entry in this table models two + cross-connected VCLs. + Each VCL must have its atmConnKind set + to pvc(1)." + ::= { atmMIBObjects 11 } + + +atmVcCrossConnectEntry OBJECT-TYPE + SYNTAX AtmVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM VC Cross Connect table. + This entry is used to model a bi-directional ATM + VC cross-connect cross-connecting two end points. + + Step-wise Procedures to set up a VC Cross-connect + Once the entries in the atmVclTable are created, + the following procedures are used + to cross-connect the VCLs together to + form a VCC segment. + + (1) The manager obtains a unique + atmVcCrossConnectIndex by reading the + atmVcCrossConnectIndexNext object. + + (2) Next, the manager creates a set of one + or more rows in the ATM VC Cross Connect + Table, one for each cross-connection between + two VCLs. Each row is indexed by the ATM + interface port numbers and VPI/VCI values of + the two ends of that cross-connection. + This set of rows specifies the topology of the + VCC cross-connect and is identified by a single + value of atmVcCrossConnectIndex. + + Negotiated VC Cross-Connect Establishment + + (2a) The manager creates a row in this table by + setting atmVcCrossConnectRowStatus to + createAndWait(5). The agent checks the + requested topology and the mutual sanity of + the ATM traffic parameters and + service categories, i.e., the row creation + fails if: + - the requested topology is incompatible with + associated values of atmVclCastType, + - the requested topology is not supported + by the agent, + - the traffic/service category parameter values + associated with the requested row are + incompatible with those of already existing + rows for this VC cross-connect. + [For example, for setting up + a point-to-point VC cross-connect, the + ATM traffic parameters in the receive direction + of a VCL at the low end of the cross-connect + must equal to the traffic parameters in the + transmit direction of the other VCL at the + high end of the cross-connect, + otherwise, the row creation fails.] + The agent also checks for internal errors + in building the cross-connect. + + The atmVcCrossConnectIndex values in the + corresponding atmVclTable rows are filled + in by the agent at this point. + + (2b) The manager promotes the row in the + atmVcCrossConnectTable by setting + atmVcCrossConnectRowStatus to active(1). If + this set is successful, the agent has reserved + the resources specified by the ATM traffic + parameter and Service category values + for each direction of the VC cross-connect + in an ATM switch or network. + + (3) The manager sets the + atmVcCrossConnectAdminStatus to up(1) + in all rows of this VC cross-connect to + turn the traffic flow on. + + + One-Shot VC Cross-Connect Establishment + + A VC cross-connect may also be established in + one step by a set-request with all necessary + parameter values and atmVcCrossConnectRowStatus + set to createAndGo(4). + + In contrast to the negotiated VC cross-connect + establishment which allows for detailed error + checking i.e., set errors are explicitly linked to + particular resource acquisition failures), the + one-shot VC cross-connect establishment + performs the setup on one operation but does + not have the advantage of step-wise error + checking. + + VC Cross-Connect Retirement + + A VC cross-connect identified by a particular + value of atmVcCrossConnectIndex is released by: + + (1) Setting atmVcCrossConnectRowStatus of all rows + identified by this value of + atmVcCrossConnectIndex to destroy(6). + The agent may release all + associated resources, and the + atmVcCrossConnectIndex values in the + corresponding atmVclTable row are removed. + Note that a situation when only a subset of + the associated rows are deleted corresponds + to a VC topology change. + + (2) After deletion of the appropriate + atmVcCrossConnectEntries, the manager may + set atmVclRowStatus to destroy(6) the + associated VCLs. The agent releases + the resources and removes the associated + rows in the atmVclTable. + + VC Cross-Connect Reconfiguration + + At the discretion of the agent, a VC + cross-connect may be reconfigured by + adding and/or deleting leafs to/from + the VC topology as per the VC cross-connect + establishment/retirement procedures. + Reconfiguration of traffic/service category parameter + values requires release of the VC cross-connect + before those parameter values may by changed + for individual VCLs." + INDEX { atmVcCrossConnectIndex, + atmVcCrossConnectLowIfIndex, + atmVcCrossConnectLowVpi, + atmVcCrossConnectLowVci, + atmVcCrossConnectHighIfIndex, + atmVcCrossConnectHighVpi, + atmVcCrossConnectHighVci } + ::= { atmVcCrossConnectTable 1 } + +AtmVcCrossConnectEntry ::= SEQUENCE { + atmVcCrossConnectIndex INTEGER, + atmVcCrossConnectLowIfIndex InterfaceIndex, + atmVcCrossConnectLowVpi AtmVpIdentifier, + atmVcCrossConnectLowVci AtmVcIdentifier, + atmVcCrossConnectHighIfIndex InterfaceIndex, + atmVcCrossConnectHighVpi AtmVpIdentifier, + atmVcCrossConnectHighVci AtmVcIdentifier, + atmVcCrossConnectAdminStatus AtmVorXAdminStatus, + atmVcCrossConnectL2HOperStatus AtmVorXOperStatus, + atmVcCrossConnectH2LOperStatus AtmVorXOperStatus, + atmVcCrossConnectL2HLastChange AtmVorXLastChange, + atmVcCrossConnectH2LLastChange AtmVorXLastChange, + atmVcCrossConnectRowStatus RowStatus + } + +atmVcCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this VC cross-connect. + For each VCL associated with this cross-connect, + the agent reports this cross-connect index value + in the atmVclCrossConnectIdentifier attribute of + the corresponding atmVclTable entries." + ::= { atmVcCrossConnectEntry 1 } + +atmVcCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for this + VC cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmVcCrossConnectEntry." + ::= { atmVcCrossConnectEntry 2 } + +atmVcCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectLowIfIndex." + ::= { atmVcCrossConnectEntry 3 } + +atmVcCrossConnectLowVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value at the ATM interface + associated with this VC cross-connect that is + identified by atmVcCrossConnectLowIfIndex." + ::= { atmVcCrossConnectEntry 4 } + +atmVcCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for the ATM interface for + this VC cross-connect. The term high implies + that this ATM interface has the numerically higher + ifIndex value than the other ATM interface + identified in the same atmVcCrossConnectEntry." + ::= { atmVcCrossConnectEntry 5 } + +atmVcCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectHighIfIndex." + ::= { atmVcCrossConnectEntry 6 } + +atmVcCrossConnectHighVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectHighIfIndex." + ::= { atmVcCrossConnectEntry 7 } + +atmVcCrossConnectAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired administrative status of this + bi-directional VC cross-connect." + DEFVAL { down } + ::= { atmVcCrossConnectEntry 8 } + +atmVcCrossConnectL2HOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the + VC cross-connect in one direction; (i.e., + from the low to high direction)." + ::= { atmVcCrossConnectEntry 9 } + + +atmVcCrossConnectH2LOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the + VC cross-connect in one direction; (i.e., + from the high to low direction)." + ::= { atmVcCrossConnectEntry 10 } + +atmVcCrossConnectL2HLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VC cross-connect entered its current + operational state in low to high direction." + ::= { atmVcCrossConnectEntry 11 } + +atmVcCrossConnectH2LLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VC cross-connect entered its current + operational state in high to low direction." + ::= { atmVcCrossConnectEntry 12 } + +atmVcCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + atmVcCrossConnectTable. This object is used to + create a new cross-connect for cross-connecting + VCLs which are created using the atmVclTable + or to change or delete existing cross-connect. + This object must be initially set to + `createAndWait' or 'createAndGo'. + To turn on a VC cross-connect, + the atmVcCrossConnectAdminStatus + is set to `up'." + DEFVAL { createAndWait } + ::= { atmVcCrossConnectEntry 13 } + + +-- AAL5 Virtual Channel Connection Performance Statistics + +-- Table + +-- This table contains the AAL5 +-- performance statistics of a VCC at the +-- interface associated with an AAL5 entity in an ATM +-- host or ATM switch. + + +aal5VccTable OBJECT-TYPE + SYNTAX SEQUENCE OF Aal5VccEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains AAL5 VCC performance + parameters." + ::= { atmMIBObjects 12 } + +aal5VccEntry OBJECT-TYPE + SYNTAX Aal5VccEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains the AAL5 VCC + performance parameters and is indexed + by ifIndex values of AAL5 interfaces + and the associated VPI/VCI values." + INDEX { ifIndex, aal5VccVpi, aal5VccVci } + ::= { aal5VccTable 1 } + +Aal5VccEntry ::= SEQUENCE { + aal5VccVpi AtmVpIdentifier, + aal5VccVci AtmVcIdentifier, + aal5VccCrcErrors Counter32, + aal5VccSarTimeOuts Counter32, + aal5VccOverSizedSDUs Counter32 + } + + +aal5VccVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the AAL5 VCC at the + interface identified by the ifIndex." + ::= { aal5VccEntry 1 } + +aal5VccVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the AAL5 VCC at the + interface identified by the ifIndex." + ::= { aal5VccEntry 2 } + +aal5VccCrcErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received with + CRC-32 errors on this AAL5 VCC at the + interface associated with an AAL5 entity." + ::= { aal5VccEntry 3 } + +aal5VccSarTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of partially re-assembled AAL5 + CPCS PDUs which were discarded + on this AAL5 VCC at the interface associated + with an AAL5 entity because they + were not fully re-assembled within the + required time period. If the re-assembly + timer is not supported, then this object + contains a zero value." + ::= { aal5VccEntry 4 } + +aal5VccOverSizedSDUs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs discarded + on this AAL5 VCC at the interface + associated with an AAL5 entity because the + AAL5 SDUs were too large." + ::= { aal5VccEntry 5 } + + +-- +-- The following object may be used in conjunction with +-- the atmTrafficDescrParamTable for the creation of + +-- new table entries. +-- + +atmTrafficDescrParamIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmTrafficDescrParamIndex when + creating entries in the + atmTrafficDescrParamTable. + The value 0 indicates that no unassigned + entries are available. To obtain the + atmTrafficDescrParamIndex value for a new + entry, the manager issues a management + protocol retrieval operation to obtain the + current value of this object. After each + retrieval, the agent should modify the value + to the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 13 } + + +-- Conformance Information + +atmMIBConformance OBJECT IDENTIFIER ::= { atmMIB 2 } + +atmMIBGroups OBJECT IDENTIFIER + ::= { atmMIBConformance 1 } +atmMIBCompliances OBJECT IDENTIFIER + ::= { atmMIBConformance 2 } + + +-- Compliance Statements + +atmMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + including networks which have ATM and + AAL5 interfaces." + + MODULE -- this module +-- +-- ****** Interface and Traffic Descriptor Support *** + +-- + MANDATORY-GROUPS {atmInterfaceConfGroup2, + atmTrafficDescrGroup2 } + + OBJECT atmInterfaceMaxVpcs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxVccs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVpiBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + At the ATM UNI the maximum number of + active VPI bits configured for use ranges + from 0 to 8 only. + Implementations may support smaller ranges." + OBJECT atmInterfaceMaxActiveVciBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + Implementations may support smaller ranges." + + OBJECT atmInterfaceIlmiVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIpAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIfName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT atmInterfaceSubscrAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParamIndexNext + DESCRIPTION + "This object is only required for systems + that support the creation of entries in + the atmTrafficDescrParamTable." + + OBJECT atmTrafficDescrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmServiceCategory + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrRowStatus + 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 atmTrafficFrameDiscard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- +-- ****** DS3 PLCP Support ************************** +-- + GROUP atmInterfaceDs3PlcpGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + DS3 PLCP layer." +-- +-- ****** TC Sublayer Support ******************************** +-- + GROUP atmInterfaceTCGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + TC Sublayer." + +-- +-- ****** VPC Support ******************************* +-- + GROUP atmVpcTerminationGroup2 + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that terminate VPCs (i.e., ones which + are NOT cross-connected to other VPLs)." + + GROUP atmVplCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs + for VPCs." + GROUP atmVpPvcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs + for permanent VPCs (i.e., PVCs). + This group is not used to crossconnect + a PVC with an SVC to form a Soft PVC." + + OBJECT atmVplAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplRowStatus + 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 atmVplCastType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplConnKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectRowStatus + 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)." + +-- +-- ****** VCC Support ******************************* +-- + GROUP atmVccTerminationGroup2 + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that terminate VCCs (i.e., ones which + are NOT cross-connected to other VCLs)." + + GROUP atmVclCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to other VCLs + for VCCs." + + GROUP atmVcPvcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to other + VCLs for permanent VCCs (i.e., PVCs). + This group is not used to crossconnect + a PVC with an SVC to form a Soft PVC." + + OBJECT atmVclAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT atmVclTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAalType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclRowStatus + 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 atmVclCastType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclConnKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectRowStatus + 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)." +-- +-- ****** AAL5 Support ****************************** +-- + GROUP aal5VccGroup + DESCRIPTION + "This group is mandatory for the + AAL5 virtual connections only." + OBJECT atmVccAal5CpcsTransmitSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5CpcsReceiveSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5EncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { atmMIBCompliances 2 } + + +-- Units of Conformance + +atmInterfaceDs3PlcpGroup OBJECT-GROUP + OBJECTS {atmInterfaceDs3PlcpSEFSs, + atmInterfaceDs3PlcpAlarmState, + atmInterfaceDs3PlcpUASs} + STATUS current + DESCRIPTION + "A collection of objects providing information + about DS3 PLCP layer at an ATM interface." + ::= { atmMIBGroups 3 } + +atmInterfaceTCGroup OBJECT-GROUP + OBJECTS { atmInterfaceOCDEvents, + atmInterfaceTCAlarmState } + STATUS current + DESCRIPTION + "A collection of objects providing information + about TC sublayer at an ATM interface." + ::= { atmMIBGroups 4 } + +aal5VccGroup OBJECT-GROUP + OBJECTS {atmVccAal5CpcsTransmitSduSize, + atmVccAal5CpcsReceiveSduSize, + atmVccAal5EncapsType, + aal5VccCrcErrors, aal5VccSarTimeOuts, + aal5VccOverSizedSDUs } + STATUS current + DESCRIPTION + "A collection of objects providing + AAL5 configuration and performance statistics + of a VCC." + ::= { atmMIBGroups 9 } + +atmInterfaceConfGroup2 OBJECT-GROUP + OBJECTS { + atmInterfaceMaxVpcs, atmInterfaceMaxVccs, + atmInterfaceConfVpcs, atmInterfaceConfVccs, + atmInterfaceMaxActiveVpiBits, + atmInterfaceMaxActiveVciBits, + atmInterfaceIlmiVpi, + atmInterfaceIlmiVci, + atmInterfaceMyNeighborIpAddress, + atmInterfaceMyNeighborIfName, + atmInterfaceCurrentMaxVpiBits, + atmInterfaceCurrentMaxVciBits, + atmInterfaceSubscrAddress } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ATM interface." + ::= { atmMIBGroups 10 } + +atmTrafficDescrGroup2 OBJECT-GROUP + OBJECTS { + atmTrafficDescrType, atmTrafficDescrParam1, + atmTrafficDescrParam2, atmTrafficDescrParam3, + atmTrafficDescrParam4, atmTrafficDescrParam5, + atmTrafficDescrRowStatus, atmServiceCategory, + atmTrafficFrameDiscard, + atmTrafficDescrParamIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing information + about ATM traffic descriptor type and + the associated parameters." + ::= { atmMIBGroups 11 } + +atmVpcTerminationGroup2 OBJECT-GROUP + OBJECTS {atmVplOperStatus, atmVplAdminStatus, + atmVplLastChange, + atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplRowStatus, atmVplCastType, + atmVplConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing information + about a VPL at an ATM interface which + terminates a VPC (i.e., one which is NOT + cross-connected to other VPLs)." + ::= { atmMIBGroups 12 } + +atmVccTerminationGroup2 OBJECT-GROUP + OBJECTS {atmVclOperStatus, atmVclAdminStatus, + atmVclLastChange, + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVccAalType, atmVclRowStatus, + atmVclCastType, atmVclConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing information + about a VCL at an ATM interface + which terminates a VCC (i.e., one which is + NOT cross-connected to other VCLs)." + ::= { atmMIBGroups 13 } + +atmVplCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplOperStatus, atmVplLastChange, + atmVplRowStatus, + atmVplCastType, atmVplConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing + information about the VPLs that + are cross-connected together." + ::= { atmMIBGroups 14 } + +atmVpPvcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVpCrossConnectAdminStatus, + atmVpCrossConnectL2HOperStatus, + atmVpCrossConnectH2LOperStatus, + atmVpCrossConnectL2HLastChange, + atmVpCrossConnectH2LLastChange, + atmVpCrossConnectRowStatus, + atmVplCrossConnectIdentifier, + atmVpCrossConnectIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing + information about a VP cross-connect + for PVCs. These objects are not used + for Soft PVCs or SVCs." + ::= { atmMIBGroups 15 } + +atmVclCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVclOperStatus, atmVclLastChange, + atmVclRowStatus, + atmVclCastType, atmVclConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing + information about the VCLs that + are cross-connected together." + ::= { atmMIBGroups 16 } + +atmVcPvcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVcCrossConnectAdminStatus, + atmVcCrossConnectL2HOperStatus, + atmVcCrossConnectH2LOperStatus, + atmVcCrossConnectL2HLastChange, + atmVcCrossConnectH2LLastChange, + atmVcCrossConnectRowStatus, + atmVclCrossConnectIdentifier, + atmVcCrossConnectIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing + information about a VC cross-connect + for PVCs. These objects are not used + for Soft PVCs or SVCs." + ::= { atmMIBGroups 17 } + + +-- Deprecated Definitions - Objects + +-- atmInterfaceAddressType +-- atmTrafficQoSClass + + +-- Deprecated Definitions - Compliance + +atmMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities + including networks which have ATM and + AAL5 interfaces." + + MODULE -- this module + MANDATORY-GROUPS {atmInterfaceConfGroup, + atmTrafficDescrGroup} + + OBJECT atmInterfaceMaxVpcs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxVccs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVpiBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVciBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIpAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIfName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficQoSClass + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrRowStatus + 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)." + + GROUP atmInterfaceDs3PlcpGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + DS3 PLCP layer." + GROUP atmInterfaceTCGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + TC Sublayer." + + GROUP atmVpcTerminationGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that terminate VPCs (i.e., ones which + are NOT cross-connected to other VPLs)." + + GROUP atmVpCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs." + + OBJECT atmVplAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplRowStatus + 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 atmVpCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectRowStatus + 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)." + + GROUP atmVccTerminationGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that terminate VCCs (i.e., ones which + are NOT cross-connected to other VCLs)." + + GROUP atmVcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to + other VCLs." + + OBJECT atmVclAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAalType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclRowStatus + 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 atmVcCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectRowStatus + 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)." + + GROUP aal5VccGroup + DESCRIPTION + "This group is mandatory for the + AAL5 virtual connections only." + + OBJECT atmVccAal5CpcsTransmitSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5CpcsReceiveSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5EncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { atmMIBCompliances 1 } + + +-- Deprecated Definitions - Groups + +atmInterfaceConfGroup OBJECT-GROUP + OBJECTS { + atmInterfaceMaxVpcs, atmInterfaceMaxVccs, + atmInterfaceConfVpcs, atmInterfaceConfVccs, + atmInterfaceMaxActiveVpiBits, + atmInterfaceMaxActiveVciBits, + atmInterfaceIlmiVpi, + atmInterfaceIlmiVci, + atmInterfaceAddressType, + atmInterfaceAdminAddress, + atmInterfaceMyNeighborIpAddress, + atmInterfaceMyNeighborIfName } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information about an ATM interface." + ::= { atmMIBGroups 1 } + +atmTrafficDescrGroup OBJECT-GROUP + OBJECTS { + atmTrafficDescrType, atmTrafficDescrParam1, + atmTrafficDescrParam2, atmTrafficDescrParam3, + atmTrafficDescrParam4, atmTrafficDescrParam5, + atmTrafficQoSClass, atmTrafficDescrRowStatus} + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + about ATM traffic descriptor type and + the associated parameters." + ::= { atmMIBGroups 2 } + +atmVpcTerminationGroup OBJECT-GROUP + OBJECTS {atmVplOperStatus, atmVplAdminStatus, + atmVplLastChange, + atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplRowStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VPL at an ATM interface + which terminates a VPC + (i.e., one which is NOT cross-connected + to other VPLs)." + ::= { atmMIBGroups 5 } + +atmVccTerminationGroup OBJECT-GROUP + OBJECTS {atmVclOperStatus, atmVclAdminStatus, + atmVclLastChange, + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVccAalType, atmVclRowStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + about a VCL at an ATM interface + which terminates a VCC (i.e., one which is + NOT cross-connected to other VCLs)." + ::= { atmMIBGroups 6 } + +atmVpCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplOperStatus, atmVplRowStatus, + atmVpCrossConnectAdminStatus, + atmVpCrossConnectL2HOperStatus, + atmVpCrossConnectH2LOperStatus, + atmVpCrossConnectL2HLastChange, + atmVpCrossConnectH2LLastChange, + atmVpCrossConnectRowStatus, + atmVplCrossConnectIdentifier, + atmVpCrossConnectIndexNext } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VP cross-connect + and the associated VPLs that are + cross-connected together." + ::= { atmMIBGroups 7 } + +atmVcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVclOperStatus, atmVclRowStatus, + atmVcCrossConnectAdminStatus, + atmVcCrossConnectL2HOperStatus, + atmVcCrossConnectH2LOperStatus, + atmVcCrossConnectL2HLastChange, + atmVcCrossConnectH2LLastChange, + atmVcCrossConnectRowStatus, + atmVclCrossConnectIdentifier, + atmVcCrossConnectIndexNext } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VC cross-connect + and the associated VCLs that are + cross-connected together." + ::= { atmMIBGroups 8 } + + +-- {atmMIB 3} has been used by [19]. + +END diff --git a/mibs/ietf/ATM-TC-MIB b/mibs/ietf/ATM-TC-MIB new file mode 100644 index 0000000..b5acf32 --- /dev/null +++ b/mibs/ietf/ATM-TC-MIB @@ -0,0 +1,710 @@ + ATM-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + TimeTicks, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + + atmTCMIB MODULE-IDENTITY + LAST-UPDATED "9810190200Z" + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + " Michael Noto + Postal: 3Com Corporation + 5400 Bayfront Plaza, M/S 3109 + Santa Clara, CA 95052 + USA + Tel: +1 408 326 2218 + E-mail: mike_noto@3com.com + + Ethan Mickey Spiegel + Postal: Cisco Systems + 170 W. Tasman Dr. + San Jose, CA 95134 + USA + Tel: +1 408 526 6408 + E-mail: mspiegel@cisco.com + + Kaj Tesink + Postal: Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + Fax: +1 732 758 4177 + E-mail: kaj@bellcore.com" + DESCRIPTION + "This MIB Module provides Textual Conventions + and OBJECT-IDENTITY Objects to be used by + ATM systems." + ::= { mib-2 37 3 } -- atmMIB 3 (see [3]) + + -- The Textual Conventions defined below are organized + -- alphabetically + + + AtmAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x" + STATUS current + DESCRIPTION + "An ATM address. The semantics are implied by + the length. The address types are: - no + address (0 octets) - E.164 (8 octets) - NSAP + (20 octets) In addition, when subaddresses + are used the AtmAddr may represent the + concatenation of address and subaddress. The + associated address types are: - E.164, E.164 + (16 octets) - E.164, NSAP (28 octets) - NSAP, + NSAP (40 octets) Address lengths other than + defined in this definition imply address + types defined elsewhere. Note: The E.164 + address is encoded in BCD format." + SYNTAX OCTET STRING (SIZE(0..40)) + + + AtmConnCastType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of topology of a connection (point- + to-point, point-to-multipoint). In the case + of point-to-multipoint, the orientation of + this VPL or VCL in the connection. + On a host: + - p2mpRoot indicates that the host + is the root of the p2mp connection. + - p2mpLeaf indicates that the host + is a leaf of the p2mp connection. + On a switch interface: + - p2mpRoot indicates that cells received + by the switching fabric from the interface + are from the root of the p2mp connection. + - p2mpLeaf indicates that cells transmitted + to the interface from the switching fabric + are to the leaf of the p2mp connection." + SYNTAX INTEGER { + p2p(1), + p2mpRoot(2), + p2mpLeaf(3) + } + + AtmConnKind ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of call control used for an ATM + connection at a particular interface. The use + is as follows: + pvc(1) + Virtual link of a PVC. Should not be + used for an PVC/SVC (i.e., Soft PVC) + crossconnect. + svcIncoming(2) + Virtual link established after a + received signaling request to setup + an SVC. + svcOutgoing(3) + Virtual link established after a + transmitted or forwarded signaling + request to setup an SVC. + spvcInitiator(4) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the initiator of the Soft PVC + setup. + spvcTarget(5) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the target of the Soft PVC + setup. + + For PVCs, a pvc virtual link is always cross- + connected to a pvc virtual link. + + For SVCs, an svcIncoming virtual link is always cross- + connected to an svcOutgoing virtual link. + +For Soft PVCs, an spvcInitiator is either cross-connected to +an svcOutgoing or an spvcTarget, and an spvcTarget is either +cross-connected to an svcIncoming or an spvcInitiator." + SYNTAX INTEGER { + pvc(1), + svcIncoming(2), + svcOutgoing(3), + spvcInitiator(4), + spvcTarget(5) + } + + AtmIlmiNetworkPrefix ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A network prefix used for ILMI address + registration. In the case of ATM endsystem + addresses (AESAs), the network prefix is the first + 13 octets of the address which includes the AFI, + IDI, and HO-DSP fields. In the case of native + E.164 addresses, the network prefix is the entire + E.164 address encoded in 8 octets, as if it were + an E.164 IDP in an ATM endsystem address + structure." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, + af-ilmi-0065.000, September 1996, Section 9 + ATM Forum, ATM User-Network Interface Signalling + Specification, Version 4.0 (UNI 4.0), + af-sig-0061.000, June 1996, Section 3" + SYNTAX OCTET STRING (SIZE(8|13)) + +AtmInterfaceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The connection setup procedures used for the + identified interface. + + Other: Connection setup procedures other than + those listed below. + Auto-configuration: + Indicates that the connection setup + procedures are to be determined dynamically, + or that determination has not yet been + completed. One such mechanism is via ATM + Forum ILMI auto-configuration procedures. + + ITU-T DSS2: + - ITU-T Recommendation Q.2931, Broadband + Integrated Service Digital Network (B-ISDN) + Digital Subscriber Signalling System No.2 + (DSS2) User-Network Interface (UNI) Layer 3 + Specification for Basic Call/Connection + Control (September 1994) + - ITU-T Draft Recommendation Q.2961, + B-ISDN DSS 2 Support of Additional Traffic + Parameters (May 1995) + + - ITU-T Draft Recommendation Q.2971, + B-ISDN DSS 2 User Network Interface Layer 3 + Specification for Point-to-multipoint + Call/connection Control (May 1995) + + ATM Forum UNI 3.0: + ATM Forum, ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, + (1994). + + ATM Forum UNI 3.1: + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + (November 1994). + + ATM Forum UNI Signalling 4.0: + ATM Forum, ATM User-Network Interface (UNI) + Signalling Specification Version 4.0, + af-sig-0061.000 (June 1996). + + ATM Forum IISP (based on UNI 3.0 or UNI 3.1) : + Interim Inter-switch Signaling Protocol + (IISP) Specification, Version 1.0, + af-pnni-0026.000, (December 1994). + + ATM Forum PNNI 1.0 : + ATM Forum, Private Network-Network Interface + Specification, Version 1.0, af-pnni-0055.000, + (March 1996). + ATM Forum B-ICI: + ATM Forum, B-ICI Specification, Version 2.0, + af-bici-0013.002, (November 1995). + + ATM Forum UNI PVC Only: + An ATM Forum compliant UNI with the + signalling disabled. + ATM Forum NNI PVC Only: + An ATM Forum compliant NNI with the + signalling disabled." + SYNTAX INTEGER { + other(1), + autoConfig(2), + ituDss2(3), + atmfUni3Dot0(4), + atmfUni3Dot1(5), + atmfUni4Dot0(6), + atmfIispUni3Dot0(7), + atmfIispUni3Dot1(8), + atmfIispUni4Dot0(9), + atmfPnni1Dot0(10), + atmfBici2Dot0(11), + atmfUniPvcOnly(12), + atmfNniPvcOnly(13) } + +AtmServiceCategory ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The service category for a connection." + REFERENCE + "ATM Forum Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + SYNTAX INTEGER { + other(1), -- none of the following + cbr(2), -- constant bit rate + rtVbr(3), -- real-time variable bit rate + nrtVbr(4), -- non real-time variable bit rate + abr(5), -- available bit rate + ubr(6) -- unspecified bit rate + } + +AtmSigDescrParamIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies a row in the + atmSigDescrParamTable. The value 0 signifies that + none of the signalling parameters defined in the + atmSigDescrParamTable are applicable." + SYNTAX INTEGER (0..2147483647) + +AtmTrafficDescrParamIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies a row in the + atmTrafficDescrParamTable. The value 0 signifies + that no row has been identified." + SYNTAX INTEGER (0..2147483647) + +AtmVcIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The VCI value for a VCL. The maximum VCI value + cannot exceed the value allowable by + atmInterfaceMaxVciBits defined in ATM-MIB." + SYNTAX INTEGER (0..65535) + +AtmVpIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The VPI value for a VPL or VCL. The value VPI=0 + is only allowed for a VCL. For ATM UNIs supporting + VPCs the VPI value ranges from 0 to 255. The VPI + value 0 is supported for ATM UNIs conforming to + the ATM Forum UNI 4.0 Annex 8 (Virtual UNIs) + specification. For ATM UNIs supporting VCCs the + VPI value ranges from 0 to 255. For ATM NNIs the + VPI value ranges from 0 to 4095. The maximum VPI + value cannot exceed the value allowable by + atmInterfaceMaxVpiBits defined in ATM-MIB." + SYNTAX INTEGER (0..4095) + +AtmVorXAdminStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value determines the desired administrative + status of a virtual link or cross-connect. The up + and down states indicate that the traffic flow is + enabled or disabled respectively on the virtual + link or cross-connect." + SYNTAX INTEGER { + up(1), + down(2) + } + +AtmVorXLastChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime at the time a + virtual link or cross-connect entered its current + operational state. If the current state was + entered prior to the last re-initialization of the + agent then this object contains a zero value." + SYNTAX TimeTicks + +AtmVorXOperStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value determines the operational status of a + virtual link or cross-connect. The up and down + states indicate that the traffic flow is enabled + or disabled respectively on the virtual link or + cross-connect. The unknown state indicates that + the state of it cannot be determined. The state + will be down or unknown if the supporting ATM + interface(s) is down or unknown respectively." + SYNTAX INTEGER { + up(1), + down(2), + unknown(3) + } + + + + +-- OBJECT-IDENTITIES: + +-- The following atmTrafficDescriptorTypes has been moved +-- from RFC1695 and no longer appear in the revision of +-- RFC1695[3]. + +atmTrafficDescriptorTypes OBJECT IDENTIFIER ::= {mib-2 37 1 1} + -- atmMIBObjects + -- See [3]. + +-- All other and new OBJECT IDENTITIES +-- are defined under the following subtree: + + atmObjectIdentities OBJECT IDENTIFIER ::= {atmTCMIB 1} + +-- The following values are defined for use as +-- possible values of the ATM traffic descriptor type. + +atmNoTrafficDescriptor OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This identifies the no ATM traffic + descriptor type. Parameters 1, 2, 3, 4, + and 5 are not used. This traffic descriptor + type can be used for best effort traffic." + ::= {atmTrafficDescriptorTypes 1} + +atmNoClpNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + and no Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: not used + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 2} + +atmClpNoTaggingNoScr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This traffic descriptor is for CLP without + tagging and no Sustained Cell Rate. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: peak cell rate in cells/second + for CLP=0 traffic + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + ::= {atmTrafficDescriptorTypes 3} + +atmClpTaggingNoScr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This traffic descriptor is for CLP with + tagging and no Sustained Cell Rate. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: peak cell rate in cells/second + for CLP=0 traffic, excess + tagged as CLP=1 + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + ::= {atmTrafficDescriptorTypes 4} + +atmNoClpScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 5} + +atmClpNoTaggingScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Sustained Cell Rate and no tagging. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 6} + +atmClpTaggingScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + tagging and Sustained Cell Rate. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic, excess tagged as + CLP=1 + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 7} + +atmClpNoTaggingMcr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Minimum Cell Rate and no tagging. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: minimum cell rate in cells/second + Parameter 4: unused + Parameter 5: unused." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 8} + +atmClpTransparentNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for the CLP- + transparent model and no Sustained Cell Rate. + The use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the CBR.1 conformance + definition. + + Connections specifying this traffic descriptor + type will be rejected at UNI 3.0 or UNI 3.1 + interfaces. For a similar traffic descriptor + type that can be accepted at UNI 3.0 and + UNI 3.1 interfaces, see atmNoClpNoScr." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 9} + +atmClpTransparentScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for the CLP- + transparent model with Sustained Cell Rate. + The use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.1 conformance + definition. + Connections specifying this traffic descriptor + type will be rejected at UNI 3.0 or UNI 3.1 + interfaces. For a similar traffic descriptor + type that can be accepted at UNI 3.0 and + UNI 3.1 interfaces, see atmNoClpScr." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 10} + +atmNoClpTaggingNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with tagging and no Sustained Cell Rate. The + use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the UBR.2 conformance + definition ." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 11} + +atmNoClpNoScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + and no Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + CBR connections following the UNI 3.0/3.1 + conformance definition for PCR CLP=0+1. + These CBR connections differ from CBR.1 + connections in that the CLR objective + applies only to the CLP=0 cell flow. + + This traffic descriptor type is also + applicable to connections following the UBR.1 + conformance definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 12} + +atmNoClpScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable + to VBR connections following the UNI 3.0/3.1 + conformance definition for PCR CLP=0+1 and + SCR CLP=0+1. These VBR connections + differ from VBR.1 connections in that + the CLR objective applies only to the CLP=0 + cell flow." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 13} + +atmClpNoTaggingScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Sustained Cell Rate and no tagging. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.2 conformance + definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 14} + +atmClpTaggingScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + tagging and Sustained Cell Rate. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic, excess tagged as + CLP=1 + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.3 conformance + definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 15} + +END diff --git a/mibs/ietf/ATM2-MIB b/mibs/ietf/ATM2-MIB new file mode 100644 index 0000000..4db8fa8 --- /dev/null +++ b/mibs/ietf/ATM2-MIB @@ -0,0 +1,3452 @@ +ATM2-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Gauge32, Counter32, Integer32 + FROM SNMPv2-SMI + TruthValue, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndex, InterfaceIndexOrZero, ifIndex + FROM IF-MIB + atmMIBObjects, atmInterfaceConfEntry, + atmVplEntry, atmVplVpi, + atmVclEntry, atmVclVpi, atmVclVci, + + + + atmVpCrossConnectEntry, atmVcCrossConnectEntry + FROM ATM-MIB + AtmAddr, AtmSigDescrParamIndex, + AtmInterfaceType, AtmIlmiNetworkPrefix, + AtmVcIdentifier, AtmVpIdentifier, + AtmTrafficDescrParamIndex + FROM ATM-TC-MIB; + + atm2MIB MODULE-IDENTITY + LAST-UPDATED "200309230000Z" + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + "AToMMIB WG + http://www.ietf.org/html.charters/atommib-charter.html + Editors: + Faye Ly + Postal: Pedestal Networks + 6503 Dumbarton Circle + Fremont, CA 94555 + USA + Tel: +1 510 896 2908 + E-Mail: faye@pedestalnetworks.com + + Michael Noto + Postal: Cisco Systems + 170 W. Tasman Drive + San Jose, CA 95134-1706 + USA + + E-mail: mnoto@cisco.com + + Andrew Smith + Postal: Consultant + + E-Mail: ah_smith@acm.org + + Ethan Mickey Spiegel + Postal: Cisco Systems + 170 W. Tasman Drive + San Jose, CA 95134-1706 + USA + Tel: +1 408 526 6408 + Fax: +1 408 526 6488 + E-Mail: mspiegel@cisco.com + + Kaj Tesink + Postal: Telcordia Technologies + 331 Newman Springs Road + + + + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + E-mail: kaj@research.telcordia.com" + DESCRIPTION + "Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3606; see the RFC itself for + full legal notices. + + This MIB Module is a supplement to the ATM-MIB + defined in RFC 2515." + REVISION "200309230000Z" + DESCRIPTION + "Initial version of this MIB, published as RFC 3606." + + ::= { atmMIBObjects 14 } + + atm2MIBObjects OBJECT IDENTIFIER ::= {atm2MIB 1} + + atm2MIBTraps OBJECT IDENTIFIER ::= {atm2MIB 2} + + -- This ATM2-MIB Module consists of the following tables, + -- plus ATM trap support: + -- 1. atmSvcVpCrossConnectTable + -- 2. atmSvcVcCrossConnectTable + -- 3. atmSigStatTable + -- 4. atmSigSupportTable + -- 5. atmSigDescrParamTable + -- 6. atmIfRegisteredAddrTable + -- 7. atmVclAddrTable + -- 8. atmAddrVclTable + -- 9. atmVplStatTable + -- 10. atmVplLogicalPortTable + -- 11. atmVclStatTable + -- 12. atmAal5VclStatTable + -- 13. atmVclGenTable + -- 14. atmInterfaceExtTable + -- 15. atmIlmiSrvcRegTable + -- 16. atmIlmiNetworkPrefixTable + -- 17. atmSwitchAddressTable + -- 18. atmVpCrossConnectXTable + -- 19. atmVcCrossConnectXTable + -- 20. atmCurrentlyFailingPVplTable + -- 21. atmCurrentlyFailingPVclTable + + -- 1. ATM VPL SVC Cross-Connect Table + + atmSvcVpCrossConnectTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF + AtmSvcVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM SVPC Cross-Connect table. A + bi-directional VP cross-connect between two + switched VPLs is modeled as one entry in this + table. A Soft PVPC cross-connect, between a + soft permanent VPL and a switched VPL, is + also modeled as one entry in this table." + ::= { atm2MIBObjects 1 } + + atmSvcVpCrossConnectEntry OBJECT-TYPE + SYNTAX AtmSvcVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM SVPC Cross-Connect table. + This entry is used to model a bi-directional + ATM VP cross-connect between two VPLs." + INDEX { atmSvcVpCrossConnectIndex, + atmSvcVpCrossConnectLowIfIndex, + atmSvcVpCrossConnectLowVpi, + atmSvcVpCrossConnectHighIfIndex, + atmSvcVpCrossConnectHighVpi } + ::= { atmSvcVpCrossConnectTable 1 } + + AtmSvcVpCrossConnectEntry ::= SEQUENCE { + atmSvcVpCrossConnectIndex INTEGER, + atmSvcVpCrossConnectLowIfIndex InterfaceIndex, + atmSvcVpCrossConnectLowVpi AtmVpIdentifier, + atmSvcVpCrossConnectHighIfIndex InterfaceIndex, + atmSvcVpCrossConnectHighVpi AtmVpIdentifier, + atmSvcVpCrossConnectCreationTime TimeStamp, + atmSvcVpCrossConnectRowStatus RowStatus + } + + atmSvcVpCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this SVPC + cross-connect. For each VP associated + with this cross-connect, the agent reports + this cross-connect index value in the + atmVplCrossConnectIdentifer attribute of the + + + + corresponding atmVplTable entries." + ::= { atmSvcVpCrossConnectEntry 1 } + + atmSvcVpCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for this + SVPC cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmSvcVpCrossConnectEntry." + ::= { atmSvcVpCrossConnectEntry 2 } + + atmSvcVpCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVPC cross-connect + at the ATM interface that is identified by + atmSvcVpCrossConnectLowIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvpcVpi at the low ATM interface + port." + ::= { atmSvcVpCrossConnectEntry 3 } + + atmSvcVpCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for + this SVC VP cross-connect. The term high + implies that this ATM interface has the + numerically higher ifIndex value than the + other ATM interface identified in the same + atmSvcVpCrossConnectEntry." + ::= { atmSvcVpCrossConnectEntry 4 } + + atmSvcVpCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVPC cross-connect + at the ATM interface that is identified by + atmSvcVpCrossConnectHighIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvpcVpi at the high ATM interface + port." + ::= { atmSvcVpCrossConnectEntry 5 } + + atmSvcVpCrossConnectCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object + at the time this bi-directional SVPC + cross-connect was created. If the current + state was entered prior to the last + re-initialization of the agent, then this + object contains a zero value." + ::= { atmSvcVpCrossConnectEntry 6 } + + atmSvcVpCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to delete rows in the + atmSvcVpCrossConnectTable." + ::= { atmSvcVpCrossConnectEntry 7 } + + -- 2. ATM VCL SVC Cross-Connect Table + + atmSvcVcCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSvcVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM SVCC Cross-Connect table. A + bi-directional VC cross-connect between two + switched VCLs is modeled as one entry in + this table. A Soft PVCC cross-connect, + between a soft permanent VCL and a switched + VCL, is also modeled as one entry in this + table." + ::= { atm2MIBObjects 2 } + + + + + atmSvcVcCrossConnectEntry OBJECT-TYPE + SYNTAX AtmSvcVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM SVCC Cross-Connect table. + This entry is used to model a bi-directional ATM + VC cross-connect between two VCLs." + INDEX { atmSvcVcCrossConnectIndex, + atmSvcVcCrossConnectLowIfIndex, + atmSvcVcCrossConnectLowVpi, + atmSvcVcCrossConnectLowVci, + atmSvcVcCrossConnectHighIfIndex, + atmSvcVcCrossConnectHighVpi, + atmSvcVcCrossConnectHighVci } + ::= { atmSvcVcCrossConnectTable 1 } + + AtmSvcVcCrossConnectEntry ::= SEQUENCE { + atmSvcVcCrossConnectIndex INTEGER, + atmSvcVcCrossConnectLowIfIndex InterfaceIndex, + atmSvcVcCrossConnectLowVpi AtmVpIdentifier, + atmSvcVcCrossConnectLowVci AtmVcIdentifier, + atmSvcVcCrossConnectHighIfIndex InterfaceIndex, + atmSvcVcCrossConnectHighVpi AtmVpIdentifier, + atmSvcVcCrossConnectHighVci AtmVcIdentifier, + atmSvcVcCrossConnectCreationTime TimeStamp, + atmSvcVcCrossConnectRowStatus RowStatus + } + + atmSvcVcCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this SVCC cross-connect. + For each VP associated with this cross-connect, the + agent reports this cross-connect index value in the + atmVclCrossConnectIdentifier attribute of the + corresponding atmVplTable entries." + ::= { atmSvcVcCrossConnectEntry 1 } + + atmSvcVcCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for this + + + + SVCC cross-connect. The term low implies that + this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmSvcVcCrossConnectEntry." + ::= { atmSvcVcCrossConnectEntry 2 } + + atmSvcVcCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectLowIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVpi at the low ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 3 } + + atmSvcVcCrossConnectLowVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VCI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectLowIfIndex. The VCI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVci at the low ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 4 } + + atmSvcVcCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value for the ATM interface port for + this SVCC cross-connect. The term high implies + that this ATM interface has the numerically + higher ifIndex value than the other ATM interface + identified in the same atmSvcVcCrossConnectEntry." + ::= { atmSvcVcCrossConnectEntry 5 } + + atmSvcVcCrossConnectHighVpi OBJECT-TYPE + + + + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectHighIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVpi at the high ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 6 } + + atmSvcVcCrossConnectHighVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VCI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectHighIfIndex. The VCI value + cannot exceed the number supported by the + atmInterfaceMaxVciBits at the high ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 7 } + + atmSvcVcCrossConnectCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object + at the time this bi-directional SVCC + cross-connect was created. If the current + state was entered prior to the last + re-initialization of the agent, then this + object contains a zero value." + ::= { atmSvcVcCrossConnectEntry 8 } + + atmSvcVcCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to delete rows in the + atmSvcVcCrossConnectTable." + ::= { atmSvcVcCrossConnectEntry 9 } + + + + -- 3. ATM Interface Signalling Statistics Table -- + + atmSigStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface signalling + statistics, one entry per ATM signalling + interface." + ::= { atm2MIBObjects 3 } + + atmSigStatEntry OBJECT-TYPE + SYNTAX AtmSigStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains signalling statistics variables." + INDEX { ifIndex } + ::= { atmSigStatTable 1} + + AtmSigStatEntry ::= SEQUENCE { + atmSigSSCOPConEvents Counter32, + atmSigSSCOPErrdPdus Counter32, + atmSigDetectSetupAttempts Counter32, + atmSigEmitSetupAttempts Counter32, + atmSigDetectUnavailRoutes Counter32, + atmSigEmitUnavailRoutes Counter32, + atmSigDetectUnavailResrcs Counter32, + atmSigEmitUnavailResrcs Counter32, + atmSigDetectCldPtyEvents Counter32, + atmSigEmitCldPtyEvents Counter32, + atmSigDetectMsgErrors Counter32, + atmSigEmitMsgErrors Counter32, + atmSigDetectClgPtyEvents Counter32, + atmSigEmitClgPtyEvents Counter32, + atmSigDetectTimerExpireds Counter32, + atmSigEmitTimerExpireds Counter32, + atmSigDetectRestarts Counter32, + atmSigEmitRestarts Counter32, + atmSigInEstabls Counter32, + atmSigOutEstabls Counter32 + } + + atmSigSSCOPConEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "SSCOP Connection Events Counter. This counter counts + the sum of the following errors: + + 1) SSCOP Connection Disconnect Counter + + The abnormal occurrence of this event is + characterized by the expiry of Timer_NO_RESPONSE. + (This event is communicated to the layer management + with MAA-ERROR code P. See ITU-T Q.2110.) + + 2) SSCOP Connection Initiation Failure + + This condition indicates the inability to establish + an SSCOP connection. This event occurs whenever the + number of expiries of the connection control timer + (Timer_CC) equals or exceeds the MaxCC, or upon + receipt of a connection reject message BGREJ PDU. + (This event is communicated to layer management with + MAA-ERROR code O. See ITU-T Q.2110.) + + 3) SSCOP Connection Re-Establ/Resynch + + This event occurs upon receipt of a BGN PDU or + RS PDU." + REFERENCE + "ITU-T Recommendation Q.2110, Broadband + Integrated Services Digital Network + (B-ISDN) - ATM Adaptation Layer - Service + Specific Connection Oriented Protocol (SSCOP) + Specification, July 1994." + ::= { atmSigStatEntry 1} + + atmSigSSCOPErrdPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SSCOP Errored PDUs Counter. This counter counts the + sum of the following errors: + + 1) Invalid PDUs. + These are defined in SSCOP and consist of PDUs + with an incorrect length (MAA-ERROR code U), an + undefined PDU type code, or that are not 32-bit + aligned. + + 2) PDUs that result in MAA-ERROR codes and are + + + + discarded. + + See MAA-ERROR codes A-D, F-M, and Q-T defined in + ITU-T Q.2110." + REFERENCE + "ITU-T Recommendation Q.2110, Broadband + Integrated Services Digital Network + (B-ISDN) - ATM Adaptation Layer - Service + Specific Connection Oriented Protocol (SSCOP) + Specification, July 1994." + ::= { atmSigStatEntry 2 } + + atmSigDetectSetupAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Call Setup Attempts Counter. This counter counts + the number of call setup attempts (both successful + and unsuccessful) detected on this interface." + ::= { atmSigStatEntry 3 } + + atmSigEmitSetupAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Call Setup Attempts Counter. This counter counts + the number of call setup attempts (both successful + and unsuccessful) transmitted on this interface." + ::= { atmSigStatEntry 4 } + + atmSigDetectUnavailRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Route Unavailability detected on this interface. + This counter is incremented when a RELEASE, RELEASE COMPLETE + (only when not preceded by a RELEASE message for the same + call), ADD PARTY REJECT, or STATUS message that + contains one of the following cause code values is + received (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + + + + + 1 unallocated (unassigned) number + 2 no route to specified transit network + 3 no route to destination + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + + ::= { atmSigStatEntry 5 } + + atmSigEmitUnavailRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Route Unavailability transmitted from this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or + STATUS message that contains one of the following cause + code values is transmitted (Note: These cause values apply + to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 1 unallocated (unassigned) number + 2 no route to specified transit network + 3 no route to destination + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + ::= { atmSigStatEntry 6 } + + atmSigDetectUnavailResrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Resource Unavailability detected on this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or + STATUS message that contains one of the following + + + + cause code values is received (Note: These cause + values apply to both UNI3.0 and UNI3.1 unless + otherwise stated): + + Cause Value Meaning + + 35 requested VPCI/VCI not available + 37 user cell rate not available (UNI3.1 + only) + 38 network out of order + 41 temporary failure + 45 no VPCI/VCI available + 47 resource unavailable, unspecified + 49 Quality of Service unavailable + 51 user cell rate not available (UNI3.0 + only) + 58 bearer capability not presently + available + 63 Service or option not available, + unspecified + 92 too many pending add party requests + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + ::= { atmSigStatEntry 7 } + + atmSigEmitUnavailResrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Resource Unavailability transmitted from this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE message + for the same call), ADD PARTY REJECT, or STATUS message that + contains one of the following cause code values is transmitted + (Note: These cause values apply to both UNI3.0 and UNI3.1 + unless otherwise stated): + + Cause Value Meaning + + 35 requested VPCI/VCI not available + 37 user cell rate not available (UNI3.1 + only) + 38 network out of order + + + + 41 temporary failure + 45 no VPCI/VCI available + 47 resource unavailable, unspecified + 49 Quality of Service unavailable + 51 user cell rate not available (UNI3.0 + only) + 58 bearer capability not presently + available + 63 Service or option not available, + unspecified + 92 too many pending add party requests + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted." + + ::= { atmSigStatEntry 8 } + + atmSigDetectCldPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Called Party Responsible For Unsuccessful Call + detected on this interface. This counter is incremented when a + RELEASE, RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or STATUS message + that contains one of the following cause code values is + received (Note: These cause values apply to both UNI3.0 and + UNI3.1): + + Cause Value Meaning + + 17 user busy + 18 no user responding + 21 call rejected + 22 number changed + 23 user rejects all calls with calling + line identification restriction (CLIR) + 27 destination out of order + 31 normal, unspecified + 88 incompatible destination + + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + + + + counted. + + Note: Cause Value #30 'response to STATUS ENQUIRY' was not + included in this memo since it did not apply to a hard + failure." + + ::= { atmSigStatEntry 9 } + + atmSigEmitCldPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "Number of Called Party Responsible For Unsuccessful Call + transmitted from this interface. This counter is incremented + when a RELEASE, RELEASE COMPLETE (only when not preceded by a + RELEASE message for the same call), ADD PARTY REJECT, or STATUS + message that contains one of the following cause code values is + transmitted (Note: These cause values apply to both UNI3.0 and + UNI3.1): + + Cause Value Meaning + + 17 user busy + 18 no user responding + 21 call rejected + 22 number changed + 23 user rejects all calls with calling + line identification restriction (CLIR) + 27 destination out of order + 31 normal, unspecified + 88 incompatible destination + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted. + + Note: Cause Value #30 'response to STATUS ENQUIRY' was not + included in this memo since it did not apply to a hard failure." + + ::= { atmSigStatEntry 10 } + +atmSigDetectMsgErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Number of Incorrect Messages detected on this interface. The + Incorrect Messages Counter reflects any sort of incorrect + information in a message. This includes: + + - RELEASE, RELEASE COMPLETE, ADD PARTY REJECT, + and STATUS messages transmitted, that contain any of + the Cause values listed below. + + - Ignored messages. These messages are dropped + because the message was so damaged that it could + not be further processed. A list of dropped + messages is compiled below: + + 1. Message with invalid protocol discriminator + + 2. Message with errors in the call reference I.E. + - Bits 5-8 of the first octet not equal to + '0000' + - Bits 1-4 of the first octet indicating a + length other than 3 octets + - RELEASE COMPLETE message received with a + call reference that does not relate to a + call active or in progress + - SETUP message received with call reference + flag incorrectly set to 1 + - SETUP message received with a call + reference for a call that is already + active or in progress. + + 3. Message too short + + The following cause values are monitored by this counter (Note: + These cause values apply to both UNI3.0 and UNI3.1 unless + otherwise stated): + + Cause Value Meaning + + 10 VPCI/VCI unacceptable (UNI3.0 only) + 36 VPCI/VCI assignment failure (UNI3.1 only) + 81 invalid call reference value + 82 identified channel does not exist + 89 invalid endpoint reference + 96 mandatory information element is missing + 97 message type non-existent or not + implemented + 99 information element non-existent or not + implemented + + + + 100 invalid information element contents + 101 message not compatible with call state + 104 incorrect message length + 111 protocol error, unspecified + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 11 } + +atmSigEmitMsgErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Incorrect Messages transmitted on this interface. + The Incorrect Messages Counter reflects any sort of incorrect + information in a message. This includes: + + - RELEASE, RELEASE COMPLETE, ADD PARTY REJECT, + and STATUS messages transmitted or + received, that contain any of the Cause values + listed below. + + - Ignored messages. These messages are dropped + because the message was so damaged that it could + not be further processed. A list of dropped + messages is compiled below: + + 1. Message with invalid protocol discriminator + + 2. Message with errors in the call reference I.E. + - Bits 5-8 of the first octet not equal to + '0000' + - Bits 1-4 of the first octet indicating a + length other than 3 octets + - RELEASE COMPLETE message received with a + call reference that does not relate to a + call active or in progress + - SETUP message received with call reference + flag incorrectly set to 1 + - SETUP message received with a call + reference for a call that is already + active or in progress. + + 3. Message too short + + + + The following cause values are monitored by this counter + (Note: These cause values apply to both UNI3.0 and UNI3.1 + unless otherwise stated): + + Cause Value Meaning + + 10 VPCI/VCI unacceptable (UNI3.0 only) + 36 VPCI/VCI assignment failure (UNI3.1 only) + 81 invalid call reference value + 82 identified channel does not exist + 89 invalid endpoint reference + 96 mandatory information element is missing + 97 message type non-existent or not + implemented + 99 information element non-existent or not + implemented + 100 invalid information element contents + 101 message not compatible with call state + 104 incorrect message length + 111 protocol error, unspecified + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 12 } + +atmSigDetectClgPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Calling Party Events detected on this interface. + This counter monitors error events that occur due to the + originating user doing something wrong. This counter is + incremented when a RELEASE, RELEASE COMPLETE (only when not + preceded by a RELEASE message for the same call), ADD PARTY + REJECT, or STATUS message that contains one of the following + cause code values is received (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 28 invalid number format (address incomplete) + 43 access information discarded + 57 bearer capability not authorized + 65 bearer capability not implemented + + + + 73 unsupported combination of traffic + parameters + 78 AAL parameters cannot be supported (UNI3.1 + only) + 91 invalid transit network selection + 93 AAL parameters cannot be supported (UNI3.0 + only) + + NOTE: For this counter, RELEASE COMPLETE messages that + are a reply to a previous RELEASE message and contain + the same cause value, are redundant (for counting purposes) + and should not be counted." + + ::= { atmSigStatEntry 13 } + +atmSigEmitClgPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Calling Party Events transmitted from this interface. + This counter monitors error events that occur due to the + originating user doing something wrong. This counter is + incremented when a RELEASE, RELEASE COMPLETE (only when not + preceded by a RELEASE message for the same call), ADD PARTY + REJECT, or STATUS message that contains one of the following + cause code values is transmitted (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 28 invalid number format (address incomplete) + 43 access information discarded + 57 bearer capability not authorized + 65 bearer capability not implemented + 73 unsupported combination of traffic + parameters + 78 AAL parameters cannot be supported (UNI3.1 + only) + 91 invalid transit network selection + 93 AAL parameters cannot be supported (UNI3.0 + only) + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + + + + ::= { atmSigStatEntry 14 } + +atmSigDetectTimerExpireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Timer Expiries detected on this interface. The Timer + Expiries Counter provides a count of network timer expiries, and + to some extent, host or switch timer expiries. The conditions + for incrementing this counter are: + + - Expiry of any network timer + + - Receipt of a RELEASE or RELEASE COMPLETE + message with Cause #102, 'recovery on + timer expiry'. + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 15 } + +atmSigEmitTimerExpireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Timer Expiries transmitted from this interface. + The Timer Expiries Counter provides a count of network timer + expiries, and to some extent, host or switch timer expiries. + The conditions for incrementing this counter are: + + - Expiry of any network timer + + - Receipt of a RELEASE or RELEASE COMPLETE + message with Cause #102, 'recovery on + timer expiry'. + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted." + + ::= { atmSigStatEntry 16 } + + + + +atmSigDetectRestarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Restart Activity errors detected on this interface. + The Restart Activity Counter provides a count of host, switch, + or network restart activity. This counter is incremented when + receiving a RESTART message." + + ::= { atmSigStatEntry 17 } + +atmSigEmitRestarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Restart Activity errors transmitted from this + interface. The Restart Activity Counter provides a count of + host, switch, or network restart activity. This counter is + incremented when transmitting a RESTART message." + + ::= { atmSigStatEntry 18 } + +atmSigInEstabls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SVCs established at this signalling entity for + incoming connections." + ::= { atmSigStatEntry 19 } + +atmSigOutEstabls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SVCs established at this signalling entity for + outgoing connections." + ::= { atmSigStatEntry 20 } + + -- 4. ATM Interface Signalling Support Table + -- + -- This table provides information to support + -- the signalling process which is used to establish + -- ATM Switched Virtual Connections (SVCs). + + + + +atmSigSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigSupportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM local interface configuration + parameters, one entry per ATM signalling interface." + ::= { atm2MIBObjects 4 } + +atmSigSupportEntry OBJECT-TYPE + SYNTAX AtmSigSupportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains signalling configuration parameters + and state variables." + INDEX { ifIndex } + ::= { atmSigSupportTable 1} + +AtmSigSupportEntry ::= SEQUENCE { + atmSigSupportClgPtyNumDel INTEGER, + atmSigSupportClgPtySubAddr INTEGER, + atmSigSupportCldPtySubAddr INTEGER, + atmSigSupportHiLyrInfo INTEGER, + atmSigSupportLoLyrInfo INTEGER, + atmSigSupportBlliRepeatInd INTEGER, + atmSigSupportAALInfo INTEGER, + atmSigSupportPrefCarrier OCTET STRING +} + +atmSigSupportClgPtyNumDel OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether the Calling Party Number + Information Element is transferred to the called party + address. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 1 } + +atmSigSupportClgPtySubAddr OBJECT-TYPE + + + + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept and transfer the Calling + Party Subaddress Information Element from the calling party to + the called party. Calling party subaddress information shall + only be transferred to the called party if calling party number + delivery is enabled (i.e., atmSigSupportClgPtyNumDel = + 'enabled(1)'. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 2 } + +atmSigSupportCldPtySubAddr OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Called Party Subaddress Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 3 } + +atmSigSupportHiLyrInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband High Layer Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + + + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 4 } + +atmSigSupportLoLyrInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband Low Layer Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 5 } + +atmSigSupportBlliRepeatInd OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband Repeat Indicator with two or three instances of + the Broadband Low Layer Information Element for low layer + information selection from the calling party to the called + party. This object's value should always be disabled(2) if + the value of atmSigSupportLolyrInfo is disabled(2). + + The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + ::= { atmSigSupportEntry 6 } + +atmSigSupportAALInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object indicates whether to accept, transfer, and deliver + the ATM Adaptation Layer Parameters Information Element from the + calling party to the called party. The value of this object can + be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 7 } + +atmSigSupportPrefCarrier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0|4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter identifies the carrier to which intercarrier + calls originated from this interface are routed when transit + network selection information is not provided by the calling + party. If a Carrier Identification Code (CIC) is used the + parameter shall contain the CIC. For three-digit CICs, the first + octet shall be '0' and the CIC is contained in the three + following octets. If the preferred carrier feature is not + supported the value is a zero-length string." + + ::= { atmSigSupportEntry 8 } + + -- 5. ATM Signalling Descriptor Parameter Table + + atmSigDescrParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table contains signalling capabilities of VCLs except the + Traffic Descriptor. Traffic descriptors are described in + the atmTrafficDescrParamTable." + + REFERENCE + "ATM User-Network Interface Specification, Version 3.1 (UNI + 3.1), September 1994, Section 5.4.5 Variable Length + Information Elements." + + ::= { atm2MIBObjects 5 } + + atmSigDescrParamEntry OBJECT-TYPE + + + + SYNTAX AtmSigDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a + set of signalling capabilities that can + be applied to a VCL. There is no requirement + for unique entries, except that the index must + be unique." + INDEX { atmSigDescrParamIndex } + ::= { atmSigDescrParamTable 1 } + + AtmSigDescrParamEntry ::= + SEQUENCE { + atmSigDescrParamIndex + AtmSigDescrParamIndex, + atmSigDescrParamAalType INTEGER, + atmSigDescrParamAalSscsType INTEGER, + atmSigDescrParamBhliType INTEGER, + + + atmSigDescrParamBhliInfo OCTET STRING, + atmSigDescrParamBbcConnConf INTEGER, + atmSigDescrParamBlliLayer2 INTEGER, + atmSigDescrParamBlliLayer3 INTEGER, + atmSigDescrParamBlliPktSize INTEGER, + atmSigDescrParamBlliSnapId INTEGER, + atmSigDescrParamBlliOuiPid OCTET STRING, + atmSigDescrParamRowStatus RowStatus + } + + atmSigDescrParamIndex OBJECT-TYPE + SYNTAX AtmSigDescrParamIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is used by the + atmVclGenSigDescrIndex object in the atmVclGenTable to + identify a row in this table." + + ::= { atmSigDescrParamEntry 1 } + + atmSigDescrParamAalType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not defined + aal1(2), -- AAL type 1 + aal34(3), -- AAL type 3/4 + aal5(4), -- AAL type 5 + + + + userDefined(5), -- User-Defined AAL + aal2(6) -- AAL type 2 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AAL type. The value of this object is set to other(1) + when not defined." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 2 } + + atmSigDescrParamAalSscsType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- other, or not used + assured(2), -- Data SSCS based on SSCOP + -- assured operation + nonassured(3), -- Data SSCS based on SSCOP + -- non-assured operation + frameRelay(4), -- frame relay SSCS + null(5) -- null + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SSCS type used by this entry." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 3 } + + atmSigDescrParamBhliType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not defined + iso(2), -- ISO + user(3), -- User specific + hiProfile(4), -- Higher layer profile + -- this enum applicable to + -- UNI 3.0 only + vendorSpecific(5) -- Vender specific + -- application identifier + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband high layer type." + + DEFVAL { other } + + + + ::= { atmSigDescrParamEntry 4 } + + atmSigDescrParamBhliInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..8)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband high layer information. When + atmSigDescrParamBhliType is set to iso(2), the value of this + object is a zero length string. When + atmSigDescrParamBhliType is set to user(3), the value of + this object is an octet string with length ranging from 0 to + 8. When atmSigDescrParamBhliType is set to hiProfile(4), + the value of this object is a length of 4 octet string + containing user to user profile identifier. When + atmSigDescrParamBhliType is set to vendorSpecific(5), the + value of this object is a length of 7 octet string, where + the most significant 3 octets consist of a globally- + administered OUI, and the least significant 4 octets are the + vender administered application OUI." + + DEFVAL { ''H } + + ::= { atmSigDescrParamEntry 5 } + + atmSigDescrParamBbcConnConf OBJECT-TYPE + SYNTAX INTEGER { + ptp(1), -- point-to-point + ptmp(2) -- point-to-multipoint + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband bearer capability user plane connection + configuration parameter." + DEFVAL { ptp } + ::= { atmSigDescrParamEntry 6 } + + atmSigDescrParamBlliLayer2 OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not specified + iso1745(2), -- Basic mode ISO 1745 + q921(3), -- CCITT Recommendation Q.921 + x25linklayer(4), -- CCITT Recommendation X.25 + -- Link Layer + x25multilink(5), -- CCITT Recommendation X.25 + -- Multilink + lapb(6), -- Extended LAPB; for half + + + + -- duplex operation + hdlcArm(7), -- HDLC ARM (ISO 4335) + hdlcNrm(8), -- HDLC NRM (ISO 4335) + hdlcAbm(9), -- HDLC ABM (ISO 4335) + iso88022(10), -- LAN logical link control + -- (ISO 8802/2) + x75slp(11), -- CCITT Recommendation X.75, + -- single link + -- procedure (SLP) + q922(12), -- CCITT Recommendation Q.922 + userDef(13), -- User specified + iso7776(14) -- ISO 7776 DTE-DTE operation + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband low layer information, protocol type of layer + 2. The value of this object is other(1) if layer 2 protocol + is not used." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 7 } + + atmSigDescrParamBlliLayer3 OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not specified + x25pkt(2), -- CCITT Recommendation X.25 + -- packet layer + isoiec8208(3), -- ISO/IEC 8208 (X.25 packet + -- level protocol for data + -- terminal equipment) + x223iso8878(4), -- X.223/ISO 8878 + isoiec8473(5), -- ISO/IEC 8473 OSI + -- connectionless + -- mode protocol + t70(6), -- CCITT Recommendation T.70 + -- minimum + -- network layer + tr9577(7), -- ISO/IEC TR 9577 Protocol + -- Identification in the + -- network layer + userDef(8) -- user specified + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband low layer information, protocol type of layer + + + + 3. The value of this object is other(1) if layer 3 protocol + is not used." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 8 } + + atmSigDescrParamBlliPktSize OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not used + s16(2), -- 16 octets + s32(3), -- 32 octets + s64(4), -- 64 octets + s128(5), -- 128 octets + s256(6), -- 256 octets + s512(7), -- 512 octets + s1024(8), -- 1028 octets + s2048(9), -- 2048 octets + s4096(10) -- 4096 octets + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default packet size defined in B-LLI." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 9 } + + atmSigDescrParamBlliSnapId OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not used + true(2), -- SNAP ID is 1 + false(3) -- SNAP ID is 0 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNAP ID used for Broadband low layer protocol layer 3. + The value of this object is other(1) if + atmSigDescrParamBlliLayer3 is set to other(1)." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 10 } + + atmSigDescrParamBlliOuiPid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0|5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The OUI/PID encoding for Broadband low layer protocol layer + 3. The value of this object is a zero length string if + atmSigDescrParamBlliLayer3 is set to other(1). When used, + it is always 5 octets with the most significant octet as the + OUI Octet 1 and the least significant octet as the PID Octet + 2." + + DEFVAL { ''H } + ::= { atmSigDescrParamEntry 11 } + + atmSigDescrParamRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + atmSigDescrParamTable." + + ::= { atmSigDescrParamEntry 12 } + + -- 6. ATM Interface Registered Address Table -- + +atmIfRegisteredAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIfRegisteredAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of ATM addresses that can be used for + calls to and from a given interface by a switch or service. The + ATM addresses are either registered by the endsystem via ILMI or + statically configured. This table does not expose PNNI + reachability information. ILMI registered addresses cannot be + deleted using this table. This table only applies to switches + and network services." + ::= { atm2MIBObjects 6 } + +atmIfRegisteredAddrEntry OBJECT-TYPE + SYNTAX AtmIfRegisteredAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM Interface Registered Address table." + + INDEX { ifIndex, atmIfRegAddrAddress } + ::= { atmIfRegisteredAddrTable 1} + +AtmIfRegisteredAddrEntry ::= SEQUENCE { + atmIfRegAddrAddress AtmAddr, + + + + atmIfRegAddrAddressSource INTEGER, + atmIfRegAddrOrgScope INTEGER, + atmIfRegAddrRowStatus RowStatus + } + +atmIfRegAddrAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address registered for a given switch or service interface." + + ::= { atmIfRegisteredAddrEntry 1} + +atmIfRegAddrAddressSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + static(2), + dynamic(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address source for a given ATM Address. The value + dynamic(3) is indicated when ILMI is used." + ::= { atmIfRegisteredAddrEntry 2} + +atmIfRegAddrOrgScope OBJECT-TYPE + SYNTAX INTEGER { + localNetwork(1), + localNetworkPlusOne(2), + localNetworkPlusTwo(3), + siteMinusOne(4), + intraSite(5), + sitePlusOne(6), + organizationMinusOne(7), + intraOrganization(8), + organizationPlusOne(9), + communityMinusOne(10), + intraCommunity(11), + communityPlusOne(12), + regional(13), + interRegional(14), + global(15) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object indicates the organizational scope for + the referenced address. The information of the + referenced address shall not be distributed outside + the indicated scope. Refer to Annex 5.3 of ATM + Forum UNI Signalling 4.0 for guidelines regarding + the use of organizational scopes. + + This value cannot be configured for ILMI-registered + addresses. + + The default values for organizational scope are + localNetwork(1) for ATM group addresses, and + global(15) for individual addresses." + ::= { atmIfRegisteredAddrEntry 3} + +atmIfRegAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + atmIfRegisteredAddrTable. Rows created dynamically (e.g., ILMI- + registered addresses) cannot be deleted using this object." + + ::= { atmIfRegisteredAddrEntry 4} + + -- 7. ATM VPI/VCI to Address Mapping Table + + atmVclAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a mapping between the atmVclTable and + the ATM called party/calling party address. This table can + be used to retrieve the calling party and called party ATM + address pair for a given VCL. Note that there can be more + than one pair of calling party and called party ATM + addresses for a VCL in a point to multi-point call." + ::= { atm2MIBObjects 7 } + + atmVclAddrEntry OBJECT-TYPE + SYNTAX AtmVclAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a binding between a VCL + and an ATM address associated with this call. This ATM + + + + address can be either the called party address or the + calling party address. There can be more than one pair of + calling/called party ATM addresses associated with the VCL + entry for point to multi-point calls. Objects + atmVclAddrType, and atmVclAddrRowStatus are + required during row creation." + INDEX { ifIndex, atmVclVpi, atmVclVci, + atmVclAddrAddr } + ::= { atmVclAddrTable 1 } + + AtmVclAddrEntry ::= + SEQUENCE { + atmVclAddrAddr AtmAddr, + atmVclAddrType INTEGER, + atmVclAddrRowStatus RowStatus + } + + atmVclAddrAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM address on one end of the VCL. For SVCs, the agent + supplies the value of this object at creation time. For PVC + VCL, the manager can supply the value of this object during + or after the PVC VCL creation." + ::= { atmVclAddrEntry 1 } + + atmVclAddrType OBJECT-TYPE + SYNTAX INTEGER { + callingParty(1), + calledParty(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of ATM Address represented by the object + atmVclAddrAddr. Choices are either the calling party ATM + address or the called party ATM address." + ::= { atmVclAddrEntry 2 } + + atmVclAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create or destroy an + entry from this table. Note that the manager entity + + + + can only destroy the PVC VCLs." + ::= { atmVclAddrEntry 3 } + + -- 8. ATM Address to VPI/VCI Mapping Table + -- + -- This table provides an alternative way to access + -- a row in the atmVclAddrTable by using + -- an ATM address as an index, instead of + -- the ifIndex + + atmAddrVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmAddrVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides an alternative way to retrieve the + atmVclTable. This table can be used to retrieve the + indexing to the atmVclTable by an ATM address." + + ::= { atm2MIBObjects 8 } + + atmAddrVclEntry OBJECT-TYPE + SYNTAX AtmAddrVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents an entry in the + atmVclTable of the ATM-MIB by its ATM address. The ATM + address is either the calling or called party ATM address + of the call. Entries in this table are read only. + They show up when entries are created in the + atmVclAddrTable." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + INDEX { atmVclAddrAddr, atmAddrVclAtmIfIndex, + atmAddrVclVpi, atmAddrVclVci } + ::= { atmAddrVclTable 1 } + + AtmAddrVclEntry ::= + SEQUENCE { + atmAddrVclAtmIfIndex InterfaceIndex, + atmAddrVclVpi AtmVpIdentifier, + atmAddrVclVci AtmVcIdentifier, + atmAddrVclAddrType INTEGER + } + + + + + atmAddrVclAtmIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of the ATM interface to which this + VCL pertains. This object combined with the + atmAddrVclVpi and atmAddrVclVci objects serves as an + index to the atmVclTable." + ::= { atmAddrVclEntry 1 } + + atmAddrVclVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VCL. This object combined with the + atmAddrVclAtmIfIndex and atmAddrVclVci objects serves as + an index to the atmVclTable." + ::= { atmAddrVclEntry 2 } + + atmAddrVclVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the VCL. This object combined with the + atmAddrVclAtmIfIndex and atmAddrVclVpi objects serves as + an index to the atmVclTable." + ::= { atmAddrVclEntry 3 } + + atmAddrVclAddrType OBJECT-TYPE + SYNTAX INTEGER { + callingParty(1), + calledParty(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of ATM Address represented by the object + atmVclAddrAddr. Choices are either calling party address + or called party address." + ::= { atmAddrVclEntry 4 } + + -- 9. ATM VPL Statistics Table + + atmVplStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVplStatEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table contains all statistics counters per VPL. It is + used to monitor the usage of the VPL in terms of incoming + cells and outgoing cells." + ::= { atm2MIBObjects 9 } + + atmVplStatEntry OBJECT-TYPE + SYNTAX AtmVplStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VPL." + INDEX { ifIndex, atmVplVpi } + ::= { atmVplStatTable 1 } + + AtmVplStatEntry ::= + SEQUENCE { + atmVplStatTotalCellIns Counter32, + atmVplStatClp0CellIns Counter32, + atmVplStatTotalDiscards Counter32, + atmVplStatClp0Discards Counter32, + atmVplStatTotalCellOuts Counter32, + atmVplStatClp0CellOuts Counter32, + atmVplStatClp0Tagged Counter32 + } + + atmVplStatTotalCellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received by this VPL + including both CLP=0 and CLP=1 cells. The cells are + counted prior to the application of the traffic policing." + ::= { atmVplStatEntry 1 } + + atmVplStatClp0CellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid ATM cells received by this VPL with + CLP=0. The cells are counted prior to the application of + the traffic policing." + ::= { atmVplStatEntry 2 } + + atmVplStatTotalDiscards OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells discarded by the + traffic policing entity. This includes cells originally + received with CLP=0 and CLP=1." + ::= { atmVplStatEntry 3 } + + atmVplStatClp0Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received with CLP=0 and + discarded by the traffic policing entity." + ::= { atmVplStatEntry 4 } + + atmVplStatTotalCellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted by this + VPL. This includes both CLP=0 and CLP=1 cells." + ::= { atmVplStatEntry 5 } + + atmVplStatClp0CellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted with CLP=0 + by this VPL." + ::= { atmVplStatEntry 6 } + + atmVplStatClp0Tagged OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells tagged by the traffic + policing entity from CLP=0 to CLP=1." + ::= { atmVplStatEntry 7 } + + -- 10. ATM Logical Port Configuration Table + + atmVplLogicalPortTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF AtmVplLogicalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates whether the VPL is an ATM Logical Port interface + (ifType=80)." + ::= { atm2MIBObjects 10 } + + atmVplLogicalPortEntry OBJECT-TYPE + SYNTAX AtmVplLogicalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with information about the ATM Logical Port + interface." + AUGMENTS { atmVplEntry } + ::= { atmVplLogicalPortTable 1 } + + AtmVplLogicalPortEntry ::= + SEQUENCE { + atmVplLogicalPortDef INTEGER, + atmVplLogicalPortIndex InterfaceIndexOrZero + } + + atmVplLogicalPortDef OBJECT-TYPE + SYNTAX INTEGER { + notLogicalIf(1), + isLogicalIf(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the VPC at this VPL interface is an ATM + Logical Port interface." + DEFVAL { notLogicalIf } + ::= { atmVplLogicalPortEntry 1 } + + atmVplLogicalPortIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifTable index of the ATM logical port interface + associated with this VPL. The distinguished value of zero + indicates that the agent has not (yet) assigned such an + ifTable Index. The zero value must be assigned by the agent + if the value of atmVplLogicalPortDef is set to notLogicalIf, + or if the VPL row is not active." + + + + ::= { atmVplLogicalPortEntry 2 } + + -- 11. ATM VCL Statistics Table + + atmVclStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all statistics counters per VCL. It is + used to monitor the usage of the VCL in terms of incoming + cells and outgoing cells." + ::= { atm2MIBObjects 11 } + + atmVclStatEntry OBJECT-TYPE + SYNTAX AtmVclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VCL." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmVclStatTable 1 } + + AtmVclStatEntry ::= + SEQUENCE { + atmVclStatTotalCellIns Counter32, + atmVclStatClp0CellIns Counter32, + atmVclStatTotalDiscards Counter32, + atmVclStatClp0Discards Counter32, + atmVclStatTotalCellOuts Counter32, + atmVclStatClp0CellOuts Counter32, + atmVclStatClp0Tagged Counter32 + } + + atmVclStatTotalCellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received by this VCL + including both CLP=0 and CLP=1 cells. The cells are counted + prior to the application of the traffic policing." + ::= { atmVclStatEntry 1 } + + atmVclStatClp0CellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of valid ATM cells received by this VCL with + CLP=0. The cells are counted prior to the application of + the traffic policing." + ::= { atmVclStatEntry 2 } + + atmVclStatTotalDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells discarded by the + traffic policing entity. This includes cells originally + received with CLP=0 and CLP=1." + ::= { atmVclStatEntry 3 } + + atmVclStatClp0Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received with CLP=0 + and discarded by the traffic policing entity." + ::= { atmVclStatEntry 4 } + + atmVclStatTotalCellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted by this + VCL. This includes both CLP=0 and CLP=1 cells." + ::= { atmVclStatEntry 5 } + + atmVclStatClp0CellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted with CLP=0 + by this VCL." + ::= { atmVclStatEntry 6 } + + atmVclStatClp0Tagged OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of valid ATM cells tagged by the traffic + policing entity from CLP=0 to CLP=1." + ::= { atmVclStatEntry 7 } + + -- 12. ATM AAL5 per-VCC Statistics Table + + atmAal5VclStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmAal5VclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a collection of objects providing AAL5 + configuration and performance statistics of a VCL." + ::= { atm2MIBObjects 12 } + + atmAal5VclStatEntry OBJECT-TYPE + SYNTAX AtmAal5VclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents an AAL5 VCL, and + is indexed by ifIndex values of AAL5 interfaces and + the associated VPI/VCI values." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmAal5VclStatTable 1 } + + AtmAal5VclStatEntry ::= + SEQUENCE { + atmAal5VclInPkts Counter32, + atmAal5VclOutPkts Counter32, + atmAal5VclInOctets Counter32, + atmAal5VclOutOctets Counter32 + } + + atmAal5VclInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received on the AAL5 VCC at + the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 1 } + + atmAal5VclOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of AAL5 CPCS PDUs transmitted on the AAL5 VCC + at the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 2 } + + atmAal5VclInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in AAL5 CPCS PDUs received + on the AAL5 VCC at the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 3 } + + atmAal5VclOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in AAL5 CPCS PDUs + transmitted on the AAL5 VCC at the interface identified by + the ifIndex." + ::= { atmAal5VclStatEntry 4 } + + -- 13. ATM VC General Information Table + + atmVclGenTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclGenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "General Information for each VC." + ::= { atm2MIBObjects 13 } + + atmVclGenEntry OBJECT-TYPE + SYNTAX AtmVclGenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with general information about the ATM VC." + + AUGMENTS { atmVclEntry } + ::= { atmVclGenTable 1 } + + AtmVclGenEntry ::= + SEQUENCE { + atmVclGenSigDescrIndex AtmSigDescrParamIndex + } + + + + + atmVclGenSigDescrIndex OBJECT-TYPE + SYNTAX AtmSigDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ATM + Signalling Descriptor Parameter Table which applies to this + VCL." + ::= { atmVclGenEntry 1 } + + -- 14. ATM Interface Configuration Extension Table + +atmInterfaceExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface configuration and monitoring + information not defined in the atmInterfaceConfTable from the + ATM-MIB. This includes the type of connection setup procedures, + ILMI information, and information on the VPI/VCI range." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + ::= { atm2MIBObjects 14 } + +atmInterfaceExtEntry OBJECT-TYPE + SYNTAX AtmInterfaceExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the atmInterfaceConfEntry defined in the ATM- + MIB. Each entry corresponds to an ATM interface." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + AUGMENTS { atmInterfaceConfEntry } + ::= { atmInterfaceExtTable 1 } + +AtmInterfaceExtEntry ::= SEQUENCE { + atmIntfConfigType AtmInterfaceType, + atmIntfActualType AtmInterfaceType, + atmIntfConfigSide INTEGER, + atmIntfActualSide INTEGER, + atmIntfIlmiAdminStatus BITS, + atmIntfIlmiOperStatus BITS, + + + + atmIntfIlmiFsmState INTEGER, + atmIntfIlmiEstablishConPollIntvl Integer32, + atmIntfIlmiCheckConPollIntvl Integer32, + atmIntfIlmiConPollInactFactor Integer32, + atmIntfIlmiPublicPrivateIndctr INTEGER, + atmInterfaceConfMaxSvpcVpi INTEGER, + atmInterfaceCurrentMaxSvpcVpi INTEGER, + atmInterfaceConfMaxSvccVpi INTEGER, + atmInterfaceCurrentMaxSvccVpi INTEGER, + atmInterfaceConfMinSvccVci INTEGER, + atmInterfaceCurrentMinSvccVci INTEGER, + atmIntfSigVccRxTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmIntfSigVccTxTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmIntfPvcFailures Counter32, + atmIntfCurrentlyFailingPVpls Gauge32, + atmIntfCurrentlyFailingPVcls Gauge32, + atmIntfPvcFailuresTrapEnable TruthValue, + atmIntfPvcNotificationInterval INTEGER, + atmIntfLeafSetupFailures Counter32, + atmIntfLeafSetupRequests Counter32 } + +atmIntfConfigType OBJECT-TYPE + SYNTAX AtmInterfaceType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of connection setup procedures configured for the ATM + interface. Setting this variable to a value of 'other' is not + allowed." + DEFVAL { autoConfig } + ::= { atmInterfaceExtEntry 1 } + +atmIntfActualType OBJECT-TYPE + SYNTAX AtmInterfaceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of connection setup procedures currently being used on + the interface. This may reflect a manually configured value for + the interface type, or may be determined by other means such as + auto-configuration. A value of `autoConfig' indicates that + auto-configuration was requested but has not yet been completed." + ::= { atmInterfaceExtEntry 2 } + +atmIntfConfigSide OBJECT-TYPE + SYNTAX INTEGER { + + + + other(1), + user(2), + network(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The configured role of the managed entity as one side of the ATM + interface. This value does not apply when the object + atmIntfConfigType is set to `autoConfig', `atmfPnni1Dot0', or + `atmfBici2Dot0'." + ::= { atmInterfaceExtEntry 3 } + +atmIntfActualSide OBJECT-TYPE + SYNTAX INTEGER { + other(1), + user(2), + network(3), + symmetric(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current role used by the managed entity to represent one + side of the ATM interface." + ::= { atmInterfaceExtEntry 4 } + +atmIntfIlmiAdminStatus OBJECT-TYPE + SYNTAX BITS { ilmi(0), + ilmiAddressRegistration(1), + ilmiConnectivity(2), + ilmiPvcPvpMgmt(3), + ilmiSigVccParamNegotiation(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates which components of ILMI are administratively enabled + on this interface. If the 'ilmi' bit is not set, then no ILMI + components are operational. ILMI components other than auto- + configuration that are not represented in the value have their + administrative status determined according to the 'ilmi' bit. + The ILMI auto-configuration component is enabled/disabled by the + atmIntfConfigType object." + ::= { atmInterfaceExtEntry 5 } + +atmIntfIlmiOperStatus OBJECT-TYPE + SYNTAX BITS { ilmi(0), + ilmiAddressRegistration(1), + ilmiConnectivity(2), + ilmiPvcPvpMgmt(3), + + + + ilmiSigVccParamNegotiation(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which components of ILMI are operational on this + interface." + ::= { atmInterfaceExtEntry 6 } + +atmIntfIlmiFsmState OBJECT-TYPE + SYNTAX INTEGER { stopped(1), + linkFailing(2), + establishing(3), + configuring(4), + retrievingNetworkPrefixes(5), + registeringNetworkPrefixes(6), + retrievingAddresses(7), + registeringAddresses(8), + verifying(9) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the state of the ILMI Finite State Machine associated + with this interface." + + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Appendix 1" + ::= { atmInterfaceExtEntry 7 } + +atmIntfIlmiEstablishConPollIntvl OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time S between successive transmissions of ILMI + messages on this interface for the purpose of detecting + establishment of ILMI connectivity." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 1 } + ::= { atmInterfaceExtEntry 8 } + +atmIntfIlmiCheckConPollIntvl OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time T between successive transmissions of ILMI + messages on this interface for the purpose of detecting loss of + ILMI connectivity. The distinguished value zero disables ILMI + connectivity procedures on this interface." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 5 } + ::= { atmInterfaceExtEntry 9 } + +atmIntfIlmiConPollInactFactor OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number K of consecutive polls on this interface for which no + ILMI response message is received before ILMI connectivity is + declared lost." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 4 } + ::= { atmInterfaceExtEntry 10 } + +atmIntfIlmiPublicPrivateIndctr OBJECT-TYPE + SYNTAX INTEGER { + other(1), + public(2), + private(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether this end of the interface is advertised in + ILMI as a device of the `public' or `private' type." + DEFVAL { private } + ::= { atmInterfaceExtEntry 11 } + +atmInterfaceConfMaxSvpcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual path + connections." + ::= { atmInterfaceExtEntry 12 } + +atmInterfaceCurrentMaxSvpcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + may currently allocate to switched virtual path connections. + This value is the minimum of atmInterfaceConfMaxSvpcVpi, and the + atmInterfaceMaxSvpcVpi of the interface's UNI/NNI peer. + + If the interface does not negotiate with its peer to determine + the maximum VPI that can be allocated to SVPCs on the interface, + then the value of this object must equal + atmInterfaceConfMaxSvpcVpi. " + ::= { atmInterfaceExtEntry 13 } + +atmInterfaceConfMaxSvccVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual + channel connections." + ::= { atmInterfaceExtEntry 14 } + +atmInterfaceCurrentMaxSvccVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + may currently allocate to switched virtual channel connections. + This value is the minimum of atmInterfaceConfMaxSvccVpi, and the + atmInterfaceConfMaxSvccVpi of the interface's UNI/NNI peer. + + If the interface does not negotiate with its peer to determine + the maximum VPI that can be allocated to SVCCs on the interface, + then the value of this object must equal + atmInterfaceConfMaxSvccVpi." + ::= { atmInterfaceExtEntry 15 } + + + + +atmInterfaceConfMinSvccVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum VCI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual + channel connections." + ::= { atmInterfaceExtEntry 16 } + +atmInterfaceCurrentMinSvccVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum VCI that the signalling stack on the ATM interface + may currently allocate to switched virtual channel connections. + This value is the maximum of atmInterfaceConfMinSvccVci, and the + atmInterfaceConfMinSvccVci of the interface's UNI/NNI peer. + If the interface does not negotiate with its peer to determine + the minimum VCI that can be allocated to SVCCs on the interface, + then the value of this object must equal + atmInterfaceConfMinSvccVci." + ::= { atmInterfaceExtEntry 17 } + +atmIntfSigVccRxTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the row in the atmTrafficDescrParamTable + used during ILMI auto-configuration to specify the advertised + signalling VCC traffic parameters for the receive direction. + The traffic descriptor resulting from ILMI auto-configuration of + the signalling VCC is indicated in the atmVclTable." + ::= { atmInterfaceExtEntry 18 } + +atmIntfSigVccTxTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the row in the atmTrafficDescrParamTable + used during ILMI auto-configuration to specify the advertised + signalling VCC traffic parameters for the transmit direction. + The traffic descriptor resulting from ILMI auto-configuration of + the signalling VCC is indicated in the atmVclTable." + ::= { atmInterfaceExtEntry 19 } + + + +atmIntfPvcFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the operational status of a PVPL or PVCL on + this interface has gone down." + ::= { atmInterfaceExtEntry 20 } + +atmIntfCurrentlyFailingPVpls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of VPLs on this interface for which there is + an active row in the atmVplTable having an atmVplConnKind value + of `pvc' and an atmVplOperStatus with a value other than `up'." + ::= { atmInterfaceExtEntry 21 } + +atmIntfCurrentlyFailingPVcls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of VCLs on this interface for which there is + an active row in the atmVclTable having an atmVclConnKind value + of `pvc' and an atmVclOperStatus with a value other than `up'." + ::= { atmInterfaceExtEntry 22 } + +atmIntfPvcFailuresTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the generation of traps in response to PVCL or PVPL + failures on this interface." + DEFVAL { false } + ::= { atmInterfaceExtEntry 23 } + +atmIntfPvcNotificationInterval OBJECT-TYPE + SYNTAX INTEGER (1..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval between the sending of + atmIntfPvcFailuresTrap notifications for this interface." + DEFVAL { 30 } + + + + ::= { atmInterfaceExtEntry 24 } + +atmIntfLeafSetupFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of setup failures. For root, this is the number of + rejected setup requests and for leaf, this is the number of setup + failure received." + ::= { atmInterfaceExtEntry 25 } + +atmIntfLeafSetupRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of setup requests. For root, this includes both incoming + setup request and root intiated setup requests." + ::= { atmInterfaceExtEntry 26 } + + -- 15. ATM ILMI Service Registry Table + +atmIlmiSrvcRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIlmiSrvcRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of all the ATM network services known + by this device. + + The characteristics of these services are made available through + the ILMI, using the ILMI general-purpose service registry MIB. + These services may be made available to all ATM interfaces + (atmIlmiSrvcRegIndex = 0) or to some specific ATM interfaces only + (atmIlmiSrvcRegIndex = ATM interface index)." + ::= { atm2MIBObjects 15 } + +atmIlmiSrvcRegEntry OBJECT-TYPE + SYNTAX AtmIlmiSrvcRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single service provider that is available to + the user-side of an adjacent device through the ILMI. + + Implementors need to be aware that if the size of the + atmIlmiSrvcRegServiceID exceeds 112 sub-identifiers then OIDs of + + + + column instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2, or + SNMPv3." + + INDEX { atmIlmiSrvcRegIndex, + atmIlmiSrvcRegServiceID, + atmIlmiSrvcRegAddressIndex } + ::= { atmIlmiSrvcRegTable 1 } + +AtmIlmiSrvcRegEntry ::= SEQUENCE { + atmIlmiSrvcRegIndex InterfaceIndexOrZero, + atmIlmiSrvcRegServiceID OBJECT IDENTIFIER, + atmIlmiSrvcRegAddressIndex INTEGER, + atmIlmiSrvcRegATMAddress AtmAddr, + atmIlmiSrvcRegParm1 OCTET STRING, + atmIlmiSrvcRegRowStatus RowStatus + } + +atmIlmiSrvcRegIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM interface where the service defined in this entry can be + made available to an ATM device attached to this interface. + + The value of 0 has a special meaning: when an ATM service is + defined in an entry whose atmIlmiSrvcRegIndex is zero, the ATM + service is available to ATM devices connected to any ATM + interface. (default value(s)). + + When the user-side of an adjacent device queries the content of + the ILMI service registry MIB (using the ILMI protocol), the + local network-side responds with the ATM services defined in + atmIlmiSrvcRegTable entries, provided that these entries are + indexed by: + + - the corresponding ifIndex value (atmIlmiSrvcRegIndex + equal to the ifIndex of the interface to which the + adjacent device is connected) - zero (atmIlmiSrvcRegIndex=0)." + ::= { atmIlmiSrvcRegEntry 1 } + +atmIlmiSrvcRegServiceID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the service identifier which uniquely identifies the + + + + type of service at the address provided in the table. The object + identifiers for the LAN Emulation Configuration Server (LECS) and + the ATM Name Server (ANS) are defined in the ATM Forum ILMI + Service Registry MIB. The object identifiers for the ATMARP + Server, the Multicast Address Resolution Server (MARS), and the + NHRP Server (NHS) are defined in RFC 2601, RFC 2602, and RFC + 2603, respectively." + ::= { atmIlmiSrvcRegEntry 2 } + +atmIlmiSrvcRegAddressIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer to differentiate multiple rows containing + different ATM addresses for the same service on the same + interface. This number need NOT be the same as the corresponding + ILMI atmfSrvcRegAddressIndex MIB object." + ::= { atmIlmiSrvcRegEntry 3 } + +atmIlmiSrvcRegATMAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the full address of the service. The user-side of the + adjacent device may use this address to establish a connection + with the service." + ::= { atmIlmiSrvcRegEntry 4 } + +atmIlmiSrvcRegParm1 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An octet string used according to the value of + atmIlmiSrvcRegServiceID." + ::= { atmIlmiSrvcRegEntry 5 } + +atmIlmiSrvcRegRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create or destroy an entry from this + table." + ::= { atmIlmiSrvcRegEntry 6 } + + + + + -- 16. ILMI Network Prefix Table + +atmIlmiNetworkPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIlmiNetworkPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table specifying per-interface network prefix(es) supplied by + the network side of the UNI during ILMI address registration. + When no network prefixes are specified for a particular + interface, one or more network prefixes based on the switch + address(es) may be used for ILMI address registration." + ::= { atm2MIBObjects 16 } + +atmIlmiNetworkPrefixEntry OBJECT-TYPE + SYNTAX AtmIlmiNetworkPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single network prefix supplied by the + network side of the UNI during ILMI address registration. Note + that the index variable atmIlmiNetPrefixPrefix is a variable- + length string, and as such the rule for variable-length strings + in section 7.7 of RFC 2578 applies." + INDEX { ifIndex, + atmIlmiNetPrefixPrefix } + ::= { atmIlmiNetworkPrefixTable 1 } + +AtmIlmiNetworkPrefixEntry ::= + SEQUENCE { + atmIlmiNetPrefixPrefix AtmIlmiNetworkPrefix, + atmIlmiNetPrefixRowStatus RowStatus + } + +atmIlmiNetPrefixPrefix OBJECT-TYPE + SYNTAX AtmIlmiNetworkPrefix + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network prefix specified for use in ILMI address + registration." + ::= { atmIlmiNetworkPrefixEntry 1 } + +atmIlmiNetPrefixRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Used to create, delete, activate and de-activate network + prefixes used in ILMI address registration." + + ::= { atmIlmiNetworkPrefixEntry 2 } + + -- 17. ATM Switch Address Table + +atmSwitchAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSwitchAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more ATM endsystem addresses on a + per-switch basis. These addresses are used to identify the + switch. When no ILMI network prefixes are configured for certain + interfaces, network prefixes based on the switch address(es) may + be used for ILMI address registration." + ::= { atm2MIBObjects 17 } + +atmSwitchAddressEntry OBJECT-TYPE + SYNTAX AtmSwitchAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM Switch Address table." + INDEX { atmSwitchAddressIndex } + ::= { atmSwitchAddressTable 1 } + +AtmSwitchAddressEntry ::= + SEQUENCE { + atmSwitchAddressIndex Integer32, + atmSwitchAddressAddress OCTET STRING, + atmSwitchAddressRowStatus RowStatus + } + +atmSwitchAddressIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index used to enumerate the ATM endsystem addresses + for this switch." + ::= { atmSwitchAddressEntry 1 } + +atmSwitchAddressAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(13|20)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "An ATM endsystem address or address prefix used to identify this + switch. When no ESI or SEL field is specified, the switch may + generate the ESI and SEL fields automatically to obtain a + complete 20-byte ATM endsystem address." + ::= { atmSwitchAddressEntry 2 } + +atmSwitchAddressRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used to create, delete, activate, and de-activate addresses used + to identify this switch." + ::= { atmSwitchAddressEntry 3 } + + -- 18. ATM VP Cross-Connect Extension Table + +atmVpCrossConnectXTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVpCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per VP Cross-Connect represented in + the atmVpCrossConnectTable." + ::= { atm2MIBObjects 18 } + +atmVpCrossConnectXEntry OBJECT-TYPE + SYNTAX AtmVpCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular ATM VP Cross-Connect. + Each entry provides an two objects that name the Cross-Connect. + One is assigned by the Service User and the other by the Service + Provider." + AUGMENTS { atmVpCrossConnectEntry } + ::= { atmVpCrossConnectXTable 1 } + +AtmVpCrossConnectXEntry ::= SEQUENCE { + atmVpCrossConnectUserName SnmpAdminString, + atmVpCrossConnectProviderName SnmpAdminString +} + +atmVpCrossConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This is a service user assigned textual representation of a VPC + PVC." + ::= { atmVpCrossConnectXEntry 1 } + +atmVpCrossConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is a system supplied textual representation of VPC PVC. It + is assigned by the service provider." + ::= { atmVpCrossConnectXEntry 2 } + + -- 19. ATM VC Cross-Connect Extension Table + +atmVcCrossConnectXTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVcCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per VC Cross-Connect represented in + the atmVcCrossConnectTable." + ::= { atm2MIBObjects 19 } + +atmVcCrossConnectXEntry OBJECT-TYPE + SYNTAX AtmVcCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular ATM VC Cross-Connect. + Each entry provides an two objects that name the Cross-Connect. + One is assigned by the Service User and the other by the Service + Provider." + AUGMENTS { atmVcCrossConnectEntry } + ::= { atmVcCrossConnectXTable 1 } + +AtmVcCrossConnectXEntry ::= SEQUENCE { + atmVcCrossConnectUserName SnmpAdminString, + atmVcCrossConnectProviderName SnmpAdminString +} + +atmVcCrossConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a service user assigned textual representation of a VCC + + + + PVC." + ::= { atmVcCrossConnectXEntry 1 } + +atmVcCrossConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is a system supplied textual representation of VCC PVC. It + is assigned by the service provider." + ::= { atmVcCrossConnectXEntry 2 } + + + -- 20. Currently Failing PVPL Table + +atmCurrentlyFailingPVplTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmCurrentlyFailingPVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating all VPLs for which there is an active row in + the atmVplTable having an atmVplConnKind value of `pvc' and an + atmVplOperStatus with a value other than `up'." + ::= { atm2MIBObjects 20 } + +atmCurrentlyFailingPVplEntry OBJECT-TYPE + SYNTAX AtmCurrentlyFailingPVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VPL for which the + atmVplRowStatus is `active', the atmVplConnKind is `pvc', and the + atmVplOperStatus is other than `up'." + INDEX { ifIndex, atmVplVpi } + ::= { atmCurrentlyFailingPVplTable 1 } + +AtmCurrentlyFailingPVplEntry ::= + SEQUENCE { + atmCurrentlyFailingPVplTimeStamp TimeStamp + } + +atmCurrentlyFailingPVplTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this PVPL began to fail." + ::= { atmCurrentlyFailingPVplEntry 1 } + + + + -- 21. Currently Failing PVCL Table + +atmCurrentlyFailingPVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmCurrentlyFailingPVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating all VCLs for which there is an active row in + the atmVclTable having an atmVclConnKind value of `pvc' and an + atmVclOperStatus with a value other than `up'." + ::= { atm2MIBObjects 21 } + +atmCurrentlyFailingPVclEntry OBJECT-TYPE + SYNTAX AtmCurrentlyFailingPVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VCL for which the + atmVclRowStatus is `active', the atmVclConnKind is `pvc', and the + atmVclOperStatus is other than `up'." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmCurrentlyFailingPVclTable 1 } + +AtmCurrentlyFailingPVclEntry ::= + SEQUENCE { + atmCurrentlyFailingPVclTimeStamp TimeStamp + } + +atmCurrentlyFailingPVclTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this PVCL began to fail." + ::= { atmCurrentlyFailingPVclEntry 1 } + + -- ATM PVC Traps + + atmPvcTraps OBJECT IDENTIFIER ::= { atm2MIBTraps 1 } + + atmPvcTrapsPrefix OBJECT IDENTIFIER ::= { atmPvcTraps 0 } + + atmIntfPvcFailuresTrap NOTIFICATION-TYPE + OBJECTS { ifIndex, atmIntfPvcFailures, + atmIntfCurrentlyFailingPVpls, + atmIntfCurrentlyFailingPVcls } + STATUS current + DESCRIPTION + + + + "A notification indicating that one or more PVPLs or PVCLs on + this interface has failed since the last atmPvcFailuresTrap was + sent. If this trap has not been sent for the last + atmIntfPvcNotificationInterval, then it will be sent on the next + increment of atmIntfPvcFailures." + ::= { atmPvcTrapsPrefix 1 } + + -- Conformance Information + +atm2MIBConformance OBJECT IDENTIFIER ::= {atm2MIB 3} + +atm2MIBGroups OBJECT IDENTIFIER ::= {atm2MIBConformance 1} + +atm2MIBCompliances OBJECT IDENTIFIER ::= {atm2MIBConformance 2} + + -- Compliance Statements + +atm2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which represent ATM + interfaces. The compliance statements are used to determine + if a particular group or object applies to hosts, + networks/switches, or both. The Common group is defined as + applicable to all three." + + MODULE -- this module + MANDATORY-GROUPS { atmCommonGroup } + + -- Objects in the ATM Switch/Service/Host Group + + GROUP atmCommonStatsGroup + DESCRIPTION + "This group is mandatory for systems that are supporting + per-VPC or per-VCC counters." + + OBJECT atmVplLogicalPortDef + MIN-ACCESS read-only + DESCRIPTION + "This object is mandatory for systems support ATM Logical + Port interfaces." + + OBJECT atmIntfSigVccRxTrafficDescrIndex + DESCRIPTION + "This object is mandatory for systems that support negotiation + of signalling VCC traffic parameters through ILMI." + + OBJECT atmIntfSigVccTxTrafficDescrIndex + + + + DESCRIPTION + "This object is mandatory for systems that support negotiation + of signalling VCC traffic parameters through ILMI." + + OBJECT atmCurrentlyFailingPVplTimeStamp + DESCRIPTION + "This object is optional." + + OBJECT atmCurrentlyFailingPVclTimeStamp + DESCRIPTION + "This object is optional." + + OBJECT atmIntfLeafSetupFailures + DESCRIPTION + "This object is optional." + + OBJECT atmIntfLeafSetupRequests + DESCRIPTION + "This object is optional." + + -- Objects in the ATM Switch/Service Group + + GROUP atmSwitchServcGroup + DESCRIPTION + "This group is mandatory for a Switch/Service that implements + ATM interfaces." + + OBJECT atmIfRegAddrRowStatus + 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 atmSvcVpCrossConnectRowStatus + 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 atmSvcVcCrossConnectRowStatus + 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)" + + + + + -- Objects in the ATM Switch/Service Signalling Group + + GROUP atmSwitchServcSigGroup + DESCRIPTION + "This group's write access is not required." + + -- Objects in the ATM Switch/Service Notifications Group + + GROUP atmSwitchServcNotifGroup + DESCRIPTION + "This group is optional for systems implementing support for + an ATM Switch or an ATM Network Service." + + -- Objects in the ATM Switch Group + + GROUP atmSwitchGroup + DESCRIPTION + "This group is optional for a switch that implements ATM + interfaces." + + -- Objects in the ATM Service Group + + GROUP atmServcGroup + DESCRIPTION + "This group is mandatory for systems implementing support for + an ATM Network Service." + + -- Objects in the ATM Host Group + + GROUP atmHostGroup + DESCRIPTION + "This group is mandatory for a Host that implements ATM + interfaces." + + OBJECT atmVclAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclAddrRowStatus + 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)." + + -- ATM Host Sig Descriptor Parameter Group + + + + + GROUP atmHostSigDescrGroup + DESCRIPTION + "This group is mandatory for a Host that implements ATM + interfaces. Write access is not required for this group." + + ::= { atm2MIBCompliances 1 } + + -- ********************************************** + + -- Units of Conformance + -- Mandatory for ATM hosts and switch/service providers + +atmCommonGroup OBJECT-GROUP + +OBJECTS { + atmSigSSCOPConEvents, + atmSigSSCOPErrdPdus, + atmSigDetectSetupAttempts, + atmSigEmitSetupAttempts, + atmSigDetectUnavailRoutes, + atmSigEmitUnavailRoutes, + atmSigDetectUnavailResrcs, + atmSigEmitUnavailResrcs, + atmSigDetectCldPtyEvents, + atmSigEmitCldPtyEvents, + atmSigDetectMsgErrors, + atmSigEmitMsgErrors, + atmSigDetectClgPtyEvents, + atmSigEmitClgPtyEvents, + atmSigDetectTimerExpireds, + atmSigEmitTimerExpireds, + atmSigDetectRestarts, + atmSigEmitRestarts, + atmSigInEstabls, + atmSigOutEstabls, + atmVplLogicalPortDef, + atmVplLogicalPortIndex, + atmInterfaceConfMaxSvpcVpi, + atmInterfaceCurrentMaxSvpcVpi, + atmInterfaceConfMaxSvccVpi, + atmInterfaceCurrentMaxSvccVpi, + atmInterfaceConfMinSvccVci, + atmInterfaceCurrentMinSvccVci, + atmIntfSigVccRxTrafficDescrIndex, + atmIntfSigVccTxTrafficDescrIndex, + atmIntfPvcFailures, + atmIntfCurrentlyFailingPVpls, + atmIntfCurrentlyFailingPVcls, + + + + atmIntfPvcNotificationInterval, + atmIntfPvcFailuresTrapEnable, + atmIntfLeafSetupFailures, + atmIntfLeafSetupRequests, + atmIntfConfigType, + atmIntfActualType, + atmIntfConfigSide, + atmIntfActualSide, + atmIntfIlmiAdminStatus, + atmIntfIlmiOperStatus, + atmIntfIlmiFsmState, + atmIntfIlmiEstablishConPollIntvl, + atmIntfIlmiCheckConPollIntvl, + atmIntfIlmiConPollInactFactor, + atmIntfIlmiPublicPrivateIndctr, + atmCurrentlyFailingPVplTimeStamp, + atmCurrentlyFailingPVclTimeStamp +} + + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service/Host that implements + ATM interfaces." + ::= { atm2MIBGroups 1 } + +atmCommonStatsGroup OBJECT-GROUP + +OBJECTS { + atmVclStatTotalCellIns, + atmVclStatClp0CellIns, + atmVclStatTotalDiscards, + atmVclStatClp0Discards, + atmVclStatTotalCellOuts, + atmVclStatClp0CellOuts, + atmVclStatClp0Tagged, + atmVplStatTotalCellIns, + atmVplStatClp0CellIns, + atmVplStatTotalDiscards, + atmVplStatClp0Discards, + atmVplStatTotalCellOuts, + atmVplStatClp0CellOuts, + atmVplStatClp0Tagged +} + + STATUS current + DESCRIPTION + "A collection of objects providing information + + + + for a Switch/Service/Host that implements + ATM VCL and VPL Statistics" + ::= { atm2MIBGroups 2 } + + atmSwitchServcGroup OBJECT-GROUP + + OBJECTS { + atmIlmiSrvcRegATMAddress, + atmIlmiSrvcRegParm1, + atmIlmiSrvcRegRowStatus, + atmIlmiNetPrefixRowStatus, + atmSvcVpCrossConnectCreationTime, + atmSvcVpCrossConnectRowStatus, + atmSvcVcCrossConnectCreationTime, + atmSvcVcCrossConnectRowStatus, + atmIfRegAddrAddressSource, + atmIfRegAddrOrgScope, + atmIfRegAddrRowStatus} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service that implements ATM interfaces." + ::= { atm2MIBGroups 3 } + + atmSwitchServcSigGroup OBJECT-GROUP + + OBJECTS { + atmSigSupportClgPtyNumDel, + atmSigSupportClgPtySubAddr, + atmSigSupportCldPtySubAddr, + atmSigSupportHiLyrInfo, + atmSigSupportLoLyrInfo, + atmSigSupportBlliRepeatInd, + atmSigSupportAALInfo, + atmSigSupportPrefCarrier} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service that implements ATM signalling." + ::= { atm2MIBGroups 4 } + + atmSwitchServcNotifGroup NOTIFICATION-GROUP + + NOTIFICATIONS { atmIntfPvcFailuresTrap } + STATUS current + DESCRIPTION + "A collection of notifications providing information + for a Switch/Service that implements ATM interfaces." + + + + ::= { atm2MIBGroups 5 } + + atmSwitchGroup OBJECT-GROUP + OBJECTS { + atmSwitchAddressAddress, + atmSwitchAddressRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information + for an ATM switch." + ::= { atm2MIBGroups 6 } + + atmServcGroup OBJECT-GROUP + + OBJECTS { + atmVpCrossConnectUserName, + atmVpCrossConnectProviderName, + atmVcCrossConnectUserName, + atmVcCrossConnectProviderName } + STATUS current + DESCRIPTION + "A collection of objects providing information + for an ATM Network Service." + ::= { atm2MIBGroups 7 } + + atmHostGroup OBJECT-GROUP + + OBJECTS { + atmAal5VclInPkts, + atmAal5VclOutPkts, + atmAal5VclInOctets, + atmAal5VclOutOctets, + atmVclAddrType, + atmVclAddrRowStatus, + atmAddrVclAddrType, + atmVclGenSigDescrIndex} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Host that implements ATM interfaces." + ::= { atm2MIBGroups 8 } + + atmHostSigDescrGroup OBJECT-GROUP + + OBJECTS { + atmSigDescrParamAalType, + atmSigDescrParamAalSscsType, + atmSigDescrParamBhliType, + + + + atmSigDescrParamBhliInfo, + atmSigDescrParamBbcConnConf, + atmSigDescrParamBlliLayer2, + atmSigDescrParamBlliLayer3, + atmSigDescrParamBlliPktSize, + atmSigDescrParamBlliSnapId, + atmSigDescrParamBlliOuiPid, + atmSigDescrParamRowStatus} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Host that implements ATM interfaces." + ::= { atm2MIBGroups 9 } + +END diff --git a/mibs/ietf/BGP4-MIB b/mibs/ietf/BGP4-MIB new file mode 100644 index 0000000..a40e974 --- /dev/null +++ b/mibs/ietf/BGP4-MIB @@ -0,0 +1,1298 @@ +BGP4-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + IpAddress, Integer32, Counter32, Gauge32, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + bgp MODULE-IDENTITY + LAST-UPDATED "200601110000Z" + ORGANIZATION "IETF IDR Working Group" + CONTACT-INFO "E-mail: idr@ietf.org + + Jeffrey Haas, Susan Hares (Editors) + NextHop Technologies + 825 Victors Way + Suite 100 + Ann Arbor, MI 48108-2738 + Tel: +1 734 222-1600 + Fax: +1 734 222-1602 + E-mail: jhaas@nexthop.com + skh@nexthop.com" + + DESCRIPTION + "The MIB module for the BGP-4 protocol. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4273; + see the RFC itself for full legal notices." + + REVISION "200601110000Z" + DESCRIPTION + "Changes from RFC 1657: + + 1) Fixed the definitions of the notifications + to make them equivalent to their initial + definition in RFC 1269. + 2) Added compliance and conformance info. + 3) Updated information for the values of + bgpPeerNegotiatedVersion, bgp4PathAttrLocalPref, + bgp4PathAttrCalcLocalPref, + bgp4PathAttrMultiExitDisc, + bgp4PathAttrASPathSegement. + 4) Added additional clarification comments where + needed. + + + + 5) Noted where objects do not fully reflect + the protocol as Known Issues. + 6) Updated the DESCRIPTION for the + bgp4PathAttrAtomicAggregate object. + 7) The following objects have had their DESCRIPTION + clause modified to remove the text that suggested + (using 'should' verb) initializing the counter + to zero on a transition to the established state: + bgpPeerInUpdates, bgpPeerOutUpdates, + bgpPeerInTotalMessages, bgpPeerOutTotalMessages + Those implementations that still do this are + still compliant with this new wording. + Applications should not assume counters have + started at zero. + + Published as RFC 4273." + + REVISION "199405050000Z" + DESCRIPTION + "Translated to SMIv2 and published as RFC 1657." + + REVISION "199110261839Z" + DESCRIPTION + "Initial version, published as RFC 1269." + ::= { mib-2 15 } + + bgpVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vector of supported BGP protocol version + numbers. Each peer negotiates the version + from this vector. Versions are identified + via the string of bits contained within this + object. The first octet contains bits 0 to + 7, the second octet contains bits 8 to 15, + and so on, with the most significant bit + referring to the lowest bit number in the + octet (e.g., the MSB of the first octet + refers to bit 0). If a bit, i, is present + and set, then the version (i+1) of the BGP + is supported." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgp 1 } + + bgpLocalAs OBJECT-TYPE + + + + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local autonomous system number." + REFERENCE + "RFC 4271, Section 4.2, 'My Autonomous System'." + ::= { bgp 2 } + + -- BGP Peer table. This table contains, one entry per + -- BGP peer, information about the BGP peer. + + bgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "BGP peer table. This table contains, + one entry per BGP peer, information about the + connections with BGP peers." + ::= { bgp 3 } + + bgpPeerEntry OBJECT-TYPE + SYNTAX BgpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about the + connection with a BGP peer." + INDEX { bgpPeerRemoteAddr } + ::= { bgpPeerTable 1 } + + BgpPeerEntry ::= SEQUENCE { + bgpPeerIdentifier + IpAddress, + bgpPeerState + INTEGER, + bgpPeerAdminStatus + INTEGER, + bgpPeerNegotiatedVersion + Integer32, + bgpPeerLocalAddr + IpAddress, + bgpPeerLocalPort + Integer32, + bgpPeerRemoteAddr + IpAddress, + bgpPeerRemotePort + + + + Integer32, + bgpPeerRemoteAs + Integer32, + bgpPeerInUpdates + Counter32, + bgpPeerOutUpdates + Counter32, + bgpPeerInTotalMessages + Counter32, + bgpPeerOutTotalMessages + Counter32, + bgpPeerLastError + OCTET STRING, + bgpPeerFsmEstablishedTransitions + Counter32, + bgpPeerFsmEstablishedTime + Gauge32, + bgpPeerConnectRetryInterval + Integer32, + bgpPeerHoldTime + Integer32, + bgpPeerKeepAlive + Integer32, + bgpPeerHoldTimeConfigured + Integer32, + bgpPeerKeepAliveConfigured + Integer32, + bgpPeerMinASOriginationInterval + Integer32, + bgpPeerMinRouteAdvertisementInterval + Integer32, + bgpPeerInUpdateElapsedTime + Gauge32 + } + + bgpPeerIdentifier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP Identifier of this entry's BGP peer. + This entry MUST be 0.0.0.0 unless the + bgpPeerState is in the openconfirm or the + established state." + REFERENCE + "RFC 4271, Section 4.2, 'BGP Identifier'." + ::= { bgpPeerEntry 1 } + + + + + bgpPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + opensent(4), + openconfirm(5), + established(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP peer connection state." + REFERENCE + "RFC 4271, Section 8.2.2." + ::= { bgpPeerEntry 2 } + + bgpPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + stop(1), + start(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the BGP connection. + A transition from 'stop' to 'start' will cause + the BGP Manual Start Event to be generated. + A transition from 'start' to 'stop' will cause + the BGP Manual Stop Event to be generated. + This parameter can be used to restart BGP peer + connections. Care should be used in providing + write access to this object without adequate + authentication." + REFERENCE + "RFC 4271, Section 8.1.2." + ::= { bgpPeerEntry 3 } + + bgpPeerNegotiatedVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated version of BGP running between + the two peers. + + This entry MUST be zero (0) unless the + bgpPeerState is in the openconfirm or the + + + + established state. + + Note that legal values for this object are + between 0 and 255." + REFERENCE + "RFC 4271, Section 4.2. + RFC 4271, Section 7." + ::= { bgpPeerEntry 4 } + + bgpPeerLocalAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local IP address of this entry's BGP + connection." + ::= { bgpPeerEntry 5 } + + bgpPeerLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port for the TCP connection between + the BGP peers." + ::= { bgpPeerEntry 6 } + + bgpPeerRemoteAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote IP address of this entry's BGP + peer." + ::= { bgpPeerEntry 7 } + + bgpPeerRemotePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote port for the TCP connection + between the BGP peers. Note that the + objects bgpPeerLocalAddr, + bgpPeerLocalPort, bgpPeerRemoteAddr, and + bgpPeerRemotePort provide the appropriate + reference to the standard MIB TCP + connection table." + + + + ::= { bgpPeerEntry 8 } + + bgpPeerRemoteAs OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote autonomous system number received in + the BGP OPEN message." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgpPeerEntry 9 } + + bgpPeerInUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BGP UPDATE messages + received on this connection." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgpPeerEntry 10 } + + bgpPeerOutUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BGP UPDATE messages + transmitted on this connection." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgpPeerEntry 11 } + + bgpPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages received + from the remote peer on this connection." + REFERENCE + "RFC 4271, Section 4." + ::= { bgpPeerEntry 12 } + + bgpPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages transmitted to + the remote peer on this connection." + REFERENCE + "RFC 4271, Section 4." + ::= { bgpPeerEntry 13 } + + bgpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last error code and subcode seen by this + peer on this connection. If no error has + occurred, this field is zero. Otherwise, the + first byte of this two byte OCTET STRING + contains the error code, and the second byte + contains the subcode." + REFERENCE + "RFC 4271, Section 4.5." + ::= { bgpPeerEntry 14 } + + bgpPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the BGP FSM + transitioned into the established state + for this peer." + REFERENCE + "RFC 4271, Section 8." + ::= { bgpPeerEntry 15 } + + bgpPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This timer indicates how long (in + seconds) this peer has been in the + established state or how long + since this peer was last in the + established state. It is set to zero when + a new peer is configured or when the router is + + + + booted." + REFERENCE + "RFC 4271, Section 8." + ::= { bgpPeerEntry 16 } + + bgpPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + ConnectRetry timer. The suggested value + for this timer is 120 seconds." + REFERENCE + "RFC 4271, Section 8.2.2. This is the value used + to initialize the 'ConnectRetryTimer'." + ::= { bgpPeerEntry 17 } + + bgpPeerHoldTime OBJECT-TYPE + SYNTAX Integer32 ( 0 | 3..65535 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time interval (in seconds) for the Hold + Timer established with the peer. The + value of this object is calculated by this + BGP speaker, using the smaller of the + values in bgpPeerHoldTimeConfigured and the + Hold Time received in the OPEN message. + + This value must be at least three seconds + if it is not zero (0). + + If the Hold Timer has not been established + with the peer this object MUST have a value + of zero (0). + + If the bgpPeerHoldTimeConfigured object has + a value of (0), then this object MUST have a + value of (0)." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgpPeerEntry 18 } + + bgpPeerKeepAlive OBJECT-TYPE + SYNTAX Integer32 ( 0 | 1..21845 ) + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time interval (in seconds) for the KeepAlive + timer established with the peer. The value + of this object is calculated by this BGP + speaker such that, when compared with + bgpPeerHoldTime, it has the same proportion + that bgpPeerKeepAliveConfigured has, + compared with bgpPeerHoldTimeConfigured. + + If the KeepAlive timer has not been established + with the peer, this object MUST have a value + of zero (0). + + If the of bgpPeerKeepAliveConfigured object + has a value of (0), then this object MUST have + a value of (0)." + REFERENCE + "RFC 4271, Section 4.4." + ::= { bgpPeerEntry 19 } + + bgpPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Integer32 ( 0 | 3..65535 ) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the Hold Time + configured for this BGP speaker with this + peer. This value is placed in an OPEN + message sent to this peer by this BGP + speaker, and is compared with the Hold + Time field in an OPEN message received + from the peer when determining the Hold + Time (bgpPeerHoldTime) with the peer. + This value must not be less than three + seconds if it is not zero (0). If it is + zero (0), the Hold Time is NOT to be + established with the peer. The suggested + value for this timer is 90 seconds." + REFERENCE + "RFC 4271, Section 4.2. + RFC 4271, Section 10." + ::= { bgpPeerEntry 20 } + + bgpPeerKeepAliveConfigured OBJECT-TYPE + + + + SYNTAX Integer32 ( 0 | 1..21845 ) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + KeepAlive timer configured for this BGP + speaker with this peer. The value of this + object will only determine the + KEEPALIVE messages' frequency relative to + the value specified in + bgpPeerHoldTimeConfigured; the actual + time interval for the KEEPALIVE messages is + indicated by bgpPeerKeepAlive. A + reasonable maximum value for this timer + would be one third of that of + bgpPeerHoldTimeConfigured. + If the value of this object is zero (0), + no periodical KEEPALIVE messages are sent + to the peer after the BGP connection has + been established. The suggested value for + this timer is 30 seconds." + REFERENCE + "RFC 4271, Section 4.4. + RFC 4271, Section 10." + ::= { bgpPeerEntry 21 } + + bgpPeerMinASOriginationInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + MinASOriginationInterval timer. + The suggested value for this timer is 15 + seconds." + REFERENCE + "RFC 4271, Section 9.2.1.2. + RFC 4271, Section 10." + ::= { bgpPeerEntry 22 } + + bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "Time interval (in seconds) for the + MinRouteAdvertisementInterval timer. + The suggested value for this timer is 30 + seconds for EBGP connections and 5 + seconds for IBGP connections." + REFERENCE + "RFC 4271, Section 9.2.1.1. + RFC 4271, Section 10." + ::= { bgpPeerEntry 23 } + + bgpPeerInUpdateElapsedTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time (in seconds) since the last BGP + UPDATE message was received from the peer. + Each time bgpPeerInUpdates is incremented, + the value of this object is set to zero (0)." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 8.2.2, Established state." + ::= { bgpPeerEntry 24 } + + bgpIdentifier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP Identifier of the local system." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgp 4 } + + -- BGP Received Path Attribute Table. This table contains + -- one entry per path to a network, and path attributes + -- received from all peers running BGP version 3 or less. + -- This table is obsolete, having been replaced in + -- functionality by the bgp4PathAttrTable. + + bgpRcvdPathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPathAttrEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The BGP Received Path Attribute Table + contains information about paths to + + + + destination networks, received from all + peers running BGP version 3 or less." + ::= { bgp 5 } + + bgpPathAttrEntry OBJECT-TYPE + SYNTAX BgpPathAttrEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "Information about a path to a network." + INDEX { bgpPathAttrDestNetwork, + bgpPathAttrPeer } + ::= { bgpRcvdPathAttrTable 1 } + + BgpPathAttrEntry ::= SEQUENCE { + bgpPathAttrPeer + IpAddress, + bgpPathAttrDestNetwork + IpAddress, + bgpPathAttrOrigin + INTEGER, + bgpPathAttrASPath + OCTET STRING, + bgpPathAttrNextHop + IpAddress, + bgpPathAttrInterASMetric + Integer32 + } + + bgpPathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The IP address of the peer where the path + information was learned." + ::= { bgpPathAttrEntry 1 } + + bgpPathAttrDestNetwork OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the destination network." + REFERENCE + "RFC 1267, Section 4.3." + ::= { bgpPathAttrEntry 2 } + + + + + bgpPathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via the + -- EGP protocol + incomplete(3) -- networks that + -- are learned by some other + -- means + } + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The ultimate origin of the path information." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 3 } + + bgpPathAttrASPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..255)) + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The set of ASes that must be traversed to reach + the network. This object is probably best + represented as SEQUENCE OF INTEGER. For SMI + compatibility, though, it is represented as + OCTET STRING. Each AS is represented as a pair + of octets according to the following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255;" + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 4 } + + bgpPathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the border router that should + be used for the destination network." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 5 } + + + + bgpPathAttrInterASMetric OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The optional inter-AS metric. If this + attribute has not been provided for this route, + the value for this object is 0." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 6 } + + -- BGP-4 Received Path Attribute Table. This table + -- contains one entry per path to a network, and path + -- attributes received from all peers running BGP-4. + + bgp4PathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Bgp4PathAttrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BGP-4 Received Path Attribute Table + contains information about paths to + destination networks, received from all + BGP4 peers." + ::= { bgp 6 } + + bgp4PathAttrEntry OBJECT-TYPE + SYNTAX Bgp4PathAttrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a path to a network." + INDEX { bgp4PathAttrIpAddrPrefix, + bgp4PathAttrIpAddrPrefixLen, + bgp4PathAttrPeer } + ::= { bgp4PathAttrTable 1 } + + Bgp4PathAttrEntry ::= SEQUENCE { + bgp4PathAttrPeer + IpAddress, + bgp4PathAttrIpAddrPrefixLen + Integer32, + bgp4PathAttrIpAddrPrefix + IpAddress, + bgp4PathAttrOrigin + INTEGER, + + + + bgp4PathAttrASPathSegment + OCTET STRING, + bgp4PathAttrNextHop + IpAddress, + bgp4PathAttrMultiExitDisc + Integer32, + bgp4PathAttrLocalPref + Integer32, + bgp4PathAttrAtomicAggregate + INTEGER, + bgp4PathAttrAggregatorAS + Integer32, + bgp4PathAttrAggregatorAddr + IpAddress, + bgp4PathAttrCalcLocalPref + Integer32, + bgp4PathAttrBest + INTEGER, + bgp4PathAttrUnknown + OCTET STRING + } + + bgp4PathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the peer where the path + information was learned." + ::= { bgp4PathAttrEntry 1 } + + bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length in bits of the IP address prefix in + the Network Layer Reachability + Information field." + ::= { bgp4PathAttrEntry 2 } + + bgp4PathAttrIpAddrPrefix OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An IP address prefix in the Network Layer + Reachability Information field. This object + + + + is an IP address containing the prefix with + length specified by + bgp4PathAttrIpAddrPrefixLen. + Any bits beyond the length specified by + bgp4PathAttrIpAddrPrefixLen are zeroed." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgp4PathAttrEntry 3 } + + bgp4PathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via the + -- EGP protocol + incomplete(3) -- networks that + -- are learned by some other + -- means + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ultimate origin of the path + information." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.1." + ::= { bgp4PathAttrEntry 4 } + + bgp4PathAttrASPathSegment OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence of AS path segments. Each AS + path segment is represented by a triple + . + + The type is a 1-octet field that has two + possible values: + 1 AS_SET: unordered set of ASes that a + route in the UPDATE message + has traversed + + 2 AS_SEQUENCE: ordered set of ASes that + a route in the UPDATE message + has traversed. + + The length is a 1-octet field containing the + + + + number of ASes in the value field. + + The value field contains one or more AS + numbers. Each AS is represented in the octet + string as a pair of octets according to the + following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255; + + Known Issues: + o BGP Confederations will result in + a type of either 3 or 4. + o An AS Path may be longer than 255 octets. + This may result in this object containing + a truncated AS Path." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.2." + ::= { bgp4PathAttrEntry 5 } + + bgp4PathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the border router that + should be used for the destination + network. This address is the NEXT_HOP + address received in the UPDATE packet." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.3." + ::= { bgp4PathAttrEntry 6 } + + bgp4PathAttrMultiExitDisc OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This metric is used to discriminate + between multiple exit points to an + adjacent autonomous system. A value of -1 + indicates the absence of this attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number. Thus, this + + + + object cannot represent the full + range of the protocol." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.4." + ::= { bgp4PathAttrEntry 7 } + + bgp4PathAttrLocalPref OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The originating BGP4 speaker's degree of + preference for an advertised route. A + value of -1 indicates the absence of this + attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number and thus this + object cannot represent the full + range of the protocol." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.5." + ::= { bgp4PathAttrEntry 8 } + + bgp4PathAttrAtomicAggregate OBJECT-TYPE + SYNTAX INTEGER { + lessSpecificRouteNotSelected(1), + -- Typo corrected from RFC 1657 + lessSpecificRouteSelected(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the ATOMIC_AGGREGATE attribute is present + in the Path Attributes then this object MUST + have a value of 'lessSpecificRouteNotSelected'. + + If the ATOMIC_AGGREGATE attribute is missing + in the Path Attributes then this object MUST + have a value of 'lessSpecificRouteSelected'. + + Note that ATOMIC_AGGREGATE is now a primarily + informational attribute." + REFERENCE + "RFC 4271, Sections 5.1.6 and 9.1.4." + + + + ::= { bgp4PathAttrEntry 9 } + + bgp4PathAttrAggregatorAS OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AS number of the last BGP4 speaker that + performed route aggregation. A value of + zero (0) indicates the absence of this + attribute. + + Note that propagation of AS of zero is illegal + in the Internet." + REFERENCE + "RFC 4271, Section 5.1.7. + RFC 4271, Section 9.2.2.2." + ::= { bgp4PathAttrEntry 10 } + + bgp4PathAttrAggregatorAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the last BGP4 speaker + that performed route aggregation. A + value of 0.0.0.0 indicates the absence + of this attribute." + REFERENCE + "RFC 4271, Section 5.1.7. + RFC 4271, Section 9.2.2.2." + ::= { bgp4PathAttrEntry 11 } + + bgp4PathAttrCalcLocalPref OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The degree of preference calculated by the + receiving BGP4 speaker for an advertised + route. A value of -1 indicates the + absence of this attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number and thus this + object cannot represent the full + range of the protocol." + + + + REFERENCE + "RFC 4271, Section 9.1.1." + ::= { bgp4PathAttrEntry 12 } + + bgp4PathAttrBest OBJECT-TYPE + SYNTAX INTEGER { + false(1),-- not chosen as best route + true(2) -- chosen as best route + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this route + was chosen as the best BGP4 route for this + destination." + REFERENCE + "RFC 4271, Section 9.1.2." + ::= { bgp4PathAttrEntry 13 } + + bgp4PathAttrUnknown OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One or more path attributes not understood by + this BGP4 speaker. + + Path attributes are recorded in the Update Path + attribute format of type, length, value. + + Size zero (0) indicates the absence of such + attributes. + + Octets beyond the maximum size, if any, are not + recorded by this object. + + Known Issues: + o Attributes understood by this speaker, but not + represented in this MIB, are unavailable to + the agent." + REFERENCE + "RFC 4271, Section 5." + ::= { bgp4PathAttrEntry 14 } + + -- Traps. + -- Note that in RFC 1657, bgpTraps was incorrectly + -- assigned a value of { bgp 7 } and each of the + -- traps had the bgpPeerRemoteAddr object inappropriately + + + + -- removed from their OBJECTS clause. The following + -- definitions restore the semantics of the traps as + -- they were initially defined in RFC 1269. + + bgpNotification OBJECT IDENTIFIER ::= { bgp 0 } + + bgpEstablishedNotification NOTIFICATION-TYPE + OBJECTS { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + STATUS current + DESCRIPTION + "The bgpEstablishedNotification event is generated + when the BGP FSM enters the established state. + + This Notification replaces the bgpEstablished + Notification." + ::= { bgpNotification 1 } + + bgpBackwardTransNotification NOTIFICATION-TYPE + OBJECTS { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + STATUS current + DESCRIPTION + "The bgpBackwardTransNotification event is + generated when the BGP FSM moves from a higher + numbered state to a lower numbered state. + + This Notification replaces the + bgpBackwardsTransition Notification." + ::= { bgpNotification 2 } + + -- { bgp 7 } is deprecated. Do not allocate new objects or + -- notifications underneath this branch. + + bgpTraps OBJECT IDENTIFIER ::= { bgp 7 } -- deprecated + + bgpEstablished NOTIFICATION-TYPE + OBJECTS { bgpPeerLastError, + bgpPeerState } + STATUS deprecated + DESCRIPTION + "The bgpEstablished event is generated when + the BGP FSM enters the established state. + + This Notification has been replaced by the + bgpEstablishedNotification Notification." + + + + ::= { bgpTraps 1 } + + bgpBackwardTransition NOTIFICATION-TYPE + OBJECTS { bgpPeerLastError, + bgpPeerState } + STATUS deprecated + DESCRIPTION + "The bgpBackwardTransition event is generated + when the BGP FSM moves from a higher numbered + state to a lower numbered state. + + This Notification has been replaced by the + bgpBackwardTransNotification Notification." + ::= { bgpTraps 2 } + + -- Conformance information + + bgp4MIBConformance OBJECT IDENTIFIER + ::= { bgp 8 } + bgp4MIBCompliances OBJECT IDENTIFIER + ::= { bgp4MIBConformance 1 } + bgp4MIBGroups OBJECT IDENTIFIER + ::= { bgp4MIBConformance 2 } + + -- Compliance statements + + bgp4MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which + implement the BGP4 mib." + MODULE -- this module + MANDATORY-GROUPS { bgp4MIBGlobalsGroup, + bgp4MIBPeerGroup, + bgp4MIBPathAttrGroup } + GROUP bgp4MIBNotificationGroup + DESCRIPTION + "Implementation of BGP Notifications are + completely optional in this MIB." + ::= { bgp4MIBCompliances 1 } + + bgp4MIBDeprecatedCompliances MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement documenting deprecated + objects in the BGP4 mib." + MODULE -- this module + GROUP bgp4MIBTrapGroup + + + + DESCRIPTION + "Group containing TRAP objects that were + improperly converted from SMIv1 in RFC 1657. + The proper semantics have been restored + with the objects in bgp4MIBNotificationGroup." + ::= { bgp4MIBCompliances 2 } + + bgp4MIBObsoleteCompliances MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement documenting obsolete + objects in the BGP4 mib." + MODULE -- this module + GROUP bgpRcvdPathAttrGroup + DESCRIPTION + "Group containing objects relevant to BGP-3 + and earlier objects." + ::= { bgp4MIBCompliances 3 } + + -- Units of conformance + + bgp4MIBGlobalsGroup OBJECT-GROUP + OBJECTS { bgpVersion, + bgpLocalAs, + bgpIdentifier } + STATUS current + DESCRIPTION + "A collection of objects providing + information on global BGP state." + ::= { bgp4MIBGroups 1 } + + bgp4MIBPeerGroup OBJECT-GROUP + OBJECTS { bgpPeerIdentifier, + bgpPeerState, + bgpPeerAdminStatus, + bgpPeerNegotiatedVersion, + bgpPeerLocalAddr, + bgpPeerLocalPort, + bgpPeerRemoteAddr, + bgpPeerRemotePort, + bgpPeerRemoteAs, + bgpPeerInUpdates, + bgpPeerOutUpdates, + bgpPeerInTotalMessages, + bgpPeerOutTotalMessages, + bgpPeerLastError, + bgpPeerFsmEstablishedTransitions, + bgpPeerFsmEstablishedTime, + + + + bgpPeerConnectRetryInterval, + bgpPeerHoldTime, + bgpPeerKeepAlive, + bgpPeerHoldTimeConfigured, + bgpPeerKeepAliveConfigured, + bgpPeerMinASOriginationInterval, + bgpPeerMinRouteAdvertisementInterval, + bgpPeerInUpdateElapsedTime } + STATUS current + DESCRIPTION + "A collection of objects for managing + BGP peers." + ::= { bgp4MIBGroups 2 } + + bgpRcvdPathAttrGroup OBJECT-GROUP + OBJECTS { bgpPathAttrPeer, + bgpPathAttrDestNetwork, + bgpPathAttrOrigin, + bgpPathAttrASPath, + bgpPathAttrNextHop, + bgpPathAttrInterASMetric } + STATUS obsolete + DESCRIPTION + "A collection of objects for managing BGP-3 and + earlier path entries. + + This conformance group, like BGP-3, is obsolete." + ::= { bgp4MIBGroups 3 } + + bgp4MIBPathAttrGroup OBJECT-GROUP + OBJECTS { bgp4PathAttrPeer, + bgp4PathAttrIpAddrPrefixLen, + bgp4PathAttrIpAddrPrefix, + bgp4PathAttrOrigin, + bgp4PathAttrASPathSegment, + bgp4PathAttrNextHop, + bgp4PathAttrMultiExitDisc, + bgp4PathAttrLocalPref, + bgp4PathAttrAtomicAggregate, + bgp4PathAttrAggregatorAS, + bgp4PathAttrAggregatorAddr, + bgp4PathAttrCalcLocalPref, + bgp4PathAttrBest, + bgp4PathAttrUnknown } + STATUS current + DESCRIPTION + "A collection of objects for managing + BGP path entries." + + + + ::= { bgp4MIBGroups 4 } + + bgp4MIBTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { bgpEstablished, + bgpBackwardTransition } + STATUS deprecated + DESCRIPTION + "A collection of notifications for signaling + changes in BGP peer relationships. + + Obsoleted by bgp4MIBNotificationGroup" + ::= { bgp4MIBGroups 5 } + + bgp4MIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { bgpEstablishedNotification, + bgpBackwardTransNotification } + STATUS current + DESCRIPTION + "A collection of notifications for signaling + changes in BGP peer relationships. + + Obsoletes bgp4MIBTrapGroup." + ::= { bgp4MIBGroups 6 } + +END diff --git a/mibs/ietf/BLDG-HVAC-MIB b/mibs/ietf/BLDG-HVAC-MIB new file mode 100644 index 0000000..b609022 --- /dev/null +++ b/mibs/ietf/BLDG-HVAC-MIB @@ -0,0 +1,612 @@ +BLDG-HVAC-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, Counter32, + Gauge32, OBJECT-TYPE, Unsigned32, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, + TimeStamp, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +bldgHVACMIB MODULE-IDENTITY + LAST-UPDATED "200303270000Z" + ORGANIZATION "SNMPCONF working group + E-mail: snmpconf@snmp.com" + CONTACT-INFO + "Jon Saperia + Postal: JDS Consulting + 174 Chapman Street + Watertown, MA 02472 + U.S.A. + Phone: +1 617 744 1079 + E-mail: saperia@jdscons.com + + Wayne Tackabury + Postal: Gold Wire Technology + 411 Waverley Oaks Rd. + Waltham, MA 02452 + U.S.A. + Phone: +1 781 398 8800 + E-mail: wayne@goldwiretech.com + + + + Michael MacFaden + Postal: Riverstone Networks + 5200 Great America Pkwy. + Santa Clara, CA 95054 + U.S.A. + Phone: +1 408 878 6500 + E-mail: mrm@riverstonenet.com + + David Partain + Postal: Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + E-mail: David.Partain@ericsson.com" + DESCRIPTION + "This example MIB module defines a set of management objects + for heating ventilation and air conditioning systems. It + also includes objects that can be used to create policies + that are applied to rooms. This eliminates the need to send + per-instance configuration commands to the system. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3512; see the RFC itself for + full legal notices." + + REVISION "200303270000Z" + DESCRIPTION + "Initial version of BLDG-HVAC-MIB as published in RFC 3512." + ::= { experimental 122 } + +bldgHVACObjects OBJECT IDENTIFIER ::= { bldgHVACMIB 1 } +bldgConformance OBJECT IDENTIFIER ::= { bldgHVACMIB 2 } + +-- +-- Textual Conventions +-- + +BldgHvacOperation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Operations supported by a heating and cooling system. + A reference to underlying general systems would go here." + SYNTAX INTEGER { + heat(1), + cool(2) + } +-- +-- HVAC Objects Group + + + +-- + +bldgHVACTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the representation and data control + for building HVAC by each individual office. + The table has rows for, and is indexed by a specific + floor and office number. Each such row includes + HVAC statistical and current status information for + the associated office. The row also contains a + bldgHVACCfgTemplate columnar object that relates the + bldgHVACTable row to a row in the bldgHVACCfgTemplateTable. + If this value is nonzero, then the instance in the row + that has a value for how the HVAC has been configured + in the associated template (bldgHVACCfgTeplateTable row). + Hence, the bldgHVACCfgTeplateTable row contains the + specific configuration values for the offices as described + in this table." + ::= { bldgHVACObjects 1 } + +bldgHVACEntry OBJECT-TYPE + SYNTAX BldgHVACEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the bldgHVACTable. Each row represents a particular + office in the building, qualified by its floor and office + number. A given row instance can be created or deleted by + set operations upon its bldgHVACStatus columnar + object instance." + INDEX { bldgHVACFloor, bldgHVACOffice } + ::= { bldgHVACTable 1 } + +BldgHVACEntry ::= SEQUENCE { + bldgHVACFloor Unsigned32, + bldgHVACOffice Unsigned32, + bldgHVACCfgTemplate Unsigned32, + bldgHVACFanSpeed Gauge32, + bldgHVACCurrentTemp Gauge32, + bldgHVACCoolOrHeatMins Counter32, + bldgHVACDiscontinuityTime TimeStamp, + bldgHVACOwner SnmpAdminString, + bldgHVACStorageType StorageType, + bldgHVACStatus RowStatus + } + + + +bldgHVACFloor OBJECT-TYPE + SYNTAX Unsigned32 (1..1000) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This portion of the index indicates the floor of the + building. The ground floor is considered the + first floor. For the purposes of this example, + floors under the ground floor cannot be + controlled using this MIB module." + ::= { bldgHVACEntry 1 } + +bldgHVACOffice OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This second component of the index specifies the + office number." + ::= { bldgHVACEntry 2 } + +bldgHVACCfgTemplate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index (bldgHVACCfgTemplateIndex instance) + of an entry in the 'bldgHVACCfgTemplateTable'. + The bldgHVACCfgTable row instance referenced + is a pre-made configuration 'template' + that represents the configuration described + by the bldgHVACCfgTemplateInfoDescr object. Note + that not all configurations will be under a + defined template. As a result, a row in this + bldgHVACTable may point to an entry in the + bldgHVACCfgTemplateTable that does not in turn + have a reference (bldgHVACCfgTemplateInfo) to an + entry in the bldgHVACCfgTemplateInfoTable. The + benefit of this approach is that all + configuration information is available in one + table whether all elements in the system are + derived from configured templates or not. + + Where the instance value for this colunmar object + is zero, this row represents data for an office + whose HVAC status can be monitored using the + read-only columnar object instances of this + row, but is not under the configuration control + + + + of the agent." + ::= { bldgHVACEntry 3 } + +bldgHVACFanSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "revolutions per minute" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Shows the revolutions per minute of the fan. Fan speed + will vary based on the difference between + bldgHVACCfgTemplateDesiredTemp and bldgHVACCurrentTemp. The + speed is measured in revolutions of the fan blade per minute." + ::= { bldgHVACEntry 4 } + +bldgHVACCurrentTemp OBJECT-TYPE + SYNTAX Gauge32 + UNITS "degrees in celsius" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current measured temperature in the office. Should + the current temperature be measured at a value of less + than zero degrees celsius, a read of the instance + for this object will return a value of zero." + ::= { bldgHVACEntry 5 } + +bldgHVACCoolOrHeatMins OBJECT-TYPE + SYNTAX Counter32 + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of heating or cooling minutes that have + been consumed since the row was activated. Notice that + whether the minutes represent heating or cooling is a + function of the configuration of this row. If the system + is re-initialized from a cooling to heating function or + vice versa, then the counter would start over again. This + effect is similar to a reconfiguration of some network + interface cards. When parameters that impact + configuration are changed, the subsystem must be + re-initialized. 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 + bldgHVACDiscontinuityTime." + ::= { bldgHVACEntry 6 } + + + + +bldgHVACDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any heating or cooling operation for the office designated + by this row instance experienced a discontinuity. If + no such discontinuities have occurred since the last re- + initialization of the this row, then this object contains a + zero value." + ::= { bldgHVACEntry 7 } + +bldgHVACOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the operator/system that + last modified this entry. When a new entry + is created, a valid SnmpAdminString must + be supplied. If, on the other hand, this + entry is populated by the agent 'discovering' + unconfigured rooms, the empty string is a valid + value for this object." + ::= { bldgHVACEntry 8 } + +bldgHVACStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table in system storage, + as it pertains to permanence across system resets. A columnar + instance of this object with value 'permanent' need not allow + write-access to any of the columnar object instances in the + containing row." + ::= { bldgHVACEntry 9 } + +bldgHVACStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the creation and activation status of + a row in this table. + + No attempt to modify a row columnar object instance value in + + + + the bldgHVACTable should be issued while the value of + bldgHVACStatus is active(1). Should an agent receive a SET + PDU attempting such a modification in this state, an + inconsistentValue error should be returned as a result of + the SET attempt." + ::= { bldgHVACEntry 10 } +-- +-- HVAC Configuration Template Table +-- + +bldgHVACCfgTemplateInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACCfgTemplateInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides unique string identification for + HVAC templates in a network. If it were necessary to + configure rooms to deliver a particular quality of climate + control with regard to cooling or heating, the index string + of a row in this table could be the template name. + The bldgHVACCfgCfgTemplateInfoDescription + contains a brief description of the template service objective + such as: provides summer cooling settings for executive + offices. The bldgHVACCfgTemplateInfo in the + bldgHVACCfgTemplateTable will contain the pointer to the + relevant row in this table if it is intended that items + that point to a row in the bldgHVACCfgTemplateInfoTable be + identifiable as being under template control though this + mechanism." + + ::= { bldgHVACObjects 2 } + +bldgHVACCfgTemplateInfoEntry OBJECT-TYPE + SYNTAX BldgHVACCfgTemplateInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a particular template and + description. A given row instance can be created or + deleted by set operations upon its + bldgHVACCfgTemplateInfoStatus columnar object + instance." + INDEX { bldgHVACCfgTemplateInfoIndex } + ::= { bldgHVACCfgTemplateInfoTable 1 } + +BldgHVACCfgTemplateInfoEntry ::= SEQUENCE { + bldgHVACCfgTemplateInfoIndex Unsigned32, + bldgHVACCfgTemplateInfoID SnmpAdminString, + + + + bldgHVACCfgTemplateInfoDescr SnmpAdminString, + bldgHVACCfgTemplateInfoOwner SnmpAdminString, + bldgHVACCfgTemplateInfoStatus RowStatus, + bldgHVACCfgTemplateInfoStorType StorageType + } + +bldgHVACCfgTemplateInfoIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index to a row in this table." + ::= { bldgHVACCfgTemplateInfoEntry 1 } + +bldgHVACCfgTemplateInfoID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Textual identifier for this table row, and, consequently + the template. This should be a unique name within + an administrative domain for a particular template so that + all systems in a network that are under the same template + can have the same 'handle' (e.g., 'Executive Offices', + 'Lobby Areas')." + ::= { bldgHVACCfgTemplateInfoEntry 2 } + + +bldgHVACCfgTemplateInfoDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A general description of the template. One example might + be - Controls the cooling for offices on higher floors + during the summer." + ::= { bldgHVACCfgTemplateInfoEntry 3 } + +bldgHVACCfgTemplateInfoOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the operator/system that last modified + this entry." + ::= { bldgHVACCfgTemplateInfoEntry 4 } + +bldgHVACCfgTemplateInfoStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation status of this row. + + No attempt to modify a row columnar object instance value in + the bldgHVACCfgTemplateInfo Table should be issued while the + value of bldgHVACCfgTemplateInfoStatus is active(1). + Should an agent receive a SET PDU attempting such a modification + in this state, an inconsistentValue error should be returned as + a result of the SET attempt." + ::= { bldgHVACCfgTemplateInfoEntry 5 } + +bldgHVACCfgTemplateInfoStorType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table in system storage, + as it pertains to permanence across system resets. A columnar + instance of this object with value 'permanent' need not allow + write-access to any of the columnar object instances in the + containing row." + ::= { bldgHVACCfgTemplateInfoEntry 6 } + +-- +-- HVAC Configuration Template Table +-- +bldgHVACCfgTemplateTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACCfgTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the templates, which + can be used to set defaults that will + be applied to specific offices. The application + of those values is accomplished by having a row + instance of the bldgHVACTable reference a row of + this table (by the value of the former's + bldgHVACCfgTemplate columnar instance). Identifying + information concerning a row instance of this table + can be found in the columnar data of the row instance + of the bldgHVACCfgTemplateInfoTable entry referenced + by the bldgHVACCfgTemplateInfo columnar object of + this table." + ::= { bldgHVACObjects 3 } + + + + +bldgHVACCfgTemplateEntry OBJECT-TYPE + SYNTAX BldgHVACCfgTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single set of template parameters + that can be applied to selected instances - in this case + offices. These policies will be turned on and off by the + policy module through its scheduling facilities. + + A given row instance can be created or + deleted by set operations upon its + bldgHVACCfgTemplateStatus columnar object instance." + INDEX { bldgHVACCfgTemplateIndex } + ::= { bldgHVACCfgTemplateTable 1 } + +BldgHVACCfgTemplateEntry ::= SEQUENCE { + bldgHVACCfgTemplateIndex Unsigned32, + bldgHVACCfgTemplateDesiredTemp Gauge32, + bldgHVACCfgTemplateCoolOrHeat BldgHvacOperation, + bldgHVACCfgTemplateInfo Unsigned32, + bldgHVACCfgTemplateOwner SnmpAdminString, + bldgHVACCfgTemplateStorage StorageType, + bldgHVACCfgTemplateStatus RowStatus +} + +bldgHVACCfgTemplateIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each defined template in this + table. This value can be referenced as a row index + by any MIB module that needs access to this information. + The bldgHVACCfgTemplate will point to entries in this + table." + ::= { bldgHVACCfgTemplateEntry 1 } + +bldgHVACCfgTemplateDesiredTemp OBJECT-TYPE + SYNTAX Gauge32 + UNITS "degrees in celsius" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the desired temperature setting. It might be + changed at different times of the day or based on + seasonal conditions. It is permitted to change this value + by first moving the row to an inactive state, making the + + + + change and then reactivating the row." + ::= { bldgHVACCfgTemplateEntry 2 } + +bldgHVACCfgTemplateCoolOrHeat OBJECT-TYPE + SYNTAX BldgHvacOperation + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This controls the heating and cooling mechanism and is + set-able by building maintenance. It is permitted to + change this value by first moving the row to an inactive + state, making the change and then reactivating the row." + ::= { bldgHVACCfgTemplateEntry 3 } + +bldgHVACCfgTemplateInfo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object points to a row in the + bldgHVACCfgTemplateInfoTable. This controls the + heating and cooling mechanism and is set-able by + building maintenance. It is permissible to change + this value by first moving the row to an inactive + state, making the change and then reactivating + the row. A value of zero means that this entry + is not associated with a named template found + in the bldgHVACCfgTemplateInfoTable." + ::= { bldgHVACCfgTemplateEntry 4 } + +bldgHVACCfgTemplateOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the administrative entity + that created this row of the table." + ::= { bldgHVACCfgTemplateEntry 5 } + +bldgHVACCfgTemplateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table across + system resets. A columnar instance of this object with + value 'permanent' need not allow write-access to any + of the columnar object instances in the containing row." + + + + ::= { bldgHVACCfgTemplateEntry 6 } + +bldgHVACCfgTemplateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation status of this row of the table. + + No attempt to modify a row columnar object instance value in + the bldgHVACCfgTemplateTable should be issued while the + value of bldgHVACCfgTemplateStatus is active(1). + Should an agent receive a SET PDU attempting such a modification + in this state, an inconsistentValue error should be returned as + a result of the SET attempt." + ::= { bldgHVACCfgTemplateEntry 7 } + +-- +-- Conformance Information +-- + +bldgCompliances OBJECT IDENTIFIER ::= { bldgConformance 1 } +bldgGroups OBJECT IDENTIFIER ::= { bldgConformance 2 } + +-- Compliance Statements + +bldgCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the BLDG-HVAC-MIB. The + bldgHVACObjects group must be implemented to conform to the + BLDG-HVAC-MIB." + MODULE -- this module + + GROUP bldgHVACObjectsGroup + DESCRIPTION + "The bldgHVACObjects is mandatory for all systems that + support HVAC systems." + ::= { bldgCompliances 1 } + +bldgHVACObjectsGroup OBJECT-GROUP + OBJECTS { + bldgHVACCfgTemplate, + bldgHVACFanSpeed, bldgHVACCurrentTemp, + bldgHVACCoolOrHeatMins, bldgHVACDiscontinuityTime, + bldgHVACOwner, bldgHVACStatus, + bldgHVACStorageType, bldgHVACCfgTemplateInfoID, + bldgHVACCfgTemplateInfoDescr, bldgHVACCfgTemplateInfoOwner, + + + + bldgHVACCfgTemplateInfoStatus, + bldgHVACCfgTemplateInfoStorType, + bldgHVACCfgTemplateDesiredTemp, + bldgHVACCfgTemplateCoolOrHeat, + bldgHVACCfgTemplateInfo, + bldgHVACCfgTemplateOwner,bldgHVACCfgTemplateStorage, + bldgHVACCfgTemplateStatus + } + STATUS current + DESCRIPTION + "The bldgHVACObjects Group." + ::= { bldgGroups 1 } + +END diff --git a/mibs/ietf/BRIDGE-MIB b/mibs/ietf/BRIDGE-MIB new file mode 100644 index 0000000..a0a5edc --- /dev/null +++ b/mibs/ietf/BRIDGE-MIB @@ -0,0 +1,1556 @@ +BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ---------------------------------------------------------- -- +-- MIB for IEEE 802.1D devices +-- ---------------------------------------------------------- -- +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, TimeTicks, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, MacAddress + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InterfaceIndex FROM IF-MIB + ; + +dot1dBridge MODULE-IDENTITY + LAST-UPDATED "200509190000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: bridge-mib@ietf.org + + K.C. Norseth (Editor) + L-3 Communications + Tel: +1 801-594-2809 + Email: kenyon.c.norseth@L-3com.com + Postal: 640 N. 2200 West. + Salt Lake City, Utah 84116-0850 + + + + + Les Bell (Editor) + 3Com Europe Limited + Phone: +44 1442 438025 + Email: elbell@ntlworld.com + Postal: 3Com Centre, Boundary Way + Hemel Hempstead + Herts. HP2 7YU + UK + + Send comments to " + DESCRIPTION + "The Bridge MIB module for managing devices that support + IEEE 802.1D. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4188; see the RFC itself for + full legal notices." + REVISION "200509190000Z" + DESCRIPTION + "Third revision, published as part of RFC 4188. + + The MIB module has been converted to SMIv2 format. + Conformance statements have been added and some + description and reference clauses have been updated. + + The object dot1dStpPortPathCost32 was added to + support IEEE 802.1t and the permissible values of + dot1dStpPriority and dot1dStpPortPriority have been + clarified for bridges supporting IEEE 802.1t or + IEEE 802.1w. + + The interpretation of dot1dStpTimeSinceTopologyChange + has been clarified for bridges supporting the Rapid + Spanning Tree Protocol (RSTP)." + REVISION "199307310000Z" + DESCRIPTION + "Second revision, published as part of RFC 1493." + REVISION "199112310000Z" + DESCRIPTION + "Initial revision, published as part of RFC 1286." + ::= { mib-2 17 } + + +-- ---------------------------------------------------------- -- +-- Textual Conventions +-- ---------------------------------------------------------- -- + +BridgeId ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "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)." + SYNTAX OCTET STRING (SIZE (8)) + +Timeout ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Spanning Tree Protocol (STP) timer in units of 1/100 + seconds. 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 + hundredths 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-1998 specifies a settable granularity of no more + than one second for these timers. To avoid ambiguity, + a conversion algorithm is defined below for converting + between the different units, which ensures a timer's + value is not distorted by multiple conversions. + + 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 nonzero] + 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)." + SYNTAX Integer32 + +-- ---------------------------------------------------------- -- +-- subtrees in the Bridge MIB +-- ---------------------------------------------------------- -- + +dot1dNotifications OBJECT IDENTIFIER ::= { dot1dBridge 0 } + +dot1dBase OBJECT IDENTIFIER ::= { dot1dBridge 1 } +dot1dStp OBJECT IDENTIFIER ::= { dot1dBridge 2 } + +dot1dSr OBJECT IDENTIFIER ::= { dot1dBridge 3 } +-- documented in RFC 1525 + +dot1dTp OBJECT IDENTIFIER ::= { dot1dBridge 4 } +dot1dStatic OBJECT IDENTIFIER ::= { dot1dBridge 5 } + +-- Subtrees used by Bridge MIB Extensions: +-- pBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 6 } +-- qBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 7 } +-- Note that the practice of registering related MIB modules +-- below dot1dBridge has been discouraged since there is no +-- robust mechanism to track such registrations. + +dot1dConformance OBJECT IDENTIFIER ::= { dot1dBridge 8 } + +-- ---------------------------------------------------------- -- +-- the dot1dBase subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dBase subtree is mandatory for all +-- bridges. +-- ---------------------------------------------------------- -- + +dot1dBaseBridgeAddress OBJECT-TYPE + + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + 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-1998: clauses 14.4.1.1.3 and 7.12.5" + ::= { dot1dBase 1 } + +dot1dBaseNumPorts OBJECT-TYPE + SYNTAX Integer32 + UNITS "ports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports controlled by this bridging + entity." + REFERENCE + "IEEE 802.1D-1998: clause 14.4.1.1.3" + ::= { dot1dBase 2 } + +dot1dBaseType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + transparent-only(2), + sourceroute-only(3), + srt(4) + } + MAX-ACCESS read-only + STATUS current + 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 + MAX-ACCESS not-accessible + STATUS current + 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 + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "A list of information for each port of the bridge." + REFERENCE + "IEEE 802.1D-1998: clause 14.4.2, 14.6.1" + INDEX { dot1dBasePort } + ::= { dot1dBasePortTable 1 } + +Dot1dBasePortEntry ::= + SEQUENCE { + dot1dBasePort + Integer32, + dot1dBasePortIfIndex + InterfaceIndex, + dot1dBasePortCircuit + OBJECT IDENTIFIER, + dot1dBasePortDelayExceededDiscards + Counter32, + dot1dBasePortMtuExceededDiscards + Counter32 + } + +dot1dBasePort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port for which this entry + contains bridge management information." + ::= { dot1dBasePortEntry 1 } + +dot1dBasePortIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the instance of the ifIndex object, + defined in IF-MIB, for the interface corresponding + to this port." + ::= { dot1dBasePortEntry 2 } + +dot1dBasePortCircuit OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "For a port that (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 Counter32 + MAX-ACCESS read-only + STATUS current + 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-1998: clause 14.6.1.1.3" + ::= { dot1dBasePortEntry 4 } + +dot1dBasePortMtuExceededDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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-1998: clause 14.6.1.1.3" + ::= { dot1dBasePortEntry 5 } + +-- ---------------------------------------------------------- -- +-- the dot1dStp subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dStp subtree 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) + } + MAX-ACCESS read-only + STATUS current + 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 + that are incompatible with the current version + are released a new value will be defined." + ::= { dot1dStp 1 } + +dot1dStpPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + 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. + On bridges supporting IEEE 802.1t or IEEE 802.1w, + permissible values are 0-61440, in steps of 4096." + REFERENCE + "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, + IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." + ::= { dot1dStp 2 } + +dot1dStpTimeSinceTopologyChange OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last time a topology change was detected by the + bridge entity. + For RSTP, this reports the time since the tcWhile + timer for any port on this Bridge was nonzero." + REFERENCE + "IEEE 802.1D-1998 clause 14.8.1.1., + IEEE 802.1w clause 14.8.1.1." + + + + ::= { dot1dStp 3 } + +dot1dStpTopChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of topology changes detected by + this bridge since the management entity was last + reset or initialized." + REFERENCE + "IEEE 802.1D-1998 clause 14.8.1.1." + ::= { dot1dStp 4 } + +dot1dStpDesignatedRoot OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.3.1" + ::= { dot1dStp 5 } + +dot1dStpRootCost OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cost of the path to the root as seen from + this bridge." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.2" + ::= { dot1dStp 6 } + +dot1dStpRootPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port that offers the lowest + cost path from this bridge to the root bridge." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.3" + + + + ::= { dot1dStp 7 } + +dot1dStpMaxAge OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.3.4" + ::= { dot1dStp 8 } + +dot1dStpHelloTime OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.3.5" + ::= { dot1dStp 9 } + +dot1dStpHoldTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.3.14" + ::= { dot1dStp 10 } + +dot1dStpForwardDelay OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + + + + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.3.6" + ::= { dot1dStp 11 } + +dot1dStpBridgeMaxAge OBJECT-TYPE + SYNTAX Timeout (600..4000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value that all bridges use for MaxAge when this + bridge is acting as the root. Note that 802.1D-1998 + specifies that the range for this parameter is related + to the value of dot1dStpBridgeHelloTime. The + granularity of this timer is specified by 802.1D-1998 to + be 1 second. An agent may return a badValue error if a + set is attempted to a value that is not a whole number + of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.8" + ::= { dot1dStp 12 } + +dot1dStpBridgeHelloTime OBJECT-TYPE + SYNTAX Timeout (100..1000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + 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-1998 to be 1 second. An + agent may return a badValue error if a set is attempted + + + + to a value that is not a whole number of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.9" + ::= { dot1dStp 13 } + +dot1dStpBridgeForwardDelay OBJECT-TYPE + SYNTAX Timeout (400..3000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value that all bridges use for ForwardDelay when + this bridge is acting as the root. Note that + 802.1D-1998 specifies that the range for this parameter + is related to the value of dot1dStpBridgeMaxAge. The + granularity of this timer is specified by 802.1D-1998 to + be 1 second. An agent may return a badValue error if a + set is attempted to a value that is not a whole number + of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.10" + ::= { dot1dStp 14 } + +-- ---------------------------------------------------------- -- +-- The Spanning Tree Port Table +-- ---------------------------------------------------------- -- + +dot1dStpPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains port-specific information + for the Spanning Tree Protocol." + ::= { dot1dStp 15 } + +dot1dStpPortEntry OBJECT-TYPE + SYNTAX Dot1dStpPortEntry + MAX-ACCESS not-accessible + STATUS current + 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 + Integer32, + dot1dStpPortPriority + Integer32, + dot1dStpPortState + INTEGER, + dot1dStpPortEnable + INTEGER, + dot1dStpPortPathCost + Integer32, + dot1dStpPortDesignatedRoot + BridgeId, + dot1dStpPortDesignatedCost + Integer32, + dot1dStpPortDesignatedBridge + BridgeId, + dot1dStpPortDesignatedPort + OCTET STRING, + dot1dStpPortForwardTransitions + Counter32, + dot1dStpPortPathCost32 + Integer32 + } + +dot1dStpPort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port for which this entry + contains Spanning Tree Protocol management information." + REFERENCE + "IEEE 802.1D-1998: clause 14.8.2.1.2" + ::= { dot1dStpPortEntry 1 } + +dot1dStpPortPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the priority field that 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. + On bridges supporting IEEE 802.1t or IEEE 802.1w, + permissible values are 0-240, in steps of 16." + REFERENCE + "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, + + + + IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." + ::= { dot1dStpPortEntry 2 } + +dot1dStpPortState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + blocking(2), + listening(3), + learning(4), + forwarding(5), + broken(6) + } + MAX-ACCESS read-only + STATUS current + 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 that are disabled (see dot1dStpPortEnable), this + object will have a value of disabled(1)." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.2" + ::= { dot1dStpPortEntry 3 } + +dot1dStpPortEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled/disabled status of the port." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.2" + ::= { dot1dStpPortEntry 4 } + +dot1dStpPortPathCost OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The contribution of this port to the path cost of + paths towards the spanning tree root which include + this port. 802.1D-1998 recommends that the default + value of this parameter be in inverse proportion to + + + + the speed of the attached LAN. + + New implementations should support dot1dStpPortPathCost32. + If the port path costs exceeds the maximum value of this + object then this object should report the maximum value, + namely 65535. Applications should try to read the + dot1dStpPortPathCost32 object if this object reports + the maximum value." + REFERENCE "IEEE 802.1D-1998: clause 8.5.5.3" + ::= { dot1dStpPortEntry 5 } + +dot1dStpPortDesignatedRoot OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.5.4" + ::= { dot1dStpPortEntry 6 } + +dot1dStpPortDesignatedCost OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + 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-1998: clause 8.5.5.5" + ::= { dot1dStpPortEntry 7 } + +dot1dStpPortDesignatedBridge OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Bridge Identifier of the bridge that this + port considers to be the Designated Bridge for + this port's segment." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.6" + ::= { dot1dStpPortEntry 8 } + + + + +dot1dStpPortDesignatedPort OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Identifier of the port on the Designated + Bridge for this port's segment." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.7" + ::= { dot1dStpPortEntry 9 } + +dot1dStpPortForwardTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this port has transitioned + from the Learning state to the Forwarding state." + ::= { dot1dStpPortEntry 10 } + +dot1dStpPortPathCost32 OBJECT-TYPE + SYNTAX Integer32 (1..200000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The contribution of this port to the path cost of + paths towards the spanning tree root which include + this port. 802.1D-1998 recommends that the default + value of this parameter be in inverse proportion to + the speed of the attached LAN. + + This object replaces dot1dStpPortPathCost to support + IEEE 802.1t." + REFERENCE + "IEEE 802.1t clause 8.10.2, Table 8-5." + ::= { dot1dStpPortEntry 11 } + +-- ---------------------------------------------------------- -- +-- the dot1dTp subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dTp subtree is optional. It is +-- implemented by those bridges that support the transparent +-- bridging mode. A transparent or SRT bridge will implement +-- this subtree. +-- ---------------------------------------------------------- -- + +dot1dTpLearnedEntryDiscards OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Forwarding Database entries that + have been or would have been learned, but have been + discarded due to a lack of storage space in the + Forwarding Database. If this counter is increasing, it + indicates that the Forwarding Database is regularly + becoming full (a condition that 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-1998: clause 14.7.1.1.3" + ::= { dot1dTp 1 } + +dot1dTpAgingTime OBJECT-TYPE + SYNTAX Integer32 (10..1000000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The timeout period in seconds for aging out + dynamically-learned forwarding information. + 802.1D-1998 recommends a default of 300 seconds." + REFERENCE + "IEEE 802.1D-1998: clause 14.7.1.1.3" + ::= { dot1dTp 2 } + + +-- ---------------------------------------------------------- -- +-- The Forwarding Database for Transparent Bridges +-- ---------------------------------------------------------- -- + +dot1dTpFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + 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 + MAX-ACCESS not-accessible + STATUS current + 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 + Integer32, + dot1dTpFdbStatus + INTEGER + } + +dot1dTpFdbAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unicast MAC address for which the bridge has + forwarding and/or filtering information." + REFERENCE + "IEEE 802.1D-1998: clause 7.9.1, 7.9.2" + ::= { dot1dTpFdbEntry 1 } + +dot1dTpFdbPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + 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) + } + MAX-ACCESS read-only + STATUS current + 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 no 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 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every port that + is associated with this transparent bridge." + + + + ::= { dot1dTp 4 } + +dot1dTpPortEntry OBJECT-TYPE + SYNTAX Dot1dTpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information for each port of a transparent + bridge." + INDEX { dot1dTpPort } + ::= { dot1dTpPortTable 1 } + +Dot1dTpPortEntry ::= + SEQUENCE { + dot1dTpPort + Integer32, + dot1dTpPortMaxInfo + Integer32, + dot1dTpPortInFrames + Counter32, + dot1dTpPortOutFrames + Counter32, + dot1dTpPortInDiscards + Counter32 + } + +dot1dTpPort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + 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 Integer32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size of the INFO (non-MAC) field that + + + + this port will receive or transmit." + ::= { dot1dTpPortEntry 2 } + +dot1dTpPortInFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + 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-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 3 } + +dot1dTpPortOutFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + 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-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 4 } + +dot1dTpPortInDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of received valid frames that were discarded + (i.e., filtered) by the Forwarding Process." + REFERENCE + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 5 } + +-- ---------------------------------------------------------- -- + + + +-- The Static (Destination-Address Filtering) Database +-- ---------------------------------------------------------- -- +-- Implementation of this subtree is optional. +-- ---------------------------------------------------------- -- + +dot1dStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStaticEntry + MAX-ACCESS not-accessible + STATUS current + 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-1998: clause 14.7.2" + ::= { dot1dStatic 1 } + +dot1dStaticEntry OBJECT-TYPE + SYNTAX Dot1dStaticEntry + MAX-ACCESS not-accessible + STATUS current + 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-1998: clause 14.7.2" + INDEX { dot1dStaticAddress, dot1dStaticReceivePort } + ::= { dot1dStaticTable 1 } + +Dot1dStaticEntry ::= + SEQUENCE { + dot1dStaticAddress MacAddress, + dot1dStaticReceivePort Integer32, + dot1dStaticAllowedToGoTo OCTET STRING, + dot1dStaticStatus INTEGER + } + + + + +dot1dStaticAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-create + STATUS current + 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-1998: clause 7.9.1, 7.9.2" + ::= { dot1dStaticEntry 1 } + +dot1dStaticReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + 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 (SIZE (0..512)) + MAX-ACCESS read-create + STATUS current + 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. + + + + + The value of this object may exceed the required minimum + maximum message size of some SNMP transport (484 bytes, + in the case of SNMP over UDP, see RFC 3417, section 3.2). + SNMP engines on bridges supporting a large number of + ports must support appropriate maximum message sizes." + ::= { dot1dStaticEntry 3 } + +dot1dStaticStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-create + STATUS current + 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 } + +-- ---------------------------------------------------------- -- +-- Notifications for use by Bridges +-- ---------------------------------------------------------- -- +-- Notifications for the Spanning Tree Protocol +-- ---------------------------------------------------------- -- + +newRoot NOTIFICATION-TYPE + -- OBJECTS { } + STATUS current + 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." + ::= { dot1dNotifications 1 } + +topologyChange NOTIFICATION-TYPE + -- OBJECTS { } + STATUS current + 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." + ::= { dot1dNotifications 2 } + +-- ---------------------------------------------------------- -- +-- IEEE 802.1D MIB - Conformance Information +-- ---------------------------------------------------------- -- + +dot1dGroups OBJECT IDENTIFIER ::= { dot1dConformance 1 } +dot1dCompliances OBJECT IDENTIFIER ::= { dot1dConformance 2 } + +-- ---------------------------------------------------------- -- +-- units of conformance +-- ---------------------------------------------------------- -- + +-- ---------------------------------------------------------- -- +-- the dot1dBase group +-- ---------------------------------------------------------- -- + +dot1dBaseBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dBaseBridgeAddress, + dot1dBaseNumPorts, + dot1dBaseType + } + STATUS current + DESCRIPTION + "Bridge level information for this device." + ::= { dot1dGroups 1 } + +dot1dBasePortGroup OBJECT-GROUP + OBJECTS { + dot1dBasePort, + dot1dBasePortIfIndex, + dot1dBasePortCircuit, + + + + dot1dBasePortDelayExceededDiscards, + dot1dBasePortMtuExceededDiscards + } + STATUS current + DESCRIPTION + "Information for each port on this device." + ::= { dot1dGroups 2 } + +-- ---------------------------------------------------------- -- +-- the dot1dStp group +-- ---------------------------------------------------------- -- + +dot1dStpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dStpProtocolSpecification, + dot1dStpPriority, + dot1dStpTimeSinceTopologyChange, + dot1dStpTopChanges, + dot1dStpDesignatedRoot, + dot1dStpRootCost, + dot1dStpRootPort, + dot1dStpMaxAge, + dot1dStpHelloTime, + dot1dStpHoldTime, + dot1dStpForwardDelay, + dot1dStpBridgeMaxAge, + dot1dStpBridgeHelloTime, + dot1dStpBridgeForwardDelay + } + STATUS current + DESCRIPTION + "Bridge level Spanning Tree data for this device." + ::= { dot1dGroups 3 } + +dot1dStpPortGroup OBJECT-GROUP + OBJECTS { + dot1dStpPort, + dot1dStpPortPriority, + dot1dStpPortState, + dot1dStpPortEnable, + dot1dStpPortPathCost, + dot1dStpPortDesignatedRoot, + dot1dStpPortDesignatedCost, + dot1dStpPortDesignatedBridge, + dot1dStpPortDesignatedPort, + dot1dStpPortForwardTransitions + } + STATUS current + + + + DESCRIPTION + "Spanning Tree data for each port on this device." + ::= { dot1dGroups 4 } + +dot1dStpPortGroup2 OBJECT-GROUP + OBJECTS { + dot1dStpPort, + dot1dStpPortPriority, + dot1dStpPortState, + dot1dStpPortEnable, + dot1dStpPortDesignatedRoot, + dot1dStpPortDesignatedCost, + dot1dStpPortDesignatedBridge, + dot1dStpPortDesignatedPort, + dot1dStpPortForwardTransitions, + dot1dStpPortPathCost32 + } + STATUS current + DESCRIPTION + "Spanning Tree data for each port on this device." + ::= { dot1dGroups 5 } + +dot1dStpPortGroup3 OBJECT-GROUP + OBJECTS { + dot1dStpPortPathCost32 + } + STATUS current + DESCRIPTION + "Spanning Tree data for devices supporting 32-bit + path costs." + ::= { dot1dGroups 6 } + +-- ---------------------------------------------------------- -- +-- the dot1dTp group +-- ---------------------------------------------------------- -- + +dot1dTpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dTpLearnedEntryDiscards, + dot1dTpAgingTime + } + STATUS current + DESCRIPTION + "Bridge level Transparent Bridging data." + ::= { dot1dGroups 7 } + +dot1dTpFdbGroup OBJECT-GROUP + OBJECTS { + + + + dot1dTpFdbAddress, + dot1dTpFdbPort, + dot1dTpFdbStatus + } + + STATUS current + DESCRIPTION + "Filtering Database information for the Bridge." + ::= { dot1dGroups 8 } + +dot1dTpGroup OBJECT-GROUP + OBJECTS { + dot1dTpPort, + dot1dTpPortMaxInfo, + dot1dTpPortInFrames, + dot1dTpPortOutFrames, + dot1dTpPortInDiscards + } + STATUS current + DESCRIPTION + "Dynamic Filtering Database information for each port of + the Bridge." + ::= { dot1dGroups 9 } + +-- ---------------------------------------------------------- -- +-- The Static (Destination-Address Filtering) Database +-- ---------------------------------------------------------- -- + +dot1dStaticGroup OBJECT-GROUP + OBJECTS { + dot1dStaticAddress, + dot1dStaticReceivePort, + dot1dStaticAllowedToGoTo, + dot1dStaticStatus + } + STATUS current + DESCRIPTION + "Static Filtering Database information for each port of + the Bridge." + ::= { dot1dGroups 10 } + +-- ---------------------------------------------------------- -- +-- The Trap Notification Group +-- ---------------------------------------------------------- -- + +dot1dNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + newRoot, + + + + topologyChange + } + STATUS current + DESCRIPTION + "Group of objects describing notifications (traps)." + ::= { dot1dGroups 11 } + +-- ---------------------------------------------------------- -- +-- compliance statements +-- ---------------------------------------------------------- -- + +bridgeCompliance1493 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of bridging + services, as per RFC1493." + + MODULE + MANDATORY-GROUPS { + dot1dBaseBridgeGroup, + dot1dBasePortGroup + } + + GROUP dot1dStpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol." + + GROUP dot1dStpPortGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol." + + GROUP dot1dTpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dTpFdbGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dTpGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + + + + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dStaticGroup + DESCRIPTION + "Implementation of this group is optional." + + GROUP dot1dNotificationGroup + DESCRIPTION + "Implementation of this group is optional." + ::= { dot1dCompliances 1 } + +bridgeCompliance4188 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of bridging + services. This supports 32-bit Path Cost values and the + more restricted bridge and port priorities, as per IEEE + 802.1t. + + Full support for the 802.1D management objects requires that + the SNMPv2-MIB [RFC3418] objects sysDescr, and sysUpTime, as + well as the IF-MIB [RFC2863] objects ifIndex, ifType, + ifDescr, ifPhysAddress, and ifLastChange are implemented." + + MODULE + MANDATORY-GROUPS { + dot1dBaseBridgeGroup, + dot1dBasePortGroup + } + + GROUP dot1dStpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the Spanning Tree Protocol." + + OBJECT dot1dStpPriority + SYNTAX Integer32 (0|4096|8192|12288|16384|20480|24576 + |28672|32768|36864|40960|45056|49152 + |53248|57344|61440) + DESCRIPTION + "The possible values defined by IEEE 802.1t." + + GROUP dot1dStpPortGroup2 + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the Spanning Tree Protocol." + + + + + GROUP dot1dStpPortGroup3 + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol and 32-bit path + costs. In particular, this includes devices supporting + IEEE 802.1t and IEEE 802.1w." + + OBJECT dot1dStpPortPriority + SYNTAX Integer32 (0|16|32|48|64|80|96|112|128 + |144|160|176|192|208|224|240) + DESCRIPTION + "The possible values defined by IEEE 802.1t." + + GROUP dot1dTpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dTpFdbGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dTpGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dStaticGroup + DESCRIPTION + "Implementation of this group is optional." + + GROUP dot1dNotificationGroup + DESCRIPTION + "Implementation of this group is optional." + + ::= { dot1dCompliances 2 } + +END diff --git a/mibs/ietf/CHARACTER-MIB b/mibs/ietf/CHARACTER-MIB new file mode 100644 index 0000000..610883d --- /dev/null +++ b/mibs/ietf/CHARACTER-MIB @@ -0,0 +1,648 @@ +CHARACTER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, Gauge32, TimeTicks + FROM SNMPv2-SMI + AutonomousType, InstancePointer, TEXTUAL-CONVENTION, + DisplayString + FROM SNMPv2-TC + InterfaceIndex + FROM IF-MIB + transmission, mib-2 + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +char MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for character stream devices." + ::= { mib-2 19 } + +PortIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each + character port 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. + + In a system where the character ports are attached + to hardware represented by an ifIndex, it is + conventional, but not required, to make the + character port index equal to the corresponding + ifIndex." + SYNTAX Integer32 + + +-- Generic Character information + +charNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in charPortTable, regardless + of their current state." + ::= { char 1 } + + +-- the Character Port table + +charPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of charNumber." + ::= { char 2 } + +charPortEntry OBJECT-TYPE + SYNTAX CharPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a character port." + INDEX { charPortIndex } + ::= { charPortTable 1 } + +CharPortEntry ::= + SEQUENCE { + charPortIndex + PortIndex, + charPortName + DisplayString, + charPortType + INTEGER, + charPortHardware + AutonomousType, + charPortReset + INTEGER, + charPortAdminStatus + INTEGER, + charPortOperStatus + INTEGER, + charPortLastChange + TimeTicks, + charPortInFlowType + INTEGER, + charPortOutFlowType + INTEGER, + charPortInFlowState + INTEGER, + charPortOutFlowState + INTEGER, + charPortInCharacters + Counter32, + charPortOutCharacters + Counter32, + charPortAdminOrigin + INTEGER, + charPortSessionMaximum + INTEGER, + charPortSessionNumber + Gauge32, + charPortSessionIndex + INTEGER, + charPortInFlowTypes + OCTET STRING, + charPortOutFlowTypes + OCTET STRING, + charPortLowerIfIndex + InterfaceIndex + } + +charPortIndex OBJECT-TYPE + SYNTAX PortIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each character port, perhaps + corresponding to the same value of ifIndex when the + character port is associated with a hardware port + represented by an ifIndex." + ::= { charPortEntry 1 } + +charPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administratively assigned name for the port, + typically with some local significance." + ::= { charPortEntry 2 } + +charPortType OBJECT-TYPE + SYNTAX INTEGER { physical(1), virtual(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's type, 'physical' if the port represents + an external hardware connector, 'virtual' if it does + not." + ::= { charPortEntry 3 } + +charPortHardware OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to hardware MIB definitions specific to + a physical port's external connector. For example, + if the connector is RS-232, then the value of this + object refers to a MIB sub-tree defining objects + specific to RS-232. If an agent is not configured + to have such values, the agent returns the object + identifier: + + nullHardware OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charPortEntry 4 } + +charPortReset OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to force the port into a clean, initial + state, both hardware and software, disconnecting all + the port's existing sessions. In response to a + get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes a reset." + ::= { charPortEntry 5 } + +charPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), off(3), + maintenance(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's desired state, independent of flow + control. 'enabled' indicates that the port is + allowed to pass characters and form new sessions. + 'disabled' indicates that the port is allowed to + pass characters but not form new sessions. 'off' + indicates that the port is not allowed to pass + characters or have any sessions. 'maintenance' + indicates a maintenance mode, exclusive of normal + operation, such as running a test. + + 'enabled' corresponds to ifAdminStatus 'up'. + 'disabled' and 'off' correspond to ifAdminStatus + 'down'. 'maintenance' corresponds to ifAdminStatus + 'test'." + ::= { charPortEntry 6 } + +charPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), + maintenance(3), absent(4), active(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's actual, operational state, independent + of flow control. 'up' indicates able to function + normally. 'down' indicates inability to function + for administrative or operational reasons. + 'maintenance' indicates a maintenance mode, + exclusive of normal operation, such as running a + test. 'absent' indicates that port hardware is not + present. 'active' indicates up with a user present + (e.g. logged in). + + 'up' and 'active' correspond to ifOperStatus 'up'. + 'down' and 'absent' correspond to ifOperStatus + 'down'. 'maintenance' corresponds to ifOperStatus + 'test'." + ::= { charPortEntry 7 } + +charPortLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the port entered + its current operational state. If the current state + was entered prior to the last reinitialization of + the local network management subsystem, then this + object contains a zero value." + ::= { charPortEntry 8 } + +-- charPortInFlowType is deprecated in favor of +-- charPortInFlowTypes + +charPortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicity's sake." + ::= { charPortEntry 9 } + +-- charPortOutFlowType is deprecated in favor of +-- charPortOutFlowTypes + +charPortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicy's sake." + ::= { charPortEntry 10 } + +charPortInFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of input flow control + on the port. 'none' indicates not applicable. + 'unknown' indicates this level does not know. + 'stop' indicates flow not allowed. 'go' indicates + flow allowed." + ::= { charPortEntry 11 } + +charPortOutFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of output flow + control on the port. 'none' indicates not + applicable. 'unknown' indicates this level does not + know. 'stop' indicates flow not allowed. 'go' + indicates flow allowed." + ::= { charPortEntry 12 } + +charPortInCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters detected as input from + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-processed input, and input + sent to all sessions." + ::= { charPortEntry 13 } + +charPortOutCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters detected as output to + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-created output, and output + received from all sessions." + ::= { charPortEntry 14 } + +charPortAdminOrigin OBJECT-TYPE + SYNTAX INTEGER { dynamic(1), network(2), local(3), + none(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively allowed origin for + establishing session on the port. 'dynamic' allows + 'network' or 'local' session establishment. 'none' + disallows session establishment." + ::= { charPortEntry 15 } + +charPortSessionMaximum OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent sessions allowed + on the port. A value of -1 indicates no maximum. + Setting the maximum to less than the current number + of sessions has unspecified results." + ::= { charPortEntry 16 } + +charPortSessionNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of open sessions on the port that are in + the connecting, connected, or disconnecting state." + ::= { charPortEntry 17 } + +charPortSessionIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of charSessIndex for the port's first or + only active session. If the port has no active + session, the agent returns the value zero." + ::= { charPortEntry 18 } + +charPortInFlowTypes OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's types of input flow control at the + software level. Hardware-level flow control is + independently controlled by the appropriate + hardware-level MIB. + + A value of zero indicates no flow control. + Depending on the specific implementation, any or + all combinations of flow control may be chosen by + adding the values: + + 128 xonXoff, recognizing XON and XOFF characters + 64 enqHost, ENQ/ACK to allow input to host + 32 enqTerm, ACK to allow output to port + " + ::= { charPortEntry 19 } + +charPortOutFlowTypes OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's types of output flow control at the + software level. Hardware-level flow control is + independently controlled by the appropriate + hardware-level MIB. + + A value of zero indicates no flow control. + Depending on the specific implementation, any or + all combinations of flow control may be chosen by + adding the values: + + 128 xonXoff, recognizing XON and XOFF characters + 64 enqHost, ENQ/ACK to allow input to host + 32 enqTerm, ACK to allow output to port + " + ::= { charPortEntry 20 } + +charPortLowerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the lower level hardware supporting + this character port, zero if none." + ::= { charPortEntry 21 } + + +-- the Character Session table + +charSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port session entries." + ::= { char 3 } + +charSessEntry OBJECT-TYPE + SYNTAX CharSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a character port + session." + INDEX { charSessPortIndex, charSessIndex } + ::= { charSessTable 1 } + +CharSessEntry ::= + SEQUENCE { + charSessPortIndex + PortIndex, + charSessIndex + INTEGER, + charSessKill + INTEGER, + charSessState + INTEGER, + charSessProtocol + AutonomousType, + charSessOperOrigin + INTEGER, + charSessInCharacters + Counter32, + charSessOutCharacters + Counter32, + charSessConnectionId + InstancePointer, + charSessStartTime + TimeTicks + } + +charSessPortIndex OBJECT-TYPE + SYNTAX PortIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of charPortIndex for the port to which + this session belongs." + ::= { charSessEntry 1 } + +charSessIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session index in the context of the port, a + non-zero positive integer. Session indexes within a + port need not be sequential. Session indexes may be + reused for different ports. For example, port 1 and + port 3 may both have a session 2 at the same time. + Session indexes may have any valid integer value, + with any meaning convenient to the agent + implementation." + ::= { charSessEntry 2 } + +charSessKill OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to terminate the session. In response to + a get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes termination." + ::= { charSessEntry 3 } + +charSessState OBJECT-TYPE + SYNTAX INTEGER { connecting(1), connected(2), + disconnecting(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the session, + disregarding flow control. 'connected' indicates + that character data could flow on the network side + of session. 'connecting' indicates moving from + nonexistent toward 'connected'. 'disconnecting' + indicates moving from 'connected' or 'connecting' to + nonexistent." + ::= { charSessEntry 4 } + +charSessProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network protocol over which the session is + running. Other OBJECT IDENTIFIER values may be + defined elsewhere, in association with specific + protocols. However, this document assigns those of + known interest as of this writing." + ::= { charSessEntry 5 } + +wellKnownProtocols OBJECT IDENTIFIER ::= { char 4 } + +protocolOther OBJECT IDENTIFIER ::= { wellKnownProtocols 1 } +protocolTelnet OBJECT IDENTIFIER ::= { wellKnownProtocols 2 } +protocolRlogin OBJECT IDENTIFIER ::= { wellKnownProtocols 3 } +protocolLat OBJECT IDENTIFIER ::= { wellKnownProtocols 4 } +protocolX29 OBJECT IDENTIFIER ::= { wellKnownProtocols 5 } +protocolVtp OBJECT IDENTIFIER ::= { wellKnownProtocols 6 } + + +charSessOperOrigin OBJECT-TYPE + SYNTAX INTEGER { unknown(1), network(2), local(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session's source of establishment." + ::= { charSessEntry 6 } + +charSessInCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This session's subset of charPortInCharacters." + ::= { charSessEntry 7 } + +charSessOutCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This session's subset of charPortOutCharacters." + ::= { charSessEntry 8 } + +charSessConnectionId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to additional local MIB information. + This should be the highest available related MIB, + corresponding to charSessProtocol, such as Telnet. + For example, the value for a TCP connection (in the + absence of a Telnet MIB) is the object identifier of + tcpConnState. If an agent is not configured to have + such values, the agent returns the object + identifier: + + nullConnectionId OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charSessEntry 9 } + +charSessStartTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime in MIB-2 when the session + entered connecting state." + ::= { charSessEntry 10 } + +-- conformance information + +charConformance OBJECT IDENTIFIER ::= { char 5 } + +charGroups OBJECT IDENTIFIER ::= { charConformance 1 } +charCompliances OBJECT IDENTIFIER ::= { charConformance 2 } + + +-- compliance statements + +charCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have Character hardware interfaces." + + MODULE -- this module + MANDATORY-GROUPS { charGroup } + ::= { charCompliances 1 } + + +-- units of conformance + +charGroup OBJECT-GROUP + OBJECTS { charNumber, charPortIndex, charPortName, + charPortType, charPortHardware, charPortReset, + charPortAdminStatus, charPortOperStatus, + charPortLastChange, + charPortInFlowState, charPortOutFlowState, + charPortAdminOrigin, charPortSessionMaximum, + charPortInFlowTypes, charPortOutFlowTypes, + charPortInCharacters, charPortOutCharacters, + charPortSessionNumber, charPortSessionIndex, + charPortLowerIfIndex, + charSessPortIndex, charSessIndex, + charSessKill, charSessState, + charSessProtocol, charSessOperOrigin, + charSessInCharacters, charSessOutCharacters, + charSessConnectionId, charSessStartTime } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all Character interfaces." + ::= { charGroups 1 } + +END diff --git a/mibs/ietf/CIRCUIT-IF-MIB b/mibs/ietf/CIRCUIT-IF-MIB new file mode 100644 index 0000000..45c16f9 --- /dev/null +++ b/mibs/ietf/CIRCUIT-IF-MIB @@ -0,0 +1,383 @@ +CIRCUIT-IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, Gauge32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, + TimeStamp, RowPointer, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex, InterfaceIndex FROM IF-MIB; + + circuitIfMIB MODULE-IDENTITY + LAST-UPDATED "200201030000Z" -- January 3, 2002 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + + + "IETF Frame Relay Service MIB (frnetmib) Working Group + + WG Charter: http://www.ietf.org/html.charters/ + frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Robert Steinberger + Paradyne Networks and + Fujitsu Network Communications + Email: robert.steinberger@fnc.fujitsu.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: Orly_n@rad.co.il" + DESCRIPTION + "The MIB module to allow insertion of selected circuit into + the ifTable." + REVISION "200201030000Z" -- January 3, 2002 + DESCRIPTION + "Initial version, published as RFC 3201" + ::= { mib-2 94 } + + -- Textual Conventions + + CiFlowDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The direction of data flow thru a circuit. + + transmit(1) - Only transmitted data + receive(2) - Only received data + both(3) - Both transmitted and received data." + SYNTAX INTEGER { + transmit(1), + receive(2), + both(3) + } + + ciObjects OBJECT IDENTIFIER ::= { circuitIfMIB 1 } + ciCapabilities OBJECT IDENTIFIER ::= { circuitIfMIB 2 } + ciConformance OBJECT IDENTIFIER ::= { circuitIfMIB 3 } + + + + -- The Circuit Interface Circuit Table + -- + -- This table is used to define and display the circuits that + -- are added to the ifTable. It maps circuits to their respective + -- ifIndex values. + + ciCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF CiCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Circuit Interface Circuit Table." + ::= { ciObjects 1 } + + ciCircuitEntry OBJECT-TYPE + SYNTAX CiCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Circuit Interface Circuit Table." + INDEX { ciCircuitObject, ciCircuitFlow } + ::= { ciCircuitTable 1 } + + CiCircuitEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + ciCircuitObject RowPointer, + ciCircuitFlow CiFlowDirection, + ciCircuitStatus RowStatus, + -- + -- Data variables + -- + ciCircuitIfIndex InterfaceIndex, + ciCircuitCreateTime TimeStamp, + -- + -- Data Persistence + -- + ciCircuitStorageType StorageType + } + + ciCircuitObject OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value contains the RowPointer that uniquely + + + describes the circuit that is to be added to this table. + Any RowPointer that will force the size of OBJECT + IDENTIFIER of the row to grow beyond the legal limit + MUST be rejected. + + The purpose of this object is to point a network manager + to the table in which the circuit was created as well as + define the circuit on which the interface is defined. + + Valid tables for this object include the frCircuitTable + from the Frame Relay DTE MIB(FRAME-RELAY-DTE-MIB), the + frPVCEndptTable from the Frame Relay Service MIB + (FRNETSERV-MIB), and the aal5VccTable from the ATM MIB + (ATM MIB). However, including circuits from other MIB + tables IS NOT prohibited." + ::= { ciCircuitEntry 1 } + + ciCircuitFlow OBJECT-TYPE + SYNTAX CiFlowDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The direction of data flow through the circuit for which + the virtual interface is defined. The following define + the information that the virtual interface will report. + + transmit(1) - Only transmitted frames + receive(2) - Only received frames + both(3) - Both transmitted and received frames. + + It is recommended that the ifDescr of the circuit + interfaces that are not both(3) SHOULD have text warning + the operators that the particular interface represents + only half the traffic on the circuit." + ::= { ciCircuitEntry 2 } + + ciCircuitStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. When the status changes to active(1), a row + will also be added to the interface map table below + and a row will be added to the ifTable. These rows + SHOULD not be removed until the status is changed + from active(1). The value of ifIndex for the row that + + + is added to the ifTable is determined by the agent + and MUST follow the rules of the ifTable. The value + of ifType for that interface will be frDlciEndPt(193) + for a frame relay circuit, atmVciEndPt(194) for an + ATM circuit, or another ifType defining the circuit + type for any other circuit. + + When this object is set to destroy(6), the associated + row in the interface map table will be removed and the + ifIndex will be removed from the ifTable. Removing + the ifIndex MAY initiate a chain of events that causes + changes to other tables as well. + + The rows added to this table MUST have a valid object + identifier for ciCircuitObject. This means that the + referenced object must exist and it must be in a table + that supports circuits. + + The object referenced by ciCircuitObject MUST exist + prior to transitioning a row to active(1). If at any + point the object referenced by ciCircuitObject does not + exist or the row containing it is not in the active(1) + state, the status SHOULD either age out the row or + report notReady(3). The effects transitioning from + active(1) to notReady(3) are the same as those caused + by setting the status to destroy(6). + + Each row in this table relies on information from other + MIB modules. The rules persistence of data SHOULD follow + the same rules as those of the underlying MIB module. + For example, if the circuit defined by ciCircuitObject + would normally be stored in non-volatile memory, then + the row SHOULD also be non-volatile." + ::= { ciCircuitEntry 3 } + + ciCircuitIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex that the agent assigns to this row." + ::= { ciCircuitEntry 4 } + + ciCircuitCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object returns the value of sysUpTime at the time + the value of ciCircuitStatus last transitioned to + active(1). If ciCircuitStatus has never been active(1), + this object SHOULD return 0." + ::= { ciCircuitEntry 5 } + + ciCircuitStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type used for this row." + ::= { ciCircuitEntry 6 } + + -- The Circuit Interface Map Table + -- + -- This table maps the ifIndex values that are assigned to + -- rows in the circuit table back to the objects that define + -- the circuits. + + ciIfMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF CiIfMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Circuit Interface Map Table." + ::= { ciObjects 2 } + + ciIfMapEntry OBJECT-TYPE + SYNTAX CiIfMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Circuit Interface Map Table." + INDEX { ifIndex } + ::= { ciIfMapTable 1 } + + CiIfMapEntry ::= + SEQUENCE { + -- + -- Mapped Object Variables + -- + ciIfMapObject RowPointer, + ciIfMapFlow CiFlowDirection + } + + ciIfMapObject OBJECT-TYPE + SYNTAX RowPointer + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the value of RowPointer that + corresponds to the current ifIndex." + ::= { ciIfMapEntry 1 } + + ciIfMapFlow OBJECT-TYPE + SYNTAX CiFlowDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value contains the value of ciCircuitFlow that + corresponds to the current ifIndex." + ::= { ciIfMapEntry 2 } + + -- Change tracking metrics + + ciIfLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent change to + ciCircuitStatus for any row in ciCircuitTable." + ::= { ciObjects 3 } + + ciIfNumActive OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active rows in ciCircuitTable." + ::= { ciObjects 4 } + + -- Conformance Information + + ciMIBGroups OBJECT IDENTIFIER ::= { ciConformance 1 } + ciMIBCompliances OBJECT IDENTIFIER ::= { ciConformance 2 } + + -- + -- Compliance Statements + -- + + ciCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + + + which support of the Circuit Interfaces MIB module. + This group defines the minimum level of support + required for compliance." + MODULE -- this module + MANDATORY-GROUPS { ciCircuitGroup, + ciIfMapGroup, + ciStatsGroup } + + OBJECT ciCircuitStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation can be done outside of the scope of + the SNMP protocol. If this object is implemented with + max-access of read-only, then the only value that MUST + be returned is active(1)." + + OBJECT ciCircuitStorageType + MIN-ACCESS read-only + DESCRIPTION + "It is legal to support ciCircuitStorageType as read- + only as long as the value reported in consistent + with the actual storage mechanism employed within the + agent." + + ::= { ciMIBCompliances 1 } + + -- + -- Units of Conformance + -- + ciCircuitGroup OBJECT-GROUP + OBJECTS { + ciCircuitStatus, + ciCircuitIfIndex, + ciCircuitCreateTime, + ciCircuitStorageType + } + STATUS current + DESCRIPTION + "A collection of required objects providing + information from the circuit table." + ::= { ciMIBGroups 1 } + + ciIfMapGroup OBJECT-GROUP + OBJECTS { + ciIfMapObject, + ciIfMapFlow + } + + + STATUS current + DESCRIPTION + "A collection of required objects providing + information from the interface map table." + ::= { ciMIBGroups 2 } + + ciStatsGroup OBJECT-GROUP + OBJECTS { + ciIfLastChange, + ciIfNumActive + } + STATUS current + DESCRIPTION + "A collection of statistical metrics used to help manage + the ciCircuitTable." + ::= { ciMIBGroups 3 } +END diff --git a/mibs/ietf/CLNS-MIB b/mibs/ietf/CLNS-MIB new file mode 100644 index 0000000..bd07fb3 --- /dev/null +++ b/mibs/ietf/CLNS-MIB @@ -0,0 +1,1297 @@ +CLNS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + experimental, Counter + FROM RFC1155-SMI + PhysAddress + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9] + + +-- the CLNS MIB module + +clns OBJECT IDENTIFIER ::= { experimental 1 } + + +-- textual conventions + +ClnpAddress ::= + OCTET STRING (SIZE (1..21)) +-- This data type is used to model NSAP addresses. + + +-- groups in the CLNS MIB + +clnp OBJECT IDENTIFIER ::= { clns 1 } + +error OBJECT IDENTIFIER ::= { clns 2 } + +echo OBJECT IDENTIFIER ::= { clns 3 } + +es-is OBJECT IDENTIFIER ::= { clns 4 } + + +-- the CLNP group + +-- Implementation of this group is recommended for all +-- systems which implement the CLNP. + +clnpForwarding OBJECT-TYPE + SYNTAX INTEGER { + is(1), -- entity is an intermediate system + + -- entity is an end system and does + es(2) -- not forward PDUs + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The indication of whether this entity is active + as an intermediate or end system. Only + intermediate systems will forward PDUs onward that + are not addressed to them." + ::= { clnp 1 } + +clnpDefaultLifeTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default value inserted into the Lifetime + field of the CLNP PDU header of PDUs sourced by + this entity." + ::= { clnp 2 } + +clnpInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input PDUs received from all + connected network interfaces running CLNP, + including errors." + ::= { clnp 3 } + +clnpInHdrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs discarded due to errors + in the CLNP header, including bad checksums, + version mismatch, lifetime exceeded, errors + discovered in processing options, etc." + ::= { clnp 4 } + +clnpInAddrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs discarded because the + NSAP address in the CLNP header's destination + field was not a valid NSAP to be received at this + entity. This count includes addresses not + understood. For end systems, this is a count of + PDUs which arrived with a destination NSAP which + was not local." + ::= { clnp 5 } + +clnpForwPDUs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs for which this entity + was not the final destination and which an attempt + was made to forward them onward." + ::= { clnp 6 } + +clnpInUnknownNLPs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally-addressed PDUs successfully + received but discarded because the network layer + protocol was unknown or unsupported (e.g., not + CLNP or ES-IS)." + ::= { clnp 7 } + +clnpInUnknownULPs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally-addressed PDUs successfully + received but discarded because the upper layer + protocol was unknown or unsupported (e.g., not + TP4)." + ::= { clnp 8 } + +clnpInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input CLNP PDUs for which no + problems were encountered to prevent their + continued processing, but were discarded (e.g., + for lack of buffer space). Note that this counter + does not include any PDUs discarded while awaiting + re-assembly." + ::= { clnp 9 } + +clnpInDelivers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input PDUs successfully + delivered to the CLNS transport user." + ::= { clnp 10 } + +clnpOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of CLNP PDUs which local CLNS + user protocols supplied to CLNP for transmission + requests. This counter does not include any PDUs + counted in clnpForwPDUs." + ::= { clnp 11 } + +clnpOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of output CLNP PDUs for which no other + problem was encountered to prevent their + transmission but were discarded (e.g., for lack of + buffer space). Note this counter includes PDUs + counted in clnpForwPDUs." + ::= { clnp 12 } + +clnpOutNoRoutes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs discarded because no + route could be found to transmit them to their + destination. This counter includes any PDUs + counted in clnpForwPDUs." + ::= { clnp 13 } + +clnpReasmTimeout OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of seconds which received + segments are held while they are awaiting + reassembly at this entity." + ::= { clnp 14 } + +clnpReasmReqds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP segments received which needed + to be reassembled at this entity." + ::= { clnp 15 } + +clnpReasmOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs successfully re-assembled + at this entity." + ::= { clnp 16 } + +clnpReasmFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of failures detected by the CLNP + reassembly algorithm (for any reason: timed out, + buffer size, etc)." + ::= { clnp 17 } + +clnpSegOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs that have been + successfully segmented at this entity." + ::= { clnp 18 } + +clnpSegFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs that have been discarded + because they needed to be fragmented at this + entity but could not." + ::= { clnp 19 } + +clnpSegCreates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + generated as a result of segmentation at this + entity." + ::= { clnp 20 } + +clnpInOpts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + input with options at this entity." + ::= { clnp 25 } + +clnpOutOpts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + generated with options by this entity." + ::= { clnp 26 } + +clnpRoutingDiscards 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." + ::= { clnp 27 } + + +-- the CLNP Interfaces table + +-- The CLNP interfaces table contains information on the +-- entity's interfaces which are running the CLNP. + +clnpAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of addressing information relevant to + this entity's CLNP addresses. " + ::= { clnp 21 } + +clnpAddrEntry OBJECT-TYPE + SYNTAX ClnpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The addressing information for one of this + entity's CLNP addresses." + INDEX { clnpAdEntAddr } + ::= { clnpAddrTable 1 } + +ClnpAddrEntry ::= + SEQUENCE { + clnpAdEntAddr + ClnpAddress, + clnpAdEntIfIndex + INTEGER, + clnpAdEntReasmMaxSize + INTEGER (0..65535) + } + +clnpAdEntAddr OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The CLNP address to which this entry's addressing + information pertains." + ::= { clnpAddrEntry 1 } + +clnpAdEntIfIndex 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." + ::= { clnpAddrEntry 2 } + +clnpAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the largest CLNP PDU which this + entity can re-assemble from incoming CLNP + segmented PDUs received on this interface." + ::= { clnpAddrEntry 3 } + + +-- The CLNP Routing table + +-- The CLNP routing table contains an entry for each route +-- known to the entity. + +clnpRoutingTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entity's CLNP routing table." + ::= { clnp 22 } + +clnpRouteEntry OBJECT-TYPE + SYNTAX ClnpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A route to a particular destination." + 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, + clnpRouteMetric5 + INTEGER, + clnpRouteInfo + OBJECT IDENTIFIER + } + +clnpRouteDest OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The destination CLNP address of this route." + ::= { clnpRouteEntry 1 } + +clnpRouteIfIndex 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 as + identified by the same value of ifIndex." + ::= { clnpRouteEntry 2 } + +clnpRouteMetric1 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 + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 3 } + +clnpRouteMetric2 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 + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 4 } + +clnpRouteMetric3 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 + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 5 } + +clnpRouteMetric4 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 + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 6 } + +clnpRouteNextHop OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The CLNP address of the next hop of this route." + ::= { 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 + DESCRIPTION + "The type of route. + + Setting this object to the value invalid(2) has + the effect of invaliding the corresponding entry + in the clnpRoutingTable. 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 + clnpRouteType object." + ::= { 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 + 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." + ::= { clnpRouteEntry 9 } + +clnpRouteAge 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." + ::= { clnpRouteEntry 10 } + +clnpRouteMetric5 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 + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 11 } + +clnpRouteInfo 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 clnpRouteProto 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." + ::= { clnpRouteEntry 12 } + + +-- the CLNP Address Translation table + +-- The Address Translation tables contain the CLNP address +-- to physical address equivalences. Some interfaces do not +-- use translation tables for determining address +-- equivalences; if all interfaces are of this type, then the +-- Address Translation table is empty, i.e., has zero +-- entries. + +clnpNetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The CLNP Address Translation table used for + mapping from CLNP addresses to physical + addresses." + ::= { clnp 23 } + +clnpNetToMediaEntry OBJECT-TYPE + SYNTAX ClnpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains one CLNP address to + `physical' address equivalence." + INDEX { clnpNetToMediaIfIndex, clnpNetToMediaNetAddress } + ::= { clnpNetToMediaTable 1 } + +ClnpNetToMediaEntry ::= + SEQUENCE { + clnpNetToMediaIfIndex + INTEGER, + clnpNetToMediaPhysAddress + PhysAddress, + clnpNetToMediaNetAddress + ClnpAddress, + clnpNetToMediaType + INTEGER, + clnpNetToMediaAge + INTEGER, + clnpNetToMediaHoldTime + INTEGER + } + +clnpNetToMediaIfIndex 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." + ::= { clnpNetToMediaEntry 1 } + +clnpNetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent `physical' address." + ::= { clnpNetToMediaEntry 2 } + +clnpNetToMediaNetAddress OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The CLNP address corresponding to the media- + dependent `physical' address." + ::= { 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 + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the clnpNetToMediaTable. That is, it + effectively dissassociates 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 clnpNetToMediaType + object." + ::= { clnpNetToMediaEntry 4 } + +clnpNetToMediaAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this entry was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the type of entry." + ::= { clnpNetToMediaEntry 5 } + +clnpNetToMediaHoldTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The time in seconds this entry will be valid. + Static entries should always report this field as + -1." + ::= { clnpNetToMediaEntry 6 } + +clnpMediaToNetTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpMediaToNetEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The CLNP Address Translation table used for + mapping from physical addresses to CLNP + addresses." + ::= { clnp 24 } + +clnpMediaToNetEntry OBJECT-TYPE + SYNTAX ClnpMediaToNetEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains on ClnpAddress to `physical' + address equivalence." + INDEX { clnpMediaToNetIfIndex, clnpMediaToNetPhysAddress } + ::= { clnpMediaToNetTable 1 } + +ClnpMediaToNetEntry ::= + SEQUENCE { + clnpMediaToNetIfIndex + INTEGER, + clnpMediaToNetAddress + ClnpAddress, + clnpMediaToNetPhysAddress + PhysAddress, + clnpMediaToNetType + INTEGER, + clnpMediaToNetAge + INTEGER, + clnpMediaToNetHoldTime + INTEGER + } + +clnpMediaToNetIfIndex 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." + ::= { clnpMediaToNetEntry 1 } + +clnpMediaToNetAddress OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The ClnpAddress corresponding to the media- + dependent `physical' address." + ::= { clnpMediaToNetEntry 2 } + +clnpMediaToNetPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent `physical' address." + ::= { 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 + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the clnpMediaToNetTable. That is, it + effectively dissassociates 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 clnpMediaToNetType + object." + ::= { clnpMediaToNetEntry 4 } + +clnpMediaToNetAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this entry was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the type of entry." + ::= { clnpMediaToNetEntry 5 } + +clnpMediaToNetHoldTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The time in seconds this entry will be valid. + Static entries should always report this field as + -1." + ::= { clnpMediaToNetEntry 6 } + + +-- the CLNP Error group + +-- Implementation of this group is recommended for all +-- systems which implement the CLNP Error protocol. + +clnpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP Error PDUs received by this + entity." + ::= { error 1 } + +clnpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP Error PDUs sent by this + entity." + ::= { error 2 } + +clnpInErrUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified CLNP Error PDUs + received by this entity." + ::= { error 3 } + +clnpInErrProcs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of protocol procedure CLNP Error PDUs + received by this entity." + ::= { error 4 } + +clnpInErrCksums OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of checksum CLNP Error PDUs received + by this entity." + ::= { error 5 } + +clnpInErrCongests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of congestion drop CLNP Error PDUs + received by this entity." + ::= { error 6 } + +clnpInErrHdrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of header syntax CLNP Error PDUs + received by this entity." + ::= { error 7 } + +clnpInErrSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of segmentation disallowed CLNP Error + PDUs received by this entity." + ::= { error 8 } + +clnpInErrIncomps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incomplete PDU CLNP Error PDUs + received by this entity." + ::= { error 9 } + +clnpInErrDups OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate option CLNP Error PDUs + received by this entity." + ::= { error 10 } + +clnpInErrUnreachDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unreachable destination CLNP Error + PDUs received by this entity." + ::= { error 11 } + +clnpInErrUnknownDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unknown destination CLNP Error PDUs + received by this entity." + ::= { error 12 } + +clnpInErrSRUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified source route CLNP Error + PDUs received by this entity." + ::= { error 13 } + +clnpInErrSRSyntaxes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route syntax CLNP Error PDUs + received by this entity." + ::= { error 14 } + +clnpInErrSRUnkAddrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route unknown address CLNP + Error PDUs received by this entity." + ::= { error 15 } + +clnpInErrSRBadPaths OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route bad path CLNP Error + PDUs received by this entity." + ::= { error 16 } + +clnpInErrHops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded CLNP Error PDUs + received by this entity." + ::= { error 17 } + +clnpInErrHopReassms OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded while + reassembling CLNP Error PDUs received by this + entity." + ::= { error 18 } + +clnpInErrUnsOptions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported option CLNP Error PDUs + received by this entity." + ::= { error 19 } + +clnpInErrUnsVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of version mismatch CLNP Error PDUs + received by this entity." + ::= { error 20 } + +clnpInErrUnsSecurities OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported security option CLNP + Error PDUs received by this entity." + ::= { error 21 } + +clnpInErrUnsSRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported source route option + CLNP Error PDUs received by this entity." + ::= { error 22 } + +clnpInErrUnsRRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported record route option + CLNP Error PDUs received by this entity." + ::= { error 23 } + +clnpInErrInterferences OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reassembly interference CLNP Error + PDUs received by this entity." + ::= { error 24 } + +clnpOutErrUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified CLNP Error PDUs sent by + this entity." + ::= { error 25 } + +clnpOutErrProcs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of protocol procedure CLNP Error PDUs + sent by this entity." + ::= { error 26 } + +clnpOutErrCksums OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of checksum CLNP Error PDUs sent by + this entity." + ::= { error 27 } + +clnpOutErrCongests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of congestion drop CLNP Error PDUs + sent by this entity." + ::= { error 28 } + +clnpOutErrHdrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of header syntax CLNP Error PDUs sent + by this entity." + ::= { error 29 } + +clnpOutErrSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of segmentation disallowed CLNP Error + PDUs sent by this entity." + ::= { error 30 } + +clnpOutErrIncomps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incomplete PDU CLNP Error PDUs sent + by this entity." + ::= { error 31 } + +clnpOutErrDups OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate option CLNP Error PDUs + sent by this entity." + ::= { error 32 } + +clnpOutErrUnreachDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unreachable destination CLNP Error + PDUs sent by this entity." + ::= { error 33 } + +clnpOutErrUnknownDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unknown destination CLNP Error PDUs + sent by this entity." + ::= { error 34 } + +clnpOutErrSRUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified source route CLNP Error + PDUs sent by this entity." + ::= { error 35 } + +clnpOutErrSRSyntaxes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route syntax CLNP Error PDUs + sent by this entity." + ::= { error 36 } + +clnpOutErrSRUnkAddrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route unknown address CLNP + Error PDUs sent by this entity." + ::= { error 37 } + +clnpOutErrSRBadPaths OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route bad path CLNP Error + PDUs sent by this entity." + ::= { error 38 } + +clnpOutErrHops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded CLNP Error PDUs + sent by this entity." + ::= { error 39 } + +clnpOutErrHopReassms OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded while + reassembling CLNP Error PDUs sent by this entity." + ::= { error 40 } + +clnpOutErrUnsOptions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported option CLNP Error PDUs + sent by this entity." + ::= { error 41 } + +clnpOutErrUnsVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of version mismatch CLNP Error PDUs + sent by this entity." + ::= { error 42 } + +clnpOutErrUnsSecurities OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported security option CLNP + Error PDUs sent by this entity." + ::= { error 43 } + +clnpOutErrUnsSRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported source route option + CLNP Error PDUs sent by this entity." + ::= { error 44 } + +clnpOutErrUnsRRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported record route option + CLNP Error PDUs sent by this entity." + ::= { error 45 } + +clnpOutErrInterferences OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reassembly interference CLNP Error + PDUs sent by this entity." + ::= { error 46 } + +-- the ES-IS group + +-- Implementation of this group is recommended for all +-- systems which implement the End-System to Intermediate +-- System protocol. + +esisESHins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ESH PDUs received by this entity." + ::= { es-is 1 } + +esisESHouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ESH PDUs sent by this entity." + ::= { es-is 2 } + +esisISHins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ISH PDUs received by this entity." + ::= { es-is 3 } + +esisISHouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ISH PDUs sent by this entity." + ::= { es-is 4 } + +esisRDUins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of RDU PDUs received by this entity." + ::= { es-is 5 } + +esisRDUouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of RDU PDUs sent by this entity." + ::= { es-is 6 } + +END diff --git a/mibs/ietf/COFFEE-POT-MIB b/mibs/ietf/COFFEE-POT-MIB new file mode 100644 index 0000000..af88900 --- /dev/null +++ b/mibs/ietf/COFFEE-POT-MIB @@ -0,0 +1,145 @@ +COFFEE-POT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, transmission + FROM SNMPv2-SMI + TimeInterval, DisplayString + FROM SNMPv2-TC; + +coffee MODULE-IDENTITY + LAST-UPDATED "9803231700Z" + ORGANIZATION "Networked Appliance Management Working Group" + + CONTACT-INFO + " Michael Slavitch + Loran Technologies, + 955 Green Valley Crescent + Ottawa, Ontario Canada K2A 0B6 + + Tel: 613-723-7505 + Fax: 613-723-7209 + E-mail: slavitch@loran.com" + DESCRIPTION + "The MIB Module for coffee vending devices." + ::= { transmission 132 } + +potName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The vendor description of the pot under management" + ::= { coffee 1 } + + +potCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of units of beverage supported by this device + (regardless of its current state) ." + ::= { coffee 2 } + + +potType OBJECT-TYPE + SYNTAX INTEGER { + automatic-drip(1), + percolator(2), + french-press(3), + espresso(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The brew type of the coffee pot." + ::= { coffee 3 } + +potLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical location of the pot in question" + ::= { coffee 4 } + + +potMonitor OBJECT IDENTIFIER ::= { coffee 6 } + + +potOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + brewing(2), + holding(3), + other(4), + waiting(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operating status of the pot in question. Note + that this is a read-only feature. Current hardware + prevents us from changing the port state via SNMP." + ::= { potMonitor 1 } + + potLevel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of units of coffee under management. The + units of level are defined in potMetric below." + ::= { potMonitor 2 } + + potMetric OBJECT-TYPE + SYNTAX INTEGER { + espresso(1), + demi-tasse(2), + cup(3), + mug(4), + bucket(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor description of the pot under management" + ::= { potMonitor 3 } + + +potStartTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time in seconds since Jan 1 1970 to start the pot + if and only if potOperStatus is waiting(5)" + ::= { potMonitor 4 } + + + lastStartTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The amount of time, in TimeTicks, since the coffee + making process was initiated." + ::= { potMonitor 5 } + + + potTemperature OBJECT-TYPE + SYNTAX Integer32 + UNITS "degrees Centigrade" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ambient temperature of the coffee within the pot" + + ::= { potMonitor 6 } + +END diff --git a/mibs/ietf/COPS-CLIENT-MIB b/mibs/ietf/COPS-CLIENT-MIB new file mode 100644 index 0000000..ff1e59b --- /dev/null +++ b/mibs/ietf/COPS-CLIENT-MIB @@ -0,0 +1,879 @@ +COPS-CLIENT-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Unsigned32, mib-2 + FROM SNMPv2-SMI + TimeStamp, TimeInterval, RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; + + +-- REFERENCE + + +-- "The COPS (Common Open Policy Service) Protocol RFC 2748 + +copsClientMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" + ORGANIZATION "IETF RSVP Admission Policy Working Group" + CONTACT-INFO + " Andrew Smith (WG co-chair) + Phone: +1 408 579 2821 + Email: ah_smith@pacbell.net + + Mark Stevens (WG co-chair) + Phone: +1 978 287 9102 + Email: markstevens@lucent.com + + Editor: Andrew Smith + Phone: +1 408 579 2821 + Email: ah_smith@pacbell.net + + Editor: David Partain + Phone: +46 13 28 41 44 + Email: David.Partain@ericsson.com + + Editor: John Seligson + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "The COPS Client MIB module" + + REVISION "200009280000Z" + DESCRIPTION "This version published as RFC 2940" + + ::= { mib-2 89 } + +copsClientMIBObjects OBJECT IDENTIFIER ::= { copsClientMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +CopsClientState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating the state of a COPS client." + SYNTAX INTEGER { + copsClientInvalid(1), -- default state. + copsClientTcpconnected(2), -- TCP connection up but COPS + -- not yet open. + + + copsClientAuthenticating(3), -- TCP connection up but still + -- authenticating. + copsClientSecAccepted(4), -- connection authenticated. + copsClientAccepted(5), -- COPS server accepted client. + copsClientTimingout(6) -- Keepalive timer has expired, + -- client is in process of + -- tearing down connection. + } + +CopsServerEntryType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating how a COPS server entry came into existence." + SYNTAX INTEGER { + copsServerStatic(1), -- configured by manager + copsServerRedirect(2) -- notified by COPS server + } + +CopsErrorCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value describing a COPS protocol error. Codes are identical + to those used by the COPS protocol itself." + SYNTAX INTEGER { + errorOther(0), -- none of the below + errorBadHandle(1), + errorInvalidHandleReference(2), + errorBadMessageFormat(3), + errorUnableToProcess(4), + errorMandatoryClientSiMissing(5), + errorUnsupportedClientType(6), + errorMandatoryCopsObjectMissing(7), + errorClientFailure(8), + errorCommunicationFailure(9), + errorUnspecified(10), -- client-type specific subcode + errorShuttingDown(11), + errorRedirectToPreferredServer(12), + errorUnknownCopsObject(13), + errorAuthenticationFailure(14), + errorAuthenticationMissing(15) + } +-- REFERENCE +-- "RFC 2748 section 2.2.8" + +CopsTcpPort ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating a TCP protocol port number." + + + SYNTAX INTEGER (0..65535) + +CopsAuthType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating a type of security authentication mechanism." + SYNTAX INTEGER { + authNone(0), + authOther(1), + authIpSecAh(2), + authIpSecEsp(3), + authTls(4), + authCopsIntegrity(5) + } + +-- ------------------------------------------------------------- + +copsClientCapabilitiesGroup OBJECT IDENTIFIER + ::= { copsClientMIBObjects 1 } + +-- ------------------------------------------------------------- +-- +-- Capabilities of the COPS client to connect to a COPS server: +-- +copsClientCapabilities OBJECT-TYPE + SYNTAX BITS { + copsClientVersion1(0), -- supports version1 of COPS protocol + copsClientAuthIpSecAh(1) , -- supports IP-SEC Authentication + copsClientAuthIpSecEsp(2), -- supports IP-SEC Encryption + copsClientAuthTls(3), -- supports Transport-Layer Security + copsClientAuthInteg(4) -- supports COPS Integrity + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of the optional capabilities that this COPS client + supports." + ::= { copsClientCapabilitiesGroup 1 } + +-- ------------------------------------------------------------- + +copsClientStatusGroup OBJECT IDENTIFIER ::= { copsClientMIBObjects 2 } + +-- ------------------------------------------------------------- +-- +-- Current status of COPS server connections, all read-only. +-- + + + +copsClientServerCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF CopsClientServerCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information regarding COPS servers as seen from the + point of view of a COPS client. This table contains entries + for both statically-configured and dynamically-learned servers + (from a PDP Redirect operation). One entry exists in this table + for each COPS Client-Type served by the COPS server. In addition, + an entry will exist with copsClientServerClientType 0 (zero) + representing information about the underlying connection itself: + this is consistent with the COPS specification which reserves + this value for this purpose." + + ::= { copsClientStatusGroup 1 } + +copsClientServerCurrentEntry OBJECT-TYPE + SYNTAX CopsClientServerCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of information regarding a single COPS server serving + a single COPS Client-Type from the point of view of a COPS + client." + INDEX { copsClientServerAddressType, copsClientServerAddress, + copsClientServerClientType } + ::= { copsClientServerCurrentTable 1 } + +CopsClientServerCurrentEntry ::= + SEQUENCE { + copsClientServerAddressType InetAddressType, + copsClientServerAddress InetAddress, + copsClientServerClientType INTEGER, + copsClientServerTcpPort CopsTcpPort, + copsClientServerType CopsServerEntryType, + copsClientServerAuthType CopsAuthType, + copsClientServerLastConnAttempt TimeStamp, + copsClientState CopsClientState, + copsClientServerKeepaliveTime TimeInterval, + copsClientServerAccountingTime TimeInterval, + copsClientInPkts Counter32, + copsClientOutPkts Counter32, + copsClientInErrs Counter32, + copsClientLastError CopsErrorCode, + copsClientTcpConnectAttempts Counter32, + copsClientTcpConnectFailures Counter32, + copsClientOpenAttempts Counter32, + + + copsClientOpenFailures Counter32, + copsClientErrUnsupportClienttype Counter32, + copsClientErrUnsupportedVersion Counter32, + copsClientErrLengthMismatch Counter32, + copsClientErrUnknownOpcode Counter32, + copsClientErrUnknownCnum Counter32, + copsClientErrBadCtype Counter32, + copsClientErrBadSends Counter32, + copsClientErrWrongObjects Counter32, + copsClientErrWrongOpcode Counter32, + copsClientKaTimedoutClients Counter32, + copsClientErrAuthFailures Counter32, + copsClientErrAuthMissing Counter32 + } + +copsClientServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of address in copsClientServerAddress." + ::= { copsClientServerCurrentEntry 1 } + +copsClientServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv4, IPv6 or DNS address of a COPS Server. Note that, + since this is an index to the table, the DNS name must be + short enough to fit into the maximum length of indices allowed + by the management protocol in use." + REFERENCE + "RFC 2748 section 2.3" + ::= { copsClientServerCurrentEntry 2 } + +copsClientServerClientType OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COPS protocol Client-Type for which this entry + applies. Multiple Client-Types can be served by a single + COPS server. The value 0 (zero) indicates that this + entry contains information about the underlying connection + itself." + REFERENCE + "RFC 2748 section 6, IANA" + + + ::= { copsClientServerCurrentEntry 3 } + +copsClientServerTcpPort OBJECT-TYPE + SYNTAX CopsTcpPort + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP port number on the COPS server to which the + client should connect/is connected." + ::= { copsClientServerCurrentEntry 4 } + +copsClientServerType OBJECT-TYPE + SYNTAX CopsServerEntryType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicator of the source of this COPS server information. + COPS servers may be configured by network management + into copsClientServerConfigTable and appear in this entry + with type copsServerStatic(1). Alternatively, the may be + notified from another COPS server by means of the COPS + PDP-Redirect mechanism and appear as copsServerRedirect(2)." + ::= { copsClientServerCurrentEntry 5 } + +copsClientServerAuthType OBJECT-TYPE + SYNTAX CopsAuthType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicator of the current security mode in use between + client and this COPS server." + ::= { copsClientServerCurrentEntry 6 } + +copsClientServerLastConnAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp of the last time that this client attempted to + connect to this COPS server." + ::= { copsClientServerCurrentEntry 7 } + +copsClientState OBJECT-TYPE + SYNTAX CopsClientState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the connection and COPS protocol with respect + + + to this COPS server." + ::= { copsClientServerCurrentEntry 8 } + +copsClientServerKeepaliveTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the COPS protocol Keepalive timeout, in + centiseconds, currently in use by this client, as + specified by this COPS server in the Client-Accept operation. + A value of zero indicates no keepalive activity is expected." + REFERENCE + "RFC 2748 section 3.7, 4.4" + ::= { copsClientServerCurrentEntry 9 } + +copsClientServerAccountingTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the COPS protocol Accounting timeout, in + centiseconds, currently in use by this client, as specified + by the COPS server in the Client-Accept operation. A value + of zero indicates no accounting activity is to be performed." + REFERENCE + "RFC 2748 section 3.7" + ::= { copsClientServerCurrentEntry 10 } + +copsClientInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from this COPS server marked for this Client-Type. + This value is cumulative since agent restart and is not zeroed + on new connections." + ::= { copsClientServerCurrentEntry 11 } + +copsClientOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has sent to this COPS server marked for this Client-Type. This + value is cumulative since agent restart and is not zeroed on new + + + connections." + ::= { copsClientServerCurrentEntry 12 } + +copsClientInErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from this COPS server marked for this Client-Type + that contained errors in syntax. This value is cumulative since + agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 13 } + +copsClientLastError OBJECT-TYPE + SYNTAX CopsErrorCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The code contained in the last COPS protocol Error Object + received by this client from this COPS server marked for this + Client-Type. This value is not zeroed on COPS Client-Open + operations." + REFERENCE + "RFC 2748 section 2.2.8" + ::= { copsClientServerCurrentEntry 14 } + +copsClientTcpConnectAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has tried + (successfully or otherwise) to open an TCP connection to a COPS + server. This value is cumulative since agent restart and is not + zeroed on new connections. This value is not incremented for + entries representing a non-zero Client-Type." + ::= { copsClientServerCurrentEntry 15 } + +copsClientTcpConnectFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has failed + to open an TCP connection to a COPS server. This value is + cumulative since agent restart and is not zeroed on new + connections. This value is not incremented for + + + entries representing a non-zero Client-Type." + ::= { copsClientServerCurrentEntry 16 } + +copsClientOpenAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has tried + to perform a COPS Client-Open to a COPS server for this + Client-Type. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 17 } + +copsClientOpenFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has failed + to perform a COPS Client-Open to a COPS server for this + Client-Type. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 18 } + +copsClientErrUnsupportClienttype OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers that referred to Client-Types + that are unsupported by this client. This value is cumulative + since agent restart and is not zeroed on new connections. This + value is not incremented for entries representing a non-zero + Client-Type." + ::= { copsClientServerCurrentEntry 19 } + +copsClientErrUnsupportedVersion OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Version number that is unsupported by this + client. This value is cumulative since agent restart and is not + zeroed on new connections." + + + ::= { copsClientServerCurrentEntry 20 } + +copsClientErrLengthMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Message Length that did not match the actual + received message. This value is cumulative since agent restart + and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 21 } + +copsClientErrUnknownOpcode OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Op Code that was unrecognised by this + client. This value is cumulative since agent restart and is not + zeroed on new connections." + ::= { copsClientServerCurrentEntry 22 } + +copsClientErrUnknownCnum OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + contained a COPS protocol object C-Num that was unrecognised by + this client. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 23 } + +copsClientErrBadCtype OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + contained a COPS protocol object C-Type that was not defined for + the C-Nums known by this client. This value is cumulative since + agent restart and is not zeroed on new connections." + + + ::= { copsClientServerCurrentEntry 24 } + +copsClientErrBadSends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + attempted to send to COPS servers marked for this Client-Type + that resulted in a transmit error. This value is cumulative + since agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 25 } + +copsClientErrWrongObjects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + did not contain a permitted set of COPS protocol objects. This + value is cumulative since agent restart and is not zeroed on new + connections." + ::= { copsClientServerCurrentEntry 26 } + +copsClientErrWrongOpcode OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Op Code that should not have been sent to a + COPS client e.g. Open-Requests. This value is cumulative since + agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 27 } + +copsClientKaTimedoutClients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + been shut down for this Client-Type by COPS servers that had + detected a COPS protocol Keepalive timeout. This value is + cumulative since agent restart and is not zeroed on new + connections." + ::= { copsClientServerCurrentEntry 28 } + + +copsClientErrAuthFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + received a COPS message marked for this Client-Type which + could not be authenticated using the authentication mechanism + used by this client." + ::= { copsClientServerCurrentEntry 29 } + +copsClientErrAuthMissing OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + received a COPS message marked for this Client-Type which did not + contain authentication information." + ::= { copsClientServerCurrentEntry 30 } + + +-- ------------------------------------------------------------- + +copsClientConfigGroup OBJECT IDENTIFIER ::= { copsClientMIBObjects 3 } + +-- ------------------------------------------------------------- + +copsClientServerConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF CopsClientServerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of possible COPS servers to try to connect to in order + of copsClientServerConfigPriority. There may be multiple + entries in this table for the same server and client-type which + specify different security mechanisms: these mechanisms will + be attempted by the client in the priority order given. Note + that a server learned by means of PDPRedirect always takes + priority over any of these configured entries." + ::= { copsClientConfigGroup 1 } + +copsClientServerConfigEntry OBJECT-TYPE + SYNTAX CopsClientServerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of configuration information regarding a single + + + COPS server from the point of view of a COPS client." + INDEX { copsClientServerConfigAddrType, + copsClientServerConfigAddress, + copsClientServerConfigClientType, + copsClientServerConfigAuthType } + ::= { copsClientServerConfigTable 1 } + +CopsClientServerConfigEntry ::= + SEQUENCE { + copsClientServerConfigAddrType InetAddressType, + copsClientServerConfigAddress InetAddress, + copsClientServerConfigClientType INTEGER, + copsClientServerConfigAuthType CopsAuthType, + copsClientServerConfigTcpPort CopsTcpPort, + copsClientServerConfigPriority Integer32, + copsClientServerConfigRowStatus RowStatus + } + +copsClientServerConfigAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of address in copsClientServerConfigAddress." + ::= { copsClientServerConfigEntry 1 } + +copsClientServerConfigAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv4, IPv6 or DNS address of a COPS Server. Note that, + since this is an index to the table, the DNS name must be + short enough to fit into the maximum length of indices allowed + by the management protocol in use." + REFERENCE + "RFC 2748 section 2.3" + ::= { copsClientServerConfigEntry 2 } + +copsClientServerConfigClientType OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COPS protocol Client-Type for which this entry + applies and for which this COPS server is capable + of serving. Multiple Client-Types can be served by a + single COPS server." + + + REFERENCE + "RFC 2748 section 6, IANA" + ::= { copsClientServerConfigEntry 3 } + +copsClientServerConfigAuthType OBJECT-TYPE + SYNTAX CopsAuthType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of authentication mechanism for this COPS client + to request when negotiating security at the start of a + connection to a COPS server." + REFERENCE + "RFC 2748 section 4." + ::= { copsClientServerConfigEntry 4 } + + +copsClientServerConfigTcpPort OBJECT-TYPE + SYNTAX CopsTcpPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP port number on the COPS server to which the + client should connect." + ::= { copsClientServerConfigEntry 5 } + +copsClientServerConfigPriority OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this entry relative to other entries. + COPS client will attempt to contact COPS servers for the + appropriate Client-Type. Higher numbers are tried first. The + order to be used amongst server entries with the same priority + is undefined. COPS servers that are notified to the client using + the COPS protocol PDP-Redirect mechanism are always used in + preference to any entries in this table." + ::= { copsClientServerConfigEntry 6 } + +copsClientServerConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "State of this entry in the table." + ::= { copsClientServerConfigEntry 7 } + + + +copsClientServerConfigRetryAlgrm OBJECT-TYPE + SYNTAX INTEGER { + other(1), + sequential(2), + roundRobin(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The algorithm by which the client should retry when it + fails to connect to a COPS server." + DEFVAL { sequential } + ::= { copsClientConfigGroup 2 } + +copsClientServerConfigRetryCount OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A retry count for use by the retry algorithm. Each retry + algorithm needs to specify how it uses this value. + + For the 'sequential(2)' algorithm, this value is the + number of times the client should retry to connect + to one COPS server before moving on to another. + For the 'roundRobin(3)' algorithm, this value is not used." + DEFVAL { 1 } + ::= { copsClientConfigGroup 3 } + +copsClientServerConfigRetryIntvl OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A retry interval for use by the retry algorithm. Each retry + algorithm needs to specify how it uses this value. + + For the 'sequential(2)' algorithm, this value is the time to + wait between retries of a connection to the same COPS server. + + For the 'roundRobin(3)' algorithm, the client always attempts + to connect to each Server in turn, until one succeeds or they + all fail; if they all fail, then the client waits for the value + of this interval before restarting the algorithm." + DEFVAL { 1000 } + ::= { copsClientConfigGroup 4 } + + + +-- ------------------------------------------------------------- +-- Conformance Information +-- ------------------------------------------------------------- + +copsClientConformance OBJECT IDENTIFIER ::= { copsClientMIB 2 } + +copsClientGroups OBJECT IDENTIFIER ::= { copsClientConformance 1 } +copsClientCompliances OBJECT IDENTIFIER ::= { copsClientConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +copsDeviceStatusGroup OBJECT-GROUP + OBJECTS { + copsClientCapabilities, + copsClientServerTcpPort, copsClientServerType, + copsClientServerAuthType, copsClientServerLastConnAttempt, + copsClientState, copsClientServerKeepaliveTime, + copsClientServerAccountingTime, copsClientInPkts, + copsClientOutPkts, copsClientInErrs, copsClientLastError, + copsClientTcpConnectAttempts, copsClientTcpConnectFailures, + copsClientOpenAttempts, copsClientOpenFailures, + copsClientErrUnsupportClienttype, + copsClientErrUnsupportedVersion, copsClientErrLengthMismatch, + copsClientErrUnknownOpcode, copsClientErrUnknownCnum, + copsClientErrBadCtype, copsClientErrBadSends, + copsClientErrWrongObjects, copsClientErrWrongOpcode, + copsClientKaTimedoutClients, copsClientErrAuthFailures, + copsClientErrAuthMissing + } + STATUS current + DESCRIPTION + "A collection of objects for monitoring the status of + connections to COPS servers and statistics for a COPS client." + ::= { copsClientGroups 1 } + +copsDeviceConfigGroup OBJECT-GROUP + OBJECTS { + copsClientServerConfigTcpPort, copsClientServerConfigPriority, + copsClientServerConfigRowStatus, + copsClientServerConfigRetryAlgrm, + copsClientServerConfigRetryCount, + copsClientServerConfigRetryIntvl + } + STATUS current + DESCRIPTION + "A collection of objects for configuring COPS server + + + information." + ::= { copsClientGroups 2 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +copsClientCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of + management of the COPS client." + + MODULE + MANDATORY-GROUPS { + copsDeviceStatusGroup, copsDeviceConfigGroup + } + + OBJECT copsClientServerConfigTcpPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRetryAlgrm + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRetryCount + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + + + OBJECT copsClientServerConfigRetryIntvl + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + ::= { copsClientCompliances 1 } + +END diff --git a/mibs/ietf/DECNET-PHIV-MIB b/mibs/ietf/DECNET-PHIV-MIB new file mode 100644 index 0000000..1604769 --- /dev/null +++ b/mibs/ietf/DECNET-PHIV-MIB @@ -0,0 +1,3020 @@ + DECNET-PHIV-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Gauge + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + mib-2, DisplayString + FROM RFC1213-MIB; + +-- DECNet Phase-IV MIB + + phiv OBJECT IDENTIFIER ::= { mib-2 18 } + +-- textual conventions + +PhivAddr ::= OCTET STRING (SIZE (2)) +-- This data type is intended as a short word representation of +-- standard DECnet Phase IV addresses. DECnet addresses are +-- hierarchically structured numbers assigned to a particular +-- DECnet node. The address is structured so that the area +-- number is contained in the most significant 6 bits of the +-- first octet. The next 2 bits of the first octet contain +-- the first two bits of the host address. The remainder of +-- the host address is contained in the second octet. + +PhivCounter ::= INTEGER +-- This data type has been created for DECnet counters. These +-- counters latch at their maximum specified value until either +-- the system is restarted, or they are reset to zero by the user + +-- or management software. + +InterfaceIndex ::= INTEGER +-- The range of ifIndex, i.e., (1..2147483647) + + +-- groups in the decnetiv mib + + phivSystem OBJECT IDENTIFIER ::= { phiv 1 } + phivManagement OBJECT IDENTIFIER ::= { phiv 2 } + session OBJECT IDENTIFIER ::= { phiv 3 } + end OBJECT IDENTIFIER ::= { phiv 4 } + routing OBJECT IDENTIFIER ::= { phiv 5 } + circuit OBJECT IDENTIFIER ::= { phiv 6 } + ddcmp OBJECT IDENTIFIER ::= { phiv 7 } + control OBJECT IDENTIFIER ::= { phiv 8 } + ethernet OBJECT IDENTIFIER ::= { phiv 9 } + counters OBJECT IDENTIFIER ::= { phiv 10 } + adjacency OBJECT IDENTIFIER ::= { phiv 11 } + line OBJECT IDENTIFIER ::= { phiv 12 } + nonBroadcastLine OBJECT IDENTIFIER ::= { phiv 14 } + area OBJECT IDENTIFIER ::= { phiv 15 } + +-- System Group + +-- The implementation of the System Group is mandatory for +-- all systems. + +phivSystemState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + shut (3), + restricted (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This represents the operational state of the executor + node. + The possible states are: + ON Allows logical links. + OFF Allows no new links, terminates existing + links, and stops routing traffic through. + SHUT Allows no new logical links, does not + destroy existing logical links, and goes + to the OFF state when all logical links are + gone. + RESTRICTED Allows no new incoming logical links from + other nodes. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155)." + ::= { phivSystem 1 } + +phivExecIdent OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This is a text string that describes the executor node + (for example, 'Research Lab'). The string is up to 32 + characters of any type." + ::= { phivSystem 2 } + +-- Network Management Group + +-- The implementation of the Network Management Group is +-- mandatory for all systems which contain a DECnet-style +-- management version. + + +phivMgmtMgmtVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This is the read-only Network Management Version, + consisting of the version number, the Engineering + Change Order (ECO) number, and the user ECO number + (for example, 3.0.0). This parameter applies to the + executor node only." + ::= { phivManagement 1 } + +-- Session Layer Group + +-- The implementation of the Session Layer Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +phivSessionSystemName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Name to be associated with the node identification. + Only one name can be assigned to a node address or a + circuit identification. No name should be used more than + once in a DECnet network. Node-name is one to six upper + case alphanumeric characters with at least one alpha + character. A length of 0 indicates no name." + ::= { session 1 } + +phivSessionInTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum duration between the + time a connect is received for a process at the + executor node and the time that process accepts or + rejects it. If the connect is not accepted or rejected + by the user within the number of seconds specified, + Session Control rejects it for the user. A value of 0 + indicates no timer is running." + ::= { session 2 } + +phivSessionOutTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the duration between the time the + executor requests a connect and the time that connect is + acknowledged by the destination node. If the connect is + not acknowledged within the number of seconds + specified, Session Control returns an error. A value of 0 + indicates no timer is running." + ::= { session 3 } + +-- End Communication Layer Group + +-- The implementation of the End Communication Layer Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- Remote State Table + +phivEndRemoteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEndRemoteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the state of sessions between the + node under study and the nodes found in the table." + ::= { end 1 } + +phivEndRemoteEntry OBJECT-TYPE + SYNTAX PhivEndRemoteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular remote node as seen + from the end communication layer." + INDEX { phivEndRemoteHostNodeID } + ::= { phivEndRemoteTable 1 } + +PhivEndRemoteEntry ::= + SEQUENCE { + phivEndRemoteHostNodeID + PhivAddr, + phivEndRemoteState + INTEGER, + phivEndCircuitIndex + INTEGER, + phivEndActiveLinks + INTEGER, + phivEndDelay + INTEGER + } + +phivEndRemoteHostNodeID OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the remote node to be + evaluated." + ::= { phivEndRemoteEntry 1 } + +phivEndRemoteState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + shut (3), + restricted (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This represents the operational state of the remote node + being evaluated. + The possible states are: + + ON Allows logical links. + OFF Allows no new links, terminates existing + links, and stops routing traffic through. + SHUT Allows no new logical links, does not + destroy existing logical links, and goes + to the OFF state when all logical links are + gone. + RESTRICTED Allows no new incoming logical links from + other nodes. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155." + ::= { phivEndRemoteEntry 2 } + +phivEndCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit used to + communicate with the remote node. This is the same + value as phivCircuitIndex." + ::= { phivEndRemoteEntry 3 } + +phivEndActiveLinks OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the number of active + logical links from the executor to the destination node." + ::= { phivEndRemoteEntry 4 } + +phivEndDelay OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the average round trip + delay in seconds to the destination node. This + parameter is kept on a remote node basis." + ::= { phivEndRemoteEntry 5 } + +-- End System Counter Table + +phivEndCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEndCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the counters associated with each end + system that is known to the entity. These counters + reflect totals from the perspective of the executor + node." + ::= { end 2 } + +phivEndCountEntry OBJECT-TYPE + SYNTAX PhivEndCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular session between two end + systems." + INDEX { phivEndCountHostNodeID } + ::= { phivEndCountTable 1 } + +PhivEndCountEntry ::= + SEQUENCE { + phivEndCountHostNodeID + PhivAddr, + phivEndCountSecsLastZeroed + PhivCounter, + phivEndCountUsrBytesRec + PhivCounter, + phivEndCountUsrBytesSent + PhivCounter, + phivEndUCountUsrMessRec + PhivCounter, + phivEndCountUsrMessSent + PhivCounter, + phivEndCountTotalBytesRec + PhivCounter, + phivEndCountTotalBytesSent + PhivCounter, + phivEndCountTotalMessRec + PhivCounter, + phivEndCountTotalMessSent + PhivCounter, + phivEndCountConnectsRecd + PhivCounter, + phivEndCountConnectsSent + PhivCounter, + phivEndCountReponseTimeouts + PhivCounter, + phivEndCountRecdConnectResErrs + PhivCounter + } + +phivEndCountHostNodeID OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the remote node to be + evaluated." + ::= { phivEndCountEntry 1 } + +phivEndCountSecsLastZeroed OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the number of seconds that have elapsed + since the counters for the node in this table row were + last set to zero. This counter is located in the + network management layer, but is returned with the + end system information which follows." + ::= { phivEndCountEntry 2 } + +phivEndCountUsrBytesRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user bytes received from the target host." + ::= { phivEndCountEntry 3 } + +phivEndCountUsrBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user bytes sent to the target host." + ::= { phivEndCountEntry 4 } + +phivEndUCountUsrMessRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user messages received from the target host." + ::= { phivEndCountEntry 5 } + +phivEndCountUsrMessSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user messages sent to the target host." + ::= { phivEndCountEntry 6 } + +phivEndCountTotalBytesRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received from the target host." + ::= { phivEndCountEntry 7 } + +phivEndCountTotalBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent to the target host." + ::= { phivEndCountEntry 8 } + +phivEndCountTotalMessRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of messages received from the target host." + ::= { phivEndCountEntry 9 } + +phivEndCountTotalMessSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of messages sent to the target host." + ::= { phivEndCountEntry 10 } + +phivEndCountConnectsRecd OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of connects received from the target host." + ::= { phivEndCountEntry 11 } + +phivEndCountConnectsSent OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of connects sent to the target host." + ::= {phivEndCountEntry 12 } + +phivEndCountReponseTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of response timeouts." + ::= { phivEndCountEntry 13 } + +phivEndCountRecdConnectResErrs OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of received connect resource errors." + ::= {phivEndCountEntry 14 } + +-- additional End System objects + +phivEndMaxLinks OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum active logical + link count allowed for the executor." + ::= { end 3 } + +phivEndNSPVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the version number + of the node End Communication S/W. The format is + version number, ECO, and user ECO, e.g., 4.1.0" + ::= { end 4 } + +phivEndRetransmitFactor OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of times the + source End Communication at the executor node will + restart the retransmission timer when it expires. If + the number is exceeded, Session Control disconnects the + logical link for the user." + ::= { end 5 } + +phivEndDelayFact OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This is the number by which to multiply one sixteenth + of the estimated round trip delay to a node to set the + retransmission timer to that node." + ::= { end 6 } + +phivEndDelayWeight OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This number represents the weight to apply to a + current round trip delay estimate to a remote node + when updating the estimated round trip delay to a node. + On some systems the number must be 1 less than a power + of 2 for computational efficiency." + ::= { end 7 } + +phivEndInactivityTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum duration of inactivity + (no data in either direction) on a logical link before + the node checks to see if the logical link still works. + If no activity occurs within the minimum number of + seconds, End Communication generates artificial + traffic to test the link (End Communication + specification)." + ::= { end 8 } + +phivEndCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, all of the counters in + the End System Counter Table are set to zero." + ::= { end 9 } + +phivEndMaxLinksActive OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the high water mark for the + number of links that were active at any one time." + ::= { end 10 } + +-- Routing Layer Group + +-- The implementation of the Routing Layer Group is mandatory for +-- all systems that implement level 1 routing layer +-- communications. + +phivRouteBroadcastRouteTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the maximum time in seconds + allowed between Routing updates on Ethernet + circuits. When this timer expired before a routing + update occurs, a routing update is forced. With a + standard calculation, Routing also uses this timer + to enforce a minimum delay between routing updates." + ::= { routing 1 } + +phivRouteBuffSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter value determines the maximum size of + a Routing message. It therefore determines the maximum + size message that can be forwarded. This size includes + protocol overhead down to and including the End + Communication layer, plus a constant value of 6. (This + value of 6 is included to provide compatibility with + the parameter definition in Phase III, which included + the Routing overhead.) It does not include Routing or + Data link overhead (except for the constant value of + 6). There is one buffer size for all circuits. + + NOTE: The BUFFER SIZE defines the maximum size messages + that the Routing layer can forward. The SEGMENT BUFFER + SIZE (defined below) defines the maximum size messages + that the End Communication layer can transmit or + receive. The SEGMENT BUFFER SIZE is always less than + or equal to the BUFFER SIZE. Normally the two + parameters will be equal. They may be different to + allow the network manager to alter buffer sizes + on all nodes without interruption of service. They both + include an extra 6 bytes for compatibility with Phase + III." + ::= { routing 2 } + +phivRouteRoutingVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter identifies the executor node's + Routing version number. The format is version number, + ECO, and user ECO, e.g., 4.1.0" + ::= { routing 3 } + +phivRouteMaxAddr OBJECT-TYPE + SYNTAX INTEGER (1..1023) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the largest node number and, + therefore, number of nodes that can be known about + by the executor node's home area." + ::= { routing 4 } + +phivRouteMaxBdcastNonRouters OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total number of + nonrouters the executor node can have on its Ethernet + circuits." + ::= { routing 5 } + +phivRouteMaxBdcastRouters OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total number of + routers the executor node can have on its Ethernet + circuits." + ::= { routing 6 } + +phivRouteMaxBuffs OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of transmit + buffers that Routing may use for all circuits." + ::= { routing 7 } + +phivRouteMaxCircuits OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of Routing + circuits that the executor node can know about." + ::= { routing 8 } + +phivRouteMaxCost OBJECT-TYPE + SYNTAX INTEGER (1..1022) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total path cost + allowed from the executor to any node within an area. + The path cost is the sum of the circuit costs along + a path between two nodes. This parameter defines the + point where the executor node's Routing routing + decision algorithm declares another node unreachable + because the cost of the least costly path to the + other node is excessive. For correct operation, this + parameter must not be less than the maximum path cost + of the network." + ::= { routing 9 } + +phivRouteMaxHops OBJECT-TYPE + SYNTAX INTEGER (1..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of routing hops + allowable from the executor to any other reachable node + within an area. (A hop is the logical distance over a + circuit between two adjacent nodes.) This parameter + defines the point where the executor node's Routing + routing decision algorithm declares another node + unreachable because the length of the shortest path + between the two nodes is too long. For correct + operation, this parameter must not be less than the + network diameter. (The network diameter is the + reachability distance between the two nodes of the + network having the greatest reachability distance, + where reachability distance is the length the shortest + path between a given pair of nodes.)" + ::= { routing 10 } + +phivRouteMaxVisits OBJECT-TYPE + SYNTAX INTEGER (1..63) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of nodes a + message coming into the executor node can have visited. + If the message is not for this node and the MAXIMUM + VISITS number is exceeded, the message is discarded. + The MAXIMUM VISITS parameter defines the point where + the packet lifetime control algorithm discards + a packet that has traversed too many nodes. For correct + operation, this parameter must not be less than the + maximum path length of the network. (The maximum path + length is the routing distance between the two nodes of + the network having the greatest routing distance, where + routing distance is the length of the least costly + path between a given pair of nodes.)" + ::= { routing 11 } + +phivRouteRoutingTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the maximum time in seconds + allowed between Routing updates on non-Ethernet + circuits. When this timer expires before a routing + update occurs, a routing update is forced." + ::= { routing 12 } + +phivRouteSegBuffSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter value determines the maximum size of an + end-to-end segment. The size is a decimal integer in + the range 1-65535. This size is in bytes. This size + includes protocol overhead down to and including the + End Communication layer, plus a constant value of 6. + (This value of 6 is included to provide compatibility + with the BUFFER SIZE parameter definition.) It does not + include Routing or Data link overhead (except for the + constant value of 6)." + ::= { routing 13 } + +phivRouteType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the type of the executor + node. The node-type is one of the following: + + routing-III + nonrouting-III + routing-IV + ronrouting-IV + area + + A routing node has full routing capability. A + nonrouting node contains a subset of the Routing + routing modules. The III and IV indicate the DNA + phase of the node. Nonrouting nodes can deliver + and receive packets to and from any node, but cannot + route packets from other nodes through to other nodes. + An area node routes between areas. Refer to the Routing + specification for details. + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The ROUTING-III and NONROUTING-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { routing 14 } + +phivRouteCountAgedPktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of aged packet losses." + ::= { routing 15 } + +phivRouteCountNodeUnrPktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of node unreachable packet losses." + ::= { routing 16 } + +phivRouteCountOutRngePktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of node out-of-range packet losses." + ::= { routing 17 } + +phivRouteCountOverSzePktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Oversized packet losses." + ::= { routing 18 } + +phivRouteCountPacketFmtErr OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of packet format errors." + ::= { routing 19 } + +phivRouteCountPtlRteUpdtLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of partial routing update losses." + ::= { routing 20 } + +phivRouteCountVerifReject OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of verification rejects." + ::= { routing 21 } + +-- Level 1 Routing Table + +phivLevel1RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivLevel1RouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the currently known DECnet Phase + IV Routes." + ::= { routing 22 } + +phivLevel1RouteEntry OBJECT-TYPE + SYNTAX PhivLevel1RouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the currently known DECnet Phase + IV Routes." + INDEX { phivLevel1RouteNodeAddr } + ::= { phivLevel1RouteTable 1 } + +PhivLevel1RouteEntry ::= + SEQUENCE { + phivLevel1RouteNodeAddr + PhivAddr, + phivLevel1RouteCircuitIndex + INTEGER, + phivLevel1RouteCost + INTEGER, + phivLevel1RouteHops + INTEGER, + phivLevel1RouteNextNode + PhivAddr + } + +phivLevel1RouteNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the node about which + routing information is contained in this level 1 + routing table." + ::= { phivLevel1RouteEntry 1 } + +phivLevel1RouteCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit. This is + the index to the circuit state table and is the same + value as phivCircuitIndex." + ::= { phivLevel1RouteEntry 2 } + +phivLevel1RouteCost OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the total cost + over the current path to the destination node. Cost is + a positive integer value associated with using a + circuit. Routing routes messages (data) along the path + between two nodes with the smallest cost. COST is kept + on a remote node basis." + ::= { phivLevel1RouteEntry 3 } + +phivLevel1RouteHops OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the number of hops + over to a destination node. A hop is Routing value + representing the logical distance between two nodes in + a network. HOPS is kept on a remote node basis." + ::= { phivLevel1RouteEntry 4 } + +phivLevel1RouteNextNode OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only value indicates the next node on the + circuit used to get to the node under scrutiny + (next hop)." + ::= { phivLevel1RouteEntry 5 } + +-- Additional routing parameters + +phivRouteCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, the following objects are + set to Zero: phivRouteCountAgedPktLoss, + phivRouteCountNodeUnrPktLoss, + phivRouteCountOutRngePktLoss, + phivRouteCountOverSzePktLoss, + phivRouteCountPacketFmtErr, + phivRouteCountPtlRteUpdtLoss, and + phivRouteCountVerifReject." + ::= { routing 23 } + +phivRouteSystemAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "DECnet Phase IV node address." + ::= { routing 24 } + +phivRouteRoutingType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This read-write parameter indicates the type of the executor + node. The node-type is one of the following: + + routing-III + nonrouting-III + routing-IV + ronrouting-IV + area + + A routing node has full routing capability. A + nonrouting node contains a subset of the Routing + routing modules. The III and IV indicate the DNA + phase of the node. Nonrouting nodes can deliver + and receive packets to and from any node, but cannot + route packets from other nodes through to other nodes. + An area node routes between areas. Refer to the Routing + specification for details. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The ROUTING-III and NONROUTING-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { routing 25 } + +phivRouteSystemAddress OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "DECnet Phase IV node address." + ::= { routing 26 } + +-- Circuit Group + +-- The implementation of the Circuit Group is mandatory for +-- all systems. + +-- Circuit Parameters Table + +phivCircuitParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the parameters associated with all + circuits currently known." + ::= {circuit 1 } + +phivCircuitParametersEntry OBJECT-TYPE + SYNTAX PhivCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about all circuits currently + known." + INDEX { phivCircuitIndex } + ::= { phivCircuitParametersTable 1 } + +PhivCircuitParametersEntry ::= + SEQUENCE { + phivCircuitIndex + INTEGER, + phivCircuitLineIndex + INTEGER, + phivCircuitCommonState + INTEGER, + phivCircuitCommonSubState + INTEGER, + phivCircuitCommonName + DisplayString, + phivCircuitExecRecallTimer + INTEGER, + phivCircuitCommonType + INTEGER, + phivCircuitService + INTEGER, + phivCircuitExecCost + INTEGER, + phivCircuitExecHelloTimer + INTEGER + } + +phivCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivCircuitParametersEntry 1 } + +phivCircuitLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line on which this circuit is active. This is + the same as the ifIndex." + ::= { phivCircuitParametersEntry 2 } + +phivCircuitCommonState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + service (3), + cleared (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the circuit's Network Management + operational state. NOTE: These values are incremented + by one compared to the standard DECnet values in order + to maintain compliance with RFC 1155." + ::= { phivCircuitParametersEntry 3 } + +phivCircuitCommonSubState OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + loading (4), + dumping (5), + triggering (6), + autoservice (7), + autoloading (8), + autodumping (9), + autotriggering (10), + synchronizing (11), + failed (12), + running (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the circuit's Network Management + operational and service substate. NOTE: These values are + incremented by one compared to the standard DECnet values + in order to maintain compliance with RFC 1155." + ::= { phivCircuitParametersEntry 4 } + +phivCircuitCommonName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The name of the circuit entry in the table, for example, + SVA-0 or in a level 2 router ASYNC-8 or ETHER-1)." + ::= { phivCircuitParametersEntry 5 } + +phivCircuitExecRecallTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter represents the minimum number of + seconds to wait before restarting the circuit. A + value of 0 indicates not timer is running." + ::= { phivCircuitParametersEntry 6 } + +phivCircuitCommonType OBJECT-TYPE + SYNTAX INTEGER { + ddcmp-point (1), + ddcmp-control (2), + ddcmp-tributary (3), + x25 (4), + ddcmp-dmc (5), + ethernet (6), + ci (7), + qp2-dte20 (8), + bisync (9), + other (14), + fddi (15) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Represents the type of the circuit. For X.25 circuits, + the value must be set to X25. For DDCMP and Ethernet + circuits it is read only and is the same value as the + protocol of the associated line. + NOTE: Values 1 - 5 are incremented by one compared to the + standard DECnet values in order to maintain compliance + with RFC 1155." + ::= { phivCircuitParametersEntry 7 } + +phivCircuitService OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value indicates whether or not Network Management + allows service operations on a circuit. The values for + service-control are as follows: + + ENABLED SERVICE state and/or service functions are + allowed. + + DISABLED SERVICE state and/or service functions are not + allowed. + + NOTE: These values are incremented by one compared to the + standard DECnet values in order to maintain compliance + with RFC 1155." + ::= { phivCircuitParametersEntry 8 } + +phivCircuitExecCost OBJECT-TYPE + SYNTAX INTEGER (1..25) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the routing cost of the circuit. + Routing sends messages along the path between two nodes + having the smallest cost." + ::= { phivCircuitParametersEntry 9 } + +phivCircuitExecHelloTimer OBJECT-TYPE + SYNTAX INTEGER (1..8191) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the frequency of Routing Hello + messages sent to the adjacent node on the circuit." + ::= { phivCircuitParametersEntry 10 } + +-- Circuit Counters Table + +phivCircuitCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the counters associated with all + circuits currently known." + ::= { circuit 2 } + + phivCircuitCountEntry OBJECT-TYPE + SYNTAX PhivCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about all circuits currently known" + INDEX { phivCircuitIndex } + ::= { phivCircuitCountTable 1 } + +PhivCircuitCountEntry ::= + SEQUENCE { + phivCircuitCountSecLastZeroed + PhivCounter, + phivCircuitCountTermPacketsRecd + PhivCounter, + phivCircuitCountOriginPackSent + PhivCounter, + phivCircuitCountTermCongLoss + PhivCounter, + phivCircuitCountCorruptLoss + PhivCounter, + phivCircuitCountTransitPksRecd + PhivCounter, + phivCircuitCountTransitPkSent + PhivCounter, + phivCircuitCountTransitCongestLoss + PhivCounter, + phivCircuitCountCircuitDown + PhivCounter, + phivCircuitCountInitFailure + PhivCounter, + phivCircuitCountAdjDown + PhivCounter, + phivCircuitCountPeakAdj + PhivCounter, + phivCircuitCountBytesRecd + PhivCounter, + phivCircuitCountBytesSent + PhivCounter, + phivCircuitCountDataBlocksRecd + PhivCounter, + phivCircuitCountDataBlocksSent + PhivCounter, + phivCircuitCountUsrBuffUnav + PhivCounter + } + +phivCircuitCountSecLastZeroed OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of seconds since the circuit counters for this + circuit were last zeroed." + ::= { phivCircuitCountEntry 1 } + +phivCircuitCountTermPacketsRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of terminating packets received on this circuit." + ::= { phivCircuitCountEntry 2 } + +phivCircuitCountOriginPackSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of originating packets sent on this circuit." + ::= { phivCircuitCountEntry 3 } + +phivCircuitCountTermCongLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of terminating congestion losses on this + circuit." + ::= { phivCircuitCountEntry 4 } + +phivCircuitCountCorruptLoss OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of corruption losses on this circuit." + ::= { phivCircuitCountEntry 5 } + +phivCircuitCountTransitPksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Transit packets received on this circuit." + ::= { phivCircuitCountEntry 6 } + +phivCircuitCountTransitPkSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of transit packets sent on this circuit." + ::= { phivCircuitCountEntry 7 } + +phivCircuitCountTransitCongestLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of transit congestion losses on this circuit." + ::= { phivCircuitCountEntry 8 } + +phivCircuitCountCircuitDown OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of circuit downs on this circuit." + ::= { phivCircuitCountEntry 9 } + +phivCircuitCountInitFailure OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Initialization failures on this circuit." + ::= { phivCircuitCountEntry 10 } + +phivCircuitCountAdjDown OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This counter indicates the number of adjacency losses + that result from any of the following: + Node listener timeout + Invalid data received at node listener + Unexpected control (initialization or verification) + message received + Routing message received with a checksum error + Node identification from a routing message or a + Hello message that is not the one expected Hello + message received indicating that connectivity + became one-way + Adjacency idled." + ::= { phivCircuitCountEntry 11 } + +phivCircuitCountPeakAdj OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This counter indicates the maximum number of nodes + that are up on the circuit." + ::= { phivCircuitCountEntry 12 } + +phivCircuitCountBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received on this circuit." + ::= { phivCircuitCountEntry 13 } + +phivCircuitCountBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent on this circuit." + ::= { phivCircuitCountEntry 14 } + +phivCircuitCountDataBlocksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks received on this circuit." + ::= { phivCircuitCountEntry 15 } + +phivCircuitCountDataBlocksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks sent on this circuit." + ::= { phivCircuitCountEntry 16 } + +phivCircuitCountUsrBuffUnav OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailable errors." + ::= { phivCircuitCountEntry 17 } + +-- Additional Circuit Parameters + +phivCircuitOrigQueueLimit OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter indicates the maximum number of + originating packets that may be outstanding on this + circuit. This does not include route-thru traffic." + ::= { circuit 3 } + +phivCircuitCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, all of the counters in the + Circuit Counter Table are set to zero." + ::= { circuit 4 } + +-- DDCMP Circuit Group + +-- The implementation of the DDCMP Circuit Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- DDCMP Parameters Table + +phivDDCMPCircuitParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about DDCMP circuit parameters." + ::= { ddcmp 1} + +phivDDCMPCircuitParametersEntry OBJECT-TYPE + SYNTAX PhivDDCMPCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about DDCMP circuits currently + known." + INDEX { phivDDCMPCircuitIndex } + ::= { phivDDCMPCircuitParametersTable 1 } + +PhivDDCMPCircuitParametersEntry ::= + SEQUENCE { + phivDDCMPCircuitIndex + INTEGER, + phivDDCMPCircuitAdjNodeAddr + INTEGER, + phivDDCMPCircuitTributary + INTEGER + } + +phivDDCMPCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known DDCMP circuit. + This is the same value as phivCircuitIndex." + ::= { phivDDCMPCircuitParametersEntry 1 } + +phivDDCMPCircuitAdjNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the adjacent node." + ::= { phivDDCMPCircuitParametersEntry 2 } + +phivDDCMPCircuitTributary OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Data Link physical tributary + address of the circuit." + ::= { phivDDCMPCircuitParametersEntry 3 } + +-- DDCMP Circuit Counter Table + +phivDDCMPCircuitCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the DDCMP counters associated with all + circuits currently known." + ::= { ddcmp 2 } + +phivDDCMPCircuitCountEntry OBJECT-TYPE + SYNTAX PhivDDCMPCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about DDCMP circuits now known" + INDEX { phivCircuitIndex } + ::= { phivDDCMPCircuitCountTable 1 } + +PhivDDCMPCircuitCountEntry ::= + SEQUENCE { + phivDDCMPCircuitErrorsInbd + PhivCounter, + phivDDCMPCircuitErrorsOutbd + PhivCounter, + phivDDCMPCircuitRmteReplyTimeouts + PhivCounter, + phivDDCMPCircuitLocalReplyTimeouts + PhivCounter, + phivDDCMPCircuitRmteBuffErrors + PhivCounter, + phivDDCMPCircuitLocalBuffErrors + PhivCounter, + phivDDCMPCircuitSelectIntervalsElap + PhivCounter, + phivDDCMPCircuitSelectTimeouts + PhivCounter + } + +phivDDCMPCircuitErrorsInbd OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Data errors inbound." + ::= { phivDDCMPCircuitCountEntry 1 } + +phivDDCMPCircuitErrorsOutbd OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of outbound data errors." + ::= { phivDDCMPCircuitCountEntry 2 } + +phivDDCMPCircuitRmteReplyTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote reply timeouts." + ::= { phivDDCMPCircuitCountEntry 3 } + +phivDDCMPCircuitLocalReplyTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local Reply timeouts." + ::= { phivDDCMPCircuitCountEntry 4 } + +phivDDCMPCircuitRmteBuffErrors OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote reply time out errors." + ::= { phivDDCMPCircuitCountEntry 5 } + +phivDDCMPCircuitLocalBuffErrors OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local buffer errors." + ::= { phivDDCMPCircuitCountEntry 6 } + +phivDDCMPCircuitSelectIntervalsElap OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Selection intervals that have elapsed." + ::= {phivDDCMPCircuitCountEntry 7 } + +phivDDCMPCircuitSelectTimeouts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of selection timeouts." + ::= {phivDDCMPCircuitCountEntry 8 } + +-- DDCMP Line Count Table + +phivDDCMPLineCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPLineCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The DDCMP Line Count Table." + ::= { ddcmp 3 } + +phivDDCMPLineCountEntry OBJECT-TYPE + SYNTAX PhivDDCMPLineCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each line." + INDEX { phivDDCMPLineCountIndex } + ::= { phivDDCMPLineCountTable 1 } + +PhivDDCMPLineCountEntry ::= + SEQUENCE { + phivDDCMPLineCountIndex + InterfaceIndex, + phivDDCMPLineCountDataErrsIn + PhivCounter, + phivDDCMPLineCountRmteStationErrs + PhivCounter, + phivDDCMPLineCountLocalStationErrs + PhivCounter + } + +phivDDCMPLineCountIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line 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 phivLineIndex. + This value is the ifIndex." + ::= { phivDDCMPLineCountEntry 1 } + +phivDDCMPLineCountDataErrsIn OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data errors inbound." + ::= { phivDDCMPLineCountEntry 2 } + +phivDDCMPLineCountRmteStationErrs OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote station errors." + ::= { phivDDCMPLineCountEntry 3 } + +phivDDCMPLineCountLocalStationErrs OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local station errors." + ::= { phivDDCMPLineCountEntry 4 } + +-- DDCMP Multipoint Circuit Control Group + +-- The implementation of the DDCMP Multipoint Circuit Control +-- Group is optional. A system can be said to implement this group +-- if and only if all objects in this group are implemented. + +phivControlSchedTimer OBJECT-TYPE + SYNTAX INTEGER (50..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds + between recalculation of tributary polling priorities." + DEFVAL { 200 } + ::= { control 1 } + +phivControlDeadTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds + between polls of one of the set of dead + tributaries." + DEFVAL { 10000 } + ::= { control 2 } + +phivControlDelayTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the minimum number of + milliseconds to delay between polls. The delay timer + limits the effect of a very fast control station on + slow tributaries." + ::= { control 3 } + +phivControlStreamTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds a + tributary or a half duplex remote station is + allowed to hold the line. + + NOTE: This parameter can also be applied to + half-duplex lines of type DDCMP POINT." + DEFVAL { 6000 } + ::= { control 4 } + +-- DDCMP Multipoint Circuit Control Parameters Table + +phivControlParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivControlParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about control circuit parameters." + ::= { control 5 } + +phivControlParametersEntry OBJECT-TYPE + SYNTAX PhivControlParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about control circuits + currently known." + INDEX { phivControlCircuitIndex } + ::= { phivControlParametersTable 1 } + +PhivControlParametersEntry ::= + SEQUENCE { + phivControlCircuitIndex + INTEGER, + phivControlBabbleTimer + INTEGER, + phivControlMaxBuffs + INTEGER, + phivControlMaxTransmits + INTEGER, + phivControlDyingBase + INTEGER, + phivControlDyingIncrement + INTEGER, + phivControlDeadThreshold + INTEGER, + phivControlDyingThreshold + INTEGER, + phivControlInactTreshold + INTEGER, + phivControlPollingState + INTEGER, + phivControlPollingSubState + INTEGER, + phivControlTransTimer + INTEGER + } + +phivControlCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known multipoint + control circuit. + This is the same value as phivCircuitIndex." + ::= { phivControlParametersEntry 1 } + +phivControlBabbleTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds that a + selected tributary or remote half-duplex station is + allowed to transmit." + DEFVAL { 6000 } + ::= { phivControlParametersEntry 2 } + +phivControlMaxBuffs OBJECT-TYPE + SYNTAX INTEGER (1..254) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of buffers the + tributary can use from a common buffer pool. If not + set, there is no common buffer pool and buffers are + explicitly supplied by the higher level. Count is a + decimal integer in the range 1-254." + ::= { phivControlParametersEntry 3 } + +phivControlMaxTransmits OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of data + messages that can be transmitted at one time. Count + is a decimal integer in the range 1-255." + DEFVAL { 4 } + ::= { phivControlParametersEntry 4 } + +phivControlDyingBase OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the base priority to which a + tributary is reset each time it has been polled. A + separate base can be set for each of the indicated + polling states. Base is a decimal integer in the range + 0-255. If not set, the defaults are: active, 255; + inactive, 0; and dying, 0." + ::= { phivControlParametersEntry 5 } + +phivControlDyingIncrement OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the increment added to the + tributary priority each time the scheduling timer + expires. If not set, the defaults are: active, 0; + inactive, 64; and dying, 16." + ::= { phivControlParametersEntry 6 } + +phivControlDeadThreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active, inactive, or dying tributary before changing + its polling state to dead because of receive timeouts. + Count is a decimal integer in the range 0-255." + DEFVAL { 8 } + ::= { phivControlParametersEntry 7 } + +phivControlDyingThreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active or inactive tributary before changing its + polling state to dying because of receive timeouts. + Count is a decimal integer in the range 0-255." + DEFVAL { 2 } + ::= { phivControlParametersEntry 8 } + +phivControlInactTreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active tributary before changing its polling state to + inactive because of no data response. Count is a + decimal integer in the range + 0-255." + DEFVAL { 8 } + ::= { phivControlParametersEntry 9 } + +phivControlPollingState OBJECT-TYPE + SYNTAX INTEGER { + automatic (1), + active (2), + inactive (3), + dying (4), + dead (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the state of the tributary + relative to the multipoint polling algorithm. If not + set the default is AUTOMATIC. The possible states are: + AUTOMATIC + + The tributary's state is allowed to vary according to + the operation of the polling algorithm. + + ACTIVE/INACTIVE/DYING/DEAD + + The tributary is locked in the specified state. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155." + ::= { phivControlParametersEntry 10 } + +phivControlPollingSubState OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2), + dying (3), + dead (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the tributary's state as + determined by the polling algorithm. This applies + only when the polling state is AUTOMATIC and is + read-only to Network Management. Polling-substate is + one of ACTIVE, INACTIVE, DYING, or DEAD. It is + displayed as a tag on the polling state, for example: + AUTOMATIC-INACTIVE." + ::= { phivControlParametersEntry 11 } + +phivControlTransTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds to + delay between data message transmits. Milliseconds is + a decimal integer in the range 0-65535." + DEFVAL { 0 } + ::= { phivControlParametersEntry 12 } + +-- Ethernet Group + +-- The implementation of the Ethernet Group is mandatory +-- for all systems which support ethernet links. + +-- Ethernet Parameters Table + +phivEthLinkParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEthLinkParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about ethernet link parameters." + ::= { ethernet 1} + +phivEthLinkParametersEntry OBJECT-TYPE + SYNTAX PhivEthLinkParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameter information about ethernet links currently + known." + INDEX { phivEthLinkIndex } + ::= { phivEthLinkParametersTable 1 } + +PhivEthLinkParametersEntry ::= + SEQUENCE { + phivEthLinkIndex + INTEGER, + phivEthDesigRouterNodeAddr + PhivAddr, + phivEthMaxRouters + INTEGER, + phivEthRouterPri + INTEGER, + phivEthHardwareAddr + OCTET STRING + } + +phivEthLinkIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The circuit over which this links information is + collected. This is the same as phivCircuitIndex." + ::= { phivEthLinkParametersEntry 1 } + +phivEthDesigRouterNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the designated router." + ::= { phivEthLinkParametersEntry 2 } + +phivEthMaxRouters OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter is the maximum number of routers (other + than the executor itself) allowed on the circuit by + Routing for circuits that are owned by the executor + node." + ::= { phivEthLinkParametersEntry 3 } + +phivEthRouterPri OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter is the priority that this router is to + have in the selection of designated router for the + circuit on circuits that are owned by the executor + node." + DEFVAL { 64 } + ::= { phivEthLinkParametersEntry 4 } + +phivEthHardwareAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the address that is + associated with the line device hardware as seen by + the DECnet Software. This value is not the same as + ifPhysAddress." + ::= { phivEthLinkParametersEntry 5 } + +-- Counters Group + +-- The implementation of the Counters Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- Counters Table + +phivCountersCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCountersCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about ethernet link counters." + ::= { counters 1 } + +phivCountersCountEntry OBJECT-TYPE + SYNTAX PhivCountersCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about ethernet links currently + known." + INDEX { phivCountersIndex } + ::= { phivCountersCountTable 1 } + +PhivCountersCountEntry ::= + SEQUENCE { + phivCountersIndex + InterfaceIndex, + phivCountersCountBytesRecd + PhivCounter, + phivCountersCountBytesSent + PhivCounter, + phivCountersCountDataBlocksRecd + PhivCounter, + phivCountersCountDataBlocksSent + PhivCounter, + phivCountersCountEthUsrBuffUnav + PhivCounter, + phivCountersCountMcastBytesRecd + PhivCounter, + phivCountersCountDataBlksRecd + PhivCounter, + phivCountersCountDataBlksSent + PhivCounter, + phivCountersCountMcastBlksRecd + PhivCounter, + phivCountersCountBlksSentDef + PhivCounter, + phivCountersCountBlksSentSingleCol + PhivCounter, + phivCountersCountBlksSentMultCol + PhivCounter, + phivCountersCountSendFailure + PhivCounter, + phivCountersCountCollDetectFailure + PhivCounter, + phivCountersCountReceiveFailure + PhivCounter, + phivCountersCountUnrecFrameDest + PhivCounter, + phivCountersCountDataOver + PhivCounter, + phivCountersCountSysBuffUnav + PhivCounter, + phivCountersCountUsrBuffUnav + PhivCounter + } + +phivCountersIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interface to which these counters apply. This is + the same interface as identified by the same value of + phivLineIndex. This value is the ifIndex." + ::= { phivCountersCountEntry 1 } + +phivCountersCountBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received over this link." + ::= { phivCountersCountEntry 2 } + +phivCountersCountBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent over this link." + ::= { phivCountersCountEntry 3 } + +phivCountersCountDataBlocksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Number of data blocks received over this link." + ::= { phivCountersCountEntry 4 } + +phivCountersCountDataBlocksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Number of data blocks sent over this link." + ::= { phivCountersCountEntry 5 } + +phivCountersCountEthUsrBuffUnav OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailable errors over this + link." + ::= { phivCountersCountEntry 6 } + +phivCountersCountMcastBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of multicast bytes received over this link." + ::= { phivCountersCountEntry 7 } + +phivCountersCountDataBlksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks received over this link." + ::= { phivCountersCountEntry 8 } + +phivCountersCountDataBlksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks sent over this link." + ::= { phivCountersCountEntry 9 } + +phivCountersCountMcastBlksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of multicast blocks received over this link." + ::= { phivCountersCountEntry 10 } + +phivCountersCountBlksSentDef OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, initially deferred over this + link." + ::= { phivCountersCountEntry 11 } + +phivCountersCountBlksSentSingleCol OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, single collision over this link." + ::= { phivCountersCountEntry 12 } + +phivCountersCountBlksSentMultCol OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, multiple collisions over this + link." + ::= { phivCountersCountEntry 13 } + +phivCountersCountSendFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of send failures over this link." + ::= { phivCountersCountEntry 14 } + +phivCountersCountCollDetectFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of collision detect check failures over this + link." + ::= { phivCountersCountEntry 15 } + +phivCountersCountReceiveFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of receive failures over this link." + ::= { phivCountersCountEntry 16 } + +phivCountersCountUnrecFrameDest OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of unrecognized frame destinations over this + link." + ::= { phivCountersCountEntry 17 } + +phivCountersCountDataOver OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data overruns over this link." + ::= { phivCountersCountEntry 18 } + +phivCountersCountSysBuffUnav OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of system buffer unavailables over this link." + ::= { phivCountersCountEntry 19 } + +phivCountersCountUsrBuffUnav OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailables." + ::= { phivCountersCountEntry 20 } + +-- Adjacency Group + +-- The implementation of the Adjacency Group is mandatory for all +-- conformant implementations of this memo. + +-- The phivAdjTable has been made obsolete it has been replaced with +-- the phivAdjNodeTable. + +phivAdjTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAdjEntry + ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The Adjacency Table." + ::= { adjacency 1 } + +phivAdjEntry OBJECT-TYPE + SYNTAX PhivAdjEntry + ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "There is one entry in the table for each adjacency." + INDEX { phivAdjCircuitIndex } + ::= { phivAdjTable 1 } + +PhivAdjEntry ::= + SEQUENCE { + phivAdjCircuitIndex + INTEGER, + phivAdjNodeAddr + PhivAddr, + phivAdjBlockSize + INTEGER, + phivAdjListenTimer + INTEGER (1..65535), + phivAdjCircuitEtherServPhysAddr + OCTET STRING, + phivAdjType + INTEGER, + phivAdjState + INTEGER, + phivAdjPriority + INTEGER, + phivAdjExecListenTimer + INTEGER (1..65535) + } +phivAdjCircuitIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS obsolete + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivAdjEntry 1 } + +phivAdjNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the adjacent node." + ::= { phivAdjEntry 2 } + +phivAdjBlockSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This read-only parameter is the block size that was + negotiated with the adjacent Routing layer during Routing + initialization over a particular circuit. It includes the + routing header, but excludes the data link header. This + parameter is qualified by ADJACENT NODE." + ::= { phivAdjEntry 3 } + +phivAdjListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This value determines the maximum number of seconds + allowed to elapse before Routing receives some message + (either a Hello message or a user message) from the + adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer. + This parameter is qualified by ADJACENT NODE." + ::= { phivAdjEntry 4 } + +phivAdjCircuitEtherServPhysAddr OBJECT-TYPE + SYNTAX OCTET STRING ( SIZE (6) ) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the Ethernet physical address + of an adjacent node that is being serviced on this + circuit. This parameter is a qualifier for SERVICE + SUBSTATE." + ::= { phivAdjEntry 5 } + +phivAdjType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the type of adjacency. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The routing-III and nonrouting-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { phivAdjEntry 6 } + +phivAdjState OBJECT-TYPE + SYNTAX INTEGER { + initializing (1), -- Ethernet one-way + up (2), -- Ethernet two-way + run (3), -- The eight DDCMP/X.25 states + circuit-rejected (4), + data-link-start (5), + routing-layer-initialize (6), + routing-layer-verify (7), + routing-layer-complete (8), + off (9), + halt (10) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This value indicates the state of a router adjacency. + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjType) ROUTING IV or AREA, + this variable is the state of the Ethernet + Initialization Layer for this adjacency, and can have + values INITIALIZING or UP. (See Section 9.1.1 of + DECnet Phase IV Routing Layer Functional Specification.) + + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjType) NONROUTING IV, + this variable will always take on the value UP. + + On adjacencies over a circuit of type + (phivCircuitCommonType) DDCMP POINT, DDCMP CONTROL, + DDCMP TRIBUTARY, DDCMP DMC, or X.25, this variable is + the state of the Routing Layer Initialization Circuit + State. (See section 7.3, ibid.) It can have values + between RUN and HALT. + + On adjacencies over a circuit of type + (phivCircuitCommonType) OTHER, this variable may be + used in a manner consistent with the Initialization + Layer used on that circuit." + ::= { phivAdjEntry 7 } + +phivAdjPriority OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Priority assigned by the adjacent node for this + circuit." + ::= { phivAdjEntry 8 } + +phivAdjExecListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This read-only value determines the maximum number of + seconds allowed to elapse before Routing receives some + message (either a Hello message or a user message) from + the adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer." + ::= { phivAdjEntry 9 } + +-- New Adjacency Table this replaces the phivAdjTable. + +phivAdjNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAdjNodeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Adjacent Node Table." + ::= { adjacency 2 } + +phivAdjNodeEntry OBJECT-TYPE + SYNTAX PhivAdjNodeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each adjacency." + INDEX { phivAdjNodeCircuitIndex, phivAdjAddr } + ::= { phivAdjNodeTable 1 } + +PhivAdjNodeEntry ::= + SEQUENCE { + phivAdjNodeCircuitIndex + INTEGER, + phivAdjAddr + PhivAddr, + phivAdjNodeBlockSize + INTEGER, + phivAdjNodeListenTimer + INTEGER, + phivAdjNodeCircuitEtherServPhysAddr + OCTET STRING, + phivAdjNodeType + INTEGER, + phivAdjNodeState + INTEGER, + phivAdjNodePriority + INTEGER + } + +phivAdjNodeCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit. This + value is the same as phivCircuitIndex and identifies the + circuit over which the adjacency is realized." + ::= { phivAdjNodeEntry 1 } + +phivAdjAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the adjacent node." + ::= { phivAdjNodeEntry 2 } + +phivAdjNodeBlockSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the block size that was + negotiated with the adjacent Routing layer during Routing + initialization over a particular circuit. It includes the + routing header, but excludes the data link header. This + parameter is qualified by ADJACENT NODE." + ::= { phivAdjNodeEntry 3 } + +phivAdjNodeListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value determines the maximum number of seconds + allowed to elapse before Routing receives some message + (either a Hello message or a user message) from the + adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer. + This parameter is qualified by ADJACENT NODE." + ::= { phivAdjNodeEntry 4 } + +phivAdjNodeCircuitEtherServPhysAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This parameter indicates the Ethernet physical address + of an adjacent node that is being serviced on this + circuit. This parameter is a qualifier for SERVICE + SUBSTATE." + ::= { phivAdjNodeEntry 5 } + +phivAdjNodeType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This parameter indicates the type of adjacency. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The routing-III and nonrouting-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { phivAdjNodeEntry 6 } + +phivAdjNodeState OBJECT-TYPE + SYNTAX INTEGER { + initializing (1), -- Ethernet one-way + up (2), -- Ethernet two-way + run (3), -- The eight DDCMP/X.25 states + circuit-rejected (4), + data-link-start (5), + routing-layer-initialize (6), + routing-layer-verify (7), + routing-layer-complete (8), + off (9), + halt (10) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the state of a router adjacency. + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjNodeType) ROUTING IV or AREA, + this variable is the state of the Ethernet + Initialization Layer for this adjacency, and can have + values INITIALIZING or UP. (See Section 9.1.1 of + DECnet Phase IV Routing Layer Functional Specification.) + + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjNodeType) NONROUTING IV, + this variable will always take on the value UP. + + On adjacencies over a circuit of type + (phivCircuitCommonType) DDCMP POINT, DDCMP CONTROL, + DDCMP TRIBUTARY, DDCMP DMC, or X.25, this variable is + the state of the Routing Layer Initialization Circuit + State. (See section 7.3, ibid.) It can have values + between RUN and HALT. + + On adjacencies over a circuit of type + (phivCircuitCommonType) OTHER, this variable may be + used in a manner consistent with the Initialization + Layer used on that circuit." + ::= { phivAdjNodeEntry 7 } + +phivAdjNodePriority OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Priority assigned by the adjacent node for this + circuit." + ::= { phivAdjNodeEntry 8 } + +-- Line Group + +-- The implementation of the Line Group is mandatory for all +-- conformant implementations of this memo. + +phivLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivLineEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Line Table." + ::= { line 1 } + +phivLineEntry OBJECT-TYPE + SYNTAX PhivLineEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each line." + INDEX { phivLineIndex } + ::= { phivLineTable 1 } + +PhivLineEntry ::= + SEQUENCE { + phivLineIndex + InterfaceIndex, + phivLineName + DisplayString, + phivLineState + INTEGER, + phivLineSubstate + INTEGER, + phivLineService + INTEGER, + phivLineDevice + DisplayString, + phivLineReceiveBuffs + INTEGER, + phivLineProtocol + INTEGER, + phivLineServiceTimer + INTEGER, + phivLineMaxBlock + INTEGER + } + +phivLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line on which this entry's equivalence is effective. + This is the same as the ifIndex." + ::= { phivLineEntry 1 } + +phivLineName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The name of the line on this row of the table." + ::= { phivLineEntry 2 } + +phivLineState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + service (3), + cleared (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents Network Management operational + state. + NOTE that these values are incremented by one compared to + the standard DECnet values." + ::= { phivLineEntry 3 } + +phivLineSubstate OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + loading (4), + dumping (5), + triggering (6), + auto-service (7), + auto-loading (8), + auto-dumping (9), + auto-triggering (10), + synchronizing (11), + failed (12), + running (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the line's read-only Network + Management substate. + NOTE that these values are incremented by one compared to + the standard DECnet values." + ::= { phivLineEntry 4 } + +phivLineService OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + other (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the line's read-only Network + Management service. + NOTE that these values are incremented by one compared to + the standard DECnet values and OTHER is a new addition." + ::= { phivLineEntry 5 } + +phivLineDevice OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link device to be + used on the line." + ::= { phivLineEntry 6 } + +phivLineReceiveBuffs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of receive buffers + reserved for the line. It is a decimal number in + the range 0-65535. 0 is supported for those vendors + that do not reserve buffers on a per line basis and + use a pool of buffers that can be used by any line." + ::= { phivLineEntry 7 } + +phivLineProtocol OBJECT-TYPE + SYNTAX INTEGER { + ddcmp-point (1), + ddcmp-control (2), + ddcmp-tributary (3), + reserved (4), + ddcmp-dmc (5), + olapb (6), + ethernet (7), + ci (8), + qp2 (9), + other (14), + fddi (15) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the protocol used on the line + device. Note that these values are incremented by + one compared to the standard DECnet values." + ::= { phivLineEntry 8 } + +phivLineServiceTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the amount of time in + milliseconds allowed to elapse before a Data Link + receive request completes while doing service + operations." + ::= { phivLineEntry 9 } + +phivLineMaxBlock OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Data Link maximum block + size on the line." + ::= { phivLineEntry 10 } + +-- Non Broadcast Line Group + +-- The implementation of the Non Broadcast Line Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +phivNonBroadcastTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivNonBroadcastEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Non Broadcast Table." + ::= { nonBroadcastLine 1 } + +phivNonBroadcastEntry OBJECT-TYPE + SYNTAX PhivNonBroadcastEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each + Non Broadcast line." + INDEX { phivNonBroadcastIndex } + ::= { phivNonBroadcastTable 1 } + +PhivNonBroadcastEntry ::= + SEQUENCE { + phivNonBroadcastIndex + InterfaceIndex, + phivNonBroadcastController + INTEGER, + phivNonBroadcastDuplex + INTEGER, + phivNonBroadcastClock + INTEGER, + phivNonBroadcastRetransmitTimer + INTEGER + } + +phivNonBroadcastIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Non Broadcast line on which this entry's + equivalence is effective. This is the same value + as the ifIndex." + ::= { phivNonBroadcastEntry 1 } + +phivNonBroadcastController OBJECT-TYPE + SYNTAX INTEGER { + normal (1), + loopback (2), + other (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware + controller mode for the line device. The values + for controller-mode are: + + NORMAL For normal controller operating mode. + + LOOPBACK For software controllable loopback of the + controller. On those devices that can support this + mode, it causes all transmitted messages to be looped + back from within the controller itself. This is + accomplished without any manual intervention other + than the setting of this parameter value. + + OTHER indicates function is not supported + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 2 } + +phivNonBroadcastDuplex OBJECT-TYPE + SYNTAX INTEGER { + full (1), + half (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware + duplex mode of the line device. The possible modes + are: + + FULL Full-duplex + HALF Half-duplex + + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 3 } + +phivNonBroadcastClock OBJECT-TYPE + SYNTAX INTEGER { + external (1), + internal (2), + other (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware clock + mode for the line device. The values for clock-mode are: + INTERNAL For software controllable loopback use of + the clock. On those devices that can support this + mode, it causes the device to supply a clock signal + such that a transmitted messages can be looped + back from outside the device. This may require manual + intervention other than the setting of this parameter + value. For example, the operator may have to connect + a loopback plug in place of the normal line. + + EXTERNAL For normal clock operating mode, where the + clock signal is supplied externally to the controller. + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 4 } + +phivNonBroadcastRetransmitTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents number of milliseconds before + the Data Link retransmits a block on the line. On + half-duplex lines, this parameter is the select timer." + DEFVAL { 3000 } + ::= { phivNonBroadcastEntry 5 } + +-- Area Parameters Group + +-- The implementation of the Area Parameters Group is mandatory +-- for all systems which implement level 2 routing. + +phivAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAreaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of information kept on all areas known to + this unit." + ::= { area 1 } + +phivAreaEntry OBJECT-TYPE + SYNTAX PhivAreaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The area routing information." + INDEX { phivAreaNum } + ::= { phivAreaTable 1 } + +PhivAreaEntry ::= + SEQUENCE { + phivAreaNum + INTEGER, + phivAreaState + INTEGER, + phivAreaCost + Gauge, + phivAreaHops + INTEGER, + phivAreaNextNode + PhivAddr, + phivAreaCircuitIndex + INTEGER + } + +phivAreaNum OBJECT-TYPE + SYNTAX INTEGER (0..64) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the area number of this entry." + ::= { phivAreaEntry 1 } + +phivAreaState OBJECT-TYPE + SYNTAX INTEGER { + reachable (4), + unreachable (5) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the state of the area" + ::= { phivAreaEntry 2 } + +phivAreaCost OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total cost over the current path to the + destination area. Cost is a value associated with + using a circuit. Routing routes messages (data) + along the path between 2 areas with the smallest + cost." + ::= { phivAreaEntry 3 } + +phivAreaHops OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hops to a destination area. A hop is + the routing value representing the logical distance + between two areas in network." + ::= { phivAreaEntry 4 } + +phivAreaNextNode OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The next node on the circuit used to get to the + area under scrutiny." + ::= { phivAreaEntry 5 } + +phivAreaCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivAreaEntry 6 } + +-- Additional Area Parameters + +phivAreaMaxCost OBJECT-TYPE + SYNTAX INTEGER (1..1022) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total path cost + allowed from the executor to any other level 2 routing + node. The AREA MAXIMUM COST number is decimal in the + range 1-1022. This parameter is only applicable if + the executor node is of type AREA." + ::= { area 2 } + +phivAreaMaxHops OBJECT-TYPE + SYNTAX INTEGER (1..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of routing hops + allowable from the executor to any other level 2 + routing node. This parameter is only applicable if the + executor node is of type AREA." + ::= { area 3 } + +phivRouteMaxArea OBJECT-TYPE + SYNTAX INTEGER (1..63) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the largest area number and, + therefore, number of areas that can be known about + by the executor node's Routing. This parameter is only + applicable if the executor node is of type AREA." + ::= { area 4 } + + END diff --git a/mibs/ietf/DIAL-CONTROL-MIB b/mibs/ietf/DIAL-CONTROL-MIB new file mode 100644 index 0000000..0d25b33 --- /dev/null +++ b/mibs/ietf/DIAL-CONTROL-MIB @@ -0,0 +1,1267 @@ +DIAL-CONTROL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + NOTIFICATION-TYPE, + OBJECT-TYPE, + Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + DisplayString, + TimeStamp, + RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + IANAifType + FROM IANAifType-MIB + ifOperStatus, + ifIndex, + InterfaceIndex, + InterfaceIndexOrZero + FROM IF-MIB + transmission + FROM RFC1213-MIB; + +dialControlMib MODULE-IDENTITY + LAST-UPDATED "9609231544Z" -- Sep 23, 1996 + ORGANIZATION "IETF ISDN Working Group" + CONTACT-INFO + " Guenter Roeck + Postal: cisco Systems + 170 West Tasman Drive + San Jose, CA 95134 + U.S.A. + Phone: +1 408 527 3143 + E-mail: groeck@cisco.com" + DESCRIPTION + "The MIB module to describe peer information for + demand access and possibly other kinds of interfaces." + ::= { transmission 21 } + +AbsoluteCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a Counter32-like value that starts at zero, + does not decrease, and does not wrap. This may be used + only in situations where wrapping is not possible or + extremely unlikely. Should such a counter overflow, + it locks at the maxium value of 4,294,967,295. + + The primary use of this type of counter is situations + where a counter value is to be recorded as history + and is thus no longer subject to reading for changing + values." + SYNTAX Unsigned32 + +-- Dial Control Mib objects definitions + +dialControlMibObjects OBJECT IDENTIFIER ::= { dialControlMib 1 } + +-- General configuration group + +dialCtlConfiguration OBJECT IDENTIFIER ::= { dialControlMibObjects 1 } + +-- general configuration data/parameters + +dialCtlAcceptMode OBJECT-TYPE + SYNTAX INTEGER { + acceptNone(1), + acceptAll(2), + acceptKnown(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The security level for acceptance of incoming calls. + acceptNone(1) - incoming calls will not be accepted + acceptAll(2) - incoming calls will be accepted, + even if there is no matching entry + in the dialCtlPeerCfgTable + acceptKnown(3) - incoming calls will be accepted only + if there is a matching entry in the + dialCtlPeerCfgTable + " + ::= { dialCtlConfiguration 1 } + +dialCtlTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + all peers. If the value of this object is enabled(1), + traps will be generated for all peers. If the value + of this object is disabled(2), traps will be generated + only for peers having dialCtlPeerCfgTrapEnable set + to enabled(1)." + DEFVAL { disabled } + ::= { dialCtlConfiguration 2 } + + +-- Peer group + +dialCtlPeer OBJECT IDENTIFIER ::= { dialControlMibObjects 2 } + +-- peer configuration table + +dialCtlPeerCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF DialCtlPeerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of peers from which the managed device + will accept calls or to which it will place them." + ::= { dialCtlPeer 1 } + +dialCtlPeerCfgEntry OBJECT-TYPE + SYNTAX DialCtlPeerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data for a single Peer. This entry is + effectively permanent, and contains information + to identify the peer, how to connect to the peer, + how to identify the peer and its permissions. + The value of dialCtlPeerCfgOriginateAddress must be + specified before a new row in this table can become + active(1). Any writeable parameters in an existing entry + can be modified while the entry is active. The modification + will take effect when the peer in question will be + called the next time. + An entry in this table can only be created if the + associated ifEntry already exists." + INDEX { dialCtlPeerCfgId, ifIndex } + ::= { dialCtlPeerCfgTable 1 } + +DialCtlPeerCfgEntry ::= SEQUENCE { + dialCtlPeerCfgId INTEGER, + dialCtlPeerCfgIfType IANAifType, + dialCtlPeerCfgLowerIf InterfaceIndexOrZero, + dialCtlPeerCfgOriginateAddress DisplayString, + dialCtlPeerCfgAnswerAddress DisplayString, + dialCtlPeerCfgSubAddress DisplayString, + dialCtlPeerCfgClosedUserGroup DisplayString, + dialCtlPeerCfgSpeed INTEGER, + dialCtlPeerCfgInfoType INTEGER, + dialCtlPeerCfgPermission INTEGER, + dialCtlPeerCfgInactivityTimer INTEGER, + dialCtlPeerCfgMinDuration INTEGER, + dialCtlPeerCfgMaxDuration INTEGER, + dialCtlPeerCfgCarrierDelay INTEGER, + dialCtlPeerCfgCallRetries INTEGER, + dialCtlPeerCfgRetryDelay INTEGER, + dialCtlPeerCfgFailureDelay INTEGER, + dialCtlPeerCfgTrapEnable INTEGER, + dialCtlPeerCfgStatus RowStatus + } + +dialCtlPeerCfgId OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a single peer. There may + be several entries in this table for one peer, + defining different ways of reaching this peer. + Thus, there may be several entries in this table + with the same value of dialCtlPeerCfgId. + Multiple entries for one peer may be used to support + multilink as well as backup lines. + A single peer will be identified by a unique value + of this object. Several entries for one peer MUST + have the same value of dialCtlPeerCfgId, but different + ifEntries and thus different values of ifIndex." + ::= { dialCtlPeerCfgEntry 1 } + +dialCtlPeerCfgIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface type to be used for calling this peer. + In case of ISDN, the value of isdn(63) is to be used." + DEFVAL { other } + ::= { dialCtlPeerCfgEntry 2 } + +dialCtlPeerCfgLowerIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ifIndex value of an interface the peer will have to be + called on. For example, on an ISDN interface, this can be + the ifIndex value of a D channel or the ifIndex value of a + B channel, whatever is appropriate for a given peer. + As an example, for Basic Rate leased lines it will be + necessary to specify a B channel ifIndex, while for + semi-permanent connections the D channel ifIndex has + to be specified. + If the interface can be dynamically assigned, this object + has a value of zero." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 3 } + +dialCtlPeerCfgOriginateAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Call Address at which the peer will be called. + Think of this as the set of characters following 'ATDT ' + or the 'phone number' included in a D channel call request. + + The structure of this information will be switch type + specific. If there is no address information required + for reaching the peer, i.e., for leased lines, + this object will be a zero length string." + ::= { dialCtlPeerCfgEntry 4 } + +dialCtlPeerCfgAnswerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Calling Party Number information element, as for example + passed in an ISDN SETUP message by a PBX or switch, + for incoming calls. + This address can be used to identify the peer. + If this address is either unknown or identical + to dialCtlPeerCfgOriginateAddress, this object will be + a zero length string." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 5 } + +dialCtlPeerCfgSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Subaddress at which the peer will be called. + If the subaddress is undefined for the given media or + unused, this is a zero length string." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 6 } + +dialCtlPeerCfgClosedUserGroup OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Closed User Group at which the peer will be called. + If the Closed User Group is undefined for the given media + or unused, this is a zero length string." + REFERENCE + "Q.931, chapter 4.6.1." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 7 } + +dialCtlPeerCfgSpeed OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired information transfer speed in bits/second + when calling this peer. + The detailed media specific information, e.g. information + type and information transfer rate for ISDN circuits, + has to be extracted from this object. + If the transfer speed to be used is unknown or the default + speed for this type of interfaces, the value of this object + may be zero." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 8 } + +dialCtlPeerCfgInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Information Transfer Capability to be used when + calling this peer. + + speech(2) refers to a non-data connection, whereas + audio31(6) and audio7(7) refer to data mode + connections." + DEFVAL { other } + ::= { dialCtlPeerCfgEntry 9 } + +dialCtlPeerCfgPermission OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + both(3), -- both originate & answer + callback(4), + none(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable permissions. callback(4) either rejects the + call and then calls back, or uses the 'Reverse charging' + information element if it is available. + Note that callback(4) is supposed to control charging, not + security, and applies to callback prior to accepting a + call. Callback for security reasons can be handled using + PPP callback." + DEFVAL { both } + ::= { dialCtlPeerCfgEntry 10 } + +dialCtlPeerCfgInactivityTimer OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection will be automatically disconnected + if no longer carrying useful data for a time + period, in seconds, specified in this object. + Useful data in this context refers to forwarding + packets, including routing information; it + excludes the encapsulator maintenance frames. + A value of zero means the connection will not be + automatically taken down due to inactivity, + which implies that it is a dedicated circuit." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 11 } + +dialCtlPeerCfgMinDuration OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum duration of a call in seconds, starting from the + time the call is connected until the call is disconnected. + This is to accomplish the fact that in most countries + charging applies to units of time, which should be matched + as closely as possible." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 12 } + +dialCtlPeerCfgMaxDuration OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum call duration in seconds. Zero means 'unlimited'." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 13 } + +dialCtlPeerCfgCarrierDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The call timeout time in seconds. The default value + of zero means that the call timeout as specified for + the media in question will apply." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 14 } + +dialCtlPeerCfgCallRetries OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of calls to a non-responding address + that may be made. A retry count of zero means + there is no bound. The intent is to bound + the number of successive calls to an address + which is inaccessible, or which refuses those calls. + + Some countries regulate the number of call retries + to a given peer that can be made." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 15 } + +dialCtlPeerCfgRetryDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds between call retries if a peer + cannot be reached. + A value of zero means that call retries may be done + without any delay." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 16 } + +dialCtlPeerCfgFailureDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds after which call attempts are + to be placed again after a peer has been noticed + to be unreachable, i.e. after dialCtlPeerCfgCallRetries + unsuccessful call attempts. + A value of zero means that a peer will not be called + again after dialCtlPeerCfgCallRetries unsuccessful call + attempts." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 17 } + +dialCtlPeerCfgTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + this peer." + DEFVAL { disabled } + ::= { dialCtlPeerCfgEntry 18 } + +dialCtlPeerCfgStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Status of one row in this table." + ::= { dialCtlPeerCfgEntry 19 } + +-- Peer statistics table + +dialCtlPeerStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DialCtlPeerStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for each peer entry. + There will be one entry in this table for each entry + in the dialCtlPeerCfgTable." + ::= { dialCtlPeer 2 } + +dialCtlPeerStatsEntry OBJECT-TYPE + SYNTAX DialCtlPeerStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for a single Peer. This entry + is effectively permanent, and contains information + describing the last call attempt as well as supplying + statistical information." + AUGMENTS { dialCtlPeerCfgEntry } + ::= { dialCtlPeerStatsTable 1 } + +DialCtlPeerStatsEntry ::= + SEQUENCE { + dialCtlPeerStatsConnectTime AbsoluteCounter32, + dialCtlPeerStatsChargedUnits AbsoluteCounter32, + dialCtlPeerStatsSuccessCalls AbsoluteCounter32, + dialCtlPeerStatsFailCalls AbsoluteCounter32, + dialCtlPeerStatsAcceptCalls AbsoluteCounter32, + dialCtlPeerStatsRefuseCalls AbsoluteCounter32, + dialCtlPeerStatsLastDisconnectCause OCTET STRING, + dialCtlPeerStatsLastDisconnectText DisplayString, + dialCtlPeerStatsLastSetupTime TimeStamp + } + +dialCtlPeerStatsConnectTime OBJECT-TYPE + SYNTAX AbsoluteCounter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Accumulated connect time to the peer since system startup. + This is the total connect time, i.e. the connect time + for outgoing calls plus the time for incoming calls." + ::= { dialCtlPeerStatsEntry 1 } + +dialCtlPeerStatsChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of charging units applying to this + peer since system startup. + Only the charging units applying to the local interface, + i.e. for originated calls or for calls with 'Reverse + charging' being active, will be counted here." + ::= { dialCtlPeerStatsEntry 2 } + +dialCtlPeerStatsSuccessCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of completed calls to this peer." + ::= { dialCtlPeerStatsEntry 3 } + +dialCtlPeerStatsFailCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of failed call attempts to this peer since system + startup." + ::= { dialCtlPeerStatsEntry 4 } + +dialCtlPeerStatsAcceptCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from this peer accepted since system + startup." + ::= { dialCtlPeerStatsEntry 5 } + +dialCtlPeerStatsRefuseCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from this peer refused since system + startup." + ::= { dialCtlPeerStatsEntry 6 } + +dialCtlPeerStatsLastDisconnectCause OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encoded network cause value associated with the last + call. + This object will be updated whenever a call is started + or cleared. + The value of this object will depend on the interface type + as well as on the protocol and protocol version being + used on this interface. Some references for possible cause + values are given below." + REFERENCE + "- Bellcore SR-NWT-001953, Generic Guidelines for + ISDN Terminal Equipment On Basic Access Interfaces, + chapter 5.2.5.8. + - Bellcore SR-NWT-002343, ISDN Primary Rate Interface + Generic Guidelines for Customer Premises Equipment, + chapter 8.2.5.8. + - ITU-T Q.931, Appendix I. + - ITU-T X.25, CAUSE and DIAGNOSTIC field values. + - German Telekom FTZ 1TR6, chapter 3.2.3.4.4.4." + ::= { dialCtlPeerStatsEntry 7 } + +dialCtlPeerStatsLastDisconnectText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ASCII text describing the reason for the last call + termination. + This object exists because it would be impossible for + a management station to store all possible cause values + for all types of interfaces. It should be used only if + a management station is unable to decode the value of + dialCtlPeerStatsLastDisconnectCause. + + This object will be updated whenever a call is started + or cleared." + ::= { dialCtlPeerStatsEntry 8 } + +dialCtlPeerStatsLastSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last call to this peer + was started. + For ISDN media, this will be the time when the setup + message was received from or sent to the network. + This object will be updated whenever a call is started + or cleared." + ::= { dialCtlPeerStatsEntry 9 } + +-- +-- the active call group +-- + +callActive OBJECT IDENTIFIER ::= { dialControlMibObjects 3 } + +-- callActiveTable +-- Table to store active call information. +-- These calls could be circuit switched or they could +-- be virtual circuits. +-- An entry will be created when a call is started and deleted +-- when a call is cleared. + +callActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF CallActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about active + calls to a specific destination." + ::= { callActive 1 } + +callActiveEntry OBJECT-TYPE + SYNTAX CallActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single active Connection. + An entry in this table will be created when a call is + started. An entry in this table will be deleted when + an active call clears." + INDEX { callActiveSetupTime, callActiveIndex } + ::= { callActiveTable 1 } + + +CallActiveEntry ::= + SEQUENCE { + callActiveSetupTime TimeStamp, + callActiveIndex INTEGER, + callActivePeerAddress DisplayString, + callActivePeerSubAddress DisplayString, + callActivePeerId INTEGER, + callActivePeerIfIndex INTEGER, + callActiveLogicalIfIndex InterfaceIndexOrZero, + callActiveConnectTime TimeStamp, + callActiveCallState INTEGER, + callActiveCallOrigin INTEGER, + callActiveChargedUnits AbsoluteCounter32, + callActiveInfoType INTEGER, + callActiveTransmitPackets AbsoluteCounter32, + callActiveTransmitBytes AbsoluteCounter32, + callActiveReceivePackets AbsoluteCounter32, + callActiveReceiveBytes AbsoluteCounter32 + } + +callActiveSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of sysUpTime when the call associated to this + entry was started. This will be useful for an NMS to + retrieve all calls after a specific time. Also, this object + can be useful in finding large delays between the time the + call was started and the time the call was connected. + For ISDN media, this will be the time when the setup + message was received from or sent to the network." + ::= { callActiveEntry 1 } + +callActiveIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Small index variable to distinguish calls that start in + the same hundredth of a second." + ::= { callActiveEntry 2 } + +callActivePeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number this call is connected to. If the number is + not available, then it will have a length of zero." + ::= { callActiveEntry 3 } + +callActivePeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subaddress this call is connected to. If the subaddress + is undefined or not available, this will be a zero length + string." + ::= { callActiveEntry 4 } + +callActivePeerId OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the Id value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist or is unknown, the value + of this object will be zero." + ::= { callActiveEntry 5 } + +callActivePeerIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist or is unknown, the value + of this object will be zero." + ::= { callActiveEntry 6 } + +callActiveLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the logical interface through + which this call was made. For ISDN media, this would be + the ifIndex of the B channel which was used for this call. + If the ifIndex value is unknown, the value of this object + will be zero." + ::= { callActiveEntry 7 } + +callActiveConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was connected. + If the call is not connected, this object will have a + value of zero." + ::= { callActiveEntry 8 } + +callActiveCallState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + connecting(2), + connected(3), + active(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current call state. + unknown(1) - The call state is unknown. + connecting(2) - A connection attempt (outgoing call) + is being made. + connected(3) - An incoming call is in the process + of validation. + active(4) - The call is active. + " + ::= { callActiveEntry 9 } + +callActiveCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + callback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin." + ::= { callActiveEntry 10 } + +callActiveChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for this connection. + For incoming calls or if charging information is + not supplied by the switch, the value of this object + will be zero." + ::= { callActiveEntry 11 } + +callActiveInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- e.g. for non-isdn media + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information type for this call." + ::= { callActiveEntry 12 } + +callActiveTransmitPackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were transmitted for this + call." + ::= { callActiveEntry 13 } + +callActiveTransmitBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were transmitted for this + call." + ::= { callActiveEntry 14 } + +callActiveReceivePackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were received for this + call." + ::= { callActiveEntry 15 } + +callActiveReceiveBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were received for this call." + ::= { callActiveEntry 16 } + +-- +-- the call history group +-- + +callHistory OBJECT IDENTIFIER ::= { dialControlMibObjects 4 } + +callHistoryTableMaxLength OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit on the number of entries that the + callHistoryTable may contain. A value of 0 + will prevent any history from being retained. When + this table is full, the oldest entry will be deleted + and the new one will be created." + ::= { callHistory 1 } + +callHistoryRetainTimer OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum amount of time that an callHistoryEntry + will be maintained before being deleted. A value of + 0 will prevent any history from being retained in the + callHistoryTable, but will neither prevent callCompletion + traps being generated nor affect other tables." + ::= { callHistory 2 } + +-- callHistoryTable +-- Table to store the past call information. The Destination number +-- and the call connect and disconnect time, the disconnection cause +-- are stored. These calls could be circuit switched or they could +-- be virtual circuits. History of each and every call is stored, +-- of successful calls as well as of unsuccessful and rejected calls. +-- An entry will be created when a call is cleared. + +callHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF CallHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about specific + calls to a specific destination." + ::= { callHistory 3 } + +callHistoryEntry OBJECT-TYPE + SYNTAX CallHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single Connection." + INDEX { callActiveSetupTime, callActiveIndex } + ::= { callHistoryTable 1 } + + +CallHistoryEntry ::= + SEQUENCE { + callHistoryPeerAddress DisplayString, + callHistoryPeerSubAddress DisplayString, + callHistoryPeerId INTEGER, + callHistoryPeerIfIndex INTEGER, + callHistoryLogicalIfIndex InterfaceIndex, + callHistoryDisconnectCause OCTET STRING, + callHistoryDisconnectText DisplayString, + callHistoryConnectTime TimeStamp, + callHistoryDisconnectTime TimeStamp, + callHistoryCallOrigin INTEGER, + callHistoryChargedUnits AbsoluteCounter32, + callHistoryInfoType INTEGER, + callHistoryTransmitPackets AbsoluteCounter32, + callHistoryTransmitBytes AbsoluteCounter32, + callHistoryReceivePackets AbsoluteCounter32, + callHistoryReceiveBytes AbsoluteCounter32 + } + +callHistoryPeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number this call was connected to. If the number is + not available, then it will have a length of zero." + ::= { callHistoryEntry 1 } + +callHistoryPeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subaddress this call was connected to. If the subaddress + is undefined or not available, this will be a zero length + string." + ::= { callHistoryEntry 2 } + +callHistoryPeerId OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the Id value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist, the value of this object + will be zero." + ::= { callHistoryEntry 3 } + +callHistoryPeerIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist, the value of this object + will be zero." + ::= { callHistoryEntry 4 } + +callHistoryLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the logical interface through + which this call was made. For ISDN media, this would be + the ifIndex of the B channel which was used for this call." + ::= { callHistoryEntry 5 } + +callHistoryDisconnectCause OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encoded network cause value associated with this call. + + The value of this object will depend on the interface type + as well as on the protocol and protocol version being + used on this interface. Some references for possible cause + values are given below." + REFERENCE + "- Bellcore SR-NWT-001953, Generic Guidelines for + ISDN Terminal Equipment On Basic Access Interfaces, + chapter 5.2.5.8. + - Bellcore SR-NWT-002343, ISDN Primary Rate Interface + Generic Guidelines for Customer Premises Equipment, + chapter 8.2.5.8. + - ITU-T Q.931, Appendix I. + - ITU-T X.25, CAUSE and DIAGNOSTIC field values. + - German Telekom FTZ 1TR6, chapter 3.2.3.4.4.4." + ::= { callHistoryEntry 6 } + +callHistoryDisconnectText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ASCII text describing the reason for call termination. + + This object exists because it would be impossible for + a management station to store all possible cause values + for all types of interfaces. It should be used only if + a management station is unable to decode the value of + dialCtlPeerStatsLastDisconnectCause." + ::= { callHistoryEntry 7 } + +callHistoryConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was connected." + ::= { callHistoryEntry 8 } + +callHistoryDisconnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was disconnected." + ::= { callHistoryEntry 9 } + +callHistoryCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + callback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin." + ::= { callHistoryEntry 10 } + +callHistoryChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for this connection. + For incoming calls or if charging information is + not supplied by the switch, the value of this object + will be zero." + ::= { callHistoryEntry 11 } + +callHistoryInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- e.g. for non-isdn media + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information type for this call." + ::= { callHistoryEntry 12 } + +callHistoryTransmitPackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were transmitted while this + call was active." + ::= { callHistoryEntry 13 } + +callHistoryTransmitBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were transmitted while this + call was active." + ::= { callHistoryEntry 14 } + +callHistoryReceivePackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were received while this + call was active." + ::= { callHistoryEntry 15 } + +callHistoryReceiveBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were received while this + call was active." + ::= { callHistoryEntry 16 } + +-- Traps related to Connection management + +dialControlMibTrapPrefix OBJECT IDENTIFIER ::= { dialControlMib 2 } +dialControlMibTraps OBJECT IDENTIFIER ::= { dialControlMibTrapPrefix 0 } + +dialCtlPeerCallInformation NOTIFICATION-TYPE + OBJECTS { + callHistoryPeerId, + callHistoryPeerIfIndex, + callHistoryLogicalIfIndex, + ifOperStatus, + callHistoryPeerAddress, + callHistoryPeerSubAddress, + callHistoryDisconnectCause, + callHistoryConnectTime, + callHistoryDisconnectTime, + callHistoryInfoType, + callHistoryCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + a successful call clears, or a failed call attempt + is determined to have ultimately failed. In the + event that call retry is active, then this is after + all retry attempts have failed. However, only one such + trap is sent in between successful call attempts; + subsequent call attempts result in no trap. + ifOperStatus will return the operational status of the + virtual interface associated with the peer to whom + this call was made to." + ::= { dialControlMibTraps 1 } + +dialCtlPeerCallSetup NOTIFICATION-TYPE + OBJECTS { + callActivePeerId, + callActivePeerIfIndex, + callActiveLogicalIfIndex, + ifOperStatus, + callActivePeerAddress, + callActivePeerSubAddress, + callActiveInfoType, + callActiveCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + a call setup message is received or sent. + ifOperStatus will return the operational status of the + virtual interface associated with the peer to whom + this call was made to." + ::= { dialControlMibTraps 2 } + +-- conformance information +dialControlMibConformance OBJECT IDENTIFIER ::= + { dialControlMib 3 } +dialControlMibCompliances OBJECT IDENTIFIER ::= + { dialControlMibConformance 1 } +dialControlMibGroups OBJECT IDENTIFIER ::= + { dialControlMibConformance 2 } + +-- compliance statements + +dialControlMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which + implement the DIAL CONTROL MIB" + MODULE -- this module + MANDATORY-GROUPS + { dialControlGroup, callActiveGroup, callHistoryGroup, + callNotificationsGroup } + ::= { dialControlMibCompliances 1 } + +-- units of conformance + +dialControlGroup OBJECT-GROUP + OBJECTS { + dialCtlAcceptMode, + dialCtlTrapEnable, + dialCtlPeerCfgIfType, + dialCtlPeerCfgLowerIf, + dialCtlPeerCfgOriginateAddress, + dialCtlPeerCfgAnswerAddress, + dialCtlPeerCfgSubAddress, + dialCtlPeerCfgClosedUserGroup, + dialCtlPeerCfgSpeed, + dialCtlPeerCfgInfoType, + dialCtlPeerCfgPermission, + dialCtlPeerCfgInactivityTimer, + dialCtlPeerCfgMinDuration, + dialCtlPeerCfgMaxDuration, + dialCtlPeerCfgCarrierDelay, + dialCtlPeerCfgCallRetries, + dialCtlPeerCfgRetryDelay, + dialCtlPeerCfgFailureDelay, + dialCtlPeerCfgTrapEnable, + dialCtlPeerCfgStatus, + dialCtlPeerStatsConnectTime, + dialCtlPeerStatsChargedUnits, + dialCtlPeerStatsSuccessCalls, + dialCtlPeerStatsFailCalls, + dialCtlPeerStatsAcceptCalls, + dialCtlPeerStatsRefuseCalls, + dialCtlPeerStatsLastDisconnectCause, + dialCtlPeerStatsLastDisconnectText, + dialCtlPeerStatsLastSetupTime + } + STATUS current + DESCRIPTION + "A collection of objects providing the DIAL CONTROL + capability." + ::= { dialControlMibGroups 1 } + +callActiveGroup OBJECT-GROUP + OBJECTS { + callActivePeerAddress, + callActivePeerSubAddress, + callActivePeerId, + callActivePeerIfIndex, + callActiveLogicalIfIndex, + callActiveConnectTime, + callActiveCallState, + callActiveCallOrigin, + callActiveChargedUnits, + callActiveInfoType, + callActiveTransmitPackets, + callActiveTransmitBytes, + callActiveReceivePackets, + callActiveReceiveBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing the active call + capability." + ::= { dialControlMibGroups 2 } + +callHistoryGroup OBJECT-GROUP + OBJECTS { + callHistoryTableMaxLength, + callHistoryRetainTimer, + callHistoryPeerAddress, + callHistoryPeerSubAddress, + callHistoryPeerId, + callHistoryPeerIfIndex, + callHistoryLogicalIfIndex, + callHistoryDisconnectCause, + callHistoryDisconnectText, + callHistoryConnectTime, + callHistoryDisconnectTime, + callHistoryCallOrigin, + callHistoryChargedUnits, + callHistoryInfoType, + callHistoryTransmitPackets, + callHistoryTransmitBytes, + callHistoryReceivePackets, + callHistoryReceiveBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing the Call History + capability." + ::= { dialControlMibGroups 3 } + +callNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { dialCtlPeerCallInformation, dialCtlPeerCallSetup } + STATUS current + DESCRIPTION + "The notifications which a Dial Control MIB entity is + required to implement." + ::= { dialControlMibGroups 4 } + + +END diff --git a/mibs/ietf/DIFFSERV-CONFIG-MIB b/mibs/ietf/DIFFSERV-CONFIG-MIB new file mode 100644 index 0000000..b6b2167 --- /dev/null +++ b/mibs/ietf/DIFFSERV-CONFIG-MIB @@ -0,0 +1,258 @@ +DIFFSERV-CONFIG-MIB DEFINITIONS ::= BEGIN + IMPORTS + + OBJECT-TYPE, MODULE-IDENTITY, + zeroDotZero, mib-2 FROM SNMPv2-SMI -- [RFC2578] + + RowStatus, StorageType, + RowPointer, DateAndTime FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + + + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +diffServConfigMib MODULE-IDENTITY + LAST-UPDATED "200401220000Z" -- 22 January 2004 + ORGANIZATION "SNMPCONF WG" + CONTACT-INFO + "SNMPCONF Working Group + http://www.ietf.org/html.charters/snmpconf-charter.html + WG mailing list: snmpconf@snmp.com + + Editors: + Harrie Hazewinkel + I.Net + via Darwin 85 + 20019 - Settimo Milanese (MI) + Italy + EMail: harrie@inet.it + + David Partain + Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + E-mail: David.Partain@ericsson.com" + DESCRIPTION + "This MIB module contains differentiated services + specific managed objects to perform higher-level + configuration management. This MIB allows policies + to use 'templates' to instantiate Differentiated + Services functional datapath configurations to + be assigned (associated with an interface and + direction) when a policy is activated. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3747; see the RFC + itself for full legal notices." + REVISION "200401220000Z" -- 22 January 2004 + DESCRIPTION + "Initial version published as RFC 3747" + ::= { mib-2 108 } + +diffServConfigMIBObjects OBJECT IDENTIFIER ::= { diffServConfigMib 1 } +diffServConfigMIBConformance OBJECT IDENTIFIER ::= + { diffServConfigMib 2 } + +-- +-- The Differentiated Services configuration objects +-- + + + +diffServConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which defines the various per-hop-behaviors + for which the system has default 'templates'." + ::= { diffServConfigMIBObjects 2 } + +diffServConfigEntry OBJECT-TYPE + SYNTAX DiffServConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry defining a per-hop-behavior. Each entry in + this table combines the various parameters (entries) + into a specific per-hop-behavior. Entries in this + table might be defined by a vendor (pre-configured) + or defined by a management application." + INDEX { diffServConfigId } + ::= { diffServConfigTable 1 } + +DiffServConfigEntry ::= SEQUENCE { + diffServConfigId SnmpAdminString, + diffServConfigDescr SnmpAdminString, + diffServConfigOwner SnmpAdminString, + diffServConfigLastChange DateAndTime, + diffServConfigStart RowPointer, + diffServConfigStorage StorageType, + diffServConfigStatus RowStatus +} + +diffServConfigId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..116)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique id for the per-hop-behavior policy for at + least the SNMP agent. For ease of administration the + value may be unique within an administrative domain, + but this is not required. + + The range of up to 116 octets is chosen to stay within + the SMI limit of 128 sub-identifiers in an object + identifier." + ::= { diffServConfigEntry 1 } + +diffServConfigDescr OBJECT-TYPE + + + + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A human-readable description to identify this defined + per-hop-behavior. Note that this is an SnmpAdminString, + which permits UTF-8 strings. An administratively assigned + identifier for a template that would be unique within + an administrative domain. It is up to the management + applications to agree how these are assigned within the + administrative domain. Once a description, such as + 'EF' is assigned, that has a certain set of parameters + that achieve 'EF' from box to box. Management + application code or script code can then scan + the table to find the proper template and then + assign it." + ::= { diffServConfigEntry 2 } + +diffServConfigOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The owner who created this entry." + ::= { diffServConfigEntry 3 } + +diffServConfigLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this entry was last changed." + ::= { diffServConfigEntry 4 } + +diffServConfigStart OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The pointer to a functional datapath configuration template as + set up in the DIFFSERV-MIB. This RowPointer should + point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + + + + A value of zeroDotZero in this attribute indicates no + further Diffserv treatment is performed on traffic of + this functional datapath. This also means that the + template described by this row is not defined. + + If the row pointed to does not exist, the treatment + is as if this attribute contains a value of zeroDotZero." + REFERENCE + "Differentiated Services MIB module" + DEFVAL { zeroDotZero } + ::= { diffServConfigEntry 5 } + +diffServConfigStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of storage used for this row. + + Since an entry in this table serves as a starting + point for a configuration, it is recommended that + all entries comprising the configuration started by + diffServConfigStart follow the storage type of this + entry. Otherwise, after agent reboots a configuration + may differ. It may very well be that the agent is + not capable of detecting such changes and therefore, + the management application should verify the correct + configuration after a reboot. Rows with a StorageType + of 'permanent' do not need to allow write access to + any of the columnar objects in that row." + DEFVAL { nonVolatile } + ::= { diffServConfigEntry 6 } + +diffServConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "RowStatus object used for creation and deletion of + rows in this table. All writable objects in this row + may be modified at any time." + DEFVAL { notInService } + ::= { diffServConfigEntry 7 } + +-- +-- MIB Compliance statements. +-- + + + + +diffServConfigMIBCompliances + OBJECT IDENTIFIER ::= { diffServConfigMIBConformance 1 } +diffServConfigMIBGroups + OBJECT IDENTIFIER ::= { diffServConfigMIBConformance 2 } + +diffServConfigMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance for this MIB module. + + For this compliance level the 'diffServMIBFullCompliance' + must be met, since this MIB module depends on it in order + to provide the configuration entries. + " + MODULE -- This module + MANDATORY-GROUPS { diffServConfigMIBConfigGroup } + + OBJECT diffServConfigStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { diffServConfigMIBCompliances 1 } + +diffServConfigMIBConfigGroup OBJECT-GROUP + OBJECTS { diffServConfigDescr, + diffServConfigOwner, + diffServConfigLastChange, + diffServConfigStart, + diffServConfigStorage, + diffServConfigStatus + } + STATUS current + DESCRIPTION + "The per-hop-behavior Group defines the MIB objects that + describe the configuration template for the per-hop-behavior." + ::= { diffServConfigMIBGroups 1 } +END diff --git a/mibs/ietf/DIFFSERV-DSCP-TC b/mibs/ietf/DIFFSERV-DSCP-TC new file mode 100644 index 0000000..041014a --- /dev/null +++ b/mibs/ietf/DIFFSERV-DSCP-TC @@ -0,0 +1,68 @@ +DIFFSERV-DSCP-TC DEFINITIONS ::= BEGIN + + IMPORTS + Integer32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + + +diffServDSCPTC MODULE-IDENTITY + LAST-UPDATED "200205090000Z" + ORGANIZATION "IETF Differentiated Services WG" + CONTACT-INFO + " Fred Baker + Cisco Systems + 1121 Via Del Rey + Santa Barbara, CA 93117, USA + E-mail: fred@cisco.com + + Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821, USA + E-mail: khchan@nortelnetworks.com + + Andrew Smith + Harbour Networks + Jiuling Building + 21 North Xisanhuan Ave. + Beijing, 100089, PRC + E-mail: ah_smith@acm.org + + Differentiated Services Working Group: + diffserv@ietf.org" + DESCRIPTION + "The Textual Conventions defined in this module should be used + whenever a Differentiated Services Code Point is used in a MIB." + REVISION "200205090000Z" + DESCRIPTION + "Initial version, published as RFC 3289." + ::= { mib-2 96 } + +Dscp ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Differentiated Services Code-Point that may be used for + marking a traffic stream." + REFERENCE + "RFC 2474, RFC 2780" + SYNTAX Integer32 (0..63) + +DscpOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The IP header Differentiated Services Code-Point that may be + + + + used for discriminating among traffic streams. The value -1 is + used to indicate a wild card i.e. any value." + REFERENCE + "RFC 2474, RFC 2780" + SYNTAX Integer32 (-1 | 0..63) + +END diff --git a/mibs/ietf/DIFFSERV-MIB b/mibs/ietf/DIFFSERV-MIB new file mode 100644 index 0000000..fabbe5f --- /dev/null +++ b/mibs/ietf/DIFFSERV-MIB @@ -0,0 +1,3704 @@ +DIFFSERV-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Counter64, MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, zeroDotZero, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, RowPointer, + StorageType, AutonomousType + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex, InterfaceIndexOrZero + FROM IF-MIB + InetAddressType, InetAddress, InetAddressPrefixLength, + InetPortNumber + FROM INET-ADDRESS-MIB + BurstSize + FROM INTEGRATED-SERVICES-MIB + Dscp, DscpOrAny + FROM DIFFSERV-DSCP-TC; + +diffServMib MODULE-IDENTITY + LAST-UPDATED "200202070000Z" + ORGANIZATION "IETF Differentiated Services WG" + CONTACT-INFO + " Fred Baker + Cisco Systems + 1121 Via Del Rey + Santa Barbara, CA 93117, USA + E-mail: fred@cisco.com + + Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821, USA + E-mail: khchan@nortelnetworks.com + + Andrew Smith + Harbour Networks + Jiuling Building + + + 21 North Xisanhuan Ave. + Beijing, 100089, PRC + E-mail: ah_smith@acm.org + + Differentiated Services Working Group: + diffserv@ietf.org" + DESCRIPTION + "This MIB defines the objects necessary to manage a device that + uses the Differentiated Services Architecture described in RFC + 2475. The Conceptual Model of a Differentiated Services Router + provides supporting information on how such a router is modeled." + REVISION "200202070000Z" + DESCRIPTION + "Initial version, published as RFC 3289." + ::= { mib-2 97 } + +diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } +diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } +diffServMIBAdmin OBJECT IDENTIFIER ::= { diffServMib 3 } + +IndexInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An integer which may be used as a table index." + SYNTAX Unsigned32 (1..4294967295) + +IndexIntegerNextFree ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An integer which may be used as a new Index in a table. + + The special value of 0 indicates that no more new entries can be + created in the relevant table. + + When a MIB is used for configuration, an object with this SYNTAX + always contains a legal value (if non-zero) for an index that is + not currently used in the relevant table. The Command Generator + (Network Management Application) reads this variable and uses the + (non-zero) value read when creating a new row with an SNMP SET. + When the SET is performed, the Command Responder (agent) must + determine whether the value is indeed still unused; Two Network + Management Applications may attempt to create a row + (configuration entry) simultaneously and use the same value. If + it is currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, according to + an implementation-specific algorithm. If the value is in use, + + + + however, the SET fails. The Network Management Application must + then re-read this variable to obtain a new usable value. + + An OBJECT-TYPE definition using this SYNTAX MUST specify the + relevant table for which the object is providing this + functionality." + SYNTAX Unsigned32 (0..4294967295) + +IfDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "IfDirection specifies a direction of data travel on an + interface. 'inbound' traffic is operated on during reception from + the interface, while 'outbound' traffic is operated on prior to + transmission on the interface." + SYNTAX INTEGER { + inbound(1), -- ingress interface + outbound(2) -- egress interface +} + +-- +-- Data Path +-- + +diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } + +-- +-- Data Path Table +-- +-- The Data Path Table enumerates the Differentiated Services +-- Functional Data Paths within this device. Each entry in this table +-- is indexed by ifIndex and ifDirection. Each entry provides the +-- first Differentiated Services Functional Data Path Element to +-- process data flowing along specific data path. This table should +-- have at most two entries for each interface capable of +-- Differentiated Services processing on this device: ingress and +-- egress. + +-- Note that Differentiated Services Functional Data Path Elements +-- linked together using their individual next pointers and anchored by +-- an entry of the diffServDataPathTable constitute a functional data +-- path. +-- + +diffServDataPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServDataPathEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The data path table contains RowPointers indicating the start of + the functional data path for each interface and traffic direction + in this device. These may merge, or be separated into parallel + data paths." + ::= { diffServDataPath 1 } + +diffServDataPathEntry OBJECT-TYPE + SYNTAX DiffServDataPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the data path table indicates the start of a single + Differentiated Services Functional Data Path in this device. + + These are associated with individual interfaces, logical or + physical, and therefore are instantiated by ifIndex. Therefore, + the interface index must have been assigned, according to the + procedures applicable to that, before it can be meaningfully + used. Generally, this means that the interface must exist. + + When diffServDataPathStorage is of type nonVolatile, however, + this may reflect the configuration for an interface whose ifIndex + has been assigned but for which the supporting implementation is + not currently present." + INDEX { ifIndex, diffServDataPathIfDirection } + ::= { diffServDataPathTable 1 } + +DiffServDataPathEntry ::= SEQUENCE { + diffServDataPathIfDirection IfDirection, + diffServDataPathStart RowPointer, + diffServDataPathStorage StorageType, + diffServDataPathStatus RowStatus +} + +diffServDataPathIfDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IfDirection specifies whether the reception or transmission path + for this interface is in view." + ::= { diffServDataPathEntry 1 } + +diffServDataPathStart OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This selects the first Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates that no + Differentiated Services treatment is performed on traffic of this + data path. A pointer with the value zeroDotZero normally + terminates a functional data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServDataPathEntry 2 } + +diffServDataPathStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServDataPathEntry 3 } + +diffServDataPathStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time." + ::= { diffServDataPathEntry 4 } + +-- +-- Classifiers +-- + +diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 } + +-- + + + +-- Classifier Table +-- +-- The Classifier Table allows multiple classifier elements, of same or +-- different types, to be used together. A classifier must completely +-- classify all packets presented to it. This means that all traffic +-- presented to a classifier must match at least one classifier element +-- within the classifier, with the classifier element parameters +-- specified by a filter. + +-- If there is ambiguity between classifier elements of different +-- classifier, classifier linkage order indicates their precedence; the +-- first classifier in the link is applied to the traffic first. + +-- Entries in the classifier element table serves as the anchor for +-- each classification pattern, defined in filter table entries. Each +-- classifier element table entry also specifies the subsequent +-- downstream Differentiated Services Functional Data Path Element when +-- the classification pattern is satisfied. Each entry in the +-- classifier element table describes one branch of the fan-out +-- characteristic of a classifier indicated in the Informal +-- Differentiated Services Model section 4.1. A classifier is composed +-- of one or more classifier elements. + +diffServClfrNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServClfrId, or a + zero to indicate that none exist." + ::= { diffServClassifier 1 } + +diffServClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates all the diffserv classifier functional + data path elements of this device. The actual classification + definitions are defined in diffServClfrElementTable entries + belonging to each classifier. + + An entry in this table, pointed to by a RowPointer specifying an + instance of diffServClfrStatus, is frequently used as the name + for a set of classifier elements, which all use the index + diffServClfrId. Per the semantics of the classifier element + table, these entries constitute one or more unordered sets of + tests which may be simultaneously applied to a message to + + + + classify it. + + The primary function of this table is to ensure that the value of + diffServClfrId is unique before attempting to use it in creating + a diffServClfrElementEntry. Therefore, the diffServClfrEntry must + be created on the same SET as the diffServClfrElementEntry, or + before the diffServClfrElementEntry is created." + ::= { diffServClassifier 2 } + +diffServClfrEntry OBJECT-TYPE + SYNTAX DiffServClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the classifier table describes a single classifier. + All classifier elements belonging to the same classifier use the + classifier's diffServClfrId as part of their index." + INDEX { diffServClfrId } + ::= { diffServClfrTable 1 } + +DiffServClfrEntry ::= SEQUENCE { + diffServClfrId IndexInteger, + diffServClfrStorage StorageType, + diffServClfrStatus RowStatus +} + +diffServClfrId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the classifier entries. Managers + should obtain new values for row creation in this table by + reading diffServClfrNextFree." + ::= { diffServClfrEntry 1 } + +diffServClfrStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServClfrEntry 2 } + +diffServClfrStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServClfrEntry 3 } + +-- +-- Classifier Element Table +-- +diffServClfrElementNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServClfrElementId, + or a zero to indicate that none exist." + ::= { diffServClassifier 3 } + +diffServClfrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServClfrElementEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The classifier element table enumerates the relationship between + classification patterns and subsequent downstream Differentiated + Services Functional Data Path elements. + diffServClfrElementSpecific points to a filter that specifies the + classification parameters. A classifier may use filter tables of + different types together. + + One example of a filter table defined in this MIB is + diffServMultiFieldClfrTable, for IP Multi-Field Classifiers + (MFCs). Such an entry might identify anything from a single + micro-flow (an identifiable sub-session packet stream directed + from one sending transport to the receiving transport or + transports), or aggregates of those such as the traffic from a + host, traffic for an application, or traffic between two hosts + using an application and a given DSCP. The standard Behavior + Aggregate used in the Differentiated Services Architecture is + encoded as a degenerate case of such an aggregate - the traffic + using a particular DSCP value. + + Filter tables for other filter types may be defined elsewhere." + + + + ::= { diffServClassifier 4 } + +diffServClfrElementEntry OBJECT-TYPE + SYNTAX DiffServClfrElementEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the classifier element table describes a single + element of the classifier." + INDEX { diffServClfrId, diffServClfrElementId } + ::= { diffServClfrElementTable 1 } + +DiffServClfrElementEntry ::= SEQUENCE { + diffServClfrElementId IndexInteger, + diffServClfrElementPrecedence Unsigned32, + diffServClfrElementNext RowPointer, + diffServClfrElementSpecific RowPointer, + diffServClfrElementStorage StorageType, + diffServClfrElementStatus RowStatus +} + +diffServClfrElementId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Classifier Element entries. + Managers obtain new values for row creation in this table by + reading diffServClfrElementNextFree." + ::= { diffServClfrElementEntry 1 } + +diffServClfrElementPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The relative order in which classifier elements are applied: + higher numbers represent classifier element with higher + precedence. Classifier elements with the same order must be + unambiguous i.e. they must define non-overlapping patterns, and + are considered to be applied simultaneously to the traffic + stream. Classifier elements with different order may overlap in + their filters: the classifier element with the highest order + that matches is taken. + + On a given interface, there must be a complete classifier in + place at all times in the ingress direction. This means one or + more filters must match any possible pattern. There is no such + + + + requirement in the egress direction." + ::= { diffServClfrElementEntry 2 } + +diffServClfrElementNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute provides one branch of the fan-out functionality + of a classifier described in the Informal Differentiated Services + Model section 4.1. + + This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + + ::= { diffServClfrElementEntry 3 } + +diffServClfrElementSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to a valid entry in another table, filter table, that + describes the applicable classification parameters, e.g. an entry + in diffServMultiFieldClfrTable. + + The value zeroDotZero is interpreted to match anything not + matched by another classifier element - only one such entry may + exist for each classifier. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + + + + becomes inactive by other means, the element is ignored." + ::= { diffServClfrElementEntry 4 } + +diffServClfrElementStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServClfrElementEntry 5 } + +diffServClfrElementStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServClfrElementEntry 6 } + +-- +-- IP Multi-field Classification Table +-- +-- Classification based on six different fields in the IP header. +-- Functional Data Paths may share definitions by using the same entry. +-- + +diffServMultiFieldClfrNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + diffServMultiFieldClfrId, or a zero to indicate that none exist." + ::= { diffServClassifier 5 } + +diffServMultiFieldClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMultiFieldClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of IP Multi-field Classifier filter entries that a + + + + system may use to identify IP traffic." + ::= { diffServClassifier 6 } + +diffServMultiFieldClfrEntry OBJECT-TYPE + SYNTAX DiffServMultiFieldClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An IP Multi-field Classifier entry describes a single filter." + INDEX { diffServMultiFieldClfrId } + ::= { diffServMultiFieldClfrTable 1 } + +DiffServMultiFieldClfrEntry ::= SEQUENCE { + diffServMultiFieldClfrId IndexInteger, + diffServMultiFieldClfrAddrType InetAddressType, + diffServMultiFieldClfrDstAddr InetAddress, + diffServMultiFieldClfrDstPrefixLength InetAddressPrefixLength, + diffServMultiFieldClfrSrcAddr InetAddress, + diffServMultiFieldClfrSrcPrefixLength InetAddressPrefixLength, + diffServMultiFieldClfrDscp DscpOrAny, + diffServMultiFieldClfrFlowId Unsigned32, + diffServMultiFieldClfrProtocol Unsigned32, + diffServMultiFieldClfrDstL4PortMin InetPortNumber, + diffServMultiFieldClfrDstL4PortMax InetPortNumber, + diffServMultiFieldClfrSrcL4PortMin InetPortNumber, + diffServMultiFieldClfrSrcL4PortMax InetPortNumber, + diffServMultiFieldClfrStorage StorageType, + diffServMultiFieldClfrStatus RowStatus +} + +diffServMultiFieldClfrId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the MultiField Classifier filter + entries. Managers obtain new values for row creation in this + table by reading diffServMultiFieldClfrNextFree." + + ::= { diffServMultiFieldClfrEntry 1 } + +diffServMultiFieldClfrAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of IP address used by this classifier entry. While + other types of addresses are defined in the InetAddressType + + + + textual convention, and DNS names, a classifier can only look at + packets on the wire. Therefore, this object is limited to IPv4 + and IPv6 addresses." + ::= { diffServMultiFieldClfrEntry 2 } + +diffServMultiFieldClfrDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address. This may not be a DNS name, but may be an IPv4 or IPv6 + prefix. diffServMultiFieldClfrDstPrefixLength indicates the + number of bits that are relevant." + ::= { diffServMultiFieldClfrEntry 3 } + +diffServMultiFieldClfrDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the CIDR Prefix carried in + diffServMultiFieldClfrDstAddr. In IPv4 addresses, a length of 0 + indicates a match of any address; a length of 32 indicates a + match of a single host address, and a length between 0 and 32 + indicates the use of a CIDR Prefix. IPv6 is similar, except that + prefix lengths range from 0..128." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 4 } + +diffServMultiFieldClfrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP address. + This may not be a DNS name, but may be an IPv4 or IPv6 prefix. + diffServMultiFieldClfrSrcPrefixLength indicates the number of + bits that are relevant." + ::= { diffServMultiFieldClfrEntry 5 } + +diffServMultiFieldClfrSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The length of the CIDR Prefix carried in + diffServMultiFieldClfrSrcAddr. In IPv4 addresses, a length of 0 + indicates a match of any address; a length of 32 indicates a + match of a single host address, and a length between 0 and 32 + indicates the use of a CIDR Prefix. IPv6 is similar, except that + prefix lengths range from 0..128." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 6 } + +diffServMultiFieldClfrDscp OBJECT-TYPE + SYNTAX DscpOrAny + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value that the DSCP in the packet must have to match this + entry. A value of -1 indicates that a specific DSCP value has not + been defined and thus all DSCP values are considered a match." + DEFVAL { -1 } + ::= { diffServMultiFieldClfrEntry 7 } + +diffServMultiFieldClfrFlowId OBJECT-TYPE + SYNTAX Unsigned32 (0..1048575) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The flow identifier in an IPv6 header." + ::= { diffServMultiFieldClfrEntry 8 } + +diffServMultiFieldClfrProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP protocol to match against the IPv4 protocol number or the + IPv6 Next- Header number in the packet. A value of 255 means + match all. Note the protocol number of 255 is reserved by IANA, + and Next-Header number of 0 is used in IPv6." + DEFVAL { 255 } + ::= { diffServMultiFieldClfrEntry 9 } + +diffServMultiFieldClfrDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum value that the layer-4 destination port number in + the packet must have in order to match this classifier entry." + DEFVAL { 0 } + + + + ::= { diffServMultiFieldClfrEntry 10 } + +diffServMultiFieldClfrDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum value that the layer-4 destination port number in + the packet must have in order to match this classifier entry. + This value must be equal to or greater than the value specified + for this entry in diffServMultiFieldClfrDstL4PortMin." + DEFVAL { 65535 } + ::= { diffServMultiFieldClfrEntry 11 } + +diffServMultiFieldClfrSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum value that the layer-4 source port number in the + packet must have in order to match this classifier entry." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 12 } + +diffServMultiFieldClfrSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum value that the layer-4 source port number in the + packet must have in order to match this classifier entry. This + value must be equal to or greater than the value specified for + this entry in diffServMultiFieldClfrSrcL4PortMin." + DEFVAL { 65535 } + ::= { diffServMultiFieldClfrEntry 13 } + +diffServMultiFieldClfrStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMultiFieldClfrEntry 14 } + +diffServMultiFieldClfrStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMultiFieldClfrEntry 15 } + +-- +-- Meters +-- + +diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 } + +-- +-- This MIB supports a variety of Meters. It includes a specific +-- definition for Token Bucket Meter, which are but one type of +-- specification. Other metering parameter sets can be defined in other +-- MIBs. + +-- Multiple meter elements may be logically cascaded using their +-- diffServMeterSucceedNext and diffServMeterFailNext pointers if +-- required. One example of this might be for an AF PHB implementation +-- that uses multiple level conformance meters. + +-- Cascading of individual meter elements in the MIB is intended to be +-- functionally equivalent to multiple level conformance determination +-- of a packet. The sequential nature of the representation is merely +-- a notational convenience for this MIB. + +-- srTCM meters (RFC 2697) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Information Rate and Committed Burst Size +-- token-bucket. The second set specifies the Excess Burst Size +-- token-bucket. + +-- trTCM meters (RFC 2698) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Information Rate and Committed Burst Size +-- token-bucket. The second set specifies the Peak Information Rate +-- and Peak Burst Size token-bucket. + +-- tswTCM meters (RFC 2859) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Target Rate token-bucket. The second set specifies + + + +-- the Peak Target Rate token-bucket. diffServTBParamInterval in each +-- token bucket reflects the Average Interval. +-- + +diffServMeterNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMeterId, or a + zero to indicate that none exist." + ::= { diffServMeter 1 } + +diffServMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMeterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates specific meters that a system may use to + police a stream of traffic. The traffic stream to be metered is + determined by the Differentiated Services Functional Data Path + Element(s) upstream of the meter i.e. by the object(s) that point + to each entry in this table. This may include all traffic on an + interface. + + Specific meter details are to be found in table entry referenced + by diffServMeterSpecific." + ::= { diffServMeter 2 } + +diffServMeterEntry OBJECT-TYPE + SYNTAX DiffServMeterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the meter table describes a single conformance level + of a meter." + INDEX { diffServMeterId } + ::= { diffServMeterTable 1 } + +DiffServMeterEntry ::= SEQUENCE { + diffServMeterId IndexInteger, + diffServMeterSucceedNext RowPointer, + diffServMeterFailNext RowPointer, + diffServMeterSpecific RowPointer, + diffServMeterStorage StorageType, + diffServMeterStatus RowStatus +} + + + + +diffServMeterId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Meter entries. Managers obtain new + values for row creation in this table by reading + diffServMeterNextFree." + ::= { diffServMeterEntry 1 } + +diffServMeterSucceedNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the traffic does conform, this selects the next + Differentiated Services Functional Data Path element to handle + traffic for this data path. This RowPointer should point to an + instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates that no + further Differentiated Services treatment is performed on traffic + of this data path. The use of zeroDotZero is the normal usage for + the last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServMeterEntry 2 } + +diffServMeterFailNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the traffic does not conform, this selects the next + Differentiated Services Functional Data Path element to handle + traffic for this data path. This RowPointer should point to an + instance of one of: + diffServClfrEntry + diffServMeterEntry + + + + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServMeterEntry 3 } + +diffServMeterSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates the behavior of the meter by pointing to an entry + containing detailed parameters. Note that entries in that + specific table must be managed explicitly. + + For example, diffServMeterSpecific may point to an entry in + diffServTBParamTable, which contains an instance of a single set + of Token Bucket parameters. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the meter always succeeds." + ::= { diffServMeterEntry 4 } + +diffServMeterStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMeterEntry 5 } + +diffServMeterStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMeterEntry 6 } + +-- +-- Token Bucket Parameter Table +-- + +diffServTBParam OBJECT IDENTIFIER ::= { diffServMIBObjects 4 } + +-- Each entry in the Token Bucket Parameter Table parameterize a single +-- token bucket. Multiple token buckets can be used together to +-- parameterize multiple levels of conformance. + +-- Note that an entry in the Token Bucket Parameter Table can be shared +-- by multiple diffServMeterTable entries. +-- + +diffServTBParamNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServTBParamId, or a + zero to indicate that none exist." + ::= { diffServTBParam 1 } + +diffServTBParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServTBParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates a single set of token bucket meter + parameters that a system may use to police a stream of traffic. + Such meters are modeled here as having a single rate and a single + burst size. Multiple entries are used when multiple rates/burst + sizes are needed." + ::= { diffServTBParam 2 } + +diffServTBParamEntry OBJECT-TYPE + SYNTAX DiffServTBParamEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry that describes a single set of token bucket + parameters." + INDEX { diffServTBParamId } + ::= { diffServTBParamTable 1 } + +DiffServTBParamEntry ::= SEQUENCE { + diffServTBParamId IndexInteger, + diffServTBParamType AutonomousType, + diffServTBParamRate Unsigned32, + diffServTBParamBurstSize BurstSize, + diffServTBParamInterval Unsigned32, + diffServTBParamStorage StorageType, + diffServTBParamStatus RowStatus +} + +diffServTBParamId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Token Bucket Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServTBParamNextFree." + ::= { diffServTBParamEntry 1 } + +diffServTBParamType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Metering algorithm associated with the Token Bucket + parameters. zeroDotZero indicates this is unknown. + + Standard values for generic algorithms: + diffServTBParamSimpleTokenBucket, diffServTBParamAvgRate, + diffServTBParamSrTCMBlind, diffServTBParamSrTCMAware, + diffServTBParamTrTCMBlind, diffServTBParamTrTCMAware, and + diffServTBParamTswTCM are specified in this MIB as OBJECT- + IDENTITYs; additional values may be further specified in other + MIBs." + ::= { diffServTBParamEntry 2 } + +diffServTBParamRate OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The token-bucket rate, in kilobits per second (kbps). This + attribute is used for: + 1. CIR in RFC 2697 for srTCM + 2. CIR and PIR in RFC 2698 for trTCM + 3. CTR and PTR in RFC 2859 for TSWTCM + 4. AverageRate in RFC 3290." + ::= { diffServTBParamEntry 3 } + +diffServTBParamBurstSize OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bytes in a single transmission burst. This + attribute is used for: + 1. CBS and EBS in RFC 2697 for srTCM + 2. CBS and PBS in RFC 2698 for trTCM + 3. Burst Size in RFC 3290." + ::= { diffServTBParamEntry 4 } + +diffServTBParamInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time interval used with the token bucket. For: + 1. Average Rate Meter, the Informal Differentiated Services Model + section 5.2.1, - Delta. + 2. Simple Token Bucket Meter, the Informal Differentiated + Services Model section 5.1, - time interval t. + 3. RFC 2859 TSWTCM, - AVG_INTERVAL. + 4. RFC 2697 srTCM, RFC 2698 trTCM, - token bucket update time + interval." + ::= { diffServTBParamEntry 5 } + +diffServTBParamStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServTBParamEntry 6 } + + + +diffServTBParamStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServTBParamEntry 7 } + +-- +-- OIDs for diffServTBParamType definitions. +-- + +diffServTBMeters OBJECT IDENTIFIER ::= { diffServMIBAdmin 1 } + +diffServTBParamSimpleTokenBucket OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Parameter Token Bucket Meter as described in the Informal + Differentiated Services Model section 5.2.3." + ::= { diffServTBMeters 1 } + +diffServTBParamAvgRate OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Average Rate Meter as described in the Informal Differentiated + Services Model section 5.2.1." + ::= { diffServTBMeters 2 } + +diffServTBParamSrTCMBlind OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Single Rate Three Color Marker Metering as defined by RFC 2697, + in the `Color Blind' mode as described by the RFC." + REFERENCE + "RFC 2697" + ::= { diffServTBMeters 3 } + +diffServTBParamSrTCMAware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Single Rate Three Color Marker Metering as defined by RFC 2697, + in the `Color Aware' mode as described by the RFC." + REFERENCE + "RFC 2697" + + + + ::= { diffServTBMeters 4 } + +diffServTBParamTrTCMBlind OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Rate Three Color Marker Metering as defined by RFC 2698, in + the `Color Blind' mode as described by the RFC." + REFERENCE + "RFC 2698" + ::= { diffServTBMeters 5 } + +diffServTBParamTrTCMAware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Rate Three Color Marker Metering as defined by RFC 2698, in + the `Color Aware' mode as described by the RFC." + REFERENCE + "RFC 2698" + ::= { diffServTBMeters 6 } + +diffServTBParamTswTCM OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Time Sliding Window Three Color Marker Metering as defined by + RFC 2859." + REFERENCE + "RFC 2859" + ::= { diffServTBMeters 7 } + +-- +-- Actions +-- + +diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 5 } + +-- +-- The Action Table allows enumeration of the different types of +-- actions to be applied to a traffic flow. +-- + +diffServActionNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServActionId, or a + zero to indicate that none exist." + ::= { diffServAction 1 } + + + +diffServActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Action Table enumerates actions that can be performed to a + stream of traffic. Multiple actions can be concatenated. For + example, traffic exiting from a meter may be counted, marked, and + potentially dropped before entering a queue. + + Specific actions are indicated by diffServActionSpecific which + points to an entry of a specific action type parameterizing the + action in detail." + ::= { diffServAction 2 } + +diffServActionEntry OBJECT-TYPE + SYNTAX DiffServActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the action table allows description of one + specific action to be applied to traffic." + INDEX { diffServActionId } + ::= { diffServActionTable 1 } + +DiffServActionEntry ::= SEQUENCE { + diffServActionId IndexInteger, + diffServActionInterface InterfaceIndexOrZero, + diffServActionNext RowPointer, + diffServActionSpecific RowPointer, + diffServActionStorage StorageType, + diffServActionStatus RowStatus +} + +diffServActionId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Action entries. Managers obtain + new values for row creation in this table by reading + diffServActionNextFree." + ::= { diffServActionEntry 1 } + +diffServActionInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The interface index (value of ifIndex) that this action occurs + on. This may be derived from the diffServDataPathStartEntry's + index by extension through the various RowPointers. However, as + this may be difficult for a network management station, it is + placed here as well. If this is indeterminate, the value is + zero. + + This is of especial relevance when reporting the counters which + may apply to traffic crossing an interface: + diffServCountActOctets, + diffServCountActPkts, + diffServAlgDropOctets, + diffServAlgDropPkts, + diffServAlgRandomDropOctets, and + diffServAlgRandomDropPkts. + + It is also especially relevant to the queue and scheduler which + may be subsequently applied." + ::= { diffServActionEntry 2 } + +diffServActionNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServActionEntry 3 } + +diffServActionSpecific OBJECT-TYPE + + + + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to an object instance providing additional information + for the type of action indicated by this action table entry. + + For the standard actions defined by this MIB module, this should + point to either a diffServDscpMarkActEntry or a + diffServCountActEntry. For other actions, it may point to an + object instance defined in some other MIB. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the Meter should be treated as + if it were not present. This may lead to incorrect policy + behavior." + ::= { diffServActionEntry 4 } + +diffServActionStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServActionEntry 5 } + +diffServActionStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServActionEntry 6 } + +-- DSCP Mark Action Table +-- +-- Rows of this table are pointed to by diffServActionSpecific to +-- provide detailed parameters specific to the DSCP Mark action. +-- +-- A single entry in this table can be shared by multiple + + + +-- diffServActionTable entries. +-- + +diffServDscpMarkActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServDscpMarkActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates specific DSCPs used for marking or + remarking the DSCP field of IP packets. The entries of this table + may be referenced by a diffServActionSpecific attribute." + ::= { diffServAction 3 } + +diffServDscpMarkActEntry OBJECT-TYPE + SYNTAX DiffServDscpMarkActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DSCP mark action table that describes a single + DSCP used for marking." + INDEX { diffServDscpMarkActDscp } + ::= { diffServDscpMarkActTable 1 } + +DiffServDscpMarkActEntry ::= SEQUENCE { + diffServDscpMarkActDscp Dscp +} + +diffServDscpMarkActDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DSCP that this Action will store into the DSCP field of the + subject. It is quite possible that the only packets subject to + this Action are already marked with this DSCP. Note also that + Differentiated Services processing may result in packet being + marked on both ingress to a network and on egress from it, and + that ingress and egress can occur in the same router." + ::= { diffServDscpMarkActEntry 1 } + +-- +-- Count Action Table +-- +-- Because the MIB structure allows multiple cascading +-- diffServActionEntry be used to describe multiple actions for a data +-- path, the counter became an optional action type. In normal +-- implementation, either a data path has counters or it does not, as +-- opposed to being configurable. The management entity may choose to + + + +-- read the counter or not. Hence it is recommended for implementation +-- that have counters to always configure the count action as the first +-- of multiple actions. +-- + +diffServCountActNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + diffServCountActId, or a zero to indicate that none exist." + ::= { diffServAction 4 } + +diffServCountActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServCountActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains counters for all the traffic passing through + an action element." + ::= { diffServAction 5 } + +diffServCountActEntry OBJECT-TYPE + SYNTAX DiffServCountActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the count action table describes a single set of + traffic counters." + INDEX { diffServCountActId } + ::= { diffServCountActTable 1 } + +DiffServCountActEntry ::= SEQUENCE { + diffServCountActId IndexInteger, + diffServCountActOctets Counter64, + diffServCountActPkts Counter64, + diffServCountActStorage StorageType, + diffServCountActStatus RowStatus +} + +diffServCountActId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Count Action entries. Managers + obtain new values for row creation in this table by reading + + + + diffServCountActNextFree." + ::= { diffServCountActEntry 1 } + +diffServCountActOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets at the Action data path element. + + 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 on the + relevant interface." + ::= { diffServCountActEntry 2 } + +diffServCountActPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets at the Action data path element. + + 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 on the + relevant interface." + ::= { diffServCountActEntry 3 } + +diffServCountActStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServCountActEntry 4 } + +diffServCountActStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + + + + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServCountActEntry 5 } + +-- +-- Algorithmic Drop Table +-- + +diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 6 } + +diffServAlgDropNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServAlgDropId, or a + zero to indicate that none exist." + ::= { diffServAlgDrop 1 } + +diffServAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServAlgDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The algorithmic drop table contains entries describing an + element that drops packets according to some algorithm." + ::= { diffServAlgDrop 2 } + +diffServAlgDropEntry OBJECT-TYPE + SYNTAX DiffServAlgDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describes a process that drops packets according to + some algorithm. Further details of the algorithm type are to be + found in diffServAlgDropType and with more detail parameter entry + pointed to by diffServAlgDropSpecific when necessary." + INDEX { diffServAlgDropId } + ::= { diffServAlgDropTable 1 } + +DiffServAlgDropEntry ::= SEQUENCE { + diffServAlgDropId IndexInteger, + diffServAlgDropType INTEGER, + diffServAlgDropNext RowPointer, + diffServAlgDropQMeasure RowPointer, + diffServAlgDropQThreshold Unsigned32, + diffServAlgDropSpecific RowPointer, + diffServAlgDropOctets Counter64, + + + + diffServAlgDropPkts Counter64, + diffServAlgRandomDropOctets Counter64, + diffServAlgRandomDropPkts Counter64, + diffServAlgDropStorage StorageType, + diffServAlgDropStatus RowStatus +} + +diffServAlgDropId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Algorithmic Dropper entries. + Managers obtain new values for row creation in this table by + reading diffServAlgDropNextFree." + ::= { diffServAlgDropEntry 1 } + +diffServAlgDropType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5) +} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of algorithm used by this dropper. The value other(1) + requires further specification in some other MIB module. + + In the tailDrop(2) algorithm, diffServAlgDropQThreshold + represents the maximum depth of the queue, pointed to by + diffServAlgDropQMeasure, beyond which all newly arriving packets + will be dropped. + + In the headDrop(3) algorithm, if a packet arrives when the + current depth of the queue, pointed to by + diffServAlgDropQMeasure, is at diffServAlgDropQThreshold, packets + currently at the head of the queue are dropped to make room for + the new packet to be enqueued at the tail of the queue. + + In the randomDrop(4) algorithm, on packet arrival, an Active + Queue Management algorithm is executed which may randomly drop a + packet. This algorithm may be proprietary, and it may drop either + the arriving packet or another packet in the queue. + diffServAlgDropSpecific points to a diffServRandomDropEntry that + describes the algorithm. For this algorithm, + + + + diffServAlgDropQThreshold is understood to be the absolute + maximum size of the queue and additional parameters are described + in diffServRandomDropTable. + + The alwaysDrop(5) algorithm is as its name specifies; always + drop. In this case, the other configuration values in this Entry + are not meaningful; There is no useful 'next' processing step, + there is no queue, and parameters describing the queue are not + useful. Therefore, diffServAlgDropNext, diffServAlgDropMeasure, + and diffServAlgDropSpecific are all zeroDotZero." + ::= { diffServAlgDropEntry 2 } + +diffServAlgDropNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + When diffServAlgDropType is alwaysDrop(5), this object is + ignored. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServAlgDropEntry 3 } + +diffServAlgDropQMeasure OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to an entry in the diffServQTable to indicate the queue + that a drop algorithm is to monitor when deciding whether to drop + a packet. If the row pointed to does not exist, the algorithmic + dropper element is considered inactive. + + + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServAlgDropEntry 4 } + +diffServAlgDropQThreshold OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold on the depth in bytes of the queue being measured at + which a trigger is generated to the dropping algorithm, unless + diffServAlgDropType is alwaysDrop(5) where this object is + ignored. + + For the tailDrop(2) or headDrop(3) algorithms, this represents + the depth of the queue, pointed to by diffServAlgDropQMeasure, at + which the drop action will take place. Other algorithms will need + to define their own semantics for this threshold." + ::= { diffServAlgDropEntry 5 } + +diffServAlgDropSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to a table entry that provides further detail regarding a + drop algorithm. + + Entries with diffServAlgDropType equal to other(1) may have this + point to a table defined in another MIB module. + + Entries with diffServAlgDropType equal to randomDrop(4) must have + this point to an entry in diffServRandomDropTable. + + For all other algorithms specified in this MIB, this should take + the value zeroDotZero. + + The diffServAlgDropType is authoritative for the type of the drop + algorithm and the specific parameters for the drop algorithm + needs to be evaluated based on the diffServAlgDropType. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + + + + ::= { diffServAlgDropEntry 6 } + +diffServAlgDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that have been deterministically dropped by + this drop process. + + 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 on the + relevant interface." + ::= { diffServAlgDropEntry 7 } + +diffServAlgDropPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that have been deterministically dropped + by this drop process. + + 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 on the + relevant interface." + ::= { diffServAlgDropEntry 8 } + +diffServAlgRandomDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that have been randomly dropped by this + drop process. This counter applies, therefore, only to random + droppers. + + 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 on the + relevant interface." + ::= { diffServAlgDropEntry 9 } + +diffServAlgRandomDropPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets that have been randomly dropped by this + drop process. This counter applies, therefore, only to random + droppers. + + 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 on the + relevant interface." + ::= { diffServAlgDropEntry 10 } + +diffServAlgDropStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServAlgDropEntry 11 } + +diffServAlgDropStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServAlgDropEntry 12 } + +-- +-- Random Drop Table +-- + +diffServRandomDropNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServRandomDropId, + or a zero to indicate that none exist." + ::= { diffServAlgDrop 3 } + + + + +diffServRandomDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServRandomDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The random drop table contains entries describing a process that + drops packets randomly. Entries in this table are pointed to by + diffServAlgDropSpecific." + ::= { diffServAlgDrop 4 } + +diffServRandomDropEntry OBJECT-TYPE + SYNTAX DiffServRandomDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describes a process that drops packets according to a + random algorithm." + INDEX { diffServRandomDropId } + ::= { diffServRandomDropTable 1 } + +DiffServRandomDropEntry ::= SEQUENCE { + diffServRandomDropId IndexInteger, + diffServRandomDropMinThreshBytes Unsigned32, + diffServRandomDropMinThreshPkts Unsigned32, + diffServRandomDropMaxThreshBytes Unsigned32, + diffServRandomDropMaxThreshPkts Unsigned32, + diffServRandomDropProbMax Unsigned32, + diffServRandomDropWeight Unsigned32, + diffServRandomDropSamplingRate Unsigned32, + diffServRandomDropStorage StorageType, + diffServRandomDropStatus RowStatus +} + +diffServRandomDropId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Random Drop entries. Managers + obtain new values for row creation in this table by reading + diffServRandomDropNextFree." + ::= { diffServRandomDropEntry 1 } + +diffServRandomDropMinThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The average queue depth in bytes, beyond which traffic has a + non-zero probability of being dropped. Changes in this variable + may or may not be reflected in the reported value of + diffServRandomDropMinThreshPkts." + ::= { diffServRandomDropEntry 2 } + +diffServRandomDropMinThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth in packets, beyond which traffic has a + non-zero probability of being dropped. Changes in this variable + may or may not be reflected in the reported value of + diffServRandomDropMinThreshBytes." + ::= { diffServRandomDropEntry 3 } + +diffServRandomDropMaxThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a probability + indicated by diffServRandomDropProbMax of being dropped or + marked. Note that this differs from the physical queue limit, + which is stored in diffServAlgDropQThreshold. Changes in this + variable may or may not be reflected in the reported value of + diffServRandomDropMaxThreshPkts." + ::= { diffServRandomDropEntry 4 } + +diffServRandomDropMaxThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a probability + indicated by diffServRandomDropProbMax of being dropped or + marked. Note that this differs from the physical queue limit, + which is stored in diffServAlgDropQThreshold. Changes in this + variable may or may not be reflected in the reported value of + diffServRandomDropMaxThreshBytes." + ::= { diffServRandomDropEntry 5 } + +diffServRandomDropProbMax OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..1000) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The worst case random drop probability, expressed in drops per + thousand packets. + + For example, if in the worst case every arriving packet may be + dropped (100%) for a period, this has the value 1000. + Alternatively, if in the worst case only one percent (1%) of + traffic may be dropped, it has the value 10." + ::= { diffServRandomDropEntry 6 } + +diffServRandomDropWeight OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The weighting of past history in affecting the Exponentially + Weighted Moving Average function that calculates the current + average queue depth. The equation uses + diffServRandomDropWeight/65536 as the coefficient for the new + sample in the equation, and (65536 - + diffServRandomDropWeight)/65536 as the coefficient of the old + value. + + Implementations may limit the values of diffServRandomDropWeight + to a subset of the possible range of values, such as powers of + two. Doing this would facilitate implementation of the + Exponentially Weighted Moving Average using shift instructions or + registers." + ::= { diffServRandomDropEntry 7 } + +diffServRandomDropSamplingRate OBJECT-TYPE + SYNTAX Unsigned32 (0..1000000) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times per second the queue is sampled for queue + average calculation. A value of zero is used to mean that the + queue is sampled approximately each time a packet is enqueued (or + dequeued)." + ::= { diffServRandomDropEntry 8 } + +diffServRandomDropStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServRandomDropEntry 9 } + +diffServRandomDropStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServRandomDropEntry 10 } + +-- +-- Queue Table +-- + +diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } + +-- +-- An entry of diffServQTable represents a FIFO queue Differentiated +-- Services Functional Data Path element as described in the Informal +-- Differentiated Services Model section 7.1.1. Note that the +-- specification of scheduling parameters for a queue as part of the +-- input to a scheduler functional data path element as described in +-- the Informal Differentiated Services Model section 7.1.2. This +-- allows building of hierarchical queuing/scheduling. A queue +-- therefore has these attributes: +-- +-- 1. Which scheduler will service this queue, diffServQNext. +-- 2. How the scheduler will service this queue, with respect +-- to all the other queues the same scheduler needs to service, +-- diffServQMinRate. +-- +-- Note that upstream Differentiated Services Functional Data Path +-- elements may point to a shared diffServQTable entry as described +-- in the Informal Differentiated Services Model section 7.1.1. +-- + +diffServQNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object contains an unused value for diffServQId, or a zero + to indicate that none exist." + ::= { diffServQueue 1 } + +diffServQTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServQEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Queue Table enumerates the individual queues. Note that the + MIB models queuing systems as composed of individual queues, one + per class of traffic, even though they may in fact be structured + as classes of traffic scheduled using a common calendar queue, or + in other ways." + ::= { diffServQueue 2 } + +diffServQEntry OBJECT-TYPE + SYNTAX DiffServQEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Queue Table describes a single queue or class of + traffic." + INDEX { diffServQId } + ::= { diffServQTable 1 } + +DiffServQEntry ::= SEQUENCE { + diffServQId IndexInteger, + diffServQNext RowPointer, + diffServQMinRate RowPointer, + diffServQMaxRate RowPointer, + diffServQStorage StorageType, + diffServQStatus RowStatus +} + +diffServQId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Queue entries. Managers obtain new + values for row creation in this table by reading + diffServQNextFree." + ::= { diffServQEntry 1 } + +diffServQNext OBJECT-TYPE + + + + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Scheduler. The + RowPointer must point to a diffServSchedulerEntry. + + A value of zeroDotZero in this attribute indicates an incomplete + diffServQEntry instance. In such a case, the entry has no + operational effect, since it has no parameters to give it + meaning. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 2 } + +diffServQMinRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the diffServMinRateEntry that the + scheduler, pointed to by diffServQNext, should use to service + this queue. + + If the row pointed to is zeroDotZero, the minimum rate and + priority is unspecified. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 3 } + +diffServQMaxRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the diffServMaxRateEntry that the + scheduler, pointed to by diffServQNext, should use to service + this queue. + + If the row pointed to is zeroDotZero, the maximum rate is the + line speed of the interface. + + + + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 4 } + +diffServQStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServQEntry 5 } + +diffServQStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServQEntry 6 } + +-- +-- Scheduler Table +-- + +diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 8 } + +-- +-- A Scheduler Entry represents a packet scheduler, such as a priority +-- scheduler or a WFQ scheduler. It provides flexibility for multiple +-- scheduling algorithms, each servicing multiple queues, to be used on +-- the same logical/physical interface. +-- +-- Note that upstream queues or schedulers specify several of the +-- scheduler's parameters. These must be properly specified if the +-- scheduler is to behave as expected. +-- +-- The diffServSchedulerMaxRate attribute specifies the parameters when +-- a scheduler's output is sent to another scheduler. This is used in +-- building hierarchical queues or schedulers. + + + +-- +-- More discussion of the scheduler functional data path element is in +-- the Informal Differentiated Services Model section 7.1.2. +-- + +diffServSchedulerNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServSchedulerId, or + a zero to indicate that none exist." + ::= { diffServScheduler 1 } + +diffServSchedulerTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServSchedulerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Scheduler Table enumerates packet schedulers. Multiple + scheduling algorithms can be used on a given data path, with each + algorithm described by one diffServSchedulerEntry." + ::= { diffServScheduler 2 } + +diffServSchedulerEntry OBJECT-TYPE + SYNTAX DiffServSchedulerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Scheduler Table describing a single instance of + a scheduling algorithm." + INDEX { diffServSchedulerId } + ::= { diffServSchedulerTable 1 } + +DiffServSchedulerEntry ::= SEQUENCE { + diffServSchedulerId IndexInteger, + diffServSchedulerNext RowPointer, + diffServSchedulerMethod AutonomousType, + diffServSchedulerMinRate RowPointer, + diffServSchedulerMaxRate RowPointer, + diffServSchedulerStorage StorageType, + diffServSchedulerStatus RowStatus +} + +diffServSchedulerId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An index that enumerates the Scheduler entries. Managers obtain + new values for row creation in this table by reading + diffServSchedulerNextFree." + ::= { diffServSchedulerEntry 1 } + +diffServSchedulerNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This normally + is null (zeroDotZero), or points to a diffServSchedulerEntry or a + diffServQEntry. + + However, this RowPointer may also point to an instance of: + diffServClfrEntry, + diffServMeterEntry, + diffServActionEntry, + diffServAlgDropEntry. + + It would point another diffServSchedulerEntry when implementing + multiple scheduler methods for the same data path, such as having + one set of queues scheduled by WRR and that group participating + in a priority scheduling system in which other queues compete + with it in that way. It might also point to a second scheduler + in a hierarchical scheduling system. + + If the row pointed to is zeroDotZero, no further Differentiated + Services treatment is performed on traffic of this data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 2 } + +diffServSchedulerMethod OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The scheduling algorithm used by this Scheduler. zeroDotZero + indicates that this is unknown. Standard values for generic + algorithms: diffServSchedulerPriority, diffServSchedulerWRR, and + diffServSchedulerWFQ are specified in this MIB; additional values + + + + may be further specified in other MIBs." + ::= { diffServSchedulerEntry 3 } + +diffServSchedulerMinRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the entry in diffServMinRateTable + which indicates the priority or minimum output rate from this + scheduler. This attribute is used only when there is more than + one level of scheduler. + + When it has the value zeroDotZero, it indicates that no minimum + rate or priority is imposed. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 4 } + +diffServSchedulerMaxRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the entry in diffServMaxRateTable + which indicates the maximum output rate from this scheduler. + When more than one maximum rate applies (eg, when a multi-rate + shaper is in view), it points to the first of those rate entries. + This attribute is used only when there is more than one level of + scheduler. + + When it has the value zeroDotZero, it indicates that no maximum + rate is imposed. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 5 } + +diffServSchedulerStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServSchedulerEntry 6 } + +diffServSchedulerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServSchedulerEntry 7 } + +-- +-- OIDs for diffServTBParamType definitions. +-- + +diffServSchedulers OBJECT IDENTIFIER ::= { diffServMIBAdmin 2 } + +diffServSchedulerPriority OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Priority + scheduling method. This is defined as an algorithm in which the + presence of data in a queue or set of queues absolutely precludes + dequeue from another queue or set of queues of lower priority. + Note that attributes from diffServMinRateEntry of the + queues/schedulers feeding this scheduler are used when + determining the next packet to schedule." + ::= { diffServSchedulers 1 } + +diffServSchedulerWRR OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Weighted + Round Robin scheduling method, defined as any algorithm in which + a set of queues are visited in a fixed order, and varying amounts + of traffic are removed from each queue in turn to implement an + average output rate by class. Notice attributes from + diffServMinRateEntry of the queues/schedulers feeding this + scheduler are used when determining the next packet to schedule." + + + + ::= { diffServSchedulers 2 } + +diffServSchedulerWFQ OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Weighted + Fair Queuing scheduling method, defined as any algorithm in which + a set of queues are conceptually visited in some order, to + implement an average output rate by class. Notice attributes from + diffServMinRateEntry of the queues/schedulers feeding this + scheduler are used when determining the next packet to schedule." + ::= { diffServSchedulers 3 } + +-- +-- Minimum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries for +-- reusability reasons and so that they may be used by both queues and +-- schedulers. This follows the approach for separation of data path +-- elements from parameterization that is used throughout this MIB. +-- Use of these Minimum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a second +-- scheduler, might specify a minimum transfer rate by pointing to an +-- Minimum Rate Parameter Table entry. +-- +-- The diffServMinRatePriority/Abs/Rel attributes are used as +-- parameters to the work-conserving portion of a scheduler: +-- "work-conserving" implies that the scheduler can continue to emit +-- data as long as there is data available at its input(s). This has +-- the effect of guaranteeing a certain priority relative to other +-- scheduler inputs and/or a certain minimum proportion of the +-- available output bandwidth. Properly configured, this means a +-- certain minimum rate, which may be exceeded should traffic be +-- available should there be spare bandwidth after all other classes +-- have had opportunities to consume their own minimum rates. +-- + +diffServMinRateNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMinRateId, or a + zero to indicate that none exist." + + + + ::= { diffServScheduler 3 } + +diffServMinRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMinRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Minimum Rate Parameters Table enumerates individual sets of + scheduling parameter that can be used/reused by Queues and + Schedulers." + ::= { diffServScheduler 4 } + +diffServMinRateEntry OBJECT-TYPE + SYNTAX DiffServMinRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Minimum Rate Parameters Table describes a single + set of scheduling parameters for use by one or more queues or + schedulers." + INDEX { diffServMinRateId } + ::= { diffServMinRateTable 1 } + +DiffServMinRateEntry ::= SEQUENCE { + diffServMinRateId IndexInteger, + diffServMinRatePriority Unsigned32, + diffServMinRateAbsolute Unsigned32, + diffServMinRateRelative Unsigned32, + diffServMinRateStorage StorageType, + diffServMinRateStatus RowStatus +} + +diffServMinRateId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Scheduler Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServMinRateNextFree." + ::= { diffServMinRateEntry 1 } + +diffServMinRatePriority OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this input to the associated scheduler, relative + + + + to the scheduler's other inputs. A queue or scheduler with a + larger numeric value will be served before another with a smaller + numeric value." + ::= { diffServMinRateEntry 2 } + +diffServMinRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum absolute rate, in kilobits/sec, that a downstream + scheduler element should allocate to this queue. If the value is + zero, then there is effectively no minimum rate guarantee. If the + value is non-zero, the scheduler will assure the servicing of + this queue to at least this rate. + + Note that this attribute value and that of + diffServMinRateRelative are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + diffServMinRateRelative = + (diffServMinRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMinRateEntry 3 } + +diffServMinRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum rate that a downstream scheduler element should + allocate to this queue, relative to the maximum rate of the + interface as reported by ifSpeed or ifHighSpeed, in units of + 1/1000 of 1. If the value is zero, then there is effectively no + minimum rate guarantee. If the value is non-zero, the scheduler + will assure the servicing of this queue to at least this rate. + + Note that this attribute value and that of + diffServMinRateAbsolute are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + + + diffServMinRateRelative = + (diffServMinRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMinRateEntry 4 } + +diffServMinRateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMinRateEntry 5 } + +diffServMinRateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMinRateEntry 6 } + +-- +-- Maximum Rate Parameter Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries for +-- reusability reasons and so that they may be used by both queues and +-- schedulers. This follows the approach for separation of data path +-- elements from parameterization that is used throughout this MIB. +-- Use of these Maximum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a second +-- scheduler, might specify a maximum transfer rate by pointing to a +-- Maximum Rate Parameter Table entry. Multi-rate shapers, such as a + + + +-- Dual Leaky Bucket algorithm, specify their rates using multiple +-- Maximum Rate Parameter Entries with the same diffServMaxRateId but +-- different diffServMaxRateLevels. +-- +-- The diffServMaxRateLevel/Abs/Rel attributes are used as +-- parameters to the non-work-conserving portion of a scheduler: +-- non-work-conserving implies that the scheduler may sometimes not +-- emit a packet, even if there is data available at its input(s). +-- This has the effect of limiting the servicing of the queue/scheduler +-- input or output, in effect performing shaping of the packet stream +-- passing through the queue/scheduler, as described in the Informal +-- Differentiated Services Model section 7.2. +-- + +diffServMaxRateNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMaxRateId, or a + zero to indicate that none exist." + ::= { diffServScheduler 5 } + +diffServMaxRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMaxRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Maximum Rate Parameter Table enumerates individual sets of + scheduling parameter that can be used/reused by Queues and + Schedulers." + ::= { diffServScheduler 6 } + +diffServMaxRateEntry OBJECT-TYPE + SYNTAX DiffServMaxRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Maximum Rate Parameter Table describes a single + set of scheduling parameters for use by one or more queues or + schedulers." + INDEX { diffServMaxRateId, diffServMaxRateLevel } + ::= { diffServMaxRateTable 1 } + +DiffServMaxRateEntry ::= SEQUENCE { + diffServMaxRateId IndexInteger, + diffServMaxRateLevel Unsigned32, + diffServMaxRateAbsolute Unsigned32, + + + + diffServMaxRateRelative Unsigned32, + diffServMaxRateThreshold BurstSize, + diffServMaxRateStorage StorageType, + diffServMaxRateStatus RowStatus +} + +diffServMaxRateId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Maximum Rate Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServMaxRateNextFree." + ::= { diffServMaxRateEntry 1 } + +diffServMaxRateLevel OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that indicates which level of a multi-rate shaper is + being given its parameters. A multi-rate shaper has some number + of rate levels. Frame Relay's dual rate specification refers to a + 'committed' and an 'excess' rate; ATM's dual rate specification + refers to a 'mean' and a 'peak' rate. This table is generalized + to support an arbitrary number of rates. The committed or mean + rate is level 1, the peak rate (if any) is the highest level rate + configured, and if there are other rates they are distributed in + monotonically increasing order between them." + ::= { diffServMaxRateEntry 2 } + +diffServMaxRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate in kilobits/sec that a downstream scheduler + element should allocate to this queue. If the value is zero, then + there is effectively no maximum rate limit and that the scheduler + should attempt to be work conserving for this queue. If the value + is non-zero, the scheduler will limit the servicing of this queue + to, at most, this rate in a non-work-conserving manner. + + Note that this attribute value and that of + diffServMaxRateRelative are coupled: changes to one will affect + the value of the other. They are linked by the following + + + + equation, in that setting one will change the other: + + diffServMaxRateRelative = + (diffServMaxRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMaxRateEntry 3 } + +diffServMaxRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate that a downstream scheduler element should + allocate to this queue, relative to the maximum rate of the + interface as reported by ifSpeed or ifHighSpeed, in units of + 1/1000 of 1. If the value is zero, then there is effectively no + maximum rate limit and the scheduler should attempt to be work + conserving for this queue. If the value is non-zero, the + scheduler will limit the servicing of this queue to, at most, + this rate in a non-work-conserving manner. + + Note that this attribute value and that of + diffServMaxRateAbsolute are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + diffServMaxRateRelative = + (diffServMaxRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMaxRateEntry 4 } + +diffServMaxRateThreshold OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of bytes of queue depth at which the rate of a + + + + multi-rate scheduler will increase to the next output rate. In + the last conceptual row for such a shaper, this threshold is + ignored and by convention is zero." + REFERENCE + "Adaptive rate Shaper, RFC 2963" + ::= { diffServMaxRateEntry 5 } + +diffServMaxRateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMaxRateEntry 6 } + +diffServMaxRateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMaxRateEntry 7 } + +-- +-- MIB Compliance statements. +-- + +diffServMIBCompliances OBJECT IDENTIFIER ::= + { diffServMIBConformance 1 } +diffServMIBGroups OBJECT IDENTIFIER ::= + { diffServMIBConformance 2 } + +diffServMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for read-create, then + such an implementation can claim full compliance. Such devices + can then be both monitored and configured with this MIB." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + + + + ifCounterDiscontinuityGroup + } + + MODULE -- This Module + MANDATORY-GROUPS { + diffServMIBDataPathGroup, diffServMIBClfrGroup, + diffServMIBClfrElementGroup, diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, diffServMIBAlgDropGroup, + diffServMIBQGroup, diffServMIBSchedulerGroup, + diffServMIBMaxRateGroup, diffServMIBMinRateGroup, + diffServMIBCounterGroup + } + + GROUP diffServMIBMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement metering + functions." + + GROUP diffServMIBTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement token-bucket + metering functions." + + GROUP diffServMIBDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement DSCP-Marking + functions." + + GROUP diffServMIBRandomDropGroup + DESCRIPTION + "This group is mandatory for devices that implement Random Drop + functions." + + OBJECT diffServDataPathStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServClfrStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServClfrElementStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + + + + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and IPv6 + addresses." + + OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and globally + unique IPv6 addresses." + + OBJECT diffServAlgDropStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServRandomDropStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServQStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServSchedulerStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMinRateStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMaxRateStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + + + + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { diffServMIBCompliances 1 } + +-- +-- Read-Only Compliance +-- + +diffServMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read-create + (i.e. in read-only mode), then such an implementation can claim + read-only compliance. Such a device can then be monitored but can + not be configured with this MIB." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- This Module + MANDATORY-GROUPS { + diffServMIBDataPathGroup, diffServMIBClfrGroup, + diffServMIBClfrElementGroup, diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, diffServMIBAlgDropGroup, + diffServMIBQGroup, diffServMIBSchedulerGroup, + diffServMIBMaxRateGroup, diffServMIBMinRateGroup, + diffServMIBCounterGroup + } + + GROUP diffServMIBMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement metering + functions." + + GROUP diffServMIBTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement token-bucket + metering functions." + + GROUP diffServMIBDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement DSCP-Marking + functions." + + GROUP diffServMIBRandomDropGroup + + + + DESCRIPTION + "This group is mandatory for devices that implement Random Drop + functions." + + OBJECT diffServDataPathStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServDataPathStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServDataPathStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object not needed when diffServClfrTable is implemented read- + only" + + OBJECT diffServClfrStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServClfrElementNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object not needed when diffServClfrelementTable is implemented + read-only" + + OBJECT diffServClfrElementPrecedence + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT diffServClfrElementNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMultiFieldClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMultiFieldClfrTable is + implemented in read-only mode." + + OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and IPv6 addresses." + + OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and globally unique IPv6 addresses." + + OBJECT diffServMultiFieldClfrDstPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT diffServMultiFieldClfrSrcAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and globally unique IPv6 addresses." + + OBJECT diffServMultiFieldClfrSrcPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDscp + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrFlowId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrProtocol + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDstL4PortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDstL4PortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrSrcL4PortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrSrcL4PortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrStorage + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, createAndWait and notInService + support is not required." + + OBJECT diffServMeterNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMultiFieldClfrTable is + implemented in read-only mode." + + OBJECT diffServMeterSucceedNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterFailNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServTBParamNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServTBParamTable is implemented in + read-only mode." + + + + + OBJECT diffServTBParamType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamBurstSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServActionNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServActionTable is implemented in + read-only mode." + + OBJECT diffServActionInterface + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT diffServActionSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServCountActNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServCountActTable is implemented + in read-only mode." + + OBJECT diffServCountActStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServCountActStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServAlgDropNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServAlgDropTable is implemented in + read-only mode." + + OBJECT diffServAlgDropType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropNext + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropQMeasure + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropQThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServRandomDropNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServRandomDropTable is implemented + in read-only mode." + + OBJECT diffServRandomDropMinThreshBytes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMinThreshPkts + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMaxThreshBytes + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMaxThreshPkts + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropProbMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropWeight + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropSamplingRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServQNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServQTable is implemented in + read-only mode." + + OBJECT diffServQNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQMinRate + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServQMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServSchedulerNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServSchedulerTable is implemented + in read-only mode." + + OBJECT diffServSchedulerNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMinRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerStorage + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMinRateNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMinRateTable is implemented in + read-only mode." + + OBJECT diffServMinRatePriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateAbsolute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateRelative + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMaxRateNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMaxrateTable is implemented in + read-only mode." + + + + OBJECT diffServMaxRateAbsolute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateRelative + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + ::= { diffServMIBCompliances 2 } + +diffServMIBDataPathGroup OBJECT-GROUP + OBJECTS { + diffServDataPathStart, diffServDataPathStorage, + diffServDataPathStatus + } + STATUS current + DESCRIPTION + "The Data Path Group defines the MIB Objects that describe a + functional data path." + ::= { diffServMIBGroups 1 } + +diffServMIBClfrGroup OBJECT-GROUP + OBJECTS { + diffServClfrNextFree, diffServClfrStorage, + diffServClfrStatus + } + STATUS current + DESCRIPTION + "The Classifier Group defines the MIB Objects that describe the + + + + list the starts of individual classifiers." + ::= { diffServMIBGroups 2 } + +diffServMIBClfrElementGroup OBJECT-GROUP + OBJECTS { + diffServClfrElementNextFree, + diffServClfrElementPrecedence, diffServClfrElementNext, + diffServClfrElementSpecific, diffServClfrElementStorage, + diffServClfrElementStatus + } + STATUS current + DESCRIPTION + "The Classifier Element Group defines the MIB Objects that + describe the classifier elements that make up a generic + classifier." + ::= { diffServMIBGroups 3 } + +diffServMIBMultiFieldClfrGroup OBJECT-GROUP + OBJECTS { + diffServMultiFieldClfrNextFree, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrDstAddr, + diffServMultiFieldClfrDstPrefixLength, + diffServMultiFieldClfrFlowId, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrSrcPrefixLength, + diffServMultiFieldClfrDscp, + diffServMultiFieldClfrProtocol, + diffServMultiFieldClfrDstL4PortMin, + diffServMultiFieldClfrDstL4PortMax, + diffServMultiFieldClfrSrcL4PortMin, + diffServMultiFieldClfrSrcL4PortMax, + diffServMultiFieldClfrStorage, + diffServMultiFieldClfrStatus + } + STATUS current + DESCRIPTION + "The Multi-field Classifier Group defines the MIB Objects that + describe a classifier element for matching on various fields of + an IP and upper-layer protocol header." + ::= { diffServMIBGroups 4 } + +diffServMIBMeterGroup OBJECT-GROUP + OBJECTS { + diffServMeterNextFree, diffServMeterSucceedNext, + diffServMeterFailNext, diffServMeterSpecific, + diffServMeterStorage, diffServMeterStatus + } + + + + STATUS current + DESCRIPTION + "The Meter Group defines the objects used in describing a generic + meter element." + ::= { diffServMIBGroups 5 } + +diffServMIBTBParamGroup OBJECT-GROUP + OBJECTS { + diffServTBParamNextFree, diffServTBParamType, + diffServTBParamRate, diffServTBParamBurstSize, + diffServTBParamInterval, diffServTBParamStorage, + diffServTBParamStatus + } + STATUS current + DESCRIPTION + "The Token-Bucket Meter Group defines the objects used in + describing a token bucket meter element." + ::= { diffServMIBGroups 6 } + +diffServMIBActionGroup OBJECT-GROUP + OBJECTS { + diffServActionNextFree, diffServActionNext, + diffServActionSpecific, diffServActionStorage, + diffServActionInterface, diffServActionStatus + } + STATUS current + DESCRIPTION + "The Action Group defines the objects used in describing a + generic action element." + ::= { diffServMIBGroups 7 } + +diffServMIBDscpMarkActGroup OBJECT-GROUP + OBJECTS { + diffServDscpMarkActDscp + } + STATUS current + DESCRIPTION + "The DSCP Mark Action Group defines the objects used in + describing a DSCP Marking Action element." + ::= { diffServMIBGroups 8 } + +diffServMIBCounterGroup OBJECT-GROUP + OBJECTS { + diffServCountActOctets, diffServCountActPkts, + diffServAlgDropOctets, diffServAlgDropPkts, + diffServAlgRandomDropOctets, diffServAlgRandomDropPkts, + diffServCountActStorage, diffServCountActStatus, + diffServCountActNextFree + + + + } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + packet-oriented network interfaces." + ::= { diffServMIBGroups 9 } + +diffServMIBAlgDropGroup OBJECT-GROUP + OBJECTS { + diffServAlgDropNextFree, diffServAlgDropType, + diffServAlgDropNext, diffServAlgDropQMeasure, + diffServAlgDropQThreshold, diffServAlgDropSpecific, + diffServAlgDropStorage, diffServAlgDropStatus + } + STATUS current + DESCRIPTION + "The Algorithmic Drop Group contains the objects that describe + algorithmic dropper operation and configuration." + ::= { diffServMIBGroups 10 } + +diffServMIBRandomDropGroup OBJECT-GROUP + OBJECTS { + diffServRandomDropNextFree, + diffServRandomDropMinThreshBytes, + diffServRandomDropMinThreshPkts, + diffServRandomDropMaxThreshBytes, + diffServRandomDropMaxThreshPkts, + diffServRandomDropProbMax, + diffServRandomDropWeight, + diffServRandomDropSamplingRate, + diffServRandomDropStorage, + diffServRandomDropStatus + } + STATUS current + DESCRIPTION + "The Random Drop Group augments the Algorithmic Drop Group for + random dropper operation and configuration." + ::= { diffServMIBGroups 11 } + +diffServMIBQGroup OBJECT-GROUP + + OBJECTS { + diffServQNextFree, diffServQNext, diffServQMinRate, + diffServQMaxRate, diffServQStorage, diffServQStatus + } + STATUS current + DESCRIPTION + "The Queue Group contains the objects that describe an + + + + interface's queues." + ::= { diffServMIBGroups 12 } + +diffServMIBSchedulerGroup OBJECT-GROUP + OBJECTS { + diffServSchedulerNextFree, diffServSchedulerNext, + diffServSchedulerMethod, diffServSchedulerMinRate, + diffServSchedulerMaxRate, diffServSchedulerStorage, + diffServSchedulerStatus + } + STATUS current + DESCRIPTION + "The Scheduler Group contains the objects that describe packet + schedulers on interfaces." + ::= { diffServMIBGroups 13 } + +diffServMIBMinRateGroup OBJECT-GROUP + OBJECTS { + diffServMinRateNextFree, diffServMinRatePriority, + diffServMinRateAbsolute, diffServMinRateRelative, + diffServMinRateStorage, diffServMinRateStatus + } + STATUS current + DESCRIPTION + "The Minimum Rate Parameter Group contains the objects that + describe packet schedulers' minimum rate or priority guarantees." + ::= { diffServMIBGroups 14 } + +diffServMIBMaxRateGroup OBJECT-GROUP + OBJECTS { + diffServMaxRateNextFree, diffServMaxRateAbsolute, + diffServMaxRateRelative, diffServMaxRateThreshold, + diffServMaxRateStorage, diffServMaxRateStatus + } + STATUS current + DESCRIPTION + "The Maximum Rate Parameter Group contains the objects that + describe packet schedulers' maximum rate guarantees." + ::= { diffServMIBGroups 15 } + +END diff --git a/mibs/ietf/DIRECTORY-SERVER-MIB b/mibs/ietf/DIRECTORY-SERVER-MIB new file mode 100644 index 0000000..cfaa342 --- /dev/null +++ b/mibs/ietf/DIRECTORY-SERVER-MIB @@ -0,0 +1,788 @@ +DIRECTORY-SERVER-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, Counter32, Gauge32, OBJECT-TYPE + FROM SNMPv2-SMI + mib-2 FROM RFC1213-MIB + DisplayString, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ZeroBasedCounter32 + FROM RMON2-MIB + applIndex, DistinguishedName, URLString + + FROM NETWORK-SERVICES-MIB; + + dsMIB MODULE-IDENTITY + LAST-UPDATED "9906070000Z" + ORGANIZATION "IETF Mail and Directory Management Working + Group" + CONTACT-INFO + " Glenn Mansfield + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + Working Group E-mail: ietf-madman@innosoft.com + To subscribe: ietf-madman-request@innosoft.com" + + DESCRIPTION + " The MIB module for monitoring Directory Services." + + -- revision information + + REVISION "9906070000Z" + DESCRIPTION + "This revision of this MIB is published in RFC 2605. + + This revision obsoletes RFC 1567. It is incompatible with + the original MIB and so it has been renamed from dsaMIB + to dsMIB." + + REVISION "9311250000Z" -- 25th November 1993 + DESCRIPTION + "The original version of this MIB was published in RFC 1567." + ::= { mib-2 66 } + + dsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the Directory + Servers." + ::= {dsMIB 1} + + dsTableEntry OBJECT-TYPE + SYNTAX DsTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing summary description for a Directory + Server." + INDEX { applIndex } + ::= {dsTable 1} + +-- General description of the Directory Server application will be +-- available in the applTable of the NETWORK-SERVICES-MIB indexed by +-- applIndex. + + DsTableEntry ::= SEQUENCE { + dsServerType + BITS, + dsServerDescription + DisplayString, + + -- Entry statistics/Cache performance + dsMasterEntries + Gauge32, + dsCopyEntries + Gauge32, + dsCacheEntries + Gauge32, + dsCacheHits + Counter32, + dsSlaveHits + Counter32 + } + + dsServerType OBJECT-TYPE + SYNTAX BITS { + frontEndDirectoryServer(0), + backEndDirectoryServer(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the server is + a frontend or, a backend or, both. If the server + is a frontend, then the frontEndDirectoryServer + bit will be set. Similarly for the backend." + ::= {dsTableEntry 1} + + dsServerDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A text description of the application. This information + is intended to identify and briefly describe the + application in a status display." + ::= {dsTableEntry 2} + + +-- A (C)LDAP frontend to the X.500 Directory will not have +-- MasterEntries, CopyEntries; the following counters will +-- be inaccessible for LDAP/CLDAP frontends to the X.500 +-- directory: dsMasterEntries, dsCopyEntries, dsSlaveHits. + + dsMasterEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries mastered in the Directory Server." + ::= {dsTableEntry 3} + + dsCopyEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries for which systematic (slave) + copies are maintained in the Directory Server." + ::= {dsTableEntry 4} + + dsCacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries cached (non-systematic copies) in + the Directory Server. This will include the entries that + are cached partially. The negative cache is not counted." + ::= {dsTableEntry 5} + + dsCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held cache." + ::= {dsTableEntry 6} + + dsSlaveHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held object replications ( copy- + entries)." + ::= {dsTableEntry 7} + + dsApplIfOpsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsApplIfOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + Directory Server operations." + ::= {dsMIB 2} + + dsApplIfOpsEntry OBJECT-TYPE + SYNTAX DsApplIfOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing operations related statistics + for a Directory Server." + INDEX { applIndex, dsApplIfProtocolIndex } + ::= {dsApplIfOpsTable 1} + DsApplIfOpsEntry ::= SEQUENCE { + + dsApplIfProtocolIndex + INTEGER, + dsApplIfProtocol + OBJECT IDENTIFIER, + + -- Bindings + + dsApplIfUnauthBinds + Counter32, + dsApplIfSimpleAuthBinds + Counter32, + dsApplIfStrongAuthBinds + Counter32, + dsApplIfBindSecurityErrors + Counter32, + + -- In-coming operations + + dsApplIfInOps + Counter32, + dsApplIfReadOps + Counter32, + dsApplIfCompareOps + Counter32, + dsApplIfAddEntryOps + Counter32, + dsApplIfRemoveEntryOps + Counter32, + dsApplIfModifyEntryOps + Counter32, + dsApplIfModifyRDNOps + Counter32, + dsApplIfListOps + Counter32, + dsApplIfSearchOps + Counter32, + dsApplIfOneLevelSearchOps + Counter32, + dsApplIfWholeSubtreeSearchOps + Counter32, + + -- Out going operations + + dsApplIfReferrals + Counter32, + dsApplIfChainings + Counter32, + + -- Errors + + dsApplIfSecurityErrors + Counter32, + dsApplIfErrors + Counter32, + +-- replications + + dsApplIfReplicationUpdatesIn + Counter32, + dsApplIfReplicationUpdatesOut + Counter32, + + -- Traffic Volume + + dsApplIfInBytes + Counter32, + dsApplIfOutBytes + Counter32 + } + + -- CLDAP does not use binds; for the CLDAP interface of a Directory + -- Server the bind related counters will be inaccessible. + -- + -- CLDAP and LDAP implement "Read" and "List" operations + -- indirectly via the "search" operation; the following + -- counters will be inaccessible for the CLDAP and LDAP interfaces of + -- Directory Servers: dsApplIfReadOps, dsApplIfListOps + -- + -- CLDAP does not implement "Compare", "Add", "Remove", + -- "Modify", "ModifyRDN"; the following counters will be + -- inaccessible for the CLDAP interfaces of Directory Servers: + -- dsApplIfCompareOps, dsApplIfAddEntryOps, dsApplIfRemoveEntryOps, + -- dsApplIfModifyEntryOps, dsApplIfModifyRDNOps. + -- + -- CLDAP Directory Servers do not return Referrals + -- the following fields will remain inaccessible for + -- CLDAP interfaces of Directory Servers: dsApplIfReferrals. + + dsApplIfProtocolIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index to uniquely identify an entry corresponding to a + application-layer protocol interface. This index is used + for lexicographic ordering of the table." + ::= {dsApplIfOpsEntry 1} + + dsApplIfProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used by the application + on this interface. For an OSI Application, this will be the + Application Context. For Internet applications, the IANA + maintains a registry[22] of the OIDs which correspond to + well-known applications. If the application protocol is + not listed in the registry, an OID value of the form + {applTCPProtoID port} or {applUDProtoID port} are used for + TCP-based and UDP-based protocols, respectively. In either + case 'port' corresponds to the primary port number being + used by the protocol. The OIDs applTCPProtoID and + applUDPProtoID are defined in NETWORK-SERVICES-MIB" + ::= {dsApplIfOpsEntry 2} + + dsApplIfUnauthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of unauthenticated/anonymous bind requests + received." + ::= {dsApplIfOpsEntry 3} + + dsApplIfSimpleAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that were authenticated + using simple authentication procedures like password + checks. This includes the + password authentication using SASL mechanisms like + CRAM-MD5." + ::= {dsApplIfOpsEntry 4} + + dsApplIfStrongAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that were authenticated + using TLS and X.500 strong authentication procedures. + This includes the binds that were + authenticated using external authentication procedures." + ::= {dsApplIfOpsEntry 5} + + dsApplIfBindSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that have been rejected + due to inappropriate authentication or + invalid credentials." + ::= {dsApplIfOpsEntry 6} + + dsApplIfInOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests received from DUAs or other + Directory Servers." + ::= {dsApplIfOpsEntry 7} + + dsApplIfReadOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of read requests received." + ::= {dsApplIfOpsEntry 8} + + + dsApplIfCompareOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of compare requests received." + ::= {dsApplIfOpsEntry 9} + + dsApplIfAddEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of addEntry requests received." + ::= {dsApplIfOpsEntry 10} + + + dsApplIfRemoveEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of removeEntry requests received." + ::= {dsApplIfOpsEntry 11} + + + dsApplIfModifyEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyEntry requests received." + ::= {dsApplIfOpsEntry 12} + + + dsApplIfModifyRDNOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyRDN requests received." + ::= {dsApplIfOpsEntry 13} + + dsApplIfListOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of list requests received." + ::= {dsApplIfOpsEntry 14} + + dsApplIfSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of search requests- baseObject searches, + oneLevel searches and whole subtree searches, + received." + ::= {dsApplIfOpsEntry 15} + + dsApplIfOneLevelSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of oneLevel search requests received." + ::= {dsApplIfOpsEntry 16} + + + dsApplIfWholeSubtreeSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of whole subtree search requests received." + ::= {dsApplIfOpsEntry 17} + + + dsApplIfReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of referrals returned in response + to requests for operations." + ::= {dsApplIfOpsEntry 18} + + dsApplIfChainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded by this Directory Server + to other Directory Servers." + ::= {dsApplIfOpsEntry 19} + + dsApplIfSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests received + which did not meet the security requirements. " + ::= {dsApplIfOpsEntry 20} + + dsApplIfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests that could not be serviced + due to errors other than security errors, and + referrals. + A partially serviced operation will not be counted + as an error. + The errors include naming-related, update-related, + attribute-related and service-related errors." + ::= {dsApplIfOpsEntry 21} + +-- Replication operations + + dsApplIfReplicationUpdatesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of replication updates fetched or received from + supplier Directory Servers." + ::= {dsApplIfOpsEntry 22} + + dsApplIfReplicationUpdatesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of replication updates sent to or taken by + consumer Directory Servers." + ::= {dsApplIfOpsEntry 23} + + dsApplIfInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Incoming traffic, in bytes, on the interface. + This will include requests from DUAs as well + as responses from other Directory Servers." + ::= {dsApplIfOpsEntry 24} + + dsApplIfOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Outgoing traffic in bytes on the interface. + This will include responses to DUAs and Directory + Servers as well as requests to other Directory Servers." + ::= {dsApplIfOpsEntry 25} + + + -- The dsIntTable contains statistical data on the peer + -- Directory Servers with which the monitored Directory + -- Server interacts or, attempts to interact. This table is + -- expected to provide a useful insight into the effect of + -- neighbours on the Directory Server's performance. + -- The table keeps track of the last "N" Directory Servers + -- with which the monitored Directory has interacted + -- (attempted to interact), where "N" is a locally-defined + -- constant. + -- For a multiprotocol server, statistics for each protocol + + -- are kept separetely. + + dsIntTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Each row of this table contains some details + related to the history of the interaction + of the monitored Directory Server with its + peer Directory Servers." + ::= { dsMIB 3 } + + dsIntEntry OBJECT-TYPE + SYNTAX DsIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing interaction details of a Directory + Server with a peer Directory Server." + INDEX { applIndex,dsIntEntIndex, dsApplIfProtocolIndex } + ::= { dsIntTable 1 } + + DsIntEntry ::= SEQUENCE { + dsIntEntIndex + INTEGER, + dsIntEntDirectoryName + DistinguishedName, + dsIntEntTimeOfCreation + TimeStamp, + dsIntEntTimeOfLastAttempt + TimeStamp, + dsIntEntTimeOfLastSuccess + TimeStamp, + dsIntEntFailuresSinceLastSuccess + Gauge32, + dsIntEntFailures + ZeroBasedCounter32, + dsIntEntSuccesses + ZeroBasedCounter32, + dsIntEntURL + URLString + } + + dsIntEntIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Together with applIndex and dsApplIfProtocolIndex, this + object forms the unique key to + identify the conceptual row which contains useful info + on the (attempted) interaction between the Directory + Server (referred to by applIndex) and a peer Directory + Server using a particular protocol." + ::= {dsIntEntry 1} + + dsIntEntDirectoryName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Distinguished Name of the peer Directory Server to + which this entry pertains." + ::= {dsIntEntry 2} + + dsIntEntTimeOfCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when this row was created. + If the entry was created before the network management + subsystem was initialized, this object will contain + a value of zero." + ::= {dsIntEntry 3} + + dsIntEntTimeOfLastAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt was made + to contact the peer Directory Server. If the last attempt + was made before the network management subsystem was + initialized, this object will contain a value of zero." + ::= {dsIntEntry 4} + + dsIntEntTimeOfLastSuccess OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt made to + contact the peer Directory Server was successful. If there + have been no successful attempts this entry will have a value + of zero. If the last successful attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsIntEntry 5} + + dsIntEntFailuresSinceLastSuccess OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of failures since the last time an + attempt to contact the peer Directory Server was successful. + If there have been no successful attempts, this counter + will contain the number of failures since this entry + was created." + ::= {dsIntEntry 6} + +-- note this gauge has a maximum value of 4294967295 and, +-- it does not wrap.[5] + + dsIntEntFailures OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative failures in contacting the peer Directory Server + since the creation of this entry." + ::= {dsIntEntry 7} + + dsIntEntSuccesses OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative successes in contacting the peer Directory Server + since the creation of this entry." + ::= {dsIntEntry 8} + + dsIntEntURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " URL of the peer Directory Server." + ::= {dsIntEntry 9} + + + -- Conformance information + dsConformance OBJECT IDENTIFIER ::= { dsMIB 4 } + + dsGroups OBJECT IDENTIFIER ::= { dsConformance 1 } + dsCompliances OBJECT IDENTIFIER ::= { dsConformance 2 } + + -- Compliance statements + + dsEntryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for + a summary overview of the Directory Servers ." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup } + + ::= { dsCompliances 1 } + + dsOpsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for monitoring + Directory Server operations, entry statistics and cache + performance." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsOpsGroup } + + ::= { dsCompliances 2 } + + dsIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for + monitoring Directory Server operations and the + interaction of the Directory Server with peer + Directory Servers." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsIntGroup } + + ::= { dsCompliances 3 } + + dsOpsIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for monitoring + Directory Server operations and the interaction of the + Directory Server with peer Directory Servers." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsOpsGroup, dsIntGroup } + + ::= { dsCompliances 4 } + + + -- Units of conformance + + dsEntryGroup OBJECT-GROUP + OBJECTS {dsServerType, dsServerDescription, + dsMasterEntries, dsCopyEntries, + dsCacheEntries, dsCacheHits, + dsSlaveHits} + STATUS current + DESCRIPTION + " A collection of objects for a summary overview of the + Directory Servers." + ::= { dsGroups 1 } + + dsOpsGroup OBJECT-GROUP + OBJECTS { + dsApplIfProtocolIndex, dsApplIfProtocol, + dsApplIfUnauthBinds, dsApplIfSimpleAuthBinds, + dsApplIfStrongAuthBinds, dsApplIfBindSecurityErrors, + dsApplIfInOps, dsApplIfReadOps, + dsApplIfCompareOps, dsApplIfAddEntryOps, + dsApplIfRemoveEntryOps, dsApplIfModifyEntryOps, + dsApplIfModifyRDNOps, dsApplIfListOps, + dsApplIfSearchOps, dsApplIfOneLevelSearchOps, + dsApplIfWholeSubtreeSearchOps, dsApplIfReferrals, + dsApplIfChainings, dsApplIfSecurityErrors, + dsApplIfErrors, dsApplIfReplicationUpdatesIn, + dsApplIfReplicationUpdatesOut, dsApplIfInBytes, + dsApplIfOutBytes } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the Directory + Server operations." + ::= { dsGroups 2 } + + dsIntGroup OBJECT-GROUP + OBJECTS { + dsIntEntDirectoryName, dsIntEntTimeOfCreation, + dsIntEntTimeOfLastAttempt, dsIntEntTimeOfLastSuccess, + dsIntEntFailuresSinceLastSuccess, dsIntEntFailures, + dsIntEntSuccesses, dsIntEntURL} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the Directory + Server's interaction with peer Directory Servers." + ::= { dsGroups 3 } + + +END diff --git a/mibs/ietf/DISMAN-EVENT-MIB b/mibs/ietf/DISMAN-EVENT-MIB new file mode 100644 index 0000000..bde1cdb --- /dev/null +++ b/mibs/ietf/DISMAN-EVENT-MIB @@ -0,0 +1,1955 @@ +DISMAN-EVENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, + NOTIFICATION-TYPE, Counter32, + Gauge32, mib-2, zeroDotZero FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, + TruthValue FROM SNMPv2-TC + + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + sysUpTime FROM SNMPv2-MIB + SnmpTagValue FROM SNMP-TARGET-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +dismanEventMIB MODULE-IDENTITY + LAST-UPDATED "200010160000Z" -- 16 October 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 4527 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for defining event triggers and actions + for network management purposes." +-- Revision History + + REVISION "200010160000Z" -- 16 October 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 2981" + ::= { mib-2 88 } + +dismanEventMIBObjects OBJECT IDENTIFIER ::= { dismanEventMIB 1 } + +-- Management Triggered Event (MTE) objects + +mteResource OBJECT IDENTIFIER ::= { dismanEventMIBObjects 1 } +mteTrigger OBJECT IDENTIFIER ::= { dismanEventMIBObjects 2 } +mteObjects OBJECT IDENTIFIER ::= { dismanEventMIBObjects 3 } +mteEvent OBJECT IDENTIFIER ::= { dismanEventMIBObjects 4 } + +-- +-- Textual Conventions +-- + +FailureReason ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Reasons for failures in an attempt to perform a management + request. + + The first group of errors, numbered less than 0, are related + to problems in sending the request. The existence of a + particular error code here does not imply that all + implementations are capable of sensing that error and + + + returning that code. + + The second group, numbered greater than 0, are copied + directly from SNMP protocol operations and are intended to + carry exactly the meanings defined for the protocol as returned + in an SNMP response. + + localResourceLack some local resource such as memory + lacking or + mteResourceSampleInstanceMaximum + exceeded + badDestination unrecognized domain name or otherwise + invalid destination address + destinationUnreachable can't get to destination address + noResponse no response to SNMP request + badType the data syntax of a retrieved object + as not as expected + sampleOverrun another sample attempt occurred before + the previous one completed" + + SYNTAX INTEGER { localResourceLack(-1), + badDestination(-2), + destinationUnreachable(-3), + noResponse(-4), + badType(-5), + sampleOverrun(-6), + + noError(0), + + tooBig(1), + noSuchName(2), + badValue(3), + readOnly(4), + 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) } +-- + + +-- Resource Control Section +-- + +mteResourceSampleMinimum OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum mteTriggerFrequency this system will + accept. A system may use the larger values of this minimum to + lessen the impact of constant sampling. For larger + sampling intervals the system samples less often and + suffers less overhead. This object provides a way to enforce + such lower overhead for all triggers created after it is + set. + + Unless explicitly resource limited, a system's value for + this object SHOULD be 1, allowing as small as a 1 second + interval for ongoing trigger sampling. + + Changing this value will not invalidate an existing setting + of mteTriggerFrequency." + ::= { mteResource 1 } + +mteResourceSampleInstanceMaximum OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "instances" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of instance entries this system will + support for sampling. + + These are the entries that maintain state, one for each + instance of each sampled object as selected by + mteTriggerValueID. Note that wildcarded objects result + in multiple instances of this state. + + A value of 0 indicates no preset limit, that is, the limit + is dynamic based on system operation and resources. + + Unless explicitly resource limited, a system's value for + this object SHOULD be 0. + + Changing this value will not eliminate or inhibit existing + sample state but could prevent allocation of additional state + information." + + + ::= { mteResource 2 } + +mteResourceSampleInstances OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active instance entries as + defined for mteResourceSampleInstanceMaximum." + ::= { mteResource 3 } + +mteResourceSampleInstancesHigh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest value of mteResourceSampleInstances that has + occurred since initialization of the management system." + ::= { mteResource 4 } + +mteResourceSampleInstanceLacks OBJECT-TYPE + SYNTAX Counter32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this system could not take a new sample + because that allocation would have exceeded the limit set by + mteResourceSampleInstanceMaximum." + ::= { mteResource 5 } + +-- +-- Trigger Section +-- + +-- Counters + +mteTriggerFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failures" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an attempt to check for a trigger + condition has failed. This counts individually for each + attempt in a group of targets or each attempt for a + + + wildcarded object." + ::= { mteTrigger 1 } + +-- +-- Trigger Table +-- + +mteTriggerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information." + ::= { mteTrigger 2 } + +mteTriggerEntry OBJECT-TYPE + SYNTAX MteTriggerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single trigger. Applications create and + delete entries using mteTriggerEntryStatus." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerTable 1 } + +MteTriggerEntry ::= SEQUENCE { + mteOwner SnmpAdminString, + mteTriggerName SnmpAdminString, + mteTriggerComment SnmpAdminString, + mteTriggerTest BITS, + mteTriggerSampleType INTEGER, + mteTriggerValueID OBJECT IDENTIFIER, + mteTriggerValueIDWildcard TruthValue, + mteTriggerTargetTag SnmpTagValue, + mteTriggerContextName SnmpAdminString, + mteTriggerContextNameWildcard TruthValue, + mteTriggerFrequency Unsigned32, + mteTriggerObjectsOwner SnmpAdminString, + mteTriggerObjects SnmpAdminString, + mteTriggerEnabled TruthValue, + mteTriggerEntryStatus RowStatus +} + +mteOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The owner of this entry. The exact semantics of this + string are subject to the security policy defined by the + security administrator." + ::= { mteTriggerEntry 1 } + +mteTriggerName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for the + trigger within the scope of mteOwner." + ::= { mteTriggerEntry 2 } + +mteTriggerComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the trigger's function and use." + DEFVAL { ''H } + ::= { mteTriggerEntry 3 } + +mteTriggerTest OBJECT-TYPE + SYNTAX BITS { existence(0), boolean(1), threshold(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of trigger test to perform. For 'boolean' and + 'threshold' tests, the object at mteTriggerValueID MUST + evaluate to an integer, that is, anything that ends up encoded + for transmission (that is, in BER, not ASN.1) as an integer. + + For 'existence', the specific test is as selected by + mteTriggerExistenceTest. When an object appears, vanishes + or changes value, the trigger fires. If the object's + appearance caused the trigger firing, the object MUST + vanish before the trigger can be fired again for it, and + vice versa. If the trigger fired due to a change in the + object's value, it will be fired again on every successive + value change for that object. + + For 'boolean', the specific test is as selected by + mteTriggerBooleanTest. If the test result is true the trigger + fires. The trigger will not fire again until the value has + become false and come back to true. + + For 'threshold' the test works as described below for + + + mteTriggerThresholdStartup, mteTriggerThresholdRising, and + mteTriggerThresholdFalling. + + Note that combining 'boolean' and 'threshold' tests on the + same object may be somewhat redundant." + DEFVAL { { boolean } } + ::= { mteTriggerEntry 4 } + +mteTriggerSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of sampling to perform. + + An 'absoluteValue' sample requires only a single sample to be + meaningful, and is exactly the value of the object at + mteTriggerValueID at the sample time. + + A 'deltaValue' requires two samples to be meaningful and is + thus not available for testing until the second and subsequent + samples after the object at mteTriggerValueID is first found + to exist. It is the difference between the two samples. For + unsigned values it is always positive, based on unsigned + arithmetic. For signed values it can be positive or negative. + + For SNMP counters to be meaningful they should be sampled as a + 'deltaValue'. + + For 'deltaValue' mteTriggerDeltaTable contains further + parameters. + + If only 'existence' is set in mteTriggerTest this object has + no meaning." + DEFVAL { absoluteValue } + ::= { mteTriggerEntry 5 } + +mteTriggerValueID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the MIB object to sample to see + if the trigger should fire. + + This may be wildcarded by truncating all or part of the + instance portion, in which case the value is obtained + as if with a GetNext function, checking multiple values + + + if they exist. If such wildcarding is applied, + mteTriggerValueIDWildcard must be 'true' and if not it must + be 'false'. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteTriggerValueIDWildcard result + in operation as one would expect when providing the wrong + identifier to a Get or GetNext operation. The Get will fail + or get the wrong object. The GetNext will indeed get whatever + is next, proceeding until it runs past the initial part of the + identifier and perhaps many unintended objects for confusing + results. If the value syntax of those objects is not usable, + that results in a 'badType' error that terminates the scan. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time." + DEFVAL { zeroDotZero } + ::= { mteTriggerEntry 6 } + +mteTriggerValueIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteTriggerValueID is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteTriggerEntry 7 } + +mteTriggerTargetTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tag for the target(s) from which to obtain the condition + for a trigger check. + + A length of 0 indicates the local system. In this case, + access to the objects indicated by mteTriggerValueID is under + the security credentials of the requester that set + mteTriggerEntryStatus to 'active'. Those credentials are the + input parameters for isAccessAllowed from the Architecture for + Describing SNMP Management Frameworks. + + Otherwise access rights are checked according to the security + + + parameters resulting from the tag." + DEFVAL { ''H } + ::= { mteTriggerEntry 8 } + +mteTriggerContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The management context from which to obtain mteTriggerValueID. + + This may be wildcarded by leaving characters off the end. For + example use 'Repeater' to wildcard to 'Repeater1', + 'Repeater2', 'Repeater-999.87b', and so on. To indicate such + wildcarding is intended, mteTriggerContextNameWildcard must + be 'true'. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time. + + Operation of this feature assumes that the local system has a + list of available contexts against which to apply the + wildcard. If the objects are being read from the local + system, this is clearly the system's own list of contexts. + For a remote system a local version of such a list is not + defined by any current standard and may not be available, so + this function MAY not be supported." + DEFVAL { ''H } + ::= { mteTriggerEntry 9 } + +mteTriggerContextNameWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteTriggerContextName is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteTriggerEntry 10 } + +mteTriggerFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The number of seconds to wait between trigger samples. To + encourage consistency in sampling, the interval is measured + from the beginning of one check to the beginning of the next + and the timer is restarted immediately when it expires, not + when the check completes. + + If the next sample begins before the previous one completed the + system may either attempt to make the check or treat this as an + error condition with the error 'sampleOverrun'. + + A frequency of 0 indicates instantaneous recognition of the + condition. This is not possible in many cases, but may + be supported in cases where it makes sense and the system is + able to do so. This feature allows the MIB to be used in + implementations where such interrupt-driven behavior is + possible and is not likely to be supported for all MIB objects + even then since such sampling generally has to be tightly + integrated into low-level code. + + Systems that can support this SHOULD document those cases + where it can be used. In cases where it can not, setting this + object to 0 should be disallowed." + DEFVAL { 600 } + ::= { mteTriggerEntry 11 } + +mteTriggerObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "To go with mteTriggerObjects, the mteOwner of a group of + objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerEntry 12 } + +mteTriggerObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger. + + A list of objects may also be added based on the event or on + the value of mteTriggerTest. + + + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerEntry 13 } + +mteTriggerEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control to allow a trigger to be configured but not used. + When the value is 'false' the trigger is not sampled." + DEFVAL { false } + ::= { mteTriggerEntry 14 } + +mteTriggerEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry may not be modified except to + delete it." + ::= { mteTriggerEntry 15 } + +-- +-- Trigger Delta Table +-- + +mteTriggerDeltaTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerDeltaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for delta + sampling." + ::= { mteTrigger 3 } + +mteTriggerDeltaEntry OBJECT-TYPE + SYNTAX MteTriggerDeltaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single trigger's delta sampling. Entries + automatically exist in this this table for each mteTriggerEntry + that has mteTriggerSampleType set to 'deltaValue'." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerDeltaTable 1 } + + + +MteTriggerDeltaEntry ::= SEQUENCE { + mteTriggerDeltaDiscontinuityID OBJECT IDENTIFIER, + mteTriggerDeltaDiscontinuityIDWildcard TruthValue, + mteTriggerDeltaDiscontinuityIDType INTEGER +} + +sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } + +mteTriggerDeltaDiscontinuityID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or + DateAndTime object that indicates a discontinuity in the value + at mteTriggerValueID. + + The OID may be for a leaf object (e.g. sysUpTime.0) or may + be wildcarded to match mteTriggerValueID. + + This object supports normal checking for a discontinuity in a + counter. Note that if this object does not point to sysUpTime + discontinuity checking MUST still check sysUpTime for an overall + discontinuity. + + If the object identified is not accessible the sample attempt + is in error, with the error code as from an SNMP request. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteDeltaDiscontinuityIDWildcard + result in operation as one would expect when providing the + wrong identifier to a Get operation. The Get will fail or get + the wrong object. If the value syntax of those objects is not + usable, that results in an error that terminates the sample + with a 'badType' error code." + DEFVAL { sysUpTimeInstance } + ::= { mteTriggerDeltaEntry 1 } + +mteTriggerDeltaDiscontinuityIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether mteTriggerDeltaDiscontinuityID is to be + treated as fully-specified or wildcarded, with 'true' + indicating wildcard. Note that the value of this object will + be the same as that of the corresponding instance of + mteTriggerValueIDWildcard when the corresponding + + + mteTriggerSampleType is 'deltaValue'." + DEFVAL { false } + ::= { mteTriggerDeltaEntry 2 } + +mteTriggerDeltaDiscontinuityIDType OBJECT-TYPE + SYNTAX INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value 'timeTicks' indicates the + mteTriggerDeltaDiscontinuityID of this row is of syntax + TimeTicks. The value 'timeStamp' indicates syntax TimeStamp. + The value 'dateAndTime' indicates syntax DateAndTime." + DEFVAL { timeTicks } + ::= { mteTriggerDeltaEntry 3 } + +-- +-- Trigger Existence Table +-- + +mteTriggerExistenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerExistenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for existence + triggers." + ::= { mteTrigger 4 } + +mteTriggerExistenceEntry OBJECT-TYPE + SYNTAX MteTriggerExistenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single existence trigger. Entries + automatically exist in this this table for each mteTriggerEntry + that has 'existence' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerExistenceTable 1 } + +MteTriggerExistenceEntry ::= SEQUENCE { + mteTriggerExistenceTest BITS, + mteTriggerExistenceStartup BITS, + mteTriggerExistenceObjectsOwner SnmpAdminString, + mteTriggerExistenceObjects SnmpAdminString, + mteTriggerExistenceEventOwner SnmpAdminString, + mteTriggerExistenceEvent SnmpAdminString +} + + +mteTriggerExistenceTest OBJECT-TYPE + SYNTAX BITS { present(0), absent(1), changed(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of existence test to perform. The trigger fires + when the object at mteTriggerValueID is seen to go from + present to absent, from absent to present, or to have it's + value changed, depending on which tests are selected: + + present(0) - when this test is selected, the trigger fires + when the mteTriggerValueID object goes from absent to present. + + absent(1) - when this test is selected, the trigger fires + when the mteTriggerValueID object goes from present to absent. + changed(2) - when this test is selected, the trigger fires + the mteTriggerValueID object value changes. + + Once the trigger has fired for either presence or absence it + will not fire again for that state until the object has been + to the other state. " + DEFVAL { { present, absent } } + ::= { mteTriggerExistenceEntry 1 } + +mteTriggerExistenceStartup OBJECT-TYPE + SYNTAX BITS { present(0), absent(1) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether an event may be triggered when this entry + is first set to 'active' and the test specified by + mteTriggerExistenceTest is true. Setting an option causes + that trigger to fire when its test is true." + DEFVAL { { present, absent } } + ::= { mteTriggerExistenceEntry 2 } + +mteTriggerExistenceObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerExistenceObjects, the mteOwner of a + group of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 3 } + +mteTriggerExistenceObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 4 } + +mteTriggerExistenceEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerExistenceEvent, the mteOwner of an event + entry from the mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 5 } + +mteTriggerExistenceEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'existence' and this trigger fires. A length of 0 indicates no + event." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 6 } + +-- +-- Trigger Boolean Table +-- + +mteTriggerBooleanTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerBooleanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for boolean + triggers." + ::= { mteTrigger 5 } + + +mteTriggerBooleanEntry OBJECT-TYPE + SYNTAX MteTriggerBooleanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single boolean trigger. Entries + automatically exist in this this table for each mteTriggerEntry + that has 'boolean' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerBooleanTable 1 } + +MteTriggerBooleanEntry ::= SEQUENCE { + mteTriggerBooleanComparison INTEGER, + mteTriggerBooleanValue Integer32, + mteTriggerBooleanStartup TruthValue, + mteTriggerBooleanObjectsOwner SnmpAdminString, + mteTriggerBooleanObjects SnmpAdminString, + mteTriggerBooleanEventOwner SnmpAdminString, + mteTriggerBooleanEvent SnmpAdminString +} + +mteTriggerBooleanComparison OBJECT-TYPE + SYNTAX INTEGER { unequal(1), equal(2), + less(3), lessOrEqual(4), + greater(5), greaterOrEqual(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of boolean comparison to perform. + + The value at mteTriggerValueID is compared to + mteTriggerBooleanValue, so for example if + mteTriggerBooleanComparison is 'less' the result would be true + if the value at mteTriggerValueID is less than the value of + mteTriggerBooleanValue." + DEFVAL { unequal } + ::= { mteTriggerBooleanEntry 1 } + +mteTriggerBooleanValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value to use for the test specified by + mteTriggerBooleanTest." + DEFVAL { 0 } + ::= { mteTriggerBooleanEntry 2 } + + + +mteTriggerBooleanStartup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether an event may be triggered when this entry + is first set to 'active' or a new instance of the object at + mteTriggerValueID is found and the test specified by + mteTriggerBooleanComparison is true. In that case an event is + triggered if mteTriggerBooleanStartup is 'true'." + DEFVAL { true } + ::= { mteTriggerBooleanEntry 3 } + +mteTriggerBooleanObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerBooleanObjects, the mteOwner of a group + of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 4 } + +mteTriggerBooleanObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 5 } + +mteTriggerBooleanEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerBooleanEvent, the mteOwner of an event + entry from mteEventTable." + DEFVAL { ''H } + + + ::= { mteTriggerBooleanEntry 6 } + +mteTriggerBooleanEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'boolean' and this trigger fires. A length of 0 indicates no + event." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 7 } + +-- +-- Trigger Threshold Table +-- + +mteTriggerThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerThresholdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for threshold + triggers." + ::= { mteTrigger 6 } + +mteTriggerThresholdEntry OBJECT-TYPE + SYNTAX MteTriggerThresholdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single threshold trigger. Entries + automatically exist in this table for each mteTriggerEntry + that has 'threshold' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerThresholdTable 1 } + +MteTriggerThresholdEntry ::= SEQUENCE { + mteTriggerThresholdStartup INTEGER, + mteTriggerThresholdRising Integer32, + mteTriggerThresholdFalling Integer32, + mteTriggerThresholdDeltaRising Integer32, + mteTriggerThresholdDeltaFalling Integer32, + mteTriggerThresholdObjectsOwner SnmpAdminString, + mteTriggerThresholdObjects SnmpAdminString, + mteTriggerThresholdRisingEventOwner SnmpAdminString, + mteTriggerThresholdRisingEvent SnmpAdminString, + mteTriggerThresholdFallingEventOwner SnmpAdminString, + + + mteTriggerThresholdFallingEvent SnmpAdminString, + mteTriggerThresholdDeltaRisingEventOwner SnmpAdminString, + mteTriggerThresholdDeltaRisingEvent SnmpAdminString, + mteTriggerThresholdDeltaFallingEventOwner SnmpAdminString, + mteTriggerThresholdDeltaFallingEvent SnmpAdminString +} + +mteTriggerThresholdStartup OBJECT-TYPE + SYNTAX INTEGER { rising(1), falling(2), risingOrFalling(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The event that may be triggered when this entry is first + set to 'active' and a new instance of the object at + mteTriggerValueID is found. If the first sample after this + instance becomes active is greater than or equal to + mteTriggerThresholdRising and mteTriggerThresholdStartup is + equal to 'rising' or 'risingOrFalling', then one + mteTriggerThresholdRisingEvent is triggered for that instance. + If the first sample after this entry becomes active is less + than or equal to mteTriggerThresholdFalling and + mteTriggerThresholdStartup is equal to 'falling' or + 'risingOrFalling', then one mteTriggerThresholdRisingEvent is + triggered for that instance." + DEFVAL { risingOrFalling } + ::= { mteTriggerThresholdEntry 1 } + +mteTriggerThresholdRising OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, one + mteTriggerThresholdRisingEvent is triggered. That event is + also triggered if the first sample after this entry becomes + active is greater than or equal to this threshold and + mteTriggerThresholdStartup is equal to 'rising' or + 'risingOrFalling'. + + After a rising event is generated, another such event is not + triggered until the sampled value falls below this threshold + and reaches mteTriggerThresholdFalling." + DEFVAL { 0 } + + + ::= { mteTriggerThresholdEntry 2 } + +mteTriggerThresholdFalling OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, one + mteTriggerThresholdFallingEvent is triggered. That event is + also triggered if the first sample after this entry becomes + active is less than or equal to this threshold and + mteTriggerThresholdStartup is equal to 'falling' or + 'risingOrFalling'. + + After a falling event is generated, another such event is not + triggered until the sampled value rises above this threshold + and reaches mteTriggerThresholdRising." + DEFVAL { 0 } + ::= { mteTriggerThresholdEntry 3 } + +mteTriggerThresholdDeltaRising OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the delta value (difference) between the current sampled + value (value(n)) and the previous sampled value (value(n-1)) + is greater than or equal to this threshold, + and the delta value calculated at the last sampling interval + (i.e. value(n-1) - value(n-2)) was less than this threshold, + one mteTriggerThresholdDeltaRisingEvent is triggered. That event + is also triggered if the first delta value calculated after this + entry becomes active, i.e. value(2) - value(1), where value(1) + is the first sample taken of that instance, is greater than or + equal to this threshold. + + After a rising event is generated, another such event is not + triggered until the delta value falls below this threshold and + reaches mteTriggerThresholdDeltaFalling." + DEFVAL { 0 } + + + ::= { mteTriggerThresholdEntry 4 } + +mteTriggerThresholdDeltaFalling OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the delta value (difference) between the current sampled + value (value(n)) and the previous sampled value (value(n-1)) + is less than or equal to this threshold, + and the delta value calculated at the last sampling interval + (i.e. value(n-1) - value(n-2)) was greater than this threshold, + one mteTriggerThresholdDeltaFallingEvent is triggered. That event + is also triggered if the first delta value calculated after this + entry becomes active, i.e. value(2) - value(1), where value(1) + is the first sample taken of that instance, is less than or + equal to this threshold. + + After a falling event is generated, another such event is not + triggered until the delta value falls below this threshold and + reaches mteTriggerThresholdDeltaRising." + DEFVAL { 0 } + ::= { mteTriggerThresholdEntry 5 } + +mteTriggerThresholdObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdObjects, the mteOwner of a group + of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 6 } + +mteTriggerThresholdObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + + + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 7 } + +mteTriggerThresholdRisingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdRisingEvent, the mteOwner of an + event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 8 } + +mteTriggerThresholdRisingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdRising. A length of 0 indicates no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 9 } + +mteTriggerThresholdFallingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdFallingEvent, the mteOwner of an + event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 10 } + +mteTriggerThresholdFallingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdFalling. A length of 0 indicates no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 11 } + + + +mteTriggerThresholdDeltaRisingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdDeltaRisingEvent, the mteOwner + of an event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 12 } + +mteTriggerThresholdDeltaRisingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdDeltaRising. A length of 0 indicates + no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 13 } + +mteTriggerThresholdDeltaFallingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdDeltaFallingEvent, the mteOwner + of an event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 14 } + +mteTriggerThresholdDeltaFallingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdDeltaFalling. A length of 0 indicates + no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 15 } + +-- +-- Objects Table +-- + + + +mteObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that can be added to notifications based + on the trigger, trigger test, or event, as pointed to by + entries in those tables." + ::= { mteObjects 1 } + +mteObjectsEntry OBJECT-TYPE + SYNTAX MteObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A group of objects. Applications create and delete entries + using mteObjectsEntryStatus. + + When adding objects to a notification they are added in the + lexical order of their index in this table. Those associated + with a trigger come first, then trigger test, then event." + INDEX { mteOwner, mteObjectsName, mteObjectsIndex } + ::= { mteObjectsTable 1 } + +MteObjectsEntry ::= SEQUENCE { + mteObjectsName SnmpAdminString, + mteObjectsIndex Unsigned32, + mteObjectsID OBJECT IDENTIFIER, + mteObjectsIDWildcard TruthValue, + mteObjectsEntryStatus RowStatus + } + +mteObjectsName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for a group + of objects." + ::= { mteObjectsEntry 1 } + +mteObjectsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer for the purpose of identifying + individual objects within a mteObjectsName group. + + + Objects within a group are placed in the notification in the + numerical order of this index. + + Groups are placed in the notification in the order of the + selections for overall trigger, trigger test, and event. + Within trigger test they are in the same order as the + numerical values of the bits defined for mteTriggerTest. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteDeltaDiscontinuityIDWildcard + result in operation as one would expect when providing the + wrong identifier to a Get operation. The Get will fail or get + the wrong object. If the object is not available it is omitted + from the notification." + ::= { mteObjectsEntry 2 } + +mteObjectsID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of a MIB object to add to a + Notification that results from the firing of a trigger. + + This may be wildcarded by truncating all or part of the + instance portion, in which case the instance portion of the + OID for obtaining this object will be the same as that used + in obtaining the mteTriggerValueID that fired. If such + wildcarding is applied, mteObjectsIDWildcard must be + 'true' and if not it must be 'false'. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time." + DEFVAL { zeroDotZero } + ::= { mteObjectsEntry 3 } + +mteObjectsIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteObjectsID is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteObjectsEntry 4 } + + +mteObjectsEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry MAY not be modified except to + delete it." + ::= { mteObjectsEntry 5 } + +-- +-- Event Section +-- + +-- Counters + +mteEventFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an attempt to invoke an event + has failed. This counts individually for each + attempt in a group of targets or each attempt for a + wildcarded trigger object." + ::= { mteEvent 1 } + +-- +-- Event Table +-- + +mteEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event action information." + ::= { mteEvent 2 } + +mteEventEntry OBJECT-TYPE + SYNTAX MteEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single event. Applications create and + delete entries using mteEventEntryStatus." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventTable 1 } + + +MteEventEntry ::= SEQUENCE { + mteEventName SnmpAdminString, + mteEventComment SnmpAdminString, + mteEventActions BITS, + mteEventEnabled TruthValue, + mteEventEntryStatus RowStatus + } + +mteEventName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for the + event." + ::= { mteEventEntry 1 } + +mteEventComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the event's function and use." + DEFVAL { ''H } + ::= { mteEventEntry 2 } + +mteEventActions OBJECT-TYPE + SYNTAX BITS { notification(0), set(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The actions to perform when this event occurs. + + For 'notification', Traps and/or Informs are sent according + to the configuration in the SNMP Notification MIB. + + For 'set', an SNMP Set operation is performed according to + control values in this entry." + DEFVAL { {} } -- No bits set. + ::= { mteEventEntry 3 } + +mteEventEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control to allow an event to be configured but not used. + When the value is 'false' the event does not execute even if + + + triggered." + DEFVAL { false } + ::= { mteEventEntry 4 } + +mteEventEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry MAY not be modified except to + delete it." + ::= { mteEventEntry 5 } + +-- +-- Event Notification Table +-- + +mteEventNotificationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventNotificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about notifications to be sent as a + consequence of management events." + ::= { mteEvent 3 } + +mteEventNotificationEntry OBJECT-TYPE + SYNTAX MteEventNotificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single event's notification. Entries + automatically exist in this this table for each mteEventEntry + that has 'notification' set in mteEventActions." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventNotificationTable 1 } + +MteEventNotificationEntry ::= SEQUENCE { + mteEventNotification OBJECT IDENTIFIER, + mteEventNotificationObjectsOwner SnmpAdminString, + mteEventNotificationObjects SnmpAdminString + } + +mteEventNotification OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "The object identifier from the NOTIFICATION-TYPE for the + notification to use if metEventActions has 'notification' set." + DEFVAL { zeroDotZero } + ::= { mteEventNotificationEntry 1 } + +mteEventNotificationObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteEventNotificationObjects, the mteOwner of a + group of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteEventNotificationEntry 2 } + +mteEventNotificationObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable if mteEventActions has 'notification' set. + These objects are to be added to any Notification generated by + this event. + + Objects may also be added based on the trigger that stimulated + the event. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteEventNotificationEntry 3 } + +-- +-- Event Set Table +-- + +mteEventSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event action information." + ::= { mteEvent 4 } + +mteEventSetEntry OBJECT-TYPE + SYNTAX MteEventSetEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "Information about a single event's set option. Entries + automatically exist in this this table for each mteEventEntry + that has 'set' set in mteEventActions." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventSetTable 1 } + +MteEventSetEntry ::= SEQUENCE { + mteEventSetObject OBJECT IDENTIFIER, + mteEventSetObjectWildcard TruthValue, + mteEventSetValue Integer32, + mteEventSetTargetTag SnmpTagValue, + mteEventSetContextName SnmpAdminString, + mteEventSetContextNameWildcard TruthValue + } + +mteEventSetObject OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The object identifier from the MIB object to set if + mteEventActions has 'set' set. + + This object identifier may be wildcarded by leaving + sub-identifiers off the end, in which case + nteEventSetObjectWildCard must be 'true'. + + If mteEventSetObject is wildcarded the instance used to set the + object to which it points is the same as the instance from the + value of mteTriggerValueID that triggered the event. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteSetObjectWildcard + result in operation as one would expect when providing the + wrong identifier to a Set operation. The Set will fail or set + the wrong object. If the value syntax of the destination + object is not correct, the Set fails with the normal SNMP + error code." + DEFVAL { zeroDotZero } + ::= { mteEventSetEntry 1 } + + +mteEventSetObjectWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control over whether mteEventSetObject is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard + if mteEventActions has 'set' set." + DEFVAL { false } + ::= { mteEventSetEntry 2 } + +mteEventSetValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value to which to set the object at mteEventSetObject + if mteEventActions has 'set' set." + DEFVAL { 0 } + ::= { mteEventSetEntry 3 } + +mteEventSetTargetTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The tag for the target(s) at which to set the object at + mteEventSetObject to mteEventSetValue if mteEventActions + has 'set' set. + + Systems limited to self management MAY reject a non-zero + length for the value of this object. + + A length of 0 indicates the local system. In this case, + access to the objects indicated by mteEventSetObject is under + the security credentials of the requester that set + mteTriggerEntryStatus to 'active'. Those credentials are the + input parameters for isAccessAllowed from the Architecture for + Describing SNMP Management Frameworks. + + Otherwise access rights are checked according to the security + parameters resulting from the tag." + DEFVAL { ''H } + ::= { mteEventSetEntry 4 } + +mteEventSetContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + + + STATUS current + DESCRIPTION + "The management context in which to set mteEventObjectID. + if mteEventActions has 'set' set. + + This may be wildcarded by leaving characters off the end. To + indicate such wildcarding mteEventSetContextNameWildcard must + be 'true'. + + If this context name is wildcarded the value used to complete + the wildcarding of mteTriggerContextName will be appended." + DEFVAL { ''H } + ::= { mteEventSetEntry 5 } + +mteEventSetContextNameWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether mteEventSetContextName is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard + if mteEventActions has 'set' set." + DEFVAL { false } + ::= { mteEventSetEntry 6 } + +-- +-- Notifications +-- + +dismanEventMIBNotificationPrefix OBJECT IDENTIFIER ::= + { dismanEventMIB 2 } +dismanEventMIBNotifications OBJECT IDENTIFIER ::= + { dismanEventMIBNotificationPrefix 0 } +dismanEventMIBNotificationObjects OBJECT IDENTIFIER + ::= { dismanEventMIBNotificationPrefix 1 } + +-- +-- Notification Objects +-- + +mteHotTrigger OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The name of the trigger causing the notification." + ::= { dismanEventMIBNotificationObjects 1 } + + + +mteHotTargetName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The SNMP Target MIB's snmpTargetAddrName related to the + notification." + ::= { dismanEventMIBNotificationObjects 2 } + +mteHotContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The context name related to the notification. This MUST be as + fully-qualified as possible, including filling in wildcard + information determined in processing." + ::= { dismanEventMIBNotificationObjects 3 } + +mteHotOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The object identifier of the destination object related to the + notification. This MUST be as fully-qualified as possible, + including filling in wildcard information determined in + processing. + + For a trigger-related notification this is from + mteTriggerValueID. + + For a set failure this is from mteEventSetObject." + ::= { dismanEventMIBNotificationObjects 4 } + +mteHotValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The value of the object at mteTriggerValueID when a + trigger fired." + ::= { dismanEventMIBNotificationObjects 5 } + +mteFailedReason OBJECT-TYPE + SYNTAX FailureReason + MAX-ACCESS accessible-for-notify + STATUS current + + + DESCRIPTION + "The reason for the failure of an attempt to check for a + trigger condition or set an object in response to an event." + ::= { dismanEventMIBNotificationObjects 6 } + +-- +-- Notifications +-- + +mteTriggerFired NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the trigger indicated by the object + instances has fired, for triggers with mteTriggerType + 'boolean' or 'existence'." + ::= { dismanEventMIBNotifications 1 } + +mteTriggerRising NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the rising threshold was met for triggers + with mteTriggerType 'threshold'." + ::= { dismanEventMIBNotifications 2 } + +mteTriggerFalling NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the falling threshold was met for triggers + with mteTriggerType 'threshold'." + ::= { dismanEventMIBNotifications 3 } + +mteTriggerFailure NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + + + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteFailedReason } + STATUS current + DESCRIPTION + "Notification that an attempt to check a trigger has failed. + + The network manager must enable this notification only with + a certain fear and trembling, as it can easily crowd out more + important information. It should be used only to help diagnose + a problem that has appeared in the error counters and can not + be found otherwise." + ::= { dismanEventMIBNotifications 4 } + +mteEventSetFailure NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteFailedReason } + STATUS current + DESCRIPTION + "Notification that an attempt to do a set in response to an + event has failed. + + The network manager must enable this notification only with + a certain fear and trembling, as it can easily crowd out more + important information. It should be used only to help diagnose + a problem that has appeared in the error counters and can not + be found otherwise." + ::= { dismanEventMIBNotifications 5 } + +-- +-- Conformance +-- + +dismanEventMIBConformance OBJECT IDENTIFIER ::= { dismanEventMIB 3 } +dismanEventMIBCompliances OBJECT IDENTIFIER ::= + { dismanEventMIBConformance 1 } +dismanEventMIBGroups OBJECT IDENTIFIER ::= + { dismanEventMIBConformance 2 } + +-- Compliance + +dismanEventMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + "The compliance statement for entities which implement + the Event MIB." + MODULE -- this module + MANDATORY-GROUPS { + dismanEventResourceGroup, + dismanEventTriggerGroup, + dismanEventObjectsGroup, + dismanEventEventGroup, + dismanEventNotificationObjectGroup, + dismanEventNotificationGroup + } + + OBJECT mteTriggerTargetTag + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus limiting + monitoring to the local system or pre-configured + remote systems." + + OBJECT mteEventSetTargetTag + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus limiting + setting to the local system or pre-configured + remote systems." + + OBJECT mteTriggerValueIDWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + OBJECT mteTriggerContextNameWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + + OBJECT mteObjectsIDWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + OBJECT mteEventSetContextNameWildcard + MIN-ACCESS read-only + DESCRIPTION + + + "Write access is not required, thus allowing + the system not to implement wildcarding." + + ::= { dismanEventMIBCompliances 1 } + +-- Units of Conformance + +dismanEventResourceGroup OBJECT-GROUP + OBJECTS { + mteResourceSampleMinimum, + mteResourceSampleInstanceMaximum, + mteResourceSampleInstances, + mteResourceSampleInstancesHigh, + mteResourceSampleInstanceLacks + } + STATUS current + DESCRIPTION + "Event resource status and control objects." + ::= { dismanEventMIBGroups 1 } + +dismanEventTriggerGroup OBJECT-GROUP + OBJECTS { + mteTriggerFailures, + + mteTriggerComment, + mteTriggerTest, + mteTriggerSampleType, + mteTriggerValueID, + mteTriggerValueIDWildcard, + mteTriggerTargetTag, + mteTriggerContextName, + mteTriggerContextNameWildcard, + mteTriggerFrequency, + mteTriggerObjectsOwner, + mteTriggerObjects, + mteTriggerEnabled, + mteTriggerEntryStatus, + + mteTriggerDeltaDiscontinuityID, + mteTriggerDeltaDiscontinuityIDWildcard, + mteTriggerDeltaDiscontinuityIDType, + mteTriggerExistenceTest, + mteTriggerExistenceStartup, + mteTriggerExistenceObjectsOwner, + mteTriggerExistenceObjects, + mteTriggerExistenceEventOwner, + mteTriggerExistenceEvent, + + + + mteTriggerBooleanComparison, + mteTriggerBooleanValue, + mteTriggerBooleanStartup, + mteTriggerBooleanObjectsOwner, + mteTriggerBooleanObjects, + mteTriggerBooleanEventOwner, + mteTriggerBooleanEvent, + + mteTriggerThresholdStartup, + mteTriggerThresholdObjectsOwner, + mteTriggerThresholdObjects, + mteTriggerThresholdRising, + mteTriggerThresholdFalling, + mteTriggerThresholdDeltaRising, + mteTriggerThresholdDeltaFalling, + mteTriggerThresholdRisingEventOwner, + mteTriggerThresholdRisingEvent, + mteTriggerThresholdFallingEventOwner, + mteTriggerThresholdFallingEvent, + mteTriggerThresholdDeltaRisingEventOwner, + mteTriggerThresholdDeltaRisingEvent, + mteTriggerThresholdDeltaFallingEventOwner, + mteTriggerThresholdDeltaFallingEvent + } + STATUS current + DESCRIPTION + "Event triggers." + ::= { dismanEventMIBGroups 2 } + +dismanEventObjectsGroup OBJECT-GROUP + OBJECTS { + mteObjectsID, + mteObjectsIDWildcard, + mteObjectsEntryStatus + } + STATUS current + DESCRIPTION + "Supplemental objects." + ::= { dismanEventMIBGroups 3 } + +dismanEventEventGroup OBJECT-GROUP + OBJECTS { + mteEventFailures, + + mteEventComment, + mteEventActions, + mteEventEnabled, + mteEventEntryStatus, + + + mteEventNotification, + mteEventNotificationObjectsOwner, + mteEventNotificationObjects, + + mteEventSetObject, + mteEventSetObjectWildcard, + mteEventSetValue, + mteEventSetTargetTag, + mteEventSetContextName, + mteEventSetContextNameWildcard + } + STATUS current + DESCRIPTION + "Events." + ::= { dismanEventMIBGroups 4 } + +dismanEventNotificationObjectGroup OBJECT-GROUP + OBJECTS { + mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue, + mteFailedReason + } + STATUS current + DESCRIPTION + "Notification objects." + ::= { dismanEventMIBGroups 5 } + +dismanEventNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mteTriggerFired, + mteTriggerRising, + mteTriggerFalling, + mteTriggerFailure, + mteEventSetFailure + } + STATUS current + DESCRIPTION + "Notifications." + ::= { dismanEventMIBGroups 6 } + +END diff --git a/mibs/ietf/DISMAN-EXPRESSION-MIB b/mibs/ietf/DISMAN-EXPRESSION-MIB new file mode 100644 index 0000000..ad9dba3 --- /dev/null +++ b/mibs/ietf/DISMAN-EXPRESSION-MIB @@ -0,0 +1,1227 @@ +DISMAN-EXPRESSION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Gauge32, Unsigned32, + Counter32, Counter64, IpAddress, + TimeTicks, mib-2, zeroDotZero FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp FROM SNMPv2-TC + sysUpTime FROM SNMPv2-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +dismanExpressionMIB MODULE-IDENTITY + LAST-UPDATED "200010160000Z" -- 16 October 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 527 2446 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for defining expressions of MIB objects for + management purposes." +-- Revision History + + REVISION "200010160000Z" -- 16 October 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 2982" + ::= { mib-2 90 } + + +dismanExpressionMIBObjects OBJECT IDENTIFIER ::= + { dismanExpressionMIB 1 } + +expResource OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 1 } +expDefine OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 2 } +expValue OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 3 } + +-- +-- Resource Control +-- + + + +expResourceDeltaMinimum OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum expExpressionDeltaInterval this system will + accept. A system may use the larger values of this minimum to + lessen the impact of constantly computing deltas. For larger + delta sampling intervals the system samples less often and + suffers less overhead. This object provides a way to enforce + such lower overhead for all expressions created after it is + set. + + The value -1 indicates that expResourceDeltaMinimum is + irrelevant as the system will not accept 'deltaValue' as a + value for expObjectSampleType. + + Unless explicitly resource limited, a system's value for + this object should be 1, allowing as small as a 1 second + interval for ongoing delta sampling. + + Changing this value will not invalidate an existing setting + of expObjectSampleType." + ::= { expResource 1 } + +expResourceDeltaWildcardInstanceMaximum OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "instances" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "For every instance of a deltaValue object, one dynamic instance + entry is needed for holding the instance value from the previous + sample, i.e. to maintain state. + + This object limits maximum number of dynamic instance entries + this system will support for wildcarded delta objects in + expressions. For a given delta expression, the number of + dynamic instances is the number of values that meet all criteria + to exist times the number of delta values in the expression. + + A value of 0 indicates no preset limit, that is, the limit + is dynamic based on system operation and resources. + + Unless explicitly resource limited, a system's value for + this object should be 0. + + + + Changing this value will not eliminate or inhibit existing delta + wildcard instance objects but will prevent the creation of more + such objects. + + An attempt to allocate beyond the limit results in expErrorCode + being tooManyWildcardValues for that evaluation attempt." + ::= { expResource 2 } + +expResourceDeltaWildcardInstances OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active instance entries as + defined for expResourceDeltaWildcardInstanceMaximum." + ::= { expResource 3 } + +expResourceDeltaWildcardInstancesHigh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest value of expResourceDeltaWildcardInstances + that has occurred since initialization of the managed + system." + ::= { expResource 4 } + +expResourceDeltaWildcardInstanceResourceLacks OBJECT-TYPE + SYNTAX Counter32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this system could not evaluate an + expression because that would have created a value instance in + excess of expResourceDeltaWildcardInstanceMaximum." + ::= { expResource 5 } + +-- + +-- Definition +-- +-- Expression Definition Table +-- + +expExpressionTable OBJECT-TYPE + + + SYNTAX SEQUENCE OF ExpExpressionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of expression definitions." + ::= { expDefine 1 } + +expExpressionEntry OBJECT-TYPE + SYNTAX ExpExpressionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single expression. New expressions + can be created using expExpressionRowStatus. + + To create an expression first create the named entry in this + table. Then use expExpressionName to populate expObjectTable. + For expression evaluation to succeed all related entries in + expExpressionTable and expObjectTable must be 'active'. If + these conditions are not met the corresponding values in + expValue simply are not instantiated. + + Deleting an entry deletes all related entries in expObjectTable + and expErrorTable. + + Because of the relationships among the multiple tables for an + expression (expExpressionTable, expObjectTable, and + expValueTable) and the SNMP rules for independence in setting + object values, it is necessary to do final error checking when + an expression is evaluated, that is, when one of its instances + in expValueTable is read or a delta interval expires. Earlier + checking need not be done and an implementation may not impose + any ordering on the creation of objects related to an + expression. + + To maintain security of MIB information, when creating a new row in + this table, the managed system must record the security credentials + of the requester. These security credentials are the parameters + necessary as inputs to isAccessAllowed from the Architecture for + + Describing SNMP Management Frameworks. When obtaining the objects + that make up the expression, the system must (conceptually) use + isAccessAllowed to ensure that it does not violate security. + + The evaluation of the expression takes place under the + security credentials of the creator of its expExpressionEntry. + + Values of read-write objects in this table may be changed + + + at any time." + INDEX { expExpressionOwner, expExpressionName } + ::= { expExpressionTable 1 } + +ExpExpressionEntry ::= SEQUENCE { + expExpressionOwner SnmpAdminString, + expExpressionName SnmpAdminString, + expExpression OCTET STRING, + expExpressionValueType INTEGER, + expExpressionComment SnmpAdminString, + expExpressionDeltaInterval Integer32, + expExpressionPrefix OBJECT IDENTIFIER, + expExpressionErrors Counter32, + expExpressionEntryStatus RowStatus +} + +expExpressionOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The owner of this entry. The exact semantics of this + string are subject to the security policy defined by the + security administrator." + ::= { expExpressionEntry 1 } + +expExpressionName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the expression. This is locally unique, within + the scope of an expExpressionOwner." + ::= { expExpressionEntry 2 } + +expExpression OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expression to be evaluated. This object is the same + as a DisplayString (RFC 1903) except for its maximum length. + + Except for the variable names the expression is in ANSI C + syntax. Only the subset of ANSI C operators and functions + listed here is allowed. + + Variables are expressed as a dollar sign ('$') and an + + + integer that corresponds to an expObjectIndex. An + example of a valid expression is: + + ($1-$5)*100 + + Expressions must not be recursive, that is although an expression + may use the results of another expression, it must not contain + any variable that is directly or indirectly a result of its own + evaluation. The managed system must check for recursive + expressions. + + The only allowed operators are: + + ( ) + - (unary) + + - * / % + & | ^ << >> ~ + ! && || == != > >= < <= + + Note the parentheses are included for parenthesizing the + expression, not for casting data types. + + The only constant types defined are: + + int (32-bit signed) + long (64-bit signed) + unsigned int + unsigned long + hexadecimal + character + string + oid + + The default type for a positive integer is int unless it is too + large in which case it is long. + + All but oid are as defined for ANSI C. Note that a + hexadecimal constant may end up as a scalar or an array of + 8-bit integers. A string constant is enclosed in double + quotes and may contain back-slashed individual characters + as in ANSI C. + + An oid constant comprises 32-bit, unsigned integers and at + least one period, for example: + + 0. + .0 + 1.3.6.1 + + + No additional leading or trailing subidentifiers are automatically + added to an OID constant. The constant is taken as expressed. + + Integer-typed objects are treated as 32- or 64-bit, signed + or unsigned integers, as appropriate. The results of + mixing them are as for ANSI C, including the type of the + result. Note that a 32-bit value is thus promoted to 64 bits + only in an operation with a 64-bit value. There is no + provision for larger values to handle overflow. + + Relative to SNMP data types, a resulting value becomes + unsigned when calculating it uses any unsigned value, + including a counter. To force the final value to be of + data type counter the expression must explicitly use the + counter32() or counter64() function (defined below). + + OCTET STRINGS and OBJECT IDENTIFIERs are treated as + one-dimensioned arrays of unsigned 8-bit integers and + unsigned 32-bit integers, respectively. + + IpAddresses are treated as 32-bit, unsigned integers in + network byte order, that is, the hex version of 255.0.0.0 is + 0xff000000. + + Conditional expressions result in a 32-bit, unsigned integer + of value 0 for false or 1 for true. When an arbitrary value + is used as a boolean 0 is false and non-zero is true. + + Rules for the resulting data type from an operation, based on + the operator: + + For << and >> the result is the same as the left hand operand. + + For &&, ||, ==, !=, <, <=, >, and >= the result is always + Unsigned32. + + For unary - the result is always Integer32. + + For +, -, *, /, %, &, |, and ^ the result is promoted according + to the following rules, in order from most to least preferred: + + If left hand and right hand operands are the same type, + use that. + + If either side is Counter64, use that. + + If either side is IpAddress, use that. + + + + If either side is TimeTicks, use that. + + If either side is Counter32, use that. + + Otherwise use Unsigned32. + + The following rules say what operators apply with what data + types. Any combination not explicitly defined does not work. + + For all operators any of the following can be the left hand or + right hand operand: Integer32, Counter32, Unsigned32, Counter64. + + The operators +, -, *, /, %, <, <=, >, and >= work with + TimeTicks. + + The operators &, |, and ^ work with IpAddress. + + The operators << and >> work with IpAddress but only as the + left hand operand. + + The + operator performs a concatenation of two OCTET STRINGs or + two OBJECT IDENTIFIERs. + + The operators &, | perform bitwise operations on OCTET STRINGs. + If the OCTET STRING happens to be a DisplayString the results + may be meaningless, but the agent system does not check this as + some such systems do not have this information. + + The operators << and >> perform bitwise operations on OCTET + STRINGs appearing as the left hand operand. + + The only functions defined are: + + counter32 + counter64 + arraySection + stringBegins + stringEnds + stringContains + oidBegins + oidEnds + oidContains + average + maximum + minimum + sum + exists + + + + The following function definitions indicate their parameters by + naming the data type of the parameter in the parameter's position + in the parameter list. The parameter must be of the type indicated + and generally may be a constant, a MIB object, a function, or an + expression. + + counter32(integer) - wrapped around an integer value counter32 + forces Counter32 as a data type. + + counter64(integer) - similar to counter32 except that the + resulting data type is 'counter64'. + + arraySection(array, integer, integer) - selects a piece of an + array (i.e. part of an OCTET STRING or OBJECT IDENTIFIER). The + integer arguments are in the range 0 to 4,294,967,295. The + first is an initial array index (one-dimensioned) and the second + is an ending array index. A value of 0 indicates first or last + element, respectively. If the first element is larger than the + array length the result is 0 length. If the second integer is + less than or equal to the first, the result is 0 length. If the + second is larger than the array length it indicates last + element. + + stringBegins/Ends/Contains(octetString, octetString) - looks for + the second string (which can be a string constant) in the first + and returns the one-dimensioned arrayindex where the match began. + A return value of 0 indicates no match (i.e. boolean false). + + oidBegins/Ends/Contains(oid, oid) - looks for the second OID + (which can be an OID constant) in the first and returns the + the one-dimensioned index where the match began. A return value + of 0 indicates no match (i.e. boolean false). + + average/maximum/minimum(integer) - calculates the average, + minimum, or maximum value of the integer valued object over + multiple sample times. If the object disappears for any + sample period, the accumulation and the resulting value object + cease to exist until the object reappears at which point the + calculation starts over. + + sum(integerObject*) - sums all available values of the + wildcarded integer object, resulting in an integer scalar. Must + be used with caution as it wraps on overflow with no + notification. + + exists(anyTypeObject) - verifies the object instance exists. A + return value of 0 indicates NoSuchInstance (i.e. boolean + false)." + + + ::= { expExpressionEntry 3 } + +expExpressionValueType OBJECT-TYPE + SYNTAX INTEGER { counter32(1), unsigned32(2), timeTicks(3), + integer32(4), ipAddress(5), octetString(6), + objectId(7), counter64(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the expression value. One and only one of the + value objects in expValueTable will be instantiated to match + this type. + + If the result of the expression can not be made into this type, + an invalidOperandType error will occur." + DEFVAL { counter32 } + ::= { expExpressionEntry 4 } + +expExpressionComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment to explain the use or meaning of the expression." + DEFVAL { ''H } + ::= { expExpressionEntry 5 } + +expExpressionDeltaInterval OBJECT-TYPE + SYNTAX Integer32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sampling interval for objects in this expression with + expObjectSampleType 'deltaValue'. + + This object has no effect if the the expression has no + deltaValue objects. + + A value of 0 indicates no automated sampling. In this case + the delta is the difference from the last time the expression + was evaluated. Note that this is subject to unpredictable + delta times in the face of retries or multiple managers. + + A value greater than zero is the number of seconds between + automated samples. + + Until the delta interval has expired once the delta for the + + + object is effectively not instantiated and evaluating + the expression has results as if the object itself were not + instantiated. + + Note that delta values potentially consume large amounts of + system CPU and memory. Delta state and processing must + continue constantly even if the expression is not being used. + That is, the expression is being evaluated every delta interval, + even if no application is reading those values. For wildcarded + objects this can be substantial overhead. + + Note that delta intervals, external expression value sampling + intervals and delta intervals for expressions within other + expressions can have unusual interactions as they are impossible + to synchronize accurately. In general one interval embedded + below another must be enough shorter that the higher sample + sees relatively smooth, predictable behavior. So, for example, + to avoid the higher level getting the same sample twice, the + lower level should sample at least twice as fast as the higher + level does." + DEFVAL { 0 } + ::= { expExpressionEntry 6 } + +expExpressionPrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object prefix to assist an application in determining + the instance indexing to use in expValueTable, relieving the + application of the need to scan the expObjectTable to + determine such a prefix. + + See expObjectTable for information on wildcarded objects. + + If the expValueInstance portion of the value OID may + be treated as a scalar (that is, normally, 0) the value of + expExpressionPrefix is zero length, that is, no OID at all. + Note that zero length implies a null OID, not the OID 0.0. + + Otherwise, the value of expExpressionPrefix is the expObjectID + value of any one of the wildcarded objects for the expression. + This is sufficient, as the remainder, that is, the instance + fragment relevant to instancing the values, must be the same for + all wildcarded objects in the expression." + ::= { expExpressionEntry 7 } + +expExpressionErrors OBJECT-TYPE + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors encountered while evaluating this + expression. + + Note that an object in the expression not being accessible, + is not considered an error. An example of an inaccessible + object is when the object is excluded from the view of the + user whose security credentials are used in the expression + evaluation. In such cases, it is a legitimate condition + that causes the corresponding expression value not to be + instantiated." + ::= { expExpressionEntry 8 } + +expExpressionEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries." + ::= { expExpressionEntry 9 } + +-- +-- Expression Error Table +-- + +expErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of expression errors." + ::= { expDefine 2 } + +expErrorEntry OBJECT-TYPE + SYNTAX ExpErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about errors in processing an expression. + + Entries appear in this table only when there is a matching + expExpressionEntry and then only when there has been an + error for that expression as reflected by the error codes + defined for expErrorCode." + INDEX { expExpressionOwner, expExpressionName } + + + ::= { expErrorTable 1 } + +ExpErrorEntry ::= SEQUENCE { + expErrorTime TimeStamp, + expErrorIndex Integer32, + expErrorCode INTEGER, + expErrorInstance OBJECT IDENTIFIER +} + +expErrorTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime the last time an error caused a + failure to evaluate this expression." + ::= { expErrorEntry 1 } + +expErrorIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The one-dimensioned character array index into + expExpression for where the error occurred. The value + zero indicates irrelevance." + ::= { expErrorEntry 2 } + +expErrorCode OBJECT-TYPE + SYNTAX INTEGER { + invalidSyntax(1), + undefinedObjectIndex(2), + unrecognizedOperator(3), + unrecognizedFunction(4), + invalidOperandType(5), + unmatchedParenthesis(6), + tooManyWildcardValues(7), + recursion(8), + deltaTooShort(9), + resourceUnavailable(10), + divideByZero(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error that occurred. In the following explanations the + expected timing of the error is in parentheses. 'S' means + the error occurs on a Set request. 'E' means the error + + + occurs on the attempt to evaluate the expression either due to + Get from expValueTable or in ongoing delta processing. + + invalidSyntax the value sent for expExpression is not + valid Expression MIB expression syntax + (S) + undefinedObjectIndex an object reference ($n) in + expExpression does not have a matching + instance in expObjectTable (E) + unrecognizedOperator the value sent for expExpression held an + unrecognized operator (S) + unrecognizedFunction the value sent for expExpression held an + unrecognized function name (S) + invalidOperandType an operand in expExpression is not the + right type for the associated operator + or result (SE) + unmatchedParenthesis the value sent for expExpression is not + correctly parenthesized (S) + tooManyWildcardValues evaluating the expression exceeded the + limit set by + expResourceDeltaWildcardInstanceMaximum + (E) + recursion through some chain of embedded + expressions the expression invokes itself + (E) + deltaTooShort the delta for the next evaluation passed + before the system could evaluate the + present sample (E) + resourceUnavailable some resource, typically dynamic memory, + was unavailable (SE) + divideByZero an attempt to divide by zero occurred + (E) + + For the errors that occur when the attempt is made to set + expExpression Set request fails with the SNMP error code + 'wrongValue'. Such failures refer to the most recent failure to + Set expExpression, not to the present value of expExpression + which must be either unset or syntactically correct. + + Errors that occur during evaluation for a Get* operation return + the SNMP error code 'genErr' except for 'tooManyWildcardValues' + and 'resourceUnavailable' which return the SNMP error code + 'resourceUnavailable'." + ::= { expErrorEntry 3 } + +expErrorInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The expValueInstance being evaluated when the error + occurred. A zero-length indicates irrelevance." + ::= { expErrorEntry 4 } + +-- +-- Object Table +-- + +expObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of object definitions for each expExpression. + + Wildcarding instance IDs: + + It is legal to omit all or part of the instance portion for + some or all of the objects in an expression. (See the + DESCRIPTION of expObjectID for details. However, note that + if more than one object in the same expression is wildcarded + in this way, they all must be objects where that portion of + the instance is the same. In other words, all objects may be + in the same SEQUENCE or in different SEQUENCEs but with the + same semantic index value (e.g., a value of ifIndex) + for the wildcarded portion." + ::= { expDefine 3 } + +expObjectEntry OBJECT-TYPE + SYNTAX ExpObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an object. An application uses + expObjectEntryStatus to create entries in this table while + in the process of defining an expression. + + Values of read-create objects in this table may be + changed at any time." + INDEX { expExpressionOwner, expExpressionName, expObjectIndex } + ::= { expObjectTable 1 } + +ExpObjectEntry ::= SEQUENCE { + expObjectIndex Unsigned32, + expObjectID OBJECT IDENTIFIER, + expObjectIDWildcard TruthValue, + + + expObjectSampleType INTEGER, + expObjectDeltaDiscontinuityID OBJECT IDENTIFIER, + expObjectDiscontinuityIDWildcard TruthValue, + expObjectDiscontinuityIDType INTEGER, + expObjectConditional OBJECT IDENTIFIER, + expObjectConditionalWildcard TruthValue, + expObjectEntryStatus RowStatus +} + +expObjectIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Within an expression, a unique, numeric identification for an + object. Prefixed with a dollar sign ('$') this is used to + reference the object in the corresponding expExpression." + ::= { expObjectEntry 1 } + +expObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of this object. The OID may be + fully qualified, meaning it includes a complete instance + identifier part (e.g., ifInOctets.1 or sysUpTime.0), or it + may not be fully qualified, meaning it may lack all or part + of the instance identifier. If the expObjectID is not fully + qualified, then expObjectWildcard must be set to true(1). + The value of the expression will be multiple + values, as if done for a GetNext sweep of the object. + + An object here may itself be the result of an expression but + recursion is not allowed. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + ::= { expObjectEntry 2 } + +expObjectIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A true value indicates the expObjecID of this row is a wildcard + object. False indicates that expObjectID is fully instanced. + If all expObjectWildcard values for a given expression are FALSE, + + + expExpressionPrefix will reflect a scalar object (i.e. will + be 0.0). + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 3 } + +expObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2), + changedValue(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable. + + An 'absoluteValue' is simply the present value of the object. + + A 'deltaValue' is the present value minus the previous value, + which was sampled expExpressionDeltaInterval seconds ago. + This is intended primarily for use with SNMP counters, which are + meaningless as an 'absoluteValue', but may be used with any + integer-based value. + + A 'changedValue' is a boolean for whether the present value is + different from the previous value. It is applicable to any data + type and results in an Unsigned32 with value 1 if the object's + value is changed and 0 if not. In all other respects it is as a + 'deltaValue' and all statements and operation regarding delta + values apply to changed values. + + When an expression contains both delta and absolute values + the absolute values are obtained at the end of the delta + period." + DEFVAL { absoluteValue } + ::= { expObjectEntry 4 } + +sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } + +expObjectDeltaDiscontinuityID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or + DateAndTime object that indicates a discontinuity in the value + at expObjectID. + + + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'. + + The OID may be for a leaf object (e.g. sysUpTime.0) or may + be wildcarded to match expObjectID. + + This object supports normal checking for a discontinuity in a + counter. Note that if this object does not point to sysUpTime + discontinuity checking must still check sysUpTime for an overall + discontinuity. + + If the object identified is not accessible no discontinuity + check will be made." + DEFVAL { sysUpTimeInstance } + ::= { expObjectEntry 5 } + +expObjectDiscontinuityIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A true value indicates the expObjectDeltaDiscontinuityID of + this row is a wildcard object. False indicates that + expObjectDeltaDiscontinuityID is fully instanced. + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 6 } + +expObjectDiscontinuityIDType OBJECT-TYPE + SYNTAX INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value 'timeTicks' indicates the expObjectDeltaDiscontinuityID + of this row is of syntax TimeTicks. The value 'timeStamp' indicates + syntax TimeStamp. The value 'dateAndTime indicates syntax + DateAndTime. + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'." + DEFVAL { timeTicks } + ::= { expObjectEntry 7 } + + + +expObjectConditional OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of an object that overrides + whether the instance of expObjectID is to be considered + usable. If the value of the object at expObjectConditional + is 0 or not instantiated, the object at expObjectID is + treated as if it is not instantiated. In other words, + expObjectConditional is a filter that controls whether or + not to use the value at expObjectID. + + The OID may be for a leaf object (e.g. sysObjectID.0) or may be + wildcarded to match expObjectID. If expObject is wildcarded and + expObjectID in the same row is not, the wild portion of + expObjectConditional must match the wildcarding of the rest of + the expression. If no object in the expression is wildcarded + but expObjectConditional is, use the lexically first instance + (if any) of expObjectConditional. + + If the value of expObjectConditional is 0.0 operation is + as if the value pointed to by expObjectConditional is a + non-zero (true) value. + + Note that expObjectConditional can not trivially use an object + of syntax TruthValue, since the underlying value is not 0 or 1." + DEFVAL { zeroDotZero } + ::= { expObjectEntry 8 } + + expObjectConditionalWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "A true value indicates the expObjectConditional of this row is + a wildcard object. False indicates that expObjectConditional is + fully instanced. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 9 } + +expObjectEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The control that allows creation/deletion of entries. + + Objects in this table may be changed while + expObjectEntryStatus is in any state." + ::= { expObjectEntry 10 } + +-- +-- Expression Value Table +-- + +expValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of values from evaluated expressions." + ::= { expValue 1 } + +expValueEntry OBJECT-TYPE + SYNTAX ExpValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single value from an evaluated expression. For a given + instance, only one 'Val' object in the conceptual row will be + instantiated, that is, the one with the appropriate type for + the value. For values that contain no objects of + expObjectSampleType 'deltaValue' or 'changedValue', reading a + value from the table causes the evaluation of the expression + for that value. For those that contain a 'deltaValue' or + 'changedValue' the value read is as of the last sampling + interval. + + If in the attempt to evaluate the expression one or more + of the necessary objects is not available, the corresponding + entry in this table is effectively not instantiated. + + To maintain security of MIB information, when creating a new + row in this table, the managed system must record the security + credentials of the requester. These security credentials are + the parameters necessary as inputs to isAccessAllowed from + [RFC2571]. When obtaining the objects that make up the + expression, the system must (conceptually) use isAccessAllowed to + ensure that it does not violate security. + + The evaluation of that expression takes place under the + + + security credentials of the creator of its expExpressionEntry. + + To maintain security of MIB information, expression evaluation must + take place using security credentials for the implied Gets of the + objects in the expression as inputs (conceptually) to + isAccessAllowed from the Architecture for Describing SNMP + Management Frameworks. These are the security credentials of the + creator of the corresponding expExpressionEntry." + INDEX { expExpressionOwner, expExpressionName, + IMPLIED expValueInstance } + ::= { expValueTable 1 } + +ExpValueEntry ::= SEQUENCE { + expValueInstance OBJECT IDENTIFIER, + expValueCounter32Val Counter32, + expValueUnsigned32Val Unsigned32, + expValueTimeTicksVal TimeTicks, + expValueInteger32Val Integer32, + expValueIpAddressVal IpAddress, + expValueOctetStringVal OCTET STRING, + expValueOidVal OBJECT IDENTIFIER, + expValueCounter64Val Counter64 +} + +expValueInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The final instance portion of a value's OID according to + the wildcarding in instances of expObjectID for the + expression. The prefix of this OID fragment is 0.0, + leading to the following behavior. + + If there is no wildcarding, the value is 0.0.0. In other + words, there is one value which standing alone would have + been a scalar with a 0 at the end of its OID. + + If there is wildcarding, the value is 0.0 followed by + a value that the wildcard can take, thus defining one value + instance for each real, possible value of the wildcard. + So, for example, if the wildcard worked out to be an ifIndex, + there is an expValueInstance for each applicable ifIndex." + ::= { expValueEntry 1 } + +expValueCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'counter32'." + ::= { expValueEntry 2 } + +expValueUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'unsigned32'." + ::= { expValueEntry 3 } + +expValueTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'timeTicks'." + ::= { expValueEntry 4 } + +expValueInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'integer32'." + ::= { expValueEntry 5 } + +expValueIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'ipAddress'." + ::= { expValueEntry 6 } + +expValueOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING -- (SIZE (0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'octetString'." + ::= { expValueEntry 7 } + +expValueOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'objectId'." + ::= { expValueEntry 8 } + +expValueCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'counter64'." + ::= { expValueEntry 9 } + +-- +-- Conformance +-- + +dismanExpressionMIBConformance OBJECT IDENTIFIER ::= + { dismanExpressionMIB 3 } +dismanExpressionMIBCompliances OBJECT IDENTIFIER ::= + { dismanExpressionMIBConformance 1 } +dismanExpressionMIBGroups OBJECT IDENTIFIER ::= + { dismanExpressionMIBConformance 2 } + +-- Compliance + +dismanExpressionMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the Expression MIB." + MODULE -- this module + MANDATORY-GROUPS { + dismanExpressionResourceGroup, + dismanExpressionDefinitionGroup, + dismanExpressionValueGroup + } + + OBJECT expResourceDeltaMinimum + SYNTAX Integer32 (-1 | 60..600) + DESCRIPTION + "Implementation need not allow deltas or it may + implement them and restrict them to higher values." + + OBJECT expObjectSampleType + WRITE-SYNTAX INTEGER { absoluteValue(1) } + DESCRIPTION + "Implementation may disallow deltas calculation or + + + change detection." + + OBJECT expObjectIDWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation may allow wildcards." + + OBJECT expObjectDiscontinuityIDWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation need not allow wildcards." + + OBJECT expObjectConditionalWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation need not allow deltas wildcards." + + ::= { dismanExpressionMIBCompliances 1 } + +-- Units of Conformance + +dismanExpressionResourceGroup OBJECT-GROUP + OBJECTS { + expResourceDeltaMinimum, + expResourceDeltaWildcardInstanceMaximum, + expResourceDeltaWildcardInstances, + expResourceDeltaWildcardInstancesHigh, + expResourceDeltaWildcardInstanceResourceLacks + } + STATUS current + DESCRIPTION + "Expression definition resource management." + ::= { dismanExpressionMIBGroups 1 } + +dismanExpressionDefinitionGroup OBJECT-GROUP + OBJECTS { + expExpression, + expExpressionValueType, + expExpressionComment, + expExpressionDeltaInterval, + expExpressionPrefix, + expExpressionErrors, + expExpressionEntryStatus, + + expErrorTime, + expErrorIndex, + expErrorCode, + expErrorInstance, + + + expObjectID, + expObjectIDWildcard, + expObjectSampleType, + expObjectDeltaDiscontinuityID, + expObjectDiscontinuityIDWildcard, + expObjectDiscontinuityIDType, + expObjectConditional, + expObjectConditionalWildcard, + expObjectEntryStatus + } + STATUS current + DESCRIPTION + "Expression definition." + ::= { dismanExpressionMIBGroups 2 } + +dismanExpressionValueGroup OBJECT-GROUP + OBJECTS { + expValueCounter32Val, + expValueUnsigned32Val, + expValueTimeTicksVal, + expValueInteger32Val, + expValueIpAddressVal, + expValueOctetStringVal, + expValueOidVal, + expValueCounter64Val + } + STATUS current + DESCRIPTION + "Expression value." + ::= { dismanExpressionMIBGroups 3 } + +END diff --git a/mibs/ietf/DISMAN-NSLOOKUP-MIB b/mibs/ietf/DISMAN-NSLOOKUP-MIB new file mode 100644 index 0000000..b828948 --- /dev/null +++ b/mibs/ietf/DISMAN-NSLOOKUP-MIB @@ -0,0 +1,533 @@ +DISMAN-NSLOOKUP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2, Integer32 + FROM SNMPv2-SMI -- RFC2578 + RowStatus + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; -- RFC4001 + + lookupMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Lookup MIB (DISMAN-NSLOOKUP-MIB) enables determination + of either the name(s) corresponding to a host address or of + the address(es) associated with a host name at a remote + host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Added value enabled(1) to SYNTAX clause of + lookupCtlOperStatus + - Added lookupMinimumCompliance + - Defined semantics of value 0 for object + lookupPurgeTime + - Added DEFVAL { unknown } to object + lookupCtlTargetAddressType OBJECT-TYPE" + + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 82 } + + -- Top level structure of the MIB + + lookupObjects OBJECT IDENTIFIER ::= { lookupMIB 1 } + lookupConformance OBJECT IDENTIFIER ::= { lookupMIB 2 } + + -- Simple Object Definitions + + lookupMaxConcurrentRequests OBJECT-TYPE + + + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active lookup requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceed the limit just imposed." + DEFVAL { 10 } + ::= { lookupObjects 1 } + + lookupPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time to wait before automatically + deleting an entry in the lookupCtlTable and any + dependent lookupResultsTable entries + after the lookup operation represented by a + lookupCtlEntry has been completed. + A lookupCtEntry is considered complete + when its lookupCtlOperStatus object has a + value of completed(3). + + A value of 0 indicates that automatic deletion + of entries is disabled." + DEFVAL { 900 } -- 15 minutes as default + ::= { lookupObjects 2 } + + -- Lookup Control Table + + lookupCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF LookupCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Lookup Control Table for providing + the capability of performing a lookup operation + for a symbolic host name or for a host address + from a remote host." + + + ::= { lookupObjects 3 } + + lookupCtlEntry OBJECT-TYPE + SYNTAX LookupCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the lookupCtlTable. A + lookupCtlEntry is initially indexed by + lookupCtlOwnerIndex, which is a type of SnmpAdminString, + a textual convention that allows for the use of the SNMPv3 + View-Based Access Control Model (RFC 3415, VACM) + and that also allows a management application to identify + its entries. The second index element, + lookupCtlOperationName, enables the same + lookupCtlOwnerIndex entity to have multiple outstanding + requests. The value of lookupCtlTargetAddressType + determines which lookup function to perform." + INDEX { + lookupCtlOwnerIndex, + lookupCtlOperationName + } + ::= { lookupCtlTable 1 } + + LookupCtlEntry ::= + SEQUENCE { + lookupCtlOwnerIndex SnmpAdminString, + lookupCtlOperationName SnmpAdminString, + lookupCtlTargetAddressType InetAddressType, + lookupCtlTargetAddress InetAddress, + lookupCtlOperStatus INTEGER, + lookupCtlTime Unsigned32, + lookupCtlRc Integer32, + lookupCtlRowStatus RowStatus + } + + lookupCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used as + an 'owner index'. Such an initial index has a syntax of + SnmpAdminString and can thus be trivially mapped to a + + + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy all + entries in the table belonging to a particular user (or + group) will have the same value for this initial index. + For a given user's entries in a particular table, the + object identifiers for the information in these entries + will have the same subidentifiers (except for the + 'column' subidentifier) up to the end of the encoded + owner index. To configure VACM to permit access to this + portion of the table, one would create + vacmViewTreeFamilyTable entries with the value of + vacmViewTreeFamilySubtree including the owner index + portion, and vacmViewTreeFamilyMask 'wildcarding' the + column subidentifier. More elaborate configurations + are possible." + ::= { lookupCtlEntry 1 } + + lookupCtlOperationName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a lookup operation. This is locally unique, + within the scope of an lookupCtlOwnerIndex." + ::= { lookupCtlEntry 2 } + + lookupCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "Specifies the type of address for performing a + lookup operation for a symbolic host name or for a host + address from a remote host. + + Specification of dns(16) as the value for this object + means that a function such as, for example, getaddrinfo() + or gethostbyname() should be performed to return one or + more numeric addresses. Use of a value of either ipv4(1) + or ipv6(2) means that a functions such as, for example, + getnameinfo() or gethostbyaddr() should be used to return + the symbolic names associated with a host." + DEFVAL { unknown } + ::= { lookupCtlEntry 3 } + + + + lookupCtlTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the address used for a resolver lookup at a + remote host. The corresponding lookupCtlTargetAddressType + objects determines its type, as well as the function + that can be requested. + + A value for this object MUST be set prior to + transitioning its corresponding lookupCtlEntry to + active(1) via lookupCtlRowStatus." + ::= { lookupCtlEntry 4 } + + lookupCtlOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- operation is active + notStarted(2), -- operation has not started + completed(3) -- operation is done + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of an lookupCtlEntry: + + enabled(1) - Operation is active. + notStarted(2) - Operation has not been enabled. + completed(3) - Operation has been completed. + + An operation is automatically enabled(1) when its + lookupCtlRowStatus object is transitioned to active(1) + status. Until this occurs, lookupCtlOperStatus MUST + report a value of notStarted(2). After the lookup + operation is completed (success or failure), the value + for lookupCtlOperStatus MUST be transitioned to + completed(3)." + ::= { lookupCtlEntry 5 } + + lookupCtlTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reports the number of milliseconds that a lookup + operation required to be completed at a remote host. + Completed means operation failure as well as + + + success." + ::= { lookupCtlEntry 6 } + + lookupCtlRc OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system-specific return code from a lookup + operation. All implementations MUST return a value + of 0 for this object when the remote lookup + operation succeeds. A non-zero value for this + objects indicates failure. It is recommended that + implementations return the error codes that are + generated by the lookup function used." + ::= { lookupCtlEntry 7 } + + lookupCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the lookupCtlTable. + + A remote lookup operation is started when an + entry in this table is created via an SNMP set + request and the entry is activated. This + occurs by setting the value of this object + to CreateAndGo(4) during row creation or + by setting this object to active(1) after + the row is created. + + A value MUST be specified for lookupCtlTargetAddress + prior to the acceptance of a transition to active(1) state. + A remote lookup operation starts when its entry + first becomes active(1). Transitions in and + out of active(1) state have no effect on the + operational behavior of a remote lookup + operation, with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + remote lookup operation. + + The operational state of a remote lookup operation + can be determined by examination of its + lookupCtlOperStatus object." + REFERENCE + + + "See definition of RowStatus in RFC 2579, + 'Textual Conventions for SMIv2.'" + ::= { lookupCtlEntry 8 } + + +-- Lookup Results Table + + lookupResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF LookupResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Lookup Results Table for providing + the capability of determining the results of a + operation at a remote host. + + One or more entries are added to the + lookupResultsTable when a lookup operation, + as reflected by an lookupCtlEntry, is completed + successfully. All entries related to a + successful lookup operation MUST be added + to the lookupResultsTable at the same time + that the associating lookupCtlOperStatus + object is transitioned to completed(2). + + The number of entries added depends on the + results determined for a particular lookup + operation. All entries associated with an + lookupCtlEntry are removed when the + lookupCtlEntry is deleted. + + A remote host can be multi-homed and have more than one IP + address associated with it (returned by lookup function), + or it can have more than one symbolic name (returned + by lookup function). + + A function such as, for example, getnameinfo() or + gethostbyaddr() is called with a host address as its + parameter and is used primarily to determine a symbolic + name to associate with the host address. Entries in the + lookupResultsTable MUST be made for each host name + returned. If the function identifies an 'official host + name,' then this symbolic name MUST be assigned a + lookupResultsIndex of 1. + + A function such as, for example, getaddrinfo() or + gethostbyname() is called with a symbolic host name and is + used primarily to retrieve a host address. The entries + + + MUST be stored in the order that they are retrieved from + the lookup function. lookupResultsIndex 1 MUST be + assigned to the first entry." + ::= { lookupObjects 4 } + + lookupResultsEntry OBJECT-TYPE + SYNTAX LookupResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the lookupResultsTable. The + first two index elements identify the + lookupCtlEntry that a lookupResultsEntry belongs + to. The third index element selects a single + lookup operation result." + INDEX { + lookupCtlOwnerIndex, + lookupCtlOperationName, + lookupResultsIndex + } + ::= { lookupResultsTable 1 } + + LookupResultsEntry ::= + SEQUENCE { + lookupResultsIndex Unsigned32, + lookupResultsAddressType InetAddressType, + lookupResultsAddress InetAddress + } + + lookupResultsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the lookupResultsTable are created when + the result of a lookup operation is determined. + + Entries MUST be stored in the lookupResultsTable in + the order that they are retrieved. Values assigned + to lookupResultsIndex MUST start at 1 and increase + consecutively." + ::= { lookupResultsEntry 1 } + + lookupResultsAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Indicates the type of result of a remote lookup + operation. A value of unknown(0) implies either that + the operation hasn't been started or that + it has failed." + ::= { lookupResultsEntry 2 } + + lookupResultsAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects a result for a remote lookup operation + as per the value of lookupResultsAddressType. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of lookupResultsAddress." + + ::= { lookupResultsEntry 3 } + + + -- Conformance information + -- Compliance statements + + lookupCompliances OBJECT IDENTIFIER ::= { lookupConformance 1 } + lookupGroups OBJECT IDENTIFIER ::= { lookupConformance 2 } + + -- Compliance statements + + lookupCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-NSLOOKUP-MIB." + MODULE -- this module + MANDATORY-GROUPS { lookupGroup } + + OBJECT lookupMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT lookupPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set + operation to this object." + + + ::= { lookupCompliances 1 } + + lookupMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + that implement the minimal subset of the + DISMAN-NSLOOKUP-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + MANDATORY-GROUPS { lookupGroup } + + OBJECT lookupMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT lookupPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set + operation to this object." + + OBJECT lookupCtlRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, then at least one entry in the + lookupCtlTable MUST be established already when the SNMP + agent starts offering access to the NSLOOKUP-MIB module. + If, in such a case, only a single entry is offered, then + it is RECOMMENDED that this entry use strings with a + length of 0 for both of its two index objects." + ::= { lookupCompliances 2 } + + -- MIB groupings + + lookupGroup OBJECT-GROUP + OBJECTS { + lookupMaxConcurrentRequests, + lookupPurgeTime, + lookupCtlOperStatus, + lookupCtlTargetAddressType, + lookupCtlTargetAddress, + lookupCtlTime, + lookupCtlRc, + lookupCtlRowStatus, + + + lookupResultsAddressType, + lookupResultsAddress + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote + Lookup operation." + ::= { lookupGroups 1 } + +END diff --git a/mibs/ietf/DISMAN-PING-MIB b/mibs/ietf/DISMAN-PING-MIB new file mode 100644 index 0000000..5629470 --- /dev/null +++ b/mibs/ietf/DISMAN-PING-MIB @@ -0,0 +1,1661 @@ +DISMAN-PING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Unsigned32, Gauge32, mib-2, + NOTIFICATION-TYPE, OBJECT-IDENTITY + FROM SNMPv2-SMI -- RFC2578 + TEXTUAL-CONVENTION, RowStatus, + StorageType, DateAndTime, TruthValue + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + InterfaceIndexOrZero -- RFC2863 + FROM IF-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; -- RFC4001 + + pingMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + + + + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Ping MIB (DISMAN-PING-MIB) provides the capability of + controlling the use of the ping function at a remote + host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Correctly considered IPv6 in DESCRIPTION + clause of pingCtlDataSize + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Added DEFVAL { {} } to definition of + pingCtlTrapGeneration + - Changed DEFVAL of object pingCtlDescr from + DEFVAL { '00'H } to DEFVAL { ''H } + - Changed DEFVAL of object pingCtlSourceAddressType + from DEFVAL { ipv4 } to DEFVAL { unknown } + - Extended DESCRIPTION clause of pingResultsTable + describing re-initialization of entries + - Changed SYNTAX of pingResultsProbeResponses and + pingResultsSentProbes from Unsigned32 to Gauge32 + - Changed status of pingCompliance to deprecated + - Added pingFullCompliance and pingMinimumCompliance + - Changed status of pingGroup and pingTimeStampGroup + to deprecated + - Added pingMinimumGroup, pingCtlRowStatusGroup, + and pingHistoryGroup" + + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 80 } + + -- Textual Conventions + + OperationResponseStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Used to report the result of an operation: + + responseReceived(1) - Operation is completed successfully. + unknown(2) - Operation failed due to unknown error. + internalError(3) - An implementation detected an error + in its own processing that caused an operation + to fail. + requestTimedOut(4) - Operation failed to receive a + valid reply within the time limit imposed on it. + unknownDestinationAddress(5) - Invalid destination + address. + noRouteToTarget(6) - Could not find a route to target. + interfaceInactiveToTarget(7) - The interface to be + used in sending a probe is inactive, and an + alternate route does not exist. + arpFailure(8) - Unable to resolve a target address to a + media-specific address. + maxConcurrentLimitReached(9) - The maximum number of + concurrent active operations would have been exceeded + if the corresponding operation was allowed. + unableToResolveDnsName(10) - The DNS name specified was + unable to be mapped to an IP address. + invalidHostAddress(11) - The IP address for a host + has been determined to be invalid. Examples of this + are broadcast or multicast addresses." + SYNTAX INTEGER { + responseReceived(1), + unknown(2), + internalError(3), + requestTimedOut(4), + unknownDestinationAddress(5), + noRouteToTarget(6), + interfaceInactiveToTarget(7), + arpFailure(8), + maxConcurrentLimitReached(9), + unableToResolveDnsName(10), + invalidHostAddress(11) + } + + -- Top level structure of the MIB + + pingNotifications OBJECT IDENTIFIER ::= { pingMIB 0 } + pingObjects OBJECT IDENTIFIER ::= { pingMIB 1 } + pingConformance OBJECT IDENTIFIER ::= { pingMIB 2 } + + + -- The registration node (point) for ping implementation types + + + + + pingImplementationTypeDomains OBJECT IDENTIFIER ::= { pingMIB 3 } + + pingIcmpEcho OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using the Internet + Control Message Protocol (ICMP) 'ECHO' facility." + ::= { pingImplementationTypeDomains 1 } + + pingUdpEcho OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using the UDP echo + port (7)." + + REFERENCE + "RFC 862, 'Echo Protocol'." + ::= { pingImplementationTypeDomains 2 } + + pingSnmpQuery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using an SNMP query + to calculate a round trip time." + ::= { pingImplementationTypeDomains 3 } + + pingTcpConnectionAttempt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is attempting to + connect to a TCP port in order to calculate a round + trip time." + ::= { pingImplementationTypeDomains 4 } + + + -- Simple Object Definitions + + pingMaxConcurrentRequests OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active ping requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + + + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceeds the limit just imposed." + DEFVAL { 10 } + ::= { pingObjects 1 } + + -- Ping Control Table + + pingCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the ping Control Table for providing, via SNMP, + the capability of performing ping operations at + a remote host. The results of these operations are + stored in the pingResultsTable and the + pingProbeHistoryTable." + ::= { pingObjects 2 } + + pingCtlEntry OBJECT-TYPE + SYNTAX PingCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingCtlTable. The first index + element, pingCtlOwnerIndex, is of type SnmpAdminString, + a textual convention that allows for use of the SNMPv3 + View-Based Access Control Model (RFC 3415, VACM) + and that allows a management application to identify its + entries. The second index, pingCtlTestName (also an + SnmpAdminString), enables the same management + application to have multiple outstanding requests." + INDEX { + pingCtlOwnerIndex, + pingCtlTestName + } + ::= { pingCtlTable 1 } + + PingCtlEntry ::= + SEQUENCE { + pingCtlOwnerIndex SnmpAdminString, + pingCtlTestName SnmpAdminString, + pingCtlTargetAddressType InetAddressType, + pingCtlTargetAddress InetAddress, + pingCtlDataSize Unsigned32, + pingCtlTimeOut Unsigned32, + + + + pingCtlProbeCount Unsigned32, + pingCtlAdminStatus INTEGER, + pingCtlDataFill OCTET STRING, + pingCtlFrequency Unsigned32, + pingCtlMaxRows Unsigned32, + pingCtlStorageType StorageType, + pingCtlTrapGeneration BITS, + pingCtlTrapProbeFailureFilter Unsigned32, + pingCtlTrapTestFailureFilter Unsigned32, + pingCtlType OBJECT IDENTIFIER, + pingCtlDescr SnmpAdminString, + pingCtlSourceAddressType InetAddressType, + pingCtlSourceAddress InetAddress, + pingCtlIfIndex InterfaceIndexOrZero, + pingCtlByPassRouteTable TruthValue, + pingCtlDSField Unsigned32, + pingCtlRowStatus RowStatus + } + + pingCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used + as an 'owner index'. Such an initial index has a syntax + of SnmpAdminString and can thus be trivially mapped to a + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy, all + entries in the table belonging to a particular user (or + group) will have the same value for this initial index. + For a given user's entries in a particular table, the + object identifiers for the information in these entries + will have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including + the owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { pingCtlEntry 1 } + + + + pingCtlTestName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the ping test. This is locally unique, within + the scope of a pingCtlOwnerIndex." + ::= { pingCtlEntry 2 } + + pingCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of host address to be used at a remote + host for performing a ping operation." + DEFVAL { unknown } + ::= { pingCtlEntry 3 } + + pingCtlTargetAddress OBJECT-TYPE + + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the host address to be used at a remote host for + performing a ping operation. The host address type is + determined by the value of the corresponding + pingCtlTargetAddressType. + + A value for this object MUST be set prior to transitioning + its corresponding pingCtlEntry to active(1) via + pingCtlRowStatus." + DEFVAL { ''H } + ::= { pingCtlEntry 4 } + + pingCtlDataSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65507) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the size of the data portion to be + transmitted in a ping operation, in octets. Whether this + value can be applied depends on the selected + implementation method for performing a ping operation, + indicated by pingCtlType in the same conceptual row. + If the method used allows applying the value contained + + + + in this object, then it MUST be applied. If the specified + size is not appropriate for the chosen ping method, the + implementation SHOULD use whatever size (appropriate to + the method) is closest to the specified size. + + The maximum value for this object was computed by + subtracting the smallest possible IP header size of + 20 octets (IPv4 header with no options) and the UDP + header size of 8 octets from the maximum IP packet size. + An IP packet has a maximum size of 65535 octets + (excluding IPv6 Jumbograms)." + DEFVAL { 0 } + ::= { pingCtlEntry 5 } + + pingCtlTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the time-out value, in seconds, for a + remote ping operation." + DEFVAL { 3 } + + ::= { pingCtlEntry 6 } + + pingCtlProbeCount OBJECT-TYPE + SYNTAX Unsigned32 (1..15) + UNITS "probes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of times to perform a ping + operation at a remote host as part of a single ping test." + DEFVAL { 1 } + ::= { pingCtlEntry 7 } + + pingCtlAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test should be started + disabled(2) -- test should be stopped + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Reflects the desired state that a pingCtlEntry should be + in: + + + + + enabled(1) - Attempt to activate the test as defined by + this pingCtlEntry. + disabled(2) - Deactivate the test as defined by this + pingCtlEntry. + + Refer to the corresponding pingResultsOperStatus to + determine the operational state of the test defined by + this entry." + DEFVAL { disabled } + ::= { pingCtlEntry 8 } + + pingCtlDataFill OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The content of this object is used together with the + corresponding pingCtlDataSize value to determine how to + fill the data portion of a probe packet. The option of + selecting a data fill pattern can be useful when links + are compressed or have data pattern sensitivities. The + contents of pingCtlDataFill should be repeated in a ping + packet when the size of the data portion of the ping + packet is greater than the size of pingCtlDataFill." + DEFVAL { '00'H } + ::= { pingCtlEntry 9 } + + pingCtlFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds to wait before repeating a ping test + as defined by the value of the various objects in the + corresponding row. + + A single ping test consists of a series of ping probes. + The number of probes is determined by the value of the + corresponding pingCtlProbeCount object. After a single + test is completed the number of seconds as defined by the + value of pingCtlFrequency MUST elapse before the + next ping test is started. + + A value of 0 for this object implies that the test + as defined by the corresponding entry will not be + repeated." + DEFVAL { 0 } + + + + ::= { pingCtlEntry 10 } + + pingCtlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "rows" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of corresponding entries allowed + in the pingProbeHistoryTable. An implementation of this + MIB will remove the oldest corresponding entry in the + pingProbeHistoryTable to allow the addition of an + new entry once the number of corresponding rows in the + pingProbeHistoryTable reaches this value. + + Old entries are not removed when a new test is + started. Entries are added to the pingProbeHistoryTable + until pingCtlMaxRows is reached before entries begin to + be removed. + + A value of 0 for this object disables creation of + pingProbeHistoryTable entries." + DEFVAL { 50 } + ::= { pingCtlEntry 11 } + + pingCtlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { pingCtlEntry 12 } + + pingCtlTrapGeneration OBJECT-TYPE + SYNTAX BITS { + probeFailure(0), + testFailure(1), + testCompletion(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines when and whether + to generate a notification for this entry: + + + + probeFailure(0) - Generate a pingProbeFailed + notification subject to the value of + pingCtlTrapProbeFailureFilter. The object + pingCtlTrapProbeFailureFilter can be used + to specify the number of consecutive probe + failures that are required before a + pingProbeFailed notification can be generated. + testFailure(1) - Generate a pingTestFailed + notification. In this instance the object + pingCtlTrapTestFailureFilter can be used to + determine the number of probe failures that + signal when a test fails. + testCompletion(2) - Generate a pingTestCompleted + notification. + + By default, no bits are set, indicating that + none of the above options is selected." + DEFVAL { {} } -- no bits set. + ::= { pingCtlEntry 13 } + + pingCtlTrapProbeFailureFilter OBJECT-TYPE + SYNTAX Unsigned32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine when + to generate a pingProbeFailed NOTIFICATION. + + Setting BIT probeFailure(0) of object + pingCtlTrapGeneration to '1' implies that a + pingProbeFailed NOTIFICATION is generated only when + + a number of consecutive ping probes equal to the + value of pingCtlTrapProbeFailureFilter fail within + a given ping test. After triggering the notification, + the probe failure counter is reset to zero." + DEFVAL { 1 } + ::= { pingCtlEntry 14 } + + pingCtlTrapTestFailureFilter OBJECT-TYPE + SYNTAX Unsigned32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine when + to generate a pingTestFailed NOTIFICATION. + + Setting BIT testFailure(1) of object + + + + pingCtlTrapGeneration to '1' implies that a + pingTestFailed NOTIFICATION is generated only when + a number of consecutive ping tests equal to the + value of pingCtlTrapProbeFailureFilter fail. + After triggering the notification, the test failure + counter is reset to zero." + DEFVAL { 1 } + ::= { pingCtlEntry 15 } + + pingCtlType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used either to report or + to select the implementation method to be used for + calculating a ping response time. The value of this + object MAY be selected from pingImplementationTypeDomains. + + Additional implementation types SHOULD be allocated as + required by implementers of the DISMAN-PING-MIB under + their enterprise-specific registration point and not + beneath pingImplementationTypeDomains." + DEFVAL { pingIcmpEcho } + ::= { pingCtlEntry 16 } + + pingCtlDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to provide a + descriptive name of the remote ping test." + DEFVAL { ''H } + + ::= { pingCtlEntry 17 } + + pingCtlSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of the source address, + pingCtlSourceAddress, to be used at a remote host + when a ping operation is performed." + DEFVAL { unknown } + ::= { pingCtlEntry 18 } + + + + + pingCtlSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Use the specified IP address (which must be given in + numeric form, not as a hostname) as the source address + in outgoing probe packets. On hosts with more than one + IP address, this option can be used to select the address + to be used. If the IP address is not one of this + machine's interface addresses, an error is returned and + nothing is sent. A zero-length octet string value for + this object disables source address specification. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingCtlSourceAddressType." + DEFVAL { ''H } + ::= { pingCtlEntry 19 } + + pingCtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to an interface's ifIndex prior + to starting a remote ping operation directs + the ping probes to be transmitted over the + specified interface. A value of zero for this object + means that this option is not enabled." + DEFVAL { 0 } + ::= { pingCtlEntry 20 } + + pingCtlByPassRouteTable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The purpose of this object is to enable optional + bypassing the route table. If enabled, the remote + host will bypass the normal routing tables and send + directly to a host on an attached network. If the + host is not on a directly attached network, an + error is returned. This option can be used to perform + the ping operation to a local host through an + interface that has no route defined (e.g., after the + interface was dropped by the routing daemon at the host)." + + + + DEFVAL { false } + ::= { pingCtlEntry 21 } + + pingCtlDSField OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the value to store in the Type of Service + (TOS) octet in the IPv4 header or in the Traffic + Class octet in the IPv6 header, respectively, of the + IP packet used to encapsulate the ping probe. + + The octet to be set in the IP header contains the + Differentiated Services (DS) Field in the six most + significant bits. + + This option can be used to determine what effect an + explicit DS Field setting has on a ping response. + Not all values are legal or meaningful. A value of 0 + means that the function represented by this option is + not supported. DS Field usage is often not supported + by IP implementations, and not all values are supported. + Refer to RFC 2474 and RFC 3260 for guidance on usage of + this field." + REFERENCE + "Refer to RFC 1812 for the definition of the IPv4 TOS + octet and to RFC 2460 for the definition of the IPv6 + Traffic Class octet. Refer to RFC 2474 and RFC 3260 + for the definition of the Differentiated Services Field." + DEFVAL { 0 } + ::= { pingCtlEntry 22 } + + pingCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the pingCtlTable. Deletion of an entry in this + table results in the deletion of all corresponding (same + pingCtlOwnerIndex and pingCtlTestName index values) + pingResultsTable and pingProbeHistoryTable entries. + + A value MUST be specified for pingCtlTargetAddress + prior to acceptance of a transition to active(1) state. + + When a value for pingCtlTargetAddress is set, + + + + the value of object pingCtlRowStatus changes + from notReady(3) to notInService(2). + + Activation of a remote ping operation is controlled + via pingCtlAdminStatus, not by changing + this object's value to active(1). + + Transitions in and out of active(1) state are not + allowed while an entry's pingResultsOperStatus is + active(1), with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + ping operation. + + The operational state of a ping operation + can be determined by examination of its + pingResultsOperStatus object." + REFERENCE + "See definition of RowStatus in RFC 2579, 'Textual + Conventions for SMIv2.'" + ::= { pingCtlEntry 23 } + +-- Ping Results Table + + pingResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Ping Results Table for providing + the capability of performing ping operations at + a remote host. The results of these operations are + stored in the pingResultsTable and the pingProbeHistoryTable. + + An entry is added to the pingResultsTable when an + pingCtlEntry is started by successful transition + of its pingCtlAdminStatus object to enabled(1). + + If the object pingCtlAdminStatus already has the value + enabled(1), and if the corresponding pingResultsOperStatus + object has the value completed(3), then successfully writing + enabled(1) to object pingCtlAdminStatus re-initializes the + already existing entry in the pingResultsTable. The values + of objects in the re-initialized entry are the same as the + values of objects in a new entry would be. + + An entry is removed from the pingResultsTable when + its corresponding pingCtlEntry is deleted." + + + + ::= { pingObjects 3 } + + pingResultsEntry OBJECT-TYPE + SYNTAX PingResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingResultsTable. The + pingResultsTable has the same indexing as the + pingCtlTable so that a pingResultsEntry + corresponds to the pingCtlEntry that caused it to + be created." + INDEX { + pingCtlOwnerIndex, + pingCtlTestName + } + ::= { pingResultsTable 1 } + + PingResultsEntry ::= + SEQUENCE { + pingResultsOperStatus INTEGER, + pingResultsIpTargetAddressType InetAddressType, + pingResultsIpTargetAddress InetAddress, + pingResultsMinRtt Unsigned32, + pingResultsMaxRtt Unsigned32, + pingResultsAverageRtt Unsigned32, + pingResultsProbeResponses Gauge32, + pingResultsSentProbes Gauge32, + pingResultsRttSumOfSquares Unsigned32, + pingResultsLastGoodProbe DateAndTime + } + + pingResultsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test is in progress + disabled(2), -- test has stopped + completed(3) -- test is completed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of a pingCtlEntry: + + enabled(1) - Test is active. + disabled(2) - Test has stopped. + completed(3) - Test is completed." + ::= { pingResultsEntry 1 } + + + + + pingResultsIpTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding pingResultsIpTargetAddress + object." + DEFVAL { unknown } + ::= { pingResultsEntry 2 } + + pingResultsIpTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated + with a pingCtlTargetAddress value when the destination + address is specified as a DNS name. The value of + this object should be a zero-length octet string + when a DNS name is not specified or when a + specified DNS name fails to resolve. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingResultsIpTargetAddressType." + DEFVAL { ''H } + ::= { pingResultsEntry 3 } + + pingResultsMinRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum ping round-trip-time (RTT) received. A value + of 0 for this object implies that no RTT has been received." + ::= { pingResultsEntry 4 } + + pingResultsMaxRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The maximum ping round-trip-time (RTT) received. A value + of 0 for this object implies that no RTT has been received." + + + + ::= { pingResultsEntry 5 } + + pingResultsAverageRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current average ping round-trip-time (RTT)." + ::= { pingResultsEntry 6 } + + pingResultsProbeResponses OBJECT-TYPE + SYNTAX Gauge32 + UNITS "responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received for the corresponding + pingCtlEntry and pingResultsEntry. The value of this object + MUST be reported as 0 when no probe responses have been + received." + ::= { pingResultsEntry 7 } + + pingResultsSentProbes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "probes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reflects the number of probes sent + for the corresponding pingCtlEntry and pingResultsEntry. + The value of this object MUST be reported as 0 when no probes + have been sent." + ::= { pingResultsEntry 8 } + + pingResultsRttSumOfSquares OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the sum of the squares for all ping + responses received. Its purpose is to enable standard + deviation calculation. The value of this object MUST + be reported as 0 when no ping responses have been + received." + ::= { pingResultsEntry 9 } + + + + + pingResultsLastGoodProbe OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Date and time when the last response was received for + a probe." + ::= { pingResultsEntry 10 } + + -- Ping Probe History Table + + pingProbeHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table for storing the results of ping + operations. The number of entries in this table is + limited per entry in the pingCtlTable by the value + of the corresponding pingCtlMaxRows object. + + An entry in this table is created when the result of + a ping probe is determined. The initial 2 instance + identifier index values identify the pingCtlEntry + that a probe result (pingProbeHistoryEntry) belongs + to. An entry is removed from this table when + its corresponding pingCtlEntry is deleted. + + An implementation of this MIB will remove the oldest + entry in the pingProbeHistoryTable of the + corresponding entry in the pingCtlTable to allow + the addition of an new entry once the number of rows + in the pingProbeHistoryTable reaches the value + specified by pingCtlMaxRows for the corresponding + entry in the pingCtlTable." + ::= { pingObjects 4 } + + pingProbeHistoryEntry OBJECT-TYPE + SYNTAX PingProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingProbeHistoryTable. + The first two index elements identify the + pingCtlEntry that a pingProbeHistoryEntry belongs + to. The third index element selects a single + probe result." + INDEX { + + + + pingCtlOwnerIndex, + pingCtlTestName, + pingProbeHistoryIndex + } + ::= { pingProbeHistoryTable 1 } + + PingProbeHistoryEntry ::= + SEQUENCE { + pingProbeHistoryIndex Unsigned32, + pingProbeHistoryResponse Unsigned32, + pingProbeHistoryStatus OperationResponseStatus, + pingProbeHistoryLastRC Integer32, + pingProbeHistoryTime DateAndTime + } + + pingProbeHistoryIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created when the result of + a ping probe is determined. The initial 2 instance + identifier index values identify the pingCtlEntry + that a probe result (pingProbeHistoryEntry) belongs + to. + + An implementation MUST start assigning + pingProbeHistoryIndex values at 1 and wrap after + exceeding the maximum possible value as defined by + the limit of this object ('ffffffff'h)." + ::= { pingProbeHistoryEntry 1 } + + pingProbeHistoryResponse OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time measured in milliseconds from when + a probe was sent to when its response was received or + when it timed out. The value of this object is reported + as 0 when it is not possible to transmit a probe." + ::= { pingProbeHistoryEntry 2 } + + pingProbeHistoryStatus OBJECT-TYPE + SYNTAX OperationResponseStatus + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The result of a particular probe done by a remote host." + ::= { pingProbeHistoryEntry 3 } + + pingProbeHistoryLastRC OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last implementation-method-specific reply code received. + If the ICMP Echo capability is being used, then a successful + probe ends when an ICMP response is received that contains + the code ICMP_ECHOREPLY(0). The ICMP codes are maintained + by IANA. Standardized ICMP codes are listed at + http://www.iana.org/assignments/icmp-parameters. + The ICMPv6 codes are listed at + http://www.iana.org/assignments/icmpv6-parameters." + ::= { pingProbeHistoryEntry 4 } + + pingProbeHistoryTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp for when this probe result was determined." + ::= { pingProbeHistoryEntry 5 } + + + -- Notification Definition section + + pingProbeFailed NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "Generated when a probe failure is detected, when the + + + + corresponding pingCtlTrapGeneration object is set to + probeFailure(0), subject to the value of + pingCtlTrapProbeFailureFilter. The object + pingCtlTrapProbeFailureFilter can be used to specify the + number of consecutive probe failures that are required + before this notification can be generated." + + ::= { pingNotifications 1 } + + pingTestFailed NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "Generated when a ping test is determined to have failed, + when the corresponding pingCtlTrapGeneration object is + set to testFailure(1). In this instance, + pingCtlTrapTestFailureFilter should specify the number of + probes in a test required to have failed in order to + consider the test failed." + ::= { pingNotifications 2 } + + pingTestCompleted NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + + + + } + STATUS current + DESCRIPTION + "Generated at the completion of a ping test when the + corresponding pingCtlTrapGeneration object has the + testCompletion(2) bit set." + ::= { pingNotifications 3 } + + -- Conformance information + + -- Compliance statements + + pingCompliances OBJECT IDENTIFIER ::= { pingConformance 1 } + pingGroups OBJECT IDENTIFIER ::= { pingConformance 2 } + + -- Compliance statements + + pingFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-PING-MIB." + MODULE -- this module + MANDATORY-GROUPS { + pingMinimumGroup, + pingCtlRowStatusGroup, + pingHistoryGroup, + pingNotificationsGroup + } + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + + + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of its + implementation. The function represented by this + object is implementable if the setsockopt + SOL_SOCKET SO_DONTROUTE option is supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to + + + + support IPv4 and IPv6 addresses." + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingResultsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT pingProbeHistoryTime + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + ::= { pingCompliances 2 } + + pingMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + that implement the minimal subset of the + DISMAN-PING-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + MANDATORY-GROUPS { pingMinimumGroup } + + GROUP pingCtlRowStatusGroup + DESCRIPTION + "A compliant implementation does not have to implement + the pingCtlRowStatusGroup." + + GROUP pingHistoryGroup + DESCRIPTION + "A compliant implementation does not have to implement + the pingHistoryGroup." + + GROUP pingNotificationsGroup + DESCRIPTION + "A compliant implementation does not have to implement + + + + the pingNotificationsGroup." + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlDataFill + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlFrequency + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + pingHistoryGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value of 0 when retrieved." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT pingCtlTrapGeneration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + pingNotificationsGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value with no bit set when retrieved. + No bit set indicates that not notification is + generated." + + OBJECT pingCtlTrapProbeFailureFilter + MIN-ACCESS read-only + DESCRIPTION + + + + "If write access to pingCtlTrapGeneration is not + supported, then write access to this object must also + not be supported. In this case, return 0 as the value + of this object." + + OBJECT pingCtlTrapTestFailureFilter + MIN-ACCESS read-only + DESCRIPTION + "If write access to pingCtlTrapGeneration is not + supported, then write access to this object must also + not be supported. In this case, return 0 as the value + of this object." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + OBJECT pingCtlDescr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + + + + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + DESCRIPTION + "An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingResultsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT pingProbeHistoryTime + DESCRIPTION + "If the pingHistoryGroup is implemented, then this + object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + + + + be reported as '0000000000000000'H." + + ::= { pingCompliances 3 } + + pingCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the DISMAN-PING-MIB. This + compliance statement has been deprecated because the + group pingGroup and the pingTimeStampGroup have been + split and deprecated. The pingFullCompliance statement + is semantically identical to the deprecated + pingCompliance statement." + + MODULE -- this module + MANDATORY-GROUPS { + pingGroup, + pingNotificationsGroup + } + GROUP pingTimeStampGroup + DESCRIPTION + "This group is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this group is not supported the values + for the objects in this group be reported as + '0000000000000000'H." + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile + StorageType enumeration." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + + + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of its implementation. The function + represented by this object is implementable if the + setsockopt SOL_SOCKET SO_DONTROUTE option is + supported." + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to + support IPv4 and IPv6 addresses." + + + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + ::= { pingCompliances 1 } + + -- MIB groupings + + pingMinimumGroup OBJECT-GROUP + OBJECTS { + pingMaxConcurrentRequests, + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingCtlDataSize, + pingCtlTimeOut, + pingCtlProbeCount, + pingCtlAdminStatus, + pingCtlDataFill, + pingCtlFrequency, + pingCtlMaxRows, + pingCtlStorageType, + pingCtlTrapGeneration, + pingCtlTrapProbeFailureFilter, + pingCtlTrapTestFailureFilter, + pingCtlType, + pingCtlDescr, + + pingCtlByPassRouteTable, + pingCtlSourceAddressType, + pingCtlSourceAddress, + pingCtlIfIndex, + pingCtlDSField, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote ping + capability." + + + + ::= { pingGroups 4 } + + pingCtlRowStatusGroup OBJECT-GROUP + OBJECTS { + pingCtlRowStatus + } + STATUS current + DESCRIPTION + "The RowStatus object of the pingCtlTable." + ::= { pingGroups 5 } + + pingHistoryGroup OBJECT-GROUP + OBJECTS { + pingProbeHistoryResponse, + pingProbeHistoryStatus, + pingProbeHistoryLastRC, + pingProbeHistoryTime + } + STATUS current + DESCRIPTION + "The group of objects that constitute the history + capability." + ::= { pingGroups 6 } + + pingNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + pingProbeFailed, + pingTestFailed, + pingTestCompleted + } + + STATUS current + DESCRIPTION + "The notification that are required to be supported by + implementations of this MIB." + ::= { pingGroups 3 } + + pingGroup OBJECT-GROUP + OBJECTS { + pingMaxConcurrentRequests, + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingCtlDataSize, + pingCtlTimeOut, + pingCtlProbeCount, + pingCtlAdminStatus, + pingCtlDataFill, + pingCtlFrequency, + + + + pingCtlMaxRows, + pingCtlStorageType, + pingCtlTrapGeneration, + pingCtlTrapProbeFailureFilter, + pingCtlTrapTestFailureFilter, + pingCtlType, + pingCtlDescr, + pingCtlByPassRouteTable, + pingCtlSourceAddressType, + pingCtlSourceAddress, + pingCtlIfIndex, + pingCtlDSField, + pingCtlRowStatus, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingProbeHistoryResponse, + pingProbeHistoryStatus, + pingProbeHistoryLastRC + } + STATUS deprecated + DESCRIPTION + "The group of objects that constitute the remote ping + capability." + ::= { pingGroups 1 } + + pingTimeStampGroup OBJECT-GROUP + + OBJECTS { + pingResultsLastGoodProbe, + pingProbeHistoryTime + } + STATUS deprecated + DESCRIPTION + "The group of DateAndTime objects." + ::= { pingGroups 2 } + +END diff --git a/mibs/ietf/DISMAN-SCHEDULE-MIB b/mibs/ietf/DISMAN-SCHEDULE-MIB new file mode 100644 index 0000000..596fe51 --- /dev/null +++ b/mibs/ietf/DISMAN-SCHEDULE-MIB @@ -0,0 +1,720 @@ +DISMAN-SCHEDULE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Counter32, mib-2, zeroDotZero + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + DateAndTime, RowStatus, StorageType, VariablePointer + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +schedMIB MODULE-IDENTITY + LAST-UPDATED "200201070000Z" + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@dorothy.bmc.com + Subscribe: disman-request@dorothy.bmc.com + + Chair: Randy Presuhn + BMC Software, Inc. + Postal: Office 1-3141 + 2141 North First Street + San Jose, California 95131 + USA + EMail: rpresuhn@bmc.com + Phone: +1 408 546-1006 + + Editor: David B. Levi + Nortel Networks + Postal: 4401 Great America Parkway + Santa Clara, CA 95052-8185 + USA + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + + + Editor: Juergen Schoenwaelder + TU Braunschweig + Postal: Bueltenweg 74/75 + 38106 Braunschweig + Germany + EMail: schoenw@ibr.cs.tu-bs.de + Phone: +49 531 391-3283" + DESCRIPTION + "This MIB module defines a MIB which provides mechanisms to + schedule SNMP set operations periodically or at specific + points in time." + REVISION "200201070000Z" + DESCRIPTION + "Revised version, published as RFC 3231. + + This revision introduces a new object type called + schedTriggers. Created new conformance and compliance + statements that take care of the new schedTriggers object. + + Several clarifications have been added to remove ambiguities + that were discovered and reported by implementors." + REVISION "199811171800Z" + DESCRIPTION + "Initial version, published as RFC 2591." + ::= { mib-2 63 } + +-- +-- The various groups defined within this MIB definition: +-- + +schedObjects OBJECT IDENTIFIER ::= { schedMIB 1 } +schedNotifications OBJECT IDENTIFIER ::= { schedMIB 2 } +schedConformance OBJECT IDENTIFIER ::= { schedMIB 3 } + +-- +-- Textual Conventions: +-- + +SnmpPduErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC enumerates the SNMPv1 and SNMPv2 PDU error status + codes as defined in RFC 1157 and RFC 1905. It also adds a + pseudo error status code `noResponse' which indicates a + timeout condition." + SYNTAX INTEGER { + noResponse(-1), + noError(0), + + + tooBig(1), + noSuchName(2), + badValue(3), + readOnly(4), + 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) + } + +-- +-- Some scalars which provide information about the local time zone. +-- + +schedLocalTime OBJECT-TYPE + SYNTAX DateAndTime (SIZE (11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local time used by the scheduler. Schedules which + refer to calendar time will use the local time indicated + by this object. An implementation MUST return all 11 bytes + of the DateAndTime textual-convention so that a manager + may retrieve the offset from GMT time." + ::= { schedObjects 1 } + +-- +-- The schedule table which controls the scheduler. +-- + +schedTable OBJECT-TYPE + SYNTAX SEQUENCE OF SchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines scheduled actions triggered by + SNMP set operations." + ::= { schedObjects 2 } + + +schedEntry OBJECT-TYPE + SYNTAX SchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular scheduled action. + + Unless noted otherwise, writable objects of this row + can be modified independent of the current value of + schedRowStatus, schedAdminStatus and schedOperStatus. + In particular, it is legal to modify schedInterval + and the objects in the schedCalendarGroup when + schedRowStatus is active and schedAdminStatus and + schedOperStatus are both enabled." + INDEX { schedOwner, schedName } + ::= { schedTable 1 } + +SchedEntry ::= SEQUENCE { + schedOwner SnmpAdminString, + schedName SnmpAdminString, + schedDescr SnmpAdminString, + schedInterval Unsigned32, + schedWeekDay BITS, + schedMonth BITS, + schedDay BITS, + schedHour BITS, + schedMinute BITS, + schedContextName SnmpAdminString, + schedVariable VariablePointer, + schedValue Integer32, + schedType INTEGER, + schedAdminStatus INTEGER, + schedOperStatus INTEGER, + schedFailures Counter32, + schedLastFailure SnmpPduErrorStatus, + schedLastFailed DateAndTime, + schedStorageType StorageType, + schedRowStatus RowStatus, + schedTriggers Counter32 +} + +schedOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The owner of this scheduling entry. The exact semantics of + this string are subject to the security policy defined by + + + the security administrator." + ::= { schedEntry 1 } + +schedName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + scheduling entry. This object allows a schedOwner to have + multiple entries in the schedTable." + ::= { schedEntry 2 } + +schedDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human readable description of the purpose of this + scheduling entry." + DEFVAL { "" } + ::= { schedEntry 3 } + +schedInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between two action invocations of + a periodic scheduler. Implementations must guarantee + that action invocations will not occur before at least + schedInterval seconds have passed. + + The scheduler must ignore all periodic schedules that + have a schedInterval value of 0. A periodic schedule + with a scheduling interval of 0 seconds will therefore + never invoke an action. + + Implementations may be forced to delay invocations in the + face of local constraints. A scheduled management function + should therefore not rely on the accuracy provided by the + scheduler implementation. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { 0 } + + + ::= { schedEntry 4 } + +schedWeekDay OBJECT-TYPE + SYNTAX BITS { + sunday(0), + monday(1), + tuesday(2), + wednesday(3), + thursday(4), + friday(5), + saturday(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of weekdays on which the scheduled action should + take place. Setting multiple bits will include several + weekdays in the set of possible weekdays for this schedule. + Setting all bits will cause the scheduler to ignore the + weekday. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 5 } + +schedMonth OBJECT-TYPE + SYNTAX BITS { + january(0), + february(1), + march(2), + april(3), + may(4), + june(5), + july(6), + august(7), + september(8), + october(9), + november(10), + december(11) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of months during which the scheduled action should + take place. Setting multiple bits will include several + months in the set of possible months for this schedule. + + + Setting all bits will cause the scheduler to ignore the + month. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 6 } + +schedDay OBJECT-TYPE + SYNTAX BITS { + d1(0), d2(1), d3(2), d4(3), d5(4), + d6(5), d7(6), d8(7), d9(8), d10(9), + d11(10), d12(11), d13(12), d14(13), d15(14), + d16(15), d17(16), d18(17), d19(18), d20(19), + d21(20), d22(21), d23(22), d24(23), d25(24), + d26(25), d27(26), d28(27), d29(28), d30(29), + d31(30), + r1(31), r2(32), r3(33), r4(34), r5(35), + r6(36), r7(37), r8(38), r9(39), r10(40), + r11(41), r12(42), r13(43), r14(44), r15(45), + r16(46), r17(47), r18(48), r19(49), r20(50), + r21(51), r22(52), r23(53), r24(54), r25(55), + r26(56), r27(57), r28(58), r29(59), r30(60), + r31(61) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of days in a month on which a scheduled action + should take place. There are two sets of bits one can + use to define the day within a month: + + Enumerations starting with the letter 'd' indicate a + day in a month relative to the first day of a month. + The first day of the month can therefore be specified + by setting the bit d1(0) and d31(30) means the last + day of a month with 31 days. + + Enumerations starting with the letter 'r' indicate a + day in a month in reverse order, relative to the last + day of a month. The last day in the month can therefore + be specified by setting the bit r1(31) and r31(61) means + the first day of a month with 31 days. + + Setting multiple bits will include several days in the set + of possible days for this schedule. Setting all bits will + cause the scheduler to ignore the day within a month. + + + Setting all bits starting with the letter 'd' or the + letter 'r' will also cause the scheduler to ignore the + day within a month. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 7 } + +schedHour OBJECT-TYPE + SYNTAX BITS { + h0(0), h1(1), h2(2), h3(3), h4(4), + h5(5), h6(6), h7(7), h8(8), h9(9), + h10(10), h11(11), h12(12), h13(13), h14(14), + h15(15), h16(16), h17(17), h18(18), h19(19), + h20(20), h21(21), h22(22), h23(23) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of hours within a day during which the scheduled + action should take place. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 8 } + +schedMinute OBJECT-TYPE + SYNTAX BITS { + m0(0), m1(1), m2(2), m3(3), m4(4), + m5(5), m6(6), m7(7), m8(8), m9(9), + m10(10), m11(11), m12(12), m13(13), m14(14), + m15(15), m16(16), m17(17), m18(18), m19(19), + m20(20), m21(21), m22(22), m23(23), m24(24), + m25(25), m26(26), m27(27), m28(28), m29(29), + m30(30), m31(31), m32(32), m33(33), m34(34), + m35(35), m36(36), m37(37), m38(38), m39(39), + m40(40), m41(41), m42(42), m43(43), m44(44), + m45(45), m46(46), m47(47), m48(48), m49(49), + m50(50), m51(51), m52(52), m53(53), m54(54), + m55(55), m56(56), m57(57), m58(58), m59(59) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The set of minutes within an hour when the scheduled action + should take place. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 9 } + +schedContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The context which contains the local MIB variable pointed + to by schedVariable." + DEFVAL { "" } + ::= { schedEntry 10 } + +schedVariable OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object identifier pointing to a local MIB variable + which resolves to an ASN.1 primitive type of INTEGER." + DEFVAL { zeroDotZero } + ::= { schedEntry 11 } + +schedValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value which is written to the MIB object pointed to by + schedVariable when the scheduler invokes an action. The + implementation shall enforce the use of access control + rules when performing the set operation on schedVariable. + This is accomplished by calling the isAccessAllowed abstract + service interface as defined in RFC 2571. + + Note that an implementation may choose to issue an SNMP Set + message to the SNMP engine and leave the access control + decision to the normal message processing procedure." + DEFVAL { 0 } + ::= { schedEntry 12 } + +schedType OBJECT-TYPE + + + SYNTAX INTEGER { + periodic(1), + calendar(2), + oneshot(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of this schedule. The value periodic(1) indicates + that this entry specifies a periodic schedule. A periodic + schedule is defined by the value of schedInterval. The + values of schedWeekDay, schedMonth, schedDay, schedHour + and schedMinute are ignored. + + The value calendar(2) indicates that this entry describes a + calendar schedule. A calendar schedule is defined by the + values of schedWeekDay, schedMonth, schedDay, schedHour and + schedMinute. The value of schedInterval is ignored. A + calendar schedule will trigger on all local times that + satisfy the bits set in schedWeekDay, schedMonth, schedDay, + schedHour and schedMinute. + + The value oneshot(3) indicates that this entry describes a + one-shot schedule. A one-shot schedule is similar to a + calendar schedule with the additional feature that it + disables itself by changing in the `finished' + schedOperStatus once the schedule triggers an action. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { periodic } + ::= { schedEntry 13 } + +schedAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of the schedule." + DEFVAL { disabled } + ::= { schedEntry 14 } + +schedOperStatus OBJECT-TYPE + SYNTAX INTEGER { + + + enabled(1), + disabled(2), + finished(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this schedule. The state + enabled(1) indicates this entry is active and that the + scheduler will invoke actions at appropriate times. The + disabled(2) state indicates that this entry is currently + inactive and ignored by the scheduler. The finished(3) + state indicates that the schedule has ended. Schedules + in the finished(3) state are ignored by the scheduler. + A one-shot schedule enters the finished(3) state when it + deactivates itself. + + Note that the operational state must not be enabled(1) + when the schedRowStatus is not active." + ::= { schedEntry 15 } + +schedFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable counts the number of failures while invoking + the scheduled action. This counter at most increments once + for a triggered action." + ::= { schedEntry 16 } + +schedLastFailure OBJECT-TYPE + SYNTAX SnmpPduErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent error that occurred during the invocation of + a scheduled action. The value noError(0) is returned + if no errors have occurred yet." + DEFVAL { noError } + ::= { schedEntry 17 } + +schedLastFailed OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the most recent failure occurred. + + + The value '0000000000000000'H is returned if no failure + occurred since the last re-initialization of the scheduler." + DEFVAL { '0000000000000000'H } + ::= { schedEntry 18 } + +schedStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this scheduled action is kept + in volatile storage and lost upon reboot or if this row is + backed up by non-volatile or permanent storage. + + Conceptual rows having the value `permanent' must allow + write access to the columnar objects schedDescr, + schedInterval, schedContextName, schedVariable, schedValue, + and schedAdminStatus. If an implementation supports the + schedCalendarGroup, write access must be also allowed to + the columnar objects schedWeekDay, schedMonth, schedDay, + schedHour, schedMinute." + DEFVAL { volatile } + ::= { schedEntry 19 } + +schedRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this scheduled action. A control that allows + entries to be added and removed from this table. + + Note that the operational state must change to enabled + when the administrative state is enabled and the row + status changes to active(1). + + Attempts to destroy(6) a row or to set a row + notInService(2) while the operational state is enabled + result in inconsistentValue errors. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { schedEntry 20 } + +schedTriggers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "This variable counts the number of attempts (either + successful or failed) to invoke the scheduled action." + ::= { schedEntry 21 } + +-- +-- Notifications that are emitted to indicate failures. The +-- definition of schedTraps makes notification registrations +-- reversible (see STD 58, RFC 2578). +-- + +schedTraps OBJECT IDENTIFIER ::= { schedNotifications 0 } + +schedActionFailure NOTIFICATION-TYPE + OBJECTS { schedLastFailure, schedLastFailed } + STATUS current + DESCRIPTION + "This notification is generated whenever the invocation of a + scheduled action fails." + ::= { schedTraps 1 } + +-- conformance information + +schedCompliances OBJECT IDENTIFIER ::= { schedConformance 1 } +schedGroups OBJECT IDENTIFIER ::= { schedConformance 2 } + +-- compliance statements + +schedCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the scheduling MIB." + MODULE -- this module + MANDATORY-GROUPS { + schedGroup2, schedNotificationsGroup + } + GROUP schedCalendarGroup + DESCRIPTION + "The schedCalendarGroup is mandatory only for those + implementations that support calendar based schedules." + OBJECT schedType + DESCRIPTION + "The values calendar(2) or oneshot(3) are not valid for + implementations that do not implement the + schedCalendarGroup. Such an implementation must return + inconsistentValue error responses for attempts to set + schedAdminStatus to calendar(2) or oneshot(3)." + + + ::= { schedCompliances 2 } + +schedGroup2 OBJECT-GROUP + OBJECTS { + schedDescr, schedInterval, schedContextName, + schedVariable, schedValue, schedType, + schedAdminStatus, schedOperStatus, schedFailures, + schedLastFailure, schedLastFailed, schedStorageType, + schedRowStatus, schedTriggers + } + STATUS current + DESCRIPTION + "A collection of objects providing scheduling capabilities." + ::= { schedGroups 4 } + +schedCalendarGroup OBJECT-GROUP + OBJECTS { + schedLocalTime, schedWeekDay, schedMonth, + schedDay, schedHour, schedMinute + } + STATUS current + DESCRIPTION + "A collection of objects providing calendar based schedules." + ::= { schedGroups 2 } + +schedNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + schedActionFailure + } + STATUS current + DESCRIPTION + "The notifications emitted by the scheduler." + ::= { schedGroups 3 } + +-- +-- Deprecated compliance and conformance group definitions +-- from RFC 2591. +-- + +schedCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which implement + the scheduling MIB." + MODULE -- this module + MANDATORY-GROUPS { + schedGroup, schedNotificationsGroup + } + + + GROUP schedCalendarGroup + DESCRIPTION + "The schedCalendarGroup is mandatory only for those + implementations that support calendar based schedules." + OBJECT schedType + DESCRIPTION + "The values calendar(2) or oneshot(3) are not valid for + implementations that do not implement the + schedCalendarGroup. Such an implementation must return + inconsistentValue error responses for attempts to set + schedAdminStatus to calendar(2) or oneshot(3)." + ::= { schedCompliances 1 } + +schedGroup OBJECT-GROUP + OBJECTS { + schedDescr, schedInterval, schedContextName, + schedVariable, schedValue, schedType, + schedAdminStatus, schedOperStatus, schedFailures, + schedLastFailure, schedLastFailed, schedStorageType, + schedRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing scheduling capabilities." + ::= { schedGroups 1 } + +END diff --git a/mibs/ietf/DISMAN-SCRIPT-MIB b/mibs/ietf/DISMAN-SCRIPT-MIB new file mode 100644 index 0000000..a303497 --- /dev/null +++ b/mibs/ietf/DISMAN-SCRIPT-MIB @@ -0,0 +1,1820 @@ +DISMAN-SCRIPT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + + RowStatus, TimeInterval, DateAndTime, StorageType, DisplayString + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +scriptMIB MODULE-IDENTITY + LAST-UPDATED "200108210000Z" + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@dorothy.bmc.com + Subscribe: disman-request@dorothy.bmc.com + + Chair: Randy Presuhn + BMC Software, Inc. + + + Postal: Office 1-3141 + 2141 North First Street + San Jose, California 95131 + USA + EMail: rpresuhn@bmc.com + Phone: +1 408 546-1006 + + Editor: David B. Levi + Nortel Networks + Postal: 4401 Great America Parkway + Santa Clara, CA 95052-8185 + USA + EMail: dlevi@nortelnetworks.com + Phone: +1 423 686 0432 + + Editor: Juergen Schoenwaelder + TU Braunschweig + Postal: Bueltenweg 74/75 + 38106 Braunschweig + Germany + EMail: schoenw@ibr.cs.tu-bs.de + Phone: +49 531 391-3283" + DESCRIPTION + "This MIB module defines a set of objects that allow to + delegate management scripts to distributed managers." + REVISION "200108210000Z" + DESCRIPTION + "Revised version, published as RFC 3165. + + This revision introduces several new objects: smScriptError, + smScriptLastChange, smLaunchError, smLaunchLastChange, + smLaunchRowExpireTime, smRunResultTime, and smRunErrorTime. + + The following existing objects were updated: the maximum + value of smRunLifeTime now disables the timer, an + autostart value was added to the smLaunchAdminStatus + object, and a new expired state was added to the + smLaunchOperStatus object. + + A new smScriptException notification has been added to + support runtime error notifications. + + Created new conformance and compliance statements that + take care of the new objects and notifications. + + Clarifications have been added in several places to remove + ambiguities or contradictions that were discovered and + reported by implementors." + + + REVISION "199902221800Z" + DESCRIPTION + "Initial version, published as RFC 2592." + ::= { mib-2 64 } + +-- +-- The groups defined within this MIB module: +-- + +smObjects OBJECT IDENTIFIER ::= { scriptMIB 1 } +smNotifications OBJECT IDENTIFIER ::= { scriptMIB 2 } +smConformance OBJECT IDENTIFIER ::= { scriptMIB 3 } + +-- +-- Script language and language extensions. +-- +-- This group defines tables which list the languages and the +-- language extensions supported by a Script MIB implementation. +-- Languages are uniquely identified by object identifier values. +-- + +smLangTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported script languages." + ::= { smObjects 1 } + +smLangEntry OBJECT-TYPE + SYNTAX SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language." + INDEX { smLangIndex } + ::= { smLangTable 1 } + +SmLangEntry ::= SEQUENCE { + smLangIndex Integer32, + smLangLanguage OBJECT IDENTIFIER, + smLangVersion SnmpAdminString, + smLangVendor OBJECT IDENTIFIER, + smLangRevision SnmpAdminString, + smLangDescr SnmpAdminString +} + +smLangIndex OBJECT-TYPE + + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. + + Note that the data type and the range of this object must + be consistent with the definition of smScriptLanguage." + ::= { smLangEntry 1 } + +smLangLanguage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language." + ::= { smLangEntry 2 } + +smLangVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language. The zero-length string + shall be used if the language does not have a version + number. + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 3 } + +smLangVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier which identifies the vendor who + provides the implementation of the language. This object + identifier SHALL point to the object identifier directly + below the enterprise object identifier {1 3 6 1 4 1} + allocated for the vendor. The value must be the object + identifier {0 0} if the vendor is not known." + + + ::= { smLangEntry 4 } + +smLangRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 5 } + +smLangDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language." + ::= { smLangEntry 6 } + + +smExtsnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported language extensions." + ::= { smObjects 2 } + +smExtsnEntry OBJECT-TYPE + SYNTAX SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language extension." + INDEX { smLangIndex, smExtsnIndex } + ::= { smExtsnTable 1 } + +SmExtsnEntry ::= SEQUENCE { + smExtsnIndex Integer32, + smExtsnExtension OBJECT IDENTIFIER, + smExtsnVersion SnmpAdminString, + smExtsnVendor OBJECT IDENTIFIER, + smExtsnRevision SnmpAdminString, + + + smExtsnDescr SnmpAdminString +} + +smExtsnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language extension entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + ::= { smExtsnEntry 1} + +smExtsnExtension OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language + extension." + ::= { smExtsnEntry 2 } + +smExtsnVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language extension. + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 3 } + +smExtsnVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier which identifies the vendor who + provides the implementation of the extension. The + object identifier value should point to the OID node + directly below the enterprise OID {1 3 6 1 4 1} + allocated for the vendor. The value must by the object + identifier {0 0} if the vendor is not known." + ::= { smExtsnEntry 4 } + + +smExtsnRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the extension implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 5 } + +smExtsnDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language extension." + ::= { smExtsnEntry 6 } + +-- +-- Scripts known by the Script MIB implementation. +-- +-- This group defines a table which lists all known scripts. +-- Scripts can be added and removed through manipulation of the +-- smScriptTable. +-- + +smScriptObjects OBJECT IDENTIFIER ::= { smObjects 3 } + +smScriptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes locally known scripts." + ::= { smScriptObjects 1 } + +smScriptEntry OBJECT-TYPE + SYNTAX SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + this script table." + + + INDEX { smScriptOwner, smScriptName } + ::= { smScriptTable 1 } + +SmScriptEntry ::= SEQUENCE { + smScriptOwner SnmpAdminString, + smScriptName SnmpAdminString, + smScriptDescr SnmpAdminString, + smScriptLanguage Integer32, + smScriptSource DisplayString, + smScriptAdminStatus INTEGER, + smScriptOperStatus INTEGER, + smScriptStorageType StorageType, + smScriptRowStatus RowStatus, + smScriptError SnmpAdminString, + smScriptLastChange DateAndTime +} + +smScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smScriptTable." + ::= { smScriptEntry 1 } + +smScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + script. This object allows an smScriptOwner to have multiple + entries in the smScriptTable. + + This value of this object may be used to derive the name + (e.g. a file name) which is used by the Script MIB + implementation to access the script in non-volatile + storage. The details of this mapping are implementation + specific. However, the mapping needs to ensure that scripts + created by different owners with the same script name do not + map to the same name in non-volatile storage." + ::= { smScriptEntry 2 } + +smScriptDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "A description of the purpose of the script." + ::= { smScriptEntry 3 } + +smScriptLanguage OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object type identifies an entry in the + smLangTable which is used to execute this script. + The special value 0 may be used by hard-wired scripts + that can not be modified and that are executed by + internal functions. + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled' or `compiling' + and will result in an inconsistentValue error. + + Note that the data type and the range of this object must + be consistent with the definition of smLangIndex." + ::= { smScriptEntry 4 } + +smScriptSource OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object either contains a reference to the script + source or an empty string. A reference must be given + in the form of a Uniform Resource Locator (URL) as + defined in RFC 2396. The allowed character sets and the + encoding rules defined in RFC 2396 section 2 apply. + + When the smScriptAdminStatus object is set to `enabled', + the Script MIB implementation will `pull' the script + source from the URL contained in this object if the URL + is not empty. + + An empty URL indicates that the script source is loaded + from local storage. The script is read from the smCodeTable + if the value of smScriptStorageType is volatile. Otherwise, + the script is read from non-volatile storage. + + Note: This document does not mandate implementation of any + specific URL scheme. An attempt to load a script from a + nonsupported URL scheme will cause the smScriptOperStatus + to report an `unknownProtocol' error. + + + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled', `editing', + `retrieving' or `compiling' and will result in an + inconsistentValue error." + DEFVAL { ''H } + ::= { smScriptEntry 5 } + +smScriptAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the script. See the definition of smScriptOperStatus for + a description of the values. + + When the smScriptAdminStatus object is set to `enabled' and + the smScriptOperStatus is `disabled' or one of the error + states, the Script MIB implementation will `pull' the script + source from the URL contained in the smScriptSource object + if the URL is not empty." + DEFVAL { disabled } + ::= { smScriptEntry 6 } + +smScriptOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3), + retrieving(4), + compiling(5), + noSuchScript(6), + accessDenied(7), + wrongLanguage(8), + wrongVersion(9), + compilationFailed(10), + noResourcesLeft(11), + unknownProtocol(12), + protocolFailure(13), + genericError(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The actual status of the script in the runtime system. The + value of this object is only meaningful when the value of + the smScriptRowStatus object is `active'. + + The smScriptOperStatus object may have the following values: + + - `enabled' indicates that the script is available and can + be started by a launch table entry. + + - `disabled' indicates that the script can not be used. + + - `editing' indicates that the script can be modified in the + smCodeTable. + + - `retrieving' indicates that the script is currently being + loaded from non-volatile storage or a remote system. + + - `compiling' indicates that the script is currently being + compiled by the runtime system. + + - `noSuchScript' indicates that the script does not exist + at the smScriptSource. + + - `accessDenied' indicates that the script can not be loaded + from the smScriptSource due to a lack of permissions. + + - `wrongLanguage' indicates that the script can not be + loaded from the smScriptSource because of a language + mismatch. + + - `wrongVersion' indicates that the script can not be loaded + from the smScriptSource because of a language version + mismatch. + + - `compilationFailed' indicates that the compilation failed. + + - `noResourcesLeft' indicates that the runtime system does + not have enough resources to load the script. + + - `unknownProtocol' indicates that the script could not be + loaded from the smScriptSource because the requested + protocol is not supported. + + - `protocolFailure' indicates that the script could not be + loaded from the smScriptSource because of a protocol + failure. + + - `genericError' indicates that the script could not be + + + loaded due to an error condition not listed above. + + The `retrieving' and `compiling' states are transient states + which will either lead to one of the error states or the + `enabled' state. The `disabled' and `editing' states are + administrative states which are only reached by explicit + management operations. + + All launch table entries that refer to this script table + entry shall have an smLaunchOperStatus value of `disabled' + when the value of this object is not `enabled'." + DEFVAL { disabled } + ::= { smScriptEntry 7 } + +smScriptStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row and the script + controlled by this row are kept in volatile storage and + lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + The storage type of this row always complies with the value + of this entry if the value of the corresponding RowStatus + object is `active'. + + However, the storage type of the script controlled by this + row may be different, if the value of this entry is + `non-volatile'. The script controlled by this row is written + into local non-volatile storage if the following condition + becomes true: + + (a) the URL contained in the smScriptSource object is empty + and + (b) the smScriptStorageType is `nonVolatile' + and + (c) the smScriptOperStatus is `enabled' + + Setting this object to `volatile' removes a script from + non-volatile storage if the script controlled by this row + has been in non-volatile storage before. Attempts to set + this object to permanent will always fail with an + inconsistentValue error. + + The value of smScriptStorageType is only meaningful if the + value of the corresponding RowStatus object is `active'. + + + If smScriptStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smScriptStorageType and + smScriptRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smScriptEntry 8 } + +smScriptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Changing the smScriptRowStatus from `active' to + `notInService' will remove the associated script from the + runtime system. + + Deleting conceptual rows from this table may affect the + deletion of other resources associated with this row. For + example, a script stored in non-volatile storage may be + removed from non-volatile storage. + + An entry may not exist in the `active' state unless all + required objects in the entry have appropriate values. Rows + that are not complete or not in service are not known by the + script runtime system. + + Attempts to `destroy' a row or to set a row `notInService' + while the smScriptOperStatus is `enabled' will result in an + inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smScriptStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smScriptEntry 9 } + +smScriptError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if the + + + transition into the operational status `enabled' failed. + Implementations must reset the error message to a + zero-length string when a new attempt to change the + script status to `enabled' is started." + DEFVAL { ''H } + ::= { smScriptEntry 10 } + +smScriptLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this script table entry was last + modified. The value '0000000000000000'H is returned if + the script table entry has not yet been modified. + + Note that the resetting of smScriptError is not considered + a change of the script table entry." + DEFVAL { '0000000000000000'H } + ::= { smScriptEntry 11 } + +-- +-- Access to script code via SNMP +-- +-- The smCodeTable allows script code to be read and modified +-- via SNMP. +-- + +smCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the script code for scripts that are + written via SNMP write operations." + ::= { smScriptObjects 2 } + +smCodeEntry OBJECT-TYPE + SYNTAX SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular fragment of a script." + INDEX { smScriptOwner, smScriptName, smCodeIndex } + ::= { smCodeTable 1 } + +SmCodeEntry ::= SEQUENCE { + smCodeIndex Unsigned32, + + + smCodeText OCTET STRING, + smCodeRowStatus RowStatus +} + +smCodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value identifying this code fragment." + ::= { smCodeEntry 1 } + +smCodeText OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The code that makes up a fragment of a script. The format + of this code fragment depends on the script language which + is identified by the associated smScriptLanguage object." + ::= { smCodeEntry 2 } + +smCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smCodeEntry 3 } + +-- +-- Script execution. +-- +-- This group defines tables which allow script execution to be +-- initiated, suspended, resumed, and terminated. It also provides +-- a mechanism for keeping a history of recent script executions +-- and their results. +-- + +smRunObjects OBJECT IDENTIFIER ::= { smObjects 4 } + +smLaunchTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLaunchEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "This table lists and describes scripts that are ready + to be executed together with their parameters." + ::= { smRunObjects 1 } + +smLaunchEntry OBJECT-TYPE + SYNTAX SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular executable script." + INDEX { smLaunchOwner, smLaunchName } + ::= { smLaunchTable 1 } + +SmLaunchEntry ::= SEQUENCE { + smLaunchOwner SnmpAdminString, + smLaunchName SnmpAdminString, + smLaunchScriptOwner SnmpAdminString, + smLaunchScriptName SnmpAdminString, + smLaunchArgument OCTET STRING, + smLaunchMaxRunning Unsigned32, + smLaunchMaxCompleted Unsigned32, + smLaunchLifeTime TimeInterval, + smLaunchExpireTime TimeInterval, + smLaunchStart Integer32, + smLaunchControl INTEGER, + smLaunchAdminStatus INTEGER, + smLaunchOperStatus INTEGER, + smLaunchRunIndexNext Integer32, + smLaunchStorageType StorageType, + smLaunchRowStatus RowStatus, + smLaunchError SnmpAdminString, + smLaunchLastChange DateAndTime, + smLaunchRowExpireTime TimeInterval +} + +smLaunchOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smLaunchTable. Every + instance of a running script started from a particular entry + in the smLaunchTable (i.e. entries in the smRunTable) will + be owned by the same smLaunchOwner used to index the entry + in the smLaunchTable. This owner is not necessarily the same + as the owner of the script itself (smLaunchScriptOwner)." + + + ::= { smLaunchEntry 1 } + +smLaunchName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + launch table entry. This object allows an smLaunchOwner to + have multiple entries in the smLaunchTable. The smLaunchName + is an arbitrary name that must be different from any other + smLaunchTable entries with the same smLaunchOwner but can be + the same as other entries in the smLaunchTable with + different smLaunchOwner values. Note that the value of + smLaunchName is not related in any way to the name of the + script being launched." + ::= { smLaunchEntry 2 } + +smLaunchScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + smLaunchScriptName identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this object will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 3 } + +smLaunchScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + the smLaunchScriptOwner identifies the script that can be + launched from this smLaunchTable entry. The zero-length + string may be used to point to a non-existing script. + + Attempts to write this object will fail with an + inconsistentValue error if the value of smLaunchOperStatus + is `enabled'." + DEFVAL { ''H } + ::= { smLaunchEntry 4 } + +smLaunchArgument OBJECT-TYPE + SYNTAX OCTET STRING + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The argument supplied to the script. When a script is + invoked, the value of this object is used to initialize + the smRunArgument object." + DEFVAL { ''H } + ::= { smLaunchEntry 5 } + +smLaunchMaxRunning OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of concurrently running scripts that may + be invoked from this entry in the smLaunchTable. Lowering + the current value of this object does not affect any scripts + that are already executing." + DEFVAL { 1 } + ::= { smLaunchEntry 6 } + +smLaunchMaxCompleted OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of finished scripts invoked from this + entry in the smLaunchTable allowed to be retained in the + smRunTable. Whenever the value of this object is changed + and whenever a script terminates, entries in the smRunTable + are deleted if necessary until the number of completed + scripts is smaller than the value of this object. Scripts + whose smRunEndTime value indicates the oldest completion + time are deleted first." + DEFVAL { 1 } + ::= { smLaunchEntry 7 } + +smLaunchLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time a script launched + from this entry may run. The value of this object is used + to initialize the smRunLifeTime object when a script is + launched. Changing the value of an smLaunchLifeTime + instance does not affect scripts previously launched from + + + this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 8 } + +smLaunchExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time information about a + script launched from this entry is kept in the smRunTable + after the script has completed execution. The value of + this object is used to initialize the smRunExpireTime + object when a script is launched. Changing the value of an + smLaunchExpireTime instance does not affect scripts + previously launched from this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 9 } + +smLaunchStart OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to start the execution of scripts. + When retrieved, the value will be the value of smRunIndex + for the last script that started execution by manipulating + this object. The value will be zero if no script started + execution yet. + + A script is started by setting this object to an unused + smRunIndex value. A new row in the smRunTable will be + created which is indexed by the value supplied by the + set-request in addition to the value of smLaunchOwner and + smLaunchName. An unused value can be obtained by reading + the smLaunchRunIndexNext object. + + Setting this object to the special value 0 will start + the script with a self-generated smRunIndex value. The + consequence is that the script invoker has no reliable + way to determine the smRunIndex value for this script + invocation and that the invoker has therefore no way + to obtain the results from this script invocation. The + special value 0 is however useful for scheduled script + invocations. + + If this object is set, the following checks must be + + + performed: + + 1) The value of the smLaunchOperStatus object in this + entry of the smLaunchTable must be `enabled'. + 2) The values of smLaunchScriptOwner and + smLaunchScriptName of this row must identify an + existing entry in the smScriptTable. + 3) The value of smScriptOperStatus of this entry must + be `enabled'. + 4) The principal performing the set operation must have + read access to the script. This must be checked by + calling the isAccessAllowed abstract service interface + defined in RFC 2271 on the row in the smScriptTable + identified by smLaunchScriptOwner and smLaunchScriptName. + The isAccessAllowed abstract service interface must be + called on all columnar objects in the smScriptTable with + a MAX-ACCESS value different than `not-accessible'. The + test fails as soon as a call indicates that access is + not allowed. + 5) If the value provided by the set operation is not 0, + a check must be made that the value is currently not + in use. Otherwise, if the value provided by the set + operation is 0, a suitable unused value must be + generated. + 6) The number of currently executing scripts invoked + from this smLaunchTable entry must be less than + smLaunchMaxRunning. + + Attempts to start a script will fail with an + inconsistentValue error if one of the checks described + above fails. + + Otherwise, if all checks have been passed, a new entry + in the smRunTable will be created indexed by smLaunchOwner, + smLaunchName and the new value for smRunIndex. The value + of smLaunchArgument will be copied into smRunArgument, + the value of smLaunchLifeTime will be copied to + smRunLifeTime, and the value of smLaunchExpireTime + will be copied to smRunExpireTime. + + The smRunStartTime will be set to the current time and + the smRunState will be set to `initializing' before the + script execution is initiated in the appropriate runtime + system. + + Note that the data type and the range of this object must + be consistent with the smRunIndex object. Since this + object might be written from the scheduling MIB, the + + + data type Integer32 rather than Unsigned32 is used." + DEFVAL { 0 } + ::= { smLaunchEntry 10 } + +smLaunchControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to request a state change for all + running scripts in the smRunTable that were started from + this row in the smLaunchTable. + + Setting this object to abort(1), suspend(2) or resume(3) + will set the smRunControl object of all applicable rows + in the smRunTable to abort(1), suspend(2) or resume(3) + respectively. The phrase `applicable rows' means the set of + rows which were created from this entry in the smLaunchTable + and whose value of smRunState allows the corresponding + state change as described in the definition of the + smRunControl object. Setting this object to nop(4) has no + effect. + + Attempts to set this object lead to an inconsistentValue + error only if all implicated sets on all the applicable + rows lead to inconsistentValue errors. It is not allowed + to return an inconsistentValue error if at least one state + change on one of the applicable rows was successful." + DEFVAL { nop } + ::= { smLaunchEntry 11 } + +smLaunchAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + autostart(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + this launch table entry. The values enabled(1) and + autostart(3) both indicate that the launch table entry + + + should transition into the operational enabled(1) state as + soon as the associated script table entry is enabled(1). + + The value autostart(3) further indicates that the script + is started automatically by conceptually writing the + value 0 into the associated smLaunchStart object during + the transition from the `disabled' into the `enabled' + operational state. This is useful for scripts that are + to be launched on system start-up." + DEFVAL { disabled } + ::= { smLaunchEntry 12 } + +smLaunchOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + expired(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the actual status of + this launch table entry. The smLaunchOperStatus object + may have the following values: + + - `enabled' indicates that the launch table entry is + available and can be used to start scripts. + + - `disabled' indicates that the launch table entry can + not be used to start scripts. + + - `expired' indicates that the launch table entry can + not be used to start scripts and will disappear as + soon as all smRunTable entries associated with this + launch table entry have disappeared. + + The value `enabled' requires that the smLaunchRowStatus + object is active. The value `disabled' requires that there + are no entries in the smRunTable associated with this + smLaunchTable entry." + DEFVAL { disabled } + ::= { smLaunchEntry 13 } + +smLaunchRunIndexNext OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This variable is used for creating rows in the smRunTable. + The value of this variable is a currently unused value + for smRunIndex, which can be written into the smLaunchStart + object associated with this row to launch a script. + + The value returned when reading this variable must be unique + for the smLaunchOwner and smLaunchName associated with this + row. Subsequent attempts to read this variable must return + different values. + + This variable will return the special value 0 if no new rows + can be created. + + Note that the data type and the range of this object must be + consistent with the definition of smRunIndex." + ::= { smLaunchEntry 14 } + +smLaunchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines if this row is kept in volatile storage + and lost upon reboot or if this row is backed up by stable + storage. + + The value of smLaunchStorageType is only meaningful if the + value of the corresponding RowStatus object is active. + + If smLaunchStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smLaunchStorageType and + smLaunchRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smLaunchEntry 15 } + +smLaunchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Attempts to `destroy' a row or to set a row `notInService' + while the smLaunchOperStatus is `enabled' will result in + an inconsistentValue error. + + + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smLaunchStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smLaunchEntry 16 } + +smLaunchError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if an + attempt to launch a script fails. Implementations must reset + the error message to a zero-length string when a new attempt + to launch a script is started." + DEFVAL { ''H } + ::= { smLaunchEntry 17 } + +smLaunchLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this launch table entry was last + modified. The value '0000000000000000'H is returned if + the launch table entry has not yet been modified. + + Note that a change of smLaunchStart, smLaunchControl, + smLaunchRunIndexNext, smLaunchRowExpireTime, or the + resetting of smLaunchError is not considered a change + of this launch table entry." + DEFVAL { '0000000000000000'H } + ::= { smLaunchEntry 18 } + +smLaunchRowExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies how long this row remains + in the `enabled' or `disabled' operational state. The value + reported by this object ticks backwards. When the value + reaches 0, it stops ticking backward and the row is + deleted if there are no smRunTable entries associated with + + + this smLaunchTable entry. Otherwise, the smLaunchOperStatus + changes to `expired' and the row deletion is deferred + until there are no smRunTable entries associated with this + smLaunchTable entry. + + The smLaunchRowExpireTime will not tick backwards if it is + set to its maximum value (2147483647). In other words, + setting this object to its maximum value turns the timer + off. + + The value of this object may be set in order to increase + or reduce the remaining time that the launch table entry + may be used. Setting the value to 0 will cause an immediate + row deletion or transition into the `expired' operational + state. + + It is not possible to set this object while the operational + status is `expired'. Attempts to modify this object while + the operational status is `expired' leads to an + inconsistentValue error. + + Note that the timer ticks backwards independent of the + operational state of the launch table entry." + DEFVAL { 2147483647 } + ::= { smLaunchEntry 19 } + + +smRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are currently + running or have been running in the past." + ::= { smRunObjects 2 } + +smRunEntry OBJECT-TYPE + SYNTAX SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular running or finished + script." + INDEX { smLaunchOwner, smLaunchName, smRunIndex } + ::= { smRunTable 1 } + +SmRunEntry ::= SEQUENCE { + smRunIndex Integer32, + + + smRunArgument OCTET STRING, + smRunStartTime DateAndTime, + smRunEndTime DateAndTime, + smRunLifeTime TimeInterval, + smRunExpireTime TimeInterval, + smRunExitCode INTEGER, + smRunResult OCTET STRING, + smRunControl INTEGER, + smRunState INTEGER, + smRunError SnmpAdminString, + smRunResultTime DateAndTime, + smRunErrorTime DateAndTime +} + +smRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this running or finished script. This value must be + unique for all rows in the smRunTable with the same + smLaunchOwner and smLaunchName. + + Note that the data type and the range of this object must + be consistent with the definition of smLaunchRunIndexNext + and smLaunchStart." + ::= { smRunEntry 1 } + +smRunArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The argument supplied to the script when it started." + DEFVAL { ''H } + ::= { smRunEntry 2 } + +smRunStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution started. The value + '0000000000000000'H is returned if the script has not + started yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 3 } + + +smRunEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution terminated. The value + '0000000000000000'H is returned if the script has not + terminated yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 4 } + +smRunLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies how long the script can execute. + This object returns the remaining time that the script + may run. The object is initialized with the value of the + associated smLaunchLifeTime object and ticks backwards. + The script is aborted immediately when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the script may run. Setting + this value to 0 will abort script execution immediately, + and, if the value of smRunExpireTime is also 0, will remove + this entry from the smRunTable once it has terminated. + + If smRunLifeTime is set to its maximum value (2147483647), + either by a set operation or by its initialization from the + smLaunchLifeTime object, then it will not tick backwards. + A running script with a maximum smRunLifeTime value will + thus never be terminated with a `lifeTimeExceeded' exit + code. + + The value of smRunLifeTime reflects the real-time execution + time as seen by the outside world. The value of this object + will always be 0 for a script that finished execution, that + is smRunState has the value `terminated'. + + The value of smRunLifeTime does not change while a script + is suspended, that is smRunState has the value `suspended'. + Note that this does not affect set operations. It is legal + to modify smRunLifeTime via set operations while a script + is suspended." + ::= { smRunEntry 5 } + + + +smRunExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object specifies how long this row can + exist in the smRunTable after the script has terminated. + This object returns the remaining time that the row may + exist before it is aged out. The object is initialized with + the value of the associated smLaunchExpireTime object and + ticks backwards. The entry in the smRunTable is destroyed + when the value reaches 0 and the smRunState has the value + `terminated'. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + smRunState has the value `terminated'." + ::= { smRunEntry 6 } + +smRunExitCode OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + halted(2), + lifeTimeExceeded(3), + noResourcesLeft(4), + languageError(5), + runtimeError(6), + invalidArgument(7), + securityViolation(8), + genericError(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the reason why a + script finished execution. The smRunExitCode code may have + one of the following values: + + - `noError', which indicates that the script completed + successfully without errors; + + - `halted', which indicates that the script was halted + by a request from an authorized manager; + + - `lifeTimeExceeded', which indicates that the script + exited because a time limit was exceeded; + + + - `noResourcesLeft', which indicates that the script + exited because it ran out of resources (e.g. memory); + + - `languageError', which indicates that the script exited + because of a language error (e.g. a syntax error in an + interpreted language); + + - `runtimeError', which indicates that the script exited + due to a runtime error (e.g. a division by zero); + + - `invalidArgument', which indicates that the script could + not be run because of invalid script arguments; + + - `securityViolation', which indicates that the script + exited due to a security violation; + + - `genericError', which indicates that the script exited + for an unspecified reason. + + If the script has not yet begun running, or is currently + running, the value will be `noError'." + DEFVAL { noError } + ::= { smRunEntry 7 } + +smRunResult OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result value produced by the running script. Note that + the result may change while the script is executing." + DEFVAL { ''H } + ::= { smRunEntry 8 } + +smRunControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of the + script execution defined by this row. + + Setting this object to `abort' will abort execution if the + + + value of smRunState is `initializing', `executing', + `suspending', `suspended' or `resuming'. Setting this object + to `abort' when the value of smRunState is `aborting' or + `terminated', or if the implementation can determine that + the attempt to abort the execution would fail, will result + in an inconsistentValue error. + + Setting this object to `suspend' will suspend execution + if the value of smRunState is `executing'. Setting this + object to `suspend' will cause an inconsistentValue error + if the value of smRunState is not `executing' or if the + implementation can determine that the attempt to suspend + the execution would fail. + + Setting this object to `resume' will resume execution + if the value of smRunState is `suspending' or + `suspended'. Setting this object to `resume' will cause an + inconsistentValue error if the value of smRunState is + not `suspended' or if the implementation can determine + that the attempt to resume the execution would fail. + + Setting this object to nop(4) has no effect." + DEFVAL { nop } + ::= { smRunEntry 9 } + +smRunState OBJECT-TYPE + SYNTAX INTEGER { + initializing(1), + executing(2), + suspending(3), + suspended(4), + resuming(5), + aborting(6), + terminated(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the script's execution + state. If the script has been invoked but has not yet + begun execution, the value will be `initializing'. If the + script is running, the value will be `executing'. + + A running script which received a request to suspend + execution first transitions into a temporary `suspending' + state. The temporary `suspending' state changes to + `suspended' when the script has actually been suspended. The + temporary `suspending' state changes back to `executing' if + + + the attempt to suspend the running script fails. + + A suspended script which received a request to resume + execution first transitions into a temporary `resuming' + state. The temporary `resuming' state changes to `running' + when the script has actually been resumed. The temporary + `resuming' state changes back to `suspended' if the attempt + to resume the suspended script fails. + + A script which received a request to abort execution but + which is still running first transitions into a temporary + `aborting' state. + + A script which has finished its execution is `terminated'." + ::= { smRunEntry 10 } + +smRunError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if the + script startup or execution raised an abnormal condition. + An implementation must store a descriptive error message + in this object if the script exits with the smRunExitCode + `genericError'." + DEFVAL { ''H } + ::= { smRunEntry 11 } + +smRunResultTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the smRunResult was last updated. + The value '0000000000000000'H is returned if smRunResult + has not yet been updated after the creation of this + smRunTable entry." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 12 } + +smRunErrorTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the smRunError was last updated. + The value '0000000000000000'H is returned if smRunError + + + has not yet been updated after the creation of this + smRunTable entry." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 13 } + +-- +-- Notifications. The definition of smTraps makes notification +-- registrations reversible (see STD 58, RFC 2578). +-- + +smTraps OBJECT IDENTIFIER ::= { smNotifications 0 } + +smScriptAbort NOTIFICATION-TYPE + OBJECTS { smRunExitCode, smRunEndTime, smRunError } + STATUS current + DESCRIPTION + "This notification is generated whenever a running script + terminates with an smRunExitCode unequal to `noError'." + ::= { smTraps 1 } + +smScriptResult NOTIFICATION-TYPE + OBJECTS { smRunResult } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about results produced by the + script. + + This notification is not automatically generated by the + Script MIB implementation. It is the responsibility of + the executing script to emit this notification where it + is appropriate to do so." + ::= { smTraps 2 } + +smScriptException NOTIFICATION-TYPE + OBJECTS { smRunError } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about script errors. + + This notification is not automatically generated by the + Script MIB implementation. It is the responsibility of + the executing script or the runtime system to emit this + notification where it is appropriate to do so." + ::= { smTraps 3 } + +-- conformance information + + +smCompliances OBJECT IDENTIFIER ::= { smConformance 1 } +smGroups OBJECT IDENTIFIER ::= { smConformance 2 } + +-- compliance statements + +smCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the Script MIB." + MODULE -- this module + MANDATORY-GROUPS { + smLanguageGroup, smScriptGroup2, smLaunchGroup2, + smRunGroup2, smNotificationsGroup2 + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smCodeText + DESCRIPTION + "A compliant implementation need only support write access to + the smCodeText object only during row creation." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + + + ::= { smCompliances 2 } + +smLanguageGroup OBJECT-GROUP + OBJECTS { + smLangLanguage, smLangVersion, + smLangVendor, smLangRevision, + smLangDescr, smExtsnExtension, + smExtsnVersion, smExtsnVendor, + smExtsnRevision, smExtsnDescr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + capabilities of the scripting engine." + ::= { smGroups 1 } + +smScriptGroup2 OBJECT-GROUP + OBJECTS { + smScriptDescr, smScriptLanguage, + smScriptSource, smScriptAdminStatus, + smScriptOperStatus, smScriptStorageType, + smScriptRowStatus, smScriptError, + smScriptLastChange + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + installed scripts." + ::= { smGroups 7 } + +smCodeGroup OBJECT-GROUP + OBJECTS { + smCodeText, smCodeRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to download or modify scripts + by using SNMP set requests." + ::= { smGroups 3 } + +smLaunchGroup2 OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, smLaunchScriptName, + smLaunchArgument, smLaunchMaxRunning, + smLaunchMaxCompleted, smLaunchLifeTime, + smLaunchExpireTime, smLaunchStart, + smLaunchControl, smLaunchAdminStatus, + smLaunchOperStatus, smLaunchRunIndexNext, + + + smLaunchStorageType, smLaunchRowStatus, + smLaunchError, smLaunchLastChange, + smLaunchRowExpireTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 8 } + +smRunGroup2 OBJECT-GROUP + OBJECTS { + smRunArgument, smRunStartTime, + smRunEndTime, smRunLifeTime, + smRunExpireTime, smRunExitCode, + smRunResult, smRunState, + smRunControl, smRunError, + smRunResultTime, smRunErrorTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 9 } + +smNotificationsGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult, + smScriptException + } + STATUS current + DESCRIPTION + "The notifications emitted by the Script MIB." + ::= { smGroups 10 } + +-- +-- Deprecated compliance and conformance group definitions +-- from RFC 2592. +-- + +smCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which implement + the Script MIB." + MODULE -- this module + MANDATORY-GROUPS { + + + smLanguageGroup, smScriptGroup, smLaunchGroup, smRunGroup + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smCodeText + DESCRIPTION + "A compliant implementation need only support write access + to the smCodeText object during row creation." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + ::= { smCompliances 1 } + +smScriptGroup OBJECT-GROUP + OBJECTS { + smScriptDescr, smScriptLanguage, + smScriptSource, smScriptAdminStatus, + smScriptOperStatus, smScriptStorageType, + smScriptRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about + installed scripts." + + + ::= { smGroups 2 } + +smLaunchGroup OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, smLaunchScriptName, + smLaunchArgument, smLaunchMaxRunning, + smLaunchMaxCompleted, smLaunchLifeTime, + smLaunchExpireTime, smLaunchStart, + smLaunchControl, smLaunchAdminStatus, + smLaunchOperStatus, smLaunchRunIndexNext, + smLaunchStorageType, smLaunchRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 4 } + +smRunGroup OBJECT-GROUP + OBJECTS { + smRunArgument, smRunStartTime, + smRunEndTime, smRunLifeTime, + smRunExpireTime, smRunExitCode, + smRunResult, smRunState, + smRunControl, smRunError + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 5 } + +smNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult + } + STATUS deprecated + DESCRIPTION + "The notifications emitted by the Script MIB." + ::= { smGroups 6 } + +END diff --git a/mibs/ietf/DISMAN-TRACEROUTE-MIB b/mibs/ietf/DISMAN-TRACEROUTE-MIB new file mode 100644 index 0000000..402cd49 --- /dev/null +++ b/mibs/ietf/DISMAN-TRACEROUTE-MIB @@ -0,0 +1,1946 @@ +DISMAN-TRACEROUTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Gauge32, Unsigned32, mib-2, + NOTIFICATION-TYPE, + OBJECT-IDENTITY + FROM SNMPv2-SMI -- RFC2578 + RowStatus, StorageType, + TruthValue, DateAndTime + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InterfaceIndexOrZero -- RFC2863 + FROM IF-MIB + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- RFC4001 + OperationResponseStatus + FROM DISMAN-PING-MIB; -- RFC4560 + + traceRouteMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Traceroute MIB (DISMAN-TRACEROUTE-MIB) provides + access to the traceroute capability at a remote host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Correctly considered IPv6 in DESCRIPTION clause of + object traceRouteCtlDataSize + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Clarified DESCRIPTION clause of object + traceRouteResultsLastGoodPath + - Changed range of object traceRouteCtlInitialTtl + from (0..255) to (1..255) + - Extended DESCRIPTION clause of traceRouteResultsTable + describing re-initialization of entries + - Changed SYNTAX of traceRouteResultsTestAttempts and + traceRouteResultsTestSuccesses from Unsigned32 to + Gauge32 + - Changed status of traceRouteCompliance to deprecated + - Added traceRouteFullCompliance and + traceRouteMinimumCompliance + - Changed status of traceRouteGroup and + traceRouteTimeStampGroup to deprecated + - Added traceRouteMinimumGroup, + traceRouteCtlRowStatusGroup, and + traceRouteHistoryGroup + - Changed DEFVAL of object + traceRouteCtlTargetAddressType from { ipv4 } + to { unknown } + - Changed DEFVAL of object traceRouteCtlDescr + from { '00'H } to { ''H } + - Added DEFVAL for object traceRouteCtlTrapGeneration + of DEFVAL { { } }" + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 81 } + + -- Top level structure of the MIB + + traceRouteNotifications OBJECT IDENTIFIER ::= { traceRouteMIB 0 } + traceRouteObjects OBJECT IDENTIFIER ::= { traceRouteMIB 1 } + traceRouteConformance OBJECT IDENTIFIER ::= { traceRouteMIB 2 } + + -- The registration node (point) for traceroute implementation types + + traceRouteImplementationTypeDomains OBJECT IDENTIFIER + ::= { traceRouteMIB 3 } + + + traceRouteUsingUdpProbes OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using UDP probes to + perform the traceroute operation." + ::= { traceRouteImplementationTypeDomains 1 } + + + -- Simple Object Definitions + + traceRouteMaxConcurrentRequests OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active traceroute requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceeds the limit just imposed." + DEFVAL { 10 } + ::= { traceRouteObjects 1 } + + + -- Traceroute Control Table + + traceRouteCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Control Table for + providing the capability of invoking traceroute from a remote + host. The results of traceroute operations can be stored in + the traceRouteResultsTable, traceRouteProbeHistoryTable, and + the traceRouteHopsTable." + ::= { traceRouteObjects 2 } + + traceRouteCtlEntry OBJECT-TYPE + SYNTAX TraceRouteCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "Defines an entry in the traceRouteCtlTable. The first + index element, traceRouteCtlOwnerIndex, is of type + SnmpAdminString, a textual convention that allows for + use of the SNMPv3 View-Based Access Control Model + (RFC 3415, VACM) and that allows a management + application to identify its entries. The second index, + traceRouteCtlTestName (also an SnmpAdminString), + enables the same management application to have + multiple requests outstanding." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName + } + ::= { traceRouteCtlTable 1 } + + TraceRouteCtlEntry ::= + SEQUENCE { + traceRouteCtlOwnerIndex SnmpAdminString, + traceRouteCtlTestName SnmpAdminString, + traceRouteCtlTargetAddressType InetAddressType, + traceRouteCtlTargetAddress InetAddress, + traceRouteCtlByPassRouteTable TruthValue, + traceRouteCtlDataSize Unsigned32, + traceRouteCtlTimeOut Unsigned32, + traceRouteCtlProbesPerHop Unsigned32, + traceRouteCtlPort Unsigned32, + traceRouteCtlMaxTtl Unsigned32, + traceRouteCtlDSField Unsigned32, + traceRouteCtlSourceAddressType InetAddressType, + traceRouteCtlSourceAddress InetAddress, + traceRouteCtlIfIndex InterfaceIndexOrZero, + traceRouteCtlMiscOptions SnmpAdminString, + traceRouteCtlMaxFailures Unsigned32, + traceRouteCtlDontFragment TruthValue, + traceRouteCtlInitialTtl Unsigned32, + traceRouteCtlFrequency Unsigned32, + traceRouteCtlStorageType StorageType, + traceRouteCtlAdminStatus INTEGER, + traceRouteCtlDescr SnmpAdminString, + traceRouteCtlMaxRows Unsigned32, + traceRouteCtlTrapGeneration BITS, + traceRouteCtlCreateHopsEntries TruthValue, + traceRouteCtlType OBJECT IDENTIFIER, + traceRouteCtlRowStatus RowStatus + } + + traceRouteCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 3415, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used as + an 'owner index'. Such an initial index has a syntax of + SnmpAdminString and can thus be trivially mapped to a + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy, + all entries in the table belonging to a particular user + (or group) will have the same value for this initial + index. For a given user's entries in a particular + table, the object identifiers for the information in + these entries will have the same subidentifiers (except + for the 'column' subidentifier) up to the end of the + encoded owner index. To configure VACM to permit access + to this portion of the table, one would create + vacmViewTreeFamilyTable entries with the value of + vacmViewTreeFamilySubtree including the owner index + portion, and vacmViewTreeFamilyMask 'wildcarding' the + column subidentifier. More elaborate configurations + are possible." + ::= { traceRouteCtlEntry 1 } + + traceRouteCtlTestName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a traceroute test. This is locally unique, + within the scope of a traceRouteCtlOwnerIndex." + ::= { traceRouteCtlEntry 2 } + + traceRouteCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of host address to be used on the + traceroute request at the remote host." + DEFVAL { unknown } + ::= { traceRouteCtlEntry 3 } + + + + traceRouteCtlTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the host address used on the + traceroute request at the remote host. The + host address type can be determined by + examining the value of the corresponding + traceRouteCtlTargetAddressType. + + A value for this object MUST be set prior to + transitioning its corresponding traceRouteCtlEntry to + active(1) via traceRouteCtlRowStatus." + ::= { traceRouteCtlEntry 4 } + + traceRouteCtlByPassRouteTable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to enable optional + bypassing the route table. If enabled, the remote + host will bypass the normal routing tables and send + directly to a host on an attached network. If the + host is not on a directly attached network, an + error is returned. This option can be used to perform + the traceroute operation to a local host through an + interface that has no route defined (e.g., after the + interface was dropped by the routing daemon at the host)." + DEFVAL { false } + ::= { traceRouteCtlEntry 5 } + + traceRouteCtlDataSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65507) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the size of the data portion of a traceroute + request, in octets. If the RECOMMENDED traceroute method + (UDP datagrams as probes) is used, then the value + contained in this object MUST be applied. If another + traceroute method is used for which the specified size + is not appropriate, then the implementation SHOULD use + whatever size (appropriate to the method) is closest to + the specified size. + + + + + The maximum value for this object was computed by + subtracting the smallest possible IP header size of + 20 octets (IPv4 header with no options) and the UDP + header size of 8 octets from the maximum IP packet size. + An IP packet has a maximum size of 65535 octets + (excluding IPv6 Jumbograms)." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 6 } + + traceRouteCtlTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the time-out value, in seconds, for + a traceroute request." + DEFVAL { 3 } + ::= { traceRouteCtlEntry 7 } + + traceRouteCtlProbesPerHop OBJECT-TYPE + SYNTAX Unsigned32 (1..10) + UNITS "probes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of times to reissue a traceroute + request with the same time-to-live (TTL) value." + DEFVAL { 3 } + ::= { traceRouteCtlEntry 8 } + + traceRouteCtlPort OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "UDP Port" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the (initial) UDP port to send the traceroute + request to. A port needs to be specified that is not in + use at the destination (target) host. The default + value for this object is the IANA assigned port, + 33434, for the traceroute function." + DEFVAL { 33434 } + ::= { traceRouteCtlEntry 9 } + + traceRouteCtlMaxTtl OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + UNITS "time-to-live value" + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time-to-live value." + DEFVAL { 30 } + ::= { traceRouteCtlEntry 10 } + + traceRouteCtlDSField OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "Specifies the value to store in the Type of Service + (TOS) octet in the IPv4 header or in the Traffic + Class octet in the IPv6 header, respectively, of the + IP packet used to encapsulate the traceroute probe. + + The octet to be set in the IP header contains the + Differentiated Services (DS) Field in the six most + significant bits. + + This option can be used to determine what effect an + explicit DS Field setting has on a traceroute response. + Not all values are legal or meaningful. A value of 0 + means that the function represented by this option is + not supported. DS Field usage is often not supported + by IP implementations, and not all values are supported. + Refer to RFC 2474 and RFC 3260 for guidance on usage of + this field." + REFERENCE + "Refer to RFC 1812 for the definition of the IPv4 TOS + octet and to RFC 2460 for the definition of the IPv6 + Traffic Class octet. Refer to RFC 2474 and RFC 3260 + for the definition of the Differentiated Services Field." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 11 } + + traceRouteCtlSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of the source address, + traceRouteCtlSourceAddress, to be used at a remote host + when a traceroute operation is performed." + DEFVAL { unknown } + ::= { traceRouteCtlEntry 12 } + + + traceRouteCtlSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Use the specified IP address (which must be given as an + IP number, not a hostname) as the source address in + outgoing probe packets. On hosts with more than one IP + address, this option can be used to select the address + to be used. If the IP address is not one of this + machine's interface addresses, an error is returned, and + nothing is sent. A zero-length octet string value for + this object disables source address specification. + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of traceRouteCtlSourceAddressType." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 13 } + + traceRouteCtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to an interface's ifIndex prior + to starting a remote traceroute operation directs + the traceroute probes to be transmitted over the + specified interface. A value of zero for this object + implies that this option is not enabled." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 14 } + + traceRouteCtlMiscOptions OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Enables an application to specify implementation-dependent + options." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 15 } + + traceRouteCtlMaxFailures OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "timeouts" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The value of this object indicates the maximum number + of consecutive timeouts allowed before a remote traceroute + request is terminated. A value of either 255 (maximum + hop count/possible TTL value) or 0 indicates that the + function of terminating a remote traceroute request when a + specific number of consecutive timeouts are detected is + disabled." + DEFVAL { 5 } + ::= { traceRouteCtlEntry 16 } + + traceRouteCtlDontFragment OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables setting of the don't fragment flag (DF) + in the IP header for a probe. Use of this object enables + a manual PATH MTU test is performed." + DEFVAL { false } + ::= { traceRouteCtlEntry 17 } + + traceRouteCtlInitialTtl OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies the initial TTL value to + use. This enables bypassing the initial (often well known) + portion of a path." + DEFVAL { 1 } + ::= { traceRouteCtlEntry 18 } + + traceRouteCtlFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds to wait before repeating a + traceroute test, as defined by the value of the + various objects in the corresponding row. + + After a single test is completed the number of seconds + as defined by the value of traceRouteCtlFrequency MUST + elapse before the next traceroute test is started. + + A value of 0 for this object implies that the test + as defined by the corresponding entry will not be + + + repeated." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 19 } + + traceRouteCtlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { traceRouteCtlEntry 20 } + + traceRouteCtlAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + + enabled(1), -- operation should be started + disabled(2) -- operation should be stopped + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Reflects the desired state that an traceRouteCtlEntry + should be in: + + enabled(1) - Attempt to activate the test as defined by + this traceRouteCtlEntry. + disabled(2) - Deactivate the test as defined by this + traceRouteCtlEntry. + + Refer to the corresponding traceRouteResultsOperStatus to + determine the operational state of the test defined by + this entry." + DEFVAL { disabled } + ::= { traceRouteCtlEntry 21 } + + traceRouteCtlDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to provide a + descriptive name of the remote traceroute + test." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 22 } + + + traceRouteCtlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "rows" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of corresponding entries allowed + in the traceRouteProbeHistoryTable. An implementation + of this MIB will remove the oldest corresponding entry + in the traceRouteProbeHistoryTable to allow the + addition of an new entry once the number of + corresponding rows in the traceRouteProbeHistoryTable + reaches this value. + + Old entries are not removed when a new test is + started. Entries are added to the + traceRouteProbeHistoryTable until traceRouteCtlMaxRows + is reached before entries begin to be removed. + A value of 0 for this object disables creation of + traceRouteProbeHistoryTable entries." + DEFVAL { 50 } + ::= { traceRouteCtlEntry 23 } + + traceRouteCtlTrapGeneration OBJECT-TYPE + SYNTAX BITS { + pathChange(0), + testFailure(1), + testCompletion(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines when and whether to + generate a notification for this entry: + + pathChange(0) - Generate a traceRoutePathChange + notification when the current path varies from a + previously determined path. + testFailure(1) - Generate a traceRouteTestFailed + notification when the full path to a target + can't be determined. + testCompletion(2) - Generate a traceRouteTestCompleted + notification when the path to a target has been + determined. + + The value of this object defaults to an empty set, + indicating that none of the above options has been + selected." + + + DEFVAL { { } } + ::= { traceRouteCtlEntry 24 } + + traceRouteCtlCreateHopsEntries OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current path for a traceroute test is kept in the + traceRouteHopsTable on a per-hop basis when the value of + this object is true(1)." + DEFVAL { false } + ::= { traceRouteCtlEntry 25 } + + traceRouteCtlType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used either to report or to + select the implementation method to be used for + performing a traceroute operation. The value of this + object may be selected from + traceRouteImplementationTypeDomains. + + Additional implementation types should be allocated as + required by implementers of the DISMAN-TRACEROUTE-MIB + under their enterprise specific registration point, + not beneath traceRouteImplementationTypeDomains." + DEFVAL { traceRouteUsingUdpProbes } + ::= { traceRouteCtlEntry 26 } + + traceRouteCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the traceRouteCtlTable. Deletion of an entry in + this table results in a deletion of all corresponding (same + traceRouteCtlOwnerIndex and traceRouteCtlTestName + index values) traceRouteResultsTable, + traceRouteProbeHistoryTable, and traceRouteHopsTable + entries. + + A value MUST be specified for traceRouteCtlTargetAddress + prior to acceptance of a transition to active(1) state. + + + + + When a value for pingCtlTargetAddress is set, + the value of object pingCtlRowStatus changes + from notReady(3) to notInService(2). + + Activation of a remote traceroute operation is + controlled via traceRouteCtlAdminStatus, and not + by transitioning of this object's value to active(1). + + Transitions in and out of active(1) state are not + allowed while an entry's traceRouteResultsOperStatus + is active(1), with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + traceroute operation. + + The operational state of an traceroute operation + can be determined by examination of the corresponding + traceRouteResultsOperStatus object." + REFERENCE + "See definition of RowStatus in RFC 2579, 'Textual + Conventions for SMIv2.'" + ::= { traceRouteCtlEntry 27 } + + + -- Traceroute Results Table + + traceRouteResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Results Table for + keeping track of the status of a traceRouteCtlEntry. + + An entry is added to the traceRouteResultsTable when an + traceRouteCtlEntry is started by successful transition + of its traceRouteCtlAdminStatus object to enabled(1). + + If the object traceRouteCtlAdminStatus already has the value + enabled(1), and if the corresponding + traceRouteResultsOperStatus object has the value + completed(3), then successfully writing enabled(1) to the + object traceRouteCtlAdminStatus re-initializes the already + existing entry in the traceRouteResultsTable. The values of + objects in the re-initialized entry are the same as + the values of objects in a new entry would be. + + An entry is removed from the traceRouteResultsTable when + + + + its corresponding traceRouteCtlEntry is deleted." + ::= { traceRouteObjects 3 } + + traceRouteResultsEntry OBJECT-TYPE + SYNTAX TraceRouteResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the traceRouteResultsTable. The + traceRouteResultsTable has the same indexing as the + traceRouteCtlTable so that a traceRouteResultsEntry + corresponds to the traceRouteCtlEntry that caused it to + be created." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName + } + ::= { traceRouteResultsTable 1 } + + TraceRouteResultsEntry ::= + SEQUENCE { + traceRouteResultsOperStatus INTEGER, + traceRouteResultsCurHopCount Gauge32, + traceRouteResultsCurProbeCount Gauge32, + traceRouteResultsIpTgtAddrType InetAddressType, + traceRouteResultsIpTgtAddr InetAddress, + traceRouteResultsTestAttempts Gauge32, + traceRouteResultsTestSuccesses Gauge32, + traceRouteResultsLastGoodPath DateAndTime + } + + traceRouteResultsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test is in progress + disabled(2), -- test has stopped + completed(3) -- test is completed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of an traceRouteCtlEntry: + + enabled(1) - Test is active. + disabled(2) - Test has stopped. + completed(3) - Test is completed." + ::= { traceRouteResultsEntry 1 } + + traceRouteResultsCurHopCount OBJECT-TYPE + + + SYNTAX Gauge32 + UNITS "hops" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the current TTL value (from 1 to + 255) for a remote traceroute operation. + Maximum TTL value is determined by + traceRouteCtlMaxTtl." + ::= { traceRouteResultsEntry 2 } + + traceRouteResultsCurProbeCount OBJECT-TYPE + SYNTAX Gauge32 + UNITS "probes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the current probe count (1..10) for + a remote traceroute operation. The maximum + probe count is determined by + traceRouteCtlProbesPerHop." + ::= { traceRouteResultsEntry 3 } + + traceRouteResultsIpTgtAddrType OBJECT-TYPE + SYNTAX InetAddressType + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding traceRouteResultsIpTgtAddr + object." + ::= { traceRouteResultsEntry 4 } + + traceRouteResultsIpTgtAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated + with a traceRouteCtlTargetAddress value when the + destination address is specified as a DNS name. + The value of this object should be a zero-length + octet string when a DNS name is not specified or + when a specified DNS name fails to resolve." + ::= { traceRouteResultsEntry 5 } + + traceRouteResultsTestAttempts OBJECT-TYPE + + + SYNTAX Gauge32 + UNITS "tests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of attempts to determine a path + to a target. The value of this object MUST be started + at 0." + ::= { traceRouteResultsEntry 6 } + + traceRouteResultsTestSuccesses OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of attempts to determine a path + to a target that have succeeded. The value of this + object MUST be reported as 0 when no attempts have + succeeded." + ::= { traceRouteResultsEntry 7 } + + traceRouteResultsLastGoodPath OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last complete path + was determined. A path is complete if responses + were received or timeout occurred for each hop on + the path; i.e., for each TTL value from the value + of the corresponding traceRouteCtlInitialTtl object + up to the end of the path or (if no reply from the + target IP address was received) up to the value of + the corresponding traceRouteCtlMaxTtl object." + ::= { traceRouteResultsEntry 8 } + + -- Trace Route Probe History Table + + traceRouteProbeHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Results Table + for storing the results of a traceroute operation. + + An implementation of this MIB will remove the oldest + + + entry in the traceRouteProbeHistoryTable of the + corresponding entry in the traceRouteCtlTable to allow + the addition of a new entry once the number of rows in + the traceRouteProbeHistoryTable reaches the value specified + by traceRouteCtlMaxRows for the corresponding entry in the + traceRouteCtlTable." + ::= { traceRouteObjects 4 } + + traceRouteProbeHistoryEntry OBJECT-TYPE + SYNTAX TraceRouteProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table for storing the results of a traceroute + operation. Entries in this table are limited by + the value of the corresponding traceRouteCtlMaxRows + object. + + The first two index elements identify the + traceRouteCtlEntry that a traceRouteProbeHistoryEntry + belongs to. The third index element selects a single + traceroute operation result. The fourth and fifth indexes + select the hop and the probe for a particular + traceroute operation." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName, + traceRouteProbeHistoryIndex, + traceRouteProbeHistoryHopIndex, + traceRouteProbeHistoryProbeIndex + + } + ::= { traceRouteProbeHistoryTable 1 } + + TraceRouteProbeHistoryEntry ::= + SEQUENCE { + traceRouteProbeHistoryIndex Unsigned32, + traceRouteProbeHistoryHopIndex Unsigned32, + traceRouteProbeHistoryProbeIndex Unsigned32, + traceRouteProbeHistoryHAddrType InetAddressType, + traceRouteProbeHistoryHAddr InetAddress, + traceRouteProbeHistoryResponse Unsigned32, + traceRouteProbeHistoryStatus OperationResponseStatus, + traceRouteProbeHistoryLastRC Integer32, + traceRouteProbeHistoryTime DateAndTime + } + + traceRouteProbeHistoryIndex OBJECT-TYPE + + + + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created when the result of + a traceroute probe is determined. The initial 2 instance + identifier index values identify the traceRouteCtlEntry + that a probe result (traceRouteProbeHistoryEntry) belongs + to. An entry is removed from this table when + its corresponding traceRouteCtlEntry is deleted. + + An implementation MUST start assigning + traceRouteProbeHistoryIndex values at 1 and wrap after + exceeding the maximum possible value, as defined by the + limit of this object ('ffffffff'h)." + ::= { traceRouteProbeHistoryEntry 1 } + + traceRouteProbeHistoryHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates which hop in a traceroute path the probe's + results are for. The value of this object is initially + determined by the value of traceRouteCtlInitialTtl." + ::= { traceRouteProbeHistoryEntry 2 } + + traceRouteProbeHistoryProbeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..10) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the index of a probe for a particular + hop in a traceroute path. The number of probes per + hop is determined by the value of the corresponding + traceRouteCtlProbesPerHop object." + ::= { traceRouteProbeHistoryEntry 3 } + + traceRouteProbeHistoryHAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This objects indicates the type of address stored + in the corresponding traceRouteProbeHistoryHAddr + object." + ::= { traceRouteProbeHistoryEntry 4 } + + + + + traceRouteProbeHistoryHAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of a hop in a traceroute path. This object + is not allowed to be a DNS name. The value of the + corresponding object, traceRouteProbeHistoryHAddrType, + indicates this object's IP address type." + ::= { traceRouteProbeHistoryEntry 5 } + + traceRouteProbeHistoryResponse OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time measured in milliseconds from when + a probe was sent to when its response was received or + when it timed out. The value of this object is reported + as 0 when it is not possible to transmit a probe." + ::= { traceRouteProbeHistoryEntry 6 } + + traceRouteProbeHistoryStatus OBJECT-TYPE + SYNTAX OperationResponseStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result of a traceroute operation made by a remote + host for a particular probe." + ::= { traceRouteProbeHistoryEntry 7 } + + traceRouteProbeHistoryLastRC OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The last implementation-method-specific reply code received. + + Traceroute is usually implemented by transmitting a series of + probe packets with increasing time-to-live values. A probe + packet is a UDP datagram encapsulated into an IP packet. + Each hop in a path to the target (destination) host rejects + the probe packets (probe's TTL too small, ICMP reply) until + either the maximum TTL is exceeded or the target host is + received." + ::= { traceRouteProbeHistoryEntry 8 } + + + + traceRouteProbeHistoryTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp for when this probe's results were determined." + ::= { traceRouteProbeHistoryEntry 9 } + + -- Traceroute Hop Results Table + + traceRouteHopsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteHopsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Hop Table for + keeping track of the results of traceroute tests on a + per-hop basis." + ::= { traceRouteObjects 5 } + + traceRouteHopsEntry OBJECT-TYPE + SYNTAX TraceRouteHopsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the traceRouteHopsTable. + The first two index elements identify the + traceRouteCtlEntry that a traceRouteHopsEntry + belongs to. The third index element, + traceRouteHopsHopIndex, selects a + hop in a traceroute path." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName, + traceRouteHopsHopIndex + } + + ::= { traceRouteHopsTable 1 } + + TraceRouteHopsEntry ::= + SEQUENCE { + traceRouteHopsHopIndex Unsigned32, + traceRouteHopsIpTgtAddressType InetAddressType, + traceRouteHopsIpTgtAddress InetAddress, + traceRouteHopsMinRtt Unsigned32, + traceRouteHopsMaxRtt Unsigned32, + traceRouteHopsAverageRtt Unsigned32, + traceRouteHopsRttSumOfSquares Unsigned32, + + + + traceRouteHopsSentProbes Unsigned32, + traceRouteHopsProbeResponses Unsigned32, + traceRouteHopsLastGoodProbe DateAndTime + } + + traceRouteHopsHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the hop index for a traceroute hop. Values + for this object with respect to the same + traceRouteCtlOwnerIndex and traceRouteCtlTestName + MUST start at 1 and be given increasing values for + subsequent hops. The value of traceRouteHopsHopIndex is not + necessarily the number of the hop on the traced path. + + The traceRouteHopsTable keeps the current traceroute + path per traceRouteCtlEntry if enabled by + setting the corresponding traceRouteCtlCreateHopsEntries + to true(1). + + All hops (traceRouteHopsTable entries) in a traceroute + path MUST be updated at the same time when a traceroute + operation is completed. Care needs to be applied when a path + either changes or can't be determined. The initial portion + of the path, up to the first hop change, MUST retain the + same traceRouteHopsHopIndex values. The remaining portion + of the path SHOULD be assigned new traceRouteHopsHopIndex + values." + ::= { traceRouteHopsEntry 1 } + + traceRouteHopsIpTgtAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding traceRouteHopsIpTgtAddress + object." + ::= { traceRouteHopsEntry 2 } + + traceRouteHopsIpTgtAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated with + + + + the hop. A value for this object should be reported + as a numeric IP address, not as a DNS name. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingCtlSourceAddressType." + ::= { traceRouteHopsEntry 3 } + + traceRouteHopsMinRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum traceroute round-trip-time (RTT) received for + this hop. A value of 0 for this object implies that no + RTT has been received." + ::= { traceRouteHopsEntry 4 } + + traceRouteHopsMaxRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum traceroute round-trip-time (RTT) received for + this hop. A value of 0 for this object implies that no + RTT has been received." + ::= { traceRouteHopsEntry 5 } + + traceRouteHopsAverageRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current average traceroute round-trip-time (RTT) for + this hop." + ::= { traceRouteHopsEntry 6 } + + traceRouteHopsRttSumOfSquares OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the sum of the squares of all + round-trip-times received for this hop. Its purpose is + to enable standard deviation calculation." + ::= { traceRouteHopsEntry 7 } + + traceRouteHopsSentProbes OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reflects the number of probes sent + for this hop during this traceroute test. The value of this + object should start at 0." + ::= { traceRouteHopsEntry 8 } + + traceRouteHopsProbeResponses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received for this hop during this + traceroute test. This value of this object should start + at 0." + ::= { traceRouteHopsEntry 9 } + + traceRouteHopsLastGoodProbe OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Date and time at which the last response was received for a + probe for this hop during this traceroute test." + ::= { traceRouteHopsEntry 10 } + + -- Notification Definition section + + traceRoutePathChange NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + } + STATUS current + DESCRIPTION + "The path to a target has changed." + ::= { traceRouteNotifications 1 } + + traceRouteTestFailed NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + + + + } + STATUS current + DESCRIPTION + "Could not determine the path to a target." + ::= { traceRouteNotifications 2 } + + traceRouteTestCompleted NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + } + STATUS current + DESCRIPTION + "The path to a target has just been determined." + ::= { traceRouteNotifications 3 } + + -- Conformance information + -- Compliance statements + + traceRouteCompliances OBJECT IDENTIFIER + ::= { traceRouteConformance 1 } + traceRouteGroups OBJECT IDENTIFIER + ::= { traceRouteConformance 2 } + + -- Compliance statements + + traceRouteFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-TRACEROUTE-MIB." + MODULE -- this module + MANDATORY-GROUPS { + traceRouteMinimumGroup, + traceRouteCtlRowStatusGroup, + traceRouteHistoryGroup + } + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + + + + "This group defines a collection of optional + notifications." + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of its + implementation. The function represented by this + object is implementable if the setsockopt + SOL_SOCKET SO_DONTROUTE option is supported." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + + + + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. If not + supporting, do not allow write access and return a + zero-length octet string as the value of the object." + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile(2) + StorageType enumeration." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsLastGoodPath + DESCRIPTION + "If the traceRouteHopsTableGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryTime + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + ::= { traceRouteCompliances 2 } + + traceRouteMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + which implement the minimal subset of the + DISMAN-TRACEROUTE-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + + + + MANDATORY-GROUPS { traceRouteMinimumGroup } + + GROUP traceRouteCtlRowStatusGroup + DESCRIPTION + "A compliant implementation does not have to implement + the traceRouteCtlRowStatusGroup." + + GROUP traceRouteHistoryGroup + DESCRIPTION + "A compliant implementation does not have to implement + the traceRouteHistoryGroup." + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + "This group defines a collection of optional + notifications." + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. If not + supporting, do not allow write access, and return a + zero-length octet string as the value of the object." + + OBJECT traceRouteCtlDontFragment + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT traceRouteCtlInitialTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 1 as the value of this object." + + OBJECT traceRouteCtlFrequency + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile(2) + StorageType enumeration." + + OBJECT traceRouteCtlDescr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT traceRouteCtlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteHistoryGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value of 0 when retrieved." + + OBJECT traceRouteCtlTrapGeneration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteNotificationsGroup is not implemented, then + write access to this object MUST be disabled, and the + object MUST return a value with no bit set when + retrieved. No bit set indicates that no notification + is generated." + + OBJECT traceRouteCtlCreateHopsEntries + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteHopsTableGroup is not implemented, then + write access to this object MUST be disabled, and the + object MUST return a value of false(2) when retrieved." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + + + + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsLastGoodPath + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryTime + DESCRIPTION + "If the traceRouteHistoryGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + + + + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsLastGoodProbe + DESCRIPTION + "If the traceRouteHopsTableGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + ::= { traceRouteCompliances 3 } + + traceRouteCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the DISMAN-TRACEROUTE-MIB. + This compliance statement has been deprecated because + the traceRouteGroup and the traceRouteTimeStampGroup + have been split and deprecated. The + traceRouteFullCompliance is semantically identical to the + deprecated traceRouteCompliance statement." + MODULE -- this module + MANDATORY-GROUPS { + traceRouteGroup + } + GROUP traceRouteTimeStampGroup + DESCRIPTION + "This group is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + "This group defines a collection of optional + notifications." + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of its implementation. The function + represented by this object is implementable if the + setsockopt SOL_SOCKET SO_DONTROUTE option is + supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. When not + supporting, do not allow write access, and return a + zero-length octet string as the value of the object." + + + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile + StorageType enumeration." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + ::= { traceRouteCompliances 1 } + + -- MIB groupings + + traceRouteMinimumGroup OBJECT-GROUP + OBJECTS { + traceRouteMaxConcurrentRequests, + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteCtlByPassRouteTable, + traceRouteCtlDataSize, + traceRouteCtlTimeOut, + traceRouteCtlProbesPerHop, + traceRouteCtlPort, + traceRouteCtlMaxTtl, + traceRouteCtlDSField, + traceRouteCtlSourceAddressType, + traceRouteCtlSourceAddress, + traceRouteCtlIfIndex, + traceRouteCtlMiscOptions, + traceRouteCtlMaxFailures, + traceRouteCtlDontFragment, + traceRouteCtlInitialTtl, + traceRouteCtlFrequency, + traceRouteCtlStorageType, + traceRouteCtlAdminStatus, + traceRouteCtlMaxRows, + traceRouteCtlTrapGeneration, + traceRouteCtlDescr, + traceRouteCtlCreateHopsEntries, + traceRouteCtlType, + traceRouteResultsOperStatus, + traceRouteResultsCurHopCount, + traceRouteResultsCurProbeCount, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr, + traceRouteResultsTestAttempts, + traceRouteResultsTestSuccesses, + traceRouteResultsLastGoodPath + + + + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote traceroute + operation." + ::= { traceRouteGroups 5 } + + traceRouteCtlRowStatusGroup OBJECT-GROUP + OBJECTS { + traceRouteCtlRowStatus + } + STATUS current + DESCRIPTION + "The RowStatus object of the traceRouteCtlTable." + ::= { traceRouteGroups 6 } + + traceRouteHistoryGroup OBJECT-GROUP + OBJECTS { + traceRouteProbeHistoryHAddrType, + traceRouteProbeHistoryHAddr, + traceRouteProbeHistoryResponse, + traceRouteProbeHistoryStatus, + traceRouteProbeHistoryLastRC, + traceRouteProbeHistoryTime + } + + STATUS current + DESCRIPTION + "The group of objects that constitute the history + capability." + ::= { traceRouteGroups 7 } + + traceRouteNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + traceRoutePathChange, + traceRouteTestFailed, + traceRouteTestCompleted + } + STATUS current + DESCRIPTION + "The notifications that are required to be supported by + implementations of this MIB." + ::= { traceRouteGroups 3 } + + traceRouteHopsTableGroup OBJECT-GROUP + OBJECTS { + traceRouteHopsIpTgtAddressType, + traceRouteHopsIpTgtAddress, + + + + traceRouteHopsMinRtt, + traceRouteHopsMaxRtt, + traceRouteHopsAverageRtt, + traceRouteHopsRttSumOfSquares, + traceRouteHopsSentProbes, + traceRouteHopsProbeResponses, + traceRouteHopsLastGoodProbe + } + STATUS current + DESCRIPTION + "The group of objects that constitute the + traceRouteHopsTable." + ::= { traceRouteGroups 4 } + + traceRouteGroup OBJECT-GROUP + OBJECTS { + traceRouteMaxConcurrentRequests, + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteCtlByPassRouteTable, + traceRouteCtlDataSize, + traceRouteCtlTimeOut, + traceRouteCtlProbesPerHop, + traceRouteCtlPort, + traceRouteCtlMaxTtl, + traceRouteCtlDSField, + traceRouteCtlSourceAddressType, + traceRouteCtlSourceAddress, + traceRouteCtlIfIndex, + traceRouteCtlMiscOptions, + traceRouteCtlMaxFailures, + traceRouteCtlDontFragment, + traceRouteCtlInitialTtl, + traceRouteCtlFrequency, + traceRouteCtlStorageType, + traceRouteCtlAdminStatus, + traceRouteCtlMaxRows, + traceRouteCtlTrapGeneration, + traceRouteCtlDescr, + traceRouteCtlCreateHopsEntries, + traceRouteCtlType, + traceRouteCtlRowStatus, + traceRouteResultsOperStatus, + traceRouteResultsCurHopCount, + traceRouteResultsCurProbeCount, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr, + traceRouteResultsTestAttempts, + + + + traceRouteResultsTestSuccesses, + traceRouteProbeHistoryHAddrType, + traceRouteProbeHistoryHAddr, + traceRouteProbeHistoryResponse, + traceRouteProbeHistoryStatus, + traceRouteProbeHistoryLastRC + } + STATUS deprecated + DESCRIPTION + "The group of objects that constitute the remote traceroute + operation." + ::= { traceRouteGroups 1 } + + traceRouteTimeStampGroup OBJECT-GROUP + OBJECTS { + traceRouteResultsLastGoodPath, + traceRouteProbeHistoryTime + } + STATUS deprecated + DESCRIPTION + "The group of DateAndTime objects." + ::= { traceRouteGroups 2 } + +END diff --git a/mibs/ietf/DLSW-MIB b/mibs/ietf/DLSW-MIB new file mode 100644 index 0000000..84a0dad --- /dev/null +++ b/mibs/ietf/DLSW-MIB @@ -0,0 +1,3571 @@ +DLSW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, RowStatus, + RowPointer, TruthValue, + TEXTUAL-CONVENTION FROM SNMPv2-TC + Counter32, Gauge32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, + NOTIFICATION-TYPE, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + sdlcLSAddress FROM SNA-SDLC-MIB; + +dlsw MODULE-IDENTITY + LAST-UPDATED "9606040900Z" + ORGANIZATION "AIW DLSw MIB RIGLET and IETF DLSw MIB Working Group" + CONTACT-INFO + "David D. Chen + IBM Corporation + 800 Park, Highway 54 + Research Triangle Park, NC 27709-9990 + Tel: 1 919 254 6182 + E-mail: dchen@vnet.ibm.com" + DESCRIPTION + "This MIB module contains objects to manage Data Link + Switches." +::= { mib-2 46 } + +dlswMIB OBJECT IDENTIFIER ::= { dlsw 1 } +dlswDomains OBJECT IDENTIFIER ::= { dlsw 2 } + +-- ******************************************************************* +-- Textual convention definitions +-- ******************************************************************* + +NBName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a single qualified NetBIOS name, which can include + `don't care' and `wildcard' characters to represent a number + of real NetBIOS names. If an individual character position in + the qualified name contains a `?', the corresponding character + position in a real NetBIOS name is a `don't care'. If the + qualified name ends in `*', the remainder of a real NetBIOS + name is a `don't care'. `*' is only considered a wildcard if it + appears at the end of a name." + SYNTAX OCTET STRING (SIZE (0..16)) + +MacAddressNC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents an 802 MAC address represented in + non-canonical format. That is, the most significant + bit will be transmitted first. If this information + is not available, the value is a zero length string." + SYNTAX OCTET STRING (SIZE (0 | 6)) + +TAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. + For dlswTCPDomain, a TAddress is 4 octets long, + containing the IP-address in network-byte order." + SYNTAX OCTET STRING (SIZE (0..255)) + +EndStationLocation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Representing the location of an end station related + to the managed DLSw node." + SYNTAX INTEGER { + other (1), + internal (2), -- local virtual MAC address + remote (3), -- via DLSw partner + local (4) -- locally attached + } + +DlcType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Representing the type of DLC of an end station, if + applicable." + SYNTAX INTEGER { + other (1), -- not assigned yet + na (2), -- not applicable + llc (3), -- 802.2 Logical Link Control + sdlc (4), -- SDLC + qllc (5) -- QLLC + } + +LFSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The largest size of the INFO field (including DLC header, + not including any MAC-level or framing octets). + 64 valid values as defined by the IEEE 802.1D + Addendum are acceptable." + SYNTAX INTEGER { + lfs516(516), lfs635(635), lfs754(754), lfs873(873), + lfs993(993), lfs1112(1112), lfs1231(1231), + lfs1350(1350), lfs1470(1470), lfs1542(1542), + lfs1615(1615), lfs1688(1688), lfs1761(1761), + lfs1833(1833), lfs1906(1906), lfs1979(1979), + lfs2052(2052), lfs2345(2345), lfs2638(2638), + lfs2932(2932), lfs3225(3225), lfs3518(3518), + lfs3812(3812), lfs4105(4105), lfs4399(4399), + lfs4865(4865), lfs5331(5331), lfs5798(5798), + lfs6264(6264), lfs6730(6730), lfs7197(7197), + lfs7663(7663), lfs8130(8130), lfs8539(8539), + lfs8949(8949), lfs9358(9358), lfs9768(9768), + lfs10178(10178), lfs10587(10587), lfs10997(10997), + lfs11407(11407), lfs12199(12199), lfs12992(12992), + lfs13785(13785), lfs14578(14578), lfs15370(15370), + lfs16163(16163), lfs16956(16956), lfs17749(17749), + lfs20730(20730), lfs23711(23711), lfs26693(26693), + lfs29674(29674), lfs32655(32655), lfs38618(38618), + lfs41600(41600), lfs44591(44591), lfs47583(47583), + lfs50575(50575), lfs53567(53567), lfs56559(56559), + lfs59551(59551), lfs65535(65535) + } + +null OBJECT IDENTIFIER ::= { 0 0 } + + +-- ******************************************************************* +-- DLSw Transport Domain definitions +-- ******************************************************************* + +-- DLSw over TCP +dlswTCPDomain OBJECT IDENTIFIER ::= { dlswDomains 1 } +-- for an IP address of length 4: +-- +-- octets contents encoding +-- 1-4 IP-address network-byte order +-- +DlswTCPAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents the IP address of a DLSw which uses + TCP as a transport protocol." + SYNTAX OCTET STRING (SIZE (4)) + + +-- ******************************************************************* +-- DLSw MIB Definition +-- ******************************************************************* + +-- The DLSw MIB module contains an object part and a conformance part. +-- Object part is organized in the following groups: +-- (1) dlswNode - information about this DLSw +-- (2) dlswTConn - about adjacent DLSw partners +-- (3) dlswInterface - about which interfaces DLSw is active on +-- (4) dlswDirectory - about any directory of local/remote resources +-- (5) dlswCircuit - about established circuits. +-- (6) dlswSdlc - about SDLC data link switched devices + +dlswNode OBJECT IDENTIFIER ::= { dlswMIB 1 } +dlswTConn OBJECT IDENTIFIER ::= { dlswMIB 2 } +dlswInterface OBJECT IDENTIFIER ::= { dlswMIB 3 } +dlswDirectory OBJECT IDENTIFIER ::= { dlswMIB 4 } +dlswCircuit OBJECT IDENTIFIER ::= { dlswMIB 5 } +dlswSdlc OBJECT IDENTIFIER ::= { dlswMIB 6 } -- SDLC + +-- ******************************************************************* +-- THE NODE GROUP +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- DLSw Node Identity +-- ------------------------------------------------------------------ +dlswNodeVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular version of the DLSw + standard supported by this DLSw. The first octet is a + hexadecimal value representing the DLSw standard Version + number of this DLSw, and the second is a hexadecimal value + representing the DLSw standard Release number. This + information is reported in DLSw Capabilities Exchange." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 1 } + +dlswNodeVendorID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the manufacturer's IEEE-assigned + organizationally Unique Identifier (OUI) of this DLSw. + This information is reported in DLSw Capabilities + Exchange." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 2 } + +dlswNodeVersionString OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This string gives product-specific information about + this DLSw (e.g., product name, code release and fix level). + This flows in Capabilities Exchange messages." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 3 } + +-- ------------------------------------------------------------------ +-- DLSw Code Capability +-- ------------------------------------------------------------------ +dlswNodeStdPacingSupport OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- does not support DLSw + -- Standard pacing scheme + adaptiveRcvWindow (2), -- the receive window size + -- varies + fixedRcvWindow (3) -- the receive window size + -- remains constant + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Circuit pacing, as defined in the DLSw Standard, allows each + of the two DLSw nodes on a circuit to control the amount + of data the other is permitted to send to them. This object + reflects the level of support the DLSw node has for this + protocol. (1) means the node has no support for the standard + circuit pacing flows; it may use RFC 1434+ methods only, or + a proprietary flow control scheme. (2) means the node supports + the standard scheme and can vary the window sizes it grants as + a data receiver. (3) means the node supports the standard + scheme but never varies its receive window size." + ::= { dlswNode 4 } + +-- ------------------------------------------------------------------ +-- DLSw Node Operational Objects +-- ------------------------------------------------------------------ +dlswNodeStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of the DLSw part of the system. Changing the + value from active to inactive causes DLSw to take + the following actions - (1) it disconnects all circuits + through all DLSw partners, (2) it disconnects all + transport connections to all DLSw partners, (3) it + disconnects all local DLC connections, and (4) it stops + processing all DLC connection set-up traffic. + Since these are destructive actions, the user should + query the circuit and transport connection tables in + advance to understand the effect this action will have. + Changing the value from inactive to active causes DLSw + to come up in its initial state, i.e., transport + connections established and ready to bring up circuits." + ::= { dlswNode 5 } + +dlswNodeUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since + the DLSw portion of the system was last re-initialized. + That is, if dlswState is in the active state, + the time the dlswState entered the active state. + It will remain zero if dlswState is in the + inactive state." + ::= { dlswNode 6 } + +dlswNodeVirtualSegmentLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The largest frame size (including DLC header and info field + but not any MAC-level or framing octets) this DLSw can forward + on any path through itself. This object can represent any box- + level frame size forwarding restriction (e.g., from the use + of fixed-size buffers). Some DLSw implementations will have + no such restriction. + + This value will affect the LF size of circuits during circuit + creation. The LF size of an existing circuit can be found in + the RIF (Routing Information Field)." + DEFVAL { lfs65535 } + ::= { dlswNode 7 } + +-- ................................................................... +-- NETBIOS Resources +-- ................................................................... + +dlswNodeResourceNBExclusivity OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of true indicates that the NetBIOS Names + configured in dlswDirNBTable are the only ones accessible + via this DLSw. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + It is up to the implementation exactly when to start the + run-time capabilities exchange." + ::= { dlswNode 8 } + +-- ................................................................... +-- MAC Address List +-- ................................................................... + +dlswNodeResourceMacExclusivity OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of true indicates that the MAC addresses + configured in the dlswDirMacTable are the only ones + accessible via this DLSw. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + It is up to the implementation exactly when to start the + run-time capabilities exchange." + ::= { dlswNode 9 } + + +-- ******************************************************************* +-- TRANSPORT CONNECTION (aka: PARTNER DLSW) +-- ******************************************************************* + +-- ------------------------------------------------------------------ + +-- Transport Connection Statistics Objects +-- ------------------------------------------------------------------ +dlswTConnStat OBJECT IDENTIFIER ::= { dlswTConn 1 } + +dlswTConnStatActiveConnections OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transport connections that are not in + `disconnected' state." + ::= { dlswTConnStat 1 } + +dlswTConnStatCloseIdles OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times transport connections in this node + exited the connected state with zero active circuits on + the transport connection." + ::= { dlswTConnStat 2 } + +dlswTConnStatCloseBusys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times transport connections in this node + exited the connected state with some non-zero number + of active circuits on the transport connection. Normally + this means the transport connection failed unexpectedly." + ::= { dlswTConnStat 3 } + +-- ------------------------------------------------------------------ +-- Transport Connection Configuration Table +-- ------------------------------------------------------------------ +dlswTConnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the transport connections + that will be initiated or accepted by this + DLSw. Structure of masks allows wildcard + definition for a collection of transport + connections by a conceptual row. For a + specific transport connection, there may + be multiple of conceptual rows match the + transport address. The `best' match will + the one to determine the characteristics + of the transport connection." + ::= { dlswTConn 2 } + +dlswTConnConfigEntry OBJECT-TYPE + SYNTAX DlswTConnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row defines a collection of + transport connections." + INDEX { dlswTConnConfigIndex } + ::= { dlswTConnConfigTable 1 } + +DlswTConnConfigEntry ::= SEQUENCE { + dlswTConnConfigIndex INTEGER, + dlswTConnConfigTDomain OBJECT IDENTIFIER, + dlswTConnConfigLocalTAddr TAddress, + dlswTConnConfigRemoteTAddr TAddress, + dlswTConnConfigLastModifyTime TimeTicks, + dlswTConnConfigEntryType INTEGER, + dlswTConnConfigGroupDefinition RowPointer, + dlswTConnConfigSetupType INTEGER, + dlswTConnConfigSapList OCTET STRING, + dlswTConnConfigAdvertiseMacNB TruthValue, + dlswTConnConfigInitCirRecvWndw INTEGER, + dlswTConnConfigOpens Counter32, + dlswTConnConfigRowStatus RowStatus + } + +dlswTConnConfigIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to the conceptual row of the table. + Negative numbers are not allowed. There + are objects defined that point to conceptual + rows of this table with this index value. + Zero is used to denote that no corresponding + row exists. + + Index values are assigned by the agent, and + should not be reused but should continue to + increase in value." + ::= { dlswTConnConfigEntry 1 } + +dlswTConnConfigTDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier which indicates the transport + domain of this conceptual row." + ::= { dlswTConnConfigEntry 2 } + +dlswTConnConfigLocalTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local transport address for this conceptual row + of the transport connection definition." + ::= { dlswTConnConfigEntry 3 } + +dlswTConnConfigRemoteTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote transport address. Together with + dlswTConnConfigEntryType and dlswTConnConfigGroupDefinition, + the object instance of this conceptual row identifies a + collection of the transport connections that will be + either initiated by this DLSw or initiated by a partner + DLSw and accepted by this DLSw." + ::= { dlswTConnConfigEntry 4 } + +dlswTConnConfigLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the value of + any object in this conceptual row except for + dlswTConnConfigOpens was last changed. This value + may be compared to dlswTConnOperConnectTime to + determine whether values in this row are completely + valid for a transport connection created using + this row definition." + ::= { dlswTConnConfigEntry 5 } + +dlswTConnConfigEntryType OBJECT-TYPE + SYNTAX INTEGER { + individual (1), + global (2), + group (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object instance signifies the type of entry in the + associated conceptual row. The value of `individual' + means that the entry applies to a specific partner DLSw + node as identified by dlswTConnConfigRemoteTAddr and + dlswTConnConfigTDomain. The value of `global' + means that the entry applies to all partner DLSw nodes + of the TDomain. The value of 'group' means that the entry + applies to a specific set of DLSw nodes in the TDomain. + Any group definitions are enterprise-specific and are pointed + to by dlswTConnConfigGroupDefinition. In the cases of + `global' and `group', the value in dlswTConnConfigRemoteTAddr + may not have any significance." + ::= { dlswTConnConfigEntry 6 } + +dlswTConnConfigGroupDefinition OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For conceptual rows of `individual' and `global' as + specified in dlswTConnConfigEntryType, the instance + of this object is `0.0'. For conceptual rows of + `group', the instance points to the specific + group definition." + ::= { dlswTConnConfigEntry 7 } + +dlswTConnConfigSetupType OBJECT-TYPE + + SYNTAX INTEGER { + other (1), + activePersistent (2), + activeOnDemand (3), + passive (4), + excluded (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value of the instance of a conceptual row + identifies the behavior of the collection of + transport connections that this conceptual row + defines. The value of activePersistent, activeOnDemand + and passive means this DLSw will accept any transport + connections, initiated by partner DLSw nodes, which + are defined by this conceptual row. The value of + activePersistent means this DLSw will also initiate + the transport connections of this conceptual row and + retry periodically if necessary. The value of + activeOnDemand means this DLSw will initiate a + transport connection of this conceptual row, if + there is a directory cache hits. The value of + other is implementation specific. The value of exclude + means that the specified node is not allowed to be + a partner to this DLSw node. To take a certain + conceptual row definition out of service, a value of + notInService for dlswTConnConfigRowStatus should be + used." + DEFVAL { passive } + ::= { dlswTConnConfigEntry 8 } + +dlswTConnConfigSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP list indicates which SAPs are advertised to + the transport connection defined by this conceptual + row. Only SAPs with even numbers are represented, + in the form of the most significant bit of the first + octet representing the SAP 0, the next most significant + bit representing the SAP 2, to the least significant + bit of the last octet representing the SAP 254. Data + link switching is allowed for those SAPs which have + one in its corresponding bit, not allowed otherwise. + The whole SAP list has to be changed together. Changing + the SAP list affects only new circuit establishments + and has no effect on established circuits. + + This list can be used to restrict specific partners + from knowing about all the SAPs used by DLSw on all its + interfaces (these are represented in dlswIfSapList for + each interface). For instance, one may want to run NetBIOS + with some partners but not others. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + When to start the run-time capabilities exchange is + implementation-specific. + The DEFVAL below indicates support for SAPs 0, 4, 8, and C." + DEFVAL { 'AA000000000000000000000000000000'H } + ::= { dlswTConnConfigEntry 9 } + +dlswTConnConfigAdvertiseMacNB OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of true indicates that any defined local MAC + addresses and NetBIOS names will be advertised to a + partner node via initial and (if supported) run-time + capabilities exchange messages. The DLSw node should send + the appropriate exclusivity control vector to accompany + each list it sends, or to represent that the node is + explicitly configured to have a null list. + + The value of false indicates that the DLSw node should not + send a MAC address list or NetBIOS name list, and should + also not send their corresponding exclusivity control + vectors." + DEFVAL { true } + ::= { dlswTConnConfigEntry 10 } + +dlswTConnConfigInitCirRecvWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "SSP messages" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial circuit receive pacing window size, in the unit + of SSP messages, to be used for future transport connections + activated using this table row. The managed node sends this + value as its initial receive pacing window in its initial + capabilities exchange message. Changing this value does not + affect the initial circuit receive pacing window size of + currently active transport connections. If the standard window + pacing scheme is not supported, the value is zero. + + A larger receive window value may be appropriate for partners + that are reachable only via physical paths that have longer + network delays." + DEFVAL { 1 } + ::= { dlswTConnConfigEntry 11 } + +dlswTConnConfigOpens OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times transport connections entered + connected state according to the definition of + this conceptual row." + ::= { dlswTConnConfigEntry 12 } + +dlswTConnConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswTConnConfigTable + following the RowStatus textual convention. The value + of notInService will be used to take a conceptual + row definition out of use." + ::= { dlswTConnConfigEntry 13 } + +-- ------------------------------------------------------------------ +-- Transport Connection Operation Table +-- ------------------------------------------------------------------ +-- (1) At most one transport connection can be connected between +-- this DLSw and one of its DLSw partners at a given time. +-- (2) Multiple transport types are supported. +-- (3) Since the entries may be reused, dlswTConnOperEntryTime +-- needs to be consulted for the possibility of counter reset. +-- ------------------------------------------------------------------ + +dlswTConnOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport connections. It is optional but + desirable for the agent to keep an entry for some + period of time after the transport connection is + disconnected. This allows the manager to capture + additional useful information about the connection, in + particular, statistical information and the cause of the + disconnection." + ::= { dlswTConn 3 } + +dlswTConnOperEntry OBJECT-TYPE + SYNTAX DlswTConnOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr } + ::= { dlswTConnOperTable 1 } + +DlswTConnOperEntry ::= SEQUENCE { + dlswTConnOperTDomain OBJECT IDENTIFIER, + dlswTConnOperLocalTAddr TAddress, + dlswTConnOperRemoteTAddr TAddress, + + dlswTConnOperEntryTime TimeTicks, + dlswTConnOperConnectTime TimeTicks, + dlswTConnOperState INTEGER, + dlswTConnOperConfigIndex INTEGER, + dlswTConnOperFlowCntlMode INTEGER, + + dlswTConnOperPartnerVersion OCTET STRING, + dlswTConnOperPartnerVendorID OCTET STRING, + dlswTConnOperPartnerVersionStr DisplayString, + dlswTConnOperPartnerInitPacingWndw INTEGER, + + dlswTConnOperPartnerSapList OCTET STRING, + dlswTConnOperPartnerNBExcl TruthValue, + dlswTConnOperPartnerMacExcl TruthValue, + dlswTConnOperPartnerNBInfo INTEGER, + dlswTConnOperPartnerMacInfo INTEGER, + + dlswTConnOperDiscTime TimeTicks, + dlswTConnOperDiscReason INTEGER, + dlswTConnOperDiscActiveCir INTEGER, + + dlswTConnOperInDataPkts Counter32, + dlswTConnOperOutDataPkts Counter32, + dlswTConnOperInDataOctets Counter32, + dlswTConnOperOutDataOctets Counter32, + + dlswTConnOperInCntlPkts Counter32, + dlswTConnOperOutCntlPkts Counter32, + + dlswTConnOperCURexSents Counter32, + dlswTConnOperICRexRcvds Counter32, + dlswTConnOperCURexRcvds Counter32, + dlswTConnOperICRexSents Counter32, + + dlswTConnOperNQexSents Counter32, + dlswTConnOperNRexRcvds Counter32, + dlswTConnOperNQexRcvds Counter32, + dlswTConnOperNRexSents Counter32, + dlswTConnOperCirCreates Counter32, + dlswTConnOperCircuits Gauge32 + } + +dlswTConnOperTDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier indicates the transport domain + of this transport connection." + ::= { dlswTConnOperEntry 1 } + +dlswTConnOperLocalTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local transport address for this transport connection. + This value could be different from dlswTConnConfigLocalAddr, + if the value of the latter were changed after this transport + connection was established." + ::= { dlswTConnOperEntry 2 } + +dlswTConnOperRemoteTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote transport address of this transport connection." + ::= { dlswTConnOperEntry 3 } + +dlswTConnOperEntryTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + transport connection conceptual row was created." + ::= { dlswTConnOperEntry 4 } + +-- ................................................................... +-- DLSw Transport Connection Operational Objects +-- ................................................................... + +dlswTConnOperConnectTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + transport connection last entered the 'connected' state. + A value of zero means this transport connection has never + been established." + ::= { dlswTConnOperEntry 5 } + +dlswTConnOperState OBJECT-TYPE + SYNTAX INTEGER { + connecting (1), + initCapExchange (2), + connected (3), + quiescing (4), + disconnecting (5), + disconnected (6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this transport connection. The transport + connection enters `connecting' state when DLSw makes + a connection request to the transport layer. Once initial + Capabilities Exchange is sent, the transport connection + enters enters `initCapExchange' state. When partner + capabilities have been determined and the transport + connection is ready for sending CanUReach (CUR) messages, + it moves to the `connected' state. When DLSw is in the + process of bringing down the connection, it is in the + `disconnecting' state. When the transport layer + indicates one of its connections is disconnected, the + transport connection moves to the `disconnected' state. + + Whereas all of the values will be returned in response + to a management protocol retrieval operation, only two + values may be specified in a management protocol set + operation: `quiescing' and `disconnecting'. Changing + the value to `quiescing' prevents new circuits from being + established, and will cause a transport disconnect when + the last circuit on the connection goes away. Changing + the value to `disconnecting' will force off all circuits + immediately and bring the connection to `disconnected' + state." + ::= { dlswTConnOperEntry 6 } + +dlswTConnOperConfigIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of dlswTConnConfigIndex of the dlswTConnConfigEntry + that governs the configuration information used by this + dlswTConnOperEntry. The manager can therefore normally + examine both configured and operational information + for this transport connection. + + This value is zero if the corresponding dlswTConnConfigEntry + was deleted after the creation of this dlswTConnOperEntry. + If some fields in the former were changed but the conceptual + row was not deleted, some configuration information may not + be valid for this operational transport connection. The + manager can compare dlswTConnOperConnectTime and + dlswTConnConfigLastModifyTime to determine if this condition + exists." + ::= { dlswTConnOperEntry 7 } + +-- ................................................................... +-- Transport Connection Characteristics +-- ................................................................... + +dlswTConnOperFlowCntlMode OBJECT-TYPE + SYNTAX INTEGER { + undetermined (1), + pacing (2), -- DLSw standard flow control + other (3) -- non-DLSw standard flow control + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow control mechanism in use on this transport connection. + This value is undetermined (1) before the mode of flow control + can be established on a new transport connection (i.e., after + CapEx is sent but before Capex or other SSP control messages + have been received). Pacing (2) indicates that the standard + RFC 1795 pacing mechanism is in use. Other (3) may be either + the RFC 1434+ xBusy mechanism operating to a back-level DLSw, + or a vendor-specific flow control method. Whether it is xBusy + or not can be inferred from dlswTConnOperPartnerVersion." + ::= { dlswTConnOperEntry 8 } + +-- ................................................................... + +dlswTConnOperPartnerVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies which version (first octet) and release + (second octet) of the DLSw standard is supported by this + partner DLSw. This information is obtained from a DLSw + capabilities exchange message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + A conceptual row with a dlswTConnOperState of `connected' but + a zero length partner version indicates that the partner is + a non-standard DLSw partner. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 9 } + +dlswTConnOperPartnerVendorID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the IEEE-assigned organizationally + Unique Identifier (OUI) of the maker of this partner + DLSw. This information is obtained from a DLSw + capabilities exchange message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 10 } + +dlswTConnOperPartnerVersionStr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..253)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular product version (e.g., + product name, code level, fix level) of this partner DLSw. + The format of the actual version string is vendor-specific. + This information is obtained from a DLSw capabilities exchange + message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, if one is never received, or + if one is received but it does not contain a version string. + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 11 } + +dlswTConnOperPartnerInitPacingWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner initial receive pacing window. This + is our initial send pacing window for all new circuits on this + transport connection, as modified and granted by the first flow + control indication the partner sends on each circuit. + This information is obtained from a DLSw capabilities exchange + message received from the partner DLSw. + A value of zero is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 12 } + +-- ................................................................... + +dlswTConnOperPartnerSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Supported SAP List received in the capabilities + exchange message from the partner DLSw. This list has + the same format described for dlswTConnConfigSapList. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 13 } + +dlswTConnOperPartnerNBExcl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of true signifies that the NetBIOS names received + from this partner in the NetBIOS name list in its capabilities + exchange message are the only NetBIOS names reachable by + that partner. `False' indicates that other NetBIOS names may + be reachable. `False' should be returned before a Capabilities + Exchange message is received, if one is never received, or if + one is received without a NB Name Exclusivity CV. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 14 } + +dlswTConnOperPartnerMacExcl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of true signifies that the MAC addresses received + from this partner in the MAC address list in its capabilities + exchange message are the only MAC addresses reachable by + that partner. `False' indicates that other MAC addresses may + be reachable. `False' should be returned before a Capabilities + Exchange message is received, if one is never received, or if + one is received without a MAC Address Exclusivity CV. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 15 } + +dlswTConnOperPartnerNBInfo OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- none is kept + partial (2), -- partial list is kept + complete (3), -- complete list is kept + notApplicable (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is up to this DSLw whether to keep either none, some, + or all of the NetBIOS name list that was received in + the capabilities exchange message sent by this partner DLSw. + This object identifies how much information was kept by + this DLSw. These names are stored as userConfigured + remote entries in dlswDirNBTable. + A value of (4), notApplicable, should be returned before + a Capabilities Exchange message is received, or if one is + never received. + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 16 } + +dlswTConnOperPartnerMacInfo OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- none is kept + partial (2), -- partial list is kept + complete (3), -- complete list is kept + notApplicable (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is up to this DLSw whether to keep either none, some, + or all of the MAC address list that was received in the + capabilities exchange message sent by this partner DLSw. + This object identifies how much information was kept by + this DLSw. These names are stored as userConfigured + remote entries in dlswDirMACTable. + A value of (4), notApplicable, should be returned before + a Capabilities Exchange message is received, or if one is + never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 17 } + +-- ................................................................... +-- Information about the last disconnect of this transport connection. +-- These objects make sense only for implementations that keep +-- transport connection information around after disconnection. +-- ................................................................... +dlswTConnOperDiscTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since the + dlswTConnOperState last entered `disconnected' state." + ::= { dlswTConnOperEntry 18 } + +dlswTConnOperDiscReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + capExFailed (2), + transportLayerDisc (3), + operatorCommand (4), + lastCircuitDiscd (5), + protocolError (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object signifies the reason that either prevented the + transport connection from entering the connected state, or + caused the transport connection to enter the disconnected + state." + ::= { dlswTConnOperEntry 19 } + +dlswTConnOperDiscActiveCir OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of circuits active (not in DISCONNECTED state) + at the time the transport connection was last disconnected. + This value is zero if the transport connection has never + been connected." + ::= { dlswTConnOperEntry 20 } + +-- ................................................................... +-- Transport Connection Statistics +-- (1) Traffic counts +-- ................................................................... +dlswTConnOperInDataPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + type DGRMFRAME, DATAFRAME, or INFOFRAME received on this + transport connection." + ::= { dlswTConnOperEntry 21 } + +dlswTConnOperOutDataPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + type DGRMFRAME, DATAFRAME, or INFOFRAME transmitted on this + transport connection." + ::= { dlswTConnOperEntry 22 } + +dlswTConnOperInDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number octets in Switch-to-Switch Protocol (SSP) messages + of type DGRMFRAME, DATAFRAME, or INFOFRAME received on this + transport connection. Each message is counted starting with + the first octet following the SSP message header." + ::= { dlswTConnOperEntry 23 } + +dlswTConnOperOutDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number octets in Switch-to-Switch Protocol (SSP) messages + of type DGRMFRAME, DATAFRAME, or INFOFRAME transmitted on this + transport connection. Each message is counted starting with + the first octet following the SSP message header." + ::= { dlswTConnOperEntry 24 } + +dlswTConnOperInCntlPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages + received on this transport connection which were not of + type DGRMFRAME, DATAFRAME, or INFOFRAME." + ::= { dlswTConnOperEntry 25 } + +dlswTConnOperOutCntlPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + transmitted on this transport connection which were not of + type DGRMFRAME, DATAFRAME, or INFOFRAME." + ::= { dlswTConnOperEntry 26 } + +-- ................................................................... +-- (2) Directory activities (Explorer messages) +-- ................................................................... + +dlswTConnOperCURexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CanUReach_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 27 } + +dlswTConnOperICRexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICanReach_ex messages received on this transport + connection." + ::= { dlswTConnOperEntry 28 } + +dlswTConnOperCURexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CanUReach_ex messages received on this transport + connection." + ::= { dlswTConnOperEntry 29 } + +dlswTConnOperICRexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICanReach_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 30 } + +-- ................................................................... + +dlswTConnOperNQexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NetBIOS_NQ_ex (NetBIOS Name Query-explorer) + messages sent on this transport connection." + ::= { dlswTConnOperEntry 31 } + +dlswTConnOperNRexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NR_ex (NetBIOS Name Recognized-explorer) + messages received on this transport connection." + ::= { dlswTConnOperEntry 32 } + +dlswTConnOperNQexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NQ_ex messages received on this + transport connection." + ::= { dlswTConnOperEntry 33 } + +dlswTConnOperNRexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NR_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 34 } + +-- ................................................................... +-- (3) Circuit activities on each transport connection +-- ................................................................... +dlswTConnOperCirCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that circuits entered `circuit_established' + state (not counting transitions from `circuit_restart')." + ::= { dlswTConnOperEntry 35 } + +dlswTConnOperCircuits OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active circuits on this transport + connection, where `active' means not in `disconnected' state." + ::= { dlswTConnOperEntry 36 } + + +-- ------------------------------------------------------------------ +-- Transport Connection Specific +-- ------------------------------------------------------------------ +dlswTConnSpecific OBJECT IDENTIFIER ::= { dlswTConn 4 } +dlswTConnTcp OBJECT IDENTIFIER ::= { dlswTConnSpecific 1 } + +-- ................................................................... +-- TCP Transport Connection Specific - Configuration +-- ................................................................... +dlswTConnTcpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnTcpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the TCP transport connections that + will be either initiated by or accepted by this DSLw. + It augments the entries in dlswTConnConfigTable whose domain + is dlswTCPDomain." + ::= { dlswTConnTcp 1 } + +dlswTConnTcpConfigEntry OBJECT-TYPE + SYNTAX DlswTConnTcpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row defines parameters that are + specific to dlswTCPDomain transport connections." + INDEX { dlswTConnConfigIndex } + ::= { dlswTConnTcpConfigTable 1 } + +DlswTConnTcpConfigEntry ::= SEQUENCE { + dlswTConnTcpConfigKeepAliveInt INTEGER, + dlswTConnTcpConfigTcpConnections INTEGER, + dlswTConnTcpConfigMaxSegmentSize INTEGER + } + +dlswTConnTcpConfigKeepAliveInt OBJECT-TYPE + SYNTAX INTEGER (0..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds between TCP keepAlive messages when + no traffic is flowing. Zero signifies no keepAlive protocol. + Changes take effect only for new TCP connections." + DEFVAL { 0 } + ::= { dlswTConnTcpConfigEntry 1 } + +dlswTConnTcpConfigTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is our preferred number of TCP connections within a + TCP transport connection. The actual number used is negotiated + at capabilities exchange time. Changes take effect only + for new transport connections." + DEFVAL { 2 } + ::= { dlswTConnTcpConfigEntry 2 } + +dlswTConnTcpConfigMaxSegmentSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of bytes that this node is + willing to receive over the read TCP connection(s). + Changes take effect for new transport connections." + DEFVAL { 4096 } + ::= { dlswTConnTcpConfigEntry 3 } + + +-- ................................................................... +-- TCP Transport Connection Specific - Operation +-- ................................................................... +dlswTConnTcpOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnTcpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of TCP transport connections. It is optional + but desirable for the agent to keep an entry for some + period of time after the transport connection is + disconnected. This allows the manager to capture + additional useful information about the connection, in + particular, statistical information and the cause of the + disconnection." + ::= { dlswTConnTcp 2 } + +dlswTConnTcpOperEntry OBJECT-TYPE + SYNTAX DlswTConnTcpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr } + ::= { dlswTConnTcpOperTable 1 } + +DlswTConnTcpOperEntry ::= SEQUENCE { + dlswTConnTcpOperKeepAliveInt INTEGER, + dlswTConnTcpOperPrefTcpConnections INTEGER, + dlswTConnTcpOperTcpConnections INTEGER + } + +dlswTConnTcpOperKeepAliveInt OBJECT-TYPE + SYNTAX INTEGER (0..1800) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time in seconds between TCP keepAlive messages when + no traffic is flowing. Zero signifies no keepAlive protocol is + operating." + ::= { dlswTConnTcpOperEntry 1 } + +dlswTConnTcpOperPrefTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the number of TCP connections preferred by this DLSw + partner, as received in its capabilities exchange message." + ::= { dlswTConnTcpOperEntry 2 } + + +dlswTConnTcpOperTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the actual current number of TCP connections within + this transport connection." + ::= { dlswTConnTcpOperEntry 3 } + +-- ******************************************************************* +-- DLSW INTERFACE GROUP +-- ******************************************************************* + +dlswIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of interfaces on which DLSw is active." + ::= { dlswInterface 1 } + +dlswIfEntry OBJECT-TYPE + SYNTAX DlswIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { ifIndex } + ::= { dlswIfTable 1 } + +DlswIfEntry ::= SEQUENCE { + dlswIfRowStatus RowStatus, + dlswIfVirtualSegment INTEGER, + dlswIfSapList OCTET STRING + } + +dlswIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswIfTable + following the RowStatus textual convention." + ::= { dlswIfEntry 1 } + +dlswIfVirtualSegment OBJECT-TYPE + SYNTAX INTEGER (0..4095 | 65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The segment number that uniquely identifies the virtual + segment to which this DLSw interface is connected. + Current source routing protocols limit this value to + the range 0 - 4095. (The value 0 is used by some + management applications for special test cases.) + A value of 65535 signifies that no virtual segment + is assigned to this interface. For instance, + in a non-source routing environment, segment number + assignment is not required." + DEFVAL { 65535 } + ::= { dlswIfEntry 2 } + +dlswIfSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP list indicates which SAPs are allowed to be + data link switched through this interface. This list + has the same format described for dlswTConnConfigSapList. + + When changes to this object take effect is implementation- + specific. Turning off a particular SAP can destroy + active circuits that are using that SAP. An agent + implementation may reject such changes until there are no + active circuits if it so chooses. In this case, it is up + to the manager to close the circuits first, using + dlswCircuitState. + + The DEFVAL below indicates support for SAPs 0, 4, 8, and C." + DEFVAL { 'AA000000000000000000000000000000'H } + ::= { dlswIfEntry 3 } + + +-- ******************************************************************* +-- DIRECTORY +-- Directory services caches the locations of MAC addresses +-- and NetBIOS names. For resources which are attached via +-- local interfaces, the ifIndex may be cached, and for +-- resources which are reachable via a DLSw partner, the +-- transport address of the DLSw partner is cached. +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- Directory Related Statistical Objects +-- ------------------------------------------------------------------ +dlswDirStat OBJECT IDENTIFIER ::= { dlswDirectory 1 } + +dlswDirMacEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of entries in the dlswDirMacTable." + ::= { dlswDirStat 1 } + +dlswDirMacCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular MAC address + resulted in success." + ::= { dlswDirStat 2 } + +dlswDirMacCacheMisses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular MAC address + resulted in failure." + ::= { dlswDirStat 3 } + +dlswDirMacCacheNextIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next value of dlswDirMacIndex to be assigned by + the agent. A retrieval of this object atomically reserves + the returned value for use by the manager to create a row + in dlswDirMacTable. This makes it possible for the agent + to control the index space of the MAC address cache, yet + allows the manager to administratively create new rows." + ::= { dlswDirStat 4 } + +dlswDirNBEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of entries in the dlswDirNBTable." + ::= { dlswDirStat 5 } + +dlswDirNBCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular NetBIOS + name resulted in success." + ::= { dlswDirStat 6 } + +dlswDirNBCacheMisses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular NetBIOS + name resulted in failure." + ::= { dlswDirStat 7 } + +dlswDirNBCacheNextIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next value of dlswDirNBIndex to be assigned by the + agent. A retrieval of this object atomically reserves + the returned value for use by the manager to create + a row in dlswDirNBTable. This makes it possible for the + agent to control the index space for the NetBIOS name + cache, yet allows the manager to administratively + create new rows." + ::= { dlswDirStat 8 } + +-- ------------------------------------------------------------------ +-- Directory Cache +-- ------------------------------------------------------------------ +dlswDirCache OBJECT IDENTIFIER ::= { dlswDirectory 2 } + +-- ................................................................... +-- Directory for MAC Addresses. +-- All Possible combinations of values of these objects. +-- +-- EntryType LocationType Location Status +-- -------------- ------------ ------------------ -------------- +-- userConfigured local ifEntry or 0.0 reachable, or +-- notReachable, or +-- unknown +-- userConfigured remote TConnConfigEntry reachable, or +-- notReachable, or +-- unknown +-- partnerCapExMsg remote TConnOperEntry unknown +-- dynamic local ifEntry or 0.0 reachable +-- dynamic remote TConnOperEntry reachable +-- +-- ................................................................... +dlswDirMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains locations of MAC addresses. + They could be either verified or not verified, + local or remote, and configured locally or learned + from either Capabilities Exchange messages or + directory searches." + ::= { dlswDirCache 1 } + +dlswDirMacEntry OBJECT-TYPE + SYNTAX DlswDirMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirMacIndex." + INDEX { dlswDirMacIndex } + ::= { dlswDirMacTable 1 } + +DlswDirMacEntry ::= SEQUENCE { + dlswDirMacIndex INTEGER, + dlswDirMacMac MacAddressNC, + dlswDirMacMask MacAddressNC, + dlswDirMacEntryType INTEGER, + dlswDirMacLocationType INTEGER, + dlswDirMacLocation RowPointer, + dlswDirMacStatus INTEGER, + dlswDirMacLFSize LFSize, + dlswDirMacRowStatus RowStatus + } + +dlswDirMacIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a conceptual row of this table." + ::= { dlswDirMacEntry 1 } + +dlswDirMacMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address, together with the dlswDirMacMask, + specifies a set of MAC addresses that are defined or + discovered through an interface or partner DLSw nodes." + ::= { dlswDirMacEntry 2 } + +dlswDirMacMask OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address mask, together with the dlswDirMacMac, + specifies a set of MAC addresses that are defined or + discovered through an interface or partner DLSw nodes." + DEFVAL { 'FFFFFFFFFFFF'H } + ::= { dlswDirMacEntry 3 } + +dlswDirMacEntryType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + userConfiguredPublic (2), + userConfiguredPrivate (3), + partnerCapExMsg (4), + dynamic (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cause of the creation of this conceptual row. + It could be one of the three methods: (1) user + configured, including via management protocol + set operations, configuration file, command line + or equivalent methods; (2) learned from the + partner DLSw Capabilities Exchange messages; + and (3) dynamic, e.g., learned from ICanReach + messages, or LAN explorer frames. Since only + individual MAC addresses can be dynamically learned, + dynamic entries will all have a mask of all FFs. + + The public versus private distinction for user- + configured resources applies only to local resources + (UC remote resources are private), and indicates + whether that resource should be advertised in + capabilities exchange messages sent by this node." + DEFVAL { userConfiguredPublic } + ::= { dlswDirMacEntry 4 } + +dlswDirMacLocationType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + local (2), + remote (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The location of the resource (or a collection of + resources using a mask) of this conceptual row + is either (1) local - the resource is reachable + via an interface, or (2) remote - the resource + is reachable via a partner DLSw node (or a set + of partner DLSw nodes)." + DEFVAL { local } + ::= { dlswDirMacEntry 5 } + +dlswDirMacLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to either the ifEntry, dlswTConnConfigEntry, + dlswTConnOperEntry, 0.0, or something that is implementation + specific. It identifies the location of the MAC address + (or the collection of MAC addresses.)" + DEFVAL { null } + ::= { dlswDirMacEntry 6 } + +dlswDirMacStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + reachable (2), + notReachable (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether DLSw currently believes + the MAC address to be accessible at the specified location. + The value `notReachable' allows a configured resource + definition to be taken out of service when a search to + that resource fails (avoiding a repeat of the search)." + DEFVAL { unknown } + ::= { dlswDirMacEntry 7 } + +dlswDirMacLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The largest size of the MAC INFO field (LLC header and data) + that a circuit to the MAC address can carry through this path." + DEFVAL { lfs65535 } + ::= { dlswDirMacEntry 8 } + +dlswDirMacRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswDirMacTable + following the RowStatus textual convention." + ::= { dlswDirMacEntry 9 } + +-- ................................................................... +-- Directory for NetBIOS Names +-- All Possible combinations of values of these objects. +-- +-- EntryType LocationType Location Status +-- -------------- ------------ ------------------ -------------- +-- userConfigured local ifEntry or 0.0 reachable, or +-- notReachable, or +-- unknown +-- userConfigured remote TConnConfigEntry reachable, or +-- notReachable, or +-- unknown +-- partnerCapExMsg remote TConnOperEntry unknown +-- dynamic local ifEntry or 0.0 reachable +-- dynamic remote TConnOperEntry reachable +-- +-- ................................................................... +dlswDirNBTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains locations of NetBIOS names. + They could be either verified or not verified, + local or remote, and configured locally or learned + from either Capabilities Exchange messages or + directory searches." + ::= { dlswDirCache 2 } + +dlswDirNBEntry OBJECT-TYPE + SYNTAX DlswDirNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirNBIndex." + INDEX { dlswDirNBIndex } + ::= { dlswDirNBTable 1 } + +DlswDirNBEntry ::= SEQUENCE { + dlswDirNBIndex INTEGER, + dlswDirNBName NBName, + dlswDirNBNameType INTEGER, + dlswDirNBEntryType INTEGER, + dlswDirNBLocationType INTEGER, + dlswDirNBLocation RowPointer, + dlswDirNBStatus INTEGER, + dlswDirNBLFSize LFSize, + dlswDirNBRowStatus RowStatus + } + +dlswDirNBIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a conceptual row of this table." + ::= { dlswDirNBEntry 1 } + +dlswDirNBName OBJECT-TYPE + SYNTAX NBName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NetBIOS name (including `any char' and `wildcard' + characters) specifies a set of NetBIOS names that are + defined or discovered through an interface or partner + DLSw nodes." + ::= { dlswDirNBEntry 2 } + +dlswDirNBNameType OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + individual (2), + group (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether dlswDirNBName represents an (or a set of) individual + or group NetBIOS name(s)." + DEFVAL { unknown } + ::= { dlswDirNBEntry 3 } + +dlswDirNBEntryType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + userConfiguredPublic (2), + userConfiguredPrivate (3), + partnerCapExMsg (4), + dynamic (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cause of the creation of this conceptual row. + It could be one of the three methods: (1) user + configured, including via management protocol + set operations, configuration file, command line, + or equivalent methods; (2) learned from the + partner DLSw Capabilities Exchange messages; + and (3) dynamic, e.g., learned from ICanReach + messages, or test frames. Since only actual + NetBIOS names can be dynamically learned, dynamic + entries will not contain any char or wildcard + characters. + + The public versus private distinction for user- + configured resources applies only to local resources + (UC remote resources are private), and indicates + whether that resource should be advertised in + capabilities exchange messages sent by this node." + DEFVAL { userConfiguredPublic } + ::= { dlswDirNBEntry 4 } + +dlswDirNBLocationType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + local (2), + remote (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The location of the resource (or a collection of resources + using any char/wildcard characters) of this conceptual row + is either (1) local - the resource is reachable via an + interface, or (2) remote - the resource is reachable via a + a partner DLSw node (or a set of partner DLSw nodes)." + DEFVAL { local } + ::= { dlswDirNBEntry 5 } + +dlswDirNBLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to either the ifEntry, dlswTConnConfigEntry, + dlswTConnOperEntry, 0.0, or something that is implementation + specific. It identifies the location of the NetBIOS name + or the set of NetBIOS names." + DEFVAL { null } + ::= { dlswDirNBEntry 6 } + +dlswDirNBStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + reachable (2), + notReachable (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether DLSw currently believes + the NetBIOS name to be accessible at the specified location. + The value `notReachable' allows a configured resource + definition to be taken out of service when a search to + that resource fails (avoiding a repeat of the search)." + DEFVAL { unknown } + ::= { dlswDirNBEntry 7 } + +dlswDirNBLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The largest size of the MAC INFO field (LLC header and data) + that a circuit to the NB name can carry through this path." + DEFVAL { lfs65535 } + ::= { dlswDirNBEntry 8 } + +dlswDirNBRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by manager to create + or delete the row entry in the dlswDirNBTable + following the RowStatus textual convention." + ::= { dlswDirNBEntry 9 } + + +-- ------------------------------------------------------------------ +-- Resource Locations +-- ------------------------------------------------------------------ +dlswDirLocate OBJECT IDENTIFIER ::= { dlswDirectory 3 } + +-- ................................................................... +-- Locate Entries in the dlswDirMacTable for a given MAC address +-- ................................................................... +dlswDirLocateMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirLocateMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to retrieve all entries in the + dlswDirMacTable that match a given MAC address, + in the order of the best matched first, the + second best matched second, and so on, till + no more entries match the given MAC address." + ::= { dlswDirLocate 1 } + +dlswDirLocateMacEntry OBJECT-TYPE + SYNTAX DlswDirLocateMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirLocateMacMac and dlswDirLocateMacMatch. + The first object is the MAC address of interest, and + the second object is the order in the list of all + entries that match the MAC address." + INDEX { dlswDirLocateMacMac, dlswDirLocateMacMatch } + ::= { dlswDirLocateMacTable 1 } + +DlswDirLocateMacEntry ::= SEQUENCE { + dlswDirLocateMacMac MacAddressNC, + dlswDirLocateMacMatch INTEGER, + dlswDirLocateMacLocation RowPointer + } + +dlswDirLocateMacMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC address to be located." + ::= { dlswDirLocateMacEntry 1 } + +dlswDirLocateMacMatch OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The order of the entries of dlswDirMacTable + that match dlswDirLocateMacMac. A value of + one represents the entry that best matches the + MAC address. A value of two represents the second + best matched entry, and so on." + ::= { dlswDirLocateMacEntry 2 } + +dlswDirLocateMacLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to the dlswDirMacEntry." + ::= { dlswDirLocateMacEntry 3 } + +-- ................................................................... +-- Locate Entries in the dlswDirNBTable for a given NetBIOS name +-- ................................................................... +dlswDirLocateNBTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirLocateNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to retrieve all entries in the + dlswDirNBTable that match a given NetBIOS name, + in the order of the best matched first, the + second best matched second, and so on, till + no more entries match the given NetBIOS name." + ::= { dlswDirLocate 2 } + +dlswDirLocateNBEntry OBJECT-TYPE + SYNTAX DlswDirLocateNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirLocateNBName and dlswDirLocateNBMatch. + The first object is the NetBIOS name of interest, and + the second object is the order in the list of all + entries that match the NetBIOS name." + INDEX { dlswDirLocateNBName, dlswDirLocateNBMatch } + ::= { dlswDirLocateNBTable 1 } + +DlswDirLocateNBEntry ::= SEQUENCE { + dlswDirLocateNBName NBName, + dlswDirLocateNBMatch INTEGER, + dlswDirLocateNBLocation RowPointer + } + +dlswDirLocateNBName OBJECT-TYPE + SYNTAX NBName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The NetBIOS name to be located (no any char or wildcards)." + ::= { dlswDirLocateNBEntry 1 } + +dlswDirLocateNBMatch OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The order of the entries of dlswDirNBTable + that match dlswDirLocateNBName. A value of + one represents the entry that best matches the + NetBIOS name. A value of two represents the second + best matched entry, and so on." + ::= { dlswDirLocateNBEntry 2 } + +dlswDirLocateNBLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to the dlswDirNBEntry." + ::= { dlswDirLocateNBEntry 3 } + + +-- ******************************************************************* +-- CIRCUIT +-- A circuit is the end-to-end association of two DLSw entities +-- through one or two DLSw nodes. It is the concatenation of +-- two "data links", optionally with an intervening transport +-- connection. The origin of the circuit is the end station that +-- initiates the circuit. The target of the circuit is the end +-- station that receives the initiation. +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- Statistics Related to Circuits +-- ------------------------------------------------------------------ +dlswCircuitStat OBJECT IDENTIFIER ::= { dlswCircuit 1 } + +dlswCircuitStatActives OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of circuits in dlswCircuitTable that are + not in the disconnected state." + ::= { dlswCircuitStat 1 } + +dlswCircuitStatCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of entries ever added to dlswCircuitTable, + or reactivated upon exiting `disconnected' state." + ::= { dlswCircuitStat 2 } + + +-- ------------------------------------------------------------------ +-- Circuit Table +-- +-- This table is the DLSw entity's view of circuits. There will be +-- a conceptual row in the table associated with each data link. +-- +-- The chart below lists the various possible combinations of +-- origin and target MAC locations and the number of entries in +-- this Circuit Table: +-- +-- number of | Origin End Station Location +-- entries in the |-------------------------------------- +-- Circuit Table | internal local remote +-- --------------------- |-------------------------------------- +-- Target | internal | NA 2 1 +-- End | local | 2 2 1 +-- Station | remote | 1 1 NA +-- Location | | +-- +-- NA: Not applicable +-- +-- Note: +-- (a) IfIndex and RouteInfo are applied only if location is local. +-- (b) TDomain and TAddr are applied only if location is remote. +-- +-- Most of statistics related to circuits can be collected +-- from LLC-2 Link Station Table. +-- ------------------------------------------------------------------ +dlswCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the circuit representation in the DLSw + entity. Virtual data links are used to represent any internal + end stations. There is a conceptual row associated with + each data link. Thus, for circuits without an intervening + transport connection, there are two conceptual rows + for each circuit. + + The table consists of the circuits being established, + established, and as an implementation option, circuits that + have been disconnected. For circuits carried over + transport connections, an entry is created after + the CUR_cs was sent or received. For circuits between + two locally attached devices, or internal virtual MAC + addresses, an entry is created when the equivalent of + CUR_cs sent/received status is reached. + + End station 1 (S1) and End station 2 (S2) are used to + represent the two end stations of the circuit. + S1 is always an end station which is locally attached. + S2 may be locally attached or remote. If it is locally + attached, the circuit will be represented by two rows indexed + by (A, B) and (B, A) where A & B are the relevant MACs/SAPs. + + The table may be used to store the causes of disconnection of + circuits. It is recommended that the oldest disconnected + circuit entry be removed from this table when the memory + space of disconnected circuits is needed." + ::= { dlswCircuit 2 } + +dlswCircuitEntry OBJECT-TYPE + SYNTAX DlswCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswCircuitS1Mac, + dlswCircuitS1Sap, + dlswCircuitS2Mac, + dlswCircuitS2Sap } + ::= { dlswCircuitTable 1 } + +DlswCircuitEntry ::= SEQUENCE { + dlswCircuitS1Mac MacAddressNC, + dlswCircuitS1Sap OCTET STRING, + dlswCircuitS1IfIndex INTEGER, + dlswCircuitS1DlcType DlcType, + dlswCircuitS1RouteInfo OCTET STRING, + dlswCircuitS1CircuitId OCTET STRING, + dlswCircuitS1Dlc RowPointer, + + dlswCircuitS2Mac MacAddressNC, + dlswCircuitS2Sap OCTET STRING, + dlswCircuitS2Location EndStationLocation, + dlswCircuitS2TDomain OBJECT IDENTIFIER, + dlswCircuitS2TAddress TAddress, + dlswCircuitS2CircuitId OCTET STRING, + + dlswCircuitOrigin INTEGER, + + dlswCircuitEntryTime TimeTicks, + dlswCircuitStateTime TimeTicks, + dlswCircuitState INTEGER, + + dlswCircuitPriority INTEGER, + + dlswCircuitFCSendGrantedUnits INTEGER, + dlswCircuitFCSendCurrentWndw INTEGER, + dlswCircuitFCRecvGrantedUnits INTEGER, + dlswCircuitFCRecvCurrentWndw INTEGER, + dlswCircuitFCLargestRecvGranted Gauge32, + dlswCircuitFCLargestSendGranted Gauge32, + dlswCircuitFCHalveWndwSents Counter32, + dlswCircuitFCResetOpSents Counter32, + dlswCircuitFCHalveWndwRcvds Counter32, + dlswCircuitFCResetOpRcvds Counter32, + dlswCircuitDiscReasonLocal INTEGER, + dlswCircuitDiscReasonRemote INTEGER, + dlswCircuitDiscReasonRemoteData OCTET STRING + } + +-- ................................................................... +-- Information related to the End Station 1 (S1). +-- ................................................................... +dlswCircuitS1Mac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC Address of End Station 1 (S1) used for this circuit." + ::= { dlswCircuitEntry 1 } + +dlswCircuitS1Sap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SAP at End Station 1 (S1) used for this circuit." + ::= { dlswCircuitEntry 2 } + +dlswCircuitS1IfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifEntry index of the local interface through which S1 + can be reached." + ::= { dlswCircuitEntry 3 } + +dlswCircuitS1DlcType OBJECT-TYPE + SYNTAX DlcType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DLC protocol in use between the DLSw node and S1." + ::= { dlswCircuitEntry 4 } + +dlswCircuitS1RouteInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..30)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If source-route bridging is in use between the DLSw + node and S1, this is the routing information field + describing the path between the two devices. + Otherwise the value will be an OCTET STRING of + zero length." + ::= { dlswCircuitEntry 5 } + +dlswCircuitS1CircuitId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Circuit ID assigned by this DLSw node to this circuit. + The first four octets are the DLC port Id, and + the second four octets are the Data Link Correlator. + If the DLSw SSP was not used to establish this circuit, + the value will be a string of zero length." + ::= { dlswCircuitEntry 6 } + +dlswCircuitS1Dlc OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to a conceptual row of the underlying DLC MIB, + which could either be the standard MIBs (e.g., the SDLC), + or an enterprise-specific DLC MIB." + ::= { dlswCircuitEntry 7 } + +-- ................................................................... +-- Information related to the End Station 2 (S2). +-- ................................................................... +dlswCircuitS2Mac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC Address of End Station 2 (S2) used for this circuit." + ::= { dlswCircuitEntry 8 } + +dlswCircuitS2Sap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SAP at End Station 2 (S2) used for this circuit." + ::= { dlswCircuitEntry 9 } + +dlswCircuitS2Location OBJECT-TYPE + SYNTAX EndStationLocation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The location of End Station 2 (S2). + If the location of End Station 2 is local, the + interface information will be available in the + conceptual row whose S1 and S2 are the S2 and + the S1 of this conceptual row, respectively." + ::= { dlswCircuitEntry 10 } + +dlswCircuitS2TDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the location of End Station 2 is remote, + this value is the transport domain of the + transport protocol the circuit is running + over. Otherwise, the value is 0.0." + ::= { dlswCircuitEntry 11 } + +dlswCircuitS2TAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the location of End Station 2 is remote, + this object contains the address of the partner + DLSw, else it will be an OCTET STRING of zero length." + ::= { dlswCircuitEntry 12 } + +dlswCircuitS2CircuitId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Circuit ID assigned to this circuit by the partner + DLSw node. The first four octets are the DLC port Id, and + the second four octets are the Data Link Correlator. + If the DLSw SSP was not used to establish this circuit, + the value will be a string of zero length." + ::= { dlswCircuitEntry 13 } + +-- ................................................................... +dlswCircuitOrigin OBJECT-TYPE + SYNTAX INTEGER { + s1 (1), + s2 (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies which of the two end stations + initiated the establishment of this circuit." + ::= { dlswCircuitEntry 14 } + +-- ................................................................... +-- Operational information related to this circuit. +-- ................................................................... +dlswCircuitEntryTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + circuit table conceptual row was created." + ::= { dlswCircuitEntry 15 } + +dlswCircuitStateTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + circuit entered the current state." + ::= { dlswCircuitEntry 16 } + +dlswCircuitState OBJECT-TYPE + SYNTAX INTEGER { + disconnected (1), + circuitStart (2), + resolvePending (3), + circuitPending (4), + circuitEstablished (5), + connectPending (6), + contactPending (7), + connected (8), + disconnectPending (9), + haltPending (10), + haltPendingNoack (11), + circuitRestart (12), + restartPending (13) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of this circuit. The agent, implementation + specific, may choose to keep entries for some period of time + after circuit disconnect, so the manager can gather the time + and cause of disconnection. + + While all of the specified values may be returned from a GET + operation, the only SETable value is `disconnectPending'. + When this value is set, DLSw should perform the appropriate + action given its previous state (e.g., send HALT_DL if the + state was `connected') to bring the circuit down to the + `disconnected' state. Both the partner DLSw and local end + station(s) should be notified as appropriate. + + This MIB provides no facility to re-establish a disconnected + circuit, because in DLSw this should be an end station-driven + function." + ::= { dlswCircuitEntry 17 } + +dlswCircuitPriority OBJECT-TYPE + SYNTAX INTEGER { + unsupported (1), + low (2), + medium (3), + high (4), + highest (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission priority of this circuit as understood by + this DLSw node. This value is determined by the two DLSw + nodes at circuit startup time. If this DLSw node does not + support DLSw circuit priority, the value `unsupported' should + be returned." + ::= { dlswCircuitEntry 18 } + +-- ................................................................... +-- Pacing Objects: +-- These objects are applicable if DLSw is using the SSP circuit +-- pacing protocol to control the flow between the two data links +-- in this circuit. +-- ................................................................... +dlswCircuitFCSendGrantedUnits OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of paced SSP messages that this DLSw is currently + authorized to send on this circuit before it must stop and + wait for an additional flow control indication from the + partner DLSw. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 19 } + +dlswCircuitFCSendCurrentWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current window size that this DLSw is using in its role + as a data sender. This is the value by which this DLSw would + increase the number of messages it is authorized to send, if + it were to receive a flow control indication with the bits + specifying `repeat window'. + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 20 } + +dlswCircuitFCRecvGrantedUnits OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of paced SSP messages that this DLSw has + authorized the partner DLSw to send on this circuit before + the partner DLSw must stop and wait for an additional flow + control indication from this DLSw. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 21 } + +dlswCircuitFCRecvCurrentWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current window size that this DLSw is using in its role + as a data receiver. This is the number of additional paced + SSP messages that this DLSw would be authorizing its DLSw + partner to send, if this DLSw were to send a flow control + indication with the bits specifying `repeat window'. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 22 } + +dlswCircuitFCLargestRecvGranted OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest receive window size granted by this DLSw during + the current activation of this circuit. This is not the + largest number of messages granted at any time, but the + largest window size as represented by FCIND operator bits. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 23 } + +dlswCircuitFCLargestSendGranted OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest send (with respect to this DLSw) window size + granted by the partner DLSw during the current activation of + this circuit. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 24 } + +dlswCircuitFCHalveWndwSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Halve Window operations this DLSw has sent on + this circuit, in its role as a data receiver. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 25 } + +dlswCircuitFCResetOpSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Reset Window operations this DLSw has sent on + this circuit, in its role as a data receiver. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 26 } + +dlswCircuitFCHalveWndwRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Halve Window operations this DLSw has received on + this circuit, in its role as a data sender. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 27 } + +dlswCircuitFCResetOpRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Reset Window operations this DLSw has received on + this circuit, in its role as a data sender. + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 28 } + + +-- ................................................................... +-- Information about the circuit disconnection +-- ................................................................... +dlswCircuitDiscReasonLocal OBJECT-TYPE + SYNTAX INTEGER { + endStationDiscRcvd (1), + endStationDlcError (2), + protocolError (3), + operatorCommand (4), + haltDlRcvd (5), + haltDlNoAckRcvd (6), + transportConnClosed (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason why this circuit was last disconnected, as seen + by this DLSw node. + + This object is present only if the agent keeps circuit + table entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 29 } + +dlswCircuitDiscReasonRemote OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + endStationDiscRcvd (2), + endStationDlcError (3), + protocolError (4), + operatorCommand (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The generic reason code why this circuit was last + disconnected, as reported by the DLSw partner in a HALT_DL + or HALT_DL_NOACK. If the partner does not send a reason + code in these messages, or the DLSw implementation does + not report receiving one, the value `unknown' is returned. + + This object is present only if the agent keeps circuit table + entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 30 } + +dlswCircuitDiscReasonRemoteData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Implementation-specific data reported by the DLSw partner in + a HALT_DL or HALT_DL_NOACK, to help specify how and why this + circuit was last disconnected. If the partner does not send + this data in these messages, or the DLSw implementation does + not report receiving it, a string of zero length is returned. + + This object is present only if the agent keeps circuit table + entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 31 } + + +-- ................................................................... +-- Statistics related to this circuit. +-- All statistics are in LLC-2 Link Station Statistical Table. +-- All SDLC statistics are in SDLC MIB +-- ................................................................... + + +-- ******************************************************************* +-- DLSW SDLC EXTENSION +-- ******************************************************************* +dlswSdlcLsEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in dlswSdlcLsTable." + ::= { dlswSdlc 1 } + +-- ................................................................... +dlswSdlcLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswSdlcLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table defines the virtual MAC addresses for those + SDLC link stations that participate in data link switching." + ::= { dlswSdlc 2 } + +dlswSdlcLsEntry OBJECT-TYPE + SYNTAX DlswSdlcLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this table is the ifIndex value for the + SDLC port which owns this link station and the poll + address of the particular SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { dlswSdlcLsTable 1 } + +DlswSdlcLsEntry ::= SEQUENCE { + dlswSdlcLsLocalMac MacAddressNC, + dlswSdlcLsLocalSap OCTET STRING, + dlswSdlcLsLocalIdBlock DisplayString, + dlswSdlcLsLocalIdNum DisplayString, + dlswSdlcLsRemoteMac MacAddressNC, + dlswSdlcLsRemoteSap OCTET STRING, + dlswSdlcLsRowStatus RowStatus + } + +dlswSdlcLsLocalMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The virtual MAC address used to represent the SDLC-attached + link station to the rest of the DLSw network." + ::= { dlswSdlcLsEntry 1 } + +dlswSdlcLsLocalSap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP used to represent this link station." + ::= { dlswSdlcLsEntry 2 } + +dlswSdlcLsLocalIdBlock OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The block number is the first three digits of the node_id, + if available. These 3 hexadecimal digits identify the + product." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 3 } + +dlswSdlcLsLocalIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ID number is the last 5 digits of the node_id, if + available. These 5 hexadecimal digits are + administratively defined and combined with the 3 digit + block number form the node_id. This node_id is used to + identify the local node and is included in SNA XIDs." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 4 } + +dlswSdlcLsRemoteMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address to which DLSw should attempt to connect + this link station. If this information is not available, + a length of zero for this object should be returned." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 5 } + +dlswSdlcLsRemoteSap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP of the remote station to which this link + station should be connected. If this information + is not available, a length of zero for this object + should be returned." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 6 } + +dlswSdlcLsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswSdlcLsTable + following the RowStatus textual convention." + ::= { dlswSdlcLsEntry 7 } + + +-- ******************************************************************* +-- TRAP GENERATION CONTROL +-- ******************************************************************* +dlswTrapControl OBJECT IDENTIFIER ::= { dlswNode 10} + +dlswTrapCntlTConnPartnerReject OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to emit partner + reject related traps. With the value of `enabled' + the DLSw will emit all partner reject related traps. + With the value of `disabled' the DLSw will not emit + any partner reject related traps. With the value + of `partial' the DLSw will only emits partner reject + traps for CapEx reject. The changes take effect + immediately." + ::= { dlswTrapControl 1 } + +dlswTrapCntlTConnProtViolation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to generate + protocol-violation traps on the events such as + window size violation. The changes take effect + immediately." + ::= { dlswTrapControl 2 } + +dlswTrapCntlTConn OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to emit transport + connection up and down traps. With the value of `enabled' + the DLSw will emit traps when connections enter `connected' + and `disconnected' states. With the value of `disabled' + the DLSw will not emit traps when connections enter of + `connected' and `disconnected' states. With the value + of `partial' the DLSw will only emits transport connection + down traps when the connection is closed with busy. + The changes take effect immediately." + ::= { dlswTrapControl 3 } + +dlswTrapCntlCircuit OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to generate + circuit up and down traps. With the value of `enabled' + the DLSw will emit traps when circuits enter `connected' + and `disconnected' states. With the value of `disabled' + the DLSw will not emit traps when circuits enter of + `connected' and `disconnected' states. With the value + of `partial' the DLSw will emit traps only for those + circuits that are initiated by this DLSw, e.g., + originating the CUR_CS message. The changes take effect + immediately." + ::= { dlswTrapControl 4 } + +-- ******************************************************************* +-- NOTIFICATIONS, i.e., TRAP DEFINITIONS +-- ******************************************************************* +dlswTraps OBJECT IDENTIFIER ::= { dlswMIB 0 } + +-- ------------------------------------------------------------------ +-- This section defines the well-known notifications sent by +-- DLSW agents. +-- Care must be taken to insure that no particular notification +-- is sent to a single receiving entity more often than once +-- every five seconds. +-- +-- Traps includes: +-- (1) Partner rejected (capEx rejection, not in partner list, etc.) +-- (2) DLSw protocol violation (e.g., window size violation, etc.) +-- (3) Transport connection up/down + +-- (4) Circuit up/down +-- ------------------------------------------------------------------ +-- + +dlswTrapTConnPartnerReject NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + is rejected by a partner DLSw during Capabilities + Exchanges. The emission of this trap is controlled + by dlswTrapCntlTConnPartnerReject." + ::= { dlswTraps 1 } + +dlswTrapTConnProtViolation NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a protocol violation is + detected for a transport connection. The emission of this + trap is controlled by dlswTrapCntlTConnProtViolation." + ::= { dlswTraps 2 } + +dlswTrapTConnUp NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + enters `connected' state. The emission of this trap + is controlled by dlswTrapCntlTConn." + ::= { dlswTraps 3 } + +dlswTrapTConnDown NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + enters `disconnected' state. The emission of this trap + is controlled by dlswTrapCntlTConn." + ::= { dlswTraps 4 } + +dlswTrapCircuitUp NOTIFICATION-TYPE + OBJECTS { dlswCircuitS1Mac, dlswCircuitS1Sap, + dlswCircuitS2Mac, dlswCircuitS2Sap + } + STATUS current + DESCRIPTION + "This trap is sent each time a circuit enters `connected' + state. The emission of this trap is controlled by + dlswTrapCntlCircuit." + ::= { dlswTraps 5 } + +dlswTrapCircuitDown NOTIFICATION-TYPE + OBJECTS { dlswCircuitS1Mac, dlswCircuitS1Sap, + dlswCircuitS2Mac, dlswCircuitS2Sap + } + STATUS current + DESCRIPTION + "This trap is sent each time a circuit enters `disconnected' + state. The emission of this trap is controlled by + dlswTrapCntlCircuit." + ::= { dlswTraps 6 } + + +-- ******************************************************************* +-- CONFORMANCE INFORMATION +-- ******************************************************************* +dlswConformance OBJECT IDENTIFIER ::= { dlsw 3 } + +dlswCompliances OBJECT IDENTIFIER ::= { dlswConformance 1 } +dlswGroups OBJECT IDENTIFIER ::= { dlswConformance 2 } + +-- ------------------------------------------------------------------ +-- COMPLIANCE STATEMENTS +-- ------------------------------------------------------------------ + +-- ................................................................... +-- Core compliance for all DLSw entities +-- ................................................................... +dlswCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all DLSw nodes." + MODULE + MANDATORY-GROUPS { + dlswNodeGroup, + dlswTConnStatGroup, + dlswTConnConfigGroup, + dlswTConnOperGroup, + dlswInterfaceGroup, + dlswCircuitGroup, + dlswCircuitStatGroup, + dlswNotificationGroup } + + GROUP dlswNodeNBGroup + DESCRIPTION + "The DLSw NetBIOS Node group is mandatory only for + those DLSw entities that implement NetBIOS." + + GROUP dlswTConnNBGroup + DESCRIPTION + "The DLSw NetBIOS Transport Connection group is + mandatory only for those DLSw entities that + implement NetBIOS." + + OBJECT dlswNodeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeVirtualSegmentLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeResourceNBExclusivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeResourceMacExclusivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConnPartnerReject + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConnProtViolation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT dlswTrapCntlCircuit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigTDomain + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigLocalTAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigRemoteTAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigGroupDefinition + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigSetupType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigSapList + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigAdvertiseMacNB + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigInitCirRecvWndw + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnOperState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfVirtualSegment + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfSapList + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswCircuitState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 1 } + +-- ................................................................... +-- Compliance for all DLSw entities that provide TCP transport. +-- ................................................................... +dlswTConnTcpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that use TCP as a + transport connection protocol." + MODULE + MANDATORY-GROUPS { + dlswTConnTcpConfigGroup, + dlswTConnTcpOperGroup } + + OBJECT dlswTConnTcpConfigKeepAliveInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnTcpConfigTcpConnections + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnTcpConfigMaxSegmentSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 2 } + +-- ................................................................... +-- Compliance for all DLSw Entities that implement a directory +-- ................................................................... +dlswDirCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that provide a directory + function." + MODULE + MANDATORY-GROUPS { + dlswDirGroup } + + GROUP dlswDirNBGroup + DESCRIPTION + "The DLSw NetBIOS group is mandatory only for + those DLSw entities that implement NetBIOS." + + OBJECT dlswDirMacMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT dlswDirMacLocationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacLocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBNameType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLocationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 3 } + +-- ................................................................... +-- Compliance for all DLSw entities that provide an ordered +-- list of directory entries that match a resource +-- ................................................................... +dlswDirLocateCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that provide an ordered + list of directory entries for a given resource." + MODULE + MANDATORY-GROUPS { + dlswDirLocateGroup } + + GROUP dlswDirLocateNBGroup + DESCRIPTION + "The DLSw NetBIOS group is mandatory only for + those DLSw entities that implement NetBIOS." + + ::= { dlswCompliances 4 } + +-- ................................................................... +-- Compliance for all DLSw entities that support SDLC end stations +-- ................................................................... +dlswSdlcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that support SDLC." + MODULE + MANDATORY-GROUPS { + dlswSdlcGroup } + + OBJECT dlswSdlcLsLocalMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalSap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalIdBlock + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalIdNum + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRemoteMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRemoteSap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 5 } + +-- ------------------------------------------------------------------ +-- CONFORMANCE GROUPS +-- ------------------------------------------------------------------ + +-- ................................................................... +-- Node Conformance Group +-- ................................................................... +dlswNodeGroup OBJECT-GROUP + OBJECTS { + dlswNodeVersion, + dlswNodeVendorID, + dlswNodeVersionString, + dlswNodeStdPacingSupport, + dlswNodeStatus, + dlswNodeUpTime, + dlswNodeVirtualSegmentLFSize, + dlswNodeResourceMacExclusivity, + dlswTrapCntlTConnPartnerReject, + dlswTrapCntlTConnProtViolation, + dlswTrapCntlTConn, + dlswTrapCntlCircuit + } + STATUS current + DESCRIPTION + "Conformance group for DLSw node general information." + ::= { dlswGroups 1 } + +-- ................................................................... +dlswNodeNBGroup OBJECT-GROUP + OBJECTS { + dlswNodeResourceNBExclusivity + } + STATUS current + DESCRIPTION + "Conformance group for DLSw node general information + specifically for nodes that support NetBIOS." + ::= { dlswGroups 2 } + +-- ................................................................... +dlswTConnStatGroup OBJECT-GROUP + OBJECTS { + dlswTConnStatActiveConnections, + dlswTConnStatCloseIdles, + dlswTConnStatCloseBusys + } + STATUS current + DESCRIPTION + "Conformance group for statistics for transport + connections." + ::= { dlswGroups 3 } + +-- ................................................................... +dlswTConnConfigGroup OBJECT-GROUP + OBJECTS { + dlswTConnConfigTDomain, + dlswTConnConfigLocalTAddr, + dlswTConnConfigRemoteTAddr, + dlswTConnConfigLastModifyTime, + dlswTConnConfigEntryType, + dlswTConnConfigGroupDefinition, + dlswTConnConfigSetupType, + dlswTConnConfigSapList, + dlswTConnConfigAdvertiseMacNB, + dlswTConnConfigInitCirRecvWndw, + dlswTConnConfigOpens, + dlswTConnConfigRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for the configuration of + transport connections." + ::= { dlswGroups 4 } + +-- ................................................................... +dlswTConnOperGroup OBJECT-GROUP + OBJECTS { + dlswTConnOperLocalTAddr, + dlswTConnOperEntryTime, + dlswTConnOperConnectTime, + dlswTConnOperState, + dlswTConnOperConfigIndex, + dlswTConnOperFlowCntlMode, + dlswTConnOperPartnerVersion, + dlswTConnOperPartnerVendorID, + dlswTConnOperPartnerVersionStr, + dlswTConnOperPartnerInitPacingWndw, + dlswTConnOperPartnerSapList, + dlswTConnOperPartnerMacExcl, + dlswTConnOperPartnerMacInfo, + dlswTConnOperDiscTime, + dlswTConnOperDiscReason, + dlswTConnOperDiscActiveCir, + dlswTConnOperInDataPkts, + dlswTConnOperOutDataPkts, + dlswTConnOperInDataOctets, + dlswTConnOperOutDataOctets, + dlswTConnOperInCntlPkts, + dlswTConnOperOutCntlPkts, + dlswTConnOperCURexSents, + dlswTConnOperICRexRcvds, + dlswTConnOperCURexRcvds, + dlswTConnOperICRexSents, + dlswTConnOperCirCreates, + dlswTConnOperCircuits + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections." + ::= { dlswGroups 5 } +-- ................................................................... +dlswTConnNBGroup OBJECT-GROUP + OBJECTS { + dlswTConnOperPartnerNBExcl, + dlswTConnOperPartnerNBInfo, + dlswTConnOperNQexSents, + dlswTConnOperNRexRcvds, + dlswTConnOperNQexRcvds, + dlswTConnOperNRexSents + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections, specifically for nodes + that support NetBIOS." + ::= { dlswGroups 6 } + +-- ................................................................... +dlswTConnTcpConfigGroup OBJECT-GROUP + OBJECTS { + dlswTConnTcpConfigKeepAliveInt, + dlswTConnTcpConfigTcpConnections, + dlswTConnTcpConfigMaxSegmentSize + } + STATUS current + DESCRIPTION + "Conformance group for configuration information for + transport connections using TCP." + ::= { dlswGroups 7 } + +-- ................................................................... +dlswTConnTcpOperGroup OBJECT-GROUP + OBJECTS { + dlswTConnTcpOperKeepAliveInt, + dlswTConnTcpOperPrefTcpConnections, + dlswTConnTcpOperTcpConnections + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections using TCP." + ::= { dlswGroups 8 } + +-- ................................................................... +dlswInterfaceGroup OBJECT-GROUP + OBJECTS { + dlswIfRowStatus, + dlswIfVirtualSegment, + dlswIfSapList + } + STATUS current + DESCRIPTION + "Conformance group for DLSw interfaces." + ::= { dlswGroups 9 } + +-- ................................................................... +dlswDirGroup OBJECT-GROUP + OBJECTS { + dlswDirMacEntries, + dlswDirMacCacheHits, + dlswDirMacCacheMisses, + dlswDirMacCacheNextIndex, + dlswDirMacMac, + dlswDirMacMask, + dlswDirMacEntryType, + dlswDirMacLocationType, + dlswDirMacLocation, + dlswDirMacStatus, + dlswDirMacLFSize, + dlswDirMacRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw directory using MAC + addresses." + ::= { dlswGroups 10 } + +-- ................................................................... +dlswDirNBGroup OBJECT-GROUP + OBJECTS { + dlswDirNBEntries, + dlswDirNBCacheHits, + dlswDirNBCacheMisses, + dlswDirNBCacheNextIndex, + dlswDirNBName, + dlswDirNBNameType, + dlswDirNBEntryType, + dlswDirNBLocationType, + dlswDirNBLocation, + dlswDirNBStatus, + dlswDirNBLFSize, + dlswDirNBRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw directory using NetBIOS + names." + ::= { dlswGroups 11 } + +-- ................................................................... +dlswDirLocateGroup OBJECT-GROUP + OBJECTS { + dlswDirLocateMacLocation + } + STATUS current + DESCRIPTION + "Conformance group for a node that can return directory + entry order for a given MAC address." + ::= { dlswGroups 12 } + +-- ................................................................... +dlswDirLocateNBGroup OBJECT-GROUP + OBJECTS { + dlswDirLocateNBLocation + } + STATUS current + DESCRIPTION + "Conformance group for a node that can return directory + entry order for a given NetBIOS name." + ::= { dlswGroups 13 } + +-- ................................................................... +dlswCircuitStatGroup OBJECT-GROUP + OBJECTS { + dlswCircuitStatActives, + dlswCircuitStatCreates + } + STATUS current + DESCRIPTION + "Conformance group for statistics about circuits." + ::= { dlswGroups 14 } + +-- ................................................................... +dlswCircuitGroup OBJECT-GROUP + OBJECTS { + dlswCircuitS1IfIndex, + dlswCircuitS1DlcType, + dlswCircuitS1RouteInfo, + dlswCircuitS1CircuitId, + dlswCircuitS1Dlc, + dlswCircuitS2Location, + dlswCircuitS2TDomain, + dlswCircuitS2TAddress, + dlswCircuitS2CircuitId, + dlswCircuitOrigin, + dlswCircuitEntryTime, + dlswCircuitStateTime, + dlswCircuitState, + dlswCircuitPriority, + dlswCircuitFCSendGrantedUnits, + dlswCircuitFCSendCurrentWndw, + dlswCircuitFCRecvGrantedUnits, + dlswCircuitFCRecvCurrentWndw, + dlswCircuitFCLargestRecvGranted, + dlswCircuitFCLargestSendGranted, + dlswCircuitFCHalveWndwSents, + dlswCircuitFCResetOpSents, + dlswCircuitFCHalveWndwRcvds, + dlswCircuitFCResetOpRcvds, + dlswCircuitDiscReasonLocal, + dlswCircuitDiscReasonRemote, + dlswCircuitDiscReasonRemoteData + } + STATUS current + DESCRIPTION + "Conformance group for DLSw circuits." + ::= { dlswGroups 15 } + +-- ................................................................... +dlswSdlcGroup OBJECT-GROUP + OBJECTS { + dlswSdlcLsEntries, + dlswSdlcLsLocalMac, + dlswSdlcLsLocalSap, + dlswSdlcLsLocalIdBlock, + dlswSdlcLsLocalIdNum, + dlswSdlcLsRemoteMac, + dlswSdlcLsRemoteSap, + dlswSdlcLsRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw SDLC support." + ::= { dlswGroups 16 } + +-- ................................................................... +dlswNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + dlswTrapTConnPartnerReject, + dlswTrapTConnProtViolation, + dlswTrapTConnUp, + dlswTrapTConnDown, + dlswTrapCircuitUp, + dlswTrapCircuitDown + } + STATUS current + DESCRIPTION + "Conformance group for DLSw notifications." + ::= { dlswGroups 17 } + +END diff --git a/mibs/ietf/DNS-RESOLVER-MIB b/mibs/ietf/DNS-RESOLVER-MIB new file mode 100644 index 0000000..6cee854 --- /dev/null +++ b/mibs/ietf/DNS-RESOLVER-MIB @@ -0,0 +1,1197 @@ +DNS-RESOLVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, IpAddress, Counter32, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dns, DnsName, DnsNameAsIndex, DnsClass, DnsType, DnsQClass, + DnsQType, DnsTime, DnsOpCode, DnsRespCode + FROM DNS-SERVER-MIB; + +-- DNS Resolver MIB + +dnsResMIB MODULE-IDENTITY + LAST-UPDATED "9401282250Z" + ORGANIZATION "IETF DNS Working Group" + CONTACT-INFO + " Rob Austein + Postal: Epilogue Technology Corporation + 268 Main Street, Suite 283 + North Reading, MA 10864 + US + Tel: +1 617 245 0804 + Fax: +1 617 245 8122 + E-Mail: sra@epilogue.com + + Jon Saperia + Postal: Digital Equipment Corporation + 110 Spit Brook Road + ZKO1-3/H18 + Nashua, NH 03062-2698 + US + Tel: +1 603 881 0480 + Fax: +1 603 881 0120 + E-mail: saperia@zko.dec.com" + DESCRIPTION + "The MIB module for entities implementing the client + (resolver) side of the Domain Name System (DNS) + protocol." + ::= { dns 2 } + +dnsResMIBObjects OBJECT IDENTIFIER ::= { dnsResMIB 1 } + +-- (Old-style) groups in the DNS resolver MIB. + +dnsResConfig OBJECT IDENTIFIER ::= { dnsResMIBObjects 1 } +dnsResCounter OBJECT IDENTIFIER ::= { dnsResMIBObjects 2 } +dnsResLameDelegation OBJECT IDENTIFIER ::= { dnsResMIBObjects 3 } +dnsResCache OBJECT IDENTIFIER ::= { dnsResMIBObjects 4 } +dnsResNCache OBJECT IDENTIFIER ::= { dnsResMIBObjects 5 } +dnsResOptCounter OBJECT IDENTIFIER ::= { dnsResMIBObjects 6 } + + +-- Resolver Configuration Group + +dnsResConfigImplementIdent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + resolver software in use on the system, for example; + `RES-2.1'" + ::= { dnsResConfig 1 } + +dnsResConfigService OBJECT-TYPE + SYNTAX INTEGER { recursiveOnly(1), + iterativeOnly(2), + recursiveAndIterative(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Kind of DNS resolution service provided: + + recursiveOnly(1) indicates a stub resolver. + + iterativeOnly(2) indicates a normal full service + resolver. + + recursiveAndIterative(3) indicates a full-service + resolver which performs a mix of recursive and iterative + queries." + ::= { dnsResConfig 2 } + +dnsResConfigMaxCnames OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Limit on how many CNAMEs the resolver should allow + before deciding that there's a CNAME loop. Zero means + that resolver has no explicit CNAME limit." + REFERENCE + "RFC-1035 section 7.1." + ::= { dnsResConfig 3 } + +-- DNS Resolver Safety Belt Table + +dnsResConfigSbeltTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResConfigSbeltEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of safety belt information used by the resolver + when it hasn't got any better idea of where to send a + query, such as when the resolver is booting or is a stub + resolver." + ::= { dnsResConfig 4 } + +dnsResConfigSbeltEntry OBJECT-TYPE + SYNTAX DnsResConfigSbeltEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolver's Sbelt table. + Rows may be created or deleted at any time by the DNS + resolver and by SNMP SET requests. Whether the values + changed via SNMP are saved in stable storage across + `reset' operations is implementation-specific." + INDEX { dnsResConfigSbeltAddr, + dnsResConfigSbeltSubTree, + dnsResConfigSbeltClass } + ::= { dnsResConfigSbeltTable 1 } + +DnsResConfigSbeltEntry ::= + SEQUENCE { + dnsResConfigSbeltAddr + IpAddress, + dnsResConfigSbeltName + DnsName, + dnsResConfigSbeltRecursion + INTEGER, + dnsResConfigSbeltPref + INTEGER, + dnsResConfigSbeltSubTree + DnsNameAsIndex, + dnsResConfigSbeltClass + DnsClass, + dnsResConfigSbeltStatus + RowStatus + } + +dnsResConfigSbeltAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the Sbelt name server identified by + this row of the table." + ::= { dnsResConfigSbeltEntry 1 } + +dnsResConfigSbeltName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DNS name of a Sbelt nameserver identified by this + row of the table. A zero-length string indicates that + the name is not known by the resolver." + ::= { dnsResConfigSbeltEntry 2 } + +dnsResConfigSbeltRecursion OBJECT-TYPE + SYNTAX INTEGER { iterative(1), + recursive(2), + recursiveAndIterative(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Kind of queries resolver will be sending to the name + server identified in this row of the table: + + iterative(1) indicates that resolver will be directing + iterative queries to this name server (RD bit turned + off). + + recursive(2) indicates that resolver will be directing + recursive queries to this name server (RD bit turned + on). + + recursiveAndIterative(3) indicates that the resolver + will be directing both recursive and iterative queries + to the server identified in this row of the table." + ::= { dnsResConfigSbeltEntry 3 } + +dnsResConfigSbeltPref OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the preference for the name server + identified in this row of the table. The lower the + value, the more desirable the resolver considers this + server." + ::= { dnsResConfigSbeltEntry 4 } + +dnsResConfigSbeltSubTree OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Queries sent to the name server identified by this row + of the table are limited to those for names in the name + subtree identified by this variable. If no such + limitation applies, the value of this variable is the + name of the root domain (a DNS name consisting of a + single zero octet)." + ::= { dnsResConfigSbeltEntry 5 } + +dnsResConfigSbeltClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The class of DNS queries that will be sent to the server + identified by this row of the table." + ::= { dnsResConfigSbeltEntry 6 } + +dnsResConfigSbeltStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Row status column for this row of the Sbelt table." + ::= { dnsResConfigSbeltEntry 7 } + +dnsResConfigUpTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the resolver has a persistent state (e.g., a + process), this value will be the time elapsed since it + started. For software without persistant state, this + value will be 0." + ::= { dnsResConfig 5 } + +dnsResConfigResetTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the resolver has a persistent state (e.g., a process) + and supports a `reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed since the last time the resolver was + `reset.' For software that does not have persistence or + does not support a `reset' operation, this value will be + zero." + ::= { dnsResConfig 6 } + +dnsResConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistant + resolver state. When set to reset(2), any persistant + resolver state (such as a process) is reinitialized as if + the resolver had just been started. This value will + never be returned by a read operation. When read, one of + the following values will be returned: + other(1) - resolver in some unknown state; + initializing(3) - resolver (re)initializing; + running(4) - resolver currently running." + ::= { dnsResConfig 7 } + + +-- Resolver Counters Group + +-- Resolver Counter Table + +dnsResCounterByOpcodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCounterByOpcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of the current count of resolver queries and + answers." + ::= { dnsResCounter 3 } + +dnsResCounterByOpcodeEntry OBJECT-TYPE + SYNTAX DnsResCounterByOpcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the resolver counter table. Entries are + indexed by DNS OpCode." + INDEX { dnsResCounterByOpcodeCode } + ::= { dnsResCounterByOpcodeTable 1 } + +DnsResCounterByOpcodeEntry ::= + SEQUENCE { + dnsResCounterByOpcodeCode + DnsOpCode, + dnsResCounterByOpcodeQueries + Counter32, + dnsResCounterByOpcodeResponses + Counter32 + } + +dnsResCounterByOpcodeCode OBJECT-TYPE + SYNTAX DnsOpCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to this table. The OpCodes that have already + been defined are found in RFC-1035." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsResCounterByOpcodeEntry 1 } + +dnsResCounterByOpcodeQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of queries that have sent out by the + resolver since initialization for the OpCode which is + the index to this row of the table." + ::= { dnsResCounterByOpcodeEntry 2 } + +dnsResCounterByOpcodeResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of responses that have been received by the + resolver since initialization for the OpCode which is + the index to this row of the table." + ::= { dnsResCounterByOpcodeEntry 3 } + +-- Resolver Response Code Counter Table + +dnsResCounterByRcodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCounterByRcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of the current count of responses to resolver + queries." + ::= { dnsResCounter 4 } + +dnsResCounterByRcodeEntry OBJECT-TYPE + SYNTAX DnsResCounterByRcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the resolver response table. Entries are + indexed by DNS response code." + INDEX { dnsResCounterByRcodeCode } + ::= { dnsResCounterByRcodeTable 1 } + +DnsResCounterByRcodeEntry ::= + SEQUENCE { + dnsResCounterByRcodeCode + DnsRespCode, + dnsResCounterByRcodeResponses + Counter32 + } + +dnsResCounterByRcodeCode OBJECT-TYPE + SYNTAX DnsRespCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to this table. The Response Codes that have + already been defined are found in RFC-1035." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsResCounterByRcodeEntry 1 } + +dnsResCounterByRcodeResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses the resolver has received for the + response code value which identifies this row of the + table." + ::= { dnsResCounterByRcodeEntry 2 } + +-- Additional DNS Resolver Counter Objects + +dnsResCounterNonAuthDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests made by the resolver for which a + non-authoritative answer (cached data) was received." + ::= { dnsResCounter 5 } + +dnsResCounterNonAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests made by the resolver for which a + non-authoritative answer - no such data response (empty + answer) was received." + ::= { dnsResCounter 6 } + +dnsResCounterMartians OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received which were received from + servers that the resolver does not think it asked." + ::= { dnsResCounter 7 } + +dnsResCounterRecdResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received to all queries." + ::= { dnsResCounter 8 } + +dnsResCounterUnparseResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received which were unparseable." + ::= { dnsResCounter 9 } + +dnsResCounterFallbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the resolver had to fall back to its + seat belt information." + ::= { dnsResCounter 10 } + + +-- Lame Delegation Group + +dnsResLameDelegationOverflows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the resolver attempted to add an entry + to the Lame Delegation table but was unable to for some + reason such as space constraints." + ::= { dnsResLameDelegation 1 } + +-- Lame Delegation Table + +dnsResLameDelegationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResLameDelegationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of name servers returning lame delegations. + + A lame delegation has occured when a parent zone + delegates authority for a child zone to a server that + appears not to think that it is authoritative for the + child zone in question." + ::= { dnsResLameDelegation 2 } + +dnsResLameDelegationEntry OBJECT-TYPE + SYNTAX DnsResLameDelegationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in lame delegation table. Only the resolver may + create rows in this table. SNMP SET requests may be used + to delete rows." + INDEX { dnsResLameDelegationSource, + dnsResLameDelegationName, + dnsResLameDelegationClass } + ::= { dnsResLameDelegationTable 1 } + +DnsResLameDelegationEntry ::= + SEQUENCE { + dnsResLameDelegationSource + IpAddress, + dnsResLameDelegationName + DnsNameAsIndex, + dnsResLameDelegationClass + DnsClass, + dnsResLameDelegationCounts + Counter32, + dnsResLameDelegationStatus + RowStatus + } + +dnsResLameDelegationSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Source of lame delegation." + ::= { dnsResLameDelegationEntry 1 } + +dnsResLameDelegationName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name for which lame delegation was received." + ::= { dnsResLameDelegationEntry 2 } + +dnsResLameDelegationClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of received lame delegation." + ::= { dnsResLameDelegationEntry 3 } + +dnsResLameDelegationCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How many times this lame delegation has been received." + ::= { dnsResLameDelegationEntry 4 } + +dnsResLameDelegationStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the lame delegation table. Since only + the agent (DNS resolver) creates rows in this table, the + only values that a manager may write to this variable + are active(1) and destroy(6)." + ::= { dnsResLameDelegationEntry 5 } + + +-- Resolver Cache Group + +dnsResCacheStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), clear(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action for the resolver's cache. + + enabled(1) means that the use of the cache is allowed. + Query operations can return this state. + + disabled(2) means that the cache is not being used. + Query operations can return this state. + + Setting this variable to clear(3) deletes the entire + contents of the resolver's cache, but does not otherwise + change the resolver's state. The status will retain its + previous value from before the clear operation (i.e., + enabled(1) or disabled(2)). The value of clear(3) can + NOT be returned by a query operation." + ::= { dnsResCache 1 } + +dnsResCacheMaxTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum Time-To-Live for RRs in this cache. If the + resolver does not implement a TTL ceiling, the value of + this field should be zero." + ::= { dnsResCache 2 } + +dnsResCacheGoodCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RRs the resolver has cached successfully." + ::= { dnsResCache 3 } + +dnsResCacheBadCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RRs the resolver has refused to cache because + they appear to be dangerous or irrelevant. E.g., RRs + with suspiciously high TTLs, unsolicited root + information, or that just don't appear to be relevant to + the question the resolver asked." + ::= { dnsResCache 4 } + +-- Resolver Cache Table + +dnsResCacheRRTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCacheRREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about all the resource + records currently in the resolver's cache." + ::= { dnsResCache 5 } + +dnsResCacheRREntry OBJECT-TYPE + SYNTAX DnsResCacheRREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolvers's cache. Rows may be created + only by the resolver. SNMP SET requests may be used to + delete rows." + INDEX { dnsResCacheRRName, + dnsResCacheRRClass, + dnsResCacheRRType, + dnsResCacheRRIndex } + ::= { dnsResCacheRRTable 1 } + +DnsResCacheRREntry ::= + SEQUENCE { + dnsResCacheRRName + DnsNameAsIndex, + dnsResCacheRRClass + DnsClass, + dnsResCacheRRType + DnsType, + dnsResCacheRRTTL + DnsTime, + dnsResCacheRRElapsedTTL + DnsTime, + dnsResCacheRRSource + IpAddress, + dnsResCacheRRData + OCTET STRING, + dnsResCacheRRStatus + RowStatus, + dnsResCacheRRIndex + Integer32, + dnsResCacheRRPrettyName + DnsName + } + +dnsResCacheRRName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Owner name of the Resource Record in the cache which is + identified in this row of the table. As described in + RFC-1034, the owner of the record is the domain name + were the RR is found." + REFERENCE + "RFC-1034 section 3.6." + ::= { dnsResCacheRREntry 1 } + +dnsResCacheRRClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of the Resource Record in the cache which is + identified in this row of the table." + ::= { dnsResCacheRREntry 2 } + +dnsResCacheRRType OBJECT-TYPE + SYNTAX DnsType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS type of the Resource Record in the cache which is + identified in this row of the table." + ::= { dnsResCacheRREntry 3 } + +dnsResCacheRRTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time-To-Live of RR in DNS cache. This is the initial + TTL value which was received with the RR when it was + originally received." + ::= { dnsResCacheRREntry 4 } + +dnsResCacheRRElapsedTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed seconds since RR was received." + ::= { dnsResCacheRREntry 5 } + +dnsResCacheRRSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Host from which RR was received, 0.0.0.0 if unknown." + ::= { dnsResCacheRREntry 6 } + +dnsResCacheRRData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "RDATA portion of a cached RR. The value is in the + format defined for the particular DNS class and type of + the resource record." + REFERENCE + "RFC-1035 section 3.2.1." + ::= { dnsResCacheRREntry 7 } + +dnsResCacheRRStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the resolver cache table. Since only + the agent (DNS resolver) creates rows in this table, the + only values that a manager may write to this variable + are active(1) and destroy(6)." + ::= { dnsResCacheRREntry 8 } + +dnsResCacheRRIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value which makes entries in the table unique when the + other index values (dnsResCacheRRName, + dnsResCacheRRClass, and dnsResCacheRRType) do not + provide a unique index." + ::= { dnsResCacheRREntry 9 } + +dnsResCacheRRPrettyName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the RR at this row in the table. This is + identical to the dnsResCacheRRName variable, except that + character case is preserved in this variable, per DNS + conventions." + REFERENCE + "RFC-1035 section 2.3.3." + ::= { dnsResCacheRREntry 10 } + +-- Resolver Negative Cache Group + +dnsResNCacheStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), clear(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action for the resolver's negative response + cache. + + enabled(1) means that the use of the negative response + cache is allowed. Query operations can return this + state. + disabled(2) means that the negative response cache is + not being used. Query operations can return this state. + + Setting this variable to clear(3) deletes the entire + contents of the resolver's negative response cache. The + status will retain its previous value from before the + clear operation (i.e., enabled(1) or disabled(2)). The + value of clear(3) can NOT be returned by a query + operation." + ::= { dnsResNCache 1 } + +dnsResNCacheMaxTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum Time-To-Live for cached authoritative errors. + If the resolver does not implement a TTL ceiling, the + value of this field should be zero." + ::= { dnsResNCache 2 } + +dnsResNCacheGoodNCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of authoritative errors the resolver has cached + successfully." + ::= { dnsResNCache 3 } + +dnsResNCacheBadNCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of authoritative errors the resolver would have + liked to cache but was unable to because the appropriate + SOA RR was not supplied or looked suspicious." + REFERENCE + "RFC-1034 section 4.3.4." + ::= { dnsResNCache 4 } + +-- Resolver Negative Cache Table + +dnsResNCacheErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResNCacheErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The resolver's negative response cache. This table + contains information about authoritative errors that + have been cached by the resolver." + ::= { dnsResNCache 5 } + +dnsResNCacheErrEntry OBJECT-TYPE + SYNTAX DnsResNCacheErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolver's negative response cache + table. Only the resolver can create rows. SNMP SET + requests may be used to delete rows." + INDEX { dnsResNCacheErrQName, + dnsResNCacheErrQClass, + dnsResNCacheErrQType, + dnsResNCacheErrIndex } + ::= { dnsResNCacheErrTable 1 } + +DnsResNCacheErrEntry ::= + SEQUENCE { + dnsResNCacheErrQName + DnsNameAsIndex, + dnsResNCacheErrQClass + DnsQClass, + dnsResNCacheErrQType + DnsQType, + dnsResNCacheErrTTL + DnsTime, + dnsResNCacheErrElapsedTTL + DnsTime, + dnsResNCacheErrSource + IpAddress, + dnsResNCacheErrCode + INTEGER, + dnsResNCacheErrStatus + RowStatus, + dnsResNCacheErrIndex + Integer32, + dnsResNCacheErrPrettyName + DnsName + } + +dnsResNCacheErrQName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "QNAME associated with a cached authoritative error." + REFERENCE + "RFC-1034 section 3.7.1." + ::= { dnsResNCacheErrEntry 1 } + +dnsResNCacheErrQClass OBJECT-TYPE + SYNTAX DnsQClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS QCLASS associated with a cached authoritative + error." + ::= { dnsResNCacheErrEntry 2 } + +dnsResNCacheErrQType OBJECT-TYPE + SYNTAX DnsQType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS QTYPE associated with a cached authoritative error." + ::= { dnsResNCacheErrEntry 3 } + +dnsResNCacheErrTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time-To-Live of a cached authoritative error at the time + of the error, it should not be decremented by the number + of seconds since it was received. This should be the + TTL as copied from the MINIMUM field of the SOA that + accompanied the authoritative error, or a smaller value + if the resolver implements a ceiling on negative + response cache TTLs." + REFERENCE + "RFC-1034 section 4.3.4." + ::= { dnsResNCacheErrEntry 4 } + +dnsResNCacheErrElapsedTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed seconds since authoritative error was received." + ::= { dnsResNCacheErrEntry 5 } + +dnsResNCacheErrSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Host which sent the authoritative error, 0.0.0.0 if + unknown." + ::= { dnsResNCacheErrEntry 6 } + +dnsResNCacheErrCode OBJECT-TYPE + SYNTAX INTEGER { nonexistantName(1), noData(2), other(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative error that has been cached: + + nonexistantName(1) indicates an authoritative name error + (RCODE = 3). + + noData(2) indicates an authoritative response with no + error (RCODE = 0) and no relevant data. + + other(3) indicates some other cached authoritative + error. At present, no such errors are known to exist." + ::= { dnsResNCacheErrEntry 7 } + +dnsResNCacheErrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the resolver negative response cache + table. Since only the agent (DNS resolver) creates rows + in this table, the only values that a manager may write + to this variable are active(1) and destroy(6)." + ::= { dnsResNCacheErrEntry 8 } + +dnsResNCacheErrIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which makes entries in the table unique when the + other index values (dnsResNCacheErrQName, + dnsResNCacheErrQClass, and dnsResNCacheErrQType) do not + provide a unique index." + ::= { dnsResNCacheErrEntry 9 } + +dnsResNCacheErrPrettyName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "QNAME associated with this row in the table. This is + identical to the dnsResNCacheErrQName variable, except + that character case is preserved in this variable, per + DNS conventions." + REFERENCE + "RFC-1035 section 2.3.3." + ::= { dnsResNCacheErrEntry 10 } + + +-- Resolver Optional Counters Group + +dnsResOptCounterReferals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses which were received from servers + redirecting query to another server." + ::= { dnsResOptCounter 1 } + +dnsResOptCounterRetrans OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number requests retransmitted for all reasons." + ::= { dnsResOptCounter 2 } + +dnsResOptCounterNoResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries that were retransmitted because of no + response." + ::= { dnsResOptCounter 3 } + +dnsResOptCounterRootRetrans OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries that were retransmitted that were to + root servers." + ::= { dnsResOptCounter 4 } + +dnsResOptCounterInternals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests internally generated by the + resolver." + ::= { dnsResOptCounter 5 } + +dnsResOptCounterInternalTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests internally generated which timed + out." + ::= { dnsResOptCounter 6 } + + +-- SNMPv2 groups. + +dnsResMIBGroups OBJECT IDENTIFIER ::= { dnsResMIB 2 } + +dnsResConfigGroup OBJECT-GROUP + OBJECTS { dnsResConfigImplementIdent, + dnsResConfigService, + dnsResConfigMaxCnames, + dnsResConfigSbeltAddr, + dnsResConfigSbeltName, + dnsResConfigSbeltRecursion, + dnsResConfigSbeltPref, + dnsResConfigSbeltSubTree, + dnsResConfigSbeltClass, + dnsResConfigSbeltStatus, + dnsResConfigUpTime, + dnsResConfigResetTime } + STATUS current + DESCRIPTION + "A collection of objects providing basic configuration + information for a DNS resolver implementation." + ::= { dnsResMIBGroups 1 } + +dnsResCounterGroup OBJECT-GROUP + OBJECTS { dnsResCounterByOpcodeCode, + dnsResCounterByOpcodeQueries, + dnsResCounterByOpcodeResponses, + dnsResCounterByRcodeCode, + dnsResCounterByRcodeResponses, + dnsResCounterNonAuthDataResps, + dnsResCounterNonAuthNoDataResps, + dnsResCounterMartians, + dnsResCounterRecdResponses, + dnsResCounterUnparseResps, + dnsResCounterFallbacks } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a DNS resolver implementation." + ::= { dnsResMIBGroups 2 } + +dnsResLameDelegationGroup OBJECT-GROUP + OBJECTS { dnsResLameDelegationOverflows, + dnsResLameDelegationSource, + dnsResLameDelegationName, + dnsResLameDelegationClass, + dnsResLameDelegationCounts, + dnsResLameDelegationStatus } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation of + `lame delegation' failures." + ::= { dnsResMIBGroups 3 } + + +dnsResCacheGroup OBJECT-GROUP + OBJECTS { dnsResCacheStatus, + dnsResCacheMaxTTL, + dnsResCacheGoodCaches, + dnsResCacheBadCaches, + dnsResCacheRRName, + dnsResCacheRRClass, + dnsResCacheRRType, + dnsResCacheRRTTL, + dnsResCacheRRElapsedTTL, + dnsResCacheRRSource, + dnsResCacheRRData, + dnsResCacheRRStatus, + dnsResCacheRRIndex, + dnsResCacheRRPrettyName } + STATUS current + DESCRIPTION + "A collection of objects providing access to and control + of a DNS resolver's cache." + ::= { dnsResMIBGroups 4 } + +dnsResNCacheGroup OBJECT-GROUP + OBJECTS { dnsResNCacheStatus, + dnsResNCacheMaxTTL, + dnsResNCacheGoodNCaches, + dnsResNCacheBadNCaches, + dnsResNCacheErrQName, + dnsResNCacheErrQClass, + dnsResNCacheErrQType, + dnsResNCacheErrTTL, + dnsResNCacheErrElapsedTTL, + dnsResNCacheErrSource, + dnsResNCacheErrCode, + dnsResNCacheErrStatus, + dnsResNCacheErrIndex, + dnsResNCacheErrPrettyName } + STATUS current + DESCRIPTION + "A collection of objects providing access to and control + of a DNS resolver's negative response cache." + ::= { dnsResMIBGroups 5 } + +dnsResOptCounterGroup OBJECT-GROUP + OBJECTS { dnsResOptCounterReferals, + dnsResOptCounterRetrans, + dnsResOptCounterNoResponses, + dnsResOptCounterRootRetrans, + dnsResOptCounterInternals, + dnsResOptCounterInternalTimeOuts } + STATUS current + DESCRIPTION + "A collection of objects providing further + instrumentation applicable to many but not all DNS + resolvers." + ::= { dnsResMIBGroups 6 } + + +-- Compliances. + +dnsResMIBCompliances OBJECT IDENTIFIER ::= { dnsResMIB 3 } + +dnsResMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents implementing the DNS + resolver MIB extensions." + MODULE -- This MIB module + MANDATORY-GROUPS { dnsResConfigGroup, dnsResCounterGroup } + GROUP dnsResCacheGroup + DESCRIPTION + "The resolver cache group is mandatory for resolvers that + implement a cache." + GROUP dnsResNCacheGroup + DESCRIPTION + "The resolver negative cache group is mandatory for + resolvers that implement a negative response cache." + GROUP dnsResLameDelegationGroup + DESCRIPTION + "The lame delegation group is unconditionally optional." + GROUP dnsResOptCounterGroup + DESCRIPTION + "The optional counters group is unconditionally + optional." + OBJECT dnsResConfigMaxCnames + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltName + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltRecursion + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltPref + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigReset + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResCacheMaxTTL + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResNCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResNCacheMaxTTL + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + ::= { dnsResMIBCompliances 1 } + +END diff --git a/mibs/ietf/DNS-SERVER-MIB b/mibs/ietf/DNS-SERVER-MIB new file mode 100644 index 0000000..2463b3e --- /dev/null +++ b/mibs/ietf/DNS-SERVER-MIB @@ -0,0 +1,1079 @@ +DNS-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + mib-2 + FROM RFC1213-MIB + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + IpAddress, Counter32, Gauge32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +dnsServMIB MODULE-IDENTITY + LAST-UPDATED "9401282251Z" + ORGANIZATION "IETF DNS Working Group" + CONTACT-INFO + " Rob Austein + Postal: Epilogue Technology Corporation + 268 Main Street, Suite 283 + North Reading, MA 10864 + US + Tel: +1 617 245 0804 + Fax: +1 617 245 8122 + E-Mail: sra@epilogue.com + + Jon Saperia + Postal: Digital Equipment Corporation + 110 Spit Brook Road + ZKO1-3/H18 + Nashua, NH 03062-2698 + US + Tel: +1 603 881 0480 + Fax: +1 603 881 0120 + Email: saperia@zko.dec.com" + DESCRIPTION + "The MIB module for entities implementing the server side + of the Domain Name System (DNS) protocol." + ::= { dns 1 } + +dns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to DNS MIB work by the IANA." + ::= { mib-2 32 } + +dnsServMIBObjects OBJECT IDENTIFIER ::= { dnsServMIB 1 } + +-- (Old-style) groups in the DNS server MIB. + +dnsServConfig OBJECT IDENTIFIER ::= { dnsServMIBObjects 1 } +dnsServCounter OBJECT IDENTIFIER ::= { dnsServMIBObjects 2 } +dnsServOptCounter OBJECT IDENTIFIER ::= { dnsServMIBObjects 3 } +dnsServZone OBJECT IDENTIFIER ::= { dnsServMIBObjects 4 } + + +-- Textual conventions + +DnsName ::= TEXTUAL-CONVENTION + -- A DISPLAY-HINT would be nice, but difficult to express. + STATUS current + DESCRIPTION + "A DNS name is a sequence of labels. When DNS names are + displayed, the boundaries between labels are typically + indicated by dots (e.g. `Acme' and `COM' are labels in + the name `Acme.COM'). In the DNS protocol, however, no + such separators are needed because each label is encoded + as a length octet followed by the indicated number of + octets of label. For example, `Acme.COM' is encoded as + the octet sequence { 4, 'A', 'c', 'm', 'e', 3, 'C', 'O', + 'M', 0 } (the final 0 is the length of the name of the + root domain, which appears implicitly at the end of any + DNS name). This MIB uses the same encoding as the DNS + protocol. + + A DnsName must always be a fully qualified name. It is + an error to encode a relative domain name as a DnsName + without first making it a fully qualified name." + REFERENCE + "RFC-1034 section 3.1." + SYNTAX OCTET STRING (SIZE (0..255)) + +DnsNameAsIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is like a DnsName, but is used + as an index componant in tables. Alphabetic characters + in names of this type are restricted to uppercase: the + characters 'a' through 'z' are mapped to the characters + 'A' through 'Z'. This restriction is intended to make + the lexical ordering imposed by SNMP useful when applied + to DNS names. + + Note that it is theoretically possible for a valid DNS + name to exceed the allowed length of an SNMP object + identifer, and thus be impossible to represent in tables + in this MIB that are indexed by DNS name. Sampling of + DNS names in current use on the Internet suggests that + this limit does not pose a serious problem in practice." + REFERENCE + "RFC-1034 section 3.1, RFC-1448 section 4.1." + SYNTAX DnsName + +DnsClass ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the class values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new classes + of records to be defined. Existing standard classes are + listed in the DNS specifications." + REFERENCE + "RFC-1035 section 3.2.4." + SYNTAX INTEGER (0..65535) + +DnsType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the type values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new record + types to be defined. Existing standard types are listed + in the DNS specifications." + REFERENCE + "RFC-1035 section 3.2.2." + SYNTAX INTEGER (0..65535) + +DnsQClass ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the QClass values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new QClass + records to be defined. Existing standard QClasses are + listed in the DNS specification." + REFERENCE + "RFC-1035 section 3.2.5." + SYNTAX INTEGER (0..65535) + +DnsQType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the QType values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new QType + records to be defined. Existing standard QTypes are + listed in the DNS specification." + REFERENCE + "RFC-1035 section 3.2.3." + SYNTAX INTEGER (0..65535) + +DnsTime ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "DnsTime values are 32-bit unsigned integers which + measure time in seconds." + REFERENCE + "RFC-1035." + SYNTAX Gauge32 + + +DnsOpCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is used to represent the DNS + OPCODE values used in the header section of DNS + messages. Existing standard OPCODE values are listed in + the DNS specifications." + REFERENCE + "RFC-1035 section 4.1.1." + SYNTAX INTEGER (0..15) + +DnsRespCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to represent the DNS RCODE value + in DNS response messages. Existing standard RCODE + values are listed in the DNS specifications." + REFERENCE + "RFC-1035 section 4.1.1." + SYNTAX INTEGER (0..15) + +-- Server Configuration Group + +dnsServConfigImplementIdent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the DNS + server software in use on the system, for example; + `FNS-2.1'" + ::= { dnsServConfig 1 } + +dnsServConfigRecurs OBJECT-TYPE + SYNTAX INTEGER { available(1), + restricted(2), + unavailable(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This represents the recursion services offered by this + name server. The values that can be read or written + are: + + available(1) - performs recursion on requests from + clients. + + restricted(2) - recursion is performed on requests only + from certain clients, for example; clients on an access + control list. + + unavailable(3) - recursion is not available." + ::= { dnsServConfig 2 } + +dnsServConfigUpTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process), + this value will be the time elapsed since it started. + For software without persistant state, this value will + be zero." + ::= { dnsServConfig 3 } + +dnsServConfigResetTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a `reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed since the last time the name server was + `reset.' For software that does not have persistence or + does not support a `reset' operation, this value will be + zero." + ::= { dnsServConfig 4 } + +dnsServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistant name + server state. When set to reset(2), any persistant + name server state (such as a process) is reinitialized as + if the name server had just been started. This value + will never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= { dnsServConfig 5 } + + +-- Server Counter Group + +dnsServCounterAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were authoritatively answered." + ::= { dnsServCounter 2 } + +dnsServCounterAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries for which `authoritative no such name' + responses were made." + ::= { dnsServCounter 3 } + +dnsServCounterAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries for which `authoritative no such data' + (empty answer) responses were made." + ::= { dnsServCounter 4 } + +dnsServCounterNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were non-authoritatively + answered (cached data)." + ::= { dnsServCounter 5 } + +dnsServCounterNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were non-authoritatively + answered with no data (empty answer)." + ::= { dnsServCounter 6 } + +dnsServCounterReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests that were referred to other servers." + ::= { dnsServCounter 7 } + +dnsServCounterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed that were + answered with errors (RCODE values other than 0 and 3)." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServCounter 8 } + +dnsServCounterRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received by the server for names that + are only 1 label long (text form - no internal dots)." + ::= { dnsServCounter 9 } + +dnsServCounterReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server." + ::= { dnsServCounter 10 } + +dnsServCounterReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable." + ::= { dnsServCounter 11 } + +dnsServCounterOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors." + ::= { dnsServCounter 12 } + +-- DNS Server Counter Table + +dnsServCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Counter information broken down by DNS class and type." + ::= { dnsServCounter 13 } + +dnsServCounterEntry OBJECT-TYPE + SYNTAX DnsServCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains count information for each DNS class + and type value known to the server. The index allows + management software to to create indices to the table to + get the specific information desired, e.g., number of + queries over UDP for records with type value `A' which + came to this server. In order to prevent an + uncontrolled expansion of rows in the table; if + dnsServCounterRequests is 0 and dnsServCounterResponses + is 0, then the row does not exist and `no such' is + returned when the agent is queried for such instances." + INDEX { dnsServCounterOpCode, + dnsServCounterQClass, + dnsServCounterQType, + dnsServCounterTransport } + ::= { dnsServCounterTable 1 } + +DnsServCounterEntry ::= + SEQUENCE { + dnsServCounterOpCode + DnsOpCode, + dnsServCounterQClass + DnsClass, + dnsServCounterQType + DnsType, + dnsServCounterTransport + INTEGER, + dnsServCounterRequests + Counter32, + dnsServCounterResponses + Counter32 + } + +dnsServCounterOpCode OBJECT-TYPE + SYNTAX DnsOpCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DNS OPCODE being counted in this row of the table." + ::= { dnsServCounterEntry 1 } + +dnsServCounterQClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The class of record being counted in this row of the + table." + ::= { dnsServCounterEntry 2 } + +dnsServCounterQType OBJECT-TYPE + SYNTAX DnsType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of record which is being counted in this row in + the table." + ::= { dnsServCounterEntry 3 } + +dnsServCounterTransport OBJECT-TYPE + SYNTAX INTEGER { udp(1), tcp(2), other(3) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value of udp(1) indicates that the queries reported on + this row were sent using UDP. + + A value of tcp(2) indicates that the queries reported on + this row were sent using TCP. + + A value of other(3) indicates that the queries reported + on this row were sent using a transport that was neither + TCP nor UDP." + ::= { dnsServCounterEntry 4 } + +dnsServCounterRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests (queries) that have been recorded in + this row of the table." + ::= { dnsServCounterEntry 5 } + +dnsServCounterResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses made by the server since + initialization for the kind of query identified on this + row of the table." + ::= { dnsServCounterEntry 6 } + +-- Server Optional Counter Group + +-- The Server Optional Counter Group is intended for those systems +-- which make distinctions between the different sources of the DNS +-- queries as defined below. +-- +-- Objects in this group are implemented on servers which distinguish +-- between queries which originate from the same host as the server, +-- queries from one of an arbitrary group of hosts that are on an +-- access list defined by the server, and queries from hosts that do +-- not fit either of these descriptions. +-- +-- The objects found in the Server Counter group are totals. Thus if +-- one wanted to identify, for example, the number of queries from +-- `remote' hosts which have been given authoritative answers, one +-- would subtract the current values of ServOptCounterFriendsAuthAns +-- and ServOptCounterSelfAuthAns from servCounterAuthAns. +-- +-- The purpose of these distinctions is to allow for implementations +-- to group queries and responses on this basis. One way in which +-- servers may make these distinctions is by looking at the source IP +-- address of the DNS query. If the source of the query is `your +-- own' then the query should be counted as `yourself' (local host). +-- If the source of the query matches an `access list,' the query +-- came from a friend. What constitutes an `access list' is +-- implementation dependent and could be as simple as a rule that all +-- hosts on the same IP network as the DNS server are classed +-- `friends.' +-- +-- In order to avoid double counting, the following rules apply: +-- +-- 1. No host is in more than one of the three groups defined above. +-- +-- 2. All queries from the local host are always counted in the +-- `yourself' group regardless of what the access list, if any, +-- says. +-- +-- 3. The access list should not define `your friends' in such a way +-- that it includes all hosts. That is, not everybody is your +-- `friend.' + +dnsServOptCounterSelfAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative answer." + ::= { dnsServOptCounter 1 } + +dnsServOptCounterSelfAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative no such name answer + given." + ::= { dnsServOptCounter 2 } + +dnsServOptCounterSelfAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative no such data answer + (empty answer) made." + ::= { dnsServOptCounter 3 } + +dnsServOptCounterSelfNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which a + non-authoritative answer (cached data) was made." + ::= { dnsServOptCounter 4 } + +dnsServOptCounterSelfNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which a + `non-authoritative, no such data' response was made + (empty answer)." + ::= { dnsServOptCounter 5 } + +dnsServOptCounterSelfReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries the server has processed which + originated from a resolver on the same host and were + referred to other servers." + ::= { dnsServOptCounter 6 } + +dnsServOptCounterSelfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host which have + been answered with errors (RCODEs other than 0 and 3)." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServOptCounter 7 } + +dnsServOptCounterSelfRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received for names that are only 1 + label long (text form - no internal dots) the server has + processed which originated from a resolver on the same + host." + ::= { dnsServOptCounter 8 } + +dnsServOptCounterSelfReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server which + originated from a resolver on the same host." + ::= { dnsServOptCounter 9 } + +dnsServOptCounterSelfReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable and + which originated from a resolver on the same host." + ::= { dnsServOptCounter 10 } + +dnsServOptCounterSelfOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors and which originated on the same host." + ::= { dnsServOptCounter 11 } + +dnsServOptCounterFriendsAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + authoritatively answered. The definition of friends is + a locally defined matter." + ::= { dnsServOptCounter 12 } + +dnsServOptCounterFriendsAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends, for which + authoritative `no such name' responses were made. The + definition of friends is a locally defined matter." + ::= { dnsServOptCounter 13 } + +dnsServOptCounterFriendsAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends for which + authoritative no such data (empty answer) responses were + made. The definition of friends is a locally defined + matter." + ::= { dnsServOptCounter 14 } + +dnsServOptCounterFriendsNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + non-authoritatively answered (cached data). The + definition of friends is a locally defined matter." + ::= { dnsServOptCounter 15 } + +dnsServOptCounterFriendsNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + non-authoritatively answered with no such data (empty + answer)." + ::= { dnsServOptCounter 16 } + +dnsServOptCounterFriendsReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which originated from friends that + were referred to other servers. The definition of + friends is a locally defined matter." + ::= { dnsServOptCounter 17 } + +dnsServOptCounterFriendsErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from friends and were answered with errors + (RCODE values other than 0 and 3). The definition of + friends is a locally defined matter." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServOptCounter 18 } + +dnsServOptCounterFriendsRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received for names from friends that + are only 1 label long (text form - no internal dots) the + server has processed." + ::= { dnsServOptCounter 19 } + +dnsServOptCounterFriendsReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server which were + received from `friends'." + ::= { dnsServOptCounter 20 } + +dnsServOptCounterFriendsReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable and + which originated from `friends'." + ::= { dnsServOptCounter 21 } + +dnsServOptCounterFriendsOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors and which originated from `friends'." + ::= { dnsServOptCounter 22 } + + +-- Server Zone Group + +-- DNS Management Zone Configuration Table + +-- This table contains zone configuration information. + +dnsServZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of zones for which this name server provides + information. Each of the zones may be loaded from stable + storage via an implementation-specific mechanism or may + be obtained from another name server via a zone transfer. + + If name server doesn't load any zones, this table is + empty." + ::= { dnsServZone 1 } + +dnsServZoneEntry OBJECT-TYPE + SYNTAX DnsServZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the name server zone table. New rows may be + added either via SNMP or by the name server itself." + INDEX { dnsServZoneName, + dnsServZoneClass } + ::= { dnsServZoneTable 1 } + +DnsServZoneEntry ::= + SEQUENCE { + dnsServZoneName + DnsNameAsIndex, + dnsServZoneClass + DnsClass, + dnsServZoneLastReloadSuccess + DnsTime, + dnsServZoneLastReloadAttempt + DnsTime, + dnsServZoneLastSourceAttempt + IpAddress, + dnsServZoneStatus + RowStatus, + dnsServZoneSerial + Counter32, + dnsServZoneCurrent + TruthValue, + dnsServZoneLastSourceSuccess + IpAddress + } + +dnsServZoneName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name of the zone described by this row of the table. + This is the owner name of the SOA RR that defines the + top of the zone. This is name is in uppercase: + characters 'a' through 'z' are mapped to 'A' through 'Z' + in order to make the lexical ordering useful." + ::= { dnsServZoneEntry 1 } + +dnsServZoneClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of the RRs in this zone." + ::= { dnsServZoneEntry 2 } + +dnsServZoneLastReloadSuccess OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in seconds since last successful reload of + this zone." + ::= { dnsServZoneEntry 3 } + +dnsServZoneLastReloadAttempt OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in seconds since last attempted reload of + this zone." + ::= { dnsServZoneEntry 4 } + +dnsServZoneLastSourceAttempt OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of host from which most recent zone transfer + of this zone was attempted. This value should match the + value of dnsServZoneSourceSuccess if the attempt was + succcessful. If zone transfer has not been attempted + within the memory of this name server, this value should + be 0.0.0.0." + ::= { dnsServZoneEntry 5 } + +dnsServZoneStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the information represented in this row of + the table." + ::= { dnsServZoneEntry 6 } + +dnsServZoneSerial OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Zone serial number (from the SOA RR) of the zone + represented by this row of the table. If the zone has + not been successfully loaded within the memory of this + name server, the value of this variable is zero." + ::= { dnsServZoneEntry 7 } + +dnsServZoneCurrent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the server's copy of the zone represented by + this row of the table is currently valid. If the zone + has never been successfully loaded or has expired since + it was last succesfully loaded, this variable will have + the value false(2), otherwise this variable will have + the value true(1)." + ::= { dnsServZoneEntry 8 } + +dnsServZoneLastSourceSuccess OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of host which was the source of the most + recent successful zone transfer for this zone. If + unknown (e.g., zone has never been successfully + transfered) or irrelevant (e.g., zone was loaded from + stable storage), this value should be 0.0.0.0." + ::= { dnsServZoneEntry 9 } + +-- DNS Zone Source Table + +dnsServZoneSrcTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServZoneSrcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is a list of IP addresses from which the + server will attempt to load zone information using DNS + zone transfer operations. A reload may occur due to SNMP + operations that create a row in dnsServZoneTable or a + SET to object dnsServZoneReload. This table is only + used when the zone is loaded via zone transfer." + ::= { dnsServZone 2 } + +dnsServZoneSrcEntry OBJECT-TYPE + SYNTAX DnsServZoneSrcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the name server zone source table." + INDEX { dnsServZoneSrcName, + dnsServZoneSrcClass, + dnsServZoneSrcAddr } + ::= { dnsServZoneSrcTable 1 } + +DnsServZoneSrcEntry ::= + SEQUENCE { + dnsServZoneSrcName + DnsNameAsIndex, + dnsServZoneSrcClass + DnsClass, + dnsServZoneSrcAddr + IpAddress, + dnsServZoneSrcStatus + RowStatus + } + +dnsServZoneSrcName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name of the zone to which this entry applies." + ::= { dnsServZoneSrcEntry 1 } + +dnsServZoneSrcClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of zone to which this entry applies." + ::= { dnsServZoneSrcEntry 2 } + +dnsServZoneSrcAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of name server host from which this zone + might be obtainable." + ::= { dnsServZoneSrcEntry 3 } + +dnsServZoneSrcStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the information represented in this row of + the table." + ::= { dnsServZoneSrcEntry 4 } + + +-- SNMPv2 groups. + +dnsServMIBGroups OBJECT IDENTIFIER ::= { dnsServMIB 2 } + +dnsServConfigGroup OBJECT-GROUP + OBJECTS { dnsServConfigImplementIdent, + dnsServConfigRecurs, + dnsServConfigUpTime, + dnsServConfigResetTime, + dnsServConfigReset } + STATUS current + DESCRIPTION + "A collection of objects providing basic configuration + control of a DNS name server." + ::= { dnsServMIBGroups 1 } + +dnsServCounterGroup OBJECT-GROUP + OBJECTS { dnsServCounterAuthAns, + dnsServCounterAuthNoNames, + dnsServCounterAuthNoDataResps, + dnsServCounterNonAuthDatas, + dnsServCounterNonAuthNoDatas, + dnsServCounterReferrals, + dnsServCounterErrors, + dnsServCounterRelNames, + dnsServCounterReqRefusals, + dnsServCounterReqUnparses, + dnsServCounterOtherErrors, + dnsServCounterOpCode, + dnsServCounterQClass, + dnsServCounterQType, + dnsServCounterTransport, + dnsServCounterRequests, + dnsServCounterResponses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a DNS name server." + ::= { dnsServMIBGroups 2 } + +dnsServOptCounterGroup OBJECT-GROUP + OBJECTS { dnsServOptCounterSelfAuthAns, + dnsServOptCounterSelfAuthNoNames, + dnsServOptCounterSelfAuthNoDataResps, + dnsServOptCounterSelfNonAuthDatas, + dnsServOptCounterSelfNonAuthNoDatas, + dnsServOptCounterSelfReferrals, + dnsServOptCounterSelfErrors, + dnsServOptCounterSelfRelNames, + dnsServOptCounterSelfReqRefusals, + dnsServOptCounterSelfReqUnparses, + dnsServOptCounterSelfOtherErrors, + dnsServOptCounterFriendsAuthAns, + dnsServOptCounterFriendsAuthNoNames, + dnsServOptCounterFriendsAuthNoDataResps, + dnsServOptCounterFriendsNonAuthDatas, + dnsServOptCounterFriendsNonAuthNoDatas, + dnsServOptCounterFriendsReferrals, + dnsServOptCounterFriendsErrors, + dnsServOptCounterFriendsRelNames, + dnsServOptCounterFriendsReqRefusals, + dnsServOptCounterFriendsReqUnparses, + dnsServOptCounterFriendsOtherErrors } + STATUS current + DESCRIPTION + "A collection of objects providing extended + instrumentation of a DNS name server." + ::= { dnsServMIBGroups 3 } + +dnsServZoneGroup OBJECT-GROUP + OBJECTS { dnsServZoneName, + dnsServZoneClass, + dnsServZoneLastReloadSuccess, + dnsServZoneLastReloadAttempt, + dnsServZoneLastSourceAttempt, + dnsServZoneLastSourceSuccess, + dnsServZoneStatus, + dnsServZoneSerial, + dnsServZoneCurrent, + dnsServZoneSrcName, + dnsServZoneSrcClass, + dnsServZoneSrcAddr, + dnsServZoneSrcStatus } + STATUS current + DESCRIPTION + "A collection of objects providing configuration control + of a DNS name server which loads authoritative zones." + ::= { dnsServMIBGroups 4 } + +-- Compliances. + +dnsServMIBCompliances OBJECT IDENTIFIER ::= { dnsServMIB 3 } + +dnsServMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents implementing the DNS + name server MIB extensions." + MODULE -- This MIB module + MANDATORY-GROUPS { dnsServConfigGroup, dnsServCounterGroup } + GROUP dnsServOptCounterGroup + DESCRIPTION + "The server optional counter group is unconditionally + optional." + GROUP dnsServZoneGroup + DESCRIPTION + "The server zone group is mandatory for any name server + that acts as an authoritative server for any DNS zone." + OBJECT dnsServConfigRecurs + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsServConfigReset + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + ::= { dnsServMIBCompliances 1 } + +END diff --git a/mibs/ietf/DOCS-BPI-MIB b/mibs/ietf/DOCS-BPI-MIB new file mode 100644 index 0000000..76915bf --- /dev/null +++ b/mibs/ietf/DOCS-BPI-MIB @@ -0,0 +1,1625 @@ +DOCS-BPI-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, OBJECT-TYPE, +Integer32, Counter32, IpAddress +FROM SNMPv2-SMI +DisplayString, MacAddress, RowStatus, TruthValue, DateAndTime +FROM SNMPv2-TC +OBJECT-GROUP, MODULE-COMPLIANCE +FROM SNMPv2-CONF +ifIndex +FROM IF-MIB +docsIfMib, docsIfCmServiceId, docsIfCmtsServiceId +FROM DOCS-IF-MIB +; + +docsBpiMIB MODULE-IDENTITY +LAST-UPDATED "200103130000Z" +ORGANIZATION "IETF IPCDN Working Group" +CONTACT-INFO "Rich Woundy + Postal: Cisco Systems + 250 Apollo Drive + Chelmsford, MA 01824 U.S.A. + Tel: +1 978 244 8000 + E-mail: rwoundy@cisco.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, rwoundy@cisco.com + Andrew Valentine, a.valentine@eu.hns.com" +DESCRIPTION +"This is the MIB Module for the DOCSIS Baseline Privacy Interface +(BPI) at cable modems (CMs) and cable modem termination systems +(CMTSs). CableLabs requires the implementation of this MIB in +DOCSIS 1.0 cable modems that implement the Baseline Privacy +Interface, as a prerequisite for DOCSIS 1.0 certification." + +REVISION "200103130000Z" +DESCRIPTION +"Version published as RFC 3083." + +REVISION "200011031930Z" +DESCRIPTION +"Modified by Richard Woundy to fix problems identified by the MIB + + +doctor. I marked docsBpiCmtsDefaultAuthGraceTime and +docsBpiCmtsDefaultTEKGraceTime as obsolete objects, to prevent OID +reassignment. Several object descriptions were also corrected." + +REVISION "200002161930Z" +DESCRIPTION +"Initial version. +CableLabs requires the implementation of this MIB in certified DOCSIS +1.0 cable modems implementing the Baseline Privacy Interface, per +DOCSIS 1.0 engineering change notice oss-n-99027." +::= { docsIfMib 5 } + +docsBpiMIBObjects OBJECT IDENTIFIER ::= { docsBpiMIB 1 } + +-- Cable Modem Group + +docsBpiCmObjects OBJECT IDENTIFIER ::= { docsBpiMIBObjects 1 } + +-- +-- The BPI base and authorization table for CMs, indexed by ifIndex +-- + +docsBpiCmBaseTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the basic and authorization-related Baseline +Privacy attributes of each CM MAC interface." +::= { docsBpiCmObjects 1 } + +docsBpiCmBaseEntry OBJECT-TYPE +SYNTAX DocsBpiCmBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one CM MAC +interface. An entry in this table exists for each ifEntry with an +ifType of docsCableMaclayer(127)." +INDEX { ifIndex } +::= { docsBpiCmBaseTable 1 } + +DocsBpiCmBaseEntry ::= SEQUENCE { +docsBpiCmPrivacyEnable TruthValue, +docsBpiCmPublicKey OCTET STRING, +docsBpiCmAuthState INTEGER, +docsBpiCmAuthKeySequenceNumber Integer32, +docsBpiCmAuthExpires DateAndTime, + + +docsBpiCmAuthReset TruthValue, +docsBpiCmAuthGraceTime Integer32, +docsBpiCmTEKGraceTime Integer32, +docsBpiCmAuthWaitTimeout Integer32, +docsBpiCmReauthWaitTimeout Integer32, +docsBpiCmOpWaitTimeout Integer32, +docsBpiCmRekeyWaitTimeout Integer32, +docsBpiCmAuthRejectWaitTimeout Integer32, +docsBpiCmAuthRequests Counter32, +docsBpiCmAuthReplies Counter32, +docsBpiCmAuthRejects Counter32, +docsBpiCmAuthInvalids Counter32, +docsBpiCmAuthRejectErrorCode INTEGER, +docsBpiCmAuthRejectErrorString DisplayString, +docsBpiCmAuthInvalidErrorCode INTEGER, +docsBpiCmAuthInvalidErrorString DisplayString +} + +docsBpiCmPrivacyEnable OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"This object identifies whether this CM is provisioned to run +Baseline Privacy. This is analogous to the presence (or absence) +of the Baseline Privacy Configuration Setting option. The status +of each individual SID with respect to Baseline Privacy is +captured in the docsBpiCmTEKPrivacyEnable object." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1." +::= { docsBpiCmBaseEntry 1 } + +docsBpiCmPublicKey OBJECT-TYPE +SYNTAX OCTET STRING (SIZE (74 | 106 | 140 | 270)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is a DER-encoded RSAPublicKey ASN.1 type +string, as defined in the RSA Encryption Standard (PKCS #1) [22], +corresponding to the public key of the CM. The 74, 106, 140, and +270 byte key encoding lengths correspond to 512 bit, 768 bit, 1024 +bit, and 2048 public moduli respectively." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.2.4." +::= { docsBpiCmBaseEntry 2 } + +docsBpiCmAuthState OBJECT-TYPE +SYNTAX INTEGER { + + + authWait(2), + authorized(3), + reauthWait(4), + authRejectWait(5) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the state of the CM authorization +FSM. The start state indicates that FSM is in its initial state." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.2.1." +::= { docsBpiCmBaseEntry 3 } + +docsBpiCmAuthKeySequenceNumber OBJECT-TYPE +SYNTAX Integer32 (0..15) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the authorization key sequence number +for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.10." +::= { docsBpiCmBaseEntry 4 } + +docsBpiCmAuthExpires OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time when the current +authorization for this FSM expires. If the CM does not have an active +authorization, then the value is of the expiration date and time of +the last active authorization." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.9." +::= { docsBpiCmBaseEntry 5 } + +docsBpiCmAuthReset OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to TRUE generates a Reauthorize event in the +authorization FSM. Reading this object always returns FALSE." +REFERENCE + + +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.2.3.4." +::= { docsBpiCmBaseEntry 6 } + +docsBpiCmAuthGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for an authorization key. +A CM is expected to start trying to get a new authorization key +beginning AuthGraceTime seconds before the authorization key actually +expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.3." +::= { docsBpiCmBaseEntry 7 } + +docsBpiCmTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for a TEK. A CM is +expected to start trying to get a new TEK beginning TEKGraceTime +seconds before the TEK actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.6." +::= { docsBpiCmBaseEntry 8 } + +docsBpiCmAuthWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..30) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Authorize Wait Timeout." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.1." +::= { docsBpiCmBaseEntry 9 } + +docsBpiCmReauthWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..30) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Reauthorize Wait Timeout in seconds." + + +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.2." +::= { docsBpiCmBaseEntry 10 } + +docsBpiCmOpWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..10) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Operational Wait Timeout in seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.4." +::= { docsBpiCmBaseEntry 11 } + +docsBpiCmRekeyWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..10) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Rekey Wait Timeout in seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.5." +::= { docsBpiCmBaseEntry 12 } + +docsBpiCmAuthRejectWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..600) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Authorization Reject Wait Timeout in +seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.7." +::= { docsBpiCmBaseEntry 13 } + +docsBpiCmAuthRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +transmitted an Authorization Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmBaseEntry 14 } + + +docsBpiCmAuthReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Reply message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmBaseEntry 15 } + +docsBpiCmAuthRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Reject message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmBaseEntry 16 } + +docsBpiCmAuthInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Invalid message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmBaseEntry 17 } + +docsBpiCmAuthRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Reject message received by +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Reject message has been received +since reboot." + + +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.16." +::= { docsBpiCmBaseEntry 18 } + +docsBpiCmAuthRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Reject message received by the CM. This is a zero +length string if no Authorization Reject message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.6." +::= { docsBpiCmBaseEntry 19 } + +docsBpiCmAuthInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Invalid message received by +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Invalid message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.16." +::= { docsBpiCmBaseEntry 20 } + +docsBpiCmAuthInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Invalid message received by the CM. This is a zero + + +length string if no Authorization Invalid message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.6." +::= { docsBpiCmBaseEntry 21 } + +-- +-- The CM TEK Table, indexed by ifIndex and SID +-- + +docsBpiCmTEKTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the attributes of each CM Traffic Encryption Key +(TEK) association. The CM maintains (no more than) one TEK association +per SID per CM MAC interface." +::= { docsBpiCmObjects 2 } + +docsBpiCmTEKEntry OBJECT-TYPE +SYNTAX DocsBpiCmTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the TEK association attributes +of one SID. The CM MUST create one entry per unicast SID, regardless +of whether the SID was obtained from a Registration Response message, +or from an Authorization Reply message." +INDEX { ifIndex, docsIfCmServiceId } +::= { docsBpiCmTEKTable 1 } + +DocsBpiCmTEKEntry ::= SEQUENCE { +docsBpiCmTEKPrivacyEnable TruthValue, +docsBpiCmTEKState INTEGER, +docsBpiCmTEKExpiresOld DateAndTime, +docsBpiCmTEKExpiresNew DateAndTime, +docsBpiCmTEKKeyRequests Counter32, +docsBpiCmTEKKeyReplies Counter32, +docsBpiCmTEKKeyRejects Counter32, +docsBpiCmTEKInvalids Counter32, +docsBpiCmTEKAuthPends Counter32, +docsBpiCmTEKKeyRejectErrorCode INTEGER, +docsBpiCmTEKKeyRejectErrorString DisplayString, +docsBpiCmTEKInvalidErrorCode INTEGER, +docsBpiCmTEKInvalidErrorString DisplayString +} + + +docsBpiCmTEKPrivacyEnable OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"This object identifies whether this SID is provisioned to run +Baseline Privacy. This is analogous to enabling Baseline Privacy on +a provisioned SID using the Class-of-Service Privacy Enable option. +Baseline Privacy is not effectively enabled for any SID unless +Baseline Privacy is enabled for the CM, which is managed via the +docsBpiCmPrivacyEnable object." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.2." +::= { docsBpiCmTEKEntry 1 } + +docsBpiCmTEKState OBJECT-TYPE +SYNTAX INTEGER { + start(1), + opWait(2), + opReauthWait(3), + operational(4), + rekeyWait(5), + rekeyReauthWait(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the state of the indicated TEK FSM. +The start(1) state indicates that FSM is in its initial state." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.1." +::= { docsBpiCmTEKEntry 2 } + +docsBpiCmTEKExpiresOld OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the immediate predecessor of the most recent TEK for this FSM. +If this FSM has only one TEK, then the value is the time of activation +of this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 and +4.2.2.9." +::= { docsBpiCmTEKEntry 3 } + +docsBpiCmTEKExpiresNew OBJECT-TYPE + + +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the most recent TEK for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 and +4.2.2.9." +::= { docsBpiCmTEKEntry 4 } + +docsBpiCmTEKKeyRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has transmitted +a Key Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.4." +::= { docsBpiCmTEKEntry 5 } + +docsBpiCmTEKKeyReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has received +a Key Reply message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5." +::= { docsBpiCmTEKEntry 6 } + +docsBpiCmTEKKeyRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has received +a Key Reject message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.6." +::= { docsBpiCmTEKEntry 7 } + +docsBpiCmTEKInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current + + +DESCRIPTION +"The value of this object is the count of times the CM has received +a TEK Invalid message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.8." +::= { docsBpiCmTEKEntry 8 } + +docsBpiCmTEKAuthPends OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times an Authorization +Pending (Auth Pend) event occurred in this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.3.3." +::= { docsBpiCmTEKEntry 9 } + +docsBpiCmTEKKeyRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Key Reject message received by the CM. This +has value unknown(2) if the last Error-Code value was 0, and none(1) +if no Key Reject message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.6 +and 4.2.2.16." +::= { docsBpiCmTEKEntry 10 } + +docsBpiCmTEKKeyRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent Key +Reject message received by the CM. This is a zero length string if no +Key Reject message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.6 +and 4.2.2.6." +::= { docsBpiCmTEKEntry 11 } + + +docsBpiCmTEKInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent TEK Invalid message received by the CM. +This has value unknown(2) if the last Error-Code value was 0, and +none(1) if no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.8 +and 4.2.2.16." +::= { docsBpiCmTEKEntry 12 } + +docsBpiCmTEKInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent TEK +Invalid message received by the CM. This is a zero length string if +no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.8 +and 4.2.2.6." +::= { docsBpiCmTEKEntry 13 } + +-- Cable Modem Termination System Group + +docsBpiCmtsObjects OBJECT IDENTIFIER ::= { docsBpiMIBObjects 2 } + +-- +-- The BPI base table for CMTSs, indexed by ifIndex +-- + +docsBpiCmtsBaseTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the basic Baseline Privacy attributes of each +CMTS MAC interface." +::= { docsBpiCmtsObjects 1 } + + + +docsBpiCmtsBaseEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one CMTS MAC +interface. An entry in this table exists for each ifEntry with an +ifType of docsCableMaclayer(127)." +INDEX { ifIndex } +::= { docsBpiCmtsBaseTable 1 } + +DocsBpiCmtsBaseEntry ::= SEQUENCE { +docsBpiCmtsDefaultAuthLifetime Integer32, +docsBpiCmtsDefaultTEKLifetime Integer32, +docsBpiCmtsDefaultAuthGraceTime Integer32, +docsBpiCmtsDefaultTEKGraceTime Integer32, +docsBpiCmtsAuthRequests Counter32, +docsBpiCmtsAuthReplies Counter32, +docsBpiCmtsAuthRejects Counter32, +docsBpiCmtsAuthInvalids Counter32 +} + +docsBpiCmtsDefaultAuthLifetime OBJECT-TYPE +SYNTAX Integer32 (1..6048000) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the default lifetime, in seconds, the +CMTS assigns to a new authorization key." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.2." +::= { docsBpiCmtsBaseEntry 1 } + +docsBpiCmtsDefaultTEKLifetime OBJECT-TYPE +SYNTAX Integer32 (1..604800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the default lifetime, in seconds, the +CMTS assigns to a new Traffic Encryption Key (TEK)." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.2." +::= { docsBpiCmtsBaseEntry 2 } + +-- Note: the following two objects have been obsoleted from this MIB. + + + +docsBpiCmtsDefaultAuthGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS obsolete +DESCRIPTION +"This object was obsoleted because the provisioning system, not the CMTS, +manages the authorization key grace time for DOCSIS CMs." +::= { docsBpiCmtsBaseEntry 3 } + +docsBpiCmtsDefaultTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS obsolete +DESCRIPTION +"This object was obsoleted because the provisioning system, not the CMTS, +manages the Traffic Encryption Key (TEK) grace time for DOCSIS CMs." +::= { docsBpiCmtsBaseEntry 4 } + +docsBpiCmtsAuthRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received an Authorization Request message from any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmtsBaseEntry 5 } + +docsBpiCmtsAuthReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reply message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmtsBaseEntry 6 } + +docsBpiCmtsAuthRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has + + +transmitted an Authorization Reject message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmtsBaseEntry 7 } + +docsBpiCmtsAuthInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Invalid message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmtsBaseEntry 8 } + +-- +-- The CMTS Authorization Table, indexed by ifIndex and CM MAC address +-- + +docsBpiCmtsAuthTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the attributes of each CM authorization +association. The CMTS maintains one authorization association with +each Baseline Privacy-enabled CM on each CMTS MAC interface." +::= { docsBpiCmtsObjects 2 } + +docsBpiCmtsAuthEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one +authorization association. The CMTS MUST create one entry per CM per +MAC interface, based on the receipt of an Authorization Request +message, and MUST not delete the entry before the CM authorization +permanently expires." +INDEX { ifIndex, docsBpiCmtsAuthCmMacAddress } +::= { docsBpiCmtsAuthTable 1 } + +DocsBpiCmtsAuthEntry ::= SEQUENCE { +docsBpiCmtsAuthCmMacAddress MacAddress, +docsBpiCmtsAuthCmPublicKey OCTET STRING, +docsBpiCmtsAuthCmKeySequenceNumber Integer32, +docsBpiCmtsAuthCmExpires DateAndTime, + + +docsBpiCmtsAuthCmLifetime Integer32, +docsBpiCmtsAuthCmGraceTime Integer32, +docsBpiCmtsAuthCmReset INTEGER, +docsBpiCmtsAuthCmRequests Counter32, +docsBpiCmtsAuthCmReplies Counter32, +docsBpiCmtsAuthCmRejects Counter32, +docsBpiCmtsAuthCmInvalids Counter32, +docsBpiCmtsAuthRejectErrorCode INTEGER, +docsBpiCmtsAuthRejectErrorString DisplayString, +docsBpiCmtsAuthInvalidErrorCode INTEGER, +docsBpiCmtsAuthInvalidErrorString DisplayString +} + +docsBpiCmtsAuthCmMacAddress OBJECT-TYPE +SYNTAX MacAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"The value of this object is the physical address of the CM to +which the authorization association applies." +::= { docsBpiCmtsAuthEntry 1 } + +docsBpiCmtsAuthCmPublicKey OBJECT-TYPE +SYNTAX OCTET STRING + (SIZE (0 | 74 | 106 | 140 | 270)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is a DER-encoded RSAPublicKey ASN.1 type +string, as defined in the RSA Encryption Standard (PKCS #1) [22], +corresponding to the public key of the CM. The 74, 106, 140, and +270 byte key encoding lengths correspond to 512 bit, 768 bit, 1024 +bit, and 2048 public moduli respectively. This is a zero-length +string if the CMTS does not retain the public key." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.2.4." +::= { docsBpiCmtsAuthEntry 2 } + +docsBpiCmtsAuthCmKeySequenceNumber OBJECT-TYPE +SYNTAX Integer32 (0..15) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the authorization key sequence number +for this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.10." + + +::= { docsBpiCmtsAuthEntry 3 } + +docsBpiCmtsAuthCmExpires OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time when the current +authorization for this CM expires. If this CM does not have an +active authorization, then the value is of the expiration date and +time of the last active authorization." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.9." +::= { docsBpiCmtsAuthEntry 4 } + +docsBpiCmtsAuthCmLifetime OBJECT-TYPE +SYNTAX Integer32 (1..6048000) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the lifetime, in seconds, the CMTS +assigns to an authorization key for this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2 +and Appendix A.2." +::= { docsBpiCmtsAuthEntry 5 } + +docsBpiCmtsAuthCmGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for the authorization key +in seconds. The CM is expected to start trying to get a new +authorization key beginning AuthGraceTime seconds before the +authorization key actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.3." +::= { docsBpiCmtsAuthEntry 6 } + +docsBpiCmtsAuthCmReset OBJECT-TYPE +SYNTAX INTEGER { + noResetRequested(1), + invalidateAuth(2), + sendAuthInvalid(3), + + + invalidateTeks(4) + } +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to invalidateAuth(2) causes the CMTS to +invalidate the current CM authorization key, but not to transmit an +Authorization Invalid message nor to invalidate unicast TEKs. Setting +this object to sendAuthInvalid(3) causes the CMTS to invalidate the +current CM authorization key, and to transmit an Authorization Invalid +message to the CM, but not to invalidate unicast TEKs. Setting this +object to invalidateTeks(4) causes the CMTS to invalidate the current +CM authorization key, to transmit an Authorization Invalid message to +the CM, and to invalidate all unicast TEKs associated with this CM +authorization. Reading this object returns the most-recently-set value +of this object, or returns noResetRequested(1) if the object has not +been set since the last CMTS reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.3.4, +4.1.2.3.5, and 4.1.3.3.5." +::= { docsBpiCmtsAuthEntry 7 } + +docsBpiCmtsAuthCmRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received an Authorization Request message from this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmtsAuthEntry 8 } + +docsBpiCmtsAuthCmReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reply message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmtsAuthEntry 9 } + +docsBpiCmtsAuthCmRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current + + +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reject message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmtsAuthEntry 10 } + +docsBpiCmtsAuthCmInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Invalid message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmtsAuthEntry 11 } + +docsBpiCmtsAuthRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Reject message transmitted to +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Reject message has been transmitted +to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.16." +::= { docsBpiCmtsAuthEntry 12 } + +docsBpiCmtsAuthRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Reject message transmitted to the CM. This is a +zero length string if no Authorization Reject message has been +transmitted to the CM." +REFERENCE + + +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.6." +::= { docsBpiCmtsAuthEntry 13 } + +docsBpiCmtsAuthInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Invalid message transmitted +to the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Invalid message has been +transmitted to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.16." +::= { docsBpiCmtsAuthEntry 14 } + +docsBpiCmtsAuthInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Invalid message transmitted to the CM. This is a +zero length string if no Authorization Invalid message has been +transmitted to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.6." +::= { docsBpiCmtsAuthEntry 15 } + +-- +-- The CMTS TEK Table, indexed by ifIndex and SID +-- + +docsBpiCmtsTEKTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsTEKEntry +MAX-ACCESS not-accessible +STATUS current + + +DESCRIPTION +"This table describes the attributes of each CM Traffic Encryption +Key (TEK) association. The CMTS maintains one TEK association per BPI +SID on each CMTS MAC interface." +::= { docsBpiCmtsObjects 3 } + +docsBpiCmtsTEKEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one TEK +association on a particular CMTS MAC interface. The CMTS MUST create +one entry per SID per MAC interface, based on the receipt of an +Key Request message, and MUST not delete the entry before the CM +authorization for the SID permanently expires." +INDEX { ifIndex, docsIfCmtsServiceId } +::= { docsBpiCmtsTEKTable 1 } + +DocsBpiCmtsTEKEntry ::= SEQUENCE { +docsBpiCmtsTEKLifetime Integer32, +docsBpiCmtsTEKGraceTime Integer32, +docsBpiCmtsTEKExpiresOld DateAndTime, +docsBpiCmtsTEKExpiresNew DateAndTime, +docsBpiCmtsTEKReset TruthValue, +docsBpiCmtsKeyRequests Counter32, +docsBpiCmtsKeyReplies Counter32, +docsBpiCmtsKeyRejects Counter32, +docsBpiCmtsTEKInvalids Counter32, +docsBpiCmtsKeyRejectErrorCode INTEGER, +docsBpiCmtsKeyRejectErrorString DisplayString, +docsBpiCmtsTEKInvalidErrorCode INTEGER, +docsBpiCmtsTEKInvalidErrorString DisplayString +} + +docsBpiCmtsTEKLifetime OBJECT-TYPE +SYNTAX Integer32 (1..604800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the lifetime, in seconds, the CMTS assigns +to keys for this TEK association." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5 +and Appendix A.2." +::= { docsBpiCmtsTEKEntry 1 } + + + +docsBpiCmtsTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for the TEK in seconds. +The CM is expected to start trying to get a new TEK beginning +TEKGraceTime seconds before the TEK actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.6." +::= { docsBpiCmtsTEKEntry 2 } + +docsBpiCmtsTEKExpiresOld OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the immediate predecessor of the most recent TEK for this FSM. +If this FSM has only one TEK, then the value is the time of activation +of this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 +and 4.2.2.9." +::= { docsBpiCmtsTEKEntry 3 } + +docsBpiCmtsTEKExpiresNew OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the most recent TEK for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 +and 4.2.2.9." +::= { docsBpiCmtsTEKEntry 4 } + +docsBpiCmtsTEKReset OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to TRUE causes the CMTS to invalidate the current +active TEK(s) (plural due to key transition periods), and to generate +a new TEK for the associated SID; the CMTS MAY also generate an +unsolicited TEK Invalid message, to optimize the TEK synchronization + + +between the CMTS and the CM. Reading this object always returns +FALSE." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.3.5." +::= { docsBpiCmtsTEKEntry 5 } + +docsBpiCmtsKeyRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received a Key Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.4." +::= { docsBpiCmtsTEKEntry 6 } + +docsBpiCmtsKeyReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a Key Reply message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5." +::= { docsBpiCmtsTEKEntry 7 } + +docsBpiCmtsKeyRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a Key Reject message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.6." +::= { docsBpiCmtsTEKEntry 8 } + +docsBpiCmtsTEKInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a TEK Invalid message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.8." + + +::= { docsBpiCmtsTEKEntry 9 } + +docsBpiCmtsKeyRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in the most recent Key Reject message sent in response to +a Key Request for this BPI SID. This has value unknown(2) if the last +Error-Code value was 0, and none(1) if no Key Reject message has been +received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.6 +and 4.2.2.16." +::= { docsBpiCmtsTEKEntry 10 } + +docsBpiCmtsKeyRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in the most recent +Key Reject message sent in response to a Key Request for this BPI +SID. This is a zero length string if no Key Reject message has been +received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.6 +and 4.2.2.6." +::= { docsBpiCmtsTEKEntry 11 } + +docsBpiCmtsTEKInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in the most recent TEK Invalid message sent in association +with this BPI SID. This has value unknown(2) if the last Error-Code +value was 0, and none(1) if no TEK Invalid message has been received + + +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.8 +and 4.2.2.16." +::= { docsBpiCmtsTEKEntry 12 } + +docsBpiCmtsTEKInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in the most recent TEK +Invalid message sent in association with this BPI SID. This is a zero +length string if no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.8 +and 4.2.2.6." +::= { docsBpiCmtsTEKEntry 13 } + +-- +-- The CMTS Multicast Control Group +-- + +docsBpiMulticastControl OBJECT IDENTIFIER ::= { docsBpiCmtsObjects 4 } + +-- +-- The CMTS IP Multicast Mapping Table, indexed by IP multicast +-- address and prefix, and by ifindex +-- + +docsBpiIpMulticastMapTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiIpMulticastMapEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the mapping of IP multicast address prefixes to +multicast SIDs on each CMTS MAC interface." +::= { docsBpiMulticastControl 1 } + +docsBpiIpMulticastMapEntry OBJECT-TYPE +SYNTAX DocsBpiIpMulticastMapEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the mapping of one IP +multicast address prefix to one multicast SID on one CMTS MAC +interface. The CMTS uses the mapping when forwarding downstream IP +multicast traffic." + + +INDEX { ifIndex, docsBpiIpMulticastAddress, + docsBpiIpMulticastPrefixLength } +::= { docsBpiIpMulticastMapTable 1 } + +DocsBpiIpMulticastMapEntry ::= SEQUENCE { +docsBpiIpMulticastAddress IpAddress, +docsBpiIpMulticastPrefixLength Integer32, +docsBpiIpMulticastServiceId Integer32, +docsBpiIpMulticastMapControl RowStatus +} + +docsBpiIpMulticastAddress OBJECT-TYPE +SYNTAX IpAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the IP multicast address (prefix) to be +mapped by this row, in conjunction with +docsBpiIpMulticastPrefixLength." +::= { docsBpiIpMulticastMapEntry 1 } + +docsBpiIpMulticastPrefixLength OBJECT-TYPE +SYNTAX Integer32 (0..32) +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the IP multicast address prefix length +for this row. The value of this object represents the length in +bits of docsBpiIpMulticastAddress for multicast address +comparisons, using big-endian ordering. An IP multicast address +matches this row if the (docsBpiIpMulticastPrefixLength) most +significant bits of the IP multicast address and of the +(docsBpiIpMulticastAddress) are identical. +This object is similar in usage to an IP address mask. The value +0 corresponds to IP address mask 0.0.0.0, the value 1 corresponds +to IP address mask 128.0.0.0, the value 8 corresponds to IP +address mask 255.0.0.0, and the value 32 corresponds to IP +address mask 255.255.255.255." +::= { docsBpiIpMulticastMapEntry 2 } + +docsBpiIpMulticastServiceId OBJECT-TYPE +SYNTAX Integer32 (8192..16368) +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object represents the multicast SID to be used in this +IP multicast address prefix mapping entry." +-- DEFVAL is an unused multicast SID value chosen by CMTS. + + +::= { docsBpiIpMulticastMapEntry 3 } + +docsBpiIpMulticastMapControl OBJECT-TYPE +SYNTAX RowStatus +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object controls and reflects the IP multicast address prefix +mapping entry. There is no restriction on the ability to change values +in this row while the row is active." +::= { docsBpiIpMulticastMapEntry 4 } + +-- +-- The CMTS Multicast SID Authorization Table, indexed by ifIndex by +-- multicast SID by CM MAC address +-- + +docsBpiMulticastAuthTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiMulticastAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the multicast SID authorization for each +CM on each CMTS MAC interface." +::= { docsBpiMulticastControl 2 } + +docsBpiMulticastAuthEntry OBJECT-TYPE +SYNTAX DocsBpiMulticastAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the key authorization of one +cable modem for one multicast SID for one CMTS MAC interface." +INDEX { ifIndex, docsBpiMulticastServiceId, + docsBpiMulticastCmMacAddress } +::= { docsBpiMulticastAuthTable 1 } + +DocsBpiMulticastAuthEntry ::= SEQUENCE { +docsBpiMulticastServiceId Integer32, +docsBpiMulticastCmMacAddress MacAddress, +docsBpiMulticastAuthControl RowStatus +} + +docsBpiMulticastServiceId OBJECT-TYPE +SYNTAX Integer32 (8192..16368) +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION + + +"This object represents the multicast SID for authorization." +::= { docsBpiMulticastAuthEntry 1 } + +docsBpiMulticastCmMacAddress OBJECT-TYPE +SYNTAX MacAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the MAC address of the CM to which the +multicast SID authorization applies." +::= { docsBpiMulticastAuthEntry 2 } + +docsBpiMulticastAuthControl OBJECT-TYPE +SYNTAX RowStatus +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object controls and reflects the CM authorization for each +multicast SID. There is no restriction on the ability to change +values in this row while the row is active." +::= { docsBpiMulticastAuthEntry 3 } + +-- +-- The BPI MIB Conformance Statements (with a placeholder for +-- notifications) +-- + +docsBpiNotification OBJECT IDENTIFIER ::= { docsBpiMIB 2 } +docsBpiConformance OBJECT IDENTIFIER ::= { docsBpiMIB 3 } +docsBpiCompliances OBJECT IDENTIFIER ::= { docsBpiConformance 1 } +docsBpiGroups OBJECT IDENTIFIER ::= { docsBpiConformance 2 } + +docsBpiBasicCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION +"This is the compliance statement for devices which implement the +DOCSIS Baseline Privacy Interface." + +MODULE -- docsBpiMIB + +-- conditionally mandatory group +GROUP docsBpiCmGroup +DESCRIPTION +"This group is implemented only in CMs, not in CMTSs." + +-- conditionally mandatory group +GROUP docsBpiCmtsGroup +DESCRIPTION + + +"This group is implemented only in CMTSs, not in CMs." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmAuthGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmTEKGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsDefaultAuthLifetime +SYNTAX Integer32 (86400..6048000) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsDefaultTEKLifetime +SYNTAX Integer32 (1800..604800) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (object removed from MIB) +-- OBJECT docsBpiCmtsDefaultAuthGraceTime +-- SYNTAX INTEGER (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (object removed from MIB) +-- OBJECT docsBpiCmtsDefaultTEKGraceTime +-- SYNTAX INTEGER (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsAuthCmLifetime +SYNTAX Integer32 (86400..6048000) +DESCRIPTION + + +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmtsAuthCmGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsTEKLifetime +SYNTAX Integer32 (1800..604800) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmtsTEKGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +::= { docsBpiCompliances 1 } + +docsBpiCmGroup OBJECT-GROUP +OBJECTS { +docsBpiCmPrivacyEnable, +docsBpiCmPublicKey, +docsBpiCmAuthState, +docsBpiCmAuthKeySequenceNumber, +docsBpiCmAuthExpires, +docsBpiCmAuthReset, +docsBpiCmAuthGraceTime, +docsBpiCmTEKGraceTime, +docsBpiCmAuthWaitTimeout, +docsBpiCmReauthWaitTimeout, +docsBpiCmOpWaitTimeout, +docsBpiCmRekeyWaitTimeout, +docsBpiCmAuthRejectWaitTimeout, +docsBpiCmAuthRequests, +docsBpiCmAuthReplies, +docsBpiCmAuthRejects, +docsBpiCmAuthInvalids, +docsBpiCmAuthRejectErrorCode, +docsBpiCmAuthRejectErrorString, +docsBpiCmAuthInvalidErrorCode, + + +docsBpiCmAuthInvalidErrorString, +docsBpiCmTEKPrivacyEnable, +docsBpiCmTEKState, +docsBpiCmTEKExpiresOld, +docsBpiCmTEKExpiresNew, +docsBpiCmTEKKeyRequests, +docsBpiCmTEKKeyReplies, +docsBpiCmTEKKeyRejects, +docsBpiCmTEKInvalids, +docsBpiCmTEKAuthPends, +docsBpiCmTEKKeyRejectErrorCode, +docsBpiCmTEKKeyRejectErrorString, +docsBpiCmTEKInvalidErrorCode, +docsBpiCmTEKInvalidErrorString +} +STATUS current +DESCRIPTION +"This collection of objects provides CM BPI status and control." +::= { docsBpiGroups 1 } + +docsBpiCmtsGroup OBJECT-GROUP +OBJECTS { +docsBpiCmtsDefaultAuthLifetime, +docsBpiCmtsDefaultTEKLifetime, +docsBpiCmtsAuthRequests, +docsBpiCmtsAuthReplies, +docsBpiCmtsAuthRejects, +docsBpiCmtsAuthInvalids, +docsBpiCmtsAuthCmPublicKey, +docsBpiCmtsAuthCmKeySequenceNumber, +docsBpiCmtsAuthCmExpires, +docsBpiCmtsAuthCmLifetime, +docsBpiCmtsAuthCmGraceTime, +docsBpiCmtsAuthCmReset, +docsBpiCmtsAuthCmRequests, +docsBpiCmtsAuthCmReplies, +docsBpiCmtsAuthCmRejects, +docsBpiCmtsAuthCmInvalids, +docsBpiCmtsAuthRejectErrorCode, +docsBpiCmtsAuthRejectErrorString, +docsBpiCmtsAuthInvalidErrorCode, +docsBpiCmtsAuthInvalidErrorString, +docsBpiCmtsTEKLifetime, +docsBpiCmtsTEKGraceTime, +docsBpiCmtsTEKExpiresOld, +docsBpiCmtsTEKExpiresNew, +docsBpiCmtsTEKReset, +docsBpiCmtsKeyRequests, + + +docsBpiCmtsKeyReplies, +docsBpiCmtsKeyRejects, +docsBpiCmtsTEKInvalids, +docsBpiCmtsKeyRejectErrorCode, +docsBpiCmtsKeyRejectErrorString, +docsBpiCmtsTEKInvalidErrorCode, +docsBpiCmtsTEKInvalidErrorString, +docsBpiIpMulticastServiceId, +docsBpiIpMulticastMapControl, +docsBpiMulticastAuthControl +} +STATUS current +DESCRIPTION +"This collection of objects provides CMTS BPI status and control." +::= { docsBpiGroups 2 } + +docsBpiObsoleteObjectsGroup OBJECT-GROUP +OBJECTS { +docsBpiCmtsDefaultAuthGraceTime, +docsBpiCmtsDefaultTEKGraceTime +} +STATUS obsolete +DESCRIPTION +"This is a collection of obsolete BPI objects." +::= { docsBpiGroups 3 } + +END diff --git a/mibs/ietf/DOCS-CABLE-DEVICE-MIB b/mibs/ietf/DOCS-CABLE-DEVICE-MIB new file mode 100644 index 0000000..44f4160 --- /dev/null +++ b/mibs/ietf/DOCS-CABLE-DEVICE-MIB @@ -0,0 +1,3313 @@ +DOCS-CABLE-DEVICE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + IpAddress, + Unsigned32, + Counter32, + Integer32, + zeroDotZero, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + RowStatus, + RowPointer, + DateAndTime, + TruthValue, + StorageType + FROM SNMPv2-TC -- RFC 2579 + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- RFC 2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + ZeroBasedCounter32 + FROM RMON2-MIB -- RFC 4502 + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBDscpMarkActGroup, + diffServMIBCounterGroup, + diffServMIBAlgDropGroup, + + + + diffServDataPathStatus, + diffServClfrStatus, + diffServClfrElementStatus, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrDstAddr, + diffServAlgDropStatus, + diffServDataPathStorage, + diffServClfrStorage, + diffServClfrElementStorage, + diffServMultiFieldClfrStorage, + diffServActionStorage, + diffServCountActStorage, + diffServAlgDropStorage, + diffServAlgDropType + FROM DIFFSERV-MIB; -- RFC 3289 + + +docsDev MODULE-IDENTITY + LAST-UPDATED "200612200000Z" -- December 20, 2006 + ORGANIZATION "IETF IP over Cable Data Network + Working Group" + CONTACT-INFO + " Rich Woundy + Postal: Comcast Cable + 27 Industrial Avenue + Chelmsford, MA 01824 U.S.A. + Phone: +1 978 244 4010 + E-mail: richard_woundy@cable.comcast.com + + Kevin Marez + Postal: Motorola Corporation + 6450 Sequence Drive + San Diego, CA 92121 U.S.A. + Phone: +1 858 404 3785 + E-mail: kevin.marez@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, + richard_woundy@cable.comcast.com + Jean-Francois Mule, + jf.mule@cablelabs.com" + + DESCRIPTION + "This is the MIB Module for DOCSIS-compliant cable modems + + + + and cable-modem termination systems. + + Copyright (C) The IETF Trust (2006). This version + of this MIB module was published in RFC 4639; for full + legal notices see the RFC itself." + + REVISION "200612200000Z" -- December 20, 2006 + DESCRIPTION + "Second version, published as RFC 4639. + + Modifications to this MIB module since RFC 2669 include: + - Deprecation of the docsDevFilter group in favor of the + DiffServ MIB groups, to enable support for IPv6 + filtering and DiffServ Code Point (DSCP) marking. + - Deprecation of the docsDevCpeGroup in favor of the + docsDevCpeInetGroup, to enable support of IPv6. + - Addition of various InetAddress objects to enable + support of IPv6. + - Deprecation of docsDevNmAccessTable in favor of SNMP + Coexistence and SNMPv3 -- yet adding + docsDevNmAccessTrapVersion and clarifying + docsDevNmAccessIp for current use of this table, + - Addition of docsDevIgmpModeControl for management and + control of the IGMP mode of operation, + - Addition of docsDevMaxCpe for management of the + maxmium number of CPEs permitted access through a + cable modem, + - Addition of docsDevSwServerTransportProtocol, and + modifications to docsDevSoftware object DESCRIPTIONS, + to enable software downloads via either TFTP or HTTP, + - Replacement of docsDevEvThrottleInhibited with + docsDevEvThrottleThresholdExceeded to simplify + event threshold management, + - Modification of docsDevEvReporting to enable local + logging to the internal volatile log, and not to the + internal non-volatile log, + - Modification of the compliance statement to make the + docsDevCpe objects optional + - Created placeholders for two OIDs in the + docsDevFilterPolicyTable that were never used + - Modified the DESCRIPTION of + docsDevSwServerTransportProtocol and + docsDevSwServerAddressType to address the + dependence between each object + - Added a reference to docsDevServerConfigTftpAddress + - Clarified the scope of notifications that are covered + by docsDevEvThrottleThreshold + - Clarified an error condition that could occur when + + + + doing a SET to docsDevEvReporting + - Defined each of the enumerated types for both + docsDevEvLevel and docsDevEvPriority + - Added UNITS clause to docsDevFilterLLCMatches, + docsDevFilterIpMatches, docsDevMaxCpe, + docsDevEvThrottleThreshold and docsDevEvCounts. + - Added REFERENCE clause to docsDevFilterIpProtocol + - Modified DESCRIPTION of docsDevCpeInetAddr to be + more protocol-neutral + - Removed the enumerated value (1) from both + docsDevCpeInetSource and docsDevCpeSource + - Covered additional read-write and read-create objects + in the Security Considerations section + - Modified the default value of docsDevNmAccessIpMask + to be consistent with OSSI specification + - Modified the SYNTAX of docsDevNmAccessCommunity and + docsDevNmAccessInterfaces in the Conformance + Statement section + - Added SYNTAX clause to docsDevEvReporting in the + Conformance Statement section + - Modified SYNTAX clause of docsDevEvReporting to + move new enumerated type to byte boundary + - Added references to DOCSIS 2.0 specifications to + multiple objects + - Clarified non-persistency across reboots for + all tables + - Clarified functionality of docsDevSw objects as + they relate to docsDevSwOperStatus + - Clarified enumerated types (9) and (10) for + docsDevServerBootState + - Defined the state of unknown(0) for the following + objects: docsDevServerDhcpAddressType, + docsDevServerTimeAddressType, + docsDevServerConfigTftpAddressType and + docsDevServerConfigTftpAddressType + - Modified the value in docsDevFilterIpDaddr to be + consistent with the SYNTAX + - Specified which rows could be modified in an + active row for docsDevFilterPolicyStatus + - Defined the term 'manually' in docsDevCpeEnroll + - Clarified the description for + docsDevFilterTosOrMask + - Covered the case of a non-existent row for + docsDevFilterPolicyPtr + - Added DEFVAL clauses for multiple objects + - Replaced docsDevNotification OBJECT IDENTIFIER + with docsDevNotifications to address possible + compatibility issues + + + + - Added support for the usage of RFC 3413 and RFC 3014 + as event notification mechanisms + - Removed docsDevFilterPolicyObsoleteGroup + - Added stdInterface(9) type to docsDevEvReporting to + support the usage of RFC3413 and RFC3014 + - Modified DESCRIPTION for docsDevMaxCpe" + + REVISION "199908190000Z" + DESCRIPTION + "Initial version, published as RFC 2669." + + ::= { mib-2 69 } + +docsDevMIBObjects OBJECT IDENTIFIER ::= { docsDev 1 } + +docsDevBase OBJECT IDENTIFIER ::= { docsDevMIBObjects 1 } + +-- +-- For the following object, there is no concept in the +-- RFI specification corresponding to a backup CMTS. The +-- enumeration is provided here in case someone is able +-- to define such a role or device. +-- + +docsDevRole OBJECT-TYPE + SYNTAX INTEGER { + cm(1), + cmtsActive(2), + cmtsBackup(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the current role of this device. cm(1) is a + Cable Modem, cmtsActive(2) is a Cable Modem Termination + System that is controlling the system of cable modems, + and cmtsBackup(3) is a CMTS that is currently connected + but is not controlling the system (not currently used). + + In general, if this device is a 'cm', its role will not + change during operation or between reboots. If the + device is a 'cmts' it may change between cmtsActive and + cmtsBackup and back again during normal operation. NB: + At this time, the DOCSIS standards do not support the + concept of a backup CMTS, but cmtsBackup is included for + completeness." + ::= { docsDevBase 1 } + + + + +docsDevDateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current date and time, with time zone information + (if known). + + If the real data and time cannot be determined, this + shall represent elapsed time from boot relative to + the standard epoch '1970-1-1,0:0:0.0'. In other + words, if this agent has been up for 3 minutes and + not been able to determine what the actual date and + time are, this object will return the value + '1970-1-1,0:03:0.0'." + ::= { docsDevBase 2 } + +docsDevResetNow OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to true(1) causes the device to + reset. Reading this object always returns false(2)." + ::= { docsDevBase 3 } + +docsDevSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer's serial number for this device." + ::= { docsDevBase 4 } + +docsDevSTPControl OBJECT-TYPE + SYNTAX INTEGER { + stEnabled(1), + noStFilterBpdu(2), + noStPassBpdu(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls operation of the spanning tree + protocol (as distinguished from transparent bridging). + + If set to stEnabled(1), then the spanning tree protocol + is enabled, subject to bridging constraints. + + + + If noStFilterBpdu(2), then spanning tree is not active, + and Bridge PDUs received are discarded. + + If noStPassBpdu(3), then spanning tree is not active, + and Bridge PDUs are transparently forwarded. + + Note that a device need not implement all of these + options, but that noStFilterBpdu(2) is required." + DEFVAL { noStFilterBpdu } + ::= { docsDevBase 5 } + +docsDevIgmpModeControl OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the IGMP mode of operation for + the CM or CMTS. In passive mode, the device forwards + IGMP between interfaces as based on knowledge of + Multicast Session activity on the subscriber side + interface and the rules defined in the DOCSIS RFI + specification. In active mode, the device terminates + at and initiates IGMP through its interfaces as based + on the knowledge of Multicast Session activity on the + subscriber side interface." + REFERENCE + "DOCSIS RFI 1.1 Specification, Section 3.3.1. and + DOCSIS RFI 2.0 Specification, Section 5.3.1." + DEFVAL { passive } + ::= { docsDevBase 6 } + +docsDevMaxCpe OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "CPEs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of CPEs that can be granted access + through a CM during a CM epoch. This value can be + obtained from the CM configuration file; however, + it may be adjusted by the CM according to hardware or + software limitations that have been imposed on the + implementation." + REFERENCE + "DOCSIS RFI 1.0 Specification, Appendix C.7.20., and + + + + DOCSIS RFI 1.1 Specification, Appendix C.1.1.7. and + DOCSIS RFI 2.0 Specification, Appendix C.1.1.7." + ::= { docsDevBase 7 } + + +-- +-- The following table provides one level of security for access +-- to the device by network management stations. +-- Note that access is also constrained by the +-- community strings and any vendor-specific security. +-- + +docsDevNmAccessTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevNmAccessEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table controls access to SNMP objects by network + management stations. If the table is empty, access to + SNMP objects is unrestricted. The objects in this table + MUST NOT persist across reboots. The objects in this + table are only accessible from cable devices that are + not capable of operating in SNMP Coexistence mode + (RFC 3584) or in SNMPv3 mode (RFC 3410). + See the conformance section for + details. Note that some devices are required by other + specifications (e.g., the DOCSIS OSSIv1.1 specification) + to support the legacy SNMPv1/v2c docsDevNmAccess mode + for backward compatibility. + + This table is deprecated. Instead, use the SNMP + coexistence MIBs from RFC 3584, the TARGET and + NOTIFICATION MIBs from RFC 3413, and + the View-Based Access Control Model (VACM) MIBs for + all SNMP protocol versions from RFC 3415." + ::= { docsDevMIBObjects 2 } + +docsDevNmAccessEntry OBJECT-TYPE + SYNTAX DocsDevNmAccessEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry describing access to SNMP objects by a + particular network management station. An entry in + this table is not readable unless the management station + has read-write permission (either implicit if the table + is empty, or explicit through an entry in this table). + Entries are ordered by docsDevNmAccessIndex. The first + + + + matching entry (e.g., matching IP address and community + string) is used to derive access." + INDEX { docsDevNmAccessIndex } + ::= { docsDevNmAccessTable 1 } + +DocsDevNmAccessEntry ::= SEQUENCE { + docsDevNmAccessIndex Integer32, + docsDevNmAccessIp IpAddress, + docsDevNmAccessIpMask IpAddress, + docsDevNmAccessCommunity OCTET STRING, + docsDevNmAccessControl INTEGER, + docsDevNmAccessInterfaces OCTET STRING, + docsDevNmAccessStatus RowStatus, + docsDevNmAccessTrapVersion INTEGER + } + +docsDevNmAccessIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index used to order the application of access + entries." + ::= { docsDevNmAccessEntry 1 } + +docsDevNmAccessIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP address (or subnet) of the network management + station. The address 0.0.0.0 is defined to mean + any Network Management Station (NMS). If traps are + enabled for this entry, then the value must be the + address of a specific device. Implementations MAY + recognize 255.255.255.255 as equivalent to 0.0.0.0." + DEFVAL { '00000000'h } + ::= { docsDevNmAccessEntry 2 } + +docsDevNmAccessIpMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP subnet mask of the network management stations. + If traps are enabled for this entry, then the value must + be 0.0.0.0. Implementations MAY recognize + 255.255.255.255 as equivalent to 0.0.0.0." + + + + DEFVAL { '00000000'h } + ::= { docsDevNmAccessEntry 3 } + +docsDevNmAccessCommunity OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The community string to be matched for access by this + entry. If set to a zero-length string, then any + community string will match. When read, this object + SHOULD return a zero-length string." + DEFVAL { "public" } + ::= { docsDevNmAccessEntry 4 } + +docsDevNmAccessControl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + read(2), + readWrite(3), + roWithTraps(4), + rwWithTraps(5), + trapsOnly(6) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the type of access allowed to this NMS. + Setting this object to none(1) causes the table entry + to be destroyed. Read(2) allows access by 'get' and + 'get-next' PDUs. ReadWrite(3) allows access by 'set' as + well. RoWithtraps(4), rwWithTraps(5), and trapsOnly(6) + control distribution of Trap PDUs transmitted by this + device." + DEFVAL { read } + ::= { docsDevNmAccessEntry 5 } + +-- The syntax of the following object was copied from RFC 1493, +-- dot1dStaticAllowedToGoTo. + +docsDevNmAccessInterfaces OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..32)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the set of interfaces from which requests from + this NMS will be accepted. Each octet within + the value of this object specifies a set of eight + + + + interfaces, the first octet specifying ports 1 + through 8, the second octet specifying interfaces 9 + through 16, etc. Within each octet, the most + significant bit represents the lowest numbered + interface, and the least significant bit represents the + highest numbered interface. Thus, each interface is + represented by a single bit within the value of this + object. If that bit has a value of '1' then that + interface is included in the set. + + Note that entries in this table apply only to link-layer + interfaces (e.g., Ethernet and CATV MAC). Bits + representing upstream and downstream channel interfaces + MUST NOT be set to '1'. + + Note that if bits corresponding to non-existing + interfaces are set, the result is implementation + specific. + + Note that according to the DOCSIS OSSIv1.1 + specification, when ifIndex '1' is included in the + set, then this row applies to all CPE + (customer-facing) interfaces. + + The size of this object is the minimum required to + represent all configured interfaces for this device." + ::= { docsDevNmAccessEntry 6 } + +docsDevNmAccessStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Controls and reflects the status of rows in this + table. Rows in this table may be created by either the + create-and-go or create-and-wait paradigm. There is no + restriction on changing values in a row of this table + while the row is active. + + The following objects MUST have valid values before this + object can be set to active: docsDevNmAccessIp, + docsDevNmAccessStatus, docsDevNmAccessIpMask, + docsDevNmAccessCommunity, docsDevNmAccessControl, and + docsDevNmAccessInterfaces." + ::= { docsDevNmAccessEntry 7 } + +docsDevNmAccessTrapVersion OBJECT-TYPE + SYNTAX INTEGER { + + + + disableSNMPv2trap(1), + enableSNMPv2trap(2) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the TRAP version that is sent to this NMS. + Setting this object to disableSNMPv2trap (1) causes the + trap in SNMPv1 format to be sent to a particular NMS. + Setting this object to enableSNMPv2trap (2) causes the + trap in SNMPv2 format be sent to a particular NMS." + DEFVAL { disableSNMPv2trap } + ::= { docsDevNmAccessEntry 8 } + +-- +-- The following group describes control objects used for downloading +-- firmware to a cable device. Procedures for software download are +-- described in Section 3.2.1 of the RFC containing this MIB module. +-- + +docsDevSoftware OBJECT IDENTIFIER ::= { docsDevMIBObjects 3 } + +docsDevSwServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The address of the TFTP server used for software + upgrades. If the TFTP server is unknown or is a + non-IPv4 address, return 0.0.0.0. + + This object is deprecated. See docsDevSwServerAddress + for its replacement. This object will have its value + modified, given a valid SET to docsDevSwServerAddress." + ::= { docsDevSoftware 1 } + +docsDevSwFilename OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filename of the software image to be downloaded via + TFTP, or the abs_path (as defined in RFC 2616) of the + software image to be downloaded via HTTP. + + Unless set via SNMP, this is the filename or abs_path + specified by the provisioning server during the boot + process that corresponds to the software version that + + + + is desired for this device. + + If unknown, the value of this object is the zero-length + string." + ::= { docsDevSoftware 2 } + +docsDevSwAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + upgradeFromMgt(1), + allowProvisioningUpgrade(2), + ignoreProvisioningUpgrade(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If set to upgradeFromMgt(1), the device will initiate a + TFTP or HTTP software image download. After + successfully receiving an image, the device will set + its state to ignoreProvisioningUpgrade(3) and reboot. + If the download process is interrupted (e.g., by a reset + or power failure), the device will load the previous + image and, after re-initialization, continue to attempt + loading the image specified in docsDevSwFilename. + + If set to allowProvisioningUpgrade(2), the device will + use the software version information supplied by the + provisioning server when next rebooting (this does not + cause a reboot). + + When set to ignoreProvisioningUpgrade(3), the device + will disregard software image upgrade information + from the provisioning server. + + Note that reading this object can return + upgradeFromMgt(1). This indicates that a software + download is currently in progress, and that the device + will reboot after successfully receiving an image." + DEFVAL { allowProvisioningUpgrade } + ::= { docsDevSoftware 3 } + +docsDevSwOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inProgress(1), + completeFromProvisioning(2), + completeFromMgt(3), + failed(4), + other(5) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "InProgress(1) indicates that a TFTP or HTTP download is + underway, either as a result of a version mismatch at + provisioning or as a result of a upgradeFromMgt request. + No other docsDevSw* objects can be modified in + this state. + + CompleteFromProvisioning(2) indicates that the last + software upgrade was a result of version mismatch at + provisioning. + + CompleteFromMgt(3) indicates that the last software + upgrade was a result of setting docsDevSwAdminStatus to + upgradeFromMgt. + + Failed(4) indicates that the last attempted download + failed, ordinarily due to TFTP or HTTP timeout." + REFERENCE + "DOCSIS RFI 1.0 Specification, Section 8.2., and + DOCSIS RFI 1.1 Specification, Section 10.1. and + DOCSIS RFI 2.0 Specification, Section 12.1." + ::= { docsDevSoftware 4 } + +docsDevSwCurrentVers OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software version currently operating in this device. + This string's syntax is that used by the + individual vendor to identify software versions. + For a CM, this string will describe the current + software load. For a CMTS, this object SHOULD contain + a human-readable representation either of the vendor + specific designation of the software for the chassis, + or of the software for the control processor. If + neither of these is applicable, the value MUST be a + zero-length string." + ::= { docsDevSoftware 5 } + +docsDevSwServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address of the TFTP or HTTP server used for + + + + software upgrades. + + If docsDevSwServerTransportProtocol is currently set to + tftp(1), attempting to set this object to dns(16) MUST + result in an error." + ::= { docsDevSoftware 6 } + +docsDevSwServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the TFTP or HTTP server used for software + upgrades. + + If the TFTP/HTTP server is unknown, return the zero- + length address string (see the TextualConvention). + + If docsDevSwServer is also implemented in this agent, + this object is tied to it. A set of this object to an + IPv4 address will result in also setting the value of + docsDevSwServer to that address. If this object is set + to an IPv6 address, docsDevSwServer is set to 0.0.0.0. + If docsDevSwServer is set, this object is also set to + that value. Note that if both are set in the same + action, the order of which one sets the other is + undefined." + ::= { docsDevSoftware 7 } + +docsDevSwServerTransportProtocol OBJECT-TYPE + SYNTAX INTEGER { + tftp(1), + http(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the transport protocol (TFTP or + HTTP) to be used for software upgrades. + + If the value of this object is tftp(1), then the cable + device uses TFTP (RFC 1350) read request packets to + download the docsDevSwFilename from the + docsDevSwServerAddress in octet mode. + + If the value of this object is http(2), then the cable + device uses HTTP 1.0 (RFC 1945) or HTTP 1.1 (RFC 2616) + GET requests sent to host docsDevSwServerAddress to + + + + download the software image from path docsDevSwFilename. + + If docsDevSwServerAddressType is currently set to + dns(16), attempting to set this object to tftp(1) MUST + result in an error." + DEFVAL { tftp } + ::= { docsDevSoftware 8 } + +-- +-- The following group describes server access and parameters used +-- for initial provisioning and bootstrapping. +-- + +docsDevServer OBJECT IDENTIFIER ::= { docsDevMIBObjects 4 } + +docsDevServerBootState OBJECT-TYPE + SYNTAX INTEGER { + operational(1), + disabled(2), + waitingForDhcpOffer(3), + waitingForDhcpResponse(4), + waitingForTimeServer(5), + waitingForTftp(6), + refusedByCmts(7), + forwardingDenied(8), + other(9), + unknown(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If operational(1), the device has completed loading and + processing of configuration parameters, and the CMTS has + completed the Registration exchange. + + If disabled(2), then the device was administratively + disabled, possibly by being refused network access in + the configuration file. + + If waitingForDhcpOffer(3), then a Dynamic Host + Configuration Protocol (DHCP) Discover has been + transmitted, and no offer has yet been received. + + If waitingForDhcpResponse(4), then a DHCP Request has + been transmitted, and no response has yet been received. + + If waitingForTimeServer(5), then a Time Request has been + transmitted, and no response has yet been received. + + + + If waitingForTftp(6), then a request to the TFTP + parameter server has been made, and no response + received. + + If refusedByCmts(7), then the Registration + Request/Response exchange with the CMTS failed. + + If forwardingDenied(8), then the registration process + was completed, but the network access option in the + received configuration file prohibits forwarding. + + If other(9), then the registration process reached a + point that does not fall into one of the above + categories. + + If unknown(10), then the device has not yet begun the + registration process or is in some other indeterminate + state." + REFERENCE + "DOCSIS RFI 1.0 Specification, Figure 7-1, and + DOCSIS RFI 1.1 Specification, Figure 9-1 and + DOCSIS RFI 2.0 Specification, Figure 11-1." + ::= { docsDevServer 1 } + +docsDevServerDhcp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the DHCP server that assigned an IP + address to this device. Returns 0.0.0.0 if DHCP is not + used for IP address assignment, or if this agent is + not assigned an IPv4 address. + + This object is deprecated and is replaced by + docsDevServerDhcpAddress." + ::= { docsDevServer 2 } + +docsDevServerTime OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the Time server (RFC 0868). Returns + 0.0.0.0 if the time server IP address is unknown, or if + the time server is not an IPv4 server. + + This object is deprecated and is replaced by + + + + docsDevServerTimeAddress." + ::= { docsDevServer 3 } + +docsDevServerTftp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server responsible for + downloading provisioning and configuration parameters + to this device. Returns 0.0.0.0 if the TFTP server + address is unknown or is not an IPv4 address. + + This object is deprecated and is replaced by + docsDevServerConfigTftpAddress." + ::= { docsDevServer 4 } + +docsDevServerConfigFile OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the device configuration file read from + the TFTP server. Returns a zero-length string if + the configuration file name is unknown." + ::= { docsDevServer 5 } + +docsDevServerDhcpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerDhcpAddress. If + DHCP was not used, this value should return + unknown(0)." + ::= { docsDevServer 6 } + +docsDevServerDhcpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet address of the DHCP server that assigned + an IP address to this device. Returns the zero length + octet string if DHCP was not used for IP address + assignment." + ::= { docsDevServer 7 } + + + + +docsDevServerTimeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerTimeAddress. If + no time server exists, this value should return + unknown(0)." + ::= { docsDevServer 8 } + +docsDevServerTimeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet address of the RFC 868 Time server, + as provided by DHCP option 4. + + Note that if multiple values are provided to the + CM in DHCP option 4, the value of this MIB object + MUST be the Time server address from which the Time + of Day reference was acquired as based on the DOCSIS + RFI specification. During the period of time where + the Time of Day have not been acquired, the Time + server address reported by the CM may report the + first address value in the DHCP option value or the + last server address the CM attempted to get the Time + of day value. + + Returns the zero-length octet string if the time server + IP address is not provisioned." + REFERENCE + "DOCSIS RFI 1.1 Specification, Section 9.2.7. and + DOCSIS RFI 2.0 Specification, Section 11.2.7." + ::= { docsDevServer 9 } + +docsDevServerConfigTftpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerConfigTftpAddress. + If no TFTP server exists, this value should return + unknown(0)." + ::= { docsDevServer 10 } + +docsDevServerConfigTftpAddress OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet address of the TFTP server responsible for + downloading provisioning and configuration parameters + to this device. Returns the zero-length octet string if + the config server address is unknown. There are certain + security risks that are involved with using TFTP." + REFERENCE + "RFC 3617, Section 5" + ::= { docsDevServer 11 } + + +-- +-- Event Reporting +-- + +docsDevEvent OBJECT IDENTIFIER ::= { docsDevMIBObjects 5 } + +docsDevEvControl OBJECT-TYPE + SYNTAX INTEGER { + resetLog(1), + useDefaultReporting(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to resetLog(1) empties the event + log. All data is deleted. Setting it to + useDefaultReporting(2) returns all event priorities to + their factory-default reporting. Reading this object + always returns useDefaultReporting(2)." + ::= { docsDevEvent 1 } + +docsDevEvSyslog OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the Syslog server. If 0.0.0.0, either + syslog transmission is inhibited, or the Syslog server + address is not an IPv4 address. + + This object is deprecated and is replaced by + docsDevEvSyslogAddress." + ::= { docsDevEvent 2 } + +docsDevEvThrottleAdminStatus OBJECT-TYPE + + + + SYNTAX INTEGER { + unconstrained(1), + maintainBelowThreshold(2), + stopAtThreshold(3), + inhibited(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the transmission of traps and syslog messages + with respect to the trap pacing threshold. + + unconstrained(1) causes traps and syslog messages to be + transmitted without regard to the threshold settings. + + maintainBelowThreshold(2) causes trap transmission and + syslog messages to be suppressed if the number of traps + would otherwise exceed the threshold. + + stopAtThreshold(3) causes trap transmission to cease at + the threshold and not to resume until directed to do so. + + inhibited(4) causes all trap transmission and syslog + messages to be suppressed. + + A single event is always treated as a single event for + threshold counting. That is, an event causing both a + trap and a syslog message is still treated as a single + event. + + Writing to this object resets the thresholding state." + DEFVAL { unconstrained } + ::= { docsDevEvent 3 } + +docsDevEvThrottleInhibited OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "If true(1), trap and syslog transmission is currently + inhibited due to thresholds and/or the current setting + of docsDevEvThrottleAdminStatus. In addition, this is + true(1) when transmission is inhibited because no + syslog (docsDevEvSyslog) or trap (docsDevNmAccessEntry) + destinations have been set. + + This object is deprecated and is replaced by + docsDevEvThrottleThresholdExceeded." + + + + ::= { docsDevEvent 4 } + +docsDevEvThrottleThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Number of events per docsDevEvThrottleInterval permitted + before throttling is to occur. + + A single event, whether the notification could result in + messages transmitted using syslog, SNMP, or both + protocols, and regardless of the number of destinations, + (including zero) is always treated as a single event for + threshold counting. For example, an event causing both + a trap and a syslog message is still treated as a single + event. + + All system notifications that occur within the device + should be taken into consideration when calculating + and monitoring the threshold." + DEFVAL { 0 } + ::= { docsDevEvent 5 } + +docsDevEvThrottleInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval over which docsDevEvThrottleThreshold + applies." + DEFVAL { 1 } + ::= { docsDevEvent 6 } + +-- +-- The following table controls the reporting of the various classes +-- of events. +-- + +docsDevEvControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevEvControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows control of the reporting of event + classes. For each event priority, a combination of + + + + logging and reporting mechanisms may be chosen. The + mapping of event types to priorities is + vendor dependent. Vendors may also choose to allow + the user to control that mapping through proprietary + means. Table entries MUST persist across reboots for + CMTS devices and MUST NOT persist across reboots for CM + devices." + ::= { docsDevEvent 7 } + +docsDevEvControlEntry OBJECT-TYPE + SYNTAX DocsDevEvControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Allows configuration of the reporting mechanisms for a + particular event priority." + INDEX { docsDevEvPriority } + ::= { docsDevEvControlTable 1 } + +DocsDevEvControlEntry ::= SEQUENCE { + docsDevEvPriority INTEGER, + docsDevEvReporting BITS + } + +docsDevEvPriority OBJECT-TYPE + SYNTAX INTEGER { + emergency(1), + alert(2), + critical(3), + error(4), + warning(5), + notice(6), + information(7), + debug(8) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority level that is controlled by this + entry. These are ordered from most (emergency) to least + (debug) critical. Each event with a CM or CMTS has a + particular priority level associated with it (as defined + by the vendor). + + emergency(1) events indicate vendor-specific fatal + hardware or software errors that prevent normal system + operation. + + + + + alert(2) events indicate a serious failure that causes + the reporting system to reboot but is not caused by + hardware or software malfunctioning. + + critical(3) events indicate a serious failure that + requires attention and prevents the device from + transmitting data but that could be recovered without + rebooting the system. + + error(4) and warning(5) events indicate that a failure + occurred that could interrupt the normal data flow but + that does not cause the device to re-register. + + notice(6) and information(7) events indicate a + milestone or checkpoint in normal operation that could + be of particular importance for troubleshooting. + + debug(8) events are reserved for vendor-specific + events. + + During normal operation, no event more + critical than notice(6) should be generated. Events + between warning and emergency should be generated at + appropriate levels of problems (e.g., emergency when the + box is about to crash)." + ::= { docsDevEvControlEntry 1 } + +docsDevEvReporting OBJECT-TYPE + SYNTAX BITS { + local(0), + traps(1), + syslog(2), + -- The following are extensions to the original set of + -- labels. The extensions start at an octet boundary. + -- So for bits 3 - 7, one MUST set them to zero on send + -- and one MUST ignore them on receipt. + localVolatile(8), + stdInterface(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action to be taken on occurrence of this + event class. Implementations may not necessarily + support all options for all event classes but at + minimum must allow traps and syslogging to be + disabled. + + + + + If the local(0) bit is set, then log to the internal + log and update non-volatile store, for backward + compatibility with the original RFC 2669 definition. + If the traps(1) bit is set, then generate + an SNMP trap; if the syslog(2) bit is set, then + send a syslog message (assuming that the syslog address + is set). If the localVolatile(8) bit is set, then + log to the internal log without updating non-volatile + store. If the stdInterface(9) bit is set, then the + agent ignores all other bits except the local(0), + syslog(2), and localVolatile(8) bits. Setting the + stdInterface(9) bit indicates that RFC3413 and + RFC3014 are being used to control event reporting + mechanisms." + ::= { docsDevEvControlEntry 2 } + +docsDevEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains a log of network and device events that may be + of interest in fault isolation and troubleshooting. + If the local(0) bit is set in docsDevEvReporting, + entries in this table MUST persist across reboots." + ::= { docsDevEvent 8 } + +docsDevEventEntry OBJECT-TYPE + SYNTAX DocsDevEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a network or device event that may be of + interest in fault isolation and troubleshooting. + Multiple sequential identical events are represented by + incrementing docsDevEvCounts and setting + docsDevEvLastTime to the current time rather than + creating multiple rows. + + Entries are created with the first occurrence of an + event. docsDevEvControl can be used to clear the + table. Individual events cannot be deleted." + INDEX { docsDevEvIndex } + ::= { docsDevEventTable 1 } + +DocsDevEventEntry ::= SEQUENCE { + docsDevEvIndex Integer32, + docsDevEvFirstTime DateAndTime, + + + + docsDevEvLastTime DateAndTime, + docsDevEvCounts Counter32, + docsDevEvLevel INTEGER, + docsDevEvId Unsigned32, + docsDevEvText SnmpAdminString + } + +docsDevEvIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides relative ordering of the objects in the event + log. This object will always increase except when + (a) the log is reset via docsDevEvControl, + (b) the device reboots and does not implement + non-volatile storage for this log, or (c) it reaches + the value 2^31. The next entry for all the above + cases is 1." + ::= { docsDevEventEntry 1 } + +docsDevEvFirstTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of docsDevDateTime at the time this entry was + created." + ::= { docsDevEventEntry 2 } + +docsDevEvLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When an entry reports only one event, this object will + have the same value as the corresponding instance of + docsDevEvFirstTime. When an entry reports multiple + events, this object will record the value that + docsDevDateTime had when the most recent event for this + entry occurred." + ::= { docsDevEventEntry 3 } + +-- This object was renamed from docsDevEvCount to meet naming +-- requirements for Counter32 +docsDevEvCounts OBJECT-TYPE + SYNTAX Counter32 + UNITS "events" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of consecutive event instances reported by + this entry. This starts at 1 with the creation of this + row and increments by 1 for each subsequent duplicate + event." + ::= { docsDevEventEntry 4 } +docsDevEvLevel OBJECT-TYPE + SYNTAX INTEGER { + emergency(1), + alert(2), + critical(3), + error(4), + warning(5), + notice(6), + information(7), + debug(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The priority level of this event, as defined by the + vendor. These are ordered from most serious (emergency) + to least serious (debug). + + emergency(1) events indicate vendor-specific fatal + hardware or software errors that prevent normal system + operation. + + alert(2) events indicate a serious failure that causes + the reporting system to reboot but that is not caused by + hardware or software malfunctioning. + + critical(3) events indicate a serious failure that + requires attention and prevents the device from + transmitting data but that could be recovered without + rebooting the system. + + error(4) and warning(5) events indicate that a failure + occurred that could interrupt the normal data flow but + that does not cause the device to re-register. + + notice(6) and information(7) events indicate a + milestone or checkpoint in normal operation that could + be of particular importance for troubleshooting. + + debug(8) events are reserved for vendor-specific + + + + events. + + During normal operation, no event more + critical than notice(6) should be generated. Events + between warning and emergency should be generated at + appropriate levels of problems (e.g., emergency when the + box is about to crash)." + ::= { docsDevEventEntry 5 } + +-- +-- It is strongly recommended that implementors follow the CableLabs +-- enumerations for docsDevEvId, per the DOCSIS OSSIv1.1 spec +-- and follow-on specifications. +-- + +docsDevEvId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this product, uniquely identifies the type of event + that is reported by this entry." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Appendix H and + DOCSIS OSSI 2.0 Specification, Annex D." + ::= { docsDevEventEntry 6 } + +docsDevEvText OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Provides a human-readable description of the event, + including all relevant context (interface numbers, + etc.)." + ::= { docsDevEventEntry 7 } + +docsDevEvSyslogAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address of docsDevEvSyslogAddress. If + no syslog server exists, this value should return + unknown(0)." + DEFVAL { unknown } + ::= { docsDevEvent 9 } + + + + +docsDevEvSyslogAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Internet address of the Syslog server, as provided + by DHCP option 7 or set via SNMP management. If the + address of the server is set to the zero-length + string, the 0.0.0.0 IPv4 address, or the 0: IPv6 + address, Syslog transmission is inhibited. + + Note that if multiple values are provided to the CM in + DHCP option 7, the value of this MIB object MUST be the + first Syslog server address received. + + By default at agent boot, this object returns the zero + length string." + ::= { docsDevEvent 10 } + +docsDevEvThrottleThresholdExceeded OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true(1), trap and syslog transmission is currently + inhibited due to exceeding the trap/syslog event + threshold in the current interval." + ::= { docsDevEvent 11 } + +-- +-- Link Level Control Filtering +-- + +docsDevFilter OBJECT IDENTIFIER ::= { docsDevMIBObjects 6 } + +docsDevFilterLLCUnmatchedAction OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "LLC (Link Level Control) filters can be defined on an + inclusive or exclusive basis: CMs can be configured to + forward only packets matching a set of layer three + protocols, or to drop packets matching a set of layer + three protocols. Typical use of these filters is to + + + + filter out possibly harmful (given the context of a + large metropolitan LAN) protocols. + + If set to discard(1), any L2 packet that does not match + at least one filter in the docsDevFilterLLCTable will be + discarded. If set to accept(2), any L2 packet that + does not match at least one filter in the + docsDevFilterLLCTable will be accepted for further + processing (e.g., bridging). In other words, if the + packet does not match an entry in the table, it takes + this action; if it does match an entry in the table, it + takes the opposite of this action." + DEFVAL { accept } + ::= { docsDevFilter 1 } + +docsDevFilterLLCTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterLLCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of filters to apply to (bridged) LLC + traffic. The filters in this table are applied to + incoming traffic on the appropriate interface(s) prior + to any further processing (e.g., before the packet + is handed off for level 3 processing, or for bridging). + The specific action taken when no filter is matched is + controlled by docsDevFilterLLCUnmatchedAction. Table + entries MUST NOT persist across reboots for any device." + ::= { docsDevFilter 2 } + +docsDevFilterLLCEntry OBJECT-TYPE + SYNTAX DocsDevFilterLLCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a single filter to apply to (bridged) LLC + traffic received on a specified interface. " + INDEX { docsDevFilterLLCIndex } + ::= { docsDevFilterLLCTable 1 } + +DocsDevFilterLLCEntry ::= SEQUENCE { + docsDevFilterLLCIndex Integer32, + docsDevFilterLLCStatus RowStatus, + docsDevFilterLLCIfIndex InterfaceIndexOrZero, + docsDevFilterLLCProtocolType INTEGER, + docsDevFilterLLCProtocol Integer32, + docsDevFilterLLCMatches Counter32 + } + + + +docsDevFilterLLCIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index used for the identification of filters (note that + LLC filter order is irrelevant)." + ::= { docsDevFilterLLCEntry 1 } +docsDevFilterLLCStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the status of rows in this + table. There is no restriction on changing any of the + associated columns for this row while this object is set + to active. + + Specifying only this object (with the + appropriate index) on a CM is sufficient to create a + filter row that matches all inbound packets on the + ethernet interface and results in the packets being + discarded. docsDevFilterLLCIfIndex (at least) must be + specified on a CMTS to create a row." + ::= { docsDevFilterLLCEntry 2} + +docsDevFilterLLCIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entry interface to which this filter applies. The + value corresponds to ifIndex for either a CATV MAC or + another network interface. If the value is zero, the + filter applies to all interfaces. In Cable Modems, the + default value is the customer side interface(s). In + CMTSs, this object has to be specified to + create a row in this table. + + Note that according to the DOCSIS OSSIv1.1 + specification, ifIndex '1' in the CM means that this + row applies to all Cable Modem-to-CPE Interfaces + (CMCI)." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Section 3.3.4.1. and + DOCSIS OSSI 2.0 Specification, Section 6.3.4.1." + ::= { docsDevFilterLLCEntry 3 } + + + + +docsDevFilterLLCProtocolType OBJECT-TYPE + SYNTAX INTEGER { + ethertype(1), + dsap(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The format of the value in docsDevFilterLLCProtocol: + either a two-byte Ethernet Ethertype, or a one-byte + 802.2 Service Access Point (SAP) value. ethertype(1) + also applies to Standard Network Access Protocol + (SNAP) encapsulated frames." + DEFVAL { ethertype } + ::= { docsDevFilterLLCEntry 4 } + +docsDevFilterLLCProtocol OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The layer-three protocol for which this filter applies. + The protocol value format depends on + docsDevFilterLLCProtocolType. Note that for SNAP + frames, ethertype filtering is performed rather than + Destination Service Access Point (DSAP) =0xAA." + DEFVAL { 0 } + ::= { docsDevFilterLLCEntry 5 } + +docsDevFilterLLCMatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "matches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counts the number of times this filter was matched." + ::= { docsDevFilterLLCEntry 6 } + +-- +-- IPv4 Filtering +-- + +docsDevFilterIpDefault OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2) + } + MAX-ACCESS read-write + + + + STATUS deprecated + DESCRIPTION + "The default behavior for (bridged) packets that do not + match IP filters (or Internet filters, if implemented) + is defined by docsDevFilterIpDefault. + + If set to discard(1), all packets not matching an IP + filter in docsDevFilterIpTable will be discarded. If + set to accept(2), all packets not matching an IP filter + or an Internet filter will be accepted for further + processing (e.g., bridging)." + DEFVAL { accept } + ::= { docsDevFilter 3 } + +docsDevFilterIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterIpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An ordered list of filters or classifiers to apply to + IP traffic. Filter application is ordered by the filter + index, rather than by a best match algorithm (note that + this implies that the filter table may have gaps in the + index values). Packets that match no filters will have + policy 0 in the docsDevFilterPolicyTable applied to + them, if it exists. Otherwise, Packets that match no + filters are discarded or forwarded according to the + setting of docsDevFilterIpDefault. + + Any IP packet can theoretically match multiple rows of + this table. When considering a packet, the table is + scanned in row index order (e.g., filter 10 is checked + before filter 20). If the packet matches that filter + (which means that it matches ALL criteria for that row), + actions appropriate to docsDevFilterIpControl and + docsDevFilterPolicyId are taken. If the packet was + discarded processing is complete. If + docsDevFilterIpContinue is set to true, the filter + comparison continues with the next row in the table, + looking for additional matches. + + If the packet matches no filter in the table, the packet + is accepted or dropped for further processing + according to the setting of docsDevFilterIpDefault. + If the packet is accepted, the actions specified by + policy group 0 (e.g., the rows in + docsDevFilterPolicyTable that have a value of 0 for + docsDevFilterPolicyId) are taken, if that policy + + + + group exists. + + Logically, this table is consulted twice during the + processing of any IP packet: once upon its acceptance + from the L2 entity, and once upon its transmission to + the L2 entity. In actuality, for cable modems, IP + filtering is generally the only IP processing done for + transit traffic. This means that inbound and outbound + filtering can generally be done at the same time with + one pass through the filter table. + + The objects in this table are only accessible from cable + devices that are not operating in DiffServ MIB mode + (RFC 3289). See the conformance section for details. + + Note that some devices are required by other + specifications (e.g., the DOCSIS OSSIv1.1 specification) + to support the legacy SNMPv1/v2c docsDevFilter mode + for backward compatibility. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + from RFC 3289." + ::= { docsDevFilter 4 } + +docsDevFilterIpEntry OBJECT-TYPE + SYNTAX DocsDevFilterIpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Describes a filter to apply to IP traffic received on a + specified interface. All identity objects in this table + (e.g., source and destination address/mask, protocol, + source/dest port, TOS/mask, interface and direction) + must match their respective fields in the packet for + any given filter to match. + + To create an entry in this table, docsDevFilterIpIfIndex + must be specified." + INDEX { docsDevFilterIpIndex } + ::= { docsDevFilterIpTable 1 } + +DocsDevFilterIpEntry ::= SEQUENCE { + docsDevFilterIpIndex Integer32, + docsDevFilterIpStatus RowStatus, + docsDevFilterIpControl INTEGER, + + + + docsDevFilterIpIfIndex InterfaceIndexOrZero, + docsDevFilterIpDirection INTEGER, + docsDevFilterIpBroadcast TruthValue, + docsDevFilterIpSaddr IpAddress, + docsDevFilterIpSmask IpAddress, + docsDevFilterIpDaddr IpAddress, + docsDevFilterIpDmask IpAddress, + docsDevFilterIpProtocol Integer32, + docsDevFilterIpSourcePortLow Integer32, + docsDevFilterIpSourcePortHigh Integer32, + docsDevFilterIpDestPortLow Integer32, + docsDevFilterIpDestPortHigh Integer32, + docsDevFilterIpMatches ZeroBasedCounter32, + docsDevFilterIpTos OCTET STRING, + docsDevFilterIpTosMask OCTET STRING, + docsDevFilterIpContinue TruthValue, + docsDevFilterIpPolicyId Integer32 + } + +docsDevFilterIpIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index used to order the application of filters. + The filter with the lowest index is always applied + first." + ::= { docsDevFilterIpEntry 1 } + +docsDevFilterIpStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Controls and reflects the status of rows in this + table. Specifying only this object (with the + appropriate index) on a CM is sufficient to create a + filter row that matches all inbound packets on the + ethernet interface and results in the packets being + discarded. docsDevFilterIpIfIndex (at least) must be + specified on a CMTS to create a row. Creation of the + rows may be done via either create-and-wait or + create-and-go, but the filter is not applied until this + object is set to (or changes to) active. There is no + restriction in changing any object in a row while this + object is set to active." + ::= { docsDevFilterIpEntry 2 } + + + + +docsDevFilterIpControl OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2), + policy(3) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If set to discard(1), all packets matching this filter + will be discarded, and scanning of the remainder of the + filter list will be aborted. If set to accept(2), all + packets matching this filter will be accepted for + further processing (e.g., bridging). If + docsDevFilterIpContinue is set to true, see if there + are other matches; otherwise, done. If set to + policy (3), execute the policy entries + matched by docsDevFilterIpPolicyId in + docsDevFilterPolicyTable. + + If docsDevFilterIpContinue is set to true, continue + scanning the table for other matches; otherwise, done." + DEFVAL { discard } + ::= { docsDevFilterIpEntry 3 } + +docsDevFilterIpIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entry interface to which this filter applies. The + value corresponds to ifIndex for either a CATV MAC or + another interface. If the value is zero, the + filter applies to all interfaces. Default value in CMs + is the index of the customer-side (e.g., ethernet) + interface(s). In CMTSes, this object MUST be + specified to create a row in this table. + + Note that according to the DOCSIS OSSIv1.1 + specification, ifIndex '1' in the Cable Modem means + that this row applies to all CMCI (customer-facing) + interfaces." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Section 3.3.4.1. and + DOCSIS OSSI 2.0 Specification, Section 6.3.4.1." + ::= { docsDevFilterIpEntry 4 } + +docsDevFilterIpDirection OBJECT-TYPE + + + + SYNTAX INTEGER { + inbound(1), + outbound(2), + both(3) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Determines whether the filter is applied to inbound(1) + traffic, outbound(2) traffic, or traffic in both(3) + directions." + DEFVAL { inbound } + ::= { docsDevFilterIpEntry 5 } + +docsDevFilterIpBroadcast OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If set to true(1), the filter only applies to multicast + and broadcast traffic. If set to false(2), the filter + applies to all traffic." + DEFVAL { false } + ::= { docsDevFilterIpEntry 6 } + +docsDevFilterIpSaddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The source IP address, or portion thereof, that is to be + matched for this filter. The source address is first + masked (ANDed) against docsDevFilterIpSmask before + being compared to this value. A value of 0 for this + object and 0 for the mask matches all IP addresses." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 7 } + +docsDevFilterIpSmask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A bit mask that is to be applied to the source address + prior to matching. This mask is not necessarily the + same as a subnet mask, but 1s bits must be leftmost and + contiguous." + DEFVAL { '00000000'h } + + + + ::= { docsDevFilterIpEntry 8 } + +docsDevFilterIpDaddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination IP address, or portion thereof, that is + to be matched for this filter. The destination address + is first masked (ANDed) against docsDevFilterIpDmask + before being compared to this value. A value of + 00000000 for this object and 00000000 for the mask + matches all IP addresses." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 9 } + +docsDevFilterIpDmask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A bit mask that is to be applied to the destination + address prior to matching. This mask is not necessarily + the same as a subnet mask, but 1s bits MUST be leftmost + and contiguous." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 10 } + +docsDevFilterIpProtocol OBJECT-TYPE + SYNTAX Integer32 (0..256) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP protocol value that is to be matched. For + example, icmp is 1, tcp is 6, and udp is 17. A value of + 256 matches ANY protocol." + REFERENCE "www.iana.org/assignments/protocol-numbers" + DEFVAL { 256 } + ::= { docsDevFilterIpEntry 11 } + +docsDevFilterIpSourcePortLow OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive lower bound of the transport-layer + source port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + + + + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 12 } + +docsDevFilterIpSourcePortHigh OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive upper bound of the transport-layer + source port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 65535 } + ::= { docsDevFilterIpEntry 13 } + +docsDevFilterIpDestPortLow OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive lower bound of the transport-layer + destination port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 14 } + +docsDevFilterIpDestPortHigh OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive upper bound of the transport-layer + destination port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 65535 } + ::= { docsDevFilterIpEntry 15 } + +docsDevFilterIpMatches OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "matches" + MAX-ACCESS read-only + + + + STATUS deprecated + DESCRIPTION + "Counts the number of times this filter was matched. + This object is initialized to 0 at boot, or at row + creation, and is reset only upon reboot." + ::= { docsDevFilterIpEntry 16 } + +docsDevFilterIpTos OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the value to be matched to the packet's + TOS (Type of Service) value (after the TOS value + is ANDed with docsDevFilterIpTosMask). A value for this + object of 0 and a mask of 0 matches all TOS values." + DEFVAL { '00'h } + ::= { docsDevFilterIpEntry 17 } + +docsDevFilterIpTosMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The mask to be applied to the packet's TOS value before + matching." + DEFVAL { '00'h } + ::= { docsDevFilterIpEntry 18 } + +docsDevFilterIpContinue OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If this value is set to true and docsDevFilterIpControl + is anything but discard (1), continue scanning and + applying policies. See Section 3.3.3 for more + details." + DEFVAL { false } + ::= { docsDevFilterIpEntry 19 } + +docsDevFilterIpPolicyId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object points to an entry in + docsDevFilterPolicyTable. If docsDevFilterIpControl + + + + is set to policy (3), execute all matching policies + in docsDevFilterPolicyTable. If no matching policy + exists, treat as if docsDevFilterIpControl were set + to accept (1). If this object is set to the value of + 0, there is no matching policy, and + docsDevFilterPolicyTable MUST NOT be consulted." + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 20 } + +-- +-- Policy Mapping Table +-- + +docsDevFilterPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterPolicyEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A Table that maps between a policy group ID and a set + of pointers to policies to be applied. All rows with + the same docsDevFilterPolicyId are part of the same + group of policy pointers and are applied in the order + in this table. docsDevFilterPolicyTable exists to + allow multiple policy actions (referenced by policy + pointers) to be applied to any given classified packet. + The policy actions are applied in index order. + For example: + + Index ID Type Action + 1 1 TOS 1 + 9 5 TOS 1 + 12 1 IPSEC 3 + + This says that a packet that matches a filter with + policy id 1 first has TOS policy 1 applied (which might + set the TOS bits to enable a higher priority) and next + has the IPSEC policy 3 applied (which may result in the + packets being dumped into a secure VPN to a remote + encryptor). + + Policy ID 0 is reserved for default actions and is + applied only to packets that match no filters in + docsDevFilterIpTable. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + + + + from RFC 3289." + ::= { docsDevFilter 5 } + +docsDevFilterPolicyEntry OBJECT-TYPE + SYNTAX DocsDevFilterPolicyEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the docsDevFilterPolicyTable. Entries are + created by Network Management. To create an entry, + docsDevFilterPolicyId MUST be specified." + INDEX { docsDevFilterPolicyIndex } + ::= { docsDevFilterPolicyTable 1 } + +DocsDevFilterPolicyEntry ::= SEQUENCE { + docsDevFilterPolicyIndex Integer32, + docsDevFilterPolicyId Integer32, +-- docsDevFilterPolicyType INTEGER, +-- docsDevFilterPolicyAction Integer32, + docsDevFilterPolicyStatus RowStatus, + docsDevFilterPolicyPtr RowPointer + } + +docsDevFilterPolicyIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "Index value for the table." + ::= { docsDevFilterPolicyEntry 1 } + +docsDevFilterPolicyId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Policy ID for this entry. If a policy ID can apply to + multiple rows of this table, all relevant policies are + executed. Policy 0 (if populated) is applied to all + packets that do not match any of the filters. N.B. If + docsDevFilterIpPolicyId is set to 0, it DOES NOT match + policy 0 of this table." + ::= { docsDevFilterPolicyEntry 2 } + +-- The following two objects were removed and never used; however, +-- to preserve OID numbering, they are simply commented out to +-- to ensure that they are not used again. +-- docsDevFilterPolicyType ::= { docsDevFilterPolicyEntry 3 } +-- docsDevFilterPolicyAction ::= { docsDevFilterPolicyEntry 4 } + + + +docsDevFilterPolicyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Object used to create an entry in this table. There is + no restriction in changing any object in a row while + this object is set to active. + The following object MUST have a valid value before this + object can be set to active: docsDevFilterPolicyPtr." + ::= { docsDevFilterPolicyEntry 5 } + +docsDevFilterPolicyPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object points to a row in an applicable filter + policy table. Currently, the only standard policy + table is docsDevFilterTosTable. + + Per the textual convention, this object points to the + first accessible object in the row; e.g., to point to a + row in docsDevFilterTosTable with an index of 21, the + value of this object would be the object identifier + docsDevTosStatus.21. + + Vendors are recommended to adhere to the same convention + when adding vendor-specific policy table extensions. + + If this pointer references an empty or non-existent + row, then no policy action is taken. + + The default upon row creation is a null pointer that + results in no policy action being taken." + DEFVAL { zeroDotZero } + ::= { docsDevFilterPolicyEntry 6 } + +-- +-- TOS Policy action table +-- + +docsDevFilterTosTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterTosEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Table used to describe Type of Service (TOS) bits + + + + processing. + + This table is an adjunct to the docsDevFilterIpTable + and the docsDevFilterPolicy table. Entries in the + latter table can point to specific rows in this (and + other) tables and cause specific actions to be taken. + This table permits the manipulation of the value of the + Type of Service bits in the IP header of the matched + packet as follows: + + Set the tosBits of the packet to + (tosBits & docsDevFilterTosAndMask) | + docsDevFilterTosOrMask + + This construct allows you to do a clear and set of all + the TOS bits in a flexible manner. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + from RFC 3289." + ::= { docsDevFilter 6 } + +docsDevFilterTosEntry OBJECT-TYPE + SYNTAX DocsDevFilterTosEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A TOS policy entry." + INDEX { docsDevFilterTosIndex } + ::= { docsDevFilterTosTable 1 } + +DocsDevFilterTosEntry ::= SEQUENCE { + docsDevFilterTosIndex Integer32, + docsDevFilterTosStatus RowStatus, + docsDevFilterTosAndMask OCTET STRING, + docsDevFilterTosOrMask OCTET STRING + } + +docsDevFilterTosIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The unique index for this row. There are no ordering + requirements for this table, and any valid index may be + specified." + + + + ::= { docsDevFilterTosEntry 1 } + +docsDevFilterTosStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The object used to create and delete entries in this + table. A row created by specifying just this object + results in a row that specifies no change to the TOS + bits. A row may be created using either the + create-and-go or create-and-wait paradigms. There is + no restriction on the ability to change values in this + row while the row is active." + ::= { docsDevFilterTosEntry 2 } + +docsDevFilterTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This value is bitwise ANDed with the matched packet's + TOS bits." + DEFVAL { 'ff'h } + ::= { docsDevFilterTosEntry 3 } + +docsDevFilterTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This value is bitwise ORed with the result from the + AND procedure (tosBits & docsDevFilterTosAndMask). + The result then replaces the packet's TOS bits." + DEFVAL { '00'h } + ::= { docsDevFilterTosEntry 4 } + +-- +-- CPE IP Management and anti-spoofing group. Only implemented on +-- Cable Modems. +-- + +docsDevCpe OBJECT IDENTIFIER ::= { docsDevMIBObjects 7 } + +docsDevCpeEnroll OBJECT-TYPE + SYNTAX INTEGER { + none(1), + any(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the population of + docsDevFilterCpeTable. + If set to none, the filters must be set manually + by a network management action (either configuration + or SNMP set). + If set to any, the CM wiretaps the packets originating + from the ethernet and enrolls up to docsDevCpeIpMax + addresses as based on the source IPv4 or v6 addresses of + those packets." + DEFVAL { any } + ::= { docsDevCpe 1 } + +docsDevCpeIpMax OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the maximum number of CPEs allowed + to be learned behind this device. If set to zero, any + number of CPEs may connect up to the maximum permitted + for the device. + If set to -1, no filtering is done on CPE source + addresses, and no entries are made in the + docsDevFilterCpeTable via learning. If an attempt is + made to set this to a number greater than that + permitted for the device, it is set to that maximum." + DEFVAL { -1 } + ::= { docsDevCpe 2 } + +docsDevCpeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevCpeEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table lists the IPv4 addresses seen (or permitted) + as source addresses in packets originating from the + customer interface on this device. In addition, this + table can be provisioned with the specific addresses + permitted for the CPEs via the normal row creation + mechanisms. Table entries MUST NOT persist across + reboots for any device. + + N.B. Management action can add entries in this table + and in docsDevCpeIpTable past the value of + + + + docsDevCpeIpMax. docsDevCpeIpMax ONLY restricts the + ability of the CM to add learned addresses + automatically. + + This table is deprecated and is replaced by + docsDevCpeInetTable." + ::= { docsDevCpe 3 } + +docsDevCpeEntry OBJECT-TYPE + SYNTAX DocsDevCpeEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the docsDevFilterCpeTable. There is one + entry for each IPv4 CPE seen or provisioned. If + docsDevCpeIpMax is set to -1, this table is ignored; + otherwise, upon receipt of an IP packet from the + customer interface of the CM, the source IP address is + checked against this table. If the address is in the + table, packet processing continues. If the address is + not in the table but docsDevCpeEnroll is set to any + and the sum of the table sizes of docsDevCpeTable and + docsDevCpeInetTable is less than docsDevCpeIpMax, the + address is added to the table, and packet processing + continues. Otherwise, the packet is dropped. + + The filtering actions specified by this table occur + after any LLC filtering (docsDevFilterLLCTable), but + prior to any IP filtering (docsDevFilterIpTable, + docsDevNmAccessTable)." + INDEX { docsDevCpeIp } + ::= {docsDevCpeTable 1 } + +DocsDevCpeEntry ::= SEQUENCE { + docsDevCpeIp IpAddress, + docsDevCpeSource INTEGER, + docsDevCpeStatus RowStatus + } + +docsDevCpeIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IPv4 address to which this entry applies. + + N.B. Attempts to set all zeros or all ones address + values MUST be rejected." + + + + ::= { docsDevCpeEntry 1 } + +docsDevCpeSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + manual(2), + learned(3) + } + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object describes how this entry was created. If + the value is manual(2), this row was created by a + network management action (either configuration or + SNMP set). If set to learned(3), then it was found via + looking at the source IPv4 address of a received packet. + The value other(1) is used for any entries that do not + meet manual(2) or learned(3) criteria." + ::= { docsDevCpeEntry 2 } + +docsDevCpeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Standard object to manipulate rows. To create a row in + this table, one only needs to specify this object. + Management stations SHOULD use the create-and-go + mechanism for creating rows in this table." + ::= { docsDevCpeEntry 3 } + +-- +-- Internet CPE Management and anti spoofing group, for support of +-- non-IPv4 CPEs. +-- + +docsDevCpeInetTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevCpeInetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the IP addresses seen (or permitted) as + source addresses in packets originating from the + customer interface on this device. In addition, this + table can be provisioned with the specific addresses + permitted for the CPEs via the normal row creation + mechanisms. + + + + N.B. Management action can add entries in this table + and in docsDevCpeIpTable past the value of + docsDevCpeIpMax. docsDevCpeIpMax ONLY restricts the + ability of the CM to add learned addresses + automatically. + + Table entries MUST NOT persist across reboots for any + device. + + This table exactly mirrors docsDevCpeTable and applies + to IPv4 and IPv6 addresses." + ::= { docsDevCpe 4 } + +docsDevCpeInetEntry OBJECT-TYPE + SYNTAX DocsDevCpeInetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the docsDevFilterCpeInetTable. There is one + entry for each IP CPE seen or provisioned. If + docsDevCpeIpMax is set to -1, this table is ignored; + otherwise, upon receipt of an IP packet from the + customer interface of the CM, the source IP address is + checked against this table. If the address is in the + table, packet processing continues. If the address is + not in the table but docsDevCpeEnroll is set to any and + the sum of the table sizes for docsDevCpeTable and + docsDevCpeInetTable is less than docsDevCpeIpMax, the + address is added to the table, and packet processing + continues. Otherwise, the packet is dropped. + + The filtering actions specified by this table occur + after any LLC filtering (docsDevFilterLLCTable), but + prior to any IP filtering (docsDevFilterIpTable, + docsDevNmAccessTable). + + When an agent (cable modem) restarts, then all + dynamically created rows are lost." + INDEX { docsDevCpeInetType, docsDevCpeInetAddr } + ::= { docsDevCpeInetTable 1 } + +DocsDevCpeInetEntry ::= SEQUENCE { + docsDevCpeInetType InetAddressType, + docsDevCpeInetAddr InetAddress, + docsDevCpeInetSource INTEGER, + docsDevCpeInetRowStatus RowStatus + } + + + + +docsDevCpeInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of internet address of docsDevCpeInetAddr." + ::= { docsDevCpeInetEntry 1 } + +docsDevCpeInetAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Internet address to which this entry applies. + + Implementors need to be aware that if the size of + docsDevCpeInetAddr exceeds 114 octets OIDs of + instances of columns in this row will have more + than 128 sub-identifiers and cannot be accessed + using SNMPv1, SNMPv2c, or SNMPv3. Only unicast + address are allowed for this object." + ::= { docsDevCpeInetEntry 2 } + +docsDevCpeInetSource OBJECT-TYPE + SYNTAX INTEGER { + manual(2), + learned(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes how this entry was created. If + the value is manual(2), this row was created by a + network management action (either configuration or + SNMP set). If set to learned(3), then it was found + via looking at the source IP address of a received + packet." + ::= { docsDevCpeInetEntry 3 } + +docsDevCpeInetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Standard object to manipulate rows. To create a row in + this table, one only needs to specify this object. + Management stations SHOULD use the create-and-go + mechanism for creating rows in this table." + + + + ::= { docsDevCpeInetEntry 4 } + + +-- +-- Placeholder for notifications/traps. +-- + +-- erroneous, DO NOT USE docsDevNotification +docsDevNotification OBJECT IDENTIFIER ::= { docsDev 2 } +-- erroneous, DO NOT USE docsDevNotification + +docsDevNotifications OBJECT IDENTIFIER ::= { docsDev 0 } + + +-- +-- RFC 2669 Conformance definitions +-- + +docsDevConformance OBJECT IDENTIFIER ::= { docsDev 3 } +docsDevGroups OBJECT IDENTIFIER ::= { docsDevConformance 1 } +docsDevCompliances OBJECT IDENTIFIER ::= { docsDevConformance 2 } + +docsDevBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The RFC 2669 compliance statement for MCNS/DOCSIS + Cable Modems and Cable Modem Termination Systems." + +MODULE -- docsDev + +-- conditionally mandatory groups + +GROUP docsDevBaseGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevEventGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevFilterGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevNmAccessGroup + + + + DESCRIPTION + "This group is only implemented in devices that do not + implement the SNMPv3 User Security Model. It SHOULD NOT + be implemented by devices that conform to SNMPv3. + + For devices that do not implement SNMPv3 or later, this + group is Mandatory in Cable Modems and is optional + in Cable Modem Termination Systems." + +GROUP docsDevServerGroup + DESCRIPTION + "This group is implemented only in Cable Modems, and is + not implemented in Cable Modem Termination Systems." + +GROUP docsDevSoftwareGroup + DESCRIPTION + "This group is Mandatory in Cable Modems and optional in + Cable Modem Termination Systems." + +GROUP docsDevCpeGroup + DESCRIPTION + "This group is Mandatory in Cable Modems, and is + not implemented in Cable Modem Termination Systems." + +OBJECT docsDevSTPControl + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevNmAccessIp + DESCRIPTION + "It is compliant to recognize the IP address + 255.255.255.255 as referring to any NMS." + +OBJECT docsDevEvReporting + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0). An agent need not + enforce that trap or syslog logging be accompanied + by local(0) or localVolatile(3) logging." + ::= { docsDevCompliances 1 } + +docsDevBaseGroup OBJECT-GROUP + OBJECTS { + docsDevRole, + docsDevDateTime, + + + + docsDevResetNow, + docsDevSerialNumber, + docsDevSTPControl + } + STATUS current + DESCRIPTION + "A collection of objects providing device status and + control." + ::= { docsDevGroups 1 } + +docsDevNmAccessGroup OBJECT-GROUP + OBJECTS { + docsDevNmAccessIp, + docsDevNmAccessIpMask, + docsDevNmAccessCommunity, + docsDevNmAccessControl, + docsDevNmAccessInterfaces, + docsDevNmAccessStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects for controlling access to SNMP + objects on cable devices. + + This group has been deprecated because all the + objects have been deprecated in favor of SNMPv3 and + Coexistence MIBs." + ::= { docsDevGroups 2 } + +docsDevSoftwareGroup OBJECT-GROUP + OBJECTS { + docsDevSwServer, + docsDevSwFilename, + docsDevSwAdminStatus, + docsDevSwOperStatus, + docsDevSwCurrentVers + } + STATUS deprecated + DESCRIPTION + "A collection of objects for controlling software + downloads. + + This group has been deprecated and replaced by + docsDevSoftwareGroupV2. Object docsDevSwServer + has been replaced by docsDevSwServerAddressType + and docsDevSwServerAddress, and + docsDevSwServerTransportProtocol has been added to + support TFTP and HTTP firmware downloads." + + + + ::= { docsDevGroups 3 } + +docsDevServerGroup OBJECT-GROUP + OBJECTS { + docsDevServerBootState, + docsDevServerDhcp, + docsDevServerTime, + docsDevServerTftp, + docsDevServerConfigFile + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing status about server + provisioning. + + This group has been deprecated and replaced by + docsDevServerGroupV2. The objects docsDevServerDhcp, + docsDevServerTime, and docsDevServerTftp have + been replaced by docsDevServerDhcpAddressType, + docsDevServerDhcpAddress, docsDevServerTimeAddressType, + docsDevServerTimeAddress, + docsDevServerConfigTftpAddressType, and + docsDevServerConfigTftpAddress." + ::= { docsDevGroups 4 } + +docsDevEventGroup OBJECT-GROUP + OBJECTS { + docsDevEvControl, + docsDevEvSyslog, + docsDevEvThrottleAdminStatus, + docsDevEvThrottleInhibited, + docsDevEvThrottleThreshold, + docsDevEvThrottleInterval, + docsDevEvReporting, + docsDevEvFirstTime, + docsDevEvLastTime, + docsDevEvCounts, + docsDevEvLevel, + docsDevEvId, + docsDevEvText + } + STATUS deprecated + DESCRIPTION + "A collection of objects used to control and monitor + events. + + This group has been deprecated and replaced by + docsDevEventGroupV2. The object docsDevEvSyslog has + + + + been replaced by docsDevEvSyslogAddressType and + docsDevEvSyslogAddress, and docsDevEvThrottleInhibited + has been replaced by + docsDevEvThrottleThresholdExceeded." + ::= { docsDevGroups 5 } + +docsDevFilterGroup OBJECT-GROUP + OBJECTS { + docsDevFilterLLCUnmatchedAction, + docsDevFilterIpDefault, + docsDevFilterLLCStatus, + docsDevFilterLLCIfIndex, + docsDevFilterLLCProtocolType, + docsDevFilterLLCProtocol, + docsDevFilterLLCMatches, + docsDevFilterIpControl, + docsDevFilterIpIfIndex, + docsDevFilterIpStatus, + docsDevFilterIpDirection, + docsDevFilterIpBroadcast, + docsDevFilterIpSaddr, + docsDevFilterIpSmask, + docsDevFilterIpDaddr, + docsDevFilterIpDmask, + docsDevFilterIpProtocol, + docsDevFilterIpSourcePortLow, + docsDevFilterIpSourcePortHigh, + docsDevFilterIpDestPortLow, + docsDevFilterIpDestPortHigh, + docsDevFilterIpMatches, + docsDevFilterIpTos, + docsDevFilterIpTosMask, + docsDevFilterIpContinue, + docsDevFilterIpPolicyId, + docsDevFilterPolicyId, + docsDevFilterPolicyStatus, + docsDevFilterPolicyPtr, + docsDevFilterTosStatus, + docsDevFilterTosAndMask, + docsDevFilterTosOrMask + } + STATUS deprecated + DESCRIPTION + "A collection of objects to specify filters at the link + layer and IPv4 layer. + + This group has been deprecated and replaced by various + groups from the DiffServ MIB." + + + + ::= { docsDevGroups 6 } + +docsDevCpeGroup OBJECT-GROUP + OBJECTS { + docsDevCpeEnroll, + docsDevCpeIpMax, + docsDevCpeSource, + docsDevCpeStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects used to control the number + and specific values of IPv4 addresses allowed for + associated Customer Premises Equipment (CPE). + + This group has been deprecated and replaced by + docsDevInetCpeGroup. The object docsDevCpeSource has + been replaced by docsDevCpeInetSource, and + docsDevCpeStatus has been replaced by + docsDevCpeInetRowStatus." + ::= { docsDevGroups 7 } + +-- +-- RFC 4639 Conformance definitions +-- + +docsDevGroupsV2 OBJECT IDENTIFIER ::= { docsDevConformance 3 } +docsDevCompliancesV2 OBJECT IDENTIFIER ::= { docsDevConformance 4 } + +docsDevCmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DOCSIS Cable Modems. + + This compliance statement applies to implementations + of DOCSIS versions that are not IPv6 capable." + +MODULE DIFFSERV-MIB -- RFC 3289 + +MANDATORY-GROUPS { + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBDscpMarkActGroup, + diffServMIBCounterGroup, + diffServMIBAlgDropGroup + + + + } + +OBJECT diffServDataPathStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServClfrStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServClfrElementStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrSrcAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServAlgDropStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + + + +OBJECT diffServDataPathStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServClfrStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServClfrElementStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServMultiFieldClfrStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServActionStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServCountActStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServAlgDropStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServAlgDropType + SYNTAX INTEGER { alwaysDrop(5) } + DESCRIPTION + "This object is only used to provide packet + filtering. Implementations need not support other + values of this enumeration." + + + +MODULE -- docsDev + +MANDATORY-GROUPS { + docsDevBaseGroup, + docsDevBaseIgmpGroup, + docsDevBaseMaxCpeGroup, + docsDevSoftwareGroupV2, + docsDevServerGroupV2, + docsDevEventGroupV2, + docsDevFilterLLCGroup + } + +-- conditionally mandatory groups + +GROUP docsDevInetCpeGroup + DESCRIPTION + "This group is optional in Cable Modems." + +OBJECT docsDevDateTime + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsDevSTPControl + SYNTAX INTEGER { noStFilterBpdu(2) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevIgmpModeControl + SYNTAX INTEGER { passive(1) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support passive(1)." + +OBJECT docsDevSwServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + + + +OBJECT docsDevServerDhcpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerDhcpAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerTimeAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerTimeAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerConfigTftpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerConfigTftpAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvReporting + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0)." + +OBJECT docsDevEvSyslogAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + + + + +OBJECT docsDevEvSyslogAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerTransportProtocol + SYNTAX INTEGER { tftp(1) } + DESCRIPTION + "An implementation is only required to support TFTP + software image downloads." + + ::= { docsDevCompliancesV2 1 } + +docsDevCmtsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DOCSIS Cable Modem + Termination Systems. + + This compliance statement applies to implementations + of DOCSIS versions that are not IPv6 capable." + +MODULE -- docsDev + +-- conditionally mandatory groups + +GROUP docsDevBaseGroup + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevBaseIgmpGroup + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevBaseMaxCpeGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems." + +GROUP docsDevSoftwareGroupV2 + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevServerGroupV2 + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems." + + + +GROUP docsDevEventGroupV2 + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevFilterLLCGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems. See the Subscriber Management + MIB for similar CMTS capability." + +GROUP docsDevInetCpeGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems. See the Subscriber Management + MIB for similar CMTS capability." + +OBJECT docsDevDateTime + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsDevSTPControl + SYNTAX INTEGER { noStFilterBpdu(2) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevIgmpModeControl + SYNTAX INTEGER { passive(1) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support passive(1)." + +OBJECT docsDevSwServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvReporting + + + + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0)." + +OBJECT docsDevEvSyslogAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvSyslogAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerTransportProtocol + SYNTAX INTEGER { tftp(1) } + DESCRIPTION + "An implementation is only required to support TFTP + software image downloads." + + ::= { docsDevCompliancesV2 2 } + +docsDevBaseIgmpGroup OBJECT-GROUP + OBJECTS { + docsDevIgmpModeControl + } + STATUS current + DESCRIPTION + "An object providing cable device IGMP status and + control." + ::= { docsDevGroupsV2 1 } + +docsDevBaseMaxCpeGroup OBJECT-GROUP + OBJECTS { + docsDevMaxCpe + } + STATUS current + DESCRIPTION + "An object providing management of the maximum number of + CPEs permitted access through a cable modem." + ::= { docsDevGroupsV2 2 } + +docsDevNmAccessExtGroup OBJECT-GROUP + OBJECTS { + docsDevNmAccessTrapVersion + + + + } + STATUS deprecated + DESCRIPTION + "An object, in addition to the objects in + docsDevNmAccessGroup, for controlling access to + SNMP objects on cable devices. + + This group is included in this MIB due to existing + implementations of docsDevNmAccessTrapVersion in + DOCSIS cable modems. + + This group has been deprecated because the object has + been deprecated in favor of SNMPv3 and Coexistence + MIBs." + ::= { docsDevGroupsV2 3 } + +docsDevSoftwareGroupV2 OBJECT-GROUP + OBJECTS { + docsDevSwFilename, + docsDevSwAdminStatus, + docsDevSwOperStatus, + docsDevSwCurrentVers, + docsDevSwServerAddressType, + docsDevSwServerAddress, + docsDevSwServerTransportProtocol + } + STATUS current + DESCRIPTION + "A collection of objects for controlling software + downloads. This group replaces docsDevSoftwareGroup." + ::= { docsDevGroupsV2 4 } + +docsDevServerGroupV2 OBJECT-GROUP + OBJECTS { + docsDevServerBootState, + docsDevServerDhcpAddressType, + docsDevServerDhcpAddress, + docsDevServerTimeAddressType, + docsDevServerTimeAddress, + docsDevServerConfigTftpAddressType, + docsDevServerConfigTftpAddress, + docsDevServerConfigFile + } + STATUS current + DESCRIPTION + "A collection of objects providing status about server + provisioning. This group replaces docsDevServerGroup." + ::= { docsDevGroupsV2 5 } + + + +docsDevEventGroupV2 OBJECT-GROUP + OBJECTS { + docsDevEvControl, + docsDevEvThrottleAdminStatus, + docsDevEvThrottleThreshold, + docsDevEvThrottleInterval, + docsDevEvReporting, + docsDevEvFirstTime, + docsDevEvLastTime, + docsDevEvCounts, + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsDevEvSyslogAddressType, + docsDevEvSyslogAddress, + docsDevEvThrottleThresholdExceeded + } + STATUS current + DESCRIPTION + "A collection of objects used to control and monitor + events. This group replaces docsDevEventGroup. + The event reporting mechanism, and more specifically + docsDevEvReporting, can be used to take advantage of + the event reporting features of RFC3413 and RFC3014." + ::= { docsDevGroupsV2 6 } + +docsDevFilterLLCGroup OBJECT-GROUP + OBJECTS { + docsDevFilterLLCUnmatchedAction, + docsDevFilterLLCStatus, + docsDevFilterLLCIfIndex, + docsDevFilterLLCProtocolType, + docsDevFilterLLCProtocol, + docsDevFilterLLCMatches + } + STATUS current + DESCRIPTION + "A collection of objects to specify link layer filters." + ::= { docsDevGroupsV2 7 } + +docsDevInetCpeGroup OBJECT-GROUP + OBJECTS { + docsDevCpeEnroll, + docsDevCpeIpMax, + docsDevCpeInetSource, + docsDevCpeInetRowStatus + } + STATUS current + + + + DESCRIPTION + "A collection of objects used to control the number + and specific values of Internet (e.g., IPv4 and IPv6) + addresses allowed for associated Customer Premises + Equipment (CPE)." + ::= { docsDevGroupsV2 8 } + +END diff --git a/mibs/ietf/DOCS-IETF-BPI2-MIB b/mibs/ietf/DOCS-IETF-BPI2-MIB new file mode 100644 index 0000000..f538a3e --- /dev/null +++ b/mibs/ietf/DOCS-IETF-BPI2-MIB @@ -0,0 +1,3644 @@ +DOCS-IETF-BPI2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, + Unsigned32, + Counter32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + DateAndTime, + StorageType + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + ifIndex + FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddress + + + + FROM INET-ADDRESS-MIB; -- [RFC4001] + + docsBpi2MIB MODULE-IDENTITY + LAST-UPDATED "200507200000Z" -- July 20, 2005 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) + Working Group" + CONTACT-INFO "--------------------------------------- + Stuart M. Green + E-mail: rubbersoul3@yahoo.com + --------------------------------------- + Kaz Ozawa + Automotive Systems Development Center + TOSHIBA CORPORATION + 1-1, Shibaura 1-Chome + Minato-ku, Tokyo 105-8001 + Japan + Phone: +81-3-3457-8569 + Fax: +81-3-5444-9325 + E-mail: Kazuyoshi.Ozawa@toshiba.co.jp + --------------------------------------- + Alexander Katsnelson + Postal: + Tel: +1-303-680-3924 + E-mail: katsnelson6@peoplepc.com + --------------------------------------- + Eduardo Cardona + Postal: + Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027- 9750 + U.S.A. + Tel: +1 303 661 9100 + Fax: +1 303 661 9199 + E-mail: e.cardona@cablelabs.com + --------------------------------------- + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn. + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn. + Co-chairs: Richard Woundy, rwoundy@cisco.com + Jean-Francois Mule, jfm@cablelabs.com" + DESCRIPTION + "This is the MIB module for the DOCSIS Baseline + Privacy Plus Interface (BPI+) at cable modems (CMs) + and cable modem termination systems (CMTSs). + + Copyright (C) The Internet Society (2005). This + + + + version of this MIB module is part of RFC 4131; see + the RFC itself for full legal notices." + + REVISION "200507200000Z" -- July 20, 2005 + DESCRIPTION + "Initial version of the IETF BPI+ MIB module. + This version published as RFC 4131." + ::= { mib-2 126 } + + -- Textual conventions + +DocsX509ASN1DEREncodedCertificate ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An X509 digital certificate encoded as an ASN.1 DER + object." + SYNTAX OCTET STRING (SIZE (0..4096)) + +DocsSAId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Security Association identifier (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 2.1.3, BPI+ Security + Associations" + SYNTAX Integer32 (1..16383) + +DocsSAIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Security Association identifier (SAID). The value + zero indicates that the SAID is yet to be determined." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 2.1.3, BPI+ Security + Associations" + SYNTAX Unsigned32 (0 | 1..16383) + +DocsBpkmSAType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of security association (SA). + The values of the named-numbers are associated + with the BPKM SA-Type attributes: + 'primary' corresponds to code '1', 'static' to code '2', + + + + and 'dynamic' to code '3'. + The 'none' value must only be used if the SA type has yet + to be determined." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 4.2.2.24" + SYNTAX INTEGER { + none(0), + primary(1), + static(2), + dynamic(3) + } + +DocsBpkmDataEncryptAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list of data encryption algorithms defined for + the DOCSIS interface in the BPKM cryptographic-suite + parameter. The value 'none' indicates that the SAID + being referenced has no data encryption." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + SYNTAX INTEGER { + none(0), + des56CbcMode(1), + des40CbcMode(2), + t3Des128CbcMode(3), + aes128CbcMode(4), + aes256CbcMode(5) + } + +DocsBpkmDataAuthentAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list of data integrity algorithms defined for the + DOCSIS interface in the BPKM cryptographic-suite parameter. + The value 'none' indicates that no data integrity is used for + the SAID being referenced." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + SYNTAX INTEGER { + none(0), + hmacSha196(1) + } + + docsBpi2MIBObjects OBJECT IDENTIFIER ::= { docsBpi2MIB 1 } + + + + -- Cable Modem Group + + docsBpi2CmObjects OBJECT IDENTIFIER ::= { docsBpi2MIBObjects 1 } + + -- + -- The BPI+ base and authorization table for CMs, + -- indexed by ifIndex + -- + + docsBpi2CmBaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the basic and authorization- + related Baseline Privacy Plus attributes of each CM MAC + interface." + ::= { docsBpi2CmObjects 1 } + + docsBpi2CmBaseEntry OBJECT-TYPE + SYNTAX DocsBpi2CmBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one CM MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmBaseTable 1 } + + DocsBpi2CmBaseEntry ::= SEQUENCE { + docsBpi2CmPrivacyEnable TruthValue, + docsBpi2CmPublicKey OCTET STRING, + docsBpi2CmAuthState INTEGER, + docsBpi2CmAuthKeySequenceNumber Integer32, + docsBpi2CmAuthExpiresOld DateAndTime, + docsBpi2CmAuthExpiresNew DateAndTime, + docsBpi2CmAuthReset TruthValue, + docsBpi2CmAuthGraceTime Integer32, + docsBpi2CmTEKGraceTime Integer32, + docsBpi2CmAuthWaitTimeout Integer32, + docsBpi2CmReauthWaitTimeout Integer32, + docsBpi2CmOpWaitTimeout Integer32, + docsBpi2CmRekeyWaitTimeout Integer32, + docsBpi2CmAuthRejectWaitTimeout Integer32, + docsBpi2CmSAMapWaitTimeout Integer32, + docsBpi2CmSAMapMaxRetries Integer32, + docsBpi2CmAuthentInfos Counter32, + + + + docsBpi2CmAuthRequests Counter32, + docsBpi2CmAuthReplies Counter32, + docsBpi2CmAuthRejects Counter32, + docsBpi2CmAuthInvalids Counter32, + docsBpi2CmAuthRejectErrorCode INTEGER, + docsBpi2CmAuthRejectErrorString SnmpAdminString, + docsBpi2CmAuthInvalidErrorCode INTEGER, + docsBpi2CmAuthInvalidErrorString SnmpAdminString + } + + docsBpi2CmPrivacyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether this CM is + provisioned to run Baseline Privacy Plus." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1." + ::= { docsBpi2CmBaseEntry 1 } + + docsBpi2CmPublicKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..524)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is a DER-encoded + RSAPublicKey ASN.1 type string, as defined in the RSA + Encryption Standard (PKCS #1), corresponding to the + public key of the CM." + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.4." + ::= { docsBpi2CmBaseEntry 2 } + + docsBpi2CmAuthState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + authWait(2), + authorized(3), + reauthWait(4), + authRejectWait(5), + silent(6) + } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the state of the CM + authorization FSM. The start state indicates that FSM is + in its initial state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.2.1." + ::= { docsBpi2CmBaseEntry 3 } + + docsBpi2CmAuthKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent + authorization key sequence number for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.10." + ::= { docsBpi2CmBaseEntry 4 } + + docsBpi2CmAuthExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the immediate predecessor of the most recent + authorization key for this FSM. If this FSM has only one + authorization key, then the value is the time of activation + of this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmBaseEntry 5 } + + docsBpi2CmAuthExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the most recent authorization key for this + FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmBaseEntry 6 } + + + + docsBpi2CmAuthReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' generates a Reauthorize + event in the authorization FSM. Reading this object always + returns FALSE. + + This object is for testing purposes only, and therefore it + is not required to be associated with a last reset + object." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.2.3.4." + ::= { docsBpi2CmBaseEntry 7 } + + docsBpi2CmAuthGraceTime OBJECT-TYPE + SYNTAX Integer32 (1..6047999) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the grace time for an + authorization key in seconds. A CM is expected to start + trying to get a new authorization key beginning + AuthGraceTime seconds before the most recent authorization + key actually expires." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.3." + ::= { docsBpi2CmBaseEntry 8 } + + docsBpi2CmTEKGraceTime OBJECT-TYPE + SYNTAX Integer32 (1..302399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the grace time for + the TEK in seconds. The CM is expected to start trying to + acquire a new TEK beginning TEK GraceTime seconds before + the expiration of the most recent TEK." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.6." + ::= { docsBpi2CmBaseEntry 9 } + + + + + docsBpi2CmAuthWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..30) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Authorize Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.1." + ::= { docsBpi2CmBaseEntry 10 } + + docsBpi2CmReauthWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..30) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Reauthorize Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.2." + ::= { docsBpi2CmBaseEntry 11 } + + docsBpi2CmOpWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Operational Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.4." + ::= { docsBpi2CmBaseEntry 12 } + + docsBpi2CmRekeyWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Rekey Wait Timeout + in seconds." + REFERENCE + + + + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.5." + ::= { docsBpi2CmBaseEntry 13 } + + docsBpi2CmAuthRejectWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Authorization Reject + Wait Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.7." + ::= { docsBpi2CmBaseEntry 14 } + + docsBpi2CmSAMapWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the retransmission + interval, in seconds, of SA Map Requests from the MAP Wait + state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.8." + ::= { docsBpi2CmBaseEntry 15 } + + docsBpi2CmSAMapMaxRetries OBJECT-TYPE + SYNTAX Integer32 (0..10) + UNITS "count" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the maximum number of + Map Request retries allowed." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.9." + ::= { docsBpi2CmBaseEntry 16 } + + docsBpi2CmAuthentInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times + the CM has transmitted an Authentication Information + message. 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmBaseEntry 17 } + + docsBpi2CmAuthRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has transmitted an Authorization Request message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmBaseEntry 18 } + + docsBpi2CmAuthReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received an Authorization Reply message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmBaseEntry 19 } + + docsBpi2CmAuthRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times the CM + has received an Authorization Reject message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmBaseEntry 20 } + + docsBpi2CmAuthInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the count of times the CM + has received an Authorization Invalid message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmBaseEntry 21 } + + docsBpi2CmAuthRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSaid(4), + permanentAuthorizationFailure(8), + timeOfDayNotAcquired(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Reject message received by the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Reject message has been received + since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.3 and 4.2.2.15." + ::= { docsBpi2CmBaseEntry 22 } + + docsBpi2CmAuthRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Reject message received by the + CM. This is a zero length string if no Authorization + Reject message has been received since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.3 and 4.2.2.6." + ::= { docsBpi2CmBaseEntry 23 } + + docsBpi2CmAuthInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Invalid message received by the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Invalid message has been received + since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.15." + ::= { docsBpi2CmBaseEntry 24 } + + docsBpi2CmAuthInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Invalid message received by the + CM. This is a zero length string if no Authorization + + + + Invalid message has been received since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.6." + ::= { docsBpi2CmBaseEntry 25 } + + -- + -- The CM TEK Table, indexed by ifIndex and SAID + -- + + docsBpi2CmTEKTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each CM + Traffic Encryption Key (TEK) association. The CM maintains + (no more than) one TEK association per SAID per CM MAC + interface." + ::= { docsBpi2CmObjects 2 } + + docsBpi2CmTEKEntry OBJECT-TYPE + SYNTAX DocsBpi2CmTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the TEK + association attributes of one SAID. The CM MUST create one + entry per SAID, regardless of whether the SAID was obtained + from a Registration Response message, from an Authorization + Reply message, or from any dynamic SAID establishment + mechanisms." + INDEX { ifIndex, docsBpi2CmTEKSAId } + ::= { docsBpi2CmTEKTable 1 } + + DocsBpi2CmTEKEntry ::= SEQUENCE { + docsBpi2CmTEKSAId DocsSAId, + docsBpi2CmTEKSAType DocsBpkmSAType, + docsBpi2CmTEKDataEncryptAlg DocsBpkmDataEncryptAlg, + docsBpi2CmTEKDataAuthentAlg DocsBpkmDataAuthentAlg, + docsBpi2CmTEKState INTEGER, + docsBpi2CmTEKKeySequenceNumber Integer32, + docsBpi2CmTEKExpiresOld DateAndTime, + docsBpi2CmTEKExpiresNew DateAndTime, + docsBpi2CmTEKKeyRequests Counter32, + docsBpi2CmTEKKeyReplies Counter32, + docsBpi2CmTEKKeyRejects Counter32, + docsBpi2CmTEKInvalids Counter32, + + + + docsBpi2CmTEKAuthPends Counter32, + docsBpi2CmTEKKeyRejectErrorCode INTEGER, + docsBpi2CmTEKKeyRejectErrorString SnmpAdminString, + docsBpi2CmTEKInvalidErrorCode INTEGER, + docsBpi2CmTEKInvalidErrorString SnmpAdminString + } + + docsBpi2CmTEKSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the DOCSIS Security + Association ID (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmTEKEntry 1 } + + docsBpi2CmTEKSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the type of security + association." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmTEKEntry 2 } + + docsBpi2CmTEKDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmTEKEntry 3 } + + docsBpi2CmTEKDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the data authentication + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmTEKEntry 4 } + + docsBpi2CmTEKState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + opWait(2), + opReauthWait(3), + operational(4), + rekeyWait(5), + rekeyReauthWait(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the state of the + indicated TEK FSM. The start(1) state indicates that the + FSM is in its initial state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.1." + ::= { docsBpi2CmTEKEntry 5 } + + docsBpi2CmTEKKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent TEK + key sequence number for this TEK FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.2.10 and 4.2.2.13." + ::= { docsBpi2CmTEKEntry 6 } + + docsBpi2CmTEKExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the immediate predecessor of the most recent + TEK for this FSM. If this FSM has only one TEK, then the + value is the time of activation of this FSM." + + + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmTEKEntry 7 } + + docsBpi2CmTEKExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the most recent TEK for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmTEKEntry 8 } + + docsBpi2CmTEKKeyRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has transmitted a Key Request message. + 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." + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.4." + ::= { docsBpi2CmTEKEntry 9 } + + docsBpi2CmTEKKeyReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a Key Reply message, including a message whose + authentication failed. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 4.2.1.5." + ::= { docsBpi2CmTEKEntry 10 } + + docsBpi2CmTEKKeyRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a Key Reject message, including a message + whose authentication failed. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.6." + ::= { docsBpi2CmTEKEntry 11 } + + docsBpi2CmTEKInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a TEK Invalid message, including a message + whose authentication failed. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.8." + ::= { docsBpi2CmTEKEntry 12 } + + docsBpi2CmTEKAuthPends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the count of times an + Authorization Pending (Auth Pend) event occurred in this + FSM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.3.3." + ::= { docsBpi2CmTEKEntry 13 } + + docsBpi2CmTEKKeyRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSaid(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent Key Reject + message received by the CM. This has the value unknown(2) if + the last Error-Code value was 0 and none(1) if no Key + Reject message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.6 and 4.2.2.15." + ::= { docsBpi2CmTEKEntry 14 } + + docsBpi2CmTEKKeyRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Key Reject message received by the CM. This is + a zero length string if no Key Reject message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.6 and 4.2.2.6." + ::= { docsBpi2CmTEKEntry 15 } + + docsBpi2CmTEKInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the enumerated + description of the Error-Code in the most recent TEK Invalid + message received by the CM. This has the value unknown(2) if + the last Error-Code value was 0 and none(1) if no TEK + Invalid message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.8 and 4.2.2.15." + ::= { docsBpi2CmTEKEntry 16 } + + docsBpi2CmTEKInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent TEK Invalid message received by the CM. This is + a zero length string if no TEK Invalid message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.8 and 4.2.2.6." + ::= { docsBpi2CmTEKEntry 17 } + + -- + -- The CM Multicast Objects Group + -- + + docsBpi2CmMulticastObjects OBJECT IDENTIFIER + ::= { docsBpi2CmObjects 3 } + + -- + -- The CM Dynamic IP Multicast Mapping Table, indexed by + -- docsBpi2CmIpMulticastIndex and by ifIndex + -- + + docsBpi2CmIpMulticastMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps multicast IP addresses to SAIDs per + CM MAC Interface. + It is intended to map multicast IP addresses associated + with SA MAP Request messages." + ::= { docsBpi2CmMulticastObjects 1 } + + docsBpi2CmIpMulticastMapEntry OBJECT-TYPE + + + + SYNTAX DocsBpi2CmIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the mapping of + one multicast IP address to one SAID, as well as + associated state, message counters, and error information. + + An entry may be removed from this table upon the reception + of an SA Map Reject." + INDEX { ifIndex, docsBpi2CmIpMulticastIndex } + ::= { docsBpi2CmIpMulticastMapTable 1 } + + DocsBpi2CmIpMulticastMapEntry ::= SEQUENCE { + docsBpi2CmIpMulticastIndex Unsigned32, + docsBpi2CmIpMulticastAddressType InetAddressType, + docsBpi2CmIpMulticastAddress InetAddress, + docsBpi2CmIpMulticastSAId DocsSAIdOrZero, + docsBpi2CmIpMulticastSAMapState INTEGER, + docsBpi2CmIpMulticastSAMapRequests Counter32, + docsBpi2CmIpMulticastSAMapReplies Counter32, + docsBpi2CmIpMulticastSAMapRejects Counter32, + docsBpi2CmIpMulticastSAMapRejectErrorCode INTEGER, + docsBpi2CmIpMulticastSAMapRejectErrorString SnmpAdminString + } + + docsBpi2CmIpMulticastIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row." + ::= { docsBpi2CmIpMulticastMapEntry 1 } + + docsBpi2CmIpMulticastAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet address for + docsBpi2CmIpMulticastAddress." + ::= { docsBpi2CmIpMulticastMapEntry 2 } + + docsBpi2CmIpMulticastAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object represents the IP multicast address + to be mapped. The type of this address is determined by + the value of the docsBpi2CmIpMulticastAddressType object." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 5.4." + ::= { docsBpi2CmIpMulticastMapEntry 3 } + + docsBpi2CmIpMulticastSAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the SAID to which the IP + multicast address has been mapped. If no SA Map Reply has + been received for the IP address, this object should have + the value 0." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmIpMulticastMapEntry 4 } + + docsBpi2CmIpMulticastSAMapState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + mapWait(2), + mapped(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the state of the SA + Mapping FSM for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 5.3.1." + ::= { docsBpi2CmIpMulticastMapEntry 5 } + + docsBpi2CmIpMulticastSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has transmitted an SA Map Request message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmIpMulticastMapEntry 6 } + + docsBpi2CmIpMulticastSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has received an SA Map Reply message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmIpMulticastMapEntry 7 } + + docsBpi2CmIpMulticastSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has received an SA MAP Reject message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmIpMulticastMapEntry 8 } + + docsBpi2CmIpMulticastSAMapRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + noAuthForRequestedDSFlow(9), + dsFlowNotMappedToSA(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the enumerated + description of the Error-Code in the most recent SA Map + Reject message sent in response to an SA Map Request for + This IP. It has the value none(1) if no SA MAP Reject + message has been received since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.15." + ::= { docsBpi2CmIpMulticastMapEntry 9 } + + docsBpi2CmIpMulticastSAMapRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent SA Map Reject message sent in response to + an SA Map Request for this IP. It is a zero length string + if no SA Map Reject message has been received since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.6." + ::= { docsBpi2CmIpMulticastMapEntry 10 } + + -- + -- CM Cert Objects + -- + + docsBpi2CmCertObjects OBJECT IDENTIFIER + ::= { docsBpi2CmObjects 4 } + + -- + -- CM Device Cert Table + -- + + docsBpi2CmDeviceCertTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmDeviceCertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the Baseline Privacy Plus + device certificates for each CM MAC interface." + ::= { docsBpi2CmCertObjects 1 } + + docsBpi2CmDeviceCertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmDeviceCertEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry contains the device certificates of + one CM MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmDeviceCertTable 1 } + + DocsBpi2CmDeviceCertEntry ::= SEQUENCE { + docsBpi2CmDeviceCmCert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmDeviceManufCert + DocsX509ASN1DEREncodedCertificate + } + + docsBpi2CmDeviceCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The X509 DER-encoded cable modem certificate. + Note: This object can be set only when the value is the + zero-length OCTET STRING; otherwise, an error of + 'inconsistentValue' is returned. Once the object + contains the certificate, its access MUST be read-only + and persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.1." + ::= { docsBpi2CmDeviceCertEntry 1 } + + docsBpi2CmDeviceManufCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The X509 DER-encoded manufacturer certificate that + signed the cable modem certificate." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.1." + ::= { docsBpi2CmDeviceCertEntry 2 } + + -- + -- CM Crypto Suite Table + -- + + + + + docsBpi2CmCryptoSuiteTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmCryptoSuiteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the Baseline Privacy Plus + cryptographic suite capabilities for each CM MAC + interface." + ::= { docsBpi2CmObjects 5 } + + docsBpi2CmCryptoSuiteEntry OBJECT-TYPE + SYNTAX DocsBpi2CmCryptoSuiteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a cryptographic suite pair + that this CM MAC supports." + INDEX { ifIndex, docsBpi2CmCryptoSuiteIndex } + ::= { docsBpi2CmCryptoSuiteTable 1 } + + DocsBpi2CmCryptoSuiteEntry ::= SEQUENCE { + docsBpi2CmCryptoSuiteIndex Unsigned32, + docsBpi2CmCryptoSuiteDataEncryptAlg + DocsBpkmDataEncryptAlg, + docsBpi2CmCryptoSuiteDataAuthentAlg + DocsBpkmDataAuthentAlg + } + + docsBpi2CmCryptoSuiteIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..1000) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for a cryptographic suite row." + ::= { docsBpi2CmCryptoSuiteEntry 1 } + + docsBpi2CmCryptoSuiteDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this cryptographic suite capability." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmCryptoSuiteEntry 2 } + + + + + docsBpi2CmCryptoSuiteDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data authentication + algorithm for this cryptographic suite capability." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmCryptoSuiteEntry 3 } + + -- Cable Modem Termination System Group + +docsBpi2CmtsObjects OBJECT IDENTIFIER ::= { docsBpi2MIBObjects 2 } + + -- + -- SPECIAL NOTE: For the following CMTS tables, when a CM is + -- running in BPI mode, replace SAID (Security Association ID) + -- with SID (Service ID). The CMTS is required to map SAIDs and + -- SIDs to one contiguous space. + -- + + -- + -- The BPI+ base table for CMTSs, indexed by ifIndex + -- + + docsBpi2CmtsBaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the basic Baseline Privacy + attributes of each CMTS MAC interface." + ::= { docsBpi2CmtsObjects 1 } + + docsBpi2CmtsBaseEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one CMTS MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmtsBaseTable 1 } + + DocsBpi2CmtsBaseEntry ::= SEQUENCE { + + + + docsBpi2CmtsDefaultAuthLifetime Integer32, + docsBpi2CmtsDefaultTEKLifetime Integer32, + docsBpi2CmtsDefaultSelfSignedManufCertTrust INTEGER, + docsBpi2CmtsCheckCertValidityPeriods TruthValue, + docsBpi2CmtsAuthentInfos Counter32, + docsBpi2CmtsAuthRequests Counter32, + docsBpi2CmtsAuthReplies Counter32, + docsBpi2CmtsAuthRejects Counter32, + docsBpi2CmtsAuthInvalids Counter32, + docsBpi2CmtsSAMapRequests Counter32, + docsBpi2CmtsSAMapReplies Counter32, + docsBpi2CmtsSAMapRejects Counter32 + } + + docsBpi2CmtsDefaultAuthLifetime OBJECT-TYPE + SYNTAX Integer32 (1..6048000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the default lifetime, in + seconds, that the CMTS assigns to a new authorization key. + This object value persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.2." + DEFVAL { 604800 } + ::= { docsBpi2CmtsBaseEntry 1 } + + docsBpi2CmtsDefaultTEKLifetime OBJECT-TYPE + SYNTAX Integer32 (1..604800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the default lifetime, in + seconds, that the CMTS assigns to a new Traffic Encryption + Key (TEK). + This object value persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.2." + DEFVAL { 43200 } + ::= { docsBpi2CmtsBaseEntry 2 } + + docsBpi2CmtsDefaultSelfSignedManufCertTrust OBJECT-TYPE + + + + SYNTAX INTEGER { + trusted (1), + untrusted (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines the default trust of + self-signed manufacturer certificate entries, contained + in docsBpi2CmtsCACertTable, and created after this + object is set. + This object need not persist after re-initialization + of the managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + ::= { docsBpi2CmtsBaseEntry 3 } + + docsBpi2CmtsCheckCertValidityPeriods OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' causes all chained and + root certificates in the chain to have their validity + periods checked against the current time of day, when + the CMTS receives an Authorization Request from the + CM. + A 'false' setting causes all certificates in the chain + not to have their validity periods checked against the + current time of day. + This object need not persist after re-initialization + of the managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.2" + ::= { docsBpi2CmtsBaseEntry 4 } + + docsBpi2CmtsAuthentInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authentication Information message + from any CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmtsBaseEntry 5 } + + docsBpi2CmtsAuthRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authorization Request message from any + CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmtsBaseEntry 6 } + + docsBpi2CmtsAuthReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reply message to any + CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmtsBaseEntry 7 } + + docsBpi2CmtsAuthRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reject message to any + + + + CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmtsBaseEntry 8 } + + docsBpi2CmtsAuthInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times + the CMTS has transmitted an Authorization Invalid message + to any CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmtsBaseEntry 9 } + + docsBpi2CmtsSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an SA Map Request message from any CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmtsBaseEntry 10 } + + docsBpi2CmtsSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reply message to any CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmtsBaseEntry 11 } + + docsBpi2CmtsSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reject message to any CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmtsBaseEntry 12 } + + -- + -- The CMTS Authorization Table, indexed by ifIndex and CM MAC + -- address + -- + + docsBpi2CmtsAuthTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each CM + authorization association. The CMTS maintains one + authorization association with each Baseline Privacy- + enabled CM, registered on each CMTS MAC interface, + regardless of whether the CM is authorized or rejected." + ::= { docsBpi2CmtsObjects 2 } + + docsBpi2CmtsAuthEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsAuthEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Each entry contains objects describing attributes of + one authorization association. The CMTS MUST create one + entry per CM per MAC interface, based on the receipt of an + Authorization Request message, and MUST not delete the + entry until the CM loses registration." + INDEX { ifIndex, docsBpi2CmtsAuthCmMacAddress } + ::= { docsBpi2CmtsAuthTable 1 } + + DocsBpi2CmtsAuthEntry ::= SEQUENCE { + docsBpi2CmtsAuthCmMacAddress MacAddress, + docsBpi2CmtsAuthCmBpiVersion INTEGER, + docsBpi2CmtsAuthCmPublicKey OCTET STRING, + docsBpi2CmtsAuthCmKeySequenceNumber Integer32, + docsBpi2CmtsAuthCmExpiresOld DateAndTime, + docsBpi2CmtsAuthCmExpiresNew DateAndTime, + docsBpi2CmtsAuthCmLifetime Integer32, + docsBpi2CmtsAuthCmReset INTEGER, + docsBpi2CmtsAuthCmInfos Counter32, + docsBpi2CmtsAuthCmRequests Counter32, + docsBpi2CmtsAuthCmReplies Counter32, + docsBpi2CmtsAuthCmRejects Counter32, + docsBpi2CmtsAuthCmInvalids Counter32, + docsBpi2CmtsAuthRejectErrorCode INTEGER, + docsBpi2CmtsAuthRejectErrorString SnmpAdminString, + docsBpi2CmtsAuthInvalidErrorCode INTEGER, + docsBpi2CmtsAuthInvalidErrorString SnmpAdminString, + docsBpi2CmtsAuthPrimarySAId DocsSAIdOrZero, + docsBpi2CmtsAuthBpkmCmCertValid INTEGER, + docsBpi2CmtsAuthBpkmCmCert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmtsAuthCACertIndexPtr Unsigned32 + } + + docsBpi2CmtsAuthCmMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the physical address of + the CM to which the authorization association applies." + ::= { docsBpi2CmtsAuthEntry 1 } + + docsBpi2CmtsAuthCmBpiVersion OBJECT-TYPE + SYNTAX INTEGER { + bpi (0), + bpiPlus (1) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the version of Baseline + Privacy for which this CM has registered. The value + 'bpiplus' represents the value of BPI-Version Attribute of + the Baseline Privacy Key Management BPKM attribute + BPI-Version (1). The value 'bpi' is used to represent the + CM registered using DOCSIS 1.0 Baseline Privacy." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.22; ANSI/SCTE 22-2 2002(formerly DSS 02-03) + Data-Over-Cable Service Interface Specification DOCSIS 1.0 + Baseline Privacy Interface (BPI)" + ::= { docsBpi2CmtsAuthEntry 2 } + + docsBpi2CmtsAuthCmPublicKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..524)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is a DER-encoded + RSAPublicKey ASN.1 type string, as defined in the RSA + Encryption Standard (PKCS #1), corresponding to the + public key of the CM. This is the zero-length OCTET + STRING if the CMTS does not retain the public key." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.4." + ::= { docsBpi2CmtsAuthEntry 3 } + + docsBpi2CmtsAuthCmKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent + authorization key sequence number for this CM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.10." + ::= { docsBpi2CmtsAuthEntry 4 } + + docsBpi2CmtsAuthCmExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the actual clock time + for expiration of the immediate predecessor of the most + recent authorization key for this FSM. If this FSM has only + one authorization key, then the value is the time of + activation of this FSM. + Note: This object has no meaning for CMs running in BPI + mode; therefore, this object is not instantiated for entries + associated to those CMs." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmtsAuthEntry 5 } + + docsBpi2CmtsAuthCmExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock + time for expiration of the most recent authorization key + for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmtsAuthEntry 6 } + + docsBpi2CmtsAuthCmLifetime OBJECT-TYPE + SYNTAX Integer32 (1..6048000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the lifetime, in seconds, + that the CMTS assigns to an authorization key for this CM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2 and Appendix A.2." + ::= { docsBpi2CmtsAuthEntry 7 } + + docsBpi2CmtsAuthCmReset OBJECT-TYPE + SYNTAX INTEGER { + noResetRequested(1), + invalidateAuth(2), + sendAuthInvalid(3), + invalidateTeks(4) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Setting this object to invalidateAuth(2) causes the + CMTS to invalidate the current CM authorization key(s), but + not to transmit an Authorization Invalid message nor to + invalidate the primary SAID's TEKs. Setting this object to + sendAuthInvalid(3) causes the CMTS to invalidate the + current CM authorization key(s), and to transmit an + Authorization Invalid message to the CM, but not to + invalidate the primary SAID's TEKs. Setting this object to + invalidateTeks(4) causes the CMTS to invalidate the current + CM authorization key(s), to transmit an Authorization + Invalid message to the CM, and to invalidate the TEKs + associated with this CM's primary SAID. + For BPI mode, substitute all of the CM's unicast + TEKs for the primary SAID's TEKs in the previous + paragraph. + Reading this object returns the most recently set + value of this object or, if the object has not been set + since entry creation, returns noResetRequested(1)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.3.4, 4.1.2.3.5, and 4.1.3.3.5." + ::= { docsBpi2CmtsAuthEntry 8 } + + docsBpi2CmtsAuthCmInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authentication Information message + from this CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmtsAuthEntry 9 } + + docsBpi2CmtsAuthCmRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authorization Request message from + + + + this CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmtsAuthEntry 10 } + + docsBpi2CmtsAuthCmReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reply message to this + CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmtsAuthEntry 11 } + + docsBpi2CmtsAuthCmRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reject message to + this CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmtsAuthEntry 12 } + + docsBpi2CmtsAuthCmInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Invalid message to + this CM. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmtsAuthEntry 13 } + + docsBpi2CmtsAuthRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSaid(4), + permanentAuthorizationFailure(8), + timeOfDayNotAcquired(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Reject message transmitted to the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Reject message has been + transmitted to the CM since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.3 and 4.2.2.15." + ::= { docsBpi2CmtsAuthEntry 14 } + + docsBpi2CmtsAuthRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Reject message transmitted to the + CM. This is a zero length string if no Authorization + Reject message has been transmitted to the CM since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.3 and 4.2.2.6." + ::= { docsBpi2CmtsAuthEntry 15 } + + docsBpi2CmtsAuthInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Invalid message transmitted to the CM. This + has the value unknown(2) if the last Error-Code value was 0 + and none(1) if no Authorization Invalid message has been + transmitted to the CM since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.15." + ::= { docsBpi2CmtsAuthEntry 16 } + + docsBpi2CmtsAuthInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Invalid message transmitted to + the CM. This is a zero length string if no Authorization + Invalid message has been transmitted to the CM since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.6." + ::= { docsBpi2CmtsAuthEntry 17 } + + docsBpi2CmtsAuthPrimarySAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Primary Security + Association identifier. For BPI mode, the value must be + + + + any unicast SID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmtsAuthEntry 18 } + + docsBpi2CmtsAuthBpkmCmCertValid OBJECT-TYPE + SYNTAX INTEGER { + unknown (0), + validCmChained (1), + validCmTrusted (2), + invalidCmUntrusted (3), + invalidCAUntrusted (4), + invalidCmOther (5), + invalidCAOther (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the reason why a CM's certificate is deemed + valid or invalid. + Return unknown(0) if the CM is running BPI mode. + ValidCmChained(1) means the certificate is valid + because it chains to a valid certificate. + ValidCmTrusted(2) means the certificate is valid + because it has been provisioned (in the + docsBpi2CmtsProvisionedCmCert table) to be trusted. + InvalidCmUntrusted(3) means the certificate is invalid + because it has been provisioned (in the + docsBpi2CmtsProvisionedCmCert table) to be untrusted. + InvalidCAUntrusted(4) means the certificate is invalid + because it chains to an untrusted certificate. + InvalidCmOther(5) and InvalidCAOther(6) refer to + errors in parsing, validity periods, etc., which are + attributable to the CM certificate or its chain, + respectively; additional information may be found + in docsBpi2AuthRejectErrorString for these types + of errors." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.2." + ::= { docsBpi2CmtsAuthEntry 19 } + + docsBpi2CmtsAuthBpkmCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The X509 CM Certificate sent as part of a BPKM + Authorization Request. + Note: The zero-length OCTET STRING must be returned if the + Entire certificate is not retained in the CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsAuthEntry 20 } + + docsBpi2CmtsAuthCACertIndexPtr OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A row index into docsBpi2CmtsCACertTable. + Returns the index in docsBpi2CmtsCACertTable to which + CA certificate this CM is chained to. A value of + 0 means it could not be found or not applicable." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsAuthEntry 21 } + + -- + -- The CMTS TEK Table, indexed by ifIndex and SAID + -- + + docsBpi2CmtsTEKTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each + Traffic Encryption Key (TEK) association. The CMTS + Maintains one TEK association per SAID on each CMTS MAC + interface." + ::= { docsBpi2CmtsObjects 3 } + + docsBpi2CmtsTEKEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one TEK association on a particular CMTS MAC interface. The + CMTS MUST create one entry per SAID per MAC interface, + based on the receipt of a Key Request message, and MUST not + delete the entry before the CM authorization for the SAID + + + + permanently expires." + INDEX { ifIndex, docsBpi2CmtsTEKSAId } + ::= { docsBpi2CmtsTEKTable 1 } + + DocsBpi2CmtsTEKEntry ::= SEQUENCE { + docsBpi2CmtsTEKSAId DocsSAId, + docsBpi2CmtsTEKSAType DocsBpkmSAType, + docsBpi2CmtsTEKDataEncryptAlg DocsBpkmDataEncryptAlg, + docsBpi2CmtsTEKDataAuthentAlg DocsBpkmDataAuthentAlg, + docsBpi2CmtsTEKLifetime Integer32, + docsBpi2CmtsTEKKeySequenceNumber Integer32, + docsBpi2CmtsTEKExpiresOld DateAndTime, + docsBpi2CmtsTEKExpiresNew DateAndTime, + docsBpi2CmtsTEKReset TruthValue, + docsBpi2CmtsKeyRequests Counter32, + docsBpi2CmtsKeyReplies Counter32, + docsBpi2CmtsKeyRejects Counter32, + docsBpi2CmtsTEKInvalids Counter32, + docsBpi2CmtsKeyRejectErrorCode INTEGER, + docsBpi2CmtsKeyRejectErrorString SnmpAdminString, + docsBpi2CmtsTEKInvalidErrorCode INTEGER, + docsBpi2CmtsTEKInvalidErrorString SnmpAdminString + } + + docsBpi2CmtsTEKSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the DOCSIS Security + Association ID (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmtsTEKEntry 1 } + + docsBpi2CmtsTEKSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the type of security + association. 'dynamic' does not apply to CMs running in + BPI mode. Unicast BPI TEKs must utilize the 'primary' + encoding, and multicast BPI TEKs must utilize the 'static' + encoding." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 2.1.3." + ::= { docsBpi2CmtsTEKEntry 2 } + + docsBpi2CmtsTEKDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmtsTEKEntry 3 } + + docsBpi2CmtsTEKDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data authentication + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmtsTEKEntry 4 } + + docsBpi2CmtsTEKLifetime OBJECT-TYPE + SYNTAX Integer32 (1..604800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the lifetime, in + seconds, that the CMTS assigns to keys for this TEK + association." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.5 and Appendix A.2." + ::= { docsBpi2CmtsTEKEntry 5 } + + + docsBpi2CmtsTEKKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent TEK + + + + key sequence number for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.2.10 and 4.2.2.13." + ::= { docsBpi2CmtsTEKEntry 6 } + + docsBpi2CmtsTEKExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time + for expiration of the immediate predecessor of the most + recent TEK for this FSM. If this FSM has only one TEK, then + the value is the time of activation of this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmtsTEKEntry 7 } + + docsBpi2CmtsTEKExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time + for expiration of the most recent TEK for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmtsTEKEntry 8 } + + docsBpi2CmtsTEKReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' causes the CMTS to + invalidate all currently active TEKs and to generate new + TEKs for the associated SAID; the CMTS MAY also generate + unsolicited TEK Invalid messages, to optimize the TEK + synchronization between the CMTS and the CM(s). Reading + this object always returns FALSE." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.3.5." + ::= { docsBpi2CmtsTEKEntry 9 } + + + + + docsBpi2CmtsKeyRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received a Key Request message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.4." + ::= { docsBpi2CmtsTEKEntry 10 } + + docsBpi2CmtsKeyReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a Key Reply message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.5." + ::= { docsBpi2CmtsTEKEntry 11 } + + docsBpi2CmtsKeyRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a Key Reject message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.6." + ::= { docsBpi2CmtsTEKEntry 12 } + + + + + docsBpi2CmtsTEKInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a TEK Invalid message. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.8." + ::= { docsBpi2CmtsTEKEntry 13 } + + docsBpi2CmtsKeyRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSaid(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent Key Reject + message sent in response to a Key Request for this SAID. + This has the value unknown(2) if the last Error-Code value + was 0 and none(1) if no Key Reject message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.6 and 4.2.2.15." + ::= { docsBpi2CmtsTEKEntry 14 } + + docsBpi2CmtsKeyRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent Key Reject message sent in response to a + Key Request for this SAID. This is a zero length string if + no Key Reject message has been received since + registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.6 and 4.2.2.6." + ::= { docsBpi2CmtsTEKEntry 15 } + + docsBpi2CmtsTEKInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent TEK + Invalid message sent in association with this SAID. This + has the value unknown(2) if the last Error-Code value was 0 + and none(1) if no TEK Invalid message has been received + since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.8 and 4.2.2.15." + ::= { docsBpi2CmtsTEKEntry 16 } + + docsBpi2CmtsTEKInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent TEK Invalid message sent in association + with this SAID. This is a zero length string if no TEK + Invalid message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.8 and 4.2.2.6." + ::= { docsBpi2CmtsTEKEntry 17 } + + -- + -- The CMTS Multicast Objects Group + -- + + docsBpi2CmtsMulticastObjects OBJECT IDENTIFIER + ::= { docsBpi2CmtsObjects 4 } + + -- + -- The CMTS IP Multicast Mapping Table, indexed by + -- docsBpi2CmtsIpMulticastIndex, and by ifIndex + -- + + + + docsBpi2CmtsIpMulticastMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps multicast IP addresses to SAIDs. + If a multicast IP address is mapped by multiple rows + in the table, the row with the lowest + docsBpi2CmtsIpMulticastIndex must be utilized for the + mapping." + ::= { docsBpi2CmtsMulticastObjects 1 } + + docsBpi2CmtsIpMulticastMapEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the mapping of + a set of multicast IP address and the mask to one SAID + associated to a CMTS MAC Interface, as well as associated + message counters and error information." + INDEX { ifIndex, docsBpi2CmtsIpMulticastIndex } + ::= { docsBpi2CmtsIpMulticastMapTable 1 } + + DocsBpi2CmtsIpMulticastMapEntry ::= SEQUENCE { + docsBpi2CmtsIpMulticastIndex Unsigned32, + docsBpi2CmtsIpMulticastAddressType InetAddressType, + docsBpi2CmtsIpMulticastAddress InetAddress, + docsBpi2CmtsIpMulticastMask InetAddress, + docsBpi2CmtsIpMulticastSAId DocsSAIdOrZero, + docsBpi2CmtsIpMulticastSAType DocsBpkmSAType, + docsBpi2CmtsIpMulticastDataEncryptAlg + DocsBpkmDataEncryptAlg, + docsBpi2CmtsIpMulticastDataAuthentAlg + DocsBpkmDataAuthentAlg, + docsBpi2CmtsIpMulticastSAMapRequests Counter32, + docsBpi2CmtsIpMulticastSAMapReplies Counter32, + docsBpi2CmtsIpMulticastSAMapRejects Counter32, + docsBpi2CmtsIpMulticastSAMapRejectErrorCode + INTEGER, + docsBpi2CmtsIpMulticastSAMapRejectErrorString + SnmpAdminString, + docsBpi2CmtsIpMulticastMapControl RowStatus, + docsBpi2CmtsIpMulticastMapStorageType StorageType + } + + docsBpi2CmtsIpMulticastIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row. Conceptual rows having the + value 'permanent' need not allow write-access to any + columnar objects in the row." + ::= { docsBpi2CmtsIpMulticastMapEntry 1 } + + docsBpi2CmtsIpMulticastAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address for + docsBpi2CmtsIpMulticastAddress + and docsBpi2CmtsIpMulticastMask." + DEFVAL { ipv4 } + ::= { docsBpi2CmtsIpMulticastMapEntry 2 } + + docsBpi2CmtsIpMulticastAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the IP multicast address + to be mapped, in conjunction with + docsBpi2CmtsIpMulticastMask. The type of this address is + determined by the value of the object + docsBpi2CmtsIpMulticastAddressType." + ::= { docsBpi2CmtsIpMulticastMapEntry 3 } + + docsBpi2CmtsIpMulticastMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the IP multicast address mask + for this row. + An IP multicast address matches this row if the logical + AND of the address with docsBpi2CmtsIpMulticastMask is + identical to the logical AND of + docsBpi2CmtsIpMulticastAddr with + docsBpi2CmtsIpMulticastMask. The type of this address is + determined by the value of the object + docsBpi2CmtsIpMulticastAddressType. + Note: For IPv6, this object need not represent a + contiguous netmask; e.g., to associate a SAID to a + multicast group matching 'any' multicast scope. The TC + + + + InetAddressPrefixLength is not used, as it only + represents contiguous netmask." + ::= { docsBpi2CmtsIpMulticastMapEntry 4 } + + docsBpi2CmtsIpMulticastSAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the multicast SAID to be + used in this IP multicast address mapping entry." + ::= { docsBpi2CmtsIpMulticastMapEntry 5 } + + docsBpi2CmtsIpMulticastSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the type of security + association. 'dynamic' does not apply to CMs running in + BPI mode. Unicast BPI TEKs must utilize the 'primary' + encoding, and multicast BPI TEKs must utilize the 'static' + encoding. By default, SNMP created entries set this object + to 'static' if not set at row creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmtsIpMulticastMapEntry 6 } + + docsBpi2CmtsIpMulticastDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + DEFVAL { des56CbcMode } + ::= { docsBpi2CmtsIpMulticastMapEntry 7 } + + docsBpi2CmtsIpMulticastDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the data authentication + + + + algorithm for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + DEFVAL { none } + ::= { docsBpi2CmtsIpMulticastMapEntry 8 } + + docsBpi2CmtsIpMulticastSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an SA Map Request message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmtsIpMulticastMapEntry 9 } + + docsBpi2CmtsIpMulticastSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reply message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmtsIpMulticastMapEntry 10 } + + docsBpi2CmtsIpMulticastSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reject message for this IP. + 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." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmtsIpMulticastMapEntry 11 } + + docsBpi2CmtsIpMulticastSAMapRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + noAuthForRequestedDSFlow(9), + dsFlowNotMappedToSA(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent SA Map + Reject message sent in response to an SA Map Request for + this IP. It has the value unknown(2) if the last Error-Code + Value was 0 and none(1) if no SA MAP Reject message has + been received since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.15." + ::= { docsBpi2CmtsIpMulticastMapEntry 12 } + + docsBpi2CmtsIpMulticastSAMapRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent SA Map Reject message sent in response to + an SA Map Request for this IP. It is a zero length string + if no SA Map Reject message has been received since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.6." + ::= { docsBpi2CmtsIpMulticastMapEntry 13 } + + docsBpi2CmtsIpMulticastMapControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object controls and reflects the IP multicast + address mapping entry. There is no restriction on the + ability to change values in this row while the row is + active. + A created row can be set to active only after the + Corresponding instances of docsBpi2CmtsIpMulticastAddress, + docsBpi2CmtsIpMulticastMask, docsBpi2CmtsIpMulticastSAId, + and docsBpi2CmtsIpMulticastSAType have all been set." + ::= { docsBpi2CmtsIpMulticastMapEntry 14 } + + docsBpi2CmtsIpMulticastMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + ::= { docsBpi2CmtsIpMulticastMapEntry 15 } + + -- + -- The CMTS Multicast SAID Authorization Table, + -- indexed by ifIndex by + -- multicast SAID by CM MAC address + -- + + docsBpi2CmtsMulticastAuthTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsMulticastAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the multicast SAID + authorization for each CM on each CMTS MAC interface." + ::= { docsBpi2CmtsMulticastObjects 2 } + + docsBpi2CmtsMulticastAuthEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsMulticastAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the key + authorization of one cable modem for one multicast SAID + for one CMTS MAC interface. + Row entries persist after re-initialization of + the managed system." + INDEX { ifIndex, docsBpi2CmtsMulticastAuthSAId, + docsBpi2CmtsMulticastAuthCmMacAddress } + ::= { docsBpi2CmtsMulticastAuthTable 1 } + + + + DocsBpi2CmtsMulticastAuthEntry ::= SEQUENCE + { + docsBpi2CmtsMulticastAuthSAId DocsSAId, + docsBpi2CmtsMulticastAuthCmMacAddress MacAddress, + docsBpi2CmtsMulticastAuthControl RowStatus + } + + docsBpi2CmtsMulticastAuthSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the multicast SAID for + authorization." + ::= { docsBpi2CmtsMulticastAuthEntry 1 } + + docsBpi2CmtsMulticastAuthCmMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the MAC address of the CM + to which the multicast SAID authorization applies." + ::= { docsBpi2CmtsMulticastAuthEntry 2 } + + docsBpi2CmtsMulticastAuthControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row for the + authorization of multicast SAIDs to CMs." + ::= { docsBpi2CmtsMulticastAuthEntry 3 } + + -- + -- CMTS Cert Objects + -- + + docsBpi2CmtsCertObjects OBJECT IDENTIFIER + ::= { docsBpi2CmtsObjects 5 } + + -- + -- CMTS Provisioned CM Cert Table + -- + + docsBpi2CmtsProvisionedCmCertTable OBJECT-TYPE + SYNTAX SEQUENCE OF + DocsBpi2CmtsProvisionedCmCertEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of CM certificate trust entries provisioned + to the CMTS. The trust object for a certificate in this + table has an overriding effect on the validity object of a + certificate in the authorization table, as long as the + entire contents of the two certificates are identical." + ::= { docsBpi2CmtsCertObjects 1 } + + docsBpi2CmtsProvisionedCmCertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsProvisionedCmCertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the CMTS's provisioned CM certificate + table. Row entries persist after re-initialization of + the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I05-040407, Section 6.2.14" + INDEX { docsBpi2CmtsProvisionedCmCertMacAddress } + ::= { docsBpi2CmtsProvisionedCmCertTable 1 } + + DocsBpi2CmtsProvisionedCmCertEntry ::= SEQUENCE + { + docsBpi2CmtsProvisionedCmCertMacAddress MacAddress, + docsBpi2CmtsProvisionedCmCertTrust INTEGER, + docsBpi2CmtsProvisionedCmCertSource INTEGER, + docsBpi2CmtsProvisionedCmCertStatus RowStatus, + docsBpi2CmtsProvisionedCmCert + DocsX509ASN1DEREncodedCertificate + } + + docsBpi2CmtsProvisionedCmCertMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row." + ::= { docsBpi2CmtsProvisionedCmCertEntry 1 } + + docsBpi2CmtsProvisionedCmCertTrust OBJECT-TYPE + SYNTAX INTEGER { + trusted(1), + untrusted(2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Trust state for the provisioned CM certificate entry. + Note: Setting this object need only override the validity + of CM certificates sent in future authorization requests; + instantaneous effect need not occur." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1." + DEFVAL { untrusted } + ::= { docsBpi2CmtsProvisionedCmCertEntry 2 } + + docsBpi2CmtsProvisionedCmCertSource OBJECT-TYPE + SYNTAX INTEGER { + snmp(1), + configurationFile(2), + externalDatabase(3), + other(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates how the certificate reached the + CMTS. Other(4) means that it originated from a source not + identified above." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1." + ::= { docsBpi2CmtsProvisionedCmCertEntry 3 } + + docsBpi2CmtsProvisionedCmCertStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. Values in this row + cannot be changed while the row is 'active'." + ::= { docsBpi2CmtsProvisionedCmCertEntry 4 } + + docsBpi2CmtsProvisionedCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An X509 DER-encoded Certificate Authority + certificate. + Note: The zero-length OCTET STRING must be returned, on + + + + reads, if the entire certificate is not retained in the + CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsProvisionedCmCertEntry 5 } + + -- + -- CMTS CA Cert Table + -- + + docsBpi2CmtsCACertTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsCACertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of known Certificate Authority certificates + acquired by this device." + ::= { docsBpi2CmtsCertObjects 2 } + + docsBpi2CmtsCACertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsCACertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the Certificate Authority certificate + table. Row entries with the trust status 'trusted', + 'untrusted', or 'root' persist after re-initialization + of the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I05-040407, Section 6.2.14" + INDEX { docsBpi2CmtsCACertIndex } + ::= {docsBpi2CmtsCACertTable 1 } + + DocsBpi2CmtsCACertEntry ::= SEQUENCE { + docsBpi2CmtsCACertIndex Unsigned32, + docsBpi2CmtsCACertSubject SnmpAdminString, + docsBpi2CmtsCACertIssuer SnmpAdminString, + docsBpi2CmtsCACertSerialNumber OCTET STRING, + docsBpi2CmtsCACertTrust INTEGER, + docsBpi2CmtsCACertSource INTEGER, + docsBpi2CmtsCACertStatus RowStatus, + docsBpi2CmtsCACert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmtsCACertThumbprint OCTET STRING + } + + + + docsBpi2CmtsCACertIndex OBJECT-TYPE + SYNTAX Unsigned32 (1.. 4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this row." + ::= { docsBpi2CmtsCACertEntry 1 } + + docsBpi2CmtsCACertSubject OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subject name exactly as it is encoded in the + X509 certificate. + The organizationName portion of the certificate's subject + name must be present. All other fields are optional. Any + optional field present must be prepended with + (carriage return, U+000D) (line feed, U+000A). + Ordering of fields present must conform to the following: + + organizationName + countryName + stateOrProvinceName + localityName + organizationalUnitName + organizationalUnitName= + commonName" + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.4" + ::= { docsBpi2CmtsCACertEntry 2 } + + docsBpi2CmtsCACertIssuer OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The issuer name exactly as it is encoded in the + X509 certificate. + The commonName portion of the certificate's issuer + name must be present. All other fields are optional. Any + optional field present must be prepended with + (carriage return, U+000D) (line feed, U+000A). + Ordering of fields present must conform to the following: + + CommonName + countryName + + + + stateOrProvinceName + localityName + organizationName + organizationalUnitName + organizationalUnitName=" + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.4" + ::= { docsBpi2CmtsCACertEntry 3 } + + docsBpi2CmtsCACertSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This CA certificate's serial number, represented as + an octet string." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.2" + ::= { docsBpi2CmtsCACertEntry 4 } + + docsBpi2CmtsCACertTrust OBJECT-TYPE + SYNTAX INTEGER { + trusted (1), + untrusted (2), + chained (3), + root (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the trust status of this + certificate. Root certificates must be given root(4) + trust; manufacturer certificates must not be given root(4) + trust. Trust on root certificates must not change. + Note: Setting this object need only affect the validity of + CM certificates sent in future authorization requests; + instantaneous effect need not occur." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + DEFVAL { chained } + ::= { docsBpi2CmtsCACertEntry 5 } + + docsBpi2CmtsCACertSource OBJECT-TYPE + SYNTAX INTEGER { + snmp (1), + + + + configurationFile (2), + externalDatabase (3), + other (4), + authentInfo (5), + compiledIntoCode (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates how the certificate reached + the CMTS. Other(4) means that it originated from a source + not identified above." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + ::= { docsBpi2CmtsCACertEntry 6 } + + docsBpi2CmtsCACertStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. An attempt + to set writable columnar values while this row is active + behaves as follows: + - Sets to the object docsBpi2CmtsCACertTrust are allowed. + - Sets to the object docsBpi2CmtsCACert will return an + error of 'inconsistentValue'. + A newly created entry cannot be set to active until the + value of docsBpi2CmtsCACert is being set." + ::= { docsBpi2CmtsCACertEntry 7 } + + docsBpi2CmtsCACert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An X509 DER-encoded Certificate Authority + certificate. + To help identify certificates, either this object or + docsBpi2CmtsCACertThumbprint must be returned by a CMTS for + self-signed CA certificates. + + Note: The zero-length OCTET STRING must be returned, on + reads, if the entire certificate is not retained in the + CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 9.2." + ::= { docsBpi2CmtsCACertEntry 8 } + + docsBpi2CmtsCACertThumbprint OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SHA-1 hash of a CA certificate. + To help identify certificates, either this object or + docsBpi2CmtsCACert must be returned by a CMTS for + self-signed CA certificates. + + Note: The zero-length OCTET STRING must be returned, on + reads, if the CA certificate thumb print is not retained + in the CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.3" + ::= { docsBpi2CmtsCACertEntry 9 } + + -- + -- Authenticated Software Download Objects + -- + + -- + -- Note: the authenticated software download objects are a + -- CM requirement only. + -- + + docsBpi2CodeDownloadControl OBJECT IDENTIFIER + ::= { docsBpi2MIBObjects 4 } + + docsBpi2CodeDownloadStatusCode OBJECT-TYPE + SYNTAX INTEGER { + configFileCvcVerified (1), + configFileCvcRejected (2), + snmpCvcVerified (3), + snmpCvcRejected (4), + codeFileVerified (5), + codeFileRejected (6), + other (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the result of the latest config + file CVC verification, SNMP CVC verification, or code file + + + + verification." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections D.3.3.2 and D.3.5.1." + ::= { docsBpi2CodeDownloadControl 1 } + + docsBpi2CodeDownloadStatusString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the additional + information to the status code. The value will include + the error code and error description, which will be defined + separately." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.7" + ::= { docsBpi2CodeDownloadControl 2 } + + docsBpi2CodeMfgOrgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + organizationName." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 3 } + + docsBpi2CodeMfgCodeAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + current codeAccessStart value. This value will always + refer to Greenwich Mean Time (GMT), and the value + format must contain TimeZone information (fields 8-10)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 4 } + + docsBpi2CodeMfgCvcAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + current cvcAccessStart value. This value will always + refer to Greenwich Mean Time (GMT), and the value + format must contain TimeZone information (fields 8-10)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 5 } + + docsBpi2CodeCoSignerOrgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's + organizationName. The value is a zero length string if + the co-signer is not specified." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 6 } + + docsBpi2CodeCoSignerCodeAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's current + codeAccessStart value. This value will always refer to + Greenwich Mean Time (GMT), and the value format must contain + TimeZone information (fields 8-10). + If docsBpi2CodeCoSignerOrgName is a zero + length string, the value of this object is meaningless." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 7 } + + docsBpi2CodeCoSignerCvcAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's current + cvcAccessStart value. This value will always refer to + + + + Greenwich Mean Time (GMT), and the value format must contain + TimeZone information (fields 8-10). + If docsBpi2CodeCoSignerOrgName is a zero + length string, the value of this object is meaningless." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 8 } + + docsBpi2CodeCvcUpdate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting a CVC to this object triggers the device + to verify the CVC and update the cvcAccessStart values. + The content of this object is then discarded. + If the device is not enabled to upgrade codefiles, or if + the CVC verification fails, the CVC will be rejected. + Reading this object always returns the zero-length OCTET + STRING." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.3.2.2." + ::= { docsBpi2CodeDownloadControl 9 } + + -- + -- The BPI+ MIB Conformance Statements (with a placeholder for + -- notifications) + -- + + docsBpi2Notification OBJECT IDENTIFIER + ::= { docsBpi2MIB 0 } + docsBpi2Conformance OBJECT IDENTIFIER + ::= { docsBpi2MIB 2 } + docsBpi2Compliances OBJECT IDENTIFIER + ::= { docsBpi2Conformance 1 } + docsBpi2Groups OBJECT IDENTIFIER + ::= { docsBpi2Conformance 2 } + + + docsBpi2CmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "This is the compliance statement for CMs that + implement the DOCSIS Baseline Privacy Interface Plus." + + MODULE -- docsBpi2MIB + + + + -- unconditionally mandatory group + MANDATORY-GROUPS { + docsBpi2CmGroup, + docsBpi2CodeDownloadGroup + } + + -- constrain on Encryption algorithms + OBJECT docsBpi2CmTEKDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + DESCRIPTION + "It is compliant to support des56CbcMode(1) and + des40CbcMode(2) for data encryption algorithms." + + -- constrain on Integrity algorithms + OBJECT docsBpi2CmTEKDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + -- constrain on IP addressing + OBJECT docsBpi2CmIpMulticastAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + -- constrain on IP addressing + OBJECT docsBpi2CmIpMulticastAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses Other address types support may be defined in + future versions of this MIB module." + + -- constrain on Encryption algorithms + OBJECT docsBpi2CmCryptoSuiteDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + + + + } + DESCRIPTION + "It is compliant to only support des56CbcMode(1) + and des40CbcMode(2) for data encryption algorithms." + + -- constrain on Integrity algorithms + OBJECT docsBpi2CmCryptoSuiteDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + ::= { docsBpi2Compliances 1 } + + + docsBpi2CmtsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "This is the compliance statement for CMTSs that + implement the DOCSIS Baseline Privacy Interface Plus." + + MODULE -- docsBpi2MIB + -- unconditionally mandatory group + MANDATORY-GROUPS { + docsBpi2CmtsGroup + } + + -- unconditionally optional group + GROUP docsBpi2CodeDownloadGroup + DESCRIPTION + "This group is optional for CMTSes. The implementation + decision of this group is left to the vendor" + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsDefaultAuthLifetime + SYNTAX Integer32 (86400..6048000) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsDefaultTEKLifetime + SYNTAX Integer32 (1800..604800) + DESCRIPTION + + + + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsAuthCmLifetime + SYNTAX Integer32 (86400..6048000) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on Encryption algorithms + +OBJECT docsBpi2CmtsTEKDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + DESCRIPTION + "It is compliant to only support des56CbcMode(1) + and des40CbcMode(2) for data encryption." + + -- constrain on Integrity algorithms + +OBJECT docsBpi2CmtsTEKDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsTEKLifetime + SYNTAX Integer32 (1800..604800) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on access + -- constrain on IP Addressing + + OBJECT docsBpi2CmtsIpMulticastAddressType + SYNTAX InetAddressType { ipv4(1) } + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + OBJECT docsBpi2CmtsIpMulticastAddress + SYNTAX InetAddress (SIZE(4)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + OBJECT docsBpi2CmtsIpMulticastMask + SYNTAX InetAddress (SIZE(4)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + -- constrain on access + + OBJECT docsBpi2CmtsIpMulticastSAId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT docsBpi2CmtsIpMulticastSAType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- constrain on access + -- constrain on Encryption algorithms + + OBJECT docsBpi2CmtsIpMulticastDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + It is compliant to only support des56CbcMode(1) + + + + and des40CbcMode(2) for data encryption" + + -- constrain on access + -- constrain on Integrity algorithms + + OBJECT docsBpi2CmtsIpMulticastDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + It is compliant to not support data message + authentication algorithms." + + -- constrain on access + + OBJECT docsBpi2CmtsMulticastAuthControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { docsBpi2Compliances 2 } + + docsBpi2CmGroup OBJECT-GROUP + OBJECTS { + docsBpi2CmPrivacyEnable, + docsBpi2CmPublicKey, + docsBpi2CmAuthState, + docsBpi2CmAuthKeySequenceNumber, + docsBpi2CmAuthExpiresOld, + docsBpi2CmAuthExpiresNew, + docsBpi2CmAuthReset, + docsBpi2CmAuthGraceTime, + docsBpi2CmTEKGraceTime, + docsBpi2CmAuthWaitTimeout, + docsBpi2CmReauthWaitTimeout, + docsBpi2CmOpWaitTimeout, + docsBpi2CmRekeyWaitTimeout, + docsBpi2CmAuthRejectWaitTimeout, + docsBpi2CmSAMapWaitTimeout, + docsBpi2CmSAMapMaxRetries, + docsBpi2CmAuthentInfos, + docsBpi2CmAuthRequests, + docsBpi2CmAuthReplies, + docsBpi2CmAuthRejects, + docsBpi2CmAuthInvalids, + docsBpi2CmAuthRejectErrorCode, + + + + docsBpi2CmAuthRejectErrorString, + docsBpi2CmAuthInvalidErrorCode, + docsBpi2CmAuthInvalidErrorString, + docsBpi2CmTEKSAType, + docsBpi2CmTEKDataEncryptAlg, + docsBpi2CmTEKDataAuthentAlg, + docsBpi2CmTEKState, + docsBpi2CmTEKKeySequenceNumber, + docsBpi2CmTEKExpiresOld, + docsBpi2CmTEKExpiresNew, + docsBpi2CmTEKKeyRequests, + docsBpi2CmTEKKeyReplies, + docsBpi2CmTEKKeyRejects, + docsBpi2CmTEKInvalids, + docsBpi2CmTEKAuthPends, + docsBpi2CmTEKKeyRejectErrorCode, + docsBpi2CmTEKKeyRejectErrorString, + docsBpi2CmTEKInvalidErrorCode, + docsBpi2CmTEKInvalidErrorString, + docsBpi2CmIpMulticastAddressType, + docsBpi2CmIpMulticastAddress, + docsBpi2CmIpMulticastSAId, + docsBpi2CmIpMulticastSAMapState, + docsBpi2CmIpMulticastSAMapRequests, + docsBpi2CmIpMulticastSAMapReplies, + docsBpi2CmIpMulticastSAMapRejects, + docsBpi2CmIpMulticastSAMapRejectErrorCode, + docsBpi2CmIpMulticastSAMapRejectErrorString, + docsBpi2CmDeviceCmCert, + docsBpi2CmDeviceManufCert, + docsBpi2CmCryptoSuiteDataEncryptAlg, + docsBpi2CmCryptoSuiteDataAuthentAlg + } + STATUS current + DESCRIPTION + "This collection of objects provides CM BPI+ status + and control." + ::= { docsBpi2Groups 1 } + + docsBpi2CmtsGroup OBJECT-GROUP + OBJECTS { + docsBpi2CmtsDefaultAuthLifetime, + docsBpi2CmtsDefaultTEKLifetime, + docsBpi2CmtsDefaultSelfSignedManufCertTrust, + docsBpi2CmtsCheckCertValidityPeriods, + docsBpi2CmtsAuthentInfos, + docsBpi2CmtsAuthRequests, + docsBpi2CmtsAuthReplies, + + + + docsBpi2CmtsAuthRejects, + docsBpi2CmtsAuthInvalids, + docsBpi2CmtsSAMapRequests, + docsBpi2CmtsSAMapReplies, + docsBpi2CmtsSAMapRejects, + docsBpi2CmtsAuthCmBpiVersion, + docsBpi2CmtsAuthCmPublicKey, + docsBpi2CmtsAuthCmKeySequenceNumber, + docsBpi2CmtsAuthCmExpiresOld, + docsBpi2CmtsAuthCmExpiresNew, + docsBpi2CmtsAuthCmLifetime, + docsBpi2CmtsAuthCmReset, + docsBpi2CmtsAuthCmInfos, + docsBpi2CmtsAuthCmRequests, + docsBpi2CmtsAuthCmReplies, + docsBpi2CmtsAuthCmRejects, + docsBpi2CmtsAuthCmInvalids, + docsBpi2CmtsAuthRejectErrorCode, + docsBpi2CmtsAuthRejectErrorString, + docsBpi2CmtsAuthInvalidErrorCode, + docsBpi2CmtsAuthInvalidErrorString, + docsBpi2CmtsAuthPrimarySAId, + docsBpi2CmtsAuthBpkmCmCertValid, + docsBpi2CmtsAuthBpkmCmCert, + docsBpi2CmtsAuthCACertIndexPtr, + docsBpi2CmtsTEKSAType, + docsBpi2CmtsTEKDataEncryptAlg, + docsBpi2CmtsTEKDataAuthentAlg, + docsBpi2CmtsTEKLifetime, + docsBpi2CmtsTEKKeySequenceNumber, + docsBpi2CmtsTEKExpiresOld, + docsBpi2CmtsTEKExpiresNew, + docsBpi2CmtsTEKReset, + docsBpi2CmtsKeyRequests, + docsBpi2CmtsKeyReplies, + docsBpi2CmtsKeyRejects, + docsBpi2CmtsTEKInvalids, + docsBpi2CmtsKeyRejectErrorCode, + docsBpi2CmtsKeyRejectErrorString, + docsBpi2CmtsTEKInvalidErrorCode, + docsBpi2CmtsTEKInvalidErrorString, + docsBpi2CmtsIpMulticastAddressType, + docsBpi2CmtsIpMulticastAddress, + docsBpi2CmtsIpMulticastMask, + docsBpi2CmtsIpMulticastSAId, + docsBpi2CmtsIpMulticastSAType, + docsBpi2CmtsIpMulticastDataEncryptAlg, + docsBpi2CmtsIpMulticastDataAuthentAlg, + + + + docsBpi2CmtsIpMulticastSAMapRequests, + docsBpi2CmtsIpMulticastSAMapReplies, + docsBpi2CmtsIpMulticastSAMapRejects, + docsBpi2CmtsIpMulticastSAMapRejectErrorCode, + docsBpi2CmtsIpMulticastSAMapRejectErrorString, + docsBpi2CmtsIpMulticastMapControl, + docsBpi2CmtsIpMulticastMapStorageType, + docsBpi2CmtsMulticastAuthControl, + docsBpi2CmtsProvisionedCmCertTrust, + docsBpi2CmtsProvisionedCmCertSource, + docsBpi2CmtsProvisionedCmCertStatus, + docsBpi2CmtsProvisionedCmCert, + docsBpi2CmtsCACertSubject, + docsBpi2CmtsCACertIssuer, + docsBpi2CmtsCACertSerialNumber, + docsBpi2CmtsCACertTrust, + docsBpi2CmtsCACertSource, + docsBpi2CmtsCACertStatus, + docsBpi2CmtsCACert, + docsBpi2CmtsCACertThumbprint + } + STATUS current + DESCRIPTION + "This collection of objects provides CMTS BPI+ status + and control." + ::= { docsBpi2Groups 2 } + + docsBpi2CodeDownloadGroup OBJECT-GROUP + OBJECTS { + docsBpi2CodeDownloadStatusCode, + docsBpi2CodeDownloadStatusString, + docsBpi2CodeMfgOrgName, + docsBpi2CodeMfgCodeAccessStart, + docsBpi2CodeMfgCvcAccessStart, + docsBpi2CodeCoSignerOrgName, + docsBpi2CodeCoSignerCodeAccessStart, + docsBpi2CodeCoSignerCvcAccessStart, + docsBpi2CodeCvcUpdate + } + STATUS current + DESCRIPTION + "This collection of objects provides authenticated + software download support." + ::= { docsBpi2Groups 3 } + + END diff --git a/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB b/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB new file mode 100644 index 0000000..d943fcf --- /dev/null +++ b/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB @@ -0,0 +1,1532 @@ +DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, + + + + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsDevSwFilename, + docsDevSwServer, + docsDevServerDhcp, + docsDevServerTime + FROM DOCS-CABLE-DEVICE-MIB -- RFC 2669 + + docsIfCmCmtsAddress, + docsIfCmtsCmStatusMacAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType, + docsIfCmtsCmStatusDocsisRegMode, + docsIfCmtsCmStatusModulationType + FROM DOCS-IF-MIB -- RFC 4546 + + ifPhysAddress + FROM IF-MIB; -- RFC 2863 + + docsDevNotifMIB MODULE-IDENTITY + + LAST-UPDATED "200605240000Z" -- May 24, 2006 + ORGANIZATION "IETF IP over Cable Data Network + Working Group" + + CONTACT-INFO + " Azlina Ahmad + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134, U.S.A. + Phone: 408 853 7927 + E-mail: azlina@cisco.com + + Greg Nakanishi + Postal: Motorola + 6450 Sequence Drive + San Diego, CA 92121, U.S.A. + Phone: 858 404 2366 + E-mail: gnakanishi@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + + + + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, + richard_woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + + DESCRIPTION + "The Event Notification MIB is an extension of the + CABLE DEVICE MIB. It defines various notification + objects for both cable modem and cable modem termination + systems. Two groups of SNMP notification objects are + defined. One group is for notifying cable modem events, + and one group is for notifying cable modem termination + system events. + + DOCSIS defines numerous events, and each event is + assigned to a functional category. This MIB defines + a notification object for each functional category. + The varbinding list of each notification includes + information about the event that occurred on the + device. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4547; see the RFC + itself for full legal notices." + + REVISION "200605240000Z" -- May 24, 2006 + DESCRIPTION + "Initial version, published as RFC 4547." + ::= { mib-2 132 } + +docsDevNotifControl OBJECT IDENTIFIER ::= { docsDevNotifMIB 1} +docsDevCmNotifs OBJECT IDENTIFIER ::= { docsDevNotifMIB 2 0 } +docsDevCmtsNotifs OBJECT IDENTIFIER ::= { docsDevNotifMIB 3 0 } + +docsDevCmNotifControl OBJECT-TYPE + SYNTAX BITS { + cmInitTLVUnknownNotif( 0), + cmDynServReqFailNotif( 1), + cmDynServRspFailNotif( 2), + cmDynServAckFailNotif( 3), + cmBpiInitNotif( 4), + cmBPKMNotif( 5), + cmDynamicSANotif( 6), + cmDHCPFailNotif( 7), + cmSwUpgradeInitNotif( 8), + cmSwUpgradeFailNotif( 9), + cmSwUpgradeSuccessNotif( 10), + + + + cmSwUpgradeCVCNotif( 11), + cmTODFailNotif( 12), + cmDCCReqFailNotif( 13), + cmDCCRspFailNotif( 14), + cmDCCAckFailNotif( 15) + } + MAX-ACCESS read-write + + STATUS current + DESCRIPTION + "The object is used to enable specific CM notifications. + For example, if the first bit is set, then + docsDevCmInitTLVUnknownNotif is enabled. If it is not set, + the notification is disabled. Note that notifications are + also under the control of the MIB modules defined in + RFC3413. + + If the device is rebooted,the value of this object SHOULD + revert to the default value. + " + DEFVAL { {} } + ::= { docsDevNotifControl 1 } + +docsDevCmtsNotifControl OBJECT-TYPE + SYNTAX BITS { + cmtsInitRegReqFailNotif( 0), + cmtsInitRegRspFailNotif( 1), + cmtsInitRegAckFailNotif( 2), + cmtsDynServReqFailNotif( 3), + cmtsDynServRspFailNotif( 4), + cmtsDynServAckFailNotif( 5), + cmtsBpiInitNotif( 6), + cmtsBPKMNotif( 7), + cmtsDynamicSANotif( 8), + cmtsDCCReqFailNotif( 9), + cmtsDCCRspFailNotif( 10), + cmtsDCCAckFailNotif( 11) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The object is used to enable specific CMTS notifications. + For example, if the first bit is set, then + docsDevCmtsInitRegRspFailNotif is enabled. If it is not set, + the notification is disabled. Note that notifications are + also under the control of the MIB modules defined in + RFC3413. + + + + + If the device is rebooted,the value of this object SHOULD + revert to the default value. + " + DEFVAL { {} } + ::= { docsDevNotifControl 2 } + +docsDevCmInitTLVUnknownNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "Notification to indicate that an unknown TLV was + encountered during the TLV parsing process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 1 } + + + + + +docsDevCmDynServReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + + "A notification to report the failure of a dynamic service + request during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected to (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 2 } + +docsDevCmDynServRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + + + + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + " A notification to report the failure of a dynamic service + response during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 3} + +docsDevCmDynServAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + + + + "A notification to report the failure of a dynamic service + acknowledgement during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 4} + +docsDevCmBpiInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPI + initialization attempt during the registration process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + + + + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 5 } + +docsDevCmBPKMNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a Baseline + Privacy Key Management (BPKM) operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + + + + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 6 } + +docsDevCmDynamicSANotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic security + association operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 7 } + +docsDevCmDHCPFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevServerDhcp, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a DHCP operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevServerDhcp: the IP address of the DHCP server. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 8 } + + + +docsDevCmSwUpgradeInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to indicate that a software upgrade + has been initiated on the device. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 9 } + +docsDevCmSwUpgradeFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + + + + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a software upgrade + attempt. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevSwFilename: the software image file name + - docsDevSwServer: the IP address of the server that + the image is retrieved from. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 10 } + +docsDevCmSwUpgradeSuccessNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + + + + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the software upgrade success + status. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevSwFilename: the software image file name + - docsDevSwServer: the IP address of the server that + the image is retrieved from. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 11 } + +docsDevCmSwUpgradeCVCFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + + + + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report that the verification of the + code file has failed during a secure software upgrade + attempt. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 12 } + +docsDevCmTODFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevServerTime, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a time of day + + + + operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevServerTime: the IP address of the time server. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 13 } + +docsDevCmDCCReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + " A notification to report the failure of a dynamic channel + change request during the dynamic channel change process + on the CM. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + + + + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 14 } + +docsDevCmDCCRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change response during the dynamic channel + change process on the CM. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + + + + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 15 } + +docsDevCmDCCAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change acknowledgement during the dynamic channel + change process on the CM. + + This notification sends additional information about + the event by including the following objects in its + + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + + + + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmtsCmStatusModulationType the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 16} + +docsDevCmtsInitRegReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + request from a CM during the CM initialization + process that was detected on the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 1 } + +docsDevCmtsInitRegRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + response during the CM initialization + process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 2 } + +docsDevCmtsInitRegAckFailNotif NOTIFICATION-TYPE + + + + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + acknowledgement from the CM during the CM + initialization process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 3 } + +docsDevCmtsDynServReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + + + + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic service + request during the dynamic services process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 4 } + +docsDevCmtsDynServRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + + + + "A notification to report the failure of a dynamic service + response during the dynamic services process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 5 } + +docsDevCmtsDynServAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic service + acknowledgement during the dynamic services + process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + + + + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 6 } + + +docsDevCmtsBpiInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPI + initialization attempt during the CM registration process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + + + + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 7 } + +docsDevCmtsBPKMNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPKM operation + that is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + + + + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 8 } + +docsDevCmtsDynamicSANotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic security + association operation that is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 9 } + +docsDevCmtsDCCReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change request during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 10 } + +docsDevCmtsDCCRspFailNotif NOTIFICATION-TYPE + + + + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change response during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 11 } + +docsDevCmtsDCCAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + + + + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change acknowledgement during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 12} + +-- +--Conformance definitions +-- + +docsDevNotifConformance OBJECT IDENTIFIER + ::= { docsDevNotifMIB 4 } +docsDevNotifGroups OBJECT IDENTIFIER + ::= { docsDevNotifConformance 1 } +docsDevNotifCompliances OBJECT IDENTIFIER + ::= { docsDevNotifConformance 2 } +docsDevCmNotifCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for CM Notifications and Control." + + MODULE --docsDevNotif + MANDATORY-GROUPS { + docsDevCmNotifControlGroup, + docsDevCmNotificationGroup + } + ::= { docsDevNotifCompliances 1 } + +docsDevCmNotifControlGroup OBJECT-GROUP + OBJECTS { + docsDevCmNotifControl + } + STATUS current + DESCRIPTION + "This group represents objects that allow control + over CM Notifications." + ::= { docsDevNotifGroups 1 } + +docsDevCmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + docsDevCmInitTLVUnknownNotif, + docsDevCmDynServReqFailNotif, + docsDevCmDynServRspFailNotif, + docsDevCmDynServAckFailNotif, + docsDevCmBpiInitNotif, + docsDevCmBPKMNotif, + docsDevCmDynamicSANotif, + docsDevCmDHCPFailNotif, + docsDevCmSwUpgradeInitNotif, + docsDevCmSwUpgradeFailNotif, + docsDevCmSwUpgradeSuccessNotif, + docsDevCmSwUpgradeCVCFailNotif, + docsDevCmTODFailNotif, + docsDevCmDCCReqFailNotif, + docsDevCmDCCRspFailNotif, + docsDevCmDCCAckFailNotif + } + STATUS current + DESCRIPTION + "A collection of CM notifications providing device status + and control." + ::= { docsDevNotifGroups 2 } + +docsDevCmtsNotifCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "The compliance statement for DOCSIS CMTS Notification + and Control." + MODULE --docsDevNotif + MANDATORY-GROUPS { + docsDevCmtsNotifControlGroup, + docsDevCmtsNotificationGroup + } + ::= { docsDevNotifCompliances 2 } + +docsDevCmtsNotifControlGroup OBJECT-GROUP + OBJECTS { + docsDevCmtsNotifControl + } + STATUS current + DESCRIPTION + "This group represents objects that allow control + over CMTS Notifications." + ::= { docsDevNotifGroups 3 } + +docsDevCmtsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + docsDevCmtsInitRegReqFailNotif, + docsDevCmtsInitRegRspFailNotif, + docsDevCmtsInitRegAckFailNotif , + docsDevCmtsDynServReqFailNotif, + docsDevCmtsDynServRspFailNotif, + docsDevCmtsDynServAckFailNotif, + docsDevCmtsBpiInitNotif, + docsDevCmtsBPKMNotif, + docsDevCmtsDynamicSANotif, + docsDevCmtsDCCReqFailNotif, + docsDevCmtsDCCRspFailNotif, + docsDevCmtsDCCAckFailNotif + } + STATUS current + DESCRIPTION + "A collection of CMTS notifications providing device + status and control." + ::= { docsDevNotifGroups 4 } + +END diff --git a/mibs/ietf/DOCS-IETF-QOS-MIB b/mibs/ietf/DOCS-IETF-QOS-MIB new file mode 100644 index 0000000..4e6a41c --- /dev/null +++ b/mibs/ietf/DOCS-IETF-QOS-MIB @@ -0,0 +1,3241 @@ +DOCS-IETF-QOS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Counter32, + Unsigned32, + Counter64, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + TimeStamp, + StorageType + FROM SNMPv2-TC + + OBJECT-GROUP, + MODULE-COMPLIANCE + + + + FROM SNMPv2-CONF + + ifIndex, + InterfaceIndex + FROM IF-MIB + + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + + DscpOrAny + FROM DIFFSERV-DSCP-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +docsIetfQosMIB MODULE-IDENTITY + LAST-UPDATED "200601230000Z" -- January 23, 2006 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) + Working Group" + CONTACT-INFO + " + Co-Author: Michael Patrick + Postal: Motorola BCS + 111 Locke Drive + Marlborough, MA 01752-7214 + U.S.A. + Phone: +1 508 786 7563 + E-mail: michael.patrick@motorola.com + + Co-Author: William Murwin + Postal: Motorola BCS + 111 Locke Drive + Marlborough, MA 01752-7214 + U.S.A. + Phone: +1 508 786 7594 + E-mail: w.murwin@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jfm@cablelabs.com" + DESCRIPTION + "This is the management information for + Quality Of Service (QOS) for DOCSIS 1.1 and 2.0. + + + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4323; see the RFC itself for + full legal notices." + + REVISION "200601230000Z" -- January 23, 2006 + DESCRIPTION + "Initial version, published as RFC 4323." + ::= { mib-2 127 } + +-- +-- Placeholder for notifications/traps. +-- +docsIetfQosNotifications OBJECT IDENTIFIER ::= { docsIetfQosMIB 0 } + +docsIetfQosMIBObjects OBJECT IDENTIFIER ::= { docsIetfQosMIB 1 } + +-- Textual Conventions +DocsIetfQosRfMacIfDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Indicates a direction on an RF MAC interface. + + The value downstream(1) is from Cable Modem + Termination System to Cable Modem. + + The value upstream(2) is from Cable Modem to + Cable Modem Termination System." + SYNTAX INTEGER { + downstream(1), + upstream(2) + } + +DocsIetfQosBitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The rate of traffic in unit of bits per second. + Used to specify traffic rate for QOS." + SYNTAX Unsigned32 + +DocsIetfQosSchedulingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The scheduling service provided by a CMTS for an + upstream Service Flow. If the parameter is omitted + from an upstream QOS Parameter Set, this object + takes the value of bestEffort (2). This parameter + must be reported as undefined (1) for downstream + QOS Parameter Sets." + SYNTAX INTEGER { + undefined (1), + + + + bestEffort (2), + nonRealTimePollingService(3), + realTimePollingService(4), + unsolictedGrantServiceWithAD(5), + unsolictedGrantService(6) + } + +----------------------------------------------------------------------- +-- +-- Packet Classifier Table +-- +docsIetfQosPktClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosPktClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the packet classification + configured on the CM or CMTS. + The model is that a packet either received + as input from an interface or transmitted + for output on an interface may be compared + against an ordered list of rules pertaining to + the packet contents. Each rule is a row of this + table. A matching rule provides a Service Flow + ID to which the packet is classified. + All rules need to match for a packet to match + a classifier. + + The objects in this row correspond to a set of + Classifier Encoding parameters in a DOCSIS + MAC management message. The + docsIetfQosPktClassBitMap indicates which + particular parameters were present in the + classifier as signaled in the DOCSIS message. + If the referenced parameter was not present + in the signaled DOCSIS 1.1 and 2.0 Classifier, the + corresponding object in this row reports a + value as specified in the DESCRIPTION section." + ::= { docsIetfQosMIBObjects 1 } + + +docsIetfQosPktClassEntry OBJECT-TYPE + SYNTAX DocsIetfQosPktClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in this table provides a single packet + classifier rule. The index ifIndex is an ifType + of docsCableMaclayer(127)." + INDEX { + + + + ifIndex, + docsIetfQosServiceFlowId, + docsIetfQosPktClassId + } + ::= { docsIetfQosPktClassTable 1 } + + + +DocsIetfQosPktClassEntry ::= SEQUENCE { + docsIetfQosPktClassId Unsigned32, + docsIetfQosPktClassDirection DocsIetfQosRfMacIfDirection, + docsIetfQosPktClassPriority Integer32, + docsIetfQosPktClassIpTosLow OCTET STRING, + docsIetfQosPktClassIpTosHigh OCTET STRING, + docsIetfQosPktClassIpTosMask OCTET STRING, + docsIetfQosPktClassIpProtocol Integer32, + docsIetfQosPktClassInetAddressType InetAddressType, + docsIetfQosPktClassInetSourceAddr InetAddress, + docsIetfQosPktClassInetSourceMask InetAddress, + docsIetfQosPktClassInetDestAddr InetAddress, + docsIetfQosPktClassInetDestMask InetAddress, + docsIetfQosPktClassSourcePortStart InetPortNumber, + docsIetfQosPktClassSourcePortEnd InetPortNumber, + docsIetfQosPktClassDestPortStart InetPortNumber, + docsIetfQosPktClassDestPortEnd InetPortNumber, + docsIetfQosPktClassDestMacAddr MacAddress, + docsIetfQosPktClassDestMacMask MacAddress, + docsIetfQosPktClassSourceMacAddr MacAddress, + docsIetfQosPktClassEnetProtocolType INTEGER, + docsIetfQosPktClassEnetProtocol Integer32, + docsIetfQosPktClassUserPriLow Integer32, + docsIetfQosPktClassUserPriHigh Integer32, + docsIetfQosPktClassVlanId Integer32, + docsIetfQosPktClassStateActive TruthValue, + docsIetfQosPktClassPkts Counter64, + docsIetfQosPktClassBitMap BITS + } + +docsIetfQosPktClassId OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index assigned to packet classifier entry by + the CMTS, which is unique per Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.2" + ::= { docsIetfQosPktClassEntry 1 } + +docsIetfQosPktClassDirection OBJECT-TYPE + + + + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the direction to which the classifier + is applied." + ::= { docsIetfQosPktClassEntry 2 } + +docsIetfQosPktClassPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value specifies the order of evaluation + of the classifiers. + + The higher the value, the higher the priority. + The value of 0 is used as default in + provisioned Service Flows Classifiers. + The default value of 64 is used for dynamic + Service Flow Classifiers. + + If the referenced parameter is not present + in a classifier, this object reports the default + value as defined above." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.5" + ::= { docsIetfQosPktClassEntry 3 } + +docsIetfQosPktClassIpTosLow OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The low value of a range of TOS byte values. + If the referenced parameter is not present + in a classifier, this object reports the value + of 0. + + The IP TOS octet, as originally defined in RFC 791, + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet as per the DOCSIS Specification + for packet classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 4 } + +docsIetfQosPktClassIpTosHigh OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION "The 8-bit high value of a range of TOS byte + values. + + If the referenced parameter is not present + in a classifier, this object reports the + value of 0. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet as defined by the DOCSIS Specification + for packet classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 5 } + +docsIetfQosPktClassIpTosMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The mask value is bitwise ANDed with TOS byte + in an IP packet, and this value is used for + range checking of TosLow and TosHigh. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet per the DOCSIS Specification for packet + classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 6 } + +docsIetfQosPktClassIpProtocol OBJECT-TYPE + SYNTAX Integer32 (0..258) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the value of the IP + Protocol field required for IP packets to match + this rule. + + + + + The value 256 matches traffic with any IP Protocol + value. The value 257 by convention matches both TCP + and UDP. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 258." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.2" + ::= { docsIetfQosPktClassEntry 7 } + +docsIetfQosPktClassInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The type of the Internet address for + docsIetfQosPktClassInetSourceAddr, + docsIetfQosPktClassInetSourceMask, + docsIetfQosPktClassInetDestAddr, and + docsIetfQosPktClassInetDestMask. + + If the referenced parameter is not present + in a classifier, this object reports the value of + ipv4(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.3" + ::= { docsIetfQosPktClassEntry 8 } + +docsIetfQosPktClassInetSourceAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the value of the IP + Source Address required for packets to match + this rule. + + An IP packet matches the rule when the packet + IP Source Address bitwise ANDed with the + docsIetfQosPktClassInetSourceMask value equals the + docsIetfQosPktClassInetSourceAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.3" + ::= { docsIetfQosPktClassEntry 9 } + + + + +docsIetfQosPktClassInetSourceMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies which bits of a packet's + IP Source Address are compared to match + this rule. + + An IP packet matches the rule when the packet + source address bitwise ANDed with the + docsIetfQosPktClassInetSourceMask value equals the + docsIetfQosIpPktClassInetSourceAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.4" + ::= { docsIetfQosPktClassEntry 10 } + +docsIetfQosPktClassInetDestAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the value of the IP + Destination Address required for packets to match + this rule. + + An IP packet matches the rule when the packet + IP Destination Address bitwise ANDed with the + docsIetfQosPktClassInetDestMask value + equals the docsIetfQosPktClassInetDestAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.5" + ::= { docsIetfQosPktClassEntry 11 } + +docsIetfQosPktClassInetDestMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "This object specifies which bits of a packet's + IP Destination Address are compared to + match this rule. + + An IP packet matches the rule when the packet + destination address bitwise ANDed with the + docsIetfQosPktClassInetDestMask value equals the + docsIetfQosIpPktClassInetDestAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.6" + ::= { docsIetfQosPktClassEntry 12 } + +docsIetfQosPktClassSourcePortStart OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the low-end inclusive + range of TCP/UDP source port numbers to which + a packet is compared. This object is irrelevant + for non-TCP/UDP IP packets. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.7" + ::= { docsIetfQosPktClassEntry 13 } + +docsIetfQosPktClassSourcePortEnd OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the high-end inclusive + range of TCP/UDP source port numbers to which + a packet is compared. This object is irrelevant + for non-TCP/UDP IP packets. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 65535." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.8" + ::= { docsIetfQosPktClassEntry 14 } + + + + +docsIetfQosPktClassDestPortStart OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the low-end inclusive + range of TCP/UDP destination port numbers to + which a packet is compared. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.9" + ::= { docsIetfQosPktClassEntry 15 } + +docsIetfQosPktClassDestPortEnd OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the high-end inclusive + range of TCP/UDP destination port numbers to which + a packet is compared. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 65535." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.10" + ::= { docsIetfQosPktClassEntry 16 } + +docsIetfQosPktClassDestMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An Ethernet packet matches an entry when its + destination MAC address bitwise ANDed with + docsIetfQosPktClassDestMacMask equals the value of + docsIetfQosPktClassDestMacAddr. + + + If the referenced parameter is not present + in a classifier, this object reports the value of + '000000000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.1" + ::= { docsIetfQosPktClassEntry 17 } + +docsIetfQosPktClassDestMacMask OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "An Ethernet packet matches an entry when its + destination MAC address bitwise ANDed with + docsIetfQosPktClassDestMacMask equals the value of + docsIetfQosPktClassDestMacAddr. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '000000000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.1" + ::= { docsIetfQosPktClassEntry 18 } + +docsIetfQosPktClassSourceMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An Ethernet packet matches this entry when its + source MAC address equals the value of + this object. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.2" + ::= { docsIetfQosPktClassEntry 19 } + +docsIetfQosPktClassEnetProtocolType OBJECT-TYPE + SYNTAX INTEGER { + none(0), + ethertype(1), + dsap(2), + mac(3), + all(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the format of the layer 3 + protocol ID in the Ethernet packet. A value of + none(0) means that the rule does not use the + layer 3 protocol type as a matching criteria. + + A value of ethertype(1) means that the rule + applies only to frames that contain an + EtherType value. Ethertype values are contained + in packets using the Dec-Intel-Xerox (DIX) + encapsulation or the RFC1042 Sub-Network Access + Protocol (SNAP) encapsulation formats. + + A value of dsap(2) means that the rule applies + + + + only to frames using the IEEE802.3 + encapsulation format with a Destination Service + Access Point (DSAP) other + than 0xAA (which is reserved for SNAP). + + A value of mac(3) means that the rule applies + only to MAC management messages for MAC management + messages. + + A value of all(4) means that the rule matches + all Ethernet packets. + + If the Ethernet frame contains an 802.1P/Q Tag + header (i.e., EtherType 0x8100), this object + applies to the embedded EtherType field within + the 802.1P/Q header. + + If the referenced parameter is not present in a + classifier, this object reports the value of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.3" + ::= { docsIetfQosPktClassEntry 20 } + +docsIetfQosPktClassEnetProtocol OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "If docsIetfQosEthPktClassProtocolType is none(0), + this object is ignored when considering whether + a packet matches the current rule. + + If dosQosPktClassEnetProtocolType is ethertype(1), + this object gives the 16-bit value of the + EtherType that the packet must match in order to + match the rule. + + If docsIetfQosPktClassEnetProtocolType is dsap(2), + the lower 8 bits of this object's value must match + the DSAP byte of the packet in order to match the + rule. + + If docsIetfQosPktClassEnetProtocolType is mac(3), + the lower 8 bits of this object's value represent a + lower bound (inclusive) of MAC management message + type codes matched, and the upper 8 bits represent + the upper bound (inclusive) of matched MAC message + type codes. Certain message type codes are + excluded from matching, as specified in the + reference. + + + + If the Ethernet frame contains an 802.1P/Q Tag + header (i.e., EtherType 0x8100), this object applies + to the embedded EtherType field within the 802.1P/Q + header. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.3" + ::= { docsIetfQosPktClassEntry 21 } + +docsIetfQosPktClassUserPriLow OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Q tag header (indicated with + EtherType 0x8100). Such frames include a 16-bit + Tag that contains a 3-bit Priority field and + a 12-bit VLAN number. + + Tagged Ethernet packets must have a 3-bit + Priority field within the range of + docsIetfQosPktClassPriLow to + docsIetfQosPktClassPriHigh in order to match this + rule. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.1" + ::= { docsIetfQosPktClassEntry 22 } + +docsIetfQosPktClassUserPriHigh OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Qtag header (indicated with + EtherType 0x8100). Such frames include a 16-bit + Tag that contains a 3-bit Priority field and + a 12-bit VLAN number. + + Tagged Ethernet packets must have a 3-bit + Priority field within the range of + docsIetfQosPktClassPriLow to + docsIetfQosPktClassPriHigh in order to match this + rule. + + + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 7." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.1" + ::= { docsIetfQosPktClassEntry 23 } + +docsIetfQosPktClassVlanId OBJECT-TYPE + SYNTAX Integer32 (0 | 1..4094) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Q tag header. + + Tagged packets must have a VLAN Identifier that + matches the value in order to match the rule. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.2" + ::= { docsIetfQosPktClassEntry 24 } + +docsIetfQosPktClassStateActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates whether or not the classifier + is enabled to classify packets to a Service Flow. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as true(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.6" + ::= { docsIetfQosPktClassEntry 25 } + +docsIetfQosPktClassPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object counts the number of packets that have + been classified using this entry. This + includes all packets delivered to a Service Flow + maximum rate policing function, whether or not that + function drops the packets. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + + + + ::= { docsIetfQosPktClassEntry 26 } + + +docsIetfQosPktClassBitMap OBJECT-TYPE + SYNTAX BITS { -- Reference SP-RFIv2.0-I06-040804 + rulePriority(0), -- Appendix C.2.1.3.4 + activationState(1), -- Appendix C.2.1.3.6 + ipTos(2), -- Appendix C.2.1.5.1 + ipProtocol(3), -- Appendix C.2.1.5.2 + ipSourceAddr(4), -- Appendix C.2.1.5.3 + ipSourceMask(5), -- Appendix C.2.1.5.4 + ipDestAddr(6), -- Appendix C.2.1.5.5 + ipDestMask(7), -- Appendix C.2.1.5.6 + sourcePortStart(8), -- Appendix C.2.1.5.7 + sourcePortEnd(9), -- Appendix C.2.1.5.8 + destPortStart(10), -- Appendix C.2.1.5.9 + destPortEnd(11), -- Appendix C.2.1.5.10 + destMac(12), -- Appendix C.2.1.6.1 + sourceMac(13), -- Appendix C.2.1.6.2 + ethertype(14), -- Appendix C.2.1.6.3 + userPri(15), -- Appendix C.2.1.7.1 + vlanId(16) -- Appendix C.2.1.7.2 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates which parameter encodings + were actually present in the DOCSIS packet + classifier encoding signaled in the DOCSIS message + that created or modified the classifier. Note that + Dynamic Service Change messages have replace + semantics, so that all non-default parameters must + be present whether the classifier is being created + or changed. + + A bit of this object is set to 1 if the parameter + indicated by the comment was present in the + classifier encoding, and to 0 otherwise. + + Note that BITS are encoded most significant bit + first, so that if, for example, bits 6 and 7 are + set, this object is encoded as the octet string + '030000'H." + ::= { docsIetfQosPktClassEntry 27 } + +-- +-- QOS Parameter Set Table +-- + + + +docsIetfQosParamSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosParamSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS 1.1 and 2.0 + QOS parameters defined in a managed device. + + The ifIndex index specifies a DOCSIS MAC Domain. + The docsIetfQosServiceFlowId index specifies a + particular Service Flow. + The docsIetfQosParamSetType index indicates whether + the active, admitted, or provisioned QOS Parameter + Set is being described by the row. + + Only the QOS Parameter Sets of DOCSIS 1.1 and 2.0 + Service Flows are represented in this table. + + DOCSIS 1.0 QOS service profiles are not + represented in this table. + + Each row corresponds to a DOCSIS QOS Parameter Set + as signaled via DOCSIS MAC management messages. + Each object in the row corresponds to one or + part of one DOCSIS 1.1 Service Flow Encoding. + The docsIetfQosParamSetBitMap object in the row + indicates which particular parameters were signaled + in the original registration or dynamic service + request message that created the QOS Parameter Set. + + In many cases, even if a QOS Parameter Set parameter + was not signaled, the DOCSIS specification calls + for a default value to be used. That default value + is reported as the value of the corresponding object + in this row. + + Many objects are not applicable, depending on + the Service Flow direction or upstream scheduling + type. The object value reported in this case + is specified in the DESCRIPTION clause." + ::= { docsIetfQosMIBObjects 2 } + +docsIetfQosParamSetEntry OBJECT-TYPE + SYNTAX DocsIetfQosParamSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A unique set of QOS parameters." + INDEX { + ifIndex, docsIetfQosServiceFlowId, docsIetfQosParamSetType + + + + } + ::= { docsIetfQosParamSetTable 1 } + +DocsIetfQosParamSetEntry ::= SEQUENCE { + docsIetfQosParamSetServiceClassName SnmpAdminString, + docsIetfQosParamSetPriority Integer32, + docsIetfQosParamSetMaxTrafficRate DocsIetfQosBitRate, + docsIetfQosParamSetMaxTrafficBurst Unsigned32, + docsIetfQosParamSetMinReservedRate DocsIetfQosBitRate, + docsIetfQosParamSetMinReservedPkt Integer32, + docsIetfQosParamSetActiveTimeout Integer32, + docsIetfQosParamSetAdmittedTimeout Integer32, + docsIetfQosParamSetMaxConcatBurst Integer32, + docsIetfQosParamSetSchedulingType DocsIetfQosSchedulingType, + docsIetfQosParamSetNomPollInterval Unsigned32, + docsIetfQosParamSetTolPollJitter Unsigned32, + docsIetfQosParamSetUnsolicitGrantSize Integer32, + docsIetfQosParamSetNomGrantInterval Unsigned32, + docsIetfQosParamSetTolGrantJitter Unsigned32, + docsIetfQosParamSetGrantsPerInterval Integer32, + docsIetfQosParamSetTosAndMask OCTET STRING, + docsIetfQosParamSetTosOrMask OCTET STRING, + docsIetfQosParamSetMaxLatency Unsigned32, + docsIetfQosParamSetType INTEGER, + docsIetfQosParamSetRequestPolicyOct OCTET STRING, + docsIetfQosParamSetBitMap BITS + } + +docsIetfQosParamSetServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refers to the Service Class Name from which the + parameter set values were derived. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is a zero-length string." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.4" + ::= { docsIetfQosParamSetEntry 1 } + +docsIetfQosParamSetPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The relative priority of a Service Flow. + Higher numbers indicate higher priority. + This priority should only be used to differentiate + + + + Service Flow from identical parameter sets. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter is + not applicable, the reported value is 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.1" + ::= { docsIetfQosParamSetEntry 2 } + +docsIetfQosParamSetMaxTrafficRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Maximum sustained traffic rate allowed for this + Service Flow in bits/sec. Must count all MAC frame + data PDU from the bytes following the MAC header + HCS to the end of the CRC. The number of bytes + forwarded is limited during any time interval. + The value 0 means no maximum traffic rate is + enforced. This object applies to both upstream and + downstream Service Flows. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter is + not applicable, it is reported as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.2" + ::= { docsIetfQosParamSetEntry 3 } + +docsIetfQosParamSetMaxTrafficBurst OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the token bucket size in bytes + for this parameter set. The value is calculated + from the byte following the MAC header HCS to + the end of the CRC. This object is applied in + conjunction with docsIetfQosParamSetMaxTrafficRate + to calculate maximum sustained traffic rate. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object for scheduling types + bestEffort (2), nonRealTimePollingService(3), + and realTimePollingService(4) is 3044. + + If this parameter is not applicable, it is reported + as 0. + + + + " + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.3" + ::= { docsIetfQosParamSetEntry 4 } + +docsIetfQosParamSetMinReservedRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the guaranteed minimum rate in + bits/sec for this parameter set. The value is + calculated from the byte following the MAC + header HCS to the end of the CRC. The default + value of 0 means that no bandwidth is reserved. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter + is not applicable, it is reported as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.4" + ::= { docsIetfQosParamSetEntry 5 } + +docsIetfQosParamSetMinReservedPkt OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies an assumed minimum packet size in + bytes for which the + docsIetfQosParamSetMinReservedRate will be + provided. The value is calculated from the byte + following the MAC header HCS to the end of the + CRC. + + If the referenced parameter is omitted from a + DOCSIS QOS parameter set, the default value is + CMTS implementation dependent. In this case, the + CMTS reports the default value it is using, and the + CM reports a value of 0. If the referenced + parameter is not applicable to the direction or + scheduling type of the Service Flow, both CMTS and + CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.5" + ::= { docsIetfQosParamSetEntry 6 } + +docsIetfQosParamSetActiveTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "Specifies the maximum duration in seconds that + resources remain unused on an active service + flow before CMTS signals that both active and + admitted parameters set are null. The default + value of 0 signifies an infinite amount of time. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.6" + ::= { docsIetfQosParamSetEntry 7 } + +docsIetfQosParamSetAdmittedTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum duration in seconds that + resources remain in admitted state before + resources must be released. + + The value of 0 signifies an infinite amount + of time. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the + default value of this object is 200. + " + + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.7" + DEFVAL { 200 } + ::= { docsIetfQosParamSetEntry 8 } + +docsIetfQosParamSetMaxConcatBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum concatenated burst in + bytes that an upstream Service Flow is allowed. + The value is calculated from the FC byte of the + Concatenation MAC Header to the last CRC byte in + of the last concatenated MAC frame, inclusive. + The value of 0 specifies no maximum burst. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object for scheduling types + bestEffort(2), nonRealTimePollingService(3), and + + + + realTimePollingService(4) is 1522. If the parameter + is not applicable, this object's value is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.1" + ::= { docsIetfQosParamSetEntry 9 } + + +docsIetfQosParamSetSchedulingType OBJECT-TYPE + SYNTAX DocsIetfQosSchedulingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the upstream scheduling service used for + upstream Service Flow. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set of an + upstream Service Flow, the default value of this + object is bestEffort(2). For QOS parameter sets of + downstream Service Flows, this object's value is + reported as undefined(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.2" + ::= { docsIetfQosParamSetEntry 10 } + +docsIetfQosParamSetNomPollInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the nominal interval in microseconds + between successive unicast request + opportunities on an upstream Service Flow. + + This object applies only to upstream Service Flows + with DocsIetfQosSchedulingType of value + nonRealTimePollingService(3), + realTimePollingService(4), and + unsolictedGrantServiceWithAD(5). The parameter is + mandatory for realTimePollingService(4). If the + parameter is omitted with + nonRealTimePollingService(3), the CMTS uses an + implementation-dependent value. If the parameter + is omitted with unsolictedGrantServiceWithAD(5), + the CMTS uses as a default value the value of the + Nominal Grant Interval parameter. In all cases, + the CMTS reports the value it is using when the + parameter is applicable. The CM reports the + signaled parameter value if it was signaled, + and 0 otherwise. + + + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.4" + ::= { docsIetfQosParamSetEntry 11 } + +docsIetfQosParamSetTolPollJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum amount of time in + microseconds that the unicast request interval + may be delayed from the nominal periodic + schedule on an upstream Service Flow. + + This parameter is applicable only to upstream + Service Flows with a DocsIetfQosSchedulingType of + realTimePollingService(4) or + unsolictedGrantServiceWithAD(5). + + If the referenced parameter is applicable but not + present in the corresponding DOCSIS QOS Parameter + Set, the CMTS uses an implementation-dependent + value and reports the value it is using. + The CM reports a value of 0 in this case. + + If the parameter is not applicable to the + direction or upstream scheduling type of the + Service Flow, both CMTS and CM report this + object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.5" + ::= { docsIetfQosParamSetEntry 12 } + +docsIetfQosParamSetUnsolicitGrantSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the unsolicited grant size in bytes. + The grant size includes the entire MAC frame + data PDU from the Frame Control byte to the end + of the MAC frame. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + + + + when applicable. Both CMTS and CM report + the signaled value of the parameter in this + case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.6" + ::= { docsIetfQosParamSetEntry 13 } + +docsIetfQosParamSetNomGrantInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the nominal interval in microseconds + between successive data grant opportunities + on an upstream Service Flow. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.7" + ::= { docsIetfQosParamSetEntry 14 } + +docsIetfQosParamSetTolGrantJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum amount of time in + microseconds that the transmission opportunities + may be delayed from the nominal periodic schedule. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + + + + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.8" + ::= { docsIetfQosParamSetEntry 15 } + +docsIetfQosParamSetGrantsPerInterval OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the number of data grants per Nominal + Grant Interval + (docsIetfQosParamSetNomGrantInterval). + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.9" + ::= { docsIetfQosParamSetEntry 16 } + +docsIetfQosParamSetTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the AND mask for the IP TOS byte for + overwriting IP packet's TOS value. The IP packet + TOS byte is bitwise ANDed with + docsIetfQosParamSetTosAndMask, and the result is + bitwise ORed with docsIetfQosParamSetTosORMask and + the result is written to the IP packet TOS byte. + A value of 'FF'H for docsIetfQosParamSetTosAndMask + and a value of '00'H for + docsIetfQosParamSetTosOrMask means that the IP + Packet TOS byte is not overwritten. + + This combination is reported if the referenced + parameter is not present in a QOS Parameter Set. + + + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of docsIetfQosParamSetTosAndMask + and docsIetfQosParamSetTosORMask that would result + in the modification of the ECN bits. + + In particular, operators should not use values of + docsIetfQosParamSetTosAndMask that have either of + the least-significant two bits set to 0. Similarly, + operators should not use values of + docsIetfQosParamSetTosORMask that have either of + the least-significant two bits set to 1. + + Even though this object is only enforced by the + Cable Modem Termination System (CMTS), + Cable Modems MUST report the value as signaled in + the referenced parameter." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosParamSetEntry 17 } + +docsIetfQosParamSetTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the OR mask for the IP TOS byte. + + See the description of docsIetfQosParamSetTosAndMask + for further details. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of docsIetfQosParamSetTosAndMask + and docsIetfQosParamSetTosORMask that would result + in the modification of the ECN bits." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + + + + Diffserv." + ::= { docsIetfQosParamSetEntry 18 } + +docsIetfQosParamSetMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum latency between the + reception of a packet by the CMTS on its NSI + and the forwarding of the packet to the RF + interface. A value of 0 signifies no maximum + latency is enforced. This object only applies to + downstream Service Flows. + + If the referenced parameter is not present in the + corresponding downstream DOCSIS QOS Parameter Set, + the default value is 0. This parameter is + not applicable to upstream DOCSIS QOS Parameter + Sets, and its value is reported as 0 in this case." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.7.1" + ::= { docsIetfQosParamSetEntry 19 } + + +docsIetfQosParamSetType OBJECT-TYPE + SYNTAX INTEGER { + active (1), + admitted (2), + provisioned (3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Defines the type of the QOS parameter set defined + by this row. active(1) indicates the Active QOS + parameter set, describing the service currently + being provided by the DOCSIS MAC domain to the + Service Flow. admitted(2) indicates the Admitted + QOS Parameter Set, describing services reserved by + the DOCSIS MAC domain for use by the service + flow. provisioned (3) describes the QOS Parameter + Set defined in the DOCSIS CM Configuration file for + the Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, 8.1.5" + ::= { docsIetfQosParamSetEntry 20 } + +docsIetfQosParamSetRequestPolicyOct OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + -- A 32-bit mask represented most significant byte + + + + -- first. The 32-bit integer represented in this + -- manner equals the binary value of the referenced + -- integer parameter of the DOCSIS RFI + -- specification. + -- The BITS syntax is not used in order to avoid + -- the confusion caused by different bit-numbering + -- conventions. + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies which transmit interval opportunities + the CM omits for upstream transmission requests and + packet transmissions. This object takes its + default value for downstream Service Flows. + + Unless otherwise indicated, a bit value of 1 means + that a CM must not use that opportunity for + upstream transmission. + + If bit 0 is the least significant bit of the + least significant (4th) octet, and if bit number + is increased with significance, the bit definitions + are defined as follows: + + broadcastReqOpp(0): + all CMs broadcast request opportunities + + priorityReqMulticastReq(1): + priority request multicast request + opportunities + + reqDataForReq(2): + request/data opportunities for requests + + reqDataForData(3): + request/data opportunities for data + + piggybackReqWithData(4): + piggyback requests with data + + concatenateData(5): + concatenate data + + fragmentData(6): + fragment data + + suppresspayloadheaders(7): + suppress payload headers + + + + + dropPktsExceedUGSize(8): + A value of 1 means that the Service Flow must + drop packets that do not fit in the Unsolicited + Grant size. + + If the referenced parameter is not present in + a QOS Parameter Set, the value of this object is + reported as '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.3" + ::= { docsIetfQosParamSetEntry 21 } + +docsIetfQosParamSetBitMap OBJECT-TYPE + -- Each bit corresponds to a parameter + -- from SP-RFI-v1.1-I10-037030, + -- Appendix C in the indicated + SYNTAX BITS { -- section number. + trafficPriority(0), -- C.2.2.5.1 + maxTrafficRate(1), -- C.2.2.5.2 + maxTrafficBurst(2), -- C.2.2.5.3 + minReservedRate(3), -- C.2.2.5.4 + minReservedPkt(4), -- C.2.2.5.5 + activeTimeout(5), -- C.2.2.5.6 + admittedTimeout(6), -- C.2.2.5.7 + maxConcatBurst(7), -- C.2.2.6.1 + schedulingType(8), -- C.2.2.6.2 + requestPolicy(9), -- C.2.2.6.3 + nomPollInterval(10), -- C.2.2.6.4 + tolPollJitter(11), -- C.2.2.6.5 + unsolicitGrantSize(12), -- C.2.2.6.6 + nomGrantInterval(13), -- C.2.2.6.7 + tolGrantJitter(14), -- C.2.2.6.8 + grantsPerInterval(15), -- C.2.2.6.9 + tosOverwrite(16), -- C.2.2.6.10 + maxLatency(17) -- C.2.2.7.1 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the set of QOS Parameter + Set parameters actually signaled in the + DOCSIS registration or dynamic service request + message that created or modified the QOS Parameter + Set. A bit is set to 1 when the parameter described + by the indicated reference section is present + in the original request. + + Note that when Service Class names are expanded, + the registration or dynamic response message may + contain parameters as expanded by the CMTS based + + + + on a stored service class. These expanded + parameters are not indicated by a 1 bit in this + object. + + Note that even though some QOS Parameter Set + parameters may not be signaled in a message + (so that the paramater's bit in this object is 0), + the DOCSIS specification requires that default + values be used. These default values are reported + as the corresponding object's value in the row. + + Note that BITS objects are encoded most + significant bit first. For example, if bits + 1 and 16 are set, the value of this object + is the octet string '400080'H." + ::= { docsIetfQosParamSetEntry 22 } + +-- +-- Service Flow Table +-- +docsIetfQosServiceFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 3 } + +docsIetfQosServiceFlowEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a Service Flow. + An entry in the table exists for each + Service Flow ID. The ifIndex is an + ifType of docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosServiceFlowId + } + ::= { docsIetfQosServiceFlowTable 1 } + +DocsIetfQosServiceFlowEntry ::= SEQUENCE { + docsIetfQosServiceFlowId Unsigned32, + docsIetfQosServiceFlowSID Unsigned32, + docsIetfQosServiceFlowDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceFlowPrimary TruthValue + } + + + +docsIetfQosServiceFlowId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index assigned to a Service Flow by CMTS." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.2" + ::= { docsIetfQosServiceFlowEntry 1 } + +docsIetfQosServiceFlowSID OBJECT-TYPE + SYNTAX Unsigned32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Service Identifier (SID) assigned to an + admitted or active Service Flow. This object + reports a value of 0 if a Service ID is not + associated with the Service Flow. Only active + or admitted upstream Service Flows will have a + Service ID (SID)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.3" + ::= { docsIetfQosServiceFlowEntry 2 } + +docsIetfQosServiceFlowDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The direction of the Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.1/2" + ::= { docsIetfQosServiceFlowEntry 3 } + +docsIetfQosServiceFlowPrimary OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object reflects whether Service Flow is the primary + or a secondary Service Flow. + + A primary Service Flow is the default Service Flow + for otherwise unclassified traffic and all MAC + messages." + REFERENCE "SP-RFIv2.0-I06-040804, Section 8.1 " + ::= { docsIetfQosServiceFlowEntry 4 } + +-- +-- Service Flow Stats Table +-- +docsIetfQosServiceFlowStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowStatsEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION "This table describes statistics associated with the + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 4 } + +docsIetfQosServiceFlowStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of Service Flow statistics. + An entry in the table exists for each + Service Flow ID. The ifIndex is an + ifType of docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosServiceFlowId + } + ::= { docsIetfQosServiceFlowStatsTable 1 } + +DocsIetfQosServiceFlowStatsEntry ::= SEQUENCE { + docsIetfQosServiceFlowPkts Counter64, + docsIetfQosServiceFlowOctets Counter64, + docsIetfQosServiceFlowTimeCreated TimeStamp, + docsIetfQosServiceFlowTimeActive Counter32, + docsIetfQosServiceFlowPHSUnknowns Counter32, + docsIetfQosServiceFlowPolicedDropPkts Counter32, + docsIetfQosServiceFlowPolicedDelayPkts Counter32 + } + +docsIetfQosServiceFlowPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For outgoing Service Flows, this object counts the + number of Packet Data PDUs forwarded to this + Service Flow. For incoming upstream CMTS service + flows, this object counts the number of Packet + Data PDUs actually received on the Service Flow + identified by the SID for which the packet was + scheduled. CMs not classifying downstream packets + may report this object's value as 0 for downstream + Service Flows. This object does not count + MAC-specific management messages. + + Particularly for UGS flows, packets sent on the + primary Service Flow in violation of the UGS grant + size should be counted only by the instance of this + object that is associated with the primary service + + + + flow. + + Unclassified upstream user data packets (i.e., non- + MAC-management) forwarded to the primary upstream + Service Flow should be counted by the instance of + this object that is associated with the primary + service flow. + + This object does include packets counted by + docsIetfQosServiceFlowPolicedDelayPkts, but does not + include packets counted by + docsIetfQosServiceFlowPolicedDropPkts + and docsIetfQosServiceFlowPHSUnknowns. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 1 } + +docsIetfQosServiceFlowOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets from the byte after the MAC + header HCS to the end of the CRC for all packets + counted in the docsIetfQosServiceFlowPkts object for + this row. Note that this counts the octets after + payload header suppression and before payload + header expansion have been applied. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 2 } + +docsIetfQosServiceFlowTimeCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was created." + ::= { docsIetfQosServiceFlowStatsEntry 3 } + +docsIetfQosServiceFlowTimeActive OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "The number of seconds that the service flow + has been active. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 4 } + +docsIetfQosServiceFlowPHSUnknowns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For incoming upstream CMTS service flows, this + object counts the number of packets received + with an unknown payload header suppression index. + The service flow is identified by the SID for which + the packet was scheduled. + + On a CM, only this object's instance for the primary + downstream service flow counts packets received with + an unknown payload header suppression index. All + other downstream service flows on CM report this + objects value as 0. + + All outgoing service flows report this object's + value as 0. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 5 } + +docsIetfQosServiceFlowPolicedDropPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For outgoing service flows, this object counts the + number of Packet Data PDUs classified to this + service flow dropped due to: + (1) implementation-dependent excessive delay + while enforcing the Maximum Sustained + Traffic Rate; or + (2) UGS packets dropped due to exceeding the + Unsolicited Grant Size with a + Request/Transmission policy that requires + such packets to be dropped. + + Classified packets dropped due to other reasons + + + + must be counted in ifOutDiscards for the interface + of this service flow. This object reports 0 for + incoming service flows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 6 } + +docsIetfQosServiceFlowPolicedDelayPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object counts only outgoing packets delayed in + order to maintain the Maximum Sustained Traffic + Rate. This object will always report a value of 0 + for UGS flows because the Maximum Sustained Traffic + Rate does not apply. This object is 0 for incoming + service flows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 7 } + +-- +-- Upstream Service Flow Stats Table (CMTS ONLY) +-- +docsIetfQosUpstreamStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosUpstreamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes statistics associated with + upstream service flows. All counted frames must + be received without a Frame Check Sequence (FCS) + error." + ::= { docsIetfQosMIBObjects 5 } + +docsIetfQosUpstreamStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosUpstreamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of upstream service flow + statistics. An entry in the table exists for each + upstream Service Flow in a managed device. + The ifIndex is an ifType of + docsCableMaclayer(127)." + INDEX { + + + + ifIndex, + docsIetfQosSID + } + ::= { docsIetfQosUpstreamStatsTable 1 } + +DocsIetfQosUpstreamStatsEntry ::= SEQUENCE { + docsIetfQosSID Unsigned32, + docsIetfQosUpstreamFragments Counter32, + docsIetfQosUpstreamFragDiscards Counter32, + docsIetfQosUpstreamConcatBursts Counter32 + } + +docsIetfQosSID OBJECT-TYPE + SYNTAX Unsigned32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Identifies a service ID for an admitted or active + upstream service flow." + ::= { docsIetfQosUpstreamStatsEntry 1 } + +docsIetfQosUpstreamFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of fragmentation headers received on an + upstream service flow, regardless of whether + the fragment was correctly reassembled into a + valid packet. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 2 } + +docsIetfQosUpstreamFragDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of upstream fragments discarded and not + assembled into a valid upstream packet. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 3 } + +docsIetfQosUpstreamConcatBursts OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of concatenation headers received on an + upstream service flow. + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 4 } + + +-- +-- Dynamic Service Stats Table +-- +docsIetfQosDynamicServiceStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosDynamicServiceStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes statistics associated with the + Dynamic Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 6 } + +docsIetfQosDynamicServiceStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosDynamicServiceStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of dynamic service flow statistics. + Two entries exist for each DOCSIS MAC layer + interface for the upstream and downstream + direction. On the CMTS, the downstream direction + row indicates messages transmitted or transactions + originated by the CMTS. The upstream direction row + indicates messages received or transaction + originated by the CM. On the CM, the downstream + direction row indicates messages received or + transactions originated by the CMTS. The upstream + direction row indicates messages transmitted by + the CM or transactions originated by the CM. + The ifIndex is an ifType of + docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosIfDirection + } + ::= { docsIetfQosDynamicServiceStatsTable 1 } + +DocsIetfQosDynamicServiceStatsEntry ::= SEQUENCE { + docsIetfQosIfDirection DocsIetfQosRfMacIfDirection, + docsIetfQosDSAReqs Counter32, + + + + docsIetfQosDSARsps Counter32, + docsIetfQosDSAAcks Counter32, + docsIetfQosDSCReqs Counter32, + docsIetfQosDSCRsps Counter32, + docsIetfQosDSCAcks Counter32, + docsIetfQosDSDReqs Counter32, + docsIetfQosDSDRsps Counter32, + docsIetfQosDynamicAdds Counter32, + docsIetfQosDynamicAddFails Counter32, + docsIetfQosDynamicChanges Counter32, + docsIetfQosDynamicChangeFails Counter32, + docsIetfQosDynamicDeletes Counter32, + docsIetfQosDynamicDeleteFails Counter32, + docsIetfQosDCCReqs Counter32, + docsIetfQosDCCRsps Counter32, + docsIetfQosDCCAcks Counter32, + docsIetfQosDCCs Counter32, + docsIetfQosDCCFails Counter32 + } + +docsIetfQosIfDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The direction of interface." + ::= { docsIetfQosDynamicServiceStatsEntry 1 } + +docsIetfQosDSAReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 2 } + +docsIetfQosDSARsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 3 } + +docsIetfQosDSAAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition + Acknowledgements, including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 4 } + +docsIetfQosDSCReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 5 } + +docsIetfQosDSCRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 6 } + +docsIetfQosDSCAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change + Acknowledgements, including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 7 } + +docsIetfQosDSDReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Delete Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 8 } + +docsIetfQosDSDRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Delete Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 9 } + +docsIetfQosDynamicAdds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Addition + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 10 } + +docsIetfQosDynamicAddFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Addition + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 11 } + +docsIetfQosDynamicChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Change + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 12 } + +docsIetfQosDynamicChangeFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Change + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 13 } + +docsIetfQosDynamicDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Delete + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 14 } + +docsIetfQosDynamicDeleteFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Delete + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 15 } + + +docsIetfQosDCCReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Request + messages traversing an interface. This count + is nonzero only on downstream direction rows. + This count should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex + that indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 16 } + +docsIetfQosDCCRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Response + messages traversing an interface. This count is + nonzero only on upstream direction rows. This count + should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 17 } + +docsIetfQosDCCAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Acknowledgement + messages traversing an interface. This count + is nonzero only on downstream direction rows. + This count should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 18 } + +docsIetfQosDCCs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Channel Change + transactions. This count is nonzero only on + downstream direction rows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 19 } + +docsIetfQosDCCFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Channel Change + transactions. This count is nonzero only on + downstream direction rows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 20 } + + +-- +-- Service Flow Log Table (CMTS ONLY) +-- +docsIetfQosServiceFlowLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contains a log of the disconnected + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 7 } + +docsIetfQosServiceFlowLogEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The information regarding a single disconnected + service flow." + INDEX { + docsIetfQosServiceFlowLogIndex + } + ::= { docsIetfQosServiceFlowLogTable 1 } + +DocsIetfQosServiceFlowLogEntry ::= SEQUENCE { + + + + docsIetfQosServiceFlowLogIndex Unsigned32, + docsIetfQosServiceFlowLogIfIndex InterfaceIndex, + docsIetfQosServiceFlowLogSFID Unsigned32, + docsIetfQosServiceFlowLogCmMac MacAddress, + docsIetfQosServiceFlowLogPkts Counter64, + docsIetfQosServiceFlowLogOctets Counter64, + docsIetfQosServiceFlowLogTimeDeleted TimeStamp, + docsIetfQosServiceFlowLogTimeCreated TimeStamp, + docsIetfQosServiceFlowLogTimeActive Counter32, + docsIetfQosServiceFlowLogDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceFlowLogPrimary TruthValue, + docsIetfQosServiceFlowLogServiceClassName SnmpAdminString, + docsIetfQosServiceFlowLogPolicedDropPkts Counter32, + docsIetfQosServiceFlowLogPolicedDelayPkts Counter32, + docsIetfQosServiceFlowLogControl INTEGER + } + +docsIetfQosServiceFlowLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Unique index for a logged service flow." + ::= { docsIetfQosServiceFlowLogEntry 1 } + +docsIetfQosServiceFlowLogIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The ifIndex of ifType docsCableMaclayer(127) + on the CMTS where the service flow was present." + ::= { docsIetfQosServiceFlowLogEntry 2 } + +docsIetfQosServiceFlowLogSFID OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The index assigned to the service flow by the CMTS." + ::= { docsIetfQosServiceFlowLogEntry 3 } + +docsIetfQosServiceFlowLogCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The MAC address for the cable modem associated with + the service flow." + ::= { docsIetfQosServiceFlowLogEntry 4 } + +docsIetfQosServiceFlowLogPkts OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets counted on this service flow + after payload header suppression." + ::= { docsIetfQosServiceFlowLogEntry 5 } + +docsIetfQosServiceFlowLogOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets counted on this service flow + after payload header suppression." + ::= { docsIetfQosServiceFlowLogEntry 6 } + +docsIetfQosServiceFlowLogTimeDeleted OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was deleted." + ::= { docsIetfQosServiceFlowLogEntry 7 } + +docsIetfQosServiceFlowLogTimeCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was created." + ::= { docsIetfQosServiceFlowLogEntry 8 } + +docsIetfQosServiceFlowLogTimeActive OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time that the service flow was active." + ::= { docsIetfQosServiceFlowLogEntry 9 } + +docsIetfQosServiceFlowLogDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosServiceFlowDirection + for the service flow." + ::= { docsIetfQosServiceFlowLogEntry 10 } + +docsIetfQosServiceFlowLogPrimary OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosServiceFlowPrimary for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 11 } + +docsIetfQosServiceFlowLogServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosParamSetServiceClassName for + the provisioned QOS Parameter Set of the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 12 } + +docsIetfQosServiceFlowLogPolicedDropPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The final value of + docsIetfQosServiceFlowPolicedDropPkts for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 13 } + +docsIetfQosServiceFlowLogPolicedDelayPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The final value of + docsIetfQosServiceFlowPolicedDelayPkts for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 14 } + +docsIetfQosServiceFlowLogControl OBJECT-TYPE + SYNTAX INTEGER { + active(1), + destroy(6) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Setting this object to the value destroy(6) removes + this entry from the table. + + Reading this object returns the value active(1)." + ::= { docsIetfQosServiceFlowLogEntry 15 } + + + + +-- +-- Service Class Table (CMTS ONLY) +-- +docsIetfQosServiceClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Classes in a CMTS." + ::= { docsIetfQosMIBObjects 8 } + +docsIetfQosServiceClassEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A provisioned service class on a CMTS. + Each entry defines a template for certain + DOCSIS QOS Parameter Set values. When a CM + creates or modifies an Admitted QOS Parameter Set + for a Service Flow, it may reference a Service Class + Name instead of providing explicit QOS Parameter + Set values. In this case, the CMTS populates + the QOS Parameter Set with the applicable + corresponding values from the named Service Class. + Subsequent changes to a Service Class row do not + affect the QOS Parameter Set values of any service + flows already admitted. + + A service class template applies to only + a single direction, as indicated in the + docsIetfQosServiceClassDirection object." + INDEX { + docsIetfQosServiceClassName + } + ::= { docsIetfQosServiceClassTable 1 } + +DocsIetfQosServiceClassEntry ::= SEQUENCE { + docsIetfQosServiceClassName SnmpAdminString, + docsIetfQosServiceClassStatus RowStatus, + docsIetfQosServiceClassPriority Integer32, + docsIetfQosServiceClassMaxTrafficRate DocsIetfQosBitRate, + docsIetfQosServiceClassMaxTrafficBurst Unsigned32, + docsIetfQosServiceClassMinReservedRate DocsIetfQosBitRate, + docsIetfQosServiceClassMinReservedPkt Integer32, + docsIetfQosServiceClassMaxConcatBurst Integer32, + docsIetfQosServiceClassNomPollInterval Unsigned32, + docsIetfQosServiceClassTolPollJitter Unsigned32, + docsIetfQosServiceClassUnsolicitGrantSize Integer32, + + + + docsIetfQosServiceClassNomGrantInterval Unsigned32, + docsIetfQosServiceClassTolGrantJitter Unsigned32, + docsIetfQosServiceClassGrantsPerInterval Integer32, + docsIetfQosServiceClassMaxLatency Unsigned32, + docsIetfQosServiceClassActiveTimeout Integer32, + docsIetfQosServiceClassAdmittedTimeout Integer32, + docsIetfQosServiceClassSchedulingType DocsIetfQosSchedulingType, + docsIetfQosServiceClassRequestPolicy OCTET STRING, + docsIetfQosServiceClassTosAndMask OCTET STRING, + docsIetfQosServiceClassTosOrMask OCTET STRING, + docsIetfQosServiceClassDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceClassStorageType StorageType, + docsIetfQosServiceClassDSCPOverwrite DscpOrAny + } + +docsIetfQosServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..15)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Service Class Name. DOCSIS specifies that the + maximum size is 16 ASCII characters including + a terminating zero. The terminating zero is not + represented in this SnmpAdminString syntax object." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.4" + ::= { docsIetfQosServiceClassEntry 1 } + +docsIetfQosServiceClassStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Used to create or delete rows in this table. + There is no restriction on the ability to change + values in this row while the row is active. + Inactive rows need not be timed out." + ::= { docsIetfQosServiceClassEntry 2 } + +docsIetfQosServiceClassPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetPriority." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 3 } + +docsIetfQosServiceClassMaxTrafficRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION "Template for docsIetfQosParamSetMaxTrafficRate." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 4 } + +docsIetfQosServiceClassMaxTrafficBurst OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMaxTrafficBurst." + DEFVAL { 3044 } + ::= { docsIetfQosServiceClassEntry 5 } + +docsIetfQosServiceClassMinReservedRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSEtMinReservedRate." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 6 } + +docsIetfQosServiceClassMinReservedPkt OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMinReservedPkt." + ::= { docsIetfQosServiceClassEntry 7 } + +docsIetfQosServiceClassMaxConcatBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMaxConcatBurst." + DEFVAL { 1522 } + ::= { docsIetfQosServiceClassEntry 8 } + +docsIetfQosServiceClassNomPollInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetNomPollInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 9 } + +docsIetfQosServiceClassTolPollJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTolPollJitter." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 10 } + +docsIetfQosServiceClassUnsolicitGrantSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetUnsolicitGrantSize." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 11 } + +docsIetfQosServiceClassNomGrantInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetNomGrantInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 12 } + +docsIetfQosServiceClassTolGrantJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTolGrantJitter." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 13 } + +docsIetfQosServiceClassGrantsPerInterval OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetGrantsPerInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 14 } + +docsIetfQosServiceClassMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetClassMaxLatency." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.7.1" + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 15 } + + + +docsIetfQosServiceClassActiveTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetActiveTimeout." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 16 } + +docsIetfQosServiceClassAdmittedTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetAdmittedTimeout." + DEFVAL { 200 } + ::= { docsIetfQosServiceClassEntry 17 } + +docsIetfQosServiceClassSchedulingType OBJECT-TYPE + SYNTAX DocsIetfQosSchedulingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetSchedulingType." + DEFVAL { bestEffort } + ::= { docsIetfQosServiceClassEntry 18 } + +docsIetfQosServiceClassRequestPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetRequestPolicyOct." + DEFVAL { '00000000'H } -- no bits are set + ::= { docsIetfQosServiceClassEntry 19 } + +docsIetfQosServiceClassTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTosAndMask. + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of + docsIetfQosServiceClassTosAndMask and + docsIetfQosServiceClassTosOrMask that would result + in the modification of the ECN bits. + + + + In particular, operators should not use values of + docsIetfQosServiceClassTosAndMask that have either + of the least-significant two bits set to 0. + Similarly,operators should not use values of + docsIetfQosServiceClassTosOrMask that have either + of the least-significant two bits set to 1." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosServiceClassEntry 20 } + +docsIetfQosServiceClassTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTosOrMask. + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of + docsIetfQosServiceClassTosAndMask and + docsIetfQosServiceClassTosOrMask that would result + in the modification of the ECN bits. + + In particular, operators should not use values of + docsIetfQosServiceClassTosAndMask that have either + of the least-significant two bits set to 0. + Similarly, operators should not use values of + docsIetfQosServiceClassTosOrMask that have either + of the least-significant two bits set to 1." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosServiceClassEntry 21 } + +docsIetfQosServiceClassDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Specifies whether the service class template + applies to upstream or downstream service flows." + DEFVAL { upstream } + + + + ::= { docsIetfQosServiceClassEntry 22 } + +docsIetfQosServiceClassStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether + it is backed up by non-volatile or permanent + storage. 'permanent' entries need not allow + writable access to any object." + DEFVAL { nonVolatile } + ::= { docsIetfQosServiceClassEntry 23 } + +docsIetfQosServiceClassDSCPOverwrite OBJECT-TYPE + SYNTAX DscpOrAny + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object allows the overwrite of the DSCP + field per RFC 3260. + + If this object is -1, then the corresponding entry's + docsIetfQosServiceClassTosAndMask value MUST be + 'FF'H and docsIetfQosServiceClassTosOrMask MUST be + '00'H. Otherwise, this object is in the range of + 0..63, and the corresponding entry's + docsIetfQosServiceClassTosAndMask value MUST be + '03'H and the docsIetfQosServiceClassTosOrMask MUST + be this object's value shifted left by two bit + positions." + REFERENCE "RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + DEFVAL { -1 } + ::= { docsIetfQosServiceClassEntry 24 } + +-- +-- Service Class PolicyTable +-- +docsIetfQosServiceClassPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceClassPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Class Policies. + + This table is an adjunct to the + + + + docsDevFilterPolicy table. Entries in the + docsDevFilterPolicy table can point to + specific rows in this table. + + This table permits mapping a packet to a service + class name of an active service flow so long as + a classifier does not exist at a higher + priority." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix E.2.1" + ::= { docsIetfQosMIBObjects 9 } + +docsIetfQosServiceClassPolicyEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceClassPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A service class name policy entry." + INDEX { + docsIetfQosServiceClassPolicyIndex + } + ::= { docsIetfQosServiceClassPolicyTable 1 } + +DocsIetfQosServiceClassPolicyEntry ::= SEQUENCE { + docsIetfQosServiceClassPolicyIndex Unsigned32, + docsIetfQosServiceClassPolicyName SnmpAdminString, + docsIetfQosServiceClassPolicyRulePriority Integer32, + docsIetfQosServiceClassPolicyStatus RowStatus, + docsIetfQosServiceClassPolicyStorageType StorageType + } + +docsIetfQosServiceClassPolicyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index value to identify an entry in + this table uniquely." + ::= { docsIetfQosServiceClassPolicyEntry 1 } + +docsIetfQosServiceClassPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Service Class Name to identify the name of the + service class flow to which the packet should be + directed." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix E.2.1" + ::= { docsIetfQosServiceClassPolicyEntry 2 } + +docsIetfQosServiceClassPolicyRulePriority OBJECT-TYPE + + + + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Service Class Policy rule priority for the + entry." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.5" + ::= { docsIetfQosServiceClassPolicyEntry 3 } + +docsIetfQosServiceClassPolicyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Used to create or delete rows in this table. + This object should not be deleted if it is + referenced by an entry in docsDevFilterPolicy. + The reference should be deleted first. + There is no restriction on the ability + to change values in this row while the row is + active. Inactive rows need not be timed out." + ::= { docsIetfQosServiceClassPolicyEntry 4 } + +docsIetfQosServiceClassPolicyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether + it is backed up by non-volatile or permanent + storage. 'permanent' entries need not allow + writable access to any object." + DEFVAL { nonVolatile } + ::= { docsIetfQosServiceClassPolicyEntry 5 } + +-- +-- Payload Header Suppression(PHS) Table +-- +docsIetfQosPHSTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosPHSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of payload header + suppression entries." + ::= { docsIetfQosMIBObjects 10 } + +docsIetfQosPHSEntry OBJECT-TYPE + SYNTAX DocsIetfQosPHSEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION "A payload header suppression entry. + + The ifIndex is an ifType of docsCableMaclayer(127). + The index docsIetfQosServiceFlowId selects one + service flow from the cable MAC layer interface. + The docsIetfQosPktClassId index matches an + index of the docsIetfQosPktClassTable." + INDEX { + ifIndex, + docsIetfQosServiceFlowId, + docsIetfQosPktClassId + } + ::= { docsIetfQosPHSTable 1 } + +DocsIetfQosPHSEntry ::= SEQUENCE { + docsIetfQosPHSField OCTET STRING, + docsIetfQosPHSMask OCTET STRING, + docsIetfQosPHSSize Integer32, + docsIetfQosPHSVerify TruthValue, + docsIetfQosPHSIndex Integer32 + } + +docsIetfQosPHSField OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression field defines the + bytes of the header that must be + suppressed/restored by the sending/receiving + device. + + The number of octets in this object should be + the same as the value of docsIetfQosPHSSize." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.1" + ::= { docsIetfQosPHSEntry 1 } + +docsIetfQosPHSMask OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression mask defines the + bit mask that is used in combination with the + docsIetfQosPHSField. It defines which bytes in + the header must be suppressed/restored by the + sending or receiving device. + + Each bit of this bit mask corresponds to a byte + in the docsIetfQosPHSField, with the least + + + + significant bit corresponding to the first byte + of the docsIetfQosPHSField. + + Each bit of the bit mask specifies whether + the corresponding byte should be suppressed + in the packet. A bit value of '1' indicates that + the byte should be suppressed by the sending + device and restored by the receiving device. + A bit value of '0' indicates that + the byte should not be suppressed by the sending + device or restored by the receiving device. + + If the bit mask does not contain a bit for each + byte in the docsIetfQosPHSField, then the bit mask + is extended with bit values of '1' to be the + necessary length." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.3" + ::= { docsIetfQosPHSEntry 2 } + +docsIetfQosPHSSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression size specifies the + number of bytes in the header to be suppressed + and restored. + + The value of this object must match the number + of bytes in the docsIetfQosPHSField." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.4" + ::= { docsIetfQosPHSEntry 3 } + +docsIetfQosPHSVerify OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression verification value. If + 'true', the sender must verify docsIetfQosPHSField + is the same as what is contained in the packet + to be suppressed." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.5" + ::= { docsIetfQosPHSEntry 4 } + +docsIetfQosPHSIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression index uniquely + + + + references the PHS rule for a given service flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.2" + ::= { docsIetfQosPHSEntry 5 } + + +-- +-- docsIetfQosCmtsMacToSrvFlowTable (CMTS Only) +-- +docsIetfQosCmtsMacToSrvFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosCmtsMacToSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table provides for referencing the service + flows associated with a particular cable modem. + This allows indexing into other docsIetfQos + tables that are indexed by docsIetfQosServiceFlowId + and ifIndex." + ::= { docsIetfQosMIBObjects 11 } + +docsIetfQosCmtsMacToSrvFlowEntry OBJECT-TYPE + SYNTAX DocsIetfQosCmtsMacToSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry is created by CMTS for each service flow + connected to this CMTS." + INDEX { + docsIetfQosCmtsCmMac, + docsIetfQosCmtsServiceFlowId + } + ::= { docsIetfQosCmtsMacToSrvFlowTable 1 } + +DocsIetfQosCmtsMacToSrvFlowEntry ::= SEQUENCE { + docsIetfQosCmtsCmMac MacAddress, + docsIetfQosCmtsServiceFlowId Unsigned32, + docsIetfQosCmtsIfIndex InterfaceIndex + } + +docsIetfQosCmtsCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The MAC address for the referenced CM." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 1 } + +docsIetfQosCmtsServiceFlowId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION "An index assigned to a service flow by CMTS." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 2 } + +docsIetfQosCmtsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The ifIndex of ifType docsCableMacLayer(127) + on the CMTS that is connected to the Cable Modem." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 3 } + +-- +-- Conformance definitions +-- +docsIetfQosConformance OBJECT IDENTIFIER + ::= { docsIetfQosMIB 2 } + +docsIetfQosGroups OBJECT IDENTIFIER + ::= { docsIetfQosConformance 1 } + +docsIetfQosCompliances OBJECT IDENTIFIER + ::= { docsIetfQosConformance 2 } + +docsIetfQosCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for MCNS Cable Modems and + Cable Modem Termination Systems that implement DOCSIS + Service Flows." + + MODULE -- docsIetfQosMIB + MANDATORY-GROUPS { docsIetfQosBaseGroup } + + GROUP docsIetfQosCmtsGroup + DESCRIPTION + "This group is mandatory for Cable Modem Termination + Systems (CMTS) and is not implemented for Cable Modems + (CM)." + + GROUP docsIetfQosParamSetGroup + DESCRIPTION + "This group is mandatory for Cable Modem Termination + Systems (CMTS) and Cable Modems. Cable modems only + implement objects in this group as read-only." + + GROUP docsIetfQosSrvClassPolicyGroup + DESCRIPTION + "This group is optional for Cable Modem Termination + + + + Systems (CMTS) and Cable Modems. This group is relevant + if policy-based service flow classification + is implemented. See docsDevPolicyTable in + DOCS-CABLE-DEVICE-MIB for more details." + + GROUP docsIetfQosServiceClassGroup + DESCRIPTION + "This group is mandatory for a Cable Modem Termination + System (CMTS) that implements expansion of Service Class + Names in a QOS Parameter Set. This group is + not implemented on the Cable Modems." + + OBJECT docsIetfQosPktClassPkts + DESCRIPTION + "This object only needs to be implemented in entries + that are classifying packets and not policing packets." + + OBJECT docsIetfQosPktClassInetAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetSourceAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetSourceMask + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetDestAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetDestMask + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosServiceClassStorageType + + + + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + OBJECT docsIetfQosServiceClassPolicyStorageType + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + ::= { docsIetfQosCompliances 1 } + +docsIetfQosBaseGroup OBJECT-GROUP + OBJECTS { + docsIetfQosPktClassDirection, + docsIetfQosPktClassPriority, + docsIetfQosPktClassIpTosLow, + docsIetfQosPktClassIpTosHigh, + docsIetfQosPktClassIpTosMask, + docsIetfQosPktClassIpProtocol, + docsIetfQosPktClassSourcePortStart, + docsIetfQosPktClassSourcePortEnd, + docsIetfQosPktClassDestPortStart, + docsIetfQosPktClassDestPortEnd, + docsIetfQosPktClassDestMacAddr, + docsIetfQosPktClassDestMacMask, + docsIetfQosPktClassSourceMacAddr, + docsIetfQosPktClassEnetProtocolType, + docsIetfQosPktClassEnetProtocol, + docsIetfQosPktClassUserPriLow, + docsIetfQosPktClassUserPriHigh, + docsIetfQosPktClassVlanId, + docsIetfQosPktClassStateActive, + docsIetfQosPktClassPkts, + docsIetfQosPktClassBitMap, + docsIetfQosPktClassInetAddressType, + docsIetfQosPktClassInetSourceAddr, + docsIetfQosPktClassInetSourceMask, + docsIetfQosPktClassInetDestAddr, + docsIetfQosPktClassInetDestMask, + + docsIetfQosServiceFlowSID, + docsIetfQosServiceFlowDirection, + docsIetfQosServiceFlowPrimary, + + docsIetfQosServiceFlowPkts, + docsIetfQosServiceFlowOctets, + + + + docsIetfQosServiceFlowTimeCreated, + docsIetfQosServiceFlowTimeActive, + docsIetfQosServiceFlowPHSUnknowns, + docsIetfQosServiceFlowPolicedDropPkts, + docsIetfQosServiceFlowPolicedDelayPkts, + + docsIetfQosDSAReqs, + docsIetfQosDSARsps, + docsIetfQosDSAAcks, + docsIetfQosDSCReqs, + docsIetfQosDSCRsps, + docsIetfQosDSCAcks, + docsIetfQosDSDReqs, + docsIetfQosDSDRsps, + docsIetfQosDynamicAdds, + docsIetfQosDynamicAddFails, + docsIetfQosDynamicChanges, + docsIetfQosDynamicChangeFails, + docsIetfQosDynamicDeletes, + docsIetfQosDynamicDeleteFails, + docsIetfQosDCCReqs, + docsIetfQosDCCRsps, + docsIetfQosDCCAcks, + docsIetfQosDCCs, + docsIetfQosDCCFails, + + docsIetfQosPHSField, + docsIetfQosPHSMask, + docsIetfQosPHSSize, + docsIetfQosPHSVerify, + docsIetfQosPHSIndex + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems." + ::= { docsIetfQosGroups 1 } + +docsIetfQosParamSetGroup OBJECT-GROUP + OBJECTS { + docsIetfQosParamSetServiceClassName, + docsIetfQosParamSetPriority, + docsIetfQosParamSetMaxTrafficRate, + docsIetfQosParamSetMaxTrafficBurst, + docsIetfQosParamSetMinReservedRate, + docsIetfQosParamSetMinReservedPkt, + docsIetfQosParamSetActiveTimeout, + docsIetfQosParamSetAdmittedTimeout, + + + + docsIetfQosParamSetMaxConcatBurst, + docsIetfQosParamSetSchedulingType, + docsIetfQosParamSetNomPollInterval, + docsIetfQosParamSetTolPollJitter, + docsIetfQosParamSetUnsolicitGrantSize, + docsIetfQosParamSetNomGrantInterval, + docsIetfQosParamSetTolGrantJitter, + docsIetfQosParamSetGrantsPerInterval, + docsIetfQosParamSetTosAndMask, + docsIetfQosParamSetTosOrMask, + docsIetfQosParamSetMaxLatency, + docsIetfQosParamSetRequestPolicyOct, + docsIetfQosParamSetBitMap + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems for QOS Parameter Sets." + ::= { docsIetfQosGroups 2 } + + +docsIetfQosCmtsGroup OBJECT-GROUP + OBJECTS { + + docsIetfQosUpstreamFragments, + docsIetfQosUpstreamFragDiscards, + docsIetfQosUpstreamConcatBursts, + + docsIetfQosServiceFlowLogIfIndex, + docsIetfQosServiceFlowLogSFID, + docsIetfQosServiceFlowLogCmMac, + docsIetfQosServiceFlowLogPkts, + docsIetfQosServiceFlowLogOctets, + docsIetfQosServiceFlowLogTimeDeleted, + docsIetfQosServiceFlowLogTimeCreated, + docsIetfQosServiceFlowLogTimeActive, + docsIetfQosServiceFlowLogDirection, + docsIetfQosServiceFlowLogPrimary, + docsIetfQosServiceFlowLogServiceClassName, + docsIetfQosServiceFlowLogPolicedDropPkts, + docsIetfQosServiceFlowLogPolicedDelayPkts, + docsIetfQosServiceFlowLogControl, + + docsIetfQosCmtsIfIndex -- docsIetfQosCmtsMacToSrvFlowTable required + + } + STATUS current + DESCRIPTION + + + + "Group of objects implemented only in the CMTS." + ::= { docsIetfQosGroups 3 } + +docsIetfQosSrvClassPolicyGroup OBJECT-GROUP + OBJECTS { + docsIetfQosServiceClassPolicyName, + docsIetfQosServiceClassPolicyRulePriority, + docsIetfQosServiceClassPolicyStatus, + docsIetfQosServiceClassPolicyStorageType + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems when supporting policy-based + service flows." + ::= { docsIetfQosGroups 4 } + +docsIetfQosServiceClassGroup OBJECT-GROUP + OBJECTS { + docsIetfQosServiceClassStatus, + docsIetfQosServiceClassPriority, + docsIetfQosServiceClassMaxTrafficRate, + docsIetfQosServiceClassMaxTrafficBurst, + docsIetfQosServiceClassMinReservedRate, + docsIetfQosServiceClassMinReservedPkt, + docsIetfQosServiceClassMaxConcatBurst, + docsIetfQosServiceClassNomPollInterval, + docsIetfQosServiceClassTolPollJitter, + docsIetfQosServiceClassUnsolicitGrantSize, + docsIetfQosServiceClassNomGrantInterval, + docsIetfQosServiceClassTolGrantJitter, + docsIetfQosServiceClassGrantsPerInterval, + docsIetfQosServiceClassMaxLatency, + docsIetfQosServiceClassActiveTimeout, + docsIetfQosServiceClassAdmittedTimeout, + docsIetfQosServiceClassSchedulingType, + docsIetfQosServiceClassRequestPolicy, + docsIetfQosServiceClassTosAndMask, + docsIetfQosServiceClassTosOrMask, + docsIetfQosServiceClassDirection, + docsIetfQosServiceClassStorageType, + docsIetfQosServiceClassDSCPOverwrite + } + STATUS current + DESCRIPTION + "Group of objects implemented only in Cable Modem + Termination Systems when supporting expansion of Service + Class Names in a QOS Parameter Set" + + + + ::= { docsIetfQosGroups 5 } + +END diff --git a/mibs/ietf/DOCS-IETF-SUBMGT-MIB b/mibs/ietf/DOCS-IETF-SUBMGT-MIB new file mode 100644 index 0000000..0681618 --- /dev/null +++ b/mibs/ietf/DOCS-IETF-SUBMGT-MIB @@ -0,0 +1,714 @@ +DOCS-IETF-SUBMGT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + mib-2 + FROM SNMPv2-SMI + RowStatus, + TruthValue, + TimeStamp, + StorageType + FROM SNMPv2-TC + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB + docsIfCmtsCmStatusIndex, + docsIfCmtsCmStatusEntry + FROM DOCS-IF-MIB -- RFC2670 + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + + + + diffServMIBActionGroup, + diffServMIBAlgDropGroup, + diffServMIBCounterGroup, + diffServDataPathStatus, + diffServClfrStatus, + diffServClfrElementStatus, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrDstAddr, + diffServAlgDropStatus, + diffServDataPathStorage, + diffServClfrStorage, + diffServClfrElementStorage, + diffServMultiFieldClfrStorage, + diffServActionStorage, + diffServCountActStorage, + diffServAlgDropStorage, + diffServAlgDropType + FROM DIFFSERV-MIB -- RFC3289 + ; + +docsSubMgt MODULE-IDENTITY + LAST-UPDATED "200503290000Z" -- March 29, 2005 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) Working + Group" + CONTACT-INFO + " Wilson Sawyer + Postal: 50 Kelly Brook Lane + East Hampstead, NH 03826 + U.S.A. + + Phone: +1 603 382 7080 + E-mail: wsawyer@ieee.org + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + DESCRIPTION + "This is the CMTS centric subscriber management MIB for + DOCSIS-compliant CMTS. It provides the objects to allow a Cable + Modem Termination operator to control the IP addresses and + protocols associated with subscribers' cable modems. + + + + + + + Copyright (C) The Internet Society (2005). This version of this + MIB module is part of RFC 4036; see the RFC itself for full legal + notices." + REVISION "200503290000Z" -- March 29, 2005 + DESCRIPTION + "Initial version, published as RFC 4036. Note that the + compliance statements in this version apply only to + implementations that support DOCSIS 1.0/1.1/2.0, which + are not IPv6-capable." + ::= { mib-2 125 } + +docsSubMgtObjects OBJECT IDENTIFIER ::= { docsSubMgt 1 } + +docsSubMgtCpeControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtCpeControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table AUGMENTs the docsIfCmtsCmStatusTable, adding + four WRITEable objects, as well as a read-only object, all of + which reflect the state of subscriber management on a particular + CM." + ::= { docsSubMgtObjects 1 } + +docsSubMgtCpeControlEntry OBJECT-TYPE + SYNTAX DocsSubMgtCpeControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the docsSubMgtCpeControlTable. All values are set + at successful modem registration, either from the system default, + or from objects included in the DOCSIS registration request sent + upstream to the CMTS from the CM. The contents of this entry are + meaningless unless the corresponding docsIfCmtsCmStatusValue (see + reference) is registrationComplete(6). The persistence of this + row is determined solely by the lifespan of the corresponding + docsIfCmtsCmStatusEntry (normally StorageType=volatile)." + + REFERENCE + "RFC 2670" + AUGMENTS { docsIfCmtsCmStatusEntry } + ::= {docsSubMgtCpeControlTable 1 } + +DocsSubMgtCpeControlEntry ::= SEQUENCE + { + docsSubMgtCpeControlMaxCpeIp Integer32, + docsSubMgtCpeControlActive TruthValue, + docsSubMgtCpeControlLearnable TruthValue, + + + + docsSubMgtCpeControlReset TruthValue, + docsSubMgtCpeControlLastReset TimeStamp + } + +docsSubMgtCpeControlMaxCpeIp OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of simultaneous IP addresses permitted behind + the CM. If this is set to zero, all CPE traffic from the CM is + dropped. If the provisioning object corresponding to + docsSubMgtCpeIpTable includes more CPE IP address entries for + this modem than the value of this object, then this object is + set to the count of the number of rows in docsSubMgtCpeIpTable + that have the same docsIfCmtsCmStatusIndex value. (For example, + if the CM has 5 IP addresses specified for it, this value is 5.) + This limit applies to learned and DOCSIS-provisioned entries + but not to entries added through some administrative + process at the CMTS. If not set through DOCSIS provisioning, + this object defaults to docsSubMgtCpeMaxIpDefault. Note that + this object is only meaningful if docsSubMgtCpeControlActive + is true." + ::= { docsSubMgtCpeControlEntry 1 } + +docsSubMgtCpeControlActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the application of subscriber management to + this cable modem. If this is set to true, CMTS-based CPE + control is active, and all the actions required by the various + filter tables and controls apply at the CMTS. If this is set + to false, no subscriber management filtering is done at the + CMTS (but other filters may apply). If not set through DOCSIS + provisioning, this object defaults to + docsSubMgtCpeActiveDefault." + ::= { docsSubMgtCpeControlEntry 2 } + +docsSubMgtCpeControlLearnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls whether the CMTS may learn (and pass traffic + for) CPE IP addresses associated with a cable modem. If this is + set to true, the CMTS may learn up to docsSubMgtMaxCpeIp + + + + addresses (less any DOCSIS-provisioned entries) related to this + CM. Those IP addresses are added (by internal process) to the + docsSubMgtCpeIpTable. The nature of the learning mechanism is + not specified here. + + If not set through DOCSIS provisioning, this object defaults to + docsSubMgtCpeLearnableDefault. Note that this object is only + meaningful if docsSubMgtCpeControlActive is true." + ::= { docsSubMgtCpeControlEntry 3 } + +docsSubMgtCpeControlReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object always returns false on read. If this object is + set to true, the rows with 'learned' addresses in + docsSubMgtCpeIpTable for this CM are deleted from that table." + ::= { docsSubMgtCpeControlEntry 4 } + +docsSubMgtCpeControlLastReset OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when docsSubMgtCpeControlReset was + last set true. Zero if never reset." + DEFVAL { 0 } + ::= { docsSubMgtCpeControlEntry 5 } + +docsSubMgtCpeMaxIpDefault OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlMaxCpeIp if not + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { 16 } + ::= { docsSubMgtObjects 2 } + +docsSubMgtCpeActiveDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlActive if not + + + + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { false } + ::= { docsSubMgtObjects 3 } + +docsSubMgtCpeLearnableDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlLearnable if not + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { true } + ::= { docsSubMgtObjects 4 } + +docsSubMgtCpeIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtCpeIpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of CPE IP addresses known on a per-CM basis." + ::= { docsSubMgtObjects 5 } + +docsSubMgtCpeIpEntry OBJECT-TYPE + SYNTAX DocsSubMgtCpeIpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the docsSubMgtCpeIpTable. The first index is + the specific modem we're referring to, and the second index is + the specific CPE IP entry." + INDEX { docsIfCmtsCmStatusIndex, + docsSubMgtCpeIpIndex } + ::= {docsSubMgtCpeIpTable 1 } + +DocsSubMgtCpeIpEntry ::= SEQUENCE + { + docsSubMgtCpeIpIndex Integer32, + docsSubMgtCpeIpAddressType InetAddressType, + docsSubMgtCpeIpAddr InetAddress, + docsSubMgtCpeIpLearned TruthValue + } + +docsSubMgtCpeIpIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this CPE IP address relative to the indexed CM. + An entry is created either through the included CPE IP addresses + in the provisioning object, or via learning. + + If docsSubMgtCpeControlActive is true and a CMTS receives + an IP packet from a CM that contains a source IP address that + does not match one of the docsSubMgtCpeIpAddr entries for this + CM, one of two things occurs. If the number of entries is less + than docsSubMgtCpeControlMaxCpeIp, the source address is added to + the table and the packet is forwarded. If the number of entries + equals the docsSubMgtCpeControlMaxCpeIp, then the packet is + dropped." + ::= { docsSubMgtCpeIpEntry 1 } + +docsSubMgtCpeIpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of internet address of docsSubMgtCpeIpAddr." + ::= { docsSubMgtCpeIpEntry 2 } + +docsSubMgtCpeIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address either set from provisioning or learned via + address gleaning or other forwarding means. See + docsSubMgtCpeIpIndex for the mechanism. + + The type of this address is determined by the value of + docsSubMgtCpeIpAddressType." + ::= { docsSubMgtCpeIpEntry 3 } + +docsSubMgtCpeIpLearned OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, this entry was learned from IP packets sent + upstream rather than from the provisioning objects." + ::= { docsSubMgtCpeIpEntry 4 } + +docsSubMgtCmFilterTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF DocsSubMgtCmFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Binds filter groups to modems, identifying for each modem + the upstream and downstream filter groups that apply to packets + for that modem. Normally, this table reflects the filter group + values signaled by DOCSIS Registration, although values may be + overridden by management action. + + For each of the columns in this table, zero is a distinguished + value, indicating that the default filtering action is to be + taken rather than that associated with a filter group number. + Zero is used if the filter group is not signaled by DOCSIS + registration." + ::= { docsSubMgtObjects 6 } + +docsSubMgtCmFilterEntry OBJECT-TYPE + SYNTAX DocsSubMgtCmFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Binds a filter group to each direction of traffic for a + modem. The filters in this entry apply if + docsSubMgtCpeControlActive is true. + + The contents of this entry are meaningless unless the + corresponding docsIfCmtsCmStatusValue (see reference) is + registrationComplete(6). The persistence of this row is + determined solely by the lifespan of the corresponding + docsIfCmtsCmStatusEntry (normally StorageType=volatile)." + REFERENCE + "RFC 2670" + AUGMENTS { docsIfCmtsCmStatusEntry } + ::= {docsSubMgtCmFilterTable 1 } + +DocsSubMgtCmFilterEntry ::= SEQUENCE + { + docsSubMgtCmFilterSubDownstream Integer32, + docsSubMgtCmFilterSubUpstream Integer32, + docsSubMgtCmFilterCmDownstream Integer32, + docsSubMgtCmFilterCmUpstream Integer32 +} + +docsSubMgtCmFilterSubDownstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The filter group applied to traffic destined for subscribers + attached to the referenced CM. Upon row creation, this is set + either to zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable) or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as that of the filter group + index appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 1 } + +docsSubMgtCmFilterSubUpstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic originating from + subscribers attached to the referenced CM. Upon row creation + this is set to either zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS. The value of this + object is the same as that of the filter group index appearing as + docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 2 } + +docsSubMgtCmFilterCmDownstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic destined for the + referenced CM itself. Upon row creation this is set either to + zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as that of the filter group + index appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 3 } + +docsSubMgtCmFilterCmUpstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic originating from the + referenced CM itself. This is set upon row creation to either + + + + zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as the filter group index + appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 4 } + +docsSubMgtFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtFilterGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a collection of referenceable entries to which + diffServClfrElementSpecific refers. This table provides filter + group indices that can be compared with those signaled during + DOCSIS registration. A packet matches an entry from this table + if the packet originated from or is destined to a cable modem + that registered this index as one of its four filter groups + (see docsSubMgtCmFilterTable), and if the packet direction and + MAC address select the use of this index among the four." + ::= { docsSubMgtObjects 7 } + +docsSubMgtFilterGroupEntry OBJECT-TYPE + SYNTAX DocsSubMgtFilterGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry only exists if needed by the + diffServClfrElementEntry. A packet matches this entry if the + packet's cable modem registered this index as one of its four + filter groups (see docsSubMgtCmFilterTable) and if the packet + direction and MAC address select the use of this index among + the four." + INDEX { docsSubMgtFilterGroupIndex } + ::= { docsSubMgtFilterGroupTable 1 } + +DocsSubMgtFilterGroupEntry ::= SEQUENCE + { + docsSubMgtFilterGroupIndex Integer32 + } + +docsSubMgtFilterGroupIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The filter group index, from the set signaled at DOCSIS + + + + Registration. Provides a referenceable entry to which + diffServClfrElementSpecific points. A packet matches this + classifier entry if the packet's cable modem registered this + index value as one of its four filter groups, and if the packet + direction and MAC address select the use of this index among + the four. Because this is the only field in this table, it is + read-only, contrary to the usual SMI custom of making indices + not-accessible. + + Note that although zero may be signaled (or defaulted) at DOCSIS + Registration to indicate a default filtering group, no such entry + appears in this table, as diffServClfrElementSpecific will + use a zeroDotZero pointer for that classification." + ::= { docsSubMgtFilterGroupEntry 1 } + +docsSubMgtConformance OBJECT IDENTIFIER ::= { docsSubMgt 2 } +docsSubMgtCompliances OBJECT IDENTIFIER ::= + { docsSubMgtConformance 1 } +docsSubMgtGroups OBJECT IDENTIFIER ::= + { docsSubMgtConformance 2 } + +docsSubMgtBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for CMTS devices that implement + CMTS centric subscriber management. + + This compliance statement applies to implementations that + support DOCSIS 1.0/1.1/2.0, which are not IPv6 capable." + + +MODULE DIFFSERV-MIB -- RFC3289 + MANDATORY-GROUPS { + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBAlgDropGroup, + diffServMIBCounterGroup + } + +OBJECT diffServDataPathStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + + + +OBJECT diffServClfrStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServClfrElementStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrSrcAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServAlgDropStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServDataPathStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServClfrStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + + + +OBJECT diffServClfrElementStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServMultiFieldClfrStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServActionStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServCountActStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServAlgDropStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServAlgDropType + SYNTAX INTEGER { alwaysDrop(5) } + DESCRIPTION + "For DOCSIS subscriber management, this object is + only used to provide packet filtering. Implementations + need not support other values of this enumeration." + +MODULE -- This module i.e., DOCS-IETF-SUBMGT-MIB + +MANDATORY-GROUPS { + docsSubMgtGroup + } + +OBJECT docsSubMgtCpeControlMaxCpeIp + SYNTAX Integer32(0..16) + DESCRIPTION + "An implementation is only required to support up to + sixteen addresses per modem." + + + +OBJECT docsSubMgtCpeMaxIpDefault + SYNTAX Integer32(0..16) + DESCRIPTION + "An implementation is only required to support up to + sixteen addresses per modem." + +OBJECT docsSubMgtCpeIpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsSubMgtCpeIpAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsSubMgtCmFilterSubDownstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterSubUpstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterCmDownstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterCmUpstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + + ::= { docsSubMgtCompliances 1 } + +docsSubMgtGroup OBJECT-GROUP + OBJECTS { + docsSubMgtCpeControlMaxCpeIp, + docsSubMgtCpeControlActive, + + + + docsSubMgtCpeControlLearnable, + docsSubMgtCpeControlReset, + docsSubMgtCpeControlLastReset, + docsSubMgtCpeMaxIpDefault, + docsSubMgtCpeActiveDefault, + docsSubMgtCpeLearnableDefault, + docsSubMgtCpeIpAddressType, + docsSubMgtCpeIpAddr, + docsSubMgtCpeIpLearned, + docsSubMgtCmFilterSubDownstream, + docsSubMgtCmFilterSubUpstream, + docsSubMgtCmFilterCmDownstream, + docsSubMgtCmFilterCmUpstream, + docsSubMgtFilterGroupIndex + } + STATUS current + DESCRIPTION + "The objects used to manage host-based cable modems + via a set of CMTS enforced controls." + ::= { docsSubMgtGroups 1 } + +END diff --git a/mibs/ietf/DOCS-IF-MIB b/mibs/ietf/DOCS-IF-MIB new file mode 100644 index 0000000..fdef8ce --- /dev/null +++ b/mibs/ietf/DOCS-IF-MIB @@ -0,0 +1,5582 @@ +DOCS-IF-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Unsigned32, + Integer32, + Counter32, + Counter64, + TimeTicks, + IpAddress, + transmission + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + TimeInterval, + TimeStamp, + StorageType + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + ifIndex, InterfaceIndexOrZero + FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- [RFC4001] + IANAifType + FROM IANAifType-MIB; -- [IANA] + +docsIfMib MODULE-IDENTITY + LAST-UPDATED "200605240000Z" -- May 24, 2006 + ORGANIZATION "IETF IPCDN Working Group" + CONTACT-INFO + + + + " David Raftus + Postal: ATI Technologies Inc. + 340 Terry Fox Drive, Suite 202 + Ottawa Ontario + Canada + Phone: +1 613 592 1052 ext.222 + E-mail: david.raftus@ati.com + + Eduardo Cardona + Postal: Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027-9750 + U.S.A. + Phone: Tel: +1 303 661 9100 + Fax: +1 303 661 9199 + E-mail: e.cardona@cablelabs.com;mibs@cablelabs.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + DESCRIPTION + "This is the MIB Module for DOCSIS 2.0-compliant Radio + Frequency (RF) interfaces in Cable Modems and + Cable Modem Termination Systems. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4546; see + the RFC itself for full legal notices." + + REVISION "200605240000Z" + DESCRIPTION + "Revision of the IETF RF MIB module for DOCSIS 2.0. + This version published as RFC 4546. + This MIB module revision includes the following + among others: + Usage of ifType (205) for upstream logical channels. + Addition of downstream and upstream utilization + counters. + Additional statistics per upstream interface. + Upstream channel offline configuration mechanism. + Added MIB support for new DOCSIS 2.0 modulation + attributes. + Euro-DOCSIS downstream interleave values. + Adjustments to RFC 2670 definitions based on + the MIB review guidelines from the IETF + + + + Operations and Management Area (OPS)." + + REVISION "199908190000Z" + DESCRIPTION + "Initial version, published as RFC 2670. + Modified by Mike St. Johns to fix problems identified by + the first pass of the MIB doctor. Of special note, + docsIfRangingResp and docsIfCmtsInsertionInterval were + obsoleted and replaced by other objects with the same + functionality, but with more appropriate syntax." + ::= { transmission 127 } + + +-- Textual Conventions + +TenthdBmV ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This data type represents power levels that are normally + expressed in dBmV. Units are in tenths of a dBmV; + for example, 5.1 dBmV will be represented as 51." + SYNTAX Integer32 + +TenthdB ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This data type represents power levels that are normally + expressed in dB. Units are in tenths of a dB; + for example, 5.1 dB will be represented as 51." + SYNTAX Integer32 + +DocsisVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the DOCSIS Radio Frequency specification being + referenced. + 'docsis10' indicates DOCSIS 1.0. + 'docsis11' indicates DOCSIS 1.1. + 'docsis20' indicates DOCSIS 2.0." + SYNTAX INTEGER { + docsis10 (1), + docsis11 (2), + docsis20 (3) + } + +DocsisQosVersion ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "Indicates the referenced quality-of-service + level. + 'docsis10 refers to DOCSIS 1.0 Class of + Service queuing services, and 'docsis11' refers + to DOCSIS 1.1 Quality of Service." + SYNTAX INTEGER { + docsis10 (1), + docsis11 (2) + } + +DocsisUpstreamType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the DOCSIS Upstream Channel Type. + 'unknown' means information not available. + 'tdma' is related to TDMA, Time Division + Multiple Access; 'atdma' is related to A-TDMA, + Advanced Time Division Multiple Access, + 'scdma' is related to S-CDMA, Synchronous + Code Division Multiple Access. + 'tdmaAndAtdma is related to simultaneous support of + TDMA and A-TDMA modes." + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3), + tdmaAndAtdma(4) + } + + DocsEqualizerData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the equalizer data + as measured at the receiver interface. + The format of the equalizer follows the structure of the + Transmit Equalization Adjust RNG-RSP TLV of DOCSIS RFI + v2.0 : + 1 byte Main tap location 1..(n + m) + 1 byte Number of forward taps per symbol + 1 byte Number of forward taps: n + 1 byte Number of reverse taps: m + + Following are the equalizer coefficients: + First, forward taps coefficients: + 2 bytes F1 (real), 2 bytes F1 (imag) + + + + ... + 2 bytes Fn (real), 2 bytes Fn (imag) + + Then, reverse taps coefficients: + 2 bytes D1 (real), 2 bytes D1 (imag) + ... + + 2 bytes Dm (real), 2 bytes Dm (imag) + + The equalizer coefficients are considered signed 16-bit + integers in the range from -32768 (0x8000) to 32767 + (0x7FFF). + + DOCSIS specifications require up to a maximum of + 64 equalizer taps (n + m); therefore, this object size + can get up 260 bytes (4 + 4x64). + The minimum object size (other than zero) for a t-spaced + tap with a minimum of 8 symbols will be 36 (4 + 4x8)." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + SYNTAX OCTET STRING(SIZE (0 | 36..260)) + + +docsIfMibObjects OBJECT IDENTIFIER ::= { docsIfMib 1 } +docsIfBaseObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 1 } +docsIfCmObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 2 } +docsIfCmtsObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 3 } + +-- +-- BASE GROUP +-- + +-- +-- The following table is implemented on both the Cable Modem +-- and the Cable Modem Termination System. This table is +-- read only for the CM. +-- + +docsIfDownstreamChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfDownstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of downstream + channels (frequency bands)." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-16, and 6-17." + ::= { docsIfBaseObjects 1 } + +docsIfDownstreamChannelEntry OBJECT-TYPE + SYNTAX DocsIfDownstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides a list of attributes for a single + downstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128)." + INDEX { ifIndex } + ::= { docsIfDownstreamChannelTable 1 } + +DocsIfDownstreamChannelEntry ::= SEQUENCE { + docsIfDownChannelId Integer32, + docsIfDownChannelFrequency Integer32, + docsIfDownChannelWidth Integer32, + docsIfDownChannelModulation INTEGER, + docsIfDownChannelInterleave INTEGER, + docsIfDownChannelPower TenthdBmV, + docsIfDownChannelAnnex INTEGER, + docsIfDownChannelStorageType StorageType + } + +docsIfDownChannelId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Cable Modem Termination System identification of the + downstream channel within this particular MAC interface. + if the interface is down, the object returns the most + current value. If the downstream channel ID is unknown, + this object returns a value of 0." + ::= { docsIfDownstreamChannelEntry 1 } + +docsIfDownChannelFrequency OBJECT-TYPE + SYNTAX Integer32 (0..1000000000) + UNITS "hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The center of the downstream frequency associated with + this channel. This object will return the current tuner + + + + frequency. If a CMTS provides IF output, this object + will return 0, unless this CMTS is in control of the + final downstream frequency. See the associated + compliance object for a description of valid frequencies + that may be written to this object." + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.3.3." + ::= { docsIfDownstreamChannelEntry 2 } + +docsIfDownChannelWidth OBJECT-TYPE + SYNTAX Integer32 (0..16000000) + UNITS "hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bandwidth of this downstream channel. Most + implementations are expected to support a channel width + of 6 MHz (North America) and/or 8 MHz (Europe). See the + associated compliance object for a description of the + valid channel widths for this object." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-17." + ::= { docsIfDownstreamChannelEntry 3 } + +docsIfDownChannelModulation OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + qam64(3), + qam256(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The modulation type associated with this downstream + channel. If the interface is down, this object either + returns the configured value (CMTS), the most current + value (CM), or the value of unknown(1). See the + associated conformance object for write conditions and + limitations. See the reference for specifics on the + modulation profiles implied by qam64 and qam256." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-17." + ::= { docsIfDownstreamChannelEntry 4 } + +docsIfDownChannelInterleave OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + taps64Increment2(6), + taps128Increment1(7), + taps12increment17(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Forward Error Correction (FEC) interleaving used + for this downstream channel. + Values are defined as follows: + taps8Increment16(3): protection 5.9/4.1 usec, + latency .22/.15 msec + taps16Increment8(4): protection 12/8.2 usec, + latency .48/.33 msec + taps32Increment4(5): protection 24/16 usec, + latency .98/.68 msec + taps64Increment2(6): protection 47/33 usec, + latency 2/1.4 msec + taps128Increment1(7): protection 95/66 usec, + latency 4/2.8 msec + taps12increment17(8): protection 18/14 usec, + latency 0.43/0.32 msec + + The value 'taps12increment17' is supported by EuroDOCSIS + cable systems only, and the others by DOCSIS cable systems. + + If the interface is down, this object either returns + the configured value (CMTS), the most current value (CM), + or the value of unknown(1). + The value of other(2) is returned if the interleave + is known but not defined in the above list. + See the associated conformance object for write + conditions and limitations. See the reference for the FEC + configuration described by the setting of this object." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + + + + Table 6-15." + ::= { docsIfDownstreamChannelEntry 5 } + +docsIfDownChannelPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "dBmV" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "At the CMTS, the operational transmit power. At the CM, + the received power level. + If the interface is down, this object either returns + the configured value (CMTS), the most current value (CM) + or the value of 0. See the associated conformance object + for write conditions and limitations. See the reference + for recommended and required power levels." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-16, 6-17." + ::= { docsIfDownstreamChannelEntry 6 } + +docsIfDownChannelAnnex OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + annexA(3), + annexB(4), + annexC(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the conformance of + the implementation to important regional cable standards. + annexA : Annex A from ITU-T J.83 is used. + (equivalent to EN 300 429) + annexB : Annex B from ITU-T J.83 is used. + annexC : Annex C from ITU-T J.83 is used." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.3.1, and H.3.1." + ::= { docsIfDownstreamChannelEntry 7 } + +docsIfDownChannelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + ::= { docsIfDownstreamChannelEntry 8 } + +-- +-- The following table is implemented on both the CM and the CMTS. +-- For the CM, only attached channels appear in the table. For the +-- CM, this table is read-only as well. +-- + +docsIfUpstreamChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfUpstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of attached upstream + channels." + ::= { docsIfBaseObjects 2 } + +docsIfUpstreamChannelEntry OBJECT-TYPE + SYNTAX DocsIfUpstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of attributes for a single upstream channel. For + DOCSIS 2.0 CMTSs, an entry in this table exists for + each ifEntry with an ifType of docsCableUpstreamChannel + (205). + For DOCSIS 1.x CM/CMTSs and DOCSIS 2.0 CMs, an entry in + this table exists for each ifEntry with an ifType of + docsCableUpstream (129). + + For DOCSIS 2.0 CMTSs, two classes of interfaces can be + defined for this table: + o Upstream Physical Interfaces: The traditional DOCSIS + 1.x CMTS upstream interface ifType 129 and the DOCSIS + 2.0 ifType 205 that are functional. In other words, + interfaces that represent upstream receivers within + an RF MAC interface. + Entries of physical interfaces are exposed to the + management interface with their corresponding + ifStack hierarchy and are not administratively + created by this table. + + + + + o Upstream Temporary Interfaces: A fictitious + interface created for the purpose of manipulating + physical interface parameters offline, then + validating prior to updating the target physical + interface. + + In case of a reinitialization of the managed system, + physical interfaces values persist while the temporary + interfaces are not recreated. + + This mechanism helps to minimize service disruptions + originating in situations where a group of interface + parameter values need to be consistent with each other + in SET operations. A temporary buffer + (temporary interface) is provided to allow the CMTS + to validate the parameters offline." + INDEX { ifIndex } + ::= { docsIfUpstreamChannelTable 1 } + +DocsIfUpstreamChannelEntry ::= SEQUENCE { + docsIfUpChannelId Integer32, + docsIfUpChannelFrequency Integer32, + docsIfUpChannelWidth Integer32, + docsIfUpChannelModulationProfile Unsigned32, + docsIfUpChannelSlotSize Unsigned32, + docsIfUpChannelTxTimingOffset Unsigned32, + docsIfUpChannelRangingBackoffStart Integer32, + docsIfUpChannelRangingBackoffEnd Integer32, + docsIfUpChannelTxBackoffStart Integer32, + docsIfUpChannelTxBackoffEnd Integer32, + docsIfUpChannelScdmaActiveCodes Unsigned32, + docsIfUpChannelScdmaCodesPerSlot Integer32, + docsIfUpChannelScdmaFrameSize Unsigned32, + docsIfUpChannelScdmaHoppingSeed Unsigned32, + docsIfUpChannelType DocsisUpstreamType, + docsIfUpChannelCloneFrom InterfaceIndexOrZero, + docsIfUpChannelUpdate TruthValue, + docsIfUpChannelStatus RowStatus, + docsIfUpChannelPreEqEnable TruthValue + } + +docsIfUpChannelId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CMTS identification of the upstream channel." + ::= { docsIfUpstreamChannelEntry 1 } + + + +docsIfUpChannelFrequency OBJECT-TYPE + SYNTAX Integer32 (0..1000000000) + UNITS "hertz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The center of the frequency band associated with this + upstream interface. This object returns 0 if the frequency + is undefined or unknown. Minimum permitted upstream + frequency is 5,000,000 Hz for current technology. See + the associated conformance object for write conditions + and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 4-2." + ::= { docsIfUpstreamChannelEntry 2 } + +docsIfUpChannelWidth OBJECT-TYPE + SYNTAX Integer32 (0..64000000) + UNITS "hertz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The bandwidth of this upstream interface. This object + returns 0 if the interface width is undefined or unknown. + Minimum permitted interface width is currently 200,000 Hz. + See the associated conformance object for write conditions + and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-5." + ::= { docsIfUpstreamChannelEntry 3 } + +docsIfUpChannelModulationProfile OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An entry identical to the docsIfModIndex in the + docsIfCmtsModulationTable that describes this channel. + This channel is further instantiated there by a grouping + of interval usage codes (IUCs) that, together, fully + describe the channel modulation. This object returns 0 if + the docsIfCmtsModulationTable entry does not exist or is + empty. See the associated conformance object for write + conditions and limitations. + + + + Setting this object returns an 'inconsistentValue' + error if the following conditions are not satisfied: + 1. All the IUC entries in the selected modulation profile + MUST have the same value of docsIfCmtsModChannelType. + 2. All of the Modulation parameters in the selected + modulation profile MUST be consistent with the other + parameters in this docsIfUpstreamChannelEntry." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfUpstreamChannelEntry 4 } + +docsIfUpChannelSlotSize OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "ticks" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable to TDMA and ATDMA channel types only. + The number of 6.25 microsecond ticks in each upstream + mini-slot. Returns zero if the value is undefined or + unknown or in case of an SCDMA channel. + See the associated conformance object for write + conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.1.2.4." + ::= { docsIfUpstreamChannelEntry 5 } + +docsIfUpChannelTxTimingOffset OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CM, a measure of the current round trip time + obtained from the ranging offset (initial ranging offset + + ranging offset adjustments). + At the CMTS, the maximum of timing offset, among all the + CMs that are/were present on the channel, taking into + account all ( initial + periodic ) timing offset + corrections that were sent for each of the CMs. Generally, + these measurements are positive, but if the measurements + are negative, the value of this object is zero. Used for + timing of CM upstream transmissions to ensure synchronized + arrivals at the CMTS. + Units are one 64th fraction of 6.25 microseconds." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.19." + ::= { docsIfUpstreamChannelEntry 6 } + +docsIfUpChannelRangingBackoffStart OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random backoff window to use when retrying + Ranging Requests. Expressed as a power of 2. A value of + 16 at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 7 } + +docsIfUpChannelRangingBackoffEnd OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The final random backoff window to use when retrying + Ranging Requests. Expressed as a power of 2. A value of + 16 at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 8 } + +docsIfUpChannelTxBackoffStart OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random backoff window to use when retrying + transmissions. Expressed as a power of 2. A value of 16 + at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 9 } + +docsIfUpChannelTxBackoffEnd OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The final random backoff window to use when retrying + transmissions. Expressed as a power of 2. A value of 16 + at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 10 } + +docsIfUpChannelScdmaActiveCodes OBJECT-TYPE + SYNTAX Unsigned32 (0|64..66|68..70|72|74..78|80..82|84..88 + |90..96|98..100|102|104..106|108 + |110..112|114..126|128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + Number of active codes. Returns zero for + Non-SCDMA channel types. Note that legal + values from 64..128 MUST be non-prime." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.11.2.1." + ::= { docsIfUpstreamChannelEntry 11 } + +docsIfUpChannelScdmaCodesPerSlot OBJECT-TYPE + SYNTAX Integer32(0 | 2..32) + UNITS "codesperMinislots" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + The number of SCDMA codes per mini-slot. + Returns zero if the value is undefined or unknown or in + + + + case of a TDMA or ATDMA channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.11.2.1." + ::= { docsIfUpstreamChannelEntry 12 } + +docsIfUpChannelScdmaFrameSize OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + UNITS "spreadIntervals" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + SCDMA Frame size in units of spreading intervals. + This value returns zero for non-SCDMA Profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.12." + ::= { docsIfUpstreamChannelEntry 13 } + +docsIfUpChannelScdmaHoppingSeed OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + 15-bit seed used for code hopping sequence initialization. + Returns zero for non-SCDMA channel types. + Setting this value to a value different than zero for + non-SCDMA channel types returns the error 'wrongValue'." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.14.1." + ::= { docsIfUpstreamChannelEntry 14 } + +docsIfUpChannelType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the Upstream channel type. + This object returns the value of docsIfCmtsModChannelType + for the modulation profile selected in + docsIfUpChannelModulationProfile for this row." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.1." + ::= { docsIfUpstreamChannelEntry 15 } + +docsIfUpChannelCloneFrom OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the ifIndex value of the physical + interface row entry whose parameters are to be adjusted. + + Upon setting this object to the ifIndex value of a + physical interface, the following interface objects values + are copied to this entry: + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfUpChannelScdmaActiveCodes, + docsIfUpChannelScdmaCodesPerSlot, + docsIfUpChannelScdmaFrameSize, + docsIfUpChannelScdmaHoppingSeed, + docsIfUpChannelType, and + docsIfUpChannelPreEqEnable + Setting this object to the value of a non-existent or + a temporary upstream interface returns the error + 'wrongValue'. + This object MUST contain a value of zero for physical + interfaces entries. + Setting this object in row entries that correspond to + physical interfaces returns the error 'wrongValue'." + ::= { docsIfUpstreamChannelEntry 16 } + +docsIfUpChannelUpdate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used to perform the copy of adjusted parameters from the + temporary interface entry to the physical interface + indicated by the docsIfUpChannelCloneFrom object. The + transfer is initiated through an SNMP SET to 'true' of + + + + this object. + A SET to 'true' fails and returns error 'commitFailed' + if docsIfUpChannelStatus value is 'notInService', which + means that the interface parameters values are not + compatible with each other or have not been validated yet. + Reading this object always returns 'false'." + ::= { docsIfUpstreamChannelEntry 17 } + +docsIfUpChannelStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is only used for the creation of a temporary + upstream row with the purpose of updating the parameters + of a physical upstream channel entry. + + The following restrictions apply to this object: + 1. This object is not writable for physical interfaces. + 2. Temporary interface entries are only created by a SET + of this object to createandWait(5). + 3. ifAdminStatus from the Interface MIB RFC 2863 is used + to take a physical upstream channel offline, to be + consistent with DOCSIS 1.x operation, as indicated in + RFC 2670. + In addition, + o ifAdminStatus 'down' is reflected in this object + as 'notInService'. + o ifOperStatus 'down' while ifAdminStatus 'up' is + reflected in this object as 'notInservice'. + 4. Temporary created rows MUST be set to 'active' with + the purpose of validating upstream parameter + consistency prior to transferring the parameters to the + physical interface. + + Below is a mandatory procedure for adjusting the values + of a physical interface: + 1. Create a temporary interface entry through an SNMP SET + using 'createAndWait'. At this point, the RowStatus + reports 'notReady'. + The Manager entity uses an ifIndex value outside the + operational range of the physical interfaces for the + creation of a temporary interface. + 2. Set the docsIfUpChannelCloneFrom object to the ifIndex + value of the physical row to update. Now + docsIfUpChannelStatus reports 'notInService'. + 3. Change the upstream parameters to the desired values + in the temporary row. + + + + 4. Validate that all parameters are consistent by setting + docsIfUpChannelStatus to 'active'. A failure to set the + RowStatus to 'active' returns the error 'commitFailed', + which means the parameters are not compatible with the + target physical interface. + 5. With docsIfUpChannelStatus 'active', transfer the + parameters to the target physical interface by setting + the object docsIfUpChannelUpdate to 'true'. + 6. Delete the temporary row by setting + docsIfUpChannelStatus to 'destroy'." + ::= { docsIfUpstreamChannelEntry 18 } + +docsIfUpChannelPreEqEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "At the CMTS, this object is used to enable or disable + pre-equalization on the upstream channel represented by + this table instance. At the CM, this object is read-only + and reflects the status of pre-equalization as represented + in the RNG-RSP. Pre-equalization is considered enabled at + the CM if a RNG-RSP with pre-equalization data has been + received at least once since the last mac + reinitialization." + DEFVAL {false} + ::= { docsIfUpstreamChannelEntry 19 } + +-- The following table describes the attributes of each class of +-- service. The entries in this table are referenced from the +-- docsIfServiceEntries. They exist as a separate table in order to +-- reduce redundant information in docsIfServiceTable. +-- +-- This table is implemented at both the CM and the CMTS. +-- The CM need only maintain entries for the classes of service +-- referenced by its docsIfCmServiceTable. +-- + +docsIfQosProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfQosProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes for each class of service." + ::= { docsIfBaseObjects 3 } + +docsIfQosProfileEntry OBJECT-TYPE + SYNTAX DocsIfQosProfileEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes for a single class of service. + If implemented as read-create in the Cable Modem + Termination System, creation of entries in this table is + controlled by the value of + docsIfCmtsQosProfilePermissions. + + If implemented as read-only, entries are created based + on information in REG-REQ MAC messages received from + cable modems (for Cable Modem Termination System), or + based on information extracted from the TFTP option file + (for Cable Modem). + In the Cable Modem Termination System, read-only entries + are removed if no longer referenced by + docsIfCmtsServiceTable. + + An entry in this table MUST not be removed while it is + referenced by an entry in docsIfCmServiceTable (Cable + Modem) or docsIfCmtsServiceTable (Cable Modem Termination + System). + + An entry in this table SHOULD NOT be changeable while + it is referenced by an entry in docsIfCmtsServiceTable. + + If this table is created automatically, there SHOULD only + be a single entry for each Class of Service. Multiple + entries with the same Class of Service parameters are NOT + RECOMMENDED." + INDEX { docsIfQosProfIndex } + ::= { docsIfQosProfileTable 1 } + +DocsIfQosProfileEntry ::= SEQUENCE { + docsIfQosProfIndex Integer32, + docsIfQosProfPriority Integer32, + docsIfQosProfMaxUpBandwidth Integer32, + docsIfQosProfGuarUpBandwidth Integer32, + docsIfQosProfMaxDownBandwidth Integer32, + docsIfQosProfMaxTxBurst Integer32, -- deprecated + docsIfQosProfBaselinePrivacy TruthValue, + docsIfQosProfStatus RowStatus, + docsIfQosProfMaxTransmitBurst Integer32, + docsIfQosProfStorageType StorageType + } + +docsIfQosProfIndex OBJECT-TYPE + SYNTAX Integer32 (1..16383) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies an entry + in the docsIfQosProfileTable." + ::= { docsIfQosProfileEntry 1 } + +docsIfQosProfPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A relative priority assigned to this service when + allocating bandwidth. Zero indicates lowest priority + and seven indicates highest priority. + Interpretation of priority is device-specific. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 2 } + +docsIfQosProfMaxUpBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum upstream bandwidth, in bits per second, + allowed for a service with this service class. + Zero if there is no restriction of upstream bandwidth. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 3 } + +docsIfQosProfGuarUpBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum guaranteed upstream bandwidth, in bits per second, + + + + allowed for a service with this service class. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 4 } + +docsIfQosProfMaxDownBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum downstream bandwidth, in bits per second, + allowed for a service with this service class. + Zero if there is no restriction of downstream bandwidth. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 5 } + +docsIfQosProfMaxTxBurst OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "mini-slots" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The maximum number of mini-slots that may be requested + for a single upstream transmission. + A value of zero means there is no limit. + MUST NOT be changed while this row is active. + This object has been deprecated and replaced by + docsIfQosProfMaxTransmitBurst, to fix a mismatch + of the units and value range with respect to the DOCSIS + Maximum Upstream Channel Transmit Burst Configuration + Setting." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 6 } + + + +docsIfQosProfBaselinePrivacy OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether Baseline Privacy is enabled for this + service class. + MUST NOT be changed while this row is active." + DEFVAL { false } + ::= { docsIfQosProfileEntry 7 } + +docsIfQosProfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is object is used to create or delete rows in + this table. This object MUST NOT be changed from active + while the row is referenced by any entry in either + docsIfCmServiceTable (on the CM) or + docsIfCmtsServiceTable (on the CMTS)." + ::= { docsIfQosProfileEntry 8 } + +docsIfQosProfMaxTransmitBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bytes that may be requested for a + single upstream transmission. A value of zero means there + is no limit. Note: This value does not include any + physical layer overhead. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 9 } + +docsIfQosProfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + + + + do not require write operations for writable + objects." + ::= { docsIfQosProfileEntry 10 } + +docsIfSignalQualityTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfSignalQualityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At the CM, describes the PHY signal quality of downstream + channels. At the CMTS, this object describes the PHY + signal quality of upstream channels. At the CMTS, this + table MAY exclude contention intervals." + ::= { docsIfBaseObjects 4 } + +docsIfSignalQualityEntry OBJECT-TYPE + SYNTAX DocsIfSignalQualityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At the CM, this object describes the PHY characteristics of + a downstream channel. At the CMTS, it describes the PHY + signal quality of an upstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128) for Cable Modems. + For DOCSIS 1.1 Cable Modem Termination Systems, an entry + exists for each ifEntry with an ifType of + docsCableUpstream (129). + For DOCSIS 2.0 Cable Modem Termination Systems, an entry + exists for each ifEntry with an ifType of + docsCableUpstreamChannel (205)." + INDEX { ifIndex } + ::= { docsIfSignalQualityTable 1 } + +DocsIfSignalQualityEntry ::= SEQUENCE { + docsIfSigQIncludesContention TruthValue, + docsIfSigQUnerroreds Counter32, + docsIfSigQCorrecteds Counter32, + docsIfSigQUncorrectables Counter32, + docsIfSigQSignalNoise TenthdB, + docsIfSigQMicroreflections Integer32, + docsIfSigQEqualizationData DocsEqualizerData, + docsIfSigQExtUnerroreds Counter64, + docsIfSigQExtCorrecteds Counter64, + docsIfSigQExtUncorrectables Counter64 + } + +docsIfSigQIncludesContention OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if this CMTS includes contention intervals in + the counters in this table. Always false(2) for CMs." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4.1" + ::= { docsIfSignalQualityEntry 1 } + +docsIfSigQUnerroreds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel without error. + This includes all codewords, whether or not they + were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 2 } + +docsIfSigQCorrecteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with correctable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + + + + ::= { docsIfSignalQualityEntry 3 } + +docsIfSigQUncorrectables OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with uncorrectable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 4 } + +docsIfSigQSignalNoise OBJECT-TYPE + SYNTAX TenthdB + UNITS "TenthdB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Signal/Noise ratio as perceived for this channel. + At the CM, this object describes the Signal/Noise of the + downstream channel. At the CMTS, it describes the + average Signal/Noise of the upstream channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfSignalQualityEntry 5 } + +docsIfSigQMicroreflections OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "-dBc" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Microreflections, including in-channel response + as perceived on this interface, measured in dBc below + the signal level. + This object is not assumed to return an absolutely + accurate value, but it gives a rough indication + + + + of microreflections received on this interface. + It is up to the implementer to provide information + as accurately as possible." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfSignalQualityEntry 6 } + +docsIfSigQEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CM, this object returns the equalization data for + the downstream channel. + + At the CMTS, this object is not applicable and is not + instantiated. Note that previous CMTS implementations + may instantiate this object in two ways: + - An equalization value indicating an equalization + average for the upstream channel. Those values have + vendor-dependent interpretations. + - Return a zero-length OCTET STRING to indicate that + the value is unknown or if there is no equalization + data available or defined." + REFERENCE + "DOCSIS Radio Frequency Interface Specification, + Figure 6-23." + ::= { docsIfSignalQualityEntry 7 } + + +docsIfSigQExtUnerroreds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel without error. + This includes all codewords, whether or not they + were part of frames destined for this device. + This is the 64-bit version of docsIfSigQUnerroreds. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 8 } + +docsIfSigQExtCorrecteds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with correctable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + This is the 64-bit version of docsIfSigQCorrecteds. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 9 } + +docsIfSigQExtUncorrectables OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with uncorrectable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + This is the 64-bit version of docsIfSigQUncorrectables. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, 6.3.6." + ::= { docsIfSignalQualityEntry 10 } + +-- +-- DOCSIS Version of the device +-- + + + + +docsIfDocsisBaseCapability OBJECT-TYPE + SYNTAX DocsisVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of the DOCSIS capability of the device." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + ::= { docsIfBaseObjects 5 } + +-- +-- CABLE MODEM GROUP +-- + +-- +-- The CM MAC Table +-- + +docsIfCmMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of each CM MAC interface, + extending the information available from ifEntry." + ::= { docsIfCmObjects 1 } + +docsIfCmMacEntry OBJECT-TYPE + SYNTAX DocsIfCmMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects describing attributes of + each MAC entry, extending the information in ifEntry. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmMacTable 1 } + +DocsIfCmMacEntry ::= SEQUENCE { + docsIfCmCmtsAddress MacAddress, + docsIfCmCapabilities BITS, + docsIfCmRangingRespTimeout TimeTicks, + docsIfCmRangingTimeout TimeInterval + } + + + + +docsIfCmCmtsAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the CMTS that is believed to control this MAC + domain. At the CM, this will be the source address from + SYNC, MAP, and other MAC-layer messages. If the CMTS is + unknown, returns 00-00-00-00-00-00." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.2.2." + ::= { docsIfCmMacEntry 1 } + +docsIfCmCapabilities OBJECT-TYPE + SYNTAX BITS { + atmCells(0), + concatenation(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the capabilities of the MAC implementation + at this interface. Note that packet transmission is + always supported. Therefore, there is no specific bit + required to explicitly indicate this capability. + Note that BITS objects are encoded most significant bit + first. For example, if bit 1 is set, the value of this + object is the octet string '40'H." + ::= { docsIfCmMacEntry 2 } + +docsIfCmRangingRespTimeout OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS obsolete + DESCRIPTION + "Waiting time for a Ranging Response packet. + This object has been obsoleted and replaced by + docsIfCmRangingTimeout to correct the typing to + TimeInterval." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.1.6." + DEFVAL { 20 } + ::= { docsIfCmMacEntry 3 } + + + + +docsIfCmRangingTimeout OBJECT-TYPE + SYNTAX TimeInterval + UNITS "HundredOfSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Waiting time for a Ranging Response packet. + This object MUST NOT persist at reinitialization + of the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.1.6, timer T3." + DEFVAL { 20 } + ::= { docsIfCmMacEntry 4 } + +-- +-- CM status table. +-- This table is implemented only at the CM. +-- + +docsIfCmStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maintains a number of status objects + and counters for Cable Modems." + ::= { docsIfCmObjects 2 } + +docsIfCmStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of status objects and counters for a single MAC + layer instance in Cable Modem. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmStatusTable 1 } + +DocsIfCmStatusEntry ::= SEQUENCE { + docsIfCmStatusValue INTEGER, + docsIfCmStatusCode OCTET STRING, + docsIfCmStatusTxPower TenthdBmV, + docsIfCmStatusResets Counter32, + docsIfCmStatusLostSyncs Counter32, + + + + docsIfCmStatusInvalidMaps Counter32, + docsIfCmStatusInvalidUcds Counter32, + docsIfCmStatusInvalidRangingResponses Counter32, + docsIfCmStatusInvalidRegistrationResponses Counter32, + docsIfCmStatusT1Timeouts Counter32, + docsIfCmStatusT2Timeouts Counter32, + docsIfCmStatusT3Timeouts Counter32, + docsIfCmStatusT4Timeouts Counter32, + docsIfCmStatusRangingAborteds Counter32, + docsIfCmStatusDocsisOperMode DocsisQosVersion, + docsIfCmStatusModulationType DocsisUpstreamType, + docsIfCmStatusEqualizationData DocsEqualizerData, + docsIfCmStatusUCCs Counter32, + docsIfCmStatusUCCFails Counter32 + } + +docsIfCmStatusValue OBJECT-TYPE + SYNTAX INTEGER { + other(1), + notReady(2), + notSynchronized(3), + phySynchronized(4), + usParametersAcquired(5), + rangingComplete(6), + ipComplete(7), + todEstablished(8), + securityEstablished(9), + paramTransferComplete(10), + registrationComplete(11), + operational(12), + accessDenied(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current Cable Modem connectivity state, as specified + in the RF Interface Specification. Interpretations for + state values 1-12 are clearly outlined in the SP-RFI + reference given below. + The state value accessDenied(13) indicates the CMTS has + sent a Registration Aborted message to the CM. The same + state is reported as accessDenied(7) by the CMTS object + docsIfCmtsCmStatusValue." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 11.2. + Data-Over-Cable Service Interface Specifications: + + + + Operations Support System Interface Specification + SP-OSSIv2.0-I09-050812, Section 6.3.4.2." + ::= { docsIfCmStatusEntry 1 } + +docsIfCmStatusCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE( 0 | 5 | 6 )) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status code for a Cable Modem as defined in the + OSSI Specification. The status code consists + of a single character indicating error groups, followed + by a two- or three-digit number indicating the status + condition, followed by a decimal. + An example of a returned value could be 'T101.0'. + The zero-length OCTET STRING indicates no status code yet + registered." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I09-050812, Annex D." + ::= { docsIfCmStatusEntry 2 } + + +docsIfCmStatusTxPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "TenthdBmV" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational transmit power for the attached upstream + channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.18." + ::= { docsIfCmStatusEntry 3 } + +docsIfCmStatusResets OBJECT-TYPE + SYNTAX Counter32 + UNITS "resets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM reset or initialized this + interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + + + + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 4 } + +docsIfCmStatusLostSyncs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM lost synchronization with + the downstream channel. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.2." + ::= { docsIfCmStatusEntry 5 } + +docsIfCmStatusInvalidMaps OBJECT-TYPE + SYNTAX Counter32 + UNITS "maps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid MAP messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4." + ::= { docsIfCmStatusEntry 6 } + +docsIfCmStatusInvalidUcds OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid UCD messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.3." + ::= { docsIfCmStatusEntry 7 } + +docsIfCmStatusInvalidRangingResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid ranging response + messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.6." + ::= { docsIfCmStatusEntry 8 } + +docsIfCmStatusInvalidRegistrationResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid registration + response messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.8." + ::= { docsIfCmStatusEntry 9 } + +docsIfCmStatusT1Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Number of times counter T1 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 10 } + +docsIfCmStatusT2Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T2 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 11 } + +docsIfCmStatusT3Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T3 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 12 } + +docsIfCmStatusT4Timeouts OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T4 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 13 } + +docsIfCmStatusRangingAborteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the ranging process was aborted + by the CMTS. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3.3." + ::= { docsIfCmStatusEntry 14 } + +docsIfCmStatusDocsisOperMode OBJECT-TYPE + SYNTAX DocsisQosVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the device has registered using 1.0 + Class of Service or 1.1 Quality of Service. + An unregistered CM SHOULD indicate 'docsis11' for a + docsIfDocsisBaseCapability value of DOCSIS 1.1/2.0. An + unregistered CM SHOULD indicate 'docsis10' for a + docsIfDocsisBaseCapability value of DOCSIS 1.0." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + + + + ::= { docsIfCmStatusEntry 15 } + +docsIfCmStatusModulationType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates modulation type status currently used by the + CM. Since this object specifically identifies PHY mode, + the shared upstream channel type is not permitted." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.1." + + ::= { docsIfCmStatusEntry 16 } + +docsIfCmStatusEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Pre-equalization data for this CM after convolution with + data indicated in the RNG-RSP. This data is valid when + docsIfUpChannelPreEqEnable is set to true." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + ::= { docsIfCmStatusEntry 17 } + +docsIfCmStatusUCCs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful Upstream Channel Change + transactions. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 18 } + +docsIfCmStatusUCCFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failed Upstream Channel Change + transactions. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 19 } + +-- +-- The Cable Modem Service Table +-- + +docsIfCmServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of each upstream service queue + on a CM." + ::= { docsIfCmObjects 3 } + +docsIfCmServiceEntry OBJECT-TYPE + SYNTAX DocsIfCmServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of an upstream bandwidth service + queue. + An entry in this table exists for each Service ID. + The primary index is an ifIndex with an ifType of + docsCableMaclayer(127)." + INDEX { ifIndex, docsIfCmServiceId } + ::= { docsIfCmServiceTable 1 } + +DocsIfCmServiceEntry ::= SEQUENCE { + docsIfCmServiceId Integer32, + docsIfCmServiceQosProfile Integer32, + docsIfCmServiceTxSlotsImmed Counter32, + docsIfCmServiceTxSlotsDed Counter32, + docsIfCmServiceTxRetries Counter32, + docsIfCmServiceTxExceededs Counter32, + docsIfCmServiceRqRetries Counter32, + docsIfCmServiceRqExceededs Counter32, + docsIfCmServiceExtTxSlotsImmed Counter64, + docsIfCmServiceExtTxSlotsDed Counter64 + + + + } + +docsIfCmServiceId OBJECT-TYPE + SYNTAX Integer32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies a service queue for upstream bandwidth. The + attributes of this service queue are shared between the + CM and the CMTS. The CMTS allocates upstream bandwidth + to this service queue based on requests from the CM and + on the class of service associated with this queue." + ::= { docsIfCmServiceEntry 1 } + +docsIfCmServiceQosProfile OBJECT-TYPE + SYNTAX Integer32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index in docsIfQosProfileTable describing the quality + of service attributes associated with this particular + service. If no associated entry in docsIfQosProfileTable + exists, this object returns a value of zero." + ::= { docsIfCmServiceEntry 2 } + +docsIfCmServiceTxSlotsImmed OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in immediate (contention) mode. This + includes only those PDUs that are presumed to have + arrived at the head-end (i.e., those that were explicitly + acknowledged). It does not include retransmission attempts + or mini-slots used by requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 3 } + +docsIfCmServiceTxSlotsDed OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in dedicated mode (i.e., as a result + of a unicast Data Grant). + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 4 } + +docsIfCmServiceTxRetries OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of attempts to transmit data PDUs containing + requests for acknowledgment that did not result in + acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 5 } + +docsIfCmServiceTxExceededs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data PDU transmission failures due to + excessive retries without acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 6 } + +docsIfCmServiceRqRetries OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of attempts to transmit bandwidth requests + that did not result in acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 7 } + +docsIfCmServiceRqExceededs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests for bandwidth that failed due to + excessive retries without acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 8 } + +docsIfCmServiceExtTxSlotsImmed OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in immediate (contention) mode. This + includes only those PDUs that are presumed to have + arrived at the head-end (i.e., those that were explicitly + acknowledged). It does not include retransmission attempts + or mini-slots used by requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 9 } + +docsIfCmServiceExtTxSlotsDed OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in dedicated mode (i.e., as a result + of a unicast Data Grant). + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 10 } + +-- +-- CMTS GROUP +-- + +-- +-- The CMTS MAC Table +-- + +docsIfCmtsMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsMacEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Describes the attributes of each CMTS MAC interface, + extending the information available from ifEntry. + Mandatory for all CMTS devices." + ::= { docsIfCmtsObjects 1 } + +docsIfCmtsMacEntry OBJECT-TYPE + SYNTAX DocsIfCmtsMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects describing attributes of each + MAC entry, extending the information in ifEntry. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmtsMacTable 1 } + +DocsIfCmtsMacEntry ::= SEQUENCE { + docsIfCmtsCapabilities BITS, + docsIfCmtsSyncInterval Integer32, + docsIfCmtsUcdInterval Integer32, + docsIfCmtsMaxServiceIds Integer32, + docsIfCmtsInsertionInterval TimeTicks, -- Obsolete + docsIfCmtsInvitedRangingAttempts Integer32, + docsIfCmtsInsertInterval TimeInterval, + docsIfCmtsMacStorageType StorageType + } + +docsIfCmtsCapabilities OBJECT-TYPE + SYNTAX BITS { + atmCells(0), + concatenation(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the capabilities of the CMTS MAC + implementation at this interface. Note that packet + transmission is always supported. Therefore, there + is no specific bit required to explicitly indicate + this capability. + Note that BITS objects are encoded most significant bit + first. For example, if bit 1 is set, the value of this + object is the octet string '40'H." + ::= { docsIfCmtsMacEntry 1 } + +docsIfCmtsSyncInterval OBJECT-TYPE + + + + SYNTAX Integer32 (1..200) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between CMTS transmission of successive SYNC + messages at this interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3." + ::= { docsIfCmtsMacEntry 2 } + +docsIfCmtsUcdInterval OBJECT-TYPE + SYNTAX Integer32 (1..2000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between CMTS transmission of successive + Upstream Channel Descriptor messages for each upstream + channel at this interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3" + ::= { docsIfCmtsMacEntry 3 } + +docsIfCmtsMaxServiceIds OBJECT-TYPE + SYNTAX Integer32 (1..16383) + UNITS "SIDs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of service IDs that may be + simultaneously active." + ::= { docsIfCmtsMacEntry 4 } + +docsIfCmtsInsertionInterval OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS obsolete + DESCRIPTION + "The amount of time to elapse between each broadcast + initial maintenance grant. Broadcast initial maintenance + grants are used to allow new cable modems to join the + network. Zero indicates that a vendor-specific algorithm + is used instead of a fixed time. The maximum amount of + + + + time permitted by the specification is 2 seconds. + This object has been obsoleted and replaced by + docsIfCmtsInsertInterval to fix a SYNTAX typing problem." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex B." + ::= { docsIfCmtsMacEntry 5 } + +docsIfCmtsInvitedRangingAttempts OBJECT-TYPE + SYNTAX Integer32 (0..1024) + UNITS "attempts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of attempts to make on invitations + for ranging requests. A value of zero means the system + SHOULD attempt to range forever." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3.3 and Annex B." + ::= { docsIfCmtsMacEntry 6 } + +docsIfCmtsInsertInterval OBJECT-TYPE + SYNTAX TimeInterval + UNITS "HundredOfSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time to elapse between each broadcast + initial maintenance grant. Broadcast initial maintenance + grants are used to allow new cable modems to join the + network. Zero indicates that a vendor-specific algorithm + is used instead of a fixed time. The maximum amount of + time permitted by the specification is 2 seconds." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex B." + ::= { docsIfCmtsMacEntry 7 } + +docsIfCmtsMacStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + ::= { docsIfCmtsMacEntry 8 } + +-- +-- +-- CMTS status table. +-- + +docsIfCmtsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "For the MAC layer, this group maintains a number of + status objects and counters." + ::= { docsIfCmtsObjects 2 } + +docsIfCmtsStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmtsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status entry for a single MAC layer. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmtsStatusTable 1 } + +DocsIfCmtsStatusEntry ::= SEQUENCE { + docsIfCmtsStatusInvalidRangeReqs Counter32, + docsIfCmtsStatusRangingAborteds Counter32, + docsIfCmtsStatusInvalidRegReqs Counter32, + docsIfCmtsStatusFailedRegReqs Counter32, + docsIfCmtsStatusInvalidDataReqs Counter32, + docsIfCmtsStatusT5Timeouts Counter32 + } + +docsIfCmtsStatusInvalidRangeReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid RNG-REQ messages received on + this interface. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.5." + ::= { docsIfCmtsStatusEntry 1 } + +docsIfCmtsStatusRangingAborteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts ranging attempts that were explicitly + aborted by the CMTS. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.6." + ::= { docsIfCmtsStatusEntry 2 } + +docsIfCmtsStatusInvalidRegReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid REG-REQ messages received on + this interface; that is, syntax, out of range parameters, + or erroneous requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.7." + ::= { docsIfCmtsStatusEntry 3 } + +docsIfCmtsStatusFailedRegReqs OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts failed registration attempts. Included + are docsIfCmtsStatusInvalidRegReqs, authentication, and + class of service failures. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.7." + ::= { docsIfCmtsStatusEntry 4 } + +docsIfCmtsStatusInvalidDataReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid data request messages + received on this interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsStatusEntry 5 } + +docsIfCmtsStatusT5Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times counter T5 + expired on this interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmtsStatusEntry 6 } + + + +-- +-- CM status table (within CMTS). +-- This table is implemented only at the CMTS. +-- It contains per-CM status information available in the CMTS. +-- + +docsIfCmtsCmStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects in the CMTS, maintained for each + cable modem connected to this CMTS." + ::= { docsIfCmtsObjects 3 } + +docsIfCmtsCmStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmtsCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status information for a single cable modem. + An entry in this table exists for each cable modem + that is connected to the CMTS implementing this table." + INDEX { docsIfCmtsCmStatusIndex } + ::= { docsIfCmtsCmStatusTable 1 } + +DocsIfCmtsCmStatusEntry ::= SEQUENCE { + docsIfCmtsCmStatusIndex Integer32, + docsIfCmtsCmStatusMacAddress MacAddress, + docsIfCmtsCmStatusIpAddress IpAddress, -- deprecated + docsIfCmtsCmStatusDownChannelIfIndex InterfaceIndexOrZero, + docsIfCmtsCmStatusUpChannelIfIndex InterfaceIndexOrZero, + docsIfCmtsCmStatusRxPower TenthdBmV, + docsIfCmtsCmStatusTimingOffset Unsigned32, + docsIfCmtsCmStatusEqualizationData DocsEqualizerData, + docsIfCmtsCmStatusValue INTEGER, + docsIfCmtsCmStatusUnerroreds Counter32, + docsIfCmtsCmStatusCorrecteds Counter32, + docsIfCmtsCmStatusUncorrectables Counter32, + docsIfCmtsCmStatusSignalNoise TenthdB, + docsIfCmtsCmStatusMicroreflections Integer32, + docsIfCmtsCmStatusExtUnerroreds Counter64, + docsIfCmtsCmStatusExtCorrecteds Counter64, + docsIfCmtsCmStatusExtUncorrectables Counter64, + docsIfCmtsCmStatusDocsisRegMode DocsisQosVersion, + docsIfCmtsCmStatusModulationType DocsisUpstreamType, + docsIfCmtsCmStatusInetAddressType InetAddressType, + docsIfCmtsCmStatusInetAddress InetAddress, + + + + docsIfCmtsCmStatusValueLastUpdate TimeStamp, + docsIfCmtsCmStatusHighResolutionTimingOffset Unsigned32 + } + +docsIfCmtsCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index value to uniquely identify an entry in this table. + For an individual cable modem, this index value SHOULD + NOT change during CMTS uptime." + ::= { docsIfCmtsCmStatusEntry 1 } + +docsIfCmtsCmStatusMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "MAC address of the cable modem. If the cable modem has + multiple MAC addresses, this is the MAC address associated + with the Cable interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.2.2." + ::= { docsIfCmtsCmStatusEntry 2 } + +docsIfCmtsCmStatusIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "IP address of this cable modem. If the cable modem has no + IP address assigned, or the IP address is unknown, this + object returns a value of 0.0.0.0. If the cable modem has + multiple IP addresses, this object returns the IP address + associated with the Cable interface. + This object has been deprecated and replaced by + docsIfCmtsCmStatusInetAddressType and + docsIfCmtsCmStatusInetAddress, to enable IPv6 addressing + in the future." + ::= { docsIfCmtsCmStatusEntry 3 } + +docsIfCmtsCmStatusDownChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "IfIndex of the downstream channel that this CM is + connected to. If the downstream channel is unknown, this + object returns a value of zero." + ::= { docsIfCmtsCmStatusEntry 4 } + +docsIfCmtsCmStatusUpChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For DOCSIS 2.0, indicates the ifIndex of the logical + upstream channel (ifType 205) this CM is connected to. + For DOCSIS 1.x, indicates the ifIndex of the upstream + channel (ifType 129) this CM is connected to. + If the upstream channel is unknown, this object + returns a value of zero." + ::= { docsIfCmtsCmStatusEntry 5 } + +docsIfCmtsCmStatusRxPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "ThenthdBmV" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receive power as perceived for upstream data from + this cable modem. + If the receive power is unknown, this object returns + a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.18." + ::= { docsIfCmtsCmStatusEntry 6 } + +docsIfCmtsCmStatusTimingOffset OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A measure of the current round trip time for this CM. + Used for timing of CM upstream transmissions to ensure + synchronized arrivals at the CMTS. Units are in terms + of (6.25 microseconds/64). Returns zero if the value + is unknown. + For channels requiring finer resolution, please refer to + object docsIfCmtsCmStatusHighResolutionTimingOffset." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.17." + ::= { docsIfCmtsCmStatusEntry 7 } + +docsIfCmtsCmStatusEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Equalization data for this CM, as measured by the CMTS. + Returns the zero-length OCTET STRING if the value is + unknown or if there is no equalization data available + or defined." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + ::= { docsIfCmtsCmStatusEntry 8 } + +docsIfCmtsCmStatusValue OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ranging(2), + rangingAborted(3), + rangingComplete(4), + ipComplete(5), + registrationComplete(6), + accessDenied(7), + operational(8), + -- value 8 should not be used + registeredBPIInitializing(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current cable modem connectivity state, as specified + in the RF Interface Specification. Returned status + information is the CM status, as assumed by the CMTS, + and indicates the following events: + other(1) + Any state other than below. + ranging(2) + The CMTS has received an Initial Ranging Request + message from the CM, and the ranging process is not + yet complete. + rangingAborted(3) + The CMTS has sent a Ranging Abort message to the CM. + + + + rangingComplete(4) + The CMTS has sent a Ranging Complete message to the CM. + ipComplete(5) + The CMTS has received a DHCP reply message and + forwarded it to the CM. + registrationComplete(6) + The CMTS has sent a Registration Response message to + the CM. + accessDenied(7) + The CMTS has sent a Registration Aborted message + to the CM. + operational(8) + Value 8 is considered reserved and should not be defined + in future revisions of this MIB module to avoid conflict + with documented implementations that support value 8 to + indicate operational state after completing the BPI + initialization process. + registeredBPIInitializing(9) + Baseline Privacy (BPI) is enabled and the CMTS is in the + process of completing BPI initialization. This state + MAY last for a significant length of time if failures + occur during the initialization process. After + completion of BPI initialization, the CMTS will report + registrationComplete(6). + The CMTS only needs to report states it is able to + detect." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 11.2." + ::= { docsIfCmtsCmStatusEntry 9 } + +docsIfCmtsCmStatusUnerroreds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received without error from this cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 10 } + + + +docsIfCmtsCmStatusCorrecteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with correctable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 11 } + +docsIfCmtsCmStatusUncorrectables OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with uncorrectable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 12 } + +docsIfCmtsCmStatusSignalNoise OBJECT-TYPE + SYNTAX TenthdB + UNITS "TenthdB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Signal/Noise ratio as perceived for upstream data from + this cable modem. + If the Signal/Noise is unknown, this object returns + a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2." + ::= { docsIfCmtsCmStatusEntry 13 } + +docsIfCmtsCmStatusMicroreflections OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "-dBc" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total microreflections, including in-channel response + as perceived on this interface, measured in dBc below + the signal level. + This object is not assumed to return an absolutely + accurate value, but it gives a rough indication + of microreflections received on this interface. + It is up to the implementer to provide information + as accurately as possible. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfCmtsCmStatusEntry 14 } + +docsIfCmtsCmStatusExtUnerroreds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received without error from this cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 15 } + +docsIfCmtsCmStatusExtCorrecteds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with correctable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 16 } + +docsIfCmtsCmStatusExtUncorrectables OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with uncorrectable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 17 } + +docsIfCmtsCmStatusDocsisRegMode OBJECT-TYPE + SYNTAX DocsisQosVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the CM has registered using 1.0 + Class of Service or 1.1 Quality of Service." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + ::= { docsIfCmtsCmStatusEntry 18 } + +docsIfCmtsCmStatusModulationType OBJECT-TYPE + SYNTAX DocsisUpstreamType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates modulation type currently used by the CM. Since + this object specifically identifies PHY mode, the shared + type is not permitted. If the upstream channel is + unknown, this object returns a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfCmtsCmStatusEntry 19 } + +docsIfCmtsCmStatusInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of internet address of + docsIfCmtsCmStatusInetAddress. If the cable modem + internet address is unassigned or unknown, then the + value of this object is unknown(0)." + ::= { docsIfCmtsCmStatusEntry 20 } + +docsIfCmtsCmStatusInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Internet address of this cable modem. If the Cable + Modem has no Internet address assigned, or the Internet + address is unknown, the value of this object is the + zero-length OCTET STRING. If the cable modem has + multiple Internet addresses, this object returns the + Internet address associated with the Cable + (i.e., RF MAC) interface." + ::= { docsIfCmtsCmStatusEntry 21 } + +docsIfCmtsCmStatusValueLastUpdate OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when docsIfCmtsCmStatusValue + was last updated." + ::= { docsIfCmtsCmStatusEntry 22 } + +docsIfCmtsCmStatusHighResolutionTimingOffset OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A measure of the current round trip time for this CM. + Used for timing of CM upstream transmissions to ensure + synchronized arrivals at the CMTS. Units are in terms + of (6.25 microseconds/(64*256)). Returns zero if the value + is unknown. + This is the high resolution version of object + docsIfCmtsCmStatusTimingOffset, for channels requiring + finer resolution." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.17." + ::= { docsIfCmtsCmStatusEntry 23 } + +-- +-- The CMTS Service Table. +-- + +docsIfCmtsServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of upstream service queues + in a Cable Modem Termination System." + ::= { docsIfCmtsObjects 4 } + +docsIfCmtsServiceEntry OBJECT-TYPE + SYNTAX DocsIfCmtsServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of a single upstream bandwidth + service queue. + Entries in this table exist for each ifEntry with an + ifType of docsCableMaclayer(127), and for each service + queue (Service ID) within this MAC layer. + Entries in this table are created with the creation of + individual Service IDs by the MAC layer and removed + when a Service ID is removed." + INDEX { ifIndex, docsIfCmtsServiceId } + ::= { docsIfCmtsServiceTable 1 } + +DocsIfCmtsServiceEntry ::= SEQUENCE { + + + + docsIfCmtsServiceId Integer32, + docsIfCmtsServiceCmStatusIndex Integer32, -- deprecated + docsIfCmtsServiceAdminStatus INTEGER, + docsIfCmtsServiceQosProfile Integer32, + docsIfCmtsServiceCreateTime TimeStamp, + docsIfCmtsServiceInOctets Counter32, + docsIfCmtsServiceInPackets Counter32, + docsIfCmtsServiceNewCmStatusIndex Integer32 + } + +docsIfCmtsServiceId OBJECT-TYPE + SYNTAX Integer32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies a service queue for upstream bandwidth. The + attributes of this service queue are shared between the + Cable Modem and the Cable Modem Termination System. + The CMTS allocates upstream bandwidth to this service + queue based on requests from the CM and on the class of + service associated with this queue." + ::= { docsIfCmtsServiceEntry 1 } + +docsIfCmtsServiceCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Pointer to an entry in docsIfCmtsCmStatusTable identifying + the cable modem using this Service Queue. If multiple + cable modems are using this Service Queue, the value of + this object is zero. + This object has been deprecated and replaced by + docsIfCmtsServiceNewCmStatusIndex, to fix a mismatch + of the value range with respect to docsIfCmtsCmStatusIndex + (1..2147483647)." + ::= { docsIfCmtsServiceEntry 2 } + +docsIfCmtsServiceAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + destroyed(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows a service class for a particular modem to be + suppressed, (re-)enabled, or deleted altogether." + + + + ::= { docsIfCmtsServiceEntry 3 } + +docsIfCmtsServiceQosProfile OBJECT-TYPE + SYNTAX Integer32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index in docsIfQosProfileTable describing the quality + of service attributes associated with this particular + service. If no associated docsIfQosProfileTable entry + exists, this object returns a value of zero." + ::= { docsIfCmtsServiceEntry 4 } + +docsIfCmtsServiceCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was created." + ::= { docsIfCmtsServiceEntry 5 } + +docsIfCmtsServiceInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative number of Packet Data octets received + on this Service ID. The count does not include the + size of the Cable MAC header. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsServiceEntry 6 } + +docsIfCmtsServiceInPackets OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative number of Packet Data packets received + on this Service ID. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + + + + ::= { docsIfCmtsServiceEntry 7 } + +docsIfCmtsServiceNewCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Pointer (via docsIfCmtsCmStatusIndex) to an entry in + docsIfCmtsCmStatusTable identifying the cable modem + using this Service Queue. If multiple cable modems are + using this Service Queue, the value of this object is + zero." + ::= { docsIfCmtsServiceEntry 8 } + +-- +-- The following table provides upstream channel modulation profiles. +-- Entries in this table can be +-- re-used by one or more upstream channels. An upstream channel +-- will have a modulation profile for each value of +-- docsIfModIntervalUsageCode. +-- + +docsIfCmtsModulationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsModulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a modulation profile associated with one or more + upstream channels." + ::= { docsIfCmtsObjects 5 } + +docsIfCmtsModulationEntry OBJECT-TYPE + SYNTAX DocsIfCmtsModulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a modulation profile for an Interval Usage Code + for one or more upstream channels. + Entries in this table are created by the operator. + + Initial default entries MAY be created at system + initialization time, which could report a value of + 'permanent' or 'readOnly' for docsIfCmtsModStorageType. + A CMTS MAY reject the creation of additional Interval + Usage Codes for a modulation profile being defined at + Initialization time. + No individual objects have to be specified in order + to create an entry in this table. + + + + Note that some objects do not have DEFVAL clauses + but do have calculated defaults and need not be specified + during row creation." + INDEX { docsIfCmtsModIndex, docsIfCmtsModIntervalUsageCode} + ::= { docsIfCmtsModulationTable 1 } + +DocsIfCmtsModulationEntry ::= SEQUENCE { + docsIfCmtsModIndex Integer32, + docsIfCmtsModIntervalUsageCode INTEGER, + docsIfCmtsModControl RowStatus, + docsIfCmtsModType INTEGER, + docsIfCmtsModPreambleLen Integer32, + docsIfCmtsModDifferentialEncoding TruthValue, + docsIfCmtsModFECErrorCorrection Integer32, + docsIfCmtsModFECCodewordLength Integer32, + docsIfCmtsModScramblerSeed Integer32, + docsIfCmtsModMaxBurstSize Integer32, + docsIfCmtsModGuardTimeSize Unsigned32, + docsIfCmtsModLastCodewordShortened TruthValue, + docsIfCmtsModScrambler TruthValue, + docsIfCmtsModByteInterleaverDepth Unsigned32, + docsIfCmtsModByteInterleaverBlockSize Unsigned32, + docsIfCmtsModPreambleType INTEGER, + docsIfCmtsModTcmErrorCorrectionOn TruthValue, + docsIfCmtsModScdmaInterleaverStepSize Unsigned32, + docsIfCmtsModScdmaSpreaderEnable TruthValue, + docsIfCmtsModScdmaSubframeCodes Unsigned32, + docsIfCmtsModChannelType DocsisUpstreamType, + docsIfCmtsModStorageType StorageType + } + +docsIfCmtsModIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index into the Channel Modulation table representing + a group of Interval Usage Codes, all associated with the + same channel." + ::= { docsIfCmtsModulationEntry 1 } + +docsIfCmtsModIntervalUsageCode OBJECT-TYPE + SYNTAX INTEGER { + request(1), + requestData(2), + initialRanging(3), + periodicRanging(4), + shortData(5), + + + + longData(6), + advPhyShortData(9), + advPhyLongData(10), + ugs(11) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index into the Channel Modulation table that, when + grouped with other Interval Usage Codes, fully + instantiates all modulation sets for a given upstream + channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-20." + ::= { docsIfCmtsModulationEntry 2 } + +docsIfCmtsModControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the status of rows in this table. + There is no restriction on the changing of values in this + table while their associated rows are active, with the + exception of: + + 1. If a modulation profile is being referenced by one + or more upstream channels, an attempt to set the value + of docsIfCmtsModChannelType returns an + 'inconsistentValue' error. + + 2. If a modulation profile is being referenced by one + or more upstream channels, an attempt to set + docsIfCmtsModControl to destroy(6) or notInService(2) + returns an 'inconsistentValue' error." + ::= { docsIfCmtsModulationEntry 3 } + +docsIfCmtsModType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + qpsk(2), + qam16(3), + qam8(4), + qam32(5), + qam64(6), + qam128(7) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The modulation type used on this channel. Returns + other(1) if the modulation type is not + qpsk, qam16, qam8, qam32, qam64, or qam128. + Type qam128 is used for SCDMA channels only. + See the reference for the modulation profiles + implied by different modulation types." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { qpsk } + ::= { docsIfCmtsModulationEntry 4 } + +docsIfCmtsModPreambleLen OBJECT-TYPE + SYNTAX Integer32 (0..1536) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preamble length for this modulation profile in bits. + Default value is the minimum needed by the implementation + at the CMTS for the given modulation profile." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 5 } + +docsIfCmtsModDifferentialEncoding OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies whether or not differential encoding is used + on this channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 6 } + +docsIfCmtsModFECErrorCorrection OBJECT-TYPE + SYNTAX Integer32 (0..16) + + + + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of correctable errored bytes (t) used in + forward error correction code. The value of 0 indicates + that no correction is employed. The number of check bytes + appended will be twice this value." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 0 } + ::= { docsIfCmtsModulationEntry 7 } + +docsIfCmtsModFECCodewordLength OBJECT-TYPE + SYNTAX Integer32 (1..255) + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of data bytes (k) in the forward error + correction codeword. + This object is not used if docsIfCmtsModFECErrorCorrection + is zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 32 } + ::= { docsIfCmtsModulationEntry 8 } + +docsIfCmtsModScramblerSeed OBJECT-TYPE + SYNTAX Integer32 (0..32767) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 15-bit seed value for the scrambler polynomial." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + DEFVAL { 0 } + ::= { docsIfCmtsModulationEntry 9 } + +docsIfCmtsModMaxBurstSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "mini-slots" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of mini-slots that can be transmitted + during this channel's burst time. Returns zero if the + burst length is bounded by the allocation MAP rather than + by this profile. + Default value is 0, except for shortData, where it is 8." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfCmtsModulationEntry 10 } + +docsIfCmtsModGuardTimeSize OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Symbol-times" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbol-times that MUST follow the end of + this channel's burst. Default value is the minimum time + needed by the implementation for this modulation profile." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 11 } + +docsIfCmtsModLastCodewordShortened OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the last FEC codeword is truncated." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { true } + ::= { docsIfCmtsModulationEntry 12 } + +docsIfCmtsModScrambler OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the scrambler is employed." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 13 } + +docsIfCmtsModByteInterleaverDepth OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ATDMA Byte Interleaver Depth (Ir). This object returns 1 + for non-ATDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 14 } + +docsIfCmtsModByteInterleaverBlockSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ATDMA Byte Interleaver Block size (Br). This object + returns zero for non-ATDMA profiles " + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 18 } + ::= { docsIfCmtsModulationEntry 15 } + +docsIfCmtsModPreambleType OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + qpsk0(1), + qpsk1(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Preamble type for DOCSIS 2.0 bursts. The value + 'unknown(0)' represents a row entry consisting only of + DOCSIS 1.x bursts" + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { qpsk0 } + ::= { docsIfCmtsModulationEntry 16 } + +docsIfCmtsModTcmErrorCorrectionOn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Trellis Code Modulation (TCM) On/Off. This value returns + false for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 17 } + +docsIfCmtsModScdmaInterleaverStepSize OBJECT-TYPE + SYNTAX Unsigned32 (0 | 1..32) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA Interleaver step size. This value returns zero + for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 18 } + +docsIfCmtsModScdmaSpreaderEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA spreader. This value returns false for non-S-CDMA + profiles. Default value for IUC 3 and 4 is OFF; for + all other IUCs it is ON." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 19 } + + + + +docsIfCmtsModScdmaSubframeCodes OBJECT-TYPE + SYNTAX Unsigned32 (0 | 1..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA sub-frame size. This value returns zero + for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 20 } + +docsIfCmtsModChannelType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Describes the modulation channel type for this modulation + entry. + All the active entries in a modulation profile (that is all + active entries that share a common docsIfCmtsModIndex) + MUST have the same value of docsIfCmtsModChannelType." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + DEFVAL { tdma } + ::= { docsIfCmtsModulationEntry 21 } + +docsIfCmtsModStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + DEFVAL { nonVolatile } + ::= { docsIfCmtsModulationEntry 22 } + +docsIfCmtsQosProfilePermissions OBJECT-TYPE + SYNTAX BITS { + createByManagement(0), + updateByManagement(1), + createByModems(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies permitted methods of creating + entries in docsIfQosProfileTable. + createByManagement(0) is set if entries can be created + using SNMP. updateByManagement(1) is set if updating + entries using SNMP is permitted. createByModems(2) + is set if entries can be created based on information + in REG-REQ MAC messages received from cable modems. + Information in this object is only applicable if + docsIfQosProfileTable is implemented as read-create. + Otherwise, this object is implemented as read-only + and returns createByModems(2). + Either createByManagement(0) or updateByManagement(1) + MUST be set when writing to this object. + Note that BITS objects are encoded most significant bit + first. For example, if bit 2 is set, the value of this + object is the octet string '20'H." + ::= { docsIfCmtsObjects 6 } + +docsIfCmtsMacToCmTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsMacToCmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a table to provide a quick access index into the + docsIfCmtsCmStatusTable. There is exactly one row in this + table for each row in the docsIfCmtsCmStatusTable. In + general, the management station SHOULD use this table only + to get a pointer into the docsIfCmtsCmStatusTable (which + corresponds to the CM's RF interface MAC address) and + SHOULD not iterate (e.g., GetNext through) this table." + ::= { docsIfCmtsObjects 7 } + +docsIfCmtsMacToCmEntry OBJECT-TYPE + SYNTAX DocsIfCmtsMacToCmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the docsIfCmtsMacToCmTable. + An entry in this table exists for each cable modem + that is connected to the CMTS implementing this table." + INDEX { docsIfCmtsCmMac } + ::= {docsIfCmtsMacToCmTable 1 } + +DocsIfCmtsMacToCmEntry ::= SEQUENCE { + + + + docsIfCmtsCmMac MacAddress, + docsIfCmtsCmPtr Integer32 + } + +docsIfCmtsCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RF side MAC address for the referenced CM (e.g., the + interface on the CM that has docsCableMacLayer(127) as + its ifType)." + ::= { docsIfCmtsMacToCmEntry 1 } + +docsIfCmtsCmPtr OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An row index into docsIfCmtsCmStatusTable. When queried + with the correct instance value (e.g., a CM's MAC address), + returns the index in docsIfCmtsCmStatusTable that + represents that CM." + ::= { docsIfCmtsMacToCmEntry 2 } + +-- The following independent object and associated table provide +-- operators with a mechanism to evaluate the load/utilization of +-- both upstream and downstream physical channels. This information +-- may be used for capacity planning and incident analysis and may +-- be particularly helpful in provisioning of high value QOS. +-- +-- Utilization is expressed as an index representing the calculated +-- percentage utilization of the upstream or downstream channel in +-- the most recent sampling interval (i.e., utilization interval). +-- Refer to the DESCRIPTION field of the +-- docsIfCmtsChannelUtUtilization object for definitions and +-- calculation details. + +docsIfCmtsChannelUtilizationInterval OBJECT-TYPE + SYNTAX Integer32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time interval in seconds over which the channel + utilization index is calculated. All upstream/downstream + channels use the same + docsIfCmtsChannelUtilizationInterval. + + + + Setting a value of zero disables utilization reporting. + A channel utilization index is calculated over a fixed + window applying to the most recent + docsIfCmtsChannelUtilizationInterval. It would therefore + be prudent to use a relatively short + docsIfCmtsChannelUtilizationInterval. + It is a vendor decision whether to reset the timer when + docsIfCmtsChannelUtilizationInterval is changed during a + utilization sampling period." + ::= { docsIfCmtsObjects 8 } + +docsIfCmtsChannelUtilizationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsChannelUtilizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Reports utilization statistics for attached upstream and + downstream physical channels." + ::= { docsIfCmtsObjects 9 } + +docsIfCmtsChannelUtilizationEntry OBJECT-TYPE + SYNTAX DocsIfCmtsChannelUtilizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Utilization statistics for a single upstream or downstream + physical channel. An entry exists in this table for each + ifEntry with an ifType equal to + docsCableDownstream (128) + or docsCableUpstream (129)." + INDEX { ifIndex, docsIfCmtsChannelUtIfType, + docsIfCmtsChannelUtId } + ::= { docsIfCmtsChannelUtilizationTable 1 } + +DocsIfCmtsChannelUtilizationEntry ::= SEQUENCE { + docsIfCmtsChannelUtIfType IANAifType, + docsIfCmtsChannelUtId Integer32, + docsIfCmtsChannelUtUtilization Integer32 + } + +docsIfCmtsChannelUtIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The secondary index into this table. Indicates the IANA + interface type associated with this physical channel. + Only docsCableDownstream (128) and + + + + docsCableUpstream (129) are valid." + ::= { docsIfCmtsChannelUtilizationEntry 1 } + +docsIfCmtsChannelUtId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The tertiary index into this table. Indicates the CMTS + identifier for this physical channel." + ::= { docsIfCmtsChannelUtilizationEntry 2 } + +docsIfCmtsChannelUtUtilization OBJECT-TYPE + SYNTAX Integer32 (0..100) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The calculated and truncated utilization index for this + physical upstream or downstream channel, accurate as of + the most recent docsIfCmtsChannelUtilizationInterval. + + Upstream Channel Utilization Index: + + The upstream channel utilization index is expressed as a + percentage of mini-slots utilized on the physical channel, + regardless of burst type. For an Initial Maintenance + region, the mini-slots for the complete region are + considered utilized if the CMTS received an upstream + burst within the region from any CM on the physical + channel. For contention REQ and REQ/DATA regions, the + mini-slots for a transmission opportunity within the + region are considered utilized if the CMTS received an + upstream burst within the opportunity from any CM on the + physical channel. For all other regions, utilized + mini-slots are those in which the CMTS granted + bandwidth to any unicast SID on the physical channel. + + For an upstream interface that has multiple logical + upstream channels enabled, the utilization index is a + weighted sum of utilization indices for the logical + channels. The weight for each utilization index is the + percentage of upstream mini-slots allocated for the + corresponding logical channel. + Example: + If 75% of bandwidth is allocated to the first logical + channel and 25% to the second, and the utilization + indices for each are 60 and 40, respectively, the + + + + utilization index for the upstream physical channel is + (60 * 0.75) + (40 * 0.25) = 55. This figure + applies to the most recent utilization interval. + + Downstream Channel Utilization Index: + + The downstream channel utilization index is a percentage + expressing the ratio between bytes used to transmit data + versus the total number of bytes transmitted in the raw + bandwidth of the MPEG channel. As with the upstream + utilization index, the calculated value represents + the most recent utilization interval. + Formula: + Downstream utilization index = + (100 * (data bytes / raw bytes)) + + Definitions: + Data bytes: Number of bytes transmitted as data in the + docsIfCmtsChannelUtilizationInterval. + Identical to docsIfCmtsDownChannelCtrUsed + Bytes measured over the utilization + interval. + Raw bandwidth: Total number of bytes available for + transmitting data, not including bytes + used for headers and other overhead. + Raw bytes: (raw bandwidth * + docsIfCmtsChannelUtilizationInterval). + Identical to docsIfCmtsDownChannelCtrTotal + Bytes measured over the utilization + interval." + ::= { docsIfCmtsChannelUtilizationEntry 3 } + +-- The following table provides operators with input data +-- appropriate for calculating downstream channel utilization. +-- Operators may use the docsIfCmtsChannelUtilizationTable or +-- perform their own polling of the +-- docsIfCmtsDownChannelCounterTable objects to characterize +-- their downstream channel usage. The 32-bit counter objects are +-- included to provide backward compatibility with SNMPv1 managers, +-- which cannot access 64-bit counter objects. + +docsIfCmtsDownChannelCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsDownChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is implemented at the CMTS to collect + downstream channel statistics for utilization + + + + calculations." + ::= { docsIfCmtsObjects 10 } + +docsIfCmtsDownChannelCounterEntry OBJECT-TYPE + SYNTAX DocsIfCmtsDownChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides a list of traffic counters for a single + downstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128)." + INDEX { ifIndex } + ::= { docsIfCmtsDownChannelCounterTable 1 } + +DocsIfCmtsDownChannelCounterEntry ::= SEQUENCE { + docsIfCmtsDownChnlCtrId Integer32, + docsIfCmtsDownChnlCtrTotalBytes Counter32, + docsIfCmtsDownChnlCtrUsedBytes Counter32, + docsIfCmtsDownChnlCtrExtTotalBytes Counter64, + docsIfCmtsDownChnlCtrExtUsedBytes Counter64 + } + +docsIfCmtsDownChnlCtrId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Cable Modem Termination System identification + of the downstream channel within this particular MAC + interface. If the interface is down, the object returns + the most current value. If the downstream channel ID is + unknown, this object returns a value of 0." + ::= { docsIfCmtsDownChannelCounterEntry 1 } + +docsIfCmtsDownChnlCtrTotalBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of bytes in the Payload + portion of MPEG Packets (i.e., not including MPEG header + or pointer_field) transported by this downstream channel. + This is the 32-bit version of + docsIfCmtsDownChnlCtrExtTotalBytes, included to provide + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 2 } + +docsIfCmtsDownChnlCtrUsedBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of DOCSIS data bytes + transported by this downstream channel. + The number of data bytes is defined as the total number + of bytes transported in DOCSIS payloads minus the number + of stuff bytes transported in DOCSIS payloads. + This is the 32-bit version of + docsIfCmtsDownChnlCtrExtUsedBytes, included to provide + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 3 } + +docsIfCmtsDownChnlCtrExtTotalBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of bytes in the Payload + portion of MPEG Packets (i.e., not including MPEG header + or pointer_field) transported by this downstream + channel. + This is the 64-bit version of + docsIfCmtsDownChnlCtrTotalBytes and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 4 } + +docsIfCmtsDownChnlCtrExtUsedBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "Bytes" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "At the CMTS, the total number of DOCSIS data bytes + transported by this downstream channel. The number + of data bytes is defined as the total number of bytes + transported in DOCSIS payloads minus the number of + stuff bytes transported in DOCSIS payloads. + This is the 64-bit version of + docsIfCmtsDownChnlCtrUsedBytes and will not be accessible + to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 5 } + +-- The following table provides operators with input data appropriate +-- for calculating upstream channel utilization, and for determining +-- the traffic characteristics of upstream channels. Operators may +-- use the docsIfCmtsChannelUtilizationTable or perform their own +-- polling of the docsIfCmtsUpChannelCounterTable objects for +-- utilization determination. +-- The first four 32 and 64 objects in this table are mandatory. +-- Vendors may choose to implement the remaining optional objects to +-- provide operators with finer characterization of upstream channel +-- traffic patterns. The 32-bit counter objects are included to +-- provide backward compatibility with SNMPv1 managers, which cannot +-- access 64-bit counter objects. + +docsIfCmtsUpChannelCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsUpChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is implemented at the CMTS to provide upstream + channel statistics appropriate for channel utilization + calculations." + ::= { docsIfCmtsObjects 11 } + +docsIfCmtsUpChannelCounterEntry OBJECT-TYPE + SYNTAX DocsIfCmtsUpChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of traffic statistics for a single upstream channel. + For DOCSIS 2.0 CMTSs, an entry in this table + exists for each ifEntry with an ifType of + docsCableUpstreamChannel (205). + + + + For DOCSIS 1.x CMTSs, an entry in this table + exists for each ifEntry with an ifType of + docsCableUpstream (129)." + INDEX { ifIndex } + ::= { docsIfCmtsUpChannelCounterTable 1 } + +DocsIfCmtsUpChannelCounterEntry ::= SEQUENCE { + docsIfCmtsUpChnlCtrId Integer32, + docsIfCmtsUpChnlCtrTotalMslots Counter32, + docsIfCmtsUpChnlCtrUcastGrantedMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnMslots Counter32, + docsIfCmtsUpChnlCtrExtTotalMslots Counter64, + docsIfCmtsUpChnlCtrExtUcastGrantedMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnMslots Counter64, + docsIfCmtsUpChnlCtrCollCntnMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrExtCollCntnMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots Counter64 + } + +docsIfCmtsUpChnlCtrId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CMTS identification of the upstream channel." + ::= { docsIfCmtsUpChannelCounterEntry 1 } + +docsIfCmtsUpChnlCtrTotalMslots OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of all mini-slots + defined for this upstream logical channel. This count + includes all IUCs and SIDs, even those allocated to the + NULL SID for a 2.0 logical channel that is inactive. This + is the 32-bit version of docsIfCmtsUpChnlCtrExtTotalMslots + and is included for back compatibility with SNMPv1 + managers. Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 2 } + +docsIfCmtsUpChnlCtrUcastGrantedMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of unicast + granted mini-slots on the upstream logical channel, + regardless of burst type. Unicast granted mini-slots are + those in which the CMTS assigned bandwidth to any unicast + SID on the logical channel. However, this object does not + include minis-lots for reserved IUCs, or grants to SIDs + designated as meaning 'no CM'. This is the 32-bit version + of docsIfCmtsUpChnlCtrExtUcastGrantedMslots, and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 3 } + +docsIfCmtsUpChnlCtrTotalCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots defined for this upstream logical channel. This + count includes all mini-slots assigned to a broadcast or + + + + multicast SID on the logical channel. This is the 32-bit + version of docsIfCmtsUpChnlCtrExtTotalCntnMslots, and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 4 } + +docsIfCmtsUpChnlCtrUsedCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots utilized on the upstream logical channel. For + contention regions, utilized mini-slots are those in which + the CMTS correctly received an upstream burst from any CM + on the upstream logical channel. This is the 32-bit + version of docsIfCmtsUpChnlCtrExtUsedCntnMslots and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 5 } + +docsIfCmtsUpChnlCtrExtTotalMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of all mini-slots + defined for this upstream logical channel. This count + includes all IUCs and SIDs, even those allocated to the + NULL SID for a 2.0 logical channel that is inactive. This + is the 64-bit version of docsIfCmtsUpChnlCtrTotalMslots + and will not be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 6 } + + + +docsIfCmtsUpChnlCtrExtUcastGrantedMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of unicast + granted mini-slots on the upstream logical channel, + regardless of burst type. Unicast granted mini-slots are + those in which the CMTS assigned bandwidth to any unicast + SID on the logical channel. However, this object does not + include mini-slots for reserved IUCs, or grants to SIDs + designated as meaning 'no CM'. This is the 64-bit version + of docsIfCmtsUpChnlCtrUcastGrantedMslots and will not be + accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 7 } + +docsIfCmtsUpChnlCtrExtTotalCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots defined for this upstream logical channel. This + count includes all mini-slots assigned to a broadcast or + multicast SID on the logical channel. This is the 64-bit + version of docsIfCmtsUpChnlCtrTotalCntnMslots and will + not be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 8 } + +docsIfCmtsUpChnlCtrExtUsedCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + + + + mini-slots utilized on the upstream logical channel. For + contention regions, utilized mini-slots are those in which + the CMTS correctly received an upstream burst from any CM + on the upstream logical channel. This is the 64-bit + version of docsIfCmtsUpChnlCtrUsedCntnMslots and will not + be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 9 } + +docsIfCmtsUpChnlCtrCollCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots subjected to collisions on the upstream logical + channel. For contention regions, these are the mini-slots + applicable to bursts that the CMTS detected but could not + correctly receive. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnMslots and is included for + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 10 } + +docsIfCmtsUpChnlCtrTotalCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC1 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 11 } + +docsIfCmtsUpChnlCtrUsedCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots utilized on this upstream logical + channel. This count includes all contention mini-slots for + IUC1 applicable to bursts that the CMTS correctly + received. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 12 } + +docsIfCmtsUpChnlCtrCollCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots subjected to collisions on this upstream + logical channel. This includes all contention mini-slots + for IUC1 applicable to bursts that the CMTS detected but + could not correctly receive. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 13 } + +docsIfCmtsUpChnlCtrTotalCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + + + + request data mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC2 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 14 } + +docsIfCmtsUpChnlCtrUsedCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" +MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC2 + applicable to bursts that the CMTS correctly received. + This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 15 } + +docsIfCmtsUpChnlCtrCollCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots subjected to collisions on this + upstream logical channel. This includes all contention + mini-slots for IUC2 applicable to bursts that the CMTS + detected, but could not correctly receive. This is the + 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 16 } + +docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots defined for this upstream + logical channel. This includes all mini-slots for IUC3 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 17 } + +docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots utilized on this upstream + logical channel. This includes all contention mini-slots + for IUC3 applicable to bursts that the CMTS correctly + received. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 18 } + +docsIfCmtsUpChnlCtrCollCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots subjected to collisions on + this upstream logical channel. This includes all + contention mini-slots for IUC3 applicable to bursts that + the CMTS detected, but could not correctly receive. + This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 19 } + +docsIfCmtsUpChnlCtrExtCollCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of collision + contention mini-slots on the upstream logical channel. + For contention regions, these are the mini-slots applicable + to bursts that the CMTS detected, but could not correctly + receive. This is the 64-bit version of + docsIfCmtsUpChnlCtrCollCntnMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 20 } + +docsIfCmtsUpChnlCtrExtTotalCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC1 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnReqMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 21 } + +docsIfCmtsUpChnlCtrExtUsedCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots utilized on this upstream logical + channel. This count includes all contention mini-slots for + IUC1 applicable to bursts that the CMTS correctly + received. This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnReqMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 22 } + +docsIfCmtsUpChnlCtrExtCollCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots subjected to collisions on this upstream + logical channel. This includes all contention mini-slots + for IUC1 applicable to bursts that the CMTS detected, + but could not correctly receive. This is the 64-bit + version of docsIfCmtsUpChnlCtrCollCntnReqMslots and will + not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 23 } + +docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC2 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 24 } + +docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC2 + applicable to bursts that the CMTS correctly received. + This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 25 } + +docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots subjected to collisions on this + upstream logical channel. This includes all contention + mini-slots for IUC2 applicable to bursts that the CMTS + detected, but could not correctly receive. This is the + 64-bit version of + docsIfCmtsUpChnlCtrCollCntnReqDataMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 26 } + +docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of initial + maintenance mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC3 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 27 } + +docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of initial + maintenance mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC3 + applicable to bursts that the CMTS correctly received. + This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 28 } + +docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots subjected to collisions on + this upstream logical channel. This includes all + contention mini-slots for IUC3 applicable to bursts that + the CMTS detected, but could not correctly receive. + This is the 64-bit version of + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots and will not + be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 29 } + +-- +-- notification group is for future extension. +-- + +docsIfNotification OBJECT IDENTIFIER ::= { docsIfMib 2 } + +-- +-- MIB Compliance statements. +-- + +-- +-- Conformance definitions +-- + +docsIfConformance OBJECT IDENTIFIER ::= { docsIfMib 3 } +docsIfCompliances OBJECT IDENTIFIER ::= { docsIfConformance 1 } +docsIfGroups OBJECT IDENTIFIER ::= { docsIfConformance 2 } + +docsIfBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for devices that implement + DOCSIS 1.x compliant Radio Frequency Interfaces." + +MODULE -- docsIfMib + +-- unconditionally mandatory groups +MANDATORY-GROUPS { + docsIfBasicGroup + } + +-- conditionally mandatory group +GROUP docsIfCmGroup + + + + DESCRIPTION + "This group is implemented only in cable modems, not in + cable modem termination systems." + +-- conditionally mandatory group +GROUP docsIfCmtsGroup + DESCRIPTION + "This group is implemented only in cable modem termination + systems, not in cable modems." + +OBJECT docsIfDownChannelFrequency + WRITE-SYNTAX Integer32 (54000000..860000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The values above are + appropriate for a cable plant using a Sub-Split channel + plan. If DOCSIS is extended to cover other types of + channel plans (and frequency allocations), this object + will be modified accordingly." + +OBJECT docsIfDownChannelWidth + WRITE-SYNTAX Integer32 (6000000) + MIN-ACCESS read-only + DESCRIPTION + "It is important to implement this object as read-only. + In cable modems, this object is always implemented as + read-only. The above value is appropriate for cable + plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + +OBJECT docsIfDownChannelModulation + WRITE-SYNTAX INTEGER { + qam64 (3), + qam256 (4) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelInterleave + WRITE-SYNTAX INTEGER { + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + + + + taps64Increment2(6), + taps128Increment1(7) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelPower + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelFrequency + WRITE-SYNTAX Integer32 (5000000..42000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The values above are + appropriate for a cable plant using a Sub-Split channel + plan. If DOCSIS is extended to cover other types of + channel plans (and frequency allocations), this object + will be modified accordingly." + +OBJECT docsIfUpChannelWidth + WRITE-SYNTAX Integer32 (200000..3200000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The above value is appropriate + for cable plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + +OBJECT docsIfUpChannelModulationProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelSlotSize + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + + + +OBJECT docsIfUpChannelRangingBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelRangingBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfQosProfPriority + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfGuarUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxDownBandwidth + MIN-ACCESS read-only + DESCRIPTION + + + + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxTxBurst + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfBaselinePrivacy + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfStatus + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfCmtsServiceAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsSyncInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsUcdInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInsertInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInvitedRangingAttempts + MIN-ACCESS read-only + DESCRIPTION + + + + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsQosProfilePermissions + WRITE-SYNTAX BITS { + createByManagement(0), + updateByManagement(1) + } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsModType + WRITE-SYNTAX INTEGER { + qpsk (2), + qam16 (3) + } + DESCRIPTION + "A management station MAY only set 16QAM or QPSK modulation, + but others might be possible, based on device + configuration." + +OBJECT docsIfCmtsModPreambleLen + SYNTAX Integer32 (0..1024) + DESCRIPTION + "The range of the values for this MODULE-COMPLIANCE + is 0..1024." + +OBJECT docsIfCmtsModFECErrorCorrection + SYNTAX Integer32 (0..10) + DESCRIPTION + "The range of the values for this MODULE-COMPLIANCE + is 0..10." + + ::= { docsIfCompliances 1 } + +docsIfBasicComplianceV2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for devices that implement + DOCSIS 2.0 Radio Frequency Interfaces." + +MODULE -- docsIfMib + +-- unconditionally mandatory groups +MANDATORY-GROUPS { + docsIfBasicGroupV2 + } + + + + +-- conditionally mandatory group +GROUP docsIfCmGroupV2 + DESCRIPTION + "This group is implemented only in cable modems, not in + cable modem termination systems." + +-- conditionally mandatory group +GROUP docsIfCmtsGroupV2 + DESCRIPTION + "This group is implemented only in cable modem termination + systems, not in cable modems." + + +OBJECT docsIfDownChannelFrequency + WRITE-SYNTAX Integer32 (47000000..862000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. + A range of 54MHz to 860MHz is appropriate for a cable + plant using a North American Sub-Split channel plan. + The spectrum range has been expanded to accommodate + a lower edge of 47MHz and an upper edge of 862MHz + for some European channel plans. + If DOCSIS is extended to cover other types of channel + plans (and frequency allocations), this object will be + modified accordingly." + +OBJECT docsIfDownChannelWidth + WRITE-SYNTAX Integer32 (6000000 | 8000000) + MIN-ACCESS read-only + DESCRIPTION + "It is important to implement this object as read-only. + In cable modems, this object is always implemented as + read-only. The value of 6 MHz is appropriate for cable + plants running under NTSC (National Television + Standards Committee) standards. The value of 8 MHz is + appropriate for cable plants running under ETSI + standards. For other regional standards, this + object will be modified accordingly." + +OBJECT docsIfDownChannelModulation + WRITE-SYNTAX INTEGER { + qam64 (3), + qam256 (4) + } + MIN-ACCESS read-only + DESCRIPTION + + + + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelInterleave + WRITE-SYNTAX INTEGER { + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + taps64Increment2(6), + taps128Increment1(7), + taps12increment17(8) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelPower + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelFrequency + WRITE-SYNTAX Integer32 (5000000..65000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems. + A range of 5MHz to 42MHz is appropriate for a cable + plant using a North American Sub-Split channel plan. + The spectrum range has been expanded to accommodate + an upper edge of 65MHz for some European channel plans. + If DOCSIS is extended to cover other types of channel + plans (and frequency allocations), this object will + be modified accordingly." + +OBJECT docsIfUpChannelWidth + WRITE-SYNTAX Integer32 (200000..6400000) + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems, + read-only in cable modems. The above value is appropriate + for cable plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + + + + +OBJECT docsIfUpChannelModulationProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelSlotSize + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfUpChannelRangingBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelRangingBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaActiveCodes + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems. + The number of active codes when SCDMA is in use MUST range + from 64 to 128 and MUST be a non-Prime value. + Providing this range allows for the following features + and capabilities: + 1) Power management in S-CDMA spreader-on frames + (with a 3 dB spread). + + + + 2) Avoidance of code 0. + 3) Flexible mini-slot sizes with and without the use of + code 0." + +OBJECT docsIfUpChannelScdmaCodesPerSlot + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaHoppingSeed + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelCloneFrom + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelUpdate + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-create in Cable Modem Termination Systems; + read-only in Cable Modems. + Entries associated to physical interfaces only support + the read-only value 'active'." + + +OBJECT docsIfUpChannelPreEqEnable + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + + + +OBJECT docsIfQosProfPriority + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfGuarUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxDownBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfBaselinePrivacy + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfStatus + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxTransmitBurst + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + + + +OBJECT docsIfCmRangingTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmStatusModulationType + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3) + } + DESCRIPTION + "CM does not use both modulation burst profiles of a + 'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is + not supported." + +OBJECT docsIfCmtsServiceAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsSyncInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsUcdInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInsertInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInvitedRangingAttempts + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsQosProfilePermissions + WRITE-SYNTAX BITS { + createByManagement(0), + updateByManagement(1) + } + MIN-ACCESS read-only + + + + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsModType + WRITE-SYNTAX INTEGER { + qpsk(2), + qam16(3), + qam64(6) + } + DESCRIPTION + "A management station MAY only set 64QAM, 16QAM, or QPSK + modulation for Time or Code division Multiple Access, + but others might be possible based on device + configuration." + +OBJECT docsIfCmtsCmStatusModulationType + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3) + } + DESCRIPTION + "CM does not use both modulation burst profiles of a + 'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is + not supported." + + ::= { docsIfCompliances 2 } + +docsIfBasicGroup OBJECT-GROUP + OBJECTS { + docsIfDownChannelId, + docsIfDownChannelFrequency, + docsIfDownChannelWidth, + docsIfDownChannelModulation, + docsIfDownChannelInterleave, + docsIfDownChannelPower, + docsIfUpChannelId, + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelTxTimingOffset, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfQosProfPriority, + + + + docsIfQosProfMaxUpBandwidth, + docsIfQosProfGuarUpBandwidth, + docsIfQosProfMaxDownBandwidth, + docsIfQosProfMaxTxBurst, + docsIfQosProfBaselinePrivacy, + docsIfQosProfStatus, + docsIfSigQIncludesContention, + docsIfSigQUnerroreds, + docsIfSigQCorrecteds, + docsIfSigQUncorrectables, + docsIfSigQSignalNoise, + docsIfSigQMicroreflections, + docsIfSigQEqualizationData + } + STATUS deprecated + DESCRIPTION + "Group of objects implemented in both cable modems and + cable modem termination systems." + ::= { docsIfGroups 1 } + +docsIfCmGroup OBJECT-GROUP + OBJECTS { + docsIfCmCmtsAddress, + docsIfCmCapabilities, + docsIfCmRangingTimeout, + docsIfCmStatusValue, + docsIfCmStatusCode, + docsIfCmStatusTxPower, + docsIfCmStatusResets, + docsIfCmStatusLostSyncs, + docsIfCmStatusInvalidMaps, + docsIfCmStatusInvalidUcds, + docsIfCmStatusInvalidRangingResponses, + docsIfCmStatusInvalidRegistrationResponses, + docsIfCmStatusT1Timeouts, + docsIfCmStatusT2Timeouts, + docsIfCmStatusT3Timeouts, + docsIfCmStatusT4Timeouts, + docsIfCmStatusRangingAborteds, + docsIfCmServiceQosProfile, + docsIfCmServiceTxSlotsImmed, + docsIfCmServiceTxSlotsDed, + docsIfCmServiceTxRetries, + docsIfCmServiceTxExceededs, + docsIfCmServiceRqRetries, + docsIfCmServiceRqExceededs + } + STATUS deprecated + + + + DESCRIPTION + "Group of objects implemented in cable modems." + ::= { docsIfGroups 2 } + +docsIfCmtsGroup OBJECT-GROUP + OBJECTS { + docsIfCmtsCapabilities, + docsIfCmtsSyncInterval, + docsIfCmtsUcdInterval, + docsIfCmtsMaxServiceIds, + docsIfCmtsInvitedRangingAttempts, + docsIfCmtsInsertInterval, + docsIfCmtsStatusInvalidRangeReqs, + docsIfCmtsStatusRangingAborteds, + docsIfCmtsStatusInvalidRegReqs, + docsIfCmtsStatusFailedRegReqs, + docsIfCmtsStatusInvalidDataReqs, + docsIfCmtsStatusT5Timeouts, + docsIfCmtsCmStatusMacAddress, + docsIfCmtsCmStatusIpAddress, + docsIfCmtsCmStatusDownChannelIfIndex, + docsIfCmtsCmStatusUpChannelIfIndex, + docsIfCmtsCmStatusRxPower, + docsIfCmtsCmStatusTimingOffset, + docsIfCmtsCmStatusEqualizationData, + docsIfCmtsCmStatusValue, + docsIfCmtsCmStatusUnerroreds, + docsIfCmtsCmStatusCorrecteds, + docsIfCmtsCmStatusUncorrectables, + docsIfCmtsCmStatusSignalNoise, + docsIfCmtsCmStatusMicroreflections, + docsIfCmtsServiceCmStatusIndex, + docsIfCmtsServiceAdminStatus, + docsIfCmtsServiceQosProfile, + docsIfCmtsServiceCreateTime, + docsIfCmtsServiceInOctets, + docsIfCmtsServiceInPackets, + docsIfCmtsModType, + docsIfCmtsModControl, + docsIfCmtsModPreambleLen, + docsIfCmtsModDifferentialEncoding, + docsIfCmtsModFECErrorCorrection, + docsIfCmtsModFECCodewordLength, + docsIfCmtsModScramblerSeed, + docsIfCmtsModMaxBurstSize, + docsIfCmtsModGuardTimeSize, + docsIfCmtsModLastCodewordShortened, + docsIfCmtsModScrambler, + + + + docsIfCmtsQosProfilePermissions, + docsIfCmtsCmPtr + } + STATUS deprecated + DESCRIPTION + "Group of objects implemented in Cable Modem Termination + Systems." + ::= { docsIfGroups 3 } + +-- obsolete group +-- RFC 2670 already had a obsolete group, even though RFC2670 +-- was the first version of this MIB Module. + +docsIfObsoleteGroup OBJECT-GROUP + OBJECTS { + docsIfCmRangingRespTimeout, + docsIfCmtsInsertionInterval + } + STATUS obsolete + DESCRIPTION + "Group of objects obsoleted." + ::= { docsIfGroups 4 } + +docsIfBasicGroupV2 OBJECT-GROUP + OBJECTS { + docsIfDownChannelId, + docsIfDownChannelFrequency, + docsIfDownChannelWidth, + docsIfDownChannelModulation, + docsIfDownChannelInterleave, + docsIfDownChannelPower, + docsIfDownChannelAnnex, + docsIfUpChannelId, + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelTxTimingOffset, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfUpChannelScdmaActiveCodes, + docsIfUpChannelScdmaCodesPerSlot, + docsIfUpChannelScdmaFrameSize, + docsIfUpChannelScdmaHoppingSeed, + docsIfUpChannelType, + docsIfUpChannelCloneFrom, + + + + docsIfUpChannelUpdate, + docsIfUpChannelStatus, + docsIfUpChannelPreEqEnable, + docsIfQosProfPriority, + docsIfQosProfMaxUpBandwidth, + docsIfQosProfGuarUpBandwidth, + docsIfQosProfMaxDownBandwidth, + docsIfQosProfBaselinePrivacy, + docsIfQosProfStatus, + docsIfQosProfMaxTransmitBurst, + docsIfSigQIncludesContention, + docsIfSigQUnerroreds, + docsIfSigQCorrecteds, + docsIfSigQUncorrectables, + docsIfSigQSignalNoise, + docsIfSigQMicroreflections, + docsIfSigQExtUnerroreds, + docsIfSigQExtCorrecteds, + docsIfSigQExtUncorrectables, + docsIfDocsisBaseCapability + } + STATUS current + DESCRIPTION + "Group of objects implemented in both cable modems and + cable modem termination systems." + ::= { docsIfGroups 5 } + +docsIfCmGroupV2 OBJECT-GROUP + OBJECTS { + docsIfCmCmtsAddress, + docsIfCmCapabilities, + docsIfCmRangingTimeout, + docsIfCmStatusValue, + docsIfCmStatusCode, + docsIfCmStatusTxPower, + docsIfCmStatusResets, + docsIfCmStatusLostSyncs, + docsIfCmStatusInvalidMaps, + docsIfCmStatusInvalidUcds, + docsIfCmStatusInvalidRangingResponses, + docsIfCmStatusInvalidRegistrationResponses, + docsIfCmStatusT1Timeouts, + docsIfCmStatusT2Timeouts, + docsIfCmStatusT3Timeouts, + docsIfCmStatusT4Timeouts, + docsIfCmStatusRangingAborteds, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType, + + + + docsIfCmStatusEqualizationData, + docsIfCmStatusUCCs, + docsIfCmStatusUCCFails, + docsIfCmServiceQosProfile, + docsIfCmServiceTxSlotsImmed, + docsIfCmServiceTxSlotsDed, + docsIfCmServiceTxRetries, + docsIfCmServiceTxExceededs, + docsIfCmServiceRqRetries, + docsIfCmServiceRqExceededs, + docsIfCmServiceExtTxSlotsImmed, + docsIfCmServiceExtTxSlotsDed, + docsIfSigQEqualizationData + } + STATUS current + DESCRIPTION + "Group of objects implemented in cable modems." + ::= { docsIfGroups 6 } + +docsIfCmtsGroupV2 OBJECT-GROUP + OBJECTS { + docsIfCmtsCapabilities, + docsIfCmtsSyncInterval, + docsIfCmtsUcdInterval, + docsIfCmtsMaxServiceIds, + docsIfCmtsInvitedRangingAttempts, + docsIfCmtsInsertInterval, + docsIfCmtsMacStorageType, + docsIfCmtsStatusInvalidRangeReqs, + docsIfCmtsStatusRangingAborteds, + docsIfCmtsStatusInvalidRegReqs, + docsIfCmtsStatusFailedRegReqs, + docsIfCmtsStatusInvalidDataReqs, + docsIfCmtsStatusT5Timeouts, + docsIfCmtsCmStatusMacAddress, + docsIfCmtsCmStatusDownChannelIfIndex, + docsIfCmtsCmStatusUpChannelIfIndex, + docsIfCmtsCmStatusRxPower, + docsIfCmtsCmStatusTimingOffset, + docsIfCmtsCmStatusEqualizationData, + docsIfCmtsCmStatusValue, + docsIfCmtsCmStatusUnerroreds, + docsIfCmtsCmStatusCorrecteds, + docsIfCmtsCmStatusUncorrectables, + docsIfCmtsCmStatusSignalNoise, + docsIfCmtsCmStatusMicroreflections, + docsIfCmtsCmStatusExtUnerroreds, + docsIfCmtsCmStatusExtCorrecteds, + + + + docsIfCmtsCmStatusExtUncorrectables, + docsIfCmtsCmStatusDocsisRegMode, + docsIfCmtsCmStatusModulationType, + docsIfCmtsCmStatusInetAddressType, + docsIfCmtsCmStatusInetAddress, + docsIfCmtsCmStatusValueLastUpdate, + docsIfCmtsCmStatusHighResolutionTimingOffset, + docsIfCmtsServiceAdminStatus, + docsIfCmtsServiceQosProfile, + docsIfCmtsServiceCreateTime, + docsIfCmtsServiceInOctets, + docsIfCmtsServiceInPackets, + docsIfCmtsServiceNewCmStatusIndex, + docsIfCmtsModType, + docsIfCmtsModControl, + docsIfCmtsModPreambleLen, + docsIfCmtsModDifferentialEncoding, + docsIfCmtsModFECErrorCorrection, + docsIfCmtsModFECCodewordLength, + docsIfCmtsModScramblerSeed, + docsIfCmtsModMaxBurstSize, + docsIfCmtsModGuardTimeSize, + docsIfCmtsModLastCodewordShortened, + docsIfCmtsModScrambler, + docsIfCmtsModByteInterleaverDepth, + docsIfCmtsModByteInterleaverBlockSize, + docsIfCmtsModPreambleType, + docsIfCmtsModTcmErrorCorrectionOn, + docsIfCmtsModScdmaInterleaverStepSize, + docsIfCmtsModScdmaSpreaderEnable, + docsIfCmtsModScdmaSubframeCodes, + docsIfCmtsModChannelType, + docsIfCmtsModStorageType, + docsIfCmtsQosProfilePermissions, + docsIfCmtsCmPtr, + docsIfCmtsChannelUtilizationInterval, + docsIfCmtsChannelUtUtilization, + docsIfCmtsDownChnlCtrId, + docsIfCmtsDownChnlCtrTotalBytes, + docsIfCmtsDownChnlCtrUsedBytes, + docsIfCmtsDownChnlCtrExtTotalBytes, + docsIfCmtsDownChnlCtrExtUsedBytes, + docsIfCmtsUpChnlCtrId, + docsIfCmtsUpChnlCtrTotalMslots, + docsIfCmtsUpChnlCtrUcastGrantedMslots, + docsIfCmtsUpChnlCtrTotalCntnMslots, + docsIfCmtsUpChnlCtrUsedCntnMslots, + docsIfCmtsUpChnlCtrExtTotalMslots, + + + + docsIfCmtsUpChnlCtrExtUcastGrantedMslots, + docsIfCmtsUpChnlCtrExtTotalCntnMslots, + docsIfCmtsUpChnlCtrExtUsedCntnMslots, + docsIfCmtsUpChnlCtrCollCntnMslots, + docsIfCmtsUpChnlCtrTotalCntnReqMslots, + docsIfCmtsUpChnlCtrUsedCntnReqMslots, + docsIfCmtsUpChnlCtrCollCntnReqMslots, + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots, + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots, + docsIfCmtsUpChnlCtrCollCntnReqDataMslots, + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots, + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots, + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtCollCntnMslots, + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots, + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots, + docsIfCmtsUpChnlCtrExtCollCntnReqMslots, + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots, + docsIfDownChannelStorageType, + docsIfQosProfStorageType + + } + STATUS current + DESCRIPTION + "Group of objects implemented in Cable Modem Termination + Systems." + ::= { docsIfGroups 7 } + +END diff --git a/mibs/ietf/DOT12-IF-MIB b/mibs/ietf/DOT12-IF-MIB new file mode 100644 index 0000000..9d7d4c6 --- /dev/null +++ b/mibs/ietf/DOT12-IF-MIB @@ -0,0 +1,764 @@ +DOT12-IF-MIB DEFINITIONS ::= BEGIN + + IMPORTS + transmission, Counter32, Counter64, OBJECT-TYPE, + MODULE-IDENTITY + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB; + + dot12MIB MODULE-IDENTITY + LAST-UPDATED "9602220452Z" -- February 22, 1996 + ORGANIZATION "IETF 100VG-AnyLAN MIB Working Group" + CONTACT-INFO + " John Flick + + Postal: Hewlett Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + + E-mail: johnf@hprnd.rose.hp.com" + DESCRIPTION + "This MIB module describes objects for + managing IEEE 802.12 interfaces." + ::= { transmission 45 } + + dot12MIBObjects OBJECT IDENTIFIER ::= { dot12MIB 1 } + + dot12ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration information for a collection of + 802.12 interfaces attached to a particular + system." + ::= { dot12MIBObjects 1 } + + dot12ConfigEntry OBJECT-TYPE + SYNTAX Dot12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration for a particular interface to an + 802.12 medium." + INDEX { ifIndex } + ::= { dot12ConfigTable 1 } + + Dot12ConfigEntry ::= + SEQUENCE { + dot12CurrentFramingType INTEGER, + dot12DesiredFramingType INTEGER, + dot12FramingCapability INTEGER, + dot12DesiredPromiscStatus INTEGER, + dot12TrainingVersion INTEGER, + dot12LastTrainingConfig OCTET STRING, + dot12Commands INTEGER, + dot12Status INTEGER, + dot12ControlMode INTEGER + } + + dot12CurrentFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeUnknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When dot12DesiredFramingType is one of + 'frameType88023' or 'frameType88025', this is the + type of framing asserted by the interface. + + When dot12DesiredFramingType is 'frameTypeEither', + dot12CurrentFramingType shall be one of + 'frameType88023' or 'frameType88025' when the + dot12Status is 'opened'. When the dot12Status is + anything other than 'opened', + dot12CurrentFramingType shall take the value of + 'frameTypeUnknown'." + ::= { dot12ConfigEntry 1 } + + dot12DesiredFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of framing which will be requested by + the interface during the next interface MAC + initialization or open action. + + In master mode, this is the framing mode which + will be granted by the interface. Note that + for a master mode interface, this object must be + equal to 'frameType88023' or 'frameType88025', + since a master mode interface cannot grant + 'frameTypeEither'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDesiredFramingType." + ::= { dot12ConfigEntry 2 } + + dot12FramingCapability OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing this interface is capable of + supporting." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aFramingCapability." + ::= { dot12ConfigEntry 3 } + + dot12DesiredPromiscStatus OBJECT-TYPE + SYNTAX INTEGER { + singleAddressMode(1), + promiscuousMode(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to select the promiscuous + mode that this interface will request in the next + training packet issued on this interface. + Whether the repeater grants the requested mode + must be verified by examining the state of the PP + bits in the corresponding instance of + dot12LastTrainingConfig. + In master mode, this object controls whether or + not promiscuous mode will be granted by the + interface when requested by the lower level + device. + + Note that this object indicates the desired mode + for the next time the interface trains. The + currently active mode will be reflected in + dot12LastTrainingConfig and in ifPromiscuousMode." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDesiredPromiscuousStatus." + ::= { dot12ConfigEntry 4 } + + dot12TrainingVersion OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that will be used in the version bits + (vvv bits) in training frames on this interface. + This is the highest version number supported by + this MAC." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aMACVersion." + ::= { dot12ConfigEntry 5 } + + dot12LastTrainingConfig OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This 16 bit field contains the configuration + bits from the most recent error-free training + frame received during training on this interface. + Training request frames are received when in + master mode, while training response frames are + received in slave mode. On master mode interfaces, + this object contains the contents of the + requested configuration field of the most recent + training request frame. On slave mode interfaces, + this object contains the contents of the allowed + configuration field of the most recent training + response frame. The format of the current version + of this field is described in section 3.8. Please + refer to the most recent version of the IEEE + 802.12 standard for the most up-to-date definition + of the format of this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aLastTrainingConfig." + ::= { dot12ConfigEntry 6 } + + dot12Commands OBJECT-TYPE + SYNTAX INTEGER { + noOp(1), + open(2), + reset(3), + close(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the current value of dot12Status is 'closed', + setting the value of this object to 'open' will + change the corresponding instance of MIB-II's + ifAdminStatus to 'up', cause this interface to + enter the 'opening' state, and will cause training + to be initiated on this interface. The progress + and success of the open is given by the values of + the dot12Status object. Setting this object to + 'open' when dot12Status has a value other than + 'closed' has no effect. + + Setting the corresponding instance of ifAdminStatus + to 'up' when the current value of dot12Status is + 'closed' will have the same effect as setting this + object to 'open'. Setting ifAdminStatus to 'up' + when dot12Status has a value other than 'closed' + has no effect. + + Setting the value of this object to 'close' will + move this interface into the 'closed' state and + cause all transmit and receive actions to stop. + This object will then have to be set to 'open' in + order to reinitiate training. + + Setting the corresponding instance of ifAdminStatus + to 'down' will have the same effect as setting this + object to 'close'. + + Setting the value of this object to 'reset' when + the current value of dot12Status has a value other + than 'closed' will reset the interface. On a + reset, all MIB counters should retain their values. + This will cause the MAC to initiate an + acInitializeMAC action as specified in IEEE 802.12. + This will cause training to be reinitiated on this + interface. Setting this object to 'reset' when + dot12Status has a value of 'closed' has no effect. + Setting this object to 'reset' has no effect on the + corresponding instance of ifAdminStatus. + + Setting the value of this object to 'noOp' has no + effect. + + When read, this object will always have a value + of 'noOp'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.2, + acOpen, acClose, acInitializeMAC. + Also, RFC1231 IEEE802.5 Token Ring MIB, + dot5Commands." + ::= { dot12ConfigEntry 7 } + + dot12Status OBJECT-TYPE + SYNTAX INTEGER { + opened(1), + closed(2), + opening(3), + openFailure(5), + linkFailure(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface status with respect to + training. One of the following values: + + opened - Training has completed + successfully. + closed - MAC has been disabled by + setting dot12Commands to + 'close'. + opening - MAC is in training. Training + signals have been received. + openFailure - Passed 24 error-free packets, + but there is a problem, noted + in the training configuration + bits (dot12LastTrainingConfig). + linkFailure - Training signals not received, + or could not pass 24 error-free + packets. + Whenever the dot12Commands object is set to + 'close' or ifAdminStatus is set to 'down', the MAC + will go silent, dot12Status will be 'closed', and + ifOperStatus will be 'down'. + + When the value of this object is equal to 'closed' + and the dot12Commands object is set to 'open' or + the ifAdminStatus object is set to 'up', training + will be initiated on this interface. When the + value of this object is not equal to 'closed' and + the dot12Commands object is set to 'reset', + training will be reinitiated on this interface. + Note that sets of some other objects (e.g. + dot12ControlMode) or external events (e.g. MAC + protocol violations) may also cause training to be + reinitiated on this interface. + + When training is initiated or reinitiated on an + interface, the end node will send Training_Up to + the master and initially go to the 'linkFailure' + state and ifOperStatus will go to 'down'. + When the master sends back Training_Down, + dot12Status will change to the 'opening' state, + and training packets will be transferred. + + After all of the training packets have been + passed, dot12Status will change to 'linkFailure' + if 24 consecutive error-free packets were not + passed, 'opened' if 24 consecutive error-free + packets were passed and the training + configuration bits were OK, or 'openFailure' if + there were 24 consecutive error-free packets, but + there was a problem with the training + configuration bits. + + When in the 'openFailure' state, the + dot12LastTrainingConfig object will contain the + configuration bits from the last training + packet which can be examined to determine the + exact reason for the training configuration + failure. + + If training did not succeed (dot12Status is + 'linkFailure' or 'openFailure), the entire + process will be restarted after + MAC_Retraining_Delay_Timer seconds. + + If training does succeed (dot12Status changes to + 'opened'), ifOperStatus will change to 'up'. If + training does not succeed (dot12Status changes to + 'linkFailure' or 'openFailure'), ifOperStatus will + remain 'down'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aMACStatus." + ::= { dot12ConfigEntry 8 } + + dot12ControlMode OBJECT-TYPE + SYNTAX INTEGER { + masterMode(1), + slaveMode(2), + learn(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure and report + whether or not this interface is operating in + master mode. In a Demand Priority network, end + node interfaces typically operate in slave mode, + while switch interfaces may control the Demand + Priority protocol and operate in master mode. + + This object may be implemented as a read-only + object by those agents and interfaces that do not + implement software control of master mode. In + particular, interfaces that cannot operate in + master mode, and interfaces on which master mode + is controlled by a pushbutton on the device, + should implement this object read-only. + + Some interfaces do not require network management + configuration of this feature and can autosense + whether to use master mode or slave mode. The + value 'learn' is used for that purpose. While + autosense is taking place, the value 'learn' is + returned. + + A network management operation which modifies the + value of dot12ControlMode causes the interface + to retrain." + ::= { dot12ConfigEntry 9 } + + dot12StatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot12StatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a collection of 802.12 interfaces + attached to a particular system." + ::= { dot12MIBObjects 2 } + + dot12StatEntry OBJECT-TYPE + SYNTAX Dot12StatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a particular interface to an + 802.12 medium. The receive statistics in this + table apply only to packets received by this + station (i.e., packets whose destination address + is either the local station address, the + broadcast address, or a multicast address that + this station is receiving, unless the station is + in promiscuous mode)." + INDEX { ifIndex } + ::= { dot12StatTable 1 } + + Dot12StatEntry ::= + SEQUENCE { + dot12InHighPriorityFrames Counter32, + dot12InHighPriorityOctets Counter32, + dot12InNormPriorityFrames Counter32, + dot12InNormPriorityOctets Counter32, + dot12InIPMErrors Counter32, + dot12InOversizeFrameErrors Counter32, + dot12InDataErrors Counter32, + dot12InNullAddressedFrames Counter32, + dot12OutHighPriorityFrames Counter32, + dot12OutHighPriorityOctets Counter32, + dot12TransitionIntoTrainings Counter32, + dot12HCInHighPriorityOctets Counter64, + dot12HCInNormPriorityOctets Counter64, + dot12HCOutHighPriorityOctets Counter64 + } + + dot12InHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of high priority frames + that have been received on this interface. + Includes both good and bad high priority frames, + as well as high priority training frames. Does + not include normal priority frames which were + priority promoted." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityFramesReceived." + ::= { dot12StatEntry 1 } + + dot12InHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InHighPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsReceived." + ::= { dot12StatEntry 2 } + + dot12InNormPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of normal priority frames + that have been received on this interface. + Includes both good and bad normal priority + frames, as well as normal priority training + frames and normal priority frames which were + priority promoted." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityFramesReceived." + ::= { dot12StatEntry 3 } + + dot12InNormPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InNormPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityOctetsReceived." + ::= { dot12StatEntry 4 } + + dot12InIPMErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of frames + that have been received on this interface with an + invalid packet marker and no PMI errors. A + repeater will write an invalid packet marker to + the end of a frame containing errors as it is + forwarded through the repeater to the other + ports. This counter is incremented by one for + each frame received on this interface which has + had an invalid packet marker added to the end of + the frame." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aIPMFramesReceived." + ::= { dot12StatEntry 5 } + + dot12InOversizeFrameErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of oversize frames + received on this interface. This counter is + incremented by one for each frame received on + this interface whose OctetCount is larger than + the maximum legal frame size. The frame size + which causes this counter to increment is + dependent on the current framing type." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aOversizeFramesReceived." + ::= { dot12StatEntry 6 } + + dot12InDataErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of errored frames + received on this interface. This counter is + incremented by one for each frame received on + this interface with any of the following errors: + bad FCS (with no IPM), PMI errors (excluding + frames with an IPM as the only PMI error), + undersize, bad start of frame delimiter, or bad + end of packet marker. Does not include frames + counted by dot12InIPMErrors, + dot12InNullAddressedFrames, or + dot12InOversizeFrameErrors. + + This counter indicates problems with the cable + directly attached to this interface, while + dot12InIPMErrors indicates problems with remote + cables." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDataErrorFramesReceived." + ::= { dot12StatEntry 7 } + + dot12InNullAddressedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of null addressed frames + received on this interface. This counter is + incremented by one for each frame received on + this interface with a destination MAC address + consisting of all zero bits. Both void and + training frames are included in this counter. + + Note that since this station would normally not + receive null addressed frames, this counter is + only incremented when this station is operating + in promiscuous mode or in training." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNullAddressedFramesReceived." + ::= { dot12StatEntry 8 } + + dot12OutHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each high + priority frame successfully transmitted out this + interface." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityFramesTransmitted." + ::= { dot12StatEntry 9 } + + dot12OutHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by OctetCount for + each frame counted by dot12OutHighPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsTransmitted." + ::= { dot12StatEntry 10 } + + dot12TransitionIntoTrainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + this interface has entered the training state. + This counter is incremented by one each time + dot12Status transitions to 'linkFailure' from any + state other than 'opening' or 'openFailure'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aTransitionsIntoTraining." + ::= { dot12StatEntry 11 } + + dot12HCInHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InHighPriorityFrames. + + This counter is a 64 bit version of + dot12InHighPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsReceived." + ::= { dot12StatEntry 12 } + + dot12HCInNormPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InNormPriorityFrames. + + This counter is a 64 bit version of + dot12InNormPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityOctetsReceived." + ::= { dot12StatEntry 13 } + + dot12HCOutHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by OctetCount for + each frame counted by dot12OutHighPriorityFrames. + + This counter is a 64 bit version of + dot12OutHighPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsTransmitted." + ::= { dot12StatEntry 14 } + + -- conformance information + + dot12Conformance OBJECT IDENTIFIER ::= { dot12MIB 2 } + + dot12Compliances OBJECT IDENTIFIER ::= { dot12Conformance 1 } + dot12Groups OBJECT IDENTIFIER ::= { dot12Conformance 2 } + + -- compliance statements + + dot12Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for managed network + entities that have 802.12 interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot12ConfigGroup, dot12StatsGroup } + + OBJECT dot12DesiredFramingType + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12DesiredPromiscStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12Commands + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12ControlMode + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + ::= { dot12Compliances 1 } + + -- units of conformance + + dot12ConfigGroup OBJECT-GROUP + OBJECTS { dot12DesiredFramingType, + dot12FramingCapability, + dot12DesiredPromiscStatus, + dot12TrainingVersion, + dot12LastTrainingConfig, + dot12Commands, dot12Status, + dot12CurrentFramingType, + dot12ControlMode } + STATUS current + DESCRIPTION + "A collection of objects for managing the status + and configuration of IEEE 802.12 interfaces." + ::= { dot12Groups 1 } + + dot12StatsGroup OBJECT-GROUP + OBJECTS { dot12InHighPriorityFrames, + dot12InHighPriorityOctets, + dot12InNormPriorityFrames, + dot12InNormPriorityOctets, + dot12InIPMErrors, + dot12InOversizeFrameErrors, + dot12InDataErrors, + dot12InNullAddressedFrames, + dot12OutHighPriorityFrames, + dot12OutHighPriorityOctets, + dot12TransitionIntoTrainings, + dot12HCInHighPriorityOctets, + dot12HCInNormPriorityOctets, + dot12HCOutHighPriorityOctets } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for + IEEE 802.12 interfaces." + ::= { dot12Groups 2 } + +END diff --git a/mibs/ietf/DOT12-RPTR-MIB b/mibs/ietf/DOT12-RPTR-MIB new file mode 100644 index 0000000..7e4d4ec --- /dev/null +++ b/mibs/ietf/DOT12-RPTR-MIB @@ -0,0 +1,1963 @@ +DOT12-RPTR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + mib-2, Integer32, Counter32, Counter64, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + MacAddress, TruthValue, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + vgRptrMIB MODULE-IDENTITY + LAST-UPDATED "9705192256Z" -- May 19, 1997 + ORGANIZATION "IETF 100VG-AnyLAN Working Group" + CONTACT-INFO + "WG E-mail: vgmib@hprnd.rose.hp.com + + Chair: Jeff Johnson + Postal: RedBack Networks + 2570 North First Street, Suite 410 + San Jose, CA 95131 + Tel: +1 408 571 2699 + Fax: +1 408 571 2698 + E-mail: jeff@redbacknetworks.com + + Editor: John Flick + Postal: Hewlett Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + E-mail: johnf@hprnd.rose.hp.com" + DESCRIPTION + "This MIB module describes objects for managing + IEEE 802.12 repeaters." + ::= { mib-2 53 } + + vgRptrObjects OBJECT IDENTIFIER ::= { vgRptrMIB 1 } + vgRptrBasic OBJECT IDENTIFIER ::= { vgRptrObjects 1 } + vgRptrBasicRptr OBJECT IDENTIFIER ::= { vgRptrBasic 1 } + + vgRptrInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each 802.12 repeater + in the managed system." + ::= { vgRptrBasicRptr 1 } + + vgRptrInfoEntry OBJECT-TYPE + SYNTAX VgRptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single repeater." + INDEX { vgRptrInfoIndex } + ::= { vgRptrInfoTable 1 } + + VgRptrInfoEntry ::= + SEQUENCE { + vgRptrInfoIndex Integer32, + vgRptrInfoMACAddress MacAddress, + vgRptrInfoCurrentFramingType INTEGER, + vgRptrInfoDesiredFramingType INTEGER, + vgRptrInfoFramingCapability INTEGER, + vgRptrInfoTrainingVersion INTEGER, + vgRptrInfoOperStatus INTEGER, + vgRptrInfoReset INTEGER, + vgRptrInfoLastChange TimeStamp + } + + vgRptrInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for the repeater for which + this entry contains information. The numbering + scheme for repeaters is implementation specific." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRepeaterID." + ::= { vgRptrInfoEntry 1 } + + vgRptrInfoMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC address used by the repeater when it + initiates training on the uplink port. Repeaters + are allowed to train with an assigned MAC address + or a null (all zeroes) MAC address." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aMACAddress." + ::= { vgRptrInfoEntry 2 } + + vgRptrInfoCurrentFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing (802.3 or 802.5) currently + in use by the repeater." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aCurrentFramingType." + ::= { vgRptrInfoEntry 3 } + + vgRptrInfoDesiredFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of framing which will be used by the + repeater after the next time it is reset. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aDesiredFramingType." + ::= { vgRptrInfoEntry 4 } + + vgRptrInfoFramingCapability OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing this repeater is capable of + supporting." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aFramingCapability." + ::= { vgRptrInfoEntry 5 } + + vgRptrInfoTrainingVersion OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest version bits (vvv bits) supported by + the repeater during training." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRMACVersion." + ::= { vgRptrInfoEntry 6 } + + vgRptrInfoOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ok(2), + generalFailure(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vgRptrInfoOperStatus object indicates the + operational state of the repeater." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRepeaterHealthState." + ::= { vgRptrInfoEntry 7 } + + vgRptrInfoReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to reset(2) causes the + repeater to transition to its initial state as + specified in clause 12 [IEEE Std 802.12]. + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to + allow the SNMP response to be transmitted. In + any event, the SNMP response must be transmitted. + + This action does not reset the management + counters defined in this document nor does it + affect the vgRptrPortAdminStatus parameters. + Included in this action is the execution of a + disruptive Self-Test with the following + characteristics: + + 1) The nature of the tests is not specified. + 2) The test resets the repeater but without + affecting configurable management + information about the repeater. + 3) Packets received during the test may or + may not be transferred. + 4) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + vgRptrInfoOperStatus), and send a + vgRptrResetEvent." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.2, + acResetRepeater." + ::= { vgRptrInfoEntry 8 } + + vgRptrInfoLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when any of the following + conditions occurred: + + 1) agent cold- or warm-started; + 2) this instance of repeater was created + (such as when a device or module was + added to the system); + 3) a change in the value of + vgRptrInfoOperStatus; + 4) ports were added or removed as members of + the repeater; or + 5) any of the counters associated with this + repeater had a discontinuity." + ::= { vgRptrInfoEntry 9 } + + vgRptrBasicGroup OBJECT IDENTIFIER ::= { vgRptrBasic 2 } + + vgRptrBasicGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrBasicGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about groups of + ports." + ::= { vgRptrBasicGroup 1 } + + vgRptrBasicGroupEntry OBJECT-TYPE + SYNTAX VgRptrBasicGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrBasicGroupTable, containing + information about a single group of ports." + INDEX { vgRptrGroupIndex } + ::= { vgRptrBasicGroupTable 1 } + + VgRptrBasicGroupEntry ::= + SEQUENCE { + vgRptrGroupIndex Integer32, + vgRptrGroupObjectID OBJECT IDENTIFIER, + vgRptrGroupOperStatus INTEGER, + vgRptrGroupPortCapacity Integer32, + vgRptrGroupCablesBundled INTEGER + } + + vgRptrGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2146483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the group within the + system for which this entry contains information. + The numbering scheme for groups is implementation + specific." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupID." + ::= { vgRptrBasicGroupEntry 1 } + + vgRptrGroupObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + group. This value may be allocated within the + SMI enterprises subtree (1.3.6.1.4.1) and + provides a straight-forward and unambiguous means + for determining what kind of group is being + managed. + + For example, this object could take the value + 1.3.6.1.4.1.4242.1.2.14 if vendor 'Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.4242, + and had assigned the identifier + 1.3.6.1.4.1.4242.1.2.14 to its 'Wilma Flintstone + 6-Port Plug-in Module.'" + ::= { vgRptrBasicGroupEntry 2 } + + vgRptrGroupOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + operational(2), + malfunctioning(3), + notPresent(4), + underTest(5), + resetInProgress(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the operational status + of the group. + + A status of notPresent(4) indicates that the + group is temporarily or permanently physically + and/or logically not a part of the system. It + is an implementation-specific matter as to + whether the agent effectively removes notPresent + entries from the table. + + A status of operational(2) indicates that the + group is functioning, and a status of + malfunctioning(3) indicates that the group is + malfunctioning in some way." + ::= { vgRptrBasicGroupEntry 3 } + + vgRptrGroupPortCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2146483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vgRptrGroupPortCapacity is the number of + ports that can be contained within the group. + Valid range is 1-2147483647. Within each group, + the ports are uniquely numbered in the range from + 1 to vgRptrGroupPortCapacity. + + Some ports may not be present in the system, in + which case the actual number of ports present will + be less than the value of vgRptrGroupPortCapacity. + The number of ports present is never greater than + the value of vgRptrGroupPortCapacity. + + Note: In practice, this will generally be the + number of ports on a module, card, or board, and + the port numbers will correspond to numbers marked + on the physical embodiment." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupPortCapacity." + ::= { vgRptrBasicGroupEntry 4 } + + vgRptrGroupCablesBundled OBJECT-TYPE + SYNTAX INTEGER { + someCablesBundled(1), + noCablesBundled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to indicate whether there are + any four-pair UTP links connected to this group + that are contained in a cable bundle with multiple + four-pair groups (e.g. a 25-pair bundle). Bundled + cable may only be used for repeater-to-end node + links where the end node is not in promiscuous + mode. + + When a broadcast or multicast packet is received + from a port on this group that is not a + promiscuous or cascaded port, the packet will be + buffered completely before being repeated if + this object is set to 'someCablesBundled(1)'. + When this object is equal to 'noCablesBundled(2)', + all packets received from ports on this group will + be repeated as the frame is being received. + + Note that the value 'someCablesBundled(1)' will + work in the vast majority of all installations, + regardless of whether or not any cables are + physically in a bundle, since packets received + from promiscuous and cascaded ports automatically + avoid the store and forward. The main situation + in which 'noCablesBundled(2)' is beneficial is + when there is a large amount of multicast traffic + and the cables are not in a bundle. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupCablesBundled." + ::= { vgRptrBasicGroupEntry 5 } + + vgRptrBasicPort OBJECT IDENTIFIER ::= { vgRptrBasic 3 } + + vgRptrBasicPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrBasicPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration and status + information about 802.12 repeater ports in the + system. The number of entries is independent of + the number of repeaters in the managed system." + ::= { vgRptrBasicPort 1 } + + vgRptrBasicPortEntry OBJECT-TYPE + SYNTAX VgRptrBasicPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrBasicPortTable, containing + information about a single port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrBasicPortTable 1 } + + VgRptrBasicPortEntry ::= + SEQUENCE { + vgRptrPortIndex Integer32, + vgRptrPortType INTEGER, + vgRptrPortAdminStatus INTEGER, + vgRptrPortOperStatus INTEGER, + vgRptrPortSupportedPromiscMode INTEGER, + vgRptrPortSupportedCascadeMode INTEGER, + vgRptrPortAllowedTrainType INTEGER, + vgRptrPortLastTrainConfig OCTET STRING, + vgRptrPortTrainingResult OCTET STRING, + vgRptrPortPriorityEnable TruthValue, + vgRptrPortRptrInfoIndex Integer32 + } + + vgRptrPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information. This + identifies the port independently from the + repeater it may be attached to. The numbering + scheme for ports is implementation specific; + however, this value can never be greater than + vgRptrGroupPortCapacity for the associated group." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortID." + ::= { vgRptrBasicPortEntry 1 } + + vgRptrPortType OBJECT-TYPE + SYNTAX INTEGER { + cascadeExternal(1), + cascadeInternal(2), + localExternal(3), + localInternal(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the type of port. One of the + following: + + cascadeExternal - Port is an uplink with + physical connections which + are externally visible + cascadeInternal - Port is an uplink with + physical connections which + are not externally visible, + such as a connection to an + internal backplane in a + chassis + localExternal - Port is a downlink or local + port with externally + visible connections + localInternal - Port is a downlink or local + port with connections which + are not externally visible, + such as a connection to an + internal agent + + 'internal' is used to identify ports which place + traffic into the repeater, but do not have any + external connections. Note that both DTE and + cascaded repeater downlinks are considered + 'local' ports." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortType." + ::= { vgRptrBasicPortEntry 2 } + + vgRptrPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Port enable/disable function. Enabling a + disabled port will cause training to be + initiated by the training initiator (the slave + mode device) on the link. Setting this object to + disabled(2) disables the port. + + A disabled port neither transmits nor receives. + Once disabled, a port must be explicitly enabled + to restore operation. A port which is disabled + when power is lost or when a reset is exerted + shall remain disabled when normal operation + resumes. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortAdministrativeState." + ::= { vgRptrBasicPortEntry 3 } + + vgRptrPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + training(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current status for the port as specified by the + PORT_META_STATE in the port process module of + clause 12 [IEEE Std 802.12]. + + During initialization or any link warning + conditions, vgRptrPortStatus will be + 'inactive(2)'. + + When Training_Up is received by the repeater on a + local port (or when Training_Down is received on + a cascade port), vgRptrPortStatus will change to + 'training(3)' and vgRptrTrainingResult can be + monitored to see the detailed status regarding + training. + + When 24 consecutive good FCS packets are exchanged + and the configuration bits are OK, + vgRptrPortStatus will change to 'active(1)'. + + A disabled port shall have a port status of + 'inactive(2)'." + REFERENCE + "IEEE Standard 802.12, 13.2.4.5.1, + aPortStatus." + ::= { vgRptrBasicPortEntry 4 } + + vgRptrPortSupportedPromiscMode OBJECT-TYPE + SYNTAX INTEGER { + singleModeOnly(1), + singleOrPromiscMode(2), + promiscModeOnly(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes whether the port hardware + is capable of supporting promiscuous mode, single + address mode (i.e., repeater filters unicasts not + addressed to the end station attached to this + port), or both. A port for which vgRptrPortType + is equal to 'cascadeInternal' or 'cascadeExternal' + will always have a value of 'promiscModeOnly' for + this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aSupportedPromiscMode." + ::= { vgRptrBasicPortEntry 5 } + + vgRptrPortSupportedCascadeMode OBJECT-TYPE + SYNTAX INTEGER { + endNodesOnly(1), + endNodesOrRepeaters(2), + cascadePort(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes whether the port hardware + is capable of supporting cascaded repeaters, end + nodes, or both. A port for which vgRptrPortType + is equal to 'cascadeInternal' or + 'cascadeExternal' will always have a value of + 'cascadePort' for this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aSupportedCascadeMode." + ::= { vgRptrBasicPortEntry 6 } + + vgRptrPortAllowedTrainType OBJECT-TYPE + SYNTAX INTEGER { + allowEndNodesOnly(1), + allowPromiscuousEndNodes(2), + allowEndNodesOrRepeaters(3), + allowAnything(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This security object is set by the network + manager to configure what type of device is + permitted to connect to the port. One of the + following values: + allowEndNodesOnly - only non- + promiscuous end + nodes permitted. + allowPromiscuousEndNodes - promiscuous or + non-promiscuous + end nodes + permitted + allowEndNodesOrRepeaters - repeaters or non- + promiscuous end + nodes permitted + allowAnything - repeaters, + promiscuous or + non-promiscuous + end nodes + permitted + + For a port for which vgRptrPortType is equal to + 'cascadeInternal' or 'cascadeExternal', the + corresponding instance of this object may not be + set to 'allowEndNodesOnly' or + 'allowPromiscuousEndNodes'. + + The agent must reject a SET of this object if the + value includes no capabilities that are + supported by this port's hardware, as defined by + the values of the corresponding instances of + vgRptrPortSupportedPromiscMode and + vgRptrPortSupportedCascadeMode. + + Note that vgRptrPortSupportPromiscMode and + vgRptrPortSupportedCascadeMode represent what the + port hardware is capable of supporting. + vgRptrPortAllowedTrainType is used for setting an + administrative policy for a port. The actual set + of training configurations that will be allowed + to succeed on a port is the intersection of what + the hardware will support and what is + administratively allowed. The above requirement + on what values may be set to this object says that + the intersection of what is supported and what is + allowed must be non-empty. In other words, it + must not result in a situation in which nothing + would be allowed to train on that port. However, + a value can be set to this object as long as the + combination of this object and what is supported + by the hardware would still leave at least one + configuration that could successfully train on the + port. + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aAllowableTrainingType." + ::= { vgRptrBasicPortEntry 7 } + + vgRptrPortLastTrainConfig OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 16 bit field. For local ports, + this object contains the requested configuration + field from the most recent error-free training + request frame sent by the device connected to + the port. For cascade ports, this object contains + the responder's allowed configuration field from + the most recent error-free training response frame + received in response to training initiated by this + repeater. The format of the current version of + this field is described in section 3.2. Please + refer to the most recent version of the IEEE + 802.12 standard for the most up-to-date definition + of the format of this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLastTrainingConfig." + ::= { vgRptrBasicPortEntry 8 } + + vgRptrPortTrainingResult OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This 18 bit field is used to indicate the result + of training. It contains two bits which indicate + if error-free training frames have been received, + and it also contains the 16 bits of the allowed + configuration field from the most recent + error-free training response frame on the port. + + First Octet: Second and Third Octets: + 7 6 5 4 3 2 1 0 + +-+-+-+-+-+-+-+-+-----------------------------+ + |0|0|0|0|0|0|V|G| allowed configuration field | + +-+-+-+-+-+-+-+-+-----------------------------+ + V: Valid: set when at least one error-free + training frame has been received. + Indicates the 16 training configuration + bits in vgRptrPortLastTrainConfig and + vgRptrPortTrainingResult contain valid + information. This bit is cleared when + vgRptrPortStatus transitions to the + 'inactive' or 'training' state. + G: LinkGood: indicates the link hardware is + OK. Set if 24 consecutive error-free + training packets have been exchanged. + Cleared when a training packet with + errors is received, or when + vgRptrPortStatus transitions to the + 'inactive' or 'training' state. + + The format of the current version of the allowed + configuration field is described in section 3.2. + Please refer to the most recent version of the + IEEE 802.12 standard for the most up-to-date + definition of the format of this field. + + If the port is in training, a management station + can examine this object to see if any training + packets have been passed successfully. If there + have been any good training packets, the Valid + bit will be set and the management station can + examine the allowed configuration field to see if + there is a duplicate address, configuration, or + security problem. + + Note that on a repeater local port, this repeater + generates the training response bits, while on + a cascade port, the device at the upper end of + the link originated the training response bits." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTrainingResult." + ::= { vgRptrBasicPortEntry 9 } + vgRptrPortPriorityEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A configuration flag used to determine whether + the repeater will service high priority requests + received on the port as high priority or normal + priority. When 'false', high priority requests + on this port will be serviced as normal priority. + + The setting of this object has no effect on a + cascade port. Also note that the setting of this + object has no effect on a port connected to a + cascaded repeater. In both of these cases, this + setting is treated as always 'true'. The value + 'false' only has an effect when the port is a + localInternal or localExternal port connected to + an end node. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPriorityEnable." + ::= { vgRptrBasicPortEntry 10 } + + vgRptrPortRptrInfoIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater that this + port is currently mapped to. The repeater + identified by a particular value of this object + is the same as that identified by the same value + of vgRptrInfoIndex. A value of zero indicates + that this port is not currently mapped to any + repeater." + ::= { vgRptrBasicPortEntry 11 } + + + vgRptrMonitor OBJECT IDENTIFIER ::= { vgRptrObjects 2 } + + vgRptrMonRepeater OBJECT IDENTIFIER ::= { vgRptrMonitor 1 } + + vgRptrMonitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrMonitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of performance and error statistics for + each repeater in the system. The instance of the + vgRptrInfoLastChange associated with a repeater + is used to indicate possible discontinuities of + the counters in this table that are associated + with the same repeater." + ::= { vgRptrMonRepeater 1 } + + vgRptrMonitorEntry OBJECT-TYPE + SYNTAX VgRptrMonitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing statistics + for a single repeater." + INDEX { vgRptrInfoIndex } + ::= { vgRptrMonitorTable 1 } + + VgRptrMonitorEntry ::= + SEQUENCE { + vgRptrMonTotalReadableFrames Counter32, + vgRptrMonTotalReadableOctets Counter32, + vgRptrMonReadableOctetRollovers Counter32, + vgRptrMonHCTotalReadableOctets Counter64, + vgRptrMonTotalErrors Counter32 + } + + vgRptrMonTotalReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good frames of valid frame + length that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of frames as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortReadableFrames counters for all of the + ports in this repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 1 } + + vgRptrMonTotalReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in good + frames that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of octets as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortReadableOctets counters for all of the + ports in this repeater. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrReadableOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrMonHCTotalReadableOctets instead of the + two 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 2 } + + vgRptrMonReadableOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that the associated + instance of the vgRptrMonTotalReadableOctets + counter has rolled over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 3 } + + vgRptrMonHCTotalReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in good + frames that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of octets as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortHCReadableOctets counters for all of the + ports in this repeater. + + This counter is a 64 bit version of + vgRptrMonTotalReadableOctets. It should be used + by Network Management protocols which support 64 + bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 4 } + + vgRptrMonTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + all of the ports in this repeater. If an + implementation cannot obtain a count of these + errors as seen by the repeater itself, this + counter may be implemented as the summation of the + values of the vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, and + vgRptrPortDataErrorFrames counters for all of the + ports in this repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 5 } + + vgRptrMonGroup OBJECT IDENTIFIER ::= { vgRptrMonitor 2 } + -- Currently unused + + vgRptrMonPort OBJECT IDENTIFIER ::= { vgRptrMonitor 3 } + + vgRptrMonPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrMonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of performance and error statistics for + the ports. The columnar object + vgRptrPortLastChange is used to indicate possible + discontinuities of counter type columnar objects + in this table." + ::= { vgRptrMonPort 1 } + + vgRptrMonPortEntry OBJECT-TYPE + SYNTAX VgRptrMonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrMonPortTable, containing + performance and error statistics for a single + port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrMonPortTable 1 } + + VgRptrMonPortEntry ::= + SEQUENCE { + vgRptrPortReadableFrames Counter32, + vgRptrPortReadableOctets Counter32, + vgRptrPortReadOctetRollovers Counter32, + vgRptrPortHCReadableOctets Counter64, + vgRptrPortUnreadableOctets Counter32, + vgRptrPortUnreadOctetRollovers Counter32, + vgRptrPortHCUnreadableOctets Counter64, + vgRptrPortHighPriorityFrames Counter32, + vgRptrPortHighPriorityOctets Counter32, + vgRptrPortHighPriOctetRollovers Counter32, + vgRptrPortHCHighPriorityOctets Counter64, + vgRptrPortNormPriorityFrames Counter32, + vgRptrPortNormPriorityOctets Counter32, + vgRptrPortNormPriOctetRollovers Counter32, + vgRptrPortHCNormPriorityOctets Counter64, + vgRptrPortBroadcastFrames Counter32, + vgRptrPortMulticastFrames Counter32, + vgRptrPortNullAddressedFrames Counter32, + vgRptrPortIPMFrames Counter32, + vgRptrPortOversizeFrames Counter32, + vgRptrPortDataErrorFrames Counter32, + vgRptrPortPriorityPromotions Counter32, + vgRptrPortTransitionToTrainings Counter32, + vgRptrPortLastChange TimeStamp + } + + vgRptrPortReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of good frames of + valid frame length that have been received on + this port. This counter is incremented by one + for each frame received on the port which is not + counted by any of the following error counters: + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableFramesReceived." + ::= { vgRptrMonPortEntry 1 } + + vgRptrPortReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in good frames that have been received + on this port. This counter is incremented by + OctetCount for each frame received on this port + which has been determined to be a readable frame + (i.e. each frame counted by + vgRptrPortReadableFrames). + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortReadOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCReadableOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 2 } + + vgRptrPortReadOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortReadableOctets counter has rolled over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 3 } + + vgRptrPortHCReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in good frames that have been received + on this port. This counter is incremented by + OctetCount for each frame received on this port + which has been determined to be a readable frame + (i.e. each frame counted by + vgRptrPortReadableFrames). + + This counter is a 64 bit version of + vgRptrPortReadableOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2). + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 4 } + + vgRptrPortUnreadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in invalid frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. This counter can be + combined with vgRptrPortReadableOctets to + calculate network utilization. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortUnreadOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCUnreadableOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 5 } + + vgRptrPortUnreadOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortUnreadableOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 6 } + + vgRptrPortHCUnreadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in invalid frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. This counter can be + combined with vgRptrPortHCReadableOctets to + calculate network utilization. + + This counter is a 64 bit version of + vgRptrPortUnreadableOctets. It should be used + by Network Management protocols which support 64 + bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 7 } + + vgRptrPortHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of high priority frames + that have been received on this port. This + counter is incremented by one for each high + priority frame received on this port. This + counter includes both good and bad high priority + frames, as well as high priority training frames. + This counter does not include normal priority + frames which were priority promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityFramesReceived." + ::= { vgRptrMonPortEntry 8 } + + vgRptrPortHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortHighPriorityFrames. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortHighPriOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCHighPriorityOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 9 } + + vgRptrPortHighPriOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortHighPriorityOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 10 } + + vgRptrPortHCHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortHighPriorityFrames. + + This counter is a 64 bit version of + vgRptrPortHighPriorityOctets. It should be used + by Network Management protocols which support + 64 bit counters (e.g. SNMPv2). + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 11 } + + vgRptrPortNormPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of normal priority frames + that have been received on this port. This + counter is incremented by one for each normal + priority frame received on this port. This + counter includes both good and bad normal + priority frames, as well as normal priority + training frames and normal priority frames which + were priority promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityFramesReceived." + ::= { vgRptrMonPortEntry 12 } + + vgRptrPortNormPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortNormPriorityFrames. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortNormPriOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCNormPriorityOctets instead of the two + 32-bit counters. + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 13 } + + vgRptrPortNormPriOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortNormPriorityOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + + ::= { vgRptrMonPortEntry 14 } + + vgRptrPortHCNormPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortNormPriorityFrames. + + This counter is a 64 bit version of + vgRptrPortNormPriorityOctets. It should be used + by Network Management protocols which support + 64 bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 15 } + + vgRptrPortBroadcastFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of broadcast packets that + have been received on this port. This counter is + incremented by one for each readable frame + received on this port whose destination MAC + address is the broadcast address. Frames + counted by this counter are also counted by + vgRptrPortReadableFrames. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aBroadcastFramesReceived." + ::= { vgRptrMonPortEntry 16 } + + vgRptrPortMulticastFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of multicast packets that + have been received on this port. This counter is + incremented by one for each readable frame + received on this port whose destination MAC + address has the group address bit set, but is not + the broadcast address. Frames counted by this + counter are also counted by + vgRptrPortReadableFrames, but not by + vgRptrPortBroadcastFrames. Note that when the + value of the instance vgRptrInfoCurrentFramingType + for the repeater that this port is associated + with is equal to 'frameType88025', this count + includes packets addressed to functional + addresses. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aMulticastFramesReceived." + ::= { vgRptrMonPortEntry 17 } + + vgRptrPortNullAddressedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of null addressed packets + that have been received on this port. This + counter is incremented by one for each frame + received on this port with a destination MAC + address consisting of all zero bits. Both void + and training frames are included in this + counter. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNullAddressedFramesReceived." + ::= { vgRptrMonPortEntry 18 } + + vgRptrPortIPMFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of frames + that have been received on this port with an + invalid packet marker and no PMI errors. A + repeater will write an invalid packet marker to + the end of a frame containing errors as it is + forwarded through the repeater to the other + ports. This counter is incremented by one for + each frame received on this port which has had an + invalid packet marker added to the end of the + frame. + + This counter indicates problems occurring in the + domain of other repeaters, as opposed to problems + with cables or devices directly attached to this + repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aIPMFramesReceived." + ::= { vgRptrMonPortEntry 19 } + + vgRptrPortOversizeFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of oversize frames + received on this port. This counter is + incremented by one for each frame received on + this port whose OctetCount is larger than the + maximum legal frame size. + + The frame size which causes this counter to + increment is dependent on the current value of + vgRptrInfoCurrentFramingType for the repeater that + the port is associated with. When + vgRptrInfoCurrentFramingType is equal to + frameType88023 this counter will increment for + frames that are 1519 octets or larger. When + vgRptrInfoCurrentFramingType is equal to + frameType88025 this counter will increment for + frames that are 4521 octets or larger. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOversizeFramesReceived." + ::= { vgRptrMonPortEntry 20 } + + vgRptrPortDataErrorFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of errored frames + received on this port. This counter is + incremented by one for each frame received on + this port with any of the following errors: bad + FCS (with no IPM), PMI errors (excluding frames + with an IPM error as the only PMI error), or + undersize (with no IPM). Does not include + packets counted by vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, or + vgRptrPortNullAddressedFrames. + + This counter indicates problems with cables or + devices directly connected to this repeater, while + vgRptrPortIPMFrames indicates problems occurring + in the domain of other repeaters. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aDataErrorFramesReceived." + ::= { vgRptrMonPortEntry 21 } + + vgRptrPortPriorityPromotions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time the + priority promotion timer has expired on this port + and a normal priority frame is priority + promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPriorityPromotions." + ::= { vgRptrMonPortEntry 22 } + + vgRptrPortTransitionToTrainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time the + vgRptrPortStatus object for this port transitions + into the 'training' state. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTransitionsIntoTraining." + ::= { vgRptrMonPortEntry 23 } + + vgRptrPortLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last of the + following occurred: + 1) the agent cold- or warm-started; + 2) the row for the port was created + (such as when a device or module was + added to the system); or + 3) any condition that would cause one of + the counters for the row to experience + a discontinuity." + ::= { vgRptrMonPortEntry 24 } + + + vgRptrAddrTrack OBJECT IDENTIFIER ::= { vgRptrObjects 3 } + + vgRptrAddrTrackRptr + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 1 } + + -- Currently unused + + vgRptrAddrTrackGroup + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 2 } + -- Currently unused + + vgRptrAddrTrackPort + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 3 } + + vgRptrAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of address mapping information about the + ports." + ::= { vgRptrAddrTrackPort 1 } + + vgRptrAddrTrackEntry OBJECT-TYPE + SYNTAX VgRptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing address mapping + information about a single port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrAddrTrackTable 1 } + + VgRptrAddrTrackEntry ::= + SEQUENCE { + vgRptrAddrLastTrainedAddress OCTET STRING, + vgRptrAddrTrainedAddrChanges Counter32, + vgRptrRptrDetectedDupAddress TruthValue, + vgRptrMgrDetectedDupAddress TruthValue + } + + + vgRptrAddrLastTrainedAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the MAC address of the last + station which succeeded in training on this port. + A cascaded repeater may train using the null + address. If no stations have succeeded in + training on this port since the agent began + monitoring the port activity, the agent shall + return a string of length zero." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLastTrainedAddress." + ::= { vgRptrAddrTrackEntry 1 } + + vgRptrAddrTrainedAddrChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each time + that the vgRptrAddrLastTrainedAddress object for + this port changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTrainedAddressChanges." + ::= { vgRptrAddrTrackEntry 2 } + + vgRptrRptrDetectedDupAddress OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to indicate that the + repeater detected an error-free training frame on + this port with a non-null source MAC address which + matches the value of vgRptrAddrLastTrainedAddress + of another active port in the same repeater. This + is reset to 'false' when an error-free training + frame is received with a non-null source MAC + address which does not match + vgRptrAddrLastTrainedAddress of another port which + is active in the same repeater. + + For the cascade port, this object will be 'true' + if the 'D' bit in the most recently received + error-free training response frame was set, + indicating the device at the other end of the link + believes that this repeater's cascade port is + using a duplicate address. This may be because + the device at the other end of the link detected a + duplicate address itself, or, if the other device + is also a repeater, it could be because + vgRptrMgrDetectedDupAddress was set to 'true' on + the port that this repeater's cascade port is + connected to." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLocalRptrDetectedDupAddr." + ::= { vgRptrAddrTrackEntry 3 } + + vgRptrMgrDetectedDupAddress OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object can be set by a management station + when it detects that there is a duplicate MAC + address. This object is OR'd with + vgRptrRptrDetectedDupAddress to form the value of + the 'D' bit in training response frames on this + port. + + The purpose of this object is to provide a means + for network management software to inform an end + station that it is using a duplicate station + address. Setting this object does not affect the + current state of the link; the end station will + not be informed of the duplicate address until it + retrains for some reason. Note that regardless + of its station address, the end station will not + be able to train successfully until the network + management software has set this object back to + 'false'. Although this object exists on + cascade ports, it does not perform any function + since this repeater is the initiator of training + on a cascade port." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aCentralMgmtDetectedDupAddr." + ::= { vgRptrAddrTrackEntry 4 } + + + vgRptrTraps OBJECT IDENTIFIER ::= { vgRptrMIB 2 } + vgRptrTrapPrefix OBJECT IDENTIFIER ::= { vgRptrTraps 0 } + + vgRptrHealth NOTIFICATION-TYPE + OBJECTS { vgRptrInfoOperStatus } + STATUS current + DESCRIPTION + "A vgRptrHealth trap conveys information related + to the operational state of a repeater. This trap + is sent when the value of an instance of + vgRptrInfoOperStatus changes. The vgRptrHealth + trap is not sent as a result of powering up a + repeater. + + The vgRptrHealth trap must contain the instance of + the vgRptrInfoOperStatus object associated with + the affected repeater. + + The agent must throttle the generation of + consecutive vgRptrHealth traps so that there is at + least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.)" + REFERENCE + "IEEE 802.12, Layer Management, 13.2.4.2.3, + nRepeaterHealth." + ::= { vgRptrTrapPrefix 1 } + + vgRptrResetEvent NOTIFICATION-TYPE + OBJECTS { vgRptrInfoOperStatus } + STATUS current + DESCRIPTION + "A vgRptrResetEvent trap conveys information + related to the operational state of a repeater. + This trap is sent on completion of a repeater + reset action. A repeater reset action is defined + as a transition to its initial state as specified + in clause 12 [IEEE Std 802.12] when triggered by + a management command. + + The vgRptrResetEvent trap is not sent when the + agent restarts and sends an SNMP coldStart or + warmStart trap. + + The vgRptrResetEvent trap must contain the + instance of the vgRptrInfoOperStatus object + associated with the affected repeater. + + The agent must throttle the generation of + consecutive vgRptrResetEvent traps so that there + is at least a five-second gap between traps of + this type. When traps are throttled, they are + dropped, not queued for sending at a future time. + (Note that 'generating' a trap means sending to + all configured recipients.)" + REFERENCE + "IEEE 802.12, Layer Management, 13.2.4.2.3, + nRepeaterReset." + ::= { vgRptrTrapPrefix 2 } + + -- conformance information + + vgRptrConformance OBJECT IDENTIFIER ::= { vgRptrMIB 3 } + + vgRptrCompliances + OBJECT IDENTIFIER ::= { vgRptrConformance 1 } + + vgRptrGroups OBJECT IDENTIFIER ::= { vgRptrConformance 2 } + + -- compliance statements + + vgRptrCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for managed 802.12 + repeaters." + + MODULE -- this module + MANDATORY-GROUPS { vgRptrConfigGroup, + vgRptrStatsGroup, + vgRptrAddrGroup, + vgRptrNotificationsGroup } + + GROUP vgRptrStats64Group + DESCRIPTION + "Implementation of this group is recommended + for systems which can support Counter64." + + OBJECT vgRptrInfoDesiredFramingType + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required + in a repeater system that does not support + configuration of framing types." + + MODULE SNMP-REPEATER-MIB + GROUP snmpRptrGrpRptrAddrSearch + DESCRIPTION + "Implementation of this group is recommended + for systems which have the necessary + instrumentation to search all incoming data + streams for a particular source MAC address." + ::= { vgRptrCompliances 1 } + + -- units of conformance + + vgRptrConfigGroup OBJECT-GROUP + OBJECTS { + vgRptrInfoMACAddress, + vgRptrInfoCurrentFramingType, + vgRptrInfoDesiredFramingType, + vgRptrInfoFramingCapability, + vgRptrInfoTrainingVersion, + vgRptrInfoOperStatus, + vgRptrInfoReset, + vgRptrInfoLastChange, + vgRptrGroupObjectID, + vgRptrGroupOperStatus, + vgRptrGroupPortCapacity, + vgRptrGroupCablesBundled, + vgRptrPortType, + vgRptrPortAdminStatus, + vgRptrPortOperStatus, + vgRptrPortSupportedPromiscMode, + vgRptrPortSupportedCascadeMode, + vgRptrPortAllowedTrainType, + vgRptrPortLastTrainConfig, + vgRptrPortTrainingResult, + vgRptrPortPriorityEnable, + vgRptrPortRptrInfoIndex + } + STATUS current + DESCRIPTION + "A collection of objects for managing the status + and configuration of IEEE 802.12 repeaters." + ::= { vgRptrGroups 1 } + + vgRptrStatsGroup OBJECT-GROUP + OBJECTS { + vgRptrMonTotalReadableFrames, + vgRptrMonTotalReadableOctets, + vgRptrMonReadableOctetRollovers, + vgRptrMonTotalErrors, + vgRptrPortReadableFrames, + vgRptrPortReadableOctets, + vgRptrPortReadOctetRollovers, + vgRptrPortUnreadableOctets, + vgRptrPortUnreadOctetRollovers, + vgRptrPortHighPriorityFrames, + vgRptrPortHighPriorityOctets, + vgRptrPortHighPriOctetRollovers, + vgRptrPortNormPriorityFrames, + vgRptrPortNormPriorityOctets, + vgRptrPortNormPriOctetRollovers, + vgRptrPortBroadcastFrames, + vgRptrPortMulticastFrames, + vgRptrPortNullAddressedFrames, + vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, + vgRptrPortDataErrorFrames, + vgRptrPortPriorityPromotions, + vgRptrPortTransitionToTrainings, + vgRptrPortLastChange + } + STATUS current + DESCRIPTION + "A collection of objects for providing statistics + for IEEE 802.12 repeaters. Systems which support + Counter64 should also implement + vgRptrStats64Group." + ::= { vgRptrGroups 2 } + + vgRptrStats64Group OBJECT-GROUP + OBJECTS { + vgRptrMonHCTotalReadableOctets, + vgRptrPortHCReadableOctets, + vgRptrPortHCUnreadableOctets, + vgRptrPortHCHighPriorityOctets, + vgRptrPortHCNormPriorityOctets + } + STATUS current + DESCRIPTION + "A collection of objects for providing statistics + for IEEE 802.12 repeaters in a system that + supports Counter64." + ::= { vgRptrGroups 3 } + + vgRptrAddrGroup OBJECT-GROUP + OBJECTS { + vgRptrAddrLastTrainedAddress, + vgRptrAddrTrainedAddrChanges, + vgRptrRptrDetectedDupAddress, + vgRptrMgrDetectedDupAddress + } + STATUS current + DESCRIPTION + "A collection of objects for tracking addresses + on IEEE 802.12 repeaters." + ::= { vgRptrGroups 4 } + + vgRptrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + vgRptrHealth, + vgRptrResetEvent + } + STATUS current + DESCRIPTION + "A collection of notifications used to indicate + 802.12 repeater general status changes." + ::= { vgRptrGroups 5 } + + END diff --git a/mibs/ietf/DOT3-EPON-MIB b/mibs/ietf/DOT3-EPON-MIB new file mode 100644 index 0000000..364455f --- /dev/null +++ b/mibs/ietf/DOT3-EPON-MIB @@ -0,0 +1,2661 @@ +DOT3-EPON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Counter32, + Integer32, Unsigned32, Counter64 + FROM SNMPv2-SMI + TruthValue, MacAddress + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ; + +dot3EponMIB MODULE-IDENTITY + LAST-UPDATED "200703290000Z" -- March 29, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working + Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + + + + In Body: subscribe your_email_address + Chair: Bert Wijnen + Postal: Lucent Technologies + Schagen 33 + 3461 GL Linschoten + Netherlands + Tel: +31-348-407-775 + E-mail: bwijnen@lucent.com + + Editor: Lior Khermosh + Postal: PMC-SIERRA + Kohav Hertzelia bldg, + 4 Hasadnaot St. + Hertzliya Pituach 46120, + ISRAEL + P.O.Box 2089 Hertzliya Pituach 46120 Israel + Tel: +972-9-9628000 Ext: 302 + E-mail: lior_khermosh@pmc-sierra.com" + DESCRIPTION + "The objects in this MIB module are used to manage the + Ethernet in the First Mile (EFM) Ethernet Passive Optical + Network (EPON) Interfaces as defined in IEEE P802.3ah + clauses 60, 64, and 65. + The following reference is used throughout this MIB module: + [802.3ah] refers to: + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications - Media Access Control Parameters, + Physical Layers and Management Parameters for subscriber + access networks. IEEE Std 802.3ah-2004, October 2004. + + Of particular interest are clause 64 (Multi-Point Control + Protocol - MPCP), clause 65 (Point-to-Multipoint + Reconciliation Sublayer - P2MP RS), clause 60 (Ethernet + Passive Optical Network Physical Medium Dependent - EPON + PMDs), clause 30, 'Management', and clause 45, 'Management + Data Input/Output (MDIO) Interface'. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of 4837; see the RFC itself for + full legal notices. + + Key abbreviations: + BER - Bit Error Rate + BW - bandwidth + + + + CRC - Cyclic Redundancy Check + EFM - Ethernet First Mile + EPON - Ethernet Passive Optical Network + FEC - Forward Error Correction + LLID - Logical Link Identifier + MAC - Media Access Control + Mbps - Megabit per second + MDIO - Management Data Input/Output + MPCP - Multi-Point Control Protocol + OLT - Optical Line Terminal (Server unit of the EPON) + OMP - Optical Multi-Point + ONU - Optical Network Unit (Client unit of the EPON) + P2MP - Point-to-Multipoint + PHY - Physical Layer + PMD - Physical Medium Dependent + PON - Passive Optical Network + RTT - Round Trip Time + SLD - Start of LLID Delimiter + TQ - Time Quanta + " + + REVISION "200703290000Z" -- March 29, 2007 + DESCRIPTION "Initial version, published as RFC 4837." + + ::= { mib-2 155 } + +dot3EponObjects OBJECT IDENTIFIER ::= { dot3EponMIB 1} + +dot3EponConformance OBJECT IDENTIFIER ::= { dot3EponMIB 2} + +-- MPCP MIB modules definitions ([802.3ah], clause 30.3.5) + +dot3EponMpcpObjects + OBJECT IDENTIFIER ::= { dot3EponObjects 1 } + +dot3MpcpControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3MpcpControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Table of dot3 Multi-Point Control Protocol (MPCP) + MIB objects. The entries in the table are control and + status objects of the MPCP. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + + + + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3EponMpcpObjects 1 } + +dot3MpcpControlEntry OBJECT-TYPE + SYNTAX Dot3MpcpControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3 MPCP Control table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3MpcpControlTable 1} + +Dot3MpcpControlEntry ::= + SEQUENCE { + dot3MpcpOperStatus TruthValue, + dot3MpcpAdminState TruthValue, + dot3MpcpMode INTEGER, + dot3MpcpSyncTime Unsigned32, + dot3MpcpLinkID Unsigned32, + dot3MpcpRemoteMACAddress MacAddress, + dot3MpcpRegistrationState INTEGER, + dot3MpcpTransmitElapsed Unsigned32, + dot3MpcpReceiveElapsed Unsigned32, + dot3MpcpRoundTripTime Unsigned32, + dot3MpcpMaximumPendingGrants Unsigned32 + } + +dot3MpcpOperStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the operational state of the + Multi-Point MAC Control sublayer as defined in + + + + [802.3ah], clause 64. When the value is true(1), the + interface will act as if the Multi-Point Control Protocol + is enabled. When the value is false(2), the interface + will act as if the Multi-Point Control Protocol is + disabled. The operational state can be changed using the + dot3MpcpAdminState object. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.1.2." + ::= { dot3MpcpControlEntry 1 } + +dot3MpcpAdminState OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to define the admin state of the + Multi-Point MAC Control sublayer, as defined in + [802.3ah], clause 64, and to reflect its state. + When selecting the value as true(1), the Multi-Point + Control Protocol of the interface is enabled. + When selecting the value as false(2), the Multi-Point + Control Protocol of the interface is disabled. + This object reflects the administrative state of the + Multi-Point Control Protocol of the interface. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3MpcpAdminState state can lead to disabling the + Multi-Point Control Protocol on the respective interface, + leading to the interruption of service for the users + connected to the respective EPON interface. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.2.1." + DEFVAL { false } + ::= { dot3MpcpControlEntry 2 } + +dot3MpcpMode OBJECT-TYPE + SYNTAX INTEGER { + olt(1), + onu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to identify the operational + state of the Multi-Point MAC Control sublayer as + defined in [802.3ah], clause 64. Reading olt(1) for an + + + + OLT (server) mode and onu(2) for an ONU (client) mode. + This object is used to identify the operational mode + for the MPCP tables. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.1.3." + DEFVAL { olt } + ::= { dot3MpcpControlEntry 3 } + +dot3MpcpSyncTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the 'sync lock time' of the + OLT receiver in increments of Time Quanta (TQ)-16ns + as defined in [802.3ah], clauses 60, 64, and 65. The + value returned shall be (sync lock time ns)/16. If + this value exceeds (2^32-1), the value (2^32-1) shall + be returned. This object is applicable for an OLT, + with the same value for all virtual interfaces, and + for an ONU." + REFERENCE "[802.3ah], 64.3.3.2." + ::= { dot3MpcpControlEntry 4 } + +dot3MpcpLinkID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that identifies the Logical Link + Identifier (LLID) associated with the MAC of the virtual + link as specified in [802.3ah], clause 65.1.3.2.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The ONU and the corresponding virtual MAC of the OLT, + for the same virtual link, have the same value. + Value is assigned when the ONU registers. + Value is freed when the ONU deregisters." + REFERENCE "[802.3ah], 30.3.5.1.4." + ::= { dot3MpcpControlEntry 5 } + +dot3MpcpRemoteMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "An object that identifies the source_address + parameter of the last MPCPDUs passed to the MAC Control. + This value is updated on reception of a valid frame with + 1) a destination Field equal to the reserved multicast + address for MAC Control as specified in [802.3], Annex + 31A; 2) the lengthOrType field value equal to the reserved + Type for MAC Control as specified in [802.3], Annex + 31A; 3) an MPCP subtype value equal to the subtype + reserved for MPCP as specified in [802.3ah], Annex 31A. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The value reflects the MAC address of the remote entity + and therefore the OLT holds a value for each LLID, which + is the MAC address of the ONU; the ONU has a single + value that is the OLT MAC address." + REFERENCE "[802.3ah], 30.3.5.1.5." + ::= { dot3MpcpControlEntry 6 } + +dot3MpcpRegistrationState OBJECT-TYPE + SYNTAX INTEGER { + unregistered(1), + registering(2), + registered(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that identifies the registration state + of the Multi-Point MAC Control sublayer as defined in + [802.3ah], clause 64. When this object has the + enumeration unregistered(1), the interface is + unregistered and may be used for registering a link + partner. When this object has the enumeration + registering(2), the interface is in the process of + registering a link-partner. When this object has the + enumeration registered(3), the interface has an + established link-partner. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.6." + ::= { dot3MpcpControlEntry 7 } + +dot3MpcpTransmitElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "An object that reports the interval from the last + MPCP frame transmission in increments of Time Quanta + (TQ)-16ns. The value returned shall be (interval from + last MPCP frame transmission in ns)/16. If this value + exceeds (2^32-1), the value (2^32-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.19." + ::= { dot3MpcpControlEntry 8 } + +dot3MpcpReceiveElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the interval from last MPCP frame + reception in increments of Time Quanta (TQ)-16ns. The + value returned shall be (interval from last MPCP frame + reception in ns)/16. If this value exceeds (2^32-1), the + value (2^32-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.20." + ::= { dot3MpcpControlEntry 9 } + +dot3MpcpRoundTripTime OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffff'h) + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the MPCP round trip time in + increments of Time Quanta (TQ)-16ns. The value returned + shall be (round trip time in ns)/16. If this value + exceeds (2^16-1), the value (2^16-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.21." + ::= { dot3MpcpControlEntry 10 } + +dot3MpcpMaximumPendingGrants OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the maximum number of grants + that an ONU can store for handling. The maximum number + + + + of grants that an ONU can store for handling has a + range of 0 to 255. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero." + REFERENCE "[802.3ah], 30.3.5.1.24." + ::= { dot3MpcpControlEntry 11 } + +dot3MpcpStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3MpcpStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the list of statistics counters of + an interface implementing the [802.3ah], clause 64 MPCP. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." +::= { dot3EponMpcpObjects 2 } + +dot3MpcpStatEntry OBJECT-TYPE + SYNTAX Dot3MpcpStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table of statistics counters of the + [802.3ah], clause 64, MPCP interface. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual link is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3MpcpStatTable 1 } + +Dot3MpcpStatEntry ::= + + + + SEQUENCE { + dot3MpcpMACCtrlFramesTransmitted Counter64, + dot3MpcpMACCtrlFramesReceived Counter64, + dot3MpcpDiscoveryWindowsSent Counter32, + dot3MpcpDiscoveryTimeout Counter32, + dot3MpcpTxRegRequest Counter64, + dot3MpcpRxRegRequest Counter64, + dot3MpcpTxRegAck Counter64, + dot3MpcpRxRegAck Counter64, + dot3MpcpTxReport Counter64, + dot3MpcpRxReport Counter64, + dot3MpcpTxGate Counter64, + dot3MpcpRxGate Counter64, + dot3MpcpTxRegister Counter64, + dot3MpcpRxRegister Counter64 + } + +dot3MpcpMACCtrlFramesTransmitted OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of MPCP frames passed to the MAC sublayer for + transmission. This counter is incremented when a + MA_CONTROL.request service primitive is generated within + the MAC control sublayer with an opcode indicating an + MPCP frame. + This object is applicable for an OLT and an ONU. At the + OLT it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.7." + ::= { dot3MpcpStatEntry 1 } + +dot3MpcpMACCtrlFramesReceived OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of MPCP frames passed by the MAC sublayer to the + MAC Control sublayer. This counter is incremented when a + ReceiveFrame function call returns a valid frame with + 1) a lengthOrType field value equal to the reserved + + + + Type for 802.3_MAC_Control as specified in clause 31.4.1.3, + and + 2) an opcode indicating an MPCP frame. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.8." + ::= { dot3MpcpStatEntry 2} + +dot3MpcpDiscoveryWindowsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of discovery windows generated. The counter is + incremented by one for each generated discovery window. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.22." + ::= { dot3MpcpStatEntry 3} + +dot3MpcpDiscoveryTimeout OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a discovery timeout + occurs. Increment the counter by one for each discovery + processing state-machine reset resulting from timeout + waiting for message arrival. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.23." + + + + ::= { dot3MpcpStatEntry 4} + +dot3MpcpTxRegRequest OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_REQ MPCP + frame transmission occurs. Increment the counter by one + for each REGISTER_REQ MPCP frame transmitted as defined + in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.12." + ::= { dot3MpcpStatEntry 5} + +dot3MpcpRxRegRequest OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_REQ MPCP + frame reception occurs. + Increment the counter by one for each REGISTER_REQ MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.17." + ::= { dot3MpcpStatEntry 6} + +dot3MpcpTxRegAck OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_ACK MPCP + frame transmission occurs. Increment the counter by one + for each REGISTER_ACK MPCP frame transmitted as defined + in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.10." + ::= { dot3MpcpStatEntry 7} + +dot3MpcpRxRegAck OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_ACK MPCP + frame reception occurs. + Increment the counter by one for each REGISTER_ACK MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.15." + ::= { dot3MpcpStatEntry 8} + +dot3MpcpTxReport OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REPORT MPCP frame + transmission occurs. Increment the counter by one for + each REPORT MPCP frame transmitted as defined in + [802.3ah], clause 64. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.13." + ::= { dot3MpcpStatEntry 9} + +dot3MpcpRxReport OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REPORT MPCP frame + reception occurs. + Increment the counter by one for each REPORT MPCP frame + received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.18." + ::= { dot3MpcpStatEntry 10} + +dot3MpcpTxGate OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a GATE MPCP frame + transmission occurs. + Increment the counter by one for each GATE MPCP frame + transmitted as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + + + + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.9." + ::= { dot3MpcpStatEntry 11} + +dot3MpcpRxGate OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a GATE MPCP frame + reception occurs. + Increment the counter by one for each GATE MPCP frame + received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.14." + ::= { dot3MpcpStatEntry 12} + +dot3MpcpTxRegister OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER MPCP frame + transmission occurs. + Increment the counter by one for each REGISTER MPCP + frame transmitted as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.11." + ::= { dot3MpcpStatEntry 13} + +dot3MpcpRxRegister OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER MPCP frame + reception occurs. + Increment the counter by one for each REGISTER MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.16." + ::= { dot3MpcpStatEntry 14} + +-- Optical Multi Point Emulation (OMPEmulation) +-- managed object definitions + +dot3OmpEmulationObjects OBJECT IDENTIFIER ::={dot3EponObjects 2} + +dot3OmpEmulationTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OmpEmulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of dot3 OmpEmulation MIB objects. The table + contain objects for the management of the OMPEmulation + sublayer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3OmpEmulationObjects 1 } + +dot3OmpEmulationEntry OBJECT-TYPE + SYNTAX Dot3OmpEmulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry in the dot3 OmpEmulation table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3OmpEmulationTable 1 } + + Dot3OmpEmulationEntry ::= + SEQUENCE { + dot3OmpEmulationType INTEGER + } + +dot3OmpEmulationType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + olt(2), + onu(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the mode of operation + of the Reconciliation Sublayer for Point-to-Point + Emulation (see [802.3ah], clause 65.1). unknown(1) value + is assigned in initialization; true state or type is not + yet known. olt(2) value is assigned when the sublayer is + operating in OLT mode. onu(3) value is assigned when the + sublayer is operating in ONU mode. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.7.1.2." + ::= { dot3OmpEmulationEntry 1} + +dot3OmpEmulationStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OmpEmulationStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the list of statistics counters of + + + + [802.3ah], clause 65, OMPEmulation sublayer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3OmpEmulationObjects 2} + +dot3OmpEmulationStatEntry OBJECT-TYPE + SYNTAX Dot3OmpEmulationStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table of statistics counters of + [802.3ah], clause 65, OMPEmulation sublayer. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3OmpEmulationStatTable 1 } + +Dot3OmpEmulationStatEntry::= + SEQUENCE { + dot3OmpEmulationSLDErrors Counter64, + dot3OmpEmulationCRC8Errors Counter64, + dot3OmpEmulationBadLLID Counter64, + dot3OmpEmulationGoodLLID Counter64, + dot3OmpEmulationOnuPonCastLLID Counter64, + dot3OmpEmulationOltPonCastLLID Counter64, + dot3OmpEmulationBroadcastBitNotOnuLlid Counter64, + dot3OmpEmulationOnuLLIDNotBroadcast Counter64, + dot3OmpEmulationBroadcastBitPlusOnuLlid Counter64, + dot3OmpEmulationNotBroadcastBitNotOnuLlid Counter64 + } + +dot3OmpEmulationSLDErrors OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that do not contain a valid + SLD field as defined in [802.3ah], clause 65.1.3.3.1. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.3." + ::= { dot3OmpEmulationStatEntry 1} + +dot3OmpEmulationCRC8Errors OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, but do + not pass the CRC-8 check as defined in [802.3ah], clause + 65.1.3.3.3. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.4." + ::= { dot3OmpEmulationStatEntry 2} + +dot3OmpEmulationBadLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, and + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, but are discarded due to the LLID check as + defined in [802.3ah], clause 65.1.3.3.2. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.8." + ::= { dot3OmpEmulationStatEntry 3} + +dot3OmpEmulationGoodLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, and + pass the CRC-8 check as defined in [802.3ah], clause + 65.1.3.3.3. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.5." + ::= { dot3OmpEmulationStatEntry 4} + +dot3OmpEmulationOnuPonCastLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, and meet the rules of acceptance for an + ONU defined in [802.3ah], clause 65.1.3.3.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + + + + module." + REFERENCE "[802.3ah], 30.3.7.1.6." + ::= { dot3OmpEmulationStatEntry 5} + +dot3OmpEmulationOltPonCastLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, and meet the rules of acceptance for an + OLT defined in [802.3ah], 65.1.3.3.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.7." + ::= { dot3OmpEmulationStatEntry 6} + +dot3OmpEmulationBroadcastBitNotOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the broadcast + bit in the LLID and not the ONU's LLID (frame accepted) + as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 7} + + + + +dot3OmpEmulationOnuLLIDNotBroadcast OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the ONU's LLID + as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 8} + +dot3OmpEmulationBroadcastBitPlusOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the broadcast + bit in the LLID and match the ONU's LLID (frame + reflected) as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 9} + +dot3OmpEmulationNotBroadcastBitNotOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and do not contain + the ONU's LLID as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 10} + +-- FEC managed object definitions (30.5.1) + +dot3EponFecObjects OBJECT IDENTIFIER ::={dot3EponObjects 3} + +dot3EponFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3EponFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of dot3 EPON FEC management objects. + The entries in the table are control and status objects + and statistic counters for the FEC layer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3EponFecObjects 1 } + +dot3EponFecEntry OBJECT-TYPE + SYNTAX Dot3EponFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3 EPON FEC table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + + + + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3EponFecTable 1 } + +Dot3EponFecEntry ::= + SEQUENCE { + dot3EponFecPCSCodingViolation Counter64, + dot3EponFecAbility INTEGER, + dot3EponFecMode INTEGER, + dot3EponFecCorrectedBlocks Counter64, + dot3EponFecUncorrectableBlocks Counter64, + dot3EponFecBufferHeadCodingViolation Counter64 + } + +dot3EponFecPCSCodingViolation OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a 100 Mbps operation, it is a count of the number of + times an invalid code-group is received, other than the + /H/ code-group. For a 1000 Mbps operation, it is a count + of the number of times an invalid codegroup is received, + other than the /V/ code-group. /H/ denotes a special + 4b5b codeword of [802.3] 100 Mbps PCS layer (clause 24), + and /V/ denotes a special 8b10b codeword of the [802.3] + 1000 Mbps PCS layer (clause 36). + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.12." + ::= { dot3EponFecEntry 1} + +dot3EponFecAbility OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + + + + supported(2), + unsupported(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the support of operation of the + optional FEC sublayer of the 1000BASE-PX PHY specified + in [802.3ah], clause 65.2. + unknown(1) value is assigned in the initialization, for non + FEC support state or type not yet known. unsupported(3) + value is assigned when the sublayer is not supported. + supported(2) value is assigned when the sublayer is + supported. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU. + The FEC counters will have a zero value when the + interface is not supporting FEC. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + ability. + dot3EponFecCorrectedBlocks - has a zero value when + dot3EponFecAbility is unknown(1) and unsupported(3). + dot3EponFecUncorrectableBlocks - has a zero value when + dot3EponFecAbility is unknown(1) and unsupported(3). + dot3EponFecBufferHeadCodingViolation - has a zero value + when dot3EponFecAbility is unknown(1) and + unsupported(3)." + REFERENCE "[802.3ah], 30.5.1.1.13." + ::= { dot3EponFecEntry 2} + +dot3EponFecMode OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + disabled(2), + enabled(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the mode of operation of the + optional FEC sublayer of the 1000BASE-PX PHY, specified + in [802.3ah], clause 65.2, and reflects its state. + A GET operation returns the current mode of operation + of the PHY. A SET operation changes the mode of + operation of the PHY to the indicated value. + unknown(1) value is assigned in the initialization for non + FEC support state or type not yet known. + + + + disabled(2) value is assigned when the FEC sublayer is + operating in disabled mode. + enabled(3) value is assigned when the FEC sublayer is + operating in FEC mode. + The write operation is not restricted in this document + and can be done at any time. Changing dot3EponFecMode + state can lead to disabling the Forward Error Correction + on the respective interface, which can lead to a + degradation of the optical link, and therefore may lead + to an interruption of service for the users connected to + the respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The counting of + the FEC counters will stop when the FEC of the interface + is disabled. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + mode. + dot3EponFecCorrectedBlocks - stops counting when + Rx_FEC is not enabled. (unknown(1) and disabled(2)). + dot3EponFecUncorrectableBlocks - stops counting when + Rx_FEC is not enabled (unknown(1) and disabled(2)). + dot3EponFecBufferHeadCodingViolation - stops counting + when Rx_FEC is not enabled (unknown(1) and + disabled(2)). + The object: + dot3EponFecAbility - indicates the FEC ability and + is not affected by the dot3EponFecMode object." + REFERENCE "[802.3ah], 30.5.1.1.14." + DEFVAL { unknown } + ::= { dot3EponFecEntry 3} + +dot3EponFecCorrectedBlocks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a + count of corrected FEC blocks. This counter will not + increment for other PHY Types. Increment the counter by + one for each received block that is corrected by the FEC + function in the PHY. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + + + + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.15." + ::= { dot3EponFecEntry 4} + +dot3EponFecUncorrectableBlocks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a + count of uncorrectable FEC blocks. This counter will not + increment for other PHY Types. Increment the counter by + one for each FEC block that is determined to be + uncorrectable by the FEC function in the PHY. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.16." + ::= { dot3EponFecEntry 5} + +dot3EponFecBufferHeadCodingViolation OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a 1000 Mbps operation, it is a count of the number of + invalid code-group received directly from the link. The + value has a meaning only in 1000 Mbps mode and it is + zero otherwise. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3EponFecEntry 6} + +-- ExtendedPackage managed object definitions + +dot3ExtPkgObjects OBJECT IDENTIFIER ::={dot3EponObjects 4} + + + + +dot3ExtPkgControlObjects OBJECT IDENTIFIER ::= { dot3ExtPkgObjects 1} + +dot3ExtPkgControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Extended package Control management + objects. Entries in the table are control and status + indication objects of an EPON interface, which are + gathered in an extended package as an addition to the + objects based on the [802.3ah], clause 30, attributes. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3ExtPkgControlObjects 1 } + +dot3ExtPkgControlEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package Control table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3ExtPkgControlTable 1 } + +Dot3ExtPkgControlEntry ::= + SEQUENCE { + dot3ExtPkgObjectReset INTEGER, + dot3ExtPkgObjectPowerDown TruthValue, + dot3ExtPkgObjectNumberOfLLIDs Unsigned32, + + + + dot3ExtPkgObjectFecEnabled INTEGER, + dot3ExtPkgObjectReportMaximumNumQueues Unsigned32, + dot3ExtPkgObjectRegisterAction INTEGER + } + +dot3ExtPkgObjectReset OBJECT-TYPE + SYNTAX INTEGER { + running(1), + reset(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to reset the EPON interface. The + interface may be unavailable while the reset occurs and + data may be lost. + Setting this object to running(1) will cause the + interface to enter into running mode. Setting this + object to reset(2) will cause the interface to go into + reset mode. When getting running(1), the interface is in + running mode. When getting reset(2), the interface is in + reset mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectReset state can lead to a reset of the + respective interface, leading to an interruption of + service for the users connected to the respective EPON + interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + A reset for a specific virtual interface resets only + this virtual interface and not the physical interface. + Thus, a virtual link that is malfunctioning can be + reset without affecting the operation of other virtual + interfaces. + The reset can cause Discontinuities in the values of the + counters of the interface, similar to re-initialization + of the management system. Discontinuity should be + indicated by the ifCounterDiscontinuityTime object of + the Interface MIB module." + DEFVAL { running } + ::= { dot3ExtPkgControlEntry 1 } + +dot3ExtPkgObjectPowerDown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object is used to power down the EPON interface. + The interface may be unavailable while the power down + occurs and data may be lost. + Setting this object to true(1) will cause the interface + to enter into power down mode. Setting this object to + false(2) will cause the interface to go out of power + down mode. When getting true(1), the interface is in + power down mode. When getting false(2), the interface is + not in power down mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectPowerDown state can lead to a power down + of the respective interface, leading to an interruption + of service of the users connected to the respective EPON + interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + A power down/up of a specific virtual interface affects + only the virtual interface and not the physical + interface. Hence a virtual link, which needs a certain + handling, can be powered down and then powered up without + disrupting the operation of other virtual interfaces. + The object is relevant when the admin state of the + interface is active as set by the dot3MpcpAdminState." + DEFVAL { false } + ::= { dot3ExtPkgControlEntry 2 } + +dot3ExtPkgObjectNumberOfLLIDs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read only object that indicates the number of + registered LLIDs. The initialization value is 0. + This object is applicable for an OLT with the same + value for all virtual interfaces and for an ONU. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). At the ONU the + number of LLIDs for an interface is one." + ::= { dot3ExtPkgControlEntry 3 } + +dot3ExtPkgObjectFecEnabled OBJECT-TYPE + SYNTAX INTEGER { + noFecEnabled(1), + + + + fecTxEnabled(2), + fecRxEnabled(3), + fecTxRxEnabled(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object defining the FEC mode of operation of the + interface, and indicating its state. The modes defined in + this object are extensions to the FEC modes defined in + the dot3EponFecMode object. + When noFECEnabled(1), the interface does not enable FEC + mode. + When fecTxEnabled(2), the interface enables the FEC + transmit mode. + When fecRxEnabled(3), the interface enables the FEC + receive mode. + When fecTxRxEnabled(4), the interface enables the FEC + transmit and receive mode. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The FEC counters are referring to the receive path. The + FEC counters will stop when the FEC receive mode of the + interface is disabled, as defined by fecRxEnabled(3) + and fecTxRxEnabled(4) values. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + mode. + dot3EponFecCorrectedBlocks - stops counting when + Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + dot3EponFecUncorrectableBlocks - stops counting when + Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + dot3EponFecBufferHeadCodingViolation - stops counting + when Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + The objects: + dot3EponFecAbility - indicates the FEC ability and is + not affected by the FEC mode. + dot3EponFecMode - indicates the FEC mode for combined RX + and TX. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectFecEnabled state can lead to disabling + the Forward Error Correction on the respective interface, + which can lead to a degradation of the optical link, and + therefore may lead to an interruption of service for the + + + + users connected to the respective EPON interface." + DEFVAL { noFecEnabled } + ::= { dot3ExtPkgControlEntry 4 } + +dot3ExtPkgObjectReportMaximumNumQueues OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object, that defines the maximal number of queues in + the REPORT message as defined in [802.3ah], clause 64. For + further information please see the description of the + queue table. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { 0 } + ::= { dot3ExtPkgControlEntry 5 } + +dot3ExtPkgObjectRegisterAction OBJECT-TYPE + SYNTAX INTEGER { + none(1), + register(2), + deregister(3), + reregister(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object configuring the registration state of an + interface, and indicating its registration state. + Write operation changes the registration state to its new + value. + Read operation returns the value of the state. + The registration state is reflected in this object and in + the dot3MpcpRegistrationState object. + none(1) indicates an unknown state, + register(2) indicates a registered LLID, + deregister(3) indicates a deregistered LLID, + reregister(4) indicates an LLID that is reregistering. + The following list describes the operation of the + interface, as specified in the [802.3ah], when a write + operation is setting a value. + none(1) - not doing any action. + register(2) - registering an LLID that has been requested + for registration (The LLID is in registering mode. + dot3MpcpRegistrationState - registering(2) ). + deregister(3) - deregisters an LLID that is registered + (dot3MpcpRegistrationState - registered(3) ). + + + + reregister(4) - reregister an LLID that is registered + (dot3MpcpRegistrationState - registered(3) ). + The behavior of an ONU and OLT interfaces, at each one + of the detailed operation at each state, is described in + the registration state machine of figure 64-22, + [802.3ah]. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectRegisterAction state can lead to a change + in the registration state of the respective interface + leading to a deregistration and an interruption of + service of the users connected to the respective EPON + interface." + DEFVAL { none } + ::= { dot3ExtPkgControlEntry 6 } + + dot3ExtPkgQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgQueueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the extended package objects for queue + management. The [802.3ah] MPCP defines a report message + of the occupancy of the transmit queues for the feedback + BW request from the ONUs. These queues serve the uplink + transmission of the ONU and data is gathered there until + the ONU is granted for transmission. + The management table of the queues is added here mainly + to control the reporting and to gather some statistics + of their operation. This table is not duplicating + existing management objects of bridging queues, + specified in [802.1d], since the existence of a + dedicated transmit queuing mechanism is implied in the + [802.3ah], and the ONU may be a device that is not a + bridge with embedded bridging queues. + The format of the REPORT message, as specified + in [802.3], is presented below: + +-----------------------------------+ + | Destination Address | + +-----------------------------------+ + | Source Address | + +-----------------------------------+ + | Length/Type | + +-----------------------------------+ + | OpCode | + +-----------------------------------+ + + + + | TimeStamp | + +-----------------------------------+ + | Number of queue Sets | + +-----------------------------------+ /|\ + | Report bitmap | | + +-----------------------------------+ | + | Queue 0 report | | + +-----------------------------------+ | repeated for + | Queue 1 report | | every + +-----------------------------------+ | queue_set + | Queue 2 report | | + +-----------------------------------+ | + | Queue 3 report | | + +-----------------------------------+ | + | Queue 4 report | | + +-----------------------------------+ | + | Queue 5 report | | + +-----------------------------------+ | + | Queue 6 report | | + +-----------------------------------+ | + | Queue 7 report | | + +-----------------------------------+ \|/ + | Pad/reserved | + +-----------------------------------+ + | FCS | + +-----------------------------------+ + + The 'Queue report' field reports the occupancy of each + uplink transmission queue. + The number of queue sets defines the number of the + reported sets, as would be explained in the description + of the dot3ExtPkgQueueSetsTable table. For each set the + report bitmap defines which queue is present in the + report, meaning that although the MPCP REPORT message + can report up to 8 queues in a REPORT message, the + actual number is flexible. The Queue table has a + variable size that is limited by the + dot3ExtPkgObjectReportMaximumNumQueues object, as an + ONU can have fewer queues to report. + The entries in the table are control and status + indication objects for managing the queues of an EPON + interface that are gathered in an extended package as + an addition to the objects that are based on the + [802.3ah] attributes. + Each object has a row for every virtual link and for + every queue in the report. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + + + + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + The number of queues is between 0 and 7 and limited by + dot3ExtPkgObjectReportMaximumNumQueues." + ::= { dot3ExtPkgControlObjects 2 } + + dot3ExtPkgQueueEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgQueueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package Queue table. At the + OLT, the rows exist for each ifIndex and dot3QueueIndex. + At the ONU, rows exist for the single ifIndex for each + dot3QueueIndex. + Rows in the table are created when the ifIndex of the + link is created. A set of rows per queue are added for + each ifIndex, denoted by the dot3QueueIndex. + A set of rows per queue in the table, for an ONU + interface, are created at the system initialization. + A set of rows per queue in the table, corresponding to + the OLT ifIndex and a set of rows per queue + corresponding to the broadcast virtual link, are + created at the system initialization. + A set of rows per queue in the table, corresponding to + the ifIndex of a virtual link, are created when the + virtual link is established (ONU registers), and deleted + when the virtual link is deleted (ONU deregisters)." + INDEX { ifIndex, dot3QueueIndex } + ::= { dot3ExtPkgQueueTable 1 } + + Dot3ExtPkgQueueEntry ::= + SEQUENCE { + dot3QueueIndex Unsigned32, + dot3ExtPkgObjectReportNumThreshold Unsigned32, + dot3ExtPkgObjectReportMaximumNumThreshold Unsigned32, + dot3ExtPkgStatTxFramesQueue Counter64, + dot3ExtPkgStatRxFramesQueue Counter64, + dot3ExtPkgStatDroppedFramesQueue Counter64 + } + + dot3QueueIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An object that identifies an index for the queue table + reflecting the queue index of the queues that are + reported in the MPCP REPORT message as defined in + [802.3ah], clause 64. + The number of queues is between 0 and 7, and limited by + dot3ExtPkgObjectReportMaximumNumQueues." + ::= { dot3ExtPkgQueueEntry 1 } + + dot3ExtPkgObjectReportNumThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the number of thresholds for each + queue in the REPORT message as defined in [802.3ah], + clause 64. + Each queue_set reporting will provide information on the + queue occupancy of frames below the matching Threshold. + Read operation reflects the number of thresholds. + Write operation sets the number of thresholds for each + queue. + The write operation is not restricted in this document + and can be done at any time. Value cannot exceed the + maximal value defined by the + dot3ExtPkgObjectReportMaximumNumThreshold object. + Changing dot3ExtPkgObjectReportNumThreshold can lead to + a change in the reporting of the ONU interface and + therefore to a change in the bandwidth allocation of the + respective interface. This change may lead a degradation + or an interruption of service of the users connected to + the respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueEntry 2 } + + dot3ExtPkgObjectReportMaximumNumThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object, that defines the maximal number of thresholds + for each queue in the REPORT message as defined in + [802.3ah], clause 64. Each queue_set reporting will + provide information on the queue occupancy of frames + below the matching Threshold. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueEntry 3 } + + dot3ExtPkgStatTxFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame transmission + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame transmitted, + which is an output of the 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + At the OLT the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 4} + + dot3ExtPkgStatRxFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame reception + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame received, + which is an input to the corresponding 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + Discontinuities of this counter can occur at + + + + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 5} + + dot3ExtPkgStatDroppedFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame drop + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame dropped + from the corresponding 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 6} + + dot3ExtPkgQueueSetsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgQueueSetsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Extended package objects used for the + management of the queue_sets. Entries are control and + status indication objects of an EPON interface, which + are gathered in an extended package as an addition to + the objects based on the [802.3ah] attributes. The + objects in this table are specific for the queue_sets, + which are reported in the MPCP REPORT message as defined + in [802.3ah], clause 64. + The [802.3ah] MPCP defines a report message of the + occupancy of the transmit queues for the feedback BW + request from the ONUs. These queues serve the uplink + transmission of the ONU and data is gathered there until + the ONU is granted for transmission. + + + + The management table of the queues_sets is added here + mainly to control the reporting and to gather some + statistics of their operation. This table is not + duplicating existing management objects of bridging + queues, specified in [802.1d], since the existence of a + dedicated transmit queuing mechanism is implied in the + [802.3ah], and the ONU may be a device that is not a + bridge with embedded bridging queues. + The format of the REPORT message, as specified + in [802.3], is presented below: + +-----------------------------------+ + | Destination Address | + +-----------------------------------+ + | Source Address | + +-----------------------------------+ + | Length/Type | + +-----------------------------------+ + | OpCode | + +-----------------------------------+ + | TimeStamp | + +-----------------------------------+ + | Number of queue Sets | + +-----------------------------------+ /|\ + | Report bitmap | | + +-----------------------------------+ | + | Queue 0 report | | + +-----------------------------------+ | repeated for + | Queue 1 report | | every + +-----------------------------------+ | queue_set + | Queue 2 report | | + +-----------------------------------+ | + | Queue 3 report | | + +-----------------------------------+ | + | Queue 4 report | | + +-----------------------------------+ | + | Queue 5 report | | + +-----------------------------------+ | + | Queue 6 report | | + +-----------------------------------+ | + | Queue 7 report | | + +-----------------------------------+ \|/ + | Pad/reserved | + +-----------------------------------+ + | FCS | + +-----------------------------------+ + + As can be seen from the message format, the ONU + interface reports of the status of up to 8 queues + + + + and it can report in a single MPCP REPORT message + of a few sets of queues. + The number of queue_sets defines the number of the + reported sets, and it can reach a value of up to 8. + It means that an ONU can hold a variable number of + sets between 0 and 7. + The dot3ExtPkgQueueSetsTable table has a variable + queue_set size that is limited by the + dot3ExtPkgObjectReportMaximumNumThreshold object as an + ONU can have fewer queue_sets to report. + The 'Queue report' field reports the occupancy of each + uplink transmission queue. The queue_sets can be used to + report the occupancy of the queues in a few levels as to + allow granting, in an accurate manner, of only part of + the data available in the queues. A Threshold is + defined for each queue_set to define the level of the + queue that is counted for the report of the occupancy. + The threshold is reflected in the queue_set table by the + dot3ExtPkgObjectReportThreshold object. + For each queue set, the report bitmap defines which + queues are present in the report, meaning that + although the MPCP REPORT message can report of up to 8 + queues in a REPORT message, the actual number is + flexible. + The dot3ExtPkgQueueSetsTable table has a variable queue + size that is limited by the + dot3ExtPkgObjectReportMaximumNumQueues object as an ONU + can have fewer queues to report. + Each object has a row for every virtual link, for each + queue in the report and for each queue_set in the queue. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + The number of queues is between 0 and 7 and limited by + dot3ExtPkgObjectReportMaximumNumQueues. + The number of queues_sets is between 0 and 7 and limited + by dot3ExtPkgObjectReportMaximumNumThreshold." + ::= { dot3ExtPkgControlObjects 3 } + + dot3ExtPkgQueueSetsEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgQueueSetsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package queue_set table. At + + + + the OLT, the rows exist for each ifIndex, + dot3QueueSetQueueIndex and dot3QueueSetIndex. At the + ONU, rows exist for the single ifIndex, for each + dot3QueueSetQueueIndex and dot3QueueSetIndex. + Rows in the table are created when the ifIndex of the + link is created. A set of rows per queue and per + queue_set are added for each ifIndex, denoted by + dot3QueueSetIndex and dot3QueueSetQueueIndex. + A set of rows per queue and per queue_set in the table, + for an ONU interface are created at system + initialization. + A set of rows per queue and per queue_Set in the table, + corresponding to the OLT ifIndex and a set of rows per + queue and per queue_set, corresponding to the broadcast + virtual link, are created at system initialization. + A set of rows per queue and per queue_set in the table, + corresponding to the ifIndex of a virtual link are + created when the virtual link is established (ONU + registers) and deleted when the virtual link is deleted + (ONU deregisters)." + INDEX { ifIndex, + dot3QueueSetQueueIndex,dot3QueueSetIndex} + ::= { dot3ExtPkgQueueSetsTable 1 } + + Dot3ExtPkgQueueSetsEntry ::= + SEQUENCE { + dot3QueueSetQueueIndex Unsigned32, + dot3QueueSetIndex Unsigned32, + dot3ExtPkgObjectReportThreshold Unsigned32 + } + + dot3QueueSetQueueIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An object that identifies the queue index for the + dot3ExtPkgQueueSetsTable table. The queues are reported + in the MPCP REPORT message as defined in [802.3ah], + clause 64. + The number of queues is between 0 and 7, and limited by + dot3ExtPkgObjectReportMaximumNumQueues. + Value corresponds to the dot3QueueIndex of the queue + table." + ::= { dot3ExtPkgQueueSetsEntry 1 } + + dot3QueueSetIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An object that identifies the queue_set index for the + dot3ExtPkgQueueSetsTable table. The queues are reported + in the MPCP REPORT message as defined in [802.3ah], + clause 64. + The number of queues_sets is between 0 and 7, and + limited by dot3ExtPkgObjectReportMaximumNumThreshold." + ::= { dot3ExtPkgQueueSetsEntry 2 } + + dot3ExtPkgObjectReportThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the value of a threshold report + for each queue_set in the REPORT message as defined in + [802.3ah], clause 64. The number of sets for each queue + is dot3ExtPkgObjectReportNumThreshold. + In the REPORT message, each queue_set reporting will + provide information on the occupancy of the queues for + frames below the matching Threshold. + The value returned shall be in Time quanta (TQ), which + is 16nsec or 2 octets increments. + Read operation provides the threshold value. Write + operation sets the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectReportThreshold can lead to a change in + the reporting of the ONU interface and therefore to a + change in the bandwidth allocation of the respective + interface. This change may lead a degradation or an + interruption of service for the users connected to the + respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface, + for each queue and for each queue_set. At the ONU, it has + a distinct value for each queue and for each queue_set." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueSetsEntry 3 } + + --Optical Interface status tables + + dot3ExtPkgOptIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgOptIfEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table defines the control and status indication + objects for the optical interface of the EPON interface. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + Although the optical interface is a physical interface, + there is a row in the table for each virtual interface. + The reason for having a separate row for each virtual + link is that the OLT has a separate link for each one of + the ONUs. For instance, ONUs could be in different + distances with different link budgets and different + receive powers, therefore having different power alarms. + It is quite similar to a case of different physical + interfaces." + ::= { dot3ExtPkgControlObjects 5} + + dot3ExtPkgOptIfEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgOptIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the optical interface table of the EPON + interface. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3ExtPkgOptIfTable 1 } + + Dot3ExtPkgOptIfEntry ::= + SEQUENCE { + dot3ExtPkgOptIfSuspectedFlag TruthValue, + + + + dot3ExtPkgOptIfInputPower Integer32, + dot3ExtPkgOptIfLowInputPower Integer32, + dot3ExtPkgOptIfHighInputPower Integer32, + dot3ExtPkgOptIfLowerInputPowerThreshold Integer32, + dot3ExtPkgOptIfUpperInputPowerThreshold Integer32, + dot3ExtPkgOptIfOutputPower Integer32, + dot3ExtPkgOptIfLowOutputPower Integer32, + dot3ExtPkgOptIfHighOutputPower Integer32, + dot3ExtPkgOptIfLowerOutputPowerThreshold Integer32, + dot3ExtPkgOptIfUpperOutputPowerThreshold Integer32, + dot3ExtPkgOptIfSignalDetect TruthValue, + dot3ExtPkgOptIfTransmitAlarm TruthValue, + dot3ExtPkgOptIfTransmitEnable TruthValue + } + + dot3ExtPkgOptIfSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a reliability indication. + If true, the data in this entry may be unreliable. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 1 } + + dot3ExtPkgOptIfInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 2 } + + dot3ExtPkgOptIfLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 3 } + + + + dot3ExtPkgOptIfHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 4 } + + dot3ExtPkgOptIfLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + dot3ExtPkgOptIfInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfLowerInputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 5 } + + dot3ExtPkgOptIfUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + dot3ExtPkgOptIfInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfUpperInputPowerThreshold can lead to a Threshold + + + + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 6 } + + dot3ExtPkgOptIfOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 7 } + + dot3ExtPkgOptIfLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 8 } + + dot3ExtPkgOptIfHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 9 } + + dot3ExtPkgOptIfLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The lower limit threshold on output power. If + dot3ExtPkgOptIfOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfLowerOutputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 10 } + + dot3ExtPkgOptIfUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + dot3ExtPkgOptIfOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfUpperOutputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service of the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 11 } + + dot3ExtPkgOptIfSignalDetect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When getting true(1), there is a valid optical signal at + the receive that is above the optical power level for + signal detection. When getting false(2) the optical + signal at the receive is below the optical power level + + + + for signal detection. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 12 } + + dot3ExtPkgOptIfTransmitAlarm OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When getting true(1) there is a non-valid optical signal + at the transmit of the interface, either a higher level + or lower level than expected. When getting false(2) the + optical signal at the transmit is valid and in the + required range. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 13 } + + dot3ExtPkgOptIfTransmitEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to true(1) will cause the optical + interface to start transmission (according to the + control protocol specified for the logical interface). + Setting this object to false(2) will cause the + interface to stop the optical transmission. + When getting true(1), the optical interface is in + transmitting mode (obeying to the logical control + protocol). + When getting false(2), the optical interface is not in + transmitting mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfTransmitEnable state can lead to a halt + in the optical transmission of the respective interface + leading to an interruption of service of the users + connected to the respective EPON interface. + The object is relevant when the admin state of the + interface is active as set by the dot3MpcpAdminState. + This object is applicable for an OLT and an ONU. At the + OLT it, has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 14 } + + + + -- Conformance Statements + + -- Conformance Groups + + dot3EponGroups OBJECT IDENTIFIER ::= { dot3EponConformance 1 } + + dot3MpcpGroupBase OBJECT-GROUP + OBJECTS { + dot3MpcpOperStatus, + dot3MpcpAdminState, + dot3MpcpMode, + dot3MpcpSyncTime, + dot3MpcpLinkID, + dot3MpcpRemoteMACAddress, + dot3MpcpRegistrationState, + dot3MpcpMaximumPendingGrants, + dot3MpcpTransmitElapsed, + dot3MpcpReceiveElapsed, + dot3MpcpRoundTripTime + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 Mpcp Control entity state + definition. Objects are per LLID." + ::= { dot3EponGroups 1 } + + dot3MpcpGroupStat OBJECT-GROUP + OBJECTS { + dot3MpcpMACCtrlFramesTransmitted, + dot3MpcpMACCtrlFramesReceived, + dot3MpcpDiscoveryWindowsSent, + dot3MpcpDiscoveryTimeout, + dot3MpcpTxRegRequest, + dot3MpcpRxRegRequest, + dot3MpcpTxRegAck, + dot3MpcpRxRegAck, + dot3MpcpTxReport, + dot3MpcpRxReport, + dot3MpcpTxGate, + dot3MpcpRxGate, + dot3MpcpTxRegister, + dot3MpcpRxRegister + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 Mpcp Statistics. + Objects are per LLID." + ::= { dot3EponGroups 2 } + + + + dot3OmpeGroupID OBJECT-GROUP + OBJECTS { + dot3OmpEmulationType + + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 OMP emulation entity + state definition. Objects are per LLID." + ::= { dot3EponGroups 3 } + + dot3OmpeGroupStat OBJECT-GROUP + OBJECTS { + dot3OmpEmulationSLDErrors, + dot3OmpEmulationCRC8Errors, + dot3OmpEmulationBadLLID, + dot3OmpEmulationGoodLLID, + dot3OmpEmulationOnuPonCastLLID, + dot3OmpEmulationOltPonCastLLID, + dot3OmpEmulationBroadcastBitNotOnuLlid, + dot3OmpEmulationOnuLLIDNotBroadcast, + dot3OmpEmulationBroadcastBitPlusOnuLlid, + dot3OmpEmulationNotBroadcastBitNotOnuLlid + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 OMP emulation + Statistics. Objects are per LLID." + ::= { dot3EponGroups 4 } + + dot3EponFecGroupAll OBJECT-GROUP + OBJECTS { + dot3EponFecPCSCodingViolation, + dot3EponFecAbility, + dot3EponFecMode, + dot3EponFecCorrectedBlocks, + dot3EponFecUncorrectableBlocks, + dot3EponFecBufferHeadCodingViolation + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 FEC group control and + statistics. Objects are per LLID." + ::= { dot3EponGroups 5 } + + dot3ExtPkgGroupControl OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReset, + + + + dot3ExtPkgObjectPowerDown, + dot3ExtPkgObjectNumberOfLLIDs, + dot3ExtPkgObjectFecEnabled, + dot3ExtPkgObjectReportMaximumNumQueues, + dot3ExtPkgObjectRegisterAction + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg control + definition. Objects are per LLID." + ::= { dot3EponGroups 6 } + + dot3ExtPkgGroupQueue OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReportNumThreshold, + dot3ExtPkgObjectReportMaximumNumThreshold, + dot3ExtPkgStatTxFramesQueue, + dot3ExtPkgStatRxFramesQueue, + dot3ExtPkgStatDroppedFramesQueue + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg Queue + control. Objects are per LLID, per queue." + ::= { dot3EponGroups 7 } + + dot3ExtPkgGroupQueueSets OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReportThreshold + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg queue_set + control. Objects are per LLID, per queue, per + queue_set." + ::= { dot3EponGroups 8 } + + dot3ExtPkgGroupOptIf OBJECT-GROUP + OBJECTS { + dot3ExtPkgOptIfSuspectedFlag, + dot3ExtPkgOptIfInputPower, + dot3ExtPkgOptIfLowInputPower, + dot3ExtPkgOptIfHighInputPower, + dot3ExtPkgOptIfLowerInputPowerThreshold, + dot3ExtPkgOptIfUpperInputPowerThreshold, + dot3ExtPkgOptIfOutputPower, + dot3ExtPkgOptIfLowOutputPower, + dot3ExtPkgOptIfHighOutputPower, + + + + dot3ExtPkgOptIfLowerOutputPowerThreshold, + dot3ExtPkgOptIfUpperOutputPowerThreshold, + dot3ExtPkgOptIfSignalDetect, + dot3ExtPkgOptIfTransmitAlarm, + dot3ExtPkgOptIfTransmitEnable + } + STATUS current + DESCRIPTION + "A collection of objects of control and status indication + of the optical interface. + Objects are per LLID." + ::= { dot3EponGroups 9 } + + -- Compliance + + dot3EponCompliances + OBJECT IDENTIFIER ::= { dot3EponConformance 2 } + + dot3MPCPCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for Multi-Point + Control Protocol interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot3MpcpGroupBase} + + GROUP dot3MpcpGroupStat + DESCRIPTION "This group is mandatory for all MPCP supporting + interfaces for statistics collection." + ::= { dot3EponCompliances 1} + + dot3OmpeCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for OMPEmulation + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot3OmpeGroupID} + + GROUP dot3OmpeGroupStat + DESCRIPTION "This group is mandatory for all OMPemulation + supporting interfaces for statistics collection." + + ::= { dot3EponCompliances 2} + + dot3EponFecCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for FEC EPON interfaces. + + + + This group is mandatory for all FEC supporting + interfaces for control and statistics collection." + + MODULE -- this module + MANDATORY-GROUPS { dot3EponFecGroupAll } + + ::= { dot3EponCompliances 3} + + dot3ExtPkgCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for EPON Interfaces + using the extended package." + MODULE -- this module + MANDATORY-GROUPS { dot3ExtPkgGroupControl } + + GROUP dot3ExtPkgGroupQueue + DESCRIPTION " This group is mandatory for all EPON interfaces + supporting REPORT queue management of the extended + package." + + GROUP dot3ExtPkgGroupQueueSets + DESCRIPTION " This group is mandatory for all EPON interfaces + supporting REPORT queue_sets management of the + extended package." + + GROUP dot3ExtPkgGroupOptIf + DESCRIPTION "This group is mandatory for all EPON interfaces + supporting optical interfaces management, + of the extended package." + + ::= { dot3EponCompliances 4} + + END diff --git a/mibs/ietf/DOT3-OAM-MIB b/mibs/ietf/DOT3-OAM-MIB new file mode 100644 index 0000000..2932fbc --- /dev/null +++ b/mibs/ietf/DOT3-OAM-MIB @@ -0,0 +1,2227 @@ +DOT3-OAM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Counter32, Unsigned32, + Integer32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + -- from [RFC2578] + TEXTUAL-CONVENTION, MacAddress, TimeStamp, TruthValue + + FROM SNMPv2-TC + -- from [RFC2579] + CounterBasedGauge64 + FROM HCNUM-TC + -- from [RFC2856] + ifIndex + FROM IF-MIB + -- from [RFC2863] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + + + -- from [RFC2580] + + dot3OamMIB MODULE-IDENTITY + LAST-UPDATED "200706140000Z" -- June 14,2007" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/hubmib-charter.html + Mailing lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-requests@ietf.org + In Body: subscribe your_email_address + Chair: Bert Wijnen + Alcatel-Lucent + Email: bwijnen at alcatel-lucent dot com + Editor: Matt Squire + Hatteras Networks + E-mail: msquire at hatterasnetworks dot com + " + DESCRIPTION + "The MIB module for managing the new Ethernet OAM features + introduced by the Ethernet in the First Mile taskforce (IEEE + 802.3ah). The functionality presented here is based on IEEE + 802.3ah [802.3ah], released in October, 2004. [802.3ah] was + prepared as an addendum to the standing version of IEEE 802.3 + [802.3-2002]. Since then, [802.3ah] has been + merged into the base IEEE 802.3 specification in [802.3-2005]. + + In particular, this MIB focuses on the new OAM functions + introduced in Clause 57 of [802.3ah]. The OAM functionality + of Clause 57 is controlled by new management attributes + introduced in Clause 30 of [802.3ah]. The OAM functions are + not specific to any particular Ethernet physical layer, and + can be generically applied to any Ethernet interface of + [802.3-2002]. + + An Ethernet OAM protocol data unit is a valid Ethernet frame + with a destination MAC address equal to the reserved MAC + address for Slow Protocols (See 43B of [802.3ah]), a + lengthOrType field equal to the reserved type for Slow + Protocols, and a Slow Protocols subtype equal to that of the + subtype reserved for Ethernet OAM. OAMPDU is used throughout + this document as an abbreviation for Ethernet OAM protocol + data unit. + + The following reference is used throughout this MIB module: + + + + + [802.3ah] refers to: + IEEE Std 802.3ah-2004: 'Draft amendment to - + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + October 2004. + + [802.3-2002] refers to: + IEEE Std 802.3-2002: + 'Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + March 2002. + + [802.3-2005] refers to: + IEEE Std 802.3-2005: + 'Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + December 2005. + + [802-2001] refers to: + 'IEEE Standard for LAN/MAN (Local Area + Network/Metropolitan Area Network): Overview and + Architecture', IEEE 802, June 2001. + + Copyright (c) The IETF Trust (2007). This version of + this MIB module is part of RFC 4878; See the RFC itself for + full legal notices. " + + REVISION "200706140000Z" -- June 14, 2007" + DESCRIPTION "Initial version, published as RFC 4878." + ::= { mib-2 158 } + + -- + -- Sections of the Ethernet OAM MIB + + + + -- + dot3OamNotifications OBJECT IDENTIFIER ::= { dot3OamMIB 0 } + dot3OamObjects OBJECT IDENTIFIER ::= { dot3OamMIB 1 } + dot3OamConformance OBJECT IDENTIFIER ::= { dot3OamMIB 2 } + + -- + -- Textual conventions for the OAM MIB + -- + EightOTwoOui ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "24-bit Organizationally Unique Identifier. Information on + OUIs can be found in IEEE 802-2001 [802-2001], Clause 9." + SYNTAX OCTET STRING(SIZE(3)) + + -- *************************************************************** + -- + -- Ethernet OAM Control group + -- + + dot3OamTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the primary controls and status for the + OAM capabilities of an Ethernet-like interface. There will be + one row in this table for each Ethernet-like interface in the + system that supports the OAM functions defined in [802.3ah]. + " + ::= { dot3OamObjects 1 } + + dot3OamEntry OBJECT-TYPE + SYNTAX Dot3OamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table that contains information on the + Ethernet OAM function for a single Ethernet like interface. + Entries in the table are created automatically for each + interface supporting Ethernet OAM. The status of the row + entry can be determined from dot3OamOperStatus. + + A dot3OamEntry is indexed in the dot3OamTable by the ifIndex + object of the Interfaces MIB. + " + INDEX { ifIndex } + ::= { dot3OamTable 1 } + + + + Dot3OamEntry ::= + SEQUENCE { + dot3OamAdminState INTEGER, + dot3OamOperStatus INTEGER, + dot3OamMode INTEGER, + dot3OamMaxOamPduSize Unsigned32, + dot3OamConfigRevision Unsigned32, + dot3OamFunctionsSupported BITS + } + + dot3OamAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to provision the default administrative + OAM mode for this interface. This object represents the + desired state of OAM for this interface. + + The dot3OamAdminState always starts in the disabled(2) state + until an explicit management action or configuration + information retained by the system causes a transition to the + enabled(1) state. When enabled(1), Ethernet OAM will attempt + to operate over this interface. + " + REFERENCE "[802.3ah], 30.3.6.1.2" + ::= { dot3OamEntry 1 } + + dot3OamOperStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + linkFault(2), + passiveWait(3), + activeSendLocal(4), + sendLocalAndRemote(5), + sendLocalAndRemoteOk(6), + oamPeeringLocallyRejected(7), + oamPeeringRemotelyRejected(8), + operational(9), + nonOperHalfDuplex(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At initialization and failure conditions, two OAM entities on + + + + the same full-duplex Ethernet link begin a discovery phase to + determine what OAM capabilities may be used on that link. The + progress of this initialization is controlled by the OA + sublayer. + + This value is always disabled(1) if OAM is disabled on this + interface via the dot3OamAdminState. + + If the link has detected a fault and is transmitting OAMPDUs + with a link fault indication, the value is linkFault(2). + Also, if the interface is not operational (ifOperStatus is + not up(1)), linkFault(2) is returned. Note that the object + ifOperStatus may not be up(1) as a result of link failure or + administrative action (ifAdminState being down(2) or + testing(3)). + + The passiveWait(3) state is returned only by OAM entities in + passive mode (dot3OamMode) and reflects the state in which the + OAM entity is waiting to see if the peer device is OA + capable. The activeSendLocal(4) value is used by active mode + devices (dot3OamMode) and reflects the OAM entity actively + trying to discover whether the peer has OAM capability but has + not yet made that determination. + + The state sendLocalAndRemote(5) reflects that the local OA + entity has discovered the peer but has not yet accepted or + rejected the configuration of the peer. The local device can, + for whatever reason, decide that the peer device is + unacceptable and decline OAM peering. If the local OAM entity + rejects the peer OAM entity, the state becomes + oamPeeringLocallyRejected(7). If the OAM peering is allowed + by the local device, the state moves to + sendLocalAndRemoteOk(6). Note that both the + sendLocalAndRemote(5) and oamPeeringLocallyRejected(7) states + fall within the state SEND_LOCAL_REMOTE of the Discovery state + diagram [802.3ah, Figure 57-5], with the difference being + whether the local OAM client has actively rejected the peering + or has just not indicated any decision yet. Whether a peering + decision has been made is indicated via the local flags field + in the OAMPDU (reflected in the aOAMLocalFlagsField of + 30.3.6.1.10). + + If the remote OAM entity rejects the peering, the state + becomes oamPeeringRemotelyRejected(8). Note that both the + sendLocalAndRemoteOk(6) and oamPeeringRemotelyRejected(8) + states fall within the state SEND_LOCAL_REMOTE_OK of the + Discovery state diagram [802.3ah, Figure 57-5], with the + difference being whether the remote OAM client has rejected + + + + the peering or has just not yet decided. This is indicated + via the remote flags field in the OAMPDU (reflected in the + aOAMRemoteFlagsField of 30.3.6.1.11). + + When the local OAM entity learns that both it and the remote + OAM entity have accepted the peering, the state moves to + operational(9) corresponding to the SEND_ANY state of the + Discovery state diagram [802.3ah, Figure 57-5]. + + Since Ethernet OAM functions are not designed to work + completely over half-duplex interfaces, the value + nonOperHalfDuplex(10) is returned whenever Ethernet OAM is + enabled (dot3OamAdminState is enabled(1)), but the interface + is in half-duplex operation. + " + REFERENCE "[802.3ah], 30.3.6.1.4, 30.3.6.1.10, 30.3.6.1.11" + ::= { dot3OamEntry 2 } + + dot3OamMode OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the mode of OAM operation for this + Ethernet-like interface. OAM on Ethernet interfaces may be in + 'active' mode or 'passive' mode. These two modes differ in + that active mode provides additional capabilities to initiate + monitoring activities with the remote OAM peer entity, while + passive mode generally waits for the peer to initiate OA + actions with it. As an example, an active OAM entity can put + the remote OAM entity in a loopback state, where a passive OA + entity cannot. + + The default value of dot3OamMode is dependent on the type of + system on which this Ethernet-like interface resides. The + default value should be 'active(2)' unless it is known that + this system should take on a subservient role to the other + device connected over this interface. + + Changing this value results in incrementing the configuration + revision field of locally generated OAMPDUs (30.3.6.1.12) and + potentially re-doing the OAM discovery process if the + dot3OamOperStatus was already operational(9). + " + REFERENCE "[802.3ah], 30.3.6.1.3" + + + + ::= { dot3OamEntry 3 } + + dot3OamMaxOamPduSize OBJECT-TYPE + SYNTAX Unsigned32 (64..1518) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest OAMPDU that the OAM entity supports. OA + entities exchange maximum OAMPDU sizes and negotiate to use + the smaller of the two maximum OAMPDU sizes between the peers. + This value is determined by the local implementation. + " + REFERENCE "[802.3ah], 30.3.6.1.8" + ::= { dot3OamEntry 4 } + + dot3OamConfigRevision OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The configuration revision of the OAM entity as reflected in + the latest OAMPDU sent by the OAM entity. The config revision + is used by OAM entities to indicate that configuration changes + have occurred, which might require the peer OAM entity to + re-evaluate whether OAM peering is allowed. + " + REFERENCE "[802.3ah], 30.3.6.1.12" + ::= { dot3OamEntry 5 } + + dot3OamFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + unidirectionalSupport (0), + loopbackSupport(1), + eventSupport(2), + variableSupport(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OAM functions supported on this Ethernet-like interface. + OAM consists of separate functional sets beyond the basic + discovery process that is always required. These functional + groups can be supported independently by any implementation. + These values are communicated to the peer via the local + configuration field of Information OAMPDUs. + + Setting 'unidirectionalSupport(0)' indicates that the OA + + + + entity supports the transmission of OAMPDUs on links that are + operating in unidirectional mode (traffic flowing in one + direction only). Setting 'loopbackSupport(1)' indicates that + the OAM entity can initiate and respond to loopback commands. + Setting 'eventSupport(2)' indicates that the OAM entity can + send and receive Event Notification OAMPDUs. Setting + 'variableSupport(3)' indicates that the OAM entity can send + and receive Variable Request and Response OAMPDUs. + " + REFERENCE "[802.3ah], 30.3.6.1.6" + ::= { dot3OamEntry 6 } + + -- *************************************************************** + -- + -- Ethernet OAM Peer group + -- + + dot3OamPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the OAM peer for a + particular Ethernet-like interface. OAM entities communicate + with a single OAM peer entity on Ethernet links on which OA + is enabled and operating properly. There is one entry in this + table for each entry in the dot3OamTable for which information + on the peer OAM entity is available. + " + ::= { dot3OamObjects 2 } + + dot3OamPeerEntry OBJECT-TYPE + SYNTAX Dot3OamPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table containing information on the peer OA + entity for a single Ethernet-like interface. + + Note that there is at most one OAM peer for each Ethernet-like + interface. Entries are automatically created when information + about the OAM peer entity becomes available, and automatically + deleted when the OAM peer entity is no longer in + communication. Peer information is not available when + dot3OamOperStatus is disabled(1), linkFault(2), + passiveWait(3), activeSendLocal(4), or nonOperHalfDuplex(10). + " + INDEX { ifIndex } + + + + ::= { dot3OamPeerTable 1 } + + Dot3OamPeerEntry ::= + SEQUENCE { + dot3OamPeerMacAddress MacAddress, + dot3OamPeerVendorOui EightOTwoOui, + dot3OamPeerVendorInfo Unsigned32, + dot3OamPeerMode INTEGER, + dot3OamPeerMaxOamPduSize Unsigned32, + dot3OamPeerConfigRevision Unsigned32, + dot3OamPeerFunctionsSupported BITS + } + + dot3OamPeerMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC address of the peer OAM entity. The MAC address is + derived from the most recently received OAMPDU. + " + REFERENCE "[802.3ah], 30.3.6.1.5." + ::= { dot3OamPeerEntry 1 } + + dot3OamPeerVendorOui OBJECT-TYPE + SYNTAX EightOTwoOui + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OUI of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. The + OUI can be used to identify the vendor of the remote OA + entity. This value is initialized to three octets of zero + before any Local Information TLV is received. + " + REFERENCE "[802.3ah], 30.3.6.1.16." + ::= { dot3OamPeerEntry 2 } + + dot3OamPeerVendorInfo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Vendor Info of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. + The semantics of the Vendor Information field is proprietary + and specific to the vendor (identified by the + dot3OamPeerVendorOui). This information could, for example, + + + + be used to identify a specific product or product family. + This value is initialized to zero before any Local + Information TLV is received. + " + REFERENCE "[802.3ah], 30.3.6.1.17." + ::= { dot3OamPeerEntry 3 } + + dot3OamPeerMode OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. The + mode of the peer can be determined from the Configuration + field in the Local Information TLV of the last Information + OAMPDU received from the peer. The value is unknown(3) + whenever no Local Information TLV has been received. The + values of active(2) and passive(1) are returned when a Local + Information TLV has been received indicating that the peer is + in active or passive mode, respectively. + " + REFERENCE "[802.3ah], 30.3.6.1.7." + ::= { dot3OamPeerEntry 4 } + + dot3OamPeerMaxOamPduSize OBJECT-TYPE + SYNTAX Unsigned32 (0 | 64..1518) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size of OAMPDU supported by the peer as reflected + in the latest Information OAMPDU received with a Local + Information TLV. Ethernet OAM on this interface must not use + OAMPDUs that exceed this size. The maximum OAMPDU size can be + determined from the PDU Configuration field of the Local + Information TLV of the last Information OAMPDU received from + the peer. A value of zero is returned if no Local Information + TLV has been received. Otherwise, the value of the OAM peer's + maximum OAMPDU size is returned in this value. + " + REFERENCE "[802.3ah], 30.3.6.1.9." + ::= { dot3OamPeerEntry 5 } + + + + + dot3OamPeerConfigRevision OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The configuration revision of the OAM peer as reflected in + the latest OAMPDU. This attribute is changed by the peer + whenever it has a local configuration change for Ethernet OA + on this interface. The configuration revision can be + determined from the Revision field of the Local Information + TLV of the most recently received Information OAMPDU with + a Local Information TLV. A value of zero is returned if + no Local Information TLV has been received. + " + REFERENCE "[802.3ah], 30.3.6.1.13." + ::= { dot3OamPeerEntry 6 } + + dot3OamPeerFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + unidirectionalSupport (0), + loopbackSupport(1), + eventSupport(2), + variableSupport(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OAM functions supported on this Ethernet-like interface. + OAM consists of separate functionality sets above the basic + discovery process. This value indicates the capabilities of + the peer OAM entity with respect to these functions. This + value is initialized so all bits are clear. + + If unidirectionalSupport(0) is set, then the peer OAM entity + supports sending OAM frames on Ethernet interfaces when the + receive path is known to be inoperable. If + loopbackSupport(1) is set, then the peer OAM entity can send + and receive OAM loopback commands. If eventSupport(2) is set, + then the peer OAM entity can send and receive event OAMPDUs to + signal various error conditions. If variableSupport(3) is + set, then the peer OAM entity can send and receive variable + requests to monitor the attribute value as described in Clause + 57 of [802.3ah]. + + The capabilities of the OAM peer can be determined from the + configuration field of the Local Information TLV of the most + recently received Information OAMPDU with a Local Information + TLV. All zeros are returned if no Local Information TLV has + + + + yet been received. + " + REFERENCE "[802.3ah], REFERENCE 30.3.6.1.7." + ::= { dot3OamPeerEntry 7 } + + -- *************************************************************** + -- + -- Ethernet OAM Loopback group + -- + + dot3OamLoopbackTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamLoopbackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains controls for the loopback state of the + local link as well as indicates the status of the loopback + function. There is one entry in this table for each entry in + dot3OamTable that supports loopback functionality (where + dot3OamFunctionsSupported includes the loopbackSupport bit + set). + + Loopback can be used to place the remote OAM entity in a state + where every received frame (except OAMPDUs) is echoed back + over the same interface on which they were received. In this + state, at the remote entity, 'normal' traffic is disabled as + only the looped back frames are transmitted on the interface. + Loopback is thus an intrusive operation that prohibits normal + data flow and should be used accordingly. + " + ::= { dot3OamObjects 3 } + + dot3OamLoopbackEntry OBJECT-TYPE + SYNTAX Dot3OamLoopbackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information on the loopback + status for a single Ethernet-like interface. Entries in the + table are automatically created whenever the local OAM entity + supports loopback capabilities. The loopback status on the + interface can be determined from the dot3OamLoopbackStatus + object. + " + INDEX { ifIndex } + ::= { dot3OamLoopbackTable 1 } + + Dot3OamLoopbackEntry ::= + + + + SEQUENCE { + dot3OamLoopbackStatus INTEGER, + dot3OamLoopbackIgnoreRx INTEGER + } + + dot3OamLoopbackStatus OBJECT-TYPE + SYNTAX INTEGER { + -- all values, except where noted, can be read + -- but cannot be written + noLoopback (1), + + -- initiatingLoopback can be read or written + initiatingLoopback (2), + remoteLoopback (3), + + -- terminatingLoopback can be read or written + terminatingLoopback (4), + localLoopback (5), + unknown (6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The loopback status of the OAM entity. This status is + determined by a combination of the local parser and + multiplexer states, the remote parser and multiplexer states, + as well as by the actions of the local OAM client. When + operating in normal mode with no loopback in progress, the + status reads noLoopback(1). + + The values initiatingLoopback(2) and terminatingLoopback(4) + can be read or written. The other values can only be read - + they can never be written. Writing initiatingLoopback causes + the local OAM entity to start the loopback process with its + peer. This value can only be written when the status is + noLoopback(1). Writing the value initiatingLoopback(2) in any + other state has no effect. When in remoteLoopback(3), writing + terminatingLoopback(4) causes the local OAM entity to initiate + the termination of the loopback state. Writing + terminatingLoopack(4) in any other state has no effect. + + If the OAM client initiates a loopback and has sent a + Loopback OAMPDU and is waiting for a response, where the local + parser and multiplexer states are DISCARD (see [802.3ah, + 57.2.11.1]), the status is 'initiatingLoopback'. In this + case, the local OAM entity has yet to receive any + acknowledgment that the remote OAM entity has received its + loopback command request. + + + + + If the local OAM client knows that the remote OAM entity is in + loopback mode (via the remote state information as described + in [802.3ah, 57.2.11.1, 30.3.6.1.15]), the status is + remoteLoopback(3). If the local OAM client is in the process + of terminating the remote loopback [802.3ah, 57.2.11.3, + 30.3.6.1.14] with its local multiplexer and parser states in + DISCARD, the status is terminatingLoopback(4). If the remote + OAM client has put the local OAM entity in loopback mode as + indicated by its local parser state, the status is + localLoopback(5). + + The unknown(6) status indicates that the parser and + multiplexer combination is unexpected. This status may be + returned if the OAM loopback is in a transition state but + should not persist. + + The values of this attribute correspond to the following + values of the local and remote parser and multiplexer states. + + value LclPrsr LclMux RmtPrsr RmtMux + noLoopback FWD FWD FWD FWD + initLoopback DISCARD DISCARD FWD FWD + rmtLoopback DISCARD FWD LPBK DISCARD + tmtngLoopback DISCARD DISCARD LPBK DISCARD + lclLoopback LPBK DISCARD DISCARD FWD + unknown *** any other combination *** + " + REFERENCE "[802.3ah], REFERENCE 57.2.11, 30.3.61.14, + 30.3.6.1.15" + ::= { dot3OamLoopbackEntry 1 } + + dot3OamLoopbackIgnoreRx OBJECT-TYPE + SYNTAX INTEGER { ignore(1), process(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Since OAM loopback is a disruptive operation (user traffic + does not pass), this attribute provides a mechanism to provide + controls over whether received OAM loopback commands are + processed or ignored. When the value is ignore(1), received + loopback commands are ignored. When the value is process(2), + OAM loopback commands are processed. The default value is to + ignore loopback commands (ignore(1)). + " + REFERENCE "[802.3ah], REFERENCE 57.2.11, 30.3.61.14, + 30.3.6.1.15" + ::= { dot3OamLoopbackEntry 2 } + + + + -- *************************************************************** + -- + -- Ethernet OAM Statistics group + -- + + dot3OamStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistics for the OAM function on a + particular Ethernet-like interface. There is an entry in the + table for every entry in the dot3OamTable. + + The counters in this table are defined as 32-bit entries to + match the counter size as defined in [802.3ah]. Given that + the OA protocol is a slow protocol, the counters increment at + a slow rate. + " + ::= { dot3OamObjects 4 } + + dot3OamStatsEntry OBJECT-TYPE + SYNTAX Dot3OamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table containing statistics information on + the Ethernet OAM function for a single Ethernet-like + interface. Entries are automatically created for every entry + in the dot3OamTable. Counters are maintained across + transitions in dot3OamOperStatus. + " + INDEX { ifIndex } + ::= { dot3OamStatsTable 1 } + + Dot3OamStatsEntry ::= + SEQUENCE { + dot3OamInformationTx Counter32, + dot3OamInformationRx Counter32, + dot3OamUniqueEventNotificationTx Counter32, + dot3OamUniqueEventNotificationRx Counter32, + dot3OamDuplicateEventNotificationTx Counter32, + dot3OamDuplicateEventNotificationRx Counter32, + dot3OamLoopbackControlTx Counter32, + dot3OamLoopbackControlRx Counter32, + dot3OamVariableRequestTx Counter32, + dot3OamVariableRequestRx Counter32, + dot3OamVariableResponseTx Counter32, + + + + dot3OamVariableResponseRx Counter32, + dot3OamOrgSpecificTx Counter32, + dot3OamOrgSpecificRx Counter32, + dot3OamUnsupportedCodesTx Counter32, + dot3OamUnsupportedCodesRx Counter32, + dot3OamFramesLostDueToOam Counter32 + } + + dot3OamInformationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Information OAMPDUs transmitted on + this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. " + REFERENCE "[802.3ah], 30.3.6.1.20." + ::= { dot3OamStatsEntry 1 } + + dot3OamInformationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Information OAMPDUs received on this + interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.21." + ::= { dot3OamStatsEntry 2 } + + dot3OamUniqueEventNotificationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of unique Event OAMPDUs transmitted on + this interface. Event Notifications may be sent in duplicate + to increase the probability of successfully being received, + + + + given the possibility that a frame may be lost in transit. + Duplicate Event Notification transmissions are counted by + dot3OamDuplicateEventNotificationTx. + + A unique Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + distinct from the previously transmitted Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.22." + ::= { dot3OamStatsEntry 3 } + + dot3OamUniqueEventNotificationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of unique Event OAMPDUs received on + this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. Duplicate Event Notification receptions are counted + by dot3OamDuplicateEventNotificationRx. + + A unique Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + distinct from the previously received Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.24." + ::= { dot3OamStatsEntry 4 } + + dot3OamDuplicateEventNotificationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of duplicate Event OAMPDUs transmitted + + + + on this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. + + A duplicate Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + identical to the previously transmitted Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.23." + ::= { dot3OamStatsEntry 5 } + + dot3OamDuplicateEventNotificationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of duplicate Event OAMPDUs received on + this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. + + A duplicate Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + identical to the previously received Event Notification OAMPDU + Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.25." + ::= { dot3OamStatsEntry 6 } + + dot3OamLoopbackControlTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Loopback Control OAMPDUs transmitted + + + + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.26." + ::= { dot3OamStatsEntry 7 } + + dot3OamLoopbackControlRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Loopback Control OAMPDUs received + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.27." + ::= { dot3OamStatsEntry 8 } + + dot3OamVariableRequestTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Request OAMPDUs transmitted + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.28." + ::= { dot3OamStatsEntry 9 } + + dot3OamVariableRequestRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Request OAMPDUs received on + + + + this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.29." + ::= { dot3OamStatsEntry 10 } + + dot3OamVariableResponseTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Response OAMPDUs + transmitted on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.30." + ::= { dot3OamStatsEntry 11 } + + dot3OamVariableResponseRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Response OAMPDUs received + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.31." + ::= { dot3OamStatsEntry 12 } + + dot3OamOrgSpecificTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Organization Specific OAMPDUs + + + + transmitted on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.32." + ::= { dot3OamStatsEntry 13 } + + dot3OamOrgSpecificRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Organization Specific OAMPDUs + received on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.33." + ::= { dot3OamStatsEntry 14 } + + dot3OamUnsupportedCodesTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of OAMPDUs transmitted on this + interface with an unsupported op-code. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.18." + ::= { dot3OamStatsEntry 15 } + + dot3OamUnsupportedCodesRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of OAMPDUs received on this interface + + + + with an unsupported op-code. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.19." + ::= { dot3OamStatsEntry 16 } + + dot3OamFramesLostDueToOam OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of frames that were dropped by the OA + multiplexer. Since the OAM multiplexer has multiple inputs + and a single output, there may be cases where frames are + dropped due to transmit resource contention. This counter is + incremented whenever a frame is dropped by the OAM layer. + Note that any Ethernet frame, not just OAMPDUs, may be dropped + by the OAM layer. This can occur when an OAMPDU takes + precedence over a 'normal' frame resulting in the 'normal' + frame being dropped. + + When this counter is incremented, no other counters in this + MIB are incremented. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.46." + ::= { dot3OamStatsEntry 17 } + + -- *************************************************************** + -- + -- Ethernet OAM Event Configuration group + -- + + dot3OamEventConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEventConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Ethernet OAM includes the ability to generate and receive + Event Notification OAMPDUs to indicate various link problems. + This table contains the mechanisms to enable Event + + + + Notifications and configure the thresholds to generate the + standard Ethernet OAM events. There is one entry in the table + for every entry in dot3OamTable that supports OAM events + (where dot3OamFunctionsSupported includes the eventSupport + bit set). The values in the table are maintained across + changes to dot3OamOperStatus. + + The standard threshold crossing events are: + - Errored Symbol Period Event. Generated when the number of + symbol errors exceeds a threshold within a given window + defined by a number of symbols (for example, 1,000 symbols + out of 1,000,000 had errors). + - Errored Frame Period Event. Generated when the number of + frame errors exceeds a threshold within a given window + defined by a number of frames (for example, 10 frames out + of 1000 had errors). + - Errored Frame Event. Generated when the number of frame + errors exceeds a threshold within a given window defined + by a period of time (for example, 10 frames in 1 second + had errors). + - Errored Frame Seconds Summary Event. Generated when the + number of errored frame seconds exceeds a threshold within + a given time period (for example, 10 errored frame seconds + within the last 100 seconds). An errored frame second is + defined as a 1 second interval which had >0 frame errors. + There are other events (dying gasp, critical events) that are + not threshold crossing events but which can be + enabled/disabled via this table. + " + ::= { dot3OamObjects 5 } + + dot3OamEventConfigEntry OBJECT-TYPE + SYNTAX Dot3OamEventConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries are automatically created and deleted from this + table, and exist whenever the OAM entity supports Ethernet OA + events (as indicated by the eventSupport bit in + dot3OamFunctionsSuppported). Values in the table are + maintained across changes to the value of dot3OamOperStatus. + + Event configuration controls when the local management entity + sends Event Notification OAMPDUs to its OAM peer, and when + certain event flags are set or cleared in OAMPDUs. + " + INDEX { ifIndex } + ::= { dot3OamEventConfigTable 1 } + + + + Dot3OamEventConfigEntry ::= + SEQUENCE { + dot3OamErrSymPeriodWindowHi Unsigned32, + dot3OamErrSymPeriodWindowLo Unsigned32, + dot3OamErrSymPeriodThresholdHi Unsigned32, + dot3OamErrSymPeriodThresholdLo Unsigned32, + dot3OamErrSymPeriodEvNotifEnable TruthValue, + dot3OamErrFramePeriodWindow Unsigned32, + dot3OamErrFramePeriodThreshold Unsigned32, + dot3OamErrFramePeriodEvNotifEnable TruthValue, + dot3OamErrFrameWindow Unsigned32, + dot3OamErrFrameThreshold Unsigned32, + dot3OamErrFrameEvNotifEnable TruthValue, + dot3OamErrFrameSecsSummaryWindow Integer32, + dot3OamErrFrameSecsSummaryThreshold Integer32, + dot3OamErrFrameSecsEvNotifEnable TruthValue, + dot3OamDyingGaspEnable TruthValue, + dot3OamCriticalEventEnable TruthValue + } + + dot3OamErrSymPeriodWindowHi OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodWindowHi and + dot3OamErrSymPeriodLo together form an unsigned 64-bit + integer representing the number of symbols over which this + threshold event is defined. This is defined as + dot3OamErrSymPeriodWindow = ((2^32)*dot3OamErrSymPeriodWindowHi) + + dot3OamErrSymPeriodWindowLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodWindow is the number + of symbols in one second for the underlying physical layer. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 1 } + + dot3OamErrSymPeriodWindowLo OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodWindowHi and + dot3OamErrSymPeriodWindowLo together form an unsigned 64-bit + integer representing the number of symbols over which this + threshold event is defined. This is defined as + + dot3OamErrSymPeriodWindow = ((2^32)*dot3OamErrSymPeriodWindowHi) + + dot3OamErrSymPeriodWindowLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodWindow is the number + of symbols in one second for the underlying physical layer. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 2 } + + dot3OamErrSymPeriodThresholdHi OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodThresholdHi and + dot3OamErrSymPeriodThresholdLo together form an unsigned + 64-bit integer representing the number of symbol errors that + must occur within a given window to cause this event. + + This is defined as + + dot3OamErrSymPeriodThreshold = + ((2^32) * dot3OamErrSymPeriodThresholdHi) + + dot3OamErrSymPeriodThresholdLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodThreshold is one + symbol errors. If the threshold value is zero, then an Event + + + + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 3 } + + dot3OamErrSymPeriodThresholdLo OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodThresholdHi and + dot3OamErrSymPeriodThresholdLo together form an unsigned + 64-bit integer representing the number of symbol errors that + must occur within a given window to cause this event. + + This is defined as + + dot3OamErrSymPeriodThreshold = + ((2^32) * dot3OamErrSymPeriodThresholdHi) + + dot3OamErrSymPeriodThresholdLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodThreshold is one + symbol error. If the threshold value is zero, then an Event + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 4 } + + dot3OamErrSymPeriodEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Symbol Period Event occurs. + + + + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + ::= { dot3OamEventConfigEntry 5 } + + dot3OamErrFramePeriodWindow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frames over which the threshold is defined. + The default value of the window is the number of minimum size + Ethernet frames that can be received over the physical layer + in one second. + + If dot3OamErrFramePeriodThreshold frame errors occur within a + window of dot3OamErrFramePeriodWindow frames, an Event + Notification OAMPDU should be generated with an Errored Frame + Period Event TLV indicating that the threshold has been + crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.38" + ::= { dot3OamEventConfigEntry 6 } + + dot3OamErrFramePeriodThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frame errors that must occur for this event to + be triggered. The default value is one frame error. If the + threshold value is zero, then an Event Notification OAMPDU is + sent periodically (at the end of every window). This can be + used as an asynchronous notification to the peer OAM entity of + the statistics related to this threshold crossing alarm. + + If dot3OamErrFramePeriodThreshold frame errors occur within a + window of dot3OamErrFramePeriodWindow frames, an Event + Notification OAMPDU should be generated with an Errored Frame + Period Event TLV indicating that the threshold has been + crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.38" + + + + ::= { dot3OamEventConfigEntry 7 } + + dot3OamErrFramePeriodEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Frame Period Event occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + ::= { dot3OamEventConfigEntry 8 } + + dot3OamErrFrameWindow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of a second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time (in 100ms increments) over which the + threshold is defined. The default value is 10 (1 second). + + If dot3OamErrFrameThreshold frame errors occur within a window + of dot3OamErrFrameWindow seconds (measured in tenths of + seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Event TLV indicating that the threshold + has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.36" + DEFVAL { 10 } + ::= { dot3OamEventConfigEntry 9 } + + dot3OamErrFrameThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frame errors that must occur for this event to + be triggered. The default value is one frame error. If the + threshold value is zero, then an Event Notification OAMPDU is + sent periodically (at the end of every window). This can be + used as an asynchronous notification to the peer OAM entity of + the statistics related to this threshold crossing alarm. + + + + + If dot3OamErrFrameThreshold frame errors occur within a window + of dot3OamErrFrameWindow (in tenths of seconds), an Event + Notification OAMPDU should be generated with an Errored Frame + Event TLV indicating the threshold has been crossed in this + window. + " + REFERENCE "[802.3ah], 30.3.6.1.36" + DEFVAL { 1 } + ::= { dot3OamEventConfigEntry 10 } + + dot3OamErrFrameEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Frame Event occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 11 } + + dot3OamErrFrameSecsSummaryWindow OBJECT-TYPE + SYNTAX Integer32 (100..9000) + UNITS "tenths of a second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time (in 100 ms intervals) over which the + threshold is defined. The default value is 100 (10 seconds). + + If dot3OamErrFrameSecsSummaryThreshold frame errors occur + within a window of dot3OamErrFrameSecsSummaryWindow (in tenths + of seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Seconds Summary Event TLV indicating + that the threshold has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.40" + DEFVAL { 100 } + ::= { dot3OamEventConfigEntry 12 } + + dot3OamErrFrameSecsSummaryThreshold OBJECT-TYPE + SYNTAX Integer32 (1..900) + + + + UNITS "errored frame seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of errored frame seconds that must occur for this + event to be triggered. The default value is one errored frame + second. If the threshold value is zero, then an Event + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + + If dot3OamErrFrameSecsSummaryThreshold frame errors occur + within a window of dot3OamErrFrameSecsSummaryWindow (in tenths + of seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Seconds Summary Event TLV indicating + that the threshold has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.40" + DEFVAL { 1 } + ::= { dot3OamEventConfigEntry 13 } + + dot3OamErrFrameSecsEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should send an Event + Notification OAMPDU when an Errored Frame Seconds Event + occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 14 } + + dot3OamDyingGaspEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should attempt to indicate a + dying gasp via the OAMPDU flags field to its peer OAM entity + when a dying gasp event occurs. The exact definition of a + dying gasp event is implementation dependent. If the system + + + + does not support dying gasp capability, setting this object + has no effect, and reading the object should always result in + 'false'. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 15 } + + dot3OamCriticalEventEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should attempt to indicate a + critical event via the OAMPDU flags to its peer OAM entity + when a critical event occurs. The exact definition of a + critical event is implementation dependent. If the system + does not support critical event capability, setting this + object has no effect, and reading the object should always + result in 'false'. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 16 } + + -- ************************************************************** + -- + -- Ethernet OAM Event Log group + -- + + dot3OamEventLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEventLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table records a history of the events that have occurred + at the Ethernet OAM level. These events can include locally + detected events, which may result in locally generated + OAMPDUs, and remotely detected events, which are detected by + the OAM peer entity and signaled to the local entity via + + + + Ethernet OAM. Ethernet OAM events can be signaled by Event + Notification OAMPDUs or by the flags field in any OAMPDU. + + This table contains both threshold crossing events and + non-threshold crossing events. The parameters for the + threshold window, threshold value, and actual value + (dot3OamEventLogWindowXX, dot3OamEventLogThresholdXX, + dot3OamEventLogValue) are only applicable to threshold + crossing events, and are returned as all F's (2^32 - 1) for + non-threshold crossing events. + + Entries in the table are automatically created when such + events are detected. The size of the table is implementation + dependent. When the table reaches its maximum size, older + entries are automatically deleted to make room for newer + entries. + " + ::= { dot3OamObjects 6 } + + dot3OamEventLogEntry OBJECT-TYPE + SYNTAX Dot3OamEventLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3OamEventLogTable. Entries are + automatically created whenever Ethernet OAM events occur at + the local OAM entity, and when Event Notification OAMPDUs are + received at the local OAM entity (indicating that events have + occurred at the peer OAM entity). The size of the table is + implementation dependent, but when the table becomes full, + older events are automatically deleted to make room for newer + events. The table index dot3OamEventLogIndex increments for + each new entry, and when the maximum value is reached, the + value restarts at zero. + " + INDEX { ifIndex, dot3OamEventLogIndex } + ::= { dot3OamEventLogTable 1 } + + Dot3OamEventLogEntry ::= + SEQUENCE { + dot3OamEventLogIndex Unsigned32, + dot3OamEventLogTimestamp TimeStamp, + dot3OamEventLogOui EightOTwoOui, + dot3OamEventLogType Unsigned32, + dot3OamEventLogLocation INTEGER, + dot3OamEventLogWindowHi Unsigned32, + dot3OamEventLogWindowLo Unsigned32, + dot3OamEventLogThresholdHi Unsigned32, + + + + dot3OamEventLogThresholdLo Unsigned32, + dot3OamEventLogValue CounterBasedGauge64, + dot3OamEventLogRunningTotal CounterBasedGauge64, + dot3OamEventLogEventTotal Unsigned32 + } + + dot3OamEventLogIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer for identifying individual events + within the event log. " + ::= { dot3OamEventLogEntry 1 } + + dot3OamEventLogTimestamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the logged event. For + locally generated events, the time of the event can be + accurately retrieved from sysUpTime. For remotely generated + events, the time of the event is indicated by the reception of + the Event Notification OAMPDU indicating that the event + occurred on the peer. A system may attempt to adjust the + timestamp value to more accurately reflect the time of the + event at the peer OAM entity by using other information, such + as that found in the timestamp found of the Event Notification + TLVs, which provides an indication of the relative time + between events at the peer entity. " + ::= { dot3OamEventLogEntry 2 } + + dot3OamEventLogOui OBJECT-TYPE + SYNTAX EightOTwoOui + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OUI of the entity defining the object type. All IEEE + 802.3 defined events (as appearing in [802.3ah] except for the + Organizationally Unique Event TLVs) use the IEEE 802.3 OUI of + 0x0180C2. Organizations defining their own Event Notification + TLVs include their OUI in the Event Notification TLV that + gets reflected here. " + ::= { dot3OamEventLogEntry 3 } + + dot3OamEventLogType OBJECT-TYPE + SYNTAX Unsigned32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of event that generated this entry in the event log. + When the OUI is the IEEE 802.3 OUI of 0x0180C2, the following + event types are defined: + erroredSymbolEvent(1), + erroredFramePeriodEvent(2), + erroredFrameEvent(3), + erroredFrameSecondsEvent(4), + linkFault(256), + dyingGaspEvent(257), + criticalLinkEvent(258) + The first four are considered threshold crossing events, as + they are generated when a metric exceeds a given value within + a specified window. The other three are not threshold + crossing events. + + When the OUI is not 71874 (0x0180C2 in hex), then some other + organization has defined the event space. If event subtyping + is known to the implementation, it may be reflected here. + Otherwise, this value should return all F's (2^32 - 1). + " + REFERENCE "[802.3ah], 30.3.6.1.10 and 57.5.3." + ::= { dot3OamEventLogEntry 4 } + + dot3OamEventLogLocation OBJECT-TYPE + SYNTAX INTEGER { local(1), remote(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this event occurred locally (local(1)), or was + received from the OAM peer via Ethernet OAM (remote(2)). + " + ::= { dot3OamEventLogEntry 5 } + + dot3OamEventLogWindowHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventWindowHi and dot3OamEventWindowLo, form + an unsigned 64-bit integer yielding the window over which the + value was measured for the threshold crossing event (for + example, 5, when 11 occurrences happened in 5 seconds while + the threshold was 10). The two objects are combined as: + + + + + dot3OamEventLogWindow = ((2^32) * dot3OamEventLogWindowHi) + + dot3OamEventLogWindowLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 6 } + + dot3OamEventLogWindowLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventWindowHi and dot3OamEventWindowLo form an + unsigned 64-bit integer yielding the window over which the + value was measured for the threshold crossing event (for + example, 5, when 11 occurrences happened in 5 seconds while + the threshold was 10). The two objects are combined as: + + dot3OamEventLogWindow = ((2^32) * dot3OamEventLogWindowHi) + + dot3OamEventLogWindowLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 7 } + + dot3OamEventLogThresholdHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventThresholdHi and dot3OamEventThresholdLo + form an unsigned 64-bit integer yielding the value that was + crossed for the threshold crossing event (for example, 10, + when 11 occurrences happened in 5 seconds while the threshold + was 10). The two objects are combined as: + + dot3OamEventLogThreshold = ((2^32) * dot3OamEventLogThresholdHi) + + dot3OamEventLogThresholdLo + + Otherwise, this value is returned as all F's (2^32 -1) and + adds no useful information. + " + + + + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 8 } + + dot3OamEventLogThresholdLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventThresholdHi and dot3OamEventThresholdLo + form an unsigned 64-bit integer yielding the value that was + crossed for the threshold crossing event (for example, 10, + when 11 occurrences happened in 5 seconds while the threshold + was 10). The two objects are combined as: + + dot3OamEventLogThreshold = ((2^32) * dot3OamEventLogThresholdHi) + + dot3OamEventLogThresholdLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 9 } + + dot3OamEventLogValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, this + value indicates the value of the parameter within the given + window that generated this event (for example, 11, when 11 + occurrences happened in 5 seconds while the threshold was 10). + + Otherwise, this value is returned as all F's + (2^64 - 1) and adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 10 } + + dot3OamEventLogRunningTotal OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Each Event Notification TLV contains a running total of the + number of times an event has occurred, as well as the number + of times an Event Notification for the event has been + + + + transmitted. For non-threshold crossing events, the number of + events (dot3OamLogRunningTotal) and the number of resultant + Event Notifications (dot3OamLogEventTotal) should be + identical. + + For threshold crossing events, since multiple occurrences may + be required to cross the threshold, these values are likely + different. This value represents the total number of times + this event has happened since the last reset (for example, + 3253, when 3253 symbol errors have occurred since the last + reset, which has resulted in 51 symbol error threshold + crossing events since the last reset). + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 11 } + + dot3OamEventLogEventTotal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Each Event Notification TLV contains a running total of the + number of times an event has occurred, as well as the number + of times an Event Notification for the event has been + transmitted. For non-threshold crossing events, the number of + events (dot3OamLogRunningTotal) and the number of resultant + Event Notifications (dot3OamLogEventTotal) should be + identical. + + For threshold crossing events, since multiple occurrences may + be required to cross the threshold, these values are likely + different. This value represents the total number of times + one or more of these occurrences have resulted in an Event + Notification (for example, 51 when 3253 symbol errors have + occurred since the last reset, which has resulted in 51 symbol + error threshold crossing events since the last reset). + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 12 } + + -- *************************************************************** + -- + -- Ethernet OAM Notifications + -- + + dot3OamThresholdEvent NOTIFICATION-TYPE + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + + + + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogWindowHi, + dot3OamEventLogWindowLo, + dot3OamEventLogThresholdHi, + dot3OamEventLogThresholdLo, + dot3OamEventLogValue, + dot3OamEventLogRunningTotal, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A dot3OamThresholdEvent notification is sent when a local or + remote threshold crossing event is detected. A local + threshold crossing event is detected by the local entity, + while a remote threshold crossing event is detected by the + reception of an Ethernet OAM Event Notification OAMPDU + that indicates a threshold event. + + This notification should not be sent more than once per + second. + + The OAM entity can be derived from extracting the ifIndex from + the variable bindings. The objects in the notification + correspond to the values in a row instance in the + dot3OamEventLogTable. + + The management entity should periodically check + dot3OamEventLogTable to detect any missed events." + ::= { dot3OamNotifications 1 } + + dot3OamNonThresholdEvent NOTIFICATION-TYPE + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A dot3OamNonThresholdEvent notification is sent when a local + or remote non-threshold crossing event is detected. A local + event is detected by the local entity, while a remote event is + detected by the reception of an Ethernet OAM Event + Notification OAMPDU that indicates a non-threshold crossing + event. + + This notification should not be sent more than once per + + + + second. + + The OAM entity can be derived from extracting the ifIndex from + the variable bindings. The objects in the notification + correspond to the values in a row instance of the + dot3OamEventLogTable. + + The management entity should periodically check + dot3OamEventLogTable to detect any missed events." + ::= { dot3OamNotifications 2 } + + -- *************************************************************** + -- + -- Ethernet OAM Compliance group + -- + + dot3OamGroups OBJECT IDENTIFIER ::= { dot3OamConformance 1 } + dot3OamCompliances OBJECT IDENTIFIER ::= { dot3OamConformance 2 } + + -- Compliance statements + + dot3OamCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for managed entities + supporting OAM on Ethernet-like interfaces. + " + MODULE -- this module + MANDATORY-GROUPS { dot3OamControlGroup, + dot3OamPeerGroup, + dot3OamStatsBaseGroup + } + + GROUP dot3OamLoopbackGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support loopback functionality. " + + GROUP dot3OamErrSymbolPeriodEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFramePeriodEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFrameEventGroup + + + + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFrameSecsSummaryEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamFlagEventGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. The ability to send critical events or dying + gasp events is not required in any system." + + GROUP dot3OamEventLogGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. Entries in this table are dependent on what + event functionality is supported in the local OA + implementation. At least one type of event must be supported + for entries to appear in this table. " + + GROUP dot3OamNotificationGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. Since the information in the notifications + is dependent on the dot3OamEventLogTable, that table must be + implemented for notifications. " + + ::= { dot3OamCompliances 1} + + dot3OamControlGroup OBJECT-GROUP + OBJECTS { dot3OamAdminState, + dot3OamOperStatus, + dot3OamMode, + dot3OamMaxOamPduSize, + dot3OamConfigRevision, + dot3OamFunctionsSupported + } + STATUS current + DESCRIPTION + "A collection of objects providing the abilities, + configuration, and status of an Ethernet OAM entity. " + ::= { dot3OamGroups 1 } + + dot3OamPeerGroup OBJECT-GROUP + OBJECTS { dot3OamPeerMacAddress, + + + + dot3OamPeerVendorOui, + dot3OamPeerVendorInfo, + dot3OamPeerMode, + dot3OamPeerFunctionsSupported, + dot3OamPeerMaxOamPduSize, + dot3OamPeerConfigRevision + } + STATUS current + DESCRIPTION + "A collection of objects providing the abilities, + configuration, and status of a peer Ethernet OAM entity. " + ::= { dot3OamGroups 2 } + + dot3OamStatsBaseGroup OBJECT-GROUP + OBJECTS { dot3OamInformationTx, + dot3OamInformationRx, + dot3OamUniqueEventNotificationTx, + dot3OamUniqueEventNotificationRx, + dot3OamDuplicateEventNotificationTx, + dot3OamDuplicateEventNotificationRx, + dot3OamLoopbackControlTx, + dot3OamLoopbackControlRx, + dot3OamVariableRequestTx, + dot3OamVariableRequestRx, + dot3OamVariableResponseTx, + dot3OamVariableResponseRx, + dot3OamOrgSpecificTx, + dot3OamOrgSpecificRx, + dot3OamUnsupportedCodesTx, + dot3OamUnsupportedCodesRx, + dot3OamFramesLostDueToOam + } + STATUS current + DESCRIPTION + "A collection of objects providing the statistics for the + number of various transmit and receive events for OAM on an + Ethernet-like interface. Note that all of these counters must + be supported even if the related function (as described in + dot3OamFunctionsSupported) is not supported. " + ::= { dot3OamGroups 3 } + + dot3OamLoopbackGroup OBJECT-GROUP + OBJECTS { dot3OamLoopbackStatus, + dot3OamLoopbackIgnoreRx + } + STATUS current + DESCRIPTION + "A collection of objects for controlling the OAM remote + + + + loopback function. " + ::= { dot3OamGroups 4 } + + dot3OamErrSymbolPeriodEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrSymPeriodWindowHi, + dot3OamErrSymPeriodWindowLo, + dot3OamErrSymPeriodThresholdHi, + dot3OamErrSymPeriodThresholdLo, + dot3OamErrSymPeriodEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Symbol Period Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 5 } + + dot3OamErrFramePeriodEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFramePeriodWindow, + dot3OamErrFramePeriodThreshold, + dot3OamErrFramePeriodEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Period Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 6 } + + dot3OamErrFrameEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFrameWindow, + dot3OamErrFrameThreshold, + dot3OamErrFrameEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + + + + ::= { dot3OamGroups 7 } + + dot3OamErrFrameSecsSummaryEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFrameSecsSummaryWindow, + dot3OamErrFrameSecsSummaryThreshold, + dot3OamErrFrameSecsEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Seconds Summary Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 8 } + + dot3OamFlagEventGroup OBJECT-GROUP + OBJECTS { dot3OamDyingGaspEnable, + dot3OamCriticalEventEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the sending OAMPDUs + with the critical event flag or dying gasp flag enabled. " + ::= { dot3OamGroups 9 } + + dot3OamEventLogGroup OBJECT-GROUP + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogWindowHi, + dot3OamEventLogWindowLo, + dot3OamEventLogThresholdHi, + dot3OamEventLogThresholdLo, + dot3OamEventLogValue, + dot3OamEventLogRunningTotal, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Seconds Summary Event and maintaining the event + information. " + ::= { dot3OamGroups 10 } + + dot3OamNotificationGroup NOTIFICATION-GROUP + + + + NOTIFICATIONS { + dot3OamThresholdEvent, + dot3OamNonThresholdEvent + } + STATUS current + DESCRIPTION + "A collection of notifications used by Ethernet OAM to signal + to a management entity that local or remote events have + occurred on a specified Ethernet link. " + ::= { dot3OamGroups 11 } + + END diff --git a/mibs/ietf/DS0-MIB b/mibs/ietf/DS0-MIB new file mode 100644 index 0000000..7a54820 --- /dev/null +++ b/mibs/ietf/DS0-MIB @@ -0,0 +1,306 @@ +DS0-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + transmission FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + DisplayString, TruthValue FROM SNMPv2-TC + ifIndex, InterfaceIndex, + InterfaceIndexOrZero FROM IF-MIB; + +-- This is the MIB module for the DS0 Interface objects. + +ds0 MODULE-IDENTITY + LAST-UPDATED "9807161630Z" + ORGANIZATION "IETF Trunk MIB Working Group" + CONTACT-INFO + " David Fowler + + Postal: Newbridge Networks Corporation + 600 March Road + Kanata, Ontario, Canada K2K 2E6 + + Tel: +1 613 591 3600 + Fax: +1 613 599 3619 + + E-mail: davef@newbridge.com" + DESCRIPTION + "The MIB module to describe + DS0 interfaces objects." + REVISION "9805242010Z" + DESCRIPTION + "Initial version of the DS0-MIB." + + ::= { transmission 81 } + +-- The DS0 Config Group + +-- Implementation of this group is mandatory for all +-- systems that use a DS0 Interface. + +-- The DS0 Config Group consists of two tables: +-- DS0 Configuration Table +-- DS0 Channel Mapping Table + +-- The DS0 Configuration Table + +dsx0ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Configuration table." + ::= { ds0 1 } + +dsx0ConfigEntry OBJECT-TYPE + SYNTAX Dsx0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Configuration table. There + is an entry in this table for each DS0 interface." + INDEX { ifIndex } + ::= { dsx0ConfigTable 1 } + +Dsx0ConfigEntry ::= + SEQUENCE { + dsx0Ds0ChannelNumber INTEGER, + dsx0RobbedBitSignalling TruthValue, + dsx0CircuitIdentifier DisplayString, + dsx0IdleCode INTEGER, + dsx0SeizedCode INTEGER, + dsx0ReceivedCode INTEGER, + dsx0TransmitCodesEnable TruthValue, + dsx0Ds0BundleMappedIfIndex InterfaceIndexOrZero +} + +dsx0Ds0ChannelNumber OBJECT-TYPE + SYNTAX INTEGER(0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the channel number of the + ds0 on its DS1/E1." + ::= { dsx0ConfigEntry 1 } + +dsx0RobbedBitSignalling OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates if Robbed Bit Signalling is + turned on or off for a given ds0. This only + applies to DS0s on a DS1 link. For E1 links the + value is always off (false)." + ::= { dsx0ConfigEntry 2 } + +dsx0CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + ::= { dsx0ConfigEntry 3 } + +dsx0IdleCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the code transmitted in the + ABCD bits when the ds0 is not connected and + dsx0TransmitCodesEnable is enabled. The object is + a bitmap and the various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 4 } + +dsx0SeizedCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the code transmitted in the + ABCD bits when the ds0 is connected and + dsx0TransmitCodesEnable is enabled. The object is + a bitmap and the various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 5 } + +dsx0ReceivedCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the code being received in + the ABCD bits. The object is a bitmap and the + various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 6 } + +dsx0TransmitCodesEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines if the idle and seized + codes are transmitted. If the value of this object + is true then the codes are transmitted." + ::= { dsx0ConfigEntry 7 } + +dsx0Ds0BundleMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the ds0Bundle(82) ifEntry to + which the given ds0(81) ifEntry may belong. + + If the given ds0(81) ifEntry does not belong to + any ds0Bundle(82) ifEntry, then this object has a + value of zero. + + While this object provides information that can + also be found in the ifStackTable, it provides + this same information with a single table lookup, + rather than by walking the ifStackTable to find + the possibly non-existent ds0Bundle(82) ifEntry + that may be stacked above the given ds0(81) + ifTable entry." + ::= { dsx0ConfigEntry 8 } + +-- The DS0 Channel Mapping Table + +dsx0ChanMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Channel Mapping table. This table maps a + DS0 channel number on a particular DS1/E1 into an + ifIndex." + ::= { ds0 3 } + +dsx0ChanMappingEntry OBJECT-TYPE + SYNTAX Dsx0ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Channel Mapping table. There + is an entry in this table corresponding to each + ds0 ifEntry within any interface that is + channelized to the individual ds0 ifEntry level. + + This table is intended to facilitate mapping from + channelized interface / channel number to DS0 + ifEntry. (e.g. mapping (DS1 ifIndex, DS0 Channel + Number) -> ifIndex) + + While this table provides information that can + also be found in the ifStackTable and + dsx0ConfigTable, it provides this same information + with a single table lookup, rather than by walking + the ifStackTable to find the various constituent + ds0 ifTable entries, and testing various + dsx0ConfigTable entries to check for the entry + with the applicable DS0 channel number." + INDEX { ifIndex, dsx0Ds0ChannelNumber } + ::= { dsx0ChanMappingTable 1 } + +Dsx0ChanMappingEntry ::= + SEQUENCE { + dsx0ChanMappedIfIndex InterfaceIndex +} + +dsx0ChanMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the individual ds0 ifEntry that + corresponds to the given DS0 channel number + (specified by the INDEX element + dsx0Ds0ChannelNumber) of the given channelized + interface (specified by INDEX element ifIndex)." + ::= { dsx0ChanMappingEntry 1 } + +-- conformance information + +ds0Conformance OBJECT IDENTIFIER ::= { ds0 2 } + +ds0Groups OBJECT IDENTIFIER ::= { ds0Conformance 1 } +ds0Compliances OBJECT IDENTIFIER ::= { ds0Conformance 2 } + + + +-- compliance statements + +ds0Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS0 interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds0ConfigGroup } + + OBJECT dsx0RobbedBitSignalling + MIN-ACCESS read-only + DESCRIPTION + "The ability to set RBS is not required." + OBJECT dsx0CircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the circuit identifier is not + required." + + OBJECT dsx0IdleCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the idle code is not + required." + + OBJECT dsx0SeizedCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the seized code is not + required." + + OBJECT dsx0TransmitCodesEnable + MIN-ACCESS read-only + DESCRIPTION + "The ability to enable and disable the + transmitting of idle and seized codes is not + required." + + ::= { ds0Compliances 1 } + +-- units of conformance + +ds0ConfigGroup OBJECT-GROUP + OBJECTS { dsx0Ds0ChannelNumber, + dsx0RobbedBitSignalling, + dsx0CircuitIdentifier, + dsx0IdleCode, + dsx0SeizedCode, + dsx0ReceivedCode, + dsx0TransmitCodesEnable, + dsx0Ds0BundleMappedIfIndex, + dsx0ChanMappedIfIndex } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS0 interfaces." + ::= { ds0Groups 1 } + +END diff --git a/mibs/ietf/DS0BUNDLE-MIB b/mibs/ietf/DS0BUNDLE-MIB new file mode 100644 index 0000000..d652b90 --- /dev/null +++ b/mibs/ietf/DS0BUNDLE-MIB @@ -0,0 +1,314 @@ +DS0BUNDLE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + transmission FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + DisplayString, RowStatus, + TestAndIncr FROM SNMPv2-TC + ifIndex, InterfaceIndex FROM IF-MIB; + +-- This is the MIB module for the DS0Bundle Interface +-- objects. + +ds0Bundle MODULE-IDENTITY + LAST-UPDATED "9807161630Z" + ORGANIZATION "IETF Trunk MIB Working Group" + CONTACT-INFO + " David Fowler + + Postal: Newbridge Networks Corporation + 600 March Road + Kanata, Ontario, Canada K2K 2E6 + + Tel: +1 613 591 3600 + Fax: +1 613 599 3619 + + E-mail: davef@newbridge.com" + DESCRIPTION + "The MIB module to describe + DS0 Bundle interfaces objects." + REVISION "9805242010Z" + DESCRIPTION + "Initial version of the DS0BUNDLE-MIB." + + ::= { transmission 82 } + +-- +-- The DS0 Bundle Config Group +-- +-- Implementation of this group is mandatory for all +-- systems that use a DS0Bundle Interface. +-- +-- The DS0 Bundle Config Group consists of one table: +-- DS0 Bundle Table + +-- The DS0 Bundle Table + +dsx0BundleNextIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assist the manager in + selecting a value for dsx0BundleIndex. Because + this object is of syntax TestAndIncr (see the + SNMPv2-TC document, RFC 1903) it can also be used + to avoid race conditions with multiple managers + trying to create rows in the table. + + If the result of the SET for dsx0BundleNextIndex + is not success, this means the value has been + changed from index (i.e. another manager used the + value), so a new value is required. + + The algorithm is: + done = false + while done == false + index = GET (dsx0BundleNextIndex.0) + SET (dsx0BundleNextIndex.0=index) + if (set failed) + done = false + else + SET(dsx0BundleRowStatus.index=createAndGo) + if (set failed) + done = false + else + done = true + other error handling" + ::= { ds0Bundle 2 } + +dsx0BundleTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0BundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is an row in this table for each ds0Bundle + in the system. This table can be used to + (indirectly) create rows in the ifTable with + ifType = 'ds0Bundle(82)'." + ::= { ds0Bundle 3 } + +dsx0BundleEntry OBJECT-TYPE + SYNTAX Dsx0BundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is a row in entry in this table for each + ds0Bundle interface." + INDEX { dsx0BundleIndex } + ::= { dsx0BundleTable 1 } + +Dsx0BundleEntry ::= + SEQUENCE { + dsx0BundleIndex INTEGER, + dsx0BundleIfIndex InterfaceIndex, + dsx0BundleCircuitIdentifier DisplayString, + dsx0BundleRowStatus RowStatus +} + +dsx0BundleIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a ds0Bundle. This is not + the same value as ifIndex. This table is not + indexed by ifIndex because the manager has to + choose the index in a createable row and the agent + must be allowed to select ifIndex values." + ::= { dsx0BundleEntry 1 } + +dsx0BundleIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value the agent selected for the + (new) ds0Bundle interface." + ::= { dsx0BundleEntry 2 } + +dsx0BundleCircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + ::= { dsx0BundleEntry 3 } + +dsx0BundleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in + this table." + ::= { dsx0BundleEntry 4 } + +-- The DS0 Bonding Group + +-- Implementation of this group is optional for all +-- systems that use a DS0Bundle Interface. + +-- The DS0 Bonding Group consists of one table: +-- DS0 Bonding Table + +-- The DS0 Bonding Table + +dsx0BondingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0BondingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Bonding table." + ::= { ds0Bundle 1 } + +dsx0BondingEntry OBJECT-TYPE + SYNTAX Dsx0BondingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Bonding table. There is a + row in this table for each DS0Bundle interface." + INDEX { ifIndex } + ::= { dsx0BondingTable 1 } + +Dsx0BondingEntry ::= + SEQUENCE { + dsx0BondMode INTEGER, + dsx0BondStatus INTEGER, + dsx0BondRowStatus RowStatus +} + +dsx0BondMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + mode0(3), + mode1(4), + mode2(5), + mode3(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates which BONDing mode is used, + if any, for a ds0Bundle. Mode0 provides parameter + and number exchange with no synchronization. Mode + 1 provides parameter and number exchange. Mode 1 + also provides synchronization during + initialization but does not include inband + monitoring. Mode 2 provides all of the above plus + inband monitoring. Mode 2 also steals 1/64th of + the bandwidth of each channel (thus not supporting + n x 56/64 kbit/s data channels for most values of + n). Mode 3 provides all of the above, but also + provides n x 56/64 kbit/s data channels. Most + common implementations of Mode 3 add an extra + channel to support the inband monitoring overhead. + ModeNone should be used when the interface is not + performing bandwidth-on-demand." + ::= { dsx0BondingEntry 1 } + +dsx0BondStatus OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + callSetup(2), + dataTransfer(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the current status of the + bonding call using this ds0Bundle. idle(1) should + be used when the bonding mode is set to none(1)." + ::= { dsx0BondingEntry 2 } + +dsx0BondRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create new rows in this + table, modify existing rows, and to delete + existing rows." + ::= { dsx0BondingEntry 3 } + +-- conformance information + +ds0BundleConformance OBJECT IDENTIFIER ::= { ds0Bundle 4 } + +ds0BundleGroups OBJECT IDENTIFIER + ::= { ds0BundleConformance 1 } + +ds0BundleCompliances OBJECT IDENTIFIER + ::= { ds0BundleConformance 2 } + + + +-- compliance statements + +ds0BundleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS0Bundle + interfaces." + MODULE -- this module + MANDATORY-GROUPS {ds0BundleConfigGroup } + + GROUP ds0BondingGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS0Bundle Interface." + + OBJECT dsx0BundleRowStatus + SYNTAX INTEGER { + active(1), + createAndGo(4), + destroy(6) + } + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object, and only three of the + six enumerated values for the RowStatus textual + convention need be supported. Only supporting + createAndGo for a creation process prevents the + manager from creating an inactive row in the + ds0BundleTable. Inactive rows in the + ds0BundleTable do not make sense." + + OBJECT dsx0BundleCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object." + + ::= { ds0BundleCompliances 1 } + + -- units of conformance + + ds0BondingGroup OBJECT-GROUP + OBJECTS { dsx0BondMode, + dsx0BondStatus, + dsx0BondRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing + configuration information applicable + to all DS0 interfaces." + ::= { ds0BundleGroups 1 } +ds0BundleConfigGroup OBJECT-GROUP + OBJECTS { dsx0BundleNextIndex, + dsx0BundleIfIndex, + dsx0BundleCircuitIdentifier, + dsx0BundleRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing the ability to + create a new ds0Bundle in the ifTable as well as + configuration information about the ds0Bundle." + ::= { ds0BundleGroups 2 } +END diff --git a/mibs/ietf/DS1-MIB b/mibs/ietf/DS1-MIB new file mode 100644 index 0000000..1ba9eec --- /dev/null +++ b/mibs/ietf/DS1-MIB @@ -0,0 +1,3181 @@ +DS1-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI -- [RFC2578] + DisplayString, TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndex, ifIndex + FROM IF-MIB -- [RFC2863] + PerfCurrentCount, PerfIntervalCount, + PerfTotalCount + FROM PerfHist-TC-MIB; -- [RFC3593] + +ds1 MODULE-IDENTITY + LAST-UPDATED "200703050000Z" + ORGANIZATION "IETF AToM MIB Working Group" + + + + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Orly Nicklass + + Postal: RAD Data Communications, Ltd. + Ziv Tower, 24 Roul Walenberg + Tel Aviv, Israel, 69719 + + Tel: +9723 765 9969 + E-mail: orly_n@rad.com" + + DESCRIPTION + "The MIB module to describe DS1, J1, E1, DS2, and + E2 interfaces objects. + + Copyright (c) The IETF Trust (2007). This + version of this MIB module is part of RFC 4805; + see the RFC itself for full legal notices." + REVISION "200703050000Z" + DESCRIPTION + "The following changes were made: + (1) Values were added to dsx1LineType to + support J1 types. + (2) The object dsx1LineImpedance was added. + (3) All DM-related objects were deprecated + following their removal from ITU performance + standards. + The RFC 4805 version of this MIB module." + REVISION "200409090000Z" + DESCRIPTION + "The RFC 3895 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 2495 are as follows: + (1) The dsx1FracIfIndex SYNTAX matches the description + range. + (2) A value was added to dsx1TransmitClockSource. + (3) Values were added to dsx1LineType. + (4) Two objects were added, dsx1LineMode and + dsx1LineBuildOut, to better express transceiver + mode and LineBuildOut for T1. + (5) Reference was added to Circuit Identifier object. + + + + + (6) Align the DESCRIPTION clauses of few statistic + objects with the near-end definition, with the far-end + definition, and with RFC 3593. + (7) Changes in Compliance Statements to include new + objects. + (8) A typographical error in dsx2E2 was fixed; the new name + is dsx1E2." + + REVISION "199808011830Z" + DESCRIPTION + "The RFC 2495 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 1406 are as follows: + (1) The Fractional table has been deprecated. + (2) This document uses SMIv2. + (3) Usage is given for ifTable and ifXTable. + (4) Example usage of ifStackTable is included. + (5) dsx1IfIndex has been deprecated. + (6) Support for DS2 and E2 has been added. + (7) Additional lineTypes for DS2, E2, and unframed E1 + were added. + (8) The definition of valid intervals has been clarified + for the case where the agent proxied for other + devices. In particular, the treatment of missing + intervals has been clarified. + (9) An inward loopback has been added. + (10) Additional lineStatus bits have been added for Near + End in Unavailable Signal State, Carrier Equipment + Out of Service, DS2 Payload AIS, and DS2 Performance + Threshold. + (11) A read-write line Length object has been added. + (12) Signal mode of other has been added. + (13) Added a lineStatus last change, trap and enabler. + (14) The e1(19) ifType has been obsoleted, so this MIB + does not list it as a supported ifType. + (15) Textual Conventions for statistics objects have + been used. + (16) A new object, dsx1LoopbackStatus, has been + introduced to reflect the loopbacks established + on a DS1 interface and the source to the requests. + dsx1LoopbackConfig continues to be the desired + loopback state while dsx1LoopbackStatus reflects + the actual state. + (17) A dual loopback has been added to allow the setting + of an inward loopback and a line loopback at the + same time. + (18) An object indicating which channel to use within a + parent object (i.e., DS3) has been added. + + + + (19) An object has been added to indicate whether or + not this DS1/E1 is channelized. + (20) Line coding type of B6ZS has been added for DS2." + + REVISION "199301252028Z" + DESCRIPTION + "Initial version, published as RFC 1406." + ::= { transmission 18 } + +-- note that this subsumes cept(19) and g703at2mb(67) +-- there is no separate CEPT or G703AT2MB MIB +-- The DS1 Near End Group + +-- The DS1 Near End Group consists of five tables: +-- DS1 Configuration +-- DS1 Current +-- DS1 Interval +-- DS1 Total +-- DS1 Channel Table + +-- The DS1 Configuration Table + +dsx1ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Configuration table." + ::= { ds1 6 } + +dsx1ConfigEntry OBJECT-TYPE + SYNTAX Dsx1ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Configuration table." + INDEX { dsx1LineIndex } + ::= { dsx1ConfigTable 1 } + +Dsx1ConfigEntry ::= + SEQUENCE { + dsx1LineIndex InterfaceIndex, + dsx1IfIndex InterfaceIndex, + dsx1TimeElapsed INTEGER, + dsx1ValidIntervals INTEGER, + dsx1LineType INTEGER, + dsx1LineCoding INTEGER, + dsx1SendCode INTEGER, + + + + dsx1CircuitIdentifier DisplayString, + dsx1LoopbackConfig INTEGER, + dsx1LineStatus INTEGER, + dsx1SignalMode INTEGER, + dsx1TransmitClockSource INTEGER, + dsx1Fdl INTEGER, + dsx1InvalidIntervals INTEGER, + dsx1LineLength INTEGER, + dsx1LineStatusLastChange TimeStamp, + dsx1LineStatusChangeTrapEnable INTEGER, + dsx1LoopbackStatus INTEGER, + dsx1Ds1ChannelNumber INTEGER, + dsx1Channelization INTEGER, + dsx1LineMode INTEGER, + dsx1LineBuildOut INTEGER, + dsx1LineImpedance INTEGER +} + +dsx1LineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "This object should be made equal to ifIndex. The + next paragraph describes its previous usage. + Making the object equal to ifIndex allows proper + use of the ifStackTable and ds0/ds0bundle MIBs. + + Previously, this object was the identifier of a DS1 + interface on a managed device. If there is an + ifEntry that is directly associated with this and + only this DS1 interface, it should have the same + value as ifIndex. Otherwise, number the + dsx1LineIndices with a unique identifier + following the rules of choosing a number that is + greater than ifNumber and numbering the inside + interfaces (e.g., equipment side) with even + numbers and outside interfaces (e.g., network + side) with odd numbers." + ::= { dsx1ConfigEntry 1 } + +dsx1IfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This value for this object is equal to the value + + + + of ifIndex from the Interfaces table (RFC 2863)." + ::= { dsx1ConfigEntry 2 } + +dsx1TimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the near-end current error- + measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock, + the current interval exceeds the maximum value, + the agent will return the maximum value." + ::= { dsx1ConfigEntry 3 } + +dsx1ValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous near-end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15-minute near-end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx1ConfigEntry 4 } + +dsx1LineType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + dsx1ESF(2), + dsx1D4(3), + dsx1E1(4), + dsx1E1CRC(5), + dsx1E1MF(6), + dsx1E1CRCMF(7), + dsx1Unframed(8), + dsx1E1Unframed(9), + dsx1DS2M12(10), + dsx1E2(11), + dsx1E1Q50(12), + dsx1E1Q50CRC(13), + + + + dsx1J1ESF(14), + dsx1J1Unframed(16) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the variety of DS1 + Line implementing this circuit. The type of + circuit affects the number of bits per second + that the circuit can reasonably carry, as well + as the interpretation of the usage and error + statistics. The values, in sequence, describe: + + TITLE: SPECIFICATION: + dsx1ESF Extended SuperFrame DS1 + (T1.107) + dsx1D4 AT&T D4 format DS1 (T1.107) + dsx1E1 ITU-T G.704, (Table 5A) + dsx1E1-CRC ITU-T G.704, (Table 5B) + dsxE1-MF G.704 (Table 5A) with TS16 + multiframing enabled + dsx1E1-CRC-MF G.704 (Table 5B) with TS16 + multiframing enabled + dsx1Unframed DS1 with No Framing + dsx1E1Unframed E1 with No Framing (G.703) + dsx1DS2M12 DS2 frame format (T1.107) + dsx1E2 E2 frame format (G.704) + dsx1E1Q50 TS16 bits 5,7,8 set to 101, + [in all other cases it is set + to 111.] (G.704, table 14) + dsx1E1Q50CRC E1Q50 with CRC + dsx1J1ESF J1 according to (JT-G704, + JT-G706, and JT-I431) + dsx1J1Unframed J1 with No Framing + + For clarification, the capacity for each E1 type + is as listed below: + dsx1E1Unframed - E1, no framing = 32 x 64k = 2048k + dsx1E1 or dsx1E1CRC - E1, with framing, + no signalling = 31 x 64k = 1984k + dsx1E1MF or dsx1E1CRCMF - E1, with framing, + signalling = 30 x 64k = 1920k" + REFERENCE + "American National Standard for + telecommunications - + digital hierarchy - formats specification, + ANSI T1.107- 1988. + ITU-T G.703: Physical/Electrical Characteristics + + + + of Hierarchical Digital Interfaces, November + 2001. + ITU-T G.704: Synchronous frame structures used at + 1544, 6312, 2048, 8488 and 44 736 kbit/s + Hierarchical Levels, July 1995. + JT-G704: Synchronous frame structures used at + Primary and Secondary Hierarchical Levels,2002. + JT-G706. Frame Alignment and Cyclic Redundancy + Check (CRC) Procedures. + JT-I431. ISDN Primary Rate User-Network Interface, + Layer 1 Specifications, 2002 " +::= { dsx1ConfigEntry 5 } + +dsx1LineCoding OBJECT-TYPE + SYNTAX INTEGER { + dsx1JBZS(1), + dsx1B8ZS(2), + dsx1HDB3(3), + dsx1ZBTSI(4), + dsx1AMI(5), + other(6), + dsx1B6ZS(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the variety of Zero Code + Suppression used on this interface, which in turn + affects a number of its characteristics. + + dsx1JBZS refers the Jammed Bit Zero Suppression, + in which the AT&T specification of at least one + pulse every 8-bit period is literally implemented + by forcing a pulse in bit 8 of each channel. + Thus, only 7 bits per channel, or 1.344 Mbps, + are available for data. + + dsx1B8ZS refers to the use of a specified pattern + of normal bits and bipolar violations that are + used to replace a sequence of 8 zero bits. + ANSI Clear Channels may use dsx1ZBTSI, or Zero + Byte Time Slot Interchange. + + E1 links, with or without CRC, use dsx1HDB3 or + dsx1AMI. + + dsx1AMI refers to a mode wherein no Zero Code + Suppression is present and the line encoding does + + + + not solve the problem directly. In this + application, the higher layer must provide data + that meets or exceeds the pulse density + requirements, such as inverting HDLC data. + + dsx1B6ZS refers to the user of a specified pattern + of normal bits and bipolar violations that are + used to replace a sequence of 6 zero bits. Used + for DS2. + For more information about line coding see + [ANSI-T1.102]" + ::= { dsx1ConfigEntry 6 } + +dsx1SendCode OBJECT-TYPE + SYNTAX INTEGER { + dsx1SendNoCode(1), + dsx1SendLineCode(2), + dsx1SendPayloadCode(3), + dsx1SendResetCode(4), + dsx1SendQRS(5), + dsx1Send511Pattern(6), + dsx1Send3in24Pattern(7), + dsx1SendOtherTestPattern(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates what type of code is + being sent across the DS1 interface by the device. + Setting this variable causes the interface to send + the code requested. The values mean the following: + + dsx1SendNoCode + sending looped or normal data + + dsx1SendLineCode + sending a request for a line loopback + + dsx1SendPayloadCode + sending a request for a payload loopback + + dsx1SendResetCode + sending a loopback termination request + + dsx1SendQRS + sending a Quasi-Random Signal (QRS) test + pattern + + + + + dsx1Send511Pattern + sending a 511-bit fixed test pattern + + dsx1Send3in24Pattern + sending a fixed test pattern of 3 bits set + in 24 + + dsx1SendOtherTestPattern + sending a test pattern other than those + described by this object" + ::= { dsx1ConfigEntry 7 } + +dsx1CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + REFERENCE "ITU-T M.1400" + ::= { dsx1ConfigEntry 8 } + +dsx1LoopbackConfig OBJECT-TYPE + SYNTAX INTEGER { + dsx1NoLoop(1), + dsx1PayloadLoop(2), + dsx1LineLoop(3), + dsx1OtherLoop(4), + dsx1InwardLoop(5), + dsx1DualLoop(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable represents the desired loopback + configuration of the DS1 interface. Agents + supporting read/write access should return + inconsistentValue in response to a requested + loopback state that the interface does not + support. The values mean: + + dsx1NoLoop + not in the loopback state. A device that is not + capable of performing a loopback on the interface + shall always return this as its value. + + dsx1PayloadLoop + + + + the received signal at this interface is looped + through the device. Typically, the received signal + is looped back for retransmission after it has + passed through the device's framing function. + + dsx1LineLoop + the received signal at this interface does not go + through the device (minimum penetration) but is + looped back out. + + dsx1OtherLoop + loopbacks that are not defined here. + + dsx1InwardLoop + the transmitted signal at this interface is + looped back and received by the same interface. + What is transmitted onto the line is product + dependent. + + dsx1DualLoop + both dsx1LineLoop and dsx1InwardLoop will be + active simultaneously." + ::= { dsx1ConfigEntry 9 } + +dsx1LineStatus OBJECT-TYPE + SYNTAX INTEGER (1..131071) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the line status of the + interface. It contains loopback, failure, + received alarm and transmitted alarms + information. + + The dsx1LineStatus is a bitmap represented as a + sum; therefore, it can represent multiple failures + (alarms) and a LoopbackState simultaneously. + + dsx1NoAlarm must be set if and only if no other + flag is set. + + If the dsx1loopbackState bit is set, the loopback + in effect can be determined from the + dsx1loopbackConfig object. The various bit + positions are as follows: + + 1 dsx1NoAlarm No alarm present + 2 dsx1RcvFarEndLOF Far end LOF (a.k.a. + + + + Yellow Alarm) + 4 dsx1XmtFarEndLOF Near end sending LOF + indication + 8 dsx1RcvAIS Far end sending AIS + 16 dsx1XmtAIS Near end sending AIS + 32 dsx1LossOfFrame Near end LOF (a.k.a. + Red Alarm) + 64 dsx1LossOfSignal Near end Loss of Signal + 128 dsx1LoopbackState Near end is looped + 256 dsx1T16AIS E1 TS16 AIS + 512 dsx1RcvFarEndLOMF Far end sending TS16 LOMF + 1024 dsx1XmtFarEndLOMF Near end sending TS16 LOMF + 2048 dsx1RcvTestCode Near end detects a test code + 4096 dsx1OtherFailure Any line status not defined + here + 8192 dsx1UnavailSigState Near end in unavailable + signal state + 16384 dsx1NetEquipOOS Carrier equipment out of + service + 32768 dsx1RcvPayloadAIS DS2 payload AIS + 65536 dsx1Ds2PerfThreshold DS2 performance threshold + exceeded" + ::= { dsx1ConfigEntry 10 } + +dsx1SignalMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + robbedBit(2), + bitOriented(3), + messageOriented(4), + other(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "'none' indicates that no bits are reserved for + signaling on this channel. + + 'robbedBit' indicates that DS1 Robbed Bit Signaling + is in use. + + 'bitOriented' indicates that E1 Channel Associated + Signaling is in use. + + 'messageOriented' indicates that Common Channel + Signaling is in use on either channel 16 of + an E1 link or channel 24 of a DS1." + ::= { dsx1ConfigEntry 11 } + + + +dsx1TransmitClockSource OBJECT-TYPE + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3), + adaptive (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The source of transmit clock. + + 'loopTiming' indicates that the recovered + receive clock is used as the transmit clock. + + 'localTiming' indicates that a local clock + source is used or when an external clock is + attached to the box containing the interface. + + 'throughTiming' indicates that recovered + receive clock from another interface is used as + the transmit clock. + + 'adaptive' indicates that the clock is recovered + based on the data flow and not based on the + physical layer" + ::= { dsx1ConfigEntry 12 } + +dsx1Fdl OBJECT-TYPE + SYNTAX INTEGER (1..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This bitmap describes the use of the + facilities data link and is the sum of the + capabilities. Set any bits that are appropriate: + + other(1), + dsx1AnsiT1403(2), + dsx1Att54016(4), + dsx1FdlNone(8) + + 'other' indicates that a protocol other than + one of the following is used. + + 'dsx1AnsiT1403' refers to the FDL exchange + recommended by ANSI. + + + + + 'dsx1Att54016' refers to ESF FDL exchanges. + + 'dsx1FdlNone' indicates that the device does + not use the FDL." + ::= { dsx1ConfigEntry 13 } + +dsx1InvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + dsx1ValidIntervals for which no data is available. + This object will typically be zero except in cases + where the data for some intervals is not + available (e.g., in proxy situations)." + ::= { dsx1ConfigEntry 14 } + +dsx1LineLength OBJECT-TYPE + SYNTAX INTEGER (0..64000) + UNITS "meters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the DS1 line in meters. This + object provides information for line build-out + circuitry. This object is only useful if the + interface has configurable line build-out + circuitry." + ::= { dsx1ConfigEntry 15 } + +dsx1LineStatusLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime object at the + time this DS1 entered its current line status + state. If the current state was entered prior to + the last re-initialization of the proxy-agent, + then this object contains a zero value." + ::= { dsx1ConfigEntry 16 } + +dsx1LineStatusChangeTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether dsx1LineStatusChange traps + should be generated for this interface." + DEFVAL { disabled } + ::= { dsx1ConfigEntry 17 } + +dsx1LoopbackStatus OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the current state of the + loopback on the DS1 interface. It contains + information about loopbacks established by a + manager and remotely from the far end. + + The dsx1LoopbackStatus is a bitmap represented as + a sum; therefore, it can represent multiple + loopbacks simultaneously. + + The various bit positions are as follows: + 1 dsx1NoLoopback + 2 dsx1NearEndPayloadLoopback + 4 dsx1NearEndLineLoopback + 8 dsx1NearEndOtherLoopback + 16 dsx1NearEndInwardLoopback + 32 dsx1FarEndPayloadLoopback + 64 dsx1FarEndLineLoopback" + + ::= { dsx1ConfigEntry 18 } + +dsx1Ds1ChannelNumber OBJECT-TYPE + SYNTAX INTEGER (0..28) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the channel number of + the DS1/E1 on its parent DS2/E2 or DS3/E3. A + value of 0 indicates that this DS1/E1 does not + have a parent DS3/E3." + ::= { dsx1ConfigEntry 19 } + +dsx1Channelization OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledDs0(2), + + + + enabledDs1(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether this DS1/E1 or DS2 is + channelized or unchannelized. + + The value of enabledDs0(2) indicates that this is a + DS1 channelized into DS0s. Setting this value will + cause the creation, and resetting it to disabled(1) + will cause the deletion of entries in the ifTable + for the DS0s that are within the DS1. + + The value of enabledDs1(3) indicates that this is a + DS2 channelized into DS1s. Setting this value will + cause the creation, and resetting it to disabled(1) + will cause the deletion of entries in the ifTable + for the DS1s that are within the DS2." + + ::= { dsx1ConfigEntry 20 } + +dsx1LineMode OBJECT-TYPE + SYNTAX INTEGER { + csu(1), + dsu(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This setting puts the T1 framer into either + long-haul (CSU) mode or short-haul (DSU) mode." + ::= { dsx1ConfigEntry 21 } + +dsx1LineBuildOut OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + neg75dB(2), + neg15dB(3), + neg225dB(4), + zerodB(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Attenuation setting for T1 framer in long haul + (CSU) mode. The optional values are -7.5dB, + -15dB, -22.5dB, and 0dB." + + + + ::= { dsx1ConfigEntry 22 } + +dsx1LineImpedance OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + unbalanced75ohms(2), + balanced100ohms(3), + balanced120ohms(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Nominal line impedance. For T1 and J1 lines, the + value is typically balanced100ohms(3). For E1 + lines, the value is typically unbalanced75ohms(2) + and balanced120ohms(4). When this object does not + apply, or when the appropriate value is not known, + the value should be set to notApplicable(1)." + ::= { dsx1ConfigEntry 23 } + +-- The DS1 Current Table +dsx1CurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Current table contains various statistics + being collected for the current 15-minute + interval." + ::= { ds1 7 } + +dsx1CurrentEntry OBJECT-TYPE + SYNTAX Dsx1CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Current table." + INDEX { dsx1CurrentIndex } + ::= { dsx1CurrentTable 1 } + +Dsx1CurrentEntry ::= + SEQUENCE { + dsx1CurrentIndex InterfaceIndex, + dsx1CurrentESs PerfCurrentCount, + dsx1CurrentSESs PerfCurrentCount, + dsx1CurrentSEFSs PerfCurrentCount, + dsx1CurrentUASs PerfCurrentCount, + dsx1CurrentCSSs PerfCurrentCount, + + + + dsx1CurrentPCVs PerfCurrentCount, + dsx1CurrentLESs PerfCurrentCount, + dsx1CurrentBESs PerfCurrentCount, + dsx1CurrentDMs PerfCurrentCount, + dsx1CurrentLCVs PerfCurrentCount +} + +dsx1CurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + 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 as a dsx1LineIndex object instance." + ::= { dsx1CurrentEntry 1 } + +dsx1CurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds." + ::= { dsx1CurrentEntry 2 } + +dsx1CurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds." + ::= { dsx1CurrentEntry 3 } + +dsx1CurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds." + ::= { dsx1CurrentEntry 4 } + +dsx1CurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1CurrentEntry 5 } + +dsx1CurrentCSSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds." + ::= { dsx1CurrentEntry 6 } + +dsx1CurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations." + ::= { dsx1CurrentEntry 7 } + +dsx1CurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx1CurrentEntry 8 } + +dsx1CurrentBESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds." + ::= { dsx1CurrentEntry 9 } + +dsx1CurrentDMs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes." + ::= { dsx1CurrentEntry 10 } + +dsx1CurrentLCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Line Coding Violations (LCVs)." + ::= { dsx1CurrentEntry 11 } + +-- The DS1 Interval Table +dsx1IntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Interval table contains various + statistics collected by each DS1 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15-minute + intervals. Each row in this table represents one + such interval (identified by dsx1IntervalNumber) + for one specific instance (identified by + dsx1IntervalIndex)." + ::= { ds1 8 } + +dsx1IntervalEntry OBJECT-TYPE + SYNTAX Dsx1IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Interval table." + INDEX { dsx1IntervalIndex, dsx1IntervalNumber } + ::= { dsx1IntervalTable 1 } + +Dsx1IntervalEntry ::= + SEQUENCE { + dsx1IntervalIndex InterfaceIndex, + dsx1IntervalNumber INTEGER, + dsx1IntervalESs PerfIntervalCount, + dsx1IntervalSESs PerfIntervalCount, + dsx1IntervalSEFSs PerfIntervalCount, + dsx1IntervalUASs PerfIntervalCount, + dsx1IntervalCSSs PerfIntervalCount, + dsx1IntervalPCVs PerfIntervalCount, + dsx1IntervalLESs PerfIntervalCount, + dsx1IntervalBESs PerfIntervalCount, + dsx1IntervalDMs PerfIntervalCount, + dsx1IntervalLCVs PerfIntervalCount, + dsx1IntervalValidData TruthValue +} + +dsx1IntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + 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 as a dsx1LineIndex object instance." + ::= { dsx1IntervalEntry 1 } + +dsx1IntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15-minute interval and 96 is + the 15-minute interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx1IntervalEntry 2 } + +dsx1IntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds." + ::= { dsx1IntervalEntry 3 } + +dsx1IntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds." + ::= { dsx1IntervalEntry 4 } + +dsx1IntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds." + ::= { dsx1IntervalEntry 5 } + +dsx1IntervalUASs OBJECT-TYPE + + + + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds. This object + may decrease if the occurrence of unavailable + seconds occurs across an interval boundary." + ::= { dsx1IntervalEntry 6 } + +dsx1IntervalCSSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds." + ::= { dsx1IntervalEntry 7 } + +dsx1IntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations." + ::= { dsx1IntervalEntry 8 } + +dsx1IntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx1IntervalEntry 9 } + +dsx1IntervalBESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds." + ::= { dsx1IntervalEntry 10 } + +dsx1IntervalDMs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes." + ::= { dsx1IntervalEntry 11 } + + + +dsx1IntervalLCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Coding Violations." + ::= { dsx1IntervalEntry 12 } + +dsx1IntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates whether the data for this + interval is valid." + ::= { dsx1IntervalEntry 13 } + +-- The DS1 Total Table +dsx1TotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Total table contains the cumulative sum + of the various statistics for the 24-hour period + preceding the current interval." + ::= { ds1 9 } + +dsx1TotalEntry OBJECT-TYPE + SYNTAX Dsx1TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Total table." + INDEX { dsx1TotalIndex } + ::= { dsx1TotalTable 1 } + +Dsx1TotalEntry ::= + SEQUENCE { + dsx1TotalIndex InterfaceIndex, + dsx1TotalESs PerfTotalCount, + dsx1TotalSESs PerfTotalCount, + dsx1TotalSEFSs PerfTotalCount, + dsx1TotalUASs PerfTotalCount, + dsx1TotalCSSs PerfTotalCount, + dsx1TotalPCVs PerfTotalCount, + dsx1TotalLESs PerfTotalCount, + dsx1TotalBESs PerfTotalCount, + + + + dsx1TotalDMs PerfTotalCount, + dsx1TotalLCVs PerfTotalCount +} + +dsx1TotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + 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 as a dsx1LineIndex object instance." + ::= { dsx1TotalEntry 1 } + +dsx1TotalESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds encountered by a DS1 + interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 2 } + +dsx1TotalSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 3 } + +dsx1TotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 4 } + + + +dsx1TotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 5 } + +dsx1TotalCSSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 6 } + +dsx1TotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 7 } + +dsx1TotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 8 } + +dsx1TotalBESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds (BESs) + + + + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals count + as 0." + ::= { dsx1TotalEntry 9 } + +dsx1TotalDMs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes (DMs) encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 10 } + +dsx1TotalLCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Coding Violations (LCVs) + encountered by a DS1 interface in the current + 15-minute interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 11 } + +-- The DS1 Channel Table + +dsx1ChanMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Channel Mapping table. This table maps a + DS1 channel number on a particular DS3 into an + ifIndex. In the presence of DS2s, this table can + be used to map a DS2 channel number on a DS3 into + an ifIndex, or used to map a DS1 channel number on + a DS2 into an ifIndex." + ::= { ds1 16 } + +dsx1ChanMappingEntry OBJECT-TYPE + SYNTAX Dsx1ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Channel Mapping table. There + + + + is an entry in this table corresponding to each + DS1 ifEntry within any interface that is + channelized to the individual DS1 ifEntry level. + + This table is intended to facilitate mapping from + channelized interface / channel number to DS1 + ifEntry (e.g., mapping (DS3 ifIndex, DS1 channel + number) -> ifIndex). + + While this table provides information that can + also be found in the ifStackTable and + dsx1ConfigTable, it provides this same information + with a single table lookup, rather than by walking + the ifStackTable to find the various constituent + DS1 ifTable entries, and testing various + dsx1ConfigTable entries to check for the entry + with the applicable DS1 channel number." + INDEX { ifIndex, dsx1Ds1ChannelNumber } + ::= { dsx1ChanMappingTable 1 } + +Dsx1ChanMappingEntry ::= + SEQUENCE { + dsx1ChanMappedIfIndex InterfaceIndex +} + +dsx1ChanMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the individual DS1 ifEntry that + corresponds to the given DS1 channel number + (specified by the INDEX element + dsx1Ds1ChannelNumber) of the given channelized + interface (specified by INDEX element ifIndex)." + ::= { dsx1ChanMappingEntry 1 } + +-- The DS1 Far End Current Table + +dsx1FarEndCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Current table contains various + statistics being collected for the current + 15-minute interval. The statistics are collected + + + + from the far-end messages on the Facilities Data + Link. The definitions are the same as described + for the near-end information." + ::= { ds1 10 } + +dsx1FarEndCurrentEntry OBJECT-TYPE + SYNTAX Dsx1FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Current table." + INDEX { dsx1FarEndCurrentIndex } + ::= { dsx1FarEndCurrentTable 1 } + +Dsx1FarEndCurrentEntry ::= + SEQUENCE { + dsx1FarEndCurrentIndex InterfaceIndex, + dsx1FarEndTimeElapsed INTEGER, + dsx1FarEndValidIntervals INTEGER, + dsx1FarEndCurrentESs PerfCurrentCount, + dsx1FarEndCurrentSESs PerfCurrentCount, + dsx1FarEndCurrentSEFSs PerfCurrentCount, + dsx1FarEndCurrentUASs PerfCurrentCount, + dsx1FarEndCurrentCSSs PerfCurrentCount, + dsx1FarEndCurrentLESs PerfCurrentCount, + dsx1FarEndCurrentPCVs PerfCurrentCount, + dsx1FarEndCurrentBESs PerfCurrentCount, + dsx1FarEndCurrentDMs PerfCurrentCount, + dsx1FarEndInvalidIntervals INTEGER +} + +dsx1FarEndCurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndCurrentEntry 1 } + +dsx1FarEndTimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the far-end current error-measurement + period. If, for some reason, such as an adjustment + in the system's time-of-day clock, the current + interval exceeds the maximum value, the agent will + return the maximum value." + ::= { dsx1FarEndCurrentEntry 2 } + +dsx1FarEndValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous far-end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15-minute far-end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx1FarEndCurrentEntry 3 } + +dsx1FarEndCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds." + ::= { dsx1FarEndCurrentEntry 4 } + +dsx1FarEndCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Seconds." + ::= { dsx1FarEndCurrentEntry 5 } + +dsx1FarEndCurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Framing + + + + Seconds." + ::= { dsx1FarEndCurrentEntry 6 } + +dsx1FarEndCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1FarEndCurrentEntry 7 } + +dsx1FarEndCurrentCSSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds." + ::= { dsx1FarEndCurrentEntry 8 } + +dsx1FarEndCurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds." + ::= { dsx1FarEndCurrentEntry 9 } + +dsx1FarEndCurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations." + ::= { dsx1FarEndCurrentEntry 10 } + +dsx1FarEndCurrentBESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Bursty Errored Seconds." + ::= { dsx1FarEndCurrentEntry 11 } + +dsx1FarEndCurrentDMs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The number of Far End Degraded Minutes." + ::= { dsx1FarEndCurrentEntry 12 } + +dsx1FarEndInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + dsx1FarEndValidIntervals for which no data is + available. This object will typically be zero + except in cases where the data for some intervals + is not available (e.g., in proxy situations)." + ::= { dsx1FarEndCurrentEntry 13 } + +-- The DS1 Far End Interval Table + +dsx1FarEndIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Interval table contains various + statistics collected by each DS1 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15-minute + intervals. Each row in this table represents one + such interval (identified by + dsx1FarEndIntervalNumber) for one specific + instance (identified by dsx1FarEndIntervalIndex)." + ::= { ds1 11 } + +dsx1FarEndIntervalEntry OBJECT-TYPE + SYNTAX Dsx1FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Interval table." + INDEX { dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber } + ::= { dsx1FarEndIntervalTable 1 } + +Dsx1FarEndIntervalEntry ::= + SEQUENCE { + dsx1FarEndIntervalIndex InterfaceIndex, + dsx1FarEndIntervalNumber INTEGER, + dsx1FarEndIntervalESs PerfIntervalCount, + dsx1FarEndIntervalSESs PerfIntervalCount, + + + + dsx1FarEndIntervalSEFSs PerfIntervalCount, + dsx1FarEndIntervalUASs PerfIntervalCount, + dsx1FarEndIntervalCSSs PerfIntervalCount, + dsx1FarEndIntervalLESs PerfIntervalCount, + dsx1FarEndIntervalPCVs PerfIntervalCount, + dsx1FarEndIntervalBESs PerfIntervalCount, + dsx1FarEndIntervalDMs PerfIntervalCount, + dsx1FarEndIntervalValidData TruthValue +} + +dsx1FarEndIntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndIntervalEntry 1 } + +dsx1FarEndIntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15-minute interval and 96 is + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx1FarEndIntervalEntry 2 } + +dsx1FarEndIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds." + ::= { dsx1FarEndIntervalEntry 3 } + +dsx1FarEndIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of Far End Severely Errored Seconds." + ::= { dsx1FarEndIntervalEntry 4 } + +dsx1FarEndIntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Framing + Seconds." + ::= { dsx1FarEndIntervalEntry 5 } + +dsx1FarEndIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1FarEndIntervalEntry 6 } + +dsx1FarEndIntervalCSSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds." + ::= { dsx1FarEndIntervalEntry 7 } + +dsx1FarEndIntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds." + ::= { dsx1FarEndIntervalEntry 8 } + +dsx1FarEndIntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations." + ::= { dsx1FarEndIntervalEntry 9 } + +dsx1FarEndIntervalBESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Far End Bursty Errored Seconds." + ::= { dsx1FarEndIntervalEntry 10 } + +dsx1FarEndIntervalDMs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Far End Degraded Minutes." + ::= { dsx1FarEndIntervalEntry 11 } + +dsx1FarEndIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx1FarEndIntervalEntry 12 } + +-- The DS1 Far End Total Table + +dsx1FarEndTotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Total table contains the + cumulative sum of the various statistics for the + 24-hour period preceding the current interval." + ::= { ds1 12 } + +dsx1FarEndTotalEntry OBJECT-TYPE + SYNTAX Dsx1FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Total table." + INDEX { dsx1FarEndTotalIndex } + ::= { dsx1FarEndTotalTable 1 } + +Dsx1FarEndTotalEntry ::= + SEQUENCE { + dsx1FarEndTotalIndex InterfaceIndex, + dsx1FarEndTotalESs PerfTotalCount, + dsx1FarEndTotalSESs PerfTotalCount, + dsx1FarEndTotalSEFSs PerfTotalCount, + + + + dsx1FarEndTotalUASs PerfTotalCount, + dsx1FarEndTotalCSSs PerfTotalCount, + dsx1FarEndTotalLESs PerfTotalCount, + dsx1FarEndTotalPCVs PerfTotalCount, + dsx1FarEndTotalBESs PerfTotalCount, + dsx1FarEndTotalDMs PerfTotalCount +} + +dsx1FarEndTotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndTotalEntry 1 } + +dsx1FarEndTotalESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1FarEndTotalEntry 2 } + +dsx1FarEndTotalSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 3 } + +dsx1FarEndTotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of Far End Severely Errored Framing + Seconds encountered by a DS1 interface in the + previous 24-hour interval. Invalid 15-minute + intervals count as 0." + ::= { dsx1FarEndTotalEntry 4 } + +dsx1FarEndTotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1FarEndTotalEntry 5 } + +dsx1FarEndTotalCSSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15 minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 6 } + +dsx1FarEndTotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 7 } + +dsx1FarEndTotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations + reported via the far end block error count + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + + + + ::= { dsx1FarEndTotalEntry 8 } + +dsx1FarEndTotalBESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds (BESs) + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 9 } + +dsx1FarEndTotalDMs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes (DMs) encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1FarEndTotalEntry 10 } + +-- The DS1 Fractional Table + +dsx1FracTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table is deprecated in favor of using + ifStackTable. + + The table was mandatory for systems dividing a DS1 + into channels containing different data streams + that are of local interest. Systems that are + indifferent to data content, such as CSUs, need + not implement it. + + The DS1 Fractional table identifies which DS1 + channels associated with a CSU are being used to + support a logical interface, i.e., an entry in the + interfaces table from the Internet-standard MIB. + + For example, consider an application managing a + North American ISDN Primary Rate link whose + division is a 384-kbit/s H1 _B_ Channel for video, + + + + a second H1 for data to a primary routing peer, + and 12 64-kbit/s H0 _B_ Channels. Consider that + some subset of the H0 channels is used for voice + and the remainder are available for dynamic data + calls. + + We count a total of 14 interfaces multiplexed onto + the DS1 interface. Six DS1 channels (for the sake + of the example, channels 1..6) are used for video, + six more (7..11 and 13) are used for data, and the + remaining 12 are in channels 12 and 14..24. + + Let us further imagine that ifIndex 2 is of type + DS1 and refers to the DS1 interface and that the + interfaces layered onto it are numbered 3..16. + + We might describe the allocation of channels, in + the dsx1FracTable, as follows: + dsx1FracIfIndex.2. 1 = 3 dsx1FracIfIndex.2.13 = 4 + dsx1FracIfIndex.2. 2 = 3 dsx1FracIfIndex.2.14 = 6 + dsx1FracIfIndex.2. 3 = 3 dsx1FracIfIndex.2.15 = 7 + dsx1FracIfIndex.2. 4 = 3 dsx1FracIfIndex.2.16 = 8 + dsx1FracIfIndex.2. 5 = 3 dsx1FracIfIndex.2.17 = 9 + dsx1FracIfIndex.2. 6 = 3 dsx1FracIfIndex.2.18 = 10 + dsx1FracIfIndex.2. 7 = 4 dsx1FracIfIndex.2.19 = 11 + dsx1FracIfIndex.2. 8 = 4 dsx1FracIfIndex.2.20 = 12 + dsx1FracIfIndex.2. 9 = 4 dsx1FracIfIndex.2.21 = 13 + dsx1FracIfIndex.2.10 = 4 dsx1FracIfIndex.2.22 = 14 + dsx1FracIfIndex.2.11 = 4 dsx1FracIfIndex.2.23 = 15 + dsx1FracIfIndex.2.12 = 5 dsx1FracIfIndex.2.24 = 16 + + For North American (DS1) interfaces, there are 24 + legal channels, numbered 1 through 24. + + For G.704 interfaces, there are 31 legal channels, + numbered 1 through 31. The channels (1..31) + correspond directly to the equivalently numbered + time-slots." + ::= { ds1 13 } + +dsx1FracEntry OBJECT-TYPE + SYNTAX Dsx1FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the DS1 Fractional table." + INDEX { dsx1FracIndex, dsx1FracNumber } + ::= { dsx1FracTable 1 } + + + +Dsx1FracEntry ::= + SEQUENCE { + dsx1FracIndex INTEGER, + dsx1FracNumber INTEGER, + dsx1FracIfIndex INTEGER + } + +dsx1FracIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The index value that uniquely identifies the + DS1 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 as a dsx1LineIndex + object instance." + ::= { dsx1FracEntry 1 } + +dsx1FracNumber OBJECT-TYPE + SYNTAX INTEGER (1..31) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The channel number for this entry." + ::= { dsx1FracEntry 2 } + +dsx1FracIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..'7fffffff'h) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "An index value that uniquely identifies an + interface. The interface identified by a particular + value of this index is the same interface + as identified by the same value as an ifIndex + object instance. If no interface is currently using + a channel, the value should be zero. If a + single interface occupies more than one time-slot, + that ifIndex value will be found in multiple + time-slots." + ::= { dsx1FracEntry 3 } + + -- DS1 TRAPS + + + + +ds1Traps OBJECT IDENTIFIER ::= { ds1 15 } + +dsx1LineStatusChange NOTIFICATION-TYPE + OBJECTS { dsx1LineStatus, + dsx1LineStatusLastChange } + STATUS current + DESCRIPTION + "A dsx1LineStatusChange trap is sent when the + value of an instance dsx1LineStatus changes. It + can be utilized by an Network Management Station + (NMS) to trigger polls. When the line status + change results from a higher-level line status + change (i.e., DS3), then no traps for the DS1 + are sent." + ::= { ds1Traps 0 1 } + +-- conformance information + +ds1Conformance OBJECT IDENTIFIER ::= { ds1 14 } + +ds1Groups OBJECT IDENTIFIER ::= { ds1Conformance 1 } +ds1Compliances OBJECT IDENTIFIER ::= { ds1Conformance 2 } + +-- compliance statements + +ds1Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for T1 and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + + GROUP ds1FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + OBJECT dsx1LineType + SYNTAX INTEGER { + other(1), + dsx1ESF(2), + dsx1D4(3), + dsx1E1(4), + dsx1E1CRC(5), + dsx1E1MF(6), + dsx1E1CRCMF(7), + dsx1Unframed(8), + dsx1E1Unframed(9), + dsx1DS2M12(10), + dsx1E2(11) + } + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + + + + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3) + } + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + ::= { ds1Compliances 1 } + +ds1MibT1PriCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + + + + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + + + + is not required." + ::= { ds1Compliances 2 } + +ds1MibE1PriCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + + + + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G.704, + Table 5A). It is used to implement + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + ::= { ds1Compliances 3 } + +ds1Ds2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for DS2 + interfaces." + MODULE + MANDATORY-GROUPS { ds1DS2Group } + + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1DS2M12(10), + dsx1E2(11) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for DS2, E2 + interfaces." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + + + ::= { ds1Compliances 4 } + +ds1NCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for T1 and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + + GROUP ds1FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalTrapGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface. If it is + implemented, then ds1NearEndOptionalConfigGroup + should also be implemented." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is recommended for + all systems that attach to a DS1 interface and + implement ds1NearEndOptionalTrapGroup." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + + + OBJECT dsx1LineType + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + + + + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out is not + required." + ::= { ds1Compliances 5 } + +ds1MibT1PriNCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + + + + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + is not required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 6 } + +ds1MibE1PriNCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + + + + MODULE + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G704, + Table 5A). It is used to implement + + + + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 7 } + +ds1J1Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for T1, J1, and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + + GROUP ds1FarEndNGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalTrapGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface. If it is + + + + implemented, then ds1NearEndOptionalConfigGroup + should also be implemented." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is recommended for + all systems that attach to a DS1 interface and + implement ds1NearEndOptionalTrapGroup." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + OBJECT dsx1LineType + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + + + + DESCRIPTION + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out is not + required." + + OBJECT dsx1LineImpedance + MIN-ACCESS read-only + DESCRIPTION + "The ability to set line impedance is not + + + + required." + ::= { ds1Compliances 8 } + +ds1NMibT1PriNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + + + + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + is not required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 9 } + +ds1NMibE1PriNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + + + + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G704, + Table 5A). It is used to implement + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + + + + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + + OBJECT dsx1LineImpedance + MIN-ACCESS read-only + DESCRIPTION + "The ability to set line impedance is not + required." + ::= { ds1Compliances 10 } + +-- units of conformance + +ds1NearEndConfigGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 1 } + + + + +ds1NearEndStatisticsGroup OBJECT-GROUP + OBJECTS { dsx1CurrentIndex, + dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentSEFSs, + dsx1CurrentUASs, + dsx1CurrentCSSs, + dsx1CurrentPCVs, + dsx1CurrentLESs, + dsx1CurrentBESs, + dsx1CurrentDMs, + dsx1CurrentLCVs, + dsx1IntervalIndex, + dsx1IntervalNumber, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalSEFSs, + dsx1IntervalUASs, + dsx1IntervalCSSs, + dsx1IntervalPCVs, + dsx1IntervalLESs, + dsx1IntervalBESs, + dsx1IntervalDMs, + dsx1IntervalLCVs, + dsx1IntervalValidData, + dsx1TotalIndex, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalSEFSs, + dsx1TotalUASs, + dsx1TotalCSSs, + dsx1TotalPCVs, + dsx1TotalLESs, + dsx1TotalBESs, + dsx1TotalDMs, + dsx1TotalLCVs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS1 interfaces." + ::= { ds1Groups 2 } + +ds1FarEndGroup OBJECT-GROUP + OBJECTS { dsx1FarEndCurrentIndex, + dsx1FarEndTimeElapsed, + dsx1FarEndValidIntervals, + dsx1FarEndCurrentESs, + dsx1FarEndCurrentSESs, + + + + dsx1FarEndCurrentSEFSs, + dsx1FarEndCurrentUASs, + dsx1FarEndCurrentCSSs, + dsx1FarEndCurrentLESs, + dsx1FarEndCurrentPCVs, + dsx1FarEndCurrentBESs, + dsx1FarEndCurrentDMs, + dsx1FarEndInvalidIntervals, + dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber, + dsx1FarEndIntervalESs, + dsx1FarEndIntervalSESs, + dsx1FarEndIntervalSEFSs, + dsx1FarEndIntervalUASs, + dsx1FarEndIntervalCSSs, + dsx1FarEndIntervalLESs, + dsx1FarEndIntervalPCVs, + dsx1FarEndIntervalBESs, + dsx1FarEndIntervalDMs, + dsx1FarEndIntervalValidData, + dsx1FarEndTotalIndex, + dsx1FarEndTotalESs, + dsx1FarEndTotalSESs, + dsx1FarEndTotalSEFSs, + dsx1FarEndTotalUASs, + dsx1FarEndTotalCSSs, + dsx1FarEndTotalLESs, + dsx1FarEndTotalPCVs, + dsx1FarEndTotalBESs, + dsx1FarEndTotalDMs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information." + ::= { ds1Groups 3 } + +ds1DeprecatedGroup OBJECT-GROUP + OBJECTS { dsx1IfIndex, + dsx1FracIndex, + dsx1FracNumber, + dsx1FracIfIndex } + STATUS deprecated + DESCRIPTION + "A collection of obsolete objects that may be + implemented for backwards compatibility." + ::= { ds1Groups 4 } + +ds1NearEndOptionalConfigGroup OBJECT-GROUP + + + + OBJECTS { dsx1LineStatusLastChange, + dsx1LineStatusChangeTrapEnable } + + STATUS current + DESCRIPTION + "A collection of objects that may be implemented + on DS1 and DS2 interfaces." + ::= { ds1Groups 5 } + +ds1DS2Group OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Channelization } + STATUS current + DESCRIPTION + "A collection of objects providing information + about DS2 (6,312 kbps) and E2 (8,448 kbps) + systems." + ::= { ds1Groups 6 } + +ds1TransStatsGroup OBJECT-GROUP + OBJECTS { dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentUASs, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalUASs, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalUASs } + STATUS current + DESCRIPTION + "A collection of objects that are the + statistics that can be collected from a DS1 + interface that is running transparent or unframed + lineType. Statistics not in this list should + return noSuchInstance." + ::= { ds1Groups 7 } + +ds1NearEndOptionalTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { dsx1LineStatusChange } + STATUS current + DESCRIPTION + + + + "A collection of notifications that may be + implemented on DS1 and DS2 interfaces." + ::= { ds1Groups 8 } + +ds1ChanMappingGroup OBJECT-GROUP + OBJECTS { dsx1ChanMappedIfIndex } + STATUS current + DESCRIPTION + "A collection of objects that give a mapping of + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex." + ::= { ds1Groups 9 } + +ds1NearEndConfigurationGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization, + dsx1LineMode, + dsx1LineBuildOut } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 10 } + +ds1NearEndCfgGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + + + + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization, + dsx1LineMode, + dsx1LineBuildOut, + dsx1LineImpedance } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 11 } + +ds1NearEndStatGroup OBJECT-GROUP + OBJECTS { dsx1CurrentIndex, + dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentSEFSs, + dsx1CurrentUASs, + dsx1CurrentCSSs, + dsx1CurrentPCVs, + dsx1CurrentLESs, + dsx1CurrentBESs, + dsx1CurrentLCVs, + dsx1IntervalIndex, + dsx1IntervalNumber, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalSEFSs, + dsx1IntervalUASs, + dsx1IntervalCSSs, + dsx1IntervalPCVs, + dsx1IntervalLESs, + dsx1IntervalBESs, + dsx1IntervalLCVs, + dsx1IntervalValidData, + dsx1TotalIndex, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalSEFSs, + dsx1TotalUASs, + dsx1TotalCSSs, + dsx1TotalPCVs, + dsx1TotalLESs, + + + + dsx1TotalBESs, + dsx1TotalLCVs } + STATUS current + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS1 interfaces." + ::= { ds1Groups 12 } + +ds1FarEndNGroup OBJECT-GROUP + OBJECTS { dsx1FarEndCurrentIndex, + dsx1FarEndTimeElapsed, + dsx1FarEndValidIntervals, + dsx1FarEndCurrentESs, + dsx1FarEndCurrentSESs, + dsx1FarEndCurrentSEFSs, + dsx1FarEndCurrentUASs, + dsx1FarEndCurrentCSSs, + dsx1FarEndCurrentLESs, + dsx1FarEndCurrentPCVs, + dsx1FarEndCurrentBESs, + dsx1FarEndInvalidIntervals, + dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber, + dsx1FarEndIntervalESs, + dsx1FarEndIntervalSESs, + dsx1FarEndIntervalSEFSs, + dsx1FarEndIntervalUASs, + dsx1FarEndIntervalCSSs, + dsx1FarEndIntervalLESs, + dsx1FarEndIntervalPCVs, + dsx1FarEndIntervalBESs, + dsx1FarEndIntervalValidData, + dsx1FarEndTotalIndex, + dsx1FarEndTotalESs, + dsx1FarEndTotalSESs, + dsx1FarEndTotalSEFSs, + dsx1FarEndTotalUASs, + dsx1FarEndTotalCSSs, + dsx1FarEndTotalLESs, + dsx1FarEndTotalPCVs, + dsx1FarEndTotalBESs} + STATUS current + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information." + ::= { ds1Groups 13 } +END diff --git a/mibs/ietf/DS3-MIB b/mibs/ietf/DS3-MIB new file mode 100644 index 0000000..6f82203 --- /dev/null +++ b/mibs/ietf/DS3-MIB @@ -0,0 +1,1894 @@ +DS3-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI -- [RFC2578] + DisplayString, TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndex + FROM IF-MIB -- [RFC2863] + PerfCurrentCount, PerfIntervalCount, + PerfTotalCount + FROM PerfHist-TC-MIB; -- [RFC3593] + + + + +ds3 MODULE-IDENTITY + LAST-UPDATED "200409080000Z" -- September 08, 2004 + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Orly Nicklass + + Postal: RAD Data Communications, Ltd. + Ziv Tower, 24 Roul Walenberg + Tel Aviv, Israel, 69719 + + Tel: +9723 765 9969 + E-mail: orly_n@rad.com" + + DESCRIPTION + "The is the MIB module that describes + DS3 and E3 interfaces objects. + + Copyright (c) The Internet Society (2004). This + version of this MIB module is part of RFC 3896; + see the RFC itself for full legal notices." + + REVISION "200409080000Z" -- September 08, 2004 + + DESCRIPTION + "The RFC 3896 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 2496 are as follows: + + (1) The dsx3FracIfIndex SYNTAX matches the description range. + + (2) Reference was added to Circuit Identifier object. + + (3) Usage of ifStackTable section was updated. + + (4) Align the DESCRIPTION clauses of few statistic objects with + thenear end definition, the far end definition and with + RFC 3593. + + (5) Add new value, dsx3M13, to dsx3LineType." + + REVISION "199808012130Z" + + + + DESCRIPTION + "The RFC 2496 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 1407 are as follows: + + (1) The Fractional Table has been deprecated. + + (2) This document uses SMIv2. + + (3) Values are given for ifTable and ifXTable. + + (4) Example usage of ifStackTable is included. + + (5) dsx3IfIndex has been deprecated. + + (6) The definition of valid intervals has been clarified + for the case where the agent proxied for other devices. + In particular, the treatment of missing intervals has + been clarified. + + (7) An inward loopback has been added. + + (8) Additional lineStatus bits have been added for Near End + in Unavailable Signal State, Carrier Equipment Out of + Service. + + (9) A read-write line Length object has been added. + + (10) Added a lineStatus last change, trap and enabler. + + (11) Textual Conventions for statistics objects have + been used. + + (12) A new object, dsx3LoopbackStatus, has been introduced to + reflect the loopbacks established on a DS3/E3 interface + and the source to the requests. dsx3LoopbackConfig + continues to be the desired loopback state while + dsx3LoopbackStatus reflects the actual state. + + (13) A dual loopback has been added to allow the setting of + an inward loopback and a line loopback at the same time. + + (14) An object has been added to indicated whether or not + this is a channelized DS3/E3. + + (15) A new object has been added to indicate which DS1 is to + set for remote loopback." + + + + + REVISION "199301252028Z" + DESCRIPTION + "Initial version, published as RFC 1407." + ::= { transmission 30 } + +-- The DS3/E3 Near End Group + +-- The DS3/E3 Near End Group consists of four tables: +-- DS3/E3 Configuration +-- DS3/E3 Current +-- DS3/E3 Interval +-- DS3/E3 Total + +-- the DS3/E3 Configuration Table + +dsx3ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Configuration table." + ::= { ds3 5 } + +dsx3ConfigEntry OBJECT-TYPE + SYNTAX Dsx3ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Configuration table." + INDEX { dsx3LineIndex } + ::= { dsx3ConfigTable 1 } + +Dsx3ConfigEntry ::= + SEQUENCE { + dsx3LineIndex InterfaceIndex, + dsx3IfIndex InterfaceIndex, + dsx3TimeElapsed INTEGER, + dsx3ValidIntervals INTEGER, + dsx3LineType INTEGER, + dsx3LineCoding INTEGER, + dsx3SendCode INTEGER, + dsx3CircuitIdentifier DisplayString, + dsx3LoopbackConfig INTEGER, + dsx3LineStatus INTEGER, + dsx3TransmitClockSource INTEGER, + dsx3InvalidIntervals INTEGER, + dsx3LineLength INTEGER, + dsx3LineStatusLastChange TimeStamp, + + + + dsx3LineStatusChangeTrapEnable INTEGER, + dsx3LoopbackStatus INTEGER, + dsx3Channelization INTEGER, + dsx3Ds1ForRemoteLoop INTEGER + +} + +dsx3LineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + + STATUS current + DESCRIPTION + "This object should be made equal to ifIndex. The + next paragraph describes its previous usage. + Making the object equal to ifIndex allows proper + use of ifStackTable. + + Previously, this object was the identifier of a + DS3/E3 Interface on a managed device. If there is + an ifEntry that is directly associated with this + and only this DS3/E3 interface, it should have the + same value as ifIndex. Otherwise, number the + dsx3LineIndices with an unique identifier + following the rules of choosing a number that is + greater than ifNumber and numbering the inside + interfaces (e.g., equipment side) with even + numbers and outside interfaces (e.g., network side) + with odd numbers." + ::= { dsx3ConfigEntry 1 } + +dsx3IfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This value for this object is equal to the value + of ifIndex from the Interfaces table of MIB II + (RFC 1213)." + ::= { dsx3ConfigEntry 2 } + +dsx3TimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + + + + beginning of the near end current error- + measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock, + the current interval exceeds the maximum value, + the agent will return the maximum value." + ::= { dsx3ConfigEntry 3 } + +dsx3ValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous near end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15 minute near end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx3ConfigEntry 4 } + +dsx3LineType OBJECT-TYPE + SYNTAX INTEGER { + dsx3other(1), + dsx3M23(2), + dsx3SYNTRAN(3), + dsx3CbitParity(4), + dsx3ClearChannel(5), + e3other(6), + e3Framed(7), + e3Plcp(8), + dsx3M13(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the variety of DS3 C-bit + or E3 application implementing this interface. The + type of interface affects the interpretation of + the usage and error statistics. The rate of DS3 + is 44.736 Mbps and E3 is 34.368 Mbps. The + dsx3ClearChannel value means that the C-bits are + not used except for sending/receiving AIS. The + values, in sequence, describe: + + + + + TITLE: SPECIFICATION: + dsx3M23 ANSI T1.107-1988 + dsx3SYNTRAN ANSI T1.107-1988 + dsx3CbitParity ANSI T1.107a-1990 + dsx3ClearChannel ANSI T1.102-1987 + e3Framed CCITT G.751 + e3Plcp ETSI T/NA(91)18 + dsx3M13 ANSI T1.107a-1990." + + REFERENCE + "American National Standard for telecommunications + - digital hierarchy - + formats specification, ANSI T1.107- 1988. + ANSI T1.107a-1990. + American National Standard for telecommunications + - digital hierarchy - + electrical interfaces, ANSI T1.102- 1987. + CCITT - Digital Multiplex Equipment Operating at + the Third Order Bit Rate of 34 368 Kbit/s and + the Forth Order Bit Rate of 139 264 Kbit/s + and Using Positive Justification, G.751 + European Telecommunications Standards Institute + -- ETS '34M' -- + Metropolitan Area Network Physical + Convergence Layer Procedure for + 34.368 Megabits per Second, T/NA(91)18, + May 1991." + ::= { dsx3ConfigEntry 5 } + +dsx3LineCoding OBJECT-TYPE + SYNTAX INTEGER { + dsx3Other(1), + dsx3B3ZS(2), + e3HDB3(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the variety of Zero Code + Suppression used on this interface, which in turn + affects a number of its characteristics. + dsx3B3ZS and e3HDB3 refer to the use of specified + patterns of normal bits and bipolar violations + which are used to replace sequences of zero bits + of a specified length." + ::= { dsx3ConfigEntry 6 } + +dsx3SendCode OBJECT-TYPE + + + + SYNTAX INTEGER { + dsx3SendNoCode(1), + dsx3SendLineCode(2), + dsx3SendPayloadCode(3), + dsx3SendResetCode(4), + dsx3SendDS1LoopCode(5), + dsx3SendTestPattern(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates what type of code is + being sent across the DS3/E3 interface by the + device. (These are optional for E3 interfaces.) + Setting this variable causes the interface to + begin sending the code requested. + The values mean: + + dsx3SendNoCode + sending looped or normal data + + dsx3SendLineCode + sending a request for a line loopback + + dsx3SendPayloadCode + sending a request for a payload loopback + (i.e., all DS1/E1s in a DS3/E3 frame) + + dsx3SendResetCode + sending a loopback deactivation request + + dsx3SendDS1LoopCode + requesting to loopback a particular DS1/E1 + within a DS3/E3 frame. The DS1/E1 is + indicated in dsx3Ds1ForRemoteLoop. + + dsx3SendTestPattern + sending a test pattern." + ::= { dsx3ConfigEntry 7 } + +dsx3CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + + + + REFERENCE "ITU-T M.1400" + ::= { dsx3ConfigEntry 8 } + +dsx3LoopbackConfig OBJECT-TYPE + SYNTAX INTEGER { + dsx3NoLoop(1), + dsx3PayloadLoop(2), + dsx3LineLoop(3), + dsx3OtherLoop(4), + dsx3InwardLoop(5), + dsx3DualLoop(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable represents the desired loopback + configuration of the DS3/E3 interface. + The values mean: + + dsx3NoLoop + Not in the loopback state. A device that is + not capable of performing a loopback on + the interface shall always return this as + its value. + + dsx3PayloadLoop + The received signal at this interface is looped + through the device. Typically the received signal + is looped back for retransmission after it has + passed through the device's framing function. + + dsx3LineLoop + The received signal at this interface does not + go through the device (minimum penetration) but + is looped back out. + + dsx3OtherLoop + Loopbacks that are not defined here. + + dsx3InwardLoop + The sent signal at this interface is looped back + through the device. + + dsx3DualLoop + Both dsx1LineLoop and dsx1InwardLoop will be + active simultaneously." + ::= { dsx3ConfigEntry 9 } + + + + +dsx3LineStatus OBJECT-TYPE + SYNTAX INTEGER (1..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the Line Status of the + interface. It contains loopback state information + and failure state information. The dsx3LineStatus + is a bit map represented as a sum, therefore, it + can represent multiple failures and a loopback + (see dsx3LoopbackConfig object for the type of + loopback) simultaneously. The dsx3NoAlarm must be + set if and only if no other flag is set. + + If the dsx3loopbackState bit is set, the loopback + in effect can be determined from the + dsx3loopbackConfig object. + The various bit positions are: + 1 dsx3NoAlarm No alarm present + 2 dsx3RcvRAIFailure Receiving Yellow/Remote + Alarm Indication + 4 dsx3XmitRAIAlarm Transmitting Yellow/Remote + Alarm Indication + 8 dsx3RcvAIS Receiving AIS failure state + 16 dsx3XmitAIS Transmitting AIS + 32 dsx3LOF Receiving LOF failure state + 64 dsx3LOS Receiving LOS failure state + 128 dsx3LoopbackState Looping the received signal + 256 dsx3RcvTestCode Receiving a Test Pattern + 512 dsx3OtherFailure any line status not defined + here + 1024 dsx3UnavailSigState Near End in Unavailable + Signal State + 2048 dsx3NetEquipOOS Carrier Equipment Out of + Service" + ::= { dsx3ConfigEntry 10 } + +dsx3TransmitClockSource OBJECT-TYPE + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The source of Transmit Clock. + + + + + loopTiming indicates that the recovered receive + clock is used as the transmit clock. + + localTiming indicates that a local clock source is + used or that an external clock is attached to the + box containing the interface. + + throughTiming indicates that transmit clock is + derived from the recovered receive clock of + another DS3 interface." + ::= { dsx3ConfigEntry 11 } + +dsx3InvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of intervals in the range from 0 to + dsx3ValidIntervals for which no data is available. + This object will typically be zero except in cases + where the data for some intervals are not + available (e.g., in proxy situations)." + ::= { dsx3ConfigEntry 12 } + +dsx3LineLength OBJECT-TYPE + SYNTAX INTEGER (0..64000) + UNITS "meters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the ds3 line in meters. This + object provides information for line build out + circuitry if it exists and can use this object to + adjust the line build out." + ::= { dsx3ConfigEntry 13 } + +dsx3LineStatusLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime object at the + time this DS3/E3 entered its current line status + state. If the current state was entered prior to + the last re-initialization of the proxy-agent, + then this object contains a zero value." + ::= { dsx3ConfigEntry 14 } + + + + +dsx3LineStatusChangeTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether dsx3LineStatusChange traps + should be generated for this interface." + DEFVAL { disabled } + ::= { dsx3ConfigEntry 15 } + +dsx3LoopbackStatus OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the current state of the + loopback on the DS3 interface. It contains + information about loopbacks established by a + manager and remotely from the far end. + + The dsx3LoopbackStatus is a bit map represented as + a sum, therefore is can represent multiple + loopbacks simultaneously. + + The various bit positions are: + 1 dsx3NoLoopback + 2 dsx3NearEndPayloadLoopback + 4 dsx3NearEndLineLoopback + 8 dsx3NearEndOtherLoopback + 16 dsx3NearEndInwardLoopback + 32 dsx3FarEndPayloadLoopback + 64 dsx3FarEndLineLoopback" + ::= { dsx3ConfigEntry 16 } + +dsx3Channelization OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledDs1(2), + enabledDs2(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether this ds3/e3 is channelized or + unchannelized. The value of enabledDs1 indicates + + + + that this is a DS3 channelized into DS1s. The + value of enabledDs3 indicated that this is a DS3 + channelized into DS2s. Setting this object will + cause the creation or deletion of DS2 or DS1 + entries in the ifTable. " + ::= { dsx3ConfigEntry 17 } + +dsx3Ds1ForRemoteLoop OBJECT-TYPE + SYNTAX INTEGER (0..29) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates which DS1/E1 on this DS3/E3 will be + indicated in the remote ds1 loopback request. A + value of 0 means no DS1 will be looped. A value + of 29 means all DS1s/E1s will be looped." + ::= { dsx3ConfigEntry 18 } + +-- the DS3/E3 Current Table + + +dsx3CurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 current table contains various + statistics being collected for the current 15 + minute interval." + ::= { ds3 6 } + +dsx3CurrentEntry OBJECT-TYPE + SYNTAX Dsx3CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Current table." + INDEX { dsx3CurrentIndex } + ::= { dsx3CurrentTable 1 } + +Dsx3CurrentEntry ::= + SEQUENCE { + dsx3CurrentIndex InterfaceIndex, + dsx3CurrentPESs PerfCurrentCount, + dsx3CurrentPSESs PerfCurrentCount, + dsx3CurrentSEFSs PerfCurrentCount, + dsx3CurrentUASs PerfCurrentCount, + dsx3CurrentLCVs PerfCurrentCount, + + + + dsx3CurrentPCVs PerfCurrentCount, + dsx3CurrentLESs PerfCurrentCount, + dsx3CurrentCCVs PerfCurrentCount, + dsx3CurrentCESs PerfCurrentCount, + dsx3CurrentCSESs PerfCurrentCount + } + +dsx3CurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 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 an + dsx3LineIndex object instance." + ::= { dsx3CurrentEntry 1 } + +dsx3CurrentPESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds." + ::= { dsx3CurrentEntry 2 } + +dsx3CurrentPSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds." + ::= { dsx3CurrentEntry 3 } + +dsx3CurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds." + ::= { dsx3CurrentEntry 4 } + + + + +dsx3CurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds." + ::= { dsx3CurrentEntry 5 } + +dsx3CurrentLCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations." + ::= { dsx3CurrentEntry 6 } + +dsx3CurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Coding Violations." + ::= { dsx3CurrentEntry 7 } + +dsx3CurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx3CurrentEntry 8 } + +dsx3CurrentCCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations." + ::= { dsx3CurrentEntry 9 } + +dsx3CurrentCESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of C-bit Errored Seconds." + ::= { dsx3CurrentEntry 10 } + +dsx3CurrentCSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds." + ::= { dsx3CurrentEntry 11 } + +-- the DS3/E3 Interval Table + +dsx3IntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Interval Table contains various + statistics collected by each DS3/E3 Interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15 minute + intervals. Each row in this table represents one + such interval (identified by dsx3IntervalNumber) + and for one specific interface (identified by + dsx3IntervalIndex)." + ::= { ds3 7 } + +dsx3IntervalEntry OBJECT-TYPE + SYNTAX Dsx3IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Interval table." + INDEX { dsx3IntervalIndex, dsx3IntervalNumber } + ::= { dsx3IntervalTable 1 } + +Dsx3IntervalEntry ::= + SEQUENCE { + dsx3IntervalIndex InterfaceIndex, + dsx3IntervalNumber INTEGER, + dsx3IntervalPESs PerfIntervalCount, + dsx3IntervalPSESs PerfIntervalCount, + dsx3IntervalSEFSs PerfIntervalCount, + dsx3IntervalUASs PerfIntervalCount, + dsx3IntervalLCVs PerfIntervalCount, + dsx3IntervalPCVs PerfIntervalCount, + dsx3IntervalLESs PerfIntervalCount, + + + + dsx3IntervalCCVs PerfIntervalCount, + dsx3IntervalCESs PerfIntervalCount, + dsx3IntervalCSESs PerfIntervalCount, + dsx3IntervalValidData TruthValue + } + +dsx3IntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 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 an + dsx3LineIndex object instance." + ::= { dsx3IntervalEntry 1 } + +dsx3IntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15 minute interval and 96 is + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx3IntervalEntry 2 } + +dsx3IntervalPESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds." + ::= { dsx3IntervalEntry 3 } + +dsx3IntervalPSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds." + + + + ::= { dsx3IntervalEntry 4 } + +dsx3IntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds." + ::= { dsx3IntervalEntry 5 } + +dsx3IntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds. This object may decrease if + the occurrence of unavailable seconds occurs across + an interval boundary." + ::= { dsx3IntervalEntry 6 } + +dsx3IntervalLCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations." + ::= { dsx3IntervalEntry 7 } + +dsx3IntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Coding Violations." + ::= { dsx3IntervalEntry 8 } + +dsx3IntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds (BPVs or + illegal zero sequences)." + ::= { dsx3IntervalEntry 9 } + + + + dsx3IntervalCCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations." + ::= { dsx3IntervalEntry 10 } + + dsx3IntervalCESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Errored Seconds." + ::= { dsx3IntervalEntry 11 } + + dsx3IntervalCSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds." + ::= { dsx3IntervalEntry 12 } + + dsx3IntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx3IntervalEntry 13 } + +-- the DS3/E3 Total + +dsx3TotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Total Table contains the cumulative + sum of the various statistics for the 24 hour + period preceding the current interval." + ::= { ds3 8 } + +dsx3TotalEntry OBJECT-TYPE + SYNTAX Dsx3TotalEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Total table." + INDEX { dsx3TotalIndex } + ::= { dsx3TotalTable 1 } + +Dsx3TotalEntry ::= + SEQUENCE { + dsx3TotalIndex InterfaceIndex, + dsx3TotalPESs PerfTotalCount, + dsx3TotalPSESs PerfTotalCount, + dsx3TotalSEFSs PerfTotalCount, + dsx3TotalUASs PerfTotalCount, + dsx3TotalLCVs PerfTotalCount, + dsx3TotalPCVs PerfTotalCount, + dsx3TotalLESs PerfTotalCount, + dsx3TotalCCVs PerfTotalCount, + dsx3TotalCESs PerfTotalCount, + dsx3TotalCSESs PerfTotalCount + } + +dsx3TotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 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 an + dsx3LineIndex object instance." + ::= { dsx3TotalEntry 1 } + +dsx3TotalPESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds, encountered by a DS3 interface in + the previous 24 hour interval. Invalid 15 minute + intervals count as 0." + ::= { dsx3TotalEntry 2 } + +dsx3TotalPSESs OBJECT-TYPE + SYNTAX PerfTotalCount + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds, encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 3 } + +dsx3TotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds, encountered by a + DS3/E3 interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 4 } + +dsx3TotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 5 } + +dsx3TotalLCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations encountered by a DS3/E3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 6 } + +dsx3TotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + + + + Coding Violations, encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3TotalEntry 7 } + +dsx3TotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds (BPVs or + illegal zero sequences) encountered by a DS3/E3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 8 } + +dsx3TotalCCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations encountered + by a DS3 interface in the previous 24 hour + interval. Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 9 } + +dsx3TotalCESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Errored Seconds encountered + by a DS3 interface in the previous 24 hour + interval. Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 10 } + +dsx3TotalCSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds + encountered by a DS3 interface in the previous 24 + hour interval. Invalid 15 minute intervals count + as 0." + ::= { dsx3TotalEntry 11 } + + + + + +-- The DS3 Far End Group + +-- The DS3 Far End Group consists of four tables : +-- DS3 Far End Configuration +-- DS3 Far End Current +-- DS3 Far End Interval +-- DS3 Far End Total + +-- The DS3 Far End Configuration Table + +dsx3FarEndConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Configuration Table contains + configuration information reported in the C-bits + from the remote end." + ::= { ds3 9 } + +dsx3FarEndConfigEntry OBJECT-TYPE + SYNTAX Dsx3FarEndConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Configuration table." + INDEX { dsx3FarEndLineIndex } + ::= { dsx3FarEndConfigTable 1 } + +Dsx3FarEndConfigEntry ::= + SEQUENCE { + dsx3FarEndLineIndex InterfaceIndex, + dsx3FarEndEquipCode DisplayString, + dsx3FarEndLocationIDCode DisplayString, + dsx3FarEndFrameIDCode DisplayString, + dsx3FarEndUnitCode DisplayString, + dsx3FarEndFacilityIDCode DisplayString + } + +dsx3FarEndLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + 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 an dsx3LineIndex object instance." + ::= { dsx3FarEndConfigEntry 1 } + +dsx3FarEndEquipCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Equipment Identification code + that describes the specific piece of equipment. + It is sent within the Path Identification + Message." + ::= { dsx3FarEndConfigEntry 2 } + +dsx3FarEndLocationIDCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..11)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Location Identification code + that describes the specific location of the + equipment. It is sent within the Path + Identification Message." + ::= { dsx3FarEndConfigEntry 3 } + +dsx3FarEndFrameIDCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Frame Identification code + that identifies where the equipment is located + within a building at a given location. It is sent + within the Path Identification Message." + ::= { dsx3FarEndConfigEntry 4 } + +dsx3FarEndUnitCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End code that identifies the + equipment location within a bay. It is sent + within the Path Identification Message." + ::= { dsx3FarEndConfigEntry 5 } + +dsx3FarEndFacilityIDCode OBJECT-TYPE + + + + SYNTAX DisplayString (SIZE (0..38)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This code identifies a specific Far End DS3 path. + It is sent within the Path Identification + Message." + ::= { dsx3FarEndConfigEntry 6 } + +-- The DS3 Far End Current + +dsx3FarEndCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Current table contains various + statistics being collected for the current 15 + minute interval. The statistics are collected + from the far end block error code within the C- + bits." + ::= { ds3 10 } + +dsx3FarEndCurrentEntry OBJECT-TYPE + SYNTAX Dsx3FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Current table." + INDEX { dsx3FarEndCurrentIndex } + ::= { dsx3FarEndCurrentTable 1 } + +Dsx3FarEndCurrentEntry ::= + SEQUENCE { + dsx3FarEndCurrentIndex InterfaceIndex, + dsx3FarEndTimeElapsed INTEGER, + dsx3FarEndValidIntervals INTEGER, + dsx3FarEndCurrentCESs PerfCurrentCount, + dsx3FarEndCurrentCSESs PerfCurrentCount, + dsx3FarEndCurrentCCVs PerfCurrentCount, + dsx3FarEndCurrentUASs PerfCurrentCount, + dsx3FarEndInvalidIntervals INTEGER + } + + dsx3FarEndCurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + + + + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndCurrentEntry 1 } + +dsx3FarEndTimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the far end current error-measurement + period. If, for some reason, such as an adjustment + in the system's time-of-day clock, the current + interval exceeds the maximum value, the agent will + return the maximum value." + ::= { dsx3FarEndCurrentEntry 2 } + +dsx3FarEndValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous far end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15 minute far end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx3FarEndCurrentEntry 3 } + +dsx3FarEndCurrentCESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds." + ::= { dsx3FarEndCurrentEntry 4 } + + + + +dsx3FarEndCurrentCSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds." + ::= { dsx3FarEndCurrentEntry 5 } + +dsx3FarEndCurrentCCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count." + ::= { dsx3FarEndCurrentEntry 6 } + +dsx3FarEndCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds." + ::= { dsx3FarEndCurrentEntry 7 } + +dsx3FarEndInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of intervals in the range from 0 to + dsx3FarEndValidIntervals for which no data is + available. This object will typically be zero + except in cases where the data for some intervals + are not available (e.g., in proxy situations)." + ::= { dsx3FarEndCurrentEntry 8 } + +-- The DS3 Far End Interval Table + +dsx3FarEndIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Interval Table contains various + + + + statistics collected by each DS3 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15 minute + intervals." + ::= { ds3 11 } + +dsx3FarEndIntervalEntry OBJECT-TYPE + SYNTAX Dsx3FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Interval table." + INDEX { dsx3FarEndIntervalIndex, + dsx3FarEndIntervalNumber } + ::= { dsx3FarEndIntervalTable 1 } + +Dsx3FarEndIntervalEntry ::= + SEQUENCE { + dsx3FarEndIntervalIndex InterfaceIndex, + dsx3FarEndIntervalNumber INTEGER, + dsx3FarEndIntervalCESs PerfIntervalCount, + dsx3FarEndIntervalCSESs PerfIntervalCount, + dsx3FarEndIntervalCCVs PerfIntervalCount, + dsx3FarEndIntervalUASs PerfIntervalCount, + dsx3FarEndIntervalValidData TruthValue + } + +dsx3FarEndIntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndIntervalEntry 1 } + +dsx3FarEndIntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15 minute interval and 96 is + + + + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx3FarEndIntervalEntry 2 } + +dsx3FarEndIntervalCESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds encountered by a DS3 + interface in one of the previous 96, individual 15 + minute, intervals. In the case where the agent is + a proxy and data is not available, return + noSuchInstance." + ::= { dsx3FarEndIntervalEntry 3 } + +dsx3FarEndIntervalCSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds." + ::= { dsx3FarEndIntervalEntry 4 } + +dsx3FarEndIntervalCCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count." + ::= { dsx3FarEndIntervalEntry 5 } + +dsx3FarEndIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds." + ::= { dsx3FarEndIntervalEntry 6 } + +dsx3FarEndIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx3FarEndIntervalEntry 7 } + +-- The DS3 Far End Total + +dsx3FarEndTotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Total Table contains the + cumulative sum of the various statistics for the + 24 hour period preceding the current interval." + ::= { ds3 12 } + +dsx3FarEndTotalEntry OBJECT-TYPE + SYNTAX Dsx3FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Total table." + INDEX { dsx3FarEndTotalIndex } + ::= { dsx3FarEndTotalTable 1 } + +Dsx3FarEndTotalEntry ::= + SEQUENCE { + dsx3FarEndTotalIndex InterfaceIndex, + dsx3FarEndTotalCESs PerfTotalCount, + dsx3FarEndTotalCSESs PerfTotalCount, + dsx3FarEndTotalCCVs PerfTotalCount, + dsx3FarEndTotalUASs PerfTotalCount + } + +dsx3FarEndTotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndTotalEntry 1 } + + + +dsx3FarEndTotalCESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 2 } + +dsx3FarEndTotalCSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds encountered by a + DS3 interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 3 } + +dsx3FarEndTotalCCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 4 } + +dsx3FarEndTotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 5 } + +-- the DS3/E3 Fractional Table + +-- This table is deprecated. + + + +dsx3FracTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table is deprecated in favour of using + ifStackTable. + + Implementation of this table was optional. It was + designed for those systems dividing a DS3/E3 into + channels containing different data streams that + are of local interest. + + The DS3/E3 fractional table identifies which + DS3/E3 channels associated with a CSU are being + used to support a logical interface, i.e., an + entry in the interfaces table from the Internet- + standard MIB. + + For example, consider a DS3 device with 4 high + speed links carrying router traffic, a feed for + voice, a feed for video, and a synchronous channel + for a non-routed protocol. We might describe the + allocation of channels, in the dsx3FracTable, as + follows: + dsx3FracIfIndex.2. 1 = 3 dsx3FracIfIndex.2.15 = 4 + dsx3FracIfIndex.2. 2 = 3 dsx3FracIfIndex.2.16 = 6 + dsx3FracIfIndex.2. 3 = 3 dsx3FracIfIndex.2.17 = 6 + dsx3FracIfIndex.2. 4 = 3 dsx3FracIfIndex.2.18 = 6 + dsx3FracIfIndex.2. 5 = 3 dsx3FracIfIndex.2.19 = 6 + dsx3FracIfIndex.2. 6 = 3 dsx3FracIfIndex.2.20 = 6 + dsx3FracIfIndex.2. 7 = 4 dsx3FracIfIndex.2.21 = 6 + dsx3FracIfIndex.2. 8 = 4 dsx3FracIfIndex.2.22 = 6 + dsx3FracIfIndex.2. 9 = 4 dsx3FracIfIndex.2.23 = 6 + dsx3FracIfIndex.2.10 = 4 dsx3FracIfIndex.2.24 = 6 + dsx3FracIfIndex.2.11 = 4 dsx3FracIfIndex.2.25 = 6 + dsx3FracIfIndex.2.12 = 5 dsx3FracIfIndex.2.26 = 6 + dsx3FracIfIndex.2.13 = 5 dsx3FracIfIndex.2.27 = 6 + dsx3FracIfIndex.2.14 = 5 dsx3FracIfIndex.2.28 = 6 + For dsx3M23, dsx3 SYNTRAN, dsx3CbitParity, and + dsx3ClearChannel there are 28 legal channels, + numbered 1 through 28. + + For e3Framed there are 16 legal channels, numbered + 1 through 16. The channels (1..16) correspond + directly to the equivalently numbered time-slots." + ::= { ds3 13 } + + + + +dsx3FracEntry OBJECT-TYPE + SYNTAX Dsx3FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the DS3 Fractional table." + INDEX { dsx3FracIndex, dsx3FracNumber } + ::= { dsx3FracTable 1 } + +Dsx3FracEntry ::= + SEQUENCE { + dsx3FracIndex INTEGER, + dsx3FracNumber INTEGER, + dsx3FracIfIndex INTEGER + } + +dsx3FracIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The index value which uniquely identifies the + DS3 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 an dsx3LineIndex + object instance." + ::= { dsx3FracEntry 1 } + +dsx3FracNumber OBJECT-TYPE + SYNTAX INTEGER (1..31) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The channel number for this entry." + ::= { dsx3FracEntry 2 } + +dsx3FracIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..'7fffffff'h) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "An index value that uniquely identifies an + interface. The interface identified by a + particular value of this index is the same + interface as identified by the same value an + + + + ifIndex object instance. If no interface is + currently using a channel, the value should be + zero. If a single interface occupies more than + one time slot, that ifIndex value will be found + in multiple time slots." + ::= { dsx3FracEntry 3 } + + -- DS3 TRAPS + +ds3Traps OBJECT IDENTIFIER ::= { ds3 15 } + +dsx3LineStatusChange NOTIFICATION-TYPE + OBJECTS { dsx3LineStatus, + dsx3LineStatusLastChange } + STATUS current + DESCRIPTION + "A dsx3LineStatusChange trap is sent when the + value of an instance of dsx3LineStatus changes. It + can be utilized by an NMS to trigger polls. When + the line status change results in a lower level + line status change (i.e., ds1), then no traps for + the lower level are sent." + ::= { ds3Traps 0 1 } + +-- conformance information + +ds3Conformance OBJECT IDENTIFIER ::= { ds3 14 } +ds3Groups OBJECT IDENTIFIER ::= { ds3Conformance 1 } +ds3Compliances OBJECT IDENTIFIER ::= { ds3Conformance 2 } + +-- compliance statements + +ds3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS3/E3 interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds3NearEndConfigGroup, + ds3NearEndStatisticsGroup } + + GROUP ds3FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 Interface. However, + only C-bit Parity and SYNTRAN DS3 applications + have the capability (option) of providing this + information." + GROUP ds3NearEndOptionalTrapGroup + + + + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 Interface. If it is + implemented then ds3NearEndOptionalConfigGroup + should also be implemented." + GROUP ds3NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 interface." + + OBJECT dsx3LineType + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line type is not required." + + OBJECT dsx3LineCoding + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line coding is not + required." + + OBJECT dsx3SendCode + MIN-ACCESS read-only + DESCRIPTION + "Write access for the send code is not required." + + OBJECT dsx3LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "Write access for loopbacks is not required." + + OBJECT dsx3TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "Write access for the transmit clock source is not + required." + + OBJECT dsx3LineLength + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line length is not + required." + + OBJECT dsx3Channelization + MIN-ACCESS read-only + DESCRIPTION + "Write access for the channelization is not + required." + + + + ::= { ds3Compliances 1 } + +-- units of conformance + +ds3NearEndConfigGroup OBJECT-GROUP + OBJECTS { dsx3LineIndex, + dsx3TimeElapsed, + dsx3ValidIntervals, + dsx3LineType, + dsx3LineCoding, + dsx3SendCode, + dsx3CircuitIdentifier, + dsx3LoopbackConfig, + dsx3LineStatus, + dsx3TransmitClockSource, + dsx3InvalidIntervals, + dsx3LineLength, + dsx3LoopbackStatus, + dsx3Channelization, + dsx3Ds1ForRemoteLoop} + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS3/E3 interfaces." + ::= { ds3Groups 1 } + +ds3NearEndStatisticsGroup OBJECT-GROUP + OBJECTS { dsx3CurrentIndex, + dsx3CurrentPESs, + dsx3CurrentPSESs, + dsx3CurrentSEFSs, + dsx3CurrentUASs, + dsx3CurrentLCVs, + dsx3CurrentPCVs, + dsx3CurrentLESs, + dsx3CurrentCCVs, + dsx3CurrentCESs, + dsx3CurrentCSESs, + dsx3IntervalIndex, + dsx3IntervalNumber, + dsx3IntervalPESs, + dsx3IntervalPSESs, + dsx3IntervalSEFSs, + dsx3IntervalUASs, + dsx3IntervalLCVs, + dsx3IntervalPCVs, + dsx3IntervalLESs, + dsx3IntervalCCVs, + + + + dsx3IntervalCESs, + dsx3IntervalCSESs, + dsx3IntervalValidData, + dsx3TotalIndex, + dsx3TotalPESs, + dsx3TotalPSESs, + dsx3TotalSEFSs, + dsx3TotalUASs, + dsx3TotalLCVs, + dsx3TotalPCVs, + dsx3TotalLESs, + dsx3TotalCCVs, + dsx3TotalCESs, + dsx3TotalCSESs } + STATUS current + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS3/E3 interfaces." + ::= { ds3Groups 2 } + +ds3FarEndGroup OBJECT-GROUP + OBJECTS { dsx3FarEndLineIndex, + dsx3FarEndEquipCode, + dsx3FarEndLocationIDCode, + dsx3FarEndFrameIDCode, + dsx3FarEndUnitCode, + dsx3FarEndFacilityIDCode, + dsx3FarEndCurrentIndex, + dsx3FarEndTimeElapsed, + dsx3FarEndValidIntervals, + dsx3FarEndCurrentCESs, + dsx3FarEndCurrentCSESs, + dsx3FarEndCurrentCCVs, + dsx3FarEndCurrentUASs, + dsx3FarEndInvalidIntervals, + dsx3FarEndIntervalIndex, + dsx3FarEndIntervalNumber, + dsx3FarEndIntervalCESs, + dsx3FarEndIntervalCSESs, + dsx3FarEndIntervalCCVs, + dsx3FarEndIntervalUASs, + dsx3FarEndIntervalValidData, + dsx3FarEndTotalIndex, + dsx3FarEndTotalCESs, + dsx3FarEndTotalCSESs, + dsx3FarEndTotalCCVs, + dsx3FarEndTotalUASs } + STATUS current + + + + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information + applicable to C-bit Parity and SYNTRAN DS3 + interfaces." + ::= { ds3Groups 3 } + +ds3DeprecatedGroup OBJECT-GROUP + + OBJECTS { dsx3IfIndex, + dsx3FracIndex, + dsx3FracNumber, + dsx3FracIfIndex } + STATUS deprecated + DESCRIPTION + "A collection of obsolete objects that may be + implemented for backwards compatibility." + ::= { ds3Groups 4 } + +ds3NearEndOptionalConfigGroup OBJECT-GROUP + OBJECTS { dsx3LineStatusLastChange, + dsx3LineStatusChangeTrapEnable } + + STATUS current + DESCRIPTION + "A collection of objects that may be implemented + on DS3/E3 interfaces." + ::= { ds3Groups 5 } + +ds3NearEndOptionalTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { dsx3LineStatusChange } + STATUS current + DESCRIPTION + "A collection of notifications that may be + implemented on DS3/E3 interfaces." + ::= { ds3Groups 6 } + +END diff --git a/mibs/ietf/DSA-MIB b/mibs/ietf/DSA-MIB new file mode 100644 index 0000000..c4b86fc --- /dev/null +++ b/mibs/ietf/DSA-MIB @@ -0,0 +1,653 @@ +DSA-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + DisplayString, TimeStamp, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2 + FROM RFC1213-MIB + applIndex, DistinguishedName + FROM NETWORK-SERVICES-MIB; + + dsaMIB MODULE-IDENTITY + LAST-UPDATED "9311250000Z" + ORGANIZATION "IETF Mail and Directory Management Working + Group" + CONTACT-INFO + " Glenn Mansfield + + Postal: AIC Systems Laboratory + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, 989-32 + JP + + Tel: +81 22 279 3310 + Fax: +81 22 279 3640 + E-Mail: glenn@aic.co.jp" + DESCRIPTION + " The MIB module for monitoring Directory System Agents." + ::= { mib-2 29 } + + + dsaOpsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + DSA operations." + ::= {dsaMIB 1} + + dsaOpsEntry OBJECT-TYPE + SYNTAX DsaOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing operations related statistics + for a DSA." + INDEX { applIndex } + ::= {dsaOpsTable 1} + + DsaOpsEntry ::= SEQUENCE { + + -- Bindings + dsaAnonymousBinds + Counter32, + dsaUnauthBinds + Counter32, + dsaSimpleAuthBinds + Counter32, + dsaStrongAuthBinds + Counter32, + dsaBindSecurityErrors + Counter32, + + -- In-coming operations + + dsaInOps + Counter32, + dsaReadOps + Counter32, + dsaCompareOps + Counter32, + dsaAddEntryOps + Counter32, + dsaRemoveEntryOps + Counter32, + dsaModifyEntryOps + Counter32, + dsaModifyRDNOps + Counter32, + dsaListOps + Counter32, + dsaSearchOps + Counter32, + dsaOneLevelSearchOps + Counter32, + dsaWholeTreeSearchOps + Counter32, + + -- Out going operations + + dsaReferrals + Counter32, + dsaChainings + Counter32, + + -- Errors + + dsaSecurityErrors + Counter32, + dsaErrors + Counter32 + } + + dsaAnonymousBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of anonymous binds to this DSA from DUAs + since application start." + ::= {dsaOpsEntry 1} + + dsaUnauthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of un-authenticated binds to this + DSA since application start." + ::= {dsaOpsEntry 2} + + dsaSimpleAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of binds to this DSA that were authenticated + using simple authentication procedures since + application start." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 8.1.2.1.1." + ::= {dsaOpsEntry 3} + + + dsaStrongAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of binds to this DSA that were authenticated + using the strong authentication procedures since + application start. This includes the binds that were + authenticated using external authentication procedures." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Sections 8.1.2.1.2 & 8.1.2.1.3." + ::= {dsaOpsEntry 4} + + dsaBindSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind operations that have been rejected + by this DSA due to inappropriateAuthentication or + invalidCredentials." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.7.2" + ::= {dsaOpsEntry 5} + + dsaInOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded to this DSA + from DUAs or other DSAs since application + start up." + ::= {dsaOpsEntry 6} + + dsaReadOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of read operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 9.1." + ::= {dsaOpsEntry 7} + + dsaCompareOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of compare operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 9.2." + ::= {dsaOpsEntry 8} + + dsaAddEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of addEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.1." + ::= {dsaOpsEntry 9} + + dsaRemoveEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of removeEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.2." + ::= {dsaOpsEntry 10} + + dsaModifyEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.3." + ::= {dsaOpsEntry 11} + + dsaModifyRDNOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyRDN operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.4." + ::= {dsaOpsEntry 12} + + dsaListOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of list operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.1." + ::= {dsaOpsEntry 13} + + dsaSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of search operations- baseObjectSearches, + oneLevelSearches and subTreeSearches, serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2." + ::= {dsaOpsEntry 14} + + dsaOneLevelSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of oneLevelSearch operations serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2.2.2." + ::= {dsaOpsEntry 15} + + dsaWholeTreeSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of wholeTreeSearch operations serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2.2.2." + ::= {dsaOpsEntry 16} + + dsaReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of referrals returned by this DSA in response + to requests for operations since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.6." + ::= {dsaOpsEntry 17} + + dsaChainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded by this DSA + to other DSAs since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.518, 1988: + Section 14." + ::= {dsaOpsEntry 18} + + dsaSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded to this DSA + which did not meet the security requirements. " + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.7." + ::= {dsaOpsEntry 19} + + dsaErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that could not be serviced + due to errors other than security errors, and + referrals. + A partially serviced operation will not be counted + as an error. + The errors include NameErrors, UpdateErrors, Attribute + errors and ServiceErrors." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Sections 12.4, 12.5, 12.8 & 12.9." + ::= {dsaOpsEntry 20} + + -- Entry statistics/Cache performance + dsaEntriesTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaEntriesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + entry statistics and cache performance of the DSAs." + ::= {dsaMIB 2} + + dsaEntriesEntry OBJECT-TYPE + SYNTAX DsaEntriesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing statistics pertaining to entries + held by a DSA." + INDEX { applIndex } + ::= {dsaEntriesTable 1} + + DsaEntriesEntry ::= SEQUENCE { + dsaMasterEntries + Gauge32, + dsaCopyEntries + Gauge32, + dsaCacheEntries + Gauge32, + dsaCacheHits + Counter32, + dsaSlaveHits + Counter32 + } + + dsaMasterEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries mastered in the DSA." + ::= {dsaEntriesEntry 1} + + dsaCopyEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries for which systematic (slave) + copies are maintained in the DSA." + ::= {dsaEntriesEntry 2} + + dsaCacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries cached (non-systematic copies) in + the DSA. This will include the entries that are + cached partially. The negative cache is not counted." + ::= {dsaEntriesEntry 3} + + dsaCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held cache since application + startup." + ::= {dsaEntriesEntry 4} + + dsaSlaveHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held object replications [ shadow + entries] since application startup." + ::= {dsaEntriesEntry 5} + + + -- The dsaIntTable contains statistical data on the peer DSAs + -- with which the monitored DSAs [attempt to] interact. This + -- table will provide a useful insight into the effect of + -- neighbours on the DSA performance. + -- The table keeps track of the last "N" DSAs with which the + -- monitored DSAs has interacted [attempted to interact], + -- where "N" is a locally-defined constant. + + dsaIntTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Each row of this table contains some details + related to the history of the interaction + of the monitored DSAs with their respective + peer DSAs." + ::= { dsaMIB 3 } + + dsaIntEntry OBJECT-TYPE + SYNTAX DsaIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing interaction details of a DSA + with a peer DSA." + INDEX { applIndex,dsaIntIndex } + ::= { dsaIntTable 1 } + + DsaIntEntry ::= SEQUENCE { + dsaIntIndex + INTEGER, + dsaName + DistinguishedName, + dsaTimeOfCreation + TimeStamp, + dsaTimeOfLastAttempt + TimeStamp, + dsaTimeOfLastSuccess + TimeStamp, + dsaFailuresSinceLastSuccess + Counter32, + dsaFailures + Counter32, + dsaSuccesses + Counter32 + } + + dsaIntIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Together with applIndex it forms the unique key to + identify the conceptual row which contains useful info + on the (attempted) interaction between the DSA (referred + to by applIndex) and a peer DSA." + ::= {dsaIntEntry 1} + + dsaName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Distinguished Name of the peer DSA to which this + entry pertains." + ::= {dsaIntEntry 2} + + dsaTimeOfCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when this row was created. + If the entry was created before the network management + subsystem was initialized, this object will contain + a value of zero." + ::= {dsaIntEntry 3} + + dsaTimeOfLastAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt was made + to contact this DSA. If the last attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsaIntEntry 4} + + dsaTimeOfLastSuccess OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt made to + contact this DSA was successful. If there have + been no successful attempts this entry will have a value + of zero. If the last successful attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsaIntEntry 5} + + dsaFailuresSinceLastSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of failures since the last time an + attempt to contact this DSA was successful. If + there has been no successful attempts, this counter + will contain the number of failures since this entry + was created." + ::= {dsaIntEntry 6} + + dsaFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative failures since the creation of + this entry." + ::= {dsaIntEntry 7} + + dsaSuccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative successes since the creation of + this entry." + ::= {dsaIntEntry 8} + + + -- Conformance information + + dsaConformance OBJECT IDENTIFIER ::= { dsaMIB 4 } + + dsaGroups OBJECT IDENTIFIER ::= { dsaConformance 1 } + dsaCompliances OBJECT IDENTIFIER ::= { dsaConformance 2 } + + -- Compliance statements + + dsaOpsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring + DSA operations." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup } + + ::= { dsaCompliances 1 } + + dsaEntryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring + DSA operations, entry statistics and cache + performance." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup,dsaEntryGroup } + ::= { dsaCompliances 2 } + + dsaIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring DSA + operations and the interaction of the DSA with + peer DSAs." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup, dsaIntGroup } + + ::= { dsaCompliances 3 } + + + -- Units of conformance + + dsaOpsGroup OBJECT-GROUP + OBJECTS { + dsaAnonymousBinds, dsaUnauthBinds, dsaSimpleAuthBinds, + dsaStrongAuthBinds, dsaBindSecurityErrors,dsaInOps, + dsaReadOps, dsaCompareOps, dsaAddEntryOps, + dsaRemoveEntryOps, dsaModifyEntryOps, dsaModifyRDNOps, + dsaListOps, dsaSearchOps, dsaOneLevelSearchOps, + dsaWholeTreeSearchOps,dsaReferrals, dsaChainings, + dsaSecurityErrors, dsaErrors} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA + operations." + ::= { dsaGroups 1 } + + dsaEntryGroup OBJECT-GROUP + OBJECTS {dsaMasterEntries, dsaCopyEntries, dsaCacheEntries, + dsaCacheHits, dsaSlaveHits} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA + entry statistics and cache performance." + ::= { dsaGroups 2 } + + dsaIntGroup OBJECT-GROUP + OBJECTS { + dsaName, dsaTimeOfCreation, dsaTimeOfLastAttempt, + dsaTimeOfLastSuccess,dsaFailuresSinceLastSuccess,dsaFailures, + dsaSuccesses} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA's + interaction with peer DSAs." + ::= { dsaGroups 3 } + + +END diff --git a/mibs/ietf/DSMON-MIB b/mibs/ietf/DSMON-MIB new file mode 100644 index 0000000..4b5706f --- /dev/null +++ b/mibs/ietf/DSMON-MIB @@ -0,0 +1,4715 @@ +DSMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Counter32, Gauge32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, TimeStamp, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC + OwnerString, rmon + FROM RMON-MIB + protocolDirLocalIndex, LastCreateTime, + DataSource, ZeroBasedCounter32, TimeFilter + FROM RMON2-MIB + CounterBasedGauge64, ZeroBasedCounter64 + FROM HCNUM-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + Dscp + FROM DIFFSERV-DSCP-TC; + +dsmonMIB MODULE-IDENTITY + LAST-UPDATED "200205310000Z" + ORGANIZATION "IETF RMONMIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + RMONMIB WG Chair and DSMON MIB Editor + + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Tel: +1 408 527-3711 + E-mail: abierman@cisco.com + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/rmonmib " + DESCRIPTION + "This module defines Remote Monitoring MIB extensions for + Differentiated Services enabled networks. + + RMON DIFFSERV DSCP statistics + * Per Counter Aggregation Group + * Per Protocol Per Counter Aggregation Group + * Per Counter Aggregation Group Per Host + + + + * Per Counter Aggregation Group Per Host-Pair + + In order to maintain the RMON 'look-and-feel' and semantic + consistency, some of the text from the RMON-2 and HC-RMON + MIBs by Steve Waldbusser has been adapted for use in this + MIB." + REVISION "200205310000Z" + DESCRIPTION + "Initial version of the DSMON MIB module. This version + published as RFC 3287." + ::= { rmon 26 } + + +dsmonObjects OBJECT IDENTIFIER ::= { dsmonMIB 1 } +dsmonNotifications OBJECT IDENTIFIER ::= { dsmonMIB 2 } +dsmonConformance OBJECT IDENTIFIER ::= { dsmonMIB 3 } + +dsmonAggObjects OBJECT IDENTIFIER ::= { dsmonObjects 1 } +dsmonStatsObjects OBJECT IDENTIFIER ::= { dsmonObjects 2 } +dsmonPdistObjects OBJECT IDENTIFIER ::= { dsmonObjects 3 } +dsmonHostObjects OBJECT IDENTIFIER ::= { dsmonObjects 4 } +dsmonCapsObjects OBJECT IDENTIFIER ::= { dsmonObjects 5 } +dsmonMatrixObjects OBJECT IDENTIFIER ::= { dsmonObjects 6 } + +-- +-- Textual Convention to define a +-- DSMON Counter Aggregation Group Index +-- + +DsmonCounterAggGroupIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes a data type which identifies a DSMON + counter aggregation group, which is an arbitrary grouping of + conceptual counters, for monitoring purposes only. The + range for this data type begins with zero (instead of + one), to allow for a direct mapping between counter + indexing schemes that start at zero (e.g. DSCP values in + packets) and counter aggregation group values." + SYNTAX Integer32 (0..2147483647) + +-- +-- Textual Convention to define a +-- DSMON Counter Aggregation Profile Index +-- + +DsmonCounterAggProfileIndex ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "This TC describes a data type which identifies a DSMON + counter aggregation profile, which is a set of counter + aggregation group assignments for each of the 64 DSCP + values, for a particular statistical collection." + SYNTAX Integer32 (1..2147483647) + + +-- *********************************************************** +-- * * +-- * D S M O N C A P A B I L I T I E S * +-- * * +-- *********************************************************** + +dsmonCapabilities OBJECT-TYPE + SYNTAX BITS { + dsmonCounterAggControl(0), + dsmonStats(1), + dsmonStatsOvfl(2), + dsmonStatsHC(3), + dsmonPdist(4), + dsmonPdistOvfl(5), + dsmonPdistHC(6), + dsmonHost(7), + dsmonHostOvfl(8), + dsmonHostHC(9), + dsmonCaps(10), + dsmonMatrix(11), + dsmonMatrixOvfl(12), + dsmonMatrixHC(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object provides an indication of the DSMON groups + supported by the agent. If a bit is set, then the agent + implements all of the objects in the DSMON object group, + where bit 'n' represents the MIB group identified by the + OBJECT IDENTIFIER value { dsmonGroups n+1 }." + ::= { dsmonCapsObjects 1 } + + +-- *********************************************************** +-- * * +-- * A G G R E G A T I O N C O N T R O L G R O U P S * +-- * * +-- *********************************************************** + + + + +dsmonMaxAggGroups OBJECT-TYPE + SYNTAX Integer32 (2..64) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of counter aggregation groups that this + agent can support. The agent will allow this number of + distinct groups to be configured in the + dsmonAggProfileTable, numbered from '0' to + 'dsmonMaxAggGroups - 1', for each counter aggregation + profile entry supported by the agent. + + The agent MUST NOT lower this value during system operation, + and SHOULD set this object to an appropriate value during + system initialization." + ::= { dsmonAggObjects 1 } + +dsmonAggControlLocked OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the setup of counter aggregation groups for this + agent. + + If this object contains the value 'true', then write access + to the objects in the dsmonAggControlTable (except the + dsmonAggControlOwner object), dsmonAggProfileTable, and + dsmonAggGroupTable is not permitted, and data collection is + possible. This object only controls write access to these + MIB objects. The DSMON data collection control tables + (e.g., dsmonHostCtlTable) can be configured at any time, + regardless of the value of this object. + + If this object contains the value 'false', write access to + the objects in the dsmonAggControlTable, + dsmonAggProfileTable, and dsmonAggGroupTable is permitted, + and data collection is not possible. In addition, all + objects in all DSMON data tables (e.g., dsmonStatsTable) + shall be deleted. + + An agent is not required to process SNMP Set Requests for + this object in conjunction with other objects from this MIB. + This is intended to simplify the processing of Set Requests + for tables such as the dsmonAggProfileTable, by eliminating + the possibility that a single Set PDU will contain multiple + varbinds which are in conflict, such as a PDU which both + modifies the dsmonAggProfileTable and locks the + + + + dsmonAggProfileTable at the same time. + + Note that the agent is not required to validate the entire + counter aggregation configuration when an attempt is made to + transition an instance of this object from 'true' to + 'false'. That validation is done if and when a DSMON data + collection is activated. + + An agent is required to reactivate any suspended data + collections when this object transitions to 'true', Each + active data control entry (e.g., dsmonStatsControlEntry), + will be validated with respect to the new counter + aggregation configuration. If the counter aggregation + profile referenced in the data collection is valid, then + that collection will be restarted. Otherwise, the RowStatus + object (e.g., dsmonStatsControlStatus) will be set to + 'notReady' for that collection control entry." + ::= { dsmonAggObjects 2 } + +dsmonAggControlChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times the value of the + dsmonAggControlLocked object has changed. A management + station can use this object to detect if counters in the + DSMON data tables (e.g., dsmonStatsEntry) have been deleted + and recreated between polls. + + This object shall be incremented by one each time the + dsmonAggControlLocked object changes from 'false' to 'true', + or from 'true' to 'false'." + ::= { dsmonAggObjects 3 } + +dsmonAggControlLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the value of sysUpTime at the moment + the dsmonAggControlLocked object was last modified. A + management station can use this object to detect if counters + in the DSMON data tables (e.g., dsmonStatsEntry) have been + deleted and recreated between polls. + + This object shall be updated with the current value of + sysUpTime, if the dsmonAggControlLocked object changes from + + + + 'false' to 'true', or from 'true' to 'false'. + + Upon system initialization, this object shall contain the + value zero." + ::= { dsmonAggObjects 4 } + + +-- +-- Counter Aggregation Control Table +-- + +dsmonAggControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides an overall description and control + point for all dsmonAggProfileEntries with the same + dsmonAggControlIndex value. + + A management application SHOULD create a counter aggregation + profile by first creating and activating an entry in this + table. This will cause the agent to create a set of 64 + dsmonAggProfileEntries on behalf of this control entry. An + application can then set the individual counter aggregation + group assignments for each of the 64 DSCP values, + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table, and + (independently) the number of counter aggregation profiles + which may be applied to a particular data source. In this + case, the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. Otherwise, each + potential counter aggregation group description string + SHOULD contain the empty string." + ::= { dsmonAggObjects 5 } + +dsmonAggControlEntry OBJECT-TYPE + SYNTAX DsmonAggControlEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggControlTable." + INDEX { dsmonAggControlIndex } + ::= { dsmonAggControlTable 1 } + +DsmonAggControlEntry ::= SEQUENCE { + dsmonAggControlIndex DsmonCounterAggProfileIndex, + dsmonAggControlDescr SnmpAdminString, + dsmonAggControlOwner OwnerString, + dsmonAggControlStatus RowStatus +} + +dsmonAggControlIndex OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer index value used to identify the + counter aggregation profile specified by this control + entry." + ::= { dsmonAggControlEntry 1 } + +dsmonAggControlDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned description of the counter + aggregation profile identified by this entry. + + Upon first creation of an instance of this object, the agent + SHOULD set this object to the empty string. If the agent + supports non-volatile storage, then this object SHOULD be + re-initialized with its stored value after a system reboot. + + This object MUST NOT be modified if the associated + dsmonAggControlStatus object is equal to 'active', or the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggControlEntry 2 } + +dsmonAggControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + + + + ::= { dsmonAggControlEntry 3 } + +dsmonAggControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + Upon setting this object to active(1), the agent will create + a complete set of 64 associated entries in the + dsmonAggProfileTable. + + If this object is not equal to active(1), all associated + entries in the dsmonAggProfileTable shall be deleted. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggControlEntry 4 } + +-- +-- Counter Aggregation Profile Table +-- + +dsmonAggProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of counter aggregation profiles for this + agent. For each such profile, every DSCP value MUST be + configured into exactly one counter aggregation group. + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + The agent will create a set of 64 entries in this table + (with the same dsmonAggControlIndex value) when the + associated dsmonAggControlEntry is activated. + + If the agent supports non-volatile configuration of this + table, then upon system initialization, this table SHOULD be + initialized with the saved values." + ::= { dsmonAggObjects 6 } + + + + +dsmonAggProfileEntry OBJECT-TYPE + SYNTAX DsmonAggProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggProfileTable. The + dsmonAggControlIndex value in the index identifies the + dsmonAggControlEntry associated with each entry in this + table." + INDEX { dsmonAggControlIndex, dsmonAggProfileDSCP } + ::= { dsmonAggProfileTable 1 } + +DsmonAggProfileEntry ::= SEQUENCE { + dsmonAggProfileDSCP Dscp, + dsmonAggGroupIndex DsmonCounterAggGroupIndex +} + + +dsmonAggProfileDSCP OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The specific DSCP value for the DSCP counter which is + configured in a counter aggregation group by this entry." + ::= { dsmonAggProfileEntry 1 } + +dsmonAggGroupIndex OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The counter aggregation group which contains this DSCP + value. Upon creation of a new sub-tree (set of 64 entries + with the same dsmonAggControlIndex value) in this table, the + agent SHOULD initialize all related instances of this object + to the value zero. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + DEFVAL { 0 } + ::= { dsmonAggProfileEntry 2 } + + +-- +-- Counter Aggregation Group Table +-- + + + + +dsmonAggGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a description of each counter + aggregation group configured on this system. Note that the + semantics of a particular counter aggregation group are only + relevant within the scope of a particular counter + aggregation profile. + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table, and + (independently) the number of counter aggregation profiles + which may be applied to a particular data source. In this + case, the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]. + + If the agent supports non-volatile configuration of this + table, then upon system initialization, this table SHOULD be + initialized with the saved values. Otherwise, each + potential counter aggregation group description string + SHOULD contain the empty string. + + An agent SHOULD allow entries to be created or modified in + this table, even if the specified dsmonAggControlIndex value + does not identify a valid dsmonAggControlEntry or a complete + set of valid dsmonAggProfileEntries, to reduce row creation + order dependencies." + ::= { dsmonAggObjects 7 } + +dsmonAggGroupEntry OBJECT-TYPE + SYNTAX DsmonAggGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggGroupTable. The + dsmonAggGroupIndex value in the INDEX identifies the counter + aggregation group associated with each entry. + + The dsmonAggControlIndex in the index identifies the counter + aggregation profile associated with each entry, identified + by the dsmonAggControlEntry and dsmonAggProfileEntries with + the same index value. + + + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + The dsmonAggGroupIndex in the index identifies the counter + aggregation group associated with each entry. This object + SHOULD be indexed from zero to 'N', where 'N' is less than + the value of the dsmonMaxAggGroups for this agent." + + INDEX { dsmonAggControlIndex, dsmonAggGroupIndex } + ::= { dsmonAggGroupTable 1 } +DsmonAggGroupEntry ::= SEQUENCE { + dsmonAggGroupDescr SnmpAdminString, + dsmonAggGroupStatus RowStatus +} + +dsmonAggGroupDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned description of the counter + aggregation group identified by this entry. + + Upon first creation of an instance of this object, the agent + SHOULD set this object to the empty string. + + This object MUST NOT be modified if the associated + dsmonAggGroupStatus object is equal to 'active', or the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggGroupEntry 1 } + +dsmonAggGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggGroupEntry 2 } + + + + + + +-- ************************************************************* +-- * * +-- * P E R - D A T A S O U R C E C O L L E C T I O N S * +-- * * +-- ************************************************************* + +-- +-- Per-DataSource Statistics Control Table +-- + +dsmonStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of per data source per counter + aggregation group distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonStatsObjects 1 } + +dsmonStatsControlEntry OBJECT-TYPE + SYNTAX DsmonStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonStatsControlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonStatsControlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonStatsTable to be created and maintained by + the agent." + INDEX { dsmonStatsControlIndex } + ::= { dsmonStatsControlTable 1 } + +DsmonStatsControlEntry ::= SEQUENCE { + dsmonStatsControlIndex Integer32, + + + + dsmonStatsControlDataSource DataSource, + dsmonStatsControlAggProfile DsmonCounterAggProfileIndex, + dsmonStatsControlDroppedFrames Counter32, + dsmonStatsControlCreateTime LastCreateTime, + dsmonStatsControlOwner OwnerString, + dsmonStatsControlStatus RowStatus +} + +dsmonStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this + dsmonStatsControlEntry." + ::= { dsmonStatsControlEntry 1 } + +dsmonStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The data source of this per protocol per counter + aggregation group distribution. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonStatsControlStatus object is equal to active(1)." + ::= { dsmonStatsControlEntry 2 } + +dsmonStatsControlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonStatsControlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonStats collection. In this case, + + + + the associated dsmonStatsControlStatus object will be + changed to the 'notReady' state, and data collection will + not occur on behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonStatsControlStatus object is equal to active(1)." + ::= { dsmonStatsControlEntry 3 } + +dsmonStatsControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { dsmonStatsControlEntry 4 } + +dsmonStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + detect if the table has been deleted and recreated between + polls." + ::= { dsmonStatsControlEntry 5 } + +dsmonStatsControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonStatsControlEntry 6 } + +dsmonStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonStatsTable shall be deleted." + ::= { dsmonStatsControlEntry 7 } + +-- +-- Per-DataSource Statistics Table +-- + +dsmonStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on counter aggregation group usage + for each monitored data source. + + The following table defines per counter aggregation group + statistics for full and/or half-duplex links as well as high + capacity links. + + For half-duplex links, or full-duplex-capable links + operating in half-duplex mode, the dsmonStatsIn* objects + shall be used and the dsmonStatsOut* objects will not + increment. + + For full-duplex links, the dsmonStatsOut* objects will be + present. Whenever possible, the probe SHOULD count packets + moving away from the closest terminating equipment as output + packets. Failing that, the probe SHOULD count packets + moving away from the DTE as output packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted and the agent + will not process packets on behalf of any + + + + dsmonStatsControlEntry." + ::= { dsmonStatsObjects 2 } + +dsmonStatsEntry OBJECT-TYPE + SYNTAX DsmonStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on Differentiated Services DSCP + usage, containing inbound and outbound packet and octet + counters for each counter aggregation group configured for + collection. + + The dsmonStatsControlIndex value in the index identifies the + dsmonStatsControlEntry on whose behalf this entry was + created. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry for that DSCP value. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + An example of the indexing of this entry is + dsmonStatsOutPkts.1.16" + INDEX { dsmonStatsControlIndex, dsmonAggGroupIndex } + ::= { dsmonStatsTable 1 } + +DsmonStatsEntry ::= SEQUENCE { + dsmonStatsInPkts ZeroBasedCounter32, + dsmonStatsInOctets ZeroBasedCounter32, + dsmonStatsInOvflPkts ZeroBasedCounter32, + dsmonStatsInOvflOctets ZeroBasedCounter32, + dsmonStatsInHCPkts ZeroBasedCounter64, + dsmonStatsInHCOctets ZeroBasedCounter64, + dsmonStatsOutPkts ZeroBasedCounter32, + dsmonStatsOutOctets ZeroBasedCounter32, + dsmonStatsOutOvflPkts ZeroBasedCounter32, + dsmonStatsOutOvflOctets ZeroBasedCounter32, + dsmonStatsOutHCPkts ZeroBasedCounter64, + dsmonStatsOutHCOctets ZeroBasedCounter64 +} + +dsmonStatsInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets using one of the DSCP values in the + indicated counter aggregation group, received on a half- + duplex link or on the inbound connection of a full-duplex + link." + ::= { dsmonStatsEntry 1 } + +dsmonStatsInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { dsmonStatsEntry 2 } + +dsmonStatsInOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsInPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsInHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 3 } + +dsmonStatsInOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsInOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsInHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 4 } + +dsmonStatsInHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The 64-bit version of the dsmonStatsInPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 5 } + +dsmonStatsInHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsInOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 6 } + +dsmonStatsOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets using one of the DSCP values in the + indicated counter aggregation group, received on a full- + duplex link in the direction of the network." + ::= { dsmonStatsEntry 7 } + +dsmonStatsOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, received + on a full-duplex link in the direction of the network." + ::= { dsmonStatsEntry 8 } + +dsmonStatsOutOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The number of times the associated dsmonStatsOutPkts + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsOutHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 9 } + +dsmonStatsOutOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsOutOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsOutHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 10 } + +dsmonStatsOutHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsOutPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 11 } + +dsmonStatsOutHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsOutOctets object. + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 12 } + + +-- *********************************************************** +-- * * +-- * P E R - P R O T O C O L C O L L E C T I O N S * +-- * * +-- *********************************************************** + + + +-- +-- DSCP Per-Protocol Statistics Control Table +-- + +dsmonPdistCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of per application per counter + aggregation group distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonPdistObjects 1 } + +dsmonPdistCtlEntry OBJECT-TYPE + SYNTAX DsmonPdistCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonPdistCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonPdistCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonPdistStatsTable to be created and maintained + by the agent." + INDEX { dsmonPdistCtlIndex } + ::= { dsmonPdistCtlTable 1 } + +DsmonPdistCtlEntry ::= SEQUENCE { + dsmonPdistCtlIndex Integer32, + dsmonPdistCtlDataSource DataSource, + dsmonPdistCtlAggProfile DsmonCounterAggProfileIndex, + dsmonPdistCtlMaxDesiredEntries Integer32, + dsmonPdistCtlDroppedFrames Counter32, + dsmonPdistCtlInserts Counter32, + dsmonPdistCtlDeletes Counter32, + + + + dsmonPdistCtlCreateTime LastCreateTime, + dsmonPdistCtlOwner OwnerString, + dsmonPdistCtlStatus RowStatus +} + +dsmonPdistCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this dsmonPdistCtlEntry." + ::= { dsmonPdistCtlEntry 1 } + +dsmonPdistCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this per protocol counter + aggregation group distribution. + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 2 } + +dsmonPdistCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonPdistCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonPdist collection. In this case, + the associated dsmonPdistCtlStatus object will be changed to + the 'notReady' state, and data collection will not occur on + behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + + + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 3 } + +dsmonPdistCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonPdistStatsTable on behalf of this control entry. The + probe will not create more than this number of associated + entries in the table, but MAY choose to create fewer entries + in this table for any reason including the lack of + resources. + + If this value is set to -1, the probe MAY create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 4 } + +dsmonPdistCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { dsmonPdistCtlEntry 5 } + +dsmonPdistCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of times a dsmonPdist entry has been inserted + into the dsmonPdistTable. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents MAY + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. + + Note that the table size can be determined by subtracting + dsmonPdistCtlDeletes from dsmonPdistCtlInserts." + ::= { dsmonPdistCtlEntry 6 } + +dsmonPdistCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonPdist entry has been deleted + from the dsmonPdist table (for any reason). If an entry is + deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents MAY + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. + + Note that the table size can be determined by subtracting + dsmonPdistCtlDeletes from dsmonPdistCtlInserts." + ::= { dsmonPdistCtlEntry 7 } + +dsmonPdistCtlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + detect if the table has been deleted and recreated between + polls." + + + + ::= { dsmonPdistCtlEntry 8 } + +dsmonPdistCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonPdistCtlEntry 9 } + +dsmonPdistCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonPdistStatsTable shall be deleted." + ::= { dsmonPdistCtlEntry 10 } + +-- +-- Per-Protocol Statistics Table +-- + +dsmonPdistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on a per protocol per counter + aggregation group usage. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted and the agent + will not process packets on behalf of any + dsmonPdistCtlEntry." + ::= { dsmonPdistObjects 2 } + +dsmonPdistStatsEntry OBJECT-TYPE + SYNTAX DsmonPdistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A list of information on Differentiated Services DSCP + usage, containing packet and octet counters for each counter + aggregation group configured for collection, and each + protocol (as identified by the protocolDirLocalIndex for the + protocol) identified in each monitored packet. + + The dsmonPdistCtlIndex value in the index identifies the + dsmonPdistCtlEntry on whose behalf this entry was created. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry for that value. + + The protocolDirLocalIndex in the index identifies the + protocolDirEntry for the protocol encapsulation of each + monitored packet. The agent will include only application + layer protocols in the associated dsmonPdistStatsTable. Any + 'terminal' protocol is considered to be an application + protocol. + + An example of the indexing of this entry is + dsmonPdistStatsPkts.9.29943.0.42." + INDEX { dsmonPdistCtlIndex, + dsmonPdistTimeMark, + dsmonAggGroupIndex, + protocolDirLocalIndex } + ::= { dsmonPdistStatsTable 1 } + +DsmonPdistStatsEntry ::= SEQUENCE { + dsmonPdistTimeMark TimeFilter, + dsmonPdistStatsPkts ZeroBasedCounter32, + dsmonPdistStatsOctets ZeroBasedCounter32, + dsmonPdistStatsOvflPkts ZeroBasedCounter32, + dsmonPdistStatsOvflOctets ZeroBasedCounter32, + dsmonPdistStatsHCPkts ZeroBasedCounter64, + dsmonPdistStatsHCOctets ZeroBasedCounter64, + dsmonPdistStatsCreateTime LastCreateTime +} + +dsmonPdistTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonPdistStatsEntry 1 } + +dsmonPdistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, using one of the DSCP values in the + indicated counter aggregation group, for the protocol + identified by the associated protocolDirLocalIndex value." + ::= { dsmonPdistStatsEntry 2 } + +dsmonPdistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, for the + protocol identified by the associated protocolDirLocalIndex + value. + + Note that this object doesn't count just those octets in the + particular protocol frames, but includes the entire packet + that contained the protocol." + ::= { dsmonPdistStatsEntry 3 } + +dsmonPdistStatsOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonPdistStatsPkts + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonPdistStatsHCPkts object + is also instantiated for a particular dataSource." + ::= { dsmonPdistStatsEntry 4 } + +dsmonPdistStatsOvflOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonPdistStatsOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonPdistStatsHCOctets + object is also instantiated for a particular dataSource." + ::= { dsmonPdistStatsEntry 5 } + +dsmonPdistStatsHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonPdistStatsPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonPdistStatsEntry 6 } + +dsmonPdistStatsHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonPdistStatsOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonPdistStatsEntry 7 } + +dsmonPdistStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this dsmonPdistStats entry was + last instantiated by the agent. This can be used by the + management station to detect if the entry has been deleted + and recreated between polls." + ::= { dsmonPdistStatsEntry 8 } + + + + + +-- +-- Per-Protocol Statistics TopN Control Table +-- + +dsmonPdistTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonPdist entries according to a particular + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonPdistObjects 3 } + +dsmonPdistTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonPdistTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonPdistTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonPdistTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonPdistTopNTable to be created and maintained + by the agent." + INDEX { dsmonPdistTopNCtlIndex } + ::= { dsmonPdistTopNCtlTable 1 } + +DsmonPdistTopNCtlEntry ::= SEQUENCE { + dsmonPdistTopNCtlIndex Integer32, + dsmonPdistTopNCtlPdistIndex Integer32, + dsmonPdistTopNCtlRateBase INTEGER, + dsmonPdistTopNCtlTimeRemaining Integer32, + dsmonPdistTopNCtlGeneratedReprts Counter32, + dsmonPdistTopNCtlDuration Integer32, + + + + dsmonPdistTopNCtlRequestedSize Integer32, + dsmonPdistTopNCtlGrantedSize Integer32, + dsmonPdistTopNCtlStartTime TimeStamp, + dsmonPdistTopNCtlOwner OwnerString, + dsmonPdistTopNCtlStatus RowStatus +} + +dsmonPdistTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonPdistTopNCtlTable, with the same dsmonPdistTopNCtlIndex + value as this object. Each entry in this table defines one + Top N report prepared on behalf of the dsmonPdistStatsEntry + collection with the same dsmonPdistCtlIndex as this object." + ::= { dsmonPdistTopNCtlEntry 1 } + +dsmonPdistTopNCtlPdistIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonPdistTable for which a top N report will be + prepared on behalf of this entry. The dsmonPdistTable is + identified by the value of the dsmonPdistCtlIndex for that + table - that value is used here to identify the particular + table. + + This object MUST NOT be modified if the associated + dsmonPdistTopNCtlStatus object is equal to active(1)." + ::= { dsmonPdistTopNCtlEntry 2 } + +dsmonPdistTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonPdistTopNPkts(1), + dsmonPdistTopNOctets(2), + dsmonPdistTopNHCPkts(3), + dsmonPdistTopNHCOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each dsmonPdist that the + dsmonPdistTopNRate and dsmonPdistTopNHCRate variables are + based upon. Each dsmonPdistTopN report generated on behalf + of this control entry will be ranked in descending order, + + + + based on the associated dsmonPdistStatsTable counter, + identified by this object. + + The following table identifies the dsmonPdistTable counter + associated with each enumeration: + + Enumeration RateBase MIB Object + ----------- ------------------- + dsmonPdistTopNPkts dsmonPdistStatsPkts + dsmonPdistTopNOctets dsmonPdistStatsOctets + dsmonPdistTopNHCPkts dsmonPdistStatsHCPkts + dsmonPdistTopNHCOctets dsmonPdistStatsHCOctets + + Note that the dsmonPdistTopNHCPkts and + dsmonPdistTopNHCOctets enumerations are only available if + the agent supports High Capacity monitoring. + + This object MUST NOT be modified if the associated + dsmonPdistTopNCtlStatus object is equal to active(1)." + ::= { dsmonPdistTopNCtlEntry 3 } + +dsmonPdistTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently being + collected. When this object is modified by the management + station, a new collection is started, possibly aborting a + currently running report. The new value is used as the + requested duration of this report, and is immediately loaded + into the associated dsmonPdistTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonPdistTopNCtlTimeRemaining. Thus the management station + may simply read the resulting reports repeatedly, checking + the startTime and duration each time to ensure that a report + was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements by + one per second until it reaches zero. At the time that this + object decrements to zero, the report is made accessible in + the dsmonPdistTopNTable, overwriting any report that may be + there. + + + + + When this object is modified by the management station, any + associated entries in the dsmonPdistTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonPdistTopNCtlEntry 4 } + +dsmonPdistTopNCtlGeneratedReprts OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonPdistTopNCtlEntry 5 } + +dsmonPdistTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonPdistTopNCtlTimeRemaining object is + set, this object shall be set by the probe to the same value + and shall not be modified until the next time the + dsmonPdistTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonPdistTopNCtlEntry." + ::= { dsmonPdistTopNCtlEntry 6 } + +dsmonPdistTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonPdist entries requested for this + report. + + When this object is created or modified, the probe SHOULD + set dsmonPdistTopNCtlGrantedSize as closely to this object + as is possible for the particular probe implementation and + available resources." + DEFVAL { 150 } + + + + ::= { dsmonPdistTopNCtlEntry 7 } + +dsmonPdistTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of dsmonPdist entries in this report. + + When the associated dsmonPdistTopNCtlRequestedSize object is + created or modified, the probe SHOULD set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + probe MUST NOT lower this value except as a result of a + set to the associated dsmonPdistTopNCtlRequestedSize + object. + + Protocol entries with the highest value of + dsmonPdistTopNRate or dsmonPdistTopNHCRate (depending on the + value of the associated dsmonPdistTopNCtlRateBase object) + shall be placed in this table in decreasing order of this + rate until there is no more room or until there are no more + dsmonPdist entries." + ::= { dsmonPdistTopNCtlEntry 8 } + +dsmonPdistTopNCtlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was last + started. In other words, this is the time that the + associated dsmonPdistTopNCtlTimeRemaining object was + modified to start the requested report or the time the + report was last automatically (re)started. + + This object may be used by the management station to + determine if a report was missed or not." + ::= { dsmonPdistTopNCtlEntry 9 } + +dsmonPdistTopNCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + + + + ::= { dsmonPdistTopNCtlEntry 10 } + +dsmonPdistTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonPdistTopNCtlEntry. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonPdistTopNTable shall be deleted by the + agent." + ::= { dsmonPdistTopNCtlEntry 11 } + +-- +-- dsmonPdist TopN Table +-- + +dsmonPdistTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those protocol distribution entries + that have counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonPdistTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonPdistTopNCtlTable. + + Note that dsmonPdist entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonPdistTopN reports." + ::= { dsmonPdistObjects 4 } + +dsmonPdistTopNEntry OBJECT-TYPE + SYNTAX DsmonPdistTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row in the dsmonPdistTopNTable. + + The dsmonPdistTopNCtlIndex value in the index identifies the + dsmonPdistTopNCtlEntry on whose behalf this entry was + created. Entries in this table are ordered from 1 to 'N', + where lower numbers represent higher values of the rate base + object, over the report interval." + INDEX { dsmonPdistTopNCtlIndex, dsmonPdistTopNIndex } + ::= { dsmonPdistTopNTable 1 } + +DsmonPdistTopNEntry ::= SEQUENCE { + dsmonPdistTopNIndex Integer32, + dsmonPdistTopNPDLocalIndex Integer32, + dsmonPdistTopNAggGroup DsmonCounterAggGroupIndex, + dsmonPdistTopNRate Gauge32, + dsmonPdistTopNRateOvfl Gauge32, + dsmonPdistTopNHCRate CounterBasedGauge64 +} + +dsmonPdistTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonPdistTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report. Note that 'N' may change over time, and may + also be less than the dsmonPdistTopNCtlGrantedSize value + associated with this entry." + ::= { dsmonPdistTopNEntry 1 } + +dsmonPdistTopNPDLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonPdistTopN entry." + ::= { dsmonPdistTopNEntry 2 } + +dsmonPdistTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DSCP counter aggregation group index value associated + with protocol identified in this entry. This object + identifies the dsmonAggGroupEntry with the same + dsmonAggControlIndex value as the associated + dsmonPdistCtlAggProfile object and the same + dsmonAggGroupIndex value as this object." + ::= { dsmonPdistTopNEntry 3 } + +dsmonPdistTopNRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this protocol's + instance of the object selected by + dsmonPdistTopNCtlRateBase. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then + this object will contain the the least significant 32 bits + of the associated dsmonPdistTopNHCRate object." + ::= { dsmonPdistTopNEntry 4 } + +dsmonPdistTopNRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonPdistTopNHCRate object. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then + this object will contain the upper 32 bits of the associated + dsmonPdistTopNHCRate object. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonPdistTopNEntry 5 } + + + + +dsmonPdistTopNHCRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this protocol's + instance of the object selected by + dsmonPdistTopNCtlRateBase. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this + object will contain the value zero, and the associated + dsmonPdistTopNRate object will contain the change in the + selected variable during the sampling interval. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonPdistTopNEntry 6 } + + +-- *********************************************************** +-- * * +-- * P E R - H O S T C O L L E C T I O N S * +-- * * +-- *********************************************************** + + +-- +-- NL Host Statistics Control Table +-- + +dsmonHostCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls setup of per counter aggregation group, per + network layer host distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonHostObjects 1 } + +dsmonHostCtlEntry OBJECT-TYPE + + + + SYNTAX DsmonHostCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonHostCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonHostTable to be created and maintained by + the agent." + INDEX { dsmonHostCtlIndex } + ::= { dsmonHostCtlTable 1 } + +DsmonHostCtlEntry ::= SEQUENCE { + dsmonHostCtlIndex Integer32, + dsmonHostCtlDataSource DataSource, + dsmonHostCtlAggProfile DsmonCounterAggProfileIndex, + dsmonHostCtlMaxDesiredEntries Integer32, + dsmonHostCtlIPv4PrefixLen Integer32, + dsmonHostCtlIPv6PrefixLen Integer32, + dsmonHostCtlDroppedFrames Counter32, + dsmonHostCtlInserts Counter32, + dsmonHostCtlDeletes Counter32, + dsmonHostCtlCreateTime LastCreateTime, + dsmonHostCtlOwner OwnerString, + dsmonHostCtlStatus RowStatus +} + +dsmonHostCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this dsmonHostCtlEntry." + ::= { dsmonHostCtlEntry 1 } + +dsmonHostCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The source of data for the associated dsmonHostTable. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 2 } + +dsmonHostCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonHostCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonHost collection. In this case, + the associated dsmonHostCtlStatus object will be changed to + the 'notReady' state, and data collection will not occur on + behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 3 } + +dsmonHostCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonHostTable on behalf of this control entry. The probe + will not create more than this number of associated entries + in the table, but MAY choose to create fewer entries in this + table for any reason including the lack of resources. + + + + If this value is set to -1, the probe MAY create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 4 } + +dsmonHostCtlIPv4PrefixLen OBJECT-TYPE + SYNTAX Integer32 (8..32) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of 'leftmost' contiguous bits in the host + address field for encapsulations of IPv4, that should be + maintained in this collection. This object controls how the + dsmonHostAddress object is derived for packets which contain + an encapsulation of IPv4. + + If this object has a value less than 32, then 'm' rightmost + bits, where 'm' is equal to '32 - + dsmonHostCtlIPv4PrefixLen', will be cleared to zero for + counting purposes only. The 'leftmost' bit is the most + significant bit of the first network-byte-order octet of the + address. + + If this object is equal to 32, then no bits are cleared in + each dsmonHostAddress field. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + DEFVAL { 32 } + ::= { dsmonHostCtlEntry 5 } + +dsmonHostCtlIPv6PrefixLen OBJECT-TYPE + SYNTAX Integer32 (8..128) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of 'leftmost' contiguous bits in the host + address field for encapsulations of IPv6, that should be + maintained in this collection. This object controls how the + dsmonHostAddress object is derived for packets which contain + an encapsulation of IPv6. + + If this object has a value less than 128, then 'm' rightmost + bits, where 'm' is equal to '128 - + + + + dsmonHostCtlIPv6PrefixLen', will be cleared to zero for + counting purposes only. The 'leftmost' bit is the most + significant bit of the first network-byte-order octet of the + address. + + If this object is equal to 128, then no bits are cleared in + each dsmonHostAddress field. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + DEFVAL { 128 } + ::= { dsmonHostCtlEntry 6 } + +dsmonHostCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for the associated + dsmonHost entries for whatever reason. Most often, this + event occurs when the probe is out of some resources and + decides to shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the dsmonHostTable is inactive because no + appropriate protocols are enabled in the protocol directory, + this value SHOULD be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { dsmonHostCtlEntry 7 } + +dsmonHostCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonHost entry has been inserted + into the dsmonHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + + + + To allow for efficient implementation strategies, agents MAY + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. + + Note that the table size can be determined by subtracting + dsmonHostCtlDeletes from dsmonHostCtlInserts." + ::= { dsmonHostCtlEntry 8 } + +dsmonHostCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonHost entry has been deleted from + the dsmonHost table (for any reason). If an entry is + deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents MAY + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. + + Note that the table size can be determined by subtracting + dsmonHostCtlDeletes from dsmonHostCtlInserts." + ::= { dsmonHostCtlEntry 9 } + +dsmonHostCtlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + detect if the table has been deleted and recreated between + polls." + ::= { dsmonHostCtlEntry 10 } + +dsmonHostCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonHostCtlEntry 11 } + +dsmonHostCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonHostCtlEntry. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonHostTable shall be deleted." + ::= { dsmonHostCtlEntry 12 } + +-- +-- NL Host Statistics Table +-- + +dsmonHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for particular network protocols + which contain a DS field, and that has been discovered on a + particular dataSource. + + The probe will add to this table all appropriate network + protocols, for each network address seen as the source or + destination address in all packets with no MAC errors, and + will increment octet and packet counts in the table for all + packets with no MAC errors. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted, and the + agent will not process packets on behalf of any + dsmonHostCtlEntry." + ::= { dsmonHostObjects 2 } + +dsmonHostEntry OBJECT-TYPE + SYNTAX DsmonHostEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A list of information on Differentiated Services DSCP + usage, containing packet and octet counters for each counter + aggregation group index configured for collection per host + address, as identified in the dsmonAggProfileTable. + + The dsmonHostCtlIndex value in the index identifies the + dsmonHostCtlEntry on whose behalf this entry was created. + + The protocolDirLocalIndex value in the index identifies the + specific network layer protocol encapsulation associated + with each entry, and the network protocol type of the + dsmonHostAddress object. It MUST identify a + protocolDirEntry which contains a DS field (e.g., IPv4 or + IPv6). Note that if a protocol encapsulation with multiple + network layers is specified, then associated entries in this + table refer to the innermost network protocol layer host + address. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value. + + An example of the indexing of this entry is + dsmonHostOutPkts.1.27273.3.200.4.171.69.120.0" + INDEX { dsmonHostCtlIndex, + dsmonHostTimeMark, + dsmonAggGroupIndex, + protocolDirLocalIndex, + dsmonHostAddress } + ::= { dsmonHostTable 1 } + +DsmonHostEntry ::= SEQUENCE { + dsmonHostTimeMark TimeFilter, + dsmonHostAddress OCTET STRING, + dsmonHostInPkts ZeroBasedCounter32, + dsmonHostInOctets ZeroBasedCounter32, + dsmonHostInOvflPkts ZeroBasedCounter32, + dsmonHostInOvflOctets ZeroBasedCounter32, + dsmonHostInHCPkts ZeroBasedCounter64, + dsmonHostInHCOctets ZeroBasedCounter64, + dsmonHostOutPkts ZeroBasedCounter32, + dsmonHostOutOctets ZeroBasedCounter32, + dsmonHostOutOvflPkts ZeroBasedCounter32, + dsmonHostOutOvflOctets ZeroBasedCounter32, + dsmonHostOutHCPkts ZeroBasedCounter64, + dsmonHostOutHCOctets ZeroBasedCounter64, + dsmonHostCreateTime LastCreateTime + + + +} + +dsmonHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonHostEntry 1 } + +dsmonHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..110)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this dsmonHostEntry. + + This object is encoded according to the protocol type + indicated by the protocolDirLocalIndex value in the index. + + In addition, this object may have some 'rightmost' bits + cleared to zero for counting purposes, as indicated by the + associated dsmonHostCtlIPv4PrefixLen or + dsmonHostCtlIPv6PrefixLen objects." + ::= { dsmonHostEntry 2 } + +dsmonHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors, using one of the DSCP + values in the indicated counter aggregation group, and + transmitted to this address, since this entry was added to + the dsmonHostTable. Note that this is the number of link- + layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { dsmonHostEntry 3 } + +dsmonHostInOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in all packets, transmitted to this + address and using one of the DSCP values in the indicated + counter aggregation group, since this entry was added to the + dsmonHostTable (excluding framing bits but including FCS + octets), excluding those octets in packets that contained + errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that + contained the protocol." + ::= { dsmonHostEntry 4 } + +dsmonHostInOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostInPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonHostInHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 5 } + +dsmonHostInOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostInOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonHostInHCOctets object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 6 } + +dsmonHostInHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostInPkts object. + + Note that this object will only be instantiated if the RMON + + + + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 7 } + +dsmonHostInHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostInOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 8 } + +dsmonHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors, using one of the DSCP + values in the indicated counter aggregation group, and + transmitted by this address, since this entry was added to + the dsmonHostTable. Note that this is the number of link- + layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { dsmonHostEntry 9 } + +dsmonHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets, transmitted by this address and using + one of the DSCP values in the identified counter aggregation + group, since this entry was added to the dsmonHostTable + (excluding framing bits but including FCS octets), excluding + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that + contained the protocol." + ::= { dsmonHostEntry 10 } + + + +dsmonHostOutOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostOutPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonHostOutHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 11 } + +dsmonHostOutOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostOutOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonHostOutHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonHostEntry 12 } + +dsmonHostOutHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostOutPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 13 } + +dsmonHostOutHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostOutOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 14 } + + + + +dsmonHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this dsmonHost entry was last + instantiated by the agent. This can be used by the + management station to ensure that the entry has not been + deleted and recreated between polls." + ::= { dsmonHostEntry 15 } + + +-- +-- Per-Protocol Per-Host NL Statistics TopN Control Table +-- + +dsmonHostTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonHost entries according to a selected + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonHostObjects 3 } + +dsmonHostTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonHostTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonHostTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + + + + associated dsmonHostTopNTable to be created and maintained + by the agent." + INDEX { dsmonHostTopNCtlIndex } + ::= { dsmonHostTopNCtlTable 1 } + +DsmonHostTopNCtlEntry ::= SEQUENCE { + dsmonHostTopNCtlIndex Integer32, + dsmonHostTopNCtlHostIndex Integer32, + dsmonHostTopNCtlRateBase INTEGER, + dsmonHostTopNCtlTimeRemaining Integer32, + dsmonHostTopNCtlGeneratedReports Counter32, + dsmonHostTopNCtlDuration Integer32, + dsmonHostTopNCtlRequestedSize Integer32, + dsmonHostTopNCtlGrantedSize Integer32, + dsmonHostTopNCtlStartTime TimeStamp, + dsmonHostTopNCtlOwner OwnerString, + dsmonHostTopNCtlStatus RowStatus +} + +dsmonHostTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonHostTopNCtlTable. Each such entry defines one Top N + report prepared for one RMON dataSource." + ::= { dsmonHostTopNCtlEntry 1 } + +dsmonHostTopNCtlHostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonHostTable for which a top N report will be + prepared on behalf of this entry. The dsmonHostTable is + identified by the value of the dsmonHostCtlIndex for that + table - that value is used here to identify the particular + table. + + This object MUST NOT be modified if the associated + dsmonHostTopNCtlStatus object is equal to active(1)." + ::= { dsmonHostTopNCtlEntry 2 } + +dsmonHostTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonHostTopNInPkts(1), + dsmonHostTopNInOctets(2), + + + + dsmonHostTopNOutPkts(3), + dsmonHostTopNOutOctets(4), + dsmonHostTopNTotalPkts(5), + dsmonHostTopNTotalOctets(6), + dsmonHostTopNInHCPkts(7), + dsmonHostTopNInHCOctets(8), + dsmonHostTopNOutHCPkts(9), + dsmonHostTopNOutHCOctets(10), + dsmonHostTopNTotalHCPkts(11), + dsmonHostTopNTotalHCOctets(12) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable(s) for each dsmonHost that the + dsmonHostTopNRate and dsmonHostTopNHCRate variables are + based upon. Each dsmonHostTopN report generated on behalf + of this control entry will be ranked in descending order, + based on the associated dsmonHostTable counter(s), + identified by this object. + + The following table identifies the dsmonHostTable counters + associated with each enumeration: + + Enumeration RateBase MIB Objects + ----------- -------------------- + dsmonHostTopNInPkts dsmonHostInPkts + dsmonHostTopNInOctets dsmonHostInOctets + dsmonHostTopNOutPkts dsmonHostOutPkts + dsmonHostTopNOutOctets dsmonHostOutOctets + dsmonHostTopNTotalPkts dsmonHostInPkts + + dsmonHostOutPkts + dsmonHostTopNTotalOctets dsmonHostInOctets + + dsmonHostOutOctets + dsmonHostTopNInHCPkts dsmonHostInHCPkts + dsmonHostTopNInHCOctets dsmonHostInHCOctets + dsmonHostTopNOutHCPkts dsmonHostOutHCPkts + dsmonHostTopNOutHCOctets dsmonHostOutHCPkts + dsmonHostTopNTotalHCPkts dsmonHostInHCPkts + + dsmonHostOutHCPkts + dsmonHostTopNTotalHCOctets dsmonHostInHCOctets + + dsmonHostOutHCOctets + + The following enumerations are only available if the agent + supports High Capacity monitoring: + + dsmonHostTopNInHCPkts + dsmonHostTopNInHCOctets + + + + dsmonHostTopNOutHCPkts + dsmonHostTopNOutHCOctets + dsmonHostTopNTotalHCPkts + dsmonHostTopNTotalHCOctets + + It is an implementation-specific matter whether an agent can + detect an overflow condition resulting from the addition of + two counter delta values for the following enumerations: + + dsmonHostTopNTotalPkts + dsmonHostTopNTotalOctets + dsmonHostTopNTotalHCPkts + dsmonHostTopNTotalHCOctets + + In the event such an overflow condition can be detected by + the agent, the associated dsmonHostTopNRate, + dsmonHostTopNRateOvfl, and/or dsmonHostTopNHCRate objects + should be set to their maximum value. + + This object MUST NOT be modified if the associated + dsmonHostTopNCtlStatus object is equal to active(1)." + ::= { dsmonHostTopNCtlEntry 3 } + +dsmonHostTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently being + collected. When this object is modified by the management + station, a new collection is started, possibly aborting a + currently running report. The new value is used as the + requested duration of this report, and is immediately loaded + into the associated dsmonHostTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonHostTopNCtlTimeRemaining. Thus the management station + may simply read the resulting reports repeatedly, checking + the startTime and duration each time to ensure that a report + was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements by + one per second until it reaches zero. At the time that this + object decrements to zero, the report is made accessible in + the dsmonHostTopNTable, overwriting any report that may be + + + + there. + + When this object is modified by the management station, any + associated entries in the dsmonHostTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonHostTopNCtlEntry 4 } + +dsmonHostTopNCtlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonHostTopNCtlEntry 5 } + +dsmonHostTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonHostTopNCtlTimeRemaining object is + set, this object shall be set by the probe to the same value + and shall not be modified until the next time the + dsmonHostTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonHostTopNCtlEntry." + ::= { dsmonHostTopNCtlEntry 6 } + +dsmonHostTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonHost entries requested for this + report. + + When this object is created or modified, the probe SHOULD + set dsmonHostTopNCtlGrantedSize as closely to this object as + is possible for the particular probe implementation and + + + + available resources." + DEFVAL { 150 } + ::= { dsmonHostTopNCtlEntry 7 } + +dsmonHostTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of dsmonHost entries in this report. + + When the associated dsmonHostTopNCtlRequestedSize object is + created or modified, the probe SHOULD set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + probe MUST NOT lower this value except as a result of a + set to the associated dsmonHostTopNCtlRequestedSize + object. + + Protocol entries with the highest value of dsmonHostTopNRate + or dsmonHostTopNHCRate (depending on the value of the + associated dsmonHostTopNCtlRateBase object) shall be placed + in this table in decreasing order of this rate until there + is no more room or until there are no more dsmonHost + entries." + ::= { dsmonHostTopNCtlEntry 8 } + +dsmonHostTopNCtlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was last + started. In other words, this is the time that the + associated dsmonHostTopNCtlTimeRemaining object was modified + to start the requested report or the time the report was + last automatically (re)started. + + This object may be used by the management station to + determine if a report was missed or not." + ::= { dsmonHostTopNCtlEntry 9 } + +dsmonHostTopNCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonHostTopNCtlEntry 10 } + +dsmonHostTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonHostTopNCtlEntry. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonHostTopNTable shall be deleted by the + agent." + ::= { dsmonHostTopNCtlEntry 11 } + +-- +-- dsmonHost TopN Table +-- + +dsmonHostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those dsmonHost entries that have + counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonHostTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonHostTopNCtlTable. + + Note that dsmonHost entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonHostTopN reports." + ::= { dsmonHostObjects 4 } + +dsmonHostTopNEntry OBJECT-TYPE + SYNTAX DsmonHostTopNEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostTopNTable. + + The dsmonHostTopNCtlIndex value in the index identifies the + dsmonHostTopNCtlEntry on whose behalf this entry was + created. + + Entries in this table are ordered from 1 to 'N', where lower + numbers represent higher values of the rate base object, + over the report interval." + INDEX { dsmonHostTopNCtlIndex, dsmonHostTopNIndex } + ::= { dsmonHostTopNTable 1 } + +DsmonHostTopNEntry ::= SEQUENCE { + dsmonHostTopNIndex Integer32, + dsmonHostTopNPDLocalIndex Integer32, + dsmonHostTopNAddress OCTET STRING, + dsmonHostTopNAggGroup DsmonCounterAggGroupIndex, + dsmonHostTopNRate Gauge32, + dsmonHostTopNRateOvfl Gauge32, + dsmonHostTopNHCRate CounterBasedGauge64 + } + +dsmonHostTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonHostTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report." + ::= { dsmonHostTopNEntry 1 } + +dsmonHostTopNPDLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with the dsmonHostTopNAddress object in + this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonHostTopN entry." + + + + ::= { dsmonHostTopNEntry 2 } + +dsmonHostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonHostAddress value for the network host identified + in this entry. The associated dsmonHostTopNPDLocalIndex + object identifies the network protocol type and the encoding + rules for this object." + ::= { dsmonHostTopNEntry 3 } + +dsmonHostTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter aggregation group index value associated with + host identified in this entry. This object identifies the + dsmonAggGroupEntry with the same dsmonAggControlIndex value + as the associated dsmonHostCtlAggProfile object and the same + dsmonAggGroupIndex value as this object." + ::= { dsmonHostTopNEntry 4 } + +dsmonHostTopNRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this host's + instance of the object selected by dsmonHostTopNCtlRateBase. + + If the associated dsmonHostTopNCtlRateBase indicates a High + Capacity monitoring enumeration, (e.g. + 'dsmonHostTopNInHCPkts'), then this object will contain the + the least significant 32 bits of the associated + dsmonHostTopNHCRate object." + ::= { dsmonHostTopNEntry 5 } + +dsmonHostTopNRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonHostTopNHCRate object. + + + + If the associated dsmonHostTopNCtlRateBase is equal to any + of the High Capacity monitoring enumerations (e.g. + 'dsmonHostTopNInHCPkts'), then this object will contain the + upper 32 bits of the associated dsmonHostTopNHCRate object. + + If the associated dsmonHostTopNCtlRateBase is not equal to + any of High Capacity monitoring enumerations, then this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonHostTopNEntry 6 } + +dsmonHostTopNHCRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this host's + instance of the object selected by dsmonHostTopNCtlRateBase. + + If the associated dsmonHostTopNCtlRateBase is not equal to + any of the High Capacity monitoring enumerations (e.g., + 'dsmonHostTopNInPkts'), then this object will contain the + value zero, and the associated dsmonHostTopNRate object will + contain the change in the selected variable during the + sampling interval. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonHostTopNEntry 7 } + + +-- ************************************************************** +-- * * +-- * P E R - C O N V E R S I O N C O L L E C T I O N S * +-- * * +-- ************************************************************** + +-- +-- AL Matrix Statistics Control Table +-- + +dsmonMatrixCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixCtlEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Controls setup of per counter aggregation group, per host- + pair, application protocol distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonMatrixObjects 1 } + +dsmonMatrixCtlEntry OBJECT-TYPE + SYNTAX DsmonMatrixCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonMatrixCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonMatrixSDTable and dsmonMatrixDSTable to be + created and maintained by the agent." + INDEX { dsmonMatrixCtlIndex } + ::= { dsmonMatrixCtlTable 1 } + +DsmonMatrixCtlEntry ::= SEQUENCE { + dsmonMatrixCtlIndex Integer32, + dsmonMatrixCtlDataSource DataSource, + dsmonMatrixCtlAggProfile DsmonCounterAggProfileIndex, + dsmonMatrixCtlMaxDesiredEntries Integer32, + dsmonMatrixCtlDroppedFrames Counter32, + dsmonMatrixCtlInserts Counter32, + dsmonMatrixCtlDeletes Counter32, + dsmonMatrixCtlCreateTime LastCreateTime, + dsmonMatrixCtlOwner OwnerString, + dsmonMatrixCtlStatus RowStatus +} + +dsmonMatrixCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An arbitrary and unique index for this + dsmonMatrixCtlEntry." + ::= { dsmonMatrixCtlEntry 1 } + +dsmonMatrixCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated dsmonMatrixSDTable + and dsmonMatrixDSTable. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 2 } + +dsmonMatrixCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonMatrixCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonMatrix collection. In this + case, the associated dsmonMatrixCtlStatus object will be + changed to the 'notReady' state, and data collection will + not occur on behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 3 } + + + +dsmonMatrixCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonMatrix tables on behalf of this control entry. The + probe will not create more than this number of associated + entries in these tables, but may choose to create fewer + entries in this table for any reason including the lack of + resources. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 4 } + +dsmonMatrixCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for the associated + dsmonMatrixSD and dsmonMatrixDS entries for whatever reason. + Most often, this event occurs when the probe is out of some + resources and decides to shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the dsmonMatrix tables are inactive because no + appropriate protocols are enabled in the protocol directory, + this value SHOULD be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { dsmonMatrixCtlEntry 5 } + +dsmonMatrixCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times a dsmonMatrix entry has been inserted + into the dsmonMatrix tables. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. The addition of a conversation into both the + dsmonMatrixSDTable and dsmonMatrixDSTable shall be counted + as two insertions (even though every addition into one table + must be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. Note that the + sum of the dsmonMatrixSDTable and dsmonMatrixDSTable sizes + can be determined by subtracting dsmonMatrixCtlDeletes from + dsmonMatrixCtlInserts." + ::= { dsmonMatrixCtlEntry 6 } + +dsmonMatrixCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonMatrix entry has been deleted + from the dsmonMatrix tables (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter + will be incremented by 2. The deletion of a conversation + from both the dsmonMatrixSDTable and dsmonMatrixDSTable + shall be counted as two deletions (even though every + deletion from one table must be accompanied by a deletion + from the other). + + To allow for efficient implementation strategies, agents MAY + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal data + structures to differ from those visible via SNMP for short + periods of time. This counter may reflect the internal data + structures for those short periods of time. + + Note that the sum of the dsmonMatrixSDTable and + dsmonMatrixDSTable sizes can be determined by subtracting + dsmonMatrixCtlDeletes from dsmonMatrixCtlInserts." + ::= { dsmonMatrixCtlEntry 7 } + + + + +dsmonMatrixCtlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + detect if the table has been deleted and recreated between + polls." + ::= { dsmonMatrixCtlEntry 8 } + +dsmonMatrixCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonMatrixCtlEntry 9 } + +dsmonMatrixCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonMatrixCtlEntry. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonMatrixSDTable and dsmonMatrixDSTable + shall be deleted." + ::= { dsmonMatrixCtlEntry 10 } + +-- +-- AL Matrix SD Statistics Table +-- + +dsmonMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + statistics for conversations of a particular application + protocol between two network-level addresses. This table is + indexed first by the source address and then by the + + + + destination address to make it convenient to collect all + statistics from a particular address. + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors, and + will increment octet and packet counts in the table for all + packets with no MAC errors." + ::= { dsmonMatrixObjects 2 } + +dsmonMatrixSDEntry OBJECT-TYPE + SYNTAX DsmonMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixSDTable. + + The dsmonMatrixCtlIndex value in the index identifies the + dsmonMatrixCtlEntry on whose behalf this entry was created. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value." + INDEX { dsmonMatrixCtlIndex, + dsmonMatrixTimeMark, + dsmonAggGroupIndex, + dsmonMatrixNLIndex, + dsmonMatrixSourceAddress, + dsmonMatrixDestAddress, + dsmonMatrixALIndex + } + ::= { dsmonMatrixSDTable 1 } + +DsmonMatrixSDEntry ::= SEQUENCE { + dsmonMatrixTimeMark TimeFilter, + dsmonMatrixNLIndex Integer32, + dsmonMatrixSourceAddress OCTET STRING, + dsmonMatrixDestAddress OCTET STRING, + dsmonMatrixALIndex Integer32, + dsmonMatrixSDPkts ZeroBasedCounter32, + dsmonMatrixSDOvflPkts ZeroBasedCounter32, + dsmonMatrixSDHCPkts ZeroBasedCounter64, + dsmonMatrixSDOctets ZeroBasedCounter32, + dsmonMatrixSDOvflOctets ZeroBasedCounter32, + dsmonMatrixSDHCOctets ZeroBasedCounter64, + dsmonMatrixSDCreateTime LastCreateTime +} + +dsmonMatrixTimeMark OBJECT-TYPE + + + + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonMatrixSDEntry 1 } + +dsmonMatrixNLIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of a protocolDirEntry + representing the specific network layer protocol + encapsulation associated with each entry, and the network + protocol type of the dsmonMatrixSourceAddress and + dsmonMatrixDestAddress objects." + ::= { dsmonMatrixSDEntry 2 } + +dsmonMatrixSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..54)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this dsmonMatrix entry. + + This is represented as an octet string with specific + semantics and length as identified by the dsmonMatrixNLIndex + component of the index. + + For example, if the dsmonMatrixNLIndex indicates an + encapsulation of IPv4, this object is encoded as a length + octet of 4, followed by the 4 octets of the IPv4 address, in + network byte order." + ::= { dsmonMatrixSDEntry 3 } + +dsmonMatrixDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..54)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this dsmonMatrix entry. + + + + This is represented as an octet string with specific + semantics and length as identified by the dsmonMatrixNLIndex + component of the index. + + For example, if the dsmonMatrixNLIndex indicates an + encapsulation of IPv4, this object is encoded as a length + octet of 4, followed by the 4 octets of the IPv4 address, in + network byte order." + ::= { dsmonMatrixSDEntry 4 } + +dsmonMatrixALIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the protocolDirEntry + representing the specific application layer protocol + associated with each entry. + + It MUST identify an protocolDirEntry which is a direct or + indirect descendant of the protocolDirEntry identified by + the associated dsmonMatrixNLIndex object." + ::= { dsmonMatrixSDEntry 5 } + +dsmonMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type (indicated by + the associated dsmonMatrixALIndex object) without errors + transmitted from the source address to the destination + address since this entry was added to the + dsmonMatrixSDTable. Note that this is the number of link- + layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { dsmonMatrixSDEntry 6 } + +dsmonMatrixSDOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixSDPkts + counter has overflowed, since this entry was added to the + dsmonMatrixSDTable." + + + + ::= { dsmonMatrixSDEntry 7 } + +dsmonMatrixSDHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixSDPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixSDEntry 8 } + +dsmonMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination + address since this entry was added to the dsmonMatrixSDTable + (excluding framing bits but including FCS octets), excluding + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that + contained the protocol." + ::= { dsmonMatrixSDEntry 9 } + +dsmonMatrixSDOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixSDOctets + counter has overflowed, since this entry was added to the + dsmonMatrixSDTable." + ::= { dsmonMatrixSDEntry 10 } + +dsmonMatrixSDHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The 64-bit version of the dsmonMatrixSDPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixSDEntry 11 } + +dsmonMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that + the entry has not been deleted and recreated between polls." + ::= { dsmonMatrixSDEntry 12 } + + +-- +-- AL Matrix DS Statistics Table +-- + +dsmonMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + statistics for conversations of a particular application + protocol between two network-level addresses. This table is + indexed first by the destination address and then by the + source address to make it convenient to collect all + statistics from a particular address. + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors, and + will increment octet and packet counts in the table for all + packets with no MAC errors." + ::= { dsmonMatrixObjects 3 } + +dsmonMatrixDSEntry OBJECT-TYPE + SYNTAX DsmonMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixDSTable. Note that this + table is conceptually a re-ordered version of the + dsmonMatrixSDTable. Therefore, all of the index values from + + + + that table are used by reference, and their semantics are + exactly as described in the dsmonMatrixSDTable. + + The dsmonMatrixCtlIndex value in the index identifies the + dsmonMatrixCtlEntry on whose behalf this entry was created. + + The dsmonMatrixTimeMark value in the index identifies the + Time Filter index for this table. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value. + + The dsmonMatrixNLIndex value in the index identifies the + protocolDirLocalIndex value of a protocolDirEntry + representing the specific network layer protocol + encapsulation associated with each entry, and the network + protocol type of the dsmonMatrixSourceAddress and + dsmonMatrixDestAddress objects. + + The dsmonMatrixDestAddress value in the index identifies the + network destination address for this dsmonMatrix entry. + + The dsmonMatrixSourceAddress value in the index identifies + the network source address for this dsmonMatrix entry. + + The dsmonMatrixALIndex value in the index identifies the + protocolDirLocalIndex value of the protocolDirEntry + representing the specific application layer protocol + associated with each entry." + INDEX { dsmonMatrixCtlIndex, + dsmonMatrixTimeMark, + dsmonAggGroupIndex, + dsmonMatrixNLIndex, + dsmonMatrixDestAddress, + dsmonMatrixSourceAddress, + dsmonMatrixALIndex + } + ::= { dsmonMatrixDSTable 1 } + +DsmonMatrixDSEntry ::= SEQUENCE { + dsmonMatrixDSPkts ZeroBasedCounter32, + dsmonMatrixDSOvflPkts ZeroBasedCounter32, + dsmonMatrixDSHCPkts ZeroBasedCounter64, + dsmonMatrixDSOctets ZeroBasedCounter32, + dsmonMatrixDSOvflOctets ZeroBasedCounter32, + dsmonMatrixDSHCOctets ZeroBasedCounter64, + dsmonMatrixDSCreateTime LastCreateTime + + + +} + +dsmonMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type (indicated by + the associated dsmonMatrixALIndex object) without errors + transmitted from the source address to the destination + address since this entry was added to the + dsmonMatrixDSTable. Note that this is the number of link- + layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { dsmonMatrixDSEntry 1 } + +dsmonMatrixDSOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixDSPkts + counter has overflowed, since this entry was added to the + dsmonMatrixDSTable." + ::= { dsmonMatrixDSEntry 2 } + +dsmonMatrixDSHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixDSPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixDSEntry 3 } + +dsmonMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + + + + transmitted from the source address to the destination + address since this entry was added to the dsmonMatrixDSTable + (excluding framing bits but including FCS octets), excluding + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that + contained the protocol." + ::= { dsmonMatrixDSEntry 4 } + +dsmonMatrixDSOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixDSOctets + counter has overflowed, since this entry was added to the + dsmonMatrixDSTable." + ::= { dsmonMatrixDSEntry 5 } + +dsmonMatrixDSHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixDSPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixDSEntry 6 } + +dsmonMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that + the entry has not been deleted and recreated between polls." + ::= { dsmonMatrixDSEntry 7 } + + +-- +-- Per-Protocol Per-Matrix Statistics TopN Control Table +-- + + + + +dsmonMatrixTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonMatrix entries according to a selected + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonMatrixObjects 4 } + +dsmonMatrixTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonMatrixTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonMatrixTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonMatrixTopNTable to be created and maintained + by the agent." + INDEX { dsmonMatrixTopNCtlIndex } + ::= { dsmonMatrixTopNCtlTable 1 } + +DsmonMatrixTopNCtlEntry ::= SEQUENCE { + dsmonMatrixTopNCtlIndex Integer32, + dsmonMatrixTopNCtlMatrixIndex Integer32, + dsmonMatrixTopNCtlRateBase INTEGER, + dsmonMatrixTopNCtlTimeRemaining Integer32, + dsmonMatrixTopNCtlGeneratedRpts Counter32, + dsmonMatrixTopNCtlDuration Integer32, + dsmonMatrixTopNCtlRequestedSize Integer32, + dsmonMatrixTopNCtlGrantedSize Integer32, + dsmonMatrixTopNCtlStartTime TimeStamp, + dsmonMatrixTopNCtlOwner OwnerString, + + + + dsmonMatrixTopNCtlStatus RowStatus +} + +dsmonMatrixTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonMatrixTopNCtlTable. Each such entry defines one Top N + report prepared for one RMON dataSource." + ::= { dsmonMatrixTopNCtlEntry 1 } + +dsmonMatrixTopNCtlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonMatrixSDTable for which a top N report will be + prepared on behalf of this entry. The dsmonMatrixSDTable is + identified by the same value of the dsmonMatrixCtlIndex + object. + + This object MUST NOT be modified if the associated + dsmonMatrixTopNCtlStatus object is equal to active(1)." + ::= { dsmonMatrixTopNCtlEntry 2 } + +dsmonMatrixTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonMatrixTopNPkts(1), + dsmonMatrixTopNOctets(2), + dsmonMatrixTopNHCPkts(3), + dsmonMatrixTopNHCOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each dsmonMatrixSD entry that the + dsmonMatrixTopNRate and dsmonMatrixTopNHCRate variables are + based upon. Each dsmonMatrixTopN report generated on behalf + of this control entry will be ranked in descending order, + based on the associated dsmonMatrixSDTable counter, + identified by this object. + + The following table identifies the dsmonMatrixSDTable + counters associated with each enumeration: + + Enumeration RateBase MIB Objects + + + + ----------- -------------------- + dsmonMatrixTopNPkts dsmonMatrixSDPkts + dsmonMatrixTopNOctets dsmonMatrixSDOctets + dsmonMatrixTopNHCPkts dsmonMatrixSDHCPkts + dsmonMatrixTopNHCOctets dsmonMatrixSDHCOctets + + The following enumerations are only available if the agent + supports High Capacity monitoring: + + dsmonMatrixTopNHCPkts + dsmonMatrixTopNHCOctets + + This object MUST NOT be modified if the associated + dsmonMatrixTopNCtlStatus object is equal to active(1)." + ::= { dsmonMatrixTopNCtlEntry 3 } + +dsmonMatrixTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently being + collected. When this object is modified by the management + station, a new collection is started, possibly aborting a + currently running report. The new value is used as the + requested duration of this report, and is immediately loaded + into the associated dsmonMatrixTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonMatrixTopNCtlTimeRemaining. Thus the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that + a report was not missed or that the report parameters were + not changed. + + While the value of this object is non-zero, it decrements by + one per second until it reaches zero. At the time that this + object decrements to zero, the report is made accessible in + the dsmonMatrixTopNTable, overwriting any report that may be + there. + + When this object is modified by the management station, any + associated entries in the dsmonMatrixTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonMatrixTopNCtlEntry 4 } + + + +dsmonMatrixTopNCtlGeneratedRpts OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonMatrixTopNCtlEntry 5 } + +dsmonMatrixTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonMatrixTopNCtlTimeRemaining object + is set, this object shall be set by the probe to the same + value and shall not be modified until the next time the + dsmonMatrixTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonMatrixTopNCtlEntry." + ::= { dsmonMatrixTopNCtlEntry 6 } + +dsmonMatrixTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonMatrix entries requested for + this report. + + When this object is created or modified, the probe SHOULD + set dsmonMatrixTopNCtlGrantedSize as closely to this object + as is possible for the particular probe implementation and + available resources." + DEFVAL { 150 } + ::= { dsmonMatrixTopNCtlEntry 7 } + +dsmonMatrixTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The maximum number of dsmonMatrix entries in this report. + + When the associated dsmonMatrixTopNCtlRequestedSize object + is created or modified, the probe SHOULD set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + probe MUST NOT lower this value except as a result of a + set to the associated dsmonMatrixTopNCtlRequestedSize + object. + + Protocol entries with the highest value of + dsmonMatrixTopNRate or dsmonMatrixTopNHCRate (depending on + the value of the associated dsmonMatrixTopNCtlRateBase + object) shall be placed in this table in decreasing order of + this rate until there is no more room or until there are no + more dsmonMatrix entries." + ::= { dsmonMatrixTopNCtlEntry 8 } + +dsmonMatrixTopNCtlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was last + started. In other words, this is the time that the + associated dsmonMatrixTopNCtlTimeRemaining object was + modified to start the requested report or the time the + report was last automatically (re)started. + + This object may be used by the management station to + determine if a report was missed or not." + ::= { dsmonMatrixTopNCtlEntry 9 } + +dsmonMatrixTopNCtlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { dsmonMatrixTopNCtlEntry 10 } + +dsmonMatrixTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The status of this dsmonMatrixTopNCtlEntry. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the dsmonMatrixTopNTable shall be deleted by the + agent." + ::= { dsmonMatrixTopNCtlEntry 11 } + +-- +-- dsmonMatrix TopN Table +-- + +dsmonMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those dsmonMatrix entries that have + counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonMatrixTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonMatrixTopNCtlTable. + + Note that dsmonMatrix entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonMatrixTopN reports." + ::= { dsmonMatrixObjects 5 } + +dsmonMatrixTopNEntry OBJECT-TYPE + SYNTAX DsmonMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixTopNTable. + + The dsmonMatrixTopNCtlIndex value in the index identifies + the dsmonMatrixTopNCtlEntry on whose behalf this entry was + created. + + + + + Entries in this table are ordered from 1 to 'N', where lower + numbers represent higher values of the rate base object, + over the report interval." + INDEX { dsmonMatrixTopNCtlIndex, dsmonMatrixTopNIndex } + ::= { dsmonMatrixTopNTable 1 } + +DsmonMatrixTopNEntry ::= SEQUENCE { + dsmonMatrixTopNIndex Integer32, + dsmonMatrixTopNAggGroup DsmonCounterAggGroupIndex, + dsmonMatrixTopNNLIndex Integer32, + dsmonMatrixTopNSourceAddress OCTET STRING, + dsmonMatrixTopNDestAddress OCTET STRING, + dsmonMatrixTopNALIndex Integer32, + dsmonMatrixTopNPktRate Gauge32, + dsmonMatrixTopNPktRateOvfl Gauge32, + dsmonMatrixTopNHCPktRate CounterBasedGauge64, + dsmonMatrixTopNRevPktRate Gauge32, + dsmonMatrixTopNRevPktRateOvfl Gauge32, + dsmonMatrixTopNHCRevPktRate CounterBasedGauge64, + dsmonMatrixTopNOctetRate Gauge32, + dsmonMatrixTopNOctetRateOvfl Gauge32, + dsmonMatrixTopNHCOctetRate CounterBasedGauge64, + dsmonMatrixTopNRevOctetRate Gauge32, + dsmonMatrixTopNRevOctetRateOvfl Gauge32, + dsmonMatrixTopNHCRevOctetRate CounterBasedGauge64 + } + +dsmonMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonMatrixTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report." + ::= { dsmonMatrixTopNEntry 1 } + +dsmonMatrixTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter aggregation group index value associated with + host identified in this entry. This object identifies the + dsmonAggGroupEntry with the same dsmonAggControlIndex value + as the associated dsmonMatrixCtlAggProfile object and the + same dsmonAggGroupIndex value as this object." + + + + ::= { dsmonMatrixTopNEntry 2 } + +dsmonMatrixTopNNLIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with the dsmonMatrixTopNSourceAddress + and dsmonMatrixTopNDestAddress objects in this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonMatrixTopN entry." + ::= { dsmonMatrixTopNEntry 3 } + +dsmonMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonMatrixSDSourceAddress value for the source network + host identified in this entry. The associated + dsmonMatrixTopNNLIndex object identifies the network + protocol type and the encoding rules for this object." + ::= { dsmonMatrixTopNEntry 4 } + +dsmonMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonMatrixSDDestAddress value for the destination + network host identified in this entry. The associated + dsmonMatrixTopNNLIndex object identifies the network + protocol type and the encoding rules for this object." + ::= { dsmonMatrixTopNEntry 5 } + +dsmonMatrixTopNALIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + application protocol associated with this entry. + + If the protocolDirEntry associated with the + + + + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonMatrixTopN entry." + ::= { dsmonMatrixTopNEntry 6 } + +dsmonMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the dsmonMatrixSDPkts + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNPkts, this variable will be used to sort this + report. + + If the value of the dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the the least significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object." + ::= { dsmonMatrixTopNEntry 7 } + +dsmonMatrixTopNPktRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCPktRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object, otherwise this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 8 } + +dsmonMatrixTopNHCPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the dsmonMatrixSDHCPkts + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts, this variable will be used to sort + this report. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 9 } + +dsmonMatrixTopNRevPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + dsmonMatrixDSPkts object (note that the corresponding + dsmonMatrixSDPkts object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.)" + ::= { dsmonMatrixTopNEntry 10 } + +dsmonMatrixTopNRevPktRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCRevPktRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCRevPktRate object, otherwise + this object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 11 } + +dsmonMatrixTopNHCRevPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + dsmonMatrixDSHCPkts object (note that the corresponding + dsmonMatrixSDHCPkts object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.) + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 12 } + +dsmonMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the dsmonMatrixSDOctets + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNOctets, this variable will be used to sort + this report. + + If the value of the dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the the least significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object." + ::= { dsmonMatrixTopNEntry 13 } + +dsmonMatrixTopNOctetRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCOctetRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCOctetRate object, otherwise this + + + + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 14 } + +dsmonMatrixTopNHCOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the + dsmonMatrixSDHCOctets object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCOctets, this variable will be used to sort + this report. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 15 } + +dsmonMatrixTopNRevOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + dsmonMatrixDSOctets object (note that the corresponding + dsmonMatrixSDOctets object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.)" + ::= { dsmonMatrixTopNEntry 16 } + +dsmonMatrixTopNRevOctetRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCRevOctetRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + + + + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCRevPktRate object, otherwise + this object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 17 } + +dsmonMatrixTopNHCRevOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + dsmonMatrixDSHCOctets object (note that the corresponding + dsmonMatrixSDHCOctets object selected is the one whose + source address is equal to dsmonMatrixTopNDestAddress and + whose destination address is equal to + dsmonMatrixTopNSourceAddress.) + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 18 } + +-- +-- Conformance Section +-- + +dsmonCompliances OBJECT IDENTIFIER ::= { dsmonConformance 1 } +dsmonGroups OBJECT IDENTIFIER ::= { dsmonConformance 2 } + +-- +-- Compliance for agents that do not support HC or Counter64 +-- + +dsmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonCapsGroup + + + + } + + GROUP dsmonStatsHCGroup + DESCRIPTION + "The dsmonStatsHCGroup is mandatory for systems which + implement High Capacity monitoring." + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "The dsmonPdistHCGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring on high capacity interfaces." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "The dsmonHostHCGroup is mandatory for systems which + implement RMON-2 nlHostTable based network protocol + monitoring, on high capacity interfaces." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "The dsmonMatrixHCGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring, on high capacity interfaces." + + ::= { dsmonCompliances 1 } + +-- +-- Compliance for agents that support HC and Counter64 +-- + + + + +dsmonHCCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB for agents which also + support High Capacity monitoring and the Counter64 data + type." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonStatsHCGroup, + dsmonCapsGroup + } + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "The dsmonPdistHCGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "The dsmonHostHCGroup is mandatory for systems which + implement RMON-2 nlHostTable based network protocol + monitoring." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "The dsmonMatrixHCGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + + + + monitoring." + + ::= { dsmonCompliances 2 } + +-- +-- Compliance for agents that support HC, but not Counter64 +-- + +dsmonHCNoC64Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB for an agent which + supports high capacity monitoring, but does not support the + Counter64 data type (e.g., only supports the SNMPv1 + protocol)." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonStatsOvflGroup, + dsmonCapsGroup + } + + GROUP dsmonStatsHCGroup + DESCRIPTION + "Implementation of the dsmonStatsHCGroup is not required. + High Capacity monitoring." + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistOvflGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "Implementation of the dsmonPdistHCGroup is not required." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + + + + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostOvflGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "Implementation of the dsmonHostHCGroup is not required." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixOvflGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "Implementation of the dsmonMatrixHCGroup is not required." + + ::= { dsmonCompliances 3 } + + + +-- Object Groups + +dsmonCounterAggControlGroup OBJECT-GROUP + OBJECTS { + dsmonMaxAggGroups, + dsmonAggControlLocked, + dsmonAggControlChanges, + dsmonAggControlLastChangeTime, + dsmonAggControlDescr, + dsmonAggControlOwner, + dsmonAggControlStatus, + dsmonAggGroupIndex, + dsmonAggGroupDescr, + dsmonAggGroupStatus + } + STATUS current + DESCRIPTION + + + + "A collection of objects used to configure and manage + counter aggregation groups for DSMON collection purposes." + ::= { dsmonGroups 1 } + +dsmonStatsGroup OBJECT-GROUP + OBJECTS { + dsmonStatsControlDataSource, + dsmonStatsControlAggProfile, + dsmonStatsControlDroppedFrames, + dsmonStatsControlCreateTime, + dsmonStatsControlOwner, + dsmonStatsControlStatus, + dsmonStatsInPkts, + dsmonStatsInOctets, + dsmonStatsOutPkts, + dsmonStatsOutOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing per DSCP statistics." + ::= { dsmonGroups 2 } + +dsmonStatsOvflGroup OBJECT-GROUP + OBJECTS { + dsmonStatsInOvflPkts, + dsmonStatsInOvflOctets, + dsmonStatsOutOvflPkts, + dsmonStatsOutOvflOctets + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per-DSCP overflow + counters for systems with high capacity data sources, but + without support for the Counter64 data type." + ::= { dsmonGroups 3 } + +dsmonStatsHCGroup OBJECT-GROUP + OBJECTS { + dsmonStatsInHCPkts, + dsmonStatsInHCOctets, + dsmonStatsOutHCPkts, + dsmonStatsOutHCOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing per DSCP statistics for + high capacity data sources." + ::= { dsmonGroups 4 } + + + +dsmonPdistGroup OBJECT-GROUP + OBJECTS { + dsmonPdistCtlDataSource, + dsmonPdistCtlAggProfile, + dsmonPdistCtlMaxDesiredEntries, + dsmonPdistCtlDroppedFrames, + dsmonPdistCtlInserts, + dsmonPdistCtlDeletes, + dsmonPdistCtlCreateTime, + dsmonPdistCtlOwner, + dsmonPdistCtlStatus, + dsmonPdistStatsPkts, + dsmonPdistStatsOctets, + dsmonPdistStatsCreateTime, + dsmonPdistTopNCtlPdistIndex, + dsmonPdistTopNCtlRateBase, + dsmonPdistTopNCtlTimeRemaining, + dsmonPdistTopNCtlGeneratedReprts, + dsmonPdistTopNCtlDuration, + dsmonPdistTopNCtlRequestedSize, + dsmonPdistTopNCtlGrantedSize, + dsmonPdistTopNCtlStartTime, + dsmonPdistTopNCtlOwner, + dsmonPdistTopNCtlStatus, + dsmonPdistTopNPDLocalIndex, + dsmonPdistTopNAggGroup, + dsmonPdistTopNRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per protocol DSCP + monitoring extensions to the RMON-2 MIB." + ::= { dsmonGroups 5 } + +dsmonPdistOvflGroup OBJECT-GROUP + OBJECTS { + dsmonPdistStatsOvflPkts, + dsmonPdistStatsOvflOctets, + dsmonPdistTopNRateOvfl + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per-protocol DSCP + overflow counters for systems with high capacity data + sources, but without support for the Counter64 data type." + ::= { dsmonGroups 6 } + +dsmonPdistHCGroup OBJECT-GROUP + + + + OBJECTS { + dsmonPdistStatsHCPkts, + dsmonPdistStatsHCOctets, + dsmonPdistTopNHCRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per protocol DSCP + monitoring extensions to the RMON-2 MIB for High Capacity + networks." + ::= { dsmonGroups 7 } + +dsmonHostGroup OBJECT-GROUP + OBJECTS { + dsmonHostCtlDataSource, + dsmonHostCtlAggProfile, + dsmonHostCtlMaxDesiredEntries, + dsmonHostCtlIPv4PrefixLen, + dsmonHostCtlIPv6PrefixLen, + dsmonHostCtlDroppedFrames, + dsmonHostCtlInserts, + dsmonHostCtlDeletes, + dsmonHostCtlCreateTime, + dsmonHostCtlOwner, + dsmonHostCtlStatus, + dsmonHostInPkts, + dsmonHostInOctets, + dsmonHostOutPkts, + dsmonHostOutOctets, + dsmonHostCreateTime, + dsmonHostTopNCtlHostIndex, + dsmonHostTopNCtlRateBase, + dsmonHostTopNCtlTimeRemaining, + dsmonHostTopNCtlGeneratedReports, + dsmonHostTopNCtlDuration, + dsmonHostTopNCtlRequestedSize, + dsmonHostTopNCtlGrantedSize, + dsmonHostTopNCtlStartTime, + dsmonHostTopNCtlOwner, + dsmonHostTopNCtlStatus, + dsmonHostTopNPDLocalIndex, + dsmonHostTopNAddress, + dsmonHostTopNAggGroup, + dsmonHostTopNRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per Host monitoring + + + + functions." + ::= { dsmonGroups 8 } + +dsmonHostOvflGroup OBJECT-GROUP + OBJECTS { + dsmonHostInOvflPkts, + dsmonHostInOvflOctets, + dsmonHostOutOvflPkts, + dsmonHostOutOvflOctets, + dsmonHostTopNRateOvfl + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per host DSCP overflow + counters for systems with high capacity data sources, but + without support for the Counter64 data type." + ::= { dsmonGroups 9 } + +dsmonHostHCGroup OBJECT-GROUP + OBJECTS { + dsmonHostInHCPkts, + dsmonHostInHCOctets, + dsmonHostOutHCPkts, + dsmonHostOutHCOctets, + dsmonHostTopNHCRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per Host monitoring + functions for High Capacity networks." + ::= { dsmonGroups 10 } + +dsmonCapsGroup OBJECT-GROUP + OBJECTS { + dsmonCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects providing an indication of the + DSMON monitoring functions supported by the agent." + ::= { dsmonGroups 11 } + +dsmonMatrixGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixCtlDataSource, + dsmonMatrixCtlAggProfile, + dsmonMatrixCtlMaxDesiredEntries, + dsmonMatrixCtlDroppedFrames, + + + + dsmonMatrixCtlInserts, + dsmonMatrixCtlDeletes, + dsmonMatrixCtlCreateTime, + dsmonMatrixCtlOwner, + dsmonMatrixCtlStatus, + dsmonMatrixSDPkts, + dsmonMatrixSDOctets, + dsmonMatrixSDCreateTime, + dsmonMatrixDSPkts, + dsmonMatrixDSOctets, + dsmonMatrixDSCreateTime, + dsmonMatrixTopNCtlMatrixIndex, + dsmonMatrixTopNCtlRateBase, + dsmonMatrixTopNCtlTimeRemaining, + dsmonMatrixTopNCtlGeneratedRpts, + dsmonMatrixTopNCtlDuration, + dsmonMatrixTopNCtlRequestedSize, + dsmonMatrixTopNCtlGrantedSize, + dsmonMatrixTopNCtlStartTime, + dsmonMatrixTopNCtlOwner, + dsmonMatrixTopNCtlStatus, + dsmonMatrixTopNAggGroup, + dsmonMatrixTopNNLIndex, + dsmonMatrixTopNSourceAddress, + dsmonMatrixTopNDestAddress, + dsmonMatrixTopNALIndex, + dsmonMatrixTopNPktRate, + dsmonMatrixTopNRevPktRate, + dsmonMatrixTopNOctetRate, + dsmonMatrixTopNRevOctetRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions." + ::= { dsmonGroups 12 } + +dsmonMatrixOvflGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixSDOvflPkts, + dsmonMatrixSDOvflOctets, + dsmonMatrixDSOvflPkts, + dsmonMatrixDSOvflOctets, + dsmonMatrixTopNPktRateOvfl, + dsmonMatrixTopNRevPktRateOvfl, + dsmonMatrixTopNOctetRateOvfl, + dsmonMatrixTopNRevOctetRateOvfl + } + + + + STATUS deprecated + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions for systems with high capacity data + sources, but without support for the Counter64 data type." + ::= { dsmonGroups 13 } + +dsmonMatrixHCGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixSDHCPkts, + dsmonMatrixSDHCOctets, + dsmonMatrixDSHCPkts, + dsmonMatrixDSHCOctets, + dsmonMatrixTopNHCPktRate, + dsmonMatrixTopNHCRevPktRate, + dsmonMatrixTopNHCOctetRate, + dsmonMatrixTopNHCRevOctetRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions for High Capacity networks." + ::= { dsmonGroups 14 } + +END diff --git a/mibs/ietf/EBN-MIB b/mibs/ietf/EBN-MIB new file mode 100644 index 0000000..0a29304 --- /dev/null +++ b/mibs/ietf/EBN-MIB @@ -0,0 +1,751 @@ +EBN-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + SnaControlPointName + -- Because the characters allowed in an SNA control + -- point name come from a restricted character set, + -- these names are not subject to internationalization. + FROM APPN-MIB + snanauMIB + FROM SNA-NAU-MIB; + + ebnMIB MODULE-IDENTITY + LAST-UPDATED "9804281800Z" -- April 28, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + + DESCRIPTION + " The MIB Module for Extended Border Node" + + ::= { snanauMIB 7 } + + -- snanauMIB ::= { mib-2 34 } + + -- ****************************************************************** + -- Textual Conventions + -- ------------------------------------------------------------------ + SnaNAUWildcardName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Fully-qualified network NAU name. Entries take one of three + forms: + - Explicit entries do not contain the character '*'. + - Partial Wildcard entries have the form 'ccc*', where + 'ccc' represents one to sixteen characters in a legal + SNA NAU Name. + - A full wildcard consists of a single character '*'. + + Because the characters allowed in an SNA NAU name come from + a restricted character set, these names are not subject to + internationalization." + + SYNTAX DisplayString(SIZE(1..17)) + + -- ****************************************************************** + ebnObjects OBJECT IDENTIFIER ::= { ebnMIB 1 } + -- ****************************************************************** + + -- ****************************************************************** + -- EBN Directory Group + -- The ebnDirTable is an extension to the appnDirTable. It specifies + -- the subnet affiliation for LUs in the EBN's directory. + -- ****************************************************************** + + ebnDir OBJECT IDENTIFIER ::= { ebnObjects 1 } + + ebnDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN Directory Table. This table is an extension + to the APPN MIB's appnDirTable. Entries in this table + are in one-to-one correspondence with entries in the + appnDirTable, with corresponding entries having identical + values for their respective indexes." + + ::= { ebnDir 1 } + + ebnDirEntry OBJECT-TYPE + SYNTAX EbnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the EBN Directory Table." + + INDEX { ebnDirLuName } + + ::= { ebnDirTable 1 } + + EbnDirEntry ::= SEQUENCE { + ebnDirLuName SnaNAUWildcardName, + ebnDirSubnetAffiliation INTEGER } + + ebnDirLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name in the domain of a serving + network node. If this object has the same value as the + appnDirLuName object in the APPN MIB, then the two objects + are referring to the same LU." + + ::= { ebnDirEntry 1 } + + ebnDirSubnetAffiliation OBJECT-TYPE + SYNTAX INTEGER { native (1), + nonNative (2), + subarea (3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the subnetwork affiliation of the LU: + - native(1) : The LU is in the native APPN subnetwork. + - nonNative(2) : The LU is in a non-native APPN subnetwork. + - subarea(3) : The LU is in a subarea network." + + ::= { ebnDirEntry 2 } + + -- ****************************************************************** + -- EBN Intermediate Session RSCV Group + -- This table is a sparse extension to the appnIsInTable. For + -- sessions crossing ISTGs adjacent to the EBN, it contains the RSCV + -- and COS used in the direction of the BIND destination. + -- ****************************************************************** + + ebnIsRscv OBJECT IDENTIFIER ::= { ebnObjects 2 } + + ebnIsRscvTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnIsRscvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN Intermediate Session RSCV table. This table is an + extension to the appnIsInTable. It contains the RSCV and COS + used in the direction of the BIND destination. There is an + entry in this table for each session that traverses an ISTG + when it enters or leaves this EBN, with corresponding entries + having identical values for their respective indexes." + + ::= { ebnIsRscv 1} + + ebnIsRscvEntry OBJECT-TYPE + SYNTAX EbnIsRscvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in ebnIsRscvTable." + INDEX { ebnIsRscvCpName, + ebnIsRscvPcid } + + ::= { ebnIsRscvTable 1 } + + EbnIsRscvEntry ::= SEQUENCE { + ebnIsRscvCpName SnaControlPointName, + ebnIsRscvPcid OCTET STRING, + ebnIsRscvDestinationRoute OCTET STRING, + ebnIsRscvDestinationCos DisplayString } + + ebnIsRscvCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at + which the session and PCID originated. For APPN and LEN + nodes, this is either CP name of the APPN node at which + the origin LU is located or the CP name of the NN serving + the LEN node at which the origin LU is located. For DLUR + resources it is the name of the owning SSCP. + + If this object has the same value as the appnIsInFqCpName + object in the APPN MIB, then the two objects are referring to + the same APPN control point." + + ::= { ebnIsRscvEntry 1 } + + ebnIsRscvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. + It is an 8-octet value. + + If this object has the same value as the appnIsInPcid object + in the APPN MIB, and if the corresponding ebnIsRscvCpName + object has the same value as the corresponding + appnIsInFqCpName object, then the entries indexed by these + objects are referring to the same session." + + ::= { ebnIsRscvEntry 2 } + + ebnIsRscvDestinationRoute OBJECT-TYPE + SYNTAX OCTET STRING(SIZE (0..255)) + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The route selection control vector (RSCV x'2B') used in the + direction towards the SLU." + + ::= { ebnIsRscvEntry 3 } + + ebnIsRscvDestinationCos OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used in the direction + towards the SLU. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnIsRscvEntry 4 } + + -- ****************************************************************** + -- EBN Directory Config Group + -- The following simple objects provide information about EBN + -- directory. + -- ****************************************************************** + + ebnDirConfig OBJECT IDENTIFIER ::= { ebnObjects 3 } + + ebnSearchCacheTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in minutes an extended border node will + retain information about a multi-subnetwork search, once + that that search terminates. A value 0 indicates that the + EBN has no defined limit, and the number of entries is + bounded only by memory." + + ::= { ebnDirConfig 1 } + + ebnMaxSearchCache OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of multi-subnet entries to be cached. + The value 0 indicates that the local node has no defined + limit, and the number of entries is bounded only by + memory." + + ::= { ebnDirConfig 2 } + + ebnDefaultSubnetVisitCount OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "topology subnetworks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default maximum number of subnetworks a LOCATE search + procedure may traverse." + + ::= { ebnDirConfig 3 } + + -- ****************************************************************** + -- EBN COS Mapping Group + -- The ebnCosMap Table specifies how non-native COS values are mapped + -- to COS values defined in the native subnetwork. The COS mappings + -- that an EBN performs are determined by multiple factors, one of + -- which is a set of user-defined mappings. This table returns the + -- COS mappings that the EBN is actually performing, rather than + -- the user-defined mappings. + -- ****************************************************************** + ebnCOS OBJECT IDENTIFIER ::= { ebnObjects 4 } + + ebnCosMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnCosMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN COS Mapping Table. This table specifies how non- + native COS values are mapped to COS values defined in the + native subnetwork. + + Note: The COS mappings that an EBN performs are determined + by multiple factors, one of which is a set of user-defined + initial mappings. This table returns the COS mappings that + the EBN is actually performing at the time it is queried, + rather than the user-defined initial ones." + + ::= { ebnCOS 1 } + + ebnCosMapEntry OBJECT-TYPE + SYNTAX EbnCosMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EBN COS Mapping table." + + INDEX { ebnCosMapCpName, + ebnCosMapNonNativeCos } + + ::= { ebnCosMapTable 1 } + + EbnCosMapEntry ::= SEQUENCE { + ebnCosMapCpName SnaNAUWildcardName, + ebnCosMapNonNativeCos DisplayString, + ebnCosMapNativeCos DisplayString } + + ebnCosMapCpName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network CP name for which the COS mapping + applies." + + ::= { ebnCosMapEntry 1 } + + ebnCosMapNonNativeCos OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains one of the following values: + + - An 8-character COS name used in a non-native subnetwork. + - The single character '*', identifying the entry with the + default native COS for a non-native CP name. This entry + is used when there is no entry in the table for a + non-native CP name / non-native COS pair. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnCosMapEntry 2 } + + ebnCosMapNativeCos OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An 8-byte name for the class-of-service, as known in the + native subnetwork. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnCosMapEntry 3 } + + -- ****************************************************************** + -- EBN Subnet Routing List Group + -- The EBN Subnet Routing List indicates to which nodes an EBN + -- forwards search request. This group contains information + -- pertaining to the CONFIGURED Subnet Routing List at an EBN. How a + -- particular search request is routed is determined by a transient + -- list that the EBN creates based on the configured list and other + -- factors. + -- ******************************************************************* + + ebnSubnetRoutingList OBJECT IDENTIFIER ::= { ebnObjects 5 } + + ebnSubnetSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnSubnetSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each fully qualified LU + name for which an associated subnet routing list has been + defined. An entry in this table contains general + characteristics of the subnet search routing list for an + LU name. The routing list itself is represented by a set + of contiguous entries in the ebnSearchTable." + + ::= { ebnSubnetRoutingList 1 } + + ebnSubnetSearchEntry OBJECT-TYPE + SYNTAX EbnSubnetSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for the ebnSubnetSearchTable. The entry + represents the configured parameters the EBN uses when it + is determining how to search for the LU identified by the + ebnSubnetSearchLuName object." + + INDEX { ebnSubnetSearchLuName } + + ::= { ebnSubnetSearchTable 1 } + + EbnSubnetSearchEntry ::= SEQUENCE { + ebnSubnetSearchLuName SnaNAUWildcardName, + ebnSubnetSearchDynamics INTEGER, + ebnSubnetSearchOrdering INTEGER } + + ebnSubnetSearchLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name." + + ::= { ebnSubnetSearchEntry 1 } + + ebnSubnetSearchDynamics OBJECT-TYPE + SYNTAX INTEGER { none(1), + limited (2), + full (3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether an EBN may add dynamic entries to a + subnetwork routing list. none(1) means no entries may be + added to the subnetwork routing list. limited(2) means + only likely entries may be added to the subnetwork routing + list. full(3) means all native extended border nodes and + adjacent, non-native EBNs and NNs will be added to the + subnetwork routing list." + + ::= { ebnSubnetSearchEntry 2 } + + ebnSubnetSearchOrdering OBJECT-TYPE + SYNTAX INTEGER{ priority(1), + defined(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether an EBN may reorder a subnetwork routing + list so that entries which are more likely to be successful + move to the top of the subnetwork routing list and entries + which are more likely to be unsuccessful move to the bottom + of the list. + The following values are defined: + + - priority(1): Entries may be reordered. + - defined(2): Entries must not be reordered." + + ::= { ebnSubnetSearchEntry 3 } + + -- Border node search table + + ebnSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table indicates the CONFIGURED list of control points + to which the EBN sends Locate searches for a given fully + qualified LU name. Each entry in the table indicates one + control point that should be included in a multi-subnet + search for a particular LU name." + + ::= { ebnSubnetRoutingList 2 } + + ebnSearchEntry OBJECT-TYPE + SYNTAX EbnSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ebnSearchTable. An entry can exist in + this table only if an entry exists in the + ebnSubnetSearchTable with an ebnSubnetSearchLuName value + matching this entry's ebnSearchLuName. + For a given ebnSearchLuName value, the ordering of entries + provides by the ebnSearchIndex values corresponds to the + order in which the control points to be searched appear in + the CONFIGURED search list for the ebnSearchLuName." + + INDEX { ebnSearchLuName, + ebnSearchIndex } + + ::= { ebnSearchTable 1 } + + EbnSearchEntry ::= SEQUENCE { + ebnSearchLuName SnaNAUWildcardName, + ebnSearchIndex Unsigned32, + ebnSearchCpName DisplayString, + ebnSearchSNVC Unsigned32 } + + ebnSearchLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name. If this object has the + same value as the ebnSubnetSearchLuName object, then the + two objects are referring to the same LU." + + ::= { ebnSearchEntry 1 } + + ebnSearchIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index enumerating the CONFIGURED order in which + a search is forwarded to CPs for a particular LU name. The + order for an actual search is determined dynamically by the + EBN, based on this configured information and on other + factors, including whether search dynamics and search + ordering are enabled. Information on these last two settings + is available in, respectively, the ebnSubnetSearchDynamics + and ebnSubnetSearch ordering objects." + + ::= { ebnSearchEntry 2 } + + ebnSearchCpName OBJECT-TYPE + SYNTAX DisplayString(SIZE(1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the CP(s) to which a search should be + forwarded. It either follows the SnaNAUWildcardName textual + convention or takes one of the following special formats: + + '*' indicates that all native EBNs and all adjacent non- + native EBNs and NNs may be added to the routing list + dynamically, + + '*SELF' indicates that the EBN should search itself and + its native subnetwork at this time during the + cross-subnet search, + + '*EBNS' indicates all native EBNs. + + Because the characters allowed in a CP name come from a + restricted character set, and because the three formats + listed here use no special characters, this object is not + subject to internationalization." + + ::= { ebnSearchEntry 3 } + + ebnSearchSNVC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of subnets a Locate search procedure may + traverse. " + + ::= { ebnSearchEntry 4 } + + -- ******************************************************************* + -- HPR Extended Border Node Intermediate Session Group + -- The hbnIsInTable is a sparse extension to the appnIsInTable. + -- For sessions that use back-to-back RTP connections in an HBN, + -- this table provides the network connection endpoint identifier + -- (NceId) and the transport connection identifier (Tcid) for the + -- second RTP connection. + -- ******************************************************************* + + hbn OBJECT IDENTIFIER ::= { ebnObjects 6 } + + hbnIsInTable OBJECT-TYPE + SYNTAX SEQUENCE OF HbnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HBN Intermediate Session table." + ::= { hbn 1} + + hbnIsInEntry OBJECT-TYPE + SYNTAX HbnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HBN Intermediate Session Table. An entry + exists in this table for every intermediate session being + routed between back-to-back RTP connections in the HBN. + + When an entry for a session exists in this table, the + NceIds and Tcids for the back-to-back RTP connections are + made available in the following four objects: + + RTP connection in the direction of the PLU: + - NceId: appnIsInRtpNceId (in the APPN MIB) + - Tcid: appnIsinRtpTcid (in the APPN MIB). + + RTP connection in the direction of the SLU: + - NceId: hbnIsInRtpNceId (in this table) + - Tcid: hbnIsInRtpTcid (in this table)." + + INDEX { hbnIsInFqCpName, + hbnIsInPcid } + + ::= { hbnIsInTable 1 } + + HbnIsInEntry ::= SEQUENCE { + hbnIsInFqCpName SnaControlPointName, + hbnIsInPcid OCTET STRING, + hbnIsInRtpNceId OCTET STRING, + hbnIsInRtpTcid OCTET STRING } + + hbnIsInFqCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at + which the session and PCID originated. For APPN and LEN + nodes, this is either the CP name of the APPN node at + which the origin LU is located or the CP name of the NN + serving the LEN node at which the origin LU is located. + + If this object has the same value as the appnIsInFqCpName + object in the APPN MIB, then the two objects are referring + to the same APPN control point." + ::= { hbnIsInEntry 1 } + + hbnIsInPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. + It is an 8-octet value. + + If this object has the same value as the appnIsInPcid object + in the APPN MIB, and if the corresponding hbnIsInFqCpName + object has the same value as the corresponding + appnIsInFqCpName object, then the entries indexed by these + objects are referring to the same session." + + ::= { hbnIsInEntry 2 } + + hbnIsInRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The HPR local Network Connection Endpoint of the session in + the direction of the SLU." + + ::= { hbnIsInEntry 3 } + + hbnIsInRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP connection local TCID of the session in the direction + of the SLU." + + ::= { hbnIsInEntry 4 } + + -- ******************************************************************* + -- Conformance Statement + -- ******************************************************************* + ebnConformance OBJECT IDENTIFIER ::= { ebnMIB 2 } + + ebnCompliances OBJECT IDENTIFIER ::= { ebnConformance 1 } + ebnGroups OBJECT IDENTIFIER ::= { ebnConformance 2 } + + -- Compliance statements + ebnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the ebnMIB." + + MODULE -- this module + + -- Unconditionally mandatory groups + MANDATORY-GROUPS { + ebnDirectoryGroup, + ebnIsRscvGroup, + ebnDirectoryConfigGroup, + ebnCosMappingGroup, + ebnSubnetRoutingListGroup } + + -- Conditionally mandatory groups + GROUP hbnIsInGroup + DESCRIPTION + "The hbnIsInGroup is mandatory only for HPR extended border + nodes." + + ::= {ebnCompliances 1 } + + -- Group definitions + ebnDirectoryGroup OBJECT-GROUP + OBJECTS { ebnDirSubnetAffiliation } + STATUS current + DESCRIPTION + "The EBN-related directory objects." + + ::= { ebnGroups 1 } + + + ebnIsRscvGroup OBJECT-GROUP + OBJECTS { ebnIsRscvDestinationRoute, + ebnIsRscvDestinationCos } + STATUS current + DESCRIPTION + "Two objects representing RSCV and class of service + information saved by an EBN." + + ::= { ebnGroups 2 } + + ebnDirectoryConfigGroup OBJECT-GROUP + OBJECTS { ebnSearchCacheTime, + ebnMaxSearchCache, + ebnDefaultSubnetVisitCount } + STATUS current + DESCRIPTION + "The EBN Directory Configuration Group." + + ::= { ebnGroups 3 } + + ebnCosMappingGroup OBJECT-GROUP + OBJECTS { ebnCosMapNativeCos } + STATUS current + DESCRIPTION + "The EBN COS Mapping Group." + + ::= { ebnGroups 4 } + + ebnSubnetRoutingListGroup OBJECT-GROUP + OBJECTS { ebnSubnetSearchDynamics, + ebnSubnetSearchOrdering, + ebnSearchCpName, + ebnSearchSNVC } + STATUS current + DESCRIPTION + "The Subnet Routing List Group." + + ::= { ebnGroups 5 } + + hbnIsInGroup OBJECT-GROUP + OBJECTS { hbnIsInRtpNceId, hbnIsInRtpTcid } + STATUS current + DESCRIPTION + "The HBN-related Intermediate Session Objects." + + ::= { ebnGroups 6 } + +END diff --git a/mibs/ietf/EFM-CU-MIB b/mibs/ietf/EFM-CU-MIB new file mode 100644 index 0000000..d6ed01d --- /dev/null +++ b/mibs/ietf/EFM-CU-MIB @@ -0,0 +1,3162 @@ +EFM-CU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, TruthValue, RowStatus, PhysAddress + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex, ifSpeed + FROM IF-MIB -- [RFC2863] + ; + + efmCuMIB MODULE-IDENTITY + LAST-UPDATED "200711140000Z" -- November 14, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/OLD/hubmib-charter.html + + + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Phone: +972-3-924-3491 + Email: edward.beili@actelis.com" + + DESCRIPTION + "The objects in this MIB module are used to manage + the Ethernet in the First Mile (EFM) Copper (EFMCu) Interfaces + 2BASE-TL and 10PASS-TS, defined in IEEE Std. 802.3ah-2004, + which is now a part of IEEE Std. 802.3-2005. + + The following references are used throughout this MIB module: + + [802.3ah] refers to: + IEEE Std 802.3ah-2004: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - + Part 3: Carrier Sense Multiple Access with Collision + Detection (CSMA/CD) Access Method and Physical Layer + Specifications - + Amendment: Media Access Control Parameters, Physical + Layers and Management Parameters for Subscriber Access + Networks', 07 September 2004. + + Of particular interest are Clause 61, 'Physical Coding + Sublayer (PCS) and common specifications, type 10PASS-TS and + type 2BASE-TL', Clause 30, 'Management', Clause 45, + 'Management Data Input/Output (MDIO) Interface', Annex 62A, + 'PMD profiles for 10PASS-TS' and Annex 63A, 'PMD profiles for + 2BASE-TL'. + + + + + [G.991.2] refers to: + ITU-T Recommendation G.991.2: 'Single-pair High-speed Digital + Subscriber Line (SHDSL) transceivers', December 2003. + + [ANFP] refers to: + NICC Document ND1602:2005/08: 'Specification of the Access + Network Frequency Plan (ANFP) applicable to transmission + systems used on the BT Access Network,' August 2005. + + The following normative documents are quoted by the DESCRIPTION + clauses in this MIB module: + + [G.993.1] refers to: + ITU-T Recommendation G.993.1: 'Very High speed Digital + Subscriber Line transceivers', June 2004. + + [T1.424] refers to: + ANSI T1.424-2004: 'Interface Between Networks and Customer + Installation Very-high-bit-rate Digital Subscriber Lines + (VDSL) Metallic Interface (DMT Based)', June 2004. + + [TS 101 270-1] refers to: + ETSI TS 101 270-1: 'Transmission and Multiplexing (TM); + Access transmission systems on metallic access cables; + Very high speed Digital Subscriber Line (VDSL); Part 1: + Functional requirements', October 2005. + + Naming Conventions: + Atn - Attenuation + CO - Central Office + CPE - Customer Premises Equipment + EFM - Ethernet in the First Mile + EFMCu - EFM Copper + MDIO - Management Data Input/Output + Mgn - Margin + PAF - PME Aggregation Function + PBO - Power Back-Off + PCS - Physical Coding Sublayer + PMD - Physical Medium Dependent + PME - Physical Medium Entity + PSD - Power Spectral Density + SNR - Signal to Noise Ratio + TCPAM - Trellis Coded Pulse Amplitude Modulation + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 5066; see the RFC + itself for full legal notices." + + + + + REVISION "200711140000Z" -- November 14, 2007 + DESCRIPTION "Initial version, published as RFC 5066." + + ::= { mib-2 167 } + + -- Sections of the module + + efmCuObjects OBJECT IDENTIFIER ::= { efmCuMIB 1 } + + efmCuConformance OBJECT IDENTIFIER ::= { efmCuMIB 2 } + + -- Groups in the module + + efmCuPort OBJECT IDENTIFIER ::= { efmCuObjects 1 } + + efmCuPme OBJECT IDENTIFIER ::= { efmCuObjects 2 } + + -- Textual Conventions + + EfmProfileIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each PME configuration + profile in the managed EFMCu port. It is RECOMMENDED that + values are assigned contiguously starting from 1. The value + for each profile MUST remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + SYNTAX Unsigned32 (1..255) + + EfmProfileIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + EfmProfileIndex convention. The latter defines a greater than + zero value used to identify a PME profile in the managed EFMCu + port. This extension permits the additional value of zero. + The value of zero is object-specific and MUST therefore be + defined as part of the description of any object that uses + this syntax. + Examples of the usage of zero value might include situations + where the current operational profile is unknown." + SYNTAX Unsigned32 (0..255) + + EfmProfileIndexList ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d:" + + + + STATUS current + DESCRIPTION + "This textual convention represents a list of up to 6 + EfmProfileIndex values, any of which can be chosen for + configuration of a PME in a managed EFMCu port. + The EfmProfileIndex textual convention defines a greater than + zero value used to identify a PME profile. + The value of this object is a concatenation of zero or + more (up to 6) octets, where each octet contains an 8-bit + EfmProfileIndex value. + A zero-length octet string is object-specific and MUST + therefore be defined as part of the description of any object + that uses this syntax. Examples of the usage of a zero-length + value might include situations where an object using this + textual convention is irrelevant for a specific EFMCu port + type." + SYNTAX OCTET STRING (SIZE(0..6)) + + EfmTruthValueOrUnknown ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is an extension of the TruthValue + convention. The latter defines a boolean value with possible + values of true(1) and false(2). This extension permits the + additional value of unknown(0), which can be returned as the + result of a GET operation when an exact true or false value + of the object cannot be determined." + SYNTAX INTEGER { unknown(0), true(1), false(2) } + + -- Port Notifications Group + + efmCuPortNotifications OBJECT IDENTIFIER ::= { efmCuPort 0 } + + efmCuLowRateCrossing NOTIFICATION-TYPE + OBJECTS { + ifSpeed, + efmCuThreshLowRate + } + STATUS current + DESCRIPTION + "This notification indicates that the EFMCu port's data rate + has reached/dropped below or exceeded the low rate threshold, + specified by efmCuThreshLowRate. + + This notification MAY be sent for the -O subtype ports + (2BaseTL-O/10PassTS-O) while the port is Up, on the crossing + event in both directions: from normal (rate is above the + threshold) to low (rate equals the threshold or below it) and + + + + from low to normal. This notification is not applicable to + the -R subtypes. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent simultaneous LinkUp/LinkDown and + efmCuLowRateCrossing notifications to be sent. + + The adaptive nature of the EFMCu technology allows the port to + adapt itself to the changes in the copper environment, e.g., + an impulse noise, alien crosstalk, or a micro-interruption may + temporarily drop one or more PMEs in the aggregation group, + causing a rate degradation of the aggregated EFMCu link. + The dropped PMEs would then try to re-initialize, possibly at + a lower rate than before, adjusting the rate to provide + required target SNR margin. + + Generation of this notification is controlled by the + efmCuLowRateCrossingEnable object." + ::= { efmCuPortNotifications 1 } + + -- PCS Port group + + efmCuPortConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for Configuration of EFMCu 2BASE-TL/10PASS-TS (PCS) + Ports. Entries in this table MUST be maintained in a + persistent manner." + ::= { efmCuPort 1 } + + efmCuPortConfEntry OBJECT-TYPE + SYNTAX EfmCuPortConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Configuration table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortConfTable 1 } + + EfmCuPortConfEntry ::= + SEQUENCE { + efmCuPAFAdminState INTEGER, + + + + efmCuPAFDiscoveryCode PhysAddress, + efmCuAdminProfile EfmProfileIndexList, + efmCuTargetDataRate Unsigned32, + efmCuTargetSnrMgn Unsigned32, + efmCuAdaptiveSpectra TruthValue, + efmCuThreshLowRate Unsigned32, + efmCuLowRateCrossingEnable TruthValue + } + + efmCuPAFAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administrative (desired) state of the PAF of the EFMCu port + (PCS). + When 'disabled', PME aggregation will not be performed by the + PCS. No more than a single PME can be assigned to this PCS in + this case. + When 'enabled', PAF will be performed by the PCS when the link + is Up, even on a single attached PME, if PAF is supported. + + PCS ports incapable of supporting PAF SHALL return a value of + 'disabled'. Attempts to 'enable' such ports SHALL be + rejected. + + A PAF 'enabled' port with multiple PMEs assigned cannot be + 'disabled'. Attempts to 'disable' such port SHALL be + rejected, until at most one PME is left assigned. + + Changing PAFAdminState is a traffic-disruptive operation and + as such SHALL be done when the link is Down. Attempts to + change this object SHALL be rejected if the link is Up or + Initializing. + + This object maps to the Clause 30 attribute aPAFAdminState. + + If a Clause 45 MDIO Interface to the PCS is present, then this + object maps to the PAF enable bit in the 10P/2B PCS control + register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 61.2.2, 45.2.3.18.3" + ::= { efmCuPortConfEntry 1 } + + + + efmCuPAFDiscoveryCode OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0|6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "PAF Discovery Code of the EFMCu port (PCS). + A unique 6-octet code used by the Discovery function, + when PAF is supported. + PCS ports incapable of supporting PAF SHALL return a + zero-length octet string on an attempt to read this object. + An attempt to write to this object SHALL be rejected for such + ports. + This object MUST be instantiated for the -O subtype PCS before + writing operations on the efmCuPAFRemoteDiscoveryCode + (Set_if_Clear and Clear_if_Same) are performed by PMEs + associated with the PCS. + The initial value of this object for -R subtype ports after + reset is all zeroes. For -R subtype ports, the value of this + object cannot be changed directly. This value may be changed + as a result of writing operation on the + efmCuPAFRemoteDiscoveryCode object of remote PME of -O + subtype, connected to one of the local PMEs associated with + the PCS. + + Discovery MUST be performed when the link is Down. + Attempts to change this object MUST be rejected (in case of + SNMP with the error inconsistentValue), if the link is Up or + Initializing. + + The PAF Discovery Code maps to the local Discovery code + variable in PAF (note that it does not have a corresponding + Clause 45 register)." + REFERENCE + "[802.3ah] 61.2.2.8.3, 61.2.2.8.4, 45.2.6.6.1, 45.2.6.8, + 61A.2" + ::= { efmCuPortConfEntry 2 } + + efmCuAdminProfile OBJECT-TYPE + SYNTAX EfmProfileIndexList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired configuration profile(s), common for all PMEs in the + EFMCu port. This object is a list of pointers to entries in + either efmCuPme2BProfileTable or + efmCuPme10PProfileTable, depending on the current + operating SubType of the EFMCu port as indicated by + efmCuPortSide. + + + + The value of this object is a list of up to 6 indices of + profiles. If this list consists of a single profile index, + then all PMEs assigned to this EFMCu port SHALL be configured + according to the profile referenced by that index, unless it + is overwritten by a corresponding non-zero + efmCuPmeAdminProfile instance, which takes precedence over + efmCuAdminProfile. + A list consisting of more than one index allows each PME + in the port to be configured according to any profile + specified in the list. + By default, this object has a value of 0x01, referencing the + 1st entry in efmCuPme2BProfileTable or + efmCuPme10PProfileTable. + + This object is writable and readable for the -O subtype + (2BaseTL-O or 10PassTS-O) EFMCu ports. It is irrelevant for + the -R subtype (2BaseTL-R or 10PassTS-R) ports -- a + zero-length octet string SHALL be returned on an attempt to + read this object and an attempt to change this object MUST be + rejected in this case. + + Note that the current operational profile value is available + via the efmCuPmeOperProfile object. + + Any modification of this object MUST be performed when the + link is Down. Attempts to change this object MUST be + rejected, if the link is Up or Initializing. + Attempts to set this object to a list with a member value that + is not the value of the index for an active entry in the + corresponding profile table MUST be rejected. + + This object maps to the Clause 30 attribute aProfileSelect. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 30.11.2.1.6" + DEFVAL { '01'H } + ::= { efmCuPortConfEntry 3 } + + efmCuTargetDataRate OBJECT-TYPE + SYNTAX Unsigned32(1..100000|999999) + UNITS "Kbps" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired EFMCu port 'net' (as seen across MII) Data Rate in + Kbps, to be achieved during initialization, under spectral + restrictions placed on each PME via efmCuAdminProfile or + + + + efmCuPmeAdminProfile, with the desired SNR margin specified by + efmCuTargetSnrMgn. + In case of PAF, this object represents a sum of individual PME + data rates, modified to compensate for fragmentation and + 64/65-octet encapsulation overhead (e.g., target data rate of + 10 Mbps SHALL allow lossless transmission of a full-duplex + 10 Mbps Ethernet frame stream with minimal inter-frame gap). + + The value is limited above by 100 Mbps as this is the max + burst rate across MII for EFMCu ports. + + The value between 1 and 100000 indicates that the total data + rate (ifSpeed) of the EFMCu port after initialization SHALL be + equal to the target data rate or less, if the target data rate + cannot be achieved under spectral restrictions specified by + efmCuAdminProfile/efmCuPmeAdminProfile and with the desired + SNR margin. In case the copper environment allows a higher + total data rate to be achieved than that specified by the + target, the excess capability SHALL be either converted to + additional SNR margin or reclaimed by minimizing transmit + power as controlled by efmCuAdaptiveSpectra. + + The value of 999999 means that the target data rate is not + fixed and SHALL be set to the maximum attainable rate during + initialization (Best Effort), under specified spectral + restrictions and with the desired SNR margin. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of the Target Data Rate MUST be performed when the + link is Down. Attempts to change this object MUST be rejected + (in case of SNMP with the error inconsistentValue), if the + link is Up or Initializing. + + Note that the current Data Rate of the EFMCu port is + represented by the ifSpeed object of IF-MIB. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 4 } + + efmCuTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32(0..21) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired EFMCu port SNR margin to be achieved on all PMEs + + + + assigned to the port, during initialization. (The SNR margin + is the difference between the desired SNR and the actual SNR). + + Note that 802.3ah recommends using a default target SNR margin + of 5 dB for 2BASE-TL ports and 6 dB for 10PASS-TS ports in + order to achieve a mean Bit Error Rate (BER) of 10^-7 at the + PMA service interface. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of the target SNR margin MUST be performed when the + link is Down. Attempts to change this object MUST be rejected + (in case of SNMP with the error inconsistentValue), if the + link is Up or Initializing. + + Note that the current SNR margin of the PMEs comprising the + EFMCu port is represented by efmCuPmeSnrMgn. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 61.1.2" + ::= { efmCuPortConfEntry 5 } + + efmCuAdaptiveSpectra OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates how to utilize excess capacity when the copper + environment allows a higher total data rate to be achieved + than that specified by the efmCuTargetDataRate. + + A value of true(1) indicates that the excess capability SHALL + be reclaimed by minimizing transmit power, e.g., using higher + constellations and Power Back-Off, in order to reduce + interference to other copper pairs in the binder and the + adverse impact to link/system performance. + + A value of false(2) indicates that the excess capability SHALL + be converted to additional SNR margin and spread evenly across + all active PMEs assigned to the (PCS) port, to increase link + robustness. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of this object MUST be performed when the link is + + + + Down. Attempts to change this object MUST be rejected (in + case of SNMP with the error inconsistentValue), if the link + is Up or Initializing. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 6 } + + efmCuThreshLowRate OBJECT-TYPE + SYNTAX Unsigned32(1..100000) + UNITS "Kbps" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the EFMCu port low-rate crossing alarm + threshold. When the current value of ifSpeed for this port + reaches/drops below or exceeds this threshold, an + efmCuLowRateCrossing notification MAY be generated if enabled + by efmCuLowRateCrossingEnable. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 7 } + + efmCuLowRateCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuLowRateCrossing notifications should + be generated for this interface. + + A value of true(1) indicates that efmCuLowRateCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 8 } + + + efmCuPortCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Table for Capabilities of EFMCu 2BASE-TL/10PASS-TS (PCS) + Ports. Entries in this table MUST be maintained in a + persistent manner" + ::= { efmCuPort 2 } + + efmCuPortCapabilityEntry OBJECT-TYPE + SYNTAX EfmCuPortCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Capability table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortCapabilityTable 1 } + + EfmCuPortCapabilityEntry ::= + SEQUENCE { + efmCuPAFSupported TruthValue, + efmCuPeerPAFSupported EfmTruthValueOrUnknown, + efmCuPAFCapacity Unsigned32, + efmCuPeerPAFCapacity Unsigned32 + } + + efmCuPAFSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME Aggregation Function (PAF) capability of the EFMCu port + (PCS). + This object has a value of true(1) when the PCS can perform + PME aggregation on the available PMEs. + Ports incapable of PAF SHALL return a value of false(2). + + This object maps to the Clause 30 attribute aPAFSupported. + + If a Clause 45 MDIO Interface to the PCS is present, + then this object maps to the PAF available bit in the + 10P/2B capability register." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.4, 45.2.3.17.1" + ::= { efmCuPortCapabilityEntry 1 } + + efmCuPeerPAFSupported OBJECT-TYPE + SYNTAX EfmTruthValueOrUnknown + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME Aggregation Function (PAF) capability of the EFMCu port + (PCS) link partner. + This object has a value of true(1) when the remote PCS can + perform PME aggregation on its available PMEs. + Ports whose peers are incapable of PAF SHALL return a value + of false(2). + Ports whose peers cannot be reached because of the link + state SHALL return a value of unknown(0). + + This object maps to the Clause 30 attribute + aRemotePAFSupported. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the Remote PAF supported bit in the + 10P/2B capability register." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.9, 45.2.3.17.2" + ::= { efmCuPortCapabilityEntry 2 } + + efmCuPAFCapacity OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PMEs that can be aggregated by the local PAF. + The number of PMEs currently assigned to a particular + EFMCu port (efmCuNumPMEs) is never greater than + efmCuPAFCapacity. + + This object maps to the Clause 30 attribute + aLocalPAFCapacity." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.6" + ::= { efmCuPortCapabilityEntry 3 } + + efmCuPeerPAFCapacity OBJECT-TYPE + SYNTAX Unsigned32 (0|1..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PMEs that can be aggregated by the PAF of the peer + PHY (PCS port). + A value of 0 is returned when peer PAF capacity is unknown + (peer cannot be reached). + + + + + This object maps to the Clause 30 attribute + aRemotePAFCapacity." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.10" + ::= { efmCuPortCapabilityEntry 4 } + + efmCuPortStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides overall status information of EFMCu + 2BASE-TL/10PASS-TS ports, complementing the generic status + information from the ifTable of IF-MIB and ifMauTable of + MAU-MIB. Additional status information about connected PMEs + is available from the efmCuPmeStatusTable. + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPort 3 } + + efmCuPortStatusEntry OBJECT-TYPE + SYNTAX EfmCuPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Status table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortStatusTable 1 } + + EfmCuPortStatusEntry ::= + SEQUENCE { + efmCuFltStatus BITS, + efmCuPortSide INTEGER, + efmCuNumPMEs Unsigned32, + efmCuPAFInErrors Counter32, + efmCuPAFInSmallFragments Counter32, + efmCuPAFInLargeFragments Counter32, + efmCuPAFInBadFragments Counter32, + efmCuPAFInLostFragments Counter32, + efmCuPAFInLostStarts Counter32, + efmCuPAFInLostEnds Counter32, + efmCuPAFInOverflows Counter32 + } + + + + + efmCuFltStatus OBJECT-TYPE + SYNTAX BITS { + noPeer(0), + peerPowerLoss(1), + pmeSubTypeMismatch(2), + lowRate(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "EFMCu (PCS) port Fault Status. This is a bitmap of possible + conditions. The various bit positions are: + noPeer - the peer PHY cannot be reached (e.g., + no PMEs attached, all PMEs are Down, + etc.). More info is available in + efmCuPmeFltStatus. + peerPowerLoss - the peer PHY has indicated impending + unit failure due to loss of local + power ('Dying Gasp'). + pmeSubTypeMismatch - local PMEs in the aggregation group + are not of the same subtype, e.g., + some PMEs in the local device are -O + while others are -R subtype. + lowRate - ifSpeed of the port reached or dropped + below efmCuThreshLowRate. + + This object is intended to supplement the ifOperStatus object + in IF-MIB and ifMauMediaAvailable in MAU-MIB. + + Additional information is available via the efmCuPmeFltStatus + object for each PME in the aggregation group (single PME if + PAF is disabled)." + REFERENCE + "IF-MIB, ifOperStatus; MAU-MIB, ifMauMediaAvailable; + efmCuPmeFltStatus" + ::= { efmCuPortStatusEntry 1 } + + efmCuPortSide OBJECT-TYPE + SYNTAX INTEGER { + subscriber(1), + office(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "EFM port mode of operation (subtype). + The value of 'subscriber' indicates that the port is + + + + designated as '-R' subtype (all PMEs assigned to this port are + of subtype '-R'). + The value of the 'office' indicates that the port is + designated as '-O' subtype (all PMEs assigned to this port are + of subtype '-O'). + The value of 'unknown' indicates that the port has no assigned + PMEs yet or that the assigned PMEs are not of the same side + (subTypePMEMismatch). + + This object partially maps to the Clause 30 attribute + aPhyEnd." + REFERENCE + "[802.3ah] 61.1, 30.11.1.1.2" + ::= { efmCuPortStatusEntry 2 } + + efmCuNumPMEs OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PMEs that is currently aggregated by the local + PAF (assigned to the EFMCu port using the ifStackTable). + This number is never greater than efmCuPAFCapacity. + + This object SHALL be automatically incremented or decremented + when a PME is added or deleted to/from the EFMCu port using + the ifStackTable." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.6" + ::= { efmCuPortStatusEntry 3 } + + efmCuPAFInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments that have been received across the + gamma interface with RxErr asserted and discarded. + This read-only counter is inactive (not incremented) when the + PAF is unsupported or disabled. Upon disabling the PAF, the + counter retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF RX error register. + + 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, + + + + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.21" + ::= { efmCuPortStatusEntry 4 } + + efmCuPAFInSmallFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments smaller than minFragmentSize + (64 bytes) that have been received across the gamma interface + and discarded. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF small fragments register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.22" + ::= { efmCuPortStatusEntry 5 } + + efmCuPAFInLargeFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments larger than maxFragmentSize + (512 bytes) that have been received across the gamma interface + and discarded. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF large fragments register. + + 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, + defined in IF-MIB." + REFERENCE + + + + "[802.3ah] 45.2.3.23" + ::= { efmCuPortStatusEntry 6 } + + efmCuPAFInBadFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments that do not fit into the sequence + expected by the frame assembly function and that have been + received across the gamma interface and discarded (the + frame buffer is flushed to the next valid frame start). + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF bad fragments register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.25" + ::= { efmCuPortStatusEntry 7 } + + efmCuPAFInLostFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of gaps in the sequence of fragments that have + been received across the gamma interface (the frame buffer is + flushed to the next valid frame start, when fragment/fragments + expected by the frame assembly function is/are not received). + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost fragment register. + + 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, + defined in IF-MIB." + REFERENCE + + + + "[802.3ah] 45.2.3.26" + ::= { efmCuPortStatusEntry 8 } + + efmCuPAFInLostStarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of missing StartOfPacket indicators expected by + the frame assembly function. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost start of fragment + register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.27" + ::= { efmCuPortStatusEntry 9 } + + efmCuPAFInLostEnds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of missing EndOfPacket indicators expected by the + frame assembly function. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost start of fragment + register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.28" + ::= { efmCuPortStatusEntry 10 } + + + + efmCuPAFInOverflows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments, received across the gamma interface + and discarded, which would have caused the frame assembly + buffer to overflow. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF overflow register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.24" + ::= { efmCuPortStatusEntry 11 } + + -- PME Notifications Group + + efmCuPmeNotifications OBJECT IDENTIFIER ::= { efmCuPme 0 } + + efmCuPmeLineAtnCrossing NOTIFICATION-TYPE + OBJECTS { + efmCuPmeLineAtn, + efmCuPmeThreshLineAtn + } + STATUS current + DESCRIPTION + "This notification indicates that the loop attenuation + threshold (as per the efmCuPmeThreshLineAtn + value) has been reached/exceeded for the 2BASE-TL/10PASS-TS + PME. This notification MAY be sent on the crossing event in + both directions: from normal to exceeded and from exceeded + to normal. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent intermittent notifications from + being sent. + + Generation of this notification is controlled by the + efmCuPmeLineAtnCrossingEnable object." + + + + ::= { efmCuPmeNotifications 1 } + + efmCuPmeSnrMgnCrossing NOTIFICATION-TYPE + OBJECTS { + efmCuPmeSnrMgn, + efmCuPmeThreshSnrMgn + } + STATUS current + DESCRIPTION + "This notification indicates that the SNR margin threshold + (as per the efmCuPmeThreshSnrMgn value) has been + reached/exceeded for the 2BASE-TL/10PASS-TS PME. + This notification MAY be sent on the crossing event in + both directions: from normal to exceeded and from exceeded + to normal. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent intermittent notifications from + being sent. + + Generation of this notification is controlled by the + efmCuPmeSnrMgnCrossingEnable object." + ::= { efmCuPmeNotifications 2 } + + efmCuPmeDeviceFault NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus + } + STATUS current + DESCRIPTION + "This notification indicates that a fault in the PME has been + detected by a vendor-specific diagnostic or a self-test. + + Generation of this notification is controlled by the + efmCuPmeDeviceFaultEnable object." + ::= { efmCuPmeNotifications 3 } + + efmCuPmeConfigInitFailure NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus, + efmCuAdminProfile, + efmCuPmeAdminProfile + } + STATUS current + DESCRIPTION + "This notification indicates that PME initialization has + failed, due to inability of the PME link to achieve the + + + + requested configuration profile. + + Generation of this notification is controlled by the + efmCuPmeConfigInitFailEnable object." + ::= { efmCuPmeNotifications 4 } + + efmCuPmeProtocolInitFailure NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus, + efmCuPmeOperSubType + } + STATUS current + DESCRIPTION + "This notification indicates that the peer PME was using + an incompatible protocol during initialization. + + Generation of this notification is controlled by the + efmCuPmeProtocolInitFailEnable object." + ::= { efmCuPmeNotifications 5 } + + -- The PME group + + efmCuPmeConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for Configuration of common aspects for EFMCu + 2BASE-TL/10PASS-TS PME ports (modems). Configuration of + aspects specific to 2BASE-TL or 10PASS-TS PME types is + represented in efmCuPme2BConfTable and efmCuPme10PConfTable, + respectively. + + Entries in this table MUST be maintained in a persistent + manner." + ::= { efmCuPme 1 } + + efmCuPmeConfEntry OBJECT-TYPE + SYNTAX EfmCuPmeConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Configuration table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + + + + ::= { efmCuPmeConfTable 1 } + + EfmCuPmeConfEntry ::= + SEQUENCE { + efmCuPmeAdminSubType INTEGER, + efmCuPmeAdminProfile EfmProfileIndexOrZero, + efmCuPAFRemoteDiscoveryCode PhysAddress, + efmCuPmeThreshLineAtn Integer32, + efmCuPmeThreshSnrMgn Integer32, + efmCuPmeLineAtnCrossingEnable TruthValue, + efmCuPmeSnrMgnCrossingEnable TruthValue, + efmCuPmeDeviceFaultEnable TruthValue, + efmCuPmeConfigInitFailEnable TruthValue, + efmCuPmeProtocolInitFailEnable TruthValue + } + + efmCuPmeAdminSubType OBJECT-TYPE + SYNTAX INTEGER { + ieee2BaseTLO(1), + ieee2BaseTLR(2), + ieee10PassTSO(3), + ieee10PassTSR(4), + ieee2BaseTLor10PassTSR(5), + ieee2BaseTLor10PassTSO(6), + ieee10PassTSor2BaseTLO(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administrative (desired) subtype of the PME. + Possible values are: + ieee2BaseTLO - PME SHALL operate as 2BaseTL-O + ieee2BaseTLR - PME SHALL operate as 2BaseTL-R + ieee10PassTSO - PME SHALL operate as 10PassTS-O + ieee10PassTSR - PME SHALL operate as 10PassTS-R + ieee2BaseTLor10PassTSR - PME SHALL operate as 2BaseTL-R or + 10PassTS-R. The actual value will + be set by the -O link partner + during initialization (handshake). + ieee2BaseTLor10PassTSO - PME SHALL operate as 2BaseTL-O + (preferred) or 10PassTS-O. The + actual value will be set during + initialization depending on the -R + link partner capability (i.e., if + -R is incapable of the preferred + 2BaseTL mode, 10PassTS will be + used). + ieee10PassTSor2BaseTLO - PME SHALL operate as 10PassTS-O + + + + (preferred) or 2BaseTL-O. The + actual value will be set during + initialization depending on the -R + link partner capability (i.e., if + -R is incapable of the preferred + 10PassTS mode, 2BaseTL will be + used). + + Changing efmCuPmeAdminSubType is a traffic-disruptive + operation and as such SHALL be done when the link is Down. + Attempts to change this object SHALL be rejected if the link + is Up or Initializing. + Attempts to change this object to an unsupported subtype + (see efmCuPmeSubTypesSupported) SHALL be rejected. + + The current operational subtype is indicated by the + efmCuPmeOperSubType variable. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object combines values of the Port subtype select bits + and the PMA/PMD type selection bits in the 10P/2B PMA/PMD + control register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.11.4, 45.2.1.11.7" + ::= { efmCuPmeConfEntry 1 } + + efmCuPmeAdminProfile OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired PME configuration profile. This object is a pointer + to an entry in either the efmCuPme2BProfileTable or the + efmCuPme10PProfileTable, depending on the current operating + SubType of the PME. The value of this object is the index of + the referenced profile. + The value of zero (default) indicates that the PME is + configured via the efmCuAdminProfile object for the PCS port + to which this PME is assigned. That is, the profile + referenced by efmCuPmeAdminProfile takes precedence + over the profile(s) referenced by efmCuAdminProfile. + + This object is writable and readable for the CO subtype PMEs + (2BaseTL-O or 10PassTS-O). It is irrelevant for the CPE + subtype (2BaseTL-R or 10PassTS-R) -- a zero value SHALL be + returned on an attempt to read this object and any attempt + to change this object MUST be rejected in this case. + + + + + Note that the current operational profile value is available + via efmCuPmeOperProfile object. + + Any modification of this object MUST be performed when the + link is Down. Attempts to change this object MUST be + rejected, if the link is Up or Initializing. + + Attempts to set this object to a value that is not the value + of the index for an active entry in the corresponding profile + table MUST be rejected. + + This object maps to the Clause 30 attribute aProfileSelect. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 30.11.2.1.6" + DEFVAL { 0 } + ::= { efmCuPmeConfEntry 2 } + + efmCuPAFRemoteDiscoveryCode OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0|6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "PAF Remote Discovery Code of the PME port at the CO. + The 6-octet Discovery Code of the peer PCS connected via + the PME. + Reading this object results in a Discovery Get operation. + Setting this object to all zeroes results in a Discovery + Clear_if_Same operation (the value of efmCuPAFDiscoveryCode + at the peer PCS SHALL be the same as efmCuPAFDiscoveryCode of + the local PCS associated with the PME for the operation to + succeed). + Writing a non-zero value to this object results in a + Discovery Set_if_Clear operation. + A zero-length octet string SHALL be returned on an attempt to + read this object when PAF aggregation is not enabled. + + This object is irrelevant in CPE port (-R) subtypes: in this + case, a zero-length octet string SHALL be returned on an + attempt to read this object; writing to this object SHALL + be rejected. + + Discovery MUST be performed when the link is Down. + Attempts to change this object MUST be rejected (in case of + SNMP with the error inconsistentValue), if the link is Up or + Initializing. + + + + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object is a function of 10P/2B aggregation discovery + control register, Discovery operation result bits in 10P/2B + aggregation and discovery status register and + 10P/2B aggregation discovery code register." + REFERENCE + "[802.3ah] 61.2.2.8.4, 45.2.6.6-45.2.6.8" + ::= { efmCuPmeConfEntry 3 } + + efmCuPmeThreshLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired Line Attenuation threshold for the 2B/10P PME. + This object configures the line attenuation alarm threshold. + When the current value of Line Attenuation reaches or + exceeds this threshold, an efmCuPmeLineAtnCrossing + notification MAY be generated, if enabled by + efmCuPmeLineAtnCrossingEnable. + + This object is writable for the CO subtype PMEs (-O). + It is read-only for the CPE subtype (-R). + + Changing of the Line Attenuation threshold MUST be performed + when the link is Down. Attempts to change this object MUST be + rejected (in case of SNMP with the error inconsistentValue), + if the link is Up or Initializing. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the loop attenuation threshold bits in + the 2B PMD line quality thresholds register." + REFERENCE + "[802.3ah] 45.2.1.36" + ::= { efmCuPmeConfEntry 4 } + + efmCuPmeThreshSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired SNR margin threshold for the 2B/10P PME. + This object configures the SNR margin alarm threshold. + When the current value of SNR margin reaches or exceeds this + threshold, an efmCuPmeSnrMgnCrossing notification MAY be + generated, if enabled by efmCuPmeSnrMgnCrossingEnable. + + + + This object is writable for the CO subtype PMEs + (2BaseTL-O/10PassTS-O). It is read-only for the CPE subtype + (2BaseTL-R/10PassTS-R). + + Changing of the SNR margin threshold MUST be performed when + the link is Down. Attempts to change this object MUST be + rejected (in case of SNMP with the error inconsistentValue), + if the link is Up or Initializing. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the SNR margin threshold bits in the 2B PMD + line quality thresholds register." + REFERENCE + "[802.3ah] 45.2.1.36" + ::= { efmCuPmeConfEntry 5 } + + efmCuPmeLineAtnCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeLineAtnCrossing notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeLineAtnCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 6 } + + efmCuPmeSnrMgnCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeSnrMgnCrossing notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeSnrMgnCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 7 } + + efmCuPmeDeviceFaultEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeDeviceFault notifications + + + + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeDeviceFault + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 8 } + + efmCuPmeConfigInitFailEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeConfigInitFailure notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeConfigInitFailure + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 9 } + + efmCuPmeProtocolInitFailEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeProtocolInitFailure notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeProtocolInitFailure + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 10 } + + + efmCuPmeCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for the configuration of common aspects for EFMCu + 2BASE-TL/10PASS-TS PME ports (modems). The configuration of + aspects specific to 2BASE-TL or 10PASS-TS PME types is + represented in the efmCuPme2BConfTable and the + efmCuPme10PConfTable, respectively. + + Entries in this table MUST be maintained in a persistent + manner." + ::= { efmCuPme 2 } + + + + efmCuPmeCapabilityEntry OBJECT-TYPE + SYNTAX EfmCuPmeCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Capability table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + ::= { efmCuPmeCapabilityTable 1 } + + EfmCuPmeCapabilityEntry ::= + SEQUENCE { + efmCuPmeSubTypesSupported BITS + } + + efmCuPmeSubTypesSupported OBJECT-TYPE + SYNTAX BITS { + ieee2BaseTLO(0), + ieee2BaseTLR(1), + ieee10PassTSO(2), + ieee10PassTSR(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME supported subtypes. This is a bitmap of possible + subtypes. The various bit positions are: + ieee2BaseTLO - PME is capable of operating as 2BaseTL-O + ieee2BaseTLR - PME is capable of operating as 2BaseTL-R + ieee10PassTSO - PME is capable of operating as 10PassTS-O + ieee10PassTSR - PME is capable of operating as 10PassTS-R + + The desired mode of operation is determined by + efmCuPmeAdminSubType, while efmCuPmeOperSubType reflects the + current operating mode. + + If a Clause 45 MDIO Interface to the PCS is present, then this + object combines the 10PASS-TS capable and 2BASE-TL capable + bits in the 10P/2B PMA/PMD speed ability register and the + CO supported and CPE supported bits in the 10P/2B PMA/PMD + status register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.4.1, 45.2.1.4.2, 45.2.1.12.2, + 45.2.1.12.3" + ::= { efmCuPmeCapabilityEntry 1 } + + + + efmCuPmeStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides common status information of EFMCu + 2BASE-TL/10PASS-TS PME ports. Status information specific + to 10PASS-TS PME is represented in efmCuPme10PStatusTable. + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPme 3 } + + efmCuPmeStatusEntry OBJECT-TYPE + SYNTAX EfmCuPmeStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Status table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + ::= { efmCuPmeStatusTable 1 } + + EfmCuPmeStatusEntry ::= + SEQUENCE { + efmCuPmeOperStatus INTEGER, + efmCuPmeFltStatus BITS, + efmCuPmeOperSubType INTEGER, + efmCuPmeOperProfile EfmProfileIndexOrZero, + efmCuPmeSnrMgn Integer32, + efmCuPmePeerSnrMgn Integer32, + efmCuPmeLineAtn Integer32, + efmCuPmePeerLineAtn Integer32, + efmCuPmeEquivalentLength Unsigned32, + efmCuPmeTCCodingErrors Counter32, + efmCuPmeTCCrcErrors Counter32 + } + + efmCuPmeOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + downNotReady(2), + downReady(3), + init(4) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current PME link Operational Status. Possible values are: + up(1) - The link is Up and ready to pass + 64/65-octet encoded frames or fragments. + downNotReady(2) - The link is Down and the PME does not + detect Handshake tones from its peer. + This value may indicate a possible + problem with the peer PME. + downReady(3) - The link is Down and the PME detects + Handshake tones from its peer. + init(4) - The link is Initializing, as a result of + ifAdminStatus being set to 'up' for a + particular PME or a PCS to which the PME + is connected. + + This object is intended to supplement the Down(2) state of + ifOperStatus. + + This object partially maps to the Clause 30 attribute + aPMEStatus. + + If a Clause 45 MDIO Interface to the PME is present, then this + object partially maps to PMA/PMD link status bits in 10P/2B + PMA/PMD status register." + REFERENCE + "[802.3ah] 30.11.2.1.3, 45.2.1.12.4" + ::= { efmCuPmeStatusEntry 1 } + + efmCuPmeFltStatus OBJECT-TYPE + SYNTAX BITS { + lossOfFraming(0), + snrMgnDefect(1), + lineAtnDefect(2), + deviceFault(3), + configInitFailure(4), + protocolInitFailure(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current/Last PME link Fault Status. This is a bitmap of + possible conditions. The various bit positions are: + + lossOfFraming - Loss of Framing for 10P or + Loss of Sync word for 2B PMD or + Loss of 64/65-octet framing. + + + + snrMgnDefect - SNR margin dropped below the + threshold. + lineAtnDefect - Line Attenuation exceeds the + threshold. + deviceFault - Indicates a vendor-dependent + diagnostic or self-test fault + has been detected. + configInitFailure - Configuration initialization failure, + due to inability of the PME link to + support the configuration profile, + requested during initialization. + protocolInitFailure - Protocol initialization failure, due + to an incompatible protocol used by + the peer PME during init (that could + happen if a peer PMD is a regular + G.SDHSL/VDSL modem instead of a + 2BASE-TL/10PASS-TS PME). + + This object is intended to supplement ifOperStatus in IF-MIB. + + This object holds information about the last fault. + efmCuPmeFltStatus is cleared by the device restart. + In addition, lossOfFraming, configInitFailure, and + protocolInitFailure are cleared by PME init; + deviceFault is cleared by successful diagnostics/test; + snrMgnDefect and lineAtnDefect are cleared by SNR margin + and Line attenuation, respectively, returning to norm and by + PME init. + + This object partially maps to the Clause 30 attribute + aPMEStatus. + + If a Clause 45 MDIO Interface to the PME is present, then this + object consolidates information from various PMA/PMD + registers, namely: Fault bit in PMA/PMD status 1 register, + 10P/2B PMA/PMD link loss register, + 10P outgoing indicator bits status register, + 10P incoming indicator bits status register, + 2B state defects register." + REFERENCE + "[802.3ah] 30.11.2.1.3, 45.2.1.2.1, 45.2.1.38, + 45.2.1.39, 45.2.1.54" + ::= { efmCuPmeStatusEntry 2 } + + efmCuPmeOperSubType OBJECT-TYPE + SYNTAX INTEGER { + ieee2BaseTLO(1), + ieee2BaseTLR(2), + + + + ieee10PassTSO(3), + ieee10PassTSR(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current operational subtype of the PME. + Possible values are: + ieee2BaseTLO - PME operates as 2BaseTL-O + ieee2BaseTLR - PME operates as 2BaseTL-R + ieee10PassTSO - PME operates as 10PassTS-O + ieee10PassTSR - PME operates as 10PassTS-R + + The desired operational subtype of the PME can be configured + via the efmCuPmeAdminSubType variable. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object combines values of the Port subtype select + bits, the PMA/PMD type selection bits in the 10P/2B + PMA/PMD control register, and the PMA/PMD link status bits in + the 10P/2B PMA/PMD status register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.11.4, 45.2.1.11.7, 45.2.1.12.4" + ::= { efmCuPmeStatusEntry 3 } + + efmCuPmeOperProfile OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME current operating profile. This object is a pointer to + an entry in either the efmCuPme2BProfileTable or the + efmCuPme10PProfileTable, depending on the current operating + SubType of the PME as indicated by efmCuPmeOperSubType. + Note that a profile entry to which efmCuPmeOperProfile is + pointing can be created automatically to reflect achieved + parameters in adaptive (not fixed) initialization, + i.e., values of efmCuPmeOperProfile and efmCuAdminProfile or + efmCuPmeAdminProfile may differ. + The value of zero indicates that the PME is Down or + Initializing. + + This object partially maps to the aOperatingProfile attribute + in Clause 30." + REFERENCE + "[802.3ah] 30.11.2.1.7" + ::= { efmCuPmeStatusEntry 4 } + + + + + efmCuPmeSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Signal to Noise Ratio (SNR) margin with respect + to the received signal as perceived by the local PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object maps to the aPMESNRMgn attribute in Clause 30. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 10P/2B RX SNR margin register." + REFERENCE + "[802.3ah] 30.11.2.1.4, 45.2.1.16" + ::= { efmCuPmeStatusEntry 5 } + + efmCuPmePeerSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current SNR margin in dB with respect to the received + signal, as perceived by the remote (link partner) PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object is irrelevant for the -R PME subtypes. The value + of 65535 SHALL be returned in this case. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 10P/2B link partner RX SNR margin + register." + REFERENCE + "[802.3ah] 45.2.1.17" + ::= { efmCuPmeStatusEntry 6} + + efmCuPmeLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Line Attenuation in dB as perceived by the local + PME. + + + + The value of 65535 is returned when the PME is Down or + Initializing. + + If a Clause 45 MDIO Interface is present, then this + object maps to the Line Attenuation register." + REFERENCE + "[802.3ah] 45.2.1.18" + ::= { efmCuPmeStatusEntry 7 } + + efmCuPmePeerLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Line Attenuation in dB as perceived by the remote + (link partner) PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object is irrelevant for the -R PME subtypes. The value + of 65535 SHALL be returned in this case. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 20P/2B link partner Line Attenuation + register." + REFERENCE + "[802.3ah] 45.2.1.19" + ::= { efmCuPmeStatusEntry 8 } + + efmCuPmeEquivalentLength OBJECT-TYPE + SYNTAX Unsigned32(0..8192|65535) + UNITS "m" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the equivalent loop's physical length in + meters, as perceived by the PME after the link is established. + An equivalent loop is a hypothetical 26AWG (0.4mm) loop with a + perfect square root attenuation characteristic, without any + bridged taps. + The value of 65535 is returned if the link is Down or + Initializing or the PME is unable to estimate the equivalent + length. + + For a 10BASE-TL PME, if a Clause 45 MDIO Interface to the PME + is present, then this object maps to the 10P Electrical Length + register." + + + + REFERENCE + "[802.3ah] 45.2.1.21" + ::= { efmCuPmeStatusEntry 9 } + + efmCuPmeTCCodingErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 64/65-octet encapsulation errors. This counter + is incremented for each 64/65-octet encapsulation error + detected by the 64/65-octet receive function. + + This object maps to aTCCodingViolations attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PME TC is present, then + this object maps to the TC coding violations register + (see 45.2.6.12). + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 61.3.3.1, 30.11.2.1.5, 45.2.6.12" + ::= { efmCuPmeStatusEntry 10 } + + efmCuPmeTCCrcErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TC-CRC errors. This counter is incremented for + each TC-CRC error detected by the 64/65-octet receive function + (see 61.3.3.3 and Figure 61-19). + + This object maps to aTCCRCErrors attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PME TC is present, then + this object maps to the TC CRC error register + (see 45.2.6.11). + + 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, + defined in IF-MIB." + + + + REFERENCE + "[802.3ah] 61.3.3.3, 30.11.2.1.10, 45.2.6.11" + ::= { efmCuPmeStatusEntry 11 } + + -- 2BASE-TL specific PME group + + efmCuPme2B OBJECT IDENTIFIER ::= { efmCuPme 5 } + + efmCuPme2BProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports definitions of administrative and + operating profiles for 2BASE-TL PMEs. + The first 14 entries in this table SHALL always be defined as + follows (see 802.3ah Annex 63A): + -------+-------+-------+-----+------+-------------+----------- + Profile MinRate MaxRate Power Region Constellation Comment + index (Kbps) (Kbps) (dBm) + -------+-------+-------+-----+------+-------------+----------- + 1 5696 5696 13.5 1 32-TCPAM default + 2 3072 3072 13.5 1 32-TCPAM + 3 2048 2048 13.5 1 16-TCPAM + 4 1024 1024 13.5 1 16-TCPAM + 5 704 704 13.5 1 16-TCPAM + 6 512 512 13.5 1 16-TCPAM + 7 5696 5696 14.5 2 32-TCPAM + 8 3072 3072 14.5 2 32-TCPAM + 9 2048 2048 14.5 2 16-TCPAM + 10 1024 1024 13.5 2 16-TCPAM + 11 704 704 13.5 2 16-TCPAM + 12 512 512 13.5 2 16-TCPAM + 13 192 5696 0 1 0 best effort + 14 192 5696 0 2 0 best effort + -------+-------+-------+-----+------+-------------+----------- + + These default entries SHALL be created during agent + initialization and MUST NOT be deleted. + + Entries following the first 14 can be dynamically created and + deleted to provide custom administrative (configuration) + profiles and automatic operating profiles. + + This table MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] Annex 63A, 30.11.2.1.6" + ::= { efmCuPme2B 2 } + + + + efmCuPme2BProfileEntry OBJECT-TYPE + SYNTAX EfmCuPme2BProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single 2BASE-TL PME profile. + Each profile contains a set of parameters, used either for + configuration or representation of a 2BASE-TL PME. + In case a particular profile is referenced via the + efmCuPmeAdminProfile object (or efmCuAdminProfile if + efmCuPmeAdminProfile is zero), it represents the desired + parameters for the 2BaseTL-O PME initialization. + If a profile is referenced via an efmCuPmeOperProfile object, + it represents the current operating parameters of an + operational PME. + + Profiles may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2BProfileRowStatus. If an + active entry is referenced, the entry MUST remain 'active' + until all references are removed. + Default entries MUST NOT be removed." + INDEX { efmCuPme2BProfileIndex } + ::= { efmCuPme2BProfileTable 1 } + + EfmCuPme2BProfileEntry ::= + SEQUENCE { + efmCuPme2BProfileIndex EfmProfileIndex, + efmCuPme2BProfileDescr SnmpAdminString, + efmCuPme2BRegion INTEGER, + efmCuPme2BsMode EfmProfileIndexOrZero, + efmCuPme2BMinDataRate Unsigned32, + efmCuPme2BMaxDataRate Unsigned32, + efmCuPme2BPower Unsigned32, + efmCuPme2BConstellation INTEGER, + efmCuPme2BProfileRowStatus RowStatus + } + + efmCuPme2BProfileIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "2BASE-TL PME profile index. + This object is the unique index associated with this profile. + Entries in this table are referenced via efmCuAdminProfile or + efmCuPmeAdminProfile objects." + ::= { efmCuPme2BProfileEntry 1 } + + + + + efmCuPme2BProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 2BASE-TL PME + profile. The string may include information about the data + rate and spectral limitations of this particular profile." + ::= { efmCuPme2BProfileEntry 2 } + + efmCuPme2BRegion OBJECT-TYPE + SYNTAX INTEGER { + region1(1), + region2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Regional settings for a 2BASE-TL PME, as specified in the + relevant Regional Annex of [G.991.2]. + Regional settings specify the Power Spectral Density (PSD) + mask and the Power Back-Off (PBO) values, and place + limitations on the max allowed data rate, power, and + constellation. + + Possible values for this object are: + region1 - Annexes A and F (e.g., North America) + region2 - Annexes B and G (e.g., Europe) + + Annex A/B specify regional settings for data rates 192-2304 + Kbps using 16-TCPAM encoding. + Annex F/G specify regional settings for rates 2320-3840 Kbps + using 16-TCPAM encoding and 768-5696 Kbps using 32-TCPAM + encoding. + + If a Clause 45 MDIO Interface to the PME is present, then this + object partially maps to the Region bits in the 2B general + parameter register." + REFERENCE + "[802.3ah] 45.2.1.42; [G.991.2] Annexes A, B, F and G" + ::= { efmCuPme2BProfileEntry 3 } + + efmCuPme2BsMode OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Desired custom Spectral Mode for a 2BASE-TL PME. This object + + + + is a pointer to an entry in efmCuPme2BsModeTable and a block + of entries in efmCuPme2BRateReachTable, which together define + (country-specific) reach-dependent rate limitations in + addition to those defined by efmCuPme2BRegion. + + The value of this object is the index of the referenced + spectral mode. + The value of zero (default) indicates that no specific + spectral mode is applicable. + + Attempts to set this object to a value that is not the value + of the index for an active entry in the corresponding spectral + mode table MUST be rejected." + REFERENCE + "efmCuPme2BsModeTable, efmCuPme2BRateReachTable" + DEFVAL { 0 } + ::= { efmCuPme2BProfileEntry 4 } + + efmCuPme2BMinDataRate OBJECT-TYPE + SYNTAX Unsigned32(192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum Data Rate for the 2BASE-TL PME. + This object can take values of (n x 64)Kbps, + where n=3..60 for 16-TCPAM and n=12..89 for 32-TCPAM encoding. + + The data rate of the 2BASE-TL PME is considered 'fixed' when + the value of this object equals that of efmCuPme2BMaxDataRate. + If efmCuPme2BMinDataRate is less than efmCuPme2BMaxDataRate in + the administrative profile, the data rate is considered + 'adaptive', and SHALL be set to the maximum attainable rate + not exceeding efmCuPme2BMaxDataRate, under the spectral + limitations placed by the efmCuPme2BRegion and + efmCuPme2BsMode. + + Note that the current operational data rate of the PME is + represented by the ifSpeed object of IF-MIB. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Min Data Rate1 bits in the 2B PMD + parameters register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 5 } + + + + efmCuPme2BMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32(192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum Data Rate for the 2BASE-TL PME. + This object can take values of (n x 64)Kbps, + where n=3..60 for 16-TCPAM and n=12..89 for 32-TCPAM encoding. + + The data rate of the 2BASE-TL PME is considered 'fixed' when + the value of this object equals that of efmCuPme2BMinDataRate. + If efmCuPme2BMinDataRate is less than efmCuPme2BMaxDataRate in + the administrative profile, the data rate is considered + 'adaptive', and SHALL be set to the maximum attainable rate + not exceeding efmCuPme2BMaxDataRate, under the spectral + limitations placed by the efmCuPme2BRegion and + efmCuPme2BsMode. + + Note that the current operational data rate of the PME is + represented by the ifSpeed object of IF-MIB. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Max Data Rate1 bits in the 2B PMD + parameters register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 6 } + + efmCuPme2BPower OBJECT-TYPE + SYNTAX Unsigned32(0|10..42) + UNITS "0.5 dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Signal Transmit Power. Multiple of 0.5 dBm. + The value of 0 in the administrative profile means that the + signal transmit power is not fixed and SHALL be set to + maximize the attainable rate, under the spectral limitations + placed by the efmCuPme2BRegion and efmCuPme2BsMode. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Power1 bits in the 2B PMD parameters + register." + REFERENCE + "[802.3ah] 45.2.1.43" + + + + ::= { efmCuPme2BProfileEntry 7 } + + efmCuPme2BConstellation OBJECT-TYPE + SYNTAX INTEGER { + adaptive(0), + tcpam16(1), + tcpam32(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "TCPAM Constellation of the 2BASE-TL PME. + The possible values are: + adaptive(0) - either 16- or 32-TCPAM + tcpam16(1) - 16-TCPAM + tcpam32(2) - 32-TCPAM + + The value of adaptive(0) in the administrative profile means + that the constellation is not fixed and SHALL be set to + maximize the attainable rate, under the spectral limitations + placed by the efmCuPme2BRegion and efmCuPme2BsMode. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Constellation1 bits in the 2B general + parameter register." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 8 } + + efmCuPme2BProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the creation, modification, or deletion + of the associated entry in the efmCuPme2BProfileTable per the + semantics of RowStatus. + + If an 'active' entry is referenced via efmCuAdminProfile or + efmCuPmeAdminProfile instance(s), the entry MUST remain + 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BProfileEntry 9 } + + + + + efmCuPme2BsModeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BsModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table, together with efmCu2BReachRateTable, supports + definition of administrative custom spectral modes for + 2BASE-TL PMEs, describing spectral limitations in addition to + those specified by efmCuPme2BRegion. + + In some countries, spectral regulations (e.g., UK ANFP) limit + the length of the loops for certain data rates. This table + allows these country-specific limitations to be specified. + + Entries in this table referenced by the efmCuPme2BsMode + MUST NOT be deleted until all the active references are + removed. + + This table MUST be maintained in a persistent manner." + REFERENCE + "efmCu2BReachRateTable" + ::= { efmCuPme2B 3 } + + efmCuPme2BsModeEntry OBJECT-TYPE + SYNTAX EfmCuPme2BsModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies a spectral mode description and its + index, which is used to reference corresponding entries in the + efmCu2BReachRateTable. + + Entries may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2BsModeRowStatus." + INDEX { efmCuPme2BsModeIndex } + ::= { efmCuPme2BsModeTable 1 } + + EfmCuPme2BsModeEntry ::= + SEQUENCE { + efmCuPme2BsModeIndex EfmProfileIndex, + efmCuPme2BsModeDescr SnmpAdminString, + efmCuPme2BsModeRowStatus RowStatus + } + + efmCuPme2BsModeIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "2BASE-TL PME Spectral Mode index. + This object is the unique index associated with this spectral + mode. + Entries in this table are referenced via the efmCuPme2BsMode + object." + ::= { efmCuPme2BsModeEntry 1 } + + efmCuPme2BsModeDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 2BASE-TL PME + spectral mode. The string may include information about + corresponding (country-specific) spectral regulations + and rate/reach limitations of this particular spectral mode." + ::= { efmCuPme2BsModeEntry 2 } + + efmCuPme2BsModeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation, modification, or deletion of + the associated entry in efmCuPme2BsModeTable per the semantics + of RowStatus. + + If an 'active' entry is referenced via efmCuPme2BsMode + instance(s), the entry MUST remain 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BsModeEntry 3 } + + + efmCuPme2BReachRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BReachRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports the definition of administrative custom + spectral modes for 2BASE-TL PMEs, providing spectral + limitations in addition to those specified by + efmCuPme2BRegion. + + + + + The spectral regulations in some countries (e.g., UK ANFP) + limit the length of the loops for certain data rates. + This table allows these country-specific limitations to be + specified. + + Below is an example of this table for [ANFP]: + ----------+-------+------- + Equivalent MaxRate MaxRate + Length PAM16 PAM32 + (m) (Kbps) (Kbps) + ----------+-------+------- + 975 2304 5696 + 1125 2304 5504 + 1275 2304 5120 + 1350 2304 4864 + 1425 2304 4544 + 1500 2304 4288 + 1575 2304 3968 + 1650 2304 3776 + 1725 2304 3520 + 1800 2304 3264 + 1875 2304 3072 + 1950 2048 2688 + 2100 1792 2368 + 2250 1536 0 + 2400 1408 0 + 2550 1280 0 + 2775 1152 0 + 2925 1152 0 + 3150 1088 0 + 3375 1024 0 + ----------+-------+------- + + Entries in this table referenced by an efmCuPme2BsMode + instance MUST NOT be deleted. + + This table MUST be maintained in a persistent manner." + REFERENCE + "[ANFP]" + ::= { efmCuPme2B 4 } + + efmCuPme2BReachRateEntry OBJECT-TYPE + SYNTAX EfmCuPme2BReachRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies maximum 2BASE-TL PME data rates + allowed for a certain equivalent loop length, when using + + + + 16-TCPAM or 32-TCPAM encoding. + + When a 2BASE-TL PME is initialized, its data rate MUST NOT + exceed one of the following limitations: + - the value of efmCuPme2BMaxDataRate + - maximum data rate allowed by efmCuPme2BRegion and + efmCuPme2BPower + - maximum data rate for a given encoding specified in the + efmCuPme2BsModeEntry, corresponding to the equivalent loop + length, estimated by the PME + + It is RECOMMENDED that the efmCuPme2BEquivalentLength values + are assigned in increasing order, starting from the minimum + value. + + Entries may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2ReachRateRowStatus." + INDEX { efmCuPme2BsModeIndex, efmCuPme2BReachRateIndex } + ::= { efmCuPme2BReachRateTable 1 } + + EfmCuPme2BReachRateEntry ::= + SEQUENCE { + efmCuPme2BReachRateIndex EfmProfileIndex, + efmCuPme2BEquivalentLength Unsigned32, + efmCuPme2BMaxDataRatePam16 Unsigned32, + efmCuPme2BMaxDataRatePam32 Unsigned32, + efmCuPme2BReachRateRowStatus RowStatus + } + + efmCuPme2BReachRateIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "2BASE-TL custom spectral mode Reach-Rate table index. + This object is the unique index associated with each entry." + ::= { efmCuPme2BReachRateEntry 1 } + + efmCuPme2BEquivalentLength OBJECT-TYPE + SYNTAX Unsigned32(0..8192) + UNITS "m" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum allowed equivalent loop's physical length in meters + for the specified data rates. + An equivalent loop is a hypothetical 26AWG (0.4mm) loop with a + perfect square root attenuation characteristic, without any + + + + bridged taps." + ::= { efmCuPme2BReachRateEntry 2 } + + efmCuPme2BMaxDataRatePam16 OBJECT-TYPE + SYNTAX Unsigned32(0|192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum data rate for a 2BASE-TL PME at the specified + equivalent loop's length using TC-PAM16 encoding. + The value of zero means that TC-PAM16 encoding should not be + used at this distance." + ::= { efmCuPme2BReachRateEntry 3 } + + efmCuPme2BMaxDataRatePam32 OBJECT-TYPE + SYNTAX Unsigned32(0|192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum data rate for a 2BASE-TL PME at the specified + equivalent loop's length using TC-PAM32 encoding. + The value of zero means that TC-PAM32 encoding should not be + used at this distance." + ::= { efmCuPme2BReachRateEntry 4 } + + efmCuPme2BReachRateRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the creation, modification, or deletion + of the associated entry in the efmCuPme2BReachRateTable per + the semantics of RowStatus. + + If an 'active' entry is referenced via efmCuPme2BsMode + instance(s), the entry MUST remain 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BReachRateEntry 5 } + + + -- 10PASS-TS specific PME group + + + + + efmCuPme10P OBJECT IDENTIFIER ::= { efmCuPme 6 } + + efmCuPme10PProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme10PProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports definitions of configuration profiles for + 10PASS-TS PMEs. + The first 22 entries in this table SHALL always be defined as + follows (see 802.3ah Annex 62B.3, table 62B-1): + -------+--------+----+---------+-----+-----+--------------- + Profile Bandplan UPBO BandNotch DRate URate Comment + Index PSDMask# p# p# p# p# + -------+--------+----+---------+-----+-----+--------------- + 1 1 3 2,6,10,11 20 20 default profile + 2 13 5 0 20 20 + 3 1 1 0 20 20 + 4 16 0 0 100 100 + 5 16 0 0 70 50 + 6 6 0 0 50 10 + 7 17 0 0 30 30 + 8 8 0 0 30 5 + 9 4 0 0 25 25 + 10 4 0 0 15 15 + 11 23 0 0 10 10 + 12 23 0 0 5 5 + 13 16 0 2,5,9,11 100 100 + 14 16 0 2,5,9,11 70 50 + 15 6 0 2,6,10,11 50 10 + 16 17 0 2,5,9,11 30 30 + 17 8 0 2,6,10,11 30 5 + 18 4 0 2,6,10,11 25 25 + 19 4 0 2,6,10,11 15 15 + 20 23 0 2,5,9,11 10 10 + 21 23 0 2,5,9,11 5 5 + 22 30 0 0 200 50 + -------+--------+----+---------+-----+-----+--------------- + + These default entries SHALL be created during agent + initialization and MUST NOT be deleted. + + Entries following the first 22 can be dynamically created and + deleted to provide custom administrative (configuration) + profiles and automatic operating profiles. + + This table MUST be maintained in a persistent manner." + REFERENCE + + + + "[802.3ah] Annex 62B.3, 30.11.2.1.6" + ::= { efmCuPme10P 1 } + + efmCuPme10PProfileEntry OBJECT-TYPE + SYNTAX EfmCuPme10PProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single 10PASS-TS PME profile. + + Each profile contains a set of parameters, used either for + configuration or representation of a 10PASS-TS PME. + In case a particular profile is referenced via the + efmCuPmeAdminProfile object (or efmCuAdminProfile if + efmCuPmeAdminProfile is zero), it represents the desired + parameters for the 10PassTS-O PME initialization. + If a profile is referenced via an efmCuPmeOperProfile object, + it represents the current operating parameters of the PME. + + Profiles may be created/deleted using the row creation/ + deletion mechanism via efmCuPme10PProfileRowStatus. If an + 'active' entry is referenced, the entry MUST remain 'active' + until all references are removed. + Default entries MUST NOT be removed." + INDEX { efmCuPme10PProfileIndex } + ::= { efmCuPme10PProfileTable 1 } + + EfmCuPme10PProfileEntry ::= + SEQUENCE { + efmCuPme10PProfileIndex EfmProfileIndex, + efmCuPme10PProfileDescr SnmpAdminString, + efmCuPme10PBandplanPSDMskProfile INTEGER, + efmCuPme10PUPBOReferenceProfile INTEGER, + efmCuPme10PBandNotchProfiles BITS, + efmCuPme10PPayloadDRateProfile INTEGER, + efmCuPme10PPayloadURateProfile INTEGER, + efmCuPme10PProfileRowStatus RowStatus + } + + efmCuPme10PProfileIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "10PASS-TS PME profile index. + This object is the unique index associated with this profile. + Entries in this table are referenced via efmCuAdminProfile or + efmCuPmeAdminProfile." + + + + ::= { efmCuPme10PProfileEntry 1 } + + efmCuPme10PProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 10PASS-TS PME + profile. The string may include information about data rate + and spectral limitations of this particular profile." + ::= { efmCuPme10PProfileEntry 2 } + + efmCuPme10PBandplanPSDMskProfile OBJECT-TYPE + SYNTAX INTEGER { + profile1(1), + profile2(2), + profile3(3), + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9), + profile10(10), + profile11(11), + profile12(12), + profile13(13), + profile14(14), + profile15(15), + profile16(16), + profile17(17), + profile18(18), + profile19(19), + profile20(20), + profile21(21), + profile22(22), + profile23(23), + profile24(24), + profile25(25), + profile26(26), + profile27(27), + profile28(28), + profile29(29), + profile30(30) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The 10PASS-TS PME Bandplan and PSD Mask Profile, as specified + in 802.3ah Annex 62A, table 62A-1. Possible values are: + --------------+------------------------+------------+-------- + Profile Name PSD Mask Bands G.993.1 + 0/1/2/3/4/5 Bandplan + --------------+------------------------+------------+-------- + profile1(1) T1.424 FTTCab.M1 x/D/U/D/U A + profile2(2) T1.424 FTTEx.M1 x/D/U/D/U A + profile3(3) T1.424 FTTCab.M2 x/D/U/D/U A + profile4(4) T1.424 FTTEx.M2 x/D/U/D/U A + profile5(5) T1.424 FTTCab.M1 D/D/U/D/U A + profile6(6) T1.424 FTTEx.M1 D/D/U/D/U A + profile7(7) T1.424 FTTCab.M2 D/D/U/D/U A + profile8(8) T1.424 FTTEx.M2 D/D/U/D/U A + profile9(9) T1.424 FTTCab.M1 U/D/U/D/x A + profile10(10) T1.424 FTTEx.M1 U/D/U/D/x A + profile11(11) T1.424 FTTCab.M2 U/D/U/D/x A + profile12(12) T1.424 FTTEx.M2 U/D/U/D/x A + profile13(13) TS 101 270-1 Pcab.M1.A x/D/U/D/U B + profile14(14) TS 101 270-1 Pcab.M1.B x/D/U/D/U B + profile15(15) TS 101 270-1 Pex.P1.M1 x/D/U/D/U B + profile16(16) TS 101 270-1 Pex.P2.M1 x/D/U/D/U B + profile17(17) TS 101 270-1 Pcab.M2 x/D/U/D/U B + profile18(18) TS 101 270-1 Pex.P1.M2 x/D/U/D/U B + profile19(19) TS 101 270-1 Pex.P2.M2 x/D/U/D/U B + profile20(20) TS 101 270-1 Pcab.M1.A U/D/U/D/x B + profile21(21) TS 101 270-1 Pcab.M1.B U/D/U/D/x B + profile22(22) TS 101 270-1 Pex.P1.M1 U/D/U/D/x B + profile23(23) TS 101 270-1 Pex.P2.M1 U/D/U/D/x B + profile24(24) TS 101 270-1 Pcab.M2 U/D/U/D/x B + profile25(25) TS 101 270-1 Pex.P1.M2 U/D/U/D/x B + profile26(26) TS 101 270-1 Pex.P2.M2 U/D/U/D/x B + profile27(27) G.993.1 F.1.2.1 x/D/U/D/U Annex F + profile28(28) G.993.1 F.1.2.2 x/D/U/D/U Annex F + profile29(29) G.993.1 F.1.2.3 x/D/U/D/U Annex F + profile30(30) T1.424 FTTCab.M1 (ext.) x/D/U/D/U/D Annex A + --------------+------------------------+------------+-------- + " + REFERENCE + "[802.3ah] Annex 62A" + ::= { efmCuPme10PProfileEntry 3 } + + efmCuPme10PUPBOReferenceProfile OBJECT-TYPE + SYNTAX INTEGER { + profile0(0), + profile1(1), + profile2(2), + profile3(3), + + + + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Upstream Power Back-Off (UPBO) Reference + PSD Profile, as specified in 802.3 Annex 62A, table 62A-3. + Possible values are: + ------------+----------------------------- + Profile Name Reference PSD + ------------+----------------------------- + profile0(0) no profile + profile1(1) T1.424 Noise A M1 + profile2(2) T1.424 Noise A M2 + profile3(3) T1.424 Noise F M1 + profile4(4) T1.424 Noise F M2 + profile5(5) TS 101 270-1 Noise A&B + profile6(6) TS 101 270-1 Noise C + profile7(7) TS 101 270-1 Noise D + profile8(8) TS 101 270-1 Noise E + profile9(9) TS 101 270-1 Noise F + ------------+----------------------------- + " + REFERENCE + "[802.3ah] Annex 62A.3.5" + ::= { efmCuPme10PProfileEntry 4 } + + efmCuPme10PBandNotchProfiles OBJECT-TYPE + SYNTAX BITS { + profile0(0), + profile1(1), + profile2(2), + profile3(3), + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9), + profile10(10), + profile11(11) + } + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The 10PASS-TS PME Egress Control Band Notch Profile bitmap, + as specified in 802.3 Annex 62A, table 62A-4. Possible values + are: + --------------+--------+------+------------+------+------ + Profile Name G.991.3 T1.424 TS 101 270-1 StartF EndF + table table table (MHz) (MHz) + --------------+--------+------+------------+------+------ + profile0(0) no profile + profile1(1) F-5 #01 - - 1.810 1.825 + profile2(2) 6-2 15-1 17 1.810 2.000 + profile3(3) F-5 #02 - - 1.907 1.912 + profile4(4) F-5 #03 - - 3.500 3.575 + profile5(5) 6-2 - 17 3.500 3.800 + profile6(6) - 15-1 - 3.500 4.000 + profile7(7) F-5 #04 - - 3.747 3.754 + profile8(8) F-5 #05 - - 3.791 3.805 + profile9(9) 6-2 - 17 7.000 7.100 + profile10(10) F-5 #06 15-1 - 7.000 7.300 + profile11(11) 6-2 15-1 1 10.100 10.150 + --------------+--------+------+------------+------+------ + + Any combination of profiles can be specified by ORing + individual profiles, for example, a value of 0x2230 selects + profiles 2, 6, 10, and 11." + REFERENCE + "[802.3ah] Annex 62A.3.5" + ::= { efmCuPme10PProfileEntry 5 } + + efmCuPme10PPayloadDRateProfile OBJECT-TYPE + SYNTAX INTEGER { + profile5(5), + profile10(10), + profile15(15), + profile20(20), + profile25(25), + profile30(30), + profile50(50), + profile70(70), + profile100(100), + profile140(140), + profile200(200) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Downstream Payload Rate Profile, as + + + + specified in 802.3 Annex 62A. Possible values are: + profile5(5) - 2.5 Mbps + profile10(10) - 5 Mbps + profile15(15) - 7.5 Mbps + profile20(20) - 10 Mbps + profile25(25) - 12.5 Mbps + profile30(30) - 15 Mbps + profile50(50) - 25 Mbps + profile70(70) - 35 Mbps + profile100(100) - 50 Mbps + profile140(140) - 70 Mbps + profile200(200) - 100 Mbps + + Each value represents a target for the PME's Downstream + Payload Bitrate as seen at the MII. If the payload rate of + the selected profile cannot be achieved based on the loop + environment, bandplan, and PSD mask, the PME initialization + SHALL fail." + REFERENCE + "[802.3ah] Annex 62A.3.6" + ::= { efmCuPme10PProfileEntry 6 } + + efmCuPme10PPayloadURateProfile OBJECT-TYPE + SYNTAX INTEGER { + profile5(5), + profile10(10), + profile15(15), + profile20(20), + profile25(25), + profile30(30), + profile50(50), + profile70(70), + profile100(100) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Upstream Payload Rate Profile, as specified + in 802.3 Annex 62A. Possible values are: + profile5(5) - 2.5 Mbps + profile10(10) - 5 Mbps + profile15(15) - 7.5 Mbps + profile20(20) - 10 Mbps + profile25(25) - 12.5 Mbps + profile30(30) - 15 Mbps + profile50(50) - 25 Mbps + profile70(70) - 35 Mbps + profile100(100) - 50 Mbps + + + + Each value represents a target for the PME's Upstream Payload + Bitrate as seen at the MII. If the payload rate of the + selected profile cannot be achieved based on the loop + environment, bandplan, and PSD mask, the PME initialization + SHALL fail." + REFERENCE + "[802.3ah] Annex 62A.3.6" + ::= { efmCuPme10PProfileEntry 7 } + + efmCuPme10PProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation, modification, or deletion of + the associated entry in efmCuPme10PProfileTable per the + semantics of RowStatus. + + If an active entry is referenced via efmCuAdminProfile or + efmCuPmeAdminProfile, the entry MUST remain 'active' until + all references are removed. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme10PProfileEntry 8 } + + + efmCuPme10PStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme10PStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides status information of EFMCu 10PASS-TS + PMEs (modems). + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPme10P 2 } + + efmCuPme10PStatusEntry OBJECT-TYPE + SYNTAX EfmCuPme10PStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu 10PASS-TS PME Status table." + INDEX { ifIndex } + + + + ::= { efmCuPme10PStatusTable 1 } + + EfmCuPme10PStatusEntry ::= + SEQUENCE { + efmCuPme10PFECCorrectedBlocks Counter32, + efmCuPme10PFECUncorrectedBlocks Counter32 + } + + efmCuPme10PFECCorrectedBlocks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received and corrected Forward Error Correction + (FEC) codewords in this 10PASS-TS PME. + + This object maps to the aPMEFECCorrectedBlocks attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, + then this object maps to the 10P FEC correctable errors + register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.1.22, 30.11.2.1.8" + ::= { efmCuPme10PStatusEntry 1 } + + efmCuPme10PFECUncorrectedBlocks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received uncorrectable FEC codewords in this + 10PASS-TS PME. + + This object maps to the aPMEFECUncorrectableBlocks attribute + in Clause 30. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, + then this object maps to the 10P FEC uncorrectable errors + register. + + 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, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.1.23, 30.11.2.1.9" + ::= { efmCuPme10PStatusEntry 2 } + + -- + -- Conformance Statements + -- + + efmCuGroups OBJECT IDENTIFIER ::= { efmCuConformance 1 } + + efmCuCompliances OBJECT IDENTIFIER ::= { efmCuConformance 2 } + + -- Object Groups + + efmCuBasicGroup OBJECT-GROUP + OBJECTS { + efmCuPAFSupported, + efmCuAdminProfile, + efmCuTargetDataRate, + efmCuTargetSnrMgn, + efmCuAdaptiveSpectra, + efmCuPortSide, + efmCuFltStatus + } + STATUS current + DESCRIPTION + "A collection of objects representing management information + common for all types of EFMCu ports." + ::= { efmCuGroups 1 } + + efmCuPAFGroup OBJECT-GROUP + OBJECTS { + efmCuPeerPAFSupported, + efmCuPAFCapacity, + efmCuPeerPAFCapacity, + efmCuPAFAdminState, + efmCuPAFDiscoveryCode, + efmCuPAFRemoteDiscoveryCode, + efmCuNumPMEs + } + STATUS current + DESCRIPTION + "A collection of objects supporting OPTIONAL PME + Aggregation Function (PAF) and PAF discovery in EFMCu ports." + ::= { efmCuGroups 2 } + + + + + efmCuPAFErrorsGroup OBJECT-GROUP + OBJECTS { + efmCuPAFInErrors, + efmCuPAFInSmallFragments, + efmCuPAFInLargeFragments, + efmCuPAFInBadFragments, + efmCuPAFInLostFragments, + efmCuPAFInLostStarts, + efmCuPAFInLostEnds, + efmCuPAFInOverflows + } + STATUS current + DESCRIPTION + "A collection of objects supporting OPTIONAL error counters + of PAF on EFMCu ports." + ::= { efmCuGroups 3 } + + efmCuPmeGroup OBJECT-GROUP + OBJECTS { + efmCuPmeAdminProfile, + efmCuPmeOperStatus, + efmCuPmeFltStatus, + efmCuPmeSubTypesSupported, + efmCuPmeAdminSubType, + efmCuPmeOperSubType, + efmCuPAFRemoteDiscoveryCode, + efmCuPmeOperProfile, + efmCuPmeSnrMgn, + efmCuPmePeerSnrMgn, + efmCuPmeLineAtn, + efmCuPmePeerLineAtn, + efmCuPmeEquivalentLength, + efmCuPmeTCCodingErrors, + efmCuPmeTCCrcErrors, + efmCuPmeThreshLineAtn, + efmCuPmeThreshSnrMgn + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + a 2BASE-TL/10PASS-TS PME." + ::= { efmCuGroups 4 } + + efmCuAlarmConfGroup OBJECT-GROUP + OBJECTS { + efmCuThreshLowRate, + efmCuLowRateCrossingEnable, + efmCuPmeThreshLineAtn, + + + + efmCuPmeLineAtnCrossingEnable, + efmCuPmeThreshSnrMgn, + efmCuPmeSnrMgnCrossingEnable, + efmCuPmeDeviceFaultEnable, + efmCuPmeConfigInitFailEnable, + efmCuPmeProtocolInitFailEnable + } + STATUS current + DESCRIPTION + "A collection of objects supporting configuration of alarm + thresholds and notifications in EFMCu ports." + ::= { efmCuGroups 5 } + + efmCuNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + efmCuLowRateCrossing, + efmCuPmeLineAtnCrossing, + efmCuPmeSnrMgnCrossing, + efmCuPmeDeviceFault, + efmCuPmeConfigInitFailure, + efmCuPmeProtocolInitFailure + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with EFMCu ports." + ::= { efmCuGroups 6 } + + efmCuPme2BProfileGroup OBJECT-GROUP + OBJECTS { + efmCuPme2BProfileDescr, + efmCuPme2BRegion, + efmCuPme2BsMode, + efmCuPme2BMinDataRate, + efmCuPme2BMaxDataRate, + efmCuPme2BPower, + efmCuPme2BConstellation, + efmCuPme2BProfileRowStatus, + efmCuPme2BsModeDescr, + efmCuPme2BsModeRowStatus, + efmCuPme2BEquivalentLength, + efmCuPme2BMaxDataRatePam16, + efmCuPme2BMaxDataRatePam32, + efmCuPme2BReachRateRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects that constitute a configuration + + + + profile for configuration of 2BASE-TL ports." + ::= { efmCuGroups 7} + + efmCuPme10PProfileGroup OBJECT-GROUP + OBJECTS { + efmCuPme10PProfileDescr, + efmCuPme10PBandplanPSDMskProfile, + efmCuPme10PUPBOReferenceProfile, + efmCuPme10PBandNotchProfiles, + efmCuPme10PPayloadDRateProfile, + efmCuPme10PPayloadURateProfile, + efmCuPme10PProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects that constitute a configuration + profile for configuration of 10PASS-TS ports." + ::= { efmCuGroups 8 } + + efmCuPme10PStatusGroup OBJECT-GROUP + OBJECTS { + efmCuPme10PFECCorrectedBlocks, + efmCuPme10PFECUncorrectedBlocks + } + STATUS current + DESCRIPTION + "A collection of objects providing status information + specific to 10PASS-TS PMEs." + ::= { efmCuGroups 9 } + + -- Compliance Statements + + efmCuCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for 2BASE-TL/10PASS-TS interfaces. + Compliance with the following external compliance statements + is REQUIRED: + + MIB Module Compliance Statement + ---------- -------------------- + IF-MIB ifCompliance3 + EtherLike-MIB dot3Compliance2 + MAU-MIB mauModIfCompl3 + + Compliance with the following external compliance statements + is OPTIONAL for implementations supporting PME Aggregation + Function (PAF) with flexible cross-connect between the PCS + + + + and PME ports: + + MIB Module Compliance Statement + ---------- -------------------- + IF-INVERTED-STACK-MIB ifInvCompliance + IF-CAP-STACK-MIB ifCapStackCompliance" + + MODULE -- this module + MANDATORY-GROUPS { + efmCuBasicGroup, + efmCuPmeGroup, + efmCuAlarmConfGroup, + efmCuNotificationGroup + } + + GROUP efmCuPme2BProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting 2BASE-TL PHY." + + GROUP efmCuPme10PProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting 10PASS-TS PHY." + + GROUP efmCuPAFGroup + DESCRIPTION + "Support for this group is only required for + implementations supporting PME Aggregation Function (PAF)." + + GROUP efmCuPAFErrorsGroup + DESCRIPTION + "Support for this group is OPTIONAL for implementations + supporting PME Aggregation Function (PAF)." + + GROUP efmCuPme10PStatusGroup + DESCRIPTION + "Support for this group is OPTIONAL for implementations + supporting 10PASS-TS PHY." + + OBJECT efmCuPmeSubTypesSupported + SYNTAX BITS { + ieee2BaseTLO(0), + ieee2BaseTLR(1), + ieee10PassTSO(2), + ieee10PassTSR(3) + } + DESCRIPTION + + + + "Support for all subtypes is not required. However, at + least one value SHALL be supported." + + OBJECT efmCuPmeAdminSubType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required (needed only for PMEs + supporting more than a single subtype, e.g., + ieee2BaseTLO and ieee2BaseTLR or ieee10PassTSO and + ieee10PassTSR)." + + OBJECT efmCuTargetSnrMgn + MIN-ACCESS read-only + DESCRIPTION + "Write access is OPTIONAL. For PHYs without write access, + the target SNR margin SHALL be fixed at 5dB for 2BASE-TL + and 6dB for 10PASS-TS." + + OBJECT efmCuAdaptiveSpectra + MIN-ACCESS read-only + DESCRIPTION + "Write access is OPTIONAL. For PHYs without write access, + the default value SHOULD be false." + + ::= { efmCuCompliances 1 } +END diff --git a/mibs/ietf/ENTITY-MIB b/mibs/ietf/ENTITY-MIB new file mode 100644 index 0000000..def755b --- /dev/null +++ b/mibs/ietf/ENTITY-MIB @@ -0,0 +1,1499 @@ +ENTITY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, NOTIFICATION-TYPE, + Integer32 + FROM SNMPv2-SMI + TDomain, TAddress, TEXTUAL-CONVENTION, + AutonomousType, RowPointer, TimeStamp, TruthValue, + DateAndTime + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +entityMIB MODULE-IDENTITY + LAST-UPDATED "200508100000Z" + ORGANIZATION "IETF ENTMIB Working Group" + CONTACT-INFO + " WG E-mail: entmib@ietf.org + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/entmib + + Andy Bierman + ietf@andybierman.com + + Keith McCloghrie + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + + + + +1 408-526-5260 + kzm@cisco.com" + + DESCRIPTION + "The MIB module for representing multiple logical + entities supported by a single SNMP agent. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4133; see + the RFC itself for full legal notices." + + REVISION "200508100000Z" + DESCRIPTION + "Initial Version of Entity MIB (Version 3). + This revision obsoletes RFC 2737. + Additions: + - cpu(12) enumeration added to PhysicalClass TC + - DISPLAY-HINT clause to PhysicalIndex TC + - PhysicalIndexOrZero TC + - entPhysicalMfgDate object + - entPhysicalUris object + Changes: + - entPhysicalContainedIn SYNTAX changed from + INTEGER to PhysicalIndexOrZero + + This version published as RFC 4133." + + REVISION "199912070000Z" + DESCRIPTION + "Initial Version of Entity MIB (Version 2). + This revision obsoletes RFC 2037. + This version published as RFC 2737." + + REVISION "199610310000Z" + DESCRIPTION + "Initial version (version 1), published as + RFC 2037." + ::= { mib-2 47 } + +entityMIBObjects OBJECT IDENTIFIER ::= { entityMIB 1 } + +-- MIB contains four groups +entityPhysical OBJECT IDENTIFIER ::= { entityMIBObjects 1 } +entityLogical OBJECT IDENTIFIER ::= { entityMIBObjects 2 } +entityMapping OBJECT IDENTIFIER ::= { entityMIBObjects 3 } +entityGeneral OBJECT IDENTIFIER ::= { entityMIBObjects 4 } + + + + + +-- Textual Conventions +PhysicalIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An arbitrary value that uniquely identifies the physical + entity. The value should be a small, positive integer. + Index values for different physical entities are not + necessarily contiguous." + SYNTAX Integer32 (1..2147483647) + +PhysicalIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + PhysicalIndex convention, which defines a greater than zero + value used to identify a physical entity. This extension + permits the additional value of zero. The semantics of the + value zero are object-specific and must, therefore, be + defined as part of the description of any object that uses + this syntax. Examples of the usage of this extension are + situations where none or all physical entities need to be + referenced." + SYNTAX Integer32 (0..2147483647) + +PhysicalClass ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated value which provides an indication of the + general hardware type of a particular physical entity. + There are no restrictions as to the number of + entPhysicalEntries of each entPhysicalClass, which must be + instantiated by an agent. + + The enumeration 'other' is applicable if the physical entity + class is known, but does not match any of the supported + values. + + The enumeration 'unknown' is applicable if the physical + entity class is unknown to the agent. + + The enumeration 'chassis' is applicable if the physical + entity class is an overall container for networking + equipment. Any class of physical entity, except a stack, + may be contained within a chassis; and a chassis may only + be contained within a stack. + + + + + The enumeration 'backplane' is applicable if the physical + entity class is some sort of device for aggregating and + forwarding networking traffic, such as a shared backplane in + a modular ethernet switch. Note that an agent may model a + backplane as a single physical entity, which is actually + implemented as multiple discrete physical components (within + a chassis or stack). + + The enumeration 'container' is applicable if the physical + entity class is capable of containing one or more removable + physical entities, possibly of different types. For + example, each (empty or full) slot in a chassis will be + modeled as a container. Note that all removable physical + entities should be modeled within a container entity, such + as field-replaceable modules, fans, or power supplies. Note + that all known containers should be modeled by the agent, + including empty containers. + + The enumeration 'powerSupply' is applicable if the physical + entity class is a power-supplying component. + + The enumeration 'fan' is applicable if the physical entity + class is a fan or other heat-reduction component. + + The enumeration 'sensor' is applicable if the physical + entity class is some sort of sensor, such as a temperature + sensor within a router chassis. + + The enumeration 'module' is applicable if the physical + entity class is some sort of self-contained sub-system. If + the enumeration 'module' is removable, then it should be + modeled within a container entity, otherwise it should be + modeled directly within another physical entity (e.g., a + chassis or another module). + + The enumeration 'port' is applicable if the physical entity + class is some sort of networking port, capable of receiving + and/or transmitting networking traffic. + + The enumeration 'stack' is applicable if the physical entity + class is some sort of super-container (possibly virtual), + intended to group together multiple chassis entities. A + stack may be realized by a 'virtual' cable, a real + interconnect cable, attached to multiple chassis, or may in + fact be comprised of multiple interconnect cables. A stack + should not be modeled within any other physical entities, + but a stack may be contained within another stack. Only + chassis entities should be contained within a stack. + + + + The enumeration 'cpu' is applicable if the physical entity + class is some sort of central processing unit." + SYNTAX INTEGER { + other(1), + unknown(2), + chassis(3), + backplane(4), + container(5), -- e.g., chassis slot or daughter-card holder + powerSupply(6), + fan(7), + sensor(8), + module(9), -- e.g., plug-in card or daughter-card + port(10), + stack(11), -- e.g., stack of multiple chassis entities + cpu(12) + } + +SnmpEngineIdOrNone ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A specially formatted SnmpEngineID string for use with the + Entity MIB. + + If an instance of an object of SYNTAX SnmpEngineIdOrNone has + a non-zero length, then the object encoding and semantics + are defined by the SnmpEngineID textual convention (see STD + 62, RFC 3411 [RFC3411]). + + If an instance of an object of SYNTAX SnmpEngineIdOrNone + contains a zero-length string, then no appropriate + SnmpEngineID is associated with the logical entity (i.e., + SNMPv3 is not supported)." + SYNTAX OCTET STRING (SIZE(0..32)) -- empty string or SnmpEngineID + + +-- The Physical Entity Table +entPhysicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per physical entity. There is + always at least one row for an 'overall' physical entity." + ::= { entityPhysical 1 } + +entPhysicalEntry OBJECT-TYPE + SYNTAX EntPhysicalEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Information about a particular physical entity. + + Each entry provides objects (entPhysicalDescr, + entPhysicalVendorType, and entPhysicalClass) to help an NMS + identify and characterize the entry, and objects + (entPhysicalContainedIn and entPhysicalParentRelPos) to help + an NMS relate the particular entry to other entries in this + table." + INDEX { entPhysicalIndex } + ::= { entPhysicalTable 1 } + +EntPhysicalEntry ::= SEQUENCE { + entPhysicalIndex PhysicalIndex, + entPhysicalDescr SnmpAdminString, + entPhysicalVendorType AutonomousType, + entPhysicalContainedIn PhysicalIndexOrZero, + entPhysicalClass PhysicalClass, + entPhysicalParentRelPos Integer32, + entPhysicalName SnmpAdminString, + entPhysicalHardwareRev SnmpAdminString, + entPhysicalFirmwareRev SnmpAdminString, + entPhysicalSoftwareRev SnmpAdminString, + entPhysicalSerialNum SnmpAdminString, + entPhysicalMfgName SnmpAdminString, + entPhysicalModelName SnmpAdminString, + entPhysicalAlias SnmpAdminString, + entPhysicalAssetID SnmpAdminString, + entPhysicalIsFRU TruthValue, + entPhysicalMfgDate DateAndTime, + entPhysicalUris OCTET STRING + +} + +entPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this entry." + ::= { entPhysicalEntry 1 } + +entPhysicalDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A textual description of physical entity. This object + should contain a string that identifies the manufacturer's + name for the physical entity, and should be set to a + distinct value for each version or model of the physical + entity." + ::= { entPhysicalEntry 2 } + +entPhysicalVendorType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the vendor-specific hardware type of the + physical entity. Note that this is different from the + definition of MIB-II's sysObjectID. + + An agent should set this object to an enterprise-specific + registration identifier value indicating the specific + equipment type in detail. The associated instance of + entPhysicalClass is used to indicate the general type of + hardware device. + + If no vendor-specific registration identifier exists for + this physical entity, or the value is unknown by this agent, + then the value { 0 0 } is returned." + ::= { entPhysicalEntry 3 } + +entPhysicalContainedIn OBJECT-TYPE + SYNTAX PhysicalIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of entPhysicalIndex for the physical entity which + 'contains' this physical entity. A value of zero indicates + this physical entity is not contained in any other physical + entity. Note that the set of 'containment' relationships + define a strict hierarchy; that is, recursion is not + allowed. + + In the event that a physical entity is contained by more + than one physical entity (e.g., double-wide modules), this + object should identify the containing entity with the lowest + value of entPhysicalIndex." + ::= { entPhysicalEntry 4 } + +entPhysicalClass OBJECT-TYPE + SYNTAX PhysicalClass + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "An indication of the general hardware type of the physical + entity. + + An agent should set this object to the standard enumeration + value that most accurately indicates the general class of + the physical entity, or the primary class if there is more + than one entity. + + If no appropriate standard registration identifier exists + for this physical entity, then the value 'other(1)' is + returned. If the value is unknown by this agent, then the + value 'unknown(2)' is returned." + ::= { entPhysicalEntry 5 } + +entPhysicalParentRelPos OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the relative position of this 'child' + component among all its 'sibling' components. Sibling + components are defined as entPhysicalEntries that share the + same instance values of each of the entPhysicalContainedIn + and entPhysicalClass objects. + + An NMS can use this object to identify the relative ordering + for all sibling components of a particular parent + (identified by the entPhysicalContainedIn instance in each + sibling entry). + + If possible, this value should match any external labeling + of the physical component. For example, for a container + (e.g., card slot) labeled as 'slot #3', + entPhysicalParentRelPos should have the value '3'. Note + that the entPhysicalEntry for the module plugged in slot 3 + should have an entPhysicalParentRelPos value of '1'. + + If the physical position of this component does not match + any external numbering or clearly visible ordering, then + user documentation or other external reference material + should be used to determine the parent-relative position. + If this is not possible, then the agent should assign a + consistent (but possibly arbitrary) ordering to a given set + of 'sibling' components, perhaps based on internal + representation of the components. + + + + + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is '0', then the value '-1' is + returned. Otherwise, a non-negative integer is returned, + indicating the parent-relative position of this physical + entity. + + Parent-relative ordering normally starts from '1' and + continues to 'N', where 'N' represents the highest + positioned child entity. However, if the physical entities + (e.g., slots) are labeled from a starting position of zero, + then the first sibling should be associated with an + entPhysicalParentRelPos value of '0'. Note that this + ordering may be sparse or dense, depending on agent + implementation. + + The actual values returned are not globally meaningful, as + each 'parent' component may use different numbering + algorithms. The ordering is only meaningful among siblings + of the same parent component. + + The agent should retain parent-relative position values + across reboots, either through algorithmic assignment or use + of non-volatile storage." + ::= { entPhysicalEntry 6 } + +entPhysicalName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the physical entity. The value of this + object should be the name of the component 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 (e.g., `console') or a simple component number (e.g., + port or module number, such as `1'), depending on the + physical component naming syntax of the device. + + If there is no local name, or if this object is otherwise + not applicable, then this object contains a zero-length + string. + + Note that the value of entPhysicalName for two physical + entities will be the same in the event that the console + interface does not distinguish between them, e.g., slot-1 + and the card in slot-1." + ::= { entPhysicalEntry 7 } + + + +entPhysicalHardwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific hardware revision string for the + physical entity. The preferred value is the hardware + revision identifier actually printed on the component itself + (if present). + + Note that if revision information is stored internally in a + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific hardware revision string is associated with + the physical component, or if this information is unknown to + the agent, then this object will contain a zero-length + string." + ::= { entPhysicalEntry 8 } + +entPhysicalFirmwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific firmware revision string for the + physical entity. + + Note that if revision information is stored internally in a + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific firmware programs are associated with the + physical component, or if this information is unknown to the + agent, then this object will contain a zero-length string." + ::= { entPhysicalEntry 9 } + +entPhysicalSoftwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific software revision string for the + physical entity. + + Note that if revision information is stored internally in a + + + + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific software programs are associated with the + physical component, or if this information is unknown to the + agent, then this object will contain a zero-length string." + ::= { entPhysicalEntry 10 } + +entPhysicalSerialNum OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The vendor-specific serial number string for the physical + entity. The preferred value is the serial number string + actually printed on the component itself (if present). + + On the first instantiation of an physical entity, the value + of entPhysicalSerialNum associated with that entity is set + to the correct vendor-assigned serial number, if this + information is available to the agent. If a serial number + is unknown or non-existent, the entPhysicalSerialNum will be + set to a zero-length string instead. + + Note that implementations that can correctly identify the + serial numbers of all installed physical entities do not + need to provide write access to the entPhysicalSerialNum + object. Agents which cannot provide non-volatile storage + for the entPhysicalSerialNum strings are not required to + implement write access for this object. + + Not every physical component will have a serial number, or + even need one. Physical entities for which the associated + value of the entPhysicalIsFRU object is equal to 'false(2)' + (e.g., the repeater ports within a repeater module), do not + need their own unique serial number. An agent does not have + to provide write access for such entities, and may return a + zero-length string. + + If write access is implemented for an instance of + entPhysicalSerialNum, and a value is written into the + instance, the agent must retain the supplied value in the + entPhysicalSerialNum instance (associated with the same + physical entity) for as long as that entity remains + instantiated. This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + + + + entity's entPhysicalIndex value." + ::= { entPhysicalEntry 11 } + +entPhysicalMfgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the manufacturer of this physical component. + The preferred value is the manufacturer name string actually + printed on the component itself (if present). + + Note that comparisons between instances of the + entPhysicalModelName, entPhysicalFirmwareRev, + entPhysicalSoftwareRev, and the entPhysicalSerialNum + objects, are only meaningful amongst entPhysicalEntries with + the same value of entPhysicalMfgName. + + If the manufacturer name string associated with the physical + component is unknown to the agent, then this object will + contain a zero-length string." + ::= { entPhysicalEntry 12 } + +entPhysicalModelName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific model name identifier string associated + with this physical component. The preferred value is the + customer-visible part number, which may be printed on the + component itself. + + If the model name string associated with the physical + component is unknown to the agent, then this object will + contain a zero-length string." + ::= { entPhysicalEntry 13 } + +entPhysicalAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is an 'alias' name for the physical entity, as + specified by a network manager, and provides a non-volatile + 'handle' for the physical entity. + + On the first instantiation of a physical entity, the value + + + + of entPhysicalAlias associated with that entity is set to + the zero-length string. However, the agent may set the + value to a locally unique default value, instead of a + zero-length string. + + If write access is implemented for an instance of + entPhysicalAlias, and a value is written into the instance, + the agent must retain the supplied value in the + entPhysicalAlias instance (associated with the same physical + entity) for as long as that entity remains instantiated. + This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + entity's entPhysicalIndex value." + ::= { entPhysicalEntry 14 } + +entPhysicalAssetID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a user-assigned asset tracking identifier + (as specified by a network manager) for the physical entity, + and provides non-volatile storage of this information. + + On the first instantiation of a physical entity, the value + of entPhysicalAssetID associated with that entity is set to + the zero-length string. + + Not every physical component will have an asset tracking + identifier, or even need one. Physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)' (e.g., the repeater ports within a repeater + module), do not need their own unique asset tracking + identifier. An agent does not have to provide write access + for such entities, and may instead return a zero-length + string. + + If write access is implemented for an instance of + entPhysicalAssetID, and a value is written into the + instance, the agent must retain the supplied value in the + entPhysicalAssetID instance (associated with the same + physical entity) for as long as that entity remains + instantiated. This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + entity's entPhysicalIndex value. + + + + + If no asset tracking information is associated with the + physical component, then this object will contain a + zero-length string." + ::= { entPhysicalEntry 15 } + +entPhysicalIsFRU OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this physical entity + is considered a 'field replaceable unit' by the vendor. If + this object contains the value 'true(1)' then this + entPhysicalEntry identifies a field replaceable unit. For + all entPhysicalEntries that represent components + permanently contained within a field replaceable unit, the + value 'false(2)' should be returned for this object." + ::= { entPhysicalEntry 16 } + +entPhysicalMfgDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the date of manufacturing of the + managed entity. If the manufacturing date is unknown or not + supported, the object is not instantiated. The special + value '0000000000000000'H may also be returned in this + case." + ::= { entPhysicalEntry 17 } + +entPhysicalUris OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains additional identification information + about the physical entity. The object contains URIs and, + therefore, the syntax of this object must conform to RFC + 3986, section 2. + + Multiple URIs may be present and are separated by white + space characters. Leading and trailing white space + characters are ignored. + + If no additional identification information is known + about the physical entity or supported, the object is not + instantiated. A zero length octet string may also be + + + + returned in this case." + REFERENCE + "RFC 3986, Uniform Resource Identifiers (URI): Generic + Syntax, section 2, August 1998." + + ::= { entPhysicalEntry 18 } + + +-- The Logical Entity Table +entLogicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntLogicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per logical entity. For agents + that implement more than one naming scope, at least one + entry must exist. Agents which instantiate all MIB objects + within a single naming scope are not required to implement + this table." + ::= { entityLogical 1 } + +entLogicalEntry OBJECT-TYPE + SYNTAX EntLogicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular logical entity. Entities + may be managed by this agent or other SNMP agents (possibly) + in the same chassis." + INDEX { entLogicalIndex } + ::= { entLogicalTable 1 } + +EntLogicalEntry ::= SEQUENCE { + entLogicalIndex Integer32, + entLogicalDescr SnmpAdminString, + entLogicalType AutonomousType, + entLogicalCommunity OCTET STRING, + entLogicalTAddress TAddress, + entLogicalTDomain TDomain, + entLogicalContextEngineID SnmpEngineIdOrNone, + entLogicalContextName SnmpAdminString +} + +entLogicalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The value of this object uniquely identifies the logical + entity. The value should be a small positive integer; index + values for different logical entities are not necessarily + contiguous." + ::= { entLogicalEntry 1 } + +entLogicalDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the logical entity. This object + should contain a string that identifies the manufacturer's + name for the logical entity, and should be set to a distinct + value for each version of the logical entity." + ::= { entLogicalEntry 2 } + +entLogicalType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of logical entity. This will + typically be the OBJECT IDENTIFIER name of the node in the + SMI's naming hierarchy which represents the major MIB + module, or the majority of the MIB modules, supported by the + logical entity. For example: + a logical entity of a regular host/router -> mib-2 + a logical entity of a 802.1d bridge -> dot1dBridge + a logical entity of a 802.3 repeater -> snmpDot3RptrMgmt + If an appropriate node in the SMI's naming hierarchy cannot + be identified, the value 'mib-2' should be used." + ::= { entLogicalEntry 3 } + +entLogicalCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "An SNMPv1 or SNMPv2C community-string, which can be used to + access detailed management information for this logical + entity. The agent should allow read access with this + community string (to an appropriate subset of all managed + objects) and may also return a community string based on the + privileges of the request used to read this object. Note + that an agent may return a community string with read-only + privileges, even if this object is accessed with a + read-write community string. However, the agent must take + + + + care not to return a community string that allows more + privileges than the community string used to access this + object. + + A compliant SNMP agent may wish to conserve naming scopes by + representing multiple logical entities in a single 'default' + naming scope. This is possible when the logical entities, + represented by the same value of entLogicalCommunity, have + no object instances in common. For example, 'bridge1' and + 'repeater1' may be part of the main naming scope, but at + least one additional community string is needed to represent + 'bridge2' and 'repeater2'. + + Logical entities 'bridge1' and 'repeater1' would be + represented by sysOREntries associated with the 'default' + naming scope. + + For agents not accessible via SNMPv1 or SNMPv2C, the value + of this object is the empty string. This object may also + contain an empty string if a community string has not yet + been assigned by the agent, or if no community string with + suitable access rights can be returned for a particular SNMP + request. + + Note that this object is deprecated. Agents which implement + SNMPv3 access should use the entLogicalContextEngineID and + entLogicalContextName objects to identify the context + associated with each logical entity. SNMPv3 agents may + return a zero-length string for this object, or may continue + to return a community string (e.g., tri-lingual agent + support)." + ::= { entLogicalEntry 4 } + +entLogicalTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport service address by which the logical entity + receives network management traffic, formatted according to + the corresponding value of entLogicalTDomain. + + For snmpUDPDomain, a TAddress is 6 octets long: the initial + 4 octets contain the IP-address in network-byte order and + the last 2 contain the UDP port in network-byte order. + Consult 'Transport Mappings for the Simple Network + Management Protocol' (STD 62, RFC 3417 [RFC3417]) for + further information on snmpUDPDomain." + + + + ::= { entLogicalEntry 5 } + +entLogicalTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the kind of transport service by which the + logical entity receives network management traffic. + Possible values for this object are presently found in the + Transport Mappings for Simple Network Management Protocol' + (STD 62, RFC 3417 [RFC3417])." + ::= { entLogicalEntry 6 } + +entLogicalContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineIdOrNone + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative contextEngineID that can be used to send + an SNMP message concerning information held by this logical + entity, to the address specified by the associated + 'entLogicalTAddress/entLogicalTDomain' pair. + + This object, together with the associated + entLogicalContextName object, defines the context associated + with a particular logical entity, and allows access to SNMP + engines identified by a contextEngineId and contextName + pair. + + If no value has been configured by the agent, a zero-length + string is returned, or the agent may choose not to + instantiate this object at all." + ::= { entLogicalEntry 7 } + +entLogicalContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contextName that can be used to send an SNMP message + concerning information held by this logical entity, to the + address specified by the associated + 'entLogicalTAddress/entLogicalTDomain' pair. + + This object, together with the associated + entLogicalContextEngineID object, defines the context + associated with a particular logical entity, and allows + + + + access to SNMP engines identified by a contextEngineId and + contextName pair. + + If no value has been configured by the agent, a zero-length + string is returned, or the agent may choose not to + instantiate this object at all." + ::= { entLogicalEntry 8 } + +entLPMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntLPMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains zero or more rows of logical entity to + physical equipment associations. For each logical entity + known by this agent, there are zero or more mappings to the + physical resources, which are used to realize that logical + entity. + + An agent should limit the number and nature of entries in + this table such that only meaningful and non-redundant + information is returned. For example, in a system that + contains a single power supply, mappings between logical + entities and the power supply are not useful and should not + be included. + + Also, only the most appropriate physical component, which is + closest to the root of a particular containment tree, should + be identified in an entLPMapping entry. + + For example, suppose a bridge is realized on a particular + module, and all ports on that module are ports on this + bridge. A mapping between the bridge and the module would + be useful, but additional mappings between the bridge and + each of the ports on that module would be redundant (because + the entPhysicalContainedIn hierarchy can provide the same + information). On the other hand, if more than one bridge + were utilizing ports on this module, then mappings between + each bridge and the ports it used would be appropriate. + + Also, in the case of a single backplane repeater, a mapping + for the backplane to the single repeater entity is not + necessary." + ::= { entityMapping 1 } + +entLPMappingEntry OBJECT-TYPE + SYNTAX EntLPMappingEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Information about a particular logical entity to physical + equipment association. Note that the nature of the + association is not specifically identified in this entry. + It is expected that sufficient information exists in the + MIBs used to manage a particular logical entity to infer how + physical component information is utilized." + INDEX { entLogicalIndex, entLPPhysicalIndex } + ::= { entLPMappingTable 1 } + +EntLPMappingEntry ::= SEQUENCE { + entLPPhysicalIndex PhysicalIndex +} + +entLPPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the index value of a + particular entPhysicalEntry associated with the indicated + entLogicalEntity." + ::= { entLPMappingEntry 1 } + + +-- logical entity/component to alias table +entAliasMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntAliasMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains zero or more rows, representing + mappings of logical entity and physical component to + external MIB identifiers. Each physical port in the system + may be associated with a mapping to an external identifier, + which itself is associated with a particular logical + entity's naming scope. A 'wildcard' mechanism is provided + to indicate that an identifier is associated with more than + one logical entity." + ::= { entityMapping 2 } + +entAliasMappingEntry OBJECT-TYPE + SYNTAX EntAliasMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical equipment, logical + + + + entity to external identifier binding. Each logical + entity/physical component pair may be associated with one + alias mapping. The logical entity index may also be used as + a 'wildcard' (refer to the entAliasLogicalIndexOrZero object + DESCRIPTION clause for details.) + + Note that only entPhysicalIndex values that represent + physical ports (i.e., associated entPhysicalClass value is + 'port(10)') are permitted to exist in this table." + INDEX { entPhysicalIndex, entAliasLogicalIndexOrZero } + ::= { entAliasMappingTable 1 } + +EntAliasMappingEntry ::= SEQUENCE { + entAliasLogicalIndexOrZero Integer32, + entAliasMappingIdentifier RowPointer +} + +entAliasLogicalIndexOrZero OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object identifies the logical entity + that defines the naming scope for the associated instance + of the 'entAliasMappingIdentifier' object. + + If this object has a non-zero value, then it identifies the + logical entity named by the same value of entLogicalIndex. + + If this object has a value of zero, then the mapping between + the physical component and the alias identifier for this + entAliasMapping entry is associated with all unspecified + logical entities. That is, a value of zero (the default + mapping) identifies any logical entity that does not have + an explicit entry in this table for a particular + entPhysicalIndex/entAliasMappingIdentifier pair. + + For example, to indicate that a particular interface (e.g., + physical component 33) is identified by the same value of + ifIndex for all logical entities, the following instance + might exist: + + entAliasMappingIdentifier.33.0 = ifIndex.5 + + In the event an entPhysicalEntry is associated differently + for some logical entities, additional entAliasMapping + entries may exist, e.g.: + + + + + entAliasMappingIdentifier.33.0 = ifIndex.6 + entAliasMappingIdentifier.33.4 = ifIndex.1 + entAliasMappingIdentifier.33.5 = ifIndex.1 + entAliasMappingIdentifier.33.10 = ifIndex.12 + + Note that entries with non-zero entAliasLogicalIndexOrZero + index values have precedence over zero-indexed entries. In + this example, all logical entities except 4, 5, and 10, + associate physical entity 33 with ifIndex.6." + ::= { entAliasMappingEntry 1 } + +entAliasMappingIdentifier OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies a particular conceptual + row associated with the indicated entPhysicalIndex and + entLogicalIndex pair. + + Because only physical ports are modeled in this table, only + entries that represent interfaces or ports are allowed. If + an ifEntry exists on behalf of a particular physical port, + then this object should identify the associated 'ifEntry'. + For repeater ports, the appropriate row in the + 'rptrPortGroupTable' should be identified instead. + + For example, suppose a physical port was represented by + entPhysicalEntry.3, entLogicalEntry.15 existed for a + repeater, and entLogicalEntry.22 existed for a bridge. Then + there might be two related instances of + entAliasMappingIdentifier: + entAliasMappingIdentifier.3.15 == rptrPortGroupIndex.5.2 + entAliasMappingIdentifier.3.22 == ifIndex.17 + It is possible that other mappings (besides interfaces and + repeater ports) may be defined in the future, as required. + + Bridge ports are identified by examining the Bridge MIB and + appropriate ifEntries associated with each 'dot1dBasePort', + and are thus not represented in this table." + ::= { entAliasMappingEntry 2 } + + +-- physical mapping table +entPhysicalContainsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhysicalContainsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table that exposes the container/'containee' + relationships between physical entities. This table + provides all the information found by constructing the + virtual containment tree for a given entPhysicalTable, but + in a more direct format. + + In the event a physical entity is contained by more than one + other physical entity (e.g., double-wide modules), this + table should include these additional mappings, which cannot + be represented in the entPhysicalTable virtual containment + tree." + ::= { entityMapping 3 } + +entPhysicalContainsEntry OBJECT-TYPE + SYNTAX EntPhysicalContainsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single container/'containee' relationship." + INDEX { entPhysicalIndex, entPhysicalChildIndex } + ::= { entPhysicalContainsTable 1 } + +EntPhysicalContainsEntry ::= SEQUENCE { + entPhysicalChildIndex PhysicalIndex +} + +entPhysicalChildIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of entPhysicalIndex for the contained physical + entity." + ::= { entPhysicalContainsEntry 1 } + +-- last change time stamp for the whole MIB +entLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time a conceptual row is + created, modified, or deleted in any of these tables: + - entPhysicalTable + - entLogicalTable + - entLPMappingTable + - entAliasMappingTable + + + + - entPhysicalContainsTable + " + ::= { entityGeneral 1 } + + +-- Entity MIB Trap Definitions +entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 } +entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 } + +entConfigChange NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An entConfigChange notification is generated when the value + of entLastChangeTime changes. It can be utilized by an NMS + to trigger logical/physical entity table maintenance polls. + + An agent should not generate more than one entConfigChange + 'notification-event' in a given time interval (five seconds + is the suggested default). A 'notification-event' is the + transmission of a single trap or inform PDU to a list of + notification destinations. + + If additional configuration changes occur within the + throttling period, then notification-events for these + changes should be suppressed by the agent until the current + throttling period expires. At the end of a throttling + period, one notification-event should be generated if any + configuration changes occurred since the start of the + throttling period. In such a case, another throttling + period is started right away. + + An NMS should periodically check the value of + entLastChangeTime to detect any missed entConfigChange + notification-events, e.g., due to throttling or transmission + loss." + ::= { entityMIBTrapPrefix 1 } + + +-- conformance information +entityConformance OBJECT IDENTIFIER ::= { entityMIB 3 } + +entityCompliances OBJECT IDENTIFIER ::= { entityConformance 1 } +entityGroups OBJECT IDENTIFIER ::= { entityConformance 2 } + + +-- compliance statements +entityCompliance MODULE-COMPLIANCE + STATUS deprecated + + + + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 1 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityLogicalGroup, + entityMappingGroup, + entityGeneralGroup, + entityNotificationsGroup + } + ::= { entityCompliances 1 } + +entity2Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 2 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityPhysical2Group, + entityGeneralGroup, + entityNotificationsGroup + } + GROUP entityLogical2Group + DESCRIPTION + "Implementation of this group is not mandatory for agents + that model all MIB object instances within a single naming + scope." + + GROUP entityMappingGroup + DESCRIPTION + "Implementation of the entPhysicalContainsTable is mandatory + for all agents. Implementation of the entLPMappingTable and + entAliasMappingTables are not mandatory for agents that + model all MIB object instances within a single naming scope. + + Note that the entAliasMappingTable may be useful for all + agents; however, implementation of the entityLogicalGroup or + entityLogical2Group is required to support this table." + + OBJECT entPhysicalSerialNum + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot identify serial number information for physical + entities, and/or cannot provide non-volatile storage for + + + + NMS-assigned serial numbers. + + Write access is not required for agents that can identify + serial number information for physical entities, but cannot + provide non-volatile storage for NMS-assigned serial + numbers. + + Write access is not required for physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)'." + + OBJECT entPhysicalAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the associated + entPhysicalClass value is equal to 'chassis(3)'." + + OBJECT entPhysicalAssetID + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot provide non-volatile storage for NMS-assigned asset + identifiers. + + Write access is not required for physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)'." + + OBJECT entPhysicalClass + SYNTAX INTEGER { + other(1), + unknown(2), + chassis(3), + backplane(4), + container(5), + powerSupply(6), + fan(7), + sensor(8), + module(9), + port(10), + stack(11) + } + DESCRIPTION + "Implementation of the 'cpu(12)' enumeration is not + required." + + ::= { entityCompliances 2 } + + + + +entity3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 3 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityPhysical2Group, + entityPhysical3Group, + entityGeneralGroup, + entityNotificationsGroup + } + GROUP entityLogical2Group + DESCRIPTION + "Implementation of this group is not mandatory for agents + that model all MIB object instances within a single naming + scope." + + GROUP entityMappingGroup + DESCRIPTION + "Implementation of the entPhysicalContainsTable is mandatory + for all agents. Implementation of the entLPMappingTable and + entAliasMappingTables are not mandatory for agents that + model all MIB object instances within a single naming scope. + + Note that the entAliasMappingTable may be useful for all + agents; however, implementation of the entityLogicalGroup or + entityLogical2Group is required to support this table." + + OBJECT entPhysicalSerialNum + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot identify serial number information for physical + entities, and/or cannot provide non-volatile storage for + NMS-assigned serial numbers. + + Write access is not required for agents that can identify + serial number information for physical entities, but cannot + provide non-volatile storage for NMS-assigned serial + numbers. + + Write access is not required for physical entities for + which the associated value of the entPhysicalIsFRU object + is equal to 'false(2)'." + + OBJECT entPhysicalAlias + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the associated + entPhysicalClass value is equal to 'chassis(3)'." + + OBJECT entPhysicalAssetID + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot provide non-volatile storage for NMS-assigned asset + identifiers. + + Write access is not required for physical entities for which + the associated value of entPhysicalIsFRU is equal to + 'false(2)'." + ::= { entityCompliances 3 } + + +-- MIB groupings +entityPhysicalGroup OBJECT-GROUP + OBJECTS { + entPhysicalDescr, + entPhysicalVendorType, + entPhysicalContainedIn, + entPhysicalClass, + entPhysicalParentRelPos, + entPhysicalName + } + STATUS current + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information." + ::= { entityGroups 1 } + +entityLogicalGroup OBJECT-GROUP + OBJECTS { + entLogicalDescr, + entLogicalType, + entLogicalCommunity, + entLogicalTAddress, + entLogicalTDomain + } + STATUS deprecated + DESCRIPTION + "The collection of objects used to represent the list of + logical entities, for which a single agent provides + management information." + + + + ::= { entityGroups 2 } + +entityMappingGroup OBJECT-GROUP + OBJECTS { + entLPPhysicalIndex, + entAliasMappingIdentifier, + entPhysicalChildIndex + } + STATUS current + DESCRIPTION + "The collection of objects used to represent the + associations between multiple logical entities, physical + components, interfaces, and port identifiers, for which a + single agent provides management information." + ::= { entityGroups 3 } + +entityGeneralGroup OBJECT-GROUP + OBJECTS { + entLastChangeTime + } + STATUS current + DESCRIPTION + "The collection of objects used to represent general entity + information, for which a single agent provides management + information." + ::= { entityGroups 4 } + +entityNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { entConfigChange } + STATUS current + DESCRIPTION + "The collection of notifications used to indicate Entity MIB + data consistency and general status information." + ::= { entityGroups 5 } + +entityPhysical2Group OBJECT-GROUP + OBJECTS { + entPhysicalHardwareRev, + entPhysicalFirmwareRev, + entPhysicalSoftwareRev, + entPhysicalSerialNum, + entPhysicalMfgName, + entPhysicalModelName, + entPhysicalAlias, + entPhysicalAssetID, + entPhysicalIsFRU + } + STATUS current + + + + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information. This group augments the objects + contained in the entityPhysicalGroup." + ::= { entityGroups 6 } + +entityLogical2Group OBJECT-GROUP + OBJECTS { + entLogicalDescr, + entLogicalType, + entLogicalTAddress, + entLogicalTDomain, + entLogicalContextEngineID, + entLogicalContextName + } + STATUS current + DESCRIPTION + "The collection of objects used to represent the + list of logical entities, for which a single SNMP entity + provides management information." + ::= { entityGroups 7 } + +entityPhysical3Group OBJECT-GROUP + OBJECTS { + entPhysicalMfgDate, + entPhysicalUris + } + STATUS current + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information. This group augments the objects + contained in the entityPhysicalGroup." + ::= { entityGroups 8 } + + +END diff --git a/mibs/ietf/ENTITY-SENSOR-MIB b/mibs/ietf/ENTITY-SENSOR-MIB new file mode 100644 index 0000000..d3dbde5 --- /dev/null +++ b/mibs/ietf/ENTITY-SENSOR-MIB @@ -0,0 +1,474 @@ +ENTITY-SENSOR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + entPhysicalIndex, entityPhysicalGroup + FROM ENTITY-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +entitySensorMIB MODULE-IDENTITY + LAST-UPDATED "200212160000Z" + ORGANIZATION "IETF Entity MIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + Tel: +1 408-527-3711 + E-mail: abierman@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Dan Romascanu + Avaya Inc. + Tel: +972-3-645-8414 + Email: dromasca@avaya.com + Postal: Atidim technology Park, Bldg. #3 + Tel Aviv, Israel, 61131 + + K.C. Norseth + L-3 Communications + Tel: +1 801-594-2809 + Email: kenyon.c.norseth@L-3com.com + Postal: 640 N. 2200 West. + + + + Salt Lake City, Utah 84116-0850 + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/entmib " + DESCRIPTION + "This module defines Entity MIB extensions for physical + sensors. + + Copyright (C) The Internet Society (2002). This version + of this MIB module is part of RFC 3433; see the RFC + itself for full legal notices." + + REVISION "200212160000Z" + DESCRIPTION + "Initial version of the Entity Sensor MIB module, published + as RFC 3433." + ::= { mib-2 99 } + +entitySensorObjects OBJECT IDENTIFIER + ::= { entitySensorMIB 1 } + +-- entitySensorNotifications OBJECT IDENTIFIER +-- ::= { entitySensorMIB 2 } +entitySensorConformance OBJECT IDENTIFIER + ::= { entitySensorMIB 3 } + +-- +-- Textual Conventions +-- + +EntitySensorDataType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents the Entity Sensor + measurement data type associated with a physical sensor + value. The actual data units are determined by examining an + object of this type together with the associated + EntitySensorDataScale object. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataScale and + EntitySensorPrecision. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue. + + + + + + + Valid values are: + + other(1): a measure other than those listed below + unknown(2): unknown measurement, or arbitrary, + relative numbers + voltsAC(3): electric potential + voltsDC(4): electric potential + amperes(5): electric current + watts(6): power + hertz(7): frequency + celsius(8): temperature + percentRH(9): percent relative humidity + rpm(10): shaft revolutions per minute + cmm(11),: cubic meters per minute (airflow) + truthvalue(12): value takes { true(1), false(2) } + + " + SYNTAX INTEGER { + other(1), + unknown(2), + voltsAC(3), + voltsDC(4), + amperes(5), + watts(6), + hertz(7), + celsius(8), + percentRH(9), + rpm(10), + cmm(11), + truthvalue(12) + } + +EntitySensorDataScale ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents a data scaling + factor, represented with an International System of Units + (SI) prefix. The actual data units are determined by + examining an object of this type together with the + associated EntitySensorDataType object. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType and + EntitySensorPrecision. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue." + REFERENCE + "The International System of Units (SI), + + + + National Institute of Standards and Technology, + Spec. Publ. 330, August 1991." + SYNTAX INTEGER { + yocto(1), -- 10^-24 + zepto(2), -- 10^-21 + atto(3), -- 10^-18 + femto(4), -- 10^-15 + pico(5), -- 10^-12 + nano(6), -- 10^-9 + micro(7), -- 10^-6 + milli(8), -- 10^-3 + units(9), -- 10^0 + kilo(10), -- 10^3 + mega(11), -- 10^6 + giga(12), -- 10^9 + tera(13), -- 10^12 + exa(14), -- 10^15 + peta(15), -- 10^18 + zetta(16), -- 10^21 + yotta(17) -- 10^24 + } + +EntitySensorPrecision ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents a sensor + precision range. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType and + EntitySensorDataScale. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue. + + If an object of this type contains a value in the range 1 to + 9, it represents the number of decimal places in the + fractional part of an associated EntitySensorValue fixed- + point number. + + If an object of this type contains a value in the range -8 + to -1, it represents the number of accurate digits in the + associated EntitySensorValue fixed-point number. + + The value zero indicates the associated EntitySensorValue + object is not a fixed-point number. + + Agent implementors must choose a value for the associated + EntitySensorPrecision object so that the precision and + + + + accuracy of the associated EntitySensorValue object is + correctly indicated. + + For example, a physical entity representing a temperature + sensor that can measure 0 degrees to 100 degrees C in 0.1 + degree increments, +/- 0.05 degrees, would have an + EntitySensorPrecision value of '1', an EntitySensorDataScale + value of 'units(9)', and an EntitySensorValue ranging from + '0' to '1000'. The EntitySensorValue would be interpreted + as 'degrees C * 10'." + SYNTAX Integer32 (-8..9) + +EntitySensorValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents an Entity Sensor + value. + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType, EntitySensorDataScale + and EntitySensorPrecision. Together, associated objects of + those three types are used to identify the semantics of an + object of this data type. + + The semantics of an object using this data type are + determined by the value of the associated + EntitySensorDataType object. + + If the associated EntitySensorDataType object is equal to + 'voltsAC(3)', 'voltsDC(4)', 'amperes(5)', 'watts(6), + 'hertz(7)', 'celsius(8)', or 'cmm(11)', then an object of + this type MUST contain a fixed point number ranging from + -999,999,999 to +999,999,999. The value -1000000000 + indicates an underflow error. The value +1000000000 + indicates an overflow error. The EntitySensorPrecision + indicates how many fractional digits are represented in the + associated EntitySensorValue object. + + If the associated EntitySensorDataType object is equal to + 'percentRH(9)', then an object of this type MUST contain a + number ranging from 0 to 100. + + If the associated EntitySensorDataType object is equal to + 'rpm(10)', then an object of this type MUST contain a number + ranging from -999,999,999 to +999,999,999. + + If the associated EntitySensorDataType object is equal to + 'truthvalue(12)', then an object of this type MUST contain + either the value 'true(1)' or the value 'false(2)'. + + + + If the associated EntitySensorDataType object is equal to + 'other(1)' or unknown(2)', then an object of this type MUST + contain a number ranging from -1000000000 to 1000000000." + SYNTAX Integer32 (-1000000000..1000000000) + +EntitySensorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents the operational + status of a physical sensor. + + The value 'ok(1)' indicates that the agent can obtain the + sensor value. + + The value 'unavailable(2)' indicates that the agent + presently cannot obtain the sensor value. + + The value 'nonoperational(3)' indicates that the agent + believes the sensor is broken. The sensor could have a hard + failure (disconnected wire), or a soft failure such as out- + of-range, jittery, or wildly fluctuating readings." + SYNTAX INTEGER { + ok(1), + unavailable(2), + nonoperational(3) + } + +-- +-- Entity Sensor Table +-- + +entPhySensorTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhySensorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per physical sensor represented + by an associated row in the entPhysicalTable." + ::= { entitySensorObjects 1 } + +entPhySensorEntry OBJECT-TYPE + SYNTAX EntPhySensorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical sensor. + + + + + + An entry in this table describes the present reading of a + sensor, the measurement units and scale, and sensor + operational status. + + Entries are created in this table by the agent. An entry + for each physical sensor SHOULD be created at the same time + as the associated entPhysicalEntry. An entry SHOULD be + destroyed if the associated entPhysicalEntry is destroyed." + INDEX { entPhysicalIndex } -- SPARSE-AUGMENTS + ::= { entPhySensorTable 1 } + +EntPhySensorEntry ::= SEQUENCE { + entPhySensorType EntitySensorDataType, + entPhySensorScale EntitySensorDataScale, + entPhySensorPrecision EntitySensorPrecision, + entPhySensorValue EntitySensorValue, + entPhySensorOperStatus EntitySensorStatus, + entPhySensorUnitsDisplay SnmpAdminString, + entPhySensorValueTimeStamp TimeStamp, + entPhySensorValueUpdateRate Unsigned32 +} + +entPhySensorType OBJECT-TYPE + SYNTAX EntitySensorDataType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of data returned by the associated + entPhySensorValue object. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 1 } + +entPhySensorScale OBJECT-TYPE + SYNTAX EntitySensorDataScale + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The exponent to apply to values returned by the associated + entPhySensorValue object. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 2 } + + + + + + +entPhySensorPrecision OBJECT-TYPE + SYNTAX EntitySensorPrecision + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of decimal places of precision in fixed-point + sensor values returned by the associated entPhySensorValue + object. + + This object SHOULD be set to '0' when the associated + entPhySensorType value is not a fixed-point type: e.g., + 'percentRH(9)', 'rpm(10)', 'cmm(11)', or 'truthvalue(12)'. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 3 } + +entPhySensorValue OBJECT-TYPE + SYNTAX EntitySensorValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent measurement obtained by the agent for this + sensor. + + To correctly interpret the value of this object, the + associated entPhySensorType, entPhySensorScale, and + entPhySensorPrecision objects must also be examined." + ::= { entPhySensorEntry 4 } + +entPhySensorOperStatus OBJECT-TYPE + SYNTAX EntitySensorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the sensor." + ::= { entPhySensorEntry 5 } + +entPhySensorUnitsDisplay OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the data units that should be used + in the display of entPhySensorValue." + ::= { entPhySensorEntry 6 } + + + + + +entPhySensorValueTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the status and/or value + of this sensor was last obtained by the agent." + ::= { entPhySensorEntry 7 } + +entPhySensorValueUpdateRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the frequency that the agent updates the + associated entPhySensorValue object, representing in + milliseconds. + + The value zero indicates: + + - the sensor value is updated on demand (e.g., + when polled by the agent for a get-request), + - the sensor value is updated when the sensor + value changes (event-driven), + - the agent does not know the update rate. + + " + ::= { entPhySensorEntry 8 } + +-- +-- Conformance Section +-- + +entitySensorCompliances OBJECT IDENTIFIER + ::= { entitySensorConformance 1 } +entitySensorGroups OBJECT IDENTIFIER + ::= { entitySensorConformance 2 } + +entitySensorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the Entity + Sensor MIB module." + MODULE -- this module + MANDATORY-GROUPS { entitySensorValueGroup } + + + + + + MODULE ENTITY-MIB + MANDATORY-GROUPS { entityPhysicalGroup } + + ::= { entitySensorCompliances 1 } + +-- Object Groups + +entitySensorValueGroup OBJECT-GROUP + OBJECTS { + entPhySensorType, + entPhySensorScale, + entPhySensorPrecision, + entPhySensorValue, + entPhySensorOperStatus, + entPhySensorUnitsDisplay, + entPhySensorValueTimeStamp, + entPhySensorValueUpdateRate + } + STATUS current + DESCRIPTION + "A collection of objects representing physical entity sensor + information." + ::= { entitySensorGroups 1 } + +END diff --git a/mibs/ietf/ENTITY-STATE-MIB b/mibs/ietf/ENTITY-STATE-MIB new file mode 100644 index 0000000..717df0d --- /dev/null +++ b/mibs/ietf/ENTITY-STATE-MIB @@ -0,0 +1,348 @@ +ENTITY-STATE-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI + DateAndTime + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + entPhysicalIndex + FROM ENTITY-MIB + EntityAdminState, EntityOperState, EntityUsageState, + EntityAlarmStatus, EntityStandbyStatus + FROM ENTITY-STATE-TC-MIB; + + entityStateMIB MODULE-IDENTITY + LAST-UPDATED "200511220000Z" + ORGANIZATION "IETF Entity MIB Working Group" + + + CONTACT-INFO + " General Discussion: entmib@ietf.org + To Subscribe: + http://www.ietf.org/mailman/listinfo/entmib + + http://www.ietf.org/html.charters/entmib-charter.html + + Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortel.com + + David T. Perkins + 548 Qualbrook Ct + San Jose, CA 95110 + USA + Phone: 408 394-8702 + dperkins@snmpinfo.com + " + DESCRIPTION + "This MIB defines a state extension to the Entity MIB. + + Copyright (C) The Internet Society 2005. This version + of this MIB module is part of RFC 4268; see the RFC + itself for full legal notices." + REVISION "200511220000Z" + DESCRIPTION + "Initial version, published as RFC 4268." + ::= { mib-2 131 } + + + -- Entity State Objects + + entStateObjects OBJECT IDENTIFIER ::= { entityStateMIB 1 } + + entStateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about state/status of entities. + This is a sparse augment of the entPhysicalTable. Entries + appear in this table for values of + entPhysicalClass [RFC4133] that in this implementation + are able to report any of the state or status stored in + this table. + + + " + ::= { entStateObjects 1 } + + + entStateEntry OBJECT-TYPE + SYNTAX EntStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "State information about this physical entity." + INDEX { entPhysicalIndex } + ::= { entStateTable 1 } + + EntStateEntry ::= SEQUENCE { + entStateLastChanged DateAndTime, + entStateAdmin EntityAdminState, + entStateOper EntityOperState, + entStateUsage EntityUsageState, + entStateAlarm EntityAlarmStatus, + entStateStandby EntityStandbyStatus + } + + entStateLastChanged OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the date and + time when the value of any of entStateAdmin, + entStateOper, entStateUsage, entStateAlarm, + or entStateStandby changed for this entity. + + If there has been no change since + the last re-initialization of the local system, + this object contains the date and time of + local system initialization. If there has been + no change since the entity was added to the + local system, this object contains the date and + time of the insertion." + ::= { entStateEntry 1 } + +entStateAdmin OBJECT-TYPE + SYNTAX EntityAdminState + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative state for this entity. + + + + This object refers to an entities administrative + permission to service both other entities within + its containment hierarchy as well other users of + its services defined by means outside the scope + of this MIB. + + Setting this object to 'notSupported' will result + in an 'inconsistentValue' error. For entities that + do not support administrative state, all set + operations will result in an 'inconsistentValue' + error. + + Some physical entities exhibit only a subset of the + remaining administrative state values. Some entities + cannot be locked, and hence this object exhibits only + the 'unlocked' state. Other entities cannot be shutdown + gracefully, and hence this object does not exhibit the + 'shuttingDown' state. A value of 'inconsistentValue' + will be returned if attempts are made to set this + object to values not supported by its administrative + model." + ::= { entStateEntry 2 } + + entStateOper OBJECT-TYPE + SYNTAX EntityOperState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational state for this entity. + + Note that unlike the state model used within the + Interfaces MIB [RFC2863], this object does not follow + the administrative state. An administrative state of + down does not predict an operational state + of disabled. + + A value of 'testing' means that entity currently being + tested and cannot therefore report whether it is + operational or not. + + A value of 'disabled' means that an entity is totally + inoperable and unable to provide service both to entities + within its containment hierarchy, or to other receivers + of its service as defined in ways outside the scope of + this MIB. + + A value of 'enabled' means that an entity is fully or + partially operable and able to provide service both to + + + entities within its containment hierarchy, or to other + receivers of its service as defined in ways outside the + scope of this MIB. + + Note that some implementations may not be able to + accurately report entStateOper while the + entStateAdmin object has a value other than 'unlocked'. + In these cases, this object MUST have a value + of 'unknown'." + ::= { entStateEntry 3 } + + entStateUsage OBJECT-TYPE + SYNTAX EntityUsageState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The usage state for this entity. + + This object refers to an entity's ability to service more + physical entities in a containment hierarchy. A value + of 'idle' means this entity is able to contain other + entities but that no other entity is currently + contained within this entity. + + A value of 'active' means that at least one entity is + contained within this entity, but that it could handle + more. A value of 'busy' means that the entity is unable + to handle any additional entities being contained in it. + + Some entities will exhibit only a subset of the + usage state values. Entities that are unable to ever + service any entities within a containment hierarchy will + always have a usage state of 'busy'. Some entities will + only ever be able to support one entity within its + containment hierarchy and will therefore only exhibit + values of 'idle' and 'busy'." + ::= { entStateEntry 4 } + + entStateAlarm OBJECT-TYPE + SYNTAX EntityAlarmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm status for this entity. It does not include + the alarms raised on child components within its + containment hierarchy. + + A value of 'unknown' means that this entity is + + + + unable to report alarm state. Note that this differs + from 'indeterminate', which means that alarm state + is supported and there are alarms against this entity, + but the severity of some of the alarms is not known. + + If no bits are set, then this entity supports reporting + of alarms, but there are currently no active alarms + against this entity." + ::= { entStateEntry 5 } + +entStateStandby OBJECT-TYPE + SYNTAX EntityStandbyStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The standby status for this entity. + + Some entities will exhibit only a subset of the + remaining standby state values. If this entity + cannot operate in a standby role, the value of this + object will always be 'providingService'." + ::= { entStateEntry 6 } + +-- Notifications + entStateNotifications OBJECT IDENTIFIER ::= { entityStateMIB 0 } + +entStateOperEnabled NOTIFICATION-TYPE + OBJECTS { entStateAdmin, + entStateAlarm + } + STATUS current + DESCRIPTION + "An entStateOperEnabled notification signifies that the + SNMP entity, acting in an agent role, has detected that + the entStateOper object for one of its entities has + transitioned into the 'enabled' state. + + The entity this notification refers can be identified by + extracting the entPhysicalIndex from one of the + variable bindings. The entStateAdmin and entStateAlarm + varbinds may be examined to find out additional + information on the administrative state at the time of + the operation state change as well as to find out whether + there were any known alarms against the entity at that + time that may explain why the physical entity has become + operationally disabled." + ::= { entStateNotifications 1 } + + + + +entStateOperDisabled NOTIFICATION-TYPE + OBJECTS { entStateAdmin, + entStateAlarm } + STATUS current + DESCRIPTION + "An entStateOperDisabled notification signifies that the + SNMP entity, acting in an agent role, has detected that + the entStateOper object for one of its entities has + transitioned into the 'disabled' state. + + The entity this notification refers can be identified by + extracting the entPhysicalIndex from one of the + variable bindings. The entStateAdmin and entStateAlarm + varbinds may be examined to find out additional + information on the administrative state at the time of + the operation state change as well as to find out whether + there were any known alarms against the entity at that + time that may affect the physical entity's + ability to stay operationally enabled." + ::= { entStateNotifications 2 } + +-- Conformance and Compliance + +entStateConformance OBJECT IDENTIFIER ::= { entityStateMIB 2 } + +entStateCompliances OBJECT IDENTIFIER + ::= { entStateConformance 1 } + +entStateCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the Entity State MIB." + MODULE -- this module + MANDATORY-GROUPS { + entStateGroup + } + GROUP entStateNotificationsGroup + DESCRIPTION + "This group is optional." + OBJECT entStateAdmin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { entStateCompliances 1 } + +entStateGroups OBJECT IDENTIFIER ::= { entStateConformance 2 } + + + + +entStateGroup OBJECT-GROUP + OBJECTS { + entStateLastChanged, + entStateAdmin, + entStateOper, + entStateUsage, + entStateAlarm, + entStateStandby + } + STATUS current + DESCRIPTION + "Standard Entity State group." + ::= { entStateGroups 1} + +entStateNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + entStateOperEnabled, + entStateOperDisabled + } + STATUS current + DESCRIPTION + "Standard Entity State Notification group." + ::= { entStateGroups 2} + +END diff --git a/mibs/ietf/ENTITY-STATE-TC-MIB b/mibs/ietf/ENTITY-STATE-TC-MIB new file mode 100644 index 0000000..0197bc1 --- /dev/null +++ b/mibs/ietf/ENTITY-STATE-TC-MIB @@ -0,0 +1,178 @@ +ENTITY-STATE-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + entityStateTc MODULE-IDENTITY + LAST-UPDATED "200511220000Z" + ORGANIZATION "IETF Entity MIB Working Group" + CONTACT-INFO + "General Discussion: entmib@ietf.org + To Subscribe: + http://www.ietf.org/mailman/listinfo/entmib + + http://www.ietf.org/html.charters/entmib-charter.html + + Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortel.com + + David T. Perkins + 548 Qualbrook Ct + San Jose, CA 95110 + USA + Phone: 408 394-8702 + dperkins@snmpinfo.com" + DESCRIPTION + "This MIB defines state textual conventions. + + Copyright (C) The Internet Society 2005. This version + of this MIB module is part of RFC 4268; see the RFC + itself for full legal notices." + REVISION "200511220000Z" + DESCRIPTION + "Initial version, published as RFC 4268." + ::= { mib-2 130 } + + EntityAdminState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the various possible administrative states. + + + + + + A value of 'locked' means the resource is administratively + prohibited from use. A value of 'shuttingDown' means that + usage is administratively limited to current instances of + use. A value of 'unlocked' means the resource is not + administratively prohibited from use. A value of + 'unknown' means that this resource is unable to + report administrative state." + SYNTAX INTEGER + { + unknown (1), + locked (2), + shuttingDown (3), + unlocked (4) + } + + EntityOperState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of operational states. + + A value of 'disabled' means the resource is totally + inoperable. A value of 'enabled' means the resource + is partially or fully operable. A value of 'testing' + means the resource is currently being tested + and cannot therefore report whether it is operational + or not. A value of 'unknown' means that this + resource is unable to report operational state." + SYNTAX INTEGER + { + unknown (1), + disabled (2), + enabled (3), + testing (4) + } + + EntityUsageState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of usage states. + A value of 'idle' means the resource is servicing no + users. A value of 'active' means the resource is + currently in use and it has sufficient spare capacity + to provide for additional users. A value of 'busy' + means the resource is currently in use, but it + currently has no spare capacity to provide for + additional users. A value of 'unknown' means + that this resource is unable to report usage state." + SYNTAX INTEGER + + + + { + unknown (1), + idle (2), + active (3), + busy (4) + } + + + EntityAlarmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of alarm status. + An Alarm [RFC3877] is a persistent indication + of an error or warning condition. + + When no bits of this attribute are set, then no active + alarms are known against this entity and it is not under + repair. + + When the 'value of underRepair' is set, the resource is + currently being repaired, which, depending on the + implementation, may make the other values in this bit + string not meaningful. + + When the value of 'critical' is set, one or more critical + alarms are active against the resource. When the value + of 'major' is set, one or more major alarms are active + against the resource. When the value of 'minor' is set, + one or more minor alarms are active against the resource. + When the value of 'warning' is set, one or more warning + alarms are active against the resource. When the value + of 'indeterminate' is set, one or more alarms of whose + perceived severity cannot be determined are active + against this resource. + + A value of 'unknown' means that this resource is + unable to report alarm state." + SYNTAX BITS + { + unknown (0), + underRepair (1), + critical(2), + major(3), + minor(4), + -- The following are not defined in X.733 + warning (5), + indeterminate (6) + } + + + + EntityStandbyStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of standby status. + + A value of 'hotStandby' means the resource is not + providing service, but it will be immediately able to + take over the role of the resource to be backed up, + without the need for initialization activity, and will + contain the same information as the resource to be + backed up. A value of 'coldStandy' means that the + resource is to back up another resource, but will not + be immediately able to take over the role of a resource + to be backed up, and will require some initialization + activity. A value of 'providingService' means the + resource is providing service. A value of + 'unknown' means that this resource is unable to + report standby state." + SYNTAX INTEGER + { + unknown (1), + hotStandby (2), + coldStandby (3), + providingService (4) + } + +END diff --git a/mibs/ietf/ETHER-CHIPSET-MIB b/mibs/ietf/ETHER-CHIPSET-MIB new file mode 100644 index 0000000..88835d0 --- /dev/null +++ b/mibs/ietf/ETHER-CHIPSET-MIB @@ -0,0 +1,530 @@ +ETHER-CHIPSET-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI + dot3 + FROM EtherLike-MIB; + + etherChipsetMIB MODULE-IDENTITY + LAST-UPDATED "9908240400Z" -- August 24, 199 + ORGANIZATION "IETF 802.3 Hub MIB Working Group" + CONTACT-INFO + "WG E-mail: hubmib@hprnd.rose.hp.com + To subscribe: hubmib-request@hprnd.rose.hp.com + + Chair: Dan Romascanu + Postal: Lucent Technologies + Atidum Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@lucent.com + + Editor: John Flick + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + USA + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + E-mail: johnf@rose.hp.com" + + DESCRIPTION "This MIB module contains registered values for + use by the dot3StatsEtherChipSet object in + the EtherLike-MIB. This object is used to + identify the MAC hardware used to communicate + on an interface. + + Note that the dot3StatsEtherChipSet object + has been deprecated. The primary purpose of + this module is to capture historic assignments + made by the various IETF working groups that + have been responsible for maintaining the + EtherLike-MIB. Implementations which support + the dot3StatsEtherChipSet object for backwards + compatability may continue to use these values. + For those chipsets not represented in this + module, registration is required in other + documentation, e.g., assignment within that + part of the registration tree delegated to + individual enterprises (see RFC 1155 and RFC + 1902)." + + REVISION "9908240400Z" -- August 24, 1999 + DESCRIPTION "Initial version of this module created by + splitting the chipset registration information + out from the EtherLike-MIB. + Version published as RFC 2666." + ::= { mib-2 70 } + + dot3ChipSets OBJECT IDENTIFIER ::= { dot3 8 } + + dot3ChipSetAMD OBJECT IDENTIFIER ::= { dot3ChipSets 1 } + + dot3ChipSetAMD7990 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am7990 Local Area Network + Controller for Ethernet (LANCE)." + ::= { dot3ChipSetAMD 1 } + + dot3ChipSetAMD79900 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79900 chip." + ::= { dot3ChipSetAMD 2 } + + dot3ChipSetAMD79C940 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C940 Media Access Controller + for Ethernet (MACE)." + ::= { dot3ChipSetAMD 3 } + + dot3ChipSetAMD79C90 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C90 CMOS Local Area Network + Controller for Ethernet (C-LANCE)." + ::= { dot3ChipSetAMD 4 } + + dot3ChipSetAMD79C960 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C960 PCnet-ISA Single Chip + Ethernet Controller for ISA." + ::= { dot3ChipSetAMD 5 } + + dot3ChipSetAMD79C961 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C961 PCnet-ISA+ Single Chip + Plug & Play Full-Duplex Ethernet Controller + for ISA." + ::= { dot3ChipSetAMD 6 } + + dot3ChipSetAMD79C961A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C961A PCnet-ISA II Single Chip + Plug & Play Full-Duplex Ethernet Controller + for ISA." + ::= { dot3ChipSetAMD 7 } + + dot3ChipSetAMD79C965 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C965 PCnet-32 Single Chip + Ethernet Controller for PCI." + ::= { dot3ChipSetAMD 8 } + + dot3ChipSetAMD79C970 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C970 PCnet PCI Single Chip + Ethernet Controller for PCI Local Bus." + ::= { dot3ChipSetAMD 9 } + + dot3ChipSetAMD79C970A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices AM79C970A PCnet PCI II Single Chip + Full-Duplex Ethernet Controller for PCI Local + Bus." + ::= { dot3ChipSetAMD 10 } + + dot3ChipSetAMD79C971 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C971 PCnet-FAST Single Chip + Full-Duplex 10/100 Mbps Ethernet Controller for + PCI Local Bus." + ::= { dot3ChipSetAMD 11 } + + dot3ChipSetAMD79C972 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C972 PCnet-FAST+ Enhanced + 10/100 Mbps PCI Ethernet Controller with OnNow + Support." + ::= { dot3ChipSetAMD 12 } + + dot3ChipSetIntel OBJECT IDENTIFIER ::= { dot3ChipSets 2 } + + dot3ChipSetIntel82586 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82586 IEEE 802.3 Ethernet LAN Coprocessor." + ::= { dot3ChipSetIntel 1 } + + dot3ChipSetIntel82596 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82596 High-Performance 32-Bit Local Area Network + Coprocessor." + ::= { dot3ChipSetIntel 2 } + + dot3ChipSetIntel82595 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82595 High Integration Ethernet Controller." + ::= { dot3ChipSetIntel 3 } + + dot3ChipSetIntel82557 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82557 Fast Ethernet PCI Bus Lan Controller." + ::= { dot3ChipSetIntel 4 } + + dot3ChipSetIntel82558 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82558 Fast Ethernet PCI Bus LAN Controller with + Integrated PHY." + ::= { dot3ChipSetIntel 5 } + + dot3ChipSetSeeq OBJECT IDENTIFIER ::= { dot3ChipSets 3 } + + dot3ChipSetSeeq8003 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 8003 chip set." + ::= { dot3ChipSetSeeq 1 } + + dot3ChipSetSeeq80C03 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 80C03 Full-Duplex CMOS Ethernet Data Link + Controller (MAC)." + ::= { dot3ChipSetSeeq 2 } + + dot3ChipSetSeeq84C30 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84C30 Full-Duplex CMOS Ethernet 10 + MBit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 3 } + + dot3ChipSetSeeq8431 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 8431 Full-Duplex CMOS Ethernet 10 + MBit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 4 } + + dot3ChipSetSeeq80C300 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 80C300 Full-Duplex CMOS Ethernet 10/100 + Mbit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 5 } + + dot3ChipSetSeeq84C300 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84C300 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 6 } + + dot3ChipSetSeeq84301 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84301 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 7 } + + dot3ChipSetSeeq84302 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84302 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 8 } + + dot3ChipSetSeeq8100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 8100 Gigabit Ethernet Controller (MAC & PCS)." + ::= { dot3ChipSetSeeq 9 } + + dot3ChipSetNational OBJECT IDENTIFIER ::= { dot3ChipSets 4 } + + dot3ChipSetNational8390 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP8390 Network Interface + Controller." + ::= { dot3ChipSetNational 1 } + + dot3ChipSetNationalSonic OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83932 Systems-Oriented Network + Interface Controller (SONIC)." + ::= { dot3ChipSetNational 2 } + + dot3ChipSetNational83901 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83901 Serial Network Interface + Controller (SNIC)." + ::= { dot3ChipSetNational 3 } + + dot3ChipSetNational83902 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83902 Serial Network Interface + Controller for Twisted Pair (ST-NIC)." + ::= { dot3ChipSetNational 4 } + + dot3ChipSetNational83905 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83905 AT Local Area Network + Twisted-Pair Interface (AT/LANTIC)." + ::= { dot3ChipSetNational 5 } + + dot3ChipSetNational83907 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83907 AT Twisted-Pair Enhanced + Coaxial Network Interface Controller + (AT/LANTIC II)." + ::= { dot3ChipSetNational 6 } + + dot3ChipSetNational83916 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83916 Systems-Oriented Network + Interface Controller (SONIC-16)." + ::= { dot3ChipSetNational 7 } + + dot3ChipSetNational83934 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83934 Systems-Oriented Network + Interface Controller with Twisted Pair Interface + (SONIC-T)." + ::= { dot3ChipSetNational 8 } + + dot3ChipSetNational83936 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83936AVUL Full-Duplex Systems- + Oriented Network Interface Controller with + Twisted Pair Interface (SONIC-T)." + ::= { dot3ChipSetNational 9 } + + dot3ChipSetFujitsu OBJECT IDENTIFIER ::= { dot3ChipSets 5 } + + dot3ChipSetFujitsu86950 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + 86950 chip." + ::= { dot3ChipSetFujitsu 1 } + + dot3ChipSetFujitsu86960 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86960 Network Interface Controller with + Encoder/Decoder (NICE)." + ::= { dot3ChipSetFujitsu 2 } + + dot3ChipSetFujitsu86964 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86964 Ethernet Controller with 10BASE-T + Tranceiver." + ::= { dot3ChipSetFujitsu 3 } + + dot3ChipSetFujitsu86965A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86965A EtherCoupler Single-Chip Ethernet + Controller." + ::= { dot3ChipSetFujitsu 4 } + + dot3ChipSetFujitsu86965B OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86965B EtherCoupler Single-Chip Ethernet + Controller (supports full-duplex)." + ::= { dot3ChipSetFujitsu 5 } + + dot3ChipSetDigital OBJECT IDENTIFIER ::= { dot3ChipSets 6 } + + dot3ChipSetDigitalDC21040 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor DC21040 chip." + ::= { dot3ChipSetDigital 1 } + + dot3ChipSetDigital21041 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21041 PCI Ethernet LAN + Controller." + ::= { dot3ChipSetDigital 2 } + + dot3ChipSetDigital21140 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21140 PCI Fast Ethernet LAN + Controller." + ::= { dot3ChipSetDigital 3 } + + dot3ChipSetDigital21143 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21143 PCI/CardBus 10/100-Mb/s + Ethernet LAN Controller." + ::= { dot3ChipSetDigital 4 } + + dot3ChipSetDigital21340 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21340 10/100-MB/s managed buffered + port switch." + ::= { dot3ChipSetDigital 5 } + + dot3ChipSetDigital21440 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21440 Multiport 10/100Mbps + Ethernet Controller." + ::= { dot3ChipSetDigital 6 } + + dot3ChipSetDigital21540 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21540 PCI/CardBus Ethernet LAN + Controller with Modem Interface." + ::= { dot3ChipSetDigital 7 } + + dot3ChipSetTI OBJECT IDENTIFIER ::= { dot3ChipSets 7 } + + dot3ChipSetTIE100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETE100 ThunderLAN PCI Fast + Ethernet Controller." + ::= { dot3ChipSetTI 1 } + + dot3ChipSetTIE110 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETE110 ThunderLAN PCI 10BASE-T + Ethernet Adapter." + ::= { dot3ChipSetTI 2 } + + dot3ChipSetTIX3100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3100 Desktop ThunderSWITCH + 8/2." + ::= { dot3ChipSetTI 3 } + + dot3ChipSetTIX3150 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3150 ThunderSWITCH 12/3." + ::= { dot3ChipSetTI 4 } + + dot3ChipSetTIX3270 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3270 ThunderSWITCH 24/3." + ::= { dot3ChipSetTI 5 } + + dot3ChipSetToshiba OBJECT IDENTIFIER ::= { dot3ChipSets 8 } + + dot3ChipSetToshibaTC35815F OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Toshiba + TC35815F PCI-Based 100/10Mbps Ethernet + Controller." + ::= { dot3ChipSetToshiba 1 } + + dot3ChipSetLucent OBJECT IDENTIFIER ::= { dot3ChipSets 9 } + + dot3ChipSetLucentATT1MX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Lucent + Technologies ATT1MX10 (Spinnaker) Quad MAC and + Tranceiver for Ethernet Frame Switching." + ::= { dot3ChipSetLucent 1 } + + dot3ChipSetLucentLUC3M08 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Lucent + Technologies LUC3M08 Eight Ethernet MACs for + 10/100 Mbits/s Frame Switching." + ::= { dot3ChipSetLucent 2 } + + dot3ChipSetGalileo OBJECT IDENTIFIER ::= { dot3ChipSets 10 } + + dot3ChipSetGalileoGT48001 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48001A Switched Ethernet + Controller." + ::= { dot3ChipSetGalileo 1 } + + dot3ChipSetGalileoGT48002 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48002A Switched Fast Ethernet + Controller." + ::= { dot3ChipSetGalileo 2 } + + dot3ChipSetGalileoGT48004 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48004A Four Port Fast Ethernet + Switch for Multiport 10/100BASE-X Systems." + ::= { dot3ChipSetGalileo 3 } + + dot3ChipSetGalileoGT48207 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48207 Low-Cost 10 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 4 } + + dot3ChipSetGalileoGT48208 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48208 Advanced 10 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 5 } + + dot3ChipSetGalileoGT48212 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48212 Advanced 14 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 6 } + + dot3ChipSetJato OBJECT IDENTIFIER ::= { dot3ChipSets 11 } + + dot3ChipSetJatoJT1001 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Jato + Technologies JT1001 GigEMAC Server + 10/100/1000Mbps Ethernet Controller with PCI + interface." + ::= { dot3ChipSetJato 1 } + + dot3ChipSetXaQti OBJECT IDENTIFIER ::= { dot3ChipSets 12 } + + dot3ChipSetXaQtiXQ11800FP OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the XaQTI + XQ11800FP XMAC II Gigabit Ethernet Media Access + Controller." + ::= { dot3ChipSetXaQti 1 } + + dot3ChipSetXaQtiXQ18110FP OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the XaQTI + XQ18110FP GigaPower Protocol Accelerator." + ::= { dot3ChipSetXaQti 2 } + +END diff --git a/mibs/ietf/ETHER-WIS b/mibs/ietf/ETHER-WIS new file mode 100644 index 0000000..4763005 --- /dev/null +++ b/mibs/ietf/ETHER-WIS @@ -0,0 +1,730 @@ +ETHER-WIS DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Gauge32, transmission + FROM SNMPv2-SMI + ifIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + sonetMediumStuff2, sonetSectionStuff2, + sonetLineStuff2, sonetFarEndLineStuff2, + sonetPathStuff2, sonetFarEndPathStuff2, + sonetMediumType, sonetMediumLineCoding, + sonetMediumLineType, sonetMediumCircuitIdentifier, + sonetMediumLoopbackConfig, sonetSESthresholdSet, + sonetPathCurrentWidth + FROM SONET-MIB; + +etherWisMIB MODULE-IDENTITY + LAST-UPDATED "200309190000Z" -- September 19, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Dan Romascanu + Postal: Avaya Inc. + Atidim Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@avaya.com + + Editor: C. M. Heard + Postal: 600 Rainbow Dr. #141 + Mountain View, CA 94041-2542 + USA + Tel: +1 650-964-8391 + E-mail: heard@pobox.com" + + + + DESCRIPTION + "The objects in this MIB module are used in conjunction + with objects in the SONET-MIB and the MAU-MIB to manage + the Ethernet WAN Interface Sublayer (WIS). + + The following reference is used throughout this MIB module: + + [IEEE 802.3 Std] refers to: + IEEE Std 802.3, 2000 Edition: 'IEEE Standard for + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications', as amended by IEEE Std 802.3ae-2002, + 'IEEE Standard for Carrier Sense Multiple Access with + Collision Detection (CSMA/CD) Access Method and + Physical Layer Specifications - Media Access Control + (MAC) Parameters, Physical Layer and Management + Parameters for 10 Gb/s Operation', 30 August 2002. + + Of particular interest are Clause 50, 'WAN Interface + Sublayer (WIS), type 10GBASE-W', Clause 30, '10Mb/s, + 100Mb/s, 1000Mb/s, and 10Gb/s MAC Control, and Link + Aggregation Management', and Clause 45, 'Management + Data Input/Output (MDIO) Interface'. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3637; see the RFC + itself for full legal notices." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Initial version, published as RFC 3637." + + ::= { transmission 134 } + +-- The main sections of the module + +etherWisObjects OBJECT IDENTIFIER ::= { etherWisMIB 1 } + +etherWisObjectsPath OBJECT IDENTIFIER ::= { etherWisMIB 2 } + +etherWisConformance OBJECT IDENTIFIER ::= { etherWisMIB 3 } + + + + + + + + +-- groups in the Ethernet WIS MIB module + +etherWisDevice OBJECT IDENTIFIER ::= { etherWisObjects 1 } + +etherWisSection OBJECT IDENTIFIER ::= { etherWisObjects 2 } + +etherWisPath OBJECT IDENTIFIER ::= { etherWisObjectsPath 1 } + +etherWisFarEndPath OBJECT IDENTIFIER ::= { etherWisObjectsPath 2 } + + +-- The Device group + +-- These objects provide WIS extensions to +-- the SONET-MIB Medium Group. + +etherWisDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for Ethernet WIS devices" + ::= { etherWisDevice 1 } + +etherWisDeviceEntry OBJECT-TYPE + SYNTAX EtherWisDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Ethernet WIS device table. For each + instance of this object there MUST be a corresponding + instance of sonetMediumEntry." + INDEX { ifIndex } + ::= { etherWisDeviceTable 1 } + +EtherWisDeviceEntry ::= + SEQUENCE { + etherWisDeviceTxTestPatternMode INTEGER, + etherWisDeviceRxTestPatternMode INTEGER, + etherWisDeviceRxTestPatternErrors Gauge32 + } + + + + + + + + + + +etherWisDeviceTxTestPatternMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + squareWave(2), + prbs31(3), + mixedFrequency(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable controls the transmit test pattern mode. + The value none(1) puts the the WIS transmit path into + the normal operating mode. The value squareWave(2) puts + the WIS transmit path into the square wave test pattern + mode described in [IEEE 802.3 Std.] subclause 50.3.8.1. + The value prbs31(3) puts the WIS transmit path into the + PRBS31 test pattern mode described in [IEEE 802.3 Std.] + subclause 50.3.8.2. The value mixedFrequency(4) puts the + WIS transmit path into the mixed frequency test pattern + mode described in [IEEE 802.3 Std.] subclause 50.3.8.3. + Any attempt to set this object to a value other than + none(1) when the corresponding instance of ifAdminStatus + has the value up(1) MUST be rejected with the error + inconsistentValue, and any attempt to set the corresponding + instance of ifAdminStatus to the value up(1) when an + instance of this object has a value other than none(1) + MUST be rejected with the error inconsistentValue." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.6, 10G WIS control 2 register (2.7), and + 45.2.2.7.2, PRBS31 pattern testing ability (2.8.1)." + ::= { etherWisDeviceEntry 1 } + +etherWisDeviceRxTestPatternMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + prbs31(3), + mixedFrequency(4) + } + MAX-ACCESS read-write + STATUS current + + + + + + + + + + + DESCRIPTION + "This variable controls the receive test pattern mode. + The value none(1) puts the the WIS receive path into the + normal operating mode. The value prbs31(3) puts the WIS + receive path into the PRBS31 test pattern mode described + in [IEEE 802.3 Std.] subclause 50.3.8.2. The value + mixedFrequency(4) puts the WIS receive path into the mixed + frequency test pattern mode described in [IEEE 802.3 Std.] + subclause 50.3.8.3. Any attempt to set this object to a + value other than none(1) when the corresponding instance + of ifAdminStatus has the value up(1) MUST be rejected with + the error inconsistentValue, and any attempt to set the + corresponding instance of ifAdminStatus to the value up(1) + when an instance of this object has a value other than + none(1) MUST be rejected with the error inconsistentValue." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.6, 10G WIS control 2 register (2.7), and + 45.2.2.7.2, PRBS31 pattern testing ability (2.8.1)." + ::= { etherWisDeviceEntry 2 } + +etherWisDeviceRxTestPatternErrors OBJECT-TYPE + SYNTAX Gauge32 ( 0..65535 ) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object counts the number of errors detected when the + WIS receive path is operating in the PRBS31 test pattern + mode. It is reset to zero when the WIS receive path + initially enters that mode, and it increments each time + the PRBS pattern checker detects an error as described in + [IEEE 802.3 Std.] subclause 50.3.8.2 unless its value is + 65535, in which case it remains unchanged. This object is + writeable so that it may be reset upon explicit request + of a command generator application while the WIS receive + path continues to operate in PRBS31 test pattern mode." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.7.2, PRBS31 pattern testing ability + (2.8.1), and 45.2.2.8, 10G WIS test pattern error counter + register (2.9)." + ::= { etherWisDeviceEntry 3 } + + + + + + + + + +-- The Section group + +-- These objects provide WIS extensions to +-- the SONET-MIB Section Group. + +etherWisSectionCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current state of Ethernet WIS sections." + ::= { etherWisSection 1 } + +etherWisSectionCurrentEntry OBJECT-TYPE + SYNTAX EtherWisSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisSectionCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetSectionCurrentEntry." + INDEX { ifIndex } + ::= { etherWisSectionCurrentTable 1 } + +EtherWisSectionCurrentEntry ::= + SEQUENCE { + etherWisSectionCurrentJ0Transmitted OCTET STRING, + etherWisSectionCurrentJ0Received OCTET STRING + } + +etherWisSectionCurrentJ0Transmitted OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the 16-octet section trace message that + is transmitted in the J0 byte. The value SHOULD + be '89'h followed by fifteen octets of '00'h + (or some cyclic shift thereof) when the section + trace function is not used, and the implementation + SHOULD use that value (or a cyclic shift thereof) + as a default if no other value has been set." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.8, aJ0ValueTX." + ::= { etherWisSectionCurrentEntry 1 } + + + + + + +etherWisSectionCurrentJ0Received OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the 16-octet section trace message that + was most recently received in the J0 byte." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.9, aJ0ValueRX." + ::= { etherWisSectionCurrentEntry 2 } + + +-- The Path group + +-- These objects provide WIS extensions to +-- the SONET-MIB Path Group. + +etherWisPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current state of Ethernet WIS paths." + ::= { etherWisPath 1 } + +etherWisPathCurrentEntry OBJECT-TYPE + SYNTAX EtherWisPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisPathCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetPathCurrentEntry." + INDEX { ifIndex } + ::= { etherWisPathCurrentTable 1 } + +EtherWisPathCurrentEntry ::= + SEQUENCE { + etherWisPathCurrentStatus BITS, + etherWisPathCurrentJ1Transmitted OCTET STRING, + etherWisPathCurrentJ1Received OCTET STRING + } + + + + + + + + + +etherWisPathCurrentStatus OBJECT-TYPE + SYNTAX BITS { + etherWisPathLOP(0), + etherWisPathAIS(1), + etherWisPathPLM(2), + etherWisPathLCD(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current status of the + path payload with a bit map that can indicate multiple + defects at once. The bit positions are assigned as + follows: + + etherWisPathLOP(0) + This bit is set to indicate that an + LOP-P (Loss of Pointer - Path) defect + is being experienced. Note: when this + bit is set, sonetPathSTSLOP MUST be set + in the corresponding instance of + sonetPathCurrentStatus. + + etherWisPathAIS(1) + This bit is set to indicate that an + AIS-P (Alarm Indication Signal - Path) + defect is being experienced. Note: when + this bit is set, sonetPathSTSAIS MUST be + set in the corresponding instance of + sonetPathCurrentStatus. + + etherWisPathPLM(1) + This bit is set to indicate that a + PLM-P (Payload Label Mismatch - Path) + defect is being experienced. Note: when + this bit is set, sonetPathSignalLabelMismatch + MUST be set in the corresponding instance of + sonetPathCurrentStatus. + + + + + + + + + + + + + + etherWisPathLCD(3) + This bit is set to indicate that an + LCD-P (Loss of Codegroup Delination - Path) + defect is being experienced. Since this + defect is detected by the PCS and not by + the path layer itself, there is no + corresponding bit in sonetPathCurrentStatus." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.18, aPathStatus." + ::= { etherWisPathCurrentEntry 1 } + +etherWisPathCurrentJ1Transmitted OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the 16-octet path trace message that + is transmitted in the J1 byte. The value SHOULD + be '89'h followed by fifteen octets of '00'h + (or some cyclic shift thereof) when the path + trace function is not used, and the implementation + SHOULD use that value (or a cyclic shift thereof) + as a default if no other value has been set." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.23, aJ1ValueTX." + ::= { etherWisPathCurrentEntry 2 } + +etherWisPathCurrentJ1Received OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the 16-octet path trace message that + was most recently received in the J1 byte." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.24, aJ1ValueRX." + ::= { etherWisPathCurrentEntry 3 } + + + + + + + + + + + + + + +-- The Far End Path group + +-- These objects provide WIS extensions to +-- the SONET-MIB Far End Path Group. + +etherWisFarEndPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current far-end state of Ethernet WIS + paths." + ::= { etherWisFarEndPath 1 } + +etherWisFarEndPathCurrentEntry OBJECT-TYPE + SYNTAX EtherWisFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisFarEndPathCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetFarEndPathCurrentEntry." + INDEX { ifIndex } + ::= { etherWisFarEndPathCurrentTable 1 } + +EtherWisFarEndPathCurrentEntry ::= + SEQUENCE { + etherWisFarEndPathCurrentStatus BITS + } + +etherWisFarEndPathCurrentStatus OBJECT-TYPE + SYNTAX BITS { + etherWisFarEndPayloadDefect(0), + etherWisFarEndServerDefect(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current status at the + far end of the path using a bit map that can indicate + multiple defects at once. The bit positions are + assigned as follows: + + etherWisFarEndPayloadDefect(0) + A far end payload defect (i.e., far end + PLM-P or LCD-P) is currently being signaled + in G1 bits 5-7. + + + + + etherWisFarEndServerDefect(1) + A far end server defect (i.e., far end + LOP-P or AIS-P) is currently being signaled + in G1 bits 5-7. Note: when this bit is set, + sonetPathSTSRDI MUST be set in the corresponding + instance of sonetPathCurrentStatus." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.25, aFarEndPathStatus." + ::= { etherWisFarEndPathCurrentEntry 1 } + + +-- +-- Conformance Statements +-- + +etherWisGroups OBJECT IDENTIFIER ::= { etherWisConformance 1 } + +etherWisCompliances OBJECT IDENTIFIER ::= { etherWisConformance 2 } + +-- Object Groups + +etherWisDeviceGroupBasic OBJECT-GROUP + OBJECTS { + etherWisDeviceTxTestPatternMode, + etherWisDeviceRxTestPatternMode + } + STATUS current + DESCRIPTION + "A collection of objects that support test + features required of all WIS devices." + ::= { etherWisGroups 1 } + +etherWisDeviceGroupExtra OBJECT-GROUP + OBJECTS { + etherWisDeviceRxTestPatternErrors + } + STATUS current + DESCRIPTION + "A collection of objects that support + optional WIS device test features." + ::= { etherWisGroups 2 } + + + + + + + + + + +etherWisSectionGroup OBJECT-GROUP + OBJECTS { + etherWisSectionCurrentJ0Transmitted, + etherWisSectionCurrentJ0Received + } + STATUS current + DESCRIPTION + "A collection of objects that provide + required information about a WIS section." + ::= { etherWisGroups 3 } + +etherWisPathGroup OBJECT-GROUP + OBJECTS { + etherWisPathCurrentStatus, + etherWisPathCurrentJ1Transmitted, + etherWisPathCurrentJ1Received + } + STATUS current + DESCRIPTION + "A collection of objects that provide + required information about a WIS path." + ::= { etherWisGroups 4 } + +etherWisFarEndPathGroup OBJECT-GROUP + OBJECTS { + etherWisFarEndPathCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of objects that provide required + information about the far end of a WIS path." + ::= { etherWisGroups 5 } + +-- Compliance Statements + +etherWisCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for interfaces that include + the Ethernet WIS. Compliance with the following + external compliance statements is prerequisite: + + MIB Module Compliance Statement + ---------- -------------------- + IF-MIB ifCompliance3 + IF-INVERTED-STACK-MIB ifInvCompliance + EtherLike-MIB dot3Compliance2 + MAU-MIB mauModIfCompl3" + + + + MODULE -- this module + MANDATORY-GROUPS { + etherWisDeviceGroupBasic, + etherWisSectionGroup, + etherWisPathGroup, + etherWisFarEndPathGroup + } + + OBJECT etherWisDeviceTxTestPatternMode + SYNTAX INTEGER { + none(1), + squareWave(2), + mixedFrequency(4) + } + DESCRIPTION + "Support for values other than none(1), + squareWave(2), and mixedFrequency(4) + is not required." + + OBJECT etherWisDeviceRxTestPatternMode + SYNTAX INTEGER { + none(1), + mixedFrequency(4) + } + DESCRIPTION + "Support for values other than none(1) + and mixedFrequency(4) is not required." + + GROUP etherWisDeviceGroupExtra + DESCRIPTION + "Implementation of this group, along with support for + the value prbs31(3) for etherWisDeviceTxTestPatternMode + and etherWisDeviceRxTestPatternMode, is necessary if the + optional PRBS31 test pattern mode is to be supported." + + OBJECT etherWisDeviceRxTestPatternErrors + WRITE-SYNTAX Gauge32 ( 0 ) + DESCRIPTION + "An implementation is not required to + allow values other than zero to be + written to this object." + + + + + + + + + + + MODULE SONET-MIB + MANDATORY-GROUPS { + sonetMediumStuff2, + sonetSectionStuff2, + sonetLineStuff2, + sonetFarEndLineStuff2, + sonetPathStuff2, + sonetFarEndPathStuff2 + } + + OBJECT sonetMediumType + SYNTAX INTEGER { + sonet(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sonet(1)." + + OBJECT sonetMediumLineCoding + SYNTAX INTEGER { + sonetMediumNRZ(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sonetMediumNRZ(4)." + + OBJECT sonetMediumLineType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLoopbackConfig + SYNTAX BITS { + sonetNoLoop(0), + sonetFacilityLoop(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for values + other than sonetNoLoop(0) and sonetFacilityLoop(1)." + + + + + OBJECT sonetSESthresholdSet + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the enumerated values need be supported." + + OBJECT sonetPathCurrentWidth + SYNTAX INTEGER { + sts192cSTM64(6) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sts192cSTM64(6)." + + ::= { etherWisCompliances 1 } + +END diff --git a/mibs/ietf/EtherLike-MIB b/mibs/ietf/EtherLike-MIB new file mode 100644 index 0000000..bd0a94a --- /dev/null +++ b/mibs/ietf/EtherLike-MIB @@ -0,0 +1,1954 @@ +EtherLike-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Integer32, Counter32, Counter64, mib-2, transmission + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TruthValue + FROM SNMPv2-TC + ifIndex, InterfaceIndex + FROM IF-MIB; + + etherMIB MODULE-IDENTITY + LAST-UPDATED "200309190000Z" -- September 19, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + CONTACT-INFO + "WG E-mail: hubmib@ietf.org + To subscribe: hubmib-request@ietf.org + + Chair: Dan Romascanu + Postal: Avaya Inc. + Atidum Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@avaya.com + + Editor: John Flick + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5557 + Roseville, CA 95747-5557 + USA + Tel: +1 916 785 4018 + Fax: +1 916 785 1199 + E-mail: johnf@rose.hp.com" + + DESCRIPTION "The MIB module to describe generic objects for + ethernet-like network interfaces. + + The following reference is used throughout this + MIB module: + + [IEEE 802.3 Std] refers to: + IEEE Std 802.3, 2002 Edition: 'IEEE Standard + + + + for Information technology - + Telecommunications and information exchange + between systems - Local and metropolitan + area networks - Specific requirements - + Part 3: Carrier sense multiple access with + collision detection (CSMA/CD) access method + and physical layer specifications', as + amended by IEEE Std 802.3ae-2002: + 'Amendment: Media Access Control (MAC) + Parameters, Physical Layer, and Management + Parameters for 10 Gb/s Operation', August, + 2002. + + Of particular interest is Clause 30, '10 Mb/s, + 100 Mb/s, 1000 Mb/s, and 10 Gb/s Management'. + + Copyright (C) The Internet Society (2003). This + version of this MIB module is part of RFC 3635; + see the RFC itself for full legal notices." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Updated to include support for 10 Gb/sec + interfaces. This resulted in the following + revisions: + + - Updated dot3StatsAlignmentErrors and + dot3StatsSymbolErrors DESCRIPTIONs to + reflect behaviour at 10 Gb/s + - Added dot3StatsRateControlAbility and + dot3RateControlStatus for management + of the Rate Control function in 10 Gb/s + WAN applications + - Added 64-bit versions of all counters + that are used on high-speed ethernet + interfaces + - Added object groups to contain the new + objects + - Deprecated etherStatsBaseGroup and + split into etherStatsBaseGroup2 and + etherStatsHalfDuplexGroup, so that + interfaces which can only operate at + full-duplex do not need to implement + half-duplex-only statistics + - Deprecated dot3Compliance and replaced + it with dot3Compliance2, which includes + the compliance information for the new + object groups + + + + + In addition, the dot3Tests and dot3Errors + object identities have been deprecated, + since there is no longer a standard method + for using them. + + This version published as RFC 3635." + + REVISION "199908240400Z" -- August 24, 1999 + DESCRIPTION "Updated to include support for 1000 Mb/sec + interfaces and full-duplex interfaces. + This version published as RFC 2665." + + REVISION "199806032150Z" -- June 3, 1998 + DESCRIPTION "Updated to include support for 100 Mb/sec + interfaces. + This version published as RFC 2358." + + REVISION "199402030400Z" -- February 3, 1994 + DESCRIPTION "Initial version, published as RFC 1650." + ::= { mib-2 35 } + + etherMIBObjects OBJECT IDENTIFIER ::= { etherMIB 1 } + + dot3 OBJECT IDENTIFIER ::= { transmission 7 } + + -- the Ethernet-like Statistics group + + dot3StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for a collection of ethernet-like + interfaces attached to a particular system. + There will be one row in this table for each + ethernet-like interface in the system." + ::= { dot3 2 } + + dot3StatsEntry OBJECT-TYPE + SYNTAX Dot3StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for a particular interface to an + ethernet-like medium." + INDEX { dot3StatsIndex } + ::= { dot3StatsTable 1 } + + Dot3StatsEntry ::= + SEQUENCE { + + + + dot3StatsIndex InterfaceIndex, + dot3StatsAlignmentErrors Counter32, + dot3StatsFCSErrors Counter32, + dot3StatsSingleCollisionFrames Counter32, + dot3StatsMultipleCollisionFrames Counter32, + dot3StatsSQETestErrors Counter32, + dot3StatsDeferredTransmissions Counter32, + dot3StatsLateCollisions Counter32, + dot3StatsExcessiveCollisions Counter32, + dot3StatsInternalMacTransmitErrors Counter32, + dot3StatsCarrierSenseErrors Counter32, + dot3StatsFrameTooLongs Counter32, + dot3StatsInternalMacReceiveErrors Counter32, + dot3StatsEtherChipSet OBJECT IDENTIFIER, + dot3StatsSymbolErrors Counter32, + dot3StatsDuplexStatus INTEGER, + dot3StatsRateControlAbility TruthValue, + dot3StatsRateControlStatus INTEGER + } + + dot3StatsIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "An index value that uniquely identifies an + interface to an ethernet-like medium. The + interface identified by a particular value of + this index is the same interface as identified + by the same value of ifIndex." + REFERENCE "RFC 2863, ifIndex" + ::= { dot3StatsEntry 1 } + + dot3StatsAlignmentErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are not an integral number of + octets in length and do not pass the FCS check. + + The count represented by an instance of this + object is incremented when the alignmentError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + + + + to the error status presented to the LLC. + + This counter does not increment for group + encoding schemes greater than 4 bits per group. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsAlignmentErrors object for 10 Gb/s + or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7, + aAlignmentErrors" + ::= { dot3StatsEntry 2 } + + dot3StatsFCSErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are an integral number of octets + in length but do not pass the FCS check. This + count does not include frames received with + frame-too-long or frame-too-short error. + + The count represented by an instance of this + object is incremented when the frameCheckError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + Note: Coding errors detected by the physical + layer for speeds above 10 Mb/s will cause the + frame to fail the FCS check. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + + + + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsFCSErrors object for 10 Gb/s or + faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6, + aFrameCheckSequenceErrors." + ::= { dot3StatsEntry 3 } + + dot3StatsSingleCollisionFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames that are involved in a single + collision, and are subsequently transmitted + successfully. + + A frame that is counted by an instance of this + object is also counted by the corresponding + instance of either the ifOutUcastPkts, + ifOutMulticastPkts, or ifOutBroadcastPkts, + and is not counted by the corresponding + instance of the dot3StatsMultipleCollisionFrames + object. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.3, + aSingleCollisionFrames." + ::= { dot3StatsEntry 4 } + + dot3StatsMultipleCollisionFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames that are involved in more + + + + than one collision and are subsequently + transmitted successfully. + + A frame that is counted by an instance of this + object is also counted by the corresponding + instance of either the ifOutUcastPkts, + ifOutMulticastPkts, or ifOutBroadcastPkts, + and is not counted by the corresponding + instance of the dot3StatsSingleCollisionFrames + object. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.4, + aMultipleCollisionFrames." + ::= { dot3StatsEntry 5 } + + dot3StatsSQETestErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of times that the SQE TEST ERROR + is received on a particular interface. The + SQE TEST ERROR is set in accordance with the + rules for verification of the SQE detection + mechanism in the PLS Carrier Sense Function as + described in IEEE Std. 802.3, 2000 Edition, + section 7.2.4.6. + + This counter does not increment on interfaces + operating at speeds greater than 10 Mb/s, or on + interfaces operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 7.2.4.6, also 30.3.2.1.4, + aSQETestErrors." + ::= { dot3StatsEntry 6 } + + dot3StatsDeferredTransmissions OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which the first + transmission attempt on a particular interface + is delayed because the medium is busy. + + The count represented by an instance of this + object does not include frames involved in + collisions. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.9, + aFramesWithDeferredXmissions." + ::= { dot3StatsEntry 7 } + + dot3StatsLateCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that a collision is + detected on a particular interface later than + one slotTime into the transmission of a packet. + + A (late) collision included in a count + represented by an instance of this object is + also considered as a (generic) collision for + purposes of other collision-related + statistics. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.10, + aLateCollisions." + ::= { dot3StatsEntry 8 } + + dot3StatsExcessiveCollisions OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to excessive + collisions. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.11, + aFramesAbortedDueToXSColls." + ::= { dot3StatsEntry 9 } + + dot3StatsInternalMacTransmitErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to an internal + MAC sublayer transmit error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsLateCollisions object, the + dot3StatsExcessiveCollisions object, or the + dot3StatsCarrierSenseErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of transmission + errors on a particular interface that are not + otherwise counted. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsInternalMacTransmitErrors object for + 10 Gb/s or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12, + aFramesLostDueToIntMACXmitError." + ::= { dot3StatsEntry 10 } + + dot3StatsCarrierSenseErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that the carrier sense + condition was lost or never asserted when + attempting to transmit a frame on a particular + interface. + + The count represented by an instance of this + object is incremented at most once per + transmission attempt, even if the carrier sense + condition fluctuates during a transmission + attempt. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.13, + aCarrierSenseErrors." + ::= { dot3StatsEntry 11 } + + -- { dot3StatsEntry 12 } is not assigned + + dot3StatsFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that exceed the maximum permitted + frame size. + + The count represented by an instance of this + object is incremented when the frameTooLong + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + + + + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 80 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsFrameTooLongs object for 10 Gb/s + or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25, + aFrameTooLongErrors." + ::= { dot3StatsEntry 13 } + + -- { dot3StatsEntry 14 } is not assigned + + -- { dot3StatsEntry 15 } is not assigned + + dot3StatsInternalMacReceiveErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which reception on a + particular interface fails due to an internal + MAC sublayer receive error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsFrameTooLongs object, the + dot3StatsAlignmentErrors object, or the + dot3StatsFCSErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of receive errors + on a particular interface that are not + otherwise counted. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + + + + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsInternalMacReceiveErrors object for + 10 Gb/s or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15, + aFramesLostDueToIntMACRcvError." + ::= { dot3StatsEntry 16 } + + dot3StatsEtherChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "******** THIS OBJECT IS DEPRECATED ******** + + This object contains an OBJECT IDENTIFIER + which identifies the chipset used to + realize the interface. Ethernet-like + interfaces are typically built out of + several different chips. The MIB implementor + is presented with a decision of which chip + to identify via this object. The implementor + should identify the chip which is usually + called the Medium Access Control chip. + If no such chip is easily identifiable, + the implementor should identify the chip + which actually gathers the transmit + and receive statistics and error + indications. This would allow a + manager station to correlate the + statistics and the chip generating + them, giving it the ability to take + into account any known anomalies + in the chip. + + This object has been deprecated. Implementation + feedback indicates that it is of limited use for + debugging network problems in the field, and + the administrative overhead involved in + maintaining a registry of chipset OIDs is not + justified." + + + + ::= { dot3StatsEntry 17 } + + dot3StatsSymbolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For an interface operating at 100 Mb/s, the + number of times there was an invalid data symbol + when a valid carrier was present. + + For an interface operating in half-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than slotTime, and + during which there was at least one occurrence + of an event that causes the PHY to indicate + 'Data reception error' or 'carrier extend error' + on the GMII. + + For an interface operating in full-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than minFrameSize, + and during which there was at least one + occurrence of an event that causes the PHY to + indicate 'Data reception error' on the GMII. + + For an interface operating at 10 Gb/s, the + number of times the receiving media is non-idle + (a carrier event) for a period of time equal to + or greater than minFrameSize, and during which + there was at least one occurrence of an event + that causes the PHY to indicate 'Receive Error' + on the XGMII. + + The count represented by an instance of this + object is incremented at most once per carrier + event, even if multiple symbol errors occur + during the carrier event. This count does + not increment if a collision is present. + + This counter does not increment when the + interface is operating at 10 Mb/s. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + + + + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsSymbolErrors object for 10 Gb/s + or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5, + aSymbolErrorDuringCarrier." + ::= { dot3StatsEntry 18 } + + dot3StatsDuplexStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + halfDuplex(2), + fullDuplex(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The current mode of operation of the MAC + entity. 'unknown' indicates that the current + duplex mode could not be determined. + + Management control of the duplex mode is + accomplished through the MAU MIB. When + an interface does not support autonegotiation, + or when autonegotiation is not enabled, the + duplex mode is controlled using + ifMauDefaultType. When autonegotiation is + supported and enabled, duplex mode is controlled + using ifMauAutoNegAdvertisedBits. In either + case, the currently operating duplex mode is + reflected both in this object and in ifMauType. + + Note that this object provides redundant + information with ifMauType. Normally, redundant + objects are discouraged. However, in this + instance, it allows a management application to + determine the duplex status of an interface + without having to know every possible value of + ifMauType. This was felt to be sufficiently + valuable to justify the redundancy." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.32, + aDuplexStatus." + ::= { dot3StatsEntry 19 } + + + + dot3StatsRateControlAbility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "'true' for interfaces operating at speeds above + 1000 Mb/s that support Rate Control through + lowering the average data rate of the MAC + sublayer, with frame granularity, and 'false' + otherwise." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.33, + aRateControlAbility." + ::= { dot3StatsEntry 20 } + + dot3StatsRateControlStatus OBJECT-TYPE + SYNTAX INTEGER { + rateControlOff(1), + rateControlOn(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The current Rate Control mode of operation of + the MAC sublayer of this interface." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.34, + aRateControlStatus." + ::= { dot3StatsEntry 21 } + + -- the Ethernet-like Collision Statistics group + + -- Implementation of this group is optional; it is appropriate + -- for all systems which have the necessary metering + + dot3CollTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3CollEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A collection of collision histograms for a + particular set of interfaces." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.30, + aCollisionFrames." + ::= { dot3 5 } + + dot3CollEntry OBJECT-TYPE + SYNTAX Dot3CollEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A cell in the histogram of per-frame + collisions for a particular interface. An + + + + instance of this object represents the + frequency of individual MAC frames for which + the transmission (successful or otherwise) on a + particular interface is accompanied by a + particular number of media collisions." + INDEX { ifIndex, dot3CollCount } + ::= { dot3CollTable 1 } + + Dot3CollEntry ::= + SEQUENCE { + dot3CollCount Integer32, + dot3CollFrequencies Counter32 + } + + -- { dot3CollEntry 1 } is no longer in use + + dot3CollCount OBJECT-TYPE + SYNTAX Integer32 (1..16) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The number of per-frame media collisions for + which a particular collision histogram cell + represents the frequency on a particular + interface." + ::= { dot3CollEntry 2 } + + dot3CollFrequencies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of individual MAC frames for which the + transmission (successful or otherwise) on a + particular interface occurs after the + frame has experienced exactly the number + of collisions in the associated + dot3CollCount object. + + For example, a frame which is transmitted + on interface 77 after experiencing + exactly 4 collisions would be indicated + by incrementing only dot3CollFrequencies.77.4. + No other instance of dot3CollFrequencies would + be incremented in this example. + + This counter does not increment when the + interface is operating in full-duplex mode. + + 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." + ::= { dot3CollEntry 3 } + + dot3ControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table of descriptive and status information + about the MAC Control sublayer on the + ethernet-like interfaces attached to a + particular system. There will be one row in + this table for each ethernet-like interface in + the system which implements the MAC Control + sublayer. If some, but not all, of the + ethernet-like interfaces in the system implement + the MAC Control sublayer, there will be fewer + rows in this table than in the dot3StatsTable." + ::= { dot3 9 } + + dot3ControlEntry OBJECT-TYPE + SYNTAX Dot3ControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about the MAC Control sublayer on a single + ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3ControlTable 1 } + + Dot3ControlEntry ::= + SEQUENCE { + dot3ControlFunctionsSupported BITS, + dot3ControlInUnknownOpcodes Counter32, + dot3HCControlInUnknownOpcodes Counter64 + } + + dot3ControlFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + pause(0) -- 802.3 flow control + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A list of the possible MAC Control functions + implemented for this interface." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.2, + aMACControlFunctionsSupported." + + + + ::= { dot3ControlEntry 1 } + + dot3ControlInUnknownOpcodes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface that contain an opcode that is not + supported by this device. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCControlInUnknownOpcodes object for 10 Gb/s + or faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.5, + aUnsupportedOpcodesReceived" + ::= { dot3ControlEntry 2 } + + dot3HCControlInUnknownOpcodes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface that contain an opcode that is not + supported by this device. + + This counter is a 64 bit version of + dot3ControlInUnknownOpcodes. It should be used + on interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.5, + aUnsupportedOpcodesReceived" + ::= { dot3ControlEntry 3 } + + + + + dot3PauseTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3PauseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table of descriptive and status information + about the MAC Control PAUSE function on the + ethernet-like interfaces attached to a + particular system. There will be one row in + this table for each ethernet-like interface in + the system which supports the MAC Control PAUSE + function (i.e., the 'pause' bit in the + corresponding instance of + dot3ControlFunctionsSupported is set). If some, + but not all, of the ethernet-like interfaces in + the system implement the MAC Control PAUSE + function (for example, if some interfaces only + support half-duplex), there will be fewer rows + in this table than in the dot3StatsTable." + ::= { dot3 10 } + + dot3PauseEntry OBJECT-TYPE + SYNTAX Dot3PauseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about the MAC Control PAUSE function on a single + ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3PauseTable 1 } + + Dot3PauseEntry ::= + + SEQUENCE { + dot3PauseAdminMode INTEGER, + dot3PauseOperMode INTEGER, + dot3InPauseFrames Counter32, + dot3OutPauseFrames Counter32, + dot3HCInPauseFrames Counter64, + dot3HCOutPauseFrames Counter64 + } + + dot3PauseAdminMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledXmit(2), + enabledRcv(3), + enabledXmitAndRcv(4) + } + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This object is used to configure the default + administrative PAUSE mode for this interface. + + This object represents the + administratively-configured PAUSE mode for this + interface. If auto-negotiation is not enabled + or is not implemented for the active MAU + attached to this interface, the value of this + object determines the operational PAUSE mode + of the interface whenever it is operating in + full-duplex mode. In this case, a set to this + object will force the interface into the + specified mode. + + If auto-negotiation is implemented and enabled + for the MAU attached to this interface, the + PAUSE mode for this interface is determined by + auto-negotiation, and the value of this object + denotes the mode to which the interface will + automatically revert if/when auto-negotiation is + later disabled. Note that when auto-negotiation + is running, administrative control of the PAUSE + mode may be accomplished using the + ifMauAutoNegCapAdvertisedBits object in the + MAU-MIB. + + Note that the value of this object is ignored + when the interface is not operating in + full-duplex mode. + + An attempt to set this object to + 'enabledXmit(2)' or 'enabledRcv(3)' will fail + on interfaces that do not support operation + at greater than 100 Mb/s." + ::= { dot3PauseEntry 1 } + + dot3PauseOperMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledXmit(2), + enabledRcv(3), + enabledXmitAndRcv(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object reflects the PAUSE mode currently + + + + in use on this interface, as determined by + either (1) the result of the auto-negotiation + function or (2) if auto-negotiation is not + enabled or is not implemented for the active MAU + attached to this interface, by the value of + dot3PauseAdminMode. Interfaces operating at + 100 Mb/s or less will never return + 'enabledXmit(2)' or 'enabledRcv(3)'. Interfaces + operating in half-duplex mode will always return + 'disabled(1)'. Interfaces on which + auto-negotiation is enabled but not yet + completed should return the value + 'disabled(1)'." + ::= { dot3PauseEntry 2 } + + dot3InPauseFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface with an opcode indicating the PAUSE + operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCInPauseFrames object for 10 Gb/s or + faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.3, + aPAUSEMACCtrlFramesReceived." + ::= { dot3PauseEntry 3 } + + dot3OutPauseFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "A count of MAC Control frames transmitted on + this interface with an opcode indicating the + PAUSE operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCOutPauseFrames object for 10 Gb/s or + faster interfaces. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.2, + aPAUSEMACCtrlFramesTransmitted." + ::= { dot3PauseEntry 4 } + + dot3HCInPauseFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface with an opcode indicating the PAUSE + operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + This counter is a 64 bit version of + dot3InPauseFrames. It should be used on + interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.3, + aPAUSEMACCtrlFramesReceived." + ::= { dot3PauseEntry 5 } + + + + + dot3HCOutPauseFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames transmitted on + this interface with an opcode indicating the + PAUSE operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + This counter is a 64 bit version of + dot3OutPauseFrames. It should be used on + interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.2, + aPAUSEMACCtrlFramesTransmitted." + ::= { dot3PauseEntry 6 } + + dot3HCStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3HCStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table containing 64-bit versions of error + counters from the dot3StatsTable. The 32-bit + versions of these counters may roll over quite + quickly on higher speed ethernet interfaces. + The counters that have 64-bit versions in this + table are the counters that apply to full-duplex + interfaces, since 10 Gb/s and faster + ethernet-like interfaces do not support + half-duplex, and very few 1000 Mb/s + ethernet-like interfaces support half-duplex. + + Entries in this table are recommended for + interfaces capable of operating at 1000 Mb/s or + faster, and are required for interfaces capable + of operating at 10 Gb/s or faster. Lower speed + ethernet-like interfaces do not need entries in + this table, in which case there may be fewer + entries in this table than in the + dot3StatsTable. However, implementations + containing interfaces with a mix of speeds may + choose to implement entries in this table for + + + + all ethernet-like interfaces." + ::= { dot3 11 } + + dot3HCStatsEntry OBJECT-TYPE + SYNTAX Dot3HCStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry containing 64-bit statistics for a + single ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3HCStatsTable 1 } + + Dot3HCStatsEntry ::= + SEQUENCE { + dot3HCStatsAlignmentErrors Counter64, + dot3HCStatsFCSErrors Counter64, + dot3HCStatsInternalMacTransmitErrors Counter64, + dot3HCStatsFrameTooLongs Counter64, + dot3HCStatsInternalMacReceiveErrors Counter64, + dot3HCStatsSymbolErrors Counter64 + } + + dot3HCStatsAlignmentErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are not an integral number of + octets in length and do not pass the FCS check. + + The count represented by an instance of this + object is incremented when the alignmentError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + This counter does not increment for group + encoding schemes greater than 4 bits per group. + + This counter is a 64 bit version of + dot3StatsAlignmentErrors. It should be used + on interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7, + aAlignmentErrors" + ::= { dot3HCStatsEntry 1 } + + dot3HCStatsFCSErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are an integral number of octets + in length but do not pass the FCS check. This + count does not include frames received with + frame-too-long or frame-too-short error. + + The count represented by an instance of this + object is incremented when the frameCheckError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + Note: Coding errors detected by the physical + layer for speeds above 10 Mb/s will cause the + frame to fail the FCS check. + + This counter is a 64 bit version of + dot3StatsFCSErrors. It should be used on + interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6, + aFrameCheckSequenceErrors." + ::= { dot3HCStatsEntry 2 } + + dot3HCStatsInternalMacTransmitErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to an internal + MAC sublayer transmit error. A frame is only + + + + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsLateCollisions object, the + dot3StatsExcessiveCollisions object, or the + dot3StatsCarrierSenseErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of transmission + errors on a particular interface that are not + otherwise counted. + + This counter is a 64 bit version of + dot3StatsInternalMacTransmitErrors. It should + be used on interfaces operating at 10 Gb/s or + faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12, + aFramesLostDueToIntMACXmitError." + ::= { dot3HCStatsEntry 3 } + + dot3HCStatsFrameTooLongs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that exceed the maximum permitted + frame size. + + The count represented by an instance of this + object is incremented when the frameTooLong + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + This counter is a 64 bit version of + dot3StatsFrameTooLongs. It should be used on + interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25, + aFrameTooLongErrors." + ::= { dot3HCStatsEntry 4 } + + dot3HCStatsInternalMacReceiveErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which reception on a + particular interface fails due to an internal + MAC sublayer receive error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsFrameTooLongs object, the + dot3StatsAlignmentErrors object, or the + dot3StatsFCSErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of receive errors + on a particular interface that are not + otherwise counted. + + This counter is a 64 bit version of + dot3StatsInternalMacReceiveErrors. It should be + used on interfaces operating at 10 Gb/s or + faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15, + aFramesLostDueToIntMACRcvError." + ::= { dot3HCStatsEntry 5 } + + dot3HCStatsSymbolErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For an interface operating at 100 Mb/s, the + number of times there was an invalid data symbol + when a valid carrier was present. + + + + + For an interface operating in half-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than slotTime, and + during which there was at least one occurrence + of an event that causes the PHY to indicate + 'Data reception error' or 'carrier extend error' + on the GMII. + + For an interface operating in full-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than minFrameSize, + and during which there was at least one + occurrence of an event that causes the PHY to + indicate 'Data reception error' on the GMII. + + For an interface operating at 10 Gb/s, the + number of times the receiving media is non-idle + (a carrier event) for a period of time equal to + or greater than minFrameSize, and during which + there was at least one occurrence of an event + that causes the PHY to indicate 'Receive Error' + on the XGMII. + + The count represented by an instance of this + object is incremented at most once per carrier + event, even if multiple symbol errors occur + during the carrier event. This count does + not increment if a collision is present. + + This counter is a 64 bit version of + dot3StatsSymbolErrors. It should be used on + interfaces operating at 10 Gb/s or faster. + + 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." + REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5, + aSymbolErrorDuringCarrier." + ::= { dot3HCStatsEntry 6 } + + + -- 802.3 Tests + + dot3Tests OBJECT IDENTIFIER ::= { dot3 6 } + + + + + dot3Errors OBJECT IDENTIFIER ::= { dot3 7 } + + -- TDR Test + + dot3TestTdr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + The Time-Domain Reflectometry (TDR) test is + specific to ethernet-like interfaces of type + 10Base5 and 10Base2. The TDR value may be + useful in determining the approximate distance + to a cable fault. It is advisable to repeat + this test to check for a consistent resulting + TDR value, to verify that there is a fault. + + A TDR test returns as its result the time + interval, measured in 10 MHz ticks or 100 nsec + units, between the start of TDR test + transmission and the subsequent detection of a + collision or deassertion of carrier. On + successful completion of a TDR test, the result + is stored as the value of an appropriate + instance of an appropriate vendor specific MIB + object, and the OBJECT IDENTIFIER of that + instance is stored in the appropriate instance + of the appropriate test result code object + (thereby indicating where the result has been + stored). + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Tests 1 } + + -- Loopback Test + + dot3TestLoopBack OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + This test configures the MAC chip and executes + an internal loopback test of memory, data paths, + and the MAC chip logic. This loopback test can + only be executed if the interface is offline. + Once the test has completed, the MAC chip should + + + + be reinitialized for network operation, but it + should remain offline. + + If an error occurs during a test, the + appropriate test result object will be set + to indicate a failure. The two OBJECT + IDENTIFIER values dot3ErrorInitError and + dot3ErrorLoopbackError may be used to provided + more information as values for an appropriate + test result code object. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Tests 2 } + + dot3ErrorInitError OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + Couldn't initialize MAC chip for test. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Errors 1 } + + dot3ErrorLoopbackError OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + Expected data not received (or not received + correctly) in loopback test. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Errors 2 } + + -- { dot3 8 }, the dot3ChipSets tree, is defined in [RFC2666] + + -- conformance information + + + + etherConformance OBJECT IDENTIFIER ::= { etherMIB 2 } + + etherGroups OBJECT IDENTIFIER ::= { etherConformance 1 } + etherCompliances OBJECT IDENTIFIER ::= { etherConformance 2 } + + -- compliance statements + + etherCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + This compliance is deprecated and replaced by + dot3Compliance." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsGroup } + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all systems which have the necessary + metering. Implementation in such systems is + highly recommended." + ::= { etherCompliances 1 } + + ether100MbsCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have 100 Mb/sec ethernet-like + network interfaces. + + This compliance is deprecated and replaced by + dot3Compliance." + + MODULE -- this module + MANDATORY-GROUPS { etherStats100MbsGroup } + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all systems which have the necessary + metering. Implementation in such systems is + highly recommended." + ::= { etherCompliances 2 } + + + + dot3Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + This compliance is deprecated and replaced by + dot3Compliance2." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsBaseGroup } + + GROUP etherDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating in full-duplex mode. + It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherStatsLowSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Mb/s or slower in + half-duplex mode." + + GROUP etherStatsHighSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 100 Mb/s or faster." + + GROUP etherControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer." + + GROUP etherControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function." + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all ethernet-like network interfaces + which are capable of operating in + half-duplex mode and have the necessary + metering. Implementation in systems with + + + + such interfaces is highly recommended." + ::= { etherCompliances 3 } + + dot3Compliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + Note that compliance with this MIB module + requires compliance with the ifCompliance3 + MODULE-COMPLIANCE statement of the IF-MIB + (RFC2863). In addition, compliance with this + MIB module requires compliance with the + mauModIfCompl3 MODULE-COMPLIANCE statement of + the MAU-MIB (RFC3636)." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsBaseGroup2 } + + GROUP etherDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating in full-duplex mode. + It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherRateControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at speeds faster than + 1000 Mb/s. It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherStatsLowSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Mb/s or slower in + half-duplex mode." + + GROUP etherStatsHighSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 100 Mb/s or faster." + + GROUP etherStatsHalfDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + + + + capable of operating in half-duplex mode." + + GROUP etherHCStatsGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Gb/s or faster. + It is recommended for all ethernet-like + network interfaces which are capable of + operating at 1000 Mb/s or faster." + + GROUP etherControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer." + + GROUP etherHCControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer and are + capable of operating at 10 Gb/s or faster." + + GROUP etherControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function." + + GROUP etherHCControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function and + are capable of operating at 10 Gb/s or + faster." + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all ethernet-like network interfaces + which are capable of operating in + half-duplex mode and have the necessary + metering. Implementation in systems with + such interfaces is highly recommended." + ::= { etherCompliances 4 } + + -- units of conformance + + etherStatsGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + + + + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsSQETestErrors, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors, + dot3StatsEtherChipSet + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to all ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup and + etherStatsLowSpeedGroup." + ::= { etherGroups 1 } + + etherCollisionTableGroup OBJECT-GROUP + OBJECTS { dot3CollFrequencies + } + STATUS current + DESCRIPTION "A collection of objects providing a histogram + of packets successfully transmitted after + experiencing exactly N collisions." + ::= { etherGroups 2 } + + etherStats100MbsGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors, + dot3StatsEtherChipSet, + dot3StatsSymbolErrors + + + + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to 100 Mb/sec ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup and + etherStatsHighSpeedGroup." + ::= { etherGroups 3 } + + etherStatsBaseGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to all ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup2 and + etherStatsHalfDuplexGroup, to separate + objects which must be implemented by all + ethernet-like network interfaces from + objects that need only be implemented on + ethernet-like network interfaces that are + capable of half-duplex operation." + ::= { etherGroups 4 } + + etherStatsLowSpeedGroup OBJECT-GROUP + OBJECTS { dot3StatsSQETestErrors } + STATUS current + DESCRIPTION "A collection of objects providing information + + + + applicable to ethernet-like network interfaces + capable of operating at 10 Mb/s or slower in + half-duplex mode." + ::= { etherGroups 5 } + + etherStatsHighSpeedGroup OBJECT-GROUP + OBJECTS { dot3StatsSymbolErrors } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable to ethernet-like network interfaces + capable of operating at 100 Mb/s or faster." + ::= { etherGroups 6 } + + etherDuplexGroup OBJECT-GROUP + OBJECTS { dot3StatsDuplexStatus } + STATUS current + DESCRIPTION "A collection of objects providing information + about the duplex mode of an ethernet-like + network interface." + ::= { etherGroups 7 } + + etherControlGroup OBJECT-GROUP + OBJECTS { dot3ControlFunctionsSupported, + dot3ControlInUnknownOpcodes + } + STATUS current + DESCRIPTION "A collection of objects providing information + about the MAC Control sublayer on ethernet-like + network interfaces." + ::= { etherGroups 8 } + + etherControlPauseGroup OBJECT-GROUP + OBJECTS { dot3PauseAdminMode, + dot3PauseOperMode, + dot3InPauseFrames, + dot3OutPauseFrames + } + STATUS current + DESCRIPTION "A collection of objects providing information + about and control of the MAC Control PAUSE + function on ethernet-like network interfaces." + ::= { etherGroups 9 } + + etherStatsBaseGroup2 OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsInternalMacTransmitErrors, + + + + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors + } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable to all ethernet-like network + interfaces." + ::= { etherGroups 10 } + + etherStatsHalfDuplexGroup OBJECT-GROUP + OBJECTS { dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsCarrierSenseErrors + } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable only to half-duplex ethernet-like + network interfaces." + ::= { etherGroups 11 } + + etherHCStatsGroup OBJECT-GROUP + OBJECTS { dot3HCStatsAlignmentErrors, + dot3HCStatsFCSErrors, + dot3HCStatsInternalMacTransmitErrors, + dot3HCStatsFrameTooLongs, + dot3HCStatsInternalMacReceiveErrors, + dot3HCStatsSymbolErrors + } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics applicable to higher-speed + ethernet-like network interfaces." + ::= { etherGroups 12 } + + etherHCControlGroup OBJECT-GROUP + OBJECTS { dot3HCControlInUnknownOpcodes } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics for the MAC Control sublayer on + higher-speed ethernet-like network interfaces." + ::= { etherGroups 13 } + + etherHCControlPauseGroup OBJECT-GROUP + OBJECTS { dot3HCInPauseFrames, + dot3HCOutPauseFrames + + + + } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics for the MAC Control PAUSE function on + higher-speed ethernet-like network interfaces." + ::= { etherGroups 14 } + + etherRateControlGroup OBJECT-GROUP + OBJECTS { dot3StatsRateControlAbility, + dot3StatsRateControlStatus + } + STATUS current + DESCRIPTION "A collection of objects providing information + about the Rate Control function on ethernet-like + interfaces." + ::= { etherGroups 15 } + +END diff --git a/mibs/ietf/FC-MGMT-MIB b/mibs/ietf/FC-MGMT-MIB new file mode 100644 index 0000000..18f36a4 --- /dev/null +++ b/mibs/ietf/FC-MGMT-MIB @@ -0,0 +1,2442 @@ + FC-MGMT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, Counter32, Counter64, transmission + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + ifIndex FROM IF-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + + fcMgmtMIB MODULE-IDENTITY + LAST-UPDATED "200504260000Z" -- 26 April 2005 + ORGANIZATION "IETF IPS (IP-Storage) Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + " + DESCRIPTION + "This module defines management information specific to + Fibre Channel-attached devices. + + + + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4044; see the RFC + itself for full legal notices." + REVISION "200504260000Z" -- 26 April 2005 + DESCRIPTION + "Initial version of the Fibre Channel Mgmt MIB module." + ::= { transmission 56 } + + fcmgmtObjects OBJECT IDENTIFIER ::= { fcMgmtMIB 1 } + fcmgmtNotifications OBJECT IDENTIFIER ::= { fcMgmtMIB 2 } + fcmgmtNotifPrefix OBJECT IDENTIFIER ::= { fcmgmtNotifications 0 } + fcmgmtConformance OBJECT IDENTIFIER ::= { fcMgmtMIB 3 } + + --******************************** + -- Textual Conventions + -- + + FcNameIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The World Wide Name (WWN) associated with a Fibre Channel + (FC) entity. WWNs were initially defined as 64-bits in + length. The latest definition (for future use) is 128-bits + long. The zero-length string value is used in + circumstances in which the WWN is unassigned/unknown." + SYNTAX OCTET STRING (SIZE(0 | 8 | 16)) + +FcAddressIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Fibre Channel Address ID, a 24-bit value unique within + the address space of a Fabric. The zero-length string value + is used in circumstances in which the WWN is + unassigned/unknown." + SYNTAX OCTET STRING (SIZE(0 | 3)) + +FcDomainIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Domain Id (of an FC switch), or zero if the no Domain + Id has been assigned." + SYNTAX Integer32 (0..239) + + + + + + + + + +FcPortType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of a Fibre Channel port, as indicated by the use + of the appropriate value assigned by IANA." + REFERENCE + "The IANA-maintained registry for + Fibre Channel port types (http://www.iana.org/)." + SYNTAX Unsigned32 + +FcClasses ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of Fibre Channel classes of service." + REFERENCE + "Classes of service are described in FC-FS Section 13." + SYNTAX BITS { classF(0), class1(1), class2(2), class3(3), + class4(4), class5(5), class6(6) } + +FcBbCredit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The buffer-to-buffer credit of an FC port." + SYNTAX Integer32 (0..32767) + +FcBbCreditModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The buffer-to-buffer credit model of an Fx_Port." + SYNTAX INTEGER { regular(1), alternate (2) } + + +FcDataFieldSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Receive Data Field Size associated with an FC port." + SYNTAX Integer32 (128..2112) + + + + + + + + + + + + + + +FcUnitFunctions ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of functions that a Fibre Channel Interconnect + Element or Platform might perform. A value with no bits set + indicates the function(s) are unknown. The individual bits + have the following meanings: + + other - none of the following. + + hub - a device that interconnects L_Ports, but does not + operate as an FL_Port. + + switch - a fabric element conforming to the Fibre Channel + switch fabric set of standards (e.g., [FC-SW-3]). + + bridge - a device that encapsulates Fibre Channel frames + within another protocol (e.g., [FC-BB], FC-BB-2). + + gateway - a device that converts an FC-4 to another protocol + (e.g., FCP to iSCSI). + + host - a computer system that provides end users with + services such as computation and storage access. + + storageSubsys - an integrated collection of storage + controllers, storage devices, and necessary software that + provides storage services to one or more hosts. + + storageAccessDev - a device that provides storage management + and access for heterogeneous hosts and heterogeneous devices + (e.g., medium changer). + + nas - a device that connects to a network and provides file + access services. + + wdmux - a device that modulates/demodulates each of several + data streams (e.g., Fibre Channel protocol data streams) + onto/from a different part of the light spectrum in an + optical fiber. + + storageDevice - a disk/tape/etc. device (without the + controller and/or software required for it to be a + 'storageSubsys')." + SYNTAX BITS { + other(0), -- none of the following + hub(1), + switch(2), + + + + bridge(3), + gateway(4), + host(5), + storageSubsys(6), + storageAccessDev(7), + nas(8), + wdmux(9), + storageDevice(10) + } + +--******************************** +-- MIB object definitions +-- + +fcmInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the local Fibre Channel management + instances." + ::= { fcmgmtObjects 1 } + +fcmInstanceEntry OBJECT-TYPE + SYNTAX FcmInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of attributes for a particular local Fibre Channel + management instance." + INDEX { fcmInstanceIndex } + ::= { fcmInstanceTable 1 } + +FcmInstanceEntry ::= + SEQUENCE { + fcmInstanceIndex Unsigned32, + fcmInstanceWwn FcNameIdOrZero, + fcmInstanceFunctions FcUnitFunctions, + fcmInstancePhysicalIndex Integer32, + fcmInstanceSoftwareIndex Integer32, + fcmInstanceStatus INTEGER, + fcmInstanceTextName SnmpAdminString, + fcmInstanceDescr SnmpAdminString, + fcmInstanceFabricId FcNameIdOrZero + } + + + + + + +fcmInstanceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer value that uniquely identifies this + instance amongst all local Fibre Channel management + instances. + + It is mandatory to keep this value constant between restarts + of the agent, and to make every possible effort to keep it + constant across restarts (but note, it is unrealistic to + expect it to remain constant across all re-configurations of + the local system, e.g., across the replacement of all non- + volatile storage)." + ::= { fcmInstanceEntry 1 } + +fcmInstanceWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the instance has one (or more) WWN(s), then this object + contains that (or one of those) WWN(s). + + If the instance does not have a WWN associated with it, then + this object contains the zero-length string." + ::= { fcmInstanceEntry 2 } + +fcmInstanceFunctions OBJECT-TYPE + SYNTAX FcUnitFunctions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One (or more) Fibre Channel unit functions being performed + by this instance." + ::= { fcmInstanceEntry 3 } + +fcmInstancePhysicalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to a physical + component (or to a hierarchy of physical components) + identified by the Entity-MIB, then this object's value is + the value of the entPhysicalIndex of that component (or of + the component at the root of that hierarchy). If there is + + + + no correspondence to a physical component (or no component + that has an entPhysicalIndex value), then the value of this + object is zero." + REFERENCE + "entPhysicalIndex is defined in the Entity MIB, RFC 2737." + ::= { fcmInstanceEntry 4 } + +fcmInstanceSoftwareIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to an installed + software module identified in the Host Resources MIB, then + this object's value is the value of the hrSWInstalledIndex + of that module. If there is no correspondence to an + installed software module (or no module that has a + hrSWInstalledIndex value), then the value of this object is + zero." + REFERENCE + "hrSWInstalledIndex is defined in the Host Resources MIB, + RFC 2790" + ::= { fcmInstanceEntry 5 } + +fcmInstanceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + ok(2), -- able to operate correctly + warning(3), -- needs attention + failed(4) -- something has failed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Overall status of the Fibre Channel entity/entities managed + by this management instance. The value should reflect the + most serious status of such entities." + ::= { fcmInstanceEntry 6 } + +fcmInstanceTextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual name for this management instance and the Fibre + Channel entity/entities that it is managing." + ::= { fcmInstanceEntry 7 } + + + + +fcmInstanceDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual description of this management instance and the + Fibre Channel entity/entities that it is managing." + ::= { fcmInstanceEntry 8 } + +fcmInstanceFabricId OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique Fabric Identifier that identifies the + fabric to which the Fibre Channel entity/entities managed by + this management instance are connected, or, of which they + are a part. This is typically the Node WWN of the principal + switch of a Fibre Channel fabric. The zero-length string + indicates that the fabric identifier is unknown (or not + applicable). + + In the event that the Fibre Channel entity/entities managed + by this management instance is/are connected to multiple + fabrics, then this object records the first (known) one." + ::= { fcmInstanceEntry 9 } + +--******************************** +-- The Fibre Channel Switch Table +-- + +fcmSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about Fibre Channel switches that + are managed by Fibre Channel management instances. Each + Fibre Channel management instance can manage one or more + Fibre Channel switches." + ::= { fcmgmtObjects 2 } + +fcmSwitchEntry OBJECT-TYPE + SYNTAX FcmSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular Fibre Channel switch that is + + + + managed by the management instance given by + fcmInstanceIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex } + ::= { fcmSwitchTable 1 } + +FcmSwitchEntry ::= + SEQUENCE { + fcmSwitchIndex Unsigned32, + fcmSwitchDomainId FcDomainIdOrZero, + fcmSwitchPrincipal TruthValue, + fcmSwitchWWN FcNameIdOrZero + } + +fcmSwitchIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies a Fibre + Channel switch amongst those managed by one Fibre Channel + management instance. + + It is mandatory to keep this value constant between restarts + of the agent, and to make every possible effort to keep it + constant across restarts." + ::= { fcmSwitchEntry 1 } + +fcmSwitchDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Domain Id of this switch. A value of zero indicates + that a switch has not (yet) been assigned a Domain Id." + ::= { fcmSwitchEntry 2 } + +fcmSwitchPrincipal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this switch is the principal + switch within its fabric." + ::= { fcmSwitchEntry 3 } + + + + + + + +fcmSwitchWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of this switch." + ::= { fcmSwitchEntry 4 } + +--******************************** +-- The Fibre Channel Port Table +-- + +fcmPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about Fibre Channel ports. Each Fibre Channel + port is represented by one entry in the IF-MIB's ifTable." + REFERENCE + "RFC 2863, The Interfaces Group MIB, June 2000." + ::= { fcmgmtObjects 3 } + +fcmPortEntry OBJECT-TYPE + SYNTAX FcmPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific port." + INDEX { ifIndex } + ::= { fcmPortTable 1 } + +FcmPortEntry ::= + SEQUENCE { + fcmPortInstanceIndex Unsigned32, + fcmPortWwn FcNameIdOrZero, + fcmPortNodeWwn FcNameIdOrZero, + fcmPortAdminType FcPortType, + fcmPortOperType FcPortType, + fcmPortFcCapClass FcClasses, + fcmPortFcOperClass FcClasses, + fcmPortTransmitterType INTEGER, + fcmPortConnectorType INTEGER, + fcmPortSerialNumber SnmpAdminString, + fcmPortPhysicalNumber Unsigned32, + fcmPortAdminSpeed INTEGER, + fcmPortCapProtocols BITS, + fcmPortOperProtocols BITS + + + + } + +fcmPortInstanceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of fcmInstanceIndex by which the Fibre Channel + management instance, which manages this port, is identified + in the fcmInstanceTable." + ::= { fcmPortEntry 1 } + +fcmPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of the port, or the zero-length string + if the port does not have a WWN." + ::= { fcmPortEntry 2 } + +fcmPortNodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of the Node that contains this port, or + the zero-length string if the port does not have a node + WWN." + ::= { fcmPortEntry 3 } + +fcmPortAdminType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively desired type of this port." + ::= { fcmPortEntry 4 } + +fcmPortOperType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational type of this port." + ::= { fcmPortEntry 5 } + + + + + +fcmPortFcCapClass OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The classes of service capability of this port." + ::= { fcmPortEntry 6 } + +fcmPortFcOperClass OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The classes of service that are currently operational on + this port. For an FL_Port, this is the union of the classes + being supported across all attached NL_Ports." + ::= { fcmPortEntry 7 } + +fcmPortTransmitterType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + shortwave850nm(3), + longwave1550nm(4), + longwave1310nm(5), + electrical(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The technology of the port transceiver." + REFERENCE + "FC-GS-3, section 6.1.2.2.3" + ::= { fcmPortEntry 8 } + +fcmPortConnectorType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + gbic(3), + embedded(4), + glm(5), + gbicSerialId(6), + gbicNoSerialId(7), + sfpSerialId(8), + sfpNoSerialId(9) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The module type of the port connector. This object refers + to the hardware implementation of the port. It will be + 'embedded' if the hardware equivalent to Gigabit interface + card (GBIC) is part of the line card and is unremovable. It + will be 'glm' if it's a gigabit link module (GLM). It will + be 'gbicSerialId' if the GBIC serial id can be read, else it + will be 'gbicNoSerialId'. It will be 'sfpSerialId' if the + small form factor (SFP) pluggable GBICs serial id can be + read, else it will be 'sfpNoSerialId'." + REFERENCE + "FC-GS-3, section 6.1.2.2.4" + ::= { fcmPortEntry 9 } + +fcmPortSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number associated with the port (e.g., for a + GBIC). If not applicable, the object's value is a zero- + length string." + REFERENCE + "FC-GS-3, section 6.1.2.2.4" + ::= { fcmPortEntry 10 } + +fcmPortPhysicalNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the port's 'Physical Port Number' as defined by + GS-3." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmPortEntry 11 } + +fcmPortAdminSpeed OBJECT-TYPE + SYNTAX INTEGER { + auto(1), + eighthGbs(2), -- 125Mbs + quarterGbs(3), -- 250Mbs + halfGbs(4), -- 500Mbs + oneGbs(5), -- 1Gbs + twoGbs(6), -- 2Gbs + fourGbs(7), -- 4Gbs + tenGbs(8) -- 10Gbs + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The speed of the interface: + + 'auto' - auto-negotiation + 'tenGbs' - 10Gbs + 'fourGbs' - 4Gbs + 'twoGbs' - 2Gbs + 'oneGbs' - 1Gbs + 'halfGbs' - 500Mbs + 'quarterGbs' - 250Mbs + 'eighthGbs' - 125Mbs" + ::= { fcmPortEntry 12 } + +fcmPortCapProtocols OBJECT-TYPE + SYNTAX BITS { + unknown(0), + loop(1), + fabric(2), + scsi(3), + tcpIp(4), + vi(5), + ficon(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask specifying the higher level protocols that are + capable of running over this port. Note that for generic + Fx_Ports, E_Ports, and B_Ports, this object will indicate + all protocols." + ::= { fcmPortEntry 13 } + +fcmPortOperProtocols OBJECT-TYPE + SYNTAX BITS { + unknown(0), + loop(1), + fabric(2), + scsi(3), + tcpIp(4), + vi(5), + ficon(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A bit mask specifying the higher level protocols that are + currently operational on this port. For Fx_Ports, E_Ports, + and B_Ports, this object will typically have the value + 'unknown'." + ::= { fcmPortEntry 14 } + +--******************************** +-- Port Statistics +-- + +fcmPortStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for Fibre Channel ports." + ::= { fcmgmtObjects 4 } + +fcmPortStatsEntry OBJECT-TYPE + SYNTAX FcmPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing statistics for a Fibre Channel port. + If any counter in this table suffers a discontinuity, the + value of ifCounterDiscontinuityTime (defined in the IF-MIB) + must be updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortStatsTable 1 } + +FcmPortStatsEntry ::= + SEQUENCE { + fcmPortBBCreditZeros Counter64, + fcmPortFullInputBuffers Counter64, + fcmPortClass2RxFrames Counter64, + fcmPortClass2RxOctets Counter64, + fcmPortClass2TxFrames Counter64, + fcmPortClass2TxOctets Counter64, + fcmPortClass2Discards Counter64, + fcmPortClass2RxFbsyFrames Counter64, + fcmPortClass2RxPbsyFrames Counter64, + fcmPortClass2RxFrjtFrames Counter64, + fcmPortClass2RxPrjtFrames Counter64, + fcmPortClass2TxFbsyFrames Counter64, + fcmPortClass2TxPbsyFrames Counter64, + fcmPortClass2TxFrjtFrames Counter64, + fcmPortClass2TxPrjtFrames Counter64, + + + + fcmPortClass3RxFrames Counter64, + fcmPortClass3RxOctets Counter64, + fcmPortClass3TxFrames Counter64, + fcmPortClass3TxOctets Counter64, + fcmPortClass3Discards Counter64, + fcmPortClassFRxFrames Counter32, + fcmPortClassFRxOctets Counter32, + fcmPortClassFTxFrames Counter32, + fcmPortClassFTxOctets Counter32, + fcmPortClassFDiscards Counter32 + } + +fcmPortBBCreditZeros OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions in/out of the buffer-to-buffer + credit zero state. The other side is not providing any + credit." + ::= { fcmPortStatsEntry 1 } + +fcmPortFullInputBuffers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of occurrences when all input buffers of a port + were full and outbound buffer-to-buffer credit transitioned + to zero, i.e., there became no credit to provide to other + side." + ::= { fcmPortStatsEntry 2 } + +fcmPortClass2RxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received at this port." + ::= { fcmPortStatsEntry 3 } + +fcmPortClass2RxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames received + at this port." + + + + ::= { fcmPortStatsEntry 4 } + +fcmPortClass2TxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames transmitted out of this port." + ::= { fcmPortStatsEntry 5 } + +fcmPortClass2TxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames + transmitted out of this port." + ::= { fcmPortStatsEntry 6 } + +fcmPortClass2Discards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 7 } + +fcmPortClass2RxFbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when either the + fabric or the destination port is temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 8 } + +fcmPortClass2RxPbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when the + + + + destination port is temporarily busy." + ::= { fcmPortStatsEntry 9 } + +fcmPortClass2RxFrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was returned to this port as + a result of a Class 2 frame that was rejected by the fabric. + Note that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 10 } + +fcmPortClass2RxPrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was returned to this port as + a result of a Class 2 frame that was rejected at the + destination N_Port." + ::= { fcmPortStatsEntry 11 } + +fcmPortClass2TxFbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because either the Fabric or the destination port was + temporarily busy. Note that this counter will never + increment for an N_Port." + ::= { fcmPortStatsEntry 12 } + +fcmPortClass2TxPbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because the destination port was temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 13 } + + + + + + +fcmPortClass2TxFrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was generated by this port + as a result of a Class 2 frame being rejected by the fabric. + Note that this counter will never increment for an N_Port." + ::= { fcmPortStatsEntry 14 } + +fcmPortClass2TxPrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was generated by this port + as a result of a Class 2 frame being rejected at the + destination N_Port. Note that this counter will never + increment for an F_Port." + ::= { fcmPortStatsEntry 15 } + +fcmPortClass3RxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received at this port." + ::= { fcmPortStatsEntry 16 } + +fcmPortClass3RxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames received + at this port." + ::= { fcmPortStatsEntry 17 } + +fcmPortClass3TxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames transmitted out of this port." + ::= { fcmPortStatsEntry 18 } + + + + + + +fcmPortClass3TxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames + transmitted out of this port." + ::= { fcmPortStatsEntry 19 } + +fcmPortClass3Discards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 20 } + +fcmPortClassFRxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames received at this port." + ::= { fcmPortStatsEntry 21 } + +fcmPortClassFRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class F frames received + at this port." + ::= { fcmPortStatsEntry 22 } + +fcmPortClassFTxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames transmitted out of this port." + ::= { fcmPortStatsEntry 23 } + + + + + + + + + +fcmPortClassFTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class F frames + transmitted out of this port." + ::= { fcmPortStatsEntry 24 } + +fcmPortClassFDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 25 } + +--******************************** +-- Port Low-capacity Statistics +-- +-- these are Counter32 "low-capacity" counters for systems +-- that do not support Counter64's + +fcmPortLcStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Counter32-based statistics for systems that do + not support Counter64." + ::= { fcmgmtObjects 5 } + +fcmPortLcStatsEntry OBJECT-TYPE + SYNTAX FcmPortLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing low-capacity (i.e., based on Counter32) + statistics for a Fibre Channel port. If any counter in this + table suffers a discontinuity, the value of + ifCounterDiscontinuityTime (defined in the IF-MIB) must be + updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortLcStatsTable 1 } + + + + + +FcmPortLcStatsEntry ::= + SEQUENCE { + fcmPortLcBBCreditZeros Counter32, + fcmPortLcFullInputBuffers Counter32, + fcmPortLcClass2RxFrames Counter32, + fcmPortLcClass2RxOctets Counter32, + fcmPortLcClass2TxFrames Counter32, + fcmPortLcClass2TxOctets Counter32, + fcmPortLcClass2Discards Counter32, + fcmPortLcClass2RxFbsyFrames Counter32, + fcmPortLcClass2RxPbsyFrames Counter32, + fcmPortLcClass2RxFrjtFrames Counter32, + fcmPortLcClass2RxPrjtFrames Counter32, + fcmPortLcClass2TxFbsyFrames Counter32, + fcmPortLcClass2TxPbsyFrames Counter32, + fcmPortLcClass2TxFrjtFrames Counter32, + fcmPortLcClass2TxPrjtFrames Counter32, + fcmPortLcClass3RxFrames Counter32, + fcmPortLcClass3RxOctets Counter32, + fcmPortLcClass3TxFrames Counter32, + fcmPortLcClass3TxOctets Counter32, + fcmPortLcClass3Discards Counter32 + } + +fcmPortLcBBCreditZeros OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions in/out of the buffer-to-buffer + credit zero state. The other side is not providing any + credit." + ::= { fcmPortLcStatsEntry 1 } + +fcmPortLcFullInputBuffers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of occurrences when all input buffers of a port + were full and outbound buffer-to-buffer credit transitioned + to zero, i.e., there became no credit to provide to other + side." + ::= { fcmPortLcStatsEntry 2 } + + + + + + + +fcmPortLcClass2RxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received at this port." + ::= { fcmPortLcStatsEntry 3 } + +fcmPortLcClass2RxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames received + at this port." + ::= { fcmPortLcStatsEntry 4 } + +fcmPortLcClass2TxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames transmitted out of this port." + ::= { fcmPortLcStatsEntry 5 } + +fcmPortLcClass2TxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames + transmitted out of this port." + ::= { fcmPortLcStatsEntry 6 } + +fcmPortLcClass2Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames that were discarded upon + reception at this port." + ::= { fcmPortLcStatsEntry 7 } + + + + + + + + + +fcmPortLcClass2RxFbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when either the + fabric or the destination port is temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 8 } + +fcmPortLcClass2RxPbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when the + destination port is temporarily busy." + ::= { fcmPortLcStatsEntry 9 } + +fcmPortLcClass2RxFrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was returned to this port as + a result of a Class 2 frame that was rejected by the fabric. + Note that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 10 } + +fcmPortLcClass2RxPrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was returned to this port as + a result of a Class 2 frame that was rejected at the + destination N_Port." + ::= { fcmPortLcStatsEntry 11 } + + + + + + + + + +fcmPortLcClass2TxFbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because either the Fabric or the destination port was + temporarily busy. Note that this counter will never + increment for an N_Port." + ::= { fcmPortLcStatsEntry 12 } + +fcmPortLcClass2TxPbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because the destination port was temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 13 } + +fcmPortLcClass2TxFrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was generated by this port + as a result of a Class 2 frame being rejected by the fabric. + Note that this counter will never increment for an N_Port." + ::= { fcmPortLcStatsEntry 14 } + +fcmPortLcClass2TxPrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was generated by this port + as a result of a Class 2 frame being rejected at the + destination N_Port. Note that this counter will never + increment for an F_Port." + ::= { fcmPortLcStatsEntry 15 } + + + + + + + + +fcmPortLcClass3RxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received at this port." + ::= { fcmPortLcStatsEntry 16 } + +fcmPortLcClass3RxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames received + at this port." + ::= { fcmPortLcStatsEntry 17 } + +fcmPortLcClass3TxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames transmitted out of this port." + ::= { fcmPortLcStatsEntry 18 } + +fcmPortLcClass3TxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames + transmitted out of this port." + ::= { fcmPortLcStatsEntry 19 } + +fcmPortLcClass3Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames that were discarded upon + reception at this port." + ::= { fcmPortLcStatsEntry 20 } + + + + + + + + + +--******************************** +-- Port Error Counters +-- + +fcmPortErrorsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Error counters for Fibre Channel ports." + ::= { fcmgmtObjects 6 } + +fcmPortErrorsEntry OBJECT-TYPE + SYNTAX FcmPortErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Error counters for a Fibre Channel port. If any counter in + this table suffers a discontinuity, the value of + ifCounterDiscontinuityTime (defined in the IF-MIB) must be + updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortErrorsTable 1 } + +FcmPortErrorsEntry ::= + SEQUENCE { + fcmPortRxLinkResets Counter32, + fcmPortTxLinkResets Counter32, + fcmPortLinkResets Counter32, + fcmPortRxOfflineSequences Counter32, + fcmPortTxOfflineSequences Counter32, + fcmPortLinkFailures Counter32, + fcmPortLossofSynchs Counter32, + fcmPortLossofSignals Counter32, + fcmPortPrimSeqProtocolErrors Counter32, + fcmPortInvalidTxWords Counter32, + fcmPortInvalidCRCs Counter32, + fcmPortInvalidOrderedSets Counter32, + fcmPortFrameTooLongs Counter32, + fcmPortTruncatedFrames Counter32, + fcmPortAddressErrors Counter32, + fcmPortDelimiterErrors Counter32, + fcmPortEncodingDisparityErrors Counter32, + fcmPortOtherErrors Counter32 + } + + + + + +fcmPortRxLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset (LR) Primitive Sequences + received." + ::= { fcmPortErrorsEntry 1 } + +fcmPortTxLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset (LR) Primitive Sequences + transmitted." + ::= { fcmPortErrorsEntry 2 } + +fcmPortLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the reset link protocol was initiated + on this port. This includes the number of Loop + Initialization Primitive (LIP) events on an arbitrated loop + port." + ::= { fcmPortErrorsEntry 3 } + +fcmPortRxOfflineSequences OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline (OLS) Primitive Sequences received at + this port." + ::= { fcmPortErrorsEntry 4 } + +fcmPortTxOfflineSequences OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline (OLS) Primitive Sequences transmitted + by this port." + ::= { fcmPortErrorsEntry 5 } + + + + + +fcmPortLinkFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of link failures. This count is part of FC-PH's + Link Error Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8 [FC-PH]." + ::= { fcmPortErrorsEntry 6 } + +fcmPortLossofSynchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of instances of synchronization loss detected at + this port. This count is part of FC-PH's Link Error Status + Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 7 } + +fcmPortLossofSignals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of instances of signal loss detected at this + port. This count is part of FC-PH's Link Error Status Block + (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 8 } + +fcmPortPrimSeqProtocolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of primitive sequence protocol errors detected + at this port. This count is part of FC-PH's Link Error + Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 9 } + + + + + +fcmPortInvalidTxWords OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid transmission words received at this + port. This count is part of FC-PH's Link Error Status Block + (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 10 } + +fcmPortInvalidCRCs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received with an invalid CRC. This + count is part of FC-PH's Link Error Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 11 } + +fcmPortInvalidOrderedSets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid ordered sets received at this port." + ::= { fcmPortErrorsEntry 12 } + +fcmPortFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received at this port for which the + frame length was greater than what was agreed to in + FLOGI/PLOGI. This could be caused by losing the end of + frame delimiter." + ::= { fcmPortErrorsEntry 13 } + +fcmPortTruncatedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received at this port for which the + + + + frame length was less than the minimum indicated by the + frame header - normally 24 bytes, but it could be more if + the DFCTL field indicates an optional header should have + been present." + ::= { fcmPortErrorsEntry 14 } + +fcmPortAddressErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received with unknown addressing; for + example, an unknown SID or DID." + ::= { fcmPortErrorsEntry 15 } + +fcmPortDelimiterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid frame delimiters received at this + port. An example is a frame with a class 2 start and a + class 3 at the end." + ::= { fcmPortErrorsEntry 16 } + +fcmPortEncodingDisparityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of encoding disparity errors received at this + port." + ::= { fcmPortErrorsEntry 17 } + +fcmPortOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors that were detected on this port but + not counted by any other error counter in this row." + ::= { fcmPortErrorsEntry 18 } + + + + + + + + + +--******************************** +-- The Fibre Channel Fx_Port Table +-- + +fcmFxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information about Fibre Channel ports that is + specific to Fx_Ports. This table will contain one entry for + each fcmPortTable entry that represents an Fx_Port." + ::= { fcmgmtObjects 7 } + +fcmFxPortEntry OBJECT-TYPE + SYNTAX FcmFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific Fx_Port." + INDEX { ifIndex } + ::= { fcmFxPortTable 1 } + +FcmFxPortEntry ::= + SEQUENCE { + fcmFxPortRatov Unsigned32, + fcmFxPortEdtov Unsigned32, + fcmFxPortRttov Unsigned32, + fcmFxPortHoldTime Unsigned32, + fcmFxPortCapBbCreditMax FcBbCredit, + fcmFxPortCapBbCreditMin FcBbCredit, + fcmFxPortCapDataFieldSizeMax FcDataFieldSize, + fcmFxPortCapDataFieldSizeMin FcDataFieldSize, + fcmFxPortCapClass2SeqDeliv TruthValue, + fcmFxPortCapClass3SeqDeliv TruthValue, + fcmFxPortCapHoldTimeMax Unsigned32, + fcmFxPortCapHoldTimeMin Unsigned32 + } + +fcmFxPortRatov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Resource_Allocation_Timeout Value configured for this + Fx_Port. This is used as the timeout value for determining + when to reuse an Nx_Port resource such as a + + + + Recovery_Qualifier. It represents the Error_Detect_Timeout + value (see fcmFxPortEdtov) plus twice the maximum time that + a frame may be delayed within the Fabric and still be + delivered." + ::= { fcmFxPortEntry 1 } + +fcmFxPortEdtov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Error_Detect_Timeout value configured for this Fx_Port. + This is used as the timeout value for detecting an error + condition." + ::= { fcmFxPortEntry 2 } + +fcmFxPortRttov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receiver_Transmitter_Timeout value of this Fx_Port. + This is used by the receiver logic to detect a Loss of + Synchronization." + ::= { fcmFxPortEntry 3 } + +fcmFxPortHoldTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum time that this Fx_Port shall hold a frame + before discarding the frame if it is unable to deliver the + frame. The value 0 means that this Fx_Port does not support + this parameter." + ::= { fcmFxPortEntry 4 } + +fcmFxPortCapBbCreditMax OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of receive buffers that this port is + capable of making available for holding frames from attached + + + + Nx_Port(s)." + ::= { fcmFxPortEntry 5 } + +fcmFxPortCapBbCreditMin OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of receive buffers that this port is + capable of making available for holding frames from attached + Nx_Port(s)." + ::= { fcmFxPortEntry 6 } + +fcmFxPortCapDataFieldSizeMax OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size in bytes of the Data Field in a frame that + this Fx_Port is capable of receiving from an attached + Nx_Port." + ::= { fcmFxPortEntry 7 } + +fcmFxPortCapDataFieldSizeMin OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum size in bytes of the Data Field in a frame that + this Fx_Port is capable of receiving from an attached + Nx_Port." + ::= { fcmFxPortEntry 8 } + +fcmFxPortCapClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this Fx_Port is capable of + supporting Class 2 Sequential Delivery." + ::= { fcmFxPortEntry 9 } + + + + + + + +fcmFxPortCapClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this Fx_Port is capable of + supporting Class 3 Sequential Delivery." + ::= { fcmFxPortEntry 10 } + +fcmFxPortCapHoldTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum holding time that this Fx_Port is capable of + supporting." + ::= { fcmFxPortEntry 11 } + +fcmFxPortCapHoldTimeMin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum holding time that this Fx_Port is capable of + supporting." + ::= { fcmFxPortEntry 12 } + +--******************************** +-- The Fibre Channel Inter-Switch Port Table +-- + +fcmISPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmISPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information about E_Ports, B_Ports, and any + other type of Fibre Channel port to which inter-switch links + can be connected. This table will contain one entry for + each fcmPortTable entry that represents such a port." + ::= { fcmgmtObjects 8 } + + + + + + + + +fcmISPortEntry OBJECT-TYPE + SYNTAX FcmISPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific port + connected to an inter-switch link." + INDEX { ifIndex } + ::= { fcmISPortTable 1 } + +FcmISPortEntry ::= + SEQUENCE { + fcmISPortClassFCredit FcBbCredit, + fcmISPortClassFDataFieldSize FcDataFieldSize + } + +fcmISPortClassFCredit OBJECT-TYPE + SYNTAX FcBbCredit + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of Class F data frames that can be + transmitted by the inter-switch port without receipt of ACK + or Link_Response frames." + ::= { fcmISPortEntry 1 } + +fcmISPortClassFDataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the inter-switch port has + agreed to support for Class F frames to/from this port. The + size specifies the largest Data Field Size for an FT_1 + frame." + ::= { fcmISPortEntry 2 } + + + + + + + + + + + + + + +--******************************** +-- The Fabric Login table +-- +-- This table contains the information held by FC switches +-- about the Nx_Ports that are logged-in/attached to their +-- Fx_Ports + +fcmFLoginTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmFLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains one entry for each Nx_Port logged- + in/attached to a particular Fx_Port in the switch. Each + entry contains the services parameters established during + the most recent Fabric Login, explicit or implicit. Note + that an Fx_Port may have one or more Nx_Ports attached to + it." + ::= { fcmgmtObjects 9 } + +fcmFLoginEntry OBJECT-TYPE + SYNTAX FcmFLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing service parameters established from a + successful Fabric Login." + INDEX { ifIndex, fcmFLoginNxPortIndex } + ::= { fcmFLoginTable 1 } + +FcmFLoginEntry ::= + SEQUENCE { + fcmFLoginNxPortIndex Unsigned32, + fcmFLoginPortWwn FcNameIdOrZero, + fcmFLoginNodeWwn FcNameIdOrZero, + fcmFLoginBbCreditModel FcBbCreditModel, + fcmFLoginBbCredit FcBbCredit, + fcmFLoginClassesAgreed FcClasses, + fcmFLoginClass2SeqDelivAgreed TruthValue, + fcmFLoginClass2DataFieldSize FcDataFieldSize, + fcmFLoginClass3SeqDelivAgreed TruthValue, + fcmFLoginClass3DataFieldSize FcDataFieldSize + } + + + + + + + + +fcmFLoginNxPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an Nx_Port + amongst all those attached to the Fx_Port indicated by + ifIndex. + + After a value of this object is assigned to a particular + Nx_Port, that value can be re-used when and only when it is + assigned to the same Nx_Port, or, after a reset of the value + of the relevant instance of ifCounterDiscontinuityTime." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + ::= { fcmFLoginEntry 1 } + +fcmFLoginPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port name of the attached Nx_Port, or the zero-length + string if unknown." + ::= { fcmFLoginEntry 2 } + +fcmFLoginNodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of the attached Nx_Port, or the zero-length + string if unknown." + ::= { fcmFLoginEntry 3 } + +fcmFLoginBbCreditModel OBJECT-TYPE + SYNTAX FcBbCreditModel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The buffer-to-buffer credit model in use by the Fx_Port." + ::= { fcmFLoginEntry 4 } + +fcmFLoginBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of buffers available for holding frames to be + + + + transmitted to the attached Nx_Port. These buffers are for + buffer-to-buffer flow control in the direction from Fx_Port + to Nx_Port." + ::= { fcmFLoginEntry 5 } + +fcmFLoginClassesAgreed OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Classes of Service that the Fx_Port has agreed to + support for this Nx_Port." + ::= { fcmFLoginEntry 6 } + +fcmFLoginClass2SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the Fx_Port has agreed to support + Class 2 sequential delivery for this Nx_Port. This is only + meaningful if Class 2 service has been agreed upon." + ::= { fcmFLoginEntry 7 } + +fcmFLoginClass2DataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the Fx_Port has agreed to + support for Class 2 frames to/from this Nx_Port. The size + specifies the largest Data Field Size for an FT_1 frame. + This is only meaningful if Class 2 service has been agreed + upon." + ::= { fcmFLoginEntry 8 } + +fcmFLoginClass3SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the Fx_Port has agreed to support + Class 3 sequential delivery for this Nx_Port. This is only + meaningful if Class 3 service has been agreed upon." + ::= { fcmFLoginEntry 9 } + + + + + + +fcmFLoginClass3DataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the Fx_Port has agreed to + support for Class 3 frames to/from this Nx_Port. The size + specifies the largest Data Field Size for an FT_1 frame. + This is only meaningful if Class 3 service has been agreed + upon." + ::= { fcmFLoginEntry 10 } + +--******************************** +-- The Link table +-- +-- This table is intended to assist management applications +-- in determining the topology of the network. The table +-- contains any recent information the known to the agent +-- about Fibre Channel links, not only those that terminate at +-- a local port but also any others for which information +-- is known. + +fcmLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing any Fibre Channel link information that + is known to local Fibre Channel managed instances. One end + of such a link is typically at a local port, but the table + can also contain information on links for which neither end + is a local port. + + If one end of a link terminates locally, then that end is + termed 'end1'; the other end is termed 'end2'." + ::= { fcmgmtObjects 10 } + +fcmLinkEntry OBJECT-TYPE + SYNTAX FcmLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information that a particular Fibre + Channel managed instance has about a Fibre Channel link. + + The two ends of the link are called 'end1' and 'end2'." + INDEX { fcmInstanceIndex, fcmLinkIndex } + ::= { fcmLinkTable 1 } + + + +FcmLinkEntry ::= + SEQUENCE { + fcmLinkIndex Unsigned32, + fcmLinkEnd1NodeWwn FcNameIdOrZero, + fcmLinkEnd1PhysPortNumber Unsigned32, + fcmLinkEnd1PortWwn FcNameIdOrZero, + fcmLinkEnd2NodeWwn FcNameIdOrZero, + fcmLinkEnd2PhysPortNumber Unsigned32, + fcmLinkEnd2PortWwn FcNameIdOrZero, + fcmLinkEnd2AgentAddress SnmpAdminString, + fcmLinkEnd2PortType FcPortType, + fcmLinkEnd2UnitType FcUnitFunctions, + fcmLinkEnd2FcAddressId FcAddressIdOrZero + } + +fcmLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies one link + within the set of links about which a particular managed + instance has information." + ::= { fcmLinkEntry 1 } + +fcmLinkEnd1NodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of end1, or the zero-length string if + unknown." + ::= { fcmLinkEntry 2 } + +fcmLinkEnd1PhysPortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical port number of end1, or zero if unknown." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmLinkEntry 3 } + + + + + + + + +fcmLinkEnd1PortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port WWN of end1, or the zero-length string if unknown. + ('end1' is local if this value is equal to the value of + fcmPortWwn in one of the rows of the fcmPortTable.)" + ::= { fcmLinkEntry 4 } + +fcmLinkEnd2NodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of end2, or the zero-length string if + unknown." + ::= { fcmLinkEntry 5 } + +fcmLinkEnd2PhysPortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical port number of end2, or zero if unknown." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmLinkEntry 6 } + +fcmLinkEnd2PortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port WWN of end2, or the zero-length string if + unknown." + ::= { fcmLinkEntry 7 } + +fcmLinkEnd2AgentAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the management agent for the Fibre Channel + Interconnect Element or Platform of which end2 is a part. + The GS-4 specification provides some information about + management agents. If the address is unknown, the value of + this object is the zero-length string." + + + + REFERENCE + "FC-GS-3, section 6.1.2.1.7" + ::= { fcmLinkEntry 8 } + +fcmLinkEnd2PortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type of end2." + REFERENCE + "FC-GS-3, section 6.1.2.2.2" + ::= { fcmLinkEntry 9 } + +fcmLinkEnd2UnitType OBJECT-TYPE + SYNTAX FcUnitFunctions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of/function(s) performed by the Fibre Channel + Interconnect Element or Platform of which end2 is a part." + REFERENCE + "FC-GS-3, sections 6.1.2.1.2 and 6.1.2.3.2" + ::= { fcmLinkEntry 10 } + +fcmLinkEnd2FcAddressId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fibre Channel Address ID of end2, or the zero-length + string if unknown." + ::= { fcmLinkEntry 11 } + + + + + + + + + + + + + + + + + + +--******************************** +-- Conformance Section +-- + +fcmgmtCompliances OBJECT IDENTIFIER ::= { fcmgmtConformance 1 } +fcmgmtGroups OBJECT IDENTIFIER ::= { fcmgmtConformance 2 } + +fcmgmtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for compliance to this Fibre + Channel Management MIB." + MODULE -- this module + MANDATORY-GROUPS { fcmInstanceBasicGroup, + fcmPortBasicGroup, + fcmPortErrorsGroup } + + GROUP fcmPortStatsGroup + DESCRIPTION + "This group is mandatory for all systems that + are able to support the Counter64 date type." + + GROUP fcmPortClass23StatsGroup + DESCRIPTION + "This group is mandatory only for systems that + keep class-specific traffic statistics on Class 2 + and Class 3 traffic and are able to support the + Counter64 date type." + + GROUP fcmPortClassFStatsGroup + DESCRIPTION + "This group is mandatory only for FC switches that + keep statistics on Class F traffic." + + GROUP fcmPortLcStatsGroup + DESCRIPTION + "This group is mandatory only for agents that can not + support the Counter64 data type and/or need to provide + information accessible by SNMPv1 applications." + + GROUP fcmSwitchBasicGroup + DESCRIPTION + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmSwitchPortGroup + DESCRIPTION + + + + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmSwitchLoginGroup + DESCRIPTION + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmLinkBasicGroup + DESCRIPTION + "This group is optional." + + OBJECT fcmInstancePhysicalIndex + SYNTAX Integer32 (0) + DESCRIPTION + "Implementation of a non-zero value is not required." + + OBJECT fcmInstanceSoftwareIndex + SYNTAX Integer32 (0) + DESCRIPTION + "Implementation of a non-zero value is not required." + + OBJECT fcmInstanceTextName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmInstanceDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmPortAdminType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmPortAdminSpeed + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmSwitchDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT fcmISPortClassFCredit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { fcmgmtCompliances 1 } + +--******************************** +-- Object Groups +-- + +fcmInstanceBasicGroup OBJECT-GROUP + OBJECTS { fcmInstanceWwn, fcmInstanceFunctions, + fcmInstancePhysicalIndex, fcmInstanceSoftwareIndex, + fcmInstanceStatus, fcmInstanceTextName, + fcmInstanceDescr, fcmInstanceFabricId } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel managed instances." + ::= { fcmgmtGroups 1 } + +fcmSwitchBasicGroup OBJECT-GROUP + OBJECTS { fcmSwitchDomainId, fcmSwitchPrincipal, fcmSwitchWWN } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel switches." + ::= { fcmgmtGroups 2 } + +fcmPortBasicGroup OBJECT-GROUP + OBJECTS { fcmPortInstanceIndex, fcmPortWwn, fcmPortNodeWwn, + fcmPortAdminType, fcmPortOperType, fcmPortFcCapClass, + fcmPortFcOperClass, fcmPortTransmitterType, + fcmPortConnectorType, fcmPortSerialNumber, + fcmPortPhysicalNumber, fcmPortAdminSpeed, + fcmPortCapProtocols, fcmPortOperProtocols } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel ports." + ::= { fcmgmtGroups 3 } + +fcmPortStatsGroup OBJECT-GROUP + OBJECTS { fcmPortBBCreditZeros, fcmPortFullInputBuffers } + STATUS current + DESCRIPTION + "Traffic statistics, which are not specific to any one class + of service, for Fibre Channel ports." + ::= { fcmgmtGroups 4 } + + + + +fcmPortClass23StatsGroup OBJECT-GROUP + OBJECTS { fcmPortClass2RxFrames, fcmPortClass2RxOctets, + fcmPortClass2TxFrames, fcmPortClass2TxOctets, + fcmPortClass2Discards, fcmPortClass2RxFbsyFrames, + fcmPortClass2RxPbsyFrames, + fcmPortClass2RxFrjtFrames, + fcmPortClass2RxPrjtFrames, + fcmPortClass2TxFbsyFrames, + fcmPortClass2TxPbsyFrames, + fcmPortClass2TxFrjtFrames, + fcmPortClass2TxPrjtFrames, fcmPortClass3RxFrames, + fcmPortClass3RxOctets, fcmPortClass3TxFrames, + fcmPortClass3TxOctets, fcmPortClass3Discards } + STATUS current + DESCRIPTION + "Traffic statistics for Class 2 and Class 3 traffic on Fibre + Channel ports." + ::= { fcmgmtGroups 5 } + +fcmPortClassFStatsGroup OBJECT-GROUP + OBJECTS { fcmPortClassFRxFrames, + fcmPortClassFRxOctets, + fcmPortClassFTxFrames, + fcmPortClassFTxOctets, + fcmPortClassFDiscards } + STATUS current + DESCRIPTION + "Traffic statistics for Class F traffic on Fibre Channel + ports." + ::= { fcmgmtGroups 6 } + +fcmPortLcStatsGroup OBJECT-GROUP + OBJECTS { fcmPortLcBBCreditZeros, fcmPortLcFullInputBuffers, + fcmPortLcClass2RxFrames, fcmPortLcClass2RxOctets, + fcmPortLcClass2TxFrames, fcmPortLcClass2TxOctets, + fcmPortLcClass2Discards, fcmPortLcClass3Discards, + fcmPortLcClass3RxFrames, fcmPortLcClass3RxOctets, + fcmPortLcClass3TxFrames, fcmPortLcClass3TxOctets, + fcmPortLcClass2RxFbsyFrames, + fcmPortLcClass2RxPbsyFrames, + fcmPortLcClass2RxFrjtFrames, + fcmPortLcClass2RxPrjtFrames, + fcmPortLcClass2TxFbsyFrames, + fcmPortLcClass2TxPbsyFrames, + fcmPortLcClass2TxFrjtFrames, + fcmPortLcClass2TxPrjtFrames } + STATUS current + DESCRIPTION + + + + "Low-capacity (32-bit) statistics for Fibre Channel ports." + ::= { fcmgmtGroups 7 } + +fcmPortErrorsGroup OBJECT-GROUP + OBJECTS { fcmPortRxLinkResets, fcmPortTxLinkResets, + fcmPortLinkResets, fcmPortRxOfflineSequences, + fcmPortTxOfflineSequences, fcmPortLinkFailures, + fcmPortLossofSynchs, fcmPortLossofSignals, + fcmPortPrimSeqProtocolErrors, fcmPortInvalidTxWords, + fcmPortInvalidCRCs, fcmPortInvalidOrderedSets, + fcmPortFrameTooLongs, fcmPortTruncatedFrames, + fcmPortAddressErrors, fcmPortDelimiterErrors, + fcmPortEncodingDisparityErrors, + fcmPortOtherErrors } + STATUS current + DESCRIPTION + "Error statistics for Fibre Channel ports." + ::= { fcmgmtGroups 8 } + +fcmSwitchPortGroup OBJECT-GROUP + OBJECTS { fcmFxPortRatov, fcmFxPortEdtov, fcmFxPortRttov, + fcmFxPortHoldTime, fcmFxPortCapBbCreditMax, + fcmFxPortCapBbCreditMin, + fcmFxPortCapDataFieldSizeMax, + fcmFxPortCapDataFieldSizeMin, + fcmFxPortCapClass2SeqDeliv, + fcmFxPortCapClass3SeqDeliv, + fcmFxPortCapHoldTimeMax, + fcmFxPortCapHoldTimeMin, + fcmISPortClassFCredit, + fcmISPortClassFDataFieldSize } + STATUS current + DESCRIPTION + "Information about ports on a Fibre Channel switch." + ::= { fcmgmtGroups 9 } + +fcmSwitchLoginGroup OBJECT-GROUP + OBJECTS { fcmFLoginPortWwn, fcmFLoginNodeWwn, + fcmFLoginBbCreditModel, fcmFLoginBbCredit, + fcmFLoginClassesAgreed, + fcmFLoginClass2SeqDelivAgreed, + fcmFLoginClass2DataFieldSize, + fcmFLoginClass3SeqDelivAgreed, + fcmFLoginClass3DataFieldSize } + STATUS current + DESCRIPTION + "Information known to a Fibre Channel switch about + attached/logged-in Nx_Ports." + + + + ::= { fcmgmtGroups 10 } + +fcmLinkBasicGroup OBJECT-GROUP + OBJECTS { fcmLinkEnd1NodeWwn , fcmLinkEnd1PhysPortNumber, + fcmLinkEnd1PortWwn, fcmLinkEnd2NodeWwn , + fcmLinkEnd2PhysPortNumber, fcmLinkEnd2PortWwn, + fcmLinkEnd2AgentAddress, fcmLinkEnd2PortType, + fcmLinkEnd2UnitType, fcmLinkEnd2FcAddressId } + STATUS current + DESCRIPTION + "Information about Fibre Channel links." + ::= { fcmgmtGroups 11 } + +END diff --git a/mibs/ietf/FCIP-MGMT-MIB b/mibs/ietf/FCIP-MGMT-MIB new file mode 100644 index 0000000..c76ab4d --- /dev/null +++ b/mibs/ietf/FCIP-MGMT-MIB @@ -0,0 +1,1122 @@ +FCIP-MGMT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32, + Counter32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + TruthValue, RowStatus, TimeStamp FROM SNMPv2-TC + InetAddressType, + InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + FcNameIdOrZero FROM FC-MGMT-MIB + InterfaceIndex FROM IF-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +fcipMIB MODULE-IDENTITY + LAST-UPDATED "200602060000Z" + ORGANIZATION "IETF IPFC Working Group" + CONTACT-INFO "Anil Rijhsinghani + Accton Technology Corporation + 5 Mount Royal Ave + Marlboro, MA 01752 USA. + + + + Ravi Natarajan + F5 Networks + 2460 North First Street, Suite 100 + San Jose, CA 95131 USA." + DESCRIPTION + "The module defines management information specific to + FCIP devices. + + Copyright(C) The Internet Society (2006). This version + of this MIB module is part of RFC 4404; see the RFC + itself for full legal notices." + REVISION "200602060000Z" + DESCRIPTION + "Initial version of this module, published as RFC 4404." + ::= { mib-2 224 } + +fcipObjects OBJECT IDENTIFIER ::= { fcipMIB 1 } +fcipConformance OBJECT IDENTIFIER ::= { fcipMIB 2 } +fcipConfig OBJECT IDENTIFIER ::= { fcipObjects 1 } + + +-- ****************************************************************** +-- Textual conventions +-- + +FcipDomainIdInOctetForm ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Domain ID of a FC entity in octet form + to support the concatenation(000000h||Domain_ID) + format defined in the FSPF routing protocol." + REFERENCE + "FC-SW-3 section 4.8" + SYNTAX OCTET STRING (SIZE(1)) + +FcipEntityMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of port mode provided by an FCIP Entity + for an FCIP Link. An FCIP Entity can be an E-Port + mode for one of its FCIP Link Endpoints or a B-Port + mode for another of its FCIP Link Endpoints." + REFERENCE + "FC-BB, rev 4.7, 2 May 1997, section 3." + SYNTAX INTEGER { + ePortMode(1), + bPortMode(2) + } + + + +FcipEntityId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The FCIP entity identifier as defined in RFC 3821." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + SYNTAX OCTET STRING (SIZE(8)) + + +-- ****************************************************************** +-- The FCIP group +-- +-- This group defines the global scalar objects applicable to FCIP +-- devices only +-- + +fcipDynIpConfType OBJECT-TYPE + SYNTAX INTEGER { + slpv2(1), + none(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of discovery protocol used to discover remote + FCIP entities. The value of this object is persistent + across system restarts." + ::= { fcipConfig 1 } + +fcipDeviceWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of this FCIP device." + ::= { fcipConfig 2 } + +fcipEntitySACKOption OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the TCP Selective Acknowledgement + Option is enabled at this FCIP device to let the receiver + acknowledge multiple lost packets in a single ACK for faster + + + + recovery." + REFERENCE + "The Selective Ack option is defined in RFC 2883." + ::= { fcipConfig 3 } + + +-- ****************************************************************** +-- The FCIP Entity Table +-- + +fcipEntityInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipEntityInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about this FCIP device's existing instances of + FCIP entities." + REFERENCE + "RFC 3821, Section 5.4, FCIP Entity" + ::= { fcipConfig 4 } + +fcipEntityInstanceEntry OBJECT-TYPE + SYNTAX FcipEntityInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP entity table with information + about a particular FCIP entity. Once a row has been + created, it is non-volatile across agent restarts until it + is deleted." + INDEX { fcipEntityId } + ::= { fcipEntityInstanceTable 1 } + +FcipEntityInstanceEntry ::= + SEQUENCE { + fcipEntityId FcipEntityId, + fcipEntityName SnmpAdminString, + fcipEntityAddressType InetAddressType, + fcipEntityAddress InetAddress, + fcipEntityTcpConnPort InetPortNumber, + fcipEntitySeqNumWrap TruthValue, + fcipEntityPHBSupport TruthValue, + fcipEntityStatus RowStatus + } + +fcipEntityId OBJECT-TYPE + SYNTAX FcipEntityId + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The FCIP entity identifier." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipEntityInstanceEntry 1 } + +fcipEntityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively-assigned name for this FCIP entity." + ::= { fcipEntityInstanceEntry 2 } + +fcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address by which the entity is + reachable. Only address types IPv4 and IPv6 are supported." + ::= { fcipEntityInstanceEntry 3 } + +fcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the entity, if configured. The + format of this address is determined by the value of the + fcipEntityAddressType object." + ::= { fcipEntityInstanceEntry 4 } + +fcipEntityTcpConnPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A TCP port other than the FCIP Well-Known port on which the + FCIP entity listens for new TCP connection requests. It + contains the value zero(0) if the FCIP Entity only listens + on the Well-Known port." + DEFVAL { 0 } + ::= { fcipEntityInstanceEntry 5 } + +fcipEntitySeqNumWrap OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the FCIP Entity supports protection + against sequence number wrap." + REFERENCE + "The PAWS option is defined in RFC 1323." + ::= { fcipEntityInstanceEntry 6 } + +fcipEntityPHBSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the FCIP Entity supports PHB IP + quality of service (QoS)." + REFERENCE + "Per hop behavior is defined in RFC 2474, definition of the + Differentiated Services Field." + ::= { fcipEntityInstanceEntry 7 } + +fcipEntityStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + When a management station sets the status to active(1), then + the values for the objects fcipEntityName, + fcipEntityAddressType, and fcipEntityAddress should be + supplied as part of the set request. The values of the + objects fcipEntityName, fcipEntityAddressType, and + fcipEntityAddress can be changed if the row status is in + active state. The object fcipEntityTcpConnPort takes the + default value zero(0), if no value is supplied at the time + of row creation. + + Setting the status to destroy(6) deletes the specified FCIP + entity instance row from the table. It also deletes all the + rows corresponding to the specified FCIP entity from the + fcipLinkTable and fcipTcpConnTable tables." + ::= { fcipEntityInstanceEntry 8 } + + + + + + + + +-- ****************************************************************** +-- The FCIP Link Table +-- + +fcipLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about FCIP links that exist on this device." + ::= { fcipConfig 5 } + +fcipLinkEntry OBJECT-TYPE + SYNTAX FcipLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP link table containing + information about a particular FCIP link. The values of the + read-create objects in this table are persistent across + system restarts." + INDEX { fcipEntityId, fcipLinkIndex } + ::= { fcipLinkTable 1 } + +FcipLinkEntry ::= + SEQUENCE { + fcipLinkIndex Unsigned32, + fcipLinkIfIndex InterfaceIndex, + fcipLinkCost Unsigned32, + fcipLinkLocalFcipEntityMode FcipEntityMode, + fcipLinkLocalFcipEntityAddressType InetAddressType, + fcipLinkLocalFcipEntityAddress InetAddress, + fcipLinkRemFcipEntityWWN FcNameIdOrZero, + fcipLinkRemFcipEntityId FcipEntityId, + fcipLinkRemFcipEntityAddressType InetAddressType, + fcipLinkRemFcipEntityAddress InetAddress, + fcipLinkStatus RowStatus, + fcipLinkCreateTime TimeStamp +} + +fcipLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies one FCIP link + within an FCIP entity." + ::= { fcipLinkEntry 1 } + + + +fcipLinkIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the virtual interface corresponding to + the FCIP Link running over TCP/IP." + ::= { fcipLinkEntry 2 } + +fcipLinkCost OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The FSPF cost associated with this FCIP Link." + DEFVAL { 0 } + ::= { fcipLinkEntry 3 } + +fcipLinkLocalFcipEntityMode OBJECT-TYPE + SYNTAX FcipEntityMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode of the local end of the FCIP link." + ::= { fcipLinkEntry 4 } + +fcipLinkLocalFcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address contained in the corresponding + instance of fcipLinkLocalFcipEntityAddress. Only address + types IPv4 and IPv6 are supported." + ::= { fcipLinkEntry 5 } + +fcipLinkLocalFcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the local end of this FCIP Link. + The format of this object is determined by the value of the + fcipLinkLocalFcipEntityAddressType object." + ::= { fcipLinkEntry 6 } + +fcipLinkRemFcipEntityWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The World Wide Name of the remote FC Fabric Entity." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipLinkEntry 7 } + +fcipLinkRemFcipEntityId OBJECT-TYPE + SYNTAX FcipEntityId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote FCIP entity's identifier." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipLinkEntry 8 } + +fcipLinkRemFcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address contained in the corresponding + instance of fcipLinkRemFcipEntityAddress. Only address + types IPv4 and IPv6 are supported." + ::= { fcipLinkEntry 9 } + +fcipLinkRemFcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the remote end of this FCIP Link. + The format of this object is determined by the value of the + fcipLinkRemFcipEntityAddressType object." + ::= { fcipLinkEntry 10 } + +fcipLinkStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + The values of objects fcipLinkLocalFcipEntityAddressType, + fcipLinkLocalFcipEntityAddress, fcipLinkRemFcipEntityWWN, + fcipLinkRemFcipEntityId, fcipLinkRemFcipEntityAddressType, + + + + and fcipLinkRemFcipEntityAddress can be changed if the row + is in active(1) state. The object fcipLinkCost is set to + the value zero(0) if no value is supplied at the time of row + creation. + + Setting the status to destroy(6) deletes the specified FCIP + link from the table. It also deletes all rows corresponding + to the specified FCIP link from the fcipTcpConnTable table." + ::= { fcipLinkEntry 11 } + +fcipLinkCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last created." + ::= { fcipLinkEntry 12 } + + +-- ****************************************************************** +-- The TCP Connection Table +-- + +fcipTcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about existing TCP connections. Each FCIP link + within an FCIP entity manages one or more TCP connections. + The FCIP entity employs a Data Engine for each TCP + connection for handling FC frame encapsulation, + de-encapsulation, and transmission of FCIP frames on the + connection." + ::= { fcipConfig 6 } + +fcipTcpConnEntry OBJECT-TYPE + SYNTAX FcipTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP TCP Connection table containing + information about a particular TCP connection." + INDEX { fcipEntityId, + fcipLinkIndex, + fcipTcpConnLocalPort, + fcipTcpConnRemPort} + ::= { fcipTcpConnTable 1 } + + + +FcipTcpConnEntry ::= + SEQUENCE { + fcipTcpConnLocalPort InetPortNumber, + fcipTcpConnRemPort InetPortNumber, + fcipTcpConnRWSize Unsigned32, + fcipTcpConnMSS Unsigned32 +} + +fcipTcpConnLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { fcipTcpConnEntry 1 } + +fcipTcpConnRemPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { fcipTcpConnEntry 2 } + +fcipTcpConnRWSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default maximum TCP Receiver Window size for this TCP + connection." + ::= { fcipTcpConnEntry 3 } + +fcipTcpConnMSS OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP Maximum Segment Size (MSS) for this TCP connection." + ::= { fcipTcpConnEntry 4 } + + + + + + + + + + + +-- ****************************************************************** +-- The Dynamic Route Table +-- + +fcipDynamicRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipDynamicRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about dynamically discovered routing + information. The FCIP device may use the SLPv2 protocol in + conjunction with other protocols (say, FSPF) for dynamically + discovering other FCIP entities and may populate this table + with FCIP link information for each Destination Address + Identifier." + ::= { fcipConfig 7 } + +fcipDynamicRouteEntry OBJECT-TYPE + SYNTAX FcipDynamicRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Dynamic Route Table containing + information about a particular FCIP route." + INDEX { fcipEntityId, fcipDynamicRouteDID } + ::= { fcipDynamicRouteTable 1 } + +FcipDynamicRouteEntry ::= + SEQUENCE { + fcipDynamicRouteDID FcipDomainIdInOctetForm, + fcipDynamicRouteLinkIndex Unsigned32 + } + +fcipDynamicRouteDID OBJECT-TYPE + SYNTAX FcipDomainIdInOctetForm + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "8-bit ID of a Fibre Channel Domain that is reachable from + this FCIP device." + ::= { fcipDynamicRouteEntry 1 } + +fcipDynamicRouteLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FCIP Link used to reach the domain specified by the + + + + corresponding instance of fcipDynamicRouteDID. The link + identified by a value of this object is the same FCIP link + as identified by the same value of fcipLinkIndex for the + same FCIP entity." + ::= { fcipDynamicRouteEntry 2 } + + +-- ****************************************************************** +-- The Static Route Table +-- + +fcipStaticRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipStaticRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about static route entries configured by the + Network Admin. In the absence of dynamic discovery of + remote FCIP entities, the Network Manager will figure out + all remote FCIP devices that are reachable from this device + and populate this table with FCIP link information for each + Domain ID. At any time, both static and dynamic routing + can be active, and an entry in the static route table for a + given DID takes precedence over the entry in the dynamic + route table for the same Domain ID." + ::= { fcipConfig 8 } + +fcipStaticRouteEntry OBJECT-TYPE + SYNTAX FcipStaticRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Static Route Table containing + information about a particular FCIP route. The values of + the read-create objects in this table are persistent across + system restarts." + INDEX { fcipEntityId, fcipStaticRouteDID } + ::= { fcipStaticRouteTable 1 } + +FcipStaticRouteEntry ::= + SEQUENCE { + fcipStaticRouteDID FcipDomainIdInOctetForm, + fcipStaticRouteLinkIndex Unsigned32, + fcipStaticRouteStatus RowStatus + } + +fcipStaticRouteDID OBJECT-TYPE + SYNTAX FcipDomainIdInOctetForm + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "8-bit ID of a Fibre Channel Domain that is reachable from + this FCIP device." + ::= { fcipStaticRouteEntry 1 } + +fcipStaticRouteLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The FCIP Link used to reach the domain specified by the + corresponding instance of fcipStaticRouteDID. The link + identified by a value of this object is the same FCIP link + as identified by the same value of fcipLinkIndex for the + same FCIP entity." + ::= { fcipStaticRouteEntry 2 } + +fcipStaticRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + When a management station sets the status to active(1), + the values for the object fcipStaticRouteLinkIndex should be + supplied as part of the set request. + + Setting the status to destroy(6) deletes the specified FCIP + static route entry from the table." + ::= { fcipStaticRouteEntry 3 } + + +-- ****************************************************************** +-- The FCIP Discovery Domain Table +-- + +fcipDiscoveryDomainTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipDiscoveryDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about FCIP Discovery Domains. Each FCIP + Discovery Domain is associated with one or more FCIP + entities." + ::= { fcipConfig 9 } + + + +fcipDiscoveryDomainEntry OBJECT-TYPE + SYNTAX FcipDiscoveryDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Discovery Domain Table + containing information about a particular FCIP Discovery + Domain that is associated with one or more FCIP entities. + The values of the read-write object fcipDiscoveryDomainName + are persistent across system restarts." + INDEX { fcipEntityId, fcipDiscoveryDomainIndex } + ::= { fcipDiscoveryDomainTable 1 } + +FcipDiscoveryDomainEntry ::= + SEQUENCE { + fcipDiscoveryDomainIndex Unsigned32, + fcipDiscoveryDomainName SnmpAdminString + } + +fcipDiscoveryDomainIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer that uniquely identifies an FCIP Discovery Domain + associated with this FCIP entity." + ::= { fcipDiscoveryDomainEntry 1 } + +fcipDiscoveryDomainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of this FCIP Discovery Domain." + REFERENCE + "RFC 3822, Section 4.1.1, FCIP Discovery Domains" + ::= { fcipDiscoveryDomainEntry 2 } + + + + + + + + + + + + + + +-- ****************************************************************** +-- The FCIP Link Errors +-- + +fcipLinkErrorsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipLinkErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of error counters for FCIP Links. Each counter + records the number of times a particular error happened that + caused a TCP connection to close down." + REFERENCE + "RFC 3821, Section 5.2, FCIP Link" + ::= { fcipConfig 10 } + +fcipLinkErrorsEntry OBJECT-TYPE + SYNTAX FcipLinkErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Link Errors Table containing + error counters for an FCIP Link." + INDEX { fcipEntityId, fcipLinkIndex } + ::= { fcipLinkErrorsTable 1 } + +FcipLinkErrorsEntry ::= + SEQUENCE { + fcipLinkFcipLossofFcSynchs Counter32, + fcipLinkFcipEncapErrors Counter32, + fcipLinkFcipNotReceivedSfResps Counter32, + fcipLinkFcipSfRespMismatches Counter32, + fcipLinkFcipSfInvalidNonces Counter32, + fcipLinkFcipReceivedSfDuplicates Counter32, + fcipLinkFcipSfInvalidWWNs Counter32, + fcipLinkFcipBB2LkaTimeOuts Counter32, + fcipLinkFcipSntpExpiredTimeStamps Counter32, + fcipLinkTcpTooManyErrors Counter32, + fcipLinkTcpExcessiveDroppedDatagrams Counter32, + fcipLinkTcpSaParamMismatches Counter32 + } + +fcipLinkFcipLossofFcSynchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FC synchronization was lost on this FCIP + + + + Link. The last discontinuity of this counter is indicated + by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 1 } + +fcipLinkFcipEncapErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FCIP frames received with encapsulation errors + such as improper header, format, or length. The last + discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 2 } + +fcipLinkFcipNotReceivedSfResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an FCIP Special Frame Response was + expected but not received on this FCIP Link. The last + discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 3 } + +fcipLinkFcipSfRespMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frame Bytes mismatch + happened on this FCIP Link. The last discontinuity of this + counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 4 } + +fcipLinkFcipSfInvalidNonces OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frame Invalid Connection + Nonce happened on this FCIP Link. The last discontinuity + of this counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 5 } + +fcipLinkFcipReceivedSfDuplicates OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times duplicate FCIP Special Frames were + received on this FCIP Link. The last discontinuity of this + counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 6 } + +fcipLinkFcipSfInvalidWWNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frames with invalid + destination FC Fabric Entity WWN were received on this FCIP + Link. The last discontinuity of this counter is indicated + by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 7 } + +fcipLinkFcipBB2LkaTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Keep Alive Time-outs that occurred on + this FCIP Link. The last discontinuity of this counter + is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 8 } + +fcipLinkFcipSntpExpiredTimeStamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames discarded due to an expired Simple + Network Time Protocol (SNTP) timestamp on this FCIP Link. + The last discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 9 } + +fcipLinkTcpTooManyErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections that closed down on this + FCIP Link due to too many errors on the connection. The + last discontinuity of this counter is indicated by + + + + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 10 } + +fcipLinkTcpExcessiveDroppedDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections that closed down on this + FCIP Link due to an excessive number of dropped FCIP + packets. The last discontinuity of this counter is + indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 11 } + +fcipLinkTcpSaParamMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times TCP connections with Security + Association parameter mismatches were closed down on this + FCIP Link. The last discontinuity of this counter is + indicated by fcipLinkCreateTime." + REFERENCE + "RFC 3821, Section 9.4.2, TCP Connection Security + Associations (SAs)" + ::= { fcipLinkErrorsEntry 12 } + + +-- ****************************************************************** +-- Conformance Statements +-- + +fcipCompliances OBJECT IDENTIFIER ::= { fcipConformance 1 } +fcipGroups OBJECT IDENTIFIER ::= { fcipConformance 2 } + +fcipCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for FCIP MIB." + MODULE -- this module + MANDATORY-GROUPS { + fcipEntityScalarGroup, + fcipEntityInstanceGroup, + fcipLinkGroup, + fcipTcpConnGroup, + fcipDiscoveryDomainGroup, + fcipLinkErrorsGroup + + + + } + + GROUP fcipDynamicRouteGroup + DESCRIPTION + "This group is mandatory only for systems that do not + have these objects in any other FC MIB. It may be + implemented even in that case for convenience." + + GROUP fcipStaticRouteGroup + DESCRIPTION + "This group is mandatory only for systems that do not + have these objects in any other FC MIB. It may be + implemented even in that case for convenience." + + OBJECT fcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing FCIP entities." + + OBJECT fcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Size of FCIP entity's IP address depends on address type. + FCIP entity address size is four if the IP address is + IPv4 and sixteen if the IP address type is IPv6." + + OBJECT fcipLinkLocalFcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing the local FCIP entities." + + OBJECT fcipLinkLocalFcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Size of FCIP entity's IP address depends on address type. + FCIP entity address size is four if the IP address is + IPv4 and sixteen if the IP address type is IPv6." + + OBJECT fcipLinkRemFcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing the remote FCIP entities." + + OBJECT fcipLinkRemFcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "Size of FCIP entity's IP address depends on the address + type. FCIP entity address size is four if the IP address + is IPv4 and sixteen if the IP address type is IPv6." + + ::= { fcipCompliances 1 } + +fcipEntityScalarGroup OBJECT-GROUP + OBJECTS { fcipDynIpConfType, + fcipDeviceWWN, + fcipEntitySACKOption + } + STATUS current + DESCRIPTION + "Collection of scalar objects applicable to all FCIP + instances." +::= { fcipGroups 1 } + +fcipEntityInstanceGroup OBJECT-GROUP + OBJECTS { + fcipEntityName, + fcipEntityAddressType, + fcipEntityAddress, + fcipEntityTcpConnPort, + fcipEntitySeqNumWrap, + fcipEntityPHBSupport, + fcipEntityStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + instances." +::= { fcipGroups 2 } + +fcipLinkGroup OBJECT-GROUP + OBJECTS { + fcipLinkIfIndex, + fcipLinkCost, + fcipLinkLocalFcipEntityMode, + fcipLinkLocalFcipEntityAddressType, + fcipLinkLocalFcipEntityAddress, + fcipLinkRemFcipEntityWWN, + fcipLinkRemFcipEntityId, + fcipLinkRemFcipEntityAddressType, + fcipLinkRemFcipEntityAddress, + fcipLinkStatus, + fcipLinkCreateTime + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + Links." +::= { fcipGroups 3 } + +fcipTcpConnGroup OBJECT-GROUP + OBJECTS { + fcipTcpConnRWSize, + fcipTcpConnMSS + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + TCP connections." +::= { fcipGroups 4 } + +fcipDiscoveryDomainGroup OBJECT-GROUP + OBJECTS { + fcipDiscoveryDomainName + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + Discovery Domains." +::= { fcipGroups 5 } + +fcipLinkErrorsGroup OBJECT-GROUP + OBJECTS { + fcipLinkFcipLossofFcSynchs, + fcipLinkFcipEncapErrors, + fcipLinkFcipNotReceivedSfResps, + fcipLinkFcipSfRespMismatches, + fcipLinkFcipSfInvalidNonces, + fcipLinkFcipReceivedSfDuplicates, + fcipLinkFcipSfInvalidWWNs, + fcipLinkFcipBB2LkaTimeOuts, + fcipLinkFcipSntpExpiredTimeStamps, + fcipLinkTcpTooManyErrors, + fcipLinkTcpExcessiveDroppedDatagrams, + fcipLinkTcpSaParamMismatches + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + link errors." +::= { fcipGroups 6 } + + + + +fcipDynamicRouteGroup OBJECT-GROUP + OBJECTS { + fcipDynamicRouteLinkIndex + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + dynamic routes." +::= { fcipGroups 7 } + +fcipStaticRouteGroup OBJECT-GROUP + OBJECTS { + fcipStaticRouteLinkIndex, + fcipStaticRouteStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + static routes." +::= { fcipGroups 8 } + +END diff --git a/mibs/ietf/FDDI-SMT73-MIB b/mibs/ietf/FDDI-SMT73-MIB new file mode 100644 index 0000000..6a9e216 --- /dev/null +++ b/mibs/ietf/FDDI-SMT73-MIB @@ -0,0 +1,2129 @@ +FDDI-SMT73-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [7]. + + +-- this is the FDDI MIB module + +fddi OBJECT IDENTIFIER ::= { transmission 15 } +fddimib OBJECT IDENTIFIER ::= { fddi 73 } + + +-- textual conventions + +FddiTimeNano ::= INTEGER (0..2147483647) +-- This data type specifies 1 nanosecond units as +-- an integer value. +-- +-- NOTE: The encoding is normal integer representation, not +-- two's complement. Since this type is used for variables +-- which are encoded as TimerTwosComplement in the ANSI +-- specification, two operations need to be performed on such +-- variables to convert from ANSI form to SNMP form: +-- +-- 1) Convert from two's complement to normal integer +-- representation +-- 2) Multiply by 80 to convert from 80 nsec to 1 nsec units +-- +-- No resolution is lost. Moreover, the objects for which +-- this data type is used effectively do not lose any range +-- due to the lower maximum value since they do not require +-- the full range. +-- +-- Example: If fddimibMACTReq had a value of 8 ms, it would +-- be stored in ANSI TimerTwosComplement format as 0xFFFE7960 +-- [8 ms is 100000 in 80 nsec units, which is then converted +-- to two's complement] but be reported as 8000000 in SNMP +-- since it is encoded here as FddiTimeNano. + +FddiTimeMilli ::= INTEGER (0..2147483647) +-- This data type is used for some FDDI timers. It specifies +-- time in 1 millisecond units, in normal integer +-- representation. + +FddiResourceId ::= INTEGER (0..65535) +-- This data type is used to refer to an instance of a MAC, +-- PORT, or PATH Resource ID. Indexing begins +-- at 1. Zero is used to indicate the absence of a resource. + +FddiSMTStationIdType ::= OCTET STRING (SIZE (8)) +-- The unique identifier for the FDDI station. This is a +-- string of 8 octets, represented as X' yy yy xx xx xx xx +-- xx xx' with the low order 6 octet (xx) from a unique IEEE +-- assigned address. The high order two bits of the IEEE +-- address, the group address bit and the administration bit +-- (Universal/Local) bit should both be zero. The first two +-- octets, the yy octets, are implementor-defined. +-- +-- The representation of the address portion of the station id +-- is in the IEEE (ANSI/IEEE P802.1A) canonical notation for +-- 48 bit addresses. The canonical form is a 6-octet string +-- where the first octet contains the first 8 bits of the +-- address, with the I/G(Individual/Group) address bit as the +-- least significant bit and the U/L (Universal/Local) bit +-- as the next more significant bit, and so on. Note that +-- addresses in the ANSI FDDI standard SMT frames are +-- represented in FDDI MAC order. + +FddiMACLongAddressType ::= OCTET STRING (SIZE (6)) +-- The representation of long MAC addresses as management +-- values is in the IEEE (ANSI/IEEE P802.1A) canonical +-- notation for 48 bit addresses. The canonical form is a +-- 6-octet string where the first octet contains the first 8 +-- bits of the address, with the I/G (Individual/Group) +-- address bit as the least significant bit and the U/L +-- (Universal/Local) bit as the next more significant bit, +-- and so on. Note that the addresses in the SMT frames are +-- represented in FDDI MAC order. + + +-- groups in the FDDI MIB module + +fddimibSMT OBJECT IDENTIFIER ::= { fddimib 1 } + +fddimibMAC OBJECT IDENTIFIER ::= { fddimib 2 } + +fddimibMACCounters OBJECT IDENTIFIER ::= { fddimib 3 } +fddimibPATH OBJECT IDENTIFIER ::= { fddimib 4 } + +fddimibPORT OBJECT IDENTIFIER ::= { fddimib 5 } + + +-- the SMT group +-- Implementation of the SMT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibSMTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of SMT implementations (regardless of + their current state) on this network management + application entity. The value for this variable + must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { fddimibSMT 1 } + + +-- the SMT table + +fddimibSMTTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of SMT entries. The number of entries + shall not exceed the value of fddimibSMTNumber." + ::= { fddimibSMT 2 } + +fddimibSMTEntry OBJECT-TYPE + SYNTAX FddimibSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An SMT entry containing information common to a + given SMT." + INDEX { fddimibSMTIndex } + ::= { fddimibSMTTable 1 } + +FddimibSMTEntry ::= + SEQUENCE { + fddimibSMTIndex + INTEGER, + fddimibSMTStationId + FddiSMTStationIdType, + fddimibSMTOpVersionId + INTEGER, + fddimibSMTHiVersionId + INTEGER, + fddimibSMTLoVersionId + INTEGER, + fddimibSMTUserData + OCTET STRING, + fddimibSMTMIBVersionId + INTEGER, + fddimibSMTMACCts + INTEGER, + fddimibSMTNonMasterCts + INTEGER, + fddimibSMTMasterCts + INTEGER, + fddimibSMTAvailablePaths + INTEGER, + fddimibSMTConfigCapabilities + INTEGER, + fddimibSMTConfigPolicy + INTEGER, + fddimibSMTConnectionPolicy + INTEGER, + fddimibSMTTNotify + INTEGER, + fddimibSMTStatRptPolicy + INTEGER, + fddimibSMTTraceMaxExpiration + FddiTimeMilli, + fddimibSMTBypassPresent + INTEGER, + fddimibSMTECMState + INTEGER, + fddimibSMTCFState + INTEGER, + fddimibSMTRemoteDisconnectFlag + INTEGER, + fddimibSMTStationStatus + INTEGER, + fddimibSMTPeerWrapFlag + INTEGER, + fddimibSMTTimeStamp + FddiTimeMilli, + fddimibSMTTransitionTimeStamp + FddiTimeMilli, + fddimibSMTStationAction + INTEGER + } + +fddimibSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each SMT. The value for each + SMT must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { fddimibSMTEntry 1 } + +fddimibSMTStationId OBJECT-TYPE + SYNTAX FddiSMTStationIdType -- OCTET STRING (SIZE (8)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Used to uniquely identify an FDDI station." + REFERENCE + "ANSI { fddiSMT 11 }" + ::= { fddimibSMTEntry 2 } + +fddimibSMTOpVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The version that this station is using for its + operation (refer to ANSI 7.1.2.2). The value of + this variable is 2 for this SMT revision." + REFERENCE + "ANSI { fddiSMT 13 }" + ::= { fddimibSMTEntry 3 } + +fddimibSMTHiVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The highest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 14 }" + ::= { fddimibSMTEntry 4 } + +fddimibSMTLoVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The lowest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 15 }" + ::= { fddimibSMTEntry 5 } + +fddimibSMTUserData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable contains 32 octets of user defined + information. The information shall be an ASCII + string." + REFERENCE + "ANSI { fddiSMT 17 }" + ::= { fddimibSMTEntry 6 } + +fddimibSMTMIBVersionId OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The version of the FDDI MIB of this station. The + value of this variable is 1 for this SMT + revision." + REFERENCE + "ANSI { fddiSMT 18 }" + ::= { fddimibSMTEntry 7 } + +fddimibSMTMACCts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of MACs in this station or + concentrator." + REFERENCE + "ANSI { fddiSMT 21 }" + ::= { fddimibSMTEntry 8 } + +fddimibSMTNonMasterCts OBJECT-TYPE + SYNTAX INTEGER (0..2) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this variable is the number of A, B, + and S ports in this station or concentrator." + REFERENCE + "ANSI { fddiSMT 22 }" + ::= { fddimibSMTEntry 9 } + +fddimibSMTMasterCts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of M Ports in a node. If the node is + not a concentrator, the value of the variable is + zero." + REFERENCE + "ANSI { fddiSMT 23 }" + ::= { fddimibSMTEntry 10 } + +fddimibSMTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + in the station. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this node has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + + For example, a station having Primary and Local + PATHs available would have a value of 5 (2**0 + + 2**2)." + REFERENCE + "ANSI { fddiSMT 24 }" + ::= { fddimibSMTEntry 11 } + +fddimibSMTConfigCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration + capabilities of a node. The 'Hold Available' bit + indicates the support of the optional Hold + Function, which is controlled by + fddiSMTConfigPolicy. The 'CF-Wrap-AB' bit + indicates that the station has the capability of + performing a wrap_ab (refer to ANSI SMT 9.7.2.2). + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + holdAvailable 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 25 }" + ::= { fddimibSMTEntry 12 } + +fddimibSMTConfigPolicy OBJECT-TYPE + SYNTAX INTEGER (0..1) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration policies + currently desired in a node. 'Hold' is one of the + terms used for the Hold Flag, an optional ECM flag + used to enable the optional Hold policy. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + configurationhold 0 " + REFERENCE + "ANSI { fddiSMT 26 }" + ::= { fddimibSMTEntry 13 } + +fddimibSMTConnectionPolicy OBJECT-TYPE + SYNTAX INTEGER (32768..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value representing the connection policies in + effect in a node. A station sets the corresponding + bit for each of the connection types that it + rejects. The letter designations, X and Y, in the + 'rejectX-Y' names have the following significance: + X represents the PC-Type of the local PORT and Y + represents the PC_Type of the adjacent PORT + (PC_Neighbor). The evaluation of Connection- + Policy (PC-Type, PC-Neighbor) is done to determine + the setting of T- Val(3) in the PC-Signalling + sequence (refer to ANSI 9.6.3). Note that Bit 15, + (rejectM-M), is always set and cannot be cleared. + + The value is a sum. This value initially takes + the value zero, then for each of the connection + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + rejectA-A 0 + rejectA-B 1 + rejectA-S 2 + rejectA-M 3 + rejectB-A 4 + rejectB-B 5 + rejectB-S 6 + rejectB-M 7 + rejectS-A 8 + rejectS-B 9 + rejectS-S 10 + rejectS-M 11 + rejectM-A 12 + rejectM-B 13 + rejectM-S 14 + rejectM-M 15 " + REFERENCE + "ANSI { fddiSMT 27 }" + ::= { fddimibSMTEntry 14 } + +fddimibSMTTNotify OBJECT-TYPE + SYNTAX INTEGER (2..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The timer, expressed in seconds, used in the + Neighbor Notification protocol. It has a range of + 2 seconds to 30 seconds, and its default value is + 30 seconds (refer to ANSI SMT 8.2)." + REFERENCE + "ANSI { fddiSMT 29 }" + ::= { fddimibSMTEntry 15 } + +fddimibSMTStatRptPolicy OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If true, indicates that the node will generate + Status Reporting Frames for its implemented events + and conditions. It has an initial value of true. + This variable determines the value of the + SR_Enable Flag (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 30 }" + ::= { fddimibSMTEntry 16 } + +fddimibSMTTraceMaxExpiration OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Reference Trace_Max (refer to ANSI SMT + 9.4.4.2.2)." + REFERENCE + "ANSI { fddiSMT 31 }" + ::= { fddimibSMTEntry 17 } + +fddimibSMTBypassPresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating if the station has a bypass on + its AB port pair." + REFERENCE + "ANSI { fddiSMT 34 }" + ::= { fddimibSMTEntry 18 } + +fddimibSMTECMState OBJECT-TYPE + SYNTAX INTEGER { + ec0(1), -- Out + ec1(2), -- In + ec2(3), -- Trace + ec3(4), -- Leave + ec4(5), -- Path_Test + ec5(6), -- Insert + ec6(7), -- Check + ec7(8) -- Deinsert + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the ECM state + machine (refer to ANSI SMT 9.5.2)." + REFERENCE + "ANSI { fddiSMT 41 }" + ::= { fddimibSMTEntry 19 } + +fddimibSMTCFState OBJECT-TYPE + SYNTAX INTEGER { + cf0(1), -- isolated + cf1(2), -- local_a + cf2(3), -- local_b + cf3(4), -- local_ab + cf4(5), -- local_s + cf5(6), -- wrap_a + cf6(7), -- wrap_b + cf7(8), -- wrap_ab + cf8(9), -- wrap_s + cf9(10), -- c_wrap_a + cf10(11), -- c_wrap_b + cf11(12), -- c_wrap_s + cf12(13) -- thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The attachment configuration for the station or + concentrator (refer to ANSI SMT 9.7.2.2)." + REFERENCE + "ANSI { fddiSMT 42 }" + ::= { fddimibSMTEntry 20 } + +fddimibSMTRemoteDisconnectFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating that the station was remotely + disconnected from the network as a result of + receiving an fddiSMTAction, disconnect (refer to + ANSI SMT 6.4.5.3) in a Parameter Management Frame. + A station requires a Connect Action to rejoin and + clear the flag (refer to ANSI SMT 6.4.5.2)." + REFERENCE + "ANSI { fddiSMT 44 }" + ::= { fddimibSMTEntry 21 } + +fddimibSMTStationStatus OBJECT-TYPE + SYNTAX INTEGER { concatenated(1), separated(2), thru(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current status of the primary and secondary + paths within this station." + REFERENCE + "ANSI { fddiSMT 45 }" + ::= { fddimibSMTEntry 22 } + +fddimibSMTPeerWrapFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of the + PeerWrapFlag in CFM (refer to ANSI SMT + 9.7.2.4.4)." + REFERENCE + "ANSI { fddiSMT 46 }" + ::= { fddimibSMTEntry 23 } + +fddimibSMTTimeStamp OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of TimeStamp + (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 51 }" + ::= { fddimibSMTEntry 24 } + +fddimibSMTTransitionTimeStamp OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of + TransitionTimeStamp (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 52 }" + ::= { fddimibSMTEntry 25 } + +fddimibSMTStationAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + connect(2), + disconnect(3), + path-Test(4), + self-Test(5), + disable-a(6), + disable-b(7), + disable-m(8) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + other(1): Results in an appropriate error. + connect(2): Generates a Connect signal to ECM + to begin a connection sequence. See ANSI + Ref 9.4.2. + disconnect(3): Generates a Disconnect signal + to ECM. see ANSI Ref 9.4.2. + path-Test(4): Initiates a station Path_Test. + The Path_Test variable (see ANSI Ref + 9.4.1) is set to 'Testing'. The results + of this action are not specified in this + standard. + self-Test(5): Initiates a station Self_Test. + The results of this action are not + specified in this standard. + disable-a(6): Causes a PC_Disable on the A + port if the A port mode is peer. + disable-b(7): Causes a PC_Disable on the B + port if the B port mode is peer. + disable-m(8): Causes a PC_Disable on all M + ports. + + Attempts to set this object to all other values + results in an appropriate error. The result of + setting this variable to path-Test(4) or self- + Test(5) is implementation-specific." + REFERENCE + "ANSI { fddiSMT 60 }" + ::= { fddimibSMTEntry 26 } + + +-- the MAC group +-- Implementation of the MAC Group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibMACNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibMAC 1 } + + +-- the MAC table + +fddimibMACTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC entries. The number of entries + shall not exceed the value of fddimibMACNumber." + ::= { fddimibMAC 2 } + +fddimibMACEntry OBJECT-TYPE + SYNTAX FddimibMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC entry containing information common to a + given MAC." + INDEX { fddimibMACSMTIndex, fddimibMACIndex } + ::= { fddimibMACTable 1 } + +FddimibMACEntry ::= + SEQUENCE { + fddimibMACSMTIndex + INTEGER, + fddimibMACIndex + INTEGER, + fddimibMACIfIndex + INTEGER, + fddimibMACFrameStatusFunctions + INTEGER, + fddimibMACTMaxCapability + FddiTimeNano, + fddimibMACTVXCapability + FddiTimeNano, + fddimibMACAvailablePaths + INTEGER, + fddimibMACCurrentPath + INTEGER, + fddimibMACUpstreamNbr + FddiMACLongAddressType, + fddimibMACDownstreamNbr + FddiMACLongAddressType, + fddimibMACOldUpstreamNbr + FddiMACLongAddressType, + fddimibMACOldDownstreamNbr + FddiMACLongAddressType, + fddimibMACDupAddressTest + INTEGER, + fddimibMACRequestedPaths + INTEGER, + fddimibMACDownstreamPORTType + INTEGER, + fddimibMACSMTAddress + FddiMACLongAddressType, + fddimibMACTReq + FddiTimeNano, + fddimibMACTNeg + FddiTimeNano, + fddimibMACTMax + FddiTimeNano, + fddimibMACTvxValue + FddiTimeNano, + fddimibMACFrameCts + Counter, + fddimibMACCopiedCts + Counter, + fddimibMACTransmitCts + Counter, + fddimibMACErrorCts + Counter, + fddimibMACLostCts + Counter, + fddimibMACFrameErrorThreshold + INTEGER, + fddimibMACFrameErrorRatio + INTEGER, + fddimibMACRMTState + INTEGER, + fddimibMACDaFlag + INTEGER, + fddimibMACUnaDaFlag + INTEGER, + fddimibMACFrameErrorFlag + INTEGER, + fddimibMACMAUnitdataAvailable + INTEGER, + fddimibMACHardwarePresent + INTEGER, + fddimibMACMAUnitdataEnable + INTEGER + } + + +fddimibMACSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + MAC." + ::= { fddimibMACEntry 1 } + +fddimibMACIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Index variable for uniquely identifying the MAC + object instances, which is the same as the + corresponding resource index in SMT." + REFERENCE + "ANSI { fddiMAC 34 }" + ::= { fddimibMACEntry 2 } + +fddimibMACIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the MIB-II ifIndex corresponding to + this MAC. If none is applicable, 0 is returned." + REFERENCE + "MIB-II" + ::= { fddimibMACEntry 3 } + +fddimibMACFrameStatusFunctions OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC's optional Frame Status + processing functions. + + The value is a sum. This value initially takes + the value zero, then for each function present, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + function Power + fs-repeating 0 + fs-setting 1 + fs-clearing 2 " + REFERENCE + "ANSI { fddiMAC 11 }" + ::= { fddimibMACEntry 4 } + +fddimibMACTMaxCapability OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the maximum time value of fddiMACTMax + that this MAC can support." + REFERENCE + "ANSI { fddiMAC 13 }" + ::= { fddimibMACEntry 5 } + +fddimibMACTVXCapability OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the maximum time value of + fddiMACTvxValue that this MAC can support." + REFERENCE + "ANSI { fddiMAC 14 }" + ::= { fddimibMACEntry 6 } + +fddimibMACAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the paths available for this MAC (refer + to ANSI SMT 9.7.7). + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this MAC has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiMAC 22 }" + ::= { fddimibMACEntry 7 } + +fddimibMACCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + isolated(1), + local(2), + secondary(3), + primary(4), + concatenated(5), + thru(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Path into which this MAC is + currently inserted (refer to ANSI 9.7.7)." + REFERENCE + "ANSI { fddiMAC 23 }" + ::= { fddimibMACEntry 8 } + +fddimibMACUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's upstream neighbor's long individual MAC + address. It has an initial value of the SMT- + Unknown-MAC Address and is only modified as + specified by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 24 }" + ::= { fddimibMACEntry 9 } + +fddimibMACDownstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's downstream neighbor's long individual + MAC address. It has an initial value of the SMT- + Unknown-MAC Address and is only modified as + specified by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 25 }" + ::= { fddimibMACEntry 10 } + +fddimibMACOldUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's upstream + neighbor's long individual MAC address. It has an + initial value of the SMT-Unknown- MAC Address and + is only modified as specified by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 26 }" + ::= { fddimibMACEntry 11 } + +fddimibMACOldDownstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's downstream + neighbor's long individual MAC address. It has an + initial value of the SMT- Unknown-MAC Address and + is only modified as specified by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 27 }" + ::= { fddimibMACEntry 12 } + +fddimibMACDupAddressTest OBJECT-TYPE + SYNTAX INTEGER { none(1), pass(2), fail(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Duplicate Address Test flag, Dup_Addr_Test + (refer to ANSI 8.2)." + REFERENCE + "ANSI { fddiMAC 29 }" + ::= { fddimibMACEntry 13 } + +fddimibMACRequestedPaths OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "List of permitted Paths which specifies the + Path(s) into which the MAC may be inserted (refer + to ansi SMT 9.7). + + The value is a sum which represents the individual + paths that are desired. This value initially + takes the value zero, then for each type of PATH + that this node is, 2 raised to a power is added to + the sum. The powers are according to the + following table: + + Path Power + local 0 + secondary-alternate 1 + primary-alternate 2 + concatenated-alternate 3 + secondary-preferred 4 + primary-preferred 5 + concatenated-preferred 6 + thru 7 " + REFERENCE + "ANSI { fddiMAC 32 }" + ::= { fddimibMACEntry 14 } + +fddimibMACDownstreamPORTType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the PC-Type of the first port that is + downstream of this MAC (the exit port)." + REFERENCE + "ANSI { fddiMAC 33 }" + ::= { fddimibMACEntry 15 } + +fddimibMACSMTAddress OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The 48-bit individual address of the MAC used for + SMT frames." + REFERENCE + "ANSI { fddiMAC 41 }" + ::= { fddimibMACEntry 16 } + +fddimibMACTReq OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the T_Req_value passed to the + MAC. Without having detected a duplicate, the + time value of this variable shall assume the + maximum supported time value which is less than or + equal to the time value of fddiPATHMaxT-Req. When + a MAC has an address detected as a duplicate, it + may use a time value for this variable greater + than the time value of fddiPATHTMaxLowerBound. A + station shall cause claim when the new T_Req may + cause the value of T_Neg to change in the claim + process, (i.e., time value new T_Req < T_Neg, or + old T_Req = T_Neg)." + REFERENCE + "ANSI { fddiMAC 51 }" + ::= { fddimibMACEntry 17 } + +fddimibMACTNeg OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "It is reported as a FddiTimeNano number." + REFERENCE + "ANSI { fddiMAC 52 }" + ::= { fddimibMACEntry 18 } + +fddimibMACTMax OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the T_Max_value passed to the + MAC. The time value of this variable shall assume + the minimum suported time value which is greater + than or equal to the time value of fddiPATHT- + MaxLowerBound" + REFERENCE + "ANSI { fddiMAC 53 }" + ::= { fddimibMACEntry 19 } + +fddimibMACTvxValue OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the TVX_value passed to the MAC. + The time value of this variable shall assume the + minimum suported time value which is greater than + or equal to the time value of + fddiPATHTVXLowerBound." + REFERENCE + "ANSI { fddiMAC 54 }" + ::= { fddimibMACEntry 20 } + +fddimibMACFrameCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of frames received by this + MAC (refer to ANSI MAC 7.5.1)." + REFERENCE + "ANSI { fddiMAC 71 }" + ::= { fddimibMACEntry 21 } + +fddimibMACCopiedCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames addressed to (A bit set) and + successfully copied into the station's receive + buffers (C bit set) by this MAC (refer to ANSI MAC + 7.5). Note that this count does not include MAC + frames." + REFERENCE + "ANSI { fddiMAC 72 }" + ::= { fddimibMACEntry 22 } + +fddimibMACTransmitCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames transmitted by this MAC + (refer to ANSI MAC 7.5). Note that this count + does not include MAC frames." + REFERENCE + "ANSI { fddiMAC 73 }" + ::= { fddimibMACEntry 23 } + +fddimibMACErrorCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of frames that were + detected in error by this MAC that had not been + detected in error by another MAC (refer to ANSI + MAC 7.5.2)." + REFERENCE + "ANSI { fddiMAC 81 }" + ::= { fddimibMACEntry 24 } + +fddimibMACLostCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of instances that this MAC + detected a format error during frame reception + such that the frame was stripped (refer to ANSI + MAC 7.5.3)." + REFERENCE + "ANSI { fddiMAC 82 }" + ::= { fddimibMACEntry 25 } + +fddimibMACFrameErrorThreshold OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC Condition + report (see ANSI 8.3.1.1) shall be generated. + Stations not supporting variable thresholds shall + have a value of 0 and a range of (0..0)." + REFERENCE + "ANSI { fddiMAC 95 }" + ::= { fddimibMACEntry 26 } + +fddimibMACFrameErrorRatio OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the value of the ratio, + + ((delta fddiMACLostCts + delta fddiMACErrorCts) / + (delta fddiMACFrameCts + delta fddiMACLostCts )) + * 2**16 " + REFERENCE + "ANSI { fddiMAC 96 }" + ::= { fddimibMACEntry 27 } + +fddimibMACRMTState OBJECT-TYPE + SYNTAX INTEGER { + rm0(1), -- Isolated + rm1(2), -- Non_Op + rm2(3), -- Ring_Op + rm3(4), -- Detect + rm4(5), -- Non_Op_Dup + rm5(6), -- Ring_Op_Dup + rm6(7), -- Directed + rm7(8) -- Trace + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the RMT State + Machine (refer to ANSI 10.3.2)." + REFERENCE + "ANSI { fddiMAC 111 }" + ::= { fddimibMACEntry 28 } + +fddimibMACDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The RMT flag Duplicate Address Flag, DA_Flag + (refer to ANSI 10.2.1.2)." + REFERENCE + "ANSI { fddiMAC 112 }" + ::= { fddimibMACEntry 29 } + +fddimibMACUnaDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag, UNDA_Flag (refer to ANSI 8.2.2.1), set + when the upstream neighbor reports a duplicate + address condition. Cleared when the condition + clears." + REFERENCE + "ANSI { fddiMAC 113 }" + ::= { fddimibMACEntry 30 } + +fddimibMACFrameErrorFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC Frame Error Condition is + present when set. Cleared when the condition + clears and on station initialization." + REFERENCE + "ANSI { fddiMAC 114 }" + ::= { fddimibMACEntry 31 } + +fddimibMACMAUnitdataAvailable OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable shall take on the value of the + MAC_Avail flag defined in RMT." + REFERENCE + "ANSI { fddiMAC 116 }" + ::= { fddimibMACEntry 32 } + +fddimibMACHardwarePresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the presence of + underlying hardware support for this MAC object. + If the value of this object is false(2), the + reporting of the objects in this entry may be + handled in an implementation-specific manner." + REFERENCE + "ANSI { fddiMAC 117 }" + ::= { fddimibMACEntry 33 } + +fddimibMACMAUnitdataEnable OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable determines the value of the + MA_UNITDATA_Enable flag in RMT. The default and + initial value of this flag is true(1)." + REFERENCE + "ANSI { fddiMAC 118 }" + ::= { fddimibMACEntry 34 } + + +-- the Enhanced MAC Counters group +-- Implementation of this Group is optional, but systems +-- claiming support must implement all variables in this +-- group + + +-- the MAC Counters table + +fddimibMACCountersTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibMACCountersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC Counters entries. The number of + entries shall not exceed the value of + fddimibMACNumber." + ::= { fddimibMACCounters 1 } + +fddimibMACCountersEntry OBJECT-TYPE + SYNTAX FddimibMACCountersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC Counters entry containing information + common to a given MAC." + INDEX { fddimibMACSMTIndex, fddimibMACIndex } + ::= { fddimibMACCountersTable 1 } + +FddimibMACCountersEntry ::= + SEQUENCE { + fddimibMACTokenCts + Counter, + fddimibMACTvxExpiredCts + Counter, + fddimibMACNotCopiedCts + Counter, + fddimibMACLateCts + Counter, + fddimibMACRingOpCts + Counter, + fddimibMACNotCopiedRatio + INTEGER, + fddimibMACNotCopiedFlag + INTEGER, + fddimibMACNotCopiedThreshold + INTEGER + } + +fddimibMACTokenCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of times the station has received a + token (total of non-restricted and restricted) on + this MAC (see ANSI MAC 7.4). This count is + valuable for determination of network load." + REFERENCE + "ANSI { fddiMAC 74 }" + ::= { fddimibMACCountersEntry 1 } + +fddimibMACTvxExpiredCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of times that TVX has expired." + REFERENCE + "ANSI { fddiMAC 83 }" + ::= { fddimibMACCountersEntry 2 } + +fddimibMACNotCopiedCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames that were addressed to this + MAC but were not copied into its receive buffers + (see ANSI MAC 7.5). For example, this might occur + due to local buffer congestion. Because of + implementation considerations, this count may not + match the actual number of frames not copied. It + is not a requirement that this count be exact. + Note that this count does not include MAC frames." + REFERENCE + "ANSI { fddiMAC 84 }" + ::= { fddimibMACCountersEntry 3 } + +fddimibMACLateCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of TRT expirations since this MAC was + reset or a token was received (refer to ANSI MAC + 7.4.5)." + REFERENCE + "ANSI { fddiMAC 85 }" + ::= { fddimibMACCountersEntry 4 } + +fddimibMACRingOpCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the number of times the ring has + entered the 'Ring_Operational' state from the + 'Ring Not Operational' state. This count is + updated when a SM_MA_STATUS.Indication of a change + in the Ring_Operational status occurs (refer to + ANSI 6.1.4). Because of implementation + considerations, this count may be less than the + actual RingOp_Ct. It is not a requirement that + this count be exact." + REFERENCE + "ANSI { fddiMAC 86 }" + ::= { fddimibMACCountersEntry 5 } + +fddimibMACNotCopiedRatio OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the value of the ratio: + + (delta fddiMACNotCopiedCts / + (delta fddiMACCopiedCts + + delta fddiMACNotCopiedCts )) * 2**16 " + REFERENCE + "ANSI { fddiMAC 105 }" + ::= { fddimibMACCountersEntry 6 } + +fddimibMACNotCopiedFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates that the Not Copied condition is + present when read as true(1). Set to false(2) + when the condition clears and on station + initialization." + REFERENCE + "ANSI { fddiMAC 115 }" + ::= { fddimibMACCountersEntry 7 } + +fddimibMACNotCopiedThreshold OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC condition + report shall be generated. Stations not + supporting variable thresholds shall have a value + of 0 and a range of (0..0)." + REFERENCE + "ANSI { fddiMAC 103 }" + ::= { fddimibMACCountersEntry 8 } + + +-- the PATH group +-- Implementation of the PATH group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibPATHNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PATHs possible (across all + SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibPATH 1 } + + +-- the PATH table + +fddimibPATHTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPATHEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PATH entries. The number of entries + shall not exceed the value of fddimibPATHNumber." + ::= { fddimibPATH 2 } + +fddimibPATHEntry OBJECT-TYPE + SYNTAX FddimibPATHEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PATH entry containing information common to a + given PATH." + INDEX { fddimibPATHSMTIndex, fddimibPATHIndex } + ::= { fddimibPATHTable 1 } + +FddimibPATHEntry ::= + SEQUENCE { + fddimibPATHSMTIndex + INTEGER, + fddimibPATHIndex + INTEGER, + fddimibPATHTVXLowerBound + FddiTimeNano, + fddimibPATHTMaxLowerBound + FddiTimeNano, + fddimibPATHMaxTReq + FddiTimeNano + } + +fddimibPATHSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PATH." + ::= { fddimibPATHEntry 1 } + + +fddimibPATHIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Index variable for uniquely identifying the + primary, secondary and local PATH object + instances. Local PATH object instances are + represented with integer values 3 to 255." + REFERENCE + "ANSI { fddiPATH 11 }" + ::= { fddimibPATHEntry 2 } + +fddimibPATHTVXLowerBound OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the minimum time value of + fddiMACTvxValue that shall be used by any MAC that + is configured in this path. The operational value + of fddiMACTvxValue is managed by settting this + variable. This variable has the time value range + of: + + 0 < fddimibPATHTVXLowerBound < fddimibPATHMaxTReq + Changes to this variable shall either satisfy the + time value relationship: + + fddimibPATHTVXLowerBound <= + fddimibMACTVXCapability + + of each of the MACs currently on the path, or be + considered out of range. The initial value of + fddimibPATHTVXLowerBound shall be 2500 nsec (2.5 + ms)." + REFERENCE + "ANSI { fddiPATH 21 }" + ::= { fddimibPATHEntry 3 } + +fddimibPATHTMaxLowerBound OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the minimum time value of fddiMACTMax + that shall be used by any MAC that is configured + in this path. The operational value of + fddiMACTMax is managed by setting this variable. + This variable has the time value range of: + + fddimibPATHMaxTReq <= fddimibPATHTMaxLowerBound + + and an absolute time value range of: + + 10000nsec (10 msec) <= fddimibPATHTMaxLowerBound + + Changes to this variable shall either satisfy the + time value relationship: + + fddimibPATHTMaxLowerBound < + fddimibMACTMaxCapability + + of each of the MACs currently on the path, or be + considered out of range. The initial value of + fddimibPATHTMaxLowerBound shall be 165000 nsec + (165 msec)." + REFERENCE + "ANSI { fddiPATH 22 }" + ::= { fddimibPATHEntry 4 } + +fddimibPATHMaxTReq OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the maximum time value of fddiMACT-Req + that shall be used by any MAC that is configured + in this path. The operational value of fddiMACT- + Req is managed by setting this variable. This + variable has the time value range of: + + fddimibPATHTVXLowerBound < fddimibPATHMaxTReq <= + fddimibPATHTMaxLowerBound. + + The default value of fddimibPATHMaxTReq is 165000 + nsec (165 msec)." + REFERENCE + "ANSI { fddiPATH 23 }" + ::= { fddimibPATHEntry 5 } + +-- the PATH Configuration table + +fddimibPATHConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPATHConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of Path configuration entries. This + table lists all the resources that may be in this + Path." + REFERENCE + "ANSI { fddiPATH 18 }" + ::= { fddimibPATH 3 } + +fddimibPATHConfigEntry OBJECT-TYPE + SYNTAX FddimibPATHConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of objects containing information + for a given PATH Configuration entry." + INDEX { fddimibPATHConfigSMTIndex, + fddimibPATHConfigPATHIndex, + fddimibPATHConfigTokenOrder } + ::= { fddimibPATHConfigTable 1 } + +FddimibPATHConfigEntry ::= + SEQUENCE { + fddimibPATHConfigSMTIndex + INTEGER, + fddimibPATHConfigPATHIndex + INTEGER, + fddimibPATHConfigTokenOrder + INTEGER, + fddimibPATHConfigResourceType + INTEGER, + fddimibPATHConfigResourceIndex + INTEGER, + fddimibPATHConfigCurrentPath + INTEGER + } + +fddimibPATHConfigSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + configuration entry." + ::= { fddimibPATHConfigEntry 1 } + +fddimibPATHConfigPATHIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the PATH resource index associated + with this configuration entry." + ::= { fddimibPATHConfigEntry 2 } + +fddimibPATHConfigTokenOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An object associated with Token order for this + entry. Thus if the token passes resources a, b, c + and d, in that order, then the value of this + object for these resources would be 1, 2, 3 and 4 + respectively." + ::= { fddimibPATHConfigEntry 3 } + +fddimibPATHConfigResourceType OBJECT-TYPE + SYNTAX INTEGER { mac(2), port(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of resource associated with this + configuration entry." + ::= { fddimibPATHConfigEntry 4 } + +fddimibPATHConfigResourceIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT resource index used to refer + to the instance of this MAC or Port resource." + ::= { fddimibPATHConfigEntry 5 } + +fddimibPATHConfigCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + isolated(1), local(2), secondary(3), primary(4), + concatenated(5), thru(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current insertion status for this resource on + this Path." + ::= { fddimibPATHConfigEntry 6 } + + +-- the PORT group +-- Implementation of the PORT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibPORTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PORT implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibPORT 1 } + + +-- the PORT table + +fddimibPORTTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PORT entries. The number of entries + shall not exceed the value of fddimibPORTNumber." + ::= { fddimibPORT 2 } + +fddimibPORTEntry OBJECT-TYPE + SYNTAX FddimibPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PORT entry containing information common to a + given PORT." + INDEX { fddimibPORTSMTIndex, fddimibPORTIndex } + ::= { fddimibPORTTable 1 } + +FddimibPORTEntry ::= + SEQUENCE { + fddimibPORTSMTIndex + INTEGER, + fddimibPORTIndex + INTEGER, + fddimibPORTMyType + INTEGER, + fddimibPORTNeighborType + INTEGER, + fddimibPORTConnectionPolicies + INTEGER, + fddimibPORTMACIndicated + INTEGER, + fddimibPORTCurrentPath + INTEGER, + fddimibPORTRequestedPaths + OCTET STRING, + fddimibPORTMACPlacement + FddiResourceId, + fddimibPORTAvailablePaths + INTEGER, + fddimibPORTPMDClass + INTEGER, + fddimibPORTConnectionCapabilities + INTEGER, + fddimibPORTBSFlag + INTEGER, + fddimibPORTLCTFailCts + Counter, + fddimibPORTLerEstimate + INTEGER, + fddimibPORTLemRejectCts + Counter, + fddimibPORTLemCts + Counter, + fddimibPORTLerCutoff + INTEGER, + fddimibPORTLerAlarm + INTEGER, + fddimibPORTConnectState + INTEGER, + fddimibPORTPCMState + INTEGER, + fddimibPORTPCWithhold + INTEGER, + fddimibPORTLerFlag + INTEGER, + fddimibPORTHardwarePresent + INTEGER, + fddimibPORTAction + INTEGER + } + +fddimibPORTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PORT." + ::= { fddimibPORTEntry 1 } + +fddimibPORTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each PORT within a given SMT, + which is the same as the corresponding resource + index in SMT. The value for each PORT must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + REFERENCE + "ANSI { fddiPORT 29 }" + ::= { fddimibPORTEntry 2 } + +fddimibPORTMyType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the PORT's PC_Type (refer to ANSI + 9.4.1, and 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 12 }" + ::= { fddimibPORTEntry 3 } + +fddimibPORTNeighborType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of the remote PORT as determined in PCM. + This variable has an initial value of none, and is + only modified in PC_RCode(3)_Actions (refer to + ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 13 }" + ::= { fddimibPORTEntry 4 } + +fddimibPORTConnectionPolicies OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value representing the PORT's connection + policies desired in the node. The value of pc- + mac-lct is a term used in the PC_MAC_LCT Flag (see + 9.4.3.2). The value of pc-mac-loop is a term used + in the PC_MAC_Loop Flag. + + The value is a sum. This value initially takes + the value zero, then for each PORT policy, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + Policy Power + pc-mac-lct 0 + pc-mac-loop 1 " + REFERENCE + "ANSI { fddiPORT 14 }" + ::= { fddimibPORTEntry 5 } + +fddimibPORTMACIndicated OBJECT-TYPE + SYNTAX INTEGER { + tVal9FalseRVal9False(1), + tVal9FalseRVal9True(2), + tVal9TrueRVal9False(3), + tVal9TrueRVal9True(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The indications (T_Val(9), R_Val(9)) in PC- + Signalling, of the intent to place a MAC in the + output token path to a PORT (refer to ANSI SMT + 9.6.3.2.)." + REFERENCE + "ANSI { fddiPORT 15 }" + ::= { fddimibPORTEntry 6 } + +fddimibPORTCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + ce0(1), -- isolated + ce1(2), -- local + ce2(3), -- secondary + ce3(4), -- primary + ce4(5), -- concatenated + ce5(6) -- thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Path(s) into which this PORT is + currently inserted." + REFERENCE + "ANSI { fddiPORT 16 }" + ::= { fddimibPORTEntry 7 } + +fddimibPORTRequestedPaths OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable is a list of permitted Paths where + each list element defines the Port's permitted + Paths. The first octet corresponds to 'none', the + second octet to 'tree', and the third octet to + 'peer'." + REFERENCE + "ANSI { fddiPORT 17 }" + ::= { fddimibPORTEntry 8 } + +fddimibPORTMACPlacement OBJECT-TYPE + SYNTAX FddiResourceId -- INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC, if any, whose transmit path + exits the station via this PORT. The value shall + be zero if there is no MAC associated with the + PORT. Otherwise, the MACIndex of the MAC will be + the value of the variable." + REFERENCE + "ANSI { fddiPORT 18 }" + ::= { fddimibPORTEntry 9 } + +fddimibPORTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Paths which are available to this + Port. In the absence of faults, the A and B Ports + will always have both the Primary and Secondary + Paths available. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this port has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiPORT 19 }" + ::= { fddimibPORTEntry 10 } + +fddimibPORTPMDClass OBJECT-TYPE + SYNTAX INTEGER { + multimode(1), + single-mode1(2), + single-mode2(3), + sonet(4), + low-cost-fiber(5), + twisted-pair(6), + unknown(7), + unspecified(8) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the type of PMD entity + associated with this port." + REFERENCE + "ANSI { fddiPORT 22 }" + ::= { fddimibPORTEntry 11 } + +fddimibPORTConnectionCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the connection + capabilities of the port. The pc-mac-lct bit + indicates that the station has the capability of + setting the PC_MAC_LCT Flag. The pc-mac-loop bit + indicates that the station has the capability of + setting the PC_MAC_Loop Flag (refer to ANSI + 9.4.3.2). + + The value is a sum. This value initially takes + the value zero, then for each capability that this + port has, 2 raised to a power is added to the sum. + The powers are according to the following table: + + capability Power + pc-mac-lct 0 + pc-mac-loop 1 " + REFERENCE + "ANSI { fddiPORT 23 }" + ::= { fddimibPORTEntry 12 } + +fddimibPORTBSFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of the BS_Flag + (refer to ANSI SMT 9.4.3.3)." + REFERENCE + "ANSI { fddiPORT 33 }" + ::= { fddimibPORTEntry 13 } + +fddimibPORTLCTFailCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the consecutive times the link + confidence test (LCT) has failed during connection + management (refer to ANSI 9.4.1)." + REFERENCE + "ANSI { fddiPORT 42 }" + ::= { fddimibPORTEntry 14 } + +fddimibPORTLerEstimate OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A long term average link error rate. It ranges + from 10**-4 to 10**-15 and is reported as the + absolute value of the base 10 logarithm (refer to + ANSI SMT 9.4.7.5.)." + REFERENCE + "ANSI { fddiPORT 51 }" + ::= { fddimibPORTEntry 15 } + +fddimibPORTLemRejectCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A link error monitoring count of the times that a + link has been rejected." + REFERENCE + "ANSI { fddiPORT 52 }" + ::= { fddimibPORTEntry 16 } + +fddimibPORTLemCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The aggregate link error monitor error count, set + to zero only on station initialization." + REFERENCE + "ANSI { fddiPORT 53 }" + ::= { fddimibPORTEntry 17 } + +fddimibPORTLerCutoff OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will be broken. It ranges from 10**-4 + to 10**-15 and is reported as the absolute value + of the base 10 logarithm (default of 7)." + REFERENCE + "ANSI { fddiPORT 58 }" + ::= { fddimibPORTEntry 18 } + +fddimibPORTLerAlarm OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will generate an alarm. It ranges from + 10**-4 to 10**-15 and is reported as the absolute + value of the base 10 logarithm of the estimate + (default of 8)." + REFERENCE + "ANSI { fddiPORT 59 }" + ::= { fddimibPORTEntry 19 } + +fddimibPORTConnectState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + connecting(2), + standby(3), + active(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of the connect state of this PORT + and is equal to the value of Connect_State (refer + to ANSI 9.4.1)" + REFERENCE + "ANSI { fddiPORT 61 }" + ::= { fddimibPORTEntry 20 } + +fddimibPORTPCMState OBJECT-TYPE + SYNTAX INTEGER { + pc0(1), -- Off + pc1(2), -- Break + pc2(3), -- Trace + pc3(4), -- Connect + pc4(5), -- Next + pc5(6), -- Signal + pc6(7), -- Join + pc7(8), -- Verify + pc8(9), -- Active + pc9(10) -- Maint + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The state of this Port's PCM state machine refer + to ANSI SMT 9.6.2)." + REFERENCE + "ANSI { fddiPORT 62 }" + ::= { fddimibPORTEntry 21 } + +fddimibPORTPCWithhold OBJECT-TYPE + SYNTAX INTEGER { + none(1), + m-m(2), + otherincompatible(3), + pathnotavailable(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of PC_Withhold (refer to ANSI SMT + 9.4.1)." + REFERENCE + "ANSI { fddiPORT 63 }" + ::= { fddimibPORTEntry 22 } + +fddimibPORTLerFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The condition becomes active when the value of + fddiPORTLerEstimate is less than or equal to + fddiPORTLerAlarm. This will be reported with the + Status Report Frames (SRF) (refer to ANSI SMT + 7.2.7 and 8.3)." + REFERENCE + "ANSI { fddiPORT 64 }" + ::= { fddimibPORTEntry 23 } + +fddimibPORTHardwarePresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the presence of + underlying hardware support for this Port object. + If the value of this object is false(2), the + reporting of the objects in this entry may be + handled in an implementation-specific manner." + REFERENCE + "ANSI { fddiPORT 65 }" + ::= { fddimibPORTEntry 24 } + +fddimibPORTAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + maintPORT(2), + enablePORT(3), + disablePORT(4), + startPORT(5), + stopPORT(6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Causes a Control signal to be generated with a + control_action of 'Signal' and the 'variable' + parameter set with the appropriate value (i.e., + PC_Maint, PC_Enable, PC_Disable, PC_Start, or + PC_Stop) (refer to ANSI 9.4.2)." + REFERENCE + "ANSI { fddiPORT 70 }" + ::= { fddimibPORTEntry 25 } + + +END diff --git a/mibs/ietf/FIBRE-CHANNEL-FE-MIB b/mibs/ietf/FIBRE-CHANNEL-FE-MIB new file mode 100644 index 0000000..2f46101 --- /dev/null +++ b/mibs/ietf/FIBRE-CHANNEL-FE-MIB @@ -0,0 +1,1794 @@ +FIBRE-CHANNEL-FE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, Gauge32, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, TimeStamp + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- rfc2571 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + fcFeMIB MODULE-IDENTITY + LAST-UPDATED "200005180000Z" + ORGANIZATION "IETF IPFC Working Group" + CONTACT-INFO "Kha Sin Teow + Brocade Communications Systems, + 1901 Guadalupe Parkway, + San Jose, CA 95131 + U.S.A + Tel: +1 408 487 8180 + Fax: +1 408 487 8190 + Email: khasin@Brocade.COM + + WG Mailing list:ipfc@standards.gadzoox.com + To Subscribe: ipfc-request@standards.gadzoox.com + In Body: subscribe" + + DESCRIPTION "The MIB module for Fibre Channel Fabric Element." + REVISION "200005180000Z" + DESCRIPTION "Initial revision, published as RFC 2837." + ::= { mib-2 75 } + + fcFeMIBObjects OBJECT IDENTIFIER ::= { fcFeMIB 1 } + + -- Note: + -- fcFeMIBConformance OBJECT IDENTIFIER ::= { fcFeMIB 2 } + -- see at the end of the module + + -- Groups under fcFeMIBObjects + fcFeConfig OBJECT IDENTIFIER ::= { fcFeMIBObjects 1 } + fcFeStatus OBJECT IDENTIFIER ::= { fcFeMIBObjects 2 } + fcFeError OBJECT IDENTIFIER ::= { fcFeMIBObjects 3 } + fcFeAccounting OBJECT IDENTIFIER ::= { fcFeMIBObjects 4 } + fcFeCapabilities OBJECT IDENTIFIER ::= { fcFeMIBObjects 5 } + + -- Textual Conventions + MilliSeconds ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents time unit value in milliseconds." + SYNTAX Unsigned32 + + MicroSeconds ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents time unit value in microseconds." + SYNTAX Unsigned32 + + FcNameId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the Worldwide Name associated with + a Fibre Channel (FC) entity." + SYNTAX OCTET STRING (SIZE (8)) + + FcAddressId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents Fibre Channel Address ID, a 24-bit + value unique within the address space of a Fabric." + SYNTAX OCTET STRING (SIZE (3)) + + FcRxDataFieldSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the receive data field size of an + NxPort or FxPort." + SYNTAX Integer32 (128..2112) + + FcBbCredit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the buffer-to-buffer credit of an + NxPort or FxPort." + SYNTAX Integer32 (0..32767) + + FcphVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the version of FC-PH supported by an + NxPort or FxPort." + SYNTAX Integer32 (0..255) + + FcStackedConnMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents an enumerated value used to indicate + the Class 1 Stacked Connect Mode supported by + an NxPort or FxPort." + SYNTAX INTEGER { + none(1), + transparent(2), + lockedDown(3) + } + + FcCosCap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the class of service capability of an + NxPort or FxPort." + SYNTAX BITS { classF(0), class1(1), class2(2), class3(3), + class4(4), class5(5), class6(6) } + + FcFeModuleCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the maximum number of modules within + a Fabric Element." + SYNTAX Unsigned32 + + FcFeFxPortCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the maximum number of FxPorts within + a module." + SYNTAX Unsigned32 + + FcFeModuleIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the module index within a conceptual table." + SYNTAX Unsigned32 + + FcFeFxPortIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the FxPort index within a conceptual table." + SYNTAX Unsigned32 + + FcFeNxPortIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the NxPort index within a conceptual table." + SYNTAX Integer32 (1..126) + + FcBbCreditModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the BB_Credit model of an FxPort." + SYNTAX INTEGER { regular(1), alternate (2) } + + -- The Configuration group + + -- This group consists of scalar objects and tables. + -- It contains the configuration and service parameters + -- of the Fabric Element and the FxPorts. + -- The group represents a set of parameters associated with + -- the Fabric Element or an FxPort to support its NxPorts. + + fcFeFabricName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the Fabric to which this Fabric + Element belongs." + ::= { fcFeConfig 1 } + + fcFeElementName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the Fabric Element." + ::= { fcFeConfig 2 } + + fcFeModuleCapacity OBJECT-TYPE + SYNTAX FcFeModuleCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of modules in the Fabric Element, + regardless of their current state." + ::= { fcFeConfig 3 } + + -- The Module Table. + -- This table contains one entry for each module, + -- information of the modules. + + fcFeModuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFeModuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each module in the + Fabric Element, information of the modules." + ::= { fcFeConfig 4 } + + fcFeModuleEntry OBJECT-TYPE + SYNTAX FcFeModuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the configuration parameters of a + module." + INDEX { fcFeModuleIndex } + ::= { fcFeModuleTable 1 } + + + FcFeModuleEntry ::= + SEQUENCE { + fcFeModuleIndex + FcFeModuleIndex, + fcFeModuleDescr + SnmpAdminString, + fcFeModuleObjectID + OBJECT IDENTIFIER, + fcFeModuleOperStatus + INTEGER, + fcFeModuleLastChange + TimeStamp, + fcFeModuleFxPortCapacity + FcFeFxPortCapacity, + fcFeModuleName + FcNameId + } + + fcFeModuleIndex OBJECT-TYPE + SYNTAX FcFeModuleIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the module within the Fabric Element + for which this entry contains information. This value is + never greater than fcFeModuleCapacity." + ::= { fcFeModuleEntry 1 } + + fcFeModuleDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the module. This value should + include the full name and version identification of the + module." + ::= { fcFeModuleEntry 2 } + + fcFeModuleObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the module. + This value may be allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides a straight-forward and + unambiguous means for determining what kind of module is + being managed. + + For example, this object could take the value + 1.3.6.1.4.1.99649.3.9 if vendor 'Neufe Inc.' was assigned + the subtree 1.3.6.1.4.1.99649, and had assigned the + identifier 1.3.6.1.4.1.99649.3.9 to its 'FeFiFo-16 + PlugInCard.'" + ::= { fcFeModuleEntry 3 } + + fcFeModuleOperStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- functional + offline (2), -- not available + testing (3), -- under testing + faulty (4) -- defective + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the operational status of the module: + online(1) the module is functioning properly; + offline(2) the module is not available; + testing(3) the module is under testing; and + faulty(4) the module is defective in some way." + ::= { fcFeModuleEntry 4 } + + fcFeModuleLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of sysUpTime when the module + entered its current operational status. A value of zero + indicates that the operational status of the module has not + changed since the agent last restarted." + ::= { fcFeModuleEntry 5 } + + fcFeModuleFxPortCapacity OBJECT-TYPE + SYNTAX FcFeFxPortCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FxPort that can be contained within the + module. Within each module, the ports are uniquely numbered + in the range from 1 to fcFeModuleFxPortCapacity inclusive. + However, the numbers are not required to be contiguous." + ::= { fcFeModuleEntry 6 } + + fcFeModuleName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the module." + ::= { fcFeModuleEntry 7 } + + -- the FxPort Configuration Table. + -- This table contains, one entry for each FxPort, + -- configuration parameters of the ports. + + fcFxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, configuration and service parameters of the + FxPorts." + ::= { fcFeConfig 5 } + + fcFxPortEntry OBJECT-TYPE + SYNTAX FcFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the configuration and service parameters + of a FxPort." + INDEX { fcFeModuleIndex, fcFxPortIndex } + ::= { fcFxPortTable 1 } + + + FcFxPortEntry ::= + SEQUENCE { + fcFxPortIndex + FcFeFxPortIndex, + fcFxPortName + FcNameId, + + -- FxPort common service parameters + fcFxPortFcphVersionHigh + FcphVersion, + fcFxPortFcphVersionLow + FcphVersion, + fcFxPortBbCredit + FcBbCredit, + fcFxPortRxBufSize + FcRxDataFieldSize, + fcFxPortRatov + MilliSeconds, + fcFxPortEdtov + MilliSeconds, + -- FxPort class service parameters + fcFxPortCosSupported + FcCosCap, + fcFxPortIntermixSupported + TruthValue, + fcFxPortStackedConnMode + FcStackedConnMode, + fcFxPortClass2SeqDeliv + TruthValue, + fcFxPortClass3SeqDeliv + TruthValue, + -- other configuration parameters + fcFxPortHoldTime + MicroSeconds + } + + fcFxPortIndex OBJECT-TYPE + SYNTAX FcFeFxPortIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the FxPort within the module. This + number ranges from 1 to the value of fcFeModulePortCapacity + for the associated module. The value remains constant for + the identified FxPort until the module is re-initialized." + ::= { fcFxPortEntry 1 } + + fcFxPortName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World_wide Name of this FxPort. Each FxPort has a + unique Port World_wide Name within the Fabric." + ::= { fcFxPortEntry 2 } + + -- FxPort common service parameters + + fcFxPortFcphVersionHigh OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest or most recent version of FC-PH that the FxPort + is configured to support." + ::= { fcFxPortEntry 3 } + + fcFxPortFcphVersionLow OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest or earliest version of FC-PH that the FxPort is + configured to support." + ::= { fcFxPortEntry 4 } + + fcFxPortBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of receive buffers available for holding + Class 1 connect-request, Class 2 or 3 frames from the + attached NxPort. It is for buffer-to-buffer flow control + in the direction from the attached NxPort (if applicable) + to FxPort." + ::= { fcFxPortEntry 5 } + + fcFxPortRxBufSize OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest Data_Field Size (in octets) for an FT_1 frame + that can be received by the FxPort." + ::= { fcFxPortEntry 6 } + + fcFxPortRatov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Resource_Allocation_Timeout Value configured for the + FxPort. This is used as the timeout value for determining + when to reuse an NxPort resource such as a + Recovery_Qualifier. It represents E_D_TOV (see next + object) plus twice the maximum time that a frame may be + delayed within the Fabric and still be delivered." + ::= { fcFxPortEntry 7 } + + fcFxPortEdtov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The E_D_TOV value configured for the FxPort. The + Error_Detect_Timeout Value is used as the timeout value for + detecting an error condition." + ::= { fcFxPortEntry 8 } + + + -- FxPort class service parameters + + fcFxPortCosSupported OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the set of Classes of Service supported + by the FxPort." + ::= { fcFxPortEntry 9 } + + fcFxPortIntermixSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort supports an + Intermixed Dedicated Connection." + ::= { fcFxPortEntry 10 } + + fcFxPortStackedConnMode OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the mode of Stacked Connect supported by + the FxPort." + ::= { fcFxPortEntry 11 } + + fcFxPortClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not Class 2 Sequential + Delivery is supported by the FxPort." + ::= { fcFxPortEntry 12 } + + fcFxPortClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not Class 3 Sequential + Delivery is supported by the FxPort." + ::= { fcFxPortEntry 13 } + + + -- other FxPort parameters + + fcFxPortHoldTime OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum time (in microseconds) that the FxPort shall + hold a frame before discarding the frame if it is unable to + deliver the frame. The value 0 means that the FxPort does + not support this parameter." + ::= { fcFxPortEntry 14 } + + + -- the Status group + + -- This group consists of tables that contains operational + -- status and established service parameters for the Fabric + -- Element and the attached NxPorts. + + -- The FxPort Status table + -- This table contains, one entry for each FxPort, + -- the operational status and parameters of the FxPorts. + + fcFxPortStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, operational status and parameters of the + FxPorts." + ::= { fcFeStatus 1 } + + fcFxPortStatusEntry OBJECT-TYPE + SYNTAX FcFxPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing operational status and parameters of a + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortStatusTable 1 } + + + FcFxPortStatusEntry ::= + SEQUENCE { + fcFxPortID + FcAddressId, + fcFxPortBbCreditAvailable + Gauge32, + fcFxPortOperMode + INTEGER, + fcFxPortAdminMode + INTEGER + } + + fcFxPortID OBJECT-TYPE + SYNTAX FcAddressId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address identifier by which this FxPort is identified + within the Fabric. The FxPort may assign its address + identifier to its attached NxPort(s) during Fabric Login." + ::= { fcFxPortStatusEntry 1 } + + fcFxPortBbCreditAvailable OBJECT-TYPE + SYNTAX Gauge32 + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of buffers currently available for receiving + frames from the attached port in the buffer-to-buffer flow + control. The value should be less than or equal to + fcFxPortBbCredit." + ::= { fcFxPortStatusEntry 2 } + + fcFxPortOperMode OBJECT-TYPE + SYNTAX INTEGER { unknown(1), fPort(2), flPort(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational mode of the FxPort." + ::= { fcFxPortStatusEntry 3 } + + fcFxPortAdminMode OBJECT-TYPE + SYNTAX INTEGER { fPort(2), flPort(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired operational mode of the FxPort." + ::= { fcFxPortStatusEntry 4 } + + + -- the FxPort Physical Level table + -- This table contains, one entry for each FxPort in the + -- Fabric Element, the physical level status and parameters + -- of the FxPorts. + + fcFxPortPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, physical level status and parameters of the + FxPorts." + ::= { fcFeStatus 2 } + + fcFxPortPhysEntry OBJECT-TYPE + SYNTAX FcFxPortPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing physical level status and parameters of + a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortPhysTable 1 } + + FcFxPortPhysEntry ::= + SEQUENCE { + fcFxPortPhysAdminStatus + INTEGER, + fcFxPortPhysOperStatus + INTEGER, + fcFxPortPhysLastChange + TimeStamp, + fcFxPortPhysRttov + MilliSeconds + } + + fcFxPortPhysAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- place port online + offline (2), -- take port offline + testing (3) -- initiate test procedures + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the FxPort. A management station may + place the FxPort in a desired state by setting this object + accordingly. The testing(3) state indicates that no + operational frames can be passed. When a Fabric Element + initializes, all FxPorts start with fcFxPortPhysAdminStatus + in the offline(2) state. As the result of either explicit + management action or per configuration information + accessible by the Fabric Element, fcFxPortPhysAdminStatus + is then changed to either the online(1) or testing(3) + states, or remains in the offline state." + ::= { fcFxPortPhysEntry 1 } + + fcFxPortPhysOperStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- Login may proceed + offline (2), -- Login cannot proceed + testing (3), -- port is under test + linkFailure (4) -- failure after online/testing + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the FxPort. The + testing(3) indicates that no operational frames can be + passed. If fcFxPortPhysAdminStatus is offline(2) then + fcFxPortPhysOperStatus should be offline(2). If + fcFxPortPhysAdminStatus is changed to online(1) then + fcFxPortPhysOperStatus should change to online(1) if the + FxPort is ready to accept Fabric Login request from the + attached NxPort; it should proceed and remain in the link- + failure(4) state if and only if there is a fault that + prevents it from going to the online(1) state." + ::= { fcFxPortPhysEntry 2 } + + fcFxPortPhysLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the FxPort entered its + current operational status. A value of zero indicates that + the FxPort's operational status has not changed since the + agent last restarted." + ::= { fcFxPortPhysEntry 3 } + + fcFxPortPhysRttov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Receiver_Transmitter_Timeout value of the FxPort. This + is used by the receiver logic to detect Loss of + Synchronization." + ::= { fcFxPortPhysEntry 4 } + + -- The FxPort Fabric Login table + -- + -- This table contains, one entry for each FxPort in the + -- Fabric Element, the Service Parameters that have been + -- established from the most recent Fabric Login, + -- implicit or explicit. + + fcFxLoginTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each NxPort attached + to a particular FxPort in the Fabric Element, services + parameters established from the most recent Fabric Login, + explicit or implicit. Note that an FxPort may have one or + more NxPort attached to it." + ::= { fcFeStatus 3 } + + fcFxLoginEntry OBJECT-TYPE + SYNTAX FcFxLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing service parameters established from a + successful Fabric Login." + INDEX { fcFeModuleIndex, fcFxPortIndex, fcFxPortNxLoginIndex } + ::= { fcFxLoginTable 1 } + + FcFxLoginEntry ::= + SEQUENCE { + fcFxPortNxLoginIndex + FcFeNxPortIndex, + fcFxPortFcphVersionAgreed + FcphVersion, + fcFxPortNxPortBbCredit + FcBbCredit, + fcFxPortNxPortRxDataFieldSize + FcRxDataFieldSize, + fcFxPortCosSuppAgreed + FcCosCap, + fcFxPortIntermixSuppAgreed + TruthValue, + fcFxPortStackedConnModeAgreed + FcStackedConnMode, + fcFxPortClass2SeqDelivAgreed + TruthValue, + fcFxPortClass3SeqDelivAgreed + TruthValue, + -- + fcFxPortNxPortName + FcNameId, + fcFxPortConnectedNxPort + FcAddressId, + fcFxPortBbCreditModel + FcBbCreditModel + } + + fcFxPortNxLoginIndex OBJECT-TYPE + SYNTAX FcFeNxPortIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifies the associated NxPort in the + attachment for which the entry contains information." + ::= { fcFxLoginEntry 1 } + + fcFxPortFcphVersionAgreed OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of FC-PH that the FxPort has agreed to support + from the Fabric Login" + ::= { fcFxLoginEntry 2 } + + fcFxPortNxPortBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of buffers available for holding Class 1 + connect-request, Class 2 or Class 3 frames to be + transmitted to the attached NxPort. It is for buffer-to- + buffer flow control in the direction from FxPort to NxPort. + The buffer-to-buffer flow control mechanism is indicated in + the respective fcFxPortBbCreditModel." + ::= { fcFxLoginEntry 3 } + + fcFxPortNxPortRxDataFieldSize OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size of the attached NxPort. This + object specifies the largest Data Field Size for an FT_1 + frame that can be received by the NxPort." + ::= { fcFxLoginEntry 4 } + + fcFxPortCosSuppAgreed OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating that the attached NxPort has + requested the FxPort for the support of classes of services + and the FxPort has granted the request." + ::= { fcFxLoginEntry 5 } + + fcFxPortIntermixSuppAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating that the attached NxPort has + requested the FxPort for the support of Intermix and the + FxPort has granted the request. This flag is only valid if + Class 1 service is supported." + ::= { fcFxLoginEntry 6 } + + fcFxPortStackedConnModeAgreed OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating whether the FxPort has agreed to + support stacked connect from the Fabric Login. This is only + meaningful if Class 1 service has been agreed." + ::= { fcFxLoginEntry 7 } + + fcFxPortClass2SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating whether the FxPort has agreed to + support Class 2 sequential delivery from the Fabric Login. + This is only meaningful if Class 2 service has been + agreed." + ::= { fcFxLoginEntry 8 } + + fcFxPortClass3SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether the FxPort has agreed to support + Class 3 sequential delivery from the Fabric Login. This is + only meaningful if Class 3 service has been agreed." + ::= { fcFxLoginEntry 9 } + + fcFxPortNxPortName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port name of the attached NxPort." + ::= { fcFxLoginEntry 10 } + + fcFxPortConnectedNxPort OBJECT-TYPE + SYNTAX FcAddressId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address identifier of the destination NxPort with which + this FxPort is currently engaged in a either a Class 1 or + loop connection. If this FxPort is not engaged in a + connection, then the value of this object is '000000'H." + ::= { fcFxLoginEntry 11 } + + fcFxPortBbCreditModel OBJECT-TYPE + SYNTAX FcBbCreditModel + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the BB_Credit model used by the + FxPort." + ::= { fcFxLoginEntry 12 } + + + -- the Error group + -- This group consists of tables that contain information about + -- the various types of errors detected. The management station + -- may use the information in this group to determine the + -- quality of the link between the FxPort and its attached NxPort. + + -- the FxPort Error table + -- This table contains, one entry for each FxPort in the Fabric + -- Element, counters recording numbers of errors detected + -- since the management agent re-initialized. + -- The first 6 columnar objects after the port index corresponds + -- to the counters in the Link Error Status Block. + + fcFxPortErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort, counters + that record the numbers of errors detected." + ::= { fcFeError 1 } + + fcFxPortErrorEntry OBJECT-TYPE + SYNTAX FcFxPortErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing error counters of a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortErrorTable 1 } + + + FcFxPortErrorEntry ::= + SEQUENCE { + fcFxPortLinkFailures + Counter32, + fcFxPortSyncLosses + Counter32, + fcFxPortSigLosses + Counter32, + fcFxPortPrimSeqProtoErrors + Counter32, + fcFxPortInvalidTxWords + Counter32, + fcFxPortInvalidCrcs + Counter32, + fcFxPortDelimiterErrors + Counter32, + fcFxPortAddressIdErrors + Counter32, + fcFxPortLinkResetIns + Counter32, + fcFxPortLinkResetOuts + Counter32, + fcFxPortOlsIns + Counter32, + fcFxPortOlsOuts + Counter32 + } + + fcFxPortLinkFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of link failures detected by this FxPort." + ::= { fcFxPortErrorEntry 1 } + + fcFxPortSyncLosses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of loss of synchronization detected by the + FxPort." + ::= { fcFxPortErrorEntry 2 } + + fcFxPortSigLosses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of loss of signal detected by the FxPort." + ::= { fcFxPortErrorEntry 3 } + + fcFxPortPrimSeqProtoErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of primitive sequence protocol errors detected + by the FxPort." + ::= { fcFxPortErrorEntry 4 } + + fcFxPortInvalidTxWords OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid transmission word detected by the + FxPort." + ::= { fcFxPortErrorEntry 5 } + + fcFxPortInvalidCrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid CRC detected by this FxPort." + ::= { fcFxPortErrorEntry 6 } + + fcFxPortDelimiterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Delimiter Errors detected by this FxPort." + ::= { fcFxPortErrorEntry 7 } + + fcFxPortAddressIdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of address identifier errors detected by this + FxPort." + ::= { fcFxPortErrorEntry 8 } + + fcFxPortLinkResetIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset Protocol received by this FxPort + from the attached NxPort." + ::= { fcFxPortErrorEntry 9 } + + fcFxPortLinkResetOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset Protocol issued by this FxPort to + the attached NxPort." + ::= { fcFxPortErrorEntry 10 } + + fcFxPortOlsIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline Sequence received by this FxPort." + ::= { fcFxPortErrorEntry 11 } + + fcFxPortOlsOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline Sequence issued by this FxPort." + ::= { fcFxPortErrorEntry 12 } + + + + -- Accounting Groups: + -- (1) Class 1 Accounting Group, + -- (2) Class 2 Accounting Group, and + -- (3) Class 3 Accounting Group. + -- Each group consists of a table that contains accounting + -- information for the FxPorts in the Fabric Element. + + -- the Class 1 Accounting table + -- This table contains, one entry for each FxPort in the Fabric + + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the the management agent has re-initialized. + + fcFxPortC1AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC1AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 1 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 1 } + + fcFxPortC1AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC1AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 1 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC1AccountingTable 1 } + + + FcFxPortC1AccountingEntry ::= + SEQUENCE { + fcFxPortC1InFrames + Counter32, + fcFxPortC1OutFrames + Counter32, + fcFxPortC1InOctets + Counter32, + fcFxPortC1OutOctets + Counter32, + fcFxPortC1Discards + Counter32, + fcFxPortC1FbsyFrames + Counter32, + fcFxPortC1FrjtFrames + Counter32, + fcFxPortC1InConnections + Counter32, + fcFxPortC1OutConnections + Counter32, + fcFxPortC1ConnTime + MilliSeconds + } + + fcFxPortC1InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames (other than Class 1 connect- + request) received by this FxPort from its attached NxPort." + ::= { fcFxPortC1AccountingEntry 1 } + + fcFxPortC1OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames (other than Class 1 connect- + request) delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 2 } + + fcFxPortC1InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 3 } + + fcFxPortC1OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frame octets, including the frame + delimiters, delivered through this FxPort its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 4 } + + fcFxPortC1Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames discarded by this FxPort." + ::= { fcFxPortC1AccountingEntry 5 } + + fcFxPortC1FbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_BSY frames generated by this FxPort against + Class 1 connect-request." + ::= { fcFxPortC1AccountingEntry 6 } + + fcFxPortC1FrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_RJT frames generated by this FxPort against + Class 1 connect-request." + ::= { fcFxPortC1AccountingEntry 7 } + + fcFxPortC1InConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 connections successfully established + in which the attached NxPort is the source of the connect- + request." + ::= { fcFxPortC1AccountingEntry 8 } + + fcFxPortC1OutConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 connections successfully established + in which the attached NxPort is the destination of the + connect-request." + ::= { fcFxPortC1AccountingEntry 9 } + + fcFxPortC1ConnTime OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time that this FxPort has been engaged in + Class 1 connection. The amount of time is counted from + after a connect-request has been accepted until the + connection is disengaged, either by an EOFdt or Link + Reset." + ::= { fcFxPortC1AccountingEntry 10 } + + + -- the Class 2 Accounting table + -- This table contains, one entry for each FxPort in the Fabric + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the the management agent has re-initialized. + + + fcFxPortC2AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC2AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 2 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 2 } + + fcFxPortC2AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC2AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 2 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC2AccountingTable 1 } + + FcFxPortC2AccountingEntry ::= + SEQUENCE { + fcFxPortC2InFrames + Counter32, + fcFxPortC2OutFrames + Counter32, + fcFxPortC2InOctets + Counter32, + fcFxPortC2OutOctets + Counter32, + fcFxPortC2Discards + Counter32, + fcFxPortC2FbsyFrames + Counter32, + fcFxPortC2FrjtFrames + Counter32 + } + + fcFxPortC2InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received by this FxPort from + its attached NxPort." + ::= { fcFxPortC2AccountingEntry 1 } + + fcFxPortC2OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames delivered through this FxPort + to its attached NxPort." + ::= { fcFxPortC2AccountingEntry 2 } + + fcFxPortC2InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC2AccountingEntry 3 } + + fcFxPortC2OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frame octets, including the frame + delimiters, delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC2AccountingEntry 4 } + + fcFxPortC2Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames discarded by this FxPort." + ::= { fcFxPortC2AccountingEntry 5 } + + fcFxPortC2FbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_BSY frames generated by this FxPort against + Class 2 frames." + ::= { fcFxPortC2AccountingEntry 6 } + + fcFxPortC2FrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_RJT frames generated by this FxPort against + Class 2 frames." + ::= { fcFxPortC2AccountingEntry 7 } + + -- the Class 3 Accounting Group + -- This table contains, one entry for each FxPort in the Fabric + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the management agent has re-initialized. + + fcFxPortC3AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC3AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 3 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 3 } + + fcFxPortC3AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC3AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 3 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC3AccountingTable 1 } + + + FcFxPortC3AccountingEntry ::= + SEQUENCE { + fcFxPortC3InFrames + Counter32, + fcFxPortC3OutFrames + Counter32, + fcFxPortC3InOctets + Counter32, + fcFxPortC3OutOctets + Counter32, + fcFxPortC3Discards + Counter32 + } + + fcFxPortC3InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received by this FxPort from + its attached NxPort." + ::= { fcFxPortC3AccountingEntry 1 } + + fcFxPortC3OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames delivered through this FxPort + to its attached NxPort." + ::= { fcFxPortC3AccountingEntry 2 } + + fcFxPortC3InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC3AccountingEntry 3 } + + fcFxPortC3OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frame octets, including the frame + delimiters, delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC3AccountingEntry 4 } + + fcFxPortC3Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames discarded by this FxPort." + ::= { fcFxPortC3AccountingEntry 5 } + + + -- The Capability Group - consists of a table describing + -- information about what each FxPort is inherently capable + -- of operating or supporting. + -- A capability may be used, as expressed in its respective + -- object value in the Configuration group. + + fcFxPortCapTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortCapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort, the + capabilities of the port within the Fabric Element." + ::= { fcFeCapabilities 1 } + + fcFxPortCapEntry OBJECT-TYPE + SYNTAX FcFxPortCapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the Cap of a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortCapTable 1 } + + + FcFxPortCapEntry ::= + SEQUENCE { + fcFxPortCapFcphVersionHigh + FcphVersion, + fcFxPortCapFcphVersionLow + FcphVersion, + fcFxPortCapBbCreditMax + FcBbCredit, + fcFxPortCapBbCreditMin + FcBbCredit, + fcFxPortCapRxDataFieldSizeMax + FcRxDataFieldSize, + fcFxPortCapRxDataFieldSizeMin + FcRxDataFieldSize, + fcFxPortCapCos + FcCosCap, + fcFxPortCapIntermix + TruthValue, + fcFxPortCapStackedConnMode + FcStackedConnMode, + fcFxPortCapClass2SeqDeliv + TruthValue, + fcFxPortCapClass3SeqDeliv + TruthValue, + fcFxPortCapHoldTimeMax + MicroSeconds, + fcFxPortCapHoldTimeMin + MicroSeconds + } + + fcFxPortCapFcphVersionHigh OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest or most recent version of FC-PH that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 1 } + + fcFxPortCapFcphVersionLow OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest or earliest version of FC-PH that the FxPort is + capable of supporting." + ::= { fcFxPortCapEntry 2 } + + fcFxPortCapBbCreditMax OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of receive buffers available for holding + Class 1 connect-request, Class 2 or Class 3 frames from the + attached NxPort." + ::= { fcFxPortCapEntry 3 } + + fcFxPortCapBbCreditMin OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of receive buffers available for holding + Class 1 connect-request, Class 2 or Class 3 frames from the + attached NxPort." + ::= { fcFxPortCapEntry 4 } + + fcFxPortCapRxDataFieldSizeMax OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size in bytes of the Data Field in a frame that + the FxPort is capable of receiving from its attached + NxPort." + ::= { fcFxPortCapEntry 5 } + + fcFxPortCapRxDataFieldSizeMin OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum size in bytes of the Data Field in a frame that + the FxPort is capable of receiving from its attached + NxPort." + ::= { fcFxPortCapEntry 6 } + + fcFxPortCapCos OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the set of Classes of Service that the + FxPort is capable of supporting." + ::= { fcFxPortCapEntry 7 } + + fcFxPortCapIntermix OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting the intermixing of Class 2 and Class 3 frames + during a Class 1 connection. This flag is only valid if the + port is capable of supporting Class 1 service." + ::= { fcFxPortCapEntry 8 } + + fcFxPortCapStackedConnMode OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the mode of Stacked Connect request that + the FxPort is capable of supporting." + ::= { fcFxPortCapEntry 9 } + + fcFxPortCapClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting Class 2 Sequential Delivery." + ::= { fcFxPortCapEntry 10 } + + fcFxPortCapClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting Class 3 Sequential Delivery." + ::= { fcFxPortCapEntry 11 } + + fcFxPortCapHoldTimeMax OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum holding time (in microseconds) that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 12 } + + fcFxPortCapHoldTimeMin OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum holding time (in microseconds) that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 13 } + + -- conformance information + fcFeMIBConformance OBJECT IDENTIFIER ::= { fcFeMIB 2 } + fcFeMIBCompliances OBJECT IDENTIFIER ::= { fcFeMIBConformance 1 } + fcFeMIBGroups OBJECT IDENTIFIER ::= { fcFeMIBConformance 2 } + + -- compliance statements + fcFeMIBMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + which implement the FIBRE-CHANNEL-FE-MIB." + MODULE -- this module + MANDATORY-GROUPS { fcFeConfigGroup, fcFeStatusGroup, + fcFeErrorGroup } + + OBJECT fcFeFabricName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeElementName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeModuleName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortAdminMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysRttov + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortBbCreditModel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { fcFeMIBCompliances 1 } + + fcFeMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance statement for SNMP entities + which implement the FIBRE-CHANNEL-FE-MIB." + MODULE -- this module + MANDATORY-GROUPS { fcFeConfigGroup, fcFeStatusGroup, + fcFeErrorGroup, fcFeCapabilitiesGroup } + + GROUP fcFeClass1AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 1 frames." + + GROUP fcFeClass2AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 2 frames." + + GROUP fcFeClass3AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 3 frames." + + OBJECT fcFeFabricName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeElementName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeModuleName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortAdminMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysRttov + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortBbCreditModel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { fcFeMIBCompliances 2 } + + -- units of conformance + fcFeConfigGroup OBJECT-GROUP + OBJECTS { fcFeFabricName, fcFeElementName, fcFeModuleCapacity, + fcFeModuleDescr, fcFeModuleObjectID, + fcFeModuleOperStatus, fcFeModuleLastChange, + fcFeModuleFxPortCapacity, fcFeModuleName, + fcFxPortName, fcFxPortFcphVersionHigh, + fcFxPortFcphVersionLow, fcFxPortBbCredit, + fcFxPortRxBufSize, fcFxPortRatov, fcFxPortEdtov, + fcFxPortCosSupported, fcFxPortIntermixSupported, + fcFxPortStackedConnMode, fcFxPortClass2SeqDeliv, + fcFxPortClass3SeqDeliv, fcFxPortHoldTime } + STATUS current + DESCRIPTION + "A collection of objects providing the configuration and service + parameters of the Fabric Element, the modules, and FxPorts." + ::= { fcFeMIBGroups 1 } + + fcFeStatusGroup OBJECT-GROUP + OBJECTS { fcFxPortID, fcFxPortBbCreditAvailable, + fcFxPortOperMode, fcFxPortAdminMode, + fcFxPortPhysAdminStatus, fcFxPortPhysOperStatus, + fcFxPortPhysLastChange, fcFxPortPhysRttov, + fcFxPortFcphVersionAgreed, fcFxPortNxPortBbCredit, + fcFxPortNxPortRxDataFieldSize, fcFxPortCosSuppAgreed, + fcFxPortIntermixSuppAgreed, + fcFxPortStackedConnModeAgreed, + fcFxPortClass2SeqDelivAgreed, + fcFxPortClass3SeqDelivAgreed, + fcFxPortNxPortName, fcFxPortConnectedNxPort, + fcFxPortBbCreditModel } + STATUS current + DESCRIPTION + "A collection of objects providing the operational status and + established service parameters for the Fabric Element and the + attached NxPorts." + ::= { fcFeMIBGroups 2 } + + fcFeErrorGroup OBJECT-GROUP + OBJECTS { fcFxPortLinkFailures, fcFxPortSyncLosses, + fcFxPortSigLosses, fcFxPortPrimSeqProtoErrors, + fcFxPortInvalidTxWords, fcFxPortInvalidCrcs, + fcFxPortDelimiterErrors, fcFxPortAddressIdErrors, + fcFxPortLinkResetIns, fcFxPortLinkResetOuts, + fcFxPortOlsIns, fcFxPortOlsOuts } + STATUS current + DESCRIPTION + "A collection of objects providing various error + statistics detected by the FxPorts." + ::= { fcFeMIBGroups 3 } + + fcFeClass1AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC1InFrames, fcFxPortC1OutFrames, + fcFxPortC1InOctets, fcFxPortC1OutOctets, + fcFxPortC1Discards, fcFxPortC1FbsyFrames, + fcFxPortC1FrjtFrames, fcFxPortC1InConnections, + fcFxPortC1OutConnections, fcFxPortC1ConnTime + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 1 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 4 } + + fcFeClass2AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC2InFrames, fcFxPortC2OutFrames, + fcFxPortC2InOctets, fcFxPortC2OutOctets, + fcFxPortC2Discards, fcFxPortC2FbsyFrames, + fcFxPortC2FrjtFrames + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 2 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 5 } + + fcFeClass3AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC3InFrames, fcFxPortC3OutFrames, + fcFxPortC3InOctets, fcFxPortC3OutOctets, + fcFxPortC3Discards + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 3 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 6 } + + fcFeCapabilitiesGroup OBJECT-GROUP + OBJECTS { fcFxPortCapFcphVersionHigh, fcFxPortCapFcphVersionLow, + fcFxPortCapBbCreditMax, fcFxPortCapBbCreditMin, + fcFxPortCapRxDataFieldSizeMax, + fcFxPortCapRxDataFieldSizeMin, + fcFxPortCapCos, fcFxPortCapIntermix, + fcFxPortCapStackedConnMode, fcFxPortCapClass2SeqDeliv, + fcFxPortCapClass3SeqDeliv, fcFxPortCapHoldTimeMax, + fcFxPortCapHoldTimeMin + } + STATUS current + DESCRIPTION + "A collection of objects providing the inherent + capability of each FxPort within the Fabric Element." + ::= { fcFeMIBGroups 7 } + + + END diff --git a/mibs/ietf/FLOW-METER-MIB b/mibs/ietf/FLOW-METER-MIB new file mode 100644 index 0000000..cba8ebd --- /dev/null +++ b/mibs/ietf/FLOW-METER-MIB @@ -0,0 +1,1901 @@ +FLOW-METER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Counter64, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB + TimeFilter + FROM RMON2-MIB; + +flowMIB MODULE-IDENTITY + LAST-UPDATED "9910250000Z" -- October 25, 1999 + ORGANIZATION "IETF Realtime Traffic Flow Measurement Working Group" + CONTACT-INFO + "Nevil Brownlee, The University of Auckland + + Postal: Information Technology Sytems & Services + The University of Auckland + Private Bag 92-019 + Auckland, New Zealand + + Phone: +64 9 373 7599 x8941 + E-mail: n.brownlee@auckland.ac.nz" + DESCRIPTION + "MIB for the RTFM Traffic Flow Meter." + + REVISION "9910250000Z" + DESCRIPTION + "Initial Version, published as RFC 2720." + + REVISION "9908301250Z" + DESCRIPTION + "UTF8OwnerString Textual Convention added, and used to + replace OwnerString. Conceptually the same as OwnerString, + but facilitating internationalisation by using UTF-8 + encoding for its characters rather than US-ASCII." + + REVISION "9908191010Z" + DESCRIPTION + "Changes to SIZE specification for two variables: + - flowRuleInfoName SIZE specified as (0..127) + - flowRuleIndex SIZE increased to (1..2147483647)" + + REVISION "9712230937Z" + DESCRIPTION + "Two further variables deprecated: + - flowRuleInfoRulesReady (use flowRuleInfoStatus intead) + - flowDataStatus (contains no useful information)" + + REVISION "9707071715Z" + DESCRIPTION + "Significant changes since RFC 2064 include: + - flowDataPackageTable added + - flowColumnActivityTable deprecated + - flowManagerCounterWrap deprecated" + + REVISION "9603080208Z" + DESCRIPTION + "Initial version of this MIB (RFC 2064)" + ::= { mib-2 40 } + +flowControl OBJECT IDENTIFIER ::= { flowMIB 1 } + +flowData OBJECT IDENTIFIER ::= { flowMIB 2 } + +flowRules OBJECT IDENTIFIER ::= { flowMIB 3 } + +flowMIBConformance OBJECT IDENTIFIER ::= { flowMIB 4 } + +-- Textual Conventions + +UTF8OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "127t" + STATUS current + DESCRIPTION + "An administratively assigned name for the owner of a + resource, conceptually the same as OwnerString in the RMON + MIB [RMON-MIB]. + + To facilitate internationalisation, this name information + is represented using the ISO/IEC IS 10646-1 character set, + encoded as an octet string using the UTF-8 transformation + format described in the UTF-8 standard [UTF-8]." + SYNTAX OCTET STRING (SIZE (0..127)) + +PeerType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of a PeerAddress (see below). The values + used are from the 'Address Family Numbers' section of the + Assigned Numbers RFC [ASG-NBR]. Peer types from other address + families may also be used, provided only that they are + identified by their assigned Address Family numbers." + SYNTAX INTEGER { + ipv4(1), + ipv6(2), + nsap(3), + ipx(11), + appletalk(12), + decnet(13) } + +PeerAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of a peer address for various network + protocols. Address format depends on the actual protocol, + as indicated below: + + IPv4: ipv4(1) + 4-octet IpAddress (defined in the SNMPv2 SMI [RFC2578]) + + IPv6: ipv6(2) + 16-octet IpAddress (defined in the + IPv6 Addressing RFC [V6-ADDR]) + + CLNS: nsap(3) + NsapAddress (defined in the SNMPv2 SMI [RFC2578]) + + Novell: ipx(11) + 4-octet Network number, + 6-octet Host number (MAC address) + + AppleTalk: appletalk(12) + 2-octet Network number (sixteen bits), + 1-octet Host number (eight bits) + + DECnet: decnet(13) + 1-octet Area number (in low-order six bits), + 2-octet Host number (in low-order ten bits) + " + SYNTAX OCTET STRING (SIZE (3..20)) + +AdjacentType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of an adjacent address. May be a medium + type or (if metering is taking place inside a tunnel) a + PeerType (see above). + + The values used for IEEE 802 medium types are from the 'Network + Management Parameters (ifType definitions)' section of the + Assigned Numbers RFC [ASG-NBR]. Other medium types may also + be used, provided only that they are identified by their + assigned ifType numbers." + SYNTAX INTEGER { + ip(1), + nsap(3), + ethernet(7), -- ethernet-like [ENET-OBJ], + -- includes ethernet-csmacd(6) + tokenring(9), + ipx(11), + appletalk(12), + decnet(13), + fddi(15) } + +AdjacentAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of an adjacent address. May be a Medium + Access Control (MAC) address or (if metering is taking place + inside a tunnel) a PeerAddress (see above). + + MAC Address format depends on the actual medium, as follows: + + Ethernet: ethernet(7) + 6-octet 802.3 MAC address in 'canonical' order + Token Ring: tokenring(9) + 6-octet 802.5 MAC address in 'canonical' order + + FDDI: fddi(15) + FddiMACLongAddress, i.e. a 6-octet MAC address + in 'canonical' order (defined in [FDDI-MIB]) + " + SYNTAX OCTET STRING (SIZE (3..20)) + +TransportType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of a TransportAddress (see below). Values + will depend on the actual protocol; for IP they will be those + given in the 'Protocol Numbers' section of the Assigned Numbers + RFC [ASG-NBR], including icmp(1), tcp(6) and udp(17)." + SYNTAX Integer32 (1..255) + +TransportAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of a transport address for various + network protocols. Format as follows: + + IP: + 2-octet UDP or TCP port number + + Other protocols: + 2-octet port number + " + SYNTAX OCTET STRING (SIZE (2)) + +RuleAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of an address. Is a superset of + MediumAddress, PeerAddress and TransportAddress." + SYNTAX OCTET STRING (SIZE (2..20)) + +FlowAttributeNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies an attribute within a flow data record." + SYNTAX INTEGER { + flowIndex(1), + flowStatus(2), + flowTimeMark(3), + sourceInterface(4), + sourceAdjacentType(5), + sourceAdjacentAddress(6), + sourceAdjacentMask(7), + sourcePeerType(8), + sourcePeerAddress(9), + sourcePeerMask(10), + sourceTransType(11), + sourceTransAddress(12), + sourceTransMask(13), + + destInterface(14), + destAdjacentType(15), + destAdjacentAddress(16), + destAdjacentMask(17), + destPeerType(18), + destPeerAddress(19), + destPeerMask(20), + destTransType(21), + destTransAddress(22), + destTransMask(23), + + pduScale(24), + octetScale(25), + + ruleSet(26), + toOctets(27), -- Source-to-Dest + toPDUs(28), + fromOctets(29), -- Dest-to-Source + fromPDUs(30), + firstTime(31), -- Activity times + lastActiveTime(32), + + sourceSubscriberID(33), -- Subscriber ID + destSubscriberID(34), + sessionID(35), + + sourceClass(36), -- Computed attributes + destClass(37), + flowClass(38), + sourceKind(39), + destKind(40), + flowKind(41) } + +RuleAttributeNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies an attribute which may be tested in + a rule. These include attributes whose values come directly + from (or are computed from) the flow's packets, and the five + 'meter' variables used to hold an Attribute Number." + SYNTAX INTEGER { + null(0), + sourceInterface(4), -- Source Address + sourceAdjacentType(5), + sourceAdjacentAddress(6), + sourcePeerType(8), + sourcePeerAddress(9), + sourceTransType(11), + sourceTransAddress(12), + + destInterface(14), -- Dest Address + destAdjacentType(15), + destAdjacentAddress(16), + destPeerType(18), + destPeerAddress(19), + destTransType(21), + destTransAddress(22), + + sourceSubscriberID(33), -- Subscriber ID + destSubscriberID(34), + sessionID(35), + + sourceClass(36), -- Computed attributes + destClass(37), + flowClass(38), + sourceKind(39), + destKind(40), + flowKind(41), + + matchingStoD(50), -- Packet matching + + v1(51), -- Meter variables + v2(52), + v3(53), + v4(54), + v5(55) } + +ActionNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies the action of a rule, i.e. the Pattern + Matching Engine's opcode number. Details of the opcodes + are given in the 'Traffic Flow Measurement: Architecture' + document [RTFM-ARC]." + SYNTAX INTEGER { + ignore(1), + noMatch(2), + count(3), + countPkt(4), + return(5), + gosub(6), + gosubAct(7), + assign(8), + assignAct(9), + goto(10), + gotoAct(11), + pushRuleTo(12), + pushRuleToAct(13), + pushPktTo(14), + pushPktToAct(15), + popTo(16), + popToAct(17) } + +-- +-- Control Group: RuleSet Info Table +-- + +flowRuleSetInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowRuleSetInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about the RuleSets held in the + meter. + + Any manager may configure a new RuleSet for the meter by + creating a row in this table with status active(1), and setting + values for all the objects in its rules. At this stage the new + RuleSet is available but not 'running', i.e. it is not being + used by the meter to produce entries in the flow table. + + To actually 'run' a RuleSet a manager must create a row in + the flowManagerInfoTable, set it's flowManagerStatus to + active(1), and set either its CurrentRuleSet or StandbyRuleSet + to point to the RuleSet to be run. + + Once a RuleSet is running a manager may not change any of the + objects within the RuleSet itself. Any attempt to do so should + result in a notWritable(17) SNMP error-status for such objects. + + A manager may stop a RuleSet running by removing all + references to it in the flowManagerInfoTable (i.e. by setting + CurrentRuleSet and StandbyRuleSet values to 0). This provides + a way to stop RuleSets left running if a manager fails. + For example, when a manager is started, it could search the + meter's flowManager table and stop all RuleSets having a + specified value of flowRuleInfoOwner. + + To prevent a manager from interfering with variables belonging + to another manager, the meter should use MIB views [RFC2575] so + as to limit each manager's access to the meter's variables, + effectively dividing the single meter into several virtual + meters, one for each independent manager." + ::= { flowControl 1 } + +flowRuleSetInfoEntry OBJECT-TYPE + SYNTAX FlowRuleSetInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular RuleSet." + INDEX { flowRuleInfoIndex } + ::= { flowRuleSetInfoTable 1 } + +FlowRuleSetInfoEntry ::= SEQUENCE { + flowRuleInfoIndex Integer32, + flowRuleInfoSize Integer32, + flowRuleInfoOwner UTF8OwnerString, + flowRuleInfoTimeStamp TimeStamp, + flowRuleInfoStatus RowStatus, + flowRuleInfoName OCTET STRING, + flowRuleInfoRulesReady TruthValue, + flowRuleInfoFlowRecords Integer32 + } + +flowRuleInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowRuleSetInfoTable. + Each such entry contains control information for a particular + RuleSet which the meter may run." + ::= { flowRuleSetInfoEntry 1 } + +flowRuleInfoSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Number of rules in this RuleSet. Setting this variable will + cause the meter to allocate space for these rules." + ::= { flowRuleSetInfoEntry 2 } + +flowRuleInfoOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the manager which 'owns' this RuleSet. A manager + must set this variable when creating a row in this table." + ::= { flowRuleSetInfoEntry 3 } + +flowRuleInfoTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this row's associated RuleSet was last changed." + ::= { flowRuleSetInfoEntry 4 } + +flowRuleInfoStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this flowRuleSetInfoEntry. If this value is + not active(1) the meter must not attempt to use the row's + associated RuleSet. Once its value has been set to active(1) + a manager may not change any of the other variables in the + row, nor the contents of the associated RuleSet. Any attempt + to do so should result in a notWritable(17) SNMP error-status + for such variables or objects. + + To download a RuleSet, a manger could: + - Locate an open slot in the RuleSetInfoTable. + - Create a RuleSetInfoEntry by setting the status for this + open slot to createAndWait(5). + - Set flowRuleInfoSize and flowRuleInfoName as required. + - Download the rules into the row's rule table. + - Set flowRuleInfoStatus to active(1). + + The RuleSet would then be ready to run. The manager is not + allowed to change the value of flowRuleInfoStatus from + active(1) if the associated RuleSet is being referenced by any + of the entries in the flowManagerInfoTable. + + Setting RuleInfoStatus to destroy(6) destroys the associated + RuleSet together with any flow data collected by it." + ::= { flowRuleSetInfoEntry 5 } + +flowRuleInfoName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alphanumeric identifier used by managers and readers to + identify a RuleSet. For example, a manager wishing to run a + RuleSet named WWW-FLOWS could search the flowRuleSetInfoTable + to see whether the WWW-FLOWS RuleSet is already available on + the meter. + + Note that references to RuleSets in the flowManagerInfoTable + use indexes for their flowRuleSetInfoTable entries. These may + be different each time the RuleSet is loaded into a meter." + ::= { flowRuleSetInfoEntry 6 } + +flowRuleInfoRulesReady OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Indicates whether the rules for this row's associated RuleSet + are ready for use. The meter will refuse to 'run' the RuleSet + unless this variable has been set to true(1). + While RulesReady is false(2), the manager may modify the + RuleSet, for example by downloading rules into it." + ::= { flowRuleSetInfoEntry 7 } + +flowRuleInfoFlowRecords OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the flow table for this RuleSet. + These may be current (waiting for collection by one or more + meter readers) or idle (waiting for the meter to recover + their memory)." + ::= { flowRuleSetInfoEntry 8 } + +-- +-- Control Group: Interface Info Table +-- + +flowInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information specific to each meter interface." + ::= { flowControl 2 } + +flowInterfaceEntry OBJECT-TYPE + SYNTAX FlowInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular interface." + INDEX { ifIndex } + ::= { flowInterfaceTable 1 } + +FlowInterfaceEntry ::= SEQUENCE { + flowInterfaceSampleRate Integer32, + flowInterfaceLostPackets Counter32 + } + +flowInterfaceSampleRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The parameter N for statistical counting on this interface. + Set to N to count 1/Nth of the packets appearing at this + interface. A sampling rate of 1 counts all packets. + A sampling rate of 0 results in the interface being ignored + by the meter. + + A meter should choose its own algorithm to introduce variance + into the sampling so that exactly every Nth packet is counted. + The IPPM Working Group's RFC 'Framework for IP Performance + Metrics' [IPPM-FRM] explains why this should be done, and sets + out an algorithm for doing it." + DEFVAL { 1 } + ::= { flowInterfaceEntry 1 } + +flowInterfaceLostPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets the meter has lost for this interface. + Such losses may occur because the meter has been unable to + keep up with the traffic volume." + ::= { flowInterfaceEntry 2 } + +-- +-- Control Group: Meter Reader Info Table +-- + +-- Any meter reader wishing to collect data reliably for flows +-- should first create a row in this table. It should write that +-- row's flowReaderLastTime object each time it starts a collection +-- pass through the flow table. + +-- If a meter reader (MR) does not create a row in this table, e.g. +-- because its MIB view [RFC2575] did not allow MR create access to +-- flowReaderStatus, collection can still proceed but the meter will +-- not be aware of meter reader MR. This could lead the meter to +-- recover flows before they have been collected by MR. + +flowReaderInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowReaderInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about meter readers which have + registered their intent to collect flow data from this meter." + ::= { flowControl 3 } + +flowReaderInfoEntry OBJECT-TYPE + SYNTAX FlowReaderInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular meter reader." + INDEX { flowReaderIndex } + ::= { flowReaderInfoTable 1 } + +FlowReaderInfoEntry ::= SEQUENCE { + flowReaderIndex Integer32, + flowReaderTimeout Integer32, + flowReaderOwner UTF8OwnerString, + flowReaderLastTime TimeStamp, + flowReaderPreviousTime TimeStamp, + flowReaderStatus RowStatus, + flowReaderRuleSet Integer32 + } + +flowReaderIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowReaderInfoTable." + ::= { flowReaderInfoEntry 1 } + +flowReaderTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time (in seconds) between flow data + collections for this meter reader. If this time elapses + without a collection, the meter should assume that this meter + reader has stopped collecting, and delete this row from the + table. A value of zero indicates that this row should not be + timed out." + ::= { flowReaderInfoEntry 2 } + +flowReaderOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the meter reader which created this row." + ::= { flowReaderInfoEntry 3 } + +flowReaderLastTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time this meter reader began its most recent data collection. + + This variable should be written by a meter reader as its first + step in reading flow data. The meter will set this LastTime + value to its current Uptime, and set its PreviousTime value + (below) to the old LastTime. This allows the meter to + recover flows which have been inactive since PreviousTime, + for these have been collected at least once. + + If the meter reader fails to write flowLastReadTime, collection + may still proceed but the meter may not be able to recover + inactive flows until the flowReaderTimeout has been reached + for this entry." + ::= { flowReaderInfoEntry 4 } + +flowReaderPreviousTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this meter reader began the collection before last." + ::= { flowReaderInfoEntry 5 } + +flowReaderStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this FlowReaderInfoEntry. A value of active(1) + implies that the associated reader should be collecting data + from the meter. Once this variable has been set to active(1) + a manager may only change this row's flowReaderLastTime and + flowReaderTimeout variables." + ::= { flowReaderInfoEntry 6 } + +flowReaderRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index to the array of RuleSets. Specifies a set of rules + of interest to this meter reader. The reader will attempt to + collect any data generated by the meter for this RuleSet, and + the meter will not recover the memory of any of the RuleSet's + flows until this collection has taken place. Note that a + reader may have entries in this table for several RuleSets." + ::= { flowReaderInfoEntry 7 } + +-- +-- Control Group: Manager Info Table +-- + +-- Any manager wishing to run a RuleSet must create a row in this +-- table. Once it has a table row, the manager may set the control +-- variables in its row so as to cause the meter to run any valid +-- RuleSet held by the meter. + +-- A single manager may run several RuleSets; it must create a row +-- in this table for each of them. In short, each row of this table +-- describes (and controls) a 'task' which the meter is executing. + +flowManagerInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowManagerInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about managers which have + registered their intent to run RuleSets on this meter." + ::= { flowControl 4 } + +flowManagerInfoEntry OBJECT-TYPE + SYNTAX FlowManagerInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular meter 'task.' By creating + an entry in this table and activating it, a manager requests + that the meter 'run' the indicated RuleSet. + + The entry also specifies a HighWaterMark and a StandbyRuleSet. + If the meter's flow table usage exceeds this task's + HighWaterMark the meter will stop running the task's + CurrentRuleSet and switch to its StandbyRuleSet. + + If the value of the task's StandbyRuleSet is 0 when its + HighWaterMark is exceeded, the meter simply stops running the + task's CurrentRuleSet. By careful selection of HighWaterMarks + for the various tasks a manager can ensure that the most + critical RuleSets are the last to stop running as the number + of flows increases. + + When a manager has determined that the demand for flow table + space has abated, it may cause the task to switch back to its + CurrentRuleSet by setting its flowManagerRunningStandby + variable to false(2)." + INDEX { flowManagerIndex } + ::= { flowManagerInfoTable 1 } + +FlowManagerInfoEntry ::= SEQUENCE { + flowManagerIndex Integer32, + flowManagerCurrentRuleSet Integer32, + flowManagerStandbyRuleSet Integer32, + flowManagerHighWaterMark Integer32, + flowManagerCounterWrap INTEGER, + flowManagerOwner UTF8OwnerString, + flowManagerTimeStamp TimeStamp, + flowManagerStatus RowStatus, + flowManagerRunningStandby TruthValue + } + +flowManagerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowManagerInfoTable." + ::= { flowManagerInfoEntry 1 } + +flowManagerCurrentRuleSet OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index to the array of RuleSets. Specifies which set of + rules is the 'current' one for this task. The meter will + be 'running' the current RuleSet if this row's + flowManagerRunningStandby value is false(2). + + When the manager sets this variable the meter will stop using + the task's old current RuleSet and start using the new one. + Specifying RuleSet 0 (the empty set) stops flow measurement + for this task." + ::= { flowManagerInfoEntry 2 } + +flowManagerStandbyRuleSet OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index to the array of RuleSets. After reaching HighWaterMark + (see below) the manager will switch to using the task's + StandbyRuleSet in place of its CurrentRuleSet. For this to be + effective the designated StandbyRuleSet should have a coarser + reporting granularity then the CurrentRuleSet. The manager may + also need to decrease the meter reading interval so that the + meter can recover flows measured by this task's CurrentRuleSet." + DEFVAL { 0 } -- No standby + ::= { flowManagerInfoEntry 3 } + +flowManagerHighWaterMark OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value expressed as a percentage, interpreted by the meter + as an indication of how full the flow table should be before + it should switch to the standby RuleSet (if one has been + specified) for this task. Values of 0% or 100% disable the + checking represented by this variable." + ::= { flowManagerInfoEntry 4 } + +flowManagerCounterWrap OBJECT-TYPE + SYNTAX INTEGER { wrap(1), scale(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies whether PDU and octet counters should wrap when + they reach the top of their range (normal behaviour for + Counter64 objects), or whether their scale factors should + be used instead. The combination of counter and scale + factor allows counts to be returned as non-negative binary + floating point numbers, with 64-bit mantissas and 8-bit + exponents." + DEFVAL { wrap } + ::= { flowManagerInfoEntry 5 } + +flowManagerOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the manager which created this row." + ::= { flowManagerInfoEntry 6 } + +flowManagerTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this row was last changed by its manager." + ::= { flowManagerInfoEntry 7 } + +flowManagerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row in the flowManagerInfoTable. A value + of active(1) implies that this task may be activated, by + setting its CurrentRuleSet and StandbyRuleSet variables. + Its HighWaterMark and RunningStandby variables may also be + changed." + ::= { flowManagerInfoEntry 8 } + +flowManagerRunningStandby OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Set to true(1) by the meter to indicate that it has switched + to runnning this task's StandbyRuleSet in place of its + CurrentRuleSet. To switch back to the CurrentRuleSet, the + manager may simply set this variable to false(2)." + DEFVAL { false } + ::= { flowManagerInfoEntry 9 } + +-- +-- Control Group: General Meter Control Variables +-- + +flowFloodMark OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value expressed as a percentage, interpreted by the meter + as an indication of how full the flow table should be before + it should take some action to avoid running out of resources + to handle new flows, as discussed in section 4.6 (Handling + Increasing Traffic Levels) of the RTFM Architecture RFC + [RTFM-ARC]. + + Values of 0% or 100% disable the checking represented by + this variable." + DEFVAL { 95 } -- Enabled by default. + ::= { flowControl 5 } + +flowInactivityTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time in seconds since the last packet seen, after which + a flow becomes 'idle.' Note that although a flow may be + idle, it will not be discarded (and its memory recovered) + until after its data has been collected by all the meter + readers registered for its RuleSet." + DEFVAL { 600 } -- 10 minutes + ::= { flowControl 6 } + +flowActiveFlows OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of flows which are currently in use." + ::= { flowControl 7 } + +flowMaxFlows OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of flows allowed in the meter's + flow table. At present this is determined when the meter + is first started up." + ::= { flowControl 8 } + +flowFloodMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates that the meter has passed its FloodMark and is + not running in its normal mode. + + When the manager notices this it should take action to remedy + the problem which caused the flooding. It should then monitor + flowActiveFlows so as to determine when the flood has receded. + At that point the manager may set flowFloodMode to false(2) to + resume normal operation." + ::= { flowControl 9 } + +-- +-- The Flow Table +-- + +-- This is a table kept by a meter, with one flow data entry for every +-- flow being measured. Each flow data entry stores the attribute +-- values for a traffic flow. Details of flows and their attributes +-- are given in the 'Traffic Flow Measurement: Architecture' +-- document [RTFM-ARC]. + +-- From time to time a meter reader may sweep the flow table so as +-- to read counts. This is most effectively achieved by using the +-- TimeMark variable together with successive GetBulk requests to +-- retrieve the values of the desired flow attribute variables. + +-- This scheme allows multiple meter readers to independently use the +-- same meter; the meter readers do not have to be synchronised and +-- they may use different collection intervals. + +-- If identical sets of counts are required from a meter, a manager +-- could achieve this using two identical copies of a RuleSet in that +-- meter and switching back and forth between them. This is discussed +-- further in the RTFM Architecture document [RTFM-ARC]. + +flowDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of all flows being measured." + ::= { flowData 1 } + +flowDataEntry OBJECT-TYPE + SYNTAX FlowDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The flow data record for a particular flow." + INDEX { flowDataRuleSet, flowDataTimeMark, flowDataIndex } + ::= { flowDataTable 1 } + +FlowDataEntry ::= SEQUENCE { + flowDataIndex Integer32, + flowDataTimeMark TimeFilter, + flowDataStatus INTEGER, + + flowDataSourceInterface Integer32, + flowDataSourceAdjacentType AdjacentType, + flowDataSourceAdjacentAddress AdjacentAddress, + flowDataSourceAdjacentMask AdjacentAddress, + flowDataSourcePeerType PeerType, + flowDataSourcePeerAddress PeerAddress, + flowDataSourcePeerMask PeerAddress, + flowDataSourceTransType TransportType, + flowDataSourceTransAddress TransportAddress, + flowDataSourceTransMask TransportAddress, + + flowDataDestInterface Integer32, + flowDataDestAdjacentType AdjacentType, + flowDataDestAdjacentAddress AdjacentAddress, + flowDataDestAdjacentMask AdjacentAddress, + flowDataDestPeerType PeerType, + flowDataDestPeerAddress PeerAddress, + flowDataDestPeerMask PeerAddress, + flowDataDestTransType TransportType, + flowDataDestTransAddress TransportAddress, + flowDataDestTransMask TransportAddress, + + flowDataPDUScale Integer32, + flowDataOctetScale Integer32, + + flowDataRuleSet Integer32, + flowDataToOctets Counter64, -- Source->Dest + flowDataToPDUs Counter64, + flowDataFromOctets Counter64, -- Dest->Source + flowDataFromPDUs Counter64, + flowDataFirstTime TimeStamp, -- Activity times + flowDataLastActiveTime TimeStamp, + + flowDataSourceSubscriberID OCTET STRING, + flowDataDestSubscriberID OCTET STRING, + flowDataSessionID OCTET STRING, + + flowDataSourceClass Integer32, + flowDataDestClass Integer32, + flowDataClass Integer32, + flowDataSourceKind Integer32, + flowDataDestKind Integer32, + flowDataKind Integer32 + } + +flowDataIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Value of this flow data record's index within the meter's + flow table." + ::= { flowDataEntry 1 } + +flowDataTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. Allows GetNext and GetBulk + to find flow table rows which have changed since a specified + value of the meter's Uptime." + ::= { flowDataEntry 2 } + +flowDataStatus OBJECT-TYPE + SYNTAX INTEGER { inactive(1), current(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Status of this flow data record." + ::= { flowDataEntry 3 } + +flowDataSourceInterface OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index of the interface associated with the source address + for this flow. It's value is one of those contained in the + ifIndex field of the meter's interfaces table." + ::= { flowDataEntry 4 } + +flowDataSourceAdjacentType OBJECT-TYPE + SYNTAX AdjacentType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Adjacent address type of the source for this flow. + + If metering is being performed at the network level, + AdjacentType will indicate the medium for the interface on + which the flow was observed and AdjacentAddress will be the + MAC address for that interface. This is the usual case. + + If traffic is being metered inside a tunnel, AdjacentType will + be the peer type of the host at the end of the tunnel and + AdjacentAddress will be the peer address for that host." + ::= { flowDataEntry 5 } + +flowDataSourceAdjacentAddress OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the adjacent device on the path for the source + for this flow." + ::= { flowDataEntry 6 } + +flowDataSourceAdjacentMask OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the adjacent source address for this flow." + ::= { flowDataEntry 7 } + +flowDataSourcePeerType OBJECT-TYPE + SYNTAX PeerType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Peer address type of the source for this flow." + ::= { flowDataEntry 8 } + +flowDataSourcePeerAddress OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the peer device for the source of this flow." + ::= { flowDataEntry 9 } + +flowDataSourcePeerMask OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the source peer address for this flow." + ::= { flowDataEntry 10 } + +flowDataSourceTransType OBJECT-TYPE + SYNTAX TransportType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address type of the source for this flow. The + value of this attribute will depend on the peer address type." + ::= { flowDataEntry 11 } + +flowDataSourceTransAddress OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address for the source of this flow." + ::= { flowDataEntry 12 } + +flowDataSourceTransMask OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the transport source address for this flow." + ::= { flowDataEntry 13 } + +flowDataDestInterface OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index of the interface associated with the dest address for + this flow. This value is one of the values contained in the + ifIndex field of the interfaces table." + ::= { flowDataEntry 14 } + +flowDataDestAdjacentType OBJECT-TYPE + SYNTAX AdjacentType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Adjacent address type of the destination for this flow." + ::= { flowDataEntry 15 } + +flowDataDestAdjacentAddress OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the adjacent device on the path for the + destination for this flow." + ::= { flowDataEntry 16 } + +flowDataDestAdjacentMask OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the adjacent destination address for this flow." + ::= { flowDataEntry 17 } + +flowDataDestPeerType OBJECT-TYPE + SYNTAX PeerType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Peer address type of the destination for this flow." + ::= { flowDataEntry 18 } + +flowDataDestPeerAddress OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the peer device for the destination of this flow." + ::= { flowDataEntry 19 } + +flowDataDestPeerMask OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the destination peer type for this flow." + ::= { flowDataEntry 20 } + +flowDataDestTransType OBJECT-TYPE + SYNTAX TransportType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address type of the destination for this flow. The + value of this attribute will depend on the peer address type." + ::= { flowDataEntry 21 } + +flowDataDestTransAddress OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address for the destination of this flow." + ::= { flowDataEntry 22 } + +flowDataDestTransMask OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the transport destination address for this flow." + ::= { flowDataEntry 23 } + +flowDataPDUScale OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor applied to this particular flow. Indicates + the number of bits the PDU counter values should be moved left + to obtain the actual values." + ::= { flowDataEntry 24 } + +flowDataOctetScale OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor applied to this particular flow. Indicates + the number of bits the octet counter values should be moved + left to obtain the actual values." + ::= { flowDataEntry 25 } + +flowDataRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RuleSet number of the RuleSet which created this flow. + Allows a manager to use GetNext or GetBulk requests to find + flows belonging to a particular RuleSet." + ::= { flowDataEntry 26 } + +flowDataToOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of octets flowing from source to destination + for this flow." + ::= { flowDataEntry 27 } + +flowDataToPDUs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets flowing from source to destination + for this flow." + ::= { flowDataEntry 28 } + +flowDataFromOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of octets flowing from destination to source + for this flow." + ::= { flowDataEntry 29 } + +flowDataFromPDUs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets flowing from destination to source + for this flow." + ::= { flowDataEntry 30 } + +flowDataFirstTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this flow was first entered in the table" + ::= { flowDataEntry 31 } + +flowDataLastActiveTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last time this flow had activity, i.e. the time of + arrival of the most recent PDU belonging to this flow." + ::= { flowDataEntry 32 } + +flowDataSourceSubscriberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Subscriber ID associated with the source address for this + flow. A Subscriber ID is an unspecified text string, used + to ascribe traffic flows to individual users. At this time + the means by which a Subscriber ID may be associated with a + flow is unspecified." + ::= { flowDataEntry 33 } + +flowDataDestSubscriberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Subscriber ID associated with the destination address for + this flow. A Subscriber ID is an unspecified text string, + used to ascribe traffic flows to individual users. At this + time the means by which a Subscriber ID may be associated + with a flow is unspecified." + ::= { flowDataEntry 34 } + +flowDataSessionID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Session ID for this flow. Such an ID might be allocated + by a network access server to distinguish a series of sessions + between the same pair of addresses, which would otherwise + appear to be parts of the same accounting flow." + ::= { flowDataEntry 35 } + +flowDataSourceClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source class for this flow. Determined by the rules, set by + a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 36 } + +flowDataDestClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination class for this flow. Determined by the rules, set + by a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 37 } + +flowDataClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Class for this flow. Determined by the rules, set by a + PushRule action when this flow was entered in the table." + ::= { flowDataEntry 38 } + +flowDataSourceKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source kind for this flow. Determined by the rules, set by + a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 39 } + +flowDataDestKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination kind for this flow. Determined by the rules, set + by a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 40 } + +flowDataKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Class for this flow. Determined by the rules, set by a + PushRule action when this flow was entered in the table." + ::= { flowDataEntry 41 } + +-- +-- The Activity Column Table +-- + +flowColumnActivityTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowColumnActivityEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index into the Flow Table. Allows a meter reader to retrieve + a list containing the flow table indexes of flows which were + last active at or after a given time, together with the values + of a specified attribute for each such flow." + ::= { flowData 2 } + +flowColumnActivityEntry OBJECT-TYPE + SYNTAX FlowColumnActivityEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The Column Activity Entry for a particular attribute, + activity time and flow." + INDEX { flowColumnActivityAttribute, flowColumnActivityTime, + flowColumnActivityIndex } + ::= { flowColumnActivityTable 1 } + +FlowColumnActivityEntry ::= SEQUENCE { + flowColumnActivityAttribute FlowAttributeNumber, + flowColumnActivityTime TimeFilter, + flowColumnActivityIndex Integer32, + flowColumnActivityData OCTET STRING + } + +flowColumnActivityAttribute OBJECT-TYPE + SYNTAX FlowAttributeNumber + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Specifies the attribute for which values are required from + active flows." + ::= { flowColumnActivityEntry 1 } + +flowColumnActivityTime OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This variable is a copy of flowDataLastActiveTime in the + flow data record identified by the flowColumnActivityIndex + value of this flowColumnActivityTable entry." + ::= { flowColumnActivityEntry 2 } + +flowColumnActivityIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Index of a flow table entry which was active at or after + a specified flowColumnActivityTime." + ::= { flowColumnActivityEntry 3 } + +flowColumnActivityData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3..1000)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Collection of attribute data for flows active after + flowColumnActivityTime. Within the OCTET STRING is a + sequence of { flow index, attribute value } pairs, one for + each active flow. The end of the sequence is marked by a + flow index value of 0, indicating that there are no more + rows in this column. + + The format of objects inside flowColumnFlowData is as follows. + All numbers are unsigned. Numbers and strings appear with + their high-order bytes leading. Numbers are fixed size, as + specified by their SYNTAX in the flow table (above), i.e. one + octet for flowAddressType and small constants, and four octets + for Counter and TimeStamp. Strings are variable-length, with + the length given in a single leading octet. + + The following is an attempt at an ASN.1 definition of + flowColumnActivityData: + + flowColumnActivityData ::= SEQUENCE flowRowItemEntry + flowRowItemEntry ::= SEQUENCE { + flowRowNumber Integer32 (1..65535), + -- 0 indicates the end of this column + flowDataValue flowDataType -- Choice depends on attribute + } + flowDataType ::= CHOICE { + flowByteValue Integer32 (1..255), + flowShortValue Integer32 (1..65535), + flowLongValue Integer32, + flowStringValue OCTET STRING -- Length (n) in first byte, + -- n+1 bytes total length, trailing zeroes truncated + }" + ::= { flowColumnActivityEntry 4 } + +-- +-- The Data Package Table +-- + +flowDataPackageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowDataPackageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index into the Flow Table. Allows a meter reader to retrieve + a sequence containing the values of a specified set of + attributes for a flow which came from a specified RuleSet and + which was last active at or after a given time." + ::= { flowData 3 } + +flowDataPackageEntry OBJECT-TYPE + SYNTAX FlowDataPackageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data package containing selected variables from + active rows in the flow table." + INDEX { flowPackageSelector, + flowPackageRuleSet, flowPackageTime, flowPackageIndex } + ::= { flowDataPackageTable 1 } + +FlowDataPackageEntry ::= SEQUENCE { + flowPackageSelector OCTET STRING, + flowPackageRuleSet Integer32, + flowPackageTime TimeFilter, + flowPackageIndex Integer32, + flowPackageData OCTET STRING + } + +flowPackageSelector OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the attributes for which values are required from + an active flow. These are encoded as a sequence of octets + each containing a FlowAttribute number, preceded by an octet + giving the length of the sequence (not including the length + octet). For a flowPackageSelector to be valid, it must + contain at least one attribute." + ::= { flowDataPackageEntry 1 } + +flowPackageRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the index (in the flowRuleSetInfoTable) of the rule + set which produced the required flow." + ::= { flowDataPackageEntry 2 } + +flowPackageTime OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable is a copy of flowDataLastActiveTime in the + flow data record identified by the flowPackageIndex + value of this flowPackageTable entry." + ::= { flowDataPackageEntry 3 } + +flowPackageIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of a flow table entry which was active at or after + a specified flowPackageTime." + ::= { flowDataPackageEntry 4 } + +flowPackageData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A collection of attribute values for a single flow, as + specified by this row's indexes. The attribute values are + contained within a BER-encoded sequence [ASN-1, ASN-BER], + in the order they appear in their flowPackageSelector. + + For example, to retrieve a flowPackage containing values for + attributes 11, 18 and 29, for a flow in RuleSet 7, with flow + index 3447, one would GET the package whose Object Identifier + (OID) is + flowPackageData . 3.11.18.29 . 7. 0 . 3447 + + To get a package for the next such flow which had been + active since time 12345 one would GETNEXT the package whose + Object Identifier (OID) is + flowPackageData . 3.11.18.29 . 7. 12345 . 3447" + ::= { flowDataPackageEntry 5 } + +-- +-- The Rule Table +-- + +-- This is an array of RuleSets; the 'running' ones are indicated +-- by the entries in the meter's flowManagerInfoTable. Several +-- RuleSets can be held in a meter so that the manager can change the +-- running RuleSets easily, for example with time of day. Note that +-- a manager may not change the rules in any RuleSet currently +-- referenced within the flowManagerInfoTable (either as 'current' or +-- 'standby')! See the 'Traffic Flow Measurement: Architecture' +-- document [RTFM-ARC] for details of rules and how they are used. + +-- Space for a RuleSet is allocated by setting the value of +-- flowRuleInfoSize in the rule table's flowRuleSetInfoTable row. +-- Values for each row in the RuleSet (Selector, Mask, MatchedValue, +-- Action and Parameter) can then be set by the meter. + +-- Although an individual rule within a RuleSet could be modified, +-- it is much safer to simply download a complete new RuleSet. + +flowRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains all the RuleSets which may be used by the meter." + ::= { flowRules 1 } + +flowRuleEntry OBJECT-TYPE + SYNTAX FlowRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The rule record itself." + INDEX { flowRuleSet, flowRuleIndex } + ::= { flowRuleTable 1 } + +FlowRuleEntry ::= SEQUENCE { + flowRuleSet Integer32, + flowRuleIndex Integer32, + flowRuleSelector RuleAttributeNumber, + flowRuleMask RuleAddress, + flowRuleMatchedValue RuleAddress, + flowRuleAction ActionNumber, + flowRuleParameter Integer32 + } + +flowRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Selects a RuleSet from the array of RuleSets." + ::= { flowRuleEntry 1 } + +flowRuleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the Rule table. N.B: These values will + normally be consecutive, given the fall-through semantics + of processing the table." + ::= { flowRuleEntry 2 } + +flowRuleSelector OBJECT-TYPE + SYNTAX RuleAttributeNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the attribute to be matched. + + null(0) is a special case; null rules always succeed. + matchingStoD(50) is set by the meter's Packet Matching Engine. + Its value is true(1) if the PME is attempting to match the + packet with its addresses in Source-to-Destination order (i.e. + as they appear in the packet), and false(2) otherwise. + Details of how packets are matched are given in the 'Traffic + Flow Measurement: Architecture' document [RTFM-ARC]. + v1(51), v2(52), v3(53), v4(54) and v5(55) select meter + variables, each of which can hold the name (i.e. selector + value) of an address attribute. When one of these is used + as a selector, its value specifies the attribute to be + tested. Variable values are set by an Assign action." + ::= { flowRuleEntry 3 } + +flowRuleMask OBJECT-TYPE + SYNTAX RuleAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The initial mask used to compute the desired value. If the + mask is zero the rule's test will always succeed." + ::= { flowRuleEntry 4 } + +flowRuleMatchedValue OBJECT-TYPE + SYNTAX RuleAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The resulting value to be matched for equality. + Specifically, if the attribute chosen by the flowRuleSelector + logically ANDed with the mask specified by the flowRuleMask + equals the value specified in the flowRuleMatchedValue, then + continue processing the table entry based on the action + specified by the flowRuleAction entry. Otherwise, proceed to + the next entry in the rule table." + ::= { flowRuleEntry 5 } + +flowRuleAction OBJECT-TYPE + SYNTAX ActionNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The action to be taken if this rule's test succeeds, or if + the meter's 'test' flag is off. Actions are opcodes for the + meter's Packet Matching Engine; details are given in the + 'Traffic Flow Measurement: Architecture' document [RTFM-ARC]." + ::= { flowRuleEntry 6 } + +flowRuleParameter OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A parameter value providing extra information for this rule's + action. Most of the actions use the parameter value to specify + which rule to execute after this rule's test has failed; details + are given in the 'Traffic Flow Measurement: Architecture' + document [RTFM-ARC]." + ::= { flowRuleEntry 7 } + +-- +-- Traffic Flow Meter conformance statement +-- + +flowMIBCompliances + OBJECT IDENTIFIER ::= { flowMIBConformance 1 } + +flowMIBGroups + OBJECT IDENTIFIER ::= { flowMIBConformance 2 } + +flowControlGroup OBJECT-GROUP + OBJECTS { + flowRuleInfoSize, flowRuleInfoOwner, + flowRuleInfoTimeStamp, flowRuleInfoStatus, + flowRuleInfoName, + flowRuleInfoRulesReady, + flowRuleInfoFlowRecords, + flowInterfaceSampleRate, + flowInterfaceLostPackets, + flowReaderTimeout, flowReaderOwner, + flowReaderLastTime, flowReaderPreviousTime, + flowReaderStatus, flowReaderRuleSet, + flowManagerCurrentRuleSet, flowManagerStandbyRuleSet, + flowManagerHighWaterMark, + flowManagerCounterWrap, + flowManagerOwner, flowManagerTimeStamp, + flowManagerStatus, flowManagerRunningStandby, + flowFloodMark, + flowInactivityTimeout, flowActiveFlows, + flowMaxFlows, flowFloodMode } + STATUS deprecated + DESCRIPTION + "The control group defines objects which are used to control + an accounting meter." + ::= {flowMIBGroups 1 } + +flowDataTableGroup OBJECT-GROUP + OBJECTS { +-- flowDataIndex, <- INDEX, not-accessible + flowDataStatus, + flowDataSourceInterface, + flowDataSourceAdjacentType, + flowDataSourceAdjacentAddress, flowDataSourceAdjacentMask, + flowDataSourcePeerType, + flowDataSourcePeerAddress, flowDataSourcePeerMask, + flowDataSourceTransType, + flowDataSourceTransAddress, flowDataSourceTransMask, + flowDataDestInterface, + flowDataDestAdjacentType, + flowDataDestAdjacentAddress, flowDataDestAdjacentMask, + flowDataDestPeerType, + flowDataDestPeerAddress, flowDataDestPeerMask, + flowDataDestTransType, + flowDataDestTransAddress, flowDataDestTransMask, +-- flowDataRuleSet, <- INDEX, not-accessible + flowDataToOctets, flowDataToPDUs, + flowDataFromOctets, flowDataFromPDUs, + flowDataFirstTime, flowDataLastActiveTime, + flowDataSourceClass, flowDataDestClass, flowDataClass, + flowDataSourceKind, flowDataDestKind, flowDataKind + } + STATUS deprecated + DESCRIPTION + "The flow table group defines objects which provide the + structure for the flow table, including the creation time + and activity time indexes into it. In addition it defines + objects which provide a base set of flow attributes for the + adjacent, peer and transport layers, together with a flow's + counters and times. Finally it defines a flow's class and + kind attributes, which are set by rule actions." + ::= {flowMIBGroups 2 } + +flowDataScaleGroup OBJECT-GROUP + OBJECTS { + flowManagerCounterWrap, + flowDataPDUScale, flowDataOctetScale + } + STATUS deprecated + DESCRIPTION + "The flow scale group defines objects which specify scale + factors for counters." + ::= {flowMIBGroups 3 } + +flowDataSubscriberGroup OBJECT-GROUP + OBJECTS { + flowDataSourceSubscriberID, flowDataDestSubscriberID, + flowDataSessionID + } + STATUS current + DESCRIPTION + "The flow subscriber group defines objects which may be used + to identify the end point(s) of a flow." + ::= {flowMIBGroups 4 } + +flowDataColumnTableGroup OBJECT-GROUP + OBJECTS { + flowColumnActivityAttribute, + flowColumnActivityIndex, + flowColumnActivityTime, + flowColumnActivityData + } + STATUS deprecated + DESCRIPTION + "The flow column table group defines objects which can be used + to collect part of a column of attribute values from the flow + table." + ::= {flowMIBGroups 5 } + +flowDataPackageGroup OBJECT-GROUP + OBJECTS { + flowPackageData + } + STATUS current + DESCRIPTION + "The data package group defines objects which can be used + to collect a specified set of attribute values from a row of + the flow table." + ::= {flowMIBGroups 6 } + +flowRuleTableGroup OBJECT-GROUP + OBJECTS { + flowRuleSelector, + flowRuleMask, flowRuleMatchedValue, + flowRuleAction, flowRuleParameter + } + STATUS current + DESCRIPTION + "The rule table group defines objects which hold the set(s) + of rules specifying which traffic flows are to be accounted + for." + ::= {flowMIBGroups 7 } + +flowDataScaleGroup2 OBJECT-GROUP + OBJECTS { +-- flowManagerCounterWrap, <- Deprecated + flowDataPDUScale, flowDataOctetScale + } + STATUS current + DESCRIPTION + "The flow scale group defines objects which specify scale + factors for counters. This group replaces the earlier + version of flowDataScaleGroup above (now deprecated)." + ::= {flowMIBGroups 8} + +flowControlGroup2 OBJECT-GROUP + OBJECTS { + flowRuleInfoSize, flowRuleInfoOwner, + flowRuleInfoTimeStamp, flowRuleInfoStatus, + flowRuleInfoName, +-- flowRuleInfoRulesReady, <- Deprecated + flowRuleInfoFlowRecords, + flowInterfaceSampleRate, + flowInterfaceLostPackets, + flowReaderTimeout, flowReaderOwner, + flowReaderLastTime, flowReaderPreviousTime, + flowReaderStatus, flowReaderRuleSet, + flowManagerCurrentRuleSet, flowManagerStandbyRuleSet, + flowManagerHighWaterMark, +-- flowManagerCounterWrap, <- Moved to DataScaleGroup + flowManagerOwner, flowManagerTimeStamp, + flowManagerStatus, flowManagerRunningStandby, + flowFloodMark, + flowInactivityTimeout, flowActiveFlows, + flowMaxFlows, flowFloodMode } + STATUS current + DESCRIPTION + "The control group defines objects which are used to control + an accounting meter. It replaces the earlier version of + flowControlGroup above (now deprecated)." + ::= {flowMIBGroups 9 } + +flowMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for a Traffic Flow Meter." + MODULE + MANDATORY-GROUPS { + flowControlGroup2, + flowDataTableGroup, + flowDataPackageGroup, + flowRuleTableGroup + } + ::= { flowMIBCompliances 1 } + +END diff --git a/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB b/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB new file mode 100644 index 0000000..001440b --- /dev/null +++ b/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB @@ -0,0 +1,1102 @@ +FR-ATM-PVC-SERVICE-IWF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + mib-2, Integer32, Counter32 FROM SNMPv2-SMI + + + + RowStatus, TimeStamp FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + + AtmVpIdentifier, AtmVcIdentifier FROM ATM-TC-MIB + + atmVclEntry FROM ATM-MIB + + InterfaceIndex FROM IF-MIB; + + frAtmIwfMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter + WG-email: + frnetmib@sunroof.eng.sun.com + Subscribe: + frnetmib-request@sunroof.eng.sun.com + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks, Inc. + Email: Andy.Malis@vivacenetworks.com + + WG editor: Kenneth Rehbehn + Megisto Systems, Inc. + Email: krehbehn@megisto.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: orly_n@rad.co.il + + Co-author: George Mouradian + AT&T Labs + EMail: gvm@att.com" + + DESCRIPTION + "The MIB module for monitoring and controlling the + Frame Relay/ATM PVC Service Interworking + Function." + + -- + -- Revision History + -- + + + REVISION "200009280000Z" + DESCRIPTION + "Published as RFC 2955" + + ::= { mib-2 86 } + + -- + -- Object Identifiers + -- + frAtmIwfMIBObjects OBJECT IDENTIFIER + ::= { frAtmIwfMIB 1 } + + frAtmIwfTraps OBJECT IDENTIFIER + ::= { frAtmIwfMIB 2 } + frAtmIwfTrapsPrefix OBJECT IDENTIFIER + ::= { frAtmIwfTraps 0 } + + frAtmIwfConformance OBJECT IDENTIFIER + ::= { frAtmIwfMIB 3 } + frAtmIwfGroups OBJECT IDENTIFIER + ::= { frAtmIwfConformance 1 } + frAtmIwfCompliances OBJECT IDENTIFIER + ::= { frAtmIwfConformance 2 } + + -- + -- The FR/ATM PVC Service IWF Group + -- + -- The Frame Relay/ATM PVC Service Interworking Function + -- Connection Table contains all connections utilizing + -- the interworking function. + -- + + frAtmIwfConnIndexNext OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to be + used for frAtmIwfConnIndex when creating entries + in the frAtmIwfConnectionTable. The value 0 + indicates that no unassigned entries are + available. To obtain the frAtmIwfConnIndexNext + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index." + ::= { frAtmIwfMIBObjects 1 } + + + frAtmIwfConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table in which each row represents a Frame + Relay/ATM interworking connection." + ::= { frAtmIwfMIBObjects 2 } + + frAtmIwfConnectionEntry OBJECT-TYPE + SYNTAX FrAtmIwfConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FrAtmIwfConnectionEntry provides an entry for + an interworking connection between a frame relay + PVC and one or more ATM PVCs, or an ATM PVC and + one or more frame relay PVCs. A single frame + relay PVC connected to a single ATM PVC is + referred to as a `point-to-point' connection and + is represented by a single row in the FR/ATM IWF + Connection Table. The case of a single frame + relay PVC connected to multiple ATM PVCs (or + single ATM PVC connected to multiple frame relay + PVCs) is referred to as a `point-to-multipoint' + connection and is represented by multiple rows in + the FR/ATM IWF Connection Table. + + The object frAtmIwfConnIndex uniquely identifies + each point-to-point or point-to-multipoint + connection. The manager obtains the + frAtmIwfConnIndex value by reading the + frAtmIwfConnIndexNext object. + + After a frAtmIwfConnIndex is assigned for the + connection, the manager creates one or more rows + in the Cross Connect Table; one for each cross- + connection between the frame relay PVC and an ATM + PVC. In the case of `point-to-multipoint' + connections, all rows are indexed by the same + frAtmIwfConnIndex value and MUST refer to the same + frame relay PVC or ATM PVC respectively. An entry + can be created only when at least one pair of + frame relay and ATM PVCs exist. + + A row can be established by one-step set-request + with all required parameter values and + frAtmIwfConnRowStatus set to createAndGo(4). The + + + Agent should perform all error checking as needed. + A pair of cross-connected PVCs, as identified by a + particular value of the indexes, is released by + setting frAtmIwfConnRowStatus to destroy(6). The + Agent may release all associated resources. The + manager may remove the related PVCs thereafter. + Indexes are persistent across reboots of the + system." + INDEX { frAtmIwfConnIndex, + frAtmIwfConnAtmPort, + frAtmIwfConnVpi, + frAtmIwfConnVci, + frAtmIwfConnFrPort, + frAtmIwfConnDlci + } + ::= { frAtmIwfConnectionTable 1 } + + FrAtmIwfConnectionEntry ::= + SEQUENCE { + frAtmIwfConnIndex Integer32, + frAtmIwfConnAtmPort InterfaceIndex, + frAtmIwfConnVpi AtmVpIdentifier, + frAtmIwfConnVci AtmVcIdentifier, + frAtmIwfConnFrPort InterfaceIndex, + frAtmIwfConnDlci Integer32, + frAtmIwfConnRowStatus RowStatus, + frAtmIwfConnAdminStatus INTEGER, + frAtmIwfConnAtm2FrOperStatus INTEGER, + frAtmIwfConnAtm2FrLastChange TimeStamp, + frAtmIwfConnFr2AtmOperStatus INTEGER, + frAtmIwfConnFr2AtmLastChange TimeStamp, + frAtmIwfConnectionDescriptor Integer32, + frAtmIwfConnFailedFrameTranslate Counter32, + frAtmIwfConnOverSizedFrames Counter32, + frAtmIwfConnFailedAal5PduTranslate Counter32, + frAtmIwfConnOverSizedSDUs Counter32, + frAtmIwfConnCrcErrors Counter32, + frAtmIwfConnSarTimeOuts Counter32 + } + + frAtmIwfConnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each point-to-point or point- + to-multipoint connection. The manager obtains the + frAtmIwfConnIndex value by reading the + + + frAtmIwfConnIndexNext object. A point-to- + multipoint connection will be represented in the + frAtmIwfConnectionTable with multiple entries that + share the same frAtmIwfConnIndex value." + ::= { frAtmIwfConnectionEntry 1 } + + frAtmIwfConnAtmPort OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index in the ifTable that identifies the ATM + port for this interworking connection." + ::= { frAtmIwfConnectionEntry 2 } + + frAtmIwfConnVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI of the ATM PVC end point for this + interworking connection." + ::= { frAtmIwfConnectionEntry 3 } + + frAtmIwfConnVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI of the ATM PVC end point for this + interworking + connection." + ::= { frAtmIwfConnectionEntry 4 } + + frAtmIwfConnFrPort OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index in the ifTable that identifies the + frame relay port for this interworking + connection." + ::= { frAtmIwfConnectionEntry 5 } + + frAtmIwfConnDlci OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "The DLCI that identifies the frame relay PVC end + point for this interworking connection." + ::= { frAtmIwfConnectionEntry 6 } + + frAtmIwfConnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The table row may be created with + 'createAndWait(5)' or 'createAndGo(4)'. + To activate a connection entry, a valid connection + descriptor MUST be established in the + frAtmIwfConnectionDescriptor object. + + This object is set to 'destroy(6)' to delete the + table row. Before the table row is destroyed, the + OperStatus/AdminStatus of the corresponding + endpoints MUST be 'down(2)'. The deactivation of + the ATM endpoint MAY occur as a side-effect of + deleting the FR/ATM IWF cross-connection table + row. Otherwise, 'destroy(6)' operation MUST fail + (error code 'inconsistentValue')." + ::= { frAtmIwfConnectionEntry 7 } + + frAtmIwfConnAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational state for this FR/ATM + interworked connection. + + up(1) = Activate the connection. Before the + activation can be completed, the + OperStatus/AdminStatus of the + corresponding endpoints MUST be + 'up(1)'. The activation of the + corresponding endpoints MAY occur as + a side-effect of activating the + FR/ATM IWF cross-connection. + + down(2) = Deactivate the connection. Before + the deactivation can be completed, + the atmVclAdminStatus of the + corresponding ATM endpoint MUST be + 'down(2)'. The deactivation of the + + + ATM endpoint MAY occur as a + side-effect of deactivating the + FR/ATM IWF cross-connection." + ::= { frAtmIwfConnectionEntry 8 } + + frAtmIwfConnAtm2FrOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this + interworking connection in the ATM to frame + relay direction." + ::= { frAtmIwfConnectionEntry 9 } + + frAtmIwfConnAtm2FrLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + interworking connection entered its current + operational state in the ATM to FR direction. 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." + ::= { frAtmIwfConnectionEntry 10 } + + frAtmIwfConnFr2AtmOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this + interworking connection in the frame relay + to ATM direction." + ::= { frAtmIwfConnectionEntry 11 } + + frAtmIwfConnFr2AtmLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + interworking connection entered its current + operational state in the FR to ATM direction. 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." + ::= { frAtmIwfConnectionEntry 12 } + + frAtmIwfConnectionDescriptor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value represents a pointer to the relevant + descriptor in the IWF descriptor table. An + attempt to set this value to an inactive or non- + existent row in the Connection Descriptor Table + MUST fail (error code 'inconsistentValue')." + ::= { frAtmIwfConnectionEntry 13 } + + frAtmIwfConnFailedFrameTranslate OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of frames discarded + by the IWF because, while operating in Translation + Mode, the IWF is unable to decode the incoming + frame payload header according to the mapping + rules. (i.e., payload header not recognized by the + IWF). + + Frame relay frames are received in the frame relay + to ATM direction of the PVC. + + When operating in Transparent Mode, the IWF MUST + return noSuchInstance." + REFERENCE + "FRF.8 [17], Section 5.3.1" + ::= { frAtmIwfConnectionEntry 14 } + + frAtmIwfConnOverSizedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of frames discarded by the IWF because the + frame is too large to be processed by the AAL5 + segmentation procedure. Specifically, the frame + + + does not conform to the size specified in the + atmVccAal5CpcsTransmitSduSize object associated + with the atmVclEntry at the ATM endpoint. + Frame relay frames are received in the frame relay + to ATM direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable + FRF.8 [17], 5.3.1.4" + ::= { frAtmIwfConnectionEntry 15 } + + frAtmIwfConnFailedAal5PduTranslate OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute counts the number of AAL5 PDUs + discarded by the IWF because, while operating in + Translation Mode, the IWF is unable to decode the + incoming AAL5 PDU payload header according to the + mapping rules. (i.e., payload header not + recognized by the IWF). + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC. + + When operating in Transparent Mode, the IWF MUST + return noSuchInstance." + REFERENCE + "FRF.8 [17], Section 5.3.1" + ::= { frAtmIwfConnectionEntry 16 } + + frAtmIwfConnOverSizedSDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "SDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of AAL5 SDUs discarded by the IWF because + the SDU is too large to be forwarded on the frame + relay segment of the connection. Specifically, + the frame does not conform to the size specified + in the frLportFragSize object of the FRS MIB [19]. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "FRS MIB [19], frLportTable + + + FRF.8 [17], 5.3.1.4" + ::= { frAtmIwfConnectionEntry 17 } + + frAtmIwfConnCrcErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received with CRC-32 + errors on this AAL5 VCC at the IWF. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable" + ::= { frAtmIwfConnectionEntry 18 } + + frAtmIwfConnSarTimeOuts OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of partially re-assembled AAL5 CPCS + PDUs which were discarded on this AAL5 VCC at the + IWF because they were not fully re-assembled + within the required time period. If the re- + assembly timer is not supported, then this object + contains a zero value. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable" + ::= { frAtmIwfConnectionEntry 19 } + + -- + -- The FR/ATM PVC Service IWF Connection Descriptor Group + -- + -- The Frame Relay/ATM PVC Service Interworking Function + -- Connection Descriptor table. A descriptor provides the + -- attributes for a type of interworked connection. + -- + + frAtmIwfConnectionDescriptorIndexNext OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "This object contains an appropriate value to be + used for frAtmIwfConnectionDescriptorIndex when + creating entries in the + frAtmIwfConnectionDescriptorTable. The value 0 + indicates that no unassigned entries are + available. To obtain the + frAtmIwfConnectionDescriptorIndexNext value for a + new entry, the manager issues a management + protocol retrieval operation to obtain the current + value of this object. After each retrieval, the + agent should modify the value to the next + unassigned index." + ::= { frAtmIwfMIBObjects 3 } + + frAtmIwfConnectionDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfConnectionDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table in which each row represents a descriptor + for one type of Frame Relay/ATM interworking + connection. A descriptor may be assigned to zero + or more FR/ATM PVC service IWF connections." + ::= { frAtmIwfMIBObjects 4 } + + frAtmIwfConnectionDescriptorEntry OBJECT-TYPE + SYNTAX FrAtmIwfConnectionDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a descriptor in an interworking + connection between a frame relay PVC and an ATM + PVC." + INDEX { frAtmIwfConnectionDescriptorIndex } + ::= { frAtmIwfConnectionDescriptorTable 1 } + + FrAtmIwfConnectionDescriptorEntry ::= + SEQUENCE { + frAtmIwfConnectionDescriptorIndex Integer32, + frAtmIwfConnDescriptorRowStatus RowStatus, + frAtmIwfConnDeToClpMappingMode INTEGER, + frAtmIwfConnClpToDeMappingMode INTEGER, + frAtmIwfConnCongestionMappingMode INTEGER, + frAtmIwfConnEncapsulationMappingMode INTEGER, + frAtmIwfConnEncapsulationMappings BITS, + frAtmIwfConnFragAndReassEnabled INTEGER, + + + frAtmIwfConnArpTranslationEnabled INTEGER + } + + frAtmIwfConnectionDescriptorIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify a descriptor in the + table " + ::= { frAtmIwfConnectionDescriptorEntry 1 } + + frAtmIwfConnDescriptorRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this table row. This object is + used to create or delete an entry in the + descriptor table. + + Creation of the row requires a row index (see + frAtmIwfConnectionDescriptorIndexNext). If not + explicitly set or in existence, all other columns + of the row will be created and initialized to the + default value. During creation, this object MAY + be set to 'createAndGo(4)' or 'createAndWait(5)'. + The object MUST contain the value 'active(1)' + before any connection table entry references the + row. + + To destroy a row in this table, this object is set + to the 'destroy(6)' action. Row destruction MUST + fail (error code 'inconsistentValue') if any + connection references the row." + ::= { frAtmIwfConnectionDescriptorEntry 2 } + + frAtmIwfConnDeToClpMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2Const0(2), + mode2Const1(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for loss priority mapping in the frame + + + relay to ATM direction. + + mode1(1) = the DE field in the Q.922 core + frame shall be mapped to the ATM + CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame. + + mode2Contst0(2) = the ATM CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame shall be set to + constant 0. + + mode2Contst1(3) = the ATM CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame shall be set to + constant 1." + REFERENCE + "FRF.8 [17], Section 4.2.1" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 3 } + + frAtmIwfConnClpToDeMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2Const0(2), + mode2Const1(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for loss priority mapping in the ATM to + frame relay direction. + + mode1(1) = if one or more cells in a frame + has its CLP field set, the DE + field of the Q.922 core frame + should be set. + + mode2Const0(2) = the DE field of the Q.922 core + frame should be set to the + + + constant 0. + + mode2Const1(3) = the DE field of the Q.922 core + frame should be set to the + constant 1." + REFERENCE + "FRF.8 [17], Section 4.2.2" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 4 } + + frAtmIwfConnCongestionMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for forward congestion indication + mapping in the frame relay to ATM direction. + + mode1(1) = The FECN field in the Q.922 core frame + shall be mapped to the ATM EFCI field + of every cell generated by the + segmentation process of the AAL5 PDU + containing the information of that + frame. + + mode2(2) = The FECN field in the Q.922 core frame + shall not be mapped to the ATM EFCI + field of cells generated by the + segmentation process of the AAL5 PDU + containing the information of that + frame. The EFCI field is always set to + 'congestion not experienced'. + + In both of the modes above, if there is congestion + in the forward direction in the ATM layer within + the IWF, then the IWF can set the EFCI field to + 'congestion experienced'." + REFERENCE + "FRF.8 [17], Section 4.3.1.1" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 5 } + + frAtmIwfConnEncapsulationMappingMode OBJECT-TYPE + SYNTAX INTEGER { + + + transparentMode(1), + translationMode(2), + translationModeAll(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the mapping of + upper layer protocol encapsulation is enabled on + this interworking connection. + + transparentMode(1) = Forward the encapsulations + unaltered. + + translationMode(2) = Perform mapping between the + two encapsulations due to the + incompatibilities of the two + methods. Mapping is provided + for a subset of the potential + encapsulations as itemized in + frAtmIwfConnEncapsulationMapp + ings. + + translationModeAll(3) = Perform mapping between + the two encapsulations due to + the incompatibilities of the + two methods. All + encapsulations are + translated." + REFERENCE + "FRF.8 [17], Section 5.3" + DEFVAL { transparentMode } + ::= { frAtmIwfConnectionDescriptorEntry 6 } + + frAtmIwfConnEncapsulationMappings OBJECT-TYPE + SYNTAX BITS { + none (0), + bridgedPdus(1), + bridged802dot6(2), + bPdus(3), + routedIp(4), + routedOsi(5), + otherRouted(6), + x25Iso8202(7), + q933q2931(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "If upper layer protocol encapsulation mapping is + enabled on this interworking connection, then this + attribute enumerates which of the encapsulation + mappings are supported. + + none(0) = Transparent mode operation + bridgedPdus(1) = PID: 0x00-01,-07,-02 or -08 + bridged802dot6(2) = PID: 0x00-0B + bPdus(3) = PID: 0x00-0E or -0F + routedIp(4) = NLPID: OxCC + routedOsi(5) = NLPID: Ox81, 0x82 or 0x83 + otherRouted(6) = Other routed protocols + x25Iso8202(7) = X25 + q933q2931(8) = Q.933 and Q.2931" + REFERENCE + "FRF.8 [17], Section 5.3.1" + DEFVAL { { none } } + ::= { frAtmIwfConnectionDescriptorEntry 7 } + + frAtmIwfConnFragAndReassEnabled OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The attribute indicates whether fragmentation and + reassembly is enabled for this connection." + REFERENCE + "FRF.8 [17], Section 5.3.1.4" + DEFVAL { disabled } + ::= { frAtmIwfConnectionDescriptorEntry 8 } + + frAtmIwfConnArpTranslationEnabled OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The attribute indicates whether ARP translation + is enabled for this connection." + REFERENCE + "FRF.8 [17], Section 5.4" + DEFVAL { disabled } + ::= { frAtmIwfConnectionDescriptorEntry 9 } + + -- + -- Augmentation of ATM MIB VCL Endpoint Table (atmVclTable) + -- + frAtmIwfVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfVclEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FR/ATM IWF VCL Table augments the ATM MIB VCL + Endpoint table." + ::= { frAtmIwfMIBObjects 5 } + + frAtmIwfVclEntry OBJECT-TYPE + SYNTAX FrAtmIwfVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the + agent. One entry exists for each ATM VCL managed + by the agent." + AUGMENTS { atmVclEntry } + ::= { frAtmIwfVclTable 1 } + + FrAtmIwfVclEntry ::= SEQUENCE { + frAtmIwfVclCrossConnectIdentifier Integer32 + } + + frAtmIwfVclCrossConnectIdentifier OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the index value of the + FR/ATM cross-connect table entry used to link the + ATM VCL with a frame relay PVC. + + Each row of the atmVclTable that is not cross- + connected with a frame relay PVC MUST return the + value zero when this object is read. + + In the case of (frame relay) point to (ATM) + multipoint, multiple ATM VCLs will have the same + value of this object, and all their cross- + connections are identified by entries that are + indexed by the same value of + frAtmIwfVclCrossConnectIdentifier in the + frAtmIwfConnectionTable of this MIB module. + + The value of this object is initialized by the + agent after the associated entries in the + frAtmIwfConnectionTable have been created." + ::= { frAtmIwfVclEntry 1 } + + + + -- + -- Frame Relay/ATM PVC Service Interworking NOTIFICATION + -- + + frAtmIwfConnStatusChange NOTIFICATION-TYPE + OBJECTS { frAtmIwfConnAdminStatus, + frAtmIwfConnAtm2FrOperStatus, + frAtmIwfConnFr2AtmOperStatus + } + STATUS current + DESCRIPTION + "An indication that the status of this + interworking connection has changed." + ::= { frAtmIwfTrapsPrefix 1 } + + -- + -- Conformance Information + -- + + -- + -- Compliance Statement For Equipment + -- + + frAtmIwfEquipmentCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for equipment that + implements the FR/ATM Interworking MIB." + + MODULE -- this module + MANDATORY-GROUPS { frAtmIwfBasicGroup, + frAtmIwfConnectionDescriptorGroup, + frAtmIwfAtmVclTableAugmentGroup, + frAtmIwfNotificationsGroup } + + OBJECT frAtmIwfConnDeToClpMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnClpToDeMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnCongestionMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + + + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnEncapsulationMappingMode + SYNTAX INTEGER { transparentMode(1) } + DESCRIPTION + "Support for Translation Mode is OPTIONAL." + + OBJECT frAtmIwfConnEncapsulationMappings + SYNTAX BITS { none(0) } + DESCRIPTION + "The IWF may provide one, some or none of the + encapsulation translations defined in section + 5.3.1 of FRF.8 [17]." + + OBJECT frAtmIwfConnFragAndReassEnabled + SYNTAX INTEGER { disabled(2) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnArpTranslationEnabled + SYNTAX INTEGER { disabled(2) } + DESCRIPTION + "Support for ARP Translation is NOT REQUIRED." + + ::= { frAtmIwfCompliances 1 } + + -- + -- Compliance Statement For Service (CNM Interface) + -- + + frAtmIwfServiceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for a CNM interface that + implements the FR/ATM Interworking MIB." + + MODULE -- this module + MANDATORY-GROUPS { frAtmIwfBasicGroup, + frAtmIwfConnectionDescriptorGroup, + frAtmIwfAtmVclTableAugmentGroup, + frAtmIwfNotificationsGroup } + + -- + -- Exceptions for each object type implemented for a + -- CNM view of the FR/ATM Interworking MIB + -- + OBJECT frAtmIwfConnAdminStatus + MIN-ACCESS read-only + + + DESCRIPTION + "Write access is not REQUIRED." + + OBJECT frAtmIwfConnDeToClpMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnClpToDeMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnCongestionMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnEncapsulationMappingMode + SYNTAX INTEGER { transparentMode(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Transparent Mode is REQUIRED. + Translation Mode is OPTIONAL. Write access is not + required." + + OBJECT frAtmIwfConnEncapsulationMappings + SYNTAX BITS { none(0) } + MIN-ACCESS read-only + DESCRIPTION + "The IWF may provide one, some or none of the + encapsulation translations defined in section + 5.3.1 of FRF.8 [17]. Write access is not + required." + + OBJECT frAtmIwfConnFragAndReassEnabled + SYNTAX INTEGER { disabled(2) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Fragmentation and Reassembly is NOT + REQUIRED. Write access is not required." + + + + OBJECT frAtmIwfConnArpTranslationEnabled + SYNTAX INTEGER { disabled(2) } + MIN-ACCESS read-only + DESCRIPTION + "Support for ARP Translation is not required. + Write access is not required." + + OBJECT frAtmIwfConnRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { frAtmIwfCompliances 2 } + + -- + -- Units of Conformance + -- + + -- + -- Basic FR/ATM IWF PVC Connection Group + -- + frAtmIwfBasicGroup OBJECT-GROUP + OBJECTS { frAtmIwfConnIndexNext, + frAtmIwfConnAdminStatus, + frAtmIwfConnAtm2FrOperStatus, + frAtmIwfConnAtm2FrLastChange, + frAtmIwfConnFr2AtmOperStatus, + frAtmIwfConnFr2AtmLastChange, + frAtmIwfConnectionDescriptor, + frAtmIwfConnFailedFrameTranslate, + frAtmIwfConnOverSizedFrames, + frAtmIwfConnFailedAal5PduTranslate, + frAtmIwfConnOverSizedSDUs, + frAtmIwfConnCrcErrors, + frAtmIwfConnSarTimeOuts, + frAtmIwfConnRowStatus } + STATUS current + DESCRIPTION + "The collection of basic objects for configuration + and control of FR/ATM interworking connections." + ::= { frAtmIwfGroups 1 } + + -- + -- FR/ATM IWF PVC Connection Descriptor Group + -- + + frAtmIwfConnectionDescriptorGroup OBJECT-GROUP + OBJECTS { + + + frAtmIwfConnectionDescriptorIndexNext, + frAtmIwfConnDeToClpMappingMode, + frAtmIwfConnClpToDeMappingMode, + frAtmIwfConnCongestionMappingMode, + frAtmIwfConnEncapsulationMappingMode, + frAtmIwfConnEncapsulationMappings, + frAtmIwfConnFragAndReassEnabled, + frAtmIwfConnArpTranslationEnabled, + frAtmIwfConnDescriptorRowStatus + } + STATUS current + DESCRIPTION + "The collection of basic objects for specification + of FR/ATM interworking connection descriptors." + ::= { frAtmIwfGroups 2 } + + -- + -- ATM MIB VCL Endpoint Table Augmentation Group + -- + + frAtmIwfAtmVclTableAugmentGroup OBJECT-GROUP + OBJECTS { + frAtmIwfVclCrossConnectIdentifier + } + STATUS current + DESCRIPTION + "The ATM MIB VCL Endpoint Table AUGMENT object + contained in the FR/ATM PVC Service Interworking + MIB." + ::= { frAtmIwfGroups 3 } + + -- + -- Notification Group + -- + + frAtmIwfNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { frAtmIwfConnStatusChange } + STATUS current + DESCRIPTION + "The notification for FR/ATM interworking status + change." + ::= { frAtmIwfGroups 4 } + END diff --git a/mibs/ietf/FR-MFR-MIB b/mibs/ietf/FR-MFR-MIB new file mode 100644 index 0000000..da5dceb --- /dev/null +++ b/mibs/ietf/FR-MFR-MIB @@ -0,0 +1,917 @@ +FR-MFR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TestAndIncr, RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndex, ifIndex + FROM IF-MIB; + + mfrMib MODULE-IDENTITY + LAST-UPDATED "200011300000Z" + ORGANIZATION "IETF Frame Relay Service MIB (frnetmib) + Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Prayson Pate + Overture Networks + Email: prayson.pate@overturenetworks.com + + Co-author: Bob Lynch + Overture Networks + + + EMail: bob.lynch@overturenetworks.com + + Co-author: Kenneth Rehbehn + Megisto Systems, Inc. + EMail: krehbehn@megisto.com" + + DESCRIPTION + "This is the MIB used to control and monitor the multilink + frame relay (MFR) function described in FRF.16." + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Revision History + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + REVISION "200011300000Z" + DESCRIPTION + "Published as RFC 3020." + + ::= { transmission 47 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Textual Conventions + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + MfrBundleLinkState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The possible states for a bundle link, as defined in + Annex A of FRF.16." + REFERENCE "FRF.16 Annex A" + SYNTAX INTEGER { + mfrBundleLinkStateAddSent (1), + mfrBundleLinkStateAddRx (2), + mfrBundleLinkStateAddAckRx (3), + mfrBundleLinkStateUp (4), + mfrBundleLinkStateIdlePending (5), + mfrBundleLinkStateIdle (6), + mfrBundleLinkStateDown (7), + mfrBundleLinkStateDownIdle (8) + } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Object Identifiers + + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibScalarObjects OBJECT IDENTIFIER ::= { mfrMib 1 } + mfrMibBundleObjects OBJECT IDENTIFIER ::= { mfrMib 2 } + mfrMibBundleLinkObjects OBJECT IDENTIFIER ::= { mfrMib 3 } + mfrMibTraps OBJECT IDENTIFIER ::= { mfrMib 4 } + mfrMibConformance OBJECT IDENTIFIER ::= { mfrMib 5 } + + mfrMibTrapsPrefix OBJECT IDENTIFIER ::= { mfrMibTraps 0 } + + mfrMibGroups OBJECT IDENTIFIER ::= { mfrMibConformance 1 } + mfrMibCompliances OBJECT IDENTIFIER ::= { mfrMibConformance 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Scalars + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleMaxNumBundles OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to inform the manager of the + maximum number of bundles supported by this device." + ::= { mfrMibScalarObjects 1 } + + mfrBundleNextIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assist the manager in + selecting a value for mfrBundleIndex during row creation + in the mfrBundleTable. It can also be used to avoid race + conditions with multiple managers trying to create + rows in the table (see RFC 2494 [RFC2494] for one such + alogrithm)." + REFERENCE "RFC 2494" + ::= { mfrMibScalarObjects 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Bundle Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + + mfrBundleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bundle configuration and status table. There + is a one-to-one correspondence between a bundle + and an interface represented in the ifTable. + + The following objects of the ifTable have specific + meaning for an MFR bundle: + ifAdminStatus - the bundle admin status + ifOperStatus - the bundle operational status + ifSpeed - the current bandwidth of the bundle + ifInUcastPkts - the number of frames received + on the bundle + ifOutUcastPkts - the number of frames transmitted + on the bundle + ifInErrors - frame (not fragment) errors + ifOutErrors - frame (not fragment) errors + " + ::= { mfrMibBundleObjects 3 } + + mfrBundleEntry OBJECT-TYPE + SYNTAX MfrBundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the bundle table." + INDEX { mfrBundleIndex } + ::= { mfrBundleTable 1 } + + MfrBundleEntry ::= + SEQUENCE { + mfrBundleIndex + Integer32, + mfrBundleIfIndex + InterfaceIndex, + mfrBundleRowStatus + RowStatus, + mfrBundleNearEndName + SnmpAdminString, + mfrBundleFragmentation + INTEGER, + mfrBundleMaxFragSize + Integer32, + mfrBundleTimerHello + INTEGER, + + + mfrBundleTimerAck + INTEGER, + mfrBundleCountMaxRetry + INTEGER, + mfrBundleActivationClass + INTEGER, + mfrBundleThreshold + Integer32, + mfrBundleMaxDiffDelay + Integer32, + mfrBundleSeqNumSize + INTEGER, + mfrBundleMaxBundleLinks + Integer32, + mfrBundleLinksConfigured + Integer32, + mfrBundleLinksActive + Integer32, + mfrBundleBandwidth + Integer32, + mfrBundleFarEndName + SnmpAdminString, + mfrBundleResequencingErrors + Counter32 + } + + mfrBundleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the table. While this corresponds + to an entry in the ifTable, the value of mfrBundleIndex + need not match that of the ifIndex in the ifTable. + A manager can use mfrBundleNextIndex to select a unique + mfrBundleIndex for creating a new row." + ::= { mfrBundleEntry 1 } + + mfrBundleIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value must match an entry in the interface + table whose ifType must be set to frf16MfrBundle(163). + + For example: if the value of mfrBundleIfIndex is 10, + then a corresponding entry should be present in + + + the ifTable with an index of 10 and an ifType of 163." + ::= { mfrBundleEntry 2 } + + mfrBundleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleRowStatus object allows create, change, + and delete operations on bundle entries." + REFERENCE "RFC 1903" + ::= { mfrBundleEntry 3 } + + mfrBundleNearEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured name of the bundle." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleEntry 4 } + + mfrBundleFragmentation OBJECT-TYPE + SYNTAX INTEGER { + enable (1), + disable (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the bundle performs/accepts + fragmentation and re-assembly. The possible + values are: + + enable(1) - Bundle links will fragment frames + + disable(2) - Bundle links will not fragment + frames." + DEFVAL { disable } + ::= { mfrBundleEntry 5 } + + mfrBundleMaxFragSize OBJECT-TYPE + SYNTAX Integer32 (-1..8184) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum fragment size supported. Note that this + + + is only valid if mfrBundleFragmentation is set to enable(1). + + Zero is not a valid fragment size. + + A bundle that does not support fragmentation must return + this object with a value of -1." + DEFVAL { -1 } + ::= { mfrBundleEntry 6 } + + mfrBundleTimerHello OBJECT-TYPE + SYNTAX INTEGER (1..180) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured MFR Hello Timer value." + REFERENCE "FRF.16 section 4.3.8.1" + DEFVAL { 10 } + ::= { mfrBundleEntry 7 } + + mfrBundleTimerAck OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured MFR T_ACK value." + REFERENCE "FRF.16 section 4.3.8.2" + DEFVAL { 4 } + ::= { mfrBundleEntry 8 } + + mfrBundleCountMaxRetry OBJECT-TYPE + SYNTAX INTEGER (1..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MFR N_MAX_RETRY value." + REFERENCE "FRF.16 section 4.3.8.3" + DEFVAL { 2 } + ::= { mfrBundleEntry 9 } + + mfrBundleActivationClass OBJECT-TYPE + SYNTAX INTEGER { + mfrBundleActivationClassA (1), + mfrBundleActivationClassB (2), + mfrBundleActivationClassC (3), + mfrBundleActivationClassD (4) + } + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls the conditions under which the bundle is activated. + The following settings are available: + + mfrBundleActivationClassA(1) - at least one must link up + mfrBundleActivationClassB(2) - all links must be up + mfrBundleActivationClassC(3) - a certain number must be + up. Refer to + mfrBundleThreshold for + the required number. + mfrBundleActivationClassD(4) - custom (implementation + specific)." + REFERENCE "FRF.16 section 4.2.2.1" + DEFVAL { mfrBundleActivationClassA } + ::= { mfrBundleEntry 10 } + + mfrBundleThreshold OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of links that must be in operational + 'up' state before the bundle will transition to an + operational up/active state. If the number of + operational 'up' links falls below this value, + then the bundle will transition to an inactive + state. + + Note - this is only valid when mfrBundleActivationClass + is set to mfrBundleActivationClassC or, depending upon the + implementation, to mfrBundleActivationClassD. A bundle that + is not set to one of these must return this object with a + value of -1." + REFERENCE "FRF.16 section 4.2.2.1" + DEFVAL { -1 } + ::= { mfrBundleEntry 11 } + + mfrBundleMaxDiffDelay OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum delay difference between the bundle + links. + + + A value of -1 indicates that this object does not contain + a valid value" + DEFVAL { -1 } + ::= { mfrBundleEntry 12 } + + mfrBundleSeqNumSize OBJECT-TYPE + SYNTAX INTEGER { + seqNumSize12bit (1), + seqNumSize24bit (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the standard FRF.12 12-bit + sequence number is used or the optional 24-bit + sequence number." + REFERENCE "FRFTC/99-194" + DEFVAL { seqNumSize12bit } + ::= { mfrBundleEntry 13 } + + mfrBundleMaxBundleLinks OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of bundle links supported for + this bundle." + ::= { mfrBundleEntry 14 } + + mfrBundleLinksConfigured OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of links configured for the bundle." + ::= { mfrBundleEntry 15 } + + mfrBundleLinksActive OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of links that are active." + ::= { mfrBundleEntry 16 } + + + + mfrBundleBandwidth OBJECT-TYPE + SYNTAX Integer32 + UNITS "Bits/Sec" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of available bandwidth on the bundle" + ::= { mfrBundleEntry 17 } + + mfrBundleFarEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the bundle received from the far end." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleEntry 18 } + + mfrBundleResequencingErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Error Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of resequencing errors. Each event + may correspond to multiple lost frames. Example: + Say sequence number 56, 59 and 60 is received for DLCI 100. + It is decided by some means that sequence 57 and 58 is lost. + This counter should then be incremented by ONE, even though + two frames were lost." + ::= { mfrBundleEntry 19 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- ifIndex Mapping to Bundle Index Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleIfIndexMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleIfIndexMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping the values of ifIndex to the + mfrBundleIndex. This is required in order to find + the mfrBundleIndex given an ifIndex. The mapping of + mfrBundleIndex to ifIndex is provided by the + mfrBundleIfIndex entry in the mfrBundleTable." + + + ::= { mfrMibBundleObjects 4 } + + mfrBundleIfIndexMappingEntry OBJECT-TYPE + SYNTAX MfrBundleIfIndexMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row describes one ifIndex to mfrBundleIndex mapping." + INDEX { ifIndex } + ::= { mfrBundleIfIndexMappingTable 1 } + + MfrBundleIfIndexMappingEntry ::= + SEQUENCE { + mfrBundleIfIndexMappingIndex + Integer32 + } + + mfrBundleIfIndexMappingIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mfrBundleIndex of the given ifIndex." + ::= { mfrBundleIfIndexMappingEntry 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Bundle Link Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bundle link configuration and status table. There + is a one-to-one correspondence between a bundle link + and a physical interface represented in the ifTable. The + ifIndex of the physical interface is used to index the + bundle link table, and to create rows. + + The following objects of the ifTable have specific + meaning for an MFR bundle link: + + ifAdminStatus - the bundle link admin status + ifOperStatus - the bundle link operational + status + + + ifSpeed - the bandwidth of the bundle + link interface + ifInUcastPkts - the number of frames received + on the bundle link + ifOutUcastPkts - the number of frames transmitted + on the bundle link + ifInErrors - frame and fragment errors + ifOutErrors - frame and fragment errors" + ::= { mfrMibBundleLinkObjects 1 } + + mfrBundleLinkEntry OBJECT-TYPE + SYNTAX MfrBundleLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the bundle link table." + INDEX { ifIndex } + ::= { mfrBundleLinkTable 1 } + + MfrBundleLinkEntry ::= + SEQUENCE { + mfrBundleLinkRowStatus + RowStatus, + mfrBundleLinkConfigBundleIndex + Integer32, + mfrBundleLinkNearEndName + SnmpAdminString, + mfrBundleLinkState + MfrBundleLinkState, + mfrBundleLinkFarEndName + SnmpAdminString, + mfrBundleLinkFarEndBundleName + SnmpAdminString, + mfrBundleLinkDelay + Integer32, + mfrBundleLinkFramesControlTx + Counter32, + mfrBundleLinkFramesControlRx + Counter32, + mfrBundleLinkFramesControlInvalid + Counter32, + mfrBundleLinkTimerExpiredCount + Counter32, + mfrBundleLinkLoopbackSuspected + Counter32, + mfrBundleLinkUnexpectedSequence + Counter32, + mfrBundleLinkMismatch + + + Counter32 + } + + mfrBundleLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleLinkRowStatus object allows create, change, + and delete operations on mfrBundleLink entries. + + The create operation must fail if no physical interface + is associated with the bundle link." + ::= { mfrBundleLinkEntry 1 } + + mfrBundleLinkConfigBundleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleLinkConfigBundleIndex object allows + the manager to control the bundle to which the bundle + link is assigned. If no value were in this field, then + the bundle would remain in NOT_READY rowStatus and be + unable to go to active. With an appropriate mfrBundleIndex + in this field, then we could put the mfrBundleLink row in + NOT_IN_SERVICE or ACTIVE rowStatus." + ::= { mfrBundleLinkEntry 2 } + + mfrBundleLinkNearEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured bundle link name that is sent to the far end." + ::= { mfrBundleLinkEntry 3 } + + mfrBundleLinkState OBJECT-TYPE + SYNTAX MfrBundleLinkState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current bundle link state as defined by the MFR protocol + described in Annex A of FRF.16." + REFERENCE "FRF.16 Annex A" + ::= { mfrBundleLinkEntry 4 } + + mfrBundleLinkFarEndName OBJECT-TYPE + + + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of bundle link received from far end." + REFERENCE "FRF.16 section 3.4.2" + ::= { mfrBundleLinkEntry 5 } + + mfrBundleLinkFarEndBundleName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of far end bundle for this link received from far end." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleLinkEntry 6 } + + mfrBundleLinkDelay OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current round-trip delay for this bundle link. The + value -1 is returned when an implementation does not + support measurement of the bundle link delay." + REFERENCE "FRF.16 section 3.4.4" + ::= { mfrBundleLinkEntry 7 } + + mfrBundleLinkFramesControlTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MFR control frames sent." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 8 } + + mfrBundleLinkFramesControlRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of valid MFR control frames received." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 9 } + + + mfrBundleLinkFramesControlInvalid OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid MFR control frames received." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 10 } + + mfrBundleLinkTimerExpiredCount OBJECT-TYPE + SYNTAX Counter32 + UNITS "Timer Expiration Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the T_HELLO or T_ACK timers expired." + REFERENCE "FRF.16 section 4.3.8.1 and 4.3.8.2" + ::= { mfrBundleLinkEntry 11 } + + mfrBundleLinkLoopbackSuspected OBJECT-TYPE + SYNTAX Counter32 + UNITS "Loopback Suspected Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a loopback has been suspected + (based upon the use of magic numbers)." + REFERENCE "FRF.16 section 4.3.7" + ::= { mfrBundleLinkEntry 12 } + + mfrBundleLinkUnexpectedSequence OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data MFR frames discarded because the sequence + number of the frame for a DLCI was less than (delayed frame) + or equal to (duplicate frame) the one expected for that DLCI. + + Example: + Say frames with sequence numbers 56, 58, 59 is received for + DLCI 100. While waiting for sequence number 57 another frame + with sequence number 58 arrives. Frame 58 is discarded and + the counter is incremented." + REFERENCE "FRF.16 section 4.2.3.2" + ::= { mfrBundleLinkEntry 13 } + + + mfrBundleLinkMismatch OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bundle Name Mismatch Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the unit has been notified by the + remote peer that the bundle name is inconsistent with other + bundle links attached to the far-end bundle." + REFERENCE "FRF.16 section 4.3.2.4" + ::= { mfrBundleLinkEntry 14 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Notifications/Traps + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibTrapBundleLinkMismatch NOTIFICATION-TYPE + OBJECTS { + mfrBundleNearEndName, + mfrBundleFarEndName, + mfrBundleLinkNearEndName, + mfrBundleLinkFarEndName, + mfrBundleLinkFarEndBundleName + } + STATUS current + DESCRIPTION + "This trap indicates that a bundle link mismatch has + been detected. The following objects are reported: + + mfrBundleNearEndName: configured name of near end bundle + + mfrBundleFarEndName: previously reported name of + far end bundle + + mfrBundleLinkNearEndName: configured name of near end bundle + + mfrBundleLinkFarEndName: reported name of far end bundle + + mfrBundleLinkFarEndBundleName: currently reported name of + far end bundle + + Note: that the configured items may have been configured + automatically. + + Note: The mfrBundleLinkMismatch counter is incremented when + the trap is sent." + + + REFERENCE "FRF.16 section 4.3.2.4" + ::= { mfrMibTrapsPrefix 1 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Conformance/Compliance + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for equipment that implements + the FRF16 MIB. All of the current groups are mandatory, + but a number of objects may be read-only if the + implementation does not allow configuration." + MODULE -- this module + MANDATORY-GROUPS { + mfrMibBundleGroup, + mfrMibBundleLinkGroup, + mfrMibTrapGroup + } + + OBJECT mfrBundleFragmentation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported." + + OBJECT mfrBundleMaxFragSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + OBJECT mfrBundleThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + OBJECT mfrBundleMaxDiffDelay + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported." + + + OBJECT mfrBundleSeqNumSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + ::= { mfrMibCompliances 1 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Units of Conformance + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + + mfrMibBundleGroup OBJECT-GROUP + OBJECTS { + mfrBundleMaxNumBundles, + mfrBundleNextIndex, + mfrBundleIfIndex, + mfrBundleRowStatus, + mfrBundleNearEndName, + mfrBundleFragmentation, + mfrBundleMaxFragSize, + mfrBundleTimerHello, + mfrBundleTimerAck, + mfrBundleCountMaxRetry, + mfrBundleActivationClass, + mfrBundleThreshold, + mfrBundleMaxDiffDelay, + mfrBundleMaxBundleLinks, + mfrBundleLinksConfigured, + mfrBundleLinksActive, + mfrBundleBandwidth, + mfrBundleSeqNumSize, + mfrBundleFarEndName, + mfrBundleResequencingErrors, + mfrBundleIfIndexMappingIndex + } + STATUS current + DESCRIPTION + "Group of objects describing bundles." + ::= { mfrMibGroups 1 } + + mfrMibBundleLinkGroup OBJECT-GROUP + OBJECTS { + mfrBundleLinkRowStatus, + + + mfrBundleLinkConfigBundleIndex, + mfrBundleLinkNearEndName, + mfrBundleLinkState, + mfrBundleLinkFarEndName, + mfrBundleLinkFarEndBundleName, + mfrBundleLinkDelay, + mfrBundleLinkFramesControlTx, + mfrBundleLinkFramesControlRx, + mfrBundleLinkFramesControlInvalid, + mfrBundleLinkTimerExpiredCount, + mfrBundleLinkLoopbackSuspected, + mfrBundleLinkUnexpectedSequence, + mfrBundleLinkMismatch + } + STATUS current + DESCRIPTION + "Group of objects describing bundle links." + ::= { mfrMibGroups 2 } + + mfrMibTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mfrMibTrapBundleLinkMismatch + } + STATUS current + DESCRIPTION + "Group of objects describing notifications (traps)." + ::= { mfrMibGroups 3 } + +END diff --git a/mibs/ietf/FRAME-RELAY-DTE-MIB b/mibs/ietf/FRAME-RELAY-DTE-MIB new file mode 100644 index 0000000..310ffae --- /dev/null +++ b/mibs/ietf/FRAME-RELAY-DTE-MIB @@ -0,0 +1,1039 @@ +FRAME-RELAY-DTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, NOTIFICATION-TYPE FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + transmission FROM RFC1213-MIB + InterfaceIndex FROM IF-MIB; + +-- Frame Relay DTE MIB + +frameRelayDTE MODULE-IDENTITY + LAST-UPDATED "9705010229Z" -- Thu May 1 02:29:46 PDT 1997 + ORGANIZATION "IETF IPLPDN Working Group" + CONTACT-INFO + " Caralyn Brown + Postal: Cadia Networks, Inc. + 1 Corporate Drive + Andover, Massachusetts 01810 + Tel: +1 508 689 2400 x133 + E-Mail: cbrown@cadia.com + + Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 408 526 425 + E-Mail: fred@cisco.com" + DESCRIPTION + "The MIB module to describe the use of a Frame Relay + interface by a DTE." + REVISION "9705010229Z" -- Thu May 1 02:29:46 PDT 1997 + DESCRIPTION + "Converted from SMIv1 to SMIv2. (Thus, indices are + read-only rather than being not-accessible.) Added + objects and made clarifications based on implementation + experience." + + REVISION "9204010000Z" + DESCRIPTION + "Published as RFC 1315, the initial version of this MIB + module." + ::= { transmission 32 } + +-- +-- the range of a Data Link Connection Identifier +-- +DLCI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The range of DLCI values. Note that this varies by + interface configuration; normally, interfaces may use + 0..1023, but may be configured to use ranges as large + as 0..2^23." + SYNTAX Integer32(0..8388607) + + + +-- + +-- Data Link Connection Management Interface + +-- The variables that configure the DLC Management Interface. + +frDlcmiTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrDlcmiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Parameters for the Data Link Connection Management + Interface for the frame relay service on this + interface." + REFERENCE + "American National Standard T1.617-1991, Annex D" + ::= { frameRelayDTE 1 } + +frDlcmiEntry OBJECT-TYPE + SYNTAX FrDlcmiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Parameters for a particular Data Link Connection + Management Interface." + INDEX { frDlcmiIfIndex } + ::= { frDlcmiTable 1 } + +FrDlcmiEntry ::= + SEQUENCE { + frDlcmiIfIndex InterfaceIndex, + frDlcmiState INTEGER, + frDlcmiAddress INTEGER, + frDlcmiAddressLen INTEGER, + frDlcmiPollingInterval Integer32, + frDlcmiFullEnquiryInterval Integer32, + frDlcmiErrorThreshold Integer32, + frDlcmiMonitoredEvents Integer32, + frDlcmiMaxSupportedVCs DLCI, + frDlcmiMulticast INTEGER, + frDlcmiStatus INTEGER, + frDlcmiRowStatus RowStatus +} + + +frDlcmiIfIndex OBJECT-TYPE + + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the corresponding ifEntry." + ::= { frDlcmiEntry 1 } + + +frDlcmiState OBJECT-TYPE + SYNTAX INTEGER { + noLmiConfigured (1), + lmiRev1 (2), + ansiT1617D (3), -- ANSI T1.617 Annex D + ansiT1617B (4), -- ANSI T1.617 Annex B + itut933A (5), -- CCITT Q933 Annex A + ansiT1617D1994 (6) -- ANSI T1.617a-1994 Annex D + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states which Data Link Connection + Management scheme is active (and by implication, what + DLCI it uses) on the Frame Relay interface." + REFERENCE + "American National Standard T1.617-1991, American + National Standard T1.617a-1994, ITU-T Recommendation + Q.933 (03/93)." + + ::= { frDlcmiEntry 2 } + +frDlcmiAddress OBJECT-TYPE + SYNTAX INTEGER { + q921 (1), -- 13 bit DLCI + q922March90 (2), -- 11 bit DLCI + q922November90 (3), -- 10 bit DLCI + q922 (4) -- Final Standard + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states which address format is in use on + the Frame Relay interface." + ::= { frDlcmiEntry 3 } + + +frDlcmiAddressLen OBJECT-TYPE + SYNTAX INTEGER { + twoOctets (2), + threeOctets (3), + fourOctets (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states the address length in octets. In + the case of Q922 format, the length indicates the + entire length of the address including the control + portion." + ::= { frDlcmiEntry 4 } + + +frDlcmiPollingInterval OBJECT-TYPE + SYNTAX Integer32 (5..30) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of seconds between successive + status enquiry messages." + REFERENCE + "American National Standard T1.617-1991, Section D.7 + Timer T391." + DEFVAL { 10 } + ::= { frDlcmiEntry 5 } + +frDlcmiFullEnquiryInterval OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Number of status enquiry intervals that pass before + issuance of a full status enquiry message." + REFERENCE + "American National Standard T1.617-1991, Section D.7 + Counter N391." + DEFVAL { 6 } + ::= { frDlcmiEntry 6 } + + +frDlcmiErrorThreshold OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the maximum number of unanswered Status + Enquiries the equipment shall accept before declaring + the interface down." + REFERENCE + "American National Standard T1.617-1991, Section D.5.1 + Counter N392." + DEFVAL { 3 } + ::= { frDlcmiEntry 7 } + + +frDlcmiMonitoredEvents OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of status polling intervals over + which the error threshold is counted. For example, if + within 'MonitoredEvents' number of events the station + receives 'ErrorThreshold' number of errors, the + interface is marked as down." + REFERENCE + "American National Standard T1.617-1991, Section D.5.2 + Counter N393." + DEFVAL { 4 } + ::= { frDlcmiEntry 8 } + +frDlcmiMaxSupportedVCs OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of Virtual Circuits allowed for + this interface. Usually dictated by the Frame Relay + network. + + In response to a SET, if a value less than zero or + higher than the agent's maximal capability is + configured, the agent should respond badValue" + ::= { frDlcmiEntry 9 } + + +frDlcmiMulticast OBJECT-TYPE + SYNTAX INTEGER { + nonBroadcast (1), + broadcast (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates whether the Frame Relay interface is + using a multicast service." + ::= { frDlcmiEntry 10 } + + + +frDlcmiStatus OBJECT-TYPE + SYNTAX INTEGER { + running (1), -- init complete, system running + fault (2), -- error threshold exceeded + initializing (3) -- system start up + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the status of the Frame Relay interface + as determined by the performance of the dlcmi. If no + dlcmi is running, the Frame Relay interface will stay + in the running state indefinitely." + ::= { frDlcmiEntry 11 } + +frDlcmiRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "SNMP Version 2 Row Status Variable. Writable objects + in the table may be written in any RowStatus state." + ::= { frDlcmiEntry 12 } + + +-- +-- A Frame Relay service is a multiplexing service. Data +-- Link Connection Identifiers enumerate virtual circuits +-- (permanent or dynamic) which are layered onto the underlying +-- circuit, represented by ifEntry. Therefore, each of the entries +-- in the Standard MIB's Interface Table with an IfType of +-- Frame Relay represents a Q.922 interface. Zero or more +-- virtual circuits are layered onto this interface and provide +-- interconnection with various remote destinations. +-- Each such virtual circuit is represented by an entry in the +-- circuit table. The management virtual circuit (i.e. DLCI 0) +-- is a virtual circuit by this definition and will be represented +-- with an entry in the circuit table. + +-- Circuit Table + +-- The table describing the use of the DLCIs attached to +-- each Frame Relay Interface. + +frCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about specific Data + Link Connections (DLC) or virtual circuits." + ::= { frameRelayDTE 2 } + +frCircuitEntry OBJECT-TYPE + SYNTAX FrCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single Data Link + Connection. Discontinuities in the counters contained + in this table are indicated by the value in + frCircuitCreationTime." + INDEX { frCircuitIfIndex, frCircuitDlci } + ::= { frCircuitTable 1 } + + +FrCircuitEntry ::= + SEQUENCE { + frCircuitIfIndex InterfaceIndex, + frCircuitDlci DLCI, + frCircuitState INTEGER, + frCircuitReceivedFECNs Counter32, + frCircuitReceivedBECNs Counter32, + frCircuitSentFrames Counter32, + frCircuitSentOctets Counter32, + frCircuitReceivedFrames Counter32, + frCircuitReceivedOctets Counter32, + frCircuitCreationTime TimeStamp, + frCircuitLastTimeChange TimeStamp, + frCircuitCommittedBurst Integer32, + frCircuitExcessBurst Integer32, + frCircuitThroughput Integer32, + frCircuitMulticast INTEGER, + frCircuitType INTEGER, + frCircuitDiscards Counter32, + frCircuitReceivedDEs Counter32, + frCircuitSentDEs Counter32, + frCircuitLogicalIfIndex InterfaceIndex, + frCircuitRowStatus RowStatus +} + + +frCircuitIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex Value of the ifEntry this virtual circuit + is layered onto." + ::= { frCircuitEntry 1 } + +frCircuitDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Data Link Connection Identifier for this virtual + circuit." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.6" + ::= { frCircuitEntry 2 } + + +frCircuitState OBJECT-TYPE + SYNTAX INTEGER { + + invalid (1), + active (2), + inactive (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the particular virtual circuit is + operational. In the absence of a Data Link Connection + Management Interface, virtual circuit entries (rows) + may be created by setting virtual circuit state to + 'active', or deleted by changing Circuit state to + 'invalid'. + + Whether or not the row actually disappears is left to + the implementation, so this object may actually read as + 'invalid' for some arbitrary length of time. It is + also legal to set the state of a virtual circuit to + 'inactive' to temporarily disable a given circuit. + + The use of 'invalid' is deprecated in this SNMP Version + 2 MIB, in favor of frCircuitRowStatus." + DEFVAL { active } + ::= { frCircuitEntry 3 } + +frCircuitReceivedFECNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + forward congestion since the virtual circuit was + created. This occurs when the remote DTE sets the FECN + flag, or when a switch in the network enqueues the + frame to a trunk whose transmission queue is + congested." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.3" + ::= { frCircuitEntry 4 } + + +frCircuitReceivedBECNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + backward congestion since the virtual circuit was + created. This occurs when the remote DTE sets the BECN + flag, or when a switch in the network receives the + frame from a trunk whose transmission queue is + congested." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.4" + ::= { frCircuitEntry 5 } + + +frCircuitSentFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent from this virtual circuit + since it was created." + ::= { frCircuitEntry 6 } + + +frCircuitSentOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent from this virtual circuit + since it was created. Octets counted are the full + frame relay header and the payload, but do not include + the flag characters or CRC." + ::= { frCircuitEntry 7 } + + +frCircuitReceivedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received over this virtual circuit + since it was created." + ::= { frCircuitEntry 8 } + + +frCircuitReceivedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of octets received over this virtual circuit + since it was created. Octets counted include the full + frame relay header, but do not include the flag + characters or the CRC." + ::= { frCircuitEntry 9 } + + +frCircuitCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the virtual circuit was + created, whether by the Data Link Connection Management + Interface or by a SetRequest." + ::= { frCircuitEntry 10 } + +frCircuitLastTimeChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when last there was a change in + the virtual circuit state" + ::= { frCircuitEntry 11 } + + +frCircuitCommittedBurst OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the maximum amount of data, in + bits, that the network agrees to transfer under normal + conditions, during the measurement interval." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + DEFVAL { 0 } -- the default indicates no commitment + ::= { frCircuitEntry 12 } + + +frCircuitExcessBurst OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the maximum amount of + uncommitted data bits that the network will attempt to + deliver over the measurement interval. + + By default, if not configured when creating the entry, + the Excess Information Burst Size is set to the value + of ifSpeed." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + ::= { frCircuitEntry 13 } + + +frCircuitThroughput OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Throughput is the average number of 'Frame Relay + Information Field' bits transferred per second across a + user network interface in one direction, measured over + the measurement interval. + + If the configured committed burst rate and throughput + are both non-zero, the measurement interval, T, is + T=frCircuitCommittedBurst/frCircuitThroughput. + + If the configured committed burst rate and throughput + are both zero, the measurement interval, T, is + T=frCircuitExcessBurst/ifSpeed." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + DEFVAL {0} -- the default value of Throughput is + -- "no commitment". + ::= { frCircuitEntry 14 } + + +frCircuitMulticast OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), + oneWay (2), + twoWay (3), + nWay (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates whether this VC is used as a unicast VC + (i.e. not multicast) or the type of multicast service + subscribed to" + REFERENCE + "Frame Relay PVC Multicast Service and Protocol + Description Implementation: FRF.7 Frame Relay Forum + Technical Committe October 21, 1994" + DEFVAL {unicast} + -- the default value of frCircuitMulticast is + -- "unicast" (not a multicast VC). + ::= { frCircuitEntry 15 } + + +frCircuitType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the VC was manually created + (static), or dynamically created (dynamic) via the data + link control management interface." + ::= { frCircuitEntry 16 } + + +frCircuitDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames dropped because of format + errors, or because the VC is inactive." + ::= { frCircuitEntry 17 } + + +frCircuitReceivedDEs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + that they were eligible for discard since the virtual + circuit was created. This occurs when the remote DTE + sets the DE flag, or when in remote DTE's switch + detects that the frame was received as Excess Burst + data." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.4" + ::= { frCircuitEntry 18 } + + +frCircuitSentDEs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames sent to the network indicating that + they were eligible for discard since the virtual + circuit was created. This occurs when the local DTE + sets the DE flag, indicating that during Network + congestion situations those frames should be discarded + in preference of other frames sent without the DE bit + set." + REFERENCE + "American National Standard T1.618-1991, Section + 3.3.4" + ::= { frCircuitEntry 19 } + +frCircuitLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Normally the same value as frDlcmiIfIndex, but + different when an implementation associates a virtual + ifEntry with a DLC or set of DLCs in order to associate + higher layer objects such as the ipAddrEntry with a + subset of the virtual circuits on a Frame Relay + interface. The type of such ifEntries is defined by the + higher layer object; for example, if PPP/Frame Relay is + implemented, the ifType of this ifEntry would be PPP. + If it is not so defined, as would be the case with an + ipAddrEntry, it should be of type Other." + ::= { frCircuitEntry 20 } + +frCircuitRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + destroy an existing row in the manner described in the + definition of the RowStatus textual convention. + Writable objects in the table may be written in any + RowStatus state." + ::= { frCircuitEntry 21 } + + +-- +-- Error Table + +-- The table describing errors encountered on each Frame +-- Relay Interface. + +frErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about Errors on the + Frame Relay interface. Discontinuities in the counters + contained in this table are the same as apply to the + ifEntry associated with the Interface." + ::= { frameRelayDTE 3 } + +frErrEntry OBJECT-TYPE + SYNTAX FrErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The error information for a single frame relay + interface." + INDEX { frErrIfIndex } + ::= { frErrTable 1 } + + +FrErrEntry ::= + SEQUENCE { + frErrIfIndex InterfaceIndex, + frErrType INTEGER, + frErrData OCTET STRING, + frErrTime TimeStamp, + frErrFaults Counter32, + frErrFaultTime TimeStamp +} + + +frErrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex Value of the corresponding ifEntry." + ::= { frErrEntry 1 } + + + frErrType OBJECT-TYPE + SYNTAX INTEGER { + unknownError(1), + receiveShort(2), + receiveLong(3), + illegalAddress(4), + unknownAddress(5), + dlcmiProtoErr(6), + dlcmiUnknownIE(7), + dlcmiSequenceErr(8), + dlcmiUnknownRpt(9), + noErrorSinceReset(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of error that was last seen on this interface: + +receiveShort: frame was not long enough to allow + demultiplexing - the address field was incomplete, + or for virtual circuits using Multiprotocol over + Frame Relay, the protocol identifier was missing + or incomplete. + +receiveLong: frame exceeded maximum length configured for this + interface. + +illegalAddress: address field did not match configured format. + +unknownAddress: frame received on a virtual circuit which was not + active or administratively disabled. + +dlcmiProtoErr: unspecified error occurred when attempting to + interpret link maintenance frame. + +dlcmiUnknownIE: link maintenance frame contained an Information + Element type which is not valid for the + configured link maintenance protocol. + +dlcmiSequenceErr: link maintenance frame contained a sequence + number other than the expected value. + +dlcmiUnknownRpt: link maintenance frame contained a Report Type + Information Element whose value was not valid + for the configured link maintenance protocol. + +noErrorSinceReset: no errors have been detected since the last + cold start or warm start." + ::= { frErrEntry 2 } + + +frErrData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..1600)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string containing as much of the error packet + as possible. As a minimum, it must contain the Q.922 + Address or as much as was delivered. It is desirable + to include all header and demultiplexing information." + ::= { frErrEntry 3 } + +frErrTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the error was + detected." + ::= { frErrEntry 4 } + + +frErrFaults OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has gone down since + it was initialized." + ::= { frErrEntry 5 } + + +frErrFaultTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time when the interface + was taken down due to excessive errors. Excessive + errors is defined as the time when a DLCMI exceeds the + frDlcmiErrorThreshold number of errors within + frDlcmiMonitoredEvents. See FrDlcmiEntry for further + details." + ::= { frErrEntry 6 } + + +-- + +-- Frame Relay Trap Control + +frameRelayTrapControl OBJECT IDENTIFIER ::= { frameRelayDTE 4 } + +-- the following highly unusual OID is as it is for compatibility +-- with RFC 1315, the SNMP V1 predecessor of this document. +frameRelayTraps OBJECT IDENTIFIER ::= { frameRelayDTE 0 } + +frTrapState OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates whether the system produces + the frDLCIStatusChange trap." + DEFVAL { disabled } + ::= { frameRelayTrapControl 1 } + +frTrapMaxRate OBJECT-TYPE + SYNTAX Integer32 (0..3600000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the number of milliseconds + that must elapse between trap emissions. If events + occur more rapidly, the impementation may simply fail + to trap, or may queue traps until an appropriate time." + DEFVAL { 0 } -- no minimum elapsed period is specified + ::= { frameRelayTrapControl 2 } + + + +-- Data Link Connection Management Interface Related Traps + +frDLCIStatusChange NOTIFICATION-TYPE + OBJECTS { frCircuitState } + STATUS current + + + DESCRIPTION + "This trap indicates that the indicated Virtual Circuit + has changed state. It has either been created or + invalidated, or has toggled between the active and + inactive states. If, however, the reason for the state + change is due to the DLCMI going down, per-DLCI traps + should not be generated." +::= { frameRelayTraps 1 } +-- conformance information + +frConformance OBJECT IDENTIFIER ::= { frameRelayDTE 6 } + +frGroups OBJECT IDENTIFIER ::= { frConformance 1 } +frCompliances OBJECT IDENTIFIER ::= { frConformance 2 } + +-- compliance statements + +frCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { frPortGroup, frCircuitGroup } + + GROUP frErrGroup + DESCRIPTION + "This optional group is used for debugging Frame Relay + Systems." + + GROUP frTrapGroup + DESCRIPTION + "This optional group is used for the management of + asynchronous notifications by Frame Relay Systems." + + GROUP frNotificationGroup + DESCRIPTION + "This optional group defines the asynchronous + notifications generated by Frame Relay Systems." + + OBJECT frDlcmiRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation is not required for the frDlcmiTable." + + OBJECT frCircuitRowStatus + + MIN-ACCESS read-only + DESCRIPTION + "Row creation is not required for the frCircuitTable." + + ::= { frCompliances 1 } + +frCompliance0 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for objects and the trap + defined in RFC 1315." + MODULE -- this module + MANDATORY-GROUPS { frPortGroup0, frCircuitGroup0 } + + GROUP frErrGroup0 + DESCRIPTION + "This optional group is used for debugging Frame Relay + Systems." + GROUP frTrapGroup0 + DESCRIPTION + "This optional group is used for the management of + asynchronous notifications by Frame Relay Systems." + + GROUP frNotificationGroup + DESCRIPTION + "This optional group defines the asynchronous + notifications generated by Frame Relay Systems." + + ::= { frCompliances 2 } + +-- units of conformance + +frPortGroup OBJECT-GROUP + OBJECTS { + frDlcmiIfIndex, frDlcmiState, frDlcmiAddress, + frDlcmiAddressLen, frDlcmiPollingInterval, + frDlcmiFullEnquiryInterval, frDlcmiErrorThreshold, + frDlcmiMonitoredEvents, frDlcmiMaxSupportedVCs, + frDlcmiMulticast, frDlcmiStatus, frDlcmiRowStatus + } + STATUS current + DESCRIPTION + "The objects necessary to control the Link Management + Interface for a Frame Relay Interface as well as + maintain the error statistics on this interface." + ::= { frGroups 1 } + +frCircuitGroup OBJECT-GROUP + OBJECTS { + frCircuitIfIndex, frCircuitDlci, frCircuitState, + frCircuitReceivedFECNs, frCircuitReceivedBECNs, + frCircuitSentFrames, frCircuitSentOctets, + frCircuitReceivedFrames, frCircuitReceivedOctets, + frCircuitCreationTime, frCircuitLastTimeChange, + frCircuitCommittedBurst, frCircuitExcessBurst, + frCircuitThroughput, frCircuitMulticast, + frCircuitType, frCircuitDiscards, + frCircuitReceivedDEs, frCircuitSentDEs, + frCircuitLogicalIfIndex, frCircuitRowStatus + } + STATUS current + DESCRIPTION + "The objects necessary to control the Virtual Circuits + layered onto a Frame Relay Interface." + ::= { frGroups 2 } + +frTrapGroup OBJECT-GROUP + OBJECTS { frTrapState, frTrapMaxRate } + STATUS current + DESCRIPTION + "The objects necessary to control a Frame Relay + Interface's notification messages." + ::= { frGroups 3 } + +frErrGroup OBJECT-GROUP + OBJECTS { + frErrIfIndex, frErrType, frErrData, frErrTime, + frErrFaults, frErrFaultTime + } + STATUS current + DESCRIPTION + "Objects designed to assist in debugging Frame Relay + Interfaces." + ::= { frGroups 4 } + +frNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { frDLCIStatusChange } + STATUS current + DESCRIPTION + "Traps which may be used to enhance event driven + management of the interface." + ::= { frGroups 5 } + +frPortGroup0 OBJECT-GROUP + OBJECTS { + frDlcmiIfIndex, frDlcmiState, frDlcmiAddress, + frDlcmiAddressLen, frDlcmiPollingInterval, + frDlcmiFullEnquiryInterval, frDlcmiErrorThreshold, + frDlcmiMonitoredEvents, frDlcmiMaxSupportedVCs, + frDlcmiMulticast + } + STATUS current + DESCRIPTION + "The objects necessary to control the Link Management + Interface for a Frame Relay Interface as well as + maintain the error statistics on this interface from + RFC 1315." + ::= { frGroups 6 } + +frCircuitGroup0 OBJECT-GROUP + OBJECTS { + frCircuitIfIndex, frCircuitDlci, frCircuitState, + frCircuitReceivedFECNs, frCircuitReceivedBECNs, + frCircuitSentFrames, frCircuitSentOctets, + frCircuitReceivedFrames, frCircuitReceivedOctets, + frCircuitCreationTime, frCircuitLastTimeChange, + frCircuitCommittedBurst, frCircuitExcessBurst, + frCircuitThroughput + } + STATUS current + DESCRIPTION + "The objects necessary to control the Virtual Circuits + layered onto a Frame Relay Interface from RFC 1315." + ::= { frGroups 7 } + +frErrGroup0 OBJECT-GROUP + OBJECTS { + frErrIfIndex, frErrType, frErrData, frErrTime + } + STATUS current + DESCRIPTION + "Objects designed to assist in debugging Frame Relay + Interfaces from RFC 1315." + ::= { frGroups 8 } + + +frTrapGroup0 OBJECT-GROUP + OBJECTS { frTrapState } + STATUS current + DESCRIPTION + "The objects necessary to control a Frame Relay + Interface's notification messages from RFC 1315." + ::= { frGroups 9 } + +END diff --git a/mibs/ietf/FRNETSERV-MIB b/mibs/ietf/FRNETSERV-MIB new file mode 100644 index 0000000..94f6caf --- /dev/null +++ b/mibs/ietf/FRNETSERV-MIB @@ -0,0 +1,2564 @@ +FRNETSERV-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission, + Counter32, Integer32 FROM SNMPv2-SMI + TimeStamp, RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + InterfaceIndex, ifIndex FROM IF-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + + frnetservMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter + WG-email: + frnetmib@sunroof.eng.sun.com + + + Subscribe: + frnetmib-request@sunroof.eng.sun.com + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks, Inc. + Email: Andy.Malis@vivacenetworks.com + + WG editor: Kenneth Rehbehn + Megisto Systems, Inc. + Email: krehbehn@megisto.com + + Co-author: David Fowler + Syndesis Limited, + EMail: fowler@syndesis.com" + + DESCRIPTION + "The MIB module to describe generic objects for + Frame Relay Network Service." + + -- + -- Revision History + -- + REVISION "200009280000Z" + DESCRIPTION + "Published as RFC 2954. + + The major new features of this revision include: + + o Support for read-write capability to + provision switch components providing service, + + o Support for cross-connection via a frame relay + to ATM service interworking function, + + o Support for frame relay fragmentation, + + o Additional frame counters to track frame + loss. + + Refer to Appendix A for a comprehensive list of + changes since RFC 1604." + + REVISION "199311161200Z" + DESCRIPTION + "Published as RFC 1604." + ::= { transmission 44 } + + + frnetservObjects + OBJECT IDENTIFIER ::= { frnetservMIB 1 } + + frnetservTraps + OBJECT IDENTIFIER ::= { frnetservMIB 2 } + + frnetservTrapsPrefix + OBJECT IDENTIFIER ::= { frnetservTraps 0 } + + -- + -- The Frame Relay Service Logical Port + -- + frLportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Logical Port Information table is + an interface-specific addendum to the generic + ifTable of the Interface MIB." + ::= { frnetservObjects 1 } + + frLportEntry OBJECT-TYPE + SYNTAX FrLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Logical Port + Information table." + INDEX { ifIndex } + ::= { frLportTable 1 } + + FrLportEntry ::= + SEQUENCE { + frLportNumPlan INTEGER, + frLportContact SnmpAdminString, + frLportLocation SnmpAdminString, + frLportType INTEGER, + frLportAddrDLCILen INTEGER, + frLportVCSigProtocol INTEGER, + frLportVCSigPointer OBJECT IDENTIFIER, + frLportDLCIIndexValue Integer32, + frLportTypeAdmin INTEGER, + frLportVCSigProtocolAdmin INTEGER, + frLportFragControl INTEGER, + frLportFragSize Integer32 + } + + + + frLportNumPlan OBJECT-TYPE + SYNTAX INTEGER { + other(1), + e164(2), + x121(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the network + address numbering plan for this UNI/NNI logical + port. The network address is the object + ifPhysAddress. The value none(4) implies that + there is no ifPhysAddress. The FRS agent will + return an octet string of zero length for + ifPhysAddress. The value other(1) means that an + address has been assigned to this interface, but + the numbering plan is not enumerated here." + REFERENCE "E.164 [29] + X.121 [30]" + ::= { frLportEntry 1 } + + frLportContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the network + contact for this UNI/NNI logical port." + ::= { frLportEntry 2 } + + frLportLocation OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the frame + relay network location for this UNI/NNI logical + port." + ::= { frLportEntry 3 } + + frLportType OBJECT-TYPE + SYNTAX INTEGER { + uni(1), + nni(2) + } + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value of this object identifies the type of + network interface for this logical port." + ::= { frLportEntry 4 } + + frLportAddrDLCILen OBJECT-TYPE + SYNTAX INTEGER { + twoOctets10Bits(1), + threeOctets10Bits(2), + threeOctets16Bits(3), + fourOctets17Bits(4), + fourOctets23Bits(5) + } + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Q.922 + Address field length and DLCI length for this + UNI/NNI logical port." + REFERENCE "Q.922 [25]" + ::= { frLportEntry 5 } + + frLportVCSigProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lmi(2), + ansiT1617D(3), + ansiT1617B(4), + ccittQ933A(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Local + In-Channel Signaling Protocol that is used for + this frame relay UNI/NNI logical port. + + none(1): Interface does not use a PVC + signaling protocol + + lmi(2): Interface operates the Stratacom/ + Nortel/DEC Local Management + Interface Specification protocol + + ansiT1617D(3): Interface operates the ANSI T1.617 + Annex D PVC status protocol + + + ansiT1617B(4): Interface operates the ANSI +T1.617 + Annex B procedures + + ccittQ933A(5): Interface operates the ITU Q.933 + Annex A PVC status protocol" + REFERENCE "LMI [24] + T1.617 Annex D [17], + Q.933 Annex A [22]" + ::= { frLportEntry 6 } + + frLportVCSigPointer OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of this object is used as a pointer to + the table that contains the Local In-Channel + Signaling Protocol parameters and errors for this + UNI/NNI logical port. + + This object has been deprecated to reflect the + fact that the local in-channel signaling + parameters are accessed from a single table + (frMgtVCSigTable) that includes parameters for all + possible signaling protocols. Early design + anticipated multiple tables, one for each + signaling protocol." + ::= { frLportEntry 7 } + + frLportDLCIIndexValue OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a hint to be used for + frPVCEndptDLCIIndex when creating entries in the + frPVCEndptTable. The SYNTAX of this object + matches the SYNTAX of the frPVCEndptDLCIIndex - an + object that is restricted to legal Q.922 DLCI + values for the size of the address field. + + The value 0 indicates that no unassigned entries + are available. + + To obtain the frPVCEndptDLCIIndex value for a new + entry, the manager issues a management protocol + retrieval operation to obtain the current value of + + + this object. After each retrieval, the agent must + modify the value to the next unassigned index to + prevent assignment of the same value to multiple + management systems. + + A management system should repeat the read to + obtain a new value should an attempt to create the + new row using the previously returned hint fail." + REFERENCE "Q.922 [25]" + ::= { frLportEntry 8 } + + frLportTypeAdmin OBJECT-TYPE + SYNTAX INTEGER { + uni(1), + nni(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object desired identifies the + type of network interface for this logical port." + ::= { frLportEntry 9 } + + frLportVCSigProtocolAdmin OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lmi(2), + ansiT1617D(3), + ansiT1617B(4), + ccittQ933A(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Local In-Channel Signaling Protocol that is used + for this frame relay UNI/NNI logical port. This + value must be made the active protocol as soon as + possible on the device. + + Refer to frLportVCSigProtocol for a description of + each signaling protocol choices." + REFERENCE "LMI [24] + T1.617 Annex D [17], + Q.933 Annex A [22]" + ::= { frLportEntry 10 } + + frLportFragControl OBJECT-TYPE + + + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the transmission and + reception of fragmentation frames for this UNI or + NNI interface. + + on(1) Frames are fragmented using the interface + fragmentation format + Note: The customer side of the interface + must also be configured to fragment + frames. + + off(2) Frames are not fragmented using the + interface fragmentation format." + REFERENCE "FRF.12 [21]" + DEFVAL { off } + ::= { frLportEntry 11 } + + frLportFragSize OBJECT-TYPE + SYNTAX Integer32 (0..4096) + UNITS "Octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the maximum size of each fragment to be sent when + fragmenting. This object is only used by the + fragmentation transmitter, and the two sides of + the interface may differ. The fragment size + includes the octets for the frame relay header, + the UI octet, the NLPID, the fragmentation header, + and the fragment payload. If frLportFragControl is + set to off, this value should be zero." + REFERENCE "FRF.12 [21]" + DEFVAL { 0 } + ::= { frLportEntry 12 } + + -- + -- Frame Relay Management VC Signaling + -- + + frMgtVCSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrMgtVCSigEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Management VC Signaling + Parameters and Errors table." + ::= { frnetservObjects 2 } + + frMgtVCSigEntry OBJECT-TYPE + SYNTAX FrMgtVCSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Management VC + Signaling Parameters Errors table." + INDEX { ifIndex } + ::= { frMgtVCSigTable 1 } + + FrMgtVCSigEntry ::= + SEQUENCE { + frMgtVCSigProced INTEGER, + frMgtVCSigUserN391 INTEGER, + frMgtVCSigUserN392 INTEGER, + frMgtVCSigUserN393 INTEGER, + frMgtVCSigUserT391 INTEGER, + frMgtVCSigNetN392 INTEGER, + frMgtVCSigNetN393 INTEGER, + frMgtVCSigNetT392 INTEGER, + frMgtVCSigNetnN4 INTEGER, + frMgtVCSigNetnT3 INTEGER, + frMgtVCSigUserLinkRelErrors Counter32, + frMgtVCSigUserProtErrors Counter32, + frMgtVCSigUserChanInactive Counter32, + frMgtVCSigNetLinkRelErrors Counter32, + frMgtVCSigNetProtErrors Counter32, + frMgtVCSigNetChanInactive Counter32, + frMgtVCSigProcedAdmin INTEGER, + frMgtVCSigUserN391Admin INTEGER, + frMgtVCSigUserN392Admin INTEGER, + frMgtVCSigUserN393Admin INTEGER, + frMgtVCSigUserT391Admin INTEGER, + frMgtVCSigNetN392Admin INTEGER, + frMgtVCSigNetN393Admin INTEGER, + frMgtVCSigNetT392Admin INTEGER, + frMgtVCSigNetnT3Admin INTEGER + } + + frMgtVCSigProced OBJECT-TYPE + SYNTAX INTEGER { + + + u2nnet(1), + bidirect(2), + u2nuser(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the local + in-channel signaling procedural role that is used + for this UNI/NNI logical port. Bidirectional + procedures implies that both user-side and + network-side procedural roles are used. + + u2nnet(1) Logical port operates user to network + procedure in the role of the network + side + + bidirect(2) Logical port operates the + bidirectional procedure (both user + and network side roles) + + u2nuser(3) Logical port operates user to network + procedure in the role of the user + side" + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 1 } + + frMgtVCSigUserN391 OBJECT-TYPE + SYNTAX INTEGER (1..255) + UNITS "Polls" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N391 full status polling cycle value for this + UNI/NNI logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated and an + attempt to read will result in the noSuchInstance + exception response." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 6 } + ::= { frMgtVCSigEntry 2 } + + frMgtVCSigUserN392 OBJECT-TYPE + SYNTAX INTEGER (1..10) + + + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N392 error threshold value for this UNI/NNI + logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 3 } + ::= { frMgtVCSigEntry 3 } + + frMgtVCSigUserN393 OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N393 monitored events count value for this UNI/NNI + logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 4 } + ::= { frMgtVCSigEntry 4 } + + frMgtVCSigUserT391 OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + T391 link integrity verification polling timer + value for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 10 } + ::= { frMgtVCSigEntry 5 } + + frMgtVCSigNetN392 OBJECT-TYPE + SYNTAX INTEGER (1..10) + + + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side N392 error threshold value (nN2 for LMI) for + this UNI/NNI logical port. If the logical port is + not performing network-side procedures, then this + object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 3 } + ::= { frMgtVCSigEntry 6 } + + frMgtVCSigNetN393 OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side N393 monitored events count value (nN3 for + LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 4 } + ::= { frMgtVCSigEntry 7 } + + frMgtVCSigNetT392 OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side T392 polling verification timer value (nT2 + for LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 15 } + ::= { frMgtVCSigEntry 8 } + + + frMgtVCSigNetnN4 OBJECT-TYPE + SYNTAX INTEGER (5..5) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side nN4 maximum status enquires received value + for this UNI/NNI logical port. If the logical + port is not performing network-side procedures or + is not performing LMI procedures, then this object + is not instantiated. + + This object applies only to LMI and always has a + value of 5." + REFERENCE "LMI [24]" + ::= { frMgtVCSigEntry 9 } + + frMgtVCSigNetnT3 OBJECT-TYPE + SYNTAX INTEGER (5 | 10 | 15 | 20 | 25 | 30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side nT3 timer (for nN4 status enquires received) + value for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures or is not performing LMI procedures, + then this object is not instantiated. + + This object applies only to LMI." + REFERENCE "LMI [24]" + DEFVAL { 20 } + ::= { frMgtVCSigEntry 10 } + + frMgtVCSigUserLinkRelErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user-side local in-channel + signaling link reliability errors (i.e., non- + receipt of Status/Status Enquiry messages or + invalid sequence numbers in a Link Integrity + Verification Information Element) for this UNI/NNI + logical port. If the logical port is not + + + performing user-side procedures, then this object + is not instantiated." + ::= { frMgtVCSigEntry 11 } + + frMgtVCSigUserProtErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user-side local in-channel + signaling protocol errors (i.e., protocol + discriminator, unnumbered information, message + type, call reference, and mandatory information + element errors) for this UNI/NNI logical port. If + the logical port is not performing user-side + procedures, then this object is not instantiated." + ::= { frMgtVCSigEntry 12 } + + frMgtVCSigUserChanInactive OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the user-side channel was + declared inactive (i.e., N392 errors in N393 + events) for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + ::= { frMgtVCSigEntry 13 } + + frMgtVCSigNetLinkRelErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network-side local in-channel + signaling link reliability errors (i.e., non- + receipt of Status/Status Enquiry messages or + invalid sequence numbers in a Link Integrity + Verification Information Element) for this UNI/NNI + logical port." + ::= { frMgtVCSigEntry 14 } + + frMgtVCSigNetProtErrors OBJECT-TYPE + SYNTAX Counter32 + + + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network-side local in-channel + signaling protocol errors (i.e., protocol + discriminator, message type, call reference, and + mandatory information element errors) for this + UNI/NNI logical port." + ::= { frMgtVCSigEntry 15 } + + frMgtVCSigNetChanInactive OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the network-side channel was + declared inactive (i.e., N392 errors in N393 + events) for this UNI/NNI logical port." + ::= { frMgtVCSigEntry 16 } + + frMgtVCSigProcedAdmin OBJECT-TYPE + SYNTAX INTEGER { + u2nnet(1), + bidirect(2), + u2nuser(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the local + in-channel signaling procedural role that is used + for this UNI/NNI logical port. Bidirectional + procedures implies that both user-side and + network-side procedural roles are used. + + u2nnet(1) Logical port operates user to network + procedure in the role of the network + side + + bidirect(2) Logical port operates the + bidirectional procedure (both user + and network side roles) + + u2nuser(3) Logical port operates user to network + procedure in the role of the user + side" + + + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { u2nnet } + ::= { frMgtVCSigEntry 17 } + + frMgtVCSigUserN391Admin OBJECT-TYPE + SYNTAX INTEGER (1..255) + UNITS "Polls" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N391 full status polling cycle value for + this UNI/NNI logical port. If the logical port is + not performing user-side (bidirectional) + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 18 } + + frMgtVCSigUserN392Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N392 error threshold value for this + UNI/NNI logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 19 } + + frMgtVCSigUserN393Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N393 monitored events count value for + this UNI/NNI logical port. If the logical port is + not performing user-side (bidirectional) + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + + + ::= { frMgtVCSigEntry 20 } + + frMgtVCSigUserT391Admin OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side T391 link integrity verification polling + timer value for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 21 } + + frMgtVCSigNetN392Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side N392 error threshold value (nN2 for + LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 22 } + + frMgtVCSigNetN393Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side N393 monitored events count value + (nN3 for LMI) for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 23 } + + + frMgtVCSigNetT392Admin OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side T392 polling verification timer value + (nT2 for LMI) for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 24 } + + frMgtVCSigNetnT3Admin OBJECT-TYPE + SYNTAX INTEGER (5 | 10 | 15 | 20 | 25 | 30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side nT3 timer (for nN4 status enquires + received) value for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures or is not performing LMI procedures, + then this object is not instantiated. This object + applies only to LMI." + REFERENCE "LMI [24]" + ::= { frMgtVCSigEntry 25 } + + -- + -- Frame Relay PVC End-points + -- + + frPVCEndptTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrPVCEndptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay PVC End-Point table. This table + is used to model a PVC end-point. This table + contains the traffic parameters and statistics for + a PVC end-point. + + This table is used to identify the traffic + parameters for a bi-directional PVC segment end- + + + point, and it also provides statistics for a PVC + segment end-point. + + A PVC segment end-point is identified by a UNI/NNI + logical port index value and DLCI index value. + + If the frame relay service provider allows the + frame relay CNM subscriber to create, modify or + delete PVCs using SNMP, then this table is used to + identify and reserve the requested traffic + parameters of each PVC segment end-point. The + Connection table is used to 'connect' the end- + points together. Not all implementations will + support the capability of + creating/modifying/deleting PVCs using SNMP as a + feature of frame relay CNM service. + + Uni-directional PVCs are modeled with zero valued + traffic parameters in one of the directions (In or + Out direction) in this table. + + To create a PVC, the following procedures shall be + followed: + + 1) Create the entries for the PVC segment + endpoints in the frPVCEndptTable by specifying + the traffic parameters for the bi-directional + PVC segment endpoints. As shown in figure 2, a + point-to-point PVC has two endpoints, thus two + entries in this table. Uni-directional PVCs + are modeled with zero valued traffic + parameters in one direction; all the `In' + direction parameters for one frame relay PVC + End-point or all the `Out' direction + parameters for the other frame relay PVC + Endpoint. + + In _____________________________ Out + >>>>>>| |>>>>>>>> + ______| Frame Relay Network |________ + Out | | In + <<<<<<|_____________________________|<<<<<<<< + Frame Relay Frame Relay + PVC PVC + Endpoint Endpoint + + Figure 2, PVC Terminology + + + + 2) Go to the Frame Relay Connection Group." + ::= { frnetservObjects 3 } + + frPVCEndptEntry OBJECT-TYPE + SYNTAX FrPVCEndptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay PVC Endpoint table." + INDEX { ifIndex, frPVCEndptDLCIIndex } + ::= { frPVCEndptTable 1 } + + FrPVCEndptEntry ::= + SEQUENCE { + frPVCEndptDLCIIndex Integer32, + frPVCEndptInMaxFrameSize Integer32, + frPVCEndptInBc Integer32, + frPVCEndptInBe Integer32, + frPVCEndptInCIR Integer32, + frPVCEndptOutMaxFrameSize Integer32, + frPVCEndptOutBc Integer32, + frPVCEndptOutBe Integer32, + frPVCEndptOutCIR Integer32, + frPVCEndptConnectIdentifier Integer32, + frPVCEndptRowStatus RowStatus, + frPVCEndptRcvdSigStatus INTEGER, + frPVCEndptInFrames Counter32, + frPVCEndptOutFrames Counter32, + frPVCEndptInDEFrames Counter32, + frPVCEndptInExcessFrames Counter32, + frPVCEndptOutExcessFrames Counter32, + frPVCEndptInDiscards Counter32, + frPVCEndptInOctets Counter32, + frPVCEndptOutOctets Counter32, + frPVCEndptInDiscardsDESet Counter32, + frPVCEndptInFramesFECNSet Counter32, + frPVCEndptOutFramesFECNSet Counter32, + frPVCEndptInFramesBECNSet Counter32, + frPVCEndptOutFramesBECNSet Counter32, + frPVCEndptInCongDiscards Counter32, + frPVCEndptInDECongDiscards Counter32, + frPVCEndptOutCongDiscards Counter32, + frPVCEndptOutDECongDiscards Counter32, + frPVCEndptOutDEFrames Counter32, + frPVCEndptAtmIwfConnIndex Integer32 + + } + + + + frPVCEndptDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this PVC end-point. + + The values are restricted to the legal range for + the size of address field supported by the logical + port (frLportAddrDLCILen)." + REFERENCE "Q.922 [25]" + ::= { frPVCEndptEntry 1 } + + frPVCEndptInMaxFrameSize OBJECT-TYPE + SYNTAX Integer32 (1..4096) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the largest frame relay information field for this + PVC end-point in the ingress direction (into the + frame relay network). The value of + frPVCEndptInMaxFrameSize must be less than or + equal to the corresponding ifMtu for this frame + relay UNI/NNI logical port." + REFERENCE "FRF.1 [31] + Q.922 [25] + Q.933 [22]" + DEFVAL { 1600 } + ::= { frPVCEndptEntry 2 } + + frPVCEndptInBc OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed burst size (Bc) parameter (measured in + bits) for this PVC end-point in the ingress + direction (into the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 3 } + + frPVCEndptInBe OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the excess + burst size (Be) parameter (measured in bits) for + this PVC end-point in the ingress direction (into + the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 4 } + + frPVCEndptInCIR OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits per Second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed information rate (CIR) parameter + (measured in bits per second) for this PVC end- + point in the ingress direction (into the frame + relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (2047 * + 10**6)." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 5 } + + frPVCEndptOutMaxFrameSize OBJECT-TYPE + + + SYNTAX Integer32 (1..4096) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the largest frame relay information field for this + PVC end-point in the egress direction (out of the + frame relay network). The value of + frPVCEndptOutMaxFrameSize must be less than or + equal to the corresponding ifMtu for this frame + relay UNI/NNI logical port." + REFERENCE "FRF.1 [31] + Q.922 [25] + Q.933 [22]" + DEFVAL { 1600 } + ::= { frPVCEndptEntry 6 } + + frPVCEndptOutBc OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed burst size (Bc) parameter (measured in + bits) for this PVC end-point in the egress + direction (out of the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 7 } + + frPVCEndptOutBe OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the excess + burst size (Be) parameter (measured in bits) for + + + this PVC end-point in the egress direction (out of + the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 8 } + + frPVCEndptOutCIR OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits per Second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed information rate (CIR) parameter + (measured in bits per second) for this PVC end- + point in the egress direction (out of the frame + relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (2047 * + 10**6)." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 9 } + + frPVCEndptConnectIdentifier OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to associate PVC end-points + as being part of one PVC segment connection. This + value of this object is equal to the value of + frPVCConnectIndex, which is used as one of the + indices into the frPVCConnectTable. + + A connection that has been cross-connected via the + FR/ATM PVC Service IWF cross-connect table will + return the value zero when this object is read. In + case of these interworked connections, the + frPVCEndptAtmIwfConnIndex object must be accessed + + + to select the entry in the FR/ATM PVC Service IWF + cross-connect table. + + The value of this object is provided by the agent, + after the associated entries in the + frPVCConnectTable or frAtmIwfConnectionTable have + been created." + ::= { frPVCEndptEntry 10 } + + frPVCEndptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create new rows in this + table, modify existing rows, and to delete + existing rows. To create a new PVC, the entries + for the PVC segment end-points in the + frPVCEndptTable must first be created. Next, the + frPVCConnectTable is used to associate the frame + relay PVC segment end-points. In order for the + manager to have the necessary error diagnostics, + the frPVCEndptRowStatus object must initially be + set to `createAndWait(5)'. While the + frPVCEndptRowStatus object is in the + `createAndWait(5)' state, the manager can set each + columnar object and get the necessary error + diagnostics. The frPVCEndptRowStatus object may + not be set to `active(1)' unless the following + columnar objects exist in this row: + frPVCEndptInMaxFrameSize, frPVCEndptInBc, + frPVCEndptInBe, frPVCEndptInCIR, + frPVCEndptOutMaxFrameSize, frPVCEndptOutBc, + frPVCEndptOutBe, and frPVCEndptOutCIR." + ::= { frPVCEndptEntry 11 } + + frPVCEndptRcvdSigStatus OBJECT-TYPE + SYNTAX INTEGER { + deleted(1), + active(2), + inactive(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the PVC + status received via the local in-channel signaling + + + procedures for this PVC end-point. This object is + only pertinent for interfaces that perform the + bidirectional procedures. + + Each value has the following meaning: + deleted(1): This PVC is not listed in the full + status reports received from the + user device. The object retains + this value for as long as the PVC + is not listed in the full status + reports + + active(2): This PVC is reported as active, or + operational, by the user device. + + inactive(3): This PVC is reported as inactive, + or non-operational, by the user + device. + + none(4): This interface is only using the + network-side in-channel signaling + procedures, so this object does + not apply." + ::= { frPVCEndptEntry 12 } + + frPVCEndptInFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) for this PVC end-point. This includes + any frames discarded by the network due to + submitting more than Bc + Be data or due to any + network congestion recovery procedures." + ::= { frPVCEndptEntry 13 } + + frPVCEndptOutFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + regardless of whether they are Bc or Be frames for + this PVC end-point." + ::= { frPVCEndptEntry 14 } + + + frPVCEndptInDEFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) with the DE bit set to (1) for this PVC + end-point." + ::= { frPVCEndptEntry 15 } + + frPVCEndptInExcessFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) for this PVC end-point which were + treated as excess traffic. Frames which are sent + to the network with DE set to zero are treated as + excess when more than Bc bits are submitted to the + network during the Committed Information Rate + Measurement Interval (Tc). Excess traffic may or + may not be discarded at the ingress if more than + Bc + Be bits are submitted to the network during + Tc. Traffic discarded at the ingress is not + recorded in frPVCEndptInExcessFrames. Frames + which are sent to the network with DE set to one + are also treated as excess traffic." + ::= { frPVCEndptEntry 16 } + + frPVCEndptOutExcessFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + for this PVC end-point which were treated as + excess traffic. (The DE bit may be set to one.)" + ::= { frPVCEndptEntry 17 } + + frPVCEndptInDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded due to traffic + enforcement for this PVC end-point. Congestion + discards are not counted in this object." + ::= { frPVCEndptEntry 18 } + + frPVCEndptInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets received by the network + (ingress) for this PVC end-point. This counter + should only count octets from the beginning of the + frame relay header field to the end of user data. + If the network supporting frame relay can not + count octets, then this count should be an + approximation." + ::= { frPVCEndptEntry 19 } + + frPVCEndptOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent by the network (egress) + for this PVC end-point. This counter should only + count octets from the beginning of the frame relay + header field to the end of user data. If the + network supporting frame relay can not count + octets, then this count should be an + approximation." + ::= { frPVCEndptEntry 20 } + + frPVCEndptInDiscardsDESet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded with the DE bit set + due to traffic enforcement for this PVC end-point. + Congestion discards are not counted in this + object." + + + ::= { frPVCEndptEntry 21 } + + frPVCEndptInFramesFECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that have the FECN bit set for this PVC + end-point." + ::= { frPVCEndptEntry 22 } + + frPVCEndptOutFramesFECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that have the FECN bit set for this PVC end- + point." + ::= { frPVCEndptEntry 23 } + + frPVCEndptInFramesBECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that have the BECN bit set for this PVC + end-point." + ::= { frPVCEndptEntry 24 } + + frPVCEndptOutFramesBECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that have the BECN bit set for this PVC end- + point." + ::= { frPVCEndptEntry 25 } + + frPVCEndptInCongDiscards OBJECT-TYPE + SYNTAX Counter32 + + + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded due to input buffer + congestion, rather than traffic enforcement, for + this PVC end-point." + ::= { frPVCEndptEntry 26 } + + frPVCEndptInDECongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames counted by + frPVCEndptInCongDiscards with the DE bit set to + (1)." + ::= { frPVCEndptEntry 27 } + + frPVCEndptOutCongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that were discarded due to output buffer + congestion for this PVC end-point." + ::= { frPVCEndptEntry 28 } + + frPVCEndptOutDECongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames counted by + frPVCEndptOutCongDiscards with the DE bit set to + (1)." + ::= { frPVCEndptEntry 29 } + + frPVCEndptOutDEFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "The number of frames sent by the network (egress) + with the DE bit set to (1) for this PVC end- + point." + ::= { frPVCEndptEntry 30 } + + frPVCEndptAtmIwfConnIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the index value of the + FR/ATM cross-connect table entry used to link the + frame relay PVC with an ATM PVC. + + Each row of the frPVCEndptTable that is not + cross-connected with an ATM PVC must return the + value zero when this object is read. + + The value of this object is initialized by the + agent after the associated entries in the + frAtmIwfConnectionTable have been created. + + The value of this object is reset to zero + following destruction of the associated entry in + the frAtmIwfConnectionTable" + ::= { frPVCEndptEntry 31 } + + -- + -- Frame Relay PVC Connections + -- + + frPVCConnectIndexValue OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a hint to be used for + frPVCConnectIndex when creating entries in the + frPVCConnectTable. + + The value 0 indicates that no unassigned entries + are available. + + To obtain the frPVCConnectIndex value for a new + entry, the manager issues a management protocol + retrieval operation to obtain the current value of + this object. After each retrieval, the agent must + + + modify the value to the next unassigned index to + prevent assignment of the same value to multiple + management systems. + + A management system should repeat the read to + obtain a new value should an attempt to create the + new row using the previously returned hint fail." + ::= { frnetservObjects 4 } + + frPVCConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrPVCConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay PVC Connect Table is used to + model the bi-directional PVC segment flows + including: point-to-point PVCs, point-to- + multipoint PVCs, and multipoint-to-multipoint + PVCs. + + This table has read-create access and is used to + associate PVC end-points together as belonging to + one connection. The frPVCConnectIndex is used to + associate all the bi-directional flows. Not all + implementations will support the capability of + creating/modifying/deleting PVCs using SNMP as a + feature of frame relay CNM service. + + Once the entries in the frPVCEndptTable are + created, the following step are used to associate + the PVC end-points as belonging to one PVC + connection: + + 1) Obtain a unique frPVCConnectIndex + using the frPVCConnectIndexValue object. + + 2) Connect the PVC segment endpoints together + with the applicable frPVCConnectIndex value + obtained via frPVCConnectIndexValue. The + entries in this table are created by using + the frPVCConnectRowStatus object. + + 3) The agent will provide the value of the + corresponding instances of + frPVCEndptConnectIdentifier with the + frPVCConnectIndex value. + + 4) Set frPVCConnectAdminStatus to `active(1)' in + + + all rows for this PVC segment to turn the + PVC on. + + For example, the Frame Relay PVC Connection Group + models a bi-directional, point-to-point PVC + segment as one entry in this table. + + Frame Relay Frame Relay + Network Network + Low Port High Port + __________________________________ + | | + _____| >> from low to high PVC flow >> |_____ + | << from high to low PVC flow << | + |__________________________________| + + The terms low and high are chosen to represent + numerical ordering of a PVC segment's endpoints + for representation in this table. That is, the + endpoint with the lower value of ifIndex is termed + 'low', while the opposite endpoint of the segment + is termed 'high'. This terminology is to provide + directional information; for example the + frPVCConnectL2hOperStatus and + frPVCConnectH2lOperStatus as illustrated above. + + If the Frame Relay Connection table is used to + model a unidirectional PVC, then one direction + (either from low to high or from high to low) has + its Operational Status equal to down. + + A PVC segment is a portion of a PVC that traverses + one Frame Relay Network, and a PVC segment is + identified by its two end-points (UNI/NNI logical + port index value and DLCI index value) through one + Frame Relay Network." + ::= { frnetservObjects 5 } + + frPVCConnectEntry OBJECT-TYPE + SYNTAX FrPVCConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay PVC Connect table. + This entry is used to model a PVC segment in two + directions." + INDEX { frPVCConnectIndex, + frPVCConnectLowIfIndex, + + + frPVCConnectLowDLCIIndex, + frPVCConnectHighIfIndex, + frPVCConnectHighDLCIIndex } + ::= { frPVCConnectTable 1 } + + FrPVCConnectEntry ::= + SEQUENCE { + frPVCConnectIndex Integer32, + frPVCConnectLowIfIndex InterfaceIndex, + frPVCConnectLowDLCIIndex Integer32, + frPVCConnectHighIfIndex InterfaceIndex, + frPVCConnectHighDLCIIndex Integer32, + frPVCConnectAdminStatus INTEGER, + frPVCConnectL2hOperStatus INTEGER, + frPVCConnectH2lOperStatus INTEGER, + frPVCConnectL2hLastChange TimeStamp, + frPVCConnectH2lLastChange TimeStamp, + frPVCConnectRowStatus RowStatus, + frPVCConnectUserName SnmpAdminString, + frPVCConnectProviderName SnmpAdminString + } + + frPVCConnectIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + frPVCConnectIndexValue obtained to uniquely + identify this PVC segment connection." + ::= { frPVCConnectEntry 1 } + + frPVCConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to IF-MIB + ifIndex value of the UNI/NNI logical port for this + PVC segment. The term low implies that this PVC + segment end-point has the numerically lower + ifIndex value than the connected/associated PVC + segment end-point. + + RFC 1604 permitted a zero value for this object to + identify termination at a non-frame relay + interface. However, this cross-connect table is + limited to frame relay connections. See the frame + + + relay/ATM IWF MIB [28] for the cross-connect table + used for those types of connections." + ::= { frPVCConnectEntry 2 } + + frPVCConnectLowDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this end-point of the PVC segment." + REFERENCE "Q.922 [25]" + ::= { frPVCConnectEntry 3 } + + frPVCConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to IF-MIB + ifIndex value for the UNI/NNI logical port for + this PVC segment. The term high implies that this + PVC segment end-point has the numerically higher + ifIndex value than the connected/associated PVC + segment end-point." + ::= { frPVCConnectEntry 4 } + + frPVCConnectHighDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the egress + DLCI value for this end-point of the PVC segment." + REFERENCE "Q.922 [25]" + ::= { frPVCConnectEntry 5 } + + frPVCConnectAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the desired + administrative status of this bi-directional PVC + + + segment. The active(1) state means the PVC + segment is currently operational; the inactive(2) + state means the PVC segment is currently not + operational; the testing(3) state means the PVC + segment is currently undergoing a test. This + state is set by an administrative entity. This + value affects the PVC status indicated across the + ingress NNI/UNI of both end-points of the bi- + directional PVC segment. When a PVC segment + connection is created using this table, this + object is initially set to `inactive(2)'. After + the frPVCConnectRowStatus object is set to + `active(1)' (and the corresponding/associated + entries in the frPVCEndptTable have their + frPVCEndptRowStatus object set to `active(1)'), + the frPVCConnectAdminStatus object may be set to + `active(1)' to turn on the PVC segment + connection." + ::= { frPVCConnectEntry 6 } + + frPVCConnectL2hOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the current + operational status of the PVC segment connection + in one direction; (i.e., in the low to high + direction). This value affects the PVC status + indicated across the ingress NNI/UNI (low side) of + the PVC segment. + + The values mean: + + active(1) - PVC is currently operational + + inactive(2) - PVC is currently not operational. + This may be because of an underlying + LMI or DS1 failure. + + testing(3) - PVC is currently undergoing a test. + This may be because of an underlying + frLport or DS1 undergoing a test. + + + unknown(4) - the status of the PVC currently can + not be determined." + ::= { frPVCConnectEntry 7 } + + frPVCConnectH2lOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the current + operational status of the PVC segment connection + in one direction; (i.e., in the high to low + direction).. This value affects the PVC status + indicated across the ingress NNI/UNI (high side) + of the PVC segment. + + The values mean: + + active(1) - PVC is currently operational + + inactive(2) - PVC is currently not operational. + This may be because of an underlying + LMI or DS1 failure. + + testing(3) - PVC is currently undergoing a test. + This may be because of an underlying + frLport or DS1 undergoing a test. + + unknown(4) - the status of the PVC currently can + not be determined." + ::= { frPVCConnectEntry 8 } + + frPVCConnectL2hLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Interface MIB's sysUpTime object + at the time this PVC segment entered its current + operational state in the low to high direction. + If the current state was entered prior to the last + re-initialization of the FRS agent, then this + object contains a zero value." + + + ::= { frPVCConnectEntry 9 } + + frPVCConnectH2lLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Interface MIB's sysUpTime object + at the time this PVC segment entered its current + operational state in the high to low direction. + If the current state was entered prior to the last + re-initialization of the FRS agent, then this + object contains a zero value." + ::= { frPVCConnectEntry 10 } + + frPVCConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + frPVCConnectTable. This variable is used to + create new connections for the PVC end-points and + to change existing connections of the PVC end- + points. This object must be initially set to + `createAndWait(5)'. In this state, the agent + checks the parameters in the associated entries in + the frPVCEndptTable to verify that the PVC end- + points can be connected (i.e., the In parameters + for one PVC end-point are equal to the Out + parameters for the other PVC end-point). This + object can not be set to `active(1)' unless the + following columnar object exists in this row: + frPVCConnectAdminStatus. The agent also supplies + the associated value of frPVCConnectIndex for the + frPVCEndptConnectIdentifier instances. To turn on + a PVC segment connection, the + frPVCConnectAdminStatus is set to `active(1)'." + ::= { frPVCConnectEntry 11 } + + frPVCConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a service user assigned textual + representation of a PVC." + ::= { frPVCConnectEntry 12 } + + + frPVCConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a system supplied textual representation + of PVC. It is assigned by the service provider." + ::= { frPVCConnectEntry 13 } + + -- + -- The Frame Relay Accounting + -- + + frAccountPVCTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAccountPVCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Accounting PVC table. This table + is used to perform accounting on a PVC segment + end-point basis." + ::= { frnetservObjects 6 } + + frAccountPVCEntry OBJECT-TYPE + SYNTAX FrAccountPVCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Accounting PVC + table." + INDEX { ifIndex, + frAccountPVCDLCIIndex } + ::= { frAccountPVCTable 1 } + + FrAccountPVCEntry ::= + SEQUENCE { + frAccountPVCDLCIIndex Integer32, + frAccountPVCSegmentSize Integer32, + frAccountPVCInSegments Counter32, + frAccountPVCOutSegments Counter32 + } + + frAccountPVCDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + + + value for this PVC segment end-point." + REFERENCE "Q.922 [25]" + ::= { frAccountPVCEntry 1 } + + frAccountPVCSegmentSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the Segment + Size for this PVC segment end-point." + ::= { frAccountPVCEntry 2 } + + frAccountPVCInSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments received by this PVC segment end- + point." + ::= { frAccountPVCEntry 3 } + + frAccountPVCOutSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments sent by this PVC segment end-point." + ::= { frAccountPVCEntry 4 } + + -- + -- Accounting on a Frame Relay Logical Port + -- + + frAccountLportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAccountLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Accounting Logical Port table. + This table is used to perform accounting on a + UNI/NNI Logical Port basis." + ::= { frnetservObjects 7 } + + + frAccountLportEntry OBJECT-TYPE + SYNTAX FrAccountLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Accounting Logical + Port table." + INDEX { ifIndex } + ::= { frAccountLportTable 1 } + + FrAccountLportEntry ::= + SEQUENCE { + frAccountLportSegmentSize + Integer32, + frAccountLportInSegments + Counter32, + frAccountLportOutSegments + Counter32 + } + + frAccountLportSegmentSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the Segment + Size for this UNI/NNI logical port." + ::= { frAccountLportEntry 1 } + + frAccountLportInSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments received by this UNI/NNI logical + port." + ::= { frAccountLportEntry 2 } + + frAccountLportOutSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + + + of segments sent by this UNI/NNI logical port." + ::= { frAccountLportEntry 3 } + + -- + -- Frame Relay Network Service Notifications + -- + + frPVCConnectStatusChange NOTIFICATION-TYPE + OBJECTS { frPVCConnectIndex, + frPVCConnectLowIfIndex, + frPVCConnectLowDLCIIndex, + frPVCConnectHighIfIndex, + frPVCConnectHighDLCIIndex, + frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCEndptRcvdSigStatus } + STATUS deprecated + DESCRIPTION + "Refer to the description of the + frPVCConnectStatusNotif notification that has + replaced this notification. The notification is + deprecated due to the incorrect inclusion of index + values and to take advantage of the trap prefix + for automatic conversion from SMIv2 to SMIv1 by + making the one but last sub-ID a zero (i.e. the + so-called trap prefix)." + ::= { frnetservTraps 1 } + + frPVCConnectStatusNotif NOTIFICATION-TYPE + OBJECTS { frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCEndptRcvdSigStatus } + STATUS current + DESCRIPTION + "This notification indicates that the indicated + PVC has changed state. + + This notification is not sent if an FR-UNI changes + state; a linkDown or linkUp notification should be + sent instead. The first instance of + frPVCEndptRcvdSigStatus is for the endpoint with + LowIfIndex, LowDLCIIndex. The second instance of + frPVCEndptRcvdSigStatus is for the endpoint with + HighIfIndex, HighDLCIIndex" + ::= { frnetservTrapsPrefix 2 } + + -- Conformance Information + + + + frnetservConformance OBJECT IDENTIFIER + ::= { frnetservMIB 3 } + + frnetservGroups OBJECT IDENTIFIER + ::= { frnetservConformance 1 } + frnetservCompliances OBJECT IDENTIFIER + ::= { frnetservConformance 2 } + + + -- + -- Service (Read-only) Modules + -- + frnetservCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Service Interfaces. + + The distinction between 'service' and 'switch' is + that a 'switch' is configured via this MIB. + Hence, the various read/write objects have write + capability. A 'service' represents a passive + monitor-only customer network management + interface. The various read/write objects are + restricted to read-only capability." + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup2, + frnetservMgtVCSigGroup, + frnetservPVCEndptGroup, + frnetservPVCEndptGroup2, + frnetservPVCConnectGroup, + frnetservPVCConnectNamesGroup, + frnetservPVCNotifGroup2 } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this frame + relay interface." + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this frame relay interface." + + OBJECT frPVCEndptInMaxFrameSize + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + 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 frPVCConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + 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 frLportFragControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frLportFragSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectProviderName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { frnetservCompliances 2 } + + -- + -- Switch (Configuration) Compliance + -- + frnetSwitchCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Switch objects. + + The distinction between 'service' and 'switch' is + that a 'switch' is configured via this MIB. + + + Hence, the various read/write objects have write + capability. A 'service' represents a passive + monitor-only customer network management + interface. The various read/write objects are + restricted to read-only capability." + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup2, + frnetservLportAdminGroup, + frnetservMgtVCSigGroup, + frnetservMgtVCSigAdminGroup, + frnetservPVCEndptGroup, + frnetservPVCEndptGroup2, + frnetservPVCConnectGroup, + frnetservPVCConnectNamesGroup, + frnetservPVCNotifGroup2 } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this frame + relay interface." + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this frame relay interface." + + ::= { frnetservCompliances 3 } + + -- + -- Historical RFC 1604 Compliance Modules + -- + + frnetservCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Service Interfaces. + + This compliance statement has been deprecated in + favor of frnetservCompliance2. The new compliance + module expands the mandatory groups to include + notification and other new objects." + + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup, + + + frnetservMgtVCSigGroup, + frnetservPVCEndptGroup, + frnetservPVCConnectGroup } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for Frame Relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this Frame + Relay interface." + + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for Frame Relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this Frame Relay interface." + + OBJECT frPVCEndptInMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT frPVCEndptInBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBe + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + 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 frPVCConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + 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)." + ::= { frnetservCompliances 1 } + + -- + -- Frame Relay Service MIB Object Groups + -- + frnetservLportGroup OBJECT-GROUP + OBJECTS { frLportNumPlan, frLportContact, frLportLocation, + frLportType, + frLportAddrDLCILen, frLportVCSigProtocol, + frLportVCSigPointer } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay Logical Port. This + group has been deprecated to eliminate reference + + + to the object frLportVCSigPointer. + + Use the new group frnetservLportGroup2 as a + replacement for this group." + ::= { frnetservGroups 1 } + + frnetservMgtVCSigGroup OBJECT-GROUP + OBJECTS { frMgtVCSigProced, + frMgtVCSigUserN391, + frMgtVCSigUserN392, + frMgtVCSigUserN393, + frMgtVCSigUserT391, + frMgtVCSigNetN392, + frMgtVCSigNetN393, + frMgtVCSigNetT392, + frMgtVCSigNetnN4, + frMgtVCSigNetnT3, + frMgtVCSigUserLinkRelErrors, + frMgtVCSigUserProtErrors, + frMgtVCSigUserChanInactive, + frMgtVCSigNetLinkRelErrors, + frMgtVCSigNetProtErrors, + frMgtVCSigNetChanInactive } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to the Local In-Channel Signaling + Procedures used for a UNI/NNI logical port." + ::= { frnetservGroups 2 } + + frnetservPVCEndptGroup OBJECT-GROUP + OBJECTS { frPVCConnectIndexValue, + frPVCEndptInMaxFrameSize, + frPVCEndptInBc, + frPVCEndptInBe, + frPVCEndptInCIR, + frPVCEndptOutMaxFrameSize, + frPVCEndptOutBc, + frPVCEndptOutBe, + frPVCEndptOutCIR, + frPVCEndptConnectIdentifier, + frPVCEndptRowStatus, + frPVCEndptRcvdSigStatus, + frPVCEndptInFrames, + frPVCEndptOutFrames, + frPVCEndptInDEFrames, + frPVCEndptInExcessFrames, + frPVCEndptOutExcessFrames, + + + frPVCEndptInDiscards, + frPVCEndptInOctets, + frPVCEndptOutOctets } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay PVC end-point." + ::= { frnetservGroups 3 } + + frnetservPVCConnectGroup OBJECT-GROUP + OBJECTS { frPVCConnectAdminStatus, + frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCConnectL2hLastChange, + frPVCConnectH2lLastChange, + frPVCConnectRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay PVC connection." + ::= { frnetservGroups 4 } + + frnetservAccountPVCGroup OBJECT-GROUP + OBJECTS { frAccountPVCSegmentSize, + frAccountPVCInSegments, + frAccountPVCOutSegments } + STATUS current + DESCRIPTION + "A collection of objects providing accounting + information application to a Frame Relay PVC end- + point." + ::= { frnetservGroups 5 } + + frnetservAccountLportGroup OBJECT-GROUP + OBJECTS { frAccountLportSegmentSize, + frAccountLportInSegments, + frAccountLportOutSegments } + STATUS current + DESCRIPTION + "A collection of objects providing accounting + information application to a Frame Relay logical + port." + ::= { frnetservGroups 6 } + + frnetservLportGroup2 OBJECT-GROUP + OBJECTS { frLportNumPlan, + frLportContact, + frLportLocation, + + + frLportType, + frLportAddrDLCILen, + frLportVCSigProtocol, + frLportFragControl, + frLportFragSize } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay Logical Port. + + This new version of the Logical Port Group + eliminates the frLportVCSigPointer and adds + support for fragmentation." + ::= { frnetservGroups 7 } + + frnetservPVCEndptGroup2 OBJECT-GROUP + OBJECTS { frPVCEndptInDiscardsDESet, + frPVCEndptInFramesFECNSet, + frPVCEndptOutFramesFECNSet, + frPVCEndptInFramesBECNSet, + frPVCEndptOutFramesBECNSet, + frPVCEndptInCongDiscards, + frPVCEndptInDECongDiscards, + frPVCEndptOutCongDiscards, + frPVCEndptOutDECongDiscards, + frPVCEndptOutDEFrames, + frPVCEndptAtmIwfConnIndex } + STATUS current + DESCRIPTION + "Additions to the PVC end-point group. These + additions provide new frame counters to track + frame loss. In addition, the new FR/ATM IWF MIB + cross-connect index is included." + ::= { frnetservGroups 8 } + + frnetservPVCConnectNamesGroup OBJECT-GROUP + OBJECTS { frPVCConnectUserName, + frPVCConnectProviderName } + STATUS current + DESCRIPTION + "Additions to the PVC Connect Group." + ::= { frnetservGroups 9 } + + frnetservLportAdminGroup OBJECT-GROUP + OBJECTS { frLportDLCIIndexValue, + frLportTypeAdmin, + frLportVCSigProtocolAdmin } + STATUS current + + + DESCRIPTION + "Administrative (R/W) objects for creating a + switch logical port." + ::= { frnetservGroups 10 } + + frnetservMgtVCSigAdminGroup OBJECT-GROUP + OBJECTS { frMgtVCSigProcedAdmin, + frMgtVCSigUserN391Admin, + frMgtVCSigUserN392Admin, + frMgtVCSigUserN393Admin, + frMgtVCSigUserT391Admin, + frMgtVCSigNetN392Admin, + frMgtVCSigNetN393Admin, + frMgtVCSigNetT392Admin, + frMgtVCSigNetnT3Admin } + STATUS current + DESCRIPTION + + "A collection of objects providing information + applicable to the Local In-Channel Signaling + Procedures used for a UNI/NNI logical port." + ::= { frnetservGroups 11 } + + frnetservPVCNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { frPVCConnectStatusChange } + STATUS deprecated + DESCRIPTION + "Deprecated notification group. The + frPVCConnectStatusChange notification was flawed + because it included redundant indexes and was not + properly encoded for SMIv1 conversion." + ::= { frnetservGroups 12 } + + frnetservPVCNotifGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { frPVCConnectStatusNotif } + STATUS current + DESCRIPTION + "A collection of notifications that apply to frame + relay PVC Connections " + ::= { frnetservGroups 13 } + + END diff --git a/mibs/ietf/FRSLD-MIB b/mibs/ietf/FRSLD-MIB new file mode 100644 index 0000000..499c7e6 --- /dev/null +++ b/mibs/ietf/FRSLD-MIB @@ -0,0 +1,1823 @@ +FRSLD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, Integer32, + Counter64, TimeTicks, mib-2 FROM SNMPv2-SMI + CounterBasedGauge64 FROM HCNUM-TC + TEXTUAL-CONVENTION, RowStatus, + TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + DLCI FROM FRAME-RELAY-DTE-MIB; + + frsldMIB MODULE-IDENTITY + LAST-UPDATED "200201030000Z" -- January 3, 2002 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "IETF Frame Relay Service MIB (frnetmib) Working Group + + WG Charter: http://www.ietf.org/html.charters/ + frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Robert Steinberger + Paradyne Networks and + Fujitsu Network Communications + Email: robert.steinberger@fnc.fujitsu.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: Orly_n@rad.co.il" + DESCRIPTION + "The MIB module to describe generic objects for + FRF.13 Frame Relay Service Level Definitions." + REVISION "200201030000Z" -- January 3, 2002 + DESCRIPTION + "Initial version, published as RFC 3202" + ::= { mib-2 95 } + + -- + -- Textual Conventions + -- + FrsldTxRP ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reference point a PVC uses for calculation + of transmitter related statistics. + + The valid values for this type of object are as follows: + - srcLocalRP(1) for the local source + - ingTxLocalRP(2) for the local ingress queue input + - tpTxLocalRP(3) for the local traffic policing + - eqiTxLocalRP(4) for the local egress queue input + - eqoTxLocalRP(5) for the local egress queue output + - otherTxLocalRP(6) for any other local transmit point + - srcRemoteRP(7) for the remote source + - ingTxLocalRP(8) for the remote ingress queue input + - tpTxLocalRP(9) for the remote traffic policing + - eqiTxRemoteRP(10) for the remote egress queue input + - eqoTxRemoteRP(11) for the remote egress queue output + - otherTxRemoteRP(12) for any other remote xmit point" + REFERENCE + "FRF.13: Section 2.3" + SYNTAX INTEGER { + srcLocalRP(1), + ingTxLocalRP(2), + tpTxLocalRP(3), + + + eqiTxLocalRP(4), + eqoTxLocalRP(5), + otherTxLocalRP(6), + srcRemoteRP(7), + ingTxRemoteRP(8), + tpTxRemoteRP(9), + eqiTxRemoteRP(10), + eqoTxRemoteRP(11), + otherTxRemoteRP(12) + } + + FrsldRxRP ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reference point a PVC uses for calculation + of receiver related statistics. + + The valid values for this object are as follows: + - desLocalRP(1) for the local destination + - ingRxLocalRP(2) for the local ingress queue input + - tpRxLocalRP(3) for the local traffic policing + - eqiRxLocalRP(4) for the local egress queue input + - eqoRxLocalRP(5) for the local egress queue output + - otherRxLocalRP(6) for any other local receive point + - desRemoteRP(7) for the remote destination + - ingRxRemoteRP(8) for the remote ingress input + - tpRxRemoteRP(9) for the remote traffic policing + - eqiRxRemoteRP(10) for the remote egress queue input + - eqoRxRemoteRP(11) for the remote egress queue output + - otherRxRemoteRP(12) for any other remote receive point" + REFERENCE + "FRF.13: Section 2.3" + SYNTAX INTEGER { + desLocalRP(1), + ingRxLocalRP(2), + tpRxLocalRP(3), + eqiRxLocalRP(4), + eqoRxLocalRP(5), + otherRxLocalRP(6), + desRemoteRP(7), + ingRxRemoteRP(8), + tpRxRemoteRP(9), + eqiRxRemoteRP(10), + eqoRxRemoteRP(11), + otherRxRemoteRP(12) + } + + -- + + + -- Base Objects + --- + + frsldObjects OBJECT IDENTIFIER ::= { frsldMIB 1 } + frsldCapabilities OBJECT IDENTIFIER ::= { frsldMIB 2 } + frsldConformance OBJECT IDENTIFIER ::= { frsldMIB 3 } + + -- The Frame Relay Service Level Definitions PVC Control Table + -- + -- This table is used to define and display the parameters of + -- service level definitions on individual PVCs. + + frsldPvcCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + PVC control table." + ::= { frsldObjects 1 } + + frsldPvcCtrlEntry OBJECT-TYPE + SYNTAX FrsldPvcCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions PVC control table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP} + ::= { frsldPvcCtrlTable 1 } + + FrsldPvcCtrlEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + frsldPvcCtrlDlci DLCI, + frsldPvcCtrlTransmitRP FrsldTxRP, + frsldPvcCtrlReceiveRP FrsldRxRP, + frsldPvcCtrlStatus RowStatus, + -- + -- Service Level Definitions Setup Variables + -- + frsldPvcCtrlPacketFreq Integer32, + -- + -- Delay Specific Setup Variables + -- + + + frsldPvcCtrlDelayFrSize Integer32, + frsldPvcCtrlDelayType INTEGER, + frsldPvcCtrlDelayTimeOut Integer32, + -- + -- Data Persistence Control Variables + -- + frsldPvcCtrlPurge Integer32, + frsldPvcCtrlDeleteOnPurge INTEGER, + frsldPvcCtrlLastPurgeTime TimeStamp + } + + frsldPvcCtrlDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this PVC." + ::= { frsldPvcCtrlEntry 1 } + + frsldPvcCtrlTransmitRP OBJECT-TYPE + SYNTAX FrsldTxRP + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reference point this PVC uses for calculation + of transmitter related statistics. This object + together with frsldPvcCtrlReceiveRP define the + measurement domain." + REFERENCE + "FRF.13: Section 2.3" + ::= { frsldPvcCtrlEntry 2 } + + frsldPvcCtrlReceiveRP OBJECT-TYPE + SYNTAX FrsldRxRP + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reference point this PVC uses for calculation + of receiver related statistics. This object + together with frsldPvcCtrlTransmitRP define the + measurement domain." + ::= { frsldPvcCtrlEntry 3 } + + frsldPvcCtrlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. When the status changes to active(1) for the + first time, a row will also be added to the data + table below. This row SHOULD not be removed until + the status is changed to deleted. + + When this object is set to destroy(6), all associated + sample and data table rows will also be deleted. + When this object is changed from active(1) to any + other valid value, the defined purge behavior will + affect the data and sample tables. + + The rows added to this table MUST have a valid + ifIndex and an ifType related to frame relay. Further, + the reference points referred to by frsldPvcCtrlTransmitRP + and frsldPvcCtrlReceiveRP MUST be supported (see the + frsldRPCaps object). + + If at any point the row is not in the active(1) state + and the DLCI no longer exists, the state SHOULD + report notReady(3). + + The data in this table SHOULD persist through power + cycles. The symantics of readiness for the rows still + applies. This means that it is possible for a row to be + reprovisioned as notReady(3) if the underlying DLCI does + not persist." + ::= { frsldPvcCtrlEntry 4 } + + frsldPvcCtrlPacketFreq OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency in seconds between initiation of + specialized packets used to collect delay and / or + delivery information as supported by the device. + A value of zero indicates that no packets will + be sent." + DEFVAL { 60 } + ::= { frsldPvcCtrlEntry 5 } + + frsldPvcCtrlDelayFrSize OBJECT-TYPE + SYNTAX Integer32 (1..8188) + UNITS "octets" + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the payload in the frame used for + calculation of network delay." + DEFVAL { 128 } + ::= { frsldPvcCtrlEntry 6 } + + frsldPvcCtrlDelayType OBJECT-TYPE + SYNTAX INTEGER { + oneWay(1), + roundTrip(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of delay measurement performed." + REFERENCE + "FRF.13: Section 3" + ::= { frsldPvcCtrlEntry 7 } + + frsldPvcCtrlDelayTimeOut OBJECT-TYPE + SYNTAX Integer32 (1..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A delay frame will count as a missed poll if + it is not updated in the time specified by + frsldPvcCtrlDelayTimeOut." + DEFVAL { 60 } + ::= { frsldPvcCtrlEntry 8 } + + frsldPvcCtrlPurge OBJECT-TYPE + SYNTAX Integer32 (0..172800) -- up to 48 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the amount of time the device + will wait, after discovering that a DLCI does not exist, + the DLCI was deleted or the value of frsldPvcCtrlStatus + changes from active(1) to either notInService(2) or + notReady(3), prior to automatically purging the history + in the sample tables and resetting the data in the data + tables to all zeroes. If frsldPvcCtrlStatus is manually + set to destroy(6), this object does not apply." + DEFVAL { 0 } + + + ::= { frsldPvcCtrlEntry 9 } + + frsldPvcCtrlDeleteOnPurge OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sampleContols(2), + all(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether rows will + automatically be deleted from the tables + when the information is purged. + + - A value of none(1) indicates that no rows + will deleted. The last known values will + be preserved. + - A value of sampleControls(2) indicates + that all associated sample control rows + will be deleted. + - A value of all(3) indicates that all + associated rows SHOULD be deleted." + DEFVAL { all } + ::= { frsldPvcCtrlEntry 10 } + + frsldPvcCtrlLastPurgeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the value of sysUpTime + at the time the information was last purged. + This value SHOULD be set to the sysUpTime + upon setting frsldPvcCtrlStatus to active(1) + for the first time. Each time a + discontinuity in the counters occurs, this + value MUST be set to the sysUpTime. + + If frsldPvcCtrlStatus has never been active(1), + this object SHOULD return 0. + + This object SHOULD be used as the discontinuity + timer for the counters in frsldPvcDataTable." + ::= { frsldPvcCtrlEntry 11 } + + -- The Frame Relay Service Level Definitions Sampling Control + -- Table + + + -- + -- This table is used to define the sample control parameters + -- of service level definitions on individual PVCs. + + frsldSmplCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldSmplCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + sampling control table." + ::= { frsldObjects 2 } + + frsldSmplCtrlEntry OBJECT-TYPE + SYNTAX FrsldSmplCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions sample control table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP, + frsldSmplCtrlIdx } + ::= { frsldSmplCtrlTable 1 } + + FrsldSmplCtrlEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + frsldSmplCtrlIdx Integer32, + frsldSmplCtrlStatus RowStatus, + -- + -- Collection Control Variables + -- + frsldSmplCtrlColPeriod Integer32, + frsldSmplCtrlBuckets Integer32, + frsldSmplCtrlBucketsGranted Integer32 + } + + frsldSmplCtrlIdx OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index for this row in the + sample control table." + ::= { frsldSmplCtrlEntry 1 } + + + frsldSmplCtrlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. This row SHOULD NOT be removed until the + status is changed to destroy(6). When the status + changes to active(1), the collection in the sample + tables below will be activated. + + The rows added to this table MUST have a valid + ifIndex, an ifType related to frame relay, + frsldPvcCtrlDlci MUST exist for the specified + ifIndex and frsldPvcCtrlStatus MUST have a + value of active(1). + + The value of frsldPvcCtrlStatus MUST be active(1) + to transition this object to active(1). If + the value of frsldPvcCtrlStatus becomes anything + other than active(1) when the state of this object + is not active(1), this object SHOULD be set to + notReady(3). + + The data in this table SHOULD persist through power + cycles. The symantics of readiness for the rows still + applies. This means that it is possible for a row to be + reprovisioned as notReady(3) if the underlying DLCI does + not persist." + ::= { frsldSmplCtrlEntry 2 } + + frsldSmplCtrlColPeriod OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of time in seconds that defines a + period of collection for the statistics. + At the end of each period, the statistics will be + sampled and a row is added to the sample table." + ::= { frsldSmplCtrlEntry 3 } + + frsldSmplCtrlBuckets OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The number of discrete buckets over which the + data statistics are sampled. + + When this object is created or modified, the device + SHOULD attempt to set the frsldSmplCtrlBuckets- + Granted to a value as close as is possible + depending upon the implementation and the available + resources." + DEFVAL { 60 } + ::= { frsldSmplCtrlEntry 4 } + + frsldSmplCtrlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete buckets granted. This + object will return 0 until frsldSmplCtrlStatus is + set to active(1). At that time the buckets will be + allocated depending upon implementation and + available resources." + ::= { frsldSmplCtrlEntry 5 } + + -- The Frame Relay Service Level Definitions PVC Data Table + -- + -- This table contains the accumulated values of + -- the collected data. This table is the table that should + -- be referenced by external polling mechanisms if time + -- based polling be desired. + + frsldPvcDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + data table. + + This table contains accumulated values of the + collected data. It is the table that should be + referenced by external polling mechanisms if + time based polling be desired." + ::= { frsldObjects 3 } + + frsldPvcDataEntry OBJECT-TYPE + SYNTAX FrsldPvcDataEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions data table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP} + ::= { frsldPvcDataTable 1 } + + FrsldPvcDataEntry ::= + SEQUENCE { + frsldPvcDataMissedPolls Counter32, + frsldPvcDataFrDeliveredC Counter32, + frsldPvcDataFrDeliveredE Counter32, + frsldPvcDataFrOfferedC Counter32, + frsldPvcDataFrOfferedE Counter32, + frsldPvcDataDataDeliveredC Counter32, + frsldPvcDataDataDeliveredE Counter32, + frsldPvcDataDataOfferedC Counter32, + frsldPvcDataDataOfferedE Counter32, + frsldPvcDataHCFrDeliveredC Counter64, + frsldPvcDataHCFrDeliveredE Counter64, + frsldPvcDataHCFrOfferedC Counter64, + frsldPvcDataHCFrOfferedE Counter64, + frsldPvcDataHCDataDeliveredC Counter64, + frsldPvcDataHCDataDeliveredE Counter64, + frsldPvcDataHCDataOfferedC Counter64, + frsldPvcDataHCDataOfferedE Counter64, + frsldPvcDataUnavailableTime TimeTicks, + frsldPvcDataUnavailables Counter32 + } + + frsldPvcDataMissedPolls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of polls that have been determined + to be missed. These polls are typically associated + with the calculation of delay but may also be + used for the calculation of other statistics. If an + anticipated poll is not received in a reasonable + amount of time, it should be counted as missed. + The value used to determine the reasonable amount + of time is contained in frsldPvcCtrlDelayTimeOut. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + + + frsldPvcCtrlLastPurgeTime." + ::= { frsldPvcDataEntry 1 } + + frsldPvcDataFrDeliveredC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcDataEntry 2 } + + frsldPvcDataFrDeliveredE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcDataEntry 3 } + + frsldPvcDataFrOfferedC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + + + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcDataEntry 4 } + + frsldPvcDataFrOfferedE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcDataEntry 5 } + + frsldPvcDataDataDeliveredC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcDataEntry 6 } + + frsldPvcDataDataDeliveredE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. + + Discontinuities in the value of this counter can + + + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcDataEntry 7 } + + frsldPvcDataDataOfferedC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcDataEntry 8 } + + frsldPvcDataDataOfferedE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcDataEntry 9 } + + frsldPvcDataHCFrDeliveredC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. This object is a 64-bit version + of frsldPvcDataFrDeliveredC. + + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcDataEntry 10 } + + frsldPvcDataHCFrDeliveredE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. This object is a 64-bit + version of frsldPvcDataFrDeliveredE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcDataEntry 11 } + + frsldPvcDataHCFrOfferedC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR. This object is + a 64-bit version of frsldPvcDataFrOfferedC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcDataEntry 12 } + + frsldPvcDataHCFrOfferedE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. This + object is a 64-bit version of frsldPvcDataFrOfferedE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcDataEntry 13 } + + frsldPvcDataHCDataDeliveredC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. This object is a 64-bit version of + frsldPvcDataDataDeliveredC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcDataEntry 14 } + + frsldPvcDataHCDataDeliveredE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. This object is a 64-bit + version of frsldPvcDataDataDeliveredE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcDataEntry 15 } + + + + frsldPvcDataHCDataOfferedC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR. This object is + a 64-bit version of frsldPvcDataDataOfferedC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcDataEntry 16 } + + frsldPvcDataHCDataOfferedE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + This object is a 64-bit version of + frsldPvcDataDataOfferedE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcDataEntry 17 } + + frsldPvcDataUnavailableTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time this PVC was declared unavailable + for any reason since this row was created." + REFERENCE + "FRF.13: Section 6.1 (OutageTime)" + ::= { frsldPvcDataEntry 18 } + + frsldPvcDataUnavailables OBJECT-TYPE + SYNTAX Counter32 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this PVC was declared unavailable + for any reason since this row was created. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 6.1 (OutageCount)" + ::= { frsldPvcDataEntry 19 } + + -- The Frame Relay Service Level Definitions PVC Sample Table + -- + -- This table contains the sampled delay, delivery and + -- availability information. + + frsldPvcSampleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcSampleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + sample table." + ::= { frsldObjects 4 } + + frsldPvcSampleEntry OBJECT-TYPE + SYNTAX FrsldPvcSampleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions data sample table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP, + frsldSmplCtrlIdx, frsldPvcSmplIdx } + ::= { frsldPvcSampleTable 1 } + + FrsldPvcSampleEntry ::= + SEQUENCE { + frsldPvcSmplIdx Integer32, + frsldPvcSmplDelayMin Gauge32, + frsldPvcSmplDelayMax Gauge32, + frsldPvcSmplDelayAvg Gauge32, + frsldPvcSmplMissedPolls Gauge32, + frsldPvcSmplFrDeliveredC Gauge32, + + + frsldPvcSmplFrDeliveredE Gauge32, + frsldPvcSmplFrOfferedC Gauge32, + frsldPvcSmplFrOfferedE Gauge32, + frsldPvcSmplDataDeliveredC Gauge32, + frsldPvcSmplDataDeliveredE Gauge32, + frsldPvcSmplDataOfferedC Gauge32, + frsldPvcSmplDataOfferedE Gauge32, + frsldPvcSmplHCFrDeliveredC CounterBasedGauge64, + frsldPvcSmplHCFrDeliveredE CounterBasedGauge64, + frsldPvcSmplHCFrOfferedC CounterBasedGauge64, + frsldPvcSmplHCFrOfferedE CounterBasedGauge64, + frsldPvcSmplHCDataDeliveredC CounterBasedGauge64, + frsldPvcSmplHCDataDeliveredE CounterBasedGauge64, + frsldPvcSmplHCDataOfferedC CounterBasedGauge64, + frsldPvcSmplHCDataOfferedE CounterBasedGauge64, + frsldPvcSmplUnavailableTime TimeTicks, + frsldPvcSmplUnavailables Gauge32, + frsldPvcSmplStartTime TimeStamp, + frsldPvcSmplEndTime TimeStamp + } + + frsldPvcSmplIdx OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bucket index of the current sample. This + increments once for each new bucket in the + table." + ::= { frsldPvcSampleEntry 1 } + + frsldPvcSmplDelayMin OBJECT-TYPE + SYNTAX Gauge32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum delay reported in microseconds measured + for any information packet that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 2 } + + frsldPvcSmplDelayMax OBJECT-TYPE + SYNTAX Gauge32 + + + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest delay reported in microseconds measured + for any information packet that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 3 } + + frsldPvcSmplDelayAvg OBJECT-TYPE + SYNTAX Gauge32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average delay reported in microseconds measured + for all delay packets that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 4 } + + frsldPvcSmplMissedPolls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of polls that were missed during + this interval." + ::= { frsldPvcSampleEntry 5 } + + frsldPvcSmplFrDeliveredC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + + + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrDeliveredC." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcSampleEntry 6 } + + frsldPvcSmplFrDeliveredE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrDeliveredE." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede))" + ::= { frsldPvcSampleEntry 7 } + + frsldPvcSmplFrOfferedC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrOfferedC." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcSampleEntry 8 } + + frsldPvcSmplFrOfferedE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. + + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrOfferedE." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcSampleEntry 9 } + + frsldPvcSmplDataDeliveredC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataDeliveredC." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcSampleEntry 10 } + + frsldPvcSmplDataDeliveredE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlDeliveredRP and determined to have been + sent in excess of the CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataDeliveredE." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcSampleEntry 11 } + + frsldPvcSmplDataOfferedC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + + + frsldPvcCtrlTransmitRP within CIR during this + interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataOfferredC." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcSampleEntry 12 } + + frsldPvcSmplDataOfferedE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataOfferedE." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcSampleEntry 13 } + + frsldPvcSmplHCFrDeliveredC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. This object + is a 64-bit version of frsldPvcSmplFrDeliveredC." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcSampleEntry 14 } + + frsldPvcSmplHCFrDeliveredE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + + + sent in excess of the CIR during this interval. + This object is a 64-bit version of frsldPvcSmpl- + FrDeliveredE." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcSampleEntry 15 } + + frsldPvcSmplHCFrOfferedC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. This object is a 64-bit version of + frsldPvcSmplFrOfferedC." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcSampleEntry 16 } + + frsldPvcSmplHCFrOfferedE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. This object is a 64-bit + version of frsldPvcSmplFrOfferedE." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcSampleEntry 17 } + + frsldPvcSmplHCDataDeliveredC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. This value + is a 64-bit version of frsldPvcSmplDataDeliveredC." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcSampleEntry 18 } + + frsldPvcSmplHCDataDeliveredE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR during this interval. This + value is a 64-bit version of frsldPvcSmplData- + DeliveredE." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcSampleEntry 19 } + + frsldPvcSmplHCDataOfferedC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. This value is a 64-bit version of + frsldPvcSmplDataOfferedC." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcSampleEntry 20 } + + frsldPvcSmplHCDataOfferedE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. This object is a 64-bit + version of frsldPvcSmplDataOfferedE." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcSampleEntry 21 } + + frsldPvcSmplUnavailableTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time this PVC was declared + unavailable for any reason during this interval." + REFERENCE + "FRF.13: Section 6.1 (OutageTime)" + ::= { frsldPvcSampleEntry 22 } + + + frsldPvcSmplUnavailables OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this PVC was declared + unavailable for any reason during this interval." + REFERENCE + "FRF.13: Section 6.1 (OutageCount)" + ::= { frsldPvcSampleEntry 23 } + + frsldPvcSmplStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this sample interval + started." + ::= { frsldPvcSampleEntry 24 } + + frsldPvcSmplEndTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this sample interval + ended. No data will be reported and the row will + not appear in the table until the sample has + been collected." + ::= { frsldPvcSampleEntry 25 } + + -- Capabilities Group + -- This group provides capabilities objects for the tables + -- that control configuration. + + frsldPvcCtrlWriteCaps OBJECT-TYPE + SYNTAX BITS { + frsldPvcCtrlStatus(0), + frsldPvcCtrlPacketFreq(1), + frsldPvcCtrlDelayFrSize(2), + frsldPvcCtrlDelayType(3), + frsldPvcCtrlDelayTimeOut(4), + frsldPvcCtrlPurge(5), + frsldPvcCtrlDeleteOnPurge(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object specifies the write capabilities + for the read-create objects of the PVC Control + table. If the corresponding bit is enabled (1), + the agent supports writes to that object." + ::= { frsldCapabilities 1 } + + frsldSmplCtrlWriteCaps OBJECT-TYPE + SYNTAX BITS { + frsldSmplCtrlStatus(0), + frsldSmplCtrlBuckets(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the write capabilities + for the read-create objects of the Sample Control + table. If the corresponding bit is enabled (1), + the agent supports writes to that object." + ::= { frsldCapabilities 2 } + + frsldRPCaps OBJECT-TYPE + SYNTAX BITS { + srcLocalRP(0), + ingTxLocalRP(1), + tpTxLocalRP(2), + eqiTxLocalRP(3), + eqoTxLocalRP(4), + otherTxLocalRP(5), + srcRemoteRP(6), + ingTxRemoteRP(7), + tpTxRemoteRP(8), + eqiTxRemoteRP(9), + eqoTxRemoteRP(10), + otherTxRemoteRP(11), + desLocalRP(12), + ingRxLocalRP(13), + tpRxLocalRP(14), + eqiRxLocalRP(15), + eqoRxLocalRP(16), + otherRxLocalRP(17), + desRemoteRP(18), + ingRxRemoteRP(19), + tpRxRemoteRP(20), + eqiRxRemoteRP(21), + eqoRxRemoteRP(22), + otherRxRemoteRP(23) + } + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "This object specifies the reference points that + the agent supports. This object allows the management + application to discover which rows can be created on + a specific device." + ::= { frsldCapabilities 3 } + + frsldMaxPvcCtrls OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of control rows that can be created + in frsldPvcCtrlTable. Sets to this object lower than + the current value of frsldNumPvcCtrls should result in + inconsistentValue." + ::= { frsldCapabilities 4 } + + frsldNumPvcCtrls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of rows in frsldPvcCtrlTable." + ::= { frsldCapabilities 5 } + + + frsldMaxSmplCtrls OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of control rows that can be created + in frsldSmplCtrlTable. Sets to this object lower than + the current value of frsldNumSmplCtrls should result in + inconsistentValue." + ::= { frsldCapabilities 6 } + + frsldNumSmplCtrls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of rows in frsldSmplCtrlTable." + ::= { frsldCapabilities 7 } + + -- Conformance Information + + + frsldMIBGroups OBJECT IDENTIFIER ::= { frsldConformance 1 } + frsldMIBCompliances OBJECT IDENTIFIER ::= { frsldConformance 2 } + + -- + -- Compliance Statements + -- + + frsldCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which support with Frame Relay Service Level + Definitions. This group defines the minimum + level of support required for compliance." + MODULE -- this module + MANDATORY-GROUPS { frsldPvcReqCtrlGroup, + frsldPvcReqDataGroup, + frsldCapabilitiesGroup} + + GROUP frsldPvcHCFrameDataGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces with corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP frsldPvcHCOctetDataGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces with corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP frsldPvcPacketGroup + DESCRIPTION + "This group is optional. Network interfaces that + allow control of the packets used to collect + information are encouraged to implement this + group." + + GROUP frsldPvcDelayCtrlGroup + DESCRIPTION + "This group is optional. Network interfaces that + offer control of the delay measurement are + strongly encouraged to implement this group." + + + GROUP frsldPvcSampleCtrlGroup + DESCRIPTION + "This group is mandatory only for those network + + + interfaces that allow data sampling." + + GROUP frsldPvcDelayDataGroup + DESCRIPTION + "This group is only mandatory when + frsldPvcDelayCtrlGroup is implemented. It is + strongly encouraged that any device capable + of measuring delay implement this group." + + GROUP frsldPvcSampleDelayGroup + DESCRIPTION + "This group is only mandatory when both + frsldPvcSampleCtrlGroup and frsldPvcDelayDataGroup + are supported." + + GROUP frsldPvcSampleDataGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + GROUP frsldPvcSampleHCFrameGroup + DESCRIPTION + "This group is mandatory whenever both + frsldPvcSampleCtrlGroup and frsldPvcHCFrameDataGroup + are supported." + + GROUP frsldPvcSampleHCDataGroup + DESCRIPTION + "This group is mandatory whenever both + frsldPvcSampleCtrlGroup and frsldPvcHCOctetDataGroup + are supported." + + GROUP frsldPvcSampleAvailGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + GROUP frsldPvcSampleGeneralGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + OBJECT frsldPvcCtrlStatus + SYNTAX RowStatus { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation can be done outside of the scope of + the SNMP protocol. If this object is implemented + + + with max-access of read-only, then the only value + that MUST be returned is active(1) and + frsldPvcCtrlWriteCaps MUST return 0 for the + frsldPvcCtrlStatus(0) bit." + + OBJECT frsldPvcCtrlPurge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If this object is + implemented with a max-access of read-only, then + the frsldPvcCtrlPurge(5) bit must return 0." + + OBJECT frsldPvcCtrlDeleteOnPurge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If this object is + implemented with a max-access of read-only, then + the frsldPvcCtrlDeleteOnPurge(6) bit must return + 0." + + OBJECT frsldMaxPvcCtrls + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the device either + dynamically allocates memory or statically allocates + a fixed number of entries. In the case of static + allocation, the device should always report the + correct maximum number of controls. In the case + of dynamic allocation, the device SHOULD always + report a number greater than frsldNumPvcCtrls + when allocation is possible and a number equal to + frsldNumPvcCtrls when allocation is not possible." + OBJECT frsldMaxSmplCtrls + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the device either + dynamically allocates memory or statically allocates + a fixed number of entries. In the case of static + allocation, the device should always report the + correct maximum number of controls. In the case + of dynamic allocation, the device SHOULD always + report a number greater than frsldNumSmplCtrls + when allocation is possible and a number equal to + frsldNumSmplCtrls when allocation is not possible." + + ::= { frsldMIBCompliances 1 } + + -- + + + -- Units of Conformance + -- + frsldPvcReqCtrlGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlStatus, + frsldPvcCtrlPurge, + frsldPvcCtrlDeleteOnPurge, + frsldPvcCtrlLastPurgeTime + } + STATUS current + DESCRIPTION + "A collection of required objects providing + control information applicable to a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 1 } + + frsldPvcPacketGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlPacketFreq + } + STATUS current + DESCRIPTION + "A collection of optional objects providing packet + level control information applicable to a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 2 } + + frsldPvcDelayCtrlGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlDelayFrSize, + frsldPvcCtrlDelayType, + frsldPvcCtrlDelayTimeOut + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + control information applicable to a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcPacketGroup + and frsldPvcDelayDataGroup MUST also be implemented." + ::= { frsldMIBGroups 3 } + + frsldPvcSampleCtrlGroup OBJECT-GROUP + OBJECTS { + frsldSmplCtrlStatus, + frsldSmplCtrlColPeriod, + frsldSmplCtrlBuckets, + + + frsldSmplCtrlBucketsGranted + } + STATUS current + DESCRIPTION + "A collection of optional objects providing sample + control information applicable to a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + and frsldPvcSampleGeneralGroup MUST also be + implemented." + ::= { frsldMIBGroups 4 } + + frsldPvcReqDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataFrDeliveredC, + frsldPvcDataFrDeliveredE, + frsldPvcDataFrOfferedC, + frsldPvcDataFrOfferedE, + frsldPvcDataDataDeliveredC, + frsldPvcDataDataDeliveredE, + frsldPvcDataDataOfferedC, + frsldPvcDataDataOfferedE, + frsldPvcDataUnavailableTime, + frsldPvcDataUnavailables + } + STATUS current + DESCRIPTION + "A collection of required objects providing data + collected on a PVC which implements Service + Level Definitions." + ::= { frsldMIBGroups 5 } + + frsldPvcDelayDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataMissedPolls + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + data collected on a PVC which implements Service + Level Definitions. + + If this group is implemented, frsldPvcDelayCtrlGroup + MUST also be implemented." + ::= { frsldMIBGroups 6 } + + frsldPvcHCFrameDataGroup OBJECT-GROUP + + + OBJECTS { + frsldPvcDataHCFrDeliveredC, + frsldPvcDataHCFrDeliveredE, + frsldPvcDataHCFrOfferedC, + frsldPvcDataHCFrOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity frame data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 7 } + + frsldPvcHCOctetDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataHCDataDeliveredC, + frsldPvcDataHCDataDeliveredE, + frsldPvcDataHCDataOfferedC, + frsldPvcDataHCDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity octet data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 8 } + + frsldPvcSampleDelayGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplDelayMin, + frsldPvcSmplDelayMax, + frsldPvcSmplDelayAvg, + frsldPvcSmplMissedPolls + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + sample data collected on a PVC which implements + Service Level Definitions. + + If this group is implemented, frsldPvcDelayCtrlGroup + MUST also be implemented." + ::= { frsldMIBGroups 9 } + + frsldPvcSampleDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplFrDeliveredC, + frsldPvcSmplFrDeliveredE, + + + frsldPvcSmplFrOfferedC, + frsldPvcSmplFrOfferedE, + frsldPvcSmplDataDeliveredC, + frsldPvcSmplDataDeliveredE, + frsldPvcSmplDataOfferedC, + frsldPvcSmplDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing data + and frame delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 10 } + + frsldPvcSampleHCFrameGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplHCFrDeliveredC, + frsldPvcSmplHCFrDeliveredE, + frsldPvcSmplHCFrOfferedC, + frsldPvcSmplHCFrOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity frame delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcHCFrameDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 11 } + + frsldPvcSampleHCDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplHCDataDeliveredC, + frsldPvcSmplHCDataDeliveredE, + frsldPvcSmplHCDataOfferedC, + frsldPvcSmplHCDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity data delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcHCOctetDataGroup + + + MUST also be implemented." + ::= { frsldMIBGroups 12 } + + frsldPvcSampleAvailGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplUnavailableTime, + frsldPvcSmplUnavailables + } + STATUS current + DESCRIPTION + "A collection of optional objects providing + availability sample data collected on a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 13 } + + frsldPvcSampleGeneralGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplStartTime, + frsldPvcSmplEndTime + } + STATUS current + DESCRIPTION + "A collection of optional objects providing + general sample data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 14 } + + frsldCapabilitiesGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlWriteCaps, + frsldSmplCtrlWriteCaps, + frsldRPCaps, + frsldMaxPvcCtrls, + frsldNumPvcCtrls, + frsldMaxSmplCtrls, + frsldNumSmplCtrls + } + STATUS current + DESCRIPTION + "A collection of required objects providing + capability information and control for this + MIB module." + ::= { frsldMIBGroups 15 } +END diff --git a/mibs/ietf/Finisher-MIB b/mibs/ietf/Finisher-MIB new file mode 100644 index 0000000..90bfeeb --- /dev/null +++ b/mibs/ietf/Finisher-MIB @@ -0,0 +1,919 @@ +Finisher-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + hrDeviceIndex + FROM HOST-RESOURCES-MIB -- [RFC2790] + PrtInputTypeTC, PrtMarkerSuppliesTypeTC + FROM IANA-PRINTER-MIB -- [RFC3805] + printmib, PrtSubUnitStatusTC, PrtLocalizedDescriptionStringTC, + PrtMarkerSuppliesSupplyUnitTC, PrtMediaUnitTC, + PrtCapacityUnitTC, PrtMarkerSuppliesClassTC, + PresentOnOff, prtMIBConformance + FROM Printer-MIB -- [RFC3805] + FinDeviceTypeTC, FinAttributeTypeTC + FROM IANA-FINISHER-MIB; + +finisherMIB MODULE-IDENTITY + LAST-UPDATED "200406020000Z" + ORGANIZATION "PWG IEEE/ISTO Printer Working Group" + CONTACT-INFO + + "Harry Lewis + IBM + Phone (303) 924-5337 + Email: harryl@us.ibm.com + + Send comments to the printmib WG using the Finisher MIB + Project (FIN) Mailing List: fin@pwg.org + + For further information, access the PWG web page under 'Finisher + MIB': http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + fin mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for management of printers. + Copyright (C) The Internet Society (2004). This + version of this MIB module was published + + + + in RFC 3806. For full legal notices see the RFC itself." + REVISION "200406020000Z" + DESCRIPTION + "The original version of this MIB." + ::= { mib-2 111 } + + -- Finisher Device Group (Mandatory) +-- +-- A printer may support zero or more finishing subunits. A +-- finishing device subunit may be associated with one or more +-- output subunits and one or more media path subunits. + +finDevice OBJECT IDENTIFIER ::= { printmib 30 } + +finDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the finishing device subunits, + including information regarding possible configuration + options and the status for each finisher device subunit." + ::= { finDevice 1 } + +finDeviceEntry OBJECT-TYPE + SYNTAX FinDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is an entry in the finishing device table for each + possible finisher process. Each individual finisher process is + implemented by a finishing device represented in this table." + INDEX { hrDeviceIndex, finDeviceIndex } + ::= { finDeviceTable 1 } + +FinDeviceEntry ::= SEQUENCE { + finDeviceIndex Integer32, + finDeviceType FinDeviceTypeTC, + finDevicePresentOnOff PresentOnOff, + finDeviceCapacityUnit PrtCapacityUnitTC, + finDeviceMaxCapacity Integer32, + finDeviceCurrentCapacity Integer32, + finDeviceAssociatedMediaPaths OCTET STRING, + finDeviceAssociatedOutputs OCTET STRING, + finDeviceStatus PrtSubUnitStatusTC, + finDeviceDescription PrtLocalizedDescriptionStringTC + } + + + +finDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used to identify a finisher process. + Although these values may change due to a major + reconfiguration of the printer system (e.g., the addition + of new finishing processes), the values are normally + expected to remain stable across successive power cycles." + ::= { finDeviceEntry 1 } + +finDeviceType OBJECT-TYPE + SYNTAX FinDeviceTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of finishing process associated with this + table row entry." + ::= { finDeviceEntry 2 } + +finDevicePresentOnOff OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this finishing device subunit is available + and whether the device subunit is enabled." + DEFVAL { notPresent } + ::= { finDeviceEntry 3 } + +finDeviceCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure for specifying the capacity of this + finisher device subunit." + ::= { finDeviceEntry 4 } + +finDeviceMaxCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this finisher device subunit in + finDeviceCapacityUnits. If the device can reliably sense + this value, the value is sensed by the finisher device + + + and is read-only: otherwise the value may be written by a + management or control console application. The value (-1) + means other and specifically indicates that the device + places no restrictions on this parameter. The value (-2) + means unknown." + DEFVAL { -2 } -- unknown + ::= { finDeviceEntry 5 } + +finDeviceCurrentCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of this finisher device subunit in + finDeviceCapacityUnits. If the device can reliably sense + this value, the value is sensed by the finisher and is + read-only: otherwise the value may be written by a + management or control console application. The value (-1) + means other and specifically indicates that the device + places no restrictions on this parameter. The value (-2) + means unknown." + DEFVAL { -2 } -- unknown + ::= { finDeviceEntry 6 } + +finDeviceAssociatedMediaPaths OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the media paths which can supply media for this + finisher device. The value of this object is a bit map in an + octet string with each position representing the value of a + prtMediaPathIndex. For a media path that can be a source + for this finisher device subunit, the bit position equal + to one less than the value of prtMediaPathIndex will be set. + The bits are numbered starting with the most significant bit of + the first byte being bit 0, the least significant bit of the + first byte being bit 7, the most significant of the second byte + being bit 8, and so on." + ::= { finDeviceEntry 7 } + +finDeviceAssociatedOutputs OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the printer output subunits this finisher device + subunit services. The value of this object is a bit map in an + + + octet string with each position representing the value of a + prtOutputIndex. For an output subunit that is serviced + by this finisher device subunit, the bit position equal + to one less than the value of prtOutputIndex will be set. + The bits are numbered starting with the most significant bit of + the first byte being bit 0, the least significant bit of the + first byte being bit 7, the most significant of the second byte + being bit 8, and so on." + ::= { finDeviceEntry 8 } + +finDeviceStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current status of this finisher device + subunit." + DEFVAL { 5 } -- unknown + ::= { finDeviceEntry 9 } + +finDeviceDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free form text description of this device subunit in the + localization specified by prtGeneralCurrentLocalization." + ::= { finDeviceEntry 10 } + + +-- Finisher Supply Group (Mandatory) +-- +-- A finisher device, but not all finisher devices, may have one or more +-- supplies associated with it. For example a finisher may use both +-- binding tape and stitching wire supplies. A finisher may also have +-- more than one source for a given type of supply e.g., multiple supply +-- sources of ink for imprinters. + +finSupply OBJECT IDENTIFIER ::= { printmib 31 } + +finSupplyTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinSupplyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each unique source of supply is an entry in the finisher + supply table. Each supply entry has its own + characteristics associated with it such as colorant and + + + current supply level." + ::= { finSupply 1 } + +finSupplyEntry OBJECT-TYPE + SYNTAX FinSupplyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of finisher devices, with their associated + supplies and supplies characteristics." + INDEX { hrDeviceIndex, finSupplyIndex } + ::= { finSupplyTable 1 } + +FinSupplyEntry ::= SEQUENCE { + finSupplyIndex Integer32, + finSupplyDeviceIndex Integer32, + finSupplyClass PrtMarkerSuppliesClassTC, + finSupplyType PrtMarkerSuppliesTypeTC, + finSupplyDescription PrtLocalizedDescriptionStringTC, + finSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + finSupplyMaxCapacity Integer32, + finSupplyCurrentLevel Integer32, + finSupplyColorName OCTET STRING + } + +finSupplyIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by a finisher to identify this supply + container/receptacle. Although these values may change + due to a major reconfiguration of the finisher (e.g., the + addition of new supply sources to the finisher), values + are normally expected to remain stable across successive + power cycles." + ::= { finSupplyEntry 1 } + +finSupplyDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finDeviceIndex corresponding to the finishing + device subunit with which this finisher supply is associated. + The value zero indicates the associated finishing device is + Unknown." + ::= { finSupplyEntry 2 } + + + +finSupplyClass OBJECT-TYPE + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates whether this supply entity + represents a supply that is consumed or a container that + is filled." + ::= { finSupplyEntry 3 } + +finSupplyType OBJECT-TYPE + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this supply." + ::= { finSupplyEntry 4 } + +finSupplyDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply/receptacle in text useful + for operators and management applications and in the + localization specified by prtGeneralCurrentLocalization." + ::= { finSupplyEntry 5 } + +finSupplyUnit OBJECT-TYPE + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this finisher supply container or + receptacle." + ::= { finSupplyEntry 6 } + +finSupplyMaxCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in Supply Units. If this supply container/ + receptacle can reliably sense this value, the value is + sensed and is read-only; otherwise the value may be + written by a control panel or management application. The + value (-1) means other and places no restrictions on this + + + + parameter. The value (-2) means unknown." + DEFVAL { -2 } -- unknown + ::= { finSupplyEntry 7 } + +finSupplyCurrentLevel OBJECT-TYPE + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; the + remaining space if this supply is a receptacle. If this + supply container/receptacle can reliably sense this value, + the value is sensed and is read-only; otherwise the value + may be written by a control panel or management + application. The value (-1) means other and places no + restrictions on this parameter. The value (-2) means + unknown. A value of (-3) means that the printer knows there + is some supply or remaining space." + DEFVAL { -2 } -- unknown + ::= { finSupplyEntry 8 } + + +-- Capacity Attribute Relationships +-- +-- MEDIA INPUT MEASUREMENT +-- +-- _______ | | +-- | | | +-- | | | | +-- | |_ _ _ _ _ _ _ _ _ _| ________________ |direction +-- | | | | v +-- MaxCapacity | | | +-- | | Sheets remaining | CurrentLevel +-- | | | | +-- v | | v +-- _______ +___________________+ _______ + + +finSupplyColorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color associated with this supply." + + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 4 Media Color Names, contains the recommended values + + + + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { finSupplyEntry 9 } + + +-- Finisher Supply, Media Input Group (Conditionally Mandatory) +-- +-- A finisher device may have one or more associated supply media +-- inputs. Each entry in this table defines an input for a +-- supply media type such as inserts, covers, etc. +-- +-- This group is mandatory only if the printer system contains a +-- finisher device that requires a media supply used exclusively by a +-- finishing process. Examples are inserts or covers that are not +-- supplied by an input subunit that provides media to the marker. + +finSupplyMediaInput OBJECT IDENTIFIER ::= { printmib 32 } + +finSupplyMediaInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinSupplyMediaInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The input subunits associated with a finisher supply media + are each represented by an entry in this table." +::= { finSupplyMediaInput 1 } + +finSupplyMediaInputEntry OBJECT-TYPE + SYNTAX FinSupplyMediaInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of finisher supply media input subunit features and + characteristics." + INDEX { hrDeviceIndex, finSupplyMediaInputIndex } + ::= { finSupplyMediaInputTable 1 } + +FinSupplyMediaInputEntry ::= SEQUENCE { + finSupplyMediaInputIndex Integer32, + finSupplyMediaInputDeviceIndex Integer32, + finSupplyMediaInputSupplyIndex Integer32, + finSupplyMediaInputType PrtInputTypeTC, + finSupplyMediaInputDimUnit PrtMediaUnitTC, + finSupplyMediaInputMediaDimFeedDir Integer32, + finSupplyMediaInputMediaDimXFeedDir Integer32, + finSupplyMediaInputStatus PrtSubUnitStatusTC, + finSupplyMediaInputMediaName OCTET STRING, + + + + finSupplyMediaInputName OCTET STRING, + finSupplyMediaInputDescription PrtLocalizedDescriptionStringTC, + finSupplyMediaInputSecurity PresentOnOff, + finSupplyMediaInputMediaWeight Integer32, + finSupplyMediaInputMediaThickness Integer32, + finSupplyMediaInputMediaType OCTET STRING + } + +finSupplyMediaInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by a finisher to identify this supply + media input subunit. Although these values may change + due to a major reconfiguration of the finisher (e.g., the + addition of new supply media input sources to the + finisher), values are normally expected to remain stable + across successive power cycles." + ::= { finSupplyMediaInputEntry 1 } + +finSupplyMediaInputDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finDeviceIndex corresponding to the finishing + device subunit with which this finisher media supply is + associated. The value zero indicates the associated device + is unknown." + ::= { finSupplyMediaInputEntry 2 } + +finSupplyMediaInputSupplyIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finSupplyIndex corresponding to the finishing + supply subunit with which this finisher media supply is + associated. The value zero indicates the associated finishing + supply is unknown or there is no applicable finisher supply + table entry." + ::= { finSupplyMediaInputEntry 3 } + +finSupplyMediaInputType OBJECT-TYPE + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The type of technology (discriminated primarily according + to the feeder mechanism type) employed by the input + subunit." + ::= { finSupplyMediaInputEntry 4 } + +finSupplyMediaInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure for specifying dimensional values for + this input device." + ::= { finSupplyMediaInputEntry 5 } + +finSupplyMediaInputMediaDimFeedDir OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the dimension in the + feed direction of the media that is placed or will be + placed in this input device. Feed dimension measurements + are taken parallel to the feed direction of the device and + measured in finSupplyMediaInputDimUnits. If this input + device can reliably sense this value, the value is sensed + and is read-only access. Otherwise the value is read-write + access and may be written by management or control panel + applications. The value (-1) means other and specifically + indicates that this device places no restrictions on this + parameter. The value (-2) indicates unknown. " + ::= { finSupplyMediaInputEntry 6 } + +finSupplyMediaInputMediaDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the dimension across the + feed direction of the media that is placed or will be + placed in this input device. The cross feed direction is + ninety degrees relative to the feed direction on this + device and measured in finSupplyMediaInputDimUnits. If + this input device can reliably sense this value, the value + is sensed and is read-only access. Otherwise the value is + read-write access and may be written by management or + control panel applications. The value (-1) means other and + specifically indicates that this device places no + + + + restrictions on this parameter. The value (-2) indicates + unknown. " + ::= { finSupplyMediaInputEntry 7 } + +finSupplyMediaInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the current status of this input + device." + DEFVAL { 5 } -- unknown + ::= { finSupplyMediaInputEntry 8 } + +finSupplyMediaInputMediaName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the current media contained in this input + device. Examples are Engineering Manual Cover, Section A Tab + Divider or any ISO standard names." + ::= { finSupplyMediaInputEntry 9 } + +finSupplyMediaInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input subunit." + ::= { finSupplyMediaInputEntry 10 } + +finSupplyMediaInputDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free form text description of this input subunit in the + localization specified by prtGeneralCurrentLocalization." + ::= { finSupplyMediaInputEntry 11 } + +finSupplyMediaInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this subunit has some security associated + with it." + + + + ::= { finSupplyMediaInputEntry 12 } + +finSupplyMediaInputMediaWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the media associated with this Input device + in grams per meter squared. The value (-1) means other + and specifically indicates that the device places no + restriction on this parameter. The value (-2) means + unknown. This object can be used to calculate the weight + of individual pages processed by the document finisher. + This value, when multiplied by the number of pages in a + finished set, can be used to calculate the weight of a set + before it is inserted into a mailing envelope." + ::= { finSupplyMediaInputEntry 13 } + +finSupplyMediaInputMediaThickness OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the thickness of the input media + processed by this document input subunit measured in + micrometers. This value may be used by devices (or + operators) to set up proper machine tolerances for the + feeder operation. The value (-2) indicates that the media + thickness is unknown or not used in the setup for this + input subunit." + ::= { finSupplyMediaInputEntry 14 } + +finSupplyMediaInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input + subunit. " + + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 3 Media Type Names, contains the recommended values + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { finSupplyMediaInputEntry 15 } + + + + +-- Finisher Device Attribute Group (Mandatory) +-- +-- A finisher device subunit may have one or more parameters that +-- cannot be specified by any other objects in the MIB. The +-- Device Attribute group facilitates the definition of these +-- parameters. The objects which define the attributes are +-- read-write, to allow both Set and Get operations. +-- +-- At least one table entry must exist for each finisher device defined +-- by the MIB. If no other entry is possible for a finisher device, the +-- deviceName(3) attribute MUST be returned. + +finDeviceAttribute OBJECT IDENTIFIER ::= { printmib 33 } + +finDeviceAttributeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinDeviceAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The attribute table defines special parameters that are + applicable only to a minority of the finisher devices. + An attribute table entry is used, rather than unique + objects, to minimize the number of MIB objects and to + allow for expansion without the addition of MIB objects. + Each finisher device is represented by a separate row + in the device subunit attribute table." +::= { finDeviceAttribute 1 } + +finDeviceAttributeEntry OBJECT-TYPE + SYNTAX FinDeviceAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines a finisher function parameter that + cannot be represented by an object in the finisher + device subunit table." + INDEX { hrDeviceIndex, finDeviceIndex, + finDeviceAttributeTypeIndex, + finDeviceAttributeInstanceIndex } +::= { finDeviceAttributeTable 1 } + +FinDeviceAttributeEntry ::= SEQUENCE { + finDeviceAttributeTypeIndex FinAttributeTypeTC, + finDeviceAttributeInstanceIndex Integer32, + finDeviceAttributeValueAsInteger Integer32, + finDeviceAttributeValueAsOctets OCTET STRING + } + + + + +finDeviceAttributeTypeIndex OBJECT-TYPE + SYNTAX FinAttributeTypeTC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the attribute type represented by this row." + ::= { finDeviceAttributeEntry 1 } + +finDeviceAttributeInstanceIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that allows the discrimination of an attribute + instance when the same attribute occurs multiple times for + a specific instance of a finisher function. The value of + this index shall be 1 if only a single instance of the + attribute occurs for the specific finisher function. + Additional values shall be assigned in a contiguous manner." + ::= { finDeviceAttributeEntry 2 } + +finDeviceAttributeValueAsInteger OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the integer value of the attribute. The value of + the attribute is represented as an integer if the + finAttributeTypeTC description for the attribute has the + tag 'INTEGER:'. + + Depending upon the attribute enum definition, this object + may be either an integer, a counter, an index, or an enum. + Attributes for which the concept of an integer value is + not meaningful SHALL return a value of -1 for this + attribute." + DEFVAL { -2 } -- unknown + ::= { finDeviceAttributeEntry 3 } + +finDeviceAttributeValueAsOctets OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Contains the octet string value of the attribute. The + value of the attribute is represented as a string if the + finAttributeTypeTC description for the attribute has the + tag 'OCTETS:'. + + + + Depending upon the attribute enum definition, this object + may be either a coded character set string (text) or a + binary octet string. Attributes for which the concept of + an octet string value is not meaningful SHALL contain a + zero length string." + DEFVAL { ''H } -- empty string + ::= { finDeviceAttributeEntry 4 } + + +-- Conformance Information + +-- compliance statements + +finMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + finisher MIB." + MODULE -- this module + MANDATORY-GROUPS { finDeviceGroup, finSupplyGroup, + finDeviceAttributeGroup } + + OBJECT finDevicePresentOnOff + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceCurrentCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaDimFeedDir + + + + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaThickness + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceAttributeValueAsInteger + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceAttributeValueAsOctets + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + + + GROUP finSupplyMediaInputGroup + DESCRIPTION + "This group is conditionally mandatory and must be included + if a finisher device requires a media supply that is used + exclusively by a finishing process." + + ::= { prtMIBConformance 5 } + + +finMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 6 } + +finDeviceGroup OBJECT-GROUP + OBJECTS { finDeviceType, finDevicePresentOnOff, + finDeviceCapacityUnit, finDeviceMaxCapacity, + finDeviceCurrentCapacity, finDeviceAssociatedMediaPaths, + finDeviceAssociatedOutputs, finDeviceStatus, + finDeviceDescription } + STATUS current + DESCRIPTION + "The finisher device group." + ::= { finMIBGroups 1 } + +finSupplyGroup OBJECT-GROUP + OBJECTS { finSupplyDeviceIndex, finSupplyClass, finSupplyType, + finSupplyDescription, finSupplyUnit, finSupplyMaxCapacity, + finSupplyCurrentLevel, finSupplyColorName } + STATUS current + DESCRIPTION + "The finisher supply group." + ::= { finMIBGroups 2 } + +finSupplyMediaInputGroup OBJECT-GROUP + OBJECTS { finSupplyMediaInputDeviceIndex, + finSupplyMediaInputSupplyIndex, finSupplyMediaInputType, + finSupplyMediaInputDimUnit, + finSupplyMediaInputMediaDimFeedDir, + finSupplyMediaInputMediaDimXFeedDir, + finSupplyMediaInputStatus, finSupplyMediaInputMediaName, + finSupplyMediaInputName, finSupplyMediaInputDescription, + finSupplyMediaInputSecurity, + finSupplyMediaInputMediaWeight, + finSupplyMediaInputMediaThickness, + finSupplyMediaInputMediaType } + STATUS current + DESCRIPTION + "The finisher supply, media input group." + ::= { finMIBGroups 3 } + + + + +finDeviceAttributeGroup OBJECT-GROUP + OBJECTS { finDeviceAttributeValueAsInteger, + finDeviceAttributeValueAsOctets } + STATUS current + DESCRIPTION + "The finisher device attribute group. This group is mandatory + for a finisher device that contains an inserter subunit." + ::= { finMIBGroups 4 } + +END diff --git a/mibs/ietf/GMPLS-LABEL-STD-MIB b/mibs/ietf/GMPLS-LABEL-STD-MIB new file mode 100644 index 0000000..bed8ea2 --- /dev/null +++ b/mibs/ietf/GMPLS-LABEL-STD-MIB @@ -0,0 +1,724 @@ +GMPLS-LABEL-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + RowStatus, StorageType + FROM SNMPv2-TC -- RFC 2579 + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + IndexIntegerNextFree + FROM DIFFSERV-MIB -- RFC 3289 + MplsLabel, mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 + GmplsLabelTypeTC, GmplsFreeformLabelTC + FROM GMPLS-TC-STD-MIB -- RFC 4801 +; + +gmplsLabelStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4803; see the RFC itself for + full legal notices. + + + + + This MIB module contains managed object definitions for labels + within GMPLS systems as defined in + Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, Berger, L. (Editor), RFC 3471, + January 2003." + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4803." + ::= { mplsStdMIB 16 } + +-- no notifications are currently defined. + +gmplsLabelObjects OBJECT IDENTIFIER ::= { gmplsLabelStdMIB 1 } +gmplsLabelConformance OBJECT IDENTIFIER ::= { gmplsLabelStdMIB 2 } + +gmplsLabelIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for gmplsLabelIndex, + or a zero to indicate that no unused value exists or is + available. + + A management application wishing to create a row in the + gmplsLabelTable may read this object and then attempt to + create a row in the table. If row creation fails (because + another application has already created a row with the + supplied index), the management application should read this + object again to get a new index value. + + When a row is created in the gmplsLabelTable with the + gmplsLabelIndex value held by this object, an implementation + MUST change the value in this object." + ::= { gmplsLabelObjects 1 } + +gmplsLabelTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsLabelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of GMPLS Labels. This table allows the representation + of the more complex label forms required for GMPLS that cannot + be held within the TEXTUAL-CONVENTION MplsLabel; that is, labels + that cannot be encoded within 32 bits. It is, nevertheless, also + capable of holding 32-bit labels or regular MPLS Labels if + desired. + + + Each entry in this table represents an individual GMPLS Label + value. The representation of Labels in tables in other MIB + modules may be achieved by a referrence to an entry in this + table by means of a row pointer into this table. The indexing + of this table provides for arbitrary indexing and also for + concatenation of labels. + + For an example of label concatenation, see RFC 3945, section 7.1. + In essence, a GMPLS Label may be composite in order to identify + a set of resources in the data plane. Practical examples are + timeslots and wavelength sets (which are not contiguous like + wavebands). + + The indexing mechanism allows multiple entries in this table to + be seen as a sequence of labels that should be concatenated. + Ordering is potentially very sensitive for concatenation." + REFERENCE + "1. Generalized Multiprotocol Label Switching (GMPLS) + Architecture, RFC 3945, section 7.1." +::= { gmplsLabelObjects 2 } + +gmplsLabelEntry OBJECT-TYPE + SYNTAX GmplsLabelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a single label value. There + are three indexes into the table. + + - The interface index may be helpful to distinguish which + labels are in use on which interfaces or to handle cases + where there are a very large number of labels in use in the + system. When label representation is desired to apply to the + whole system or when it is not important to distinguish + labels by their interfaces, this index MAY be set to zero. + + - The label index provides a way of identifying the label. + + - The label sub-index is only used for concatenated labels. It + identifies each component label. When non-concatenated labels + are used, this index SHOULD be set to zero. + + A storage type object is supplied to control the storage type + for each entry, but implementations should note that the storage + type of conceptual rows in other tables that include row + pointers to an entry in this table SHOULD dictate the storage + type of the rows in this table where the row in the other table + is more persistent." + + + INDEX { + gmplsLabelInterface, + gmplsLabelIndex, + gmplsLabelSubindex } +::= { gmplsLabelTable 1 } + +GmplsLabelEntry ::= SEQUENCE { + gmplsLabelInterface InterfaceIndexOrZero, + gmplsLabelIndex Unsigned32, + gmplsLabelSubindex Unsigned32, + gmplsLabelType GmplsLabelTypeTC, + gmplsLabelMplsLabel MplsLabel, + gmplsLabelPortWavelength Unsigned32, + gmplsLabelFreeform GmplsFreeformLabelTC, + gmplsLabelSonetSdhSignalIndex Integer32, + gmplsLabelSdhVc Integer32, + gmplsLabelSdhVcBranch Integer32, + gmplsLabelSonetSdhBranch Integer32, + gmplsLabelSonetSdhGroupBranch Integer32, + gmplsLabelWavebandId Unsigned32, + gmplsLabelWavebandStart Unsigned32, + gmplsLabelWavebandEnd Unsigned32, + gmplsLabelStorageType StorageType, + gmplsLabelRowStatus RowStatus +} + +gmplsLabelInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface on which this label is used. If this object is set + to zero, the label MUST have applicability across the + whole system and not be limited to a single interface." +::= { gmplsLabelEntry 1 } + +gmplsLabelIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index into the table to identify a label. + + Note that implementations that are representing 32-bit labels + within this table MAY choose to align this index with the value + of the label, and this may result in the use of the value zero + since it represents a valid label value. Such implementation + should be aware of the implications of sparsely populated + + + tables. + + A management application may read the gmplsLabelIndexNext + object to find a suitable value for this object." +::= { gmplsLabelEntry 2 } + +gmplsLabelSubindex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "In conjunction with gmplsLabelInterface and gmplsLabelIndex, + this object uniquely identifies this row. This sub-index allows + a single GMPLS Label to be defined as a concatenation of labels. + This is particularly useful in TDM. + + The ordering of sub-labels is strict with the sub-label with + the lowest gmplsLabelSubindex appearing first. Note that all + sub-labels of a single GMPLS Label must share the same + gmplsLabelInterface and gmplsLabelIndex values. For labels that + are not composed of concatenated sub-labels, this value SHOULD + be set to zero." +::= { gmplsLabelEntry 3 } + +gmplsLabelType OBJECT-TYPE + SYNTAX GmplsLabelTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the type of this label. Note that this object does + not determine whether MPLS or GMPLS signaling is in use: a value + of gmplsMplsLabel(1) denotes that an MPLS Packet Label is + present in the gmplsLabelMplsLabel object and encoded using the + MplsLabel TEXTUAL-CONVENTION (may be a 20-bit MPLS Label, a 10- + or 23-bit Frame Relay Label, or an Asynchronous Transfer Mode + (ATM) Label), but does not describe whether this is signaled + using MPLS or GMPLS. + + The value of this object helps determine which of the following + objects are valid. This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3." +::= { gmplsLabelEntry 4 } + +gmplsLabelMplsLabel OBJECT-TYPE + SYNTAX MplsLabel + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of an MPLS Label (that is a Packet Label) if this + table is used to store it. This may be used in MPLS systems even + though the label values can be adequately stored in the MPLS MIB + modules (MPLS-LSR-STD-MIB and MPLS-TE-STD-MIB). Furthermore, in + mixed MPLS and GMPLS systems, it may be advantageous to store all + labels in a single label table. Lastly, in GMPLS systems where + Packet Labels are used (that is in systems that use GMPLS + signaling and GMPLS Labels for packet switching), it may be + desirable to use this table. + + This object is only valid if gmplsLabelType is set + to gmplsMplsLabel(1). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. MPLS Label Stack Encoding, RFC 3032." + DEFVAL { 0 } +::= { gmplsLabelEntry 5 } + +gmplsLabelPortWavelength OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of a Port or Wavelength Label when carried as a + Generalized Label. Only valid if gmplsLabelType is set to + gmplsPortWavelengthLabel(2). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2.1.1." + DEFVAL { 0 } +::= { gmplsLabelEntry 6 } + +gmplsLabelFreeform OBJECT-TYPE + SYNTAX GmplsFreeformLabelTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of a Freeform Generalized Label that does not conform + to one of the standardized label encodings or that an + implementation chooses to represent as an octet string without + further decoding. Only valid if gmplsLabelType is set to + gmplsFreeformLabel(3). This object cannot be modified + if gmplsLabelRowStatus is active(1)." + REFERENCE + + + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2." + DEFVAL { '00'h } +::= { gmplsLabelEntry 7 } + +gmplsLabelSonetSdhSignalIndex OBJECT-TYPE + SYNTAX Integer32 (0..4095) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Index value (S) of a SONET or SDH Generalized Label. + Zero indicates that this field is non-significant. Only valid if + gmplsLabelType is set to gmplsSonetLabel(4) or gmplsSdhLabel(5). + This object cannot be modified if gmplsLabelRowStatus is + active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 8 } + +gmplsLabelSdhVc OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VC Indicator (U) of an SDH Generalized Label. Zero indicates + that this field is non-significant. Only valid if gmplsLabelType + is set to gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 9 } + +gmplsLabelSdhVcBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VC Branch Indicator (K) of an SDH Generalized Label. Zero + indicates that this field is non-significant. Only valid if + gmplsLabelType is set to gmplsSdhLabel(5). This + object cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + + + + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 10 } + +gmplsLabelSonetSdhBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Branch Indicator (L) of a SONET or SDH Generalized Label. + Zero indicates that this field is non-significant. Only valid + gmplsLabelType is set to gmplsSonetLabel(4) or + gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 11 } + +gmplsLabelSonetSdhGroupBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Group Branch Indicator (M) of a SONET or SDH Generalized + Label. Zero indicates that this field is non-significant. + Only valid if gmplsLabelType is set to gmplsSonetLabel(4) or + gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 12 } + +gmplsLabelWavebandId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The waveband identifier component of a Waveband Label. Only + valid if gmplsLabelType is set to gmplsWavebandLabel(6). This + object cannot be modified if gmplsLabelRowStatus is active(1)." + + + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 13 } + +gmplsLabelWavebandStart OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The starting label component of a Waveband Label. Only valid if + gmplsLabelType is set to gmplsWavebandLabel(6). This object + cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 14 } + +gmplsLabelWavebandEnd OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The end label component of a Waveband Label. Only valid if + gmplsLabelType is set to gmplsWavebandLabel(6). This object + cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 15 } + +gmplsLabelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this row. The + agent MUST ensure that this object's value remains consistent + with the storage type of any rows in other tables that contain + pointers to this row. In particular, the storage type of this + row must be at least as permanent as that of any row that points + to it. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + REFERENCE + + + "1. Textual Conventions for SMIv2, STD 58, RFC 2579, section 2." + DEFVAL { volatile } +::= { gmplsLabelEntry 16 } + +gmplsLabelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or delete a row in + this table. When a row in this table has a row in the active(1) + state, no objects in this row can be modified except the + gmplsLabelRowStatus and gmplsLabelStorageType. + + The gmplsLabelType object does not have a default and must be + set before a row can become active. The corresponding label + objects (dependent on the value of gmplsLabelType) should also + be set unless they happen to need to use the specified default + values as follows: + + gmplsLabelType setting objects to be set + -------------------------------------------------------------- + gmplsMplsLabel(1) gmplsLabelMplsLabel + + gmplsPortWavelengthLabel(2) gmplsLabelPortWavelength + + gmplsFreeformLabel(3) gmplsLabelFreeform + + gmplsSonetLabel(4) gmplsLabelSonetSdhSignalIndex + gmplsLabelSdhVc + gmplsLabelSdhVcBranch + gmplsLabelSonetSdhBranch + gmplsLabelSonetSdhGroupBranch + + gmplsSdhLabel(5) gmplsLabelSonetSdhSignalIndex + gmplsLabelSdhVc + gmplsLabelSdhVcBranch + gmplsLabelSonetSdhBranch + gmplsLabelSonetSdhGroupBranch + + gmplsWavebandLabel(6) gmplsLabelWavebandId + gmplsLabelWavebandStart + gmplsLabelWavebandEnd" +::= { gmplsLabelEntry 17 } + +gmplsLabelGroups + OBJECT IDENTIFIER ::= { gmplsLabelConformance 1 } + + + +gmplsLabelCompliances + OBJECT IDENTIFIER ::= { gmplsLabelConformance 2 } + +gmplsLabelModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-LABEL-STD-MIB. Such devices can then + be monitored but cannot be configured using this MIB module." + + MODULE -- this module + + -- The mandatory groups have to be implemented by LSRs claiming + -- support for this MIB module. This MIB module is, however, not + -- mandatory for a working implementation of a GMPLS LSR with full + -- MIB support if the GMPLS Labels in use can be represented within + -- a 32-bit quantity. + + MANDATORY-GROUPS { + gmplsLabelTableGroup + } + + GROUP gmplsLabelPacketGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Packet Labels. It is optional for implementations that + do not support Packet Labels." + + GROUP gmplsLabelPortWavelengthGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Port and Wavelength Labels. It is optional for + implementations that do not support Wavelength Labels." + + GROUP gmplsLabelFreeformGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Freeform Labels. It is optional for implementations that + do not support Freeform Labels." + + GROUP gmplsLabelSonetSdhGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support SONET or SDH Labels. It is optional for implementations + that do not support SONET or SDH Labels." + + GROUP gmplsLabelWavebandGroup + DESCRIPTION + + + + "This group extends gmplsLabelTableGroup for implementations that + support Waveband Labels. It is optional for implementations that + do not support Waveband Labels." + OBJECT gmplsLabelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelMplsLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelPortWavelength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelFreeform + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhSignalIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSdhVc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSdhVcBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhGroupBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT gmplsLabelWavebandId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsLabelWavebandStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelWavebandEnd + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is + the only status that needs to be supported." + +::= { gmplsLabelCompliances 1 } + +gmplsLabelModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the complete + GMPLS-LABEL-STD-MIB module. + + The mandatory groups have to be implemented by GMPLS LSRs + claiming support for this MIB module. This MIB module is, + however, not mandatory for a working implementation of a GMPLS + LSR with full MIB support if the GMPLS Labels in use can be + represented within a 32-bit quantity." + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsLabelTableGroup + } + +::= { gmplsLabelCompliances 2 } + + + + +gmplsLabelTableGroup OBJECT-GROUP + OBJECTS { + gmplsLabelIndexNext, + gmplsLabelType, + gmplsLabelStorageType, + gmplsLabelRowStatus + } + + STATUS current + DESCRIPTION + "Necessary, but not sufficient, set of objects to implement label + table support. In addition, depending on the type of labels + supported, the following other groups defined below are + mandatory: + + gmplsLabelWavebandGroup and/or + gmplsLabelPacketGroup and/or + gmplsLabelPortWavelengthGroup and/or + gmplsLabelFreeformGroup and/or + gmplsLabelSonetSdhGroup." +::= { gmplsLabelGroups 1 } + +gmplsLabelPacketGroup OBJECT-GROUP + OBJECTS { + gmplsLabelMplsLabel + } + STATUS current + DESCRIPTION + "Object needed to implement Packet (MPLS) Labels." +::= { gmplsLabelGroups 2 } + +gmplsLabelPortWavelengthGroup OBJECT-GROUP + OBJECTS { + gmplsLabelPortWavelength + } + STATUS current + DESCRIPTION + "Object needed to implement Port and Wavelength Labels." +::= { gmplsLabelGroups 3 } + +gmplsLabelFreeformGroup OBJECT-GROUP + OBJECTS { + gmplsLabelFreeform + } + STATUS current + DESCRIPTION + "Object needed to implement Freeform Labels." +::= { gmplsLabelGroups 4 } + + + +gmplsLabelSonetSdhGroup OBJECT-GROUP + OBJECTS { + gmplsLabelSonetSdhSignalIndex, + gmplsLabelSdhVc, + gmplsLabelSdhVcBranch, + gmplsLabelSonetSdhBranch, + gmplsLabelSonetSdhGroupBranch + } + STATUS current + DESCRIPTION + "Objects needed to implement SONET and SDH Labels." +::= { gmplsLabelGroups 5 } + +gmplsLabelWavebandGroup OBJECT-GROUP + OBJECTS { + gmplsLabelWavebandId, + gmplsLabelWavebandStart, + gmplsLabelWavebandEnd + } + STATUS current + DESCRIPTION + "Objects needed to implement Waveband Labels." +::= { gmplsLabelGroups 6 } + +END diff --git a/mibs/ietf/GMPLS-LSR-STD-MIB b/mibs/ietf/GMPLS-LSR-STD-MIB new file mode 100644 index 0000000..7d6cf44 --- /dev/null +++ b/mibs/ietf/GMPLS-LSR-STD-MIB @@ -0,0 +1,531 @@ +GMPLS-LSR-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, zeroDotZero + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + RowPointer + FROM SNMPv2-TC -- RFC 2579 + GmplsSegmentDirectionTC + FROM GMPLS-TC-STD-MIB -- RFC 4801 + mplsInterfaceIndex, mplsInSegmentIndex, mplsOutSegmentIndex, + mplsInterfaceGroup, mplsInSegmentGroup, mplsOutSegmentGroup, + mplsXCGroup, mplsPerfGroup, mplsLsrNotificationGroup + FROM MPLS-LSR-STD-MIB -- RFC 3813 + ifGeneralInformationGroup, ifCounterDiscontinuityGroup + FROM IF-MIB -- RFC 2863 + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + +gmplsLsrStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control And Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + Adrian Farrel + Old Dog Consulting + + + + Email: adrian@olddog.co.uk + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4803; see the RFC itself for + full legal notices. + + This MIB module contains managed object definitions for the + Generalized Multiprotocol (GMPLS) Label Switching Router as + defined in Generalized Multi-Protocol Label Switching (GMPLS) + Architecture, Mannie et al., RFC 3945, October 2004." + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4803." + ::= { mplsStdMIB 15 } + +-- no notifications are currently defined. +gmplsLsrObjects OBJECT IDENTIFIER ::= { gmplsLsrStdMIB 1 } +gmplsLsrConformance OBJECT IDENTIFIER ::= { gmplsLsrStdMIB 2 } + +gmplsInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface GMPLS capability and + associated information. It extends the information in the + mplsInterfaceTable of MPLS-LSR-STD-MIB through a + sparse augmentation relationship." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + ::= { gmplsLsrObjects 1 } + +gmplsInterfaceEntry OBJECT-TYPE + SYNTAX GmplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in this table is created automatically by an + LSR for each interface that is both capable of supporting + GMPLS and configured to support GMPLS. Note that + support of GMPLS is not limited to control plane signaling, + but may include data-plane-only function configured through + SNMP SET commands performed on this MIB module. + + + + A conceptual row in this table may also be created via SNMP + SET commands or automatically by the LSR to supplement a + conceptual row in the mplsInterfaceTable where the interface + is not capable of GMPLS but where the other objects carried + in this row provide useful additional information for an + MPLS interface. + + A conceptual row in this table will exist if and only if a + corresponding entry in the mplsInterfaceTable exists, and a + corresponding entry in the ifTable exists with ifType = mpls(166). + If the associated entry in the ifTable is operationally disabled + (thus removing the GMPLS capabilities on the interface) or the + entry in the mplsInterfaceTable is deleted, the corresponding entry + in this table MUST be deleted shortly thereafter. + + The indexes are the same as for the mplsInterfaceTable. Thus, the + entry with index 0 represents the per-platform label space and + contains parameters that apply to all interfaces that + participate in the per-platform label space." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsInterfaceIndex } +::= { gmplsInterfaceTable 1 } + +GmplsInterfaceEntry ::= SEQUENCE { + gmplsInterfaceSignalingCaps BITS, + gmplsInterfaceRsvpHelloPeriod Unsigned32 +} + +gmplsInterfaceSignalingCaps OBJECT-TYPE + SYNTAX BITS { + unknown(0), + rsvpGmpls(1), + crldpGmpls(2), -- note the use of CR-LDP is deprecated + otherGmpls(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the signaling capabilities on this interface. Multiple + bits may legitimately be set at once, but if 'unknown' is set + then no other bit may be set. Setting no bits implies that GMPLS + signaling cannot be performed on this interface and all LSPs + must be manually provisioned or that this table entry is only + present to supplement an entry in the mplsInterfaceTable by + providing the information carried in other objects in this row." + REFERENCE + + + + "1. Generalized MPLS Signaling - CR-LDP Extensions, RFC 3472. + 2. The Multiprotocol Label Switching (MPLS) Working Group + decision on MPLS signaling protocols, RFC 3468. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473." + DEFVAL { { rsvpGmpls } } +::= { gmplsInterfaceEntry 1 } + +gmplsInterfaceRsvpHelloPeriod OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Period, in milliseconds, between sending Resource Reservation + Protocol (RSVP) Hello messages on this interface. A value of 0 + indicates that no Hello messages should be sent on this + interface. + + This object is only valid if gmplsInterfaceSignalingCaps has no + bits set or includes the rsvpGmpls bit." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 5. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 9.3." + DEFVAL { 3000 } +::= { gmplsInterfaceEntry 2 } + +gmplsInSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table sparse augments the mplsInSegmentTable of + MPLS-LSR-STD-MIB to provide GMPLS-specific information about + incoming segments to an LSR." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." +::= { gmplsLsrObjects 2 } + +gmplsInSegmentEntry OBJECT-TYPE + SYNTAX GmplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table extends the representation of an incoming + segment represented by an entry in the mplsInSegmentTable in + + + + MPLS-LSR-STD-MIB through a sparse augmentation. An entry can be + created by a network administrator via SNMP SET commands, or in + response to signaling protocol events. + + Note that the storage type for this entry is given by the value + of mplsInSegmentStorageType in the corresponding entry of the + mplsInSegmentTable." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsInSegmentIndex } +::= { gmplsInSegmentTable 1 } + +GmplsInSegmentEntry ::= SEQUENCE { + gmplsInSegmentDirection GmplsSegmentDirectionTC, + gmplsInSegmentExtraParamsPtr RowPointer +} + +gmplsInSegmentDirection OBJECT-TYPE + SYNTAX GmplsSegmentDirectionTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the direction of data flow on this + segment. This object cannot be modified if + mplsInSegmentRowStatus for the corresponding entry in the + mplsInSegmentTable is active(1)." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + DEFVAL { forward } +::= { gmplsInSegmentEntry 1 } + +gmplsInSegmentExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, + Synchronous Optical Network (SONET) resource usage). Such can be + supplied from an external table and referenced from here. A value + of zeroDotZero in this attribute indicates that there is no such + additional information." + DEFVAL { zeroDotZero } + ::= { gmplsInSegmentEntry 2 } + +gmplsOutSegmentTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF GmplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table sparse augments the mplsOutSegmentTable of + MPLS-LSR-STD-MIB to provide GMPLS-specific information about + outgoing segments from an LSR." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." +::= { gmplsLsrObjects 3 } + +gmplsOutSegmentEntry OBJECT-TYPE + SYNTAX GmplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table extends the representation of an outgoing + segment represented by an entry in the mplsOutSegmentTable of + MPLS-LSR-STD-MIB through a sparse augmentation. An entry can be + created by a network administrator via SNMP SET commands, or in + response to signaling protocol events. + + Note that the storage type for this entry is given by the value + of mplsOutSegmentStorageType in the corresponding entry of the + mplsOutSegmentTable." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsOutSegmentIndex } +::= { gmplsOutSegmentTable 1 } + +GmplsOutSegmentEntry ::= SEQUENCE { + gmplsOutSegmentDirection GmplsSegmentDirectionTC, + gmplsOutSegmentTTLDecrement Unsigned32, + gmplsOutSegmentExtraParamsPtr RowPointer +} + +gmplsOutSegmentDirection OBJECT-TYPE + SYNTAX GmplsSegmentDirectionTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the direction of data flow on this + segment. This object cannot be modified if + mplsOutSegmentRowStatus for the corresponding entry in the + mplsOutSegmentTable is active(1)." + REFERENCE + + + + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + DEFVAL { forward } +::= { gmplsOutSegmentEntry 1 } + +gmplsOutSegmentTTLDecrement OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the amount by which to decrement the Time + to Live (TTL) of any payload packets forwarded on this segment if + per-hop decrementing is being done. + + A value of zero indicates that no decrement should be made or + that per-hop decrementing is not in use. + + See the gmplsTunnelTTLDecrement object in the gmplsTunnelTable + of GMPLS-TE-STD-MIB for a value by which to decrement the TTL + for the whole of a tunnel. + + This object cannot be modified if mplsOutSegmentRowStatus for + the associated entry in the mplsOutSegmentTable is active(1)." + REFERENCE + "1. Time To Live (TTL) Processing in Multi-Protocol Label + Switching (MPLS) Networks, RFC 3443. + 2. Generalized Multiprotocol Label Switching (GMPLS) Traffic + Engineering Management Information Base, RFC 4802." + DEFVAL { 0 } +::= { gmplsOutSegmentEntry 2 } + +gmplsOutSegmentExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, SONET + resource usage). Such can be supplied from an external table and + referenced from here. + + A value of zeroDotZero in this attribute indicates that there is + no such additional information." + DEFVAL { zeroDotZero } + ::= { gmplsOutSegmentEntry 3 } + +gmplsLsrGroups + OBJECT IDENTIFIER ::= { gmplsLsrConformance 1 } + + + +gmplsLsrCompliances + OBJECT IDENTIFIER ::= { gmplsLsrConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +gmplsLsrModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full support for + GMPLS-LSR-STD-MIB. + + The mandatory group has to be implemented by all LSRs that + originate, terminate, or act as transit for TE-LSPs/tunnels. + In addition, depending on the type of tunnels supported, other + groups become mandatory as explained below." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE MPLS-LSR-STD-MIB -- The MPLS-LSR-STD-MIB, RFC3813 + + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup, + mplsLsrNotificationGroup + } + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsInterfaceGroup, + gmplsInSegmentGroup, + gmplsOutSegmentGroup + } + + OBJECT gmplsInSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + + + + OBJECT gmplsOutSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsOutSegmentTTLDecrement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsOutSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { gmplsLsrCompliances 1 } + +-- Compliance requirement for implementations that provide read-only +-- access. + +gmplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-LSR-STD-MIB. Such devices can then + be monitored but cannot be configured using this MIB module." + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE MPLS-LSR-STD-MIB + + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup + } + + + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsInterfaceGroup, + gmplsInSegmentGroup, + gmplsOutSegmentGroup + } + + OBJECT gmplsInterfaceSignalingCaps + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInterfaceRsvpHelloPeriod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsInSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsOutSegmentDirection + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsOutSegmentTTLDecrement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsOutSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { gmplsLsrCompliances 2 } + +gmplsInterfaceGroup OBJECT-GROUP + OBJECTS { + gmplsInterfaceSignalingCaps, + + + + gmplsInterfaceRsvpHelloPeriod + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS interface and are needed + for GMPLS interface configuration and performance + information." +::= { gmplsLsrGroups 1 } + +gmplsInSegmentGroup OBJECT-GROUP + OBJECTS { + gmplsInSegmentDirection, + gmplsInSegmentExtraParamsPtr + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS in-segment and are needed + for GMPLS in-segment configuration and performance + information." +::= { gmplsLsrGroups 2 } + +gmplsOutSegmentGroup OBJECT-GROUP + OBJECTS { + gmplsOutSegmentDirection, + gmplsOutSegmentTTLDecrement, + gmplsOutSegmentExtraParamsPtr + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS out-segment and are needed + for GMPLS out-segment configuration and performance + information." +::= { gmplsLsrGroups 3 } +END diff --git a/mibs/ietf/GMPLS-TC-STD-MIB b/mibs/ietf/GMPLS-TC-STD-MIB new file mode 100644 index 0000000..fc98a29 --- /dev/null +++ b/mibs/ietf/GMPLS-TC-STD-MIB @@ -0,0 +1,129 @@ +GMPLS-TC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI -- RFC 2578 + TEXTUAL-CONVENTION + FROM SNMPv2-TC -- RFC 2579 + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + +gmplsTCStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702280000Z" -- 28 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org" + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4801; see the RFC itself for + full legal notices. + + This MIB module defines TEXTUAL-CONVENTIONs for concepts used in + Generalized Multiprotocol Label Switching (GMPLS) networks." + REVISION + "200702280000Z" -- 28 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version published as part of RFC 4801." +::= { mplsStdMIB 12 } + +GmplsFreeformLabelTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "This TEXTUAL-CONVENTION can be used as the syntax of an object + that contains any GMPLS Label. Objects with this syntax can be + used to represent labels that have label types that are not + defined in any RFCs. The freeform GMPLS Label may also be used + by systems that do not wish to represent labels that have + label types defined in RFCs using type-specific syntaxes." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2." + SYNTAX OCTET STRING (SIZE (0..64)) + +GmplsLabelTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Determines the interpretation that should be applied to an + object that encodes a label. The possible types are: + + gmplsMplsLabel(1) - The label is an MPLS Packet, Cell, + or Frame Label and is encoded as + described for the TEXTUAL- + CONVENTION MplsLabel defined in + RFC 3811. + + gmplsPortWavelengthLabel(2) - The label is a Port or Wavelength + Label as defined in RFC 3471. + + gmplsFreeformLabel(3) - The label is any form of label + encoded as an OCTET STRING using + the TEXTUAL-CONVENTION + GmplsFreeformLabel. + + gmplsSonetLabel(4) - The label is a Synchronous Optical + Network (SONET) Label as + defined in RFC 4606. + + gmplsSdhLabel(5) - The label is a Synchronous Digital + Hierarchy (SDH) Label as defined + in RFC 4606. + + gmplsWavebandLabel(6) - The label is a Waveband Label as + defined in RFC 3471." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3. + 2. Definition of Textual Conventions and for Multiprotocol Label + Switching (MPLS) Management, RFC 3811, section 3. + 3. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + + + + Digital Hierarchy (SDH) Control, RFC 4606." + SYNTAX INTEGER { + gmplsMplsLabel(1), + gmplsPortWavelengthLabel(2), + gmplsFreeformGeneralizedLabel(3), + gmplsSonetLabel(4), + gmplsSdhLabel(5), + gmplsWavebandLabel(6) + } + +GmplsSegmentDirectionTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The direction of data flow on an Label Switched Path (LSP) + segment with respect to the head of the LSP. + + Where an LSP is signaled using a conventional signaling + protocol, the 'head' of the LSP is the source of the signaling + (also known as the ingress) and the 'tail' is the destination + (also known as the egress). For unidirectional LSPs, this + usually matches the direction of flow of data. + + For manually configured unidirectional LSPs, the direction of + the LSP segment matches the direction of flow of data. For + manually configured bidirectional LSPs, an arbitrary decision + must be made about which LER is the 'head'." + SYNTAX INTEGER { + forward(1), -- data flows from head-end of LSP toward tail-end + reverse(2) -- data flows from tail-end of LSP toward head-end + } + +END diff --git a/mibs/ietf/GMPLS-TE-STD-MIB b/mibs/ietf/GMPLS-TE-STD-MIB new file mode 100644 index 0000000..96bfa45 --- /dev/null +++ b/mibs/ietf/GMPLS-TE-STD-MIB @@ -0,0 +1,1849 @@ +GMPLS-TE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter32, Counter64, zeroDotZero, Gauge32 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + TruthValue, TimeStamp, RowPointer + FROM SNMPv2-TC -- RFC 2579 + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB -- RFC 4001 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + mplsTunnelIndex, mplsTunnelInstance, mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId, mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, mplsTunnelHopIndex, + mplsTunnelARHopListIndex, mplsTunnelARHopIndex, + mplsTunnelCHopListIndex, mplsTunnelCHopIndex, + mplsTunnelEntry, + mplsTunnelAdminStatus, mplsTunnelOperStatus, + mplsTunnelGroup, mplsTunnelScalarGroup + FROM MPLS-TE-STD-MIB -- RFC3812 + IANAGmplsLSPEncodingTypeTC, IANAGmplsSwitchingTypeTC, + IANAGmplsGeneralizedPidTC, IANAGmplsAdminStatusInformationTC + FROM IANA-GMPLS-TC-MIB + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + + + + + + +gmplsTeStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working + Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly + to the CCAMP working group mailing list at + ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4802; see the RFC itself for + full legal notices. + + This MIB module contains managed object definitions + for GMPLS Traffic Engineering (TE) as defined in: + 1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, Berger, L. (Editor), + RFC 3471, January 2003. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, Berger, + L. (Editor), RFC 3473, January 2003. + " + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4802." +::= { mplsStdMIB 13 } + +gmplsTeNotifications OBJECT IDENTIFIER ::= { gmplsTeStdMIB 0 } +gmplsTeScalars OBJECT IDENTIFIER ::= { gmplsTeStdMIB 1 } +gmplsTeObjects OBJECT IDENTIFIER ::= { gmplsTeStdMIB 2 } +gmplsTeConformance OBJECT IDENTIFIER ::= { gmplsTeStdMIB 3 } + +gmplsTunnelsConfigured OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of GMPLS tunnels configured on this device. A GMPLS + + + + tunnel is considered configured if an entry for the tunnel + exists in the gmplsTunnelTable and the associated + mplsTunnelRowStatus is active(1)." +::= { gmplsTeScalars 1 } + +gmplsTunnelsActive OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of GMPLS tunnels active on this device. A GMPLS + tunnel is considered active if there is an entry in the + gmplsTunnelTable and the associated mplsTunnelOperStatus for the + tunnel is up(1)." +::= { gmplsTeScalars 2 } + +gmplsTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelTable sparsely extends the mplsTunnelTable of + MPLS-TE-STD-MIB. It allows GMPLS tunnels to be created between + an LSR and a remote endpoint, and existing tunnels to be + reconfigured or removed. + + Note that only point-to-point tunnel segments are supported, + although multipoint-to-point and point-to-multipoint + connections are supported by an LSR acting as a cross-connect. + Each tunnel can thus have one out-segment originating at this + LSR and/or one in-segment terminating at this LSR. + + The row status of an entry in this table is controlled by the + mplsTunnelRowStatus in the corresponding entry in the + mplsTunnelTable. When the corresponding mplsTunnelRowStatus has + value active(1), a row in this table may not be created or + modified. + + The exception to this rule is the + gmplsTunnelAdminStatusInformation object, which can be modified + while the tunnel is active." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 1 } + + + + + + +gmplsTunnelEntry OBJECT-TYPE + SYNTAX GmplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table in association with the corresponding + entry in the mplsTunnelTable represents a GMPLS tunnel. + + An entry can be created by a network administrator via SNMP SET + commands, or in response to signaling protocol events." + INDEX { + mplsTunnelIndex, + mplsTunnelInstance, + mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId + } +::= { gmplsTunnelTable 1 } + + GmplsTunnelEntry ::= SEQUENCE { + gmplsTunnelUnnumIf TruthValue, + gmplsTunnelAttributes BITS, + gmplsTunnelLSPEncoding IANAGmplsLSPEncodingTypeTC, + gmplsTunnelSwitchingType IANAGmplsSwitchingTypeTC, + gmplsTunnelLinkProtection BITS, + gmplsTunnelGPid IANAGmplsGeneralizedPidTC, + gmplsTunnelSecondary TruthValue, + gmplsTunnelDirection INTEGER, + gmplsTunnelPathComp INTEGER, + gmplsTunnelUpstreamNotifyRecipientType InetAddressType, + gmplsTunnelUpstreamNotifyRecipient InetAddress, + gmplsTunnelSendResvNotifyRecipientType InetAddressType, + gmplsTunnelSendResvNotifyRecipient InetAddress, + gmplsTunnelDownstreamNotifyRecipientType InetAddressType, + gmplsTunnelDownstreamNotifyRecipient InetAddress, + gmplsTunnelSendPathNotifyRecipientType InetAddressType, + gmplsTunnelSendPathNotifyRecipient InetAddress, + gmplsTunnelAdminStatusFlags IANAGmplsAdminStatusInformationTC, + gmplsTunnelExtraParamsPtr RowPointer + } + +gmplsTunnelUnnumIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether or not this tunnel corresponds to an unnumbered + interface represented by an entry in the interfaces group table + (the ifTable) with ifType set to mpls(166). + + + + This object is only used if mplsTunnelIsIf is set to 'true'. + + If both this object and the mplsTunnelIsIf object are set to + 'true', the originating LSR adds an LSP_TUNNEL_INTERFACE_ID + object to the outgoing Path message. + + This object contains information that is only used by the + terminating LSR." + REFERENCE + "1. Signalling Unnumbered Links in RSVP-TE, RFC 3477." + DEFVAL { false } +::= { gmplsTunnelEntry 1 } + +gmplsTunnelAttributes OBJECT-TYPE + SYNTAX BITS { + labelRecordingDesired(0) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmask indicates optional parameters for this tunnel. + These bits should be taken in addition to those defined in + mplsTunnelSessionAttributes in order to determine the full set + of options to be signaled (for example SESSION_ATTRIBUTES flags + in RSVP-TE). The following describes these bitfields: + + labelRecordingDesired + This flag is set to indicate that label information should be + included when doing a route record. This bit is not valid + unless the recordRoute bit is set." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + sections 4.4.3, 4.7.1, and 4.7.2." + DEFVAL { { } } +::= { gmplsTunnelEntry 2 } + +gmplsTunnelLSPEncoding OBJECT-TYPE + SYNTAX IANAGmplsLSPEncodingTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the encoding of the LSP being requested. + + A value of 'tunnelLspNotGmpls' indicates that GMPLS signaling is + not in use. Some objects in this MIB module may be of use for + MPLS signaling extensions that do not use GMPLS signaling. By + setting this object to 'tunnelLspNotGmpls', an application may + + + + + indicate that only those objects meaningful in MPLS should be + examined. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsLSPEncodingTypeTC found in the IANA-GMPLS-TC-MIB + module." + DEFVAL { tunnelLspNotGmpls } +::= { gmplsTunnelEntry 3 } + +gmplsTunnelSwitchingType OBJECT-TYPE + SYNTAX IANAGmplsSwitchingTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the type of switching that should be performed on + a particular link. This field is needed for links that + advertise more than one type of switching capability. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsSwitchingTypeTC found in the IANA-GMPLS-TC-MIB module. + + This object is only meaningful if gmplsTunnelLSPEncodingType + is not set to 'tunnelLspNotGmpls'." + DEFVAL { unknown } +::= { gmplsTunnelEntry 4 } + +gmplsTunnelLinkProtection OBJECT-TYPE + SYNTAX BITS { + extraTraffic(0), + unprotected(1), + shared(2), + dedicatedOneToOne(3), + dedicatedOnePlusOne(4), + enhanced(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmask indicates the level of link protection required. A + value of zero (no bits set) indicates that any protection may be + used. The following describes these bitfields: + + extraTraffic + This flag is set to indicate that the LSP should use links + that are protecting other (primary) traffic. Such LSPs may be + preempted when the links carrying the (primary) traffic being + protected fail. + + + + + unprotected + This flag is set to indicate that the LSP should not use any + link layer protection. + + shared + This flag is set to indicate that a shared link layer + protection scheme, such as 1:N protection, should be used to + support the LSP. + + dedicatedOneToOne + This flag is set to indicate that a dedicated link layer + protection scheme, i.e., 1:1 protection, should be used to + support the LSP. + + dedicatedOnePlusOne + This flag is set to indicate that a dedicated link layer + protection scheme, i.e., 1+1 protection, should be used to + support the LSP. + + enhanced + This flag is set to indicate that a protection scheme that is + more reliable than Dedicated 1+1 should be used, e.g., 4 fiber + BLSR/MS-SPRING. + + This object is only meaningful if gmplsTunnelLSPEncoding is + not set to 'tunnelLspNotGmpls'." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 7.1." + DEFVAL { { } } +::= { gmplsTunnelEntry 5 } + +gmplsTunnelGPid OBJECT-TYPE + SYNTAX IANAGmplsGeneralizedPidTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the payload carried by the LSP. It is only + required when GMPLS will be used for this LSP. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsGeneralizedPidTC found in the IANA-GMPLS-TC-MIB module. + + This object is only meaningful if gmplsTunnelLSPEncoding is not + set to 'tunnelLspNotGmpls'." + DEFVAL { unknown } +::= { gmplsTunnelEntry 6 } + + + + +gmplsTunnelSecondary OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates that the requested LSP is a secondary LSP. + + This object is only meaningful if gmplsTunnelLSPEncoding is not + set to 'tunnelLspNotGmpls'." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 7.1." + DEFVAL { false } +::= { gmplsTunnelEntry 7 } + +gmplsTunnelDirection OBJECT-TYPE + SYNTAX INTEGER { + forward(0), + bidirectional(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this tunnel carries forward data only (is + unidirectional) or is bidirectional. + + Values of this object other than 'forward' are meaningful + only if gmplsTunnelLSPEncoding is not set to + 'tunnelLspNotGmpls'." + DEFVAL { forward } +::= { gmplsTunnelEntry 8 } + +gmplsTunnelPathComp OBJECT-TYPE + SYNTAX INTEGER { + dynamicFull(1), -- CSPF fully computed + explicit(2), -- fully specified path + dynamicPartial(3) -- CSPF partially computed + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value instructs the source node on how to perform path + computation on the explicit route specified by the associated + entries in the gmplsTunnelHopTable. + + dynamicFull + The user specifies at least the source and + destination of the path and expects that the Constrained + + + + Shortest Path First (CSPF) will calculate the remainder + of the path. + + explicit + The user specifies the entire path for the tunnel to + take. This path may contain strict or loose hops. + Evaluation of the explicit route will be performed + hop by hop through the network. + + dynamicPartial + The user specifies at least the source and + destination of the path and expects that the CSPF + will calculate the remainder of the path. The path + computed by CSPF is allowed to be only partially + computed allowing the remainder of the path to be + filled in across the network. + + When an entry is present in the gmplsTunnelTable for a + tunnel, gmplsTunnelPathComp MUST be used and any + corresponding mplsTunnelHopEntryPathComp object in the + mplsTunnelHopTable MUST be ignored and SHOULD not be set. + + mplsTunnelHopTable and mplsTunnelHopEntryPathComp are part of + MPLS-TE-STD-MIB. + + This object should be ignored if the value of + gmplsTunnelLSPEncoding is 'tunnelLspNotGmpls'." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." + DEFVAL { dynamicFull } +::= { gmplsTunnelEntry 9 } + +gmplsTunnelUpstreamNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelUpstreamNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 10 } + +gmplsTunnelUpstreamNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Indicates the address of the upstream recipient for Notify + messages relating to this tunnel and issued by this LSR. This + information is typically received from an upstream LSR in a Path + message. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the head end of a tunnel since there are + no upstream LSRs to which to send a Notify message. + + This object is interpreted in the context of the value of + gmplsTunnelUpstreamNotifyRecipientType. If this object is set to + 0, the value of gmplsTunnelUpstreamNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 11 } + +gmplsTunnelSendResvNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelSendResvNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 12 } + +gmplsTunnelSendResvNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates to an upstream LSR the address to which it should send + downstream Notify messages relating to this tunnel. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the head end of the tunnel since no Resv + messages are sent from that LSR for this tunnel. + + If set to 0, no Notify Request object will be included in the + outgoing Resv messages. + + This object is interpreted in the context of the value of + gmplsTunnelSendResvNotifyRecipientType. If this object is set to + + + + 0, the value of gmplsTunnelSendResvNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 13 } + +gmplsTunnelDownstreamNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelDownstreamNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 14 } + +gmplsTunnelDownstreamNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the address of the downstream recipient for Notify + messages relating to this tunnel and issued by this LSR. This + information is typically received from an upstream LSR in a Resv + message. This object is only valid when signaling a tunnel using + RSVP. + + It is also not valid at the tail end of a tunnel since there are + no downstream LSRs to which to send a Notify message. + + This object is interpreted in the context of the value of + gmplsTunnelDownstreamNotifyRecipientType. If this object is set + to 0, the value of gmplsTunnelDownstreamNotifyRecipientType MUST + be set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. + " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 15 } + +gmplsTunnelSendPathNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object is used to aid in interpretation of + gmplsTunnelSendPathNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 16 } + +gmplsTunnelSendPathNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates to a downstream LSR the address to which it should + send upstream Notify messages relating to this tunnel. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the tail end of the tunnel since no Path + messages are sent from that LSR for this tunnel. + + If set to 0, no Notify Request object will be included in the + outgoing Path messages. + + This object is interpreted in the context of the value of + gmplsTunnelSendPathNotifyRecipientType. If this object is set to + 0, the value of gmplsTunnelSendPathNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 17 } + +gmplsTunnelAdminStatusFlags OBJECT-TYPE + SYNTAX IANAGmplsAdminStatusInformationTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Determines the setting of the Admin Status flags in the + Admin Status object or TLV, as described in RFC 3471. Setting + this field to a non-zero value will result in the inclusion of + the Admin Status object on signaling messages. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsAdminStatusInformationTC found in the + IANA-GMPLS-TC-MIB module. + + This value of this object can be modified when the + corresponding mplsTunnelRowStatus and mplsTunnelAdminStatus + is active(1). By doing so, a new signaling message will be + + + + triggered including the requested Admin Status object or + TLV." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 8." + DEFVAL { { } } + ::= { gmplsTunnelEntry 18 } + +gmplsTunnelExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, + Synchronous Optical Network (SONET) resource usage). Such + parameters can be supplied in an external table and referenced + from here. + + A value of zeroDotzero in this attribute indicates that there + is no such additional information." + DEFVAL { zeroDotZero } + ::= { gmplsTunnelEntry 19 } + +gmplsTunnelHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelHopTable sparsely extends the mplsTunnelHopTable + of MPLS-TE-STD-MIB. It is used to indicate the Explicit Labels + to be used in an explicit path for a GMPLS tunnel defined in the + mplsTunnelTable and gmplsTunnelTable, when it is established + using signaling. It does not insert new hops, but does define + new values for hops defined in the mplsTunnelHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelHopTable. It is acceptable for some rows in the + mplsTunnelHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + The storage type for this entry is given by the value + of mplsTunnelHopStorageType in the corresponding entry in the + mplsTunnelHopTable. + + The row status of an entry in this table is controlled by + mplsTunnelHopRowStatus in the corresponding entry in the + mplsTunnelHopTable. That is, it is not permitted to create a row + + + + in this table, or to modify an existing row, when the + corresponding mplsTunnelHopRowStatus has the value active(1)." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473. + " +::= { gmplsTeObjects 2 } + +gmplsTunnelHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a tunnel hop + defined in mplsTunnelHopEntry. At an ingress to a tunnel, an + entry in this table is created by a network administrator for an + ERLSP to be set up by a signaling protocol. At transit and + egress nodes, an entry in this table may be used to represent the + explicit path instructions received using the signaling + protocol." + INDEX { + mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, + mplsTunnelHopIndex + } +::= { gmplsTunnelHopTable 1 } + +GmplsTunnelHopEntry ::= SEQUENCE { + gmplsTunnelHopLabelStatuses BITS, + gmplsTunnelHopExplicitForwardLabel Unsigned32, + gmplsTunnelHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelHopExplicitReverseLabel Unsigned32, + gmplsTunnelHopExplicitReverseLabelPtr RowPointer +} + +gmplsTunnelHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence of labels indicated by the + gmplsTunnelHopExplicitForwardLabel or + gmplsTunnelHopExplicitForwardLabelPtr, and + gmplsTunnelHopExplicitReverseLabel or + + + + gmplsTunnelHopExplicitReverseLabelPtr objects. + + For the Present bits, a set bit indicates that a label is + present for this hop in the route. This allows zero to be a + valid label value." + DEFVAL { { } } +::= { gmplsTunnelHopEntry 1 } + +gmplsTunnelHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If gmplsTunnelHopLabelStatuses object indicates that a Forward + Label is present and gmplsTunnelHopExplicitForwardLabelPtr + contains the value zeroDotZero, then the label to use on this + hop is represented by the value of this object." +::= { gmplsTunnelHopEntry 2 } + +gmplsTunnelHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the forward direction. + + If the gmplsTunnelHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelHopExplicitForwardLabel object." + DEFVAL { zeroDotZero } +::= { gmplsTunnelHopEntry 3 } + +gmplsTunnelHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in + this object encoded as a 32-bit integer." +::= { gmplsTunnelHopEntry 4 } + + + +gmplsTunnelHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the reverse direction. + + If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelHopExplicitReverseLabel object." + DEFVAL { zeroDotZero } +::= { gmplsTunnelHopEntry 5 } + +gmplsTunnelARHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelARHopTable sparsely extends the + mplsTunnelARHopTable of MPLS-TE-STD-MIB. It is used to + indicate the labels currently in use for a GMPLS tunnel + defined in the mplsTunnelTable and gmplsTunnelTable, as + reported by the signaling protocol. It does not insert + new hops, but does define new values for hops defined in + the mplsTunnelARHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelARHopTable. It is acceptable for some rows in the + mplsTunnelARHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + Note that since the information necessary to build entries + within this table is not provided by some signaling protocols + and might not be returned in all cases of other signaling + protocols, implementation of this table and the + mplsTunnelARHopTable is optional. Furthermore, since the + information in this table is actually provided by the + signaling protocol after the path has been set up, the entries + in this table are provided only for observation, and hence, + all variables in this table are accessible exclusively as + read-only." + REFERENCE + "1. Extensions to RSVP for LSP Tunnels, RFC 3209. + + + + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473. + 3. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 3 } + +gmplsTunnelARHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a tunnel hop + visible in mplsTunnelARHopEntry. An entry is created by the + signaling protocol for a signaled ERLSP set up by the signaling + protocol. + + At any node on the LSP (ingress, transit, or egress), this table + and the mplsTunnelARHopTable (if the tables are supported and if + the signaling protocol is recording actual route information) + contain the actual route of the whole tunnel. If the signaling + protocol is not recording the actual route, this table MAY + report the information from the gmplsTunnelHopTable or the + gmplsTunnelCHopTable. + + Note that the recording of actual labels is distinct from the + recording of the actual route in some signaling protocols. This + feature is enabled using the gmplsTunnelAttributes object." + INDEX { + mplsTunnelARHopListIndex, + mplsTunnelARHopIndex + } +::= { gmplsTunnelARHopTable 1 } + +GmplsTunnelARHopEntry ::= SEQUENCE { + gmplsTunnelARHopLabelStatuses BITS, + gmplsTunnelARHopExplicitForwardLabel Unsigned32, + gmplsTunnelARHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelARHopExplicitReverseLabel Unsigned32, + gmplsTunnelARHopExplicitReverseLabelPtr RowPointer, + gmplsTunnelARHopProtection BITS +} + +gmplsTunnelARHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1), + forwardGlobal(2), + reverseGlobal(3) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence and status of labels + indicated by the gmplsTunnelARHopExplicitForwardLabel or + gmplsTunnelARHopExplicitForwardLabelPtr, and + gmplsTunnelARHopExplicitReverseLabel or + gmplsTunnelARHopExplicitReverseLabelPtr objects. + + For the Present bits, a set bit indicates that a label is + present for this hop in the route. + + For the Global bits, a set bit indicates that the label comes + from the Global Label Space; a clear bit indicates that this is + a Per-Interface label. A Global bit only has meaning if the + corresponding Present bit is set." +::= { gmplsTunnelARHopEntry 1 } + +gmplsTunnelARHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present and + gmplsTunnelARHopExplicitForwardLabelPtr contains the value + zeroDotZero, then the label in use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelARHopEntry 2 } + +gmplsTunnelARHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label in use on this hop + in the forward direction. + + If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label in use on this hop is found in the + gmplsTunnelARHopExplicitForwardLabel object." +::= { gmplsTunnelARHopEntry 3 } + + + + + +gmplsTunnelARHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelARHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label in use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelARHopEntry 4 } + +gmplsTunnelARHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label in use on this hop + in the reverse direction. + + If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label in use on this hop is found in the + gmplsTunnelARHopExplicitReverseLabel object." +::= { gmplsTunnelARHopEntry 5 } + +gmplsTunnelARHopProtection OBJECT-TYPE + SYNTAX BITS { + localAvailable(0), + localInUse(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Availability and usage of protection on the reported link. + + localAvailable + This flag is set to indicate that the link downstream of this + node is protected via a local repair mechanism. + + localInUse + This flag is set to indicate that a local repair mechanism is + in use to maintain this tunnel (usually in the face of an + outage of the link it was previously routed over)." + REFERENCE + + + + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 4.4.1." +::= { gmplsTunnelARHopEntry 6 } + +gmplsTunnelCHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelCHopTable sparsely extends the + mplsTunnelCHopTable of MPLS-TE-STD-MIB. It is used to indicate + additional information about the hops of a GMPLS tunnel defined + in the mplsTunnelTable and gmplsTunnelTable, as computed by a + constraint-based routing protocol, based on the + mplsTunnelHopTable and the gmplsTunnelHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelCHopTable. It is acceptable for some rows in the + mplsTunnelCHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + Please note that since the information necessary to build + entries within this table may not be supported by some LSRs, + implementation of this table is optional. + + Furthermore, since the information in this table is actually + provided by a path computation component after the path has been + computed, the entries in this table are provided only for + observation, and hence, all objects in this table are accessible + exclusively as read-only." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473." +::= { gmplsTeObjects 4 } + +gmplsTunnelCHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a computed tunnel + hop visible in mplsTunnelCHopEntry. An entry is created by a + path computation component based on the hops specified in the + corresponding mplsTunnelHopTable and gmplsTunnelHopTable. + + At a transit LSR, this table (if the table is supported) MAY + contain the path computed by a path computation engine on (or on + + + + behalf of) the transit LSR." + INDEX { + mplsTunnelCHopListIndex, + mplsTunnelCHopIndex + } +::= { gmplsTunnelCHopTable 1 } + +GmplsTunnelCHopEntry ::= SEQUENCE { + gmplsTunnelCHopLabelStatuses BITS, + gmplsTunnelCHopExplicitForwardLabel Unsigned32, + gmplsTunnelCHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelCHopExplicitReverseLabel Unsigned32, + gmplsTunnelCHopExplicitReverseLabelPtr RowPointer +} + +gmplsTunnelCHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence of labels indicated by the + gmplsTunnelCHopExplicitForwardLabel or + gmplsTunnelCHopExplicitForwardLabelPtr and + gmplsTunnelCHopExplicitReverseLabel or + gmplsTunnelCHopExplicitReverseLabelPtr objects. + + A set bit indicates that a label is present for this hop in the + route, thus allowing zero to be a valid label value." +::= { gmplsTunnelCHopEntry 1 } + +gmplsTunnelCHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present and + gmplsTunnelCHopExplicitForwardLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelCHopEntry 2 } + +gmplsTunnelCHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the forward direction. + + If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelCHopExplicitForwardLabel object." +::= { gmplsTunnelCHopEntry 3 } + +gmplsTunnelCHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelCHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelCHopEntry 4 } + +gmplsTunnelCHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the reverse direction. + + If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelCHopExplicitReverseLabel object." +::= { gmplsTunnelCHopEntry 5 } + +gmplsTunnelReversePerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelReversePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table augments the gmplsTunnelTable to provide + per-tunnel packet performance information for the reverse + direction of a bidirectional tunnel. It can be seen as + supplementing the mplsTunnelPerfTable, which augments the + mplsTunnelTable. + + For links that do not transport packets, these packet counters + cannot be maintained. For such links, attempts to read the + objects in this table will return noSuchInstance. + + A tunnel can be known to be bidirectional by inspecting the + gmplsTunnelDirection object." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 5 } + +gmplsTunnelReversePerfEntry OBJECT-TYPE + SYNTAX GmplsTunnelReversePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for every + bidirectional GMPLS tunnel where packets are visible to the + LSR." + AUGMENTS { gmplsTunnelEntry } +::= { gmplsTunnelReversePerfTable 1 } + +GmplsTunnelReversePerfEntry ::= SEQUENCE { + gmplsTunnelReversePerfPackets Counter32, + gmplsTunnelReversePerfHCPackets Counter64, + gmplsTunnelReversePerfErrors Counter32, + gmplsTunnelReversePerfBytes Counter32, + gmplsTunnelReversePerfHCBytes Counter64 +} + +gmplsTunnelReversePerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets forwarded on the tunnel in the reverse + direction if it is bidirectional. + + This object represents the 32-bit value of the least + significant part of the 64-bit value if both + gmplsTunnelReversePerfHCPackets and this object are returned. + + + + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 1 } + +gmplsTunnelReversePerfHCPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-capacity counter for number of packets forwarded on the + tunnel in the reverse direction if it is bidirectional. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 2 } + +gmplsTunnelReversePerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of errored packets received on the tunnel in the reverse + direction if it is bidirectional. For links that do not + transport packets, this packet counter cannot be maintained. For + such links, this value will return noSuchInstance." +::= { gmplsTunnelReversePerfEntry 3 } + +gmplsTunnelReversePerfBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of bytes forwarded on the tunnel in the reverse direction + if it is bidirectional. + + This object represents the 32-bit value of the least + significant part of the 64-bit value if both + gmplsTunnelReversePerfHCBytes and this object are returned. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 4 } + +gmplsTunnelReversePerfHCBytes OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "High-capacity counter for number of bytes forwarded on the + tunnel in the reverse direction if it is bidirectional. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 5 } + +gmplsTunnelErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table augments the mplsTunnelTable. + + This table provides per-tunnel information about errors. Errors + may be detected locally or reported through the signaling + protocol. Error reporting is not exclusive to GMPLS, and this + table may be applied in MPLS systems. + + Entries in this table are not persistent over system resets + or re-initializations of the management system." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 6 } + +gmplsTunnelErrorEntry OBJECT-TYPE + SYNTAX GmplsTunnelErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for every tunnel + where error information is visible to the LSR. + + Note that systems that read the objects in this table one at + a time and do not perform atomic operations to read entire + instantiated table rows at once, should, for each conceptual + column with valid data, read gmplsTunnelErrorLastTime + prior to the other objects in the row and again subsequent to + reading the last object of the row. They should verify that + the value of gmplsTunnelErrorLastTime did not change and + thereby ensure that all data read belongs to the same error + event." + + + + AUGMENTS { mplsTunnelEntry } +::= { gmplsTunnelErrorTable 1 } + +GmplsTunnelErrorEntry ::= SEQUENCE { + gmplsTunnelErrorLastErrorType INTEGER, + gmplsTunnelErrorLastTime TimeStamp, + gmplsTunnelErrorReporterType InetAddressType, + gmplsTunnelErrorReporter InetAddress, + gmplsTunnelErrorCode Unsigned32, + gmplsTunnelErrorSubcode Unsigned32, + gmplsTunnelErrorTLVs OCTET STRING, + gmplsTunnelErrorHelpString SnmpAdminString +} + +gmplsTunnelErrorLastErrorType OBJECT-TYPE + SYNTAX INTEGER { + noError(0), + unknown(1), + protocol(2), + pathComputation(3), + localConfiguration(4), + localResources(5), + localOther(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nature of the last error. Provides interpretation context + for gmplsTunnelErrorProtocolCode and + gmplsTunnelErrorProtocolSubcode. + + A value of noError(0) shows that there is no error associated + with this tunnel and means that the other objects in this table + entry (conceptual row) have no meaning. + + A value of unknown(1) shows that there is an error but that no + additional information about the cause is known. The error may + have been received in a signaled message or generated locally. + + A value of protocol(2) or pathComputation(3) indicates the + cause of an error and identifies an error that has been received + through signaling or will itself be signaled. + + A value of localConfiguration(4), localResources(5) or + localOther(6) identifies an error that has been detected + by the local node but that will not be reported through + signaling." +::= { gmplsTunnelErrorEntry 1 } + + + +gmplsTunnelErrorLastTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last error occurred. This is presented as + the value of SysUpTime when the error occurred or was reported + to this node. + + If gmplsTunnelErrorLastErrorType has the value noError(0), then + this object is not valid and should be ignored. + + Note that entries in this table are not persistent over system + resets or re-initializations of the management system." +::= { gmplsTunnelErrorEntry 2 } + +gmplsTunnelErrorReporterType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the error reported. + + This object is used to aid in interpretation of + gmplsTunnelErrorReporter." +::= { gmplsTunnelErrorEntry 3 } + +gmplsTunnelErrorReporter OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the node reporting the last error, or the address + of the resource (such as an interface) associated with the + error. + + If gmplsTunnelErrorLastErrorType has the value noError(0), then + this object is not valid and should be ignored. + + If gmplsTunnelErrorLastErrorType has the value unknown(1), + localConfiguration(4), localResources(5), or localOther(6), + this object MAY contain a zero value. + + This object should be interpreted in the context of the value of + the object gmplsTunnelErrorReporterType." + REFERENCE + "1. Textual Conventions for Internet Network Addresses, RFC 4001, + section 4, Usage Hints." + + + +::= { gmplsTunnelErrorEntry 4 } + +gmplsTunnelErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary error code associated with the last error. + + The interpretation of this error code depends on the value of + gmplsTunnelErrorLastErrorType. If the value of + gmplsTunnelErrorLastErrorType is noError(0), the value of this + object should be 0 and should be ignored. If the value of + gmplsTunnelErrorLastErrorType is protocol(2), the error should + be interpreted in the context of the signaling protocol + identified by the mplsTunnelSignallingProto object." + REFERENCE + "1. Resource ReserVation Protocol -- Version 1 Functional + Specification, RFC 2205, section B. + 2. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 7.3. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 13.1." +::= { gmplsTunnelErrorEntry 5 } + +gmplsTunnelErrorSubcode OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary error code associated with the last error and the + protocol used to signal this tunnel. This value is interpreted + in the context of the value of gmplsTunnelErrorCode. + If the value of gmplsTunnelErrorLastErrorType is noError(0), the + value of this object should be 0 and should be ignored." + REFERENCE + "1. Resource ReserVation Protocol -- Version 1 Functional + Specification, RFC 2205, section B. + 2. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 7.3. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 13.1. " +::= { gmplsTunnelErrorEntry 6 } + +gmplsTunnelErrorTLVs OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The sequence of interface identifier TLVs reported with the + error by the protocol code. The interpretation of the TLVs and + the encoding within the protocol are described in the + references. A value of zero in the first octet indicates that no + TLVs are present." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 8.2." +::= { gmplsTunnelErrorEntry 7 } + +gmplsTunnelErrorHelpString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the last error, + recovery actions, and support advice. If there is no help string, + this object contains a zero length string. + If the value of gmplsTunnelErrorLastErrorType is noError(0), + this object should contain a zero length string, but may contain + a help string indicating that there is no error." +::= { gmplsTunnelErrorEntry 8 } + +-- +-- Notifications +-- + +gmplsTunnelDown NOTIFICATION-TYPE +OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus, + gmplsTunnelErrorLastErrorType, + gmplsTunnelErrorReporterType, + gmplsTunnelErrorReporter, + gmplsTunnelErrorCode, + gmplsTunnelErrorSubcode +} +STATUS current +DESCRIPTION + "This notification is generated when an mplsTunnelOperStatus + object for a tunnel in the gmplsTunnelTable 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 mplsTunnelOperStatus. + + The objects in this notification provide additional error + information that indicates the reason why the tunnel has + + + + transitioned to down(2). + + Note that an implementation MUST only issue one of + mplsTunnelDown and gmplsTunnelDown for any single event on a + single tunnel. If the tunnel has an entry in the + gmplsTunnelTable, an implementation SHOULD use gmplsTunnelDown + for all tunnel-down events and SHOULD NOT use mplsTunnelDown. + + This notification is subject to the control of + mplsTunnelNotificationEnable. When that object is set + to false(2), then the notification must not be issued. + + Further, this notification is also subject to + mplsTunnelNotificationMaxRate. That object indicates the + maximum number of notifications issued per second. If events + occur more rapidly, the implementation may simply fail to emit + some notifications during that period, or may queue them until + an appropriate time. The notification rate applies to the sum + of all notifications in the MPLS-TE-STD-MIB and + GMPLS-TE-STD-MIB modules applied across the whole of the + reporting device. + + mplsTunnelOperStatus, mplsTunnelAdminStatus, mplsTunnelDown, + mplsTunnelNotificationEnable, and mplsTunnelNotificationMaxRate + objects are found in MPLS-TE-STD-MIB." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering + (TE) Management Information Base (MIB), RFC 3812." +::= { gmplsTeNotifications 1 } + +gmplsTeGroups + OBJECT IDENTIFIER ::= { gmplsTeConformance 1 } + +gmplsTeCompliances + OBJECT IDENTIFIER ::= { gmplsTeConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +gmplsTeModuleFullCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION + "Compliance statement for agents that provide full support for + GMPLS-TE-STD-MIB. Such devices can then be monitored and also + be configured using this MIB module. + + The mandatory group has to be implemented by all LSRs that + originate, terminate, or act as transit for TE-LSPs/tunnels. + In addition, depending on the type of tunnels supported, other + + + + groups become mandatory as explained below." + + MODULE MPLS-TE-STD-MIB -- The MPLS-TE-STD-MIB, RFC 3812 + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + +MODULE -- this module + +MANDATORY-GROUPS { + gmplsTunnelGroup, + gmplsTunnelScalarGroup +} + +GROUP gmplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices that support signaled + tunnel set up, in addition to gmplsTunnelGroup. The following + constraints apply: + mplsTunnelSignallingProto should be at least read-only + returning a value of ldp(2) or rsvp(3)." + +GROUP gmplsTunnelOptionalGroup + DESCRIPTION + "Objects in this group are optional." + +GROUP gmplsTeNotificationGroup + DESCRIPTION + "This group is mandatory for those implementations that can + implement the notifications contained in this group." + +::= { gmplsTeCompliances 1 } + +-- Compliance requirement for read-only compliant implementations. + +gmplsTeModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-TE-STD-MIB. Such devices can then be + monitored but cannot be configured using this MIB module." + + MODULE -- this module + +-- The mandatory group has to be implemented by all LSRs that +-- originate, terminate, or act as transit for TE-LSPs/tunnels. + + + +-- In addition, depending on the type of tunnels supported, other +-- groups become mandatory as explained below. + +MANDATORY-GROUPS { + gmplsTunnelGroup, + gmplsTunnelScalarGroup +} + +GROUP gmplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices that support signaled + tunnel set up, in addition to gmplsTunnelGroup. The following + constraints apply: + mplsTunnelSignallingProto should be at least read-only + returning a value of ldp(2) or rsvp(3)." + +GROUP gmplsTunnelOptionalGroup + DESCRIPTION + "Objects in this group are optional." + +GROUP gmplsTeNotificationGroup + DESCRIPTION + "This group is mandatory for those implementations that can + implement the notifications contained in this group." + +OBJECT gmplsTunnelUnnumIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelAttributes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelLSPEncoding + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelSwitchingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelLinkProtection + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + +OBJECT gmplsTunnelGPid + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelSecondary + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelDirection + MIN-ACCESS read-only + DESCRIPTION + "Only forward(0) is required." + +OBJECT gmplsTunnelPathComp + MIN-ACCESS read-only + DESCRIPTION + "Only explicit(2) is required." + +OBJECT gmplsTunnelUpstreamNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelUpstreamNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelSendResvNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelSendResvNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelDownstreamNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelDownstreamNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelSendPathNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelSendPathNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelAdminStatusFlags + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- gmplsTunnelHopLabelStatuses has max access read-only + +OBJECT gmplsTunnelHopExplicitForwardLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelHopExplicitForwardLabelPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelHopExplicitReverseLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + +OBJECT gmplsTunnelHopExplicitReverseLabelPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- gmplsTunnelARHopTable +-- all objects have max access read-only + +-- gmplsTunnelCHopTable +-- all objects have max access read-only + +-- gmplsTunnelReversePerfTable +-- all objects have max access read-only + +-- gmplsTunnelErrorTable +-- all objects have max access read-only + +OBJECT gmplsTunnelErrorReporterType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelErrorReporter + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2)." +::= { gmplsTeCompliances 2 } + +gmplsTunnelGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelDirection, + gmplsTunnelReversePerfPackets, + gmplsTunnelReversePerfHCPackets, + gmplsTunnelReversePerfErrors, + gmplsTunnelReversePerfBytes, + gmplsTunnelReversePerfHCBytes, + gmplsTunnelErrorLastErrorType, + gmplsTunnelErrorLastTime, + gmplsTunnelErrorReporterType, + gmplsTunnelErrorReporter, + gmplsTunnelErrorCode, + gmplsTunnelErrorSubcode, + gmplsTunnelErrorTLVs, + gmplsTunnelErrorHelpString, + gmplsTunnelUnnumIf + } + STATUS current + DESCRIPTION + + + + "Necessary, but not sufficient, set of objects to implement + tunnels. In addition, depending on the type of the tunnels + supported (for example, manually configured or signaled, + persistent or non-persistent, etc.), the + gmplsTunnelSignaledGroup group is mandatory." +::= { gmplsTeGroups 1 } + +gmplsTunnelSignaledGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelAttributes, + gmplsTunnelLSPEncoding, + gmplsTunnelSwitchingType, + gmplsTunnelLinkProtection, + gmplsTunnelGPid, + gmplsTunnelSecondary, + gmplsTunnelPathComp, + gmplsTunnelUpstreamNotifyRecipientType, + gmplsTunnelUpstreamNotifyRecipient, + gmplsTunnelSendResvNotifyRecipientType, + gmplsTunnelSendResvNotifyRecipient, + gmplsTunnelDownstreamNotifyRecipientType, + gmplsTunnelDownstreamNotifyRecipient, + gmplsTunnelSendPathNotifyRecipientType, + gmplsTunnelSendPathNotifyRecipient, + gmplsTunnelAdminStatusFlags, + gmplsTunnelHopLabelStatuses, + gmplsTunnelHopExplicitForwardLabel, + gmplsTunnelHopExplicitForwardLabelPtr, + gmplsTunnelHopExplicitReverseLabel, + gmplsTunnelHopExplicitReverseLabelPtr + } + STATUS current + DESCRIPTION + "Objects needed to implement signaled tunnels." +::= { gmplsTeGroups 2 } + +gmplsTunnelScalarGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelsConfigured, + gmplsTunnelsActive + } + STATUS current + DESCRIPTION + "Scalar objects needed to implement MPLS tunnels." +::= { gmplsTeGroups 3 } + +gmplsTunnelOptionalGroup OBJECT-GROUP + OBJECTS { + + + + gmplsTunnelExtraParamsPtr, + gmplsTunnelARHopLabelStatuses, + gmplsTunnelARHopExplicitForwardLabel, + gmplsTunnelARHopExplicitForwardLabelPtr, + gmplsTunnelARHopExplicitReverseLabel, + gmplsTunnelARHopExplicitReverseLabelPtr, + gmplsTunnelARHopProtection, + gmplsTunnelCHopLabelStatuses, + gmplsTunnelCHopExplicitForwardLabel, + gmplsTunnelCHopExplicitForwardLabelPtr, + gmplsTunnelCHopExplicitReverseLabel, + gmplsTunnelCHopExplicitReverseLabelPtr + } + STATUS current + DESCRIPTION + "The objects in this group are optional." +::= { gmplsTeGroups 4 } + +gmplsTeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + gmplsTunnelDown + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this module. None is + mandatory." +::= { gmplsTeGroups 5 } + +END diff --git a/mibs/ietf/GSMP-MIB b/mibs/ietf/GSMP-MIB new file mode 100644 index 0000000..009c99e --- /dev/null +++ b/mibs/ietf/GSMP-MIB @@ -0,0 +1,1680 @@ +GSMP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, + Unsigned32, Integer32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + RowStatus, TruthValue, TimeStamp, + StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB -- [RFC2021] + InterfaceIndex + FROM IF-MIB -- [RFC2863] + AtmVcIdentifier, AtmVpIdentifier + FROM ATM-TC-MIB -- [RFC2514] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB ; -- [RFC3291] + + gsmpMIB MODULE-IDENTITY + LAST-UPDATED "200205310000Z" -- May 31, 2002 + ORGANIZATION "General Switch Management Protocol (gsmp) + Working Group, IETF" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/gsmp-charter.html + + WG-email: gsmp@ietf.org + Subscribe: gsmp-request@ietf.org + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/gsmp/ + + WG Chair: Avri Doria + Email: avri@acm.org + + WG Chair: Kenneth Sundell + Email: ksundell@nortelnetworks.com + + Editor: Hans Sjostrand + Email: hans@ipunplugged.com + + + + + Editor: Joachim Buerkle + Email: joachim.buerkle@nortelnetworks.com + + Editor: Balaji Srinivasan + Email: balaji@cplane.com" + DESCRIPTION + "This MIB contains managed object definitions for the + General Switch Management Protocol, GSMP, version 3" + + REVISION "200205310000Z" + DESCRIPTION "Initial Version, published as RFC 3295" + + ::= { mib-2 98 } + + gsmpNotifications OBJECT IDENTIFIER ::= { gsmpMIB 0 } + gsmpObjects OBJECT IDENTIFIER ::= { gsmpMIB 1 } + gsmpNotificationsObjects OBJECT IDENTIFIER ::= { gsmpMIB 2 } + gsmpConformance OBJECT IDENTIFIER ::= { gsmpMIB 3 } + + --************************************************************** + -- GSMP Textual Conventions + --************************************************************** + + GsmpNameType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Name is a 48-bit quantity. + A 48-bit IEEE 802 MAC address, if + available, may be used." + SYNTAX OCTET STRING (SIZE(6)) + + GsmpPartitionType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Defining if partitions are used and how the partition id + is negotiated. " + SYNTAX INTEGER { + noPartition(1), + fixedPartitionRequest(2), + fixedPartitionAssigned(3) + } + + GsmpPartitionIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A 8-bit quantity. The format of the Partition ID is not + defined in GSMP. If desired, the Partition ID can be + divided into multiple sub-identifiers within a single + + + + partition. For example: the Partition ID could be + subdivided into a 6-bit partition number and a 2-bit + sub-identifier which would allow a switch to support 64 + partitions with 4 available IDs per partition." + SYNTAX OCTET STRING (SIZE(1)) + + GsmpVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The version numbers defined for the GSMP protocol. + The version numbers used are defined in the + specifications of the respective protocol, + 1 - GSMPv1.1 [RFC1987] + 2 - GSMPv2.0 [RFC2397] + 3 - GSMPv3 [RFC3292] + Other numbers may be defined for other versions + of the GSMP protocol." + SYNTAX Unsigned32 + + GsmpLabelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label is structured as a TLV, a tuple, consisting of + a Type, a Length, and a Value. The structure is defined + in [RFC 3292]. The label TLV is encoded as a 2 octet type + field, followed by a 2 octet Length field, followed by a + variable length Value field. + Additionally, a label field can be composed of many stacked + labels that together constitute the label." + SYNTAX OCTET STRING + + --************************************************************** + -- GSMP Entity Objects + --************************************************************** + + -- + -- Switch Controller Entity table + -- + + gsmpControllerTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpControllerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the Switch Controller + Entities. An entry in this table needs to be configured + (created) before a GSMP session might be started." + ::= { gsmpObjects 1 } + + + + gsmpControllerEntry OBJECT-TYPE + SYNTAX GsmpControllerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the data for a specific Switch Controller + Entity. If partitions are used, one entity + corresponds to one specific switch partition. + Depending of the encapsulation used, + a corresponding row in the gsmpAtmEncapTable or the + gsmpTcpIpEncapTable may have been created." + INDEX { gsmpControllerEntityId } + ::= { gsmpControllerTable 1 } + + GsmpControllerEntry ::= SEQUENCE { + gsmpControllerEntityId GsmpNameType, + gsmpControllerMaxVersion GsmpVersion, + gsmpControllerTimer Unsigned32, + gsmpControllerPort Unsigned32, + gsmpControllerInstance Unsigned32, + gsmpControllerPartitionType GsmpPartitionType, + gsmpControllerPartitionId GsmpPartitionIdType, + gsmpControllerDoResync TruthValue, + gsmpControllerNotificationMap BITS, + gsmpControllerSessionState INTEGER, + gsmpControllerStorageType StorageType, + gsmpControllerRowStatus RowStatus + } + + gsmpControllerEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Switch Controller Entity Id is unique + within the operational context of the device." + ::= { gsmpControllerEntry 1 } + + gsmpControllerMaxVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The max version number of the GSMP protocol being used + in this session. The version is negotiated by the + adjacency protocol." + DEFVAL { 3 } + + + + ::= { gsmpControllerEntry 2 } + + gsmpControllerTimer OBJECT-TYPE + SYNTAX Unsigned32(1..255) + UNITS "100ms" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The timer specifies the nominal time between + periodic adjacency protocol messages. It is a constant + for the duration of a GSMP session. The timer is + specified in units of 100ms." + DEFVAL { 10 } + ::= { gsmpControllerEntry 3 } + + gsmpControllerPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local port number for the Switch Controller + Entity." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpControllerEntry 4 } + + gsmpControllerInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number for the Switch Controller + Entity. The Instance number is a 24-bit number + that should be guaranteed to be unique within + the recent past and to change when the link + or node comes back up after going down. Zero is + not a valid instance number. " + ::= { gsmpControllerEntry 5 } + + gsmpControllerPartitionType OBJECT-TYPE + SYNTAX GsmpPartitionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A controller can request the specific partition identifier + to the session by setting the Partition Type to + fixedPartitionRequest(2). A controller can let the switch + decide whether it wants to assign a fixed partition ID or + + + + not, by setting the Partition Type to noPartition(1)." + ::= { gsmpControllerEntry 6 } + + gsmpControllerPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Id for the specific switch partition that this + Switch Controller is concerned with. + If partitions are not used or if the controller lets the + switch assigns Partition ID, i.e Partition Type = + noPartition(1), then this object is undefined." + ::= { gsmpControllerEntry 7 } + + gsmpControllerDoResync OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether the controller should + resynchronise or reset in case of loss of synchronisation. + If this object is set to true then the Controller should + resync with PFLAG=2 (recovered adjacency)." + DEFVAL { true } + ::= { gsmpControllerEntry 8 } + + gsmpControllerNotificationMap OBJECT-TYPE + SYNTAX BITS { + sessionDown(0), + sessionUp(1), + sendFailureIndication(2), + receivedFailureIndication(3), + portUpEvent(4), + portDownEvent(5), + invalidLabelEvent(6), + newPortEvent(7), + deadPortEvent(8), + adjacencyUpdateEvent(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmap defines whether a corresponding SNMP + notification should be sent if a GSMP event is received + by the Switch Controller. If the bit is set to 1 a + notification should be sent. The handling and filtering of + the SNMP notifications are then further specified in the + + + + SNMP notification originator application. " + DEFVAL {{ sessionDown, sessionUp, + sendFailureIndication, receivedFailureIndication }} + ::= { gsmpControllerEntry 9 } + + gsmpControllerSessionState OBJECT-TYPE + SYNTAX INTEGER { + null(1), + synsent(2), + synrcvd(3), + estab(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state for the existing or potential session that + this entity is concerned with. + The NULL state is returned if the proper encapsulation + data is not yet configured, if the row is not in active + status or if the session is in NULL state as defined in + the GSMP specification." + ::= { gsmpControllerEntry 10} + + gsmpControllerStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this controller entity. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { gsmpControllerEntry 11 } + + gsmpControllerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpControllerNotificationMap + and the gsmpControllerRowStatus objects." + ::= { gsmpControllerEntry 12 } + + + + + -- + -- Switch Entity table + -- + + gsmpSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the Switch + Entities. An entry in this table needs to be configured + (created) before a GSMP session might be started." + ::= { gsmpObjects 2 } + + gsmpSwitchEntry OBJECT-TYPE + SYNTAX GsmpSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the data for a specific Switch + Entity. If partitions are used, one entity + corresponds to one specific switch partition. + Depending of the encapsulation used, + a corresponding row in the gsmpAtmEncapTable or the + gsmpTcpIpEncapTable may have been created." + INDEX { gsmpSwitchEntityId } + ::= { gsmpSwitchTable 1 } + + GsmpSwitchEntry ::= SEQUENCE { + gsmpSwitchEntityId GsmpNameType, + gsmpSwitchMaxVersion GsmpVersion, + gsmpSwitchTimer Unsigned32, + gsmpSwitchName GsmpNameType, + gsmpSwitchPort Unsigned32, + gsmpSwitchInstance Unsigned32, + gsmpSwitchPartitionType GsmpPartitionType, + gsmpSwitchPartitionId GsmpPartitionIdType, + gsmpSwitchNotificationMap BITS, + gsmpSwitchSwitchType OCTET STRING, + gsmpSwitchWindowSize Unsigned32, + gsmpSwitchSessionState INTEGER, + gsmpSwitchStorageType StorageType, + gsmpSwitchRowStatus RowStatus + } + + gsmpSwitchEntityId OBJECT-TYPE + SYNTAX GsmpNameType + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Switch Entity Id is unique + within the operational context of the device. " + ::= { gsmpSwitchEntry 1 } + + gsmpSwitchMaxVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The max version number of the GSMP protocol being + supported by this Switch. The version is negotiated by + the adjacency protocol." + DEFVAL { 3 } + ::= { gsmpSwitchEntry 2 } + + gsmpSwitchTimer OBJECT-TYPE + SYNTAX Unsigned32(1..255) + UNITS "100ms" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The timer specifies the nominal time between + periodic adjacency protocol messages. It is a constant + for the duration of a GSMP session. The timer is + specified in units of 100ms." + DEFVAL { 10 } + ::= { gsmpSwitchEntry 3 } + + gsmpSwitchName OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the Switch. The first three octets must be an + Organisationally Unique Identifier (OUI) that identifies + the manufacturer of the Switch. This is by default set to + the same value as the gsmpSwitchId object if not + separately specified. " + ::= {gsmpSwitchEntry 4 } + + gsmpSwitchPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The local port number for this Switch Entity." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpSwitchEntry 5 } + + gsmpSwitchInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number for the Switch Entity. + The Instance number is a 24-bit number + that should be guaranteed to be unique within + the recent past and to change when the link + or node comes back up after going down. Zero is + not a valid instance number." + ::= { gsmpSwitchEntry 6 } + + gsmpSwitchPartitionType OBJECT-TYPE + SYNTAX GsmpPartitionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A switch can assign the specific partition identifier to + the session by setting the Partition Type to + fixedPartitionAssigned(3). A switch can specify + that no partitions are handled in the session by setting + the Partition Type to noPartition(1)." + ::= { gsmpSwitchEntry 7 } + + gsmpSwitchPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Id for this specific switch partition that the switch + entity represents. If partitions are not used, i.e. + Partition Type = noPartition(1), then this object is + undefined." + ::= { gsmpSwitchEntry 8 } + + gsmpSwitchNotificationMap OBJECT-TYPE + SYNTAX BITS { + sessionDown(0), + sessionUp(1), + sendFailureIndication(2), + receivedFailureIndication(3), + portUpEvent(4), + + + + portDownEvent(5), + invalidLabelEvent(6), + newPortEvent(7), + deadPortEvent(8), + adjacencyUpdateEvent(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmap defines whether a corresponding SNMP + notification should be sent if an GSMP event is sent + by the Switch Entity. If the bit is set to 1 a + notification should be sent. The handling and filtering of + the SNMP notifications are then further specified in the + SNMP notification originator application. " + DEFVAL {{ sessionDown, sessionUp, + sendFailureIndication, receivedFailureIndication }} + ::= { gsmpSwitchEntry 9 } + + gsmpSwitchSwitchType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A 16-bit field allocated by the manufacturer + of the switch. The Switch Type + identifies the product. When the Switch Type is combined + with the OUI from the Switch Name the product is + uniquely identified. " + ::= { gsmpSwitchEntry 10 } + + gsmpSwitchWindowSize OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of unacknowledged request messages + that may be transmitted by the controller without the + possibility of loss. This field is used to prevent + request messages from being lost in the switch because of + overflow in the receive buffer. The field is a hint to + the controller." + ::= { gsmpSwitchEntry 11 } + + gsmpSwitchSessionState OBJECT-TYPE + SYNTAX INTEGER { + null(1), + synsent(2), + + + + synrcvd(3), + estab(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state for the existing or potential session that + this entity is concerned with. + The NULL state is returned if the proper encapsulation + data is not yet configured, if the row is not in active + status or if the session is in NULL state as defined in + the GSMP specification." + ::= { gsmpSwitchEntry 12} + + gsmpSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this switch entity. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { gsmpSwitchEntry 13 } + + gsmpSwitchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpSwitchNotificationMap + and the gsmpSwitchRowStatus objects." + ::= { gsmpSwitchEntry 14 } + + --************************************************************** + -- GSMP Encapsulation Objects + --************************************************************** + + -- + -- GSMP ATM Encapsulation Table + -- + + gsmpAtmEncapTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF GsmpAtmEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the atm encapsulation data + for the Controller or Switch that uses atm aal5 as + encapsulation. " + ::= { gsmpObjects 3 } + + gsmpAtmEncapEntry OBJECT-TYPE + SYNTAX GsmpAtmEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the encapsulation data for a specific + Switch Controller entity or Switch entity." + INDEX { gsmpAtmEncapEntityId } + ::= { gsmpAtmEncapTable 1 } + + GsmpAtmEncapEntry ::= SEQUENCE { + gsmpAtmEncapEntityId GsmpNameType, + gsmpAtmEncapIfIndex InterfaceIndex, + gsmpAtmEncapVpi AtmVpIdentifier, + gsmpAtmEncapVci AtmVcIdentifier, + gsmpAtmEncapStorageType StorageType, + gsmpAtmEncapRowStatus RowStatus + } + + gsmpAtmEncapEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Controller Id or Switch Id that is unique + within the operational context of the device. " + ::= { gsmpAtmEncapEntry 1 } + + gsmpAtmEncapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface index for the virtual channel over which + the GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + ::= { gsmpAtmEncapEntry 2 } + + + + gsmpAtmEncapVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " The VPI value for the virtual channel over which the + GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + DEFVAL { 0 } + ::= { gsmpAtmEncapEntry 3 } + + gsmpAtmEncapVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " The VCI value for the virtual channel over which the + GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + DEFVAL { 15 } + ::= { gsmpAtmEncapEntry 4 } + + gsmpAtmEncapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. It should have the same + value as the StorageType in the referring Switch + Controller entity or Switch entity." + DEFVAL { nonVolatile } + ::= { gsmpAtmEncapEntry 5 } + + gsmpAtmEncapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpAtmEncapRowStatus object." + ::= { gsmpAtmEncapEntry 6 } + + + + + -- + -- GSMP TCP/IP Encapsulation Table + -- + + gsmpTcpIpEncapTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpTcpIpEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the encapsulation data + for the Controller or Switch that uses TCP/IP as + encapsulation." + ::= { gsmpObjects 4 } + + gsmpTcpIpEncapEntry OBJECT-TYPE + SYNTAX GsmpTcpIpEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the encapsulation data for a specific + Switch Controller entity or Switch entity." + INDEX { gsmpTcpIpEncapEntityId } + ::= { gsmpTcpIpEncapTable 1 } + + GsmpTcpIpEncapEntry ::= SEQUENCE { + gsmpTcpIpEncapEntityId GsmpNameType, + gsmpTcpIpEncapAddressType InetAddressType, + gsmpTcpIpEncapAddress InetAddress, + gsmpTcpIpEncapPortNumber InetPortNumber, + gsmpTcpIpEncapStorageType StorageType, + gsmpTcpIpEncapRowStatus RowStatus + } + + gsmpTcpIpEncapEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Controller or Switch Id is unique + within the operational context of the device. " + ::= { gsmpTcpIpEncapEntry 1 } + + gsmpTcpIpEncapAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The type of address in gsmpTcpIpEncapAddress." + ::= { gsmpTcpIpEncapEntry 2 } + + gsmpTcpIpEncapAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IPv4 or IPv6 address used for + the GSMP session peer." + ::= { gsmpTcpIpEncapEntry 3 } + + gsmpTcpIpEncapPortNumber OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP port number used for the TCP session + establishment to the GSMP peer." + DEFVAL { 6068 } + ::= { gsmpTcpIpEncapEntry 4 } + + gsmpTcpIpEncapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. It should have the same + value as the StorageType in the referring Switch + Controller entity or Switch entity." + DEFVAL { nonVolatile } + ::= { gsmpTcpIpEncapEntry 5 } + + gsmpTcpIpEncapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpTcpIpEncapRowStatus object." + ::= { gsmpTcpIpEncapEntry 6 } + + --************************************************************** + -- GSMP Session Objects + + + + --************************************************************** + + -- + -- GSMP Session table + -- + + gsmpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the sessions between + Controller and Switch pairs. " + ::= { gsmpObjects 5 } + + gsmpSessionEntry OBJECT-TYPE + SYNTAX GsmpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the session data for a specific Controller and + Switch pair. Also, statistics for this specific + session is shown." + INDEX { gsmpSessionThisSideId, gsmpSessionFarSideId } + ::= { gsmpSessionTable 1 } + + GsmpSessionEntry ::= SEQUENCE { + gsmpSessionThisSideId GsmpNameType, + gsmpSessionFarSideId GsmpNameType, + gsmpSessionVersion GsmpVersion, + gsmpSessionTimer Integer32, + gsmpSessionPartitionId GsmpPartitionIdType, + gsmpSessionAdjacencyCount Unsigned32, + gsmpSessionFarSideName GsmpNameType, + gsmpSessionFarSidePort Unsigned32, + gsmpSessionFarSideInstance Unsigned32, + gsmpSessionLastFailureCode Unsigned32, + gsmpSessionDiscontinuityTime TimeStamp, + gsmpSessionStartUptime TimeStamp, + gsmpSessionStatSentMessages ZeroBasedCounter32, + gsmpSessionStatFailureInds ZeroBasedCounter32, + gsmpSessionStatReceivedMessages ZeroBasedCounter32, + gsmpSessionStatReceivedFailures ZeroBasedCounter32, + gsmpSessionStatPortUpEvents ZeroBasedCounter32, + gsmpSessionStatPortDownEvents ZeroBasedCounter32, + gsmpSessionStatInvLabelEvents ZeroBasedCounter32, + gsmpSessionStatNewPortEvents ZeroBasedCounter32, + + + + gsmpSessionStatDeadPortEvents ZeroBasedCounter32, + gsmpSessionStatAdjUpdateEvents ZeroBasedCounter32 + } + + gsmpSessionThisSideId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This side ID uniquely identifies the entity that this + session relates to within the operational + context of the device. " + ::= { gsmpSessionEntry 1 } + + gsmpSessionFarSideId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Far side ID uniquely identifies the entity that this + session is established against. " + ::= { gsmpSessionEntry 2 } + + gsmpSessionVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the GSMP protocol being used in + this session. The version is the result of the + negotiation by the adjacency protocol." + ::= { gsmpSessionEntry 3 } + + gsmpSessionTimer OBJECT-TYPE + SYNTAX Integer32 + UNITS "100ms" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timer specifies the time remaining until the + adjacency timer expires. The object could take negative + values since if no valid GSMP messages are + received in any period of time in excess of three times + the value of the Timer negotiated by the adjacency + protocol loss of synchronisation may be declared. The + timer is specified in units of 100ms." + ::= { gsmpSessionEntry 4 } + + + + + gsmpSessionPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Partition Id for the specific switch partition that + this session is concerned with." + ::= { gsmpSessionEntry 5 } + + gsmpSessionAdjacencyCount OBJECT-TYPE + SYNTAX Unsigned32(1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the current number of adjacencies + that are established with controllers and the switch + partition that is used for this session. The value + includes this session." + ::= { gsmpSessionEntry 6 } + + gsmpSessionFarSideName OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the far side as advertised in the adjacency + message." + ::= {gsmpSessionEntry 7} + + gsmpSessionFarSidePort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port number of the link across which the + message is being sent." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpSessionEntry 8 } + + gsmpSessionFarSideInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number used for the link during this + session. The Instance number is a 24-bit number + that should be guaranteed to be unique within + + + + the recent past and to change when the link + or node comes back up after going down. Zero is not + a valid instance number." + ::= { gsmpSessionEntry 9 } + + gsmpSessionLastFailureCode OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the last failure code that was received over + this session. If no failure code have been received, the + value is zero." + ::= { gsmpSessionEntry 10 } + + gsmpSessionDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this session's counters + suffered a discontinuity. If no such discontinuities have + occurred since then, this object contains the same + timestamp as gsmpSessionStartUptime ." + ::= { gsmpSessionEntry 11 } + + gsmpSessionStartUptime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the session came to + established state." + ::= { gsmpSessionEntry 12 } + + gsmpSessionStatSentMessages OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been sent in this + session. All GSMP messages pertaining to this session after + the session came to established state SHALL + be counted, also including adjacency protocol messages + and failure response messages. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + + + + happened." + ::= { gsmpSessionEntry 13 } + + gsmpSessionStatFailureInds OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been sent with a + failure indication in this session. Warning messages + SHALL NOT be counted. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 12.1" + ::= { gsmpSessionEntry 14 } + + gsmpSessionStatReceivedMessages OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been received in + this session. All legal GSMP messages pertaining to this + session after the session came to established state SHALL + be counted, also including adjacency protocol messages + and failure response messages. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + ::= { gsmpSessionEntry 15 } + + gsmpSessionStatReceivedFailures OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been received in + this session with a failure indication. Warning messages + SHALL NOT be counted. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 12.1" + ::= { gsmpSessionEntry 16 } + + + + + gsmpSessionStatPortUpEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Port Up events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.1" + ::= { gsmpSessionEntry 17 } + + gsmpSessionStatPortDownEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Port Down events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.2" + ::= { gsmpSessionEntry 18 } + + gsmpSessionStatInvLabelEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Invalid label events that have been sent + or received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.3" + ::= { gsmpSessionEntry 19 } + + gsmpSessionStatNewPortEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of New Port events that have been sent or + + + + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.4" + ::= { gsmpSessionEntry 20 } + + gsmpSessionStatDeadPortEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Dead Port events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.5" + ::= { gsmpSessionEntry 21 } + + gsmpSessionStatAdjUpdateEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Adjacency Update events that have been sent + or received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.6" + ::= { gsmpSessionEntry 22 } + + + -- ************************************************************** + -- GSMP Notifications + -- ************************************************************** + + -- + -- Notification objects + -- + + gsmpEventPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "This object specifies the Port Number that is + carried in this event." + ::= { gsmpNotificationsObjects 1 } + + gsmpEventPortSessionNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Port Session Number that is + carried in this event." + ::= { gsmpNotificationsObjects 2 } + + gsmpEventSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Event Sequence Number that is + carried in this event." + ::= { gsmpNotificationsObjects 3 } + + gsmpEventLabel OBJECT-TYPE + SYNTAX GsmpLabelType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Label that is + carried in this event." + ::= { gsmpNotificationsObjects 4 } + + + -- + -- Notifications + -- + + gsmpSessionDown NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStartUptime, + gsmpSessionStatSentMessages, + gsmpSessionStatFailureInds, + gsmpSessionStatReceivedMessages, + gsmpSessionStatReceivedFailures, + gsmpSessionStatPortUpEvents, + gsmpSessionStatPortDownEvents, + gsmpSessionStatInvLabelEvents, + + + + gsmpSessionStatNewPortEvents, + gsmpSessionStatDeadPortEvents, + gsmpSessionStatAdjUpdateEvents + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated whenever a session is taken down, regardless + of whether the session went down normally or not. + Its purpose is to allow a management application + (primarily an accounting application) that is + monitoring the session statistics to receive the final + values of these counters, so that the application can + properly account for the amounts the counters were + incremented since the last time the application polled + them. The gsmpSessionStartUptime object provides the + total amount of time that the session was active. + + This notification is not a substitute for polling the + session statistic counts. In particular, the count + values reported in this notification cannot be assumed + to be the complete totals for the life of the session, + since they may have wrapped while the + session was up. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification. + An instance of this notification will contain exactly + one instance of each of its objects, and these objects + will all belong to the same conceptual row of the + gsmpSessionTable." + ::= { gsmpNotifications 1 } + + gsmpSessionUp NOTIFICATION-TYPE + OBJECTS { + gsmpSessionFarSideInstance + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when new session is established. + + The new session is identified by the gsmpSessionThisSideId + and gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionFarSideInstance object + + + + contained in the notification." + ::= { gsmpNotifications 2 } + + gsmpSentFailureInd NOTIFICATION-TYPE + OBJECTS { + gsmpSessionLastFailureCode, + gsmpSessionStatFailureInds + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a message with a failure indication was + sent. + + The notification indicates a change in the value of + gsmpSessionStatFailureInds. The + gsmpSessionLastFailureCode contains the failure + reason. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification." + ::= { gsmpNotifications 3 } + + gsmpReceivedFailureInd NOTIFICATION-TYPE + OBJECTS { + gsmpSessionLastFailureCode, + gsmpSessionStatReceivedFailures + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generate when a message with a failure indication + is received. + + The notification indicates a change in the value of + gsmpSessionStatReceivedFailures. The + gsmpSessionLastFailureCode contains the failure + reason. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification." + ::= { gsmpNotifications 4 } + + + + gsmpPortUpEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatPortUpEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a Port Up Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatPortUpEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatPortUpEvents + object contained in the notification." + ::= { gsmpNotifications 5 } + + gsmpPortDownEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatPortDownEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a Port Down Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatPortDownEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatPortDownEvents + object contained in the notification." + ::= { gsmpNotifications 6 } + + gsmpInvalidLabelEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatInvLabelEvents, + gsmpEventPort, + + + + gsmpEventLabel, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when an Invalid Label Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatInvLabelEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatInvLabelEvents + object contained in the notification." + ::= { gsmpNotifications 7 } + + gsmpNewPortEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatNewPortEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a New Port Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatNewPortEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatNewPortEvents + object contained in the notification." + ::= { gsmpNotifications 8 } + + gsmpDeadPortEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatDeadPortEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + + + + DESCRIPTION + "When it has been enabled, this notification is + generated when a Dead Port Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatDeadPortEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatDeadPortEvents + object contained in the notification." + ::= { gsmpNotifications 9 } + + gsmpAdjacencyUpdateEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionAdjacencyCount, + gsmpSessionStatAdjUpdateEvents, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when an Adjacency Update Event occurs. + + The gsmpSessionAdjacencyCount contains the new value of + the number of adjacencies + that are established with controllers and the switch + partition that is used for this session. + + The notification indicates a change in the value of + gsmpSessionStatAdjUpdateEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionAdjacencyCount + or the gsmpSessionStatAdjUpdateEvents object contained + in the notification." + ::= { gsmpNotifications 10 } + + + + + + + + + + + + --************************************************************** + -- GSMP Compliance + --************************************************************** + + gsmpGroups OBJECT IDENTIFIER ::= { gsmpConformance 1 } + gsmpCompliances OBJECT IDENTIFIER ::= { gsmpConformance 2 } + + gsmpModuleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support + the GSMP MIB." + MODULE -- this module + MANDATORY-GROUPS { gsmpGeneralGroup + } + GROUP gsmpControllerGroup + DESCRIPTION + "This group is mandatory for all Switch + Controllers" + + GROUP gsmpSwitchGroup + DESCRIPTION + "This group is mandatory for all Switches" + + GROUP gsmpAtmEncapGroup + DESCRIPTION + "This group must be supported if ATM is used for GSMP + encapsulation. " + + GROUP gsmpTcpIpEncapGroup + DESCRIPTION + "This group must be supported if TCP/IP is used for GSMP + encapsulation. " + + OBJECT gsmpTcpIpEncapAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', and IPv4 addresses. Supporting addresses with + zone index or IPv6 addresses are optional. Defining + Internet addresses by using DNS domain names are not + allowed." + + OBJECT gsmpTcpIpEncapAddress + SYNTAX InetAddress (SIZE(0|4|8|16|20)) + DESCRIPTION + "An implementation is only required to support + + + + IPv4 addresses. Supporting addresses with zone index or IPv6 + addresses are optional." + + GROUP gsmpNotificationObjectsGroup + DESCRIPTION + "This group must be supported if notifications + are supported. " + + GROUP gsmpNotificationsGroup + DESCRIPTION + "This group must be supported if notifications + are supported. " + + ::= { gsmpCompliances 1 } + + -- units of conformance + + gsmpGeneralGroup OBJECT-GROUP + OBJECTS { + gsmpSessionVersion, + gsmpSessionTimer, + gsmpSessionPartitionId, + gsmpSessionAdjacencyCount, + gsmpSessionFarSideName, + gsmpSessionFarSidePort, + gsmpSessionFarSideInstance, + gsmpSessionLastFailureCode, + gsmpSessionDiscontinuityTime, + gsmpSessionStartUptime, + gsmpSessionStatSentMessages, + gsmpSessionStatFailureInds, + gsmpSessionStatReceivedMessages, + gsmpSessionStatReceivedFailures, + gsmpSessionStatPortUpEvents, + gsmpSessionStatPortDownEvents, + gsmpSessionStatInvLabelEvents, + gsmpSessionStatNewPortEvents, + gsmpSessionStatDeadPortEvents, + gsmpSessionStatAdjUpdateEvents + } + STATUS current + DESCRIPTION + "Objects that apply to all GSMP implementations." + ::= { gsmpGroups 1 } + + gsmpControllerGroup OBJECT-GROUP + OBJECTS { + gsmpControllerMaxVersion, + + + + gsmpControllerTimer, + gsmpControllerPort, + gsmpControllerInstance, + gsmpControllerPartitionType, + gsmpControllerPartitionId, + gsmpControllerDoResync, + gsmpControllerNotificationMap, + gsmpControllerSessionState, + gsmpControllerStorageType, + gsmpControllerRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply GSMP implementations of + Switch Controllers." + ::= { gsmpGroups 2 } + + gsmpSwitchGroup OBJECT-GROUP + OBJECTS { + gsmpSwitchMaxVersion, + gsmpSwitchTimer, + gsmpSwitchName, + gsmpSwitchPort, + gsmpSwitchInstance, + gsmpSwitchPartitionType, + gsmpSwitchPartitionId, + gsmpSwitchNotificationMap, + gsmpSwitchSwitchType, + gsmpSwitchWindowSize, + gsmpSwitchSessionState, + gsmpSwitchStorageType, + gsmpSwitchRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply GSMP implementations of + Switches." + ::= { gsmpGroups 3 } + + gsmpAtmEncapGroup OBJECT-GROUP + OBJECTS { + gsmpAtmEncapIfIndex, + gsmpAtmEncapVpi, + gsmpAtmEncapVci, + gsmpAtmEncapStorageType, + gsmpAtmEncapRowStatus + } + STATUS current + + + + DESCRIPTION + "Objects that apply to GSMP implementations that + supports ATM for GSMP encapsulation." + ::= { gsmpGroups 4 } + + gsmpTcpIpEncapGroup OBJECT-GROUP + OBJECTS { + gsmpTcpIpEncapAddressType, + gsmpTcpIpEncapAddress, + gsmpTcpIpEncapPortNumber, + gsmpTcpIpEncapStorageType, + gsmpTcpIpEncapRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to GSMP implementations that + supports TCP/IP for GSMP encapsulation." + ::= { gsmpGroups 5 } + + gsmpNotificationObjectsGroup OBJECT-GROUP + OBJECTS { + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber, + gsmpEventLabel + } + STATUS current + DESCRIPTION + "Objects that are contained in the notifications." + ::= { gsmpGroups 6 } + + gsmpNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + gsmpSessionDown, + gsmpSessionUp, + gsmpSentFailureInd, + gsmpReceivedFailureInd, + gsmpPortUpEvent, + gsmpPortDownEvent, + gsmpInvalidLabelEvent, + gsmpNewPortEvent, + gsmpDeadPortEvent, + gsmpAdjacencyUpdateEvent + } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes + in the value of objects gsmpSessionTable" + + + + ::= { gsmpGroups 7 } + +END diff --git a/mibs/ietf/HC-ALARM-MIB b/mibs/ietf/HC-ALARM-MIB new file mode 100644 index 0000000..5e7e734 --- /dev/null +++ b/mibs/ietf/HC-ALARM-MIB @@ -0,0 +1,745 @@ +HC-ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + RowStatus, VariablePointer, StorageType, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + CounterBasedGauge64 + FROM HCNUM-TC + rmon, OwnerString, rmonEventGroup + FROM RMON-MIB; + +hcAlarmMIB MODULE-IDENTITY + LAST-UPDATED "200212160000Z" + ORGANIZATION "IETF RMONMIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + Tel: +1 408 527-3711 + + + + E-mail: abierman@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/rmonmib " + DESCRIPTION + "This module defines Remote Monitoring MIB extensions for + High Capacity Alarms. + + Copyright (C) The Internet Society (2002). This version + of this MIB module is part of RFC 3434; see the RFC + itself for full legal notices." + + REVISION "200212160000Z" + DESCRIPTION + "Initial version of the High Capacity Alarm MIB module. + This version published as RFC 3434." + ::= { rmon 29 } + +hcAlarmObjects OBJECT IDENTIFIER ::= { hcAlarmMIB 1 } +hcAlarmNotifications OBJECT IDENTIFIER ::= { hcAlarmMIB 2 } +hcAlarmConformance OBJECT IDENTIFIER ::= { hcAlarmMIB 3 } + +hcAlarmControlObjects OBJECT IDENTIFIER ::= { hcAlarmObjects 1 } +hcAlarmCapabilitiesObjects OBJECT IDENTIFIER + ::= { hcAlarmObjects 2 } + +-- +-- Textual Conventions +-- + +HcValueStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type indicates the validity and sign of the data + in associated object instances which represent the absolute + value of a high capacity numeric quantity. Such an object + may be represented with one or more object instances. An + object of type HcValueStatus MUST be defined within the same + + + + structure as the object(s) representing the high capacity + absolute value. + + If the associated object instance(s) representing the high + capacity absolute value could not be accessed during the + sampling interval, and is therefore invalid, then the + associated HcValueStatus object will contain the value + 'valueNotAvailable(1)'. + + If the associated object instance(s) representing the high + capacity absolute value are valid and actual value of the + sample is greater than or equal to zero, then the associated + HcValueStatus object will contain the value + 'valuePositive(2)'. + + If the associated object instance(s) representing the high + capacity absolute value are valid and the actual value of + the sample is less than zero, then the associated + HcValueStatus object will contain the value + 'valueNegative(3)'. The associated absolute value should be + multiplied by -1 to obtain the true sample value." + SYNTAX INTEGER { + valueNotAvailable(1), + valuePositive(2), + valueNegative(3) + } + +-- +-- High Capacity Alarm Table +-- + +hcAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF HcAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of entries for the configuration of high capacity + alarms." + ::= { hcAlarmControlObjects 1 } + +hcAlarmEntry OBJECT-TYPE + SYNTAX HcAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hcAlarmTable. Entries are usually + created in this table by management application action, but + may also be created by agent action as well." + + + + INDEX { hcAlarmIndex } + ::= { hcAlarmTable 1 } + +HcAlarmEntry ::= SEQUENCE { + hcAlarmIndex Integer32, + hcAlarmInterval Integer32, + hcAlarmVariable VariablePointer, + hcAlarmSampleType INTEGER, + hcAlarmAbsValue CounterBasedGauge64, + hcAlarmValueStatus HcValueStatus, + hcAlarmStartupAlarm INTEGER, + hcAlarmRisingThreshAbsValueLo Unsigned32, + hcAlarmRisingThreshAbsValueHi Unsigned32, + hcAlarmRisingThresholdValStatus HcValueStatus, + hcAlarmFallingThreshAbsValueLo Unsigned32, + hcAlarmFallingThreshAbsValueHi Unsigned32, + hcAlarmFallingThresholdValStatus HcValueStatus, + hcAlarmRisingEventIndex Integer32, + hcAlarmFallingEventIndex Integer32, + hcAlarmValueFailedAttempts Counter32, + hcAlarmOwner OwnerString, + hcAlarmStorageType StorageType, + hcAlarmStatus RowStatus } + +hcAlarmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer index value used to uniquely identify + this high capacity alarm entry." + ::= { hcAlarmEntry 1 } + +hcAlarmInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is sampled and + compared with the rising and falling thresholds. When + setting this variable, care should be taken in the case of + deltaValue sampling - the interval should be set short + enough that the sampled variable is very unlikely to + increase or decrease by more than 2^63 - 1 during a single + sampling interval. + + + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 2 } + +hcAlarmVariable OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + sampled. Only variables that resolve to an ASN.1 primitive + type of INTEGER (INTEGER, Integer32, Counter32, Counter64, + Gauge, or TimeTicks) may be sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to + identify only those objects that exist in a particular MIB + view. Because there is thus no acceptable means of + restricting the read access that could be obtained through + the alarm mechanism, the probe must only grant write access + to this object in those views that have read access to all + objects on the probe. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 3 } + +hcAlarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the thresholds. + If the value of this object is absoluteValue(1), the value + of the selected variable will be compared directly with the + thresholds at the end of the sampling interval. If the + value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference compared with the + thresholds. + + If the associated hcAlarmVariable instance could not be + obtained at the previous sample interval, then a delta + + + + sample is not possible, and the value of the associated + hcAlarmValueStatus object for this interval will be + valueNotAvailable(1). + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 4 } + +hcAlarmAbsValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + hcAlarmVariable statistic during the last sampling period. + The value during the current sampling period is not made + available until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of hcAlarmValueStatus must be checked, + and the value of this object adjusted as necessary. + + If the MIB instance could not be accessed during the + sampling interval, then this object will have a value of + zero and the associated instance of hcAlarmValueStatus will + be set to 'valueNotAvailable(1)'." + ::= { hcAlarmEntry 5 } + +hcAlarmValueStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data for + the hcAlarmAbsValue object, as described in the + HcValueStatus textual convention." + ::= { hcAlarmEntry 6 } + +hcAlarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alarm that may be sent when this entry is first set to + + + + active. If the first sample after this entry becomes active + is greater than or equal to the rising threshold and this + object is equal to risingAlarm(1) or + risingOrFallingAlarm(3), then a single rising alarm will be + generated. If the first sample after this entry becomes + valid is less than or equal to the falling threshold and + this object is equal to fallingAlarm(2) or + risingOrFallingAlarm(3), then a single falling alarm will be + generated. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 7 } + +hcAlarmRisingThreshAbsValueLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmRisingThreshAbsValueHi and + hcAlarmRisingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmRisingThreshAbsValueLo + + (hcAlarmRisingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the rising threshold for this entry. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is greater than + or equal to this threshold and the associated + hcAlarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event will + not be generated until the sampled value falls below this + threshold and reaches the threshold identified by the + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, and + hcAlarmFallingThresholdValStatus objects. + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + + ::= { hcAlarmEntry 8 } + +hcAlarmRisingThreshAbsValueHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmRisingThreshAbsValueLo and + hcAlarmRisingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmRisingThreshAbsValueLo + + (hcAlarmRisingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the rising threshold for this entry. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is greater than + or equal to this threshold and the associated + hcAlarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event will + not be generated until the sampled value falls below this + threshold and reaches the threshold identified by the + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, and + hcAlarmFallingThresholdValStatus objects. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 9 } + +hcAlarmRisingThresholdValStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This object indicates the sign of the data for the rising + threshold, as defined by the hcAlarmRisingThresAbsValueLo + and hcAlarmRisingThresAbsValueHi objects, as described in + the HcValueStatus textual convention. + + The enumeration 'valueNotAvailable(1)' is not allowed, and + the associated hcAlarmStatus object cannot be equal to + 'active(1)' if this object is set to this value. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 10 } + +hcAlarmFallingThreshAbsValueLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmFallingThreshAbsValueHi and + hcAlarmFallingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmFallingThreshAbsValueLo + + (hcAlarmFallingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the falling threshold for this entry. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is less than or + equal to this threshold and the associated + hcAlarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event will + not be generated until the sampled value rises above this + threshold and reaches the threshold identified by the + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, and + hcAlarmRisingThresholdValStatus objects. + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 11 } + +hcAlarmFallingThreshAbsValueHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmFallingThreshAbsValueLo and + hcAlarmFallingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmFallingThreshAbsValueLo + + (hcAlarmFallingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the falling threshold for this entry. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is less than or + equal to this threshold and the associated + hcAlarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event will + not be generated until the sampled value rises above this + threshold and reaches the threshold identified by the + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, and + hcAlarmRisingThresholdValStatus objects. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 12 } + +hcAlarmFallingThresholdValStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object indicates the sign of the data for the falling + threshold, as defined by the hcAlarmFallingThreshAbsValueLo + and hcAlarmFallingThreshAbsValueHi objects, as described in + the HcValueStatus textual convention. + + The enumeration 'valueNotAvailable(1)' is not allowed, and + the associated hcAlarmStatus object cannot be equal to + 'active(1)' if this object is set to this value. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 13 } + +hcAlarmRisingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is used when a rising + threshold is crossed. The eventEntry identified by a + particular value of this index is the same as identified by + the same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no association + exists. In particular, if this value is zero, no associated + event will be generated, as zero is not a valid event index. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 14 } + +hcAlarmFallingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is used when a falling + threshold is crossed. The eventEntry identified by a + particular value of this index is the same as identified by + the same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no association + exists. In particular, if this value is zero, no associated + event will be generated, as zero is not a valid event index. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 15 } + +hcAlarmValueFailedAttempts OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hcAlarmVariable instance + was polled on behalf of this hcAlarmEntry, (while in the + active state) and the value was not available. This counter + may experience a discontinuity if the agent restarts, + indicated by the value of sysUpTime." + ::= { hcAlarmEntry 16 } + +hcAlarmOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { hcAlarmEntry 17 } + +hcAlarmStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of non-volatile storage configured for this entry. + If this object is equal to 'permanent(4)', then the + associated hcAlarmRisingEventIndex and + hcAlarmFallingEventIndex objects must be writable." + ::= { hcAlarmEntry 18 } + +hcAlarmStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value, as described + in the description clause for each writable object. + + The hcAlarmStatus object may be modified if the associated + instance of this object is equal to active(1), + notInService(2), or notReady(3). All other writable objects + may be modified if the associated instance of this object is + equal to notInService(2) or notReady(3)." + ::= { hcAlarmEntry 19 } + + + +-- +-- Capabilities +-- + +hcAlarmCapabilities OBJECT-TYPE + SYNTAX BITS { + hcAlarmCreation(0), + hcAlarmNvStorage(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the high capacity alarm capabilities + supported by this agent. + + If the 'hcAlarmCreation' BIT is set, then this agent allows + NMS applications to create entries in the hcAlarmTable. + + If the 'hcAlarmNvStorage' BIT is set, then this agent allows + entries in the hcAlarmTable which will be recreated after a + system restart, as controlled by the hcAlarmStorageType + object." + ::= { hcAlarmCapabilitiesObjects 1 } + +-- +-- Notifications +-- + +hcAlarmNotifPrefix OBJECT IDENTIFIER + ::= { hcAlarmNotifications 0 } + +hcRisingAlarm NOTIFICATION-TYPE + OBJECTS { hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, + hcAlarmRisingThresholdValStatus, + hcAlarmRisingEventIndex } + STATUS current + DESCRIPTION + "The SNMP notification that is generated when a high + capacity alarm entry crosses its rising threshold and + generates an event that is configured for sending SNMP + traps. + + The hcAlarmEntry object instances identified in the OBJECTS + + + + clause are from the entry that causes this notification to + be generated." + ::= { hcAlarmNotifPrefix 1 } + +hcFallingAlarm NOTIFICATION-TYPE + OBJECTS { hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, + hcAlarmFallingThresholdValStatus, + hcAlarmFallingEventIndex } + STATUS current + DESCRIPTION + "The SNMP notification that is generated when a high + capacity alarm entry crosses its falling threshold and + generates an event that is configured for sending SNMP + traps. + + The hcAlarmEntry object instances identified in the OBJECTS + clause are from the entry that causes this notification to + be generated." + ::= { hcAlarmNotifPrefix 2 } + +-- +-- Conformance Section +-- + +hcAlarmCompliances OBJECT IDENTIFIER ::= { hcAlarmConformance 1 } +hcAlarmGroups OBJECT IDENTIFIER ::= { hcAlarmConformance 2 } + +hcAlarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the High + Capacity Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + hcAlarmControlGroup, + hcAlarmCapabilitiesGroup, + hcAlarmNotificationsGroup + } + + MODULE RMON-MIB + MANDATORY-GROUPS { rmonEventGroup } + + ::= { hcAlarmCompliances 1 } + + + +-- Object Groups + +hcAlarmControlGroup OBJECT-GROUP + OBJECTS { + hcAlarmInterval, + hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmStartupAlarm, + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, + hcAlarmRisingThresholdValStatus, + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, + hcAlarmFallingThresholdValStatus, + hcAlarmRisingEventIndex, + hcAlarmFallingEventIndex, + hcAlarmValueFailedAttempts, + hcAlarmOwner, + hcAlarmStorageType, + hcAlarmStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to configure entries for high + capacity alarm threshold monitoring purposes." + ::= { hcAlarmGroups 1 } + +hcAlarmCapabilitiesGroup OBJECT-GROUP + OBJECTS { + hcAlarmCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects used to indicate an agent's high + capacity alarm threshold monitoring capabilities." + ::= { hcAlarmGroups 2 } + +hcAlarmNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + hcRisingAlarm, + hcFallingAlarm + } + STATUS current + DESCRIPTION + "A collection of notifications to deliver information + related to a high capacity rising or falling threshold event + + + + to a management application." + ::= { hcAlarmGroups 3 } + +END diff --git a/mibs/ietf/HC-PerfHist-TC-MIB b/mibs/ietf/HC-PerfHist-TC-MIB new file mode 100644 index 0000000..4a3952e --- /dev/null +++ b/mibs/ietf/HC-PerfHist-TC-MIB @@ -0,0 +1,235 @@ +HC-PerfHist-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Counter64, + Unsigned32, + Integer32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + + + +hcPerfHistTCMIB MODULE-IDENTITY + LAST-UPDATED "200402030000Z" -- February 3, 2004 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-7324 + USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 + USA + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194 + " + DESCRIPTION + "This MIB Module provides Textual Conventions to be + used by systems supporting 15 minute based performance + history counts that require high-capacity counts. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3705: see the RFC + itself for full legal notices." + + REVISION "200402030000Z" -- February 3, 2004 + DESCRIPTION "Initial version, published as RFC 3705." + + ::= { mib-2 107 } + +HCPerfValidIntervals ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of near end intervals for which data was + + + + collected. The value of an object with an + HCPerfValidIntervals syntax will be 96 unless the + measurement was (re-)started within the last 1440 minutes, + in which case the value will be the number of complete 15 + minute intervals for which the agent has at least some data. + In certain cases (e.g., in the case where the agent is a + proxy) it is possible that some intervals are unavailable. + In this case, this interval is the maximum interval number + for which data is available." + SYNTAX Integer32 (0..96) + +HCPerfInvalidIntervals ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of near end intervals for which no data is + available. The value of an object with an + HCPerfInvalidIntervals syntax will typically be zero except + in cases where the data for some intervals are not available + (e.g., in proxy situations)." + SYNTAX Integer32 (0..96) + +HCPerfTimeElapsed ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the beginning + of the current measurement period. If, for some reason, + such as an adjustment in the system's time-of-day clock or + the addition of a leap second, the duration of the current + interval exceeds the maximum value, the agent will return + the maximum value. + + For 15 minute intervals, the range is limited to (0..899). + For 24 hour intervals, the range is limited to (0..86399)." + SYNTAX Integer32 (0..86399) + +HCPerfIntervalThreshold ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines a range of values that may be set + in a fault threshold alarm control. As the number of + seconds in a 15-minute interval numbers at most 900, + objects of this type may have a range of 0...900, where the + value of 0 disables the alarm." + SYNTAX Unsigned32 (0..900) + +HCPerfCurrentCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "A gauge associated with a performance measurement in a + current 15 minute measurement interval. The value of an + object with an HCPerfCurrentCount syntax starts from zero + and is increased when associated events occur, until the + end of the 15 minute interval. At that time the value of + the gauge is stored in the first 15 minute history + interval, and the gauge is restarted at zero. In the case + where the agent has no valid data available for the + current interval, the corresponding object instance is not + available and upon a retrieval request a corresponding + error message shall be returned to indicate that this + instance does not exist. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfCurrentCount syntax + assumes its maximum value whenever the underlying count + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the object's value also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 + +HCPerfIntervalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A gauge associated with a performance measurement in + a previous 15 minute measurement interval. In the case + where the agent has no valid data available for a + particular interval, the corresponding object instance is + not available and upon a retrieval request a corresponding + error message shall be returned to indicate that this + instance does not exist. + + Let X be an object with HCPerfIntervalCount syntax. + + + + Let Y be an object with HCPerfCurrentCount syntax. + Let Z be an object with HCPerfTotalCount syntax. + Then, in a system supporting a history of n intervals with + X(1) and X(n) the most and least recent intervals + respectively, the following applies at the end of a 15 + minute interval: + + - discard the value of X(n) + - the value of X(i) becomes that of X(i-1) + for n >= i > 1 + - the value of X(1) becomes that of Y. + - the value of Z, if supported, is adjusted. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfIntervalCount syntax + assumes its maximum value whenever the underlying count + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the value of the object also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 + +HCPerfTotalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A gauge representing the aggregate of previous valid 15 + minute measurement intervals. Intervals for which no + valid data was available are not counted. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfTotalCount syntax + assumes its maximum value whenever the underlying count + + + + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the object's value also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 +END diff --git a/mibs/ietf/HC-RMON-MIB b/mibs/ietf/HC-RMON-MIB new file mode 100644 index 0000000..c2d9d2e --- /dev/null +++ b/mibs/ietf/HC-RMON-MIB @@ -0,0 +1,3333 @@ +HC-RMON-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Gauge32, Counter64 FROM SNMPv2-SMI + RowStatus, TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + rmon, OwnerString, statistics, history, hosts, hostTopN, matrix, + etherStatsIndex, etherHistoryIndex, etherHistorySampleIndex, + hostIndex, hostAddress, hostTimeIndex, hostTimeCreationOrder, + hostTopNReport, hostTopNIndex, + matrixSDIndex, matrixSDSourceAddress, matrixSDDestAddress, + matrixDSIndex, matrixDSDestAddress, matrixDSSourceAddress, + capture, captureBufferControlIndex, captureBufferIndex + FROM RMON-MIB + protocolDirLocalIndex, protocolDistControlIndex, + protocolDist, hlHostControlIndex, + nlHost, nlHostTimeMark, nlHostAddress, + hlMatrixControlIndex, nlMatrix, + nlMatrixSDTimeMark, nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + nlMatrixDSTimeMark, nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + nlMatrixTopNControlIndex, nlMatrixTopNIndex, + alHost, alHostTimeMark, + alMatrix, alMatrixSDTimeMark, alMatrixDSTimeMark, + alMatrixTopNControlIndex, alMatrixTopNIndex, + + + + usrHistory, usrHistoryControlIndex, + usrHistorySampleIndex, usrHistoryObjectIndex, + rmonConformance, ZeroBasedCounter32, probeConfig + FROM RMON2-MIB + ZeroBasedCounter64, CounterBasedGauge64 + FROM HCNUM-TC; + +-- Remote Network Monitoring MIB + +hcRMON MODULE-IDENTITY + LAST-UPDATED "200205080000Z" -- May 08, 2002 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Andy Bierman + WG Chair + abierman@cisco.com + + RMONMIB WG Mailing List + rmonmib@ietf.org + http://www.ietf.org/mailman/listinfo/rmonmib" + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + augments the original RMON MIB as specified in + RFC 2819 and RFC 1513 and RMON-2 MIB as specified in + RFC 2021." + + REVISION "200205080000Z" -- May 08, 2002 + DESCRIPTION + "The original version of this MIB, published as RFC3273." + ::= { rmonConformance 5 } + +-- { rmon 1 } through { rmon 20 } are defined in RMON [RFC 2819] and +-- the Token Ring RMON MIB [RFC 1513] and the RMON-2 MIB [RFC 2021]. + +mediaIndependentStats OBJECT IDENTIFIER ::= { rmon 21 } + +mediaIndependentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MediaIndependentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Media independent statistics for promiscuous monitoring of + any media. + + The following table defines media independent statistics that + provide information for full and/or half-duplex links as well + as high capacity links. + + For half-duplex links, or full-duplex-capable links operating + in half-duplex mode, the mediaIndependentIn* objects shall be + used and the mediaIndependentOut* objects shall not increment. + + For full-duplex links, the mediaIndependentOut* objects shall + be present and shall increment. Whenever possible, the probe + should count packets moving away from the closest terminating + equipment as output packets. Failing that, the probe should + count packets moving away from the DTE as output packets." + ::= { mediaIndependentStats 1 } + +mediaIndependentEntry OBJECT-TYPE + SYNTAX MediaIndependentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Media independent statistics for promiscuous monitoring of + any media." + INDEX { mediaIndependentIndex } + ::= { mediaIndependentTable 1 } + +MediaIndependentEntry ::= SEQUENCE { + + mediaIndependentIndex Integer32, + mediaIndependentDataSource OBJECT IDENTIFIER, + mediaIndependentDropEvents Counter32, + mediaIndependentDroppedFrames Counter32, + mediaIndependentInPkts Counter32, + mediaIndependentInOverflowPkts Counter32, + mediaIndependentInHighCapacityPkts Counter64, + mediaIndependentOutPkts Counter32, + mediaIndependentOutOverflowPkts Counter32, + mediaIndependentOutHighCapacityPkts Counter64, + mediaIndependentInOctets Counter32, + mediaIndependentInOverflowOctets Counter32, + mediaIndependentInHighCapacityOctets Counter64, + mediaIndependentOutOctets Counter32, + mediaIndependentOutOverflowOctets Counter32, + mediaIndependentOutHighCapacityOctets Counter64, + mediaIndependentInNUCastPkts Counter32, + mediaIndependentInNUCastOverflowPkts Counter32, + + + + mediaIndependentInNUCastHighCapacityPkts Counter64, + mediaIndependentOutNUCastPkts Counter32, + mediaIndependentOutNUCastOverflowPkts Counter32, + mediaIndependentOutNUCastHighCapacityPkts Counter64, + mediaIndependentInErrors Counter32, + mediaIndependentOutErrors Counter32, + mediaIndependentInputSpeed Gauge32, + mediaIndependentOutputSpeed Gauge32, + mediaIndependentDuplexMode INTEGER, + mediaIndependentDuplexChanges Counter32, + mediaIndependentDuplexLastChange TimeStamp, + mediaIndependentOwner OwnerString, + mediaIndependentStatus RowStatus +} + +mediaIndependentIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object uniquely identifies this + mediaIndependent entry." + ::= { mediaIndependentEntry 1 } + +mediaIndependentDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data that + this mediaIndependent entry is configured to analyze. This + source can be any interface on this device. + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in RFC 1213 and RFC 2233 [16,17], for + the desired interface. For example, if an entry + were to receive data from interface #1, this object + would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + An agent may or may not be able to tell if + fundamental changes to the media of the interface + have occurred and necessitate a deletion of + this entry. For example, a hot-pluggable ethernet + card could be pulled out and replaced by a + + + + token-ring card. In such a case, if the agent has + such knowledge of the change, it is recommended that + it delete this entry. + + This object may not be modified if the associated + mediaIndependentStatus object is equal to active(1)." + ::= { mediaIndependentEntry 2 } + +mediaIndependentDropEvents OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which packets + were dropped by the probe due to lack of resources. + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected." + ::= { mediaIndependentEntry 3 } + +mediaIndependentDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the + mediaIndependentDropEvents, but for which the probe chose not + to count for this entry for whatever reason. Most often, this + event occurs when the probe is out of some resources and + decides to shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { mediaIndependentEntry 4 } + +mediaIndependentInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + + + + broadcast packets, and multicast packets) received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 5 } + +mediaIndependentInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentInPkts counter has overflowed." + ::= { mediaIndependentEntry 6 } + +mediaIndependentInHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 7 } + +mediaIndependentOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received on a + full-duplex link in the direction of the network." + ::= { mediaIndependentEntry 8 } + +mediaIndependentOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutPkts counter has overflowed." + ::= { mediaIndependentEntry 9 } + + + + +mediaIndependentOutHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received on a + full-duplex link in the direction of the network." + ::= { mediaIndependentEntry 10 } + +mediaIndependentInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received (excluding framing bits but including FCS + octets) on a half-duplex link or on the inbound connection of + a full-duplex link." + ::= { mediaIndependentEntry 11 } + +mediaIndependentInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentInOctets counter has overflowed." + ::= { mediaIndependentEntry 12 } + +mediaIndependentInHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received (excluding framing bits but + including FCS octets) on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 13 } + +mediaIndependentOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received on a full-duplex link in the direction of + the network (excluding framing bits but including FCS + octets)." + ::= { mediaIndependentEntry 14 } + +mediaIndependentOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutOctets counter has overflowed." + ::= { mediaIndependentEntry 15 } + +mediaIndependentOutHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received on a full-duplex link in the direction of + the network (excluding framing bits but including FCS + octets)." + ::= { mediaIndependentEntry 16 } + +mediaIndependentInNUCastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 17 } + +mediaIndependentInNUCastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times the associated + mediaIndependentInNUCastPkts counter has overflowed." + ::= { mediaIndependentEntry 18 } + +mediaIndependentInNUCastHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 19 } + +mediaIndependentOutNUCastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a full-duplex link in the direction of + the network." + ::= { mediaIndependentEntry 20 } + +mediaIndependentOutNUCastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutNUCastPkts counter has overflowed." + ::= { mediaIndependentEntry 21 } + +mediaIndependentOutNUCastHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets) + received on a full-duplex link in the direction of the + network." + ::= { mediaIndependentEntry 22 } + +mediaIndependentInErrors OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of bad packets received on a + half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 23 } + +mediaIndependentOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of bad packets received on a full-duplex + link in the direction of the network." + ::= { mediaIndependentEntry 24 } + +mediaIndependentInputSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kilobits per Second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal maximum speed in kilobits per second of this + half-duplex link or on the inbound connection of this + full-duplex link. If the speed is unknown or there is no fixed + maximum (e.g. a compressed link), this value shall be zero." + ::= { mediaIndependentEntry 25 } + +mediaIndependentOutputSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kilobits per Second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal maximum speed in kilobits per second of this + full-duplex link in the direction of the network. If the speed + is unknown, the link is half-duplex, or there is no fixed + maximum (e.g. a compressed link), this value shall be zero." + ::= { mediaIndependentEntry 26 } + +mediaIndependentDuplexMode OBJECT-TYPE + SYNTAX INTEGER { + halfduplex(1), + fullduplex(2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current mode of this link. + + Note that if the link has full-duplex capabilities but + is operating in half-duplex mode, this value will be + halfduplex(1)." + ::= { mediaIndependentEntry 27 } + +mediaIndependentDuplexChanges OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this link has changed from full-duplex + mode to half-duplex mode or from half-duplex mode to + full-duplex mode." + ::= { mediaIndependentEntry 28 } + +mediaIndependentDuplexLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the duplex status + of this link last changed." + ::= { mediaIndependentEntry 29 } + +mediaIndependentOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { mediaIndependentEntry 30 } + +mediaIndependentStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this media independent statistics entry." + ::= { mediaIndependentEntry 31 } + + + + +-- High Capacity extensions for the etherStatsTable + +etherStatsHighCapacityTable OBJECT-TYPE + + SYNTAX SEQUENCE OF EtherStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherStatsTable." + ::= { statistics 7 } + +etherStatsHighCapacityEntry OBJECT-TYPE + SYNTAX EtherStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherStatsEntry. These objects will be created by the agent + for all etherStatsEntries it deems appropriate." + INDEX { etherStatsIndex } + ::= { etherStatsHighCapacityTable 1 } + +EtherStatsHighCapacityEntry ::= SEQUENCE { + etherStatsHighCapacityOverflowPkts Counter32, + etherStatsHighCapacityPkts Counter64, + etherStatsHighCapacityOverflowOctets Counter32, + etherStatsHighCapacityOctets Counter64, + etherStatsHighCapacityOverflowPkts64Octets Counter32, + etherStatsHighCapacityPkts64Octets Counter64, + etherStatsHighCapacityOverflowPkts65to127Octets Counter32, + etherStatsHighCapacityPkts65to127Octets Counter64, + etherStatsHighCapacityOverflowPkts128to255Octets Counter32, + etherStatsHighCapacityPkts128to255Octets Counter64, + etherStatsHighCapacityOverflowPkts256to511Octets Counter32, + etherStatsHighCapacityPkts256to511Octets Counter64, + etherStatsHighCapacityOverflowPkts512to1023Octets Counter32, + etherStatsHighCapacityPkts512to1023Octets Counter64, + etherStatsHighCapacityOverflowPkts1024to1518Octets Counter32, + etherStatsHighCapacityPkts1024to1518Octets Counter64 +} + +etherStatsHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times the associated etherStatsPkts + counter has overflowed." + ::= { etherStatsHighCapacityEntry 1 } + +etherStatsHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received." + ::= { etherStatsHighCapacityEntry 2 } + +etherStatsHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsOctets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 3 } + +etherStatsHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets). + + If the network is half-duplex Fast Ethernet, this + object can be used as a reasonable estimate of + utilization. If greater precision is desired, the + etherStatsHighCapacityPkts and + etherStatsHighCapacityOctets objects should be sampled + before and after a common interval. The differences + in the sampled values are Pkts and Octets, + respectively, and the number of seconds in the + interval is Interval. These values + are used to calculate the Utilization as follows: + + + + + + + Pkts * (.96 + .64) + (Octets * .08) + Utilization = ------------------------------------- + Interval * 10,000 + + The result of this equation is the value Utilization + which is the percent utilization of the ethernet + segment on a scale of 0 to 100 percent. + + This table is not appropriate for monitoring full-duplex + ethernets. If the network is a full-duplex ethernet and the + mediaIndependentTable is monitoring that network, the + utilization can be calculated as follows: + + 1) Determine the utilization of the inbound path by using + the appropriate equation (for ethernet or fast ethernet) + to determine the utilization, substituting + mediaIndependentInPkts for etherStatsHighCapacityPkts, and + mediaIndependentInOctets for etherStatsHighCapacityOctets. + Call the resulting utilization inUtilization. + + 2) Determine the utilization of the outbound path by using + the same equation to determine the utilization, substituting + mediaIndependentOutPkts for etherStatsHighCapacityPkts, and + mediaIndependentOutOctets for etherStatsHighCapacityOctets. + Call the resulting utilization outUtilization. + + 3) The utilization is the maximum of inUtilization and + outUtilization. This metric shows the amount of percentage + of bandwidth that is left before congestion will be + experienced on the link." + ::= { etherStatsHighCapacityEntry 4 } + +etherStatsHighCapacityOverflowPkts64Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts64Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 5 } + +etherStatsHighCapacityPkts64Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of packets (including bad + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 6 } + +etherStatsHighCapacityOverflowPkts65to127Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts65to127Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 7 } + +etherStatsHighCapacityPkts65to127Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 8 } + +etherStatsHighCapacityOverflowPkts128to255Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts128to255Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 9 } + +etherStatsHighCapacityPkts128to255Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 10 } + + + +etherStatsHighCapacityOverflowPkts256to511Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts256to511Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 11 } + +etherStatsHighCapacityPkts256to511Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 12 } + +etherStatsHighCapacityOverflowPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + etherStatsPkts512to1023Octets counter has overflowed." + ::= { etherStatsHighCapacityEntry 13 } + +etherStatsHighCapacityPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 14 } + +etherStatsHighCapacityOverflowPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times the associated + etherStatsPkts1024to1518Octets counter has overflowed." + ::= { etherStatsHighCapacityEntry 15 } + +etherStatsHighCapacityPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 16 } + +-- High Capacity extensions for the etherHistoryTable + +etherHistoryHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherHistoryTable." + ::= { history 6 } + +etherHistoryHighCapacityEntry OBJECT-TYPE + SYNTAX EtherHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherHistoryEntry. These objects will be created by the agent + for all etherHistoryEntries associated with whichever + historyControlEntries it deems appropriate. (i.e., either all + etherHistoryHighCapacityEntries associated with a particular + historyControlEntry will be created, or none of them will + be.)" + INDEX { etherHistoryIndex, etherHistorySampleIndex } + ::= { etherHistoryHighCapacityTable 1 } + +EtherHistoryHighCapacityEntry ::= SEQUENCE { + etherHistoryHighCapacityOverflowPkts Gauge32, + etherHistoryHighCapacityPkts CounterBasedGauge64, + etherHistoryHighCapacityOverflowOctets Gauge32, + + + + etherHistoryHighCapacityOctets CounterBasedGauge64 +} + +etherHistoryHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherHistoryPkts + Gauge overflowed during this sampling interval." + ::= { etherHistoryHighCapacityEntry 1 } + +etherHistoryHighCapacityPkts OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received during + this sampling interval." + ::= { etherHistoryHighCapacityEntry 2 } + +etherHistoryHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherHistoryOctets + counter has overflowed during this sampling interval." + ::= { etherHistoryHighCapacityEntry 3 } + +etherHistoryHighCapacityOctets OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets) during this sampling interval." + ::= { etherHistoryHighCapacityEntry 4 } + +-- High Capacity Extensions for the hostTable + + + + +hostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTable." + ::= { hosts 5 } + +hostHighCapacityEntry OBJECT-TYPE + SYNTAX HostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostEntry. These objects will be created by the agent + for all hostEntries associated with whichever + hostControlEntries it deems appropriate. (i.e., either all + hostHighCapacityEntries associated with a particular + hostControlEntry will be created, or none of them will + be.)" + INDEX { hostIndex, hostAddress } + ::= { hostHighCapacityTable 1 } + +HostHighCapacityEntry ::= SEQUENCE { + hostHighCapacityInOverflowPkts Counter32, + hostHighCapacityInPkts Counter64, + hostHighCapacityOutOverflowPkts Counter32, + hostHighCapacityOutPkts Counter64, + hostHighCapacityInOverflowOctets Counter32, + hostHighCapacityInOctets Counter64, + hostHighCapacityOutOverflowOctets Counter32, + hostHighCapacityOutOctets Counter64 +} + +hostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostInPkts + counter has overflowed." + ::= { hostHighCapacityEntry 1 } + +hostHighCapacityInPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to + this address since it was added to the + hostHighCapacityTable." + ::= { hostHighCapacityEntry 2 } + +hostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostOutPkts + counter has overflowed." + ::= { hostHighCapacityEntry 3 } + +hostHighCapacityOutPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the + hostHighCapacityTable." + ::= { hostHighCapacityEntry 4 } + +hostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostInOctets + counter has overflowed." + ::= { hostHighCapacityEntry 5 } + +hostHighCapacityInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostHighCapacityTable (excluding + framing bits but including FCS octets), except for + + + + those octets in bad packets." + ::= { hostHighCapacityEntry 6 } + +hostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostOutOctets + counter has overflowed." + ::= { hostHighCapacityEntry 7 } + +hostHighCapacityOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the hostHighCapacityTable (excluding + framing bits but including FCS octets), including + those octets in bad packets." + ::= { hostHighCapacityEntry 8 } + +-- High Capacity extensions for the hostTimeTable + +hostTimeHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTimeTable." + ::= { hosts 6 } + +hostTimeHighCapacityEntry OBJECT-TYPE + SYNTAX HostTimeHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTimeEntry. These objects will be created by the agent + for all hostTimeEntries associated with whichever + hostControlEntries it deems appropriate. (i.e., either all + hostTimeHighCapacityEntries associated with a particular + hostControlEntry will be created, or none of them will + be.)" + + + + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeHighCapacityTable 1 } + +HostTimeHighCapacityEntry ::= SEQUENCE { + hostTimeHighCapacityInOverflowPkts Counter32, + hostTimeHighCapacityInPkts Counter64, + hostTimeHighCapacityOutOverflowPkts Counter32, + hostTimeHighCapacityOutPkts Counter64, + hostTimeHighCapacityInOverflowOctets Counter32, + hostTimeHighCapacityInOctets Counter64, + hostTimeHighCapacityOutOverflowOctets Counter32, + hostTimeHighCapacityOutOctets Counter64 +} + +hostTimeHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeInPkts + counter has overflowed." + ::= { hostTimeHighCapacityEntry 1 } + +hostTimeHighCapacityInPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this address + since it was added to the hostTimeHighCapacityTable." + ::= { hostTimeHighCapacityEntry 2 } + +hostTimeHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeOutPkts + counter has overflowed." + ::= { hostTimeHighCapacityEntry 3 } + +hostTimeHighCapacityOutPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the + hostTimeHighCapacityTable." + ::= { hostTimeHighCapacityEntry 4 } + +hostTimeHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeInOctets + counter has overflowed." + ::= { hostTimeHighCapacityEntry 5 } + +hostTimeHighCapacityInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTimeHighCapacityTable + (excluding framing bits but including FCS octets), + except for those octets in bad packets." + ::= { hostTimeHighCapacityEntry 6 } + +hostTimeHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeOutOctets + counter has overflowed." + ::= { hostTimeHighCapacityEntry 7 } + +hostTimeHighCapacityOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + + + + octets in bad packets." + ::= { hostTimeHighCapacityEntry 8 } + +-- High Capacity Extensions for the hostTopNTable + +hostTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTopNTable when hostTopNRateBase specifies a High Capacity + TopN Report." + ::= { hostTopN 3 } + +hostTopNHighCapacityEntry OBJECT-TYPE + SYNTAX HostTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTopNEntry when hostTopNRateBase specifies a High Capacity + TopN Report. These objects will be created by the agent + for all hostTopNEntries associated with whichever + hostTopNControlEntries have a hostTopNRateBase that specify + a high capacity report." + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNHighCapacityTable 1 } + +HostTopNHighCapacityEntry ::= SEQUENCE { + hostTopNHighCapacityAddress OCTET STRING, + hostTopNHighCapacityBaseRate Gauge32, + hostTopNHighCapacityOverflowRate Gauge32, + hostTopNHighCapacityRate CounterBasedGauge64 +} + +hostTopNHighCapacityAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTopNHighCapacityEntry 1 } + +hostTopNHighCapacityBaseRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval, modulo 2^32. The + selected variable is this host's instance of the + object selected by hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 2 } + +hostTopNHighCapacityOverflowRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval, divided by 2^32, truncating + fractions (i.e., X DIV 2^32). The selected variable is + this host's instance of the object selected by + hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 3 } + +hostTopNHighCapacityRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 4 } + +-- High Capacity Extensions for the matrixSDTable + +matrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixSDTable." + ::= { matrix 5 } + +matrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX MatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixSDEntry. These objects will be created by the agent + + + + for all matrixSDEntries associated with whichever + matrixControlEntries it deems appropriate. (i.e., either all + matrixSDHighCapacityEntries associated with a particular + matrixControlEntry will be created, or none of them will + be.)" + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDHighCapacityTable 1 } + +MatrixSDHighCapacityEntry ::= SEQUENCE { + matrixSDHighCapacityOverflowPkts Counter32, + matrixSDHighCapacityPkts Counter64, + matrixSDHighCapacityOverflowOctets Counter32, + matrixSDHighCapacityOctets Counter64 +} + +matrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixSDPkts + counter has overflowed." + ::= { matrixSDHighCapacityEntry 1 } + +matrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes bad packets)." + ::= { matrixSDHighCapacityEntry 2 } + +matrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixSDOctets + counter has overflowed." + ::= { matrixSDHighCapacityEntry 3 } + +matrixSDHighCapacityOctets OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the matrixDSTable + +matrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixDSTable." + ::= { matrix 6 } + +matrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX MatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixDSEntry. These objects will be created by the agent + for all matrixDSEntries associated with whichever + matrixControlEntries it deems appropriate. (i.e., either all + matrixDSHighCapacityEntries associated with a particular + matrixControlEntry will be created, or none of them will + be.)" + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSHighCapacityTable 1 } + +MatrixDSHighCapacityEntry ::= SEQUENCE { + matrixDSHighCapacityOverflowPkts Counter32, + matrixDSHighCapacityPkts Counter64, + matrixDSHighCapacityOverflowOctets Counter32, + matrixDSHighCapacityOctets Counter64 +} + +matrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixDSPkts + counter has overflowed." + ::= { matrixDSHighCapacityEntry 1 } + +matrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes bad packets)." + ::= { matrixDSHighCapacityEntry 2 } + +matrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixDSOctets + counter has overflowed." + ::= { matrixDSHighCapacityEntry 3 } + +matrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSHighCapacityEntry 4 } + +-- High Capacity extensions for the captureBufferTable + +captureBufferHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + + + + captureBufferTable." + ::= { capture 3 } + +captureBufferHighCapacityEntry OBJECT-TYPE + SYNTAX CaptureBufferHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + captureBufferEntry. These objects will be created by the agent + for all captureBufferEntries associated with whichever + bufferControlEntries it deems appropriate. (i.e., either all + captureBufferHighCapacityEntries associated with a particular + bufferControlEntry will be created, or none of them will + be.)" + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferHighCapacityTable 1 } + +CaptureBufferHighCapacityEntry ::= SEQUENCE { + captureBufferPacketHighCapacityTime Integer32 +} + +captureBufferPacketHighCapacityTime OBJECT-TYPE + SYNTAX Integer32 (0..999999) + UNITS "nanoseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nanoseconds that had passed since this capture + buffer was first turned on when this packet was captured, + modulo 10^6. + + This object is used in conjunction with the + captureBufferPacketTime object. This object returns the + number of nano-seconds to be added to to number of + milli-seconds obtained from the captureBufferPacketTime + object, to obtain more accurate inter packet arrival time." + ::= { captureBufferHighCapacityEntry 1 } + +-- High Capacity extensions for the protocolDistStatsTable + +protocolDistStatsHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + protocolDistStatsTable." + + + + ::= { protocolDist 3 } + +protocolDistStatsHighCapacityEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + protocolDistStatsTable. These objects will be created by the + agent for all protocolDistStatsEntries associated with + whichever protocolDistControlEntries it deems appropriate. + (i.e., either all protocolDistStatsHighCapacityEntries + associated with a particular protocolDistControlEntry will be + created, or none of them will be.)" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsHighCapacityTable 1 } + +ProtocolDistStatsHighCapacityEntry ::= SEQUENCE { + protocolDistStatsHighCapacityOverflowPkts ZeroBasedCounter32, + protocolDistStatsHighCapacityPkts ZeroBasedCounter64, + protocolDistStatsHighCapacityOverflowOctets ZeroBasedCounter32, + protocolDistStatsHighCapacityOctets ZeroBasedCounter64 +} + +protocolDistStatsHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated protocolDistStatsPkts + counter has overflowed." + ::= { protocolDistStatsHighCapacityEntry 1 } + +protocolDistStatsHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors received of this + protocol type. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { protocolDistStatsHighCapacityEntry 2 } + +protocolDistStatsHighCapacityOverflowOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated protocolDistStatsOctets + counter has overflowed." + ::= { protocolDistStatsHighCapacityEntry 3 } + +protocolDistStatsHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets received of this protocol + type since it was added to the protocolDistStatsTable + (excluding framing bits but including FCS octets), except for + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { protocolDistStatsHighCapacityEntry 4 } + +-- High Capacity extensions for the nlHostTable. + +nlHostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlHostTable." + ::= { nlHost 3 } + +nlHostHighCapacityEntry OBJECT-TYPE + SYNTAX NlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlHostEntry. These objects will be created by the agent + for all nlHostEntries associated with whichever + hlHostControlEntries it deems appropriate. (i.e., either all + nlHostHighCapacityEntries associated with a particular + hlHostControlEntry will be created, or none of them will + be.)" + + + + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostHighCapacityTable 1 } + +NlHostHighCapacityEntry ::= SEQUENCE { + nlHostHighCapacityInOverflowPkts ZeroBasedCounter32, + nlHostHighCapacityInPkts ZeroBasedCounter64, + nlHostHighCapacityOutOverflowPkts ZeroBasedCounter32, + nlHostHighCapacityOutPkts ZeroBasedCounter64, + nlHostHighCapacityInOverflowOctets ZeroBasedCounter32, + nlHostHighCapacityInOctets ZeroBasedCounter64, + nlHostHighCapacityOutOverflowOctets ZeroBasedCounter32, + nlHostHighCapacityOutOctets ZeroBasedCounter64 +} + +nlHostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostInPkts + counter has overflowed." + ::= { nlHostHighCapacityEntry 1 } + +nlHostHighCapacityInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the nlHostHighCapacityTable. + Note that this is the number of link-layer packets, so if a + single network-layer packet is fragmented into several + link-layer frames, this counter is incremented several times." + ::= { nlHostHighCapacityEntry 2 } + +nlHostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostOutPkts + counter has overflowed." + ::= { nlHostHighCapacityEntry 3 } + + + + +nlHostHighCapacityOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostHighCapacityTable. + Note that this is the number of link-layer packets, so if a + single network-layer packet is fragmented into several + link-layer frames, this counter is incremented several times." + ::= { nlHostHighCapacityEntry 4 } + +nlHostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostInOctets + counter has overflowed." + ::= { nlHostHighCapacityEntry 5 } + +nlHostHighCapacityInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostHighCapacityTable + (excluding framing bits but including FCS octets), + excluding those octets in packets that contained + errors. + + Note this doesn't count just those octets in the + particular protocol frames, but includes the entire + packet that contained the protocol." + ::= { nlHostHighCapacityEntry 6 } + +nlHostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostOutOctets + counter has overflowed." + + + + ::= { nlHostHighCapacityEntry 7 } + +nlHostHighCapacityOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostHighCapacityTable + (excluding framing bits but including FCS octets), + excluding those octets in packets that contained + errors. + + Note this doesn't count just those octets in the + particular protocol frames, but includes the entire + packet that contained the protocol." + ::= { nlHostHighCapacityEntry 8 } + +-- High Capacity extensions for the nlMatrixTable + +nlMatrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTable." + ::= { nlMatrix 6 } + +nlMatrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixEntry. These objects will be created by the agent + for all nlMatrixSDEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + nlMatrixSDHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress } + ::= { nlMatrixSDHighCapacityTable 1 } + +NlMatrixSDHighCapacityEntry ::= SEQUENCE { + + + + nlMatrixSDHighCapacityOverflowPkts ZeroBasedCounter32, + nlMatrixSDHighCapacityPkts ZeroBasedCounter64, + nlMatrixSDHighCapacityOverflowOctets ZeroBasedCounter32, + nlMatrixSDHighCapacityOctets ZeroBasedCounter64 +} + +nlMatrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixSDPkts + counter has overflowed." + ::= { nlMatrixSDHighCapacityEntry 1 } + +nlMatrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDHighCapacityTable. Note that this is + the number of link-layer packets, so if a single network-layer + packet is fragmented into several link-layer frames, this + counter is incremented several times." + ::= { nlMatrixSDHighCapacityEntry 2 } + +nlMatrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixSDOctets + counter has overflowed." + ::= { nlMatrixSDHighCapacityEntry 3 } + +nlMatrixSDHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + + + + nlMatrixSDHighCapacityTable (excluding framing bits but + including FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the nlMatrixDSTable + +nlMatrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixDSTable." + ::= { nlMatrix 7 } + +nlMatrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixDSEntry. These objects will be created by the agent + for all nlMatrixDSEntries associated with whichever + hlmatrixControlEntries it deems appropriate. (i.e., either all + nlMatrixDSHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress } + ::= { nlMatrixDSHighCapacityTable 1 } + +NlMatrixDSHighCapacityEntry ::= SEQUENCE { + nlMatrixDSHighCapacityOverflowPkts ZeroBasedCounter32, + nlMatrixDSHighCapacityPkts ZeroBasedCounter64, + nlMatrixDSHighCapacityOverflowOctets ZeroBasedCounter32, + nlMatrixDSHighCapacityOctets ZeroBasedCounter64 +} + +nlMatrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixDSPkts + counter has overflowed." + ::= { nlMatrixDSHighCapacityEntry 1 } + +nlMatrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSHighCapacityTable. Note that this is + the number of link-layer packets, so if a single network-layer + packet is fragmented into several link-layer frames, this + counter is incremented several times." + ::= { nlMatrixDSHighCapacityEntry 2 } + +nlMatrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixDSOctets + counter has overflowed." + ::= { nlMatrixDSHighCapacityEntry 3 } + +nlMatrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSHighCapacityTable (excluding framing bits but + including FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSHighCapacityEntry 4 } + +-- High Capacity extensions for the nlMatrixTopNTable + + + +nlMatrixTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTopNTable when nlMatrixTopNControlRateBase specifies + a High Capacity TopN Report." + ::= { nlMatrix 8 } + +nlMatrixTopNHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTopNEntry when nlMatrixTopNControlRateBase specifies + a High Capacity TopN Report. These objects will be created by + the agent for all nlMatrixTopNEntries associated with whichever + nlMatrixTopNControlEntries have a nlMatrixTopNControlRateBase + that specify a high capacity report." + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNHighCapacityTable 1 } + +NlMatrixTopNHighCapacityEntry ::= SEQUENCE { + nlMatrixTopNHighCapacityProtocolDirLocalIndex Integer32, + nlMatrixTopNHighCapacitySourceAddress OCTET STRING, + nlMatrixTopNHighCapacityDestAddress OCTET STRING, + nlMatrixTopNHighCapacityBasePktRate Gauge32, + nlMatrixTopNHighCapacityOverflowPktRate Gauge32, + nlMatrixTopNHighCapacityPktRate CounterBasedGauge64, + nlMatrixTopNHighCapacityReverseBasePktRate Gauge32, + nlMatrixTopNHighCapacityReverseOverflowPktRate Gauge32, + nlMatrixTopNHighCapacityReversePktRate CounterBasedGauge64, + nlMatrixTopNHighCapacityBaseOctetRate Gauge32, + nlMatrixTopNHighCapacityOverflowOctetRate Gauge32, + nlMatrixTopNHighCapacityOctetRate CounterBasedGauge64, + nlMatrixTopNHighCapacityReverseBaseOctetRate Gauge32, + nlMatrixTopNHighCapacityReverseOverflowOctetRate Gauge32, + nlMatrixTopNHighCapacityReverseOctetRate CounterBasedGauge64 +} + +nlMatrixTopNHighCapacityProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network layer protocol of + + + + this entry's network address." + ::= { nlMatrixTopNHighCapacityEntry 1 } + +nlMatrixTopNHighCapacitySourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixTopNHighCapacityEntry 2 } + +nlMatrixTopNHighCapacityDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixTopNHighCapacityEntry 3 } + +nlMatrixTopNHighCapacityBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, + modulo 2^32, counted using the rules for counting the + + + + nlMatrixSDPkts object." + ::= { nlMatrixTopNHighCapacityEntry 4 } + +nlMatrixTopNHighCapacityOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + nlMatrixSDPkts object." + ::= { nlMatrixTopNHighCapacityEntry 5 } + +nlMatrixTopNHighCapacityPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host to the + destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNHighCapacityPkts, this variable will be + used to sort this report." + ::= { nlMatrixTopNHighCapacityEntry 6 } + +nlMatrixTopNHighCapacityReverseBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, modulo 2^32, counted + using the rules for counting the nlMatrixSDPkts object (note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + + + + ::= { nlMatrixTopNHighCapacityEntry 7 } + +nlMatrixTopNHighCapacityReverseOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, divided by 2^32, + truncating fractions (i.e., X DIV 2^32), and counted + using the rules for counting the nlMatrixSDPkts object (note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 8 } + +nlMatrixTopNHighCapacityReversePktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object (note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 9 } + +nlMatrixTopNHighCapacityBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of octets seen from the source host to the + destination host during this sampling interval, modulo 2^32, + counted using the rules for counting the nlMatrixSDOctets + object." + ::= { nlMatrixTopNHighCapacityEntry 10 } + +nlMatrixTopNHighCapacityOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + nlMatrixSDOctets object." + ::= { nlMatrixTopNHighCapacityEntry 11 } + +nlMatrixTopNHighCapacityOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, + counted using the rules for counting the + nlMatrixSDOctets object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNHighCapacityOctets, this variable will be used + to sort this report." + ::= { nlMatrixTopNHighCapacityEntry 12 } + +nlMatrixTopNHighCapacityReverseBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, modulo 2^32, counted + using the rules for counting the nlMatrixSDOctets object (note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 13 } + +nlMatrixTopNHighCapacityReverseOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, divided by 2^32, + truncating fractions (i.e., X DIV 2^32), and counted + using the rules for counting the nlMatrixSDOctets object (note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 14 } + +nlMatrixTopNHighCapacityReverseOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object (note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 15 } + +-- High Capacity extensions for the alHostTable + + + +alHostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alHostTable." + ::= { alHost 2 } + +alHostHighCapacityEntry OBJECT-TYPE + SYNTAX AlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alHostEntry. These objects will be created by the agent + for all alHostEntries associated with whichever + hlHostControlEntries it deems appropriate. (i.e., either all + alHostHighCapacityEntries associated with a particular + hlHostControlEntry will be created, or none of them will + be.)" + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostHighCapacityTable 1 } + +AlHostHighCapacityEntry ::= SEQUENCE { + alHostHighCapacityInOverflowPkts ZeroBasedCounter32, + alHostHighCapacityInPkts ZeroBasedCounter64, + alHostHighCapacityOutOverflowPkts ZeroBasedCounter32, + alHostHighCapacityOutPkts ZeroBasedCounter64, + alHostHighCapacityInOverflowOctets ZeroBasedCounter32, + alHostHighCapacityInOctets ZeroBasedCounter64, + alHostHighCapacityOutOverflowOctets ZeroBasedCounter32, + alHostHighCapacityOutOctets ZeroBasedCounter64 +} + +alHostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostInPkts + counter has overflowed." + + ::= { alHostHighCapacityEntry 1 } + + + + +alHostHighCapacityInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostHighCapacityTable. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { alHostHighCapacityEntry 2 } + +alHostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostOutPkts + counter has overflowed." + ::= { alHostHighCapacityEntry 3 } + +alHostHighCapacityOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostHighCapacityTable. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { alHostHighCapacityEntry 4 } + +alHostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostInOctets + counter has overflowed." + ::= { alHostHighCapacityEntry 5 } + + + + +alHostHighCapacityInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostHighCapacityTable (excluding framing bits but + including FCS octets), excluding those octets in + packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alHostHighCapacityEntry 6 } + +alHostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostOutOctets + counter has overflowed." + ::= { alHostHighCapacityEntry 7 } + +alHostHighCapacityOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostHighCapacityTable (excluding framing bits but + including FCS octets), excluding those octets in + packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alHostHighCapacityEntry 8 } + +-- High Capacity extensions for the alMatrixSDTable + +alMatrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDHighCapacityEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDTable." + ::= { alMatrix 5 } + +alMatrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDEntry. These objects will be created by the agent + for all alMatrixSDEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + alMatrixSDHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + protocolDirLocalIndex } + ::= { alMatrixSDHighCapacityTable 1 } + +AlMatrixSDHighCapacityEntry ::= SEQUENCE { + alMatrixSDHighCapacityOverflowPkts ZeroBasedCounter32, + alMatrixSDHighCapacityPkts ZeroBasedCounter64, + alMatrixSDHighCapacityOverflowOctets ZeroBasedCounter32, + alMatrixSDHighCapacityOctets ZeroBasedCounter64 +} + +alMatrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixSDPkts + counter has overflowed." + ::= { alMatrixSDHighCapacityEntry 1 } + +alMatrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDHighCapacityTable. + Note that this is the number of link-layer packets, so if a + single network-layer packet is fragmented into several + link-layer frames, this counter is incremented several times." + ::= { alMatrixSDHighCapacityEntry 2 } + +alMatrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixSDOctets + counter has overflowed." + ::= { alMatrixSDHighCapacityEntry 3 } + +alMatrixSDHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDHighCapacityTable + (excluding framing bits but including FCS octets). + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the alMatrixDSTable + +alMatrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixDSTable." + ::= { alMatrix 6 } + +alMatrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDTable. These objects will be created by the agent + for all alMatrixDSEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + alMatrixDSHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + protocolDirLocalIndex } + ::= { alMatrixDSHighCapacityTable 1 } + +AlMatrixDSHighCapacityEntry ::= SEQUENCE { + alMatrixDSHighCapacityOverflowPkts ZeroBasedCounter32, + alMatrixDSHighCapacityPkts ZeroBasedCounter64, + alMatrixDSHighCapacityOverflowOctets ZeroBasedCounter32, + alMatrixDSHighCapacityOctets ZeroBasedCounter64 +} + +alMatrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixDSPkts + counter has overflowed." + ::= { alMatrixDSHighCapacityEntry 1 } + +alMatrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSHighCapacityTable. + Note that this is the number of link-layer packets, so if a + single network-layer packet is fragmented into several + link-layer frames, this counter is incremented several times." + ::= { alMatrixDSHighCapacityEntry 2 } + +alMatrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + + + + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixDSOctets + counter has overflowed." + ::= { alMatrixDSHighCapacityEntry 3 } + +alMatrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSHighCapacityTable + (excluding framing bits but including FCS octets). + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixDSHighCapacityEntry 4 } + +alMatrixTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixTopNTable when alMatrixTopNControlRateBase specifies + a High Capacity TopN Report." + ::= { alMatrix 7 } + +alMatrixTopNHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixTopNEntry when alMatrixTopNControlRateBase specifies + a High Capacity TopN Report. These objects will be created by + the agent for all alMatrixTopNEntries associated with whichever + alMatrixTopNControlEntries have a alMatrixTopNControlRateBase + that specify a high capacity report." + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNHighCapacityTable 1 } + + + + +AlMatrixTopNHighCapacityEntry ::= SEQUENCE { + alMatrixTopNHighCapacityProtocolDirLocalIndex Integer32, + alMatrixTopNHighCapacitySourceAddress OCTET STRING, + alMatrixTopNHighCapacityDestAddress OCTET STRING, + alMatrixTopNHighCapacityAppProtocolDirLocalIndex Integer32, + alMatrixTopNHighCapacityBasePktRate Gauge32, + alMatrixTopNHighCapacityOverflowPktRate Gauge32, + alMatrixTopNHighCapacityPktRate CounterBasedGauge64, + alMatrixTopNHighCapacityReverseBasePktRate Gauge32, + alMatrixTopNHighCapacityReverseOverflowPktRate Gauge32, + alMatrixTopNHighCapacityReversePktRate CounterBasedGauge64, + alMatrixTopNHighCapacityBaseOctetRate Gauge32, + alMatrixTopNHighCapacityOverflowOctetRate Gauge32, + alMatrixTopNHighCapacityOctetRate CounterBasedGauge64, + alMatrixTopNHighCapacityReverseBaseOctetRate Gauge32, + alMatrixTopNHighCapacityReverseOverflowOctetRate Gauge32, + alMatrixTopNHighCapacityReverseOctetRate CounterBasedGauge64 +} + +alMatrixTopNHighCapacityProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network layer protocol of + this entry's network address." + ::= { alMatrixTopNHighCapacityEntry 1 } + +alMatrixTopNHighCapacitySourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { alMatrixTopNHighCapacityEntry 2 } + +alMatrixTopNHighCapacityDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { alMatrixTopNHighCapacityEntry 3 } + +alMatrixTopNHighCapacityAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this entry." + ::= { alMatrixTopNHighCapacityEntry 4 } + +alMatrixTopNHighCapacityBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + source host to the destination host during this sampling + interval, modulo 2^32, counted using the rules for counting + the alMatrixSDPkts object." + ::= { alMatrixTopNHighCapacityEntry 5 } + +alMatrixTopNHighCapacityOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + alMatrixSDPkts object." + ::= { alMatrixTopNHighCapacityEntry 6 } + + + +alMatrixTopNHighCapacityPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the + alMatrixSDPkts object. + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts, alMatrixTopNAllPkts, + alMatrixTopNTerminalsHighCapacityPkts, or + alMatrixTopNAllHighCapacityPkts, this variable will be used + to sort this report." + ::= { alMatrixTopNHighCapacityEntry 7 } + +alMatrixTopNHighCapacityReverseBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, modulo 2^32, counted using the rules for counting + the alMatrixSDPkts object (note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 8 } + +alMatrixTopNHighCapacityReverseOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, divided by 2^32, truncating fractions + (i.e., X DIV 2^32), and counted using the rules for + counting the alMatrixSDPkts object (note that the + corresponding alMatrixSDPkts object selected is the + one whose source address is equal to alMatrixTopNDestAddress + and whose destination address is equal to + alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 9 } + + + +alMatrixTopNHighCapacityReversePktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixSDPkts object (note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 10 } + +alMatrixTopNHighCapacityBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source host + to the destination host during this sampling interval, + modulo 2^32, counted using the rules for counting the + alMatrixSDOctets object." + ::= { alMatrixTopNHighCapacityEntry 11 } + +alMatrixTopNHighCapacityOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source host + to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + alMatrixSDOctets object." + ::= { alMatrixTopNHighCapacityEntry 12 } + +alMatrixTopNHighCapacityOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source host + to the destination host during this sampling interval, + + + + counted using the rules for counting the + alMatrixSDOctets object. + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets, alMatrixTopNAllOctets, + alMatrixTopNTerminalsHighCapacityOctets, or + alMatrixTopNAllHighCapacityOctets, this variable will be used + to sort this report." + ::= { alMatrixTopNHighCapacityEntry 13 } + +alMatrixTopNHighCapacityReverseBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, modulo 2^32, counted using the rules for counting + the alMatrixSDOctets object (note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 14 } + +alMatrixTopNHighCapacityReverseOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, divided by 2^32, truncating fractions (i.e., X DIV + 2^32), and counted using the rules for counting the + alMatrixSDOctets object (note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 15 } + +alMatrixTopNHighCapacityReverseOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + + + + interval, counted using the rules for counting the + alMatrixSDOctets object (note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.)" + ::= { alMatrixTopNHighCapacityEntry 16 } + +usrHistoryHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + usrHistoryTable." + ::= { usrHistory 4 } + +usrHistoryHighCapacityEntry OBJECT-TYPE + SYNTAX UsrHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + usrHistoryEntry. These objects will be created by the agent + for all usrHistoryEntries associated with whichever + usrHistoryControlEntries it deems appropriate. (i.e., either all + usrHistoryHighCapacityEntries associated with a particular + usrHistoryControlEntry will be created, or none of them will + be.)" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryHighCapacityTable 1 } + +UsrHistoryHighCapacityEntry ::= SEQUENCE { + usrHistoryHighCapacityOverflowAbsValue Gauge32, + usrHistoryHighCapacityAbsValue CounterBasedGauge64 +} + +usrHistoryHighCapacityOverflowAbsValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e. unsigned value) of the + user-specified statistic during the last sampling period, + divided by 2^32, truncating fractions (i.e., X DIV 2^32). + The value during the current sampling period is not made + available until the period is completed. + + + + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus should be checked, + and usrHistoryAbsValue adjusted as necessary. + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryHighCapacityEntry 1 } + +usrHistoryHighCapacityAbsValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e. unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus should be checked, + and usrHistoryHighCapacityAbsValue adjusted as necessary. + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryHighCapacityEntry 2 } + +-- +-- High Capacity RMON Probe Capabilities +-- +hcRMONCapabilities OBJECT-TYPE + SYNTAX BITS { + mediaIndependentGroup(0), + etherStatsHighCapacityGroup(1), + etherHistoryHighCapacityGroup(2), + hostHighCapacityGroup(3), + hostTopNHighCapacityGroup(4), + matrixHighCapacityGroup(5), + captureBufferHighCapacityGroup(6), + protocolDistributionHighCapacityGroup(7), + nlHostHighCapacityGroup(8), + nlMatrixHighCapacityGroup(9), + nlMatrixTopNHighCapacityGroup(10), + alHostHighCapacityGroup(11), + alMatrixHighCapacityGroup(12), + + + + alMatrixTopNHighCapacityGroup(13), + usrHistoryHighCapacityGroup(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the High Capacity RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 16 } + +-- Conformance Macros + +hcRmonMIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 6 } +hcRmonMIBGroups OBJECT IDENTIFIER ::= { rmonConformance 7 } + +hcMediaIndependentCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + High Capacity Media Independent Group." + MODULE -- this module + MANDATORY-GROUPS { mediaIndependentGroup, hcRMONInformationGroup } + ::= { hcRmonMIBCompliances 1 } + +hcRmon1MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the High + Capacity RMON-1 MIB" + MODULE -- this module + GROUP etherStatsHighCapacityGroup + DESCRIPTION + "The etherStatsHighCapacityGroup is optional but requires + implementation of the rmonEtherStatsGroup." + + GROUP etherHistoryHighCapacityGroup + DESCRIPTION + "The etherHistoryHighCapacityGroup is optional but + requires implementation of the rmonHistoryControlGroup and + rmonEthernetHistoryGroup." + + GROUP hostHighCapacityGroup + DESCRIPTION + "The hostHighCapacityGroup is mandatory when the + hostTopNHighCapacityGroup is implemented. This group also + requires implementation of the rmonHostGroup." + + GROUP hostTopNHighCapacityGroup + + + + DESCRIPTION + "The hostTopNHighCapacityGroup is optional but requires + implementation of the rmonHostTopNGroup." + + GROUP matrixHighCapacityGroup + DESCRIPTION + "The matrixHighCapacityGroup is optional but requires + implementation of the rmonMatrixGroup." + + GROUP captureBufferHighCapacityGroup + DESCRIPTION + "The captureBufferHighCapacityGroup is optional but + requires implementation of the rmonFilterGroup and + rmonPacketCaptureGroup." + + MODULE RMON-MIB + GROUP rmonEtherStatsGroup + DESCRIPTION + "The RMON Ethernet Statistics Group is mandatory if the + etherStatsHighCapacityGroup is implemented." + + GROUP rmonHistoryControlGroup + DESCRIPTION + "The RMON History Control Group is mandatory if the + etherHistoryHighCapacityGroup is implemented." + + GROUP rmonEthernetHistoryGroup + DESCRIPTION + "The RMON Ethernet History Group is mandatory if the + etherHistoryHighCapacityGroup is implemented." + + GROUP rmonHostGroup + DESCRIPTION + "The RMON Host Group is mandatory if the + hostHighCapacityGroup is implemented." + + GROUP rmonHostTopNGroup + DESCRIPTION + "The RMON Host Top N Group is mandatory if the + hostTopNHighCapacityGroup is implemented." + + GROUP rmonMatrixGroup + DESCRIPTION + "The RMON Matrix Group is mandatory if the + matrixHighCapacityGroup is implemented." + + GROUP rmonFilterGroup + DESCRIPTION + + + + "The RMON Filter Group is mandatory when the + captureBufferHighCapacityGroup is implemented." + + GROUP rmonPacketCaptureGroup + DESCRIPTION + "The RMON Packet Capture Group is mandatory when the + captureBufferHighCapacityGroup is implemented." + ::= { hcRmonMIBCompliances 2 } + +hcRmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the High Capacity RMON-2 MIB" + MODULE -- this module + MANDATORY-GROUPS { protocolDistributionHighCapacityGroup, + nlHostHighCapacityGroup, + nlMatrixHighCapacityGroup, + nlMatrixTopNHighCapacityGroup, + usrHistoryHighCapacityGroup, + hcRMONInformationGroup } + MODULE RMON2-MIB + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC2819]" + ::= { hcRmonMIBCompliances 3 } + +hcRmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the High Capacity RMON-2 MIB with Application Layer + Enhancements." + + MODULE -- this module + MANDATORY-GROUPS { protocolDistributionHighCapacityGroup, + + nlHostHighCapacityGroup, + nlMatrixHighCapacityGroup, + + + + nlMatrixTopNHighCapacityGroup, + alHostHighCapacityGroup, + alMatrixHighCapacityGroup, + alMatrixTopNHighCapacityGroup, + usrHistoryHighCapacityGroup, + hcRMONInformationGroup } + MODULE RMON2-MIB + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + alHostGroup, + alMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC2819]" + ::= { hcRmonMIBCompliances 4 } + +mediaIndependentGroup OBJECT-GROUP + OBJECTS {mediaIndependentDataSource, + mediaIndependentDropEvents, + mediaIndependentDroppedFrames, + mediaIndependentInPkts, + mediaIndependentInOverflowPkts, + mediaIndependentInHighCapacityPkts, + mediaIndependentOutPkts, + mediaIndependentOutOverflowPkts, + mediaIndependentOutHighCapacityPkts, + mediaIndependentInOctets, + mediaIndependentInOverflowOctets, + mediaIndependentInHighCapacityOctets, + mediaIndependentOutOctets, + mediaIndependentOutOverflowOctets, + mediaIndependentOutHighCapacityOctets, + mediaIndependentInNUCastPkts, + mediaIndependentInNUCastOverflowPkts, + mediaIndependentInNUCastHighCapacityPkts, + mediaIndependentOutNUCastPkts, + mediaIndependentOutNUCastOverflowPkts, + mediaIndependentOutNUCastHighCapacityPkts, + mediaIndependentInErrors, + mediaIndependentOutErrors, + mediaIndependentInputSpeed, + + + + mediaIndependentOutputSpeed, + mediaIndependentDuplexMode, + mediaIndependentDuplexChanges, + mediaIndependentDuplexLastChange, + mediaIndependentOwner, + mediaIndependentStatus } + STATUS current + DESCRIPTION + "Collects utilization statistics for any type of network." + ::= { hcRmonMIBGroups 1 } + +etherStatsHighCapacityGroup OBJECT-GROUP + OBJECTS { etherStatsHighCapacityOverflowPkts, + etherStatsHighCapacityPkts, + etherStatsHighCapacityOverflowOctets, + etherStatsHighCapacityOctets, + etherStatsHighCapacityOverflowPkts64Octets, + etherStatsHighCapacityPkts64Octets, + etherStatsHighCapacityOverflowPkts65to127Octets, + etherStatsHighCapacityPkts65to127Octets, + etherStatsHighCapacityOverflowPkts128to255Octets, + etherStatsHighCapacityPkts128to255Octets, + etherStatsHighCapacityOverflowPkts256to511Octets, + etherStatsHighCapacityPkts256to511Octets, + etherStatsHighCapacityOverflowPkts512to1023Octets, + etherStatsHighCapacityPkts512to1023Octets, + etherStatsHighCapacityOverflowPkts1024to1518Octets, + etherStatsHighCapacityPkts1024to1518Octets } + STATUS current + DESCRIPTION + "Collects utilization statistics for ethernet networks." + ::= { hcRmonMIBGroups 2 } + +etherHistoryHighCapacityGroup OBJECT-GROUP + OBJECTS { etherHistoryHighCapacityOverflowPkts, + etherHistoryHighCapacityPkts, + etherHistoryHighCapacityOverflowOctets, + etherHistoryHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects utilization statistics for ethernet networks." + ::= { hcRmonMIBGroups 3 } + +hostHighCapacityGroup OBJECT-GROUP + OBJECTS { hostHighCapacityInOverflowPkts, + hostHighCapacityInPkts, + hostHighCapacityOutOverflowPkts, + hostHighCapacityOutPkts, + + + + hostHighCapacityInOverflowOctets, + hostHighCapacityInOctets, + hostHighCapacityOutOverflowOctets, + hostHighCapacityOutOctets, + hostTimeHighCapacityInOverflowPkts, + hostTimeHighCapacityInPkts, + hostTimeHighCapacityOutOverflowPkts, + hostTimeHighCapacityOutPkts, + hostTimeHighCapacityInOverflowOctets, + hostTimeHighCapacityInOctets, + hostTimeHighCapacityOutOverflowOctets, + hostTimeHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Collects utilization and error statistics per host." + ::= { hcRmonMIBGroups 4 } + +hostTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { hostTopNHighCapacityAddress, + hostTopNHighCapacityBaseRate, + hostTopNHighCapacityOverflowRate, + hostTopNHighCapacityRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of utilization and error statistics + per host." + ::= { hcRmonMIBGroups 5 } + + +matrixHighCapacityGroup OBJECT-GROUP + OBJECTS { matrixSDHighCapacityOverflowPkts, + matrixSDHighCapacityPkts, + matrixSDHighCapacityOverflowOctets, + matrixSDHighCapacityOctets, + matrixDSHighCapacityOverflowPkts, + matrixDSHighCapacityPkts, + matrixDSHighCapacityOverflowOctets, + matrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects utilization statistics per conversation." + ::= { hcRmonMIBGroups 6 } + +captureBufferHighCapacityGroup OBJECT-GROUP + OBJECTS { captureBufferPacketHighCapacityTime } + STATUS current + DESCRIPTION + "Provides finer granularity time stamps." + + + + ::= { hcRmonMIBGroups 7 } + +protocolDistributionHighCapacityGroup OBJECT-GROUP + OBJECTS { protocolDistStatsHighCapacityOverflowPkts, + protocolDistStatsHighCapacityPkts, + protocolDistStatsHighCapacityOverflowOctets, + protocolDistStatsHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { hcRmonMIBGroups 8 } + +nlHostHighCapacityGroup OBJECT-GROUP + OBJECTS { nlHostHighCapacityInOverflowPkts, + nlHostHighCapacityInPkts, + nlHostHighCapacityOutOverflowPkts, + nlHostHighCapacityOutPkts, + nlHostHighCapacityInOverflowOctets, + nlHostHighCapacityInOctets, + nlHostHighCapacityOutOverflowOctets, + nlHostHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + address discovered by the probe." + ::= { hcRmonMIBGroups 9 } + +nlMatrixHighCapacityGroup OBJECT-GROUP + OBJECTS { nlMatrixSDHighCapacityOverflowPkts, + nlMatrixSDHighCapacityPkts, + nlMatrixSDHighCapacityOverflowOctets, + nlMatrixSDHighCapacityOctets, + nlMatrixDSHighCapacityOverflowPkts, + nlMatrixDSHighCapacityPkts, + nlMatrixDSHighCapacityOverflowOctets, + nlMatrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe." + ::= { hcRmonMIBGroups 10 } + +nlMatrixTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { nlMatrixTopNHighCapacityProtocolDirLocalIndex, + nlMatrixTopNHighCapacitySourceAddress, + nlMatrixTopNHighCapacityDestAddress, + nlMatrixTopNHighCapacityBasePktRate, + + + + nlMatrixTopNHighCapacityOverflowPktRate, + nlMatrixTopNHighCapacityPktRate, + nlMatrixTopNHighCapacityReverseBasePktRate, + nlMatrixTopNHighCapacityReverseOverflowPktRate, + nlMatrixTopNHighCapacityReversePktRate, + nlMatrixTopNHighCapacityBaseOctetRate, + nlMatrixTopNHighCapacityOverflowOctetRate, + nlMatrixTopNHighCapacityOctetRate, + nlMatrixTopNHighCapacityReverseBaseOctetRate, + nlMatrixTopNHighCapacityReverseOverflowOctetRate, + nlMatrixTopNHighCapacityReverseOctetRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of the amount of traffic sent between + each pair of network addresses discovered by the probe." + ::= { hcRmonMIBGroups 11 } + +alHostHighCapacityGroup OBJECT-GROUP + OBJECTS { alHostHighCapacityInOverflowPkts, + alHostHighCapacityInPkts, + alHostHighCapacityOutOverflowPkts, + alHostHighCapacityOutPkts, + alHostHighCapacityInOverflowOctets, + alHostHighCapacityInOctets, + alHostHighCapacityOutOverflowOctets, + alHostHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe." + ::= { hcRmonMIBGroups 12 } + +alMatrixHighCapacityGroup OBJECT-GROUP + OBJECTS { alMatrixSDHighCapacityOverflowPkts, + alMatrixSDHighCapacityPkts, + alMatrixSDHighCapacityOverflowOctets, + alMatrixSDHighCapacityOctets, + alMatrixDSHighCapacityOverflowPkts, + alMatrixDSHighCapacityPkts, + alMatrixDSHighCapacityOverflowOctets, + alMatrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe." + ::= { hcRmonMIBGroups 13 } + + + + +alMatrixTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { alMatrixTopNHighCapacityProtocolDirLocalIndex, + alMatrixTopNHighCapacitySourceAddress, + alMatrixTopNHighCapacityDestAddress, + alMatrixTopNHighCapacityAppProtocolDirLocalIndex, + alMatrixTopNHighCapacityBasePktRate, + alMatrixTopNHighCapacityOverflowPktRate, + alMatrixTopNHighCapacityPktRate, + alMatrixTopNHighCapacityReverseBasePktRate, + alMatrixTopNHighCapacityReverseOverflowPktRate, + alMatrixTopNHighCapacityReversePktRate, + alMatrixTopNHighCapacityBaseOctetRate, + alMatrixTopNHighCapacityOverflowOctetRate, + alMatrixTopNHighCapacityOctetRate, + alMatrixTopNHighCapacityReverseBaseOctetRate, + alMatrixTopNHighCapacityReverseOverflowOctetRate, + alMatrixTopNHighCapacityReverseOctetRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of the amount of traffic per protocol + sent between each pair of network addresses discovered by the + probe." + ::= { hcRmonMIBGroups 14 } + +usrHistoryHighCapacityGroup OBJECT-GROUP + OBJECTS { usrHistoryHighCapacityOverflowAbsValue, + usrHistoryHighCapacityAbsValue } + STATUS current + DESCRIPTION + "Provides user-defined collection of historical information + from MIB objects on the probe with scalability to statistics + from high-capacity networks." + ::= { hcRmonMIBGroups 15 } + +hcRMONInformationGroup OBJECT-GROUP + OBJECTS { hcRMONCapabilities } + STATUS current + DESCRIPTION + "An indication of the high capacity RMON groups supported on + at least one interface by this probe." + ::= { hcRmonMIBGroups 16 } +END diff --git a/mibs/ietf/HCNUM-TC b/mibs/ietf/HCNUM-TC new file mode 100644 index 0000000..cc947b5 --- /dev/null +++ b/mibs/ietf/HCNUM-TC @@ -0,0 +1,122 @@ +HCNUM-TC DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +hcnumTC MODULE-IDENTITY + LAST-UPDATED "200006080000Z" + + + ORGANIZATION "IETF OPS Area" + CONTACT-INFO + " E-mail: mibs@ops.ietf.org + Subscribe: majordomo@psg.com + with msg body: subscribe mibs + + Andy Bierman + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + +1 408-527-3711 + abierman@cisco.com + + Keith McCloghrie + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + +1 408-526-5260 + kzm@cisco.com + + Randy Presuhn + BMC Software, Inc. + Office 1-3141 + 2141 North First Street + San Jose, California 95131 USA + +1 408 546-1006 + rpresuhn@bmc.com" + DESCRIPTION + "A MIB module containing textual conventions + for high capacity data types. This module + addresses an immediate need for data types not directly + supported in the SMIv2. This short-term solution + is meant to be deprecated as a long-term solution + is deployed." + REVISION "200006080000Z" + DESCRIPTION + "Initial Version of the High Capacity Numbers + MIB module, published as RFC 2856." + ::= { mib-2 78 } + +CounterBasedGauge64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The CounterBasedGauge64 type represents a non-negative + integer, which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum value. The + maximum value can not be greater than 2^64-1 + (18446744073709551615 decimal), and the minimum value can + + + not be smaller than 0. The value of a CounterBasedGauge64 + has its maximum value whenever the information being modeled + is greater than or equal to its maximum value, and has its + minimum value whenever the information being modeled is + smaller than or equal to its minimum value. If the + information being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + CounterBasedGauge64 also decreases (increases). + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' semantics + associated with the Counter64 base type are not preserved. + It is possible that management applications which rely + solely upon the (Counter64) ASN.1 tag to determine object + semantics will mistakenly operate upon objects of this type + as they would for Counter64 objects. + + This textual convention represents a limited and short-term + solution, and may be deprecated as a long term solution is + defined and deployed to replace it." + SYNTAX Counter64 + + +ZeroBasedCounter64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object which counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^64 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware + of this minimum time and the actual time between polls, and + to discard data if the actual time is too long or there is + no defined minimum time. + + Typically this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in + use. + + Note that this textual convention does not retain all the + semantics of the Counter64 base type. Specifically, a + Counter64 has an arbitrary initial value, but objects + defined with this TC are required to start at the value + + + zero. This behavior is not likely to have any adverse + effects on management applications which are expecting + Counter64 semantics. + + This textual convention represents a limited and short-term + solution, and may be deprecated as a long term solution is + defined and deployed to replace it." + SYNTAX Counter64 + +END diff --git a/mibs/ietf/HDSL2-SHDSL-LINE-MIB b/mibs/ietf/HDSL2-SHDSL-LINE-MIB new file mode 100644 index 0000000..0d2bdb0 --- /dev/null +++ b/mibs/ietf/HDSL2-SHDSL-LINE-MIB @@ -0,0 +1,2648 @@ +HDSL2-SHDSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Counter32, + Unsigned32, + Gauge32, + NOTIFICATION-TYPE, + Integer32, + transmission + FROM SNMPv2-SMI + RowStatus, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + PerfCurrentCount, + PerfIntervalCount + FROM PerfHist-TC-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +hdsl2ShdslMIB MODULE-IDENTITY + LAST-UPDATED "200512070000Z" -- December 7, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + WG-URL: + http://www.ietf.org/html.charters/adslmib-charter.html + Info: https://www1.ietf.org/mailman/listinfo/adslmib + Chair: Mike Sneed + Sand Channel Systems + Postal: 1210-203 Westview Ln + Raleigh NC 27605 USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair Bob Ray + PESA Switching Systems, Inc. + + + + Postal 330-A Wynn Drive + Huntsville, AL 35805 USA + Phone +1 256 726 9200 ext. 142 + + Co-editor: Clay Sikes + Zhone Technologies, Inc. + Postal: 8545 126th Ave. N. + Largo, FL 33772 USA + Email: csikes@zhone.com + Phone: +1 727 530 8257 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 USA + + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194" + +DESCRIPTION + "This MIB module defines a collection of objects for managing + HDSL2/SHDSL lines. An agent may reside at either end of the + line; however, the MIB module is designed to require no + management communication between the modems beyond that + inherent in the low-level EOC line protocol as defined in + ANSI T1E1.4/2000-006 (for HDSL2 lines) or in ITU G.991.2 + (for SHDSL lines). + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4319; see the RFC itself for + full legal notices." + +REVISION "200512070000Z" -- December 7, 2005 +DESCRIPTION "This version, published as RFC 4319. + The following changes have been made in this version: + 1. Added a 3rd and 4th wire pair. + 2. Modified all rates such that their rates are only + constrained by an unsigned 32-bit value and not by + what today's perceived technology limitations are. + + + + + + 3. Clarified that the rates from RFC 3276 include + payload and any applicable framing and added + objects for payload-only rates. + 4. Added an object to indicate whether the + tip and ring are reversed on a wire pair. + 5. Added an object to display the activation state + of a wire pair. + 6. Added references as necessary for clarification. + 7. Added display hints to textual conventions as + necessary. + 8. Updated conformance statements as necessary. + 9. Some changes were due to IETF requirements and + RFC generation tools." + +REVISION "200205090000Z" -- May 9, 2002 +DESCRIPTION "Initial version, published as RFC 3276." + +::= { transmission 48 } + +hdsl2ShdslMibObjects OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 1 } + +-- Textual Conventions used in this MIB module +-- + +Hdsl2ShdslPerfCurrDayCount ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A gauge associated with interface performance measurements in + a current 1-day (24 hour) measurement interval. + + The value of this gauge starts at zero at the beginning of an + interval and is increased when associated events occur, until + the end of the 1-day interval. At that time, the value of the + gauge is stored in the previous 1-day history interval, as + defined in a companion object of type + Hdsl2Shdsl1DayIntevalCount, and the current interval gauge + is restarted at zero. + + In the case where the agent has no valid data available for + this interval, the corresponding object instance is not + available, and upon a retrieval request, a corresponding error + message shall be returned to indicate that this instance does + not exist. Please note that zero is a valid value." + SYNTAX Gauge32 + +Hdsl2Shdsl1DayIntervalCount ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "A counter associated with interface performance measurements + during the most previous 1-day (24 hour) measurement interval. + The value of this gauge is equal to the value of the current + day gauge, as defined in a companion object of type + Hdsl2ShdslPerfCurrDayCount, at the end of its most recent + interval. + + In the case where the agent has no valid data available for + this interval, the corresponding object instance is not + available, and upon a retrieval request, a corresponding error + message shall be returned to indicate that this instance does + not exist." + SYNTAX Gauge32 + +Hdsl2ShdslPerfTimeElapsed ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the beginning of + the current measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock or the addition + of a leap second, the current interval exceeds the maximum + value, the agent will return the maximum value. + + For 15-minute intervals, the range is limited to (0..899). + For 24-hour intervals, the range is limited to (0..86399)." + SYNTAX Unsigned32(0..86399) + +Hdsl2ShdslPerfIntervalThreshold ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This convention defines a range of values that may be set in + a fault threshold alarm control. As the number of seconds in + a 15-minute interval numbers at most 900, objects of this type + may have a range of 0...900, where the value of 0 disables the + alarm." + SYNTAX Unsigned32(0..900) + +Hdsl2ShdslUnitId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the unique identification for all units in an + HDSL2/SHDSL span. It is based on the EOC unit addressing + scheme with reference to the xtuC." + SYNTAX INTEGER + + + + { + xtuC(1), + xtuR(2), + xru1(3), + xru2(4), + xru3(5), + xru4(6), + xru5(7), + xru6(8), + xru7(9), + xru8(10) + } + +Hdsl2ShdslUnitSide ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the referenced side of an HDSL2/SHDSL unit - Network + or Customer side. The side facing the Network is the Network + side, while the side facing the Customer is the Customer side." + SYNTAX INTEGER + { + networkSide(1), + customerSide(2) + } + +Hdsl2ShdslWirePair ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the referenced pair of wires in an HDSL2/SHDSL segment. + HDSL2 only supports a single pair (wirePair1 or two wire), + SHDSL lines support an optional second pair (wirePair2 or four + wire), and G.shdsl.bis support an optional third pair + (wirePair3 or six wire) and an optional fourth pair + (wirePair4 or eight wire)." + SYNTAX INTEGER + { + wirePair1(1), -- two wire + wirePair2(2), -- four wire + wirePair3(3), -- six wire + wirePair4(4) -- eight wire + } + +Hdsl2ShdslTransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Contains the regional setting of the HDSL2/SHDSL span, + represented as a bit-map of possible settings. The various + bit positions are as follows: + + + + Bit Meaning Description + 1 region 1 Indicates ITU-T G.991.2 Annex A. + 2 region 2 Indicates ITU-T G.991.2 Annex B." + SYNTAX BITS + { + region1(0), + region2(1) + } + +Hdsl2ShdslClockReferenceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The various STU-C symbol clock references for the + HDSL2/SHDSL span, represented as an enumeration." + SYNTAX INTEGER + { + localClk(1), -- Mode-1 per G991.2 + networkClk(2), -- Mode-2 per G991.2 + dataOrNetworkClk(3), -- Mode-3a per G991.2 + dataClk(4) -- Mode-3b per G991.2 + } + +-- Span Configuration Group +-- + +hdsl2ShdslSpanConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanConfEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "This table supports overall configuration of HDSL2/SHDSL + spans. Entries in this table MUST be maintained in a + persistent manner." + ::= { hdsl2ShdslMibObjects 1 } + +hdsl2ShdslSpanConfEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslSpanConfTable. Each entry + represents the complete span in a single HDSL2/SHDSL line. + It is indexed by the ifIndex of the associated HDSL2/SHDSL + line." + INDEX { ifIndex } + ::= { hdsl2ShdslSpanConfTable 1 } + + + + +Hdsl2ShdslSpanConfEntry ::= + SEQUENCE + { + hdsl2ShdslSpanConfNumRepeaters Unsigned32, + hdsl2ShdslSpanConfProfile SnmpAdminString, + hdsl2ShdslSpanConfAlarmProfile SnmpAdminString + } + + hdsl2ShdslSpanConfNumRepeaters OBJECT-TYPE + SYNTAX Unsigned32(0..8) + UNITS "repeaters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provisions the number of repeaters/regenerators + in this HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanConfEntry 1 } + +hdsl2ShdslSpanConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a pointer to a span configuration profile in + the hdsl2ShdslSpanConfProfileTable, which applies to this + span. The value of this object is the index of the referenced + profile in the hdsl2ShdslSpanConfProfileTable. Note that span + configuration profiles are only applicable to SHDSL lines. + + HDSL2 lines MUST reference the default profile, 'DEFVAL'. + By default, this object will have the value 'DEFVAL' + (the index of the default profile). + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslSpanConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslSpanConfEntry 2 } + +hdsl2ShdslSpanConfAlarmProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a pointer to an alarm configuration profile in + the hdsl2ShdslEndpointAlarmConfProfileTable. The value of + this object is the index of the referenced profile in the + hdsl2ShdslEndpointAlarmConfProfileTable. The alarm + threshold configuration in the referenced profile will be + + + + used by default for all segment endpoints in this span. + Individual endpoints may override this profile by explicitly + specifying some other profile in the + hdsl2ShdslEndpointConfTable. By default, this object will + have the value 'DEFVAL' (the index of the default + profile). + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslEndpointAlarmConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslSpanConfEntry 3 } + +-- Span Status Group +-- + +hdsl2ShdslSpanStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides overall status information of + HDSL2/SHDSL spans. This table contains live data from + equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 2 } + +hdsl2ShdslSpanStatusEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslSpanStatusTable. Each entry + represents the complete span in a single HDSL2/SHDSL line. + It is indexed by the ifIndex of the associated HDSL2/SHDSL + line." + INDEX { ifIndex } + ::= { hdsl2ShdslSpanStatusTable 1 } + +Hdsl2ShdslSpanStatusEntry ::= + SEQUENCE + { + hdsl2ShdslStatusNumAvailRepeaters Unsigned32, + hdsl2ShdslStatusMaxAttainableLineRate Unsigned32, + hdsl2ShdslStatusActualLineRate Unsigned32, + hdsl2ShdslStatusTransmissionModeCurrent + Hdsl2ShdslTransmissionModeType, + hdsl2ShdslStatusMaxAttainablePayloadRate Unsigned32, + hdsl2ShdslStatusActualPayloadRate Unsigned32 + } + + + +hdsl2ShdslStatusNumAvailRepeaters OBJECT-TYPE + SYNTAX Unsigned32(0..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual number of repeaters/regenerators + discovered in this HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanStatusEntry 1 } + +hdsl2ShdslStatusMaxAttainableLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the maximum attainable line rate in this HDSL2/SHDSL + span. This object provides the maximum rate the line is + capable of achieving. This is based upon measurements made + during line probing. This rate includes payload (user data) + and any applicable framing overhead." + ::= { hdsl2ShdslSpanStatusEntry 2 } + +hdsl2ShdslStatusActualLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual line rate in this HDSL2/SHDSL span. This + SHOULD equal ifSpeed. This rate includes payload (user data) + and any applicable framing overhead" + ::= { hdsl2ShdslSpanStatusEntry 3 } + +hdsl2ShdslStatusTransmissionModeCurrent OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the current Power Spectral Density (PSD) regional + setting of the HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanStatusEntry 4 } + +hdsl2ShdslStatusMaxAttainablePayloadRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Contains the maximum attainable payload (user data) + line rate in this HDSL2/SHDSL span. This object provides + the maximum rate the line is capable of achieving. This + is based upon measurements made during line probing. Any + framing overhead is not included." + ::= { hdsl2ShdslSpanStatusEntry 5 } + +hdsl2ShdslStatusActualPayloadRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual line rate in this HDSL2/SHDSL span. Any + framing overhead is not included." + ::= { hdsl2ShdslSpanStatusEntry 6 } + +-- Unit Inventory Group +-- + +hdsl2ShdslInventoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports retrieval of unit inventory information + available via the EOC from units in an HDSL2/SHDSL line. + + Entries in this table are dynamically created during the + line discovery process. The life cycle for these entries + is as follows: + + - xtu discovers a device, either a far-end xtu or an xru + - an inventory table entry is created for the device + - the line goes down for whatever reason + - inventory table entries for unreachable devices are + destroyed + + As these entries are created/destroyed dynamically, they + are NOT persistent." + ::= { hdsl2ShdslMibObjects 3 } + +hdsl2ShdslInventoryEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslInventoryTable. Each entry + + + + represents inventory information for a single unit in an + HDSL2/SHDSL line. It is indexed by the ifIndex of the + HDSL2/SHDSL line and the Hdsl2ShdslUnitId of the + associated unit." + INDEX { ifIndex, hdsl2ShdslInvIndex } + ::= { hdsl2ShdslInventoryTable 1 } + +Hdsl2ShdslInventoryEntry ::= + SEQUENCE + { + hdsl2ShdslInvIndex Hdsl2ShdslUnitId, + hdsl2ShdslInvVendorID OCTET STRING, + hdsl2ShdslInvVendorModelNumber OCTET STRING, + hdsl2ShdslInvVendorSerialNumber OCTET STRING, + hdsl2ShdslInvVendorEOCSoftwareVersion Integer32, + hdsl2ShdslInvStandardVersion Integer32, + hdsl2ShdslInvVendorListNumber OCTET STRING, + hdsl2ShdslInvVendorIssueNumber OCTET STRING, + hdsl2ShdslInvVendorSoftwareVersion OCTET STRING, + hdsl2ShdslInvEquipmentCode OCTET STRING, + hdsl2ShdslInvVendorOther OCTET STRING, + hdsl2ShdslInvTransmissionModeCapability + Hdsl2ShdslTransmissionModeType + } + +hdsl2ShdslInvIndex OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table corresponds to a physical element + in an HDSL2/SHDSL span. It is based on the EOC unit addressing + scheme with reference to the xtuC." + ::= { hdsl2ShdslInventoryEntry 1 } + +hdsl2ShdslInvVendorID OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor ID as reported in an Inventory Response message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 25-32." + ::= { hdsl2ShdslInventoryEntry 2 } + +hdsl2ShdslInvVendorModelNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor model number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 33-44." + ::= { hdsl2ShdslInventoryEntry 3 } + +hdsl2ShdslInvVendorSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor serial number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 45-56." + ::= { hdsl2ShdslInventoryEntry 4 } + +hdsl2ShdslInvVendorEOCSoftwareVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor EOC version as reported in a Discovery Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.2, Discovery response - Message ID + 129, Octet 12." + ::= { hdsl2ShdslInventoryEntry 5 } + +hdsl2ShdslInvStandardVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Version of the HDSL2/SHDSL standard implemented, as reported + in an Inventory Response message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octet 2." + ::= { hdsl2ShdslInventoryEntry 6 } + +hdsl2ShdslInvVendorListNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(3)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor list number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 3-5." + ::= { hdsl2ShdslInventoryEntry 7 } + +hdsl2ShdslInvVendorIssueNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor issue number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 6-7." + ::= { hdsl2ShdslInventoryEntry 8 } + +hdsl2ShdslInvVendorSoftwareVersion OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor software version as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 8-13." + ::= { hdsl2ShdslInventoryEntry 9 } + +hdsl2ShdslInvEquipmentCode OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Equipment code conforming to ANSI T1.213, Coded Identification + of Equipment Entities." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 14-23." + ::= { hdsl2ShdslInventoryEntry 10 } + +hdsl2ShdslInvVendorOther OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Other vendor information as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 57-68." + ::= { hdsl2ShdslInventoryEntry 11 } + +hdsl2ShdslInvTransmissionModeCapability OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the transmission mode capability of the SHDSL unit." + ::= { hdsl2ShdslInventoryEntry 12 } + +-- Segment Endpoint Configuration Group +-- + +hdsl2ShdslEndpointConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports configuration parameters for segment + endpoints in an HDSL2/SHDSL line. As this table is indexed + by ifIndex, it MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 4 } + +hdsl2ShdslEndpointConfEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointConfTable. Each entry + represents a single segment endpoint in an HDSL2/SHDSL line. + It is indexed by the ifIndex of the HDSL2/SHDSL line, the + UnitId of the associated unit, the side of the unit, and the + wire pair of the associated modem." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair} + ::= { hdsl2ShdslEndpointConfTable 1 } + +Hdsl2ShdslEndpointConfEntry ::= + SEQUENCE + { + + + + hdsl2ShdslEndpointSide Hdsl2ShdslUnitSide, + hdsl2ShdslEndpointWirePair Hdsl2ShdslWirePair, + hdsl2ShdslEndpointAlarmConfProfile SnmpAdminString + } + +hdsl2ShdslEndpointSide OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitSide + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The side of the unit associated with this segment endpoint -- + Network/Customer side -- as per the Hdsl2ShdslUnitSide textual + convention." + ::= { hdsl2ShdslEndpointConfEntry 1 } + +hdsl2ShdslEndpointWirePair OBJECT-TYPE + SYNTAX Hdsl2ShdslWirePair + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The wire pair of the modem associated with this segment + endpoint as per the Hdsl2ShdslWirePair textual convention." + ::= { hdsl2ShdslEndpointConfEntry 2 } + +hdsl2ShdslEndpointAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the alarm threshold values to be used + for this segment endpoint. The values are obtained from the + alarm configuration profile referenced by this object. The + value of this object is the index of the referenced profile in + the hdsl2ShdslEndpointAlarmConfProfileTable, or NULL (a + zero-length SnmpAdminString). If the value is a zero-length + SnmpAdminString, the endpoint uses the default Alarm + Configuration Profile for the associated span as per the + hdsl2ShdslSpanConfAlarmProfile object in the + hdsl2ShdslSpanConfTable. The default value of this object is + a zero-length SnmpAdminString. + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslEndpointAlarmConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslEndpointConfEntry 3 } + +-- Segment Endpoint Current Status/Performance Group +-- + + + +hdsl2ShdslEndpointCurrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current status and performance information + for segment endpoints in HDSL2/SHDSL lines. As with other + tables in this MIB module indexed by ifIndex, entries in this + table MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 5 } + +hdsl2ShdslEndpointCurrEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointCurrTable. Each entry + contains status and performance information relating to a + single segment endpoint. It is indexed by the ifIndex of the + HDSL2/SHDSL line, the UnitId of the associated unit, the side + of the unit, and the wire pair of the associated modem." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair } + ::= { hdsl2ShdslEndpointCurrTable 1 } + +Hdsl2ShdslEndpointCurrEntry ::= + SEQUENCE + { + hdsl2ShdslEndpointCurrAtn Integer32, + hdsl2ShdslEndpointCurrSnrMgn Integer32, + hdsl2ShdslEndpointCurrStatus BITS, + hdsl2ShdslEndpointES Counter32, + hdsl2ShdslEndpointSES Counter32, + hdsl2ShdslEndpointCRCanomalies Counter32, + hdsl2ShdslEndpointLOSWS Counter32, + hdsl2ShdslEndpointUAS Counter32, + hdsl2ShdslEndpointCurr15MinTimeElapsed + Hdsl2ShdslPerfTimeElapsed, + hdsl2ShdslEndpointCurr15MinES PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinSES PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinCRCanomalies PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinLOSWS PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinUAS PerfCurrentCount, + hdsl2ShdslEndpointCurr1DayTimeElapsed + Hdsl2ShdslPerfTimeElapsed, + hdsl2ShdslEndpointCurr1DayES + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DaySES + + + + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayCRCanomalies + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayLOSWS + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayUAS + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurrTipRingReversal INTEGER, + hdsl2ShdslEndpointCurrActivationState INTEGER + } + +hdsl2ShdslEndpointCurrAtn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current loop attenuation for this endpoint as reported in + a Network or Customer Side Performance Status message." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 1 } + +hdsl2ShdslEndpointCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current SNR margin for this endpoint as reported in a + Status Response/SNR message." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 2 } + +hdsl2ShdslEndpointCurrStatus OBJECT-TYPE + SYNTAX BITS + { + noDefect(0), + powerBackoff(1), + deviceFault(2), + dcContinuityFault(3), + snrMarginAlarm(4), + loopAttenuationAlarm(5), + loswFailureAlarm(6), + configInitFailure(7), + protocolInitFailure(8), + noNeighborPresent(9), + loopbackActive(10) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the current state of the endpoint. This is a + bit-map of possible conditions. The various bit positions + are as follows: + + noDefect There are no defects on the line. + + powerBackoff Indicates enhanced Power Backoff. + + deviceFault Indicates that a vendor-dependent + diagnostic or self-test fault + has been detected. + + dcContinuityFault Indicates vendor-dependent + conditions that interfere with + span powering such as short and + open circuits. + + snrMarginAlarm Indicates that the SNR margin + has dropped below the alarm threshold. + + loopAttenuationAlarm Indicates that the loop attenuation + exceeds the alarm threshold. + + loswFailureAlarm Indicates a forward LOSW alarm. + + configInitFailure Endpoint failure during initialization + due to paired endpoint not able to + support requested configuration. + + protocolInitFailure Endpoint failure during initialization + due to incompatible protocol used by + the paired endpoint. + + noNeighborPresent Endpoint failure during initialization + due to no activation sequence detected + from paired endpoint. + + loopbackActive A loopback is currently active at this + segment endpoint. + + This is intended to supplement ifOperStatus. Note that there + is a 1:1 relationship between the status bits defined in this + object and the notification thresholds defined elsewhere in + this MIB module." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + + + + ::= { hdsl2ShdslEndpointCurrEntry 3 } + +hdsl2ShdslEndpointES OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) on this endpoint since the xU + was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 4 } + +hdsl2ShdslEndpointSES OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) on this endpoint + since the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 5 } + +hdsl2ShdslEndpointCRCanomalies OBJECT-TYPE + SYNTAX Counter32 + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies on this endpoint since the xU was + last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 6 } + +hdsl2ShdslEndpointLOSWS OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds on this endpoint + since the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 7 } + +hdsl2ShdslEndpointUAS OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) on this endpoint since + the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 8 } + +hdsl2ShdslEndpointCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in the current 15-minute interval." + ::= { hdsl2ShdslEndpointCurrEntry 9 } + +hdsl2ShdslEndpointCurr15MinES OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) in the current 15-minute + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 10 } + +hdsl2ShdslEndpointCurr15MinSES OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) in the current + 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 11 } + +hdsl2ShdslEndpointCurr15MinCRCanomalies OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies in the current 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + + + + ::= { hdsl2ShdslEndpointCurrEntry 12 } + +hdsl2ShdslEndpointCurr15MinLOSWS OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds in the current + 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 13 } + +hdsl2ShdslEndpointCurr15MinUAS OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) in the current 15-minute + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 14 } + +hdsl2ShdslEndpointCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning of + the current 1-day interval." + ::= { hdsl2ShdslEndpointCurrEntry 15 } + +hdsl2ShdslEndpointCurr1DayES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the current day as + measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 16 } + +hdsl2ShdslEndpointCurr1DaySES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the current + day as measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 17 } + +hdsl2ShdslEndpointCurr1DayCRCanomalies OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the current day as measured + by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 18 } + +hdsl2ShdslEndpointCurr1DayLOSWS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the current + day as measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 19 } + +hdsl2ShdslEndpointCurr1DayUAS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the current day as + measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 20 } + +hdsl2ShdslEndpointCurrTipRingReversal OBJECT-TYPE + SYNTAX INTEGER + { + normal(1), + reversed(2) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the state of the tip/ring for the + wire pair." + ::= { hdsl2ShdslEndpointCurrEntry 21 } + +hdsl2ShdslEndpointCurrActivationState OBJECT-TYPE + SYNTAX INTEGER + { + preActivation(1), -- PreTrain + activation(2), -- Training + data(3) -- Trained + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the activation or training state of + the wire pair." + REFERENCE "ITU-T G.991.2, Section 6.2 PMD Activation Sequence" + ::= { hdsl2ShdslEndpointCurrEntry 22 } + +-- Segment Endpoint 15-Minute Interval Status/Performance Group +-- + +hdsl2Shdsl15MinIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2Shdsl15MinIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each HDSL2/SHDSL endpoint + performance data collection interval. This table contains + live data from equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 6 } + +hdsl2Shdsl15MinIntervalEntry OBJECT-TYPE + SYNTAX Hdsl2Shdsl15MinIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2Shdsl15MinIntervalTable." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair, hdsl2Shdsl15MinIntervalNumber} + ::= { hdsl2Shdsl15MinIntervalTable 1 } + +Hdsl2Shdsl15MinIntervalEntry ::= + SEQUENCE + { + hdsl2Shdsl15MinIntervalNumber Unsigned32, + + + + hdsl2Shdsl15MinIntervalES PerfIntervalCount, + hdsl2Shdsl15MinIntervalSES PerfIntervalCount, + hdsl2Shdsl15MinIntervalCRCanomalies PerfIntervalCount, + hdsl2Shdsl15MinIntervalLOSWS PerfIntervalCount, + hdsl2Shdsl15MinIntervalUAS PerfIntervalCount + } + +hdsl2Shdsl15MinIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number. Interval 1 is the most + recent previous interval; interval 96 is 24 hours ago. + Intervals 2..96 are optional." + ::= { hdsl2Shdsl15MinIntervalEntry 1 } + +hdsl2Shdsl15MinIntervalES OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 2 } + +hdsl2Shdsl15MinIntervalSES OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 3 } + +hdsl2Shdsl15MinIntervalCRCanomalies OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 4 } + +hdsl2Shdsl15MinIntervalLOSWS OBJECT-TYPE + + + + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 5 } + +hdsl2Shdsl15MinIntervalUAS OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 6 } + +-- Segment Endpoint 1-Day Interval Status/Performance Group +-- + +hdsl2Shdsl1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2Shdsl1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each HDSL2/SHDSL endpoint + performance data collection interval. This table contains + live data from equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 7 } + +hdsl2Shdsl1DayIntervalEntry OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2Shdsl1DayIntervalTable." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair, hdsl2Shdsl1DayIntervalNumber } + ::= { hdsl2Shdsl1DayIntervalTable 1 } + +Hdsl2Shdsl1DayIntervalEntry ::= + SEQUENCE + { + hdsl2Shdsl1DayIntervalNumber Unsigned32, + hdsl2Shdsl1DayIntervalMoniSecs Hdsl2ShdslPerfTimeElapsed, + + + + hdsl2Shdsl1DayIntervalES Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalSES Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalCRCanomalies Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalLOSWS Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalUAS Hdsl2Shdsl1DayIntervalCount + } + +hdsl2Shdsl1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32(1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2..30 are optional." + ::= { hdsl2Shdsl1DayIntervalEntry 1 } + +hdsl2Shdsl1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { hdsl2Shdsl1DayIntervalEntry 2 } + +hdsl2Shdsl1DayIntervalES OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the 1-day interval as + measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 3 } + +hdsl2Shdsl1DayIntervalSES OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the 1-day + + + + interval as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 4 } + +hdsl2Shdsl1DayIntervalCRCanomalies OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the 1-day interval as + measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 5 } + +hdsl2Shdsl1DayIntervalLOSWS OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the 1-day + interval as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 6 } + +hdsl2Shdsl1DayIntervalUAS OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the 1-day interval + as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 7 } + +-- Maintenance Group +-- + +hdsl2ShdslEndpointMaintTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports maintenance operations (e.g., loopbacks) + to be performed on HDSL2/SHDSL segment endpoints. This table + contains live data from equipment. As such, it is NOT + + + + persistent." + ::= { hdsl2ShdslMibObjects 8 } + +hdsl2ShdslEndpointMaintEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointMaintTable. Each entry + corresponds to a single segment endpoint and is indexed by the + ifIndex of the HDSL2/SHDSL line, the UnitId of the associated + unit, and the side of the unit." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide } + ::= { hdsl2ShdslEndpointMaintTable 1 } + +Hdsl2ShdslEndpointMaintEntry ::= + SEQUENCE + { + hdsl2ShdslMaintLoopbackConfig INTEGER, + hdsl2ShdslMaintTipRingReversal INTEGER, + hdsl2ShdslMaintPowerBackOff INTEGER, + hdsl2ShdslMaintSoftRestart INTEGER + } + +hdsl2ShdslMaintLoopbackConfig OBJECT-TYPE + SYNTAX INTEGER + { + noLoopback(1), + normalLoopback(2), + specialLoopback(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls configuration of loopbacks for the + associated segment endpoint. The status of the loopback + is obtained via the hdsl2ShdslEndpointCurrStatus object." + ::= { hdsl2ShdslEndpointMaintEntry 1 } + +hdsl2ShdslMaintTipRingReversal OBJECT-TYPE + SYNTAX INTEGER + { + normal(1), + reversed(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates the state of the tip/ring pair at the + associated segment endpoint." + ::= { hdsl2ShdslEndpointMaintEntry 2 } + +hdsl2ShdslMaintPowerBackOff OBJECT-TYPE + SYNTAX INTEGER + { + default(1), + enhanced(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the receiver at the associated + segment endpoint to operate in default or enhanced power + backoff mode." + ::= { hdsl2ShdslEndpointMaintEntry 3 } + +hdsl2ShdslMaintSoftRestart OBJECT-TYPE + SYNTAX INTEGER + { + ready(1), + restart(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object enables the manager to trigger a soft restart + of the modem at the associated segment endpoint. The + manager may only set this object to the 'restart(2)' + value, which initiates a restart. The agent will perform a + restart after approximately 5 seconds. Following the 5 second + period, the agent will restore the object to the 'ready(1)' + state." + ::= { hdsl2ShdslEndpointMaintEntry 4 } + +hdsl2ShdslUnitMaintTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslUnitMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports maintenance operations for units in a + HDSL2/SHDSL line. Entries in this table MUST be maintained + in a persistent manner." + ::= { hdsl2ShdslMibObjects 9 } + +hdsl2ShdslUnitMaintEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitMaintEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslUnitMaintTable. Each entry + corresponds to a single unit and is indexed by the + ifIndex of the HDSL2/SHDSL line and the UnitId of the + associated unit." + INDEX { ifIndex, hdsl2ShdslInvIndex } + ::= { hdsl2ShdslUnitMaintTable 1 } + +Hdsl2ShdslUnitMaintEntry ::= + SEQUENCE + { + hdsl2ShdslMaintLoopbackTimeout Integer32, + hdsl2ShdslMaintUnitPowerSource INTEGER + } + +hdsl2ShdslMaintLoopbackTimeout OBJECT-TYPE + SYNTAX Integer32(0..4095) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the timeout value for loopbacks + initiated at segments endpoints contained in the associated + unit. A value of 0 disables the timeout." + ::= { hdsl2ShdslUnitMaintEntry 1 } + +hdsl2ShdslMaintUnitPowerSource OBJECT-TYPE + SYNTAX INTEGER + { + local(1), + span(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the DC power source being used by the + associated unit." + ::= { hdsl2ShdslUnitMaintEntry 2 } + +-- Span Configuration Profile Group +-- + +hdsl2ShdslSpanConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table supports definitions of span configuration + profiles for SHDSL lines. HDSL2 does not support these + configuration options. This table MUST be maintained + in a persistent manner." + ::= { hdsl2ShdslMibObjects 10 } + +hdsl2ShdslSpanConfProfileEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single span configuration + profile. Each profile contains a set of span configuration + parameters. The configuration parameters in a profile are + applied to those lines referencing that profile (see the + hdsl2ShdslSpanConfProfile object). Profiles may be + created/deleted using the row creation/deletion mechanism + via hdsl2ShdslSpanConfProfileRowStatus. If an active + entry is referenced in hdsl2ShdslSpanConfProfile, the + entry MUST remain active until all references are removed." + INDEX { IMPLIED hdsl2ShdslSpanConfProfileName } + ::= { hdsl2ShdslSpanConfProfileTable 1 } + +Hdsl2ShdslSpanConfProfileEntry ::= + SEQUENCE + { + hdsl2ShdslSpanConfProfileName SnmpAdminString, + hdsl2ShdslSpanConfWireInterface INTEGER, + hdsl2ShdslSpanConfMinLineRate Unsigned32, + hdsl2ShdslSpanConfMaxLineRate Unsigned32, + hdsl2ShdslSpanConfPSD INTEGER, + hdsl2ShdslSpanConfTransmissionMode + Hdsl2ShdslTransmissionModeType, + hdsl2ShdslSpanConfRemoteEnabled INTEGER, + hdsl2ShdslSpanConfPowerFeeding INTEGER, + hdsl2ShdslSpanConfCurrCondTargetMarginDown Integer32, + hdsl2ShdslSpanConfWorstCaseTargetMarginDown Integer32, + hdsl2ShdslSpanConfCurrCondTargetMarginUp Integer32, + hdsl2ShdslSpanConfWorstCaseTargetMarginUp Integer32, + hdsl2ShdslSpanConfUsedTargetMargins BITS, + hdsl2ShdslSpanConfReferenceClock + Hdsl2ShdslClockReferenceType, + hdsl2ShdslSpanConfLineProbeEnable INTEGER, + hdsl2ShdslSpanConfProfileRowStatus RowStatus + } + +hdsl2ShdslSpanConfProfileName OBJECT-TYPE + + + + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is the unique index associated with this profile. + Entries in this table are referenced via the object + hdsl2ShdslSpanConfProfile in Hdsl2ShdslSpanConfEntry." + ::= { hdsl2ShdslSpanConfProfileEntry 1 } + +hdsl2ShdslSpanConfWireInterface OBJECT-TYPE + SYNTAX INTEGER + { + twoWire(1), + fourWire(2), + sixWire(3), + eightWire(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the two-wire or optional four-wire, + six-wire, or eight-wire operation for SHDSL lines." + DEFVAL { twoWire } + ::= { hdsl2ShdslSpanConfProfileEntry 2 } + +hdsl2ShdslSpanConfMinLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the minimum transmission rate for + the associated SHDSL Line in bits-per-second (bps) and includes + both payload (user data) and any applicable framing overhead. + If the minimum line rate equals the maximum line rate + (hdsl2ShdslSpanMaxLineRate), the line rate is considered + 'fixed'. If the minimum line rate is less than the + maximum line rate, the line rate is considered + 'rate-adaptive'." + DEFVAL { 1552000 } + ::= { hdsl2ShdslSpanConfProfileEntry 3 } + +hdsl2ShdslSpanConfMaxLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the maximum transmission rate for + the associated SHDSL Line in bits-per-second (bps) and includes + both payload (user data) and any applicable framing overhead. + If the minimum line rate equals the maximum line rate + (hdsl2ShdslSpanMaxLineRate), the line rate is considered + 'fixed'. If the minimum line rate is less than the + maximum line rate, the line rate is considered + 'rate-adaptive'." + DEFVAL { 1552000 } + ::= { hdsl2ShdslSpanConfProfileEntry 4 } + +hdsl2ShdslSpanConfPSD OBJECT-TYPE + SYNTAX INTEGER + { + symmetric(1), + asymmetric(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures use of symmetric/asymmetric PSD (Power + Spectral Density) Mask for the associated SHDSL Line. Support + for symmetric PSD is mandatory for all supported data rates. + Support for asymmetric PSD is optional." + DEFVAL { symmetric } + ::= { hdsl2ShdslSpanConfProfileEntry 5 } + +hdsl2ShdslSpanConfTransmissionMode OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the regional setting for the SHDSL + line." + DEFVAL { { region1 } } + ::= { hdsl2ShdslSpanConfProfileEntry 6 } + +hdsl2ShdslSpanConfRemoteEnabled OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for remote management + of the units in an SHDSL line from the STU-R via the EOC." + + + + DEFVAL { enabled } + ::= { hdsl2ShdslSpanConfProfileEntry 7 } + +hdsl2ShdslSpanConfPowerFeeding OBJECT-TYPE + SYNTAX INTEGER + { + noPower(1), + powerFeed(2), + wettingCurrent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for optional power + feeding in an SHDSL line." + DEFVAL { noPower } + ::= { hdsl2ShdslSpanConfProfileEntry 8 } + +hdsl2ShdslSpanConfCurrCondTargetMarginDown OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the downstream current condition target + SNR margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 9 } + +hdsl2ShdslSpanConfWorstCaseTargetMarginDown OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the downstream worst-case target SNR + margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR + margin is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 10 } + +hdsl2ShdslSpanConfCurrCondTargetMarginUp OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object specifies the upstream current-condition target + SNR margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 11 } + +hdsl2ShdslSpanConfWorstCaseTargetMarginUp OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the upstream worst-case target SNR + margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 12 } + +hdsl2ShdslSpanConfUsedTargetMargins OBJECT-TYPE + SYNTAX BITS + { + currCondDown(0), + worstCaseDown(1), + currCondUp(2), + worstCaseUp(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether a target SNR margin is enabled or + disabled. This is a bit-map of possible settings. The + various bit positions are as follows: + + currCondDown - current-condition downstream target SNR + margin enabled + + worstCaseDown - worst-case downstream target SNR margin + enabled + + currCondUp - current-condition upstream target SNR + margin enabled + + worstCaseUp - worst-case upstream target SNR margin + enabled." + + + + DEFVAL { { currCondDown } } + ::= { hdsl2ShdslSpanConfProfileEntry 13 } + +hdsl2ShdslSpanConfReferenceClock OBJECT-TYPE + SYNTAX Hdsl2ShdslClockReferenceType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the clock reference for the STU-C + in an SHDSL Line." + DEFVAL { localClk } + ::= { hdsl2ShdslSpanConfProfileEntry 14 } + +hdsl2ShdslSpanConfLineProbeEnable OBJECT-TYPE + SYNTAX INTEGER + { + disable(1), + enable(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for Line Probe of + the units in an SHDSL line. When Line Probe is enabled, the + system performs Line Probing to find the best possible + rate. If Line Probe is disabled, the rate adaptation phase + is skipped to shorten set up time." + DEFVAL { disable } + ::= { hdsl2ShdslSpanConfProfileEntry 15 } + +hdsl2ShdslSpanConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation/deletion of the associated + entry in this table per the semantics of RowStatus. If an + active entry is referenced in hdsl2ShdslSpanConfProfile, the + entry MUST remain active until all references are removed." + ::= { hdsl2ShdslSpanConfProfileEntry 16 } + +-- Segment Endpoint Alarm Configuration Profile group +-- + +hdsl2ShdslEndpointAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table supports definitions of alarm configuration + profiles for HDSL2/SHDSL segment endpoints. This table + MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 11 } + +hdsl2ShdslEndpointAlarmConfProfileEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single alarm configuration profile. + Each profile contains a set of parameters for setting alarm + thresholds for various performance attributes monitored at + HDSL2/SHDSL segment endpoints. Profiles may be created/deleted + using the row creation/deletion mechanism via + hdsl2ShdslEndpointAlarmConfProfileRowStatus. If an active + entry is referenced in either hdsl2ShdslSpanConfAlarmProfile + or hdsl2ShdslEndpointAlarmConfProfile, the entry MUST remain + active until all references are removed." + INDEX { IMPLIED hdsl2ShdslEndpointAlarmConfProfileName } + ::= { hdsl2ShdslEndpointAlarmConfProfileTable 1 } + +Hdsl2ShdslEndpointAlarmConfProfileEntry ::= + SEQUENCE + { + hdsl2ShdslEndpointAlarmConfProfileName SnmpAdminString, + hdsl2ShdslEndpointThreshLoopAttenuation Integer32, + hdsl2ShdslEndpointThreshSNRMargin Integer32, + hdsl2ShdslEndpointThreshES + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshSES + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshCRCanomalies Integer32, + hdsl2ShdslEndpointThreshLOSWS + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshUAS + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointAlarmConfProfileRowStatus RowStatus + } + +hdsl2ShdslEndpointAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is the unique index associated with this profile." + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 1 } + + + +hdsl2ShdslEndpointThreshLoopAttenuation OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the loop attenuation alarm threshold. + When the current value of hdsl2ShdslEndpointCurrAtn reaches + or exceeds this threshold, an hdsl2ShdslLoopAttenCrossing + MAY be generated." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 2 } + +hdsl2ShdslEndpointThreshSNRMargin OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the SNR margin alarm threshold. + When the current value of hdsl2ShdslEndpointCurrSnrMgn + reaches or drops below this threshold, a + hdsl2ShdslSNRMarginCrossing MAY be generated." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 3 } + +hdsl2ShdslEndpointThreshES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + Errored Seconds (ES) within any given 15-minute performance + data collection interval. If the value of Errored Seconds + in a particular 15-minute collection interval reaches/ + exceeds this value, an hdsl2ShdslPerfESThresh MAY be + generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 4 } + +hdsl2ShdslEndpointThreshSES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the threshold for the number of + Severely Errored Seconds (SES) within any given 15-minute + performance data collection interval. If the value of + Severely Errored Seconds in a particular 15-minute collection + interval reaches/exceeds this value, an hdsl2ShdslPerfSESThresh + MAY be generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 5 } + +hdsl2ShdslEndpointThreshCRCanomalies OBJECT-TYPE + SYNTAX Integer32 + UNITS "detected CRC Anomalies" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + CRC anomalies within any given 15-minute performance data + collection interval. If the value of CRC anomalies in a + particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfCRCanomaliesThresh MAY be + generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 6 } + +hdsl2ShdslEndpointThreshLOSWS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + Loss of Sync Word (LOSW) Seconds within any given 15-minute + performance data collection interval. If the value of LOSW + in a particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfLOSWSThresh MAY be generated. + At most, one notification will be sent per interval per + endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 7 } + +hdsl2ShdslEndpointThreshUAS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the threshold for the number of + Unavailable Seconds (UAS) within any given 15-minute + performance data collection interval. If the value of UAS + in a particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfUASThresh MAY be generated. + At most, one notification will be sent per interval per + endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 8 } + +hdsl2ShdslEndpointAlarmConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation/deletion of the associated + entry in this table as per the semantics of RowStatus. + If an active entry is referenced in either + hdsl2ShdslSpanConfAlarmProfile or + hdsl2ShdslEndpointAlarmConfProfile, the entry MUST remain + active until all references are removed." + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 9 } + +-- Notifications Group +-- + +hdsl2ShdslNotifications OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 0 } + +hdsl2ShdslLoopAttenCrossing NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrAtn, + hdsl2ShdslEndpointThreshLoopAttenuation + } + STATUS current + DESCRIPTION + "This notification indicates that the loop attenuation + threshold (as per the hdsl2ShdslEndpointThreshLoopAttenuation + value) has been reached/exceeded for the HDSL2/SHDSL segment + endpoint." + ::= { hdsl2ShdslNotifications 1 } + +hdsl2ShdslSNRMarginCrossing NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrSnrMgn, + hdsl2ShdslEndpointThreshSNRMargin + } + + + + STATUS current + DESCRIPTION + "This notification indicates that the SNR margin threshold (as + per the hdsl2ShdslEndpointThreshSNRMargin value) has been + reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 2 } + +hdsl2ShdslPerfESThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinES, + hdsl2ShdslEndpointThreshES + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds + threshold (as per the hdsl2ShdslEndpointThreshES value) + has been reached/exceeded for the HDSL2/SHDSL segment + endpoint." + ::= { hdsl2ShdslNotifications 3 } + +hdsl2ShdslPerfSESThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinSES, + hdsl2ShdslEndpointThreshSES + } + STATUS current + DESCRIPTION + "This notification indicates that the severely errored seconds + threshold (as per the hdsl2ShdslEndpointThreshSES value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 4 } + +hdsl2ShdslPerfCRCanomaliesThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinCRCanomalies, + hdsl2ShdslEndpointThreshCRCanomalies + } + STATUS current + DESCRIPTION + "This notification indicates that the CRC anomalies threshold + (as per the hdsl2ShdslEndpointThreshCRCanomalies value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 5 } + +hdsl2ShdslPerfLOSWSThresh NOTIFICATION-TYPE + + + + OBJECTS + { + hdsl2ShdslEndpointCurr15MinLOSWS, + hdsl2ShdslEndpointThreshLOSWS + } + STATUS current + DESCRIPTION + "This notification indicates that the LOSW Seconds threshold + (as per the hdsl2ShdslEndpointThreshLOSWS value) has been + reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 6 } + +hdsl2ShdslPerfUASThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinUAS, + hdsl2ShdslEndpointThreshUAS + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold (as per the hdsl2ShdslEndpointThreshUAS value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 7 } + +hdsl2ShdslSpanInvalidNumRepeaters NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslSpanConfNumRepeaters + } + STATUS current + DESCRIPTION + "This notification indicates that a mismatch has been detected + between the number of repeater/regenerator units configured + for an HDSL2/SHDSL line via the hdsl2ShdslSpanConfNumRepeaters + object and the actual number of repeater/regenerator units + discovered via the EOC." + ::= { hdsl2ShdslNotifications 8 } + +hdsl2ShdslLoopbackFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslMaintLoopbackConfig + } + STATUS current + DESCRIPTION + "This notification indicates that an endpoint maintenance + loopback command failed for an HDSL2/SHDSL segment." + + + + ::= { hdsl2ShdslNotifications 9 } + +hdsl2ShdslpowerBackoff NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + powerBackoff in the hdsl2ShdslEndpointCurrStatus object for + this endpoint has changed." + ::= { hdsl2ShdslNotifications 10 } + +hdsl2ShdsldeviceFault NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + deviceFault in the hdsl2ShdslEndpointCurrStatus object for + this endpoint has changed." + ::= { hdsl2ShdslNotifications 11 } + +hdsl2ShdsldcContinuityFault NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + dcContinuityFault in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + ::= { hdsl2ShdslNotifications 12 } + +hdsl2ShdslconfigInitFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + configInitFailure in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + + + + ::= { hdsl2ShdslNotifications 13 } + +hdsl2ShdslprotocolInitFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + protocolInitFailure in the hdsl2ShdslEndpointCurrStatus + object for this endpoint has changed." + ::= { hdsl2ShdslNotifications 14 } + +hdsl2ShdslnoNeighborPresent NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + noNeighborPresent in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + ::= { hdsl2ShdslNotifications 15 } + +hdsl2ShdslLocalPowerLoss NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslInvVendorID + } + STATUS current + DESCRIPTION + "This notification indicates impending unit failure due to + loss of local power (last gasp)." + ::= { hdsl2ShdslNotifications 16 } + +-- conformance information +-- + +hdsl2ShdslConformance OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 3 } +hdsl2ShdslGroups OBJECT IDENTIFIER ::= + { hdsl2ShdslConformance 1 } +hdsl2ShdslCompliances OBJECT IDENTIFIER ::= + { hdsl2ShdslConformance 2 } + +-- agent compliance statements + + + + +hdsl2ShdslLineMibCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities that implement + HDSL2 and SHDSL. The version of SHDSL supported in this + compliance statement is g.shdsl. + + **** This compliance statement is deprecated. ****" + MODULE + MANDATORY-GROUPS + { + hdsl2ShdslSpanConfGroup, + hdsl2ShdslSpanStatusGroup, + hdsl2ShdslInventoryGroup, + hdsl2ShdslEndpointConfGroup, + hdsl2ShdslEndpointCurrGroup, + hdsl2Shdsl15MinIntervalGroup, + hdsl2Shdsl1DayIntervalGroup, + hdsl2ShdslMaintenanceGroup, + hdsl2ShdslEndpointAlarmConfGroup, + hdsl2ShdslNotificationGroup + } + +GROUP hdsl2ShdslInventoryShdslGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanShdslStatusGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanConfProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +OBJECT hdsl2ShdslSpanConfWireInterface + SYNTAX INTEGER + { + twoWire(1), + fourWire(2) + } + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + + + +OBJECT hdsl2ShdslStatusMaxAttainableLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslStatusActualLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslSpanConfMinLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslSpanConfMaxLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + + ::= { hdsl2ShdslCompliances 1 } + +hdsl2GshdslbisLineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + HDSL2 and SHDSL. The version of SHDSL supported in this + compliance statement is g.shdsl.bis." + MODULE + MANDATORY-GROUPS + { + hdsl2ShdslSpanConfGroup, + hdsl2ShdslSpanStatusGroup, + hdsl2ShdslInventoryGroup, + hdsl2ShdslEndpointConfGroup, + hdsl2ShdslEndpointCurrGroup, + hdsl2Shdsl15MinIntervalGroup, + hdsl2Shdsl1DayIntervalGroup, + hdsl2ShdslMaintenanceGroup, + hdsl2ShdslEndpointAlarmConfGroup, + + + + hdsl2ShdslNotificationGroup + } + +GROUP hdsl2ShdslInventoryShdslGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanShdslStatusGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanConfProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslWirePairGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslPayloadRateGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + + ::= { hdsl2ShdslCompliances 2 } + +-- units of conformance +-- + +hdsl2ShdslSpanConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslSpanConfNumRepeaters, + hdsl2ShdslSpanConfProfile, + hdsl2ShdslSpanConfAlarmProfile + } + STATUS current + DESCRIPTION + "This group supports objects for configuring span-related + parameters for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 1 } + +hdsl2ShdslSpanStatusGroup OBJECT-GROUP + OBJECTS + + + + { + hdsl2ShdslStatusNumAvailRepeaters + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving span-related + status for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 2 } + +hdsl2ShdslInventoryShdslGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslInvTransmissionModeCapability + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving SHDSL-specific + inventory information." + ::= { hdsl2ShdslGroups 3 } + +hdsl2ShdslSpanShdslStatusGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslStatusMaxAttainableLineRate, + hdsl2ShdslStatusActualLineRate, + hdsl2ShdslStatusTransmissionModeCurrent + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving SHDSL-specific + span-related status." + ::= { hdsl2ShdslGroups 4 } + +hdsl2ShdslInventoryGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslInvVendorID, + hdsl2ShdslInvVendorModelNumber, + hdsl2ShdslInvVendorSerialNumber, + hdsl2ShdslInvVendorEOCSoftwareVersion, + hdsl2ShdslInvStandardVersion, + hdsl2ShdslInvVendorListNumber, + hdsl2ShdslInvVendorIssueNumber, + hdsl2ShdslInvVendorSoftwareVersion, + hdsl2ShdslInvEquipmentCode, + hdsl2ShdslInvVendorOther + } + STATUS current + + + + DESCRIPTION + "This group supports objects that provide unit inventory + information about the units in HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 5 } + +hdsl2ShdslEndpointConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrAtn + } + STATUS current + DESCRIPTION + "This group supports objects for configuring parameters for + segment endpoints in HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 6 } + +hdsl2ShdslEndpointCurrGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrAtn, + hdsl2ShdslEndpointCurrSnrMgn, + hdsl2ShdslEndpointCurrStatus, + hdsl2ShdslEndpointES, + hdsl2ShdslEndpointSES, + hdsl2ShdslEndpointCRCanomalies, + hdsl2ShdslEndpointLOSWS, + hdsl2ShdslEndpointUAS, + hdsl2ShdslEndpointCurr15MinTimeElapsed, + hdsl2ShdslEndpointCurr15MinES, + hdsl2ShdslEndpointCurr15MinSES, + hdsl2ShdslEndpointCurr15MinCRCanomalies, + hdsl2ShdslEndpointCurr15MinLOSWS, + hdsl2ShdslEndpointCurr15MinUAS, + hdsl2ShdslEndpointCurr1DayTimeElapsed, + hdsl2ShdslEndpointCurr1DayES, + hdsl2ShdslEndpointCurr1DaySES, + hdsl2ShdslEndpointCurr1DayCRCanomalies, + hdsl2ShdslEndpointCurr1DayLOSWS, + hdsl2ShdslEndpointCurr1DayUAS + } + STATUS current + DESCRIPTION + "This group supports objects that provide current status and + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 7 } + +hdsl2Shdsl15MinIntervalGroup OBJECT-GROUP + + + + OBJECTS + { + hdsl2Shdsl15MinIntervalES, + hdsl2Shdsl15MinIntervalSES, + hdsl2Shdsl15MinIntervalCRCanomalies, + hdsl2Shdsl15MinIntervalLOSWS, + hdsl2Shdsl15MinIntervalUAS + } + STATUS current + DESCRIPTION + "This group supports objects that maintain historic + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines in 15-minute intervals." + ::= { hdsl2ShdslGroups 8 } + +hdsl2Shdsl1DayIntervalGroup OBJECT-GROUP + OBJECTS + { + hdsl2Shdsl1DayIntervalMoniSecs, + hdsl2Shdsl1DayIntervalES, + hdsl2Shdsl1DayIntervalSES, + hdsl2Shdsl1DayIntervalCRCanomalies, + hdsl2Shdsl1DayIntervalLOSWS, + hdsl2Shdsl1DayIntervalUAS + } + STATUS current + DESCRIPTION + "This group supports objects that maintain historic + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines in 1-day intervals." + ::= { hdsl2ShdslGroups 9 } + +hdsl2ShdslMaintenanceGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslMaintLoopbackConfig, + hdsl2ShdslMaintTipRingReversal, + hdsl2ShdslMaintPowerBackOff, + hdsl2ShdslMaintSoftRestart, + hdsl2ShdslMaintLoopbackTimeout, + hdsl2ShdslMaintUnitPowerSource + } + STATUS current + DESCRIPTION + "This group supports objects that provide support for + maintenance actions for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 10 } + + + + +hdsl2ShdslEndpointAlarmConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointAlarmConfProfile, + hdsl2ShdslEndpointThreshLoopAttenuation, + hdsl2ShdslEndpointThreshSNRMargin, + hdsl2ShdslEndpointThreshES, + hdsl2ShdslEndpointThreshSES, + hdsl2ShdslEndpointThreshCRCanomalies, + hdsl2ShdslEndpointThreshLOSWS, + hdsl2ShdslEndpointThreshUAS, + hdsl2ShdslEndpointAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "This group supports objects that allow configuration of alarm + thresholds for various performance parameters for HDSL2/SHDSL + lines." + ::= { hdsl2ShdslGroups 11 } + +hdsl2ShdslNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + hdsl2ShdslLoopAttenCrossing, + hdsl2ShdslSNRMarginCrossing, + hdsl2ShdslPerfESThresh, + hdsl2ShdslPerfSESThresh, + hdsl2ShdslPerfCRCanomaliesThresh, + hdsl2ShdslPerfLOSWSThresh, + hdsl2ShdslPerfUASThresh, + hdsl2ShdslSpanInvalidNumRepeaters, + hdsl2ShdslLoopbackFailure, + hdsl2ShdslpowerBackoff, + hdsl2ShdsldeviceFault, + hdsl2ShdsldcContinuityFault, + hdsl2ShdslconfigInitFailure, + hdsl2ShdslprotocolInitFailure, + hdsl2ShdslnoNeighborPresent, + hdsl2ShdslLocalPowerLoss + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 12 } + +hdsl2ShdslSpanConfProfileGroup OBJECT-GROUP + OBJECTS + + + + { + hdsl2ShdslSpanConfWireInterface, + hdsl2ShdslSpanConfMinLineRate, + hdsl2ShdslSpanConfMaxLineRate, + hdsl2ShdslSpanConfPSD, + hdsl2ShdslSpanConfTransmissionMode, + hdsl2ShdslSpanConfRemoteEnabled, + hdsl2ShdslSpanConfPowerFeeding, + hdsl2ShdslSpanConfCurrCondTargetMarginDown, + hdsl2ShdslSpanConfWorstCaseTargetMarginDown, + hdsl2ShdslSpanConfCurrCondTargetMarginUp, + hdsl2ShdslSpanConfWorstCaseTargetMarginUp, + hdsl2ShdslSpanConfUsedTargetMargins, + hdsl2ShdslSpanConfReferenceClock, + hdsl2ShdslSpanConfLineProbeEnable, + hdsl2ShdslSpanConfProfileRowStatus + } + STATUS current + DESCRIPTION + "This group supports objects that constitute configuration + profiles for configuring span-related parameters in SHDSL + lines." + ::= { hdsl2ShdslGroups 13 } + +hdsl2ShdslWirePairGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrTipRingReversal, + hdsl2ShdslEndpointCurrActivationState + } + STATUS current + DESCRIPTION + "This group supports objects that provide the status + of SHDSL-specific wire pairs." + ::= { hdsl2ShdslGroups 14 } + +hdsl2ShdslPayloadRateGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslStatusMaxAttainablePayloadRate, + hdsl2ShdslStatusActualPayloadRate + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving payload rates + that exclude any framing overhead." + ::= { hdsl2ShdslGroups 15 } + + + + +END diff --git a/mibs/ietf/HOST-RESOURCES-MIB b/mibs/ietf/HOST-RESOURCES-MIB new file mode 100644 index 0000000..0afd254 --- /dev/null +++ b/mibs/ietf/HOST-RESOURCES-MIB @@ -0,0 +1,1534 @@ +HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, OBJECT-TYPE, mib-2, +Integer32, Counter32, Gauge32, TimeTicks FROM SNMPv2-SMI + +TEXTUAL-CONVENTION, DisplayString, +TruthValue, DateAndTime, AutonomousType FROM SNMPv2-TC + +MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + +InterfaceIndexOrZero FROM IF-MIB; + +hostResourcesMibModule MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March 2000 + ORGANIZATION "IETF Host Resources MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Postal: Lucent Technologies, Inc. + 1213 Innsbruck Dr. + Sunnyvale, CA 94089 + USA + Phone: 650-318-1251 + Fax: 650-318-1633 + Email: waldbusser@lucent.com + In addition, the Host Resources MIB mailing list is + dedicated to discussion of this MIB. To join the + mailing list, send a request message to + hostmib-request@andrew.cmu.edu. The mailing list + address is hostmib@andrew.cmu.edu." + + DESCRIPTION + "This MIB is for use in managing host systems. The term + `host' is construed to mean any computer that communicates + with other similar computers attached to the internet and + that is directly used by one or more human beings. Although + this MIB does not necessarily apply to devices whose primary + function is communications services (e.g., terminal servers, + routers, bridges, monitoring equipment), such relevance is + not explicitly precluded. This MIB instruments attributes + common to all internet hosts including, for example, both + personal computers and systems that run variants of Unix." + + REVISION "200003060000Z" -- 6 March 2000 + DESCRIPTION + "Clarifications and bug fixes based on implementation + experience. This revision was also reformatted in the SMIv2 + format. The revisions made were: + + New RFC document standards: + Added Copyright notice, updated introduction to SNMP + Framework, updated references section, added reference to + RFC 2119, and added a meaningful Security Considerations + section. + + New IANA considerations section for registration of new types + + Conversion to new SMIv2 syntax for the following types and + macros: + Counter32, Integer32, Gauge32, MODULE-IDENTITY, + OBJECT-TYPE, TEXTUAL-CONVENTION, OBJECT-IDENTITY, + MODULE-COMPLIANCE, OBJECT-GROUP + + Used new Textual Conventions: + TruthValue, DateAndTime, AutonomousType, + InterfaceIndexOrZero + + Fixed typo in hrPrinterStatus. + + Added missing error bits to hrPrinterDetectedErrorState and + clarified confusion resulting from suggested mappings to + hrPrinterStatus. + Clarified that size of objects of type + InternationalDisplayString is number of octets, not number + of encoded symbols. + + Clarified the use of the following objects based on + implementation experience: + hrSystemInitialLoadDevice, hrSystemInitialLoadParameters, + hrMemorySize, hrStorageSize, hrStorageAllocationFailures, + hrDeviceErrors, hrProcessorLoad, hrNetworkIfIndex, + hrDiskStorageCapacity, hrSWRunStatus, hrSWRunPerfCPU, + and hrSWInstalledDate. + + Clarified implementation technique for hrSWInstalledTable. + + Used new AUGMENTS clause for hrSWRunPerfTable. + + Added Internationalization Considerations section. + +This revision published as RFC2790." + + REVISION "9910202200Z" -- 20 October, 1999 + DESCRIPTION + "The original version of this MIB, published as + RFC1514." + ::= { hrMIBAdminInfo 1 } + +host OBJECT IDENTIFIER ::= { mib-2 25 } + +hrSystem OBJECT IDENTIFIER ::= { host 1 } +hrStorage OBJECT IDENTIFIER ::= { host 2 } +hrDevice OBJECT IDENTIFIER ::= { host 3 } +hrSWRun OBJECT IDENTIFIER ::= { host 4 } +hrSWRunPerf OBJECT IDENTIFIER ::= { host 5 } +hrSWInstalled OBJECT IDENTIFIER ::= { host 6 } +hrMIBAdminInfo OBJECT IDENTIFIER ::= { host 7 } + +-- textual conventions + +KBytes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Storage size, expressed in units of 1024 bytes." + SYNTAX Integer32 (0..2147483647) + +ProductID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is intended to identify the + manufacturer, model, and version of a specific + hardware or software product. It is suggested that + these OBJECT IDENTIFIERs are allocated such that all + products from a particular manufacturer are registered + under a subtree distinct to that manufacturer. In + addition, all versions of a product should be + registered under a subtree distinct to that product. + With this strategy, a management station may uniquely + determine the manufacturer and/or model of a product + whose productID is unknown to the management station. + Objects of this type may be useful for inventory + purposes or for automatically detecting + incompatibilities or version mismatches between + various hardware and software components on a system. + + For example, the product ID for the ACME 4860 66MHz + clock doubled processor might be: + enterprises.acme.acmeProcessors.a4860DX2.MHz66 + + A software product might be registered as: + enterprises.acme.acmeOperatingSystems.acmeDOS.six(6).one(1) + " + SYNTAX OBJECT IDENTIFIER + +-- unknownProduct will be used for any unknown ProductID +-- unknownProduct OBJECT IDENTIFIER ::= { 0 0 } + +InternationalDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model textual information + in some character set. A network management station + should use a local algorithm to determine which + character set is in use and how it should be + displayed. Note that this character set may be + encoded with more than one octet per symbol, but will + most often be NVT ASCII. When a size clause is + specified for an object of this type, the size refers + to the length in octets, not the number of symbols." + SYNTAX OCTET STRING + +-- The Host Resources System Group + +hrSystemUptime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time since this host was last + initialized. Note that this is different from + sysUpTime in the SNMPv2-MIB [RFC1907] because + sysUpTime is the uptime of the network management + portion of the system." + ::= { hrSystem 1 } + +hrSystemDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The host's notion of the local date and time of day." + ::= { hrSystem 2 } + +hrSystemInitialLoadDevice OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The index of the hrDeviceEntry for the device from + which this host is configured to load its initial + operating system configuration (i.e., which operating + system code and/or boot parameters). + + Note that writing to this object just changes the + configuration that will be used the next time the + operating system is loaded and does not actually cause + the reload to occur." + ::= { hrSystem 3 } + +hrSystemInitialLoadParameters OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the parameters (e.g. a pathname + and parameter) supplied to the load device when + requesting the initial operating system configuration + from that device. + + Note that writing to this object just changes the + configuration that will be used the next time the + operating system is loaded and does not actually cause + the reload to occur." + ::= { hrSystem 4 } + +hrSystemNumUsers OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions for which this host is + storing state information. A session is a collection + of processes requiring a single act of user + authentication and possibly subject to collective job + control." + ::= { hrSystem 5 } + +hrSystemProcesses OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of process contexts currently loaded or + running on this system." + ::= { hrSystem 6 } + +hrSystemMaxProcesses OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of process contexts this system + can support. If there is no fixed maximum, the value + should be zero. On systems that have a fixed maximum, + this object can help diagnose failures that occur when + this maximum is reached." + ::= { hrSystem 7 } + +-- The Host Resources Storage Group + +-- Registration point for storage types, for use with hrStorageType. +-- These are defined in the HOST-RESOURCES-TYPES module. +hrStorageTypes OBJECT IDENTIFIER ::= { hrStorage 1 } + +hrMemorySize OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of physical read-write main memory, + typically RAM, contained by the host." + ::= { hrStorage 2 } + +hrStorageTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of logical storage areas on + the host. + + An entry shall be placed in the storage table for each + logical area of storage that is allocated and has + fixed resource limits. The amount of storage + represented in an entity is the amount actually usable + by the requesting entity, and excludes loss due to + formatting or file system reference information. + + These entries are associated with logical storage + areas, as might be seen by an application, rather than + physical storage entities which are typically seen by + an operating system. Storage such as tapes and + floppies without file systems on them are typically + not allocated in chunks by the operating system to + requesting applications, and therefore shouldn't + appear in this table. Examples of valid storage for + this table include disk partitions, file systems, ram + (for some architectures this is further segmented into + regular memory, extended memory, and so on), backing + store for virtual memory (`swap space'). + + This table is intended to be a useful diagnostic for + `out of memory' and `out of buffers' types of + failures. In addition, it can be a useful performance + monitoring tool for tracking memory, disk, or buffer + usage." + ::= { hrStorage 3 } + +hrStorageEntry OBJECT-TYPE + SYNTAX HrStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one logical storage area on + the host. As an example, an instance of the + hrStorageType object might be named hrStorageType.3" + INDEX { hrStorageIndex } + ::= { hrStorageTable 1 } + +HrStorageEntry ::= SEQUENCE { + hrStorageIndex Integer32, + hrStorageType AutonomousType, + hrStorageDescr DisplayString, + hrStorageAllocationUnits Integer32, + hrStorageSize Integer32, + hrStorageUsed Integer32, + hrStorageAllocationFailures Counter32 + } + +hrStorageIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each logical storage area + contained by the host." + ::= { hrStorageEntry 1 } + +hrStorageType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of storage represented by this entry." + ::= { hrStorageEntry 2 } + +hrStorageDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the type and instance of the storage + described by this entry." + ::= { hrStorageEntry 3 } + +hrStorageAllocationUnits OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size, in bytes, of the data objects allocated + from this pool. If this entry is monitoring sectors, + blocks, buffers, or packets, for example, this number + will commonly be greater than one. Otherwise this + number will typically be one." + ::= { hrStorageEntry 4 } + +hrStorageSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The size of the storage represented by this entry, in + units of hrStorageAllocationUnits. This object is + writable to allow remote configuration of the size of + the storage area in those cases where such an + operation makes sense and is possible on the + underlying system. For example, the amount of main + memory allocated to a buffer pool might be modified or + the amount of disk space allocated to virtual memory + might be modified." + ::= { hrStorageEntry 5 } + +hrStorageUsed OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of the storage represented by this entry + that is allocated, in units of + hrStorageAllocationUnits." + ::= { hrStorageEntry 6 } + +hrStorageAllocationFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests for storage represented by + this entry that could not be honored due to not enough + storage. It should be noted that as this object has a + SYNTAX of Counter32, that it does not have a defined + initial value. However, it is recommended that this + object be initialized to zero, even though management + stations must not depend on such an initialization." + ::= { hrStorageEntry 7 } + +-- The Host Resources Device Group +-- +-- The device group is useful for identifying and diagnosing the +-- devices on a system. The hrDeviceTable contains common +-- information for any type of device. In addition, some devices +-- have device-specific tables for more detailed information. More +-- such tables may be defined in the future for other device types. + +-- Registration point for device types, for use with hrDeviceType. + +-- These are defined in the HOST-RESOURCES-TYPES module. +hrDeviceTypes OBJECT IDENTIFIER ::= { hrDevice 1 } + +hrDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of devices contained by the + host." + ::= { hrDevice 2 } + +hrDeviceEntry OBJECT-TYPE + SYNTAX HrDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one device contained by the + host. As an example, an instance of the hrDeviceType + object might be named hrDeviceType.3" + INDEX { hrDeviceIndex } + ::= { hrDeviceTable 1 } + +HrDeviceEntry ::= SEQUENCE { + hrDeviceIndex Integer32, + hrDeviceType AutonomousType, + hrDeviceDescr DisplayString, + hrDeviceID ProductID, + hrDeviceStatus INTEGER, + hrDeviceErrors Counter32 + } + +hrDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each device contained by the host. + The value for each device must remain constant at + least from one re-initialization of the agent to the + next re-initialization." + ::= { hrDeviceEntry 1 } + +hrDeviceType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of device. + + If this value is + `hrDeviceProcessor { hrDeviceTypes 3 }' then an entry + exists in the hrProcessorTable which corresponds to + this device. + + If this value is + `hrDeviceNetwork { hrDeviceTypes 4 }', then an entry + exists in the hrNetworkTable which corresponds to this + device. + + If this value is + `hrDevicePrinter { hrDeviceTypes 5 }', then an entry + exists in the hrPrinterTable which corresponds to this + device. + + If this value is + `hrDeviceDiskStorage { hrDeviceTypes 6 }', then an + entry exists in the hrDiskStorageTable which + corresponds to this device." + ::= { hrDeviceEntry 2 } + +hrDeviceDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this device, including the + device's manufacturer and revision, and optionally, + its serial number." + ::= { hrDeviceEntry 3 } + +hrDeviceID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID for this device." + ::= { hrDeviceEntry 4 } + +hrDeviceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + running(2), + warning(3), + testing(4), + down(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the device described + by this row of the table. A value unknown(1) + indicates that the current state of the device is + unknown. running(2) indicates that the device is up + and running and that no unusual error conditions are + known. The warning(3) state indicates that agent has + been informed of an unusual error condition by the + operational software (e.g., a disk device driver) but + that the device is still 'operational'. An example + would be a high number of soft errors on a disk. A + value of testing(4), indicates that the device is not + available for use because it is in the testing state. + The state of down(5) is used only when the agent has + been informed that the device is not available for any + use." + ::= { hrDeviceEntry 5 } + +hrDeviceErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors detected on this device. It + should be noted that as this object has a SYNTAX of + Counter32, that it does not have a defined initial + value. However, it is recommended that this object be + initialized to zero, even though management stations + must not depend on such an initialization." + ::= { hrDeviceEntry 6 } + +hrProcessorTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrProcessorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of processors contained by the + host. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceProcessor'." + ::= { hrDevice 3 } + +hrProcessorEntry OBJECT-TYPE + SYNTAX HrProcessorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one processor contained by + the host. The hrDeviceIndex in the index represents + the entry in the hrDeviceTable that corresponds to the + hrProcessorEntry. + + As an example of how objects in this table are named, + an instance of the hrProcessorFrwID object might be + named hrProcessorFrwID.3" + INDEX { hrDeviceIndex } + ::= { hrProcessorTable 1 } + +HrProcessorEntry ::= SEQUENCE { + hrProcessorFrwID ProductID, + hrProcessorLoad Integer32 + } + +hrProcessorFrwID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of the firmware associated with the + processor." + ::= { hrProcessorEntry 1 } + +hrProcessorLoad OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average, over the last minute, of the percentage + of time that this processor was not idle. + Implementations may approximate this one minute + smoothing period if necessary." + ::= { hrProcessorEntry 2 } + +hrNetworkTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of network devices contained + by the host. + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceNetwork'." + ::= { hrDevice 4 } + +hrNetworkEntry OBJECT-TYPE + SYNTAX HrNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one network device contained + by the host. The hrDeviceIndex in the index + represents the entry in the hrDeviceTable that + corresponds to the hrNetworkEntry. + + As an example of how objects in this table are named, + an instance of the hrNetworkIfIndex object might be + named hrNetworkIfIndex.3" + INDEX { hrDeviceIndex } + ::= { hrNetworkTable 1 } + +HrNetworkEntry ::= SEQUENCE { + hrNetworkIfIndex InterfaceIndexOrZero + } + +hrNetworkIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex which corresponds to this + network device. If this device is not represented in + the ifTable, then this value shall be zero." + ::= { hrNetworkEntry 1 } + +hrPrinterTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrPrinterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of printers local to the host. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDevicePrinter'." + ::= { hrDevice 5 } + +hrPrinterEntry OBJECT-TYPE + SYNTAX HrPrinterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one printer local to the + host. The hrDeviceIndex in the index represents the + entry in the hrDeviceTable that corresponds to the + hrPrinterEntry. + + As an example of how objects in this table are named, + an instance of the hrPrinterStatus object might be + named hrPrinterStatus.3" + INDEX { hrDeviceIndex } + ::= { hrPrinterTable 1 } + +HrPrinterEntry ::= SEQUENCE { + hrPrinterStatus INTEGER, + hrPrinterDetectedErrorState OCTET STRING + } + +hrPrinterStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + idle(3), + printing(4), + warmup(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this printer device." + ::= { hrPrinterEntry 1 } + +hrPrinterDetectedErrorState OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents any error conditions detected + by the printer. The error conditions are encoded as + bits in an octet string, with the following + definitions: + + Condition Bit # + + lowPaper 0 + noPaper 1 + lowToner 2 + noToner 3 + doorOpen 4 + jammed 5 + offline 6 + serviceRequested 7 + inputTrayMissing 8 + outputTrayMissing 9 + markerSupplyMissing 10 + outputNearFull 11 + outputFull 12 + inputTrayEmpty 13 + overduePreventMaint 14 + + Bits are numbered starting with the most significant + bit of the first byte being bit 0, the least + significant bit of the first byte being bit 7, the + most significant bit of the second byte being bit 8, + and so on. A one bit encodes that the condition was + detected, while a zero bit encodes that the condition + was not detected. + + This object is useful for alerting an operator to + specific warning or error conditions that may occur, + especially those requiring human intervention." + ::= { hrPrinterEntry 2 } + +hrDiskStorageTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrDiskStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of long-term storage devices + contained by the host. In particular, disk devices + accessed remotely over a network are not included + here. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceDiskStorage'." + ::= { hrDevice 6 } + +hrDiskStorageEntry OBJECT-TYPE + SYNTAX HrDiskStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one long-term storage device + contained by the host. The hrDeviceIndex in the index + represents the entry in the hrDeviceTable that + corresponds to the hrDiskStorageEntry. As an example, + an instance of the hrDiskStorageCapacity object might + be named hrDiskStorageCapacity.3" + INDEX { hrDeviceIndex } + ::= { hrDiskStorageTable 1 } + +HrDiskStorageEntry ::= SEQUENCE { + hrDiskStorageAccess INTEGER, + hrDiskStorageMedia INTEGER, + hrDiskStorageRemoveble TruthValue, + hrDiskStorageCapacity KBytes + } + +hrDiskStorageAccess OBJECT-TYPE + SYNTAX INTEGER { + readWrite(1), + readOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication if this long-term storage device is + readable and writable or only readable. This should + reflect the media type, any write-protect mechanism, + and any device configuration that affects the entire + device." + ::= { hrDiskStorageEntry 1 } + +hrDiskStorageMedia OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + hardDisk(3), + floppyDisk(4), + opticalDiskROM(5), + opticalDiskWORM(6), -- Write Once Read Many + opticalDiskRW(7), + ramDisk(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of media used in this long- + term storage device." + ::= { hrDiskStorageEntry 2 } + +hrDiskStorageRemoveble OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether or not the disk media may be removed + from the drive." + ::= { hrDiskStorageEntry 3 } + +hrDiskStorageCapacity OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size for this long-term storage device. If + the media is removable and is currently removed, this + value should be zero." + ::= { hrDiskStorageEntry 4 } + +hrPartitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrPartitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of partitions for long-term + storage devices contained by the host. In particular, + partitions accessed remotely over a network are not + included here." + ::= { hrDevice 7 } + +hrPartitionEntry OBJECT-TYPE + SYNTAX HrPartitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one partition. The + hrDeviceIndex in the index represents the entry in the + hrDeviceTable that corresponds to the + hrPartitionEntry. + + As an example of how objects in this table are named, + an instance of the hrPartitionSize object might be + named hrPartitionSize.3.1" + INDEX { hrDeviceIndex, hrPartitionIndex } + ::= { hrPartitionTable 1 } + +HrPartitionEntry ::= SEQUENCE { + hrPartitionIndex Integer32, + hrPartitionLabel InternationalDisplayString, + hrPartitionID OCTET STRING, + hrPartitionSize KBytes, + hrPartitionFSIndex Integer32 + } + +hrPartitionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each partition on this long-term + storage device. The value for each long-term storage + device must remain constant at least from one re- + initialization of the agent to the next re- + initialization." + ::= { hrPartitionEntry 1 } + +hrPartitionLabel OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this partition." + ::= { hrPartitionEntry 2 } + +hrPartitionID OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A descriptor which uniquely represents this partition + to the responsible operating system. On some systems, + this might take on a binary representation." + ::= { hrPartitionEntry 3 } + +hrPartitionSize OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of this partition." + ::= { hrPartitionEntry 4 } + +hrPartitionFSIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the file system mounted on this + partition. If no file system is mounted on this + partition, then this value shall be zero. Note that + multiple partitions may point to one file system, + denoting that that file system resides on those + partitions. Multiple file systems may not reside on + one partition." + ::= { hrPartitionEntry 5 } + +-- The File System Table + +-- Registration point for popular File System types, +-- for use with hrFSType. These are defined in the +-- HOST-RESOURCES-TYPES module. +hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } + +hrFSTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrFSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of file systems local to this + host or remotely mounted from a file server. File + systems that are in only one user's environment on a + multi-user system will not be included in this table." + ::= { hrDevice 8 } + +hrFSEntry OBJECT-TYPE + SYNTAX HrFSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one file system local to + this host or remotely mounted from a file server. + File systems that are in only one user's environment + on a multi-user system will not be included in this + table. + + As an example of how objects in this table are named, + an instance of the hrFSMountPoint object might be + named hrFSMountPoint.3" + INDEX { hrFSIndex } + ::= { hrFSTable 1 } + +HrFSEntry ::= SEQUENCE { + hrFSIndex Integer32, + hrFSMountPoint InternationalDisplayString, + hrFSRemoteMountPoint InternationalDisplayString, + hrFSType AutonomousType, + hrFSAccess INTEGER, + hrFSBootable TruthValue, + hrFSStorageIndex Integer32, + hrFSLastFullBackupDate DateAndTime, + hrFSLastPartialBackupDate DateAndTime + } + +hrFSIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each file system local to this + host. The value for each file system must remain + constant at least from one re-initialization of the + agent to the next re-initialization." + ::= { hrFSEntry 1 } + +hrFSMountPoint OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The path name of the root of this file system." + ::= { hrFSEntry 2 } + +hrFSRemoteMountPoint OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the name and/or address of the + server that this file system is mounted from. This + may also include parameters such as the mount point on + the remote file system. If this is not a remote file + system, this string should have a length of zero." + ::= { hrFSEntry 3 } + +hrFSType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the type of this + file system." + ::= { hrFSEntry 4 } + +hrFSAccess OBJECT-TYPE + SYNTAX INTEGER { + readWrite(1), + readOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication if this file system is logically + configured by the operating system to be readable and + writable or only readable. This does not represent + any local access-control policy, except one that is + applied to the file system as a whole." + ::= { hrFSEntry 5 } + +hrFSBootable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether this file system is + bootable." + ::= { hrFSEntry 6 } + +hrFSStorageIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the hrStorageEntry that represents + information about this file system. If there is no + such information available, then this value shall be + zero. The relevant storage entry will be useful in + tracking the percent usage of this file system and + diagnosing errors that may occur when it runs out of + space." + ::= { hrFSEntry 7 } + +hrFSLastFullBackupDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The last date at which this complete file system was + copied to another storage device for backup. This + information is useful for ensuring that backups are + being performed regularly. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrFSEntry 8 } + +hrFSLastPartialBackupDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The last date at which a portion of this file system + was copied to another storage device for backup. This + information is useful for ensuring that backups are + being performed regularly. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrFSEntry 9 } + +-- The Host Resources Running Software Group +-- +-- The hrSWRunTable contains an entry for each distinct piece of +-- software that is running or loaded into physical or virtual +-- memory in preparation for running. This includes the host's +-- operating system, device drivers, and applications. + +hrSWOSIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrSWRunIndex for the hrSWRunEntry + that represents the primary operating system running + on this host. This object is useful for quickly and + uniquely identifying that primary operating system." + ::= { hrSWRun 1 } + +hrSWRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of software running on the + host." + ::= { hrSWRun 2 } + +hrSWRunEntry OBJECT-TYPE + SYNTAX HrSWRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one piece of software + running on the host Note that because the installed + software table only contains information for software + stored locally on this host, not every piece of + running software will be found in the installed + software table. This is true of software that was + loaded and run from a non-local source, such as a + network-mounted file system. + + As an example of how objects in this table are named, + an instance of the hrSWRunName object might be named + hrSWRunName.1287" + INDEX { hrSWRunIndex } + ::= { hrSWRunTable 1 } + +HrSWRunEntry ::= SEQUENCE { + hrSWRunIndex Integer32, + hrSWRunName InternationalDisplayString, + hrSWRunID ProductID, + hrSWRunPath InternationalDisplayString, + hrSWRunParameters InternationalDisplayString, + hrSWRunType INTEGER, + hrSWRunStatus INTEGER + } + +hrSWRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each piece of software running on + the host. Wherever possible, this should be the + system's native, unique identification number." + ::= { hrSWRunEntry 1 } + +hrSWRunName OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this running piece of + software, including the manufacturer, revision, and + the name by which it is commonly known. If this + software was installed locally, this should be the + same string as used in the corresponding + hrSWInstalledName." + ::= { hrSWRunEntry 2 } + +hrSWRunID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of this running piece of software." + ::= { hrSWRunEntry 3 } + +hrSWRunPath OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the location on long-term storage + (e.g. a disk drive) from which this software was + loaded." + ::= { hrSWRunEntry 4 } + +hrSWRunParameters OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the parameters supplied to this + software when it was initially loaded." + ::= { hrSWRunEntry 5 } + +hrSWRunType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + operatingSystem(2), + deviceDriver(3), + application(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this software." + ::= { hrSWRunEntry 6 } + +hrSWRunStatus OBJECT-TYPE + SYNTAX INTEGER { + running(1), + runnable(2), -- waiting for resource + -- (i.e., CPU, memory, IO) + notRunnable(3), -- loaded but waiting for event + invalid(4) -- not loaded + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of this running piece of software. + Setting this value to invalid(4) shall cause this + software to stop running and to be unloaded. Sets to + other values are not valid." + ::= { hrSWRunEntry 7 } + +-- The Host Resources Running Software Performance Group +-- +-- The hrSWRunPerfTable contains an entry corresponding to +-- each entry in the hrSWRunTable. + +hrSWRunPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWRunPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of running software + performance metrics." + ::= { hrSWRunPerf 1 } + +hrSWRunPerfEntry OBJECT-TYPE + SYNTAX HrSWRunPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry containing software performance + metrics. As an example, an instance of the + hrSWRunPerfCPU object might be named + hrSWRunPerfCPU.1287" + AUGMENTS { hrSWRunEntry } -- This table augments information in + -- the hrSWRunTable. + ::= { hrSWRunPerfTable 1 } + +HrSWRunPerfEntry ::= SEQUENCE { + hrSWRunPerfCPU Integer32, + hrSWRunPerfMem KBytes +} + +hrSWRunPerfCPU OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centi-seconds of the total system's CPU + resources consumed by this process. Note that on a + multi-processor system, this value may increment by + more than one centi-second in one centi-second of real + (wall clock) time." + ::= { hrSWRunPerfEntry 1 } + +hrSWRunPerfMem OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of real system memory allocated to + this process." + ::= { hrSWRunPerfEntry 2 } + +-- The Host Resources Installed Software Group +-- +-- The hrSWInstalledTable contains an entry for each piece +-- of software installed in long-term storage (e.g. a disk +-- drive) locally on this host. Note that this does not +-- include software loadable remotely from a network +-- server. +-- +-- Different implementations may track software in varying +-- ways. For example, while some implementations may track +-- executable files as distinct pieces of software, other +-- implementations may use other strategies such as keeping +-- track of software "packages" (e.g., related groups of files) +-- or keeping track of system or application "patches". +-- +-- This table is useful for identifying and inventorying +-- software on a host and for diagnosing incompatibility +-- and version mismatch problems between various pieces +-- of hardware and software. + +hrSWInstalledLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when an entry in the + hrSWInstalledTable was last added, renamed, or + deleted. Because this table is likely to contain many + entries, polling of this object allows a management + station to determine when re-downloading of the table + might be useful." + ::= { hrSWInstalled 1 } + +hrSWInstalledLastUpdateTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the hrSWInstalledTable + was last completely updated. Because caching of this + data will be a popular implementation strategy, + retrieval of this object allows a management station + to obtain a guarantee that no data in this table is + older than the indicated time." + ::= { hrSWInstalled 2 } + +hrSWInstalledTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWInstalledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of software installed on this + host." + ::= { hrSWInstalled 3 } + +hrSWInstalledEntry OBJECT-TYPE + SYNTAX HrSWInstalledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for a piece of software + installed on this host. + + As an example of how objects in this table are named, + an instance of the hrSWInstalledName object might be + named hrSWInstalledName.96" + INDEX { hrSWInstalledIndex } + ::= { hrSWInstalledTable 1 } + +HrSWInstalledEntry ::= SEQUENCE { + hrSWInstalledIndex Integer32, + hrSWInstalledName InternationalDisplayString, + hrSWInstalledID ProductID, + hrSWInstalledType INTEGER, + hrSWInstalledDate DateAndTime +} + +hrSWInstalledIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each piece of software installed + on the host. This value shall be in the range from 1 + to the number of pieces of software installed on the + host." + ::= { hrSWInstalledEntry 1 } + +hrSWInstalledName OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this installed piece of + software, including the manufacturer, revision, the + name by which it is commonly known, and optionally, + its serial number." + ::= { hrSWInstalledEntry 2 } + +hrSWInstalledID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of this installed piece of software." + ::= { hrSWInstalledEntry 3 } + +hrSWInstalledType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + operatingSystem(2), + deviceDriver(3), + application(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this software." + ::= { hrSWInstalledEntry 4 } + +hrSWInstalledDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last-modification date of this application as it + would appear in a directory listing. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrSWInstalledEntry 5 } + +-- Conformance information + +hrMIBCompliances OBJECT IDENTIFIER ::= { hrMIBAdminInfo 2 } +hrMIBGroups OBJECT IDENTIFIER ::= { hrMIBAdminInfo 3 } + +-- Compliance Statements +hrMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the Host Resources MIB." + MODULE -- this module + MANDATORY-GROUPS { hrSystemGroup, hrStorageGroup, + hrDeviceGroup } + + OBJECT hrSystemDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrSystemInitialLoadDevice + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrSystemInitialLoadParameters + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrStorageSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT hrFSLastFullBackupDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrFSLastPartialBackupDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP hrSWRunGroup + DESCRIPTION + "The Running Software Group. Implementation + of this group is mandatory only when the + hrSWRunPerfGroup is implemented." + + OBJECT hrSWRunStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP hrSWRunPerfGroup + DESCRIPTION + "The Running Software Performance Group. + Implementation of this group is at the discretion + of the implementor." + + GROUP hrSWInstalledGroup + DESCRIPTION + "The Installed Software Group. + Implementation of this group is at the discretion + of the implementor." + + ::= { hrMIBCompliances 1 } + + hrSystemGroup OBJECT-GROUP + OBJECTS { + hrSystemUptime, hrSystemDate, + hrSystemInitialLoadDevice, + hrSystemInitialLoadParameters, + hrSystemNumUsers, hrSystemProcesses, + hrSystemMaxProcesses + } + STATUS current + DESCRIPTION + "The Host Resources System Group." + ::= { hrMIBGroups 1 } + + hrStorageGroup OBJECT-GROUP + OBJECTS { + hrMemorySize, hrStorageIndex, hrStorageType, + hrStorageDescr, hrStorageAllocationUnits, + hrStorageSize, hrStorageUsed, + hrStorageAllocationFailures + } + STATUS current + DESCRIPTION + "The Host Resources Storage Group." + ::= { hrMIBGroups 2 } + + hrDeviceGroup OBJECT-GROUP + OBJECTS { + hrDeviceIndex, hrDeviceType, hrDeviceDescr, + hrDeviceID, hrDeviceStatus, hrDeviceErrors, + hrProcessorFrwID, hrProcessorLoad, + hrNetworkIfIndex, hrPrinterStatus, + hrPrinterDetectedErrorState, + hrDiskStorageAccess, hrDiskStorageMedia, + hrDiskStorageRemoveble, hrDiskStorageCapacity, + hrPartitionIndex, hrPartitionLabel, + hrPartitionID, hrPartitionSize, + hrPartitionFSIndex, hrFSIndex, hrFSMountPoint, + hrFSRemoteMountPoint, hrFSType, hrFSAccess, + hrFSBootable, hrFSStorageIndex, + hrFSLastFullBackupDate, + hrFSLastPartialBackupDate + } + STATUS current + DESCRIPTION + "The Host Resources Device Group." + ::= { hrMIBGroups 3 } + + hrSWRunGroup OBJECT-GROUP + OBJECTS { + hrSWOSIndex, hrSWRunIndex, hrSWRunName, + hrSWRunID, hrSWRunPath, hrSWRunParameters, + hrSWRunType, hrSWRunStatus + } + STATUS current + DESCRIPTION + "The Host Resources Running Software Group." + ::= { hrMIBGroups 4 } + + hrSWRunPerfGroup OBJECT-GROUP + OBJECTS { hrSWRunPerfCPU, hrSWRunPerfMem } + STATUS current + DESCRIPTION + "The Host Resources Running Software + Performance Group." + ::= { hrMIBGroups 5 } + + hrSWInstalledGroup OBJECT-GROUP + OBJECTS { + hrSWInstalledLastChange, + hrSWInstalledLastUpdateTime, + hrSWInstalledIndex, hrSWInstalledName, + hrSWInstalledID, hrSWInstalledType, + hrSWInstalledDate + } + STATUS current + DESCRIPTION + "The Host Resources Installed Software Group." + ::= { hrMIBGroups 6 } + +END diff --git a/mibs/ietf/HOST-RESOURCES-TYPES b/mibs/ietf/HOST-RESOURCES-TYPES new file mode 100644 index 0000000..b32b9c2 --- /dev/null +++ b/mibs/ietf/HOST-RESOURCES-TYPES @@ -0,0 +1,387 @@ +HOST-RESOURCES-TYPES DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY FROM SNMPv2-SMI + hrMIBAdminInfo, hrStorage, hrDevice FROM HOST-RESOURCES-MIB; + +hostResourcesTypesModule MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March, 2000 + ORGANIZATION "IETF Host Resources MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Postal: Lucent Technologies, Inc. + 1213 Innsbruck Dr. + Sunnyvale, CA 94089 + USA + Phone: 650-318-1251 + Fax: 650-318-1633 + Email: waldbusser@ins.com + + In addition, the Host Resources MIB mailing list is dedicated + to discussion of this MIB. To join the mailing list, send a + request message to hostmib-request@andrew.cmu.edu. The mailing + list address is hostmib@andrew.cmu.edu." + DESCRIPTION + "This MIB module registers type definitions for + storage types, device types, and file system types. + After the initial revision, this module will be + maintained by IANA." + REVISION "200003060000Z" -- 6 March 2000 + DESCRIPTION + "The original version of this module, published as RFC + 2790." + ::= { hrMIBAdminInfo 4 } + +-- Registrations for some storage types, for use with hrStorageType +hrStorageTypes OBJECT IDENTIFIER ::= { hrStorage 1 } + +hrStorageOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used when no other defined + type is appropriate." + ::= { hrStorageTypes 1 } + +hrStorageRam OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for RAM." + ::= { hrStorageTypes 2 } + +hrStorageVirtualMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for virtual memory, + temporary storage of swapped or paged memory." + ::= { hrStorageTypes 3 } + +hrStorageFixedDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for non-removable + rigid rotating magnetic storage devices." + ::= { hrStorageTypes 4 } + +hrStorageRemovableDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for removable rigid + rotating magnetic storage devices." + ::= { hrStorageTypes 5 } + +hrStorageFloppyDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for non-rigid rotating + magnetic storage devices." + ::= { hrStorageTypes 6 } + +hrStorageCompactDisc OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for read-only rotating + optical storage devices." + ::= { hrStorageTypes 7 } + +hrStorageRamDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for a file system that + is stored in RAM." + ::= { hrStorageTypes 8 } + +hrStorageFlashMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for flash memory." + ::= { hrStorageTypes 9 } + +hrStorageNetworkDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for a + networked file system." + ::= { hrStorageTypes 10 } + +-- Registrations for some device types, for use with hrDeviceType +hrDeviceTypes OBJECT IDENTIFIER ::= { hrDevice 1 } + +hrDeviceOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used when no other defined + type is appropriate." + ::= { hrDeviceTypes 1 } + +hrDeviceUnknown OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used when the device type is + unknown." + ::= { hrDeviceTypes 2 } + +hrDeviceProcessor OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a CPU." + ::= { hrDeviceTypes 3 } + +hrDeviceNetwork OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a network interface." + ::= { hrDeviceTypes 4 } + +hrDevicePrinter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a printer." + ::= { hrDeviceTypes 5 } + +hrDeviceDiskStorage OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a disk drive." + ::= { hrDeviceTypes 6 } + +hrDeviceVideo OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a video device." + ::= { hrDeviceTypes 10 } + +hrDeviceAudio OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for an audio device." + ::= { hrDeviceTypes 11 } + +hrDeviceCoprocessor OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a co-processor." + ::= { hrDeviceTypes 12 } + +hrDeviceKeyboard OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a keyboard device." + ::= { hrDeviceTypes 13 } + +hrDeviceModem OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a modem." + ::= { hrDeviceTypes 14 } + +hrDeviceParallelPort OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a parallel port." + ::= { hrDeviceTypes 15 } + +hrDevicePointing OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a pointing device + (e.g., a mouse)." + ::= { hrDeviceTypes 16 } + +hrDeviceSerialPort OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a serial port." + ::= { hrDeviceTypes 17 } + +hrDeviceTape OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a tape storage device." + ::= { hrDeviceTypes 18 } + +hrDeviceClock OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a clock device." + ::= { hrDeviceTypes 19 } + +hrDeviceVolatileMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a volatile memory + storage device." + ::= { hrDeviceTypes 20 } + +hrDeviceNonVolatileMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a non-volatile memory + storage device." + ::= { hrDeviceTypes 21 } + +-- Registrations for some popular File System types, +-- for use with hrFSType. +hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } + +hrFSOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used when no other + defined type is appropriate." + ::= { hrFSTypes 1 } + +hrFSUnknown OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used when the type of + file system is unknown." + ::= { hrFSTypes 2 } + +hrFSBerkeleyFFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Berkeley Fast File System." + ::= { hrFSTypes 3 } + +hrFSSys5FS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + System V File System." + ::= { hrFSTypes 4 } + +hrFSFat OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for + DOS's FAT file system." + ::= { hrFSTypes 5 } + +hrFSHPFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for OS/2's + High Performance File System." + ::= { hrFSTypes 6 } + +hrFSHFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Macintosh Hierarchical File System." + ::= { hrFSTypes 7 } + +hrFSMFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Macintosh File System." + ::= { hrFSTypes 8 } + +hrFSNTFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Windows NT File System." + ::= { hrFSTypes 9 } + +hrFSVNode OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + VNode File System." + ::= { hrFSTypes 10 } + +hrFSJournaled OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Journaled File System." + ::= { hrFSTypes 11 } + +hrFSiso9660 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + ISO 9660 File System for CD's." + ::= { hrFSTypes 12 } + +hrFSRockRidge OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + RockRidge File System for CD's." + ::= { hrFSTypes 13 } + +hrFSNFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + NFS File System." + ::= { hrFSTypes 14 } + +hrFSNetware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Netware File System." + ::= { hrFSTypes 15 } + +hrFSAFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Andrew File System." + ::= { hrFSTypes 16 } + +hrFSDFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + OSF DCE Distributed File System." + ::= { hrFSTypes 17 } + +hrFSAppleshare OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + AppleShare File System." + ::= { hrFSTypes 18 } + +hrFSRFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + RFS File System." + ::= { hrFSTypes 19 } + +hrFSDGCFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Data General DGCFS." + ::= { hrFSTypes 20 } + +hrFSBFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + SVR4 Boot File System." + ::= { hrFSTypes 21 } + +hrFSFAT32 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Windows FAT32 File System." + ::= { hrFSTypes 22 } + +hrFSLinuxExt2 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Linux EXT2 File System." + ::= { hrFSTypes 23 } + +END diff --git a/mibs/ietf/HPR-IP-MIB b/mibs/ietf/HPR-IP-MIB new file mode 100644 index 0000000..778904a --- /dev/null +++ b/mibs/ietf/HPR-IP-MIB @@ -0,0 +1,514 @@ +HPR-IP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY,OBJECT-TYPE, Counter32 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnaControlPointName + FROM APPN-MIB + hprObjects, hprCompliances, hprGroups + FROM HPR-MIB ; + +hprIp MODULE-IDENTITY + LAST-UPDATED "9809240000Z" -- September 24, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + DESCRIPTION + "The MIB module for HPR over IP. This module contains two + groups: + + - the HPR over IP Monitoring Group provides a count of the UDP + packets sent by a link station for each APPN traffic type. + + - the HPR over IP Configuration Group provides for reading and + setting the mappings between APPN traffic types and TOS + Precedence settings in the IP header. These mappings are + configured at the APPN port level, and are inherited by the + APPN connection networks and link stations associated with an + APPN port. A port-level mapping can, however, be overridden + for a particular connection network or link station." + REVISION "9809240000Z" -- September 24, 1998 + DESCRIPTION + "Initial version, Published as RFC 2584" + + ::= { hprObjects 5 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +AppnTrafficType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "APPN traffic type. The first four values correspond + to APPN transmission priorities (network, high, medium and + low), while the fifth is used for both LLC commands (XID, + TEST, DISC, and DM) and function-routed NLPs (XID_DONE_RQ + and XID_DONE_RSP)." + + SYNTAX INTEGER { low (1), + medium (2), + high (3), + network (4), + llcAndFnRoutedNlp (5) } + +AppnTOSPrecedence ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A DisplayString representing the setting of the three TOS + Precedence bits in the IP Type of Service field for this APPN + traffic type. The HPR over IP architecture specifies the + following default mapping: + + APPN traffic type IP TOS Precedence bits + ------------------ ---------------------- + Network 110 + High 100 + Medium 010 + Low 001 + LLC commands, etc. 110 + " + + SYNTAX DisplayString (SIZE(3)) + +-- ******************************************************************* + +-- hprObjects OBJECT IDENTIFIER ::= { hprMIB 1 } +-- ******************************************************************* + +-- ******************************************************************* +-- HPR over IP Monitoring Group +-- +-- This group contains a single table, the hprIsActiveLsTable, +-- providing a count of UDP packets sent with each type of +-- APPN traffic on each active link supporting HPR over IP. +-- ******************************************************************* +hprIpActiveLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpActiveLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP active link station table. This table provides + counts of the number of UDP packets sent for each APPN + traffic type." + + ::= { hprIp 1 } + +hprIpActiveLsEntry OBJECT-TYPE + SYNTAX HprIpActiveLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP link station table." + + INDEX { hprIpActiveLsLsName, + hprIpActiveLsAppnTrafficType } + + ::= { hprIpActiveLsTable 1 } + +HprIpActiveLsEntry ::= SEQUENCE { + hprIpActiveLsLsName DisplayString, + hprIpActiveLsAppnTrafficType AppnTrafficType, + hprIpActiveLsUdpPackets Counter32 } + +hprIpActiveLsLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. If this + object has the same value as the appnLsName in the APPN MIB, + then the two objects are referring to the same APPN link + station." + ::= { hprIpActiveLsEntry 1 } + +hprIpActiveLsAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type being sent through the link station." + + ::= { hprIpActiveLsEntry 2 } + +hprIpActiveLsUdpPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of outgoing UDP packets carrying this type of APPN + traffic. A discontinuity in the counter is indicated by the + appnLsCounterDisconTime object in the APPN MIB." + + ::= { hprIpActiveLsEntry 3 } + + +-- ******************************************************************* +-- HPR over IP Configuration Group +-- +-- This group contains three tables for reading and setting the +-- mapping between APPN traffic types and values for the TOS +-- Precedence bits in the IP header. hprIpAppnPortTOSPrecedence +-- represents the APPN port-level mapping. This mapping can be +-- overridden for an individual link station or an individual +-- connection network via, respectively, the hprIpLsTOSPrecedence +-- and the hprIpCnTOSPrecedence objects. +-- ******************************************************************* + +hprIpAppnPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpAppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP APPN port table. This table supports reading and + setting the mapping between APPN traffic types and TOS + Precedence settings for all the link stations at this APPN + port. This mapping can be overridden for an individual link + station or an individual connection network via, respectively, + the hprIpLsTOSPrecedence and the hprIpCnTOSPrecedence objects." + + ::= { hprIp 2 } + +hprIpAppnPortEntry OBJECT-TYPE + SYNTAX HprIpAppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP APPN port table. Entries exist for + every APPN port defined to support HPR over IP." + + INDEX { hprIpAppnPortName, + hprIpAppnPortAppnTrafficType } + + ::= { hprIpAppnPortTable 1 } + +HprIpAppnPortEntry ::= SEQUENCE { + hprIpAppnPortName DisplayString, + hprIpAppnPortAppnTrafficType AppnTrafficType, + hprIpAppnPortTOSPrecedence AppnTOSPrecedence } + +hprIpAppnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this APPN port. If this + object has the same value as the appnPortName in the APPN MIB, + then the two objects are referring to the same APPN port." + + ::= { hprIpAppnPortEntry 1 } + +hprIpAppnPortAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent through the port." + + ::= { hprIpAppnPortEntry 2 } + +hprIpAppnPortTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of the + port or of the APPN node itself." + + ::= { hprIpAppnPortEntry 3 } + + +-- ******************************************************************* +hprIpLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP link station table. Values for TOS Precedence at + the link station level override those at the level of the + containing port. If there is no entry in this table for a + given link station, then that link station inherits its TOS + Precedence values from its port." + + ::= { hprIp 3 } + +hprIpLsEntry OBJECT-TYPE + SYNTAX HprIpLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP link station table." + + INDEX { hprIpLsLsName, + hprIpLsAppnTrafficType } + + ::= { hprIpLsTable 1 } + +HprIpLsEntry ::= SEQUENCE { + hprIpLsLsName DisplayString, + hprIpLsAppnTrafficType AppnTrafficType, + hprIpLsTOSPrecedence AppnTOSPrecedence, + hprIpLsRowStatus RowStatus } + +hprIpLsLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. If this + object has the same value as the appnLsName in the APPN MIB, + then the two objects are referring to the same APPN link + station." + ::= { hprIpLsEntry 1 } + +hprIpLsAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent through the link station." + + ::= { hprIpLsEntry 2 } + +hprIpLsTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of the + port or of the APPN node itself." + + ::= { hprIpLsEntry 3 } + +hprIpLsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted in the + hprIpLsTable. As soon as an entry becomes active, the mapping + between APPN traffic types and TOS Precedence settings that it + specifies becomes effective. + + The value of the other accessible object in this entry, + hprIpLsTOSPrecedence, can be changed via a Set operation when + this object's value is active(1). + + An entry in this table is deleted by setting this object to + destroy(6). Deleting an entry in this table causes the + link station to revert to the default TOS Precedence + mapping for its port." + + ::= { hprIpLsEntry 4 } + +-- ******************************************************************* +hprIpCnTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpCnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP connection network table. Values for TOS + Precedence at the connection network level override those at + the level of the containing port. If there is no entry in + this table for a given connection network, then that + connection network inherits its TOS Precedence values from + its port. + + A node may have connections to a given connection network + through multiple ports. There is no provision in the HPR-IP + architecture for variations in TOS Precedence values for + a single connection network based on the port through which + traffic is flowing to the connection network. Thus an entry + in this table overrides the port-level settings for all the + ports through which the node can reach the connection + network." + + ::= { hprIp 4 } + +hprIpCnEntry OBJECT-TYPE + SYNTAX HprIpCnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP connection network table." + + INDEX { hprIpCnVrnName, + hprIpCnAppnTrafficType } + + ::= { hprIpCnTable 1 } + +HprIpCnEntry ::= SEQUENCE { + hprIpCnVrnName SnaControlPointName, + hprIpCnAppnTrafficType AppnTrafficType, + hprIpCnTOSPrecedence AppnTOSPrecedence, + hprIpCnRowStatus RowStatus } + +hprIpCnVrnName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "SNA control point name of the virtual routing node (VRN) that + identifies the connection network in the APPN topology + database. If this object has the same value as the appnVrnName + in the APPN MIB, then the two objects are referring + to the same APPN VRN." + + ::= { hprIpCnEntry 1 } + +hprIpCnAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent to this connection network." + + ::= { hprIpCnEntry 2 } + +hprIpCnTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. This setting applies + to all traffic sent to this connection network by this node, + regardless of the port through which the traffic is sent. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of a + port or of the APPN node itself." + ::= { hprIpCnEntry 3 } + +hprIpCnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted in the + hprIpCnTable. As soon as an entry becomes active, the mapping + between APPN traffic types and TOS Precedence settings that it + specifies becomes effective. + + The value of the other accessible object in this entry, + hprIpCnTOSPrecedence, can be changed via a Set operation when + this object's value is active(1). + + An entry in this table is deleted by setting this object to + destroy(6). Deleting an entry in this table causes the + connection network to revert to the default TOS Precedence + mapping for each port through which it is accessed." + + ::= { hprIpCnEntry 4 } + + +-- ******************************************************************* +-- Conformance Statement +-- ******************************************************************* +-- Definitions imported from the HPR MIB: +-- hprConformance OBJECT IDENTIFIER ::= { hprMIB 2 } +-- hprCompliances OBJECT IDENTIFIER ::= { hprConformance 1 } +-- hprGroups OBJECT IDENTIFIER ::= { hprConformance 2 } + +-- Compliance statements +hprIpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for the HPR over IP MIB module." + MODULE -- this module + + -- Conditionally mandatory groups + GROUP hprIpMonitoringGroup + DESCRIPTION + "The hprIpMonitoringGroup is mandatory for APPN implementations + supporting HPR over IP." + + GROUP hprIpConfigurationGroup + DESCRIPTION + "The hprIpConfigurationGroup is mandatory for APPN + implementations supporting HPR over IP. It may, however, + be implemented as a collection of read-only objects." + + OBJECT hprIpAppnPortTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpLsTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpLsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT hprIpCnTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpCnRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { hprCompliances 2 } + +-- Group definitions + +hprIpMonitoringGroup OBJECT-GROUP + OBJECTS { hprIpActiveLsUdpPackets } + STATUS current + DESCRIPTION + "An object for counting outgoing HPR/IP traffic for each APPN + traffic type." + +::= { hprGroups 5 } + +hprIpConfigurationGroup OBJECT-GROUP + OBJECTS { hprIpAppnPortTOSPrecedence, + hprIpLsTOSPrecedence, + hprIpLsRowStatus, + hprIpCnTOSPrecedence, + hprIpCnRowStatus } + STATUS current + DESCRIPTION + "A collection of HPR/IP objects representing the mappings + between APPN traffic types and TOS Precedence bits at the APPN + port, APPN link station, and APPN connection network levels." + +::= { hprGroups 6 } + +END diff --git a/mibs/ietf/HPR-MIB b/mibs/ietf/HPR-MIB new file mode 100644 index 0000000..062cd87 --- /dev/null +++ b/mibs/ietf/HPR-MIB @@ -0,0 +1,1346 @@ +HPR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + DisplayString, DateAndTime, TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + + Counter32, Gauge32, Unsigned32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB + + SnaControlPointName + FROM APPN-MIB; + +hprMIB MODULE-IDENTITY + LAST-UPDATED "9705140000Z" + ORGANIZATION "AIW APPN / HPR MIB SIG" + CONTACT-INFO + + " + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + RHJA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to + manage network devices with HPR capabilities." +::= { snanauMIB 6 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +-- SnaControlPointName is imported from the APPN MIB + +HprNceTypes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A bit string identifying the set of functions provided by a + network connection endpoint (NCE). The following values are + defined: + + bit 0: control point + bit 1: logical unit + bit 2: boundary function + bit 3: route setup + " + + SYNTAX BITS { controlPoint(0), + logicalUnit(1), + boundaryFunction(2), + routeSetup(3) } + +HprRtpCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an RTP connection. A + Management Station can detect discontinuities in this counter + by monitoring the correspondingly indexed + hprRtpCounterDisconTime object." + + SYNTAX Counter32 + +-- ********************************************************************* + hprObjects OBJECT IDENTIFIER ::= { hprMIB 1 } +-- ********************************************************************* + +-- ********************************************************************* +hprGlobal OBJECT IDENTIFIER ::= { hprObjects 1 } +-- ********************************************************************* +-- The hprGlobal group applies to both intermediate and end nodes. +-- ********************************************************************* + +hprNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the APPN node + where this HPR implementation resides. If this object has + the same value as the appnNodeCpName object in the APPN MIB, + then the two objects are referring to the same APPN node." + + ::= { hprGlobal 1 } + +hprOperatorPathSwitchSupport OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + switchTriggerSupported(2), + switchToPathSupported(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates an implementation's level of support + for an operator-requested path switch. + + notSupported(1) - the agent does not support + operator-requested path switches + switchTriggerSupported(2) - the agent supports a 'switch + path now' command from an + operator, but not a command to + switch to a specified path + switchToPathSupported(3) - the agent supports both a + 'switch path now' command and a + command to switch to a specified + path. Note that the latter + command is not available via + this MIB; a system that supports + it must do so via other means, + such as a local operator + interface." + + ::= { hprGlobal 2 } + +-- ********************************************************************* +hprAnrRouting OBJECT IDENTIFIER ::= { hprObjects 2 } +-- ********************************************************************* + +hprAnrsAssigned OBJECT-TYPE + SYNTAX Counter32 + UNITS "ANR labels" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of ANR labels assigned by this node since it was + last re-initialized. A Management Station can detect + discontinuities in this counter by monitoring the + appnNodeCounterDisconTime object in the APPN MIB." + + ::= { hprAnrRouting 1 } + +hprAnrCounterState OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used for a network management station to turn + on/off the counting of ANR packets in the hprAnrRoutingTable. + The initial value of this object is an implementation choice. + + notActive(1) - the counter hprAnrPacketsReceived + returns no meaningful value + active(2) - the counter hprAnrPacketsReceived is + being incremented and is returning + meaningful values" + + ::= { hprAnrRouting 2 } + +hprAnrCounterStateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the hprAnrCounterState object last changed its + value. The initial value returned by this object is the time + at which the APPN node instrumented with this MIB was last + brought up." + + ::= { hprAnrRouting 3 } + +hprAnrRoutingTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprAnrRoutingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ANR Routing table provides a means of correlating an + incoming ANR label (i.e., one assigned by this node) with the + TG over which a packet containing the label will be forwarded. + When the ANR label identifies a local NCE, the hprAnrOutTgDest + and hprAnrOutTgNum objects have no meaning. The table also + contains an object to count the number of packets received + with a given ANR label." + + ::= { hprAnrRouting 4 } + +hprAnrRoutingEntry OBJECT-TYPE + SYNTAX HprAnrRoutingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ANR label is used to index this table." + + INDEX { hprAnrLabel } + + ::= { hprAnrRoutingTable 1 } + +HprAnrRoutingEntry ::= SEQUENCE { + hprAnrLabel OCTET STRING, + hprAnrType INTEGER, + hprAnrOutTgDest DisplayString, + hprAnrOutTgNum INTEGER, + hprAnrPacketsReceived Counter32, + hprAnrCounterDisconTime TimeStamp + } + +hprAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first ANR label in an incoming packet." + + ::= { hprAnrRoutingEntry 1 } + +hprAnrType OBJECT-TYPE + SYNTAX INTEGER { + nce(1), + tg(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object indicating whether an ANR label assigned by this + node identifies a local NCE or a TG on which outgoing packets + are forwarded. + + nce(1) - the ANR label identifies a local NCE. In this + case the hprAnrOutTgDest and hprAnrOutTgNum + objects have no meaning. + tg(2) - the ANR label identifies a TG." + + ::= { hprAnrRoutingEntry 2 } + +hprAnrOutTgDest OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination node for the TG over which packets with this ANR + label are forwarded. This is the fully qualified name of an + APPN network node or end node, formatted according to the + SnaControlPointName textual convention. If the ANR label + identifies a local NCE, then this object returns a zero-length + string. + + This object corresponds to the appnLocalTgDest object in the + APPN MIB." + + ::= { hprAnrRoutingEntry 3 } + +hprAnrOutTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of the TG over which packets with this ANR label are + forwarded. If the ANR label identifies a local NCE, then this + object returns the value 0, since 0 is not a valid TG number + for a TG that supports HPR. + + This object corresponds to the appnLocalTgNum object in the + APPN MIB." + + ::= { hprAnrRoutingEntry 4 } + +hprAnrPacketsReceived OBJECT-TYPE + SYNTAX Counter32 + UNITS "ANR packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received with this ANR label as their + first label. + + A Management Station can detect discontinuities in this + counter by monitoring the hprAnrCounterDisconTime object in + the same row." + + ::= { hprAnrRoutingEntry 5 } + +hprAnrCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the + hprAnrPacketsReceived counter for this ANR label last + experienced a discontinuity. This will be the more recent of + two times: the time at which the ANR label was associated with + either an outgoing TG or a local NCE, or the time at which the + ANR counters were last turned on or off." + + ::= { hprAnrRoutingEntry 6 } + +-- ********************************************************************* +hprTransportUser OBJECT IDENTIFIER ::= { hprObjects 3 } +-- ********************************************************************* +-- Transport Service User (TU) Table: (RTP Connection Users) +-- +-- There will be several users of the HPR transport and each HPR node +-- shall maintain a table of these users. +-- ********************************************************************* + +hprNceTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprNceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Network Connection Endpoint (NCE) table." + + ::= { hprTransportUser 1 } + +hprNceEntry OBJECT-TYPE + SYNTAX HprNceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The NCE ID is used to index this table." + + INDEX { hprNceId } + + ::= { hprNceTable 1 } + +HprNceEntry ::= SEQUENCE { + hprNceId OCTET STRING, + hprNceType HprNceTypes, + hprNceDefault HprNceTypes, + hprNceInstanceId OCTET STRING + } + +hprNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Network Connection Endpoint (NCE) ID. NCEs identify + Control Points (Cp), Logical Units (Lu), HPR Boundary + Functions (Bf) and Route Setup (Rs) Functions. A value for + this object can be retrieved from any of the following + objects in the APPN MIB: + + - appnLsCpCpNceId + - appnLsRouteNceId + - appnLsBfNceId + - appnIsInRtpNceId + - appnIsRtpNceId + + In each case this value identifies a row in this table + containing information related to that in the APPN MIB." + + ::= { hprNceEntry 1 } + +hprNceType OBJECT-TYPE + SYNTAX HprNceTypes + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit string identifying the function types provided by this + Network Connection Endpoint (NCE)." + + ::= { hprNceEntry 2 } + +hprNceDefault OBJECT-TYPE + SYNTAX HprNceTypes + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit string identifying the function types for which this + Network Connection Endpoint (NCE) is the default NCE. While + default NCEs are not explicitly defined in the architecture, + some implementations provide them; for such implementations, + it is useful to make this information available to a + Management Station." + + ::= { hprNceEntry 3 } + +hprNceInstanceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NCE instance identifier (NCEII) identifying the current + instance of this NCE. An NCEII is used to denote different + instances (IPLs) of an NCE component. Each time an NCE is + activated (IPL'd), it acquires a different, unique NCEII." + + ::= { hprNceEntry 4 } + +-- ********************************************************************* +hprRtp OBJECT IDENTIFIER ::= { hprObjects 4 } +-- ********************************************************************* +-- ********************************************************************* +-- +-- The RTP group is implemented by all managed nodes supporting the +-- HPR Transport Tower. The group contains several scalars (simple +-- objects) and a table. +-- ********************************************************************* + +-- ********************************************************************* +hprRtpGlobe OBJECT IDENTIFIER ::= { hprRtp 1} +-- ********************************************************************* +hprRtpGlobeConnSetups OBJECT-TYPE + SYNTAX Counter32 + UNITS "RTP connection setups" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of RTP connection setups in which this node has + participated, as either sender or receiver, since it was last + re-initialized. Retries of a setup attempt do not cause the + counter to be incremented. + + A Management Station can detect discontinuities in this + counter by monitoring the appnNodeCounterDisconTime object + in the APPN MIB." + + ::= { hprRtpGlobe 1 } + +hprRtpGlobeCtrState OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows a network management station to turn the + counters in the hprRtpTable on and off. The initial value of + this object is an implementation choice. + + notActive(1) - the counters in the hprRtpTable are + returning no meaningful values + active(2) - the counters in the hprRtpTable are + being incremented and are returning + meaningful values" + + ::= { hprRtpGlobe 2 } + +hprRtpGlobeCtrStateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the value of the hprRtpGlobeCtrState object + last changed. The initial value returned by this object is + the time at which the APPN node instrumented with this MIB + was last brought up." + + ::= { hprRtpGlobe 3 } + +-- ********************************************************************* +-- The RTP Connection Table +-- There may be many RTP connections on a node supporting the functions +-- specified in the RTP option set. Each node implementing this option +-- set shall maintain a table of these RTP connections. +-- ********************************************************************* + +hprRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP Connection table" + + ::= { hprRtp 2 } + +hprRtpEntry OBJECT-TYPE + SYNTAX HprRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local NCE ID and local TCID are used to index this + table." + + INDEX + { hprRtpLocNceId, + hprRtpLocTcid } + + ::= { hprRtpTable 1 } + +HprRtpEntry ::= SEQUENCE { + hprRtpLocNceId OCTET STRING, -- local nce id + hprRtpLocTcid OCTET STRING, -- local tcid + hprRtpRemCpName SnaControlPointName,-- remote cp name + hprRtpRemNceId OCTET STRING, -- remote nce id + hprRtpRemTcid OCTET STRING, -- remote tcid + hprRtpPathSwitchTrigger INTEGER, -- trigger (read-write) + hprRtpRscv OCTET STRING, -- rscv + hprRtpTopic DisplayString, -- topic (cos) + hprRtpState INTEGER, -- state + hprRtpUpTime TimeTicks, -- up time + + hprRtpLivenessTimer Unsigned32, -- liveness timer + hprRtpShortReqTimer Unsigned32, -- short request timer + hprRtpPathSwTimer Unsigned32, -- path switch timer + hprRtpLivenessTimeouts HprRtpCounter, -- liveness timeouts + hprRtpShortReqTimeouts HprRtpCounter, -- short req timeouts + + hprRtpMaxSendRate Gauge32, -- maximum send rate + hprRtpMinSendRate Gauge32, -- minimum send rate + hprRtpCurSendRate Gauge32, -- current send rate + + hprRtpSmRdTripDelay Gauge32, -- smooth rnd trip + -- delay + + hprRtpSendPackets HprRtpCounter, -- packets sent + hprRtpRecvPackets HprRtpCounter, -- packets received + hprRtpSendBytes HprRtpCounter, -- bytes sent + hprRtpRecvBytes HprRtpCounter, -- bytes received + + hprRtpRetrPackets HprRtpCounter, -- pkts re-xmitted + hprRtpPacketsDiscarded HprRtpCounter, -- pkts discarded + hprRtpDetectGaps HprRtpCounter, -- gaps detected + hprRtpRateReqSends HprRtpCounter, -- rate req send + + hprRtpOkErrPathSws HprRtpCounter, -- ok err path sws + hprRtpBadErrPathSws HprRtpCounter, -- bad err path sws + hprRtpOkOpPathSws HprRtpCounter, -- ok op path sws + hprRtpBadOpPathSws HprRtpCounter, -- bad op path sws + + hprRtpCounterDisconTime TimeStamp -- discontinuity ind + } + +hprRtpLocNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint (NCE) ID of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components. A value for this object can + be retrieved from any of the following objects in the APPN + MIB: + + - appnLsCpCpNceId + - appnLsRouteNceId + - appnLsBfNceId + - appnIsInRtpNceId + - appnIsRtpNceId + + In each case this value identifies a row in this table + containing information related to that in the APPN MIB." + + ::= { hprRtpEntry 1 } + +hprRtpLocTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of this RTP connection. A value for this + object can be retrieved from either the appnIsInRtpTcid object + or the appnIsRtpTcid object the APPN MIB; in each case this + value identifies a row in this table containing information + related to that in the APPN MIB." + + ::= { hprRtpEntry 2 } + +hprRtpRemCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the remote node of + this RTP connection." + + ::= { hprRtpEntry 3 } + +hprRtpRemNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpEntry 4 } + +hprRtpRemTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote TCID of this RTP connection." + + ::= { hprRtpEntry 5 } + +hprRtpPathSwitchTrigger OBJECT-TYPE + SYNTAX INTEGER { + ready(1), + switchPathNow(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can trigger an operator- + requested path switch, by setting the value to + switchPathNow(2). Setting this object to switchPathNow(2) + triggers a path switch even if its previous value was already + switchPathNow(2). + The value ready(1) is returned on GET operations until a SET + has been processed; after that the value received on the most + recent SET is returned. + + This MIB module provides no support for an operator-requested + switch to a specified path." + + ::= { hprRtpEntry 6 } + +hprRtpRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The forward Route Selection Control Vector for this RTP + connection. The format of this vector is described in SNA + Formats. + + The value returned in this object during a path switch is + implementation-dependent: it may be the old path, the new + path, a zero-length string, or some other valid RSCV string." + + ::= { hprRtpEntry 7 } + +hprRtpTopic OBJECT-TYPE + SYNTAX DisplayString (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The topic for this RTP connection. This is used to indicate + the Class of Service." + + ::= { hprRtpEntry 8 } + +hprRtpState OBJECT-TYPE + SYNTAX INTEGER { + rtpListening(1), + rtpCalling(2), + rtpConnected(3), + rtpPathSwitching(4), + rtpDisconnecting(5), + other(99) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the RTP connection, from the perspective of the + local RTP protocol machine: + rtpListening - connection open; waiting for other end + to call in + rtpCalling - connection opened, attempting to call + out, have not yet received any data + from other end + rtpConnected - connection is active; responded to a + call-in or received other end's TCID + from a call-out attempt + rtpPathSwitching - the path switch timer is running; + attempting to find a new path for this + connection. + rtpDisconnecting - no sessions are using this connection; + in process of bringing it down + other - the connection is not in any of the + states listed above." + + ::= { hprRtpEntry 9 } + +hprRtpUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the RTP connection has been up, measured + in 1/100ths of a second." + + ::= { hprRtpEntry 10 } + +hprRtpLivenessTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the liveness (ALIVE) timer of this RTP + connection, in units of 1/100th of a second. When this timer + expires and no packet has arrived from the partner since it + was last set, packets with Status Request indicators will be + sent to see if the RTP connection is still alive." + + ::= { hprRtpEntry 11 } + +hprRtpShortReqTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the RTP SHORT_REQ timer, in units of 1/100 of a + second. This timer represents the maximum time that a sender + waits for a reply from a receiver." + + ::= { hprRtpEntry 12 } + +hprRtpPathSwTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time that RTP should attempt a path switch + for a connection, in units of 1/100th of a second." + + ::= { hprRtpEntry 13 } + +hprRtpLivenessTimeouts OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "liveness timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of liveness timeouts for this RTP connection." + + ::= { hprRtpEntry 14 } + +hprRtpShortReqTimeouts OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "short request timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of short request timeouts for this RTP connection." + + ::= { hprRtpEntry 15 } + +hprRtpMaxSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The high-water mark for this RTP connection's send rate, in + units of bytes per second. This is the high-water mark for + the entire life of the connection, not just the high-water + mark for the connection's current path. + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 16 } + +hprRtpMinSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The low-water mark for this RTP connection's send rate, in + units of bytes per second. This is the low-water mark for the + entire life of the connection, not just the low-water mark for + the connection's current path. + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 17 } + +hprRtpCurSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current send rate for this RTP connection, in units of + bytes per second. + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 18 } + +hprRtpSmRdTripDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "1/1000ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The smoothed round trip delay for this RTP connection, in + units of 1/1000th of a second (ms). + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 19 } + +hprRtpSendPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets successfully sent on this RTP + connection." + + ::= { hprRtpEntry 20 } + +hprRtpRecvPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received on this RTP connection. The + counter is incremented only once if duplicate copies of a + packet are received." + + ::= { hprRtpEntry 21 } + +hprRtpSendBytes OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of bytes sent on this RTP connection. Both RTP + Transport Header (THDR) bytes and data bytes are included in + this count." + + ::= { hprRtpEntry 22 } + +hprRtpRecvBytes OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of bytes received on this RTP connection. Both RTP + Transport Header (THDR) bytes and data bytes are included in + this count." + + ::= { hprRtpEntry 23 } + +hprRtpRetrPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets retransmitted on this RTP connection." + + ::= { hprRtpEntry 24 } + +hprRtpPacketsDiscarded OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received on this RTP connection and then + discarded. A packet may be discarded because it is determined + to be a duplicate, or for other reasons." + + ::= { hprRtpEntry 25 } + +hprRtpDetectGaps OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "gaps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of gaps detected on this RTP connection." + + ::= { hprRtpEntry 26 } + +hprRtpRateReqSends OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "rate requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Rate Requests sent on this RTP connection." + + ::= { hprRtpEntry 27 } + +hprRtpOkErrPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switch attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of successful path switch attempts for this RTP + connection due to errors." + + ::= { hprRtpEntry 28 } + +hprRtpBadErrPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switch attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of unsuccessful path switches for this RTP + connection due to errors." + + ::= { hprRtpEntry 29 } + +hprRtpOkOpPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of successful path switches for this RTP connection + due to operator requests." + + ::= { hprRtpEntry 30 } + +hprRtpBadOpPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of unsuccessful path switches for this RTP + connection due to operator requests. This counter is not + incremented by an implementation that does not support + operator-requested path switches, even if a Management Station + requests such a path switch by setting the + hprRtpPathSwitchTrigger object." + + ::= { hprRtpEntry 31 } + +hprRtpCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for this + RTP connection last experienced a discontinuity. This will be + the more recent of two times: the time at which the + connection was established or the time at which the HPR + counters were last turned on or off." + + ::= { hprRtpEntry 32 } + +-- ********************************************************************* +-- The RTP Connection Status Table +-- This table contains statistics and historical information related to +-- both successful and unsuccessful RTP path switches. This +-- information can be important for both trend analysis and problem +-- determination. +-- +-- Note the terminology here: when RTP is triggered to find a new path +-- for a connection, this initiates a 'path switch,' which will end up +-- being either successful or unsuccessful. During this path switch, +-- RTP will make one or more 'path switch attempts,' which are attempts +-- to find a new path for the connection and switch the connection to +-- it. This 'new' path may be the same path that the connection was +-- using before the path switch. +-- +-- It is an implementation option how many entries to keep in this +-- table, and how long to retain any individual entry. +-- ********************************************************************* +hprRtpStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprRtpStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "RTP Connection Status Table: This table contains historical + information on RTP connections. An entry is created in this + table when a path switch is completed, either successfully or + unsuccessfully." + + ::= { hprRtp 3 } + +hprRtpStatusEntry OBJECT-TYPE + SYNTAX HprRtpStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by local NCE ID, local TCID, and an + integer hprRtpStatusIndex. Thus the primary grouping of table + rows is by RTP connection, with the multiple entries for a + given RTP connection ordered by time." + + INDEX + { hprRtpStatusLocNceId, + hprRtpStatusLocTcid, + hprRtpStatusIndex } + + ::= { hprRtpStatusTable 1 } + + HprRtpStatusEntry ::= SEQUENCE { + hprRtpStatusLocNceId OCTET STRING, -- local nce id + hprRtpStatusLocTcid OCTET STRING, -- local tcid + hprRtpStatusIndex Unsigned32, -- index + hprRtpStatusStartTime DateAndTime, -- time stamp + hprRtpStatusEndTime DateAndTime, -- time stamp + hprRtpStatusRemCpName SnaControlPointName,-- remote cp name + hprRtpStatusRemNceId OCTET STRING, -- remote nce id + hprRtpStatusRemTcid OCTET STRING, -- remote tcid + hprRtpStatusNewRscv OCTET STRING, -- new rscv + hprRtpStatusOldRscv OCTET STRING, -- old rscv + hprRtpStatusCause INTEGER, -- cause + hprRtpStatusLastAttemptResult INTEGER -- result of last + } + +hprRtpStatusLocNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpStatusEntry 1 } + +hprRtpStatusLocTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of this RTP connection." + + ::= { hprRtpStatusEntry 2 } + +hprRtpStatusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. This value begins at one and is incremented + when a new entry is added to the table. It is an + implementation choice whether to run a single counter for + all entries in the table, or to run a separate counter for + the entries for each RTP connection. In the unlikely event + of a wrap, it is assumed that Management Stations will have + the ability to order table entries correctly." + + ::= { hprRtpStatusEntry 3 } + +hprRtpStatusStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the path switch began." + + ::= { hprRtpStatusEntry 4 } + +hprRtpStatusEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the path switch was ended, either successfully + or unsuccessfully." + + ::= { hprRtpStatusEntry 5 } + +hprRtpStatusRemCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the remote node of + this RTP connection." + + ::= { hprRtpStatusEntry 6 } + +hprRtpStatusRemNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpStatusEntry 7 } + +hprRtpStatusRemTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote TCID of this RTP connection." + + ::= { hprRtpStatusEntry 8 } + +hprRtpStatusNewRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The new Route Selection Control Vector for this RTP + connection. A zero-length string indicates that no value is + available, perhaps because the implementation does not save + RSCVs." + + ::= { hprRtpStatusEntry 9 } + +hprRtpStatusOldRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The old Route Selection Control Vector for this RTP + connection. A zero-length string indicates that no value is + available, perhaps because the implementation does not save + RSCVs." + + ::= { hprRtpStatusEntry 10 } + +hprRtpStatusCause OBJECT-TYPE + SYNTAX INTEGER { + other(1), + rtpConnFail(2), + locLinkFail(3), + remLinkFail(4), + operRequest(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason for the path switch: + + other(1) - Reason other than those listed below, + rtpConnFail(2) - RTP connection failure detected, + locLinkFail(3) - Local link failure, + remLinkFail(4) - Remote link failure (learned from TDUs), + operRequest(5) - Operator requested path switch. " + + ::= { hprRtpStatusEntry 11 } + +hprRtpStatusLastAttemptResult OBJECT-TYPE + SYNTAX INTEGER { successful(1), + initiatorMoving(2), + directorySearchFailed(3), + rscvCalculationFailed(4), + negativeRouteSetupReply(5), + backoutRouteSetupReply(6), + timeoutDuringFirstAttempt(7), + otherUnsuccessful(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result of the last completed path switch attempt. If the + path switch is aborted in the middle of a path switch attempt + because the path switch timer expires, the result of the + previous path switch attempt is reported. + + The values are defined as follows: + + successful(1) - The final path switch + attempt was successful. + initiatorMoving(2) - The final path switch + attempt failed because the + initiator is mobile, and + there was no active link + out of this node. + directorySearchFailed(3) - The final path switch + attempt failed because a + directory search for the + destination node's CP name + failed. + rscvCalculationFailed(4) - The final path switch + attempt failed because an + RSCV to the node containing + the remote RTP endpoint + could not be calculated. + negativeRouteSetupReply(5) - The final path switch + attempt failed because route + setup failed for the new + path. + backoutRouteSetupReply(6) - The final path switch + attempt failed because the + remote RTP endpoint refused + to continue the RTP + connection. + timeoutDuringFirstAttempt(7) - The path switch timer + expired during the first + path switch attempt. + otherUnsuccessful(8) - The final path switch + attempt failed for a reason + other than those listed + above." + + + ::= { hprRtpStatusEntry 12 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +hprConformance OBJECT IDENTIFIER ::= { hprMIB 2 } + +hprCompliances OBJECT IDENTIFIER ::= { hprConformance 1 } +hprGroups OBJECT IDENTIFIER ::= { hprConformance 2 } + +-- Compliance statements + +hprCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the HPR MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + hprGlobalConfGroup, + hprAnrRoutingConfGroup, + hprTransportUserConfGroup + } + +-- Conditionally mandatory groups + GROUP hprRtpConfGroup + DESCRIPTION + "The hprRtpConfGroup is mandatory for HPR implementations + supporting the HPR transport tower." + + ::= { hprCompliances 1 } + +-- Units of conformance +hprGlobalConfGroup OBJECT-GROUP + OBJECTS { + hprNodeCpName, + hprOperatorPathSwitchSupport + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of HPR + general information and capabilities." + + ::= { hprGroups 1 } + +hprAnrRoutingConfGroup OBJECT-GROUP + OBJECTS { + hprAnrsAssigned, + hprAnrCounterState, + hprAnrCounterStateTime, + hprAnrType, + hprAnrOutTgDest, + hprAnrOutTgNum, + hprAnrPacketsReceived, + hprAnrCounterDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for the + node's ANR routing." + + ::= { hprGroups 2 } + +hprTransportUserConfGroup OBJECT-GROUP + OBJECTS { + hprNceType, + hprNceDefault, + hprNceInstanceId + } + STATUS current + DESCRIPTION + "A collection of objects providing information on the users of + the HPR transport known to the node." + + ::= { hprGroups 3 } + +hprRtpConfGroup OBJECT-GROUP + OBJECTS { + hprRtpGlobeConnSetups, + hprRtpGlobeCtrState, + hprRtpGlobeCtrStateTime, + hprRtpRemCpName, + hprRtpRemNceId, + hprRtpRemTcid, + hprRtpPathSwitchTrigger, + hprRtpRscv, + hprRtpTopic, + hprRtpState, + hprRtpUpTime, + hprRtpLivenessTimer, + hprRtpShortReqTimer, + hprRtpPathSwTimer, + hprRtpLivenessTimeouts, + hprRtpShortReqTimeouts, + + hprRtpMaxSendRate, + hprRtpMinSendRate, + hprRtpCurSendRate, + + hprRtpSmRdTripDelay, + + hprRtpSendPackets, + hprRtpRecvPackets, + hprRtpSendBytes, + hprRtpRecvBytes, + + hprRtpRetrPackets, + hprRtpPacketsDiscarded, + hprRtpDetectGaps, + hprRtpRateReqSends, + + hprRtpOkErrPathSws, + hprRtpBadErrPathSws, + hprRtpOkOpPathSws, + hprRtpBadOpPathSws, + hprRtpCounterDisconTime, + + hprRtpStatusStartTime, + hprRtpStatusEndTime, + hprRtpStatusRemNceId, + hprRtpStatusRemTcid, + hprRtpStatusRemCpName, + hprRtpStatusNewRscv, + hprRtpStatusOldRscv, + hprRtpStatusCause, + hprRtpStatusLastAttemptResult + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation for RTP + connection end points." + + ::= { hprGroups 4 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/IANA-ITU-ALARM-TC-MIB b/mibs/ietf/IANA-ITU-ALARM-TC-MIB new file mode 100644 index 0000000..6476151 --- /dev/null +++ b/mibs/ietf/IANA-ITU-ALARM-TC-MIB @@ -0,0 +1,350 @@ +IANA-ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + + + ianaItuAlarmNumbers MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana@iana.org" + DESCRIPTION + "The MIB module defines the ITU Alarm + textual convention for objects expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 119 } + +IANAItuProbableCause ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU-T probable cause values. Duplicate values defined in + X.733 are appended with X733 to ensure syntactic uniqueness. + Probable cause value 0 is reserved for special purposes. + + The Internet Assigned Number Authority (IANA) is responsible + for the assignment of the enumerations in this TC. + IANAItuProbableCause value of 0 is reserved for special + purposes and MUST NOT be assigned. + + Values of IANAItuProbableCause in the range 1 to 1023 are + reserved for causes that correspond to ITU-T probable cause. + + All other requests for new causes will be handled on a + first-come, first served basis and will be assigned + enumeration values starting with 1025. + + Request should come in the form of well-formed + + + SMI [RFC2578] for enumeration names that are unique and + sufficiently descriptive. + + While some effort will be taken to ensure that new probable + causes do not conceptually duplicate existing probable + causes it is acknowledged that the existence of conceptual + duplicates in the starting probable cause list is an known + industry reality. + + To aid IANA in the administration of probable cause names + and values, the OPS Area Director will appoint one or more + experts to help review requests. + + See http://www.iana.org" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + + SYNTAX INTEGER + { + -- The following probable causes were defined in M.3100 + aIS (1), + callSetUpFailure (2), + degradedSignal (3), + farEndReceiverFailure (4), + framingError (5), + lossOfFrame (6), + lossOfPointer (7), + lossOfSignal (8), + payloadTypeMismatch (9), + transmissionError (10), + remoteAlarmInterface (11), + excessiveBER (12), + pathTraceMismatch (13), + unavailable (14), + signalLabelMismatch (15), + lossOfMultiFrame (16), + receiveFailure (17), + transmitFailure (18), + modulationFailure (19), + demodulationFailure (20), + broadcastChannelFailure (21), + + + connectionEstablishmentError (22), + invalidMessageReceived (23), + localNodeTransmissionError (24), + remoteNodeTransmissionError (25), + routingFailure (26), + + --Values 27-50 are reserved for communications alarm related + --probable causes + -- The following are used with equipment alarm. + + backplaneFailure (51), + dataSetProblem (52), + equipmentIdentifierDuplication (53), + externalIFDeviceProblem (54), + lineCardProblem (55), + multiplexerProblem (56), + nEIdentifierDuplication (57), + powerProblem (58), + processorProblem (59), + protectionPathFailure (60), + receiverFailure (61), + replaceableUnitMissing (62), + replaceableUnitTypeMismatch (63), + synchronizationSourceMismatch (64), + terminalProblem (65), + timingProblem (66), + transmitterFailure (67), + trunkCardProblem (68), + replaceableUnitProblem (69), + realTimeClockFailure (70), + --An equipment alarm to be issued if the system detects that the + --real time clock has failed + antennaFailure (71), + batteryChargingFailure (72), + diskFailure (73), + frequencyHoppingFailure (74), + iODeviceError (75), + lossOfSynchronisation (76), + lossOfRedundancy (77), + powerSupplyFailure (78), + signalQualityEvaluationFailure (79), + tranceiverFailure (80), + protectionMechanismFailure (81), + protectingResourceFailure (82), + -- Values 83-100 are reserved for equipment alarm related probable + -- causes + -- The following are used with environmental alarm. + airCompressorFailure (101), + + + airConditioningFailure (102), + airDryerFailure (103), + batteryDischarging (104), + batteryFailure (105), + commercialPowerFailure (106), + coolingFanFailure (107), + engineFailure (108), + fireDetectorFailure (109), + fuseFailure (110), + generatorFailure (111), + lowBatteryThreshold (112), + pumpFailure (113), + rectifierFailure (114), + rectifierHighVoltage (115), + rectifierLowFVoltage (116), + ventilationsSystemFailure (117), + enclosureDoorOpen (118), + explosiveGas (119), + fire (120), + flood (121), + highHumidity (122), + highTemperature (123), + highWind (124), + iceBuildUp (125), + intrusionDetection (126), + lowFuel (127), + lowHumidity (128), + lowCablePressure (129), + lowTemperatue (130), + lowWater (131), + smoke (132), + toxicGas (133), + coolingSystemFailure (134), + externalEquipmentFailure (135), + externalPointFailure (136), + -- Values 137-150 are reserved for environmental alarm related + -- probable causes + -- The following are used with Processing error alarm. + storageCapacityProblem (151), + memoryMismatch (152), + corruptData (153), + outOfCPUCycles (154), + sfwrEnvironmentProblem (155), + sfwrDownloadFailure (156), + lossOfRealTimel (157), + --A processing error alarm to be issued after the system has + --reinitialised. This will indicate + --to the management systems that the view they have of the managed + + + --system may no longer + --be valid. Usage example: The managed + --system issues this alarm after a reinitialization with severity + --warning to inform the + --management system about the event. No clearing notification will + --be sent. + applicationSubsystemFailure (158), + configurationOrCustomisationError (159), + databaseInconsistency (160), + fileError (161), + outOfMemory (162), + softwareError (163), + timeoutExpired (164), + underlayingResourceUnavailable (165), + versionMismatch (166), + --Values 168-200 are reserved for processing error alarm related + -- probable causes. + bandwidthReduced (201), + congestion (202), + excessiveErrorRate (203), + excessiveResponseTime (204), + excessiveRetransmissionRate (205), + reducedLoggingCapability (206), + systemResourcesOverload (207 ), + -- The following were defined X.733 + adapterError (500), + applicationSubsystemFailture (501), + bandwidthReducedX733 (502), + callEstablishmentError (503), + communicationsProtocolError (504), + communicationsSubsystemFailure (505), + configurationOrCustomizationError (506), + congestionX733 (507), + coruptData (508), + cpuCyclesLimitExceeded (509), + dataSetOrModemError (510), + degradedSignalX733 (511), + dteDceInterfaceError (512), + enclosureDoorOpenX733 (513), + equipmentMalfunction (514), + excessiveVibration (515), + fileErrorX733 (516), + fireDetected (517), + framingErrorX733 (518), + heatingVentCoolingSystemProblem (519), + humidityUnacceptable (520), + inputOutputDeviceError (521), + inputDeviceError (522), + + + lanError (523), + leakDetected (524), + localNodeTransmissionErrorX733 (525), + lossOfFrameX733 (526), + lossOfSignalX733 (527), + materialSupplyExhausted (528), + multiplexerProblemX733 (529), + outOfMemoryX733 (530), + ouputDeviceError (531), + performanceDegraded (532), + powerProblems (533), + pressureUnacceptable (534), + processorProblems (535), + pumpFailureX733 (536), + queueSizeExceeded (537), + receiveFailureX733 (538), + receiverFailureX733 (539), + remoteNodeTransmissionErrorX733 (540), + resourceAtOrNearingCapacity (541), + responseTimeExecessive (542), + retransmissionRateExcessive (543), + softwareErrorX733 (544), + softwareProgramAbnormallyTerminated (545), + softwareProgramError (546), + storageCapacityProblemX733 (547), + temperatureUnacceptable (548), + thresholdCrossed (549), + timingProblemX733 (550), + toxicLeakDetected (551), + transmitFailureX733 (552), + transmiterFailure (553), + underlyingResourceUnavailable (554), + versionMismatchX733 (555), + -- The following are defined in X.736 + authenticationFailure (600), + breachOfConfidentiality (601), + cableTamper (602), + delayedInformation (603), + denialOfService (604), + duplicateInformation (605), + informationMissing (606), + informationModificationDetected (607), + informationOutOfSequence (608), + keyExpired (609), + nonRepudiationFailure (610), + outOfHoursActivity (611), + outOfService (612), + proceduralError (613), + + + unauthorizedAccessAttempt (614), + unexpectedInformation (615), + + other (1024) + } + +IANAItuEventType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ITU event Type values. + + The Internet Assigned Number Authority (IANA) is + responsible for the assignment of the enumerations + in this TC. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique + and sufficiently descriptive. + + See http://www.iana.org " + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + SYNTAX INTEGER + { + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmentalAlarm (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation (9), + securityServiceOrMechanismViolation (10), + timeDomainViolation (11) + } + +END diff --git a/mibs/ietf/IF-CAP-STACK-MIB b/mibs/ietf/IF-CAP-STACK-MIB new file mode 100644 index 0000000..5534b37 --- /dev/null +++ b/mibs/ietf/IF-CAP-STACK-MIB @@ -0,0 +1,305 @@ +IF-CAP-STACK-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ifStackGroup2, ifStackHigherLayer, ifStackLowerLayer + FROM IF-MIB -- [RFC2863] + ifInvStackGroup + FROM IF-INVERTED-STACK-MIB -- [RFC2864] + ; + + ifCapStackMIB MODULE-IDENTITY + LAST-UPDATED "200711070000Z" -- November 07, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/OLD/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + + + + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Phone: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + DESCRIPTION + "The objects in this MIB module are used to describe + cross-connect capabilities of stacked (layered) interfaces, + complementing ifStackTable and ifInvStackTable defined in + IF-MIB and IF-INVERTED-STACK-MIB, respectively. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 5066; see the RFC + itself for full legal notices." + + REVISION "200711070000Z" -- November 07, 2007 + DESCRIPTION "Initial version, published as RFC 5066." + + ::= { mib-2 166 } + + -- Sections of the module + -- Structured as recommended by [RFC4181], see + -- Appendix D: Suggested OID Layout + + ifCapStackObjects OBJECT IDENTIFIER ::= { ifCapStackMIB 1 } + + ifCapStackConformance OBJECT IDENTIFIER ::= { ifCapStackMIB 2 } + + -- Groups in the module + + -- + -- ifCapStackTable group + -- + + + + + ifCapStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table, modeled after ifStackTable from IF-MIB, + contains information on the possible 'on-top-of' + relationships between the multiple sub-layers of network + interfaces (as opposed to actual relationships described in + ifStackTable). In particular, it contains information on + which sub-layers MAY possibly run 'on top of' which other + sub-layers, as determined by cross-connect capability of the + device, where each sub-layer corresponds to a conceptual row + in the ifTable. For example, when the sub-layer with ifIndex + value x can be connected to run on top of the sub-layer with + ifIndex value y, then this table contains: + + ifCapStackStatus.x.y=true + + The ifCapStackStatus.x.y row does not exist if it is + impossible to connect between the sub-layers x and y. + + Note that for most stacked interfaces (e.g., 2BASE-TL) + there's always at least one higher-level interface (e.g., PCS + port) for each lower-level interface (e.g., PME) and at + least one lower-level interface for each higher-level + interface, that is, there is at least a single row with a + 'true' status for any such existing value of x or y. + + This table is read-only as it describes device capabilities." + REFERENCE + "IF-MIB, ifStackTable" + ::= { ifCapStackObjects 1 } + + ifCapStackEntry OBJECT-TYPE + SYNTAX IfCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two + sub-layers, specifying that one sub-layer MAY possibly run + on 'top' of the other sub-layer. Each sub-layer corresponds + to a conceptual row in the ifTable (interface index for + lower and higher layer, respectively)." + INDEX { + ifStackHigherLayer, + ifStackLowerLayer + } + + + + ::= { ifCapStackTable 1 } + + IfCapStackEntry ::= SEQUENCE { + ifCapStackStatus TruthValue + } + + ifCapStackStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the 'cross-connect capability' relationship + between two sub-layers. The following values can be returned: + true(1) - indicates that the sub-layer interface, + identified by the ifStackLowerLayer MAY + be connected to run 'below' the sub-layer + interface, identified by the + ifStackHigherLayer index. + false(2) - the sub-layer interfaces cannot be + connected temporarily due to + unavailability of the interface(s), e.g., + one of the interfaces is located on an + absent pluggable module. + + Note that lower-layer interface availability per higher-layer, + indicated by the value of 'true', can be constrained by + other parameters, for example, by the aggregation capacity of + a higher-layer interface or by the lower-layer interface in + question being already connected to another higher-layer + interface. In order to ensure that a particular sub-layer can + be connected to another sub-layer, all respective objects + (e.g., ifCapStackTable, ifStackTable, and efmCuPAFCapacity for + EFMCu interfaces) SHALL be inspected. + + This object is read-only, unlike ifStackStatus, as it + describes a cross-connect capability." + ::= { ifCapStackEntry 1 } + + ifInvCapStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfInvCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the possible relationships + between the multiple sub-layers of network interfaces. This + table, modeled after ifInvStackTable from + IF-INVERTED-STACK-MIB, is an inverse of the ifCapStackTable + defined in this MIB module. + + + + In particular, this table contains information on which + sub-layers MAY run 'underneath' 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 MAY be + connected to run underneath the sub-layer with ifIndex value + y, then this table contains: + + ifInvCapStackStatus.x.y=true + + This table contains exactly the same number of rows as the + ifCapStackTable, but the rows appear in a different order. + + This table is read-only as it describes a cross-connect + capability." + REFERENCE + "IF-INVERTED-STACK-MIB, ifInvStackTable" + ::= { ifCapStackObjects 2 } + + ifInvCapStackEntry OBJECT-TYPE + SYNTAX IfInvCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer MAY run underneath the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackLowerLayer, ifStackHigherLayer } + ::= { ifInvCapStackTable 1 } + + IfInvCapStackEntry ::= SEQUENCE { + ifInvCapStackStatus TruthValue + } + + ifInvCapStackStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the possible 'cross-connect capability' + relationship between two sub-layers. + + An instance of this object exists for each instance of the + ifCapStackStatus object, and vice versa. For example, if the + variable ifCapStackStatus.H.L exists, then the variable + ifInvCapStackStatus.L.H must also exist, and vice versa. In + addition, the two variables always have the same value. + + + + + The ifInvCapStackStatus object is read-only, as it describes + a cross-connect capability." + REFERENCE + "ifCapStackStatus" + ::= { ifInvCapStackEntry 1 } + + -- + -- Conformance Statements + -- + + ifCapStackGroups OBJECT IDENTIFIER ::= + { ifCapStackConformance 1 } + + ifCapStackCompliances OBJECT IDENTIFIER ::= + { ifCapStackConformance 2 } + + -- Units of Conformance + + ifCapStackGroup OBJECT-GROUP + OBJECTS { + ifCapStackStatus, + ifInvCapStackStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + cross-connect capability of multi-layer (stacked) network + interfaces." + ::= { ifCapStackGroups 1 } + + + -- Compliance Statements + + ifCapStackCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities, which provide + information on the cross-connect capability of multi-layer + (stacked) network interfaces, with flexible cross-connect + between the sub-layers." + + + MODULE -- this module + MANDATORY-GROUPS { + ifCapStackGroup + } + + OBJECT ifCapStackStatus + + + + SYNTAX TruthValue { true(1) } + DESCRIPTION + "Support for the false(2) value is OPTIONAL for + implementations supporting pluggable interfaces." + + OBJECT ifInvCapStackStatus + SYNTAX TruthValue { true(1) } + DESCRIPTION + "Support for the false(2) value is OPTIONAL for + implementations supporting pluggable interfaces." + + MODULE IF-MIB + MANDATORY-GROUPS { + ifStackGroup2 + } + + MODULE IF-INVERTED-STACK-MIB + MANDATORY-GROUPS { + ifInvStackGroup + } + + ::= { ifCapStackCompliances 1 } +END diff --git a/mibs/ietf/IF-INVERTED-STACK-MIB b/mibs/ietf/IF-INVERTED-STACK-MIB new file mode 100644 index 0000000..981209e --- /dev/null +++ b/mibs/ietf/IF-INVERTED-STACK-MIB @@ -0,0 +1,159 @@ +IF-INVERTED-STACK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2 FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifStackGroup2, + ifStackHigherLayer, ifStackLowerLayer FROM IF-MIB; + +ifInvertedStackMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + 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 which provides the Inverted Stack Table for + interface sub-layers." + REVISION "200006140000Z" + DESCRIPTION + "Initial revision, published as RFC 2864" + ::= { mib-2 77 } + +ifInvMIBObjects OBJECT IDENTIFIER ::= { ifInvertedStackMIB 1 } + +-- +-- The Inverted Interface Stack Group +-- + +ifInvStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfInvStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the relationships between + + + the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'underneath' 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 + underneath the sub-layer with ifIndex value y, then this + table contains: + + ifInvStackStatus.x.y=active + + For each ifIndex value, z, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with z. For one of these rows, z + is the value of ifStackHigherLayer; for the other, z is the + value of ifStackLowerLayer. (If z is not involved in + multiplexing, then these are the only two rows associated + with z.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifInvStackStatus.z.0=active + ifInvStackStatus.0.z=active + + This table contains exactly the same number of rows as the + ifStackTable, but the rows appear in a different order." + REFERENCE + "ifStackTable of RFC 2863" + ::= { ifInvMIBObjects 1 } + +ifInvStackEntry OBJECT-TYPE + SYNTAX IfInvStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs underneath the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackLowerLayer, ifStackHigherLayer } + ::= { ifInvStackTable 1 } + +IfInvStackEntry ::= + SEQUENCE { + ifInvStackStatus RowStatus + } + +ifInvStackStatus OBJECT-TYPE + + + SYNTAX RowStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the relationship between two sub-layers. + + An instance of this object exists for each instance of the + ifStackStatus object, and vice versa. For example, if the + variable ifStackStatus.H.L exists, then the variable + ifInvStackStatus.L.H must also exist, and vice versa. In + addition, the two variables always have the same value. + + However, unlike ifStackStatus, the ifInvStackStatus object + is NOT write-able. A network management application wishing + to change a relationship between sub-layers H and L cannot + do so by modifying the value of ifInvStackStatus.L.H, but + must instead modify the value of ifStackStatus.H.L. After + the ifStackTable is modified, the change will be reflected + in this table." + ::= { ifInvStackEntry 1 } + +-- conformance information + +ifInvConformance OBJECT IDENTIFIER ::= { ifInvMIBObjects 2 } + +ifInvGroups OBJECT IDENTIFIER ::= { ifInvConformance 1 } +ifInvCompliances OBJECT IDENTIFIER ::= { ifInvConformance 2 } + +-- compliance statements + +ifInvCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which provide + inverted information on the layering of network interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifInvStackGroup } + + OBJECT ifInvStackStatus + SYNTAX INTEGER { active(1) } + DESCRIPTION + "Support is only required for 'active'." + + + + + + + + MODULE IF-MIB + MANDATORY-GROUPS { ifStackGroup2 } + + ::= { ifInvCompliances 1 } + +-- units of conformance + +ifInvStackGroup OBJECT-GROUP + OBJECTS { ifInvStackStatus } + STATUS current + DESCRIPTION + "A collection of objects providing inverted information on + the layering of MIB-II interfaces." + ::= { ifInvGroups 1 } + +END diff --git a/mibs/ietf/IF-MIB b/mibs/ietf/IF-MIB new file mode 100644 index 0000000..8713894 --- /dev/null +++ b/mibs/ietf/IF-MIB @@ -0,0 +1,1899 @@ +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, + NOTIFICATION-GROUP FROM SNMPv2-CONF + snmpTraps FROM SNMPv2-MIB + IANAifType FROM IANAifType-MIB; + + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + 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 "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 } + +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } + +-- +-- Textual Conventions +-- + + +-- OwnerString has the same semantics as used in RFC 1271 + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 in 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 2579. 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 optional, but strongly recommended +-- 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 InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus + } + + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + 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 InterfaceIndexOrZero + 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 SNMP 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 linkUp trap signifies that the SNMP 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 + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + +-- The groups: +-- ifFixedLengthGroup +-- ifHCFixedLengthGroup +-- ifPacketGroup +-- ifHCPacketGroup +-- ifVHCPacketGroup +-- are mutually exclusive; at most one of these groups is implemented +-- for a particular interface. When any of these groups is implemented +-- for a particular interface, then ifCounterDiscontinuityGroup must +-- also be implemented for that interface. + + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + 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 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + 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 ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + 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 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 3 } + +-- 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 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +-- 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 2579. 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 + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 } + +END diff --git a/mibs/ietf/IFCP-MGMT-MIB b/mibs/ietf/IFCP-MGMT-MIB new file mode 100644 index 0000000..7ff80a6 --- /dev/null +++ b/mibs/ietf/IFCP-MGMT-MIB @@ -0,0 +1,1076 @@ +IFCP-MGMT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Gauge32, + Integer32, + Unsigned32, + transmission + FROM SNMPv2-SMI + + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF + + TEXTUAL-CONVENTION, + TimeStamp, + TruthValue, + StorageType + FROM SNMPv2-TC + +-- From RFC 2021 + ZeroBasedCounter32 + FROM RMON2-MIB + +-- From RFC 2856 + ZeroBasedCounter64 + FROM HCNUM-TC + +-- From RFC 2863 + InterfaceIndexOrZero + FROM IF-MIB + +-- From RFC 3411 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + +-- From RFC 4001 + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + +-- From RFC 4044 + FcNameIdOrZero, + FcAddressIdOrZero + + + + FROM FC-MGMT-MIB + +-- From RFC 4133 + PhysicalIndexOrZero + FROM ENTITY-MIB + ; + +ifcpMgmtMIB MODULE-IDENTITY + LAST-UPDATED "200601170000Z" + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO " + Attn: Kevin Gibbons + McDATA Corporation + 4555 Great America Pkwy + Santa Clara, CA 95054-1208 USA + Phone: (408) 567-5765 + EMail: kevin.gibbons@mcdata.com + + Charles Monia + Consultant + 7553 Morevern Circle + San Jose, CA 95135 USA + EMail: charles_monia@yahoo.com + + Josh Tseng + Riverbed Technology + 501 2nd Street, Suite 410 + San Francisco, CA 94107 USA + Phone: (650) 274-2109 + EMail: joshtseng@yahoo.com + + Franco Travostino + Nortel + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: (978) 288-7708 + EMail: travos@nortel.com" + + DESCRIPTION + "This module defines management information specific + to internet Fibre Channel Protocol (iFCP) gateway + management. + + Copyright (C) The Internet Society 2006. This + version of this MIB module is part of RFC 4369; see + the RFC itself for full legal notices." + REVISION "200601170000Z" + DESCRIPTION + + + + "Initial version of iFCP Management Module. + This MIB published as RFC 4369." + ::= { transmission 230 } + +-- +-- Textual Conventions +-- + + IfcpIpTOVorZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The maximum propagation delay, in seconds, + for an encapsulated FC frame to traverse the + IP network. A value of 0 implies fibre + channel frame lifetime limits will not be + enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX Unsigned32 (0..3600) + + IfcpLTIorZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The value for the Liveness Test Interval + (LTI) being used in an iFCP connection, in + seconds. A value of 0 implies no Liveness + Test Interval will be used." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX Unsigned32 (0..65535) + + IfcpSessionStates ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The value for an iFCP session state." + SYNTAX INTEGER {down(1), openPending(2), open(3)} + + IfcpAddressMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The values for iFCP Address Translation + Mode." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX INTEGER {addressTransparent(1), + addressTranslation(2)} + +-- +-- Internet Fibre Channel Protocol (iFCP) +-- + +ifcpGatewayObjects OBJECT IDENTIFIER ::= {ifcpMgmtMIB 1} +ifcpGatewayConformance OBJECT IDENTIFIER ::= {ifcpMgmtMIB 2} + + + + +-- +-- Local iFCP Gateway Instance Information ================== +-- + +ifcpLclGatewayInfo OBJECT IDENTIFIER ::= {ifcpGatewayObjects 1} + +ifcpLclGtwyInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfcpLclGtwyInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Information about all local iFCP Gateway instances that can + be monitored and controlled. This table contains an entry + for each local iFCP Gateway instance that is being managed." + ::= {ifcpLclGatewayInfo 1} + +ifcpLclGtwyInstEntry OBJECT-TYPE + SYNTAX IfcpLclGtwyInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An entry in the local iFCP Gateway Instance table. + Parameters and settings for the gateway are found here." + INDEX { ifcpLclGtwyInstIndex } + ::= {ifcpLclGtwyInstTable 1} + +IfcpLclGtwyInstEntry ::= SEQUENCE { + ifcpLclGtwyInstIndex Unsigned32, + ifcpLclGtwyInstPhyIndex PhysicalIndexOrZero, + ifcpLclGtwyInstVersionMin Unsigned32, + ifcpLclGtwyInstVersionMax Unsigned32, + ifcpLclGtwyInstAddrTransMode IfcpAddressMode, + ifcpLclGtwyInstFcBrdcstSupport TruthValue, + ifcpLclGtwyInstDefaultIpTOV IfcpIpTOVorZero, + ifcpLclGtwyInstDefaultLTInterval IfcpLTIorZero, + ifcpLclGtwyInstDescr SnmpAdminString, + ifcpLclGtwyInstNumActiveSessions Gauge32, + ifcpLclGtwyInstStorageType StorageType + } + +ifcpLclGtwyInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An arbitrary integer value to uniquely identify this iFCP + Gateway from other local Gateway instances." + + + + ::= {ifcpLclGtwyInstEntry 1} + +ifcpLclGtwyInstPhyIndex OBJECT-TYPE + SYNTAX PhysicalIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"An index indicating the location of this local gateway within + a larger entity, if one exists. If supported, this is the + entPhysicalIndex from the Entity MIB (Version 3), for this + iFCP Gateway. If not supported, or if not related to a + physical entity, then the value of this object is 0." + REFERENCE "Entity MIB (Version 3)" + ::= {ifcpLclGtwyInstEntry 2} + +ifcpLclGtwyInstVersionMin OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The minimum iFCP protocol version supported by the local iFCP + gateway instance." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpLclGtwyInstEntry 3} + +ifcpLclGtwyInstVersionMax OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The maximum iFCP protocol version supported by the local iFCP + gateway instance." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpLclGtwyInstEntry 4} + +ifcpLclGtwyInstAddrTransMode OBJECT-TYPE + SYNTAX IfcpAddressMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The local iFCP gateway operating mode. Changing this value + may cause existing sessions to be disrupted." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { addressTranslation } + ::= {ifcpLclGtwyInstEntry 5} + +ifcpLclGtwyInstFcBrdcstSupport OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"Whether the local iFCP gateway supports FC Broadcast. + Changing this value may cause existing sessions to be + disrupted." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { false } + ::= {ifcpLclGtwyInstEntry 6} + +ifcpLclGtwyInstDefaultIpTOV OBJECT-TYPE + SYNTAX IfcpIpTOVorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The default IP_TOV used for iFCP sessions at this gateway. + This is the default maximum propagation delay that will be + used for an iFCP session. The value can be changed on a + per-session basis. The valid range is 0 - 3600 seconds. + A value of 0 implies that fibre channel frame lifetime limits + will not be enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { 6 } + ::= {ifcpLclGtwyInstEntry 7} + +ifcpLclGtwyInstDefaultLTInterval OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The default Liveness Test Interval (LTI), in seconds, used + for iFCP sessions at this gateway. This is the default + value for an iFCP session and can be changed on a + per-session basis. The valid range is 0 - 65535 seconds. + A value of 0 implies no Liveness Test Interval will be + performed on a session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { 10 } + ::= {ifcpLclGtwyInstEntry 8} + +ifcpLclGtwyInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"A user-entered description for this iFCP Gateway." + DEFVAL { "" } + ::= {ifcpLclGtwyInstEntry 9} + + + + +ifcpLclGtwyInstNumActiveSessions OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The current total number of iFCP sessions in the open or + open-pending state." + ::= {ifcpLclGtwyInstEntry 10} + +ifcpLclGtwyInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The storage type for this row. Parameter values defined + for a gateway are usually non-volatile, but may be volatile + or permanent in some configurations. If permanent, then + the following parameters must have read-write access: + ifcpLclGtwyInstAddrTransMode, ifcpLclGtwyInstDefaultIpTOV, + and ifcpLclGtwyInstDefaultLTInterval." + DEFVAL { nonVolatile } + ::= {ifcpLclGtwyInstEntry 11} + +-- +-- iFCP N Port Session Information ============================ +-- + +ifcpNportSessionInfo + OBJECT IDENTIFIER ::= {ifcpGatewayObjects 2} + +ifcpSessionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An iFCP session consists of the pair of N_PORTs comprising + the session endpoints joined by a single TCP/IP connection. + This table provides information on each iFCP session + currently using a local iFCP Gateway instance. iFCP sessions + are created and removed by the iFCP Gateway instances, which + are reflected in this table." + ::= {ifcpNportSessionInfo 1} + +ifcpSessionAttributesEntry OBJECT-TYPE + SYNTAX IfcpSessionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION +"Each entry contains information about one iFCP session consisting + of a pair of N_PORTs joined by a single TCP/IP connection. This + table's INDEX includes ifcpLclGtwyInstIndex, which identifies the + local iFCP Gateway instance that created the session for the + entry. + + Soon after an entry is created in this table for an iFCP session, it + will correspond to an entry in the tcpConnectionTable of the TCP-MIB + (RFC 4022). The corresponding entry might represent a preexisting + TCP connection, or it might be a newly-created entry. (Note that if + IPv4 is being used, an entry in RFC 2012's tcpConnTable may also + correspond.) The values of ifcpSessionLclPrtlAddrType and + ifcpSessionRmtPrtlIfAddrType in this table and the values of + tcpConnectionLocalAddressType and tcpConnectionRemAddressType used + as INDEX values for the corresponding entry in the + tcpConnectionTable should be the same; this makes it simpler to + locate a session's TCP connection in the TCP-MIB. (Of course, all + four values need to be 'ipv4' if there's a corresponding entry in + the tcpConnTable.) + + If an entry is created in this table for a session, prior to + knowing which local and/or remote port numbers will be used for + the TCP connection, then ifcpSessionLclPrtlTcpPort and/or + ifcpSessionRmtPrtlTcpPort have the value zero until such time as + they can be updated to the port numbers (to be) used for the + connection. (Thus, a port value of zero should not be used to + locate a session's TCP connection in the TCP-MIB.) + + When the TCP connection terminates, the entry in the + tcpConnectionTable and the entry in this table both get deleted + (and, if applicable, so does the entry in the tcpConnTable)." + INDEX { ifcpLclGtwyInstIndex, ifcpSessionIndex } + ::= {ifcpSessionAttributesTable 1} + +IfcpSessionAttributesEntry ::= SEQUENCE { + ifcpSessionIndex Integer32, + ifcpSessionLclPrtlIfIndex InterfaceIndexOrZero, + ifcpSessionLclPrtlAddrType InetAddressType, + ifcpSessionLclPrtlAddr InetAddress, + ifcpSessionLclPrtlTcpPort InetPortNumber, + ifcpSessionLclNpWwun FcNameIdOrZero, + ifcpSessionLclNpFcid FcAddressIdOrZero, + ifcpSessionRmtNpWwun FcNameIdOrZero, + ifcpSessionRmtPrtlIfAddrType InetAddressType, + ifcpSessionRmtPrtlIfAddr InetAddress, + ifcpSessionRmtPrtlTcpPort InetPortNumber, + + + + ifcpSessionRmtNpFcid FcAddressIdOrZero, + ifcpSessionRmtNpFcidAlias FcAddressIdOrZero, + ifcpSessionIpTOV IfcpIpTOVorZero, + ifcpSessionLclLTIntvl IfcpLTIorZero, + ifcpSessionRmtLTIntvl IfcpLTIorZero, + ifcpSessionBound TruthValue, + ifcpSessionStorageType StorageType + } + +ifcpSessionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"The iFCP session index is a unique value used as an index + to the table, along with a specific local iFCP Gateway + instance. This index is used because the local N Port and + remote N Port information would create an complex index that + would be difficult to implement." + ::= {ifcpSessionAttributesEntry 1} + +ifcpSessionLclPrtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the interface index in the IF-MIB ifTable being used + as the local portal in this session, as described in the + IF-MIB. If the local portal is not associated with an entry + in the ifTable, then the value is 0. The ifType of the + interface will generally be a type that supports IP, but an + implementation may support iFCP using other protocols. This + object can be used to obtain additional information about the + interface." + REFERENCE "RFC 2863, The Interfaces Group MIB (IF-MIB)" + ::= {ifcpSessionAttributesEntry 2} + +ifcpSessionLclPrtlAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of address in ifcpSessionLclIfAddr." + ::= {ifcpSessionAttributesEntry 3} + +ifcpSessionLclPrtlAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION +"This is the external IP address of the interface being used + for the iFCP local portal in this session. The address type + is defined in ifcpSessionLclPrtlAddrType. If the value is a + DNS name, then the name is resolved once, during the initial + session instantiation." + ::= {ifcpSessionAttributesEntry 4} + +ifcpSessionLclPrtlTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the TCP port number that is being used for the iFCP + local portal in this session. This is normally an ephemeral + port number selected by the gateway. The value may be 0 + during an initial setup period." + ::= {ifcpSessionAttributesEntry 5} + +ifcpSessionLclNpWwun OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"World Wide Unique Name of the local N Port. For an unbound + session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { "" } + ::= {ifcpSessionAttributesEntry 6} + +ifcpSessionLclNpFcid OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier of the local N Port. For an unbound + session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 7} + +ifcpSessionRmtNpWwun OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"World Wide Unique Name of the remote N Port. For an unbound + session, this variable will be a zero-length string." + + + + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { "" } + ::= {ifcpSessionAttributesEntry 8} + +ifcpSessionRmtPrtlIfAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of address in ifcpSessionRmtPrtlIfAddr." + ::= {ifcpSessionAttributesEntry 9} + +ifcpSessionRmtPrtlIfAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the remote gateway IP address being used for the + portal on the remote iFCP gateway. The address type is + defined in ifcpSessionRmtPrtlIfAddrType. If the value is a + DNS name, then the name is resolved once, during the initial + session instantiation." + ::= {ifcpSessionAttributesEntry 10} + +ifcpSessionRmtPrtlTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the TCP port number being used for the portal on the + remote iFCP gateway. Generally, this will be the iFCP + canonical port. The value may be 0 during an initial setup + period." + DEFVAL { 3420 } + ::= {ifcpSessionAttributesEntry 11} + +ifcpSessionRmtNpFcid OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier of the remote N Port. For an + unbound session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 12} + +ifcpSessionRmtNpFcidAlias OBJECT-TYPE + SYNTAX FcAddressIdOrZero + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier Alias assigned by the local gateway + for the remote N Port. For an unbound session, this variable + will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 13} + +ifcpSessionIpTOV OBJECT-TYPE + SYNTAX IfcpIpTOVorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The IP_TOV being used for this iFCP session. This is the + maximum propagation delay that will be used for the iFCP + session. The value can be changed on a per-session basis + and initially defaults to ifcpLclGtwyInstDefaultIpTOV for + the local gateway instance. The valid range is 0 - 3600 + seconds. A value of 0 implies fibre channel frame lifetime + limits will not be enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 14} + +ifcpSessionLclLTIntvl OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The Liveness Test Interval (LTI) used for this iFCP session. + The value can be changed on a per-session basis and initially + defaults to ifcpLclGtwyInstDefaultLTInterval for the local + gateway instance. The valid range is 0 - 65535 seconds. + A value of 0 implies that the gateway will not originate + Liveness Test messages for the session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 15} + +ifcpSessionRmtLTIntvl OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The Liveness Test Interval (LTI) as requested by the remote + gateway instance to use for this iFCP session. This value may + change over the life of the session. The valid range is 0 - + 65535 seconds. A value of 0 implies that the remote gateway + has not been requested to originate Liveness Test messages for + + + + the session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 16} + +ifcpSessionBound OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This value indicates whether this session is bound to a + specific local and remote N Port. Sessions by default are + unbound and ready for future assignment to a local and remote + N Port." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 17} + +ifcpSessionStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The storage type for this row. Parameter values defined + for a session are usually non-volatile, but may be volatile + or permanent in some configurations. If permanent, then + ifcpSessionIpTOV must have read-write access." + DEFVAL { nonVolatile } + ::= {ifcpSessionAttributesEntry 18} + +-- +-- Local iFCP Gateway Instance Session Statistics ============= +-- + +ifcpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"This table provides statistics on an iFCP session." + ::= {ifcpNportSessionInfo 2} + +ifcpSessionStatsEntry OBJECT-TYPE + SYNTAX IfcpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Provides iFCP-specific statistics per session." + AUGMENTS {ifcpSessionAttributesEntry} + + + + ::= {ifcpSessionStatsTable 1} + +IfcpSessionStatsEntry ::= SEQUENCE { + ifcpSessionState IfcpSessionStates, + ifcpSessionDuration Unsigned32, + ifcpSessionTxOctets ZeroBasedCounter64, + ifcpSessionRxOctets ZeroBasedCounter64, + ifcpSessionTxFrames ZeroBasedCounter64, + ifcpSessionRxFrames ZeroBasedCounter64, + ifcpSessionStaleFrames ZeroBasedCounter64, + ifcpSessionHeaderCRCErrors ZeroBasedCounter64, + ifcpSessionFcPayloadCRCErrors ZeroBasedCounter64, + ifcpSessionOtherErrors ZeroBasedCounter64, + ifcpSessionDiscontinuityTime TimeStamp + } + +ifcpSessionState OBJECT-TYPE + SYNTAX IfcpSessionStates + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The current session operating state." + ::= {ifcpSessionStatsEntry 1} + +ifcpSessionDuration OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This indicates, in seconds, how long the iFCP session has + been in an open or open-pending state. When a session is + down, the value is reset to 0." + ::= {ifcpSessionStatsEntry 2} + +ifcpSessionTxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets transmitted by the iFCP gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 3} + +ifcpSessionRxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets received by the iFCP gateway for + this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 4} + +ifcpSessionTxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames transmitted by the gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 5} + +ifcpSessionRxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames received by the gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 6} + +ifcpSessionStaleFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of received iFCP frames that were stale and + discarded by the gateway for this session. Discontinuities + in the value of this counter can occur at reinitialization + of the management system, and at other times as indicated by + the value of ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 7} + +ifcpSessionHeaderCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the frame + header, detected by the gateway for this session. Usually, + a single Header CRC error is sufficient to terminate an + iFCP session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 8} + +ifcpSessionFcPayloadCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the Fibre + Channel frame payload, detected by the gateway for this + session. Discontinuities in the value of this counter can + occur at reinitialization of the management system, and + at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 9} + +ifcpSessionOtherErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of errors, other than errors explicitly + measured, detected by the gateway for this session. + Discontinuities in the value of this counter can occur at + reinitialization of the management system, and at other + times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 10} + +ifcpSessionDiscontinuityTime 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 the ifcpSessionStatsTable counters + suffered a discontinuity. The relevant counters are the + specific Counter64-based instances associated with the + ifcpSessionStatsTable: ifcpSessionTxOctets, + + + + ifcpSessionRxOctets, ifcpSessionTxFrames, + ifcpSessionRxFrames, ifcpSessionStaleFrames, + ifcpSessionHeaderCRCErrors, ifcpSessionFcPayloadCRCErrors, + and ifcpSessionOtherErrors. If no such discontinuities have + occurred since the last reinitialization of the local + management subsystem, then this object contains a zero value." + ::= {ifcpSessionStatsEntry 11} + +-- +-- Low Capacity Statistics +-- + +ifcpSessionLcStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"This table provides low capacity statistics for an iFCP + session. These are provided for backward compatibility with + systems that do not support Counter64-based objects. At + 1-Gbps rates, a Counter32-based object can wrap as often as + every 34 seconds. Counter32-based objects can be sufficient + for many situations. However, when possible, it is + recommended to use the high capacity statistics in + ifcpSessionStatsTable based on Counter64 objects." + ::= {ifcpNportSessionInfo 3} + +ifcpSessionLcStatsEntry OBJECT-TYPE + SYNTAX IfcpSessionLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Provides iFCP-specific statistics per session." + AUGMENTS {ifcpSessionAttributesEntry} + ::= {ifcpSessionLcStatsTable 1} + +IfcpSessionLcStatsEntry ::= SEQUENCE { + ifcpSessionLcTxOctets ZeroBasedCounter32, + ifcpSessionLcRxOctets ZeroBasedCounter32, + ifcpSessionLcTxFrames ZeroBasedCounter32, + ifcpSessionLcRxFrames ZeroBasedCounter32, + ifcpSessionLcStaleFrames ZeroBasedCounter32, + ifcpSessionLcHeaderCRCErrors ZeroBasedCounter32, + ifcpSessionLcFcPayloadCRCErrors ZeroBasedCounter32, + ifcpSessionLcOtherErrors ZeroBasedCounter32 + } + + + + +ifcpSessionLcTxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets transmitted by the iFCP gateway + for this session." + ::= {ifcpSessionLcStatsEntry 1} + +ifcpSessionLcRxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets received by the iFCP gateway for + this session." + ::= {ifcpSessionLcStatsEntry 2} + +ifcpSessionLcTxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames transmitted by the gateway + for this session." + ::= {ifcpSessionLcStatsEntry 3} + +ifcpSessionLcRxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames received by the gateway + for this session." + ::= {ifcpSessionLcStatsEntry 4} + +ifcpSessionLcStaleFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of received iFCP frames that were stale and + discarded by the gateway for this session." + ::= {ifcpSessionLcStatsEntry 5} + +ifcpSessionLcHeaderCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the frame + header, detected by the gateway for this session. Usually, + a single Header CRC error is sufficient to terminate an + iFCP session." + ::= {ifcpSessionLcStatsEntry 6} + +ifcpSessionLcFcPayloadCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the Fibre + Channel frame payload, detected by the gateway for this + session." + ::= {ifcpSessionLcStatsEntry 7} + +ifcpSessionLcOtherErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of errors, other than errors explicitly + measured, detected by the gateway for this session." + ::= {ifcpSessionLcStatsEntry 8} + +--========================================================== + +ifcpCompliances + OBJECT IDENTIFIER ::= {ifcpGatewayConformance 1} + +ifcpGatewayCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION +"Implementation requirements for iFCP MIB compliance." + MODULE -- this module + MANDATORY-GROUPS { + ifcpLclGatewayGroup, + ifcpLclGatewaySessionGroup, + ifcpLclGatewaySessionStatsGroup, + ifcpLclGatewaySessionLcStatsGroup + } + + OBJECT ifcpSessionLclPrtlAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Support is only required for global IPv4 + + + + and IPv6 address types." + + OBJECT ifcpSessionRmtPrtlIfAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Support is only required for global IPv4 + and IPv6 address types." + + ::= {ifcpCompliances 1} + +ifcpGroups OBJECT IDENTIFIER ::= {ifcpGatewayConformance 2} + +ifcpLclGatewayGroup OBJECT-GROUP + OBJECTS { + ifcpLclGtwyInstPhyIndex, + ifcpLclGtwyInstVersionMin, + ifcpLclGtwyInstVersionMax, + ifcpLclGtwyInstAddrTransMode, + ifcpLclGtwyInstFcBrdcstSupport, + ifcpLclGtwyInstDefaultIpTOV, + ifcpLclGtwyInstDefaultLTInterval, + ifcpLclGtwyInstDescr, + ifcpLclGtwyInstNumActiveSessions, + ifcpLclGtwyInstStorageType + } + STATUS current + DESCRIPTION +"iFCP local device info group. This group provides + information about each gateway." + ::= {ifcpGroups 1} + +ifcpLclGatewaySessionGroup OBJECT-GROUP + OBJECTS { + ifcpSessionLclPrtlIfIndex, + ifcpSessionLclPrtlAddrType, + ifcpSessionLclPrtlAddr, + ifcpSessionLclPrtlTcpPort, + ifcpSessionLclNpWwun, + ifcpSessionLclNpFcid, + ifcpSessionRmtNpWwun, + ifcpSessionRmtPrtlIfAddrType, + ifcpSessionRmtPrtlIfAddr, + ifcpSessionRmtPrtlTcpPort, + ifcpSessionRmtNpFcid, + ifcpSessionRmtNpFcidAlias, + ifcpSessionIpTOV, + ifcpSessionLclLTIntvl, + ifcpSessionRmtLTIntvl, + + + + ifcpSessionBound, + ifcpSessionStorageType + } + STATUS current + DESCRIPTION +"iFCP Session group. This group provides information + about each iFCP session currently active between iFCP + gateways." + ::= {ifcpGroups 4} + +ifcpLclGatewaySessionStatsGroup OBJECT-GROUP + OBJECTS { + ifcpSessionState, + ifcpSessionDuration, + ifcpSessionTxOctets, + ifcpSessionRxOctets, + ifcpSessionTxFrames, + ifcpSessionRxFrames, + ifcpSessionStaleFrames, + ifcpSessionHeaderCRCErrors, + ifcpSessionFcPayloadCRCErrors, + ifcpSessionOtherErrors, + ifcpSessionDiscontinuityTime + } + STATUS current + DESCRIPTION +"iFCP Session Statistics group. This group provides + statistics with 64-bit counters for each iFCP session + currently active between iFCP gateways. This group + is only required for agents that can support Counter64- + based data types." + ::= {ifcpGroups 5} + +ifcpLclGatewaySessionLcStatsGroup OBJECT-GROUP + OBJECTS { + ifcpSessionLcTxOctets, + ifcpSessionLcRxOctets, + ifcpSessionLcTxFrames, + ifcpSessionLcRxFrames, + ifcpSessionLcStaleFrames, + ifcpSessionLcHeaderCRCErrors, + ifcpSessionLcFcPayloadCRCErrors, + ifcpSessionLcOtherErrors + } + STATUS current + DESCRIPTION +"iFCP Session Low Capacity Statistics group. This group + provides statistics with low-capacity 32-bit counters + + + + for each iFCP session currently active between iFCP + gateways. This group is only required for agents that + do not support Counter64-based data types, or that need + to support SNMPv1 applications." + ::= {ifcpGroups 6} + +END diff --git a/mibs/ietf/IGMP-STD-MIB b/mibs/ietf/IGMP-STD-MIB new file mode 100644 index 0000000..c2c7d55 --- /dev/null +++ b/mibs/ietf/IGMP-STD-MIB @@ -0,0 +1,545 @@ +IGMP-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, Counter32, Gauge32, + Unsigned32, IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB; + +igmpStdMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF IDMR Working Group." + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for IGMP Management." + REVISION "200009280000Z" -- September 28, 2000 + + + DESCRIPTION + "Initial version, published as RFC 2933." + ::= { mib-2 85 } + + +igmpMIBObjects OBJECT IDENTIFIER ::= { igmpStdMIB 1 } + +-- +-- The IGMP Interface Table +-- + +igmpInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interfaces on which IGMP + is enabled." + ::= { igmpMIBObjects 1 } + +igmpInterfaceEntry OBJECT-TYPE + SYNTAX IgmpInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an interface on + which IGMP is enabled." + INDEX { igmpInterfaceIfIndex } + ::= { igmpInterfaceTable 1 } + +IgmpInterfaceEntry ::= SEQUENCE { + igmpInterfaceIfIndex InterfaceIndex, + igmpInterfaceQueryInterval Unsigned32, + igmpInterfaceStatus RowStatus, + igmpInterfaceVersion Unsigned32, + igmpInterfaceQuerier IpAddress, + igmpInterfaceQueryMaxResponseTime Unsigned32, + igmpInterfaceQuerierUpTime TimeTicks, + igmpInterfaceQuerierExpiryTime TimeTicks, + igmpInterfaceVersion1QuerierTimer TimeTicks, + igmpInterfaceWrongVersionQueries Counter32, + igmpInterfaceJoins Counter32, + igmpInterfaceProxyIfIndex InterfaceIndexOrZero, + igmpInterfaceGroups Gauge32, + igmpInterfaceRobustness Unsigned32, + igmpInterfaceLastMembQueryIntvl Unsigned32 +} + + + +igmpInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for which IGMP is + enabled." + ::= { igmpInterfaceEntry 1 } + +igmpInterfaceQueryInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which IGMP Host-Query packets are + transmitted on this interface." + DEFVAL { 125 } + ::= { igmpInterfaceEntry 2 } + +igmpInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation of a row enables IGMP on the interface. The + destruction of a row disables IGMP on the interface." + ::= { igmpInterfaceEntry 3 } + +igmpInterfaceVersion OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version of IGMP which is running on this interface. + This object can be used to configure a router capable of + running either value. For IGMP to function correctly, all + routers on a LAN must be configured to run the same version + of IGMP on that LAN." + DEFVAL { 2 } + ::= { igmpInterfaceEntry 4 } + +igmpInterfaceQuerier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the IGMP Querier on the IP subnet to which + + + this interface is attached." + ::= { igmpInterfaceEntry 5 } + +igmpInterfaceQueryMaxResponseTime OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum query response time advertised in IGMPv2 + queries on this interface." + DEFVAL { 100 } + ::= { igmpInterfaceEntry 6 } + +igmpInterfaceQuerierUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since igmpInterfaceQuerier was last changed." + ::= { igmpInterfaceEntry 7 } + +igmpInterfaceQuerierExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time remaining before the Other Querier + Present Timer expires. If the local system is the querier, + the value of this object is zero." + ::= { igmpInterfaceEntry 8 } + +igmpInterfaceVersion1QuerierTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining until the host assumes that there are no + IGMPv1 routers present on the interface. While this is non- + zero, the host will reply to all queries with version 1 + membership reports." + ::= { igmpInterfaceEntry 9 } + +igmpInterfaceWrongVersionQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The number of queries received whose IGMP version does not + match igmpInterfaceVersion, over the lifetime of the row + entry. IGMP requires that all routers on a LAN be + configured to run the same version of IGMP. Thus, if any + queries are received with the wrong version, this indicates + a configuration error." + ::= { igmpInterfaceEntry 10 } + +igmpInterfaceJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a group membership has been added on + this interface; that is, the number of times an entry for + this interface has been added to the Cache Table. This + object gives an indication of the amount of IGMP activity + over the lifetime of the row entry." + ::= { igmpInterfaceEntry 11 } + +igmpInterfaceProxyIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some devices implement a form of IGMP proxying whereby + memberships learned on the interface represented by this + row, cause IGMP Host Membership Reports to be sent on the + interface whose ifIndex value is given by this object. Such + a device would implement the igmpV2RouterMIBGroup only on + its router interfaces (those interfaces with non-zero + igmpInterfaceProxyIfIndex). Typically, the value of this + object is 0, indicating that no proxying is being done." + DEFVAL { 0 } + ::= { igmpInterfaceEntry 12 } + +igmpInterfaceGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this interface in the + Cache Table." + ::= { igmpInterfaceEntry 13 } + +igmpInterfaceRobustness OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The Robustness Variable allows tuning for the expected + packet loss on a subnet. If a subnet is expected to be + lossy, the Robustness Variable may be increased. IGMP is + robust to (Robustness Variable-1) packet losses." + DEFVAL { 2 } + ::= { igmpInterfaceEntry 14 } + +igmpInterfaceLastMembQueryIntvl OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Last Member Query Interval is the Max Response Time + inserted into Group-Specific Queries sent in response to + Leave Group messages, and is also the amount of time between + Group-Specific Query messages. This value may be tuned to + modify the leave latency of the network. A reduced value + results in reduced time to detect the loss of the last + member of a group. The value of this object is irrelevant + if igmpInterfaceVersion is 1." + DEFVAL { 10 } + ::= { igmpInterfaceEntry 15 } + +-- +-- The IGMP Cache Table +-- + +igmpCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IP multicast groups for + which there are members on a particular interface." + ::= { igmpMIBObjects 2 } + +igmpCacheEntry OBJECT-TYPE + SYNTAX IgmpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the igmpCacheTable." + INDEX { igmpCacheAddress, igmpCacheIfIndex } + ::= { igmpCacheTable 1 } + + + +IgmpCacheEntry ::= SEQUENCE { + igmpCacheAddress IpAddress, + igmpCacheIfIndex InterfaceIndex, + igmpCacheSelf TruthValue, + igmpCacheLastReporter IpAddress, + igmpCacheUpTime TimeTicks, + igmpCacheExpiryTime TimeTicks, + igmpCacheStatus RowStatus, + igmpCacheVersion1HostTimer TimeTicks +} + +igmpCacheAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address for which this entry + contains information." + ::= { igmpCacheEntry 1 } + +igmpCacheIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface for which this entry contains information for + an IP multicast group address." + ::= { igmpCacheEntry 2 } + +igmpCacheSelf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether the local system is a member of + this group address on this interface." + DEFVAL { true } + ::= { igmpCacheEntry 3 } + +igmpCacheLastReporter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the source of the last membership report + received for this IP Multicast group address on this + interface. If no membership report has been received, this + object has the value 0.0.0.0." + + + ::= { igmpCacheEntry 4 } + +igmpCacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time elapsed since this entry was created." + ::= { igmpCacheEntry 5 } + +igmpCacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. A value of 0 indicates that the entry is only + present because igmpCacheSelf is true and that if the router + left the group, this entry would be aged out immediately. + Note that some implementations may process membership + reports from the local system in the same way as reports + from other hosts, so a value of 0 is not required." + ::= { igmpCacheEntry 6 } + +igmpCacheStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry." + ::= { igmpCacheEntry 7 } + +igmpCacheVersion1HostTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining until the local router will assume that + there are no longer any IGMP version 1 members on the IP + subnet attached to this interface. Upon hearing any IGMPv1 + Membership Report, this value is reset to the group + membership timer. While this time remaining is non-zero, + the local router ignores any IGMPv2 Leave messages for this + group that it receives on this interface." + ::= { igmpCacheEntry 8 } + +-- conformance information + + + +igmpMIBConformance + OBJECT IDENTIFIER ::= { igmpStdMIB 2 } +igmpMIBCompliances + OBJECT IDENTIFIER ::= { igmpMIBConformance 1 } +igmpMIBGroups OBJECT IDENTIFIER ::= { igmpMIBConformance 2 } + + +-- compliance statements + +igmpV1HostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running IGMPv1 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 1 } + +igmpV1RouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running IGMPv1 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpRouterMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + ::= { igmpMIBCompliances 2 } + +igmpV2HostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running IGMPv2 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpV2HostMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 3 } + +igmpV2RouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running IGMPv2 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpRouterMIBGroup, + igmpV2RouterMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 4 } + + +-- units of conformance + + +igmpBaseMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheSelf, + igmpCacheStatus, igmpInterfaceStatus + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + IGMP version 1 or 2." + ::= { igmpMIBGroups 1 } + + +igmpRouterMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheUpTime, igmpCacheExpiryTime, + igmpInterfaceJoins, igmpInterfaceGroups, + igmpCacheLastReporter, igmpInterfaceQuerierUpTime, + igmpInterfaceQuerierExpiryTime, + igmpInterfaceQueryInterval + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 1 or 2 in routers." + ::= { igmpMIBGroups 2 } + + +igmpV2HostMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceVersion1QuerierTimer } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 2 in hosts." + ::= { igmpMIBGroups 3 } + +igmpHostOptMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheLastReporter, igmpInterfaceQuerier } + STATUS current + DESCRIPTION + "A collection of optional objects for IGMP hosts. + Supporting this group can be especially useful in an + environment with a router which does not support the IGMP + MIB." + ::= { igmpMIBGroups 4 } + +igmpV2RouterMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceVersion, igmpInterfaceQuerier, + igmpInterfaceQueryMaxResponseTime, + igmpInterfaceRobustness, + igmpInterfaceWrongVersionQueries, + + + igmpInterfaceLastMembQueryIntvl, + igmpCacheVersion1HostTimer + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 2 in routers." + ::= { igmpMIBGroups 5 } + +igmpV2ProxyMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceProxyIfIndex } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + proxy devices." + ::= { igmpMIBGroups 6 } + +END diff --git a/mibs/ietf/INET-ADDRESS-MIB b/mibs/ietf/INET-ADDRESS-MIB new file mode 100644 index 0000000..a19b8d2 --- /dev/null +++ b/mibs/ietf/INET-ADDRESS-MIB @@ -0,0 +1,421 @@ +INET-ADDRESS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, Unsigned32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +inetAddressMIB MODULE-IDENTITY + LAST-UPDATED "200502040000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Juergen Schoenwaelder (Editor) + International University Bremen + P.O. Box 750 561 + 28725 Bremen, Germany + + Phone: +49 421 200-3587 + EMail: j.schoenwaelder@iu-bremen.de + + Send comments to ." + DESCRIPTION + "This MIB module defines textual conventions for + representing Internet addresses. An Internet + address can be an IPv4 address, an IPv6 address, + or a DNS domain name. This module also defines + textual conventions for Internet port numbers, + autonomous system numbers, and the length of an + Internet address prefix. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4001, see the RFC + itself for full legal notices." + REVISION "200502040000Z" + DESCRIPTION + "Third version, published as RFC 4001. This revision + introduces the InetZoneIndex, InetScopeType, and + InetVersion textual conventions." + REVISION "200205090000Z" + DESCRIPTION + "Second version, published as RFC 3291. This + revision contains several clarifications and + introduces several new textual conventions: + InetAddressPrefixLength, InetPortNumber, + InetAutonomousSystemNumber, InetAddressIPv4z, + and InetAddressIPv6z." + REVISION "200006080000Z" + + + + DESCRIPTION + "Initial version, published as RFC 2851." + ::= { mib-2 76 } + +InetAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of Internet address. + + unknown(0) An unknown address type. This value MUST + be used if the value of the corresponding + InetAddress object is a zero-length string. + It may also be used to indicate an IP address + that is not in one of the formats defined + below. + + ipv4(1) An IPv4 address as defined by the + InetAddressIPv4 textual convention. + + ipv6(2) An IPv6 address as defined by the + InetAddressIPv6 textual convention. + + ipv4z(3) A non-global IPv4 address including a zone + index as defined by the InetAddressIPv4z + textual convention. + + ipv6z(4) A non-global IPv6 address including a zone + index as defined by the InetAddressIPv6z + textual convention. + + dns(16) A DNS domain name as defined by the + InetAddressDNS textual convention. + + Each definition of a concrete InetAddressType value must be + accompanied by a definition of a textual convention for use + with that InetAddressType. + + To support future extensions, the InetAddressType textual + convention SHOULD NOT be sub-typed in object type definitions. + It MAY be sub-typed in compliance statements in order to + require only a subset of these address types for a compliant + implementation. + + Implementations must ensure that InetAddressType objects + and any dependent objects (e.g., InetAddress objects) are + consistent. An inconsistentValue error must be generated + if an attempt to change an InetAddressType object would, + for example, lead to an undefined InetAddress value. In + + + + particular, InetAddressType/InetAddress pairs must be + changed together if the address type changes (e.g., from + ipv6(2) to ipv4(1))." + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2), + ipv4z(3), + ipv6z(4), + dns(16) + } + +InetAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Internet address. + + An InetAddress value is always interpreted within the context + of an InetAddressType value. Every usage of the InetAddress + textual convention is required to specify the InetAddressType + object that provides the context. It is suggested that the + InetAddressType object be logically registered before the + object(s) that use the InetAddress textual convention, if + they appear in the same logical row. + + The value of an InetAddress object must always be + consistent with the value of the associated InetAddressType + object. Attempts to set an InetAddress object to a value + inconsistent with the associated InetAddressType + must fail with an inconsistentValue error. + + When this textual convention is used as the syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the object definition MUST include a 'SIZE' clause to + limit the number of potential instance sub-identifiers; + otherwise the applicable constraints MUST be stated in + the appropriate conceptual row DESCRIPTION clauses, or + in the surrounding documentation if there is no single + DESCRIPTION clause that is appropriate." + SYNTAX OCTET STRING (SIZE (0..255)) + +InetAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents an IPv4 network address: + + + + + Octets Contents Encoding + 1-4 IPv4 address network-byte order + + The corresponding InetAddressType value is ipv4(1). + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (4)) + +InetAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x" + STATUS current + DESCRIPTION + "Represents an IPv6 network address: + + Octets Contents Encoding + 1-16 IPv6 address network-byte order + + The corresponding InetAddressType value is ipv6(2). + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (16)) + +InetAddressIPv4z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d%4d" + STATUS current + DESCRIPTION + "Represents a non-global IPv4 network address, together + with its zone index: + + Octets Contents Encoding + 1-4 IPv4 address network-byte order + 5-8 zone index network-byte order + + The corresponding InetAddressType value is ipv4z(3). + + The zone index (bytes 5-8) is used to disambiguate identical + address values on nodes that have interfaces attached to + different zones of the same scope. The zone index may contain + the special value 0, which refers to the default zone for each + scope. + + This textual convention SHOULD NOT be used directly in object + + + + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (8)) + +InetAddressIPv6z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x%4d" + STATUS current + DESCRIPTION + "Represents a non-global IPv6 network address, together + with its zone index: + + Octets Contents Encoding + 1-16 IPv6 address network-byte order + 17-20 zone index network-byte order + + The corresponding InetAddressType value is ipv6z(4). + + The zone index (bytes 17-20) is used to disambiguate + identical address values on nodes that have interfaces + attached to different zones of the same scope. The zone index + may contain the special value 0, which refers to the default + zone for each scope. + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (20)) + +InetAddressDNS ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "Represents a DNS domain name. The name SHOULD be fully + qualified whenever possible. + + The corresponding InetAddressType is dns(16). + + The DESCRIPTION clause of InetAddress objects that may have + InetAddressDNS values MUST fully describe how (and when) + these names are to be resolved to IP addresses. + + The resolution of an InetAddressDNS value may require to + query multiple DNS records (e.g., A for IPv4 and AAAA for + IPv6). The order of the resolution process and which DNS + record takes precedence depends on the configuration of the + resolver. + + + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (1..255)) + +InetAddressPrefixLength ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Denotes the length of a generic Internet network address + prefix. A value of n corresponds to an IP address mask + that has n contiguous 1-bits from the most significant + bit (MSB), with all other bits set to 0. + + An InetAddressPrefixLength value is always interpreted within + the context of an InetAddressType value. Every usage of the + InetAddressPrefixLength textual convention is required to + specify the InetAddressType object that provides the + context. It is suggested that the InetAddressType object be + logically registered before the object(s) that use the + InetAddressPrefixLength textual convention, if they appear + in the same logical row. + + InetAddressPrefixLength values larger than + the maximum length of an IP address for a specific + InetAddressType are treated as the maximum significant + value applicable for the InetAddressType. The maximum + significant value is 32 for the InetAddressType + 'ipv4(1)' and 'ipv4z(3)' and 128 for the InetAddressType + 'ipv6(2)' and 'ipv6z(4)'. The maximum significant value + for the InetAddressType 'dns(16)' is 0. + + The value zero is object-specific and must be defined as + part of the description of any object that uses this + syntax. Examples of the usage of zero might include + situations where the Internet network address prefix + is unknown or does not apply. + + The upper bound of the prefix length has been chosen to + be consistent with the maximum size of an InetAddress." + SYNTAX Unsigned32 (0..2040) + +InetPortNumber ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Represents a 16 bit port number of an Internet transport + + + + layer protocol. Port numbers are assigned by IANA. A + current list of all assignments is available from + . + + The value zero is object-specific and must be defined as + part of the description of any object that uses this + syntax. Examples of the usage of zero might include + situations where a port number is unknown, or when the + value zero is used as a wildcard in a filter." + REFERENCE "STD 6 (RFC 768), STD 7 (RFC 793) and RFC 2960" + SYNTAX Unsigned32 (0..65535) + +InetAutonomousSystemNumber ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Represents an autonomous system number that identifies an + Autonomous System (AS). An AS is a set of routers under a + single technical administration, using an interior gateway + protocol and common metrics to route packets within the AS, + and using an exterior gateway protocol to route packets to + other ASes'. IANA maintains the AS number space and has + delegated large parts to the regional registries. + + Autonomous system numbers are currently limited to 16 bits + (0..65535). There is, however, work in progress to enlarge the + autonomous system number space to 32 bits. Therefore, this + textual convention uses an Unsigned32 value without a + range restriction in order to support a larger autonomous + system number space." + REFERENCE "RFC 1771, RFC 1930" + SYNTAX Unsigned32 + +InetScopeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a scope type. This textual convention can be used + in cases where a MIB has to represent different scope types + and there is no context information, such as an InetAddress + object, that implicitly defines the scope type. + + Note that not all possible values have been assigned yet, but + they may be assigned in future revisions of this specification. + Applications should therefore be able to deal with values + not yet assigned." + REFERENCE "RFC 3513" + SYNTAX INTEGER { + -- reserved(0), + + + + interfaceLocal(1), + linkLocal(2), + subnetLocal(3), + adminLocal(4), + siteLocal(5), -- site-local unicast addresses + -- have been deprecated by RFC 3879 + -- unassigned(6), + -- unassigned(7), + organizationLocal(8), + -- unassigned(9), + -- unassigned(10), + -- unassigned(11), + -- unassigned(12), + -- unassigned(13), + global(14) + -- reserved(15) + } + +InetZoneIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A zone index identifies an instance of a zone of a + specific scope. + + The zone index MUST disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index (ifIndex as defined in the + IF-MIB) of the interface on which the address is configured. + + The zone index may contain the special value 0, which refers + to the default zone. The default zone may be used in cases + where the valid zone index is not known (e.g., when a + management application has to write a link-local IPv6 + address without knowing the interface index value). The + default zone SHOULD NOT be used as an easy way out in + cases where the zone index for a non-global IPv6 address + is known." + REFERENCE "RFC4007" + SYNTAX Unsigned32 + +InetVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing a version of the IP protocol. + + unknown(0) An unknown or unspecified version of the IP + protocol. + + + + ipv4(1) The IPv4 protocol as defined in RFC 791 (STD 5). + + ipv6(2) The IPv6 protocol as defined in RFC 2460. + + Note that this textual convention SHOULD NOT be used to + distinguish different address types associated with IP + protocols. The InetAddressType has been designed for this + purpose." + REFERENCE "RFC 791, RFC 2460" + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2) + } +END diff --git a/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB b/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB new file mode 100644 index 0000000..ff01399 --- /dev/null +++ b/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB @@ -0,0 +1,221 @@ +INTEGRATED-SERVICES-GUARANTEED-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + intSrv FROM INTEGRATED-SERVICES-MIB + ifIndex FROM IF-MIB; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9]. + +intSrvGuaranteed MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:04:22 PDT 1997 + ORGANIZATION "IETF Integrated Services Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com" + DESCRIPTION + "The MIB module to describe the Guaranteed Service of + the Integrated Services Protocol" + ::= { intSrv 5 } + +intSrvGuaranteedObjects OBJECT IDENTIFIER + ::= { intSrvGuaranteed 1 } +intSrvGuaranteedNotifications OBJECT IDENTIFIER + ::= { intSrvGuaranteed 2 } +intSrvGuaranteedConformance OBJECT IDENTIFIER + ::= { intSrvGuaranteed 3 } + + +-- The Integrated Services Interface Attributes Database +-- contains information that is shared with other reservation +-- procedures such as ST-II. + + + intSrvGuaranteedIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvGuaranteedIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The attributes of the system's interfaces ex- + ported by the Guaranteed Service." + ::= { intSrvGuaranteedObjects 1 } + + + intSrvGuaranteedIfEntry OBJECT-TYPE + SYNTAX IntSrvGuaranteedIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of a given inter- + face." + INDEX { ifIndex } + ::= { intSrvGuaranteedIfTable 1 } + +IntSrvGuaranteedIfEntry ::= + SEQUENCE { + intSrvGuaranteedIfBacklog INTEGER, + intSrvGuaranteedIfDelay INTEGER, + intSrvGuaranteedIfSlack INTEGER, + intSrvGuaranteedIfStatus RowStatus + } + + intSrvGuaranteedIfBacklog OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Backlog parameter is the data backlog + resulting from the vagaries of how a specific + implementation deviates from a strict bit-by- + bit service. So, for instance, for packetized + weighted fair queueing, Backlog is set to the + Maximum Packet Size. + + The Backlog term is measured in units of bytes. + An individual element can advertise a Backlog + value between 1 and 2**28 (a little over 250 + megabytes) and the total added over all ele- + ments can range as high as (2**32)-1. Should + the sum of the different elements delay exceed + (2**32)-1, the end-to-end error term should be + (2**32)-1." + ::= { intSrvGuaranteedIfEntry 1 } + + intSrvGuaranteedIfDelay OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Delay parameter at each service element + should be set to the maximum packet transfer + delay (independent of bucket size) through the + service element. For instance, in a simple + router, one might compute the worst case amount + of time it make take for a datagram to get + through the input interface to the processor, + and how long it would take to get from the pro- + cessor to the outbound interface (assuming the + queueing schemes work correctly). For an Eth- + ernet, it might represent the worst case delay + if the maximum number of collisions is experi- + enced. + + The Delay term is measured in units of one mi- + crosecond. An individual element can advertise + a delay value between 1 and 2**28 (somewhat + over two minutes) and the total delay added all + elements can range as high as (2**32)-1. + Should the sum of the different elements delay + exceed (2**32)-1, the end-to-end delay should + be (2**32)-1." + ::= { intSrvGuaranteedIfEntry 2 } + + intSrvGuaranteedIfSlack OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If a network element uses a certain amount of + slack, Si, to reduce the amount of resources + that it has reserved for a particular flow, i, + the value Si should be stored at the network + element. Subsequently, if reservation re- + freshes are received for flow i, the network + element must use the same slack Si without any + further computation. This guarantees consisten- + cy in the reservation process. + + As an example for the use of the slack term, + consider the case where the required end-to-end + delay, Dreq, is larger than the maximum delay + of the fluid flow system. In this, Ctot is the + sum of the Backlog terms end to end, and Dtot + is the sum of the delay terms end to end. Dreq + is obtained by setting R=r in the fluid delay + formula, and is given by + + b/r + Ctot/r + Dtot. + + In this case the slack term is + + S = Dreq - (b/r + Ctot/r + Dtot). + + The slack term may be used by the network ele- + ments to adjust their local reservations, so + that they can admit flows that would otherwise + have been rejected. A service element at an in- + termediate network element that can internally + differentiate between delay and rate guarantees + can now take advantage of this information to + lower the amount of resources allocated to this + flow. For example, by taking an amount of slack + s <= S, an RCSD scheduler [5] can increase the + local delay bound, d, assigned to the flow, to + d+s. Given an RSpec, (Rin, Sin), it would do so + by setting Rout = Rin and Sout = Sin - s. + + Similarly, a network element using a WFQ + scheduler can decrease its local reservation + from Rin to Rout by using some of the slack in + the RSpec. This can be accomplished by using + the transformation rules given in the previous + section, that ensure that the reduced reserva- + tion level will not increase the overall end- + to-end delay." + ::= { intSrvGuaranteedIfEntry 3 } + + + intSrvGuaranteedIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'valid' on interfaces that are configured for + the Guaranteed Service." + ::= { intSrvGuaranteedIfEntry 4 } + +-- No notifications are currently defined + +-- conformance information +intSrvGuaranteedGroups OBJECT IDENTIFIER + ::= { intSrvGuaranteedConformance 1 } +intSrvGuaranteedCompliances OBJECT IDENTIFIER + ::= { intSrvGuaranteedConformance 2 } + +-- compliance statements + + intSrvGuaranteedCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { + intSrvGuaranteedIfAttribGroup + } + ::= { intSrvGuaranteedCompliances 1 } + + + intSrvGuaranteedIfAttribGroup OBJECT-GROUP + OBJECTS { + intSrvGuaranteedIfBacklog, + intSrvGuaranteedIfDelay, + intSrvGuaranteedIfSlack, + intSrvGuaranteedIfStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Guaranteed Service of the Integrat- + ed Services Architecture." + ::= { intSrvGuaranteedGroups 2 } + +END diff --git a/mibs/ietf/INTEGRATED-SERVICES-MIB b/mibs/ietf/INTEGRATED-SERVICES-MIB new file mode 100644 index 0000000..4ab4e18 --- /dev/null +++ b/mibs/ietf/INTEGRATED-SERVICES-MIB @@ -0,0 +1,789 @@ +INTEGRATED-SERVICES-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Gauge32, Integer32, mib-2 FROM SNMPv2-SMI + TimeInterval, TEXTUAL-CONVENTION, RowStatus, + TruthValue, TestAndIncr FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex, InterfaceIndex FROM IF-MIB; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9]. + +intSrv MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:04:13 PDT 1997 + ORGANIZATION "IETF Integrated Services Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com + + John Krawczyk + Postal: ArrowPoint Communications + 235 Littleton Road + Westford, Massachusetts 01886 + Tel: +1 508 692 5875 + E-Mail: jjk@tiac.net" + DESCRIPTION + "The MIB module to describe the Integrated Services + Protocol" + ::= { mib-2 52 } + +intSrvObjects OBJECT IDENTIFIER ::= { intSrv 1 } +intSrvGenObjects OBJECT IDENTIFIER ::= { intSrv 2 } +intSrvNotifications OBJECT IDENTIFIER ::= { intSrv 3 } +intSrvConformance OBJECT IDENTIFIER ::= { intSrv 4 } + +-- Textual Conventions +-- + + SessionNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Session Number convention is used for + numbers identifying sessions or saved PATH or + RESV information. It is a number in the range + returned by a TestAndIncr variable, having no + protocol meaning whatsoever but serving instead + as simple identifier. + + The alternative was a very complex instance or + instance object that became unwieldy." + SYNTAX INTEGER (0..2147483647) + + + Protocol ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The value of the IP Protocol field of an IP + Datagram Header. This identifies the protocol + layer above IP. For example, the value 6 is + used for TCP and the value 17 is used for UDP. + The values of this field are defined in the As- + signed Numbers RFC." + SYNTAX INTEGER (1..255) + + + SessionType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the C-Type field of a Session ob- + ject, as defined in the RSVP specification. + This value determines the lengths of octet + strings and use of certain objects such as the + 'port' variables. If the C-Type calls for an + IP6 address, one would expect all source, des- + tination, and next/previous hop addresses to be + 16 bytes long, and for the ports to be UDP/TCP + port numbers, for example." + SYNTAX INTEGER (1..255) + + Port ::= TEXTUAL-CONVENTION + -- DISPLAY-HINT "d" ---- illegal for OCTET STRING. + STATUS current + DESCRIPTION + "The value of the UDP or TCP Source or Destina- + tion Port field, a virtual destination port or + generalized port identifier used with the IPSEC + Authentication Header or Encapsulating Security + Payload, or other session discriminator. If it + is not used, the value should be of length 0. + This pair, when coupled with the IP Addresses + of the source and destination system and the IP + protocol field, uniquely identifies a data + stream." + SYNTAX OCTET STRING (SIZE(2..4)) + + + MessageSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The size of a message in bytes. This is used + to specify the minimum and maximum size of a + message along an integrated services route." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + + BitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The rate, in bits/second, that data may move + in the context. Applicable contexts minimally + include the speed of an interface or virtual + circuit, the data rate of a (potentially aggre- + gated) data flow, or the data rate to be allo- + cated for use by a flow." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + BurstSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of octets of IP Data, including IP + Headers, that a stream may send without concern + for policing." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + + QosService ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The class of service in use by a flow." + SYNTAX INTEGER { + bestEffort (1), -- Best Effort Service + guaranteedDelay (2), -- Guaranteed Delay + controlledLoad (5) -- Controlled Load + } + +-- The Integrated Services Interface Attributes Database contains +-- information about resources allocated by resource reservation +-- protocols, such as RSVP and ST-II. + + + intSrvIfAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvIfAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of the system's in- + terfaces." + ::= { intSrvObjects 1 } + + + intSrvIfAttribEntry OBJECT-TYPE + SYNTAX IntSrvIfAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of a given inter- + face." + INDEX { ifIndex } + ::= { intSrvIfAttribTable 1 } + +IntSrvIfAttribEntry ::= + SEQUENCE { + intSrvIfAttribAllocatedBits BitRate, + intSrvIfAttribMaxAllocatedBits BitRate, + intSrvIfAttribAllocatedBuffer BurstSize, + intSrvIfAttribFlows Gauge32, + intSrvIfAttribPropagationDelay Integer32, + intSrvIfAttribStatus RowStatus + } + + intSrvIfAttribAllocatedBits OBJECT-TYPE + SYNTAX BitRate + UNITS "Bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bits/second currently allocated + to reserved sessions on the interface." + ::= { intSrvIfAttribEntry 1 } + + intSrvIfAttribMaxAllocatedBits OBJECT-TYPE + SYNTAX BitRate + UNITS "Bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bits/second that may be + allocated to reserved sessions on the inter- + face." + ::= { intSrvIfAttribEntry 2 } + + + intSrvIfAttribAllocatedBuffer OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of buffer space required to hold + the simultaneous burst of all reserved flows on + the interface." + ::= { intSrvIfAttribEntry 3 } + + + intSrvIfAttribFlows OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reserved flows currently active + on this interface. A flow can be created ei- + ther from a reservation protocol (such as RSVP + or ST-II) or via configuration information." + ::= { intSrvIfAttribEntry 4 } + + intSrvIfAttribPropagationDelay OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of propagation delay that this in- + terface introduces in addition to that intro- + diced by bit propagation delays." + DEFVAL { 0 }-- by default, interfaces are presumed to add + -- no extra delays + ::= { intSrvIfAttribEntry 5 } + + + intSrvIfAttribStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' on interfaces that are configured for + RSVP." + ::= { intSrvIfAttribEntry 6 } + + +-- The Integrated Services Active Flows Database +-- lists all flows active on an outgoing interface, including +-- relevant attributes. + + + intSrvFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the reserved flows us- + ing the system's interfaces." + ::= { intSrvObjects 2 } + + + intSrvFlowEntry OBJECT-TYPE + SYNTAX IntSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the use of a given in- + terface by a given flow. The counter + intSrvFlowPoliced starts counting at the in- + stallation of the flow." + INDEX { intSrvFlowNumber } + ::= { intSrvFlowTable 1 } + + + IntSrvFlowEntry ::= + SEQUENCE { + intSrvFlowNumber SessionNumber, + intSrvFlowType SessionType, + intSrvFlowOwner INTEGER, + intSrvFlowDestAddr OCTET STRING, + intSrvFlowSenderAddr OCTET STRING, + intSrvFlowDestAddrLength INTEGER, + intSrvFlowSenderAddrLength INTEGER, + intSrvFlowProtocol Protocol, + intSrvFlowDestPort Port, + intSrvFlowPort Port, + intSrvFlowFlowId INTEGER, + intSrvFlowInterface InterfaceIndex, + intSrvFlowIfAddr OCTET STRING, + intSrvFlowRate BitRate, + intSrvFlowBurst BurstSize, + intSrvFlowWeight Integer32, + intSrvFlowQueue Integer32, + intSrvFlowMinTU MessageSize, + intSrvFlowMaxTU MessageSize, + intSrvFlowBestEffort Counter32, + intSrvFlowPoliced Counter32, + intSrvFlowDiscard TruthValue, + intSrvFlowService QosService, + intSrvFlowOrder INTEGER, + intSrvFlowStatus RowStatus + } + + + intSrvFlowNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this flow. This is for SNMP In- + dexing purposes only and has no relation to any + protocol value." + ::= { intSrvFlowEntry 1 } + + + intSrvFlowType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { intSrvFlowEntry 2 } + + + intSrvFlowOwner OBJECT-TYPE + SYNTAX INTEGER { + other(1), + rsvp(2), + management(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The process that installed this flow in the + queue policy database." + ::= { intSrvFlowEntry 3 } + + + intSrvFlowDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { intSrvFlowEntry 4 } + + + intSrvFlowSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { intSrvFlowEntry 5 } + + + intSrvFlowDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 6 } + + + intSrvFlowSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 7 } + + + intSrvFlowProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by a session. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 8 } + + + intSrvFlowDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + intSrvResvFwdProtocol, is 50 (ESP) or 51 (AH), + this represents a virtual destination port + number. A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 9 } + + + intSrvFlowPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by + intSrvResvFwdProtocol is 50 (ESP) or 51 (AH), + this represents a generalized port identifier + (GPI). A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 10 } + + + intSrvFlowFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this sender is using, if + this is an IPv6 session." + ::= { intSrvFlowEntry 11 } + + + intSrvFlowInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this reservation exists." + ::= { intSrvFlowEntry 12 } + + + intSrvFlowIfAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address on the ifEntry on which this + reservation exists. This is present primarily + to support those interfaces which layer multi- + ple IP Addresses on the interface." + ::= { intSrvFlowEntry 13 } + + + intSrvFlowRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Reserved Rate of the sender's data stream. + If this is a Controlled Load service flow, this + rate is derived from the Tspec rate parameter + (r). If this is a Guaranteed service flow, + this rate is derived from the Rspec clearing + rate parameter (R)." + ::= { intSrvFlowEntry 14 } + + + intSrvFlowBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { intSrvFlowEntry 15 } + + + intSrvFlowWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The weight used to prioritize the traffic. + Note that the interpretation of this object is + implementation-specific, as implementations + vary in their use of weighting procedures." + ::= { intSrvFlowEntry 16 } + + intSrvFlowQueue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of the queue used by this traffic. + Note that the interpretation of this object is + implementation-specific, as implementations + vary in their use of queue identifiers." + ::= { intSrvFlowEntry 17 } + + + intSrvFlowMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { intSrvFlowEntry 18 } + + + intSrvFlowMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum datagram size for this flow that + will conform to the traffic specification. This + value cannot exceed the MTU of the interface." + ::= { intSrvFlowEntry 19 } + + + intSrvFlowBestEffort OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that were remanded to + best effort service." + ::= { intSrvFlowEntry 20 } + + + intSrvFlowPoliced OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets policed since the incep- + tion of the flow's service." + ::= { intSrvFlowEntry 21 } + + + intSrvFlowDiscard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If 'true', the flow is to incur loss when + traffic is policed. If 'false', policed traff- + ic is treated as best effort traffic." + DEFVAL { false } -- traffic is, by default, treated as best + -- effort + ::= { intSrvFlowEntry 22 } + + + intSrvFlowService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The QoS service being applied to this flow." + ::= { intSrvFlowEntry 23 } + + + intSrvFlowOrder OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event of ambiguity, the order in which + the classifier should make its comparisons. + The row with intSrvFlowOrder=0 is tried first, + and comparisons proceed in the order of in- + creasing value. Non-serial implementations of + the classifier should emulate this behavior." + ::= { intSrvFlowEntry 24 } + + + intSrvFlowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active flows. This object + may be used to install static classifier infor- + mation, delete classifier information, or au- + thorize such." + ::= { intSrvFlowEntry 25 } + + + intSrvFlowNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + intSrvFlowNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + intSrvFlowEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { intSrvGenObjects 1 } + + +-- conformance information + + +intSrvGroups OBJECT IDENTIFIER ::= { intSrvConformance 1 } +intSrvCompliances OBJECT IDENTIFIER ::= { intSrvConformance 2 } + +-- compliance statements + + + intSrvCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { intSrvIfAttribGroup, intSrvFlowsGroup } + + OBJECT intSrvFlowType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowOwner + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + OBJECT intSrvFlowInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowWeight + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowQueue + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + ::= { intSrvCompliances 1 } + + + intSrvIfAttribGroup OBJECT-GROUP + OBJECTS { + intSrvIfAttribAllocatedBits, intSrvIfAttribMaxAllocatedBits, + intSrvIfAttribAllocatedBuffer, intSrvIfAttribFlows, + intSrvIfAttribPropagationDelay, intSrvIfAttribStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Integrated Services Architecture." + ::= { intSrvGroups 1 } + + intSrvFlowsGroup OBJECT-GROUP + OBJECTS { + intSrvFlowType, intSrvFlowOwner, intSrvFlowDestAddr, + intSrvFlowSenderAddr, intSrvFlowDestAddrLength, + intSrvFlowSenderAddrLength, intSrvFlowProtocol, + intSrvFlowDestPort, intSrvFlowPort, intSrvFlowInterface, + intSrvFlowBestEffort, intSrvFlowRate, intSrvFlowBurst, + intSrvFlowWeight, intSrvFlowQueue, intSrvFlowMinTU, + intSrvFlowDiscard, intSrvFlowPoliced, intSrvFlowService, + intSrvFlowIfAddr, intSrvFlowOrder, intSrvFlowStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Integrated Services Architecture." + ::= { intSrvGroups 2 } + +END diff --git a/mibs/ietf/INTERFACETOPN-MIB b/mibs/ietf/INTERFACETOPN-MIB new file mode 100644 index 0000000..e6c5ba3 --- /dev/null +++ b/mibs/ietf/INTERFACETOPN-MIB @@ -0,0 +1,1065 @@ +INTERFACETOPN-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32 + FROM SNMPv2-SMI + RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + rmon, OwnerString + FROM RMON-MIB + CounterBasedGauge64 + FROM HCNUM-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + interfaceTopNMIB MODULE-IDENTITY + LAST-UPDATED "200103270000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + " + + Dan Romascanu + Avaya Inc. + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + + DESCRIPTION + "The MIB module for sorting device interfaces for RMON and + SMON monitoring in a multiple device implementation." + ::= { rmon 27 } +interfaceTopNObjects OBJECT IDENTIFIER ::= { interfaceTopNMIB 1 } +interfaceTopNNotifications OBJECT IDENTIFIER ::= { interfaceTopNMIB 2 } +interfaceTopNConformance OBJECT IDENTIFIER ::= { interfaceTopNMIB 3 } + +-- The Interface Top N group is used to prepare reports that +-- describe a list of interfaces (data sources) +-- ordered by the values of one +-- of the objects that apply to the interfaces of the respective device. +-- Those objects are defined by standard MIBs. The exact objects that +-- are supported by the agent are described by interfaceTopNCaps +-- The objects must be elements in tables indexed only by an +-- InterfaceIndex object. +-- The objects chosen by the + + +-- management station may be sampled over a management +-- station-specified time interval, making the report rate based. +-- The management station also specifies the number of interfaces +-- that are reported. +-- +-- The interfaceTopNControlTable is used to initiate the generation +-- of a report. The management station may select the parameters +-- of such a report, such as which object, how +-- many interfaces, and the start & stop times of the sampling. When +-- the report is prepared, entries are created in the +-- interfaceTopNTable associated with the relevant +-- interfaceTopNControlEntry. These entries are static for +-- each report after it has been prepared. + +interfaceTopNCaps OBJECT-TYPE + SYNTAX BITS { + ifInOctets(0), + ifInUcastPkts(1), + ifInNUcastPkts(2), + ifInDiscards(3), + ifInErrors(4), + ifInUnknownProtos(5), + ifOutOctets(6), + ifOutUcastPkts(7), + ifOutNUcastPkts(8), + ifOutDiscards(9), + ifOutErrors(10), + ifInMulticastPkts(11), + ifInBroadcastPkts(12), + ifOutMulticastPkts(13), + ifOutBroadcastPkts(14), + ifHCInOctets(15), + ifHCInUcastPkts(16), + ifHCInMulticastPkts(17), + ifHCInBroadcastPkts(18), + ifHCOutOctets(19), + ifHCOutUcastPkts(20), + ifHCOutMulticastPkts(21), + ifHCOutBroadcastPkts(22), + dot3StatsAlignmentErrors(23), + dot3StatsFCSErrors(24), + dot3StatsSingleCollisionFrames(25), + dot3StatsMultipleCollisionFrames(26), + dot3StatsSQETestErrors(27), + dot3StatsDeferredTransmissions(28), + dot3StatsLateCollisions(29), + dot3StatsExcessiveCollisions(30), + dot3StatsInternalMacTxErrors(31), + + + dot3StatsCarrierSenseErrors(32), + dot3StatsFrameTooLongs(33), + dot3StatsInternalMacRxErrors(34), + dot3StatsSymbolErrors(35), + dot3InPauseFrames(36), + dot3OutPauseFrames(37), + dot5StatsLineErrors(38), + dot5StatsBurstErrors(39), + dot5StatsACErrors(40), + dot5StatsAbortTransErrors(41), + dot5StatsInternalErrors(42), + dot5StatsLostFrameErrors(43), + dot5StatsReceiveCongestions(44), + dot5StatsFrameCopiedErrors(45), + dot5StatsTokenErrors(46), + dot5StatsSoftErrors(47), + dot5StatsHardErrors(48), + dot5StatsSignalLoss(49), + dot5StatsTransmitBeacons(50), + dot5StatsRecoverys(51), + dot5StatsLobeWires(52), + dot5StatsRemoves(53), + dot5StatsSingles(54), + dot5StatsFreqErrors(55), + etherStatsDropEvents(56), + etherStatsOctets(57), + etherStatsPkts(58), + etherStatsBroadcastPkts(59), + etherStatsMulticastPkts(60), + etherStatsCRCAlignErrors(61), + etherStatsUndersizePkts(62), + etherStatsOversizePkts(63), + etherStatsFragments(64), + etherStatsJabbers(65), + etherStatsCollisions(66), + etherStatsPkts64Octets(67), + etherStatsPkts65to127Octets(68), + etherStatsPkts128to255Octets(69), + etherStatsPkts256to511Octets(70), + etherStatsPkts512to1023Octets(71), + etherStatsPkts1024to1518Octets(72), + dot1dTpPortInFrames(73), + dot1dTpPortOutFrames(74), + dot1dTpPortInDiscards(75) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + +"The type(s) of sorting capabilities supported by the agent. + +If the agent can perform sorting of interfaces according to the +values of ifInOctets, as defined in [RFC2863], +then the 'ifInOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInUcastPkts, as defined in [RFC2863], +then the 'ifInUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInNUcastPkts, as defined in [RFC2863], +then the 'ifInNUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInDiscards, as defined in [RFC2863], +then the 'ifInDiscards' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInErrors, as defined in [RFC2863], +then the 'ifInErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInUnknownProtocols, as defined in [RFC2863], +then the 'ifInUnknownProtocols' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutOctets, as defined in [RFC2863], +then the 'ifOutOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutUcastPackets, as defined in [RFC2863], +then the 'ifOutUcastPackets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutNUcastPackets, as defined in [RFC2863], +then the 'ifOutNUcastPackets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutDiscards, as defined in [RFC2863], +then the 'ifOutDiscards' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutErrors, as defined in [RFC2863], +then the 'ifOutErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInMulticastPkts, as defined in [RFC2863], + + +then the 'ifInMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInBroadcastPkts, as defined in [RFC2863], +then the 'ifInBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutMulticastPkts, as defined in [RFC2863], +then the 'ifOutMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutBroadcastPkts, as defined in [RFC2863], +then the 'ifOutBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInOctets, as defined in [RFC2863], +then the 'ifHCInOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInMulticastPkts, as defined in [RFC2863], +then the 'ifHCInMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInBroadcastPkts, as defined in [RFC2863], +then the 'ifHCInBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutOctets, as defined in [RFC2863], +then the 'ifHCOutOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutUcastPkts, as defined in [RFC2863], +then the 'ifHCOutUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutMulticastPkts, as defined in [RFC2863], +then the 'ifHCOutMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutBroadcastPkts, as defined in [RFC2863], +then the 'ifHCOutBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsAlignmentErrors, as defined in [RFC2665], +then the 'dot3StatsAlignmentErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsFCSErrors, as defined in [RFC2665], + + +then the 'dot3StatsFCSErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSingleCollisionFrames, as defined in +[RFC2665],then the 'dot3StatsSingleCollisionFrames' bit will +be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSQETestErrors, as defined in [RFC2665], +then the 'dot3StatsSQETestErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsDeferredTransmissions, as defined in +[RFC2665], then the 'dot3StatsDeferredTransmissions' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsLateCollisions, as defined in [RFC2665], +then the 'dot3StatsLateCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsExcessiveCollisions, as defined in [RFC2665], +then the 'dot3StatsExcessiveCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsInternalMacTxErrors, as defined in +[RFC2665],then the 'dot3StatsInternalMacTxErrors' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsCarrierSenseErrors, as defined in [RFC2665], +then the 'dot3StatsCarrierSenseErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsFrameTooLongs, as defined in [RFC2665], +then the 'dot3StatsFrameTooLongs' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsInternalMacRxErrors, as defined in +[RFC2665], then the 'dot3StatsInternalMacRxErrors' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSymbolErrors, as defined in [RFC2665], +then the 'dot3StatsSymbolErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3InPauseFrames, as defined in [RFC2665], + + +then the 'dot3InPauseFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3OutPauseFrames, as defined in [RFC2665], +then the 'dot3OutPauseFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLineErrors, as defined in [RFC1748], +then the 'dot5StatsLineErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsBurstErrors, as defined in [RFC1748], +then the 'dot5StatsBurstErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsACErrors, as defined in [RFC1748], +then the 'dot5StatsACErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsAbortTransErrors, as defined in [RFC1748], +then the 'dot5StatsAbortTransErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsInternalErrors, as defined in [RFC1748], +then the 'dot5StatsInternalErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLostFrameErrors, as defined in [RFC1748], +then the 'dot5StatsLostFrameErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsReceiveCongestionErrors, as defined in +[RFC1748], then the 'dot5StatsReceiveCongestionErrors' bit will +be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsFrameCopiedErrors, as defined in [RFC1748], +then the 'dot5StatsFrameCopiedErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsTokenErrors, as defined in [RFC1748], +then the 'dot5StatsTokenErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSoftErrors, as defined in [RFC1748], +then the 'dot5StatsSoftErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of dot5StatsHardErrors, as defined in [RFC1748], +then the 'dot5StatsHardErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSignalLoss, as defined in [RFC1748], +then the 'dot5StatsSignalLoss' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsTransmitBeacons, as defined in [RFC1748], +then the 'dot5StatsTransmitBeacons' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsRecoverys, as defined in [RFC1748], +then the 'dot5StatsRecoverys' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLobeWires, as defined in [RFC1748], +then the 'dot5StatsLobeWires' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsRemoves, as defined in [RFC1748], +then the 'dot5StatsRemoves' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSingles, as defined in [RFC1748], +then the 'dot5StatsSingles' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsFreqErrors, as defined in [RFC1748], +then the 'dot5StatsFreqErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsDropEvents, as defined in [RFC2819], +then the 'etherStatsDropEvents' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsOctets, as defined in [RFC2819], +then the 'etherStatsOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts, as defined in [RFC2819], +then the 'etherStatsPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsBroadcastPkts, as defined in [RFC2819], +then the 'etherStatsBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of etherStatsMulticastPkts, as defined in [RFC2819], +then the 'etherStatsMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsCRCAlignErrors, as defined in [RFC2819], +then the 'etherStatsCRCAlignErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsUndersizePkts, as defined in [RFC2819], +then the 'etherStatsUndersizePkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsOversizePkts, as defined in [RFC2819], +then the 'etherStatsOversizePkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsFragments, as defined in [RFC2819], +then the 'etherStatsFragments' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsJabbers, as defined in [RFC2819], +then the 'etherStatsJabbers' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsCollisions, as defined in [RFC2819], +then the 'etherStatsCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts64Octets, as defined in [RFC2819], +then the 'etherStatsPkts64Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts65to127Octets, as defined in [RFC2819], +then the 'etherStatsPkts65to127Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts128to255Octets, as defined in [RFC2819], +then the 'etherStatsPkts128to255Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts256to511Octets, as defined in [RFC2819], +then the 'etherStatsPkts256to511Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts512to1023Octets, as defined in [RFC2819], +then the 'etherStatsPkts512to1023Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of etherStatsPkts1024to1518Octets, as defined in +[RFC2819], then the 'etherStatsPkts1024to1518Octets' bit will +be set. + + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortInFrames, as defined in [RFC1493], +then the 'dot1dTpPortInFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortOutFrames, as defined in [RFC1493], +then the 'dot1dTpPortOutFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortInDiscards, as defined in [RFC1493], +then the 'dot1dTpPortInDiscards' bit will be set." + + ::= { interfaceTopNObjects 1 } + + + + interfaceTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF InterfaceTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control records for reports on the top `N' + interfaces for the value or rate of a selected object. + The number of entries depends on the configuration of the agent. + The maximum number of entries is implementation + dependent." + ::= { interfaceTopNObjects 2 } + + interfaceTopNControlEntry OBJECT-TYPE + SYNTAX InterfaceTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N ports according to several metrics." + INDEX { interfaceTopNControlIndex } + ::= { interfaceTopNControlTable 1 } + + InterfaceTopNControlEntry ::= SEQUENCE { + interfaceTopNControlIndex + Integer32, + interfaceTopNObjectVariable + INTEGER, + + + interfaceTopNObjectSampleType + INTEGER, + interfaceTopNNormalizationReq + TruthValue, + interfaceTopNNormalizationFactor + Integer32, + interfaceTopNTimeRemaining + Integer32, + interfaceTopNDuration + Integer32, + interfaceTopNRequestedSize + Integer32, + interfaceTopNGrantedSize + Integer32, + interfaceTopNStartTime + TimeStamp, + interfaceTopNOwner + OwnerString, + interfaceTopNLastCompletionTime + TimeStamp, + interfaceTopNRowStatus + RowStatus + } + + interfaceTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1 .. 65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + interfaceTopNControl table. Each such entry defines + one top N report prepared for a probe." + ::= { interfaceTopNControlEntry 1 } + + +interfaceTopNObjectVariable OBJECT-TYPE + SYNTAX INTEGER { + ifInOctets(0), + ifInUcastPkts(1), + ifInNUcastPkts(2), + ifInDiscards(3), + ifInErrors(4), + ifInUnknownProtos(5), + ifOutOctets(6), + ifOutUcastPkts(7), + ifOutNUcastPkts(8), + ifOutDiscards(9), + ifOutErrors(10), + + + ifInMulticastPkts(11), + ifInBroadcastPkts(12), + ifOutMulticastPkts(13), + ifOutBroadcastPkts(14), + ifHCInOctets(15), + ifHCInUcastPkts(16), + ifHCInMulticastPkts(17), + ifHCInBroadcastPkts(18), + ifHCOutOctets(19), + ifHCOutUcastPkts(20), + ifHCOutMulticastPkts(21), + ifHCOutBroadcastPkts(22), + dot3StatsAlignmentErrors(23), + dot3StatsFCSErrors(24), + dot3StatsSingleCollisionFrames(25), + dot3StatsMultipleCollisionFrames(26), + dot3StatsSQETestErrors(27), + dot3StatsDeferredTransmissions(28), + dot3StatsLateCollisions(29), + dot3StatsExcessiveCollisions(30), + dot3StatsInternalMacTxErrors(31), + dot3StatsCarrierSenseErrors(32), + dot3StatsFrameTooLongs(33), + dot3StatsInternalMacRxErrors(34), + dot3StatsSymbolErrors(35), + dot3InPauseFrames(36), + dot3OutPauseFrames(37), + dot5StatsLineErrors(38), + dot5StatsBurstErrors(39), + dot5StatsACErrors(40), + dot5StatsAbortTransErrors(41), + dot5StatsInternalErrors(42), + dot5StatsLostFrameErrors(43), + dot5StatsReceiveCongestions(44), + dot5StatsFrameCopiedErrors(45), + dot5StatsTokenErrors(46), + dot5StatsSoftErrors(47), + dot5StatsHardErrors(48), + dot5StatsSignalLoss(49), + dot5StatsTransmitBeacons(50), + dot5StatsRecoverys(51), + dot5StatsLobeWires(52), + dot5StatsRemoves(53), + dot5StatsSingles(54), + dot5StatsFreqErrors(55), + etherStatsDropEvents(56), + etherStatsOctets(57), + etherStatsPkts(58), + + + etherStatsBroadcastPkts(59), + etherStatsMulticastPkts(60), + etherStatsCRCAlignErrors(61), + etherStatsUndersizePkts(62), + etherStatsOversizePkts(63), + etherStatsFragments(64), + etherStatsJabbers(65), + etherStatsCollisions(66), + etherStatsPkts64Octets(67), + etherStatsPkts65to127Octets(68), + etherStatsPkts128to255Octets(69), + etherStatsPkts256to511Octets(70), + etherStatsPkts512to1023Octets(71), + etherStatsPkts1024to1518Octets(72), + dot1dTpPortInFrames(73), + dot1dTpPortOutFrames(74), + dot1dTpPortInDiscards(75) +} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular variable to be sampled. + + Values between 0 and 22, point to MIB objects defined in + IF-MIB [RFC2863]. + + Values between 23 and 37, point to MIB objects defined in + EtherLike-MIB [RFC2665]. + + Values between 38 and 55, point to MIB objects defined in + TOKENRING-MIB [RFC1748]. + + Values between 56 and 72, point to MIB objects defined in + RMON-MIB [RFC2819]. + + Values between 73 and 75, point to MIB objects defined in + BRIDGE-MIB [RFC1493]. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the TopN + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. + + + + During a set operation, if the supplied variable name is not + available in the selected MIB view, or does not conform the + other conditions mentioned above, a badValue error must be + returned. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 2 } + +interfaceTopNObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2), + bandwidthPercentage(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the interfaceTopNTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the topNValue. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in topNValue. + + If the value of this object is bandwidthPercentage(3), the agent + records the total number of octets sent over an interval divided + by the total number of octets that represent '100% bandwidth' + for that interface. This ratio is multiplied by 1000 to + retain a 3 digit integer (0..1000) in units of + 'tenth of one percent'. This type of computation is accurate for + the octet counters. The usage of this option with respect to + packets or error counters is not recommended. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 3 } + + +interfaceTopNNormalizationReq OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether normalization is required in the + + + computation of the selected value. + + If the value of this object is 'true', the value of + the selected variable will be multiplied by a factor equal to the + interfaceTopNNormalizationFactor divided by the value of + effective speed of the interface + + If the value of this object is 'false', + the value of the selected variable will be taken 'as is' in + the TopN computation. + + If the value of the object interfaceTopNSampleType is + bandwidthPercentage(3), the object + interfaceTopNNormalizationReq cannot take the value 'true'. + + The value of this object MUST be false if the effective speed of + the interface sub-layer as determined from ifSpeed is zero. This + conforms to the ifSpeed definition in [RFC2863]for a sub-layer + that has no concept of bandwidth. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 4 } + +interfaceTopNNormalizationFactor OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value used for normalization if + interfaceTopNNormalizationReq has the value 'true'. + + Example: + The following set of values is applied to a device with multiple + Ethernet interfaces running at 10 Mbps, 100 Mbps, and 1 Gbps. + interfaceTopNObjectVariable = 'ifInOctets' + interfaceTopNObjectSampleType = 'deltaValue' + interfaceTopNNormalizationReq = 'true' + interfaceTopNNormalizationFactor = 1000000000 + Applying this set of values will result in the sampled delta values + to be multiplied by 100 for the 10 Mbps interfaces, and by 10 for + the 100 Mbps interfaces, while the sample values for the 1 Gbps + interface are left unchanged. The effective speed of the interface is + taken from the value of ifSpeed for each interface, if ifSpeed is + less than 4,294,967,295, or from ifHighSpeed multiplied by + 1,000,000 otherwise. + + At row creation the agent SHOULD set the value of this object to + + + the effective speed of the interface." +::= { interfaceTopNControlEntry 5 } + +interfaceTopNTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report + currently being collected. When this object + is modified by the management station, a new + collection is started, possibly aborting a + currently running report. The new value is + used as the requested duration of this report, + which is loaded into the associated + interfaceTopNDuration object. + + When this object is set to a non-zero value, + any associated interfaceTopNEntries shall be + made inaccessible by the agent. While the value + of this object is non-zero, it decrements by one + per second until it reaches zero. During this + time, all associated interfaceTopNEntries shall + remain inaccessible. At the time that this object + decrements to zero, the report is made accessible + in the interfaceTopNTable. Thus, the interfaceTopN + table needs to be created only at the end of the + collection interval. + + If the value of this object is set to zero + while the associated report is running, the + running report is aborted and no associated + interfaceTopNEntries are created." + DEFVAL { 0 } + ::= { interfaceTopNControlEntry 6 } + + interfaceTopNDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has + collected during the last sampling interval, + or if this report is currently being collected, + the number of seconds that this report is being + collected during this sampling interval. + + When the associated interfaceTopNTimeRemaining + + + object is set, this object shall be set by the + agent to the same value and shall not be modified + until the next time the interfaceTopNTimeRemaining + is set. + + This value shall be zero if no reports have been + requested for this interfaceTopNControlEntry." + ::= { interfaceTopNControlEntry 7 } + + interfaceTopNRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of interfaces requested + for the Top N Table. + + When this object is created or modified, the + agent should set interfaceTopNGrantedSize as close + to this object as is possible for the particular + implementation and available resources." + DEFVAL { 10 } + ::= { interfaceTopNControlEntry 8 } + + interfaceTopNGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0.. 2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of interfaces in the + top N table. + + When the associated interfaceTopNRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + agent must not lower this value except as a result of a + set to the associated interfaceTopNRequestedSize object." + ::= { interfaceTopNControlEntry 9 } + + interfaceTopNStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated interfaceTopNTimeRemaining object was + + + modified to start the requested report. + + If the report has not yet been started, the value + of this object is zero." + ::= { interfaceTopNControlEntry 10 } + + interfaceTopNOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + using the resources assigned to it." + ::= { interfaceTopNControlEntry 11 } + + interfaceTopNLastCompletionTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last completed. If no report was yet completed, the value + of this object is zero." + ::= { interfaceTopNControlEntry 12 } + + + interfaceTopNRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + If the value of this object is not equal to + active(1), all associated entries in the + interfaceTopNTable shall be deleted by the + agent." + ::= { interfaceTopNControlEntry 13 } + + + -- Interface Top "N" reports + + interfaceTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF InterfaceTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of reports for the top `N' ports based on + + + setting of associated control table entries. The + maximum number of entries depends on the number + of entries in table interfaceTopNControlTable and + the value of object interfaceTopNGrantedSize for + each entry. + + For each entry in the interfaceTopNControlTable, + interfaces with the highest value of + interfaceTopNValue shall be placed in this table + in decreasing order of that rate until there is + no more room or until there are no more ports." + ::= { interfaceTopNObjects 3 } + + interfaceTopNEntry OBJECT-TYPE + SYNTAX InterfaceTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for an interface that is + part of a top N report." + INDEX { interfaceTopNControlIndex, + interfaceTopNIndex } + ::= { interfaceTopNTable 1 } + + InterfaceTopNEntry ::= SEQUENCE { + interfaceTopNIndex + Integer32, + interfaceTopNDataSourceIndex + Integer32, + interfaceTopNValue + Gauge32, + interfaceTopNValue64 + CounterBasedGauge64 + } + + interfaceTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the interfaceTopN table among those in the same + report. This index is between 1 and N, where N + is the number of entries in this report. Increasing + values of interfaceTopNIndex shall be assigned to + entries with decreasing values of interfaceTopNValue + or interfaceTopNValue64, whichever applies, + until index N is assigned to the entry with the + + + lowest value of interfaceTopNValue / + interfaceTopNValue64 or there are no + more interfaceTopNEntries. + + No ports are included in a report where their + value of interfaceTopNValue would be zero." + ::= { interfaceTopNEntry 1 } + + interfaceTopNDataSourceIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the index corresponding + to the dataSource for this entry. + + For sorted values of variables belonging to the + IF-MIB, EtherLike-MIB or TOKENRING-MIB, this value + equals the ifIndex of the interface. + + For sorted values of variables belonging to the + RMON-MIB, this value equals the interface corresponding + to the data source, pointed to by the value + of etherStatsDataSource. + + For sorted values of variables belonging to the + BRIDGE-MIB, this value equals the interface corresponding + to the bridge port, pointed to by the value + of dot1dBasePortIfIndex." + ::= { interfaceTopNEntry 2 } + + interfaceTopNValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value at the end of the sampling interval, or + the amount of change in the selected variable + during this sampling interval for the identified + interface. The selected variable is that interfaces's + instance of the object selected by + interfaceTopNObjectVariable. This value may be normalized + if interfaceTopNNormalization required equals 'true'. + This value of this object will be computed for all + cases when interfaceTopNObjectVariable points to a + 32-bit counter or Gauge or when + interfaceTopNObjectSampleType equals bandwidthPercentage(3), + and will be zero for all other cases." + + + ::= { interfaceTopNEntry 3 } + + interfaceTopNValue64 OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value at the end of the sampling interval, or + the amount of change in the selected variable + during this sampling interval for the identified + interface. The selected variable is that interfaces's + instance of the object selected by + interfaceTopNObjectVariable. This value may be normalized + if interfaceTopNNormalization required equals 'true'. + This value of this object will be computed for all + cases when interfaceTopNObjectVariable points to + a 64-bit counter, and will be zero for all other cases." + ::= { interfaceTopNEntry 4 } + + +-- +-- Notifications Section +-- (none defined) +-- + +-- +-- Conformance Section +-- + +interfaceTopNCompliances OBJECT IDENTIFIER ::= + {interfaceTopNConformance 1 } +interfaceTopNGroups OBJECT IDENTIFIER ::= + {interfaceTopNConformance 2 } + +interfaceTopNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + InterfaceTopN MIB." + MODULE -- this module + MANDATORY-GROUPS { interfaceTopNGroup } + ::= { interfaceTopNCompliances 1 } + +interfaceTopNGroup OBJECT-GROUP + OBJECTS { + interfaceTopNCaps, + interfaceTopNObjectVariable, + interfaceTopNObjectSampleType, + + + interfaceTopNNormalizationReq, + interfaceTopNNormalizationFactor, + interfaceTopNTimeRemaining, + interfaceTopNDuration, + interfaceTopNRequestedSize, + interfaceTopNGrantedSize, + interfaceTopNStartTime, + interfaceTopNOwner, + interfaceTopNLastCompletionTime, + interfaceTopNRowStatus, + interfaceTopNDataSourceIndex, + interfaceTopNValue, + interfaceTopNValue64 + } + STATUS current + DESCRIPTION + "A collection of objects providing interfaceTopN data for + a multiple interfaces device." +::= { interfaceTopNGroups 1 } + +END diff --git a/mibs/ietf/IP-FORWARD-MIB b/mibs/ietf/IP-FORWARD-MIB new file mode 100644 index 0000000..3090ff7 --- /dev/null +++ b/mibs/ietf/IP-FORWARD-MIB @@ -0,0 +1,1357 @@ +IP-FORWARD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + IpAddress, Integer32, Gauge32, + Counter32 FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + + + + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InterfaceIndexOrZero FROM IF-MIB + ip FROM IP-MIB + IANAipRouteProtocol FROM IANA-RTPROTO-MIB + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetAutonomousSystemNumber FROM INET-ADDRESS-MIB; + +ipForward MODULE-IDENTITY + LAST-UPDATED "200602010000Z" + ORGANIZATION + "IETF IPv6 Working Group + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Editor: + Brian Haberman + Johns Hopkins University - Applied Physics Laboratory + Mailstop 17-S442 + 11100 Johns Hopkins Road + Laurel MD, 20723-6099 USA + + Phone: +1-443-778-1319 + Email: brian@innovationslab.net + + Send comments to " + DESCRIPTION + "The MIB module for the management of CIDR multipath IP + Routes. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is a part of RFC 4292; see the RFC + itself for full legal notices." + + REVISION "200602010000Z" + DESCRIPTION + "IPv4/v6 version-independent revision. Minimal changes + were made to the original RFC 2096 MIB to allow easy + upgrade of existing IPv4 implementations to the + version-independent MIB. These changes include: + + Adding inetCidrRouteDiscards as a replacement for the + deprecated ipRoutingDiscards and ipv6DiscardedRoutes + objects. + + Adding a new conformance statement to support the + implementation of the IP Forwarding MIB in a + read-only mode. + + + + + The inetCidrRouteTable replaces the IPv4-specific + ipCidrRouteTable, its related objects, and related + conformance statements. + + Published as RFC 4292." + + REVISION "199609190000Z" + DESCRIPTION + "Revised to support CIDR routes. + Published as RFC 2096." + + REVISION "199207022156Z" + DESCRIPTION + "Initial version, published as RFC 1354." + ::= { ip 24 } + +inetCidrRouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current inetCidrRouteTable entries that + are not invalid." +::= { ipForward 6 } + +inetCidrRouteDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid route entries discarded from the + inetCidrRouteTable. Discarded route entries do not + appear in the inetCidrRouteTable. One possible reason + for discarding an entry would be to free-up buffer space + for other route table entries." + ::= { ipForward 8 } + +-- Inet CIDR Route Table + +-- The Inet CIDR Route Table deprecates and replaces the +-- ipCidrRoute Table currently in the IP Forwarding Table MIB. +-- It adds IP protocol independence. + +inetCidrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF InetCidrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This entity's IP Routing table." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 7 } + +inetCidrRouteEntry OBJECT-TYPE + SYNTAX InetCidrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular route to a particular destination, under a + particular policy (as reflected in the + inetCidrRoutePolicy object). + + Dynamically created rows will survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + inetCidrRouteDest, inetCidrRoutePolicy, and + inetCidrRouteNextHop exceeds 111, then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { + inetCidrRouteDestType, + inetCidrRouteDest, + inetCidrRoutePfxLen, + inetCidrRoutePolicy, + inetCidrRouteNextHopType, + inetCidrRouteNextHop + } + ::= { inetCidrRouteTable 1 } + +InetCidrRouteEntry ::= SEQUENCE { + inetCidrRouteDestType InetAddressType, + inetCidrRouteDest InetAddress, + inetCidrRoutePfxLen InetAddressPrefixLength, + inetCidrRoutePolicy OBJECT IDENTIFIER, + inetCidrRouteNextHopType InetAddressType, + inetCidrRouteNextHop InetAddress, + inetCidrRouteIfIndex InterfaceIndexOrZero, + inetCidrRouteType INTEGER, + inetCidrRouteProto IANAipRouteProtocol, + inetCidrRouteAge Gauge32, + inetCidrRouteNextHopAS InetAutonomousSystemNumber, + inetCidrRouteMetric1 Integer32, + inetCidrRouteMetric2 Integer32, + inetCidrRouteMetric3 Integer32, + + + + inetCidrRouteMetric4 Integer32, + inetCidrRouteMetric5 Integer32, + inetCidrRouteStatus RowStatus + } + +inetCidrRouteDestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the inetCidrRouteDest address, as defined + in the InetAddress MIB. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC 4001" + ::= { inetCidrRouteEntry 1 } + +inetCidrRouteDest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IP address of this route. + + The type of this address is determined by the value of + the inetCidrRouteDestType object. + + The values for the index objects inetCidrRouteDest and + inetCidrRoutePfxLen must be consistent. When the value + of inetCidrRouteDest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object inetCidrRoutePfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + + ::= { inetCidrRouteEntry 2 } + +inetCidrRoutePfxLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the number of leading one bits that form the + mask to be logical-ANDed with the destination address + before being compared to the value in the + + + + inetCidrRouteDest field. + + The values for the index objects inetCidrRouteDest and + inetCidrRoutePfxLen must be consistent. When the value + of inetCidrRouteDest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object inetCidrRoutePfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + + ::= { inetCidrRouteEntry 3 } + +inetCidrRoutePolicy OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an opaque object without any defined + semantics. Its purpose is to serve as an additional + index that may delineate between multiple entries to + the same destination. The value { 0 0 } shall be used + as the default value for this object." + ::= { inetCidrRouteEntry 4 } + +inetCidrRouteNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the inetCidrRouteNextHop address, as + defined in the InetAddress MIB. + + Value should be set to unknown(0) for non-remote + routes. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC 4001" + ::= { inetCidrRouteEntry 5 } + +inetCidrRouteNextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "On remote routes, the address of the next system en + + + + route. For non-remote routes, a zero length string. + + The type of this address is determined by the value of + the inetCidrRouteNextHopType object." + ::= { inetCidrRouteEntry 6 } + +inetCidrRouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached. A value of 0 is valid and represents the + scenario where no interface is specified." + ::= { inetCidrRouteEntry 7 } + +inetCidrRouteType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route that discards traffic and + -- returns ICMP notification + local (3), -- local interface + remote (4), -- remote destination + blackhole(5) -- route that discards traffic + -- silently + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed, even if the + implementation keeps them stored internally. + + reject(2) refers to a route that, if matched, discards + the message as unreachable and returns a notification + (e.g., ICMP error) to the message sender. This is used + in some protocols as a means of correctly aggregating + routes. + + blackhole(5) refers to a route that, if matched, + discards the message silently." + ::= { inetCidrRouteEntry 8 } + + + + +inetCidrRouteProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + 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." + ::= { inetCidrRouteEntry 9 } + +inetCidrRouteAge OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + 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." + ::= { inetCidrRouteEntry 10 } + +inetCidrRouteNextHopAS OBJECT-TYPE + SYNTAX InetAutonomousSystemNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. The + semantics of this object are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. When this object is unknown or not relevant, its + value should be set to zero." + DEFVAL { 0 } + ::= { inetCidrRouteEntry 11 } + +inetCidrRouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + + + + ::= { inetCidrRouteEntry 12 } + +inetCidrRouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 13 } + +inetCidrRouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 14 } + +inetCidrRouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 15 } + +inetCidrRouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + + + + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 16 } + +inetCidrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + + A row entry cannot be modified when the status is + marked as active(1)." + ::= { inetCidrRouteEntry 17 } + +-- Conformance information + +ipForwardConformance + OBJECT IDENTIFIER ::= { ipForward 5 } + +ipForwardGroups + OBJECT IDENTIFIER ::= { ipForwardConformance 1 } + +ipForwardCompliances + OBJECT IDENTIFIER ::= { ipForwardConformance 2 } + +-- Compliance statements + +ipForwardFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented for read-create, the + implementation can claim full compliance. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + + -- OBJECT inetCidrRouteDestType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + + + + -- + -- OBJECT inetCidrRouteDest + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + -- + -- OBJECT inetCidrRouteNextHopType + -- SYNTAX InetAddressType (unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3) + -- ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT inetCidrRouteNextHop + -- SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + " + + MODULE -- this module + MANDATORY-GROUPS { inetForwardCidrRouteGroup } + + OBJECT inetCidrRouteStatus + SYNTAX RowStatus { active(1), notInService (2) } + WRITE-SYNTAX RowStatus { active(1), notInService (2), + createAndGo(4), destroy(6) } + DESCRIPTION "Support for createAndWait is not required." + + ::= { ipForwardCompliances 3 } + +ipForwardReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read- + create (i.e., in read-only mode), the implementation can + claim read-only compliance." + MODULE -- this module + MANDATORY-GROUPS { inetForwardCidrRouteGroup } + + OBJECT inetCidrRouteIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteType + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteNextHopAS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ipForwardCompliances 4 } + +-- units of conformance + +inetForwardCidrRouteGroup OBJECT-GROUP + OBJECTS { inetCidrRouteDiscards, + inetCidrRouteIfIndex, inetCidrRouteType, + inetCidrRouteProto, inetCidrRouteAge, + + + + inetCidrRouteNextHopAS, inetCidrRouteMetric1, + inetCidrRouteMetric2, inetCidrRouteMetric3, + inetCidrRouteMetric4, inetCidrRouteMetric5, + inetCidrRouteStatus, inetCidrRouteNumber + } + STATUS current + DESCRIPTION + "The IP version-independent CIDR Route Table." + ::= { ipForwardGroups 4 } + +-- Deprecated Objects + +ipCidrRouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of current ipCidrRouteTable entries that are + not invalid. This object is deprecated in favor of + inetCidrRouteNumber and the inetCidrRouteTable." + ::= { ipForward 3 } + +-- IP CIDR Route Table + +-- The IP CIDR Route Table obsoletes and replaces the ipRoute +-- Table current in MIB-I and MIB-II and the IP Forwarding Table. +-- It adds knowledge of the autonomous system of the next hop, +-- multiple next hops, policy routing, and Classless +-- Inter-Domain Routing. + +ipCidrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpCidrRouteEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entity's IP Routing table. This table has been + deprecated in favor of the IP version neutral + inetCidrRouteTable." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 4 } + +ipCidrRouteEntry OBJECT-TYPE + SYNTAX IpCidrRouteEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A particular route to a particular destination, under a + + + + particular policy." + INDEX { + ipCidrRouteDest, + ipCidrRouteMask, + ipCidrRouteTos, + ipCidrRouteNextHop + } + ::= { ipCidrRouteTable 1 } + +IpCidrRouteEntry ::= SEQUENCE { + ipCidrRouteDest IpAddress, + ipCidrRouteMask IpAddress, + ipCidrRouteTos Integer32, + ipCidrRouteNextHop IpAddress, + ipCidrRouteIfIndex Integer32, + ipCidrRouteType INTEGER, + ipCidrRouteProto INTEGER, + ipCidrRouteAge Integer32, + ipCidrRouteInfo OBJECT IDENTIFIER, + ipCidrRouteNextHopAS Integer32, + ipCidrRouteMetric1 Integer32, + ipCidrRouteMetric2 Integer32, + ipCidrRouteMetric3 Integer32, + ipCidrRouteMetric4 Integer32, + ipCidrRouteMetric5 Integer32, + ipCidrRouteStatus RowStatus + } + +ipCidrRouteDest OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The destination IP address of this route. + + This object may not take a Multicast (Class D) address + value. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipCidrRouteMask object is + not equal to x." + ::= { ipCidrRouteEntry 1 } + +ipCidrRouteMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + + + + STATUS deprecated + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to the value + in the ipCidrRouteDest field. For those systems that + do not support arbitrary subnet masks, an agent + constructs the value of the ipCidrRouteMask by + reference to the IP Address Class. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipCidrRouteDest object is + not equal to ipCidrRouteDest." + ::= { ipCidrRouteEntry 2 } + +-- The following convention is included for specification +-- of TOS Field contents. At this time, the Host Requirements +-- and the Router Requirements documents disagree on the width +-- of the TOS field. This mapping describes the Router +-- Requirements mapping, and leaves room to widen the TOS field +-- without impact to fielded systems. + +ipCidrRouteTos OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The policy specifier is the IP TOS Field. The encoding + of IP TOS is as specified by the following convention. + Zero indicates the default path if no more specific + policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + + + + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30" + ::= { ipCidrRouteEntry 3 } + +ipCidrRouteNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "On remote routes, the address of the next system en + route; Otherwise, 0.0.0.0." + ::= { ipCidrRouteEntry 4 } + +ipCidrRouteIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 5 } + +ipCidrRouteType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route that discards traffic + local (3), -- local interface + remote (4) -- remote destination + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed, even if the + implementation keeps them stored internally. + + reject (2) refers to a route that, if matched, + discards the message as unreachable. This is used in + some protocols as a means of correctly aggregating + routes." + ::= { ipCidrRouteEntry 6 } + + + + +ipCidrRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + MAX-ACCESS read-only + STATUS deprecated + 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." + ::= { ipCidrRouteEntry 7 } + +ipCidrRouteAge OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + 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." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 8 } + +ipCidrRouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + + + + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol that is responsible for + this route, as determined by the value specified in the + route's ipCidrRouteProto value. If this information is + not present, its value should be set to the OBJECT + IDENTIFIER { 0 0 }, which is a syntactically valid + object identifier, and any implementation conforming to + ASN.1 and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipCidrRouteEntry 9 } + +ipCidrRouteNextHopAS OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The Autonomous System Number of the Next Hop. The + semantics of this object are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. When this object is unknown or not relevant, its + value should be set to zero." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 10 } + +ipCidrRouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 11 } + +ipCidrRouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + + + + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 12 } + +ipCidrRouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 13 } + +ipCidrRouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 14 } + +ipCidrRouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 15 } + +ipCidrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + + + + "The row status variable, used according to row + installation and removal conventions." + ::= { ipCidrRouteEntry 16 } + +-- compliance statements + +ipForwardCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities that + implement the ipForward MIB. + + This compliance statement has been deprecated and + replaced with ipForwardFullCompliance and + ipForwardReadOnlyCompliance." + + MODULE -- this module + MANDATORY-GROUPS { ipForwardCidrRouteGroup } + + ::= { ipForwardCompliances 1 } + +-- units of conformance + +ipForwardCidrRouteGroup OBJECT-GROUP + OBJECTS { ipCidrRouteNumber, + ipCidrRouteDest, ipCidrRouteMask, ipCidrRouteTos, + ipCidrRouteNextHop, ipCidrRouteIfIndex, + ipCidrRouteType, ipCidrRouteProto, ipCidrRouteAge, + ipCidrRouteInfo,ipCidrRouteNextHopAS, + ipCidrRouteMetric1, ipCidrRouteMetric2, + ipCidrRouteMetric3, ipCidrRouteMetric4, + ipCidrRouteMetric5, ipCidrRouteStatus + } + STATUS deprecated + DESCRIPTION + "The CIDR Route Table. + + This group has been deprecated and replaced with + inetForwardCidrRouteGroup." + ::= { ipForwardGroups 3 } + +-- Obsoleted Definitions - Objects + +ipForwardNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + + + + "The number of current ipForwardTable entries that are + not invalid." + ::= { ipForward 1 } + +-- IP Forwarding Table + +-- The IP Forwarding Table obsoletes and replaces the ipRoute +-- Table current in MIB-I and MIB-II. It adds knowledge of +-- the autonomous system of the next hop, multiple next hop +-- support, and policy routing support. + +ipForwardTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpForwardEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "This entity's IP Routing table." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 2 } + +ipForwardEntry OBJECT-TYPE + SYNTAX IpForwardEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "A particular route to a particular destination, under a + particular policy." + INDEX { + ipForwardDest, + ipForwardProto, + ipForwardPolicy, + ipForwardNextHop + } + ::= { ipForwardTable 1 } + +IpForwardEntry ::= SEQUENCE { + ipForwardDest IpAddress, + ipForwardMask IpAddress, + ipForwardPolicy Integer32, + ipForwardNextHop IpAddress, + ipForwardIfIndex Integer32, + ipForwardType INTEGER, + ipForwardProto INTEGER, + ipForwardAge Integer32, + ipForwardInfo OBJECT IDENTIFIER, + ipForwardNextHopAS Integer32, + ipForwardMetric1 Integer32, + + + + ipForwardMetric2 Integer32, + ipForwardMetric3 Integer32, + ipForwardMetric4 Integer32, + ipForwardMetric5 Integer32 + } + +ipForwardDest OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The destination IP address of this route. An entry + with a value of 0.0.0.0 is considered a default route. + + This object may not take a Multicast (Class D) address + value. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipForwardMask object is + not equal to x." + ::= { ipForwardEntry 1 } + +ipForwardMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to the value + in the ipForwardDest field. For those systems that do + not support arbitrary subnet masks, an agent constructs + the value of the ipForwardMask by reference to the IP + Address Class. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipForwardDest object is + not equal to ipForwardDest." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ipForwardEntry 2 } + +-- The following convention is included for specification +-- of TOS Field contents. At this time, the Host Requirements +-- and the Router Requirements documents disagree on the width +-- of the TOS field. This mapping describes the Router + + + +-- Requirements mapping, and leaves room to widen the TOS field +-- without impact to fielded systems. + +ipForwardPolicy OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The general set of conditions that would cause + the selection of one multipath route (set of + next hops for a given destination) is referred + to as 'policy'. + + Unless the mechanism indicated by ipForwardProto + specifies otherwise, the policy specifier is + the IP TOS Field. The encoding of IP TOS is as + specified by the following convention. Zero + indicates the default path if no more specific + policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30 + + Protocols defining 'policy' otherwise must either + define a set of values that are valid for + this object or must implement an integer-instanced + policy table for which this object's + value acts as an index." + ::= { ipForwardEntry 3 } + +ipForwardNextHop OBJECT-TYPE + + + + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "On remote routes, the address of the next system en + route; otherwise, 0.0.0.0." + ::= { ipForwardEntry 4 } + +ipForwardIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached." + DEFVAL { 0 } + ::= { ipForwardEntry 5 } + +ipForwardType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + invalid (2), -- logically deleted + local (3), -- local interface + remote (4) -- remote destination + } + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in the + ipForwardTable object. That is, it effectively + disassociates 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 ipForwardType object." + DEFVAL { invalid } + ::= { ipForwardEntry 6 } + + + + +ipForwardProto OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + is-is (9), -- Dual IS-IS + es-is (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15) -- InterDomain Policy Routing + } + MAX-ACCESS read-only + STATUS obsolete + 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." + ::= { ipForwardEntry 7 } + +ipForwardAge OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + 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." + DEFVAL { 0 } + ::= { ipForwardEntry 8 } + +ipForwardInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS obsolete + + + + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol that is responsible for + this route, as determined by the value specified in the + route's ipForwardProto value. If this information is + not present, its value should be set to the OBJECT + IDENTIFIER { 0 0 }, which is a syntactically valid + object identifier, and any implementation conforming to + ASN.1 and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipForwardEntry 9 } + +ipForwardNextHopAS OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The Autonomous System Number of the Next Hop. When + this is unknown or not relevant to the protocol + indicated by ipForwardProto, zero." + DEFVAL { 0 } + ::= { ipForwardEntry 10 } + +ipForwardMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 11 } + +ipForwardMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 12 } + + + + +ipForwardMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 13 } + +ipForwardMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 14 } + +ipForwardMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 15 } + +-- Obsoleted Definitions - Groups +-- compliance statements + +ipForwardOldCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for SNMP entities that + implement the ipForward MIB." + + + + + MODULE -- this module + MANDATORY-GROUPS { ipForwardMultiPathGroup } + + ::= { ipForwardCompliances 2 } + +ipForwardMultiPathGroup OBJECT-GROUP + OBJECTS { ipForwardNumber, + ipForwardDest, ipForwardMask, ipForwardPolicy, + ipForwardNextHop, ipForwardIfIndex, ipForwardType, + ipForwardProto, ipForwardAge, ipForwardInfo, + ipForwardNextHopAS, + ipForwardMetric1, ipForwardMetric2, ipForwardMetric3, + ipForwardMetric4, ipForwardMetric5 + } + STATUS obsolete + DESCRIPTION + "IP Multipath Route Table." + ::= { ipForwardGroups 2 } + +END diff --git a/mibs/ietf/IP-MIB b/mibs/ietf/IP-MIB new file mode 100644 index 0000000..0a93501 --- /dev/null +++ b/mibs/ietf/IP-MIB @@ -0,0 +1,5254 @@ +IP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Counter32, IpAddress, + mib-2, Unsigned32, Counter64, + zeroDotZero FROM SNMPv2-SMI + PhysAddress, TruthValue, + TimeStamp, RowPointer, + TEXTUAL-CONVENTION, TestAndIncr, + RowStatus, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetVersion, InetZoneIndex FROM INET-ADDRESS-MIB + InterfaceIndex FROM IF-MIB; + +ipMIB MODULE-IDENTITY + LAST-UPDATED "200602020000Z" + ORGANIZATION "IETF IPv6 MIB Revision Team" + CONTACT-INFO + "Editor: + + + + Shawn A. Routhier + Interworking Labs + 108 Whispering Pines Dr. Suite 235 + Scotts Valley, CA 95066 + USA + EMail: " + DESCRIPTION + "The MIB module for managing IP and ICMP implementations, but + excluding their management of IP routes. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4293; see the RFC itself for + full legal notices." + + REVISION "200602020000Z" + DESCRIPTION + "The IP version neutral revision with added IPv6 objects for + ND, default routers, and router advertisements. As well as + being the successor to RFC 2011, this MIB is also the + successor to RFCs 2465 and 2466. Published as RFC 4293." + + REVISION "199411010000Z" + DESCRIPTION + "A separate MIB module (IP-MIB) for IP and ICMP management + objects. Published as RFC 2011." + + REVISION "199103310000Z" + DESCRIPTION + "The initial revision of this MIB module was part of MIB-II, + which was published as RFC 1213." + ::= { mib-2 48} + +-- +-- The textual conventions we define and use in this MIB. +-- + +IpAddressOriginTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The origin of the address. + + manual(2) indicates that the address was manually configured + to a specified address, e.g., by user configuration. + + dhcp(4) indicates an address that was assigned to this + system by a DHCP server. + + linklayer(5) indicates an address created by IPv6 stateless + + + + auto-configuration. + + random(6) indicates an address chosen by the system at + random, e.g., an IPv4 address within 169.254/16, or an RFC + 3041 privacy address." + SYNTAX INTEGER { + other(1), + manual(2), + dhcp(4), + linklayer(5), + random(6) + } + +IpAddressStatusTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of an address. Most of the states correspond to + states from the IPv6 Stateless Address Autoconfiguration + protocol. + + The preferred(1) state indicates that this is a valid + address that can appear as the destination or source address + of a packet. + + The deprecated(2) state indicates that this is a valid but + deprecated address that should no longer be used as a source + address in new communications, but packets addressed to such + an address are processed as expected. + + The invalid(3) state indicates that this isn't a valid + address and it shouldn't appear as the destination or source + address of a packet. + + The inaccessible(4) state indicates that the address is not + accessible because the interface to which this address is + assigned is not operational. + + The unknown(5) state indicates that the status cannot be + determined for some reason. + + The tentative(6) state indicates that the uniqueness of the + address on the link is being verified. Addresses in this + state should not be used for general communication and + should only be used to determine the uniqueness of the + address. + + The duplicate(7) state indicates the address has been + determined to be non-unique on the link and so must not be + + + + used. + + The optimistic(8) state indicates the address is available + for use, subject to restrictions, while its uniqueness on + a link is being verified. + + In the absence of other information, an IPv4 address is + always preferred(1)." + REFERENCE "RFC 2462" + SYNTAX INTEGER { + preferred(1), + deprecated(2), + invalid(3), + inaccessible(4), + unknown(5), + tentative(6), + duplicate(7), + optimistic(8) + } + +IpAddressPrefixOriginTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The origin of this prefix. + + manual(2) indicates a prefix that was manually configured. + + wellknown(3) indicates a well-known prefix, e.g., 169.254/16 + for IPv4 auto-configuration or fe80::/10 for IPv6 link-local + addresses. Well known prefixes may be assigned by IANA, + the address registries, or by specification in a standards + track RFC. + + dhcp(4) indicates a prefix that was assigned by a DHCP + server. + + routeradv(5) indicates a prefix learned from a router + advertisement. + + Note: while IpAddressOriginTC and IpAddressPrefixOriginTC + are similar, they are not identical. The first defines how + an address was created, while the second defines how a + prefix was found." + SYNTAX INTEGER { + other(1), + manual(2), + wellknown(3), + dhcp(4), + + + + routeradv(5) + } + +Ipv6AddressIfIdentifierTC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + interface identifiers. This is a binary string + of up to 8 octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..8)) + +-- +-- the IP general group +-- some objects that affect all of IPv4 +-- + +ip OBJECT IDENTIFIER ::= { mib-2 4 } + +ipForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv4 + router in respect to the forwarding of datagrams received + by, but not addressed to, this entity. IPv4 routers forward + datagrams. IPv4 hosts do not (except those source-routed + via the host). + + When this object is written, the entity should save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system. + Note: a stronger requirement is not used because this object + was previously defined." + ::= { ip 1 } + +ipDefaultTTL OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value inserted into the Time-To-Live field of + the IPv4 header of datagrams originated at this entity, + whenever a TTL value is not supplied by the transport layer + + + + protocol. + + When this object is written, the entity should save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system. + Note: a stronger requirement is not used because this object + was previously defined." + ::= { ip 2 } + +ipReasmTimeout OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of seconds that received fragments are + held while they are awaiting reassembly at this entity." + ::= { ip 13 } + +-- +-- the IPv6 general group +-- Some objects that affect all of IPv6 +-- + +ipv6IpForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv6 + router on any interface in respect to the forwarding of + datagrams received by, but not addressed to, this entity. + IPv6 routers forward datagrams. IPv6 hosts do not (except + those source-routed via the host). + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ip 25 } + +ipv6IpDefaultHopLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default value inserted into the Hop Limit field of the + IPv6 header of datagrams originated at this entity whenever + a Hop Limit value is not supplied by the transport layer + protocol. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + REFERENCE "RFC 2461 Section 6.3.2" + ::= { ip 26 } + +-- +-- IPv4 Interface Table +-- + +ipv4InterfaceTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipv4InterfaceTable was added or deleted, or + when an ipv4InterfaceReasmMaxSize or an + ipv4InterfaceEnableStatus object was modified. + + If new objects are added to the ipv4InterfaceTable that + require the ipv4InterfaceTableLastChange to be updated when + they are modified, they must specify that requirement in + their description clause." + ::= { ip 27 } + +ipv4InterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv4InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface IPv4-specific + information." + ::= { ip 28 } + +ipv4InterfaceEntry OBJECT-TYPE + SYNTAX Ipv4InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing IPv4-specific information for a specific + interface." + INDEX { ipv4InterfaceIfIndex } + + + + ::= { ipv4InterfaceTable 1 } + +Ipv4InterfaceEntry ::= SEQUENCE { + ipv4InterfaceIfIndex InterfaceIndex, + ipv4InterfaceReasmMaxSize Integer32, + ipv4InterfaceEnableStatus INTEGER, + ipv4InterfaceRetransmitTime Unsigned32 + } + +ipv4InterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipv4InterfaceEntry 1 } + +ipv4InterfaceReasmMaxSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv4 datagram that this entity can + re-assemble from incoming IPv4 fragmented datagrams received + on this interface." + ::= { ipv4InterfaceEntry 2 } + +ipv4InterfaceEnableStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether IPv4 is enabled (up) or disabled + (down) on this interface. This object does not affect the + state of the interface itself, only its connection to an + IPv4 stack. The IF-MIB should be used to control the state + of the interface." + ::= { ipv4InterfaceEntry 3 } + +ipv4InterfaceRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time between retransmissions of ARP requests to a + neighbor when resolving the address or when probing the + reachability of a neighbor." + REFERENCE "RFC 1122" + DEFVAL { 1000 } + ::= { ipv4InterfaceEntry 4 } + +-- +-- v6 interface table +-- + +ipv6InterfaceTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipv6InterfaceTable was added or deleted or when + an ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier, + ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime, + ipv6InterfaceRetransmitTime, or ipv6InterfaceForwarding + object was modified. + + If new objects are added to the ipv6InterfaceTable that + require the ipv6InterfaceTableLastChange to be updated when + they are modified, they must specify that requirement in + their description clause." + ::= { ip 29 } + +ipv6InterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface IPv6-specific + information." + ::= { ip 30 } + +ipv6InterfaceEntry OBJECT-TYPE + SYNTAX Ipv6InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing IPv6-specific information for a given + interface." + + + + INDEX { ipv6InterfaceIfIndex } + ::= { ipv6InterfaceTable 1 } + +Ipv6InterfaceEntry ::= SEQUENCE { + ipv6InterfaceIfIndex InterfaceIndex, + ipv6InterfaceReasmMaxSize Unsigned32, + ipv6InterfaceIdentifier Ipv6AddressIfIdentifierTC, + ipv6InterfaceEnableStatus INTEGER, + ipv6InterfaceReachableTime Unsigned32, + ipv6InterfaceRetransmitTime Unsigned32, + ipv6InterfaceForwarding INTEGER + } + +ipv6InterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipv6InterfaceEntry 1 } + +ipv6InterfaceReasmMaxSize OBJECT-TYPE + SYNTAX Unsigned32 (1500..65535) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 datagram that this entity can + re-assemble from incoming IPv6 fragmented datagrams received + on this interface." + ::= { ipv6InterfaceEntry 2 } + +ipv6InterfaceIdentifier OBJECT-TYPE + SYNTAX Ipv6AddressIfIdentifierTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Interface Identifier for this interface. The Interface + Identifier is combined with an address prefix to form an + interface address. + + By default, the Interface Identifier is auto-configured + according to the rules of the link type to which this + interface is attached. + + + + + A zero length identifier may be used where appropriate. One + possible example is a loopback interface." + ::= { ipv6InterfaceEntry 3 } + +-- This object ID is reserved as it was used in earlier versions of +-- the MIB module. In theory, OIDs are not assigned until the +-- specification is released as an RFC; however, as some companies +-- may have shipped code based on earlier versions of the MIB, it +-- seems best to reserve this OID. This OID had been +-- ipv6InterfacePhysicalAddress. +-- ::= { ipv6InterfaceEntry 4} + +ipv6InterfaceEnableStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether IPv6 is enabled (up) or disabled + (down) on this interface. This object does not affect the + state of the interface itself, only its connection to an + IPv6 stack. The IF-MIB should be used to control the state + of the interface. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ipv6InterfaceEntry 5 } + +ipv6InterfaceReachableTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time a neighbor is considered reachable after receiving + a reachability confirmation." + REFERENCE "RFC 2461, Section 6.3.2" + ::= { ipv6InterfaceEntry 6 } + +ipv6InterfaceRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The time between retransmissions of Neighbor Solicitation + messages to a neighbor when resolving the address or when + probing the reachability of a neighbor." + REFERENCE "RFC 2461, Section 6.3.2" + ::= { ipv6InterfaceEntry 7 } + +ipv6InterfaceForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv6 + router on this interface with respect to the forwarding of + datagrams received by, but not addressed to, this entity. + IPv6 routers forward datagrams. IPv6 hosts do not (except + those source-routed via the host). + + This object is constrained by ipv6IpForwarding and is + ignored if ipv6IpForwarding is set to notForwarding. Those + systems that do not provide per-interface control of the + forwarding function should set this object to forwarding for + all interfaces and allow the ipv6IpForwarding object to + control the forwarding capability. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ipv6InterfaceEntry 8 } + +-- +-- Per-Interface or System-Wide IP statistics. +-- +-- The following two tables, ipSystemStatsTable and ipIfStatsTable, +-- are intended to provide the same counters at different granularities. +-- The ipSystemStatsTable provides system wide counters aggregating +-- the traffic counters for all interfaces for a given address type. +-- The ipIfStatsTable provides the same counters but for specific +-- interfaces rather than as an aggregate. +-- +-- Note well: If a system provides both system-wide and interface- +-- specific values, the system-wide value may not be equal to the sum +-- of the interface-specific values across all interfaces due to e.g., +-- dynamic interface creation/deletion. +-- +-- Note well: Both of these tables contain some items that are + + + +-- represented by two objects, representing the value in either 32 +-- or 64 bits. For those objects, the 32-bit value MUST be the low +-- order 32 bits of the 64-bit value. Also note that the 32-bit +-- counters must be included when the 64-bit counters are included. + +ipTrafficStats OBJECT IDENTIFIER ::= { ip 31 } + +ipSystemStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSystemStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing system wide, IP version specific + traffic statistics. This table and the ipIfStatsTable + contain similar objects whose difference is in their + granularity. Where this table contains system wide traffic + statistics, the ipIfStatsTable contains the same statistics + but counted on a per-interface basis." + ::= { ipTrafficStats 1 } + +ipSystemStatsEntry OBJECT-TYPE + SYNTAX IpSystemStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A statistics entry containing system-wide objects for a + particular IP version." + INDEX { ipSystemStatsIPVersion } + ::= { ipSystemStatsTable 1 } + +IpSystemStatsEntry ::= SEQUENCE { + ipSystemStatsIPVersion InetVersion, + ipSystemStatsInReceives Counter32, + ipSystemStatsHCInReceives Counter64, + ipSystemStatsInOctets Counter32, + ipSystemStatsHCInOctets Counter64, + ipSystemStatsInHdrErrors Counter32, + ipSystemStatsInNoRoutes Counter32, + ipSystemStatsInAddrErrors Counter32, + ipSystemStatsInUnknownProtos Counter32, + ipSystemStatsInTruncatedPkts Counter32, + ipSystemStatsInForwDatagrams Counter32, + ipSystemStatsHCInForwDatagrams Counter64, + ipSystemStatsReasmReqds Counter32, + ipSystemStatsReasmOKs Counter32, + ipSystemStatsReasmFails Counter32, + ipSystemStatsInDiscards Counter32, + ipSystemStatsInDelivers Counter32, + + + + ipSystemStatsHCInDelivers Counter64, + ipSystemStatsOutRequests Counter32, + ipSystemStatsHCOutRequests Counter64, + ipSystemStatsOutNoRoutes Counter32, + ipSystemStatsOutForwDatagrams Counter32, + ipSystemStatsHCOutForwDatagrams Counter64, + ipSystemStatsOutDiscards Counter32, + ipSystemStatsOutFragReqds Counter32, + ipSystemStatsOutFragOKs Counter32, + ipSystemStatsOutFragFails Counter32, + ipSystemStatsOutFragCreates Counter32, + ipSystemStatsOutTransmits Counter32, + ipSystemStatsHCOutTransmits Counter64, + ipSystemStatsOutOctets Counter32, + ipSystemStatsHCOutOctets Counter64, + ipSystemStatsInMcastPkts Counter32, + ipSystemStatsHCInMcastPkts Counter64, + ipSystemStatsInMcastOctets Counter32, + ipSystemStatsHCInMcastOctets Counter64, + ipSystemStatsOutMcastPkts Counter32, + ipSystemStatsHCOutMcastPkts Counter64, + ipSystemStatsOutMcastOctets Counter32, + ipSystemStatsHCOutMcastOctets Counter64, + ipSystemStatsInBcastPkts Counter32, + ipSystemStatsHCInBcastPkts Counter64, + ipSystemStatsOutBcastPkts Counter32, + ipSystemStatsHCOutBcastPkts Counter64, + ipSystemStatsDiscontinuityTime TimeStamp, + ipSystemStatsRefreshRate Unsigned32 + } + +ipSystemStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipSystemStatsEntry 1 } + +-- This object ID is reserved to allow the IDs for this table's objects +-- to align with the objects in the ipIfStatsTable. +-- ::= { ipSystemStatsEntry 2 } + +ipSystemStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of input IP datagrams received, including + those received in error. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 3 } + +ipSystemStatsHCInReceives OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. This object counts the same + datagrams as ipSystemStatsInReceives, but allows for larger + values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 4 } + +ipSystemStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. Octets from datagrams + counted in ipSystemStatsInReceives MUST be counted here. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 5 } + +ipSystemStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. This object counts the + same octets as ipSystemStatsInOctets, but allows for larger + + + + values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 6 } + +ipSystemStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded due to errors in + their IP headers, including version number mismatch, other + format errors, hop count exceeded, errors discovered in + processing their IP options, etc. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 7 } + +ipSystemStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because no route + could be found to transmit them to their destination. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 8 } + +ipSystemStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP 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). For entities + that are not IP routers and therefore do not forward + + + + datagrams, this counter includes datagrams discarded + because the destination address was not a local address. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 9 } + +ipSystemStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed IP datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 10 } + +ipSystemStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the + datagram frame didn't carry enough data. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 11 } + +ipSystemStatsInForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. In entities that do not act as IP routers, + this counter will include only those datagrams that were + Source-Routed via this entity, and the Source-Route + processing was successful. + + When tracking interface statistics, the counter of the + incoming interface is incremented for each datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 12 } + +ipSystemStatsHCInForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. This object counts the same packets as + ipSystemStatsInForwDatagrams, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 13 } + +ipSystemStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP fragments received that needed to be + reassembled at this interface. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 14 } + +ipSystemStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams successfully reassembled. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 15 } + +ipSystemStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 16 } + +ipSystemStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space). Note that + this counter does not include any datagrams discarded while + awaiting re-assembly. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 17 } + +ipSystemStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 18 } + +ipSystemStatsHCInDelivers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). This object counts the + same packets as ipSystemStatsInDelivers, but allows for + larger values. + + 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 + ipSystemStatsDiscontinuityTime." + + + + ::= { ipSystemStatsEntry 19 } + +ipSystemStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. Note that this counter does not include any + datagrams counted in ipSystemStatsOutForwDatagrams. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 20 } + +ipSystemStatsHCOutRequests OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. This object counts the same packets as + ipSystemStatsOutRequests, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 21 } + +ipSystemStatsOutNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally generated IP datagrams discarded + because no route could be found to transmit them to their + destination. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 22 } + + + +ipSystemStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. In entities + that do not act as IP routers, this counter will include + only those datagrams that were Source-Routed via this + entity, and the Source-Route processing was successful. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + forwarded datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 23 } + +ipSystemStatsHCOutForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. This object + counts the same packets as ipSystemStatsOutForwDatagrams, + but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 24 } + +ipSystemStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IP datagrams for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space). Note that this counter would include + + + + datagrams counted in ipSystemStatsOutForwDatagrams if any + such datagrams met this (discretionary) discard criterion. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 25 } + +ipSystemStatsOutFragReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that would require fragmentation + in order to be transmitted. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 26 } + +ipSystemStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been successfully + fragmented. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 27 } + +ipSystemStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of IP datagrams that have been discarded because + they needed to be fragmented but could not be. This + includes IPv4 packets that have the DF bit set and IPv6 + packets that are being forwarded and exceed the outgoing + link MTU. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for an unsuccessfully + fragmented datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 28 } + +ipSystemStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have been + generated as a result of IP fragmentation. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 29 } + +ipSystemStatsOutTransmits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This includes + datagrams generated locally and those forwarded by this + entity. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 30 } + +ipSystemStatsHCOutTransmits OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This object counts + the same datagrams as ipSystemStatsOutTransmits, but allows + for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 31 } + +ipSystemStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. Octets from datagrams + counted in ipSystemStatsOutTransmits MUST be counted here. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 32 } + +ipSystemStatsHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. This objects counts the same + octets as ipSystemStatsOutOctets, but allows for larger + values. + + 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 + + + + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 33 } + +ipSystemStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 34 } + +ipSystemStatsHCInMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. This object + counts the same datagrams as ipSystemStatsInMcastPkts but + allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 35 } + +ipSystemStatsInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. Octets from datagrams counted in + ipSystemStatsInMcastPkts MUST be counted here. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 36 } + +ipSystemStatsHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. This object counts the same octets as + ipSystemStatsInMcastOctets, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 37 } + +ipSystemStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 38 } + +ipSystemStatsHCOutMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. This + object counts the same datagrams as + ipSystemStatsOutMcastPkts, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 39 } + +ipSystemStatsOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. Octets from datagrams counted in + + + + ipSystemStatsOutMcastPkts MUST be counted here. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 40 } + +ipSystemStatsHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. This object counts the same octets as + ipSystemStatsOutMcastOctets, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 41 } + +ipSystemStatsInBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 42 } + +ipSystemStatsHCInBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. This object + counts the same datagrams as ipSystemStatsInBcastPkts but + allows for larger values. + + 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 + + + + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 43 } + +ipSystemStatsOutBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 44 } + +ipSystemStatsHCOutBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. This + object counts the same datagrams as + ipSystemStatsOutBcastPkts, but allows for larger values. + + 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 + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 45 } + +ipSystemStatsDiscontinuityTime 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 entry's counters suffered a + discontinuity. + + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipSystemStatsEntry 46 } + +ipSystemStatsRefreshRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milli-seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum reasonable polling interval for this entry. + This object provides an indication of the minimum amount of + time required to update the counters in this entry." + ::= { ipSystemStatsEntry 47 } + +ipIfStatsTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipIfStatsTable was added or deleted. + + If new objects are added to the ipIfStatsTable that require + the ipIfStatsTableLastChange to be updated when they are + modified, they must specify that requirement in their + description clause." + ::= { ipTrafficStats 2 } + +ipIfStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpIfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface traffic statistics. This + table and the ipSystemStatsTable contain similar objects + whose difference is in their granularity. Where this table + contains per-interface statistics, the ipSystemStatsTable + contains the same statistics, but counted on a system wide + basis." + ::= { ipTrafficStats 3 } + +ipIfStatsEntry OBJECT-TYPE + SYNTAX IpIfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface statistics entry containing objects for a + particular interface and version of IP." + INDEX { ipIfStatsIPVersion, ipIfStatsIfIndex } + ::= { ipIfStatsTable 1 } + +IpIfStatsEntry ::= SEQUENCE { + ipIfStatsIPVersion InetVersion, + ipIfStatsIfIndex InterfaceIndex, + + + + ipIfStatsInReceives Counter32, + ipIfStatsHCInReceives Counter64, + ipIfStatsInOctets Counter32, + ipIfStatsHCInOctets Counter64, + ipIfStatsInHdrErrors Counter32, + ipIfStatsInNoRoutes Counter32, + ipIfStatsInAddrErrors Counter32, + ipIfStatsInUnknownProtos Counter32, + ipIfStatsInTruncatedPkts Counter32, + ipIfStatsInForwDatagrams Counter32, + ipIfStatsHCInForwDatagrams Counter64, + ipIfStatsReasmReqds Counter32, + ipIfStatsReasmOKs Counter32, + ipIfStatsReasmFails Counter32, + ipIfStatsInDiscards Counter32, + ipIfStatsInDelivers Counter32, + ipIfStatsHCInDelivers Counter64, + ipIfStatsOutRequests Counter32, + ipIfStatsHCOutRequests Counter64, + ipIfStatsOutForwDatagrams Counter32, + ipIfStatsHCOutForwDatagrams Counter64, + ipIfStatsOutDiscards Counter32, + ipIfStatsOutFragReqds Counter32, + ipIfStatsOutFragOKs Counter32, + ipIfStatsOutFragFails Counter32, + ipIfStatsOutFragCreates Counter32, + ipIfStatsOutTransmits Counter32, + ipIfStatsHCOutTransmits Counter64, + ipIfStatsOutOctets Counter32, + ipIfStatsHCOutOctets Counter64, + ipIfStatsInMcastPkts Counter32, + ipIfStatsHCInMcastPkts Counter64, + ipIfStatsInMcastOctets Counter32, + ipIfStatsHCInMcastOctets Counter64, + ipIfStatsOutMcastPkts Counter32, + ipIfStatsHCOutMcastPkts Counter64, + ipIfStatsOutMcastOctets Counter32, + ipIfStatsHCOutMcastOctets Counter64, + ipIfStatsInBcastPkts Counter32, + ipIfStatsHCInBcastPkts Counter64, + ipIfStatsOutBcastPkts Counter32, + ipIfStatsHCOutBcastPkts Counter64, + ipIfStatsDiscontinuityTime TimeStamp, + ipIfStatsRefreshRate Unsigned32 + } + +ipIfStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipIfStatsEntry 1 } + +ipIfStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipIfStatsEntry 2 } + +ipIfStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 3 } + +ipIfStatsHCInReceives OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. This object counts the same + datagrams as ipIfStatsInReceives, but allows for larger + values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 4 } + +ipIfStatsInOctets OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. Octets from datagrams + counted in ipIfStatsInReceives MUST be counted here. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 5 } + +ipIfStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. This object counts the + same octets as ipIfStatsInOctets, but allows for larger + values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 6 } + +ipIfStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded due to errors in + their IP headers, including version number mismatch, other + format errors, hop count exceeded, errors discovered in + processing their IP options, etc. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 7 } + +ipIfStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because no route + could be found to transmit them to their destination. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 8 } + +ipIfStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP 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). For entities that + are not IP routers and therefore do not forward datagrams, + this counter includes datagrams discarded because the + destination address was not a local address. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 9 } + +ipIfStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed IP datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + 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 + + + + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 10 } + +ipIfStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the + datagram frame didn't carry enough data. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 11 } + +ipIfStatsInForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. In entities that do not act as IP routers, + this counter will include only those datagrams that were + Source-Routed via this entity, and the Source-Route + processing was successful. + + When tracking interface statistics, the counter of the + incoming interface is incremented for each datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 12 } + +ipIfStatsHCInForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. This object counts the same packets as + + + + ipIfStatsInForwDatagrams, but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 13 } + +ipIfStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP fragments received that needed to be + reassembled at this interface. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 14 } + +ipIfStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams successfully reassembled. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 15 } + +ipIfStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + 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. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 16 } + +ipIfStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space). Note that + this counter does not include any datagrams discarded while + awaiting re-assembly. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 17 } + +ipIfStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + + + + input interface for some of the datagrams. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 18 } + +ipIfStatsHCInDelivers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). This object counts the + same packets as ipIfStatsInDelivers, but allows for larger + values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 19 } + +ipIfStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. Note that this counter does not include any + datagrams counted in ipIfStatsOutForwDatagrams. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 20 } + +ipIfStatsHCOutRequests OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. This object counts the same packets as + + + + ipIfStatsOutRequests, but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 21 } + +-- This object ID is reserved to allow the IDs for this table's objects +-- to align with the objects in the ipSystemStatsTable. +-- ::= {ipIfStatsEntry 22} + +ipIfStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. In entities + that do not act as IP routers, this counter will include + only those datagrams that were Source-Routed via this + entity, and the Source-Route processing was successful. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + forwarded datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 23 } + +ipIfStatsHCOutForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. This object + counts the same packets as ipIfStatsOutForwDatagrams, but + allows for larger values. + + 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 + + + + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 24 } + +ipIfStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IP datagrams for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space). Note that this counter would include + datagrams counted in ipIfStatsOutForwDatagrams if any such + datagrams met this (discretionary) discard criterion. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 25 } + +ipIfStatsOutFragReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that would require fragmentation + in order to be transmitted. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 26 } + +ipIfStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been successfully + fragmented. + + When tracking interface statistics, the counter of the + + + + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 27 } + +ipIfStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been discarded because + they needed to be fragmented but could not be. This + includes IPv4 packets that have the DF bit set and IPv6 + packets that are being forwarded and exceed the outgoing + link MTU. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for an unsuccessfully + fragmented datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 28 } + +ipIfStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have been + generated as a result of IP fragmentation. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 29 } + + + + +ipIfStatsOutTransmits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This includes + datagrams generated locally and those forwarded by this + entity. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 30 } + +ipIfStatsHCOutTransmits OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This object counts + the same datagrams as ipIfStatsOutTransmits, but allows for + larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 31 } + +ipIfStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. Octets from datagrams + counted in ipIfStatsOutTransmits MUST be counted here. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 32 } + +ipIfStatsHCOutOctets OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. This objects counts the same + octets as ipIfStatsOutOctets, but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 33 } + +ipIfStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 34 } + +ipIfStatsHCInMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. This object + counts the same datagrams as ipIfStatsInMcastPkts, but + allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 35 } + +ipIfStatsInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + + + + datagrams. Octets from datagrams counted in + ipIfStatsInMcastPkts MUST be counted here. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 36 } + +ipIfStatsHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. This object counts the same octets as + ipIfStatsInMcastOctets, but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 37 } + +ipIfStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 38 } + +ipIfStatsHCOutMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. This + object counts the same datagrams as ipIfStatsOutMcastPkts, + but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 39 } + +ipIfStatsOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. Octets from datagrams counted in + ipIfStatsOutMcastPkts MUST be counted here. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 40 } + +ipIfStatsHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. This object counts the same octets as + ipIfStatsOutMcastOctets, but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 41 } + +ipIfStatsInBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 42 } + +ipIfStatsHCInBcastPkts OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. This object + counts the same datagrams as ipIfStatsInBcastPkts, but + allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 43 } + +ipIfStatsOutBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 44 } + +ipIfStatsHCOutBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. This + object counts the same datagrams as ipIfStatsOutBcastPkts, + but allows for larger values. + + 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 + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 45 } + +ipIfStatsDiscontinuityTime 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 entry's counters suffered a + discontinuity. + + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipIfStatsEntry 46 } + +ipIfStatsRefreshRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum reasonable polling interval for this entry. + This object provides an indication of the minimum amount of + time required to update the counters in this entry." + ::= { ipIfStatsEntry 47 } + +-- +-- Internet Address Prefix table +-- + +ipAddressPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddressPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the user to determine the source of an IP + address or set of IP addresses, and allows other tables to + share the information via pointer rather than by copying. + + For example, when the node configures both a unicast and + anycast address for a prefix, the ipAddressPrefix objects + for those addresses will point to a single row in this + table. + + This table primarily provides support for IPv6 prefixes, and + several of the objects are less meaningful for IPv4. The + table continues to allow IPv4 addresses to allow future + flexibility. In order to promote a common configuration, + this document includes suggestions for default values for + IPv4 prefixes. Each of these values may be overridden if an + object is meaningful to the node. + + All prefixes used by this entity should be included in this + table independent of how the entity learned the prefix. + (This table isn't limited to prefixes learned from router + + + + advertisements.)" + ::= { ip 32 } + +ipAddressPrefixEntry OBJECT-TYPE + SYNTAX IpAddressPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ipAddressPrefixTable." + INDEX { ipAddressPrefixIfIndex, ipAddressPrefixType, + ipAddressPrefixPrefix, ipAddressPrefixLength } + ::= { ipAddressPrefixTable 1 } + +IpAddressPrefixEntry ::= SEQUENCE { + ipAddressPrefixIfIndex InterfaceIndex, + ipAddressPrefixType InetAddressType, + ipAddressPrefixPrefix InetAddress, + ipAddressPrefixLength InetAddressPrefixLength, + ipAddressPrefixOrigin IpAddressPrefixOriginTC, + ipAddressPrefixOnLinkFlag TruthValue, + ipAddressPrefixAutonomousFlag TruthValue, + ipAddressPrefixAdvPreferredLifetime Unsigned32, + ipAddressPrefixAdvValidLifetime Unsigned32 + } + +ipAddressPrefixIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface on + which this prefix is configured. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipAddressPrefixEntry 1 } + +ipAddressPrefixType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ipAddressPrefix." + ::= { ipAddressPrefixEntry 2 } + +ipAddressPrefixPrefix OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The address prefix. The address type of this object is + specified in ipAddressPrefixType. The length of this object + is the standard length for objects of that type (4 or 16 + bytes). Any bits after ipAddressPrefixLength must be zero. + + Implementors need to be aware that, if the size of + ipAddressPrefixPrefix exceeds 114 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipAddressPrefixEntry 3 } + +ipAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prefix length associated with this prefix. + + The value 0 has no special meaning for this object. It + simply refers to address '::/0'." + ::= { ipAddressPrefixEntry 4 } + +ipAddressPrefixOrigin OBJECT-TYPE + SYNTAX IpAddressPrefixOriginTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The origin of this prefix." + ::= { ipAddressPrefixEntry 5 } + +ipAddressPrefixOnLinkFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this prefix can be + used for on-link determination; otherwise, the value is + 'false(2)'. + + The default for IPv4 prefixes is 'true(1)'." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 6 } + +ipAddressPrefixAutonomousFlag OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Autonomous address configuration flag. When true(1), + indicates that this prefix can be used for autonomous + address configuration (i.e., can be used to form a local + interface address). If false(2), it is not used to auto- + configure a local interface address. + + The default for IPv4 prefixes is 'false(2)'." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 7 } + +ipAddressPrefixAdvPreferredLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this prefix + will continue to be preferred, i.e., time until deprecation. + + A value of 4,294,967,295 represents infinity. + + The address generated from a deprecated prefix should no + longer be used as a source address in new communications, + but packets received on such an interface are processed as + expected. + + The default for IPv4 prefixes is 4,294,967,295 (infinity)." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 8 } + +ipAddressPrefixAdvValidLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this prefix + will continue to be valid, i.e., time until invalidation. A + value of 4,294,967,295 represents infinity. + + The address generated from an invalidated prefix should not + appear as the destination or source address of a packet. + + + + + The default for IPv4 prefixes is 4,294,967,295 (infinity)." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 9 } + +-- +-- Internet Address Table +-- + +ipAddressSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating SNMP managers to + coordinate their use of the set operation in creating or + modifying rows within this table. + + In order to use this lock to coordinate the use of set + operations, managers should first retrieve + ipAddressTableSpinLock. They should then determine the + appropriate row to create or modify. Finally, they should + issue the appropriate set command, including the retrieved + value of ipAddressSpinLock. If another manager has altered + the table in the meantime, then the value of + ipAddressSpinLock will have changed, and the creation will + fail as it will be specifying an incorrect value for + ipAddressSpinLock. It is suggested, but not required, that + the ipAddressSpinLock be the first var bind for each set of + objects representing a 'row' in a PDU." + ::= { ip 33 } + +ipAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains addressing information relevant to the + entity's interfaces. + + This table does not contain multicast address information. + Tables for such information should be contained in multicast + specific MIBs, such as RFC 3019. + + While this table is writable, the user will note that + several objects, such as ipAddressOrigin, are not. The + intention in allowing a user to write to this table is to + allow them to add or remove any entry that isn't + + + + permanent. The user should be allowed to modify objects + and entries when that would not cause inconsistencies + within the table. Allowing write access to objects, such + as ipAddressOrigin, could allow a user to insert an entry + and then label it incorrectly. + + Note well: When including IPv6 link-local addresses in this + table, the entry must use an InetAddressType of 'ipv6z' in + order to differentiate between the possible interfaces." + ::= { ip 34 } + +ipAddressEntry OBJECT-TYPE + SYNTAX IpAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address mapping for a particular interface." + INDEX { ipAddressAddrType, ipAddressAddr } + ::= { ipAddressTable 1 } + +IpAddressEntry ::= SEQUENCE { + ipAddressAddrType InetAddressType, + ipAddressAddr InetAddress, + ipAddressIfIndex InterfaceIndex, + ipAddressType INTEGER, + ipAddressPrefix RowPointer, + ipAddressOrigin IpAddressOriginTC, + ipAddressStatus IpAddressStatusTC, + ipAddressCreated TimeStamp, + ipAddressLastChanged TimeStamp, + ipAddressRowStatus RowStatus, + ipAddressStorageType StorageType + } + +ipAddressAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ipAddressAddr." + ::= { ipAddressEntry 1 } + +ipAddressAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address to which this entry's addressing information + + + + pertains. The address type of this object is specified in + ipAddressAddrType. + + Implementors need to be aware that if the size of + ipAddressAddr exceeds 116 octets, then OIDS of instances of + columns in this row will have more than 128 sub-identifiers + and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { ipAddressEntry 2 } + +ipAddressIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipAddressEntry 3 } + +ipAddressType OBJECT-TYPE + SYNTAX INTEGER { + unicast(1), + anycast(2), + broadcast(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of address. broadcast(3) is not a valid value for + IPv6 addresses (RFC 3513)." + DEFVAL { unicast } + ::= { ipAddressEntry 4 } + +ipAddressPrefix OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row in the prefix table to which this + address belongs. May be { 0 0 } if there is no such row." + DEFVAL { zeroDotZero } + ::= { ipAddressEntry 5 } + +ipAddressOrigin OBJECT-TYPE + SYNTAX IpAddressOriginTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The origin of the address." + ::= { ipAddressEntry 6 } + +ipAddressStatus OBJECT-TYPE + SYNTAX IpAddressStatusTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the address, describing if the address can be + used for communication. + + In the absence of other information, an IPv4 address is + always preferred(1)." + DEFVAL { preferred } + ::= { ipAddressEntry 7 } + +ipAddressCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was created. + If this entry was created prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipAddressEntry 8 } + +ipAddressLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + updated. If this entry was updated prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipAddressEntry 9 } + +ipAddressRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + + + + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified. + + A conceptual row can not be made active until the + ipAddressIfIndex has been set to a valid index." + ::= { ipAddressEntry 10 } + +ipAddressStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. If this object + has a value of 'permanent', then no other objects are + required to be able to be modified." + DEFVAL { volatile } + ::= { ipAddressEntry 11 } + +-- +-- the Internet Address Translation table +-- + +ipNetToPhysicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpNetToPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address Translation table used for mapping from IP + addresses to physical addresses. + + The Address Translation tables contain the IP address 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. + + While many protocols may be used to populate this table, ARP + and Neighbor Discovery are the most likely + options." + REFERENCE "RFC 826 and RFC 2461" + ::= { ip 35 } + +ipNetToPhysicalEntry OBJECT-TYPE + SYNTAX IpNetToPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Each entry contains one IP address to `physical' address + equivalence." + INDEX { ipNetToPhysicalIfIndex, + ipNetToPhysicalNetAddressType, + ipNetToPhysicalNetAddress } + ::= { ipNetToPhysicalTable 1 } + +IpNetToPhysicalEntry ::= SEQUENCE { + ipNetToPhysicalIfIndex InterfaceIndex, + ipNetToPhysicalNetAddressType InetAddressType, + ipNetToPhysicalNetAddress InetAddress, + ipNetToPhysicalPhysAddress PhysAddress, + ipNetToPhysicalLastUpdated TimeStamp, + ipNetToPhysicalType INTEGER, + ipNetToPhysicalState INTEGER, + ipNetToPhysicalRowStatus RowStatus + } + +ipNetToPhysicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipNetToPhysicalEntry 1 } + +ipNetToPhysicalNetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of ipNetToPhysicalNetAddress." + ::= { ipNetToPhysicalEntry 2 } + +ipNetToPhysicalNetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address corresponding to the media-dependent + `physical' address. The address type of this object is + specified in ipNetToPhysicalAddressType. + + Implementors need to be aware that if the size of + + + + ipNetToPhysicalNetAddress exceeds 115 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipNetToPhysicalEntry 3 } + +ipNetToPhysicalPhysAddress OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The media-dependent `physical' address. + + As the entries in this table are typically not persistent + when this object is written the entity SHOULD NOT save the + change to non-volatile storage." + ::= { ipNetToPhysicalEntry 4 } + +ipNetToPhysicalLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + updated. If this entry was updated prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipNetToPhysicalEntry 5 } + +ipNetToPhysicalType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4), + local(5) -- local interface + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has the effect + of invalidating the corresponding entry in the + ipNetToPhysicalTable. That is, it effectively dis- + associates 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 ipNetToPhysicalType + object. + + The 'dynamic(3)' type indicates that the IP address to + physical addresses mapping has been dynamically resolved + using e.g., IPv4 ARP or the IPv6 Neighbor Discovery + protocol. + + The 'static(4)' type indicates that the mapping has been + statically configured. Both of these refer to entries that + provide mappings for other entities addresses. + + The 'local(5)' type indicates that the mapping is provided + for an entity's own interface address. + + As the entries in this table are typically not persistent + when this object is written the entity SHOULD NOT save the + change to non-volatile storage." + DEFVAL { static } + ::= { ipNetToPhysicalEntry 6 } + +ipNetToPhysicalState OBJECT-TYPE + SYNTAX INTEGER { + reachable(1), -- confirmed reachability + + stale(2), -- unconfirmed reachability + + delay(3), -- waiting for reachability + -- confirmation before entering + -- the probe state + + probe(4), -- actively probing + + invalid(5), -- an invalidated mapping + + unknown(6), -- state can not be determined + -- for some reason. + + incomplete(7) -- address resolution is being + -- performed. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The Neighbor Unreachability Detection state for the + interface when the address mapping in this entry is used. + If Neighbor Unreachability Detection is not in use (e.g. for + IPv4), this object is always unknown(6)." + REFERENCE "RFC 2461" + ::= { ipNetToPhysicalEntry 7 } + +ipNetToPhysicalRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified. + + A conceptual row can not be made active until the + ipNetToPhysicalPhysAddress object has been set. + + Note that if the ipNetToPhysicalType is set to 'invalid', + the managed node may delete the entry independent of the + state of this object." + ::= { ipNetToPhysicalEntry 8 } + +-- +-- The IPv6 Scope Zone Index Table. +-- + +ipv6ScopeZoneIndexTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6ScopeZoneIndexEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table used to describe IPv6 unicast and multicast scope + zones. + + For those objects that have names rather than numbers, the + names were chosen to coincide with the names used in the + IPv6 address architecture document. " + REFERENCE "Section 2.7 of RFC 4291" + ::= { ip 36 } + +ipv6ScopeZoneIndexEntry OBJECT-TYPE + SYNTAX Ipv6ScopeZoneIndexEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains the list of scope identifiers on a given + interface." + INDEX { ipv6ScopeZoneIndexIfIndex } + ::= { ipv6ScopeZoneIndexTable 1 } + +Ipv6ScopeZoneIndexEntry ::= SEQUENCE { + ipv6ScopeZoneIndexIfIndex InterfaceIndex, + ipv6ScopeZoneIndexLinkLocal InetZoneIndex, + ipv6ScopeZoneIndex3 InetZoneIndex, + ipv6ScopeZoneIndexAdminLocal InetZoneIndex, + ipv6ScopeZoneIndexSiteLocal InetZoneIndex, + ipv6ScopeZoneIndex6 InetZoneIndex, + ipv6ScopeZoneIndex7 InetZoneIndex, + ipv6ScopeZoneIndexOrganizationLocal InetZoneIndex, + ipv6ScopeZoneIndex9 InetZoneIndex, + ipv6ScopeZoneIndexA InetZoneIndex, + ipv6ScopeZoneIndexB InetZoneIndex, + ipv6ScopeZoneIndexC InetZoneIndex, + ipv6ScopeZoneIndexD InetZoneIndex + } + +ipv6ScopeZoneIndexIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which these scopes belong. The interface identified by a + particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv6ScopeZoneIndexEntry 1 } + +ipv6ScopeZoneIndexLinkLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the link-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 2 } + +ipv6ScopeZoneIndex3 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The zone index for scope 3 on this interface." + ::= { ipv6ScopeZoneIndexEntry 3 } + +ipv6ScopeZoneIndexAdminLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the admin-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 4 } + +ipv6ScopeZoneIndexSiteLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the site-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 5 } + +ipv6ScopeZoneIndex6 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope 6 on this interface." + ::= { ipv6ScopeZoneIndexEntry 6 } + +ipv6ScopeZoneIndex7 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope 7 on this interface." + ::= { ipv6ScopeZoneIndexEntry 7 } + +ipv6ScopeZoneIndexOrganizationLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the organization-local scope on this + interface." + ::= { ipv6ScopeZoneIndexEntry 8 } + +ipv6ScopeZoneIndex9 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The zone index for scope 9 on this interface." + ::= { ipv6ScopeZoneIndexEntry 9 } + +ipv6ScopeZoneIndexA OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope A on this interface." + ::= { ipv6ScopeZoneIndexEntry 10 } + +ipv6ScopeZoneIndexB OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope B on this interface." + ::= { ipv6ScopeZoneIndexEntry 11 } + +ipv6ScopeZoneIndexC OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope C on this interface." + ::= { ipv6ScopeZoneIndexEntry 12 } + +ipv6ScopeZoneIndexD OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope D on this interface." + ::= { ipv6ScopeZoneIndexEntry 13 } + +-- +-- The Default Router Table +-- This table simply lists the default routers; for more information +-- about routing tables, see the routing MIBs +-- + +ipDefaultRouterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpDefaultRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table used to describe the default routers known to this + + + + entity." + ::= { ip 37 } + +ipDefaultRouterEntry OBJECT-TYPE + SYNTAX IpDefaultRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a default router known + to this entity." + INDEX {ipDefaultRouterAddressType, ipDefaultRouterAddress, + ipDefaultRouterIfIndex} + ::= { ipDefaultRouterTable 1 } + +IpDefaultRouterEntry ::= SEQUENCE { + ipDefaultRouterAddressType InetAddressType, + ipDefaultRouterAddress InetAddress, + ipDefaultRouterIfIndex InterfaceIndex, + ipDefaultRouterLifetime Unsigned32, + ipDefaultRouterPreference INTEGER + } + +ipDefaultRouterAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for this row." + ::= { ipDefaultRouterEntry 1 } + +ipDefaultRouterAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the default router represented by this + row. The address type of this object is specified in + ipDefaultRouterAddressType. + + Implementers need to be aware that if the size of + ipDefaultRouterAddress exceeds 115 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipDefaultRouterEntry 2 } + +ipDefaultRouterIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface by + which the router can be reached. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipDefaultRouterEntry 3 } + +ipDefaultRouterLifetime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this router + will continue to be useful as a default router. A value of + zero indicates that it is no longer useful as a default + router. It is left to the implementer of the MIB as to + whether a router with a lifetime of zero is removed from the + list. + + For IPv6, this value should be extracted from the router + advertisement messages." + REFERENCE "For IPv6 RFC 2462 sections 4.2 and 6.3.4" + ::= { ipDefaultRouterEntry 4 } + +ipDefaultRouterPreference OBJECT-TYPE + SYNTAX INTEGER { + reserved (-2), + low (-1), + medium (0), + high (1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of preference given to this router as a + default router as described in he Default Router + Preferences document. Treating the value as a + 2 bit signed integer allows for simple arithmetic + comparisons. + + For IPv4 routers or IPv6 routers that are not using the + updated router advertisement format, this object is set to + medium (0)." + REFERENCE "RFC 4291, section 2.1" + ::= { ipDefaultRouterEntry 5 } + + + +-- +-- Configuration information for constructing router advertisements +-- + +ipv6RouterAdvertSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating SNMP managers to + coordinate their use of the set operation in creating or + modifying rows within this table. + + In order to use this lock to coordinate the use of set + operations, managers should first retrieve + ipv6RouterAdvertSpinLock. They should then determine the + appropriate row to create or modify. Finally, they should + issue the appropriate set command including the retrieved + value of ipv6RouterAdvertSpinLock. If another manager has + altered the table in the meantime, then the value of + ipv6RouterAdvertSpinLock will have changed and the creation + will fail as it will be specifying an incorrect value for + ipv6RouterAdvertSpinLock. It is suggested, but not + required, that the ipv6RouterAdvertSpinLock be the first var + bind for each set of objects representing a 'row' in a PDU." + ::= { ip 38 } + +ipv6RouterAdvertTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6RouterAdvertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information used to construct router + advertisements." + ::= { ip 39 } + +ipv6RouterAdvertEntry OBJECT-TYPE + SYNTAX Ipv6RouterAdvertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information used to construct router + advertisements. + + Information in this table is persistent, and when this + object is written, the entity SHOULD save the change to + non-volatile storage." + INDEX { ipv6RouterAdvertIfIndex } + + + + ::= { ipv6RouterAdvertTable 1 } + +Ipv6RouterAdvertEntry ::= SEQUENCE { + ipv6RouterAdvertIfIndex InterfaceIndex, + ipv6RouterAdvertSendAdverts TruthValue, + ipv6RouterAdvertMaxInterval Unsigned32, + ipv6RouterAdvertMinInterval Unsigned32, + ipv6RouterAdvertManagedFlag TruthValue, + ipv6RouterAdvertOtherConfigFlag TruthValue, + ipv6RouterAdvertLinkMTU Unsigned32, + ipv6RouterAdvertReachableTime Unsigned32, + ipv6RouterAdvertRetransmitTime Unsigned32, + ipv6RouterAdvertCurHopLimit Unsigned32, + ipv6RouterAdvertDefaultLifetime Unsigned32, + ipv6RouterAdvertRowStatus RowStatus + } + +ipv6RouterAdvertIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface on + which router advertisements constructed with this + information will be transmitted. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv6RouterAdvertEntry 1 } + +ipv6RouterAdvertSendAdverts OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag indicating whether the router sends periodic + router advertisements and responds to router solicitations + on this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 2 } + +ipv6RouterAdvertMaxInterval OBJECT-TYPE + SYNTAX Unsigned32 (4..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time allowed between sending unsolicited router + + + + advertisements from this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 600 } + ::= { ipv6RouterAdvertEntry 3 } + +ipv6RouterAdvertMinInterval OBJECT-TYPE + SYNTAX Unsigned32 (3..1350) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum time allowed between sending unsolicited router + advertisements from this interface. + + The default is 0.33 * ipv6RouterAdvertMaxInterval, however, + in the case of a low value for ipv6RouterAdvertMaxInterval, + the minimum value for this object is restricted to 3." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 4 } + +ipv6RouterAdvertManagedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The true/false value to be placed into the 'managed address + configuration' flag field in router advertisements sent from + this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 5 } + +ipv6RouterAdvertOtherConfigFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The true/false value to be placed into the 'other stateful + configuration' flag field in router advertisements sent from + this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 6 } + +ipv6RouterAdvertLinkMTU OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The value to be placed in MTU options sent by the router on + this interface. + + A value of zero indicates that no MTU options are sent." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 7 } + +ipv6RouterAdvertReachableTime OBJECT-TYPE + SYNTAX Unsigned32 (0..3600000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the reachable time field in router + advertisement messages sent from this interface. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for reachable + time." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 8 } + +ipv6RouterAdvertRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the retransmit timer field in + router advertisements sent from this interface. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for retrans + time." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 9 } + +ipv6RouterAdvertCurHopLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default value to be placed in the current hop limit + field in router advertisements sent from this interface. + + + + The value should be set to the current diameter of the + Internet. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for curHopLimit. + + The default should be set to the value specified in the IANA + web pages (www.iana.org) at the time of implementation." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 10 } + +ipv6RouterAdvertDefaultLifetime OBJECT-TYPE + SYNTAX Unsigned32 (0|4..9000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the router lifetime field of + router advertisements sent from this interface. This value + MUST be either 0 or between ipv6RouterAdvertMaxInterval and + 9000 seconds. + + A value of zero indicates that the router is not to be used + as a default router. + + The default is 3 * ipv6RouterAdvertMaxInterval." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 11 } + +ipv6RouterAdvertRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + As all objects in this conceptual row have default values, a + row can be created and made active by setting this object + appropriately. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ipv6RouterAdvertEntry 12 } + +-- + + + +-- ICMP section +-- + +icmp OBJECT IDENTIFIER ::= { mib-2 5 } + +-- +-- ICMP non-message-specific counters +-- + +-- These object IDs are reserved, as they were used in earlier +-- versions of the MIB module. In theory, OIDs are not assigned +-- until the specification is released as an RFC; however, as some +-- companies may have shipped code based on earlier versions of +-- the MIB, it seems best to reserve these OIDs. +-- ::= { icmp 27 } +-- ::= { icmp 28 } + +icmpStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IcmpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of generic system-wide ICMP counters." + ::= { icmp 29 } + +icmpStatsEntry OBJECT-TYPE + SYNTAX IcmpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the icmpStatsTable." + INDEX { icmpStatsIPVersion } + ::= { icmpStatsTable 1 } + +IcmpStatsEntry ::= SEQUENCE { + icmpStatsIPVersion InetVersion, + icmpStatsInMsgs Counter32, + icmpStatsInErrors Counter32, + icmpStatsOutMsgs Counter32, + icmpStatsOutErrors Counter32 + } + +icmpStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of the statistics." + + + + ::= { icmpStatsEntry 1 } + +icmpStatsInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages that the entity received. + Note that this counter includes all those counted by + icmpStatsInErrors." + ::= { icmpStatsEntry 2 } + +icmpStatsInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages that the entity received but + determined as having ICMP-specific errors (bad ICMP + checksums, bad length, etc.)." + ::= { icmpStatsEntry 3 } + +icmpStatsOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages that the entity attempted + to send. Note that this counter includes all those counted + by icmpStatsOutErrors." + ::= { icmpStatsEntry 4 } + +icmpStatsOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages that 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 that contribute to this counter's + value." + ::= { icmpStatsEntry 5 } + +-- +-- per-version, per-message type ICMP counters + + + +-- + +icmpMsgStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IcmpMsgStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of system-wide per-version, per-message type ICMP + counters." + ::= { icmp 30 } + +icmpMsgStatsEntry OBJECT-TYPE + SYNTAX IcmpMsgStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the icmpMsgStatsTable. + + The system should track each ICMP type value, even if that + ICMP type is not supported by the system. However, a + given row need not be instantiated unless a message of that + type has been processed, i.e., the row for + icmpMsgStatsType=X MAY be instantiated before but MUST be + instantiated after the first message with Type=X is + received or transmitted. After receiving or transmitting + any succeeding messages with Type=X, the relevant counter + must be incremented." + INDEX { icmpMsgStatsIPVersion, icmpMsgStatsType } + ::= { icmpMsgStatsTable 1 } + +IcmpMsgStatsEntry ::= SEQUENCE { + icmpMsgStatsIPVersion InetVersion, + icmpMsgStatsType Integer32, + icmpMsgStatsInPkts Counter32, + icmpMsgStatsOutPkts Counter32 + } + +icmpMsgStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of the statistics." + ::= { icmpMsgStatsEntry 1 } + +icmpMsgStatsType OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The ICMP type field of the message type being counted by + this row. + + Note that ICMP message types are scoped by the address type + in use." + REFERENCE "http://www.iana.org/assignments/icmp-parameters and + http://www.iana.org/assignments/icmpv6-parameters" + ::= { icmpMsgStatsEntry 2 } + +icmpMsgStatsInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input packets for this AF and type." + ::= { icmpMsgStatsEntry 3 } + +icmpMsgStatsOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output packets for this AF and type." + ::= { icmpMsgStatsEntry 4 } +-- +-- conformance information +-- + +ipMIBConformance OBJECT IDENTIFIER ::= { ipMIB 2 } + +ipMIBCompliances OBJECT IDENTIFIER ::= { ipMIBConformance 1 } +ipMIBGroups OBJECT IDENTIFIER ::= { ipMIBConformance 2 } + +-- compliance statements +ipMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement IP - + either IPv4 or IPv6. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, but + for which we have the following compliance requirements, + expressed in OBJECT clause form in this description + clause: + + + + + -- OBJECT ipSystemStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT ipIfStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT icmpStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT icmpMsgStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT ipAddressPrefixType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only global IPv4 and + -- IPv6 address types. + -- + -- OBJECT ipAddressPrefixPrefix + -- SYNTAX InetAddress (Size(4 | 16)) + -- DESCRIPTION + -- This MIB requires support for only global IPv4 and + -- IPv6 addresses and so the size can be either 4 or + -- 16 bytes. + -- + -- OBJECT ipAddressAddrType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipAddressAddr + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + + + + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes. + -- + -- OBJECT ipNetToPhysicalNetAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipNetToPhysicalNetAddress + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes. + -- + -- OBJECT ipDefaultRouterAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipDefaultRouterAddress + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes." + + MODULE -- this module + + MANDATORY-GROUPS { ipSystemStatsGroup, ipAddressGroup, + ipNetToPhysicalGroup, ipDefaultRouterGroup, + icmpStatsGroup } + + GROUP ipSystemStatsHCOctetGroup + DESCRIPTION + "This group is mandatory for systems that have an aggregate + bandwidth of greater than 20MB. Including this group does + not allow an entity to neglect the 32 bit versions of these + objects." + + GROUP ipSystemStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for systems that have an aggregate + bandwidth of greater than 650MB. Including this group + + + + does not allow an entity to neglect the 32 bit versions of + these objects." + + GROUP ipIfStatsGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP ipIfStatsHCOctetGroup + DESCRIPTION + "This group is mandatory for systems that include the + ipIfStatsGroup and include links with bandwidths of greater + than 20MB. Including this group does not allow an entity to + neglect the 32 bit versions of these objects." + + GROUP ipIfStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for systems that include the + ipIfStatsGroup and include links with bandwidths of greater + than 650MB. Including this group does not allow an entity + to neglect the 32 bit versions of these objects." + + GROUP ipv4GeneralGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4IfGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4SystemStatsGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4SystemStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + that have an aggregate bandwidth of greater than 650MB. + Including this group does not allow an entity to neglect the + 32 bit versions of these objects." + + GROUP ipv4IfStatsGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + including the ipIfStatsGroup." + + GROUP ipv4IfStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + + + + including the ipIfStatsHCPacketGroup. Including this group + does not allow an entity to neglect the 32 bit versions of + these objects." + + GROUP ipv6GeneralGroup2 + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6IfGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipAddressPrefixGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6ScopeGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6RouterAdvertGroup + DESCRIPTION + "This group is mandatory for all IPv6 routers." + + GROUP ipLastChangeGroup + DESCRIPTION + "This group is optional for all agents." + + OBJECT ipv6IpForwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6IpDefaultHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv4InterfaceEnableStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6InterfaceEnableStatus + MIN-ACCESS read-only + + + + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6InterfaceForwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipAddressSpinLock + MIN-ACCESS not-accessible + DESCRIPTION + "An agent is not required to provide write access to this + object. However, if an agent provides write access to any + of the other objects in the ipAddressGroup, it SHOULD + provide write access to this object as well." + + OBJECT ipAddressIfIndex + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressStorageType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object. + + + + If an agent allows this object to be written or created, it + is not required to allow this object to be set to readOnly, + permanent, or nonVolatile." + + OBJECT ipNetToPhysicalPhysAddress + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipNetToPhysicalType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipv6RouterAdvertSpinLock + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object. However, if an agent provides write access to + any of the other objects in the ipv6RouterAdvertGroup, it + SHOULD provide write access to this object as well." + + OBJECT ipv6RouterAdvertSendAdverts + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertMaxInterval + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertMinInterval + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertManagedFlag + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + + + + OBJECT ipv6RouterAdvertOtherConfigFlag + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertLinkMTU + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertReachableTime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertRetransmitTime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertCurHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertDefaultLifetime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertRowStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + ::= { ipMIBCompliances 2 } + +-- units of conformance + +ipv4GeneralGroup OBJECT-GROUP + OBJECTS { ipForwarding, ipDefaultTTL, ipReasmTimeout } + + + + STATUS current + DESCRIPTION + "The group of IPv4-specific objects for basic management of + IPv4 entities." + ::= { ipMIBGroups 3 } + +ipv4IfGroup OBJECT-GROUP + OBJECTS { ipv4InterfaceReasmMaxSize, ipv4InterfaceEnableStatus, + ipv4InterfaceRetransmitTime } + STATUS current + DESCRIPTION + "The group of IPv4-specific objects for basic management of + IPv4 interfaces." + ::= { ipMIBGroups 4 } + +ipv6GeneralGroup2 OBJECT-GROUP + OBJECTS { ipv6IpForwarding, ipv6IpDefaultHopLimit } + STATUS current + DESCRIPTION + "The IPv6 group of objects providing for basic management of + IPv6 entities." + ::= { ipMIBGroups 5 } + +ipv6IfGroup OBJECT-GROUP + OBJECTS { ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier, + ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime, + ipv6InterfaceRetransmitTime, ipv6InterfaceForwarding } + STATUS current + DESCRIPTION + "The group of IPv6-specific objects for basic management of + IPv6 interfaces." + ::= { ipMIBGroups 6 } + +ipLastChangeGroup OBJECT-GROUP + OBJECTS { ipv4InterfaceTableLastChange, + ipv6InterfaceTableLastChange, + ipIfStatsTableLastChange } + STATUS current + DESCRIPTION + "The last change objects associated with this MIB. These + objects are optional for all agents. They SHOULD be + implemented on agents where it is possible to determine the + proper values. Where it is not possible to determine the + proper values, for example when the tables are split amongst + several sub-agents using AgentX, the agent MUST NOT + implement these objects to return an incorrect or static + value." + ::= { ipMIBGroups 7 } + + + +ipSystemStatsGroup OBJECT-GROUP + OBJECTS { ipSystemStatsInReceives, + ipSystemStatsInOctets, + ipSystemStatsInHdrErrors, + ipSystemStatsInNoRoutes, + ipSystemStatsInAddrErrors, + ipSystemStatsInUnknownProtos, + ipSystemStatsInTruncatedPkts, + ipSystemStatsInForwDatagrams, + ipSystemStatsReasmReqds, + ipSystemStatsReasmOKs, + ipSystemStatsReasmFails, + ipSystemStatsInDiscards, + ipSystemStatsInDelivers, + ipSystemStatsOutRequests, + ipSystemStatsOutNoRoutes, + ipSystemStatsOutForwDatagrams, + ipSystemStatsOutDiscards, + ipSystemStatsOutFragReqds, + ipSystemStatsOutFragOKs, + ipSystemStatsOutFragFails, + ipSystemStatsOutFragCreates, + ipSystemStatsOutTransmits, + ipSystemStatsOutOctets, + ipSystemStatsInMcastPkts, + ipSystemStatsInMcastOctets, + ipSystemStatsOutMcastPkts, + ipSystemStatsOutMcastOctets, + ipSystemStatsDiscontinuityTime, + ipSystemStatsRefreshRate } + STATUS current + DESCRIPTION + "IP system wide statistics." + ::= { ipMIBGroups 8 } + +ipv4SystemStatsGroup OBJECT-GROUP + OBJECTS { ipSystemStatsInBcastPkts, ipSystemStatsOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only system wide statistics." + ::= { ipMIBGroups 9 } + +ipSystemStatsHCOctetGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInOctets, + ipSystemStatsHCOutOctets, + ipSystemStatsHCInMcastOctets, + ipSystemStatsHCOutMcastOctets +} + + + + STATUS current + DESCRIPTION + "IP system wide statistics for systems that may overflow the + standard octet counters within 1 hour." + ::= { ipMIBGroups 10 } + +ipSystemStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInReceives, + ipSystemStatsHCInForwDatagrams, + ipSystemStatsHCInDelivers, + ipSystemStatsHCOutRequests, + ipSystemStatsHCOutForwDatagrams, + ipSystemStatsHCOutTransmits, + ipSystemStatsHCInMcastPkts, + ipSystemStatsHCOutMcastPkts +} + STATUS current + DESCRIPTION + "IP system wide statistics for systems that may overflow the + standard packet counters within 1 hour." + ::= { ipMIBGroups 11 } + +ipv4SystemStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInBcastPkts, + ipSystemStatsHCOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only system wide statistics for systems that may + overflow the standard packet counters within 1 hour." + ::= { ipMIBGroups 12 } + +ipIfStatsGroup OBJECT-GROUP + OBJECTS { ipIfStatsInReceives, ipIfStatsInOctets, + ipIfStatsInHdrErrors, ipIfStatsInNoRoutes, + ipIfStatsInAddrErrors, ipIfStatsInUnknownProtos, + ipIfStatsInTruncatedPkts, ipIfStatsInForwDatagrams, + ipIfStatsReasmReqds, ipIfStatsReasmOKs, + ipIfStatsReasmFails, ipIfStatsInDiscards, + ipIfStatsInDelivers, ipIfStatsOutRequests, + ipIfStatsOutForwDatagrams, ipIfStatsOutDiscards, + ipIfStatsOutFragReqds, ipIfStatsOutFragOKs, + ipIfStatsOutFragFails, ipIfStatsOutFragCreates, + ipIfStatsOutTransmits, ipIfStatsOutOctets, + ipIfStatsInMcastPkts, ipIfStatsInMcastOctets, + ipIfStatsOutMcastPkts, ipIfStatsOutMcastOctets, + ipIfStatsDiscontinuityTime, ipIfStatsRefreshRate } + STATUS current + DESCRIPTION + + + + "IP per-interface statistics." + ::= { ipMIBGroups 13 } + +ipv4IfStatsGroup OBJECT-GROUP + OBJECTS { ipIfStatsInBcastPkts, ipIfStatsOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only per-interface statistics." + ::= { ipMIBGroups 14 } + +ipIfStatsHCOctetGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInOctets, ipIfStatsHCOutOctets, + ipIfStatsHCInMcastOctets, ipIfStatsHCOutMcastOctets } + STATUS current + DESCRIPTION + "IP per-interfaces statistics for systems that include + interfaces that may overflow the standard octet + counters within 1 hour." + ::= { ipMIBGroups 15 } + +ipIfStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInReceives, ipIfStatsHCInForwDatagrams, + ipIfStatsHCInDelivers, ipIfStatsHCOutRequests, + ipIfStatsHCOutForwDatagrams, ipIfStatsHCOutTransmits, + ipIfStatsHCInMcastPkts, ipIfStatsHCOutMcastPkts } + STATUS current + DESCRIPTION + "IP per-interfaces statistics for systems that include + interfaces that may overflow the standard packet counters + within 1 hour." + ::= { ipMIBGroups 16 } + +ipv4IfStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInBcastPkts, ipIfStatsHCOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only per-interface statistics for systems that include + interfaces that may overflow the standard packet counters + within 1 hour." + ::= { ipMIBGroups 17 } + +ipAddressPrefixGroup OBJECT-GROUP + OBJECTS { ipAddressPrefixOrigin, + ipAddressPrefixOnLinkFlag, + ipAddressPrefixAutonomousFlag, + ipAddressPrefixAdvPreferredLifetime, + ipAddressPrefixAdvValidLifetime } + STATUS current + + + + DESCRIPTION + "The group of objects for providing information about address + prefixes used by this node." + ::= { ipMIBGroups 18 } + +ipAddressGroup OBJECT-GROUP + OBJECTS { ipAddressSpinLock, ipAddressIfIndex, + ipAddressType, ipAddressPrefix, + ipAddressOrigin, ipAddressStatus, + ipAddressCreated, ipAddressLastChanged, + ipAddressRowStatus, ipAddressStorageType } + STATUS current + DESCRIPTION + "The group of objects for providing information about the + addresses relevant to this entity's interfaces." + ::= { ipMIBGroups 19 } + +ipNetToPhysicalGroup OBJECT-GROUP + OBJECTS { ipNetToPhysicalPhysAddress, ipNetToPhysicalLastUpdated, + ipNetToPhysicalType, ipNetToPhysicalState, + ipNetToPhysicalRowStatus } + STATUS current + DESCRIPTION + "The group of objects for providing information about the + mappings of network address to physical address known to + this node." + ::= { ipMIBGroups 20 } + +ipv6ScopeGroup OBJECT-GROUP + OBJECTS { ipv6ScopeZoneIndexLinkLocal, + ipv6ScopeZoneIndex3, + ipv6ScopeZoneIndexAdminLocal, + ipv6ScopeZoneIndexSiteLocal, + ipv6ScopeZoneIndex6, + ipv6ScopeZoneIndex7, + ipv6ScopeZoneIndexOrganizationLocal, + ipv6ScopeZoneIndex9, + ipv6ScopeZoneIndexA, + ipv6ScopeZoneIndexB, + ipv6ScopeZoneIndexC, + ipv6ScopeZoneIndexD } + STATUS current + DESCRIPTION + "The group of objects for managing IPv6 scope zones." + ::= { ipMIBGroups 21 } + +ipDefaultRouterGroup OBJECT-GROUP + OBJECTS { ipDefaultRouterLifetime, ipDefaultRouterPreference } + + + + STATUS current + DESCRIPTION + "The group of objects for providing information about default + routers known to this node." + ::= { ipMIBGroups 22 } + +ipv6RouterAdvertGroup OBJECT-GROUP + OBJECTS { ipv6RouterAdvertSpinLock, + ipv6RouterAdvertSendAdverts, + ipv6RouterAdvertMaxInterval, + ipv6RouterAdvertMinInterval, + ipv6RouterAdvertManagedFlag, + ipv6RouterAdvertOtherConfigFlag, + ipv6RouterAdvertLinkMTU, + ipv6RouterAdvertReachableTime, + ipv6RouterAdvertRetransmitTime, + ipv6RouterAdvertCurHopLimit, + ipv6RouterAdvertDefaultLifetime, + ipv6RouterAdvertRowStatus +} + STATUS current + DESCRIPTION + "The group of objects for controlling information advertised + by IPv6 routers." + ::= { ipMIBGroups 23 } + +icmpStatsGroup OBJECT-GROUP + OBJECTS {icmpStatsInMsgs, icmpStatsInErrors, + icmpStatsOutMsgs, icmpStatsOutErrors, + icmpMsgStatsInPkts, icmpMsgStatsOutPkts } + STATUS current + DESCRIPTION + "The group of objects providing ICMP statistics." + ::= { ipMIBGroups 24 } + +-- +-- Deprecated objects +-- + +ipInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of input datagrams received from + interfaces, including those received in error. + + This object has been deprecated, as a new IP version-neutral + + + + table has been added. It is loosely replaced by + ipSystemStatsInRecieves." + ::= { ip 3 } + +ipInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams discarded due to errors in + their IPv4 headers, including bad checksums, version number + mismatch, other format errors, time-to-live exceeded, errors + discovered in processing their IPv4 options, etc. + + This object has been deprecated as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInHdrErrors." + ::= { ip 4 } + +ipInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams discarded because the IPv4 + address in their IPv4 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 IPv4 routers, and therefore do not forward datagrams, + this counter includes datagrams discarded because the + destination address was not a local address. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInAddrErrors." + ::= { ip 5 } + +ipForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IPv4 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 IPv4 + routers, this counter will include only those packets which + + + + were Source-Routed via this entity, and the Source-Route + option processing was successful. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInForwDatagrams." + ::= { ip 6 } + +ipInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of locally-addressed datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInUnknownProtos." + ::= { ip 7 } + +ipInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input IPv4 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. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInDiscards." + ::= { ip 8 } + +ipInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of input datagrams successfully delivered + to IPv4 user-protocols (including ICMP). + + This object has been deprecated as a new IP version neutral + table has been added. It is loosely replaced by + + + + ipSystemStatsIndelivers." + ::= { ip 9 } + +ipOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of IPv4 datagrams which local IPv4 user + protocols (including ICMP) supplied to IPv4 in requests for + transmission. Note that this counter does not include any + datagrams counted in ipForwDatagrams. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutRequests." + ::= { ip 10 } + +ipOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of output IPv4 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. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutDiscards." + ::= { ip 11 } + +ipOutNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 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 datagrams which a host cannot route + because all of its default routers are down. + + This object has been deprecated, as a new IP version-neutral + + + + table has been added. It is loosely replaced by + ipSystemStatsOutNoRoutes." + ::= { ip 12 } + +ipReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 fragments received which needed to be + reassembled at this entity. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmReqds." + ::= { ip 14 } + +ipReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams successfully re-assembled. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmOKs." + ::= { ip 15 } + +ipReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of failures detected by the IPv4 re-assembly + algorithm (for whatever reason: timed out, errors, etc). + Note that this is not necessarily a count of discarded IPv4 + 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. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmFails." + ::= { ip 16 } + +ipFragOKs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams that have been successfully + fragmented at this entity. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragOKs." + ::= { ip 17 } + +ipFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 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. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragFails." + ::= { ip 18 } + +ipFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagram fragments that have been + generated as a result of fragmentation at this entity. + + This object has been deprecated as a new IP version neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragCreates." + ::= { ip 19 } + +ipRoutingDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + 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. + + + + This object was defined in pre-IPv6 versions of the IP MIB. + It was implicitly IPv4 only, but the original specifications + did not indicate this protocol restriction. In order to + clarify the specifications, this object has been deprecated + and a similar, but more thoroughly clarified, object has + been added to the IP-FORWARD-MIB." + ::= { ip 23 } + +-- the deprecated IPv4 address table + +ipAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddrEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The table of addressing information relevant to this + entity's IPv4 addresses. + + This table has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by the + ipAddressTable although several objects that weren't deemed + useful weren't carried forward while another + (ipAdEntReasmMaxSize) was moved to the ipv4InterfaceTable." + ::= { ip 20 } + +ipAddrEntry OBJECT-TYPE + SYNTAX IpAddrEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The addressing information for one of this entity's IPv4 + addresses." + INDEX { ipAdEntAddr } + ::= { ipAddrTable 1 } + +IpAddrEntry ::= SEQUENCE { + ipAdEntAddr IpAddress, + ipAdEntIfIndex INTEGER, + ipAdEntNetMask IpAddress, + ipAdEntBcastAddr INTEGER, + ipAdEntReasmMaxSize INTEGER + } + +ipAdEntAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The IPv4 address to which this entry's addressing + information pertains." + ::= { ipAddrEntry 1 } + +ipAdEntIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + 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 the IF-MIB's ifIndex." + ::= { ipAddrEntry 2 } + +ipAdEntNetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The subnet mask associated with the IPv4 address of this + entry. The value of the mask is an IPv4 address with all + the network bits set to 1 and all the hosts bits set to 0." + ::= { ipAddrEntry 3 } + +ipAdEntBcastAddr OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of the least-significant bit in the IPv4 broadcast + address used for sending datagrams on the (logical) + interface associated with the IPv4 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 broadcast addresses used by the + entity on this (logical) interface." + ::= { ipAddrEntry 4 } + +ipAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The size of the largest IPv4 datagram which this entity can + re-assemble from incoming IPv4 fragmented datagrams received + on this interface." + ::= { ipAddrEntry 5 } + + + +-- the deprecated IPv4 Address Translation table + +-- The Address Translation tables 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 + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IPv4 Address Translation table used for mapping from + IPv4 addresses to physical addresses. + + This table has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by the + ipNetToPhysicalTable." + ::= { ip 22 } + +ipNetToMediaEntry OBJECT-TYPE + SYNTAX IpNetToMediaEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 (1..2147483647) + MAX-ACCESS read-create + 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 the IF-MIB's ifIndex. + + This object predates the rule limiting index objects to a + max access value of 'not-accessible' and so continues to use + a value of 'read-create'." + ::= { ipNetToMediaEntry 1 } + +ipNetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The media-dependent `physical' address. This object should + return 0 when this entry is in the 'incomplete' state. + + As the entries in this table are typically not persistent + when this object is written the entity should not save the + change to non-volatile storage. Note: a stronger + requirement is not used because this object was previously + defined." + ::= { ipNetToMediaEntry 2 } + +ipNetToMediaNetAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IpAddress corresponding to the media-dependent + `physical' address. + + This object predates the rule limiting index objects to a + max access value of 'not-accessible' and so continues to use + a value of 'read-create'." + ::= { ipNetToMediaEntry 3 } + +ipNetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4) + } + MAX-ACCESS read-create + STATUS deprecated + 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 dis-associates + 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. + + As the entries in this table are typically not persistent + when this object is written the entity should not save the + change to non-volatile storage. Note: a stronger + requirement is not used because this object was previously + defined." + ::= { ipNetToMediaEntry 4 } + +-- the deprecated ICMP group + +icmpInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of ICMP messages which the entity received. + Note that this counter includes all those counted by + icmpInErrors. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsInMsgs." + ::= { icmp 1 } + +icmpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP messages which the entity received but + determined as having ICMP-specific errors (bad ICMP + checksums, bad length, etc.). + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsInErrors." + ::= { icmp 2 } + + + + +icmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Destination Unreachable messages + received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 3 } + +icmpInTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Time Exceeded messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 4 } + +icmpInParmProbs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Parameter Problem messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 5 } + +icmpInSrcQuenchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Source Quench messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 6 } + + + +icmpInRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Redirect messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 7 } + +icmpInEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo (request) messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 8 } + +icmpInEchoReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 9 } + +icmpInTimestamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp (request) messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 10 } + + + + +icmpInTimestampReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 11 } + +icmpInAddrMasks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Request messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 12 } + +icmpInAddrMaskReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 13 } + +icmpOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of ICMP messages which this entity + attempted to send. Note that this counter includes all + those counted by icmpOutErrors. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsOutMsgs." + + + + ::= { icmp 14 } + +icmpOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + 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. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsOutErrors." + ::= { icmp 15 } + +icmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Destination Unreachable messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 16 } + +icmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Time Exceeded messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 17 } + +icmpOutParmProbs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + + + + DESCRIPTION + "The number of ICMP Parameter Problem messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 18 } + +icmpOutSrcQuenchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Source Quench messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 19 } + +icmpOutRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Redirect messages sent. For a host, this + object will always be zero, since hosts do not send + redirects. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 20 } + +icmpOutEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo (request) messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 21 } + +icmpOutEchoReps OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 22 } + +icmpOutTimestamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp (request) messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 23 } + +icmpOutTimestampReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 24 } + +icmpOutAddrMasks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Request messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 25 } + +icmpOutAddrMaskReps OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 26 } + +-- deprecated conformance information +-- deprecated compliance statements + +ipMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for systems that implement only + IPv4. For version-independence, this compliance statement + is deprecated in favor of ipMIBCompliance2." + MODULE -- this module + MANDATORY-GROUPS { ipGroup, + icmpGroup } + ::= { ipMIBCompliances 1 } + +-- deprecated units of conformance + +ipGroup OBJECT-GROUP + OBJECTS { ipForwarding, ipDefaultTTL, + ipInReceives, ipInHdrErrors, + ipInAddrErrors, ipForwDatagrams, + ipInUnknownProtos, ipInDiscards, + ipInDelivers, ipOutRequests, + ipOutDiscards, ipOutNoRoutes, + ipReasmTimeout, ipReasmReqds, + ipReasmOKs, ipReasmFails, + ipFragOKs, ipFragFails, + ipFragCreates, ipAdEntAddr, + ipAdEntIfIndex, ipAdEntNetMask, + ipAdEntBcastAddr, ipAdEntReasmMaxSize, + ipNetToMediaIfIndex, ipNetToMediaPhysAddress, + ipNetToMediaNetAddress, ipNetToMediaType, + ipRoutingDiscards +} + STATUS deprecated + DESCRIPTION + "The ip group of objects providing for basic management of IP + entities, exclusive of the management of IP routes. + + + + + As part of the version independence, this group has been + deprecated. " + ::= { ipMIBGroups 1 } + +icmpGroup OBJECT-GROUP + OBJECTS { icmpInMsgs, icmpInErrors, + icmpInDestUnreachs, icmpInTimeExcds, + icmpInParmProbs, icmpInSrcQuenchs, + icmpInRedirects, icmpInEchos, + icmpInEchoReps, icmpInTimestamps, + icmpInTimestampReps, icmpInAddrMasks, + icmpInAddrMaskReps, icmpOutMsgs, + icmpOutErrors, icmpOutDestUnreachs, + icmpOutTimeExcds, icmpOutParmProbs, + icmpOutSrcQuenchs, icmpOutRedirects, + icmpOutEchos, icmpOutEchoReps, + icmpOutTimestamps, icmpOutTimestampReps, + icmpOutAddrMasks, icmpOutAddrMaskReps } + STATUS deprecated + DESCRIPTION + "The icmp group of objects providing ICMP statistics. + + As part of the version independence, this group has been + deprecated. " + ::= { ipMIBGroups 2 } + +END diff --git a/mibs/ietf/IPATM-IPMC-MIB b/mibs/ietf/IPATM-IPMC-MIB new file mode 100644 index 0000000..e1d511d --- /dev/null +++ b/mibs/ietf/IPATM-IPMC-MIB @@ -0,0 +1,3238 @@ +IPATM-IPMC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpModules, MODULE-IDENTITY, NOTIFICATION-TYPE, Counter32, + Integer32, Unsigned32, OBJECT-TYPE, IpAddress + FROM SNMPv2-SMI + AtmAddr + FROM ATM-TC-MIB + TruthValue, RowStatus + FROM SNMPv2-TC + ipAdEntAddr + FROM RFC1213-MIB + InterfaceIndex + FROM IF-MIB; + +marsMIB MODULE-IDENTITY + LAST-UPDATED "9804150145Z" -- 15 April 1998 + ORGANIZATION "Internetworking Over NBMA (ion) Working Group" + CONTACT-INFO + " Chris Chung + Postal: SAIC + 1710 Goodridge Drive + Mail Stop 1-4-7 + McLean, VA 22102 + Tel: +1 703 448 6485 + Fax: +1 703 356 2160 + E-mail: cchung@tieo.saic.com + + Editor: Maria Greene + Postal: Independent Contractor + E-mail: maria@xedia.com + " + DESCRIPTION + "This module defines a portion of the managed information + base (MIB) for managing classical IP multicast address + resolution server (MARS) and related entities as + described in the RFC2022. This MIB is meant to be + used in conjunction with the ATM-MIB (RFC1695), + MIB-II (RFC1213), and optionally the IF-MIB (RFC1573)." + ::= { snmpModules 17 } + +--*************************************************************** +-- IP ATM MARS Client Object Definitions +--*************************************************************** +marsClientObjects OBJECT IDENTIFIER ::= { marsMIB 1 } + +marsClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for + the management of MARS clients, ATM attached + endpoints." + ::= { marsClientObjects 1 } + +marsClientEntry OBJECT-TYPE + SYNTAX MarsClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MARS client and its associated + attributes. An entry in the marsClientTable has + a corresponding entry in the ipAddrTable defined in + RFC1213. Association between the ipAddrTable and + the marsClientTable is made through the index, + ipAdEntAddr." + INDEX { ipAdEntAddr, marsClientIndex } + ::= { marsClientTable 1 } + +MarsClientEntry ::= + SEQUENCE { + marsClientIndex Integer32, + marsClientAddr AtmAddr, + marsClientDefaultMarsAddr AtmAddr, + marsClientHsn Unsigned32, + marsClientRegistration INTEGER, + marsClientCmi INTEGER, + marsClientDefaultMtu INTEGER, + marsClientFailureTimer INTEGER, + marsClientRetranDelayTimer INTEGER, + marsClientRdmMulReqAddRetrTimer INTEGER, + marsClientRdmVcRevalidateTimer INTEGER, + marsClientJoinLeaveRetrInterval INTEGER, + marsClientJoinLeaveRetrLimit INTEGER, + marsClientRegWithMarsRdmTimer INTEGER, + marsClientForceWaitTimer INTEGER, + marsClientLmtToMissRedirMapTimer INTEGER, + marsClientIdleTimer INTEGER, + marsClientRowStatus RowStatus + } + +marsClientIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances of + the columnar objects in the MARS MarsClientTable." + ::= { marsClientEntry 1 } + +marsClientAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the ATM Client." + ::= { marsClientEntry 2 } + +marsClientDefaultMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MARS ATM address which is needed to + setup the initial signalling path between a MARS + client and its associated MARS." + ::= { marsClientEntry 3 } + +marsClientHsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cluster membership own 32 bit Host Sequence + Number. When a new cluster member starts up, it is + initialized to zero. When the cluster member sends + the MARS_JOIN to register, the HSN will be correctly + set to the current cluster sequence number (CSN) when + the Client receives the copy of its MARS_JOIN from + the MARS. It is is used to track the MARS sequence + number." + ::= { marsClientEntry 4 } + +marsClientRegistration OBJECT-TYPE + SYNTAX INTEGER { + notRegistered (1), + registering (2), + registered (3), + reRegisteringFault (4), + reRegisteringRedirMap (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication with regards to the registration + status of this client. The registration codes + of 'notRegistered (1)', 'registered (2)', and + registered (3) are self-explanatory. The + 'reRegisteringFault (4)' indicates the client is + in the process of re-registering with a MARS due + to some fault conditions. The 'reRegisteringRedMap + (5)' status code shows that client is re-registering + because it has received a MARS_REDIRECT_MAP message + and was told to register with a different MARS from + the current MARS." + ::= { marsClientEntry 5 } + +marsClientCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "16 bit Cluster member identifier (CMI) assigned by the + MARS which uniquely identifies each endpoint attached + to the cluster. The value becomes valid after the + 'marsClientRegistration' is set to the value + of 'registered (1)'." + ::= { marsClientEntry 6 } + +marsClientDefaultMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum transmission unit (MTU) used for + this cluster. Note that the actual size used for a + VC between two members of the cluster may be negotiated + during connection setup and may be different than this + value. Default value = 9180 bytes." + DEFVAL { 9180 } + ::= { marsClientEntry 7 } + +marsClientFailureTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A timer used to flag the failure of last MARS_MULTI + to arrive. Default value = 10 seconds (recommended)." + DEFVAL { 10 } + ::= { marsClientEntry 8 } + +marsClientRetranDelayTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The delay timer for sending out new MARS_REQUEST + for the group after the client learned that there + is no other group in the cluster. The timer must + be set between 5 and 10 seconds inclusive." + ::= { marsClientEntry 9 } + +marsClientRdmMulReqAddRetrTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random L_MULTI_RQ/ADD retransmit timer + which can be set between 5 and 10 seconds inclusive." + ::= { marsClientEntry 10 } + +marsClientRdmVcRevalidateTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The random time to set VC_revalidate flag. The + timer value ranges between 1 and 10 seconds + inclusive." + ::= { marsClientEntry 11 } + +marsClientJoinLeaveRetrInterval OBJECT-TYPE + SYNTAX INTEGER(5..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_JOIN/LEAVE retransmit interval. The minimum + and recommended values are 5 and 10 seconds, + respectively." + DEFVAL { 10 } + ::= { marsClientEntry 12 } + +marsClientJoinLeaveRetrLimit OBJECT-TYPE + SYNTAX INTEGER (0..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_JOIN/LEAVE retransmit limit. The maximum + value is 5." + ::= { marsClientEntry 13 } + +marsClientRegWithMarsRdmTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Random time to register with MARS." + ::= { marsClientEntry 14 } + +marsClientForceWaitTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Force wait if MARS re-registration is looping. + The minimum value is 1 minute." + ::= { marsClientEntry 15 } + +marsClientLmtToMissRedirMapTimer OBJECT-TYPE + SYNTAX INTEGER (1..4) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timer limit for client to miss MARS_REDIRECT_MAPS." + ::= { marsClientEntry 16 } + +marsClientIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configurable inactivity timer associated with a + client. When a VC is created at this client, it gets + the idle timer value from this configurable timer. + The minimum suggested value is 1 minute and the + recommended default value is 20 minutes." + DEFVAL { 20 } + ::= { marsClientEntry 17 } + +marsClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsClientStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsClientDefaultMarsAddr, + marsClientHsn, + marsClientRegstration, + marsClientCmi, + marsClientDefaultMtu + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsClientVcTable) still exists or is in + use. Once this row is deleted, it is recommended + that the agent or the SNMP management station + (if possible) through the set command deletes + any stale rows that are associated with this + row." + ::= { marsClientEntry 18 } + +--**************************************************************** +-- IP ATM MARS Client Multicast Group Address Object Definitions +--**************************************************************** + +marsClientMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast group address + blocks associated with a MARS client. Entries in this + table are used by the client that needs to receive or + transmit packets from/to the specified range of + multicast addresses. + Each row can be created or deleted via configuration." + ::= { marsClientObjects 2 } + +marsClientMcGrpEntry OBJECT-TYPE + SYNTAX MarsClientMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientMcMinGrpAddr, + marsClientMcMaxGrpAddr } + ::= { marsClientMcGrpTable 1 } + +MarsClientMcGrpEntry ::= + SEQUENCE { + marsClientMcMinGrpAddr IpAddress, + marsClientMcMaxGrpAddr IpAddress, + marsClientMcGrpRowStatus RowStatus + } + +marsClientMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsClientMcGrpEntry 1 } + +marsClientMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsClientMcGrpEntry 2 } + +marsClientMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsClientMcGrpEntry 3 } + +--**************************************************************** +-- IP ATM MARS Client Backup MARS Object Definitions +--**************************************************************** + +marsClientBackupMarsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of backup MARS addresses that + a client can connect to in case of failure for connecting + to the primary server. The list of addresses is in + descending order of preference. It should be noted that + the backup list provided by the MARS to the client via + the MARS_REDIRECT_MAP message has a higher preference than + addresses that are manually configured into the client. + When such a list is received from the MARS, this information + should be inserted at the top of the list. + Each row can be created or deleted via configuration." + ::= { marsClientObjects 3 } + +marsClientBackupMarsEntry OBJECT-TYPE + SYNTAX MarsClientBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an ATM address of a backup MARS." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientBackupMarsPriority, + marsClientBackupMarsAddr } + ::= { marsClientBackupMarsTable 1 } + +MarsClientBackupMarsEntry ::= + SEQUENCE { + marsClientBackupMarsPriority Unsigned32, + marsClientBackupMarsAddr AtmAddr, + marsClientBackupMarsRowStatus RowStatus + } + +marsClientBackupMarsPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority associated with a backup MARS. A lower + priority value inidcates a higher preference." + ::= { marsClientBackupMarsEntry 1 } + +marsClientBackupMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address associated with a backup MARS." + ::= { marsClientBackupMarsEntry 2 } + +marsClientBackupMarsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no effect + on whether those objects in this conceptual row can be + modified." + ::= { marsClientBackupMarsEntry 3 } + +--*************************************************************** +-- IP ATM MARS Client VC Object Definition Table +--*************************************************************** + +marsClientVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual + circuits (VCs) that a client has. For point to point + circuit, each entry represents a single VC connection + between this client ATM address to another party ATM + address. In the case of point to multipoint connection + where a single source address is associated with + multiple destinations, several entries are used to + represent the relationship. An example of point to + multi-point VC represented in a table is shown below. + + Client VPI/VCI Grp Addr1/Addr2 Part Addr + 1 0,1 g1,g2 p1 + 1 0,1 g1,g2 p2 + 1 0,1 g1,g2 p3 + + Note: This table assumes the IP multicast address + groups (min, max) defined in each entry are + always consecutive. In the case of that a + client receives a JOIN/LEAVE with + mars$flag.punched set, each pair of the IP + groups will first be broken into several + pairs of consecutive IP groups before each + entry row corresponding to a pair of IP group + is created." + ::= { marsClientObjects 4 } + +marsClientVcEntry OBJECT-TYPE + SYNTAX MarsClientVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related + attributes such as VC signalling type, control VC + type, idle timer, negotiated MTU size, etc." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientVcVpi, + marsClientVcVci, + marsClientVcMinGrpAddr, + marsClientVcMaxGrpAddr, + marsClientVcPartyAddr } + ::= { marsClientVcTable 1 } + +MarsClientVcEntry ::= + SEQUENCE { + marsClientVcVpi INTEGER, + marsClientVcVci INTEGER, + marsClientVcMinGrpAddr IpAddress, + marsClientVcMaxGrpAddr IpAddress, + marsClientVcPartyAddr AtmAddr, + marsClientVcPartyAddrType INTEGER, + marsClientVcType INTEGER, + marsClientVcCtrlType INTEGER, + marsClientVcIdleTimer INTEGER, + marsClientVcRevalidate TruthValue, + marsClientVcEncapsType INTEGER, + marsClientVcNegotiatedMtu INTEGER, + marsClientVcRowStatus RowStatus + } + +marsClientVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsClientVcEntry 1 } + +marsClientVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). Since + a VCI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsClientVcEntry 2 } + +marsClientVcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum IP multicast group address - the min and + max multicast forms a multi-group consecutive + block which is associated with a table entry. + if the MinGrpAddr and MaxGrpAddr are the same, it + indicates that the size of multi-group block is 1, + a single IP group." + ::= { marsClientVcEntry 3 } + +marsClientVcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum IP multicast group address - the min and + max multicast forms a multi-group consecutive + block which is associated with a table entry. + if the MinGrpAddr and MaxGrpAddr are the same, it + indicates that the size of multi-group block is 1, + a single IP group." + ::= { marsClientVcEntry 4 } + +marsClientVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. + The party type is identified by the + marsClientVcPartyAddrType." + ::= { marsClientVcEntry 5 } + +marsClientVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. + The 'called (1)' indicates that the party address is + a destination address which implies that VC is + originated from this client. The 'calling (2)' + indicates the VC was initiated externally to this + client. In this case, the party address is the + source address." + ::= { marsClientVcEntry 6 } + +marsClientVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsClientVcEntry 7 } + +marsClientVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + clusterControlVC (2), + pointToMultiPointVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM Clients for the registration and + queries. This VC or the initial signalling path + is set up from the source Client to a MARS. It is + bi-directional. + clusterControlVC (2): + used by a MARS to issue asynchronous updates to an + ATM Client. This VC is established from the MARS + to the ATM Client. + pointToMultiPointVC (3): + used by the client to transfer multicast data + packets from layer 3. This VC is established + from the source ATM Client to a destination ATM + endpoint which can be a multicast group member + or an MCS. The destination endpoint was obtained + from the MARS." + ::= { marsClientVcEntry 8 } + +marsClientVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended + default value is 20 minutes." + DEFVAL { 20 } + ::= { marsClientVcEntry 9 } + +marsClientVcRevalidate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with an open and active multipoint + VC. It is checked every time a packet is queued for + transmission on that VC. The object has the value of + true (1) if revalidate is required and the value + false (2) otherwise." + ::= { marsClientVcEntry 10 } + + marsClientVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsClientVcEntry 11 } + +marsClientVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsClientVcEntry 12 } + +marsClientVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While objects: marsClientVcIdleTimer and + marsClientVcRevalidate in this conceptual + row can be modified irrespective of the value + of this object, all other objects in the row can + not be modified when this object has a value + of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + + with the following exception. That is, rows + for which the corresponding instance of + marsClientVcType has a value of 'svc' can not + be modified or deleted." + ::= { marsClientVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS Client Statistic Object Definition Table +--*************************************************************** + +marsClientStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table contains statistics collected at MARS + clients." + ::= { marsClientObjects 5 } + +marsClientStatEntry OBJECT-TYPE + SYNTAX MarsClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one MARS + client." + INDEX { ipAdEntAddr, marsClientIndex } + ::= { marsClientStatTable 1 } + +MarsClientStatEntry ::= + SEQUENCE { + marsClientStatTxReqMsgs Counter32, + marsClientStatTxJoinMsgs Counter32, + marsClientStatTxLeaveMsgs Counter32, + marsClientStatTxGrpLstReqMsgs Counter32, + marsClientStatRxJoinMsgs Counter32, + marsClientStatRxLeaveMsgs Counter32, + marsClientStatRxMultiMsgs Counter32, + marsClientStatRxNakMsgs Counter32, + marsClientStatRxMigrateMsgs Counter32, + marsClientStatRxGrpLstRplyMsgs Counter32, + marsClientStatFailMultiMsgs Counter32 + } + +marsClientStatTxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages transmitted + from a client." + ::= { marsClientStatEntry 1 } + +marsClientStatTxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages transmitted from + a client." + ::= { marsClientStatEntry 2 } + +marsClientStatTxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages transmitted from + a client." + ::= { marsClientStatEntry 3 } + +marsClientStatTxGrpLstReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REQUEST messages + transmitted from a client." + ::= { marsClientStatEntry 4 } + +marsClientStatRxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages received by + a client." + ::= { marsClientStatEntry 5 } + +marsClientStatRxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages received by + a client." + ::= { marsClientStatEntry 6 } + +marsClientStatRxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI messages received by + a client." + ::= { marsClientStatEntry 7 } + +marsClientStatRxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages received by + a client." + ::= { marsClientStatEntry 8 } + +marsClientStatRxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages received by + a client." + ::= { marsClientStatEntry 9 } + + marsClientStatRxGrpLstRplyMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REPLY messages + received by a client." + ::= { marsClientStatEntry 10 } + +marsClientStatFailMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of timeouts occurred indicating + failure of the last MARS_MULTI to arrive." + ::= { marsClientStatEntry 11 } + +--*************************************************************** +-- IP ATM MARS Object Definitions +--*************************************************************** + +marsObjects OBJECT IDENTIFIER ::= { marsMIB 2 } + +marsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for the + management of MARS servers." + ::= { marsObjects 1 } + +marsEntry OBJECT-TYPE + SYNTAX MarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MARS and its associated + attributes." + INDEX { marsIndex, marsIfIndex } + ::= { marsTable 1 } + +MarsEntry ::= + SEQUENCE { + marsIndex Integer32, + marsIfIndex InterfaceIndex, + marsAddr AtmAddr, + marsLocal TruthValue, + marsServStatus INTEGER, + marsServType INTEGER, + marsServPriority Unsigned32, + marsRedirMapMsgTimer INTEGER, + marsCsn Unsigned32, + marsSsn Unsigned32, + marsRowStatus RowStatus + } + +marsIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances of + the columnar objects in the MARS table." + ::= { marsEntry 1 } + +marsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the MARS is + associated with." + ::= { marsEntry 2 } + +marsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the MARS." + ::= { marsEntry 3 } + +marsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with a MARS entry. The object has + the value of true (1) if the MARS whose interface + is local to the machine that implements this MIB; + otherwise the object has the value of false (2)." + ::= { marsEntry 4 } + +marsServStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2), + faulted (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current status of MARS." + ::= { marsEntry 5 } + +marsServType OBJECT-TYPE + SYNTAX INTEGER { + primary (1), + backup (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Types of MARS servers: primary or backup." + ::= { marsEntry 6 } + +marsServPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Priority associated with a backup MARS server. + A backup MARS server with lower priority value + indicates a higher preference than other backup + MARS servers to be used as the MARS server when + the primary server fails." + ::= { marsEntry 7 } + +marsRedirMapMsgTimer OBJECT-TYPE + SYNTAX INTEGER (1..2) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Periodic interval on which a multi-part + MARS_REDIRECT_MAP is sent from this MARS." + DEFVAL { 1 } + ::= { marsEntry 8 } + +marsCsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Current cluster sequence number (CSN) which is global + within the context of a given protocol. The CSN is + incremented by the MARS on every transmission of a + message on ClusterControlVC. A cluster member uses + the CSN to track the message loss on ClusterControlVC + or to monitor a membership change." + ::= { marsEntry 9 } + +marsSsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Current server sequence number (SSN) which is global + within the context of a given protocol. The SSN is + incremented by the MARS on every transmission of a + message on ServerControlVC. A MCS uses the SSN to + track the message loss on ServerControlVC or to + monitor a membership change." + ::= { marsEntry 10 } + +marsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsAddr, + marsAddrLocal, + marsServStatus, + marsServType, + marsCsn, + marsSsn + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsVcTable) still exists or is in use. + Once this row is deleted, it is recommended that + the agent or the SNMP management station (if + possible) through the set command deletes any + stale rows that are associated with this row." + ::= { marsEntry 11 } + +--**************************************************************** +-- IP ATM MARS Multicast Group Address Object Definitions +--**************************************************************** + +marsMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast address + blocks associated with a MARS. Entries in this table + are used by the MARS host map table and the server map + table. They should be created prior to being referenced + as indices by those tables. + Each row can be created or deleted via configuration." + ::= { marsObjects 2 } + +marsMcGrpEntry OBJECT-TYPE + SYNTAX MarsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr } + ::= { marsMcGrpTable 1 } + +MarsMcGrpEntry ::= + SEQUENCE { + marsMcMinGrpAddr IpAddress, + marsMcMaxGrpAddr IpAddress, + marsMcGrpAddrUsage INTEGER, + marsMcGrpRxLayer3GrpSets Counter32, + marsMcGrpRxLayer3GrpResets Counter32, + marsMcGrpRowStatus RowStatus + } + +marsMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsMcGrpEntry 1 } + +marsMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If The + MinGrpAddr and MaxGrpAddr are the same, it indicates + that this block contains a single group address." + ::= { marsMcGrpEntry 2 } + +marsMcGrpAddrUsage OBJECT-TYPE + SYNTAX INTEGER { + hostMap (1), + serverMap (2), + hostServerMap (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Usage of the multicast address block. The hostMap (1) + indicates that the address block is only used in the + MARS host map table. The serverMap (2) indicates + that the address block is only used in the MARS + server map table. The hostServerMap (3) indicates + that the address block is used in both the host map + and the server map tables." + ::= { marsMcGrpEntry 3 } + +marsMcGrpRxLayer3GrpSets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MARS_JOIN messages received with + mars$flags.layer3grp flag set." + ::= { marsMcGrpEntry 4 } + +marsMcGrpRxLayer3GrpResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MARS_JOIN messages received with + mars$flags.layer3grp flag reset." + ::= { marsMcGrpEntry 5 } + +marsMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified." + ::= { marsMcGrpEntry 6 } + +--*************************************************************** +-- IP ATM MARS Host Map Object Definitions +--*************************************************************** + +marsHostMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsHostMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table caches mappings between IP multicast + address to a list of ATM addresses that are + configured or dynamically learned from the MARS. + This address resolution is used for the host map. + It supports the mapping of a block of multicast + group addresses to a cluster member address. In + the case where a group block is associated with + multiple cluster members, several entries are + used to representing the relationship." + ::= { marsObjects 3 } + +marsHostMapEntry OBJECT-TYPE + SYNTAX MarsHostMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with + the mapping between a multicast group block and an + ATM address." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr, + marsHostMapAtmAddr } + ::= { marsHostMapTable 1 } + +MarsHostMapEntry ::= + SEQUENCE { + marsHostMapAtmAddr AtmAddr, + marsHostMapRowType INTEGER, + marsHostMapRowStatus RowStatus + } + +marsHostMapAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapped cluster member ATM address." + ::= { marsHostMapEntry 1 } + +marsHostMapRowType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Method in which this entry row is created. The + static (1) indicates that this row is created + through configuration. The dynamic (2) indicates + that the row is created as the result of group + address updates received at this MARS." + ::= { marsHostMapEntry 2 } + +marsHostMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + This object must not be set to 'active' until + instances of all corresponding columns in the + row of this table are appropriately configured. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsHostMapRowType has a value of 'dynamic' + can not be modified or deleted." + ::= { marsHostMapEntry 3 } + +--*************************************************************** +-- IP ATM MARS Server Map Object Definitions +--*************************************************************** + +marsServerMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsServerMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table caches mappings between IP multicast + address to a list of MCS ATM addresses that are + configured or dynamically learned from the MARS. + This address resolution is used for the server map. + It supports the mapping of a block of multicast + group addresses to a MCS address. In the case + where a group block is associated with multiple + MCSs, several entries are used to representing the + relationship." + ::= { marsObjects 4 } + +marsServerMapEntry OBJECT-TYPE + SYNTAX MarsServerMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with + the mapping between a multicast group block and an + MCS address." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr, + marsServerMapAtmAddr } + ::= { marsServerMapTable 1 } + +MarsServerMapEntry ::= + SEQUENCE { + marsServerMapAtmAddr AtmAddr, + marsServerMapRowType INTEGER, + marsServerMapRowStatus RowStatus + } + +marsServerMapAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapped MCS ATM address." + ::= { marsServerMapEntry 1 } + +marsServerMapRowType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Method in which this entry row is created. The + 'static (1)' indicates that this row is created + through configuration. The 'dynamic (2)' indicates + that the row is created as the result of group + address updates received at this MARS." + ::= { marsServerMapEntry 2 } + +marsServerMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + This object must not be set to 'active' until + instances of all corresponding columns in the + row of this table are appropriately configured. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsServerMapRowType has a value of 'dynamic' + can not be modified or deleted." + ::= { marsServerMapEntry 3 } + +--*************************************************************** +-- IP ATM MARS VC Object Definition Table +--*************************************************************** + +marsVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual circuits + (VCs) that a MARS has. For point to point circuit, each + entry represents a single VC connection between this MARS + ATM address to another party's ATM address. In the case of + point to multipoint connection where a ControlVc is attached + with multiple leaf nodes, several entries are used to + represent the relationship. An example of point to + multi-point VC represented in a table is shown below. + + MARS VPI/VCI MARS Addr Party Addr + 1 0,1 m1 p1 + 1 0,1 m1 p2 + 1 0,1 m1 p3" + ::= { marsObjects 5 } + +marsVcEntry OBJECT-TYPE + SYNTAX MarsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related attributes + such as VC signalling type, control VC type, idle timer, + negotiated MTU size, etc." + INDEX { marsIndex, + marsIfIndex, + marsVcVpi, + marsVcVci, + marsVcPartyAddr } + ::= { marsVcTable 1 } + +MarsVcEntry ::= + SEQUENCE { + marsVcVpi INTEGER, + marsVcVci INTEGER, + marsVcPartyAddr AtmAddr, + marsVcPartyAddrType INTEGER, + marsVcType INTEGER, + marsVcCtrlType INTEGER, + marsVcIdleTimer INTEGER, + marsVcCmi INTEGER, + marsVcEncapsType INTEGER, + marsVcNegotiatedMtu INTEGER, + marsVcRowStatus RowStatus + } + +marsVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsVcEntry 1 } + +marsVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). + Since a VCI can be numbered 0, this sub-index + can take a value of 0." + ::= { marsVcEntry 2 } + +marsVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. The + party type is identified by the marsVcPartyAddrType." + ::= { marsVcEntry 5 } + +marsVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. The + 'called (1)' indicates that the party address is a + destination address which implies that VC is originated + from this MARS. The 'calling (2)' indicates the VC was + initiated externally to this MARS. The party address is + the source address." + ::= { marsVcEntry 6 } + +marsVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsVcEntry 7 } + +marsVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + clusterControlVC (2), + serverControlVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM endpoints (clients) or the MCS for + registration and queries. This VC is set up from + a MARS client and MCS to this MARS. It is a + bi-directional VC. + clusterControlVC (2): + used by MARS to issue asynchronous updates to ATM + an ATM client. This VC is established from the + MARs to the ATM client. + serverControlVC (3): + used by MARS to issue asynchronous update to ATM + multicast servers. This type of VC exists when at + least a MCS is being used." + ::= { marsVcEntry 8 } + +marsVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended default + value is 20 minutes." + DEFVAL { 20 } + ::= { marsVcEntry 9 } + +marsVcCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Cluster member identifier (CMI) which uniquely identifies + each endpoint attached to the cluster. This variable + applies to each 'leaf node' of an outgoing control VC." + ::= { marsVcEntry 10 } + +marsVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsVcEntry 11 } + +marsVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsVcEntry 12 } + +marsVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While the marsVcIdleTimer in this conceptual + row can be modified irrespective of the value + of this object, all other objects in the row can + not be modified when this object has a value + of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsVcType has a value of 'svc' can not be + modified or deleted." + ::= { marsVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS Registered Cluster Member List Table +--*************************************************************** + +marsRegClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsRegClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM identities of all the currently + registered cluster members at a MARS. Each entry represents + one set of ATM identities associated with one cluster member + or the MARS client." + ::= { marsObjects 6 } + +marsRegClientEntry OBJECT-TYPE + SYNTAX MarsRegClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with one + register cluster member." + INDEX { marsIndex, + marsIfIndex, + marsRegClientCmi} + ::= { marsRegClientTable 1 } + +MarsRegClientEntry ::= + SEQUENCE { + marsRegClientCmi INTEGER, + marsRegClientAtmAddr AtmAddr + } + +marsRegClientCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This cluster member identifier is used as an auxiliary index + for the entry in this table." + ::= { marsRegClientEntry 1 } + +marsRegClientAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registered client's ATM address." + ::= { marsRegClientEntry 2 } + + +--*************************************************************** +-- IP ATM MARS Registered Server Member List Table +--*************************************************************** + +marsRegMcsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsRegMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM identities of all the currently + registered MCSs at a MARS. Each entry represents one set + of ATM identities associated with one MCS." + ::= { marsObjects 7 } + +marsRegMcsEntry OBJECT-TYPE + SYNTAX MarsRegMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with one + registered MCS." + INDEX { marsIndex, + marsIfIndex, + marsRegMcsAtmAddr + } + ::= { marsRegMcsTable 1 } + +MarsRegMcsEntry ::= + SEQUENCE { + marsRegMcsAtmAddr AtmAddr + } + +marsRegMcsAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registered MCS's ATM address." + ::= { marsRegMcsEntry 1 } + +--*************************************************************** +-- IP ATM MARS Statistics Object Definition Table +--*************************************************************** + +marsStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsStatEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "The table contains statistics collected at MARS." + ::= { marsObjects 8 } + +marsStatEntry OBJECT-TYPE + SYNTAX MarsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one MARS." + INDEX { marsIndex, marsIfIndex } + ::= { marsStatTable 1 } + +MarsStatEntry ::= + SEQUENCE { + marsStatTxMultiMsgs Counter32, + marsStatTxGrpLstRplyMsgs Counter32, + marsStatTxRedirectMapMsgs Counter32, + marsStatTxMigrateMsgs Counter32, + marsStatTxNakMsgs Counter32, + marsStatTxJoinMsgs Counter32, + marsStatTxLeaveMsgs Counter32, + marsStatTxSjoinMsgs Counter32, + marsStatTxSleaveMsgs Counter32, + marsStatTxMservMsgs Counter32, + marsStatTxUnservMsgs Counter32, + marsStatRxReqMsgs Counter32, + marsStatRxGrpLstReqMsgs Counter32, + marsStatRxJoinMsgs Counter32, + marsStatRxLeaveMsgs Counter32, + marsStatRxMservMsgs Counter32, + marsStatRxUnservMsgs Counter32, + marsStatRxBlkJoinMsgs Counter32, + marsStatRegMemGroups Counter32, + marsStatRegMcsGroups Counter32 + } + +marsStatTxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI transmitted by this MARS." + ::= { marsStatEntry 1 } + +marsStatTxGrpLstRplyMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REPLY messages transmitted + by this MARS." + ::= { marsStatEntry 2 } + +marsStatTxRedirectMapMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REDIRECT_MAP messages transmitted by + this MARS." + ::= { marsStatEntry 3 } + +marsStatTxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages transmitted by + this MARS." + ::= { marsStatEntry 4 } + +marsStatTxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages transmitted by this MARS." + ::= { marsStatEntry 5 } + +marsStatTxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages transmitted by this + MARS." + ::= { marsStatEntry 6 } + +marsStatTxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages transmitted by this + MARS." + ::= { marsStatEntry 7 } + +marsStatTxSjoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SJOIN messages transmitted by this + MARS." + ::= { marsStatEntry 8 } + +marsStatTxSleaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SLEAVE messages transmitted by this + MARS." + ::= { marsStatEntry 9 } + +marsStatTxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages transmitted by this + MARS." + ::= { marsStatEntry 10 } + +marsStatTxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages transmitted by this + MARS." + ::= { marsStatEntry 11 } + +marsStatRxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages received by this + MARS." + ::= { marsStatEntry 12 } + +marsStatRxGrpLstReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REQUEST messages received + by this MARS." + ::= { marsStatEntry 13 } + +marsStatRxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOINS messages received by this MARS." + ::= { marsStatEntry 14 } + +marsStatRxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVES messages received by this MARS." + ::= { marsStatEntry 15 } + +marsStatRxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages received by this MARS." + ::= { marsStatEntry 16 } + +marsStatRxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages received by this MARS." + ::= { marsStatEntry 17 } + +marsStatRxBlkJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of block joins messages received by this MARS." + ::= { marsStatEntry 18 } + +marsStatRegMemGroups OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of IP multicast groups with 1 or more joined + cluster members." + ::= { marsStatEntry 19 } + +marsStatRegMcsGroups OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of IP multicast groups with 1 or more joined + MCSs." + ::= { marsStatEntry 20 } + +--*************************************************************** +-- IP ATM MARS MCS Object Definitions +--*************************************************************** + +marsMcsObjects OBJECT IDENTIFIER ::= { marsMIB 3 } + +marsMcsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for + the management of a multicast server (MCS)." + ::= { marsMcsObjects 1 } + +marsMcsEntry OBJECT-TYPE + SYNTAX MarsMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MCS and its associated + attributes." + INDEX { marsMcsIndex, marsMcsIfIndex } + ::= { marsMcsTable 1 } + +MarsMcsEntry ::= + SEQUENCE { + marsMcsIndex Integer32, + marsMcsIfIndex InterfaceIndex, + marsMcsAddr AtmAddr, + marsMcsDefaultMarsAddr AtmAddr, + marsMcsRegistration INTEGER, + marsMcsSsn Unsigned32, + marsMcsDefaultMtu INTEGER, + marsMcsFailureTimer INTEGER, + marsMcsRetranDelayTimer INTEGER, + marsMcsRdmMulReqAddRetrTimer INTEGER, + marsMcsRdmVcRevalidateTimer INTEGER, + marsMcsRegisterRetrInterval INTEGER, + marsMcsRegisterRetrLimit INTEGER, + marsMcsRegWithMarsRdmTimer INTEGER, + marsMcsForceWaitTimer INTEGER, + marsMcsIdleTimer INTEGER, + marsMcsLmtToMissRedirMapTimer INTEGER, + marsMcsRowStatus RowStatus + } + +marsMcsIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances + of the columnar objects in the MCS table." + ::= { marsMcsEntry 1 } + +marsMcsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the MCS is + associated with." + ::= { marsMcsEntry 2 } + +marsMcsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the MCS." + ::= { marsMcsEntry 3 } + +marsMcsDefaultMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MARS ATM address which is needed to + setup the initial signalling path between a MCS + and its associated MARS." + ::= { marsMcsEntry 4 } + +marsMcsRegistration OBJECT-TYPE + SYNTAX INTEGER { + notRegistered (1), + registering (2), + registered (3), + reRegisteringFault (4), + reRegisteringRedirMap (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication with regards to the registration + STATUS of this MCS. The registration codes of + 'notRegistered (1)', 'registered (2)', and + registered (3) are self-explanatory. The + 'reRegisteringFault (4)' indicates the MCS is + in the process of re-registering with a MARS due + to some fault conditions. The 'reRegisteringRedMap + (5)' status code shows that MCS is re-registering + because it has received a MARS_REDIRECT_MAP message + and was told to register with a shift MARS." + ::= { marsMcsEntry 5 } + +marsMcsSsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MCS own 32 bit Server Sequence Number. It + is used to track the Mars sequence number." + ::= { marsMcsEntry 6 } + +marsMcsDefaultMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum transmission unit (MTU) used + for this cluster. Note that the actual size used + for a VC between two members of the cluster may be + negotiated during connection setup and may be + different than this value. + Default value = 9180 bytes." + DEFVAL { 9180 } + ::= { marsMcsEntry 7 } + +marsMcsFailureTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A timer used to flag the failure of last MARS_MULTI + to arrive. Default value = 10 seconds (recommended)." + DEFVAL { 10 } + ::= { marsMcsEntry 8 } + +marsMcsRetranDelayTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The delay timer for sending out new MARS_REQUEST + for the group after the MCS learned that there + is no other group in the cluster. The timer must + be set between 5 and 10 seconds inclusive." + ::= { marsMcsEntry 9 } + +marsMcsRdmMulReqAddRetrTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random L_MULTI_RQ/ADD retransmit timer + which can be set between 5 and 10 seconds inclusive." + ::= { marsMcsEntry 10 } + +marsMcsRdmVcRevalidateTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The random time to set VC_revalidate flag. The + timer value ranges between 1 and 10 seconds + inclusive." + ::= { marsMcsEntry 11 } + +marsMcsRegisterRetrInterval OBJECT-TYPE + SYNTAX INTEGER(5..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_MSERV/UNSERV retransmit interval. The minimum + and recommended values are 5 and 10 seconds, + respectively." + DEFVAL { 10 } + ::= { marsMcsEntry 12 } + +marsMcsRegisterRetrLimit OBJECT-TYPE + SYNTAX INTEGER (0..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_MSERV/UNSERV retransmit limit. The maximum value + is 5." + ::= { marsMcsEntry 13 } + +marsMcsRegWithMarsRdmTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Random time for a MCS to register with a MARS." + ::= { marsMcsEntry 14 } + +marsMcsForceWaitTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Force wait if MARS re-registration is looping. + The minimum value is 1 minute." + ::= { marsMcsEntry 15 } + +marsMcsLmtToMissRedirMapTimer OBJECT-TYPE + SYNTAX INTEGER (1..4) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timer limit for MCS to miss MARS_REDIRECT_MAPS." + ::= { marsMcsEntry 16 } + +marsMcsIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configurable inactivity timer associated with a + MCS. When a VC is created at this MCS, it gets + the idle timer value from this configurable timer. + The minimum suggested value is 1 minute and the + recommended default value is 20 minutes." + DEFVAL { 20 } + ::= { marsMcsEntry 17 } + +marsMcsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsMcsStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsMcsDefaultMarsAddr, + marsMcsSsn, + marsMcsRegstration, + marsMcsDefaultMtu + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsMcsVcTable) still exists or is in + use. Once this row is deleted, it is recommended + that the agent or the SNMP management station + (if possible) through the set command deletes + any stale rows that are associated with this + row." + ::= { marsMcsEntry 18 } + + +--**************************************************************** +-- IP ATM MARS MCS Multicast Group Address Object Definitions +--**************************************************************** + +marsMcsMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast group address + blocks associated by a MARS MCS. The MCS uses the + information contained in list to advertise its multicast + group service to the MARS. + Each row can be created or deleted via configuration." + ::= { marsMcsObjects 2 } + +marsMcsMcGrpEntry OBJECT-TYPE + SYNTAX MarsMcsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsMcMinGrpAddr, + marsMcsMcMaxGrpAddr } + ::= { marsMcsMcGrpTable 1 } + +MarsMcsMcGrpEntry ::= + SEQUENCE { + marsMcsMcMinGrpAddr IpAddress, + marsMcsMcMaxGrpAddr IpAddress, + marsMcsMcGrpRowStatus RowStatus + } + +marsMcsMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address. Since the + block joins are no allowed by a MCS as implied in + the RFC2022, the MinGrpAddr and MaxGrpAddress should + be set to the same value at this time when an entry + row is created." + ::= { marsMcsMcGrpEntry 1 } + +marsMcsMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If the + MinGrpAddr and MaxGrpAddr are the same, it indicates + that this block contains a single group address. + Since the block joins are no allowed by a MCS as + implied in the RFC2022, the MinGrpAddr and + MaxGrpAddress should be set to the same value at + this time when an entry row is created." + ::= { marsMcsMcGrpEntry 2 } + +marsMcsMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsMcsMcGrpEntry 3 } + +--**************************************************************** +-- IP ATM MARS MCS Backup MARS Object Definitions +--**************************************************************** + +marsMcsBackupMarsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of backup MARS addresses that + a MCS can make contact to in case of failure for + connecting to the primary server. The list of addresses + is in descending order of preference. It should be noted + that the backup list provided by the MARS to the MCS + via the MARS_REDIRECT_MAP message has a higher preference + than addresses that are manually configured into the MCS. + When such a list is received from the MARS, this information + should be inserted at the top of the list. + Each row can be created or deleted via configuration." + ::= { marsMcsObjects 3 } + +marsMcsBackupMarsEntry OBJECT-TYPE + SYNTAX MarsMcsBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an ATM address of a backup MARS." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsBackupMarsPriority, + marsMcsBackupMarsAddr } + ::= { marsMcsBackupMarsTable 1 } + +MarsMcsBackupMarsEntry ::= + SEQUENCE { + marsMcsBackupMarsPriority Unsigned32, + marsMcsBackupMarsAddr AtmAddr, + marsMcsBackupMarsRowStatus RowStatus + } + +marsMcsBackupMarsPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority associated with a backup MARS. A lower + priority value inidcates a higher preference." + ::= { marsMcsBackupMarsEntry 1 } + +marsMcsBackupMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address associated with a backup MARS." + ::= { marsMcsBackupMarsEntry 2 } + +marsMcsBackupMarsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsMcsBackupMarsEntry 3 } + +--*************************************************************** +-- IP ATM MARS MCS VC Object Definition Table +--*************************************************************** + +marsMcsVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual + circuits (VCs) that a MCS has. For point to + point circuit, each entry represents a single VC + connection between this MCS ATM address to another + party ATM address. In the case of point to + multipoint connection where a single source address + is associated with multiple destinations, several + entries are used to represent the relationship. An + example of point to multi-point VC represented in a + table is shown below. + + MCS VPI/VCI Grp Addr1/Addr2 Part Addr + 1 0,1 g1,g2 p1 + 1 0,1 g1,g2 p2 + 1 0,1 g1,g2 p3" + ::= { marsMcsObjects 4 } + +marsMcsVcEntry OBJECT-TYPE + SYNTAX MarsMcsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related + attributes such as VC signalling type, control VC + type, idle timer, negotiated MTU size, etc." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsVcVpi, + marsMcsVcVci, + marsMcsVcMinGrpAddr, + marsMcsVcMaxGrpAddr, + marsMcsVcPartyAddr } + ::= { marsMcsVcTable 1 } + +MarsMcsVcEntry ::= + SEQUENCE { + marsMcsVcVpi INTEGER, + marsMcsVcVci INTEGER, + marsMcsVcMinGrpAddr IpAddress, + marsMcsVcMaxGrpAddr IpAddress, + marsMcsVcPartyAddr AtmAddr, + marsMcsVcPartyAddrType INTEGER, + marsMcsVcType INTEGER, + marsMcsVcCtrlType INTEGER, + marsMcsVcIdleTimer INTEGER, + marsMcsVcRevalidate TruthValue, + marsMcsVcEncapsType INTEGER, + marsMcsVcNegotiatedMtu INTEGER, + marsMcsVcRowStatus RowStatus + } + +marsMcsVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsMcsVcEntry 1 } + +marsMcsVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). Since + a VCI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsMcsVcEntry 2 } + +marsMcsVcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum IP multicast group address - the min and + max multicast forms a multi-group block which is + associated with a VC. If the MinGrpAddr and + MaxGrpAddr are the same, it indicates that the + size of multi-group block is 1, a single IP group." + ::= { marsMcsVcEntry 3 } + +marsMcsVcMaxGrpAddr OBJECT-TYPE + + + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum IP multicast group address - the min + and max multicast forms a multi-group block + which is associated with a VC. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that the + size of multi-group block is 1, a single IP group." + ::= { marsMcsVcEntry 4 } + +marsMcsVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. + The party type is identified by the + marsMcsVcPartyAddrType." + ::= { marsMcsVcEntry 5 } + +marsMcsVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. + The called (1) indicates that the party address is + a destination address which implies that VC is + originated from this MCS. The calling (2) indicates + the VC was initiated externally to this MCS. In this + case, the party address is the source address." + ::= { marsMcsVcEntry 6 } + +marsMcsVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsMcsVcEntry 7 } + + +marsMcsVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + serverControlVC (2), + pointToMultiPointVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM Clients for the registration and + queries. This VC or the initial signalling path is + set up from the source MCS to a MARS. It is + bi-directional. + serverControlVC (2): + used by a MARS to issue asynchronous updates to an + ATM Client. This VC is established from the MARS + to the MCS. + pointToMultiPointVC (3): + used by the client to transfer multicast data + packets from layer 3. This VC is established from + this VC to a cluster member." + ::= { marsMcsVcEntry 8 } + +marsMcsVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended + default value is 20 minutes." + DEFVAL { 20 } + ::= { marsMcsVcEntry 9 } + +marsMcsVcRevalidate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with an open and active multipoint + VC. It is checked every time a packet is queued for + transmission on that VC. The object has the value of + true (1) if revalidate is required and the value + false (2) otherwise." + ::= { marsMcsVcEntry 10 } + +marsMcsVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsMcsVcEntry 11 } + +marsMcsVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsMcsVcEntry 12 } + +marsMcsVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While objects: marsMcsVcIdleTimer and + marsMcsVcRevalidate in this conceptual row can + be modified irrespective of the value of this + object, all other objects in the row can not be + modified when this object has a value of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsMcsVcType has a value of 'svc' can not + be modified or deleted." + ::= { marsMcsVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS MCS Statistics Definition Table +--*************************************************************** + +marsMcsStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table contains statistics collected at MARS MCSs." + ::= { marsMcsObjects 5 } + +marsMcsStatEntry OBJECT-TYPE + SYNTAX MarsMcsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one + MARS MCS." + INDEX { marsMcsIndex, marsMcsIfIndex } + ::= { marsMcsStatTable 1 } + +MarsMcsStatEntry ::= + SEQUENCE { + marsMcsStatTxReqMsgs Counter32, + marsMcsStatTxMservMsgs Counter32, + marsMcsStatTxUnservMsgs Counter32, + marsMcsStatRxMultiMsgs Counter32, + marsMcsStatRxSjoinMsgs Counter32, + marsMcsStatRxSleaveMsgs Counter32, + marsMcsStatRxNakMsgs Counter32, + marsMcsStatRxMigrateMsgs Counter32, + marsMcsStatFailMultiMsgs Counter32 + } + +marsMcsStatTxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages transmitted + from this MCS." + ::= { marsMcsStatEntry 1 } + +marsMcsStatTxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages transmitted from + this MCS." + ::= { marsMcsStatEntry 2 } + +marsMcsStatTxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages transmitted from + this MCS." + ::= { marsMcsStatEntry 3 } + +marsMcsStatRxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI messages received by + this MCS." + ::= { marsMcsStatEntry 4 } + +marsMcsStatRxSjoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SJOIN messages received by + this MCS." + ::= { marsMcsStatEntry 5 } + +marsMcsStatRxSleaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SLEAVE messages received + by this MCS." + ::= { marsMcsStatEntry 6 } + +marsMcsStatRxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages received + by this MCS." + ::= { marsMcsStatEntry 7 } + +marsMcsStatRxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages received + by this MCS." + ::= { marsMcsStatEntry 8 } + +marsMcsStatFailMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of timeouts occurred indicating + failure of the last MARS_MULTI to arrive." + ::= { marsMcsStatEntry 9 } + +--*************************************************************** +-- IP ATM MARS Notification Definitions +--*************************************************************** + +marsTrapInfo OBJECT IDENTIFIER ::= { marsMIB 0 } + +marsFaultTrap NOTIFICATION-TYPE + OBJECTS { + marsAddr, + marsServStatus + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + there is a fault condition occurred on a MARS." + ::= { marsTrapInfo 1 } + +--*************************************************************** +-- IP ATM MARS Conformance Definitions +--*************************************************************** + +marsConformance OBJECT IDENTIFIER ::= { marsMIB 4 } +marsClientConformance OBJECT IDENTIFIER ::= { marsConformance 1 } +marsServerConformance OBJECT IDENTIFIER ::= { marsConformance 2 } +marsMcsConformance OBJECT IDENTIFIER ::= { marsConformance 3 } + +marsClientCompliances OBJECT IDENTIFIER ::= { marsClientConformance 1 } +marsClientGroups OBJECT IDENTIFIER ::= { marsClientConformance 2 } + +marsServerCompliances OBJECT IDENTIFIER ::= { marsServerConformance 1 } + + +marsServerGroups OBJECT IDENTIFIER ::= { marsServerConformance 2 } + +marsMcsCompliances OBJECT IDENTIFIER ::= { marsMcsConformance 1 } +marsMcsGroups OBJECT IDENTIFIER ::= { marsMcsConformance 2 } + +--*************************************************************** +-- MARS Client Compliance Statements +--*************************************************************** + +marsClientCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS clients." + MODULE + MANDATORY-GROUPS { + marsClientGroup + } + + OBJECT marsClientAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientDefaultMarsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientHsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRegistration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientCmi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT marsClientFailureTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRetranDelayTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRdmMulReqAddRetrTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRdmVcRevalidateTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientJoinLeaveRetrInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientJoinLeaveRetrLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRegWithMarsRdmTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientForceWaitTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientLmtToMissRedirMapTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientBackupMarsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcRevalidate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsClientCompliances 1 } + +marsClientGroup OBJECT-GROUP + OBJECTS { + marsClientAddr, + marsClientDefaultMarsAddr, + marsClientHsn, + marsClientRegistration, + marsClientCmi, + marsClientDefaultMtu, + marsClientFailureTimer, + marsClientRetranDelayTimer, + marsClientRdmMulReqAddRetrTimer, + marsClientRdmVcRevalidateTimer, + marsClientJoinLeaveRetrInterval, + marsClientJoinLeaveRetrLimit, + marsClientRegWithMarsRdmTimer, + marsClientForceWaitTimer, + marsClientIdleTimer, + marsClientLmtToMissRedirMapTimer, + marsClientRowStatus, + marsClientMcGrpRowStatus, + marsClientBackupMarsRowStatus, + marsClientVcPartyAddrType, + marsClientVcType, + marsClientVcCtrlType, + marsClientVcIdleTimer, + marsClientVcRevalidate, + marsClientVcEncapsType, + marsClientVcNegotiatedMtu, + marsClientVcRowStatus, + marsClientStatTxReqMsgs, + marsClientStatTxJoinMsgs, + marsClientStatTxLeaveMsgs, + marsClientStatTxGrpLstReqMsgs, + marsClientStatRxJoinMsgs, + marsClientStatRxLeaveMsgs, + marsClientStatRxMultiMsgs, + marsClientStatRxNakMsgs, + marsClientStatRxGrpLstRplyMsgs, + marsClientStatRxMigrateMsgs, + marsClientStatFailMultiMsgs + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS clients." + ::= { marsClientGroups 1 } + +--*************************************************************** +-- MARS Server Compliance Statements +--*************************************************************** + +marsServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS servers." + MODULE -- this module + MANDATORY-GROUPS { + marsServerGroup, + marsServerEventGroup + } + + OBJECT marsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsLocal + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsRedirMapMsgTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsCsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsSsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcGrpAddrUsage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsHostMapRowType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsHostMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServerMapRowType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServerMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcPartyAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcCmi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT marsVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsServerCompliances 1 } + +marsServerGroup OBJECT-GROUP + OBJECTS { + marsAddr, + marsLocal, + marsServStatus, + marsServType, + marsServPriority, + marsRedirMapMsgTimer, + marsCsn, + marsSsn, + marsRowStatus, + marsMcGrpAddrUsage, + marsMcGrpRxLayer3GrpSets, + marsMcGrpRxLayer3GrpResets, + marsMcGrpRowStatus, + marsHostMapRowType, + marsHostMapRowStatus, + marsServerMapRowType, + marsServerMapRowStatus, + marsVcPartyAddrType, + marsVcType, + marsVcCtrlType, + marsVcIdleTimer, + marsVcCmi, + marsVcEncapsType, + marsVcNegotiatedMtu, + marsVcRowStatus, + marsRegClientAtmAddr, + marsRegMcsAtmAddr, + marsStatTxMultiMsgs, + marsStatTxGrpLstRplyMsgs, + marsStatTxRedirectMapMsgs, + marsStatTxMigrateMsgs, + marsStatTxNakMsgs, + marsStatTxJoinMsgs, + marsStatTxLeaveMsgs, + marsStatTxSjoinMsgs, + marsStatTxSleaveMsgs, + marsStatTxMservMsgs, + marsStatTxUnservMsgs, + marsStatRxReqMsgs, + marsStatRxGrpLstReqMsgs, + marsStatRxJoinMsgs, + marsStatRxLeaveMsgs, + marsStatRxMservMsgs, + marsStatRxUnservMsgs, + marsStatRxBlkJoinMsgs, + marsStatRegMemGroups, + marsStatRegMcsGroups + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS servers." + ::= { marsServerGroups 1 } + +marsServerEventGroup NOTIFICATION-GROUP + NOTIFICATIONS { marsFaultTrap } + STATUS current + DESCRIPTION + "A collection of events that can be generated from + a MARS server." + ::= { marsServerGroups 2 } + +--*************************************************************** +-- MARS Multicast Server (MCS) Compliance Statements +--*************************************************************** + +marsMcsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS multicast servers (MCS)." + MODULE + MANDATORY-GROUPS { + marsMcsGroup + } + + OBJECT marsMcsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsDefaultMarsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRegistration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsSsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsFailureTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRetranDelayTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRdmMulReqAddRetrTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRdmVcRevalidateTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRegisterRetrInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT marsMcsRegisterRetrLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsForceWaitTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsLmtToMissRedirMapTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsBackupMarsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcPartyAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcRevalidate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsMcsCompliances 1 } + +marsMcsGroup OBJECT-GROUP + OBJECTS { + marsMcsAddr, + marsMcsDefaultMarsAddr, + marsMcsRegistration, + marsMcsSsn , + marsMcsDefaultMtu, + marsMcsFailureTimer, + marsMcsRetranDelayTimer, + marsMcsRdmMulReqAddRetrTimer, + marsMcsRdmVcRevalidateTimer, + marsMcsRegisterRetrInterval, + marsMcsRegisterRetrLimit, + marsMcsRegWithMarsRdmTimer, + marsMcsForceWaitTimer, + marsMcsIdleTimer, + marsMcsLmtToMissRedirMapTimer, + marsMcsRowStatus, + marsMcsMcGrpRowStatus, + marsMcsVcPartyAddrType, + marsMcsBackupMarsRowStatus, + marsMcsVcType, + marsMcsVcCtrlType, + marsMcsVcIdleTimer, + marsMcsVcRevalidate, + marsMcsVcEncapsType, + marsMcsVcNegotiatedMtu, + marsMcsVcRowStatus, + marsMcsStatTxReqMsgs, + marsMcsStatTxMservMsgs, + marsMcsStatTxUnservMsgs, + marsMcsStatRxMultiMsgs, + marsMcsStatRxSjoinMsgs, + marsMcsStatRxSleaveMsgs, + marsMcsStatRxNakMsgs, + marsMcsStatRxMigrateMsgs, + marsMcsStatFailMultiMsgs + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS multicast servers (MCS)." + ::= { marsMcsGroups 1 } + + END diff --git a/mibs/ietf/IPMCAST-MIB b/mibs/ietf/IPMCAST-MIB new file mode 100644 index 0000000..a274203 --- /dev/null +++ b/mibs/ietf/IPMCAST-MIB @@ -0,0 +1,2519 @@ +IPMCAST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, Unsigned32, Counter64, + Gauge32, TimeTicks FROM SNMPv2-SMI -- [RFC2578] + RowStatus, TruthValue, + StorageType, TimeStamp FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + CounterBasedGauge64 FROM HCNUM-TC -- [RFC2856] + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB -- [RFC2863] + IANAipRouteProtocol, + IANAipMRouteProtocol FROM IANA-RTPROTO-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetZoneIndex, InetVersion FROM INET-ADDRESS-MIB -- [RFC4001] + LangTag FROM LANGTAG-TC-MIB; -- [RFC5131] + +ipMcastMIB MODULE-IDENTITY + LAST-UPDATED "200711090000Z" -- 9 November 2007 + ORGANIZATION "IETF MBONE Deployment (MBONED) Working Group" + CONTACT-INFO "David McWalter + Data Connection Limited + + + + 100 Church Street + Enfield, EN2 6BQ + UK + + Phone: +44 208 366 1177 + EMail: dmcw@dataconnection.com + + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@dthaler.microsoft.com + + Andrew Kessler + Cisco Systems + 425 E. Tasman Drive + San Jose, CA 95134 + US + + Phone: +1 408 526 5139 + EMail: kessler@cisco.com" + DESCRIPTION + "The MIB module for management of IP Multicast, including + multicast routing, data forwarding, and data reception. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5132; see the RFC itself for full + legal notices." + REVISION "200711090000Z" -- 9 November 2007 + DESCRIPTION "Initial version, published as RFC 5132. + + This MIB module obsoletes IPMROUTE-STD-MIB defined by + [RFC2932]. Changes include the following: + + o This MIB module includes support for IPv6 addressing + and the IPv6 scoped address architecture. [RFC2932] + supported only IPv4. + + o This MIB module allows several multicast protocols + to perform routing on a single interface, where + [RFC2932] assumed each interface supported at most + one multicast routing protocol. Multicast routing + protocols are now per-route, see + ipMcastRouteProtocol. + + + + + o This MIB module includes objects that are not + specific to multicast routing. It allows management + of multicast function on systems that do not perform + routing, whereas [RFC2932] was restricted to + multicast routing. + + o This MIB module includes a table of Source-Specific + Multicast (SSM) address ranges to which SSM + semantics [RFC3569] should be applied. + + o This MIB module includes a table of local + applications that are receiving multicast data. + + o This MIB module includes a table of multicast scope + zones." + ::= { mib-2 168 } + +-- +-- Top-level structure of the MIB +-- + +ipMcast OBJECT IDENTIFIER ::= { ipMcastMIB 1 } + +ipMcastEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled status of IP Multicast function on this + system. + + The storage type of this object is determined by + ipMcastDeviceConfigStorageType." + ::= { ipMcast 1 } + +ipMcastRouteEntryCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the ipMcastRouteTable. This can be + used to check for multicast routing activity, and to monitor + the multicast routing table size." + ::= { ipMcast 2 } + +ipMcastDeviceConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The storage type used for the global IP multicast + configuration of this device, comprised of the objects + listed below. If this storage type takes the value + 'permanent', write-access to the listed objects need not be + allowed. + + The objects described by this storage type are: + ipMcastEnabled." + DEFVAL { nonVolatile } + ::= { ipMcast 11 } + +-- +-- The Multicast Interface Table +-- + +ipMcastInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table used to manage the multicast + protocol active on an interface." + ::= { ipMcast 3 } + +ipMcastInterfaceEntry OBJECT-TYPE + SYNTAX IpMcastInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast protocol + information for a particular interface. + + Per-interface multicast forwarding statistics are also + available in ipIfStatsTable." + REFERENCE "RFC 4293 ipIfStatsTable" + INDEX { ipMcastInterfaceIPVersion, + ipMcastInterfaceIfIndex } + ::= { ipMcastInterfaceTable 1 } + +IpMcastInterfaceEntry ::= SEQUENCE { + ipMcastInterfaceIPVersion InetVersion, + ipMcastInterfaceIfIndex InterfaceIndex, + ipMcastInterfaceTtl Unsigned32, + ipMcastInterfaceRateLimit Unsigned32, + ipMcastInterfaceStorageType StorageType +} + + + +ipMcastInterfaceIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipMcastInterfaceEntry 1 } + +ipMcastInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that 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 the IF-MIB's ifIndex." + ::= { ipMcastInterfaceEntry 2 } + +ipMcastInterfaceTtl OBJECT-TYPE + SYNTAX Unsigned32 (0..256) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The datagram Time to Live (TTL) threshold for the + interface. Any IP multicast datagrams with a TTL (IPv4) or + Hop Limit (IPv6) less than this threshold will not be + forwarded out the interface. The default value of 0 means + all multicast packets are forwarded out the interface. A + value of 256 means that no multicast packets are forwarded + out the interface." + DEFVAL { 0 } + ::= { ipMcastInterfaceEntry 3 } + +ipMcastInterfaceRateLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The rate-limit, in kilobits per second, of forwarded + multicast traffic on the interface. A rate-limit of 0 + indicates that no rate limiting is done." + DEFVAL { 0 } + ::= { ipMcastInterfaceEntry 4 } + +ipMcastInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastInterfaceEntry 5 } + +-- +-- The SSM Range Table +-- + +ipMcastSsmRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastSsmRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to create and manage the range(s) of + group addresses to which SSM semantics should be applied." + REFERENCE "RFC 3569" + ::= { ipMcast 4 } + +ipMcastSsmRangeEntry OBJECT-TYPE + SYNTAX IpMcastSsmRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing a range of group + addresses to which SSM semantics should be applied. + + Object Identifiers (OIDs) are limited to 128 + sub-identifiers, but this limit is not enforced by the + syntax of this entry. In practice, this does not present + a problem, because IP address types allowed by conformance + statements do not exceed this limit." + REFERENCE "RFC 3569" + INDEX { ipMcastSsmRangeAddressType, + ipMcastSsmRangeAddress, + ipMcastSsmRangePrefixLength } + ::= { ipMcastSsmRangeTable 1 } + +IpMcastSsmRangeEntry ::= SEQUENCE { + ipMcastSsmRangeAddressType InetAddressType, + ipMcastSsmRangeAddress InetAddress, + ipMcastSsmRangePrefixLength InetAddressPrefixLength, + ipMcastSsmRangeRowStatus RowStatus, + ipMcastSsmRangeStorageType StorageType +} + + + +ipMcastSsmRangeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the multicast group prefix." + ::= { ipMcastSsmRangeEntry 1 } + +ipMcastSsmRangeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address which, when combined with + ipMcastSsmRangePrefixLength, gives the group prefix for this + SSM range. The InetAddressType is given by + ipMcastSsmRangeAddressType. + + This address object is only significant up to + ipMcastSsmRangePrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For IPv6 SSM address ranges, only ranges prefixed by + FF3x::/16 are permitted, where 'x' is a valid IPv6 RFC 4291 + multicast address scope. The syntax of the address range is + given by RFC 3306, Sections 4 and 7. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + SSM range entry applies only within the given zone. Zone + index zero is not valid in this table. + + If non-global scope SSM range entries are present, then + consistent ipMcastBoundaryTable entries are required on + routers at the zone boundary." + REFERENCE "RFC 2365, RFC 4291 Section 2.7, RFC 3306 Sections 4, 6, + and 7" + ::= { ipMcastSsmRangeEntry 2 } + +ipMcastSsmRangePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + + + + ipMcastSsmRangeAddress, gives the group prefix for this SSM + range. + + The InetAddressType is given by ipMcastSsmRangeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." + REFERENCE "RFC 2365, RFC 4291 Section 2.7, RFC 3306 Sections 4, 6, + and 7" + ::= { ipMcastSsmRangeEntry 3 } + +ipMcastSsmRangeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { ipMcastSsmRangeEntry 4 } + +ipMcastSsmRangeStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastSsmRangeEntry 5 } + +-- +-- The IP Multicast Routing Table +-- + +ipMcastRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information for IP datagrams sent by particular sources + + + + to the IP multicast groups known to this router." + ::= { ipMcast 5 } + +ipMcastRouteEntry OBJECT-TYPE + SYNTAX IpMcastRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for IP datagrams from a particular source and + addressed to a particular IP multicast group address. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastRouteGroupAddressType, + ipMcastRouteGroup, + ipMcastRouteGroupPrefixLength, + ipMcastRouteSourceAddressType, + ipMcastRouteSource, + ipMcastRouteSourcePrefixLength } + ::= { ipMcastRouteTable 1 } + +IpMcastRouteEntry ::= SEQUENCE { + ipMcastRouteGroupAddressType InetAddressType, + ipMcastRouteGroup InetAddress, + ipMcastRouteGroupPrefixLength InetAddressPrefixLength, + ipMcastRouteSourceAddressType InetAddressType, + ipMcastRouteSource InetAddress, + ipMcastRouteSourcePrefixLength InetAddressPrefixLength, + ipMcastRouteUpstreamNeighborType InetAddressType, + ipMcastRouteUpstreamNeighbor InetAddress, + ipMcastRouteInIfIndex InterfaceIndexOrZero, + ipMcastRouteTimeStamp TimeStamp, + ipMcastRouteExpiryTime TimeTicks, + ipMcastRouteProtocol IANAipMRouteProtocol, + ipMcastRouteRtProtocol IANAipRouteProtocol, + ipMcastRouteRtAddressType InetAddressType, + ipMcastRouteRtAddress InetAddress, + ipMcastRouteRtPrefixLength InetAddressPrefixLength, + ipMcastRouteRtType INTEGER, + ipMcastRouteOctets Counter64, + ipMcastRoutePkts Counter64, + ipMcastRouteTtlDropOctets Counter64, + ipMcastRouteTtlDropPackets Counter64, + ipMcastRouteDifferentInIfOctets Counter64, + ipMcastRouteDifferentInIfPackets Counter64, + + + + ipMcastRouteBps CounterBasedGauge64 +} + +ipMcastRouteGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteGroup. Legal values correspond to + the subset of address families for which multicast + forwarding is supported." + ::= { ipMcastRouteEntry 1 } + +ipMcastRouteGroup OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + the corresponding value specified in + ipMcastRouteGroupPrefixLength, identifies the groups for + which this entry contains multicast routing information. + + This address object is only significant up to + ipMcastRouteGroupPrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 2 } + +ipMcastRouteGroupPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteGroup, identifies the + groups for which this entry contains multicast routing + information. + + The InetAddressType is given by + + + + ipMcastRouteGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteEntry 3 } + +ipMcastRouteSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastRouteGroupType." + ::= { ipMcastRouteEntry 4 } + +ipMcastRouteSource OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of ipMcastRouteSourcePrefixLength, + identifies the sources for which this entry contains + multicast routing information. + + This address object is only significant up to + ipMcastRouteSourcePrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + source address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 5 } + +ipMcastRouteSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteSource, identifies + the sources for which this entry contains multicast routing + information. + + The InetAddressType is given by + ipMcastRouteSourceAddressType. For the value 'unknown', + this object must be zero. For values 'ipv4' and 'ipv4z', + this object must be in the range 4..32. For values 'ipv6' + and 'ipv6z', this object must be in the range 8..128." + ::= { ipMcastRouteEntry 6 } + +ipMcastRouteUpstreamNeighborType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteUpstreamNeighbor. + + An address type of unknown(0) indicates that the upstream + neighbor is unknown, for example in BIDIR-PIM." + REFERENCE "RFC 5015" + ::= { ipMcastRouteEntry 7 } + +ipMcastRouteUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the upstream neighbor (for example, RPF + neighbor) from which IP datagrams from these sources to + this multicast address are received." + ::= { ipMcastRouteEntry 8 } + +ipMcastRouteInIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface on which IP + datagrams sent by these sources to this multicast address + are received. A value of 0 indicates that datagrams are not + subject to an incoming interface check, but may be accepted + on multiple interfaces (for example, in BIDIR-PIM)." + REFERENCE "RFC 5015" + ::= { ipMcastRouteEntry 9 } + + + + +ipMcastRouteTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast routing + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastRouteEntry 10 } + +ipMcastRouteExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. The value 0 indicates that the entry is not + subject to aging. If ipMcastRouteNextHopState is pruned(1), + this object represents the remaining time until the prune + expires. If this timer expires, state reverts to + forwarding(2). Otherwise, this object represents the time + until this entry is removed from the table." + ::= { ipMcastRouteEntry 11 } + +ipMcastRouteProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast routing protocol via which this multicast + forwarding entry was learned." + ::= { ipMcastRouteEntry 12 } + +ipMcastRouteRtProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + upstream or parent interface for this multicast forwarding + entry was learned." + ::= { ipMcastRouteEntry 13 } + +ipMcastRouteRtAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteRtAddress." + ::= { ipMcastRouteEntry 14 } + +ipMcastRouteRtAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address portion of the route used to find the upstream + or parent interface for this multicast forwarding entry. + + This address object is only significant up to + ipMcastRouteRtPrefixLength bits. The remaining address bits + are set to zero. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 15 } + +ipMcastRouteRtPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length in bits of the mask associated with the route + used to find the upstream or parent interface for this + multicast forwarding entry. + + The InetAddressType is given by ipMcastRouteRtAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." + ::= { ipMcastRouteEntry 16 } + +ipMcastRouteRtType OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), -- Unicast route used in multicast RIB + multicast (2) -- Multicast route + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The reason the given route was placed in the (logical) + multicast Routing Information Base (RIB). A value of + unicast means that the route would normally be placed only + in the unicast RIB, but was placed in the multicast RIB + due (instead or in addition) to local configuration, such as + when running PIM over RIP. A value of multicast means that + the route was explicitly added to the multicast RIB by the + routing protocol, such as the Distance Vector Multicast + Routing Protocol (DVMRP) or Multiprotocol BGP." + ::= { ipMcastRouteEntry 17 } + +ipMcastRouteOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams that were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 18 } + +ipMcastRoutePkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets routed using this multicast route + entry. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 19 } + +ipMcastRouteTtlDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of octets contained in IP datagrams that this + router has received from these sources and addressed to this + multicast group address, which were dropped because the TTL + (IPv4) or Hop Limit (IPv6) was decremented to zero, or to a + value less than ipMcastInterfaceTtl for all next hops. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 20 } + +ipMcastRouteTtlDropPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that this router has received from + these sources and addressed to this multicast group address, + which were dropped because the TTL (IPv4) or Hop Limit + (IPv6) was decremented to zero, or to a value less than + ipMcastInterfaceTtl for all next hops. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 21 } + +ipMcastRouteDifferentInIfOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams that this + router has received from these sources and addressed to this + multicast group address, which were dropped because they + were received on an unexpected interface. + + For RPF checking protocols (such as PIM-SM), these packets + arrived on interfaces other than ipMcastRouteInIfIndex, and + were dropped because of this failed RPF check. (RPF paths + are 'Reverse Path Forwarding' paths; the unicast routes to + the expected origin of multicast data flows). + + + + + Other protocols may drop packets on an incoming interface + check for different reasons (for example, BIDIR-PIM performs + a DF check on receipt of packets). All packets dropped as a + result of an incoming interface check are counted here. + + If this counter increases rapidly, this indicates a problem. + A significant quantity of multicast data is arriving at this + router on unexpected interfaces, and is not being forwarded. + + For guidance, if the rate of increase of this counter + exceeds 1% of the rate of increase of ipMcastRouteOctets, + then there are multicast routing problems that require + investigation. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + REFERENCE "RFC 4601 and RFC 5015" + ::= { ipMcastRouteEntry 22 } + +ipMcastRouteDifferentInIfPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group address, + which were dropped because they were received on an + unexpected interface. + + For RPF checking protocols (such as PIM-SM), these packets + arrived on interfaces other than ipMcastRouteInIfIndex, and + were dropped because of this failed RPF check. (RPF paths + are 'Reverse Path Forwarding' path; the unicast routes to + the expected origin of multicast data flows). + + Other protocols may drop packets on an incoming interface + check for different reasons (for example, BIDIR-PIM performs + a DF check on receipt of packets). All packets dropped as a + result of an incoming interface check are counted here. + + If this counter increases rapidly, this indicates a problem. + A significant quantity of multicast data is arriving at this + router on unexpected interfaces, and is not being forwarded. + + For guidance, if the rate of increase of this counter + + + + exceeds 1% of the rate of increase of ipMcastRoutePkts, then + there are multicast routing problems that require + investigation. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + REFERENCE "RFC 4601 and RFC 5015" + ::= { ipMcastRouteEntry 23 } + +ipMcastRouteBps OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Bits per second forwarded by this router using this + multicast routing entry. + + This value is a sample; it is the number of bits forwarded + during the last whole 1 second sampling period. The value + during the current 1 second sampling period is not made + available until the period is completed. + + The quantity being sampled is the same as that measured by + ipMcastRouteOctets. The units and the sampling method are + different." + ::= { ipMcastRouteEntry 24 } +-- +-- The IP Multicast Routing Next Hop Table +-- + +ipMcastRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on the + next-hops on outgoing interfaces for routing IP multicast + datagrams. Each entry is one of a list of next-hops on + outgoing interfaces for particular sources sending to a + particular multicast group address." + ::= { ipMcast 6 } + +ipMcastRouteNextHopEntry OBJECT-TYPE + SYNTAX IpMcastRouteNextHopEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the list of next-hops on + outgoing interfaces to which IP multicast datagrams from + particular sources to an IP multicast group address are + routed. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastRouteNextHopGroupAddressType, + ipMcastRouteNextHopGroup, + ipMcastRouteNextHopGroupPrefixLength, + ipMcastRouteNextHopSourceAddressType, + ipMcastRouteNextHopSource, + ipMcastRouteNextHopSourcePrefixLength, + ipMcastRouteNextHopIfIndex, + ipMcastRouteNextHopAddressType, + ipMcastRouteNextHopAddress } + ::= { ipMcastRouteNextHopTable 1 } + +IpMcastRouteNextHopEntry ::= SEQUENCE { + ipMcastRouteNextHopGroupAddressType InetAddressType, + ipMcastRouteNextHopGroup InetAddress, + ipMcastRouteNextHopGroupPrefixLength InetAddressPrefixLength, + ipMcastRouteNextHopSourceAddressType InetAddressType, + ipMcastRouteNextHopSource InetAddress, + ipMcastRouteNextHopSourcePrefixLength InetAddressPrefixLength, + ipMcastRouteNextHopIfIndex InterfaceIndex, + ipMcastRouteNextHopAddressType InetAddressType, + ipMcastRouteNextHopAddress InetAddress, + ipMcastRouteNextHopState INTEGER, + ipMcastRouteNextHopTimeStamp TimeStamp, + ipMcastRouteNextHopExpiryTime TimeTicks, + ipMcastRouteNextHopClosestMemberHops Unsigned32, + ipMcastRouteNextHopProtocol IANAipMRouteProtocol, + ipMcastRouteNextHopOctets Counter64, + ipMcastRouteNextHopPkts Counter64 +} + +ipMcastRouteNextHopGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + + + + contained in ipMcastRouteNextHopGroup. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastRouteNextHopEntry 1 } + +ipMcastRouteNextHopGroup OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + the corresponding value specified in + ipMcastRouteNextHopGroupPrefixLength, identifies the groups + for which this entry contains multicast forwarding + information. + + This address object is only significant up to + ipMcastRouteNextHopGroupPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteNextHopEntry 2 } + +ipMcastRouteNextHopGroupPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteGroup, identifies the + groups for which this entry contains multicast routing + information. + + The InetAddressType is given by + ipMcastRouteNextHopGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteNextHopEntry 3 } + +ipMcastRouteNextHopSourceAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteNextHopSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastRouteNextHopGroupType." + ::= { ipMcastRouteNextHopEntry 4 } + +ipMcastRouteNextHopSource OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of the mask specified in + ipMcastRouteNextHopSourcePrefixLength, identifies the + sources for which this entry specifies a next-hop on an + outgoing interface. + + This address object is only significant up to + ipMcastRouteNextHopSourcePrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + source address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteNextHopEntry 5 } + +ipMcastRouteNextHopSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value specified in + ipMcastRouteNextHopSource, identifies the sources for which + this entry specifies a next-hop on an outgoing interface. + + + + + The InetAddressType is given by + ipMcastRouteNextHopSourceAddressType. For the value + 'unknown', this object must be zero. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteNextHopEntry 6 } + +ipMcastRouteNextHopIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for the outgoing + interface for this next-hop." + ::= { ipMcastRouteNextHopEntry 7 } + +ipMcastRouteNextHopAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteNextHopAddress." + ::= { ipMcastRouteNextHopEntry 8 } + +ipMcastRouteNextHopAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the next-hop specific to this entry. For + most interfaces, this is identical to + ipMcastRouteNextHopGroup. Non-Broadcast Multi-Access + (NBMA) interfaces, however, may + have multiple next-hop addresses out a single outgoing + interface." + ::= { ipMcastRouteNextHopEntry 9 } + +ipMcastRouteNextHopState OBJECT-TYPE + SYNTAX INTEGER { pruned(1), forwarding(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the outgoing interface and next- + hop represented by this entry is currently being used to + forward IP datagrams. The value 'forwarding' indicates it + is currently being used; the value 'pruned' indicates it is + + + + not." + ::= { ipMcastRouteNextHopEntry 10 } + +ipMcastRouteNextHopTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast routing + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastRouteNextHopEntry 11 } + +ipMcastRouteNextHopExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. If ipMcastRouteNextHopState is pruned(1), the + remaining time until the prune expires and the state reverts + to forwarding(2). Otherwise, the remaining time until this + entry is removed from the table. The time remaining may be + copied from ipMcastRouteExpiryTime if the protocol in use + for this entry does not specify next-hop timers. The value + 0 indicates that the entry is not subject to aging." + ::= { ipMcastRouteNextHopEntry 12 } + +ipMcastRouteNextHopClosestMemberHops OBJECT-TYPE + SYNTAX Unsigned32 (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of hops between this router and any + member of this IP multicast group reached via this next-hop + on this outgoing interface. Any IP multicast datagrams for + the group that have a TTL (IPv4) or Hop Count (IPv6) less + than this number of hops will not be forwarded to this + next-hop. + + A value of 0 means all multicast datagrams are forwarded out + the interface. A value of 256 means that no multicast + datagrams are forwarded out the interface. + + + + + This is an optimization applied by multicast routing + protocols that explicitly track hop counts to downstream + listeners. Multicast protocols that are not aware of hop + counts to downstream listeners set this object to 0." + ::= { ipMcastRouteNextHopEntry 13 } + +ipMcastRouteNextHopProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this next-hop was learned." + ::= { ipMcastRouteNextHopEntry 14 } + +ipMcastRouteNextHopOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + forwarded using this route. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteNextHopTimeStamp." + ::= { ipMcastRouteNextHopEntry 15 } + +ipMcastRouteNextHopPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which have been forwarded using this + route. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteNextHopTimeStamp." + ::= { ipMcastRouteNextHopEntry 16 } + +-- +-- The IP Multicast Scope Boundary Table +-- + + + + +ipMcastBoundaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the system's multicast scope + zone boundaries." + REFERENCE "RFC 4007 Section 5" + ::= { ipMcast 7 } + +ipMcastBoundaryEntry OBJECT-TYPE + SYNTAX IpMcastBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) describing one of this device's + multicast scope zone boundaries. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + REFERENCE "RFC 2365 Section 5, RFC 4007 Section 5" + INDEX { ipMcastBoundaryIfIndex, + ipMcastBoundaryAddressType, + ipMcastBoundaryAddress, + ipMcastBoundaryAddressPrefixLength } + ::= { ipMcastBoundaryTable 1 } + +IpMcastBoundaryEntry ::= SEQUENCE { + ipMcastBoundaryIfIndex InterfaceIndex, + ipMcastBoundaryAddressType InetAddressType, + ipMcastBoundaryAddress InetAddress, + ipMcastBoundaryAddressPrefixLength InetAddressPrefixLength, + ipMcastBoundaryTimeStamp TimeStamp, + ipMcastBoundaryDroppedMcastOctets Counter64, + ipMcastBoundaryDroppedMcastPkts Counter64, + ipMcastBoundaryStatus RowStatus, + ipMcastBoundaryStorageType StorageType +} + +ipMcastBoundaryIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value for the interface to which this boundary + applies. Packets with a destination address in the + + + + associated address/mask range will not be forwarded over + this interface. + + For IPv4, zone boundaries cut through links. Therefore, + this is an external interface. This may be either a + physical or virtual interface (tunnel, encapsulation, and + so forth.) + + For IPv6, zone boundaries cut through nodes. Therefore, + this is a virtual interface within the node. This is not + an external interface, either real or virtual. Packets + crossing this interface neither arrive at nor leave the + node, but only move between zones within the node." + REFERENCE "RFC 2365 Section 5, RFC 4007 Section 5" + ::= { ipMcastBoundaryEntry 1 } + +ipMcastBoundaryAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastBoundaryAddress. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastBoundaryEntry 2 } + +ipMcastBoundaryAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which, when combined with the + corresponding value of ipMcastBoundaryAddressPrefixLength, + identifies the group range for which the scoped boundary + exists. Scoped IPv4 multicast address ranges must be + prefixed by 239.0.0.0/8. Scoped IPv6 multicast address + ranges are FF0x::/16, where x is a valid RFC 4291 multicast + scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A zone boundary + for FF0x::/16 implies an identical boundary for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + + + + ipMcastBoundaryAddressPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry." + ::= { ipMcastBoundaryEntry 3 } + +ipMcastBoundaryAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which when, combined with + the corresponding value of ipMcastBoundaryAddress, + identifies the group range for which the scoped boundary + exists. + + The InetAddressType is given by ipMcastBoundaryAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastBoundaryEntry 4 } + +ipMcastBoundaryTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast boundary + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastBoundaryEntry 5 } + +ipMcastBoundaryDroppedMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + dropped as a result of this zone boundary configuration. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of boundary + + + + configuration being removed and replaced, which can be + detected by observing the value of + ipMcastBoundaryTimeStamp." + ::= { ipMcastBoundaryEntry 6 } + +ipMcastBoundaryDroppedMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets that have been dropped as a + result of this zone boundary configuration. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of boundary + configuration being removed and replaced, which can be + detected by observing the value of + ipMcastBoundaryTimeStamp." + ::= { ipMcastBoundaryEntry 7 } + +ipMcastBoundaryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { ipMcastBoundaryEntry 8 } + +ipMcastBoundaryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastBoundaryEntry 9 } + +-- + + + +-- The IP Multicast Scope Name Table +-- + +ipMcastScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing multicast scope names." + REFERENCE "RFC 4007 Section 4" + ::= { ipMcast 8 } + +ipMcastScopeNameEntry OBJECT-TYPE + SYNTAX IpMcastScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) that names a multicast address + scope. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + REFERENCE "RFC 4007 Section 4" + INDEX { ipMcastScopeNameAddressType, + ipMcastScopeNameAddress, + ipMcastScopeNameAddressPrefixLength, + ipMcastScopeNameLanguage } + ::= { ipMcastScopeNameTable 1 } + +IpMcastScopeNameEntry ::= SEQUENCE { + ipMcastScopeNameAddressType InetAddressType, + ipMcastScopeNameAddress InetAddress, + ipMcastScopeNameAddressPrefixLength InetAddressPrefixLength, + ipMcastScopeNameLanguage LangTag, + ipMcastScopeNameString SnmpAdminString, + ipMcastScopeNameDefault TruthValue, + ipMcastScopeNameStatus RowStatus, + ipMcastScopeNameStorageType StorageType +} + +ipMcastScopeNameAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + + + + contained in ipMcastScopeNameAddress. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastScopeNameEntry 1 } + +ipMcastScopeNameAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which, when combined with the + corresponding value of ipMcastScopeNameAddressPrefixLength, + identifies the group range associated with the multicast + scope. Scoped IPv4 multicast address ranges must be + prefixed by 239.0.0.0/8. Scoped IPv6 multicast address + ranges are FF0x::/16, where x is a valid RFC 4291 multicast + scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope name for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + ipMcastScopeNameAddressPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry." + ::= { ipMcastScopeNameEntry 2 } + +ipMcastScopeNameAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastScopeNameAddress, + identifies the group range associated with the multicast + scope. + + The InetAddressType is given by ipMcastScopeNameAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastScopeNameEntry 3 } + + + +ipMcastScopeNameLanguage OBJECT-TYPE + SYNTAX LangTag + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Language tag associated with the scope name." + REFERENCE "RFC 4646" + ::= { ipMcastScopeNameEntry 4 } + +ipMcastScopeNameString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. + + When no name is specified, the default value of this object + for IPv4 should be the string 239.x.x.x/y with x and y + replaced with decimal values to describe the address and + mask length associated with the scope. + + When no name is specified, the default value of this object + for IPv6 should be the string FF0x::/16, with x replaced by + the hexadecimal value for the RFC 4291 multicast scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope name for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table." + REFERENCE "RFC 2365, RFC 3306 Section 4, RFC 4291 Section 2.7" + ::= { ipMcastScopeNameEntry 5 } + +ipMcastScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + following language should be used by applications if no name + is available in a desired language." + DEFVAL { false } + ::= { ipMcastScopeNameEntry 6 } + + + + +ipMcastScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. Before the row can be activated, + the object ipMcastScopeNameString must be set to a valid + value. All writeable objects in this entry can be modified + when the status is active(1)." + ::= { ipMcastScopeNameEntry 7 } + +ipMcastScopeNameStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastScopeNameEntry 8 } + +-- +-- The Multicast Listeners Table +-- + +ipMcastLocalListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastLocalListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing local applications or + services that have joined multicast groups as listeners. + + Entries exist for all addresses in the multicast range for + all applications and services as they are classified on this + device." + ::= { ipMcast 9 } + +ipMcastLocalListenerEntry OBJECT-TYPE + SYNTAX IpMcastLocalListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) identifying a local application + or service that has joined a multicast group as a listener. + + + + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastLocalListenerGroupAddressType, + ipMcastLocalListenerGroupAddress, + ipMcastLocalListenerSourceAddressType, + ipMcastLocalListenerSourceAddress, + ipMcastLocalListenerSourcePrefixLength, + ipMcastLocalListenerIfIndex, + ipMcastLocalListenerRunIndex } + ::= { ipMcastLocalListenerTable 1 } + +IpMcastLocalListenerEntry ::= SEQUENCE { + ipMcastLocalListenerGroupAddressType InetAddressType, + ipMcastLocalListenerGroupAddress InetAddress, + ipMcastLocalListenerSourceAddressType InetAddressType, + ipMcastLocalListenerSourceAddress InetAddress, + ipMcastLocalListenerSourcePrefixLength InetAddressPrefixLength, + ipMcastLocalListenerIfIndex InterfaceIndex, + ipMcastLocalListenerRunIndex Unsigned32 +} + +ipMcastLocalListenerGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastLocalListenerGroupAddress. Legal values + correspond to the subset of address families for which + multicast is supported." + ::= { ipMcastLocalListenerEntry 1 } + +ipMcastLocalListenerGroupAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group for which this entry specifies + locally joined applications or services." + ::= { ipMcastLocalListenerEntry 2 } + +ipMcastLocalListenerSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A value indicating the address family of the address + contained in ipMcastLocalListenerSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastLocalListenerGroupAddressType." + ::= { ipMcastLocalListenerEntry 3 } + +ipMcastLocalListenerSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of the mask specified in + ipMcastLocalListenerSourcePrefixLength, identifies the + sources for which this entry specifies a local listener. + + This address object is only significant up to + ipMcastLocalListenerSourcePrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + listener address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastLocalListenerEntry 4 } + +ipMcastLocalListenerSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value specified in + ipMcastLocalListenerSource, identifies the sources for which + this entry specifies a local listener. + + The InetAddressType is given by + ipMcastLocalListenerSourceAddressType. For the value + 'unknown', this object must be zero. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + + + + 8..128." + ::= { ipMcastLocalListenerEntry 5 } + +ipMcastLocalListenerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value of the interface for which this entry + specifies a local listener." + ::= { ipMcastLocalListenerEntry 6 } + +ipMcastLocalListenerRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value corresponding to a piece of software running + on this router or host system. Where possible, this should + be the system's native, unique identification number. + + This identifier is platform-specific. It may correspond to + a process ID or application instance number. + + A value of zero indicates that the application instance(s) + cannot be identified. A value of zero indicates that one or + more unidentified applications have joined the specified + multicast groups (for the specified sources) as listeners." + REFERENCE "RFC 2287 sysApplRunIndex" + ::= { ipMcastLocalListenerEntry 7 } + +-- +-- The Multicast Zone Table +-- + +ipMcastZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing scope zones on this device." + REFERENCE "RFC 4007 Section 5" + ::= { ipMcast 10 } + +ipMcastZoneEntry OBJECT-TYPE + SYNTAX IpMcastZoneEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (conceptual row) describing a scope zone on this + device." + REFERENCE "RFC 4007 Section 5" + INDEX { ipMcastZoneIndex } + ::= { ipMcastZoneTable 1 } + +IpMcastZoneEntry ::= SEQUENCE { + ipMcastZoneIndex InetZoneIndex, + ipMcastZoneScopeDefaultZoneIndex InetZoneIndex, + ipMcastZoneScopeAddressType InetAddressType, + ipMcastZoneScopeAddress InetAddress, + ipMcastZoneScopeAddressPrefixLength InetAddressPrefixLength +} + +ipMcastZoneIndex OBJECT-TYPE + SYNTAX InetZoneIndex (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This zone index uniquely identifies a zone on a device. + + Each zone is for a given scope. Scope-level information in + this table is for the unique scope that corresponds to this + zone. + + Zero is a special value used to request the default zone for + a given scope. Zero is not a valid value for this object. + + To test whether ipMcastZoneIndex is the default zone for + this scope, test whether ipMcastZoneIndex is equal to + ipMcastZoneScopeDefaultZoneIndex." + ::= { ipMcastZoneEntry 1 } + +ipMcastZoneScopeDefaultZoneIndex OBJECT-TYPE + SYNTAX InetZoneIndex (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default zone index for this scope. This is the zone + that this device will use if the default (zero) zone is + requested for this scope. + + Zero is not a valid value for this object." + ::= { ipMcastZoneEntry 2 } + +ipMcastZoneScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address type for which this scope zone exists." + ::= { ipMcastZoneEntry 3 } + +ipMcastZoneScopeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group address which, when combined with + ipMcastZoneScopeAddressPrefixLength, gives the multicast + address range for this scope. The InetAddressType is given + by ipMcastZoneScopeAddressType. + + Scoped IPv4 multicast address ranges are prefixed by + 239.0.0.0/8. Scoped IPv6 multicast address ranges are + FF0x::/16, where x is a valid RFC 4291 multicast scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + ipMcastZoneScopeAddressPrefixLength bits. The remaining + address bits are set to zero." + REFERENCE "RFC 2365, RFC 3306 Section 4, RFC 4291 Section 2.7" + ::= { ipMcastZoneEntry 4 } + +ipMcastZoneScopeAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined + with ipMcastZoneScopeAddress, gives the multicast address + prefix for this scope. + + The InetAddressType is given by ipMcastZoneScopeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastZoneEntry 5 } + + + + +-- +-- Conformance information +-- + +ipMcastMIBConformance + OBJECT IDENTIFIER ::= { ipMcastMIB 2 } +ipMcastMIBCompliances + OBJECT IDENTIFIER ::= { ipMcastMIBConformance 1 } +ipMcastMIBGroups OBJECT IDENTIFIER ::= { ipMcastMIBConformance 2 } + +-- +-- Compliance statements +-- + +ipMcastMIBComplianceHost MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastLocalListenerGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerGroupAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBLocalListenerGroup, + + + + ipMcastMIBBasicGroup } + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBSsmGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBBoundaryIfGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBScopeNameGroup + DESCRIPTION + "This group is optional." + + ::= { ipMcastMIBCompliances 1 } + +ipMcastMIBComplianceRouter MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers supporting + IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + + + + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + + + + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, + ipMcastMIBBasicGroup, + ipMcastMIBSsmGroup, + ipMcastMIBRouteGroup } + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceRateLimit + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastSsmRangeRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastSsmRangeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is not mandatory, but SHOULD be supported where + hardware permits." + + + + GROUP ipMcastMIBPktsOutGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBHopCountGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteOctetsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteBpsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBLocalListenerGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBBoundaryIfGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBScopeNameGroup + DESCRIPTION + "This group is optional." + + ::= { ipMcastMIBCompliances 2 } + +ipMcastMIBComplianceBorderRouter MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers on scope + boundaries supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4z or ipv6z is + mandatory; support for both InetAddressTypes ipv4z and + ipv6z is optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + + + + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + + + + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastBoundaryAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastBoundaryAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, + ipMcastMIBBasicGroup, + ipMcastMIBSsmGroup, + ipMcastMIBRouteGroup, + ipMcastMIBBoundaryIfGroup, + ipMcastMIBScopeNameGroup } + + + + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceRateLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + + + + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastSsmRangeRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastSsmRangeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is not mandatory, but SHOULD be supported where + hardware permits." + + GROUP ipMcastMIBPktsOutGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBHopCountGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteOctetsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteBpsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBLocalListenerGroup + DESCRIPTION + "This group is optional." + + OBJECT ipMcastZoneScopeAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." + + OBJECT ipMcastZoneScopeAddress + SYNTAX InetAddress (SIZE (4|16)) + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." + + + + + ::= { ipMcastMIBCompliances 3 } + +-- +-- Units of conformance +-- +ipMcastMIBBasicGroup OBJECT-GROUP + OBJECTS { ipMcastEnabled, + ipMcastRouteEntryCount, + ipMcastDeviceConfigStorageType + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast protocols." + ::= { ipMcastMIBGroups 1 } + +ipMcastMIBSsmGroup OBJECT-GROUP + OBJECTS { ipMcastSsmRangeRowStatus, + ipMcastSsmRangeStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support management of Source- + Specific Multicast routing." + ::= { ipMcastMIBGroups 2 } + +ipMcastMIBRouteGroup OBJECT-GROUP + OBJECTS { ipMcastInterfaceTtl, + ipMcastInterfaceRateLimit, + ipMcastInterfaceStorageType, + ipMcastRouteUpstreamNeighborType, + ipMcastRouteUpstreamNeighbor, + ipMcastRouteInIfIndex, + ipMcastRouteTimeStamp, + ipMcastRouteExpiryTime, + ipMcastRouteNextHopState, + ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopExpiryTime + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast routing." + ::= { ipMcastMIBGroups 3 } + +ipMcastMIBRouteDiagnosticsGroup OBJECT-GROUP + OBJECTS { ipMcastRoutePkts, + ipMcastRouteTtlDropPackets, + ipMcastRouteDifferentInIfPackets + + + + } + STATUS current + DESCRIPTION + "A collection of routing diagnostic packet counters." + ::= { ipMcastMIBGroups 4 } + +ipMcastMIBPktsOutGroup OBJECT-GROUP + OBJECTS { ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopPkts } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each outgoing interface entry of a route." + ::= { ipMcastMIBGroups 5 } + +ipMcastMIBHopCountGroup OBJECT-GROUP + OBJECTS { ipMcastRouteNextHopClosestMemberHops } + STATUS current + DESCRIPTION + "A collection of objects to support management of the use of + hop counts in IP Multicast routing." + ::= { ipMcastMIBGroups 6 } + +ipMcastMIBRouteOctetsGroup OBJECT-GROUP + OBJECTS { ipMcastRouteTimeStamp, + ipMcastRouteOctets, + ipMcastRouteTtlDropOctets, + ipMcastRouteDifferentInIfOctets, + ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopOctets } + STATUS current + DESCRIPTION + "A collection of objects to support management of octet + counters for each forwarding entry." + ::= { ipMcastMIBGroups 7 } + +ipMcastMIBRouteBpsGroup OBJECT-GROUP + OBJECTS { ipMcastRouteBps } + STATUS current + DESCRIPTION + "A collection of objects to support sampling of data rate + in bits per second for each forwarding entry." + ::= { ipMcastMIBGroups 8 } + +ipMcastMIBRouteProtoGroup OBJECT-GROUP + OBJECTS { ipMcastRouteProtocol, ipMcastRouteRtProtocol, + ipMcastRouteRtAddressType, ipMcastRouteRtAddress, + ipMcastRouteRtPrefixLength, ipMcastRouteRtType, + + + + ipMcastRouteNextHopProtocol } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + relationship between multicast routing information and the + IP Forwarding Table." + ::= { ipMcastMIBGroups 9 } + +ipMcastMIBLocalListenerGroup OBJECT-GROUP + OBJECTS { ipMcastLocalListenerRunIndex } + STATUS current + DESCRIPTION + "A collection of objects to support management of local + listeners on hosts or routers." + ::= { ipMcastMIBGroups 10 } + +ipMcastMIBBoundaryIfGroup OBJECT-GROUP + OBJECTS { ipMcastBoundaryTimeStamp, + ipMcastBoundaryDroppedMcastOctets, + ipMcastBoundaryDroppedMcastPkts, + ipMcastBoundaryStatus, + ipMcastBoundaryStorageType, + ipMcastZoneScopeDefaultZoneIndex, + ipMcastZoneScopeAddressType, + ipMcastZoneScopeAddress, + ipMcastZoneScopeAddressPrefixLength + } + STATUS current + DESCRIPTION + "A collection of objects to support management of multicast + scope zone boundaries." + ::= { ipMcastMIBGroups 11 } + +ipMcastMIBScopeNameGroup OBJECT-GROUP + OBJECTS { ipMcastScopeNameString, ipMcastScopeNameDefault, + ipMcastScopeNameStatus, ipMcastScopeNameStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support management of multicast + address scope names." + ::= { ipMcastMIBGroups 12 } + +END diff --git a/mibs/ietf/IPMROUTE-STD-MIB b/mibs/ietf/IPMROUTE-STD-MIB new file mode 100644 index 0000000..6eb2c80 --- /dev/null +++ b/mibs/ietf/IPMROUTE-STD-MIB @@ -0,0 +1,906 @@ +IPMROUTE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + Integer32, Counter32, Counter64, Gauge32, + IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TEXTUAL-CONVENTION, + TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB + IANAipRouteProtocol, + IANAipMRouteProtocol FROM IANA-RTPROTO-MIB; + +ipMRouteStdMIB MODULE-IDENTITY + LAST-UPDATED "200009220000Z" -- September 22, 2000 + ORGANIZATION "IETF IDMR Working Group" + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of IP Multicast routing, but + independent of the specific multicast routing protocol in + use." + REVISION "200009220000Z" -- September 22, 2000 + DESCRIPTION + "Initial version, published as RFC 2932." + ::= { mib-2 83 } + +-- Textual Conventions + +LanguageTag ::= TEXTUAL-CONVENTION + + DISPLAY-HINT "100a" + STATUS current + DESCRIPTION + "An RFC 1766-style language tag, with all alphabetic + characters converted to lowercase. This restriction is + intended to make the lexical ordering imposed by SNMP useful + + + when applied to language tags. Note that it is + theoretically possible for a valid language tag to exceed + the allowed length of this syntax, and thus be impossible to + represent with this syntax. Sampling of language tags in + current use on the Internet suggests that this limit does + not pose a serious problem in practice." + SYNTAX OCTET STRING (SIZE (1..100)) + + +-- Top-level structure of the MIB + +ipMRouteMIBObjects OBJECT IDENTIFIER ::= { ipMRouteStdMIB 1 } + +ipMRoute OBJECT IDENTIFIER ::= { ipMRouteMIBObjects 1 } + +-- the IP Multicast Routing MIB-Group +-- +-- a collection of objects providing information about +-- IP Multicast Groups + + +ipMRouteEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled status of IP Multicast routing on this router." + ::= { ipMRoute 1 } + +ipMRouteEntryCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the ipMRouteTable. This can be used + to monitor the multicast routing table size." + ::= { ipMRoute 7 } + +ipMRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information for IP datagrams sent by particular sources to + the IP multicast groups known to this router." + ::= { ipMRoute 2 } + + + +ipMRouteEntry OBJECT-TYPE + SYNTAX IpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for IP datagrams from a particular source and + addressed to a particular IP multicast group address. + Discontinuities in counters in this entry can be detected by + observing the value of ipMRouteUpTime." + INDEX { ipMRouteGroup, + ipMRouteSource, + ipMRouteSourceMask } + ::= { ipMRouteTable 1 } + +IpMRouteEntry ::= SEQUENCE { + ipMRouteGroup IpAddress, + ipMRouteSource IpAddress, + ipMRouteSourceMask IpAddress, + ipMRouteUpstreamNeighbor IpAddress, + ipMRouteInIfIndex InterfaceIndexOrZero, + ipMRouteUpTime TimeTicks, + ipMRouteExpiryTime TimeTicks, + ipMRoutePkts Counter32, + ipMRouteDifferentInIfPackets Counter32, + ipMRouteOctets Counter32, + ipMRouteProtocol IANAipMRouteProtocol, + ipMRouteRtProto IANAipRouteProtocol, + ipMRouteRtAddress IpAddress, + ipMRouteRtMask IpAddress, + ipMRouteRtType INTEGER, + ipMRouteHCOctets Counter64 +} + +ipMRouteGroup OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address for which this entry + contains multicast routing information." + ::= { ipMRouteEntry 1 } + +ipMRouteSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The network address which when combined with the + corresponding value of ipMRouteSourceMask identifies the + sources for which this entry contains multicast routing + information." + ::= { ipMRouteEntry 2 } + +ipMRouteSourceMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network mask which when combined with the corresponding + value of ipMRouteSource identifies the sources for which + this entry contains multicast routing information." + ::= { ipMRouteEntry 3 } + +ipMRouteUpstreamNeighbor OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the upstream neighbor (e.g., RPF neighbor) + from which IP datagrams from these sources to this multicast + address are received, or 0.0.0.0 if the upstream neighbor is + unknown (e.g., in CBT)." + ::= { ipMRouteEntry 4 } + +ipMRouteInIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface on which IP + datagrams sent by these sources to this multicast address + are received. A value of 0 indicates that datagrams are not + subject to an incoming interface check, but may be accepted + on multiple interfaces (e.g., in CBT)." + ::= { ipMRouteEntry 5 } + +ipMRouteUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the multicast routing information + represented by this entry was learned by the router." + ::= { ipMRouteEntry 6 } + + + +ipMRouteExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. The value 0 indicates that the entry is not + subject to aging." + ::= { ipMRouteEntry 7 } + +ipMRoutePkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group + address." + ::= { ipMRouteEntry 8 } + +ipMRouteDifferentInIfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group address, + which were dropped because they were not received on the + interface indicated by ipMRouteInIfIndex. Packets which are + not subject to an incoming interface check (e.g., using CBT) + are not counted." + ::= { ipMRouteEntry 9 } + +ipMRouteOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams which were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router." + ::= { ipMRouteEntry 10 } + +ipMRouteProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The multicast routing protocol via which this multicast + forwarding entry was learned." + ::= { ipMRouteEntry 11 } + +ipMRouteRtProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + upstream or parent interface for this multicast forwarding + entry was learned. Inclusion of values for routing + protocols is not intended to imply that those protocols need + be supported." + ::= { ipMRouteEntry 12 } + +ipMRouteRtAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address portion of the route used to find the upstream + or parent interface for this multicast forwarding entry." + ::= { ipMRouteEntry 13 } + +ipMRouteRtMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mask associated with the route used to find the upstream + or parent interface for this multicast forwarding entry." + ::= { ipMRouteEntry 14 } + +ipMRouteRtType OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), -- Unicast route used in multicast RIB + multicast (2) -- Multicast route + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason the given route was placed in the (logical) + multicast Routing Information Base (RIB). A value of + unicast means that the route would normally be placed only + in the unicast RIB, but was placed in the multicast RIB + (instead or in addition) due to local configuration, such as + when running PIM over RIP. A value of multicast means that + + + the route was explicitly added to the multicast RIB by the + routing protocol, such as DVMRP or Multiprotocol BGP." + ::= { ipMRouteEntry 15 } + +ipMRouteHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams which were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router. + This object is a 64-bit version of ipMRouteOctets." + ::= { ipMRouteEntry 16 } + +-- +-- The IP Multicast Routing Next Hop Table +-- + +ipMRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on the next- + hops on outgoing interfaces for routing IP multicast + datagrams. Each entry is one of a list of next-hops on + outgoing interfaces for particular sources sending to a + particular multicast group address." + ::= { ipMRoute 3 } + +ipMRouteNextHopEntry OBJECT-TYPE + SYNTAX IpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the list of next-hops on + outgoing interfaces to which IP multicast datagrams from + particular sources to a IP multicast group address are + routed. Discontinuities in counters in this entry can be + detected by observing the value of ipMRouteUpTime." + INDEX { ipMRouteNextHopGroup, ipMRouteNextHopSource, + ipMRouteNextHopSourceMask, ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress } + ::= { ipMRouteNextHopTable 1 } + +IpMRouteNextHopEntry ::= SEQUENCE { + ipMRouteNextHopGroup IpAddress, + + + ipMRouteNextHopSource IpAddress, + ipMRouteNextHopSourceMask IpAddress, + ipMRouteNextHopIfIndex InterfaceIndex, + ipMRouteNextHopAddress IpAddress, + ipMRouteNextHopState INTEGER, + ipMRouteNextHopUpTime TimeTicks, + ipMRouteNextHopExpiryTime TimeTicks, + ipMRouteNextHopClosestMemberHops Integer32, + ipMRouteNextHopProtocol IANAipMRouteProtocol, + ipMRouteNextHopPkts Counter32 +} + +ipMRouteNextHopGroup OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group for which this entry specifies a + next-hop on an outgoing interface." + ::= { ipMRouteNextHopEntry 1 } + +ipMRouteNextHopSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which when combined with the + corresponding value of ipMRouteNextHopSourceMask identifies + the sources for which this entry specifies a next-hop on an + outgoing interface." + ::= { ipMRouteNextHopEntry 2 } + +ipMRouteNextHopSourceMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network mask which when combined with the corresponding + value of ipMRouteNextHopSource identifies the sources for + which this entry specifies a next-hop on an outgoing + interface." + ::= { ipMRouteNextHopEntry 3 } + +ipMRouteNextHopIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The ifIndex value of the interface for the outgoing + interface for this next-hop." + ::= { ipMRouteNextHopEntry 4 } + +ipMRouteNextHopAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the next-hop specific to this entry. For + most interfaces, this is identical to ipMRouteNextHopGroup. + NBMA interfaces, however, may have multiple next-hop + addresses out a single outgoing interface." + ::= { ipMRouteNextHopEntry 5 } + +ipMRouteNextHopState OBJECT-TYPE + SYNTAX INTEGER { pruned(1), forwarding(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the outgoing interface and next- + hop represented by this entry is currently being used to + forward IP datagrams. The value 'forwarding' indicates it + is currently being used; the value 'pruned' indicates it is + not." + ::= { ipMRouteNextHopEntry 6 } + +ipMRouteNextHopUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the multicast routing information + represented by this entry was learned by the router." + ::= { ipMRouteNextHopEntry 7 } + +ipMRouteNextHopExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. If ipMRouteNextHopState is pruned(1), the + remaining time until the prune expires and the state reverts + to forwarding(2). Otherwise, the remaining time until this + entry is removed from the table. The time remaining may be + copied from ipMRouteExpiryTime if the protocol in use for + this entry does not specify next-hop timers. The value 0 + + + indicates that the entry is not subject to aging." + ::= { ipMRouteNextHopEntry 8 } + +ipMRouteNextHopClosestMemberHops OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of hops between this router and any + member of this IP multicast group reached via this next-hop + on this outgoing interface. Any IP multicast datagrams for + the group which have a TTL less than this number of hops + will not be forwarded to this next-hop." + ::= { ipMRouteNextHopEntry 9 } + +ipMRouteNextHopProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this next-hop was learned." + ::= { ipMRouteNextHopEntry 10 } + +ipMRouteNextHopPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which have been forwarded using this + route." + ::= { ipMRouteNextHopEntry 11 } + +-- +-- The Multicast Routing Interface Table +-- + +ipMRouteInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information specific to interfaces." + ::= { ipMRoute 4 } + +ipMRouteInterfaceEntry OBJECT-TYPE + SYNTAX IpMRouteInterfaceEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for a particular interface." + INDEX { ipMRouteInterfaceIfIndex } + ::= { ipMRouteInterfaceTable 1 } + +IpMRouteInterfaceEntry ::= SEQUENCE { + ipMRouteInterfaceIfIndex InterfaceIndex, + ipMRouteInterfaceTtl Integer32, + ipMRouteInterfaceProtocol IANAipMRouteProtocol, + ipMRouteInterfaceRateLimit Integer32, + ipMRouteInterfaceInMcastOctets Counter32, + ipMRouteInterfaceOutMcastOctets Counter32, + ipMRouteInterfaceHCInMcastOctets Counter64, + ipMRouteInterfaceHCOutMcastOctets Counter64 +} + +ipMRouteInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for which this entry + contains information." + ::= { ipMRouteInterfaceEntry 1 } + +ipMRouteInterfaceTtl OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The datagram TTL threshold for the interface. Any IP + multicast datagrams with a TTL less than this threshold will + not be forwarded out the interface. The default value of 0 + means all multicast packets are forwarded out the + interface." + ::= { ipMRouteInterfaceEntry 2 } + +ipMRouteInterfaceProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing protocol running on this interface." + ::= { ipMRouteInterfaceEntry 3 } + +ipMRouteInterfaceRateLimit OBJECT-TYPE + + + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The rate-limit, in kilobits per second, of forwarded + multicast traffic on the interface. A rate-limit of 0 + indicates that no rate limiting is done." + DEFVAL { 0 } + ::= { ipMRouteInterfaceEntry 4 } + +ipMRouteInterfaceInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have arrived + on the interface, including framing characters. This object + is similar to ifInOctets in the Interfaces MIB, except that + only multicast packets are counted." + ::= { ipMRouteInterfaceEntry 5 } + +ipMRouteInterfaceOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + sent on the interface." + ::= { ipMRouteInterfaceEntry 6 } + +ipMRouteInterfaceHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have arrived + on the interface, including framing characters. This object + is a 64-bit version of ipMRouteInterfaceInMcastOctets. It + is similar to ifHCInOctets in the Interfaces MIB, except + that only multicast packets are counted." + ::= { ipMRouteInterfaceEntry 7 } + +ipMRouteInterfaceHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + + + sent on the interface. This object is a 64-bit version of + ipMRouteInterfaceOutMcastOctets." + ::= { ipMRouteInterfaceEntry 8 } + +-- +-- The IP Multicast Scope Boundary Table +-- + +ipMRouteBoundaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's scoped + multicast address boundaries." + ::= { ipMRoute 5 } + +ipMRouteBoundaryEntry OBJECT-TYPE + SYNTAX IpMRouteBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the ipMRouteBoundaryTable + representing a scoped boundary." + INDEX { ipMRouteBoundaryIfIndex, ipMRouteBoundaryAddress, + ipMRouteBoundaryAddressMask } + ::= { ipMRouteBoundaryTable 1 } + +IpMRouteBoundaryEntry ::= SEQUENCE { + ipMRouteBoundaryIfIndex InterfaceIndex, + ipMRouteBoundaryAddress IpAddress, + ipMRouteBoundaryAddressMask IpAddress, + ipMRouteBoundaryStatus RowStatus +} + +ipMRouteBoundaryIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value for the interface to which this boundary + applies. Packets with a destination address in the + associated address/mask range will not be forwarded out this + interface." + ::= { ipMRouteBoundaryEntry 1 } + +ipMRouteBoundaryAddress OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which when combined with the + corresponding value of ipMRouteBoundaryAddressMask + identifies the group range for which the scoped boundary + exists. Scoped addresses must come from the range 239.x.x.x + as specified in RFC 2365." + ::= { ipMRouteBoundaryEntry 2 } + +ipMRouteBoundaryAddressMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address mask which when combined with the + corresponding value of ipMRouteBoundaryAddress identifies + the group range for which the scoped boundary exists." + ::= { ipMRouteBoundaryEntry 3 } + +ipMRouteBoundaryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { ipMRouteBoundaryEntry 4 } + +-- +-- The IP Multicast Scope Name Table +-- + +ipMRouteScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the multicast scope names." + ::= { ipMRoute 6 } + +ipMRouteScopeNameEntry OBJECT-TYPE + SYNTAX IpMRouteScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the ipMRouteScopeNameTable + representing a multicast scope name." + + + INDEX { ipMRouteScopeNameAddress, + ipMRouteScopeNameAddressMask, + IMPLIED ipMRouteScopeNameLanguage } + ::= { ipMRouteScopeNameTable 1 } + +IpMRouteScopeNameEntry ::= SEQUENCE { + ipMRouteScopeNameAddress IpAddress, + ipMRouteScopeNameAddressMask IpAddress, + ipMRouteScopeNameLanguage LanguageTag, + ipMRouteScopeNameString SnmpAdminString, + ipMRouteScopeNameDefault TruthValue, + ipMRouteScopeNameStatus RowStatus +} + +ipMRouteScopeNameAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which when combined with the + corresponding value of ipMRouteScopeNameAddressMask + identifies the group range associated with the multicast + scope. Scoped addresses must come from the range + 239.x.x.x." + ::= { ipMRouteScopeNameEntry 1 } + +ipMRouteScopeNameAddressMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address mask which when combined with the + corresponding value of ipMRouteScopeNameAddress identifies + the group range associated with the multicast scope." + ::= { ipMRouteScopeNameEntry 2 } + +ipMRouteScopeNameLanguage OBJECT-TYPE + SYNTAX LanguageTag + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RFC 1766-style language tag associated with the scope + name." + ::= { ipMRouteScopeNameEntry 3 } + +ipMRouteScopeNameString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. When no name is specified, the default value of + this object should be the string 239.x.x.x/y with x and y + replaced appropriately to describe the address and mask + length associated with the scope." + ::= { ipMRouteScopeNameEntry 4 } + +ipMRouteScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + following language should be used by applications if no name + is available in a desired language." + DEFVAL { false } + ::= { ipMRouteScopeNameEntry 5 } + +ipMRouteScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { ipMRouteScopeNameEntry 6 } + + +-- conformance information + +ipMRouteMIBConformance + OBJECT IDENTIFIER ::= { ipMRouteStdMIB 2 } +ipMRouteMIBCompliances + OBJECT IDENTIFIER ::= { ipMRouteMIBConformance 1 } +ipMRouteMIBGroups OBJECT IDENTIFIER ::= { ipMRouteMIBConformance 2 } + +-- compliance statements + +ipMRouteMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the IP Multicast MIB." + MODULE -- this module + MANDATORY-GROUPS { ipMRouteMIBBasicGroup, + + + ipMRouteMIBRouteGroup} + + GROUP ipMRouteMIBBoundaryGroup + DESCRIPTION + "This group is mandatory if the router supports + administratively-scoped multicast address boundaries." + + OBJECT ipMRouteBoundaryStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMRouteScopeNameStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMRouteMIBHCInterfaceGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + for which the value of the corresponding instance of ifSpeed + is greater than 20,000,000 bits/second." + + ::= { ipMRouteMIBCompliances 1 } + +-- units of conformance + +ipMRouteMIBBasicGroup OBJECT-GROUP + OBJECTS { ipMRouteEnable, ipMRouteEntryCount, + ipMRouteUpstreamNeighbor, ipMRouteInIfIndex, + ipMRouteUpTime, ipMRouteExpiryTime, + ipMRouteNextHopState, + ipMRouteNextHopUpTime, + ipMRouteNextHopExpiryTime, + ipMRouteNextHopProtocol, + ipMRouteNextHopPkts, + ipMRouteInterfaceTtl, + ipMRouteInterfaceProtocol, ipMRouteInterfaceRateLimit, + ipMRouteInterfaceInMcastOctets, + ipMRouteInterfaceOutMcastOctets, + ipMRouteProtocol + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast routing." + ::= { ipMRouteMIBGroups 1 } + + + +ipMRouteMIBHopCountGroup OBJECT-GROUP + OBJECTS { ipMRouteNextHopClosestMemberHops } + STATUS current + DESCRIPTION + "A collection of objects to support management of the use of + hop counts in IP Multicast routing." + ::= { ipMRouteMIBGroups 2 } + +ipMRouteMIBBoundaryGroup OBJECT-GROUP + OBJECTS { ipMRouteBoundaryStatus, ipMRouteScopeNameString, + ipMRouteScopeNameDefault, ipMRouteScopeNameStatus } + STATUS current + DESCRIPTION + "A collection of objects to support management of scoped + multicast address boundaries." + ::= { ipMRouteMIBGroups 3 } + +ipMRouteMIBPktsOutGroup OBJECT-GROUP + OBJECTS { ipMRouteNextHopPkts } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each outgoing interface entry of a route." + ::= { ipMRouteMIBGroups 4 } + +ipMRouteMIBHCInterfaceGroup OBJECT-GROUP + OBJECTS { ipMRouteInterfaceHCInMcastOctets, + ipMRouteInterfaceHCOutMcastOctets, + ipMRouteHCOctets } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) network + interfaces." + ::= { ipMRouteMIBGroups 5 } + +ipMRouteMIBRouteGroup OBJECT-GROUP + OBJECTS { ipMRouteRtProto, ipMRouteRtAddress, + ipMRouteRtMask, ipMRouteRtType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + relationship between multicast routing information, and the + IP Forwarding Table." + ::= { ipMRouteMIBGroups 6 } + +ipMRouteMIBPktsGroup OBJECT-GROUP + OBJECTS { ipMRoutePkts, ipMRouteDifferentInIfPackets, + + + ipMRouteOctets } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each forwarding entry." + ::= { ipMRouteMIBGroups 7 } + +END diff --git a/mibs/ietf/IPOA-MIB b/mibs/ietf/IPOA-MIB new file mode 100644 index 0000000..bcd64f6 --- /dev/null +++ b/mibs/ietf/IPOA-MIB @@ -0,0 +1,1647 @@ +IPOA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + transmission, Integer32, IpAddress, Counter32, + Gauge32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ipNetToMediaNetAddress, ipNetToMediaIfIndex, + ipNetToMediaPhysAddress, ipAdEntAddr + FROM IP-MIB + +-- The following textual conventions are defined locally within +-- this MIB module. They have been prefixed with 'Ipoa' to +-- distinguish them from their counterparts in the ATM-TC-MIB. +-- This was done so that the IPOA-MIB could be advanced as +-- a standards-based MIB without waiting for the ATM-TC-MIB. + +-- AtmConnKind, AtmAddr +-- FROM ATM-TC-MIB + + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB + ; + +ipoaMIB MODULE-IDENTITY + LAST-UPDATED "9802090000Z" -- February 9, 1998 + ORGANIZATION "IETF Internetworking Over NBMA Working + Group (ion)" + CONTACT-INFO + "Maria Greene (greene@xedia.com) + Xedia Corp. + + Jim Luciani (jluciani@BayNetworks.com) + Bay Networks + + Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. + + Ted Kuo (tkuo@eos.ncsu.edu) + Bay Networks" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) for managing Classical IP and + ARP over ATM entities." + ::= { transmission 46 } + +-- Textual Conventions + +IpoaEncapsType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The encapsulation type used on a VC." + SYNTAX INTEGER { + llcSnap(1), + vcMuxed(2), + other(3) + } + +IpoaVpiInteger ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer large enough to contain the value of a VPI." + SYNTAX Integer32 (0..255) + +IpoaVciInteger ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer large enough to contain the value of a VCI." + SYNTAX Integer32 (0..65535) + +IpoaAtmAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x" + STATUS current + DESCRIPTION + "The ATM address used by the network entity. + The semantics are implied by the length. + The address types are: + + - no address (0 octets) + - E.164 (8 octets) + - NSAP (20 octets) + + In addition, when subaddresses are used IpoaAtmAddr + may represent the concatenation of address and + subaddress. The associated address types are: + + - E.164, E.164 (16 octets) + - E.164, NSAP (28 octets) + - NSAP, NSAP (40 octets) + Address lengths other than defined in this definition + imply address types defined elsewhere. + Note: The E.164 address is encoded in BCD format." + SYNTAX OCTET STRING (SIZE(0..40)) + +IpoaAtmConnKind ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The use of call control. The use is as follows: + pvc(1) + Virtual link of a PVC. Should not be + used in a PVC/SVC (i.e., SPVC) + crossconnect. + svcIncoming(2) + Virtual link established after a + received signaling request to setup + an SVC. + svcOutgoing(3) + Virtual link established after a + transmitted or forwarded signaling + request to setup an SVC. + spvcInitiator(4) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the initiator of the SPVC + setup. + spvcTarget(5) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the target of the SPVC + setup. + + An spvcInitiator is always cross-connected to + an svcOutgoing, and an spvcTarget is always + cross-connected to an svcIncoming." + SYNTAX INTEGER { + pvc(1), + svcIncoming(2), + svcOutgoing(3), + spvcInitiator(4), + spvcTarget(5) + } + +-- Top-level structure of the MIB + +ipoaObjects OBJECT IDENTIFIER ::= { ipoaMIB 1 } +ipoaNotifications OBJECT IDENTIFIER ::= { ipoaMIB 2 } +ipoaConformance OBJECT IDENTIFIER ::= { ipoaMIB 3 } + +-- MIB Objects + +ipoaLisTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether ipoaLisCreate and ipoaLisDelete + traps should be generated by this system. + + By default, this object should have the value + enabled(1) for systems where ATMARP Servers are + present and disabled(2) on systems where only + clients reside." + ::= { ipoaObjects 1 } + +-- The ATM Logical IP Subnet (LIS) Table + +ipoaLisTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaLisEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is one entry in this table for every Logical IP + Subnet (LIS) of which this system is a member. + + The bulk of the objects in an ipoaLisEntry exists + to control ATMARP for a particular LIS. In a PVC only + environment it is implementation dependent as to + whether this table should be supported." + ::= { ipoaObjects 2 } + +ipoaLisEntry OBJECT-TYPE + SYNTAX IpoaLisEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single LIS of which this system + is a member. + + Membership in a LIS is independent of the actual ATM + interfaces being used. The ipoaLisTable defines + all LISs that a system is a member of. The ipAddrTable + and the ipoaClientTable provides the mapping from local + IP address to ATM interface. The ipoaLisIfMappingTable + provides the mappings between Logical IP Subnets and + interfaces. + The ipoaLisTable is indexed by ipoaLisSubnetAddr (IP + subnet address). An entry in the ipoaLisTable should + exist for each ipAddrEntry that is associated with an + ATM related interface used for Classical IP and ARP + over ATM traffic. + + Its ipAdEntAddr and ipAdEntNetMask when ANDed together + should equal the ipoaLisSubnetAddr of the corresponding + ipoaLisEntry." + INDEX { ipoaLisSubnetAddr } + ::= { ipoaLisTable 1 } + +IpoaLisEntry ::= SEQUENCE { + ipoaLisSubnetAddr IpAddress, + ipoaLisDefaultMtu Integer32, + ipoaLisDefaultEncapsType IpoaEncapsType, + ipoaLisInactivityTimer Integer32, + ipoaLisMinHoldingTime Integer32, + ipoaLisQDepth Integer32, + ipoaLisMaxCalls Integer32, + ipoaLisCacheEntryAge Integer32, + ipoaLisRetries Integer32, + ipoaLisTimeout Integer32, + ipoaLisDefaultPeakCellRate Integer32, + ipoaLisActiveVcs Gauge32, + ipoaLisRowStatus RowStatus +} + +ipoaLisSubnetAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP subnet address associated with this LIS." + ::= { ipoaLisEntry 1 } + +ipoaLisDefaultMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MTU used within this LIS. Note that the + actual MTU used for a VC between two members of the + LIS may be negotiated during connection setup and may + be different than this value. The ipoaVcNegotiatedMtu + object indicates the actual MTU in use for a + particular VC." + DEFVAL { 9180 } + ::= { ipoaLisEntry 2 } + +ipoaLisDefaultEncapsType OBJECT-TYPE + SYNTAX IpoaEncapsType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default encapsulation to use on VCs created for + this LIS. Note that the actual encapsulation type may + be negotiated during connection setup and may be + different than this value. The + ipoaVcNegotiatedEncapsType object indicates the actual + encapsulation in use for a particular VC." + DEFVAL { llcSnap } + ::= { ipoaLisEntry 3 } + +ipoaLisInactivityTimer OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time, in seconds, before a call established for an + ipNetToMediaEntry on a client will timeout due to no + traffic being passed on the VC. A value of 0 implies + no time out." + REFERENCE + "RFC 1755, Sec. 3.4 VC Teardown" + DEFVAL { 1200 } + ::= { ipoaLisEntry 4 } + +ipoaLisMinHoldingTime OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum amount of time, in seconds, that a call + will remain open. If 0 then ipoaInactivityTimer will + completely determine when a call is terminated." + REFERENCE + "RFC 1755, Sec. 3.4 VC Teardown" + DEFVAL { 60 } + ::= { ipoaLisEntry 5 } + +ipoaLisQDepth OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of outstanding requests that are + allowed while waiting for ATMARP replies and + InATMARP replies for this LIS." + DEFVAL { 1 } + ::= { ipoaLisEntry 6 } + +ipoaLisMaxCalls OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of SVCs that can be established + simultaneously for this LIS." + DEFVAL { 500 } + ::= { ipoaLisEntry 7 } + +ipoaLisCacheEntryAge OBJECT-TYPE + SYNTAX Integer32 (60..1200) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time, in seconds, before an ipNetToMediaEntry will + age out of the table. Note that the default value will + be different for a client and a server. An ATMARP + Server should use a default of 1200 and a client should + use 900." + DEFVAL { 900 } + ::= { ipoaLisEntry 8 } + +ipoaLisRetries OBJECT-TYPE + SYNTAX Integer32 (0..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the ATMARP request will be retried + when no response is received in the timeout interval + indicated by ipoaLisTimeout." + DEFVAL { 2 } + ::= { ipoaLisEntry 9 } + +ipoaLisTimeout OBJECT-TYPE + SYNTAX Integer32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time to wait, in seconds, before retransmission + of an ARP request." + DEFVAL { 10 } + ::= { ipoaLisEntry 10 } + +ipoaLisDefaultPeakCellRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is the signalling parameter that + should be used when setting up all best effort + VCCs (Virtual Channel Connections). + This parameter applies to the forward and + backward direction on a per best effort VCC basis. + A value of zero implies that no configured default + exists and that local policy should be used to + determine the actual default to used during + call setup. ATM Signaling Support for IP over ATM + (RFC 1755) recommends 1/10th of the ATM interface's + speed." + ::= { ipoaLisEntry 11 } + +ipoaLisActiveVcs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of active SVCs for this LIS." + ::= { ipoaLisEntry 12 } + +ipoaLisRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the ipoaLisTable. + + When the ipoaLisRowStatus deleted (by setting this + object to destroy(6)), this has the side-effect of + removing all entries from the ipNetToMediaTable that + are associated with this LIS (in other words, it + flushes the entity's ATMARP cache). It also removes + the ipoaVcTable entries that were associated with those + ipNetToMediaTable entries. Destroying the row also + removes the corresponding entries in the + ipoaArpSrvrTable, ipoaArpClientTable, + ipoaLisIfMappingTable, and ipoaArpRemoteSrvrTable. + + Entries in both the ipNetToMediaTable and the + ipoaVcTable that are associated with a + ipoaConfigPvcEntry are not affected by changes to + ipoaLisRowStatus." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaLisEntry 13 } + + +-- The ATM Logical IP Subnet Interface Mapping Table + +ipoaLisIfMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaLisIfMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is one entry in this table for every combination + of ipoaLisEntry and IP over ATM interface." + ::= { ipoaObjects 3 } + +ipoaLisIfMappingEntry OBJECT-TYPE + SYNTAX IpoaLisIfMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the ipoaLisIfMappingTable." + INDEX { ipoaLisSubnetAddr, ipoaLisIfMappingIfIndex } + ::= { ipoaLisIfMappingTable 1 } + +IpoaLisIfMappingEntry ::= SEQUENCE { + ipoaLisIfMappingIfIndex InterfaceIndex, + ipoaLisIfMappingRowStatus RowStatus +} + +ipoaLisIfMappingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ipAdEntIfIndex object from an ipAddrEntry + is used as an index to this table when its + ipAdEntAddr is in the subnet implied by + ipoaLisSubnetAddr." + ::= { ipoaLisIfMappingEntry 1 } + +ipoaLisIfMappingRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the ipoaLisIfMappingTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaLisIfMappingEntry 2 } + +-- The ATMARP Client Table + +ipoaArpClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATMARP clients running on this system." + ::= { ipoaObjects 4 } + +ipoaArpClientEntry OBJECT-TYPE + SYNTAX IpoaArpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single ATMARP Client. Clients + can be started and stopped by adding and removing + entries from this table. An entry in the + ipoaArpClientTable has a corresponding entry in the + ipAddrTable. Both are indexed by ipAdEntAddr. + The ifIndex and subnet mask of a client entry are the + ipAddrEntry's ipAdEntIfIndex and ipAdEntNetMask, + respectively. + + Note that adding and removing entries from this table + may have the same effect on the corresponding + ipAddrTable entry. Row creation of an entry in this + table requires that either the corresponding ipAddrTable + entry exists or that ipAdEntIfIndex and ipAdEntNetMask + be specified in the creation of an ipoaArpClientEntry + at a minimum in order to create the corresponding + ipAddrEntry. Specification of ipAdEntBcastAddr and + ipAdEntReasmMaxSize to complete an ipAddrEntry is + implementation dependent. + Whether a corresponding ipAddrEntry is deleted during + the deletion of an ipoaArpClientEntry is considered + implementation dependent." + INDEX { ipAdEntAddr } + ::= { ipoaArpClientTable 1 } + +IpoaArpClientEntry ::= SEQUENCE { + ipoaArpClientAtmAddr IpoaAtmAddr, + ipoaArpClientSrvrInUse IpoaAtmAddr, + ipoaArpClientInArpInReqs Counter32, + ipoaArpClientInArpOutReqs Counter32, + ipoaArpClientInArpInReplies Counter32, + ipoaArpClientInArpOutReplies Counter32, + ipoaArpClientInArpInvalidInReqs Counter32, + ipoaArpClientInArpInvalidOutReqs Counter32, + ipoaArpClientArpInReqs Counter32, + ipoaArpClientArpOutReqs Counter32, + ipoaArpClientArpInReplies Counter32, + ipoaArpClientArpOutReplies Counter32, + ipoaArpClientArpInNaks Counter32, + ipoaArpClientArpOutNaks Counter32, + ipoaArpClientArpUnknownOps Counter32, + ipoaArpClientArpNoSrvrResps Counter32, + ipoaArpClientRowStatus RowStatus +} + +ipoaArpClientAtmAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address of the client." + ::= { ipoaArpClientEntry 1 } + +ipoaArpClientSrvrInUse OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATM address of the ATMARP Server, + ipoaArpRemoteSrvrAtmAddr, in use by this client. A + zero length octet string implies that communication + with a Remote ATMARP Server is not in effect." + DEFVAL { ''H } + ::= { ipoaArpClientEntry 2 } + +ipoaArpClientInArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests received by this + client." + ::= { ipoaArpClientEntry 3 } + +ipoaArpClientInArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests sent by this client." + ::= { ipoaArpClientEntry 4 } + +ipoaArpClientInArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies received by this + client." + ::= { ipoaArpClientEntry 5 } + +ipoaArpClientInArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of InATMARP replies sent by this client." + ::= { ipoaArpClientEntry 6 } + +ipoaArpClientInArpInvalidInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client detected an + invalid InATMARP request." + ::= { ipoaArpClientEntry 7 } + +ipoaArpClientInArpInvalidOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client did not + receive an InATMARP reply." + ::= { ipoaArpClientEntry 8 } + +ipoaArpClientArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests received by this + client." + ::= { ipoaArpClientEntry 9 } + +ipoaArpClientArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests sent by this client." + ::= { ipoaArpClientEntry 10 } + +ipoaArpClientArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies received by this + client." + ::= { ipoaArpClientEntry 11 } + +ipoaArpClientArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies sent by this client." + ::= { ipoaArpClientEntry 12 } + +ipoaArpClientArpInNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies + received by this client." + ::= { ipoaArpClientEntry 13 } + +ipoaArpClientArpOutNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies sent by + this client. + + Classic IP and ARP over ATM does not require an + ATMARP client to transmit an ATMARP_NAK upon + receipt of an ATMARP request from another ATMARP + client. However, implementation experience has + shown that this error condition is somewhat easy + to create inadvertently by configuring one ATMARP + client with an ipoaArpRemoteSrvrTable entry + containing an ipoaArpRemoteSrvrAtmAddr value which + is the ATM address of another ATMARP client-only + system. + + If an ATMARP client supports the transmission of + ATMARP_NAKs, then it should increment + ipoaArpClientArpOutNaks each time it transmits + an ATMARP_NAK. Otherwise, support of this + object is considered optional." + ::= { ipoaArpClientEntry 14 } + +ipoaArpClientArpUnknownOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client received + an ATMARP message with an operation code for which + it is not coded to support." + ::= { ipoaArpClientEntry 15 } + +ipoaArpClientArpNoSrvrResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this client failed to receive + a response from a ATMARP Server within the + ipoaLisTimeout value for ipoaLisRetries times. + This may imply that the client will re-elect a + new primary ATMARP Server for this LIS from the + ipoaArpRemoteSrvrTable." + ::= { ipoaArpClientEntry 16 } + +ipoaArpClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and + deleted from the ipoaArpClientTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpClientEntry 17 } + +-- The ATMARP Server Table + +ipoaArpSrvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATMARP Servers running on this system." + ::= { ipoaObjects 5 } + +ipoaArpSrvrEntry OBJECT-TYPE + SYNTAX IpoaArpSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an ATMARP Server within a LIS. An + entry in this table has two indexes: first ipAdEntAddr, + which is the IP address that this system uses as a + member of the LIS, and then ipoaArpSrvrAddr, which is + the ATM address of the ATMARP Server. + + Entries may be created by a management application + using the ipoaArpSrvrRowStatus object. Entries in this + table may also be created by the system and not by a + management application, for example via ILMI. + + Entries in this table may be deleted by setting the + ipoaArpSrvrRowStatus object to 'destroy(6)'. This + includes entries that were added by the system and not + by a management application." + INDEX { ipAdEntAddr, ipoaArpSrvrAddr } + ::= { ipoaArpSrvrTable 1 } + +IpoaArpSrvrEntry ::= SEQUENCE { + ipoaArpSrvrAddr IpoaAtmAddr, + ipoaArpSrvrLis IpAddress, + ipoaArpSrvrInArpInReqs Counter32, + ipoaArpSrvrInArpOutReqs Counter32, + ipoaArpSrvrInArpInReplies Counter32, + ipoaArpSrvrInArpOutReplies Counter32, + ipoaArpSrvrInArpInvalidInReqs Counter32, + ipoaArpSrvrInArpInvalidOutReqs Counter32, + ipoaArpSrvrArpInReqs Counter32, + ipoaArpSrvrArpOutReplies Counter32, + ipoaArpSrvrArpOutNaks Counter32, + ipoaArpSrvrArpDupIpAddrs Counter32, + ipoaArpSrvrArpUnknownOps Counter32, + ipoaArpSrvrRowStatus RowStatus +} + +ipoaArpSrvrAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address of the ATMARP Server." + ::= { ipoaArpSrvrEntry 1 } + +ipoaArpSrvrLis OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The subnet address that identifies the LIS with + which this server is associated." + ::= { ipoaArpSrvrEntry 2 } + +ipoaArpSrvrInArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 3 } + +ipoaArpSrvrInArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 4 } + +ipoaArpSrvrInArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 5 } + +ipoaArpSrvrInArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 6 } + +ipoaArpSrvrInArpInvalidInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid InATMARP requests received by + this ATMARP Server." + ::= { ipoaArpSrvrEntry 7 } + +ipoaArpSrvrInArpInvalidOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this server did not receive + an InATMARP reply." + ::= { ipoaArpSrvrEntry 8 } + +ipoaArpSrvrArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 9 } + +ipoaArpSrvrArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 10 } + +ipoaArpSrvrArpOutNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies sent by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 11 } + +ipoaArpSrvrArpDupIpAddrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a duplicate IP address was + detected by this ATMARP Server." + ::= { ipoaArpSrvrEntry 12 } + +ipoaArpSrvrArpUnknownOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this ATMARP Server received + an ATMARP message with an operation code for which it + is not coded to support." + ::= { ipoaArpSrvrEntry 13 } + +ipoaArpSrvrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + from the ipoaArpSrvrTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpSrvrEntry 14 } + +-- The Remote ATMARP Server Table + +ipoaArpRemoteSrvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpRemoteSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of non-local ATMARP Servers associated with a + LIS. An entry in this table has three indexes: first + the ipoaLisSubnetAddr of the LIS for which the + corresponding ATMARP Server provides ATMARP services, + then the ipoaArpRemoteSrvrAtmAddr, which is the ATM + address of the remote ATMARP Server, and finally the + ifIndex of the interface on which the VC to the ATMARP + Remote Server will be opened. An ifIndex value of 0 + should be used when a single VC is to be shared for + ATMARP purposes by multiple interfaces." + ::= { ipoaObjects 6 } + +ipoaArpRemoteSrvrEntry OBJECT-TYPE + SYNTAX IpoaArpRemoteSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one non-local ATMARP Server." + INDEX { ipoaLisSubnetAddr, ipoaArpRemoteSrvrAtmAddr, + ipoaArpRemoteSrvrIfIndex } + ::= { ipoaArpRemoteSrvrTable 1 } + +IpoaArpRemoteSrvrEntry ::= SEQUENCE { + ipoaArpRemoteSrvrAtmAddr IpoaAtmAddr, + ipoaArpRemoteSrvrRowStatus RowStatus, + ipoaArpRemoteSrvrIfIndex InterfaceIndexOrZero, + ipoaArpRemoteSrvrIpAddr IpAddress, + ipoaArpRemoteSrvrAdminStatus INTEGER, + ipoaArpRemoteSrvrOperStatus INTEGER +} + +ipoaArpRemoteSrvrAtmAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address of the remote ATMARP Server." + ::= { ipoaArpRemoteSrvrEntry 1 } + +ipoaArpRemoteSrvrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + from the ipoaArpRemoteSrvrTable. + + Deleting an ipoaArpRemoteSrvrEntry (by setting this + object to destroy(6)) may affect ipoaArpClientTable + entries. The object ipoaArpClientSrvrInUse in an + ipoaArpClientSrvrEntry may contain the ATM address + of an ATMARP Remote Server whose entry in the + ipoaArpRemoteSrvrTable is being removed. In this + case, any corresponding ipoaArpClientSrvrInUse + objects should be at a minimum invalidated by + setting their values to that of a zero length + OCTET STRING. + + The value of ipoaArpRemoteSrvrOperStatus should be + consistent with that of ipoaArpRemoteSrvrRowStatus. + For example, successfully setting the value of + this object to notInService(2) after its being in + the up(1) state should result in + ipoaArpRemoteSrvrOperStatus being set to down(2) + if currently up(1)." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpRemoteSrvrEntry 2 } + +ipoaArpRemoteSrvrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the VC to the + Remote ATMARP Server is associated with." + ::= { ipoaArpRemoteSrvrEntry 3 } + +ipoaArpRemoteSrvrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of the Remote ATMARP Server. A + value of 0.0.0.0 implies that this address isn't + known." + DEFVAL { '00000000'H } + ::= { ipoaArpRemoteSrvrEntry 4 } + +ipoaArpRemoteSrvrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- use this ATMARP Server + down(2) -- stop using this ATMARP Server + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state for use of the ATMARP Server + represented by an entry in this table. + ipoaArpRemoteSrvrAdminStatus values: + + up(1) - Attempt to activate use of the + ATMARP Server represented by this + entry in the ipoaArpRemoteSrvrTable. + down(2) - Deactivate use of this ATMARP + Server. + + When a managed system creates an entry in this + table ipoaArpRemoteSrvrAdminStatus and + ipoaArpRemoteSrvrOperStatus are initialized as + down(2) by default." + DEFVAL { down } + ::= { ipoaArpRemoteSrvrEntry 5 } + +ipoaArpRemoteSrvrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- eligible for use + down(2) -- not eligible for use + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state for use of a Remote + ATMARP Server. An up(1) entry has a VC + established to the respective Remote ATMARP + Server: + + up(1) - A VC exists to Remote ATMARP Server + whose IP Address is stored in + ipoaArpRemoteSrvrIpAddr. This VC can + be determined by searching the + ipoaVcTable using + ipoaArpRemoteSrvrIfIndex (if not 0, + otherwise ignore ipNetToMediaIfIndex + index) and ipoaArpRemoteSrvrIpAddr. + An ipoaArpClientEntry should exist + with its ipoaArpClientSrvrInUse + object having the same value as + ipoaArpRemoteSrvrAtmAddr. + down(2) - Entry exists without an active VC to + the Remote ATMARP Server. + + Transition from up(1) to down(2) + status may affect ipoaArpClientTable entries. + The object ipoaArpClientSrvrInUse in an + ipoaArpClientSrvrEntry may contain the ATM address + of an ATMARP Remote Server whose entry in the + ipoaArpRemoteSrvrTable is being deactivated. In + this case, any corresponding ipoaArpClientSrvrInUse + objects should be at a minimum invalidated by + setting their values to that of a zero length + OCTET STRING. + + If ipoaArpRemoteSrvrAdminStatus is down(2) then + ipoaArpRemoteSrvrOperStatus should be down(2). + If ipoaArpRemoteSrvrAdminStatus is changed to + up(1) then ipoaArpRemoteSrvrOperStatus should + change to up(1) if the Remote ATMARP Server + entry can be activated." + DEFVAL { down } + ::= { ipoaArpRemoteSrvrEntry 6 } + +-- The ATM VC Table + +ipoaVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A system that supports IP over ATM is an IP system and + therefore MUST support all of the appropriate tables in + the SNMPv2-MIB (RFC 1907), the IF-MIB (RFC 2233), + the IP-MIB (RFC 2011), the TCP-MIB (RFC 2012), and + the UDP-MIB (RFC 2013). This includes the + ipNetToMediaTable (the ARP cache) that is defined + within the IP-MIB (RFC 2011). The ipoaVcTable + keeps a set of VCs for each entry in the ARP cache + that was put there by an IP over ATM system acting + as either a host or server. The ipoaVcTable doesn't + augment the ipNetToMediaTable (ARP Cache) since the + the correspondence between tables is not necessarily + one-to-one. + + An ipNetToMediaPhysAddress object should contain the + content as defined by the IpoaAtmAddr textual + convention when used to hold an IPOA-MIB ATM Address." + ::= { ipoaObjects 7 } + +ipoaVcEntry OBJECT-TYPE + SYNTAX IpoaVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A VC (permanent or switched) that this host or server + has opened with another member of a LIS. Additional + information can be determined about the VC from the + ATM-MIB. + + Entries in this table cannot be created by management + applications. + + In an SVC environment, an entry is automatically added + by the system as the result of ATMARP processing. + + In a PVC environment, an entry is automatically added + to this table when an entry is created in the + ipoaConfigPvcTable and the IP Address at the remote + end of the PVC is discovered using InATMARP. An + entry also is added to the ipNetToMediaTable." + INDEX { ipNetToMediaIfIndex, + ipNetToMediaNetAddress, + ipoaVcVpi, + ipoaVcVci + } + ::= { ipoaVcTable 1 } + + +IpoaVcEntry ::= SEQUENCE { + ipoaVcVpi IpoaVpiInteger, + ipoaVcVci IpoaVciInteger, + ipoaVcType IpoaAtmConnKind, + ipoaVcNegotiatedEncapsType IpoaEncapsType, + ipoaVcNegotiatedMtu Integer32 } + +ipoaVcVpi OBJECT-TYPE + SYNTAX IpoaVpiInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value for the Virtual Circuit." + ::= { ipoaVcEntry 1 } + +ipoaVcVci OBJECT-TYPE + SYNTAX IpoaVciInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value for the Virtual Circuit." + ::= { ipoaVcEntry 2 } + +ipoaVcType OBJECT-TYPE + SYNTAX IpoaAtmConnKind + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Virtual Circuit." + ::= { ipoaVcEntry 3 } + +ipoaVcNegotiatedEncapsType OBJECT-TYPE + SYNTAX IpoaEncapsType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this circuit." + ::= { ipoaVcEntry 4 } + +ipoaVcNegotiatedMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MTU used when communicating over this circuit." + ::= { ipoaVcEntry 5 } + +-- The ATM Config PVC Table + +ipoaConfigPvcTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaConfigPvcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table MUST be supported when PVCs are intended to + be supported in order to enable the setup of PVCs for + use by IP." + ::= { ipoaObjects 8 } + +ipoaConfigPvcEntry OBJECT-TYPE + SYNTAX IpoaConfigPvcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a single PVC that exists at this host for + use by IP." + INDEX { ipoaConfigPvcIfIndex, + ipoaConfigPvcVpi, + ipoaConfigPvcVci + } + ::= { ipoaConfigPvcTable 1 } + +IpoaConfigPvcEntry ::= SEQUENCE { + ipoaConfigPvcIfIndex InterfaceIndex, + ipoaConfigPvcVpi IpoaVpiInteger, + ipoaConfigPvcVci IpoaVciInteger, + ipoaConfigPvcDefaultMtu Integer32, + ipoaConfigPvcRowStatus RowStatus } + +ipoaConfigPvcIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the ATM Interface that this PVC + is associated with." + ::= { ipoaConfigPvcEntry 1 } + +ipoaConfigPvcVpi OBJECT-TYPE + SYNTAX IpoaVpiInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value for the Virtual Circuit." + ::= { ipoaConfigPvcEntry 2 } + +ipoaConfigPvcVci OBJECT-TYPE + SYNTAX IpoaVciInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value for the Virtual Circuit." + ::= { ipoaConfigPvcEntry 3 } + +ipoaConfigPvcDefaultMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Classical IP and ARP over ATM allows use of + other MTU values for PVCs but considers how a + value other than 9180 could be selected to be out + of scope. ipoaConfigPvcDefaultMtu can be used to + configure the MTU to be used for the PVC. + Both ends MUST have the same value configured." + DEFVAL { 9180 } + ::= { ipoaConfigPvcEntry 4 } + +ipoaConfigPvcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows rows to be created and deleted in + the ipoaConfigPvcTable. Creation of an entry in this + table should eventually result in the creation of an + ipNetToMediaEntry and a corresponding ipoaVcEntry + after InATMARP has determined the destination address + of the remote system that the PVC is connected to. + Setting this object to destroy(6) should remove the + corresponding ipNetToMediaTable and ipoaVcTable + entries." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaConfigPvcEntry 5 } + + +-- Notifications + +ipoaTrapPrefix OBJECT IDENTIFIER ::= { ipoaNotifications 0 } + +ipoaMtuExceeded NOTIFICATION-TYPE + OBJECTS { + ipoaVcNegotiatedMtu + } + STATUS current + DESCRIPTION + "A frame was received that exceeds the negotiated + MTU size. The VPI and VCI of the VC for which this + condition was detected can be determined from the + index values for ipoaVcNegotiatedMtu. In addition, + the ifIndex and IP Address can be determined as + well (refer to the ipoaVcTable)." + ::= { ipoaTrapPrefix 1 } + +ipoaDuplicateIpAddress NOTIFICATION-TYPE + OBJECTS { + ipNetToMediaIfIndex, + ipNetToMediaNetAddress, + ipNetToMediaPhysAddress, + ipNetToMediaPhysAddress + } + STATUS current + DESCRIPTION + "The ATMARP Server has detected more than one ATM end + point attempting to associate the same IP address with + different ATM addresses." + ::= { ipoaTrapPrefix 2 } + +ipoaLisCreate NOTIFICATION-TYPE + OBJECTS { + ipoaLisSubnetAddr + } + STATUS current + DESCRIPTION + "Generation of this trap occurs when an ipoaLisEntry is + created while the ipoaLisTrapEnable.0 object has the + value enabled(1)." + ::= { ipoaTrapPrefix 3 } + +ipoaLisDelete NOTIFICATION-TYPE + OBJECTS { + ipoaLisSubnetAddr + } + STATUS current + DESCRIPTION + "Generation of this trap occurs when an ipoaLisEntry is + deleted while the ipoaLisTrapEnable.0 object has the + value enabled(1)." + ::= { ipoaTrapPrefix 4 } + +-- Conformance Definitions + +ipoaGroups OBJECT IDENTIFIER ::= { ipoaConformance 1 } + +ipoaCompliances OBJECT IDENTIFIER ::= { ipoaConformance 2 } + +-- compliance statements + +ipoaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + IPOA-MIB." + MODULE -- this module + MANDATORY-GROUPS { ipoaGeneralGroup, + ipoaBasicNotificationsGroup + } + GROUP ipoaClientGroup + DESCRIPTION + "This group is mandatory for all hosts where IP + over ATM client support is present." + GROUP ipoaSrvrGroup + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + GROUP ipoaSrvrNotificationsGroup + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + GROUP ipoaLisNotificationsGroup + DESCRIPTION + "This group is mandatory for all hosts where + ATMARP client only support is present and + ipoaLisTrapEnable is allowed to be set to + enabled(1)." + GROUP ipoaLisTableGroup + DESCRIPTION + "This group is mandatory for all entities which + support IP over ATM SVCs. Support of objects in + this group by IP over ATM clients which only + support IP over ATM PVCs is optional." + + OBJECT ipoaLisDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default MTU from the value 9180. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisDefaultEncapsType + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user to + specify the default encapsulation type for the + LIS. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisInactivityTimer + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisMinHoldingTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisQDepth + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisMaxCalls + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisCacheEntryAge + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisRetries + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default number of times an ATMARP + request will be retried when no response is + received from the default of 2. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisTimeout + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default retransmission time from + the default of 10 seconds. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisDefaultPeakCellRate + MIN-ACCESS read-only + DESCRIPTION + "Implementations that do not support IP over + ATM SVC usage are not required to allow the + user to specify a best effort default peak cell + rate since typically the ipoaLisTable won't + exist. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisIfMappingRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaArpClientAtmAddr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaArpSrvrLis + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaArpRemoteSrvrAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security. In this case the value of + this object should be up(1) when a VC + exists to the Remote ATMARP Server or + otherwise down(2), and the agent should not + allow a SET operation to this object." + + OBJECT ipoaConfigPvcDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisRowStatus + 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 ipoaArpClientRowStatus + 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 ipoaArpRemoteSrvrRowStatus + 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 ipoaArpSrvrRowStatus + 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 ipoaConfigPvcRowStatus + 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 ipoaArpClientArpOutNaks + MIN-ACCESS not-accessible + DESCRIPTION + "Classic IP and ARP over ATM does not require + an ATMARP client to transmit an ATMARP_NAK + upon receipt of an ATMARP request from another + ATMARP client. This object should be + implemented when an ATMARP client supports the + transmission of ATMARP_NAKs." + + ::= { ipoaCompliances 1 } + +-- units of conformance + +ipoaGeneralGroup OBJECT-GROUP + OBJECTS { + ipoaVcType, + ipoaVcNegotiatedEncapsType, + ipoaVcNegotiatedMtu, + ipoaConfigPvcDefaultMtu, + ipoaConfigPvcRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all IP over ATM entities." + ::= { ipoaGroups 1 } + +ipoaClientGroup OBJECT-GROUP + OBJECTS { + ipoaArpClientAtmAddr, + ipoaArpClientSrvrInUse, + ipoaArpClientInArpInReqs, + ipoaArpClientInArpOutReqs, + ipoaArpClientInArpInReplies, + ipoaArpClientInArpOutReplies, + ipoaArpClientInArpInvalidInReqs, + ipoaArpClientInArpInvalidOutReqs, + ipoaArpClientArpInReqs, + ipoaArpClientArpOutReqs, + ipoaArpClientArpInReplies, + ipoaArpClientArpOutReplies, + ipoaArpClientArpInNaks, + ipoaArpClientArpOutNaks, + ipoaArpClientArpUnknownOps, + ipoaArpClientArpNoSrvrResps, + ipoaArpClientRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts where an IP + over ATM client is present." + ::= { ipoaGroups 2 } + +ipoaSrvrGroup OBJECT-GROUP + OBJECTS { + ipoaArpSrvrLis, + ipoaArpSrvrInArpInReqs, + ipoaArpSrvrInArpOutReqs, + ipoaArpSrvrInArpInReplies, + ipoaArpSrvrInArpOutReplies, + ipoaArpSrvrInArpInvalidInReqs, + ipoaArpSrvrInArpInvalidOutReqs, + ipoaArpSrvrArpInReqs, + ipoaArpSrvrArpOutReplies, + ipoaArpSrvrArpOutNaks, + ipoaArpSrvrArpDupIpAddrs, + ipoaArpSrvrArpUnknownOps, + ipoaArpSrvrRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + ::= { ipoaGroups 3 } + +ipoaBasicNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaMtuExceeded + } + STATUS current + DESCRIPTION + "The notification which an IP over ATM entity + is required to implement." + ::= { ipoaGroups 4 } + +ipoaSrvrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaDuplicateIpAddress + } + STATUS current + DESCRIPTION + "The notification which an IP over ATM ATMARP + Server is required to implement." + ::= { ipoaGroups 5 } + +ipoaLisNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaLisCreate, + ipoaLisDelete + } + STATUS current + DESCRIPTION + "The LIS-related notifications which are required + to be implemented by an IP over ATM ATMARP server, + as well as by any IP over ATM client which allows + ipoaLisTrapEnable to be set to enabled(1)." + ::= { ipoaGroups 6 } + +ipoaLisTableGroup OBJECT-GROUP + OBJECTS { + ipoaLisTrapEnable, + ipoaLisSubnetAddr, + ipoaLisDefaultMtu, + ipoaLisDefaultEncapsType, + ipoaLisInactivityTimer, + ipoaLisMinHoldingTime, + ipoaLisQDepth, + ipoaLisMaxCalls, + ipoaLisCacheEntryAge, + ipoaLisRetries, + ipoaLisTimeout, + ipoaLisDefaultPeakCellRate, + ipoaLisActiveVcs, + ipoaLisRowStatus, + ipoaLisIfMappingRowStatus, + ipoaArpRemoteSrvrRowStatus, + ipoaArpRemoteSrvrIpAddr, + ipoaArpRemoteSrvrAdminStatus, + ipoaArpRemoteSrvrOperStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all entities which + support IP over ATM SVCs. Support of objects in + this group by IP over ATM clients which only + support IP over ATM PVCs is optional." + ::= { ipoaGroups 7 } + +END diff --git a/mibs/ietf/IPS-AUTH-MIB b/mibs/ietf/IPS-AUTH-MIB new file mode 100644 index 0000000..8e1327f --- /dev/null +++ b/mibs/ietf/IPS-AUTH-MIB @@ -0,0 +1,1219 @@ +IPS-AUTH-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, Unsigned32, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, AutonomousType, StorageType + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB + ; + +ipsAuthMibModule MODULE-IDENTITY + LAST-UPDATED "200605220000Z" -- May 22, 2006 + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO + " + Mark Bakke + Postal: Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + + E-mail: mbakke@cisco.com + + James Muchow + Postal: Qlogic Corp. + 6321 Bury Dr. + Eden Prairie, MN + USA 55346 + + E-Mail: james.muchow@qlogic.com" + + DESCRIPTION + "The IP Storage Authorization MIB module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4545; see the RFC itself for + full legal notices." + + + + REVISION "200605220000Z" -- May 22, 2006 + DESCRIPTION + "Initial version of the IP Storage Authentication MIB module, + published as RFC 4545" + +::= { mib-2 141 } + +ipsAuthNotifications OBJECT IDENTIFIER ::= { ipsAuthMibModule 0 } +ipsAuthObjects OBJECT IDENTIFIER ::= { ipsAuthMibModule 1 } +ipsAuthConformance OBJECT IDENTIFIER ::= { ipsAuthMibModule 2 } + +-- Textual Conventions + +IpsAuthAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "IP Storage requires the use of address information + that uses not only the InetAddress type defined in the + INET-ADDRESS-MIB, but also Fibre Channel type defined + in the Fibre Channel Management MIB. Although these + address types are recognized in the IANA Address Family + Numbers MIB, the addressing mechanisms have not been + merged into a well-known, common type. This data type, + the IpsAuthAddress, performs the merging for this MIB + module. + + The formats of objects of this type are determined by + a corresponding object with syntax AddressFamilyNumbers, + and thus every object defined using this TC must + identify the object with syntax AddressFamilyNumbers + that specifies its type. + + The syntax and semantics of this object depend on the + identified AddressFamilyNumbers object as follows: + + AddressFamilyNumbers this object + ==================== =========== + ipV4(1) restricted to the same syntax and + semantics as the InetAddressIPv4 TC. + + ipV6(2) restricted to the same syntax and + semantics as the InetAddressIPv6 TC. + + fibreChannelWWPN (22) + & fibreChannelWWNN(23) restricted to the same syntax and + semantics as the FcNameIdOrZero TC. + + Types other than the above should not be used unless + + + + the corresponding format of the IpsAuthAddress object is + further specified (e.g., in a future revision of this TC)." + REFERENCE + "IANA-ADDRESS-FAMILY-NUMBERS-MIB; + INET-ADDRESS-MIB (RFC 4001); + FC-MGMT-MIB (RFC 4044)." + SYNTAX OCTET STRING (SIZE(0..255)) + +--****************************************************************** + +ipsAuthDescriptors OBJECT IDENTIFIER ::= { ipsAuthObjects 1 } + +ipsAuthMethodTypes OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Registration point for Authentication Method Types." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthDescriptors 1 } + +ipsAuthMethodNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no authentication + method is used." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 1 } + +ipsAuthMethodSrp OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is SRP." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 2 } + +ipsAuthMethodChap OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is CHAP." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 3 } + +ipsAuthMethodKerberos OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is Kerberos." + + + + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 4 } + +--****************************************************************** + +ipsAuthInstance OBJECT IDENTIFIER ::= { ipsAuthObjects 2 } + +-- Instance Attributes Table + +ipsAuthInstanceAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Authorization instances present on the system." +::= { ipsAuthInstance 2 } + +ipsAuthInstanceAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular Authorization instance." + INDEX { ipsAuthInstIndex } +::= { ipsAuthInstanceAttributesTable 1 } + +IpsAuthInstanceAttributesEntry ::= SEQUENCE { + ipsAuthInstIndex Unsigned32, + ipsAuthInstDescr SnmpAdminString, + ipsAuthInstStorageType StorageType +} + +ipsAuthInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular authorization instance. This index value + must not be modified or reused by an agent unless + a reboot has occurred. An agent should attempt to + keep this value persistent across reboots." +::= { ipsAuthInstanceAttributesEntry 1 } + +ipsAuthInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "A character string, determined by the implementation to + describe the authorization instance. When only a single + instance is present, this object may be set to the + zero-length string; with multiple authorization + instances, it must be set to a unique value in an + implementation-dependent manner to describe the purpose + of the respective instance. If this is deployed in a + master agent with more than one subagent implementing + this MIB module, the master agent is responsible for + ensuring that this object is unique across all + subagents." +::= { ipsAuthInstanceAttributesEntry 2 } + +ipsAuthInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for all read-write objects within this + row. Rows in this table are always created via an + external process, and may have a storage type of readOnly + or permanent. Conceptual rows having the value 'permanent' + need not allow write access to any columnar objects in + the row. + + If this object has the value 'volatile', modifications + to read-write objects in this row are not persistent + across reboots. If this object has the value + 'nonVolatile', modifications to objects in this row + are persistent. + + An implementation may choose to allow this object + to be set to either 'nonVolatile' or 'volatile', + allowing the management application to choose this + behavior." + DEFVAL { volatile } +::= { ipsAuthInstanceAttributesEntry 3 } + +ipsAuthIdentity OBJECT IDENTIFIER ::= { ipsAuthObjects 3 } + +-- User Identity Attributes Table + +ipsAuthIdentAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentAttributesEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A list of user identities, each belonging to a + particular ipsAuthInstance." +::= { ipsAuthIdentity 1 } + +ipsAuthIdentAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + describing a user identity within an authorization + instance on this node." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex } +::= { ipsAuthIdentAttributesTable 1 } + +IpsAuthIdentAttributesEntry ::= SEQUENCE { + ipsAuthIdentIndex Unsigned32, + ipsAuthIdentDescription SnmpAdminString, + ipsAuthIdentRowStatus RowStatus, + ipsAuthIdentStorageType StorageType +} + +ipsAuthIdentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular identity instance within an authorization + instance present on the node. This index value + must not be modified or reused by an agent unless + a reboot has occurred. An agent should attempt to + keep this value persistent across reboots." +::= { ipsAuthIdentAttributesEntry 1 } + +ipsAuthIdentDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string describing this particular identity." +::= { ipsAuthIdentAttributesEntry 2 } + +ipsAuthIdentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthIdentDescription may be set while + ipsAuthIdentRowStatus is 'active'." +::= { ipsAuthIdentAttributesEntry 3 } + +ipsAuthIdentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentAttributesEntry 4 } + +ipsAuthIdentityName OBJECT IDENTIFIER ::= { ipsAuthObjects 4 } + +-- User Initiator Name Attributes Table + +ipsAuthIdentNameAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentNameAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of unique names that can be used to positively + identify a particular user identity." +::= { ipsAuthIdentityName 1 } + +ipsAuthIdentNameAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentNameAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a unique identity name, which can be used + to identify a user identity within a particular + authorization instance." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, + ipsAuthIdentNameIndex } +::= { ipsAuthIdentNameAttributesTable 1 } + + + + +IpsAuthIdentNameAttributesEntry ::= SEQUENCE { + ipsAuthIdentNameIndex Unsigned32, + ipsAuthIdentName SnmpAdminString, + ipsAuthIdentNameRowStatus RowStatus, + ipsAuthIdentNameStorageType StorageType +} + +ipsAuthIdentNameIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular identity name instance within an + ipsAuthIdentity within an authorization instance. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthIdentNameAttributesEntry 1 } + +ipsAuthIdentName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string that is the unique name of an + identity that may be used to identify this ipsAuthIdent + entry." +::= { ipsAuthIdentNameAttributesEntry 2 } + +ipsAuthIdentNameRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthIdentName may be set when this value is 'active'." +::= { ipsAuthIdentNameAttributesEntry 3 } + +ipsAuthIdentNameStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentNameAttributesEntry 4 } + +ipsAuthIdentityAddress OBJECT IDENTIFIER ::= { ipsAuthObjects 5 } + +-- User Initiator Address Attributes Table + +ipsAuthIdentAddrAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentAddrAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of address ranges that are allowed to serve + as the endpoint addresses of a particular identity. + An address range includes a starting and ending address + and an optional netmask, and an address type indicator, + which can specify whether the address is IPv4, IPv6, + FC-WWPN, or FC-WWNN." +::= { ipsAuthIdentityAddress 1 } + +ipsAuthIdentAddrAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentAddrAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to an address range that is used as part + of the authorization of an identity + within an authorization instance on this node." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, + ipsAuthIdentAddrIndex } +::= { ipsAuthIdentAddrAttributesTable 1 } + +IpsAuthIdentAddrAttributesEntry ::= SEQUENCE { + ipsAuthIdentAddrIndex Unsigned32, + ipsAuthIdentAddrType AddressFamilyNumbers, + ipsAuthIdentAddrStart IpsAuthAddress, + ipsAuthIdentAddrEnd IpsAuthAddress, + ipsAuthIdentAddrRowStatus RowStatus, + ipsAuthIdentAddrStorageType StorageType +} + +ipsAuthIdentAddrIndex OBJECT-TYPE + + + + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular ipsAuthIdentAddress instance within an + ipsAuthIdentity within an authorization instance + present on the node. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthIdentAddrAttributesEntry 1 } + +ipsAuthIdentAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address types used in the ipsAuthIdentAddrStart + and ipsAuthAddrEnd objects. This type is taken + from the IANA address family types." +::= { ipsAuthIdentAddrAttributesEntry 2 } + +ipsAuthIdentAddrStart OBJECT-TYPE + SYNTAX IpsAuthAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The starting address of the allowed address range. + The format of this object is determined by + ipsAuthIdentAddrType." +::= { ipsAuthIdentAddrAttributesEntry 3 } + +ipsAuthIdentAddrEnd OBJECT-TYPE + SYNTAX IpsAuthAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ending address of the allowed address range. + If the ipsAuthIdentAddrEntry specifies a single + address, this shall match the ipsAuthIdentAddrStart. + The format of this object is determined by + ipsAuthIdentAddrType." +::= { ipsAuthIdentAddrAttributesEntry 4 } + +ipsAuthIdentAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The values of + ipsAuthIdentAddrStart and ipsAuthIdentAddrEnd may be set + when this value is 'active'. The value of + ipsAuthIdentAddrType may not be set when this value is + 'active'." +::= { ipsAuthIdentAddrAttributesEntry 5 } + +ipsAuthIdentAddrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentAddrAttributesEntry 6 } + +ipsAuthCredential OBJECT IDENTIFIER ::= { ipsAuthObjects 6 } + +-- Credential Attributes Table + +ipsAuthCredentialAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredentialAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of credentials related to user identities + that are allowed as valid authenticators of the + particular identity." +::= { ipsAuthCredential 1 } + +ipsAuthCredentialAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredentialAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that verifies a user + identity within an authorization instance. + + + + To provide complete information in this MIB for a credential, + the management station must not only create the row in this + table but must also create a row in another table, where the + other table is determined by the value of + ipsAuthCredAuthMethod, e.g., if ipsAuthCredAuthMethod has the + value ipsAuthMethodChap, a row must be created in the + ipsAuthCredChapAttributesTable." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredentialAttributesTable 1 } + +IpsAuthCredentialAttributesEntry ::= SEQUENCE { + ipsAuthCredIndex Unsigned32, + ipsAuthCredAuthMethod AutonomousType, + ipsAuthCredRowStatus RowStatus, + ipsAuthCredStorageType StorageType +} + +ipsAuthCredIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular Credential instance within an instance + present on the node. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthCredentialAttributesEntry 1 } + +ipsAuthCredAuthMethod OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains an OBJECT IDENTIFIER + that identifies the authentication method + used with this credential. + + When a row is created in this table, a corresponding + row must be created by the management station + in a corresponding table specified by this value. + + When a row is deleted from this table, the corresponding + row must be automatically deleted by the agent in + the corresponding table specified by this value. + + + + + If the value of this object is ipsAuthMethodNone, no + corresponding rows are created or deleted from other + tables. + + Some standardized values for this object are defined + within the ipsAuthMethodTypes subtree." +::= { ipsAuthCredentialAttributesEntry 2 } + +ipsAuthCredRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredAuthMethod must not be changed while this row + is 'active'." +::= { ipsAuthCredentialAttributesEntry 3 } + +ipsAuthCredStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredentialAttributesEntry 4 } + +ipsAuthCredChap OBJECT IDENTIFIER ::= { ipsAuthObjects 7 } + +-- Credential Chap-Specific Attributes Table + +ipsAuthCredChapAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredChapAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of CHAP attributes for credentials that + use ipsAuthMethodChap as their ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + + + + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodChap'." +::= { ipsAuthCredChap 1 } + +ipsAuthCredChapAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredChapAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodChap as their ipsAuthCredAuthMethod. + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredChap, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredChap, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredChapAttributesTable 1 } + +IpsAuthCredChapAttributesEntry ::= SEQUENCE { + ipsAuthCredChapUserName SnmpAdminString, + ipsAuthCredChapRowStatus RowStatus, + ipsAuthCredChapStorageType StorageType +} + +ipsAuthCredChapUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing the CHAP user name for this + credential." + REFERENCE + "W. Simpson, RFC 1994: PPP Challenge Handshake + Authentication Protocol (CHAP), August 1996" +::= { ipsAuthCredChapAttributesEntry 1 } + +ipsAuthCredChapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredChapUserName may be changed while this row + is 'active'." +::= { ipsAuthCredChapAttributesEntry 2 } + +ipsAuthCredChapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredChapAttributesEntry 3 } + +ipsAuthCredSrp OBJECT IDENTIFIER ::= { ipsAuthObjects 8 } + +-- Credential Srp-Specific Attributes Table + +ipsAuthCredSrpAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredSrpAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SRP attributes for credentials that + use ipsAuthMethodSrp as its ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodSrp'." +::= { ipsAuthCredSrp 1 } + +ipsAuthCredSrpAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredSrpAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodSrp as their ipsAuthCredAuthMethod. + + + + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredSrp, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredSrp, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredSrpAttributesTable 1 } + +IpsAuthCredSrpAttributesEntry ::= SEQUENCE { + ipsAuthCredSrpUserName SnmpAdminString, + ipsAuthCredSrpRowStatus RowStatus, + ipsAuthCredSrpStorageType StorageType +} + +ipsAuthCredSrpUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing the SRP user name for this + credential." + REFERENCE + "T. Wu, RFC 2945: The SRP Authentication and Key + Exchange System, September 2000" +::= { ipsAuthCredSrpAttributesEntry 1 } + +ipsAuthCredSrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredSrpUserName may be changed while the status + of this row is 'active'." +::= { ipsAuthCredSrpAttributesEntry 2 } + +ipsAuthCredSrpStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredSrpAttributesEntry 3 } + +ipsAuthCredKerberos OBJECT IDENTIFIER ::= { ipsAuthObjects 9 } + +-- Credential Kerberos-Specific Attributes Table + +ipsAuthCredKerbAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredKerbAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Kerberos attributes for credentials that + use ipsAuthMethodKerberos as their ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodKerb'." +::= { ipsAuthCredKerberos 1 } + +ipsAuthCredKerbAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredKerbAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodKerberos as its ipsAuthCredAuthMethod. + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredKerberos, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredKerberos, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredKerbAttributesTable 1 } + +IpsAuthCredKerbAttributesEntry ::= SEQUENCE { + + + + ipsAuthCredKerbPrincipal SnmpAdminString, + ipsAuthCredKerbRowStatus RowStatus, + ipsAuthCredKerbStorageType StorageType +} + +ipsAuthCredKerbPrincipal OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing a Kerberos principal + for this credential." + REFERENCE + "C. Neuman, S. Hartman, and K. Raeburn, RFC 4120: + The Kerberos Network Authentication Service (V5), + July 2005" +::= { ipsAuthCredKerbAttributesEntry 1 } + +ipsAuthCredKerbRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredKerbPrincipal may be changed while this row + is 'active'." +::= { ipsAuthCredKerbAttributesEntry 2 } + +ipsAuthCredKerbStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredKerbAttributesEntry 3 } + +--****************************************************************** +-- Notifications + +-- There are no notifications necessary in this MIB module. + + + +--****************************************************************** + +-- Conformance Statements + +ipsAuthCompliances OBJECT IDENTIFIER ::= { ipsAuthConformance 1 } +ipsAuthGroups OBJECT IDENTIFIER ::= { ipsAuthConformance 2 } + +ipsAuthInstanceAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthInstDescr, + ipsAuthInstStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + authorization instances." +::= { ipsAuthGroups 1 } + +ipsAuthIdentAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentDescription, + ipsAuthIdentRowStatus, + ipsAuthIdentStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + user identities within an authorization instance." +::= { ipsAuthGroups 2 } + +ipsAuthIdentNameAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentName, + ipsAuthIdentNameRowStatus, + ipsAuthIdentNameStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + user names within user identities within an authorization + instance." +::= { ipsAuthGroups 3 } + +ipsAuthIdentAddrAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentAddrType, + ipsAuthIdentAddrStart, + ipsAuthIdentAddrEnd, + + + + ipsAuthIdentAddrRowStatus, + ipsAuthIdentAddrStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + address ranges within user identities within an + authorization instance." +::= { ipsAuthGroups 4 } + +ipsAuthIdentCredAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredAuthMethod, + ipsAuthCredRowStatus, + ipsAuthCredStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + credentials within user identities within an authorization + instance." +::= { ipsAuthGroups 5 } + +ipsAuthIdentChapAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredChapUserName, + ipsAuthCredChapRowStatus, + ipsAuthCredChapStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + CHAP credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 6 } + +ipsAuthIdentSrpAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredSrpUserName, + ipsAuthCredSrpRowStatus, + ipsAuthCredSrpStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + SRP credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 7 } + + + +ipsAuthIdentKerberosAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredKerbPrincipal, + ipsAuthCredKerbRowStatus, + ipsAuthCredKerbStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + Kerberos credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 8 } + +--****************************************************************** + +ipsAuthComplianceV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial version of compliance statement based on + initial version of this MIB module. + + The Instance and Identity groups are mandatory; + at least one of the other groups (Name, Address, + Credential, Certificate) is also mandatory for + any given implementation." + MODULE -- this module + MANDATORY-GROUPS { + ipsAuthInstanceAttributesGroup, + ipsAuthIdentAttributesGroup + } + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when necessary. + + GROUP ipsAuthIdentNameAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that make use of unique identity names." + + GROUP ipsAuthIdentAddrAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that use addresses to help verify identities." + + GROUP ipsAuthIdentCredAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that use credentials to help verify identities." + + + + GROUP ipsAuthIdentChapAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use CHAP to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + GROUP ipsAuthIdentSrpAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use SRP to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + GROUP ipsAuthIdentKerberosAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use Kerberos to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + OBJECT ipsAuthInstDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthInstStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentRowStatus + 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 ipsAuthIdentName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentNameRowStatus + 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 ipsAuthIdentAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrEnd + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrRowStatus + 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 ipsAuthCredAuthMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredRowStatus + 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 ipsAuthCredChapUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredChapRowStatus + 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 ipsAuthCredSrpUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredSrpRowStatus + 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 ipsAuthCredKerbPrincipal + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredKerbRowStatus + 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)." + +::= { ipsAuthCompliances 1 } + +END diff --git a/mibs/ietf/IPSEC-SPD-MIB b/mibs/ietf/IPSEC-SPD-MIB new file mode 100644 index 0000000..eaa7a86 --- /dev/null +++ b/mibs/ietf/IPSEC-SPD-MIB @@ -0,0 +1,2849 @@ +IPSEC-SPD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, + Unsigned32, mib-2 FROM SNMPv2-SMI + -- [RFC2578] + + TEXTUAL-CONVENTION, RowStatus, TruthValue, + TimeStamp, StorageType, VariablePointer + FROM SNMPv2-TC + -- [RFC2579] + + + + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + -- [RFC2580] + + InterfaceIndex + FROM IF-MIB + -- [RFC2863] + + diffServMIBMultiFieldClfrGroup, IfDirection, + diffServMultiFieldClfrNextFree + FROM DIFFSERV-MIB + -- [RFC3289] + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB + -- [RFC4001] + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + -- [RFC3411] + + ; + +-- +-- module identity +-- + +spdMIB MODULE-IDENTITY + LAST-UPDATED "200702070000Z" -- 7 February 2007 + ORGANIZATION "IETF IP Security Policy Working Group" + CONTACT-INFO "Michael Baer + P.O. Box 72682 + Davis, CA 95617 + Phone: +1 530 902 3131 + Email: baerm@tislabs.com + + Ricky Charlet + Email: rcharlet@alumni.calpoly.edu + + Wes Hardaker + Sparta, Inc. + P.O. Box 382 + Davis, CA 95617 + Phone: +1 530 792 1913 + Email: hardaker@tislabs.com + + Robert Story + Revelstone Software + PO Box 1812 + + + + Tucker, GA 30085 + Phone: +1 770 617 3722 + Email: rstory@ipsp.revelstone.com + + Cliff Wang + ARO + 4300 S. Miami Blvd. + Durham, NC 27703 + E-Mail: cliffwangmail@yahoo.com" + DESCRIPTION + "This MIB module defines configuration objects for managing + IPsec Security Policies. In general, this MIB can be + implemented anywhere IPsec security services exist (e.g., + bump-in-the-wire, host, gateway, firewall, router, etc.). + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4807; see the RFC itself for + full legal notices." + +-- Revision History + + REVISION "200702070000Z" -- 7 February 2007 + DESCRIPTION "Initial version, published as RFC 4807." + + ::= { mib-2 153 } + +-- +-- groups of related objects +-- + +spdConfigObjects OBJECT IDENTIFIER + ::= { spdMIB 1 } +spdNotificationObjects OBJECT IDENTIFIER + ::= { spdMIB 2 } +spdConformanceObjects OBJECT IDENTIFIER + ::= { spdMIB 3 } +spdActions OBJECT IDENTIFIER + ::= { spdMIB 4 } + +-- +-- Textual Conventions +-- + +SpdBooleanOperator ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The SpdBooleanOperator operator is used to specify + whether sub-components in a decision-making process are + + + + ANDed or ORed together to decide if the resulting + expression is true or false." + SYNTAX INTEGER { or(1), and(2) } + +SpdAdminStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The SpdAdminStatus is used to specify the administrative + status of an object. Objects that are disabled MUST NOT + be used by the packet processing engine." + SYNTAX INTEGER { enabled(1), disabled(2) } + +SpdIPPacketLogging ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "SpdIPPacketLogging specifies whether an audit message + SHOULD be logged if a packet is passed through a Security + Association (SA) and if some of that packet is included in + the log event. A value of '-1' indicates no logging. A + value of '0' or greater indicates that logging SHOULD be + done and indicates the number of bytes starting at the + beginning of the packet to place in the log. Values greater + than the size of the packet being processed indicate that + the entire packet SHOULD be sent. + + Examples: + '-1' no logging + '0' log but do not include any of the packet in the log + '20' log and include the first 20 bytes of the packet + in the log." + + SYNTAX Integer32 (-1..65535) + + +SpdTimePeriod ::= TEXTUAL-CONVENTION + DISPLAY-HINT "31t" + STATUS current + DESCRIPTION + "This property identifies an overall range of calendar dates + and time. In a boolean context, a value within this time + range, inclusive, is considered true. + + This information is encoded as an octet string using + the UTF-8 transformation format described in STD 63, + RFC 3629. + + It uses the format suggested in RFC 3060. An octet string + + + + represents a start date and time and an end date and time. + For example: + + yyyymmddThhmmss/yyyymmddThhmmss + + Where: yyyy = year mm = month dd = day + hh = hour mm = minute ss = second + + The first 'yyyymmddThhmmss' sub-string indicates the start + date and time. The second 'yyyymmddThhmmss' sub-string + indicates the end date and time. The character 'T' within + these sub-strings indicates the beginning of the time + portion of each sub-string. The solidus character '/' + separates the start from the end date and time. The end + date and time MUST be subsequent to the start date and + time. + + There are also two allowed substitutes for a + 'yyyymmddThhmmss' sub-string: one for the start date and + time, and one for the end date and time. + + If the start date and time are replaced with the string + 'THISANDPRIOR', this sub-string would indicate the current + date and time and the previous dates and time. + + If the end date and time are replaced with the string + 'THISANDFUTURE', this sub-string would indicate the current + date and time and the subsequent dates and time. + + Any of the following SHOULD be considered a + 'wrongValue' error: + - Setting a value with the end date and time earlier than + or equal to the start date and time. + - Setting the start date and time to 'THISANDFUTURE'. + - Setting the end date and time to 'THISANDPRIOR'." + REFERENCE "RFC 3060, 3269" + SYNTAX OCTET STRING (SIZE (0..31)) +-- +-- Policy group definitions +-- + +spdLocalConfigObjects OBJECT IDENTIFIER + ::= { spdConfigObjects 1 } + +spdIngressPolicyGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "This object indicates the global system policy group that + is to be applied on ingress packets (i.e., arriving at an + interface from a network) when a given endpoint does not + contain a policy definition in the spdEndpointToGroupTable. + Its value can be used as an index into the + spdGroupContentsTable to retrieve a list of policies. A + zero length string indicates that no system-wide policy exists + and the default policy of 'drop' SHOULD be executed for + ingress packets until one is imposed by either this object + or by the endpoint processing a given packet. + + This object MUST be persistent" + DEFVAL { "" } + ::= { spdLocalConfigObjects 1 } + +spdEgressPolicyGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the policy group containing the + global system policy that is to be applied on egress + packets (i.e., packets leaving an interface and entering a + network) when a given endpoint does not contain a policy + definition in the spdEndpointToGroupTable. Its value can + be used as an index into the spdGroupContentsTable to + retrieve a list of policies. A zero length string + indicates that no system-wide policy exists and the default + policy of 'drop' SHOULD be executed for egress packets + until one is imposed by either this object or by the + endpoint processing a given packet. + + This object MUST be persistent" + DEFVAL { "" } + ::= { spdLocalConfigObjects 2 } + + +spdEndpointToGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdEndpointToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps policies (groupings) onto an endpoint + (interface). A policy group assigned to an endpoint is then + used to control access to the network traffic passing + through that endpoint. + + + + + If an endpoint has been configured with a policy group and + no rule within that policy group matches that packet, the + default action in this case SHALL be to drop the packet. + + If no policy group has been assigned to an endpoint, then + the policy group specified by spdIngressPolicyGroupName MUST + be used on traffic inbound from the network through that + endpoint, and the policy group specified by + spdEgressPolicyGroupName MUST be used for traffic outbound + to the network through that endpoint." + ::= { spdConfigObjects 2 } + +spdEndpointToGroupEntry OBJECT-TYPE + SYNTAX SpdEndpointToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping assigning a policy group to an endpoint." + + INDEX { spdEndGroupDirection, spdEndGroupInterface } + ::= { spdEndpointToGroupTable 1 } + +SpdEndpointToGroupEntry ::= SEQUENCE { + spdEndGroupDirection IfDirection, + spdEndGroupInterface InterfaceIndex, + spdEndGroupName SnmpAdminString, + spdEndGroupLastChanged TimeStamp, + spdEndGroupStorageType StorageType, + spdEndGroupRowStatus RowStatus +} + +spdEndGroupDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object indicates which direction of packets crossing + the interface are associated with which spdEndGroupName + object. Ingress packets, or packets into the device match + when this value is inbound(1). Egress packets or packets + out of the device match when this value is outbound(2)." + ::= { spdEndpointToGroupEntry 1 } + +spdEndGroupInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This value matches the IF-MIB's ifTable's ifIndex column + and indicates the interface associated with a given + endpoint. This object can be used to uniquely identify an + endpoint that a set of policy groups are applied to." + ::= { spdEndpointToGroupEntry 2 } + +spdEndGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The policy group name to apply at this endpoint. The + value of the spdEndGroupName object is then used as an + index into the spdGroupContentsTable to come up with a list + of rules that MUST be applied at this endpoint." + ::= { spdEndpointToGroupEntry 3 } + +spdEndGroupLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdEndpointToGroupEntry 4 } + +spdEndGroupStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdEndpointToGroupEntry 5 } + +spdEndGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object is considered 'notReady' and MUST NOT be set to + active until one or more active rows exist within the + spdGroupContentsTable for the group referenced by the + spdEndGroupName object." + ::= { spdEndpointToGroupEntry 6 } + +-- +-- policy group definition table +-- + +spdGroupContentsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdGroupContentsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of rules and/or subgroups + contained within a given policy group. For a given value + of spdGroupContName, the set of rows sharing that value + forms a 'group'. The rows in a group MUST be processed + according to the value of the spdGroupContPriority object + in each row. The processing MUST be executed starting with + the lowest value of spdGroupContPriority and in ascending + order thereafter. + + If an action is executed as the result of the processing of + a row in a group, the processing of further rows in that + group MUST stop. Iterating to the next policy group row by + finding the next largest spdGroupContPriority object SHALL + only be done if no actions were run while processing the + current row for a given packet." + ::= { spdConfigObjects 3 } + +spdGroupContentsEntry OBJECT-TYPE + SYNTAX SpdGroupContentsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a given sub-component within a policy group. A + sub-component is either a rule or another group as + indicated by spdGroupContComponentType and referenced by + spdGroupContComponentName." + + + + INDEX { spdGroupContName, spdGroupContPriority } + ::= { spdGroupContentsTable 1 } + +SpdGroupContentsEntry ::= SEQUENCE { + spdGroupContName SnmpAdminString, + spdGroupContPriority Integer32, + spdGroupContFilter VariablePointer, + spdGroupContComponentType INTEGER, + spdGroupContComponentName SnmpAdminString, + spdGroupContLastChanged TimeStamp, + spdGroupContStorageType StorageType, + spdGroupContRowStatus RowStatus +} + +spdGroupContName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name of the group associated with this + row. A 'group' is formed by all the rows in this table that + have the same value of this object." + ::= { spdGroupContentsEntry 1 } + +spdGroupContPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority (sequence number) of the sub-component in + a group that this row represents. This value indicates + the order that each row of this table MUST be processed + from low to high. For example, a row with a priority of 0 + is processed before a row with a priority of 1, a 1 before + a 2, etc." + ::= { spdGroupContentsEntry 2 } + +spdGroupContFilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdGroupContFilter points to a filter that is evaluated + to determine whether the spdGroupContComponentName within + this row is exercised. Managers can use this object to + classify groups of rules, or subgroups, together in order to + achieve a greater degree of control and optimization over + the execution order of the items within the group. If the + + + + filter evaluates to false, the rule or subgroup will be + skipped and the next rule or subgroup will be evaluated + instead. This value can be used to indicate a scalar or + row in a table. When indicating a row in a table, this + value MUST point to the first column instance in that row. + + An example usage of this object would be to limit a + group of rules to executing only when the IP packet + being processed is designated to be processed by IKE. + This effectively creates a group of IKE-specific rules. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB: + + diffServMultiFieldClfrTable + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + spdIpsoHeaderFilterTable + + Implementations MAY choose to provide support for other + filter tables or scalars. + + If this column is set to a VariablePointer value, which + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, a row in this table is applied + to a packet and the value of this column in that row + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + DEFVAL { spdTrueFilterInstance } + ::= { spdGroupContentsEntry 3 } + +spdGroupContComponentType OBJECT-TYPE + SYNTAX INTEGER { group(1), rule(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the spdGroupContComponentName object + is the name of another group defined within the + spdGroupContentsTable or is the name of a rule defined + + + + within the spdRuleDefinitionTable." + DEFVAL { rule } + ::= { spdGroupContentsEntry 4 } + +spdGroupContComponentName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the policy rule or subgroup contained within + this row, as indicated by the spdGroupContComponentType + object." + ::= { spdGroupContentsEntry 5 } + +spdGroupContLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, + this object SHOULD have a zero value." + ::= { spdGroupContentsEntry 6 } + +spdGroupContStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdGroupContentsEntry 7 } + +spdGroupContRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object MUST NOT be set to active until the row to + which the spdGroupContComponentName points to exists and is + active. + + If active, this object MUST remain active unless one of the + following two conditions are met: + + I. No active row in spdEndpointToGroupTable exists that + references this row's group (i.e., indicate this row's + spdGroupContName). + + II. Or at least one other active row in this table has a + matching spdGroupContName. + + If neither condition is met, an attempt to set this row to + something other than active MUST result in an + inconsistentValue error." + ::= { spdGroupContentsEntry 8 } + + +-- +-- policy definition table +-- + +spdRuleDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdRuleDefinitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a rule by associating a filter + or a set of filters to an action to be executed." + ::= { spdConfigObjects 4 } + +spdRuleDefinitionEntry OBJECT-TYPE + SYNTAX SpdRuleDefinitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row defining a particular rule definition. A rule + definition binds a filter pointer to an action pointer." + INDEX { spdRuleDefName } + ::= { spdRuleDefinitionTable 1 } + +SpdRuleDefinitionEntry ::= SEQUENCE { + spdRuleDefName SnmpAdminString, + + + + spdRuleDefDescription SnmpAdminString, + spdRuleDefFilter VariablePointer, + spdRuleDefFilterNegated TruthValue, + spdRuleDefAction VariablePointer, + spdRuleDefAdminStatus SpdAdminStatus, + spdRuleDefLastChanged TimeStamp, + spdRuleDefStorageType StorageType, + spdRuleDefRowStatus RowStatus +} + +spdRuleDefName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "spdRuleDefName is the administratively assigned name of + the rule referred to by the spdGroupContComponentName + object." + ::= { spdRuleDefinitionEntry 1 } + +spdRuleDefDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A user defined string. This field MAY be used for + administrative tracking purposes." + DEFVAL { "" } + ::= { spdRuleDefinitionEntry 2 } + +spdRuleDefFilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdRuleDefFilter points to a filter that is used to + evaluate whether the action associated with this row is + executed or not. The action will only execute if the + filter referenced by this object evaluates to TRUE after + first applying any negation required by the + spdRuleDefFilterNegated object. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB. Implementations MAY choose to provide support + for other filter tables or scalars as well: + + diffServMultiFieldClfrTable + + + + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + + If this column is set to a VariablePointer value, which + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + ::= { spdRuleDefinitionEntry 3 } + +spdRuleDefFilterNegated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdRuleDefFilterNegated specifies whether or not the results of + the filter referenced by the spdRuleDefFilter object is + negated." + DEFVAL { false } + ::= { spdRuleDefinitionEntry 4 } + +spdRuleDefAction OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This column points to the action to be taken. It MAY, + but is not limited to, point to a row in one of the + following tables: + + spdCompoundActionTable + ipsaSaPreconfiguredActionTable + ipiaIkeActionTable + ipiaIpsecActionTable + + It MAY also point to one of the scalar objects beneath + spdStaticActions. + + If this object is set to a pointer to a row in an + unsupported (or unknown) table, an inconsistentValue + + + + error MUST be returned. + + If this object is set to point to a non-existent row in an + otherwise supported table, an inconsistentName error MUST + be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + ::= { spdRuleDefinitionEntry 5 } + +spdRuleDefAdminStatus OBJECT-TYPE + SYNTAX SpdAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the current rule definition is considered + active. If the value is enabled, the rule MUST be evaluated + when processing packets. If the value is disabled, the + packet processing MUST continue as if this rule's filter + had effectively failed." + DEFVAL { enabled } + ::= { spdRuleDefinitionEntry 6 } + +spdRuleDefLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdRuleDefinitionEntry 7 } + +spdRuleDefStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + + + + to be writable." + DEFVAL { nonVolatile } + ::= { spdRuleDefinitionEntry 8 } + +spdRuleDefRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object MUST NOT be set to active until the containing + conditions, filters, and actions have been defined. Once + active, it MUST remain active until no active + policyGroupContents entries are referencing it. A failed + attempt to do so MUST return an inconsistentValue error." + ::= { spdRuleDefinitionEntry 9 } + +-- +-- Policy compound filter definition table +-- + +spdCompoundFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdCompoundFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table defining compound filters and their associated + parameters. A row in this table can be pointed to by a + spdRuleDefFilter object." + ::= { spdConfigObjects 5 } + +spdCompoundFilterEntry OBJECT-TYPE + SYNTAX SpdCompoundFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the spdCompoundFilterTable. Each entry in this + table represents a compound filter. A filter defined by + this table is considered to have a TRUE return value if and + only if: + + spdCompFiltLogicType is AND and all of the sub-filters + associated with it, as defined in the spdSubfiltersTable, + are all true themselves (after applying any required + + + + negation, as defined by the ficFilterIsNegated object). + + spdCompFiltLogicType is OR and at least one of the + sub-filters associated with it, as defined in the + spdSubfiltersTable, is true itself (after applying any + required negation, as defined by the ficFilterIsNegated + object." + INDEX { spdCompFiltName } + ::= { spdCompoundFilterTable 1 } + +SpdCompoundFilterEntry ::= SEQUENCE { + spdCompFiltName SnmpAdminString, + spdCompFiltDescription SnmpAdminString, + spdCompFiltLogicType SpdBooleanOperator, + spdCompFiltLastChanged TimeStamp, + spdCompFiltStorageType StorageType, + spdCompFiltRowStatus RowStatus +} + +spdCompFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A user definable string. This value is used as an index + into this table." + ::= { spdCompoundFilterEntry 1 } + +spdCompFiltDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A user definable string. This field MAY be used for + your administrative tracking purposes." + DEFVAL { "" } + ::= { spdCompoundFilterEntry 2 } + +spdCompFiltLogicType OBJECT-TYPE + SYNTAX SpdBooleanOperator + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the sub-component filters of this + compound filter are functionally ANDed or ORed together." + DEFVAL { and } + ::= { spdCompoundFilterEntry 3 } + + + + +spdCompFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdCompoundFilterEntry 4 } + +spdCompFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdCompoundFilterEntry 5 } + +spdCompFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + Once active, it MUST NOT have its value changed if any + active rows in the spdRuleDefinitionTable are currently + pointing at this row." + ::= { spdCompoundFilterEntry 6 } + +-- +-- Policy filters in a cf table +-- + +spdSubfiltersTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF SpdSubfiltersEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a list of filters contained within a + given compound filter defined in the + spdCompoundFilterTable." + ::= { spdConfigObjects 6 } + +spdSubfiltersEntry OBJECT-TYPE + SYNTAX SpdSubfiltersEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the spdSubfiltersTable. There is an entry in + this table for each sub-filter of all compound filters + present in the spdCompoundFilterTable." + INDEX { spdCompFiltName, spdSubFiltPriority } + ::= { spdSubfiltersTable 1 } + +SpdSubfiltersEntry ::= SEQUENCE { + spdSubFiltPriority Integer32, + spdSubFiltSubfilter VariablePointer, + spdSubFiltSubfilterIsNegated TruthValue, + spdSubFiltLastChanged TimeStamp, + spdSubFiltStorageType StorageType, + spdSubFiltRowStatus RowStatus +} + +spdSubFiltPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority of a given filter within a compound filter. + The order of execution is from lowest to highest priority + value (i.e., priority 0 before priority 1, 1 before 2, + etc.). Implementations MAY choose to follow this ordering, + as set by the manager that created the rows. This can allow + a manager to intelligently construct filter lists such that + faster filters are evaluated first." + ::= { spdSubfiltersEntry 1 } + +spdSubFiltSubfilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The OID of the contained filter. The value of this + object is a VariablePointer that references the filter to + be included in this compound filter. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB. Implementations MAY choose to provide support + for other filter tables or scalars as well: + + diffServMultiFieldClfrTable + spdIpsoHeaderFilterTable + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + + If this column is set to a VariablePointer value that + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + ::= { spdSubfiltersEntry 2 } + +spdSubFiltSubfilterIsNegated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether or not the result of applying this sub-filter + is negated." + DEFVAL { false } + ::= { spdSubfiltersEntry 3 } + +spdSubFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + + + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdSubfiltersEntry 4 } + +spdSubFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdSubfiltersEntry 5 } + +spdSubFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object cannot be made active until a filter + referenced by the spdSubFiltSubfilter object is both + defined and active. An attempt to do so MUST result in + an inconsistentValue error. + + If active, this object MUST remain active unless one of the + following two conditions are met: + + I. No active row in the SpdCompoundFilterTable exists + that has a matching spdCompFiltName. + + II. Or, at least one other active row in this table has a + matching spdCompFiltName. + + If neither condition is met, an attempt to set this row to + something other than active MUST result in an + inconsistentValue error." + ::= { spdSubfiltersEntry 6 } + + + + +-- +-- Static Filters +-- + +spdStaticFilters OBJECT IDENTIFIER ::= { spdConfigObjects 7 } + +spdTrueFilter OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates a (automatic) true result for + a filter. That is, this is a filter that is always + true; it is useful for adding as a default filter for a + default action or a set of actions." + ::= { spdStaticFilters 1 } + + +spdTrueFilterInstance OBJECT IDENTIFIER ::= { spdTrueFilter 0 } + + +-- +-- Policy IP Offset filter definition table +-- + +spdIpOffsetFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdIpOffsetFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of filter definitions to be + used within the spdRuleDefinitionTable or the + spdSubfiltersTable. + + This type of filter is used to compare an administrator + specified octet string to the octets at a particular + location in a packet." + ::= { spdConfigObjects 8 } + +spdIpOffsetFilterEntry OBJECT-TYPE + SYNTAX SpdIpOffsetFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A definition of a particular filter." + INDEX { spdIpOffFiltName } + ::= { spdIpOffsetFilterTable 1 } + + + + +SpdIpOffsetFilterEntry ::= SEQUENCE { + spdIpOffFiltName SnmpAdminString, + spdIpOffFiltOffset Unsigned32, + spdIpOffFiltType INTEGER, + spdIpOffFiltValue OCTET STRING, + spdIpOffFiltLastChanged TimeStamp, + spdIpOffFiltStorageType StorageType, + spdIpOffFiltRowStatus RowStatus +} + +spdIpOffFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name for this filter." + ::= { spdIpOffsetFilterEntry 1 } + +spdIpOffFiltOffset OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the byte offset from the front of the entire IP + packet where the value or arithmetic comparison is done. A + value of '0' indicates the first byte of the packet header. + If this value is greater than the length of the packet, the + filter represented by this row should be considered to + fail." + ::= { spdIpOffsetFilterEntry 2 } + +spdIpOffFiltType OBJECT-TYPE + SYNTAX INTEGER { equal(1), + notEqual(2), + arithmeticLess(3), + arithmeticGreaterOrEqual(4), + arithmeticGreater(5), + arithmeticLessOrEqual(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This defines the various tests that are used when + evaluating a given filter. + + The various tests definable in this table are as follows: + + equal: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', matches + + + + a value in the packet starting at the given offset in + the packet and comparing the entire OCTET STRING of + 'spdIpOffFiltValue'. Any values compared this way are + assumed to be unsigned integer values in network byte + order of the same length as 'spdIpOffFiltValue'. + + notEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', does + not match a value in the packet starting at the given + offset in the packet and comparing to the entire OCTET + STRING of 'spdIpOffFiltValue'. Any values compared + this way are assumed to be unsigned integer values in + network byte order of the same length as + 'spdIpOffFiltValue'. + + arithmeticLess: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically less than ('<') the value starting at + the given offset within the packet. The value in the + packet is assumed to be an unsigned integer in network + byte order of the same length as 'spdIpOffFiltValue'. + + arithmeticGreaterOrEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically greater than or equal to ('>=') the + value starting at the given offset within the packet. + The value in the packet is assumed to be an unsigned + integer in network byte order of the same length as + 'spdIpOffFiltValue'. + + arithmeticGreater: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically greater than ('>') the value starting at + the given offset within the packet. The value in the + packet is assumed to be an unsigned integer in network + byte order of the same length as 'spdIpOffFiltValue'. + + arithmeticLessOrEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically less than or equal to ('<=') the value + starting at the given offset within the packet. The + value in the packet is assumed to be an unsigned + integer in network byte order of the same length as + 'spdIpOffFiltValue'." + + ::= { spdIpOffsetFilterEntry 3 } + +spdIpOffFiltValue OBJECT-TYPE + + + + SYNTAX OCTET STRING (SIZE(1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdIpOffFiltValue is used for match comparisons of a + packet at spdIpOffFiltOffset." + ::= { spdIpOffsetFilterEntry 4 } + +spdIpOffFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdIpOffsetFilterEntry 5 } + + +spdIpOffFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdIpOffsetFilterEntry 6 } + +spdIpOffFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active if it is + + + + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdIpOffsetFilterEntry 7 } + + +-- +-- Time/scheduling filter table +-- + +spdTimeFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdTimeFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table of filters that can be used to + effectively enable or disable policies based on a valid + time range." + ::= { spdConfigObjects 9 } + +spdTimeFilterEntry OBJECT-TYPE + SYNTAX SpdTimeFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row describing a given time frame for which a policy + is filtered on to activate or deactivate the rule. + + If all the column objects in a row are true for the current + time, the row evaluates as 'true'. More explicitly, the + time matching column objects in a row MUST be logically + ANDed together to form the boolean true/false for the row." + INDEX { spdTimeFiltName } + ::= { spdTimeFilterTable 1 } + +SpdTimeFilterEntry ::= SEQUENCE { + spdTimeFiltName SnmpAdminString, + spdTimeFiltPeriod SpdTimePeriod, + spdTimeFiltMonthOfYearMask BITS, + spdTimeFiltDayOfMonthMask OCTET STRING, + spdTimeFiltDayOfWeekMask BITS, + spdTimeFiltTimeOfDayMask SpdTimePeriod, + spdTimeFiltLastChanged TimeStamp, + spdTimeFiltStorageType StorageType, + spdTimeFiltRowStatus RowStatus +} + + + + +spdTimeFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An administratively assigned name for this filter." + ::= { spdTimeFilterEntry 1 } + + +spdTimeFiltPeriod OBJECT-TYPE + SYNTAX SpdTimePeriod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The valid time period for this filter. This column is + considered 'true' if the current time is within the range of + this object." + DEFVAL { "THISANDPRIOR/THISANDFUTURE" } + ::= { spdTimeFilterEntry 2 } + + +spdTimeFiltMonthOfYearMask OBJECT-TYPE + SYNTAX BITS { january(0), february(1), march(2), + april(3), may(4), june(5), july(6), + august(7), september(8), october(9), + november(10), december(11) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask that indicates acceptable months of the year. + This column evaluates to 'true' if the current month's bit + is set." + DEFVAL { { january, february, march, april, may, june, july, + august, september, october, november, december } } + ::= { spdTimeFilterEntry 3 } + +spdTimeFiltDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines which days of the month the current time is + valid for. It is a sequence of 64 BITS, where each BIT + represents a corresponding day of the month in forward or + reverse order. Starting from the left-most bit, the first + 31 bits identify the day of the month, counting from the + beginning of the month. The following 31 bits (bits 32-62) + indicate the day of the month, counting from the end of the + + + + month. For months with fewer than 31 days, the bits that + correspond to the non-existent days of that month are + ignored (e.g., for non-leap year Februarys, bits 29-31 and + 60-62 are ignored). + + This column evaluates to 'true' if the current day of the + month's bit is set. + + For example, a value of 0X'80 00 00 01 00 00 00 00' + indicates that this column evaluates to true on the first + and last days of the month. + + The last two bits in the string MUST be zero." + DEFVAL { 'fffffffffffffffe'H } + ::= { spdTimeFilterEntry 4 } + +spdTimeFiltDayOfWeekMask OBJECT-TYPE + SYNTAX BITS { sunday(0), monday(1), tuesday(2), + wednesday(3), thursday(4), friday(5), + saturday(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask that defines which days of the week that the current + time is valid for. This column evaluates to 'true' if the + current day of the week's bit is set." + DEFVAL { { monday, tuesday, wednesday, thursday, friday, + saturday, sunday } } + ::= { spdTimeFilterEntry 5 } + +spdTimeFiltTimeOfDayMask OBJECT-TYPE + SYNTAX SpdTimePeriod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the start and end time of the day for which this + filter evaluates to true. The date portions of the + spdTimePeriod TC are ignored for purposes of evaluating this + mask, and only the time-specific portions are used. + + This column evaluates to 'true' if the current time of day + is within the range of the start and end times of the day + indicated by this object." + DEFVAL { "00000000T000000/00000000T240000" } + ::= { spdTimeFilterEntry 6 } + +spdTimeFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdTimeFilterEntry 7 } + +spdTimeFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdTimeFilterEntry 8 } + +spdTimeFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this + row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active if it is + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdTimeFilterEntry 9 } + +-- +-- IPSO protection authority filtering +-- + + + + +spdIpsoHeaderFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdIpsoHeaderFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IPSO header filter + definitions to be used within the spdRuleDefinitionTable or + the spdSubfiltersTable. IPSO headers and their values are + described in RFC 1108." + REFERENCE "RFC 1108" + ::= { spdConfigObjects 10 } + +spdIpsoHeaderFilterEntry OBJECT-TYPE + SYNTAX SpdIpsoHeaderFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A definition of a particular filter." + INDEX { spdIpsoHeadFiltName } + ::= { spdIpsoHeaderFilterTable 1 } + +SpdIpsoHeaderFilterEntry ::= SEQUENCE { + spdIpsoHeadFiltName SnmpAdminString, + spdIpsoHeadFiltType BITS, + spdIpsoHeadFiltClassification INTEGER, + spdIpsoHeadFiltProtectionAuth INTEGER, + spdIpsoHeadFiltLastChanged TimeStamp, + spdIpsoHeadFiltStorageType StorageType, + spdIpsoHeadFiltRowStatus RowStatus +} + +spdIpsoHeadFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name for this filter." + ::= { spdIpsoHeaderFilterEntry 1 } + +spdIpsoHeadFiltType OBJECT-TYPE + SYNTAX BITS { classificationLevel(0), + protectionAuthority(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates which of the IPSO header field a + packet is filtered on for this row. If this object is set + to classification(0), the spdIpsoHeadFiltClassification + + + + object indicates how the packet is filtered. If this object + is set to protectionAuthority(1), the + spdIpsoHeadFiltProtectionAuth object indicates how the + packet is filtered." + ::= { spdIpsoHeaderFilterEntry 2 } + +spdIpsoHeadFiltClassification OBJECT-TYPE + SYNTAX INTEGER { topSecret(61), secret(90), + confidential(150), unclassified(171) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IPSO classification header field + value that the packet MUST have for this row to evaluate to + 'true'. + + The values of these enumerations are defined by RFC 1108." + REFERENCE "RFC 1108" + ::= { spdIpsoHeaderFilterEntry 3 } + +spdIpsoHeadFiltProtectionAuth OBJECT-TYPE + SYNTAX INTEGER { genser(0), siopesi(1), sci(2), + nsa(3), doe(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IPSO protection authority header + field value that the packet MUST have for this row to + evaluate to 'true'. + + The values of these enumerations are defined by RFC 1108. + Hence the reason the SMIv2 convention of not using 0 in + enumerated lists is violated here." + REFERENCE "RFC 1108" + ::= { spdIpsoHeaderFilterEntry 4 } + +spdIpsoHeadFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + + + + ::= { spdIpsoHeaderFilterEntry 5 } + +spdIpsoHeadFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdIpsoHeaderFilterEntry 6 } + +spdIpsoHeadFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + However, this object MUST NOT be set to active if the + requirements of the spdIpsoHeadFiltType object are not met. + Specifically, if the spdIpsoHeadFiltType bit for + classification(0) is set, the spdIpsoHeadFiltClassification + column MUST have a valid value for the row status to be set + to active. If the spdIpsoHeadFiltType bit for + protectionAuthority(1) is set, the + spdIpsoHeadFiltProtectionAuth column MUST have a valid + value for the row status to be set to active. + + If active, this object MUST remain active if it is + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdIpsoHeaderFilterEntry 7 } + +-- +-- compound actions table +-- + +spdCompoundActionTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF SpdCompoundActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table used to allow multiple actions to be associated + with a rule. It uses the spdSubactionsTable to do this. + The rows from spdSubactionsTable that are partially indexed + by spdCompActName form the set of compound actions to be + performed. The spdCompActExecutionStrategy column in this + table indicates how those actions are processed." + ::= { spdConfigObjects 11 } + +spdCompoundActionEntry OBJECT-TYPE + SYNTAX SpdCompoundActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the spdCompoundActionTable." + INDEX { spdCompActName } + ::= { spdCompoundActionTable 1 } + +SpdCompoundActionEntry ::= SEQUENCE { + spdCompActName SnmpAdminString, + spdCompActExecutionStrategy INTEGER, + spdCompActLastChanged TimeStamp, + spdCompActStorageType StorageType, + spdCompActRowStatus RowStatus +} + +spdCompActName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is an administratively assigned name of this + compound action." + ::= { spdCompoundActionEntry 1 } + +spdCompActExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { doAll(1), + doUntilSuccess(2), + doUntilFailure(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates how the sub-actions are executed + based on the success of the actions as they finish + executing. + + + + doAll - run each sub-action regardless of the + exit status of the previous action. + This parent action is always + considered to have acted successfully. + + doUntilSuccess - run each sub-action until one succeeds, + at which point stop processing the + sub-actions within this parent + compound action. If one of the + sub-actions did execute successfully, + this parent action is also considered + to have executed successfully. + + doUntilFailure - run each sub-action until one fails, + at which point stop processing the + sub-actions within this compound + action. If any sub-action fails, the + result of this parent action is + considered to have failed." + DEFVAL { doUntilSuccess } + ::= { spdCompoundActionEntry 2 } + +spdCompActLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdCompoundActionEntry 3 } + +spdCompActStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + + + + ::= { spdCompoundActionEntry 4 } + +spdCompActRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + Once a row in the spdCompoundActionTable has been made + active, this object MUST NOT be set to destroy without + first destroying all the contained rows listed in the + spdSubactionsTable." + ::= { spdCompoundActionEntry 5 } + + +-- +-- actions contained within a compound action +-- + +spdSubactionsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdSubactionsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of the sub-actions within a + given compound action. Compound actions executing these + actions MUST execute them in series based on the + spdSubActPriority value, with the lowest value executing + first." + ::= { spdConfigObjects 12 } + +spdSubactionsEntry OBJECT-TYPE + SYNTAX SpdSubactionsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row containing a reference to a given compound-action + sub-action." + INDEX { spdCompActName, spdSubActPriority } + ::= { spdSubactionsTable 1 } + +SpdSubactionsEntry ::= SEQUENCE { + spdSubActPriority Integer32, + spdSubActSubActionName VariablePointer, + + + + spdSubActLastChanged TimeStamp, + spdSubActStorageType StorageType, + spdSubActRowStatus RowStatus +} + +spdSubActPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority of a given sub-action within a compound + action. The order in which sub-actions MUST be executed + are based on the value from this column, with the lowest + numeric value executing first (i.e., priority 0 before + priority 1, 1 before 2, etc.)." + ::= { spdSubactionsEntry 1 } + +spdSubActSubActionName OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This column points to the action to be taken. It MAY, + but is not limited to, point to a row in one of the + following tables: + + spdCompoundActionTable - Allowing recursion + ipsaSaPreconfiguredActionTable + ipiaIkeActionTable + ipiaIpsecActionTable + + It MAY also point to one of the scalar objects beneath + spdStaticActions. + + If this object is set to a pointer to a row in an + unsupported (or unknown) table, an inconsistentValue + error MUST be returned. + + If this object is set to point to a non-existent row in + an otherwise supported table, an inconsistentName error + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + ::= { spdSubactionsEntry 2 } + +spdSubActLastChanged OBJECT-TYPE + + + + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdSubactionsEntry 3 } + +spdSubActStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdSubactionsEntry 4 } + +spdSubActRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active unless one of the + following two conditions are met. An attempt to set it to + anything other than active while the following conditions + are not met MUST result in an inconsistentValue error. The + two conditions are: + + I. No active row in the spdCompoundActionTable exists + which has a matching spdCompActName. + + II. Or, at least one other active row in this table has a + matching spdCompActName." + + + + ::= { spdSubactionsEntry 5 } + +-- +-- Static Actions +-- + +-- these are static actions that can be pointed to by the +-- spdRuleDefAction or the spdSubActSubActionName objects to +-- drop, accept, or reject packets. + +spdStaticActions OBJECT IDENTIFIER ::= { spdConfigObjects 13 } + +spdDropAction OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be dropped + and SHOULD NOT have action/packet logging." + ::= { spdStaticActions 1 } + +spdDropActionLog OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be dropped + and SHOULD have action/packet logging." + ::= { spdStaticActions 2 } + +spdAcceptAction OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This Scalar indicates that a packet MUST be accepted + (pass-through) and SHOULD NOT have action/packet logging." + ::= { spdStaticActions 3 } + +spdAcceptActionLog OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be accepted + (pass-through) and SHOULD have action/packet logging." + ::= { spdStaticActions 4 } + + + + +-- +-- +-- Notification objects information +-- +-- + +spdNotificationVariables OBJECT IDENTIFIER ::= + { spdNotificationObjects 1 } + +spdNotifications OBJECT IDENTIFIER ::= + { spdNotificationObjects 0 } + +spdActionExecuted OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Points to the action instance that was executed that + resulted in the notification being sent." + ::= { spdNotificationVariables 1 } + +spdIPEndpointAddType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the address type for the interface that the + notification triggering packet is passing through." + ::= { spdNotificationVariables 2 } + +spdIPEndpointAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the interface address for the interface that the + notification triggering packet is passing through. + + The format of this object is specified by the + spdIPEndpointAddType object." + ::= { spdNotificationVariables 3 } + +spdIPSourceType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the source address type of the packet that + + + + triggered the notification." + ::= { spdNotificationVariables 4 } + +spdIPSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the source address of the packet that + triggered the notification. + + The format of this object is specified by the + spdIPSourceType object." + ::= { spdNotificationVariables 5 } + +spdIPDestinationType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the destination address type of the packet + that triggered the notification." + ::= { spdNotificationVariables 6 } + +spdIPDestinationAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the destination address of the packet that + triggered the notification. + + The format of this object is specified by the + spdIPDestinationType object." + ::= { spdNotificationVariables 7 } + +spdPacketDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates if the packet that triggered the action in + questions was ingress (inbound) or egress (outbound)." + ::= { spdNotificationVariables 8 } + +spdPacketPart OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..65535)) + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "spdPacketPart is the front part of the full IP packet that + triggered this notification. The initial size limit is + determined by the smaller of the size, indicated by: + + I. The value of the object with the TC syntax + 'SpdIPPacketLogging' that indicated the packet SHOULD be + logged and + + II. The size of the triggering packet. + + The final limit is determined by the SNMP packet size when + sending the notification. The maximum size that can be + included will be the smaller of the initial size, given the + above, and the length that will fit in a single SNMP + notification packet after the rest of the notification's + objects and any other necessary packet data (headers encoding, + etc.) have been included in the packet." + ::= { spdNotificationVariables 9 } + +spdActionNotification NOTIFICATION-TYPE + OBJECTS { spdActionExecuted, spdIPEndpointAddType, + spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, + spdIPDestinationAddress, + spdPacketDirection } + STATUS current + DESCRIPTION + "Notification that an action was executed by a rule. + Only actions with logging enabled will result in this + notification getting sent. The object includes the + spdActionExecuted object, which will indicate which action + was executed within the scope of the rule. Additionally, + the spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, and spdIPDestinationAddress objects + are included to indicate the packet source and destination + of the packet that triggered the action. Finally, the + spdIPEndpointAddType, spdIPEndpointAddress, and + spdPacketDirection objects indicate which interface the + executed action was associated with, and if the packet was + ingress or egress through the endpoint. + + A spdActionNotification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate. + + + + Note that compound actions with multiple executed + sub-actions may result in multiple notifications being sent + from a single rule execution." + ::= { spdNotifications 1 } + +spdPacketNotification NOTIFICATION-TYPE + OBJECTS { spdActionExecuted, spdIPEndpointAddType, + spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, + spdIPDestinationAddress, + spdPacketDirection, + spdPacketPart } + STATUS current + DESCRIPTION + "Notification that a packet passed through a Security + Association (SA). Only SAs created by actions with packet + logging enabled will result in this notification getting + sent. The objects sent MUST include the spdActionExecuted, + which will indicate which action was executed within the + scope of the rule. Additionally, the spdIPSourceType, + spdIPSourceAddress, spdIPDestinationType, and + spdIPDestinationAddress objects MUST be included to + indicate the packet source and destination of the packet + that triggered the action. The spdIPEndpointAddType, + spdIPEndpointAddress, and spdPacketDirection objects are + included to indicate which endpoint the packet was + associated with. Finally, spdPacketPart is included to + enable sending a variable sized part of the front of the + packet with the size dependent on the value of the object of + TC syntax 'SpdIPPacketLogging', which indicated that logging + should be done. + + A spdPacketNotification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate. + + An action notification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate." + ::= { spdNotifications 2 } + + +-- +-- +-- Conformance information + + + +-- +-- + +spdCompliances OBJECT IDENTIFIER + ::= { spdConformanceObjects 1 } +spdGroups OBJECT IDENTIFIER + ::= { spdConformanceObjects 2 } + +-- +-- Compliance statements +-- +-- +spdRuleFilterFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that include + an IPsec MIB implementation with Endpoint, Rules, and + filters support. + + When this MIB is implemented with support for read-create, + then such an implementation can claim full compliance. Such + devices can then be both monitored and configured with this + MIB." + + MODULE -- This Module + MANDATORY-GROUPS { spdEndpointGroup, + spdGroupContentsGroup, + spdRuleDefinitionGroup, + spdStaticFilterGroup, + spdStaticActionGroup , + diffServMIBMultiFieldClfrGroup } + + GROUP spdIpsecSystemPolicyNameGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support a system policy group + name." + + GROUP spdCompoundFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound filters." + + GROUP spdIPOffsetFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IP Offset filters. In + general, this SHOULD be supported by a compliant IPsec + + + + Policy implementation." + + GROUP spdTimeFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support time filters." + + GROUP spdIpsoHeaderFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IPSO Header filters." + + GROUP spdCompoundActionGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound actions." + + OBJECT spdEndGroupLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdGroupContComponentType + SYNTAX INTEGER { + rule(2) + } + DESCRIPTION + "Support of the value group(1) is only required for + implementations that support Policy Groups within + Policy Groups." + + OBJECT spdGroupContLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdRuleDefLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdCompFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdSubFiltLastChanged + MIN-ACCESS not-accessible + + + + DESCRIPTION + "This object not required for compliance." + + OBJECT spdIpOffFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdTimeFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdIpsoHeadFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdCompActLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdSubActLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT diffServMultiFieldClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "This object is not required for compliance." + + ::= { spdCompliances 1 } + + +spdLoggingCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that support + sending notifications when actions are invoked." + MODULE -- This Module + MANDATORY-GROUPS { spdActionLoggingObjectGroup, + spdActionNotificationGroup } + + ::= { spdCompliances 2 } + +-- + + + +-- ReadOnly Compliances +-- +spdRuleFilterReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that include + an IPsec MIB implementation with Endpoint, Rules, and + filters support. + + If this MIB is implemented without support for read-create + (i.e., in read-only), it is not in full compliance, but it + can claim read-only compliance. Such a device can then be + monitored, but cannot be configured with this MIB." + + MODULE -- This Module + MANDATORY-GROUPS { spdEndpointGroup, + spdGroupContentsGroup, + spdRuleDefinitionGroup, + spdStaticFilterGroup, + spdStaticActionGroup , + diffServMIBMultiFieldClfrGroup } + + GROUP spdIpsecSystemPolicyNameGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support a system policy group + name." + + GROUP spdCompoundFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound filters." + + GROUP spdIPOffsetFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IP Offset filters. In + general, this SHOULD be supported by a compliant IPsec + Policy implementation." + + GROUP spdTimeFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support time filters." + + GROUP spdIpsoHeaderFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + + + + implementations that support IPSO Header filters." + + GROUP spdCompoundActionGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound actions." + + OBJECT spdCompActExecutionStrategy + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompActLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdCompActRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompActStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdCompFiltLogicType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT spdEgressPolicyGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdEndGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContComponentName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContComponentType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContFilter + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdGroupContRowStatus + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT spdGroupContStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIngressPolicyGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdIpOffFiltOffset + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltValue + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltClassification + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltLastChanged + DESCRIPTION + + + + "This object is not required for compliance." + + OBJECT spdIpsoHeadFiltProtectionAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefAction + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefFilter + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefFilterNegated + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefLastChanged + + + + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdRuleDefRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdSubActRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActSubActionName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdSubFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltSubfilter + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltSubfilterIsNegated + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltDayOfMonthMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltDayOfWeekMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdTimeFiltMonthOfYearMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltPeriod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltTimeOfDayMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { spdCompliances 3 } + + + +-- +-- +-- Compliance Groups Definitions +-- + +-- +-- Endpoint, Rule, Filter Compliance Groups +-- + +spdEndpointGroup OBJECT-GROUP + OBJECTS { + spdEndGroupName, spdEndGroupLastChanged, + spdEndGroupStorageType, spdEndGroupRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Endpoint Table." + ::= { spdGroups 1 } + +spdGroupContentsGroup OBJECT-GROUP + OBJECTS { + spdGroupContComponentType, spdGroupContFilter, + spdGroupContComponentName, spdGroupContLastChanged, + spdGroupContStorageType, spdGroupContRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Group Contents Table." + ::= { spdGroups 2 } + +spdIpsecSystemPolicyNameGroup OBJECT-GROUP + OBJECTS { + spdIngressPolicyGroupName, + spdEgressPolicyGroupName + } + STATUS current + DESCRIPTION + "This group is made up of objects represent the System + Policy Group Names." + ::= { spdGroups 3} + +spdRuleDefinitionGroup OBJECT-GROUP + OBJECTS { + spdRuleDefDescription, spdRuleDefFilter, + spdRuleDefFilterNegated, spdRuleDefAction, + spdRuleDefAdminStatus, spdRuleDefLastChanged, + + + + spdRuleDefStorageType, spdRuleDefRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy Rule + Definition Table." + ::= { spdGroups 4 } + +spdCompoundFilterGroup OBJECT-GROUP + OBJECTS { + spdCompFiltDescription, spdCompFiltLogicType, + spdCompFiltLastChanged, spdCompFiltStorageType, + spdCompFiltRowStatus, spdSubFiltSubfilter, + spdSubFiltSubfilterIsNegated, spdSubFiltLastChanged, + spdSubFiltStorageType, spdSubFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Compound Filter Table and Sub-Filter Table Group." + ::= { spdGroups 5 } + +spdStaticFilterGroup OBJECT-GROUP + OBJECTS { spdTrueFilter } + STATUS current + DESCRIPTION + "The static filter group. Currently this is just a true + filter." + ::= { spdGroups 6 } + +spdIPOffsetFilterGroup OBJECT-GROUP + OBJECTS { + spdIpOffFiltOffset, spdIpOffFiltType, + spdIpOffFiltValue, spdIpOffFiltLastChanged, + spdIpOffFiltStorageType, spdIpOffFiltRowStatus + } + + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy IP + Offset Filter Table." + ::= { spdGroups 7 } + +spdTimeFilterGroup OBJECT-GROUP + OBJECTS { + spdTimeFiltPeriod, + spdTimeFiltMonthOfYearMask, spdTimeFiltDayOfMonthMask, + spdTimeFiltDayOfWeekMask, spdTimeFiltTimeOfDayMask, + + + + spdTimeFiltLastChanged, + spdTimeFiltStorageType, spdTimeFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy Time + Filter Table." + ::= { spdGroups 8 } + +spdIpsoHeaderFilterGroup OBJECT-GROUP + OBJECTS { + spdIpsoHeadFiltType, spdIpsoHeadFiltClassification, + spdIpsoHeadFiltProtectionAuth, spdIpsoHeadFiltLastChanged, + spdIpsoHeadFiltStorageType, spdIpsoHeadFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy IPSO + Header Filter Table." + ::= { spdGroups 9 } + +-- +-- action compliance groups +-- + +spdStaticActionGroup OBJECT-GROUP + OBJECTS { + spdDropAction, spdAcceptAction, + spdDropActionLog, spdAcceptActionLog + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Static Actions." + ::= { spdGroups 10 } + +spdCompoundActionGroup OBJECT-GROUP + OBJECTS { + spdCompActExecutionStrategy, spdCompActLastChanged, + spdCompActStorageType, + + spdCompActRowStatus, spdSubActSubActionName, + spdSubActLastChanged, spdSubActStorageType, + spdSubActRowStatus + } + STATUS current + DESCRIPTION + "The IPsec Policy Compound Action Table and Actions In + + + + Compound Action Table Group." + ::= { spdGroups 11 } + +spdActionLoggingObjectGroup OBJECT-GROUP + OBJECTS { + spdActionExecuted, + spdIPEndpointAddType, spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, spdIPDestinationAddress, + spdPacketDirection, spdPacketPart + } + STATUS current + DESCRIPTION + "This group is made up of all the Notification objects for + this MIB." + ::= { spdGroups 12 } + +spdActionNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + spdActionNotification, + spdPacketNotification + } + STATUS current + DESCRIPTION + "This group is made up of all the Notifications for this MIB." + ::= { spdGroups 13 } + + +END diff --git a/mibs/ietf/IPV6-FLOW-LABEL-MIB b/mibs/ietf/IPV6-FLOW-LABEL-MIB new file mode 100644 index 0000000..f30f4ca --- /dev/null +++ b/mibs/ietf/IPV6-FLOW-LABEL-MIB @@ -0,0 +1,63 @@ +IPV6-FLOW-LABEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + MODULE-IDENTITY, mib-2, Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ipv6FlowLabelMIB MODULE-IDENTITY + + LAST-UPDATED "200308280000Z" -- 28 August 2003 + ORGANIZATION "IETF Operations and Management Area" + CONTACT-INFO "Bert Wijnen (Editor) + Lucent Technologies + Schagen 33 + 3461 GL Linschoten + Netherlands + + + + + + Phone: +31 348-407-775 + EMail: bwijnen@lucent.com + + Send comments to . + " + DESCRIPTION "This MIB module provides commonly used textual + conventions for IPv6 Flow Labels. + + Copyright (C) The Internet Society (2003). This + version of this MIB module is part of RFC 3595, + see the RFC itself for full legal notices. + " + -- Revision History + + REVISION "200308280000Z" -- 28 August 2003 + DESCRIPTION "Initial version, published as RFC 3595." + + ::= { mib-2 103 } + +IPv6FlowLabel ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The flow identifier or Flow Label in an IPv6 + packet header that may be used to discriminate + traffic flows. + " + REFERENCE "Internet Protocol, Version 6 (IPv6) specification, + section 6. RFC 2460. + " + SYNTAX Integer32 (0..1048575) + +IPv6FlowLabelOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The flow identifier or Flow Label in an IPv6 + packet header that may be used to discriminate + traffic flows. The value of -1 is used to + indicate a wildcard, i.e. any value. + " + SYNTAX Integer32 (-1 | 0..1048575) + +END diff --git a/mibs/ietf/IPV6-ICMP-MIB b/mibs/ietf/IPV6-ICMP-MIB new file mode 100644 index 0000000..640ef86 --- /dev/null +++ b/mibs/ietf/IPV6-ICMP-MIB @@ -0,0 +1,529 @@ + IPV6-ICMP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ipv6IfEntry FROM IPV6-MIB; + + ipv6IcmpMIB MODULE-IDENTITY + LAST-UPDATED "9801082155Z" + ORGANIZATION "IETF IPv6 Working Group" + CONTACT-INFO + " Dimitry Haskin + + Postal: Bay Networks, Inc. + 660 Techology Park Drive. + Billerica, MA 01821 + US + + Tel: +1-978-916-8124 + E-mail: dhaskin@baynetworks.com + + Steve Onishi + + Postal: Bay Networks, Inc. + 3 Federal Street + Billerica, MA 01821 + US + + Tel: +1-978-916-3816 + E-mail: sonishi@baynetworks.com" + DESCRIPTION + "The MIB module for entities implementing + the ICMPv6." + ::= { mib-2 56 } + + -- the ICMPv6 group + + ipv6IcmpMIBObjects OBJECT IDENTIFIER ::= { ipv6IcmpMIB 1 } + + + -- Per-interface ICMPv6 statistics table + + ipv6IfIcmpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfIcmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 ICMP statistics. This table contains statistics + of ICMPv6 messages that are received and sourced by + the entity." + ::= { ipv6IcmpMIBObjects 1 } + + ipv6IfIcmpEntry OBJECT-TYPE + SYNTAX Ipv6IfIcmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ICMPv6 statistics entry containing + objects at a particular IPv6 interface. + + Note that a receiving interface is + the interface to which a given ICMPv6 message + is addressed which may not be necessarily + the input interface for the message. + + Similarly, the sending interface is + the interface that sources a given + ICMP message which is usually but not + necessarily the output interface for the message." + AUGMENTS { ipv6IfEntry } + ::= { ipv6IfIcmpTable 1 } + + Ipv6IfIcmpEntry ::= SEQUENCE { + ipv6IfIcmpInMsgs + Counter32 , + ipv6IfIcmpInErrors + Counter32 , + ipv6IfIcmpInDestUnreachs + Counter32 , + ipv6IfIcmpInAdminProhibs + Counter32 , + ipv6IfIcmpInTimeExcds + Counter32 , + ipv6IfIcmpInParmProblems + Counter32 , + ipv6IfIcmpInPktTooBigs + Counter32 , + ipv6IfIcmpInEchos + Counter32 , + ipv6IfIcmpInEchoReplies + Counter32 , + ipv6IfIcmpInRouterSolicits + Counter32 , + ipv6IfIcmpInRouterAdvertisements + Counter32 , + ipv6IfIcmpInNeighborSolicits + Counter32 , + ipv6IfIcmpInNeighborAdvertisements + Counter32 , + ipv6IfIcmpInRedirects + Counter32 , + ipv6IfIcmpInGroupMembQueries + Counter32 , + ipv6IfIcmpInGroupMembResponses + Counter32 , + ipv6IfIcmpInGroupMembReductions + Counter32 , + ipv6IfIcmpOutMsgs + Counter32 , + ipv6IfIcmpOutErrors + Counter32 , + ipv6IfIcmpOutDestUnreachs + Counter32 , + ipv6IfIcmpOutAdminProhibs + Counter32 , + ipv6IfIcmpOutTimeExcds + Counter32 , + ipv6IfIcmpOutParmProblems + Counter32 , + ipv6IfIcmpOutPktTooBigs + Counter32 , + ipv6IfIcmpOutEchos + Counter32 , + ipv6IfIcmpOutEchoReplies + Counter32 , + ipv6IfIcmpOutRouterSolicits + Counter32 , + ipv6IfIcmpOutRouterAdvertisements + Counter32 , + ipv6IfIcmpOutNeighborSolicits + Counter32 , + ipv6IfIcmpOutNeighborAdvertisements + Counter32 , + ipv6IfIcmpOutRedirects + Counter32 , + ipv6IfIcmpOutGroupMembQueries + Counter32 , + ipv6IfIcmpOutGroupMembResponses + Counter32 , + ipv6IfIcmpOutGroupMembReductions + Counter32 + } + + ipv6IfIcmpInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages received + by the interface which includes all those + counted by ipv6IfIcmpInErrors. Note that this + interface is the interface to which the + ICMP messages were addressed which may not be + necessarily the input interface for the messages." + ::= { ipv6IfIcmpEntry 1 } + + ipv6IfIcmpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages which the interface + received but determined as having ICMP-specific + errors (bad ICMP checksums, bad length, etc.)." + ::= { ipv6IfIcmpEntry 2 } + + ipv6IfIcmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Destination Unreachable + messages received by the interface." + ::= { ipv6IfIcmpEntry 3 } + + ipv6IfIcmpInAdminProhibs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP destination + unreachable/communication administratively + prohibited messages received by the interface." + ::= { ipv6IfIcmpEntry 4 } + + ipv6IfIcmpInTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Time Exceeded messages + received by the interface." + ::= { ipv6IfIcmpEntry 5 } + + ipv6IfIcmpInParmProblems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Parameter Problem messages + received by the interface." + ::= { ipv6IfIcmpEntry 6 } + + ipv6IfIcmpInPktTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Packet Too Big messages + received by the interface." + ::= { ipv6IfIcmpEntry 7 } + + ipv6IfIcmpInEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo (request) messages + received by the interface." + ::= { ipv6IfIcmpEntry 8 } + + ipv6IfIcmpInEchoReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo Reply messages received + by the interface." + ::= { ipv6IfIcmpEntry 9 } + + ipv6IfIcmpInRouterSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Solicit messages + received by the interface." + ::= { ipv6IfIcmpEntry 10 } + + ipv6IfIcmpInRouterAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Advertisement messages + received by the interface." + ::= { ipv6IfIcmpEntry 11 } + + ipv6IfIcmpInNeighborSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Solicit messages + received by the interface." + ::= { ipv6IfIcmpEntry 12 } + + ipv6IfIcmpInNeighborAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Advertisement + messages received by the interface." + ::= { ipv6IfIcmpEntry 13 } + + ipv6IfIcmpInRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Redirect messages received + by the interface." + ::= { ipv6IfIcmpEntry 14 } + + ipv6IfIcmpInGroupMembQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Query + messages received by the interface." + ::= { ipv6IfIcmpEntry 15} + + ipv6IfIcmpInGroupMembResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Response messages + received by the interface." + ::= { ipv6IfIcmpEntry 16} + + ipv6IfIcmpInGroupMembReductions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Reduction messages + received by the interface." + ::= { ipv6IfIcmpEntry 17} + + ipv6IfIcmpOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages which this + interface attempted to send. Note that this counter + includes all those counted by icmpOutErrors." + ::= { ipv6IfIcmpEntry 18 } + + ipv6IfIcmpOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages which this interface 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 IPv6 to route the resultant + datagram. In some implementations there may be no + types of error which contribute to this counter's + value." + ::= { ipv6IfIcmpEntry 19 } + + ipv6IfIcmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Destination Unreachable + messages sent by the interface." + ::= { ipv6IfIcmpEntry 20 } + + ipv6IfIcmpOutAdminProhibs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of ICMP dest unreachable/communication + administratively prohibited messages sent." + ::= { ipv6IfIcmpEntry 21 } + + ipv6IfIcmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Time Exceeded messages sent + by the interface." + ::= { ipv6IfIcmpEntry 22 } + + ipv6IfIcmpOutParmProblems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Parameter Problem messages + sent by the interface." + ::= { ipv6IfIcmpEntry 23 } + + ipv6IfIcmpOutPktTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Packet Too Big messages sent + by the interface." + ::= { ipv6IfIcmpEntry 24 } + + ipv6IfIcmpOutEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo (request) messages sent + by the interface." + ::= { ipv6IfIcmpEntry 25 } + + ipv6IfIcmpOutEchoReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo Reply messages sent + by the interface." + ::= { ipv6IfIcmpEntry 26 } + + ipv6IfIcmpOutRouterSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Solicitation messages + sent by the interface." + ::= { ipv6IfIcmpEntry 27 } + + ipv6IfIcmpOutRouterAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Advertisement messages + sent by the interface." + ::= { ipv6IfIcmpEntry 28 } + + ipv6IfIcmpOutNeighborSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Solicitation + messages sent by the interface." + ::= { ipv6IfIcmpEntry 29 } + + ipv6IfIcmpOutNeighborAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Advertisement + messages sent by the interface." + ::= { ipv6IfIcmpEntry 30 } + + ipv6IfIcmpOutRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Redirect messages sent. For + a host, this object will always be zero, + since hosts do not send redirects." + ::= { ipv6IfIcmpEntry 31 } + + ipv6IfIcmpOutGroupMembQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Query + messages sent." + ::= { ipv6IfIcmpEntry 32} + + ipv6IfIcmpOutGroupMembResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Response + messages sent." + ::= { ipv6IfIcmpEntry 33} + + ipv6IfIcmpOutGroupMembReductions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Reduction + messages sent." + ::= { ipv6IfIcmpEntry 34} + + +-- conformance information + +ipv6IcmpConformance OBJECT IDENTIFIER ::= { ipv6IcmpMIB 2 } + +ipv6IcmpCompliances + OBJECT IDENTIFIER ::= { ipv6IcmpConformance 1 } +ipv6IcmpGroups + OBJECT IDENTIFIER ::= { ipv6IcmpConformance 2 } + +-- compliance statements + +ipv6IcmpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement ICMPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6IcmpGroup } + ::= { ipv6IcmpCompliances 1 } + +ipv6IcmpGroup OBJECT-GROUP + OBJECTS { + ipv6IfIcmpInMsgs, + ipv6IfIcmpInErrors, + ipv6IfIcmpInDestUnreachs, + ipv6IfIcmpInAdminProhibs, + ipv6IfIcmpInTimeExcds, + ipv6IfIcmpInParmProblems, + ipv6IfIcmpInPktTooBigs, + ipv6IfIcmpInEchos, + ipv6IfIcmpInEchoReplies, + ipv6IfIcmpInRouterSolicits, + ipv6IfIcmpInRouterAdvertisements, + ipv6IfIcmpInNeighborSolicits, + ipv6IfIcmpInNeighborAdvertisements, + ipv6IfIcmpInRedirects, + ipv6IfIcmpInGroupMembQueries, + ipv6IfIcmpInGroupMembResponses, + ipv6IfIcmpInGroupMembReductions, + ipv6IfIcmpOutMsgs, + ipv6IfIcmpOutErrors, + ipv6IfIcmpOutDestUnreachs, + ipv6IfIcmpOutAdminProhibs, + ipv6IfIcmpOutTimeExcds, + ipv6IfIcmpOutParmProblems, + ipv6IfIcmpOutPktTooBigs, + ipv6IfIcmpOutEchos, + ipv6IfIcmpOutEchoReplies, + ipv6IfIcmpOutRouterSolicits, + ipv6IfIcmpOutRouterAdvertisements, + ipv6IfIcmpOutNeighborSolicits, + ipv6IfIcmpOutNeighborAdvertisements, + ipv6IfIcmpOutRedirects, + ipv6IfIcmpOutGroupMembQueries, + ipv6IfIcmpOutGroupMembResponses, + ipv6IfIcmpOutGroupMembReductions + } + STATUS current + DESCRIPTION + "The ICMPv6 group of objects providing information + specific to ICMPv6." + ::= { ipv6IcmpGroups 1 } + + END diff --git a/mibs/ietf/IPV6-MIB b/mibs/ietf/IPV6-MIB new file mode 100644 index 0000000..922dcaf --- /dev/null +++ b/mibs/ietf/IPV6-MIB @@ -0,0 +1,1450 @@ + IPV6-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + mib-2, Counter32, Unsigned32, Integer32, + Gauge32 FROM SNMPv2-SMI + DisplayString, PhysAddress, TruthValue, TimeStamp, + VariablePointer, RowPointer FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + Ipv6IfIndex, Ipv6Address, Ipv6AddressPrefix, + Ipv6AddressIfIdentifier, + Ipv6IfIndexOrZero FROM IPV6-TC; + + ipv6MIB MODULE-IDENTITY + LAST-UPDATED "9802052155Z" + ORGANIZATION "IETF IPv6 Working Group" + CONTACT-INFO + " Dimitry Haskin + + Postal: Bay Networks, Inc. + 660 Techology Park Drive. + Billerica, MA 01821 + US + + Tel: +1-978-916-8124 + E-mail: dhaskin@baynetworks.com + + Steve Onishi + + Postal: Bay Networks, Inc. + 3 Federal Street + Billerica, MA 01821 + US + + Tel: +1-978-916-3816 + E-mail: sonishi@baynetworks.com" + DESCRIPTION + "The MIB module for entities implementing the IPv6 + protocol." + ::= { mib-2 55 } + + + -- the IPv6 general group + + ipv6MIBObjects OBJECT IDENTIFIER ::= { ipv6MIB 1 } + + + ipv6Forwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + + -- NOT acting as + notForwarding(2) -- a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting + as an IPv6 router in respect to the forwarding of + datagrams received by, but not addressed to, this + entity. IPv6 routers forward datagrams. IPv6 + 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 `wrongValue' response if a management + station attempts to change this object to an + inappropriate value." + ::= { ipv6MIBObjects 1 } + + ipv6DefaultHopLimit OBJECT-TYPE + SYNTAX INTEGER(0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value inserted into the Hop Limit + field of the IPv6 header of datagrams originated + at this entity, whenever a Hop Limit value is not + supplied by the transport layer protocol." + DEFVAL { 64 } + ::= { ipv6MIBObjects 2 } + +ipv6Interfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 interfaces (regardless of + their current state) present on this system." + ::= { ipv6MIBObjects 3 } + +ipv6IfTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + insertion or removal of an entry in the + ipv6IfTable. 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." + ::= { ipv6MIBObjects 4 } + + +-- the IPv6 Interfaces table + +ipv6IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Interfaces table contains information + on the entity's internetwork-layer interfaces. + An IPv6 interface constitutes a logical network + layer attachment to the layer immediately below + IPv6 including internet layer 'tunnels', such as + tunnels over IPv4 or IPv6 itself." + ::= { ipv6MIBObjects 5 } + + ipv6IfEntry OBJECT-TYPE + SYNTAX Ipv6IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface entry containing objects + about a particular IPv6 interface." + INDEX { ipv6IfIndex } + ::= { ipv6IfTable 1 } + + Ipv6IfEntry ::= SEQUENCE { + ipv6IfIndex Ipv6IfIndex, + ipv6IfDescr DisplayString, + ipv6IfLowerLayer VariablePointer, + ipv6IfEffectiveMtu Unsigned32, + ipv6IfReasmMaxSize Unsigned32, + ipv6IfIdentifier Ipv6AddressIfIdentifier, + ipv6IfIdentifierLength INTEGER, + ipv6IfPhysicalAddress PhysAddress, + ipv6IfAdminStatus INTEGER, + ipv6IfOperStatus INTEGER, + ipv6IfLastChange TimeStamp + } + + ipv6IfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique non-zero value identifying + the particular IPv6 interface." + ::= { ipv6IfEntry 1 } + + ipv6IfDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual string containing information about the + interface. This string may be set by the network + management system." + ::= { ipv6IfEntry 2 } + + ipv6IfLowerLayer OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the protocol layer over + which this network interface operates. If this + network interface operates over the data-link + layer, then the value of this object refers to an + instance of ifIndex [6]. If this network interface + operates over an IPv4 interface, the value of this + object refers to an instance of ipAdEntAddr [3]. + + If this network interface operates over another + IPv6 interface, the value of this object refers to + an instance of ipv6IfIndex. If this network + interface is not currently operating over an active + protocol layer, then the value of this object + should be set to the OBJECT ID { 0 0 }." + ::= { ipv6IfEntry 3 } + + ipv6IfEffectiveMtu OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 packet which can be + sent/received on the interface, specified in + octets." + ::= { ipv6IfEntry 4 } + + ipv6IfReasmMaxSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 datagram which this + entity can re-assemble from incoming IPv6 fragmented + datagrams received on this interface." + ::= { ipv6IfEntry 5 } + + ipv6IfIdentifier OBJECT-TYPE + SYNTAX Ipv6AddressIfIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Interface Identifier for this interface that + is (at least) unique on the link this interface is + attached to. The Interface Identifier is combined + with an address prefix to form an interface address. + + By default, the Interface Identifier is autoconfigured + according to the rules of the link type this + interface is attached to." + ::= { ipv6IfEntry 6 } + + ipv6IfIdentifierLength OBJECT-TYPE + SYNTAX INTEGER (0..64) + UNITS "bits" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the Interface Identifier in bits." + ::= { ipv6IfEntry 7 } + + ipv6IfPhysicalAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's physical address. For example, for + an IPv6 interface attached to an 802.x link, this + object normally contains a MAC address. Note that + in some cases this address may differ from the + address of the interface's protocol sub-layer. 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." + ::= { ipv6IfEntry 8 } + +ipv6IfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. When a managed + system initializes, all IPv6 interfaces start with + ipv6IfAdminStatus in the down(2) state. As a result + of either explicit management action or per + configuration information retained by the managed + system, ipv6IfAdminStatus is then changed to + the up(1) state (or remains in the down(2) state)." + ::= { ipv6IfEntry 9 } + +ipv6IfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + + down(2), + + noIfIdentifier(3), -- no interface identifier + + -- status can not be + -- determined for some + unknown(4), -- reason + + -- some component is + notPresent(5) -- missing + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. + The noIfIdentifier(3) state indicates that no valid + Interface Identifier is assigned to the interface. + This state usually indicates that the link-local + interface address failed Duplicate Address Detection. + If ipv6IfAdminStatus is down(2) then ipv6IfOperStatus + should be down(2). If ipv6IfAdminStatus is changed + to up(1) then ipv6IfOperStatus should change to up(1) + if the interface is ready to transmit and receive + network traffic; it should remain in the down(2) or + noIfIdentifier(3) 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(5) state if + the interface has missing (typically, lower layer) + components." + ::= { ipv6IfEntry 10 } + +ipv6IfLastChange OBJECT-TYPE + SYNTAX TimeStamp + 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." + ::= { ipv6IfEntry 11 } + + -- IPv6 Interface Statistics table + + ipv6IfStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 interface traffic statistics." + ::= { ipv6MIBObjects 6 } + + ipv6IfStatsEntry OBJECT-TYPE + SYNTAX Ipv6IfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface statistics entry containing objects + at a particular IPv6 interface." + AUGMENTS { ipv6IfEntry } + ::= { ipv6IfStatsTable 1 } + + Ipv6IfStatsEntry ::= SEQUENCE { + ipv6IfStatsInReceives + Counter32, + ipv6IfStatsInHdrErrors + Counter32, + ipv6IfStatsInTooBigErrors + Counter32, + ipv6IfStatsInNoRoutes + Counter32, + ipv6IfStatsInAddrErrors + Counter32, + ipv6IfStatsInUnknownProtos + Counter32, + ipv6IfStatsInTruncatedPkts + Counter32, + ipv6IfStatsInDiscards + Counter32, + ipv6IfStatsInDelivers + Counter32, + ipv6IfStatsOutForwDatagrams + Counter32, + ipv6IfStatsOutRequests + Counter32, + ipv6IfStatsOutDiscards + Counter32, + ipv6IfStatsOutFragOKs + Counter32, + ipv6IfStatsOutFragFails + Counter32, + ipv6IfStatsOutFragCreates + Counter32, + ipv6IfStatsReasmReqds + Counter32, + ipv6IfStatsReasmOKs + Counter32, + ipv6IfStatsReasmFails + Counter32, + ipv6IfStatsInMcastPkts + Counter32, + ipv6IfStatsOutMcastPkts + Counter32 + } + + ipv6IfStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input datagrams received by + the interface, including those received in error." + ::= { ipv6IfStatsEntry 1 } + + ipv6IfStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded due to + errors in their IPv6 headers, including version + number mismatch, other format errors, hop count + exceeded, errors discovered in processing their + IPv6 options, etc." + ::= { ipv6IfStatsEntry 2 } + + ipv6IfStatsInTooBigErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams that could not be + forwarded because their size exceeded the link MTU + of outgoing interface." + ::= { ipv6IfStatsEntry 3 } + + ipv6IfStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because no + route could be found to transmit them to their + destination." + ::= { ipv6IfStatsEntry 4 } + + ipv6IfStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because + the IPv6 address in their IPv6 header's destination + field was not a valid address to be received at + this entity. This count includes invalid + addresses (e.g., ::0) and unsupported addresses + (e.g., addresses with unallocated prefixes). For + entities which are not IPv6 routers and therefore + do not forward datagrams, this counter includes + datagrams discarded because the destination address + was not a local address." + ::= { ipv6IfStatsEntry 5 } + + ipv6IfStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed datagrams + received successfully but discarded because of an + unknown or unsupported protocol. This counter is + incremented at the interface to which these + datagrams were addressed which might not be + necessarily the input interface for some of + the datagrams." + ::= { ipv6IfStatsEntry 6 } + + + ipv6IfStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because + datagram frame didn't carry enough data." + ::= { ipv6IfStatsEntry 7 } + + ipv6IfStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IPv6 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." + ::= { ipv6IfStatsEntry 8 } + + ipv6IfStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully + delivered to IPv6 user-protocols (including ICMP). + This counter is incremented at the interface to + which these datagrams were addressed which might + not be necessarily the input interface for some of + the datagrams." + ::= { ipv6IfStatsEntry 9 } + + ipv6IfStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagrams which this + entity received and forwarded to their final + destinations. In entities which do not act + as IPv6 routers, this counter will include + only those packets which were Source-Routed + via this entity, and the Source-Route + processing was successful. Note that for + a successfully forwarded datagram the counter + of the outgoing interface is incremented." + ::= { ipv6IfStatsEntry 10 } + + ipv6IfStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IPv6 datagrams which local IPv6 + user-protocols (including ICMP) supplied to IPv6 in + requests for transmission. Note that this counter + does not include any datagrams counted in + ipv6IfStatsOutForwDatagrams." + ::= { ipv6IfStatsEntry 11 } + + ipv6IfStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IPv6 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 ipv6IfStatsOutForwDatagrams if any such packets + met this (discretionary) discard criterion." + ::= { ipv6IfStatsEntry 12 } + + ipv6IfStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams that have been + successfully fragmented at this output interface." + ::= { ipv6IfStatsEntry 13 } + + ipv6IfStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams that have been + discarded because they needed to be fragmented + at this output interface but could not be." + ::= { ipv6IfStatsEntry 14 } + + ipv6IfStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have + been generated as a result of fragmentation at + this output interface." + ::= { ipv6IfStatsEntry 15 } + + ipv6IfStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 fragments received which needed + to be reassembled at this interface. Note that this + counter is incremented at the interface to which + these fragments were addressed which might not + be necessarily the input interface for some of + the fragments." + ::= { ipv6IfStatsEntry 16 } + + ipv6IfStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams successfully + reassembled. Note that this counter is incremented + at the interface to which these datagrams were + addressed which might not be necessarily the input + interface for some of the fragments." + ::= { ipv6IfStatsEntry 17 } + + ipv6IfStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failures detected by the IPv6 re- + assembly algorithm (for whatever reason: timed + out, errors, etc.). Note that this is not + necessarily a count of discarded IPv6 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. + This counter is incremented at the interface to which + these fragments were addressed which might not be + necessarily the input interface for some of the + fragments." + ::= { ipv6IfStatsEntry 18 } + + ipv6IfStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets received + by the interface" + ::= { ipv6IfStatsEntry 19 } + + ipv6IfStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets transmitted + by the interface" + ::= { ipv6IfStatsEntry 20 } + + + + -- Address Prefix table + + -- The IPv6 Address Prefix table contains information on + -- the entity's IPv6 Address Prefixes that are associated + -- with IPv6 interfaces. + + ipv6AddrPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6AddrPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of IPv6 address prefixes of + IPv6 interfaces." + ::= { ipv6MIBObjects 7 } + + ipv6AddrPrefixEntry OBJECT-TYPE + SYNTAX Ipv6AddrPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface entry containing objects of + a particular IPv6 address prefix." + INDEX { ipv6IfIndex, + ipv6AddrPrefix, + ipv6AddrPrefixLength } + ::= { ipv6AddrPrefixTable 1 } + + Ipv6AddrPrefixEntry ::= SEQUENCE { + ipv6AddrPrefix Ipv6AddressPrefix, + ipv6AddrPrefixLength INTEGER, + ipv6AddrPrefixOnLinkFlag TruthValue, + ipv6AddrPrefixAutonomousFlag TruthValue, + ipv6AddrPrefixAdvPreferredLifetime Unsigned32, + ipv6AddrPrefixAdvValidLifetime Unsigned32 + } + + ipv6AddrPrefix OBJECT-TYPE + SYNTAX Ipv6AddressPrefix + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prefix associated with the this interface." + ::= { ipv6AddrPrefixEntry 1 } + + ipv6AddrPrefixLength OBJECT-TYPE + SYNTAX INTEGER (0..128) + UNITS "bits" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length of the prefix (in bits)." + ::= { ipv6AddrPrefixEntry 2 } + + ipv6AddrPrefixOnLinkFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this + prefix can be used for on-link determination + and the value 'false(2)' otherwise." + ::= { ipv6AddrPrefixEntry 3 } + + ipv6AddrPrefixAutonomousFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Autonomous address configuration flag. When + true(1), indicates that this prefix can be used + for autonomous address configuration (i.e. can + be used to form a local interface address). + If false(2), it is not used to autoconfigure + a local interface address." + ::= { ipv6AddrPrefixEntry 4 } + + ipv6AddrPrefixAdvPreferredLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is the length of time in seconds that this + prefix will remain preferred, i.e. time until + deprecation. A value of 4,294,967,295 represents + infinity. + + The address generated from a deprecated prefix + should no longer be used as a source address in + new communications, but packets received on such + an interface are processed as expected." + ::= { ipv6AddrPrefixEntry 5 } + + ipv6AddrPrefixAdvValidLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is the length of time in seconds that this + prefix will remain valid, i.e. time until + invalidation. A value of 4,294,967,295 represents + infinity. + + The address generated from an invalidated prefix + should not appear as the destination or source + address of a packet." + ::= { ipv6AddrPrefixEntry 6 } + + + -- the IPv6 Address table + + -- The IPv6 address table contains this node's IPv6 + -- addressing information. + + ipv6AddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6AddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addressing information relevant to + this node's interface addresses." + ::= { ipv6MIBObjects 8 } + + ipv6AddrEntry OBJECT-TYPE + SYNTAX Ipv6AddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The addressing information for one of this + node's interface addresses." + INDEX { ipv6IfIndex, ipv6AddrAddress } + ::= { ipv6AddrTable 1 } + + Ipv6AddrEntry ::= + SEQUENCE { + ipv6AddrAddress Ipv6Address, + ipv6AddrPfxLength INTEGER, + ipv6AddrType INTEGER, + ipv6AddrAnycastFlag TruthValue, + ipv6AddrStatus INTEGER + } + + ipv6AddrAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 address to which this entry's addressing + information pertains." + ::= { ipv6AddrEntry 1 } + + ipv6AddrPfxLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + UNITS "bits" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the prefix (in bits) associated with + the IPv6 address of this entry." + ::= { ipv6AddrEntry 2 } + + ipv6AddrType OBJECT-TYPE + SYNTAX INTEGER { + -- address has been formed + -- using stateless + stateless(1), -- autoconfiguration + + -- address has been acquired + -- by stateful means + -- (e.g. DHCPv6, manual + stateful(2), -- configuration) + + -- type can not be determined + unknown(3) -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address. Note that 'stateless(1)' + refers to an address that was statelessly + autoconfigured; 'stateful(2)' refers to a address + which was acquired by via a stateful protocol + (e.g. DHCPv6, manual configuration)." + ::= { ipv6AddrEntry 3 } + + ipv6AddrAnycastFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this + address is an anycast address and the value + 'false(2)' otherwise." + ::= { ipv6AddrEntry 4 } + + ipv6AddrStatus OBJECT-TYPE + SYNTAX INTEGER { + preferred(1), + + deprecated(2), + + invalid(3), + + inaccessible(4), + + unknown(5) -- status can not be determined + -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address status. The preferred(1) state indicates + that this is a valid address that can appear as + the destination or source address of a packet. + The deprecated(2) state indicates that this is + a valid but deprecated address that should no longer + be used as a source address in new communications, + but packets addressed to such an address are + processed as expected. The invalid(3) state indicates + that this is not valid address which should not + appear as the destination or source address of + a packet. The inaccessible(4) state indicates that + the address is not accessible because the interface + to which this address is assigned is not operational." + ::= { ipv6AddrEntry 5 } + + + -- IPv6 Routing objects + + ipv6RouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current ipv6RouteTable entries. + This is primarily to avoid having to read + the table in order to determine this number." + ::= { ipv6MIBObjects 9 } + + ipv6DiscardedRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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." + ::= { ipv6MIBObjects 10 } + + + -- IPv6 Routing table + + ipv6RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6RouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 Routing table. This table contains + an entry for each valid IPv6 unicast route + that can be used for packet forwarding + determination." + ::= { ipv6MIBObjects 11 } + + ipv6RouteEntry OBJECT-TYPE + SYNTAX Ipv6RouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A routing entry." + INDEX { ipv6RouteDest, + ipv6RoutePfxLength, + ipv6RouteIndex } + ::= { ipv6RouteTable 1 } + + Ipv6RouteEntry ::= SEQUENCE { + ipv6RouteDest Ipv6Address, + ipv6RoutePfxLength INTEGER, + ipv6RouteIndex Unsigned32, + ipv6RouteIfIndex Ipv6IfIndexOrZero, + ipv6RouteNextHop Ipv6Address, + ipv6RouteType INTEGER, + ipv6RouteProtocol INTEGER, + ipv6RoutePolicy Integer32, + ipv6RouteAge Unsigned32, + ipv6RouteNextHopRDI Unsigned32, + ipv6RouteMetric Unsigned32, + ipv6RouteWeight Unsigned32, + ipv6RouteInfo RowPointer, + ipv6RouteValid TruthValue + } + + ipv6RouteDest OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IPv6 address of this route. + This object may not take a Multicast address + value." + ::= { ipv6RouteEntry 1 } + + ipv6RoutePfxLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + UNITS "bits" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the prefix length of the destination + address." + ::= { ipv6RouteEntry 2 } + + ipv6RouteIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value which uniquely identifies the route + among the routes to the same network layer + destination. The way this value is chosen is + implementation specific but it must be unique for + ipv6RouteDest/ipv6RoutePfxLength pair and remain + constant for the life of the route." + ::= { ipv6RouteEntry 3 } + + ipv6RouteIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS read-only + STATUS current + 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 + ipv6IfIndex. For routes of the discard type this + value can be zero." + ::= { ipv6RouteEntry 4 } + + ipv6RouteNextHop OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; otherwise, ::0 + ('00000000000000000000000000000000'H in ASN.1 + string representation)." + ::= { ipv6RouteEntry 5 } + + ipv6RouteType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- an route indicating that + -- packets to destinations + -- matching this route are + discard(2), -- to be discarded + + -- route to directly + local(3), -- connected (sub-)network + + -- route to a remote + remote(4) -- destination + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of route. Note that 'local(3)' refers + to a route for which the next hop is the final + destination; 'remote(4)' refers to a route for + which the next hop is not the final + destination; 'discard(2)' refers to a route + indicating that packets to destinations matching + this route are to be discarded (sometimes called + black-hole route)." + ::= { ipv6RouteEntry 6 } + + ipv6RouteProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- non-protocol information, + -- e.g., manually configured + local(2), -- entries + + netmgmt(3), -- static route + + -- obtained via Neighbor + -- Discovery protocol, + ndisc(4), -- e.g., result of Redirect + + -- the following are all + -- dynamic routing protocols + rip(5), -- RIPng + ospf(6), -- Open Shortest Path First + bgp(7), -- Border Gateway Protocol + idrp(8), -- InterDomain Routing Protocol + igrp(9) -- InterGateway Routing Protocol + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned." + ::= { ipv6RouteEntry 7 } + + ipv6RoutePolicy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The general set of conditions that would cause the + selection of one multipath route (set of next hops + for a given destination) is referred to as 'policy'. + Unless the mechanism indicated by ipv6RouteProtocol + specified otherwise, the policy specifier is the + 8-bit Traffic Class field of the IPv6 packet header + that is zero extended at the left to a 32-bit value. + + Protocols defining 'policy' otherwise must either + define a set of values which are valid for + this object or must implement an integer- + instanced policy table for which this object's + value acts as an index." + ::= { ipv6RouteEntry 8 } + + ipv6RouteAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + 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." + ::= { ipv6RouteEntry 9 } + + ipv6RouteNextHopRDI OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Routing Domain ID of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ipv6RouteProtocol value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ipv6RouteEntry 10 } + + ipv6RouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric for this route. The + semantics of this metric are determined by the + routing protocol specified in the route's + ipv6RouteProtocol value. When this is unknown + or not relevant to the protocol indicated by + ipv6RouteProtocol, the object value should be + set to its maximum value (4,294,967,295)." + ::= { ipv6RouteEntry 11 } + + ipv6RouteWeight OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system internal weight value for this route. + The semantics of this value are determined by + the implementation specific rules. Generally, + within routes with the same ipv6RoutePolicy value, + the lower the weight value the more preferred is + the route." + ::= { ipv6RouteEntry 12 } + + ipv6RouteInfo OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + 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 ipv6RouteProto value. + If this information is not present, its value + should be set to the OBJECT ID { 0 0 }, + which is a syntactically valid object identifier, + and any implementation conforming to ASN.1 + and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipv6RouteEntry 13 } + + ipv6RouteValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to the value 'false(2)' has + the effect of invalidating the corresponding entry + in the ipv6RouteTable object. That is, it + effectively disassociates 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 ipv6RouteValid + object." + DEFVAL { true } + ::= { ipv6RouteEntry 14 } + + + -- IPv6 Address Translation table + + ipv6NetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6NetToMediaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Address Translation table used for + mapping from IPv6 addresses to physical addresses. + + The IPv6 address translation table contain the + Ipv6Address to `physical' address equivalencies. + Some interfaces do not use translation tables + for determining address equivalencies; if all + interfaces are of this type, then the Address + Translation table is empty, i.e., has zero + entries." + ::= { ipv6MIBObjects 12 } + + ipv6NetToMediaEntry OBJECT-TYPE + SYNTAX Ipv6NetToMediaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IPv6 address to `physical' + address equivalence." + INDEX { ipv6IfIndex, + ipv6NetToMediaNetAddress } + ::= { ipv6NetToMediaTable 1 } + + Ipv6NetToMediaEntry ::= SEQUENCE { + ipv6NetToMediaNetAddress + Ipv6Address, + ipv6NetToMediaPhysAddress + PhysAddress, + ipv6NetToMediaType + INTEGER, + ipv6IfNetToMediaState + INTEGER, + ipv6IfNetToMediaLastUpdated + TimeStamp, + ipv6NetToMediaValid + TruthValue + } + + ipv6NetToMediaNetAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Address corresponding to + the media-dependent `physical' address." + ::= { ipv6NetToMediaEntry 1 } + + ipv6NetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The media-dependent `physical' address." + ::= { ipv6NetToMediaEntry 2 } + + ipv6NetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + dynamic(2), -- dynamically resolved + static(3), -- statically configured + local(4) -- local interface + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the mapping. The 'dynamic(2)' type + indicates that the IPv6 address to physical + addresses mapping has been dynamically + resolved using the IPv6 Neighbor Discovery + protocol. The static(3)' types indicates that + the mapping has been statically configured. + The local(4) indicates that the mapping is + provided for an entity's own interface address." + ::= { ipv6NetToMediaEntry 3 } + +ipv6IfNetToMediaState OBJECT-TYPE + SYNTAX INTEGER { + reachable(1), -- confirmed reachability + + stale(2), -- unconfirmed reachability + + delay(3), -- waiting for reachability + -- confirmation before entering + -- the probe state + + probe(4), -- actively probing + + invalid(5), -- an invalidated mapping + + unknown(6) -- state can not be determined + -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Neighbor Unreachability Detection [8] state + for the interface when the address mapping in + this entry is used." + ::= { ipv6NetToMediaEntry 4 } + +ipv6IfNetToMediaLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry + was last updated. If this entry was updated prior + to the last re-initialization of the local network + management subsystem, then this object contains + a zero value." + ::= { ipv6NetToMediaEntry 5 } + + ipv6NetToMediaValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to the value 'false(2)' has + the effect of invalidating the corresponding entry + in the ipv6NetToMediaTable. That is, it effectively + disassociates 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 + ipv6NetToMediaValid object." + DEFVAL { true } + ::= { ipv6NetToMediaEntry 6 } + + +-- definition of IPv6-related notifications. +-- Note that we need ipv6NotificationPrefix with the 0 +-- sub-identifier to make this MIB to translate to +-- an SNMPv1 format in a reversible way. For example +-- it is needed for proxies that convert SNMPv1 traps +-- to SNMPv2 notifications without MIB knowledge. + +ipv6Notifications OBJECT IDENTIFIER + ::= { ipv6MIB 2 } +ipv6NotificationPrefix OBJECT IDENTIFIER + ::= { ipv6Notifications 0 } + +ipv6IfStateChange NOTIFICATION-TYPE + OBJECTS { + ipv6IfDescr, + ipv6IfOperStatus -- the new state of the If. + } + STATUS current + DESCRIPTION + "An ipv6IfStateChange notification signifies + that there has been a change in the state of + an ipv6 interface. This notification should + be generated when the interface's operational + status transitions to or from the up(1) state." + + ::= { ipv6NotificationPrefix 1 } + + +-- conformance information + +ipv6Conformance OBJECT IDENTIFIER ::= { ipv6MIB 3 } + +ipv6Compliances OBJECT IDENTIFIER ::= { ipv6Conformance 1 } +ipv6Groups OBJECT IDENTIFIER ::= { ipv6Conformance 2 } + +-- compliance statements + +ipv6Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement ipv6 MIB." + MODULE -- this module + MANDATORY-GROUPS { ipv6GeneralGroup, + ipv6NotificationGroup } + OBJECT ipv6Forwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6DefaultHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfDescr + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfIdentifier + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfIdentifierLength + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + + OBJECT ipv6IfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6RouteValid + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6NetToMediaValid + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + ::= { ipv6Compliances 1 } + +ipv6GeneralGroup OBJECT-GROUP + OBJECTS { ipv6Forwarding, + ipv6DefaultHopLimit, + ipv6Interfaces, + ipv6IfTableLastChange, + ipv6IfDescr, + ipv6IfLowerLayer, + ipv6IfEffectiveMtu, + ipv6IfReasmMaxSize, + ipv6IfIdentifier, + ipv6IfIdentifierLength, + ipv6IfPhysicalAddress, + ipv6IfAdminStatus, + ipv6IfOperStatus, + ipv6IfLastChange, + ipv6IfStatsInReceives, + ipv6IfStatsInHdrErrors, + ipv6IfStatsInTooBigErrors, + ipv6IfStatsInNoRoutes, + ipv6IfStatsInAddrErrors, + ipv6IfStatsInUnknownProtos, + ipv6IfStatsInTruncatedPkts, + ipv6IfStatsInDiscards, + ipv6IfStatsInDelivers, + ipv6IfStatsOutForwDatagrams, + ipv6IfStatsOutRequests, + ipv6IfStatsOutDiscards, + ipv6IfStatsOutFragOKs, + ipv6IfStatsOutFragFails, + ipv6IfStatsOutFragCreates, + ipv6IfStatsReasmReqds, + ipv6IfStatsReasmOKs, + ipv6IfStatsReasmFails, + ipv6IfStatsInMcastPkts, + ipv6IfStatsOutMcastPkts, + ipv6AddrPrefixOnLinkFlag, + ipv6AddrPrefixAutonomousFlag, + ipv6AddrPrefixAdvPreferredLifetime, + ipv6AddrPrefixAdvValidLifetime, + ipv6AddrPfxLength, + ipv6AddrType, + ipv6AddrAnycastFlag, + ipv6AddrStatus, + ipv6RouteNumber, + ipv6DiscardedRoutes, + ipv6RouteIfIndex, + ipv6RouteNextHop, + ipv6RouteType, + ipv6RouteProtocol, + ipv6RoutePolicy, + ipv6RouteAge, + ipv6RouteNextHopRDI, + ipv6RouteMetric, + ipv6RouteWeight, + ipv6RouteInfo, + ipv6RouteValid, + ipv6NetToMediaPhysAddress, + ipv6NetToMediaType, + ipv6IfNetToMediaState, + ipv6IfNetToMediaLastUpdated, + ipv6NetToMediaValid } + STATUS current + DESCRIPTION + "The IPv6 group of objects providing for basic + management of IPv6 entities." + ::= { ipv6Groups 1 } + +ipv6NotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { ipv6IfStateChange } + STATUS current + DESCRIPTION + "The notification that an IPv6 entity is required + to implement." + + + ::= { ipv6Groups 2 } + + END diff --git a/mibs/ietf/IPV6-MLD-MIB b/mibs/ietf/IPV6-MLD-MIB new file mode 100644 index 0000000..7ed0a9d --- /dev/null +++ b/mibs/ietf/IPV6-MLD-MIB @@ -0,0 +1,444 @@ +IPV6-MLD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Unsigned32, TimeTicks, mib-2 FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + InetAddressIPv6 FROM INET-ADDRESS-MIB + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +mldMIB MODULE-IDENTITY + LAST-UPDATED "200101250000Z" -- 25 Jan 2001 + ORGANIZATION "IETF IPNGWG Working Group." + CONTACT-INFO + " Brian Haberman + Nortel Networks + 4309 Emperor Blvd. + Durham, NC 27703 + USA + + Phone: +1 919 992 4439 + e-mail: haberman@nortelnetworks.com" + DESCRIPTION + "The MIB module for MLD Management." + REVISION "200101250000Z" -- 25 Jan 2001 + DESCRIPTION + "Initial version, published as RFC 3019." + ::= { mib-2 91 } + + +mldMIBObjects OBJECT IDENTIFIER ::= { mldMIB 1 } +-- +-- The MLD Interface Table +-- + +mldInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MldInterfaceEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interfaces on which + MLD is enabled." + ::= { mldMIBObjects 1 } + +mldInterfaceEntry OBJECT-TYPE + SYNTAX MldInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an interface on + which MLD is enabled." + INDEX { mldInterfaceIfIndex } + ::= { mldInterfaceTable 1 } + +MldInterfaceEntry ::= SEQUENCE { + mldInterfaceIfIndex InterfaceIndex, + mldInterfaceQueryInterval Unsigned32, + mldInterfaceStatus RowStatus, + mldInterfaceVersion Unsigned32, + mldInterfaceQuerier InetAddressIPv6, + mldInterfaceQueryMaxResponseDelay Unsigned32, + mldInterfaceJoins Counter32, + mldInterfaceGroups Gauge32, + mldInterfaceRobustness Unsigned32, + mldInterfaceLastListenQueryIntvl Unsigned32, + mldInterfaceProxyIfIndex InterfaceIndexOrZero, + mldInterfaceQuerierUpTime TimeTicks, + mldInterfaceQuerierExpiryTime TimeTicks +} + +mldInterfaceIfIndex OBJECT-TYPE + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork-layer interface value of the interface + for which MLD is enabled." + ::= { mldInterfaceEntry 1 } + +mldInterfaceQueryInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The frequency at which MLD Host-Query packets are + transmitted on this interface." + DEFVAL { 125 } + ::= { mldInterfaceEntry 2 } + +mldInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation of a row enables MLD on the interface. + The destruction of a row disables MLD on the interface." + ::= { mldInterfaceEntry 3 } + +mldInterfaceVersion OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version of MLD which is running on this interface. + This object is a place holder to allow for new versions + of MLD to be introduced. Version 1 of MLD is defined + in RFC 2710." + DEFVAL { 1 } + ::= { mldInterfaceEntry 4 } + +mldInterfaceQuerier OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the MLD Querier on the IPv6 subnet to + which this interface is attached." + ::= { mldInterfaceEntry 5 } + +mldInterfaceQueryMaxResponseDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum query response time advertised in MLD + queries on this interface." + DEFVAL { 10 } + ::= { mldInterfaceEntry 6 } + +mldInterfaceJoins OBJECT-TYPE + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a group membership has been added on + this interface; that is, the number of times an entry for + this interface has been added to the Cache Table. This + object gives an indication of the amount of MLD activity + over time." + ::= { mldInterfaceEntry 7 } + +mldInterfaceGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this interface in the + Cache Table." + ::= { mldInterfaceEntry 8 } + +mldInterfaceRobustness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Robustness Variable allows tuning for the expected + packet loss on a subnet. If a subnet is expected to be + lossy, the Robustness Variable may be increased. MLD is + robust to (Robustness Variable-1) packet losses. The + discussion of the Robustness Variable is in Section 7.1 + of RFC 2710." + DEFVAL { 2 } + ::= { mldInterfaceEntry 9 } + +mldInterfaceLastListenQueryIntvl OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Last Member Query Interval is the Max Response + Delay inserted into Group-Specific Queries sent in + response to Leave Group messages, and is also the amount + of time between Group-Specific Query messages. This + value may be tuned to modify the leave latency of the + network. A reduced value results in reduced time to + detect the loss of the last member of a group." + DEFVAL { 1 } + + + ::= { mldInterfaceEntry 10 } + +mldInterfaceProxyIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some devices implement a form of MLD proxying whereby + memberships learned on the interface represented by this + row, cause MLD Multicast Listener Reports to be sent on + the internetwork-layer interface identified by this + object. Such a device would implement mldRouterMIBGroup + only on its router interfaces (those interfaces with + non-zero mldInterfaceProxyIfIndex). Typically, the + value of this object is 0, indicating that no proxying + is being done." + DEFVAL { 0 } + ::= { mldInterfaceEntry 11 } + +mldInterfaceQuerierUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since mldInterfaceQuerier was last changed." + ::= { mldInterfaceEntry 12 } + +mldInterfaceQuerierExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the Other Querier Present + Timer expires. If the local system is the querier, + the value of this object is zero." + ::= { mldInterfaceEntry 13 } + + +-- +-- The MLD Cache Table +-- + +mldCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF MldCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IPv6 multicast + + + groups for which there are members on a particular + interface." + ::= { mldMIBObjects 2 } + +mldCacheEntry OBJECT-TYPE + SYNTAX MldCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the mldCacheTable." + INDEX { mldCacheAddress, mldCacheIfIndex } + ::= { mldCacheTable 1 } + +MldCacheEntry ::= SEQUENCE { + mldCacheAddress InetAddressIPv6, + mldCacheIfIndex InterfaceIndex, + mldCacheSelf TruthValue, + mldCacheLastReporter InetAddressIPv6, + mldCacheUpTime TimeTicks, + mldCacheExpiryTime TimeTicks, + mldCacheStatus RowStatus +} + +mldCacheAddress OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 multicast group address for which this entry + contains information." + ::= { mldCacheEntry 1 } + +mldCacheIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork-layer interface for which this entry + contains information for an IPv6 multicast group + address." + ::= { mldCacheEntry 2 } + +mldCacheSelf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether the local system is a member of + + + this group address on this interface." + DEFVAL { true } + ::= { mldCacheEntry 3 } + +mldCacheLastReporter OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IPv6 address of the source of the last membership + report received for this IPv6 Multicast group address on + this interface. If no membership report has been + received, this object has the value 0::0." + ::= { mldCacheEntry 4 } + +mldCacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time elapsed since this entry was created." + ::= { mldCacheEntry 5 } + +mldCacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry + will be aged out. A value of 0 indicates that the entry + is only present because mldCacheSelf is true and that if + the router left the group, this entry would be aged out + immediately. Note that some implementations may process + Membership Reports from the local system in the same way + as reports from other hosts, so a value of 0 is not + required." + ::= { mldCacheEntry 6 } + +mldCacheStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or existing entries deleted from this table." + ::= { mldCacheEntry 7 } + + + + +-- conformance information + +mldMIBConformance + OBJECT IDENTIFIER ::= { mldMIB 2 } +mldMIBCompliances + OBJECT IDENTIFIER ::= { mldMIBConformance 1 } +mldMIBGroups + OBJECT IDENTIFIER ::= { mldMIBConformance 2 } + + +-- compliance statements + +mldHostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running MLD and + implementing the MLD MIB." + MODULE -- this module + MANDATORY-GROUPS { mldBaseMIBGroup, + mldHostMIBGroup + } + + OBJECT mldInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mldMIBCompliances 1 } + +mldRouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running MLD and + implementing the MLD MIB." + MODULE -- this module + MANDATORY-GROUPS { mldBaseMIBGroup, + mldRouterMIBGroup + } + + OBJECT mldInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mldMIBCompliances 2 } + + +-- units of conformance + + + +mldBaseMIBGroup OBJECT-GROUP + OBJECTS { mldCacheSelf, + mldCacheStatus, mldInterfaceStatus + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + MLD. The mldBaseMIBGroup is designed to allow for the + manager creation and deletion of MLD cache entries." + ::= { mldMIBGroups 1 } + +mldRouterMIBGroup OBJECT-GROUP + OBJECTS { mldCacheUpTime, mldCacheExpiryTime, + mldInterfaceQueryInterval, + mldInterfaceJoins, mldInterfaceGroups, + mldCacheLastReporter, + mldInterfaceQuerierUpTime, + mldInterfaceQuerierExpiryTime, + mldInterfaceQuerier, + mldInterfaceVersion, + mldInterfaceQueryMaxResponseDelay, + mldInterfaceRobustness, + mldInterfaceLastListenQueryIntvl + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + in routers." + ::= { mldMIBGroups 2 } + + +mldHostMIBGroup OBJECT-GROUP + OBJECTS { mldInterfaceQuerier + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + in hosts." + ::= { mldMIBGroups 3 } + + +mldProxyMIBGroup OBJECT-GROUP + OBJECTS { mldInterfaceProxyIfIndex } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + proxy devices." + + + ::= { mldMIBGroups 4 } + +END diff --git a/mibs/ietf/IPV6-TC b/mibs/ietf/IPV6-TC new file mode 100644 index 0000000..48c9f0e --- /dev/null +++ b/mibs/ietf/IPV6-TC @@ -0,0 +1,67 @@ +IPV6-TC DEFINITIONS ::= BEGIN + +IMPORTS + Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + +-- definition of textual conventions +Ipv6Address ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 addresses. + This is a binary string of 16 octets in network + byte-order." + SYNTAX OCTET STRING (SIZE (16)) + +Ipv6AddressPrefix ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + prefixes. This is a binary string of up to 16 + octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..16)) + +Ipv6AddressIfIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + interface identifiers. This is a binary string + of up to 8 octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..8)) + +Ipv6IfIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero for each + internetwork-layer interface in the managed + system. It is recommended that values are assigned + contiguously starting from 1. The value for each + internetwork-layer interface 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) + +Ipv6IfIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + Ipv6IfIndex convention. The latter defines + a greater than zero value used to identify an IPv6 + interface 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) + +END diff --git a/mibs/ietf/IPV6-TCP-MIB b/mibs/ietf/IPV6-TCP-MIB new file mode 100644 index 0000000..c3777d0 --- /dev/null +++ b/mibs/ietf/IPV6-TCP-MIB @@ -0,0 +1,209 @@ +IPV6-TCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, experimental FROM SNMPv2-SMI + Ipv6Address, Ipv6IfIndexOrZero FROM IPV6-TC; + +ipv6TcpMIB MODULE-IDENTITY + LAST-UPDATED "9801290000Z" + ORGANIZATION "IETF IPv6 MIB Working Group" + CONTACT-INFO + " Mike Daniele + + Postal: Compaq Computer Corporation + 110 Spitbrook Rd + Nashua, NH 03062. + US + + Phone: +1 603 884 1423 + Email: daniele@zk3.dec.com" + DESCRIPTION + "The MIB module for entities implementing TCP over IPv6." + ::= { experimental 86 } + +-- objects specific to TCP for IPv6 + +tcp OBJECT IDENTIFIER ::= { mib-2 6 } + +-- the TCP over IPv6 Connection table + +-- This connection table contains information about this +-- entity's existing TCP connections between IPv6 endpoints. +-- Only connections between IPv6 addresses are contained in +-- this table. This entity's connections between IPv4 +-- endpoints are contained in tcpConnTable. + +ipv6TcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6TcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing TCP connection-specific information, + for only those connections whose endpoints are IPv6 addresses." + ::= { tcp 16 } + +ipv6TcpConnEntry OBJECT-TYPE + SYNTAX Ipv6TcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the ipv6TcpConnTable containing + information about a particular current TCP connection. + Each row of this table is transient, in that it ceases to + exist when (or soon after) the connection makes the transition + to the CLOSED state. + + Note that conceptual rows in this table require an additional + index object compared to tcpConnTable, since IPv6 addresses + are not guaranteed to be unique on the managed node." + INDEX { ipv6TcpConnLocalAddress, + ipv6TcpConnLocalPort, + ipv6TcpConnRemAddress, + ipv6TcpConnRemPort, + ipv6TcpConnIfIndex } + ::= { ipv6TcpConnTable 1 } + +Ipv6TcpConnEntry ::= + SEQUENCE { ipv6TcpConnLocalAddress Ipv6Address, + ipv6TcpConnLocalPort INTEGER, + ipv6TcpConnRemAddress Ipv6Address, + ipv6TcpConnRemPort INTEGER, + ipv6TcpConnIfIndex Ipv6IfIndexOrZero, + ipv6TcpConnState INTEGER } + +ipv6TcpConnLocalAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IPv6 address for this TCP connection. In + the case of a connection in the listen state which + is willing to accept connections for any IPv6 + address associated with the managed node, the value + ::0 is used." + ::= { ipv6TcpConnEntry 1 } + +ipv6TcpConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { ipv6TcpConnEntry 2 } + +ipv6TcpConnRemAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IPv6 address for this TCP connection." + ::= { ipv6TcpConnEntry 3 } + +ipv6TcpConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { ipv6TcpConnEntry 4 } + +ipv6TcpConnIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index object used to disambiguate conceptual rows in + the table, since the connection 4-tuple may not be unique. + + If the connection's remote address (ipv6TcpConnRemAddress) + is a link-local address and the connection's local address + (ipv6TcpConnLocalAddress) is not a link-local address, this + object identifies a local interface on the same link as + the connection's remote link-local address. + + Otherwise, this object identifies the local interface that + is associated with the ipv6TcpConnLocalAddress for this + TCP connection. If such a local interface cannot be determined, + this object should take on the value 0. (A possible example + of this would be if the value of ipv6TcpConnLocalAddress is ::0.) + + The interface identified by a particular non-0 value of this + index is the same interface as identified by the same value + of ipv6IfIndex. + + The value of this object must remain constant during the life + of the TCP connection." + ::= { ipv6TcpConnEntry 5 } + +ipv6TcpConnState 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) } + MAX-ACCESS read-write + STATUS current + 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 an error response (`badValue' for SNMPv1, 'wrongValue' + for SNMPv2) 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)." + ::= { ipv6TcpConnEntry 6 } + +-- +-- conformance information +-- + +ipv6TcpConformance OBJECT IDENTIFIER ::= { ipv6TcpMIB 2 } + +ipv6TcpCompliances OBJECT IDENTIFIER ::= { ipv6TcpConformance 1 } +ipv6TcpGroups OBJECT IDENTIFIER ::= { ipv6TcpConformance 2 } + +-- compliance statements + +ipv6TcpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement TCP over IPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6TcpGroup } + ::= { ipv6TcpCompliances 1 } + +ipv6TcpGroup OBJECT-GROUP + OBJECTS { -- these are defined in this module + -- ipv6TcpConnLocalAddress (not-accessible) + -- ipv6TcpConnLocalPort (not-accessible) + -- ipv6TcpConnRemAddress (not-accessible) + -- ipv6TcpConnRemPort (not-accessible) + -- ipv6TcpConnIfIndex (not-accessible) + ipv6TcpConnState } + STATUS current + DESCRIPTION + "The group of objects providing management of + TCP over IPv6." + ::= { ipv6TcpGroups 1 } + +END diff --git a/mibs/ietf/IPV6-UDP-MIB b/mibs/ietf/IPV6-UDP-MIB new file mode 100644 index 0000000..abb8b17 --- /dev/null +++ b/mibs/ietf/IPV6-UDP-MIB @@ -0,0 +1,141 @@ +IPV6-UDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, experimental FROM SNMPv2-SMI + Ipv6Address, Ipv6IfIndexOrZero FROM IPV6-TC; + +ipv6UdpMIB MODULE-IDENTITY + LAST-UPDATED "9801290000Z" + ORGANIZATION "IETF IPv6 MIB Working Group" + CONTACT-INFO + " Mike Daniele + + Postal: Compaq Computer Corporation + 110 Spitbrook Rd + Nashua, NH 03062. + US + + Phone: +1 603 884 1423 + Email: daniele@zk3.dec.com" + DESCRIPTION + "The MIB module for entities implementing UDP over IPv6." + ::= { experimental 87 } + +-- objects specific to UDP for IPv6 + +udp OBJECT IDENTIFIER ::= { mib-2 7 } + +-- the UDP over IPv6 Listener table + +-- This table contains information about this entity's +-- UDP/IPv6 endpoints. Only endpoints utilizing IPv6 addresses +-- are contained in this table. This entity's UDP/IPv4 endpoints +-- are contained in udpTable. + +ipv6UdpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6UdpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing UDP listener information for + UDP/IPv6 endpoints." + ::= { udp 6 } + +ipv6UdpEntry OBJECT-TYPE + SYNTAX Ipv6UdpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular current UDP listener. + + Note that conceptual rows in this table require an + additional index object compared to udpTable, since + IPv6 addresses are not guaranteed to be unique on the + managed node." + INDEX { ipv6UdpLocalAddress, + ipv6UdpLocalPort, + ipv6UdpIfIndex } + ::= { ipv6UdpTable 1 } + +Ipv6UdpEntry ::= SEQUENCE { + ipv6UdpLocalAddress Ipv6Address, + ipv6UdpLocalPort INTEGER, + ipv6UdpIfIndex Ipv6IfIndexOrZero } + +ipv6UdpLocalAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IPv6 address for this UDP listener. + In the case of a UDP listener which is willing + to accept datagrams for any IPv6 address + associated with the managed node, the value ::0 + is used." + ::= { ipv6UdpEntry 1 } + +ipv6UdpLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP listener." + ::= { ipv6UdpEntry 2 } + +ipv6UdpIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index object used to disambiguate conceptual rows in + the table, since the ipv6UdpLocalAddress/ipv6UdpLocalPort + pair may not be unique. + + This object identifies the local interface that is + associated with ipv6UdpLocalAddress for this UDP listener. + If such a local interface cannot be determined, this object + should take on the value 0. (A possible example of this + would be if the value of ipv6UdpLocalAddress is ::0.) + + The interface identified by a particular non-0 value of + this index is the same interface as identified by the same + value of ipv6IfIndex. + + The value of this object must remain constant during + the life of this UDP endpoint." + ::= { ipv6UdpEntry 3 } + +-- +-- conformance information +-- + +ipv6UdpConformance OBJECT IDENTIFIER ::= { ipv6UdpMIB 2 } + +ipv6UdpCompliances OBJECT IDENTIFIER ::= { ipv6UdpConformance 1 } +ipv6UdpGroups OBJECT IDENTIFIER ::= { ipv6UdpConformance 2 } + +-- compliance statements + +ipv6UdpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement UDP over IPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6UdpGroup } + ::= { ipv6UdpCompliances 1 } + +ipv6UdpGroup OBJECT-GROUP + OBJECTS { -- these are defined in this module + -- ipv6UdpLocalAddress (not-accessible) + -- ipv6UdpLocalPort (not-accessible) + ipv6UdpIfIndex } + STATUS current + DESCRIPTION + "The group of objects providing management of + UDP over IPv6." + ::= { ipv6UdpGroups 1 } + +END diff --git a/mibs/ietf/ISCSI-MIB b/mibs/ietf/ISCSI-MIB new file mode 100644 index 0000000..68c215f --- /dev/null +++ b/mibs/ietf/ISCSI-MIB @@ -0,0 +1,3276 @@ +ISCSI-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, NOTIFICATION-TYPE, + Unsigned32, Counter32, Counter64, Gauge32, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, TruthValue, RowPointer, TimeStamp, RowStatus, + AutonomousType, StorageType + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB -- RFC 4001 + ; + +iscsiMibModule MODULE-IDENTITY + LAST-UPDATED "200605220000Z" -- May 22, 2006 + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO + " + Mark Bakke + Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + + E-mail: mbakke@cisco.com + + Marjorie Krueger + Hewlett-Packard + Networked Storage Architecture + Networked Storage Solutions Org. + 8000 Foothills Blvd. + Roseville, CA 95747 + + + + + E-mail: marjorie_krueger@hp.com + + Tom McSweeney + IBM Corporation + 600 Park Offices Drive + Research Triangle Park, NC + USA 27709 + + E-mail: tommcs@us.ibm.com + + James Muchow + Qlogic Corp. + 6321 Bury Dr. + Eden Prairie, MN + USA 55346 + + E-mail: james.muchow@qlogic.com" + + DESCRIPTION + "The iSCSI Protocol MIB module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4544; see the RFC itself for + full legal notices." + REVISION "200605220000Z" -- May 22, 2006 + DESCRIPTION + "Initial version of the iSCSI Protocol MIB module" + +::= { mib-2 142 } + +iscsiNotifications OBJECT IDENTIFIER ::= { iscsiMibModule 0 } +iscsiObjects OBJECT IDENTIFIER ::= { iscsiMibModule 1 } +iscsiConformance OBJECT IDENTIFIER ::= { iscsiMibModule 2 } +iscsiAdmin OBJECT IDENTIFIER ::= { iscsiMibModule 3 } + +-- Textual Conventions + +IscsiTransportProtocol ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to define the transport + protocols that will carry iSCSI PDUs." + REFERENCE + "RFC791, RFC1700 + + The presently known, officially delegated numbers + can be found at: + http://www.iana.org/assignments/protocol-numbers" + + + + SYNTAX Unsigned32 (0..255) + +IscsiDigestMethod ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the methods possible + for digest negotiation. + none - a placeholder for a secondary digest method + that means only the primary method can be + used. + other - a digest method other than those defined below. + noDigest - does not support digests (will operate without + a digest (Note: implementations must support + digests to be compliant with the RFC3720). + CRC32c - require a CRC32C digest." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" + SYNTAX INTEGER { + none(1), + other(2), + noDigest(3), + crc32c(4) + } + +IscsiName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "223t" + STATUS current + DESCRIPTION + "This data type is used for objects whose value is an + iSCSI name with the properties described in RFC 3720 + section 3.2.6.1, and encoded as specified in RFC 3720 + section 3.2.6.2. A zero-length string indicates the + absence of an iSCSI name." + REFERENCE + "RFC 3720, Section 3.2.6, iSCSI Names." + SYNTAX OCTET STRING (SIZE(0 | 16..223)) + +--********************************************************************** + +iscsiDescriptors OBJECT IDENTIFIER ::= { iscsiAdmin 1 } + +iscsiHeaderIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 1 } + +iscsiHdrIntegrityNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no integrity + scheme (for either the header or data) is being + + + + used." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiHeaderIntegrityTypes 1 } + +iscsiHdrIntegrityCrc32c OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the integrity + scheme (for either the header or data) is CRC32c." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiHeaderIntegrityTypes 2 } + +iscsiDataIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 2 } + +iscsiDataIntegrityNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no integrity + scheme (for either the header or data) is being + used." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiDataIntegrityTypes 1 } + +iscsiDataIntegrityCrc32c OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the integrity + scheme (for either the header or data) is CRC32c." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiDataIntegrityTypes 2 } + +--********************************************************************** + +iscsiInstance OBJECT IDENTIFIER ::= { iscsiObjects 1 } + +-- Instance Attributes Table + +iscsiInstanceAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI instances present on the system." +::= { iscsiInstance 1 } + + + +iscsiInstanceAttributesEntry OBJECT-TYPE + SYNTAX IscsiInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular iSCSI instance." + INDEX { iscsiInstIndex } +::= { iscsiInstanceAttributesTable 1 } + +IscsiInstanceAttributesEntry ::= SEQUENCE { + iscsiInstIndex Unsigned32, + iscsiInstDescr SnmpAdminString, + iscsiInstVersionMin Unsigned32, + iscsiInstVersionMax Unsigned32, + iscsiInstVendorID SnmpAdminString, + iscsiInstVendorVersion SnmpAdminString, + iscsiInstPortalNumber Unsigned32, + iscsiInstNodeNumber Unsigned32, + iscsiInstSessionNumber Unsigned32, + iscsiInstSsnFailures Counter32, + iscsiInstLastSsnFailureType AutonomousType, + iscsiInstLastSsnRmtNodeName IscsiName, + iscsiInstDiscontinuityTime TimeStamp +} + +iscsiInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + iSCSI instance. This index value must not be modified or + reused by an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across reboots." +::= { iscsiInstanceAttributesEntry 1 } + +iscsiInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string, determined by the implementation to + describe the iSCSI instance. When only a single instance + is present, this object may be set to the zero-length + string; with multiple iSCSI instances, it may be used in + an implementation-dependent manner to describe the purpose + of the respective instance." + + + +::= { iscsiInstanceAttributesEntry 2 } + +iscsiInstVersionMin OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum version number of the iSCSI specification + such that this iSCSI instance supports this minimum + value, the maximum value indicated by the corresponding + instance in iscsiInstVersionMax, and all versions in + between." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiInstanceAttributesEntry 3 } + +iscsiInstVersionMax OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum version number of the iSCSI specification + such that this iSCSI instance supports this maximum + value, the minimum value indicated by the corresponding + instance in iscsiInstVersionMin, and all versions in + between." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiInstanceAttributesEntry 4 } + +iscsiInstVendorID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string describing the manufacturer of the + implementation of this instance." +::= { iscsiInstanceAttributesEntry 5 } + +iscsiInstVendorVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string set by the manufacturer describing the + version of the implementation of this instance. The + format of this string is determined solely by the + manufacturer, and is for informational purposes only. + + + + It is unrelated to the iSCSI specification version numbers." +::= { iscsiInstanceAttributesEntry 6 } + +iscsiInstPortalNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transport endpoints" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiPortalAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 7 } + +iscsiInstNodeNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "iSCSI nodes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiNodeAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 8 } + +iscsiInstSessionNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiSessionAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 9 } + +iscsiInstSsnFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a session belonging + to this instance has been failed. If this counter has + suffered a discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiInstanceAttributesEntry 10 } + +iscsiInstLastSsnFailureType OBJECT-TYPE + + + + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter object in the iscsiInstSsnErrorStatsTable + that was incremented when the last session failure occurred. + + If the reason for failure is not found in the + iscsiInstSsnErrorStatsTable, the value { 0.0 } is + used instead." +::= { iscsiInstanceAttributesEntry 11 } + +iscsiInstLastSsnRmtNodeName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI name of the remote node from the failed + session." +::= { iscsiInstanceAttributesEntry 12 } + +iscsiInstDiscontinuityTime 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 instance's counters + suffered a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." +::= { iscsiInstanceAttributesEntry 13 } + + +-- Instance Session Failure Stats Table + +iscsiInstanceSsnErrorStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInstanceSsnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics regarding the occurrences of error types + that result in a session failure." +::= { iscsiInstance 2 } + +iscsiInstanceSsnErrorStatsEntry OBJECT-TYPE + + + + SYNTAX IscsiInstanceSsnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular iSCSI instance." + AUGMENTS { iscsiInstanceAttributesEntry } +::= { iscsiInstanceSsnErrorStatsTable 1 } + +IscsiInstanceSsnErrorStatsEntry ::= SEQUENCE { + iscsiInstSsnDigestErrors Counter32, + iscsiInstSsnCxnTimeoutErrors Counter32, + iscsiInstSsnFormatErrors Counter32 +} + +iscsiInstSsnDigestErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of sessions that were failed due to receipt of + a PDU containing header or data digest errors. If this + counter has suffered a discontinuity, the time of the last + discontinuity is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.7, Digest Errors" +::= { iscsiInstanceSsnErrorStatsEntry 1 } + +iscsiInstSsnCxnTimeoutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of sessions that were failed due to a sequence + exceeding a time limit. If this counter has suffered a + discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.4, Connection Timeout Management" +::= { iscsiInstanceSsnErrorStatsEntry 2 } + +iscsiInstSsnFormatErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The count of sessions that were failed due to receipt of + a PDU that contained a format error. If this counter has + suffered a discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.6, Format Errors" +::= { iscsiInstanceSsnErrorStatsEntry 3 } + +--********************************************************************** + +iscsiPortal OBJECT IDENTIFIER ::= { iscsiObjects 2 } + +-- Portal Attributes Table + +iscsiPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport endpoints (using TCP or another transport + protocol) used by this iSCSI instance. An iSCSI instance may + use a portal to listen for incoming connections to its targets, + to initiate connections to other targets, or both." +::= { iscsiPortal 1 } + +iscsiPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance." + INDEX { iscsiInstIndex, iscsiPortalIndex } +::= { iscsiPortalAttributesTable 1 } + +IscsiPortalAttributesEntry ::= SEQUENCE { + iscsiPortalIndex Unsigned32, + iscsiPortalRowStatus RowStatus, + iscsiPortalRoles BITS, + iscsiPortalAddrType InetAddressType, + iscsiPortalAddr InetAddress, + iscsiPortalProtocol IscsiTransportProtocol, + iscsiPortalMaxRecvDataSegLength Unsigned32, + iscsiPortalPrimaryHdrDigest IscsiDigestMethod, + iscsiPortalPrimaryDataDigest IscsiDigestMethod, + iscsiPortalSecondaryHdrDigest IscsiDigestMethod, + iscsiPortalSecondaryDataDigest IscsiDigestMethod, + + + + iscsiPortalRecvMarker TruthValue, + iscsiPortalStorageType StorageType +} + +iscsiPortalIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + transport endpoint within this iSCSI instance. This index + value must not be modified or reused by an agent unless a + reboot has occurred. An agent should attempt to keep this + value persistent across reboots." +::= { iscsiPortalAttributesEntry 1 } + +iscsiPortalRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus. + + Note that creating a row in this table will typically + cause the agent to create one or more rows in + iscsiTgtPortalAttributesTable and/or + iscsiIntrPortalAttributesTable." +::= { iscsiPortalAttributesEntry 2 } + +iscsiPortalRoles OBJECT-TYPE + SYNTAX BITS { + targetTypePortal(0), + initiatorTypePortal(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A portal can operate in one or both of two roles: + as a target portal and/or an initiator portal. If + the portal will operate in both roles, both bits + must be set. + + This object will define a corresponding row that + + + + will exist or must be created in the + iscsiTgtPortalAttributesTable, the + iscsiIntrPortalAttributesTable or both. If the + targetTypePortal bit is set, one or more corresponding + iscsiTgtPortalAttributesEntry rows will be found or + created. If the initiatorTypePortal bit is set, + one or more corresponding iscsiIntrPortalAttributesEntry + rows will be found or created. If both bits are set, one + or more corresponding rows will be found or created in + one of the above tables." +::= { iscsiPortalAttributesEntry 3 } + +iscsiPortalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiPortalAddr." + DEFVAL { ipv4 } +::= { iscsiPortalAttributesEntry 4 } + +iscsiPortalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The portal's Internet Network Address, of the type + specified by the object iscsiPortalAddrType. If + iscsiPortalAddrType has the value 'dns', this address + gets resolved to an IP address whenever a new iSCSI + connection is established using this portal." +::= { iscsiPortalAttributesEntry 5 } + +iscsiPortalProtocol OBJECT-TYPE + SYNTAX IscsiTransportProtocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The portal's transport protocol." + DEFVAL { 6 } -- TCP +::= { iscsiPortalAttributesEntry 6 } + +iscsiPortalMaxRecvDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The maximum PDU length this portal can receive. + This may be constrained by hardware characteristics + and individual implementations may choose not to + allow this object to be changed." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" + DEFVAL { 8192 } +::= { iscsiPortalAttributesEntry 7 } + +iscsiPortalPrimaryHdrDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preferred header digest for this portal." + DEFVAL { crc32c } +::= { iscsiPortalAttributesEntry 8 } + +iscsiPortalPrimaryDataDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preferred data digest method for this portal." + DEFVAL { crc32c } +::= { iscsiPortalAttributesEntry 9 } + +iscsiPortalSecondaryHdrDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate header digest preference for this portal." + DEFVAL { noDigest } +::= { iscsiPortalAttributesEntry 10 } + +iscsiPortalSecondaryDataDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate data digest preference for this portal." + DEFVAL { noDigest } +::= { iscsiPortalAttributesEntry 11 } + +iscsiPortalRecvMarker OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether or not this portal will + request markers in its incoming data stream." + REFERENCE + "RFC 3720, Appendix A." + DEFVAL { false } +::= { iscsiPortalAttributesEntry 12 } + +iscsiPortalStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { iscsiPortalAttributesEntry 13 } + +--********************************************************************** +iscsiTargetPortal OBJECT IDENTIFIER ::= { iscsiObjects 3 } + +-- Target Portal Attributes Table + +iscsiTgtPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTgtPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport endpoints (using TCP or another transport + protocol) on which this iSCSI instance listens for incoming + connections to its targets." +::= { iscsiTargetPortal 1 } + +iscsiTgtPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiTgtPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance that is used to listen for + incoming connections to local targets. One or more rows in + this table is populated by the agent for each + + + + iscsiPortalAttributesEntry row that has the bit + targetTypePortal set in its iscsiPortalRoles column." + INDEX { iscsiInstIndex, iscsiPortalIndex, + iscsiTgtPortalNodeIndexOrZero } +::= { iscsiTgtPortalAttributesTable 1 } + +IscsiTgtPortalAttributesEntry ::= SEQUENCE { + iscsiTgtPortalNodeIndexOrZero Unsigned32, + iscsiTgtPortalPort InetPortNumber, + iscsiTgtPortalTag Unsigned32 +} + +iscsiTgtPortalNodeIndexOrZero OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. + + For implementations where each {portal, node} tuple + can have a different portal tag, this value will + map to the iscsiNodeIndex. + + For implementations where the portal tag is the + same for a given portal regardless of which node + is using the portal, the value 0 (zero) is used." +::= { iscsiTgtPortalAttributesEntry 1 } + +iscsiTgtPortalPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's transport protocol port number on which the + portal listens for incoming iSCSI connections when the + portal is used as a target portal. This object's storage + type is specified in iscsiPortalStorageType." +::= { iscsiTgtPortalAttributesEntry 2 } + +iscsiTgtPortalTag OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's aggregation tag when the portal is used as + a target portal. Multiple-connection sessions may + + + + be aggregated over portals sharing an identical + aggregation tag. This object's storage type is + specified in iscsiPortalStorageType." + REFERENCE + "RFC 3720, Section 3.4.1, iSCSI Architectural Model" +::= { iscsiTgtPortalAttributesEntry 3 } + +--********************************************************************** + +iscsiInitiatorPortal OBJECT IDENTIFIER ::= { iscsiObjects 4 } + +-- Initiator Portal Attributes Table + +iscsiIntrPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiIntrPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Internet Network Addresses (using TCP or another + transport protocol) from which this iSCSI instance may + initiate connections to other targets." +::= { iscsiInitiatorPortal 1 } + +iscsiIntrPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiIntrPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance that is used to initiate + connections to iSCSI targets. One or more rows in + this table is populated by the agent for each + iscsiPortalAttributesEntry row that has the bit + initiatorTypePortal set in its iscsiPortalRoles column." + INDEX { iscsiInstIndex, iscsiPortalIndex, + iscsiIntrPortalNodeIndexOrZero } +::= { iscsiIntrPortalAttributesTable 1 } + +IscsiIntrPortalAttributesEntry ::= SEQUENCE { + iscsiIntrPortalNodeIndexOrZero Unsigned32, + iscsiIntrPortalTag Unsigned32 +} + +iscsiIntrPortalNodeIndexOrZero OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. + + For implementations where each {portal, node} tuple + can have a different portal tag, this value will + map to the iscsiNodeIndex. + + For implementations where the portal tag is the + same for a given portal regardless of which node + is using the portal, the value 0 (zero) is used." +::= { iscsiIntrPortalAttributesEntry 1 } + +iscsiIntrPortalTag OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's aggregation tag when the portal is used as + an initiator portal. Multiple-connection sessions may + be aggregated over portals sharing an identical + aggregation tag. This object's storage type is + specified in iscsiPortalStorageType." + REFERENCE + "RFC 3720, Section 3.4.1, iSCSI Architectural Model" +::= { iscsiIntrPortalAttributesEntry 2 } + +--********************************************************************** + +iscsiNode OBJECT IDENTIFIER ::= { iscsiObjects 5 } + +-- Node Attributes Table + +iscsiNodeAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiNodeAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes belonging to each iSCSI instance + present on the local system. An iSCSI node can act as + an initiator, a target, or both." +::= { iscsiNode 1 } + +iscsiNodeAttributesEntry OBJECT-TYPE + SYNTAX IscsiNodeAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry (row) containing management information applicable + to a particular iSCSI node." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiNodeAttributesTable 1 } + +IscsiNodeAttributesEntry ::= SEQUENCE { + iscsiNodeIndex Unsigned32, + iscsiNodeName IscsiName, + iscsiNodeAlias SnmpAdminString, + iscsiNodeRoles BITS, + iscsiNodeTransportType RowPointer, + iscsiNodeInitialR2T TruthValue, + iscsiNodeImmediateData TruthValue, + iscsiNodeMaxOutstandingR2T Unsigned32, + iscsiNodeFirstBurstLength Unsigned32, + iscsiNodeMaxBurstLength Unsigned32, + iscsiNodeMaxConnections Unsigned32, + iscsiNodeDataSequenceInOrder TruthValue, + iscsiNodeDataPDUInOrder TruthValue, + iscsiNodeDefaultTime2Wait Unsigned32, + iscsiNodeDefaultTime2Retain Unsigned32, + iscsiNodeErrorRecoveryLevel Unsigned32, + iscsiNodeDiscontinuityTime TimeStamp, + iscsiNodeStorageType StorageType +} + +iscsiNodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + node within an iSCSI instance. This index value must not be + modified or reused by an agent unless a reboot has occurred. + An agent should attempt to keep this value persistent across + reboots." +::= { iscsiNodeAttributesEntry 1 } + +iscsiNodeName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This node's iSCSI name, which is independent of the location + of the node, and can be resolved into a set of addresses + through various discovery services." +::= { iscsiNodeAttributesEntry 2 } + + + + +iscsiNodeAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A character string that is a human-readable name or + description of the iSCSI node. If configured, this alias + may be communicated to the initiator or target node at + the remote end of the connection during a Login Request + or Response message. This string is not used as an + identifier, but can be displayed by the system's user + interface in a list of initiators and/or targets to + which it is connected. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.6, TargetAlias, 12.7, InitiatorAlias" +::= { iscsiNodeAttributesEntry 3 } + +iscsiNodeRoles OBJECT-TYPE + SYNTAX BITS { + targetTypeNode(0), + initiatorTypeNode(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A node can operate in one or both of two roles: + a target role and/or an initiator role. If the node + will operate in both roles, both bits must be set. + + This object will also define the corresponding rows that + will exist in the iscsiTargetAttributesTable, the + iscsiInitiatorAttributesTable or both. If the + targetTypeNode bit is set, there will be a corresponding + iscsiTargetAttributesEntry. If the initiatorTypeNode bit + is set, there will be a corresponding + iscsiInitiatorAttributesEntry. If both bits are set, + there will be a corresponding iscsiTgtPortalAttributesEntry + and iscsiPortalAttributesEntry." +::= { iscsiNodeAttributesEntry 4 } + +iscsiNodeTransportType OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the appropriate + + + + table for this SCSI transport, thereby allowing management + stations to locate the SCSI-level device that is represented + by this iscsiNode. For example, it will usually point to the + corresponding scsiTrnspt object in the SCSI MIB module. + + If no corresponding row exists, the value 0.0 must be + used to indicate this." + REFERENCE + "SCSI-MIB" +::= { iscsiNodeAttributesEntry 5 } + +iscsiNodeInitialR2T OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the InitialR2T preference for this + node: + true = YES, + false = will try to negotiate NO, will accept YES " + REFERENCE + "RFC 3720, Section 12.10, InitialR2T" +::= { iscsiNodeAttributesEntry 6 } + +iscsiNodeImmediateData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates ImmediateData preference for this + node: + true = YES (but will accept NO), + false = NO " + REFERENCE + "RFC 3720, Section 12.11, ImmediateData" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 7 } + +iscsiNodeMaxOutstandingR2T OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "R2Ts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum number of outstanding requests-to-transmit (R2Ts) + allowed per iSCSI task." + REFERENCE + "RFC 3720, Section 12.17, MaxOutstandingR2T" + + + + DEFVAL { 1 } +::= { iscsiNodeAttributesEntry 8 } + +iscsiNodeFirstBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum length (bytes) supported for unsolicited data + to/from this node." + REFERENCE + "RFC 3720, Section 12.14, FirstBurstLength" + DEFVAL { 65536 } +::= { iscsiNodeAttributesEntry 9 } + +iscsiNodeMaxBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of bytes that can be sent within + a single sequence of Data-In or Data-Out PDUs." + REFERENCE + "RFC 3720, Section 12.13, MaxBurstLength" + DEFVAL { 262144 } +::= { iscsiNodeAttributesEntry 10 } + +iscsiNodeMaxConnections OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "connections" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of connections allowed in each + session to and/or from this node." + REFERENCE + "RFC 3720, Section 12.2, MaxConnections" + DEFVAL { 1 } +::= { iscsiNodeAttributesEntry 11 } + +iscsiNodeDataSequenceInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DataSequenceInOrder preference of this node. + + + + False (=No) indicates that iSCSI data PDU sequences may + be transferred in any order. True (=Yes) indicates that + data PDU sequences must be transferred using + continuously increasing offsets, except during + error recovery." + REFERENCE + "RFC 3720, Section 12.19, DataSequenceInOrder" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 12 } + +iscsiNodeDataPDUInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DataPDUInOrder preference of this node. + False (=No) indicates that iSCSI data PDUs within sequences + may be in any order. True (=Yes) indicates that data PDUs + within sequences must be at continuously increasing + addresses, with no gaps or overlay between PDUs." + REFERENCE + "RFC 3720, Section 12.18, DataPDUInOrder" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 13 } + +iscsiNodeDefaultTime2Wait OBJECT-TYPE + SYNTAX Unsigned32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DefaultTime2Wait preference of this node. This is the + minimum time, in seconds, to wait before attempting an + explicit/implicit logout or active iSCSI task reassignment + after an unexpected connection termination or a connection + reset." + REFERENCE + "RFC 3720, Section 12.15, DefaultTime2Wait" + DEFVAL { 2 } +::= { iscsiNodeAttributesEntry 14 } + +iscsiNodeDefaultTime2Retain OBJECT-TYPE + SYNTAX Unsigned32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DefaultTime2Retain preference of this node. This is + + + + the maximum time, in seconds after an initial wait + (Time2Wait), before which an active iSCSI task reassignment + is still possible after an unexpected connection termination + or a connection reset." + REFERENCE + "RFC 3720, Section 12.16, DefaultTime2Retain" + DEFVAL { 20 } +::= { iscsiNodeAttributesEntry 15 } + +iscsiNodeErrorRecoveryLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ErrorRecoveryLevel preference of this node. + Currently, only 0-2 are valid. + + This object is designed to accommodate future error recovery + levels. + + Higher error recovery levels imply support in addition to + support for the lower error level functions. In other words, + error level 2 implies support for levels 0-1, since those + functions are subsets of error level 2." + REFERENCE + "RFC 3720, Section 12.20, ErrorRecoveryLevel" + DEFVAL { 0 } +::= { iscsiNodeAttributesEntry 16 } + +iscsiNodeDiscontinuityTime 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 node's counters + suffered a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." +::= { iscsiNodeAttributesEntry 17 } + +iscsiNodeStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The storage type for all read-write objects within this + row. Rows in this table are always created via an + external process, and may have a storage type of readOnly + or permanent. Conceptual rows having the value 'permanent' + need not allow write access to any columnar objects in + the row. + + If this object has the value 'volatile', modifications + to read-write objects in this row are not persistent + across reboots. If this object has the value + 'nonVolatile', modifications to objects in this row + are persistent. + + An implementation may choose to allow this object + to be set to either 'nonVolatile' or 'volatile', + allowing the management application to choose this + behavior." + DEFVAL { volatile } +::= { iscsiNodeAttributesEntry 18 } + +--********************************************************************** + +iscsiTarget OBJECT IDENTIFIER ::= { iscsiObjects 6 } + +-- Target Attributes Table + +iscsiTargetAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes that can take on a target role, + belonging to each iSCSI instance present on the local + system." +::= { iscsiTarget 1 } + +iscsiTargetAttributesEntry OBJECT-TYPE + SYNTAX IscsiTargetAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular node that can take on a target role." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiTargetAttributesTable 1 } + +IscsiTargetAttributesEntry ::= SEQUENCE { + iscsiTgtLoginFailures Counter32, + + + + iscsiTgtLastFailureTime TimeStamp, + iscsiTgtLastFailureType AutonomousType, + iscsiTgtLastIntrFailureName IscsiName, + iscsiTgtLastIntrFailureAddrType InetAddressType, + iscsiTgtLastIntrFailureAddr InetAddress +} + +iscsiTgtLoginFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed login attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a login attempt to this + local target has failed. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetAttributesEntry 1 } + +iscsiTgtLastFailureTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the most recent failure of a login attempt + to this target. A value of zero indicates that no such + failures have occurred since the last system boot." +::= { iscsiTargetAttributesEntry 2 } + +iscsiTgtLastFailureType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the most recent failure of a login attempt + to this target, represented as the OID of the counter + object in iscsiTargetLoginStatsTable for which the + relevant instance was incremented. A value of 0.0 + indicates a type that is not represented by any of + the counters in iscsiTargetLoginStatsTable." +::= { iscsiTargetAttributesEntry 3 } + +iscsiTgtLastIntrFailureName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The iSCSI name of the initiator that failed the last + login attempt." +::= { iscsiTargetAttributesEntry 4 } + +iscsiTgtLastIntrFailureAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiTgtLastIntrFailureAddr. + The value 'dns' is not allowed." +::= { iscsiTargetAttributesEntry 5 } + +iscsiTgtLastIntrFailureAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An Internet Network Address, of the type specified by + the object iscsiTgtLastIntrFailureAddrType, giving the + host address of the initiator that failed the last login + attempt." +::= { iscsiTargetAttributesEntry 6 } + +-- Target Login Stats Table + +iscsiTargetLoginStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of counters that keep a record of the results + of initiators' login attempts to this target." +::= { iscsiTarget 2 } + +iscsiTargetLoginStatsEntry OBJECT-TYPE + SYNTAX IscsiTargetLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters for each result of + a login attempt to this target." + AUGMENTS { iscsiTargetAttributesEntry } +::= { iscsiTargetLoginStatsTable 1 } + +IscsiTargetLoginStatsEntry ::= SEQUENCE { + + + + iscsiTgtLoginAccepts Counter32, + iscsiTgtLoginOtherFails Counter32, + iscsiTgtLoginRedirects Counter32, + iscsiTgtLoginAuthorizeFails Counter32, + iscsiTgtLoginAuthenticateFails Counter32, + iscsiTgtLoginNegotiateFails Counter32 +} + +iscsiTgtLoginAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "successful logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status + 0x0000, Accept Login, transmitted by this + target. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 1 } + +iscsiTgtLoginOtherFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Login Response PDUs that were transmitted + by this target and that were not counted by any other + object in the row. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 2 } + +iscsiTgtLoginRedirects OBJECT-TYPE + SYNTAX Counter32 + UNITS "redirected logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x01, + Redirection, transmitted by this target. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + + + + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 3 } + +iscsiTgtLoginAuthorizeFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status 0x0202, + Forbidden Target, transmitted by this target. + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 4 } + +iscsiTgtLoginAuthenticateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status 0x0201, + Authentication Failed, transmitted by this target. + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 5 } + +iscsiTgtLoginNegotiateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a target has effectively refused a + login because the parameter negotiation failed. + + + + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." +::= { iscsiTargetLoginStatsEntry 6 } + +-- Target Logout Stats Table + +iscsiTargetLogoutStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "When a target receives a Logout command, it responds + with a Logout Response that carries a status code. + This table contains counters for both normal and + abnormal logout requests received by this target." +::= { iscsiTarget 3 } + +iscsiTargetLogoutStatsEntry OBJECT-TYPE + SYNTAX IscsiTargetLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of Logout Response + PDUs that were received by this target." + AUGMENTS { iscsiTargetAttributesEntry } +::= { iscsiTargetLogoutStatsTable 1 } + +IscsiTargetLogoutStatsEntry ::= SEQUENCE { + iscsiTgtLogoutNormals Counter32, + iscsiTgtLogoutOthers Counter32 +} + +iscsiTgtLogoutNormals OBJECT-TYPE + SYNTAX Counter32 + UNITS "normal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs received by this target, + with reason code 0 (closes the session). + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiTargetLogoutStatsEntry 1 } + + + + +iscsiTgtLogoutOthers OBJECT-TYPE + SYNTAX Counter32 + UNITS "abnormal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs received by this target, + with any reason code other than 0. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiTargetLogoutStatsEntry 2 } + +--********************************************************************** + +iscsiTgtAuthorization OBJECT IDENTIFIER ::= { iscsiObjects 7 } + +-- Target Authorization Attributes Table + +iscsiTgtAuthAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTgtAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of initiator identities that are authorized to + access each target node within each iSCSI instance + present on the local system." +::= { iscsiTgtAuthorization 1 } + +iscsiTgtAuthAttributesEntry OBJECT-TYPE + SYNTAX IscsiTgtAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular target node's authorized + initiator identity." + INDEX { iscsiInstIndex, iscsiNodeIndex, iscsiTgtAuthIndex } +::= { iscsiTgtAuthAttributesTable 1 } + +IscsiTgtAuthAttributesEntry ::= SEQUENCE { + iscsiTgtAuthIndex Unsigned32, + iscsiTgtAuthRowStatus RowStatus, + iscsiTgtAuthIdentity RowPointer, + iscsiTgtAuthStorageType StorageType +} + + + + +iscsiTgtAuthIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + target's authorized initiator identity within an iSCSI + instance present on the local system. This index value must + not be modified or reused by an agent unless a reboot has + occurred. An agent should attempt to keep this value + persistent across reboots." +::= { iscsiTgtAuthAttributesEntry 1 } + +iscsiTgtAuthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus." +::= { iscsiTgtAuthAttributesEntry 2 } + +iscsiTgtAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the corresponding user entry in the IPS-AUTH + MIB module that will be allowed to access this iSCSI target." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiTgtAuthAttributesEntry 3 } + +iscsiTgtAuthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + + + + DEFVAL { nonVolatile } +::= { iscsiTgtAuthAttributesEntry 4 } + +--********************************************************************** + +iscsiInitiator OBJECT IDENTIFIER ::= { iscsiObjects 8 } + +-- Initiator Attributes Table + +iscsiInitiatorAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes that can take on an initiator + role, belonging to each iSCSI instance present on + the local system." +::= { iscsiInitiator 1 } + +iscsiInitiatorAttributesEntry OBJECT-TYPE + SYNTAX IscsiInitiatorAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular iSCSI node that has + initiator capabilities." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiInitiatorAttributesTable 1 } + +IscsiInitiatorAttributesEntry ::= SEQUENCE { + iscsiIntrLoginFailures Counter32, + iscsiIntrLastFailureTime TimeStamp, + iscsiIntrLastFailureType AutonomousType, + iscsiIntrLastTgtFailureName IscsiName, + iscsiIntrLastTgtFailureAddrType InetAddressType, + iscsiIntrLastTgtFailureAddr InetAddress +} + +iscsiIntrLoginFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a login attempt from + this local initiator has failed. + If this counter has suffered a discontinuity, the time of the + + + + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorAttributesEntry 1 } + +iscsiIntrLastFailureTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the most recent failure of a login attempt + from this initiator. A value of zero indicates that no such + failures have occurred since the last system boot." +::= { iscsiInitiatorAttributesEntry 2 } + +iscsiIntrLastFailureType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the most recent failure of a login attempt + from this initiator, represented as the OID of the counter + object in iscsiInitiatorLoginStatsTable for which the + relevant instance was incremented. A value of 0.0 + indicates a type that is not represented by any of + the counters in iscsiInitiatorLoginStatsTable." +::= { iscsiInitiatorAttributesEntry 3 } + +iscsiIntrLastTgtFailureName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string giving the name of the target that failed + the last login attempt." +::= { iscsiInitiatorAttributesEntry 4 } + +iscsiIntrLastTgtFailureAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiIntrLastTgtFailureAddr. + The value 'dns' is not allowed." +::= { iscsiInitiatorAttributesEntry 5 } + +iscsiIntrLastTgtFailureAddr OBJECT-TYPE + + + + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An Internet Network Address, of the type specified by the + object iscsiIntrLastTgtFailureAddrType, giving the host + address of the target that failed the last login attempt." +::= { iscsiInitiatorAttributesEntry 6 } + +-- Initiator Login Stats Table + +iscsiInitiatorLoginStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of counters which keep track of the results of + this initiator's login attempts." +::= { iscsiInitiator 2 } + +iscsiInitiatorLoginStatsEntry OBJECT-TYPE + SYNTAX IscsiInitiatorLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of each result + of this initiator's login attempts." + AUGMENTS { iscsiInitiatorAttributesEntry } +::= { iscsiInitiatorLoginStatsTable 1 } + +IscsiInitiatorLoginStatsEntry ::= SEQUENCE { + iscsiIntrLoginAcceptRsps Counter32, + iscsiIntrLoginOtherFailRsps Counter32, + iscsiIntrLoginRedirectRsps Counter32, + iscsiIntrLoginAuthFailRsps Counter32, + iscsiIntrLoginAuthenticateFails Counter32, + iscsiIntrLoginNegotiateFails Counter32 +} + +iscsiIntrLoginAcceptRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "successful logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status + 0x0000, Accept Login, received by this initiator. + If this counter has suffered a discontinuity, the time of the + + + + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 1 } + +iscsiIntrLoginOtherFailRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs received by this + initiator with any status code not counted in the + objects below. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 2 } + +iscsiIntrLoginRedirectRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x01, + Redirection, received by this initiator. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 3 } + +iscsiIntrLoginAuthFailRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x201, + Authentication Failed, received by this initiator. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 4 } + + + + +iscsiIntrLoginAuthenticateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the initiator has aborted a + login because the target could not be authenticated. + + No response is generated. + + If this counter is incremented, an iscsiIntrLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 5 } + +iscsiIntrLoginNegotiateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the initiator has aborted a + login because parameter negotiation with the target + failed. + + No response is generated. + + If this counter is incremented, an iscsiIntrLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.10, Negotiation Failures" +::= { iscsiInitiatorLoginStatsEntry 6 } + +-- Initiator Logout Stats Table + +iscsiInitiatorLogoutStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "When an initiator attempts to send a Logout command, the target + responds with a Logout Response that carries a status code. + + + + This table contains a list of counters of Logout Response + PDUs of each status code that was received by each + initiator belonging to this iSCSI instance present on this + system." +::= { iscsiInitiator 3 } + +iscsiInitiatorLogoutStatsEntry OBJECT-TYPE + SYNTAX IscsiInitiatorLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of Logout Response + PDUs of each status code that was generated by this + initiator." + AUGMENTS { iscsiInitiatorAttributesEntry } +::= { iscsiInitiatorLogoutStatsTable 1 } + +IscsiInitiatorLogoutStatsEntry ::= SEQUENCE { + iscsiIntrLogoutNormals Counter32, + iscsiIntrLogoutOthers Counter32 +} + +iscsiIntrLogoutNormals OBJECT-TYPE + SYNTAX Counter32 + UNITS "normal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs generated by this initiator + with reason code 0 (closes the session). + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiInitiatorLogoutStatsEntry 1 } + +iscsiIntrLogoutOthers OBJECT-TYPE + SYNTAX Counter32 + UNITS "abnormal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs generated by this initiator + with any status code other than 0. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" + + + +::= { iscsiInitiatorLogoutStatsEntry 2 } + +--********************************************************************** + +iscsiIntrAuthorization OBJECT IDENTIFIER ::= { iscsiObjects 9 } + +-- Initiator Authorization Attributes Table + +iscsiIntrAuthAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiIntrAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of target identities that each initiator + on the local system may access." +::= { iscsiIntrAuthorization 1 } + +iscsiIntrAuthAttributesEntry OBJECT-TYPE + SYNTAX IscsiIntrAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular initiator node's authorized target identity." + INDEX { iscsiInstIndex, iscsiNodeIndex, iscsiIntrAuthIndex } +::= { iscsiIntrAuthAttributesTable 1 } + +IscsiIntrAuthAttributesEntry ::= SEQUENCE { + iscsiIntrAuthIndex Unsigned32, + iscsiIntrAuthRowStatus RowStatus, + iscsiIntrAuthIdentity RowPointer, + iscsiIntrAuthStorageType StorageType +} + +iscsiIntrAuthIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular initiator node's authorized target + identity within an iSCSI instance present on the + local system. This index value must not be modified + or reused by an agent unless a reboot has occurred. + An agent should attempt to keep this value persistent + across reboots." +::= { iscsiIntrAuthAttributesEntry 1 } + + + + +iscsiIntrAuthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus." +::= { iscsiIntrAuthAttributesEntry 2 } + +iscsiIntrAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the corresponding user entry in the IPS-AUTH + MIB module to which this initiator node should attempt to + establish an iSCSI session." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiIntrAuthAttributesEntry 3 } + +iscsiIntrAuthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { iscsiIntrAuthAttributesEntry 4 } + +--********************************************************************** + +iscsiSession OBJECT IDENTIFIER ::= { iscsiObjects 10 } + +-- Session Attributes Table + +iscsiSessionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A list of sessions belonging to each iSCSI instance + present on the system." +::= { iscsiSession 1 } + +iscsiSessionAttributesEntry OBJECT-TYPE + SYNTAX IscsiSessionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular session. + + If this session is a discovery session that is not attached + to any particular node, the iscsiSsnNodeIndex will be zero. + Otherwise, the iscsiSsnNodeIndex will have the same value as + iscsiNodeIndex." + INDEX { iscsiInstIndex, iscsiSsnNodeIndex, iscsiSsnIndex } +::= { iscsiSessionAttributesTable 1 } + +IscsiSessionAttributesEntry ::= SEQUENCE { + iscsiSsnNodeIndex Unsigned32, + iscsiSsnIndex Unsigned32, + iscsiSsnDirection INTEGER, + iscsiSsnInitiatorName IscsiName, + iscsiSsnTargetName IscsiName, + iscsiSsnTSIH Unsigned32, + iscsiSsnISID OCTET STRING, + iscsiSsnInitiatorAlias SnmpAdminString, + iscsiSsnTargetAlias SnmpAdminString, + iscsiSsnInitialR2T TruthValue, + iscsiSsnImmediateData TruthValue, + iscsiSsnType INTEGER, + iscsiSsnMaxOutstandingR2T Unsigned32, + iscsiSsnFirstBurstLength Unsigned32, + iscsiSsnMaxBurstLength Unsigned32, + iscsiSsnConnectionNumber Gauge32, + iscsiSsnAuthIdentity RowPointer, + iscsiSsnDataSequenceInOrder TruthValue, + iscsiSsnDataPDUInOrder TruthValue, + iscsiSsnErrorRecoveryLevel Unsigned32, + iscsiSsnDiscontinuityTime TimeStamp +} + +iscsiSsnNodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. For normal, non-discovery + sessions, this value will map to the iscsiNodeIndex. + For discovery sessions that do not have a node + associated, the value 0 (zero) is used." +::= { iscsiSessionAttributesEntry 1 } + +iscsiSsnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular session within an iSCSI instance present + on the local system. An agent should attempt to + not reuse index values unless a reboot has occurred. + iSCSI sessions are destroyed during a reboot; rows + in this table are not persistent across reboots." +::= { iscsiSessionAttributesEntry 2 } + +iscsiSsnDirection OBJECT-TYPE + SYNTAX INTEGER { + inboundSession(1), + outboundSession(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Direction of iSCSI session: + inboundSession - session is established from an external + initiator to a target within this iSCSI + instance. + outboundSession - session is established from an initiator + within this iSCSI instance to an external + target." +::= { iscsiSessionAttributesEntry 3 } + +iscsiSsnInitiatorName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If iscsiSsnDirection is Inbound, this object is a + UTF-8 string that will contain the name of the remote + initiator. If this session is a discovery session that + + + + does not specify a particular initiator, this object + will contain a zero-length string. + + If iscsiSsnDirection is Outbound, this object will + contain a zero-length string." +::= { iscsiSessionAttributesEntry 4 } + +iscsiSsnTargetName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If iscsiSsnDirection is Outbound, this object is a + UTF-8 string that will contain the name of the remote + target. If this session is a discovery session that + does not specify a particular target, this object will + contain a zero-length string. + + If iscsiSsnDirection is Inbound, this object will + contain a zero-length string." +::= { iscsiSessionAttributesEntry 5 } + +iscsiSsnTSIH OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The target-defined identification handle for this session." + REFERENCE + "RFC 3720, Section 10.12.6, TSIH" +::= { iscsiSessionAttributesEntry 6 } + +iscsiSsnISID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initiator-defined portion of the iSCSI Session ID." + REFERENCE + "RFC 3720, Section 10.12.5, ISID" +::= { iscsiSessionAttributesEntry 7 } + +iscsiSsnInitiatorAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string that gives the alias communicated by the + + + + initiator end of the session during the login phase. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.7, InitiatorAlias" +::= { iscsiSessionAttributesEntry 8 } + +iscsiSsnTargetAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string that gives the alias communicated by the + target end of the session during the login phase. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.6, TargetAlias" +::= { iscsiSessionAttributesEntry 9 } + +iscsiSsnInitialR2T OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If set to true, indicates that the initiator must wait + for an R2T before sending to the target. If set to false, + the initiator may send data immediately, within limits set + by iscsiSsnFirstBurstLength and the expected data transfer + length of the request." + REFERENCE + "RFC 3720, Section 12.10, InitialR2T" +::= { iscsiSessionAttributesEntry 10 } + +iscsiSsnImmediateData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the initiator and target have agreed to + support immediate data on this session." + REFERENCE + "RFC 3720, Section 12.11, ImmediateData" +::= { iscsiSessionAttributesEntry 11 } + +iscsiSsnType OBJECT-TYPE + SYNTAX INTEGER { + normalSession(1), + + + + discoverySession(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of iSCSI session: + normalSession - session is a normal iSCSI session + discoverySession - session is being used only for discovery." + REFERENCE + "RFC 3720, Section 12.21, SessionType" +::= { iscsiSessionAttributesEntry 12 } + +iscsiSsnMaxOutstandingR2T OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "R2Ts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of outstanding requests-to-transmit + (R2Ts) per iSCSI task within this session." + REFERENCE + "RFC 3720, Section 12.17, MaxOutstandingR2T" +::= { iscsiSessionAttributesEntry 13 } + +iscsiSsnFirstBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length supported for unsolicited data sent + within this session." + REFERENCE + "RFC 3720, Section 12.14, FirstBurstLength" +::= { iscsiSessionAttributesEntry 14 } + +iscsiSsnMaxBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of bytes that can be sent within + a single sequence of Data-In or Data-Out PDUs." + REFERENCE + "RFC 3720, Section 12.13, MaxBurstLength" +::= { iscsiSessionAttributesEntry 15 } + + + + +iscsiSsnConnectionNumber OBJECT-TYPE + SYNTAX Gauge32 (1..65535) + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transport protocol connections that currently + belong to this session." +::= { iscsiSessionAttributesEntry 16 } + +iscsiSsnAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a pointer to a row in the + IPS-AUTH MIB module that identifies the authentication + method being used on this session, as communicated + during the login phase." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiSessionAttributesEntry 17 } + + iscsiSsnDataSequenceInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "False indicates that iSCSI data PDU sequences may + be transferred in any order. True indicates that + data PDU sequences must be transferred using + continuously increasing offsets, except during + error recovery." + REFERENCE + "RFC 3720, Section 12.19, DataSequenceInOrder" +::= { iscsiSessionAttributesEntry 18 } + +iscsiSsnDataPDUInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "False indicates that iSCSI data PDUs within sequences + may be in any order. True indicates that data PDUs + within sequences must be at continuously increasing + addresses, with no gaps or overlay between PDUs. + + Default is true." + + + + REFERENCE + "RFC 3720, Section 12.18, DataPDUInOrder" +::= { iscsiSessionAttributesEntry 19 } + +iscsiSsnErrorRecoveryLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of error recovery negotiated between + the initiator and the target. Higher numbers + represent more detailed recovery schemes." + REFERENCE + "RFC 3720, Section 12.20, ErrorRecoveryLevel" +::= { iscsiSessionAttributesEntry 20 } + +iscsiSsnDiscontinuityTime 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 session's counters + suffered a discontinuity. + When a session is established, and this object is + created, it is initialized to the current value + of SysUpTime." +::= { iscsiSessionAttributesEntry 21 } + +-- Session Stats Table + +iscsiSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of general iSCSI traffic counters for each of the + sessions present on the system." +::= { iscsiSession 2 } + +iscsiSessionStatsEntry OBJECT-TYPE + SYNTAX IscsiSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing general iSCSI traffic counters + for a particular session." + AUGMENTS { iscsiSessionAttributesEntry } + + + +::= { iscsiSessionStatsTable 1 } + +IscsiSessionStatsEntry ::= SEQUENCE { + iscsiSsnCmdPDUs Counter32, + iscsiSsnRspPDUs Counter32, + iscsiSsnTxDataOctets Counter64, + iscsiSsnRxDataOctets Counter64, + iscsiSsnLCTxDataOctets Counter32, + iscsiSsnLCRxDataOctets Counter32 +} + +iscsiSsnCmdPDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Command PDUs transferred on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 1 } + +iscsiSsnRspPDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Response PDUs transferred on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 2 } + +iscsiSsnTxDataOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of data octets that were transmitted by + the local iSCSI node on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 3 } + +iscsiSsnRxDataOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of data octets that were received by + the local iSCSI node on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 4 } + +iscsiSsnLCTxDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Low Capacity shadow object of iscsiSsnTxDataOctets + for those systems that don't support Counter64. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 5 } + +iscsiSsnLCRxDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Low Capacity shadow object of iscsiSsnRxDataOctets + for those systems that don't support Counter64. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 6 } + +-- Session Connection Error Stats Table + +iscsiSessionCxnErrorStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionCxnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of error counters for each of the sessions + present on this system." +::= { iscsiSession 3 } + +iscsiSessionCxnErrorStatsEntry OBJECT-TYPE + SYNTAX IscsiSessionCxnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (row) containing error counters for + a particular session." + AUGMENTS { iscsiSessionAttributesEntry } +::= { iscsiSessionCxnErrorStatsTable 1 } + +IscsiSessionCxnErrorStatsEntry ::= SEQUENCE { + iscsiSsnCxnDigestErrors Counter32, + iscsiSsnCxnTimeoutErrors Counter32 +} + +iscsiSsnCxnDigestErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of PDUs that were received on the session and + contained header or data digest errors. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.7, Digest Errors" +::= { iscsiSessionCxnErrorStatsEntry 1 } + +iscsiSsnCxnTimeoutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of connections within this session + that have been terminated due to timeout. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.4, Connection Timeout Management" +::= { iscsiSessionCxnErrorStatsEntry 2 } + +--********************************************************************** + +iscsiConnection OBJECT IDENTIFIER ::= { iscsiObjects 11 } + +-- Connection Attributes Table + +iscsiConnectionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiConnectionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A list of connections belonging to each iSCSI instance + present on the system." +::= { iscsiConnection 1 } + +iscsiConnectionAttributesEntry OBJECT-TYPE + SYNTAX IscsiConnectionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular connection." + INDEX { iscsiInstIndex, iscsiSsnNodeIndex, iscsiSsnIndex, + iscsiCxnIndex } +::= { iscsiConnectionAttributesTable 1 } + +IscsiConnectionAttributesEntry ::= SEQUENCE { + iscsiCxnIndex Unsigned32, + iscsiCxnCid Unsigned32, + iscsiCxnState INTEGER, + iscsiCxnAddrType InetAddressType, + iscsiCxnLocalAddr InetAddress, + iscsiCxnProtocol IscsiTransportProtocol, + iscsiCxnLocalPort InetPortNumber, + iscsiCxnRemoteAddr InetAddress, + iscsiCxnRemotePort InetPortNumber, + iscsiCxnMaxRecvDataSegLength Unsigned32, + iscsiCxnMaxXmitDataSegLength Unsigned32, + iscsiCxnHeaderIntegrity IscsiDigestMethod, + iscsiCxnDataIntegrity IscsiDigestMethod, + iscsiCxnRecvMarker TruthValue, + iscsiCxnSendMarker TruthValue, + iscsiCxnVersionActive Unsigned32 +} + +iscsiCxnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular connection of a particular session within + an iSCSI instance present on the local system. An + agent should attempt to not reuse index values unless + a reboot has occurred. iSCSI connections are destroyed + during a reboot; rows in this table are not persistent + across reboots." + + + +::= { iscsiConnectionAttributesEntry 1 } + +iscsiCxnCid OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Connection ID for this connection." +::= { iscsiConnectionAttributesEntry 2 } + +iscsiCxnState OBJECT-TYPE + SYNTAX INTEGER { + login(1), + full(2), + logout(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of this connection, from an iSCSI negotiation + point of view. Here are the states: + + login - The transport protocol connection has been established, + but a valid iSCSI login response with the final bit set + has not been sent or received. + full - A valid iSCSI login response with the final bit set + has been sent or received. + logout - A valid iSCSI logout command has been sent or + received, but the transport protocol connection has + not yet been closed." +::= { iscsiConnectionAttributesEntry 3 } + +iscsiCxnAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Addresses contained in the + corresponding instances of iscsiCxnLocalAddr and + iscsiCxnRemoteAddr. + The value 'dns' is not allowed." +::= { iscsiConnectionAttributesEntry 4 } + +iscsiCxnLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The local Internet Network Address, of the type specified + by iscsiCxnAddrType, used by this connection." +::= { iscsiConnectionAttributesEntry 5 } + +iscsiCxnProtocol OBJECT-TYPE + SYNTAX IscsiTransportProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport protocol over which this connection is + running." +::= { iscsiConnectionAttributesEntry 6 } + +iscsiCxnLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local transport protocol port used by this connection. + This object cannot have the value zero, since it represents + an established connection." +::= { iscsiConnectionAttributesEntry 7 } + +iscsiCxnRemoteAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Internet Network Address, of the type specified + by iscsiCxnAddrType, used by this connection." +::= { iscsiConnectionAttributesEntry 8 } + +iscsiCxnRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote transport protocol port used by this connection. + This object cannot have the value zero, since it represents + an established connection." +::= { iscsiConnectionAttributesEntry 9 } + +iscsiCxnMaxRecvDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum data payload size supported for command + or data PDUs able to be received on this connection." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" +::= { iscsiConnectionAttributesEntry 10 } + +iscsiCxnMaxXmitDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum data payload size supported for command + or data PDUs to be sent on this connection." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" +::= { iscsiConnectionAttributesEntry 11 } + +iscsiCxnHeaderIntegrity OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the iSCSI header + digest scheme in use within this connection." +::= { iscsiConnectionAttributesEntry 12 } + +iscsiCxnDataIntegrity OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the iSCSI data + digest scheme in use within this connection." +::= { iscsiConnectionAttributesEntry 13 } + +iscsiCxnRecvMarker OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this connection + is receiving markers in its incoming data stream." + REFERENCE + "RFC 3720, Appendix A." +::= { iscsiConnectionAttributesEntry 14 } + +iscsiCxnSendMarker OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this connection + is inserting markers in its outgoing data stream." + REFERENCE + "RFC 3720, Appendix A." +::= { iscsiConnectionAttributesEntry 15 } + +iscsiCxnVersionActive OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active version number of the iSCSI specification negotiated + on this connection." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiConnectionAttributesEntry 16 } + +--********************************************************************** +-- Notifications + +iscsiTgtLoginFailure NOTIFICATION-TYPE + OBJECTS { + iscsiTgtLoginFailures, + iscsiTgtLastFailureType, + iscsiTgtLastIntrFailureName, + iscsiTgtLastIntrFailureAddrType, + iscsiTgtLastIntrFailureAddr + } + STATUS current + DESCRIPTION + "Sent when a login is failed by a target. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 1 } + +iscsiIntrLoginFailure NOTIFICATION-TYPE + OBJECTS { + iscsiIntrLoginFailures, + iscsiIntrLastFailureType, + iscsiIntrLastTgtFailureName, + iscsiIntrLastTgtFailureAddrType, + + + + iscsiIntrLastTgtFailureAddr + } + STATUS current + DESCRIPTION + "Sent when a login is failed by an initiator. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 2 } + +iscsiInstSessionFailure NOTIFICATION-TYPE + OBJECTS { + iscsiInstSsnFailures, + iscsiInstLastSsnFailureType, + iscsiInstLastSsnRmtNodeName + } + STATUS current + DESCRIPTION + "Sent when an active session is failed by either the initiator + or the target. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 3 } + +--********************************************************************** + +-- Conformance Statements + +iscsiCompliances OBJECT IDENTIFIER ::= { iscsiConformance 1 } +iscsiGroups OBJECT IDENTIFIER ::= { iscsiConformance 2 } + +iscsiInstanceAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiInstDescr, + iscsiInstVersionMin, + iscsiInstVersionMax, + iscsiInstVendorID, + iscsiInstVendorVersion, + iscsiInstPortalNumber, + iscsiInstNodeNumber, + iscsiInstSessionNumber, + iscsiInstSsnFailures, + iscsiInstLastSsnFailureType, + + + + iscsiInstLastSsnRmtNodeName, + iscsiInstDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about iSCSI + instances." +::= { iscsiGroups 1 } + +iscsiInstanceSsnErrorStatsGroup OBJECT-GROUP + OBJECTS { + iscsiInstSsnDigestErrors, + iscsiInstSsnCxnTimeoutErrors, + iscsiInstSsnFormatErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + errors that have caused a session failure for an + iSCSI instance." +::= { iscsiGroups 2 } + +iscsiPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiPortalRowStatus, + iscsiPortalStorageType, + iscsiPortalRoles, + iscsiPortalAddrType, + iscsiPortalAddr, + iscsiPortalProtocol, + iscsiPortalMaxRecvDataSegLength, + iscsiPortalPrimaryHdrDigest, + iscsiPortalPrimaryDataDigest, + iscsiPortalSecondaryHdrDigest, + iscsiPortalSecondaryDataDigest, + iscsiPortalRecvMarker + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the transport protocol endpoints of the local targets." +::= { iscsiGroups 3 } + +iscsiTgtPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiTgtPortalPort, + iscsiTgtPortalTag + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about + the transport protocol endpoints of the local targets." +::= { iscsiGroups 4 } + +iscsiIntrPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiIntrPortalTag + } + STATUS current + DESCRIPTION + "An object providing information about + the portal tags used by the local initiators." +::= { iscsiGroups 5 } + +iscsiNodeAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiNodeName, + iscsiNodeAlias, + iscsiNodeRoles, + iscsiNodeTransportType, + iscsiNodeInitialR2T, + iscsiNodeImmediateData, + iscsiNodeMaxOutstandingR2T, + iscsiNodeFirstBurstLength, + iscsiNodeMaxBurstLength, + iscsiNodeMaxConnections, + iscsiNodeDataSequenceInOrder, + iscsiNodeDataPDUInOrder, + iscsiNodeDefaultTime2Wait, + iscsiNodeDefaultTime2Retain, + iscsiNodeErrorRecoveryLevel, + iscsiNodeDiscontinuityTime, + iscsiNodeStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + local targets." +::= { iscsiGroups 6 } + +iscsiTargetAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLoginFailures, + iscsiTgtLastFailureTime, + iscsiTgtLastFailureType, + iscsiTgtLastIntrFailureName, + + + + iscsiTgtLastIntrFailureAddrType, + iscsiTgtLastIntrFailureAddr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + local targets." +::= { iscsiGroups 7 } + +iscsiTargetLoginStatsGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLoginAccepts, + iscsiTgtLoginOtherFails, + iscsiTgtLoginRedirects, + iscsiTgtLoginAuthorizeFails, + iscsiTgtLoginAuthenticateFails, + iscsiTgtLoginNegotiateFails + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + login attempts by remote initiators to local targets." +::= { iscsiGroups 8 } + +iscsiTargetLogoutStatsGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLogoutNormals, + iscsiTgtLogoutOthers + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + logout events between remote initiators and local targets." +::= { iscsiGroups 9 } + +iscsiTargetAuthGroup OBJECT-GROUP + OBJECTS { + iscsiTgtAuthRowStatus, + iscsiTgtAuthStorageType, + iscsiTgtAuthIdentity + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + remote initiators that are authorized to connect to local + targets." +::= { iscsiGroups 10 } + + + + +iscsiInitiatorAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLoginFailures, + iscsiIntrLastFailureTime, + iscsiIntrLastFailureType, + iscsiIntrLastTgtFailureName, + iscsiIntrLastTgtFailureAddrType, + iscsiIntrLastTgtFailureAddr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + all local initiators." +::= { iscsiGroups 11 } + +iscsiInitiatorLoginStatsGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLoginAcceptRsps, + iscsiIntrLoginOtherFailRsps, + iscsiIntrLoginRedirectRsps, + iscsiIntrLoginAuthFailRsps, + iscsiIntrLoginAuthenticateFails, + iscsiIntrLoginNegotiateFails + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + login attempts by local initiators to remote targets." +::= { iscsiGroups 12 } + +iscsiInitiatorLogoutStatsGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLogoutNormals, + iscsiIntrLogoutOthers + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + logout events between local initiators and remote targets." +::= { iscsiGroups 13 } + +iscsiInitiatorAuthGroup OBJECT-GROUP + OBJECTS { + iscsiIntrAuthRowStatus, + iscsiIntrAuthStorageType, + iscsiIntrAuthIdentity + } + STATUS current + + + + DESCRIPTION + "A collection of objects providing information about all + remote targets that are initiators of the local system + that they are authorized to access." +::= { iscsiGroups 14 } + +iscsiSessionAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiSsnDirection, + iscsiSsnInitiatorName, + iscsiSsnTargetName, + iscsiSsnTSIH, + iscsiSsnISID, + iscsiSsnInitiatorAlias, + iscsiSsnTargetAlias, + iscsiSsnInitialR2T, + iscsiSsnImmediateData, + iscsiSsnType, + iscsiSsnMaxOutstandingR2T, + iscsiSsnFirstBurstLength, + iscsiSsnMaxBurstLength, + iscsiSsnConnectionNumber, + iscsiSsnAuthIdentity, + iscsiSsnDataSequenceInOrder, + iscsiSsnDataPDUInOrder, + iscsiSsnErrorRecoveryLevel, + iscsiSsnDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information applicable to + all sessions." +::= { iscsiGroups 15 } + +iscsiSessionPDUStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnCmdPDUs, + iscsiSsnRspPDUs + } + STATUS current + DESCRIPTION + "A collection of objects providing information about PDU + traffic for each session." +::= { iscsiGroups 16 } + +iscsiSessionOctetStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnTxDataOctets, + + + + iscsiSsnRxDataOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing information about octet + traffic for each session using a Counter64 data type." +::= { iscsiGroups 17 } + +iscsiSessionLCOctetStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnLCTxDataOctets, + iscsiSsnLCRxDataOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing information about octet + traffic for each session using a Counter32 data type." +::= { iscsiGroups 18 } + +iscsiSessionCxnErrorStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnCxnDigestErrors, + iscsiSsnCxnTimeoutErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing information about connection + errors for all sessions." +::= { iscsiGroups 19 } + +iscsiConnectionAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiCxnCid, + iscsiCxnState, + iscsiCxnProtocol, + iscsiCxnAddrType, + iscsiCxnLocalAddr, + iscsiCxnLocalPort, + iscsiCxnRemoteAddr, + iscsiCxnRemotePort, + iscsiCxnMaxRecvDataSegLength, + iscsiCxnMaxXmitDataSegLength, + iscsiCxnHeaderIntegrity, + iscsiCxnDataIntegrity, + iscsiCxnRecvMarker, + iscsiCxnSendMarker, + iscsiCxnVersionActive + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about all + connections used by all sessions." +::= { iscsiGroups 20 } + +iscsiTgtLgnNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiTgtLoginFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate a login + failure from a remote initiator to a local target." +::= { iscsiGroups 21 } + +iscsiIntrLgnNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiIntrLoginFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate a login + failure from a local initiator to a remote target." +::= { iscsiGroups 22 } + +iscsiSsnFlrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiInstSessionFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate session + failures occurring after login." +::= { iscsiGroups 23 } + +--********************************************************************** + +iscsiComplianceV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial version of compliance statement based on + initial version of this MIB module. + + If an implementation can be both a target and an + initiator, all groups are mandatory." + MODULE -- this module + MANDATORY-GROUPS { + + + + iscsiInstanceAttributesGroup, + iscsiInstanceSsnErrorStatsGroup, + iscsiPortalAttributesGroup, + iscsiNodeAttributesGroup, + iscsiSessionAttributesGroup, + iscsiSessionPDUStatsGroup, + iscsiSessionCxnErrorStatsGroup, + iscsiConnectionAttributesGroup, + iscsiSsnFlrNotificationsGroup + } + + -- Conditionally mandatory groups depending on the ability + -- to support Counter64 data types and/or to provide counter + -- information to SNMPv1 applications. + + GROUP iscsiSessionOctetStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that can support Counter64 data types." + + GROUP iscsiSessionLCOctetStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that provide information to SNMPv1-only applications; + this includes agents that cannot support Counter64 + data types." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- iSCSI target facilities. + + GROUP iscsiTgtPortalAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + OBJECT iscsiPortalMaxRecvDataSegLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT iscsiNodeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required; an implementation may + choose to allow this object to be set to 'volatile' + or 'nonVolatile'." + + + + + GROUP iscsiTargetAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetLoginStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetLogoutStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTgtLgnNotificationsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetAuthGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- iSCSI initiator facilities. + + GROUP iscsiIntrPortalAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorLoginStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorLogoutStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + + + GROUP iscsiIntrLgnNotificationsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorAuthGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + OBJECT iscsiNodeErrorRecoveryLevel + SYNTAX Unsigned32 (0..2) + DESCRIPTION + "Only values 0-2 are defined at present." + +::= { iscsiCompliances 1 } + +END diff --git a/mibs/ietf/ISDN-MIB b/mibs/ietf/ISDN-MIB new file mode 100644 index 0000000..d721e57 --- /dev/null +++ b/mibs/ietf/ISDN-MIB @@ -0,0 +1,1249 @@ +ISDN-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + NOTIFICATION-TYPE, + OBJECT-TYPE, + Counter32, + Gauge32, + Integer32 + FROM SNMPv2-SMI + DisplayString, + TruthValue, + TimeStamp, + RowStatus, + TestAndIncr, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + ifIndex, + InterfaceIndex + FROM IF-MIB + IANAifType + FROM IANAifType-MIB + transmission + FROM RFC1213-MIB; + +isdnMib MODULE-IDENTITY + LAST-UPDATED "9609231642Z" -- Sep 23, 1996 + ORGANIZATION "IETF ISDN MIB Working Group" + CONTACT-INFO + " Guenter Roeck + Postal: cisco Systems + 170 West Tasman Drive + San Jose, CA 95134 + U.S.A. + Phone: +1 408 527 3143 + E-mail: groeck@cisco.com" + DESCRIPTION + "The MIB module to describe the + management of ISDN interfaces." + ::= { transmission 20 } + +-- The ISDN hardware interface (BRI or PRI) is represented + +-- by a media specific ifEntry. +-- +-- For basic rate lines, the media specifics for the physical interface +-- is defined in the physical interface group of the ISDN MIB. +-- The ifType for physical basic rate interfaces is isdns(75) +-- or isdnu(76), whichever is appropriate. +-- +-- For primary rate, the media specifics are defined in the Trunk +-- MIB and the ifType has a value of ds1(18). + +-- Each signaling channel is represented by an entry +-- in the isdnSignalingTable. +-- The signaling channel has an ifType value of isdn(63). +-- Each B channel is also represented as an entry +-- in the ifTable. The B channels have an ifType value +-- of ds0(81). +-- This model is used while defining objects and tables +-- for management. +-- The ISDN MIB allows sub-layers. For example, the data transfer +-- over a B channel may take place with PPP encapsulation. While the +-- ISDN MIB describes the D and B channels, a media specific MIB +-- for PPP can be used on a layered basis. This is as per +-- the interfaces MIB. + +-- Textual conventions + +IsdnSignalingProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + isdnSignalingProtocol object in the + definition of ISDN-MIB's isdnSignalingTable. + + 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@iana.org)." + SYNTAX INTEGER { + other(1), -- none of the following + dss1(2), -- ITU DSS1 (formerly CCITT) Q.931 + etsi(3), -- Europe / ETSI ETS300-102 + -- plus supplementary services + + -- (ETSI 300-xxx) + -- note that NET3, NET5 define + -- test procedures for ETS300-102 + -- and have been replaced by + -- I-CTR 3 and I-CTR 4. + dass2(4), -- U.K. / DASS2 (PRI) + ess4(5), -- U.S.A. / AT&T 4ESS + ess5(6), -- U.S.A. / AT&T 5ESS + dms100(7), -- U.S.A. / Northern Telecom DMS100 + dms250(8), -- U.S.A. / Northern Telecom DMS250 + ni1(9), -- U.S.A. / National ISDN 1 (BRI) + ni2(10), -- U.S.A. / National ISDN 2 (BRI, PRI) + ni3(11), -- U.S.A. / next one + vn2(12), -- France / VN2 + vn3(13), -- France / VN3 + vn4(14), -- France / VN4 (ETSI with changes) + vn6(15), -- France / VN6 (ETSI with changes) + -- delta document CSE P 10-21 A + -- test document CSE P 10-20 A + kdd(16), -- Japan / KDD + ins64(17), -- Japan / NTT INS64 + ins1500(18), -- Japan / NTT INS1500 + itr6(19), -- Germany/ 1TR6 (BRI, PRI) + cornet(20), -- Germany/ Siemens HiCom CORNET + ts013(21), -- Australia / TS013 + -- (formerly TPH 1962, BRI) + ts014(22), -- Australia / TS014 + -- (formerly TPH 1856, PRI) + qsig(23), -- Q.SIG + swissnet2(24), -- SwissNet-2 + swissnet3(25) -- SwissNet-3 + } + +-- Isdn Mib objects definitions + +isdnMibObjects OBJECT IDENTIFIER ::= { isdnMib 1 } + +-- ISDN physical interface group + +-- This group describes physical basic rate interfaces. + +isdnBasicRateGroup OBJECT IDENTIFIER ::= { isdnMibObjects 1 } + +isdnBasicRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnBasicRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration and operational + parameters for all physical Basic Rate + interfaces on this managed device." + ::= { isdnBasicRateGroup 1 } + +isdnBasicRateEntry OBJECT-TYPE + SYNTAX IsdnBasicRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Basic Rate Table." + INDEX { ifIndex } + ::= { isdnBasicRateTable 1 } + +IsdnBasicRateEntry ::= SEQUENCE { + isdnBasicRateIfType INTEGER, + isdnBasicRateLineTopology INTEGER, + isdnBasicRateIfMode INTEGER, + isdnBasicRateSignalMode INTEGER + } + +isdnBasicRateIfType OBJECT-TYPE + SYNTAX INTEGER { + isdns(75), + isdnu(76) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical interface type. For 'S/T' interfaces, + also called 'Four-wire Basic Access Interface', + the value of this object is isdns(75). + For 'U' interfaces, also called 'Two-wire Basic + Access Interface', the value of this object is + isdnu(76)." + ::= { isdnBasicRateEntry 1 } + +isdnBasicRateLineTopology OBJECT-TYPE + SYNTAX INTEGER { + pointToPoint(1), + pointToMultipoint(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The line topology to be used for this interface. + Note that setting isdnBasicRateIfType to isdns(75) + does not necessarily mean a line topology of + point-to-multipoint." + ::= { isdnBasicRateEntry 2 } + +isdnBasicRateIfMode OBJECT-TYPE + SYNTAX INTEGER { + te(1), + nt(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical interface mode. For TE mode, the value + of this object is te(1). For NT mode, the value + of this object is nt(2)." + ::= { isdnBasicRateEntry 3 } + +isdnBasicRateSignalMode OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The signaling channel operational mode for this interface. + If active(1) there is a signaling channel on this + interface. If inactive(2) a signaling channel is + not available." + ::= { isdnBasicRateEntry 4 } + +-- The B channel (bearer channel) group + +-- Note that disconnects can explicitely be handled using the +-- ifStack table. If a connection is to be disconnected, +-- the according ifStack entry has to be removed. +-- More specifically, the ifStackTable entry which binds the high-layer +-- ifTable entry (and related dialCtlNbrCfgTable entry) to the +-- B channel ifTable entry (and related isdnBearerTable entry) +-- during an active call has to be removed. + +isdnBearerGroup OBJECT IDENTIFIER ::= { isdnMibObjects 2 } + +isdnBearerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnBearerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines port specific operational, statistics + and active call data for ISDN B channels. Each entry + in this table describes one B (bearer) channel." + ::= { isdnBearerGroup 1 } + +isdnBearerEntry OBJECT-TYPE + SYNTAX IsdnBearerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operational and statistics information relating to + one port. A port is a single B channel." + INDEX { ifIndex } + ::= { isdnBearerTable 1 } + +IsdnBearerEntry ::= + SEQUENCE { + isdnBearerChannelType INTEGER, + isdnBearerOperStatus INTEGER, + isdnBearerChannelNumber INTEGER, + isdnBearerPeerAddress DisplayString, + isdnBearerPeerSubAddress DisplayString, + isdnBearerCallOrigin INTEGER, + isdnBearerInfoType INTEGER, + isdnBearerMultirate TruthValue, + isdnBearerCallSetupTime TimeStamp, + isdnBearerCallConnectTime TimeStamp, + isdnBearerChargedUnits Gauge32 + } + +isdnBearerChannelType OBJECT-TYPE + SYNTAX INTEGER { + dialup(1), + leased(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The B channel type. If the B channel is connected + to a dialup line, this object has a value of + dialup(1). In this case, it is controlled by + an associated signaling channel. If the B channel + is connected to a leased line, this object has + a value of leased(2). For leased line B channels, there + is no signaling channel control available." + ::= { isdnBearerEntry 1 } + +isdnBearerOperStatus OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connecting(2), + connected(3), + active(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current call control state for this port. + idle(1): The B channel is idle. + No call or call attempt is going on. + connecting(2): A connection attempt (outgoing call) + is being made on this interface. + connected(3): An incoming call is in the process + of validation. + active(4): A call is active on this interface." + ::= { isdnBearerEntry 2 } + +isdnBearerChannelNumber OBJECT-TYPE + SYNTAX INTEGER (1..30) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier being used by a signaling protocol + to identify this B channel, also referred to as + B channel number. If the Agent also supports the DS0 MIB, + the values of isdnBearerChannelNumber and dsx0Ds0Number + must be identical for a given B channel." + ::= { isdnBearerEntry 3 } + +isdnBearerPeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ISDN address the current or last call is or was + connected to. + + In some cases, the format of this information can not + be predicted, since it largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should supply this information + using the E.164 format. In this case, the number must + start with '+'. Otherwise, IA5 number digits must be used. + If the peer ISDN address is not available, + this object has a length of zero." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + ::= { isdnBearerEntry 4 } + +isdnBearerPeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ISDN subaddress the current or last call is or was + connected to. + + The subaddress is an user supplied string of up to 20 + IA5 characters and is transmitted transparently through + the network. + + If the peer subaddress is not available, this object + has a length of zero." + REFERENCE + "ITU-T I.330, Q.931 chapter 4.5.11" + ::= { isdnBearerEntry 5 } + +isdnBearerCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + originate(2), + answer(3), + callback(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin for the current or last call. If since + system startup there was no call on this interface, + this object has a value of unknown(1)." + ::= { isdnBearerEntry 6 } + +isdnBearerInfoType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + speech(2), + unrestrictedDigital(3), -- as defined in Q.931 + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Information Transfer Capability for the current + or last call. + + speech(2) refers to a non-data connection, whereas + audio31(6) and audio7(7) refer to data mode connections. + + Note that Q.931, chapter 4.5.5, originally defined + audio7(7) as '7 kHz audio' and now defines it as + 'Unrestricted digital information with tones/ + announcements'. + + If since system startup there has been no call on this + interface, this object has a value of unknown(1)." + REFERENCE + "Q.931 [8], chapter 4.5.5, octet 3 of bearer capability + information element, combined with the User Rate + (as defined in octets 5 and 5a to 5d), if rate adaption + is being used." + ::= { isdnBearerEntry 7 } + +isdnBearerMultirate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This flag indicates if the current or last call used + multirate. The actual information transfer rate, + in detail specified in octet 4.1 (rate multiplier), + is the sum of all B channel ifSpeed values for + the hyperchannel. + + If since system startup there was no call on this + interface, this object has a value of false(2)." + REFERENCE + "Q.931 [8], chapter 4.5.5." + ::= { isdnBearerEntry 8 } + +isdnBearerCallSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the ISDN setup message for + the current or last call was sent or received. If since + system startup there has been no call on this interface, + this object has a value of zero." + ::= { isdnBearerEntry 9 } + +isdnBearerCallConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the ISDN connect message for + the current or last call was sent or received. If since + system startup there has been no call on this interface, + this object has a value of zero." + ::= { isdnBearerEntry 10 } + +isdnBearerChargedUnits OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for the current or last + connection. For incoming calls or if charging information + is not supplied by the switch, the value of this object + is zero." + ::= { isdnBearerEntry 11 } + +-- ISDN signaling group + +isdnSignalingGroup OBJECT IDENTIFIER ::= { isdnMibObjects 3 } + +-- signaling channel configuration table +-- There is one entry in this table for each Terminal Endpoint +-- (link layer connection to the switch). +-- Usually, there is one endpoint per D channel. In some +-- cases, however, there can be multiple endpoints. +-- Thus, entries in this table can be created and deleted. +-- This also means the creation of an associated ifEntry. +-- +-- D channel backup and NFAS trunks are handled using the +-- ifStack table. +-- In case of D channel backup, there are multiple +-- Data Link Layer (LAPD) interfaces. Only one interface is +-- active; all others are dormant(5). +-- In case of NFAS trunks, one lower interface is the +-- LAPD interface, while the other lower interfaces are physical +-- interfaces. + +-- If directory number and calling address differ from each other +-- or multiple directory numbers are being used, +-- the isdnDirectoryTable has to be used to enter such +-- directory numbers. + +isdnSignalingGetIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The recommended procedure for selecting a new index for + isdnSignalingTable row creation is to GET the value of + this object, and then to SET the object with the same + value. If the SET operation succeeds, the manager can use + this value as an index to create a new row in this table." + REFERENCE + "RFC1903, TestAndIncr textual convention." + ::= { isdnSignalingGroup 1 } + +isdnSignalingTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnSignalingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ISDN signaling table containing configuration and + operational parameters for all ISDN signaling + channels on this managed device." + ::= { isdnSignalingGroup 2 } + +isdnSignalingEntry OBJECT-TYPE + SYNTAX IsdnSignalingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Signaling Table. To create a new + entry, only isdnSignalingProtocol needs to be specified + before isdnSignalingStatus can become active(1)." + INDEX { isdnSignalingIndex } + ::= { isdnSignalingTable 1 } + +IsdnSignalingEntry ::= SEQUENCE { + isdnSignalingIndex INTEGER, + isdnSignalingIfIndex InterfaceIndex, + isdnSignalingProtocol IsdnSignalingProtocol, + isdnSignalingCallingAddress DisplayString, + isdnSignalingSubAddress DisplayString, + isdnSignalingBchannelCount Integer32, + isdnSignalingInfoTrapEnable INTEGER, + isdnSignalingStatus RowStatus + } + +isdnSignalingIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnSignalingTable." + ::= { isdnSignalingEntry 1 } + +isdnSignalingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface associated with this + signaling channel." + ::= { isdnSignalingEntry 2 } + +isdnSignalingProtocol OBJECT-TYPE + SYNTAX IsdnSignalingProtocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular protocol type supported by the + switch providing access to the ISDN network + to which this signaling channel is connected." + ::= { isdnSignalingEntry 3 } + +isdnSignalingCallingAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ISDN Address to be assigned to this signaling + channel. More specifically, this is the 'Calling Address + information element' as being passed to the switch + in outgoing call setup messages. + + It can be an EAZ (1TR6), a calling number (DSS1, ETSI) + or any other number necessary to identify a signaling + interface. If there is no such number defined or required, + this is a zero length string. It is represented in + DisplayString form. + + Incoming calls can also be identified by this number. + If the Directory Number, i.e. the Called Number in + incoming calls, is different to this number, the + isdnDirectoryTable has to be used to specify all + possible Directory Numbers. + + The format of this information largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should implement this information + using the E.164 number format. In this case, the number + must start with '+'. Otherwise, IA5 number digits must + be used." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + DEFVAL { "" } + ::= { isdnSignalingEntry 4 } + +isdnSignalingSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Supplementary information to the ISDN address assigned + to this signaling channel. Usually, this is the + subaddress as defined in Q.931. + If there is no such number defined or required, this is + a zero length string. + The subaddress is used for incoming calls as well as + for outgoing calls. + The subaddress is an user supplied string of up to 20 + IA5 characters and is transmitted transparently through + the network." + REFERENCE + "ITU-T I.330, Q.931 chapter 4.5.11" + DEFVAL { "" } + ::= { isdnSignalingEntry 5 } + +isdnSignalingBchannelCount OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The total number of B channels (bearer channels) + managed by this signaling channel. The default value + of this object depends on the physical interface type + and is either 2 for Basic Rate interfaces or + 24 (30) for Primary Rate interfaces." + ::= { isdnSignalingEntry 6 } + +isdnSignalingInfoTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether isdnMibCallInformation traps + should be generated for calls on this signaling + channel." + DEFVAL { disabled } + ::= { isdnSignalingEntry 7 } + +isdnSignalingStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnSignalingTable." + ::= { isdnSignalingEntry 8 } + +-- Signaling channel statistics table +-- There is one entry for each signaling connection +-- in this table. +-- Note that the ifEntry also has some statistics information. + +isdnSignalingStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnSignalingStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ISDN signaling table containing statistics + information for all ISDN signaling channels + on this managed device. + Only statistical information which is not already being + counted in the ifTable is being defined in this table." + ::= { isdnSignalingGroup 3 } + +isdnSignalingStatsEntry OBJECT-TYPE + SYNTAX IsdnSignalingStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Signaling statistics Table." + AUGMENTS { isdnSignalingEntry } + ::= { isdnSignalingStatsTable 1 } + +IsdnSignalingStatsEntry ::= SEQUENCE { + isdnSigStatsInCalls Counter32, + isdnSigStatsInConnected Counter32, + isdnSigStatsOutCalls Counter32, + isdnSigStatsOutConnected Counter32, + isdnSigStatsChargedUnits Counter32 + } + +isdnSigStatsInCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming calls on this interface." + ::= { isdnSignalingStatsEntry 1 } + +isdnSigStatsInConnected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming calls on this interface + which were actually connected." + ::= { isdnSignalingStatsEntry 2 } + +isdnSigStatsOutCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls on this interface." + ::= { isdnSignalingStatsEntry 3 } + +isdnSigStatsOutConnected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls on this interface + which were actually connected." + ::= { isdnSignalingStatsEntry 4 } + +isdnSigStatsChargedUnits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charging units on this interface since + system startup. + Only the charging units applying to the local interface, + i.e. for originated calls or for calls with 'Reverse + charging' being active, are counted here." + ::= { isdnSignalingStatsEntry 5 } + +-- +-- The LAPD table + +isdnLapdTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnLapdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration and statistics + information for all LAPD (D channel Data Link) + interfaces on this managed device. + Only statistical information which is not already being + counted in the ifTable is being defined in this table." + ::= { isdnSignalingGroup 4 } + +isdnLapdEntry OBJECT-TYPE + SYNTAX IsdnLapdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the LAPD Table." + INDEX { ifIndex } + ::= { isdnLapdTable 1 } + +IsdnLapdEntry ::= SEQUENCE { + isdnLapdPrimaryChannel TruthValue, + isdnLapdOperStatus INTEGER, + isdnLapdPeerSabme Counter32, + isdnLapdRecvdFrmr Counter32 + } + +isdnLapdPrimaryChannel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If set to true(1), this D channel is the designated + primary D channel if D channel backup is active. + There must be exactly one primary D channel + configured. If D channel backup is not used, this + object has a value of true(1)." + REFERENCE + "Q.931 [8], Annex F, D channel backup procedures." + ::= { isdnLapdEntry 1 } + +isdnLapdOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + l1Active(2), + l2Active(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this interface: + + inactive all layers are inactive + l1Active layer 1 is activated, + layer 2 datalink not established + l2Active layer 1 is activated, + layer 2 datalink established." + ::= { isdnLapdEntry 2 } + +isdnLapdPeerSabme OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of peer SABME frames received on this + interface. This is the number of peer-initiated + new connections on this interface." + ::= { isdnLapdEntry 3 } + +isdnLapdRecvdFrmr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LAPD FRMR response frames received. + This is the number of framing errors on this + interface." + ::= { isdnLapdEntry 4 } + +-- +-- Optional groups follow here. + +-- The Terminal Endpoint group and table + +-- This table is required only if TEI values or SPID numbers +-- have to be entered. +-- The ifIndex values for this table are identical to those of +-- the isdnSignalingChannel table. + +isdnEndpointGroup OBJECT IDENTIFIER ::= { isdnMibObjects 4 } + +isdnEndpointGetIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The recommended procedure for selecting a new index for + isdnEndpointTable row creation is to GET the value of + this object, and then to SET the object with the same + value. If the SET operation succeeds, the manager can use + this value as an index to create a new row in this table." + REFERENCE + "RFC1903, TestAndIncr textual convention." + ::= { isdnEndpointGroup 1 } + +isdnEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration for Terminal + Endpoints." + ::= { isdnEndpointGroup 2 } + +isdnEndpointEntry OBJECT-TYPE + SYNTAX IsdnEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Terminal Endpoint Table. The value + of isdnEndpointIfType must be supplied for a row + in this table to become active." + INDEX { isdnEndpointIndex } + ::= { isdnEndpointTable 1 } + +IsdnEndpointEntry ::= SEQUENCE { + isdnEndpointIndex INTEGER, + isdnEndpointIfIndex InterfaceIndex, + isdnEndpointIfType IANAifType, + isdnEndpointTeiType INTEGER, + isdnEndpointTeiValue INTEGER, + isdnEndpointSpid DisplayString, + isdnEndpointStatus RowStatus + } + +isdnEndpointIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnEndpointTable." + ::= { isdnEndpointEntry 1 } + +isdnEndpointIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface associated with this + Terminal Endpoint." + ::= { isdnEndpointEntry 2 } + +isdnEndpointIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface type for this Terminal Endpoint. + Interface types of x25ple(40) and isdn(63) are allowed. + The interface type is identical to the value of + ifType in the associated ifEntry." + ::= { isdnEndpointEntry 3 } + +isdnEndpointTeiType OBJECT-TYPE + SYNTAX INTEGER { + dynamic(1), + static(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of TEI (Terminal Endpoint Identifier) + used for this Terminal Endpoint. In case of dynamic(1), + the TEI value is selected by the switch. In + case of static(2), a valid TEI value has to be + entered in the isdnEndpointTeiValue object. + The default value for this object depends on the + interface type as well as the Terminal Endpoint type. + On Primary Rate interfaces the default value is + static(2). On Basic Rate interfaces the default value + is dynamic(1) for isdn(63) Terminal Endpoints and + static(2) for x25ple(40) Terminal Endpoints." + ::= { isdnEndpointEntry 4 } + +isdnEndpointTeiValue OBJECT-TYPE + SYNTAX INTEGER ( 0..255 ) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TEI (Terminal Endpoint Identifier) value + for this Terminal Endpoint. If isdnEndpointTeiType + is set to static(2), valid numbers are 0..63, + while otherwise the value is set internally. + The default value of this object is 0 for static + TEI assignment. + The default value for dynamic TEI assignment is also + 0 as long as no TEI has been assigned. After TEI + assignment, the assigned TEI value is returned." + ::= { isdnEndpointEntry 5 } + +isdnEndpointSpid OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Service profile IDentifier (SPID) information + for this Terminal Endpoint. + + The SPID is composed of 9-20 numeric characters. + + This information has to be defined in addition to + the local number for some switch protocol types, + e.g. Bellcore NI-1 and NI-2. + + If this object is not required, it is a + zero length string." + REFERENCE + "Bellcore SR-NWT-001953, Generic Guidelines for ISDN + Terminal Equipment on Basic Access Interfaces, + Chapter 8.5.1." + DEFVAL { "" } + ::= { isdnEndpointEntry 6 } + +isdnEndpointStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnEndpointTable." + ::= { isdnEndpointEntry 7 } + +-- +-- The Directory Number group +-- + +isdnDirectoryGroup OBJECT IDENTIFIER ::= { isdnMibObjects 5 } + +isdnDirectoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnDirectoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing Directory Numbers." + ::= { isdnDirectoryGroup 1 } + +isdnDirectoryEntry OBJECT-TYPE + SYNTAX IsdnDirectoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Directory Number Table. All objects + in an entry must be set for a new row to become active." + INDEX { isdnDirectoryIndex } + ::= { isdnDirectoryTable 1 } + +IsdnDirectoryEntry ::= SEQUENCE { + isdnDirectoryIndex INTEGER, + isdnDirectoryNumber DisplayString, + isdnDirectorySigIndex INTEGER, + isdnDirectoryStatus RowStatus + } + +isdnDirectoryIndex OBJECT-TYPE + SYNTAX INTEGER ( 1..'7fffffff'h ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnDirectoryTable." + ::= { isdnDirectoryEntry 1 } + +isdnDirectoryNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A Directory Number. Directory Numbers are used + to identify incoming calls on the signaling + channel given in isdnDirectorySigIndex. + + The format of this information largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should implement this information + using the E.164 number format. In this case, the number + must start with '+'. Otherwise, IA5 number digits must + be used." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + ::= { isdnDirectoryEntry 2 } + +isdnDirectorySigIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index pointing to an ISDN signaling channel. + Incoming calls are accepted on this + signaling channel if the isdnDirectoryNumber is + presented as Called Number in the SETUP message." + ::= { isdnDirectoryEntry 3 } + +isdnDirectoryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnDirectoryTable." + ::= { isdnDirectoryEntry 4 } + +-- Traps + +isdnMibTrapPrefix OBJECT IDENTIFIER ::= { isdnMib 2 } +isdnMibTraps OBJECT IDENTIFIER ::= { isdnMibTrapPrefix 0 } + +isdnMibCallInformation NOTIFICATION-TYPE + OBJECTS { + ifIndex, -- isdnBearerTable ifIndex + isdnBearerOperStatus, + isdnBearerPeerAddress, + isdnBearerPeerSubAddress, + isdnBearerCallSetupTime, + isdnBearerInfoType, + isdnBearerCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager under the + following condidions: + - on incoming calls for each call which is rejected for + policy reasons (e.g. unknown neighbor or access + violation) + - on outgoing calls whenever a call attempt is determined + to have ultimately failed. In the event that call retry + is active, then this will be after all retry attempts + have failed. + - whenever a call connects. In this case, the object + isdnBearerCallConnectTime should be included in the + trap. + + Only one such trap is sent in between successful or + unsuccessful call attempts from or to a single neighbor; + subsequent call attempts result in no trap. + + If the Dial Control MIB objects dialCtlNbrCfgId and + dialCtlNbrCfgIndex are known by the entity generating + this trap, both objects should be included in the trap + as well. The receipt of this trap with no dial neighbor + information indicates that the manager must poll the + callHistoryTable of the Dial Control MIB to see what + changed." + ::= { isdnMibTraps 1 } + +-- +-- conformance information +-- + +isdnMibConformance OBJECT IDENTIFIER ::= { isdnMib 2 } +isdnMibCompliances OBJECT IDENTIFIER ::= { isdnMibConformance 1 } +isdnMibGroups OBJECT IDENTIFIER ::= { isdnMibConformance 2 } + +-- compliance statements + +isdnMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the ISDN MIB." + MODULE -- this module + +-- unconditionally mandatory groups + MANDATORY-GROUPS { + isdnMibSignalingGroup, + isdnMibBearerGroup, + isdnMibNotificationsGroup + } + +-- conditionally mandatory group + GROUP isdnMibBasicRateGroup + DESCRIPTION + "The isdnMibBasicRateGroup is mandatory for entities + supporting ISDN Basic Rate interfaces." + +-- optional groups + GROUP isdnMibEndpointGroup + DESCRIPTION + "Implementation of this group is optional for all systems + that attach to ISDN interfaces." + + GROUP isdnMibDirectoryGroup + DESCRIPTION + "Implementation of this group is optional for all systems + that attach to ISDN interfaces." + + OBJECT isdnBasicRateIfType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateLineTopology + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateIfMode + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateSignalMode + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + ::= { isdnMibCompliances 1 } + +-- units of conformance + +isdnMibBasicRateGroup OBJECT-GROUP + OBJECTS { + isdnBasicRateIfType, + isdnBasicRateLineTopology, + isdnBasicRateIfMode, + isdnBasicRateSignalMode + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN Basic Rate + physical interface configuration and statistics." + ::= { isdnMibGroups 1 } + +isdnMibBearerGroup OBJECT-GROUP + OBJECTS { + isdnBearerChannelType, + isdnBearerOperStatus, + isdnBearerChannelNumber, + isdnBearerPeerAddress, + isdnBearerPeerSubAddress, + isdnBearerCallOrigin, + isdnBearerInfoType, + isdnBearerMultirate, + isdnBearerCallSetupTime, + isdnBearerCallConnectTime, + isdnBearerChargedUnits + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN Bearer channel + control and statistics." + ::= { isdnMibGroups 2 } + +isdnMibSignalingGroup OBJECT-GROUP + OBJECTS { + isdnSignalingGetIndex, + isdnSignalingIfIndex, + isdnSignalingProtocol, + isdnSignalingCallingAddress, + isdnSignalingSubAddress, + isdnSignalingBchannelCount, + isdnSignalingInfoTrapEnable, + isdnSignalingStatus, + isdnSigStatsInCalls, + isdnSigStatsInConnected, + isdnSigStatsOutCalls, + isdnSigStatsOutConnected, + isdnSigStatsChargedUnits, + isdnLapdPrimaryChannel, + isdnLapdOperStatus, + isdnLapdPeerSabme, + isdnLapdRecvdFrmr + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN D channel + configuration and statistics." + ::= { isdnMibGroups 3 } + +isdnMibEndpointGroup OBJECT-GROUP + OBJECTS { + isdnEndpointGetIndex, + isdnEndpointIfIndex, + isdnEndpointIfType, + isdnEndpointTeiType, + isdnEndpointTeiValue, + isdnEndpointSpid, + isdnEndpointStatus + } + STATUS current + DESCRIPTION + "A collection of objects describing Terminal Endpoints." + ::= { isdnMibGroups 4 } + +isdnMibDirectoryGroup OBJECT-GROUP + OBJECTS { + isdnDirectoryNumber, + isdnDirectorySigIndex, + isdnDirectoryStatus + } + STATUS current + DESCRIPTION + "A collection of objects describing directory numbers." + ::= { isdnMibGroups 5 } + +isdnMibNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { isdnMibCallInformation } + STATUS current + DESCRIPTION + "The notifications which a ISDN MIB entity is + required to implement." + ::= { isdnMibGroups 6 } +END diff --git a/mibs/ietf/ISIS-MIB b/mibs/ietf/ISIS-MIB new file mode 100644 index 0000000..7d16d93 --- /dev/null +++ b/mibs/ietf/ISIS-MIB @@ -0,0 +1,4581 @@ +ISIS-MIB DEFINITIONS ::= BEGIN + IMPORTS + TEXTUAL-CONVENTION, RowStatus, TruthValue, TimeStamp + FROM SNMPv2-TC -- RFC2579 + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- RFC2578 + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC2571 + IndexInteger, IndexIntegerNextFree + FROM DIFFSERV-MIB -- RFC3289 + InterfaceIndex + FROM IF-MIB -- RFC2863 + InetAddressType, InetAddress, InetAddressPrefixLength + FROM INET-ADDRESS-MIB; -- RFC3291 + + isisMIB MODULE-IDENTITY + LAST-UPDATED "200604040000Z" -- April 4, 2006, midnight + ORGANIZATION "IETF IS-IS for IP Internets Working Group" + CONTACT-INFO + "IS-IS for IP Internets working Group + http://www.ietf.org/html.charters/isis-charter.html + isis-wg@ietf.org + + Jeff Parker + Department of Computer Science + Middlebury College, + Middlebury, Vermont 05753 + jeffp at middlbury dot edu" + + DESCRIPTION + "This document describes a management information base for + the IS-IS Routing protocol, as described in ISO 10589, + when it is used to construct routing tables for IP + networks, as described in RFC 1195. + + This document is based on a 1994 IETF document by Chris + Gunner. This version has been modified to include + current syntax, to exclude portions of the protocol that + are not relevant to IP, and to add management support for + current practice. + + + + + + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4444; see the RFC + itself for full legal notices." + + REVISION "200604040000Z" -- April 4, 2006, midnight + + DESCRIPTION + "Initial version, published as RFC 4444." + ::= { mib-2 138 } + +-- Top-level structure of the MIB + +isisNotifications OBJECT IDENTIFIER ::= { isisMIB 0 } +isisObjects OBJECT IDENTIFIER ::= { isisMIB 1 } +isisConformance OBJECT IDENTIFIER ::= { isisMIB 2 } + +-- OBJECT IDENTIFIER definitions + +-- System wide attributes. +isisSystem OBJECT IDENTIFIER ::= { isisObjects 1 } + +-- Attributes associated with the domain or with the area. +isisSysLevel OBJECT IDENTIFIER ::= { isisObjects 2 } + +-- Attributes associated with one Circuit +isisCirc OBJECT IDENTIFIER ::= { isisObjects 3 } + +-- Attributes associated with area or domain relevant within a Circuit. +isisCircLevelValues OBJECT IDENTIFIER ::= { isisObjects 4 } + +-- System and circuit counters. +isisCounters OBJECT IDENTIFIER ::= { isisObjects 5 } + +-- Attributes associated with an adjacent Protocol Peer. +isisISAdj OBJECT IDENTIFIER ::= { isisObjects 6 } + +-- Attributes associated with a configured address. +isisReachAddr OBJECT IDENTIFIER ::= { isisObjects 7 } + +-- Attributes associated with IP routes learned by +-- configuration or through another protocol. +isisIPReachAddr OBJECT IDENTIFIER ::= { isisObjects 8 } + +-- The collection of Link State PDUs known to the Intermediate System +isisLSPDataBase OBJECT IDENTIFIER ::= { isisObjects 9 } + +-- Objects included in Notifications. +isisNotification OBJECT IDENTIFIER ::= { isisObjects 10 } + + + +-- Type definitions + + IsisOSINSAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "OSI Network Service Address, e.g., NSAP, SNPA, or Network + Entity Title" + SYNTAX OCTET STRING (SIZE(0..20)) + + IsisSystemID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ID for an Intermediate System. This should + be unique within a network, and is included + in all PDUs originated by an Intermediate System. + The protocol does not place any meanings upon + the bits, other than using ordering to break + ties in electing a Designated IS on a LAN." + REFERENCE "{ISIS.aoi systemId (119)}" + SYNTAX OCTET STRING (SIZE(6)) + + IsisLinkStatePDUID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The 8-byte Link State PDU (LSP) ID, + consisting of the 6-byte SystemID of the + originating IS; a one-byte PseudoNode ID, + which is 0 unless the LSP represents the + topology of a LAN; and a one-byte LSP + fragment number that is issued in sequence, + starting with 0. Non-zero PseudoNode IDs + need to be unique to the IS but need not + match the IfIndex." + REFERENCE "{See section 9.8 of ISO 10589}" + SYNTAX OCTET STRING (SIZE(8)) + + IsisAdminState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Type used in enabling and disabling a row." + SYNTAX INTEGER + { + on(1), + off(2) + } + + IsisLSPBuffSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "Integer sub-range for maximum LSP size." + SYNTAX Unsigned32 (512..16000) + + IsisLevelState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "States of the IS-IS protocol." + SYNTAX INTEGER + { + off (1), + on (2), + waiting (3), + overloaded(4) + } + + IsisSupportedProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Types of network protocol supported by Integrated IS-IS. + The values for ISO8473 and IP are those registered for + these protocols in ISO TR9577." + REFERENCE "{See section 5.3.1 of RFC 1195}" + SYNTAX INTEGER + { + iso8473(129), + ipV6(142), + ip(204) + } + + IsisDefaultMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Integer sub-range for default metric for single hop. + ISO 10589 provides for 4 types of metric. Only the + 'default' metric is used in practice." + REFERENCE "{See section 7.2.2 of ISO 10589}" + SYNTAX Unsigned32 (0..63) + + IsisWideMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Wide metric for IS Neighbors. ISO 10589 provides a + 6-bit metric. Traffic Engineering extensions provide + 24-bit metrics." + + + + REFERENCE "{See section 3 of RFC 3784}" + SYNTAX Unsigned32 (0..16777215) + + IsisFullMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Full metric for IP Routes. Traffic Engineering extensions + provide 32-bit metrics." + REFERENCE "{See section 4 of RFC 3784}" + SYNTAX Unsigned32 + + IsisMetricType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Is this an Internal or External Metric?" + REFERENCE "{See section 7.2.2 of ISO 10589}" + SYNTAX INTEGER + { + internal(1), + external(2) + } + + IsisMetricStyle ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Do we use RFC 1195 style metrics or wide metrics?" + REFERENCE "{See section 5 of RFC 3787}" + SYNTAX INTEGER + { + narrow(1), + wide(2), + both(3) + } + + IsisISLevel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a level." + REFERENCE "{See definitions 3.6.1 and 3.6.11 of ISO 10589}" + SYNTAX INTEGER + { + area(1), -- L1 + domain(2) -- L2 + } + + IsisLevel ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "Identifies one or more levels." + REFERENCE "{See definitions 3.6.1 and 3.6.11 of ISO 10589}" + SYNTAX INTEGER + { + level1(1), + level2(2), + level1and2(3) + } + + IsisPDUHeader ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A block to contain the header from a PDU." + SYNTAX OCTET STRING (SIZE(0..64)) + + IsisCircuitID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ID for a circuit." + REFERENCE "{See section 7.2.7 of ISO 10589}" + SYNTAX OCTET STRING (SIZE(0|7)) + + IsisISPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Integer sub-range for IS-IS priority." + REFERENCE "{See section 9.5 of ISO 10589}" + SYNTAX Unsigned32 (0..127) + + IsisUnsigned16TC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An Unsigned32 further restricted to 16 bits. Note that + the ASN.1 BER encoding may still require 24 bits for + some values." + SYNTAX Unsigned32 (0..65535) + + IsisUnsigned8TC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An Unsigned32 further restricted to 8 bits. Note that + the ASN.1 BER encoding may still require 16 bits for + some values." + SYNTAX Unsigned32 (0..255) + + + +-- Behavior Definitions + +-- ResettingTimer behavior definition +-- + +-- "This behavior applies to objects that specify the interval +-- between events in the operation of the protocol state machine. +-- If the value of such an object is set to a new value while +-- the protocol state machine is in operation, the implementation +-- shall take the necessary steps to ensure that for any time +-- interval that was in progress when the value of the +-- corresponding object was changed, the next expiration of that +-- interval takes place the specified time after the original +-- start of that interval, or immediately, whichever is later. +-- The precision with which this time shall be implemented shall +-- be the same as that associated with the basic operation of +-- the timer object." + +-- ReplaceOnlyWhileDisabled behavior definition +-- "This behavior applies to objects that may not be modified +-- while the corresponding table row's variable of type +-- IsisAdminState is in state on." + +-- ManualOrAutomatic behavior definition +-- "This behavior applies to objects that are read-write +-- if the object was created manually. Objects that were +-- created automatically that have this behavior are +-- read-only. + + isisSysObject OBJECT IDENTIFIER ::= { isisSystem 1 } + + isisSysVersion OBJECT-TYPE + SYNTAX INTEGER + { + unknown(0), + one(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the IS-IS protocol that + is implemented." + REFERENCE "{ISIS.aoi version (1)}" + DEFVAL { one } + ::= { isisSysObject 1 } + + isisSysLevelType OBJECT-TYPE + SYNTAX IsisLevel + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "At which levels is the Intermediate System + running? This object may not be modified when + the isisSysAdminState variable is in state 'on' + for this Intermediate System. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi iSType (2)}" + DEFVAL { level1and2 } + ::= { isisSysObject 2 } + + isisSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ID for this Intermediate System. + This value is appended to each of the + area addresses to form the Network Entity Titles. + The derivation of a value for this object is + implementation specific. Some implementations may + automatically assign values and not permit an + SNMP write, while others may require the value + to be set manually. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi systemId (119)}" + ::= { isisSysObject 3 } + + isisSysMaxPathSplits OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum number of paths with equal routing metric value + which it is permitted to split between. This object + may not be modified when the isisSysAdminState variable + is in state 'on' for this Intermediate System. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi maximumPathSplits (3)}" + DEFVAL { 2 } + ::= { isisSysObject 4 } + + isisSysMaxLSPGenInt OBJECT-TYPE + SYNTAX Unsigned32 (1..65235) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum interval, in seconds, between generated LSPs + by this Intermediate System. This object follows + the ResettingTimer behavior. The value must be + greater than any value configured for + isisSysLevelMinLSPGenInt, and should be at least 300 + seconds less than isisSysMaxAge. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi maximumLSPGenerationInterval (6)}" + DEFVAL { 900 } + ::= { isisSysObject 5 } + + isisSysPollESHelloRate OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value, in seconds, to be used for the suggested ES + configuration timer in ISH PDUs when soliciting the ES + configuration. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi pollESHelloRate (13)}" + DEFVAL { 50 } + ::= { isisSysObject 6 } + + isisSysWaitTime OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Number of seconds to delay in state 'waiting' before + entering the state 'on'. This object follows the + ResettingTimer behavior. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi waitingTime (15)}" + DEFVAL { 60 } + ::= { isisSysObject 7 } + + isisSysAdminState OBJECT-TYPE + SYNTAX IsisAdminState + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative state of this Intermediate + System. Setting this object to the value 'on' + when its current value is 'off' enables + the Intermediate System. + + Configured values MUST survive an agent reboot." + DEFVAL { off } + ::= { isisSysObject 8 } + + isisSysL2toL1Leaking OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, allow the router to leak L2 routes into L1. + + Configured values MUST survive an agent reboot." + DEFVAL { false } + ::= { isisSysObject 9 } + + isisSysMaxAge OBJECT-TYPE + SYNTAX IsisUnsigned16TC (350..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Value to place in RemainingLifeTime field of + the LSPs we generate. + This should be at least 300 seconds greater than + isisSysMaxLSPGenInt. + + Configured values MUST survive an agent reboot." + DEFVAL { 1200 } + ::= { isisSysObject 10 } + + isisSysReceiveLSPBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1492..16000) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Size of the largest buffer we are designed or + configured to store. This should be at least + as big as the maximum isisSysLevelOrigLSPBuffSize + supported by the system. + + + + If resources allow, we will store and flood LSPs + larger than isisSysReceiveLSPBufferSize, as this + can help avoid problems in networks with different + values for isisSysLevelOrigLSPBuffSize. + + Configured values MUST survive an agent reboot." + DEFVAL { 1492 } + ::= { isisSysObject 11 } + + isisSysProtSupported OBJECT-TYPE + SYNTAX BITS { + iso8473 (0), + ipv4 (1), + ipv6 (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute contains the set of protocols + supported by this Intermediate System." + ::= { isisSysObject 12 } + + isisSysNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is set to true(1), then it enables + the emission of IS-IS Notifications. If it is + set to false(2), these notifications are not sent. + + Configured values MUST survive an agent reboot." + DEFVAL { true } + ::= { isisSysObject 13 } + +-- The Level 1 Manual Area Address Table + + isisManAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisManAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of manual area addresses configured on this + Intermediate System. + + At least one row in which the value of + isisManAreaAddrExistState is active must be present. + The maximum number of rows in this table for + + + + which the object isisManAreaAddrExistState has the + value active is 3. + + An attempt to create more than 3 rows of + isisManAreaAddrEntry with state 'active' in one + instance of the IS-IS protocol should + return inconsistentValue." + REFERENCE "{ISIS.aoi manualAreaAddresses (10)}" + ::= { isisSystem 2 } + + isisManAreaAddrEntry OBJECT-TYPE + SYNTAX IsisManAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one area address manually configured + on this system. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisManAreaAddr } + ::= { isisManAreaAddrTable 1 } + + IsisManAreaAddrEntry ::= + SEQUENCE { + isisManAreaAddr + IsisOSINSAddress, + isisManAreaAddrExistState + RowStatus + } + + isisManAreaAddr OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A manually configured area address for this system. + + Note: An index for the entry {1, {49.0001} active} in + this table would be the ordered pair + (1, (0x03 0x49 0x00 0x01)), as the length of an octet + string is part of the OID." + ::= { isisManAreaAddrEntry 1 } + + isisManAreaAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The state of the isisManAreaAddrEntry. If the + isisSysAdminState for this Intermediate System is 'on' and + an attempt is made to set this object to the value + 'destroy' or 'notInService' when this is the only + isisManAreaAddrEntry in state 'active' for this + Intermediate System should return inconsistentValue. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisManAreaAddrEntry 2 } + +-- The Level 1 Area Address Table + +-- The Level 1 Area Address Table contains the +-- union of the sets of relevant area addresses configured +-- or learned from Level 1 LSPs received by this Intermediate System. + + isisAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The union of the sets of area addresses reported in all + Level 1 LSPs with fragment number zero generated by this + Intermediate System, or received from other Intermediate + Systems that are reachable via Level 1 routing." + REFERENCE "{ISIS.aoi areaAddresses (18)}" + ::= { isisSystem 3 } + + isisAreaAddrEntry OBJECT-TYPE + SYNTAX IsisAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one area address reported in a + Level 1 LSP generated or received by this Intermediate + System. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisAreaAddr } + ::= { isisAreaAddrTable 1 } + + IsisAreaAddrEntry ::= + SEQUENCE { + isisAreaAddr + IsisOSINSAddress + } + + + + + isisAreaAddr OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An area address reported in a Level 1 LSP." + ::= { isisAreaAddrEntry 1 } + +-- The Summary Address Table + +-- The Summary Address Table contains the set of summary +-- addresses manually configured for the Intermediate System. +-- +-- This is used to control leaking L1 routes into L2. + + isisSummAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSummAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of IP summary addresses to use in forming + summary TLVs originated by this Intermediate System. + + An administrator may use a summary address to combine + and modify IP Reachability announcements. If the + Intermediate system can reach any subset of the summary + address, the summary address MUST be announced instead, + at the configured metric." + ::= { isisSystem 4 } + + isisSummAddrEntry OBJECT-TYPE + SYNTAX IsisSummAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IP summary address. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisSummAddress and isisSummAddrPrefixLen is too great, + then OIDs of column instances in this table will have + more than 128 subidentifiers and cannot be accessed + using SNMPv1, SNMPv2c, or SNMPv3." + INDEX { isisSummAddressType, + isisSummAddress, + isisSummAddrPrefixLen } + + + + ::= { isisSummAddrTable 1 } + + IsisSummAddrEntry ::= + SEQUENCE { + isisSummAddressType + InetAddressType, + isisSummAddress + InetAddress, + isisSummAddrPrefixLen + InetAddressPrefixLength, + isisSummAddrExistState + RowStatus, + isisSummAddrMetric + IsisDefaultMetric, + isisSummAddrFullMetric + IsisFullMetric + } + + isisSummAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Type of IP address for this summary address." + ::= { isisSummAddrEntry 1 } + + isisSummAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address value for this summary address. + The address must not contain any set host bits + (bits set after the address prefix determined by + isisSummAddrPrefixLen). + + The type of this address is determined by the value of + the isisSummAddressType object." + ::= { isisSummAddrEntry 2 } + + isisSummAddrPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Length of the IP NetMask for this summary address. + + The values for the index objects isisSummAddress and + + + + isisSummAddrPrefixLen must be consistent. When the value + of isisSummAddress (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object isisSummAddrPrefixLen MUST be + equal to x. If not, then the index pair is not + consistent, and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { isisSummAddrEntry 3 } + + isisSummAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this summary address. Support + for 'createAndWait' and 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisSummAddrEntry 4 } + + isisSummAddrMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value to announce this summary + address within LSPs generated by this system." + DEFVAL { 20 } + ::= { isisSummAddrEntry 5 } + + isisSummAddrFullMetric OBJECT-TYPE + SYNTAX IsisFullMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The wide metric value to announce this summary + address within LSPs generated by this system." + DEFVAL { 20 } + ::= { isisSummAddrEntry 6 } + +-- The Redistribution table defines addresses that should be +-- leaked from L2 to L1 if isisSysL2toL1Leaking is enabled. + + isisRedistributeAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRedistributeAddrEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table provides criteria to decide if a route should + be leaked from L2 to L1 when Domain Wide Prefix leaking is + enabled. + + Addresses that match the summary mask in the table MUST + be announced at L1 by routers when isisSysL2toL1Leaking + is enabled. Routes that fall into the ranges specified + are announced as is, without being summarized. Routes + that do not match a summary mask are not announced." + ::= { isisSystem 5 } + + isisRedistributeAddrEntry OBJECT-TYPE + SYNTAX IsisRedistributeAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one configured IP summary + address to manage leaking L2 addresses into L1. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisRedistributeAddrAddress and + isisRedistributeAddrPrefixLen is too great, then OIDs + of column instances in this table will have more than + 128 subidentifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { isisRedistributeAddrType, + isisRedistributeAddrAddress, + isisRedistributeAddrPrefixLen } + ::= { isisRedistributeAddrTable 1 } + + IsisRedistributeAddrEntry ::= + SEQUENCE { + isisRedistributeAddrType + InetAddressType, + isisRedistributeAddrAddress + InetAddress, + isisRedistributeAddrPrefixLen + InetAddressPrefixLength, + isisRedistributeAddrExistState + RowStatus + } + + isisRedistributeAddrType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Type of IP address for this summary address." + ::= { isisRedistributeAddrEntry 1 } + + isisRedistributeAddrAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address value for this summary address. + The type of this address is determined by the + value of the isisRedistributeAddrType object. + The address must not contain any set host bits - + bits set after the address prefix determined by + isisRedistributeAddrPrefixLen." + + ::= { isisRedistributeAddrEntry 2 } + + isisRedistributeAddrPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Length of the IP NetMask for this summary address. + + The values for the index objects + isisRedistributeAddrAddress and + isisRedistributeAddrPrefixLen must be consistent. + When the value of isisRedistributeAddrAddress + (excluding the zone index, if one is present) is x, + then the bitwise logical-AND of x with the value of + the mask formed from the corresponding index object + isisRedistributeAddrPrefixLen MUST be equal to x. + If not, then the index pair is not consistent, and an + inconsistentName error must be returned on SET or + CREATE requests." + + ::= { isisRedistributeAddrEntry 3 } + + isisRedistributeAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this summary address. Support + + + + for createAndWait and notInService is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisRedistributeAddrEntry 4 } + +-- The Router Table keeps track of hostnames and router IDs +-- associated with Intermediate Systems in the area and domain. + + isisRouterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of hostnames and router ID." + ::= { isisSystem 6 } + + isisRouterEntry OBJECT-TYPE + SYNTAX IsisRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry tracks information about one Intermediate + System at one level. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisRouterSysID, + isisRouterLevel } + ::= { isisRouterTable 1 } + + IsisRouterEntry ::= + SEQUENCE { + isisRouterSysID + IsisSystemID, + isisRouterLevel + IsisISLevel, + isisRouterHostName + SnmpAdminString, + isisRouterID + Unsigned32 + } + + isisRouterSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The System ID of the Intermediate System." + + + + ::= { isisRouterEntry 1 } + + isisRouterLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level at which the information about this + Intermediate System was received." + ::= { isisRouterEntry 2 } + + isisRouterHostName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hostname listed in the LSP, or a zero-length + string if none." + ::= { isisRouterEntry 3 } + + isisRouterID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID found in the LSP, or zero if none." + ::= { isisRouterEntry 4 } + +-- The System Level Table +-- This table captures level-specific information about the system + + isisSysLevelTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSysLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Level specific information about the System." + ::= { isisSysLevel 1 } + + isisSysLevelEntry OBJECT-TYPE + SYNTAX IsisSysLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row describes variables configured for Area or Domain. + + Configured values MUST survive an agent reboot." + INDEX { isisSysLevelIndex } + + + + ::= { isisSysLevelTable 1 } + + IsisSysLevelEntry ::= + SEQUENCE { + isisSysLevelIndex + IsisISLevel, + isisSysLevelOrigLSPBuffSize + IsisLSPBuffSize, + isisSysLevelMinLSPGenInt + IsisUnsigned16TC, + isisSysLevelState + IsisLevelState, + isisSysLevelSetOverload + TruthValue, + isisSysLevelSetOverloadUntil + Unsigned32, + isisSysLevelMetricStyle + IsisMetricStyle, + isisSysLevelSPFConsiders + IsisMetricStyle, + isisSysLevelTEEnabled + TruthValue + } + + isisSysLevelIndex OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisSysLevelEntry 1 } + + isisSysLevelOrigLSPBuffSize OBJECT-TYPE + SYNTAX IsisLSPBuffSize + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum size of LSPs and SNPs originated by + this Intermediate System at this level. This + object may not be modified when the isisSysAdminState + variable is in state 'on' for this Intermediate System." + REFERENCE "{ISIS.aoi originatingL1LSPBufferSize (9)}" + DEFVAL { 1492 } + ::= { isisSysLevelEntry 2 } + + isisSysLevelMinLSPGenInt OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between successive + generation of LSPs with the same LSPID at this level + by this Intermediate System." + REFERENCE "{ISIS.aoi minimumLSPGenerationInterval (11)}" + DEFVAL { 30 } + ::= { isisSysLevelEntry 3 } + + isisSysLevelState OBJECT-TYPE + SYNTAX IsisLevelState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the database at this level. + The value 'off' indicates that IS-IS is not active at + this level. + The value 'on' indicates that IS-IS is active at this + level and is not overloaded. + The value 'waiting' indicates a database that is low on + an essential resource, such as memory. + The administrator may force the state to 'overloaded' + by setting the object isisSysLevelSetOverload. + If the state is 'waiting' or 'overloaded', we + originate LSPs with the overload bit set." + REFERENCE "{ISIS.aoi l1State (17)}" + ::= { isisSysLevelEntry 4 } + + isisSysLevelSetOverload OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administratively set the overload bit for the level. + The overload bit MUST continue to be set if the + implementation runs out of memory, independent of + this variable. It may also be set manually independent + of this variable, using the isisSysLevelSetOverloadUntil + object." + DEFVAL { false } + ::= { isisSysLevelEntry 5 } + + isisSysLevelSetOverloadUntil OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Seconds until clearing manually set Overload Bit" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "If this object is non-zero, the overload bit is set at + this level when the isisSysAdminState variable goes to + state 'on' for this Intermediate System. The overload bit + remains set for isisSysLevelSetOverloadUntil seconds. + When isisSysLevelSetOverloadUntil seconds have elapsed, + the overload flag remains set if the implementation has + run out of memory, or if it is set manually using the + isisSysLevelSetOverload object. + + If isisSysLevelSetOverload is false, the system clears + the overload bit when isisSysLevelSetOverloadUntil seconds + have elapsed, if the system has not run out of memory." + ::= { isisSysLevelEntry 6 } + + isisSysLevelMetricStyle OBJECT-TYPE + SYNTAX IsisMetricStyle + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Which style of metric do we generate in our LSPs + at this level?" + DEFVAL { narrow } + ::= { isisSysLevelEntry 7 } + + isisSysLevelSPFConsiders OBJECT-TYPE + SYNTAX IsisMetricStyle + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Which style of metric do we consider in our + SPF computation at this level?" + DEFVAL { narrow } + ::= { isisSysLevelEntry 8 } + + isisSysLevelTEEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Do we do Traffic Engineering at this level?" + DEFVAL { false } + ::= { isisSysLevelEntry 9 } + +-- Static to provide next CircIndex + + isisNextCircIndex OBJECT-TYPE + SYNTAX IndexIntegerNextFree + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to assist a management + application in creating new rows in the + isisCircTable. If it is possible to create + a new instance of isisCircEntry, then this + object will contain a non-zero value that + is not in use as the index of any row in the + isisCircTable. The network manager reads the + value of this object and then (if the + value read is non-zero) attempts to create + the corresponding instance of isisCircEntry. + If the set request fails with the code + 'inconsistentValue', then the process must be + repeated; if the set request succeeds, then + the agent will change the value of this object + according to an implementation-specific + algorithm." + ::= { isisCirc 1 } + +-- The Circuit Table +-- Each broadcast or point-to-point interface on the system +-- corresponds to one entry in the Circuit table. However, there +-- may be multiple X.25 DA circuit entries in the Circuit table +-- for a given X.25 interface. + + isisCircTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of circuits used by this + Intermediate System." + ::= { isisCirc 2 } + + isisCircEntry OBJECT-TYPE + SYNTAX IsisCircEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircEntry exists for each circuit configured + for Integrated IS-IS on this system. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisCircIndex } + ::= { isisCircTable 1 } + + + + + IsisCircEntry ::= + SEQUENCE { + isisCircIndex + IndexInteger, + isisCircIfIndex + InterfaceIndex, + isisCircAdminState + IsisAdminState, + isisCircExistState + RowStatus, + isisCircType + INTEGER, + isisCircExtDomain + TruthValue, + isisCircLevelType + IsisLevel, + isisCircPassiveCircuit + TruthValue, + isisCircMeshGroupEnabled + INTEGER, + isisCircMeshGroup + Unsigned32, + isisCircSmallHellos + TruthValue, + isisCircLastUpTime + TimeStamp, + isisCirc3WayEnabled + TruthValue, + isisCircExtendedCircID + Unsigned32 + } + + isisCircIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify this circuit. + When creating a row in this table, the + isisNextCircIndex object should be retrieved, + and its value should be specified as the value + of this index using a SET operation. A retrieved + value of zero(0) indicates that no rows can be + created at this time." + ::= { isisCircEntry 1 } + + isisCircIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of ifIndex for the interface to which this + circuit corresponds. This object cannot be modified + after creation." + ::= { isisCircEntry 2 } + + isisCircAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative state of the circuit." + DEFVAL { off } + ::= { isisCircEntry 3 } + + isisCircExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this circuit. Setting the state + to 'notInService' halts the generation and processing of + IS-IS protocol PDUs on this circuit. Setting the state + to destroy will also erase any configuration associated + with the circuit. Support for 'createAndWait' and + 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisCircEntry 4 } + + isisCircType OBJECT-TYPE + SYNTAX INTEGER + { + broadcast(1), + ptToPt(2), + staticIn(3), + staticOut(4), + dA(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the circuit. This object follows the + ReplaceOnlyWhileDisabled behavior. The type specified + must be compatible with the type of the interface defined + + + + by the value of isisCircIfIndex." + REFERENCE "{ISIS.aoi type (33)}" + ::= { isisCircEntry 5 } + + isisCircExtDomain OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, suppress normal transmission of and + interpretation of Intra-domain IS-IS PDUs on this + circuit." + REFERENCE "{ISIS.aoi externalDomain (46)}" + DEFVAL { false } + ::= { isisCircEntry 6 } + + isisCircLevelType OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates which type of packets will be sent and + accepted on this circuit. The values set will be + saved, but the values used will be modified by + the settings of isisSysLevelType. Thus, if the + isisSysTpe is level2 and the isisCircLevelType + for a circuit is level1, the circuit will not send + or receive IS-IS packets. This object follows the + ReplaceOnlyWhileDisabled behavior." + DEFVAL { level1and2 } + ::= { isisCircEntry 7 } + + isisCircPassiveCircuit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Should we include this interface in LSPs, even if + it is not running the IS-IS Protocol?" + DEFVAL { false } + ::= { isisCircEntry 8 } + + isisCircMeshGroupEnabled OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + blocked(2), + set(3) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Is this port a member of a mesh group, or is it + blocked? Circuits in the same mesh group act as a + virtual multiaccess network. LSPs seen on one circuit + in a mesh group will not be flooded to another circuit + in the same mesh group." + REFERENCE "{ RFC 2973 }" + DEFVAL { inactive } + ::= { isisCircEntry 9 } + + isisCircMeshGroup OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuits in the same mesh group act as a virtual + multiaccess network. LSPs seen on one circuit in + a mesh group will not be flooded to another circuit + in the same mesh group. If isisCircMeshGroupEnabled + is inactive or blocked, this value is ignored." + REFERENCE "{ RFC 2973 }" + ::= { isisCircEntry 10 } + + isisCircSmallHellos OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Can we send unpadded hellos on LAN circuits? False + means the LAN Hellos must be padded. + Implementations should allow the administrator to read + this value. An implementation need not be able to + support unpadded hellos to be conformant." + DEFVAL { false } + ::= { isisCircEntry 11 } + + isisCircLastUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How long the circuit has been enabled, measured in + hundredths of seconds since the last re-initialization + of the network management subsystem; 0 if the + circuit has never been 'on'." + + + + ::= { isisCircEntry 12 } + + isisCirc3WayEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Is this circuit enabled to run 3Way handshake?" + DEFVAL { true } + ::= { isisCircEntry 13 } + + isisCircExtendedCircID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be used as the extended circuit ID in + 3Way handshake. This value is only used if + isisCirc3WayEnabled is true, and it must be unique + across all circuits on this IS." + ::= { isisCircEntry 14 } + +-- The Circuit Level Table +-- This table captures level-specific information about a circuit + + isisCircLevelTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Level specific information about circuits used by IS-IS." + ::= { isisCircLevelValues 1 } + + isisCircLevelEntry OBJECT-TYPE + SYNTAX IsisCircLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircLevelEntry exists for each level on + each circuit configured for Integrated IS-IS on + this system. + + Configured values MUST survive an agent reboot." + INDEX { isisCircIndex, + isisCircLevelIndex } + ::= { isisCircLevelTable 1 } + + IsisCircLevelEntry ::= + + + + SEQUENCE { + isisCircLevelIndex + IsisISLevel, + isisCircLevelMetric + IsisDefaultMetric, + isisCircLevelWideMetric + IsisWideMetric, + isisCircLevelISPriority + IsisISPriority, + isisCircLevelIDOctet + Unsigned32, + isisCircLevelID + IsisCircuitID, + isisCircLevelDesIS + IsisCircuitID, + isisCircLevelHelloMultiplier + Unsigned32, + isisCircLevelHelloTimer + Unsigned32, + isisCircLevelDRHelloTimer + Unsigned32, + isisCircLevelLSPThrottle + IsisUnsigned16TC, + isisCircLevelMinLSPRetransInt + Unsigned32, + isisCircLevelCSNPInterval + Unsigned32, + isisCircLevelPartSNPInterval + Unsigned32 + } + + isisCircLevelIndex OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisCircLevelEntry 1 } + + isisCircLevelMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The metric value of this circuit for this level." + REFERENCE "{ISIS.aoi l1DefaultMetric (35)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 2 } + + + + isisCircLevelWideMetric OBJECT-TYPE + SYNTAX IsisWideMetric + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The wide metric value of this circuit for this level." + DEFVAL { 10 } + ::= { isisCircLevelEntry 3 } + + isisCircLevelISPriority OBJECT-TYPE + SYNTAX IsisISPriority + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority for becoming the LAN-Designated + Intermediate System at this level." + REFERENCE "{ISIS.aoi l2IntermediateSystemPriority (73)}" + DEFVAL { 64 } + ::= { isisCircLevelEntry 4 } + + isisCircLevelIDOctet OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A one-byte identifier for the circuit selected by the + Intermediate System. + + On point-to-point circuits, the value is used as the Local + Circuit ID in point-to-point IIH PDUs transmitted on this + circuit. In this case, values of isisCircLevelIDOctet do + not need to be unique. + + For broadcast circuits, the value is used to generate the + LAN ID that will be used if this Intermediate System is + elected as the Designated IS on this circuit. The value + is required to differ on LANs where the Intermediate System + is the Designated Intermediate System." + ::= { isisCircLevelEntry 5 } + + isisCircLevelID OBJECT-TYPE + SYNTAX IsisCircuitID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "On a point-to-point circuit with a fully initialized + adjacency to a peer IS, the value of this object is + the circuit ID negotiated during adjacency initialization. + + + + On a point to point circuit without such an adjacency, + the value is the concatenation of the local system ID + and the one-byte isisCircLevelIDOctet for this circuit, + i.e., the value that would be proposed for the circuit ID. + On other circuit types, the value returned is the zero- + length OCTET STRING." + REFERENCE "{ISIS.aoi ptPtCircuitID (51)}" + ::= { isisCircLevelEntry 6 } + + isisCircLevelDesIS OBJECT-TYPE + SYNTAX IsisCircuitID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the LAN-Designated Intermediate System + on this circuit at this level. If, for any reason, + this system is not partaking in the relevant + Designated Intermediate System election process, + then the value returned is the zero-length OCTET STRING." + REFERENCE "{ISIS.aoi l2DesignatedIntermediateSystem (75)}" + ::= { isisCircLevelEntry 7 } + + isisCircLevelHelloMultiplier OBJECT-TYPE + SYNTAX Unsigned32 (2..100) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value is multiplied by the corresponding HelloTimer, + and the result in seconds (rounded up) is used as the + holding time in transmitted hellos, to be used by + receivers of hello packets from this IS." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 8 } + + isisCircLevelHelloTimer OBJECT-TYPE + SYNTAX Unsigned32 (10..600000) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum period, in milliseconds, between IIH PDUs + on multiaccess networks at this level for LANs. + The value at L1 is used as the period between + Hellos on L1L2 point-to-point circuits. Setting + this value at level 2 on an L1L2 point-to-point + circuit will result in an error of InconsistentValue. + + + + + This object follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 3000 } + ::= { isisCircLevelEntry 9 } + + isisCircLevelDRHelloTimer OBJECT-TYPE + SYNTAX Unsigned32 (10..120000) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Period, in milliseconds, between Hello PDUs on + multiaccess networks when this IS is the Designated + Intermediate System. This object follows the + ResettingTimer behavior." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 1000 } + ::= { isisCircLevelEntry 10 } + + isisCircLevelLSPThrottle OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimal interval of time, in milliseconds, between + transmissions of LSPs on an interface at this level." + REFERENCE + "{ISIS.aoi minimumBroadcastLSPTransmissionInterval (5)}" + DEFVAL { 30 } + ::= { isisCircLevelEntry 11 } + + isisCircLevelMinLSPRetransInt OBJECT-TYPE + SYNTAX Unsigned32 (1..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between re-transmission of + an LSP at this level. This object follows the + ResettingTimer behavior. + + Note that isisCircLevelLSPThrottle controls + how fast we send back-to-back LSPs. This variable + controls how fast we re-send the same LSP." + REFERENCE "{ISIS.aoi minimumLSPTransmissionInterval (5)}" + DEFVAL { 5 } + ::= { isisCircLevelEntry 12 } + + + + isisCircLevelCSNPInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Interval of time, in seconds, between periodic + transmission of a complete set of CSNPs on + multiaccess networks if this router is the + designated router at this level. + This object follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi completeSNPInterval (8)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 13 } + + isisCircLevelPartSNPInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..120) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between sending Partial + Sequence Number PDUs at this level. This object + follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi partialSNPInterval (14)}" + DEFVAL { 2 } + ::= { isisCircLevelEntry 14 } + +-- isisSystemCounterTable keeps track of system-wide events. + + isisSystemCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSystemCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "System-wide counters for this Intermediate System." + ::= { isisCounters 1 } + + isisSystemCounterEntry OBJECT-TYPE + SYNTAX IsisSystemCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "System-wide IS-IS counters." + INDEX { isisSysStatLevel } + ::= { isisSystemCounterTable 1 } + + IsisSystemCounterEntry ::= + + + + SEQUENCE { + isisSysStatLevel + IsisISLevel, + isisSysStatCorrLSPs + Counter32, + isisSysStatAuthTypeFails + Counter32, + isisSysStatAuthFails + Counter32, + isisSysStatLSPDbaseOloads + Counter32, + isisSysStatManAddrDropFromAreas + Counter32, + isisSysStatAttmptToExMaxSeqNums + Counter32, + isisSysStatSeqNumSkips + Counter32, + isisSysStatOwnLSPPurges + Counter32, + isisSysStatIDFieldLenMismatches + Counter32, + isisSysStatPartChanges + Counter32, + isisSysStatSPFRuns + Counter32, + isisSysStatLSPErrors + Counter32 + } + + isisSysStatLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisSystemCounterEntry 1 } + + isisSysStatCorrLSPs OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of corrupted in-memory frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of corrupted in-memory LSPs detected. + + LSPs received from the wire with a bad checksum + are silently dropped and are not counted. + + + + + LSPs received from the wire with parse errors + are counted by isisSysStatLSPErrors." + REFERENCE "{ISIS.aoi corruptedLSPsDetected (19)}" + ::= { isisSystemCounterEntry 2 } + + isisSysStatAuthTypeFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with authentication type mismatches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication type mismatches recognized + by this Intermediate System." + ::= { isisSystemCounterEntry 3 } + + isisSysStatAuthFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with authentication key failures" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication key failures recognized + by this Intermediate System." + ::= { isisSystemCounterEntry 4 } + + isisSysStatLSPDbaseOloads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the LSP database has become + overloaded." + REFERENCE "{ISIS.aoi lSPL1DatabaseOverloads (20)}" + ::= { isisSystemCounterEntry 5 } + + isisSysStatManAddrDropFromAreas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a manual address has been dropped from + the area." + REFERENCE "{ISIS.aoi manualAddressesDroppedFromArea (21)}" + ::= { isisSystemCounterEntry 6 } + + isisSysStatAttmptToExMaxSeqNums OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Number of times the IS has attempted to exceed the + maximum sequence number." + REFERENCE + "{ISIS.aoi attemptsToExceedmaximumSequenceNumber (22)}" + ::= { isisSystemCounterEntry 7 } + + isisSysStatSeqNumSkips OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a sequence number skip has occurred." + REFERENCE "{ISIS.aoi sequenceNumberSkips (23)}" + ::= { isisSystemCounterEntry 8 } + + isisSysStatOwnLSPPurges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a zero-aged copy of the system's own LSP + is received from some other node." + REFERENCE "{ISIS.aoi ownLSPPurges (24)}" + ::= { isisSystemCounterEntry 9 } + + isisSysStatIDFieldLenMismatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with ID length mismatches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a PDU is received with a different value + for ID field length from that of the receiving system." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisSystemCounterEntry 10 } + + isisSysStatPartChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Partition changes." + ::= { isisSystemCounterEntry 11 } + + isisSysStatSPFRuns OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times we ran SPF at this level." + ::= { isisSystemCounterEntry 12 } + + isisSysStatLSPErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with errors that we have received" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of LSPs with errors we have received." + ::= { isisSystemCounterEntry 13 } + +-- isisCircuitCounterTable keeps track of events +-- specific to a circuit and a level + + isisCircuitCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircuitCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Circuit specific counters for this + Intermediate System." + ::= { isisCounters 2 } + + isisCircuitCounterEntry OBJECT-TYPE + SYNTAX IsisCircuitCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircuitCounterEntry exists for each circuit + used by Integrated IS-IS on this system." + INDEX { isisCircIndex, + isisCircuitType } + ::= { isisCircuitCounterTable 1 } + + IsisCircuitCounterEntry ::= SEQUENCE { + isisCircuitType + INTEGER, + isisCircAdjChanges + Counter32, + isisCircNumAdj + Unsigned32, + isisCircInitFails + Counter32, + isisCircRejAdjs + + + + Counter32, + isisCircIDFieldLenMismatches + Counter32, + isisCircMaxAreaAddrMismatches + Counter32, + isisCircAuthTypeFails + Counter32, + isisCircAuthFails + Counter32, + isisCircLANDesISChanges + Counter32 + } + + isisCircuitType OBJECT-TYPE + SYNTAX INTEGER + { + lanlevel1(1), + lanlevel2(2), + p2pcircuit(3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "What type of circuit saw these counts? + + The point-to-point Hello PDU includes + both L1 and L2, and ISs form a single + adjacency on point-to-point links. + Thus, we combine counts on + point-to-point links into one group." + ::= { isisCircuitCounterEntry 1 } + + isisCircAdjChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an adjacency state change has + occurred on this circuit." + REFERENCE "{ISIS.aoi changesInAdjacencyState (40)}" + ::= { isisCircuitCounterEntry 2 } + + isisCircNumAdj OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of adjacencies on this circuit." + + + + REFERENCE "{ISIS.aoi changesInAdjacencyState (40)}" + ::= { isisCircuitCounterEntry 3 } + + isisCircInitFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times initialization of this circuit has + failed. This counts events such as PPP NCP failures. + Failures to form an adjacency are counted by + isisCircRejAdjs." + ::= { isisCircuitCounterEntry 4 } + + isisCircRejAdjs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an adjacency has been rejected on + this circuit." + REFERENCE "{ISIS.aoi rejectedAdjacencies (42)}" + ::= { isisCircuitCounterEntry 5 } + + isisCircIDFieldLenMismatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with ID field length mismatch" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with an ID + field length different from that for this system has been + received." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisCircuitCounterEntry 6 } + + isisCircMaxAreaAddrMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with a + max area address field different from that for this + system has been received." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisCircuitCounterEntry 7 } + + isisCircAuthTypeFails OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with + an auth type field different from that for this + system has been received." + ::= { isisCircuitCounterEntry 8 } + + isisCircAuthFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with + the correct auth type has failed to pass authentication + validation." + ::= { isisCircuitCounterEntry 9 } + + isisCircLANDesISChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the Designated IS has changed + on this circuit at this level. If the circuit is + point to point, this count is zero." + ::= { isisCircuitCounterEntry 10 } + +-- isisPacketCounterTable keeps track of the number of IS-IS +-- control packets sent and received at each level + + isisPacketCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisPacketCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about IS-IS protocol traffic at one level, + on one circuit, in one direction." + ::= { isisCounters 3 } + + isisPacketCounterEntry OBJECT-TYPE + SYNTAX IsisPacketCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about IS-IS protocol traffic at one level, + on one circuit, in one direction." + + + + INDEX { isisCircIndex, + isisPacketCountLevel, + isisPacketCountDirection } + ::= { isisPacketCounterTable 1 } + + IsisPacketCounterEntry ::= + SEQUENCE { + isisPacketCountLevel + IsisISLevel, + isisPacketCountDirection + INTEGER, + isisPacketCountIIHello + Counter32, + isisPacketCountISHello + Counter32, + isisPacketCountESHello + Counter32, + isisPacketCountLSP + Counter32, + isisPacketCountCSNP + Counter32, + isisPacketCountPSNP + Counter32, + isisPacketCountUnknown + Counter32 + } + + isisPacketCountLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level at which these PDU counts have been collected." + ::= { isisPacketCounterEntry 1 } + + isisPacketCountDirection OBJECT-TYPE + SYNTAX INTEGER + { + sending(1), + receiving(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Were we sending or receiving these PDUs?" + ::= { isisPacketCounterEntry 2 } + + isisPacketCountIIHello OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "Number of IS-IS Hellos frames seen in this direction + at this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS Hello PDUs seen in this + direction at this level. + + Point-to-Point IIH PDUs are counted at + the lowest enabled level: at L1 on L1 or L1L2 circuits, + and at L2 otherwise." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 3 } + + isisPacketCountISHello OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of ES-IS frames seen in this direction at + this level." + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ES-IS Hello PDUs seen in this + direction. ISH PDUs are counted at the + lowest enabled level: at L1 on L1 or L1L2 + circuits, and at L2 otherwise." + ::= { isisPacketCounterEntry 4 } + + isisPacketCountESHello OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of ES Hello frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ES Hello PDUs seen in this + direction. ESH PDUs are counted at the + lowest enabled level: at L1 on L1 or L1L2 + circuits, and at L2 otherwise." + ::= { isisPacketCounterEntry 5 } + + isisPacketCountLSP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS LSP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of IS-IS LSPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 6 } + + isisPacketCountCSNP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS CSNP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS CSNPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 7 } + + isisPacketCountPSNP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS PSNP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS PSNPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 8 } + + isisPacketCountUnknown OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of unknown IS-IS frames seen at this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unknown IS-IS PDUs seen + at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 9 } + +-- The IS Adjacency Table +-- +-- Each adjacency to an IS corresponds to one entry in this +-- table. + + isisISAdjTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The table of adjacencies to Intermediate Systems." + ::= { isisISAdj 1 } + + isisISAdjEntry OBJECT-TYPE + SYNTAX IsisISAdjEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to one adjacency to an + Intermediate System on this system. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex } + ::= { isisISAdjTable 1 } + + IsisISAdjEntry ::= + SEQUENCE { + isisISAdjIndex + Unsigned32, + isisISAdjState + INTEGER, + isisISAdj3WayState + INTEGER, + isisISAdjNeighSNPAAddress + IsisOSINSAddress, + isisISAdjNeighSysType + INTEGER, + isisISAdjNeighSysID + IsisSystemID, + isisISAdjNbrExtendedCircID + Unsigned32, + isisISAdjUsage + IsisLevel, + isisISAdjHoldTimer + IsisUnsigned16TC, + isisISAdjNeighPriority + IsisISPriority, + isisISAdjLastUpTime + TimeStamp + } + + isisISAdjIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A unique value identifying the IS adjacency from all + other such adjacencies on this circuit. This value is + automatically assigned by the system when the adjacency + is created." + ::= { isisISAdjEntry 1 } + + isisISAdjState OBJECT-TYPE + SYNTAX INTEGER + { + down (1), + initializing (2), + up (3), + failed(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the adjacency." + REFERENCE "{ISIS.aoi adjacencyState (78)}" + ::= { isisISAdjEntry 2 } + + isisISAdj3WayState OBJECT-TYPE + SYNTAX INTEGER + { + up (0), + initializing (1), + down (2), + failed (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 3Way state of the adjacency. These are picked + to match the historical on-the-wire representation + of the 3Way state and are not intended to match + isisISAdjState." + REFERENCE "{ RFC 3373 }" + ::= { isisISAdjEntry 3 } + + isisISAdjNeighSNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNPA address of the neighboring system." + REFERENCE "{ISIS.aoi neighbourSNPAAddress (79)}" + ::= { isisISAdjEntry 4 } + + + + isisISAdjNeighSysType OBJECT-TYPE + SYNTAX INTEGER + { + l1IntermediateSystem(1), + l2IntermediateSystem(2), + l1L2IntermediateSystem(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the neighboring system." + REFERENCE "{ISIS.aoi neighbourSystemType (80)}" + ::= { isisISAdjEntry 5 } + + isisISAdjNeighSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system ID of the neighboring Intermediate + System." + REFERENCE "{ISIS.aoi neighbourSystemIds (83)}" + ::= { isisISAdjEntry 6 } + + isisISAdjNbrExtendedCircID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 4-byte Extended Circuit ID learned from the + Neighbor during 3-way handshake, or 0." + ::= { isisISAdjEntry 7 } + + isisISAdjUsage OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How is the adjacency used? On a point-to-point link, + this might be level1and2, but on a LAN, the usage will + be level1 on the adjacency between peers at L1, + and level2 for the adjacency between peers at L2." + REFERENCE "{ISIS.aoi adjacencyUsage (82)}" + ::= { isisISAdjEntry 8 } + + isisISAdjHoldTimer OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The holding time, in seconds, for this adjacency. + This value is based on received IIH PDUs and + the elapsed time since receipt." + REFERENCE "{ISIS.aoi holdingTimer (85)}" + ::= { isisISAdjEntry 9 } + + isisISAdjNeighPriority OBJECT-TYPE + SYNTAX IsisISPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Priority of the neighboring Intermediate System for + becoming the Designated Intermediate System." + REFERENCE "{ISIS.aoi lANPriority (86)}" + ::= { isisISAdjEntry 10 } + + isisISAdjLastUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the adjacency most recently entered the state 'up', + measured in hundredths of a second since the last + re-initialization of the network management subsystem. + Holds 0 if the adjacency has never been in state 'up'." + ::= { isisISAdjEntry 11 } + +-- The IS Adjacency Area Address Table + +-- The IS Adjacency Area Address Table contains the set of +-- Area Addresses of neighboring +-- Intermediate Systems as reported in IIH PDUs. + + isisISAdjAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of Area Addresses of + neighboring Intermediate Systems as reported in received + IIH PDUs." + REFERENCE "{ISIS.aoi areaAddressesOfNeighbour (84)}" + ::= { isisISAdj 2 } + + + + + isisISAdjAreaAddrEntry OBJECT-TYPE + SYNTAX IsisISAdjAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one Area Address reported by a + neighboring Intermediate System in its IIH PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjAreaAddrIndex } + ::= { isisISAdjAreaAddrTable 1 } + + IsisISAdjAreaAddrEntry ::= + SEQUENCE { + isisISAdjAreaAddrIndex + Unsigned32, + isisISAdjAreaAddress + IsisOSINSAddress + } + + isisISAdjAreaAddrIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index for the areas associated with one neighbor. + This provides a simple way to walk the table." + ::= { isisISAdjAreaAddrEntry 1 } + + isisISAdjAreaAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One Area Address as reported in IIH PDUs received from + the neighbor." + ::= { isisISAdjAreaAddrEntry 2 } + +-- The IS Adjacency IP Address Table + +-- The IS Adjacency IP Address Table contains the +-- set of IP Addresses of neighboring Intermediate Systems +-- as reported in received IIH PDUs. + + isisISAdjIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjIPAddrEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of IP Addresses of + neighboring Intermediate Systems as reported in received + IIH PDUs." + ::= { isisISAdj 3 } + + isisISAdjIPAddrEntry OBJECT-TYPE + SYNTAX IsisISAdjIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IP Address reported by a + neighboring Intermediate System in its IIH PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjIPAddrIndex + } + ::= { isisISAdjIPAddrTable 1 } + + IsisISAdjIPAddrEntry ::= + SEQUENCE { + isisISAdjIPAddrIndex + Unsigned32, + isisISAdjIPAddrType + InetAddressType, + isisISAdjIPAddrAddress + InetAddress + } + + isisISAdjIPAddrIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to this table that identifies the IP addresses + to which this entry belongs." + ::= { isisISAdjIPAddrEntry 1 } + + isisISAdjIPAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of one IP Address as reported in IIH PDUs + + + + received from the neighbor." + ::= { isisISAdjIPAddrEntry 2 } + + isisISAdjIPAddrAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One IP Address as reported in IIH PDUs received from the + neighbor. + + The type of this address is determined by the value of + the isisISAdjIPAddrType object." + ::= { isisISAdjIPAddrEntry 3 } + +-- The IS Adjacency Protocol Supported Table +-- +-- The IS Adjacency Protocol Supported Table contains the set of +-- protocols supported by neighboring +-- Intermediate Systems as reported in received IIH PDUs. + + isisISAdjProtSuppTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjProtSuppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of protocols supported by + neighboring Intermediate Systems as reported in received + IIH PDUs." + ::= { isisISAdj 4 } + + isisISAdjProtSuppEntry OBJECT-TYPE + SYNTAX IsisISAdjProtSuppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one protocol supported by a + neighboring Intermediate System as reported in its IIH + PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjProtSuppProtocol } + ::= { isisISAdjProtSuppTable 1 } + + IsisISAdjProtSuppEntry ::= + SEQUENCE { + + + + isisISAdjProtSuppProtocol + IsisSupportedProtocol + } + + isisISAdjProtSuppProtocol OBJECT-TYPE + SYNTAX IsisSupportedProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One supported protocol as reported in IIH PDUs received + from the neighbor." + ::= { isisISAdjProtSuppEntry 1 } + +-- The Reachable Address Group +-- +-- The Reachable Address Table +-- Each entry records information about a reachable address +-- (NSAP or address prefix) manually configured on the system +-- or learned through another protocol. + + isisRATable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of Reachable Addresses to NSAPs or Address + Prefixes." + ::= { isisReachAddr 1 } + + isisRAEntry OBJECT-TYPE + SYNTAX IsisRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines a configured Reachable Address + to an NSAP or Address Prefix. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisCircIndex, + isisRAIndex } + ::= { isisRATable 1 } + + IsisRAEntry ::= + SEQUENCE { + isisRAIndex + Unsigned32, + isisRAExistState + RowStatus, + + + + isisRAAdminState + IsisAdminState, + isisRAAddrPrefix + IsisOSINSAddress, + isisRAMapType + INTEGER, + isisRAMetric + IsisDefaultMetric, + isisRAMetricType + IsisMetricType, + isisRASNPAAddress + IsisOSINSAddress, + isisRASNPAMask + IsisOSINSAddress, + isisRASNPAPrefix + IsisOSINSAddress, + isisRAType + INTEGER + } + + isisRAIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier for this isisRAEntry. This value must be + unique amongst all Reachable Addresses on the same parent + Circuit." + ::= { isisRAEntry 1 } + + isisRAExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this Reachable Address. This + object follows the ManualOrAutomatic behaviors. Support + for 'createAndWait' and 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisRAEntry 2 } + + isisRAAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The administrative state of the Reachable Address. This + object follows the ManualOrAutomatic behaviors." + DEFVAL { off } + ::= { isisRAEntry 3 } + + isisRAAddrPrefix OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination of this Reachable Address. This is an + Address Prefix. This object follows the + ReplaceOnlyWhileDisabled and ManualOrAutomatic + behaviors." + REFERENCE "{ISIS.aoi addressPrefix (98)}" + ::= { isisRAEntry 4 } + + isisRAMapType OBJECT-TYPE + SYNTAX INTEGER + { + none (1), + explicit (2), + extractIDI (3), + extractDSP (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of mapping to be employed to ascertain the SNPA + Address that should be used in forwarding PDUs for this + Reachable Address prefix. This object follows the + ManualOrAutomatic behavior. The following values of + mapping type are defined: + + none: The mapping is null because the neighbor SNPA is + implicit by nature of the subnetwork (e.g., a + point-to-point linkage). + + explicit: The subnetwork addresses in the object + isisRASNPAAddress are to be used. + + extractIDI: The SNPA is embedded in the IDI of + the destination NSAP Address. The mapping + algorithm extracts the SNPA to be used + according to the format and encoding rules of + ISO8473/Add2. This SNPA extraction algorithm can + be used in conjunction with Reachable Address + prefixes from the X.121, F.69, E.163, and E.164 + + + + addressing subdomains. + + extractDSP: All, or a suffix, of the SNPA is embedded + in the DSP of the destination address. This SNPA + extraction algorithm extracts the embedded + subnetwork addressing information by performing a + logical AND of the isisRASNPAMask object value + with the destination address. The part of the + SNPA extracted from the destination NSAP is + appended to the isisRASNPAPrefix object value to + form the next hop subnetwork addressing + information." + + REFERENCE "{ISO10589-ISIS.aoi mappingType (107)}" + ::= { isisRAEntry 5 } + + isisRAMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value for reaching the specified + prefix over this circuit. This object follows the + ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi DefaultMetric (99)}" + DEFVAL { 20 } + ::= { isisRAEntry 6 } + + isisRAMetricType OBJECT-TYPE + SYNTAX IsisMetricType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the metric is internal or + external. This object follows the ManualOrAutomatic + behavior." + REFERENCE "{ISIS.aoi DefaultMetricType (103)}" + DEFVAL { internal } + ::= { isisRAEntry 7 } + + isisRASNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNPA Address to which a PDU may be forwarded in + order to reach a destination that matches the address + prefix of the Reachable Address. This object follows the + + + + ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi sNPAAddresses (109)}" +-- Note only one address may be specified per Reachable Address +-- in the MIB + DEFVAL { ''H } + ::= { isisRAEntry 8 } + + isisRASNPAMask OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask with 1 bit indicating the positions in the + effective destination address from which embedded SNPA + information is to be extracted. For the extraction, the + first octet of the isisRASNPAMask object value is aligned + with the first octet (AFI) of the NSAP Address. If the + isisRASNPAMask object value and NSAP Address are of + different lengths, the shorter of the two is logically + padded with zeros before performing the extraction. This + object follows the ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi sNPAMask (122)}" + DEFVAL { '00'H } + ::= { isisRAEntry 9 } + + isisRASNPAPrefix OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A fixed SNPA prefix for use when the isisRAMapType is + extractDSP. The SNPA Address to use is formed by + concatenating the fixed SNPA prefix with a variable SNPA + part that is extracted from the effective destination + address. For Reachable Address prefixes in which the + entire SNPA is embedded in the DSP, the SNPA Prefix shall + be null. This object follows the ManualOrAutomatic + behavior." + REFERENCE "{ISIS.aoi sNPAPrefix (123)}" + DEFVAL { '00'H } + ::= { isisRAEntry 10 } + + isisRAType OBJECT-TYPE + SYNTAX INTEGER + { + manual (1), + automatic (2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Reachable address. Those of type + manual are created by the network manager. Those + of type automatic are created through propagation + of routing information from another routing + protocol (e.g., IDRP). " + DEFVAL {manual} + ::= {isisRAEntry 11 } + + +-- The IP Reachable Address Table + +-- Each entry records information about one IP reachable +-- address manually configured on this system or learned from +-- another protocol. + + isisIPRATable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisIPRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of IP Reachable Addresses to networks, + subnetworks, or hosts either manually configured or + learned from another protocol." + ::= { isisIPReachAddr 1 } + + isisIPRAEntry OBJECT-TYPE + SYNTAX IsisIPRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines an IP Reachable Address to a network, + subnetwork, or host. + + Each IP Reachable Address may have multiple entries in the + table, one for each equal cost path to the reachable + address. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisIPRADestr, isisIPRADestPrefixLen, and + isisIPRANextHopIndex is too great, then OIDs of column + instances in this table will have more than 128 + subidentifiers and cannot be accessed using SNMPv1, + + + + SNMPv2c, or SNMPv3." + INDEX { isisSysLevelIndex, + isisIPRADestType, + isisIPRADest, + isisIPRADestPrefixLen, + isisIPRANextHopIndex } + ::= { isisIPRATable 1 } + + IsisIPRAEntry ::= + SEQUENCE { + isisIPRADestType + InetAddressType, + isisIPRADest + InetAddress, + isisIPRADestPrefixLen + InetAddressPrefixLength, + isisIPRANextHopIndex + Unsigned32, + isisIPRANextHopType + InetAddressType, + isisIPRANextHop + InetAddress, + isisIPRAType + INTEGER, + isisIPRAExistState + RowStatus, + isisIPRAAdminState + IsisAdminState, + isisIPRAMetric + IsisDefaultMetric, + isisIPRAMetricType + IsisMetricType, + isisIPRAFullMetric + IsisFullMetric, + isisIPRASNPAAddress + IsisOSINSAddress, + isisIPRASourceType + INTEGER + } + + isisIPRADestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of this IP Reachable Address." + ::= { isisIPRAEntry 1 } + + + + + isisIPRADest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination of this IP Reachable Address. This is + a network address, subnetwork address, or host + address. + + The type of this address is determined by the value of + the isisIPRADestType object." + + ::= { isisIPRAEntry 2 } + + isisIPRADestPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length of the IP Netmask for Reachability Address. + + The values for the index objects isisIPRADest and + isisIPRADestPrefixLen must be consistent. When the value + of isisIPRADest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object isisIPRADestPrefixLen MUST be + equal to x. If not, then the index pair is not + consistent, and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { isisIPRAEntry 3 } + + isisIPRANextHopIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of next hop. Used when there are multiple Equal + Cost Multipath alternatives for the same destination." + ::= { isisIPRAEntry 4 } + + isisIPRANextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the IP next hop address." + ::= { isisIPRAEntry 5 } + + + + isisIPRANextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP next hop to this destination. + + The type of this address is determined by the value of + the isisIPRANextHopType object." + ::= { isisIPRAEntry 6 } + + isisIPRAType OBJECT-TYPE + SYNTAX INTEGER + { + manual (1), + automatic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of this IP Reachable Address. Those of type + manual are created by the network manager. Those of type + automatic are created through propagation of routing + information from another routing protocol. This object + follows the ManualOrAutomatic behavior." + ::= { isisIPRAEntry 7 } + + isisIPRAExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The state of this IP Reachable Address. This object + follows the ExistenceState and ManualOrAutomatic + behaviors. Support for 'createAndWait' and + 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisIPRAEntry 8 } + + isisIPRAAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative state of the IP Reachable Address. This + object follows the IsisAdminState and ManualOrAutomatic + + + + behaviors." + DEFVAL { off } + ::= { isisIPRAEntry 9 } + + isisIPRAMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value for reaching the specified + destination over this circuit. This object follows the + ManualOrAutomatic behavior." + DEFVAL { 10 } + ::= { isisIPRAEntry 10 } + + isisIPRAMetricType OBJECT-TYPE + SYNTAX IsisMetricType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the metric is internal or + external. This object follows the ManualOrAutomatic + behavior." + DEFVAL { internal } + ::= { isisIPRAEntry 11 } + + isisIPRAFullMetric OBJECT-TYPE + SYNTAX IsisFullMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The wide metric value for reaching the specified + destination over this circuit. This object follows the + ManualOrAutomatic behavior." + DEFVAL { 10 } + ::= { isisIPRAEntry 12 } + + isisIPRASNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNPA Address to which a PDU may be forwarded in + order to reach a destination that matches this IP + Reachable Address. This object follows the + ManualOrAutomatic behavior." + DEFVAL { ''H } + ::= { isisIPRAEntry 13 } + + + + isisIPRASourceType OBJECT-TYPE + SYNTAX INTEGER + { + static (1), + direct (2), + ospfv2 (3), + ospfv3 (4), + isis (5), + rip (6), + igrp (7), + eigrp (8), + bgp (9), + other (10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The origin of this route." + ::= { isisIPRAEntry 14 } + +-- The LSP Database Table +-- +-- The first table provides Summary Information about LSPs +-- The next table provides a complete record + + isisLSPSummaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisLSPSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of LSP Headers." + ::= { isisLSPDataBase 1 } + + isisLSPSummaryEntry OBJECT-TYPE + SYNTAX IsisLSPSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry provides a summary describing an + LSP currently stored in the system. + + Dynamically learned rows will not survive an + agent reboot." + INDEX { isisLSPLevel, + isisLSPID } + ::= { isisLSPSummaryTable 1 } + + IsisLSPSummaryEntry ::= + + + + SEQUENCE { + isisLSPLevel + IsisISLevel, + isisLSPID + IsisLinkStatePDUID, + isisLSPSeq + Unsigned32, + isisLSPZeroLife + TruthValue, + isisLSPChecksum + IsisUnsigned16TC, + isisLSPLifetimeRemain + IsisUnsigned16TC, + isisLSPPDULength + IsisUnsigned16TC, + isisLSPAttributes + IsisUnsigned8TC + } + + isisLSPLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At which level does this LSP appear?" + ::= { isisLSPSummaryEntry 1 } + + isisLSPID OBJECT-TYPE + SYNTAX IsisLinkStatePDUID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 8-byte LSP ID for this Link State PDU." + ::= { isisLSPSummaryEntry 2 } + + isisLSPSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number for this LSP." + ::= { isisLSPSummaryEntry 3 } + + isisLSPZeroLife OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Is this LSP being purged by this system?" + ::= { isisLSPSummaryEntry 4 } + + isisLSPChecksum OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 16-bit Fletcher Checksum for this LSP." + ::= { isisLSPSummaryEntry 5 } + + isisLSPLifetimeRemain OBJECT-TYPE + SYNTAX IsisUnsigned16TC + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining lifetime, in seconds, for this LSP." + ::= { isisLSPSummaryEntry 6 } + + isisLSPPDULength OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of this LSP." + ::= { isisLSPSummaryEntry 7 } + + isisLSPAttributes OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Flags carried by the LSP." + ::= { isisLSPSummaryEntry 8 } + +-- LSP Table +-- +-- The full LSP as a sequence of {Type, Len, Value} tuples +-- Since the underlying LSP may have changed while downloading +-- TLVs, we provide the Sequence number and Checksum for each +-- LSP TLV, so the network manager may verify that they are +-- still working on the same version of the LSP. + + isisLSPTLVTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisLSPTLVEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The table of LSPs in the database." + ::= { isisLSPDataBase 2 } + + isisLSPTLVEntry OBJECT-TYPE + SYNTAX IsisLSPTLVEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry describes a TLV within + an LSP currently stored in the system. + + Dynamically learned rows will not survive an + agent reboot." + INDEX { isisLSPLevel, + isisLSPID, + isisLSPTLVIndex } + ::= { isisLSPTLVTable 1 } + + IsisLSPTLVEntry ::= + SEQUENCE { + isisLSPTLVIndex + Unsigned32, + isisLSPTLVSeq + Unsigned32, + isisLSPTLVChecksum + IsisUnsigned16TC, + isisLSPTLVType + IsisUnsigned8TC, + isisLSPTLVLen + IsisUnsigned8TC, + isisLSPTLVValue + OCTET STRING + } + + isisLSPTLVIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this TLV in the LSP. The first TLV has + index 1, and the Nth TLV has an index of N." + ::= { isisLSPTLVEntry 1 } + + isisLSPTLVSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The sequence number for this LSP." + ::= { isisLSPTLVEntry 2 } + + isisLSPTLVChecksum OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 16-bit Fletcher Checksum for this LSP." + ::= { isisLSPTLVEntry 3 } + + isisLSPTLVType OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this TLV." + ::= { isisLSPTLVEntry 4 } + + isisLSPTLVLen OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of this TLV." + ::= { isisLSPTLVEntry 5 } + + isisLSPTLVValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this TLV." + ::= { isisLSPTLVEntry 6 } + + +-- The IS-IS Notification Table + +-- The IS-IS Notification Table records fields that are +-- required for notifications + + isisNotificationEntry OBJECT IDENTIFIER + ::= { isisNotification 1 } + + isisNotificationSysLevelIndex OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "The system level for this notification." + ::= { isisNotificationEntry 1 } + + isisNotificationCircIfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The identifier of this circuit relevant to + this notification." + ::= { isisNotificationEntry 2 } + + isisPduLspId OBJECT-TYPE + SYNTAX IsisLinkStatePDUID + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An Octet String that uniquely identifies + a Link State PDU." + ::= { isisNotificationEntry 3 } + + isisPduFragment OBJECT-TYPE + SYNTAX IsisPDUHeader + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds up to 64 initial bytes of a PDU that + triggered the notification." + ::= { isisNotificationEntry 4 } + + isisPduFieldLen OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the System ID length reported in PDU we received." + ::= { isisNotificationEntry 5 } + + isisPduMaxAreaAddress OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the Max Area Addresses reported in a PDU + we received." + ::= { isisNotificationEntry 6 } + + + + isisPduProtocolVersion OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the Protocol version reported in PDU we received." + ::= { isisNotificationEntry 7 } + + isisPduLspSize OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of LSP we received that is too + big to forward." + ::= { isisNotificationEntry 8 } + + isisPduOriginatingBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (0..16000) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of isisSysLevelOrigLSPBuffSize advertised + by the peer in the originatingLSPBufferSize TLV. + If the peer does not advertise this TLV, this + value is set to 0." + ::= { isisNotificationEntry 9 } + + isisPduBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (0..16000) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of LSP received from peer." + ::= { isisNotificationEntry 10 } + + isisPduProtocolsSupported OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The list of protocols supported by an + adjacent system. This may be empty." + ::= { isisNotificationEntry 11 } + + isisAdjState OBJECT-TYPE + SYNTAX INTEGER + { + + + + down (1), + initializing (2), + up (3), + failed(4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The current state of an adjacency." + ::= { isisNotificationEntry 12 } + + isisErrorOffset OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An offset to a problem in a PDU. If the problem + is a malformed TLV, this points to the beginning + of the TLV. If the problem is in the header, this + points to the byte that is suspicious." + ::= { isisNotificationEntry 13 } + + isisErrorTLVType OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type for a malformed TLV." + ::= { isisNotificationEntry 14 } + + isisNotificationAreaAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An Area Address." + ::= { isisNotificationEntry 15 } + +-- Notification definitions +-- +-- Note that notifications can be disabled by setting +-- isisSysNotificationEnable false + + isisDatabaseOverload NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisSysLevelState + } + + + + STATUS current + DESCRIPTION + "This notification is generated when the system + enters or leaves the Overload state. The number + of times this has been generated and cleared is kept + track of by isisSysStatLSPDbaseOloads." + ::= { isisNotifications 1 } + + isisManualAddressDrops NOTIFICATION-TYPE + OBJECTS { + isisNotificationAreaAddress + } + STATUS current + DESCRIPTION + "This notification is generated when one of the + manual areaAddresses assigned to this system is + ignored when computing routes. The object + isisNotificationAreaAddress describes the area that + has been dropped. + + The number of times this event has been generated + is counted by isisSysStatManAddrDropFromAreas. + + The agent must throttle the generation of + consecutive isisManualAddressDrops notifications + so that there is at least a 5-second gap between + notifications of this type. When notifications + are throttled, they are dropped, not queued for + sending at a future time." + ::= { isisNotifications 2 } + + isisCorruptedLSPDetected NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "This notification is generated when we find that + an LSP that was stored in memory has become + corrupted. The number of times this has been + generated is counted by isisSysCorrLSPs. + + We forward an LSP ID. We may have independent + knowledge of the ID, but in some implementations + there is a chance that the ID itself will be + corrupted." + + + + + ::= { isisNotifications 3 } + + isisAttemptToExceedMaxSequence NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "When the sequence number on an LSP we generate + wraps the 32-bit sequence counter, we purge and + wait to re-announce this information. This + notification describes that event. Since these + should not be generated rapidly, we generate + an event each time this happens. + + While the first 6 bytes of the LSPID are ours, + the other two contain useful information." + + ::= { isisNotifications 4 } + + isisIDLenMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduFieldLen, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with a different value for the System ID Length. + This notification includes an index to identify + the circuit where we saw the PDU and the header of + the PDU, which may help a network manager identify + the source of the confusion. + + The agent must throttle the generation of + consecutive isisIDLenMismatch notifications + so that there is at least a 5-second gap between + notifications of this type. When notifications + are throttled, they are dropped, not queued for + sending at a future time." + + ::= { isisNotifications 5 } + + isisMaxAreaAddressesMismatch NOTIFICATION-TYPE + OBJECTS { + + + + isisNotificationSysLevelIndex, + isisPduMaxAreaAddress, + isisNotificationCircIfIndex, + isisPduFragment + } + + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with a different value for the Maximum Area + Addresses. This notification includes the + header of the packet, which may help a + network manager identify the source of the + confusion. + + The agent must throttle the generation of + consecutive isisMaxAreaAddressesMismatch + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 6 } + + isisOwnLSPPurge NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with our systemID and zero age. This + notification includes the circuit Index + and router ID from the LSP, if available, + which may help a network manager + identify the source of the confusion." + + ::= { isisNotifications 7 } + + isisSequenceNumberSkip NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId + } + STATUS current + + + + DESCRIPTION + "When we receive an LSP with our System ID + and different contents, we may need to reissue + the LSP with a higher sequence number. + + We send this notification if we need to increase + the sequence number by more than one. If two + Intermediate Systems are configured with the same + System ID, this notification will fire." + + ::= { isisNotifications 8 } + + isisAuthenticationTypeFailure NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with the wrong authentication type field. + This notification includes the header of the + packet, which may help a network manager + identify the source of the confusion. + + The agent must throttle the generation of + consecutive isisAuthenticationTypeFailure + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 9 } + + isisAuthenticationFailure NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with an incorrect authentication information + field. This notification includes the header + of the packet, which may help a network manager + identify the source of the confusion. + + + + The agent must throttle the generation of + consecutive isisAuthenticationFailure + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 10 } + + isisVersionSkew NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduProtocolVersion, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS running a different version + of the protocol. This notification includes + the header of the packet, which may help a + network manager identify the source of the + confusion. + + The agent must throttle the generation of + consecutive isisVersionSkew notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 11 } + + isisAreaMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS that does not share any + area address. This notification includes + the header of the packet, which may help a + network manager identify the source of the + confusion. + + + + + The agent must throttle the generation of + consecutive isisAreaMismatch notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 12 } + + isisRejectedAdjacency NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS but do not establish an + adjacency for some reason. + + The agent must throttle the generation of + consecutive isisRejectedAdjacency notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 13 } + + isisLSPTooLargeToPropagate NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspSize, + isisPduLspId + } + STATUS current + DESCRIPTION + "A notification sent when we attempt to propagate + an LSP that is larger than the dataLinkBlockSize + for the circuit. + + The agent must throttle the generation of + consecutive isisLSPTooLargeToPropagate notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + + + + queued for sending at a future time." + + ::= { isisNotifications 14 } + + isisOrigLSPBuffSizeMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisPduOriginatingBufferSize, + isisPduBufferSize + } + STATUS current + DESCRIPTION + "A notification sent when a Level 1 LSP or Level + 2 LSP is received that is larger than the local + value for isisSysLevelOrigLSPBuffSize, or when an + LSP is received that contains the supported Buffer Size + option and the value in the PDU option field does + not match the local value for isisSysLevelOrigLSPBuffSize. + We pass up the size from the option field and the + size of the LSP when one of them exceeds our configuration. + + The agent must throttle the generation of + consecutive isisOrigLSPBuffSizeMismatch notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 15 } + + isisProtocolsSupportedMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduProtocolsSupported, + isisPduLspId, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when a non-pseudonode + segment 0 LSP is received that has no matching + protocols supported. This may be because the system + does not generate the field, or because there are no + common elements. The list of protocols supported + should be included in the notification: it may be + + + + empty if the TLV is not supported, or if the + TLV is empty. + + The agent must throttle the generation of + consecutive isisProtocolsSupportedMismatch + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 16 } + + isisAdjacencyChange NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisAdjState + } + STATUS current + DESCRIPTION + "A notification sent when an adjacency changes + state, entering or leaving state up. + The first 6 bytes of the isisPduLspId are the + SystemID of the adjacent IS. + The isisAdjState is the new state of the adjacency." + + ::= { isisNotifications 17 } + + isisLSPErrorDetected NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId, + isisNotificationCircIfIndex, + isisPduFragment, + isisErrorOffset, + isisErrorTLVType + } + STATUS current + DESCRIPTION + "This notification is generated when we receive + an LSP with a parse error. The isisCircIfIndex + holds an index of the circuit on which the PDU + arrived. The isisPduFragment holds the start of the + LSP, and the isisErrorOffset points to the problem. + + If the problem is a malformed TLV, isisErrorOffset + points to the start of the TLV, and isisErrorTLVType + + + + holds the value of the type. + + If the problem is with the LSP header, isisErrorOffset + points to the suspicious byte. + + The number of such LSPs is accumulated in + isisSysStatLSPErrors." + + ::= { isisNotifications 18 } + +-- Agent Conformance Definitions +-- We define the objects a conformant agent must define + +isisCompliances OBJECT IDENTIFIER ::= { isisConformance 1 } +isisGroups OBJECT IDENTIFIER ::= { isisConformance 2 } + +-- compliance statements + + isisCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support + the IS-IS MIB. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements. + Those requirements and similar requirements for + related objects are expressed below, in + pseudo-OBJECT clause form, in this description: + + -- OBJECT isisSummAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 Summary + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisRedistributeAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Redistribution Addresses and anticipates + -- the support of IPv6 addresses." + -- + + + + -- + -- OBJECT isisISAdjIPAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Adjacency Addresses and anticipates the + -- support of IPv6 addresses. + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup, + isisNotificationObjectGroup, + isisNotificationGroup + } + ::= { isisCompliances 1 } + + -- List of all groups, mandatory and optional + isisAdvancedCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that fully + support the IS-IS MIB. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements. + Those requirements and similar requirements for + related objects are expressed below, in + pseudo-OBJECT clause form, in this description: + + -- OBJECT isisSummAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 Summary + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisRedistributeAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Redistribution Addresses and anticipates + -- the support of IPv6 addresses." + + + + -- + -- + -- OBJECT isisISAdjIPAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Adjacency Addresses and anticipates the + -- support of IPv6 addresses. + -- + -- + -- OBJECT isisIPRADestType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 RA + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisIPRANextHopType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 NextHop + -- Addresses and anticipates the support of + -- IPv6 addresses. + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup, + isisNotificationObjectGroup, + isisNotificationGroup, + isisISPDUCounterGroup, + isisRATableGroup, + isisISIPRADestGroup, + isisLSPGroup + } + ::= { isisCompliances 2 } + + isisReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create (i.e., in read-only mode), the + implementation can claim read-only compliance. Such + a device can then be monitored but cannot be + + + + configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup + } + + OBJECT isisSysLevelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysMaxPathSplits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysMaxLSPGenInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysPollESHelloRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysWaitTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysL2toL1Leaking + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT isisSysMaxAge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisManAreaAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelOrigLSPBuffSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelMinLSPGenInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSetOverload + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSetOverloadUntil + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelMetricStyle + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSPFConsiders + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelTEEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysReceiveLSPBufferSize + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT isisSummAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSummAddrMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSummAddrFullMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisRedistributeAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExtDomain + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircPassiveCircuit + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircMeshGroupEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircMeshGroup + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircSmallHellos + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExtendedCircID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCirc3WayEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelWideMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelISPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT isisCircLevelHelloMultiplier + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelHelloTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelDRHelloTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelLSPThrottle + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelMinLSPRetransInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelCSNPInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelPartSNPInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { isisCompliances 3 } + +-- MIB Grouping + + isisSystemGroup OBJECT-GROUP + OBJECTS { + isisSysVersion, + isisSysLevelType, + isisSysID, + isisSysMaxPathSplits, + isisSysMaxLSPGenInt, + isisSysPollESHelloRate, + isisSysWaitTime, + + + + isisSysAdminState, + isisSysL2toL1Leaking, + isisSysMaxAge, + isisSysProtSupported, + isisSysNotificationEnable, + isisManAreaAddrExistState, + isisSysLevelOrigLSPBuffSize, + isisSysLevelMinLSPGenInt, + isisSysLevelState, + isisSysLevelSetOverload, + isisSysLevelSetOverloadUntil, + isisSysLevelMetricStyle, + isisSysLevelSPFConsiders, + isisSysLevelTEEnabled, + isisSysReceiveLSPBufferSize, + isisSummAddrExistState, + isisSummAddrMetric, + isisAreaAddr, + isisSummAddrFullMetric, + isisRedistributeAddrExistState, + isisRouterHostName, + isisRouterID, + isisSysStatCorrLSPs, + isisSysStatLSPDbaseOloads, + isisSysStatManAddrDropFromAreas, + isisSysStatAttmptToExMaxSeqNums, + isisSysStatSeqNumSkips, + isisSysStatOwnLSPPurges, + isisSysStatIDFieldLenMismatches, + isisSysStatPartChanges, + isisSysStatSPFRuns, + isisSysStatAuthTypeFails, + isisSysStatAuthFails, + isisSysStatLSPErrors + } + STATUS current + DESCRIPTION + "The collections of objects used to manage an + IS-IS router." + ::= { isisGroups 1 } + + isisCircuitGroup OBJECT-GROUP + OBJECTS { + isisNextCircIndex, + isisCircAdminState, + isisCircExistState, + isisCircType, + isisCircExtDomain, + + + + isisCircLevelType, + isisCircAdjChanges, + isisCircNumAdj, + isisCircInitFails, + isisCircRejAdjs, + isisCircIDFieldLenMismatches, + isisCircMaxAreaAddrMismatches, + isisCircAuthTypeFails, + isisCircAuthFails, + isisCircLANDesISChanges, + isisCircPassiveCircuit, + isisCircMeshGroupEnabled, + isisCircMeshGroup, + isisCircSmallHellos, + isisCircLastUpTime, + isisCirc3WayEnabled, + isisCircExtendedCircID, + isisCircIfIndex, + isisCircLevelMetric, + isisCircLevelWideMetric, + isisCircLevelISPriority, + isisCircLevelIDOctet, + isisCircLevelID, + isisCircLevelDesIS, + isisCircLevelHelloMultiplier, + isisCircLevelHelloTimer, + isisCircLevelDRHelloTimer, + isisCircLevelLSPThrottle, + isisCircLevelMinLSPRetransInt, + isisCircLevelCSNPInterval, + isisCircLevelPartSNPInterval + } + STATUS current + DESCRIPTION + "The collections of objects used to describe an + IS-IS Circuit." + ::= { isisGroups 2 } + + isisISAdjGroup OBJECT-GROUP + OBJECTS { + isisISAdjState, + isisISAdj3WayState, + isisISAdjNeighSNPAAddress, + isisISAdjNeighSysType, + isisISAdjNeighSysID, + isisISAdjNbrExtendedCircID, + isisISAdjUsage, + isisISAdjHoldTimer, + + + + isisISAdjNeighPriority, + isisISAdjLastUpTime, + isisISAdjAreaAddress, + isisISAdjIPAddrType, + isisISAdjIPAddrAddress, + isisISAdjProtSuppProtocol + } + STATUS current + DESCRIPTION + "The collections of objects used to manage an + IS-IS Adjacency." + ::= { isisGroups 3 } + + isisNotificationObjectGroup OBJECT-GROUP + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisPduFragment, + isisPduFieldLen, + isisPduMaxAreaAddress, + isisPduProtocolVersion, + isisPduLspSize, + isisPduOriginatingBufferSize, + isisPduBufferSize, + isisPduProtocolsSupported, + isisAdjState, + isisErrorOffset, + isisErrorTLVType, + isisNotificationAreaAddress + } + STATUS current + DESCRIPTION + "The objects used to record notification parameters." + ::= { isisGroups 4 } + + + isisNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + isisDatabaseOverload, + isisManualAddressDrops, + isisCorruptedLSPDetected, + isisAttemptToExceedMaxSequence, + isisIDLenMismatch, + isisMaxAreaAddressesMismatch, + isisOwnLSPPurge, + isisSequenceNumberSkip, + isisAuthenticationTypeFailure, + + + + isisAuthenticationFailure, + isisVersionSkew, + isisAreaMismatch, + isisRejectedAdjacency, + isisLSPTooLargeToPropagate, + isisOrigLSPBuffSizeMismatch, + isisProtocolsSupportedMismatch, + isisAdjacencyChange, + isisLSPErrorDetected + } + STATUS current + DESCRIPTION + "The collections of notifications sent by an IS." + ::= { isisGroups 5 } + + + isisISPDUCounterGroup OBJECT-GROUP + OBJECTS { + isisPacketCountIIHello, + isisPacketCountISHello, + isisPacketCountESHello, + isisPacketCountLSP, + isisPacketCountCSNP, + isisPacketCountPSNP, + isisPacketCountUnknown + } + STATUS current + DESCRIPTION + "The collections of objects used to count protocol PDUs." + ::= { isisGroups 6 } + + + isisRATableGroup OBJECT-GROUP + OBJECTS { + isisRAExistState, + isisRAAdminState, + isisRAAddrPrefix, + isisRAMapType, + isisRAMetric, + isisRAMetricType, + isisRASNPAAddress, + isisRASNPAMask, + isisRASNPAPrefix, + isisRAType + } + STATUS current + DESCRIPTION + "The collections of objects used to manage the + + + + reachable NSAP prefixes." + ::= { isisGroups 7 } + + + isisISIPRADestGroup OBJECT-GROUP + OBJECTS { + isisIPRANextHopType, + isisIPRANextHop, + isisIPRAType, + isisIPRAExistState, + isisIPRAAdminState, + isisIPRAMetric, + isisIPRAFullMetric, + isisIPRAMetricType, + isisIPRASNPAAddress, + isisIPRASourceType + } + STATUS current + DESCRIPTION + "The collections of objects used to manage configured + IP addresses." + ::= { isisGroups 8 } + + isisLSPGroup OBJECT-GROUP + OBJECTS { + isisLSPSeq, + isisLSPZeroLife, + isisLSPChecksum, + isisLSPLifetimeRemain, + isisLSPPDULength, + isisLSPAttributes, + isisLSPTLVSeq, + isisLSPTLVChecksum, + isisLSPTLVType, + isisLSPTLVLen, + isisLSPTLVValue + } + STATUS current + DESCRIPTION + "The collections of objects used to observe the LSP + Database." + ::= { isisGroups 9 } + +END diff --git a/mibs/ietf/ISNS-MIB b/mibs/ietf/ISNS-MIB new file mode 100644 index 0000000..53b50f2 --- /dev/null +++ b/mibs/ietf/ISNS-MIB @@ -0,0 +1,3442 @@ +ISNS-MIB DEFINITIONS ::= BEGIN + IMPORTS + -- From RFC 2578 + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Integer32, + Unsigned32, + Gauge32, + mib-2 + FROM SNMPv2-SMI + + -- From RFC 2579 + TEXTUAL-CONVENTION, + TimeStamp, + TruthValue + FROM SNMPv2-TC + + -- From RFC 2580 + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + + -- From RFC 3411 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + -- From RFC 4001 + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + + -- From RFC 4044 + FcNameIdOrZero, + FcAddressIdOrZero + FROM FC-MGMT-MIB + + -- From RFC 4133 + PhysicalIndex + FROM ENTITY-MIB + ; + + isnsMIB MODULE-IDENTITY + LAST-UPDATED "200707110000Z" + + + + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO " + Attn: Kevin Gibbons + 2Wire, Inc. + 1704 Automation Parkway + San Jose, CA 95131 + USA + Tel: +1 408-895-1387 + Fax: +1 408-428-9590 + Email: kgibbons@yahoo.com + + G.D. Ramkumar + SnapTell, Inc. + 2741 Middlefield Rd, Suite 200 + Palo Alto, CA 94306 + USA + Tel: +1 650-326-7627 + Fax: +1 650-326-7620 + Email: gramkumar@stanfordalumni.org + + Scott Kipp + Brocade + 4 McDATA Pkwy + Broomfield, CO 80021 + USA + Tel: +1 720-558-3452 + Fax: +1 720-558-8999 + Email: skipp@brocade.com + " + + DESCRIPTION + "This module defines management information + specific to internet Storage Name Service + (iSNS) management. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part + of RFC 4939; see the RFC itself for full + legal notices." + + REVISION "200707110000Z" + + DESCRIPTION + "Initial version of iSNS Management Module. + This MIB published as RFC 4939." + ::= { mib-2 163 } + + + + + + -- + -- Textual Conventions + -- + + IsnsDiscoveryDomainSetId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The unique Discovery Domain Set Identifier associated with a + Discovery Domain Set (DDS)." + REFERENCE "RFC 4171, Section 6.11.1.1" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsDdsStatusType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of a Discovery Domain Set (DDS) registered in the + iSNS. The initially assigned values are below: + Bit Status + --------- --------- + 31 DDS Enabled + All others RESERVED + + Setting a bit to 1 indicates the feature is enabled. + Otherwise, it is disabled. The future assignment of any of + the reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.11.1.3" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), reserved29(29), + reserved30(30), + ddsEnabled (31) + } + + IsnsDiscoveryDomainId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The unique Discovery Domain Identifier (DD_ID) associated + + + + with each Discovery Domain (DD). This is used to + uniquely index and reference a DD." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsDdFeatureType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type defines the features that each Discovery Domain + (DD) has. + Bit Status + --------- --------- + 31 Boot List + All others RESERVED + + Boot List: this feature indicates that the targets + in this DD provide boot capabilities for the member + initiators. + + Setting a bit to 1 indicates the feature is enabled. + Otherwise, it is disabled. The future assignment of any of + the reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.11.2.9" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), reserved29(29), + reserved30(30), + bootlist(31) + } + + IsnsDdDdsModificationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The methods that can be used to modify the Discovery + Domain and Discovery Domain Sets in an iSNS Server + instance. + Bit Flag Description + --------- ------------------------------------ + 0 Control Nodes are allowed + + + + 1 Target iSCSI Nodes are allowed + 2 Initiator iSCSI Nodes are allowed + 3 Target iFCP Ports are allowed + 4 Initiator iFCP Ports are allowed + + Setting a bit to 1 indicates the feature is + enabled. Otherwise, it is disabled." + REFERENCE "RFC 4171, Section 2.4" + SYNTAX BITS { + controlNode(0), + targetIscsiNode(1), + initiatorIscsiNode(2), + targetIfcpNode(3), + initiatorIfcpNode(4) + } + + IsnsEntityIndexIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Entity Index + associated with an iSNS registered Entity object, and the + value zero. The value zero is object-specific and MUST + therefore be defined as part of the description of any + object that uses this syntax. Examples of the usage of + zero might include situations where the Entity is unknown, + or not yet registered in the iSNS server. If a value of + zero is not valid for an object, then that MUST be + indicated." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 0 .. 4294967295 ) + + IsnsPortalGroupIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Portal Group Index + associated with an iSNS registered Portal Group object." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsPortalIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Portal Index + associated with an iSNS registered Portal object. The + index is created by the iSNS Server for mapping between + + + + registered objects. The Portal Index used for a specific + portal IP-address and port number pair is only persistent + across reboots for portals that have been explicitly added + to a Discovery Domain (DD). If a portal is not explicitly + registered in any DD, then the index used for a portal can + change after a server reinitialization." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsPortalPortTypeId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The UDP or TCP port type being used by a Portal for an + Entity." + REFERENCE "RFC 4171, Section 6.3.2" + SYNTAX INTEGER { udp(1), tcp(2) } + + IsnsPortalGroupTagIdOrNull ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The Portal Group Tag (PGT) represents an association + between a Portal and iSCSI Node using the value range + 0 to 65535. A PGT with no association is a NULL + value. The value of -1 indicates a NULL value." + REFERENCE "RFC 4171, Section 6.5.4, and RFC 3720" + SYNTAX Integer32 ( -1 .. 65535 ) + + IsnsPortalSecurityType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates security attribute settings for a Portal that is + registered in the iSNS server. The bitmapVALID field must + be set in order for the contents to be considered valid + information. The definitions of the bit fields are based + on RFC 4171. The initial representation of each bit setting + (0 or 1) is indicated below. + Bit Flag Description + --------- ------------------------------------ + 25 1 = Tunnel Mode Preferred; 0 = No Preference + 26 1 = Transport Mode Preferred; 0 = No + Preference + 27 1 = PFS Enabled; 0 = PFS Disabled + 28 1 = Aggressive Mode Enabled; 0 = Disabled + 29 1 = Main Mode Enabled; 0 = MM Disabled + 30 1 = IKE/IPsec Enabled; 0 = IKE/IPsec + Disabled + 31 1 = Bitmap VALID; 0 = INVALID + + + + All others RESERVED + + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.3.9" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), + tunnelModePreferred(25), + transportModePreferred(26), + pfsEnabled(27), + agressiveModeEnabled(28), + mainModeEnabled(29), + ikeIPsecEnabled(30), + bitmapVALID(31) + } + + IsnsNodeIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Node Index associated + with a storage node. This index provides a 1-to-1 mapping + to an iSCSI node name. The iSCSI node name maximum length + is too long to be used for an index directly. The iSCSI + node index used for a specific iSCSI node name is identical + in all DDs, and is persistent across server + reinitializations when the iSCSI node is a member of a + Discovery Domain (DD) or is registered as a Control Node. + Furthermore, index values for recently deregistered objects + SHOULD NOT be reused in the short term." + REFERENCE "RFC 4171, Section 6.4.5" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsIscsiNodeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iSCSI Node Type defines the functions of the registered + object. The definitions of each setting are defined in + RFC 4171. + Bit Node Type + + + + --------- --------- + 29 Control + 30 Initiator + 31 Target + All others RESERVED + + Setting a bit to 1 indicates the node has the corresponding + characteristics. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.4.2" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), + control(29), + initiator(30), + target(31) + } + + IsnsFcClassOfServiceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This defines the Fibre Channel Class of Service types + that are supported by the registered port. The + definitions are as defined in RFC 4171. + Bit FC COS Type + --------- ---------------- + 28 Fibre Channel Class 3 Supported + 29 Fibre Channel Class 2 Supported + All others RESERVED + + Setting a bit to 1 indicates the class of service is + supported. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.6.8" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + + + + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), + class3(28), + class2(29) + } + + IsnsIscsiScnType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iSCSI Node State Change Notification (SCN) values + for a node as defined in RFC 4171. + Bit Description + ------------ ---------------- + 24 Initiator and self information only + 25 Target and self information only + 26 Management registration/SCN + 27 Object removed + 28 Object added + 29 Object updated + 30 DD or DDS member removed (Mgmt + Reg/SCN only) + 31 (Lsb) DD or DDS member added (Mgmt + Reg/SCN only) + All others Reserved + + Setting a bit to 1 indicates that type of SCN is enabled. + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.4.4" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + initiatorAndSelfOnly(24), + targetAndSelfOnly(25), + managementRegistrationScn(26), + objectRemoved(27), + objectAdded(28), + + + + objectUpdated(29), + ddOrDdsMemberRemoved(30), + ddOrDdsMemberAdded(31) + } + + IsnsIfcpScnType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iFCP State Change Notification (SCN) values for an iFCP + object as defined in RFC 4171. + Bit Description + ------------ ---------------- + 24 Initiator and self information only + 25 Target and self information only + 26 Management registration/SCN + 27 Object removed + 28 Object added + 29 Object updated + 30 DD or DDS member removed (Mgmt + Reg/SCN only) + 31 (Lsb) DD or DDS member added (Mgmt + Reg/SCN only) + All others Reserved + + Setting a bit to 1 indicates that type of SCN is enabled. + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.6.12" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + initiatorAndSelfOnly(24), + targetAndSelfOnly(25), + managementRegistrationScn(26), + objectRemoved(27), + objectAdded(28), + objectUpdated(29), + ddOrDdsMemberRemoved(30), + ddOrDdsMemberAdded(31) + } + + IsnsFcPortRoleType ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "The FC Port Role defines the functions of the registered + object. The definitions of each setting are defined in + RFC 4171. + Bit Port Role + --------- --------- + 29 Control + 30 FCP Initiator + 31 FCP Target + All others RESERVED + + Setting a bit to 1 indicates the port has the corresponding + characteristics. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.6.13" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), + control(29), + initiator(30), + target(31) + } + + IsnsSrvrDiscoveryMethodsType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The types of iSNS Server discovery methods that are enabled + on an iSNS Server. The options are DHCP, Service Location + Protocol (SLP), multicast group iSNS heartbeat, broadcast + group iSNS heartbeat, configured server list, and other. + The iSNS Server may support additional discovery methods + not indicated." + REFERENCE "RFC 4171, Section 2.5" + SYNTAX BITS { + dhcp(0), + slp(1), + multicastGroupHb(2), + broadcastHb(3), + + + + cfgdServerList(4), + other(5) + } + + -- + -- Internet Storage Name Service Management + -- + + + isnsNotifications OBJECT IDENTIFIER ::= + { isnsMIB 0 } + isnsObjects OBJECT IDENTIFIER ::= + { isnsMIB 1 } + isnsConformance OBJECT IDENTIFIER ::= + { isnsMIB 2 } + + -- + -- iSNS Server instance managed objects -------------------- + -- + + isnsServerInfo OBJECT IDENTIFIER ::= { isnsObjects 1 } + + isnsServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a list of the iSNS Server instances + that are managed through the same SNMP context." + ::= { isnsServerInfo 1 } + + isnsServerEntry OBJECT-TYPE + SYNTAX IsnsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a row in the iSNS Server instance table. The number + of rows is dependent on the number of iSNS Server instances + that are being managed through the same SNMP context." + INDEX { isnsServerIndex } + ::= { isnsServerTable 1 } + + IsnsServerEntry ::= + SEQUENCE { + isnsServerIndex Unsigned32, + isnsServerName SnmpAdminString, + isnsServerIsnsVersion Unsigned32, + isnsServerVendorInfo SnmpAdminString, + + + + isnsServerPhysicalIndex PhysicalIndex, + isnsServerTcpPort InetPortNumber, + isnsServerUdpPort InetPortNumber, + isnsServerDiscontinuityTime + TimeStamp, + isnsServerRole INTEGER, + isnsServerDiscoveryMethodsEnabled + IsnsSrvrDiscoveryMethodsType, + isnsServerDiscoveryMcGroupType + InetAddressType, + isnsServerDiscoveryMcGroupAddress + InetAddress, + isnsServerEsiNonResponseThreshold + Unsigned32, + isnsServerEnableControlNodeMgtScn + TruthValue, + isnsServerDefaultDdDdsStatus + INTEGER, + isnsServerUpdateDdDdsSupported + IsnsDdDdsModificationType, + isnsServerUpdateDdDdsEnabled + IsnsDdDdsModificationType + } + + isnsServerIndex OBJECT-TYPE + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the iSNS Server being + managed by the SNMP context and is the key for this table. + This is an instance index for each iSNS Server being + managed. The value of this object is used elsewhere in + the MIB to reference specific iSNS Servers." + ::= { isnsServerEntry 1 } + + isnsServerName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A non-unique name that can be assigned to the iSNS Server + instance. If not configured, then the string SHALL be + zero-length." + ::= { isnsServerEntry 2 } + + isnsServerIsnsVersion OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS version value as contained in messages received + from the current primary server. The header of each iSNSP + message contains the iSNS version of the sender. If + unknown, the reported value is 0." + REFERENCE "RFC 4171" + DEFVAL { 1 } + ::= { isnsServerEntry 3 } + + isnsServerVendorInfo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this server instance is utilizing the product of a + particular 'vendor', then this managed object contains + that vendor's name and version. Otherwise, the + string SHALL be zero-length. The format of the string + is as follows: Vendor Name, Vendor Version, Vendor + Defined Information. + + Field Description + --------- ---------------- + Vendor Name The name of the vendor (if one exists) + Vendor Version The version of the vendor product + Vendor Defined This follows the second comma in the + string, if one exists, and is vendor + defined + " + ::= { isnsServerEntry 4 } + + isnsServerPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index identifying the network interface for this iSNS + Server within a network entity. This index maps to the + entPhysicalIndex of entPhysicalTable table in RFC 4133. The + entPhysicalClass value for the table row must be 'port', as + the interface must be able to send and receive data." + REFERENCE "RFC 4133, RFC 4171, Section 2.5 - 2.8" + ::= { isnsServerEntry 5 } + + isnsServerTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the TCP port this iSNS instance is accepting + iSNSP messages on, generally the iSNS well-known port. + The well-known TCP port for iSNSP is 3205. If TCP is + not supported by this server instance, then the value + is 0." + ::= { isnsServerEntry 6 } + + isnsServerUdpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the UDP port this iSNS instance is accepting + iSNSP messages on; generally, the iSNS well-known port. + The well-known UDP port for iSNSP is 3205. If UDP is + not supported by this server instance, then the value + is 0." + ::= { isnsServerEntry 7 } + + isnsServerDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion that + this iSNS server became active or suffered a + discontinuity." + ::= { isnsServerEntry 8 } + + isnsServerRole OBJECT-TYPE + SYNTAX INTEGER { notSet(1), + server(2), + backupServer(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational mode of this iSNS Server instance. + + Value Description + --------- ---------------- + notSet The iSNS Server role is not + configured. + server The iSNS Server instance is + an operational iSNS Server. + backupServer The iSNS Server instance is + + + + currently acting as a backup." + REFERENCE "RFC 4171, Section 2.7 - 2.8" + ::= { isnsServerEntry 9 } + + isnsServerDiscoveryMethodsEnabled OBJECT-TYPE + SYNTAX IsnsSrvrDiscoveryMethodsType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the discovery methods currently enabled for + this iSNS Server instance. This allows a client to + determine what discovery methods can be used for + this iSNS Server. Additional methods of discovery may + also be supported." + ::= { isnsServerEntry 10 } + + isnsServerDiscoveryMcGroupType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet address in + isnsServerDiscoveryMcGroupAddress. If the address is + specified, then it must be a valid multicast address and the + value of this object must be ipv4(1), ipv6(2), ipv4z(3), or + ipv6z(4); otherwise, the value of this object is + unknown(0), and the value of + isnsServerDiscoveryMcGroupAddress is the zero-length string." + ::= { isnsServerEntry 11 } + + isnsServerDiscoveryMcGroupAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group that iSNS Heartbeat messages are + sent to if multicast-based discovery has been enabled + for this server instance. If not configured, then the + string SHALL be zero-length. The format of this + object is specified by isnsServerDiscoveryMcGroupType." + ::= { isnsServerEntry 12 } + + isnsServerEsiNonResponseThreshold OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Entity Status Inquiry (ESI) Non-Response Threshold - + + + + the number of ESI messages that will be sent without + receiving a response before an entity is deregistered + from the iSNS database. A value of 0 indicates + Entities will never be deregistered due to non-receipt + of ESI messages." + REFERENCE "RFC 4171, Section 2.4" + DEFVAL { 3 } + ::= { isnsServerEntry 13 } + + isnsServerEnableControlNodeMgtScn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if the iSNS Server administrative option to send + Management SCNs to Control Nodes is enabled. Management + SCNs are used by Control Nodes to monitor and control an + iSNS Server. If enabled, Control Nodes can register to + receive Management SCNs." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + DEFVAL { true } + ::= { isnsServerEntry 14 } + + isnsServerDefaultDdDdsStatus OBJECT-TYPE + SYNTAX INTEGER { inNoDomain(1), + inDefaultDdAndDds(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the Discovery Domain (DD) and Discovery + Domain Set (DDS) membership status for a new device + when registered in the iSNS Server instance. Either the + new device will not be in a DD/DDS, or will be placed + into a default DD and default DDS. The default setting + is inNoDomain." + REFERENCE "RFC 4171, Section 2.4" + DEFVAL { inNoDomain } + ::= { isnsServerEntry 15 } + + isnsServerUpdateDdDdsSupported OBJECT-TYPE + SYNTAX IsnsDdDdsModificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The methods that this iSNS Server instance supports + to modify Discovery Domains and Discovery Domain Sets." + REFERENCE "RFC 4171, Section 2.4" + ::= { isnsServerEntry 16 } + + + + + isnsServerUpdateDdDdsEnabled OBJECT-TYPE + SYNTAX IsnsDdDdsModificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the methods this server instance currently + allows for modifying Discovery Domains and Discovery + Domain Sets." + REFERENCE "RFC 4171, Sec 2.2.2 and 2.4" + ::= { isnsServerEntry 17 } + + -- + -- Count of objects currently registered in a server instance + -- + + isnsNumObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table providing the number of registered objects of each + type in the iSNS Server instance. The number of entries is + dependent upon the number of iSNS Server instances being + managed." + ::= { isnsServerInfo 2 } + + isnsNumObjectsEntry OBJECT-TYPE + SYNTAX IsnsNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of an iSNS Server instance." + AUGMENTS { isnsServerEntry } + ::= { isnsNumObjectsTable 1 } + + IsnsNumObjectsEntry ::= SEQUENCE { + isnsNumDds Gauge32, + isnsNumDd Gauge32, + isnsNumEntities Gauge32, + isnsNumPortals Gauge32, + isnsNumPortalGroups Gauge32, + isnsNumIscsiNodes Gauge32, + isnsNumFcPorts Gauge32, + isnsNumFcNodes Gauge32 + } + + + + + isnsNumDds OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Discovery Domain Sets + in this iSNS instance. This is the number of rows + in the isnsDdsTable." + ::= { isnsNumObjectsEntry 1 } + + isnsNumDd OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Discovery Domains + in this iSNS instance. This is the number of rows in the + isnsDdTable." + ::= { isnsNumObjectsEntry 2 } + + isnsNumEntities OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of Entities registered in this + iSNS Server instance. This is the number of rows in + the isnsRegEntityTable for this instance." + ::= { isnsNumObjectsEntry 3 } + + isnsNumPortals OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Portals registered in iSNS. + This is the number of rows in isnsRegPortalTable." + ::= { isnsNumObjectsEntry 4 } + + isnsNumPortalGroups OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Portal Groups registered in + iSNS. This is the number of rows in isnsRegPgTable." + ::= { isnsNumObjectsEntry 5 } + + + + + isnsNumIscsiNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of iSCSI node entries registered + in the iSNS. This is the number rows in + isnsRegIscsiNodeTable." + ::= { isnsNumObjectsEntry 6 } + + isnsNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of FC Port entries registered + in the iSNS. This is the number of rows in + isnsRegFcPortTable." + ::= { isnsNumObjectsEntry 7 } + + isnsNumFcNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of FC node entries registered + in the iSNS. This is the number of rows in + isnsRegFcNodeTable." + ::= { isnsNumObjectsEntry 8 } + + -- + -- Control node information + -- + + isnsControlNodeInfo OBJECT IDENTIFIER ::= + { isnsServerInfo 3 } + + -- + -- Specific iSCSI Nodes authorized to register as Control + -- Nodes + -- + + isnsControlNodeIscsiTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsControlNodeIscsiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Specified iSCSI Nodes that can register or are registered + as control nodes. The number of rows is dependent on the + number of iSCSI Control Nodes." + ::= { isnsControlNodeInfo 1 } + + isnsControlNodeIscsiEntry OBJECT-TYPE + SYNTAX IsnsControlNodeIscsiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is an iSCSI Control Node entry for a specific iSNS + server instance." + INDEX { isnsServerIndex, + isnsControlNodeIscsiNodeIndex } + ::= { isnsControlNodeIscsiTable 1 } + + IsnsControlNodeIscsiEntry ::= SEQUENCE { + isnsControlNodeIscsiNodeIndex IsnsNodeIndexId, + isnsControlNodeIscsiNodeName SnmpAdminString, + isnsControlNodeIscsiIsRegistered TruthValue, + isnsControlNodeIscsiRcvMgtSCN TruthValue + } + + isnsControlNodeIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for the iSCSI storage node authorized to act + as a control node." + ::= { isnsControlNodeIscsiEntry 1 } + + isnsControlNodeIscsiNodeName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the iSCSI Node + Name for the storage node authorized and/or acting as a + control node." + ::= { isnsControlNodeIscsiEntry 2 } + + isnsControlNodeIscsiIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Indicates whether the control node is currently + registered in the iSNS Server instance." + ::= { isnsControlNodeIscsiEntry 3 } + + isnsControlNodeIscsiRcvMgtSCN OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the Control Node has registered to + receive Management SCNs. Management SCNs are sent to + a Control Node if they are enabled, as indicated by + isnsServerEnableControlNodeMgtScn, and the Control + Node has registered for them." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + ::= { isnsControlNodeIscsiEntry 4 } + + -- + -- Specific FC Ports authorized to register as Control + -- Nodes + -- + + isnsControlNodeFcPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsControlNodeFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specified FC Ports that can register or are registered as + control nodes. The number of rows is dependent on the + number of FC Port Control Nodes." + ::= { isnsControlNodeInfo 2 } + + isnsControlNodeFcPortEntry OBJECT-TYPE + SYNTAX IsnsControlNodeFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "FC Port control node entry." + INDEX { isnsServerIndex, + isnsControlNodeFcPortWwpn } + ::= { isnsControlNodeFcPortTable 1 } + + IsnsControlNodeFcPortEntry ::= SEQUENCE { + isnsControlNodeFcPortWwpn FcNameIdOrZero, + isnsControlNodeFcPortIsRegistered TruthValue, + + + + isnsControlNodeFcPortRcvMgtSCN TruthValue + } + + isnsControlNodeFcPortWwpn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Port World Wide Port Name that can and/or is acting + as a Control Node for the specified iSNS Server. A zero- + length string is not valid for this managed object. + This managed object, combined with the isnsServerIndex, is + the key for this table." + ::= { isnsControlNodeFcPortEntry 1 } + + isnsControlNodeFcPortIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the control node is currently + registered in the iSNS Server instance." + ::= { isnsControlNodeFcPortEntry 2 } + + isnsControlNodeFcPortRcvMgtSCN OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the Control Node has registered to + receive Management SCNs. Management SCNs are sent to + a Control Node if they are enabled, as indicated by + isnsServerEnableControlNodeMgtScn, and the Control + Node has registered for them." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + ::= { isnsControlNodeFcPortEntry 3 } + + -- + -- Discovery Domain Set information + -- + + isnsDdsInfo OBJECT IDENTIFIER ::= { isnsServerInfo 4 } + + -- + -- Discovery Domain Set Registrations ----------------- + -- + + isnsDdsTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF IsnsDdsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration information for each + Discovery Domain Set (DDS) registered in the iSNS Server + instance. The number of rows in the table is dependent + on the number of DDSs registered in the specified iSNS + server instance." + ::= { isnsDdsInfo 1 } + + isnsDdsEntry OBJECT-TYPE + SYNTAX IsnsDdsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one Discovery Domain Set (DDS) registered + in the iSNS Server instance." + INDEX { isnsServerIndex, isnsDdsId} + ::= { isnsDdsTable 1 } + + IsnsDdsEntry ::= + SEQUENCE { + isnsDdsId IsnsDiscoveryDomainSetId, + isnsDdsSymbolicName SnmpAdminString, + isnsDdsStatus IsnsDdsStatusType + } + + isnsDdsId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainSetId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that refers to this Discovery Domain Set and + index to the table." + ::= { isnsDdsEntry 1 } + + isnsDdsSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Discovery Domain Set Symbolic Name field contains + a unique variable-length description (up to 255 bytes) + that is associated with the DDS. If a Symbolic Name is + not provided, then one will be generated by the iSNS + server." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsDdsEntry 2 } + + isnsDdsStatus OBJECT-TYPE + SYNTAX IsnsDdsStatusType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this Discovery Domain Set (DDS)." + REFERENCE "RFC 4171, Section 6.11.1.3" + ::= { isnsDdsEntry 3 } + + -- + -- Discovery Domain Set Members -------------------- + -- + + -- + -- DDS Membership Assignment + -- + + isnsDdsMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsDdsMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Discovery Domains (DDs) that have + been assigned to specific Discovery Domain Sets (DDSs). + The number of rows in the table is dependent on the + number of DD to DDS relationships in the iSNS instance." + ::= { isnsDdsInfo 2 } + + + isnsDdsMemberEntry OBJECT-TYPE + SYNTAX IsnsDdsMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapping of one Discovery Domain (DD) to a Discovery + Domain Set (DDS). This indicates the DD is a member of + the DDS." + INDEX { isnsServerIndex, + isnsDdsId, + isnsDdsMemberDdId } + ::= { isnsDdsMemberTable 1 } + + IsnsDdsMemberEntry ::= + SEQUENCE { + isnsDdsMemberDdId IsnsDiscoveryDomainId, + isnsDdsMemberSymbolicName SnmpAdminString + + + + } + + isnsDdsMemberDdId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that identifies the Discovery Domain + that is a member of the Discovery Domain Set." + ::= { isnsDdsMemberEntry 1 } + + isnsDdsMemberSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Symbolic Name of the Discovery Domain that is a member + of this DDS. This value SHALL be identical to the object + isnsDdSymbolicName for the associated DD ID." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdsMemberEntry 2 } + + -- + -- Discovery Domain information + -- + + isnsDdInfo OBJECT IDENTIFIER ::= { isnsServerInfo 5 } + + -- + -- Discovery Domain Registrations ------------------------ + -- + + isnsDdTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsDdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration information for each + Discovery Domain (DD) registered in the iSNS. The number + of rows in the table is dependent on the number of DDs + registered in the iSNS instance." + ::= { isnsDdInfo 1 } + + isnsDdEntry OBJECT-TYPE + SYNTAX IsnsDdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Information on a Discovery Domain (DD) registered in + the iSNS Server instance." + INDEX { isnsServerIndex, isnsDdId} + ::= { isnsDdTable 1 } + + IsnsDdEntry::= + SEQUENCE { + isnsDdId IsnsDiscoveryDomainId, + isnsDdSymbolicName SnmpAdminString, + isnsDdFeatures IsnsDdFeatureType + } + + isnsDdId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that refers to this Discovery Domain, and the + index to the table." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdEntry 1 } + + isnsDdSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Discovery Domain Symbolic Name field contains a + unique variable-length description (up to 255 bytes) + that is associated with the DD." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdEntry 2 } + + isnsDdFeatures OBJECT-TYPE + SYNTAX IsnsDdFeatureType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This defines the features the Discovery Domain has." + REFERENCE "RFC 4171, Section 6.11.2.9" + ::= { isnsDdEntry 3 } + + + + + + + + + + + -- + -- Discovery Domain Members -------------------- + -- + + -- + -- DD iSCSI Node Membership Assignment + -- + + isnsDdIscsiMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdIscsiMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing iSCSI node indexes that have been + assigned to specific DDs in this iSNS Server instance. The + number of rows in the table is dependent on the number of + relationships between iSCSI Nodes and DDs registered in the + iSNS instance." + ::= { isnsDdInfo 2 } + + isnsDdIscsiMemberEntry OBJECT-TYPE + SYNTAX IsnsDdIscsiMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapping of one iSCSI Node to a Discovery Domain to + indicate membership in the DD. The indexes are the iSNS + server instance, the DD ID of the Discovery Domain, and + the iSCSI Node Index of the iSCSI Node." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdIscsiMemberIndex } + ::= { isnsDdIscsiMemberTable 1 } + + IsnsDdIscsiMemberEntry::= + SEQUENCE { + isnsDdIscsiMemberIndex IsnsNodeIndexId, + isnsDdIscsiMemberName SnmpAdminString, + isnsDdIscsiMemberIsRegistered TruthValue + } + + isnsDdIscsiMemberIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this member iSCSI node entry." + + + + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdIscsiMemberEntry 1 } + + isnsDdIscsiMemberName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name associated with the storage node. The + iSCSI Name cannot be longer than 223 bytes. The iSNS + server internal maximum size is 224 bytes to provide + NULL termination. This is the iSCSI Name for the storage + node that is a member of the DD. This value maps 1 to 1 + to the isnsDdIscsiMemberIndex node index. The iSCSI Name + field is too long to be easily used for an index directly. + The node index used for a specific node name is only + persistent across iSNS Server reinitializations for nodes + that are in a Discovery Domain (DD) or are registered + control nodes. This value is only required during row + creation if the storage node is not yet registered in the + iSNS Server instance. If the storage node is not yet + registered, then the iSCSI Name MUST be provided with the + iSCSI node index during row creation in order to create the + 1-to-1 mapping." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdIscsiMemberEntry 2 } + + isnsDdIscsiMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance. iSCSI Storage + Node members do not need to be currently registered in + order for their iSCSI Name and Index to be added to + a DD." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdIscsiMemberEntry 3 } + + -- + -- DD Portal Membership Assignment + -- + + isnsDdPortalMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdPortalMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A table containing currently registered and unregistered + portal objects that have been explicitly assigned to + specific DDs. Explicit assignment of a portal to a DD + is only done when a specific set of portals are preferred + for use within a DD. Otherwise, for iSCSI, the Portal + Group Object should be used for identifying which portals + provide access to which storage nodes. The number of rows + in the table is dependent on the number of explicit + relationships between portals and DDs registered in the + iSNS." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdInfo 3 } + + isnsDdPortalMemberEntry OBJECT-TYPE + SYNTAX IsnsDdPortalMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry indicates an explicit addition of a portal to a + discovery domain. The explicit addition of an entity portal + to a discovery domain indicates the portal is preferred for + access to nodes of the entity for this discovery domain. + Registered Portal Group objects are used in iSCSI to + indicate mapping of portals to nodes across all discovery + domains. Portals that have been explicitly mapped to a + discovery domain will be returned as part of a query that + is scoped to that discovery domain. If no portal of an + entity has been explicitly mapped to a discovery domain, + then all portals of the entity that provide access to a + storage node are returned as part of a query. The table + indexes are the server instance, the DD ID of the Discovery + Domain, and the Portal Index of the portal." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdPortalMemberIndex } + ::= { isnsDdPortalMemberTable 1 } + + IsnsDdPortalMemberEntry ::= + SEQUENCE { + isnsDdPortalMemberIndex IsnsPortalIndexId, + isnsDdPortalMemberAddressType InetAddressType, + isnsDdPortalMemberAddress InetAddress, + isnsDdPortalMemberPortType IsnsPortalPortTypeId, + isnsDdPortalMemberPort InetPortNumber, + isnsDdPortalMemberIsRegistered TruthValue + } + + + + + isnsDdPortalMemberIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for a portal explicitly contained in the discovery + domain. This managed object, combined with isnsServerIndex + and isnsDdId, is the key for this table." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 1 } + + isnsDdPortalMemberAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsDdPortalMemberAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsDdPortalMemberAddress is the zero-length string." + ::= { isnsDdPortalMemberEntry 2 } + + isnsDdPortalMemberAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for the portal. The format of this + object is specified by isnsDdPortalMemberAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 3 } + + isnsDdPortalMemberPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the portal, either UDP or TCP." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 4 } + + isnsDdPortalMemberPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The port number for the portal. Whether the portal + type is TCP or UDP is indicated by + isnsDdPortalMemberPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 5 } + + isnsDdPortalMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance. Portals that are + DD members do not need to be currently registered in + order for them to be added to a DD." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdPortalMemberEntry 6 } + + -- + -- DD FC Port Membership Assignment + -- + + isnsDdFcPortMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdFcPortMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing FC Port World Wide Names (WWN) that + have been assigned to specific DDs. The number of rows + in the table is dependent on the number of relationships + between FC Ports and DDs registered in the iSNS." + ::= { isnsDdInfo 4 } + + isnsDdFcPortMemberEntry OBJECT-TYPE + SYNTAX IsnsDdFcPortMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The association of one FC Port with a Discovery Domain. + Membership of an FC Port in a Discovery Domain is + indicated by creating a row for the appropriate DD ID + and FC Port WWN." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdFcPortMemberPortName } + ::= { isnsDdFcPortMemberTable 1 } + + + + + IsnsDdFcPortMemberEntry ::= + SEQUENCE { + isnsDdFcPortMemberPortName FcNameIdOrZero, + isnsDdFcPortMemberIsRegistered TruthValue + } + + isnsDdFcPortMemberPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port WWN of the FC Port that is a member of the DD. The + value MUST be a valid FC WWN, as per the FC-GS (Fibre Channel - + Generic Services) standard. This managed object, combined + with the isnsServerIndex and isnsDdId are the key for this + table. A zero-length string is not a valid value for this + managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdFcPortMemberEntry 1 } + + isnsDdFcPortMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdFcPortMemberEntry 2 } + + -- + -- Registered Device Information + -- + + isnsReg OBJECT IDENTIFIER ::= { isnsServerInfo 6 } + + isnsRegEntityInfo OBJECT IDENTIFIER + ::= { isnsReg 1 } + + -- + -- iSNS Registered Entities Table + -- + + isnsRegEntityTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegEntityEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table containing registered Entity objects in each iSNS + server instance. The number of entries in the table is + dependent on the number of Entity objects registered in the + iSNS Server instances. All Entity objects are registered in + the iSNS using the iSNS protocol." + ::= { isnsRegEntityInfo 1 } + + isnsRegEntityEntry OBJECT-TYPE + SYNTAX IsnsRegEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Entity object in an iSNS + server instance." + INDEX { isnsServerIndex, + isnsRegEntityIndex } + ::= { isnsRegEntityTable 1 } + + IsnsRegEntityEntry ::= + SEQUENCE { + isnsRegEntityIndex IsnsEntityIndexIdOrZero, + isnsRegEntityEID SnmpAdminString, + isnsRegEntityProtocol Unsigned32, + isnsRegEntityManagementAddressType + InetAddressType, + isnsRegEntityManagementAddress + InetAddress, + isnsRegEntityTimestamp TimeStamp, + isnsRegEntityVersionMin Unsigned32, + isnsRegEntityVersionMax Unsigned32, + isnsRegEntityRegistrationPeriod + Unsigned32 + } + + isnsRegEntityIndex OBJECT-TYPE + SYNTAX IsnsEntityIndexIdOrZero + ( 1 .. 4294967295 ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Entity Index for this entity. This index is assigned + by the iSNS Server when an Entity is initially registered. + The Entity Index can be used to represent a registered + Entity object in situations where the Entity EID would + be too long/unwieldy. Zero is not a valid value for this + object." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsRegEntityEntry 1 } + + isnsRegEntityEID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The EID is a unique registered Entity object identifier, as + specified in the iSNS Specification. This is the iSNS + Entity Identifier for the registered Entity object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 2 } + + isnsRegEntityProtocol OBJECT-TYPE + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The block storage protocol supported by this entity, as + defined in the iSNS Specification, Section 6.2.2. The + following values are initially assigned. + + Type Value Entity Type + ---------- ----------- + 1 No Protocol + 2 iSCSI + 3 iFCP + All Others As assigned by IANA + + The full set of current Block Storage Protocols are + specified in the IANA-maintained registry of assigned + iSNS parameters. Please refer to RFC 4171 and the iSNS + parameters maintained at IANA." + REFERENCE "RFC 4171, Section 6.2.2, and IANA Assignments" + ::= { isnsRegEntityEntry 3 } + + isnsRegEntityManagementAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegEntityManagementAddress. + If the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value of + this object is unknown(0), and the value of + isnsRegEntityManagementAddress is the zero-length string." + ::= { isnsRegEntityEntry 4 } + + + + + isnsRegEntityManagementAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Management IP Address for the registered Entity + object. The format of this object is specified by + isnsRegEntityManagementAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 5 } + + isnsRegEntityTimestamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Entity Registration Timestamp for the registered + Entity object. This is the most recent date and time that + the registered Entity object, and associated registered + objects contained in the Entity, were registered or + updated." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 6 } + + isnsRegEntityVersionMin OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 254 | 255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum version supported for the block storage protocol + specified by isnsRegEntityProtocol. The protocol version + specified can be from 1 to 254. A value of 255 is a wildcard + value, indicating no minimum version value has been specified + for this Entity. Entity registrations with an + isnsRegEntityProtocol of 'No Protocol' SHALL have an + isnsRegEntityVersionMin value of 0." + REFERENCE "RFC 4171, Section 6.2.5" + ::= { isnsRegEntityEntry 7 } + + isnsRegEntityVersionMax OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 254 | 255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum version supported for the block storage protocol + specified by isnsRegEntityProtocol. The protocol version + specified can be from 1 to 254. A value of 255 is a wildcard + + + + value, indicating no maximum version value has been specified + for this Entity. Entity registrations with an + isnsRegEntityProtocol of 'No Protocol' SHALL have an + isnsRegEntityVersionMax value of 0." + REFERENCE "RFC 4171, Section 6.2.5" + ::= { isnsRegEntityEntry 8 } + + isnsRegEntityRegistrationPeriod OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 4294967295 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Entity Status Inquiry (ESI) registration period, + which indicates the maximum time, in seconds, that the + registration will be maintained without receipt of an iSNSP + message from the entity. If the Registration Period is set + to 0, then the Entity SHALL NOT be deregistered due to no + contact with the entity." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 9 } + + -- + -- Registered Objects Associated With an Entity Information + -- + + isnsRegEntityNumObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsRegEntityNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the number of registered + objects associated with a registered Entity in the iSNS + server instance. The number of entries in the table is + dependent on the number of registered Entity objects in the + iSNS." + ::= { isnsRegEntityInfo 2 } + + isnsRegEntityNumObjectsEntry OBJECT-TYPE + SYNTAX IsnsRegEntityNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on the number of registered objects associated + with a registered Entity object in an iSNS Server instance." + INDEX { isnsServerIndex, + isnsRegEntityIndex } + + + + ::= { isnsRegEntityNumObjectsTable 1 } + + IsnsRegEntityNumObjectsEntry ::= + SEQUENCE { + isnsRegEntityInfoNumPortals Gauge32, + isnsRegEntityInfoNumPortalGroups Gauge32, + isnsRegEntityInfoNumIscsiNodes Gauge32, + isnsRegEntityInfoNumFcPorts Gauge32, + isnsRegEntityInfoNumFcNodes Gauge32 + } + + isnsRegEntityInfoNumPortals OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Portals associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 1 } + + isnsRegEntityInfoNumPortalGroups OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Portal Groups associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 2 } + + isnsRegEntityInfoNumIscsiNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of iSCSI Storage Nodes associated with this + Entity." + ::= { isnsRegEntityNumObjectsEntry 3 } + + isnsRegEntityInfoNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Ports associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 4 } + + isnsRegEntityInfoNumFcNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of FC Nodes associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 5 } + + -- + -- iSNS Registered Portal Information + -- + + isnsRegPortalInfo OBJECT IDENTIFIER + ::= { isnsReg 2 } + + -- + -- iSNS Registered Portal Table + -- + + isnsRegPortalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegPortalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered Portals in the iSNS. + The number of entries is dependent on the number of + Portals registered in the iSNS." + ::= { isnsRegPortalInfo 1 } + + isnsRegPortalEntry OBJECT-TYPE + SYNTAX IsnsRegPortalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Entity Portal in the iSNS. + The Entity Index is part of the table index to quickly + find Portals that support a specific Entity." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegPortalPortalIndex } + ::= { isnsRegPortalTable 1 } + + IsnsRegPortalEntry ::= + SEQUENCE { + isnsRegPortalPortalIndex IsnsPortalIndexId, + isnsRegPortalAddressType InetAddressType, + isnsRegPortalAddress InetAddress, + isnsRegPortalPortType IsnsPortalPortTypeId, + isnsRegPortalPort InetPortNumber, + isnsRegPortalSymbolicName SnmpAdminString, + isnsRegPortalEsiInterval Unsigned32, + isnsRegPortalEsiPortType IsnsPortalPortTypeId, + + + + isnsRegPortalEsiPort InetPortNumber, + isnsRegPortalScnPortType IsnsPortalPortTypeId, + isnsRegPortalScnPort InetPortNumber, + isnsRegPortalSecurityInfo IsnsPortalSecurityType + } + + isnsRegPortalPortalIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this Entity Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 1 } + + isnsRegPortalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegPortalAddress. If the + address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegPortalAddress is the zero-length string." + ::= { isnsRegPortalEntry 2 } + + isnsRegPortalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for this Portal as defined in the iSNS + Specification, RFC 4171. The format of this object is + specified by isnsRegPortalAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 3 } + + isnsRegPortalPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for this Portal, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 4 } + + + + + isnsRegPortalPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number for this Portal as defined in the + iSNS Specification, RFC 4171. Whether the Portal type + is TCP or UDP is indicated by isnsRegPortalPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 5 } + + isnsRegPortalSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Symbolic Name for this Portal as defined in the iSNS + Specification, RFC 4171. If not provided, then the string + SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 6 } + + isnsRegPortalEsiInterval OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Entity Status Inquiry (ESI) Interval for this Portal + as defined in the iSNS Specification, RFC 4171. A value of + 0 indicates that ESI monitoring has not been configured for + this Portal." + REFERENCE "RFC 4171, Section 6.3.4" + ::= { isnsRegPortalEntry 7 } + + isnsRegPortalEsiPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the ESI Port, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 8 } + + isnsRegPortalEsiPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP or UDP port number used for ESI monitoring. Whether + the port type is TCP or UDP is indicated by + isnsRegPortalEsiPortType. A value of 0 indicates that ESI + monitoring is not enabled for this Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 9 } + + isnsRegPortalScnPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the SCN Port, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 10 } + + isnsRegPortalScnPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP or UDP port used to receive SCN messages from the + iSNS Server. Whether the port type is TCP or UDP is + indicated by isnsRegPortalScnPortType. A value of 0 + indicates that SCN message receipt is not enabled for this + Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 11 } + + isnsRegPortalSecurityInfo OBJECT-TYPE + SYNTAX IsnsPortalSecurityType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates security attribute settings for the Portal as + registered in the iSNS server. The bit for bitmapVALID must + be set in order for this attribute to contain valid + information. Setting a bit to 1 indicates the + feature is enabled." + REFERENCE "RFC 4171, Section 6.3.9" + ::= { isnsRegPortalEntry 12 } + + + + + + + -- + -- iSNS Registered Portal Group Information + -- + + isnsRegPortalGroupInfo OBJECT IDENTIFIER + ::= { isnsReg 3 } + + -- + -- iSNS Registered Portal Group (PG) Table + -- + + isnsRegPgTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegPgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered Portal Groups (PGs) in + the iSNS Server instance. The number of entries is + dependent on the number of Portal Groups registered in + the iSNS." + ::= { isnsRegPortalGroupInfo 1 } + + isnsRegPgEntry OBJECT-TYPE + SYNTAX IsnsRegPgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Portal Group in the iSNS + server instance. The Entity Index is part of the table + index to quickly find Portal Groups that support Portals + and iSCSI Storage Nodes in a specific Entity." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegPgIndex } + ::= { isnsRegPgTable 1 } + + IsnsRegPgEntry ::= + SEQUENCE { + isnsRegPgIndex IsnsPortalGroupIndexId, + isnsRegPgIscsiNodeIndex IsnsNodeIndexId, + isnsRegPgIscsiName SnmpAdminString, + isnsRegPgPortalPortalIndex IsnsPortalIndexId, + isnsRegPgPortalAddressType InetAddressType, + isnsRegPgPortalAddress InetAddress, + isnsRegPgPortalPortType IsnsPortalPortTypeId, + isnsRegPgPortalPort InetPortNumber, + isnsRegPgPGT IsnsPortalGroupTagIdOrNull + } + + + + + isnsRegPgIndex OBJECT-TYPE + SYNTAX IsnsPortalGroupIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The PG Index for this node. The index is created by the + iSNS Server instance for uniquely identifying registered + objects. The PG object is registered at the same time a + Portal or Storage Node is registered using the iSNS + protocol." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 1 } + + isnsRegPgIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index for the iSCSI Node associated with this PG. + This index can be used to reference the + isnsRegIscsiNodeTable." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 2 } + + isnsRegPgIscsiName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the PG iSCSI + Name that uniquely identifies the iSCSI Storage Node that + is associated with this PG." + ::= { isnsRegPgEntry 3 } + + isnsRegPgPortalPortalIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Portal Index for the Portal associated with this PG. + This index can be used to reference the isnsRegPortalTable." + ::= { isnsRegPgEntry 4 } + + isnsRegPgPortalAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegPgPortalAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegPgPortalAddress is the zero-length string." + ::= { isnsRegPgEntry 5 } + + isnsRegPgPortalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for the Portal that is associated with + the PG. The format of this object is specified by + isnsRegPgPortalAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 6 } + + isnsRegPgPortalPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type, either UDP or TCP, for the Portal that + is associated with this registered PG object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 7 } + + isnsRegPgPortalPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number for the Portal that is associated with + this registered PG object. Whether the Portal type is + TCP or UDP is indicated by isnsRegPgPortalPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 8 } + + isnsRegPgPGT OBJECT-TYPE + SYNTAX IsnsPortalGroupTagIdOrNull + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The Portal Group Tag (PGT) for the registered iSCSI Portal + Group object in an iSNS Server instance. This indicates + the tag value that the Portal uses for access to the iSCSI + Storage Node. The PGT is used for coordinated access + between multiple Portals, as described in the iSCSI + Specification, RFC 3720. A PGT with no association is a + NULL value. The value of -1 indicates a NULL value." + REFERENCE "RFC 4171, Section 6, and RFC 3720" + ::= { isnsRegPgEntry 9 } + + -- + -- iSNS Registered iSCSI Node Information + -- + + isnsRegIscsiNodeInfo OBJECT IDENTIFIER ::= { isnsReg 4 } + + -- + -- iSNS Registered iSCSI Node Table + -- + + isnsRegIscsiNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegIscsiNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered iSCSI Nodes in the iSNS + server instance. Storage devices register using the iSNS + protocol. While a device cannot be registered in an iSNS + server using SNMP, an entry can be deleted in order to + remove 'stale' entries. The number of entries is related + to the number of iSCSI nodes registered in the iSNS." + ::= { isnsRegIscsiNodeInfo 1 } + + isnsRegIscsiNodeEntry OBJECT-TYPE + SYNTAX IsnsRegIscsiNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one iSCSI node that has been registered in + the iSNS Server instance. New rows cannot be added using + SNMP." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegIscsiNodeIndex } + ::= { isnsRegIscsiNodeTable 1 } + + IsnsRegIscsiNodeEntry ::= SEQUENCE { + + + + isnsRegIscsiNodeIndex IsnsNodeIndexId, + isnsRegIscsiNodeName SnmpAdminString, + isnsRegIscsiNodeType IsnsIscsiNodeType, + isnsRegIscsiNodeAlias SnmpAdminString, + isnsRegIscsiNodeScnTypes IsnsIscsiScnType, + isnsRegIscsiNodeWwnToken FcNameIdOrZero, + isnsRegIscsiNodeAuthMethod SnmpAdminString + } + + isnsRegIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this iSCSI node." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 1 } + + isnsRegIscsiNodeName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the iSCSI Name + that uniquely identifies the initiator, initiator/target, + target, or control node in the network." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 2 } + + isnsRegIscsiNodeType OBJECT-TYPE + SYNTAX IsnsIscsiNodeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Node Type defining the functions of this iSCSI node." + ::= { isnsRegIscsiNodeEntry 3 } + + isnsRegIscsiNodeAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Alias name of the iSCSI node. This is a variable-length + text-based description of up to 255 bytes." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsRegIscsiNodeEntry 4 } + + isnsRegIscsiNodeScnTypes OBJECT-TYPE + SYNTAX IsnsIscsiScnType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The State Change Notification (SCN) types enabled for this + iSCSI node." + REFERENCE "RFC 4171, Section 6.4.4" + ::= { isnsRegIscsiNodeEntry 5 } + + isnsRegIscsiNodeWwnToken OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This contains a globally unique 64-bit integer value that + can be used to represent the World Wide Node Name of the + iSCSI device in a Fibre Channel fabric. This identifier is + used during the device registration process, and MUST + conform to the requirements in RFC 4171. A zero-length string + for this managed object indicates that a Node WWN token has + not been assigned." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 6 } + + isnsRegIscsiNodeAuthMethod OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute contains a null-terminated string containing + UTF-8 text listing the iSCSI authentication methods enabled + for this iSCSI Node, in order of preference. The text + values used to identify iSCSI authentication methods are + embedded in this string attribute and delineated by a + comma. The text values are identical to those found in + RFC 3720 - iSCSI. Additional vendor-specific text values + are also possible." + REFERENCE "RFC 4171, Section 6, and RFC 3720" + ::= { isnsRegIscsiNodeEntry 7 } + + -- + -- iSNS Registered FC Node Information + -- + + isnsRegFcNodeInfo OBJECT IDENTIFIER ::= { isnsReg 5 } + + + + + -- + -- iSNS Registered FC Node Table + -- + + isnsRegFcNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegFcNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered FC Nodes in the iSNS. + This supports iFCP as defined in RFC 4172." + ::= { isnsRegFcNodeInfo 1 } + + isnsRegFcNodeEntry OBJECT-TYPE + SYNTAX IsnsRegFcNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered FC node that has been + registered in the iSNS." + INDEX { isnsServerIndex, + isnsRegFcNodeWwnn } + ::= { isnsRegFcNodeTable 1 } + + IsnsRegFcNodeEntry ::= SEQUENCE { + isnsRegFcNodeWwnn FcNameIdOrZero, + isnsRegFcNodeSymbolicName SnmpAdminString, + isnsRegFcNodeAddressType InetAddressType, + isnsRegFcNodeAddress InetAddress, + isnsRegFcNodeIPA OCTET STRING, + isnsRegFcNodeProxyIscsiName SnmpAdminString, + isnsRegFcNodeNumFcPorts Gauge32 + } + + isnsRegFcNodeWwnn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Node World Wide Node Name as defined in the iSNS + Specification, RFC 4171. A zero-length string is not valid + for this managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 1 } + + isnsRegFcNodeSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node Symbolic Name of the node as defined in the + iSNS Specification, RFC 4171. This is a variable-length + text-based description. If not provided, then the string + SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 2 } + + isnsRegFcNodeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegFcNodeAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegFcNodeAddress is the zero-length string." + ::= { isnsRegFcNodeEntry 3 } + + isnsRegFcNodeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node Inet address of the node as defined in the + iSNS Specification, RFC 4171. The format of this object is + specified by isnsRegFcNodeAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 4 } + + isnsRegFcNodeIPA OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This managed object identifies the FC Initial Process + Associator of the node as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 5 } + + isnsRegFcNodeProxyIscsiName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The iSCSI Name used to represent the FC Node in the IP + network. It is used as a pointer to the matching iSCSI Name + entry in the iSNS Server. Its value is usually registered + by an FC-iSCSI gateway connecting the IP network to the + fabric containing the FC device." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 6 } + + isnsRegFcNodeNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Ports associated with this FC Node." + ::= { isnsRegFcNodeEntry 7 } + + -- + -- iSNS Registered FC Port Table + -- + + isnsRegFcPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on registered FC N_Ports in the iSNS. FC Ports + are associated with registered FC Nodes. This supports + iFCP as defined in RFC 4172." + REFERENCE "RFC 4172, Section 4" + ::= { isnsRegFcNodeInfo 2 } + + isnsRegFcPortEntry OBJECT-TYPE + SYNTAX IsnsRegFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one FC Port that has been registered in + iSNS." + REFERENCE "RFC 4172, Section 4" + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegFcPortWwpn } + ::= { isnsRegFcPortTable 1 } + + IsnsRegFcPortEntry ::= SEQUENCE { + isnsRegFcPortWwpn FcNameIdOrZero, + + + + isnsRegFcPortID FcAddressIdOrZero, + isnsRegFcPortType Unsigned32, + isnsRegFcPortSymbolicName SnmpAdminString, + isnsRegFcPortFabricPortWwn FcNameIdOrZero, + isnsRegFcPortHA FcAddressIdOrZero, + isnsRegFcPortAddressType InetAddressType, + isnsRegFcPortAddress InetAddress, + isnsRegFcPortFcCos IsnsFcClassOfServiceType, + isnsRegFcPortFc4Types OCTET STRING, + isnsRegFcPortFc4Descr SnmpAdminString, + isnsRegFcPortFc4Features OCTET STRING, + isnsRegFcPortScnTypes IsnsIfcpScnType, + isnsRegFcPortRole IsnsFcPortRoleType, + isnsRegFcPortFcNodeWwnn FcNameIdOrZero, + isnsRegFcPortPpnWwn FcNameIdOrZero + } + + isnsRegFcPortWwpn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Port's World Wide Port Name as defined in the iSNS + Specification, RFC 4171. A zero-length string is not valid + for this managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 1 } + + isnsRegFcPortID OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port's Port ID as defined in the iSNS Specification, + RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 2 } + + isnsRegFcPortType OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Type as defined in the iSNS Specification, + RFC 4171, and the Fibre Channel Generic Services + Specification. Current values are as shown below: + unknown (0), + nPort (1), + + + + nlPort (2), + fNlPort (3), + fPort (129), -- x'81' + flPort (130), -- x'82' + ePort (132), -- x'84' + bPort (133), -- x'85' + mFcpPort (65297), -- x'FF11' + iFcpPort (65298), -- x'FF12' + unknownEnd (65535) + The future assignment of any additional values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.6.3" + ::= { isnsRegFcPortEntry 3 } + + isnsRegFcPortSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Symbolic Name as defined in the iSNS + Specification, RFC 4171. If not provided, then the + string SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 4 } + + isnsRegFcPortFabricPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric Port WWN for this entry as defined in the iSNS + Specification, RFC 4171. A zero-length string for this + managed object indicates that the Fabric Port WWN is not + known, or has not yet been registered with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 5 } + + isnsRegFcPortHA OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Hard Address as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 6 } + + isnsRegFcPortAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegFcPortAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegFcPortAddress is the zero-length string." + ::= { isnsRegFcPortEntry 7 } + + isnsRegFcPortAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Inet Address as defined in the iSNS + Specification, RFC 4171. The format of this object is + specified by isnsRegFcPortAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 8 } + + isnsRegFcPortFcCos OBJECT-TYPE + SYNTAX IsnsFcClassOfServiceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Class of Service as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 9 } + + isnsRegFcPortFc4Types OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port FC-4 Types as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6.6.9" + ::= { isnsRegFcPortEntry 10 } + + isnsRegFcPortFc4Descr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(4..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The FC Port FC-4 Descriptor as defined in the iSNS + Specification, RFC 4171. The FC-4 Descriptor cannot be + longer than 255 bytes. The iSNS Server internal maximum + size is 256 bytes to provide NULL termination." + REFERENCE "RFC 4171, Section 6.6.10" + ::= { isnsRegFcPortEntry 11 } + + isnsRegFcPortFc4Features OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port FC-4 Features as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6.6.11" + ::= { isnsRegFcPortEntry 12 } + + isnsRegFcPortScnTypes OBJECT-TYPE + SYNTAX IsnsIfcpScnType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iFCP State Change Notification (SCN) types enabled for + the registered object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 13 } + + isnsRegFcPortRole OBJECT-TYPE + SYNTAX IsnsFcPortRoleType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Role defines the role of the registered + object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 14 } + + isnsRegFcPortFcNodeWwnn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node World Wide Node Name that is associated with + this FC Port as defined in the iSNS Specification, RFC 4171. + This managed object may contain a zero-length string prior + to a device registering this value with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 15 } + + + + + isnsRegFcPortPpnWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Permanent Port Name (PPN) attribute is the FC Port Name WWPN + of the first Storage Node registered in the iSNS Database + that is associated with a particular FC Device (FC Node). + The PPN of all subsequent Storage Node registrations that + are associated with that FC Device (FC Node) SHALL be set + to the FC Port Name WWPN of the first Storage Node, as + defined in the iSNS Specification, RFC 4171. This managed + object may contain a zero-length string prior to a device + registering this value with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 16 } + + -- + -- Mapping from FC Node to Entity - FC Port + -- + + isnsRegFcNodePortTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsRegFcNodePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the mapping of a registered FC Node and + associated registered iFCP Port to the supporting registered + Entity object in an iSNS Server instance." + ::= { isnsRegFcNodeInfo 3 } + + isnsRegFcNodePortEntry OBJECT-TYPE + SYNTAX IsnsRegFcNodePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one mapping from an FC Node and iFCP Port to + an Entity object registered in an iSNS." + INDEX { isnsServerIndex, + isnsRegFcNodeWwnn, + isnsRegFcPortWwpn } + ::= { isnsRegFcNodePortTable 1 } + + IsnsRegFcNodePortEntry ::= SEQUENCE { + isnsRegFcNodePortEntityIndex IsnsEntityIndexIdOrZero + } + + + + + isnsRegFcNodePortEntityIndex OBJECT-TYPE + SYNTAX IsnsEntityIndexIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Entity Index for the registered Entity object + associated with the FC Port and FC Node. This managed + object may contain the value of zero prior to a device + registering this value with the iSNS Server." + ::= { isnsRegFcNodePortEntry 1 } + + -- + -- iSNS Notifications Information ----------------- + -- + + isnsNotificationsInfo OBJECT IDENTIFIER + ::= { isnsObjects 2 } + + isnsInstanceInfo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Textual information about the notification event and the + iSNS Server generating the notification. An example is: + iSNS Server Started." + ::= { isnsNotificationsInfo 1 } + + isnsAddressNotificationType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type of Inet address in isnsAddressNotification. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsAddressNotification is the zero-length string." + ::= { isnsNotificationsInfo 2 } + + isnsAddressNotification OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Identifies the IP address of the iSNS Server. The format of + + + + this object is specified by isnsAddressNotificationType. + The IP address will always be specified in the notification + unless an error causes the IP address to not be known." + ::= { isnsNotificationsInfo 3 } + + isnsTcpPortNotification OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates the TCP port the iSNS Server is using, + or 0 if TCP-based registrations are not supported." + ::= { isnsNotificationsInfo 4 } + + isnsUdpPortNotification OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates the UDP port the iSNS Server is using, + or 0 if UDP-based registrations are not supported." + ::= { isnsNotificationsInfo 5 } + + -- + -- iSNS Notification Block ----------------- + -- + + isnsServerStart NOTIFICATION-TYPE + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "This notification is sent when an iSNS Server begins + operation. The notification provides the following: + isnsInstanceInfo : iSNS Server textual information + isnsAddressTypeNotification : iSNS Server address type + isnsAddressNotification : iSNS Server address + isnsTcpPortNotification : iSNS Server TCP Port + isnsUdpPortNotification : iSNS Server UDP Port + " + ::= { isnsNotifications 1 } + + isnsServerShutdown NOTIFICATION-TYPE + + + + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "This notification is sent when an iSNS Server is + shutdown. The notification provides the following: + isnsInstanceInfo : iSNS Server textual information + isnsAddressTypeNotification : iSNS Server address type + isnsAddressNotification : iSNS Server address + isnsTcpPortNotification : iSNS Server TCP Port + isnsUdpPortNotification : iSNS Server UDP Port + " + ::= { isnsNotifications 2 } + + ------------------------------------------------------------ + -- + -- Compliance Information + -- + + isnsCompliances OBJECT IDENTIFIER ::= { isnsConformance 1 } + + isnsIscsiServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial compliance statement for an iSNS Server + providing support to iSCSI clients." + MODULE -- this module + MANDATORY-GROUPS { + isnsServerAttributesGroup, + isnsServerIscsiControlNodeGroup, + isnsServerIscsiDdsDdObjGroup, + isnsServerRegIscsiObjGroup, + isnsServerNumObjectsGroup, + isnsNotificationsObjGroup, + isnsServerNotificationGroup + } + OBJECT isnsServerDiscoveryMcGroupType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + + + + OBJECT isnsServerDiscoveryMcGroupAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsDdPortalMemberAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsDdPortalMemberAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegEntityManagementAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegEntityManagementAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegPgPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + + + + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegPgPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsAddressNotificationType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsAddressNotification + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + ::= { isnsCompliances 1 } + + isnsIfcpServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial compliance statement for an iSNS Server + providing support to iFCP Clients." + MODULE -- this module + MANDATORY-GROUPS { + isnsServerAttributesGroup, + isnsServerIfcpPortControlNodeGroup, + isnsServerIfcpDdsDdObjGroup, + isnsServerRegIfcpObjGroup, + isnsServerNumObjectsGroup, + isnsNotificationsObjGroup, + isnsServerNotificationGroup + } + OBJECT isnsServerDiscoveryMcGroupType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsServerDiscoveryMcGroupAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + + + + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsDdPortalMemberAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsDdPortalMemberAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegEntityManagementAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegEntityManagementAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegFcNodeAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + + + + is required." + + OBJECT isnsRegFcNodeAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegFcPortAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegFcPortAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsAddressNotificationType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsAddressNotification + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + ::= { isnsCompliances 2 } + +isnsGroups OBJECT IDENTIFIER ::= { isnsConformance 2 } + + isnsServerAttributesGroup OBJECT-GROUP + OBJECTS { + isnsServerName, + isnsServerIsnsVersion, + isnsServerVendorInfo, + isnsServerPhysicalIndex, + isnsServerTcpPort, + isnsServerUdpPort, + isnsServerDiscontinuityTime, + isnsServerRole, + isnsServerDiscoveryMethodsEnabled, + + + + isnsServerDiscoveryMcGroupType, + isnsServerDiscoveryMcGroupAddress, + isnsServerEsiNonResponseThreshold, + isnsServerEnableControlNodeMgtScn, + isnsServerDefaultDdDdsStatus, + isnsServerUpdateDdDdsSupported, + isnsServerUpdateDdDdsEnabled + } + STATUS current + DESCRIPTION + "iSNS Server attributes." + ::= { isnsGroups 1 } + + isnsServerNumObjectsGroup OBJECT-GROUP + OBJECTS { + isnsNumDds, + isnsNumDd, + isnsNumEntities, + isnsNumPortals, + isnsNumPortalGroups, + isnsNumIscsiNodes, + isnsNumFcPorts, + isnsNumFcNodes, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes + } + STATUS current + DESCRIPTION + "Managed objects indicating the number of registered objects + in an iSNS Server or the number of registered objects + associated with a registered Entity. These managed objects + are optional to implement." + ::= { isnsGroups 2 } + + isnsServerIscsiControlNodeGroup OBJECT-GROUP + OBJECTS { + isnsControlNodeIscsiNodeName, + isnsControlNodeIscsiIsRegistered, + isnsControlNodeIscsiRcvMgtSCN + } + STATUS current + DESCRIPTION + "iSNS Server iSCSI control node managed objects." + ::= { isnsGroups 3 } + + + + + isnsServerIfcpPortControlNodeGroup OBJECT-GROUP + OBJECTS { + isnsControlNodeFcPortIsRegistered, + isnsControlNodeFcPortRcvMgtSCN + } + STATUS current + DESCRIPTION + "iSNS Server iFCP Port control node managed objects." + ::= { isnsGroups 4 } + + isnsServerIscsiDdsDdObjGroup OBJECT-GROUP + OBJECTS { + isnsDdsSymbolicName, + isnsDdsStatus, + isnsDdsMemberSymbolicName, + isnsDdSymbolicName, + isnsDdFeatures, + isnsDdIscsiMemberName, + isnsDdIscsiMemberIsRegistered, + isnsDdPortalMemberAddressType, + isnsDdPortalMemberAddress, + isnsDdPortalMemberPortType, + isnsDdPortalMemberPort, + isnsDdPortalMemberIsRegistered + } + STATUS current + DESCRIPTION + "iSNS Server DDS and DD managed objects for iSCSI." + ::= { isnsGroups 5 } + + isnsServerIfcpDdsDdObjGroup OBJECT-GROUP + OBJECTS { + isnsDdsSymbolicName, + isnsDdsStatus, + isnsDdSymbolicName, + isnsDdFeatures, + isnsDdPortalMemberAddressType, + isnsDdPortalMemberAddress, + isnsDdPortalMemberPortType, + isnsDdPortalMemberPort, + isnsDdPortalMemberIsRegistered, + isnsDdFcPortMemberIsRegistered + } + STATUS current + DESCRIPTION + "iSNS Server DDS and DD managed objects for iFCP." + ::= { isnsGroups 6 } + + + + + isnsServerRegIscsiObjGroup OBJECT-GROUP + OBJECTS { + isnsRegEntityEID, + isnsRegEntityProtocol, + isnsRegEntityManagementAddressType, + isnsRegEntityManagementAddress, + isnsRegEntityTimestamp, + isnsRegEntityVersionMin, + isnsRegEntityVersionMax, + isnsRegEntityRegistrationPeriod, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes, + isnsRegPortalAddressType, + isnsRegPortalAddress, + isnsRegPortalPortType, + isnsRegPortalPort, + isnsRegPortalSymbolicName, + isnsRegPortalEsiInterval, + isnsRegPortalEsiPortType, + isnsRegPortalEsiPort, + isnsRegPortalScnPortType, + isnsRegPortalScnPort, + isnsRegPortalSecurityInfo, + isnsRegPgIscsiNodeIndex, + isnsRegPgIscsiName, + isnsRegPgPortalPortalIndex, + isnsRegPgPortalAddressType, + isnsRegPgPortalAddress, + isnsRegPgPortalPortType, + isnsRegPgPortalPort, + isnsRegPgPGT, + isnsRegIscsiNodeName, + isnsRegIscsiNodeType, + isnsRegIscsiNodeAlias, + isnsRegIscsiNodeScnTypes, + isnsRegIscsiNodeWwnToken, + isnsRegIscsiNodeAuthMethod + } + STATUS current + DESCRIPTION + "iSNS Server registered iSCSI managed objects." + ::= { isnsGroups 7 } + + isnsServerRegIfcpObjGroup OBJECT-GROUP + OBJECTS { + + + + isnsRegEntityEID, + isnsRegEntityProtocol, + isnsRegEntityManagementAddressType, + isnsRegEntityManagementAddress, + isnsRegEntityTimestamp, + isnsRegEntityVersionMin, + isnsRegEntityVersionMax, + isnsRegEntityRegistrationPeriod, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes, + isnsRegPortalAddressType, + isnsRegPortalAddress, + isnsRegPortalPortType, + isnsRegPortalPort, + isnsRegPortalSymbolicName, + isnsRegPortalEsiInterval, + isnsRegPortalEsiPortType, + isnsRegPortalEsiPort, + isnsRegPortalScnPortType, + isnsRegPortalScnPort, + isnsRegPortalSecurityInfo, + isnsRegFcPortID, + isnsRegFcPortType, + isnsRegFcPortSymbolicName, + isnsRegFcPortFabricPortWwn, + isnsRegFcPortHA, + isnsRegFcPortAddressType, + isnsRegFcPortAddress, + isnsRegFcPortFcCos, + isnsRegFcPortFc4Types, + isnsRegFcPortFc4Descr, + isnsRegFcPortFc4Features, + isnsRegFcPortScnTypes, + isnsRegFcPortRole, + isnsRegFcPortFcNodeWwnn, + isnsRegFcPortPpnWwn, + isnsRegFcNodeSymbolicName, + isnsRegFcNodeAddressType, + isnsRegFcNodeAddress, + isnsRegFcNodeIPA, + isnsRegFcNodeProxyIscsiName, + isnsRegFcNodeNumFcPorts, + isnsRegFcNodePortEntityIndex + } + STATUS current + + + + DESCRIPTION + "iSNS Server registered iFCP managed objects." + ::= { isnsGroups 8 } + + isnsNotificationsObjGroup OBJECT-GROUP + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "iSNS Notification managed objects." + ::= { isnsGroups 9 } + + isnsServerNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + isnsServerStart, + isnsServerShutdown + } + STATUS current + DESCRIPTION + "iSNS Server Notification managed objects." + ::= { isnsGroups 10 } +END diff --git a/mibs/ietf/ITU-ALARM-MIB b/mibs/ietf/ITU-ALARM-MIB new file mode 100644 index 0000000..2a1020f --- /dev/null +++ b/mibs/ietf/ITU-ALARM-MIB @@ -0,0 +1,502 @@ +ITU-ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Gauge32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + AutonomousType, RowPointer + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + alarmListName, alarmModelIndex, + alarmActiveDateAndTime, alarmActiveIndex + FROM ALARM-MIB -- [RFC3877] + ItuPerceivedSeverity, + ItuTrendIndication + FROM ITU-ALARM-TC-MIB -- [RFC3877] + IANAItuProbableCause, + IANAItuEventType + FROM IANA-ITU-ALARM-TC-MIB -- [RFC3877] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB; -- [RFC2021] + + ituAlarmMIB MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + + + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "The MIB module describes ITU Alarm information + as defined in ITU Recommendation M.3100 [M.3100], + X.733 [X.733] and X.736 [X.736]. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 121 } + +ituAlarmObjects OBJECT IDENTIFIER ::= { ituAlarmMIB 1 } + +ituAlarmModel OBJECT IDENTIFIER ::= { ituAlarmObjects 1 } + +ituAlarmActive OBJECT IDENTIFIER ::= { ituAlarmObjects 2 } + +ituAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ITU Alarm information for possible alarms + on the system." + ::= { ituAlarmModel 1 } + +ituAlarmEntry OBJECT-TYPE + SYNTAX ItuAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table whenever an entry is created + in the alarmModelTable with a value of alarmModelState in + the range from 1 to 6. Entries disappear from this table + whenever the corresponding entries are deleted from the + alarmModelTable, including in cases where those entries + have been deleted due to local system action. The value of + alarmModelSpecificPointer has no effect on the creation + or deletion of entries in this table. Values of + alarmModelState map to values of ituAlarmPerceivedSeverity + as follows: + + + alarmModelState -> ituAlarmPerceivedSeverity + 1 -> clear (1) + 2 -> indeterminate (2) + 3 -> warning (6) + 4 -> minor (5) + 5 -> major (4) + 6 -> critical (3) + + All other values of alarmModelState MUST NOT appear + in this table. + + This table MUST be persistent across system reboots." + INDEX { alarmListName, alarmModelIndex, + ituAlarmPerceivedSeverity } + ::= { ituAlarmTable 1 } + +ItuAlarmEntry ::= SEQUENCE { + ituAlarmPerceivedSeverity ItuPerceivedSeverity, + ituAlarmEventType IANAItuEventType, + ituAlarmProbableCause IANAItuProbableCause, + ituAlarmAdditionalText SnmpAdminString, + ituAlarmGenericModel RowPointer } + +ituAlarmPerceivedSeverity OBJECT-TYPE + SYNTAX ItuPerceivedSeverity + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ITU perceived severity values." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmEntry 1 } + +ituAlarmEventType OBJECT-TYPE + SYNTAX IANAItuEventType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Represents the event type values for the alarms" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + + + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmEntry 2 } + +ituAlarmProbableCause OBJECT-TYPE + SYNTAX IANAItuProbableCause + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "ITU probable cause values." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmEntry 3 } + +ituAlarmAdditionalText OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Represents the additional text field for the alarm." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmEntry 4} + +ituAlarmGenericModel OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object points to the corresponding + row in the alarmModelTable for this alarm severity. + + This corresponding entry to alarmModelTable could also + be derived by performing the reverse of the mapping + from alarmModelState to ituAlarmPerceivedSeverity defined + + + in the description of ituAlarmEntry to determine the + appropriate { alarmListName, alarmModelIndex, alarmModelState } + for this { alarmListName, alarmModelIndex, + ituAlarmPerceivedSeverity }." + ::= { ituAlarmEntry 5 } + +-- ITU Active Alarm Table -- + +ituAlarmActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ITU information for active alarms entries." + ::= { ituAlarmActive 1 } + +ituAlarmActiveEntry OBJECT-TYPE + SYNTAX ItuAlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when alarms are active. They + are removed when the alarm is no longer occurring." + INDEX { alarmListName, alarmActiveDateAndTime, + alarmActiveIndex } + ::= { ituAlarmActiveTable 1 } + +ItuAlarmActiveEntry ::= SEQUENCE { + ituAlarmActiveTrendIndication ItuTrendIndication, + ituAlarmActiveDetector AutonomousType, + ituAlarmActiveServiceProvider AutonomousType, + ituAlarmActiveServiceUser AutonomousType + } + +ituAlarmActiveTrendIndication OBJECT-TYPE + SYNTAX ItuTrendIndication + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the trend indication values for the alarms." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmActiveEntry 1 } + + + +ituAlarmActiveDetector OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the SecurityAlarmDetector object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 2 } + +ituAlarmActiveServiceProvider OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the ServiceProvider object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 3 } + +ituAlarmActiveServiceUser OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the ServiceUser object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 4 } + +-- Statistics and Counters + +ituAlarmActiveStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the ITU alarm statistics + information." + ::= { ituAlarmActive 2 } + + + + +ituAlarmActiveStatsEntry OBJECT-TYPE + SYNTAX ItuAlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics on the current active ITU alarms." + INDEX { alarmListName } + + ::= { ituAlarmActiveStatsTable 1 } + +ItuAlarmActiveStatsEntry ::= + SEQUENCE { + ituAlarmActiveStatsIndeterminateCurrent Gauge32, + ituAlarmActiveStatsCriticalCurrent Gauge32, + ituAlarmActiveStatsMajorCurrent Gauge32, + ituAlarmActiveStatsMinorCurrent Gauge32, + ituAlarmActiveStatsWarningCurrent Gauge32, + ituAlarmActiveStatsIndeterminates ZeroBasedCounter32, + ituAlarmActiveStatsCriticals ZeroBasedCounter32, + ituAlarmActiveStatsMajors ZeroBasedCounter32, + ituAlarmActiveStatsMinors ZeroBasedCounter32, + ituAlarmActiveStatsWarnings ZeroBasedCounter32 + } + +ituAlarmActiveStatsIndeterminateCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of indeterminate." + ::= { ituAlarmActiveStatsEntry 1 } + +ituAlarmActiveStatsCriticalCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of critical." + ::= { ituAlarmActiveStatsEntry 2 } + +ituAlarmActiveStatsMajorCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + + + ituAlarmPerceivedSeverity of major." + ::= { ituAlarmActiveStatsEntry 3 } + +ituAlarmActiveStatsMinorCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of minor." + ::= { ituAlarmActiveStatsEntry 4 } + +ituAlarmActiveStatsWarningCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of warning." + ::= { ituAlarmActiveStatsEntry 5 } + +ituAlarmActiveStatsIndeterminates OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of indeterminate since system + restart." + ::= { ituAlarmActiveStatsEntry 6 } + +ituAlarmActiveStatsCriticals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of critical since system restart." + ::= { ituAlarmActiveStatsEntry 7 } + +ituAlarmActiveStatsMajors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of major since system restart." + ::= { ituAlarmActiveStatsEntry 8 } + + +ituAlarmActiveStatsMinors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of minor since system restart." + ::= { ituAlarmActiveStatsEntry 9 } + +ituAlarmActiveStatsWarnings OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of warning since system restart." + ::= { ituAlarmActiveStatsEntry 10 } + +-- Conformance + +ituAlarmConformance OBJECT IDENTIFIER ::= { ituAlarmMIB 2 } +ituAlarmCompliances OBJECT IDENTIFIER ::= { ituAlarmConformance 1 } + +ituAlarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the ITU Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + ituAlarmGroup + } + GROUP ituAlarmServiceUserGroup + DESCRIPTION + "This group is optional." + GROUP ituAlarmSecurityGroup + DESCRIPTION + "This group is optional." + GROUP ituAlarmStatisticsGroup + DESCRIPTION + "This group is optional." + ::= { ituAlarmCompliances 1 } + +ituAlarmGroups OBJECT IDENTIFIER ::= { ituAlarmConformance 2 } + +ituAlarmGroup OBJECT-GROUP + OBJECTS { + ituAlarmEventType, + + + ituAlarmProbableCause, + ituAlarmGenericModel + } + STATUS current + DESCRIPTION + "ITU alarm details list group." + ::= { ituAlarmGroups 1} + +ituAlarmServiceUserGroup OBJECT-GROUP + OBJECTS { + ituAlarmAdditionalText, + ituAlarmActiveTrendIndication + } + STATUS current + DESCRIPTION + "The use of these parameters is a service-user option." + ::= { ituAlarmGroups 2 } + +ituAlarmSecurityGroup OBJECT-GROUP + OBJECTS { + ituAlarmActiveDetector, + ituAlarmActiveServiceProvider, + ituAlarmActiveServiceUser + } + STATUS current + DESCRIPTION + "Security Alarm Reporting Function" + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmGroups 3 } + +ituAlarmStatisticsGroup OBJECT-GROUP + OBJECTS { + ituAlarmActiveStatsIndeterminateCurrent, + ituAlarmActiveStatsCriticalCurrent, + ituAlarmActiveStatsMajorCurrent, + ituAlarmActiveStatsMinorCurrent, + ituAlarmActiveStatsWarningCurrent, + ituAlarmActiveStatsIndeterminates, + ituAlarmActiveStatsCriticals, + ituAlarmActiveStatsMajors, + ituAlarmActiveStatsMinors, + ituAlarmActiveStatsWarnings + } + STATUS current + DESCRIPTION + + + "ITU Active Alarm Statistics." + ::= { ituAlarmGroups 4 } + +END diff --git a/mibs/ietf/ITU-ALARM-TC-MIB b/mibs/ietf/ITU-ALARM-TC-MIB new file mode 100644 index 0000000..13428b9 --- /dev/null +++ b/mibs/ietf/ITU-ALARM-TC-MIB @@ -0,0 +1,89 @@ +ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + ituAlarmTc MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + " WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "This MIB module defines the ITU Alarm + textual convention for objects not expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + + + + ::= { mib-2 120 } + +ItuPerceivedSeverity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU perceived severity values" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + SYNTAX INTEGER + { + cleared (1), + indeterminate (2), + critical (3), + major (4), + minor (5), + warning (6) + } + +ItuTrendIndication ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU trend indication values for alarms." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + SYNTAX INTEGER + { + moreSevere (1), + noChange (2), + lessSevere (3) + } + +END diff --git a/mibs/ietf/Job-Monitoring-MIB b/mibs/ietf/Job-Monitoring-MIB new file mode 100644 index 0000000..0eb7cfc --- /dev/null +++ b/mibs/ietf/Job-Monitoring-MIB @@ -0,0 +1,1732 @@ +Job-Monitoring-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, enterprises, + Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + -- The following textual-conventions are needed to implement + -- certain attributes, but are not needed to compile this MIB. + -- They are provided here for convenience: + -- hrDeviceIndex FROM HOST-RESOURCES-MIB + -- DateAndTime FROM SNMPv2-TC + -- PrtInterpreterLangFamilyTC, + -- CodedCharSet FROM Printer-MIB + +-- Use the enterprises arc assigned to the PWG which is pwg(2699). +-- Group all PWG mibs under mibs(1). + +jobmonMIB MODULE-IDENTITY + LAST-UPDATED "9902190000Z" + ORGANIZATION "Printer Working Group (PWG)" + CONTACT-INFO + "Tom Hastings + Postal: Xerox Corp. + Mail stop ESAE-231 + 701 S. Aviation Blvd. + El Segundo, CA 90245 + + Tel: (301)333-6413 + Fax: (301)333-5514 + E-mail: hastings@cp10.es.xerox.com + + Send questions and comments to the Printer Working Group (PWG) + using the Job Monitoring Project (JMP) Mailing List: + jmp@pwg.org + + For further information, including how to subscribe to the + jmp mailing list, access the PWG web page under 'JMP': + + http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + jmp mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for monitoring job in servers, printers, and + other devices. + + Version: 1.0" + + -- revision history + REVISION "9902190000Z" + DESCRIPTION " This version published as RFC 2707" + + ::= { enterprises pwg(2699) mibs(1) jobmonMIB(1) } + +-- Textual conventions for this MIB module + +JmUTF8StringTC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC represents + information taken from the ISO/IEC IS 10646-1 character set, + encoded as an octet string using the UTF-8 character encoding + scheme. + + See section 3.6.1, entitled: 'Text generated by the server or + device'." + SYNTAX OCTET STRING (SIZE (0..63)) + + + + +JmJobStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC represents + information using any coded character set registered by IANA as + specified in section 3.7. While it is recommended that the + coded character set be UTF-8 [UTF-8], the actual coded + character set SHALL be indicated by the value of the + jobCodedCharSet(8) attribute for the job. + + See section 3.6.2, entitled: 'Text supplied by the job + submitter'." + SYNTAX OCTET STRING (SIZE (0..63)) + +JmNaturalLanguageTagTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An IETF RFC 1766-compliant 'language tag', with zero or more + sub-tags that identify a natural language. While RFC 1766 + specifies that the US-ASCII values are case-insensitive, this + MIB specification requires that all characters SHALL be lower + case in order to simplify comparing by management applications. + + See section 3.6.1, entitled: 'Text generated by the server or + device' and section 3.6.2, entitled: 'Text supplied by the job + submitter'." + SYNTAX OCTET STRING (SIZE (0..63)) + + + +JmTimeStampTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The simple time at which an event took place. The units are + in seconds since the system was booted. + + NOTE - JmTimeStampTC is defined in units of seconds, rather + than 100ths of seconds, so as to be simpler for agents to + implement (even if they have to implement the 100ths of a + second to comply with implementing sysUpTime in MIB-II[mib- + II].) + + NOTE - JmTimeStampTC is defined as an Integer32 so that it can + be used as a value of an attribute, i.e., as a value of the + jmAttributeValueAsInteger object. The TimeStamp textual- + convention defined in SNMPv2-TC [SMIv2-TC] is defined as an + APPLICATION 3 IMPLICIT INTEGER tag, not an Integer32 which is + defined in SNMPv2-SMI [SMIv2-TC] as UNIVERSAL 2 IMPLICIT + INTEGER, so cannot be used in this MIB as one of the values of + jmAttributeValueAsInteger." + SYNTAX INTEGER (0..2147483647) + + + + +JmJobSourcePlatformTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source platform type that can submit jobs to servers or + devices in any of the 3 configurations. + + This is a type 2 enumeration. See Section 3.7.1.2. See also + IANA operating-system-names registry." + SYNTAX INTEGER { + other(1), + unknown(2), + sptUNIX(3), -- UNIX + sptOS2(4), -- OS/2 + sptPCDOS(5), -- DOS + sptNT(6), -- NT + sptMVS(7), -- MVS + sptVM(8), -- VM + sptOS400(9), -- OS/400 + sptVMS(10), -- VMS + sptWindows(11), -- Windows + sptNetWare(12) -- NetWare + } + + + +JmFinishingTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of finishing operation. + + These values are the same as the enum values of the IPP + 'finishings' attribute. See Section 3.7.1.2. + + other(1), + Some other finishing operation besides one of the specified + or registered values. + + unknown(2), + The finishing is unknown. + + none(3), + Perform no finishing. + + staple(4), + Bind the document(s) with one or more staples. The exact + number and placement of the staples is site-defined. + + punch(5), + Holes are required in the finished document. The exact + number and placement of the holes is site-defined. The + punch specification MAY be satisfied (in a site- and + implementation-specific manner) either by + drilling/punching, or by substituting pre-drilled media. + + cover(6), + Select a non-printed (or pre-printed) cover for the + document. This does not supplant the specification of a + printed cover (on cover stock medium) by the document + itself. + + bind(7) + Binding is to be applied to the document; the type and + placement of the binding is product-specific. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), + unknown(2), + none(3), + staple(4), + punch(5), + cover(6), + bind(7) + } + + +JmPrintQualityTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Print quality settings. + + These values are the same as the enum values of the IPP 'print- + quality' attribute. See Section 3.7.1.2. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), -- Not one of the specified or registered + -- values. + unknown(2), -- The actual value is unknown. + draft(3), -- Lowest quality available on the printer. + normal(4), -- Normal or intermediate quality on the + -- printer. + high(5) -- Highest quality available on the printer. + } + + + +JmPrinterResolutionTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Printer resolutions. + + Nine octets consisting of two 4-octet SIGNED-INTEGERs followed + by a SIGNED-BYTE. The values are the same as those specified + in the Printer MIB [printmib]. The first SIGNED-INTEGER + contains the value of prtMarkerAddressabilityXFeedDir. The + second SIGNED-INTEGER contains the value of + prtMarkerAddressabilityFeedDir. The SIGNED-BYTE contains the + value of prtMarkerAddressabilityUnit. + + Note: the latter value is either 3 (tenThousandsOfInches) or 4 + (micrometers) and the addressability is in 10,000 units of + measure. Thus the SIGNED-INTEGERs represent integral values in + either dots-per-inch or dots-per-centimeter. + + The syntax is the same as the IPP 'printer-resolution' + attribute. See Section 3.7.1.2." + SYNTAX OCTET STRING (SIZE(9)) + + +JmTonerEconomyTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Toner economy settings. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), -- unknown. + off(3), -- Off. Normal. Use full toner. + on(4) -- On. Use less toner than normal. + } + + + +JmBooleanTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Boolean true or false value. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), -- unknown. + false(3), -- FALSE. + true(4) -- TRUE. + } + + + +JmMediumTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the type of medium. + + other(1), + The type is neither one of the values listed in this + specification nor a registered value. + + unknown(2), + The type is not known. + + stationery(3), + Separately cut sheets of an opaque material. + + transparency(4), + Separately cut sheets of a transparent material. + + envelope(5), + Envelopes that can be used for conventional mailing + purposes. + + envelopePlain(6), + Envelopes that are not preprinted and have no windows. + + envelopeWindow(7), + Envelopes that have windows for addressing purposes. + + continuousLong(8), + Continuously connected sheets of an opaque material + connected along the long edge. + + continuousShort(9), + Continuously connected sheets of an opaque material + connected along the short edge. + + tabStock(10), + Media with tabs. + + multiPartForm(11), + Form medium composed of multiple layers not pre-attached to + one another; each sheet MAY be drawn separately from an + input source. + + labels(12), + Label-stock. + + multiLayer(13) + Form medium composed of multiple layers which are pre- + attached to one another, e.g. for use with impact printers. + This is a type 2 enumeration. See Section 3.7.1.2. These enum + values correspond to the keyword name strings of the + prtInputMediaType object in the Printer MIB [print-mib]. There + is no printer description attribute in IPP/1.0 that represents + these values." + SYNTAX INTEGER { + other(1), + unknown(2), + stationery(3), + transparency(4), + envelope(5), + envelopePlain(6), + envelopeWindow(7), + continuousLong(8), + continuousShort(9), + tabStock(10), + multiPartForm(11), + labels(12), + multiLayer(13) + } + + +JmJobCollationTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This value is the type of job collation. Implementations that + don't support multiple documents or don't support multiple + copies SHALL NOT support the uncollatedDocuments(5) value. + + This is a type 2 enumeration. See Section 3.7.1.2. See also + Section 3.4, entitled 'Monitoring Job Progress'." + SYNTAX INTEGER { + other(1), + unknown(2), + uncollatedSheets(3), -- sheets within each document copy + -- are not collated: 1 1 ..., 2 2 ..., + -- No corresponding value of IPP + -- "multiple-document-handling" + collatedDocuments(4), -- internal collated sheets, + -- documents: A, B, A, B, ... + -- Corresponds to IPP "multiple- + -- document-handling"='separate- + -- documents-collated-copies' + uncollatedDocuments(5) -- internal collated sheets, + -- documents: A, A, ..., B, B, ... + -- Corresponds to IPP "multiple- + -- document-handling"='separate- + -- documents-uncollated-copies' + } + + +JmJobSubmissionIDTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the format type of a job submission ID. + + Each job submission ID is a fixed-length, 48-octet printable + US-ASCII [US-ASCII] coded character string containing no + control characters, consisting of the fields defined in section + 3.5.1. + + This is like a type 2 enumeration. See section 3.7.3." + SYNTAX OCTET STRING(SIZE(1)) -- ASCII '0'-'9', 'A'-'Z', 'a'-'z' + + + +JmJobStateTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The current state of the job (pending, processing, completed, + etc.). The following figure shows the normal job state + transitions: + + +----> canceled(7) + / + +---> pending(3) -------> processing(5) ------+------> completed(9) + | ^ ^ \ +--->+ | | +----> aborted(8) + | v v / + +---> pendingHeld(4) processingStopped(6) ---+ + + + Figure 4 - Normal Job State Transitions + + Normally a job progresses from left to right. Other state + transitions are unlikely, but are not forbidden. Not shown are + the transitions to the canceled state from the pending, + pendingHeld, and processingStopped states. + + Jobs in the pending, processing, and processingStopped states + are called 'active', while jobs in the pendingHeld, canceled, + aborted, and completed states are called 'inactive'. Jobs + reach one of the three terminal states: completed, canceled, or + aborted, after the jobs have completed all activity, and all + MIB objects and attributes have reached their final values for + the job. + These values are the same as the enum values of the IPP 'job- + state' job attribute. See Section 3.7.1.2. + + unknown(2), + The job state is not known, or its state is indeterminate. + + pending(3), + The job is a candidate to start processing, but is not yet + processing. + + pendingHeld(4), + The job is not a candidate for processing for any number of + reasons but will return to the pending state as soon as the + reasons are no longer present. The job's + jmJobStateReasons1 object and/or jobStateReasonsN (N=2..4) + attributes SHALL indicate why the job is no longer a + candidate for processing. The reasons are represented as + bits in the jmJobStateReasons1 object and/or + jobStateReasonsN (N=2..4) attributes. See the + JmJobStateReasonsNTC (N=1..4) textual convention for the + specification of each reason. + + processing(5), + One or more of: + + 1. the job is using, or is attempting to use, one or + more purely software processes that are analyzing, + creating, or interpreting a PDL, etc., + + 2. the job is using, or is attempting to use, one or + more hardware devices that are interpreting a PDL, + making mark on a medium, and/or performing finishing, + such as stapling, etc., OR + + 3. (configuration 2) the server has made the job ready + for printing, but the output device is not yet printing + it, either because the job hasn't reached the output + device or because the job is queued in the output + device or some other spooler, awaiting the output + device to print it. + + When the job is in the processing state, the entire job + state includes the detailed status represented in the + device MIB indicated by the hrDeviceIndex value of the + job's physicalDevice attribute, if the agent implements + such a device MIB. + + Implementations MAY, though they NEED NOT, include + additional values in the job's jmJobStateReasons1 object + to indicate the progress of the job, such as adding the + jobPrinting value to indicate when the device is actually + making marks on a medium and/or the processingToStopPoint + value to indicate that the server or device is in the + process of canceling or aborting the job. + + processingStopped(6), + The job has stopped while processing for any number of + reasons and will return to the processing state as soon + as the reasons are no longer present. + + The job's jmJobStateReasons1 object and/or the job's + jobStateReasonsN (N=2..4) attributes MAY indicate why the + job has stopped processing. For example, if the output + device is stopped, the deviceStopped value MAY be + included in the job's jmJobStateReasons1 object. + + NOTE - When an output device is stopped, the device + usually indicates its condition in human readable form + at the device. The management application can obtain + more complete device status remotely by querying the + appropriate device MIB using the job's deviceIndex + attribute(s), if the agent implements such a device MIB + + canceled(7), + A client has canceled the job and the server or device + has completed canceling the job AND all MIB objects and + attributes have reached their final values for the job. + While the server or device is canceling the job, the + job's jmJobStateReasons1 object SHOULD contain the + processingToStopPoint value and one of the + canceledByUser, canceledByOperator, or canceledAtDevice + values. The canceledByUser, canceledByOperator, or + canceledAtDevice values remain while the job is in the + canceled state. + + aborted(8), + The job has been aborted by the system, usually while the + job was in the processing or processingStopped state and + the server or device has completed aborting the job AND + all MIB objects and attributes have reached their final + values for the job. While the server or device is + aborting the job, the job's jmJobStateReasons1 object MAY + contain the processingToStopPoint and abortedBySystem + values. If implemented, the abortedBySystem value SHALL + remain while the job is in the aborted state. + completed(9) + The job has completed successfully or with warnings or + errors after processing and all of the media have been + successfully stacked in the appropriate output bin(s) AND + all MIB objects and attributes have reached their final + values for the job. The job's jmJobStateReasons1 object + SHOULD contain one of: completedSuccessfully, + completedWithWarnings, or completedWithErrors values. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), + pending(3), + pendingHeld(4), + processing(5), + processingStopped(6), + canceled(7), + aborted(8), + completed(9) + } + + + +JmAttributeTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of the attribute which identifies the attribute. + + NOTE - The enum assignments are grouped logically with values + assigned in groups of 20, so that additional values may be + registered in the future and assigned a value that is part of + their logical grouping. + + Values in the range 2**30 to 2**31-1 are reserved for private + or experimental usage. This range corresponds to the same + range reserved in IPP. Implementers are warned that use of + such values may conflict with other implementations. + Implementers are encouraged to request registration of enum + values following the procedures in Section 3.7.1. + + See Section 3.2 entitled 'The Attribute Mechanism' for a + description of this textual-convention and its use in the + jmAttributeTable. See Section 3.3.8 for the specification of + each attribute. The comment(s) after each enum assignment + specifies the data type(s) of the attribute. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), -- Integer32 (-2..2147483647) + -- AND/OR + -- OCTET STRING(SIZE(0..63)) + + -- Job State attributes: + jobStateReasons2(3), -- JmJobStateReasons2TC + jobStateReasons3(4), -- JmJobStateReasons3TC + jobStateReasons4(5), -- JmJobStateReasons4TC + processingMessage(6), -- JmUTF8StringTC (SIZE(0..63)) + processingMessageNaturalLangTag(7), + -- OCTET STRING(SIZE(0..63)) + jobCodedCharSet(8), -- CodedCharSet + jobNaturalLanguageTag(9), -- OCTET STRING(SIZE(0..63)) + + + -- Job Identification attributes: + jobURI(20), -- OCTET STRING(SIZE(0..63)) + jobAccountName(21), -- OCTET STRING(SIZE(0..63)) + serverAssignedJobName(22), -- JmJobStringTC (SIZE(0..63)) + jobName(23), -- JmJobStringTC (SIZE(0..63)) + jobServiceTypes(24), -- JmJobServiceTypesTC + jobSourceChannelIndex(25), -- Integer32 (0..2147483647) + jobSourcePlatformType(26), -- JmJobSourcePlatformTypeTC + submittingServerName(27), -- JmJobStringTC (SIZE(0..63)) + submittingApplicationName(28), -- JmJobStringTC (SIZE(0..63)) + jobOriginatingHost(29), -- JmJobStringTC (SIZE(0..63)) + deviceNameRequested(30), -- JmJobStringTC (SIZE(0..63)) + queueNameRequested(31), -- JmJobStringTC (SIZE(0..63)) + physicalDevice(32), -- hrDeviceIndex + -- AND/OR + -- JmUTF8StringTC (SIZE(0..63)) + numberOfDocuments(33), -- Integer32 (-2..2147483647) + fileName(34), -- JmJobStringTC (SIZE(0..63)) + documentName(35), -- JmJobStringTC (SIZE(0..63)) + jobComment(36), -- JmJobStringTC (SIZE(0..63)) + documentFormatIndex(37), -- Integer32 (0..2147483647) + documentFormat(38), -- PrtInterpreterLangFamilyTC + -- AND/OR + -- OCTET STRING(SIZE(0..63)) + + -- Job Parameter attributes: + jobPriority(50), -- Integer32 (-2..100) + jobProcessAfterDateAndTime(51), -- DateAndTime (SNMPv2-TC) + jobHold(52), -- JmBooleanTC + jobHoldUntil(53), -- JmJobStringTC (SIZE(0..63)) + outputBin(54), -- Integer32 (0..2147483647) + -- AND/OR + + -- JmJobStringTC (SIZE(0..63)) + sides(55), -- Integer32 (-2..2) + finishing(56), -- JmFinishingTC + + -- Image Quality attributes: + printQualityRequested(70), -- JmPrintQualityTC + printQualityUsed(71), -- JmPrintQualityTC + printerResolutionRequested(72), -- JmPrinterResolutionTC + printerResolutionUsed(73), -- JmPrinterResolutionTC + tonerEcomonyRequested(74), -- JmTonerEconomyTC + tonerEcomonyUsed(75), -- JmTonerEconomyTC + tonerDensityRequested(76), -- Integer32 (-2..100) + tonerDensityUsed(77), -- Integer32 (-2..100) + + + -- Job Progress attributes: + jobCopiesRequested(90), -- Integer32 (-2..2147483647) + jobCopiesCompleted(91), -- Integer32 (-2..2147483647) + documentCopiesRequested(92), -- Integer32 (-2..2147483647) + documentCopiesCompleted(93), -- Integer32 (-2..2147483647) + jobKOctetsTransferred(94), -- Integer32 (-2..2147483647) + sheetCompletedCopyNumber(95), -- Integer32 (-2..2147483647) + sheetCompletedDocumentNumber(96), + -- Integer32 (-2..2147483647) + jobCollationType(97), -- JmJobCollationTypeTC + + -- Impression attributes: + impressionsSpooled(110), -- Integer32 (-2..2147483647) + impressionsSentToDevice(111), -- Integer32 (-2..2147483647) + impressionsInterpreted(112), -- Integer32 (-2..2147483647) + impressionsCompletedCurrentCopy(113), + -- Integer32 (-2..2147483647) + fullColorImpressionsCompleted(114), + -- Integer32 (-2..2147483647) + highlightColorImpressionsCompleted(115), + -- Integer32 (-2..2147483647) + + -- Page attributes: + pagesRequested(130), -- Integer32 (-2..2147483647) + pagesCompleted(131), -- Integer32 (-2..2147483647) + pagesCompletedCurrentCopy(132), -- Integer32 (-2..2147483647) + + -- Sheet attributes: + sheetsRequested(150), -- Integer32 (-2..2147483647) + sheetsCompleted(151), -- Integer32 (-2..2147483647) + sheetsCompletedCurrentCopy(152),-- Integer32 (-2..2147483647) + + -- Resource attributes: + mediumRequested(170), -- JmMediumTypeTC + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + mediumConsumed(171), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + colorantRequested(172), -- Integer32 (-2..2147483647) + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + colorantConsumed(173), -- Integer32 (-2..2147483647) + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + mediumTypeConsumed(174), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + mediumSizeConsumed(175), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + + -- Time attributes: + jobSubmissionToServerTime(190), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobSubmissionTime(191), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobStartedBeingHeldTime(192), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobStartedProcessingTime(193), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobCompletionTime(194), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobProcessingCPUTime(195) -- Integer32 (-2..2147483647) + } + + + +JmJobServiceTypesTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the type(s) of service to which the job has been + submitted (print, fax, scan, etc.). The service type is + represented as an enum that is bit encoded with each job + service type so that more general and arbitrary services can be + created, such as services with more than one destination type, + or ones with only a source or only a destination. For example, + a job service might scan, faxOut, and print a single job. In + this case, three bits would be set in the jobServiceTypes + attribute, corresponding to the hexadecimal values: 0x8 + 0x20 + + 0x4, respectively, yielding: 0x2C. + + Whether this attribute is set from a job attribute supplied by + the job submission client or is set by the recipient job + submission server or device depends on the job submission + protocol. With either implementation, the agent SHALL return a + non-zero value for this attribute indicating the type of the + job. + + One of the purposes of this attribute is to permit a requester + to filter out jobs that are not of interest. For example, a + printer operator MAY only be interested in jobs that include + printing. That is why the attribute is in the job + identification category. + + The following service component types are defined (in + hexadecimal) and are assigned a separate bit value for use with + the jobServiceTypes attribute: + + other 0x1 + The job contains some instructions that are not one of the + identified types. + + unknown 0x2 + The job contains some instructions whose type is unknown to + the agent. + + print 0x4 + The job contains some instructions that specify printing + + scan 0x8 + The job contains some instructions that specify scanning + + faxIn 0x10 + The job contains some instructions that specify receive fax + + faxOut 0x20 + The job contains some instructions that specify sending fax + + getFile 0x40 + The job contains some instructions that specify accessing + files or documents + + putFile 0x80 + The job contains some instructions that specify storing + files or documents + + mailList 0x100 + The job contains some instructions that specify + distribution of documents using an electronic mail system. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them MAY be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +JmJobStateReasons1TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The JmJobStateReasonsNTC (N=1..4) textual-conventions are used + with the jmJobStateReasons1 object and jobStateReasonsN + (N=2..4), respectively, to provide additional information + regarding the current jmJobState object value. These values + MAY be used with any job state or states for which the reason + makes sense. See section 3.3.9.1 for the specification of each + bit value defined for use with the JmJobStateReasons1TC. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of bits may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +JmJobStateReasons2TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used with the jobStateReasons2 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.2 for the specification + of JmJobStateReasons2TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + +JmJobStateReasons3TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used with the jobStateReasons3 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.3 for the specification + of JmJobStateReasons3TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2. " + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + + + +JmJobStateReasons4TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used in the jobStateReasons4 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.4 for the specification + of JmJobStateReasons4TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +jobmonMIBObjects OBJECT IDENTIFIER ::= { jobmonMIB 1 } + +-- The General Group (MANDATORY) + +-- The jmGeneralGroup consists entirely of the jmGeneralTable. + +jmGeneral OBJECT IDENTIFIER ::= { jobmonMIBObjects 1 } + +jmGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmGeneralTable consists of information of a general nature + that are per-job-set, but are not per-job. See Section 2 + entitled 'Terminology and Job Model' for the definition of a + job set. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmGeneral 1 } + + +jmGeneralEntry OBJECT-TYPE + SYNTAX JmGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a job set (queue). + + An entry SHALL exist in this table for each job set." + INDEX { jmGeneralJobSetIndex } + ::= { jmGeneralTable 1 } + + +JmGeneralEntry ::= SEQUENCE { + jmGeneralJobSetIndex Integer32, + jmGeneralNumberOfActiveJobs Integer32, + jmGeneralOldestActiveJobIndex Integer32, + jmGeneralNewestActiveJobIndex Integer32, + jmGeneralJobPersistence Integer32, + jmGeneralAttributePersistence Integer32, + jmGeneralJobSetName JmUTF8StringTC +} + + +jmGeneralJobSetIndex OBJECT-TYPE + SYNTAX Integer32 (1..32767) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each job set in this MIB. The jmJobTable + and jmAttributeTable tables have this same index as their + primary index. + + The value(s) of the jmGeneralJobSetIndex SHALL be persistent + across power cycles, so that clients that have retained + jmGeneralJobSetIndex values will access the same job sets upon + subsequent power-up. + + An implementation that has only one job set, such as a printer + with a single queue, SHALL hard code this object with the value + 1. + + See Section 2 entitled 'Terminology and Job Model' for the + definition of a job set. + Corresponds to the first index in jmJobTable and + jmAttributeTable." + ::= { jmGeneralEntry 1 } + + +jmGeneralNumberOfActiveJobs OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of 'active' jobs in the jmJobIDTable, + jmJobTable, and jmAttributeTable, i.e., the total number of + jobs that are in the pending, processing, or processingStopped + states. See the JmJobStateTC textual-convention for the exact + specification of the semantics of the job states." + DEFVAL { 0 } -- no jobs + ::= { jmGeneralEntry 2 } + + +jmGeneralOldestActiveJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jmJobIndex of the oldest job that is still in one of the + 'active' states (pending, processing, or processingStopped). + In other words, the index of the 'active' job that has been in + the job tables the longest. + + If there are no active jobs, the agent SHALL set the value of + this object to 0. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes' for a description of the usage of + this object." + DEFVAL { 0 } -- no active jobs + ::= { jmGeneralEntry 3 } + + + +jmGeneralNewestActiveJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jmJobIndex of the newest job that is in one of the + 'active' states (pending, processing, or processingStopped). + In other words, the index of the 'active' job that has been + most recently added to the job tables. + + When all jobs become 'inactive', i.e., enter the pendingHeld, + completed, canceled, or aborted states, the agent SHALL set the + value of this object to 0. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes' for a description of the usage of + this object." + DEFVAL { 0 } -- no active jobs + ::= { jmGeneralEntry 4 } + + + +jmGeneralJobPersistence OBJECT-TYPE + SYNTAX Integer32 (15..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time in seconds for this instance of the Job Set + that an entry SHALL remain in the jmJobIDTable and jmJobTable + after processing has completed, i.e., the minimum time in + seconds starting when the job enters the completed, canceled, + or aborted state. + + Configuring this object is implementation-dependent. + + This value SHALL be equal to or greater than the value of + jmGeneralAttributePersistence. This value SHOULD be at least + 60 which gives a monitoring or accounting application one + minute in which to poll for job data." + DEFVAL { 60 } -- one minute + ::= { jmGeneralEntry 5 } + + + +jmGeneralAttributePersistence OBJECT-TYPE + SYNTAX Integer32 (15..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time in seconds for this instance of the Job Set + that an entry SHALL remain in the jmAttributeTable after + processing has completed , i.e., the time in seconds starting + when the job enters the completed, canceled, or aborted state. + + Configuring this object is implementation-dependent. + + This value SHOULD be at least 60 which gives a monitoring or + accounting application one minute in which to poll for job + data." + DEFVAL { 60 } -- one minute + ::= { jmGeneralEntry 6 } + + + +jmGeneralJobSetName OBJECT-TYPE + SYNTAX JmUTF8StringTC (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of this job set assigned by the system + administrator (by means outside of this MIB). Typically, this + name SHOULD be the name of the job queue. If a server or + device has only a single job set, this object can be the + administratively assigned name of the server or device itself. + This name does not need to be unique, though each job set in a + single Job Monitoring MIB SHOULD have distinct names. + + NOTE - If the job set corresponds to a single printer and the + Printer MIB is implemented, this value SHOULD be the same as + the prtGeneralPrinterName object in the draft Printer MIB + [print-mib-draft]. If the job set corresponds to an IPP + Printer, this value SHOULD be the same as the IPP 'printer- + name' Printer attribute. + + NOTE - The purpose of this object is to help the user of the + job monitoring application distinguish between several job sets + in implementations that support more than one job set. + + See the OBJECT compliance macro for the minimum maximum length + required for conformance." + DEFVAL { ''H } -- empty string + ::= { jmGeneralEntry 7 } + + +-- The Job ID Group (MANDATORY) + +-- The jmJobIDGroup consists entirely of the jmJobIDTable. +jmJobID OBJECT IDENTIFIER ::= { jobmonMIBObjects 2 } + +jmJobIDTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmJobIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmJobIDTable provides a correspondence map (1) between the + job submission ID that a client uses to refer to a job and (2) + the jmGeneralJobSetIndex and jmJobIndex that the Job Monitoring + MIB agent assigned to the job and that are used to access the + job in all of the other tables in the MIB. If a monitoring + application already knows the jmGeneralJobSetIndex and the + jmJobIndex of the job it is querying, that application NEED NOT + use the jmJobIDTable. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmJobID 1 } + + + +jmJobIDEntry OBJECT-TYPE + SYNTAX JmJobIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The map from (1) the jmJobSubmissionID to (2) the + jmGeneralJobSetIndex and jmJobIndex. + + An entry SHALL exist in this table for each job currently known + to the agent for all job sets and job states. There MAY be + more than one jmJobIDEntry that maps to a single job. This + many to one mapping can occur when more than one network entity + along the job submission path supplies a job submission ID. + See Section 3.5. However, each job SHALL appear once and in + one and only one job set." + INDEX { jmJobSubmissionID } + ::= { jmJobIDTable 1 } + +JmJobIDEntry ::= SEQUENCE { + jmJobSubmissionID OCTET STRING, + jmJobIDJobSetIndex Integer32, + jmJobIDJobIndex Integer32 +} + + +jmJobSubmissionID OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(48)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A quasi-unique 48-octet fixed-length string ID which + identifies the job within a particular client-server + environment. There are multiple formats for the + jmJobSubmissionID. Each format SHALL be uniquely identified. + See the JmJobSubmissionIDTypeTC textual convention. Each + format SHALL be registered using the procedures of a type 2 + enum. See section 3.7.3 entitled: 'PWG Registration of Job + Submission Id Formats'. + + If the requester (client or server) does not supply a job + submission ID in the job submission protocol, then the + recipient (server or device) SHALL assign a job submission ID + using any of the standard formats that have been reserved for + agents and adding the final 8 octets to distinguish the ID from + others submitted from the same requester. + + The monitoring application, whether in the client or running + separately, MAY use the job submission ID to help identify + which jmJobIndex was assigned by the agent, i.e., in which row + the job information is in the other tables. + + NOTE - fixed-length is used so that a management application + can use a shortened GetNext varbind (in SNMPv1 and SNMPv2) in + order to get the next submission ID, disregarding the remainder + of the ID in order to access jobs independent of the trailing + identifier part, e.g., to get all jobs submitted by a + particular jmJobOwner or submitted from a particular MAC + address. + + See the JmJobSubmissionIDTypeTC textual convention. + See APPENDIX B - Support of Job Submission Protocols." + ::= { jmJobIDEntry 1 } + + + +jmJobIDJobSetIndex OBJECT-TYPE + SYNTAX Integer32 (0..32767) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the jmGeneralJobSetIndex for + the job with the jmJobSubmissionID value, i.e., the job set + index of the job set in which the job was placed when that + server or device accepted the job. This 16-bit value in + combination with the jmJobIDJobIndex value permits the + management application to access the other tables to obtain the + job-specific objects for this job. + + See jmGeneralJobSetIndex in the jmGeneralTable." + DEFVAL { 0 } -- 0 indicates no job set index + ::= { jmJobIDEntry 2 } + + + +jmJobIDJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the jmJobIndex for the job + with the jmJobSubmissionID value, i.e., the job index for the + job when the server or device accepted the job. This value, in + combination with the jmJobIDJobSetIndex value, permits the + management application to access the other tables to obtain the + job-specific objects for this job. + + See jmJobIndex in the jmJobTable." + DEFVAL { 0 } -- 0 indicates no jmJobIndex value. + ::= { jmJobIDEntry 3 } + + +-- The Job Group (MANDATORY) + +-- The jmJobGroup consists entirely of the jmJobTable. + +jmJob OBJECT IDENTIFIER ::= { jobmonMIBObjects 3 } + +jmJobTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmJobEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmJobTable consists of basic job state and status + information for each job in a job set that (1) monitoring + applications need to be able to access in a single SNMP Get + operation, (2) that have a single value per job, and (3) that + SHALL always be implemented. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmJob 1 } + +jmJobEntry OBJECT-TYPE + SYNTAX JmJobEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Basic per-job state and status information. + + An entry SHALL exist in this table for each job, no matter what + the state of the job is. Each job SHALL appear in one and only + one job set. + + See Section 3.2 entitled 'The Job Tables'." + INDEX { jmGeneralJobSetIndex, jmJobIndex } + ::= { jmJobTable 1 } + +JmJobEntry ::= SEQUENCE { + jmJobIndex Integer32, + jmJobState JmJobStateTC, + jmJobStateReasons1 JmJobStateReasons1TC, + jmNumberOfInterveningJobs Integer32, + jmJobKOctetsPerCopyRequested Integer32, + jmJobKOctetsProcessed Integer32, + jmJobImpressionsPerCopyRequested Integer32, + jmJobImpressionsCompleted Integer32, + jmJobOwner JmJobStringTC +} + + +jmJobIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sequential, monatonically increasing identifier index for + the job generated by the server or device when that server or + device accepted the job. This index value permits the + management application to access the other tables to obtain the + job-specific row entries. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes'. + See Section 3.5 entitled 'Job Identification'. + See also jmGeneralNewestActiveJobIndex for the largest value of + jmJobIndex. + See JmJobSubmissionIDTypeTC for a limit on the size of this + index if the agent represents it as an 8-digit decimal number." + ::= { jmJobEntry 1 } + +jmJobState OBJECT-TYPE + SYNTAX JmJobStateTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the job (pending, processing, completed, + etc.). Agents SHALL implement only those states which are + appropriate for the particular implementation. However, + management applications SHALL be prepared to receive all the + standard job states. + + The final value for this object SHALL be one of: completed, + canceled, or aborted. The minimum length of time that the + agent SHALL maintain MIB data for a job in the completed, + canceled, or aborted state before removing the job data from + the jmJobIDTable and jmJobTable is specified by the value of + the jmGeneralJobPersistence object." + DEFVAL { unknown } -- default is unknown + ::= { jmJobEntry 2 } + + + +jmJobStateReasons1 OBJECT-TYPE + SYNTAX JmJobStateReasons1TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional information about the job's current state, i.e., + information that augments the value of the job's jmJobState + object. + + Implementation of any reason values is OPTIONAL, but an agent + SHOULD return any reason information available. These values + MAY be used with any job state or states for which the reason + makes sense. Since the Job State Reasons will be more dynamic + than the Job State, it is recommended that a job monitoring + application read this object every time jmJobState is read. + When the agent cannot provide a reason for the current state of + the job, the value of the jmJobStateReasons1 object and + jobStateReasonsN attributes SHALL be 0. + + The jobStateReasonsN (N=2..4) attributes provide further + additional information about the job's current state." + DEFVAL { 0 } -- no reasons + ::= { jmJobEntry 3 } + +jmNumberOfInterveningJobs OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of jobs that are expected to complete processing + before this job has completed processing according to the + implementation's queuing algorithm, if no other jobs were to be + submitted. In other words, this value is the job's queue + position. The agent SHALL return a value of 0 for this + attribute when the job is the next job to complete processing + (or has completed processing)." + DEFVAL { 0 } -- default is no intervening jobs. + ::= { jmJobEntry 4 } + + + +jmJobKOctetsPerCopyRequested OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size in K (1024) octets of the document(s) being + requested to be processed in the job. The agent SHALL round + the actual number of octets up to the next highest K. Thus 0 + octets is represented as '0', 1-1024 octets is represented as + '1', 1025-2048 is represented as '2', etc. + + In computing this value, the server/device SHALL NOT include + the multiplicative factors contributed by (1) the number of + document copies, and (2) the number of job copies, independent + of whether the device can process multiple copies of the job or + document without making multiple passes over the job or + document data and independent of whether the output is collated + or not. Thus the server/device computation is independent of + the implementation and indicates the size of the document(s) + measured in K octets independent of the number of copies." + DEFVAL { -2 } -- the default is unknown(-2) + ::= { jmJobEntry 5 } + + + +jmJobKOctetsProcessed OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets processed by the server or device + measured in units of K (1024) octets so far. The agent SHALL + round the actual number of octets processed up to the next + higher K. Thus 0 octets is represented as '0', 1-1024 octets + is represented as '1', 1025-2048 octets is '2', etc. For + printing devices, this value is the number interpreted by the + page description language interpreter rather than what has been + marked on media. + + For implementations where multiple copies are produced by the + interpreter with only a single pass over the data, the final + value SHALL be equal to the value of the + jmJobKOctetsPerCopyRequested object. For implementations where + multiple copies are produced by the interpreter by processing + the data for each copy, the final value SHALL be a multiple of + the value of the jmJobKOctetsPerCopyRequested object. + + NOTE - See the impressionsCompletedCurrentCopy and + pagesCompletedCurrentCopy attributes for attributes that are + reset on each document copy. + + NOTE - The jmJobKOctetsProcessed object can be used with the + jmJobKOctetsPerCopyRequested object to provide an indication of + the relative progress of the job, provided that the + multiplicative factor is taken into account for some + implementations of multiple copies." + DEFVAL { 0 } -- default is no octets processed. + ::= { jmJobEntry 6 } + + +jmJobImpressionsPerCopyRequested OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size in number of impressions of the document(s) + submitted. + + In computing this value, the server/device SHALL NOT include + the multiplicative factors contributed by (1) the number of + document copies, and (2) the number of job copies, independent + of whether the device can process multiple copies of the job or + document without making multiple passes over the job or + document data and independent of whether the output is collated + or not. Thus the server/device computation is independent of + the implementation and reflects the size of the document(s) + measured in impressions independent of the number of copies. + + See the definition of the term 'impression' in Section 2." + DEFVAL { -2 } -- default is unknown(-2) + ::= { jmJobEntry 7 } + + +jmJobImpressionsCompleted OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of impressions completed for this job so far. + For printing devices, the impressions completed includes + interpreting, marking, and stacking the output. For other + types of job services, the number of impressions completed + includes the number of impressions processed. + + NOTE - See the impressionsCompletedCurrentCopy and + pagesCompletedCurrentCopy attributes for attributes that are + reset on each document copy. + + NOTE - The jmJobImpressionsCompleted object can be used with + the jmJobImpressionsPerCopyRequested object to provide an + indication of the relative progress of the job, provided that + the multiplicative factor is taken into account for some + implementations of multiple copies. + + See the definition of the term 'impression' in Section 2 and + the counting example in Section 3.4 entitled 'Monitoring Job + Progress'." + DEFVAL { 0 } -- default is no octets + ::= { jmJobEntry 8 } + + + +jmJobOwner OBJECT-TYPE + SYNTAX JmJobStringTC (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set name of the user that submitted the + job. The method of assigning this user name will be system + and/or site specific but the method MUST ensure that the name + is unique to the network that is visible to the client and + target device. + + This value SHOULD be the most authenticated name of the user + submitting the job. + + See the OBJECT compliance macro for the minimum maximum length + required for conformance." + DEFVAL { ''H } -- default is empty string + ::= { jmJobEntry 9 } + + +-- The Attribute Group (MANDATORY) + +-- The jmAttributeGroup consists entirely of the jmAttributeTable. +-- +-- Implementation of the objects in this group is MANDATORY. +-- See Section 3.1 entitled 'Conformance Considerations'. +-- An agent SHALL implement any attribute if (1) the server or device +-- supports the functionality represented by the attribute and (2) the +-- information is available to the agent. + +jmAttribute OBJECT IDENTIFIER ::= { jobmonMIBObjects 4 } + + + +jmAttributeTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmAttributeTable SHALL contain attributes of the job and + document(s) for each job in a job set. Instead of allocating + distinct objects for each attribute, each attribute is + represented as a separate row in the jmAttributeTable. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY. An agent SHALL implement any attribute if (1) the + server or device supports the functionality represented by the + attribute and (2) the information is available to the agent. " + ::= { jmAttribute 1 } + + +jmAttributeEntry OBJECT-TYPE + SYNTAX JmAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes representing information about the job and + document(s) or resources required and/or consumed. + + Each entry in the jmAttributeTable is a per-job entry with an + extra index for each type of attribute (jmAttributeTypeIndex) + that a job can have and an additional index + (jmAttributeInstanceIndex) for those attributes that can have + multiple instances per job. The jmAttributeTypeIndex object + SHALL contain an enum type that indicates the type of attribute + (see the JmAttributeTypeTC textual-convention). The value of + the attribute SHALL be represented in either the + jmAttributeValueAsInteger or jmAttributeValueAsOctets objects, + and/or both, as specified in the JmAttributeTypeTC textual- + convention. + + The agent SHALL create rows in the jmAttributeTable as the + server or device is able to discover the attributes either from + the job submission protocol itself or from the document PDL. + As the documents are interpreted, the interpreter MAY discover + additional attributes and so the agent adds additional rows to + this table. As the attributes that represent resources are + actually consumed, the usage counter contained in the + jmAttributeValueAsInteger object is incremented according to + the units indicated in the description of the JmAttributeTypeTC + enum. + + The agent SHALL maintain each row in the jmAttributeTable for + at least the minimum time after a job completes as specified by + the jmGeneralAttributePersistence object. + + Zero or more entries SHALL exist in this table for each job in + a job set. + + See Section 3.3 entitled 'The Attribute Mechanism' for a + description of the jmAttributeTable." + INDEX { jmGeneralJobSetIndex, jmJobIndex, jmAttributeTypeIndex, + jmAttributeInstanceIndex } + ::= { jmAttributeTable 1 } + +JmAttributeEntry ::= SEQUENCE { + jmAttributeTypeIndex JmAttributeTypeTC, + jmAttributeInstanceIndex Integer32, + jmAttributeValueAsInteger Integer32, + jmAttributeValueAsOctets OCTET STRING +} + + +jmAttributeTypeIndex OBJECT-TYPE + SYNTAX JmAttributeTypeTC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of attribute that this row entry represents. + + The type MAY identify information about the job or document(s) + or MAY identify a resource required to process the job before + the job start processing and/or consumed by the job as the job + is processed. + + Examples of job attributes (i.e., apply to the job as a whole) + that have only one instance per job include: + jobCopiesRequested(90), documentCopiesRequested(92), + jobCopiesCompleted(91), documentCopiesCompleted(93), while + examples of job attributes that may have more than one instance + per job include: documentFormatIndex(37), and + documentFormat(38). + + Examples of document attributes (one instance per document) + include: fileName(34), and documentName(35). + + Examples of required and consumed resource attributes include: + pagesRequested(130), mediumRequested(170), pagesCompleted(131), + and mediumConsumed(171), respectively." + ::= { jmAttributeEntry 1 } + + + +jmAttributeInstanceIndex OBJECT-TYPE + SYNTAX Integer32 (1..32767) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A running 16-bit index of the attributes of the same type for + each job. For those attributes with only a single instance per + job, this index value SHALL be 1. For those attributes that + are a single value per document, the index value SHALL be the + document number, starting with 1 for the first document in the + job. Jobs with only a single document SHALL use the index + value of 1. For those attributes that can have multiple values + per job or per document, such as documentFormatIndex(37) or + documentFormat(38), the index SHALL be a running index for the + job as a whole, starting at 1." + ::= { jmAttributeEntry 2 } + + + +jmAttributeValueAsInteger OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value of the attribute. The value of the + attribute SHALL be represented as an integer if the enum + description in the JmAttributeTypeTC textual-convention + definition has the tag: 'INTEGER:'. + + Depending on the enum definition, this object value MAY be an + integer, a counter, an index, or an enum, depending on the + jmAttributeTypeIndex value. The units of this value are + specified in the enum description. + + For those attributes that are accumulating job consumption as + the job is processed as specified in the JmAttributeTypeTC + textual-convention, SHALL contain the final value after the job + completes processing, i.e., this value SHALL indicate the total + usage of this resource made by the job. + + A monitoring application is able to copy this value to a + suitable longer term storage for later processing as part of an + accounting system. + + Since the agent MAY add attributes representing resources to + this table while the job is waiting to be processed or being + processed, which can be a long time before any of the resources + are actually used, the agent SHALL set the value of the + jmAttributeValueAsInteger object to 0 for resources that the + job has not yet consumed. + + Attributes for which the concept of an integer value is + meaningless, such as fileName(34), jobName, and + processingMessage, do not have the 'INTEGER:' tag in the + JmAttributeTypeTC definition and so an agent SHALL always + return a value of '-1' to indicate 'other' for the value of the + jmAttributeValueAsInteger object for these attributes. + + For attributes which do have the 'INTEGER:' tag in the + JmAttributeTypeTC definition, if the integer value is not (yet) + known, the agent either (1) SHALL not materialize the row in + the jmAttributeTable until the value is known or (2) SHALL + return a '-2' to represent an 'unknown' counting integer value, + a '0' to represent an 'unknown' index value, and a '2' to + represent an 'unknown(2)' enum value." + DEFVAL { -2 } -- default value is unknown(-2) + ::= { jmAttributeEntry 3 } + + + +jmAttributeValueAsOctets OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The octet string value of the attribute. The value of the + attribute SHALL be represented as an OCTET STRING if the enum + description in the JmAttributeTypeTC textual-convention + definition has the tag: 'OCTETS:'. + + Depending on the enum definition, this object value MAY be a + coded character set string (text), such as 'JmUTF8StringTC', or + a binary octet string, such as 'DateAndTime'. + + Attributes for which the concept of an octet string value is + meaningless, such as pagesCompleted, do not have the tag + 'OCTETS:' in the JmAttributeTypeTC definition and so the agent + SHALL always return a zero length string for the value of the + jmAttributeValueAsOctets object. + + For attributes which do have the 'OCTETS:' tag in the + JmAttributeTypeTC definition, if the OCTET STRING value is not + (yet) known, the agent either SHALL NOT materialize the row in + the jmAttributeTable until the value is known or SHALL return a + zero-length string." + DEFVAL { ''H } -- empty string + ::= { jmAttributeEntry 4 } + + +-- Notifications and Trapping +-- Reserved for the future + +jobmonMIBNotifications OBJECT IDENTIFIER ::= { jobmonMIB 2 } + + + +-- Conformance Information + +jmMIBConformance OBJECT IDENTIFIER ::= { jobmonMIB 3 } + + + +-- compliance statements +jmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + job monitoring MIB." + MODULE -- this module + MANDATORY-GROUPS { + jmGeneralGroup, jmJobIDGroup, jmJobGroup, jmAttributeGroup } + OBJECT jmGeneralJobSetName + SYNTAX JmUTF8StringTC (SIZE(0..8)) + DESCRIPTION + "Only 8 octets maximum string length NEED be supported by the + agent." + + OBJECT jmJobOwner + SYNTAX JmJobStringTC (SIZE(0..16)) + DESCRIPTION + "Only 16 octets maximum string length NEED be supported by the + agent." + +-- There are no CONDITIONALLY MANDATORY or OPTIONAL groups. + + ::= { jmMIBConformance 1 } + + +jmMIBGroups OBJECT IDENTIFIER ::= { jmMIBConformance 2 } + +jmGeneralGroup OBJECT-GROUP + OBJECTS { + jmGeneralNumberOfActiveJobs, jmGeneralOldestActiveJobIndex, + jmGeneralNewestActiveJobIndex, jmGeneralJobPersistence, + jmGeneralAttributePersistence, jmGeneralJobSetName} + STATUS current + DESCRIPTION + "The general group." + ::= { jmMIBGroups 1 } + + + +jmJobIDGroup OBJECT-GROUP + OBJECTS { + jmJobIDJobSetIndex, jmJobIDJobIndex } + STATUS current + DESCRIPTION + "The job ID group." + ::= { jmMIBGroups 2 } + + + +jmJobGroup OBJECT-GROUP + OBJECTS { + jmJobState, jmJobStateReasons1, jmNumberOfInterveningJobs, + jmJobKOctetsPerCopyRequested, jmJobKOctetsProcessed, + jmJobImpressionsPerCopyRequested, jmJobImpressionsCompleted, + jmJobOwner } + STATUS current + DESCRIPTION + "The job group." + ::= { jmMIBGroups 3 } + + + +jmAttributeGroup OBJECT-GROUP + OBJECTS { + jmAttributeValueAsInteger, jmAttributeValueAsOctets } + STATUS current + DESCRIPTION + "The attribute group." + ::= { jmMIBGroups 4 } + + +END diff --git a/mibs/ietf/L2TP-MIB b/mibs/ietf/L2TP-MIB new file mode 100644 index 0000000..f15225d --- /dev/null +++ b/mibs/ietf/L2TP-MIB @@ -0,0 +1,2815 @@ +L2TP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Integer32, Unsigned32, Counter32, Gauge32, + Counter64, transmission, MODULE-IDENTITY, + OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TruthValue, + StorageType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InterfaceIndex + FROM IF-MIB; + +l2tp MODULE-IDENTITY + LAST-UPDATED "200208230000Z" -- 23 August 2002 + ORGANIZATION "IETF L2TP Working Group" + CONTACT-INFO + "Evan Caves + Postal: Occam Networks + 77 Robin Hill Road + Santa Barbara, CA, 93117 + Tel: +1 805692 2900 + Email: evan@occamnetworks.com + + Pat R. Calhoun + + + + Postal: Black Storm Networks + 110 Nortech Parkway + San Jose, CA, 95143 + Tel: +1 408 941-0500 + Email: pcalhoun@bstormnetworks.com + + Ross Wheeler + Postal: DoubleWide Software, Inc. + 2953 Bunker Hill Lane + Suite 101 + Santa Clara, CA 95054 + Tel: +1 6509260599 + Email: ross@doublewidesoft.com + + Layer Two Tunneling Protocol Extensions WG + Working Group Area: Internet + Working Group Name: l2tpext + General Discussion: l2tp@l2tp.net" + + DESCRIPTION + "The MIB module that describes managed objects of + general use by the Layer Two Transport Protocol." + + -- revision log + + REVISION "200208230000Z" -- 23 August 2002 + DESCRIPTION + "First revision, published as RFC 3371." + + ::= { transmission 95 } + +-- +-- Textual Conventions +-- + +L2tpMilliSeconds ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-3" + STATUS current + DESCRIPTION + "A period of time measured in units of .001 of seconds + when used in conjunction with the DISPLAY-HINT will + show seconds and fractions of second with a resolution + of .001 of a second." + SYNTAX Integer32 (0..2147483646) + +-- +-- Definitions of significant branches +-- + + + +l2tpNotifications OBJECT IDENTIFIER ::= { l2tp 0 } +l2tpObjects OBJECT IDENTIFIER ::= { l2tp 1 } +l2tpTransports OBJECT IDENTIFIER ::= { l2tp 3 } +l2tpConformance OBJECT IDENTIFIER ::= { l2tp 4 } + +-- +-- Definitions of significant branches under l2tpObjects +-- +l2tpScalar OBJECT IDENTIFIER ::= { l2tpObjects 1 } +l2tpConfig OBJECT IDENTIFIER ::= { l2tpScalar 1 } +l2tpStats OBJECT IDENTIFIER ::= { l2tpScalar 2 } + +-- +-- Definitions of significant branches under l2tpTransports +-- +-- Note that future transports of L2TP (e.g.: Frame relay) +-- should create their own branch under l2tpTransports. + +l2tpTransportIpUdp OBJECT IDENTIFIER ::= { l2tpTransports 1 } +l2tpIpUdpObjects OBJECT IDENTIFIER ::= { l2tpTransportIpUdp 1 } +l2tpIpUdpTraps OBJECT IDENTIFIER ::= { l2tpTransportIpUdp 2 } + +-- +-- The L2TP Scalar Configuration Group +-- +-- This group of objects is used to manage configuration +-- of the L2TP protocol environment. + +l2tpAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the administrative state of + the L2TP protocol. Setting this object to + 'disabled' causes all tunnels to be immediately + disconnected and no further tunnels to be either + initiated or accepted. The value of this object + must be maintained in non-volatile memory." + ::= { l2tpConfig 1 } + +l2tpDrainTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Setting this object to 'true' will prevent any new + tunnels and/or sessions to be either initiated or + accepted but does NOT disconnect any active + tunnels/sessions. Setting this object to true(1) + causes all domains and their respective tunnels + to transition to the draining state. Note that + when this occurs the 'xxxDraining' status objects + of the domains and their tunnels should reflect + that they are 'draining'. Setting this object has + no affect on the domains or their tunnels + 'xxxDrainTunnels' configuration objects. To cancel + a drain this object should be set to false(2). + The object l2tpDrainingTunnels reflects + the current L2TP draining state. The value of + this object must be maintained in non-volatile + memory." + ::= { l2tpConfig 2 } + +-- +-- The L2TP Scalar Status and Statistics Group +-- +-- This group of objects describe the current state and +-- statistics of L2TP. + +l2tpProtocolVersions OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vector of supported L2TP protocol version and + revision numbers. Supported versions are identified + via a two octet pairing where the first octet indicates + the version and the second octet contains the revision." + ::= { l2tpStats 1 } + +l2tpVendorName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Vendor name of the L2TP + protocol stack." + ::= { l2tpStats 2 } + +l2tpFirmwareRev OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object defines the firmware revision for the + L2TP protocol stack." + ::= { l2tpStats 3 } + +l2tpDrainingTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if the local L2TP is draining + off sessions from all tunnels." + ::= { l2tpStats 4 } + +-- +-- The L2TP Domain Configuration Table +-- + +l2tpDomainConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpDomainConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Domain configuration table. This table + contains objects that can be used to configure + the operational characteristics of a tunnel + domain. There is a 1-1 correspondence between + conceptual rows of this table and conceptual + rows of the l2tpDomainStatsTable." + ::= { l2tpObjects 2 } + +l2tpDomainConfigEntry OBJECT-TYPE + SYNTAX L2tpDomainConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Domain configuration entry. An entry in this + table may correspond to a single endpoint or a group + of tunnel endpoints." + INDEX { l2tpDomainConfigId } + ::= { l2tpDomainConfigTable 1 } + +L2tpDomainConfigEntry ::= + SEQUENCE { + l2tpDomainConfigId + SnmpAdminString, + l2tpDomainConfigAdminState + + + + INTEGER, + l2tpDomainConfigDrainTunnels + TruthValue, + l2tpDomainConfigAuth + INTEGER, + l2tpDomainConfigSecret + SnmpAdminString, + l2tpDomainConfigTunnelSecurity + INTEGER, + l2tpDomainConfigTunnelHelloInt + Integer32, + l2tpDomainConfigTunnelIdleTO + Integer32, + l2tpDomainConfigControlRWS + Integer32, + l2tpDomainConfigControlMaxRetx + Integer32, + l2tpDomainConfigControlMaxRetxTO + Integer32, + l2tpDomainConfigPayloadSeq + INTEGER, + l2tpDomainConfigReassemblyTO + L2tpMilliSeconds, + l2tpDomainConfigProxyPPPAuth + TruthValue, + l2tpDomainConfigStorageType + StorageType, + l2tpDomainConfigStatus + RowStatus + } + +l2tpDomainConfigId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..80)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier, usually in the form of a Domain + Name (full or partial), describing a single tunnel + endpoint or a domain of tunnel endpoints. This is + typically used as a 'handle' to identify the + tunnel configuration requirements for both incoming + and outgoing tunnel connection attempts. Both the + LAC and LNS could use information provided in the + Host Name AVP attribute however the tunnel initiator + could use other means not specified to identify + the domain's tunnel configuration requirements. + For example; three rows in this table have + l2tpDomainConfigId values of 'lac1.isp.com', + + + + 'isp.com' and 'com'. A tunnel endpoint then identifies + itself as 'lac1.isp.com' which would match the + 'lac1.isp.com' entry in this table. A second tunnel + endpoint then identifies itself as 'lac2.isp.com'. + This endpoint is then associated with the 'isp.com' + entry of this table." + ::= { l2tpDomainConfigEntry 1 } + +l2tpDomainConfigAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the administrative state of this + tunnel domain. Setting this object to disabled(2) + causes all tunnels to be immediately disconnected + and no further tunnels to be either initiated or + accepted. Note that all columnar objects corresponding + to this conceptual row cannot be modified when + the administrative state is enabled EXCEPT those + objects which specifically state otherwise." + DEFVAL { enabled } + ::= { l2tpDomainConfigEntry 2 } + +l2tpDomainConfigDrainTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to 'true' will prevent any new + tunnels and/or sessions from being either initiated + or accepted but does NOT disconnect any active + tunnels/sessions for this tunnel domain. Setting + this object to true(1) causes all tunnels within + this domain to transition to the draining state. + Note that when this occurs the + l2tpTunnelStatsDrainingTunnel status objects of + all of this domain's tunnels should reflect that + they are 'draining'. Setting this object has no + effect on this domain's associated tunnels + l2tpTunnelConfigDrainTunnel configuration objects. + To cancel a drain this object should be set to + false(2). Setting this object to false(2) when + the L2TP object l2tpDrainTunnels is true(1) has + no affect, all domains and their tunnels will + + + + continue to drain." + DEFVAL { false } + ::= { l2tpDomainConfigEntry 3 } + +l2tpDomainConfigAuth OBJECT-TYPE + SYNTAX INTEGER { + none(1), + simple(2), + challenge(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes how tunnel peers belonging + to this domain are to be authenticated. The value + simple(2) indicates that peers are authenticated + simply by their host name as described in the Host + Name AVP. The value challenge(3) indicates that + all peers are challenged to prove their identification. + This mechanism is described in the L2TP protocol." + REFERENCE "RFC 2661 Section 5.1" + DEFVAL { none } + ::= { l2tpDomainConfigEntry 4 } + +l2tpDomainConfigSecret OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the shared secret + used during the tunnel authentication phase of + tunnel establishment. This object MUST be accessible + only via requests using both authentication and + privacy. The agent MUST report an empty string in + response to get, get-next and get-bulk requests." + ::= { l2tpDomainConfigEntry 5 } + +l2tpDomainConfigTunnelSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + ipSec(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this tunnel domain + requires that all tunnels are to be secured. The + + + + value of ipsec(3) indicates that all tunnel packets, + control and session, have IP Security headers. The + type of IP Security headers (AH, ESP etc) and how + they are further described is outside the scope of + this document." + DEFVAL { none } + ::= { l2tpDomainConfigEntry 6 } + +l2tpDomainConfigTunnelHelloInt OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the interval in which Hello + (or keep-alive) packets are to be sent by local + peers belonging to this tunnel domain. The value + zero effectively disables the sending of Hello + packets. This object may be modified when the + administrative state is enabled for this conceptual + row." + DEFVAL { 60 } + ::= { l2tpDomainConfigEntry 7 } + +l2tpDomainConfigTunnelIdleTO OBJECT-TYPE + SYNTAX Integer32 (-1..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the period of time that an + established tunnel belonging to this tunnel + domain with no active sessions will wait before + disconnecting the tunnel. A value of zero indicates + that the tunnel will disconnect immediately after the + last session disconnects. A value of -1 leaves the + tunnel up indefinitely. This object may be modified + when the administrative state is enabled for this + conceptual row." + DEFVAL { 0 } + ::= { l2tpDomainConfigEntry 8 } + +l2tpDomainConfigControlRWS OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the control channel receive + + + + window size for tunnels belonging to this domain. It + specifies the maximum number of packets the tunnel + peer belonging to this domain can send without waiting + for an acknowledgement from this peer." + DEFVAL { 4 } + ::= { l2tpDomainConfigEntry 9 } + +l2tpDomainConfigControlMaxRetx OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the maximum number of retransmissions + which the L2TP stack will attempt for tunnels belonging + to this domain before assuming that the peer is no + longer responding." + DEFVAL { 5 } + ::= { l2tpDomainConfigEntry 10 } + +l2tpDomainConfigControlMaxRetxTO OBJECT-TYPE + SYNTAX Integer32 (1..32) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the maximum retransmission timeout + interval which the L2TP stack will wait for tunnels + belonging to this domain before retransmitting a + control packet that has not been acknowledged." + DEFVAL { 16 } + ::= { l2tpDomainConfigEntry 11 } + +l2tpDomainConfigPayloadSeq OBJECT-TYPE + SYNTAX INTEGER { + onDemand(1), + never(2), + always(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines whether or not session payload + packets will be requested to be sent with sequence + numbers from tunnel peers belonging to this domain. + The value onDemand(1) allows the L2TP implementation + to initiate payload sequencing when necessary based + on local information (e.g: during LCP/NCP negotiations + or for CCP). The value never(2) indicates that L2TP + + + + will never initiate sequencing but will do sequencing + if asked. The value always(3) indicates that L2TP + will send the Sequencing Required AVP during session + establishment." + DEFVAL { onDemand } + ::= { l2tpDomainConfigEntry 12 } + +l2tpDomainConfigReassemblyTO OBJECT-TYPE + SYNTAX L2tpMilliSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the number of milliseconds that + local peers of this tunnel domain will wait before + processing payload packets that were received out of + sequence (which are waiting for the packet(s) to put + them in sequence). A low value increases the chance + of delayed packets to be discarded (which MAY cause + the PPP decompression engine to reset) while a high + value may cause more queuing and possibly degrade + throughput if packets are truly lost. The default + value for this object is zero which will result in + all delayed packets being lost." + DEFVAL { 0 } + ::= { l2tpDomainConfigEntry 13 } + +l2tpDomainConfigProxyPPPAuth OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the sending + or acceptance of the PPP Proxy Authentication + AVP's on the LAC or LNS." + DEFVAL { true } + ::= { l2tpDomainConfigEntry 14 } + +l2tpDomainConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to: + + - l2tpDomainConfigAdminState and + + + + l2tpDomainConfigDrainTunnels at all times + - l2tpDomainConfigSecret if l2tpDomainConfigAuth + has been configured as 'challenge' + + It is an implementation issue to decide if a SET for + a readOnly or permanent row is accepted at all. In some + contexts this may make sense, in others it may not. If + a SET for a readOnly or permanent row is not accepted + at all, then a 'wrongValue' error must be returned." + ::= { l2tpDomainConfigEntry 15 } + +l2tpDomainConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this Domain entry. Columnar objects + corresponding to this conceptual row may be modified + according to their description clauses when this + RowStatus object is 'active'." + ::= { l2tpDomainConfigEntry 16 } + +-- +-- The L2TP Domain Status and Statistics Table +-- + +l2tpDomainStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpDomainStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Domain Status and Statistics table. This + table contains objects that can be used to describe + the current status and statistics of a tunnel domain. + There is a 1-1 correspondence between conceptual + rows of this table and conceptual rows of the + l2tpDomainConfigTable." + ::= { l2tpObjects 3 } + +l2tpDomainStatsEntry OBJECT-TYPE + SYNTAX L2tpDomainStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Domain Stats entry. An entry in this table + may correspond to a single endpoint or a group of + tunnel endpoints." + AUGMENTS { l2tpDomainConfigEntry } + + + + ::= { l2tpDomainStatsTable 1 } + +L2tpDomainStatsEntry ::= + SEQUENCE { + l2tpDomainStatsTotalTunnels + Counter32, + l2tpDomainStatsFailedTunnels + Counter32, + l2tpDomainStatsFailedAuths + Counter32, + l2tpDomainStatsActiveTunnels + Gauge32, + l2tpDomainStatsTotalSessions + Counter32, + l2tpDomainStatsFailedSessions + Counter32, + l2tpDomainStatsActiveSessions + Gauge32, + l2tpDomainStatsDrainingTunnels + TruthValue, + l2tpDomainStatsControlRxOctets + Counter32, + l2tpDomainStatsControlRxPkts + Counter32, + l2tpDomainStatsControlTxOctets + Counter32, + l2tpDomainStatsControlTxPkts + Counter32, + l2tpDomainStatsPayloadRxOctets + Counter32, + l2tpDomainStatsPayloadRxPkts + Counter32, + l2tpDomainStatsPayloadRxDiscs + Counter32, + l2tpDomainStatsPayloadTxOctets + Counter32, + l2tpDomainStatsPayloadTxPkts + Counter32, + l2tpDomainStatsControlHCRxOctets + Counter64, + l2tpDomainStatsControlHCRxPkts + Counter64, + l2tpDomainStatsControlHCTxOctets + Counter64, + l2tpDomainStatsControlHCTxPkts + Counter64, + l2tpDomainStatsPayloadHCRxOctets + Counter64, + + + + l2tpDomainStatsPayloadHCRxPkts + Counter64, + l2tpDomainStatsPayloadHCRxDiscs + Counter64, + l2tpDomainStatsPayloadHCTxOctets + Counter64, + l2tpDomainStatsPayloadHCTxPkts + Counter64 + } + +l2tpDomainStatsTotalTunnels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of tunnels + that have successfully reached the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 1 } + +l2tpDomainStatsFailedTunnels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of tunnels that + failed (eg: connection timeout, unsupported + or malformed AVP's etc) to reach the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 2 } + +l2tpDomainStatsFailedAuths OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of failed tunnel + connection attempts for this domain because the + tunnel peer failed authentication." + ::= { l2tpDomainStatsEntry 3 } + +l2tpDomainStatsActiveTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of tunnels that + are currently active for this domain." + + + + ::= { l2tpDomainStatsEntry 4 } + +l2tpDomainStatsTotalSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of sessions + that have successfully reached the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 5 } + +l2tpDomainStatsFailedSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of sessions that + failed (eg: connection timeout, unsupported + or malformed AVP's etc) to reach the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 6 } + +l2tpDomainStatsActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of sessions that + are currently active for this domain." + ::= { l2tpDomainStatsEntry 7 } + +l2tpDomainStatsDrainingTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if this domain is draining + off sessions from all tunnels." + ::= { l2tpDomainStatsEntry 8 } + +l2tpDomainStatsControlRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control channel + octets received for this tunnel domain." + + + + ::= { l2tpDomainStatsEntry 9 } + +l2tpDomainStatsControlRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control packets + received for this tunnel domain." + ::= { l2tpDomainStatsEntry 10 } + +l2tpDomainStatsControlTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control channel + octets that were transmitted to tunnel endpoints + for this domain." + ::= { l2tpDomainStatsEntry 11 } + +l2tpDomainStatsControlTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control packets + that were transmitted to tunnel endpoints for + this domain." + ::= { l2tpDomainStatsEntry 12 } + +l2tpDomainStatsPayloadRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload channel + octets that were received for this tunnel domain." + ::= { l2tpDomainStatsEntry 13 } + +l2tpDomainStatsPayloadRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload packets + that were received for this tunnel domain." + ::= { l2tpDomainStatsEntry 14 } + + + +l2tpDomainStatsPayloadRxDiscs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of received payload + packets that were discarded by this tunnel domain." + ::= { l2tpDomainStatsEntry 15 } + +l2tpDomainStatsPayloadTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload channel + octets that were transmitted to tunnel peers + within this tunnel domain." + ::= { l2tpDomainStatsEntry 16 } + +l2tpDomainStatsPayloadTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload packets + that were transmitted to tunnel peers within + this tunnel domain." + ::= { l2tpDomainStatsEntry 17 } + +-- +-- High Capacity Counter objects. These objects are all +-- 64 bit versions of the above 32-bit counters. These +-- objects all have the same basic semantics as their +-- 32-bit counterparts, however, their syntax has been +-- extended to 64 bits. +-- + +l2tpDomainStatsControlHCRxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlRxOctets." + ::= { l2tpDomainStatsEntry 18 } + +l2tpDomainStatsControlHCRxPkts OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlRxPkts." + ::= { l2tpDomainStatsEntry 19 } + +l2tpDomainStatsControlHCTxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlTxOctets." + ::= { l2tpDomainStatsEntry 20 } + +l2tpDomainStatsControlHCTxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlTxPkts." + ::= { l2tpDomainStatsEntry 21 } + +l2tpDomainStatsPayloadHCRxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxOctets." + ::= { l2tpDomainStatsEntry 22 } + +l2tpDomainStatsPayloadHCRxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxPkts." + ::= { l2tpDomainStatsEntry 23 } + +l2tpDomainStatsPayloadHCRxDiscs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxDiscs." + ::= { l2tpDomainStatsEntry 24 } + +l2tpDomainStatsPayloadHCTxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadTxOctets." + ::= { l2tpDomainStatsEntry 25 } + +l2tpDomainStatsPayloadHCTxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadTxPkts." + ::= { l2tpDomainStatsEntry 26 } + +-- +-- The L2TP Tunnel Configuration Table +-- + +l2tpTunnelConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP tunnel configuration table. This + table contains objects that can be used to + (re)configure the operational characteristics + of a single L2TP tunnel. There is a 1-1 + correspondence between conceptual rows of + this table and conceptual rows of the + l2tpTunnelStatsTable. Entries in this table + have the same persistency characteristics as + that of the tunnelConfigTable." + REFERENCE "RFC 2667" + ::= { l2tpObjects 4 } + +l2tpTunnelConfigEntry OBJECT-TYPE + SYNTAX L2tpTunnelConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A L2TP tunnel interface configuration entry. + Entries in this table come and go as a result + of protocol interactions or on management + operations. The latter occurs when a row is + instantiated in the tunnelConfigTable row + and the encapsulation method is 'l2tp'." + REFERENCE "RFC 2667" + INDEX { l2tpTunnelConfigIfIndex } + ::= { l2tpTunnelConfigTable 1 } + +L2tpTunnelConfigEntry ::= + SEQUENCE { + l2tpTunnelConfigIfIndex + InterfaceIndex, + l2tpTunnelConfigDomainId + SnmpAdminString, + l2tpTunnelConfigAuth + INTEGER, + l2tpTunnelConfigSecret + SnmpAdminString, + l2tpTunnelConfigSecurity + INTEGER, + l2tpTunnelConfigHelloInterval + Integer32, + l2tpTunnelConfigIdleTimeout + Integer32, + l2tpTunnelConfigControlRWS + Integer32, + l2tpTunnelConfigControlMaxRetx + Integer32, + l2tpTunnelConfigControlMaxRetxTO + Integer32, + l2tpTunnelConfigPayloadSeq + INTEGER, + l2tpTunnelConfigReassemblyTO + L2tpMilliSeconds, + l2tpTunnelConfigTransport + INTEGER, + l2tpTunnelConfigDrainTunnel + TruthValue, + l2tpTunnelConfigProxyPPPAuth + TruthValue + } + +l2tpTunnelConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This value for this object is equal to the value + of ifIndex of the Interfaces MIB for tunnel + interfaces of type L2TP." + ::= { l2tpTunnelConfigEntry 1 } + +l2tpTunnelConfigDomainId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..80)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The tunnel domain that this tunnel belongs + to. A LNS tunnel endpoint will typically inherit + this value from the endpoint domain table. A + LAC may be provided with this information during + tunnel setup. When a zero length string is returned + this tunnel does not belong belong to any particular + domain." + ::= { l2tpTunnelConfigEntry 2 } + +l2tpTunnelConfigAuth OBJECT-TYPE + SYNTAX INTEGER { + none(1), + simple(2), + challenge(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes how L2TP tunnel peers are + to be authenticated. The value 'simple' indicates + that peers are authenticated simply by their host + name as described in the Host Name AVP. The value + 'challenge' indicates that all peers are challenged + to prove their identification. This mechanism is + described in the L2TP protocol. This object cannot + be modified when the tunnel is in a connecting or + connected state." + DEFVAL { none } + ::= { l2tpTunnelConfigEntry 3 } + +l2tpTunnelConfigSecret OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the shared secret + used during the tunnel authentication phase of + + + + tunnel establishment. This object cannot be modified + when the tunnel is in a connecting or connected + state. This object MUST be accessible only via + requests using both authentication and privacy. + The agent MUST report an empty string in response + to get, get-next and get-bulk requests." + ::= { l2tpTunnelConfigEntry 4 } + +l2tpTunnelConfigSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + ipsec(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines whether this tunnel is to be + secured. The value of 'ipSec' indicates that all + tunnel packets, control and session, have IP + Security headers. The type of IP Security headers + (AH, ESP etc) and how they are further described + is outside the scope of this document. This object + cannot be modified when the tunnel is in a connecting + or connected state." + DEFVAL { none } + ::= { l2tpTunnelConfigEntry 5 } + +l2tpTunnelConfigHelloInterval OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the interval in which Hello + (or keep-alive) packets are to be sent to the + tunnel peer. The value zero effectively disables + the sending of Hello packets. Modifications to this + object have immediate effect." + DEFVAL { 60 } + ::= { l2tpTunnelConfigEntry 6 } + +l2tpTunnelConfigIdleTimeout OBJECT-TYPE + SYNTAX Integer32 (-1..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object defines the period of time that an + established tunnel with no sessions will wait + before disconnecting the tunnel. A value of + zero indicates that the tunnel will disconnect + immediately after the last session disconnects. + A value of -1 leaves the tunnel up indefinitely. + Modifications to this object have immediate + effect." + DEFVAL { 0 } + ::= { l2tpTunnelConfigEntry 7 } + +l2tpTunnelConfigControlRWS OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the control channel receive + window size. It specifies the maximum number of + packets the tunnel peer can send without waiting + for an acknowledgement from this peer. This object + cannot be modified when the tunnel is in a con- + necting or connected state." + DEFVAL { 4 } + ::= { l2tpTunnelConfigEntry 8 } + +l2tpTunnelConfigControlMaxRetx OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of retransmissions + which the tunnel will attempt before assuming that + the peer is no longer responding. A value of zero + indicates that this peer will not attempt to + retransmit an unacknowledged control packet. + Modifications to this object have immediate + effect." + DEFVAL { 5 } + ::= { l2tpTunnelConfigEntry 9 } + +l2tpTunnelConfigControlMaxRetxTO OBJECT-TYPE + SYNTAX Integer32 (1..32) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the maximum retransmission timeout + interval which the tunnel will wait before retrans- + + + + mitting a control packet that has not been acknowledged. + Modifications to this object have immediate effect." + DEFVAL { 16 } + ::= { l2tpTunnelConfigEntry 10 } + +l2tpTunnelConfigPayloadSeq OBJECT-TYPE + SYNTAX INTEGER { + onDemand(1), + never(2), + always(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines whether or not session payload + packets will be requested to be sent with sequence + numbers from tunnel peers belonging to this domain. + The value onDemand(1) allows the L2TP implementation + to initiate payload sequencing when necessary based + on local information (e.g: during LCP/NCP negotiations + or for CCP). The value never(2) indicates that L2TP + will never initiate sequencing but will do sequencing + if asked. The value always(3) indicates that L2TP + will send the Sequencing Required AVP during session + establishment. Modifications to this object have + immediate effect." + DEFVAL { onDemand } + ::= { l2tpTunnelConfigEntry 11 } + +l2tpTunnelConfigReassemblyTO OBJECT-TYPE + SYNTAX L2tpMilliSeconds + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of milliseconds that + this tunnel will wait before processing payload packets + that were received out of sequence (which are waiting + for the packet(s) to put them in sequence). A low value + increases the chance of delayed packets to be discarded + (which MAY cause the PPP decompression engine to + reset) while a high value may cause more queuing and + possibly degrade throughput if packets are truly lost. + The default value for this object is zero which will + result in all delayed packets being lost. Modifications + to this object have immediate effect." + DEFVAL { 0 } + ::= { l2tpTunnelConfigEntry 12 } + + + + +l2tpTunnelConfigTransport OBJECT-TYPE + SYNTAX INTEGER { + other(1), + none(2), + udpIp(3), + frameRelay(4), + atm(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the underlying transport media + that is in use for this tunnel entry. Different tunnel + transports may define MIB extensions to the L2TP tunnel + table to realize the transport layer. For example if the + value of this object is 'udpIp' then the value of ifIndex + for this table may be used to determine state from the + l2tpUdpStatsTable. This object cannot be modified when + the tunnel is in a connecting or connected state." + ::= { l2tpTunnelConfigEntry 13 } + +l2tpTunnelConfigDrainTunnel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' will prevent any new + session from being either initiated or accepted but + does NOT disconnect any active sessions for this + tunnel. Note that when this occurs the + l2tpTunnelStatsDrainingTunnel status object of + this tunnel should reflect that it is 'draining'. + To cancel a drain this object should be set to + false(2). Setting this object to false(2) when + the L2TP objects l2tpDrainTunnels or + l2tpDomainConfigDrainTunnels is true(1) has + no affect, this tunnels will continue to drain." + DEFVAL { false } + ::= { l2tpTunnelConfigEntry 14 } + +l2tpTunnelConfigProxyPPPAuth OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the sending + or acceptance of the session PPP Proxy + Authentication AVP's on the LAC or LNS." + + + + DEFVAL { true } + ::= { l2tpTunnelConfigEntry 15 } + +-- +-- The L2TP Tunnel Status and Statisticss Table +-- + + +l2tpTunnelStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP tunnel status and statistics table. This + table contains objects that can be used to describe + the current status and statistics of a single L2TP + tunnel. There is a 1-1 correspondence between + conceptual rows of this table and conceptual rows of + the l2tpTunnelConfigTable." + ::= { l2tpObjects 5 } + +l2tpTunnelStatsEntry OBJECT-TYPE + SYNTAX L2tpTunnelStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP tunnel interface stats entry." + AUGMENTS { l2tpTunnelConfigEntry } + ::= { l2tpTunnelStatsTable 1 } + +L2tpTunnelStatsEntry ::= + SEQUENCE { + l2tpTunnelStatsLocalTID + Integer32, + l2tpTunnelStatsRemoteTID + Integer32, + l2tpTunnelStatsState + INTEGER, + l2tpTunnelStatsInitiated + INTEGER, + l2tpTunnelStatsRemoteHostName + SnmpAdminString, + l2tpTunnelStatsRemoteVendorName + SnmpAdminString, + l2tpTunnelStatsRemoteFirmwareRev + Integer32, + l2tpTunnelStatsRemoteProtocolVer + OCTET STRING, + + + + l2tpTunnelStatsInitialRemoteRWS + Integer32, + l2tpTunnelStatsBearerCaps + INTEGER, + l2tpTunnelStatsFramingCaps + INTEGER, + l2tpTunnelStatsControlRxPkts + Counter32, + l2tpTunnelStatsControlRxZLB + Counter32, + l2tpTunnelStatsControlOutOfSeq + Counter32, + l2tpTunnelStatsControlOutOfWin + Counter32, + l2tpTunnelStatsControlTxPkts + Counter32, + l2tpTunnelStatsControlTxZLB + Counter32, + l2tpTunnelStatsControlAckTO + Counter32, + l2tpTunnelStatsCurrentRemoteRWS + Gauge32, + l2tpTunnelStatsTxSeq + Integer32, + l2tpTunnelStatsTxSeqAck + Integer32, + l2tpTunnelStatsRxSeq + Integer32, + l2tpTunnelStatsRxSeqAck + Integer32, + l2tpTunnelStatsTotalSessions + Counter32, + l2tpTunnelStatsFailedSessions + Counter32, + l2tpTunnelStatsActiveSessions + Gauge32, + l2tpTunnelStatsLastResultCode + Integer32, + l2tpTunnelStatsLastErrorCode + Integer32, + l2tpTunnelStatsLastErrorMessage + SnmpAdminString, + l2tpTunnelStatsDrainingTunnel + TruthValue + } + +l2tpTunnelStatsLocalTID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the local tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelStatsEntry 1 } + +l2tpTunnelStatsRemoteTID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the remote tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelStatsEntry 2 } + +l2tpTunnelStatsState OBJECT-TYPE + SYNTAX INTEGER { + tunnelIdle(1), + tunnelConnecting(2), + tunnelEstablished(3), + tunnelDisconnecting(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field contains the current state of the + control tunnel." + ::= { l2tpTunnelStatsEntry 3 } + +l2tpTunnelStatsInitiated OBJECT-TYPE + SYNTAX INTEGER { + locally(1), + remotely(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the tunnel was + initiated locally or by the remote tunnel peer." + ::= { l2tpTunnelStatsEntry 4 } + +l2tpTunnelStatsRemoteHostName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the host name as discovered + + + + during the tunnel establishment phase (via the Host + Name AVP) of the L2TP peer. If the tunnel is idle + this object should maintain its value from the last + time it was connected." + ::= { l2tpTunnelStatsEntry 5 } + +l2tpTunnelStatsRemoteVendorName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the vendor name of the peer's + L2TP implementation. If the tunnel is idle this + object should maintain its value from the last time + it was connected." + ::= { l2tpTunnelStatsEntry 6 } + +l2tpTunnelStatsRemoteFirmwareRev OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the tunnel peer's firmware + revision number. If the tunnel is idle this object + should maintain its value from the last time it + was connected." + ::= { l2tpTunnelStatsEntry 7 } + +l2tpTunnelStatsRemoteProtocolVer OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the protocol version and + revision of the tunnel peers implementation. The + first octet contains the protocol version. The + second octet contains the protocol revision." + ::= { l2tpTunnelStatsEntry 8 } + +l2tpTunnelStatsInitialRemoteRWS OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the initial remote peer's + receive window size as indicated by the tunnel peer + (in the RWS AVP) during the tunnel establishment + phase. If the tunnel is idle this object should + + + + maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 9 } + +l2tpTunnelStatsBearerCaps OBJECT-TYPE + SYNTAX INTEGER { + none(1), + digital(2), + analog(3), + digitalAnalog(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the Bearer Capabilities of + the tunnel peer. If the tunnel is idle this object + should maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 10 } + +l2tpTunnelStatsFramingCaps OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sync(2), + async(3), + syncAsync(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the Framing Capabilities of + the tunnel peer. If the tunnel is idle this object + should maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 11 } + +l2tpTunnelStatsControlRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control packets + received on the tunnel." + ::= { l2tpTunnelStatsEntry 12 } + +l2tpTunnelStatsControlRxZLB OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object returns a count of the number of Zero + Length Body control packet acknowledgement packets + that were received." + ::= { l2tpTunnelStatsEntry 13 } + +l2tpTunnelStatsControlOutOfSeq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a count of the number of + control packets that were not received in the + correct order (as per the sequence number) + on this tunnel including out of window + packets." + ::= { l2tpTunnelStatsEntry 14 } + +l2tpTunnelStatsControlOutOfWin OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control + packets that were received outside of the + offered receive window. It is implementation + specific as to whether these packets are queued + or discarded." + ::= { l2tpTunnelStatsEntry 15 } + +l2tpTunnelStatsControlTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control + packets that were transmitted to the tunnel + peer." + ::= { l2tpTunnelStatsEntry 16 } + +l2tpTunnelStatsControlTxZLB OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of Zero Length + Body control packets transmitted to the tunnel + + + + peer." + ::= { l2tpTunnelStatsEntry 17 } + +l2tpTunnelStatsControlAckTO OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a count of the number of + control packet timeouts due to the lack of a + timely acknowledgement from the tunnel peer." + ::= { l2tpTunnelStatsEntry 18 } + +l2tpTunnelStatsCurrentRemoteRWS OBJECT-TYPE + SYNTAX Gauge32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current remote receive + window size as determined by the local flow + control mechanism employed." + ::= { l2tpTunnelStatsEntry 19 } + +l2tpTunnelStatsTxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next send sequence number + for the control channel." + ::= { l2tpTunnelStatsEntry 20 } + +l2tpTunnelStatsTxSeqAck OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the send sequence number that + the tunnel peer has acknowledged for the control + channel. The flow control state can be determined + by subtracting the l2tpTunnelStatsTxSeq from + l2tpTunnelStatsTxSeqAck and comparing this value + to l2tpTunnelStatsCurrentRemoteRWS (taking into + consideration sequence number wraps)." + ::= { l2tpTunnelStatsEntry 21 } + +l2tpTunnelStatsRxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next receive sequence + number expected to be received on this control + channel." + ::= { l2tpTunnelStatsEntry 22 } + +l2tpTunnelStatsRxSeqAck OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last receive sequence + number that was acknowledged back to the tunnel + peer for the control channel." + ::= { l2tpTunnelStatsEntry 23 } + +l2tpTunnelStatsTotalSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + that this tunnel has successfully connected through + to its tunnel peer since this tunnel was created." + ::= { l2tpTunnelStatsEntry 24 } + +l2tpTunnelStatsFailedSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + that were initiated but failed to reach the + established phase." + ::= { l2tpTunnelStatsEntry 25 } + +l2tpTunnelStatsActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + in the established state for this tunnel." + ::= { l2tpTunnelStatsEntry 26 } + +l2tpTunnelStatsLastResultCode OBJECT-TYPE + + + + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the result + code as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 27 } + +l2tpTunnelStatsLastErrorCode OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the error + code as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 28 } + +l2tpTunnelStatsLastErrorMessage OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the optional + message as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 29 } + +l2tpTunnelStatsDrainingTunnel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if this tunnel is draining + off sessions. This object will return false(2) when + the tunnel is not draining sessions or after the + last session has disconnected when the tunnel is in + the draining state." + ::= { l2tpTunnelStatsEntry 30 } + +-- +-- { l2tpObjects 6 } reserved for future use +-- + +-- +-- The L2TP Session Status and Statistics Table +-- + + + +l2tpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP session status and statistics table. This + table contains the objects that can be used to + describe the current status and statistics of a + single L2TP tunneled session." + ::= { l2tpObjects 7 } + +l2tpSessionStatsEntry OBJECT-TYPE + SYNTAX L2tpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP session interface stats entry." + INDEX { l2tpSessionStatsTunnelIfIndex, + l2tpSessionStatsLocalSID } + ::= { l2tpSessionStatsTable 1 } + +L2tpSessionStatsEntry ::= + SEQUENCE { + l2tpSessionStatsTunnelIfIndex + InterfaceIndex, + l2tpSessionStatsIfIndex + InterfaceIndex, + l2tpSessionStatsLocalSID + Integer32, + l2tpSessionStatsRemoteSID + Integer32, + l2tpSessionStatsUserName + SnmpAdminString, + l2tpSessionStatsState + INTEGER, + l2tpSessionStatsCallType + INTEGER, + l2tpSessionStatsCallSerialNumber + Unsigned32, + l2tpSessionStatsTxConnectSpeed + Unsigned32, + l2tpSessionStatsRxConnectSpeed + Unsigned32, + l2tpSessionStatsCallBearerType + INTEGER, + l2tpSessionStatsFramingType + INTEGER, + l2tpSessionStatsPhysChanId + + + + Unsigned32, + l2tpSessionStatsDNIS + SnmpAdminString, + l2tpSessionStatsCLID + SnmpAdminString, + l2tpSessionStatsSubAddress + SnmpAdminString, + l2tpSessionStatsPrivateGroupID + SnmpAdminString, + l2tpSessionStatsProxyLcp + TruthValue, + l2tpSessionStatsAuthMethod + INTEGER, + l2tpSessionStatsSequencingState + INTEGER, + l2tpSessionStatsOutSequence + Counter32, + l2tpSessionStatsReassemblyTO + Counter32, + l2tpSessionStatsTxSeq + Integer32, + l2tpSessionStatsRxSeq + Integer32 + } + +l2tpSessionStatsTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the session's associated + L2TP tunnel ifIndex value." + ::= { l2tpSessionStatsEntry 1 } + +l2tpSessionStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the ifIndex value of the + interface from which PPP packets are being tunneled. + For example this could be a DS0 ifIndex on a + LAC or it would be the PPP ifIndex on the LNS." + ::= { l2tpSessionStatsEntry 2 } + +l2tpSessionStatsLocalSID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This object contains the local assigned session + identifier for this session." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionStatsEntry 3 } + +l2tpSessionStatsRemoteSID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the remote assigned session + identifier for this session. When a session is + starting this value may be zero until the remote + tunnel endpoint has responded." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionStatsEntry 4 } + +l2tpSessionStatsUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the peer session name on + this interface. This is typically the login name + of the remote user. If the user name is unknown to + the local tunnel peer then this object will contain + a null string." + ::= { l2tpSessionStatsEntry 5 } + +l2tpSessionStatsState OBJECT-TYPE + SYNTAX INTEGER { + sessionIdle(1), + sessionConnecting(2), + sessionEstablished(3), + sessionDisconnecting(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current state of the + session." + ::= { l2tpSessionStatsEntry 6 } + +l2tpSessionStatsCallType OBJECT-TYPE + SYNTAX INTEGER { + lacIncoming(1), + + + + lnsIncoming(2), + lacOutgoing(3), + lnsOutgoing(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of call and the + role this tunnel peer is providing for this + session. For example, lacIncoming(1) indicates + that this tunnel peer is acting as a LAC and + generated a Incoming-Call-Request to the tunnel + peer (the LNS). Note that tunnel peers can be + both LAC and LNS simultaneously." + ::= { l2tpSessionStatsEntry 7 } + +l2tpSessionStatsCallSerialNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the serial number that has + been assigned to this session." + ::= { l2tpSessionStatsEntry 8 } + +l2tpSessionStatsTxConnectSpeed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the last known transmit + baud rate for this session." + ::= { l2tpSessionStatsEntry 9 } + +l2tpSessionStatsRxConnectSpeed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the last known receive + baud rate for this session established." + ::= { l2tpSessionStatsEntry 10 } + +l2tpSessionStatsCallBearerType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + + + + digital(2), + analog(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the bearer type of this + session." + ::= { l2tpSessionStatsEntry 11 } + +l2tpSessionStatsFramingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sync(2), + async(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the framing type of this + session." + ::= { l2tpSessionStatsEntry 12 } + +l2tpSessionStatsPhysChanId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the physical channel + identifier for the session." + ::= { l2tpSessionStatsEntry 13 } + +l2tpSessionStatsDNIS OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Dialed Number + Information String that the LAC obtained from + the network for the session. If no DNIS was + provided then a null string will be returned." + ::= { l2tpSessionStatsEntry 14 } + +l2tpSessionStatsCLID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object identifies the Calling Line ID + that the LAC obtained from the network for + the session. If no CLID was provided then a + null string will be returned." + ::= { l2tpSessionStatsEntry 15 } + +l2tpSessionStatsSubAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Sub Address that + the LAC obtained from the network for the + session. If no Sub Address was provided then + a null string will be returned." + ::= { l2tpSessionStatsEntry 16 } + +l2tpSessionStatsPrivateGroupID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Private Group + Identifier used for this tunneled session. + If no Private Group Identifier was provided + then a null string will be returned." + ::= { l2tpSessionStatsEntry 17 } + +l2tpSessionStatsProxyLcp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the LAC performed proxy LCP + for this session." + ::= { l2tpSessionStatsEntry 18 } + +l2tpSessionStatsAuthMethod OBJECT-TYPE + SYNTAX INTEGER { + none(1), + text(2), + pppChap(3), + pppPap(4), + pppEap(5), + pppMsChapV1(6), + pppMsChapV2(7), + other(8) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the proxy authentication + method employed by the LAC for the session. If + l2tpSessionProxyLcp is false(2) this object + should not be interpreted." + ::= { l2tpSessionStatsEntry 19 } + +l2tpSessionStatsSequencingState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + remote(2), + local(3), + both(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object defines which tunnel peers have + requested payload sequencing. The value of + both(4) indicates that both peers have requested + payload sequencing." + ::= { l2tpSessionStatsEntry 20 } + +l2tpSessionStatsOutSequence OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of packets + received for this session which were received out + of sequence." + ::= { l2tpSessionStatsEntry 21 } + +l2tpSessionStatsReassemblyTO OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of reassembly + timeouts that have occurred for this session." + ::= { l2tpSessionStatsEntry 22 } + +l2tpSessionStatsTxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object contains the next send sequence number + for for this session." + ::= { l2tpSessionStatsEntry 23 } + +l2tpSessionStatsRxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next receive sequence + number expected to be received on this session." + ::= { l2tpSessionStatsEntry 24 } + +-- +-- The L2TP Tunnel Mapping Table +-- + +l2tpTunnelMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Tunnel index mapping table. This table + is intended to assist management applications + to quickly determine what the ifIndex value is + for a given local tunnel identifier." + ::= { l2tpObjects 8 } + +l2tpTunnelMapEntry OBJECT-TYPE + SYNTAX L2tpTunnelMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP tunnel index map entry." + INDEX { l2tpTunnelMapLocalTID } + ::= { l2tpTunnelMapTable 1 } + +L2tpTunnelMapEntry ::= + SEQUENCE { + l2tpTunnelMapLocalTID + Integer32, + l2tpTunnelMapIfIndex + InterfaceIndex + } + +l2tpTunnelMapLocalTID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the local tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelMapEntry 1 } + +l2tpTunnelMapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value for this object is equal to the value + of ifIndex of the Interfaces MIB for tunnel + interfaces of type L2TP." + ::= { l2tpTunnelMapEntry 2 } + +-- +-- The L2TP Session Mapping Table +-- + +l2tpSessionMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpSessionMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Session index mapping table. This table + is intended to assist management applications + to map interfaces to a tunnel and session + identifier." + ::= { l2tpObjects 9 } + +l2tpSessionMapEntry OBJECT-TYPE + SYNTAX L2tpSessionMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Session index map entry." + INDEX { l2tpSessionMapIfIndex } + ::= { l2tpSessionMapTable 1 } + +L2tpSessionMapEntry ::= + SEQUENCE { + l2tpSessionMapIfIndex + InterfaceIndex, + l2tpSessionMapTunnelIfIndex + InterfaceIndex, + l2tpSessionMapLocalSID + + + + Integer32, + l2tpSessionMapStatus + RowStatus + } + +l2tpSessionMapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the ifIndex value of the + interface which is receiving or sending its packets + over an L2TP tunnel. For example this could be a DS0 + ifIndex on a LAC or a PPP ifIndex on the LNS." + ::= { l2tpSessionMapEntry 1 } + +l2tpSessionMapTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the sessions associated + L2TP tunnel ifIndex value. When this object is + set it provides a binding between a particular + interface identified by l2tpSessionMapIfIndex + to a particular tunnel." + ::= { l2tpSessionMapEntry 2 } + +l2tpSessionMapLocalSID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the local assigned session + identifier for this session." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionMapEntry 3 } + +l2tpSessionMapStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this session map entry." + ::= { l2tpSessionMapEntry 4 } + +-- +-- { l2tpIpUdpObjects 1 } reserved for future use + + + +-- +-- The L2TP UDP/IP Transport Status and Statistics Table +-- + +l2tpUdpStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpUdpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP UDP/IP transport stats table. This table + contains objects that can be used to describe the + current status and statistics of the UDP/IP L2TP + tunnel transport." + ::= { l2tpIpUdpObjects 2 } + +l2tpUdpStatsEntry OBJECT-TYPE + SYNTAX L2tpUdpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP UDP/IP transport stats entry." + INDEX { l2tpUdpStatsIfIndex } + ::= { l2tpUdpStatsTable 1 } + +L2tpUdpStatsEntry ::= + SEQUENCE { + l2tpUdpStatsIfIndex + InterfaceIndex, + l2tpUdpStatsPeerPort + Integer32, + l2tpUdpStatsLocalPort + Integer32 + } + +l2tpUdpStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value for this object is equal to the + value of ifIndex of the Interfaces MIB for + tunnel interfaces of type L2TP and which have + a L2TP transport of UDP/IP." + ::= { l2tpUdpStatsEntry 1 } + +l2tpUdpStatsPeerPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object reflects the peer's UDP port number + used for this tunnel. When not known a value of + zero should be returned." + ::= { l2tpUdpStatsEntry 2 } + +l2tpUdpStatsLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the local UDP port number + that this tunnel is bound to." + ::= { l2tpUdpStatsEntry 3 } + +-- +-- Definition of generic L2TP notifications +-- + +l2tpTunnelAuthFailure NOTIFICATION-TYPE + OBJECTS { + l2tpTunnelStatsInitiated, + l2tpTunnelStatsRemoteHostName + } + STATUS current + DESCRIPTION + "A l2tpTunnelAuthFailure trap signifies that an + attempt to establish a tunnel to a remote peer + has failed authentication." + ::= { l2tpNotifications 1 } + +-- +-- conformance information +-- + +l2tpGroups OBJECT IDENTIFIER ::= { l2tpConformance 1 } +l2tpCompliances OBJECT IDENTIFIER ::= { l2tpConformance 2 } + +-- +-- compliance statements +-- + +l2tpMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for + read-create and read-write, then such an + + + + implementation can claim full compliance. Such + an implementation can then be both monitored + and configured with this MIB." + + MODULE -- this module + + -- unconditionally mandatory groups + MANDATORY-GROUPS { + l2tpConfigGroup, + l2tpStatsGroup, + l2tpTrapGroup + } + -- conditionally mandatory groups + GROUP l2tpIpUdpGroup + DESCRIPTION + "This group is mandatory for implementations that + support L2TP over UDP/IP." + + -- optional groups + GROUP l2tpDomainGroup + DESCRIPTION + "This group is optional for L2TP devices that + group tunnel endpoints into tunnel domains." + + -- optional Mapping Group + GROUP l2tpMappingGroup + DESCRIPTION + "This group is optional for L2TP devices that + provide index mapping." + + -- optional Security Group + GROUP l2tpSecurityGroup + DESCRIPTION + "This group is optional for SNMP agents which support + both authentication and privacy of SNMP messages for + the management of L2TP keys." + + -- optional High Capacity Group + GROUP l2tpHCPacketGroup + DESCRIPTION + "This group is mandatory for implementations that + support the l2tpDomainGroup AND could potentially + overflow the L2TP Domain 32-bit counters is less + than one hour." + + ::= { l2tpCompliances 1 } + +l2tpMIBReadOnlyCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create and read-write (i.e. in read-only mode), + then such an implementation can claim read-only + compliance. Such an implementation can then be + monitored but can not be configured with this MIB." + + MODULE -- this module + + -- unconditionally mandatory groups + MANDATORY-GROUPS { + l2tpConfigGroup, + l2tpStatsGroup, + l2tpTrapGroup + } + + OBJECT l2tpAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDrainTunnels + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigHelloInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigIdleTimeout + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlRWS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlMaxRetx + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlMaxRetxTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigPayloadSeq + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigReassemblyTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigTransport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigDrainTunnel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigProxyPPPAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- conditionally mandatory groups + GROUP l2tpIpUdpGroup + DESCRIPTION + "This group is mandatory for implementations that + support L2TP over UDP/IP." + + -- optional groups + GROUP l2tpDomainGroup + DESCRIPTION + "This group is optional for L2TP devices that + group tunnel endpoints into tunnel domains." + + OBJECT l2tpDomainConfigAdminState + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigDrainTunnels + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelHelloInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelIdleTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlRWS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlMaxRetx + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlMaxRetxTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigPayloadSeq + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigReassemblyTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigProxyPPPAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT l2tpDomainConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional Mapping Group + GROUP l2tpMappingGroup + DESCRIPTION + "This group is optional for L2TP devices that + provide index mapping." + + OBJECT l2tpSessionMapTunnelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpSessionMapStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional Security Group + GROUP l2tpSecurityGroup + DESCRIPTION + "This group is optional for SNMP agents which support + both authentication and privacy of SNMP messages for + the management of L2TP keys." + + OBJECT l2tpDomainConfigAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigSecret + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelSecurity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT l2tpTunnelConfigAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigSecret + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigSecurity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional High Capacity Group + GROUP l2tpHCPacketGroup + DESCRIPTION + "This group is mandatory for implementations that + support the l2tpDomainGroup AND could potentially + overflow the L2TP Domain 32-bit counters is less + than one hour." + + ::= { l2tpCompliances 2 } + +-- units of conformance + +l2tpConfigGroup OBJECT-GROUP + OBJECTS { + l2tpAdminState, + l2tpDrainTunnels, + l2tpTunnelConfigDomainId, + l2tpTunnelConfigHelloInterval, + l2tpTunnelConfigIdleTimeout, + l2tpTunnelConfigControlRWS, + l2tpTunnelConfigControlMaxRetx, + l2tpTunnelConfigControlMaxRetxTO, + l2tpTunnelConfigPayloadSeq, + l2tpTunnelConfigReassemblyTO, + l2tpTunnelConfigTransport, + l2tpTunnelConfigDrainTunnel, + l2tpTunnelConfigProxyPPPAuth + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information of the L2TP protocol, tunnels and + sessions." + + + + ::= { l2tpGroups 1 } + +l2tpStatsGroup OBJECT-GROUP + OBJECTS { + l2tpProtocolVersions, + l2tpVendorName, + l2tpFirmwareRev, + l2tpDrainingTunnels, + l2tpTunnelStatsLocalTID, + l2tpTunnelStatsRemoteTID, + l2tpTunnelStatsState, + l2tpTunnelStatsInitiated, + l2tpTunnelStatsRemoteHostName, + l2tpTunnelStatsRemoteVendorName, + l2tpTunnelStatsRemoteFirmwareRev, + l2tpTunnelStatsRemoteProtocolVer, + l2tpTunnelStatsInitialRemoteRWS, + l2tpTunnelStatsBearerCaps, + l2tpTunnelStatsFramingCaps, + l2tpTunnelStatsControlRxPkts, + l2tpTunnelStatsControlRxZLB, + l2tpTunnelStatsControlOutOfSeq, + l2tpTunnelStatsControlOutOfWin, + l2tpTunnelStatsControlTxPkts, + l2tpTunnelStatsControlTxZLB, + l2tpTunnelStatsControlAckTO, + l2tpTunnelStatsCurrentRemoteRWS, + l2tpTunnelStatsTxSeq, + l2tpTunnelStatsTxSeqAck, + l2tpTunnelStatsRxSeq, + l2tpTunnelStatsRxSeqAck, + l2tpTunnelStatsTotalSessions, + l2tpTunnelStatsFailedSessions, + l2tpTunnelStatsActiveSessions, + l2tpTunnelStatsLastResultCode, + l2tpTunnelStatsLastErrorCode, + l2tpTunnelStatsLastErrorMessage, + l2tpTunnelStatsDrainingTunnel, + l2tpSessionStatsIfIndex, + l2tpSessionStatsRemoteSID, + l2tpSessionStatsUserName, + l2tpSessionStatsState, + l2tpSessionStatsCallType, + l2tpSessionStatsCallSerialNumber, + l2tpSessionStatsTxConnectSpeed, + l2tpSessionStatsRxConnectSpeed, + l2tpSessionStatsCallBearerType, + l2tpSessionStatsFramingType, + + + + l2tpSessionStatsPhysChanId, + l2tpSessionStatsDNIS, + l2tpSessionStatsCLID, + l2tpSessionStatsSubAddress, + l2tpSessionStatsPrivateGroupID, + l2tpSessionStatsProxyLcp, + l2tpSessionStatsAuthMethod, + l2tpSessionStatsSequencingState, + l2tpSessionStatsOutSequence, + l2tpSessionStatsReassemblyTO, + l2tpSessionStatsTxSeq, + l2tpSessionStatsRxSeq + } + STATUS current + DESCRIPTION + "A collection of objects providing status and + statistics of the L2TP protocol, tunnels and + sessions." + ::= { l2tpGroups 2 } + +l2tpIpUdpGroup OBJECT-GROUP + OBJECTS { + l2tpUdpStatsPeerPort, + l2tpUdpStatsLocalPort + } + STATUS current + DESCRIPTION + "A collection of objects providing status and + statistics of the L2TP UDP/IP transport layer." + ::= { l2tpGroups 3 } + +l2tpDomainGroup OBJECT-GROUP + OBJECTS { + l2tpDomainConfigAdminState, + l2tpDomainConfigDrainTunnels, + l2tpDomainConfigTunnelHelloInt, + l2tpDomainConfigTunnelIdleTO, + l2tpDomainConfigControlRWS, + l2tpDomainConfigControlMaxRetx, + l2tpDomainConfigControlMaxRetxTO, + l2tpDomainConfigPayloadSeq, + l2tpDomainConfigReassemblyTO, + l2tpDomainConfigProxyPPPAuth, + l2tpDomainConfigStorageType, + l2tpDomainConfigStatus, + l2tpDomainStatsTotalTunnels, + l2tpDomainStatsFailedTunnels, + l2tpDomainStatsFailedAuths, + + + + l2tpDomainStatsActiveTunnels, + l2tpDomainStatsTotalSessions, + l2tpDomainStatsFailedSessions, + l2tpDomainStatsActiveSessions, + l2tpDomainStatsDrainingTunnels, + l2tpDomainStatsControlRxOctets, + l2tpDomainStatsControlRxPkts, + l2tpDomainStatsControlTxOctets, + l2tpDomainStatsControlTxPkts, + l2tpDomainStatsPayloadRxOctets, + l2tpDomainStatsPayloadRxPkts, + l2tpDomainStatsPayloadRxDiscs, + l2tpDomainStatsPayloadTxOctets, + l2tpDomainStatsPayloadTxPkts + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration, + status and statistics of L2TP tunnel domains." + ::= { l2tpGroups 4 } + +l2tpMappingGroup OBJECT-GROUP + OBJECTS { + l2tpTunnelMapIfIndex, + l2tpSessionMapTunnelIfIndex, + l2tpSessionMapLocalSID, + l2tpSessionMapStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing index mapping." + ::= { l2tpGroups 5 } + +l2tpSecurityGroup OBJECT-GROUP + OBJECTS { + l2tpDomainConfigAuth, + l2tpDomainConfigSecret, + l2tpDomainConfigTunnelSecurity, + l2tpTunnelConfigAuth, + l2tpTunnelConfigSecret, + l2tpTunnelConfigSecurity + } + STATUS current + DESCRIPTION + "A collection of objects providing L2TP security + configuration." + ::= { l2tpGroups 6 } + + + + +l2tpTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { + l2tpTunnelAuthFailure + } + STATUS current + DESCRIPTION + "A collection of L2TP trap events as specified + in NOTIFICATION-TYPE constructs." + ::= { l2tpGroups 7 } + +l2tpHCPacketGroup OBJECT-GROUP + OBJECTS { + l2tpDomainStatsControlHCRxOctets, + l2tpDomainStatsControlHCRxPkts, + l2tpDomainStatsControlHCTxOctets, + l2tpDomainStatsControlHCTxPkts, + l2tpDomainStatsPayloadHCRxOctets, + l2tpDomainStatsPayloadHCRxPkts, + l2tpDomainStatsPayloadHCRxDiscs, + l2tpDomainStatsPayloadHCTxOctets, + l2tpDomainStatsPayloadHCTxPkts + } + STATUS current + DESCRIPTION + "A collection of objects providing High Capacity + 64-bit counter objects." + ::= { l2tpGroups 8 } + +END diff --git a/mibs/ietf/LANGTAG-TC-MIB b/mibs/ietf/LANGTAG-TC-MIB new file mode 100644 index 0000000..0a1064a --- /dev/null +++ b/mibs/ietf/LANGTAG-TC-MIB @@ -0,0 +1,58 @@ +LANGTAG-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +langTagTcMIB MODULE-IDENTITY + LAST-UPDATED "200711090000Z" -- 9 November 2007 + ORGANIZATION "IETF Operations and Management (OPS) Area" + CONTACT-INFO "EMail: ops-area@ietf.org + Home page: http://www.ops.ietf.org/" + DESCRIPTION + "This MIB module defines a textual convention for + representing BCP 47 language tags." + REVISION "200711090000Z" -- 9 November 2007 + DESCRIPTION + "Initial revision, published as RFC 5131. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5131; see the RFC itself for full + legal notices." + ::= { mib-2 165 } + +LangTag ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "A language tag, constructed in accordance with BCP 47. + + Only lowercase characters are allowed. The purpose of this + restriction is to provide unique language tags for use as + indexes. BCP 47 recommends case conventions for user + interfaces, but objects using this TEXTUAL-CONVENTION MUST + use only lowercase. + + Values MUST be well-formed language tags, in conformance + with the definition of well-formed tags in BCP 47. An + implementation MAY further limit the values it accepts to + those permitted by a 'validating' processor, as defined in + BCP 47. + + In theory, BCP 47 language tags are of unlimited length. + The language tag described in this TEXTUAL-CONVENTION is of + limited length. The analysis of language tag lengths in BCP + 47 confirms that this limit will not pose a problem in + practice. In particular, this length is greater than the + + + + minimum requirements set out in Section 4.3.1. + + A zero-length language tag is not a valid language tag. + This can be used to express 'language tag absent' where + required, for example, when used as an index field." + REFERENCE "RFC 4646 BCP 47" + SYNTAX OCTET STRING (SIZE (0 | 2..63)) + +END diff --git a/mibs/ietf/LMP-MIB b/mibs/ietf/LMP-MIB new file mode 100644 index 0000000..25cf108 --- /dev/null +++ b/mibs/ietf/LMP-MIB @@ -0,0 +1,3374 @@ +LMP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + transmission, Unsigned32, Counter32, TimeTicks + FROM SNMPv2-SMI -- RFC 2578 + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType, + TimeStamp + + + + FROM SNMPv2-TC -- RFC 2579 + + InterfaceIndexOrZero, ifIndex + FROM IF-MIB -- RFC 2863 + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + + teLinkRemoteIpAddr, teLinkIncomingIfId, TeLinkEncodingType + FROM TE-LINK-STD-MIB; -- RFC 4220 + +lmpMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" -- 14 August 2006 + ORGANIZATION "Common Control and Measurement Protocols (CCAMP) + Working Group" + CONTACT-INFO + " Martin Dubuc + Email: dubuc.consulting@sympatico.ca + + Thomas D. Nadeau + Email: tnadeau@cisco.com + + Jonathan P. Lang + Email: jplang@ieee.org + + Evan McGinnis + Email: emcginnis@hammerheadsystems.com + + Adrian Farrel + Email: adrian@olddog.co.uk" + + DESCRIPTION + "Copyright (C) 2006 The Internet Society. This version of + the MIB module is part of RFC 4631; see the RFC itself + for full legal notices. + + This MIB module contains managed object definitions for + the Link Management Protocol (LMP) as + defined in 'Link Management Protocol'." + + -- Revision history. + REVISION + "200608140000Z" -- 14 August 2006 + DESCRIPTION + "Revised version: + - Fixes textual descriptions of TruthValue settings such that + True is always 1 and False is always 2. + - Adds punctuation to REFERENCE clauses. + + + + This revision published as RFC 4631" + REVISION + "200601110000Z" -- 11 January 2006 + DESCRIPTION + "Initial version published as RFC 4327" + ::= { transmission 227 } + +-- Textual Conventions + +LmpInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The interval delay, in milliseconds." + SYNTAX Unsigned32 (1..65535) + +LmpRetransmitInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The retransmission interval delay in milliseconds." + SYNTAX Unsigned32 (1..4294967295) + +LmpNodeId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents a Node ID in network byte order. Node ID is an + address of type IPv4." + REFERENCE + "Section 1.1 of Link Management Protocol, RFC 4204." + SYNTAX OCTET STRING(SIZE(4)) + +-- Top level components of this MIB + +-- Notifications +lmpNotifications OBJECT IDENTIFIER ::= { lmpMIB 0 } +-- Tables, Scalars +lmpObjects OBJECT IDENTIFIER ::= { lmpMIB 1 } +-- Conformance +lmpConformance OBJECT IDENTIFIER ::= { lmpMIB 2 } + +lmpAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired operational status of LMP on the node. + + + + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + + DEFVAL { up } + ::= { lmpObjects 1 } + +lmpOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of LMP on the node." + ::= { lmpObjects 2 } + +-- LMP Neighbor Table + +lmpNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the neighbor node(s) to which control + channels may be established." + ::= { lmpObjects 3 } + +lmpNbrEntry OBJECT-TYPE + SYNTAX LmpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by a LMP-enabled device for + every pair of nodes that can establish control channels." + INDEX { lmpNbrNodeId } + ::= { lmpNbrTable 1 } + +LmpNbrEntry ::= SEQUENCE { + lmpNbrNodeId LmpNodeId, + lmpNbrRetransmitInterval LmpRetransmitInterval, + lmpNbrRetryLimit Unsigned32, + lmpNbrRetransmitDelta Unsigned32, + lmpNbrAdminStatus INTEGER, + lmpNbrOperStatus INTEGER, + lmpNbrRowStatus RowStatus, + lmpNbrStorageType StorageType +} + +lmpNbrNodeId OBJECT-TYPE + SYNTAX LmpNodeId + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the LmpNbrTable. + This value represents the remote Node ID." + ::= { lmpNbrEntry 1 } + +lmpNbrRetransmitInterval OBJECT-TYPE + SYNTAX LmpRetransmitInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the initial retransmission interval that + is used for the retransmission of messages that require + acknowledgement. This object, along with lmpNbrRetryLimit, + is used to implement the congestion-handling mechanism defined + in Section 10 of the Link Management Protocol specification, + which is based on RFC 2914." + REFERENCE + "Link Management Protocol, RFC 4204. + + Congestion Control Principles, RFC 2914." + DEFVAL { 500 } + ::= { lmpNbrEntry 2 } + +lmpNbrRetryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum number of times a message + is transmitted without being acknowledged. A value of 0 is used + to indicate that a node should never stop retransmission. + This object, along with lmpNbrRetransmitInterval, is + used to implement the congestion-handling mechanism as defined + in Section 10 of the Link Management Protocol specification, + which is based on RFC 2914." + REFERENCE + "Link Management Protocol, RFC 4204. + Congestion Control Principles, RFC 2914." + DEFVAL { 3 } + ::= { lmpNbrEntry 3 } + +lmpNbrRetransmitDelta OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object governs the speed with which the sender increases + the retransmission interval, as explained in Section 10 of the + Link Management Protocol specification, which is based on + RFC 2914. This value is a power used to express the + exponential backoff. The ratio of two successive retransmission + intervals is (1 + Delta)." + REFERENCE + "Link Management Protocol, RFC 4204. + Congestion Control Principles, RFC 2914." + DEFVAL { 1 } + ::= { lmpNbrEntry 4 } + +lmpNbrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of LMP to this remote node." + ::= { lmpNbrEntry 5 } + +lmpNbrOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of LMP to this remote node." + ::= { lmpNbrEntry 6 } + +lmpNbrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpNbrEntry 7 } + +lmpNbrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpNbrTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + + + + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpNbrEntry 8 } + +-- End of lmpNbrTable + +lmpCcHelloIntervalDefault OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default value for the HelloInterval + parameter used in the Hello protocol keep-alive phase. It + indicates how frequently LMP Hello messages will be sent. It + is used as the default value for lmpCcHelloInterval. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpObjects 4 } + +lmpCcHelloIntervalDefaultMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default minimum value for the + HelloInterval parameter. It is used as a default value + for lmpCcHelloIntervalMin. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 5 } + +lmpCcHelloIntervalDefaultMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default maximum value for the + HelloInterval parameter. It is used as a default value + for lmpCcHelloIntervalMax. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 6 } + +lmpCcHelloDeadIntervalDefault OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies the default HelloDeadInterval parameter + to use in the Hello protocol keep-alive phase. It indicates + how long a device should wait before declaring the control + channel dead. The HelloDeadInterval parameter should be at + least three times the value of HelloInterval. It is used as + a default value for lmpCcHelloDeadInterval. Implementations + should save the value of this object in persistent memory so + that it survives restarts or reboot." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpObjects 7 } + +lmpCcHelloDeadIntervalDefaultMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default minimum value for the + HelloDeadInterval parameter. It is used as a default value + for lmpCcHelloDeadIntervalMin. Implementations should save + the value of this object in persistent memory so that it + survives restarts or reboot." + ::= { lmpObjects 8 } + +lmpCcHelloDeadIntervalDefaultMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default maximum value for the + HelloDeadInterval parameter. It is used as a default value + for lmpCcHelloDeadIntervalMax. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 9 } + +-- LMP Control Channel Table + +lmpControlChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpControlChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP control channel information." + ::= { lmpObjects 10 } + + + + +lmpControlChannelEntry OBJECT-TYPE + SYNTAX LmpControlChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every control channel. Whenever a new entry is created with + lmpCcIsIf set to true(1), a corresponding entry is + created in ifTable as well (see RFC 2863)." + INDEX { lmpCcId } + ::= { lmpControlChannelTable 1 } + +LmpControlChannelEntry ::= SEQUENCE { + lmpCcId Unsigned32, + lmpCcUnderlyingIfIndex InterfaceIndexOrZero, + lmpCcIsIf TruthValue, + lmpCcNbrNodeId LmpNodeId, + lmpCcRemoteId Unsigned32, + lmpCcRemoteAddressType InetAddressType, + lmpCcRemoteIpAddr InetAddress, + lmpCcSetupRole INTEGER, + lmpCcAuthentication TruthValue, + lmpCcHelloInterval LmpInterval, + lmpCcHelloIntervalMin LmpInterval, + lmpCcHelloIntervalMax LmpInterval, + lmpCcHelloIntervalNegotiated LmpInterval, + lmpCcHelloDeadInterval LmpInterval, + lmpCcHelloDeadIntervalMin LmpInterval, + lmpCcHelloDeadIntervalMax LmpInterval, + lmpCcHelloDeadIntervalNegotiated LmpInterval, + lmpCcLastChange TimeTicks, + lmpCcAdminStatus INTEGER, + lmpCcOperStatus INTEGER, + lmpCcRowStatus RowStatus, + lmpCcStorageType StorageType +} + +lmpCcId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value represents the local control channel identifier. + The control channel identifier is a non-zero 32-bit number." + ::= { lmpControlChannelEntry 1 } + +lmpCcUnderlyingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If lmpCcIsIf is set to true(1), this object carries the + index into the ifTable of the entry that represents the + LMP interface over which LMP will transmit its traffic. + If this object is set to zero but lmpCcIsIf is set to + true(1), the control channel is not currently associated + with any underlying interface, and the control channel's + operational status must not be up(1); nor should the + control channel forward or receive traffic. + If lmpCcIsIf is set to false(2), this object should be set + to zero and ignored." + ::= { lmpControlChannelEntry 2 } + +lmpCcIsIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In implementations where the control channels are modeled + as interfaces, the value of this object is true(1), and + this control channel is represented by an interface in + the interfaces group table as indicated by the value of + lmpCcUnderlyingIfIndex. If control channels are not + modeled as interfaces, the value of this object is + false(2), and there is no corresponding interface for + this control channel in the interfaces group table; + the value of lmpCcUnderlyingIfIndex should be + ignored." + ::= { lmpControlChannelEntry 3 } + +lmpCcNbrNodeId OBJECT-TYPE + SYNTAX LmpNodeId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the Node ID of the control channel remote node. + This value either is configured or gets created by the node + when a Config message is received or when an outgoing Config + message is acknowledged by the remote node." + ::= { lmpControlChannelEntry 4 } + +lmpCcRemoteId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This value represents the remote control channel identifier + (32-bit number). It is determined during the negotiation + phase. A value of zero means that the remote control channel + identifier has not yet been learned." + ::= { lmpControlChannelEntry 5 } + +lmpCcRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents the remote control channel IP address + type. In point-to-point configuration, this value can be set + to unknown(0)." + ::= { lmpControlChannelEntry 6 } + +lmpCcRemoteIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents the remote control channel Internet + address for numbered control channel. The type of this + address is determined by lmpCcRemoteAddressType. + The control channel must be numbered on non-point-to-point + configuration. For point-to-point configuration, the + remote control channel address can be of type unknown, + in which case this object must be a zero-length string. The + lmpCcRemoteId object then identifies the unnumbered + address." + ::= { lmpControlChannelEntry 7 } + +lmpCcSetupRole OBJECT-TYPE + SYNTAX INTEGER { active(1), passive(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role that this node should take during establishment + of this control channel. An active node will initiate + establishment. A passive node will wait for the remote node + to initiate. A pair of nodes that both take the passive role + will never establish communications." + DEFVAL { active } + ::= { lmpControlChannelEntry 8 } + +lmpCcAuthentication OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates whether the control channel must use + authentication." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpControlChannelEntry 9 } + +lmpCcHelloInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the value of the HelloInterval + parameter. The default value for this object should be + set to lmpCcHelloIntervalDefault." + ::= { lmpControlChannelEntry 10 } + +lmpCcHelloIntervalMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the minimum value for the + HelloInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMinDefault." + ::= { lmpControlChannelEntry 11 } + +lmpCcHelloIntervalMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum value for the + HelloInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMaxDefault." + ::= { lmpControlChannelEntry 12 } + +lmpCcHelloIntervalNegotiated OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Once the control channel is active, this object represents + the negotiated HelloInterval value." + ::= { lmpControlChannelEntry 13 } + +lmpCcHelloDeadInterval OBJECT-TYPE + + + + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the value of the HelloDeadInterval + parameter. The default value for this object should be + set to lmpCcHelloDeadIntervalDefault." + ::= { lmpControlChannelEntry 14 } + +lmpCcHelloDeadIntervalMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the minimum value for the + HelloDeadInterval parameter. The default value for this + object should be set to lmpCcHelloDeadIntervalMinDefault." + ::= { lmpControlChannelEntry 15 } + +lmpCcHelloDeadIntervalMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum value for the + HelloDeadInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMaxDefault." + ::= { lmpControlChannelEntry 16 } + +lmpCcHelloDeadIntervalNegotiated OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Once the control channel is active, this object represents + the negotiated HelloDeadInterval value." + ::= { lmpControlChannelEntry 17 } + +lmpCcLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the control channel 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." + + + + ::= { lmpControlChannelEntry 18 } + +lmpCcAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of this control channel." + ::= { lmpControlChannelEntry 19 } + +lmpCcOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + configSnd(3), + configRcv(4), + active(5), + goingDown(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this control channel." + ::= { lmpControlChannelEntry 20 } + +lmpCcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpControlChannelEntry 21 } + +lmpCcStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpControlChannelTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + + DEFVAL { nonVolatile } + + + + ::= { lmpControlChannelEntry 22 } + +-- End of lmpControlChannelTable + + +-- LMP Control Channel Performance Table + +lmpControlChannelPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpControlChannelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP control channel performance + counters." + ::= { lmpObjects 11 } + +lmpControlChannelPerfEntry OBJECT-TYPE + SYNTAX LmpControlChannelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by a LMP-enabled device for + every control channel. lmpCcCounterDiscontinuityTime is used + to indicate potential discontinuity for all counter objects + in this table." + INDEX { lmpCcId } + ::= { lmpControlChannelPerfTable 1 } + +LmpControlChannelPerfEntry ::= SEQUENCE { + lmpCcInOctets Counter32, + lmpCcInDiscards Counter32, + lmpCcInErrors Counter32, + lmpCcOutOctets Counter32, + lmpCcOutDiscards Counter32, + lmpCcOutErrors Counter32, + lmpCcConfigReceived Counter32, + lmpCcConfigSent Counter32, + lmpCcConfigRetransmit Counter32, + lmpCcConfigAckReceived Counter32, + lmpCcConfigAckSent Counter32, + lmpCcConfigNackReceived Counter32, + lmpCcConfigNackSent Counter32, + lmpCcHelloReceived Counter32, + lmpCcHelloSent Counter32, + lmpCcBeginVerifyReceived Counter32, + lmpCcBeginVerifySent Counter32, + lmpCcBeginVerifyRetransmit Counter32, + lmpCcBeginVerifyAckReceived Counter32, + + + + lmpCcBeginVerifyAckSent Counter32, + lmpCcBeginVerifyNackReceived Counter32, + lmpCcBeginVerifyNackSent Counter32, + lmpCcEndVerifyReceived Counter32, + lmpCcEndVerifySent Counter32, + lmpCcEndVerifyRetransmit Counter32, + lmpCcEndVerifyAckReceived Counter32, + lmpCcEndVerifyAckSent Counter32, + lmpCcTestStatusSuccessReceived Counter32, + lmpCcTestStatusSuccessSent Counter32, + lmpCcTestStatusSuccessRetransmit Counter32, + lmpCcTestStatusFailureReceived Counter32, + lmpCcTestStatusFailureSent Counter32, + lmpCcTestStatusFailureRetransmit Counter32, + lmpCcTestStatusAckReceived Counter32, + lmpCcTestStatusAckSent Counter32, + lmpCcLinkSummaryReceived Counter32, + lmpCcLinkSummarySent Counter32, + lmpCcLinkSummaryRetransmit Counter32, + lmpCcLinkSummaryAckReceived Counter32, + lmpCcLinkSummaryAckSent Counter32, + lmpCcLinkSummaryNackReceived Counter32, + lmpCcLinkSummaryNackSent Counter32, + lmpCcChannelStatusReceived Counter32, + lmpCcChannelStatusSent Counter32, + lmpCcChannelStatusRetransmit Counter32, + lmpCcChannelStatusAckReceived Counter32, + lmpCcChannelStatusAckSent Counter32, + lmpCcChannelStatusReqReceived Counter32, + lmpCcChannelStatusReqSent Counter32, + lmpCcChannelStatusReqRetransmit Counter32, + lmpCcChannelStatusRspReceived Counter32, + lmpCcChannelStatusRspSent Counter32, + lmpCcCounterDiscontinuityTime TimeStamp +} + +lmpCcInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets received on the + control channel." + ::= { lmpControlChannelPerfEntry 1 } + +lmpCcInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected. One + possible reason for discarding such a packet could be to + free up buffer space." + ::= { lmpControlChannelPerfEntry 2 } + +lmpCcInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that contained errors + preventing them from being processed by LMP." + ::= { lmpControlChannelPerfEntry 3 } + +lmpCcOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets transmitted out of + the control channel." + ::= { lmpControlChannelPerfEntry 4 } + +lmpCcOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that 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." + ::= { lmpControlChannelPerfEntry 5 } + +lmpCcOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that could not be + transmitted because of errors." + ::= { lmpControlChannelPerfEntry 6 } + +lmpCcConfigReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 7 } + +lmpCcConfigSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 8 } + +lmpCcConfigRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 9 } + +lmpCcConfigAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigAck messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 10 } + +lmpCcConfigAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigAck messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 11 } + +lmpCcConfigNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of ConfigNack messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 12 } + +lmpCcConfigNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigNack messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 13 } + +lmpCcHelloReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Hello messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 14 } + +lmpCcHelloSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Hello messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 15 } + +lmpCcBeginVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 16 } + +lmpCcBeginVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been sent on this control channel." + + + + ::= { lmpControlChannelPerfEntry 17 } + +lmpCcBeginVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 18 } + +lmpCcBeginVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 19 } + +lmpCcBeginVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 20 } + +lmpCcBeginVerifyNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 21 } + +lmpCcBeginVerifyNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 22 } + +lmpCcEndVerifyReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 23 } + +lmpCcEndVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 24 } + +lmpCcEndVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 25 } + +lmpCcEndVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 26 } + +lmpCcEndVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 27 } + +lmpCcTestStatusSuccessReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 28 } + +lmpCcTestStatusSuccessSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 29 } + +lmpCcTestStatusSuccessRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 30 } + +lmpCcTestStatusFailureReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 31 } + +lmpCcTestStatusFailureSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 32 } + +lmpCcTestStatusFailureRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been retransmitted over this control channel." + + + + ::= { lmpControlChannelPerfEntry 33 } + +lmpCcTestStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 34 } + +lmpCcTestStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 35 } + +lmpCcLinkSummaryReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 36 } + +lmpCcLinkSummarySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 37 } + +lmpCcLinkSummaryRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 38 } + +lmpCcLinkSummaryAckReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 39 } + +lmpCcLinkSummaryAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 40 } + +lmpCcLinkSummaryNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 41 } + +lmpCcLinkSummaryNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 42 } + +lmpCcChannelStatusReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 43 } + +lmpCcChannelStatusSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 44 } + +lmpCcChannelStatusRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been retransmitted on this control channel." + ::= { lmpControlChannelPerfEntry 45 } + +lmpCcChannelStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 46 } + +lmpCcChannelStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 47 } + +lmpCcChannelStatusReqReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 48 } + +lmpCcChannelStatusReqSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been sent on this control channel." + + + + ::= { lmpControlChannelPerfEntry 49 } + +lmpCcChannelStatusReqRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been retransmitted on this control channel." + ::= { lmpControlChannelPerfEntry 50 } + +lmpCcChannelStatusRspReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 51 } + +lmpCcChannelStatusRspSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 52 } + +lmpCcCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this control channel's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this control channel of any + Counter32 object contained in the lmpControlChannelPerfTable. + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpControlChannelPerfEntry 53 } + +-- End of lmpControlChannelPerfTable + +-- LMP TE Link Table + + + + +lmpTeLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpTeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the LMP-specific TE link information. + Overall TE link information is kept in three separate tables: + ifTable for interface-specific information, lmpTeLinkTable + for LMP specific information, and teLinkTable for generic + TE link information. ifIndex is the common index to all + tables." + ::= { lmpObjects 12 } + +lmpTeLinkEntry OBJECT-TYPE + SYNTAX LmpTeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry with an + ifType of teLink(200) that is managed by LMP. An ifEntry with + an ifIndex must exist before the corresponding lmpTeLinkEntry is + created. If a TE link entry in the ifTable is destroyed, then + so is the corresponding entry in the lmpTeLinkTable. The + administrative status value is controlled from the ifEntry. + Setting the administrative status to testing prompts LMP to + start link verification on the TE link. Information about the + TE link that is not LMP specific is contained in the + teLinkTable of the TE-LINK-STD-MIB MIB module." + INDEX { ifIndex } + ::= { lmpTeLinkTable 1 } + +LmpTeLinkEntry ::= SEQUENCE { + lmpTeLinkNbrRemoteNodeId LmpNodeId, + lmpTeLinkVerification TruthValue, + lmpTeLinkFaultManagement TruthValue, + lmpTeLinkDwdm TruthValue, + lmpTeLinkOperStatus INTEGER, + lmpTeLinkRowStatus RowStatus, + lmpTeLinkStorageType StorageType +} + +lmpTeLinkNbrRemoteNodeId OBJECT-TYPE + SYNTAX LmpNodeId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the Node ID of the TE link remote node. This value + may be learned during the control channel parameter negotiation + + + + phase (in the Config message). Node ID is an address whose + type must be IPv4." + ::= { lmpTeLinkEntry 1 } + +lmpTeLinkVerification OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP link verification + procedure is enabled for this TE link." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpTeLinkEntry 2 } + +lmpTeLinkFaultManagement OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP fault management procedure + is enabled on this TE link." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpTeLinkEntry 3 } + +lmpTeLinkDwdm OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP DWDM procedure is enabled + on this TE link." + REFERENCE + "Link Management Protocol (LMP) for Dense Wavelength Division + Multiplexing (DWDM) Optical Line Systems, RFC 4209." + ::= { lmpTeLinkEntry 4 } + +lmpTeLinkOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), down(2), testing(3), init(4), degraded(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this TE link. The status + is set to testing when the TE link is performing link + verification. A degraded state indicates that there is + + + + no active control channel between the pair of nodes that + form the endpoints of the TE link, but that at least one + data-bearing link on the TE link is allocated." + ::= { lmpTeLinkEntry 5 } + +lmpTeLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpTeLinkEntry 6 } + +lmpTeLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpTeLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpTeLinkEntry 7 } + +-- End of lmpTeLinkTable + + +lmpGlobalLinkVerificationInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates how often the link verification + procedure is executed. The interval is in milliseconds. + A value of 0 is used to indicate that the link + verification procedure should not be executed. The + interval specified in this object should be large enough + to allow the verification procedure to be completed + before the start of the next interval. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + ::= { lmpObjects 13 } + + + +-- LMP Link Verification Table + +lmpLinkVerificationTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpLinkVerificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies TE link information associated with the + LMP verification procedure." + ::= { lmpObjects 14 } + +lmpLinkVerificationEntry OBJECT-TYPE + SYNTAX LmpLinkVerificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every TE link that supports the LMP verification + procedure." + INDEX { ifIndex } + ::= { lmpLinkVerificationTable 1 } + +LmpLinkVerificationEntry ::= SEQUENCE { + lmpLinkVerifyInterval LmpInterval, + lmpLinkVerifyDeadInterval LmpInterval, + lmpLinkVerifyTransportMechanism BITS, + lmpLinkVerifyAllLinks TruthValue, + lmpLinkVerifyTransmissionRate Unsigned32, + lmpLinkVerifyWavelength Unsigned32, + lmpLinkVerifyRowStatus RowStatus, + lmpLinkVerifyStorageType StorageType +} + +lmpLinkVerifyInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the VerifyInterval parameter used + in the LMP link verification process. It indicates the + interval at which the Test messages are sent." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 1 } + +lmpLinkVerifyDeadInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object specifies the VerifyDeadInterval parameter used + in the verification of the physical connectivity of data- + bearing links. It specifies the observation period used to + detect a Test message at the remote node." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 2 } + +lmpLinkVerifyTransportMechanism OBJECT-TYPE + SYNTAX BITS { + -- All encoding types: + payload(0), + -- SONET/SDH encoding type: + dccSectionOverheadBytes(1), + dccLineOverheadBytes(2), + j0Trace(3), + j1Trace(4), + j2Trace(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This defines the transport mechanism for the Test messages. The + scope of this bit mask is restricted to each link encoding + type. The local node will set the bits corresponding to the + various mechanisms it can support for transmitting LMP Test + messages. The receiver chooses the appropriate mechanism in the + BeginVerifyAck message." + REFERENCE + "Link Management Protocol, RFC 4204 + Synchronous Optical Network (SONET)/Synchronous Digital + Hierarchy (SDH) Encoding for Link Management Protocol (LMP) + Test Messages, RFC 4207." + ::= { lmpLinkVerificationEntry 3 } + +lmpLinkVerifyAllLinks OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value of true(1) for this object indicates that the + verification process checks all unallocated links; otherwise, + only the new ports or component links that have been added to + this TE link are verified." + ::= { lmpLinkVerificationEntry 4 } + + + + +lmpLinkVerifyTransmissionRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the transmission rate of the data link over which + the Test messages will be transmitted and is expressed in + bytes per second." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 5 } + +lmpLinkVerifyWavelength OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "nanometers" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value corresponds to the wavelength at + which the Test messages will be transmitted and is + measured in nanometers (nm). If each data-bearing link + corresponds to a separate wavelength, then this value should + be set to 0." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 6 } + +lmpLinkVerifyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpLinkVerificationEntry 7 } + +lmpLinkVerifyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpLinkVerificationTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + + + + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpLinkVerificationEntry 8 } + +-- End of lmpLinkVerificationTable + + +-- LMP TE Link Performance Table + +lmpTeLinkPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpTeLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP TE link performance counters." + ::= { lmpObjects 15 } + +lmpTeLinkPerfEntry OBJECT-TYPE + SYNTAX LmpTeLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every TE link. lmpTeCounterDiscontinuityTime is used + to indicate potential discontinuity for all counter objects + in this table." + INDEX { ifIndex } + ::= { lmpTeLinkPerfTable 1 } + +LmpTeLinkPerfEntry ::= SEQUENCE { + lmpTeInOctets Counter32, + lmpTeOutOctets Counter32, + lmpTeBeginVerifyReceived Counter32, + lmpTeBeginVerifySent Counter32, + lmpTeBeginVerifyRetransmit Counter32, + lmpTeBeginVerifyAckReceived Counter32, + lmpTeBeginVerifyAckSent Counter32, + lmpTeBeginVerifyNackReceived Counter32, + lmpTeBeginVerifyNackSent Counter32, + lmpTeEndVerifyReceived Counter32, + lmpTeEndVerifySent Counter32, + lmpTeEndVerifyRetransmit Counter32, + lmpTeEndVerifyAckReceived Counter32, + lmpTeEndVerifyAckSent Counter32, + lmpTeTestStatusSuccessReceived Counter32, + lmpTeTestStatusSuccessSent Counter32, + lmpTeTestStatusSuccessRetransmit Counter32, + lmpTeTestStatusFailureReceived Counter32, + + + + lmpTeTestStatusFailureSent Counter32, + lmpTeTestStatusFailureRetransmit Counter32, + lmpTeTestStatusAckReceived Counter32, + lmpTeTestStatusAckSent Counter32, + lmpTeLinkSummaryReceived Counter32, + lmpTeLinkSummarySent Counter32, + lmpTeLinkSummaryRetransmit Counter32, + lmpTeLinkSummaryAckReceived Counter32, + lmpTeLinkSummaryAckSent Counter32, + lmpTeLinkSummaryNackReceived Counter32, + lmpTeLinkSummaryNackSent Counter32, + lmpTeChannelStatusReceived Counter32, + lmpTeChannelStatusSent Counter32, + lmpTeChannelStatusRetransmit Counter32, + lmpTeChannelStatusAckReceived Counter32, + lmpTeChannelStatusAckSent Counter32, + lmpTeChannelStatusReqReceived Counter32, + lmpTeChannelStatusReqSent Counter32, + lmpTeChannelStatusReqRetransmit Counter32, + lmpTeChannelStatusRspReceived Counter32, + lmpTeChannelStatusRspSent Counter32, + lmpTeCounterDiscontinuityTime TimeStamp +} + +lmpTeInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets received for + this TE link." + ::= { lmpTeLinkPerfEntry 1 } + +lmpTeOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets transmitted out + for this TE link." + ::= { lmpTeLinkPerfEntry 2 } + +lmpTeBeginVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + + + + been received for this TE link." + ::= { lmpTeLinkPerfEntry 3 } + +lmpTeBeginVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been sent for this TE link." + ::= { lmpTeLinkPerfEntry 4 } + +lmpTeBeginVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that + have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 5 } + +lmpTeBeginVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 6 } + +lmpTeBeginVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 7 } + +lmpTeBeginVerifyNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 8 } + + + + +lmpTeBeginVerifyNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 9 } + +lmpTeEndVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been received for this TE link." + ::= { lmpTeLinkPerfEntry 10 } + +lmpTeEndVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been sent for this TE link." + ::= { lmpTeLinkPerfEntry 11 } + +lmpTeEndVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that + have been retransmitted over this control channel." + ::= { lmpTeLinkPerfEntry 12 } + +lmpTeEndVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 13 } + +lmpTeEndVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 14 } + +lmpTeTestStatusSuccessReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 15 } + +lmpTeTestStatusSuccessSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 16 } + +lmpTeTestStatusSuccessRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 17 } + +lmpTeTestStatusFailureReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 18 } + +lmpTeTestStatusFailureSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + + + + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 19 } + +lmpTeTestStatusFailureRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been retransmitted on this TE link." + ::= { lmpTeLinkPerfEntry 20 } + +lmpTeTestStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 21 } + +lmpTeTestStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 22 } + +lmpTeLinkSummaryReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 23 } + +lmpTeLinkSummarySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 24 } + + + + +lmpTeLinkSummaryRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been retransmitted over this control channel." + ::= { lmpTeLinkPerfEntry 25 } + +lmpTeLinkSummaryAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 26 } + +lmpTeLinkSummaryAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 27 } + +lmpTeLinkSummaryNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 28 } + +lmpTeLinkSummaryNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 29 } + +lmpTeChannelStatusReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 30 } + +lmpTeChannelStatusSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 31 } + +lmpTeChannelStatusRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 32 } + +lmpTeChannelStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusAck messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 33 } + +lmpTeChannelStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 34 } + +lmpTeChannelStatusReqReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + + + + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 35 } + +lmpTeChannelStatusReqSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 36 } + +lmpTeChannelStatusReqRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 37 } + +lmpTeChannelStatusRspReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 38 } + +lmpTeChannelStatusRspSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 39 } + +lmpTeCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this TE link's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this TE link of any Counter32 + + + + object contained in the lmpTeLinkPerfTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpTeLinkPerfEntry 40 } + +-- End of lmpTeLinkPerfTable + + +-- LMP Data Link Table + +lmpDataLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpDataLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the data-bearing links managed by the + LMP." + ::= { lmpObjects 16 } + +lmpDataLinkEntry OBJECT-TYPE + SYNTAX LmpDataLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry that represents + a data-bearing link. An ifEntry with an ifIndex must exist + before the corresponding lmpDataLinkEntry is created. + If an entry representing the data-bearing link is destroyed in + the ifTable, then so is the corresponding entry in the + lmpDataLinkTable. The administrative status value is + controlled from the ifEntry. The index to this table is also + used to get information in the componentLinkTable + of the TE-LINK-STD-MIB MIB module." + INDEX { ifIndex } + ::= { lmpDataLinkTable 1 } + +LmpDataLinkEntry ::= SEQUENCE { + lmpDataLinkType INTEGER, + lmpDataLinkAddressType InetAddressType, + lmpDataLinkIpAddr InetAddress, + lmpDataLinkRemoteIpAddress InetAddress, + lmpDataLinkRemoteIfId InterfaceIndexOrZero, + lmpDataLinkEncodingType TeLinkEncodingType, + lmpDataLinkActiveOperStatus INTEGER, + lmpDataLinkPassiveOperStatus INTEGER, + lmpDataLinkRowStatus RowStatus, + lmpDataLinkStorageType StorageType + + + +} + +lmpDataLinkType OBJECT-TYPE + SYNTAX INTEGER { + port(1), + componentLink(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies whether this data-bearing link is + a port or a component link. Component links are multiplex + capable, whereas ports are not multiplex capable." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 1 } + +lmpDataLinkAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the data-bearing link IP address + type. If the data-bearing link is unnumbered, the address + type must be set to unknown(0)." + ::= { lmpDataLinkEntry 2 } + +lmpDataLinkIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local Internet address for numbered links. The type + of this address is determined by the value of + lmpDataLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents + the local IP address associated with the data-bearing + link. For an unnumbered link, the local address is + of type unknown, and this object is set to the zero-length + string; the ifIndex object then identifies the + unnumbered address." + ::= { lmpDataLinkEntry 3 } + +lmpDataLinkRemoteIpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The remote Internet address for numbered data-bearing links. + The type of this address is determined by the + lmpDataLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents the + remote IP address associated with the data-bearing link. For + an unnumbered link, the remote address is of type unknown, + and this object is set to the zero-length string; the + lmpDataLinkRemoteIfId object then identifies the unnumbered + address. + + This information is either configured manually or + communicated by the remote node during the link verification + procedure." + ::= { lmpDataLinkEntry 4 } + +lmpDataLinkRemoteIfId OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Interface identifier of the remote end point. This + information is either configured manually or + communicated by the remote node during the link verification + procedure." + ::= { lmpDataLinkEntry 5 } + +lmpDataLinkEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encoding type of the data-bearing link." + REFERENCE + "Generalized MPLS Signaling Functional Description, RFC 3471." + ::= { lmpDataLinkEntry 6 } + +lmpDataLinkActiveOperStatus OBJECT-TYPE + SYNTAX INTEGER { + upAlloc(1), + upFree(2), + down(3), + testing(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this data-bearing link + + + + (active FSM)." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 7 } + +lmpDataLinkPassiveOperStatus OBJECT-TYPE + SYNTAX INTEGER { + upAlloc(1), + upFree(2), + down(3), + psvTst(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this data-bearing link + (passive FSM)." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 8 } + +lmpDataLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpDataLinkEntry 9 } + +lmpDataLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpDataLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpDataLinkEntry 10 } + +-- End of lmpDataLinkTable + + +-- LMP Data Link Performance Table + + + +lmpDataLinkPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpDataLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the data-bearing links LMP performance + counters." + ::= { lmpObjects 17 } + +lmpDataLinkPerfEntry OBJECT-TYPE + SYNTAX LmpDataLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the LMP performance counters for the data-bearing links. + lmpDataLinkDiscontinuityTime is used to indicate potential + discontinuity for all counter objects in this table." + INDEX { ifIndex } + ::= { lmpDataLinkPerfTable 1 } + +LmpDataLinkPerfEntry ::= SEQUENCE { + lmpDataLinkTestReceived Counter32, + lmpDataLinkTestSent Counter32, + lmpDataLinkActiveTestSuccess Counter32, + lmpDataLinkActiveTestFailure Counter32, + lmpDataLinkPassiveTestSuccess Counter32, + lmpDataLinkPassiveTestFailure Counter32, + lmpDataLinkDiscontinuityTime TimeStamp +} + +lmpDataLinkTestReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Test messages that have + been received on this data-bearing link." + ::= { lmpDataLinkPerfEntry 1 } + +lmpDataLinkTestSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Test messages that have + been sent on this data-bearing link." + ::= { lmpDataLinkPerfEntry 2 } + + + +lmpDataLinkActiveTestSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that were successful on the active side of this data- + bearing link." + ::= { lmpDataLinkPerfEntry 3 } + +lmpDataLinkActiveTestFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that failed on the active side of this data-bearing link." + ::= { lmpDataLinkPerfEntry 4 } + +lmpDataLinkPassiveTestSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that were successful on the passive side of this data- + bearing link." + ::= { lmpDataLinkPerfEntry 5 } + +lmpDataLinkPassiveTestFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that failed on the passive side of this data-bearing link." + ::= { lmpDataLinkPerfEntry 6 } + +lmpDataLinkDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this data-bearing link's counters suffered + a discontinuity. The relevant counters are the specific + instances associated with this data-bearing link of any + Counter32 object contained in the lmpDataLinkPerfTable. If + + + + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpDataLinkPerfEntry 7 } + +-- End of lmpDataLinkPerfTable + + +-- Notification Configuration + +lmpNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The LMP notification rate depends on the size of the network, + the type of links, the network configuration, the + reliability of the network, etc. + + When this MIB was designed, care was taken to minimize the + amount of notifications generated for LMP purposes. Wherever + possible, notifications are state driven, meaning that the + notifications are sent only when the system changes state. + The only notifications that are repeated and that could cause a + problem as far as congestion is concerned are the ones + associated with data link verification. + Without any considerations to handling of these + notifications, a problem may arise if the number of data + links is high. Since the data link verification notifications + can happen only once per data link per link verification + interval, the notification rate should be sustainable if one + chooses an appropriate link verification interval for a given + network configuration. For instance, a network of 100 nodes + with 5 links of 128 wavelengths each and a link verification + of 1 minute, where no more than 10% of the links failed at any + given time, would have 1 notification per second sent from + each node, or 100 notifications per second for the whole + network. The rest of the notifications are negligible + compared to this number. + + To alleviate the congestion problem, the + lmpNotificationMaxRate object can be used to implement a + throttling mechanism. It is also possible to enable/disable + certain type of notifications. + + This variable indicates the maximum number of + notifications issued per minute. If events occur + more rapidly, the implementation may simply fail to + + + + emit these notifications during that period or may + queue them until an appropriate time. A value of 0 + means that no throttling is applied and events may be + notified at the rate at which they occur. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + ::= { lmpObjects 18 } + +lmpLinkPropertyNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpTeLinkPropertyMismatch + and lmpDataLinkPropertyMismatch notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 19 } + +lmpUnprotectedNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpUnprotected notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 20 } + +lmpCcUpDownNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the generation of + lmpControlChannelUp and lmpControlChannelDown notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 21 } + + + + +lmpTeLinkNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpTeLinkDegraded and lmpTeLinkNotDegraded + notifications; otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 22 } + +lmpDataLinkNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpDataLinkVerificationFailure + notification; otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 23 } + + +-- Notifications + +-- Link Property Mismatch Notifications + +lmpTeLinkPropertyMismatch NOTIFICATION-TYPE + OBJECTS { teLinkRemoteIpAddr, + teLinkIncomingIfId } + STATUS current + DESCRIPTION + "This notification is generated when a TE link property + mismatch is detected on the node. The received remote TE link + ID of the misconfigured TE link is represented by either + teLinkRemoteIpAddr or teLinkIncomingIfId, depending on whether + the TE link is numbered or unnumbered. This notification + should not be sent unless lmpLinkPropertyNotificationsEnabled + is true(1). It is recommended that this notification be + reported only the first time a mismatch is detected. + Otherwise, for a given TE link, this notification can occur + no more than once per verification interval + (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 1 } + + + +lmpDataLinkPropertyMismatch NOTIFICATION-TYPE + OBJECTS { lmpDataLinkType, lmpDataLinkRemoteIfId } + STATUS current + DESCRIPTION + "This notification is generated when a data-bearing link + property mismatch is detected on the node. lmpDataLinkType + is used to identify the local identifiers associated with + the data link. (The data link interface index can be used + to determine the TE link interface index, as this + relationship is captured in the interface stack table.) + The remote entity interface ID is the remote entity + interface ID received in the LinkSummary message. + This notification should not be sent unless + lmpLinkPropertyNotificationsEnabled is true(1). It is + recommended that this notification be reported only the + first time a mismatch is detected. Otherwise, for a given + data link, this notification can occur no more than once + per verification interval (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 2 } + +-- Neighbor Notification + +lmpUnprotected NOTIFICATION-TYPE + OBJECTS { lmpCcNbrNodeId } + STATUS current + DESCRIPTION + "This notification is generated when there is more than one + control channel between LMP neighbors and the last redundant + control channel has failed. If the remaining operational + control channel fails, then there will be no more control + channels between the pair of nodes and all the TE links + between the pair of nodes, will go to degraded state. This + notification should not be sent unless + lmpUnprotectedNotificationsEnabled is set to true(1)." + ::= { lmpNotifications 3 } + +-- Control Channel Notifications + +lmpControlChannelUp NOTIFICATION-TYPE + OBJECTS { lmpCcAdminStatus, lmpCcOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a control + channel transitions to the up operational state. This + notification should not be sent unless + lmpCcUpDownNotificationsEnabled is true(1)." + ::= { lmpNotifications 4 } + + + + +lmpControlChannelDown NOTIFICATION-TYPE + OBJECTS { lmpCcAdminStatus, lmpCcOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a control channel + transitions out of the up operational state. This + notification should not be sent unless + lmpCcUpDownNotificationsEnabled is true(1)." + ::= { lmpNotifications 5 } + +-- TE Link Notification + +lmpTeLinkDegraded NOTIFICATION-TYPE + OBJECTS { lmpTeLinkOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a lmpTeLinkOperStatus + object for a TE link enters the degraded state. This + notification should not be sent unless + lmpTeLinkNotificationsEnabled is true(1)." + ::= { lmpNotifications 6 } + +lmpTeLinkNotDegraded NOTIFICATION-TYPE + OBJECTS { lmpTeLinkOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a lmpTeLinkOperStatus + object for a TE link leaves the degraded state. This + notification should not be sent unless + lmpTeLinkNotificationsEnabled is true(1)." + ::= { lmpNotifications 7 } + +-- Data-bearing Link Notification + +lmpDataLinkVerificationFailure NOTIFICATION-TYPE + OBJECTS { lmpDataLinkActiveOperStatus, + lmpDataLinkPassiveOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a data-bearing + link verification fails. This notification should not be sent + unless lmpDataLinkNotificationsEnabled is true(1). For a given + data link, this notification can occur no more than once per + verification interval (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 8 } + +-- End of notifications + + + + +-- Module compliance + +lmpCompliances + OBJECT IDENTIFIER ::= { lmpConformance 1 } + +lmpGroups + OBJECT IDENTIFIER ::= { lmpConformance 2 } + +lmpModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + configuration and monitoring of LMP MIB." + MODULE -- this module + + MANDATORY-GROUPS { lmpNodeGroup, + lmpControlChannelGroup, + lmpLinkPropertyCorrelationGroup, + lmpPerfGroup, + lmpTeLinkGroup, + lmpDataLinkGroup } + + GROUP lmpCcIsNotInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are not interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning false(2)." + + GROUP lmpCcIsInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning true(1)." + + GROUP lmpLinkVerificationGroup + DESCRIPTION + "This group is mandatory for devices that support + the link verification procedure." + + GROUP lmpNotificationGroup + DESCRIPTION + "This group is optional." + + -- lmpNbrTable + + OBJECT lmpNbrRowStatus + + + + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- lmpControlChannelTable + + OBJECT lmpCcRemoteAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for non-point-to-point configurations." + + OBJECT lmpCcRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "The size of the IP address depends on the address type." + + OBJECT lmpCcRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + OBJECT lmpCcOperStatus + SYNTAX INTEGER { up(1), down(2) } + DESCRIPTION + "A value of configSnd(3), configRcv(4), active(5), or + goingDown(6) need not be supported." + + -- lmpTeLinkTable + + OBJECT lmpTeLinkOperStatus + SYNTAX INTEGER { up(1), down(2), degraded(5) } + DESCRIPTION + "The testing(3) and init(4) state need not be supported." + + OBJECT lmpTeLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + + + -- lmpDataLinkTable + + OBJECT lmpDataLinkActiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of testing(4) need not be supported." + OBJECT lmpDataLinkPassiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of psvTst(4) need not be supported." + + OBJECT lmpDataLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + ::= { lmpCompliances 1 } + +lmpModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + monitoring of the LMP MIB." + MODULE -- this module + + -- The mandatory groups have to be implemented + -- by all LMP-enabled devices. However, they may all be supported + -- as read-only objects in the case where manual + -- configuration is not supported. + + MANDATORY-GROUPS { lmpNodeGroup, + lmpControlChannelGroup, + lmpLinkPropertyCorrelationGroup, + lmpPerfGroup, + lmpTeLinkGroup, + lmpDataLinkGroup } + + GROUP lmpCcIsNotInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are not interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning false(2)." + + GROUP lmpCcIsInterfaceGroup + + + + DESCRIPTION + "This group is mandatory for devices that support + control channels that are interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning true(1)." + + GROUP lmpLinkVerificationGroup + DESCRIPTION + "This group is mandatory for devices that support + the link verification procedure." + + GROUP lmpNotificationGroup + DESCRIPTION + "This group is optional." + + -- Scalars + + OBJECT lmpAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpGlobalLinkVerificationInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefaultMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefaultMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefaultMin + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefaultMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNotificationMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpNbrTable + + OBJECT lmpNbrRetransmitInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRetryLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRetransmitDelta + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpNbrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpControlChannelTable + + OBJECT lmpCcUnderlyingIfIndex + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT lmpCcIsIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcNbrNodeId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcRemoteAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for non-point-to-point configurations." + + OBJECT lmpCcRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "The size of the IP address depends on the address type." + + OBJECT lmpCcSetupRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcAuthentication + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalMin + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpCcOperStatus + SYNTAX INTEGER { up(1), down(2) } + DESCRIPTION + "A value of configSnd(3), configRcv(4), active(5), or + goingDown(6) need not be supported." + + OBJECT lmpCcStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpLinkVerificationTable + + OBJECT lmpLinkVerifyInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyDeadInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyAllLinks + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpTeLinkTable + + OBJECT lmpTeLinkNbrRemoteNodeId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + + + + procedure is enabled." + + OBJECT lmpTeLinkVerification + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkFaultManagement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkDwdm + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkOperStatus + SYNTAX INTEGER { up(1), down(2), degraded(5) } + DESCRIPTION + "The testing(3) and init(4) state need not be supported." + + OBJECT lmpTeLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpTeLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpTeLinkVerificationTable + + OBJECT lmpLinkVerifyTransmissionRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyWavelength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyRowStatus + SYNTAX RowStatus { active(1) } + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpLinkVerifyStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpDataLinkTable + + OBJECT lmpDataLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT lmpDataLinkIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "The size of the data-bearing link IP address depends on + the type of data-bearing link. Data-bearing link IP + address size is zero if the link is unnumbered, four if + the link IP address is IPv4, and sixteen if the link IP + address is IPv6." + + OBJECT lmpDataLinkRemoteIpAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + procedure is enabled." + + OBJECT lmpDataLinkRemoteIfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + procedure is enabled." + + OBJECT lmpDataLinkEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT lmpDataLinkActiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of testing(4) need not be supported." + + OBJECT lmpDataLinkPassiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of psvTst(4) need not be supported." + + OBJECT lmpDataLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpDataLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { lmpCompliances 2 } + +-- Units of conformance + +lmpNodeGroup OBJECT-GROUP + OBJECTS { lmpAdminStatus, + lmpOperStatus, + lmpNbrAdminStatus, + lmpNbrOperStatus, + lmpNbrRowStatus, + lmpNbrStorageType, + lmpUnprotectedNotificationsEnabled, + lmpNotificationMaxRate + } + STATUS current + DESCRIPTION + "Collection of objects that represent LMP node + configuration." + ::= { lmpGroups 1 } + +lmpControlChannelGroup OBJECT-GROUP + OBJECTS { + lmpNbrRetransmitInterval, + lmpNbrRetryLimit, + lmpNbrRetransmitDelta, + lmpNbrAdminStatus, + + + + lmpNbrOperStatus, + lmpNbrRowStatus, + lmpNbrStorageType, + lmpCcHelloIntervalDefault, + lmpCcHelloIntervalDefaultMin, + lmpCcHelloIntervalDefaultMax, + lmpCcHelloDeadIntervalDefault, + lmpCcHelloDeadIntervalDefaultMin, + lmpCcHelloDeadIntervalDefaultMax, + lmpCcNbrNodeId, + lmpCcRemoteId, + lmpCcRemoteAddressType, + lmpCcRemoteIpAddr, + lmpCcSetupRole, + lmpCcAuthentication, + lmpCcHelloInterval, + lmpCcHelloIntervalMin, + lmpCcHelloIntervalMax, + lmpCcHelloIntervalNegotiated, + lmpCcHelloDeadInterval, + lmpCcHelloDeadIntervalMin, + lmpCcHelloDeadIntervalMax, + lmpCcHelloDeadIntervalNegotiated, + lmpCcOperStatus, + lmpCcRowStatus, + lmpCcStorageType, + lmpCcUpDownNotificationsEnabled + } + STATUS current + DESCRIPTION + "Objects that can be used to configure LMP interface." + ::= { lmpGroups 2 } + +lmpCcIsInterfaceGroup OBJECT-GROUP + OBJECTS { lmpCcIsIf } + STATUS current + DESCRIPTION + "Objects that can be used to configure control channels + that are interfaces." + ::= { lmpGroups 3 } + +lmpCcIsNotInterfaceGroup OBJECT-GROUP + OBJECTS { lmpCcUnderlyingIfIndex, + lmpCcIsIf, + lmpCcLastChange, + lmpCcAdminStatus + } + STATUS current + + + + DESCRIPTION + "Objects that can be used to configure control channels + that are not interfaces." + ::= { lmpGroups 4 } + +lmpLinkPropertyCorrelationGroup OBJECT-GROUP + OBJECTS { lmpLinkPropertyNotificationsEnabled } + STATUS current + DESCRIPTION + "Collection of objects used to configure the link + property correlation procedure." + ::= { lmpGroups 5 } + +lmpLinkVerificationGroup OBJECT-GROUP + OBJECTS { lmpGlobalLinkVerificationInterval, + lmpLinkVerifyInterval, + lmpLinkVerifyDeadInterval, + lmpLinkVerifyTransportMechanism, + lmpLinkVerifyAllLinks, + lmpLinkVerifyTransmissionRate, + lmpLinkVerifyWavelength, + lmpLinkVerifyRowStatus, + lmpLinkVerifyStorageType, + lmpDataLinkNotificationsEnabled + } + STATUS current + DESCRIPTION + "Collection of objects that represent the link + verification procedure configuration." + ::= { lmpGroups 6 } + +lmpPerfGroup OBJECT-GROUP + OBJECTS { lmpCcInOctets, + lmpCcInDiscards, + lmpCcInErrors, + lmpCcOutOctets, + lmpCcOutDiscards, + lmpCcOutErrors, + lmpCcConfigReceived, + lmpCcConfigSent, + lmpCcConfigRetransmit, + lmpCcConfigAckReceived, + lmpCcConfigAckSent, + lmpCcConfigNackSent, + lmpCcConfigNackReceived, + lmpCcHelloReceived, + lmpCcHelloSent, + lmpCcBeginVerifyReceived, + + + + lmpCcBeginVerifySent, + lmpCcBeginVerifyRetransmit, + lmpCcBeginVerifyAckReceived, + lmpCcBeginVerifyAckSent, + lmpCcBeginVerifyNackReceived, + lmpCcBeginVerifyNackSent, + lmpCcEndVerifyReceived, + lmpCcEndVerifySent, + lmpCcEndVerifyRetransmit, + lmpCcEndVerifyAckReceived, + lmpCcEndVerifyAckSent, + lmpCcTestStatusSuccessReceived, + lmpCcTestStatusSuccessSent, + lmpCcTestStatusSuccessRetransmit, + lmpCcTestStatusFailureReceived, + lmpCcTestStatusFailureSent, + lmpCcTestStatusFailureRetransmit, + lmpCcTestStatusAckReceived, + lmpCcTestStatusAckSent, + lmpCcLinkSummaryReceived, + lmpCcLinkSummarySent, + lmpCcLinkSummaryRetransmit, + lmpCcLinkSummaryAckReceived, + lmpCcLinkSummaryAckSent, + lmpCcLinkSummaryNackReceived, + lmpCcLinkSummaryNackSent, + lmpCcChannelStatusReceived, + lmpCcChannelStatusSent, + lmpCcChannelStatusRetransmit, + lmpCcChannelStatusAckReceived, + lmpCcChannelStatusAckSent, + lmpCcChannelStatusReqReceived, + lmpCcChannelStatusReqSent, + lmpCcChannelStatusReqRetransmit, + lmpCcChannelStatusRspReceived, + lmpCcChannelStatusRspSent, + lmpCcCounterDiscontinuityTime, + lmpTeInOctets, + lmpTeOutOctets, + lmpTeBeginVerifyReceived, + lmpTeBeginVerifySent, + lmpTeBeginVerifyRetransmit, + lmpTeBeginVerifyAckReceived, + lmpTeBeginVerifyAckSent, + lmpTeBeginVerifyNackReceived, + lmpTeBeginVerifyNackSent, + lmpTeEndVerifyReceived, + lmpTeEndVerifySent, + + + + lmpTeEndVerifyRetransmit, + lmpTeEndVerifyAckReceived, + lmpTeEndVerifyAckSent, + lmpTeTestStatusSuccessReceived, + lmpTeTestStatusSuccessSent, + lmpTeTestStatusSuccessRetransmit, + lmpTeTestStatusFailureReceived, + lmpTeTestStatusFailureSent, + lmpTeTestStatusFailureRetransmit, + lmpTeTestStatusAckReceived, + lmpTeTestStatusAckSent, + lmpTeLinkSummaryReceived, + lmpTeLinkSummarySent, + lmpTeLinkSummaryRetransmit, + lmpTeLinkSummaryAckReceived, + lmpTeLinkSummaryAckSent, + lmpTeLinkSummaryNackReceived, + lmpTeLinkSummaryNackSent, + lmpTeChannelStatusReceived, + lmpTeChannelStatusSent, + lmpTeChannelStatusRetransmit, + lmpTeChannelStatusAckReceived, + lmpTeChannelStatusAckSent, + lmpTeChannelStatusReqReceived, + lmpTeChannelStatusReqSent, + lmpTeChannelStatusReqRetransmit, + lmpTeChannelStatusRspSent, + lmpTeChannelStatusRspReceived, + lmpTeCounterDiscontinuityTime, + lmpDataLinkTestReceived, + lmpDataLinkTestSent, + lmpDataLinkActiveTestSuccess, + lmpDataLinkActiveTestFailure, + lmpDataLinkPassiveTestSuccess, + lmpDataLinkPassiveTestFailure, + lmpDataLinkDiscontinuityTime + } + STATUS current + DESCRIPTION + "Collection of objects used to provide performance + information about LMP interfaces and data-bearing links." + ::= { lmpGroups 7 } + +lmpTeLinkGroup OBJECT-GROUP + OBJECTS { lmpTeLinkNbrRemoteNodeId, + lmpTeLinkVerification, + lmpTeLinkFaultManagement, + lmpTeLinkDwdm, + + + + lmpTeLinkOperStatus, + lmpTeLinkRowStatus, + lmpTeLinkStorageType, + lmpTeLinkNotificationsEnabled + } + STATUS current + DESCRIPTION + "Objects that can be used to configure TE links." + ::= { lmpGroups 8 } + +lmpDataLinkGroup OBJECT-GROUP + OBJECTS { lmpDataLinkType, + lmpDataLinkAddressType, + lmpDataLinkIpAddr, + lmpDataLinkRemoteIpAddress, + lmpDataLinkRemoteIfId, + lmpDataLinkEncodingType, + lmpDataLinkActiveOperStatus, + lmpDataLinkPassiveOperStatus, + lmpDataLinkRowStatus, + lmpDataLinkStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that represent data-bearing link + configuration." + ::= { lmpGroups 9 } + +lmpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { lmpTeLinkPropertyMismatch, + lmpDataLinkPropertyMismatch, + lmpUnprotected, + lmpControlChannelUp, + lmpControlChannelDown, + lmpTeLinkDegraded, + lmpTeLinkNotDegraded, + lmpDataLinkVerificationFailure } + STATUS current + DESCRIPTION + "Set of notifications defined in this module." + ::= { lmpGroups 10 } + +-- End of LMP-MIB +END diff --git a/mibs/ietf/MALLOC-MIB b/mibs/ietf/MALLOC-MIB new file mode 100644 index 0000000..b899830 --- /dev/null +++ b/mibs/ietf/MALLOC-MIB @@ -0,0 +1,1452 @@ +MALLOC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, mib-2, + Unsigned32, Gauge32, Counter32 FROM SNMPv2-SMI + + RowStatus, TruthValue, StorageType FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + + InetAddress, InetAddressType FROM INET-ADDRESS-MIB + + LanguageTag FROM IPMROUTE-STD-MIB + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + IANAscopeSource, IANAmallocRangeSource FROM IANA-MALLOC-MIB; + +mallocMIB MODULE-IDENTITY + LAST-UPDATED "200306090000Z" -- June 9, 2003 + ORGANIZATION "IETF MALLOC Working Group" + CONTACT-INFO + " WG-EMail: malloc@catarina.usc.edu + Subscribe: malloc-request@catarina.usc.edu + Archive: catarina.usc.edu/pub/multicast/malloc/ + + Co-chair/editor: + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052 + EMail: dthaler@microsoft.com + + Co-chair: + Steve Hanna + Sun Microsystems, Inc. + One Network Drive + Burlington, MA 01803 + EMail: steve.hanna@sun.com" + DESCRIPTION + "The MIB module for management of multicast address + allocation. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3559; see the RFC itself for + full legal notices." + + + + -- revision log + + REVISION "200306090000Z" -- June 9, 2003 + DESCRIPTION + "Initial version, published as RFC 3559." + ::= { mib-2 101 } + +mallocMIBObjects OBJECT IDENTIFIER ::= { mallocMIB 1 } + +malloc OBJECT IDENTIFIER ::= { mallocMIBObjects 1 } + +madcap OBJECT IDENTIFIER ::= { mallocMIBObjects 2 } + +-- +-- scalars +-- + +mallocCapabilities OBJECT-TYPE + SYNTAX BITS { + startTime(0), + serverMobility(1), + retryAfter(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the capabilities which a client or + server supports. The startTime bit indicates that + allocations with a future start time are supported. The + serverMobility bit indicates that allocations can be renewed + or released from a server other than the one granting the + original allocation. The retryAfter bit indicates support + for a waiting state where the client may check back at a + later time to get the status of its request." + ::= { malloc 1 } + +-- +-- the Scope Table +-- + +mallocScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocScopeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on multicast + scopes from which addresses may be allocated. Entries in + this table may be dynamically discovered via some other + + + + protocol, such as MZAP, or may be statically configured, + such as in an isolated network environment. Each scope is + associated with a range of multicast addresses, and ranges + for different rows must be disjoint." + ::= { malloc 2 } + +mallocScopeEntry OBJECT-TYPE + SYNTAX MallocScopeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular multicast scope." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress } + ::= { mallocScopeTable 1 } + +MallocScopeEntry ::= SEQUENCE { + mallocScopeAddressType InetAddressType, + mallocScopeFirstAddress InetAddress, + mallocScopeLastAddress InetAddress, + mallocScopeHopLimit Unsigned32, + mallocScopeStatus RowStatus, + mallocScopeSource IANAscopeSource, + mallocScopeDivisible TruthValue, + mallocScopeServerAddressType InetAddressType, + mallocScopeServerAddress InetAddress, + mallocScopeSSM TruthValue, + mallocScopeStorage StorageType +} + +mallocScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the addresses in the multicast scope range. + Legal values correspond to the subset of address families + for which multicast address allocation is supported." + ::= { mallocScopeEntry 1 } + +mallocScopeFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the multicast scope range. The type + of this address is determined by the value of the + mallocScopeAddressType object." + + + + ::= { mallocScopeEntry 2 } + +mallocScopeLastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The last address in the multicast scope range. The type of + this address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocScopeEntry 3 } + +mallocScopeHopLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default IPv4 TTL or IPv6 hop limit which applications + should use for groups within the scope." + DEFVAL { 255 } + ::= { mallocScopeEntry 4 } + +mallocScopeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocScopeEntry 5 } + +mallocScopeSource OBJECT-TYPE + SYNTAX IANAscopeSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The method by which this entry was learned." + ::= { mallocScopeEntry 6 } + +mallocScopeDivisible OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If false, the server may allocate addresses out of the + entire range. If true, the server must not allocate + + + + addresses out of the entire range, but may only allocate + addresses out of a subrange learned via another method. + Creating or deleting a scope which is not divisible has the + side effect of creating or deleting the corresponding entry + in the mallocAllocRangeTable. Deleting a scope which is + divisible has the side effect of deleting any corresponding + entries in the mallocAllocRangeTable, and the + mallocRequestTable." + DEFVAL { false } + ::= { mallocScopeEntry 7 } + +mallocScopeServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the address of a multicast address allocation + server to which a request may be sent." + DEFVAL { unknown } + ::= { mallocScopeEntry 8 } + +mallocScopeServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address of a multicast address allocation server to + which a request may be sent. The default value is an zero- + length address, indicating that no server is known. The + type of this address is determined by the value of the + mallocScopeServerAddressType object." + DEFVAL { ''h } -- the empty string + ::= { mallocScopeEntry 9 } + +mallocScopeSSM OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the scope is a Source-Specific Multicast + (SSM) range." + DEFVAL { false } + ::= { mallocScopeEntry 10 } + +mallocScopeStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocScopeEntry 11 } + +-- +-- the Scope Name Table +-- + +mallocScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on multicast + scope names. Entries in this table may be dynamically + discovered via some other protocol, such as MZAP, or may be + statically configured, such as in an isolated network + environment." + ::= { malloc 3 } + +mallocScopeNameEntry OBJECT-TYPE + SYNTAX MallocScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular multicast scope name." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress, + IMPLIED mallocScopeNameLangName } + ::= { mallocScopeNameTable 1 } + +MallocScopeNameEntry ::= SEQUENCE { + mallocScopeNameLangName LanguageTag, + mallocScopeNameScopeName SnmpAdminString, + mallocScopeNameDefault TruthValue, + mallocScopeNameStatus RowStatus, + mallocScopeNameStorage StorageType +} + +mallocScopeNameLangName OBJECT-TYPE + SYNTAX LanguageTag (SIZE(1..94)) + MAX-ACCESS not-accessible + STATUS current + + + + + + DESCRIPTION + "The RFC 3066 language tag for the language of the scope + name." + ::= { mallocScopeNameEntry 1 } + +mallocScopeNameScopeName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. If the scope is an IPv4 scope, and no name is + specified, the default value of this object should be the + string 239.x.x.x/y with x and y replaced appropriately to + describe the address and mask length associated with the + scope. If the scope is an IPv6 scope, and no name is + specified, the default value of this object should + generically describe the scope level (e.g., site)." + ::= { mallocScopeNameEntry 2 } + +mallocScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + associated language should be used by applications if no + name is available in a desired language." + DEFVAL { false } + ::= { mallocScopeNameEntry 3 } + +mallocScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocScopeNameEntry 4 } + +mallocScopeNameStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocScopeNameEntry 5 } + +-- +-- the Allocation Range Table +-- +mallocAllocRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocAllocRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on subranges + of addresses from which the device may allocate addresses, + if it is a MAAS. If the device is a Prefix Coordinator, any + ranges which the device is advertising to MAAS's will be in + this table. Note that the device may be both a MAAS and a + Prefix Coordinator. + + Address ranges for different rows must be disjoint, and must + be contained with the address range of the corresponding row + of the mallocScopeTable. + + Deleting an allocation range has the side effect of deleting + any entries within that range from the mallocAddressTable." + ::= { malloc 4 } + +mallocAllocRangeEntry OBJECT-TYPE + SYNTAX MallocAllocRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular allocation range." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress, + mallocAllocRangeFirstAddress } + ::= { mallocAllocRangeTable 1 } + +MallocAllocRangeEntry ::= SEQUENCE { + mallocAllocRangeFirstAddress InetAddress, + mallocAllocRangeLastAddress InetAddress, + mallocAllocRangeStatus RowStatus, + mallocAllocRangeSource IANAmallocRangeSource, + mallocAllocRangeLifetime Unsigned32, + mallocAllocRangeMaxLeaseAddrs Unsigned32, + + + + mallocAllocRangeMaxLeaseTime Unsigned32, + mallocAllocRangeNumAllocatedAddrs Gauge32, + mallocAllocRangeNumOfferedAddrs Gauge32, + mallocAllocRangeNumWaitingAddrs Gauge32, + mallocAllocRangeNumTryingAddrs Gauge32, + mallocAllocRangeAdvertisable TruthValue, + mallocAllocRangeTotalAllocatedAddrs Gauge32, + mallocAllocRangeTotalRequestedAddrs Gauge32, + mallocAllocRangeStorage StorageType +} + +mallocAllocRangeFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the allocation range. The type of + this address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocAllocRangeEntry 1 } + +mallocAllocRangeLastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The last address in the allocation range. The type of this + address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocAllocRangeEntry 2 } + +mallocAllocRangeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocAllocRangeEntry 3 } + +mallocAllocRangeSource OBJECT-TYPE + SYNTAX IANAmallocRangeSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The means by which this entry was learned." + + + + ::= { mallocAllocRangeEntry 4 } + +mallocAllocRangeLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds remaining in the lifetime of the + (sub)range out of which addresses are being allocated. A + value of 0 indicates that the range is not subject to + aging." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 5 } + +mallocAllocRangeMaxLeaseAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of addresses which the server is willing + to grant for each future request in this range. A value of + 0 means that no specific limit is enforced, as long as the + server has valid addresses to allocate." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 6 } + +mallocAllocRangeMaxLeaseTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum lifetime which the server will grant for future + requests in this range. A value of 0 means that no + additional limit is enforced beyond that of + mallocAllocRangeLifetime." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 7 } + +mallocAllocRangeNumAllocatedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + allocated. This value can be used to determine the current + address space utilization within the scoped range. This + + + + should match the total number of addresses for this scope + covered by entries in the mallocAddressTable." + ::= { mallocAllocRangeEntry 8 } + +mallocAllocRangeNumOfferedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + offered. This number should match the sum of + mallocRequestNumAddrs for all entries in the + mallocRequestTable in the offered state. Together with + mallocAllocRangeNumAllocatedAddrs and + mallocAllocRangeNumTryingAddrs, this can be used to + determine the address space utilization within the scoped + range in the immediate future." + ::= { mallocAllocRangeEntry 9 } + +mallocAllocRangeNumWaitingAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + requested, but whose state is waiting, while the server + attempts to acquire more address space." + ::= { mallocAllocRangeEntry 10 } + +mallocAllocRangeNumTryingAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the scope covered by entries in + the mallocRequestTable in the trying state." + ::= { mallocAllocRangeEntry 11 } + +mallocAllocRangeAdvertisable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is true if the range is eligible + to be advertised to other MAASs. When the row is first + created, the default value of this object is true if the + scope is divisible, and is false otherwise." + ::= { mallocAllocRangeEntry 12 } + + + +mallocAllocRangeTotalAllocatedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The approximate number of addresses in the range which have + been allocated by any MAAS, as determined by a Prefix + Coordinator. This object need only be present if + mallocAllocRangeAdvertisable is true. If the number is + unknown, a value of 0 may be reported." + ::= { mallocAllocRangeEntry 13 } + +mallocAllocRangeTotalRequestedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The approximate number of addresses in the range for which + there is potential demand among MAASs, as determined by a + Prefix Coordinator. This object need only be present if + mallocAllocRangeAdvertisable is true. If the number is + unknown, a value of 0 may be reported." + ::= { mallocAllocRangeEntry 14 } + +mallocAllocRangeStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocAllocRangeEntry 15 } + +-- +-- the Request Table +-- + +mallocRequestTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocRequestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on allocation + requests, whether allocated or in progress. This table may + also be used to determine which clients are responsible for + high address space utilization within a given scope. + + + + Entries in this table reflect requests dynamically received + by an address allocation protocol." + ::= { malloc 5 } + +mallocRequestEntry OBJECT-TYPE + SYNTAX MallocRequestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular allocation request." + INDEX { mallocRequestId } + ::= { mallocRequestTable 1 } + +MallocRequestEntry ::= SEQUENCE { + mallocRequestId Unsigned32, + mallocRequestScopeAddressType InetAddressType, + mallocRequestScopeFirstAddress InetAddress, + mallocRequestStartTime Unsigned32, + mallocRequestEndTime Unsigned32, + mallocRequestNumAddrs Unsigned32, + mallocRequestState INTEGER, + mallocRequestClientAddressType InetAddressType, + mallocRequestClientAddress InetAddress, + mallocRequestServerAddressType InetAddressType, + mallocRequestServerAddress InetAddress, + mallocRequestLeaseIdentifier OCTET STRING +} + +mallocRequestId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary value identifying this row." + ::= { mallocRequestEntry 1 } + +mallocRequestScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the first address of the scope to which the + request applies. Legal values correspond to the subset of + address families for which multicast address allocation is + supported." + ::= { mallocRequestEntry 2 } + + + + +mallocRequestScopeFirstAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The first address of the scope to which the request + applies. This must match mallocScopeFirstAddress for some + row in the mallocScopeTable. The type of this address is + determined by the value of the mallocRequestScopeAddressType + object." + ::= { mallocRequestEntry 3 } + +mallocRequestStartTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining before the start time of + the request. A value of 0 means that the allocation is + currently in effect." + ::= { mallocRequestEntry 4 } + +mallocRequestEndTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining before the end time of the + request." + ::= { mallocRequestEntry 5 } + +mallocRequestNumAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses requested. If the addresses have + been allocated, this number should match the total number of + addresses for this request covered by entries in the + mallocAddressTable." + ::= { mallocRequestEntry 6 } + +mallocRequestState OBJECT-TYPE + SYNTAX INTEGER { + allocated(1), + offered(2), -- tentatively allocated + + + + waiting(3), -- waiting for more space + trying(4) -- working on allocating + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the request. A value of allocated(1) + indicates that one or more entries for this request are + present in the mallocAddressTable. A value of offered(2) + indicates that addresses have been offered to the client + (e.g. via a MADCAP OFFER message), but the allocation has + not been committed. A value of waiting(3) indicates that + the allocation is blocked while the server attempts to + acquire more space from which it can allocate addresses. A + value of trying(4) means that no addresses have been offered + to the client, but that an attempt to allocate is in + progress." + ::= { mallocRequestEntry 7 } + +mallocRequestClientAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the address of the client that (last) requested + this allocation." + ::= { mallocRequestEntry 8 } + +mallocRequestClientAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the client that (last) requested this + allocation. The type of this address is determined by the + value of the mallocRequestClientAddressType object." + ::= { mallocRequestEntry 9 } + +mallocRequestServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the address of the server to which the request + was (last) sent." + ::= { mallocRequestEntry 10 } + + + + + +mallocRequestServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the server to which the request was (last) + sent. The type of this address is determined by the value + of the mallocRequestServerAddressType object." + ::= { mallocRequestEntry 11 } + +mallocRequestLeaseIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Lease Identifier of this request. If the allocation + mechanism in use does not use Lease Identifiers, then the + value is a 0-length string." + ::= { mallocRequestEntry 12 } + +-- +-- the Address Table +-- + +mallocAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on blocks of + allocated addresses. This table may be used to map a given + multicast group address to the associated request." + ::= { malloc 6 } + +mallocAddressEntry OBJECT-TYPE + SYNTAX MallocAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular block of allocated addresses. The block of + addresses covered by each entry in this table must fall + within a range corresponding to an entry in the + mallocAllocRangeTable." + INDEX { mallocAddressAddressType, mallocAddressFirstAddress } + ::= { mallocAddressTable 1 } + + + + + +MallocAddressEntry ::= SEQUENCE { + mallocAddressAddressType InetAddressType, + mallocAddressFirstAddress InetAddress, + mallocAddressNumAddrs Unsigned32, + mallocAddressRequestId Unsigned32 +} + +mallocAddressAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the first address in the allocated block. + Legal values correspond to the subset of address families + for which multicast address allocation is supported." + ::= { mallocAddressEntry 1 } + +mallocAddressFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the allocated block. The type of this + address is determined by the value of the + mallocAddressAddressType object." + ::= { mallocAddressEntry 2 } + +mallocAddressNumAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the allocated block." + ::= { mallocAddressEntry 3 } + +mallocAddressRequestId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the request which caused this block of + addresses to be allocated. This value must match the value + of mallocRequestId for some entry in the + mallocRequestTable." + ::= { mallocAddressEntry 4 } + +-- +-- MADCAP-specific objects + + + +-- + +madcapConfig OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Group of objects that count various MADCAP events." + ::= { madcap 1 } + +madcapConfigExtraAllocationTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of extra time on either side of a lease which + the MADCAP server allocates to allow for clock skew among + clients." + ::= { madcapConfig 1 } + +madcapConfigNoResponseDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP client allows for receiving a + response from a MADCAP server." + ::= { madcapConfig 2 } + +madcapConfigOfferHold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP server will reserve an + address for after sending an OFFER message in anticipation + of receiving a REQUEST message." + ::= { madcapConfig 3 } + +madcapConfigResponseCacheInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP server uses to detect + duplicate messages." + + + + ::= { madcapConfig 4 } + +madcapConfigClockSkewAllowance OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The clock skew threshold used by the MADCAP server to + generate Excessive Clock Skew errors." + ::= { madcapConfig 5 } + +madcapCounters OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A group of objects that count various MADCAP events." + ::= { madcap 2 } + +madcapTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transactions for which the MADCAP + server has detected an error of any type, regardless of + whether the server ignored the request or generated a NAK." + ::= { madcapCounters 1 } + +madcapRequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid requests for which the MADCAP server + could not complete an allocation, regardless of whether NAKs + were sent. This corresponds to the Valid Request Could Not + Be Completed error code in MADCAP." + ::= { madcapCounters 2 } + +madcapInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid requests received by the MADCAP + server, regardless of whether NAKs were sent. This + corresponds to the Invalid Request error code in MADCAP." + ::= { madcapCounters 3 } + + + +madcapExcessiveClockSkews OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests received by the MADCAP server with + an excessive clock skew, regardless of whether NAKs were + sent. This corresponds to the Excessive Clock Skew error + code in MADCAP." + ::= { madcapCounters 4 } + +madcapBadLeaseIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests received by the MADCAP server with + an unrecognized Lease Identifier, regardless of whether NAKs + were sent. This corresponds to the Lease Identifier Not + Recognized error code in MADCAP." + ::= { madcapCounters 5 } + +madcapDiscovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of DISCOVER messages received by the MADCAP + server." + ::= { madcapCounters 6 } + +madcapInforms OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of INFORM messages received by the MADCAP + server." + ::= { madcapCounters 7 } + +madcapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of REQUEST messages received by the MADCAP + server." + ::= { madcapCounters 8 } + + + +madcapRenews OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RENEW messages received by the MADCAP + server." + ::= { madcapCounters 9 } + +madcapReleases OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RELEASE messages received by the MADCAP + server." + ::= { madcapCounters 10 } + + +-- conformance information + +mallocConformance OBJECT IDENTIFIER ::= { mallocMIB 2 } +mallocCompliances OBJECT IDENTIFIER ::= { mallocConformance 1 } +mallocGroups OBJECT IDENTIFIER ::= { mallocConformance 2 } + +-- compliance statements + +mallocServerReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for multicast address allocation + servers implementing the MALLOC MIB without support for + read-create (i.e., in read-only mode). Such a server can + then be monitored but can not be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocServerGroup } + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mallocScopeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeDivisible + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeSSM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameScopeName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + + + OBJECT mallocAllocRangeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeMaxLeaseAddrs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeMaxLeaseTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP madcapServerGroup + DESCRIPTION + "This group is mandatory for servers which implement the + MADCAP client-server protocol." + + OBJECT madcapConfigExtraAllocationTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT madcapConfigOfferHold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT madcapConfigResponseCacheInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + + + OBJECT madcapConfigClockSkewAllowance + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 1 } + +mallocClientReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for clients implementing the + MALLOC MIB without support for read-create (i.e., in read- + only mode). Such clients can then be monitored but can not + be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocClientGroup } + + GROUP mallocClientScopeGroup + DESCRIPTION + "This group is mandatory for clients which maintain a list + of multicast scopes." + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeServerAddressType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeServerAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + OBJECT mallocScopeSSM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP madcapClientGroup + DESCRIPTION + "This group is mandatory for clients which implement the + MADCAP client-server protocol." + + OBJECT madcapConfigNoResponseDelay + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 2 } + +mallocPrefixCoordinatorReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for prefix coordinators + implementing the MALLOC MIB without support for read-create + (i.e., in read-only mode). Such devices can then be + monitored but can not be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocPrefixCoordinatorGroup } + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeDivisible + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + OBJECT mallocAllocRangeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeAdvertisable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 3 } + +mallocServerFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for multicast address allocation + servers implementing the MALLOC MIB with support for read- + create. Such servers can then be both monitored and + configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocServerGroup } + + GROUP madcapServerGroup + DESCRIPTION + "This group is mandatory for servers which implement the + MADCAP client-server protocol." + ::= { mallocCompliances 4 } + +mallocClientFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts implementing the MALLOC + MIB with support for read-create. Such clients can then be + both monitored and configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocClientGroup } + + + + + GROUP mallocClientScopeGroup + DESCRIPTION + "This group is mandatory for clients which maintain a list + of multicast scopes." + + GROUP madcapClientGroup + DESCRIPTION + "This group is mandatory for clients which implement the + MADCAP client-server protocol." + ::= { mallocCompliances 5 } + +mallocPrefixCoordinatorFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for prefix coordinators + implementing the MALLOC MIB with support for read-create. + Such devices can then be both monitored and configured with + this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocPrefixCoordinatorGroup } + ::= { mallocCompliances 6 } + +-- units of conformance + +mallocBasicGroup OBJECT-GROUP + OBJECTS { mallocCapabilities, mallocRequestScopeAddressType, + mallocRequestScopeFirstAddress, + mallocRequestStartTime, + mallocRequestEndTime, mallocRequestNumAddrs, + mallocRequestState, + mallocAddressNumAddrs, mallocAddressRequestId + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of IP + multicast address allocation." + ::= { mallocGroups 1 } + +mallocServerGroup OBJECT-GROUP + OBJECTS { mallocScopeLastAddress, mallocScopeHopLimit, + mallocScopeSSM, mallocScopeStatus, mallocScopeStorage, + mallocAllocRangeLastAddress, mallocAllocRangeLifetime, + mallocAllocRangeNumAllocatedAddrs, + mallocAllocRangeNumOfferedAddrs, + mallocAllocRangeNumWaitingAddrs, + mallocAllocRangeNumTryingAddrs, + mallocAllocRangeMaxLeaseAddrs, + + + + mallocAllocRangeMaxLeaseTime, mallocAllocRangeSource, + mallocAllocRangeStatus, mallocAllocRangeStorage, + mallocScopeDivisible, mallocScopeSource, + mallocScopeNameScopeName, mallocScopeNameDefault, + mallocScopeNameStatus, mallocScopeNameStorage, + mallocRequestClientAddressType, + mallocRequestClientAddress + } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + address allocation in servers." + ::= { mallocGroups 2 } + +mallocClientGroup OBJECT-GROUP + OBJECTS { mallocRequestServerAddressType, + mallocRequestServerAddress } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + address allocation in clients." + ::= { mallocGroups 3 } + +madcapServerGroup OBJECT-GROUP + OBJECTS { madcapConfigClockSkewAllowance, + madcapConfigExtraAllocationTime, madcapConfigOfferHold, + madcapConfigResponseCacheInterval, + madcapTotalErrors, madcapRequestsDenied, + madcapInvalidRequests, madcapBadLeaseIds, + madcapExcessiveClockSkews, madcapDiscovers, + madcapInforms, madcapRequests, + madcapRenews, madcapReleases } + STATUS current + DESCRIPTION + "A collection of objects providing management of MADCAP + servers." + ::= { mallocGroups 4 } + +madcapClientGroup OBJECT-GROUP + OBJECTS { mallocRequestLeaseIdentifier, + madcapConfigNoResponseDelay } + STATUS current + DESCRIPTION + "A collection of objects providing management of MADCAP + clients." + ::= { mallocGroups 5 } + + + + + +mallocClientScopeGroup OBJECT-GROUP + OBJECTS { mallocScopeLastAddress, mallocScopeHopLimit, + mallocScopeStatus, mallocScopeStorage, mallocScopeSource, + mallocScopeServerAddressType, mallocScopeServerAddress, + mallocScopeSSM, mallocScopeNameScopeName, + mallocScopeNameDefault, mallocScopeNameStatus, + mallocScopeNameStorage } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + scope information in clients." + ::= { mallocGroups 6 } + +mallocPrefixCoordinatorGroup OBJECT-GROUP + OBJECTS { mallocAllocRangeLastAddress, mallocAllocRangeLifetime, + mallocAllocRangeStatus, mallocAllocRangeStorage, + mallocAllocRangeSource, + mallocAllocRangeTotalAllocatedAddrs, + mallocAllocRangeTotalRequestedAddrs, + mallocAllocRangeAdvertisable, mallocScopeLastAddress, + mallocScopeDivisible, mallocScopeSource } + STATUS current + DESCRIPTION + "A collection of objects for managing Prefix Coordinators." + ::= { mallocGroups 7 } +END diff --git a/mibs/ietf/MAU-MIB b/mibs/ietf/MAU-MIB new file mode 100644 index 0000000..6279e12 --- /dev/null +++ b/mibs/ietf/MAU-MIB @@ -0,0 +1,1837 @@ +MAU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, Integer32, Counter64, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI -- RFC 2578 + TruthValue, AutonomousType, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- RFC 2579 + OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + InterfaceIndex + FROM IF-MIB -- RFC 2863 + IANAifMauTypeListBits, IANAifMauMediaAvailable, + IANAifMauAutoNegCapBits, IANAifJackType + FROM IANA-MAU-MIB + -- http://www.iana.org/assignments/ianamau-mib + ; + + mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" -- April 21, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + + REVISION "200704210000Z" -- April 21, 2007 + DESCRIPTION "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + + REVISION "199908240400Z" -- August 24, 1999 + DESCRIPTION "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + + REVISION "199710310000Z" -- October 31, 1997 + DESCRIPTION "Version published as RFC 2239." + + REVISION "199309300000Z" -- September 30, 1993 + DESCRIPTION "Initial version, published as RFC 1515." + + ::= { snmpDot3MauMgt 6 } + + snmpDot3MauMgt OBJECT IDENTIFIER ::= { mib-2 26 } + + -- Textual Conventions + + JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { + other(1), + rj45(2), + rj45S(3), -- rj45 shielded + db9(4), + bnc(5), + fAUI(6), -- female aui + + + + mAUI(7), -- male aui + fiberSC(8), + fiberMIC(9), + fiberST(10), + telco(11), + mtrj(12), -- fiber MT-RJ + hssdc(13), -- fiber channel style-2 + fiberLC(14) + } + + dot3RpMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 1 } + dot3IfMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 2 } + dot3BroadMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 3 } + + -- OIDs under the following branch are reserved for + -- the IANA-MAU-MIB to assign as MAU type values: + -- { snmpDot3MauMgt 4 } + + dot3IfMauAutoNegGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 5 } + + -- the following OID is the MODULE-IDENTITY value + -- for this MIB module: { snmpDot3MauMgt 6 } + + -- + -- The Basic Repeater MAU Table + -- + + rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + + rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, + rpMauPortIndex, + + + + rpMauIndex + } + ::= { rpMauTable 1 } + + RpMauEntry ::= + SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 + } + + rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + + rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE "RFC 2108, rptrPortIndex." + + + + ::= { rpMauEntry 2 } + + rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + + rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + + rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + operational(3), + standby(4), + shutdown(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + + rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + + rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + + rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + noJabber(3), + jabbering(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + + rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + + rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + + -- The rpJackTable applies to MAUs attached to repeaters + -- which have one or more external jacks (connectors). + + + + rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + + rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpJackIndex + } + ::= { rpJackTable 1 } + + RpJackEntry ::= + SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType + } + + rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + + rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + + -- + -- The Basic Interface MAU Table + -- + + + + + ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + + ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, + ifMauIndex + } + ::= { ifMauTable 1 } + + IfMauEntry ::= + SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 + } + + ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + + + + + ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + + ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + + ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + operational(3), + standby(4), + shutdown(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + + ifMauMediaAvailable OBJECT-TYPE + + + + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + + ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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." + REFERENCE "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + + ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + noJabber(3), + jabbering(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + + ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + + ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + + ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + + ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + + + + + ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + + ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + + ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + + -- The ifJackTable applies to MAUs attached to interfaces + -- which have one or more external jacks (connectors). + + ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + + ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, + ifMauIndex, + ifJackIndex + } + ::= { ifJackTable 1 } + + IfJackEntry ::= + SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType + } + + ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + + ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + + + + -- + -- The MAU Auto-Negotiation Table + -- + + ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + + ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, + ifMauIndex + } + ::= { ifMauAutoNegTable 1 } + + IfMauAutoNegEntry ::= + SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER + } + + + + + ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + + ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { + detected(1), + notdetected(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + + ifMauAutoNegConfig OBJECT-TYPE + + + + SYNTAX INTEGER { + other(1), + configuring(2), + complete(3), + disabled(4), + parallelDetectFail(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + + ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + + ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + + ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + + ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { + restart(1), + norestart(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + + ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + + + + + REFERENCE "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + + ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + + ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + + ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + offline(2), + + + + linkFailure(3), + autoNegError(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + + ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + offline(2), + linkFailure(3), + autoNegError(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + + + -- + -- The Basic Broadband MAU Table + -- + + broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + + broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, + broadMauIndex + } + ::= { broadMauBasicTable 1 } + + BroadMauBasicEntry ::= + SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 + } + + broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + + broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + + broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + single(2), + dual(3) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + + broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + + broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + + -- Notifications for use by 802.3 MAUs + + snmpDot3MauTraps OBJECT IDENTIFIER ::= { snmpDot3MauMgt 0 } + + rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + + ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + + REFERENCE "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + + -- Conformance information + + mauModConf + OBJECT IDENTIFIER ::= { mauMod 1 } + mauModCompls + OBJECT IDENTIFIER ::= { mauModConf 1 } + mauModObjGrps + OBJECT IDENTIFIER ::= { mauModConf 2 } + mauModNotGrps + OBJECT IDENTIFIER ::= { mauModConf 3 } + + -- Object groups + + + + + mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpMauType, + rpMauStatus, + rpMauMediaAvailable, + rpMauMediaAvailableStateExits, + rpMauJabberState, + rpMauJabberingStateEnters + } + STATUS current + DESCRIPTION "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + + mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + + mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + + mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, + ifMauIndex, + ifMauType, + ifMauStatus, + ifMauMediaAvailable, + ifMauMediaAvailableStateExits, + ifMauJabberState, + ifMauJabberingStateEnters + } + STATUS current + DESCRIPTION "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + + + + ::= { mauModObjGrps 4 } + + mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, + ifMauTypeList, + ifMauDefaultType, + ifMauAutoNegSupported + } + + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + + mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + + mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, + ifMauAutoNegCapReceived, + ifMauAutoNegRestart + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + + mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, + broadMauIndex, + + + + broadMauXmtRcvSplitType, + broadMauXmtCarrierFreq, + broadMauTranslationFreq + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + + mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, + ifMauTypeListBits, + ifMauDefaultType, + ifMauAutoNegSupported + } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + + mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, + ifMauAutoNegRestart + } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + + mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived + } + STATUS current + DESCRIPTION "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + + + + mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + + -- Notification groups + + rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + + ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + + -- Compliances + + mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + + + + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to repeater ports." + ::= { mauModCompls 1 } + + mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + ::= { mauModCompls 2 } + + mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + + + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 3 } + + mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + + + + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 4 } + + mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 5 } + +END diff --git a/mibs/ietf/MIDCOM-MIB b/mibs/ietf/MIDCOM-MIB new file mode 100644 index 0000000..6a55898 --- /dev/null +++ b/mibs/ietf/MIDCOM-MIB @@ -0,0 +1,2386 @@ +MIDCOM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Gauge32, mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TEXTUAL-CONVENTION, TruthValue, + StorageType, RowStatus + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + InetAddressType, InetAddress, + InetPortNumber, + InetAddressPrefixLength + FROM INET-ADDRESS-MIB -- RFC 4001 + + + + + + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + + NatBindIdOrZero + FROM NAT-MIB; -- RFC 4008 + +midcomMIB MODULE-IDENTITY + LAST-UPDATED "200708091011Z" -- August 09, 2007 + ORGANIZATION "IETF Middlebox Communication Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/midcom-charter.html + + Mailing Lists: + General Discussion: midcom@ietf.org + To Subscribe: midcom-request@ietf.org + In Body: subscribe your_email_address + + Co-editor: + Juergen Quittek + NEC Europe Ltd. + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + Tel: +49 6221 4342-115 + Email: quittek@nw.neclab.eu + + Co-editor: + Martin Stiemerling + NEC Europe Ltd. + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + Tel: +49 6221 4342-113 + Email: stiemerling@nw.neclab.eu + + Co-editor: + Pyda Srisuresh + Kazeon Systems, Inc. + 1161 San Antonio Rd. + Mountain View, CA 94043 + U.S.A. + Tel: +1 408 836-4773 + Email: srisuresh@yahoo.com" + + DESCRIPTION + "This MIB module defines a set of basic objects for + configuring middleboxes, such as firewalls and network + + + + address translators, in order to enable communication + across these devices. + + Managed objects defined in this MIB module are structured + in three kinds of objects: + - transaction objects required according to the MIDCOM + protocol requirements defined in RFC 3304 and according + to the MIDCOM protocol semantics defined in RFC 3989, + - configuration objects that can be used for retrieving or + setting parameters of the implementation of transaction + objects, + - optional monitoring objects that provide information + about used resource and statistics + + The transaction objects are organized in two subtrees: + - objects modeling MIDCOM policy rules in the + midcomRuleTable + - objects modeling MIDCOM policy rule groups in the + midcomGroupTable + + Note that typically, configuration objects are not intended + to be written by MIDCOM clients. In general, write access + to these objects needs to be restricted more strictly than + write access to objects in the transaction subtrees. + + Copyright (C) The Internet Society (2008). This version + of this MIB module is part of RFC 5190; see the RFC + itself for full legal notices." + + REVISION "200708091011Z" -- August 09, 2007 + DESCRIPTION "Initial version, published as RFC 5190." + ::= { mib-2 171 } + +-- +-- main components of this MIB module +-- + +midcomNotifications OBJECT IDENTIFIER ::= { midcomMIB 0 } +midcomObjects OBJECT IDENTIFIER ::= { midcomMIB 1 } +midcomConformance OBJECT IDENTIFIER ::= { midcomMIB 2 } + +-- Transaction objects required according to the MIDCOM +-- protocol requirements defined in RFC 3304 and according to +-- the MIDCOM protocol semantics defined in RFC 3989 +midcomTransaction OBJECT IDENTIFIER ::= { midcomObjects 1 } + +-- Configuration objects that can be used for retrieving +-- middlebox capability information (mandatory) and for + + + +-- setting parameters of the implementation of transaction +-- objects (optional) +midcomConfig OBJECT IDENTIFIER ::= { midcomObjects 2 } + +-- Optional monitoring objects that provide information about +-- used resource and statistics +midcomMonitoring OBJECT IDENTIFIER ::= { midcomObjects 3 } + +-- +-- Transaction Objects +-- +-- Transaction objects are structured according to the MIDCOM +-- protocol semantics into two groups: +-- - objects modeling MIDCOM policy rules in the midcomRuleTable +-- - objects modeling MIDCOM policy rule groups in the +-- midcomGroupTable + +-- +-- Policy rule subtree +-- +-- The midcomRuleTable lists policy rules +-- including policy reserve rules and policy enable rules. +-- + +midcomRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists policy rules. + + It is indexed by the midcomRuleOwner, the + midcomGroupIndex, and the midcomRuleIndex. + This implies that a rule is a member of exactly + one group and that group membership cannot + be changed. + + Entries can be deleted by writing to + midcomGroupLifetime or midcomRuleLifetime + and potentially also to midcomRuleStorageTime." + ::= { midcomTransaction 3 } + +midcomRuleEntry OBJECT-TYPE + SYNTAX MidcomRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular MIDCOM policy rule." + + + + INDEX { midcomRuleOwner, midcomGroupIndex, midcomRuleIndex } + ::= { midcomRuleTable 1 } + +MidcomRuleEntry ::= SEQUENCE { + midcomRuleOwner SnmpAdminString, + midcomRuleIndex Unsigned32, + midcomRuleAdminStatus INTEGER, + midcomRuleOperStatus INTEGER, + midcomRuleStorageType StorageType, + midcomRuleStorageTime Unsigned32, + midcomRuleError SnmpAdminString, + midcomRuleInterface InterfaceIndexOrZero, + midcomRuleFlowDirection INTEGER, + midcomRuleMaxIdleTime Unsigned32, + midcomRuleTransportProtocol Unsigned32, + midcomRulePortRange INTEGER, + midcomRuleInternalIpVersion InetAddressType, + midcomRuleExternalIpVersion InetAddressType, + midcomRuleInternalIpAddr InetAddress, + midcomRuleInternalIpPrefixLength InetAddressPrefixLength, + midcomRuleInternalPort InetPortNumber, + midcomRuleExternalIpAddr InetAddress, + midcomRuleExternalIpPrefixLength InetAddressPrefixLength, + midcomRuleExternalPort InetPortNumber, + midcomRuleInsideIpAddr InetAddress, + midcomRuleInsidePort InetPortNumber, + midcomRuleOutsideIpAddr InetAddress, + midcomRuleOutsidePort InetPortNumber, + midcomRuleLifetime Unsigned32, + midcomRuleRowStatus RowStatus +} + +midcomRuleOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the midcomRuleTable. + + This object SHOULD uniquely identify an authenticated + MIDCOM client. This object is part of the table index to + allow for the use of the SNMPv3 View-based Access Control + Model (VACM, RFC 3415)." + ::= { midcomRuleEntry 1 } + +midcomRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The value of this object must be unique in + combination with the values of the objects + midcomRuleOwner and midcomGroupIndex in this row." + ::= { midcomRuleEntry 3 } + +midcomRuleAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + reserve(1), + enable(2), + notSet(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the policy rule. See the definition of midcomRuleOperStatus + for a description of the values. + + When a midcomRuleEntry is created without explicitly setting + this object, its value will be notSet(3). + + However, a SET request can only set this object to either + reserve(1) or enable(2). Attempts to set this object to + notSet(3) will always fail with an 'inconsistentValue' + error. Note that this error code is SNMP specific. If the + MIB module is used with other protocols than SNMP, errors + with similar semantics specific to those protocols should + be returned. + + When the midcomRuleAdminStatus object is set, then the + MIDCOM-MIB implementation will try to read the respective + relevant objects of the entry and try to achieve the + corresponding midcomRuleOperStatus. + + Setting midcomRuleAdminStatus to value reserve(1) when + object midcomRuleOperStatus has a value of reserved(7) + does not have any effect on the policy rule. + Setting midcomRuleAdminStatus to value enable(2) when + object midcomRuleOperStatus has a value of enabled(8) + does not have any effect on the policy rule. + + Depending on whether the midcomRuleAdminStatus is set to + reserve(1) or enable(2), several objects must be set in + advance. They serve as parameters of the policy rule to be + established. + + + + + When object midcomRuleAdminStatus is set to reserve(1), + then the following objects in the same entry are of + relevance: + - midcomRuleInterface + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleLifetime + + MIDCOM-MIB implementation may also consider the value + of object midcomRuleMaxIdleTime when establishing + a reserve rule. + + When object midcomRuleAdminStatus is set to enable(2), + then the following objects in the same entry are of + relevance: + - midcomRuleInterface + - midcomRuleFlowDirection + - midcomRuleMaxIdleTime + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleExternalIpAddr + - midcomRuleExternalIpPrefixLength + - midcomRuleExternalPort + - midcomRuleLifetime + + When retrieved, the object returns the last set value. + If no value has been set, it returns the default value + notSet(3)." + DEFVAL { notSet } + ::= { midcomRuleEntry 4 } + +midcomRuleOperStatus OBJECT-TYPE + SYNTAX INTEGER { + newEntry(1), + setting(2), + checkingRequest(3), + incorrectRequest(4), + processingRequest(5), + + + + requestRejected(6), + reserved(7), + enabled(8), + timedOut(9), + terminatedOnRequest(10), + terminated(11), + genericError(12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual status of the policy rule. The + midcomRuleOperStatus object may have the following values: + + - newEntry(1) indicates that the entry in the + midcomRuleTable was created, but not modified yet. + Such an entry needs to be filled with values specifying + a request first. + + - setting(2) indicates that the entry has been already + modified after generating it, but no request was made + yet. + + - checkingRequest(3) indicates that midcomRuleAdminStatus + has recently been set and that the MIDCOM-MIB + implementation is currently checking the parameters of + the request. This is a transient state. The value of + this object will change to either incorrectRequest(4) + or processingRequest(5) without any external + interaction. A MIDCOM-MIB implementation MAY return + this value while checking request parameters. + + - incorrectRequest(4) indicates that checking a request + resulted in detecting an incorrect value in one of the + objects containing request parameters. The failure + reason is indicated by the value of midcomRuleError. + + - processingRequest(5) indicates that + midcomRuleAdminStatus has recently been set and that + the MIDCOM-MIB implementation is currently processing + the request and trying to configure the middlebox + accordingly. This is a transient state. The value of + this object will change to either requestRejected(6), + reserved(7), or enabled(8) without any external + interaction. A MIDCOM-MIB implementation MAY return + this value while processing a request. + + - requestRejected(6) indicates that a request to establish + + + + a policy rule specified by the entry was rejected. The + reason for rejection is indicated by the value of + midcomRuleError. + + - reserved(7) indicates that the entry describes an + established policy reserve rule. + These values of MidcomRuleEntry are meaningful + for a reserved policy rule: + - midcomRuleMaxIdleTime + - midcomRuleInterface + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleOutsideIpAddr + - midcomRuleOutsidePort + - midcomRuleLifetime + + - enabled(8) indicates that the entry describes an + established policy enable rule. + These values of MidcomRuleEntry are meaningful + for an enabled policy rule: + + - midcomRuleFlowDirection + - midcomRuleInterface + - midcomRuleMaxIdleTime + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleExternalIpAddr + - midcomRuleExternalIpPrefixLength + - midcomRuleExternalPort + - midcomRuleInsideIpAddr + - midcomRuleInsidePort + - midcomRuleOutsideIpAddr + - midcomRuleOutsidePort + - midcomRuleLifetime + + - timedOut(9) indicates that the lifetime of a previously + established policy rule has expired and that the policy + rule is terminated for this reason. + + + + - terminatedOnRequest(10) indicates that a previously + established policy rule was terminated by an SNMP + manager setting the midcomRuleLifetime to 0 or + setting midcomGroupLifetime to 0. + + - terminated(11) indicates that a previously established + policy rule was terminated by the MIDCOM-MIB + implementation for a reason other than lifetime + expiration or an explicit request from a MIDCOM client. + + - genericError(12) indicates that the policy rule + specified by the entry is not established due to + an error condition not listed above. + + The states timedOut(9), terminatedOnRequest(10), and + terminated(11) are referred to as termination states. + + The states incorrectRequest(4), requestRejected(6), + and genericError(12) are referred to as error states. + + The checkingRequest(3) and processingRequest(5) + states are transient states, which will lead to either + one of the error states or the reserved(7) state or the + enabled(8) state. MIDCOM-MIB implementations MAY return + these values when checking or processing requests." + DEFVAL { newEntry } + ::= { midcomRuleEntry 5 } + +midcomRuleStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When retrieved, this object returns the storage + type of the policy rule. Writing to this object can + change the storage type of the particular row from + volatile(2) to nonVolatile(3) or vice versa. + + Attempts to set this object to permanent will always + fail with an 'inconsistentValue' error. Note that this + error code is SNMP specific. If the MIB module is used + with other protocols than SNMP, errors with similar + semantics specific to those protocols should be + returned. + + If midcomRuleStorageType has the value permanent(4), + then all objects in this row whose MAX-ACCESS value + is read-create must be read-only." + + + + DEFVAL { volatile } + ::= { midcomRuleEntry 6 } + +midcomRuleStorageTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies how long this row + can exist in the midcomRuleTable after the + midcomRuleOperStatus switched to a termination state or + to an error state. This object returns the remaining + time that the row may exist before it is aged out. + + After expiration or termination of the context, the value + of this object ticks backwards. The entry in the + midcomRuleTable is destroyed when the value reaches 0. + + The value of this object may be set in order to increase + or reduce the remaining time that the row may exist. + Setting the value to 0 will destroy this entry as soon as + the midcomRuleOperStatus switched to a termination state + or to an error state. + + Note that there is no guarantee that the row is stored as + long as this object indicates. At any time, the MIDCOM- + MIB implementation may decide to remove a row describing + a terminated policy rule before the storage time of the + corresponding row in the midcomRuleTable reaches the + value of 0. In this case, the information stored in this + row is not available anymore. + + If object midcomRuleStorageType indicates that the policy + rule has the storage type permanent(4), then this object has + a constant value of 4294967295." + DEFVAL { 0 } + ::= { midcomRuleEntry 7 } + +midcomRuleError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if + the transition into the operational status reserved(7) + or enabled(8) failed. Implementations must reset the + error message to a zero-length string when a new + + + + attempt to change the policy rule status to reserved(7) + or enabled(8) is started. + + RECOMMENDED values to be returned in particular cases + include + - 'lack of IP addresses' + - 'lack of port numbers' + - 'lack of resources' + - 'specified NAT interface does not exist' + - 'specified NAT interface does not support NAT' + - 'conflict with already existing policy rule' + - 'no internal IP wildcarding allowed' + - 'no external IP wildcarding allowed' + + The semantics of these error messages and the corresponding + behavior of the MIDCOM-MIB implementation are specified + in sections 2.3.9 and 2.3.10 of RFC 3989." + REFERENCE + "RFC 3989, sections 2.3.9 and 2.3.10" + DEFVAL { ''H } + ::= { midcomRuleEntry 8 } + +midcomRuleInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IP interface for which + enforcement of a policy rule is requested or performed, + respectively. + + The interface is identified by its index in the ifTable + (see IF-MIB in RFC 2863). If the object has a value of 0, + then no particular interface is indicated. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to request its preference + concerning the interface at which it requests NAT service. + The default value of 0 indicates that the manager does not + have a preferred interface or does not have sufficient + topology information for specifying one. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object indicates + the interface at which NAT service for this rule is + performed. If NAT service is not required for enforcing + the policy rule, then the value of this object is 0. Also, + if the MIDCOM-MIB implementation cannot indicate an + interface, because it does not have this information or + because NAT service is not offered at a particular single + interface, then the value of the object is 0. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the value of object + midcomRuleOperStatus of the same entry MUST be changed to + terminated(11). + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 9 } + +midcomRuleFlowDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound(1), + outbound(2), + biDirectional(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter specifies the direction of enabled + communication, either inbound(1), outbound(2), or + biDirectional(3). + + The semantics of this object depends on the protocol + the rule relates to. If the rule is independent of + + + + the transport protocol (midcomRuleTransportProtocol + has a value of 0) or if the transport protocol is UDP, + then the value of midcomRuleFlowDirection indicates + the direction of packets traversing the middlebox. + + In this case, value inbound(1) indicates that packets + are traversing from outside to inside, value outbound(2) + indicates that packets are traversing from inside to + outside. For both values, inbound(1) and outbound(2) + packets can traverse the middlebox only unidirectional. + A bidirectional flow is indicated by value + biDirectional(3). + + If the transport protocol is TCP, the packet flow is + always bidirectional, but the value of + midcomRuleFlowDirection indicates that: + + - inbound(1): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, must arrive + at an outside interface of the middlebox. + + - outbound(2): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, must arrive + at an inside interface of the middlebox. + + - biDirectional(3): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, may arrive + at an inside or an outside interface of the middlebox. + + This object is used as input to a request for + establishing a policy enable rule as well as for + indicating the properties of an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1), setting(2), or reserved(7), + then this object can be written by a manager in order to + specify a requested direction to be enabled by a policy + rule. Writing to this object in any state other than + newEntry(1), setting(2), or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object indicates the enabled + + + + flow direction. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { outbound } + ::= { midcomRuleEntry 10 } + +midcomRuleMaxIdleTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum idle time of the policy rule in seconds. + + If no packet to which the policy rule applies passes the + middlebox for the specified midcomRuleMaxIdleTime, then + the policy rule enters the termination state timedOut(9). + + A value of 0 indicates that the policy does not require + an individual idle time and that instead, a default idle + time chosen by the middlebox is used. + + A value of 4294967295 ( = 2^32 - 1 ) indicates that the + policy does not time out if it is idle. + + This object is used as input to a request for + establishing a policy enable rule as well as for + indicating the properties of an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1), setting(2), or reserved(7), + then this object can be written by a manager in order to + specify a maximum idle time for the policy rule to be + requested. Writing to this object in any state others + than newEntry(1), setting(2), or reserved(7) will always + fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object indicates the maximum + idle time of the policy rule. Note that even if a maximum + idle time greater than zero was requested, the middlebox + + + + may not be able to support maximum idle times and set the + value of this object to zero when entering state + enabled(8). + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 11 } + +midcomRuleTransportProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transport protocol. + + Valid values for midcomRuleTransportProtocol + other than zero are defined at: + http://www.iana.org/assignments/protocol-numbers + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1) or setting(2), then this + object can be written by a manager in order to specify a + requested transport protocol. If translation of an IP + address only is requested, then this object must have the + default value 0. Writing to this object in any state + other than newEntry(1) or setting(2) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates which transport protocol is enforced by this + policy rule. A value of 0 indicates a rule acting on IP + addresses only. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + + + + DEFVAL { 0 } + ::= { midcomRuleEntry 12 } + +midcomRulePortRange OBJECT-TYPE + SYNTAX INTEGER { + single(1), + pair(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The range of port numbers. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the requested + size of the port range. With single(1) just a single + port number is requested, with pair(2) a consecutive pair + of port numbers is requested with the lower number being + even. Requesting a consecutive pair of port numbers may + be used by RTP [RFC3550] and may even be required to + support older RTP applications. + + Writing to this object in any state other than + newEntry(1), setting(2) or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has a + value of either reserved(7) or enabled(8), then this + object will have the value that it had before the + transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { single } + + + + ::= { midcomRuleEntry 13} + +midcomRuleInternalIpVersion OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IP version of the internal address (A0) and the inside + address (A1). Allowed values are ipv4(1), ipv6(2), + ipv4z(3), and ipv6z(4). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the IP version + required at the inside of the middlebox. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates the internal/inside IP version. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { ipv4 } + ::= { midcomRuleEntry 14 } + +midcomRuleExternalIpVersion OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IP version of the external address (A3) and the outside + address (A2). Allowed values are ipv4(1) and ipv6(2). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the IP version + required at the outside of the middlebox. Writing to + this object in any state other than newEntry(1) or + setting(2) will always fail with an 'inconsistentValue' + error. + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates the external/outside IP version. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + DEFVAL { ipv4 } + ::= { midcomRuleEntry 15 } + +midcomRuleInternalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internal IP address (A0). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the internal IP + address for which a reserve policy rule or a enable policy + rule is requested to be established. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value which it had before the transition to this + + + + state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + ::= { midcomRuleEntry 16 } + +midcomRuleInternalIpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The prefix length of the internal IP address used for + wildcarding. A value of 0 indicates a full wildcard; + in this case, the value of midcomRuleInternalIpAddr is + irrelevant. If midcomRuleInternalIpVersion has a value + of ipv4(1), then a value > 31 indicates no wildcarding + at all. If midcomRuleInternalIpVersion has a value + of ipv4(2), then a value > 127 indicates no wildcarding + at all. A MIDCOM-MIB implementation that does not + support IP address wildcarding MUST implement this object + as read-only with a value of 128. A MIDCOM that does + not support wildcarding based on prefix length MAY + restrict allowed values for this object to 0 and 128. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the prefix length + of the internal IP address for which a reserve policy rule + or an enable policy rule is requested to be established. + Writing to this object in any state other than newEntry(1) + or setting(2) will always fail with an 'inconsistentValue' + error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value which it had before the transition to this + state. + + + + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 128 } + ::= { midcomRuleEntry 17 } + +midcomRuleInternalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internal port number. A value of 0 is a wildcard. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the internal port + number for which a reserve policy rule or an enable policy + rule is requested to be established. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value that it had before the transition to this + state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 18 } + +midcomRuleExternalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The external IP address (A3). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2), or reserved(7), then this + object can be written by a manager in order to specify the + external IP address for which an enable policy rule is + requested to be established. Writing to this object in + any state other than newEntry(1), setting(2), or reserved(7) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + that it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + ::= { midcomRuleEntry 19 } + +midcomRuleExternalIpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The prefix length of the external IP address used for + wildcarding. A value of 0 indicates a full wildcard; + in this case, the value of midcomRuleExternalIpAddr is + irrelevant. If midcomRuleExternalIpVersion has a value + of ipv4(1), then a value > 31 indicates no wildcarding + at all. If midcomRuleExternalIpVersion has a value + of ipv4(2), then a value > 127 indicates no wildcarding + at all. A MIDCOM-MIB implementation that does not + support IP address wildcarding MUST implement this object + as read-only with a value of 128. A MIDCOM that does + not support wildcarding based on prefix length MAY + restrict allowed values for this object to 0 and 128. + + This object is used as input to a request for establishing + + + + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2), or reserved(7), then this + object can be written by a manager in order to specify the + prefix length of the external IP address for which an + enable policy rule is requested to be established. + Writing to this object in any state other than + newEntry(1), setting(2), or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + that it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 128 } + ::= { midcomRuleEntry 20 } + +midcomRuleExternalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The external port number. A value of 0 is a wildcard. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2) or reserved(7), then this + object can be written by a manager in order to specify the + external port number for which an enable policy rule is + requested to be established. Writing to this object in + any state other than newEntry(1), setting(2) or reserved(7) + will always fail with an 'inconsistentValue' error. + + + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + which it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 21 } + +midcomRuleInsideIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The inside IP address at the middlebox (A1). + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 22 } + +midcomRuleInsidePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The inside port number at the middlebox. + A value of 0 is a wildcard. + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 23 } + +midcomRuleOutsideIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The outside IP address at the middlebox (A2). + + The value of this object is relevant only if + + + + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 24 } + +midcomRuleOutsidePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The outside port number at the middlebox. + A value of 0 is a wildcard. + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 25 } + +midcomRuleLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remaining lifetime in seconds of this policy rule. + + Lifetime of a policy rule starts when object + midcomRuleOperStatus in the same entry enters either + state reserved(7) or state enabled(8). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1) or setting(2), then this + object can be written by a manager in order to specify + the requested lifetime of a policy rule to be established. + + If object midcomRuleOperStatus of the same entry has a + value of either reserved(7) or enabled(8), then this + object indicates the (continuously decreasing) remaining + lifetime of the established policy rule. Note that when + entering state reserved(7) or enabled(8), the MIDCOM-MIB + implementation can choose a lifetime shorter than the one + requested. + + Unlike other parameters of the policy rule, this parameter + can still be written in state reserved(7) and enabled(8). + + + + Writing to this object is processed by the MIDCOM-MIB + implementation by choosing a lifetime value that is + greater than 0 and less than or equal to the minimum of + the requested value and the value specified by object + midcomConfigMaxLifetime: + + 0 <= lt_granted <= MINIMUM(lt_requested, lt_maximum) + + where: + - lt_granted is the actually granted lifetime by the + MIDCOM-MIB implementation + - lt_requested is the requested lifetime of the MIDCOM + client + - lt_maximum is the value of object + midcomConfigMaxLifetime + + SNMP SET requests to this object may be rejected or the + value of the object after an accepted SET operation may be + less than the value that was contained in the SNMP SET + request. + + Successfully writing a value of 0 terminates the policy + rule. Note that after a policy rule is terminated, still + the entry will exist as long as indicated by the value of + midcomRuleStorageTime. + + Writing to this object in any state other than + newEntry(1), setting(2), reserved(7), or enabled(7) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 180 } + ::= { midcomRuleEntry 26 } + +midcomRuleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + + + Entries can also be removed from this table by setting + objects midcomRuleLifetime and midcomRuleStorageTime of + an entry to 0. + + Attempts to set a row notInService(2) where the value + of the midcomRuleStorageType object is permanent(4) or + readOnly(5) will result in an 'notWritable' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { midcomRuleEntry 27 } + +-- +-- Policy rule group subtree +-- +-- The midcomGroupTable lists all current policy rule groups. +-- + +midcomGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all current policy rule groups. + + Entries in this table are created or removed + implicitly when entries in the midcomRuleTable are + created or removed, respectively. A group entry + in this table only exists as long as there are + member rules of this group in the midcomRuleTable. + + The table serves for listing the existing groups and + their remaining lifetimes and for changing lifetimes + of groups and implicitly of all group members. + Groups and all their member policy rules can only be + deleted by deleting all member policies in the + midcomRuleTable. + + Setting midcomGroupLifetime will result in setting + the lifetime of all policy members to the same value." + ::= { midcomTransaction 4 } + +midcomGroupEntry OBJECT-TYPE + + + + SYNTAX MidcomGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing properties of a particular + MIDCOM policy rule group." + INDEX { midcomRuleOwner, midcomGroupIndex } + ::= { midcomGroupTable 1 } + +MidcomGroupEntry ::= SEQUENCE { + midcomGroupIndex Unsigned32, + midcomGroupLifetime Unsigned32 +} + +midcomGroupIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this group for the midcomRuleOwner. + A group is identified by the combination of + midcomRuleOwner and midcomGroupIndex. + + The value of this index must be unique per + midcomRuleOwner." + ::= { midcomGroupEntry 2 } + +midcomGroupLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object delivers the maximum + lifetime in seconds of all member rules of this group, + i.e., of all rows in the midcomRuleTable that have the + same values for midcomRuleOwner and midcomGroupIndex. + + Successfully writing to this object modifies the + lifetime of all member policies. Successfully + writing a value of 0 terminates all member policies + and implicitly deletes the group as soon as all member + entries are removed from the midcomRuleTable. + + Note that after a group's lifetime is expired or is + set to 0, still the corresponding entry in the + midcomGroupTable will exist as long as terminated + member policy rules are stored as entries in the + + + + midcomRuleTable. + + Writing to this object is processed by the MIDCOM-MIB + implementation by choosing a lifetime value that is + greater than 0 and less than or equal to the minimum of + the requested value and the value specified by object + midcomConfigMaxLifetime: + + 0 <= lt_granted <= MINIMUM(lt_requested, lt_maximum) + + where: + - lt_granted is the actually granted lifetime by the + MIDCOM-MIB implementation + - lt_requested is the requested lifetime of the MIDCOM + client + - lt_maximum is the value of object + midcomConfigMaxLifetime + + SNMP SET requests to this object may be rejected or the + value of the object after an accepted SET operation may be + less than the value that was contained in the SNMP SET + request." + ::= { midcomGroupEntry 3 } + +-- +-- Configuration Objects +-- +-- Configuration objects that can be used for retrieving +-- middlebox capability information (mandatory) and for +-- setting parameters of the implementation of transaction +-- objects (optional). +-- +-- Note that typically configuration objects are not intended +-- to be written by MIDCOM clients. In general, write access +-- to these objects needs to be restricted more strictly than +-- write access to transaction objects. +-- + +-- +-- Capabilities subtree +-- +-- This subtree contains objects to which MIDCOM clients should +-- have read access. +-- + +midcomConfigMaxLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object returns the maximum lifetime, + in seconds, that this middlebox allows policy rules to + have." + ::= { midcomConfig 1 } + +midcomConfigPersistentRules OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object returns true(1) if the + MIDCOM-MIB implementation can store policy rules + persistently. Otherwise, it returns false(2). + + A value of true(1) indicates that there may be + entries in the midcomRuleTable with object + midcomRuleStorageType set to value nonVolatile(3)." + ::= { midcomConfig 2 } + +midcomConfigIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomConfigIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table indicates capabilities of the MIDCOM-MIB + implementation per IP interface. + + The table is indexed by the object midcomConfigIfIndex. + + For indexing a single interface, this object contains + the value of the ifIndex object that is associated + with the interface. If an entry with + midcomConfigIfIndex = 0 occurs, then bits set in + objects of this entry apply to all interfaces for which + there is no entry in this table with the interface's + index." + ::= { midcomConfig 3 } + +midcomConfigIfEntry OBJECT-TYPE + SYNTAX MidcomConfigIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing the capabilities of a middlebox + with respect to the indexed IP interface." + + + + INDEX { midcomConfigIfIndex } + ::= { midcomConfigIfTable 1 } + +MidcomConfigIfEntry ::= SEQUENCE { + midcomConfigIfIndex InterfaceIndexOrZero, + midcomConfigIfBits BITS, + midcomConfigIfEnabled TruthValue +} + +midcomConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of an entry in the midcomConfigIfTable. + + For values different from zero, this object + identifies an IP interface by containing the same + value as the ifIndex object associated with the + interface. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the value of object + midcomConfigIfEnabled of the same entry MUST be changed to + false(2). + + If the object has a value of 0, then values + specified by further objects of the same entry + apply to all interfaces for which there is no + explicit entry in the midcomConfigIfTable." + ::= { midcomConfigIfEntry 1 } + +midcomConfigIfBits OBJECT-TYPE + SYNTAX BITS { + ipv4(0), + ipv6(1), + addressWildcards(2), + portWildcards(3), + firewall(4), + nat(5), + portTranslation(6), + + + + protocolTranslation(7), + twiceNat(8), + inside(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this object returns a set of bits + indicating the capabilities (or configuration) of + the middlebox with respect to the referenced IP interface. + If the index equals 0, then all set bits apply to all + interfaces. + + If the ipv4(0) bit is set, then the middlebox supports + IPv4 at the indexed IP interface. + + If the ipv6(1) bit is set, then the middlebox supports + IPv6 at the indexed IP interface. + + If the addressWildcards(2) bit is set, then the + middlebox supports IP address wildcarding at the indexed + IP interface. + + If the portWildcards(3) bit is set, then the + middlebox supports port wildcarding at the indexed + IP interface. + + If the firewall(4) bit is set, then the middlebox offers + firewall functionality at the indexed interface. + + If the nat(5) bit is set, then the middlebox offers + network address translation service at the indexed + interface. + + If the portTranslation(6) bit is set, then the middlebox + offers port translation service at the indexed interface. + This bit is only relevant if nat(5) is set. + + If the protocolTranslation(7) bit is set, then the + middlebox offers protocol translation service between + IPv4 and IPv6 at the indexed interface. This bit is only + relevant if nat(5) is set. + + If the twiceNat(8) bit is set, then the middlebox offers + twice network address translation service at the indexed + interface. This bit is only relevant if nat(5) is set. + + If the inside(9) bit is set, then the indexed interface is + + + + an inside interface with respect to NAT functionality. + Otherwise, it is an outside interface. This bit is only + relevant if nat(5) is set. An SNMP agent supporting both + the MIDCOM-MIB module and the NAT-MIB module SHOULD ensure + that the value of this object is consistent with the values + of corresponding objects in the NAT-MIB module." + ::= { midcomConfigIfEntry 2 } + +midcomConfigIfEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the availability of + the middlebox service described by midcomConfigIfBits + at the indexed IP interface. + + By writing to this object, the MIDCOM support for the + entire IP interface can be switched on or off. Setting + this object to false(2) immediately stops middlebox + support at the indexed IP interface. This implies that + all policy rules that use NAT or firewall resources at + the indexed IP interface are terminated immediately. + In this case, the MIDCOM agent MUST send + midcomUnsolicitedRuleEvent to all MIDCOM clients that + have access to one of the terminated rules." + DEFVAL { true } + ::= { midcomConfigIfEntry 3 } + +-- +-- Firewall subtree +-- +-- This subtree contains the firewall configuration table +-- + +midcomConfigFirewallTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomConfigFirewallEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the firewall configuration per IP interface. + + It can be used for configuring how policy rules created by + MIDCOM clients are realized as firewall rules of a firewall + implementation. Particularly, the priority used for MIDCOM + policy rules can be configured. For a single firewall + implementation at a particular IP interface, all MIDCOM + policy rules are realized as firewall rules with the same + + + + priority. Also, a firewall rule group name can be + configured. + + The table is indexed by the object midcomConfigFirewallIndex. + For indexing a single interface, this object contains the + value of the ifIndex object that is associated with the + interface. If an entry with midcomConfigFirewallIndex = 0 + occurs, then bits set in objects of this entry apply to all + interfaces for which there is no entry in this table for the + interface's index." + ::= { midcomConfig 4 } + +midcomConfigFirewallEntry OBJECT-TYPE + SYNTAX MidcomConfigFirewallEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular set of + firewall resources." + INDEX { midcomConfigFirewallIndex } + ::= { midcomConfigFirewallTable 1 } + +MidcomConfigFirewallEntry ::= SEQUENCE { + midcomConfigFirewallIndex InterfaceIndexOrZero, + midcomConfigFirewallGroupId SnmpAdminString, + midcomConfigFirewallPriority Unsigned32 +} + +midcomConfigFirewallIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of an entry in the midcomConfigFirewallTable. + + For values different from 0, this object identifies an + IP interface by containing the same value as the ifIndex + object associated with the interface. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the entry in the + + + + midcomConfigFirewallTable MUST be deleted. + + If the object has a value of 0, then values specified by + further objects of the same entry apply to all interfaces + for which there is no explicit entry in the + midcomConfigFirewallTable." + ::= { midcomConfigFirewallEntry 1 } + +midcomConfigFirewallGroupId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The firewall rule group to which all firewall rules are + assigned that the MIDCOM server creates for the interface + indicated by object midcomConfigFirewallIndex. If the + value of object midcomConfigFirewallIndex is 0, then all + firewall rules of the MIDCOM server that are created for + interfaces with no specific entry in the + midcomConfigFirewallTable are assigned to the firewall + rule group indicated by the value of this object." + ::= { midcomConfigFirewallEntry 2 } + +midcomConfigFirewallPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority assigned to all firewall rules that the + MIDCOM server creates for the interface indicated by + object midcomConfigFirewallIndex. If the value of object + midcomConfigFirewallIndex is 0, then this priority is + assigned to all firewall rules of the MIDCOM server that + are created for interfaces for which there is no specific + entry in the midcomConfigFirewallTable." + ::= { midcomConfigFirewallEntry 3 } + +-- +-- Monitoring Objects +-- +-- Monitoring objects are structured into two groups, +-- the midcomResourceGroup providing information about used +-- resources and the midcomStatisticsGroup providing information +-- about MIDCOM transaction statistics. + +-- +-- Resources subtree +-- + + + +-- The MIDCOM resources subtree contains a set of managed +-- objects describing the currently used resources of NAT +-- and firewall implementations. +-- + +-- +-- Textual conventions for objects of the resource subtree +-- + +MidcomNatBindMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indicator of the kind of NAT resources used by a policy + rule. This definition corresponds to the definition of + NatBindMode in the NAT-MIB (RFC 4008). Value none(3) can + be used to indicate that the policy rule does not use + any NAT binding. + " + SYNTAX INTEGER { + addressBind(1), + addressPortBind(2), + none(3) + } + +MidcomNatSessionIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique ID that is assigned to each NAT session by + a NAT implementation. This definition corresponds to + the definition of NatSessionId in the NAT-MIB (RFC 4008). + Value 0 can be used to indicate that the policy rule does + not use any NAT binding." + SYNTAX Unsigned32 + +-- +-- The MIDCOM resource table +-- + +midcomResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all used middlebox resources per + MIDCOM policy rule. + + The midcomResourceTable augments the + + + + midcomRuleTable." + ::= { midcomMonitoring 1 } + +midcomResourceEntry OBJECT-TYPE + SYNTAX MidcomResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular set of middlebox + resources." + AUGMENTS { midcomRuleEntry } + ::= { midcomResourceTable 1 } + +MidcomResourceEntry ::= SEQUENCE { + midcomRscNatInternalAddrBindMode MidcomNatBindMode, + midcomRscNatInternalAddrBindId NatBindIdOrZero, + midcomRscNatInsideAddrBindMode MidcomNatBindMode, + midcomRscNatInsideAddrBindId NatBindIdOrZero, + midcomRscNatSessionId1 MidcomNatSessionIdOrZero, + midcomRscNatSessionId2 MidcomNatSessionIdOrZero, + midcomRscFirewallRuleId Unsigned32 +} + +midcomRscNatInternalAddrBindMode OBJECT-TYPE + SYNTAX MidcomNatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this policy rule uses an address + NAT bind or an address-port NAT bind for binding the + internal address. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008) then object + midcomRscNatInternalAddrBindMode contains the same + value as the corresponding object + natSessionPrivateSrcEPBindMode of the NAT-MIB module." + ::= { midcomResourceEntry 4 } + +midcomRscNatInternalAddrBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object references to the allocated internal NAT + bind that is used by this policy rule. A NAT bind + describes the mapping of internal addresses to + outside addresses. MIDCOM-MIB implementations can + + + + read this object to learn the corresponding NAT bind + resource for this particular policy rule. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008) then object + midcomRscNatInternalAddrBindId contains the same + value as the corresponding object + natSessionPrivateSrcEPBindId of the NAT-MIB module." + ::= { midcomResourceEntry 5 } + +midcomRscNatInsideAddrBindMode OBJECT-TYPE + SYNTAX MidcomNatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this policy rule uses an address + NAT bind or an address-port NAT bind for binding the + external address. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008), then object + midcomRscNatInsideAddrBindMode contains the same + value as the corresponding object + natSessionPrivateDstEPBindMode of the NAT-MIB module." + ::= { midcomResourceEntry 6 } + +midcomRscNatInsideAddrBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the allocated external NAT + bind that is used by this policy rule. A NAT bind + describes the mapping of external addresses to + inside addresses. MIDCOM-MIB implementations can + read this object to learn the corresponding NAT bind + resource for this particular policy rule. + + If the MIDCOM-MIB module is operated together with the + NAT-MIB module (RFC 4008), then object + midcomRscNatInsideAddrBindId contains the same + value as the corresponding object + natSessionPrivateDstEPBindId of the NAT-MIB module." + ::= { midcomResourceEntry 7 } + +midcomRscNatSessionId1 OBJECT-TYPE + SYNTAX MidcomNatSessionIdOrZero + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object refers to the first allocated NAT session for + this policy rule. MIDCOM-MIB implementations can read this + object to learn whether or not a NAT session for a + particular policy rule is used. A value of 0 means that no + NAT session is allocated for this policy rule. A value + other than 0 refers to the NAT session." + ::= { midcomResourceEntry 8 } + +midcomRscNatSessionId2 OBJECT-TYPE + SYNTAX MidcomNatSessionIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the second allocated NAT session for + this policy rule. MIDCOM-MIB implementations can read this + object to learn whether or not a NAT session for a + particular policy rule is used. A value of 0 means that no + NAT session is allocated for this policy rule. A value + other than 0 refers to the NAT session." + ::= { midcomResourceEntry 9 } + +midcomRscFirewallRuleId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the allocated firewall + rule in the firewall engine for this policy rule. + MIDCOM-MIB implementations can read this value to + learn whether a firewall rule for this particular + policy rule is used or not. A value of 0 means that + no firewall rule is allocated for this policy rule. + A value other than 0 refers to the firewall rule + number within the firewall engine." + ::= { midcomResourceEntry 10 } + +-- +-- Statistics subtree +-- +-- The MIDCOM statistics subtree contains a set of managed +-- objects providing statistics about the usage of transaction +-- objects. +-- + +midcomStatistics OBJECT IDENTIFIER ::= { midcomMonitoring 2 } + + + + +midcomCurrentOwners OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of different values for midcomRuleOwner + for all current entries in the midcomRuleTable." + ::= { midcomStatistics 1 } + +midcomTotalRejectedRuleEntries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of failed attempts to create an entry + in the midcomRuleTable." + ::= { midcomStatistics 2 } + +midcomCurrentRulesIncomplete OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of policy rules that are incomplete. + + Policy rules are loaded via row entries in the + midcomRuleTable. This object counts policy rules that are + loaded but not fully specified, i.e., they are in state + newEntry(1) or setting(2)." + ::= { midcomStatistics 3 } + +midcomTotalIncorrectReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that failed + parameter check and entered state incorrectRequest(4)." + ::= { midcomStatistics 4 } + +midcomTotalRejectedReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that failed + while being processed and entered state requestRejected(6)." + ::= { midcomStatistics 5 } + + + +midcomCurrentActiveReserveRules OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active policy reserve rules." + ::= { midcomStatistics 6 } + +midcomTotalExpiredReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of expired policy reserve rules + (entered termination state timedOut(9))." + ::= { midcomStatistics 7 } + +midcomTotalTerminatedOnRqReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that were + terminated on request (entered termination state + terminatedOnRequest(10))." + ::= { midcomStatistics 8 } + +midcomTotalTerminatedReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that were + terminated, but not on request (entered termination state + terminated(11))." + ::= { midcomStatistics 9 } + +midcomTotalIncorrectEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that failed + parameter check and entered state incorrectRequest(4)." + ::= { midcomStatistics 10 } + +midcomTotalRejectedEnableRules OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that failed + while being processed and entered state requestRejected(6)." + ::= { midcomStatistics 11 } +midcomCurrentActiveEnableRules OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active policy enable rules." + ::= { midcomStatistics 12 } + +midcomTotalExpiredEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of expired policy enable rules + (entered termination state timedOut(9))." + ::= { midcomStatistics 13 } + +midcomTotalTerminatedOnRqEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that were + terminated on request (entered termination state + terminatedOnRequest(10))." + ::= { midcomStatistics 14 } + +midcomTotalTerminatedEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that were + terminated, but not on request (entered termination state + terminated(11))." + ::= { midcomStatistics 15 } + +-- +-- Notifications. +-- + +midcomUnsolicitedRuleEvent NOTIFICATION-TYPE + + + + OBJECTS { midcomRuleOperStatus, midcomRuleLifetime } + STATUS current + DESCRIPTION + "This notification is generated whenever the value of + midcomRuleOperStatus enters any error state or any + termination state without an explicit trigger by a + MIDCOM client." + ::= { midcomNotifications 1 } + +midcomSolicitedRuleEvent NOTIFICATION-TYPE + OBJECTS { midcomRuleOperStatus, midcomRuleLifetime } + STATUS current + DESCRIPTION + "This notification is generated whenever the value + of midcomRuleOperStatus enters one of the states + {reserved, enabled, any error state, any termination state} + as a result of a MIDCOM agent writing successfully to + object midcomRuleAdminStatus. + + In addition, it is generated when the lifetime of + a rule was changed by successfully writing to object + midcomRuleLifetime." + ::= { midcomNotifications 2 } + +midcomSolicitedGroupEvent NOTIFICATION-TYPE + OBJECTS { midcomGroupLifetime } + STATUS current + DESCRIPTION + "This notification is generated for indicating that the + lifetime of all member rules of the group was changed by + successfully writing to object midcomGroupLifetime. + + Note that this notification is only sent if the lifetime + of a group was changed by successfully writing to object + midcomGroupLifetime. No notification is sent + - if a group's lifetime is changed by writing to object + midcomRuleLifetime of any of its member policies, + - if a group's lifetime expires (in this case, + notifications are sent for all member policies), or + - if the group is terminated by terminating the last + of its member policies without writing to object + midcomGroupLifetime." + ::= { midcomNotifications 3 } + +-- +-- Conformance information +-- + + + + +midcomCompliances OBJECT IDENTIFIER ::= { midcomConformance 1 } +midcomGroups OBJECT IDENTIFIER ::= { midcomConformance 2 } + +-- +-- compliance statements +-- + +-- This is the MIDCOM compliance definition ... + +-- + +midcomCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for implementations of the + MIDCOM-MIB module. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB [RFC2863]." + MODULE -- this module + MANDATORY-GROUPS { + midcomRuleGroup, + midcomNotificationsGroup, + midcomCapabilitiesGroup, + midcomStatisticsGroup + } + GROUP midcomConfigFirewallGroup + DESCRIPTION + "A compliant implementation does not have to implement + the midcomConfigFirewallGroup." + GROUP midcomResourceGroup + DESCRIPTION + "A compliant implementation does not have to implement + the midcomResourceGroup." + OBJECT midcomRuleInternalIpPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 128 as the value of this object. + A value of 128 means that the function represented by + this option is not supported." + OBJECT midcomRuleExternalIpPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 128 as the value of this object. + + + + A value of 128 means that the function represented by + this option is not supported." + OBJECT midcomRuleMaxIdleTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + OBJECT midcomRuleInterface + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigMaxLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigPersistentRules + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigIfEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigFirewallGroupId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigFirewallPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { midcomCompliances 1 } + +midcomRuleGroup OBJECT-GROUP + OBJECTS { + midcomRuleAdminStatus, + midcomRuleOperStatus, + midcomRuleStorageType, + midcomRuleStorageTime, + midcomRuleError, + midcomRuleInterface, + midcomRuleFlowDirection, + midcomRuleMaxIdleTime, + midcomRuleTransportProtocol, + midcomRulePortRange, + midcomRuleInternalIpVersion, + + + + midcomRuleExternalIpVersion, + midcomRuleInternalIpAddr, + midcomRuleInternalIpPrefixLength, + midcomRuleInternalPort, + midcomRuleExternalIpAddr, + midcomRuleExternalIpPrefixLength, + midcomRuleExternalPort, + midcomRuleInsideIpAddr, + midcomRuleInsidePort, + midcomRuleOutsideIpAddr, + midcomRuleOutsidePort, + midcomRuleLifetime, + midcomRuleRowStatus, + midcomGroupLifetime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + policy rules and policy rule groups." + ::= { midcomGroups 1 } + +midcomCapabilitiesGroup OBJECT-GROUP + OBJECTS { + midcomConfigMaxLifetime, + midcomConfigPersistentRules, + midcomConfigIfBits, + midcomConfigIfEnabled + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the capabilities of a middlebox." + ::= { midcomGroups 2 } + +midcomConfigFirewallGroup OBJECT-GROUP + OBJECTS { + midcomConfigFirewallGroupId, + midcomConfigFirewallPriority + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the firewall rule group and firewall rule priority to + be used by firewalls loaded through MIDCOM." + ::= { midcomGroups 3 } + +midcomResourceGroup OBJECT-GROUP + OBJECTS { + + + + midcomRscNatInternalAddrBindMode, + midcomRscNatInternalAddrBindId, + midcomRscNatInsideAddrBindMode, + midcomRscNatInsideAddrBindId, + midcomRscNatSessionId1, + midcomRscNatSessionId2, + midcomRscFirewallRuleId + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the used NAT and firewall resources." + ::= { midcomGroups 4 } + +midcomStatisticsGroup OBJECT-GROUP + OBJECTS { + midcomCurrentOwners, + midcomTotalRejectedRuleEntries, + midcomCurrentRulesIncomplete, + midcomTotalIncorrectReserveRules, + midcomTotalRejectedReserveRules, + midcomCurrentActiveReserveRules, + midcomTotalExpiredReserveRules, + midcomTotalTerminatedOnRqReserveRules, + midcomTotalTerminatedReserveRules, + midcomTotalIncorrectEnableRules, + midcomTotalRejectedEnableRules, + midcomCurrentActiveEnableRules, + midcomTotalExpiredEnableRules, + midcomTotalTerminatedOnRqEnableRules, + midcomTotalTerminatedEnableRules + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical + information about the MIDCOM server." + ::= { midcomGroups 5 } + + + + + + + + + + + + + + +midcomNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + midcomUnsolicitedRuleEvent, + midcomSolicitedRuleEvent, + midcomSolicitedGroupEvent + } + STATUS current + DESCRIPTION + "The notifications emitted by the midcomMIB." + ::= { midcomGroups 6 } + +END diff --git a/mibs/ietf/MIOX25-MIB b/mibs/ietf/MIOX25-MIB new file mode 100644 index 0000000..b54c0ab --- /dev/null +++ b/mibs/ietf/MIOX25-MIB @@ -0,0 +1,708 @@ +MIOX25-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, + TimeTicks + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + DisplayString, transmission, + ifIndex + FROM RFC1213-MIB + InstancePointer + FROM RFC1316-MIB + X121Address + FROM RFC1382-MIB + PositiveInteger + FROM RFC1381-MIB; + + -- IP over X.25 MIB + +miox OBJECT IDENTIFIER ::= { transmission 38 } + +mioxPle OBJECT IDENTIFIER ::= { miox 1 } +mioxPeer OBJECT IDENTIFIER ::= { miox 2 } + +-- ########################################################### +-- Ple Table +-- ########################################################### + +-- Systems that implement RFC 1356 must also implement +-- all objects in this group. + +mioxPleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPleEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains information relative to + an interface to an X.25 Packet Level Entity + (PLE)." + ::= { mioxPle 1 } + +mioxPleEntry OBJECT-TYPE + SYNTAX MioxPleEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects manage the encapsulation of + other protocols within X.25." + INDEX { ifIndex } + ::= { mioxPleTable 1 } + +MioxPleEntry ::= SEQUENCE { + mioxPleMaxCircuits + INTEGER, + mioxPleRefusedConnections + Counter, + mioxPleEnAddrToX121LkupFlrs + Counter, + mioxPleLastFailedEnAddr + OCTET STRING, + mioxPleEnAddrToX121LkupFlrTime + TimeTicks, + mioxPleX121ToEnAddrLkupFlrs + Counter, + mioxPleLastFailedX121Address + X121Address, + mioxPleX121ToEnAddrLkupFlrTime + TimeTicks, + mioxPleQbitFailures + Counter, + mioxPleQbitFailureRemoteAddress + X121Address, + mioxPleQbitFailureTime + TimeTicks, + mioxPleMinimumOpenTimer + PositiveInteger, + mioxPleInactivityTimer + PositiveInteger, + mioxPleHoldDownTimer + PositiveInteger, + mioxPleCollisionRetryTimer + PositiveInteger, + mioxPleDefaultPeerId + InstancePointer + } + +mioxPleMaxCircuits OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of X.25 circuits that + can be open at one time for this interface. + A value of zero indicates the interface will + not allow any additional circuits (as it may + soon be shutdown). A value of 2147483647 + allows an unlimited number of circuits." + ::= { mioxPleEntry 1 } + +mioxPleRefusedConnections OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of X.25 calls from a remote + systems to this system that were cleared by + this system. The interface instance should + identify the X.25 interface the call came in + on." + ::= { mioxPleEntry 2 } + +mioxPleEnAddrToX121LkupFlrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a translation from an + Encapsulated Address to an X.121 address + failed to find a corresponding X.121 + address. Encapsulated addresses can be + looked up in the mioxPeerTable or translated + via an algorithm as for the DDN. Addresses + that are successfully recognized do not + increment this counter. Addresses that are + not recognized (reflecting an abnormal + packet delivery condition) increment this + counter. + + If an address translation fails, it may be + difficult to determine which PLE entry + should count the failure. In such cases the + first likely entry in this table should be + selected. Agents should record the failure + even if they are unsure which PLE should be + associated with the failure." + ::= { mioxPleEntry 3 } + +mioxPleLastFailedEnAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2..128)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last Encapsulated address that failed + to find a corresponding X.121 address and + caused mioxPleEnAddrToX121LkupFlrs to be + incremented. The first octet of this object + contains the encapsulation type, the + remaining octets contain the address of that + type that failed. Thus for an IP address, + the length will be five octets, the first + octet will contain 204 (hex CC), and the + last four octets will contain the IP + address. For a snap encapsulation, the + first byte would be 128 (hex 80) and the + rest of the octet string would have the snap + header." + ::= { mioxPleEntry 4 } + +mioxPleEnAddrToX121LkupFlrTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when the + translation from an Encapsulated Address to + X.121 address failed to find a corresponding + X.121 address." + ::= { mioxPleEntry 5 } + + +mioxPleX121ToEnAddrLkupFlrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the translation from an + X.121 address to an Encapsulated Address + failed to find a corresponding Encapsulated + Address. Addresses successfully recognized + by an algorithm do not increment this + counter. This counter reflects the number + of times call acceptance encountered the + abnormal condition of not recognizing the + peer." + ::= { mioxPleEntry 6 } + +mioxPleLastFailedX121Address OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last X.121 address that caused + mioxPleX121ToEnAddrLkupFlrs to increase." + ::= { mioxPleEntry 7 } + +mioxPleX121ToEnAddrLkupFlrTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when the + translation from an X.121 address to an + Encapsulated Address failed to find a + corresponding Encapsulated Address." + ::= { mioxPleEntry 8 } + +mioxPleQbitFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a connection was closed + because of a Q-bit failure." + ::= { mioxPleEntry 9 } + +mioxPleQbitFailureRemoteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote address of the most recent + (last) connection that was closed because of + a Q-bit failure." + ::= { mioxPleEntry 10 } + +mioxPleQbitFailureTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when a + connection was closed because of a Q-bit + failure. This will also be the last time + that mioxPleQbitFailures was incremented." + ::= { mioxPleEntry 11 } + +mioxPleMinimumOpenTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum time in milliseconds this + interface will keep a connection open before + allowing it to be closed. A value of zero + indicates no timer." + DEFVAL { 0 } + ::= { mioxPleEntry 12 } + +mioxPleInactivityTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The amount of time time in milliseconds + this interface will keep an idle connection + open before closing it. A value of + 2147483647 indicates no timer." + DEFVAL { 10000 } + ::= { mioxPleEntry 13 } + +mioxPleHoldDownTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The hold down timer in milliseconds. This + is the minimum amount of time to wait before + trying another call to a host that was + previously unsuccessful. A value of + 2147483647 indicates the host will not be + retried." + DEFVAL { 0 } + ::= { mioxPleEntry 14 } + +mioxPleCollisionRetryTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Collision Retry Timer in milliseconds. + The time to delay between call attempts when + the maximum number of circuits is exceeded + in a call attempt." + DEFVAL { 0 } + ::= { mioxPleEntry 15 } + + +mioxPleDefaultPeerId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the index + in the mioxPeerTable for the default + parameters to use with this interface. + + The entry identified by this object may have + a zero length Encapsulation address and a + zero length X.121 address. + + These default parameters are used with + connections to hosts that do not have + entries in the mioxPeerTable. Such + connections occur when using ddn-x25 IP-X.25 + address mapping or when accepting + connections from other hosts not in the + mioxPeerTable. + + The mioxPeerEncTable entry with the same + index as the mioxPeerTable entry specifies + the call encapsulation types this PLE will + accept for peers not in the mioxPeerTable. + If the mioxPeerEncTable doesn't contain any + entries, this PLE will not accept calls from + entries not in the mioxPeerTable." + ::= { mioxPleEntry 16 } + + + +-- ########################################################### +-- Peer Table +-- ########################################################### + +-- Systems that implement RFC 1356 must also implement +-- all objects in this group. + +mioxPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains information about the + possible peers this machine may exchange + packets with." + ::= { mioxPeer 1 } + +mioxPeerEntry OBJECT-TYPE + SYNTAX MioxPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Per peer information." + INDEX { mioxPeerIndex } + ::= { mioxPeerTable 1 } + + +MioxPeerEntry ::= SEQUENCE { + mioxPeerIndex + PositiveInteger, + mioxPeerStatus + INTEGER, + mioxPeerMaxCircuits + PositiveInteger, + mioxPeerIfIndex + PositiveInteger, + mioxPeerConnectSeconds + Counter, + mioxPeerX25CallParamId + InstancePointer, + mioxPeerEnAddr + OCTET STRING, + mioxPeerX121Address + X121Address, + mioxPeerX25CircuitId + InstancePointer, + mioxPeerDescr + DisplayString + } + +mioxPeerIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index value that distinguished one entry + from another. This index is independent of + any other index." + ::= { mioxPeerEntry 1 } + +-- Systems can claim conformance with this MIB without +-- implementing sets to mioxPeerStatus with a value of +-- clearCall or makeCall. +-- All other defined values must be accepted. +-- Implementors should realize that allowing these values +-- provides richer management, and implementations +-- are encouraged to accept these values. +mioxPeerStatus OBJECT-TYPE + SYNTAX INTEGER { + valid (1), + createRequest (2), + underCreation (3), + invalid (4), + clearCall (5), + makeCall (6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This reports the status of a peer entry. + A value of valid indicates a normal entry + that is in use by the agent. A value of + underCreation indicates a newly created + entry which isn't yet in use because the + creating management station is still setting + values. + + The value of invalid indicates the entry is + no longer in use and the agent is free to + delete the entry at any time. A management + station is also free to use an entry in the + invalid state. + + Entries are created by setting a value of + createRequest. Only non-existent or invalid + entries can be set to createRequest. Upon + receiving a valid createRequest, the agent + will create an entry in the underCreation + state. This object can not be set to a + value of underCreation directly, entries can + only be created by setting a value of + createRequest. Entries that exist in other + than the invalid state can not be set to + createRequest. + + Entries with a value of underCreation are + not used by the system and the management + station can change the values of other + objects in the table entry. Management + stations should also remember to configure + values in the mioxPeerEncTable with the same + peer index value as this peer entry. + + An entry in the underCreation state can be + set to valid or invalid. Entries in the + underCreation state will stay in that state + until 1) the agent times them out, 2) they + are set to valid, 3) they are set to + invalid. If an agent notices an entry has + been in the underCreation state for an + abnormally long time, it may decide the + management station has failed and invalidate + the entry. A prudent agent will understand + that the management station may need to wait + for human input and will allow for that + possibility in its determination of this + abnormally long period. + + Once a management station has completed all + fields of an entry, it will set a value of + valid. This causes the entry to be + activated. + + Entries in the valid state may also be set + to makeCall or clearCall to make or clear + X.25 calls to the peer. After such a set + request the entry will still be in the valid + state. Setting a value of makeCall causes + the agent to initiate an X.25 call request + to the peer specified by the entry. Setting + a value of clearCall causes the agent to + initiate clearing one X.25 call present to + the peer. Each set request will initiate + another call or clear request (up to the + maximum allowed); this means that management + stations that fail to get a response to a + set request should query to see if a call + was in fact placed or cleared before + retrying the request. Entries not in the + valid state can not be set to makeCall or + clearCall. + + The values of makeCall and clearCall provide + for circuit control on devices which perform + Ethernet Bridging using static circuit + assignment without address recognition; + other devices which dynamically place calls + based on destination addresses may reject + such requests. + + An agent that (re)creates a new entry + because of a set with createRequest, should + also (re)create a mioxPeerEncTable entry + with a mioxPeerEncIndex of 1, and a + mioxPeerEncType of 204 (hex CC)." + ::= { mioxPeerEntry 2 } + +mioxPeerMaxCircuits OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of X.25 circuits allowed + to this peer." + DEFVAL { 1 } + ::= { mioxPeerEntry 3 } + +mioxPeerIfIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the ifIndex object for the + interface to X.25 to use to call the peer." + DEFVAL { 1 } + ::= { mioxPeerEntry 4 } + +mioxPeerConnectSeconds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds a call to this peer + was active. This counter will be + incremented by one for every second a + connection to a peer was open. If two calls + are open at the same time, one second of + elapsed real time will results in two + seconds of connect time." + ::= { mioxPeerEntry 5 } + +mioxPeerX25CallParamId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The instance of the index object in the + x25CallParmTable from RFC 1382 for the X.25 + call parameters used to communicate with the + remote host. The well known value {0 0} + indicates no call parameters specified." + DEFVAL { {0 0} } + ::= { mioxPeerEntry 6 } + +mioxPeerEnAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Encapsulation address of the remote + host mapped by this table entry. A length + of zero indicates the remote IP address is + unknown or unspecified for use as a PLE + default. + + The first octet of this object contains the + encapsulation type, the remaining octets + contain an address of that type. Thus for + an IP address, the length will be five + octets, the first octet will contain 204 + (hex CC), and the last four octets will + contain the IP address. For a snap + encapsulation, the first byte would be 128 + (hex 80) and the rest of the octet string + would have the snap header." + DEFVAL { ''h } + ::= { mioxPeerEntry 7 } + +mioxPeerX121Address OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The X.25 address of the remote host mapped + by this table entry. A zero length string + indicates the X.25 address is unspecified + for use as the PLE default." + DEFVAL { ''h } + ::= { mioxPeerEntry 8 } + +-- Systems can claim conformance to this MIB without +-- implementing sets to mioxPeerX25CircuitId. +-- However systems that use PVCs with RFC1356 +-- are encouraged to implement sets. +mioxPeerX25CircuitId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the instance of the + index for the X.25 circuit open to the peer + mapped by this table entry. The well known + value {0 0} indicates no connection + currently active. For multiple connections, + this identifies the index of a multiplexing + table entry for the connections. This can + only be written to configure use of PVCs + which means the identified circuit table + entry for a write must be a PVC." + DEFVAL { {0 0} } + ::= { mioxPeerEntry 9 } + +mioxPeerDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object returns any identification + information about the peer. An agent may + supply the comment information found in the + configuration file entry for this peer. A + zero length string indicates no information + available." + DEFVAL { ''h } + ::= { mioxPeerEntry 10 } + + + +-- ########################################################### +-- Peer Encapsulation Table +-- ########################################################### + +mioxPeerEncTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPeerEncEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains the list of + encapsulations used to communicate with a + peer. This table has two indexes, the first + identifies the peer, the second + distinguishes encapsulation types. + + The first index identifies the corresponding + entry in the mioxPeerTable. The second + index gives the priority of the different + encapsulations. + + The encapsulation types are ordered in + priority order. For calling a peer, the + first entry (mioxPeerEncIndex of 1) is tried + first. If the call doesn't succeed because + the remote host clears the call due to + incompatible call user data, the next entry + in the list is tried. Each entry is tried + until the list is exhausted. + + For answering a call, the encapsulation type + requested by the peer must be found the list + or the call will be refused. If there are + no entries in this table for a peer, all + call requests from the peer will be refused. + + Objects in this table can only be set when + the mioxPeerStatus object with the same + index has a value of underCreation. When + that status object is set to invalid and + deleted, the entry in this table with that + peer index must also be deleted." + ::= { mioxPeer 2 } + +mioxPeerEncEntry OBJECT-TYPE + SYNTAX MioxPeerEncEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Per connection information." + INDEX { mioxPeerIndex, mioxPeerEncIndex} + ::= { mioxPeerEncTable 1 } + +MioxPeerEncEntry ::= SEQUENCE { + mioxPeerEncIndex + PositiveInteger, + mioxPeerEncType + INTEGER + } + +mioxPeerEncIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The second index in the table which + distinguishes different encapsulation + types." + ::= { mioxPeerEncEntry 1 } + +mioxPeerEncType OBJECT-TYPE + SYNTAX INTEGER (0..256) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the encapsulation type. For + IP encapsulation this will have a value of + 204 (hex CC). For SNAP encapsulated + packets, this will have a value of 128 (hex + 80). For CLNP, ISO 8473, this will have a + value of 129 (hex 81). For ES-ES, ISO 9542, + this will have a value of 130 (hex 82). A + value of 197 (hex C5) identifies the Blacker + X.25 encapsulation. A value of 0, + identifies the Null encapsulation. + + This value can only be written when the + mioxPeerStatus object with the same + mioxPeerIndex has a value of underCreation. + Setting this object to a value of 256 + deletes the entry. When deleting an entry, + all other entries in the mioxPeerEncTable + with the same mioxPeerIndex and with an + mioxPeerEncIndex higher then the deleted + entry, will all have their mioxPeerEncIndex + values decremented by one." + ::= { mioxPeerEncEntry 2 } + +-- ########################################################### + +END diff --git a/mibs/ietf/MIP-MIB b/mibs/ietf/MIP-MIB new file mode 100644 index 0000000..bcdf0ba --- /dev/null +++ b/mibs/ietf/MIP-MIB @@ -0,0 +1,2121 @@ + MIP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, Gauge32, Integer32, Unsigned32, + IpAddress, mib-2, + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + mipMIB MODULE-IDENTITY + LAST-UPDATED "9606040000Z" + ORGANIZATION "IETF Mobile IP Working Group" + CONTACT-INFO + " David Cong + Postal: Motorola + 1301 E. Algonquin Rd. + Schaumburg, IL 60196 + Phone: +1-847-576-1357 + Email: cong@comm.mot.com" + DESCRIPTION + "The MIB Module for the Mobile IP." + ::= { mib-2 44 } + + mipMIBObjects OBJECT IDENTIFIER ::= { mipMIB 1 } + + -- Groups under mipMIBObjects + + mipSystem OBJECT IDENTIFIER ::= { mipMIBObjects 1 } + mipSecurity OBJECT IDENTIFIER ::= { mipMIBObjects 2 } + mipMN OBJECT IDENTIFIER ::= { mipMIBObjects 3 } + mipMA OBJECT IDENTIFIER ::= { mipMIBObjects 4 } + mipFA OBJECT IDENTIFIER ::= { mipMIBObjects 5 } + mipHA OBJECT IDENTIFIER ::= { mipMIBObjects 6 } + + mnSystem OBJECT IDENTIFIER ::= { mipMN 1 } + mnDiscovery OBJECT IDENTIFIER ::= { mipMN 2 } + mnRegistration OBJECT IDENTIFIER ::= { mipMN 3 } + + maAdvertisement OBJECT IDENTIFIER ::= { mipMA 2 } + + faSystem OBJECT IDENTIFIER ::= { mipFA 1 } + faAdvertisement OBJECT IDENTIFIER ::= { mipFA 2 } + faRegistration OBJECT IDENTIFIER ::= { mipFA 3 } + haRegistration OBJECT IDENTIFIER ::= { mipHA 3 } + + -- Textual convention + + RegistrationFlags ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to define the registration + flags for Mobile IP registration extension: + vjCompression + -- Request to use VJ compression + gre + -- Request to use GRE + minEnc + -- Request to use minimal encapsulation + decapsulationByMN + -- Decapsulation by mobile node + broadcastDatagram + -- Request to receive broadcasts + simultaneoursBindings + -- Request to retain prior binding(s)." + SYNTAX BITS { + vjCompression(0), + gre(1), + minEnc(2), + decapsulationbyMN(3), + broadcastDatagram(4), + simultaneousBindings(5) + } + + -- mipSystem Group + + mipEntities OBJECT-TYPE + SYNTAX BITS { + mobileNode(0), + foreignAgent(1), + homeAgent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes which Mobile IP entities are + supported by this managed entity. The entity may + support more than one Mobile IP entities. For example, + the entity supports both Foreign Agent (FA) and Home + Agent (HA). Therefore, bit 1 and bit 2 are set to 1 + for this object." + ::= { mipSystem 1 } + + mipEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Mobile IP protocol should be + enabled for the managed entity. If it is disabled, the + entity should disable both agent discovery and + registration functions." + ::= { mipSystem 2 } + + mipEncapsulationSupported OBJECT-TYPE + SYNTAX BITS { + ipInIp(0), + gre(1), + minEnc(2), + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Encapsulation methods supported by the Mobile IP + entity. The entity may support multiple encapsulation + methods or none of them: + ipInIp(0), -- IP Encapsulation within IP + gre(1), -- Generic Routing Encapsulation, + -- refers to RFC1701 + minEnc(2), -- Minimal Encapsulation within IP." + ::= { mipSystem 3 } + + -- mipSecurity Group + + mipSecAssocTable OBJECT-TYPE + SYNTAX SEQUENCE OF MipSecAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Mobility Security Associations." + ::= { mipSecurity 1 } + + mipSecAssocEntry OBJECT-TYPE + SYNTAX MipSecAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "One particular Mobility Security Association." + INDEX { mipSecPeerAddress, mipSecSPI } + ::= { mipSecAssocTable 1 } + + MipSecAssocEntry ::= + SEQUENCE { + mipSecPeerAddress IpAddress, + mipSecSPI Unsigned32, + mipSecAlgorithmType INTEGER, + mipSecAlgorithmMode INTEGER, + mipSecKey OCTET STRING, + mipSecReplayMethod INTEGER + } + + mipSecPeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the peer entity with which this + node shares the mobility security association." + ::= { mipSecAssocEntry 1 } + + mipSecSPI OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SPI is the 4-byte opaque index within the + Mobility Security Association which selects the + specific security parameters to be used to + authenticate the peer, i.e. the rest of the variables + in this MipSecAssocEntry." + ::= { mipSecAssocEntry 2 } + + mipSecAlgorithmType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + md5(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Type of security algorithm." + ::= { mipSecAssocEntry 3 } + + mipSecAlgorithmMode OBJECT-TYPE + SYNTAX INTEGER { + other(1), + prefixSuffix(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Security mode used by this algorithm." + ::= { mipSecAssocEntry 4 } + + mipSecKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The shared secret key for the security + associations. Reading this object will always return + zero length value." + ::= { mipSecAssocEntry 5 } + + mipSecReplayMethod OBJECT-TYPE + SYNTAX INTEGER { + other(1), + timestamps(2), + nonces(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The replay-protection method supported for this SPI + within this Mobility Security Association." + ::= { mipSecAssocEntry 6 } + + -- Mobile IP security violation total counter + + mipSecTotalViolations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of security violations in the entity" + ::= { mipSecurity 2 } + + -- Mobile IP security violation table + + mipSecViolationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MipSecViolationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about security + violations." + ::= { mipSecurity 3 } + + mipSecViolationEntry OBJECT-TYPE + SYNTAX MipSecViolationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one particular security violation." + INDEX { mipSecViolatorAddress } + ::= { mipSecViolationTable 1 } + + MipSecViolationEntry ::= + SEQUENCE { + mipSecViolatorAddress IpAddress, + mipSecViolationCounter Counter32, + mipSecRecentViolationSPI Integer32, + mipSecRecentViolationTime TimeStamp, + mipSecRecentViolationIDLow Integer32, + mipSecRecentViolationIDHigh Integer32, + mipSecRecentViolationReason INTEGER + } + + mipSecViolatorAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Violator's IP address. The violator is not necessary + in the mipSecAssocTable." + ::= { mipSecViolationEntry 1 } + + mipSecViolationCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of security violations for this peer." + ::= { mipSecViolationEntry 2 } + + mipSecRecentViolationSPI OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SPI of the most recent security violation for this + peer. If the security violation is due to an + identification mismatch, then this is the SPI from the + Mobile-Home Authentication Extension. If the security + violation is due to an invalid authenticator, then + this is the SPI from the offending authentication + extension. In all other cases, it should be set to + zero." + ::= { mipSecViolationEntry 3 } + + mipSecRecentViolationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time of the most recent security violation for this + peer." + ::= { mipSecViolationEntry 4 } + + mipSecRecentViolationIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of identification used in request or + reply of the most recent security violation for this + peer." + ::= { mipSecViolationEntry 5 } + + mipSecRecentViolationIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-order 32 bits of identification used in request + or reply of the most recent security violation for + this peer." + ::= { mipSecViolationEntry 6 } + + mipSecRecentViolationReason OBJECT-TYPE + SYNTAX INTEGER { + noMobilitySecurityAssociation(1), + badAuthenticator(2), + badIdentifier(3), + badSPI(4), + missingSecurityExtension(5), + other(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reason for the most recent security violation for + this peer." + ::= { mipSecViolationEntry 7 } + + -- mipMN Group + -- mipSystem Group + + mnState OBJECT-TYPE + SYNTAX INTEGER { + home(1), + registered(2), + pending(3), + isolated(4), + unknown(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates mobile node's state of Mobile IP: + home, + -- MN is connected to home network. + registered, + -- MN has registered on foreign network + pending, + -- MN has sent registration request and is + waiting for the reply + isolated, + -- MN is isolated from network + unknown + -- MN can not determine its state." + ::= { mnSystem 1 } + + mnHomeAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An IP address that is assigned for an extended period + of time to the mobile node. It remains unchanged + regardless of the mobile node's current point of + attachment." + ::= { mnSystem 2 } + + -- Mobile node's home agent list + + mnHATable OBJECT-TYPE + SYNTAX SEQUENCE OF MnHAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all of the mobile node's potential + home agents." + ::= { mnSystem 3 } + + mnHAEntry OBJECT-TYPE + SYNTAX MnHAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for a particular Home Agent." + INDEX { mnHAAddress } + ::= { mnHATable 1 } + + MnHAEntry ::= SEQUENCE { + mnHAAddress IpAddress, + mnCurrentHA TruthValue, + mnHAStatus RowStatus + } + + mnHAAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of mobile node's Home Agent." + ::= { mnHAEntry 1 } + + mnCurrentHA OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this home agent is the current home agent for + the mobile node. If it is true, the mobile node is + registered with that home agent." + ::= { mnHAEntry 2 } + + mnHAStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for this home agent entry. If the + status is set to 'createAndGo' or 'active', then the + mobile node can use mnHAAddress as a valid candidate + for a home agent. If the status is set to 'destroy', + then the mobile node should delete this row, and + deregister from that home agent." + ::= { mnHAEntry 3 } + + mnFATable OBJECT-TYPE + SYNTAX SEQUENCE OF MnFAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all foreign agents that the mobile + node knows about and their corresponding COA (care-of + address). This COA is an address of a foreign agent + with which the mobile node is registered. The table is + updated when advertisements are received by the mobile + node. If an advertisement expires, its entry(s) should + be deleted from the table. One foreign agent can + provide more than one COA in its advertisements." + ::= { mnDiscovery 1 } + + mnFAEntry OBJECT-TYPE + SYNTAX MnFAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "One pair of foreign agent IP address and COA for that + foreign agent." + INDEX { mnFAAddress, mnCOA } + ::= { mnFATable 1 } + + MnFAEntry ::= SEQUENCE { + mnFAAddress IpAddress, + mnCOA IpAddress + } + + mnFAAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Foreign agent's IP address." + ::= { mnFAEntry 1 } + + mnCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A care-of address being offered by this foreign agent + or a co-located care-of address which the mobile node + has associated with one of its own network + interfaces." + ::= { mnFAEntry 2 } + + -- Mobile node could store multiple agent advertisements, however, + -- only the most recently received agent advertisement information + -- is required to be made available to the manager station. + + mnRecentAdvReceived OBJECT IDENTIFIER ::= { mnDiscovery 2 } + + mnAdvSourceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the most recently received + Agent Advertisement. This address could be the address + of a home agent or a foreign agent." + ::= { mnRecentAdvReceived 1 } + + mnAdvSequence OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number of the most recently received + advertisement. The sequence number ranges from 0 to + 0xffff. After the sequence number attains the value + 0xffff, it will roll over to 256." + ::= { mnRecentAdvReceived 2 } + + mnAdvFlags OBJECT-TYPE + SYNTAX BITS { + vjCompression(0), + gre(1), + minEnc(2), + foreignAgent(3), + homeAgent(4), + busy(5), + regRequired(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flags are contained in the 7th byte in the + extension of the most recently received mobility agent + advertisement: + vjCompression + -- Agent supports Van Jacobson compression + gre + -- Agent offers Generice Routing Encapsulation + minEnc, + -- Agent offers Minimal Encapsulation + foreignAgent, + -- Agent is a Foreign Agent + homeAgent, + -- Agent is a Home Agent + busy, + -- Foreign Agent is busy + regRequired, + -- FA registration is required." + ::= { mnRecentAdvReceived 3 } + + mnAdvMaxRegLifetime OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The longest lifetime in seconds that the agent is + willing to accept in any registration request." + ::= { mnRecentAdvReceived 4 } + + mnAdvMaxAdvLifetime OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length of time that the Advertisement is + considered valid in the absence of further + Advertisements." + REFERENCE + "AdvertisementLifeTime in RFC1256." + ::= { mnRecentAdvReceived 5 } + + mnAdvTimeReceived OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recently received + advertisement was received." + ::= { mnRecentAdvReceived 6 } + + -- Mobile Node Discovery Group Counter + + mnSolicitationsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Solicitation sent by the mobile + node." + ::= { mnDiscovery 3 } + + mnAdvertisementsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements received by the mobile + node." + ::= { mnDiscovery 4 } + + mnAdvsDroppedInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements dropped by the mobile + node due to both poorly formed extensions and + unrecognized extensions with extension number in the + range 0-127." + ::= { mnDiscovery 5 } + + mnAdvsIgnoredUnknownExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of unrecognized extensions in the range + 128-255 that were ignored by the mobile node." + ::= { mnDiscovery 6 } + + mnMoveFromHAToFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from its home network to a foreign network." + ::= { mnDiscovery 7 } + + mnMoveFromFAToFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from one foreign network to another foreign + network." + ::= { mnDiscovery 8 } + + mnMoveFromFAToHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from a foreign network to its home network." + ::= { mnDiscovery 9 } + + mnGratuitousARPsSend OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Gratuitous ARPs sent by mobile node + in order to clear out any stale ARP entries in the ARP + caches of nodes on the home network." + ::= { mnDiscovery 10 } + + mnAgentRebootsDectected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of agent reboots detected by the mobile + node through sequence number of the advertisement." + ::= { mnDiscovery 11 } + + -- Mobile Node Registration Group + + -- Registration table of mobile node + + mnRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MnRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the mobile + node's attempted registration(s). The mobile node + updates this table based upon Registration Requests + sent and Registration Replies received in response to + these requests. Certain variables within this table + are also updated if when Registration Requests are + retransmitted." + ::= { mnRegistration 1 } + + mnRegistrationEntry OBJECT-TYPE + SYNTAX MnRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one registration attempt." + INDEX { mnRegAgentAddress, mnRegCOA} + ::= { mnRegistrationTable 1 } + + MnRegistrationEntry ::= SEQUENCE { + mnRegAgentAddress IpAddress, + mnRegCOA IpAddress, + mnRegFlags RegistrationFlags, + mnRegIDLow Integer32, + mnRegIDHigh Integer32, + mnRegTimeRequested Integer32, + mnRegTimeRemaining Gauge32, + mnRegTimeSent TimeStamp, + mnRegIsAccepted TruthValue, + mnCOAIsLocal TruthValue + } + + mnRegAgentAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of the agent as used in the destination + IP address of the Registration Request. The agent + may be a home agent or a foreign agent." + ::= { mnRegistrationEntry 1 } + + mnRegCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Care-of address for the registration." + ::= { mnRegistrationEntry 2 } + + mnRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by the mobile node. It is the + second byte in the Mobile IP Registratation Request + message." + ::= { mnRegistrationEntry 3 } + + mnRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of the Identification used in that + registration by the mobile node." + ::= { mnRegistrationEntry 4 } + + mnRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-order 32 bits of the Identification used in that + registration by the mobile node." + ::= { mnRegistrationEntry 5 } + + mnRegTimeRequested OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the registration is pending, then this is the + lifetime requested by the mobile node (in seconds). + If the registration has been accepted, then this is + the lifetime actually granted by the home agent in the + reply." + ::= { mnRegistrationEntry 6 } + + mnRegTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until this + registration expires. It has the same initial value + as mnRegTimeRequested and is only valid if + mnRegIsAccepted is TRUE." + ::= { mnRegistrationEntry 7 } + + mnRegTimeSent OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the last (re-)transmission occured." + ::= { mnRegistrationEntry 8 } + + mnRegIsAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if the mobile node has received a + Registration Reply indicating that service has been + accepted; false(2) otherwise. false(2) implies that + the registration is still pending." + ::= { mnRegistrationEntry 9 } + + mnCOAIsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the COA is local to (dynamically acquired by) + the mobile node or not. If it is false(2), the COA is + an address of the foreign agent." + ::= { mnRegistrationEntry 10 } + + -- Mobile Node Registration Group Counters + + mnRegRequestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests sent by the + mobile node. This does not include deregistrations + (those with Lifetime equal to zero)." + ::= { mnRegistration 2 } + + mnDeRegRequestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of deregistration requests sent by the + mobile node (those with Lifetime equal to zero)." + ::= { mnRegistration 3 } + + mnRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration replies received by the + mobile node in which the Lifetime is greater than + zero." + ::= { mnRegistration 4 } + + mnDeRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of (de)registration replies received by + the mobile node in which the Lifetime is equal to + zero." + ::= { mnRegistration 5 } + + mnRepliesInvalidHomeAddress OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with invalid home address for + the mobile node." + ::= { mnRegistration 6 } + + mnRepliesUnknownHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with unknown home agents + (not in home agent table)." + ::= { mnRegistration 7 } + + mnRepliesUnknownFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with unknown foreign agents if + replies relayed through foreign agent." + ::= { mnRegistration 8 } + + mnRepliesInvalidID OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with invalid Identification + fields." + ::= { mnRegistration 9 } + + mnRepliesDroppedInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies dropped by the + mobile node due to both poorly formed extensions and + unrecognized extensions with extension number in the + range 0-127." + ::= { mnRegistration 10 } + + mnRepliesIgnoredUnknownExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies that contained + one or more unrecognized extensions in the range + 128-255 that were ignored by the mobile node." + ::= { mnRegistration 11 } + + mnRepliesHAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies without a valid Home Agent to + Mobile Node authenticator." + ::= { mnRegistration 12 } + + mnRepliesFAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies without a valid Foreign Agent + to Mobile Node authenticator." + ::= { mnRegistration 13 } + + mnRegRequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests accepted by the + mobile node's home agent (Code 0 and Code 1)." + ::= { mnRegistration 14 } + + mnRegRequestsDeniedByHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests denied by + mobile node's home agent (Sum of Code 128 through + Code 191)." + ::= { mnRegistration 15 } + + mnRegRequestsDeniedByFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests denied by the + foreign agent (Sum of Codes 64 through Code 127)." + ::= { mnRegistration 16 } + + mnRegRequestsDeniedByHADueToID OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Request denied by home + agent due to identification mismatch." + ::= { mnRegistration 17 } + + mnRegRequestsWithDirectedBroadcast OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests sent by mobile + node with a directed broadcast address in the home + agent field." + ::= { mnRegistration 18 } + + -- MA Advertisement Group + + -- Mobility agent advertisement configuration table + + maAdvConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF MaAdvConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configurable advertisement + parameters for all advertisement interfaces in + the mobility agent." + ::= { maAdvertisement 1 } + + maAdvConfigEntry OBJECT-TYPE + SYNTAX MaAdvConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Advertisement parameters for one advertisement + interface." + INDEX { maInterfaceAddress } + ::= { maAdvConfigTable 1 } + + MaAdvConfigEntry ::= SEQUENCE { + maInterfaceAddress IpAddress, + maAdvMaxRegLifetime Integer32, + maAdvPrefixLengthInclusion TruthValue, + maAdvAddress IpAddress, + maAdvMaxInterval Integer32, + maAdvMinInterval Integer32, + maAdvMaxAdvLifetime Integer32, + maAdvResponseSolicitationOnly TruthValue, + maAdvStatus RowStatus + } + + maInterfaceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address for advertisement interface." + ::= { maAdvConfigEntry 1 } + + maAdvMaxRegLifetime OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The longest lifetime in seconds that mobility agent + is willing to accept in any Registration Request." + ::= { maAdvConfigEntry 2 } + + maAdvPrefixLengthInclusion OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether the advertisement should include the Prefix- + Lengths Extension. If it is true, all advertisements + sent over this interface should include the + Prefix-Lengths Extension." + ::= { maAdvConfigEntry 3 } + + maAdvAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP destination address to be used for + advertisements sent from the interface. The only + permissible values are the all-systems multicast + address (224.0.0.1) or the limited-broadcast address + (255.255.255.255)." + REFERENCE + "AdvertisementAddress in RFC1256." + ::= { maAdvConfigEntry 4 } + + maAdvMaxInterval OBJECT-TYPE + SYNTAX Integer32 (4..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time in seconds between successive + transmissions of Agent Advertisements from this + interface." + REFERENCE + "MaxAdvertisementInterval in RFC1256." + ::= { maAdvConfigEntry 5 } + + maAdvMinInterval OBJECT-TYPE + SYNTAX Integer32 (3..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum time in seconds between successive + transmissions of Agent Advertisements from this + interface." + REFERENCE + "MinAdvertisementInterval in RFC1256." + ::= { maAdvConfigEntry 6 } + + maAdvMaxAdvLifetime OBJECT-TYPE + SYNTAX Integer32 (4..9000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time (in seconds) to be placed in the Lifetime + field of the RFC 1256-portion of the Agent + Advertisements sent over this interface." + REFERENCE + "AdvertisementLifetime in RFC1256." + ::= { maAdvConfigEntry 7 } + + maAdvResponseSolicitationOnly OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The flag indicates whether the advertisement from + that interface should be sent only in response to an + Agent Solicitation message." + DEFVAL { false } + ::= { maAdvConfigEntry 8 } + + maAdvStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for the agent advertisement table. If + this column status is 'active', the manager should not + change any column in the row." + ::= { maAdvConfigEntry 9 } + + -- MA Advertisement Group Counters + + maAdvertisementsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements sent by the mobility + agent." + ::= { maAdvertisement 2 } + + maAdvsSentForSolicitation OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements sent by mobility agent + in response to mobile node solicitations." + ::= { maAdvertisement 3 } + + maSolicitationsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of solicitations received by the + mobility agent." + ::= { maAdvertisement 4 } + + -- Foreign Agent Group + + -- Foreign Agent System Group + + faCOATable OBJECT-TYPE + SYNTAX SEQUENCE OF FaCOAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all of the care-of addresses + (COAs) supported by the foreign agent. New entries can + be added to the table. The order of entries in the + faCOATAble is also the order in which the COAs are + listed in the Agent Advertisement." + ::= { faSystem 1 } + + faCOAEntry OBJECT-TYPE + SYNTAX FaCOAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of COA" + INDEX { faSupportedCOA } + ::= { faCOATable 1 } + + FaCOAEntry ::= + SEQUENCE { + faSupportedCOA IpAddress, + faCOAStatus RowStatus + } + + faSupportedCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Care-of-address supported by this foreign agent." + ::= { faCOAEntry 1 } + + faCOAStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for COA entry." + ::= { faCOAEntry 2 } + + -- Foreign Agent Advertisement Group + -- FA needs to implement MA Advertisement Group plus that group + + faIsBusy OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether or not the foreign agent is too busy to + accept additional registrations. If true(1), the agent + is busy and any Agent advertisements sent from this + agent should have the 'B' bit set to 1." + ::= { faAdvertisement 1 } + + faRegistrationRequired OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Whether or not this foreign agent requires + registration even from those mobile nodes that have + acquired their own, colocated care-of address. If + true(1), registration is required and any Agent + Advertisements sent from this agent should have the + 'R' bit set to 1." + ::= { faAdvertisement 2 } + + -- Foreign Agent Registration Group + + -- Foreign Agent Visitors List + + faVisitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FaVisitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the foreign agent's visitor list. + The foreign agent updates this table in response to + registration events from mobile nodes." + ::= { faRegistration 1 } + + faVisitorEntry OBJECT-TYPE + SYNTAX FaVisitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for one visitor." + INDEX { faVisitorIPAddress } + ::= { faVisitorTable 1 } + + FaVisitorEntry ::= SEQUENCE { + faVisitorIPAddress IpAddress, + faVisitorHomeAddress IpAddress, + faVisitorHomeAgentAddress IpAddress, + faVisitorTimeGranted Integer32, + faVisitorTimeRemaining Gauge32, + faVisitorRegFlags RegistrationFlags, + faVisitorRegIDLow Integer32, + faVisitorRegIDHigh Integer32, + faVisitorRegIsAccepted TruthValue + } + + faVisitorIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source IP address of visitor's Registration Request." + ::= { faVisitorEntry 1 } + + faVisitorHomeAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Home (IP) address of visiting mobile node." + ::= { faVisitorEntry 2 } + + faVisitorHomeAgentAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Home agent IP address for that visiting mobile node." + ::= { faVisitorEntry 3 } + + faVisitorTimeGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration. Only valid if + faVisitorRegIsAccepted is true(1)." + ::= { faVisitorEntry 4 } + + faVisitorTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until the + registration is expired. It has the same initial value + as faVisitorTimeGranted, and is counted down by the + foreign agent." + ::= { faVisitorEntry 5 } + + faVisitorRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by mobile node." + ::= { faVisitorEntry 6 } + + faVisitorRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low 32 bits of Identification used in that + registration by the mobile node." + ::= { faVisitorEntry 7 } + + faVisitorRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High 32 bits of Identification used in that + registration by the mobile node." + ::= { faVisitorEntry 8 } + + faVisitorRegIsAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the registration has been accepted or not. If + it is false(2), this registration is still pending for + reply." + ::= { faVisitorEntry 9 } + + -- Foreign Agent Registration Group Counters + + faRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Registration Requests + received." + ::= { faRegistration 2 } + + faRegRequestsRelayed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests relayed to home + agent by foreign agent." + ::= { faRegistration 3 } + + faReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- reason unspecified (Code 64)." + ::= { faRegistration 4 } + + faAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- administratively prohibited (Code + 65)." + ::= { faRegistration 5 } + + faInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- insufficient resources (Code 66)." + ::= { faRegistration 6 } + + faMNAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- mobile node failed authentication + (Code 67)." + ::= { faRegistration 7 } + + faRegLifetimeTooLong OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested lifetime too long (Code + 69)." + ::= { faRegistration 8 } + + faPoorlyFormedRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- poorly formed request (Code 70)." + ::= { faRegistration 9 } + + faEncapsulationUnavailable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested encapsulation unavailable + (Code 72)." + ::= { faRegistration 10 } + + faVJCompressionUnavailable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested Van Jacobson header + compression unavailable (Code 73)." + ::= { faRegistration 11 } + + faHAUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- home agent unreachable (Codes + 80-95)." + ::= { faRegistration 12 } + + faRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of well-formed Registration Replies + received by foreign agent." + ::= { faRegistration 13 } + + faRegRepliesRelayed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Registration Replies relayed to + the mobile node by foreign agent." + ::= { faRegistration 14 } + + faHAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies denied by + foreign agent -- home agent failed authentication + (Code 68)." + ::= { faRegistration 15 } + + faPoorlyFormedReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies denied by + foreign agent -- poorly formed reply (Code 71)." + ::= { faRegistration 16 } + + -- Home Agent Group + + -- Home Agent Registration Group + + -- Home agent mobility binding list + + haMobilityBindingTable OBJECT-TYPE + SYNTAX SEQUENCE OF HaMobilityBindingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the home agent's mobility binding + list. The home agent updates this table in response + to registration events from mobile nodes." + ::= { haRegistration 1 } + + haMobilityBindingEntry OBJECT-TYPE + SYNTAX HaMobilityBindingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry on the mobility binding list." + INDEX { haMobilityBindingMN, haMobilityBindingCOA } + ::= { haMobilityBindingTable 1 } + + HaMobilityBindingEntry ::= SEQUENCE { + haMobilityBindingMN IpAddress, + haMobilityBindingCOA IpAddress, + haMobilityBindingSourceAddress IpAddress, + haMobilityBindingRegFlags RegistrationFlags, + haMobilityBindingRegIDLow Integer32, + haMobilityBindingRegIDHigh Integer32, + haMobilityBindingTimeGranted Integer32, + haMobilityBindingTimeRemaining Gauge32 + } + + haMobilityBindingMN OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's home (IP) address." + ::= { haMobilityBindingEntry 1 } + + haMobilityBindingCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's care-of-address. One mobile node can + have multiple bindings with different + care-of-addresses." + ::= { haMobilityBindingEntry 2 } + + haMobilityBindingSourceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP source address of the Registration Request as + received by the home agent. Will be either a mobile + node's co-located care-of address or an address of the + foreign agent." + ::= { haMobilityBindingEntry 3 } + + haMobilityBindingRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by mobile node." + ::= { haMobilityBindingEntry 4 } + + haMobilityBindingRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low 32 bits of Identification used in that binding by + the mobile node." + ::= { haMobilityBindingEntry 5 } + + haMobilityBindingRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High 32 bits of Identification used in that binding by + the mobile node." + ::= { haMobilityBindingEntry 6 } + + haMobilityBindingTimeGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration." + ::= { haMobilityBindingEntry 7 } + + haMobilityBindingTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until the + registration is expired. It has the same initial value + as haMobilityBindingTimeGranted, and is counted down + by the home agent." + ::= { haMobilityBindingEntry 8 } + + -- Home Agent Registration Group Counters + + -- Home agent registration Counters per node + + haCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration statistics for all + mobile nodes authorized to use this home agent." + ::= { haRegistration 2 } + + haCounterEntry OBJECT-TYPE + SYNTAX HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Registration statistics for one mobile node." + INDEX { haMobilityBindingMN } + ::= { haCounterTable 1 } + + HaCounterEntry ::= SEQUENCE { + haServiceRequestsAccepted Counter32, + haServiceRequestsDenied Counter32, + haOverallServiceTime Gauge32, + haRecentServiceAcceptedTime TimeStamp, + haRecentServiceDeniedTime TimeStamp, + haRecentServiceDeniedCode INTEGER + } + + haServiceRequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + accepted by the home agent (Code 0 + Code 1)." + ::= { haCounterEntry 2 } + + haServiceRequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + denied by the home agent (sum of all registrations + denied with Code 128 through Code 159)." + ::= { haCounterEntry 3 } + + haOverallServiceTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Overall service time (in seconds) that has + accumulated for the mobile node since the home agent + last rebooted." + ::= { haCounterEntry 4 } + + haRecentServiceAcceptedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recent Registration + Request was accepted by the home agent for this mobile + node." + ::= { haCounterEntry 5 } + + haRecentServiceDeniedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recent Registration + Request was denied by the home agent for this mobile + node." + ::= { haCounterEntry 6 } + + haRecentServiceDeniedCode OBJECT-TYPE + SYNTAX INTEGER { + reasonUnspecified(128), + admProhibited(129), + insufficientResource(130), + mnAuthenticationFailure(131), + faAuthenticationFailure(132), + idMismatch(133), + poorlyFormedRequest(134), + tooManyBindings(135), + unknownHA(136) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Code indicating the reason why the most recent + Registration Request for this mobile node was rejected + by the home agent." + ::= { haCounterEntry 7 } + + -- Home agent registration Counters for all mobile nodes. + + haRegistrationAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests accepted by + home agent (Code 0)." + ::= { haRegistration 3 } + + haMultiBindingUnsupported OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests accepted by + home agent -- simultaneous mobility bindings + unsupported (Code 1)." + ::= { haRegistration 4 } + + haReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- reason unspecified (Code 128)." + ::= { haRegistration 5 } + + haAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- administratively prohibited (Code 129)." + ::= { haRegistration 6 } + + haInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- insufficient resources (Code 130)." + ::= { haRegistration 7 } + + haMNAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- mobile node failed authentication (Code + 131)." + ::= { haRegistration 8 } + + haFAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- foreign agent failed authentication (Code + 132)." + ::= { haRegistration 9 } + + haIDMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- Identification mismatch (Code 133)." + ::= { haRegistration 10 } + + haPoorlyFormedRequest OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- poorly formed request (Code 134)." + ::= { haRegistration 11 } + + haTooManyBindings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- too many simultaneous mobility bindings (Code + 135)." + ::= { haRegistration 12 } + + haUnknownHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- unknown home agent address (Code 136)." + ::= { haRegistration 13 } + + haGratuitiousARPsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of gratuition ARPs sent by the home + agent on behalf of mobile nodes." + ::= { haRegistration 14 } + + haProxyARPsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of proxy ARPs sent by the home agent on + behalf of mobile nodes." + ::= { haRegistration 15 } + + haRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests received by + home agent." + ::= { haRegistration 16 } + + haDeRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests received by the + home agent with a Lifetime of zero (requests to + deregister)." + ::= { haRegistration 17 } + + haRegRepliesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies sent by the home + agent." + ::= { haRegistration 18 } + + haDeRegRepliesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies sent by the home + agent in response to requests to deregister." + ::= { haRegistration 19 } + + mipMIBNotificationPrefix OBJECT IDENTIFIER ::= { mipMIB 2 } + + mipMIBNotifications OBJECT IDENTIFIER ::= + { mipMIBNotificationPrefix 0 } + + mipAuthFailure NOTIFICATION-TYPE + OBJECTS { mipSecViolatorAddress, + mipSecRecentViolationSPI, + mipSecRecentViolationIDLow, + mipSecRecentViolationIDHigh, + mipSecRecentViolationReason + } + + STATUS current + DESCRIPTION + "The mipAuthFailure indicates that the Mobile IP + entity has an authentication failure when it validates + the mobile Registration Request or Reply. + Implementation of this trap is optional." + ::= { mipMIBNotifications 1 } + + + mipMIBConformance OBJECT IDENTIFIER ::= { mipMIB 3 } + + mipGroups OBJECT IDENTIFIER ::= { mipMIBConformance 1 } + mipCompliances OBJECT IDENTIFIER ::= { mipMIBConformance 2 } + + -- compliance statements + + mipCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the Mobile IP MIB." + MODULE + MANDATORY-GROUPS { mipSystemGroup } + + GROUP mipSecAssociationGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) which support security associations. + Mobile Nodes and Home Agents must implement this + group. Foreign Agents must implement this group if + they maintain any security associations." + + GROUP mipSecViolationGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) that can log security violations." + + GROUP mnSystemGroup + DESCRIPTION + "This group is mandatory for mobile node." + + GROUP mnDiscoveryGroup + DESCRIPTION + "This group is mandatory for mobile nodes which + implement the Agent Discovery function." + + GROUP mnRegistrationGroup + DESCRIPTION + "This group is mandatory for mobile nodes." + + GROUP maAdvertisementGroup + DESCRIPTION + "This group is mandatory for the mobility agents (HA + and FA) since they must implement Agent + Advertisement." + + GROUP faSystemGroup + DESCRIPTION + "This group is mandatory for foreign agents." + + GROUP faAdvertisementGroup + DESCRIPTION + "This group is mandatory for foreign agents." + + GROUP faRegistrationGroup + DESCRIPTION + "This group is mandatory for foreign agents." + GROUP haRegistrationGroup + DESCRIPTION + "This group is mandatory for home agents." + + GROUP haRegNodeCountersGroup + DESCRIPTION + "This group is mandatory for home agents which log + registration counters for each individual mobile + node." + + GROUP mipSecNotificationsGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) that can report the security violations." + + ::= { mipCompliances 1 } + + -- Units of conformance + + mipSystemGroup OBJECT-GROUP + OBJECTS { mipEntities, mipEnable, mipEncapsulationSupported } + STATUS current + DESCRIPTION + "A collection of objects providing the basic Mobile IP + entity's management information." + ::= { mipGroups 1 } + + mipSecAssociationGroup OBJECT-GROUP + OBJECTS { mipSecAlgorithmType, mipSecAlgorithmMode, + mipSecKey, mipSecReplayMethod } + STATUS current + DESCRIPTION + "A collection of objects providing the management + information for security associations of Mobile IP + entities." + ::= { mipGroups 2 } + + mipSecViolationGroup OBJECT-GROUP + OBJECTS { mipSecTotalViolations, + mipSecViolationCounter, mipSecRecentViolationSPI, + mipSecRecentViolationTime, + mipSecRecentViolationIDLow, + mipSecRecentViolationIDHigh, + mipSecRecentViolationReason } + STATUS current + DESCRIPTION + "A collection of objects providing the management + information for security violation logging of Mobile + IP entities." + ::= { mipGroups 3 } + + mnSystemGroup OBJECT-GROUP + OBJECTS { mnState, mnCurrentHA, mnHomeAddress, + mnHAStatus } + STATUS current + DESCRIPTION + "A collection of objects providing the basic + management information for mobile nodes." + ::= { mipGroups 4 } + + mnDiscoveryGroup OBJECT-GROUP + OBJECTS { mnFAAddress, mnCOA, mnAdvSourceAddress, + mnAdvSequence, mnAdvFlags, mnAdvMaxRegLifetime, + mnAdvMaxAdvLifetime, mnAdvTimeReceived, + mnSolicitationsSent, mnAdvertisementsReceived, + mnAdvsDroppedInvalidExtension, + mnAdvsIgnoredUnknownExtension, mnMoveFromHAToFA, + mnMoveFromFAToFA, mnMoveFromFAToHA, + mnGratuitousARPsSend, mnAgentRebootsDectected } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the Agent Discovery function within a + mobile node." + ::= { mipGroups 5 } + + mnRegistrationGroup OBJECT-GROUP + OBJECTS { mnRegAgentAddress, mnRegCOA, mnRegFlags, mnRegIDLow, + mnRegIDHigh, mnRegTimeRequested, mnRegTimeRemaining, + mnRegTimeSent, mnRegIsAccepted, mnCOAIsLocal, + mnRegRequestsSent, mnRegRepliesRecieved, + mnDeRegRequestsSent, mnDeRegRepliesRecieved, + mnRepliesInvalidHomeAddress, mnRepliesUnknownHA, + mnRepliesUnknownFA, mnRepliesInvalidID, + mnRepliesDroppedInvalidExtension, + mnRepliesIgnoredUnknownExtension, + mnRepliesHAAuthenticationFailure, + mnRepliesFAAuthenticationFailure, + mnRegRequestsAccepted, mnRegRequestsDeniedByHA, + mnRegRequestsDeniedByFA, + mnRegRequestsDeniedByHADueToID, + mnRegRequestsWithDirectedBroadcast } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + mobile node." + ::= { mipGroups 6 } + + maAdvertisementGroup OBJECT-GROUP + OBJECTS { maAdvMaxRegLifetime, + maAdvPrefixLengthInclusion, maAdvAddress, + maAdvMaxInterval, maAdvMinInterval, + maAdvMaxAdvLifetime, + maAdvResponseSolicitationOnly, maAdvStatus, + maAdvertisementsSent, maAdvsSentForSolicitation, + maSolicitationsReceived } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the Agent Advertisement function + within mobility agents." + ::= { mipGroups 7 } + + faSystemGroup OBJECT-GROUP + OBJECTS { faCOAStatus} + STATUS current + DESCRIPTION + "A collection of objects providing the basic + management information for foreign agents." + ::= { mipGroups 8 } + + faAdvertisementGroup OBJECT-GROUP + OBJECTS { faIsBusy, faRegistrationRequired } + STATUS current + DESCRIPTION + "A collection of objects providing supplemental + management information for the Agent Advertisement + function within a foreign agent." + ::= { mipGroups 9 } + + faRegistrationGroup OBJECT-GROUP + OBJECTS { faVisitorIPAddress, faVisitorHomeAddress, + faVisitorHomeAgentAddress, faVisitorTimeGranted, + faVisitorTimeRemaining, faVisitorRegFlags, + faVisitorRegIDLow, faVisitorRegIDHigh, + faVisitorRegIsAccepted, faRegRequestsReceived, + faRegRequestsRelayed, faReasonUnspecified, + faAdmProhibited, faInsufficientResource, + faMNAuthenticationFailure, faRegLifetimeTooLong, + faPoorlyFormedRequests, + faEncapsulationUnavailable, + faVJCompressionUnavailable, faHAUnreachable, + faRegRepliesRecieved, faRegRepliesRelayed, + faHAAuthenticationFailure, faPoorlyFormedReplies } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + foreign agent." + ::= { mipGroups 10 } + + haRegistrationGroup OBJECT-GROUP + OBJECTS { haMobilityBindingMN, haMobilityBindingCOA, + haMobilityBindingSourceAddress, + haMobilityBindingRegFlags, + haMobilityBindingRegIDLow, + haMobilityBindingRegIDHigh, + haMobilityBindingTimeGranted, + haMobilityBindingTimeRemaining, + haRegistrationAccepted, haMultiBindingUnsupported, + haReasonUnspecified, haAdmProhibited, + haInsufficientResource, haMNAuthenticationFailure, + haFAAuthenticationFailure, haIDMismatch, + haPoorlyFormedRequest, haTooManyBindings, + haUnknownHA, haGratuitiousARPsSent, + haProxyARPsSent, haRegRequestsReceived, + haDeRegRequestsReceived, haRegRepliesSent, + haDeRegRepliesSent } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + home agent." + ::= { mipGroups 11 } + + haRegNodeCountersGroup OBJECT-GROUP + OBJECTS { haServiceRequestsAccepted, + haServiceRequestsDenied, haOverallServiceTime, + haRecentServiceAcceptedTime, + haRecentServiceDeniedTime, + haRecentServiceDeniedCode } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for counters related to the registration + function within a home agent." + ::= { mipGroups 12 } + + mipSecNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { mipAuthFailure } + STATUS current + DESCRIPTION + "The notification related to security violations." + ::= { mipGroups 13 } + +END diff --git a/mibs/ietf/MOBILEIPV6-MIB b/mibs/ietf/MOBILEIPV6-MIB new file mode 100644 index 0000000..7aaa38e --- /dev/null +++ b/mibs/ietf/MOBILEIPV6-MIB @@ -0,0 +1,4964 @@ + MOBILEIPV6-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, mib-2, Unsigned32, Integer32, Counter32, + Gauge32, Counter64, + OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + TruthValue, DateAndTime, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB + ipv6InterfaceIfIndex + FROM IP-MIB + ; + + mip6MIB MODULE-IDENTITY + LAST-UPDATED "200602010000Z" -- 1st February 2006 + ORGANIZATION "IETF mip6 Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Kenichi Nagami + Postal: INTEC NetCore Inc. + 1-3-3, Shin-suna + Koto-ku, Tokyo, 135-0075 + Japan + + Tel: +81-3-5665-5069 + E-mail: nagami@inetcore.com + + Kazuhide Koide + Postal: Tohoku University + 2-1-1, Katahira + Aoba-ku, Sendai, 980-8577 + Japan + + Tel: +81-22-217-5454 + E-mail: koide@shiratori.riec.tohoku.ac.jp + + + + Sri Gundavelli + Postal: Cisco Systems + 170 W.Tasman Drive, + San Jose, CA 95134 + USA + + Tel: +1-408-527-6109 + E-mail: sgundave@cisco.com + + Support Group E-mail: mip6@ietf.org" + + DESCRIPTION + "The MIB module for monitoring Mobile-IPv6 + entities. + + Copyright (C) The Internet Society 2006. This + version of this MIB module is part of RFC 4295; + see the RFC itself for full legal notices. + " + + REVISION "200602010000Z" -- 1st February 2006 + DESCRIPTION "Initial version, published as RFC 4295." + + ::= { mib-2 133 } + + + -- The major groups + + mip6Notifications OBJECT IDENTIFIER ::= { mip6MIB 0 } + mip6Objects OBJECT IDENTIFIER ::= { mip6MIB 1 } + mip6Conformance OBJECT IDENTIFIER ::= { mip6MIB 2 } + mip6Core OBJECT IDENTIFIER ::= { mip6Objects 1 } + mip6Mn OBJECT IDENTIFIER ::= { mip6Objects 2 } + mip6Cn OBJECT IDENTIFIER ::= { mip6Objects 3 } + mip6Ha OBJECT IDENTIFIER ::= { mip6Objects 4 } + + -- The sub groups + + mip6System OBJECT IDENTIFIER ::= { mip6Core 1 } + mip6Bindings OBJECT IDENTIFIER ::= { mip6Core 2 } + mip6Stats OBJECT IDENTIFIER ::= { mip6Core 3 } + + mip6MnSystem OBJECT IDENTIFIER ::= { mip6Mn 1 } + mip6MnConf OBJECT IDENTIFIER ::= { mip6Mn 2 } + mip6MnRegistration OBJECT IDENTIFIER ::= { mip6Mn 3 } + + mip6CnSystem OBJECT IDENTIFIER ::= { mip6Cn 1 } + + + + mip6CnStats OBJECT IDENTIFIER ::= { mip6Cn 2 } + + mip6HaAdvertisement OBJECT IDENTIFIER ::= { mip6Ha 1 } + mip6HaStats OBJECT IDENTIFIER ::= { mip6Ha 2 } + + + + -- Textual Conventions + Mip6BURequestRejectionCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the status field in the Binding + Acknowledgment message when the Binding Update + was rejected. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + SYNTAX INTEGER { + reasonUnspecified (1), --(Code 128) + admProhibited (2), --(Code 129) + insufficientResource (3), --(Code 130) + homeRegistrationNotSupported (4), --(Code 131) + notHomeSubnet (5), --(Code 132) + notHomeAgentForThisMobileNode (6), --(Code 133) + duplicateAddressDetectionFailed (7), --(Code 134) + sequenceNumberOutOfWindow (8), --(Code 135) + expiredHomeNonceIndex (9), --(Code 136) + expiredCareofNonceIndex (10), --(Code 137) + expiredNonces (11), --(Code 138) + registrationTypeChangeDisallowed(12) --(Code 139) + } + + + + + + + + + + + + + + + + + + + + + mip6Capabilities OBJECT-TYPE + SYNTAX BITS { + mobileNode (0), + homeAgent (1), + correspondentNode (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the Mobile IPv6 functions that + are supported by this managed entity. Multiple + Mobile IPv6 functions may be supported by a single + entity. + " + REFERENCE + "RFC 3775 : Section 3.2, 4.1" + ::= { mip6System 1 } + + mip6Status OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether the Mobile IPv6 + function is enabled for the managed entity. If it + is enabled, the agent discovery and registration + functions will be operational. + Changing the status from enabled(1) to disabled(2) + will terminate the agent discovery and registration + functions. On the other hand, changing the status + from disabled(2) to enabled(1) will start the agent + discovery and registration functions. + + The value of this object SHOULD remain unchanged + across reboots of the managed entity. + " + ::= { mip6System 2 } + + + -- mip6BindingCache + + + + + + + + + + + + mip6BindingCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6BindingCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table models the Binding Cache on the + managed entity. The cache is maintained by home + agents and correspondent nodes. It contains + both correspondent registration entries and home + registration entries. + + Entries in this table are not required to survive + a reboot of the managed entity. + " + REFERENCE + "RFC 3775 : Section 4.5, 9.1, 10.1" + ::= { mip6Bindings 1 } + + mip6BindingCacheEntry OBJECT-TYPE + SYNTAX Mip6BindingCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry represents a conceptual row in the + binding cache table. It represents a single Binding + Update. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, mip6BindingHomeAddress } + ::= { mip6BindingCacheTable 1 } + + + + + + + + + + + + + + + + Mip6BindingCacheEntry ::= + SEQUENCE { + mip6BindingHomeAddressType InetAddressType, + mip6BindingHomeAddress InetAddress, + mip6BindingCOAType InetAddressType, + mip6BindingCOA InetAddress, + mip6BindingTimeRegistered DateAndTime, + mip6BindingTimeGranted Gauge32, + mip6BindingTimeRemaining Gauge32, + mip6BindingHomeRegn TruthValue, + mip6BindingMaxSeq Unsigned32, + mip6BindingUsageTS DateAndTime, + mip6BindingUsageCount Gauge32, + mip6BindingAdminStatus INTEGER + } + + mip6BindingHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingHomeAddress + that follows. + " + ::= { mip6BindingCacheEntry 1 } + + mip6BindingHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The home address of the mobile node corresponding + to the Binding Cache entry. This field is used as + the key for searching the mobile node's current + care-of address in the Binding Cache. + + The type of the address represented by this object + is specified by the corresponding + mip6BindingHomeAddressType object. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 2 } + + + + + + + + + mip6BindingCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingCOA that + follows. + " + ::= { mip6BindingCacheEntry 3 } + + mip6BindingCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The care-of address of the mobile node indicated by + the home address field (mip6BindingHomeAddress) in + this Binding Cache entry. + + The type of the address represented by this object + is specified by the corresponding mip6BindingCOAType + object. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 4 } + + mip6BindingTimeRegistered OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry was + created. + " + ::= { mip6BindingCacheEntry 5 } + + mip6BindingTimeGranted OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration. + " + ::= { mip6BindingCacheEntry 6 } + + + + + mip6BindingTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds remaining for this + registration. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 7 } + + mip6BindingHomeRegn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this Binding + Cache entry is a home registration entry (applicable + only on nodes that support home agent + functionality). + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 8 } + + mip6BindingMaxSeq OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the Sequence Number field + received in previous Binding Updates for this home + address (mip6BindingHomeAddress). + " + REFERENCE + "RFC 3775 : Section 9.1, 9.5.1" + ::= { mip6BindingCacheEntry 9 } + + + + + + + + + + + + + mip6BindingUsageTS OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this entry was last looked up. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 10 } + + mip6BindingUsageCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this entry was looked up. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 11 } + + mip6BindingAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is an administrative object used to control + the status of a binding cache entry. By default + the value will be 'active'(1). + A value of 'inactive'(2) will indicate that the + validity of the entry is suspended. It does not + exist in the binding cache for all practical + purposes. + The state can be changed from 'active' to + 'inactive' by operator intervention. + Causing the state to change to 'inactive' results + in the entry being deleted from the cache. + Attempts to change the status from 'inactive' + to 'active' will be rejected. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 12 } + + + + + -- mip6BindingHistory + -- Once the lifetime expires an entry will be removed from the + -- Binding Cache. + -- For monitoring purposes it will be useful to have access to + -- the history of the Binding Cache. BindingHistoryTable serves + -- this purpose. It records the history of the Bindings. + -- The size of the table will be left to implementors. + + mip6BindingHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6BindingHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a record of the bindings. + " + ::= { mip6Bindings 2 } + + mip6BindingHistoryEntry OBJECT-TYPE + SYNTAX Mip6BindingHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The record of a binding. + + Implementors need to be aware that if the total + number of octets in mip6BindingHstHomeAddress + exceeds 112, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHstHomeAddressType, + mip6BindingHstHomeAddress , + mip6BindingHstIndex} + ::= { mip6BindingHistoryTable 1 } + + + + + + + + + + + + + + + + + Mip6BindingHistoryEntry ::= + SEQUENCE { + mip6BindingHstHomeAddressType InetAddressType, + mip6BindingHstHomeAddress InetAddress, + mip6BindingHstIndex Unsigned32, + mip6BindingHstCOAType InetAddressType, + mip6BindingHstCOA InetAddress, + mip6BindingHstTimeRegistered DateAndTime, + mip6BindingHstTimeExpired DateAndTime, + mip6BindingHstHomeRegn TruthValue, + mip6BindingHstUsageTS DateAndTime, + mip6BindingHstUsageCount Gauge32 + } + + mip6BindingHstHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the + mip6BindingHstHomeAddress that follows. + " + ::= { mip6BindingHistoryEntry 1 } + + mip6BindingHstHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Mobile node's home address. + + The type of the address represented by this object + is specified by the corresponding + mip6BindingHstHomeAddressType object. + " + ::= { mip6BindingHistoryEntry 2 } + + mip6BindingHstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to uniquely identify this record along + with the mobile node's HomeAddress type and + HomeAddress. It should be monotonically increasing. + It may wrap after reaching its max value." + ::= { mip6BindingHistoryEntry 3 } + + + + + mip6BindingHstCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingHstCOA that + follows. + " + ::= { mip6BindingHistoryEntry 4 } + + mip6BindingHstCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's care-of address. One mobile node can + have multiple bindings with different + care-of addresses. + The type of the address represented by this object + is specified by the corresponding + mip6BindingHstCOAType object. + " + ::= { mip6BindingHistoryEntry 5 } + + mip6BindingHstTimeRegistered OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry was + created. + " + ::= { mip6BindingHistoryEntry 6 } + + mip6BindingHstTimeExpired OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry expired. + " + ::= { mip6BindingHistoryEntry 7 } + + + + + + + + + + mip6BindingHstHomeRegn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this Binding + Cache entry is a home registration entry (applicable + only on nodes that support home agent + functionality). + " + ::= { mip6BindingHistoryEntry 8 } + + mip6BindingHstUsageTS OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this entry was last looked up. + " + ::= { mip6BindingHistoryEntry 9 } + + mip6BindingHstUsageCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this entry was looked up. + " + ::= { mip6BindingHistoryEntry 10 } + + -- mip6TrafficCounters + + -- MIPv6 Traffic will be characterized by + -- IPv6 datagrams which satisfy at least one of the following + -- conditions + -- - the datagrams are tunneled to the mobile node by the HA + -- - the datagrams are reverse tunneled by the MN to the HA + -- - the datagrams have the Routing header type 2 set. + -- - the datagrams have the Home Address option set in the + -- Destination Option extension header + -- - the datagrams have the mobility header + + mip6TotalTraffic OBJECT IDENTIFIER ::= { mip6Stats 1 } + -- REFERENCE + -- "RFC 3775 : Section 4.1, 6.3, 6.4" + + + + + + + mip6InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 1 } + + mip6HCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + This object is a 64-bit version of mip6InOctets. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 2 } + + + + + + + + mip6InPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from a mobile + node's home address. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 3 } + + mip6HCInPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + This object is a 64-bit version of mip6InPkts. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 4 } + + + + + + + + mip6OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 5 } + + mip6HCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + This object is a 64-bit version of mip6OutOctets. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 6 } + + + + + + + + mip6OutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent by the MIPv6 + entity. This will include the datagrams with + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 7 } + + mip6HCOutPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + This object is a 64-bit version of mip6OutPkts. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 8 } + + + + + + + + mip6CounterDiscontinuityTime 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 MIPv6 entities + global counters, viz., counters with OID prefix + 'mip6TotalTraffic' or 'mip6CnGlobalStats' or + 'mip6HaGlobalStats' suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6TotalTraffic 9 } + + + -- mip6NodeTrafficCounters + + mip6NodeTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6NodeTrafficEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing MIPv6 traffic counters per mobile + node. + " + ::= { mip6Stats 2 } + + mip6NodeTrafficEntry OBJECT-TYPE + SYNTAX Mip6NodeTrafficEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MIPv6 traffic statistics for a mobile node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, mip6BindingHomeAddress } + ::= { mip6NodeTrafficTable 1 } + + + + + + + Mip6NodeTrafficEntry ::= + SEQUENCE { + mip6NodeInOctets Counter32, + mip6HCNodeInOctets Counter64, + mip6NodeInPkts Counter32, + mip6HCNodeInPkts Counter64, + mip6NodeOutOctets Counter32, + mip6HCNodeOutOctets Counter64, + mip6NodeOutPkts Counter32, + mip6HCNodeOutPkts Counter64, + mip6NodeCtrDiscontinuityTime TimeStamp + } + + mip6NodeInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received from the mobile node by the MIPv6 entity. + This will include datagrams with the Mobility + Header or the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 1 } + + + + + + + + + + + + + + + + + + mip6HCNodeInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received from the mobile node by the MIPv6 entity. + This will include datagrams with the Mobility + Header or the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + This object is a 64-bit version of mip6NodeInOctets. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 2 } + + mip6NodeInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received from the + mobile node by the MIPv6 entity. This will include + the datagrams with the Mobility Header or + the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 3 } + + + + + + + + mip6HCNodeInPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received from the + mobile node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the Home + Address option in the Destination Option extension + header (Next Header value = 60). It will also + include the IPv6 datagrams that are reverse tunneled + to a home agent from the mobile node's home address. + This object is a 64-bit version of mip6NodeInPkts. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 4 } + + mip6NodeOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent to the mobile node by the MIPv6 entity. This + will include datagrams with the Mobility Header + or the type 2 Routing Header. It will also include + the IPv6 datagrams that are tunneled by a home agent + to the mobile node. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 5 } + + + + + + + + + + + mip6HCNodeOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent to the mobile node by the MIPv6 entity. This + will include datagrams with the Mobility Header + or the type 2 Routing Header. It will also include + the IPv6 datagrams that are tunneled by a home agent + to the mobile node. + This object is a 64-bit version of mip6NodeOutOctets. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 6 } + + mip6NodeOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent to the mobile + node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the type 2 + Routing Header. It will also include the IPv6 + datagrams that are tunneled by a home agent to the + mobile node. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 7 } + + + + + + + + + + + + mip6HCNodeOutPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent to the mobile + node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the type 2 + Routing Header. It will also include the IPv6 + datagrams that are tunneled by a home agent to the + mobile node. + This object is a 64-bit version of mip6NodeOutOctets. + 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 + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 8 } + + mip6NodeCtrDiscontinuityTime 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 the counters in this row + suffered a discontinuity. The relevant counters are + the specific instances of any Counter32 or Counter64 + objects in this row. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object contains a zero value. + " + ::= { mip6NodeTrafficEntry 9 } + + -- mip6MnSystem Group + + mip6MnHomeAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6MnHomeAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration status for all the + home addresses pertaining to the mobile node. + " + ::= { mip6MnSystem 1 } + + + + mip6MnHomeAddressEntry OBJECT-TYPE + SYNTAX Mip6MnHomeAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The registration status for a home address. + + Implementors need to be aware that if the total + number of octets in mip6MnHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6MnHomeAddressType, mip6MnHomeAddress } + ::= { mip6MnHomeAddressTable 1 } + + Mip6MnHomeAddressEntry ::= + SEQUENCE { + mip6MnHomeAddressType InetAddressType, + mip6MnHomeAddress InetAddress, + mip6MnHomeAddressState INTEGER + } + + mip6MnHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnHomeAddress that + follows. + " + ::= { mip6MnHomeAddressEntry 1 } + + + + + + + + + + + + + + + + + + + + mip6MnHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unicast routable address assigned to the mobile + node. This is used as the 'permanent address' of the + mobile node in the sense that it remains unchanged + regardless of the mobile node's current point of + attachment. If mobile node doesn't have a home + address assigned yet, then this object will take the + default 'unspecified' value ::0. + + The type of the address represented by this object + is specified by the corresponding + mip6MnHomeAddressType object. + " + REFERENCE + "RFC 3775 : Section 3.2" + ::= { mip6MnHomeAddressEntry 2 } + + mip6MnHomeAddressState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + home(2), + registered(3), + pending(4), + isolated(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the state of the mobile node: + unknown -- The state of the mobile node + cannot be determined. + home -- mobile node is on the home network. + registered -- mobile node is on a foreign network + and is registered with the home + agent. + pending -- mobile node has sent registration + request to the home agent and is + waiting for the reply. + isolated -- mobile node is isolated from network, + i.e., it is not in its home network, + it is not registered, and no + registration ack is pending. + " + ::= { mip6MnHomeAddressEntry 3 } + + + + -- Mobile Node Discovery and Advertisement Group Counters + + mip6MnDiscoveryRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Requests sent by the mobile node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1" + ::= { mip6MnConf 1 } + + mip6MnDiscoveryReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Replies received by the mobile node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1" + ::= { mip6MnConf 2 } + + + + + + + + + + + + + + + + + + + mip6MnDiscoveryTimeouts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Requests that timed out. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1, 12" + ::= { mip6MnConf 3 } + + mip6MnPrefixSolicitationsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Mobile Prefix Solicitations + sent by the mobile node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.2" + ::= { mip6MnConf 4 } + + + + + + + + + + + + + + + + + + + + + mip6MnPrefixAdvsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Mobile Prefix Advertisements + received by the mobile node. This will include the + ICMP Mobile Prefix Advertisements that failed the + validity checks. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.6, 11.4.3" + ::= { mip6MnConf 5 } + + mip6MnPrefixAdvsIgnored OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Mobile Prefix Advertisements + discarded by the validity check. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.6, 11.4.3" + ::= { mip6MnConf 6 } + + + + + + + + + + + + + + + + + + + mip6MnMovedToFN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the mobile node has detected + movement to a foreign network from another + foreign network or from the home network, has + reconstructed its care-of address and has initiated + the care-of address registration process. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.5.1" + ::= { mip6MnConf 7 } + + mip6MnMovedToHN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the mobile node has detected + movement from a foreign network to its home + network. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.5.4" + ::= { mip6MnConf 8 } + + -- Mobile Node Registration Group + + -- Registration table of mobile node + + + + + + + + + + + + + mip6MnBLTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6MnBLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table corresponds to the Binding Update List + (BL) that is maintained by the mobile node. The list + holds an item for every binding that the mobile node + has established or is trying to establish. Both + correspondent and home registrations are included in + this table. Entries from the table are deleted as + the lifetime of the binding expires. + " + REFERENCE + "RFC 3775 : Section 4.5, 11.1" + ::= { mip6MnRegistration 1 } + + mip6MnBLEntry OBJECT-TYPE + SYNTAX Mip6MnBLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a Binding Update sent by the + mobile node either to its home agent or to one of + its correspondent nodes. + + Implementors need to be aware that if the total + number of octets in mip6MnHomeAddress and + mip6MnBLNodeAddress exceeds 111, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6MnHomeAddressType, + mip6MnHomeAddress, + mip6MnBLNodeAddressType, + mip6MnBLNodeAddress + } + ::= { mip6MnBLTable 1 } + + + + + + + + + + + + + Mip6MnBLEntry ::= SEQUENCE { + mip6MnBLNodeAddressType InetAddressType, + mip6MnBLNodeAddress InetAddress, + mip6MnBLCOAType InetAddressType, + mip6MnBLCOA InetAddress, + mip6MnBLLifeTimeRequested Unsigned32, + mip6MnBLLifeTimeGranted Unsigned32, + mip6MnBLMaxSeq Unsigned32, + mip6MnBLTimeSent DateAndTime, + mip6MnBLAccepted TruthValue, + mip6MnBLAcceptedTime DateAndTime, + mip6MnBLRetransmissions Gauge32, + mip6MnBLDontSendBUFlag TruthValue + } + + mip6MnBLNodeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnBLNodeAddress + that follows. + " + ::= { mip6MnBLEntry 1 } + + mip6MnBLNodeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the agent as used in the destination + address of the Binding Update. The agent + may be a home agent or a correspondent node. + + The type of the address represented by this object + is specified by the corresponding + mip6MnBLNodeAddressType object. + + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 2 } + + + + + + + + + + mip6MnBLCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnBLCOA that follows. + " + ::= { mip6MnBLEntry 3 } + + mip6MnBLCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Care-of address that the mobile node intends to + register in the Binding Update request. + + The type of the address represented by this object + is specified by the corresponding mip6MnBLCOAType + object. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 4 } + + mip6MnBLLifeTimeRequested OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime requested by the mobile node (in + seconds) in the Binding Update. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 5 } + + + + + + + + + + + + + + + mip6MnBLLifeTimeGranted OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime granted to the mobile node for this + binding. This field will be inaccessible if the + Binding Update request has not been accepted. + The lifetime remaining (lR) can be calculated using + the current time (cT), mip6MnBLAcceptedTime (aT) and + mip6MnBLLifeTimeGranted (lG) as follows: + lR = lG - (cT - aT). + When lR is zero, this entry will be deleted from the + Binding Update List and consequently from this + table. + " + ::= { mip6MnBLEntry 6 } + + mip6MnBLMaxSeq OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the Sequence Number field sent + in previous Binding Updates to this destination. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 7 } + + mip6MnBLTimeSent OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the last (re-)transmission occurred." + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 8 } + + + + + + + + + + + + mip6MnBLAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if the mobile node has received a + binding acknowledgment indicating that service has + been accepted (status code 0 or 1); false(2) + otherwise. false(2) implies that the registration + is still pending. + " + ::= { mip6MnBLEntry 9 } + + mip6MnBLAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the mobile node receives a binding + acknowledgment indicating that Binding Update has + been accepted (status code 0 or 1); + This object will be inaccessible if the Binding + Update request is still pending. + " + ::= { mip6MnBLEntry 10 } + + + mip6MnBLRetransmissions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Binding Update retransmissions. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 11 } + + + + + + + + + + + + + + + mip6MnBLDontSendBUFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) indicates that future binding updates + will not be sent to mip6MnBLNodeAddress. + false(2) implies that binding updates will be + sent to mip6MnBLNodeAddress. + The mobile node sets this flag in the when it + receives an ICMP Parameter Problem, Code 1, + error message in response to a return + routability message or Binding Update sent to + mip6MnBLNodeAddress. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 12 } + + + -- Mobile Node Registration Group Counters + + mip6MnRegnCounters OBJECT IDENTIFIER ::= { mip6MnRegistration 2 } + + mip6MnMobilityMessagesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of mobility messages, i.e., IPv6 + datagrams with Mobility Header, sent by the mobile + node. There are 3 types of mobility messages, viz., + Home Test Init, Care-of Test Init, and Binding + Updates, that are sent by mobile nodes. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 4.2, 6.1" + ::= { mip6MnRegnCounters 1 } + + + + + + + + + + mip6MnMobilityMessagesRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of mobility messages, i.e., IPv6 + datagrams with Mobility Header, received by the + mobile node. There are 5 types of mobility + messages, viz., Home Test, Care-of Test, Binding + Acknowledgment, Binding Refresh Request, and Binding + Error, that are sent to mobile nodes. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 4.2, 6.1" + ::= { mip6MnRegnCounters 2 } + + mip6MnBUsToHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates sent to the mobile + node's home agent(s). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.1" + ::= { mip6MnRegnCounters 3 } + + + + + + + + + + + + + + + + + mip6MnBUAcksFromHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid binding acknowledgments + received from the mobile node's home agent(s). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.3" + ::= { mip6MnRegnCounters 4 } + + mip6MnBUsToCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates sent to + correspondent nodes by the mobile node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.2" + ::= { mip6MnRegnCounters 5 } + + mip6MnBUAcksFromCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Binding Update acks + received from all the correspondent nodes. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.3" + ::= { mip6MnRegnCounters 6 } + + + + + mip6MnBindingErrorsFromCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Error messages received + by mobile node from CN. + 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 + mip6CounterDiscontinuityTime. + " + ::= { mip6MnRegnCounters 7 } + + mip6MnICMPErrorsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Error messages of type ICMP + Parameter Problem, Code 1 or Code 2, received by + the mobile node from a correspondent node in + response to a return routability procedure, a + Binding Update, or a packet with the Home Address + option. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.3.5" + ::= { mip6MnRegnCounters 8 } + + + + + + + + + + + + + + + + + + + mip6MnBRRequestsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Refresh requests + received by the mobile node from correspondent + nodes. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.4" + ::= { mip6MnRegnCounters 9 } + + -- Registration Group counters used for Correspondent Node + mip6CnGlobalStats OBJECT IDENTIFIER ::= { mip6CnStats 1 } + + + mip6CnHomeTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test Init messages received. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.1" + ::= { mip6CnGlobalStats 1 } + + + + + + + + + + + + + + + + + mip6CnHomeTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test messages sent. If a Home + Test Init message is found to be valid, a Home Test + message will be generated and sent. Otherwise the + Home Test message is silently discarded. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.3" + ::= { mip6CnGlobalStats 2 } + + mip6CnCareOfTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Care-of Test Init messages received. + " + REFERENCE + "RFC 3775 : Section 9.4.2" + ::= { mip6CnGlobalStats 3 } + + mip6CnCareOfTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Care-of Test messages sent. If a + Care-of Test Init message is found to be valid, a + Care-of Test message will be generated and sent. + Otherwise the Care-of Test message is silently + discarded. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.4" + ::= { mip6CnGlobalStats 4 } + + + + + mip6CnBUsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates received by the + correspondent node from mobile nodes. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6CnGlobalStats 5 } + + mip6CnBUAcksSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of acknowledgments sent by the + correspondent node for the Binding Updates received. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.4" + ::= { mip6CnGlobalStats 6 } + + + mip6CnBRsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Refresh Request messages + sent by the correspondent node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.5" + ::= { mip6CnGlobalStats 7 } + + + + mip6CnBindingErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Error messages sent by the + correspondent node to the mobile node. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.3.3" + ::= { mip6CnGlobalStats 8 } + + mip6CnBUsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates accepted by the + correspondent node. If a Binding Acknowledgment + message is sent for the Binding Update request, + the Status code field in the message will have + a value less than 128. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1, 9.5.4" + ::= { mip6CnGlobalStats 9 } + + + + + + + + + + + + + + + + + + mip6CnBUsRejected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected + by the correspondent node. If a Binding + Acknowledgment message has been sent for the Binding + Update request, the Status code field in the + message will have a value greater than or equal to + 128. Otherwise the Binding Update request will be + silently discarded. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1, 9.5.4" + ::= { mip6CnGlobalStats 10 } + + mip6CnReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the correspondent node with status code in the + Binding Acknowledgment message indicating 'reason + unspecified' (Code 128). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + ::= { mip6CnGlobalStats 11 } + + + + + + + + + + + + + + mip6CnInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the correspondent node with status code in the + Binding Acknowledgment message indicating + 'insufficient resources' (Code 130). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + ::= { mip6CnGlobalStats 12 } + + mip6CnHomeRegnNotSupported OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'home registration + not supported' (Code 131). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6CnGlobalStats 13 } + + + + + + + + + + + + + + + + + mip6CnSeqNumberOutOfWindow OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'sequence number + out of window' (Code 135). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 14 } + + mip6CnExpiredHomeNonceIndex OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired home + nonce index' (Code 136). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 15 } + + + + + + + + + + + + + + + + + mip6CnExpiredCareOfNonceIndex OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired + care-of nonce index' (Code 137). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 16 } + + mip6CnExpiredNonce OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired nonces' + (Code 138), i.e., the correspondent node no longer + recognizes the Home Nonce Index value and the + Care-of Nonce Index value. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 17 } + + + + + + + + + + + + + + + mip6CnRegTypeChangeDisallowed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'registration + type change disallowed' (Code 139), i.e., a binding + already exists for the given home address and the + home registration flag has a different value than + the Home Registration (H) bit in the Binding Update. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 18 } + + + + -- The Correspondent Node statistics by mobile node + + mip6CnCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6CnCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing each mobile ." + ::= { mip6CnStats 2 } + + + + + + + + + + + + + + + + + + + + mip6CnCounterEntry OBJECT-TYPE + SYNTAX Mip6CnCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of correspondent node counters for a mobile + node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, + mip6BindingHomeAddress + } + ::= { mip6CnCounterTable 1 } + + Mip6CnCounterEntry ::= + SEQUENCE { + mip6CnBURequestsAccepted Counter32, + mip6CnBURequestsRejected Counter32, + mip6CnBCEntryCreationTime DateAndTime, + mip6CnBUAcceptedTime DateAndTime, + mip6CnBURejectionTime DateAndTime, + mip6CnBURejectionCode Mip6BURequestRejectionCode, + mip6CnCtrDiscontinuityTime TimeStamp + } + + mip6CnBURequestsAccepted OBJECT-TYPE --(Code 0,1) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests from the + mobile node accepted by the correspondent node. + If Binding Acknowledgment messages are sent, then + the status code in the message will have a value + less than 128. + 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 + mip6CnCtrDiscontinuityTime. + " + ::= { mip6CnCounterEntry 1 } + + + + + + mip6CnBURequestsRejected OBJECT-TYPE + -- (Code 128 through Code 159) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests from the + mobile node that have been rejected by the + correspondent node. This includes the Binding Update + requests for which a Binding Acknowledgment message + has been sent with status code value greater than or + equal to 128 and the Binding Acknowledgment requests + that have been silently discarded. + 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 + mip6CnCtrDiscontinuityTime. + " + ::= { mip6CnCounterEntry 2 } + + mip6CnBCEntryCreationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the current Binding Cache entry was + created for the mobile node. + " + ::= { mip6CnCounterEntry 3 } + + mip6CnBUAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + accepted by the correspondent node and the + corresponding Binding Cache entry was updated. + " + ::= { mip6CnCounterEntry 4 } + + + + + + + + + + + + mip6CnBURejectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update message + was rejected by the correspondent node. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6CnCounterEntry 5 } + + mip6CnBURejectionCode OBJECT-TYPE + SYNTAX Mip6BURequestRejectionCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If a Binding Acknowledgment is sent to the mobile + node, this is the status code (> 128) that is + returned in the Binding Acknowledgment. + In case a Binding Acknowledgment is not sent to + the mobile node, then this will be the value + of the Status code that corresponds to the reason + of the rejection. If there have been no + rejections, then this object will be inaccessible. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + + ::= { mip6CnCounterEntry 6 } + + mip6CnCtrDiscontinuityTime 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 counters in this row, + viz., instances of 'mip6CnBURequestsAccepted' and + 'mip6CnBURequestsRejected', suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6CnCounterEntry 7 } + + -- Home agent group + + + + + mip6HaAdvsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Router Advertisements + received with the Home Agent (H) bit set, on + all the links on which it is serving as a Home + Agent. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 7" + ::= { mip6HaAdvertisement 1 } + + + mip6HaAdvsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of unsolicited multicast Router + Advertisements sent with the Home Agent (H) bit set, + on all the links on which the router is serving as + a Home Agent. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 7" + ::= { mip6HaAdvertisement 2 } + + + mip6HaConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configurable advertisement + parameters for all interfaces on which the + home agent service is advertised. + It is RECOMMENDED that the last written values + of the objects in the conceptual rows of this + + + + table will remain unchanged across reboots of + the managed entity provided that the interfaces + have not been renumbered after the reboot. + " + ::= { mip6HaAdvertisement 3 } + + mip6HaConfEntry OBJECT-TYPE + SYNTAX Mip6HaConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Advertisement parameters for an interface. + The instances of the columnar objects in this entry + pertain to the interface that is uniquely identified + by the ipv6InterfaceIfIndex of the interface. The + same ipv6InterfaceIfIndex object is used to uniquely + identify instances of the columnar objects of this + conceptual row. + " + INDEX { ipv6InterfaceIfIndex } + ::= { mip6HaConfTable 1 } + + Mip6HaConfEntry ::= SEQUENCE { + mip6HaAdvPreference Integer32, + mip6HaAdvLifetime Integer32, + mip6HaPrefixAdv INTEGER, + mip6HaPrefixSolicitation INTEGER, + mip6HaMCastCtlMsgSupport INTEGER + } + + mip6HaAdvPreference OBJECT-TYPE + SYNTAX Integer32 (0..65536) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The preference value for the home agent to + be used in the Router Advertisements. Higher + value denotes greater preference. + " + REFERENCE + "RFC 3775 : Section 7.4, 8.4" + ::= { mip6HaConfEntry 1 } + + + + + + + + + + mip6HaAdvLifetime OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lifetime value for the home agent to be + used in the Router Advertisements. + " + REFERENCE + "RFC 3775 : Section 7.4" + ::= { mip6HaConfEntry 2 } + + mip6HaPrefixAdv OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should support + sending of the ICMP Mobile Prefix Advertisements. + If it is disabled(2), the home agent will not + send ICMP Mobile Prefix Advertisements to the + mobile nodes. + The state can be changed from enabled(1) to + disabled(2) and vice versa by operator + intervention. + Causing the state to change from enabled(1) to + disabled(2) will result in the home agent + disabling the Prefix advertisement function. + On the other hand, changing the status from + disabled(2) to enabled(1) will start the prefix + advertisement function. + " + REFERENCE + "RFC 3775 : Section 8.4" + ::= { mip6HaConfEntry 3} + + + + + + + + + + + + + + + + mip6HaPrefixSolicitation OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should respond + to ICMP Mobile Prefix Solicitation messages it + receives from the mobile nodes. By default, the + value will be set to enabled(1). If it is + disabled(2), the home agent will not respond to + any ICMP Mobile Prefix Solicitation messages. + The state can be changed from enabled(1) to + disabled(2), by operator intervention. Causing + the state to change from enabled(1) to + disabled(2) will result in the home agent not + responding to any ICMP Mobile Prefix + Solicitation messages it receives from the + mobile nodes. + " + REFERENCE + "RFC 3775 : Section 8.4" + ::= { mip6HaConfEntry 4} + + + mip6HaMCastCtlMsgSupport OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should enable + support for the processing of the multicast + group membership control messages it receives + from the mobile nodes. By default, the value + will be set to enabled(1). If it is + disabled(2), the home agent will not process + any multicast group control messages it receives + from the mobile nodes. + The state can be changed from enabled(1) to + disabled(2), by operator intervention. Causing + the state to change from enabled(1) to + disabled(2) will result in the home agent + disabling the processing of the multicast group + control messages it received from the mobile + nodes. + " + REFERENCE + "RFC 3775 : Section 10.4.3" + ::= { mip6HaConfEntry 5} + + + + + -- Registration Group counters HA + + mip6HaGlobalStats OBJECT IDENTIFIER ::= { mip6HaStats 1 } + + mip6HaHomeTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test Init messages received by + the home agent. This will include Home Test Init + messages that failed the validity checks. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 5.2.5" + ::= { mip6HaGlobalStats 1 } + + mip6HaHomeTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test messages sent by the + home agent. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 5.2.5" + ::= { mip6HaGlobalStats 2 } + + + + + + + + + + + + + + + mip6HaBUsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates received by the + home agent. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 3 } + + mip6HaBUAcksSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Acknowledgments sent + by the home agent. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 4 } + + mip6HaBRAdviceSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Acknowledgments sent + by the home agent with Binding Refresh Advice + mobility option included. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 5 } + + + + mip6HaBUsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates accepted by this HA. + Binding Acknowledgment with status code of 0 or 1. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 6 } + + mip6HaPrefDiscoverReqd OBJECT-TYPE -- (Code 1) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Acknowledgments sent by + the home agent with status code indicating 'accepted + but prefix discovery necessary' (Code 1). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 7 } + + + + + + + + + + + + + + + + + + + + mip6HaReasonUnspecified OBJECT-TYPE -- (Code 128) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'reason + unspecified' (Code 128). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 8 } + + mip6HaAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'administratively + prohibited' (Code 129). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 9 } + + + + + + + + + + + + + + + + + mip6HaInsufficientResource OBJECT-TYPE -- (Code 130) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'insufficient + resources' (Code 130). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.2" + ::= { mip6HaGlobalStats 10 } + + mip6HaHomeRegnNotSupported OBJECT-TYPE -- (Code 131) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'home + registration not supported' (Code 131). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 11 } + + + + + + + + + + + + + + + + + mip6HaNotHomeSubnet OBJECT-TYPE -- (Code 132) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'not home subnet' + (Code 132). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 12 } + + mip6HaNotHomeAgentForThisMN OBJECT-TYPE -- (Code 133) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'not home agent + for this mobile node' (Code 133). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6HaGlobalStats 13 } + + + + + + + + + + + + + + + + + mip6HaDupAddrDetectionFailed OBJECT-TYPE -- (Code 134) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'Duplicate + Address Detection failed' (Code 134). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 14 } + + mip6HaSeqNumberOutOfWindow OBJECT-TYPE -- (Code 135) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'sequence number + out of window' (Code 135). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 15 } + + + + + + + + + + + + + + + + + mip6HaExpiredHomeNonceIndex OBJECT-TYPE -- (Code 136) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'expired home + nonce index' (Code 136). + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 16 } + + mip6HaRegTypeChangeDisallowed OBJECT-TYPE -- (Code 139) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'registration + type change disallowed' (Code 139), i.e., a binding + already exists for the given home address and the + home registration flag has a different value than + the Home Registration (H) bit in the Binding Update. + 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 + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 17 } + + -- Home agent registration Counters per node + + + + + + + + + + + + mip6HaCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration statistics for all + mobile nodes registered with the home agent. + " + ::= { mip6HaStats 2 } + + mip6HaCounterEntry OBJECT-TYPE + SYNTAX Mip6HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Home agent registration statistics for a mobile + node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, + mip6BindingHomeAddress + } + ::= { mip6HaCounterTable 1 } + + Mip6HaCounterEntry ::= SEQUENCE { + mip6HaBURequestsAccepted Counter32, + mip6HaBURequestsDenied Counter32, + mip6HaBCEntryCreationTime DateAndTime, + mip6HaBUAcceptedTime DateAndTime, + mip6HaBURejectionTime DateAndTime, + mip6HaRecentBURejectionCode Mip6BURequestRejectionCode, + mip6HaCtrDiscontinuityTime TimeStamp + } + + + + + + + + + + + + + + mip6HaBURequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + accepted by the home agent. + 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 + mip6HaCtrDiscontinuityTime. + " + ::= { mip6HaCounterEntry 1 } + + mip6HaBURequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + rejected by the home agent. + 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 + mip6HaCtrDiscontinuityTime. + " + ::= { mip6HaCounterEntry 2 } + + mip6HaBCEntryCreationTime OBJECT-TYPE + SYNTAX DateAndTime + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the current Binding Cache entry was + created for the mobile node. + " + ::= { mip6HaCounterEntry 3 } + + mip6HaBUAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + accepted by the home agent for this mobile node. + " + ::= { mip6HaCounterEntry 4 } + + + + mip6HaBURejectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + rejected by the home agent for this mobile node. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6HaCounterEntry 5 } + + mip6HaRecentBURejectionCode OBJECT-TYPE + SYNTAX Mip6BURequestRejectionCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If a Binding Acknowledgment is sent to the mobile + node, this is the status code (> 128) that is + returned in the Binding Acknowledgment. + In case a Binding Acknowledgment is not sent to the + mobile node, then this will be the value of the + status code that corresponds to the reason of the + rejection. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6HaCounterEntry 6 } + + mip6HaCtrDiscontinuityTime 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 counters in this row, + viz., instances of 'mip6HaBURequestsAccepted' and + 'mip6HaBURequestsRejected', suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6HaCounterEntry 7 } + + -- Home Agent List Table + + + + + + + mip6HaListTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table models the Home Agents List that contains + the list of all routers that are acting as home + agents on each of the interfaces on which the home + agent service is offered by this router. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaAdvertisement 4 } + + mip6HaListEntry OBJECT-TYPE + SYNTAX Mip6HaListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a router that is offering home + agent service. + The instances of the columnar objects in this entry + pertain to an interface for a particular value of + mip6HaLinkLocalAddressType and + mip6HaLinkLocalAddress. The interface is uniquely + identified by its ipv6InterfaceIfIndex. The same + ipv6InterfaceIfIndex object is used in conjunction + with the mip6HaLinkLocalAddressType and + mip6HaLinkLocalAddress to uniquely identify + instances of the columnar objects of this row. + + Implementors need to be aware that if the total + number of octets in mip6HaLinkLocalAddress + exceeds 112, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { ipv6InterfaceIfIndex, mip6HaLinkLocalAddressType, + mip6HaLinkLocalAddress } + ::= { mip6HaListTable 1 } + + Mip6HaListEntry ::= SEQUENCE { + mip6HaLinkLocalAddressType InetAddressType, + mip6HaLinkLocalAddress InetAddress, + mip6HaPreference Integer32, + mip6HaRecvLifeTime Gauge32, + mip6HaRecvTimeStamp DateAndTime + } + + + + mip6HaLinkLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for the link-local address + of the home agent that follows. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 1 } + + mip6HaLinkLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The link local address of the home agent. + + The type of the address represented by this object + is specified by the corresponding + mip6HaLinkLocalAddressType object. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 2 } + + mip6HaPreference OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The preference value of this home agent. + Higher values indicate a more preferable home + agent. The preference value is obtained from + the preference field of the received Router + Advertisement. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 3 } + + + + + + + + + + + mip6HaRecvLifeTime OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime for this home agent. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 4 } + + mip6HaRecvTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the home agent advertisement was + received. + " + ::= { mip6HaListEntry 5 } + + -- + -- The list of global addresses of a home agent in the + -- home agent list + -- + + mip6HaGlAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaGlAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the global addresses of the home + agents in the Home Agents List. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaAdvertisement 5 } + + + + + + + + + + + + + + + mip6HaGlAddrEntry OBJECT-TYPE + SYNTAX Mip6HaGlAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A global address for a home agent in the Home Agents + List. + The instances of the columnar objects in this entry + pertain to an interface for a particular value of + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress + and mip6HaGaAddrSeqNo. + The mip6HaGaAddrSeqNo object is used to distinguish + between multiple instances of the home agent global + addresses on the same interface for the same set of + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress, + values. + There is no upper-bound on the maximum number of + global addresses on an interface but, for practical + purposes, the upper-bound of the value + mip6HaGaAddrSeqNo is set to 1024. + The interface is uniquely identified by its + ipv6InterfaceIfIndex. The same ipv6InterfaceIfIndex + object is used in conjunction with the + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress, + and mip6HaGaAddrSeqNo to uniquely identify instances + of the columnar objects of this row. + + Implementors need to be aware that if the total + number of octets in mip6HaLinkLocalAddress + exceeds 111, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { ipv6InterfaceIfIndex, mip6HaLinkLocalAddressType, + mip6HaLinkLocalAddress, mip6HaGaAddrSeqNo } + ::= { mip6HaGlAddrTable 1 } + + Mip6HaGlAddrEntry ::= SEQUENCE { + mip6HaGaAddrSeqNo Integer32, + mip6HaGaGlobalAddressType InetAddressType, + mip6HaGaGlobalAddress InetAddress + } + + + + + + + + + + mip6HaGaAddrSeqNo OBJECT-TYPE + SYNTAX Integer32 (1..1024) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index that along with ipv6InterfaceIfIndex, + mip6HaLinkLocalAddressType, and + mip6HaLinkLocalAddress uniquely identifies this row. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaGlAddrEntry 1 } + + mip6HaGaGlobalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type for the global address of the + home agent that follows. + " + ::= { mip6HaGlAddrEntry 2 } + + mip6HaGaGlobalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A global address of the home agent. + + The type of the address represented by this object + is specified by the corresponding + mip6HaGaGlobalAddressType object. + " + ::= { mip6HaGlAddrEntry 3 } + +-- +-- Notifications +-- + + + + + + + + + + + + + mip6MnRegistered NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent when + a mobile node registers with the home agent + for the first time. + Notifications will not be sent for subsequent + updates and/or refreshes. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6Notifications 1 } + + mip6MnDeRegistered NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent every + time a mobile node de-registers with the home + agent by sending a Binding Update that requests + the home agent to delete a binding. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6Notifications 2 } + + + + + + + + + + mip6MnCOAChanged NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent every + time a mobile node sends a Binding Update with + a new care-of address (for an existing Binding + Cache entry). + Notifications will not be sent for subsequent + updates and/or refreshes for the same Care-of + address. + The registration of a new care-of address may + indicate that the mobile node has moved or that + the primary care-of address of the mobile node + has become deprecated. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 11.5.2, 11.7.1" + ::= { mip6Notifications 3 } + + mip6MnBindingExpiredAtHA NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent when a + binding for the mobile node at the home agent + expired (no timely Binding Updates were received). + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6Notifications 4 } + + + + + mip6MnBindingExpiredAtCN NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a correspondent node + when a binding for the mobile node at the + correspondent node expired (no timely Binding + Updates were received). + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + ::= { mip6Notifications 5 } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Conformance information + mip6Groups OBJECT IDENTIFIER ::= { mip6Conformance 1 } + mip6Compliances OBJECT IDENTIFIER ::= { mip6Conformance 2 } + + -- Units of conformance + mip6SystemGroup OBJECT-GROUP + OBJECTS { + mip6Capabilities, + mip6Status + } + STATUS current + DESCRIPTION + " A collection of objects for basic MIPv6 + monitoring." + ::= { mip6Groups 1 } + + mip6BindingCacheGroup OBJECT-GROUP + OBJECTS { + mip6BindingCOAType, + mip6BindingCOA, + mip6BindingTimeRegistered, + mip6BindingTimeGranted, + mip6BindingTimeRemaining, + mip6BindingMaxSeq, + mip6BindingHomeRegn, + mip6BindingUsageTS, + mip6BindingUsageCount, + mip6BindingAdminStatus + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + Binding Cache. + " + ::= { mip6Groups 2 } + + + + + + + + + + + + + + + + + mip6BindingHstGroup OBJECT-GROUP + OBJECTS { + mip6BindingHstCOAType, + mip6BindingHstCOA, + mip6BindingHstTimeRegistered, + mip6BindingHstTimeExpired, + mip6BindingHstHomeRegn, + mip6BindingHstUsageTS, + mip6BindingHstUsageCount + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + Binding History. This can be used to monitor + the movement of the mobile node. + " + ::= { mip6Groups 3 } + + mip6TotalTrafficGroup OBJECT-GROUP + OBJECTS { + mip6InOctets, + mip6HCInOctets, + mip6InPkts, + mip6HCInPkts, + mip6OutOctets, + mip6HCOutOctets, + mip6OutPkts, + mip6HCOutPkts, + mip6CounterDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + total MIPv6 traffic. + " + ::= { mip6Groups 4 } + + + + + + + + + + + + + + + + mip6NodeTrafficGroup OBJECT-GROUP + OBJECTS { + mip6NodeInOctets, + mip6HCNodeInOctets, + mip6NodeInPkts, + mip6HCNodeInPkts, + mip6NodeOutOctets, + mip6HCNodeOutOctets, + mip6NodeOutPkts, + mip6HCNodeOutPkts, + mip6NodeCtrDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + MIPv6 traffic due to a mobile node. + " + ::= { mip6Groups 5 } + + mip6MnSystemGroup OBJECT-GROUP + OBJECTS { + mip6MnHomeAddressState + } + STATUS current + DESCRIPTION + " A collection of objects for basic monitoring + of the mobile node. + " + ::= { mip6Groups 6 } + + mip6MnConfGroup OBJECT-GROUP + OBJECTS { + mip6MnDiscoveryRequests, + mip6MnDiscoveryReplies, + mip6MnDiscoveryTimeouts, + mip6MnPrefixSolicitationsSent, + mip6MnPrefixAdvsRecd, + mip6MnPrefixAdvsIgnored, + mip6MnMovedToFN, + mip6MnMovedToHN + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the advertisement-related info on the + mobile node. + " + ::= { mip6Groups 7 } + + + + mip6MnRegistrationGroup OBJECT-GROUP + OBJECTS { + mip6MnBLCOAType, + mip6MnBLCOA, + mip6MnBLLifeTimeRequested, + mip6MnBLLifeTimeGranted, + mip6MnBLMaxSeq, + mip6MnBLTimeSent, + mip6MnBLAccepted, + mip6MnBLAcceptedTime, + mip6MnBLRetransmissions, + mip6MnBLDontSendBUFlag, + -- + -- Binding Update List + -- + mip6MnMobilityMessagesSent, + mip6MnMobilityMessagesRecd, + mip6MnBUsToHA, + mip6MnBUAcksFromHA, + mip6MnBUsToCN, + mip6MnBUAcksFromCN, + mip6MnBindingErrorsFromCN, + mip6MnICMPErrorsRecd, + mip6MnBRRequestsRecd + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the registration statistics for the mobile node. + " + ::= { mip6Groups 8 } + + + + + + + + + + + + + + + + + + + + + mip6CnStatsGroup OBJECT-GROUP + OBJECTS { + mip6CnBURequestsAccepted, + mip6CnBURequestsRejected, + mip6CnBCEntryCreationTime, + mip6CnBUAcceptedTime, + mip6CnBURejectionTime, + mip6CnBURejectionCode, + mip6CnCtrDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the control messages and corresponding + statistics for each mobile node + communicating with the correspondent + node. + " + ::= { mip6Groups 9 } + + mip6HaSystemGroup OBJECT-GROUP + OBJECTS { + mip6HaAdvsRecd, + mip6HaAdvsSent, + mip6HaAdvPreference, + mip6HaAdvLifetime, + mip6HaPrefixAdv, + mip6HaPrefixSolicitation, + mip6HaMCastCtlMsgSupport + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the advertisement-related parameters and + statistics for the home agent. + " + ::= { mip6Groups 10 } + + + + + + + + + + + + + + + mip6HaListGroup OBJECT-GROUP + OBJECTS { + mip6HaPreference, + mip6HaRecvLifeTime, + mip6HaRecvTimeStamp, + mip6HaGaGlobalAddressType, + mip6HaGaGlobalAddress + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the Home Agent List on the home agent. + " + ::= { mip6Groups 11 } + + mip6HaStatsGroup OBJECT-GROUP + OBJECTS { + mip6HaBURequestsAccepted, + mip6HaBURequestsDenied, + mip6HaBCEntryCreationTime, + mip6HaBUAcceptedTime, + mip6HaBURejectionTime, + mip6HaRecentBURejectionCode, + mip6HaCtrDiscontinuityTime + + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + registration-related statistics on the home agent. + " + ::= { mip6Groups 12 } + + + + + + + + + + + + + + + + + + + + mip6CnGlobalStatsGroup OBJECT-GROUP + OBJECTS { + mip6CnHomeTestInitsRecd, + mip6CnHomeTestsSent, + mip6CnCareOfTestInitsRecd, + mip6CnCareOfTestsSent, + mip6CnBUsRecd, + mip6CnBUAcksSent, + mip6CnBRsSent, + mip6CnBindingErrors, + mip6CnBUsAccepted, + mip6CnBUsRejected, + mip6CnReasonUnspecified, + mip6CnInsufficientResource, + mip6CnHomeRegnNotSupported, + mip6CnSeqNumberOutOfWindow, + mip6CnExpiredHomeNonceIndex, + mip6CnExpiredCareOfNonceIndex, + mip6CnExpiredNonce, + mip6CnRegTypeChangeDisallowed + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + advertisement and registration statistics on + a correspondent node. + " + ::= { mip6Groups 13 } + + + + + + + + + + + + + + + + + + + + + + + + mip6HaGlobalStatsGroup OBJECT-GROUP + OBJECTS { + mip6HaHomeTestInitsRecd, + mip6HaHomeTestsSent, + mip6HaBUsRecd, + mip6HaBUAcksSent, + mip6HaBRAdviceSent, + mip6HaBUsAccepted, + mip6HaPrefDiscoverReqd, + mip6HaReasonUnspecified, + mip6HaAdmProhibited, + mip6HaInsufficientResource, + mip6HaHomeRegnNotSupported, + mip6HaNotHomeSubnet, + mip6HaNotHomeAgentForThisMN, + mip6HaDupAddrDetectionFailed, + mip6HaSeqNumberOutOfWindow, + mip6HaExpiredHomeNonceIndex, + mip6HaRegTypeChangeDisallowed + + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + advertisement and registration statistics on + a home agent. + " + ::= { mip6Groups 14 } + + mip6BindingCacheCtlGroup OBJECT-GROUP + OBJECTS { + mip6BindingAdminStatus + } + STATUS current + DESCRIPTION + "A collection of objects for controlling the + Binding Cache. + " + ::= { mip6Groups 15 } + + + + + + + + + + + + + mip6NotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mip6MnRegistered, + mip6MnDeRegistered, + mip6MnCOAChanged, + mip6MnBindingExpiredAtHA, + mip6MnBindingExpiredAtCN + } + STATUS current + DESCRIPTION + "A collection of notifications from a home agent + or correspondent node to the Manager about the + status of a mobile node. + " + ::= { mip6Groups 16 } + + + + -- Compliance statements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mip6CoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB. + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup } + + ::= { mip6Compliances 1 } + + mip6Compliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and support + monitoring of the Binding Cache and the Total + Traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 2 } + + + + + + + + + mip6Compliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the Binding Cache, + the Binding History, the total traffic, and + the mobile node-wide traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHstHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + -- OBJECT mip6BindingHstHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6BindingHstGroup, + mip6TotalTrafficGroup, + mip6NodeTrafficGroup + } + + + + ::= { mip6Compliances 3 } + + + mip6CoreReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode). + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup } + + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 4 } + + mip6ReadOnlyCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the Binding Cache and Total + Traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + " + MODULE -- this module + + + + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6TotalTrafficGroup + } + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mip6Compliances 5 } + + mip6ReadOnlyCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and support + monitoring of the Binding Cache, the Binding History, + the total traffic, and the mobile node-wide traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHstHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + + + + -- OBJECT mip6BindingHstHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6BindingHstGroup, + mip6TotalTrafficGroup, + mip6NodeTrafficGroup + } + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mip6Compliances 6 } + + mip6MnCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic mobile node + functionality. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6MnHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + + + + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6MnSystemGroup + } + ::= { mip6Compliances 7 } + + mip6MnCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the mobile node + functionality specifically the Discovery- and + Registration-related statistics, + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6MnHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnBLNodeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnBLNodeAddress + -- object. + -- + -- OBJECT mip6MnBLNodeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnBLNodeAddress + -- object. + + + + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6MnSystemGroup, + mip6MnConfGroup, + mip6MnRegistrationGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 8 } + + mip6CnCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic correspondent node + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6CnGlobalStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 9 } + + mip6CnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic correspondent node + functionality. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + + + + " + MODULE -- this module + MANDATORY-GROUPS { mip6CnGlobalStatsGroup, + mip6CnStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 10 } + + mip6HaCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic home agent + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup + } + ::= { mip6Compliances 11 } + + mip6HaCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + + + + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 12 } + + mip6HaCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring and control of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + + + + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + mip6BindingCacheCtlGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 13 } + + + + + + + + + + + + + + + + + + + + + + + + + + mip6HaCoreReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the basic home agent + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup + } + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 14 } + + + + + + + + + + + + + + mip6HaReadOnlyCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + + + + mip6TotalTrafficGroup + } + + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 15 } + + + + + + + + + + + + + + + + + + + + + + + mip6HaReadOnlyCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring and control of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + + + + mip6BindingCacheCtlGroup, + mip6TotalTrafficGroup + } + + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 16 } + + mip6NotificationCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support Notification from home agent or + correspondent node to management stations + about the mobile node status. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + + + + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + " + MODULE -- this module + MANDATORY-GROUPS { mip6NotificationGroup + } + ::= { mip6Compliances 17 } + + END diff --git a/mibs/ietf/MPLS-FTN-STD-MIB b/mibs/ietf/MPLS-FTN-STD-MIB new file mode 100644 index 0000000..771557e --- /dev/null +++ b/mibs/ietf/MPLS-FTN-STD-MIB @@ -0,0 +1,1086 @@ +MPLS-FTN-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Counter64, Integer32 + FROM SNMPv2-SMI -- [RFC2578] + RowStatus, StorageType, RowPointer, + TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndexOrZero, + ifGeneralInformationGroup, ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + Dscp + FROM DIFFSERV-DSCP-TC -- [RFC3289] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + + + ; + +mplsFTNStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 6, 2004 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " + Thomas D. Nadeau + Postal: Cisco Systems, Inc. + 250 Apollo Drive + Chelmsford, MA 01824 + Tel: +1-978-244-3051 + Email: tnadeau@cisco.com + + Cheenu Srinivasan + Postal: Bloomberg L.P. + 499 Park Avenue + New York, NY 10022 + Tel: +1-212-893-3682 + Email: cheenu@bloomberg.net + + Arun Viswanathan + Postal: Force10 Networks, Inc. + 1440 McCarthy Blvd + Milpitas, CA 95035 + Tel: +1-408-571-3516 + Email: arunv@force10networks.com + + IETF MPLS Working Group email: mpls@uu.net" + + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3814. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB module contains managed object definitions for + specifying FEC to NHLFE (FTN) mappings and corresponding + performance for MPLS." + + -- Revision history. + + REVISION + "200406030000Z" -- June 3, 2004 + + DESCRIPTION + "Initial version issued as part of RFC 3814." + + + + ::= { mplsStdMIB 8 } + +-- TEXTUAL-CONVENTIONs used in this MIB. +MplsFTNEntryIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Index for an entry in mplsFTNTable." + SYNTAX Unsigned32 (1..4294967295) + +MplsFTNEntryIndexOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Index for an entry in mplsFTNTable or the special value + 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 when none or all + entries in mplsFTNTable need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +-- Top-Level Components of this MIB. + +mplsFTNNotifications OBJECT IDENTIFIER ::= { mplsFTNStdMIB 0 } +mplsFTNObjects OBJECT IDENTIFIER ::= { mplsFTNStdMIB 1 } +mplsFTNConformance OBJECT IDENTIFIER ::= { mplsFTNStdMIB 2 } + +-- Next free index in mplsFTNTable. +mplsFTNIndexNext OBJECT-TYPE + SYNTAX MplsFTNEntryIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available valid value to + be used for mplsFTNIndex when creating entries in the + mplsFTNTable. + + When creating a new conceptual row (configuration + entry) in mplsFTNTable with an SNMP SET operation the + command generator (Network Management Application) must + first issue a management protocol retrieval operation + to obtain the current value of this object. + + If the command responder (agent) does not wish to allow + creation of more entries in mplsFTNTable, possibly + because of resource exhaustion, this object MUST return + a value of 0. + + If a non-zero value is returned the Network Management + + + + Application must determine whether the value is indeed + still unused since two Network Management Applications + may attempt to create a row simultaneously and use the + same value. + + If it is currently unused and the SET succeeds, the + agent MUST change the value of this object to a + currently unused non-zero value (according to an + implementation specific algorithm) or zero (if no + further row creation will be permitted). + + If the value is in use, however, the SET fails and the + Network Management Application must then reread this + object to obtain a new usable value." + ::= { mplsFTNObjects 1 } + +-- Last time an object in mplsFTNTable changed. +mplsFTNTableLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the last time an entry was added, deleted or + modified in mplsFTNTable. Management stations should + consult this object to determine if mplsFTNTable + requires their attention. This object is particularly + useful for applications performing a retrieval on + mplsFTNTable to ensure that the table is not modified + during the retrieval operation." + ::= { mplsFTNObjects 2 } + +-- Table of FTN entries. +mplsFTNTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the currently defined FTN entries. + This table allows FEC to NHLFE mappings to be + specified. Each entry in this table defines a rule to + be applied to incoming packets (on interfaces that the + FTN entry is activated on using mplsFTNMapTable) and an + action to be taken on matching packets + (mplsFTNActionPointer). + + This table supports 6-tuple matching rules based on one + or more of source address range, destination address + range, source port range, destination port range, IPv4 + + + + Protocol field or IPv6 next-header field and the + DiffServ Code Point (DSCP) to be specified. + + The action pointer points either to instance of + mplsXCEntry in MPLS-LSR-STD-MIB when the NHLFE is a non- + TE LSP, or to an instance of mplsTunnelEntry in the + MPLS-TE-STD-MIB when the NHLFE is an originating TE + tunnel." + REFERENCE + "J. Postel, Internet Protocol, RFC 791, STD 5, September + 1981 + + Deering, S., and R. Hinden, Internet Protocol, Version + 6 (IPv6) Specification, RFC 2460, December 1998 + + Nichols, K, Blake, S., Baker, F. and D. Black, + Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers, RFC 2474, December + 1998 + + Srinivasan, C., A. Viswanathan, and T. Nadeau, MPLS + Label Switch Router Management Information Base, + RFC 3813 + + Srinivasan, C., A. Viswanathan, and T. Nadeau, MPLS + Traffic Engineering Management Information Base, + RFC 3812" + ::= { mplsFTNObjects 3 } + +mplsFTNEntry OBJECT-TYPE + SYNTAX MplsFTNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents one FTN entry which defines a + rule to compare incoming packets with and an action to + be taken on matching packets." + INDEX { mplsFTNIndex } + ::= { mplsFTNTable 1 } + +MplsFTNEntry ::= SEQUENCE { + mplsFTNIndex MplsFTNEntryIndex, + mplsFTNRowStatus RowStatus, + mplsFTNDescr SnmpAdminString, + mplsFTNMask BITS, + mplsFTNAddrType InetAddressType, + mplsFTNSourceAddrMin InetAddress, + mplsFTNSourceAddrMax InetAddress, + + + + mplsFTNDestAddrMin InetAddress, + mplsFTNDestAddrMax InetAddress, + mplsFTNSourcePortMin InetPortNumber, + mplsFTNSourcePortMax InetPortNumber, + mplsFTNDestPortMin InetPortNumber, + mplsFTNDestPortMax InetPortNumber, + mplsFTNProtocol Integer32, + mplsFTNDscp Dscp, + mplsFTNActionType INTEGER, + mplsFTNActionPointer RowPointer, + mplsFTNStorageType StorageType + } + +mplsFTNIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the unique index for a conceptual row in + mplsFTNTable. + + To create a new conceptual row in mplsFTNTable a + Network Management Application SHOULD retrieve the + current value of mplsFTNIndexNext to determine the next + valid available value of mplsFTNIndex." + ::= { mplsFTNEntry 1 } + +mplsFTNRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used for controlling the creation and deletion of this + row. All writeable objects in this row may be modified + at any time. If a Network Management Application + attempts to delete a conceptual row by setting this + object to 'destroy' and there are one or more entries + in mplsFTNMapTable pointing to the row (i.e., when + mplsFTNIndex of the conceptual row being deleted is + equal to mplsFTNMapCurrIndex for one or more entries in + mplsFTNMapTable), the agent MUST also destroy the + corresponding entries in mplsFTNMapTable." + ::= { mplsFTNEntry 2 } + +mplsFTNDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The description of this FTN entry. Since the index for + this table has no particular significance or meaning, + this object should contain some meaningful text that an + operator could use to further distinguish entries in + this table." + ::= { mplsFTNEntry 3 } + +mplsFTNMask OBJECT-TYPE + SYNTAX BITS { + sourceAddr(0), + destAddr(1), + sourcePort(2), + destPort(3), + protocol(4), + dscp(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bit map indicates which of the fields described + next, namely source address range, destination address + range, source port range, destination port range, IPv4 + Protocol field or IPv6 next-header field and + Differentiated Services Code Point (DSCP) is active for + this FTN entry. If a particular bit is set to zero then + the corresponding field in the packet MUST be ignored + for comparison purposes." + ::= { mplsFTNEntry 4 } + +mplsFTNAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines the type of address contained in + the source and destination address objects + (mplsFTNSourceAddrMin, mplsFTNSourceAddrMax, + mplsFTNDestAddrMin and mplsFTNDestAddrMax) of a + conceptual row. + + This object MUST NOT be set to unknown(0) when + mplsFTNMask has bit positions sourceAddr(0) or + destAddr(1) set to one. + + When both these bit positions of mplsFTNMask are set to + zero the value of mplsFTNAddrType SHOULD be set to + unknown(0) and the corresponding source and destination + + + + address objects SHOULD be set to zero-length strings." + ::= { mplsFTNEntry 5 } + +mplsFTNSourceAddrMin OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the source address range. The type of + this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 6 } + +mplsFTNSourceAddrMax OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper end of the source address range. The type of + this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 7 } + +mplsFTNDestAddrMin OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the destination address range. The + type of this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 8 } + +mplsFTNDestAddrMax OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the destination address range. The + type of this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 9 } + +mplsFTNSourcePortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The lower end of the source port range." + DEFVAL { 0 } + ::= { mplsFTNEntry 10 } + +mplsFTNSourcePortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the source port range " + DEFVAL { 65535 } + ::= { mplsFTNEntry 11 } + +mplsFTNDestPortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the destination port range." + DEFVAL { 0 } + ::= { mplsFTNEntry 12 } + +mplsFTNDestPortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the destination port range." + DEFVAL { 65535 } + ::= { mplsFTNEntry 13 } + +mplsFTNProtocol OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP protocol to match against the IPv4 protocol + number or IPv6 Next-Header number in the packet. A + value of 255 means match all. Note that the protocol + number of 255 is reserved by IANA, and Next-Header + number of 0 is used in IPv6." + DEFVAL { 255 } + ::= { mplsFTNEntry 14 } + +mplsFTNDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The contents of the DSCP field." + REFERENCE + "Nichols, K., Blake, S., Baker, F. and D. Black, + Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers, RFC 2474, December + 1998." + ::= { mplsFTNEntry 15 } + +mplsFTNActionType OBJECT-TYPE + SYNTAX INTEGER { + redirectLsp(1), -- redirect into LSP + redirectTunnel(2) -- redirect into tunnel + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of action to be taken on packets matching this + FTN entry." + ::= { mplsFTNEntry 16 } + +mplsFTNActionPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsFTNActionType is redirectLsp(1), then this + object MUST contain zeroDotZero or point to a instance + of mplsXCEntry indicating the LSP to redirect matching + packets to. + + If mplsFTNActionType is redirectTunnel(2), then this + object MUST contain zeroDotZero or point to a instance + of mplsTunnelEntry indicating the MPLS TE tunnel to + redirect matching packets to. + + If this object points to a conceptual row instance in a + table consistent with mplsFTNActionType but this + instance does not currently exist then no action will + be taken on packets matching such an FTN entry till + this instance comes into existence. + + If this object contains zeroDotZero then no action will + be taken on packets matching such an FTN entry till it + is populated with a valid pointer consistent with the + value of mplsFTNActionType as explained above." + ::= { mplsFTNEntry 17 } + + + + +mplsFTNStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this FTN entry. Conceptual rows + having the value 'permanent' need not allow write- + access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mplsFTNEntry 18 } + +-- End of mplsFTNTable. + +-- Last time an object in mplsFTNMapTable changed. + +mplsFTNMapTableLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the last time an entry was added, deleted or + modified in mplsFTNMapTable. Management stations should + consult this object to determine if the table requires + their attention. This object is particularly useful + for applications performing a retrieval on + mplsFTNMapTable to ensure that the table is not + modified during the retrieval operation." + ::= { mplsFTNObjects 4 } + +-- FTN to interface mapping table. + +mplsFTNMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects which provide the + capability to apply or map FTN rules as defined by + entries in mplsFTNTable to specific interfaces in the + system. FTN rules are compared with incoming packets + in the order in which they are applied on an interface. + + The indexing structure of mplsFTNMapTable is as + follows. + + - mplsFTNMapIndex indicates the interface to which the + rule is being applied. A value of 0 represents the + application of the rule to all interfaces. + + + + + - mplsFTNMapPrevIndex specifies the rule on the + interface prior to the one being applied. A value of + 0 specifies that the rule is being inserted at the + head of the list of rules currently applied to the + interface. + + - mplsFTNMapCurrIndex is the index in mplsFTNTable + corresponding to the rule being applied. + + This indexing structure makes the entries in the table + behave like items in a linked-list. The object + mplsFTNMapPrevIndex in each conceptual row is a pointer + to the previous entry that is applied to a particular + interface. This allows a new entry to be 'inserted' at + an arbitrary position in a list of entries currently + applied to an interface. This object is self- + adjusting, i.e., its value is automatically adjusted by + the agent, if necessary, after an insertion or deletion + operation. + + Using this linked-list structure, one can retrieve FTN + entries in the order of application on a per-interface + basis as follows: + + - To determine the first FTN entry on an interface + with index ifIndex perform a GETNEXT retrieval + operation on mplsFTNMapRowStatus.ifIndex.0.0; the + returned object, if one exists, is (say) + mplsFTNMapRowStatus.ifIndex.0.n (mplsFTNMapRowStatus + is the first accessible columnar object in the + conceptual row). Then the index of the first FTN + entry applied on this interface is n. + + - To determine the FTN entry applied to an interface + after the one indexed by n perform a GETNEXT + retrieval operation on + mplsFTNMapRowStatus.ifIndex.n.0. If such an entry + exists the returned object would be of the form + mplsFTNMapRowStatus.ifIndex.n.m. Then the index of + the next FTN entry applied on this interface is m. + + - If the FTN entry indexed by n is the last entry + applied to the interface with index ifIndex then the + object returned would either be: + + 1.mplsFTNMapRowStatus.ifIndexNext.0.k, where + ifIndexNext is the index of the next interface in + + + + ifTable to which an FTN entry has been applied, in + which case k is the index of the first FTN entry + applied to the interface with index ifIndexNext; + + or: + + 2.mplsFTNMapStorageType.firstIfIndex.0.p, if there + are no more entries in mplsFTNMapTable, where + firstIfIndex is the first entry in ifTable to + which an FTN entry has been mapped. + + Use the above steps to retrieve all the applied FTN + entries on a per-interface basis in application order. + Note that the number of retrieval operations is the + same as the number of applied FTN entries (i.e., the + minimum number of GETNEXT operations needed using any + indexing scheme). + + Agents MUST NOT allow the same FTN entry as specified + by mplsFTNMapCurrIndex to be applied multiple times to + the same interface. + + Agents MUST NOT allow the creation of rows in this + table until the corresponding rows are created in the + mplsFTNTable. + + If a row in mplsFTNTable is destroyed, the agent MUST + destroy the corresponding entries (i.e., ones with a + matching value of mplsFTNCurrIndex) in this table as + well." + ::= { mplsFTNObjects 5 } + +mplsFTNMapEntry OBJECT-TYPE + SYNTAX MplsFTNMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row represents the application of an + FTN rule at a specific position in the list of FTN + rules applied on an interface. " + INDEX { + mplsFTNMapIndex, + mplsFTNMapPrevIndex, + mplsFTNMapCurrIndex + } + ::= { mplsFTNMapTable 1 } + +MplsFTNMapEntry ::= SEQUENCE { + + + + mplsFTNMapIndex InterfaceIndexOrZero, + mplsFTNMapPrevIndex MplsFTNEntryIndexOrZero, + mplsFTNMapCurrIndex MplsFTNEntryIndex, + mplsFTNMapRowStatus RowStatus, + mplsFTNMapStorageType StorageType + } + +mplsFTNMapIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index that this FTN entry is being + applied to. A value of zero indicates an entry that is + applied all interfaces. + + Entries mapped to an interface by specifying its (non- + zero) interface index in mplsFTNMapIndex are applied + ahead of entries with mplsFTNMapIndex equal to zero." + ::= { mplsFTNMapEntry 1 } + +mplsFTNMapPrevIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the previous FTN entry that was applied to + this interface. The special value zero indicates that + this should be the first FTN entry in the list." + ::= { mplsFTNMapEntry 2 } + +mplsFTNMapCurrIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of the current FTN entry that is being applied to + this interface." + ::= { mplsFTNMapEntry 3 } + +mplsFTNMapRowStatus OBJECT-TYPE + SYNTAX RowStatus { + active(1), + createAndGo(4), + destroy(6) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Used for controlling the creation and deletion of this + row. + + All writable objects in this row may be modified at any + time. + + If a conceptual row in mplsFTNMapTable points to a + conceptual row in mplsFTNTable which is subsequently + deleted, the corresponding conceptual row in + mplsFTNMapTable MUST also be deleted by the agent." + ::= { mplsFTNMapEntry 4 } + +mplsFTNMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. Conceptual rows + having the value 'permanent' need not allow write- + access to any columnar objects in this row." + DEFVAL { nonVolatile } + ::= { mplsFTNMapEntry 5 } + +-- End of mplsFTNMapTable + +-- FTN entry performance table + +mplsFTNPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains performance statistics on FTN + entries on a per-interface basis." + ::= { mplsFTNObjects 6 } + +mplsFTNPerfEntry OBJECT-TYPE + SYNTAX MplsFTNPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains performance information for the + specified interface and an FTN entry mapped to this + interface." + INDEX { mplsFTNPerfIndex, mplsFTNPerfCurrIndex } + ::= { mplsFTNPerfTable 1 } + + + + +MplsFTNPerfEntry ::= SEQUENCE { + mplsFTNPerfIndex InterfaceIndexOrZero, + mplsFTNPerfCurrIndex MplsFTNEntryIndex, + mplsFTNPerfMatchedPackets Counter64, + mplsFTNPerfMatchedOctets Counter64, + mplsFTNPerfDiscontinuityTime TimeStamp + } + +mplsFTNPerfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of an interface that an FTN entry + has been applied/mapped to. Each instance of this + object corresponds to an instance of mplsFTNMapIndex." + ::= { mplsFTNPerfEntry 1 } + +mplsFTNPerfCurrIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of an FTN entry that has been applied/mapped to + the specified interface. Each instance of this object + corresponds to an instance of mplsFTNMapCurrIndex." + ::= { mplsFTNPerfEntry 2 } + +mplsFTNPerfMatchedPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that matched the specified FTN entry + if it is applied/mapped to the specified interface. + 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 + mplsFTNDiscontinuityTime." + ::= { mplsFTNPerfEntry 3 } + +mplsFTNPerfMatchedOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of octets that matched the specified FTN entry + if it is applied/mapped to the specified interface. + + + + 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 + mplsFTNDiscontinuityTime." + ::= { mplsFTNPerfEntry 4 } + +mplsFTNPerfDiscontinuityTime 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 entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsFTNPerfEntry 5 } + +-- End of mplsFTNPerfTable + +-- Module compliance. + +-- Top level object IDs. + +mplsFTNGroups + OBJECT IDENTIFIER ::= { mplsFTNConformance 1 } +mplsFTNCompliances + OBJECT IDENTIFIER ::= { mplsFTNConformance 2 } + +-- Compliance requirement for fully compliant implementations. +mplsFTNModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full + support for MPLS-FTN-STD-MIB." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module. + MANDATORY-GROUPS { + mplsFTNRuleGroup, + mplsFTNMapGroup, + mplsFTNPerfGroup + + + + } + + OBJECT mplsFTNAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNSourceAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNSourceAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNDestAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNDestAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + ::= { mplsFTNCompliances 1 } + +-- Compliance requirement for read-only implementations. +mplsFTNModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + + + + provide read-only support for MPLS-FTN-STD-MIB. Such + devices can then be monitored but cannot be configured + using this MIB module." + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module + MANDATORY-GROUPS { + mplsFTNRuleGroup, + mplsFTNMapGroup, + mplsFTNPerfGroup + } + + OBJECT mplsFTNIndexNext + MIN-ACCESS not-accessible + DESCRIPTION + "This object is not needed when mplsFTNTable is + implemented as read-only." + + OBJECT mplsFTNRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT mplsFTNDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourceAddrMin + + + + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourceAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNDestAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNDestAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourcePortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNSourcePortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDestPortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDestPortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNProtocol + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNActionType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNActionPointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDscp + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNMapRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the only + status that needs to be supported." + + OBJECT mplsFTNMapStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsFTNCompliances 2 } + +-- Units of conformance. +mplsFTNRuleGroup OBJECT-GROUP + OBJECTS { + mplsFTNIndexNext, + mplsFTNTableLastChanged, + mplsFTNRowStatus, + mplsFTNDescr, + mplsFTNMask, + mplsFTNAddrType, + mplsFTNSourceAddrMin, + mplsFTNSourceAddrMax, + + + + mplsFTNDestAddrMin, + mplsFTNDestAddrMax, + mplsFTNSourcePortMin, + mplsFTNSourcePortMax, + mplsFTNDestPortMin, + mplsFTNDestPortMax, + mplsFTNProtocol, + mplsFTNActionType, + mplsFTNActionPointer, + mplsFTNDscp, + mplsFTNStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that implement MPLS FTN rules." + ::= { mplsFTNGroups 1 } + +mplsFTNMapGroup OBJECT-GROUP + OBJECTS { + mplsFTNMapTableLastChanged, + mplsFTNMapRowStatus, + mplsFTNMapStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that implement activation of MPLS + FTN entries on interfaces." + ::= { mplsFTNGroups 2 } + +mplsFTNPerfGroup OBJECT-GROUP + OBJECTS { + mplsFTNPerfMatchedPackets, + mplsFTNPerfMatchedOctets, + mplsFTNPerfDiscontinuityTime + } + STATUS current + DESCRIPTION + "Collection of objects providing MPLS FTN performance + information." + ::= { mplsFTNGroups 3 } + +END diff --git a/mibs/ietf/MPLS-L3VPN-STD-MIB b/mibs/ietf/MPLS-L3VPN-STD-MIB new file mode 100644 index 0000000..604b955 --- /dev/null +++ b/mibs/ietf/MPLS-L3VPN-STD-MIB @@ -0,0 +1,1682 @@ +MPLS-L3VPN-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32, Gauge32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, RowStatus, + TimeStamp, StorageType + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB -- [RFC2863] + VPNIdOrZero + FROM VPN-TC-STD-MIB -- [RFC4265] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + IANAipRouteProtocol + FROM IANA-RTPROTO-MIB -- [RTPROTO] + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetAutonomousSystemNumber + FROM INET-ADDRESS-MIB -- [RFC4001] + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + + + MplsIndexType + FROM MPLS-LSR-STD-MIB -- [RFC3813] + ; + +mplsL3VpnMIB MODULE-IDENTITY + LAST-UPDATED "200601230000Z" -- 23 January 2006 + ORGANIZATION "IETF Layer-3 Virtual Private + Networks Working Group." + CONTACT-INFO + " Thomas D. Nadeau + tnadeau@cisco.com + + Harmen van der Linde + havander@cisco.com + + Comments and discussion to l3vpn@ietf.org" + DESCRIPTION + "This MIB contains managed object definitions for the + Layer-3 Multiprotocol Label Switching Virtual + Private Networks. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC4382; see + the RFC itself for full legal notices." + -- Revision history. + REVISION + "200601230000Z" -- 23 January 2006 + DESCRIPTION + "Initial version. Published as RFC 4382." + ::= { mplsStdMIB 11 } + +-- Textual Conventions. +MplsL3VpnName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An identifier that is assigned to each MPLS/BGP VPN and + is used to uniquely identify it. This is assigned by the + system operator or NMS and SHOULD be unique throughout + the MPLS domain. If this is the case, then this identifier + can then be used at any LSR within a specific MPLS domain + to identify this MPLS/BGP VPN. It may also be possible to + preserve the uniqueness of this identifier across MPLS + domain boundaries, in which case this identifier can then + be used to uniquely identify MPLS/BGP VPNs on a more global + basis. This object MAY be set to the VPN ID as defined in + RFC 2685." + REFERENCE + "RFC 2685 Fox B., et al, 'Virtual Private + + + + Networks Identifier', September 1999." + SYNTAX OCTET STRING (SIZE (0..31)) + +MplsL3VpnRouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher and route target + as defined in [RFC4364]." + REFERENCE + "[RFC4364]" + SYNTAX OCTET STRING(SIZE (0..256)) + +MplsL3VpnRtType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Used to define the type of a route target usage. + Route targets can be specified to be imported, + exported, or both. For a complete definition of a + route target, see [RFC4364]." + REFERENCE + "[RFC4364]" + SYNTAX INTEGER { import(1), export(2), both(3) } + +-- Top level components of this MIB. +mplsL3VpnNotifications OBJECT IDENTIFIER ::= { mplsL3VpnMIB 0 } +mplsL3VpnObjects OBJECT IDENTIFIER ::= { mplsL3VpnMIB 1 } +mplsL3VpnScalars OBJECT IDENTIFIER ::= { mplsL3VpnObjects 1 } +mplsL3VpnConf OBJECT IDENTIFIER ::= { mplsL3VpnObjects 2 } +mplsL3VpnPerf OBJECT IDENTIFIER ::= { mplsL3VpnObjects 3 } +mplsL3VpnRoute OBJECT IDENTIFIER ::= { mplsL3VpnObjects 4 } +mplsL3VpnConformance OBJECT IDENTIFIER ::= { mplsL3VpnMIB 2 } + +-- +-- Scalar Objects +-- + +mplsL3VpnConfiguredVrfs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VRFs that are configured on this node." + ::= { mplsL3VpnScalars 1 } + +mplsL3VpnActiveVrfs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of VRFs that are active on this node. + That is, those VRFs whose corresponding mplsL3VpnVrfOperStatus + object value is equal to operational (1)." + ::= { mplsL3VpnScalars 2 } + +mplsL3VpnConnectedInterfaces OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to a VRF." + ::= { mplsL3VpnScalars 3 } + +mplsL3VpnNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true, then it enables the + generation of all notifications defined in + this MIB. This object's value should be + preserved across agent reboots." + REFERENCE + "See also [RFC3413] for explanation that + notifications are under the ultimate control of the + MIB modules in this document." + DEFVAL { false } + ::= { mplsL3VpnScalars 4 } + +mplsL3VpnVrfConfMaxPossRts OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes maximum number of routes that the device + will allow all VRFs jointly to hold. If this value is + set to 0, this indicates that the device is + unable to determine the absolute maximum. In this + case, the configured maximum MAY not actually + be allowed by the device." + ::= { mplsL3VpnScalars 5 } + +mplsL3VpnVrfConfRteMxThrshTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Denotes the interval in seconds, at which the route max threshold + notification may be reissued after the maximum value has been + exceeded (or has been reached if mplsL3VpnVrfConfMaxRoutes and + mplsL3VpnVrfConfHighRteThresh are equal) and the initial + notification has been issued. This value is intended to prevent + continuous generation of notifications by an agent in the event + that routes are continually added to a VRF after it has reached + its maximum value. If this value is set to 0, the agent should + only issue a single notification at the time that the maximum + threshold has been reached, and should not issue any more + notifications until the value of routes has fallen below the + configured threshold value. This is the recommended default + behavior." + DEFVAL { 0 } + ::= { mplsL3VpnScalars 6 } + +mplsL3VpnIllLblRcvThrsh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of illegally received labels above which + the mplsNumVrfSecIllglLblThrshExcd notification + is issued. The persistence of this value mimics + that of the device's configuration." + ::= { mplsL3VpnScalars 7 } + +-- VPN Interface Configuration Table + +mplsL3VpnIfConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnIfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS capability + and associated information." + ::= { mplsL3VpnConf 1 } + +mplsL3VpnIfConfEntry OBJECT-TYPE + SYNTAX MplsL3VpnIfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS L3VPN. + Each entry in this table is meant to correspond to + an entry in the Interfaces Table." + + + + INDEX { mplsL3VpnVrfName, mplsL3VpnIfConfIndex } + ::= { mplsL3VpnIfConfTable 1 } + +MplsL3VpnIfConfEntry ::= SEQUENCE { + mplsL3VpnIfConfIndex InterfaceIndex, + mplsL3VpnIfVpnClassification INTEGER, + mplsL3VpnIfVpnRouteDistProtocol BITS, + mplsL3VpnIfConfStorageType StorageType, + mplsL3VpnIfConfRowStatus RowStatus +} + +mplsL3VpnIfConfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the + mplsL3VpnIfConfTable. A non-zero index for an + entry indicates the ifIndex for the corresponding + interface entry in the MPLS-VPN-layer in the ifTable. + Note that this table does not necessarily correspond + one-to-one with all entries in the Interface MIB + having an ifType of MPLS-layer; rather, only those + that are enabled for MPLS L3VPN functionality." + REFERENCE + "RFC2863" + ::= { mplsL3VpnIfConfEntry 1 } + +mplsL3VpnIfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether this link participates in a + carrier's carrier, enterprise, or inter-provider + scenario." + DEFVAL { enterprise } + ::= { mplsL3VpnIfConfEntry 2 } + +mplsL3VpnIfVpnRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + bgp (1), + ospf (2), + rip(3), + isis(4), + + + + static(5), + other (6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes the route distribution protocol across the + PE-CE link. Note that more than one routing protocol + may be enabled at the same time; thus, this object is + specified as a bitmask. For example, static(5) and + ospf(2) are a typical configuration." + ::= { mplsL3VpnIfConfEntry 3 } + +mplsL3VpnIfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN If entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnIfConfEntry 4 } + +mplsL3VpnIfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. Rows in this + table signify that the specified interface is + associated with this VRF. If the row creation + operation succeeds, the interface will have been + associated with the specified VRF, otherwise the + agent MUST not allow the association. If the agent + only allows read-only operations on this table, it + MUST create entries in this table as they are created + on the device. When a row in this table is in + active(1) state, no objects in that row can be + modified except mplsL3VpnIfConfStorageType and + mplsL3VpnIfConfRowStatus." + ::= { mplsL3VpnIfConfEntry 5 } + +-- VRF Configuration Table + + + +mplsL3VpnVrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS L3VPN + VRF Table capability and associated information. + Entries in this table define VRF routing instances + associated with MPLS/VPN interfaces. Note that + multiple interfaces can belong to the same VRF + instance. The collection of all VRF instances + comprises an actual VPN." + ::= { mplsL3VpnConf 2 } + +mplsL3VpnVrfEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + INDEX { mplsL3VpnVrfName } + ::= { mplsL3VpnVrfTable 1 } +MplsL3VpnVrfEntry ::= SEQUENCE { + mplsL3VpnVrfName MplsL3VpnName, + mplsL3VpnVrfVpnId VPNIdOrZero, + mplsL3VpnVrfDescription SnmpAdminString, + mplsL3VpnVrfRD MplsL3VpnRouteDistinguisher, + mplsL3VpnVrfCreationTime TimeStamp, + mplsL3VpnVrfOperStatus INTEGER, + mplsL3VpnVrfActiveInterfaces Gauge32, + mplsL3VpnVrfAssociatedInterfaces Unsigned32, + mplsL3VpnVrfConfMidRteThresh Unsigned32, + mplsL3VpnVrfConfHighRteThresh Unsigned32, + mplsL3VpnVrfConfMaxRoutes Unsigned32, + mplsL3VpnVrfConfLastChanged TimeStamp, + mplsL3VpnVrfConfRowStatus RowStatus, + mplsL3VpnVrfConfAdminStatus INTEGER, + mplsL3VpnVrfConfStorageType StorageType +} + +mplsL3VpnVrfName OBJECT-TYPE + SYNTAX MplsL3VpnName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The human-readable name of this VPN. This MAY + be equivalent to the [RFC2685] VPN-ID, but may + also vary. If it is set to the VPN ID, it MUST + be equivalent to the value of mplsL3VpnVrfVpnId. + It is strongly recommended that all sites supporting + VRFs that are part of the same VPN use the same + naming convention for VRFs as well as the same VPN + ID." + REFERENCE + "[RFC2685]" + ::= { mplsL3VpnVrfEntry 1 } + +mplsL3VpnVrfVpnId OBJECT-TYPE + SYNTAX VPNIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VPN ID as specified in [RFC2685]. If a VPN ID + has not been specified for this VRF, then this + variable SHOULD be set to a zero-length OCTET + STRING." + ::= { mplsL3VpnVrfEntry 2 } + +mplsL3VpnVrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + DEFVAL { "" } + ::= { mplsL3VpnVrfEntry 3 } + +mplsL3VpnVrfRD OBJECT-TYPE + SYNTAX MplsL3VpnRouteDistinguisher + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + DEFVAL { "" } + ::= { mplsL3VpnVrfEntry 4 } + +mplsL3VpnVrfCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this VRF entry was created." + ::= { mplsL3VpnVrfEntry 5 } + + + +mplsL3VpnVrfOperStatus OBJECT-TYPE + SYNTAX INTEGER { up (1), + down (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether or not a VRF is operational. A VRF is + up(1) when there is at least one interface associated + with the VRF whose ifOperStatus is up(1). A VRF is + down(2) when: + a. There does not exist at least one interface whose + ifOperStatus is up(1). + b. There are no interfaces associated with the VRF." + ::= { mplsL3VpnVrfEntry 6 } + +mplsL3VpnVrfActiveInterfaces OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to this VRF with + ifOperStatus = up(1). + + This value should increase when an interface is associated + with the corresponding VRF and its corresponding ifOperStatus + is equal to up(1). If an interface is associated whose + ifOperStatus is not up(1), then the value is not incremented + until such time as it transitions to this state. + + This value should be decremented when an interface is + disassociated with a VRF or the corresponding ifOperStatus + transitions out of the up(1) state to any other state. + " + ::= { mplsL3VpnVrfEntry 7 } + +mplsL3VpnVrfAssociatedInterfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to this VRF + (independent of ifOperStatus type)." + ::= { mplsL3VpnVrfEntry 8 } + +mplsL3VpnVrfConfMidRteThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Denotes mid-level water marker for the number + of routes that this VRF may hold." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 9 } + +mplsL3VpnVrfConfHighRteThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes high-level water marker for the number of + routes that this VRF may hold." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 10 } + +mplsL3VpnVrfConfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes maximum number of routes that this VRF is + configured to hold. This value MUST be less than or + equal to mplsL3VpnVrfConfMaxPossRts unless it is set + to 0." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 11 } + +mplsL3VpnVrfConfLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + change of this table entry, which includes changes of + VRF parameters defined in this table or addition or + deletion of interfaces associated with this VRF." + ::= { mplsL3VpnVrfEntry 12 } + +mplsL3VpnVrfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. + + + + + When a row in this table is in active(1) state, no + objects in that row can be modified except + mplsL3VpnVrfConfAdminStatus, mplsL3VpnVrfConfRowStatus, + and mplsL3VpnVrfConfStorageType." + ::= { mplsL3VpnVrfEntry 13 } + +mplsL3VpnVrfConfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), -- can't pass packets + testing(3) -- in some test mode + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the desired operational status of this + VRF." + ::= { mplsL3VpnVrfEntry 14 } + +mplsL3VpnVrfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN VRF entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnVrfEntry 15 } + + +-- MplsL3VpnVrfRTTable +mplsL3VpnVrfRTTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfRTEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. + Each entry identifies a connectivity policy supported + as part of a VPN." + ::= { mplsL3VpnConf 3 } + +mplsL3VpnVrfRTEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfRTEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + each route target configured for a VRF supporting + a MPLS L3VPN instance. The indexing provides an + ordering per-VRF instance. See [RFC4364] for a + complete definition of a route target." + INDEX { mplsL3VpnVrfName, mplsL3VpnVrfRTIndex, + mplsL3VpnVrfRTType } + ::= { mplsL3VpnVrfRTTable 1 } + +MplsL3VpnVrfRTEntry ::= SEQUENCE { + mplsL3VpnVrfRTIndex Unsigned32, + mplsL3VpnVrfRTType MplsL3VpnRtType, + mplsL3VpnVrfRT MplsL3VpnRouteDistinguisher, + mplsL3VpnVrfRTDescr SnmpAdminString, + mplsL3VpnVrfRTRowStatus RowStatus, + mplsL3VpnVrfRTStorageType StorageType + } + +mplsL3VpnVrfRTIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Auxiliary index for route targets configured for a + particular VRF." + ::= { mplsL3VpnVrfRTEntry 2 } + +mplsL3VpnVrfRTType OBJECT-TYPE + SYNTAX MplsL3VpnRtType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { mplsL3VpnVrfRTEntry 3 } + +mplsL3VpnVrfRT OBJECT-TYPE + SYNTAX MplsL3VpnRouteDistinguisher + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The route target distribution policy." + DEFVAL { "" } + ::= { mplsL3VpnVrfRTEntry 4 } + +mplsL3VpnVrfRTDescr OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Description of the route target." + DEFVAL { "" } + ::= { mplsL3VpnVrfRTEntry 5 } + +mplsL3VpnVrfRTRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified except mplsL3VpnVrfRTRowStatus." + ::= { mplsL3VpnVrfRTEntry 6 } + +mplsL3VpnVrfRTStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN route target (RT) entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnVrfRTEntry 7 } + +-- VRF Security Table + +mplsL3VpnVrfSecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfSecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per MPLS L3VPN VRF Table + security-related counters." + ::= { mplsL3VpnConf 6 } + +mplsL3VpnVrfSecEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfSecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN. Each + entry in this table is used to indicate security-related + information for each VRF entry." + AUGMENTS { mplsL3VpnVrfEntry } + ::= { mplsL3VpnVrfSecTable 1 } + +MplsL3VpnVrfSecEntry ::= SEQUENCE { + mplsL3VpnVrfSecIllegalLblVltns Counter32, + mplsL3VpnVrfSecDiscontinuityTime TimeStamp +} + +mplsL3VpnVrfSecIllegalLblVltns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of illegally received + labels on this VPN/VRF. + + 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 + mplsL3VpnVrfSecDiscontinuityTime." + ::= { mplsL3VpnVrfSecEntry 1 } + +mplsL3VpnVrfSecDiscontinuityTime 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 entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsL3VpnVrfSecEntry 2 } + + +-- VRF Performance Table + +mplsL3VpnVrfPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per MPLS L3VPN VRF Table performance + + + + information." + ::= { mplsL3VpnPerf 1 } + +mplsL3VpnVrfPerfEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN." + AUGMENTS { mplsL3VpnVrfEntry } + ::= { mplsL3VpnVrfPerfTable 1 } + +MplsL3VpnVrfPerfEntry ::= SEQUENCE { + mplsL3VpnVrfPerfRoutesAdded Counter32, + mplsL3VpnVrfPerfRoutesDeleted Counter32, + mplsL3VpnVrfPerfCurrNumRoutes Gauge32, + mplsL3VpnVrfPerfRoutesDropped Counter32, + mplsL3VpnVrfPerfDiscTime TimeStamp +} + +mplsL3VpnVrfPerfRoutesAdded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes added to this VPN/VRF + since the last discontinuity. 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 + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 1 } + +mplsL3VpnVrfPerfRoutesDeleted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes removed from this VPN/VRF. + + 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 + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 2 } + +mplsL3VpnVrfPerfCurrNumRoutes OBJECT-TYPE + + + + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes currently used by this + VRF." + ::= { mplsL3VpnVrfPerfEntry 3 } + + +mplsL3VpnVrfPerfRoutesDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter should be incremented when the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsL3VpnVrfMaxRouteThreshold. + + 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 + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 4 } + +mplsL3VpnVrfPerfDiscTime 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 entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsL3VpnVrfPerfEntry 5 } + +-- VRF Routing Table + +mplsL3VpnVrfRteTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfRteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS L3VPN VRF Table + routing information. Entries in this table define VRF routing + entries associated with the specified MPLS/VPN interfaces. Note + + + + that this table contains both BGP and Interior Gateway Protocol + IGP routes, as both may appear in the same VRF." + REFERENCE + "[RFC2096]" + ::= { mplsL3VpnRoute 1 } + +mplsL3VpnVrfRteEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfRteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface. + + Implementers need to be aware that there are quite a few + index objects that together can exceed the size allowed + for an Object Identifier (OID). So implementers must make + sure that OIDs of column instances in this table will have + no more than 128 sub-identifiers, otherwise they cannot be + accessed using SNMPv1, SNMPv2c, or SNMPv3." + + INDEX { mplsL3VpnVrfName, + mplsL3VpnVrfRteInetCidrDestType, + mplsL3VpnVrfRteInetCidrDest, + mplsL3VpnVrfRteInetCidrPfxLen, + mplsL3VpnVrfRteInetCidrPolicy, + mplsL3VpnVrfRteInetCidrNHopType, + mplsL3VpnVrfRteInetCidrNextHop + } + ::= { mplsL3VpnVrfRteTable 1 } + +MplsL3VpnVrfRteEntry ::= SEQUENCE { + mplsL3VpnVrfRteInetCidrDestType InetAddressType, + mplsL3VpnVrfRteInetCidrDest InetAddress, + mplsL3VpnVrfRteInetCidrPfxLen InetAddressPrefixLength, + mplsL3VpnVrfRteInetCidrPolicy OBJECT IDENTIFIER, + mplsL3VpnVrfRteInetCidrNHopType InetAddressType, + mplsL3VpnVrfRteInetCidrNextHop InetAddress, + mplsL3VpnVrfRteInetCidrIfIndex InterfaceIndexOrZero, + mplsL3VpnVrfRteInetCidrType INTEGER, + mplsL3VpnVrfRteInetCidrProto IANAipRouteProtocol, + mplsL3VpnVrfRteInetCidrAge Gauge32, + mplsL3VpnVrfRteInetCidrNextHopAS InetAutonomousSystemNumber, + mplsL3VpnVrfRteInetCidrMetric1 Integer32, + mplsL3VpnVrfRteInetCidrMetric2 Integer32, + + + + mplsL3VpnVrfRteInetCidrMetric3 Integer32, + mplsL3VpnVrfRteInetCidrMetric4 Integer32, + mplsL3VpnVrfRteInetCidrMetric5 Integer32, + mplsL3VpnVrfRteXCPointer MplsIndexType, + mplsL3VpnVrfRteInetCidrStatus RowStatus + } + + mplsL3VpnVrfRteInetCidrDestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the mplsL3VpnVrfRteInetCidrDest address, as + defined in the InetAddress MIB. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC4001" + ::= { mplsL3VpnVrfRteEntry 1 } + + mplsL3VpnVrfRteInetCidrDest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IP address of this route. + + The type of this address is determined by the value of + the mplsL3VpnVrfRteInetCidrDestType object. + + The values for the index objects + mplsL3VpnVrfRteInetCidrDest and + mplsL3VpnVrfRteInetCidrPfxLen must be consistent. When + the value of mplsL3VpnVrfRteInetCidrDest is x, then + the bitwise logical-AND of x with the value of the mask + formed from the corresponding index object + mplsL3VpnVrfRteInetCidrPfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { mplsL3VpnVrfRteEntry 2 } + + mplsL3VpnVrfRteInetCidrPfxLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength (0..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the number of leading one bits that form the + + + + mask to be logical-ANDed with the destination address + before being compared to the value in the + mplsL3VpnVrfRteInetCidrDest field. + + The values for the index objects + mplsL3VpnVrfRteInetCidrDest and + mplsL3VpnVrfRteInetCidrPfxLen must be consistent. When + the value of mplsL3VpnVrfRteInetCidrDest is x, then the + bitwise logical-AND of x with the value of the mask + formed from the corresponding index object + mplsL3VpnVrfRteInetCidrPfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { mplsL3VpnVrfRteEntry 3 } + + mplsL3VpnVrfRteInetCidrPolicy OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an opaque object without any defined + semantics. Its purpose is to serve as an additional + index that may delineate between multiple entries to + the same destination. The value { 0 0 } shall be used + as the default value for this object." + ::= { mplsL3VpnVrfRteEntry 4 } + + mplsL3VpnVrfRteInetCidrNHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the mplsL3VpnVrfRteInetCidrNextHop address, + as defined in the InetAddress MIB. + + Value should be set to unknown(0) for non-remote + routes. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC4001" + ::= { mplsL3VpnVrfRteEntry 5 } + + mplsL3VpnVrfRteInetCidrNextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "On remote routes, the address of the next system en + route. For non-remote routes, a zero-length string. + The type of this address is determined by the value of + the mplsL3VpnVrfRteInetCidrNHopType object." + ::= { mplsL3VpnVrfRteEntry 6 } + + mplsL3VpnVrfRteInetCidrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached. A value of 0 is valid and represents the + scenario where no interface is specified." + DEFVAL { 0 } + ::= { mplsL3VpnVrfRteEntry 7 } + + mplsL3VpnVrfRteInetCidrType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route which discards traffic and + -- returns ICMP notification + local (3), -- local interface + remote (4), -- remote destination + blackhole(5) -- route which discards traffic + -- silently + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + + reject(2) refers to a route that, if matched, discards + the message as unreachable and returns a notification + (e.g., ICMP error) to the message sender. This is used + in some protocols as a means of correctly aggregating + routes. + + blackhole(5) refers to a route that, if matched, + + + + discards the message silently." + DEFVAL { other } + ::= { mplsL3VpnVrfRteEntry 8 } + + mplsL3VpnVrfRteInetCidrProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + 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." + ::= { mplsL3VpnVrfRteEntry 9 } + + mplsL3VpnVrfRteInetCidrAge OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + 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." + ::= { mplsL3VpnVrfRteEntry 10 } + + mplsL3VpnVrfRteInetCidrNextHopAS OBJECT-TYPE + SYNTAX InetAutonomousSystemNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Autonomous System Number of the next hop. The + semantics of this object are determined by the + routing protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. When this + object is unknown or not relevant, its value should + be set to zero." + DEFVAL { 0 } + ::= { mplsL3VpnVrfRteEntry 11 } + + mplsL3VpnVrfRteInetCidrMetric1 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the + + + + routing protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this + metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 12 } + + mplsL3VpnVrfRteInetCidrMetric2 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 13 } + + mplsL3VpnVrfRteInetCidrMetric3 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 14 } + + mplsL3VpnVrfRteInetCidrMetric4 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this metric + is not used, its value should be set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 15 } + + + + + mplsL3VpnVrfRteInetCidrMetric5 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this metric is + not used, its value should be set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 16 } + + mplsL3VpnVrfRteXCPointer OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index into mplsXCTable that identifies which cross- + connect entry is associated with this VRF route entry + by containing the mplsXCIndex of that cross-connect entry. + The string containing the single-octet 0x00 indicates that + a label stack is not associated with this route entry. This + can be the case because the label bindings have not yet + been established, or because some change in the agent has + removed them. + + When the label stack associated with this VRF route is created, + it MUST establish the associated cross-connect + entry in the mplsXCTable and then set that index to the value + of this object. Changes to the cross-connect object in the + mplsXCTable MUST automatically be reflected in the value of + this object. If this object represents a static routing entry, + then the manager must ensure that this entry is maintained + consistently in the corresponding mplsXCTable as well." + REFERENCE + "RFC 3813 - Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information base (MIB), C. Srinivasan, + A. Vishwanathan, and T. Nadeau, June 2004" + ::= { mplsL3VpnVrfRteEntry 17 } + + mplsL3VpnVrfRteInetCidrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + + + + A row entry cannot be modified when the status is + marked as active(1)." + ::= { mplsL3VpnVrfRteEntry 18 } + + +-- MPLS L3VPN Notifications +mplsL3VpnVrfUp NOTIFICATION-TYPE + OBJECTS { mplsL3VpnIfConfRowStatus, + mplsL3VpnVrfOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when: + a. No interface is associated with this VRF, and the first + (and only first) interface associated with it has its + ifOperStatus change to up(1). + + b. One interface is associated with this VRF, and + the ifOperStatus of this interface changes to up(1). + + c. Multiple interfaces are associated with this VRF, and the + ifOperStatus of all interfaces is down(2), and the first + of those interfaces has its ifOperStatus change to up(1)." + ::= { mplsL3VpnNotifications 1 } + +mplsL3VpnVrfDown NOTIFICATION-TYPE + OBJECTS { mplsL3VpnIfConfRowStatus, + mplsL3VpnVrfOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when: + a. One interface is associated with this VRF, and + the ifOperStatus of this interface changes from up(1) + to down(2). + + b. Multiple interfaces are associated with this VRF, and + the ifOperStatus of all except one of these interfaces is + equal to up(1), and the ifOperStatus of that interface + changes from up(1) to down(2). + + c. The last interface with ifOperStatus equal to up(1) + is disassociated from a VRF." + ::= { mplsL3VpnNotifications 2 } + +mplsL3VpnVrfRouteMidThreshExceeded NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfMidRteThresh + + + + } + STATUS current + DESCRIPTION + "This notification is generated when the number of routes + contained by the specified VRF exceeds the value indicated by + mplsL3VpnVrfMidRouteThreshold. A single notification MUST be + generated when this threshold is exceeded, and no other + notifications of this type should be issued until the value + of mplsL3VpnVrfPerfCurrNumRoutes has fallen below that of + mplsL3VpnVrfConfMidRteThresh." + ::= { mplsL3VpnNotifications 3 } + +mplsL3VpnVrfNumVrfRouteMaxThreshExceeded NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfHighRteThresh + } + STATUS current + DESCRIPTION + "This notification is generated when the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsL3VpnVrfMaxRouteThreshold. In cases where + mplsL3VpnVrfConfHighRteThresh is set to the same value + as mplsL3VpnVrfConfMaxRoutes, mplsL3VpnVrfConfHighRteThresh + need not be exceeded; rather, just reached for this notification + to be issued. + + Note that mplsL3VpnVrfConfRteMxThrshTime denotes the interval + at which the this notification will be reissued after the + maximum value has been exceeded (or reached if + mplsL3VpnVrfConfMaxRoutes and mplsL3VpnVrfConfHighRteThresh are + equal) and the initial notification has been issued. This value + is intended to prevent continuous generation of notifications by + an agent in the event that routes are continually added to a VRF + after it has reached its maximum value. The default value is 0 + minutes. If this value is set to 0, the agent should only issue + a single notification at the time that the maximum threshold has + been reached, and should not issue any more notifications until + the value of routes has fallen below the configured threshold + value." + ::= { mplsL3VpnNotifications 4 } + +mplsL3VpnNumVrfSecIllglLblThrshExcd NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfSecIllegalLblVltns } + STATUS current + DESCRIPTION + "This notification is generated when the number of illegal + label violations on a VRF as indicated by + + + + mplsL3VpnVrfSecIllegalLblVltns has exceeded + mplsL3VpnIllLblRcvThrsh. The threshold is not + included in the varbind here because the value of + mplsL3VpnVrfSecIllegalLblVltns should be one greater than + the threshold at the time this notification is issued." + ::= { mplsL3VpnNotifications 5 } + + +mplsL3VpnNumVrfRouteMaxThreshCleared NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfHighRteThresh + } + STATUS current + DESCRIPTION + "This notification is generated only after the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsVrfMaxRouteThreshold, and then falls below this value. The + emission of this notification informs the operator that the + error condition has been cleared without the operator having to + query the device. + + Note that mplsL3VpnVrfConfRteMxThrshTime denotes the interval at + which the mplsNumVrfRouteMaxThreshExceeded notification will + be reissued after the maximum value has been exceeded (or + reached if mplsL3VpnVrfConfMaxRoutes and + mplsL3VpnVrfConfHighRteThresh are equal) and the initial + notification has been issued. Therefore, + the generation of this notification should also be emitted with + this same frequency (assuming that the error condition is + cleared). Specifically, if the error condition is reached and + cleared several times during the period of time specified in + mplsL3VpnVrfConfRteMxThrshTime, only a single notification will + be issued to indicate the first instance of the error condition + as well as the first time the error condition is cleared. + This behavior is intended to prevent continuous generation of + notifications by an agent in the event that routes are + continually added and removed to/from a VRF after it has + reached its maximum value. The default value is 0. If this + value is set to 0, the agent should issue a notification + whenever the maximum threshold has been cleared." + ::= { mplsL3VpnNotifications 6 } + +-- Conformance Statement +mplsL3VpnGroups + OBJECT IDENTIFIER ::= { mplsL3VpnConformance 1 } + +mplsL3VpnCompliances + + + + OBJECT IDENTIFIER ::= { mplsL3VpnConformance 2 } + +-- Module Compliance + +mplsL3VpnModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full support + for the MPLS-L3VPN-STD-MIB" + MODULE -- this module + MANDATORY-GROUPS { mplsL3VpnScalarGroup, + mplsL3VpnVrfGroup, + mplsL3VpnIfGroup, + mplsL3VpnPerfGroup, + mplsL3VpnVrfRteGroup, + mplsL3VpnVrfRTGroup, + mplsL3VpnSecGroup, + mplsL3VpnNotificationGroup + } + + GROUP mplsL3VpnPerfRouteGroup + DESCRIPTION "This group is only mandatory for LSRs that + support tracking the number of routes attempted + to be added to VRFs." + + OBJECT mplsL3VpnIfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + + OBJECT mplsL3VpnVrfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + OBJECT mplsL3VpnVrfRTRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + + + ::= { mplsL3VpnCompliances 1 } + + +-- +-- ReadOnly Compliance +-- + +mplsL3VpnModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance requirement for implementations that only + provide read-only support for MPLS-L3VPN-STD-MIB. + Such devices can then be monitored but cannot be + configured using this MIB module." + + MODULE -- this module + MANDATORY-GROUPS { mplsL3VpnScalarGroup, + mplsL3VpnVrfGroup, + mplsL3VpnIfGroup, + mplsL3VpnPerfGroup, + mplsL3VpnVrfRteGroup, + mplsL3VpnVrfRTGroup, + mplsL3VpnSecGroup, + mplsL3VpnNotificationGroup + } + + GROUP mplsL3VpnPerfRouteGroup + DESCRIPTION "This group is only mandatory for LSRs that + support tracking the number of routes attempted to + be added to VRFs." + + OBJECT mplsL3VpnIfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnIfVpnClassification + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsL3VpnIfVpnRouteDistProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnIfConfStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfVpnId + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfDescription + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRD + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfMidRteThresh + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfHighRteThresh + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfMaxRoutes + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRT + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTDescr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT mplsL3VpnVrfRteInetCidrIfIndex + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrNextHopAS + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric1 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric2 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric3 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric4 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric5 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteXCPointer + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mplsL3VpnCompliances 2 } + + + -- Units of conformance. + mplsL3VpnScalarGroup OBJECT-GROUP + OBJECTS { mplsL3VpnConfiguredVrfs, + mplsL3VpnActiveVrfs, + mplsL3VpnConnectedInterfaces, + + + + mplsL3VpnNotificationEnable, + mplsL3VpnVrfConfMaxPossRts, + mplsL3VpnVrfConfRteMxThrshTime, + mplsL3VpnIllLblRcvThrsh + } + STATUS current + DESCRIPTION + "Collection of scalar objects required for MPLS VPN + management." + ::= { mplsL3VpnGroups 1 } + + mplsL3VpnVrfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfVpnId, + mplsL3VpnVrfDescription, + mplsL3VpnVrfRD, + mplsL3VpnVrfCreationTime, + mplsL3VpnVrfOperStatus, + mplsL3VpnVrfActiveInterfaces, + mplsL3VpnVrfAssociatedInterfaces, + mplsL3VpnVrfConfMidRteThresh, + mplsL3VpnVrfConfHighRteThresh, + mplsL3VpnVrfConfMaxRoutes, + mplsL3VpnVrfConfLastChanged, + mplsL3VpnVrfConfRowStatus, + mplsL3VpnVrfConfAdminStatus, + mplsL3VpnVrfConfStorageType + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN VRF + management." + ::= { mplsL3VpnGroups 2 } + + mplsL3VpnIfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnIfVpnClassification, + mplsL3VpnIfVpnRouteDistProtocol, + mplsL3VpnIfConfStorageType, + mplsL3VpnIfConfRowStatus + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN interface + management." + ::= { mplsL3VpnGroups 3 } + + mplsL3VpnPerfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfPerfRoutesAdded, + mplsL3VpnVrfPerfRoutesDeleted, + + + + mplsL3VpnVrfPerfCurrNumRoutes + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN + performance information." + ::= { mplsL3VpnGroups 4 } + + mplsL3VpnPerfRouteGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfPerfRoutesDropped, + mplsL3VpnVrfPerfDiscTime + } + STATUS current + DESCRIPTION + "Collection of objects needed to track MPLS VPN + routing table dropped routes." + ::= { mplsL3VpnGroups 5 } + + mplsL3VpnSecGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfSecIllegalLblVltns, + mplsL3VpnVrfSecDiscontinuityTime } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN + security-related information." + ::= { mplsL3VpnGroups 7 } + + mplsL3VpnVrfRteGroup OBJECT-GROUP + OBJECTS { + mplsL3VpnVrfRteInetCidrIfIndex, + mplsL3VpnVrfRteInetCidrType, + mplsL3VpnVrfRteInetCidrProto, + mplsL3VpnVrfRteInetCidrAge, + mplsL3VpnVrfRteInetCidrNextHopAS, + mplsL3VpnVrfRteInetCidrMetric1, + mplsL3VpnVrfRteInetCidrMetric2, + mplsL3VpnVrfRteInetCidrMetric3, + mplsL3VpnVrfRteInetCidrMetric4, + mplsL3VpnVrfRteInetCidrMetric5, + mplsL3VpnVrfRteXCPointer, + mplsL3VpnVrfRteInetCidrStatus + } + STATUS current + DESCRIPTION + "Objects required for VRF route table management." + ::= { mplsL3VpnGroups 8 } + + mplsL3VpnVrfRTGroup OBJECT-GROUP + + + + OBJECTS { mplsL3VpnVrfRTDescr, + mplsL3VpnVrfRT, + mplsL3VpnVrfRTRowStatus, + mplsL3VpnVrfRTStorageType + } + STATUS current + DESCRIPTION + "Objects required for VRF route target management." + ::= { mplsL3VpnGroups 9 } + + mplsL3VpnNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { mplsL3VpnVrfUp, + mplsL3VpnVrfDown, + mplsL3VpnVrfRouteMidThreshExceeded, + mplsL3VpnVrfNumVrfRouteMaxThreshExceeded, + mplsL3VpnNumVrfSecIllglLblThrshExcd, + mplsL3VpnNumVrfRouteMaxThreshCleared + } + STATUS current + DESCRIPTION + "Objects required for MPLS VPN notifications." + ::= { mplsL3VpnGroups 10 } +END diff --git a/mibs/ietf/MPLS-LC-ATM-STD-MIB b/mibs/ietf/MPLS-LC-ATM-STD-MIB new file mode 100644 index 0000000..3ea5a9a --- /dev/null +++ b/mibs/ietf/MPLS-LC-ATM-STD-MIB @@ -0,0 +1,356 @@ +MPLS-LC-ATM-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, StorageType, TruthValue + FROM SNMPv2-TC + AtmVpIdentifier + FROM ATM-TC-MIB + mplsStdMIB, MplsAtmVcIdentifier + FROM MPLS-TC-STD-MIB + mplsInterfaceIndex + FROM MPLS-LSR-STD-MIB + ; + +mplsLcAtmStdMIB MODULE-IDENTITY + LAST-UPDATED "200601120000Z" -- 12 January 2006 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Postal: Cisco Systems, Inc. + 250 Apollo Drive + Chelmsford, MA 01824 + Tel: +1-978-244-3051 + Email: tnadeau@cisco.com + + Subrahmanya Hegde + Postal: Cisco Systems, Inc. + 225 East Tazman Drive + Tel: +1-408-525-6562 + Email: subrah@cisco.com + General comments should be sent to mpls@uu.net + " + DESCRIPTION + "This MIB module contains managed object definitions for + MPLS Label-Controlled ATM interfaces as defined in + [RFC3035]. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4368; see + the RFC itself for full legal notices." + + + + + -- Revision history. + REVISION + "200601120000Z" -- 12 January 2006 + DESCRIPTION + "Initial revision, published as part of RFC 4368." + ::= { mplsStdMIB 9 } + +-- Top level components of this MIB module. + +-- Tables, Scalars, Notifications, Conformance + +mplsLcAtmStdNotifications OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 0 } + +mplsLcAtmStdObjects OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 1 } + +mplsLcAtmStdConformance OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 2 } + +-- MPLS LC-ATM Interface Configuration Table. +mplsLcAtmStdInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLcAtmStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS LC-ATM + capability and associated information. In particular, + this table sparsely extends the MPLS-LSR-STD-MIB's + mplsInterfaceConfTable." + ::= { mplsLcAtmStdObjects 1 } + +mplsLcAtmStdInterfaceConfEntry OBJECT-TYPE + SYNTAX MplsLcAtmStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS LC-ATM. + Each entry in this table will exist only if a + corresponding entry in ifTable and mplsInterfaceConfTable + exists. If the associated entries in ifTable and + mplsInterfaceConfTable are deleted, the corresponding + entry in this table must also be deleted shortly + thereafter." + INDEX { mplsInterfaceIndex } + ::= { mplsLcAtmStdInterfaceConfTable 1 } + +MplsLcAtmStdInterfaceConfEntry ::= SEQUENCE { + mplsLcAtmStdCtrlVpi AtmVpIdentifier, + mplsLcAtmStdCtrlVci MplsAtmVcIdentifier, + + + + mplsLcAtmStdUnlabTrafVpi AtmVpIdentifier, + mplsLcAtmStdUnlabTrafVci MplsAtmVcIdentifier, + mplsLcAtmStdVcMerge TruthValue, + mplsLcAtmVcDirectlyConnected TruthValue, + mplsLcAtmLcAtmVPI AtmVpIdentifier, + mplsLcAtmStdIfConfRowStatus RowStatus, + mplsLcAtmStdIfConfStorageType StorageType +} + +mplsLcAtmStdCtrlVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value over which this + LSR is willing to accept control traffic on + this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 1 } + +mplsLcAtmStdCtrlVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 2 } + +mplsLcAtmStdUnlabTrafVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value over which this + LSR is willing to accept unlabeled traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 3 } + +mplsLcAtmStdUnlabTrafVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VCI value over which this + LSR is willing to accept unlabeled traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 4 } + + + +mplsLcAtmStdVcMerge OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If set to true(1), indicates that this interface + is capable of ATM VC merge; otherwise, it MUST + be set to false(2)." + DEFVAL { false } + ::= { mplsLcAtmStdInterfaceConfEntry 5 } + +mplsLcAtmVcDirectlyConnected OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates whether an LC-ATM is directly + or indirectly (by means of a VP) connected. If set to + true(1), indicates that this interface is directly + connected LC-ATM; otherwise, it MUST be set to + false(2). Note that although it can be intimated + from RFC 3057 that multiple VPs may be used, + in practice only a single one is used, and therefore + the authors of this MIB module have chosen to model + it as such." + DEFVAL { true } + ::= { mplsLcAtmStdInterfaceConfEntry 6 } + +mplsLcAtmLcAtmVPI OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value used for indirectly + connected LC-ATM interfaces. For these + interfaces, the VPI field is not + available to MPLS, and the label MUST be + encoded entirely within the VCI field + (see [RFC3035]). If the interface is directly + connected, this value MUST be set to zero." + DEFVAL { 0 } + ::= { mplsLcAtmStdInterfaceConfEntry 7 } + +mplsLcAtmStdIfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object is used to create and + delete entries in this table. When configuring + entries in this table, the corresponding + ifEntry and mplsInterfaceConfEntry + MUST exist beforehand. If a manager attempts to + create an entry for a corresponding + mplsInterfaceConfEntry that does not support LC-ATM, + the agent MUST return an inconsistentValue error. + If this table is implemented read-only, then the + agent must set this object to active(1) when this + row is made active. If this table is implemented + writable, then an agent MUST not allow modification + to its objects once this value is set to active(1), + except to mplsLcAtmStdIfConfRowStatus and + mplsLcAtmStdIfConfStorageType." + ::= { mplsLcAtmStdInterfaceConfEntry 8 } + + mplsLcAtmStdIfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLcAtmStdInterfaceConfEntry 9 } + +-- End of mplsLcAtmStdInterfaceConfTable + +-- Module compliance. + +mplsLcAtmStdCompliances + OBJECT IDENTIFIER ::= { mplsLcAtmStdConformance 1 } + +mplsLcAtmStdGroups + OBJECT IDENTIFIER ::= { mplsLcAtmStdConformance 2 } + +-- Compliance requirement for full compliance + +mplsLcAtmStdModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide + full support for MPLS-LC-ATM-STD-MIB. Such + devices can be monitored and also be configured + using this MIB module." + + + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcAtmStdIfGroup + } + + OBJECT mplsLcAtmStdIfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsLcAtmStdCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsLcAtmStdModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-LC-ATM-STD-MIB. + Such devices can be monitored but cannot be configured + using this MIB module. + " + MODULE -- this module + MANDATORY-GROUPS { + mplsLcAtmStdIfGroup + } + + -- mplsLcAtmStdInterfaceConfTable + + OBJECT mplsLcAtmStdCtrlVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdCtrlVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdUnlabTrafVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdUnlabTrafVci + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdVcMerge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdIfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLcAtmVcDirectlyConnected + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmLcAtmVPI + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdIfConfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsLcAtmStdCompliances 2 } + + +-- Units of conformance. + +mplsLcAtmStdIfGroup OBJECT-GROUP + OBJECTS { + mplsLcAtmStdCtrlVpi, + mplsLcAtmStdCtrlVci, + mplsLcAtmStdUnlabTrafVpi, + mplsLcAtmStdUnlabTrafVci, + mplsLcAtmStdVcMerge, + mplsLcAtmVcDirectlyConnected, + mplsLcAtmLcAtmVPI, + mplsLcAtmStdIfConfRowStatus, + mplsLcAtmStdIfConfStorageType + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS LC-ATM + + + + interface configuration." + ::= { mplsLcAtmStdGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LC-FR-STD-MIB b/mibs/ietf/MPLS-LC-FR-STD-MIB new file mode 100644 index 0000000..56c314c --- /dev/null +++ b/mibs/ietf/MPLS-LC-FR-STD-MIB @@ -0,0 +1,275 @@ +MPLS-LC-FR-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, StorageType + FROM SNMPv2-TC + mplsInterfaceIndex + FROM MPLS-LSR-STD-MIB + DLCI + FROM FRAME-RELAY-DTE-MIB + mplsStdMIB + FROM MPLS-TC-STD-MIB + ; +mplsLcFrStdMIB MODULE-IDENTITY + + LAST-UPDATED "200601120000Z" -- 12 January 2006 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Subrahmanya Hegde + Email: subrah@cisco.com + + General comments should be sent to mpls@uu.net + " + DESCRIPTION + "This MIB module contains managed object definitions for + MPLS Label-Controlled Frame-Relay interfaces as defined + in (RFC3034). + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4368; see + the RFC itself for full legal notices." + + + + -- Revision history. + REVISION + "200601120000Z" -- 12 January 2006 + DESCRIPTION + "Initial revision, published as part of RFC 4368." + ::= { mplsStdMIB 10 } + +-- Top level components of this MIB module. +-- Tables, Scalars, Notifications, Conformance + +mplsLcFrStdNotifications OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 0 } +mplsLcFrStdObjects OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 1 } +mplsLcFrStdConformance OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 2 } + +-- MPLS LC-FR Interface Configuration Table. +mplsLcFrStdInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLcFrStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS LC-FR + capability and associated information. In particular, + this table sparsely extends the MPLS-LSR-STD-MIB's + mplsInterfaceConfTable." + ::= { mplsLcFrStdObjects 1 } + +mplsLcFrStdInterfaceConfEntry OBJECT-TYPE + SYNTAX MplsLcFrStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS LC-FR. + Each entry in this table will exist only if a + corresponding entry in ifTable and mplsInterfaceConfTable + exists. If the associated entries in ifTable and + mplsInterfaceConfTable are deleted, the corresponding + entry in this table must also be deleted shortly + thereafter." + INDEX { mplsInterfaceIndex } + ::= { mplsLcFrStdInterfaceConfTable 1 } + +MplsLcFrStdInterfaceConfEntry ::= SEQUENCE { + mplsLcFrStdTrafficMinDlci DLCI, + mplsLcFrStdTrafficMaxDlci DLCI, + mplsLcFrStdCtrlMinDlci DLCI, + mplsLcFrStdCtrlMaxDlci DLCI, + mplsLcFrStdInterfaceConfRowStatus RowStatus, + + + mplsLcFrStdInterfaceConfStorageType StorageType +} + +mplsLcFrStdTrafficMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the minimum DLCI value over which this + LSR is willing to accept traffic on this + interface." + ::= { mplsLcFrStdInterfaceConfEntry 1 } + +mplsLcFrStdTrafficMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the max DLCI value over which this + LSR is willing to accept traffic on this + interface." + ::= { mplsLcFrStdInterfaceConfEntry 2 } + +mplsLcFrStdCtrlMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the min DLCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcFrStdInterfaceConfEntry 3 } + +mplsLcFrStdCtrlMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the max DLCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcFrStdInterfaceConfEntry 4 } + +mplsLcFrStdInterfaceConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "This object is used to create and + delete entries in this table. When configuring + entries in this table, the corresponding ifEntry and + mplsInterfaceConfEntry MUST exist beforehand. If a manager + attempts to create an entry for a corresponding + mplsInterfaceConfEntry that does not support LC-FR, + the agent MUST return an inconsistentValue error. + If this table is implemented read-only, then the + agent must set this object to active(1) when this + row is made active. If this table is implemented + writable, then an agent MUST not allow modification + to its objects once this value is set to active(1), + except to mplsLcFrStdInterfaceConfRowStatus and + mplsLcFrStdInterfaceConfStorageType." + ::= { mplsLcFrStdInterfaceConfEntry 5 } + + mplsLcFrStdInterfaceConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLcFrStdInterfaceConfEntry 6 } + +-- End of mplsLcFrStdInterfaceConfTable + +-- Module compliance. + +mplsLcFrStdCompliances + OBJECT IDENTIFIER ::= { mplsLcFrStdConformance 1 } + +mplsLcFrStdGroups + OBJECT IDENTIFIER ::= { mplsLcFrStdConformance 2 } + + +-- Compliance requirement for full compliance + +mplsLcFrStdModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide + full support for MPLS-LC-FR-STD-MIB. Such + devices can be monitored and also be configured + using this MIB module." + + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcFrStdIfGroup + } + + OBJECT mplsLcFrStdInterfaceConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsLcFrStdCompliances 1 } + + +-- Compliance requirement for read-only implementations. + +mplsLcFrStdModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-LC-FR-STD-MIB. + Such devices can be monitored but cannot be configured + using this MIB module. + " + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcFrStdIfGroup + } + + -- mplsLcFrStdInterfaceConfTable + + OBJECT mplsLcFrStdTrafficMinDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdTrafficMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdCtrlMinDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT mplsLcFrStdCtrlMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdInterfaceConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLcFrStdInterfaceConfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsLcFrStdCompliances 2 } + +-- Units of conformance. + +mplsLcFrStdIfGroup OBJECT-GROUP + OBJECTS { + mplsLcFrStdTrafficMinDlci, + mplsLcFrStdTrafficMaxDlci, + mplsLcFrStdCtrlMinDlci, + mplsLcFrStdCtrlMaxDlci, + mplsLcFrStdInterfaceConfRowStatus, + mplsLcFrStdInterfaceConfStorageType + } + STATUS current + + DESCRIPTION + "Collection of objects needed for MPLS LC-FR + interface configuration." + ::= { mplsLcFrStdGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-ATM-STD-MIB b/mibs/ietf/MPLS-LDP-ATM-STD-MIB new file mode 100644 index 0000000..c68f3be --- /dev/null +++ b/mibs/ietf/MPLS-LDP-ATM-STD-MIB @@ -0,0 +1,792 @@ +MPLS-LDP-ATM-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + RowStatus, + StorageType + FROM SNMPv2-TC -- [RFC2579] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + AtmVpIdentifier + FROM ATM-TC-MIB -- [RFC2514] + + mplsStdMIB, + MplsAtmVcIdentifier + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId + FROM MPLS-LDP-STD-MIB -- [RFC3813] + + ; + +mplsLdpAtmStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + + + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing Asynchronous Transfer Mode (ATM) as the Layer 2 + media." + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 5 } + +--**************************************************************** + +mplsLdpAtmObjects OBJECT IDENTIFIER + ::= { mplsLdpAtmStdMIB 1 } +mplsLdpAtmConformance OBJECT IDENTIFIER + ::= { mplsLdpAtmStdMIB 2 } + +--**************************************************************** +-- MPLS LDP ATM Objects +--**************************************************************** +-- +-- Ldp Entity Objects for ATM + + +-- + +mplsLdpEntityAtmObjects OBJECT IDENTIFIER ::= + { mplsLdpAtmObjects 1 } + +mplsLdpEntityAtmTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityAtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM specific information + which could be used in the + 'Optional Parameters' and other ATM specific + information. + + This table 'sparse augments' the mplsLdpEntityTable + when ATM is the Layer 2 medium." + ::= { mplsLdpEntityAtmObjects 1 } + +mplsLdpEntityAtmEntry OBJECT-TYPE + SYNTAX MplsLdpEntityAtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the ATM parameters + and ATM information for this LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex + } + ::= { mplsLdpEntityAtmTable 1 } + + +MplsLdpEntityAtmEntry ::= SEQUENCE { + mplsLdpEntityAtmIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityAtmMergeCap INTEGER, + mplsLdpEntityAtmLRComponents Unsigned32, + mplsLdpEntityAtmVcDirectionality INTEGER, + mplsLdpEntityAtmLsrConnectivity INTEGER, + mplsLdpEntityAtmDefaultControlVpi AtmVpIdentifier, + mplsLdpEntityAtmDefaultControlVci MplsAtmVcIdentifier, + mplsLdpEntityAtmUnlabTrafVpi AtmVpIdentifier, + mplsLdpEntityAtmUnlabTrafVci MplsAtmVcIdentifier, + mplsLdpEntityAtmStorageType StorageType, + mplsLdpEntityAtmRowStatus RowStatus +} + +mplsLdpEntityAtmIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex + or 0 (zero). The value of zero means that the + InterfaceIndex is not known. + + However, if the InterfaceIndex is known, then it must + be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex. If an ATM Label is + being used in forwarding data, then the value of this + object MUST be the InterfaceIndex." + ::= { mplsLdpEntityAtmEntry 1 } + +mplsLdpEntityAtmMergeCap OBJECT-TYPE + SYNTAX INTEGER { + notSupported(0), + vpMerge(1), + vcMerge(2), + vpAndVcMerge(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes the Merge Capability of this Entity. + This is the EXACT value for the ATM Session + Parameter, field M (for ATM Merge Capabilities). + The ATM Session Parameter is an optional + parameter in the Initialization Message. + + The description from rfc3036.txt is: + + 'M, ATM Merge Capabilities + Specifies the merge capabilities of an ATM switch. The + following values are supported in this version of the + specification: + + Value Meaning + + 0 Merge not supported + 1 VP Merge supported + 2 VC Merge supported + 3 VP & VC Merge supported + + + + + If the merge capabilities of the LSRs differ, then: + - Non-merge and VC-merge LSRs may freely interoperate. + + - The interoperability of VP-merge-capable switches + with non-VP-merge-capable switches is a subject + for future study. When the LSRs differ on the + use of VP-merge, the session is established, + but VP merge is not used.' + + Please refer to the following reference for a + complete description of this feature." + + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 2 } + +mplsLdpEntityAtmLRComponents OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Label Range Components in the Initialization + message. This also represents the number of entries + in the mplsLdpEntityAtmLRTable which correspond + to this entry. + + This is the EXACT value for the ATM Session Parameter, + field N (for Number of label range components). + The ATM Session Parameter is an optional parameter + in the Initialization Message. + + The description from rfc3036.txt is: + + 'N, Number of label range components + Specifies the number of ATM Label Range + Components included in the TLV.' + + Please refer to the following reference for + a complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 3 } + +mplsLdpEntityAtmVcDirectionality OBJECT-TYPE + SYNTAX INTEGER { + bidirectional(0), + + + + unidirectional(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 'bidirectional(0)', + a given VCI, within a given VPI, is used as a + label for both directions independently. + + If the value of this object is 'unidirectional(1)', + a given VCI within a VPI designates one direction. + + This is the EXACT value for the ATM Session Parameter, + field D (for VC Directionality). The ATM Session + Parameter is an optional parameter in the + Initialization Message. + + The description from rfc3036.txt is: + + 'D, VC Directionality + A value of 0 specifies bidirectional VC capability, + meaning the LSR can (within a given VPI) support + the use of a given VCI as a label for both link + directions independently. A value of 1 + specifies unidirectional VC capability, meaning + (within a given VPI) a given VCI may appear in + a label mapping for one direction on the link + only. When either or both of the peers + specifies unidirectional VC capability, both + LSRs use unidirectional VC label assignment for + the link as follows. The LSRs compare their + LDP Identifiers as unsigned integers. The LSR + with the larger LDP Identifier may assign + only odd-numbered VCIs in the VPI/VCI + range as labels. The system with the smaller + LDP Identifier may assign only even-numbered + VCIs in the VPI/VCI range as labels.' + + Please refer to the following reference + for a complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 4 } + +mplsLdpEntityAtmLsrConnectivity OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + + + indirect(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The peer LSR may be connected indirectly by means + of an ATM VP so that the VPI values may be different + on either endpoint so the label MUST be encoded + entirely within the VCI field." + DEFVAL { direct } + ::= { mplsLdpEntityAtmEntry 5 } + +mplsLdpEntityAtmDefaultControlVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default VPI value for the non-MPLS connection. The + default value of this is 0 (zero) but other values may + be configured. This object allows a different value + to be configured." + DEFVAL { 0 } + ::= { mplsLdpEntityAtmEntry 6 } + +mplsLdpEntityAtmDefaultControlVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Default VCI value for a non-MPLS connection. The + default value of this is 32 but other values may be + configured. This object allows a different value to + be configured." + DEFVAL { 32 } + ::= { mplsLdpEntityAtmEntry 7 } + +mplsLdpEntityAtmUnlabTrafVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "VPI value of the VCC supporting unlabeled traffic. This + non-MPLS connection is used to carry unlabeled (IP) + packets. The default value is the same as the default + value of the 'mplsLdpEntityAtmDefaultControlVpi', however + another value may be configured." + DEFVAL { 0 } + ::= { mplsLdpEntityAtmEntry 8 } + + +mplsLdpEntityAtmUnlabTrafVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "VCI value of the VCC supporting unlabeled traffic. + This non-MPLS connection is used to carry unlabeled (IP) + packets. The default value is the same as the default + value of the 'mplsLdpEntityAtmDefaultControlVci', however + another value may be configured." + DEFVAL { 32 } + ::= { mplsLdpEntityAtmEntry 9 } + +mplsLdpEntityAtmStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityAtmEntry 10 } + +mplsLdpEntityAtmRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the mplsLdpEntityAdminStatus + object, if a session has been initiated with a Peer, + changing objects in this table will wreak havoc + with the session and interrupt traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to down, thereby explicitly + causing a session to be torn down. Then, + change objects in this entry, then set the + mplsLdpEntityAdminStatus to enable + which enables a new session to be initiated." + ::= { mplsLdpEntityAtmEntry 11 } + +-- + + +-- The MPLS LDP Entity ATM Label Range Table +-- + +mplsLdpEntityAtmLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityAtmLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MPLS LDP Entity ATM Label Range (LR) Table. + The purpose of this table is to provide a mechanism + for configuring a contiguous range of vpi's + with a contiguous range of vci's, or a 'label range' + for LDP Entities. + + LDP Entities which use ATM must have at least one + entry in this table. + + There must exist at least one entry in this + table for every LDP Entity that has + 'mplsLdpEntityOptionalParameters' object with + a value of 'atmSessionParameters'." + ::= { mplsLdpEntityAtmObjects 2 } + +mplsLdpEntityAtmLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityAtmLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the LDP Entity ATM Label + Range Table. One entry in this table contains + information on a single range of labels + represented by the configured Upper and Lower + Bounds VPI/VCI pairs. These are the same + data used in the Initialization Message. + + NOTE: The ranges for a specific LDP Entity + are UNIQUE and non-overlapping. For example, + for a specific LDP Entity index, there could + be one entry having LowerBound vpi/vci == 0/32, and + UpperBound vpi/vci == 0/100, and a second entry + for this same interface with LowerBound + vpi/vci == 0/101 and UpperBound vpi/vci == 0/200. + However, there could not be a third entry with + LowerBound vpi/vci == 0/200 and + UpperBound vpi/vci == 0/300 because this label + range overlaps with the second entry (i.e., both + entries now have 0/200). + + + + A row will not become active unless a unique and + non-overlapping range is specified. + + At least one label range entry for a + specific LDP Entity MUST + include the default VPI/VCI values denoted + in the LDP Entity Table. + + A request to create a row with an overlapping + range should result in an inconsistentValue + error." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityAtmLRMinVpi, + mplsLdpEntityAtmLRMinVci + } + ::= { mplsLdpEntityAtmLRTable 1 } + +MplsLdpEntityAtmLREntry ::= SEQUENCE { + mplsLdpEntityAtmLRMinVpi AtmVpIdentifier, + mplsLdpEntityAtmLRMinVci MplsAtmVcIdentifier, + mplsLdpEntityAtmLRMaxVpi AtmVpIdentifier, + mplsLdpEntityAtmLRMaxVci MplsAtmVcIdentifier, + mplsLdpEntityAtmLRStorageType StorageType, + mplsLdpEntityAtmLRRowStatus RowStatus +} + +mplsLdpEntityAtmLRMinVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VPI number configured for this range. + The value of zero is a valid value for the VPI portion + of the label." + ::= { mplsLdpEntityAtmLREntry 1 } + +mplsLdpEntityAtmLRMinVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VCI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 2 } + +mplsLdpEntityAtmLRMaxVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The maximum VPI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 3 } + +mplsLdpEntityAtmLRMaxVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum VCI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 4 } + +mplsLdpEntityAtmLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityAtmLREntry 5 } + +mplsLdpEntityAtmLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt traffic. + To repeat again: the recommended procedure + is to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a session + to be torn down. Then, change objects in this + entry, then set the mplsLdpEntityAdminStatus + to enable which enables a new session + to be initiated." + ::= { mplsLdpEntityAtmLREntry 6 } + + +-- +-- MPLS LDP ATM Session Information +-- + +mplsLdpAtmSessionObjects OBJECT IDENTIFIER ::= + { mplsLdpAtmObjects 2 } + +mplsLdpAtmSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpAtmSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which relates sessions in the + 'mplsLdpSessionTable' and their label + range intersections. There could be one + or more label range intersections between an + LDP Entity and LDP Peer using ATM as the + underlying media. Each row represents + a single label range intersection. + + This table cannot use the 'AUGMENTS' + clause because there is not necessarily + a one-to-one mapping between this table + and the mplsLdpSessionTable." + ::= { mplsLdpAtmSessionObjects 1 } + +mplsLdpAtmSessionEntry OBJECT-TYPE + SYNTAX MplsLdpAtmSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single label range intersection between an LDP Entity + and LDP Peer. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpSessionAtmLRLowerBoundVpi, + mplsLdpSessionAtmLRLowerBoundVci + } + ::= { mplsLdpAtmSessionTable 1 } + +MplsLdpAtmSessionEntry ::= SEQUENCE { + mplsLdpSessionAtmLRLowerBoundVpi AtmVpIdentifier, + mplsLdpSessionAtmLRLowerBoundVci MplsAtmVcIdentifier, + mplsLdpSessionAtmLRUpperBoundVpi AtmVpIdentifier, + + + mplsLdpSessionAtmLRUpperBoundVci MplsAtmVcIdentifier +} + +mplsLdpSessionAtmLRLowerBoundVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VPI number for this range." + ::= { mplsLdpAtmSessionEntry 1 } + +mplsLdpSessionAtmLRLowerBoundVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VCI number for this range." + ::= { mplsLdpAtmSessionEntry 2 } + +mplsLdpSessionAtmLRUpperBoundVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI number for this range." + ::= { mplsLdpAtmSessionEntry 3 } + +mplsLdpSessionAtmLRUpperBoundVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VCI number for this range." + ::= { mplsLdpAtmSessionEntry 4 } + +--************************************************************** +-- Module Conformance Statement +--************************************************************** + +mplsLdpAtmGroups + OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 1 } + +mplsLdpAtmCompliances + OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 2 } + +-- +-- Full Compliance +-- + + +mplsLdpAtmModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpAtmGroup + } + + + OBJECT mplsLdpEntityAtmRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT mplsLdpEntityAtmLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { mplsLdpAtmCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpAtmModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpAtmGroup + } + + OBJECT mplsLdpEntityAtmIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmMergeCap + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmVcDirectionality + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLsrConnectivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmDefaultControlVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmDefaultControlVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmUnlabTrafVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmUnlabTrafVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpEntityAtmLRMaxVpi + MIN-ACCESS read-only + + + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRMaxVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + ::= { mplsLdpAtmCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpAtmGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityAtmIfIndexOrZero, + mplsLdpEntityAtmMergeCap, + mplsLdpEntityAtmLRComponents, + mplsLdpEntityAtmVcDirectionality, + mplsLdpEntityAtmLsrConnectivity, + mplsLdpEntityAtmDefaultControlVpi, + mplsLdpEntityAtmDefaultControlVci, + mplsLdpEntityAtmUnlabTrafVpi, + mplsLdpEntityAtmUnlabTrafVci, + mplsLdpEntityAtmStorageType, + mplsLdpEntityAtmRowStatus, + mplsLdpEntityAtmLRMaxVpi, + mplsLdpEntityAtmLRMaxVci, + mplsLdpEntityAtmLRStorageType, + mplsLdpEntityAtmLRRowStatus, + mplsLdpSessionAtmLRUpperBoundVpi, + mplsLdpSessionAtmLRUpperBoundVci + + } + STATUS current + + + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using ATM as the Layer 2." + ::= { mplsLdpAtmGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB b/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB new file mode 100644 index 0000000..3b05d91 --- /dev/null +++ b/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB @@ -0,0 +1,662 @@ +MPLS-LDP-FRAME-RELAY-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, + StorageType + + + FROM SNMPv2-TC -- [RFC2579] + + DLCI + FROM FRAME-RELAY-DTE-MIB -- [RFC2115] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId + FROM MPLS-LDP-STD-MIB -- [RFC3813] + ; + +mplsLdpFrameRelayStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (year). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing Frame Relay as the Layer 2 media." + + + + REVISION "200406030000Z" -- June 6, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 6 } + +--**************************************************************** + +mplsLdpFrameRelayObjects OBJECT IDENTIFIER + ::= { mplsLdpFrameRelayStdMIB 1 } + +mplsLdpFrameRelayConformance OBJECT IDENTIFIER + ::= { mplsLdpFrameRelayStdMIB 2 } + +--**************************************************************** +-- MPLS LDP Frame Relay Objects +--**************************************************************** + +-- +-- Ldp Entity Objects for Frame Relay +-- + +mplsLdpEntityFrameRelayObjects OBJECT IDENTIFIER ::= + { mplsLdpFrameRelayObjects 1 } + +mplsLdpEntityFrameRelayTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Frame Relay specific + information which could be used in the + 'Optional Parameters' and other Frame Relay + specific information. + + This table 'sparse augments' the mplsLdpEntityTable + when Frame Relay is the Layer 2 medium." + ::= { mplsLdpEntityFrameRelayObjects 1 } + +mplsLdpEntityFrameRelayEntry OBJECT-TYPE + SYNTAX MplsLdpEntityFrameRelayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the Frame Relay + optional parameters associated with the LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex + + + } + ::= { mplsLdpEntityFrameRelayTable 1 } + +MplsLdpEntityFrameRelayEntry ::= SEQUENCE { + mplsLdpEntityFrameRelayIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityFrameRelayMergeCap INTEGER, + mplsLdpEntityFrameRelayLRComponents Unsigned32, + mplsLdpEntityFrameRelayVcDirectionality INTEGER, + mplsLdpEntityFrameRelayStorageType StorageType, + mplsLdpEntityFrameRelayRowStatus RowStatus +} + +mplsLdpEntityFrameRelayIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex of + the 'ifLayer' where the Frame Relay Labels 'owned' by this + entry were created, or 0 (zero). The value of zero + means that the InterfaceIndex is not known. For example, + if the InterfaceIndex is created subsequent to the + Frame Relay Label's creation, then it would not be known. + However, if the InterfaceIndex is known, then it must + be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex. If an Frame Relay Label is + being used in forwarding data, then the value of this + object MUST be the InterfaceIndex." + ::= { mplsLdpEntityFrameRelayEntry 1 } + +mplsLdpEntityFrameRelayMergeCap OBJECT-TYPE + SYNTAX INTEGER { + notSupported(0), + supported(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This represents whether or not the Frame Relay merge + capability is supported. This is the EXACT value for the + Frame Relay Session Parameter, field M (for Frame Relay + Merge Capabilities). The Frame Relay Session Parameter + is an optional parameter in the Initialization Message. + + + + + The description from rfc3036.txt is: + 'M, Frame Relay Merge Capabilities + Specifies the merge capabilities of a Frame + Relay switch. The following values are + supported in this version of the + specification: + + Value Meaning + + 0 Merge not supported + 1 Merge supported + + Non-merge and merge Frame Relay LSRs may + freely interoperate.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 2 } + +mplsLdpEntityFrameRelayLRComponents OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Label Range Components in the Initialization + message. This also represents the number of entries + in the mplsLdpEntityFrameRelayLRTable which correspond + to this entry. + + This is the EXACT value for the Frame Relay Session + Parameter, field N (for Number of label range + components). The Frame Relay Session Parameter + is an optional parameter in the Initialization + Message. + + The description from rfc3036.txt is: + + 'N, Number of label range components + Specifies the number of Frame Relay Label + Range Components included in the TLV.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + + + + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 3 } + +mplsLdpEntityFrameRelayVcDirectionality OBJECT-TYPE + SYNTAX INTEGER { + bidirectional(0), + unidirection(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 'bidirectional(0)', then + the LSR supports the use of a given DLCI as a label for + both directions independently. If the value of + this object is 'unidirectional(1)', then the LSR + uses the given DLCI as a label in only one direction. + + This is the EXACT value for the Frame Relay Session + Parameter, field D (for VC Directionality). The + Frame Relay Session Parameter is an optional + parameter in the Initialization Message. + + The description from rfc3036.txt is: + + 'D, VC Directionality + A value of 0 specifies bidirectional VC capability, + meaning the LSR can support the use of a given + DLCI as a label for both link directions + independently. A value of 1 specifies + unidirectional VC capability, meaning a given + DLCI may appear in a label mapping for one + direction on the link only. When either or both + of the peers specifies unidirectional VC + capability, both LSRs use unidirectional VC + label assignment for the link as follows. The + LSRs compare their LDP Identifiers as unsigned + integers. The LSR with the larger LDP + Identifier may assign only odd-numbered DLCIs + in the range as labels. The system with the + smaller LDP Identifier may assign only + even-numbered DLCIs in the range as labels.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 4 } + + +mplsLdpEntityFrameRelayStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityFrameRelayEntry 5 } + +mplsLdpEntityFrameRelayRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt + traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to + down, thereby explicitly causing a + session to be torn down. Then, + change objects in this entry, then set + the mplsLdpEntityAdminStatus + to enable which enables a new session + to be initiated." + ::= { mplsLdpEntityFrameRelayEntry 6 } + +-- +-- Frame Relay Label Range Components +-- + +mplsLdpEntityFrameRelayLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the + + + Optional Parameters for the Frame Relay Session + in the LDP Initialization Message, specifically + it contains information about the Frame Relay + Label Range Components. + + If the value of the object + 'mplsLdpEntityOptionalParameters' contains the + value of 'frameRelaySessionParameters(3)' then + there must be at least one corresponding entry + in this table." + ::= { mplsLdpEntityFrameRelayObjects 2 } + +mplsLdpEntityFrameRelayLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityFrameRelayLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the Frame Relay + Label Range Component associated with the LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityFrameRelayLRMinDlci + } + ::= { mplsLdpEntityFrameRelayLRTable 1 } + +MplsLdpEntityFrameRelayLREntry ::= SEQUENCE { + mplsLdpEntityFrameRelayLRMinDlci DLCI, + mplsLdpEntityFrameRelayLRMaxDlci DLCI, + mplsLdpEntityFrameRelayLRLen INTEGER, + mplsLdpEntityFrameRelayLRStorageType StorageType, + mplsLdpEntityFrameRelayLRRowStatus RowStatus +} + +mplsLdpEntityFrameRelayLRMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The lower bound which is supported. This value + should be the same as that in the Frame Relay Label + Range Component's Minimum DLCI field. The value + of zero is valid for the minimum DLCI field of + the label." + REFERENCE + "RFC3034, Use of Label Switching on Frame Relay + Networks Specification." + ::= { mplsLdpEntityFrameRelayLREntry 1 } + + + +mplsLdpEntityFrameRelayLRMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper bound which is supported. This value + should be the same as that in the Frame Relay Label + Range Component's Maximum DLCI field." + ::= { mplsLdpEntityFrameRelayLREntry 2 } + +mplsLdpEntityFrameRelayLRLen OBJECT-TYPE + SYNTAX INTEGER { + tenDlciBits(0), + twentyThreeDlciBits(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the length of the DLCI bits. + + This is the EXACT value for the Len field of the + Frame Relay Label Range Component. + + The description from rfc3036.txt is: + + 'Len + This field specifies the number of bits of the DLCI. + The following values are supported: + + Len DLCI bits + + 0 10 + 2 23 + + Len values 1 and 3 are reserved.' + + Please refer to the following reference for a complete + description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayLREntry 3 } + +mplsLdpEntityFrameRelayLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityFrameRelayLREntry 4 } + +mplsLdpEntityFrameRelayLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt + traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to down, thereby + explicitly causing a session to be torn down. Then, + change objects in this entry, then set the + mplsLdpEntityAdminStatus to enable which enables + a new session to be initiated." + ::= { mplsLdpEntityFrameRelayLREntry 5 } + +-- +-- MPLS LDP Frame Relay Session Information +-- + +mplsLdpFrameRelaySessionObjects OBJECT IDENTIFIER ::= + { mplsLdpFrameRelayObjects 2 } + +mplsLdpFrameRelaySessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpFrameRelaySessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Frame Relay label range intersections + between the LDP Entities and LDP Peers. + Each row represents a single label range intersection. + + NOTE: this table cannot use the 'AUGMENTS' + + + clause because there is not necessarily a one-to-one + mapping between this table and the + mplsLdpSessionTable." + ::= { mplsLdpFrameRelaySessionObjects 1 } + +mplsLdpFrameRelaySessionEntry OBJECT-TYPE + SYNTAX MplsLdpFrameRelaySessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single label range intersection between an + LDP Entity and LDP Peer. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpFrameRelaySessionMinDlci + } + ::= { mplsLdpFrameRelaySessionTable 1 } + +MplsLdpFrameRelaySessionEntry ::= SEQUENCE { + mplsLdpFrameRelaySessionMinDlci DLCI, + mplsLdpFrameRelaySessionMaxDlci DLCI, + mplsLdpFrameRelaySessionLen INTEGER +} + +mplsLdpFrameRelaySessionMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The lower bound of DLCIs which are supported. + The value of zero is a valid value for the + minimum DLCI field of the label." + REFERENCE + "RFC3034, Use of Label Switching on Frame Relay + Networks Specification." + ::= { mplsLdpFrameRelaySessionEntry 1 } + +mplsLdpFrameRelaySessionMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The upper bound of DLCIs which are supported." + ::= { mplsLdpFrameRelaySessionEntry 2 } + + +mplsLdpFrameRelaySessionLen OBJECT-TYPE + SYNTAX INTEGER { + tenDlciBits(0), + twentyThreeDlciBits(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the DLCI bits." + ::= { mplsLdpFrameRelaySessionEntry 3 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpFrameRelayGroups + OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 1 } + +mplsLdpFrameRelayCompliances + OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpFrameRelayModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpFrameRelayGroup + } + + OBJECT mplsLdpEntityFrameRelayRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT mplsLdpEntityFrameRelayLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + + ::= { mplsLdpFrameRelayCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpFrameRelayModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpFrameRelayGroup + } + + OBJECT mplsLdpEntityFrameRelayIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayMergeCap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayVcDirectionality + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpEntityFrameRelayLRMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT mplsLdpEntityFrameRelayLRLen + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + ::= { mplsLdpFrameRelayCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpFrameRelayGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityFrameRelayIfIndexOrZero, + mplsLdpEntityFrameRelayMergeCap, + mplsLdpEntityFrameRelayLRComponents, + mplsLdpEntityFrameRelayVcDirectionality, + mplsLdpEntityFrameRelayStorageType, + mplsLdpEntityFrameRelayRowStatus, + mplsLdpEntityFrameRelayLRMaxDlci, + mplsLdpEntityFrameRelayLRLen, + mplsLdpEntityFrameRelayLRStorageType, + mplsLdpEntityFrameRelayLRRowStatus, + mplsLdpFrameRelaySessionMaxDlci, + mplsLdpFrameRelaySessionLen + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using Frame Relay as the Layer 2." + ::= { mplsLdpFrameRelayGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB b/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB new file mode 100644 index 0000000..fb4348e --- /dev/null +++ b/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB @@ -0,0 +1,336 @@ +MPLS-LDP-GENERIC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, + StorageType + FROM SNMPv2-TC -- [RFC2579] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex + FROM MPLS-LDP-STD-MIB -- [RFC3813] + ; + +mplsLdpGenericStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 6, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (year). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing ethernet as the Layer 2 media." + REVISION "200406030000Z" -- June 6, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 7 } + +--**************************************************************** + +mplsLdpGenericObjects + OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 1 } +mplsLdpGenericConformance + OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 2 } + +--**************************************************************** +-- MPLS LDP GENERIC Objects +--**************************************************************** + +-- +-- Ldp Entity Objects for Generic Labels +-- + +mplsLdpEntityGenericObjects OBJECT IDENTIFIER ::= + { mplsLdpGenericObjects 1 } + +-- +-- The MPLS LDP Entity Generic Label Range Table +-- + + + +mplsLdpEntityGenericLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityGenericLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MPLS LDP Entity Generic Label Range (LR) + Table. + + The purpose of this table is to provide a mechanism + for configurating a contiguous range of generic labels, + or a 'label range' for LDP Entities. + + LDP Entities which use Generic Labels must have at least + one entry in this table. In other words, this table + 'extends' the mpldLdpEntityTable for Generic Labels." + ::= { mplsLdpEntityGenericObjects 1 } + +mplsLdpEntityGenericLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityGenericLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the LDP Entity Generic Label + Range (LR) Table. One entry in this table contains + information on a single range of labels + represented by the configured Upper and Lower + Bounds pairs. NOTE: there is NO corresponding + LDP message which relates to the information + in this table, however, this table does provide + a way for a user to 'reserve' a generic label + range. + + NOTE: The ranges for a specific LDP Entity + are UNIQUE and non-overlapping. + + A row will not be created unless a unique and + non-overlapping range is specified." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityGenericLRMin, + mplsLdpEntityGenericLRMax + } + ::= { mplsLdpEntityGenericLRTable 1 } + +MplsLdpEntityGenericLREntry ::= SEQUENCE { + mplsLdpEntityGenericLRMin Unsigned32, + mplsLdpEntityGenericLRMax Unsigned32, + mplsLdpEntityGenericLabelSpace INTEGER, + + + + mplsLdpEntityGenericIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityGenericLRStorageType StorageType, + mplsLdpEntityGenericLRRowStatus RowStatus +} + +mplsLdpEntityGenericLRMin OBJECT-TYPE + SYNTAX Unsigned32(0..1048575) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum label configured for this range." + ::= { mplsLdpEntityGenericLREntry 1 } + +mplsLdpEntityGenericLRMax OBJECT-TYPE + SYNTAX Unsigned32(0..1048575) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The maximum label configured for this range." + ::= { mplsLdpEntityGenericLREntry 2 } + +mplsLdpEntityGenericLabelSpace OBJECT-TYPE + SYNTAX INTEGER { + perPlatform(1), + perInterface(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value of this object is perPlatform(1), then + this means that the label space type is + per platform. + + If this object is perInterface(2), then this + means that the label space type is per Interface." + REFERENCE + "RFC3036, LDP Specification, Section 2.2.1, + Label Spaces." + DEFVAL { perPlatform } + ::= { mplsLdpEntityGenericLREntry 3 } + +mplsLdpEntityGenericIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex of + the 'ifLayer' where these Generic Label would be created, + + + or 0 (zero). The value of zero means that the + InterfaceIndex is not known. + + However, if the InterfaceIndex is known, + then it must be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex." + ::= { mplsLdpEntityGenericLREntry 4 } + +mplsLdpEntityGenericLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityGenericLREntry 5 } + +mplsLdpEntityGenericLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt traffic. + To repeat again: the recommended procedure is + to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a + session to be torn down. Then, change objects + in this entry, then set the mplsLdpEntityAdminStatus + to enable which enables a new session to be initiated. + + There must exist at least one entry in this + table for every LDP Entity that has a + generic label configured." + + + ::= { mplsLdpEntityGenericLREntry 6 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpGenericGroups + OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 1 } + +mplsLdpGenericCompliances + OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpGenericModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpGenericGroup + } + + OBJECT mplsLdpEntityGenericLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { mplsLdpGenericCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpGenericModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + + + mplsLdpGenericGroup + } + + OBJECT mplsLdpEntityGenericLabelSpace + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + ::= { mplsLdpGenericCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpGenericGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityGenericLabelSpace, + mplsLdpEntityGenericIfIndexOrZero, + mplsLdpEntityGenericLRStorageType, + mplsLdpEntityGenericLRRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using Generic Labels as the Layer 2." + ::= { mplsLdpGenericGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-STD-MIB b/mibs/ietf/MPLS-LDP-STD-MIB new file mode 100644 index 0000000..6d40d10 --- /dev/null +++ b/mibs/ietf/MPLS-LDP-STD-MIB @@ -0,0 +1,2547 @@ +MPLS-LDP-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, TimeInterval, TruthValue, + TimeStamp, StorageType + + + + FROM SNMPv2-TC -- [RFC2579] + + InetAddressPrefixLength, + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + + IndexInteger, + IndexIntegerNextFree + FROM DIFFSERV-MIB -- [RFC3289] + + mplsStdMIB, + MplsLabelDistributionMethod, + MplsLdpIdentifier, + MplsLdpLabelType, + MplsLspType, + MplsLsrIdentifier, + MplsRetentionMode + FROM MPLS-TC-STD-MIB -- [RFC3811] + + MplsIndexType + FROM MPLS-LSR-STD-MIB; -- [RFC3813] + +mplsLdpStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net" + + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + + + + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for the + 'Multiprotocol Label Switching, Label Distribution + Protocol, LDP' document." + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 4 } + +--**************************************************************** + +mplsLdpNotifications OBJECT IDENTIFIER ::= { mplsLdpStdMIB 0 } +mplsLdpObjects OBJECT IDENTIFIER ::= { mplsLdpStdMIB 1 } +mplsLdpConformance OBJECT IDENTIFIER ::= { mplsLdpStdMIB 2 } + +--**************************************************************** +-- MPLS LDP Objects +--**************************************************************** + +mplsLdpLsrObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 1 } + +mplsLdpEntityObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 2 } + +-- +-- The MPLS Label Distribution Protocol's +-- Label Switching Router Objects +-- + +mplsLdpLsrId OBJECT-TYPE + SYNTAX MplsLsrIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Label Switching Router's Identifier." + ::= { mplsLdpLsrObjects 1 } + +mplsLdpLsrLoopDetectionCapable OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + hopCount(3), + pathVector(4), + hopCountAndPathVector(5) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A indication of whether this + Label Switching Router supports + loop detection. + + none(1) -- Loop Detection is not supported + on this LSR. + + other(2) -- Loop Detection is supported but + by a method other than those + listed below. + + hopCount(3) -- Loop Detection is supported by + Hop Count only. + + pathVector(4) -- Loop Detection is supported by + Path Vector only. + + hopCountAndPathVector(5) -- Loop Detection is + supported by both Hop Count + And Path Vector. + + Since Loop Detection is determined during + Session Initialization, an individual session + may not be running with loop detection. This + object simply gives an indication of whether or not the + LSR has the ability to support Loop Detection and + which types." + + ::= { mplsLdpLsrObjects 2 } + +-- +-- The MPLS Label Distribution Protocol Entity Objects +-- + +mplsLdpEntityLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition or deletion of an entry + to/from the mplsLdpEntityTable/mplsLdpEntityStatsTable, or + the most recent change in value of any objects in the + mplsLdpEntityTable. + + + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsLdpEntityObjects 1 } + +mplsLdpEntityIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for mplsLdpEntityIndex when creating + entries in the mplsLdpEntityTable. The value + 0 indicates that no unassigned entries are + available." + ::= { mplsLdpEntityObjects 2 } + + +mplsLdpEntityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the + MPLS Label Distribution Protocol Entities which + exist on this Label Switching Router (LSR) + or Label Edge Router (LER)." + ::= { mplsLdpEntityObjects 3 } + + mplsLdpEntityEntry OBJECT-TYPE + SYNTAX MplsLdpEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents an LDP entity. + An entry can be created by a network administrator + or by an SNMP agent as instructed by LDP." + INDEX { mplsLdpEntityLdpId, mplsLdpEntityIndex } + ::= { mplsLdpEntityTable 1 } + + MplsLdpEntityEntry ::= SEQUENCE { + mplsLdpEntityLdpId MplsLdpIdentifier, + mplsLdpEntityIndex IndexInteger, + mplsLdpEntityProtocolVersion Unsigned32, + mplsLdpEntityAdminStatus INTEGER, + mplsLdpEntityOperStatus INTEGER, + mplsLdpEntityTcpPort InetPortNumber, + mplsLdpEntityUdpDscPort InetPortNumber, + + + + mplsLdpEntityMaxPduLength Unsigned32, + mplsLdpEntityKeepAliveHoldTimer Unsigned32, + mplsLdpEntityHelloHoldTimer Unsigned32, + mplsLdpEntityInitSessionThreshold Integer32, + mplsLdpEntityLabelDistMethod MplsLabelDistributionMethod, + mplsLdpEntityLabelRetentionMode MplsRetentionMode, + mplsLdpEntityPathVectorLimit Integer32, + mplsLdpEntityHopCountLimit Integer32, + mplsLdpEntityTransportAddrKind INTEGER, + mplsLdpEntityTargetPeer TruthValue, + mplsLdpEntityTargetPeerAddrType InetAddressType, + mplsLdpEntityTargetPeerAddr InetAddress, + mplsLdpEntityLabelType MplsLdpLabelType, + mplsLdpEntityDiscontinuityTime TimeStamp, + mplsLdpEntityStorageType StorageType, + mplsLdpEntityRowStatus RowStatus + } + + mplsLdpEntityLdpId OBJECT-TYPE + SYNTAX MplsLdpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The LDP identifier." + REFERENCE + "RFC3036, LDP Specification, Section on LDP Identifiers." + ::= { mplsLdpEntityEntry 1 } + +mplsLdpEntityIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index is used as a secondary index to uniquely + identify this row. Before creating a row in this table, + the 'mplsLdpEntityIndexNext' object should be retrieved. + That value should be used for the value of this index + when creating a row in this table. NOTE: if a value + of zero (0) is retrieved, that indicates that no rows + can be created in this table at this time. + + A secondary index (this object) is meaningful to some + but not all, LDP implementations. For example + an LDP implementation which uses PPP would + use this index to differentiate PPP sub-links. + + Another way to use this index is to give this the + value of ifIndex. However, this is dependant + + + + on the implementation." + ::= { mplsLdpEntityEntry 2 } + +mplsLdpEntityProtocolVersion OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version number of the LDP protocol which will be + used in the session initialization message. + + Section 3.5.3 in the LDP Specification specifies + that the version of the LDP protocol is negotiated during + session establishment. The value of this object + represents the value that is sent in the initialization + message." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 Initialization + Message." + DEFVAL { 1 } + ::= { mplsLdpEntityEntry 3 } + +mplsLdpEntityAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enable(1), + disable(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative status of this LDP Entity. + If this object is changed from 'enable' to 'disable' + and this entity has already attempted to establish + contact with a Peer, then all contact with that + Peer is lost and all information from that Peer + needs to be removed from the MIB. (This implies + that the network management subsystem should clean + up any related entry in the mplsLdpPeerTable. This + further implies that a 'tear-down' for that session + is issued and the session and all information related + to that session cease to exist). + + At this point the operator is able to change values + which are related to this entity. + + When the admin status is set back to 'enable', then + this Entity will attempt to establish a new session + with the Peer." + + + + DEFVAL { enable } + ::= { mplsLdpEntityEntry 4 } + +mplsLdpEntityOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + enabled(2), + disabled(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this LDP Entity. + + The value of unknown(1) indicates that the + operational status cannot be determined at + this time. The value of unknown should be + a transient condition before changing + to enabled(2) or disabled(3)." + ::= { mplsLdpEntityEntry 5 } + +mplsLdpEntityTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP Port for + LDP. The default value is the well-known + value of this port." + REFERENCE + "RFC3036, LDP Specification, Section 3.10, Well-known + Numbers, and Section 3.10.1. UDP and TCP Ports." + DEFVAL { 646 } + ::= { mplsLdpEntityEntry 6 } + +mplsLdpEntityUdpDscPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP Discovery Port for + LDP. The default value is the + well-known value for this port." + REFERENCE + "RFC3036, LDP Specification, Section 2.4.1, + Basic Discovery Mechanism, Section 2.4.2, + Extended Discovery Mechanism, Section + 3.10, Well-known Numbers, and Section 3.10.1. + + + + UDP and TCP Ports." + DEFVAL { 646 } + ::= { mplsLdpEntityEntry 7 } + +mplsLdpEntityMaxPduLength OBJECT-TYPE + SYNTAX Unsigned32 (256..65535) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum PDU Length that is sent in + the Common Session Parameters of an Initialization + Message. According to the LDP Specification [RFC3036] + a value of 255 or less specifies the + default maximum length of 4096 octets, this is why + the value of this object starts at 256. The operator + should explicitly choose the default value (i.e., 4096), + or some other value. + + The receiving LSR MUST calculate the maximum PDU + length for the session by using the smaller of its and + its peer's proposals for Max PDU Length." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3. + Initialization Message." + DEFVAL { 4096 } + ::= { mplsLdpEntityEntry 8 } + +mplsLdpEntityKeepAliveHoldTimer OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 16-bit integer value which is the proposed keep + alive hold timer for this LDP Entity." + DEFVAL { 40 } + ::= { mplsLdpEntityEntry 9 } + +mplsLdpEntityHelloHoldTimer OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 16-bit integer value which is the proposed Hello + hold timer for this LDP Entity. The Hello Hold time + in seconds. + + + + An LSR maintains a record of Hellos received + from potential peers. This object represents + the Hold Time in the Common Hello Parameters TLV of + the Hello Message. + + A value of 0 is a default value and should be + interpretted in conjunction with the + mplsLdpEntityTargetPeer object. + + If the value of this object is 0: if the value of the + mplsLdpEntityTargetPeer object is false(2), then this + specifies that the Hold Time's actual default value is + 15 seconds (i.e., the default Hold time for Link Hellos + is 15 seconds). Otherwise if the value of the + mplsLdpEntityTargetPeer object is true(1), then this + specifies that the Hold Time's actual default value is + 45 seconds (i.e., the default Hold time for Targeted + Hellos is 45 seconds). + + A value of 65535 means infinite (i.e., wait forever). + + All other values represent the amount of time in + seconds to wait for a Hello Message. Setting the + hold time to a value smaller than 15 is not + recommended, although not forbidden according + to RFC3036." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.2., + Hello Message." + DEFVAL { 0 } + ::= { mplsLdpEntityEntry 10 } + +mplsLdpEntityInitSessionThreshold OBJECT-TYPE + SYNTAX Integer32(0..100) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When attempting to establish a session with + a given Peer, the given LDP Entity should + send out the SNMP notification, + 'mplsLdpInitSessionThresholdExceeded', when + the number of Session Initialization messages + sent exceeds this threshold. + + The notification is used to notify an + operator when this Entity and its Peer are + possibly engaged in an endless sequence + of messages as each NAKs the other's + + + + Initialization messages with Error Notification + messages. Setting this threshold which triggers + the notification is one way to notify the + operator. The notification should be generated + each time this threshold is exceeded and + for every subsequent Initialization message + which is NAK'd with an Error Notification + message after this threshold is exceeded. + + A value of 0 (zero) for this object + indicates that the threshold is infinity, thus + the SNMP notification will never be generated." + REFERENCE + "RFC3036, LDP Specification, + Section 2.5.3 Session Initialization." + DEFVAL { 8 } + ::= { mplsLdpEntityEntry 11 } + +mplsLdpEntityLabelDistMethod OBJECT-TYPE + SYNTAX MplsLabelDistributionMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For any given LDP session, the method of + label distribution must be specified." + ::= { mplsLdpEntityEntry 12 } + +mplsLdpEntityLabelRetentionMode OBJECT-TYPE + SYNTAX MplsRetentionMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The LDP Entity can be configured to use either + conservative or liberal label retention mode. + + If the value of this object is conservative(1) + then advertized label mappings are retained + only if they will be used to forward packets, + i.e., if label came from a valid next hop. + + If the value of this object is liberal(2) + then all advertized label mappings are retained + whether they are from a valid next hop or not." + ::= { mplsLdpEntityEntry 13 } + +mplsLdpEntityPathVectorLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero) then + Loop Detection for Path Vectors is disabled. + + Otherwise, if this object has a value greater than + zero, then Loop Dection for Path Vectors is enabled, + and the Path Vector Limit is this value. + Also, the value of the object, + 'mplsLdpLsrLoopDetectionCapable', must be set to + either 'pathVector(4)' or 'hopCountAndPathVector(5)', + if this object has a value greater than 0 (zero), + otherwise it is ignored." + REFERENCE + "RFC3036, LDP Specification, Section 2.8 Loop Dection, + Section 3.4.5 Path Vector TLV." + ::= { mplsLdpEntityEntry 14 } + +mplsLdpEntityHopCountLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero), + then Loop Detection using Hop Counters is + disabled. + + If the value of this object is greater than + 0 (zero) then Loop Detection using Hop + Counters is enabled, and this object + specifies this Entity's maximum allowable + value for the Hop Count. + Also, the value of the object + mplsLdpLsrLoopDetectionCapable must be set + to either 'hopCount(3)' or + 'hopCountAndPathVector(5)' if this object + has a value greater than 0 (zero), otherwise + it is ignored." + DEFVAL { 0 } + ::= { mplsLdpEntityEntry 15 } + +mplsLdpEntityTransportAddrKind OBJECT-TYPE + SYNTAX INTEGER { + interface(1), + loopback(2) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This specifies whether the loopback or interface + address is to be used as the transport address + in the transport address TLV of the + hello message. + + If the value is interface(1), then the IP + address of the interface from which hello + messages are sent is used as the transport + address in the hello message. + + Otherwise, if the value is loopback(2), then the IP + address of the loopback interface is used as the + transport address in the hello message." + DEFVAL { loopback } + ::= { mplsLdpEntityEntry 16 } + +mplsLdpEntityTargetPeer OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this LDP entity uses targeted peer then set + this to true." + DEFVAL { false } + ::= { mplsLdpEntityEntry 17 } + +mplsLdpEntityTargetPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address used for + the Extended Discovery. This object indicates how + the value of mplsLdpEntityTargetPeerAddr is to + be interpreted." + ::= { mplsLdpEntityEntry 18 } + +mplsLdpEntityTargetPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address + used for the Extended Discovery. The value of + mplsLdpEntityTargetPeerAddrType specifies how + this address is to be interpreted." + ::= { mplsLdpEntityEntry 19 } + + + +mplsLdpEntityLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the optional parameters for the LDP + Initialization Message. + + If the value is generic(1) then no + optional parameters will be sent in + the LDP Initialization message associated + with this Entity. + + If the value is atmParameters(2) then + a row must be created in the + mplsLdpEntityAtmTable, which + corresponds to this entry. + + If the value is frameRelayParameters(3) then + a row must be created in the + mplsLdpEntityFrameRelayTable, which + corresponds to this entry." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3., + Initialization Message." + ::= { mplsLdpEntityEntry 20 } + +mplsLdpEntityDiscontinuityTime 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 entity's counters + suffered a discontinuity. The relevant counters + are the specific instances associated with this + entity of any Counter32 object contained + in the 'mplsLdpEntityStatsTable'. If no such + discontinuities have occurred since the last + re-initialization of the local management + subsystem, then this object contains a zero + value." + ::= { mplsLdpEntityEntry 21 } + +mplsLdpEntityStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL{ nonVolatile } + ::= { mplsLdpEntityEntry 22 } + +mplsLdpEntityRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any + time, however, as described in detail in + the section entitled, 'Changing Values After + Session Establishment', and again described + in the DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, if a session + has been initiated with a Peer, changing objects + in this table will wreak havoc with the session + and interrupt traffic. To repeat again: + the recommended procedure is to + set the mplsLdpEntityAdminStatus to down, thereby + explicitly causing a session to be torn down. Then, + change objects in this entry, then set + the mplsLdpEntityAdminStatus to enable, + which enables a new session to be initiated." + ::= { mplsLdpEntityEntry 23 } + +-- +-- The MPLS LDP Entity Statistics Table +-- + +mplsLdpEntityStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is a read-only table which augments + the mplsLdpEntityTable. The purpose of this + table is to keep statistical information about + the LDP Entities on the LSR." + ::= { mplsLdpEntityObjects 4 } + +mplsLdpEntityStatsEntry OBJECT-TYPE + SYNTAX MplsLdpEntityStatsEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in this table contains statistical information + about an LDP Entity. Some counters contained in a + row are for fatal errors received during a former + LDP Session associated with this entry. For example, + an LDP PDU received on a TCP connection during an + LDP Session contains a fatal error. That + error is counted here, because the + session is terminated. + + If the error is NOT fatal (i.e., the Session + remains), then the error is counted in the + mplsLdpSessionStatsEntry." + AUGMENTS { mplsLdpEntityEntry } + ::= { mplsLdpEntityStatsTable 1 } + +MplsLdpEntityStatsEntry ::= SEQUENCE { + mplsLdpEntityStatsSessionAttempts Counter32, + mplsLdpEntityStatsSessionRejectedNoHelloErrors Counter32, + mplsLdpEntityStatsSessionRejectedAdErrors Counter32, + mplsLdpEntityStatsSessionRejectedMaxPduErrors Counter32, + mplsLdpEntityStatsSessionRejectedLRErrors Counter32, + mplsLdpEntityStatsBadLdpIdentifierErrors Counter32, + mplsLdpEntityStatsBadPduLengthErrors Counter32, + mplsLdpEntityStatsBadMessageLengthErrors Counter32, + mplsLdpEntityStatsBadTlvLengthErrors Counter32, + mplsLdpEntityStatsMalformedTlvValueErrors Counter32, + mplsLdpEntityStatsKeepAliveTimerExpErrors Counter32, + mplsLdpEntityStatsShutdownReceivedNotifications Counter32, + mplsLdpEntityStatsShutdownSentNotifications Counter32 +} + +mplsLdpEntityStatsSessionAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Initialization messages + which were sent or received by this LDP Entity and + were NAK'd. In other words, this counter counts + the number of session initializations that failed. + + 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 + mplsLdpEntityDiscontinuityTime." + + + + ::= { mplsLdpEntityStatsEntry 1 } + +mplsLdpEntityStatsSessionRejectedNoHelloErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/No Hello Error + Notification Messages sent or received by + this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 2 } + +mplsLdpEntityStatsSessionRejectedAdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + Advertisement Mode Error Notification Messages sent + or received by this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 3 } + +mplsLdpEntityStatsSessionRejectedMaxPduErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + + Max Pdu Length Error Notification Messages sent + or received by this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 4 } + + + + +mplsLdpEntityStatsSessionRejectedLRErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + Label Range Notification Messages sent + or received by this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 5 } + +mplsLdpEntityStatsBadLdpIdentifierErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad LDP Identifier + Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 6 } + +mplsLdpEntityStatsBadPduLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad PDU Length + Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 7 } + + + +mplsLdpEntityStatsBadMessageLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad Message + Length Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 8 } + +mplsLdpEntityStatsBadTlvLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad TLV + Length Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 9 } + +mplsLdpEntityStatsMalformedTlvValueErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Malformed TLV + Value Fatal Errors detected by the session(s) + (past and present) associated with this + LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + + + + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 10 } + +mplsLdpEntityStatsKeepAliveTimerExpErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Session Keep Alive + Timer Expired Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 11 } + +mplsLdpEntityStatsShutdownReceivedNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Shutdown Notifications + received related to session(s) (past and present) + associated with this LDP Entity. + + 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 + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 12 } + +mplsLdpEntityStatsShutdownSentNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Shutdown Notfications + sent related to session(s) (past and present) associated + with this LDP Entity. + + 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 + + + + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 13 } + +-- +-- The MPLS LDP Peer Table +-- + +mplsLdpSessionObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 3 } + +mplsLdpPeerLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition or deletion to/from the + mplsLdpPeerTable/mplsLdpSessionTable." + ::= { mplsLdpSessionObjects 1 } + +mplsLdpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about LDP peers known by Entities in + the mplsLdpEntityTable. The information in this table + is based on information from the Entity-Peer interaction + during session initialization but is not appropriate + for the mplsLdpSessionTable, because objects in this + table may or may not be used in session establishment." + ::= { mplsLdpSessionObjects 2 } + +mplsLdpPeerEntry OBJECT-TYPE + SYNTAX MplsLdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single Peer which is related + to a Session. This table is augmented by + the mplsLdpSessionTable." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId } + ::= { mplsLdpPeerTable 1 } + +MplsLdpPeerEntry ::= SEQUENCE { + mplsLdpPeerLdpId MplsLdpIdentifier, + mplsLdpPeerLabelDistMethod MplsLabelDistributionMethod, + + + + mplsLdpPeerPathVectorLimit Integer32, + mplsLdpPeerTransportAddrType InetAddressType, + mplsLdpPeerTransportAddr InetAddress +} + +mplsLdpPeerLdpId OBJECT-TYPE + SYNTAX MplsLdpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The LDP identifier of this LDP Peer." + ::= { mplsLdpPeerEntry 1 } + +mplsLdpPeerLabelDistMethod OBJECT-TYPE + SYNTAX MplsLabelDistributionMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For any given LDP session, the method of + label distribution must be specified." + ::= { mplsLdpPeerEntry 2 } + +mplsLdpPeerPathVectorLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero) then + Loop Dection for Path Vectors for this Peer + is disabled. + + Otherwise, if this object has a value greater than + zero, then Loop Dection for Path Vectors for this + Peer is enabled and the Path Vector Limit is this value." + REFERENCE + "RFC3036, LDP Specification, Section 2.8 Loop Dection, + Section 3.4.5 Path Vector TLV." + ::= { mplsLdpPeerEntry 3 } + +mplsLdpPeerTransportAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address for the + mplsLdpPeerTransportAddr object. The LDP + specification describes this as being either + an IPv4 Transport Address or IPv6 Transport + + + + Address which is used in opening the LDP session's + TCP connection, or if the optional TLV is not + present, then this is the IPv4/IPv6 source + address for the UPD packet carrying the Hellos. + + This object specifies how the value of the + mplsLdpPeerTransportAddr object should be + interpreted." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.2 + Transport Connection Establishment and + Section 3.5.2.1 Hello Message Procedures." + ::= { mplsLdpPeerEntry 4 } + +mplsLdpPeerTransportAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet address advertised by the peer + in the Hello Message or the Hello source address. + + The type of this address is specified by the + value of the mplsLdpPeerTransportAddrType + object." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.2 + Transport Connection Establishment and + Section 3.5.2.1 Hello Message Procedures." + ::= { mplsLdpPeerEntry 5 } + +-- +-- The MPLS LDP Sessions Table +-- + +mplsLdpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Sessions between the LDP Entities + and LDP Peers. This table AUGMENTS the + mplsLdpPeerTable. Each row in this table + represents a single session." + ::= { mplsLdpSessionObjects 3 } + +mplsLdpSessionEntry OBJECT-TYPE + SYNTAX MplsLdpSessionEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single session between an LDP Entity and LDP Peer. + The information contained in a row is read-only. + + Please note: the Path Vector Limit for the + Session is the value which is configured in + the corresponding mplsLdpEntityEntry. The + Peer's Path Vector Limit is in the + mplsLdpPeerPathVectorLimit object in the + mplsLdpPeerTable. + + Values which may differ from those configured are + noted in the objects of this table, the + mplsLdpAtmSessionTable and the + mplsLdpFrameRelaySessionTable. A value will + differ if it was negotiated between the + Entity and the Peer. Values may or may not + be negotiated. For example, if the values + are the same then no negotiation takes place. + If they are negotiated, then they may differ." + AUGMENTS { mplsLdpPeerEntry } + ::= { mplsLdpSessionTable 1 } + +MplsLdpSessionEntry ::= SEQUENCE { + mplsLdpSessionStateLastChange TimeStamp, + mplsLdpSessionState INTEGER, + mplsLdpSessionRole INTEGER, + mplsLdpSessionProtocolVersion Unsigned32, + mplsLdpSessionKeepAliveHoldTimeRem TimeInterval, + mplsLdpSessionKeepAliveTime Unsigned32, + mplsLdpSessionMaxPduLength Unsigned32, + mplsLdpSessionDiscontinuityTime TimeStamp +} + +mplsLdpSessionStateLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + Session entered its current state as + denoted by the mplsLdpSessionState + object." + ::= { mplsLdpSessionEntry 1 } + + + + +mplsLdpSessionState OBJECT-TYPE + SYNTAX INTEGER { + nonexistent(1), + initialized(2), + openrec(3), + opensent(4), + operational(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the session, all of the + states 1 to 5 are based on the state machine + for session negotiation behavior." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.4, + Initialization State Machine." + ::= { mplsLdpSessionEntry 2 } + +mplsLdpSessionRole OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + active(2), + passive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "During session establishment the LSR/LER takes either + the active role or the passive role based on address + comparisons. This object indicates whether this LSR/LER + was behaving in an active role or passive role during + this session's establishment. + + The value of unknown(1), indicates that the role is not + able to be determined at the present time." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.3., + Session Initialization" + ::= { mplsLdpSessionEntry 3 } + +mplsLdpSessionProtocolVersion OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the LDP Protocol which + this session is using. This is the version of + + + + the LDP protocol which has been negotiated + during session initialization." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 4 } + +mplsLdpSessionKeepAliveHoldTimeRem OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The keep alive hold time remaining for + this session." + ::= { mplsLdpSessionEntry 5 } + + mplsLdpSessionKeepAliveTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated KeepAlive Time which + represents the amount of seconds between + keep alive messages. The + mplsLdpEntityKeepAliveHoldTimer + related to this Session is the + value that was proposed as the + KeepAlive Time for this session. + + This value is negotiated during + session initialization between + the entity's proposed value + (i.e., the value configured in + mplsLdpEntityKeepAliveHoldTimer) + and the peer's proposed + KeepAlive Hold Timer value. + This value is the smaller + of the two proposed values." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 6 } + + mplsLdpSessionMaxPduLength OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "octets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The value of maximum allowable length for LDP PDUs for + this session. This value may have been negotiated + during the Session Initialization. This object is + related to the mplsLdpEntityMaxPduLength object. The + mplsLdpEntityMaxPduLength object specifies the requested + LDP PDU length, and this object reflects the negotiated + LDP PDU length between the Entity and + the Peer." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 7 } + +mplsLdpSessionDiscontinuityTime 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 session's counters + suffered a discontinuity. The relevant counters are + the specific instances associated with this session + of any Counter32 object contained in the + mplsLdpSessionStatsTable. + + The initial value of this object is the value of + sysUpTime when the entry was created in this table. + + Also, a command generator can distinguish when a session + between a given Entity and Peer goes away and a new + session is established. This value would change and + thus indicate to the command generator that this is a + different session." + ::= { mplsLdpSessionEntry 8 } + +-- +-- The MPLS LDP Session Statistics Table +-- + +mplsLdpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of statistics for Sessions between + LDP Entities and LDP Peers. This table AUGMENTS + + + + the mplsLdpPeerTable." + ::= { mplsLdpSessionObjects 4 } + +mplsLdpSessionStatsEntry OBJECT-TYPE + SYNTAX MplsLdpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents statistical + information on a single session between an LDP + Entity and LDP Peer." + + AUGMENTS { mplsLdpPeerEntry } + ::= { mplsLdpSessionStatsTable 1 } + +MplsLdpSessionStatsEntry ::= SEQUENCE { + mplsLdpSessionStatsUnknownMesTypeErrors Counter32, + mplsLdpSessionStatsUnknownTlvErrors Counter32 +} + +mplsLdpSessionStatsUnknownMesTypeErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Unknown Message Type + Errors detected by this LSR/LER during this session. + + 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 + mplsLdpSessionDiscontinuityTime." + ::= { mplsLdpSessionStatsEntry 1 } + +mplsLdpSessionStatsUnknownTlvErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Unknown TLV Errors + detected by this LSR/LER during this session. + + 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 + mplsLdpSessionDiscontinuityTime." + ::= { mplsLdpSessionStatsEntry 2 } + + + + +-- +-- The MPLS LDP Hello Adjacency Table +-- + +mplsLdpHelloAdjacencyObjects OBJECT IDENTIFIER ::= + { mplsLdpSessionObjects 5 } + +mplsLdpHelloAdjacencyTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpHelloAdjacencyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Hello Adjacencies for Sessions." + ::= { mplsLdpHelloAdjacencyObjects 1 } + +mplsLdpHelloAdjacencyEntry OBJECT-TYPE + SYNTAX MplsLdpHelloAdjacencyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single LDP Hello Adjacency. + An LDP Session can have one or more Hello + Adjacencies." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpHelloAdjacencyIndex } + ::= { mplsLdpHelloAdjacencyTable 1 } + +MplsLdpHelloAdjacencyEntry ::= SEQUENCE { + mplsLdpHelloAdjacencyIndex Unsigned32, + mplsLdpHelloAdjacencyHoldTimeRem TimeInterval, + mplsLdpHelloAdjacencyHoldTime Unsigned32, + mplsLdpHelloAdjacencyType INTEGER +} + +mplsLdpHelloAdjacencyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for this specific adjacency." + ::= { mplsLdpHelloAdjacencyEntry 1 } + +mplsLdpHelloAdjacencyHoldTimeRem OBJECT-TYPE + SYNTAX TimeInterval + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the value of this object is 65535, + this means that the hold time is infinite + (i.e., wait forever). + + Otherwise, the time remaining for + this Hello Adjacency to receive its + next Hello Message. + + This interval will change when the 'next' + Hello Message which corresponds to this + Hello Adjacency is received unless it + is infinite." + ::= { mplsLdpHelloAdjacencyEntry 2 } + +mplsLdpHelloAdjacencyHoldTime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hello hold time which is negotiated between + the Entity and the Peer. The entity associated + with this Hello Adjacency issues a proposed + Hello Hold Time value in the + mplsLdpEntityHelloHoldTimer object. The peer + also proposes a value and this object represents + the negotiated value. + + A value of 0 means the default, + which is 15 seconds for Link Hellos + and 45 seconds for Targeted Hellos. + A value of 65535 indicates an + infinite hold time." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.2 Hello Message" + ::= { mplsLdpHelloAdjacencyEntry 3 } + +mplsLdpHelloAdjacencyType OBJECT-TYPE + SYNTAX INTEGER { + link(1), + targeted(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This adjacency is the result of a 'link' + hello if the value of this object is link(1). + + + + Otherwise, it is a result of a 'targeted' + hello, targeted(2)." + ::= { mplsLdpHelloAdjacencyEntry 4 } + +-- +-- Session Label (LSP) Mapping to LSR MIB's +-- In Segment LIB Information. +-- +-- +-- NOTE: the next 2 tables map to the +-- MPLS-LSR-STD-MIB's MplsInSegmentTable +-- and MplsOutSegmentTable. The +-- cross-connect (XC) information is not +-- represented here as it can be gleaned +-- from the MPLS-LSR-STD-MIB. +-- + +mplsInSegmentLdpLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of LDP LSP's which + map to the mplsInSegmentTable in the + MPLS-LSR-STD-MIB module." + ::= { mplsLdpSessionObjects 6 } + +mplsInSegmentLdpLspEntry OBJECT-TYPE + SYNTAX MplsInSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information + on a single LDP LSP which is represented by + a session's index triple (mplsLdpEntityLdpId, + mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the + index for the mplsInSegmentTable + (mplsInSegmentLdpLspLabelIndex) from the + MPLS-LSR-STD-MIB. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsInSegmentLdpLspIndex + } + ::= { mplsInSegmentLdpLspTable 1 } + + + + +MplsInSegmentLdpLspEntry ::= SEQUENCE { + mplsInSegmentLdpLspIndex MplsIndexType, + mplsInSegmentLdpLspLabelType MplsLdpLabelType, + mplsInSegmentLdpLspType MplsLspType +} + +mplsInSegmentLdpLspIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This contains the same value as the + mplsInSegmentIndex in the + MPLS-LSR-STD-MIB's mplsInSegmentTable." + ::= { mplsInSegmentLdpLspEntry 1 } + +mplsInSegmentLdpLspLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Layer 2 Label Type." + ::= { mplsInSegmentLdpLspEntry 2 } + +mplsInSegmentLdpLspType OBJECT-TYPE + SYNTAX MplsLspType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of LSP connection." + ::= { mplsInSegmentLdpLspEntry 3 } + +-- +-- Session Label (LSP) Mapping to LSR MIB's +-- Out Segment LIB Information. +-- + +mplsOutSegmentLdpLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of LDP LSP's which + map to the mplsOutSegmentTable in the + MPLS-LSR-STD-MIB." + ::= { mplsLdpSessionObjects 7 } + +mplsOutSegmentLdpLspEntry OBJECT-TYPE + + + + SYNTAX MplsOutSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information + on a single LDP LSP which is represented by + a session's index triple (mplsLdpEntityLdpId, + mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the + index (mplsOutSegmentLdpLspIndex) + for the mplsOutSegmentTable. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsOutSegmentLdpLspIndex + } + ::= { mplsOutSegmentLdpLspTable 1 } + +MplsOutSegmentLdpLspEntry ::= SEQUENCE { + mplsOutSegmentLdpLspIndex MplsIndexType, + mplsOutSegmentLdpLspLabelType MplsLdpLabelType, + mplsOutSegmentLdpLspType MplsLspType +} + +mplsOutSegmentLdpLspIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This contains the same value as the + mplsOutSegmentIndex in the + MPLS-LSR-STD-MIB's mplsOutSegmentTable." + ::= { mplsOutSegmentLdpLspEntry 1 } + +mplsOutSegmentLdpLspLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Layer 2 Label Type." + ::= { mplsOutSegmentLdpLspEntry 2 } + +mplsOutSegmentLdpLspType OBJECT-TYPE + SYNTAX MplsLspType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The type of LSP connection." + ::= { mplsOutSegmentLdpLspEntry 3 } + +-- +-- Mpls FEC Table +-- + +mplsFecObjects OBJECT IDENTIFIER ::= + { mplsLdpSessionObjects 8 } + +mplsFecLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition/deletion of an entry + to/from the mplsLdpFectTable or + the most recent change in values to any objects + in the mplsLdpFecTable. + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsFecObjects 1 } + +mplsFecIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for mplsFecIndex when creating + entries in the mplsFecTable. The value + 0 indicates that no unassigned entries are + available." + ::= { mplsFecObjects 2 } + +mplsFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the FEC + (Forwarding Equivalence Class) + Information associated with an LSP." + ::= { mplsFecObjects 3 } + + + + +mplsFecEntry OBJECT-TYPE + SYNTAX MplsFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single FEC Element." + INDEX { mplsFecIndex } + ::= { mplsFecTable 1 } + +MplsFecEntry ::= SEQUENCE { + mplsFecIndex IndexInteger, + mplsFecType INTEGER, + mplsFecAddrType InetAddressType, + mplsFecAddr InetAddress, + mplsFecAddrPrefixLength InetAddressPrefixLength, + mplsFecStorageType StorageType, + mplsFecRowStatus RowStatus +} + +mplsFecIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index which uniquely identifies this entry." + ::= { mplsFecEntry 1 } + +mplsFecType OBJECT-TYPE + SYNTAX INTEGER { + prefix(1), + hostAddress(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the FEC. If the value of this object + is 'prefix(1)' then the FEC type described by this + row is an address prefix. + + If the value of this object is 'hostAddress(2)' then + the FEC type described by this row is a host address." + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + ::= { mplsFecEntry 2 } + +mplsFecAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The value of this object is the type of the + Internet address. The value of this object, + decides how the value of the mplsFecAddr object + is interpreted." + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + ::= { mplsFecEntry 4 } + +mplsFecAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is interpreted based + on the value of the 'mplsFecAddrType' object. + + This address is then further interpretted as + an being used with the address prefix, + or as the host address. This further interpretation + is indicated by the 'mplsFecType' object. + In other words, the FEC element is populated + according to the Prefix FEC Element value encoding, or + the Host Address FEC Element encoding." + REFERENCE + "RFC3036, Section 3.4.1 FEC TLV." + ::= { mplsFecEntry 5 } + +mplsFecAddrPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of the 'mplsFecType' is 'hostAddress(2)' + then this object is undefined. + + If the value of 'mplsFecType' is 'prefix(1)' + then the value of this object is the length in + bits of the address prefix represented by + 'mplsFecAddr', or zero. If the value of this + object is zero, this indicates that the + prefix matches all addresses. In this case the + address prefix MUST also be zero (i.e., 'mplsFecAddr' + should have the value of zero.)" + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + DEFVAL { 0 } + + + + ::= { mplsFecEntry 3 } + +mplsFecStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsFecEntry 6 } + +mplsFecRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. If the value of this + object is 'active(1)', then none of the writable objects + of this entry can be modified, except to set this object + to 'destroy(6)'. + + NOTE: if this row is being referenced by any entry in + the mplsLdpLspFecTable, then a request to destroy + this row, will result in an inconsistentValue error." + ::= { mplsFecEntry 7 } + +-- +-- LDP LSP FEC Table +-- + +mplsLdpLspFecLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition/deletion of an entry + to/from the mplsLdpLspFecTable or + the most recent change in values to any objects in the + mplsLdpLspFecTable. + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsLdpSessionObjects 9 } + + + +mplsLdpLspFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpLspFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which shows the relationship between + LDP LSPs and FECs. Each row represents + a single LDP LSP to FEC association." + ::= { mplsLdpSessionObjects 10 } + +mplsLdpLspFecEntry OBJECT-TYPE + SYNTAX MplsLdpLspFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry represents a LDP LSP + to FEC association." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpLspFecSegment, + mplsLdpLspFecSegmentIndex, + mplsLdpLspFecIndex + } + ::= { mplsLdpLspFecTable 1 } + +MplsLdpLspFecEntry ::= SEQUENCE { + mplsLdpLspFecSegment INTEGER, + mplsLdpLspFecSegmentIndex MplsIndexType, + mplsLdpLspFecIndex IndexInteger, + mplsLdpLspFecStorageType StorageType, + mplsLdpLspFecRowStatus RowStatus +} + +mplsLdpLspFecSegment OBJECT-TYPE + SYNTAX INTEGER { + inSegment(1), + outSegment(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the value is inSegment(1), then this + indicates that the following index, + mplsLdpLspFecSegmentIndex, contains the same + value as the mplsInSegmentLdpLspIndex. + + Otherwise, if the value of this object is + + + + outSegment(2), then this + indicates that following index, + mplsLdpLspFecSegmentIndex, contains the same + value as the mplsOutSegmentLdpLspIndex." + ::= { mplsLdpLspFecEntry 1 } + +mplsLdpLspFecSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index is interpretted by using the value + of the mplsLdpLspFecSegment. + + If the mplsLdpLspFecSegment is inSegment(1), + then this index has the same value as + mplsInSegmentLdpLspIndex. + + If the mplsLdpLspFecSegment is outSegment(2), + then this index has the same value as + mplsOutSegmentLdpLspIndex." + ::= { mplsLdpLspFecEntry 2 } + +mplsLdpLspFecIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index identifies the FEC entry in the + mplsFecTable associated with this session. + In other words, the value of this index + is the same as the value of the mplsFecIndex + that denotes the FEC associated with this + Session." + ::= { mplsLdpLspFecEntry 3 } + +mplsLdpLspFecStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpLspFecEntry 4 } + + + + +mplsLdpLspFecRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. If the + value of this object is 'active(1)', then + none of the writable objects of this entry + can be modified. + + The Agent should delete this row when + the session ceases to exist. If an + operator wants to associate the session with + a different FEC, the recommended + procedure is (as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object) + is to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a session + to be torn down. This will also + cause this entry to be deleted. + + Then, set the mplsLdpEntityAdminStatus + to enable which enables a new session to be initiated. + Once the session is initiated, an entry may be + added to this table to associate the new session + with a FEC." + ::= { mplsLdpLspFecEntry 5 } + +-- +-- Address Message/Address Withdraw Message Information +-- +-- This information is associated with a specific Session +-- because Label Address Messages are sent after session +-- initialization has taken place. +-- + +mplsLdpSessionPeerAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionPeerAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table 'extends' the mplsLdpSessionTable. + This table is used to store Label Address Information + from Label Address Messages received by this LSR from + Peers. This table is read-only and should be updated + + + + when Label Withdraw Address Messages are received, i.e., + Rows should be deleted as appropriate. + + NOTE: since more than one address may be contained + in a Label Address Message, this table 'sparse augments', + the mplsLdpSessionTable's information." + ::= { mplsLdpSessionObjects 11 } + +mplsLdpSessionPeerAddrEntry OBJECT-TYPE + SYNTAX MplsLdpSessionPeerAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on + a session's single next hop address which was + advertised in an Address Message from the LDP peer. + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpSessionPeerAddrIndex + } + ::= { mplsLdpSessionPeerAddrTable 1 } + +MplsLdpSessionPeerAddrEntry ::= SEQUENCE { + mplsLdpSessionPeerAddrIndex Unsigned32, + mplsLdpSessionPeerNextHopAddrType InetAddressType, + mplsLdpSessionPeerNextHopAddr InetAddress +} + +mplsLdpSessionPeerAddrIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which uniquely identifies this entry within + a given session." + ::= { mplsLdpSessionPeerAddrEntry 1 } + +mplsLdpSessionPeerNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internetwork layer address type of this Next Hop + Address as specified in the Label Address Message + associated with this Session. The value of this + object indicates how to interpret the value of + + + + mplsLdpSessionPeerNextHopAddr." + ::= { mplsLdpSessionPeerAddrEntry 2 } + +mplsLdpSessionPeerNextHopAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next hop address. The type of this address + is specified by the value of the + mplsLdpSessionPeerNextHopAddrType." + REFERENCE + "RFC3036, Section 2.7. LDP Identifiers + and Next Hop Addresses" + ::= { mplsLdpSessionPeerAddrEntry 3 } + +--- +--- Notifications +--- + +mplsLdpInitSessionThresholdExceeded NOTIFICATION-TYPE + OBJECTS { + mplsLdpEntityInitSessionThreshold + } + STATUS current + DESCRIPTION + "This notification is generated when the value of + the 'mplsLdpEntityInitSessionThreshold' object + is not zero, and the number of Session + Initialization messages exceeds the value + of the 'mplsLdpEntityInitSessionThreshold' object." + ::= { mplsLdpNotifications 1 } + +mplsLdpPathVectorLimitMismatch NOTIFICATION-TYPE + OBJECTS { + mplsLdpEntityPathVectorLimit, + mplsLdpPeerPathVectorLimit + } + STATUS current + DESCRIPTION + "This notification is sent when the + 'mplsLdpEntityPathVectorLimit' does NOT match + the value of the 'mplsLdpPeerPathVectorLimit' for + a specific Entity." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3." + ::= { mplsLdpNotifications 2 } + + + + +mplsLdpSessionUp NOTIFICATION-TYPE + OBJECTS { + mplsLdpSessionState, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors + } + STATUS current + DESCRIPTION + "If this notification is sent when the + value of 'mplsLdpSessionState' enters + the 'operational(5)' state." + ::= { mplsLdpNotifications 3 } + +mplsLdpSessionDown NOTIFICATION-TYPE + OBJECTS { + mplsLdpSessionState, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors + + } + STATUS current + DESCRIPTION + "This notification is sent when the + value of 'mplsLdpSessionState' leaves + the 'operational(5)' state." + ::= { mplsLdpNotifications 4 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpGroups + OBJECT IDENTIFIER ::= { mplsLdpConformance 1 } + +mplsLdpCompliances + OBJECT IDENTIFIER ::= { mplsLdpConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support + for read-create and read-write. In other + + + + words, both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + + MODULE -- this module + MANDATORY-GROUPS { mplsLdpGeneralGroup, + mplsLdpNotificationsGroup + } + GROUP mplsLdpLspGroup + DESCRIPTION + "This group must be supported if the LSR MIB is + implemented, specifically the mplsInSegmentTable, + the mplsOutSegmentTable or the mplsXCTable." + + OBJECT mplsLdpEntityTargetPeerAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpEntityTargetPeerAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsLdpEntityRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT mplsFecAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsFecAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsFecRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + + + + "Support for createAndWait and notInService is not + required." + + OBJECT mplsLdpLspFecRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT mplsLdpSessionPeerNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpSessionPeerNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 + and globally unique IPv6 addresses." + + ::= { mplsLdpCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support + for read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + + MODULE -- this module + MANDATORY-GROUPS { mplsLdpGeneralGroup, + mplsLdpNotificationsGroup + } + + GROUP mplsLdpLspGroup + DESCRIPTION + "This group must be supported if the LSR MIB is + implemented, specifically the mplsInSegmentTable, + the mplsOutSegmentTable or the mplsXCTable." + + OBJECT mplsLdpEntityProtocolVersion + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTcpPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityUdpDscPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityMaxPduLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityKeepAliveHoldTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityHelloHoldTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityInitSessionThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityLabelDistMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityLabelRetentionMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mplsLdpEntityPathVectorLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityHopCountLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTransportAddrKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTargetPeer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTargetPeerAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpEntityTargetPeerAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsLdpEntityLabelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityRowStatus + SYNTAX RowStatus { active(1) } + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsFecType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecAddrPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsFecAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsFecStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpLspFecStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mplsLdpLspFecRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpSessionPeerNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + + OBJECT mplsLdpSessionPeerNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 + and globally unique IPv6 addresses." + + ::= { mplsLdpCompliances 2 } + +-- units of conformance + +mplsLdpGeneralGroup OBJECT-GROUP + OBJECTS { + mplsLdpLsrId, + mplsLdpLsrLoopDetectionCapable, + mplsLdpEntityLastChange, + mplsLdpEntityIndexNext, + mplsLdpEntityProtocolVersion, + mplsLdpEntityAdminStatus, + mplsLdpEntityOperStatus, + mplsLdpEntityTcpPort, + mplsLdpEntityUdpDscPort, + mplsLdpEntityMaxPduLength, + mplsLdpEntityKeepAliveHoldTimer, + mplsLdpEntityHelloHoldTimer, + mplsLdpEntityInitSessionThreshold, + mplsLdpEntityLabelDistMethod, + mplsLdpEntityLabelRetentionMode, + mplsLdpEntityPathVectorLimit, + mplsLdpEntityHopCountLimit, + mplsLdpEntityTransportAddrKind, + mplsLdpEntityTargetPeer, + mplsLdpEntityTargetPeerAddrType, + mplsLdpEntityTargetPeerAddr, + mplsLdpEntityLabelType, + + + + mplsLdpEntityDiscontinuityTime, + mplsLdpEntityStorageType, + mplsLdpEntityRowStatus, + mplsLdpEntityStatsSessionAttempts, + mplsLdpEntityStatsSessionRejectedNoHelloErrors, + mplsLdpEntityStatsSessionRejectedAdErrors, + mplsLdpEntityStatsSessionRejectedMaxPduErrors, + mplsLdpEntityStatsSessionRejectedLRErrors, + mplsLdpEntityStatsBadLdpIdentifierErrors, + mplsLdpEntityStatsBadPduLengthErrors, + mplsLdpEntityStatsBadMessageLengthErrors, + mplsLdpEntityStatsBadTlvLengthErrors, + mplsLdpEntityStatsMalformedTlvValueErrors, + mplsLdpEntityStatsKeepAliveTimerExpErrors, + mplsLdpEntityStatsShutdownReceivedNotifications, + mplsLdpEntityStatsShutdownSentNotifications, + mplsLdpPeerLastChange, + mplsLdpPeerLabelDistMethod, + mplsLdpPeerPathVectorLimit, + mplsLdpPeerTransportAddrType, + mplsLdpPeerTransportAddr, + mplsLdpHelloAdjacencyHoldTimeRem, + mplsLdpHelloAdjacencyHoldTime, + mplsLdpHelloAdjacencyType, + mplsLdpSessionStateLastChange, + mplsLdpSessionState, + mplsLdpSessionRole, + mplsLdpSessionProtocolVersion, + mplsLdpSessionKeepAliveHoldTimeRem, + mplsLdpSessionKeepAliveTime, + mplsLdpSessionMaxPduLength, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors, + mplsLdpSessionPeerNextHopAddrType, + mplsLdpSessionPeerNextHopAddr, + mplsFecLastChange, + mplsFecIndexNext, + mplsFecType, + mplsFecAddrType, + mplsFecAddr, + mplsFecAddrPrefixLength, + mplsFecStorageType, + mplsFecRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations." + + + + ::= { mplsLdpGroups 1 } + +mplsLdpLspGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentLdpLspLabelType, + mplsInSegmentLdpLspType, + mplsOutSegmentLdpLspLabelType, + mplsOutSegmentLdpLspType, + mplsLdpLspFecLastChange, + mplsLdpLspFecStorageType, + mplsLdpLspFecRowStatus + } + STATUS current + DESCRIPTION + "These objects are for LDP implementations + which interface to the Label Information Base (LIB) + in the MPLS-LSR-STD-MIB. The LIB is + represented in the mplsInSegmentTable, + mplsOutSegmentTable and mplsXCTable." + ::= { mplsLdpGroups 2 } + +mplsLdpNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { mplsLdpInitSessionThresholdExceeded, + mplsLdpPathVectorLimitMismatch, + mplsLdpSessionUp, + mplsLdpSessionDown + } + STATUS current + DESCRIPTION + "The notification for an MPLS LDP implementation." + ::= { mplsLdpGroups 3 } + +END diff --git a/mibs/ietf/MPLS-LSR-STD-MIB b/mibs/ietf/MPLS-LSR-STD-MIB new file mode 100644 index 0000000..fa348bc --- /dev/null +++ b/mibs/ietf/MPLS-LSR-STD-MIB @@ -0,0 +1,2232 @@ +MPLS-LSR-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32, Counter64, Gauge32, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TruthValue, RowStatus, StorageType, RowPointer, + TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndexOrZero, ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + mplsStdMIB, MplsLSPID, MplsLabel, MplsBitRate, + MplsOwner + FROM MPLS-TC-STD-MIB -- [RFC3811] + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB -- [IANAFamily] + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB -- [RFC3291] + ; + +mplsLsrStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Cheenu Srinivasan + Bloomberg L.P. + Email: cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + Email: arunv@force10networks.com + + Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Comments about this document should be emailed + directly to the MPLS working group mailing list at + mpls@uu.net." + + DESCRIPTION + "This MIB module contains managed object definitions for + the Multiprotocol Label Switching (MPLS) Router as + + + + defined in: Rosen, E., Viswanathan, A., and R. + Callon, Multiprotocol Label Switching Architecture, + RFC 3031, January 2001. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3812. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + -- Revision history. + REVISION + "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial revision, published as part of RFC 3813." + + ::= { mplsStdMIB 2 } + +-- TEXTUAL-CONVENTIONs + +MplsIndexType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is an octet string that can be used as a table + index in cases where a large addressable space is + required such as on an LSR where many applications + may be provisioning labels. + + Note that the string containing the single octet with + the value 0x00 is a reserved value used to represent + special cases. When this TEXTUAL-CONVENTION is used + as the SYNTAX of an object, the DESCRIPTION clause + MUST specify if this special value is valid and if so + what the special meaning is. + + In systems that provide write access to the MPLS-LSR-STD + MIB, mplsIndexType SHOULD be used as a simple multi-digit + integer encoded as an octet string. + No further overloading of the meaning of an index SHOULD + be made. + + In systems that do not offer write access to the MPLS-LSR-STD + MIB, the mplsIndexType may contain implicit formatting that is + specific to the implementation to convey additional + information such as interface index, physical card or + device, or application id. The interpretation of this + additional formatting is implementation dependent and + not covered in this document. Such formatting MUST + + + + NOT impact the basic functionality of read-only access + to the MPLS-LSR-STD MIB by management applications that are + not aware of the formatting rules." + SYNTAX OCTET STRING (SIZE(1..24)) + +MplsIndexNextType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "When a MIB module is used for configuration, an object with + this SYNTAX always contains a legal value (a non-zero-length + string) for an index that is not currently used in the relevant + table. The Command Generator (Network Management Application) + reads this variable and uses the (non-zero-length string) + value read when creating a new row with an SNMP SET. + + When the SET is performed, the Command Responder (agent) must + determine whether the value is indeed still unused; Two Network + Management Applications may attempt to create a row + (configuration entry) simultaneously and use the same value. If + it is currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, according + to an implementation-specific algorithm. If the value is in + use, however, the SET fails. The Network Management + Application must then re-read this variable to obtain a new + usable value. + + Note that the string containing the single octet with + the value 0x00 is a reserved value used to represent + the special case where no additional indexes can be + provisioned, or in systems that do not offer + write access, objects defined using this TEXTUAL-CONVENTION + MUST return the string containing the single + octet with the value 0x00." + SYNTAX OCTET STRING (SIZE(1..24)) + +-- Top level components of this MIB module. + +-- Notifications +mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrStdMIB 0 } + +-- Tables, Scalars +mplsLsrObjects OBJECT IDENTIFIER ::= { mplsLsrStdMIB 1 } + +-- Conformance +mplsLsrConformance OBJECT IDENTIFIER ::= { mplsLsrStdMIB 2 } + +-- MPLS Interface Table. +mplsInterfaceTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF MplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS capability + and associated information." + ::= { mplsLsrObjects 1 } + +mplsInterfaceEntry OBJECT-TYPE + SYNTAX MplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in this table is created + automatically by an LSR for every interface capable + of supporting MPLS and which is configured to do so. + A conceptual row in this table will exist if and only if + a corresponding entry in ifTable exists with ifType = + mpls(166). If this associated entry in ifTable is + operationally disabled (thus removing MPLS + capabilities on that interface), the corresponding + entry in this table MUST be deleted shortly thereafter. + An conceptual row with index 0 is created if the LSR + supports per-platform labels. This conceptual row + represents the per-platform label space and contains + parameters that apply to all interfaces that participate + in the per-platform label space. Other conceptual rows + in this table represent MPLS interfaces that may + participate in either the per-platform or per- + interface label spaces, or both. Implementations + that either only support per-platform labels, + or have only them configured, may choose to return + just the mplsInterfaceEntry of 0 and not return + the other rows. This will greatly reduce the number + of objects returned. Further information about label + space participation of an interface is provided in + the DESCRIPTION clause of + mplsInterfaceLabelParticipationType." + INDEX { mplsInterfaceIndex } + ::= { mplsInterfaceTable 1 } + +MplsInterfaceEntry ::= SEQUENCE { + mplsInterfaceIndex InterfaceIndexOrZero, + mplsInterfaceLabelMinIn MplsLabel, + mplsInterfaceLabelMaxIn MplsLabel, + mplsInterfaceLabelMinOut MplsLabel, + mplsInterfaceLabelMaxOut MplsLabel, + mplsInterfaceTotalBandwidth MplsBitRate, + + + + mplsInterfaceAvailableBandwidth MplsBitRate, + mplsInterfaceLabelParticipationType BITS +} + +mplsInterfaceIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the + MplsInterfaceTable. A non-zero index for an + entry indicates the ifIndex for the corresponding + interface entry of the MPLS-layer in the ifTable. + The entry with index 0 represents the per-platform + label space and contains parameters that apply to all + interfaces that participate in the per-platform label + space. Other entries defined in this table represent + additional MPLS interfaces that may participate in either + the per-platform or per-interface label spaces, or both." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + ::= { mplsInterfaceEntry 1 } + +mplsInterfaceLabelMinIn OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the minimum value of an MPLS label that this + LSR is willing to receive on this interface." + ::= { mplsInterfaceEntry 2 } + +mplsInterfaceLabelMaxIn OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the maximum value of an MPLS label that this + LSR is willing to receive on this interface." + ::= { mplsInterfaceEntry 3 } + +mplsInterfaceLabelMinOut OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the minimum value of an MPLS label that this + + + + LSR is willing to send on this interface." + ::= { mplsInterfaceEntry 4 } + +mplsInterfaceLabelMaxOut OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the maximum value of an MPLS label that this + LSR is willing to send on this interface." + ::= { mplsInterfaceEntry 5 } + +mplsInterfaceTotalBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total amount of usable + bandwidth on this interface and is specified in + kilobits per second (Kbps). This variable is not + applicable when applied to the interface with index + 0. When this value cannot be measured, this value + should contain the nominal bandwidth." +::= { mplsInterfaceEntry 6 } + +mplsInterfaceAvailableBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total amount of available + bandwidth available on this interface and is + specified in kilobits per second (Kbps). This value + is calculated as the difference between the amount + of bandwidth currently in use and that specified in + mplsInterfaceTotalBandwidth. This variable is not + applicable when applied to the interface with index + 0. When this value cannot be measured, this value + should contain the nominal bandwidth." +::= { mplsInterfaceEntry 7 } + +mplsInterfaceLabelParticipationType OBJECT-TYPE + SYNTAX BITS { + perPlatform (0), + perInterface (1) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the value of the mplsInterfaceIndex for this + entry is zero, then this entry corresponds to the + per-platform label space for all interfaces configured + to use that label space. In this case the perPlatform(0) + bit MUST be set; the perInterface(1) bit is meaningless + and MUST be ignored. + + The remainder of this description applies to entries + with a non-zero value of mplsInterfaceIndex. + + If the perInterface(1) bit is set then the value of + mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, and + mplsInterfaceLabelMaxOut for this entry reflect the + label ranges for this interface. + + If only the perPlatform(0) bit is set, then the value of + mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, and + mplsInterfaceLabelMaxOut for this entry MUST be + identical to the instance of these objects with + index 0. These objects may only vary from the entry + with index 0 if both the perPlatform(0) and perInterface(1) + bits are set. + + In all cases, at a minimum one of the perPlatform(0) or + perInterface(1) bits MUST be set to indicate that + at least one label space is in use by this interface. In + all cases, agents MUST ensure that label ranges are + specified consistently and MUST return an + inconsistentValue error when they do not." + REFERENCE + "Rosen, E., Viswanathan, A., and R. Callon, + Multiprotocol Label Switching Architecture, RFC + 3031, January 2001." +::= { mplsInterfaceEntry 8 } + +-- End of mplsInterfaceTable + + +-- MPLS Interface Performance Table. + +mplsInterfacePerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInterfacePerfEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table provides MPLS performance information on + a per-interface basis." + ::= { mplsLsrObjects 2 } + +mplsInterfacePerfEntry OBJECT-TYPE + SYNTAX MplsInterfacePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for + every interface capable of supporting MPLS. Its is + an extension to the mplsInterfaceEntry table. + Note that the discontinuity behavior of entries in + this table MUST be based on the corresponding + ifEntry's ifDiscontinuityTime." + AUGMENTS { mplsInterfaceEntry } + ::= { mplsInterfacePerfTable 1 } + +MplsInterfacePerfEntry ::= SEQUENCE { + -- incoming direction + mplsInterfacePerfInLabelsInUse Gauge32, + mplsInterfacePerfInLabelLookupFailures Counter32, + + -- outgoing direction + mplsInterfacePerfOutLabelsInUse Gauge32, + mplsInterfacePerfOutFragmentedPkts Counter32 + } + +mplsInterfacePerfInLabelsInUse OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of labels that are in + use at this point in time on this interface in the + incoming direction. If the interface participates in + only the per-platform label space, then the value of + the instance of this object MUST be identical to + the value of the instance with index 0. If the + interface participates in the per-interface label + space, then the instance of this object MUST + represent the number of per-interface labels that + are in use on this interface." + ::= { mplsInterfacePerfEntry 1 } + +mplsInterfacePerfInLabelLookupFailures OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of labeled packets + that have been received on this interface and which + were discarded because there was no matching cross- + connect entry. This object MUST count on a per- + interface basis regardless of which label space the + interface participates in." + ::= { mplsInterfacePerfEntry 2 } + +mplsInterfacePerfOutLabelsInUse OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of top-most labels in + the outgoing label stacks that are in use at this + point in time on this interface. This object MUST + count on a per-interface basis regardless of which + label space the interface participates in." + ::= { mplsInterfacePerfEntry 3 } + +mplsInterfacePerfOutFragmentedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of outgoing MPLS + packets that required fragmentation before + transmission on this interface. This object MUST + count on a per-interface basis regardless of which + label space the interface participates in." +::= { mplsInterfacePerfEntry 4 } + +-- mplsInterfacePerf Table end. + +mplsInSegmentIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsInSegmentIndex when creating entries + in the mplsInSegmentTable. The special value of a + string containing the single octet 0x00 indicates + that no new entries can be created in this table. + Agents not allowing managers to create entries + + + + in this table MUST set this object to this special + value." + ::= { mplsLsrObjects 3 } + +-- in-segment table. +mplsInSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a description of the incoming MPLS + segments (labels) to an LSR and their associated parameters. + The index for this table is mplsInSegmentIndex. + The index structure of this table is specifically designed + to handle many different MPLS implementations that manage + their labels both in a distributed and centralized manner. + The table is also designed to handle existing MPLS labels + as defined in RFC3031 as well as longer ones that may + be necessary in the future. + + In cases where the label cannot fit into the + mplsInSegmentLabel object, the mplsInSegmentLabelPtr + will indicate this by being set to the first accessible + column in the appropriate extension table's row. + In this case an additional table MUST + be provided and MUST be indexed by at least the indexes + used by this table. In all other cases when the label is + represented within the mplsInSegmentLabel object, the + mplsInSegmentLabelPtr MUST be set to 0.0. Due to the + fact that MPLS labels may not exceed 24 bits, the + mplsInSegmentLabelPtr object is only a provision for + future-proofing the MIB module. Thus, the definition + of any extension tables is beyond the scope of this + MIB module." + ::= { mplsLsrObjects 4 } + +mplsInSegmentEntry OBJECT-TYPE + SYNTAX MplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one incoming + segment as is represented in an LSR's LFIB. + An entry can be created by a network + administrator or an SNMP agent, or an MPLS signaling + protocol. The creator of the entry is denoted by + mplsInSegmentOwner. + + + + + The value of mplsInSegmentRowStatus cannot be active(1) + unless the ifTable entry corresponding to + mplsInSegmentInterface exists. An entry in this table + must match any incoming packets, and indicates an + instance of mplsXCEntry based on which forwarding + and/or switching actions are taken." + INDEX { mplsInSegmentIndex } + ::= { mplsInSegmentTable 1 } + +MplsInSegmentEntry ::= SEQUENCE { + mplsInSegmentIndex MplsIndexType, + mplsInSegmentInterface InterfaceIndexOrZero, + mplsInSegmentLabel MplsLabel, + mplsInSegmentLabelPtr RowPointer, + mplsInSegmentNPop Integer32, + mplsInSegmentAddrFamily AddressFamilyNumbers, + mplsInSegmentXCIndex MplsIndexType, + mplsInSegmentOwner MplsOwner , + mplsInSegmentTrafficParamPtr RowPointer, + mplsInSegmentRowStatus RowStatus, + mplsInSegmentStorageType StorageType +} + +mplsInSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this in-segment. The + string containing the single octet 0x00 + MUST not be used as an index." + ::= { mplsInSegmentEntry 1 } + +mplsInSegmentInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the + interface index for the incoming MPLS interface. A + value of zero represents all interfaces participating in + the per-platform label space. This may only be used + in cases where the incoming interface and label + are associated with the same mplsXCEntry. Specifically, + given a label and any incoming interface pair from the + per-platform label space, the outgoing label/interface + mapping remains the same. If this is not the case, + then individual entries MUST exist that + + + + can then be mapped to unique mplsXCEntries." + ::= { mplsInSegmentEntry 2 } + +mplsInSegmentLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the corresponding instance of mplsInSegmentLabelPtr is + zeroDotZero then this object MUST contain the incoming label + associated with this in-segment. If not this object SHOULD + be zero and MUST be ignored." + ::= { mplsInSegmentEntry 3 } + +mplsInSegmentLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsInSegmentLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsInSegmentTopLabel + object SHOULD be set to 0 and ignored. This object MUST + be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsInSegmentEntry 4 } + +mplsInSegmentNPop OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of labels to pop from the incoming + packet. Normally only the top label is popped from + the packet and used for all switching decisions for + that packet. This is indicated by setting this + object to the default value of 1. If an LSR supports + popping of more than one label, this object MUST + be set to that number. This object cannot be modified + if mplsInSegmentRowStatus is active(1)." + DEFVAL { 1 } + ::= { mplsInSegmentEntry 5 } + +mplsInSegmentAddrFamily OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The IANA address family [IANAFamily] of packets + received on this segment, which is used at an egress + LSR to deliver them to the appropriate layer 3 entity. + A value of other(0) indicates that the family type is + either unknown or undefined; this SHOULD NOT be used + at an egress LSR. This object cannot be + modified if mplsInSegmentRowStatus is active(1)." + REFERENCE + "Internet Assigned Numbers Authority (IANA), ADDRESS + FAMILY NUMBERS, (http://www.iana.org/assignments/ + address-family-numbers), for MIB see: + http://www.iana.org/assignments/ + ianaaddressfamilynumbers-mib +" + DEFVAL { other } + ::= { mplsInSegmentEntry 6 } + +mplsInSegmentXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into mplsXCTable which identifies which cross- + connect entry this segment is part of. The string + containing the single octet 0x00 indicates that this + entry is not referred to by any cross-connect entry. + When a cross-connect entry is created which this + in-segment is a part of, this object is automatically + updated to reflect the value of mplsXCIndex of that + cross-connect entry." + ::= { mplsInSegmentEntry 7 } + +mplsInSegmentOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + for managing this segment." + ::= { mplsInSegmentEntry 8 } + +mplsInSegmentTrafficParamPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This variable represents a pointer to the traffic + parameter specification for this in-segment. This + value may point at an entry in the + mplsTunnelResourceTable in the MPLS-TE-STD-MIB (RFC3812) + to indicate which traffic parameter settings for this + segment if it represents an LSP used for a TE tunnel. + + This value may optionally point at an + externally defined traffic parameter specification + table. A value of zeroDotZero indicates best-effort + treatment. By having the same value of this object, + two or more segments can indicate resource sharing + of such things as LSP queue space, etc. + + This object cannot be modified if mplsInSegmentRowStatus + is active(1). For entries in this table that + are preserved after a re-boot, the agent MUST ensure + that their integrity be preserved, or this object should + be set to 0.0 if it cannot." + DEFVAL { zeroDotZero } + ::= { mplsInSegmentEntry 9 } + +mplsInSegmentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table has a row in the active(1) state, no + objects in this row can be modified except the + mplsInSegmentRowStatus and mplsInSegmentStorageType." + ::= { mplsInSegmentEntry 10 } + +mplsInSegmentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that this object's + value remains consistent with the associated + mplsXCEntry. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + + + + ::= { mplsInSegmentEntry 11 } + +-- End of mplsInSegmentTable + +-- in-segment performance table. + +mplsInSegmentPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistical information for + incoming MPLS segments to an LSR." + ::= { mplsLsrObjects 5 } + +mplsInSegmentPerfEntry OBJECT-TYPE + SYNTAX MplsInSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains statistical + information about one incoming segment which is + configured in the mplsInSegmentTable. The counters + in this entry should behave in a manner similar to + that of the interface. + mplsInSegmentPerfDiscontinuityTime indicates the + time of the last discontinuity in all of these + objects." + AUGMENTS { mplsInSegmentEntry } + ::= { mplsInSegmentPerfTable 1 } + +MplsInSegmentPerfEntry ::= SEQUENCE { + mplsInSegmentPerfOctets Counter32, + mplsInSegmentPerfPackets Counter32, + mplsInSegmentPerfErrors Counter32, + mplsInSegmentPerfDiscards Counter32, + + -- high capacity counter + mplsInSegmentPerfHCOctets Counter64, + + mplsInSegmentPerfDiscontinuityTime TimeStamp + } + +mplsInSegmentPerfOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This value represents the total number of octets + received by this segment. It MUST be equal to the + least significant 32 bits of + mplsInSegmentPerfHCOctets + if mplsInSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsInSegmentPerfEntry 1 } + +mplsInSegmentPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of packets received by this segment." + ::= { mplsInSegmentPerfEntry 2 } + +mplsInSegmentPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errored packets received on this + segment." + ::= { mplsInSegmentPerfEntry 3 } + +mplsInSegmentPerfDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of labeled packets received on this in- + segment, 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 labeled packet could be to free up + buffer space." + ::= { mplsInSegmentPerfEntry 4 } + +mplsInSegmentPerfHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received. This is the 64 + bit version of mplsInSegmentPerfOctets, + if mplsInSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsInSegmentPerfEntry 5 } + + + + +mplsInSegmentPerfDiscontinuityTime 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 segment's Counter32 + or Counter64 suffered a discontinuity. If no such + discontinuities have occurred since the last re- + initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsInSegmentPerfEntry 6 } + +-- End of mplsInSegmentPerfTable. + +-- out-segment table. + +mplsOutSegmentIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsOutSegmentIndex when creating entries + in the mplsOutSegmentTable. The special value of a + string containing the single octet 0x00 + indicates that no new entries can be created in this + table. Agents not allowing managers to create entries + in this table MUST set this object to this special + value." + ::= { mplsLsrObjects 6 } + +mplsOutSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a representation of the outgoing + segments from an LSR." + ::= { mplsLsrObjects 7 } + +mplsOutSegmentEntry OBJECT-TYPE + SYNTAX MplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one outgoing + + + + segment. An entry can be created by a network + administrator, an SNMP agent, or an MPLS signaling + protocol. The object mplsOutSegmentOwner indicates + the creator of this entry. The value of + mplsOutSegmentRowStatus cannot be active(1) unless + the ifTable entry corresponding to + mplsOutSegmentInterface exists. + + Note that the indexing of this table uses a single, + arbitrary index (mplsOutSegmentIndex) to indicate + which out-segment (i.e.: label) is being switched to + from which in-segment (i.e: label) or in-segments. + This is necessary because it is possible to have an + equal-cost multi-path situation where two identical + out-going labels are assigned to the same + cross-connect (i.e.: they go to two different neighboring + LSRs); thus, requiring two out-segments. In order to + preserve the uniqueness of the references + by the mplsXCEntry, an arbitrary integer must be used as + the index for this table." + INDEX { mplsOutSegmentIndex } + ::= { mplsOutSegmentTable 1 } + +MplsOutSegmentEntry ::= SEQUENCE { + mplsOutSegmentIndex MplsIndexType, + mplsOutSegmentInterface InterfaceIndexOrZero, + mplsOutSegmentPushTopLabel TruthValue, + mplsOutSegmentTopLabel MplsLabel, + mplsOutSegmentTopLabelPtr RowPointer, + mplsOutSegmentNextHopAddrType InetAddressType, + mplsOutSegmentNextHopAddr InetAddress, + mplsOutSegmentXCIndex MplsIndexType, + mplsOutSegmentOwner MplsOwner, + mplsOutSegmentTrafficParamPtr RowPointer, + mplsOutSegmentRowStatus RowStatus, + mplsOutSegmentStorageType StorageType +} + +mplsOutSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value contains a unique index for this row. + While a value of a string containing the single + octet 0x00 is not valid as an index for entries + in this table, it can be supplied as a valid value + to index the mplsXCTable to represent entries for + + + + which no out-segment has been configured or + exists." + ::= { mplsOutSegmentEntry 1 } + +mplsOutSegmentInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value must contain the interface index of the + outgoing interface. This object cannot be modified + if mplsOutSegmentRowStatus is active(1). The + mplsOutSegmentRowStatus cannot be set to active(1) + until this object is set to a value corresponding to + a valid ifEntry." + ::= { mplsOutSegmentEntry 2 } + +mplsOutSegmentPushTopLabel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates whether or not a top label + should be pushed onto the outgoing packet's label + stack. The value of this variable MUST be set to + true(1) if the outgoing interface does not support + pop-and-go (and no label stack remains). For example, + on ATM interface, or if the segment represents a + tunnel origination. Note that it is considered + an error in the case that mplsOutSegmentPushTopLabel + is set to false, but the cross-connect entry which + refers to this out-segment has a non-zero + mplsLabelStackIndex. The LSR MUST ensure that this + situation does not happen. This object cannot be + modified if mplsOutSegmentRowStatus is active(1)." + DEFVAL { true } + ::= { mplsOutSegmentEntry 3 } + +mplsOutSegmentTopLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsOutSegmentPushTopLabel is true then this + represents the label that should be pushed onto the + top of the outgoing packet's label stack. Otherwise + this value SHOULD be set to 0 by the management + station and MUST be ignored by the agent. This + + + + object cannot be modified if mplsOutSegmentRowStatus + is active(1)." + DEFVAL { 0 } + ::= { mplsOutSegmentEntry 4 } + +mplsOutSegmentTopLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsOutSegmentLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsOutSegmentTopLabel + object SHOULD be set to 0 and ignored. This object + MUST be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsOutSegmentEntry 5 } + +mplsOutSegmentNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the next hop Internet address type. + Only values unknown(0), ipv4(1) or ipv6(2) + have to be supported. + + A value of unknown(0) is allowed only when + the outgoing interface is of type point-to-point. + If any other unsupported values are attempted in a set + operation, the agent MUST return an inconsistentValue + error." + REFERENCE + "See RFC3291." + ::= { mplsOutSegmentEntry 6 } + +mplsOutSegmentNextHopAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internet address of the next hop. The type of + this address is determined by the value of the + mplslOutSegmentNextHopAddrType object. + + This object cannot be modified if + + + + mplsOutSegmentRowStatus is active(1)." + ::= { mplsOutSegmentEntry 7 } + +mplsOutSegmentXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into mplsXCTable which identifies which cross- + connect entry this segment is part of. A value of + the string containing the single octet 0x00 + indicates that this entry is not referred + to by any cross-connect entry. When a cross-connect + entry is created which this out-segment is a part of, + this object MUST be updated by the agent to reflect + the value of mplsXCIndex of that cross-connect + entry." + ::= { mplsOutSegmentEntry 8 } + +mplsOutSegmentOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity which created and is responsible + for managing this segment." + ::= { mplsOutSegmentEntry 9 } + +mplsOutSegmentTrafficParamPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable represents a pointer to the traffic + parameter specification for this out-segment. This + value may point at an entry in the + MplsTunnelResourceEntry in the MPLS-TE-STD-MIB (RFC3812) + + RFC Editor: Please fill in RFC number. + + to indicate which traffic parameter settings for this + segment if it represents an LSP used for a TE tunnel. + + This value may optionally point at an + externally defined traffic parameter specification + table. A value of zeroDotZero indicates best-effort + treatment. By having the same value of this object, + two or more segments can indicate resource sharing + + + + of such things as LSP queue space, etc. + + This object cannot be modified if + mplsOutSegmentRowStatus is active(1). + For entries in this table that + are preserved after a re-boot, the agent MUST ensure + that their integrity be preserved, or this object should + be set to 0.0 if it cannot." + DEFVAL { zeroDotZero } + ::= { mplsOutSegmentEntry 10 } + +mplsOutSegmentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row can be modified + except the mplsOutSegmentRowStatus or + mplsOutSegmentStorageType." + ::= { mplsOutSegmentEntry 11 } + +mplsOutSegmentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that this object's value + remains consistent with the associated mplsXCEntry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsOutSegmentEntry 12 } + +-- End of mplsOutSegmentTable + + +-- out-segment performance table. + +mplsOutSegmentPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistical information about + + + + outgoing segments from an LSR. The counters in this + entry should behave in a manner similar to that of + the interface." + ::= { mplsLsrObjects 8 } + +mplsOutSegmentPerfEntry OBJECT-TYPE + SYNTAX MplsOutSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains statistical + information about one outgoing segment configured in + mplsOutSegmentTable. The object + mplsOutSegmentPerfDiscontinuityTime indicates the + time of the last discontinuity in these objects. " + AUGMENTS { mplsOutSegmentEntry } + ::= { mplsOutSegmentPerfTable 1 } + +MplsOutSegmentPerfEntry ::= SEQUENCE { + mplsOutSegmentPerfOctets Counter32, + mplsOutSegmentPerfPackets Counter32, + mplsOutSegmentPerfErrors Counter32, + mplsOutSegmentPerfDiscards Counter32, + + -- HC counter + mplsOutSegmentPerfHCOctets Counter64, + + mplsOutSegmentPerfDiscontinuityTime TimeStamp + } + +mplsOutSegmentPerfOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the total number of octets sent + on this segment. It MUST be equal to the least + significant 32 bits of mplsOutSegmentPerfHCOctets + if mplsOutSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsOutSegmentPerfEntry 1 } + +mplsOutSegmentPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the total number of packets sent + + + + on this segment." + ::= { mplsOutSegmentPerfEntry 2 } + +mplsOutSegmentPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that could not be sent due to + errors on this segment." + ::= { mplsOutSegmentPerfEntry 3 } + +mplsOutSegmentPerfDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of labeled packets attempted to be transmitted + on this out-segment, 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 labeled packet could be to free up + buffer space." + ::= { mplsOutSegmentPerfEntry 4 } + +mplsOutSegmentPerfHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of octets sent. This is the 64 bit + version of mplsOutSegmentPerfOctets, + if mplsOutSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsOutSegmentPerfEntry 5 } + +mplsOutSegmentPerfDiscontinuityTime 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 segment's Counter32 + or Counter64 suffered a discontinuity. If no such + discontinuities have occurred since the last re- + initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsOutSegmentPerfEntry 6 } + + + + +-- End of mplsOutSegmentPerfTable. + + +-- Cross-connect table. + +mplsXCIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsXCIndex when creating entries in + the mplsXCTable. A special value of the zero length + string indicates that no more new entries can be created + in the relevant table. Agents not allowing managers + to create entries in this table MUST set this value + to the zero length string." + ::= { mplsLsrObjects 9 } + +mplsXCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsXCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies information for switching + between LSP segments. It supports point-to-point, + point-to-multipoint and multipoint-to-point + connections. mplsLabelStackTable specifies the + label stack information for a cross-connect LSR and + is referred to from mplsXCTable." + ::= { mplsLsrObjects 10 } + +mplsXCEntry OBJECT-TYPE + SYNTAX MplsXCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in this table represents one cross-connect + entry. It is indexed by the following objects: + + - cross-connect index mplsXCIndex that uniquely + identifies a group of cross-connect entries + + - in-segment index, mplsXCInSegmentIndex + + - out-segment index, mplsXCOutSegmentIndex + + + + + LSPs originating at this LSR: + These are represented by using the special + of value of mplsXCInSegmentIndex set to the + string containing a single octet 0x00. In + this case the mplsXCOutSegmentIndex + MUST not be the string containing a single + octet 0x00. + + LSPs terminating at this LSR: + These are represented by using the special value + mplsXCOutSegmentIndex set to the string containing + a single octet 0x00. + + Special labels: + Entries indexed by the strings containing the + reserved MPLS label values as a single octet 0x00 + through 0x0f (inclusive) imply LSPs terminating at + this LSR. Note that situations where LSPs are + terminated with incoming label equal to the string + containing a single octet 0x00 can be distinguished + from LSPs originating at this LSR because the + mplsXCOutSegmentIndex equals the string containing the + single octet 0x00. + + An entry can be created by a network administrator + or by an SNMP agent as instructed by an MPLS + signaling protocol." + INDEX { mplsXCIndex, mplsXCInSegmentIndex, + mplsXCOutSegmentIndex } + ::= { mplsXCTable 1 } + +MplsXCEntry ::= SEQUENCE { + mplsXCIndex MplsIndexType, + mplsXCInSegmentIndex MplsIndexType, + mplsXCOutSegmentIndex MplsIndexType, + mplsXCLspId MplsLSPID, + mplsXCLabelStackIndex MplsIndexType, + mplsXCOwner MplsOwner , + mplsXCRowStatus RowStatus, + mplsXCStorageType StorageType, + mplsXCAdminStatus INTEGER, + mplsXCOperStatus INTEGER + } + +mplsXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Primary index for the conceptual row identifying a + group of cross-connect segments. The string + containing a single octet 0x00 is an invalid index." + ::= { mplsXCEntry 1 } + +mplsXCInSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Incoming label index. + If this object is set to the string containing + a single octet 0x00, this indicates a special + case outlined in the table's description above. + In this case no corresponding mplsInSegmentEntry + shall exist." + ::= { mplsXCEntry 2 } + +mplsXCOutSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of out-segment for LSPs not terminating on + this LSR if not set to the string containing the + single octet 0x00. If the segment identified by this + entry is terminating, then this object MUST be set to + the string containing a single octet 0x00 to indicate + that no corresponding mplsOutSegmentEntry shall + exist." + ::= { mplsXCEntry 3 } + +mplsXCLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the label switched path that + this cross-connect entry belongs to. This object + cannot be modified if mplsXCRowStatus is active(1) + except for this object." + ::= { mplsXCEntry 4 } + +mplsXCLabelStackIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Primary index into mplsLabelStackTable identifying a + stack of labels to be pushed beneath the top label. + Note that the top label identified by the out- + segment ensures that all the components of a + multipoint-to-point connection have the same + outgoing label. A value of the string containing the + single octet 0x00 indicates that no labels are to + be stacked beneath the top label. + This object cannot be modified if mplsXCRowStatus is + active(1)." + ::= { mplsXCEntry 5 } + +mplsXCOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + for managing this cross-connect." + ::= { mplsXCEntry 6 } + +mplsXCRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row except this object + and the mplsXCStorageType can be modified. " + ::= { mplsXCEntry 7 } + +mplsXCStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that the associated in + and out segments also have the same StorageType value + and are restored consistently upon system restart. + This value SHOULD be set to permanent(4) if created + as a result of a static LSP configuration. + + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + + + + DEFVAL { volatile } + ::= { mplsXCEntry 8 } + +mplsXCAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of this segment." + DEFVAL { up } + ::= { mplsXCEntry 9 } + +mplsXCOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3), -- in some test mode + unknown(4), -- status cannot be determined + -- for some reason. + dormant(5), + notPresent(6), -- some component is missing + lowerLayerDown(7) -- down due to the state of + -- lower layer interfaces + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this cross- + connect." + ::= { mplsXCEntry 10 } + +-- End of mplsXCTable + + +-- Label stack table. + +mplsMaxLabelStackDepth OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum stack depth supported by this LSR." +::= { mplsLsrObjects 11 } + + + + +mplsLabelStackIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsLabelStackIndex when creating entries + in the mplsLabelStackTable. The special string + containing the single octet 0x00 + indicates that no more new entries can be created + in the relevant table. Agents not allowing managers + to create entries in this table MUST set this value + to the string containing the single octet 0x00." +::= { mplsLsrObjects 12 } + +mplsLabelStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabelStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the label stack to be pushed + onto a packet, beneath the top label. Entries into + this table are referred to from mplsXCTable." + ::= { mplsLsrObjects 13 } + +mplsLabelStackEntry OBJECT-TYPE + SYNTAX MplsLabelStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one label which is + to be pushed onto an outgoing packet, beneath the + top label. An entry can be created by a network + administrator or by an SNMP agent as instructed by + an MPLS signaling protocol." + INDEX { mplsLabelStackIndex, mplsLabelStackLabelIndex } + ::= { mplsLabelStackTable 1 } + +MplsLabelStackEntry ::= SEQUENCE { + mplsLabelStackIndex MplsIndexType, + mplsLabelStackLabelIndex Unsigned32, + mplsLabelStackLabel MplsLabel, + mplsLabelStackLabelPtr RowPointer, + mplsLabelStackRowStatus RowStatus, + mplsLabelStackStorageType StorageType + } + +mplsLabelStackIndex OBJECT-TYPE + + + + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index for this row identifying a stack of + labels to be pushed on an outgoing packet, beneath + the top label. An index containing the string with + a single octet 0x00 MUST not be used." + ::= { mplsLabelStackEntry 1 } + +mplsLabelStackLabelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index for this row identifying one label + of the stack. Note that an entry with a smaller + mplsLabelStackLabelIndex would refer to a label + higher up the label stack and would be popped at a + downstream LSR before a label represented by a + higher mplsLabelStackLabelIndex at a downstream + LSR." + ::= { mplsLabelStackEntry 2 } + +mplsLabelStackLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The label to pushed." + ::= { mplsLabelStackEntry 3 } + +mplsLabelStackLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsLabelStackLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsLabelStackLabel + object SHOULD be set to 0 and ignored. This object + MUST be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsLabelStackEntry 4 } + +mplsLabelStackRowStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row except this object + and the mplsLabelStackStorageType can be modified." + ::= { mplsLabelStackEntry 5 } + +mplsLabelStackStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. This object cannot be modified if + mplsLabelStackRowStatus is active(1). + No objects are required to be writable for + rows in this table with this object set to + permanent(4). + + The agent MUST ensure that all related entries + in this table retain the same value for this + object. Agents MUST ensure that the storage type + for all entries related to a particular mplsXCEntry + retain the same value for this object as the + mplsXCEntry's StorageType." + DEFVAL { volatile } + ::= { mplsLabelStackEntry 6 } + +-- End of mplsLabelStackTable + +-- Begin mplsInSegmentMapTable + +mplsInSegmentMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the mapping from the + mplsInSegmentIndex to the corresponding + mplsInSegmentInterface and mplsInSegmentLabel + objects. The purpose of this table is to + provide the manager with an alternative + means by which to locate in-segments." + ::= { mplsLsrObjects 14 } + + + + +mplsInSegmentMapEntry OBJECT-TYPE + SYNTAX MplsInSegmentMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one interface + and incoming label pair. + + In cases where the label cannot fit into the + mplsInSegmentLabel object, the mplsInSegmentLabelPtr + will indicate this by being set to the first accessible + column in the appropriate extension table's row, + and the mplsInSegmentLabel SHOULD be set to 0. + In all other cases when the label is + represented within the mplsInSegmentLabel object, the + mplsInSegmentLabelPtr MUST be 0.0. + + Implementors need to be aware that if the value of + the mplsInSegmentMapLabelPtrIndex (an OID) has more + that 111 sub-identifiers, then OIDs of column + instances in this table will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { mplsInSegmentMapInterface, + mplsInSegmentMapLabel, + mplsInSegmentMapLabelPtrIndex } + ::= { mplsInSegmentMapTable 1 } + +MplsInSegmentMapEntry ::= SEQUENCE { + mplsInSegmentMapInterface InterfaceIndexOrZero, + mplsInSegmentMapLabel MplsLabel, + mplsInSegmentMapLabelPtrIndex RowPointer, + mplsInSegmentMapIndex MplsIndexType + } + +mplsInSegmentMapInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index contains the same value as the + mplsInSegmentIndex in the mplsInSegmentTable." + ::= { mplsInSegmentMapEntry 1 } + +mplsInSegmentMapLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This index contains the same value as the + mplsInSegmentLabel in the mplsInSegmentTable." + ::= { mplsInSegmentMapEntry 2 } + +mplsInSegmentMapLabelPtrIndex OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index contains the same value as the + mplsInSegmentLabelPtr. + + If the label for the InSegment cannot be represented + fully within the mplsInSegmentLabel object, + this index MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsInSegmentTopLabel + object SHOULD be set to 0 and ignored. This object MUST + be set to zeroDotZero otherwise." + ::= { mplsInSegmentMapEntry 3 } + +mplsInSegmentMapIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mplsInSegmentIndex that corresponds + to the mplsInSegmentInterface and + mplsInSegmentLabel, or the mplsInSegmentInterface + and mplsInSegmentLabelPtr, if applicable. + The string containing the single octet 0x00 + MUST not be returned." + ::= { mplsInSegmentMapEntry 4 } + +-- End mplsInSegmentMapTable + + +-- Notification Configuration + +mplsXCNotificationsEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is set to true(1), then it enables + the emission of mplsXCUp and mplsXCDown + notifications; otherwise these notifications are not + + + + emitted." + REFERENCE + "See also RFC3413 for explanation that + notifications are under the ultimate control of the + MIB module in this document." + DEFVAL { false } + ::= { mplsLsrObjects 15 } + +-- Cross-connect. + +mplsXCUp NOTIFICATION-TYPE + OBJECTS { mplsXCOperStatus, -- start of range + mplsXCOperStatus -- end of range + } + STATUS current + DESCRIPTION + "This notification is generated when the + mplsXCOperStatus object for one or more contiguous + entries in mplsXCTable are about to enter the up(1) + state from some other state. The included values of + mplsXCOperStatus MUST both be set equal to this + new state (i.e: up(1)). The two instances of + mplsXCOperStatus in this notification indicate the range + of indexes that are affected. Note that all the indexes + of the two ends of the range can be derived from the + instance identifiers of these two objects. For + cases where a contiguous range of cross-connects + have transitioned into the up(1) state at roughly + the same time, the device SHOULD issue a single + notification for each range of contiguous indexes in + an effort to minimize the emission of a large number + of notifications. If a notification has to be + issued for just a single cross-connect entry, then + the instance identifier (and values) of the two + mplsXCOperStatus objects MUST be the identical." + ::= { mplsLsrNotifications 1 } + +mplsXCDown NOTIFICATION-TYPE + OBJECTS { + mplsXCOperStatus, -- start of range + mplsXCOperStatus -- end of range + } + STATUS current + DESCRIPTION + "This notification is generated when the + mplsXCOperStatus object for one or more contiguous + entries in mplsXCTable are about to enter the + down(2) state from some other state. The included values + + + + of mplsXCOperStatus MUST both be set equal to this + down(2) state. The two instances of mplsXCOperStatus + in this notification indicate the range of indexes + that are affected. Note that all the indexes of the + two ends of the range can be derived from the + instance identifiers of these two objects. For + cases where a contiguous range of cross-connects + have transitioned into the down(2) state at roughly + the same time, the device SHOULD issue a single + notification for each range of contiguous indexes in + an effort to minimize the emission of a large number + of notifications. If a notification has to be + issued for just a single cross-connect entry, then + the instance identifier (and values) of the two + mplsXCOperStatus objects MUST be identical." + ::= { mplsLsrNotifications 2 } + +-- End of notifications. + + +-- Module compliance. + +mplsLsrGroups + OBJECT IDENTIFIER ::= { mplsLsrConformance 1 } + +mplsLsrCompliances + OBJECT IDENTIFIER ::= { mplsLsrConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +mplsLsrModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance statement for agents that provide full + support for MPLS-LSR-STD-MIB. Such devices can + then be monitored and also be configured using + this MIB module." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module. + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + + + + mplsXCGroup, + mplsPerfGroup + } + + GROUP mplsLabelStackGroup + DESCRIPTION "This group is only mandatory for LSRs that wish to + support the modification of LSP label stacks. + " + + GROUP mplsHCInSegmentPerfGroup + DESCRIPTION "This group is mandatory for those in-segment entries + for which the object mplsInSegmentOutOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsHCOutSegmentPerfGroup + DESCRIPTION "This group is mandatory for those out-segment entries + for which the object mplsOutSegmentPerfOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsLsrNotificationGroup + DESCRIPTION "This group is only mandatory for those implementations + which can efficiently implement the notifications + contained in this group." + + OBJECT mplsInSegmentRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + OBJECT mplsOutSegmentNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION "Only unknown(0), ipv4(1) and ipv6(2) support + is required." + + OBJECT mplsOutSegmentNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1) and ipv6(2) sizes." + + OBJECT mplsOutSegmentRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + + + + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsLabelStackRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsXCRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + ::= { mplsLsrCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance requirement for implementations that only + provide read-only support for MPLS-LSR-STD-MIB. Such + devices can then be monitored but cannot be configured + using this MIB module. + " + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup + } + + + + GROUP mplsLabelStackGroup + DESCRIPTION "This group is only mandatory for LSRs that wish to + support the modification of LSP label stacks. + " + + GROUP mplsHCInSegmentPerfGroup + DESCRIPTION "This group is mandatory for those in-segment entries + for which the object mplsInSegmentOutOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsHCOutSegmentPerfGroup + DESCRIPTION "This group is mandatory for those out-segment entries + for which the object mplsOutSegmentPerfOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsLsrNotificationGroup + DESCRIPTION "This group is only mandatory for those implementations + which can efficiently implement the notifications + contained in this group. + " + + -- mplsInSegmentTable + OBJECT mplsInSegmentLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentNPop + SYNTAX Integer32 (1..1) + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. This object + SHOULD be set to 1 if it is read-only. + " + + OBJECT mplsInSegmentAddrFamily + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. A value of other(0) + should be supported because there may be cases where + the agent may not know about or support any address + types. + " + + + + OBJECT mplsInSegmentRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsOutSegmentTable + OBJECT mplsOutSegmentInterface + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentPushTopLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentTopLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentTopLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. Only unknown(0), + ipv4(1) and ipv6(2) support is required. + " + + OBJECT mplsOutSegmentNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. An implementation is + only required to support unknown(0), ipv4(1) and + ipv6(2) sizes." + + OBJECT mplsOutSegmentRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + -- mplsXCTable + OBJECT mplsXCLabelStackIndex + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsXCAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Read only support is required." + + OBJECT mplsXCRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsXCStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { mplsLsrCompliances 2 } + +-- Units of conformance. + +mplsInterfaceGroup OBJECT-GROUP + OBJECTS { + mplsInterfaceLabelMinIn, + mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, + mplsInterfaceLabelMaxOut, + mplsInterfaceTotalBandwidth, + mplsInterfaceAvailableBandwidth, + mplsInterfaceLabelParticipationType + } + + + + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS interface + and interface performance information." + ::= { mplsLsrGroups 1 } + +mplsInSegmentGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentIndexNext, + mplsInSegmentInterface, + mplsInSegmentLabel, + mplsInSegmentLabelPtr, + mplsInSegmentNPop, + mplsInSegmentAddrFamily, + mplsInSegmentXCIndex, + mplsInSegmentOwner, + mplsInSegmentRowStatus, + mplsInSegmentStorageType, + mplsInSegmentTrafficParamPtr, + mplsInSegmentMapIndex + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement an in- + segment." + ::= { mplsLsrGroups 2 } + +mplsOutSegmentGroup OBJECT-GROUP + OBJECTS { + mplsOutSegmentIndexNext, + mplsOutSegmentInterface, + mplsOutSegmentPushTopLabel, + mplsOutSegmentTopLabel, + mplsOutSegmentTopLabelPtr, + mplsOutSegmentNextHopAddrType, + mplsOutSegmentNextHopAddr, + mplsOutSegmentXCIndex, + mplsOutSegmentOwner, + mplsOutSegmentPerfOctets, + mplsOutSegmentPerfDiscards, + mplsOutSegmentPerfErrors, + mplsOutSegmentRowStatus, + mplsOutSegmentStorageType, + mplsOutSegmentTrafficParamPtr + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement an out- + + + + segment." + ::= { mplsLsrGroups 3 } + +mplsXCGroup OBJECT-GROUP + OBJECTS { + mplsXCIndexNext, + mplsXCLspId, + mplsXCLabelStackIndex, + mplsXCOwner, + mplsXCStorageType, + mplsXCAdminStatus, + mplsXCOperStatus, + mplsXCRowStatus, + mplsXCNotificationsEnable + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement a + cross-connect entry." + ::= { mplsLsrGroups 4 } + +mplsPerfGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentPerfOctets, + mplsInSegmentPerfPackets, + mplsInSegmentPerfErrors, + mplsInSegmentPerfDiscards, + mplsInSegmentPerfDiscontinuityTime, + mplsOutSegmentPerfOctets, + mplsOutSegmentPerfPackets, + mplsOutSegmentPerfDiscards, + mplsOutSegmentPerfDiscontinuityTime, + mplsInterfacePerfInLabelsInUse, + mplsInterfacePerfInLabelLookupFailures, + mplsInterfacePerfOutFragmentedPkts, + mplsInterfacePerfOutLabelsInUse + } + + STATUS current + DESCRIPTION + "Collection of objects providing performance + information + about an LSR." + ::= { mplsLsrGroups 5 } + +mplsHCInSegmentPerfGroup OBJECT-GROUP + OBJECTS { mplsInSegmentPerfHCOctets } + STATUS current + + + + DESCRIPTION + "Object(s) providing performance information + specific to out-segments for which the object + mplsInterfaceInOctets wraps around too quickly." + ::= { mplsLsrGroups 6 } + +mplsHCOutSegmentPerfGroup OBJECT-GROUP + OBJECTS { mplsOutSegmentPerfHCOctets } + STATUS current + DESCRIPTION + "Object(s) providing performance information + specific to out-segments for which the object + mplsInterfaceOutOctets wraps around too + quickly." + ::= { mplsLsrGroups 7 } + +mplsLabelStackGroup OBJECT-GROUP + OBJECTS { + mplsLabelStackLabel, + mplsLabelStackLabelPtr, + mplsLabelStackRowStatus, + mplsLabelStackStorageType, + mplsMaxLabelStackDepth, + mplsLabelStackIndexNext + } + STATUS current + DESCRIPTION + "Objects needed to support label stacking." + ::= { mplsLsrGroups 8 } + +mplsLsrNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mplsXCUp, + mplsXCDown + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this + module." + ::= { mplsLsrGroups 9 } +END diff --git a/mibs/ietf/MPLS-TC-STD-MIB b/mibs/ietf/MPLS-TC-STD-MIB new file mode 100644 index 0000000..16ce449 --- /dev/null +++ b/mibs/ietf/MPLS-TC-STD-MIB @@ -0,0 +1,670 @@ +MPLS-TC-STD-MIB DEFINITIONS ::= BEGIN + + IMPORTS + + MODULE-IDENTITY, + Unsigned32, Integer32, + transmission FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + mplsTCStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION + "IETF Multiprotocol Label Switching (MPLS) Working + Group." + CONTACT-INFO + " Thomas D. Nadeau + + + + Cisco Systems, Inc. + tnadeau@cisco.com + + Joan Cucchiara + Marconi Communications, Inc. + jcucchiara@mindspring.com + + Cheenu Srinivasan + Bloomberg L.P. + cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + arunv@force10networks.com + + Hans Sjostrand + ipUnplugged + hans@ipunplugged.com + + Kireeti Kompella + Juniper Networks + kireeti@juniper.net + + Email comments to the MPLS WG Mailing List at + mpls@uu.net." + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3811. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB module defines TEXTUAL-CONVENTIONs + for concepts used in Multiprotocol Label + Switching (MPLS) networks." + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3811." + + ::= { mplsStdMIB 1 } + + mplsStdMIB OBJECT IDENTIFIER + + ::= { transmission 166 } + + MplsAtmVcIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "A Label Switching Router (LSR) that + creates LDP sessions on ATM interfaces + uses the VCI or VPI/VCI field to hold the + LDP Label. + + VCI values MUST NOT be in the 0-31 range. + The values 0 to 31 are reserved for other uses + by the ITU and ATM Forum. The value + of 32 can only be used for the Control VC, + although values greater than 32 could be + configured for the Control VC. + + If a value from 0 to 31 is used for a VCI + the management entity controlling the LDP + subsystem should reject this with an + inconsistentValue error. Also, if + the value of 32 is used for a VC which is + NOT the Control VC, this should + result in an inconsistentValue error." + REFERENCE + "MPLS using LDP and ATM VC Switching, RFC3035." + SYNTAX Integer32 (32..65535) + + MplsBitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "If the value of this object is greater than zero, + then this represents the bandwidth of this MPLS + interface (or Label Switched Path) in units of + '1,000 bits per second'. + + The value, when greater than zero, represents the + bandwidth of this MPLS interface (rounded to the + nearest 1,000) in units of 1,000 bits per second. + If the bandwidth of the MPLS interface is between + ((n * 1000) - 500) and ((n * 1000) + 499), the value + of this object is n, such that n > 0. + + If the value of this object is 0 (zero), this + means that the traffic over this MPLS interface is + considered to be best effort." + SYNTAX Unsigned32 (0|1..4294967295) + + MplsBurstSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "The number of octets of MPLS data that the stream + may send back-to-back without concern for policing. + The value of zero indicates that an implementation + does not support Burst Size." + SYNTAX Unsigned32 (0..4294967295) + + MplsExtendedTunnelId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier for an MPLS Tunnel. This may + represent an IPv4 address of the ingress or egress + LSR for the tunnel. This value is derived from the + Extended Tunnel Id in RSVP or the Ingress Router ID + for CR-LDP." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + [RFC3209]. + + Constraint-Based LSP Setup using LDP, [RFC3212]." + SYNTAX Unsigned32(0..4294967295) + + MplsLabel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This value represents an MPLS label as defined in + [RFC3031], [RFC3032], [RFC3034], [RFC3035] and + [RFC3471]. + + The label contents are specific to the label being + represented, such as: + + * The label carried in an MPLS shim header + (for LDP this is the Generic Label) is a 20-bit + number represented by 4 octets. Bits 0-19 contain + a label or a reserved label value. Bits 20-31 + MUST be zero. + + The following is quoted directly from [RFC3032]. + There are several reserved label values: + + i. A value of 0 represents the + 'IPv4 Explicit NULL Label'. This label + value is only legal at the bottom of the + label stack. It indicates that the label + stack must be popped, and the forwarding + of the packet must then be based on the + + + + IPv4 header. + + ii. A value of 1 represents the + 'Router Alert Label'. This label value is + legal anywhere in the label stack except at + the bottom. When a received packet + contains this label value at the top of + the label stack, it is delivered to a + local software module for processing. + The actual forwarding of the packet + is determined by the label beneath it + in the stack. However, if the packet is + forwarded further, the Router Alert Label + should be pushed back onto the label stack + before forwarding. The use of this label + is analogous to the use of the + 'Router Alert Option' in IP packets + [RFC2113]. Since this label + cannot occur at the bottom of the stack, + it is not associated with a + particular network layer protocol. + + iii. A value of 2 represents the + 'IPv6 Explicit NULL Label'. This label + value is only legal at the bottom of the + label stack. It indicates that the label + stack must be popped, and the forwarding + of the packet must then be based on the + IPv6 header. + + iv. A value of 3 represents the + 'Implicit NULL Label'. + This is a label that an LSR may assign and + distribute, but which never actually + appears in the encapsulation. When an + LSR would otherwise replace the label + at the top of the stack with a new label, + but the new label is 'Implicit NULL', + the LSR will pop the stack instead of + doing the replacement. Although + this value may never appear in the + encapsulation, it needs to be specified in + the Label Distribution Protocol, so a value + is reserved. + + v. Values 4-15 are reserved. + + * The frame relay label can be either 10-bits or + + + + 23-bits depending on the DLCI field size and the + upper 22-bits or upper 9-bits must be zero, + respectively. + + * For an ATM label the lower 16-bits represents the + VCI, the next 12-bits represents the VPI and the + remaining bits MUST be zero. + + * The Generalized-MPLS (GMPLS) label contains a + value greater than 2^24-1 and used in GMPLS + as defined in [RFC3471]." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + MPLS Label Stack Encoding, [RFC3032]. + + Use of Label Switching on Frame Relay Networks, + RFC3034. + + MPLS using LDP and ATM VC Switching, RFC3035. + Generalized Multiprotocol Label Switching + (GMPLS) Architecture, [RFC3471]." + SYNTAX Unsigned32 (0..4294967295) + + MplsLabelDistributionMethod ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label distribution method which is also called + the label advertisement mode [RFC3036]. + Each interface on an LSR is configured to operate + in either Downstream Unsolicited or Downstream + on Demand." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + LDP Specification, RFC3036, Section 2.6.3." + SYNTAX INTEGER { + downstreamOnDemand(1), + downstreamUnsolicited(2) + } + + MplsLdpIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d:2d" + STATUS current + DESCRIPTION + "The LDP identifier is a six octet + + + + quantity which is used to identify a + Label Switching Router (LSR) label space. + + The first four octets identify the LSR and + must be a globally unique value, such as a + 32-bit router ID assigned to the LSR, and the + last two octets identify a specific label + space within the LSR." + SYNTAX OCTET STRING (SIZE (6)) + + MplsLsrIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Label Switching Router (LSR) identifier is the + first 4 bytes of the Label Distribution Protocol + (LDP) identifier." + SYNTAX OCTET STRING (SIZE (4)) + MplsLdpLabelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Layer 2 label types which are defined for MPLS + LDP and/or CR-LDP are generic(1), atm(2), or + frameRelay(3)." + SYNTAX INTEGER { + generic(1), + atm(2), + frameRelay(3) + } + + MplsLSPID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier within an MPLS network that is + assigned to each LSP. This is assigned at the head + end of the LSP and can be used by all LSRs + to identify this LSP. This value is piggybacked by + the signaling protocol when this LSP is signaled + within the network. This identifier can then be + used at each LSR to identify which labels are + being swapped to other labels for this LSP. This + object can also be used to disambiguate LSPs that + share the same RSVP sessions between the same + source and destination. + + For LSPs established using CR-LDP, the LSPID is + composed of the ingress LSR Router ID (or any of + its own IPv4 addresses) and a locally unique + CR-LSP ID to that LSR. The first two bytes carry + + + + the CR-LSPID, and the remaining 4 bytes carry + the Router ID. The LSPID is useful in network + management, in CR-LSP repair, and in using + an already established CR-LSP as a hop in + an ER-TLV. + + For LSPs signaled using RSVP-TE, the LSP ID is + defined as a 16-bit (2 byte) identifier used + in the SENDER_TEMPLATE and the FILTER_SPEC + that can be changed to allow a sender to + share resources with itself. The length of this + object should only be 2 or 6 bytes. If the length + of this octet string is 2 bytes, then it must + identify an RSVP-TE LSPID, or it is 6 bytes, + it must contain a CR-LDP LSPID." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + [RFC3209]. + + Constraint-Based LSP Setup using LDP, + [RFC3212]." + SYNTAX OCTET STRING (SIZE (2|6)) + + MplsLspType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Types of Label Switch Paths (LSPs) + on a Label Switching Router (LSR) or a + Label Edge Router (LER) are: + + unknown(1) -- if the LSP is not known + to be one of the following. + + terminatingLsp(2) -- if the LSP terminates + on the LSR/LER, then this + is an egressing LSP + which ends on the LSR/LER, + + originatingLsp(3) -- if the LSP originates + from this LSR/LER, then + this is an ingressing LSP + which is the head-end of + the LSP, + + crossConnectingLsp(4) -- if the LSP ingresses + and egresses on the LSR, + then it is + cross-connecting on that + + + + LSR." + SYNTAX INTEGER { + unknown(1), + terminatingLsp(2), + originatingLsp(3), + crossConnectingLsp(4) + } + + MplsOwner ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This object indicates the local network + management subsystem that originally created + the object(s) in question. The values of + this enumeration are defined as follows: + + unknown(1) - the local network management + subsystem cannot discern which + component created the object. + + other(2) - the local network management + subsystem is able to discern which component + created the object, but the component is not + listed within the following choices, + e.g., command line interface (cli). + + snmp(3) - The Simple Network Management Protocol + was used to configure this object initially. + + ldp(4) - The Label Distribution Protocol was + used to configure this object initially. + + crldp(5) - The Constraint-Based Label Distribution + Protocol was used to configure this object + initially. + + rsvpTe(6) - The Resource Reservation Protocol was + used to configure this object initially. + + policyAgent(7) - A policy agent (perhaps in + combination with one of the above protocols) was + used to configure this object initially. + + An object created by any of the above choices + MAY be modified or destroyed by the same or a + different choice." + SYNTAX INTEGER { + unknown(1), + + + + other(2), + snmp(3), + ldp(4), + crldp(5), + rsvpTe(6), + policyAgent(7) + } + + MplsPathIndexOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier used to identify a specific + path used by a tunnel. A value of 0 (zero) means + that no path is in use." + SYNTAX Unsigned32(0..4294967295) + + MplsPathIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique value to index (by Path number) an + entry in a table." + SYNTAX Unsigned32(1..4294967295) + + MplsRetentionMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label retention mode which specifies whether + an LSR maintains a label binding for a FEC + learned from a neighbor that is not its next hop + for the FEC. + + If the value is conservative(1) then advertised + label mappings are retained only if they will be + used to forward packets, i.e., if label came from + a valid next hop. + + If the value is liberal(2) then all advertised + label mappings are retained whether they are from + a valid next hop or not." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + LDP Specification, RFC3036, Section 2.6.2." + SYNTAX INTEGER { + conservative(1), + liberal(2) + } + + + + MplsTunnelAffinity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Describes the configured 32-bit Include-any, + include-all, or exclude-all constraint for + constraint-based link selection." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + RFC3209, Section 4.7.4." + SYNTAX Unsigned32(0..4294967295) + + MplsTunnelIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique index into mplsTunnelTable. + For tunnels signaled using RSVP, this value + should correspond to the RSVP Tunnel ID + used for the RSVP-TE session." + SYNTAX Unsigned32 (0..65535) + + MplsTunnelInstanceIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The tunnel entry with instance index 0 + should refer to the configured tunnel + interface (if one exists). + + Values greater than 0, but less than or + equal to 65535, should be used to indicate + signaled (or backup) tunnel LSP instances. + For tunnel LSPs signaled using RSVP, + this value should correspond to the + RSVP LSP ID used for the RSVP-TE + LSP. + + Values greater than 65535 apply to FRR + detour instances." + SYNTAX Unsigned32(0|1..65535|65536..4294967295) + + TeHopAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of address for a + Traffic Engineered (TE) Tunnel hop. + + unknown(0) An unknown address type. This value + MUST be used if the value of the + corresponding TeHopAddress object is a + + + + zero-length string. It may also be + used to indicate a TeHopAddress which + is not in one of the formats defined + below. + + ipv4(1) An IPv4 network address as defined by + the InetAddressIPv4 TEXTUAL-CONVENTION + [RFC3291]. + + ipv6(2) A global IPv6 address as defined by + the InetAddressIPv6 TEXTUAL-CONVENTION + [RFC3291]. + + asnumber(3) An Autonomous System (AS) number as + defined by the TeHopAddressAS + TEXTUAL-CONVENTION. + + unnum(4) An unnumbered interface index as + defined by the TeHopAddressUnnum + TEXTUAL-CONVENTION. + + lspid(5) An LSP ID for TE Tunnels + (RFC3212) as defined by the + MplsLSPID TEXTUAL-CONVENTION. + + Each definition of a concrete TeHopAddressType + value must be accompanied by a definition + of a TEXTUAL-CONVENTION for use with that + TeHopAddress. + + To support future extensions, the TeHopAddressType + TEXTUAL-CONVENTION SHOULD NOT be sub-typed in + object type definitions. It MAY be sub-typed in + compliance statements in order to require only a + subset of these address types for a compliant + implementation. + + Implementations must ensure that TeHopAddressType + objects and any dependent objects + (e.g., TeHopAddress objects) are consistent. + An inconsistentValue error must be generated + if an attempt to change a TeHopAddressType + object would, for example, lead to an + undefined TeHopAddress value that is + not defined herein. In particular, + TeHopAddressType/TeHopAddress pairs + must be changed together if the address + type changes (e.g., from ipv6(2) to ipv4(1))." + + + + REFERENCE + "TEXTUAL-CONVENTIONs for Internet Network + Addresses, RFC3291. + + Constraint-Based LSP Setup using LDP, + [RFC3212]" + + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2), + asnumber(3), + unnum(4), + lspid(5) + } + + TeHopAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Tunnel hop address, + that is, the address of a node which + an LSP traverses, including the source + and destination nodes. An address may be + very concrete, for example, an IPv4 host + address (i.e., with prefix length 32); + if this IPv4 address is an interface + address, then that particular interface + must be traversed. An address may also + specify an 'abstract node', for example, + an IPv4 address with prefix length + less than 32, in which case, the LSP + can traverse any node whose address + falls in that range. An address may + also specify an Autonomous System (AS), + in which case the LSP can traverse any + node that falls within that AS. + + A TeHopAddress value is always interpreted within + the context of an TeHopAddressType value. Every + usage of the TeHopAddress TEXTUAL-CONVENTION + is required to specify the TeHopAddressType object + which provides the context. It is suggested that + the TeHopAddressType object is logically registered + before the object(s) which use the TeHopAddress + TEXTUAL-CONVENTION if they appear in the + same logical row. + + The value of a TeHopAddress object must always be + + + + consistent with the value of the associated + TeHopAddressType object. Attempts to set a + TeHopAddress object to a value which is + inconsistent with the associated TeHopAddressType + must fail with an inconsistentValue error." + SYNTAX OCTET STRING (SIZE (0..32)) + + TeHopAddressAS ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a two or four octet AS number. + The AS number is represented in network byte + order (MSB first). A two-octet AS number has + the two MSB octets set to zero." + REFERENCE + "Textual Conventions for Internet Network + Addresses, [RFC3291]. The + InetAutonomousSystemsNumber TEXTUAL-CONVENTION + has a SYNTAX of Unsigned32, whereas this TC + has a SYNTAX of OCTET STRING (SIZE (4)). + Both TCs represent an autonomous system number + but use different syntaxes to do so." + SYNTAX OCTET STRING (SIZE (4)) + + TeHopAddressUnnum ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents an unnumbered interface: + + octets contents encoding + 1-4 unnumbered interface network-byte order + + The corresponding TeHopAddressType value is + unnum(5)." + SYNTAX OCTET STRING(SIZE(4)) + +END diff --git a/mibs/ietf/MPLS-TE-STD-MIB b/mibs/ietf/MPLS-TE-STD-MIB new file mode 100644 index 0000000..15694f1 --- /dev/null +++ b/mibs/ietf/MPLS-TE-STD-MIB @@ -0,0 +1,2631 @@ +MPLS-TE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Counter32, Counter64, TimeTicks, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TruthValue, RowStatus, RowPointer, StorageType, + TimeStamp + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndexOrZero, ifGeneralInformationGroup, + + + + ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + mplsStdMIB, MplsBitRate, MplsBurstSize, MplsLSPID, + MplsTunnelIndex, MplsTunnelInstanceIndex, + MplsTunnelAffinity, MplsExtendedTunnelId, MplsPathIndex, + MplsPathIndexOrZero, MplsOwner, TeHopAddressType, + TeHopAddress, TeHopAddressAS, TeHopAddressUnnum + FROM MPLS-TC-STD-MIB -- [RFC3811] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + IndexIntegerNextFree + FROM DIFFSERV-MIB -- [RFC3289] + InetAddressPrefixLength + FROM INET-ADDRESS-MIB -- [RFC3291] + ; + +mplsTeStdMIB MODULE-IDENTITY + LAST-UPDATED + "200406030000Z" -- June 3, 2004 + ORGANIZATION + "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Cheenu Srinivasan + Bloomberg L.P. + Email: cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + Email: arunv@force10networks.com + + Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Comments about this document should be emailed + directly to the MPLS working group mailing list at + mpls@uu.net." + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3812. For full legal notices see the RFC + itself or see: http://www.ietf.org/copyrights/ianamib.html + + This MIB module contains managed object definitions + for MPLS Traffic Engineering (TE) as defined in: + 1. Extensions to RSVP for LSP Tunnels, Awduche et + al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + + + + (Editor), RFC 3212, January 2002 + 3. Requirements for Traffic Engineering Over MPLS, + Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., + and J. McManus, [RFC2702], September 1999" + + -- Revision history. + + REVISION + "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version issued as part of RFC 3812." + + ::= { mplsStdMIB 3 } + +-- Top level components of this MIB module. + +-- traps +mplsTeNotifications OBJECT IDENTIFIER ::= { mplsTeStdMIB 0 } +-- tables, scalars +mplsTeScalars OBJECT IDENTIFIER ::= { mplsTeStdMIB 1 } +mplsTeObjects OBJECT IDENTIFIER ::= { mplsTeStdMIB 2 } +-- conformance +mplsTeConformance OBJECT IDENTIFIER ::= { mplsTeStdMIB 3 } + + +-- MPLS Tunnel scalars. + +mplsTunnelConfigured OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of tunnels configured on this device. A + tunnel is considered configured if the + mplsTunnelRowStatus is active(1)." + ::= { mplsTeScalars 1 } + +mplsTunnelActive OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of tunnels active on this device. A + tunnel is considered active if the + mplsTunnelOperStatus is up(1)." + ::= { mplsTeScalars 2 } + +mplsTunnelTEDistProto OBJECT-TYPE + + + + SYNTAX BITS { + other (0), + ospf (1), + isis (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The traffic engineering distribution protocol(s) + used by this LSR. Note that an LSR may support more + than one distribution protocol simultaneously." + ::= { mplsTeScalars 3 } + +mplsTunnelMaxHops OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of hops that can be specified for + a tunnel on this device." + ::= { mplsTeScalars 4 } + +mplsTunnelNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the maximum number of + notifications issued per second. If events occur + more rapidly, the implementation may simply fail to + emit these notifications during that period, or may + queue them until an appropriate time. A value of 0 + means no throttling is applied and events may be + notified at the rate at which they occur." + DEFVAL { 0 } + ::= { mplsTeScalars 5 } + +-- End of MPLS Tunnel scalars. + + +-- MPLS tunnel table. + +mplsTunnelIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + + + + mplsTunnelIndex, or a zero to indicate + that none exist. Negative values are not allowed, + as they do not correspond to valid values of + mplsTunnelIndex. + + Note that this object offers an unused value + for an mplsTunnelIndex value at the ingress + side of a tunnel. At other LSRs the value + of mplsTunnelIndex SHOULD be taken from the + value signaled by the MPLS signaling protocol. + " + ::= { mplsTeObjects 1 } + +mplsTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelTable allows new MPLS tunnels to be + created between an LSR and a remote endpoint, and + existing tunnels to be reconfigured or removed. + Note that only point-to-point tunnel segments are + supported, although multipoint-to-point and point- + to-multipoint connections are supported by an LSR + acting as a cross-connect. Each MPLS tunnel can + thus have one out-segment originating at this LSR + and/or one in-segment terminating at this LSR." + ::= { mplsTeObjects 2 } + +mplsTunnelEntry OBJECT-TYPE + SYNTAX MplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents an MPLS tunnel. + An entry can be created by a network administrator + or by an SNMP agent as instructed by an MPLS + signalling protocol. Whenever a new entry is + created with mplsTunnelIsIf set to true(1), then a + corresponding entry is created in ifTable as well + (see RFC 2863). The ifType of this entry is + mplsTunnel(150). + + A tunnel entry needs to be uniquely identified across + a MPLS network. Indices mplsTunnelIndex and + mplsTunnelInstance uniquely identify a tunnel on + the LSR originating the tunnel. To uniquely + identify a tunnel across an MPLS network requires + + + + index mplsTunnelIngressLSRId. The last index + mplsTunnelEgressLSRId is useful in identifying all + instances of a tunnel that terminate on the same + egress LSR." + REFERENCE + "1. RFC 2863 - The Interfaces Group MIB, McCloghrie, + K., and F. Kastenholtz, June 2000 " + INDEX { mplsTunnelIndex, + mplsTunnelInstance, + mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId + } + ::= { mplsTunnelTable 1 } + +MplsTunnelEntry ::= SEQUENCE { + mplsTunnelIndex MplsTunnelIndex, + mplsTunnelInstance MplsTunnelInstanceIndex, + mplsTunnelIngressLSRId MplsExtendedTunnelId, + mplsTunnelEgressLSRId MplsExtendedTunnelId, + mplsTunnelName SnmpAdminString, + mplsTunnelDescr SnmpAdminString, + mplsTunnelIsIf TruthValue, + mplsTunnelIfIndex InterfaceIndexOrZero, + mplsTunnelOwner MplsOwner, + mplsTunnelRole INTEGER, + mplsTunnelXCPointer RowPointer, + mplsTunnelSignallingProto INTEGER, + mplsTunnelSetupPrio Integer32, + mplsTunnelHoldingPrio Integer32, + mplsTunnelSessionAttributes BITS, + mplsTunnelLocalProtectInUse TruthValue, + mplsTunnelResourcePointer RowPointer, + mplsTunnelPrimaryInstance MplsTunnelInstanceIndex, + mplsTunnelInstancePriority Unsigned32, + mplsTunnelHopTableIndex MplsPathIndexOrZero, + mplsTunnelPathInUse MplsPathIndexOrZero, + mplsTunnelARHopTableIndex MplsPathIndexOrZero, + mplsTunnelCHopTableIndex MplsPathIndexOrZero, + mplsTunnelIncludeAnyAffinity MplsTunnelAffinity, + mplsTunnelIncludeAllAffinity MplsTunnelAffinity, + mplsTunnelExcludeAnyAffinity MplsTunnelAffinity, + mplsTunnelTotalUpTime TimeTicks, + mplsTunnelInstanceUpTime TimeTicks, + mplsTunnelPrimaryUpTime TimeTicks, + mplsTunnelPathChanges Counter32, + mplsTunnelLastPathChange TimeTicks, + mplsTunnelCreationTime TimeStamp, + mplsTunnelStateTransitions Counter32, + + + + mplsTunnelAdminStatus INTEGER, + mplsTunnelOperStatus INTEGER, + mplsTunnelRowStatus RowStatus, + mplsTunnelStorageType StorageType + } + +mplsTunnelIndex OBJECT-TYPE + SYNTAX MplsTunnelIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a set of tunnel instances + between a pair of ingress and egress LSRs. + Managers should obtain new values for row + creation in this table by reading + mplsTunnelIndexNext. When + the MPLS signalling protocol is rsvp(2) this value + SHOULD be equal to the value signaled in the + Tunnel Id of the Session object. When the MPLS + signalling protocol is crldp(3) this value + SHOULD be equal to the value signaled in the + LSP ID." + ::= { mplsTunnelEntry 1 } + +mplsTunnelInstance OBJECT-TYPE + SYNTAX MplsTunnelInstanceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a particular instance of a + tunnel between a pair of ingress and egress LSRs. + It is useful to identify multiple instances of + tunnels for the purposes of backup and parallel + tunnels. When the MPLS signaling protocol is + rsvp(2) this value SHOULD be equal to the LSP Id + of the Sender Template object. When the signaling + protocol is crldp(3) there is no equivalent + signaling object." + ::= { mplsTunnelEntry 2 } + +mplsTunnelIngressLSRId OBJECT-TYPE + SYNTAX MplsExtendedTunnelId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identity of the ingress LSR associated with this + tunnel instance. When the MPLS signalling protocol + is rsvp(2) this value SHOULD be equal to the Tunnel + + + + Sender Address in the Sender Template object and MAY + be equal to the Extended Tunnel Id field in the + SESSION object. When the MPLS signalling protocol is + crldp(3) this value SHOULD be equal to the Ingress + LSR Router ID field in the LSPID TLV object." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + ::= { mplsTunnelEntry 3 } + +mplsTunnelEgressLSRId OBJECT-TYPE + SYNTAX MplsExtendedTunnelId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identity of the egress LSR associated with this + tunnel instance." + ::= { mplsTunnelEntry 4 } + +mplsTunnelName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The canonical name assigned to the tunnel. This name + can be used to refer to the tunnel on the LSR's + console port. If mplsTunnelIsIf is set to true + then the ifName of the interface corresponding to + this tunnel should have a value equal to + mplsTunnelName. Also see the description of ifName + in RFC 2863." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL {""} + ::= { mplsTunnelEntry 5 } + +mplsTunnelDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about the + tunnel. If there is no description this object + contains a zero length string. This object is may + not be signaled by MPLS signaling protocols, + + + + consequentally the value of this object at transit + and egress LSRs MAY be automatically generated or + absent." + DEFVAL {""} + ::= { mplsTunnelEntry 6 } + +mplsTunnelIsIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether or not this tunnel corresponds to an + interface represented in the interfaces group + table. Note that if this variable is set to true + then the ifName of the interface corresponding to + this tunnel should have a value equal to + mplsTunnelName. Also see the description of ifName + in RFC 2863. This object is meaningful only at the + ingress and egress LSRs." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL { false } + ::= { mplsTunnelEntry 7 } + +mplsTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelIsIf is set to true, then this value + contains the LSR-assigned ifIndex which corresponds + to an entry in the interfaces table. Otherwise + this variable should contain the value of zero + indicating that a valid ifIndex was not assigned to + this tunnel interface." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL { 0 } + ::= { mplsTunnelEntry 8 } + +mplsTunnelOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + + + + for managing this tunnel. This column is + automatically filled by the agent on creation of a + row." + ::= { mplsTunnelEntry 9 } + +mplsTunnelRole OBJECT-TYPE + SYNTAX INTEGER { head(1), + transit(2), + tail(3), + headTail(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value signifies the role that this tunnel + entry/instance represents. This value MUST be set + to head(1) at the originating point of the tunnel. + This value MUST be set to transit(2) at transit + points along the tunnel, if transit points are + supported. This value MUST be set to tail(3) at the + terminating point of the tunnel if tunnel tails are + supported. + + The value headTail(4) is provided for tunnels that + begin and end on the same LSR." + DEFVAL { head } + ::= { mplsTunnelEntry 10 } + +mplsTunnelXCPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable points to a row in the mplsXCTable. + This table identifies the segments that compose + this tunnel, their characteristics, and + relationships to each other. A value of zeroDotZero + indicates that no LSP has been associated with this + tunnel yet." + REFERENCE + "Srinivasan, C., Viswanathan, A., and T. Nadeau, + Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813, + June 2004" + DEFVAL { zeroDotZero } + ::= { mplsTunnelEntry 11 } + +mplsTunnelSignallingProto OBJECT-TYPE + SYNTAX INTEGER { + + + + none(1), + rsvp(2), + crldp(3), + other(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The signalling protocol, if any, used to setup this + tunnel." + DEFVAL { none } + ::= { mplsTunnelEntry 12 } + +mplsTunnelSetupPrio OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the setup priority of this tunnel." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelEntry 13 } + +mplsTunnelHoldingPrio OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the holding priority for this tunnel." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelEntry 14 } + +mplsTunnelSessionAttributes OBJECT-TYPE + SYNTAX BITS { + fastReroute (0), + mergingPermitted (1), + isPersistent (2), + isPinned (3), + + + + recordRoute(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bit mask indicates optional session values for + this tunnel. The following describes these bit + fields: + + fastRerouteThis flag indicates that the any tunnel + hop may choose to reroute this tunnel without + tearing it down. This flag permits transit routers + to use a local repair mechanism which may result in + violation of the explicit routing of this tunnel. + When a fault is detected on an adjacent downstream + link or node, a transit router can re-route traffic + for fast service restoration. + + mergingPermitted This flag permits transit routers + to merge this session with other RSVP sessions for + the purpose of reducing resource overhead on + downstream transit routers, thereby providing + better network scaling. + + isPersistent Indicates whether this tunnel should + be restored automatically after a failure occurs. + + isPinned This flag indicates whether the loose- + routed hops of this tunnel are to be pinned. + + recordRouteThis flag indicates whether or not the + signalling protocol should remember the tunnel path + after it has been signaled." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 15 } + +mplsTunnelLocalProtectInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates that the local repair mechanism is in use + to maintain this tunnel (usually in the face of an + outage of the link it was previously routed over)." + DEFVAL { false } + ::= { mplsTunnelEntry 16 } + + + +mplsTunnelResourcePointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable represents a pointer to the traffic + parameter specification for this tunnel. This + value may point at an entry in the + mplsTunnelResourceEntry to indicate which + mplsTunnelResourceEntry is to be assigned to this + LSP instance. This value may optionally point at + an externally defined traffic parameter + specification table. A value of zeroDotZero + indicates best-effort treatment. By having the + same value of this object, two or more LSPs can + indicate resource sharing." + DEFVAL { zeroDotZero } + ::= { mplsTunnelEntry 17 } + +mplsTunnelPrimaryInstance OBJECT-TYPE + SYNTAX MplsTunnelInstanceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the instance index of the primary instance + of this tunnel. More details of the definition of + tunnel instances and the primary tunnel instance + can be found in the description of the TEXTUAL-CONVENTION + MplsTunnelInstanceIndex." + DEFVAL { 0 } + ::= { mplsTunnelEntry 18 } + +mplsTunnelInstancePriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates which priority, in descending + order, with 0 indicating the lowest priority, + within a group of tunnel instances. A group of + tunnel instances is defined as a set of LSPs with + the same mplsTunnelIndex in this table, but with a + different mplsTunnelInstance. Tunnel instance + priorities are used to denote the priority at which + a particular tunnel instance will supercede + another. Instances of tunnels containing the same + mplsTunnelInstancePriority will be used for load + sharing." + + + + DEFVAL { 0 } + ::= { mplsTunnelEntry 19 } + +mplsTunnelHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index into the mplsTunnelHopTable entry that + specifies the explicit route hops for this tunnel. + This object is meaningful only at the head-end of + the tunnel." + DEFVAL { 0 } + ::= { mplsTunnelEntry 20 } + +mplsTunnelPathInUse OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value denotes the configured path that was + chosen for this tunnel. This value reflects the + secondary index into mplsTunnelHopTable. This path + may not exactly match the one in + mplsTunnelARHopTable due to the fact that some CSPF + modification may have taken place. See + mplsTunnelARHopTable for the actual path being + taken by the tunnel. A value of zero denotes that + no path is currently in use or available." + DEFVAL { 0 } + ::= { mplsTunnelEntry 21 } + +mplsTunnelARHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into the mplsTunnelARHopTable entry that + specifies the actual hops traversed by the tunnel. + This is automatically updated by the agent when the + actual hops becomes available." + DEFVAL { 0 } + ::= { mplsTunnelEntry 22 } + +mplsTunnelCHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Index into the mplsTunnelCHopTable entry that + specifies the computed hops traversed by the + tunnel. This is automatically updated by the agent + when computed hops become available or when + computed hops get modified." + DEFVAL { 0 } + ::= { mplsTunnelEntry 23 } + +mplsTunnelIncludeAnyAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the include-any constraint if and + only if the constraint is zero, or the link and the + constraint have a resource class in common." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 24 } + +mplsTunnelIncludeAllAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the include-all constraint if and + only if the link contains all of the administrative + groups specified in the constraint." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 25 } + +mplsTunnelExcludeAnyAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the exclude-any constraint if and + only if the link contains none of the + administrative groups specified in the constraint." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + DEFVAL { 0 } + ::= { mplsTunnelEntry 26 } + + + +mplsTunnelTotalUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value represents the aggregate up time for all + instances of this tunnel, if available. If this + value is unavailable, it MUST return a value of 0." + ::= { mplsTunnelEntry 27 } + +mplsTunnelInstanceUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the total time that this + tunnel instance's operStatus has been Up(1)." + ::= { mplsTunnelEntry 28 } + +mplsTunnelPrimaryUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total time the primary instance of + this tunnel has been active. The primary instance + of this tunnel is defined in + mplsTunnelPrimaryInstance." + ::= { mplsTunnelEntry 29 } + +mplsTunnelPathChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of times the actual path for + this tunnel instance has changed." + ::= { mplsTunnelEntry 30 } + +mplsTunnelLastPathChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the time since the last change to the + actual path for this tunnel instance." + ::= { mplsTunnelEntry 31 } + + + + +mplsTunnelCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the value of SysUpTime when the first + instance of this tunnel came into existence. + That is, when the value of mplsTunnelOperStatus + was first set to up(1)." + ::= { mplsTunnelEntry 32 } + +mplsTunnelStateTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of times the state + (mplsTunnelOperStatus) of this tunnel instance has + changed." + ::= { mplsTunnelEntry 33 } + +mplsTunnelAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + -- ready to pass packets + up(1), + down(2), + -- in some test mode + testing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the desired operational status of this + tunnel." + ::= { mplsTunnelEntry 34 } + +mplsTunnelOperStatus OBJECT-TYPE + SYNTAX INTEGER { + -- ready to pass packets + up(1), + down(2), + -- in some test mode + testing(3), + -- status cannot be determined + unknown(4), + dormant(5), + -- some component is missing + notPresent(6), + + + + -- down due to the state of + -- lower layer interfaces + lowerLayerDown(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the actual operational status of this + tunnel, which is typically but not limited to, a + function of the state of individual segments of + this tunnel." + ::= { mplsTunnelEntry 35 } + +mplsTunnelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelAdminStatus, mplsTunnelRowStatus and + mplsTunnelStorageType." + ::= { mplsTunnelEntry 36 } + +mplsTunnelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this tunnel entry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsTunnelEntry 37 } + +-- End of mplsTunnelTable + +mplsTunnelHopListIndexNext OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to be used + for mplsTunnelHopListIndex when creating entries in + the mplsTunnelHopTable. If the number of + unassigned entries is exhausted, a retrieval + + + + operation will return a value of 0. This object + may also return a value of 0 when the LSR is unable + to accept conceptual row creation, for example, if + the mplsTunnelHopTable is implemented as read-only. + To obtain the value of mplsTunnelHopListIndex for a + new entry in the mplsTunnelHopTable, the manager + issues a management protocol retrieval operation to + obtain the current value of mplsTunnelHopIndex. + + When the SET is performed to create a row in the + mplsTunnelHopTable, the Command Responder (agent) + must determine whether the value is indeed still + unused; Two Network Management Applications may + attempt to create a row (configuration entry) + simultaneously and use the same value. If it is + currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, + according to an implementation-specific algorithm. + If the value is in use, however, the SET fails. The + Network Management Application must then re-read + this variable to obtain a new usable value." + ::= { mplsTeObjects 3 } + +mplsTunnelHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelHopTable is used to indicate the hops, + strict or loose, for an instance of an MPLS tunnel + defined in mplsTunnelTable, when it is established + via signalling, for the outgoing direction of the + tunnel. Thus at a transit LSR, this table contains + the desired path of the tunnel from this LSR + onwards. Each row in this table is indexed by + mplsTunnelHopListIndex which corresponds to a group + of hop lists or path options. Each row also has a + secondary index mplsTunnelHopIndex, which indicates + a group of hops (also known as a path option). + Finally, the third index, mplsTunnelHopIndex + indicates the specific hop information for a path + option. In case we want to specify a particular + interface on the originating LSR of an outgoing + tunnel by which we want packets to exit the LSR, + we specify this as the first hop for this tunnel in + mplsTunnelHopTable." + ::= { mplsTeObjects 4 } + + + + +mplsTunnelHopEntry OBJECT-TYPE + SYNTAX MplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry is created by a network administrator for + signaled ERLSP set up by an MPLS signalling + protocol." + INDEX { + mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, + mplsTunnelHopIndex + } + ::= { mplsTunnelHopTable 1 } + +MplsTunnelHopEntry ::= SEQUENCE { + mplsTunnelHopListIndex MplsPathIndex, + mplsTunnelHopPathOptionIndex MplsPathIndex, + mplsTunnelHopIndex MplsPathIndex, + mplsTunnelHopAddrType TeHopAddressType, + mplsTunnelHopIpAddr TeHopAddress, + mplsTunnelHopIpPrefixLen InetAddressPrefixLength, + mplsTunnelHopAsNumber TeHopAddressAS, + mplsTunnelHopAddrUnnum TeHopAddressUnnum, + mplsTunnelHopLspId MplsLSPID, + mplsTunnelHopType INTEGER, + mplsTunnelHopInclude TruthValue, + mplsTunnelHopPathOptionName SnmpAdminString, + mplsTunnelHopEntryPathComp INTEGER, + mplsTunnelHopRowStatus RowStatus, + mplsTunnelHopStorageType StorageType + } + +mplsTunnelHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular explicit route object." + ::= { mplsTunnelHopEntry 1 } + +mplsTunnelHopPathOptionIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Secondary index into this table identifying a + particular group of hops representing a particular + configured path. This is otherwise known as a path + option." + ::= { mplsTunnelHopEntry 2 } + +mplsTunnelHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Tertiary index into this table identifying a + particular hop." + ::= { mplsTunnelHopEntry 3 } + +mplsTunnelHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Hop Address Type of this tunnel hop. + + The value of this object cannot be changed + if the value of the corresponding + mplsTunnelHopRowStatus object is 'active'. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP. + " + DEFVAL { ipv4 } + ::= { mplsTunnelHopEntry 4 } + +mplsTunnelHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Tunnel Hop Address for this tunnel hop. + + The type of this address is determined by the + value of the corresponding mplsTunnelHopAddrType. + + The value of this object cannot be changed + if the value of the corresponding + mplsTunnelHopRowStatus object is 'active'. + " + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelHopEntry 5 } + + mplsTunnelHopIpPrefixLen OBJECT-TYPE + + + + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION "If mplsTunnelHopAddrType is set to ipv4(1) or + ipv6(2), then this value will contain an + appropriate prefix length for the IP address in + object mplsTunnelHopIpAddr. Otherwise this value + is irrelevant and should be ignored. + " + DEFVAL { 32 } + ::= { mplsTunnelHopEntry 6 } + +mplsTunnelHopAsNumber OBJECT-TYPE + SYNTAX TeHopAddressAS + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to asnumber(3), then + this value will contain the AS number of this hop. + Otherwise the agent should set this object to zero- + length string and the manager should ignore this." + ::= { mplsTunnelHopEntry 7 } + +mplsTunnelHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to unnum(4), then + this value will contain the interface identifier of + the unnumbered interface for this hop. This object + should be used in conjunction with + mplsTunnelHopIpAddress which would contain the LSR + Router ID in this case. Otherwise the agent should + set this object to zero-length string and the + manager should ignore this." + ::= { mplsTunnelHopEntry 8 } + +mplsTunnelHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to lspid(5), then + this value will contain the LSPID of a tunnel of + this hop. The present tunnel being configured is + tunneled through this hop (using label stacking). + This object is otherwise insignificant and should + + + + contain a value of 0 to indicate this fact." + ::= { mplsTunnelHopEntry 9 } + +mplsTunnelHopType OBJECT-TYPE + SYNTAX INTEGER { + strict(1), + loose(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether this tunnel hop is routed in a + strict or loose fashion. The value of this object + has no meaning if the mplsTunnelHopInclude object + is set to 'false'." + ::= { mplsTunnelHopEntry 10 } + +mplsTunnelHopInclude OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is set to true, then this indicates + that this hop must be included in the tunnel's + path. If this value is set to 'false', then this hop + must be avoided when calculating the path for this + tunnel. The default value of this object is 'true', + so that by default all indicated hops are included + in the CSPF path computation. If this object is set + to 'false' the value of mplsTunnelHopType should be + ignored." + DEFVAL { true } + ::= { mplsTunnelHopEntry 11 } + +mplsTunnelHopPathOptionName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The description of this series of hops as they + relate to the specified path option. The + value of this object SHOULD be the same for + each hop in the series that comprises a + path option." + ::= { mplsTunnelHopEntry 12 } + +mplsTunnelHopEntryPathComp OBJECT-TYPE + SYNTAX INTEGER { + + + + dynamic(1), -- CSPF computed + explicit(2) -- strict hop + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is set to dynamic, then the user + should only specify the source and destination of + the path and expect that the CSPF will calculate + the remainder of the path. If this value is set to + explicit, the user should specify the entire path + for the tunnel to take. This path may contain + strict or loose hops. Each hop along a specific + path SHOULD have this object set to the same value" + ::= { mplsTunnelHopEntry 13 } + +mplsTunnelHopRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelHopRowStatus and + mplsTunnelHopStorageType." + ::= { mplsTunnelHopEntry 14 } + +mplsTunnelHopStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this Hop entry. Conceptual + rows having the value 'permanent' need not + allow write-access to any columnar objects + in the row." + DEFVAL { volatile } + ::= { mplsTunnelHopEntry 15 } + +-- End of mplsTunnelHopTable + +-- Begin of mplsTunnelResourceTable + +mplsTunnelResourceIndexNext OBJECT-TYPE + SYNTAX Unsigned32 (0.. 2147483647) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object contains the next appropriate value to + be used for mplsTunnelResourceIndex when creating + entries in the mplsTunnelResourceTable. If the + number of unassigned entries is exhausted, a + retrieval operation will return a value of 0. This + object may also return a value of 0 when the LSR is + unable to accept conceptual row creation, for + example, if the mplsTunnelTable is implemented as + read-only. To obtain the mplsTunnelResourceIndex + value for a new entry, the manager must first issue + a management protocol retrieval operation to obtain + the current value of this object. + + When the SET is performed to create a row in the + mplsTunnelResourceTable, the Command Responder + (agent) must determine whether the value is indeed + still unused; Two Network Management Applications + may attempt to create a row (configuration entry) + simultaneously and use the same value. If it is + currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, + according to an implementation-specific algorithm. + If the value is in use, however, the SET fails. The + Network Management Application must then re-read + this variable to obtain a new usable value." + ::= { mplsTeObjects 5 } + +mplsTunnelResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelResourceTable allows a manager to + specify which resources are desired for an MPLS + tunnel. This table also allows several tunnels to + point to a single entry in this table, implying + that these tunnels should share resources." + ::= { mplsTeObjects 6 } + +mplsTunnelResourceEntry OBJECT-TYPE + SYNTAX MplsTunnelResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a set of resources + for an MPLS tunnel. An entry can be created by a + + + + network administrator or by an SNMP agent as + instructed by any MPLS signalling protocol. + An entry in this table referenced by a tunnel instance + with zero mplsTunnelInstance value indicates a + configured set of resource parameter. An entry + referenced by a tunnel instance with a non-zero + mplsTunnelInstance reflects the in-use resource + parameters for the tunnel instance which may have + been negotiated or modified by the MPLS signaling + protocols." + INDEX { mplsTunnelResourceIndex } + ::= { mplsTunnelResourceTable 1 } + +MplsTunnelResourceEntry ::= SEQUENCE { + mplsTunnelResourceIndex Unsigned32, + mplsTunnelResourceMaxRate MplsBitRate, + mplsTunnelResourceMeanRate MplsBitRate, + mplsTunnelResourceMaxBurstSize MplsBurstSize, + mplsTunnelResourceMeanBurstSize MplsBurstSize, + mplsTunnelResourceExBurstSize MplsBurstSize, + mplsTunnelResourceFrequency INTEGER, + mplsTunnelResourceWeight Unsigned32, + mplsTunnelResourceRowStatus RowStatus, + mplsTunnelResourceStorageType StorageType + } + +mplsTunnelResourceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies this row." + ::= { mplsTunnelResourceEntry 1 } + +mplsTunnelResourceMaxRate OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate in bits/second. Note that setting + mplsTunnelResourceMaxRate, + mplsTunnelResourceMeanRate, and + mplsTunnelResourceMaxBurstSize to 0 indicates best- + effort treatment." + ::= { mplsTunnelResourceEntry 2 } + +mplsTunnelResourceMeanRate OBJECT-TYPE + + + + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is copied into an instance of + mplsTrafficParamMeanRate in the + mplsTrafficParamTable. The OID of this table entry + is then copied into the corresponding + mplsInSegmentTrafficParamPtr." + ::= { mplsTunnelResourceEntry 3 } + +mplsTunnelResourceMaxBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum burst size in bytes." + ::= { mplsTunnelResourceEntry 4 } + +mplsTunnelResourceMeanBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mean burst size in bytes. The implementations + which do not implement this variable must return + a noSuchObject exception for this object and must + not allow a user to set this object." + ::= { mplsTunnelResourceEntry 5 } + +mplsTunnelResourceExBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Excess burst size in bytes. The implementations + which do not implement this variable must return + noSuchObject exception for this object and must + not allow a user to set this value." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 6 } + +mplsTunnelResourceFrequency OBJECT-TYPE + + + + SYNTAX INTEGER { unspecified(1), + frequent(2), + veryFrequent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The granularity of the availability of committed + rate. The implementations which do not implement + this variable must return unspecified(1) for this + value and must not allow a user to set this value." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 7 } + +mplsTunnelResourceWeight OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The relative weight for using excess bandwidth above + its committed rate. The value of 0 means that + weight is not applicable for the CR-LSP." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 8 } + +mplsTunnelResourceRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelResourceRowStatus and + mplsTunnelResourceStorageType." + ::= { mplsTunnelResourceEntry 9 } + +mplsTunnelResourceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this Hop entry. Conceptual + rows having the value 'permanent' need not + allow write-access to any columnar objects + + + + in the row." + DEFVAL { volatile } + + ::= { mplsTunnelResourceEntry 10 } + + +-- End mplsTunnelResourceTable +-- Tunnel Actual Route Hop table. + +mplsTunnelARHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelARHopTable is used to indicate the + hops for an MPLS tunnel defined in mplsTunnelTable, + as reported by the MPLS signalling protocol. Thus at + a transit LSR, this table (if the table is supported + and if the signaling protocol is recording actual + route information) contains the actual route of the + whole tunnel. If the signaling protocol is not + recording the actual route, this table MAY report + the information from the mplsTunnelHopTable or the + mplsTunnelCHopTable. + + Each row in this table is indexed by + mplsTunnelARHopListIndex. Each row also has a + secondary index mplsTunnelARHopIndex, corresponding + to the next hop that this row corresponds to. + + Please note that since the information necessary to + build entries within this table is not provided by + some MPLS signalling protocols, implementation of + this table is optional. Furthermore, since the + information in this table is actually provided by + the MPLS signalling protocol after the path has + been set-up, the entries in this table are provided + only for observation, and hence, all variables in + this table are accessible exclusively as read- + only. + + Note also that the contents of this table may change + while it is being read because of re-routing + activities. A network administrator may verify that + the actual route read is consistent by reference to + the mplsTunnelLastPathChange object." + ::= { mplsTeObjects 7 } + + + + +mplsTunnelARHopEntry OBJECT-TYPE + SYNTAX MplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry is created by the agent for signaled ERLSP + set up by an MPLS signalling protocol." + INDEX { mplsTunnelARHopListIndex, mplsTunnelARHopIndex } + ::= { mplsTunnelARHopTable 1 } + +MplsTunnelARHopEntry ::= SEQUENCE { + mplsTunnelARHopListIndex MplsPathIndex, + mplsTunnelARHopIndex MplsPathIndex, + mplsTunnelARHopAddrType TeHopAddressType, + mplsTunnelARHopIpAddr TeHopAddress, + mplsTunnelARHopAddrUnnum TeHopAddressUnnum, + mplsTunnelARHopLspId MplsLSPID + } + +mplsTunnelARHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular recorded hop list." + ::= { mplsTunnelARHopEntry 1 } + +mplsTunnelARHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index into this table identifying the + particular hop." + ::= { mplsTunnelARHopEntry 2 } + +mplsTunnelARHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hop Address Type of this tunnel hop. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP." + DEFVAL { ipv4 } + + + + ::= { mplsTunnelARHopEntry 3 } + +mplsTunnelARHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Tunnel Hop Address for this tunnel hop. + + The type of this address is determined by the + value of the corresponding mplsTunnelARHopAddrType. + If mplsTunnelARHopAddrType is set to unnum(4), + then this value contains the LSR Router ID of the + unnumbered interface. Otherwise the agent SHOULD + set this object to the zero-length string and the + manager should ignore this object." + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelARHopEntry 4 } + +mplsTunnelARHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelARHopAddrType is set to unnum(4), then + this value will contain the interface identifier of + the unnumbered interface for this hop. This object + should be used in conjunction with + mplsTunnelARHopIpAddr which would contain the LSR + Router ID in this case. Otherwise the agent should + set this object to zero-length string and the + manager should ignore this." + ::= { mplsTunnelARHopEntry 5 } + +mplsTunnelARHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelARHopAddrType is set to lspid(5), then + this value will contain the LSP ID of this hop. + This object is otherwise insignificant and should + contain a value of 0 to indicate this fact." + ::= { mplsTunnelARHopEntry 6 } + +-- End of mplsTunnelARHopTable + + + + + +-- Tunnel Computed Hop table. + +mplsTunnelCHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelCHopTable is used to indicate the + hops, strict or loose, for an MPLS tunnel defined + in mplsTunnelTable, as computed by a constraint- + based routing protocol, based on the + mplsTunnelHopTable for the outgoing direction of + the tunnel. Thus at a transit LSR, this table (if + the table is supported) MAY contain the path + computed by the CSPF engine on (or on behalf of) + this LSR. Each row in this table is indexed by + mplsTunnelCHopListIndex. Each row also has a + secondary index mplsTunnelCHopIndex, corresponding + to the next hop that this row corresponds to. In + case we want to specify a particular interface on + the originating LSR of an outgoing tunnel by which + we want packets to exit the LSR, we specify this as + the first hop for this tunnel in + mplsTunnelCHopTable. + + Please note that since the information necessary to + build entries within this table may not be + supported by some LSRs, implementation of this + table is optional. Furthermore, since the + information in this table describes the path + computed by the CSPF engine the entries in this + table are read-only." + ::= { mplsTeObjects 8 } + +mplsTunnelCHopEntry OBJECT-TYPE + SYNTAX MplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry in this table is created by a path + computation engine using CSPF techniques applied to + the information collected by routing protocols and + the hops specified in the corresponding + mplsTunnelHopTable." + INDEX { mplsTunnelCHopListIndex, mplsTunnelCHopIndex } + ::= { mplsTunnelCHopTable 1 } + + + + +MplsTunnelCHopEntry ::= SEQUENCE { + mplsTunnelCHopListIndex MplsPathIndex, + mplsTunnelCHopIndex MplsPathIndex, + mplsTunnelCHopAddrType TeHopAddressType, + mplsTunnelCHopIpAddr TeHopAddress, + mplsTunnelCHopIpPrefixLen InetAddressPrefixLength, + mplsTunnelCHopAsNumber TeHopAddressAS, + mplsTunnelCHopAddrUnnum TeHopAddressUnnum, + mplsTunnelCHopLspId MplsLSPID, + mplsTunnelCHopType INTEGER + } + +mplsTunnelCHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular computed hop list." + ::= { mplsTunnelCHopEntry 1 } + +mplsTunnelCHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index into this table identifying the + particular hop." + ::= { mplsTunnelCHopEntry 2 } + +mplsTunnelCHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hop Address Type of this tunnel hop. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP." + DEFVAL { ipv4 } + ::= { mplsTunnelCHopEntry 3 } + +mplsTunnelCHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Tunnel Hop Address for this tunnel hop. + + + + + The type of this address is determined by the + value of the corresponding mplsTunnelCHopAddrType. + + If mplsTunnelCHopAddrType is set to unnum(4), then + this value will contain the LSR Router ID of the + unnumbered interface. Otherwise the agent should + set this object to the zero-length string and the + manager SHOULD ignore this object." + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelCHopEntry 4 } + +mplsTunnelCHopIpPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to ipv4(1) or + ipv6(2), then this value will contain an + appropriate prefix length for the IP address in + object mplsTunnelCHopIpAddr. Otherwise this value + is irrelevant and should be ignored. + " + DEFVAL { 32 } + ::= { mplsTunnelCHopEntry 5 } + +mplsTunnelCHopAsNumber OBJECT-TYPE + SYNTAX TeHopAddressAS + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to asnumber(3), + then this value will contain the AS number of this + hop. Otherwise the agent should set this object to + zero-length string and the manager should ignore + this." + ::= { mplsTunnelCHopEntry 6 } + +mplsTunnelCHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to unnum(4), then + this value will contain the unnumbered interface + identifier of this hop. This object should be used + in conjunction with mplsTunnelCHopIpAddr which + would contain the LSR Router ID in this case. + + + + Otherwise the agent should set this object to zero- + length string and the manager should ignore this." + ::= { mplsTunnelCHopEntry 7 } + +mplsTunnelCHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to lspid(5), then + this value will contain the LSP ID of this hop. + This object is otherwise insignificant and should + contain a value of 0 to indicate this fact." + ::= { mplsTunnelCHopEntry 8 } + +mplsTunnelCHopType OBJECT-TYPE + SYNTAX INTEGER { strict(1), + loose(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether this is tunnel hop is routed in a + strict or loose fashion." + ::= { mplsTunnelCHopEntry 9 } + +-- End of mplsTunnelCHopTable + + +-- MPLS Tunnel Performance Table. + +mplsTunnelPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides per-tunnel instance MPLS + performance information." + ::= { mplsTeObjects 9 } + +mplsTunnelPerfEntry OBJECT-TYPE + SYNTAX MplsTunnelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for + every tunnel. Its is an extension to + mplsTunnelEntry." + + + + AUGMENTS { mplsTunnelEntry } + ::= { mplsTunnelPerfTable 1 } + +MplsTunnelPerfEntry ::= SEQUENCE { + mplsTunnelPerfPackets Counter32, + mplsTunnelPerfHCPackets Counter64, + mplsTunnelPerfErrors Counter32, + mplsTunnelPerfBytes Counter32, + mplsTunnelPerfHCBytes Counter64 + } + +mplsTunnelPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets forwarded by the tunnel. + This object should represents the 32-bit + value of the least significant part of the + 64-bit value if both mplsTunnelPerfHCPackets + is returned." + ::= { mplsTunnelPerfEntry 1 } + +mplsTunnelPerfHCPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High capacity counter for number of packets + forwarded by the tunnel. " + ::= { mplsTunnelPerfEntry 2 } + +mplsTunnelPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets dropped because of errors or for + other reasons." + ::= { mplsTunnelPerfEntry 3 } + +mplsTunnelPerfBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of bytes forwarded by the tunnel. + This object should represents the 32-bit + + + + value of the least significant part of the + 64-bit value if both mplsTunnelPerfHCBytes + is returned." + ::= { mplsTunnelPerfEntry 4 } + +mplsTunnelPerfHCBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High capacity counter for number of bytes forwarded + by the tunnel." + ::= { mplsTunnelPerfEntry 5 } + +-- End of mplsTunnelPerfTable + + +-- CR-LDP Tunnel Resource Table + +mplsTunnelCRLDPResTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelCRLDPResEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelCRLDPResTable allows a manager to + specify which CR-LDP-specific resources are desired + for an MPLS tunnel if that tunnel is signaled using + CR-LDP. Note that these attributes are in addition + to those specified in mplsTunnelResourceTable. This + table also allows several tunnels to point to a + single entry in this table, implying that these + tunnels should share resources." + ::= { mplsTeObjects 10 } + +mplsTunnelCRLDPResEntry OBJECT-TYPE + SYNTAX MplsTunnelCRLDPResEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a set of resources + for an MPLS tunnel established using CRLDP + (mplsTunnelSignallingProto equal to crldp (3)). An + entry can be created by a network administrator or + by an SNMP agent as instructed by any MPLS + signalling protocol." + INDEX { mplsTunnelResourceIndex } + ::= { mplsTunnelCRLDPResTable 1 } + + + + +MplsTunnelCRLDPResEntry ::= SEQUENCE { + mplsTunnelCRLDPResMeanBurstSize MplsBurstSize, + mplsTunnelCRLDPResExBurstSize MplsBurstSize, + mplsTunnelCRLDPResFrequency INTEGER, + mplsTunnelCRLDPResWeight Unsigned32, + mplsTunnelCRLDPResFlags Unsigned32, + mplsTunnelCRLDPResRowStatus RowStatus, + mplsTunnelCRLDPResStorageType StorageType + } + +mplsTunnelCRLDPResMeanBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mean burst size in bytes." + ::= { mplsTunnelCRLDPResEntry 1 } + +mplsTunnelCRLDPResExBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Excess burst size in bytes." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelCRLDPResEntry 2 } + +mplsTunnelCRLDPResFrequency OBJECT-TYPE + SYNTAX INTEGER { + unspecified(1), + frequent(2), + veryFrequent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The granularity of the availability of committed + rate." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelCRLDPResEntry 3 } + +mplsTunnelCRLDPResWeight OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The relative weight for using excess bandwidth above + its committed rate. The value of 0 means that + weight is not applicable for the CR-LSP." + REFERENCE + "CR-LDP Specification, Section 4.3." + DEFVAL { 0 } + ::= { mplsTunnelCRLDPResEntry 4 } + +mplsTunnelCRLDPResFlags OBJECT-TYPE + SYNTAX Unsigned32 (0..63) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the 1 byte Flags conveyed as part of + the traffic parameters during the establishment of + the CRLSP. The bits in this object are to be + interpreted as follows. + + +--+--+--+--+--+--+--+--+ + | Res |F6|F5|F4|F3|F2|F1| + +--+--+--+--+--+--+--+--+ + + Res - These bits are reserved. Zero on transmission. + Ignored on receipt. + F1 - Corresponds to the PDR. + F2 - Corresponds to the PBS. + F3 - Corresponds to the CDR. + F4 - Corresponds to the CBS. + F5 - Corresponds to the EBS. + F6 - Corresponds to the Weight. + + Each flag if is a Negotiable Flag corresponding to a + Traffic Parameter. The Negotiable Flag value zero + denotes Not Negotiable and value one denotes + Negotiable." + REFERENCE + "1. Section 4.3, Constraint-Based LSP Setup using + LDP, Jamoussi (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelCRLDPResEntry 5 } + +mplsTunnelCRLDPResRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelCRLDPResRowStatus and + mplsTunnelCRLDPResStorageType." + ::= { mplsTunnelCRLDPResEntry 6 } + +mplsTunnelCRLDPResStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this CR-LDP Resource entry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsTunnelCRLDPResEntry 7 } + + +-- Notifications. + +mplsTunnelNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true, then it enables the + generation of mplsTunnelUp and mplsTunnelDown + traps, otherwise these traps are not emitted." + DEFVAL { false } + ::= { mplsTeObjects 11 } + +mplsTunnelUp NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a + mplsTunnelOperStatus object for one of the + configured tunnels is about to leave the down state + and transition into some other state (but not into + the notPresent state). This other state is + indicated by the included value of + mplsTunnelOperStatus." + + + + ::= { mplsTeNotifications 1 } + +mplsTunnelDown NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a + mplsTunnelOperStatus object for one of the + configured tunnels 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 mplsTunnelOperStatus." + ::= { mplsTeNotifications 2 } + +mplsTunnelRerouted NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a tunnel is + rerouted. If the mplsTunnelARHopTable is used, then + this tunnel instance's entry in the + mplsTunnelARHopTable MAY contain the new path for + this tunnel some time after this trap is issued by + the agent." + ::= { mplsTeNotifications 3 } + +mplsTunnelReoptimized NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a tunnel is + reoptimized. If the mplsTunnelARHopTable is used, + then this tunnel instance's entry in the + mplsTunnelARHopTable MAY contain the new path for + this tunnel some time after this trap is issued by + the agent." + ::= { mplsTeNotifications 4 } + +-- End of notifications. + + + +-- Module compliance. + +mplsTeGroups + OBJECT IDENTIFIER ::= { mplsTeConformance 1 } + +mplsTeCompliances + OBJECT IDENTIFIER ::= { mplsTeConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +mplsTeModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full + support the MPLS-TE-STD-MIB module." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- this module + + -- The mandatory group has to be implemented by all + -- LSRs that originate/terminate ESLSPs/tunnels. + -- In addition, depending on the type of tunnels + -- supported, other groups become mandatory as + -- explained below. + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + + GROUP mplsTunnelManualGroup + DESCRIPTION + "This group is mandatory for devices which support + manual configuration of tunnels." + + GROUP mplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices which support + signaled tunnel set up." + + GROUP mplsTunnelIsNotIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + + + + tunnels that are not interfaces." + + GROUP mplsTunnelIsIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are interfaces." + + GROUP mplsTunnelCRLDPResOptionalGroup + DESCRIPTION + "Objects in this group are required by + implementations supporting the CR-LDP protocol for + signalling of TE tunnels." + + GROUP mplsTeNotificationGroup + DESCRIPTION "This group is mandatory for those implementations + which can implement the notifications + contained in this group." + + OBJECT mplsTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsTunnelHopRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsTunnelCRLDPResRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsTeCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsTeModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-TE-STD-MIB. + Such devices can then be monitored but cannot be + configured using this MIB modules." + + MODULE -- this module + + -- mplsTunnelTable + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + + GROUP mplsTunnelManualGroup + DESCRIPTION + "This group is mandatory for devices which support + manual configuration of tunnels." + + GROUP mplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices which support + signaled tunnel set up." + + GROUP mplsTunnelIsNotIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are not interfaces." + + GROUP mplsTunnelIsIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are interfaces." + + GROUP mplsTunnelCRLDPResOptionalGroup + DESCRIPTION + "Objects in this group are required by + implementations supporting the CR-LDP protocol for + signalling of TE tunnels." + + GROUP mplsTeNotificationGroup + DESCRIPTION "This group is mandatory for those implementations + which can implement the notifications + contained in this group." + + -- mplsTunnelTable + + + + + OBJECT mplsTunnelName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIsIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIfIndex + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelXCPointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSignallingProto + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSetupPrio + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHoldingPrio + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSessionAttributes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelLocalProtectInUse + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT mplsTunnelResourcePointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelInstancePriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopTableIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIncludeAnyAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIncludeAllAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelExcludeAnyAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelPathInUse + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelAdminStatus + SYNTAX INTEGER { up (1), down (2) } + MIN-ACCESS read-only + DESCRIPTION + "Only up and down states must be supported. Write + access is not required." + + OBJECT mplsTunnelRowStatus + + + + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelHopTable + + OBJECT mplsTunnelHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopIpAddr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopIpPrefixLen + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopAddrUnnum + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopAsNumber + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopLspId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopType + SYNTAX INTEGER { strict(1) } + MIN-ACCESS read-only + DESCRIPTION + "loose(2) need not be supported. Write access is + not required." + + OBJECT mplsTunnelHopInclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopPathOptionName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsTunnelHopEntryPathComp + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelResourceTable + + OBJECT mplsTunnelResourceMaxRate + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMeanRate + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMaxBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMeanBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceExBurstSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelResourceFrequency + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceWeight + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsTunnelResourceStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelCRLDPResTable + + OBJECT mplsTunnelCRLDPResMeanBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResExBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResFrequency + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResWeight + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResFlags + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { mplsTeCompliances 2 } + + +-- Units of conformance. + +mplsTunnelGroup OBJECT-GROUP + OBJECTS { + mplsTunnelIndexNext, + mplsTunnelName, + mplsTunnelDescr, + mplsTunnelOwner, + mplsTunnelXCPointer, + mplsTunnelIfIndex, + + + + mplsTunnelHopTableIndex, + mplsTunnelARHopTableIndex, + mplsTunnelCHopTableIndex, + mplsTunnelAdminStatus, + mplsTunnelOperStatus, + mplsTunnelRowStatus, + mplsTunnelNotificationEnable, + mplsTunnelStorageType, + mplsTunnelConfigured, + mplsTunnelActive, + mplsTunnelPrimaryInstance, + mplsTunnelPrimaryUpTime, + mplsTunnelPathChanges, + mplsTunnelLastPathChange, + mplsTunnelCreationTime, + mplsTunnelStateTransitions, + mplsTunnelIncludeAnyAffinity, + mplsTunnelIncludeAllAffinity, + mplsTunnelExcludeAnyAffinity, + mplsTunnelPerfPackets, + mplsTunnelPerfHCPackets, + mplsTunnelPerfErrors, + mplsTunnelPerfBytes, + mplsTunnelPerfHCBytes, + mplsTunnelResourcePointer, + mplsTunnelInstancePriority, + mplsTunnelPathInUse, + mplsTunnelRole, + mplsTunnelTotalUpTime, + mplsTunnelInstanceUpTime, + mplsTunnelResourceIndexNext, + mplsTunnelResourceMaxRate, + mplsTunnelResourceMeanRate, + mplsTunnelResourceMaxBurstSize, + mplsTunnelResourceMeanBurstSize, + mplsTunnelResourceExBurstSize, + mplsTunnelResourceFrequency, + mplsTunnelResourceWeight, + mplsTunnelResourceRowStatus, + mplsTunnelResourceStorageType, + mplsTunnelARHopAddrType, + mplsTunnelARHopIpAddr, + mplsTunnelARHopAddrUnnum, + mplsTunnelARHopLspId, + mplsTunnelCHopAddrType, + mplsTunnelCHopIpAddr, + mplsTunnelCHopIpPrefixLen, + mplsTunnelCHopAsNumber, + + + + mplsTunnelCHopAddrUnnum, + mplsTunnelCHopLspId, + mplsTunnelCHopType + } + STATUS current + DESCRIPTION + "Necessary, but not sufficient, set of objects to + implement tunnels. In addition, depending on the + type of the tunnels supported (for example, + manually configured or signaled, persistent or non- + persistent, etc.), the following other groups + defined below are mandatory: mplsTunnelManualGroup + and/or mplsTunnelSignaledGroup, + mplsTunnelIsNotIntfcGroup and/or + mplsTunnelIsIntfcGroup." + ::= { mplsTeGroups 1 } + +mplsTunnelManualGroup OBJECT-GROUP + OBJECTS { mplsTunnelSignallingProto } + STATUS current + DESCRIPTION + "Object(s) needed to implement manually configured + tunnels." + ::= { mplsTeGroups 2 } + +mplsTunnelSignaledGroup OBJECT-GROUP + OBJECTS { + mplsTunnelSetupPrio, + mplsTunnelHoldingPrio, + mplsTunnelSignallingProto, + mplsTunnelLocalProtectInUse, + mplsTunnelSessionAttributes, + mplsTunnelHopListIndexNext, + mplsTunnelHopAddrType, + mplsTunnelHopIpAddr, + mplsTunnelHopIpPrefixLen, + mplsTunnelHopAddrUnnum, + mplsTunnelHopAsNumber, + mplsTunnelHopLspId, + mplsTunnelHopType, + mplsTunnelHopInclude, + mplsTunnelHopPathOptionName, + mplsTunnelHopEntryPathComp, + mplsTunnelHopRowStatus, + mplsTunnelHopStorageType + } + STATUS current + DESCRIPTION + + + + "Objects needed to implement signaled tunnels." + ::= { mplsTeGroups 3 } + +mplsTunnelScalarGroup OBJECT-GROUP + OBJECTS { + mplsTunnelConfigured, + mplsTunnelActive, + mplsTunnelTEDistProto, + mplsTunnelMaxHops, + mplsTunnelNotificationMaxRate + } + STATUS current + DESCRIPTION + "Scalar object needed to implement MPLS tunnels." + ::= { mplsTeGroups 4 } + +mplsTunnelIsIntfcGroup OBJECT-GROUP + OBJECTS { mplsTunnelIsIf } + STATUS current + DESCRIPTION + "Objects needed to implement tunnels that are + interfaces." + ::= { mplsTeGroups 5 } + +mplsTunnelIsNotIntfcGroup OBJECT-GROUP + OBJECTS { mplsTunnelIsIf } + STATUS current + DESCRIPTION + "Objects needed to implement tunnels that are not + interfaces." + ::= { mplsTeGroups 6 } + +mplsTunnelCRLDPResOptionalGroup OBJECT-GROUP + OBJECTS { + mplsTunnelCRLDPResMeanBurstSize, + mplsTunnelCRLDPResExBurstSize, + mplsTunnelCRLDPResFrequency, + mplsTunnelCRLDPResWeight, + mplsTunnelCRLDPResFlags, + mplsTunnelCRLDPResRowStatus, + mplsTunnelCRLDPResStorageType + } + STATUS current + DESCRIPTION + "Set of objects implemented for resources applicable + for tunnels signaled using CR-LDP." + ::= { mplsTeGroups 7 } + + + + +mplsTeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mplsTunnelUp, + mplsTunnelDown, + mplsTunnelRerouted, + mplsTunnelReoptimized + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this module. + None is mandatory." + ::= { mplsTeGroups 8 } + +END diff --git a/mibs/ietf/MSDP-MIB b/mibs/ietf/MSDP-MIB new file mode 100644 index 0000000..26bb533 --- /dev/null +++ b/mibs/ietf/MSDP-MIB @@ -0,0 +1,1247 @@ +MSDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + experimental, Counter32, Gauge32, TimeTicks, Integer32, + IpAddress + FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +msdpMIB MODULE-IDENTITY + LAST-UPDATED "200608010000Z" + ORGANIZATION "IETF MBONED Working Group" + CONTACT-INFO + "Bill Fenner + 75 Willow Road + Menlo Park, CA 94025 + Phone: +1 650 867 6073 + E-mail: fenner@research.att.com + + Dave Thaler + One Microsoft Way + Redmond, WA 98052 + Phone: +1 425 703 8835 + Email: dthaler@microsoft.com + + MBONED Working Group: mboned@lists.uoregon.edu" + DESCRIPTION + "An experimental MIB module for MSDP Management and + Monitoring. + + + + + Copyright (C) The Internet Society 2006. This version of + this MIB module is part of RFC 4624; see the RFC itself + for full legal notices." + REVISION "200608010000Z" + DESCRIPTION + "Initial version, published as RFC 4624." + ::= { experimental 92 } + +msdpMIBobjects OBJECT IDENTIFIER ::= { msdpMIB 1 } + +msdp OBJECT IDENTIFIER ::= { msdpMIBobjects 1 } + + +msdpEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of MSDP on this MSDP speaker - globally enabled + or disabled. + + Changes to this object should be stored to non-volatile + memory." + ::= { msdp 1 } + +msdpCacheLifetime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lifetime given to SA cache entries when created or + refreshed. This is the [SG-State-Period] in the MSDP + spec. A value of 0 means no SA caching is done by this + MSDP speaker. + + Changes to this object should be stored to non-volatile + memory. + + This object does not measure time per se; instead, it + is the delta from the time at which an SA message is + received at which it should be expired if not refreshed. + (i.e., it is the value of msdpSACacheExpiryTime + immediately after receiving an SA message applying to + that row.) As such, TimeInterval would be a more + appropriate SYNTAX; it remains TimeTicks for backwards + compatibility." + REFERENCE "RFC 3618 section 5.3" + ::= { msdp 2 } + + + +msdpNumSACacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of entries in the SA Cache table." + ::= { msdp 3 } + +-- +-- The spec doesn't define SA-Hold-Down-Period any more. +-- msdpSAHoldDownPeriod OBJECT-TYPE +-- ::= { msdp 9 } + +-- This object was introduced in error, with a similar definition +-- to msdpCacheLifetime. +-- msdpSAStatePeriod OBJECT-TYPE +-- ::= { msdp 10 } + +msdpRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Rendezvous Point (RP) address used when sourcing + MSDP SA messages. May be 0.0.0.0 on non-RPs. + + Changes to this object should be stored to non-volatile + memory." + ::= { msdp 11 } + +-- +-- The MSDP Requests table +-- SA Requests were removed from the MSDP spec, so this entire table +-- is deprecated. + +msdpRequestsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpRequestsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing group ranges and MSDP peers + used when deciding where to send an SA Request message, when + required. If SA Requests are not enabled, this table may be + empty. + + In order to choose a peer to whom to send an SA Request for + a given group, G, the subset of entries in this table whose + (msdpRequestsPeerType, msdpRequestsPeer) tuple represents a + + + + peer whose msdpPeerState is established are examined. The + set is further reduced by examining only those entries for + which msdpPeerRequestsGroupAddressType equals the address + type of G. The entries with the highest value of + msdpRequestsGroupPrefix are considered, where the group G + falls within the range described by the combination of + msdpRequestsGroup and msdpRequestsGroupPrefix. (This + sequence is commonly known as a 'longest-match' lookup.) + + Finally, if multiple entries remain, the entry with the + lowest value of msdpRequestsPriority is chosen. The SA + Request message is sent to the peer described by this row." + ::= { msdp 4 } + +msdpRequestsEntry OBJECT-TYPE + SYNTAX MsdpRequestsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a group range + used when deciding where to send an SA Request + message." + INDEX { msdpRequestsGroupAddress, msdpRequestsGroupMask } + ::= { msdpRequestsTable 1 } + +MsdpRequestsEntry ::= SEQUENCE { + msdpRequestsGroupAddress IpAddress, + msdpRequestsGroupMask IpAddress, + msdpRequestsPeer IpAddress, + msdpRequestsStatus RowStatus + } + +msdpRequestsGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The group address that, when combined with the mask + in this entry, represents the group range to which + this row applies." + ::= { msdpRequestsEntry 1 } + +msdpRequestsGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The mask that, when combined with the group address + + + + in this entry, represents the group range to which + this row applies." + ::= { msdpRequestsEntry 2 } + +msdpRequestsPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The peer to which MSDP SA Requests for groups matching + this entry's group range will be sent. This object, + combined with msdpRequestsPeerType, must match the INDEX + of a row in the msdpPeerTable, and to be considered, + this peer's msdpPeerState must be established." + ::= { msdpRequestsEntry 3 } + +msdpRequestsStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new rows may be added + to the table or old rows may be deleted." + ::= { msdpRequestsEntry 4 } + + +-- +-- The MSDP Peer table +-- + +msdpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the MSDP speaker's peers." + ::= { msdp 5 } + +msdpPeerEntry OBJECT-TYPE + SYNTAX MsdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an MSDP peer. + + If row creation is supported, dynamically added rows are + added to the system's stable configuration (corresponding + to a StorageType value of nonVolatile). " + + + + INDEX { msdpPeerRemoteAddress } + ::= { msdpPeerTable 1 } + +MsdpPeerEntry ::= SEQUENCE { + msdpPeerRemoteAddress IpAddress, + msdpPeerState INTEGER, + msdpPeerRPFFailures Counter32, + msdpPeerInSAs Counter32, + msdpPeerOutSAs Counter32, + msdpPeerInSARequests Counter32, + msdpPeerOutSARequests Counter32, + msdpPeerInSAResponses Counter32, + msdpPeerOutSAResponses Counter32, + msdpPeerInControlMessages Counter32, + msdpPeerOutControlMessages Counter32, + msdpPeerInDataPackets Counter32, + msdpPeerOutDataPackets Counter32, + msdpPeerFsmEstablishedTransitions Counter32, + msdpPeerFsmEstablishedTime TimeStamp, + msdpPeerInMessageTime TimeStamp, + msdpPeerLocalAddress IpAddress, + msdpPeerConnectRetryInterval Integer32, + msdpPeerHoldTimeConfigured Integer32, + msdpPeerKeepAliveConfigured Integer32, + msdpPeerDataTtl Integer32, + msdpPeerProcessRequestsFrom TruthValue, + msdpPeerStatus RowStatus, + msdpPeerRemotePort Integer32, + msdpPeerLocalPort Integer32, + msdpPeerEncapsulationType INTEGER, + msdpPeerConnectionAttempts Counter32, + msdpPeerInNotifications Counter32, + msdpPeerOutNotifications Counter32, + msdpPeerLastError OCTET STRING, + msdpPeerDiscontinuityTime TimeStamp + } + +msdpPeerRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the remote MSDP peer." + ::= { msdpPeerEntry 1 } + +-- dunno what happened to 2. + +msdpPeerState OBJECT-TYPE + + + + SYNTAX INTEGER { + inactive(1), + listen(2), + connecting(3), + established(4), + disabled(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the MSDP TCP connection with this peer." + ::= { msdpPeerEntry 3 } + +msdpPeerRPFFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SA messages received from this peer that + failed the Peer-RPF check. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 4 } + +msdpPeerInSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages received on this + connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 5 } + +msdpPeerOutSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages transmitted on this + connection. + + + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 6 } + +msdpPeerInSARequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA-Request messages received on this + connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 7 } + +msdpPeerOutSARequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA-Request messages transmitted on + this connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 8 } + +msdpPeerInSAResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP SA-Response messages received on this + connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 9 } + + + + +msdpPeerOutSAResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP SA Response messages transmitted on + this TCP connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 10 } + +msdpPeerInControlMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of MSDP messages, excluding encapsulated + data packets, received on this TCP connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 11 } + +msdpPeerOutControlMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of MSDP messages, excluding encapsulated + data packets, transmitted on this TCP connection. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 12 } + +msdpPeerInDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of encapsulated data packets received + + + + from this peer. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 13 } + +msdpPeerOutDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of encapsulated data packets sent to + this peer. + + 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 + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 14 } + +msdpPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the MSDP FSM transitioned into + the ESTABLISHED state." + REFERENCE "RFC 3618 section 11" + ::= { msdpPeerEntry 15 } + +msdpPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This timestamp is set to the value of sysUpTime when a + peer transitions into or out of the ESTABLISHED state. + It is set to zero when the MSDP speaker is booted." + REFERENCE "RFC 3618 section 11" + ::= { msdpPeerEntry 16 } + +msdpPeerInMessageTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The sysUpTime value when the last MSDP message was + received from the peer. It is set to zero when the MSDP + speaker is booted." + ::= { msdpPeerEntry 17 } + +msdpPeerLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local IP address used for this entry's MSDP TCP + connection." + ::= { msdpPeerEntry 18 } + +-- msdpPeerSAAdvPeriod ([SA-Advertisement-Timer]) has been removed. +-- ::= { msdpPeerEntry 19 } +-- RFC 3618, Section 5.1, says it MUST be 60 seconds. + + +msdpPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [ConnectRetry-period] + for this peer." + REFERENCE "RFC 3618 section 5.6" + DEFVAL { 30 } + ::= { msdpPeerEntry 20 } + +msdpPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Integer32 (0|3..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [HoldTime-Period] + configured for this MSDP speaker with this peer. If the + value of this object is zero (0), the MSDP connection is + never torn down due to the absence of messages from the + peer." + REFERENCE "RFC 3618 section 5.4" + DEFVAL { 75 } + ::= { msdpPeerEntry 21 } + +msdpPeerKeepAliveConfigured OBJECT-TYPE + SYNTAX Integer32 (0|1..21845) + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [KeepAlive-Period] + configured for this MSDP speaker with this peer. If the + value of this object is zero (0), no periodic KEEPALIVE + messages are sent to the peer after the MSDP connection + has been established." + REFERENCE "RFC 3618 section 5.5" + DEFVAL { 60 } + ::= { msdpPeerEntry 22 } + +msdpPeerDataTtl OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum TTL a packet is required to have before it + may be forwarded using SA encapsulation to this peer." + DEFVAL { 1 } + ::= { msdpPeerEntry 23 } + +msdpPeerProcessRequestsFrom OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object indicates whether to process MSDP SA + Request messages from this peer. If True(1), MSDP SA + Request messages from this peer are processed and replied + to (if appropriate) with SA Response messages. If + False(2), MSDP SA Request messages from this peer are + silently ignored. It defaults to False when + msdpCacheLifetime is 0 and to True when msdpCacheLifetime + is non-0. + + This object is deprecated because MSDP SA Requests were + removed from the MSDP specification." + ::= { msdpPeerEntry 24 } + +msdpPeerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The RowStatus object by which peers can be added and + deleted. A transition to 'active' will cause the MSDP + + + + 'Enable MSDP peering with P' Event to be generated. A + transition out of the 'active' state will cause the MSDP + 'Disable MSDP peering with P' Event to be generated. + Care should be used in providing write access to this + object without adequate authentication. + + msdpPeerRemoteAddress is the only variable that must be + set to a valid value before the row can be activated. + Since this is the table's INDEX, a row can be activated + by simply setting the msdpPeerStatus variable. + + It is possible to modify other columns in the same + conceptual row when the status value is active(1)." + REFERENCE "RFC 3618 section 11.1" + ::= { msdpPeerEntry 25 } + +msdpPeerRemotePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote port for the TCP connection between the MSDP + peers." + DEFVAL { 639 } + ::= { msdpPeerEntry 26 } + +msdpPeerLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port for the TCP connection between the MSDP + peers." + DEFVAL { 639 } + ::= { msdpPeerEntry 27 } + +-- msdpPeerEncapsulationState has been removed +-- because there is no longer an encapsulation +-- state machine. +-- ::= { msdpPeerEntry 28 } + +msdpPeerEncapsulationType OBJECT-TYPE + SYNTAX INTEGER { + none(0), + tcp(1) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The encapsulation in use when encapsulating data in SA + messages to this peer." + ::= { msdpPeerEntry 29 } + +msdpPeerConnectionAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the state machine has transitioned + from INACTIVE to CONNECTING." + ::= { msdpPeerEntry 30 } + +msdpPeerInNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP Notification messages received from + this peer. + This object is deprecated because MSDP Notifications have + been removed from the spec." + ::= { msdpPeerEntry 31 } + +msdpPeerOutNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP Notification messages transmitted to + this peer. + + This object is deprecated because MSDP Notifications have + been removed from the spec." + ::= { msdpPeerEntry 32 } + +msdpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The last error code and subcode received via Notification + from this peer. If no error has occurred, this field is + zero. Otherwise, the first byte of this two-byte OCTET + STRING contains the O-bit and error code, and the second + byte contains the subcode. + + + + + This object is deprecated because MSDP Notifications have + been removed from the spec." + DEFVAL { '0000'h } + ::= { msdpPeerEntry 33 } + +msdpPeerDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this entry's counters suffered a + discontinuity. See the DESCRIPTION of each object to see + if it is expected to have discontinuities. These + discontinuities may occur at peer connection + establishment. + + If no such discontinuities have occurred since the last + reinitialization of the local management subsystem, then + this object contains a zero value." + ::= { msdpPeerEntry 34 } + +-- +-- The MSDP Source-Active Cache table +-- + +msdpSACacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpSACacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the MSDP SA advertisements + currently in the MSDP speaker's cache." + ::= { msdp 6 } + +msdpSACacheEntry OBJECT-TYPE + SYNTAX MsdpSACacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an MSDP SA + advertisement. The INDEX to this table includes + msdpSACacheOriginRP for diagnosing incorrect MSDP + advertisements; normally, a Group and Source pair would + be unique. + + Row creation is not permitted; msdpSACacheStatus may only + be used to delete rows from this table." + + + + INDEX { msdpSACacheGroupAddr, msdpSACacheSourceAddr, + msdpSACacheOriginRP } + ::= { msdpSACacheTable 1 } + +MsdpSACacheEntry ::= SEQUENCE { + msdpSACacheGroupAddr IpAddress, + msdpSACacheSourceAddr IpAddress, + msdpSACacheOriginRP IpAddress, + msdpSACachePeerLearnedFrom IpAddress, + msdpSACacheRPFPeer IpAddress, + msdpSACacheInSAs Counter32, + msdpSACacheInDataPackets Counter32, + msdpSACacheUpTime TimeTicks, + msdpSACacheExpiryTime TimeTicks, + msdpSACacheStatus RowStatus + } + +msdpSACacheGroupAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address of the SA Cache entry." + ::= { msdpSACacheEntry 1 } + +msdpSACacheSourceAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address of the SA Cache entry." + ::= { msdpSACacheEntry 2 } + +msdpSACacheOriginRP OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RP of the SA Cache entry. This field is in the INDEX + in order to catch multiple RP's advertising the same + source and group." + ::= { msdpSACacheEntry 3 } + +msdpSACachePeerLearnedFrom OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The peer from which this SA Cache entry was last + accepted. This address must correspond to the + msdpPeerRemoteAddress value for a row in the MSDP Peer + Table. This should be 0.0.0.0 on the router that + originated the entry." + ::= { msdpSACacheEntry 4 } + +msdpSACacheRPFPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The peer from which an SA message corresponding to this + cache entry would be accepted (i.e., the RPF peer for + msdpSACacheOriginRP). This may be different than + msdpSACachePeerLearnedFrom if this entry was created by + an MSDP SA-Response. This address must correspond to + the msdpPeerRemoteAddress value for a row in the MSDP + Peer Table, or it may be 0.0.0.0 if no RPF peer exists." + ::= { msdpSACacheEntry 5 } + +msdpSACacheInSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages received relevant to this + cache entry. This object must be initialized to zero + when creating a cache entry." + ::= { msdpSACacheEntry 6 } + +msdpSACacheInDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP-encapsulated data packets received + relevant to this cache entry. This object must be + initialized to zero when creating a cache entry." + ::= { msdpSACacheEntry 7 } + +msdpSACacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was first placed in the SA + cache. + + + + The first epoch is the time that the entry was first + placed in the SA cache, and the second epoch is the + current time." + ::= { msdpSACacheEntry 8 } + +msdpSACacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before this entry will expire from + the SA cache. + + The first epoch is now, and the second epoch is the time + that the entry will expire." + ::= { msdpSACacheEntry 9 } + +msdpSACacheStatus OBJECT-TYPE + SYNTAX RowStatus { active(1), destroy(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of this row in the table. The only allowable + actions are to retrieve the status, which will be + 'active', or to set the status to 'destroy' in order to + remove this entry from the cache. + + Row creation is not permitted. + + No columnar objects are writable, so there are none that + may be changed while the status value is active(1)." + ::= { msdpSACacheEntry 10 } + + +-- +-- MSDP Mesh Group Membership table +-- + +msdpMeshGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpMeshGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing MSDP Mesh Group + configuration." + ::= { msdp 12 } + +msdpMeshGroupEntry OBJECT-TYPE + + + + SYNTAX MsdpMeshGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a peer in an MSDP + Mesh Group. + + If row creation is supported, dynamically added rows are + added to the system's stable configuration + (corresponding to a StorageType value of nonVolatile)." + INDEX { msdpMeshGroupName, msdpMeshGroupPeerAddress } + ::= { msdpMeshGroupTable 1 } + +MsdpMeshGroupEntry ::= SEQUENCE { + msdpMeshGroupName DisplayString, + msdpMeshGroupPeerAddress IpAddress, + msdpMeshGroupStatus RowStatus + } + +msdpMeshGroupName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the mesh group." + ::= { msdpMeshGroupEntry 1 } + +msdpMeshGroupPeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A peer address that is a member of the mesh group with + name msdpMeshGroupName. The msdpMeshGroupPeerAddress + must match a row in the msdpPeerTable." + ::= { msdpMeshGroupEntry 2 } + +msdpMeshGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry's status, by which new entries may be added + to the table and old entries deleted. + + msdpMeshGroupName and msdpMeshGroupPeerAddress must be + set to valid values before the row can be activated. + Since these are the table's INDEX, a row can be activated + + + + by simply setting the msdpMeshGroupStatus variable. + + It is not possible to modify other columns in the same + conceptual row when the status value is active(1), + because the only other objects in the row are part of the + INDEX. Changing one of these changes the row, so an old + row must be deleted and a new one created." + ::= { msdpMeshGroupEntry 3 } + + +-- Traps + +msdpTraps OBJECT IDENTIFIER ::= { msdp 0 } + +msdpEstablished NOTIFICATION-TYPE + OBJECTS { msdpPeerFsmEstablishedTransitions } + STATUS current + DESCRIPTION + "The MSDP Established event is generated when the MSDP FSM + enters the ESTABLISHED state." + ::= { msdpTraps 1 } + +msdpBackwardTransition NOTIFICATION-TYPE + OBJECTS { msdpPeerState } + STATUS current + DESCRIPTION + "The MSDPBackwardTransition Event is generated when the + MSDP FSM moves from a higher-numbered state to a + lower-numbered state." + ::= { msdpTraps 2 } + +-- conformance information + +msdpMIBConformance OBJECT IDENTIFIER ::= { msdp 8 } +msdpMIBCompliances OBJECT IDENTIFIER ::= { msdpMIBConformance 1 } +msdpMIBGroups OBJECT IDENTIFIER ::= { msdpMIBConformance 2 } + +-- compliance statements + +msdpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for entities that implement a pre- + RFC version of MSDP. This statement is deprecated because + it includes objects used for managing/monitoring aspects of + MSDP that were removed before it was published as an RFC." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup, + + + + msdpMIBNotificationGroup } + + GROUP msdpMIBEncapsulationGroup + DESCRIPTION + "This group is mandatory if MSDP encapsulation interfaces are + not given their own interface index numbers." + GROUP msdpMIBSACacheGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker has the ability + to cache SA messages." + GROUP msdpMIBRequestsGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker has the ability + to send SA-Request messages and to parse SA-Response + messages." + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + ::= { msdpMIBCompliances 1 } + +msdpMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement MSDP + (RFC3618)." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup2, + msdpMIBSACacheGroup, msdpMIBEncapsulationGroup } + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + ::= { msdpMIBCompliances 2 } + +msdpMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement MSDP + (RFC3618), but do not permit configuration (or only permit + + + + partial configuration) via SNMP." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup2, + msdpMIBSACacheGroup, msdpMIBEncapsulationGroup } + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + OBJECT msdpEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpCacheLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerLocalAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerConnectRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerHoldTimeConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerKeepAliveConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerDataTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerEncapsulationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT msdpSACacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpRPAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpMeshGroupStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { msdpMIBCompliances 3 } + +-- units of conformance + +msdpMIBGlobalsGroup OBJECT-GROUP + OBJECTS { msdpEnabled } + STATUS current + DESCRIPTION + "A collection of objects providing information on global MSDP + state." + ::= { msdpMIBGroups 1 } + +msdpMIBPeerGroup OBJECT-GROUP + OBJECTS { msdpPeerRPFFailures, + msdpPeerState, msdpPeerInSAs, msdpPeerOutSAs, + msdpPeerInSARequests, msdpPeerOutSARequests, + msdpPeerInSAResponses, msdpPeerOutSAResponses, + msdpPeerInNotifications, msdpPeerOutNotifications, + msdpPeerInControlMessages, msdpPeerOutControlMessages, + msdpPeerFsmEstablishedTransitions, + msdpPeerFsmEstablishedTime, + msdpPeerLocalAddress, + msdpPeerRemotePort, msdpPeerLocalPort, + msdpPeerConnectRetryInterval, + msdpPeerHoldTimeConfigured, + msdpPeerKeepAliveConfigured, + msdpPeerInMessageTime, + msdpPeerProcessRequestsFrom, + msdpPeerConnectionAttempts, + msdpPeerLastError, + msdpPeerStatus, + msdpPeerDiscontinuityTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects for managing MSDP peers. This group + + + + is deprecated in favor of msdpMIBPeerGroup2 because it + contains objects for managing aspects of MSDP that were + removed before it was published as an RFC." + ::= { msdpMIBGroups 2 } + +msdpMIBEncapsulationGroup OBJECT-GROUP + OBJECTS { msdpPeerInDataPackets, msdpPeerOutDataPackets, + msdpPeerDataTtl, + msdpPeerEncapsulationType + } + STATUS current + DESCRIPTION + "A collection of objects for managing encapsulations if the + MSDP encapsulation interfaces are not given interface + indices." + ::= { msdpMIBGroups 3 } + +msdpMIBSACacheGroup OBJECT-GROUP + OBJECTS { msdpCacheLifetime, msdpNumSACacheEntries, + msdpSACachePeerLearnedFrom, + msdpSACacheRPFPeer, msdpSACacheInSAs, + msdpSACacheInDataPackets, + msdpSACacheUpTime, msdpSACacheExpiryTime, + msdpSACacheStatus } + STATUS current + DESCRIPTION + "A collection of objects for managing MSDP SA cache entries." + ::= { msdpMIBGroups 4 } + +msdpMIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { msdpEstablished, + msdpBackwardTransition } + STATUS current + DESCRIPTION + "A collection of notifications for signaling changes in MSDP + peer relationships." + ::= { msdpMIBGroups 5 } + +msdpMIBRequestsGroup OBJECT-GROUP + OBJECTS { msdpRequestsPeer, msdpRequestsStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects for managing MSDP Request + transmission. This group is deprecated because Requests + were removed from MSDP before its publication as an RFC." + ::= { msdpMIBGroups 6 } + +msdpMIBRPGroup OBJECT-GROUP + + + + OBJECTS { msdpRPAddress } + STATUS current + DESCRIPTION + "A collection of objects for MSDP speakers that source MSDP + messages." + ::= { msdpMIBGroups 7 } + +msdpMIBMeshGroupGroup OBJECT-GROUP + OBJECTS { msdpMeshGroupStatus } + STATUS current + DESCRIPTION + "A collection of objects for MSDP speakers that can + participate in MSDP mesh groups." + ::= { msdpMIBGroups 8 } + +msdpMIBPeerGroup2 OBJECT-GROUP + OBJECTS { msdpPeerRPFFailures, + msdpPeerState, msdpPeerInSAs, msdpPeerOutSAs, + msdpPeerInSARequests, msdpPeerOutSARequests, + msdpPeerInControlMessages, msdpPeerOutControlMessages, + msdpPeerFsmEstablishedTransitions, + msdpPeerFsmEstablishedTime, + msdpPeerLocalAddress, + msdpPeerRemotePort, msdpPeerLocalPort, + msdpPeerConnectRetryInterval, + msdpPeerHoldTimeConfigured, + msdpPeerKeepAliveConfigured, + msdpPeerInMessageTime, + msdpPeerConnectionAttempts, + msdpPeerStatus, + msdpPeerDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects for managing MSDP peers." + ::= { msdpMIBGroups 9 } + +END diff --git a/mibs/ietf/MTA-MIB b/mibs/ietf/MTA-MIB new file mode 100644 index 0000000..7a420e6 --- /dev/null +++ b/mibs/ietf/MTA-MIB @@ -0,0 +1,1215 @@ +MTA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, Counter32, Gauge32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + applIndex, URLString + FROM NETWORK-SERVICES-MIB; + +mta MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF Mail and Directory Management Working Group" + CONTACT-INFO + " Ned Freed + + Postal: Innosoft International, Inc. + 1050 Lakes Drive + West Covina, CA 91790 + US + + Tel: +1 626 919 3600 + Fax: +1 626 919 3614 + + E-Mail: ned.freed@innosoft.com" + DESCRIPTION + "The MIB module describing Message Transfer Agents (MTAs)" + REVISION "200003030000Z" + DESCRIPTION + "This revision, published in RFC 2789, changes a number of + DisplayStrings to SnmpAdminStrings. Note that this change + is not strictly supported by SMIv2. However, the alternative + of deprecating the old objects and defining new objects + would have a more adverse impact on backward compatibility + and interoperability, given the particular semantics of + these objects. The defining reference for distinguished + names has also been updated from RFC 1779 to RFC 2253." + REVISION "199905120000Z" + DESCRIPTION + "This revision fixes a number of technical problems found in + previous versions: The conformance groups for different + versions of this MIB have been corrected, the recommendation + that an empty string be returned if the last operation was + successful has been removed from + mtaGroupInboundRejectionReason and + mtaGroupOutboundConnectFailureReason as it conflicts + with the stated purpose of these variables, and the + required mtaStatusCode entry has been added to + MtaGroupErrorEntry. It should be noted that this last + change in no way affects the bits on the wire." + REVISION "199708170000Z" + DESCRIPTION + "This revision, published in RFC 2249, adds the + mtaGroupDescription and mtaGroupURL fields, conversion + operation counters, a group hierarchy description mechanism, + counters for specific errors, oldest message IDs, per-MTA + and per-group loop counters, and a new table for tracking + any errors an MTA encounters." + REVISION "199311280000Z" + DESCRIPTION + "The original version of this MIB was published in RFC 1566" + ::= {mib-2 28} + +mtaTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information specific to an MTA." + ::= {mta 1} + +mtaEntry OBJECT-TYPE + SYNTAX MtaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry associated with each MTA." + INDEX {applIndex} + ::= {mtaTable 1} + +MtaEntry ::= SEQUENCE { + mtaReceivedMessages + Counter32, + mtaStoredMessages + Gauge32, + mtaTransmittedMessages + Counter32, + mtaReceivedVolume + Counter32, + mtaStoredVolume + Gauge32, + mtaTransmittedVolume + Counter32, + mtaReceivedRecipients + Counter32, + mtaStoredRecipients + Gauge32, + mtaTransmittedRecipients + Counter32, + mtaSuccessfulConvertedMessages + Counter32, + mtaFailedConvertedMessages + Counter32, + mtaLoopsDetected + Counter32 +} + +mtaReceivedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages received since MTA initialization. + This includes messages transmitted to this MTA from other + MTAs as well as messages that have been submitted to the + MTA directly by end-users or applications." + ::= {mtaEntry 1} + +mtaStoredMessages OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages currently stored in the MTA. + This includes messages that are awaiting transmission to + some other MTA or are waiting for delivery to an end-user + or application." + ::= {mtaEntry 2} + +mtaTransmittedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages transmitted since MTA initialization. + This includes messages that were transmitted to some other + MTA or are waiting for delivery to an end-user or + application." + ::= {mtaEntry 3} + +mtaReceivedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages received since MTA + initialization, measured in kilo-octets. This volume should + include all transferred data that is logically above the mail + transport protocol level. For example, an SMTP-based MTA + should use the number of kilo-octets in the message header + and body, while an X.400-based MTA should use the number of + kilo-octets of P2 data. This includes messages transmitted + to this MTA from other MTAs as well as messages that have + been submitted to the MTA directly by end-users or + applications." + ::= {mtaEntry 4} + +mtaStoredVolume OBJECT-TYPE + SYNTAX Gauge32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages currently stored in the MTA, + measured in kilo-octets. This volume should include all + stored data that is logically above the mail transport + protocol level. For example, an SMTP-based MTA should + use the number of kilo-octets in the message header and + body, while an X.400-based MTA would use the number of + kilo-octets of P2 data. This includes messages that are + awaiting transmission to some other MTA or are waiting + for delivery to an end-user or application." + ::= {mtaEntry 5} + +mtaTransmittedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages transmitted since MTA + initialization, measured in kilo-octets. This volume should + include all transferred data that is logically above the mail + transport protocol level. For example, an SMTP-based MTA + should use the number of kilo-octets in the message header + and body, while an X.400-based MTA should use the number of + kilo-octets of P2 data. This includes messages that were + transmitted to some other MTA or are waiting for delivery + to an end-user or application." + ::= {mtaEntry 6} + +mtaReceivedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + received since MTA initialization. Recipients this MTA + has no responsibility for, i.e. inactive envelope + recipients or ones referred to in message headers, + should not be counted even if information about such + recipients is available. This includes messages + transmitted to this MTA from other MTAs as well as + messages that have been submitted to the MTA directly + by end-users or applications." + ::= {mtaEntry 7} + +mtaStoredRecipients OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + currently stored in the MTA. Recipients this MTA has no + responsibility for, i.e. inactive envelope recipients or + ones referred to in message headers, should not be + counted. This includes messages that are awaiting + transmission to some other MTA or are waiting for + delivery to an end-user or application." + ::= {mtaEntry 8} + +mtaTransmittedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + transmitted since MTA initialization. Recipients this + MTA had no responsibility for, i.e. inactive envelope + recipients or ones referred to in message headers, + should not be counted. This includes messages that were + transmitted to some other MTA or are waiting for + delivery to an end-user or application." + ::= {mtaEntry 9} + +mtaSuccessfulConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been successfully + converted from one form to another since MTA + initialization." + ::= {mtaEntry 10} + +mtaFailedConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages for which an unsuccessful + attempt was made to convert them from one form to + another since MTA initialization." + ::= {mtaEntry 11} + +mtaLoopsDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A message loop is defined as a situation where the MTA + decides that a given message will never be delivered to + one or more recipients and instead will continue to + loop endlessly through one or more MTAs. This variable + counts the number of times the MTA has detected such a + situation since MTA initialization. Note that the + mechanism MTAs use to detect loops (e.g., trace field + counting, count of references to this MTA in a trace + field, examination of DNS or other directory information, + etc.), the level at which loops are detected (e.g., per + message, per recipient, per directory entry, etc.), and + the handling of a loop once it is detected (e.g., looping + messages are held, looping messages are bounced or sent + to the postmaster, messages that the MTA knows will loop + won't be accepted, etc.) vary widely from one MTA to the + next and cannot be inferred from this variable." + ::= {mtaEntry 12} + +-- MTAs typically group inbound reception, queue storage, and +-- outbound transmission in some way, rather than accounting for +-- such operations only across the MTA as a whole. In the most +-- extreme case separate information will be maintained for each +-- different entity that receives messages and for each entity +-- the MTA stores messages for and delivers messages to. Other +-- MTAs may elect to treat all reception equally, all queue +-- storage equally, all deliveries equally, or some combination +-- of this. Overlapped groupings are also possible, where an MTA +-- decomposes its traffic in different ways for different +-- purposes. + +-- In any case, a grouping abstraction is an extremely useful for +-- breaking down the activities of an MTA. For purposes of +-- labelling this will be called a "group" in this MIB. + +-- Each group contains all the variables needed to monitor all +-- aspects of an MTA's operation. However, the fact that all +-- groups contain all possible variables does not imply that all +-- groups must use all possible variables. For example, a single +-- group might be used to monitor only one kind of event (inbound +-- processing, outbound processing, or storage). In this sort of +-- configuration any counters that are unused as a result of a +-- given MTA's use of the group construct must be inaccessible; +-- e.g., returning either a noSuchName error (for an SNMPv1 get), +-- or a noSuchInstance exception (for an SNMPv2 get). + +-- Groups can be created at any time after MTA initialization. Once +-- a group is created it should not be deleted or its mtaGroupIndex +-- changed unless the MTA is reinitialized. + +-- Groups are not necessarily mutually exclusive. A given event may +-- be recorded by more than one group, a message may be seen as +-- stored by more than one group, and so on. Groups should be all +-- inclusive, however: if groups are implemented all aspects of an +-- MTA's operation should be registered in at least one group. +-- This freedom lets implementors use different sets of groups to +-- provide different "views" of an MTA. + +-- The possibility of overlap between groups means that summing +-- variables across groups may not produce values equal to those in +-- the mtaTable. mtaTable should always provide accurate information + +-- about the MTA as a whole. + +-- The term "channel" is often used in MTA implementations; channels +-- are usually, but not always, equivalent to a group. However, +-- this MIB does not use the term "channel" because there is no +-- requirement that an MTA supporting this MIB has to map its +-- "channel" abstraction one-to-one onto the MIB's group abstraction. + +-- An MTA may create a group or group of groups at any time. Once +-- created, however, an MTA cannot delete an entry for a group from +-- the group table. Deletion is only allowed when the MTA is +-- reinitialized, and is not required even then. This restriction +-- is imposed so that monitoring agents can rely on group +-- assignments being consistent across multiple query operations. + +-- Groups may be laid out so as to form a hierarchical arrangement, +-- with some groups acting as subgroups for other groups. +-- Alternately, disjoint groups of groups may be used to provide +-- different sorts of "snapshots" of MTA operation. The +-- mtaGroupHierarchy variable provides an indication of how each +-- group fits into the overall arrangement being used. + +-- Note that SNMP also defines and uses term "group". MTA groups are +-- NOT the same as SNMP groups. + +mtaGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information specific to each MTA group." + ::= {mta 2} + +mtaGroupEntry OBJECT-TYPE + SYNTAX MtaGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry associated with each MTA group." + INDEX {applIndex, mtaGroupIndex} + ::= {mtaGroupTable 1} + +MtaGroupEntry ::= SEQUENCE { + mtaGroupIndex + INTEGER, + mtaGroupReceivedMessages + Counter32, + mtaGroupRejectedMessages + Counter32, + mtaGroupStoredMessages + Gauge32, + mtaGroupTransmittedMessages + Counter32, + mtaGroupReceivedVolume + Counter32, + mtaGroupStoredVolume + Gauge32, + mtaGroupTransmittedVolume + Counter32, + mtaGroupReceivedRecipients + Counter32, + mtaGroupStoredRecipients + Gauge32, + mtaGroupTransmittedRecipients + Counter32, + mtaGroupOldestMessageStored + TimeInterval, + mtaGroupInboundAssociations + Gauge32, + mtaGroupOutboundAssociations + Gauge32, + mtaGroupAccumulatedInboundAssociations + Counter32, + mtaGroupAccumulatedOutboundAssociations + Counter32, + mtaGroupLastInboundActivity + TimeInterval, + mtaGroupLastOutboundActivity + TimeInterval, + mtaGroupLastOutboundAssociationAttempt + TimeInterval, + mtaGroupRejectedInboundAssociations + Counter32, + mtaGroupFailedOutboundAssociations + Counter32, + mtaGroupInboundRejectionReason + SnmpAdminString, + mtaGroupOutboundConnectFailureReason + SnmpAdminString, + mtaGroupScheduledRetry + TimeInterval, + mtaGroupMailProtocol + OBJECT IDENTIFIER, + mtaGroupName + SnmpAdminString, + mtaGroupSuccessfulConvertedMessages + Counter32, + mtaGroupFailedConvertedMessages + Counter32, + mtaGroupDescription + SnmpAdminString, + mtaGroupURL + URLString, + mtaGroupCreationTime + TimeInterval, + mtaGroupHierarchy + INTEGER, + mtaGroupOldestMessageId + SnmpAdminString, + mtaGroupLoopsDetected + Counter32 +} + +mtaGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index associated with a group for a given MTA." + ::= {mtaGroupEntry 1} + +mtaGroupReceivedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages received to this group since + group creation." + ::= {mtaGroupEntry 2} + +mtaGroupRejectedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages rejected by this group since + group creation." + ::= {mtaGroupEntry 3} + +mtaGroupStoredMessages OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages currently stored in this + group's queue." + ::= {mtaGroupEntry 4} + +mtaGroupTransmittedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages transmitted by this group since + group creation." + ::= {mtaGroupEntry 5} + +mtaGroupReceivedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages received to this group since + group creation, measured in kilo-octets. This volume + should include all transferred data that is logically above + the mail transport protocol level. For example, an + SMTP-based MTA should use the number of kilo-octets in the + message header and body, while an X.400-based MTA should use + the number of kilo-octets of P2 data." + ::= {mtaGroupEntry 6} + +mtaGroupStoredVolume OBJECT-TYPE + SYNTAX Gauge32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages currently stored in this + group's queue, measured in kilo-octets. This volume should + include all stored data that is logically above the mail + transport protocol level. For example, an SMTP-based + MTA should use the number of kilo-octets in the message + header and body, while an X.400-based MTA would use the + number of kilo-octets of P2 data." + ::= {mtaGroupEntry 7} + +mtaGroupTransmittedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages transmitted by this group + since group creation, measured in kilo-octets. This + volume should include all transferred data that is logically + above the mail transport protocol level. For example, an + SMTP-based MTA should use the number of kilo-octets in the + message header and body, while an X.400-based MTA should use + the number of kilo-octets of P2 data." + ::= {mtaGroupEntry 8} + +mtaGroupReceivedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + received to this group since group creation. + Recipients this MTA has no responsibility for should not + be counted." + ::= {mtaGroupEntry 9} + +mtaGroupStoredRecipients OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + currently stored in this group's queue. Recipients this + MTA has no responsibility for should not be counted." + ::= {mtaGroupEntry 10} + +mtaGroupTransmittedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + transmitted by this group since group creation. + Recipients this MTA had no responsibility for should not + be counted." + ::= {mtaGroupEntry 11} + +mtaGroupOldestMessageStored OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the oldest message in this group's queue was + placed in the queue." + ::= {mtaGroupEntry 12} + +mtaGroupInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the group, where the + group is the responder." + ::= {mtaGroupEntry 13} + +mtaGroupOutboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the group, where the + group is the initiator." + ::= {mtaGroupEntry 14} + +mtaGroupAccumulatedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the group since + group creation, where the MTA was the responder." + ::= {mtaGroupEntry 15} + +mtaGroupAccumulatedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations from the group since + group creation, where the MTA was the initiator." + ::= {mtaGroupEntry 16} + +mtaGroupLastInboundActivity OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group had an active + inbound association for purposes of message reception." + ::= {mtaGroupEntry 17} + +mtaGroupLastOutboundActivity OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group had a + successful outbound association for purposes of + message delivery." + ::= {mtaGroupEntry 18} + +mtaGroupLastOutboundAssociationAttempt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group attempted + to make an outbound association for purposes of + message delivery." + ::= {mtaGroupEntry 34} + +mtaGroupRejectedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of inbound associations the group has + rejected, since group creation. Rejected associations + are not counted in the accumulated association totals." + ::= {mtaGroupEntry 19} + +mtaGroupFailedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number associations where the group was the + initiator and association establishment has failed, + since group creation. Failed associations are + not counted in the accumulated association totals." + ::= {mtaGroupEntry 20} + +mtaGroupInboundRejectionReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The failure reason, if any, for the last association this + group refused to respond to. If no association attempt + has been made since the MTA was initialized the value + should be 'never'." + ::= {mtaGroupEntry 21} + +mtaGroupOutboundConnectFailureReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The failure reason, if any, for the last association attempt + this group initiated. If no association attempt has been + made since the MTA was initialized the value should be + 'never'." + ::= {mtaGroupEntry 22} + +mtaGroupScheduledRetry OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time until this group is next scheduled to + attempt to make an association." + ::= {mtaGroupEntry 23} + +mtaGroupMailProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used by this group. + For an group employing OSI protocols, this will be the + Application Context. For Internet applications, OID + values of the form {applTCPProtoID port} or {applUDPProtoID + port} are used for TCP-based and UDP-based protocols, + respectively. In either case 'port' corresponds to the + primary port number being used by the protocol. The + usual IANA procedures may be used to register ports for + new protocols. applTCPProtoID and applUDPProtoID are + defined in the NETWORK-SERVICES-MIB, RFC 2788." + ::= {mtaGroupEntry 24} + +mtaGroupName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A descriptive name for the group. If this group connects to + a single remote MTA this should be the name of that MTA. If + this in turn is an Internet MTA this should be the domain + name. For an OSI MTA it should be the string encoded + distinguished name of the managed object using the format + defined in RFC 2253. For X.400(1984) MTAs which do not + have a Distinguished Name, the RFC 2156 syntax + 'mta in globalid' used in X400-Received: fields can be + used." + ::= {mtaGroupEntry 25} + +mtaGroupSuccessfulConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been successfully + converted from one form to another in this group + since group creation." + ::= {mtaGroupEntry 26} + +mtaGroupFailedConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages for which an unsuccessful + attempt was made to convert them from one form to + another in this group since group creation." + ::= {mtaGroupEntry 27} + +mtaGroupDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the group's purpose. This information is + intended to identify the group in a status display." + ::= {mtaGroupEntry 28} + +mtaGroupURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A URL pointing to a description of the group. This + information is intended to identify and briefly describe + the group in a status display." + ::= {mtaGroupEntry 29} + +mtaGroupCreationTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since this group was first created." + ::= {mtaGroupEntry 30} + +mtaGroupHierarchy OBJECT-TYPE + SYNTAX INTEGER (-2147483648..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes how this group fits into the hierarchy. A + positive value is interpreted as an mtaGroupIndex + value for some other group whose variables include + those of this group (and usually others). A negative + value is interpreted as a group collection code: Groups + with common negative hierarchy values comprise one + particular breakdown of MTA activity as a whole. A + zero value means that this MIB implementation doesn't + implement hierarchy indicators and thus the overall + group hierarchy cannot be determined." + ::= {mtaGroupEntry 31} + +mtaGroupOldestMessageId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Message ID of the oldest message in the group's queue. + Whenever possible this should be in the form of an + RFC 822 msg-id; X.400 may convert X.400 message + identifiers to this form by following the rules laid + out in RFC2156." + ::= {mtaGroupEntry 32} + +mtaGroupLoopsDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A message loop is defined as a situation where the MTA + decides that a given message will never be delivered to + one or more recipients and instead will continue to + loop endlessly through one or more MTAs. This variable + counts the number of times the MTA has detected such a + situation in conjunction with something associated with + this group since group creation. Note that the + mechanism MTAs use to detect loops (e.g., trace field + counting, count of references to this MTA in a trace + field, examination of DNS or other directory information, + etc.), the level at which loops are detected (e.g., per + message, per recipient, per directory entry, etc.), and + the handling of a loop once it is detected (e.g., looping + messages are held, looping messages are bounced or sent + to the postmaster, messages that the MTA knows will loop + won't be accepted, etc.) vary widely from one MTA to the + next and cannot be inferred from this variable." + ::= {mtaGroupEntry 33} + +-- The mtaGroupAssociationTable provides a means of correlating +-- entries in the network services association table with the +-- MTA group responsible for the association. + +mtaGroupAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupAssociationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information regarding the associations + for each MTA group." + ::= {mta 3} + +mtaGroupAssociationEntry OBJECT-TYPE + SYNTAX MtaGroupAssociationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry holding information regarding the associations + for each MTA group." + INDEX {applIndex, mtaGroupIndex, mtaGroupAssociationIndex} + ::= {mtaGroupAssociationTable 1} + +MtaGroupAssociationEntry ::= SEQUENCE { + mtaGroupAssociationIndex + INTEGER +} + +mtaGroupAssociationIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reference into association table to allow correlation of + this group's active associations with the association table." + ::= {mtaGroupAssociationEntry 1} + +-- The mtaGroupErrorTable gives each group a way of tallying +-- the specific errors it has encountered. The mechanism +-- defined here uses RFC 1893 status codes to identify +-- various specific errors. There are also classes for generic +-- errors of various sorts, and the entire mechanism is also +-- extensible, in that new error codes can be defined at any +-- time. + +mtaGroupErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information regarding accumulated errors + for each MTA group." + ::= {mta 5} + +mtaGroupErrorEntry OBJECT-TYPE + SYNTAX MtaGroupErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry holding information regarding accumulated + errors for each MTA group." + INDEX {applIndex, mtaGroupIndex, mtaStatusCode} + ::= {mtaGroupErrorTable 1} + +MtaGroupErrorEntry ::= SEQUENCE { + mtaStatusCode + INTEGER, + mtaGroupInboundErrorCount + Counter32, + mtaGroupInternalErrorCount + Counter32, + mtaGroupOutboundErrorCount + Counter32 +} + +mtaGroupInboundErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group + while processing incoming messages. In the case of SMTP + these will typically be errors reporting by an SMTP + server to the remote client; in the case of X.400 + these will typically be errors encountered while + processing an incoming message." + ::= {mtaGroupErrorEntry 1} + +mtaGroupInternalErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group + during internal MTA processing." + ::= {mtaGroupErrorEntry 2} + +mtaGroupOutboundErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group's + outbound connection activities. In the case of an SMTP + client these will typically be errors reported while + attempting to contact or while communicating with the + remote SMTP server. In the case of X.400 these will + typically be errors encountered while constructing + or attempting to deliver an outgoing message." + ::= {mtaGroupErrorEntry 3} + +mtaStatusCode OBJECT-TYPE + SYNTAX INTEGER (4000000..5999999) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index capable of representing an Enhanced Mail System + Status Code. Enhanced Mail System Status Codes are + defined in RFC 1893. These codes have the form + + class.subject.detail + + Here 'class' is either 2, 4, or 5 and both 'subject' and + 'detail' are integers in the range 0..999. Given a status + code the corresponding index value is defined to be + ((class * 1000) + subject) * 1000 + detail. Both SMTP + error response codes and X.400 reason and diagnostic codes + can be mapped into these codes, resulting in a namespace + capable of describing most error conditions a mail system + encounters in a generic yet detailed way." + ::= {mtaGroupErrorEntry 4} + +-- Conformance information + +mtaConformance OBJECT IDENTIFIER ::= {mta 4} + +mtaGroups OBJECT IDENTIFIER ::= {mtaConformance 1} +mtaCompliances OBJECT IDENTIFIER ::= {mtaConformance 2} + + +-- Compliance statements + +mtaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 1566 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC1566Group} + ::= {mtaCompliances 1} + +mtaAssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 1566 implementations + which support the Mail Monitoring MIB for monitoring + of MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC1566Group, mtaRFC1566AssocGroup} + ::= {mtaCompliances 2} + +mtaRFC2249Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group} + ::= {mtaCompliances 5} + +mtaRFC2249AssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249AssocGroup} + ::= {mtaCompliances 6} + +mtaRFC2249ErrorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249ErrorGroup} + ::= {mtaCompliances 7} + +mtaRFC2249FullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the full Mail Monitoring MIB for + monitoring of MTAs, associations, and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249AssocGroup, + mtaRFC2249ErrorGroup} + ::= {mtaCompliances 8} + +mtaRFC2789Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group} + ::= {mtaCompliances 9} + +mtaRFC2789AssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789AssocGroup} + ::= {mtaCompliances 10} + +mtaRFC2789ErrorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789ErrorGroup} + ::= {mtaCompliances 11} + +mtaRFC2789FullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the full Mail Monitoring MIB for + monitoring of MTAs, associations, and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789AssocGroup, + mtaRFC2789ErrorGroup} + ::= {mtaCompliances 12} + +-- Units of conformance + +mtaRFC1566Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This is the original set of such objects defined in RFC + 1566." + ::= {mtaGroups 10} + +mtaRFC1566AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This is the original set of such objects + defined in RFC 1566." + ::= {mtaGroups 11} + +mtaRFC2249Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaSuccessfulConvertedMessages, mtaFailedConvertedMessages, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, mtaLoopsDetected, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupLastOutboundAssociationAttempt, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName, + mtaGroupSuccessfulConvertedMessages, + mtaGroupFailedConvertedMessages, mtaGroupDescription, + mtaGroupURL, mtaGroupCreationTime, mtaGroupHierarchy, + mtaGroupOldestMessageId, mtaGroupLoopsDetected} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This group was originally defined in RFC 2249." + ::= {mtaGroups 4} + +mtaRFC2249AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This group was originally defined in RFC + 2249." + ::= {mtaGroups 5} + +mtaRFC2249ErrorGroup OBJECT-GROUP + OBJECTS { + mtaGroupInboundErrorCount, mtaGroupInternalErrorCount, + mtaGroupOutboundErrorCount} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of + detailed MTA errors. This group was originally defined + in RFC 2249." + ::= {mtaGroups 6} + +mtaRFC2789Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaSuccessfulConvertedMessages, mtaFailedConvertedMessages, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, mtaLoopsDetected, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupLastOutboundAssociationAttempt, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName, + mtaGroupSuccessfulConvertedMessages, + mtaGroupFailedConvertedMessages, mtaGroupDescription, + mtaGroupURL, mtaGroupCreationTime, mtaGroupHierarchy, + mtaGroupOldestMessageId, mtaGroupLoopsDetected} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This is the appropriate group for RFC 2789." + ::= {mtaGroups 7} + +mtaRFC2789AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This is the appropriate group for RFC + 2789 association monitoring." + ::= {mtaGroups 8} + +mtaRFC2789ErrorGroup OBJECT-GROUP + OBJECTS { + mtaGroupInboundErrorCount, mtaGroupInternalErrorCount, + mtaGroupOutboundErrorCount} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of + detailed MTA errors. This is the appropriate group + for RFC 2789 error monitoring." + ::= {mtaGroups 9} + +END diff --git a/mibs/ietf/Makefile.am b/mibs/ietf/Makefile.am new file mode 100644 index 0000000..d2627b6 --- /dev/null +++ b/mibs/ietf/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +ietfdir = $(mibdir)/ietf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +ietf_DATA = $(MIBS) diff --git a/mibs/ietf/Makefile.in b/mibs/ietf/Makefile.in new file mode 100644 index 0000000..861e8b9 --- /dev/null +++ b/mibs/ietf/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/ietf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(ietfdir)" +ietfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(ietf_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ietfdir = $(mibdir)/ietf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +ietf_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/ietf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/ietf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ietfDATA: $(ietf_DATA) + @$(NORMAL_INSTALL) + test -z "$(ietfdir)" || $(MKDIR_P) "$(DESTDIR)$(ietfdir)" + @list='$(ietf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(ietfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ietfdir)/$$f'"; \ + $(ietfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ietfdir)/$$f"; \ + done + +uninstall-ietfDATA: + @$(NORMAL_UNINSTALL) + @list='$(ietf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(ietfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(ietfdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(ietfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-ietfDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-ietfDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-ietfDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-ietfDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/ietf/Modem-MIB b/mibs/ietf/Modem-MIB new file mode 100644 index 0000000..64116c0 --- /dev/null +++ b/mibs/ietf/Modem-MIB @@ -0,0 +1,1340 @@ +Modem-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32 FROM SNMPv2-SMI + DisplayString FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2 FROM RFC1213-MIB; + + +mdmMIB MODULE-IDENTITY + LAST-UPDATED "9406120000Z" + ORGANIZATION "IETF Modem Management Working Group" + CONTACT-INFO + " Steven Waldbusser + Postal: Carnegie Mellon University + 5000 Forbes Ave + Pittsburgh, PA, 15213 + US + + Tel: +1 412 268 6628 + Fax: +1 412 268 4987 + E-mail: waldbusser@cmu.edu" + DESCRIPTION + "The MIB module for management of dial-up modems." + ::= { mdmMib 1 } + +mdmMib OBJECT IDENTIFIER ::= { mib-2 38 } + +mdmMIBObjects OBJECT IDENTIFIER ::= { mdmMIB 1 } + + +-- conformance information + +mdmConformance OBJECT IDENTIFIER ::= { mdmMIB 2 } + +mdmCompliances OBJECT IDENTIFIER ::= { mdmConformance 1 } +mdmGroups OBJECT IDENTIFIER ::= { mdmConformance 2 } + +-- units of conformance + +mdmIDGroup OBJECT-GROUP + OBJECTS { mdmIDManufacturerOID, mdmIDProductDetails } + STATUS current + DESCRIPTION + "A collection of objects that identify the manufacturer and + model information for a modem." + ::= { mdmGroups 1 } + +mdmLineInterfaceGroup OBJECT-GROUP + OBJECTS { mdmLineCarrierLossTime, + mdmLineState, mdmLineCapabilitiesID, + mdmLineCapabilitiesEnableRequested, + mdmLineCapabilitiesEnableGranted } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of the modem's line interface." + ::= { mdmGroups 2 } + +mdmDTEInterfaceGroup OBJECT-GROUP + OBJECTS { mdmDTEActionDTROnToOff, mdmDTEActionDTROffToOn, + mdmDTESyncTimingSource, mdmDTESyncAsyncMode, + mdmDTEInactivityTimeout } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of the modem's DTE interface." + ::= { mdmGroups 3 } + +mdmCallControlGroup OBJECT-GROUP + OBJECTS { mdmCCRingsBeforeAnswer, + mdmCCCallSetUpFailTimer, mdmCCResultCodeEnable, + mdmCCEscapeAction, mdmCCCallDuration, + mdmCCConnectionFailReason, mdmCCStoredDialString } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration of + call control capabilities on the modem and the status of + calls placed with this modem." + ::= { mdmGroups 4 } + +mdmErrorControlGroup OBJECT-GROUP + OBJECTS { mdmECErrorControlUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of error control on a modem." + ::= { mdmGroups 5 } + +mdmDataCompressionGroup OBJECT-GROUP + OBJECTS { mdmDCCompressionTypeUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of data compression on a modem." + ::= { mdmGroups 6 } + +mdmSignalConvertorGroup OBJECT-GROUP +OBJECTS { mdmSCCurrentLineReceiveRate, mdmSCCurrentLineTransmitRate, + mdmSCInitialLineReceiveRate, mdmSCInitialLineTransmitRate, + mdmSCModulationSchemeUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of error control on a modem." + ::= { mdmGroups 7 } + +mdmStatisticsGroup OBJECT-GROUP + OBJECTS { mdmStatsRingNoAnswers, + mdmStatsIncomingConnectionFailures, + mdmStatsIncomingConnectionCompletions, + mdmStatsFailedDialAttempts, + mdmStatsOutgoingConnectionFailures, + mdmStatsOutgoingConnectionCompletions, + mdmStatsRetrains, + mdmStats2400OrLessConnections, mdmStats2400To14400Connections, + mdmStatsGreaterThan14400Connections, + mdmStatsErrorControlledConnections, + mdmStatsCompressedConnections, + mdmStatsCompressionEfficiency, + mdmStatsSentOctets, mdmStatsReceivedOctets, + mdmStatsSentDataFrames, mdmStatsReceivedDataFrames, + mdmStatsResentFrames, mdmStatsErrorFrames } + STATUS current + DESCRIPTION + "A collection of objects that describe the state of calls on + this modem." + ::= { mdmGroups 8 } + +mdmNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of modem rows in the modem table. This value + defines the maximum value of the mdmIndex object." + ::= { mdmMIBObjects 1 } + +-- The modem ID table. + +mdmIDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The base table for the modems managed by this MIB. The + mdmLineTable, mdmDTEInterfaceTable, mdmCallControlTable, and + mdmStatsTable all augment the rows defined in this table." + ::= { mdmMIBObjects 2 } + +mdmIDEntry OBJECT-TYPE + SYNTAX MdmIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + INDEX { mdmIndex } + ::= { mdmIDTable 1 } + +MdmIDEntry ::= SEQUENCE { + mdmIndex Integer32, + mdmIDManufacturerOID OBJECT IDENTIFIER, + mdmIDProductDetails DisplayString +} + +mdmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique number for each modem that ranges from 1 to + mdmNumber. The value must remain constant at least from one + re-initialization of the network management agent to the + next." + ::= { mdmIDEntry 1 } + +mdmIDManufacturerOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value is intended to identify the manufacturer, model, + and version of this modem. This may be used to identify the + existance of enterprise-specific functions and behaviours." + REFERENCE + "V.58 attribute manufacturerID subfield ManufacturerOI" + ::= { mdmIDEntry 2 } + +mdmIDProductDetails OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..79)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this device, including the + manufacturer's name, modem model name, hardware revision, + firmware revision, and optionally, its serial number. The + exact format of this description is defined by the vendor. + This description may only contain characters from the NVT + ASCII character set." + REFERENCE + "V.58 attribute manufacturerID subfield productDetails" + ::= { mdmIDEntry 3 } + +-- The modem Line Interface Table + +mdmLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem Line Table augments the modem ID table." + ::= { mdmMIBObjects 3 } + +mdmLineEntry OBJECT-TYPE + SYNTAX MdmLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmLineTable 1 } + +MdmLineEntry ::= SEQUENCE { + mdmLineCarrierLossTime Integer32, + mdmLineState INTEGER +} + +mdmLineCarrierLossTime OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Duration in 10ths of a second the modem waits after loss of + carrier before hanging up. If this value is set to `255', + the modem will not hang up upon loss of carrier. This + allows the modem to distinguish between a momentary lapse in + line quality and a true disconnect and can be useful to tune + the tolerance of the modem to lines of poor quality." + REFERENCE "V.58 lineSignalFailDisconnectTimer" + ::= { mdmLineEntry 1 } + +mdmLineState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + onHook(2), + offHook(3), -- and not connected + connected(4), + busiedOut(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the inspection and alteration of the state of the + modem. Management commands may change the state to `on- + hook', `busied-out', or `reset' from any state. No other + alterations are permitted from the management protocol. + When this object is set to reset, the modem shall be reset + and the value will change to the modem's new, implementation + dependent state." + ::= { mdmLineEntry 2 } + +mdmLineCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmLineCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of protocol capabilities for this modem." + ::= { mdmMIBObjects 4 } + +mdmLineCapabilitiesEntry OBJECT-TYPE + SYNTAX MdmLineCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A listing of the protocol(s) that this modem is capable of. + Entries in this table are created only by the agent. One + entry exists for each protocol that the modem is capable of, + regardless of whether that protocol is enabled or not. + + This table is useful for providing an inventory of the + capabilities on a modem, and allowing the manager to enable + or disable capabilities from the menu of available + possibilities. Row creation is not required to enable or + disable capabilities." + INDEX { mdmIndex, mdmLineCapabilitiesIndex } + ::= { mdmLineCapabilitiesTable 1 } + +MdmLineCapabilitiesEntry ::= SEQUENCE { + mdmLineCapabilitiesIndex Integer32, + mdmLineCapabilitiesID OBJECT IDENTIFIER, + mdmLineCapabilitiesEnableRequested INTEGER, + mdmLineCapabilitiesEnableGranted INTEGER +} + +mdmLineCapabilitiesIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this capabilities entry." + ::= { mdmLineCapabilitiesEntry 1 } + +mdmLineCapabilitiesID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for this capability. Standard protocol + capabilities will have identifiers registered in this + document or other companion standards documents. + Proprietary protocol capabilities will be registered by + their respective organization. All capabilities, standard + or vendor-specific, shall be registered in this table." + ::= { mdmLineCapabilitiesEntry 2 } + +mdmLineCapabilitiesEnableRequested OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + optional(2), + preferred(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The requested configuration of this capability. If this + value is 'disabled(1)', this is a request to disable this + protocol. If this value is 'preferred(3)', this is a + request to enable this protocol, and to prefer it in any + negotiation over other appropriate protocols that have a + value of 'optional(2)'." + DEFVAL { preferred } + ::= { mdmLineCapabilitiesEntry 3 } + +mdmLineCapabilitiesEnableGranted OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + optional(2), + preferred(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual configuration of this capability. The agent + shall attempt to set this as close as possible to the + associated mdmLineCapabilitiesEnableRequested value. The + agent shall make this determination in an implementation- + specific manner that may take into account the configuration + of other capabilities or other considerations. The modem + will choose in an implementation-specific manner between + multiple mutually-exclusive capabilities that each have the + same (non-disabled) value. However, the modem must prefer + all capabilities with a value of 'preferred(3)' over all + capabilities with a value of 'optional(2)'. + + In other words, if there are one or more mutually-exclusive + capabilities (e.g. V.32 and V.32bis) that are set to + `preferred', the agent must choose one in an + implementation-specific manner. Otherwise, if there are one + or more mutually-exclusive capabilities that are set to + `optional', the agent must choose one in an implementation- + specific manner." + ::= { mdmLineCapabilitiesEntry 4 } + +mdmLineCapabilities OBJECT IDENTIFIER ::= { mdmMIBObjects 5 } + +mdmLineCapabilitiesV21 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.21" + ::= { mdmLineCapabilities 1 } + +mdmLineCapabilitiesV22 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.22" + ::= { mdmLineCapabilities 2 } + +mdmLineCapabilitiesV22bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.22bis" + ::= { mdmLineCapabilities 3 } + +mdmLineCapabilitiesV23CC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.23CC" + ::= { mdmLineCapabilities 4 } + +mdmLineCapabilitiesV23SC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.23SC" + ::= { mdmLineCapabilities 5 } + +mdmLineCapabilitiesV25bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.25bis" + ::= { mdmLineCapabilities 6 } + +mdmLineCapabilitiesV26bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.26bis" + ::= { mdmLineCapabilities 7 } + +mdmLineCapabilitiesV26ter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.26ter" + ::= { mdmLineCapabilities 8 } + +mdmLineCapabilitiesV27ter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.27ter" + ::= { mdmLineCapabilities 9 } + +mdmLineCapabilitiesV32 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32" + ::= { mdmLineCapabilities 10 } + +mdmLineCapabilitiesV32bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32bis" + ::= { mdmLineCapabilities 11 } + +mdmLineCapabilitiesV32terbo OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32terbo" + ::= { mdmLineCapabilities 12 } + +mdmLineCapabilitiesVFC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.FC" + ::= { mdmLineCapabilities 13 } + +mdmLineCapabilitiesV34 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.34" + ::= { mdmLineCapabilities 14 } + +mdmLineCapabilitiesV42 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.42" + ::= { mdmLineCapabilities 15 } + +mdmLineCapabilitiesV42bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.42bis" + ::= { mdmLineCapabilities 16 } + +mdmLineCapabilitiesMNP1 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP1" + ::= { mdmLineCapabilities 17 } + +mdmLineCapabilitiesMNP2 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP2" + ::= { mdmLineCapabilities 18 } + +mdmLineCapabilitiesMNP3 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP3" + ::= { mdmLineCapabilities 19 } + +mdmLineCapabilitiesMNP4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP4" + ::= { mdmLineCapabilities 20 } + +mdmLineCapabilitiesMNP5 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP5" + ::= { mdmLineCapabilities 21 } + +mdmLineCapabilitiesMNP6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP6" + ::= { mdmLineCapabilities 22 } + +mdmLineCapabilitiesMNP7 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP7" + ::= { mdmLineCapabilities 23 } + +mdmLineCapabilitiesMNP8 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP8" + ::= { mdmLineCapabilities 24 } + +mdmLineCapabilitiesMNP9 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP9" + ::= { mdmLineCapabilities 25 } + +mdmLineCapabilitiesMNP10 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP10" + ::= { mdmLineCapabilities 26 } + +mdmLineCapabilitiesV29 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.29" + ::= { mdmLineCapabilities 27 } + +mdmLineCapabilitiesV33 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.33" + ::= { mdmLineCapabilities 28 } + +mdmLineCapabilitiesBell208 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Bell 208" + ::= { mdmLineCapabilities 29 } + + +-- DTE Interface Table + +mdmDTEInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmDTEInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem DTE Interface Table augments the modem ID table." + ::= { mdmMIBObjects 6 } + +mdmDTEInterfaceEntry OBJECT-TYPE + SYNTAX MdmDTEInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmDTEInterfaceTable 1 } + +MdmDTEInterfaceEntry ::= SEQUENCE { + mdmDTEActionDTROnToOff INTEGER, + mdmDTEActionDTROffToOn INTEGER, + mdmDTESyncTimingSource INTEGER, + mdmDTESyncAsyncMode INTEGER, + mdmDTEInactivityTimeout Integer32 +} + +mdmDTEActionDTROnToOff OBJECT-TYPE + SYNTAX INTEGER { + ignore(1), + escapeToCommandMode(2), + disconnectCall(3), + resetModem(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action the modem will take when DTR drops. + + If the value is set to ignore(1), the modem takes no action + when DTR drops. Typically, mdmDTEActionDTROffToOn would + also be set to ignore(1) if this object is set to ignore(1). + + If the value is escapeToCommandMode(2), the modem remains + connected and enters command mode. If the value is + disconnectCall(3), the current call (if any) is terminated + and the modem will not auto-answer while DTR is off. If the + value is resetModem(4), the current call (if any) is + terminated and the modem is reset." + DEFVAL { disconnectCall } + ::= { mdmDTEInterfaceEntry 1 } + +mdmDTEActionDTROffToOn OBJECT-TYPE + SYNTAX INTEGER { + ignore(1), + enableDial(2), + autoAnswerEnable(3), + establishConnection(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action the modem will take when DTR is raised. + + If the value is set to ignore(1), the modem takes no action + when DTR is raised. Typically, mdmDTEActionDTROnToOff would + also be set to ignore(1) if this object is set to ignore(1). + + If the value is set to enableDial(2), the modem prepares to + dial an outgoing call. If the value is set to + autoAnswerEnable(3), the modem will be configured to answer + any incoming call. If the value is set to + establishConnection(4), the modem dials an implementation + specific number. + + Immediately after any reset or power-on of the modem, if the + DTR is high, the action specified here will be executed." + DEFVAL { autoAnswerEnable } + ::= { mdmDTEInterfaceEntry 2 } + +mdmDTESyncTimingSource OBJECT-TYPE + SYNTAX INTEGER { + internal(1), + external(2), + loopback(3), + network(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The clock source for synchronous transmissions. If set to + internal(1), the modem is the clock source and sends the + clock signals to the DTE. If set to external(2), the + transmit clock signals are provided by the DTE. If + loopback(3), the modem receiver clock is used for the + transmit clock. If network(4), the clock signals are + supplied by the DCE interface. + + If the modem is not in synchronous mode, setting this object + will have no effect on the current operations of the modem." + REFERENCE "V.58 transmitClockSource" + DEFVAL { internal } + ::= { mdmDTEInterfaceEntry 3 } + +mdmDTESyncAsyncMode OBJECT-TYPE + SYNTAX INTEGER { + async(1), + sync(2), + syncAfterDial(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The operational mode of the modem. If the value is + syncAfterDial(3), the modem will accept commands in + asynchronous mode and change to synchronous mode to pass + data after a dial sequence has been executed." + DEFVAL { async } + ::= { mdmDTEInterfaceEntry 4 } + +mdmDTEInactivityTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of idle time in minutes that the modem will wait + before disconnecting a connection. When a call is connected + and no data is transferred (continuous marking condition) on + both circuits 103 and 104 for the specified time, the DCE + disconnects the call. If the value is 0, no idle disconnect + will occur. This function applies to asynchronous dial + operations only and is intended for administrative control + over idle connections." + REFERENCE "V.58 inactivityTimerSelect" + DEFVAL { 0 } + ::= { mdmDTEInterfaceEntry 5 } + + +-- The Call Control Table + +mdmCallControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmCallControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem Call Control Table augments the modem ID table." + ::= { mdmMIBObjects 7 } + +mdmCallControlEntry OBJECT-TYPE + SYNTAX MdmCallControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmCallControlTable 1 } + +MdmCallControlEntry ::= SEQUENCE { + mdmCCRingsBeforeAnswer Integer32, + mdmCCCallSetUpFailTimer Integer32, + mdmCCResultCodeEnable INTEGER, + mdmCCEscapeAction INTEGER, + mdmCCCallDuration Integer32, + mdmCCConnectionFailReason INTEGER +} + +mdmCCRingsBeforeAnswer OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Determines which ring the modem will wait to answer the + phone on. If this value is `0', the modem will not go + offhook and answer a call when a ring signal is detected." + REFERENCE "V.58 ringsBeforeAnswer" + DEFVAL { 1 } + ::= { mdmCallControlEntry 1 } + +mdmCCCallSetUpFailTimer OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter specifies the amount of time, in seconds, + that the modem shall allow between either answering a call + (automatically or manually) or completion of dialing, and + establishment of a connection with the remote modem. If no + connection is established during this time, the modem + disconnects from the line and returns a result code + indicating the cause of the disconnection. In TIA-602, this + is controlled by the value in the S7 register." + REFERENCE "V.58 callSetUpFailTimer" + DEFVAL { 30 } + ::= { mdmCallControlEntry 2 } + +mdmCCResultCodeEnable OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + numericEnabled(2), + verboseEnabled(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When disabled, the DCE shall issue no 'result codes' of any + kind to the DTE either in response to unsolicited events + (eg. ring signal), or commands. In TIA-602, this is + controlled by the ATQ command. When numericEnabled, the DCE + shall issue result codes in numeric form. When + verboseEnabled, the DCE shall issue result codes in a + verbose, textual form." + REFERENCE "V.58 responseModeSelect" + DEFVAL { verboseEnabled } + ::= { mdmCallControlEntry 3 } + +mdmCCEscapeAction OBJECT-TYPE + SYNTAX INTEGER { + ignoreEscape(1), + hangUp(2), + enterCommandMode(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The modem's action upon successfully recognizing the + 'escape to command mode' character sequence." + DEFVAL { ignoreEscape } + ::= { mdmCallControlEntry 4 } + +-- Call status portion of the call control table + +mdmCCCallDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Present or last completed connection time in seconds. If + there have been no previous connections, this value should + be -1." + ::= { mdmCallControlEntry 5 } + + +mdmCCConnectionFailReason OBJECT-TYPE + SYNTAX INTEGER { + -- General + unknown(1), + other(2), + managementCommand(3), + inactivityTimeout(4), + mnpIncompatibility(5), + protocolError(6), + -- DCE + powerLoss(10), + equipmentFailure(11), + -- DTE Interface + dtrDrop(20), + -- Line Interface + noDialTone(30), + lineBusy(31), + noAnswer(32), + voiceDetected(33), + -- Signal Converter + carrierLost(40), + trainingFailed(41), + faxDetected(42) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "Indicates the reason that the last connection or attempt + failed. The meaning of each reason code is explained below. + + unknown: + This code means the failure reason is unknown or + there has been no previous call. + + other: + This code used when no other code is applicable. + Additional vendor information may be available + elsewhere. + + managementCommand: + A management command terminated the call. These + commands include escaping to command mode, initiating + dialing, restoring lines, and disconnecting. + + inactivityTimeout: + The call was terminated because it was inactive for + at the minimum duration specified. + + mnpIncompatibility: + The modems are unable to resolve MNP protocol + differences. + + protocolError: + An error occured in one of protocol in use. Further + information is required to determine in which + protocol the error occurred, and the exact nature of + the error. + + powerLoss: + The modem lost power and disconnected the call. + + equipmentFailure: + The modem equipment failed. + + dtrDrop: + DTR has been turned off while the modem is to + disconnect on DTR drop. (Ref: V.58 cct108TurnedOff) + + noDialTone: + If the modem is to monitor for call progress tones, + but the modem has failed to detect dial tone while + attempting to dial a number. + + lineBusy: + Busy signal is detected while busy signal detection + is enabled, or while the 'W' or '@' dial modifier is + used. (Ref: V.58 engagedTone) + + noAnswer: + The call was not answered. + + voiceDetected: + A voice was detected on the call. + + carrierLost: + Indicates that the modem has disconnected due to + detection of loss of carrier. In TIA-602, the S10 + register determines the time that loss of carrier + must be detected before the modem disconnects. + + trainingFailed: + Indicates that the modems did not successfully train + and reach data mode on the previous connection. + + faxDetected: + A fax was detected on the call." + REFERENCE "V.58 callCleared" + ::= { mdmCallControlEntry 6 } + +-- The Stored Dial String table + +mdmCCStoredDialStringTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmCCStoredDialStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of stored dial strings." + REFERENCE "V.58 telephoneNumbers" + ::= { mdmMIBObjects 8 } + +mdmCCStoredDialStringEntry OBJECT-TYPE + SYNTAX MdmCCStoredDialStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A stored dial string." + INDEX { mdmIndex, mdmCCStoredDialStringIndex } + ::= { mdmCCStoredDialStringTable 1 } + +MdmCCStoredDialStringEntry ::= SEQUENCE { + mdmCCStoredDialStringIndex Integer32, + mdmCCStoredDialString DisplayString +} + +mdmCCStoredDialStringIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index of a particular dial string." + ::= { mdmCCStoredDialStringEntry 1 } + +mdmCCStoredDialString OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A dial string stored in the modem." + ::= { mdmCCStoredDialStringEntry 2 } + +-- The modem Error Correcting Group + +mdmECTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmECEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem error correcting table augments the modem ID + table." + ::= { mdmMIBObjects 9 } + +mdmECEntry OBJECT-TYPE + SYNTAX MdmECEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmECTable 1 } + +MdmECEntry ::= SEQUENCE { + mdmECErrorControlUsed OBJECT IDENTIFIER +} + +mdmECErrorControlUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the error control method used during the current + or previous call. This shall be one of the values for error + control protocols registered in the capabilities table for + this modem. If no error control protocol is in use, this + object shall have the value '{0 0}'." + REFERENCE "V.58 errorControlActive" + ::= { mdmECEntry 1 } + +-- The modem Data Compression Group + +mdmDCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmDCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem data compression table augments the modem ID + table." + ::= { mdmMIBObjects 10 } + +mdmDCEntry OBJECT-TYPE + SYNTAX MdmDCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmDCTable 1 } + +MdmDCEntry ::= SEQUENCE { + mdmDCCompressionTypeUsed OBJECT IDENTIFIER +} + +mdmDCCompressionTypeUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the data compression method used during the + current or previous call. This shall be one of the values + for compression protocols registered in the capabilities + table for this modem. If no compression protocol is in use, + this object shall have the value '{0 0}'." + ::= { mdmDCEntry 1 } + +-- The modem Signal Convertor Group + +mdmSCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmSCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem signal convertor table augments the modem ID + table." + ::= { mdmMIBObjects 11 } + +mdmSCEntry OBJECT-TYPE + SYNTAX MdmSCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmSCTable 1 } + +MdmSCEntry ::= SEQUENCE { + mdmSCCurrentLineTransmitRate Integer32, + mdmSCCurrentLineReceiveRate Integer32, + mdmSCInitialLineTransmitRate Integer32, + mdmSCInitialLineReceiveRate Integer32, + mdmSCModulationSchemeUsed OBJECT IDENTIFIER +} + +mdmSCCurrentLineTransmitRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current link transmit rate of a connection, or the last + link transmit rate of the last connection in bits per + second." + REFERENCE "V.58 transmissionSignallingRateActive" + ::= { mdmSCEntry 1 } + +mdmSCCurrentLineReceiveRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current link receive rate of a connection, or the last + link receive rate of the last connection in bits per + second." + REFERENCE "V.58 transmissionSignallingRateActive" + ::= { mdmSCEntry 2 } + +mdmSCInitialLineTransmitRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial link transmit rate of the current connection, + or the initial link transmit rate of the last connection in + bits per second." + ::= { mdmSCEntry 3 } + +mdmSCInitialLineReceiveRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial link receive rate of the current connection, or + the initial link receive rate of the last connection in bits + per second." + ::= { mdmSCEntry 4 } + +mdmSCModulationSchemeUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The modulation scheme of the current or previous call. + This shall be one of the values for modulation protocols + registered in the capabilities table for this modem." + REFERENCE "V.58 gstnModulationSchemeActive" + ::= { mdmSCEntry 5 } + +-- The Modem Statistics Table + +mdmStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem statistics Table augments the modem ID table." + ::= { mdmMIBObjects 12 } + +mdmStatsEntry OBJECT-TYPE + SYNTAX MdmStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmStatsTable 1 } + +MdmStatsEntry ::= SEQUENCE { + mdmStatsRingNoAnswers Counter32, + mdmStatsIncomingConnectionFailures Counter32, + mdmStatsIncomingConnectionCompletions Counter32, + mdmStatsFailedDialAttempts Counter32, + mdmStatsOutgoingConnectionFailures Counter32, + mdmStatsOutgoingConnectionCompletions Counter32, + mdmStatsRetrains Counter32, + mdmStats2400OrLessConnections Counter32, + mdmStats2400To14400Connections Counter32, + mdmStatsGreaterThan14400Connections Counter32, + mdmStatsErrorControlledConnections Counter32, + mdmStatsCompressedConnections Counter32, + mdmStatsCompressionEfficiency Integer32, + mdmStatsSentOctets Counter32, + mdmStatsReceivedOctets Counter32, + mdmStatsSentDataFrames Counter32, + mdmStatsReceivedDataFrames Counter32, + mdmStatsResentFrames Counter32, + mdmStatsErrorFrames Counter32 +} + +mdmStatsRingNoAnswers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of events in which ringing was detected but the + call was not answered." + ::= { mdmStatsEntry 1 } + +mdmStatsIncomingConnectionFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming connection requests that this modem + answered in which it could not train with the other DCE." + ::= { mdmStatsEntry 2 } + +mdmStatsIncomingConnectionCompletions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming connection requests that this modem + answered and successfully trained with the other DCE." + ::= { mdmStatsEntry 3 } + +mdmStatsFailedDialAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of call attempts that failed because the modem + didn't go off hook, or there was no dialtone." + ::= { mdmStatsEntry 4 } + +mdmStatsOutgoingConnectionFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls from this modem which + sucessfully went off hook and dialed, in which it could not + train with the other DCE." + ::= { mdmStatsEntry 5 } + +mdmStatsOutgoingConnectionCompletions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls from this modem which resulted + in successfully training with the other DCE." + ::= { mdmStatsEntry 6 } + +mdmStatsRetrains OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of retrains experienced on connections on this + line." + ::= { mdmStatsEntry 7 } + + +-- Utilization counters + +mdmStats2400OrLessConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of 2400 bits per second or less." + ::= { mdmStatsEntry 8 } + + +mdmStats2400To14400Connections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of greater than 2400 bits per second and + less than 14400 bits per second." + ::= { mdmStatsEntry 9 } + +mdmStatsGreaterThan14400Connections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of greater than 14400 bits per second." + ::= { mdmStatsEntry 10 } + +mdmStatsErrorControlledConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of established connections using an error + control protocol." + ::= { mdmStatsEntry 11 } + +mdmStatsCompressedConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of established connections using a compression + protocol." + ::= { mdmStatsEntry 12 } + +mdmStatsCompressionEfficiency OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes transferred into the compression + encoder divided by the number of bytes transferred out of + the encoder, multiplied by 100 for either the current or + last call. If a data compression protocol is not in use, + this value shall be `100'." + REFERENCE "V.58 compressionEfficiency" + ::= { mdmStatsEntry 13 } + +mdmStatsSentOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets presented to the modem by the DTE." + ::= { mdmStatsEntry 14 } + +mdmStatsReceivedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets presented to the DTE by the modem." + ::= { mdmStatsEntry 15 } + +mdmStatsSentDataFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data frames sent on the line interface. If + there is no frame-oriented protocol in use on the line + interface, this counter shall not increment." + ::= { mdmStatsEntry 16 } + +mdmStatsReceivedDataFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data frames received on the line interface. + If there is no frame-oriented protocol in use on the line + interface, this counter shall not increment." + ::= { mdmStatsEntry 17 } + +mdmStatsResentFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this modem retransmits frames on the + line interface. If there is no frame-oriented protocol in + use on the line interface, this counter shall not + increment." + ::= { mdmStatsEntry 18 } + +mdmStatsErrorFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of block errors received on the link. If there + is no frame-oriented protocol in use on the line interface, + this counter shall not increment." + ::= { mdmStatsEntry 19 } + + +-- compliance statements + +mdmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the modem MIB." + + MODULE -- this module + MANDATORY-GROUPS { mdmIDGroup, mdmLineInterfaceGroup, + mdmDTEInterfaceGroup, mdmCallControlGroup, + mdmSignalConvertorGroup, mdmStatisticsGroup } + + GROUP mdmErrorControlGroup + DESCRIPTION + "This group is mandatory only for those modems that + implement an error correction protocol." + + GROUP mdmDataCompressionGroup + DESCRIPTION + "This group is mandatory only for those modems that + implement a data compression protocol." + ::= { mdmCompliances 1 } + + +END diff --git a/mibs/ietf/NAT-MIB b/mibs/ietf/NAT-MIB new file mode 100644 index 0000000..4f5f8b6 --- /dev/null +++ b/mibs/ietf/NAT-MIB @@ -0,0 +1,2534 @@ +NAT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Unsigned32, + Gauge32, + Counter64, + TimeTicks, + mib-2, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + StorageType, + RowStatus + + + + FROM SNMPv2-TC + MODULE-COMPLIANCE, + NOTIFICATION-GROUP, + OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex, + ifCounterDiscontinuityGroup + FROM IF-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB; + +natMIB MODULE-IDENTITY + LAST-UPDATED "200503210000Z" + ORGANIZATION "IETF Transport Area" + CONTACT-INFO + " + Rohit + Mascon Global Limited + #59/2 100 ft Ring Road + Banashankari II Stage + Bangalore 560 070 + India + Phone: +91 80 2679 6227 + Email: rrohit74@hotmail.com + + P. Srisuresh + Caymas Systems, Inc. + 1179-A North McDowell Blvd. + Petaluma, CA 94954 + Tel: (707) 283-5063 + Email: srisuresh@yahoo.com + + Rajiv Raghunarayan + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + Phone: +1 408 853 9612 + Email: raraghun@cisco.com + + Nalinaksh Pai + Cisco Systems, Inc. + Prestige Waterford + No. 9, Brunton Road + Bangalore - 560 025 + + + + India + Phone: +91 80 532 1300 + Email: npai@cisco.com + + Cliff Wang + Information Security + Bank One Corp + 1111 Polaris Pkwy + Columbus, OH 43240 + Phone: +1 614 213 6117 + Email: cliffwang2000@yahoo.com + " + DESCRIPTION + "This MIB module defines the generic managed objects + for NAT. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4008; see the RFC + itself for full legal notices." + REVISION "200503210000Z" -- 21th March 2005 + DESCRIPTION + "Initial version, published as RFC 4008." + ::= { mib-2 123 } + +natMIBObjects OBJECT IDENTIFIER ::= { natMIB 1 } + +NatProtocolType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A list of protocols that support the network + address translation. Inclusion of the values is + not intended to imply that those protocols + need to be supported. Any change in this + TEXTUAL-CONVENTION should also be reflected in + the definition of NatProtocolMap, which is a + BITS representation of this." + SYNTAX INTEGER { + none (1), -- not specified + other (2), -- none of the following + icmp (3), + udp (4), + tcp (5) + } + +NatProtocolMap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A bitmap of protocol identifiers that support + + + + the network address translation. Any change + in this TEXTUAL-CONVENTION should also be + reflected in the definition of NatProtocolType." + SYNTAX BITS { + other (0), + icmp (1), + udp (2), + tcp (3) + } + +NatAddrMapId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each address map + by a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatBindIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each bind by + a NAT enabled device. The bind id will be zero + in the case of a Symmetric NAT." + SYNTAX Unsigned32 (0..4294967295) + +NatBindId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each bind by + a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatSessionId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each session by + a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatBindMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of whether the bind is + an address bind or an address port bind." + + + + SYNTAX INTEGER { + addressBind (1), + addressPortBind (2) + } + +NatAssociationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of whether the association is + static or dynamic." + SYNTAX INTEGER { + static (1), + dynamic (2) + } + +NatTranslationEntity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of a) the direction of a session for + which an address map entry, address bind or port + bind is applicable, and b) the entity (source or + destination) within the session that is subject to + translation." + SYNTAX BITS { + inboundSrcEndPoint (0), + outboundDstEndPoint(1), + inboundDstEndPoint (2), + outboundSrcEndPoint(3) + } + +-- +-- Default Values for the Bind and NAT Protocol Timers +-- + +natDefTimeouts OBJECT IDENTIFIER ::= { natMIBObjects 1 } + +natNotifCtrl OBJECT IDENTIFIER ::= { natMIBObjects 2 } + +-- +-- Address Bind and Port Bind related NAT configuration +-- + +natBindDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default Bind (Address Bind or Port Bind) idle + timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 0 } + ::= { natDefTimeouts 1 } + +-- +-- UDP related NAT configuration +-- + +natUdpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default UDP idle timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 300 } + ::= { natDefTimeouts 2 } + +-- +-- ICMP related NAT configuration +-- + +natIcmpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default ICMP idle timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 300 } + ::= { natDefTimeouts 3 } + + + + +-- +-- Other protocol parameters +-- + +natOtherDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default idle timeout parameter for protocols + represented by the value other (2) in + NatProtocolType. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 60 } + ::= { natDefTimeouts 4 } + +-- +-- TCP related NAT Timers +-- + +natTcpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default time interval that a NAT session for an + established TCP connection is allowed to remain + valid without any activity on the TCP connection. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 86400 } + ::= { natDefTimeouts 5 } + +natTcpDefNegTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default time interval that a NAT session for a TCP + connection that is not in the established state + is allowed to remain valid without any activity on + the TCP connection. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 60 } + ::= { natDefTimeouts 6 } + +natNotifThrottlingInterval OBJECT-TYPE + SYNTAX Integer32 (0 | 5..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the generation of the + natPacketDiscard notification. + + If this object has a value of zero, then no + natPacketDiscard notifications will be transmitted by the + agent. + + If this object has a non-zero value, then the agent must + not generate more than one natPacketDiscard + 'notification-event' in the indicated period, where a + 'notification-event' is the generation of a single + notification PDU type to a list of notification + destinations. If additional NAT packets are discarded + within the throttling period, then notification-events + for these changes must be suppressed by the agent until + the current throttling period expires. + + If natNotifThrottlingInterval notification generation + is enabled, the suggested default throttling period is + 60 seconds, but generation of the natPacketDiscard + notification should be disabled by default. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system. + + The actual transmission of notifications is controlled + via the MIB modules in RFC 3413." + DEFVAL { 0 } + + + + ::= { natNotifCtrl 1 } + +-- +-- The NAT Interface Table +-- + +natInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the attributes for interfaces on a + device supporting NAT function." + ::= { natMIBObjects 3 } + +natInterfaceEntry OBJECT-TYPE + SYNTAX NatInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the natInterfaceTable holds a set of + parameters for an interface, instantiated by + ifIndex. Therefore, the interface index must have been + assigned, according to the applicable procedures, + before it can be meaningfully used. + Generally, this means that the interface must exist. + + When natStorageType is of type nonVolatile, however, + this may reflect the configuration for an interface whose + ifIndex has been assigned but for which the supporting + implementation is not currently present." + INDEX { ifIndex } + ::= { natInterfaceTable 1 } + +NatInterfaceEntry ::= SEQUENCE { + natInterfaceRealm INTEGER, + natInterfaceServiceType BITS, + natInterfaceInTranslates Counter64, + natInterfaceOutTranslates Counter64, + natInterfaceDiscards Counter64, + natInterfaceStorageType StorageType, + natInterfaceRowStatus RowStatus +} + +natInterfaceRealm OBJECT-TYPE + SYNTAX INTEGER { + private (1), + public (2) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies whether this interface is + connected to the private or the public realm." + DEFVAL { public } + ::= { natInterfaceEntry 1 } + +natInterfaceServiceType OBJECT-TYPE + SYNTAX BITS { + basicNat (0), + napt (1), + bidirectionalNat (2), + twiceNat (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the direction in which new sessions + are permitted and the extent of translation done within + the IP and transport headers." + ::= { natInterfaceEntry 2 } + +natInterfaceInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets received on this interface that + were translated. + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 3 } + +natInterfaceOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of translated packets that were sent out this + interface. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 4 } + +natInterfaceDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that had to be rejected/dropped due to + a lack of resources for this interface. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 5 } + +natInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar objects + in the row." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + DEFVAL { nonVolatile } + ::= { natInterfaceEntry 6 } + +natInterfaceRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the natInterfaceRowStatus + column is 'notReady'. + + + In particular, a newly created row cannot be made + active until the corresponding instance of + natInterfaceServiceType has been set. + + + + + None of the objects in this row may be modified + while the value of this object is active(1)." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + ::= { natInterfaceEntry 7 } + +-- +-- The Address Map Table +-- + +natAddrMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists address map parameters for NAT." + ::= { natMIBObjects 4 } + +natAddrMapEntry OBJECT-TYPE + SYNTAX NatAddrMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry represents an address map to be used for + NAT and contributes to the dynamic and/or static + address mapping tables of the NAT device." + INDEX { ifIndex, natAddrMapIndex } + ::= { natAddrMapTable 1 } + +NatAddrMapEntry ::= SEQUENCE { + natAddrMapIndex NatAddrMapId, + natAddrMapName SnmpAdminString, + natAddrMapEntryType NatAssociationType, + natAddrMapTranslationEntity NatTranslationEntity, + natAddrMapLocalAddrType InetAddressType, + natAddrMapLocalAddrFrom InetAddress, + natAddrMapLocalAddrTo InetAddress, + natAddrMapLocalPortFrom InetPortNumber, + natAddrMapLocalPortTo InetPortNumber, + natAddrMapGlobalAddrType InetAddressType, + natAddrMapGlobalAddrFrom InetAddress, + natAddrMapGlobalAddrTo InetAddress, + natAddrMapGlobalPortFrom InetPortNumber, + natAddrMapGlobalPortTo InetPortNumber, + natAddrMapProtocol NatProtocolMap, + natAddrMapInTranslates Counter64, + natAddrMapOutTranslates Counter64, + natAddrMapDiscards Counter64, + + + + natAddrMapAddrUsed Gauge32, + natAddrMapStorageType StorageType, + natAddrMapRowStatus RowStatus +} + +natAddrMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Along with ifIndex, this object uniquely + identifies an entry in the natAddrMapTable. + Address map entries are applied in the order + specified by natAddrMapIndex." + ::= { natAddrMapEntry 1 } + +natAddrMapName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name identifying all map entries in the table associated + with the same interface. All map entries with the same + ifIndex MUST have the same map name." + ::= { natAddrMapEntry 2 } + +natAddrMapEntryType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter can be used to set up static + or dynamic address maps." + ::= { natAddrMapEntry 3 } + +natAddrMapTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The end-point entity (source or destination) in + inbound or outbound sessions (i.e., first packets) that + may be translated by an address map entry. + + Session direction (inbound or outbound) is + derived from the direction of the first packet + of a session traversing a NAT interface. + NAT address (and Transport-ID) maps may be defined + + + + to effect inbound or outbound sessions. + + Traditionally, address maps for Basic NAT and NAPT are + configured on a public interface for outbound sessions, + effecting translation of source end-point. The value of + this object must be set to outboundSrcEndPoint for + those interfaces. + + Alternately, if address maps for Basic NAT and NAPT were + to be configured on a private interface, the desired + value for this object for the map entries + would be inboundSrcEndPoint (i.e., effecting translation + of source end-point for inbound sessions). + + If TwiceNAT were to be configured on a private interface, + the desired value for this object for the map entries + would be a bitmask of inboundSrcEndPoint and + inboundDstEndPoint." + ::= { natAddrMapEntry 4 } + +natAddrMapLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo." + ::= { natAddrMapEntry 5 } + +natAddrMapLocalAddrFrom OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the first IP address of the range + of IP addresses mapped by this translation entry. The + value of this object must be less than or equal to the + value of the natAddrMapLocalAddrTo object. + + The type of this address is determined by the value of + the natAddrMapLocalAddrType object." + ::= { natAddrMapEntry 6 } + +natAddrMapLocalAddrTo OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object specifies the last IP address of the range of + IP addresses mapped by this translation entry. If only + a single address is being mapped, the value of this object + is equal to the value of natAddrMapLocalAddrFrom. For a + static NAT, the number of addresses in the range defined + by natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo must + be equal to the number of addresses in the range defined by + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo. + The value of this object must be greater than or equal to + the value of the natAddrMapLocalAddrFrom object. + + The type of this address is determined by the value of + the natAddrMapLocalAddrType object." + ::= { natAddrMapEntry 7 } + +natAddrMapLocalPortFrom OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the first port number in the range + of ports being mapped. + + The value of this object must be less than or equal to the + value of the natAddrMapLocalPortTo object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapLocalPortTo." + DEFVAL { 0 } + ::= { natAddrMapEntry 8 } + +natAddrMapLocalPortTo OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the last port number in the range + of ports being mapped. + + The value of this object must be greater than or equal to + the value of the natAddrMapLocalPortFrom object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapLocalPortFrom." + + + + DEFVAL { 0 } + ::= { natAddrMapEntry 9 } + +natAddrMapGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo." + ::= { natAddrMapEntry 10 } + +natAddrMapGlobalAddrFrom OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the first IP address of the range of + IP addresses being mapped to. The value of this object + must be less than or equal to the value of the + natAddrMapGlobalAddrTo object. + + The type of this address is determined by the value of + the natAddrMapGlobalAddrType object." + ::= { natAddrMapEntry 11 } + +natAddrMapGlobalAddrTo OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the last IP address of the range of + IP addresses being mapped to. If only a single address is + being mapped to, the value of this object is equal to the + value of natAddrMapGlobalAddrFrom. For a static NAT, the + number of addresses in the range defined by + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo must be + equal to the number of addresses in the range defined by + natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo. + The value of this object must be greater than or equal to + the value of the natAddrMapGlobalAddrFrom object. + + The type of this address is determined by the value of + the natAddrMapGlobalAddrType object." + ::= { natAddrMapEntry 12 } + +natAddrMapGlobalPortFrom OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the first port number in the range + of ports being mapped to. + + + The value of this object must be less than or equal to the + value of the natAddrMapGlobalPortTo object. If the + translation specifies a single port, then the value of this + object is equal to the value natAddrMapGlobalPortTo." + DEFVAL { 0 } + ::= { natAddrMapEntry 13 } + +natAddrMapGlobalPortTo OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of this + object specifies the last port number in the range of + ports being mapped to. + + The value of this object must be greater than or equal to + the value of the natAddrMapGlobalPortFrom object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapGlobalPortFrom." + DEFVAL { 0 } + ::= { natAddrMapEntry 14 } + +natAddrMapProtocol OBJECT-TYPE + SYNTAX NatProtocolMap + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a bitmap of protocol identifiers." + ::= { natAddrMapEntry 15 } + +natAddrMapInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of inbound packets pertaining to this address + map entry that were translated. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 16 } + +natAddrMapOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets pertaining to this + address map entry that were translated. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 17 } + +natAddrMapDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets pertaining to this address map + entry that were dropped due to lack of addresses in the + address pool identified by this address map. The value of + this object must always be zero in case of static + address map. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 18 } + +natAddrMapAddrUsed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses pertaining to this address map + that are currently being used from the NAT pool. + The value of this object must always be zero in the case + + + + of a static address map." + ::= { natAddrMapEntry 19 } + +natAddrMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar objects + in the row." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + DEFVAL { nonVolatile } + ::= { natAddrMapEntry 20 } + +natAddrMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the natAddrMapRowStatus + column is 'notReady'. + + None of the objects in this row may be modified + while the value of this object is active(1)." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + ::= { natAddrMapEntry 21 } + +-- +-- Address Bind section +-- + +natAddrBindNumberOfEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object maintains a count of the number of entries + that currently exist in the natAddrBindTable." + ::= { natMIBObjects 5 } + + + + +-- +-- The NAT Address BIND Table +-- + +natAddrBindTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table holds information about the currently + active NAT BINDs." + ::= { natMIBObjects 6 } + +natAddrBindEntry OBJECT-TYPE + SYNTAX NatAddrBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table holds information about + an active address BIND. These entries are lost + upon agent restart. + + This row has indexing which may create variables with + more than 128 subidentifiers. Implementers of this table + must be careful not to create entries that would result + in OIDs which exceed the 128 subidentifier limit. + Otherwise, the information cannot be accessed using + SNMPv1, SNMPv2c or SNMPv3." + + INDEX { ifIndex, natAddrBindLocalAddrType, natAddrBindLocalAddr } + ::= { natAddrBindTable 1 } + +NatAddrBindEntry ::= SEQUENCE { + natAddrBindLocalAddrType InetAddressType, + natAddrBindLocalAddr InetAddress, + natAddrBindGlobalAddrType InetAddressType, + natAddrBindGlobalAddr InetAddress, + natAddrBindId NatBindId, + natAddrBindTranslationEntity NatTranslationEntity, + natAddrBindType NatAssociationType, + natAddrBindMapIndex NatAddrMapId, + natAddrBindSessions Gauge32, + natAddrBindMaxIdleTime TimeTicks, + natAddrBindCurrentIdleTime TimeTicks, + natAddrBindInTranslates Counter64, + natAddrBindOutTranslates Counter64 +} + + + + +natAddrBindLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrBindLocalAddr." + ::= { natAddrBindEntry 1 } + +natAddrBindLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the private-realm specific network + layer address, which maps to the public-realm address + represented by natAddrBindGlobalAddr. + + The type of this address is determined by the value of + the natAddrBindLocalAddrType object." + ::= { natAddrBindEntry 2 } + +natAddrBindGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrBindGlobalAddr." + ::= { natAddrBindEntry 3 } + +natAddrBindGlobalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the public-realm network layer + address that maps to the private-realm network layer + address represented by natAddrBindLocalAddr. + + The type of this address is determined by the value of + the natAddrBindGlobalAddrType object." + ::= { natAddrBindEntry 4 } + +natAddrBindId OBJECT-TYPE + SYNTAX NatBindId + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents a bind id that is dynamically + assigned to each bind by a NAT enabled device. Each + bind is represented by a bind id that is + unique across both, the natAddrBindTable and the + natAddrPortBindTable." + ::= { natAddrBindEntry 5 } + +natAddrBindTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the direction of sessions + for which this bind is applicable and the endpoint entity + (source or destination) within the sessions that is + subject to translation using the BIND. + + Orientation of the bind can be a superset of + translationEntity of the address map entry which + forms the basis for this bind. + + For example, if the translationEntity of an + address map entry is outboundSrcEndPoint, the + translationEntity of a bind derived from this + map entry may either be outboundSrcEndPoint or + it may be bidirectional (a bitmask of + outboundSrcEndPoint and inboundDstEndPoint)." + ::= { natAddrBindEntry 6 } + +natAddrBindType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind is static or + dynamic." + ::= { natAddrBindEntry 7 } + +natAddrBindMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) which was used in + creating this BIND. This object, in conjunction with the + ifIndex (which identifies a unique addrMapName) points to + + + + a unique entry in the natAddrMapTable." + ::= { natAddrBindEntry 8 } + +natAddrBindSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of sessions currently using this BIND." + ::= { natAddrBindEntry 9 } + +natAddrBindMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the maximum time for + which this bind can be idle with no sessions + attached to it. + + The value of this object is of relevance only for + dynamic NAT." + ::= { natAddrBindEntry 10 } + +natAddrBindCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At any given instance, this object indicates the + time that this bind has been idle without any sessions + attached to it. + + The value of this object is of relevance only for + dynamic NAT." + ::= { natAddrBindEntry 11 } + +natAddrBindInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that were successfully + translated by using this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + + + + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrBindEntry 12 } + +natAddrBindOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were successfully + translated using this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrBindEntry 13 } + +-- +-- Address Port Bind section +-- + +natAddrPortBindNumberOfEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object maintains a count of the number of entries + that currently exist in the natAddrPortBindTable." + ::= { natMIBObjects 7 } + +-- +-- The NAT Address Port Bind Table +-- + +natAddrPortBindTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrPortBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table holds information about the currently + active NAPT BINDs." + ::= { natMIBObjects 8 } + +natAddrPortBindEntry OBJECT-TYPE + SYNTAX NatAddrPortBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Each entry in the this table holds information + about a NAPT bind that is currently active. + These entries are lost upon agent restart. + + This row has indexing which may create variables with + more than 128 subidentifiers. Implementers of this table + must be careful not to create entries which would result + in OIDs that exceed the 128 subidentifier limit. + Otherwise, the information cannot be accessed using + SNMPv1, SNMPv2c or SNMPv3." + INDEX { ifIndex, natAddrPortBindLocalAddrType, + natAddrPortBindLocalAddr, natAddrPortBindLocalPort, + natAddrPortBindProtocol } + ::= { natAddrPortBindTable 1 } + +NatAddrPortBindEntry ::= SEQUENCE { + natAddrPortBindLocalAddrType InetAddressType, + natAddrPortBindLocalAddr InetAddress, + natAddrPortBindLocalPort InetPortNumber, + natAddrPortBindProtocol NatProtocolType, + natAddrPortBindGlobalAddrType InetAddressType, + natAddrPortBindGlobalAddr InetAddress, + natAddrPortBindGlobalPort InetPortNumber, + natAddrPortBindId NatBindId, + natAddrPortBindTranslationEntity NatTranslationEntity, + natAddrPortBindType NatAssociationType, + natAddrPortBindMapIndex NatAddrMapId, + natAddrPortBindSessions Gauge32, + natAddrPortBindMaxIdleTime TimeTicks, + natAddrPortBindCurrentIdleTime TimeTicks, + natAddrPortBindInTranslates Counter64, + natAddrPortBindOutTranslates Counter64 +} + +natAddrPortBindLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrPortBindLocalAddr." + ::= { natAddrPortBindEntry 1 } + +natAddrPortBindLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This object represents the private-realm specific network + layer address which, in conjunction with + natAddrPortBindLocalPort, maps to the public-realm + network layer address and transport id represented by + natAddrPortBindGlobalAddr and natAddrPortBindGlobalPort + respectively. + + + The type of this address is determined by the value of + the natAddrPortBindLocalAddrType object." + ::= { natAddrPortBindEntry 2 } + +natAddrPortBindLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "For a protocol value TCP or UDP, this object represents + the private-realm specific port number. On the other + hand, for ICMP a bind is created only for query/response + type ICMP messages such as ICMP echo, Timestamp, and + Information request messages, and this object represents + the private-realm specific identifier in the ICMP + message, as defined in RFC 792 for ICMPv4 and in RFC + 2463 for ICMPv6. + + This object, together with natAddrPortBindProtocol, + natAddrPortBindLocalAddrType, and natAddrPortBindLocalAddr, + constitutes a session endpoint in the private realm. A + bind entry binds a private realm specific endpoint to a + public realm specific endpoint, as represented by the + tuple of (natAddrPortBindGlobalPort, + natAddrPortBindProtocol, natAddrPortBindGlobalAddrType, + and natAddrPortBindGlobalAddr)." + ::= { natAddrPortBindEntry 3 } + +natAddrPortBindProtocol OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies a protocol identifier. If the + value of this object is none(1), then this bind entry + applies to all IP traffic. Any other value of this object + specifies the class of IP traffic to which this BIND + applies." + ::= { natAddrPortBindEntry 4 } + + + + +natAddrPortBindGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrPortBindGlobalAddr." + ::= { natAddrPortBindEntry 5 } + +natAddrPortBindGlobalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the public-realm specific network + layer address that, in conjunction with + natAddrPortBindGlobalPort, maps to the private-realm + + network layer address and transport id represented by + natAddrPortBindLocalAddr and natAddrPortBindLocalPort, + respectively. + + The type of this address is determined by the value of + the natAddrPortBindGlobalAddrType object." + ::= { natAddrPortBindEntry 6 } + +natAddrPortBindGlobalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a protocol value TCP or UDP, this object represents + the public-realm specific port number. On the other + hand, for ICMP a bind is created only for query/response + type ICMP messages such as ICMP echo, Timestamp, and + Information request messages, and this object represents + the public-realm specific identifier in the ICMP message, + as defined in RFC 792 for ICMPv4 and in RFC 2463 for + ICMPv6. + + This object, together with natAddrPortBindProtocol, + natAddrPortBindGlobalAddrType, and + natAddrPortBindGlobalAddr, constitutes a session endpoint + in the public realm. A bind entry binds a public realm + specific endpoint to a private realm specific endpoint, + as represented by the tuple of + (natAddrPortBindLocalPort, natAddrPortBindProtocol, + natAddrPortBindLocalAddrType, and + + + + natAddrPortBindLocalAddr)." + ::= { natAddrPortBindEntry 7 } + +natAddrPortBindId OBJECT-TYPE + SYNTAX NatBindId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a bind id that is dynamically + assigned to each bind by a NAT enabled device. Each + bind is represented by a unique bind id across both + the natAddrBindTable and the natAddrPortBindTable." + ::= { natAddrPortBindEntry 8 } + +natAddrPortBindTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the direction of sessions + for which this bind is applicable and the entity + (source or destination) within the sessions that is + subject to translation with the BIND. + + Orientation of the bind can be a superset of the + translationEntity of the address map entry that + forms the basis for this bind. + + For example, if the translationEntity of an + address map entry is outboundSrcEndPoint, the + translationEntity of a bind derived from this + map entry may either be outboundSrcEndPoint or + may be bidirectional (a bitmask of + outboundSrcEndPoint and inboundDstEndPoint)." + ::= { natAddrPortBindEntry 9 } + +natAddrPortBindType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind is static or + dynamic." + ::= { natAddrPortBindEntry 10 } + +natAddrPortBindMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) used in + creating this BIND. This object, in conjunction with the + ifIndex (which identifies a unique addrMapName), points + to a unique entry in the natAddrMapTable." + ::= { natAddrPortBindEntry 11 } + +natAddrPortBindSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of sessions currently using this BIND." + ::= { natAddrPortBindEntry 12 } + +natAddrPortBindMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "This object indicates the maximum time for + which this bind can be idle without any sessions + attached to it. + The value of this object is of relevance + only for dynamic NAT." + ::= { natAddrPortBindEntry 13 } + +natAddrPortBindCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At any given instance, this object indicates the + time that this bind has been idle without any sessions + attached to it. + + The value of this object is of relevance + only for dynamic NAT." + ::= { natAddrPortBindEntry 14 } + +natAddrPortBindInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of inbound packets that were translated as per + this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrPortBindEntry 15 } + +natAddrPortBindOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were translated as per + this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrPortBindEntry 16 } + +-- +-- The Session Table +-- + +natSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing one entry for each + NAT session currently active on this NAT device." + ::= { natMIBObjects 9 } + +natSessionEntry OBJECT-TYPE + SYNTAX NatSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing information + about an active NAT session on this NAT device. + These entries are lost upon agent restart." + INDEX { ifIndex, natSessionIndex } + ::= { natSessionTable 1 } + +NatSessionEntry ::= SEQUENCE { + + + + natSessionIndex NatSessionId, + natSessionPrivateSrcEPBindId NatBindIdOrZero, + natSessionPrivateSrcEPBindMode NatBindMode, + natSessionPrivateDstEPBindId NatBindIdOrZero, + natSessionPrivateDstEPBindMode NatBindMode, + natSessionDirection INTEGER, + natSessionUpTime TimeTicks, + natSessionAddrMapIndex NatAddrMapId, + natSessionProtocolType NatProtocolType, + natSessionPrivateAddrType InetAddressType, + natSessionPrivateSrcAddr InetAddress, + natSessionPrivateSrcPort InetPortNumber, + natSessionPrivateDstAddr InetAddress, + natSessionPrivateDstPort InetPortNumber, + natSessionPublicAddrType InetAddressType, + natSessionPublicSrcAddr InetAddress, + natSessionPublicSrcPort InetPortNumber, + natSessionPublicDstAddr InetAddress, + natSessionPublicDstPort InetPortNumber, + natSessionMaxIdleTime TimeTicks, + natSessionCurrentIdleTime TimeTicks, + natSessionInTranslates Counter64, + natSessionOutTranslates Counter64 +} + +natSessionIndex OBJECT-TYPE + SYNTAX NatSessionId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The session ID for this NAT session." + ::= { natSessionEntry 1 } + +natSessionPrivateSrcEPBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bind id associated between private and public + source end points. In the case of Symmetric-NAT, + this should be set to zero." + ::= { natSessionEntry 2 } + +natSessionPrivateSrcEPBindMode OBJECT-TYPE + SYNTAX NatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates whether the bind indicated + by the object natSessionPrivateSrcEPBindId + is an address bind or an address port bind." + ::= { natSessionEntry 3 } + +natSessionPrivateDstEPBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bind id associated between private and public + destination end points." + ::= { natSessionEntry 4 } + +natSessionPrivateDstEPBindMode OBJECT-TYPE + SYNTAX NatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind indicated + by the object natSessionPrivateDstEPBindId + is an address bind or an address port bind." + ::= { natSessionEntry 5 } + +natSessionDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound (1), + outbound (2) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The direction of this session with respect to the + local network. 'inbound' indicates that this session + was initiated from the public network into the private + network. 'outbound' indicates that this session was + initiated from the private network into the public + network." + ::= { natSessionEntry 6 } + +natSessionUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The up time of this session in one-hundredths of a + second." + + + + ::= { natSessionEntry 7 } + +natSessionAddrMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) used in + creating this session. This object, in conjunction with + the ifIndex (which identifies a unique addrMapName), points + to a unique entry in the natAddrMapTable." + ::= { natSessionEntry 8 } + +natSessionProtocolType OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol type of this session." + ::= { natSessionEntry 9 } + +natSessionPrivateAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natSessionPrivateSrcAddr and natSessionPrivateDstAddr." + ::= { natSessionEntry 10 } + +natSessionPrivateSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the session endpoint that + lies in the private network. + + The value of this object must be zero only when the + natSessionPrivateSrcEPBindId object has a zero value. + When the value of this object is zero, the NAT session + lookup will match any IP address to this field. + + The type of this address is determined by the value of + the natSessionPrivateAddrType object." + ::= { natSessionEntry 11 } + + + + +natSessionPrivateSrcPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the source port in the first packet of session + while in private-realm. On the other hand, when the + protocol is ICMP, a NAT session is created only for + query/response type ICMP messages such as ICMP echo, + Timestamp, and Information request messages, and this + object represents the private-realm specific identifier + in the ICMP message, as defined in RFC 792 for ICMPv4 + and in RFC 2463 for ICMPv6. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has zero value + and value of natSessionPrivateSrcEPBindMode is + addressPortBind(2). In such a case, the NAT session + lookup will match any port number to this field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 12 } + +natSessionPrivateDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination IP address of the session endpoint that + lies in the private network. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero value. + In such a scenario, the NAT session lookup will match + any IP address to this field. + + The type of this address is determined by the value of + the natSessionPrivateAddrType object." + ::= { natSessionEntry 13 } + +natSessionPrivateDstPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the destination port in the first packet + of session while in private-realm. On the other hand, + when the protocol is ICMP, this object is not relevant + and should be set to zero. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero + value and natSessionPrivateDstEPBindMode is set to + addressPortBind(2). In such a case, the NAT session + lookup will match any port number to this field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 14 } + +natSessionPublicAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natSessionPublicSrcAddr and natSessionPublicDstAddr." + ::= { natSessionEntry 15 } + +natSessionPublicSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the session endpoint that + lies in the public network. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has a zero value. + In such a scenario, the NAT session lookup will match + any IP address to this field. + + The type of this address is determined by the value of + the natSessionPublicAddrType object." + ::= { natSessionEntry 16 } + +natSessionPublicSrcPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the source port in the first packet of + session while in public-realm. On the other hand, when + protocol is ICMP, a NAT session is created only for + query/response type ICMP messages such as ICMP echo, + Timestamp, and Information request messages, and this + object represents the public-realm specific identifier + in the ICMP message, as defined in RFC 792 for ICMPv4 + and in RFC 2463 for ICMPv6. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has a zero value + and natSessionPrivateSrcEPBindMode is set to + addressPortBind(2). In such a scenario, the NAT + session lookup will match any port number to this + field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 17 } + +natSessionPublicDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination IP address of the session endpoint that + lies in the public network. + + The value of this object must be non-zero when the + natSessionPrivateDstEPBindId object has a non-zero + value. If the value of this object and the + corresponding natSessionPrivateDstEPBindId object value + is zero, then the NAT session lookup will match any IP + address to this field. + + The type of this address is determined by the value of + the natSessionPublicAddrType object." + ::= { natSessionEntry 18 } + +natSessionPublicDstPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the destination port in the first packet of + session while in public-realm. On the other hand, when + the protocol is ICMP, this object is not relevant for + translation and should be zero. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero value + and natSessionPrivateDstEPBindMode is + addressPortBind(2). In such a scenario, the NAT + session lookup will match any port number to this + field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 19 } + +natSessionMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The max time for which this session can be idle + without detecting a packet." + ::= { natSessionEntry 20 } + +natSessionCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since a packet belonging to this session was + last detected." + ::= { natSessionEntry 21 } + +natSessionInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that were translated for + this session. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + + + + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natSessionEntry 22 } + +natSessionOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were translated for + this session. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natSessionEntry 23 } + +-- +-- The Protocol table +-- + +natProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing per protocol NAT + statistics." + ::= { natMIBObjects 10 } + +natProtocolEntry OBJECT-TYPE + SYNTAX NatProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing NAT statistics + pertaining to a particular protocol." + INDEX { natProtocol } + ::= { natProtocolTable 1 } + +NatProtocolEntry ::= SEQUENCE { + natProtocol NatProtocolType, + natProtocolInTranslates Counter64, + natProtocolOutTranslates Counter64, + natProtocolDiscards Counter64 +} + + + + +natProtocol OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the protocol pertaining to which + parameters are reported." + ::= { natProtocolEntry 1 } + +natProtocolInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets pertaining to the protocol + identified by natProtocol that underwent NAT. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 2 } + +natProtocolOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets pertaining to the protocol + identified by natProtocol that underwent NAT. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 3 } + +natProtocolDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets pertaining to the protocol + identified by natProtocol that had to be + rejected/dropped due to lack of resources. These + rejections could be due to session timeout, resource + unavailability, lack of address space, etc. + + + + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 4 } + +-- +-- Notifications section +-- + +natMIBNotifications OBJECT IDENTIFIER ::= { natMIB 0 } + +-- +-- Notifications +-- + +natPacketDiscard NOTIFICATION-TYPE + OBJECTS { ifIndex } + STATUS current + DESCRIPTION + "This notification is generated when IP packets are + discarded by the NAT function; e.g., due to lack of + mapping space when NAT is out of addresses or ports. + + Note that the generation of natPacketDiscard + notifications is throttled by the agent, as specified + by the 'natNotifThrottlingInterval' object." + ::= { natMIBNotifications 1 } + +-- +-- Conformance information. +-- + +natMIBConformance OBJECT IDENTIFIER ::= { natMIB 2 } + +natMIBGroups OBJECT IDENTIFIER ::= { natMIBConformance 1 } +natMIBCompliances OBJECT IDENTIFIER ::= { natMIBConformance 2 } + +-- +-- Units of conformance +-- + +natConfigGroup OBJECT-GROUP + OBJECTS { natInterfaceRealm, + natInterfaceServiceType, + natInterfaceStorageType, + natInterfaceRowStatus, + natAddrMapName, + + + + natAddrMapEntryType, + natAddrMapTranslationEntity, + natAddrMapLocalAddrType, + natAddrMapLocalAddrFrom, + natAddrMapLocalAddrTo, + natAddrMapLocalPortFrom, + natAddrMapLocalPortTo, + natAddrMapGlobalAddrType, + natAddrMapGlobalAddrFrom, + natAddrMapGlobalAddrTo, + natAddrMapGlobalPortFrom, + natAddrMapGlobalPortTo, + natAddrMapProtocol, + natAddrMapStorageType, + natAddrMapRowStatus, + natBindDefIdleTimeout, + natUdpDefIdleTimeout, + natIcmpDefIdleTimeout, + natOtherDefIdleTimeout, + natTcpDefIdleTimeout, + natTcpDefNegTimeout, + natNotifThrottlingInterval } + STATUS current + DESCRIPTION + "A collection of configuration-related information + required to support management of devices supporting + NAT." + ::= { natMIBGroups 1 } + +natTranslationGroup OBJECT-GROUP + OBJECTS { natAddrBindNumberOfEntries, + natAddrBindGlobalAddrType, + natAddrBindGlobalAddr, + natAddrBindId, + natAddrBindTranslationEntity, + natAddrBindType, + natAddrBindMapIndex, + natAddrBindSessions, + natAddrBindMaxIdleTime, + natAddrBindCurrentIdleTime, + natAddrBindInTranslates, + natAddrBindOutTranslates, + natAddrPortBindNumberOfEntries, + natAddrPortBindGlobalAddrType, + natAddrPortBindGlobalAddr, + natAddrPortBindGlobalPort, + natAddrPortBindId, + natAddrPortBindTranslationEntity, + + + + natAddrPortBindType, + natAddrPortBindMapIndex, + natAddrPortBindSessions, + natAddrPortBindMaxIdleTime, + natAddrPortBindCurrentIdleTime, + natAddrPortBindInTranslates, + natAddrPortBindOutTranslates, + natSessionPrivateSrcEPBindId, + natSessionPrivateSrcEPBindMode, + natSessionPrivateDstEPBindId, + natSessionPrivateDstEPBindMode, + natSessionDirection, + natSessionUpTime, + natSessionAddrMapIndex, + natSessionProtocolType, + natSessionPrivateAddrType, + natSessionPrivateSrcAddr, + natSessionPrivateSrcPort, + natSessionPrivateDstAddr, + natSessionPrivateDstPort, + natSessionPublicAddrType, + natSessionPublicSrcAddr, + natSessionPublicSrcPort, + natSessionPublicDstAddr, + natSessionPublicDstPort, + natSessionMaxIdleTime, + natSessionCurrentIdleTime, + natSessionInTranslates, + natSessionOutTranslates } + STATUS current + + DESCRIPTION + "A collection of BIND-related objects required to support + management of devices supporting NAT." + ::= { natMIBGroups 2 } + +natStatsInterfaceGroup OBJECT-GROUP + OBJECTS { natInterfaceInTranslates, + natInterfaceOutTranslates, + natInterfaceDiscards } + STATUS current + DESCRIPTION + "A collection of NAT statistics associated with the + interface on which NAT is configured, to aid + troubleshooting/monitoring of the NAT operation." + ::= { natMIBGroups 3 } + +natStatsProtocolGroup OBJECT-GROUP + + + + OBJECTS { natProtocolInTranslates, + natProtocolOutTranslates, + natProtocolDiscards } + STATUS current + DESCRIPTION + "A collection of protocol specific NAT statistics, + to aid troubleshooting/monitoring of NAT operation." + ::= { natMIBGroups 4 } + +natStatsAddrMapGroup OBJECT-GROUP + OBJECTS { natAddrMapInTranslates, + natAddrMapOutTranslates, + natAddrMapDiscards, + natAddrMapAddrUsed } + STATUS current + DESCRIPTION + "A collection of address map specific NAT statistics, + to aid troubleshooting/monitoring of NAT operation." + ::= { natMIBGroups 5 } + +natMIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { natPacketDiscard } + STATUS current + DESCRIPTION + "A collection of notifications generated by + devices supporting this MIB." + ::= { natMIBGroups 6 } + +-- +-- Compliance statements +-- + +natMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for + read-create, then such an implementation can claim + full compliance. Such devices can then be both + monitored and configured with this MIB. + + The following index objects cannot be added as OBJECT + clauses but nevertheless have the compliance + requirements: + " + -- OBJECT natAddrBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + + + + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- this module + MANDATORY-GROUPS { natConfigGroup, natTranslationGroup, + natStatsInterfaceGroup } + + GROUP natStatsProtocolGroup + DESCRIPTION + "This group is optional." + GROUP natStatsAddrMapGroup + DESCRIPTION + "This group is optional." + GROUP natMIBNotificationGroup + DESCRIPTION + "This group is optional." + + OBJECT natAddrMapLocalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + + + + for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + + + + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPrivateAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPrivateSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + + OBJECT natSessionPrivateDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + ::= { natMIBCompliances 1 } + +natMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create (i.e., in read-only mode), then such an + implementation can claim read-only compliance. + Such a device can then be monitored but cannot be + configured with this MIB. + + The following index objects cannot be added as OBJECT + clauses but nevertheless have the compliance + requirements: + " + -- OBJECT natAddrBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + + + -- OBJECT natAddrPortBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- this module + MANDATORY-GROUPS { natConfigGroup, natTranslationGroup, + natStatsInterfaceGroup } + + GROUP natStatsProtocolGroup + DESCRIPTION + "This group is optional." + GROUP natStatsAddrMapGroup + DESCRIPTION + "This group is optional." + GROUP natMIBNotificationGroup + DESCRIPTION + "This group is optional." + OBJECT natInterfaceRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT natAddrMapLocalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + + + + OBJECT natAddrMapLocalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT natAddrBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicSrcAddr + + + + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + ::= { natMIBCompliances 2 } + +END diff --git a/mibs/ietf/NETWORK-SERVICES-MIB b/mibs/ietf/NETWORK-SERVICES-MIB new file mode 100644 index 0000000..b04b3ea --- /dev/null +++ b/mibs/ietf/NETWORK-SERVICES-MIB @@ -0,0 +1,619 @@ +NETWORK-SERVICES-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, Counter32, Gauge32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +application MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF Mail and Directory Management Working Group" + CONTACT-INFO + " Ned Freed + + Postal: Innosoft International, Inc. + 1050 Lakes Drive + West Covina, CA 91790 + US + + Tel: +1 626 919 3600 + Fax: +1 626 919 3614 + + E-Mail: ned.freed@innosoft.com" + DESCRIPTION + "The MIB module describing network service applications" + REVISION "200003030000Z" + DESCRIPTION + "This revision, published in RFC 2788, changes a number of + DisplayStrings to SnmpAdminStrings. Note that this change + is not strictly supported by SMIv2. However, the alternative + of deprecating the old objects and defining new objects + would have a more adverse impact on backward compatibility + and interoperability, given the particular semantics of + these objects. The defining reference for distinguished + names has also been updated from RFC 1779 to RFC 2253." + REVISION "199905120000Z" + DESCRIPTION + "This revision fixes a few small technical problems found + in previous versions, mostly in regards to the conformance + groups for different versions of this MIB. No changes have + been made to the objects this MIB defines since RFC 2248." + REVISION "199708170000Z" + DESCRIPTION + "This revision, published in RFC 2248, adds the + applDescription and applURL objects, adds the quiescing + state to the applOperStatus object and renames the MIB + from the APPLICATION-MIB to the NETWORK-SERVICE-MIB." + REVISION "199311280000Z" + DESCRIPTION + "The original version of this MIB was published in RFC 1565" + ::= {mib-2 27} + +-- Textual conventions + +-- DistinguishedName is used to refer to objects in the +-- directory. + +DistinguishedName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Distinguished Name represented in accordance with + RFC 2253, presented in the UTF-8 charset defined in + RFC 2279." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- Uniform Resource Locators are stored in URLStrings. + +URLString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Uniform Resource Locator represented in accordance + with RFCs 1738 and 2368, presented in the NVT ASCII + charset defined in RFC 854." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- The basic applTable contains a list of the application +-- entities. + +applTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding objects which apply to all different + kinds of applications providing network services. + Each network service application capable of being + monitored should have a single entry in this table." + ::= {application 1} + +applEntry OBJECT-TYPE + SYNTAX ApplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry associated with a single network service + application." + INDEX {applIndex} + ::= {applTable 1} + +ApplEntry ::= SEQUENCE { + applIndex + INTEGER, + applName + SnmpAdminString, + applDirectoryName + DistinguishedName, + applVersion + SnmpAdminString, + applUptime + TimeStamp, + applOperStatus + INTEGER, + applLastChange + TimeStamp, + applInboundAssociations + Gauge32, + applOutboundAssociations + Gauge32, + applAccumulatedInboundAssociations + Counter32, + applAccumulatedOutboundAssociations + Counter32, + applLastInboundActivity + TimeStamp, + applLastOutboundActivity + TimeStamp, + applRejectedInboundAssociations + Counter32, + applFailedOutboundAssociations + Counter32, + applDescription + SnmpAdminString, + applURL + URLString +} + +applIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify the network service + application. This attribute is the index used for + lexicographic ordering of the table." + ::= {applEntry 1} + +applName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name the network service application chooses to be + known by." + ::= {applEntry 2} + +applDirectoryName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Distinguished Name of the directory entry where + static information about this application is stored. + An empty string indicates that no information about + the application is available in the directory." + ::= {applEntry 3} + +applVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of network service application software. + This field is usually defined by the vendor of the + network service application software." + ::= {applEntry 4} +applUptime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the network service + application was last initialized. If the application was + last initialized prior to the last initialization of the + network management subsystem, then this object contains + a zero value." + ::= {applEntry 5} + +applOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + halted(3), + congested(4), + restarting(5), + quiescing(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the operational status of the network service + application. 'down' indicates that the network service is + not available. 'up' indicates that the network service + is operational and available. 'halted' indicates that the + service is operational but not available. 'congested' + indicates that the service is operational but no additional + inbound associations can be accommodated. 'restarting' + indicates that the service is currently unavailable but is + in the process of restarting and will be available soon. + 'quiescing' indicates that service is currently operational + but is in the process of shutting down. Additional inbound + associations may be rejected by applications in the + 'quiescing' state." + ::= {applEntry 6} + +applLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the network service + application entered its current operational state. If + the current state was entered prior to the last + initialization of the local network management subsystem, + then this object contains a zero value." + ::= {applEntry 7} + +applInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the network service + application, where it is the responder. An inbound + association occurs when another application successfully + connects to this one." + ::= {applEntry 8} + +applOutboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the network service + application, where it is the initiator. An outbound + association occurs when this application successfully + connects to another one." + ::= {applEntry 9} + +applAccumulatedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the application entity + since application initialization, where it was the responder." + ::= {applEntry 10} + +applAccumulatedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the application entity + since application initialization, where it was the initiator." + ::= {applEntry 11} + +applLastInboundActivity OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this application last + had an inbound association. If the last association + occurred prior to the last initialization of the network + subsystem, then this object contains a zero value." + ::= {applEntry 12} + +applLastOutboundActivity OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this application last + had an outbound association. If the last association + occurred prior to the last initialization of the network + subsystem, then this object contains a zero value." + ::= {applEntry 13} + +applRejectedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of inbound associations the application + entity has rejected, since application initialization. + Rejected associations are not counted in the accumulated + association totals. Note that this only counts + associations the application entity has rejected itself; + it does not count rejections that occur at lower layers + of the network. Thus, this counter may not reflect the + true number of failed inbound associations." + ::= {applEntry 14} + +applFailedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number associations where the application entity + is initiator and association establishment has failed, + since application initialization. Failed associations are + not counted in the accumulated association totals." + ::= {applEntry 15} + +applDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A text description of the application. This information + is intended to identify and briefly describe the + application in a status display." + ::= {applEntry 16} + +applURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A URL pointing to a description of the application. + This information is intended to identify and describe + the application in a status display." + ::= {applEntry 17} + +-- The assocTable augments the information in the applTable +-- with information about associations. Note that two levels +-- of compliance are specified below, depending on whether +-- association monitoring is mandated. + +assocTable OBJECT-TYPE + SYNTAX SEQUENCE OF AssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding a set of all active application + associations." + ::= {application 2} + +assocEntry OBJECT-TYPE + SYNTAX AssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry associated with an association for a network + service application." + INDEX {applIndex, assocIndex} + ::= {assocTable 1} + +AssocEntry ::= SEQUENCE { + assocIndex + INTEGER, + assocRemoteApplication + SnmpAdminString, + assocApplicationProtocol + OBJECT IDENTIFIER, + assocApplicationType + INTEGER, + assocDuration + TimeStamp +} + +assocIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify each association for a network + service application. This attribute is the index that is + used for lexicographic ordering of the table. Note that the + table is also indexed by the applIndex." + ::= {assocEntry 1} + +assocRemoteApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the system running remote network service + application. For an IP-based application this should be + either a domain name or IP address. For an OSI application + it should be the string encoded distinguished name of the + managed object. For X.400(1984) MTAs which do not have a + Distinguished Name, the RFC 2156 syntax 'mta in + globalid' used in X400-Received: fields can be used. Note, + however, that not all connections an MTA makes are + necessarily to another MTA." + ::= {assocEntry 2} + +assocApplicationProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used for the + application. For an OSI Application, this will be the + Application Context. For Internet applications, OID + values of the form {applTCPProtoID port} or {applUDPProtoID + port} are used for TCP-based and UDP-based protocols, + respectively. In either case 'port' corresponds to the + primary port number being used by the protocol. The + usual IANA procedures may be used to register ports for + new protocols." + ::= {assocEntry 3} + +assocApplicationType OBJECT-TYPE + SYNTAX INTEGER { + uainitiator(1), + uaresponder(2), + peerinitiator(3), + peerresponder(4)} + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether the remote application is some type of + client making use of this network service (e.g., a Mail User + Agent) or a server acting as a peer. Also indicated is whether + the remote end initiated an incoming connection to the network + service or responded to an outgoing connection made by the + local application. MTAs and messaging gateways are + considered to be peers for the purposes of this variable." + ::= {assocEntry 4} + +assocDuration OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this association was + started. If this association started prior to the last + initialization of the network subsystem, then this + object contains a zero value." + ::= {assocEntry 5} + + +-- Conformance information + +applConformance OBJECT IDENTIFIER ::= {application 3} + +applGroups OBJECT IDENTIFIER ::= {applConformance 1} +applCompliances OBJECT IDENTIFIER ::= {applConformance 2} + +-- Compliance statements + +applCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for RFC 1565 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications. + This is the basic compliance statement for RFC 1565." + MODULE + MANDATORY-GROUPS {applRFC1565Group} + ::= {applCompliances 1} + +assocCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for RFC 1565 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications + and their associations." + MODULE + MANDATORY-GROUPS {applRFC1565Group, assocRFC1565Group} + ::= {applCompliances 2} + +applRFC2248Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for RFC 2248 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications." + MODULE + MANDATORY-GROUPS {applRFC2248Group} + ::= {applCompliances 3} + +assocRFC2248Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for RFC 2248 implementations + which support the Network Services Monitoring MIB for + basic monitoring of network service applications and + their associations." + MODULE + MANDATORY-GROUPS {applRFC2248Group, assocRFC2248Group} + ::= {applCompliances 4} + +applRFC2788Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2788 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications." + MODULE + MANDATORY-GROUPS {applRFC2788Group} + ::= {applCompliances 5} + +assocRFC2788Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2788 implementations + which support the Network Services Monitoring MIB for + basic monitoring of network service applications and + their associations." + MODULE + MANDATORY-GROUPS {applRFC2788Group, assocRFC2788Group} + ::= {applCompliances 6} + + +-- Units of conformance + +applRFC1565Group OBJECT-GROUP + OBJECTS { + applName, applVersion, applUptime, applOperStatus, + applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations} + STATUS obsolete + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This is the original set + of such objects defined in RFC 1565." + ::= {applGroups 7} + +assocRFC1565Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS obsolete + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This is the + original set of such objects defined in RFC 1565." + ::= {applGroups 2} + +applRFC2248Group OBJECT-GROUP + OBJECTS { + applName, applVersion, applUptime, applOperStatus, + applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations, applDescription, applURL} + STATUS deprecated + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This group was originally + defined in RFC 2248; note that applDirectoryName is + missing." + ::= {applGroups 3} + +assocRFC2248Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS deprecated + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This group + was originally defined by RFC 2248." + ::= {applGroups 4} + +applRFC2788Group OBJECT-GROUP + OBJECTS { + applName, applDirectoryName, applVersion, applUptime, + applOperStatus, applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations, applDescription, applURL} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This is the appropriate + group for RFC 2788 -- it adds the applDirectoryName object + missing in RFC 2248." + ::= {applGroups 5} + +assocRFC2788Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This is + the appropriate group for RFC 2788." + ::= {applGroups 6} + +-- OIDs of the form {applTCPProtoID port} are intended to be used +-- for TCP-based protocols that don't have OIDs assigned by other +-- means. {applUDPProtoID port} serves the same purpose for +-- UDP-based protocols. In either case 'port' corresponds to +-- the primary port number being used by the protocol. For example, +-- assuming no other OID is assigned for SMTP, an OID of +-- {applTCPProtoID 25} could be used, since SMTP is a TCP-based +-- protocol that uses port 25 as its primary port. + +applTCPProtoID OBJECT IDENTIFIER ::= {application 4} +applUDPProtoID OBJECT IDENTIFIER ::= {application 5} + +END diff --git a/mibs/ietf/NHRP-MIB b/mibs/ietf/NHRP-MIB new file mode 100644 index 0000000..4f9bfcc --- /dev/null +++ b/mibs/ietf/NHRP-MIB @@ -0,0 +1,2609 @@ +NHRP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + OBJECT-TYPE, MODULE-IDENTITY, mib-2, Integer32, + Counter32, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType, + TimeStamp + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB + ; + +nhrpMIB MODULE-IDENTITY + LAST-UPDATED "9908260000Z" -- August 26, 1999 + ORGANIZATION "Internetworking Over NBMA (ion) Working Group" + CONTACT-INFO + "Maria Greene (maria@xedia.com) + Contractor + + Joan Cucchiara (joan@ironbridgenetworks.com) + IronBridge Networks + + James V. Luciani (luciani@baynetworks.com) + Bay Networks" + DESCRIPTION + "This MIB contains managed object definitions for the Next + Hop Resolution Procol, NHRP, as defined in RFC 2332 [17]." + + -- revision history + + REVISION "9908260000Z" -- August 26, 1999 + DESCRIPTION "Initial version, published as RFC 2677." + + ::= { mib-2 71 } + +--**************************************************************** + -- NHRP Textual Conventions + --**************************************************************** + + NhrpGenAddr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of an internetwork layer or NBMA address." + SYNTAX OCTET STRING (SIZE (0..64)) + + nhrpObjects OBJECT IDENTIFIER ::= { nhrpMIB 1 } + + --**************************************************************** + -- NHRP General (Client and Server) Objects + --**************************************************************** + + nhrpGeneralObjects OBJECT IDENTIFIER ::= { nhrpObjects 1 } + + + -- + -- The following scalar is to be used to + -- provided indices for the + -- nhrpClientTable, and/or the nhrpServerTable. + -- + + nhrpNextIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar is used for creating rows in the + nhrpClientTable and the nhrpServerTable. + The value of this variable is a currently unused value + for nhrpClientIndex and nhrpServerIndex. + The value returned when reading this variable must be + unique for the NHC's and NHS's indices associated with + this row. Subsequent attempts to read this variable + must return different values. + + NOTE: this object exists in the General Group because + it is to be used in establishing rows in the + nhrpClientTable and the nhrpServerTable. In other words, + the value retrieved from this object could become the + value of nhrpClientIndex and nhprServerIndex. + + In the situation of an agent re-initialization the value + of this object must be saved in non-volatile storage. + + This variable will return the special value 0 if no new + rows can be created." + ::= { nhrpGeneralObjects 1 } + + + -- + -- The NHRP Cache Table + -- + + nhrpCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpCacheEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "This table contains mappings between internetwork layer + addresses and NBMA subnetwork layer addresses." + ::= { nhrpGeneralObjects 2 } + +nhrpCacheEntry OBJECT-TYPE + SYNTAX NhrpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A cached mapping between an internetwork layer address + and an NBMA address. Entries can be created by the + network administrator using the nhrpCacheRowStatus + column, or they may be added dynamically based on + protocol operation (including NHRP, SCSP, and others, + such as ATMARP). + + When created based by NHRP protocol operations + this entry is largely based on contents contained in + the Client Information Entry (CIE). + Zero or more Client Information Entries (CIEs) may be + included in the NHRP Packet. For a complete description + of the CIE, refer to Section 5.2.0.1 of + RFC 2332 [17]." + INDEX { + nhrpCacheInternetworkAddrType, + nhrpCacheInternetworkAddr, + ifIndex, + nhrpCacheIndex + } + ::= { nhrpCacheTable 1 } + +NhrpCacheEntry ::= SEQUENCE { + nhrpCacheInternetworkAddrType AddressFamilyNumbers, + nhrpCacheInternetworkAddr NhrpGenAddr, + nhrpCacheIndex Unsigned32, + nhrpCachePrefixLength Integer32, + nhrpCacheNextHopInternetworkAddr NhrpGenAddr, + nhrpCacheNbmaAddrType AddressFamilyNumbers, + nhrpCacheNbmaAddr NhrpGenAddr, + nhrpCacheNbmaSubaddr NhrpGenAddr, + nhrpCacheType INTEGER, + nhrpCacheState INTEGER, + nhrpCacheHoldingTimeValid TruthValue, + nhrpCacheHoldingTime Unsigned32, + nhrpCacheNegotiatedMtu Integer32, + nhrpCachePreference Integer32, + nhrpCacheStorageType StorageType, + nhrpCacheRowStatus RowStatus + + +} + +nhrpCacheInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork layer address type of this Next Hop + Resolution Cache entry. The value of this object indicates + how to interpret the values of nhrpCacheInternetworkAddr + and nhrpCacheNextHopInternetworkAddr." + ::= { nhrpCacheEntry 1 } + +nhrpCacheInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the internetwork address of the + destination." + ::= { nhrpCacheEntry 2 } + +nhrpCacheIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for this entry that has local + significance within the scope of the General + Group. This identifier is used here to + uniquely identify this row, and also used + in the 'nhrpPurgeTable' for the value of + the 'nhrpPurgeCacheIdentifier'." + ::= { nhrpCacheEntry 3 } + +nhrpCachePrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bits that define the internetwork layer + prefix associated with the nhrpCacheInternetworkAddr." + ::= { nhrpCacheEntry 4 } + +nhrpCacheNextHopInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork address of the next hop." + + ::= { nhrpCacheEntry 5 } + +nhrpCacheNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA address type. The value of this + object indicates how to interpret + the values of nhrpCacheNbmaAddr and + nhrpCacheNbmaSubaddr." + ::= { nhrpCacheEntry 6 } + +nhrpCacheNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subnetwork address of the next + hop." + ::= { nhrpCacheEntry 7 } + +nhrpCacheNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subaddress of the next hop. If + there is no subaddress concept for the NBMA address + family, this value will be a zero-length OCTET STRING." + ::= { nhrpCacheEntry 8 } + +nhrpCacheType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + register(2), + resolveAuthoritative(3), + resoveNonauthoritative(4), + transit(5), + administrativelyAdded(6), + atmarp(7), + scsp(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of how this cache entry + was created. The values are: + + 'other(1)' The entry was added by some + other means. + + 'register(2)' In a server, added based on a + client registration. + + 'resolveAuthoritative(3)' In a client, added based on + receiving an Authoritative + NHRP Resolution Reply. + 'resolveNonauthoritative(4)' In a client, added based on + receiving a Nonauthoritative + NHRP Resolution Reply. + + 'transit(5)' In a transit server, added by + examining a forwarded NHRP + packet. + + 'administrativelyAdded(6)' In a client or server, + manually added by the + administrator. The + StorageType of this entry is + reflected in + 'nhrpCacheStorageType'. + + 'atmarp(7)' The entry was added due to an + ATMARP. + + 'scsp(8)' The entry was added due to + SCSP. + + + When the entry is under creation using the + nhrpCacheRowStatus column, the only value that can be + specified by the administrator is 'administrativelyAdded'. + Attempting to set any other value will cause an + 'inconsistentValue' error. + + The value cannot be modified once the entry is active." + ::= { nhrpCacheEntry 9 } + + +nhrpCacheState OBJECT-TYPE + SYNTAX INTEGER { + incomplete(1), + ackReply(2), + nakReply(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "An indication of the state of this entry. The values are: + + 'incomplete(1)' The client has sent a NHRP Resolution + Request but has not yet received the + NHRP Resolution Reply. + 'ackReply(2)' For a client or server, this is a + cached valid mapping. + + 'nakReply(3)' For a client or server, this is a + cached NAK mapping." + ::= { nhrpCacheEntry 10 } + +nhrpCacheHoldingTimeValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) is returned if the value of + 'nhrpCacheType' is not + 'administrativelyAdded'. Since the + value of 'nhrpCacheType' was not + configured by a user, the value of + 'nhrpCacheHoldingTime' is + considered valid. In other words, the value of + 'nhrpCacheHoldingTime' represents + the Holding Time for the cache Entry. + + If 'nhrpCacheType has been configured by a + user, (i.e. the value of 'nhrpCacheType' is + 'administrativelyAdded') then false(2) will be returned. + This indicates that the value of + 'nhrpCacheHoldingTime' is undefined because this row + could possibly be backed up in nonvolatile storage." + ::= { nhrpCacheEntry 11 } + +nhrpCacheHoldingTime OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of 'nhrpCacheHoldingTimeValid is + true(1) then this object represents the number + of seconds that the cache entry will remain in this + table. When this value reaches 0 (zero) the row should + be deleted. + + If the value of 'nhrpCacheHoldingTimeValid is + false(2) then this object is undefined." + ::= { nhrpCacheEntry 12 } + +nhrpCacheNegotiatedMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum transmission unit (MTU) that was negotiated + or registered for this entity. In other words, this is the + actual MTU being used." + ::= { nhrpCacheEntry 13 } + +nhrpCachePreference OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object which reflects the Preference value of the + Client Information Entry (CIE). + + Zero or more Client Information Entries (CIEs) may be + included in the NHRP Packet. One of the fields in the + CIE is the Preference. For a complete description of + the CIE, refer to Section 5.2.0.1 of RFC 2332 [17]." + REFERENCE + "Section 5.2.0.1 Mandatory Part Format, RFC 2332 [17]." + ::= { nhrpCacheEntry 14 } + +nhrpCacheStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value only has meaning when the 'nhrpCacheType' + has the value of 'administrativelyAdded'. + + When the row is created due to being + 'administrativelyAdded', this object reflects whether + this row is kept in volatile storage + and lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + If the value of 'nhrpCacheType' has a value which + is not 'administrativelyAdded, then the value of this + object is 'other(1)'." + DEFVAL { nonVolatile } + ::= { nhrpCacheEntry 15 } + +nhrpCacheRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpCacheEntry 16 } + +-- +-- The NHRP Purge Request Table +-- + +nhrpPurgeReqTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpPurgeReqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will track Purge Request Information." + ::= { nhrpGeneralObjects 3 } + +nhrpPurgeReqEntry OBJECT-TYPE + SYNTAX NhrpPurgeReqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information regarding a Purge Request." + INDEX { nhrpPurgeIndex } + ::= { nhrpPurgeReqTable 1 } + +NhrpPurgeReqEntry ::= SEQUENCE { + nhrpPurgeIndex Unsigned32, + nhrpPurgeCacheIdentifier Unsigned32, + nhrpPurgePrefixLength Integer32, + nhrpPurgeRequestID Unsigned32, + nhrpPurgeReplyExpected TruthValue, + nhrpPurgeRowStatus RowStatus +} + +nhrpPurgeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index for this entry that has local significance + within the scope of this table." + ::= { nhrpPurgeReqEntry 1 } + +nhrpPurgeCacheIdentifier OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "This object identifies which row in + 'nhrpCacheTable' is being purged. This object + should have the same value as the 'nhrpCacheIndex' + in the 'nhrpCacheTable'." + ::= { nhrpPurgeReqEntry 2 } + +nhrpPurgePrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "In the case of NHRP Purge Requests, this specifies the + equivalence class of addresses which match the first + 'Prefix Length' bit positions of the Client Protocol + Address specified in the Client Information Entry (CIE)." + ::= { nhrpPurgeReqEntry 3 } + +nhrpPurgeRequestID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Request ID used in the purge request." + ::= { nhrpPurgeReqEntry 4 } + +nhrpPurgeReplyExpected OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether this Purge Request has the + 'N' Bit cleared (off)." + ::= { nhrpPurgeReqEntry 5 } + +nhrpPurgeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpPurgeReqEntry 6 } + +--**************************************************************** +-- NHRP Client Objects +--**************************************************************** + +nhrpClientObjects OBJECT IDENTIFIER ::= { nhrpObjects 2 } + +-- +-- The NHRP Client Table +-- + +nhrpClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about NHRP clients (NHCs) managed by this + agent." + ::= { nhrpClientObjects 1 } + +nhrpClientEntry OBJECT-TYPE + SYNTAX NhrpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single NHC." + INDEX { nhrpClientIndex } + ::= { nhrpClientTable 1 } + +NhrpClientEntry ::= SEQUENCE { + nhrpClientIndex Unsigned32, + nhrpClientInternetworkAddrType AddressFamilyNumbers, + nhrpClientInternetworkAddr NhrpGenAddr, + nhrpClientNbmaAddrType AddressFamilyNumbers, + nhrpClientNbmaAddr NhrpGenAddr, + nhrpClientNbmaSubaddr NhrpGenAddr, + nhrpClientInitialRequestTimeout Integer32, + nhrpClientRegistrationRequestRetries Integer32, + nhrpClientResolutionRequestRetries Integer32, + nhrpClientPurgeRequestRetries Integer32, + nhrpClientDefaultMtu Unsigned32, + nhrpClientHoldTime Unsigned32, + nhrpClientRequestID Unsigned32, + nhrpClientStorageType StorageType, + nhrpClientRowStatus RowStatus +} + +nhrpClientIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for the NHRP client that is unique within + the scope of this agent. The 'nhrpNextIndex' value + should be consulted (read), prior to creating a row in + this table, and the value returned from reading + 'nhrpNextIndex' should be used as this object's value." + + ::= { nhrpClientEntry 1 } + +nhrpClientInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of this + client. This object indicates how the value of + nhrpClientInternetworkAddr is to be interpreted." + ::= { nhrpClientEntry 2 } + +nhrpClientInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of this + client." + ::= { nhrpClientEntry 3 } + +nhrpClientNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of this client. + This object indicates how the values of + nhrpClientNbmaAddr and nhrpClientNbmaSubaddr are to be + interpreted." + ::= { nhrpClientEntry 4 } + +nhrpClientNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of this client." + ::= { nhrpClientEntry 5 } + +nhrpClientNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of this client. For NBMA address + families without a subaddress concept, this will be a + zero-length OCTET STRING." + ::= { nhrpClientEntry 6 } + +nhrpClientInitialRequestTimeout OBJECT-TYPE + SYNTAX Integer32 (1..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that the client will wait before + timing out an NHRP initial request. This object only has + meaning for the initial timeout period." + DEFVAL { 10 } + ::= { nhrpClientEntry 7 } + +nhrpClientRegistrationRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry the + registration request before failure. A value of + 0 means don't retry. A value of 65535 means + retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 8 } + +nhrpClientResolutionRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry the resolution + request before failure. A value of 0 means don't retry. + A value of 65535 means retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 9 } + +nhrpClientPurgeRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry a purge request + before failure. A value of 0 means don't retry. A value of + 65535 means retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 10 } + +nhrpClientDefaultMtu OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The default maximum transmission unit (MTU) of the + LIS/LAG which this client should use. This object + will be initialized by the agent to the default MTU + of the LIS/LAG (which is 9180) unless a different MTU + value is specified during creation of this Client." + REFERENCE + "RFC 2225 [25], Classical IP and ARP over ATM, Section 7, + DEFAULT VALUE FOR IP MTU OVER ATM AAL5." + DEFVAL { 9180 } + ::= { nhrpClientEntry 11 } + +nhrpClientHoldTime OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The hold time the client will register." + DEFVAL { 900 } + ::= { nhrpClientEntry 12 } + +nhrpClientRequestID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Request ID used to register this client with its + server. According to Section 5.2.3 of the NHRP + Specification, RFC 2332 [17], the Request ID must + be kept in non-volatile storage, so that if an NHC + crashes and re-initializes, it will use a different + Request ID during the registration process + when reregistering with the same NHS." + REFERENCE + "Section 5.2.3 NHRP Registration Request, RFC 2332 [17]." + ::= { nhrpClientEntry 13 } + +nhrpClientStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon a Client crash or + reboot situation, or if this row is backed up by + nonvolatile or permanent storage." + DEFVAL { nonVolatile } + ::= { nhrpClientEntry 14 } + +nhrpClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientEntry 15 } + + +-- +-- The NHRP Client Registration Table +-- + +nhrpClientRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Registration Request Information that + needs to be maintained by the NHCs (clients)." + REFERENCE + "Section 5.2.3 NHRP Registration Request, RFC 2332 [17]." + ::= { nhrpClientObjects 2 } + +nhrpClientRegistrationEntry OBJECT-TYPE + SYNTAX NhrpClientRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHC needs to maintain registration request information + between the NHC and the NHS. An entry in this table + represents information for a single registration request." + INDEX { nhrpClientIndex, + nhrpClientRegIndex + } + ::= { nhrpClientRegistrationTable 1 } + +NhrpClientRegistrationEntry ::= SEQUENCE { + nhrpClientRegIndex Unsigned32, + nhrpClientRegUniqueness INTEGER, + nhrpClientRegState INTEGER, + nhrpClientRegRowStatus RowStatus +} + +nhrpClientRegIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "An identifier for this entry such that it + identifies a specific Registration Request from + the NHC represented by the nhrpClientIndex." + ::= { nhrpClientRegistrationEntry 1 } + +nhrpClientRegUniqueness OBJECT-TYPE + SYNTAX INTEGER { + requestUnique(1), + requestNotUnique(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Uniqueness indicator for this Registration Request. + If this object has the value of requestUnique(1), then + the Uniqueness bit is set in the the NHRP Registration + Request represented by this row. The value cannot + be changed once the row is created." + ::= { nhrpClientRegistrationEntry 2 } + +nhrpClientRegState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + registering(2), + ackRegisterReply(3), + nakRegisterReply(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registration state of this client. The values are: + 'other(1)' The state of the registration + request is not one of + 'registering', + 'ackRegisterReply' or + 'nakRegisterReply'. + + 'registering(2)' A registration request has + been issued and a registration + reply is expected. + + 'ackRegisterReply(3)' A positive registration reply + has been received. + + 'nakRegisterReply(4)' The client has received a + negative registration + reply (NAK)." + ::= { nhrpClientRegistrationEntry 3 } + +nhrpClientRegRowStatus OBJECT-TYPE + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientRegistrationEntry 4 } + +-- +-- The NHRP Client->Server Table +-- + +nhrpClientNhsTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientNhsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of NHSes that are available for use by this NHC + (client). By default, the agent will add an entry to this + table that corresponds to the client's default router." + ::= { nhrpClientObjects 3 } + +nhrpClientNhsEntry OBJECT-TYPE + SYNTAX NhrpClientNhsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHS that may be used by an NHC." + INDEX { nhrpClientIndex, nhrpClientNhsIndex } + ::= { nhrpClientNhsTable 1 } + +NhrpClientNhsEntry ::= SEQUENCE { + nhrpClientNhsIndex Unsigned32, + nhrpClientNhsInternetworkAddrType AddressFamilyNumbers, + nhrpClientNhsInternetworkAddr NhrpGenAddr, + nhrpClientNhsNbmaAddrType AddressFamilyNumbers, + nhrpClientNhsNbmaAddr NhrpGenAddr, + nhrpClientNhsNbmaSubaddr NhrpGenAddr, + nhrpClientNhsInUse TruthValue, + nhrpClientNhsRowStatus RowStatus +} + +nhrpClientNhsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for an NHS available to an NHC." + ::= { nhrpClientNhsEntry 1 } + +nhrpClientNhsInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of the + NHRP server represented in this entry. This object + indicates how the value of + nhrpClientNhsInternetworkAddr is to be interpreted." + ::= { nhrpClientNhsEntry 2 } + +nhrpClientNhsInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the destination internetwork layer + address of the NHRP server represented by this + entry. If this value is not known, this will be + a zero-length OCTET STRING." + ::= { nhrpClientNhsEntry 3 } + +nhrpClientNhsNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of the NHRP + Server represented by this entry. This object indicates + how the values of nhrpClientNhsNbmaAddr and + nhrpClientNhsNbmaSubaddr are to be interpreted." + ::= { nhrpClientNhsEntry 4 } + +nhrpClientNhsNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of the NHS. The type of + the address is indicated by the corresponding value of + nhrpClientNhsNbmaAddrType." + ::= { nhrpClientNhsEntry 5 } + +nhrpClientNhsNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of the NHS. For NMBA address + families that do not have the concept of subaddress, + this will be a zero-length OCTET STRING." + ::= { nhrpClientNhsEntry 6 } + +nhrpClientNhsInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this NHS is in use by the NHC." + ::= { nhrpClientNhsEntry 7 } + +nhrpClientNhsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientNhsEntry 8 } + +-- +-- The NHRP Client StatisticsTable +-- + +nhrpClientStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistics collected by NHRP + clients." + ::= { nhrpClientObjects 4 } + +nhrpClientStatEntry OBJECT-TYPE + SYNTAX NhrpClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics collected by a NHRP client." + INDEX { nhrpClientIndex } + ::= { nhrpClientStatTable 1 } + +NhrpClientStatEntry ::= SEQUENCE { + nhrpClientStatTxResolveReq Counter32, + nhrpClientStatRxResolveReplyAck Counter32, + nhrpClientStatRxResolveReplyNakProhibited Counter32, + nhrpClientStatRxResolveReplyNakInsufResources Counter32, + nhrpClientStatRxResolveReplyNakNoBinding Counter32, + nhrpClientStatRxResolveReplyNakNotUnique Counter32, + nhrpClientStatTxRegisterReq Counter32, + nhrpClientStatRxRegisterAck Counter32, + nhrpClientStatRxRegisterNakProhibited Counter32, + nhrpClientStatRxRegisterNakInsufResources Counter32, + nhrpClientStatRxRegisterNakAlreadyReg Counter32, + + nhrpClientStatRxPurgeReq Counter32, + nhrpClientStatTxPurgeReq Counter32, + nhrpClientStatRxPurgeReply Counter32, + nhrpClientStatTxPurgeReply Counter32, + + nhrpClientStatTxErrorIndication Counter32, + nhrpClientStatRxErrUnrecognizedExtension Counter32, + nhrpClientStatRxErrLoopDetected Counter32, + nhrpClientStatRxErrProtoAddrUnreachable Counter32, + nhrpClientStatRxErrProtoError Counter32, + nhrpClientStatRxErrSduSizeExceeded Counter32, + nhrpClientStatRxErrInvalidExtension Counter32, + nhrpClientStatRxErrAuthenticationFailure Counter32, + nhrpClientStatRxErrHopCountExceeded Counter32, + nhrpClientStatDiscontinuityTime TimeStamp +} + +nhrpClientStatTxResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 1 } + +nhrpClientStatRxResolveReplyAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Resolution + Replies received by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 2 } + +nhrpClientStatRxResolveReplyNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Administratively Prohibited'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 3 } + +nhrpClientStatRxResolveReplyNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 4 } + +nhrpClientStatRxResolveReplyNakNoBinding OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'No Internetworking Layer Address to NBMA Address + Binding Exists'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + + ::= { nhrpClientStatEntry 5 } + +nhrpClientStatRxResolveReplyNakNotUnique OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Binding Exists But Is Not Unique'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 6 } + +nhrpClientStatTxRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 7 } + +nhrpClientStatRxRegisterAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Registration + Replies received by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 8 } + +nhrpClientStatRxRegisterNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 9 } + +nhrpClientStatRxRegisterNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 10 } + +nhrpClientStatRxRegisterNakAlreadyReg OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating 'Unique + Internetworking Layer Address Already Registered'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 11 } + +nhrpClientStatRxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests received by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 12 } + +nhrpClientStatTxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests transmitted by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 13 } + +nhrpClientStatRxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies received by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 14 } + +nhrpClientStatTxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies transmitted by this + client. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 15 } + +nhrpClientStatTxErrorIndication OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 16 } + +nhrpClientStatRxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 17 } + +nhrpClientStatRxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'NHRP Loop Detected'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 18 } + +nhrpClientStatRxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Protocol Address + Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 19 } + +nhrpClientStatRxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 20 } + +nhrpClientStatRxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'NHRP SDU Size + + Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 21 } + +nhrpClientStatRxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 22 } + +nhrpClientStatRxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Authentication + Failure'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 23 } + +nhrpClientStatRxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 24 } + +nhrpClientStatDiscontinuityTime 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 Client's counters + suffered a discontinuity. If no such discontinuities + have occurred since the last re-initialization of the + local management subsystem or the NHRP Client + re-initialization associated with this entry, then + this object contains a zero value." + REFERENCE + "RFC 2233 [18]." + ::= { nhrpClientStatEntry 25 } + +--**************************************************************** +-- NHRP Server Objects +--**************************************************************** + +nhrpServerObjects OBJECT IDENTIFIER ::= { nhrpObjects 3 } + +-- +-- The NHRP Next Hop Server Table +-- + +nhrpServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information for a set of NHSes + associated with this agent." + ::= { nhrpServerObjects 1 } + +nhrpServerEntry OBJECT-TYPE + SYNTAX NhrpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single NHS." + INDEX { nhrpServerIndex } + ::= { nhrpServerTable 1 } + +NhrpServerEntry ::= SEQUENCE { + nhrpServerIndex Unsigned32, + nhrpServerInternetworkAddrType AddressFamilyNumbers, + nhrpServerInternetworkAddr NhrpGenAddr, + nhrpServerNbmaAddrType AddressFamilyNumbers, + nhrpServerNbmaAddr NhrpGenAddr, + nhrpServerNbmaSubaddr NhrpGenAddr, + nhrpServerStorageType StorageType, + nhrpServerRowStatus RowStatus +} + +nhrpServerIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for the server that is unique within the + scope of this agent." + ::= { nhrpServerEntry 1 } + +nhrpServerInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of this + server. This object is used to interpret the value of + nhrpServerInternetworkAddr." + ::= { nhrpServerEntry 2 } + +nhrpServerInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of this + server." + ::= { nhrpServerEntry 3 } + +nhrpServerNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of this server. + This object is used to interpret the value of + nhrpServerNbmaAddr." + ::= { nhrpServerEntry 4 } + +nhrpServerNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subnetwork address of this + server." + ::= { nhrpServerEntry 5 } + +nhrpServerNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subaddress of this server. + For NBMA address families without a subaddress + concept, this will be a zero-length OCTET STRING." + ::= { nhrpServerEntry 6 } + +nhrpServerStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon a Server crash or + reboot situation, or if this row is backed up by + nonvolatile or permanent storage." + DEFVAL { nonVolatile } + ::= { nhrpServerEntry 7 } + +nhrpServerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpServerEntry 8 } + +-- +-- The Server Cache Table +-- +nhrpServerCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table extends the nhrpCacheTable for + NHSes. If the nhrpCacheTable has a row added due to + an NHS or based on information regarding an NHS then + a row is also added in this table. + + The rows in this table will be created when rows in + the nhrpCacheTable are created. However, there may + be rows created in the nhrpCacheTable which do not + have corresponding rows in this table. For example, + if the nhrpCacheTable has a row added due to a Next + Hop Client which is co-resident on the same device + as the NHS, a row will not be added to this table." + ::= { nhrpServerObjects 2 } + +nhrpServerCacheEntry OBJECT-TYPE + SYNTAX NhrpServerCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information kept by a NHS for a relevant + Next Hop Resolution Cache entry." + INDEX { + nhrpCacheInternetworkAddrType, + nhrpCacheInternetworkAddr, + ifIndex, + nhrpCacheIndex + } + ::= { nhrpServerCacheTable 1 } + +NhrpServerCacheEntry ::= SEQUENCE { + nhrpServerCacheAuthoritative TruthValue, + nhrpServerCacheUniqueness TruthValue +} + +nhrpServerCacheAuthoritative OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this cache entry is + authoritative, which means the entry was added because + of a direct registration request with this server or + by Server Cache Synchronization Protocol (SCSP) from + an authoritative source." + ::= { nhrpServerCacheEntry 1 } + +nhrpServerCacheUniqueness OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Uniqueness indicator for this cache + entry used in duplicate address detection. This value + cannot be changed after the entry is active." + ::= { nhrpServerCacheEntry 2 } + +-- +-- The NHRP Server->Client Table +-- + +nhrpServerNhcTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerNhcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of NHCs that are available for use by this NHS + (Server)." + REFERENCE + "Section 4 Configuration (Next Hop Servers), + RFC 2332 [17]." + ::= { nhrpServerObjects 3 } + +nhrpServerNhcEntry OBJECT-TYPE + SYNTAX NhrpServerNhcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHC that may be used by an NHS." + INDEX { nhrpServerIndex, nhrpServerNhcIndex } + ::= { nhrpServerNhcTable 1 } + +NhrpServerNhcEntry ::= SEQUENCE { + nhrpServerNhcIndex Unsigned32, + nhrpServerNhcPrefixLength Integer32, + nhrpServerNhcInternetworkAddrType AddressFamilyNumbers, + nhrpServerNhcInternetworkAddr NhrpGenAddr, + nhrpServerNhcNbmaAddrType AddressFamilyNumbers, + nhrpServerNhcNbmaAddr NhrpGenAddr, + nhrpServerNhcNbmaSubaddr NhrpGenAddr, + nhrpServerNhcInUse TruthValue, + nhrpServerNhcRowStatus RowStatus +} + +nhrpServerNhcIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for an NHC available to an NHS." + ::= { nhrpServerNhcEntry 1 } + +nhrpServerNhcPrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of bits that define the internetwork + layer prefix associated with the + nhrpServerNhcInternetworkAddr." + ::= { nhrpServerNhcEntry 2 } + +nhrpServerNhcInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of the + NHRP Client represented in this entry. This object + indicates how the value of nhrpServerNhcInternetworkAddr + is to be interpreted." + ::= { nhrpServerNhcEntry 3 } + +nhrpServerNhcInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of + the NHRP Client represented by this entry. If this + value is not known, this will be a zero-length + OCTET STRING." + ::= { nhrpServerNhcEntry 4 } + +nhrpServerNhcNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of the NHRP + Client represented by this entry. This object indicates + how the values of nhrpServerNhcNbmaAddr and + nhrpServerNhcNbmaSubaddr are to be interpreted." + ::= { nhrpServerNhcEntry 5 } + +nhrpServerNhcNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of the NHC. The type of the + address is indicated by the corresponding value of + nhrpServerNbmaAddrType." + ::= { nhrpServerNhcEntry 6 } + +nhrpServerNhcNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of the NHC. For NMBA address familes + that do not have the concept of subaddress, this will + be a zero-length OCTET STRING." + ::= { nhrpServerNhcEntry 7 } + +nhrpServerNhcInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this NHC is in use by the NHS." + ::= { nhrpServerNhcEntry 8 } + +nhrpServerNhcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpServerNhcEntry 9 } + +-- +-- The Next Hop Server Statistics Table +-- + +nhrpServerStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics collected by Next Hop Servers." + ::= { nhrpServerObjects 4 } + +nhrpServerStatEntry OBJECT-TYPE + SYNTAX NhrpServerStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a particular NHS. The statistics are + broken into received (Rx), transmitted (Tx) + and forwarded (Fw). Forwarded (Fw) would be done + by a transit NHS." + INDEX { nhrpServerIndex } + ::= { nhrpServerStatTable 1 } + +NhrpServerStatEntry ::= SEQUENCE { + nhrpServerStatRxResolveReq Counter32, + nhrpServerStatTxResolveReplyAck Counter32, + nhrpServerStatTxResolveReplyNakProhibited Counter32, + nhrpServerStatTxResolveReplyNakInsufResources Counter32, + nhrpServerStatTxResolveReplyNakNoBinding Counter32, + nhrpServerStatTxResolveReplyNakNotUnique Counter32, + + nhrpServerStatRxRegisterReq Counter32, + nhrpServerStatTxRegisterAck Counter32, + nhrpServerStatTxRegisterNakProhibited Counter32, + nhrpServerStatTxRegisterNakInsufResources Counter32, + nhrpServerStatTxRegisterNakAlreadyReg Counter32, + + nhrpServerStatRxPurgeReq Counter32, + nhrpServerStatTxPurgeReq Counter32, + nhrpServerStatRxPurgeReply Counter32, + nhrpServerStatTxPurgeReply Counter32, + +-- Error Indications + nhrpServerStatRxErrUnrecognizedExtension Counter32, + nhrpServerStatRxErrLoopDetected Counter32, + nhrpServerStatRxErrProtoAddrUnreachable Counter32, + nhrpServerStatRxErrProtoError Counter32, + nhrpServerStatRxErrSduSizeExceeded Counter32, + nhrpServerStatRxErrInvalidExtension Counter32, + nhrpServerStatRxErrInvalidResReplyReceived Counter32, + nhrpServerStatRxErrAuthenticationFailure Counter32, + nhrpServerStatRxErrHopCountExceeded Counter32, + + nhrpServerStatTxErrUnrecognizedExtension Counter32, + nhrpServerStatTxErrLoopDetected Counter32, + nhrpServerStatTxErrProtoAddrUnreachable Counter32, + nhrpServerStatTxErrProtoError Counter32, + nhrpServerStatTxErrSduSizeExceeded Counter32, + nhrpServerStatTxErrInvalidExtension Counter32, + nhrpServerStatTxErrAuthenticationFailure Counter32, + nhrpServerStatTxErrHopCountExceeded Counter32, + +-- Transit NHS statistics + nhrpServerStatFwResolveReq Counter32, + nhrpServerStatFwResolveReply Counter32, + nhrpServerStatFwRegisterReq Counter32, + nhrpServerStatFwRegisterReply Counter32, + nhrpServerStatFwPurgeReq Counter32, + nhrpServerStatFwPurgeReply Counter32, + nhrpServerStatFwErrorIndication Counter32, + nhrpServerStatDiscontinuityTime TimeStamp +} + +nhrpServerStatRxResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests received by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 1 } + +nhrpServerStatTxResolveReplyAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP + Resolution Replies transmitted by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 2 } + +nhrpServerStatTxResolveReplyNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 3 } + +nhrpServerStatTxResolveReplyNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 4 } + +nhrpServerStatTxResolveReplyNakNoBinding OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'No Internetworking Layer Address to NBMA + Address Binding Exists'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 5 } + +nhrpServerStatTxResolveReplyNakNotUnique OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Binding Exists But Is Not Unique'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 6 } + +nhrpServerStatRxRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests received + by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 7 } + +nhrpServerStatTxRegisterAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Registration + Replies transmitted by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 8 } + +nhrpServerStatTxRegisterNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 9 } + +nhrpServerStatTxRegisterNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 10 } + +nhrpServerStatTxRegisterNakAlreadyReg OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Unique Internetworking Layer Address Already + Registered'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 11 } + +nhrpServerStatRxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests received by + this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 12 } + +nhrpServerStatTxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests transmitted by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 13 } + +nhrpServerStatRxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies received by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 14 } + +nhrpServerStatTxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies transmitted by + this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 15 } + +nhrpServerStatRxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code + + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 16 } + + +nhrpServerStatRxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'NHRP Loop Detected'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 17 } + +nhrpServerStatRxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Protocol Address + Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 18 } + +nhrpServerStatRxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 19 } + +nhrpServerStatRxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'NHRP SDU Size + Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 20 } + +nhrpServerStatRxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 21 } + +nhrpServerStatRxErrInvalidResReplyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Invalid Resolution + Reply Received'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 22 } + +nhrpServerStatRxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + received by this server with the error code + 'Authentication Failure'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 23 } + +nhrpServerStatRxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + received by this server with the error code + 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 24 } + +nhrpServerStatTxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 25 } + + +nhrpServerStatTxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'NHRP Loop Detected'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 26 } + +nhrpServerStatTxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Protocol Address Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 27 } + +nhrpServerStatTxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error + code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 28 } + +nhrpServerStatTxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'NHRP SDU Size Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 29 } + +nhrpServerStatTxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + + 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 30 } + +nhrpServerStatTxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Authentication Failure'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 31 } + +nhrpServerStatTxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error + code 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 32 } + +nhrpServerStatFwResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests + forwarded by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 33 } + +nhrpServerStatFwResolveReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Replies forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 34 } + +nhrpServerStatFwRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 35 } + +nhrpServerStatFwRegisterReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Replies forwarded + by this server acting as a transit NHS. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 36 } + +nhrpServerStatFwPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests forwarded + by this server acting as a transit NHS. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 37 } + +nhrpServerStatFwPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies forwarded by this + server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 38 } + +nhrpServerStatFwErrorIndication OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 39 } + +nhrpServerStatDiscontinuityTime 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 Server's counters + suffered a discontinuity. If no such discontinuities + have occurred since the last re-initialization of the + local management subsystem or the NHRP Server + re-initialization associated with this entry, then + this object contains a zero value." + REFERENCE + "RFC 2233 [18]." + ::= { nhrpServerStatEntry 40 } + +--**************************************************************** +-- Module Compliance Statement +--**************************************************************** + +nhrpConformance OBJECT IDENTIFIER ::= { nhrpMIB 2 } + +nhrpCompliances + OBJECT IDENTIFIER ::= { nhrpConformance 1 } + +nhrpGroups + OBJECT IDENTIFIER ::= { nhrpConformance 2 } + +nhrpModuleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the NHRP MIB." + MODULE -- this module + MANDATORY-GROUPS { nhrpGeneralGroup } + + GROUP nhrpClientGroup + DESCRIPTION + "This group must be supported only by stations that + are NHRP clients." + + GROUP nhrpServerGroup + DESCRIPTION + "This group must be supported only by stations that + are NHRP servers." + ::= { nhrpCompliances 1 } + +nhrpGeneralGroup OBJECT-GROUP + OBJECTS { + + nhrpNextIndex, + nhrpCachePrefixLength, + nhrpCacheNextHopInternetworkAddr, + nhrpCacheNbmaAddrType, + nhrpCacheNbmaAddr, + nhrpCacheNbmaSubaddr, + nhrpCacheType, + nhrpCacheState, + nhrpCacheHoldingTimeValid, + nhrpCacheHoldingTime, + nhrpCacheNegotiatedMtu, + nhrpCachePreference, + nhrpCacheStorageType, + nhrpCacheRowStatus, + nhrpPurgeCacheIdentifier, + nhrpPurgePrefixLength, + nhrpPurgeRequestID, + nhrpPurgeReplyExpected, + nhrpPurgeRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to both NHRP clients and NHRP + servers." + ::= { nhrpGroups 1 } + +nhrpClientGroup OBJECT-GROUP + OBJECTS { + nhrpClientInternetworkAddrType, + nhrpClientInternetworkAddr, + nhrpClientNbmaAddrType, + nhrpClientNbmaAddr, + nhrpClientNbmaSubaddr, + nhrpClientInitialRequestTimeout, + nhrpClientRegistrationRequestRetries, + nhrpClientResolutionRequestRetries, + nhrpClientPurgeRequestRetries, + nhrpClientDefaultMtu, + nhrpClientHoldTime, + nhrpClientRequestID, + nhrpClientStorageType, + nhrpClientRowStatus, + nhrpClientRegUniqueness, + nhrpClientRegState, + nhrpClientRegRowStatus, + nhrpClientNhsInternetworkAddrType, + nhrpClientNhsInternetworkAddr, + nhrpClientNhsNbmaAddrType, + nhrpClientNhsNbmaAddr, + nhrpClientNhsNbmaSubaddr, + + nhrpClientNhsInUse, + nhrpClientNhsRowStatus, + nhrpClientStatTxResolveReq, + nhrpClientStatRxResolveReplyAck, + nhrpClientStatRxResolveReplyNakProhibited, + nhrpClientStatRxResolveReplyNakInsufResources, + nhrpClientStatRxResolveReplyNakNoBinding, + nhrpClientStatRxResolveReplyNakNotUnique, + nhrpClientStatTxRegisterReq, + nhrpClientStatRxRegisterAck, + nhrpClientStatRxRegisterNakProhibited, + nhrpClientStatRxRegisterNakInsufResources, + nhrpClientStatRxRegisterNakAlreadyReg, + nhrpClientStatRxPurgeReq, + nhrpClientStatTxPurgeReq, + nhrpClientStatRxPurgeReply, + nhrpClientStatTxPurgeReply, + nhrpClientStatTxErrorIndication, + nhrpClientStatRxErrUnrecognizedExtension, + nhrpClientStatRxErrLoopDetected, + nhrpClientStatRxErrProtoAddrUnreachable, + nhrpClientStatRxErrProtoError, + nhrpClientStatRxErrSduSizeExceeded, + nhrpClientStatRxErrInvalidExtension, + nhrpClientStatRxErrAuthenticationFailure, + nhrpClientStatRxErrHopCountExceeded, + nhrpClientStatDiscontinuityTime + } + STATUS current + DESCRIPTION + "Objects that apply only to NHRP clients." + ::= { nhrpGroups 2 } + +nhrpServerGroup OBJECT-GROUP + OBJECTS { + nhrpServerInternetworkAddrType, + nhrpServerInternetworkAddr, + nhrpServerNbmaAddrType, + nhrpServerNbmaAddr, + nhrpServerNbmaSubaddr, + nhrpServerStorageType, + nhrpServerRowStatus, + nhrpServerCacheAuthoritative, + nhrpServerCacheUniqueness, + nhrpServerNhcPrefixLength, + nhrpServerNhcInternetworkAddrType, + nhrpServerNhcInternetworkAddr, + nhrpServerNhcNbmaAddrType, + nhrpServerNhcNbmaAddr, + nhrpServerNhcNbmaSubaddr, + nhrpServerNhcInUse, + nhrpServerNhcRowStatus, + nhrpServerStatRxResolveReq, + nhrpServerStatTxResolveReplyAck, + nhrpServerStatTxResolveReplyNakProhibited, + nhrpServerStatTxResolveReplyNakInsufResources, + nhrpServerStatTxResolveReplyNakNoBinding, + nhrpServerStatTxResolveReplyNakNotUnique, + nhrpServerStatRxRegisterReq, + nhrpServerStatTxRegisterAck, + nhrpServerStatTxRegisterNakProhibited, + nhrpServerStatTxRegisterNakInsufResources, + nhrpServerStatTxRegisterNakAlreadyReg, + nhrpServerStatRxPurgeReq, + nhrpServerStatTxPurgeReq, + nhrpServerStatRxPurgeReply, + nhrpServerStatTxPurgeReply, + nhrpServerStatRxErrUnrecognizedExtension, + nhrpServerStatRxErrLoopDetected, + nhrpServerStatRxErrProtoAddrUnreachable, + nhrpServerStatRxErrProtoError, + nhrpServerStatRxErrSduSizeExceeded, + nhrpServerStatRxErrInvalidExtension, + nhrpServerStatRxErrInvalidResReplyReceived, + nhrpServerStatRxErrAuthenticationFailure, + nhrpServerStatRxErrHopCountExceeded, + nhrpServerStatTxErrUnrecognizedExtension, + nhrpServerStatTxErrLoopDetected, + nhrpServerStatTxErrProtoAddrUnreachable, + nhrpServerStatTxErrProtoError, + nhrpServerStatTxErrSduSizeExceeded, + nhrpServerStatTxErrInvalidExtension, + nhrpServerStatTxErrAuthenticationFailure, + nhrpServerStatTxErrHopCountExceeded, + nhrpServerStatFwResolveReq, + nhrpServerStatFwResolveReply, + nhrpServerStatFwRegisterReq, + nhrpServerStatFwRegisterReply, + nhrpServerStatFwPurgeReq, + nhrpServerStatFwPurgeReply, + nhrpServerStatFwErrorIndication, + nhrpServerStatDiscontinuityTime + } + STATUS current + DESCRIPTION + "Objects that apply only to NHRP servers." + ::= { nhrpGroups 3 } + +END diff --git a/mibs/ietf/NOTIFICATION-LOG-MIB b/mibs/ietf/NOTIFICATION-LOG-MIB new file mode 100644 index 0000000..3262698 --- /dev/null +++ b/mibs/ietf/NOTIFICATION-LOG-MIB @@ -0,0 +1,784 @@ +NOTIFICATION-LOG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, + TimeTicks, Counter32, Counter64, + IpAddress, Opaque, mib-2 FROM SNMPv2-SMI + TimeStamp, DateAndTime, + StorageType, RowStatus, + TAddress, TDomain FROM SNMPv2-TC + SnmpAdminString, SnmpEngineID FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +notificationLogMIB MODULE-IDENTITY + LAST-UPDATED "200011270000Z" -- 27 November 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 527 2446 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for logging SNMP Notifications, that is, Traps + + + and Informs." +-- Revision History + + REVISION "200011270000Z" -- 27 November 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 3014" + ::= { mib-2 92 } + + +notificationLogMIBObjects OBJECT IDENTIFIER ::= { notificationLogMIB 1 } + +nlmConfig OBJECT IDENTIFIER ::= { notificationLogMIBObjects 1 } +nlmStats OBJECT IDENTIFIER ::= { notificationLogMIBObjects 2 } +nlmLog OBJECT IDENTIFIER ::= { notificationLogMIBObjects 3 } + +-- +-- Configuration Section +-- + +nlmConfigGlobalEntryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of notification entries that may be held + in nlmLogTable for all nlmLogNames added together. A particular + setting does not guarantee that much data can be held. + + If an application changes the limit while there are + Notifications in the log, the oldest Notifications MUST be + discarded to bring the log down to the new limit - thus the + value of nlmConfigGlobalEntryLimit MUST take precedence over + the values of nlmConfigGlobalAgeOut and nlmConfigLogEntryLimit, + even if the Notification being discarded has been present for + fewer minutes than the value of nlmConfigGlobalAgeOut, or if + the named log has fewer entries than that specified in + nlmConfigLogEntryLimit. + + A value of 0 means no limit. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 0 } + ::= { nlmConfig 1 } + +nlmConfigGlobalAgeOut OBJECT-TYPE + SYNTAX Unsigned32 + + + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of minutes a Notification SHOULD be kept in a log + before it is automatically removed. + + If an application changes the value of nlmConfigGlobalAgeOut, + Notifications older than the new time MAY be discarded to meet the + new time. + + A value of 0 means no age out. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 1440 } -- 24 hours + ::= { nlmConfig 2 } + + +-- +-- Basic Log Configuration Table +-- + +nlmConfigLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmConfigLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of logging control entries." + ::= { nlmConfig 3 } + +nlmConfigLogEntry OBJECT-TYPE + SYNTAX NlmConfigLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A logging control entry. Depending on the entry's storage type + entries may be supplied by the system or created and deleted by + applications using nlmConfigLogEntryStatus." + INDEX { nlmLogName } + ::= { nlmConfigLogTable 1 } + +NlmConfigLogEntry ::= SEQUENCE { + nlmLogName SnmpAdminString, + nlmConfigLogFilterName SnmpAdminString, + nlmConfigLogEntryLimit Unsigned32, + nlmConfigLogAdminStatus INTEGER, + + + nlmConfigLogOperStatus INTEGER, + nlmConfigLogStorageType StorageType, + nlmConfigLogEntryStatus RowStatus + } + +nlmLogName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the log. + + An implementation may allow multiple named logs, up to some + implementation-specific limit (which may be none). A + zero-length log name is reserved for creation and deletion by + the managed system, and MUST be used as the default log name by + systems that do not support named logs." + ::= { nlmConfigLogEntry 1 } + +nlmConfigLogFilterName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value of snmpNotifyFilterProfileName as used as an index + into the snmpNotifyFilterTable in the SNMP Notification MIB, + specifying the locally or remotely originated Notifications + to be filtered out and not logged in this log. + + A zero-length value or a name that does not identify an + existing entry in snmpNotifyFilterTable indicate no + Notifications are to be logged in this log." + DEFVAL { ''H } + ::= { nlmConfigLogEntry 2 } + +nlmConfigLogEntryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of notification entries that can be held in + nlmLogTable for this named log. A particular setting does not + guarantee that that much data can be held. + + If an application changes the limit while there are + Notifications in the log, the oldest Notifications are discarded + to bring the log down to the new limit. + + + + A value of 0 indicates no limit. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 0 } + ::= { nlmConfigLogEntry 3 } + +nlmConfigLogAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control to enable or disable the log without otherwise + disturbing the log's entry. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { enabled } + ::= { nlmConfigLogEntry 4 } + +nlmConfigLogOperStatus OBJECT-TYPE + SYNTAX INTEGER { disabled(1), operational(2), noFilter(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this log: + + disabled administratively disabled + + operational administratively enabled and working + + noFilter administratively enabled but either + nlmConfigLogFilterName is zero length + or does not name an existing entry in + snmpNotifyFilterTable" + ::= { nlmConfigLogEntry 5 } + +nlmConfigLogStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this conceptual row." + ::= { nlmConfigLogEntry 6 } + +nlmConfigLogEntryStatus OBJECT-TYPE + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for creating and deleting entries. Entries may be + modified while active. + + For non-null-named logs, the managed system records the security + credentials from the request that sets nlmConfigLogStatus + to 'active' and uses that identity to apply access control to + the objects in the Notification to decide if that Notification + may be logged." + ::= { nlmConfigLogEntry 7 } + +-- +-- Statistics Section +-- + +nlmStatsGlobalNotificationsLogged OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Notifications put into the nlmLogTable. This + counts a Notification once for each log entry, so a Notification + put into multiple logs is counted multiple times." + ::= { nlmStats 1 } + +nlmStatsGlobalNotificationsBumped OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of log entries discarded to make room for a new entry + due to lack of resources or the value of nlmConfigGlobalEntryLimit + or nlmConfigLogEntryLimit. This does not include entries discarded + due to the value of nlmConfigGlobalAgeOut." + ::= { nlmStats 2 } + +-- +-- Log Statistics Table +-- + +nlmStatsLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmStatsLogEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "A table of Notification log statistics entries." + ::= { nlmStats 3 } + +nlmStatsLogEntry OBJECT-TYPE + SYNTAX NlmStatsLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log statistics entry." + AUGMENTS { nlmConfigLogEntry } + ::= { nlmStatsLogTable 1 } + +NlmStatsLogEntry ::= SEQUENCE { + nlmStatsLogNotificationsLogged Counter32, + nlmStatsLogNotificationsBumped Counter32 +} + +nlmStatsLogNotificationsLogged OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Notifications put in this named log." + ::= { nlmStatsLogEntry 1 } + +nlmStatsLogNotificationsBumped OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of log entries discarded from this named log to make + room for a new entry due to lack of resources or the value of + nlmConfigGlobalEntryLimit or nlmConfigLogEntryLimit. This does not + include entries discarded due to the value of + nlmConfigGlobalAgeOut." + ::= { nlmStatsLogEntry 2 } + + +-- +-- Log Section +-- + +-- +-- Log Table + + +-- + +nlmLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Notification log entries. + + It is an implementation-specific matter whether entries in this + table are preserved across initializations of the management + system. In general one would expect that they are not. + + Note that keeping entries across initializations of the + management system leads to some confusion with counters and + TimeStamps, since both of those are based on sysUpTime, which + resets on management initialization. In this situation, + counters apply only after the reset and nlmLogTime for entries + made before the reset MUST be set to 0." + ::= { nlmLog 1 } + +nlmLogEntry OBJECT-TYPE + SYNTAX NlmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log entry. + + Entries appear in this table when Notifications occur and pass + filtering by nlmConfigLogFilterName and access control. They are + removed to make way for new entries due to lack of resources or + the values of nlmConfigGlobalEntryLimit, nlmConfigGlobalAgeOut, or + nlmConfigLogEntryLimit. + + If adding an entry would exceed nlmConfigGlobalEntryLimit or system + resources in general, the oldest entry in any log SHOULD be removed + to make room for the new one. + + If adding an entry would exceed nlmConfigLogEntryLimit the oldest + entry in that log SHOULD be removed to make room for the new one. + + Before the managed system puts a locally-generated Notification + into a non-null-named log it assures that the creator of the log + has access to the information in the Notification. If not it + does not log that Notification in that log." + INDEX { nlmLogName, nlmLogIndex } + ::= { nlmLogTable 1 } + + + +NlmLogEntry ::= SEQUENCE { + nlmLogIndex Unsigned32, + nlmLogTime TimeStamp, + nlmLogDateAndTime DateAndTime, + nlmLogEngineID SnmpEngineID, + nlmLogEngineTAddress TAddress, + nlmLogEngineTDomain TDomain, + nlmLogContextEngineID SnmpEngineID, + nlmLogContextName SnmpAdminString, + nlmLogNotificationID OBJECT IDENTIFIER +} + +nlmLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A monotonically increasing integer for the sole purpose of + indexing entries within the named log. When it reaches the + maximum value, an extremely unlikely event, the agent wraps the + value back to 1." + ::= { nlmLogEntry 1 } + +nlmLogTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the entry was placed in the log. If + the entry occurred before the most recent management system + initialization this object value MUST be set to zero." + ::= { nlmLogEntry 2 } + +nlmLogDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local date and time when the entry was logged, instantiated + only by systems that have date and time capability." + ::= { nlmLogEntry 3 } + +nlmLogEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the Notification + + + originated. + + If the log can contain Notifications from only one engine + or the Trap is in SNMPv1 format, this object is a zero-length + string." + ::= { nlmLogEntry 4 } + +nlmLogEngineTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport service address of the SNMP engine from which the + Notification was received, formatted according to the corresponding + value of nlmLogEngineTDomain. This is used to identify the source + of an SNMPv1 trap, since an nlmLogEngineId cannot be extracted + from the SNMPv1 trap pdu. + + This object MUST always be instantiated, even if the log + can contain Notifications from only one engine. + + Please be aware that the nlmLogEngineTAddress may not uniquely + identify the SNMP engine from which the Notification was received. + For example, if an SNMP engine uses DHCP or NAT to obtain + ip addresses, the address it uses may be shared with other + network devices, and hence will not uniquely identify the + SNMP engine." + ::= { nlmLogEntry 5 } + +nlmLogEngineTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the kind of transport service by which a Notification + was received from an SNMP engine. nlmLogEngineTAddress contains + the transport service address of the SNMP engine from which + this Notification was received. + + Possible values for this object are presently found in the + Transport Mappings for SNMPv2 document (RFC 1906 [8])." + ::= { nlmLogEntry 6 } + +nlmLogContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "If the Notification was received in a protocol which has a + contextEngineID element like SNMPv3, this object has that value. + Otherwise its value is a zero-length string." + ::= { nlmLogEntry 7 } + +nlmLogContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the Notification came. + For SNMPv1 Traps this is the community string from the Trap." + ::= { nlmLogEntry 8 } + +nlmLogNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the Notification that + occurred." + ::= { nlmLogEntry 9 } + +-- +-- Log Variable Table +-- + +nlmLogVariableTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmLogVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of variables to go with Notification log entries." + ::= { nlmLog 2 } + +nlmLogVariableEntry OBJECT-TYPE + SYNTAX NlmLogVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log entry variable. + + Entries appear in this table when there are variables in + the varbind list of a Notification in nlmLogTable." + INDEX { nlmLogName, nlmLogIndex, nlmLogVariableIndex } + ::= { nlmLogVariableTable 1 } + +NlmLogVariableEntry ::= SEQUENCE { + + + nlmLogVariableIndex Unsigned32, + nlmLogVariableID OBJECT IDENTIFIER, + nlmLogVariableValueType INTEGER, + nlmLogVariableCounter32Val Counter32, + nlmLogVariableUnsigned32Val Unsigned32, + nlmLogVariableTimeTicksVal TimeTicks, + nlmLogVariableInteger32Val Integer32, + nlmLogVariableOctetStringVal OCTET STRING, + nlmLogVariableIpAddressVal IpAddress, + nlmLogVariableOidVal OBJECT IDENTIFIER, + nlmLogVariableCounter64Val Counter64, + nlmLogVariableOpaqueVal Opaque +} + +nlmLogVariableIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A monotonically increasing integer, starting at 1 for a given + nlmLogIndex, for indexing variables within the logged + Notification." + ::= { nlmLogVariableEntry 1 } + +nlmLogVariableID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The variable's object identifier." + ::= { nlmLogVariableEntry 2 } + +nlmLogVariableValueType OBJECT-TYPE + SYNTAX INTEGER { counter32(1), unsigned32(2), timeTicks(3), + integer32(4), ipAddress(5), octetString(6), + objectId(7), counter64(8), opaque(9) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the value. One and only one of the value + objects that follow must be instantiated, based on this type." + ::= { nlmLogVariableEntry 3 } + +nlmLogVariableCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The value when nlmLogVariableType is 'counter32'." + ::= { nlmLogVariableEntry 4 } + +nlmLogVariableUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'unsigned32'." + ::= { nlmLogVariableEntry 5 } + +nlmLogVariableTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'timeTicks'." + ::= { nlmLogVariableEntry 6 } + +nlmLogVariableInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'integer32'." + ::= { nlmLogVariableEntry 7 } + +nlmLogVariableOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'octetString'." + ::= { nlmLogVariableEntry 8 } + +nlmLogVariableIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'ipAddress'. + Although this seems to be unfriendly for IPv6, we + have to recognize that there are a number of older + MIBs that do contain an IPv4 format address, known + as IpAddress. + + IPv6 addresses are represented using TAddress or + InetAddress, and so the underlying datatype is + + + OCTET STRING, and their value would be stored in + the nlmLogVariableOctetStringVal column." + ::= { nlmLogVariableEntry 9 } + +nlmLogVariableOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'objectId'." + ::= { nlmLogVariableEntry 10 } + +nlmLogVariableCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'counter64'." + ::= { nlmLogVariableEntry 11 } + +nlmLogVariableOpaqueVal OBJECT-TYPE + SYNTAX Opaque + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'opaque'." + ::= { nlmLogVariableEntry 12 } + + +-- +-- Conformance +-- + +notificationLogMIBConformance OBJECT IDENTIFIER ::= + { notificationLogMIB 3 } +notificationLogMIBCompliances OBJECT IDENTIFIER ::= + { notificationLogMIBConformance 1 } +notificationLogMIBGroups OBJECT IDENTIFIER ::= + { notificationLogMIBConformance 2 } + +-- Compliance + +notificationLogMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the Notification Log MIB." + MODULE -- this module + + + MANDATORY-GROUPS { + notificationLogConfigGroup, + notificationLogStatsGroup, + notificationLogLogGroup + } + + OBJECT nlmConfigGlobalEntryLimit + SYNTAX Unsigned32 (0..4294967295) + MIN-ACCESS read-only + DESCRIPTION + "Implementations may choose a limit and not allow it to be + changed or may enforce an upper or lower bound on the + limit." + + OBJECT nlmConfigLogEntryLimit + SYNTAX Unsigned32 (0..4294967295) + MIN-ACCESS read-only + DESCRIPTION + "Implementations may choose a limit and not allow it to be + changed or may enforce an upper or lower bound on the + limit." + + OBJECT nlmConfigLogEntryStatus + MIN-ACCESS read-only + DESCRIPTION + "Implementations may disallow the creation of named logs." + + GROUP notificationLogDateGroup + DESCRIPTION + "This group is mandatory on systems that keep wall clock + date and time and should not be implemented on systems that + do not have a wall clock date." + + ::= { notificationLogMIBCompliances 1 } + +-- Units of Conformance + +notificationLogConfigGroup OBJECT-GROUP + OBJECTS { + nlmConfigGlobalEntryLimit, + nlmConfigGlobalAgeOut, + nlmConfigLogFilterName, + nlmConfigLogEntryLimit, + nlmConfigLogAdminStatus, + nlmConfigLogOperStatus, + nlmConfigLogStorageType, + nlmConfigLogEntryStatus + } + + + STATUS current + DESCRIPTION + "Notification log configuration management." + ::= { notificationLogMIBGroups 1 } + +notificationLogStatsGroup OBJECT-GROUP + OBJECTS { + nlmStatsGlobalNotificationsLogged, + nlmStatsGlobalNotificationsBumped, + nlmStatsLogNotificationsLogged, + nlmStatsLogNotificationsBumped + } + STATUS current + DESCRIPTION + "Notification log statistics." + ::= { notificationLogMIBGroups 2 } + +notificationLogLogGroup OBJECT-GROUP + OBJECTS { + nlmLogTime, + nlmLogEngineID, + nlmLogEngineTAddress, + nlmLogEngineTDomain, + nlmLogContextEngineID, + nlmLogContextName, + nlmLogNotificationID, + nlmLogVariableID, + nlmLogVariableValueType, + nlmLogVariableCounter32Val, + nlmLogVariableUnsigned32Val, + nlmLogVariableTimeTicksVal, + nlmLogVariableInteger32Val, + nlmLogVariableOctetStringVal, + nlmLogVariableIpAddressVal, + nlmLogVariableOidVal, + nlmLogVariableCounter64Val, + nlmLogVariableOpaqueVal + } + STATUS current + DESCRIPTION + "Notification log data." + ::= { notificationLogMIBGroups 3 } + +notificationLogDateGroup OBJECT-GROUP + OBJECTS { + nlmLogDateAndTime + } + STATUS current + + + DESCRIPTION + "Conditionally mandatory notification log data. + This group is mandatory on systems that keep wall + clock date and time and should not be implemented + on systems that do not have a wall clock date." + ::= { notificationLogMIBGroups 4 } + +END diff --git a/mibs/ietf/OPT-IF-MIB b/mibs/ietf/OPT-IF-MIB new file mode 100644 index 0000000..ac58cc5 --- /dev/null +++ b/mibs/ietf/OPT-IF-MIB @@ -0,0 +1,6996 @@ +OPT-IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Gauge32, Integer32, + Unsigned32, transmission + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowPointer, RowStatus, TruthValue + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB; + +-- This is the MIB module for the OTN Interface objects. + +optIfMibModule MODULE-IDENTITY + LAST-UPDATED "200308130000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + + + + + Editor: Hing-Kam Lam + Postal: Lucent Technologies, Room 4C-616 + 101 Crawfords Corner Road + Holmdel, NJ 07733 + Tel: +1 732 949 8338 + Email: hklam@lucent.com" + DESCRIPTION + "The MIB module to describe pre-OTN and OTN interfaces. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3591; see the RFC + itself for full legal notices." + REVISION "200308130000Z" + DESCRIPTION + "Initial version, published as RFC 3591." + ::={ transmission 133 } + +-- textual conventions + +OptIfAcTI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The trace identifier (TI) accepted at the receiver." + SYNTAX OCTET STRING (SIZE(64)) + +OptIfBitRateK ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the index 'k' that is used to + represent a supported bit rate and the different + versions of OPUk, ODUk and OTUk. + Allowed values of k are defined in ITU-T G.709. + Currently allowed values in G.709 are: + k=1 represents an approximate bit rate of 2.5 Gbit/s, + k=2 represents an approximate bit rate of 10 Gbit/s, + k=3 represents an approximate bit rate of 40 Gbit/s." + SYNTAX Integer32 + +OptIfDEGM ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if OptIfDEGM + consecutive bad PM Seconds are detected." + SYNTAX Unsigned32 (2..10) + + + + + + +OptIfDEGThr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to OptIfDEGThr." + SYNTAX Unsigned32 (1..100) + +OptIfDirectionality ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the directionality of an entity." + SYNTAX INTEGER { + sink(1), + source(2), + bidirectional(3) + } + +OptIfSinkOrSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the directionality of an entity + that is allowed only to be a source or sink." + SYNTAX INTEGER { + sink(1), + source(2) + } + +OptIfExDAPI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Destination Access Point Identifier (DAPI) + expected by the receiver." + SYNTAX OCTET STRING (SIZE(16)) + +OptIfExSAPI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Source Access Point Identifier (SAPI) + expected by the receiver." + SYNTAX OCTET STRING (SIZE(16)) + +OptIfIntervalNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies a 15-minute interval. The interval + identified by 1 is the most recently completed interval, and + + + + the interval identified by n is the interval immediately + preceding the one identified by n-1." + SYNTAX Unsigned32 (1..96) + +OptIfTIMDetMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + SYNTAX INTEGER { + off(1), + dapi(2), + sapi(3), + both(4) + } + +OptIfTxTI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The trace identifier (TI) transmitted." + SYNTAX OCTET STRING (SIZE(64)) + +-- object groups + +optIfObjects OBJECT IDENTIFIER ::= { optIfMibModule 1 } +optIfConfs OBJECT IDENTIFIER ::= { optIfMibModule 2 } + +optIfOTMn OBJECT IDENTIFIER ::= { optIfObjects 1 } +optIfPerfMon OBJECT IDENTIFIER ::= { optIfObjects 2 } +optIfOTSn OBJECT IDENTIFIER ::= { optIfObjects 3 } +optIfOMSn OBJECT IDENTIFIER ::= { optIfObjects 4 } +optIfOChGroup OBJECT IDENTIFIER ::= { optIfObjects 5 } +optIfOCh OBJECT IDENTIFIER ::= { optIfObjects 6 } + +optIfOTUk OBJECT IDENTIFIER ::= { optIfObjects 7 } +optIfODUk OBJECT IDENTIFIER ::= { optIfObjects 8 } +optIfODUkT OBJECT IDENTIFIER ::= { optIfObjects 9 } + +optIfGroups OBJECT IDENTIFIER ::= { optIfConfs 1 } +optIfCompl OBJECT IDENTIFIER ::= { optIfConfs 2 } + +-- the optIfOTMn group +-- This group defines the OTM structure information of an +-- optical interface. + +-- OTMn Table + +optIfOTMnTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF OptIfOTMnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTMn structure information." + ::= { optIfOTMn 1 } + +optIfOTMnEntry OBJECT-TYPE + SYNTAX OptIfOTMnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains the OTMn structure + information of an optical interface." + INDEX { ifIndex } + ::= { optIfOTMnTable 1 } + +OptIfOTMnEntry ::= + SEQUENCE { + optIfOTMnOrder Unsigned32, + optIfOTMnReduced TruthValue, + optIfOTMnBitRates BITS, + optIfOTMnInterfaceType SnmpAdminString, + optIfOTMnTcmMax Unsigned32, + optIfOTMnOpticalReach INTEGER + } + +optIfOTMnOrder OBJECT-TYPE + SYNTAX Unsigned32 (1..900) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the order of the OTM, which + represents the maximum number of wavelengths that can be + supported at the bit rate(s) supported on the interface." + ::= { optIfOTMnEntry 1 } + +optIfOTMnReduced OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether a reduced or full + functionality is supported at the interface. A value of + true means reduced. A value of false means full." + ::= { optIfOTMnEntry 2 } + +optIfOTMnBitRates OBJECT-TYPE + + + + SYNTAX BITS { bitRateK1(0), bitRateK2(1), bitRateK3(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute is a bit map representing the bit + rate or set of bit rates supported on the interface. + The meaning of each bit position is as follows: + bitRateK1(0) is set if the 2.5 Gbit/s rate is supported + bitRateK2(1) is set if the 10 Gbit/s rate is supported + bitRateK3(2) is set if the 40 Gbit/s rate is supported + Note that each bit position corresponds to one possible + value of the type OptIfBitRateK. + The default value of this attribute is system specific." + ::= { optIfOTMnEntry 3 } + +optIfOTMnInterfaceType OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the type of interface. The value of + this attribute will affect the behavior of the OTM with + respect to presence/absence of OTM Overhead Signal (OOS) + processing and TCM activation. For an IrDI interface, + there is no OOS processing and TCM activation is limited + to n levels as specified by a TCM level threshold. + + This object contains two fields that are separated by + whitespace. The possible values are: + field 1: one of the 4-character ASCII strings + 'IrDI' or 'IaDI' + field 2: free-form text consisting of printable + UTF-8 encoded characters + + Note that field 2 is optional. If it is not present then there + is no requirement for trailing whitespace after field 1. + + The default values are as follows: + field 1: 'IaDI' + field 2: an empty string." + + ::= { optIfOTMnEntry 4 } + +optIfOTMnTcmMax OBJECT-TYPE + SYNTAX Unsigned32 (0..6) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object identifies the maximum number of TCM + levels allowed for any Optical Channel contained + in this OTM. A new TCM activation will be rejected + if the requested level is greater than the threshold. + If InterfaceType object specifies a type of 'IaDI' + for this OTM, then this attribute is irrelevant. + + Possible values: unsigned integers in the range + from 0 to 6 inclusive. + Default value: 3." + + ::= { optIfOTMnEntry 5 } + +optIfOTMnOpticalReach OBJECT-TYPE + SYNTAX INTEGER { intraOffice(1), shortHaul(2), longHaul(3), + veryLongHaul(4), ultraLongHaul(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the length the optical signal + may travel before requiring termination or regeneration. + The meaning of the enumeration are: + intraOffice(1) - intra-office (as defined in ITU-T G.957) + shortHaul(2) - short haul (as defined in ITU-T G.957) + longHaul(3) - long haul (as defined in ITU-T G.957) + veryLongHaul(4) - very long haul (as defined in ITU-T G.691) + ultraLongHaul(5)- ultra long haul (as defined in ITU-T G.691)" + ::= { optIfOTMnEntry 6 } + +-- the optIfPerfMon group +-- This group defines performance monitoring objects for all +-- layers. + +-- PM interval table + +optIfPerfMonIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfPerfMonIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of 15-minute performance monitoring interval + information." + ::= { optIfPerfMon 1 } + +optIfPerfMonIntervalEntry OBJECT-TYPE + SYNTAX OptIfPerfMonIntervalEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A conceptual row that contains 15-minute performance + monitoring interval information of an interface." + INDEX { ifIndex } + ::= { optIfPerfMonIntervalTable 1 } + +OptIfPerfMonIntervalEntry ::= + SEQUENCE { + optIfPerfMonCurrentTimeElapsed Gauge32, + optIfPerfMonCurDayTimeElapsed Gauge32, + optIfPerfMonIntervalNumIntervals Unsigned32, + optIfPerfMonIntervalNumInvalidIntervals Unsigned32 + } + +optIfPerfMonCurrentTimeElapsed OBJECT-TYPE + SYNTAX Gauge32 (0..900) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds elapsed in the current 15-minute + performance monitoring interval. + If, for some reason, such as an adjustment in the NE's + time-of-day clock, the number of seconds elapsed exceeds + the maximum value, then the maximum value will be returned." + ::= { optIfPerfMonIntervalEntry 1 } + +optIfPerfMonCurDayTimeElapsed OBJECT-TYPE + SYNTAX Gauge32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds elapsed in the current 24-hour interval + performance monitoring period. + If, for some reason, such as an adjustment in the NE's + time-of-day clock, the number of seconds elapsed exceeds + the maximum value, then the maximum value will be returned." + ::= { optIfPerfMonIntervalEntry 2 } + +optIfPerfMonIntervalNumIntervals OBJECT-TYPE + SYNTAX Unsigned32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 15-minute intervals for which performance + monitoring data is available. The number is the same for all + the associated sub layers of the interface. + + + + An optical interface must be capable of supporting at least + n intervals, where n is defined as follows: + The minimum value of n is 4. + The default of n is 32. + The maximum value of n is 96. + + The value of this object will be n unless performance + monitoring was (re-)started for the interface within the last + (n*15) minutes, in which case the value will be the number of + complete 15-minute intervals since measurement was + (re-)started." + ::= { optIfPerfMonIntervalEntry 3 } + +optIfPerfMonIntervalNumInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + optIfPerfMonIntervalNumIntervals for which no performance + monitoring data is available and/or the data is invalid." + ::= { optIfPerfMonIntervalEntry 4 } + +-- the optIfOTSn group +-- This group handles the configuration and performance +-- monitoring objects for OTS layers. + +-- OTSn config table + +optIfOTSnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn configuration information." + ::= { optIfOTSn 1 } + +optIfOTSnConfigEntry OBJECT-TYPE + SYNTAX OptIfOTSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOTSnConfigTable 1 } + +OptIfOTSnConfigEntry ::= + + + + SEQUENCE { + optIfOTSnDirectionality OptIfDirectionality, + optIfOTSnAprStatus SnmpAdminString, + optIfOTSnAprControl SnmpAdminString, + optIfOTSnTraceIdentifierTransmitted OptIfTxTI, + optIfOTSnDAPIExpected OptIfExDAPI, + optIfOTSnSAPIExpected OptIfExSAPI, + optIfOTSnTraceIdentifierAccepted OptIfAcTI, + optIfOTSnTIMDetMode OptIfTIMDetMode, + optIfOTSnTIMActEnabled TruthValue, + optIfOTSnCurrentStatus BITS + } + +optIfOTSnDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOTSnConfigEntry 1 } + +optIfOTSnAprStatus OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute indicates the status of the Automatic + Power Reduction (APR) function of the entity. Valid + values are 'on' and 'off'." + ::= { optIfOTSnConfigEntry 2 } + +optIfOTSnAprControl OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a UTF-8 encoded string that specifies Automatic + Power Reduction (APR) control actions requested of this entity + (when written) and that returns the current APR control state + of this entity (when read). The values are implementation-defined. + Any implementation that instantiates this object must document the + set of values that it allows to be written, the set of values + that it will return, and what each of those values means." + ::= { optIfOTSnConfigEntry 3 } + +optIfOTSnTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfOTSnDirectionality has the + value source(2) or bidirectional(3). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + If no value is ever set by a management entity for the object + optIfOTSnTraceIdentifierTransmitted, system-specific default + value will be used. Any implementation that instantiates this + object must document the system-specific default value or how it + is derived." + ::= { optIfOTSnConfigEntry 4 } + +optIfOTSnDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect if + optIfOTSnTIMDetMode has the value off(1) or sapi(3). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 5 } + +optIfOTSnSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect if + optIfOTSnTIMDetMode has the value off(1) or dapi(2). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 6 } + +optIfOTSnTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier received. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). Its value is unspecified + if optIfOTSnCurrentStatus has either or both of the + losO(5) and los(6) bits set. + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 7 } + +optIfOTSnTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. This object is applicable + when optIfOTSnDirectionality has the value sink(1) + or bidirectional(3). The default value is off(1). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + The default value of this object is off(1)." + ::= { optIfOTSnConfigEntry 8 } + +optIfOTSnTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. This object + is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect + when the value of optIfOTSnTIMDetMode is off(1). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + The default value of this object is false(2)." + ::= { optIfOTSnConfigEntry 9 } + +optIfOTSnCurrentStatus OBJECT-TYPE + + + + SYNTAX BITS { + bdiP(0), + bdiO(1), + bdi(2), + tim(3), + losP(4), + losO(5), + los(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable when optIfOTSnDirectionality + has the value sink(1) or bidirectional(3). In + reduced-capability systems or at IrDI interfaces + the only bit position that may be set is los(6)." + ::= { optIfOTSnConfigEntry 10 } + +-- OTSn sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOTSnSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOTSn 2 } + +optIfOTSnSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkCurrentTable 1 } + +OptIfOTSnSinkCurrentEntry ::= + SEQUENCE { + optIfOTSnSinkCurrentSuspectedFlag TruthValue, + optIfOTSnSinkCurrentInputPower Integer32, + optIfOTSnSinkCurrentLowInputPower Integer32, + + + + optIfOTSnSinkCurrentHighInputPower Integer32, + optIfOTSnSinkCurrentLowerInputPowerThreshold Integer32, + optIfOTSnSinkCurrentUpperInputPowerThreshold Integer32, + optIfOTSnSinkCurrentOutputPower Integer32, + optIfOTSnSinkCurrentLowOutputPower Integer32, + optIfOTSnSinkCurrentHighOutputPower Integer32, + optIfOTSnSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOTSnSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOTSnSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkCurrentEntry 1 } + +optIfOTSnSinkCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOTSnSinkCurrentEntry 2 } + +optIfOTSnSinkCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 3 } + +optIfOTSnSinkCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 4 } + +optIfOTSnSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOTSnSinkCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 5 } + +optIfOTSnSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOTSnSinkCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 6 } + +optIfOTSnSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOTSnSinkCurrentEntry 7 } + +optIfOTSnSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 8 } + +optIfOTSnSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + + + + ::= { optIfOTSnSinkCurrentEntry 9 } + +optIfOTSnSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOTSnSinkCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 10 } + +optIfOTSnSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOTSnSinkCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 11 } + +-- OTSn sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOTSnSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OTSn sink performance monitoring + information." + ::= { optIfOTSn 3 } + +optIfOTSnSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOTSnSinkIntervalNumber } + ::= { optIfOTSnSinkIntervalTable 1 } + + + + +OptIfOTSnSinkIntervalEntry ::= + SEQUENCE { + optIfOTSnSinkIntervalNumber OptIfIntervalNumber, + optIfOTSnSinkIntervalSuspectedFlag TruthValue, + optIfOTSnSinkIntervalLastInputPower Integer32, + optIfOTSnSinkIntervalLowInputPower Integer32, + optIfOTSnSinkIntervalHighInputPower Integer32, + optIfOTSnSinkIntervalLastOutputPower Integer32, + optIfOTSnSinkIntervalLowOutputPower Integer32, + optIfOTSnSinkIntervalHighOutputPower Integer32 + + } + +optIfOTSnSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOTSnSinkIntervalEntry 1 } + +optIfOTSnSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkIntervalEntry 2 } + +optIfOTSnSinkIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 3 } + +optIfOTSnSinkIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 4 } + + + +optIfOTSnSinkIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 5 } + +optIfOTSnSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 6 } + +optIfOTSnSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 7 } + +optIfOTSnSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 8 } + +-- OTSn sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOTSnSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOTSn 4 } + +optIfOTSnSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkCurDayTable 1 } + +OptIfOTSnSinkCurDayEntry ::= + SEQUENCE { + optIfOTSnSinkCurDaySuspectedFlag TruthValue, + optIfOTSnSinkCurDayLowInputPower Integer32, + optIfOTSnSinkCurDayHighInputPower Integer32, + optIfOTSnSinkCurDayLowOutputPower Integer32, + optIfOTSnSinkCurDayHighOutputPower Integer32 + } + +optIfOTSnSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkCurDayEntry 1 } + +optIfOTSnSinkCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 2 } + +optIfOTSnSinkCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 3 } + +optIfOTSnSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 4 } + +optIfOTSnSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 5 } + +-- OTSn sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOTSnSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOTSn 5 } + +optIfOTSnSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkPrevDayTable 1 } + + + +OptIfOTSnSinkPrevDayEntry ::= + SEQUENCE { + optIfOTSnSinkPrevDaySuspectedFlag TruthValue, + optIfOTSnSinkPrevDayLastInputPower Integer32, + optIfOTSnSinkPrevDayLowInputPower Integer32, + optIfOTSnSinkPrevDayHighInputPower Integer32, + optIfOTSnSinkPrevDayLastOutputPower Integer32, + optIfOTSnSinkPrevDayLowOutputPower Integer32, + optIfOTSnSinkPrevDayHighOutputPower Integer32 + } + +optIfOTSnSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkPrevDayEntry 1 } + +optIfOTSnSinkPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 2 } + +optIfOTSnSinkPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 3 } + +optIfOTSnSinkPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 4 } + + + +optIfOTSnSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 5 } + +optIfOTSnSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 6 } + +optIfOTSnSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 7 } + +-- OTSn source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOTSnSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the current 15-minute interval." + ::= { optIfOTSn 6 } + +optIfOTSnSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcCurrentTable 1 } + +OptIfOTSnSrcCurrentEntry ::= + SEQUENCE { + optIfOTSnSrcCurrentSuspectedFlag TruthValue, + optIfOTSnSrcCurrentOutputPower Integer32, + optIfOTSnSrcCurrentLowOutputPower Integer32, + optIfOTSnSrcCurrentHighOutputPower Integer32, + optIfOTSnSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOTSnSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOTSnSrcCurrentInputPower Integer32, + optIfOTSnSrcCurrentLowInputPower Integer32, + optIfOTSnSrcCurrentHighInputPower Integer32, + optIfOTSnSrcCurrentLowerInputPowerThreshold Integer32, + optIfOTSnSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOTSnSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcCurrentEntry 1 } + +optIfOTSnSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOTSnSrcCurrentEntry 2 } + +optIfOTSnSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 3 } + + + +optIfOTSnSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 4 } + +optIfOTSnSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOTSnSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 5 } + +optIfOTSnSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOTSnSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 6 } + +optIfOTSnSrcCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOTSnSrcCurrentEntry 7 } + +optIfOTSnSrcCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + + + + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 8 } + +optIfOTSnSrcCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 9 } + +optIfOTSnSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOTSnSrcCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 10 } + +optIfOTSnSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOTSnSrcCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 11 } + +-- OTSn source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOTSnSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OTSn source performance monitoring + information." + ::= { optIfOTSn 7 } + + + +optIfOTSnSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOTSnSrcIntervalNumber } + ::= { optIfOTSnSrcIntervalTable 1 } + +OptIfOTSnSrcIntervalEntry ::= + SEQUENCE { + optIfOTSnSrcIntervalNumber OptIfIntervalNumber, + optIfOTSnSrcIntervalSuspectedFlag TruthValue, + optIfOTSnSrcIntervalLastOutputPower Integer32, + optIfOTSnSrcIntervalLowOutputPower Integer32, + optIfOTSnSrcIntervalHighOutputPower Integer32, + optIfOTSnSrcIntervalLastInputPower Integer32, + optIfOTSnSrcIntervalLowInputPower Integer32, + optIfOTSnSrcIntervalHighInputPower Integer32 + } + +optIfOTSnSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOTSnSrcIntervalEntry 1 } + +optIfOTSnSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcIntervalEntry 2 } + +optIfOTSnSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 3 } + + + +optIfOTSnSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 4 } + +optIfOTSnSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 5 } + +optIfOTSnSrcIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOTSnSrcIntervalEntry 6 } + +optIfOTSnSrcIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOTSnSrcIntervalEntry 7 } + +optIfOTSnSrcIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + + + + ::= { optIfOTSnSrcIntervalEntry 8 } + + +-- OTSn source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOTSnSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the current 24-hour interval." + ::= { optIfOTSn 8 } + +optIfOTSnSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcCurDayTable 1 } + +OptIfOTSnSrcCurDayEntry ::= + SEQUENCE { + optIfOTSnSrcCurDaySuspectedFlag TruthValue, + optIfOTSnSrcCurDayLowOutputPower Integer32, + optIfOTSnSrcCurDayHighOutputPower Integer32, + optIfOTSnSrcCurDayLowInputPower Integer32, + optIfOTSnSrcCurDayHighInputPower Integer32 + } + +optIfOTSnSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcCurDayEntry 1 } + +optIfOTSnSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 2 } + +optIfOTSnSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 3 } + +optIfOTSnSrcCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 4 } + +optIfOTSnSrcCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 5 } + +-- OTSn source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOTSnSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOTSn 9 } + + + +optIfOTSnSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcPrevDayTable 1 } + +OptIfOTSnSrcPrevDayEntry ::= + SEQUENCE { + optIfOTSnSrcPrevDaySuspectedFlag TruthValue, + optIfOTSnSrcPrevDayLastOutputPower Integer32, + optIfOTSnSrcPrevDayLowOutputPower Integer32, + optIfOTSnSrcPrevDayHighOutputPower Integer32, + optIfOTSnSrcPrevDayLastInputPower Integer32, + optIfOTSnSrcPrevDayLowInputPower Integer32, + optIfOTSnSrcPrevDayHighInputPower Integer32 + } + +optIfOTSnSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcPrevDayEntry 1 } + +optIfOTSnSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 2 } + +optIfOTSnSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + + + + ::= { optIfOTSnSrcPrevDayEntry 3 } + +optIfOTSnSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 4 } + +optIfOTSnSrcPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 5 } + +optIfOTSnSrcPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 6 } + +optIfOTSnSrcPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 7 } + + +-- the optIfOMSn group +-- This group handles the configuration and performance monitoring +-- information for OMS layers. + +-- OMSn config table + + + +optIfOMSnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn configuration information." + ::= { optIfOMSn 1 } + +optIfOMSnConfigEntry OBJECT-TYPE + SYNTAX OptIfOMSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOMSnConfigTable 1 } + +OptIfOMSnConfigEntry ::= + SEQUENCE { + optIfOMSnDirectionality OptIfDirectionality, + optIfOMSnCurrentStatus BITS + } + +optIfOMSnDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOMSnConfigEntry 1 } + +optIfOMSnCurrentStatus OBJECT-TYPE + SYNTAX BITS { + ssfP(0), + ssfO(1), + ssf(2), + bdiP(3), + bdiO(4), + bdi(5), + losP(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable only to full capability + systems whose interface type is IaDI and for which + + + + optIfOMSnDirectionality has the value sink(1) or + bidirectional(3)." + ::= { optIfOMSnConfigEntry 2 } + +-- OMSn sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOMSnSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOMSn 2 } + +optIfOMSnSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOMSnSinkCurrentTable 1 } + +OptIfOMSnSinkCurrentEntry ::= + SEQUENCE { + optIfOMSnSinkCurrentSuspectedFlag TruthValue, + optIfOMSnSinkCurrentAggregatedInputPower Integer32, + optIfOMSnSinkCurrentLowAggregatedInputPower Integer32, + optIfOMSnSinkCurrentHighAggregatedInputPower Integer32, + optIfOMSnSinkCurrentLowerInputPowerThreshold Integer32, + optIfOMSnSinkCurrentUpperInputPowerThreshold Integer32, + optIfOMSnSinkCurrentOutputPower Integer32, + optIfOMSnSinkCurrentLowOutputPower Integer32, + optIfOMSnSinkCurrentHighOutputPower Integer32, + optIfOMSnSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOMSnSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOMSnSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkCurrentEntry 1 } + +optIfOMSnSinkCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power of all the DWDM input + channels." + ::= { optIfOMSnSinkCurrentEntry 2 } + +optIfOMSnSinkCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 3 } + +optIfOMSnSinkCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 4 } + +optIfOMSnSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOMSnSinkCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 5 } + +optIfOMSnSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOMSnSinkCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 6 } + +optIfOMSnSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOMSnSinkCurrentEntry 7 } + +optIfOMSnSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 8 } + +optIfOMSnSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 9 } + +optIfOMSnSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOMSnSinkCurrentOutputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 10 } + +optIfOMSnSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOMSnSinkCurrentOutputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 11 } + +-- OMSn sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOMSnSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OMSn sink performance monitoring + information." + ::= { optIfOMSn 3 } + +optIfOMSnSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOMSnSinkIntervalNumber } + ::= { optIfOMSnSinkIntervalTable 1 } + +OptIfOMSnSinkIntervalEntry ::= + SEQUENCE { + optIfOMSnSinkIntervalNumber OptIfIntervalNumber, + optIfOMSnSinkIntervalSuspectedFlag TruthValue, + optIfOMSnSinkIntervalLastAggregatedInputPower Integer32, + optIfOMSnSinkIntervalLowAggregatedInputPower Integer32, + optIfOMSnSinkIntervalHighAggregatedInputPower Integer32, + optIfOMSnSinkIntervalLastOutputPower Integer32, + optIfOMSnSinkIntervalLowOutputPower Integer32, + optIfOMSnSinkIntervalHighOutputPower Integer32 + } + +optIfOMSnSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOMSnSinkIntervalEntry 1 } + +optIfOMSnSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkIntervalEntry 2 } + +optIfOMSnSinkIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 3 } + +optIfOMSnSinkIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 4 } + +optIfOMSnSinkIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 5 } + +optIfOMSnSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The last optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 6 } + +optIfOMSnSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 7 } + +optIfOMSnSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 8 } + +-- OMSn sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOMSnSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOMSn 4 } + +optIfOMSnSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + + + + ::= { optIfOMSnSinkCurDayTable 1 } + +OptIfOMSnSinkCurDayEntry ::= + SEQUENCE { + optIfOMSnSinkCurDaySuspectedFlag TruthValue, + optIfOMSnSinkCurDayLowAggregatedInputPower Integer32, + optIfOMSnSinkCurDayHighAggregatedInputPower Integer32, + optIfOMSnSinkCurDayLowOutputPower Integer32, + optIfOMSnSinkCurDayHighOutputPower Integer32 + } + +optIfOMSnSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkCurDayEntry 1 } + +optIfOMSnSinkCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 2 } + +optIfOMSnSinkCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 3 } + +optIfOMSnSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 4 } + + + +optIfOMSnSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 5 } + +-- OMSn sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOMSnSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOMSn 5 } + +optIfOMSnSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSinkPrevDayTable 1 } + +OptIfOMSnSinkPrevDayEntry ::= + SEQUENCE { + optIfOMSnSinkPrevDaySuspectedFlag TruthValue, + optIfOMSnSinkPrevDayLastAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayLowAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayHighAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayLastOutputPower Integer32, + optIfOMSnSinkPrevDayLowOutputPower Integer32, + optIfOMSnSinkPrevDayHighOutputPower Integer32 + } + +optIfOMSnSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkPrevDayEntry 1 } + +optIfOMSnSinkPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 2 } + +optIfOMSnSinkPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 3 } + +optIfOMSnSinkPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 4 } + +optIfOMSnSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 5 } + +optIfOMSnSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 6 } + +optIfOMSnSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 7 } + +-- OMSn source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOMSnSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn source performance monitoring information for + the current 15-minute interval." + ::= { optIfOMSn 6 } + +optIfOMSnSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcCurrentTable 1 } + +OptIfOMSnSrcCurrentEntry ::= + SEQUENCE { + optIfOMSnSrcCurrentSuspectedFlag TruthValue, + optIfOMSnSrcCurrentOutputPower Integer32, + optIfOMSnSrcCurrentLowOutputPower Integer32, + optIfOMSnSrcCurrentHighOutputPower Integer32, + optIfOMSnSrcCurrentLowerOutputPowerThreshold Integer32, + + + + optIfOMSnSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOMSnSrcCurrentAggregatedInputPower Integer32, + optIfOMSnSrcCurrentLowAggregatedInputPower Integer32, + optIfOMSnSrcCurrentHighAggregatedInputPower Integer32, + optIfOMSnSrcCurrentLowerInputPowerThreshold Integer32, + optIfOMSnSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOMSnSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcCurrentEntry 1 } + +optIfOMSnSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOMSnSrcCurrentEntry 2 } + +optIfOMSnSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 3 } + +optIfOMSnSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 4 } + +optIfOMSnSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOMSnSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 5 } + +optIfOMSnSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOMSnSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 6 } + +optIfOMSnSrcCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power at the input." + ::= { optIfOMSnSrcCurrentEntry 7 } + +optIfOMSnSrcCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 8 } + +optIfOMSnSrcCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 9 } + + + + +optIfOMSnSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOMSnSrcCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 10 } + +optIfOMSnSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOMSnSrcCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 11 } + + +-- OMSn source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOMSnSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OMSn source performance monitoring + information." + ::= { optIfOMSn 7 } + +optIfOMSnSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOMSnSrcIntervalNumber } + ::= { optIfOMSnSrcIntervalTable 1 } + +OptIfOMSnSrcIntervalEntry ::= + + + + SEQUENCE { + optIfOMSnSrcIntervalNumber OptIfIntervalNumber, + optIfOMSnSrcIntervalSuspectedFlag TruthValue, + optIfOMSnSrcIntervalLastOutputPower Integer32, + optIfOMSnSrcIntervalLowOutputPower Integer32, + optIfOMSnSrcIntervalHighOutputPower Integer32, + optIfOMSnSrcIntervalLastAggregatedInputPower Integer32, + optIfOMSnSrcIntervalLowAggregatedInputPower Integer32, + optIfOMSnSrcIntervalHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOMSnSrcIntervalEntry 1 } + +optIfOMSnSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcIntervalEntry 2 } + +optIfOMSnSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 3 } + +optIfOMSnSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 4 } + +optIfOMSnSrcIntervalHighOutputPower OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 5 } + +optIfOMSnSrcIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 6 } + +optIfOMSnSrcIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 7 } + +optIfOMSnSrcIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 8 } + +-- OMSn source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOMSnSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A table of OMSn source performance monitoring information for + the current 24-hour interval." + ::= { optIfOMSn 8 } + +optIfOMSnSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcCurDayTable 1 } + +OptIfOMSnSrcCurDayEntry ::= + SEQUENCE { + optIfOMSnSrcCurDaySuspectedFlag TruthValue, + optIfOMSnSrcCurDayLowOutputPower Integer32, + optIfOMSnSrcCurDayHighOutputPower Integer32, + optIfOMSnSrcCurDayLowAggregatedInputPower Integer32, + optIfOMSnSrcCurDayHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcCurDayEntry 1 } + +optIfOMSnSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 2 } + +optIfOMSnSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 3 } + +optIfOMSnSrcCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 4 } + +optIfOMSnSrcCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 5 } + +-- OMSn source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOMSnSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOMSn 9 } + +optIfOMSnSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcPrevDayTable 1 } + + + + +OptIfOMSnSrcPrevDayEntry ::= + SEQUENCE { + optIfOMSnSrcPrevDaySuspectedFlag TruthValue, + optIfOMSnSrcPrevDayLastOutputPower Integer32, + optIfOMSnSrcPrevDayLowOutputPower Integer32, + optIfOMSnSrcPrevDayHighOutputPower Integer32, + optIfOMSnSrcPrevDayLastAggregatedInputPower Integer32, + optIfOMSnSrcPrevDayLowAggregatedInputPower Integer32, + optIfOMSnSrcPrevDayHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcPrevDayEntry 1 } + +optIfOMSnSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 2 } + +optIfOMSnSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 3 } + +optIfOMSnSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 4 } + + + +optIfOMSnSrcPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 5 } + +optIfOMSnSrcPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 6 } + +optIfOMSnSrcPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 7 } + +-- the optIfOChGroup group +-- This group handles the configuration and performance monitoring +-- information for OChGroup layers. + +-- OChGroup config table + +optIfOChGroupConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup configuration information." + ::= { optIfOChGroup 1 } + +optIfOChGroupConfigEntry OBJECT-TYPE + SYNTAX OptIfOChGroupConfigEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A conceptual row that contains OChGroup configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOChGroupConfigTable 1 } + +OptIfOChGroupConfigEntry ::= + SEQUENCE { + optIfOChGroupDirectionality OptIfDirectionality + } + +optIfOChGroupDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOChGroupConfigEntry 1 } + +-- OChGroup sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChGroupSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOChGroup 2 } + +optIfOChGroupSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChGroupSinkCurrentTable 1 } + +OptIfOChGroupSinkCurrentEntry ::= + SEQUENCE { + optIfOChGroupSinkCurrentSuspectedFlag TruthValue, + optIfOChGroupSinkCurrentAggregatedInputPower Integer32, + optIfOChGroupSinkCurrentLowAggregatedInputPower Integer32, + + + + optIfOChGroupSinkCurrentHighAggregatedInputPower Integer32, + optIfOChGroupSinkCurrentLowerInputPowerThreshold Integer32, + optIfOChGroupSinkCurrentUpperInputPowerThreshold Integer32, + optIfOChGroupSinkCurrentOutputPower Integer32, + optIfOChGroupSinkCurrentLowOutputPower Integer32, + optIfOChGroupSinkCurrentHighOutputPower Integer32, + optIfOChGroupSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOChGroupSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOChGroupSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkCurrentEntry 1 } + +optIfOChGroupSinkCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power of all the DWDM input + channels in the OChGroup." + ::= { optIfOChGroupSinkCurrentEntry 2 } + +optIfOChGroupSinkCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 3 } + +optIfOChGroupSinkCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 4 } + + + + +optIfOChGroupSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOChGroupSinkCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 5 } + +optIfOChGroupSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOChGroupSinkCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 6 } + +optIfOChGroupSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output + in the OChGroup." + ::= { optIfOChGroupSinkCurrentEntry 7 } + +optIfOChGroupSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 8 } + +optIfOChGroupSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest optical power monitored at the output + in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 9 } + +optIfOChGroupSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on the output power. If + optIfOChGroupSinkCurrentOutputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 10 } + +optIfOChGroupSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on the output power. If + optIfOChGroupSinkCurrentOutputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 11 } + +-- OChGroup sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChGroupSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OChGroup sink performance monitoring + information." + ::= { optIfOChGroup 3 } + +optIfOChGroupSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChGroupSinkIntervalNumber } + + + + ::= { optIfOChGroupSinkIntervalTable 1 } + +OptIfOChGroupSinkIntervalEntry ::= + SEQUENCE { + optIfOChGroupSinkIntervalNumber OptIfIntervalNumber, + optIfOChGroupSinkIntervalSuspectedFlag TruthValue, + optIfOChGroupSinkIntervalLastAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalLowAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalHighAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalLastOutputPower Integer32, + optIfOChGroupSinkIntervalLowOutputPower Integer32, + optIfOChGroupSinkIntervalHighOutputPower Integer32 + } + +optIfOChGroupSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChGroupSinkIntervalEntry 1 } + +optIfOChGroupSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkIntervalEntry 2 } + +optIfOChGroupSinkIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 3 } + +optIfOChGroupSinkIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + + + + ::= { optIfOChGroupSinkIntervalEntry 4 } + +optIfOChGroupSinkIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 5 } + +optIfOChGroupSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 6 } + +optIfOChGroupSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 7 } + +optIfOChGroupSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 8 } + +-- OChGroup sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChGroupSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkCurDayEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOChGroup 4 } + +optIfOChGroupSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSinkCurDayTable 1 } + +OptIfOChGroupSinkCurDayEntry ::= + SEQUENCE { + optIfOChGroupSinkCurDaySuspectedFlag TruthValue, + optIfOChGroupSinkCurDayLowAggregatedInputPower Integer32, + optIfOChGroupSinkCurDayHighAggregatedInputPower Integer32, + optIfOChGroupSinkCurDayLowOutputPower Integer32, + optIfOChGroupSinkCurDayHighOutputPower Integer32 + } + +optIfOChGroupSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkCurDayEntry 1 } + +optIfOChGroupSinkCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 2 } + +optIfOChGroupSinkCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 3 } + +optIfOChGroupSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 4 } + +optIfOChGroupSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 5 } + +-- OChGroup sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChGroupSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOChGroup 5 } + +optIfOChGroupSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the previous + 24-hour interval." + + + + INDEX { ifIndex } + ::= { optIfOChGroupSinkPrevDayTable 1 } + +OptIfOChGroupSinkPrevDayEntry ::= + SEQUENCE { + optIfOChGroupSinkPrevDaySuspectedFlag TruthValue, + optIfOChGroupSinkPrevDayLastAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayLowAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayHighAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayLastOutputPower Integer32, + optIfOChGroupSinkPrevDayLowOutputPower Integer32, + optIfOChGroupSinkPrevDayHighOutputPower Integer32 + } + +optIfOChGroupSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkPrevDayEntry 1 } + +optIfOChGroupSinkPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 2 } + +optIfOChGroupSinkPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 3 } + +optIfOChGroupSinkPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 4 } + +optIfOChGroupSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 5 } + +optIfOChGroupSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 6 } + +optIfOChGroupSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 7 } + +-- OChGroup source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChGroupSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the current 15-minute interval." + ::= { optIfOChGroup 6 } + +optIfOChGroupSrcCurrentEntry OBJECT-TYPE + + + + SYNTAX OptIfOChGroupSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcCurrentTable 1 } + +OptIfOChGroupSrcCurrentEntry ::= + SEQUENCE { + optIfOChGroupSrcCurrentSuspectedFlag TruthValue, + optIfOChGroupSrcCurrentOutputPower Integer32, + optIfOChGroupSrcCurrentLowOutputPower Integer32, + optIfOChGroupSrcCurrentHighOutputPower Integer32, + optIfOChGroupSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOChGroupSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOChGroupSrcCurrentAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentLowAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentHighAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentLowerInputPowerThreshold Integer32, + optIfOChGroupSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOChGroupSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcCurrentEntry 1 } + +optIfOChGroupSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOChGroupSrcCurrentEntry 2 } + +optIfOChGroupSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 3 } + +optIfOChGroupSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 4 } + +optIfOChGroupSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOChGroupSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 5 } + +optIfOChGroupSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOChGroupSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 6 } + +optIfOChGroupSrcCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power monitored at the input." + ::= { optIfOChGroupSrcCurrentEntry 7 } + +optIfOChGroupSrcCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 8 } + +optIfOChGroupSrcCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 9 } + +optIfOChGroupSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOChGroupSrcCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 10 } + +optIfOChGroupSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOChGroupSrcCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 11 } + +-- OChGroup source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChGroupSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A table of historical OChGroup source performance monitoring + information." + ::= { optIfOChGroup 7 } + +optIfOChGroupSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChGroupSrcIntervalNumber } + ::= { optIfOChGroupSrcIntervalTable 1 } + +OptIfOChGroupSrcIntervalEntry ::= + SEQUENCE { + optIfOChGroupSrcIntervalNumber OptIfIntervalNumber, + optIfOChGroupSrcIntervalSuspectedFlag TruthValue, + optIfOChGroupSrcIntervalLastOutputPower Integer32, + optIfOChGroupSrcIntervalLowOutputPower Integer32, + optIfOChGroupSrcIntervalHighOutputPower Integer32, + optIfOChGroupSrcIntervalLastAggregatedInputPower Integer32, + optIfOChGroupSrcIntervalLowAggregatedInputPower Integer32, + optIfOChGroupSrcIntervalHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChGroupSrcIntervalEntry 1 } + +optIfOChGroupSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcIntervalEntry 2 } + +optIfOChGroupSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 3 } + +optIfOChGroupSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 4 } + +optIfOChGroupSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 5 } + +optIfOChGroupSrcIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 6 } + +optIfOChGroupSrcIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 7 } + +optIfOChGroupSrcIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 8 } + +-- OChGroup source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChGroupSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the current 24-hour interval." + ::= { optIfOChGroup 8 } + +optIfOChGroupSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcCurDayTable 1 } + +OptIfOChGroupSrcCurDayEntry ::= + SEQUENCE { + optIfOChGroupSrcCurDaySuspectedFlag TruthValue, + optIfOChGroupSrcCurDayLowOutputPower Integer32, + optIfOChGroupSrcCurDayHighOutputPower Integer32, + optIfOChGroupSrcCurDayLowAggregatedInputPower Integer32, + optIfOChGroupSrcCurDayHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcCurDayEntry 1 } + + + + +optIfOChGroupSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 2 } + +optIfOChGroupSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 3 } + +optIfOChGroupSrcCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 4 } + +optIfOChGroupSrcCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 5 } + +-- OChGroup source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChGroupSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOChGroup 9 } + +optIfOChGroupSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcPrevDayTable 1 } + +OptIfOChGroupSrcPrevDayEntry ::= + SEQUENCE { + optIfOChGroupSrcPrevDaySuspectedFlag TruthValue, + optIfOChGroupSrcPrevDayLastOutputPower Integer32, + optIfOChGroupSrcPrevDayLowOutputPower Integer32, + optIfOChGroupSrcPrevDayHighOutputPower Integer32, + optIfOChGroupSrcPrevDayLastAggregatedInputPower Integer32, + optIfOChGroupSrcPrevDayLowAggregatedInputPower Integer32, + optIfOChGroupSrcPrevDayHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcPrevDayEntry 1 } + +optIfOChGroupSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 2 } + +optIfOChGroupSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 3 } + +optIfOChGroupSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 4 } + +optIfOChGroupSrcPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 5 } + +optIfOChGroupSrcPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 6 } + +optIfOChGroupSrcPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 7 } + +-- the optIfOCh group + + + +-- This group handles the configuration and +-- performance monitoring information for OCh layers. + +-- OCh config table + +optIfOChConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh configuration information." + ::= { optIfOCh 1 } + +optIfOChConfigEntry OBJECT-TYPE + SYNTAX OptIfOChConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOChConfigTable 1 } + +OptIfOChConfigEntry ::= + SEQUENCE { + optIfOChDirectionality OptIfDirectionality, + optIfOChCurrentStatus BITS + } + +optIfOChDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOChConfigEntry 1 } + +optIfOChCurrentStatus OBJECT-TYPE + SYNTAX BITS { + losP(0), + los(1), + oci(2), + ssfP(3), + ssfO(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable when optIfOChDirectionality + has the value sink(1) or bidirectional(3). + In full-capability systems the bit position los(1) is not used. + In reduced-capability systems or at IrDI interfaces only + the bit positions los(1) and ssfP(3) are used." + ::= { optIfOChConfigEntry 2 } + +-- OCh sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOCh 2 } + +optIfOChSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information for an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChSinkCurrentTable 1 } + +OptIfOChSinkCurrentEntry ::= + SEQUENCE { + optIfOChSinkCurrentSuspectedFlag TruthValue, + optIfOChSinkCurrentInputPower Integer32, + optIfOChSinkCurrentLowInputPower Integer32, + optIfOChSinkCurrentHighInputPower Integer32, + optIfOChSinkCurrentLowerInputPowerThreshold Integer32, + optIfOChSinkCurrentUpperInputPowerThreshold Integer32 + } + +optIfOChSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkCurrentEntry 1 } + +optIfOChSinkCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOChSinkCurrentEntry 2 } + +optIfOChSinkCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOChSinkCurrentEntry 3 } + +optIfOChSinkCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOChSinkCurrentEntry 4 } + +optIfOChSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOChSinkCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSinkCurrentEntry 5 } + +optIfOChSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The upper limit threshold on input power. If + optIfOChSinkCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSinkCurrentEntry 6 } + +-- OCh sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OCh sink performance monitoring + information." + ::= { optIfOCh 3 } + +optIfOChSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChSinkIntervalNumber } + ::= { optIfOChSinkIntervalTable 1 } + +OptIfOChSinkIntervalEntry ::= + SEQUENCE { + optIfOChSinkIntervalNumber OptIfIntervalNumber, + optIfOChSinkIntervalSuspectedFlag TruthValue, + optIfOChSinkIntervalLastInputPower Integer32, + optIfOChSinkIntervalLowInputPower Integer32, + optIfOChSinkIntervalHighInputPower Integer32 + } + +optIfOChSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChSinkIntervalEntry 1 } + +optIfOChSinkIntervalSuspectedFlag OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkIntervalEntry 2 } + +optIfOChSinkIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 3 } + +optIfOChSinkIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 4 } + +optIfOChSinkIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 5 } + +-- OCh sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the current 24-hour interval." + + + + ::= { optIfOCh 4 } + +optIfOChSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSinkCurDayTable 1 } + +OptIfOChSinkCurDayEntry ::= + SEQUENCE { + optIfOChSinkCurDaySuspectedFlag TruthValue, + optIfOChSinkCurDayLowInputPower Integer32, + optIfOChSinkCurDayHighInputPower Integer32 + } + +optIfOChSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkCurDayEntry 1 } + +optIfOChSinkCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOChSinkCurDayEntry 2 } + +optIfOChSinkCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOChSinkCurDayEntry 3 } + + + + +-- OCh sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOCh 5 } + +optIfOChSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSinkPrevDayTable 1 } + +OptIfOChSinkPrevDayEntry ::= + SEQUENCE { + optIfOChSinkPrevDaySuspectedFlag TruthValue, + optIfOChSinkPrevDayLastInputPower Integer32, + optIfOChSinkPrevDayLowInputPower Integer32, + optIfOChSinkPrevDayHighInputPower Integer32 + } + +optIfOChSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkPrevDayEntry 1 } + +optIfOChSinkPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + + + + ::= { optIfOChSinkPrevDayEntry 2 } + +optIfOChSinkPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOChSinkPrevDayEntry 3 } + +optIfOChSinkPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOChSinkPrevDayEntry 4 } + +-- OCh source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the current 15-minute interval." + ::= { optIfOCh 6 } + +optIfOChSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChSrcCurrentTable 1 } + +OptIfOChSrcCurrentEntry ::= + SEQUENCE { + + + + optIfOChSrcCurrentSuspectedFlag TruthValue, + optIfOChSrcCurrentOutputPower Integer32, + optIfOChSrcCurrentLowOutputPower Integer32, + optIfOChSrcCurrentHighOutputPower Integer32, + optIfOChSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOChSrcCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOChSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcCurrentEntry 1 } + +optIfOChSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOChSrcCurrentEntry 2 } + +optIfOChSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChSrcCurrentEntry 3 } + +optIfOChSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChSrcCurrentEntry 4 } + +optIfOChSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOChSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSrcCurrentEntry 5 } + +optIfOChSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOChSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSrcCurrentEntry 6 } + +-- OCh source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OCh source performance monitoring + information." + ::= { optIfOCh 7 } + +optIfOChSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChSrcIntervalNumber } + ::= { optIfOChSrcIntervalTable 1 } + +OptIfOChSrcIntervalEntry ::= + SEQUENCE { + optIfOChSrcIntervalNumber OptIfIntervalNumber, + optIfOChSrcIntervalSuspectedFlag TruthValue, + optIfOChSrcIntervalLastOutputPower Integer32, + + + + optIfOChSrcIntervalLowOutputPower Integer32, + optIfOChSrcIntervalHighOutputPower Integer32 + } + +optIfOChSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChSrcIntervalEntry 1 } + +optIfOChSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcIntervalEntry 2 } + +optIfOChSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOChSrcIntervalEntry 3 } + +optIfOChSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOChSrcIntervalEntry 4 } + +optIfOChSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + + + + ::= { optIfOChSrcIntervalEntry 5 } + +-- OCh source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the current 24-hour interval." + ::= { optIfOCh 8 } + +optIfOChSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSrcCurDayTable 1 } + +OptIfOChSrcCurDayEntry ::= + SEQUENCE { + optIfOChSrcCurDaySuspectedFlag TruthValue, + optIfOChSrcCurDayLowOutputPower Integer32, + optIfOChSrcCurDayHighOutputPower Integer32 + } + +optIfOChSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcCurDayEntry 1 } + +optIfOChSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + + + + current 24-hour interval." + ::= { optIfOChSrcCurDayEntry 2 } + +optIfOChSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChSrcCurDayEntry 3 } + +-- OCh source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOCh 9 } + +optIfOChSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSrcPrevDayTable 1 } + +OptIfOChSrcPrevDayEntry ::= + SEQUENCE { + optIfOChSrcPrevDaySuspectedFlag TruthValue, + optIfOChSrcPrevDayLastOutputPower Integer32, + optIfOChSrcPrevDayLowOutputPower Integer32, + optIfOChSrcPrevDayHighOutputPower Integer32 + } + +optIfOChSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcPrevDayEntry 1 } + +optIfOChSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 2 } + +optIfOChSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 3 } + +optIfOChSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 4 } + +-- the optIfOTUk group +-- This group handles the configuration +-- information for OTUk layers. + +-- OTUk config table + +optIfOTUkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTUk configuration information." + ::= { optIfOTUk 1 } + + + +optIfOTUkConfigEntry OBJECT-TYPE + SYNTAX OptIfOTUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTUk configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOTUkConfigTable 1 } + +OptIfOTUkConfigEntry ::= + SEQUENCE { + optIfOTUkDirectionality OptIfDirectionality, + optIfOTUkBitRateK OptIfBitRateK, + optIfOTUkTraceIdentifierTransmitted OptIfTxTI, + optIfOTUkDAPIExpected OptIfExDAPI, + optIfOTUkSAPIExpected OptIfExSAPI, + optIfOTUkTraceIdentifierAccepted OptIfAcTI, + optIfOTUkTIMDetMode OptIfTIMDetMode, + optIfOTUkTIMActEnabled TruthValue, + optIfOTUkDEGThr OptIfDEGThr, + optIfOTUkDEGM OptIfDEGM, + optIfOTUkSinkAdaptActive TruthValue, + optIfOTUkSourceAdaptActive TruthValue, + optIfOTUkSinkFECEnabled TruthValue, + optIfOTUkCurrentStatus BITS + } + +optIfOTUkDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOTUkConfigEntry 1 } + +optIfOTUkBitRateK OBJECT-TYPE + SYNTAX OptIfBitRateK + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the bit rate of the entity." + ::= { optIfOTUkConfigEntry 2 } + +optIfOTUkTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfOTUkDirectionality + has the value source(2) or bidirectional(3). It must not + be instantiated in rows where optIfOTUkDirectionality + has the value sink(1). + If no value is ever set by a management entity for this + object, system-specific default value will be used. + Any implementation that instantiates this object must + document the system-specific default value or how it + is derived." + ::= { optIfOTUkConfigEntry 3 } + +optIfOTUkDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1)." + ::= { optIfOTUkConfigEntry 4 } + +optIfOTUkSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1)." + ::= { optIfOTUkConfigEntry 5 } + +optIfOTUkTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is only applicable to the sink function, i.e., + + + + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The value of this object is unspecified when + optIfOTUkCurrentStatus indicates a near-end defect + (i.e., ssf(3), lof(4), ais(5), lom(6)) that prevents + extraction of the trace message." + ::= { optIfOTUkConfigEntry 6 } + +optIfOTUkTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is off(1)." + ::= { optIfOTUkConfigEntry 7 } + +optIfOTUkTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 8 } + +optIfOTUkDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + + + + greater than or equal to optIfOTUkDEGThr. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfOTUkConfigEntry 9 } + +optIfOTUkDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfOTUkDEGM + consecutive bad PM Seconds are detected. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfOTUkConfigEntry 10 } + +optIfOTUkSinkAdaptActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the sink adaptation function is activated or + not. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 11 } + +optIfOTUkSourceAdaptActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the source adaptation function is activated or + not. + This object is only applicable to the source function, i.e., + only when optIfOTUkDirectionality has the value source(2) + or bidirectional(3). It must not be instantiated in rows + + + + where optIfOTUkDirectionality has the value sink(1). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 12 } + +optIfOTUkSinkFECEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If Forward Error Correction (FEC) is supported, this object + indicates whether FEC at the OTUk sink adaptation function is + enabled or not. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is true(1)." + ::= { optIfOTUkConfigEntry 13 } + +optIfOTUkCurrentStatus OBJECT-TYPE + SYNTAX BITS { + tim(0), + deg(1), + bdi(2), + ssf(3), + lof(4), + ais(5), + lom(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2)." + ::= { optIfOTUkConfigEntry 14 } + +-- GCC0 config table + +optIfGCC0ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfGCC0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GCC0 configuration information." + ::= { optIfOTUk 2 } + + + +optIfGCC0ConfigEntry OBJECT-TYPE + SYNTAX OptIfGCC0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains GCC0 configuration + information of an interface. Each instance must + correspond to an instance of optIfOTUkConfigEntry. + Separate source and/or sink instances may exist + for a given ifIndex value, or a single bidirectional + instance may exist, but a bidirectional instance may + not coexist with a source or sink instance. + Instances of this conceptual row persist across + agent restarts." + INDEX { ifIndex, optIfGCC0Directionality } + ::= { optIfGCC0ConfigTable 1 } + +OptIfGCC0ConfigEntry ::= + SEQUENCE { + optIfGCC0Directionality OptIfDirectionality, + optIfGCC0Application SnmpAdminString, + optIfGCC0RowStatus RowStatus + } + +optIfGCC0Directionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the entity. + The values source(2) and bidirectional(3) are + not allowed if the corresponding instance of + optIfOTUkDirectionality has the value sink(1). + The values sink(1) and bidirectional(3) are + not allowed if the corresponding instance of + optIfOTUkDirectionality has the value source(2)." + ::= { optIfGCC0ConfigEntry 1 } + +optIfGCC0Application OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the application transported by the GCC0 entity. + Example applications are ECC, User data channel. + + The value of this object may not be changed when + optIfGCC0RowStatus has the value active(1)." + + + + ::= { optIfGCC0ConfigEntry 2 } + +optIfGCC0RowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfGCC0 config table. + It is used to model the addGCC0Access and removeGCC0Access + operations of an OTUk_TTP for GCC0 access control as defined + in G.874.1. Setting RowStatus to createAndGo or createAndWait + implies addGCC0Access. Setting RowStatus to destroy implies + removeGCC0Access." + ::= { optIfGCC0ConfigEntry 3 } + +-- the optIfODUk group +-- This group handles the configuration information +-- for the ODUk layers. + +-- ODUk config table + +optIfODUkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk configuration information." + ::= { optIfODUk 1 } + +optIfODUkConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUk configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfODUkConfigTable 1 } + +OptIfODUkConfigEntry ::= + SEQUENCE { + optIfODUkDirectionality OptIfDirectionality, + optIfODUkBitRateK OptIfBitRateK, + optIfODUkTcmFieldsInUse BITS, + optIfODUkPositionSeqCurrentSize Unsigned32, + optIfODUkTtpPresent TruthValue + } + + + +optIfODUkDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfODUkConfigEntry 1 } + +optIfODUkBitRateK OBJECT-TYPE + SYNTAX OptIfBitRateK + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the bit rate of the entity." + ::= { optIfODUkConfigEntry 2 } + +optIfODUkTcmFieldsInUse OBJECT-TYPE + SYNTAX BITS { + tcmField1(0), + tcmField2(1), + tcmField3(2), + tcmField4(3), + tcmField5(4), + tcmField6(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the TCM field(s) that are currently in use. + The positions of the bits correspond to the TCM fields. + A bit that is set to 1 means that the corresponding TCM + field is used. This object will be updated when rows are + created in or deleted from the optIfODUkTConfigTable, or + the optIfODUkTNimConfigTable." + ::= { optIfODUkConfigEntry 3 } + +optIfODUkPositionSeqCurrentSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current size of the position + sequence (i.e., number of TCM function and/or GCC12 + access that have been created in the ODUk interface). + When the value of this variable is greater than zero, + it means that one or more TCM function and/or GCC12 + access have been created in the ODUk interface. In this + case, there will be as many rows in the + + + + optIfODUkPositionSeqTable as the value of + optIfODUkPositionSeqCurrentSize corresponding to this + ODUk interface, one row for each TCM function or GCC12 + access. The position of the TCM function and/or + GCC12 access within the sequence is indicated by the + optIfODUkPositionSeqPosition variable in + optIfODUkPositionSeqTable. + The optIfODUkPositionSeqTable also provides pointers + to the corresponding TCM function (optIfODUkT) and + GCC12 access (optIfGCC12) entities." + ::= { optIfODUkConfigEntry 4 } + +optIfODUkTtpPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value true(1) if the ifEntry under which + it is instantiated contains an ODUk Trail Termination Point, + i.e., is the endpoint of an ODUk path. In that case there + will be a corresponding row in the ODUk TTP config table and + it will not be possible to create corresponding rows in the + ODUk NIM config table. This object has the value false(2) + if the ifEntry under which it is instantiated contains an + intermediate ODUk Connection Termination Point. In that case + there is no corresponding row in the ODUk TTP config table, + but it will be possible to create corresponding rows in the + ODUk NIM config table. This object also affects the allowable + options in rows created in the GCC12 config table and in the + ODUkT config table, as specified in the DESCRIPTION clauses + of the columns in those tables." + ::= { optIfODUkConfigEntry 5 } + +-- ODUk Trail Termination Point (TTP) config table + +optIfODUkTtpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTtpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk TTP configuration information." + ::= { optIfODUk 2 } + +optIfODUkTtpConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTtpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row that contains ODUk TTP configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfODUkTtpConfigTable 1 } + +OptIfODUkTtpConfigEntry ::= + SEQUENCE { + optIfODUkTtpTraceIdentifierTransmitted OptIfTxTI, + optIfODUkTtpDAPIExpected OptIfExDAPI, + optIfODUkTtpSAPIExpected OptIfExSAPI, + optIfODUkTtpTraceIdentifierAccepted OptIfAcTI, + optIfODUkTtpTIMDetMode OptIfTIMDetMode, + optIfODUkTtpTIMActEnabled TruthValue, + optIfODUkTtpDEGThr OptIfDEGThr, + optIfODUkTtpDEGM OptIfDEGM, + optIfODUkTtpCurrentStatus BITS + } + +optIfODUkTtpTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfODUkDirectionality + has the value source(2) or bidirectional(3). It must not + be instantiated in rows where optIfODUkDirectionality + has the value sink(1). + If no value is ever set by a management entity for this + object, system-specific default value will be used. + Any implementation that instantiates this object must + document the system-specific default value or how it + is derived." + ::= { optIfODUkTtpConfigEntry 1 } + +optIfODUkTtpDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1)." + ::= { optIfODUkTtpConfigEntry 2 } + + + +optIfODUkTtpSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1)." + ::= { optIfODUkTtpConfigEntry 3 } + +optIfODUkTtpTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The value of this object is unspecified when + optIfODUkTtpCurrentStatus indicates a near-end defect + (i.e., oci(0), lck(1), ssf(5)) that prevents extraction + of the trace message." + ::= { optIfODUkTtpConfigEntry 4 } + +optIfODUkTtpTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is off(1)." + ::= { optIfODUkTtpConfigEntry 5 } + +optIfODUkTtpTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfODUkTtpConfigEntry 6 } + +optIfODUkTtpDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkDEGThr. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfODUkTtpConfigEntry 7 } + +optIfODUkTtpDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkDEGM + consecutive bad PM Seconds are detected. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfODUkTtpConfigEntry 8 } + +optIfODUkTtpCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + + + + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2)." + ::= { optIfODUkTtpConfigEntry 9 } + +-- ODUk Position Sequence table + +optIfODUkPositionSeqTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkPositionSeqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk Position Sequence information." + ::= { optIfODUk 3 } + +optIfODUkPositionSeqEntry OBJECT-TYPE + SYNTAX OptIfODUkPositionSeqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUk position sequence + information of an ODUk interface. The ODUk interface + is identified by the ifIndex. Associated with each + ODUk interface there may be one of more conceptual + rows in the optIfODUkPositionSeqTable. Each row + represents a TCM or GCC12 access function within the + associated ODUk interface. Rows of the + optIfODUkPositionSeqTable table are created/deleted + as the result of the creation/deletion of the optIfODUkT + or optIfGCC12 entities." + INDEX { ifIndex, optIfODUkPositionSeqIndex } + ::= { optIfODUkPositionSeqTable 1 } + +OptIfODUkPositionSeqEntry ::= + SEQUENCE { + optIfODUkPositionSeqIndex Unsigned32, + optIfODUkPositionSeqPosition Unsigned32, + + + + optIfODUkPositionSeqPointer RowPointer + } + +optIfODUkPositionSeqIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable identifies a row in the + optIfODUkPositionSeqTable Table. + Each row of the optIfODUkPositionSeqTable Table + represents a TCM or GCC12 access function within the + associated ODUk interface." + ::= { optIfODUkPositionSeqEntry 1 } + +optIfODUkPositionSeqPosition OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the position of the TCM or + GCC12 access function within the sequence of TCMs & + GCC12 access functions of the associated ODUk + interface. The TCM or GCC12 presented by this row is + referenced by the optIfODUkPositionSeqPointer variable." + ::= { optIfODUkPositionSeqEntry 2 } + +optIfODUkPositionSeqPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable identifies the TCM or GCC12 access function + by pointing to the corresponding optIfODUkT or optIfGCC12 + entity." + ::= { optIfODUkPositionSeqEntry 3 } + +-- ODUk Non-intrusive monitoring (Nim) config table + +optIfODUkNimConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkNim configuration information." + ::= { optIfODUk 4 } + +optIfODUkNimConfigEntry OBJECT-TYPE + + + + SYNTAX OptIfODUkNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkNim configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry + for which optIfODUkTtpPresent has the value false(2). + + Instances of this conceptual row persist across + agent restarts, and read-create columns other + than the status column may be modified while the + row is active." + INDEX { ifIndex, optIfODUkNimDirectionality } + ::= { optIfODUkNimConfigTable 1 } + +OptIfODUkNimConfigEntry ::= + SEQUENCE { + optIfODUkNimDirectionality OptIfSinkOrSource, + optIfODUkNimDAPIExpected OptIfExDAPI, + optIfODUkNimSAPIExpected OptIfExSAPI, + optIfODUkNimTraceIdentifierAccepted OptIfAcTI, + optIfODUkNimTIMDetMode OptIfTIMDetMode, + optIfODUkNimTIMActEnabled TruthValue, + optIfODUkNimDEGThr OptIfDEGThr, + optIfODUkNimDEGM OptIfDEGM, + optIfODUkNimCurrentStatus BITS, + optIfODUkNimRowStatus RowStatus + } + +optIfODUkNimDirectionality OBJECT-TYPE + SYNTAX OptIfSinkOrSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the monitor point for the ODUk Path non-intrusive + monitoring function. The value source(2) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value sink(1), and the value sink(1) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value source(2). Either the value sink(1) or + source(2) is allowed if the corresponding instance of + optIfODUkDirectionality has the value bidirectional(3). + + The value sink(1) means monitoring at the sink direction + path signal of the ODUk CTP. + + The value source(2) means monitoring at the source direction + + + + path signal of the ODUk CTP. Monitoring the source direction + of an ODUk CTP is necessary in those cases where the ODUk CTP + is at an SNCP (Subnetwork Connection Protection) end (e.g., see + Figure I.1.2/G.874.1). If one would like to get the performance + of the protected connection, one cannot use the NIM function + at both ODUk CTP sinks (before the matrix), instead one should + monitor the signal at the source ODUk CTP after the matrix." + ::= { optIfODUkNimConfigEntry 1 } + +optIfODUkNimDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object has no effect if optIfODUkNimTIMDetMode has + the value off(1) or sapi(3)." + ::= { optIfODUkNimConfigEntry 2 } + +optIfODUkNimSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object has no effect if optIfODUkNimTIMDetMode has + the value off(1) or dapi(2)." + ::= { optIfODUkNimConfigEntry 3 } + +optIfODUkNimTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. The value of + this object is unspecified if optIfODUkNimCurrentStatus + has any of the bit positions oci(0), lck(1), or ssf(5) + set or if optIfODUkNimRowStatus has any value other + than active(1)." + ::= { optIfODUkNimConfigEntry 4 } + +optIfODUkNimTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + + + + ::= { optIfODUkNimConfigEntry 5 } + +optIfODUkNimTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled." + ::= { optIfODUkNimConfigEntry 6 } + +optIfODUkNimDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad + if the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkNimDEGThr." + ::= { optIfODUkNimConfigEntry 7 } + +optIfODUkNimDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkNimDEGM + consecutive bad PM Seconds are detected." + ::= { optIfODUkNimConfigEntry 8 } + +optIfODUkNimCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if + any. The value of this object is unspecified if + optIfODUkNimRowStatus has any value other than + + + + active(1)." + ::= { optIfODUkNimConfigEntry 9 } + +optIfODUkNimRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting + a conceptual row of the optIfODUkNim config table. + It is used to model the activateNim and deactivateNim + operations of an OTUk_CTP for non-intrusive monitoring + control as defined in G.874.1. Setting RowStatus to + createAndGo or createAndWait implies activateNim. + Setting RowStatus to destroy implies deactivateNim." + ::= { optIfODUkNimConfigEntry 10 } + +-- GCC12 config table + +optIfGCC12ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfGCC12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GCC12 configuration information. + The GCC function processes the GCC overhead bytes passing + through them but leave the remainder of the ODUk overhead + and payload data alone." + ::= { optIfODUk 5 } + +optIfGCC12ConfigEntry OBJECT-TYPE + SYNTAX OptIfGCC12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains GCC12 configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Separate instances providing GCC1-only access and + GCC2-only access may exist for a given ifIndex value, + or a single instance providing GCC1 + GCC2 may exist, + but a GCC1 + GCC2 instance may not coexist with a + GCC1-only or GCC2-only instance. + + Instances of this conceptual row persist across agent + restarts." + INDEX { ifIndex, optIfGCC12Codirectional, optIfGCC12GCCAccess } + ::= { optIfGCC12ConfigTable 1 } + + + +OptIfGCC12ConfigEntry ::= + SEQUENCE { + optIfGCC12Codirectional TruthValue, + optIfGCC12GCCAccess INTEGER, + optIfGCC12GCCPassThrough TruthValue, + optIfGCC12Application SnmpAdminString, + optIfGCC12RowStatus RowStatus + } + +optIfGCC12Codirectional OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the GCC12 termination with + respect to the associated ODUk CTP. The value true(1) means + that the sink part of the GCC12 extracts COMMS data from the + signal at the input to the ODUk CTP sink and the source part + of the GCC12 inserts COMMS data into the signal at the output + of the ODUk CTP source. The value false(2) means that the + sink part of the GCC12 extracts COMMS data from the signal at + the output of the ODUk CTP source and the source part of the + GCC12 inserts COMMS data into the signal at the input of the + ODUk CTP sink. This attribute may assume either value when + the corresponding instance of optIfODUkTtpPresent has the + value false(2). When the value of the corresponding instance + of optIfODUkTtpPresent is true(1) then the only value allowed + for this attribute is true(1)." + ::= { optIfGCC12ConfigEntry 1 } + +optIfGCC12GCCAccess OBJECT-TYPE + SYNTAX INTEGER { + gcc1 (1), + gcc2 (2), + gcc1and2 (3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the GCC access represented by the entity." + ::= { optIfGCC12ConfigEntry 2 } + +optIfGCC12GCCPassThrough OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the selected GCC overhead bytes are passed + + + + through or modified. The value true(1) means that the selected + GCC overhead bytes are passed through unmodified from the ODUk + CTP input to the ODUk CTP output. The value false(2) means that + the selected GCC overhead bytes are set to zero at the ODUk CTP + output after the extraction of the COMMS data. This object has + no effect if the corresponding instance of optIfODUkTtpPresent + has the value true(1). + + The value of this object may not be changed when + optIfGCC12RowStatus has the value active(1)." + ::= { optIfGCC12ConfigEntry 3 } + +optIfGCC12Application OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the application transported by the GCC12 entity. + Example applications are ECC, User data channel. + + The value of this object may not be changed when + optIfGCC12RowStatus has the value active(1)." + ::= { optIfGCC12ConfigEntry 4 } + +optIfGCC12RowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting + a conceptual row of the optIfGCC12 config table. It is + used to model the addGCC12Access and removeGCC12Access + operations of an ODUk_CTP or ODUk_TTP for GCC12 access + control as defined in G.874.1. Setting RowStatus to + createAndGo or createAndWait implies addGCC12Access. + Setting RowStatus to destroy implies removeGCC12Access. + Successful addition/removal of the GCC12 access function + will result in updating the + optIfODUkPositionSeqCurrentSize variable and the + optIfODUkPositionSeqTable table of the associated + ODUk entry in the optIfODUkConfigTable." + ::= { optIfGCC12ConfigEntry 5 } + +-- the optIfODUkT group +-- This group handles the configuration information +-- for the ODUkT layers. + +-- ODUkT config table + + + +optIfODUkTConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkT configuration information." + ::= { optIfODUkT 1 } + +optIfODUkTConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkT configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Rows in this table are mutually exclusive with rows + in the ODUkT NIM config table -- in other words, this + row object may not be instantiated for a given pair + of ifIndex and TCM field values if a corresponding + instance of optIfODUkTNimConfigEntry already exists. + + Instances of this conceptual row persist across agent + restarts. Except where noted otherwise, read-create + columns other than the status column may be modified + while the row is active." + INDEX { ifIndex, optIfODUkTTcmField, optIfODUkTCodirectional } + ::= { optIfODUkTConfigTable 1 } + +OptIfODUkTConfigEntry ::= + SEQUENCE { + optIfODUkTTcmField Unsigned32, + optIfODUkTCodirectional TruthValue, + optIfODUkTTraceIdentifierTransmitted OptIfTxTI, + optIfODUkTDAPIExpected OptIfExDAPI, + optIfODUkTSAPIExpected OptIfExSAPI, + optIfODUkTTraceIdentifierAccepted OptIfAcTI, + optIfODUkTTIMDetMode OptIfTIMDetMode, + optIfODUkTTIMActEnabled TruthValue, + optIfODUkTDEGThr OptIfDEGThr, + optIfODUkTDEGM OptIfDEGM, + optIfODUkTSinkMode INTEGER, + optIfODUkTSinkLockSignalAdminState INTEGER, + optIfODUkTSourceLockSignalAdminState INTEGER, + optIfODUkTCurrentStatus BITS, + optIfODUkTRowStatus RowStatus + } + + + + +optIfODUkTTcmField OBJECT-TYPE + SYNTAX Unsigned32 (1..6) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the tandem connection monitoring + field of the ODUk OH. Valid values are + integers from 1 to 6." + ::= { optIfODUkTConfigEntry 1 } + +optIfODUkTCodirectional OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the ODUkT termination point with + respect to the associated ODUk CTP. The value true(1) means + that the sink part of the ODUkT TP extracts TCM data from the + signal at the input to the ODUk CTP sink and the source part + of the ODUkT TP inserts TCM data into the signal at the output + of the ODUk CTP source. The value false(2) means that the + sink part of the ODUkT TP extracts TCM data from the signal at + the output of the ODUk CTP source and the source part of the + ODUkT TP inserts TCM data into the signal at the input of the + ODUk CTP sink. This attribute may assume either value when + the corresponding instance of optIfODUkTtpPresent has the + value false(2). When the value of the corresponding instance + of optIfODUkTtpPresent is true(1) then the only value allowed + for this attribute is true(1)." + ::= { optIfODUkTConfigEntry 2 } + +optIfODUkTTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 3 } + +optIfODUkTDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1)." + ::= { optIfODUkTConfigEntry 4 } + +optIfODUkTSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1)." + ::= { optIfODUkTConfigEntry 5 } + +optIfODUkTTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The value of this object is unspecified when + optIfODUkTCurrentStatus indicates a near-end defect + (i.e., oci(0), lck(1), ssf(5)) that prevents extraction + + + + of the trace message." + ::= { optIfODUkTConfigEntry 6 } + +optIfODUkTTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is off(1)." + ::= { optIfODUkTConfigEntry 7 } + +optIfODUkTTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfODUkTConfigEntry 8 } + +optIfODUkTDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + + + + greater than or equal to optIfODUkTDEGThr. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfODUkTConfigEntry 9 } + +optIfODUkTDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkTDEGM + consecutive bad PM Seconds are detected. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfODUkTConfigEntry 10 } + +optIfODUkTSinkMode OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + monitor (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable specifies the TCM mode at the entity. + The value operational(1) means that TCM Overhead (TCMOH) + processes (see ITU-T G.798) shall be + performed and consequent actions for AIS, Trail + Signal Fail (TSF), Trail Signal Degraded (TSD) shall be + initiated in case of defects. + The value monitor(2) means that TCMOH processes shall be + performed but consequent actions for AIS, Trail + Server Failure (TSF), Trail Server Degraded (TSD) shall _not_ be + initiated in case of defects. + + + + This object is applicable only when the value of + optIfODUkTtpPresent is false(2) and also either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 11 } + +optIfODUkTSinkLockSignalAdminState OBJECT-TYPE + SYNTAX INTEGER { + locked(1), + normal(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Provides the capability to provision the LOCK signal, which + is one of the ODUk maintenance signals, at the ODUKT sink. When + a Tandem Connection endpoint is set to admin state locked, + it inserts the ODUk-LCK signal in the sink direction. + + This object is applicable only when the value of + optIfODUkTtpPresent is false(2) and also either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 12 } + +optIfODUkTSourceLockSignalAdminState OBJECT-TYPE + SYNTAX INTEGER { + locked(1), + normal(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Provides the capability to provision the LOCK signal, which + is one of the ODUk maintenance signals, at the source. + When a Tandem Connection endpoint is set to admin state + locked, it inserts the ODUk-LCK signal in the source + direction. + + + + This object is applicable only when either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 13 } + +optIfODUkTCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable only when either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 14 } + +optIfODUkTRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfODUkT config table. + It is used to model the addTCM and removeTCM operations of an + ODUk_CTP or ODUk_TTP for Tandem connection monitoring as defined + in ITU-T G.874.1. + Setting RowStatus to createAndGo or createAndWait implies addTCM. + Setting RowStatus to destroy implies removeTCM. + Successful addition/removal of TCM will result in updating the + optIfODUkTcmFieldsInUse and optIfODUkPositionSeqCurrentSize + variables and the optIfODUkPositionSeqTable table of the + + + + associated ODUk entry in the optIfODUkConfigTable." + ::= { optIfODUkTConfigEntry 15 } + +-- ODUkT Non-intrusive monitoring (Nim) config table + +optIfODUkTNimConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkTNim configuration information." + ::= { optIfODUkT 2 } + +optIfODUkTNimConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkTNim configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Rows in this table are mutually exclusive with rows + in the ODUkT config table -- in other words, this + row object may not be instantiated for a given pair + of ifIndex and TCM field values if a corresponding + instance of optIfODUkTConfigEntry already exists. + + Instances of this conceptual row persist across + agent restarts, and read-create columns other + than the status column may be modified while the + row is active." + INDEX {ifIndex, optIfODUkTNimTcmField, optIfODUkTNimDirectionality} + ::= { optIfODUkTNimConfigTable 1 } + +OptIfODUkTNimConfigEntry ::= + SEQUENCE { + optIfODUkTNimTcmField Unsigned32, + optIfODUkTNimDirectionality OptIfSinkOrSource, + optIfODUkTNimDAPIExpected OptIfExDAPI, + optIfODUkTNimSAPIExpected OptIfExSAPI, + optIfODUkTNimTraceIdentifierAccepted OptIfAcTI, + optIfODUkTNimTIMDetMode OptIfTIMDetMode, + optIfODUkTNimTIMActEnabled TruthValue, + optIfODUkTNimDEGThr OptIfDEGThr, + optIfODUkTNimDEGM OptIfDEGM, + optIfODUkTNimCurrentStatus BITS, + optIfODUkTNimRowStatus RowStatus + } + + + +optIfODUkTNimTcmField OBJECT-TYPE + SYNTAX Unsigned32 (1..6) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the tandem connection monitoring + field of the ODUk OH on which non-intrusive monitoring + is performed. Valid values are + integers from 1 to 6." + ::= { optIfODUkTNimConfigEntry 1 } + +optIfODUkTNimDirectionality OBJECT-TYPE + SYNTAX OptIfSinkOrSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the monitor point for the ODUk TCM non-intrusive + monitoring function. The value source(2) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value sink(1), and the value sink(1) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value source(2). Either the value sink(1) or + source(2) is allowed if the corresponding instance of + optIfODUkDirectionality has the value bidirectional(3). + The value sink(1) means monitoring at the sink direction + TCM signal of the ODUk CTP. + The value source(2) means monitoring at the source direction + path signal of the ODUk CTP." + ::= { optIfODUkTNimConfigEntry 2 } + +optIfODUkTNimDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object has no effect if optIfODUkTNimTIMDetMode has + the value off(1) or sapi(3)." + ::= { optIfODUkTNimConfigEntry 3 } + +optIfODUkTNimSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object has no effect if optIfODUkTNimTIMDetMode has + the value off(1) or dapi(2)." + + + + ::= { optIfODUkTNimConfigEntry 4 } + +optIfODUkTNimTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. The value of + this object is unspecified if optIfODUkTNimCurrentStatus + has any of the bit positions oci(0), lck(1), or ssf(5) + set or if optIfODUkTNimRowStatus has any value other + than active(1)." + ::= { optIfODUkTNimConfigEntry 5 } + +optIfODUkTNimTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + ::= { optIfODUkTNimConfigEntry 6 } + +optIfODUkTNimTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled." + ::= { optIfODUkTNimConfigEntry 7 } + +optIfODUkTNimDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkTNimDEGThr." + ::= { optIfODUkTNimConfigEntry 8 } + +optIfODUkTNimDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkTNimDEGM + consecutive bad PM Seconds are detected." + ::= { optIfODUkTNimConfigEntry 9 } + +optIfODUkTNimCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + The value of this object is unspecified if + optIfODUkTNimRowStatus has any value other than + active(1)." + ::= { optIfODUkTNimConfigEntry 10 } + +optIfODUkTNimRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfODUkTNim config table. + It is used to model the addTCM and removeTCM operations of an + ODUk_CTP or ODUk_TTP for non-intrusive Tandem connection + monitoring as defined in ITU-T G.874.1. + Setting RowStatus to createAndGo or createAndWait implies addTCM. + Setting RowStatus to destroy implies removeTCM. + Successful addition/removal of Nim TCM will result in updating + the optIfODUkPositionSeqCurrentSize variable and the + optIfODUkPositionSeqTable table of the associated ODUk entry + in the optIfODUkConfigTable." + ::= { optIfODUkTNimConfigEntry 11 } + +-- units of conformance + +optIfOTMnGroup OBJECT-GROUP + OBJECTS { + optIfOTMnOrder, + optIfOTMnReduced, + + + + optIfOTMnBitRates, + optIfOTMnInterfaceType, + optIfOTMnTcmMax, + optIfOTMnOpticalReach + } + STATUS current + DESCRIPTION + "A collection of OTMn structure information objects." + ::= { optIfGroups 1 } + +optIfPerfMonGroup OBJECT-GROUP + OBJECTS { + optIfPerfMonCurrentTimeElapsed, + optIfPerfMonCurDayTimeElapsed, + optIfPerfMonIntervalNumIntervals, + optIfPerfMonIntervalNumInvalidIntervals + } + STATUS current + DESCRIPTION + "A collection of performance monitoring interval objects." + ::= { optIfGroups 2 } + +optIfOTSnCommonGroup OBJECT-GROUP + OBJECTS { + optIfOTSnDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTSn interfaces." + ::= { optIfGroups 3 } + +optIfOTSnSourceGroupFull OBJECT-GROUP + OBJECTS { + optIfOTSnTraceIdentifierTransmitted + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to full-functionality/IaDI OTSn + interfaces that support source functions." + ::= { optIfGroups 4 } + +optIfOTSnAPRStatusGroup OBJECT-GROUP + OBJECTS { + optIfOTSnAprStatus + } + STATUS current + + + + DESCRIPTION + "A collection of objects applicable to + OTSn interfaces that support Automatic + Power Reduction functions." + ::= { optIfGroups 5 } + +optIfOTSnAPRControlGroup OBJECT-GROUP + OBJECTS { + optIfOTSnAprControl + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + OTSn interfaces that provide Automatic + Power Reduction control functions." + ::= { optIfGroups 6 } + +optIfOTSnSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOTSnCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTSn interfaces that + support sink functions." + ::= { optIfGroups 7 } + +optIfOTSnSinkGroupFull OBJECT-GROUP + OBJECTS { + optIfOTSnDAPIExpected, + optIfOTSnSAPIExpected, + optIfOTSnTraceIdentifierAccepted, + optIfOTSnTIMDetMode, + optIfOTSnTIMActEnabled + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to full-functionality/IaDI OTSn + interfaces that support sink functions." + ::= { optIfGroups 8 } + +optIfOTSnSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSinkCurrentSuspectedFlag, + optIfOTSnSinkCurrentInputPower, + optIfOTSnSinkCurrentLowInputPower, + + + + optIfOTSnSinkCurrentHighInputPower, + optIfOTSnSinkCurrentOutputPower, + optIfOTSnSinkCurrentLowOutputPower, + optIfOTSnSinkCurrentHighOutputPower, + optIfOTSnSinkIntervalSuspectedFlag, + optIfOTSnSinkIntervalLastInputPower, + optIfOTSnSinkIntervalLowInputPower, + optIfOTSnSinkIntervalHighInputPower, + optIfOTSnSinkIntervalLastOutputPower, + optIfOTSnSinkIntervalLowOutputPower, + optIfOTSnSinkIntervalHighOutputPower, + optIfOTSnSinkCurDaySuspectedFlag, + optIfOTSnSinkCurDayLowInputPower, + optIfOTSnSinkCurDayHighInputPower, + optIfOTSnSinkCurDayLowOutputPower, + optIfOTSnSinkCurDayHighOutputPower, + optIfOTSnSinkPrevDaySuspectedFlag, + optIfOTSnSinkPrevDayLastInputPower, + optIfOTSnSinkPrevDayLowInputPower, + optIfOTSnSinkPrevDayHighInputPower, + optIfOTSnSinkPrevDayLastOutputPower, + optIfOTSnSinkPrevDayLowOutputPower, + optIfOTSnSinkPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OTSn interfaces that + support sink functions." + ::= { optIfGroups 9 } + +optIfOTSnSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSinkCurrentLowerInputPowerThreshold, + optIfOTSnSinkCurrentUpperInputPowerThreshold, + optIfOTSnSinkCurrentLowerOutputPowerThreshold, + optIfOTSnSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OTSn interfaces + that support sink functions." + ::= { optIfGroups 10 } + +optIfOTSnSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSrcCurrentSuspectedFlag, + + + + optIfOTSnSrcCurrentOutputPower, + optIfOTSnSrcCurrentLowOutputPower, + optIfOTSnSrcCurrentHighOutputPower, + optIfOTSnSrcCurrentInputPower, + optIfOTSnSrcCurrentLowInputPower, + optIfOTSnSrcCurrentHighInputPower, + optIfOTSnSrcIntervalSuspectedFlag, + optIfOTSnSrcIntervalLastOutputPower, + optIfOTSnSrcIntervalLowOutputPower, + optIfOTSnSrcIntervalHighOutputPower, + optIfOTSnSrcIntervalLastInputPower, + optIfOTSnSrcIntervalLowInputPower, + optIfOTSnSrcIntervalHighInputPower, + optIfOTSnSrcCurDaySuspectedFlag, + optIfOTSnSrcCurDayLowOutputPower, + optIfOTSnSrcCurDayHighOutputPower, + optIfOTSnSrcCurDayLowInputPower, + optIfOTSnSrcCurDayHighInputPower, + optIfOTSnSrcPrevDaySuspectedFlag, + optIfOTSnSrcPrevDayLastOutputPower, + optIfOTSnSrcPrevDayLowOutputPower, + optIfOTSnSrcPrevDayHighOutputPower, + optIfOTSnSrcPrevDayLastInputPower, + optIfOTSnSrcPrevDayLowInputPower, + optIfOTSnSrcPrevDayHighInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OTSn interfaces that + support source functions." + ::= { optIfGroups 11 } + +optIfOTSnSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSrcCurrentLowerOutputPowerThreshold, + optIfOTSnSrcCurrentUpperOutputPowerThreshold, + optIfOTSnSrcCurrentLowerInputPowerThreshold, + optIfOTSnSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OTSn interfaces + that support source functions." + ::= { optIfGroups 12 } + +optIfOMSnCommonGroup OBJECT-GROUP + + + + OBJECTS { + optIfOMSnDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OMSn interfaces." + ::= { optIfGroups 13 } + +optIfOMSnSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOMSnCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OMSn interfaces that + support sink functions." + ::= { optIfGroups 14 } + +optIfOMSnSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSinkCurrentSuspectedFlag, + optIfOMSnSinkCurrentAggregatedInputPower, + optIfOMSnSinkCurrentLowAggregatedInputPower, + optIfOMSnSinkCurrentHighAggregatedInputPower, + optIfOMSnSinkCurrentOutputPower, + optIfOMSnSinkCurrentLowOutputPower, + optIfOMSnSinkCurrentHighOutputPower, + optIfOMSnSinkIntervalSuspectedFlag, + optIfOMSnSinkIntervalLastAggregatedInputPower, + optIfOMSnSinkIntervalLowAggregatedInputPower, + optIfOMSnSinkIntervalHighAggregatedInputPower, + optIfOMSnSinkIntervalLastOutputPower, + optIfOMSnSinkIntervalLowOutputPower, + optIfOMSnSinkIntervalHighOutputPower, + optIfOMSnSinkCurDaySuspectedFlag, + optIfOMSnSinkCurDayLowAggregatedInputPower, + optIfOMSnSinkCurDayHighAggregatedInputPower, + optIfOMSnSinkCurDayLowOutputPower, + optIfOMSnSinkCurDayHighOutputPower, + optIfOMSnSinkPrevDaySuspectedFlag, + optIfOMSnSinkPrevDayLastAggregatedInputPower, + optIfOMSnSinkPrevDayLowAggregatedInputPower, + optIfOMSnSinkPrevDayHighAggregatedInputPower, + optIfOMSnSinkPrevDayLastOutputPower, + optIfOMSnSinkPrevDayLowOutputPower, + optIfOMSnSinkPrevDayHighOutputPower + + + + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OMSn interfaces that + support sink functions." + ::= { optIfGroups 15 } + +optIfOMSnSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSinkCurrentLowerInputPowerThreshold, + optIfOMSnSinkCurrentUpperInputPowerThreshold, + optIfOMSnSinkCurrentLowerOutputPowerThreshold, + optIfOMSnSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OMSn interfaces + that support sink functions." + ::= { optIfGroups 16 } + +optIfOMSnSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSrcCurrentSuspectedFlag, + optIfOMSnSrcCurrentOutputPower, + optIfOMSnSrcCurrentLowOutputPower, + optIfOMSnSrcCurrentHighOutputPower, + optIfOMSnSrcCurrentAggregatedInputPower, + optIfOMSnSrcCurrentLowAggregatedInputPower, + optIfOMSnSrcCurrentHighAggregatedInputPower, + optIfOMSnSrcIntervalSuspectedFlag, + optIfOMSnSrcIntervalLastOutputPower, + optIfOMSnSrcIntervalLowOutputPower, + optIfOMSnSrcIntervalHighOutputPower, + optIfOMSnSrcIntervalLastAggregatedInputPower, + optIfOMSnSrcIntervalLowAggregatedInputPower, + optIfOMSnSrcIntervalHighAggregatedInputPower, + optIfOMSnSrcCurDaySuspectedFlag, + optIfOMSnSrcCurDayLowOutputPower, + optIfOMSnSrcCurDayHighOutputPower, + optIfOMSnSrcCurDayLowAggregatedInputPower, + optIfOMSnSrcCurDayHighAggregatedInputPower, + optIfOMSnSrcPrevDaySuspectedFlag, + optIfOMSnSrcPrevDayLastOutputPower, + optIfOMSnSrcPrevDayLowOutputPower, + optIfOMSnSrcPrevDayHighOutputPower, + optIfOMSnSrcPrevDayLastAggregatedInputPower, + + + + optIfOMSnSrcPrevDayLowAggregatedInputPower, + optIfOMSnSrcPrevDayHighAggregatedInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OMSn interfaces that + support source functions." + ::= { optIfGroups 17 } + +optIfOMSnSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSrcCurrentLowerOutputPowerThreshold, + optIfOMSnSrcCurrentUpperOutputPowerThreshold, + optIfOMSnSrcCurrentLowerInputPowerThreshold, + optIfOMSnSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OMSn interfaces that + that support source functions." + ::= { optIfGroups 18 } + +optIfOChGroupCommonGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OChGroup interfaces." + ::= { optIfGroups 19 } + +optIfOChGroupSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSinkCurrentSuspectedFlag, + optIfOChGroupSinkCurrentAggregatedInputPower, + optIfOChGroupSinkCurrentLowAggregatedInputPower, + optIfOChGroupSinkCurrentHighAggregatedInputPower, + optIfOChGroupSinkCurrentOutputPower, + optIfOChGroupSinkCurrentLowOutputPower, + optIfOChGroupSinkCurrentHighOutputPower, + optIfOChGroupSinkIntervalSuspectedFlag, + optIfOChGroupSinkIntervalLastAggregatedInputPower, + optIfOChGroupSinkIntervalLowAggregatedInputPower, + optIfOChGroupSinkIntervalHighAggregatedInputPower, + optIfOChGroupSinkIntervalLastOutputPower, + + + + optIfOChGroupSinkIntervalLowOutputPower, + optIfOChGroupSinkIntervalHighOutputPower, + optIfOChGroupSinkCurDaySuspectedFlag, + optIfOChGroupSinkCurDayLowAggregatedInputPower, + optIfOChGroupSinkCurDayHighAggregatedInputPower, + optIfOChGroupSinkCurDayLowOutputPower, + optIfOChGroupSinkCurDayHighOutputPower, + optIfOChGroupSinkPrevDaySuspectedFlag, + optIfOChGroupSinkPrevDayLastAggregatedInputPower, + optIfOChGroupSinkPrevDayLowAggregatedInputPower, + optIfOChGroupSinkPrevDayHighAggregatedInputPower, + optIfOChGroupSinkPrevDayLastOutputPower, + optIfOChGroupSinkPrevDayLowOutputPower, + optIfOChGroupSinkPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OChGroup interfaces that + support sink functions." + ::= { optIfGroups 20 } + +optIfOChGroupSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSinkCurrentLowerInputPowerThreshold, + optIfOChGroupSinkCurrentUpperInputPowerThreshold, + optIfOChGroupSinkCurrentLowerOutputPowerThreshold, + optIfOChGroupSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OChGroup interfaces + that support sink functions." + ::= { optIfGroups 21 } + +optIfOChGroupSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSrcCurrentSuspectedFlag, + optIfOChGroupSrcCurrentOutputPower, + optIfOChGroupSrcCurrentLowOutputPower, + optIfOChGroupSrcCurrentHighOutputPower, + optIfOChGroupSrcCurrentAggregatedInputPower, + optIfOChGroupSrcCurrentLowAggregatedInputPower, + optIfOChGroupSrcCurrentHighAggregatedInputPower, + optIfOChGroupSrcIntervalSuspectedFlag, + optIfOChGroupSrcIntervalLastOutputPower, + optIfOChGroupSrcIntervalLowOutputPower, + + + + optIfOChGroupSrcIntervalHighOutputPower, + optIfOChGroupSrcIntervalLastAggregatedInputPower, + optIfOChGroupSrcIntervalLowAggregatedInputPower, + optIfOChGroupSrcIntervalHighAggregatedInputPower, + optIfOChGroupSrcCurDaySuspectedFlag, + optIfOChGroupSrcCurDayLowOutputPower, + optIfOChGroupSrcCurDayHighOutputPower, + optIfOChGroupSrcCurDayLowAggregatedInputPower, + optIfOChGroupSrcCurDayHighAggregatedInputPower, + optIfOChGroupSrcPrevDaySuspectedFlag, + optIfOChGroupSrcPrevDayLastOutputPower, + optIfOChGroupSrcPrevDayLowOutputPower, + optIfOChGroupSrcPrevDayHighOutputPower, + optIfOChGroupSrcPrevDayLastAggregatedInputPower, + optIfOChGroupSrcPrevDayLowAggregatedInputPower, + optIfOChGroupSrcPrevDayHighAggregatedInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OChGroup interfaces that + support source functions." + ::= { optIfGroups 22 } + +optIfOChGroupSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSrcCurrentLowerOutputPowerThreshold, + optIfOChGroupSrcCurrentUpperOutputPowerThreshold, + optIfOChGroupSrcCurrentLowerInputPowerThreshold, + optIfOChGroupSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OChGroup interfaces that + that support source functions." + ::= { optIfGroups 23 } + +optIfOChCommonGroup OBJECT-GROUP + OBJECTS { + optIfOChDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OCh interfaces." + ::= { optIfGroups 24 } + + + + +optIfOChSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOChCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OCh interfaces that + support sink functions." + ::= { optIfGroups 25 } + +optIfOChSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChSinkCurrentSuspectedFlag, + optIfOChSinkCurrentInputPower, + optIfOChSinkCurrentLowInputPower, + optIfOChSinkCurrentHighInputPower, + optIfOChSinkIntervalSuspectedFlag, + optIfOChSinkIntervalLastInputPower, + optIfOChSinkIntervalLowInputPower, + optIfOChSinkIntervalHighInputPower, + optIfOChSinkCurDaySuspectedFlag, + optIfOChSinkCurDayLowInputPower, + optIfOChSinkCurDayHighInputPower, + optIfOChSinkPrevDaySuspectedFlag, + optIfOChSinkPrevDayLastInputPower, + optIfOChSinkPrevDayLowInputPower, + optIfOChSinkPrevDayHighInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OCh interfaces that + support sink functions." + ::= { optIfGroups 26 } + +optIfOChSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChSinkCurrentLowerInputPowerThreshold, + optIfOChSinkCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OCh interfaces + that support sink functions." + ::= { optIfGroups 27 } + + + + +optIfOChSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChSrcCurrentSuspectedFlag, + optIfOChSrcCurrentOutputPower, + optIfOChSrcCurrentLowOutputPower, + optIfOChSrcCurrentHighOutputPower, + optIfOChSrcIntervalSuspectedFlag, + optIfOChSrcIntervalLastOutputPower, + optIfOChSrcIntervalLowOutputPower, + optIfOChSrcIntervalHighOutputPower, + optIfOChSrcCurDaySuspectedFlag, + optIfOChSrcCurDayLowOutputPower, + optIfOChSrcCurDayHighOutputPower, + optIfOChSrcPrevDaySuspectedFlag, + optIfOChSrcPrevDayLastOutputPower, + optIfOChSrcPrevDayLowOutputPower, + optIfOChSrcPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OCh interfaces that + support source functions." + ::= { optIfGroups 28 } + +optIfOChSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChSrcCurrentLowerOutputPowerThreshold, + optIfOChSrcCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OCh interfaces + that support source functions." + ::= { optIfGroups 29 } + +optIfOTUkCommonGroup OBJECT-GROUP + OBJECTS { + optIfOTUkDirectionality, + optIfOTUkBitRateK + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTUk interfaces." + ::= { optIfGroups 30 } + + + + +optIfOTUkSourceGroup OBJECT-GROUP + OBJECTS { + optIfOTUkTraceIdentifierTransmitted, + optIfOTUkSourceAdaptActive + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to OTUk interfaces that + support source functions." + ::= { optIfGroups 31 } + +optIfOTUkSinkGroup OBJECT-GROUP + OBJECTS { + optIfOTUkDAPIExpected, + optIfOTUkSAPIExpected, + optIfOTUkTraceIdentifierAccepted, + optIfOTUkTIMDetMode, + optIfOTUkTIMActEnabled, + optIfOTUkDEGThr, + optIfOTUkDEGM, + optIfOTUkSinkAdaptActive, + optIfOTUkSinkFECEnabled, + optIfOTUkCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to OTUk interfaces that + support sink functions." + ::= { optIfGroups 32 } + +optIfGCC0Group OBJECT-GROUP + OBJECTS { + optIfGCC0Application, + optIfGCC0RowStatus + } + STATUS current + DESCRIPTION + "A collection of GCC0 configuration objects." + ::= { optIfGroups 33 } + +optIfODUkGroup OBJECT-GROUP + OBJECTS { + optIfODUkDirectionality, + optIfODUkBitRateK, + optIfODUkTcmFieldsInUse, + optIfODUkPositionSeqCurrentSize, + + + + optIfODUkPositionSeqPosition, + optIfODUkPositionSeqPointer, + optIfODUkTtpPresent + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUk interfaces." + ::= { optIfGroups 34 } + +optIfODUkTtpSourceGroup OBJECT-GROUP + OBJECTS { + optIfODUkTtpTraceIdentifierTransmitted + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all interfaces that support + ODUk trail termination source functions." + ::= { optIfGroups 35 } + +optIfODUkTtpSinkGroup OBJECT-GROUP + OBJECTS { + optIfODUkTtpDAPIExpected, + optIfODUkTtpSAPIExpected, + optIfODUkTtpTraceIdentifierAccepted, + optIfODUkTtpTIMDetMode, + optIfODUkTtpTIMActEnabled, + optIfODUkTtpDEGThr, + optIfODUkTtpDEGM, + optIfODUkTtpCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of ODUk configuration objects + applicable to all interfaces that support + ODUk trail termination sink functions." + ::= { optIfGroups 36 } + +optIfODUkNimGroup OBJECT-GROUP + OBJECTS { + optIfODUkNimDAPIExpected, + optIfODUkNimSAPIExpected, + optIfODUkNimTraceIdentifierAccepted, + optIfODUkNimTIMDetMode, + optIfODUkNimTIMActEnabled, + optIfODUkNimDEGThr, + optIfODUkNimDEGM, + + + + optIfODUkNimCurrentStatus, + optIfODUkNimRowStatus + } + STATUS current + DESCRIPTION + "A collection of ODUk Nim configuration objects." + ::= { optIfGroups 37 } + +optIfGCC12Group OBJECT-GROUP + OBJECTS { + optIfGCC12GCCPassThrough, + optIfGCC12Application, + optIfGCC12RowStatus + } + STATUS current + DESCRIPTION + "A collection of GCC12 configuration objects." + ::= { optIfGroups 38 } + +optIfODUkTCommonGroup OBJECT-GROUP + OBJECTS { + optIfODUkTRowStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances." + ::= { optIfGroups 39 } + +optIfODUkTSourceGroup OBJECT-GROUP + OBJECTS { + optIfODUkTTraceIdentifierTransmitted, + optIfODUkTSourceLockSignalAdminState + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances + that provide source functions." + ::= { optIfGroups 40 } + +optIfODUkTSinkGroup OBJECT-GROUP + OBJECTS { + optIfODUkTDAPIExpected, + optIfODUkTSAPIExpected, + optIfODUkTTraceIdentifierAccepted, + optIfODUkTTIMDetMode, + optIfODUkTTIMActEnabled, + + + + optIfODUkTDEGThr, + optIfODUkTDEGM, + optIfODUkTCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances + that provide sink functions." + ::= { optIfGroups 41 } + +optIfODUkTSinkGroupCtp OBJECT-GROUP + OBJECTS { + optIfODUkTSinkMode, + optIfODUkTSinkLockSignalAdminState + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to ODUkT instances not + colocated with an ODUk TTP that + provide sink functions." + ::= { optIfGroups 42 } + +optIfODUkTNimGroup OBJECT-GROUP + OBJECTS { + optIfODUkTNimDAPIExpected, + optIfODUkTNimSAPIExpected, + optIfODUkTNimTraceIdentifierAccepted, + optIfODUkTNimTIMDetMode, + optIfODUkTNimTIMActEnabled, + optIfODUkTNimDEGThr, + optIfODUkTNimDEGM, + optIfODUkTNimCurrentStatus, + optIfODUkTNimRowStatus + } + STATUS current + DESCRIPTION + "A collection of ODUkT Nim configuration objects." + ::= { optIfGroups 43 } + +-- compliance specifications + +optIfOtnConfigCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Implementation requirements for the OTN configuration + functions defined in this MIB module." + + + + MODULE -- this module + + MANDATORY-GROUPS { + optIfOTMnGroup, + optIfOTSnCommonGroup + } + + GROUP optIfOTSnSourceGroupFull + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + source(2) or bidirectional(3), the corresponding + instance of optIfOTMnReduced has the value false(2), + and the corresponding instance of optIfOTMnInterfaceType + specifies an OTMn interface type of 'IaDI'." + + GROUP optIfOTSnAPRStatusGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support Automatic Power + Reduction functions." + + GROUP optIfOTSnAPRControlGroup + DESCRIPTION + "This group is optional, but is recommended for interfaces + of ifType opticalTransport(196) that provide Automatic + Power Reduction control functions." + + GROUP optIfOTSnSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOTSnSinkGroupFull + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + sink(1) or bidirectional(3), the corresponding + instance of optIfOTMnReduced has the value false(2), + and the corresponding instance of optIfOTMnInterfaceType + specifies an OTMn interface type of 'IaDI'." + + GROUP optIfOMSnCommonGroup + DESCRIPTION + + + + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support access to the OMS + overhead information within the OTN Supervisory Channel." + + GROUP optIfOMSnSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support access to the OMS Overhead + information within the OSC (OTN Supervisory Channel) + for which the corresponding + instance of optIfOMSnDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOChGroupCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannelGroup(219)." + + GROUP optIfOChCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(195)." + + GROUP optIfOChSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfOChDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOTUkCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions." + + GROUP optIfOTUkSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions + and for which the corresponding instance of + optIfOTUkDirectionality has the value source(2) or + bidirectional(3)." + + GROUP optIfOTUkSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions + and for which the corresponding instance of + + + + optIfOTUkDirectionality has the value sink(1) or + bidirectional(3)." + + GROUP optIfGCC0Group + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support GCC0 access functions. + It may be implemented only if the optIfOTUkCommonGroup + is also implemented." + + GROUP optIfODUkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support ODUk layer functions." + + GROUP optIfODUkTtpSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + true(1) and for which the corresponding instance of + optIfODUkDirectionality has the value source(2) or + bidirectional(3). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfODUkTtpSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + true(1) and for which the corresponding instance of + optIfODUkDirectionality has the value sink(1) or + bidirectional(3). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfODUkNimGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + false(2). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfGCC12Group + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support GCC12 access functions. + It may be implemented only if the optIfODUkGroup + + + + is also implemented." + + GROUP optIfODUkTCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring. It may be implemented + only if the optIfODUkGroup is also implemented." + + GROUP optIfODUkTSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It may be implemented only if the optIfODUkGroup is + also implemented." + + GROUP optIfODUkTSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It may be implemented only if the optIfODUkGroup is + also implemented." + + GROUP optIfODUkTSinkGroupCtp + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + optIfODUkTtpPresent is false(2) and + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It may be implemented only if the optIfODUkGroup and + optIfODUkTSinkGroup are also implemented." + + + + GROUP optIfODUkTNimGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support non-intrusive + tandem connection monitoring. It may be implemented + only if the optIfODUkGroup is also implemented." + + ::= { optIfCompl 1 } + +optIfPreOtnPMCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Implementation requirements for Pre-OTN performance + monitoring functions defined in this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { + optIfPerfMonGroup + } + + GROUP optIfOTSnSinkPreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support OTSn sink + functions (i.e., for which the corresponding instance + of optIfOTSnDirectionality -- if implemented -- has + the value sink(1) or bidirectional(3))." + + GROUP optIfOTSnSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOTSnSinkPreOtnPMGroup is a prerequisite for + implementing this group." + + GROUP optIfOTSnSourcePreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support OTSn source + functions (i.e., for which the corresponding instance + of optIfOTSnDirectionality -- if implemented -- has + the value source(2) or bidirectional(3))." + + GROUP optIfOTSnSourcePreOtnPMThresholdGroup + + + + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOTSnSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOMSnSinkPreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalTransport(196) that support OMSn sink functions + (i.e., for which the corresponding instance of + optIfOMSnDirectionality -- if implemented -- has the value + sink(1) or bidirectional(3))." + + GROUP optIfOMSnSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOMSnSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOMSnSourcePreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalTransport(196) that support OMSn source functions + (i.e., for which the corresponding instance of + optIfOMSnDirectionality -- if implemented -- has the value + source(2) or bidirectional(3))." + + GROUP optIfOMSnSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOMSnSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChGroupSinkPreOtnPMGroup + + + + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalChannelGroup(219) that support OChGroup sink functions + (i.e., for which the corresponding instance of + optIfOChGroupDirectionality -- if implemented -- has the value + sink(1) or bidirectional(3))." + + GROUP optIfOChGroupSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChGroupSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChGroupSourcePreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalChannelGroup(219) that support OChGroup source functions + (i.e., for which the corresponding instance of + optIfOChGroupDirectionality -- if implemented -- has the value + source(2) or bidirectional(3))." + + GROUP optIfOChGroupSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChGroupSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChSinkPreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OCh sink functions + (i.e., for which the corresponding instance of + optIfOChDirectionality -- if implemented -- has the + value sink(1) or bidirectional(3))." + + GROUP optIfOChSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + + + + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChSourcePreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OCh source functions + (i.e., for which the corresponding instance of + optIfOChDirectionality -- if implemented -- has the + value source(2) or bidirectional(3))." + + GROUP optIfOChSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + ::= { optIfCompl 2 } + +END diff --git a/mibs/ietf/OSPF-MIB b/mibs/ietf/OSPF-MIB new file mode 100644 index 0000000..7fc7015 --- /dev/null +++ b/mibs/ietf/OSPF-MIB @@ -0,0 +1,4398 @@ +OSPF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Integer32, Unsigned32, IpAddress, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndexOrZero + FROM IF-MIB; + +ospf MODULE-IDENTITY + LAST-UPDATED "200611100000Z" -- November 10, 2006 00:00:00 EST + ORGANIZATION "IETF OSPF Working Group" + CONTACT-INFO + "WG E-Mail: ospf@ietf.org + + WG Chairs: acee@cisco.com + rohit@gmail.com + + Editors: Dan Joyal + Nortel + 600 Technology Park Drive + Billerica, MA 01821 + djoyal@nortel.com + + Piotr Galecki + Airvana + 19 Alpha Road + Chelmsford, MA 01824 + pgalecki@airvana.com + + Spencer Giacalone + CSFB + Eleven Madison Ave + New York, NY 10010-3629 + spencer.giacalone@gmail.com" + + DESCRIPTION + "The MIB module to describe the OSPF Version 2 + Protocol. Note that some objects in this MIB + module may pose a significant security risk. + Refer to the Security Considerations section + in RFC 4750 for more information. + + + + Copyright (C) The IETF Trust (2006). + This version of this MIB module is part of + RFC 4750; see the RFC itself for full legal + notices." + + REVISION "200611100000Z" -- November 10, 2006 09:00:00 EST + DESCRIPTION + "Updated for latest changes to OSPF Version 2: + - updated the General Group with the new + ospfRFC1583Compatibility, ospfReferenceBandwidth + and ospfDiscontinuityTime objects + - added graceful-restart-related objects + - added stub-router-related objects + - updated the Area Table with NSSA-related objects + - added ospfAreaAggregateExtRouteTag object + - added Opaque LSA-related objects + - updates to the Compliances and Security sections + - added area LSA counter table + - added section describing translation of notification + parameters between SNMP versions + - added ospfComplianceObsolete to contain obsolete + object groups + - deprecated ospfExtLsdbTable + See Appendix B of RFC 4750 for more details. + + This version published as part of RFC 4750" + + REVISION "199501201225Z" -- Fri Jan 20 12:25:50 PST 1995 + DESCRIPTION + "The initial SMIv2 revision of this MIB module, published + in RFC 1850." + ::= { mib-2 14 } + +AreaID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OSPF Area Identifier. + Note that the Area ID, in OSPF, has the same format + as an IP address, but has the function of defining + a summarization point for link state advertisements." + SYNTAX IpAddress + +RouterID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A OSPF Router Identifier. + Note that the Router ID, in OSPF, has the same format + as an IP address, but identifies the router independent + + + + of its IP address." + SYNTAX IpAddress + +Metric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The OSPF internal metric. + Note that the OSPF metric is defined as an unsigned value + in the range." + SYNTAX Integer32 (0..'FFFF'h) + +BigMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The OSPF external metric." + SYNTAX Integer32 (0..'FFFFFF'h) + +Status ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of the operability of an OSPF + function or feature. For example, the status + of an interface: 'enabled' indicates that + it is willing to communicate with other OSPF routers, + and 'disabled' indicates that it is not." + SYNTAX INTEGER { enabled (1), disabled (2) } + +PositiveInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "A positive integer. Values in excess are precluded as + unnecessary and prone to interoperability issues." + SYNTAX Integer32 (0..'7FFFFFFF'h) + +HelloRange ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The range of intervals in seconds on which Hello messages + are exchanged." + SYNTAX Integer32 (1..'FFFF'h) + +UpToMaxAge ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + + + + DESCRIPTION + "The values in seconds that one might find or configure + for variables bounded by the maximum age of an LSA." + SYNTAX Integer32 (0..3600) + +DesignatedRouterPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The range of values defined for the priority of a system + for becoming the designated router." + SYNTAX Integer32 (0..'FF'h) + +TOSType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "Type of Service (TOS) is defined as a mapping to the IP + Type of Service Flags as defined in the IP Forwarding + Table MIB + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30 + + The remaining values are left for future definition." + SYNTAX Integer32 (0..30) + +OspfAuthenticationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The authentication type." + SYNTAX INTEGER { + + + + none (0), + simplePassword (1), + md5 (2) + -- reserved for specification by IANA (> 2) + } + +-- OSPF General Variables + +-- Note: These parameters apply globally to the Router's +-- OSPF Process. + +ospfGeneralGroup OBJECT IDENTIFIER ::= { ospf 1 } + + ospfRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + router in the Autonomous System. + By convention, to ensure uniqueness, this + should default to the value of one of the + router's IP interface addresses. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile storage." + REFERENCE + "OSPF Version 2, C.1 Global parameters" + ::= { ospfGeneralGroup 1 } + + ospfAdminStat OBJECT-TYPE + SYNTAX Status + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status of OSPF in the + router. The value 'enabled' denotes that the + OSPF Process is active on at least one interface; + 'disabled' disables it on all interfaces. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile storage." + ::= { ospfGeneralGroup 2 } + + ospfVersionNumber OBJECT-TYPE + SYNTAX INTEGER { version2 (2) } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current version number of the OSPF protocol is 2." + REFERENCE + "OSPF Version 2, Title" + ::= { ospfGeneralGroup 3 } + + ospfAreaBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag to note whether this router is an Area + Border Router." + REFERENCE + "OSPF Version 2, Section 3 Splitting the AS into + Areas" + ::= { ospfGeneralGroup 4 } + + ospfASBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A flag to note whether this router is configured as + an Autonomous System Border Router. + + This object is persistent and when written the + entity SHOULD save the change to non-volatile storage." + REFERENCE + "OSPF Version 2, Section 3.3 Classification of + routers" + ::= { ospfGeneralGroup 5 } + + ospfExternLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of external (LS type-5) link state + advertisements in the link state database." + REFERENCE + "OSPF Version 2, Appendix A.4.5 AS external link + advertisements" + ::= { ospfGeneralGroup 6 } + + ospfExternLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The 32-bit sum of the LS checksums of + the external link state advertisements + contained in the link state database. This sum + can be used to determine if there has been a + change in a router's link state database and + to compare the link state database of two + routers. The value should be treated as unsigned + when comparing two sums of checksums." + ::= { ospfGeneralGroup 7 } + + ospfTOSSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for type-of-service routing. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix F.1.2 Optional TOS + support" + ::= { ospfGeneralGroup 8 } + + ospfOriginateNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of new link state advertisements + that have been originated. This number is + incremented each time the router originates a new + LSA. + + 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 + ospfDiscontinuityTime." + ::= { ospfGeneralGroup 9 } + + ospfRxNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of link state advertisements received + that are determined to be new instantiations. + This number does not include newer instantiations + of self-originated link state advertisements. + + 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 + ospfDiscontinuityTime." + ::= { ospfGeneralGroup 10 } + + ospfExtLsdbLimit OBJECT-TYPE + SYNTAX Integer32 (-1..'7FFFFFFF'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of non-default + AS-external LSAs entries that can be stored in the + link state database. If the value is -1, then + there is no limit. + + When the number of non-default AS-external LSAs + in a router's link state database reaches + ospfExtLsdbLimit, the router enters + overflow state. The router never holds more than + ospfExtLsdbLimit non-default AS-external LSAs + in its database. OspfExtLsdbLimit MUST be set + identically in all routers attached to the OSPF + backbone and/or any regular OSPF area (i.e., + OSPF stub areas and NSSAs are excluded). + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { -1 } + ::= { ospfGeneralGroup 11 } + + ospfMulticastExtensions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit mask indicating whether the router is + forwarding IP multicast (Class D) datagrams + based on the algorithms defined in the + multicast extensions to OSPF. + + Bit 0, if set, indicates that the router can + + + + forward IP multicast datagrams in the router's + directly attached areas (called intra-area + multicast routing). + + Bit 1, if set, indicates that the router can + forward IP multicast datagrams between OSPF + areas (called inter-area multicast routing). + + Bit 2, if set, indicates that the router can + forward IP multicast datagrams between + Autonomous Systems (called inter-AS multicast + routing). + + Only certain combinations of bit settings are + allowed, namely: 0 (no multicast forwarding is + enabled), 1 (intra-area multicasting only), 3 + (intra-area and inter-area multicasting), 5 + (intra-area and inter-AS multicasting), and 7 + (multicasting everywhere). By default, no + multicast forwarding is enabled. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { 0 } + ::= { ospfGeneralGroup 12 } + + ospfExitOverflowInterval OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of seconds that, after entering + OverflowState, a router will attempt to leave + OverflowState. This allows the router to again + originate non-default AS-external LSAs. When + set to 0, the router will not leave + overflow state until restarted. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { 0 } + ::= { ospfGeneralGroup 13 } + + ospfDemandExtensions OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The router's support for demand routing. + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "Extending OSPF to Support Demand Circuits" + ::= { ospfGeneralGroup 14 } + + ospfRFC1583Compatibility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates metrics used to choose among multiple + AS-external LSAs. When RFC1583Compatibility is set to + enabled, only cost will be used when choosing among + multiple AS-external LSAs advertising the same + destination. When RFC1583Compatibility is set to + disabled, preference will be driven first by type of + path using cost only to break ties. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Section 16.4.1 External path + preferences" + ::= { ospfGeneralGroup 15 } + + ospfOpaqueLsaSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The router's support for Opaque LSA types." + REFERENCE + "The OSPF Opaque LSA Option" + ::= { ospfGeneralGroup 16 } + + ospfReferenceBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Reference bandwidth in kilobits/second for + + + + calculating default interface metrics. The + default value is 100,000 KBPS (100 MBPS). + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 17 } + + ospfRestartSupport OBJECT-TYPE + SYNTAX INTEGER { none (1), + plannedOnly (2), + plannedAndUnplanned (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for OSPF graceful restart. + Options include: no restart support, only planned + restarts, or both planned and unplanned restarts. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 18 } + + ospfRestartInterval OBJECT-TYPE + SYNTAX Integer32 (1..1800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Configured OSPF graceful restart timeout interval. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 19 } + + ospfRestartStrictLsaChecking OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if strict LSA checking is enabled for + graceful restart. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + + + + storage." + ::= { ospfGeneralGroup 20 } + + + ospfRestartStatus OBJECT-TYPE + SYNTAX INTEGER { notRestarting (1), + plannedRestart (2), + unplannedRestart (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current status of OSPF graceful restart." + ::= { ospfGeneralGroup 21 } + + ospfRestartAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval." + ::= { ospfGeneralGroup 22 } + + ospfRestartExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- none attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at a + graceful restart. If the value is 'none', no restart + has yet been attempted. If the value is 'inProgress', + a restart attempt is currently underway." + ::= { ospfGeneralGroup 23 } + + ospfAsLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of AS-scope link state + advertisements in the AS-scope link state database." + ::= { ospfGeneralGroup 24 } + + ospfAsLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the LS checksums of + the AS link state advertisements contained in the AS-scope + link state database. This sum can be used to determine + if there has been a change in a router's AS-scope link + state database, and to compare the AS-scope link state + database of two routers." + ::= { ospfGeneralGroup 25 } + + ospfStubRouterSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The router's support for stub router functionality." + REFERENCE + "OSPF Stub Router Advertisement" + ::= { ospfGeneralGroup 26 } + + ospfStubRouterAdvertisement OBJECT-TYPE + SYNTAX INTEGER { + doNotAdvertise (1), + advertise(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the advertisement of + stub router LSAs by the router. The value + doNotAdvertise will result in the advertisement + of a standard router LSA and is the default value. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 27 } + + ospfDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one of this MIB's counters suffered + a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { ospfGeneralGroup 28 } + + +-- OSPF Area Table +-- The OSPF Area Table contains information +-- regarding the various areas. + + ospfAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parameters and + cumulative statistics of the router's attached areas. + The interfaces and virtual links are configured + as part of these areas. Area 0.0.0.0, by definition, + is the backbone area." + REFERENCE + "OSPF Version 2, Section 6 The Area Data Structure" + ::= { ospf 2 } + + ospfAreaEntry OBJECT-TYPE + SYNTAX OspfAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parameters and + cumulative statistics of one of the router's attached areas. + The interfaces and virtual links are configured as part of + these areas. Area 0.0.0.0, by definition, is the backbone + area. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfAreaId } + ::= { ospfAreaTable 1 } + + + + + OspfAreaEntry ::= + SEQUENCE { + ospfAreaId + AreaID, + ospfAuthType + OspfAuthenticationType, + ospfImportAsExtern + INTEGER, + ospfSpfRuns + Counter32, + ospfAreaBdrRtrCount + Gauge32, + ospfAsBdrRtrCount + Gauge32, + ospfAreaLsaCount + Gauge32, + ospfAreaLsaCksumSum + Integer32, + ospfAreaSummary + INTEGER, + ospfAreaStatus + RowStatus, + ospfAreaNssaTranslatorRole + INTEGER, + ospfAreaNssaTranslatorState + INTEGER, + ospfAreaNssaTranslatorStabilityInterval + PositiveInteger, + ospfAreaNssaTranslatorEvents + Counter32 + } + + ospfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally + -- an SMIv1 index + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying an area. + Area ID 0.0.0.0 is used for the OSPF backbone." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaEntry 1 } + + ospfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS obsolete + + + + DESCRIPTION + "The authentication type specified for an area." + REFERENCE + "OSPF Version 2, Appendix D Authentication" + DEFVAL { none } -- no authentication, by default + ::= { ospfAreaEntry 2 } + + ospfImportAsExtern OBJECT-TYPE + SYNTAX INTEGER { + importExternal (1), + importNoExternal (2), + importNssa (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates if an area is a stub area, NSSA, or standard + area. Type-5 AS-external LSAs and type-11 Opaque LSAs are + not imported into stub areas or NSSAs. NSSAs import + AS-external data as type-7 LSAs" + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + DEFVAL { importExternal } + ::= { ospfAreaEntry 3 } + + ospfSpfRuns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the intra-area route + table has been calculated using this area's + link state database. This is typically done + using Dijkstra's algorithm. + + 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 ospfDiscontinuityTime." + ::= { ospfAreaEntry 4 } + + ospfAreaBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Area Border Routers reachable + within this area. This is initially zero and is + calculated in each Shortest Path First (SPF) pass." + + + + ::= { ospfAreaEntry 5 } + + ospfAsBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Autonomous System Border + Routers reachable within this area. This is + initially zero and is calculated in each SPF + pass." + ::= { ospfAreaEntry 6 } + + ospfAreaLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link state advertisements + in this area's link state database, excluding + AS-external LSAs." + ::= { ospfAreaEntry 7 } + + ospfAreaLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit sum of the link state + advertisements' LS checksums contained in this + area's link state database. This sum excludes + external (LS type-5) link state advertisements. + The sum can be used to determine if there has + been a change in a router's link state + database, and to compare the link state database of + two routers. The value should be treated as unsigned + when comparing two sums of checksums." + DEFVAL { 0 } + ::= { ospfAreaEntry 8 } + + ospfAreaSummary OBJECT-TYPE + SYNTAX INTEGER { + noAreaSummary (1), + sendAreaSummary (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The variable ospfAreaSummary controls the + import of summary LSAs into stub and NSSA areas. + It has no effect on other areas. + + If it is noAreaSummary, the router will not + originate summary LSAs into the stub or NSSA area. + It will rely entirely on its default route. + + If it is sendAreaSummary, the router will both + summarize and propagate summary LSAs." + DEFVAL { noAreaSummary } + ::= { ospfAreaEntry 9 } + + ospfAreaStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaEntry 10 } + + ospfAreaNssaTranslatorRole OBJECT-TYPE + SYNTAX INTEGER { always (1), candidate (2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates an NSSA border router's ability to + perform NSSA translation of type-7 LSAs into + type-5 LSAs." + DEFVAL { candidate } + ::= { ospfAreaEntry 11 } + + ospfAreaNssaTranslatorState OBJECT-TYPE + SYNTAX INTEGER { enabled (1), + elected (2), + disabled (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if and how an NSSA border router is + performing NSSA translation of type-7 LSAs into type-5 + + + + LSAs. When this object is set to enabled, the NSSA Border + router's OspfAreaNssaExtTranslatorRole has been set to + always. When this object is set to elected, a candidate + NSSA Border router is Translating type-7 LSAs into type-5. + When this object is set to disabled, a candidate NSSA + border router is NOT translating type-7 LSAs into type-5." + ::= { ospfAreaEntry 12 } + + ospfAreaNssaTranslatorStabilityInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds after an elected translator + determines its services are no longer required, that + it should continue to perform its translation duties." + DEFVAL { 40 } + ::= { ospfAreaEntry 13 } + + ospfAreaNssaTranslatorEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of translator state changes + that have occurred since the last boot-up. + + 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 ospfDiscontinuityTime." + ::= { ospfAreaEntry 14 } + +-- OSPF Area Default Metric Table + + ospfStubAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfStubAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of metrics that will be advertised + by a default Area Border Router into a stub area." + REFERENCE + "OSPF Version 2, Appendix C.2, Area Parameters" + ::= { ospf 3 } + + ospfStubAreaEntry OBJECT-TYPE + SYNTAX OspfStubAreaEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The metric for a given Type of Service that + will be advertised by a default Area Border + Router into a stub area. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2, Area Parameters" + INDEX { ospfStubAreaId, ospfStubTOS } + ::= { ospfStubAreaTable 1 } + + OspfStubAreaEntry ::= + SEQUENCE { + ospfStubAreaId + AreaID, + ospfStubTOS + TOSType, + ospfStubMetric + BigMetric, + ospfStubStatus + RowStatus, + ospfStubMetricType + INTEGER + } + + ospfStubAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The 32-bit identifier for the stub area. On + creation, this can be derived from the + instance." + ::= { ospfStubAreaEntry 1 } + + ospfStubTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service associated with the + metric. On creation, this can be derived from + + + + the instance." + ::= { ospfStubAreaEntry 2 } + + ospfStubMetric OBJECT-TYPE + SYNTAX BigMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value applied at the indicated Type + of Service. By default, this equals the least + metric at the Type of Service among the + interfaces to other areas." + ::= { ospfStubAreaEntry 3 } + + ospfStubStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfStubAreaEntry 4 } + + ospfStubMetricType OBJECT-TYPE + SYNTAX INTEGER { + ospfMetric (1), -- OSPF Metric + comparableCost (2), -- external type 1 + nonComparable (3) -- external type 2 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable displays the type of metric + advertised as a default route." + DEFVAL { ospfMetric } + ::= { ospfStubAreaEntry 5 } + +-- OSPF Link State Database + + ospfLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfLsdbEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The OSPF Process's link state database (LSDB). + The LSDB contains the link state advertisements + from throughout the areas that the device is attached to." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospf 4 } + + ospfLsdbEntry OBJECT-TYPE + SYNTAX OspfLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfLsdbAreaId, ospfLsdbType, + ospfLsdbLsid, ospfLsdbRouterId } + ::= { ospfLsdbTable 1 } + + OspfLsdbEntry ::= + SEQUENCE { + ospfLsdbAreaId + AreaID, + ospfLsdbType + INTEGER, + ospfLsdbLsid + IpAddress, + ospfLsdbRouterId + RouterID, + ospfLsdbSequence + Integer32, + ospfLsdbAge + Integer32, + ospfLsdbChecksum + Integer32, + ospfLsdbAdvertisement + OCTET STRING + } + + ospfLsdbAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The 32-bit identifier of the area from which + the LSA was received." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + + + + ::= { ospfLsdbEntry 1 } + + ospfLsdbType OBJECT-TYPE + SYNTAX INTEGER { + routerLink (1), + networkLink (2), + summaryLink (3), + asSummaryLink (4), + asExternalLink (5), -- but see ospfAsLsdbTable + multicastLink (6), + nssaExternalLink (7), + areaOpaqueLink (10) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertisement + format. + + Note: External link state advertisements are permitted + for backward compatibility, but should be displayed + in the ospfAsLsdbTable rather than here." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfLsdbEntry 2 } + + ospfLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfLsdbEntry 3 } + + ospfLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + + + + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfLsdbEntry 4 } + + ospfLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate Link State + Advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfLsdbEntry 5 } + + ospfLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state advertisement + in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfLsdbEntry 6 } + + ospfLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete contents of + the advertisement, excepting the age field. The age field + is excepted so that an advertisement's age can be + incremented without updating the checksum. The checksum + used is the same that is used for ISO connectionless + + + + datagrams; it is commonly referred to as the + Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfLsdbEntry 7 } + + ospfLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospfLsdbEntry 8 } + +-- Address Range Table + + ospfAreaRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaRangeEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The Address Range Table acts as an adjunct to the Area + Table. It describes those Address Range Summaries that + are configured to be propagated from an Area to reduce + the amount of information about it that is known beyond + its borders. It contains a set of IP address ranges + specified by an IP address/IP network mask pair. + For example, class B address range of X.X.X.X + with a network mask of 255.255.0.0 includes all IP + addresses from X.X.0.0 to X.X.255.255. + + Note that this table is obsoleted and is replaced + by the Area Aggregate Table." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospf 5 } + + ospfAreaRangeEntry OBJECT-TYPE + SYNTAX OspfAreaRangeEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + + + + "A single area address range. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + INDEX { ospfAreaRangeAreaId, ospfAreaRangeNet } + ::= { ospfAreaRangeTable 1 } + + OspfAreaRangeEntry ::= + SEQUENCE { + ospfAreaRangeAreaId + AreaID, + ospfAreaRangeNet + IpAddress, + ospfAreaRangeMask + IpAddress, + ospfAreaRangeStatus + RowStatus, + ospfAreaRangeEffect + INTEGER + } + + ospfAreaRangeAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS obsolete + DESCRIPTION + "The area that the address range is to be found + within." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 1 } + + ospfAreaRangeNet OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS obsolete + DESCRIPTION + "The IP address of the net or subnet indicated + by the range." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 2 } + + + + + ospfAreaRangeMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The subnet mask that pertains to the net or + subnet." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 3 } + + ospfAreaRangeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaRangeEntry 4 } + + ospfAreaRangeEffect OBJECT-TYPE + SYNTAX INTEGER { + advertiseMatching (1), + doNotAdvertiseMatching (2) + } + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Subnets subsumed by ranges either trigger the + advertisement of the indicated summary + (advertiseMatching) or result in the subnet's not + being advertised at all outside the area." + DEFVAL { advertiseMatching } + ::= { ospfAreaRangeEntry 5 } + +-- OSPF Host Table + + ospfHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Host/Metric Table indicates what hosts are directly + + + + attached to the router, what metrics and types + of service should be advertised for them, + and what areas they are found within." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route + parameters" + ::= { ospf 6 } + + ospfHostEntry OBJECT-TYPE + SYNTAX OspfHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A metric to be advertised, for a given type of + service, when a given host is reachable. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfHostIpAddress, ospfHostTOS } + ::= { ospfHostTable 1 } + + OspfHostEntry ::= + SEQUENCE { + ospfHostIpAddress + IpAddress, + ospfHostTOS + TOSType, + ospfHostMetric + Metric, + ospfHostStatus + RowStatus, + ospfHostAreaID + AreaID, + ospfHostCfgAreaID + AreaID + } + + ospfHostIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of the host." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 1 } + + + + ospfHostTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service of the route being configured." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 2 } + + ospfHostMetric OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric to be advertised." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 3 } + + ospfHostStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfHostEntry 4 } + + ospfHostAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The OSPF area to which the host belongs. + Deprecated by ospfHostCfgAreaID." + REFERENCE + "OSPF Version 2, Appendix C.7 Host parameters" + ::= { ospfHostEntry 5 } + + ospfHostCfgAreaID OBJECT-TYPE + SYNTAX AreaID + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "To configure the OSPF area to which the host belongs." + REFERENCE + "OSPF Version 2, Appendix C.7 Host parameters" + ::= { ospfHostEntry 6 } + +-- OSPF Interface Table + + ospfIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Interface Table describes the interfaces + from the viewpoint of OSPF. + It augments the ipAddrTable with OSPF specific information." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + ::= { ospf 7 } + + ospfIfEntry OBJECT-TYPE + SYNTAX OspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF interface entry describes one interface + from the viewpoint of OSPF. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfIfIpAddress, ospfAddressLessIf } + ::= { ospfIfTable 1 } + + OspfIfEntry ::= + SEQUENCE { + ospfIfIpAddress + IpAddress, + ospfAddressLessIf + InterfaceIndexOrZero, + ospfIfAreaId + AreaID, + ospfIfType + INTEGER, + ospfIfAdminStat + + + + Status, + ospfIfRtrPriority + DesignatedRouterPriority, + ospfIfTransitDelay + UpToMaxAge, + ospfIfRetransInterval + UpToMaxAge, + ospfIfHelloInterval + HelloRange, + ospfIfRtrDeadInterval + PositiveInteger, + ospfIfPollInterval + PositiveInteger, + ospfIfState + INTEGER, + ospfIfDesignatedRouter + IpAddress, + ospfIfBackupDesignatedRouter + IpAddress, + ospfIfEvents + Counter32, + ospfIfAuthKey + OCTET STRING, + ospfIfStatus + RowStatus, + ospfIfMulticastForwarding + INTEGER, + ospfIfDemand + TruthValue, + ospfIfAuthType + OspfAuthenticationType, + ospfIfLsaCount + Gauge32, + ospfIfLsaCksumSum + Unsigned32, + ospfIfDesignatedRouterId + RouterID, + ospfIfBackupDesignatedRouterId + RouterID + } + + ospfIfIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of this OSPF interface." + + + + ::= { ospfIfEntry 1 } + + ospfAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "For the purpose of easing the instancing of + addressed and addressless interfaces; this + variable takes the value 0 on interfaces with + IP addresses and the corresponding value of + ifIndex for interfaces having no IP address." + ::= { ospfIfEntry 2 } + + ospfIfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the area + to which the interface connects. Area ID + 0.0.0.0 is used for the OSPF backbone." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 3 } + + ospfIfType OBJECT-TYPE + SYNTAX INTEGER { + broadcast (1), + nbma (2), + pointToPoint (3), + pointToMultipoint (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPF interface type. + By way of a default, this field may be intuited + from the corresponding value of ifType. + Broadcast LANs, such as Ethernet and IEEE 802.5, + take the value 'broadcast', X.25 and similar + technologies take the value 'nbma', and links + that are definitively point to point take the + value 'pointToPoint'." + ::= { ospfIfEntry 4 } + + ospfIfAdminStat OBJECT-TYPE + SYNTAX Status + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPF interface's administrative status. + The value formed on the interface, and the interface + will be advertised as an internal route to some area. + The value 'disabled' denotes that the interface is + external to OSPF." + DEFVAL { enabled } + ::= { ospfIfEntry 5 } + + ospfIfRtrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this interface. Used in + multi-access networks, this field is used in + the designated router election algorithm. The + value 0 signifies that the router is not eligible + to become the designated router on this particular + network. In the event of a tie in this value, + routers will use their Router ID as a tie breaker." + DEFVAL { 1 } + ::= { ospfIfEntry 6 } + + ospfIfTransitDelay OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a link state update packet over this + interface. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 1 } + ::= { ospfIfEntry 7 } + + ospfIfRetransInterval OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link state advertisement + retransmissions, for adjacencies belonging to this + interface. This value is also used when retransmitting + + + + database description and Link State request packets. + Note that minimal value SHOULD be 1 second." + DEFVAL { 5 } + ::= { ospfIfEntry 8 } + + ospfIfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the Hello packets + that the router sends on the interface. This value must be + the same for all routers attached to a common network." + DEFVAL { 10 } + ::= { ospfIfEntry 9 } + + ospfIfRtrDeadInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello packets have + not been seen before its neighbors declare the router down. + This should be some multiple of the Hello interval. This + value must be the same for all routers attached to a common + network." + DEFVAL { 40 } + ::= { ospfIfEntry 10 } + + ospfIfPollInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The larger time interval, in seconds, between the Hello + packets sent to an inactive non-broadcast multi-access + neighbor." + DEFVAL { 120 } + ::= { ospfIfEntry 11 } + + ospfIfState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + loopback (2), + waiting (3), + + + + pointToPoint (4), + designatedRouter (5), + backupDesignatedRouter (6), + otherDesignatedRouter (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OSPF Interface State." + DEFVAL { down } + ::= { ospfIfEntry 12 } + + ospfIfDesignatedRouter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the designated router." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 13 } + + ospfIfBackupDesignatedRouter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the backup designated + router." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 14 } + + ospfIfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this OSPF interface has + changed its state or an error has occurred. + + 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 ospfDiscontinuityTime." + ::= { ospfIfEntry 15 } + + ospfIfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The cleartext password used as an OSPF + authentication key when simplePassword security + is enabled. This object does not access any OSPF + cryptogaphic (e.g., MD5) authentication key under + any circumstance. + + If the key length is shorter than 8 octets, the + agent will left adjust and zero fill to 8 octets. + + Unauthenticated interfaces need no authentication + key, and simple password authentication cannot use + a key of more than 8 octets. + + Note that the use of simplePassword authentication + is NOT recommended when there is concern regarding + attack upon the OSPF system. SimplePassword + authentication is only sufficient to protect against + accidental misconfigurations because it re-uses + cleartext passwords [RFC1704]. + + When read, ospfIfAuthKey always returns an octet + string of length zero." + REFERENCE + "OSPF Version 2, Section 9 The Interface Data + Structure" + DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0 + ::= { ospfIfEntry 16 } + + ospfIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfIfEntry 17 } + + ospfIfMulticastForwarding OBJECT-TYPE + SYNTAX INTEGER { + blocked (1), -- no multicast forwarding + multicast (2), -- using multicast address + unicast (3) -- to each OSPF neighbor + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The way multicasts should be forwarded on this + interface: not forwarded, forwarded as data + link multicasts, or forwarded as data link + unicasts. Data link multicasting is not + meaningful on point-to-point and NBMA interfaces, + and setting ospfMulticastForwarding to 0 effectively + disables all multicast forwarding." + DEFVAL { blocked } + ::= { ospfIfEntry 18 } + + ospfIfDemand OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether Demand OSPF procedures (hello + suppression to FULL neighbors and setting the + DoNotAge flag on propagated LSAs) should be + performed on this interface." + DEFVAL { false } + ::= { ospfIfEntry 19 } + + ospfIfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication type specified for an interface. + + Note that this object can be used to engage + in significant attacks against an OSPF router." + REFERENCE + "OSPF Version 2, Appendix D Authentication" + DEFVAL { none } -- no authentication, by default + ::= { ospfIfEntry 20 } + + ospfIfLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link-local link state advertisements + in this interface's link-local link state database." + ::= { ospfIfEntry 21 } + + + + ospfIfLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the Link State + Advertisements' LS checksums contained in this + interface's link-local link state database. + The sum can be used to determine if there has + been a change in the interface's link state + database and to compare the interface link state + database of routers attached to the same subnet." + ::= { ospfIfEntry 22 } + + ospfIfDesignatedRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the designated router." + ::= { ospfIfEntry 23 } + + ospfIfBackupDesignatedRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the backup designated router." + ::= { ospfIfEntry 24 } + +-- OSPF Interface Metric Table + + ospfIfMetricTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfIfMetricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Metric Table describes the metrics to be advertised + for a specified interface at the various types of service. + As such, this table is an adjunct of the OSPF Interface + Table. + + Types of service, as defined by RFC 791, have the ability + to request low delay, high bandwidth, or reliable linkage. + + For the purposes of this specification, the measure of + bandwidth: + + + + + Metric = referenceBandwidth / ifSpeed + + is the default value. + The default reference bandwidth is 10^8. + For multiple link interfaces, note that ifSpeed is the sum + of the individual link speeds. This yields a number having + the following typical values: + + Network Type/bit rate Metric + + >= 100 MBPS 1 + Ethernet/802.3 10 + E1 48 + T1 (ESF) 65 + 64 KBPS 1562 + 56 KBPS 1785 + 19.2 KBPS 5208 + 9.6 KBPS 10416 + + Routes that are not specified use the default + (TOS 0) metric. + + Note that the default reference bandwidth can be configured + using the general group object ospfReferenceBandwidth." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + ::= { ospf 8 } + + ospfIfMetricEntry OBJECT-TYPE + SYNTAX OspfIfMetricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular TOS metric for a non-virtual interface + identified by the interface index. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + INDEX { ospfIfMetricIpAddress, + ospfIfMetricAddressLessIf, + ospfIfMetricTOS } + ::= { ospfIfMetricTable 1 } + + + + + OspfIfMetricEntry ::= + SEQUENCE { + ospfIfMetricIpAddress + IpAddress, + ospfIfMetricAddressLessIf + InterfaceIndexOrZero, + ospfIfMetricTOS + TOSType, + ospfIfMetricValue + Metric, + ospfIfMetricStatus + RowStatus + } + + ospfIfMetricIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of this OSPF interface. On row + creation, this can be derived from the instance." + ::= { ospfIfMetricEntry 1 } + + ospfIfMetricAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "For the purpose of easing the instancing of + addressed and addressless interfaces; this + variable takes the value 0 on interfaces with + IP addresses and the value of ifIndex for + interfaces having no IP address. On row + creation, this can be derived from the instance." + ::= { ospfIfMetricEntry 2 } + + ospfIfMetricTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service metric being referenced. + On row creation, this can be derived from the + instance." + ::= { ospfIfMetricEntry 3 } + + + + ospfIfMetricValue OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric of using this Type of Service on + this interface. The default value of the TOS 0 + metric is 10^8 / ifSpeed." + ::= { ospfIfMetricEntry 4 } + + ospfIfMetricStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfIfMetricEntry 5 } + +-- OSPF Virtual Interface Table + + ospfVirtIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about this router's virtual interfaces + that the OSPF Process is configured to carry on." + REFERENCE + "OSPF Version 2, Appendix C.4 Virtual link + parameters" + ::= { ospf 9 } + + ospfVirtIfEntry OBJECT-TYPE + SYNTAX OspfVirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single virtual interface. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + + + + INDEX { ospfVirtIfAreaId, ospfVirtIfNeighbor } + ::= { ospfVirtIfTable 1 } + + OspfVirtIfEntry ::= + SEQUENCE { + ospfVirtIfAreaId + AreaID, + ospfVirtIfNeighbor + RouterID, + ospfVirtIfTransitDelay + UpToMaxAge, + ospfVirtIfRetransInterval + UpToMaxAge, + ospfVirtIfHelloInterval + HelloRange, + ospfVirtIfRtrDeadInterval + PositiveInteger, + ospfVirtIfState + INTEGER, + ospfVirtIfEvents + Counter32, + ospfVirtIfAuthKey + OCTET STRING, + ospfVirtIfStatus + RowStatus, + ospfVirtIfAuthType + OspfAuthenticationType, + ospfVirtIfLsaCount + Gauge32, + ospfVirtIfLsaCksumSum + Unsigned32 + } + + ospfVirtIfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The transit area that the virtual link + traverses. By definition, this is not 0.0.0.0." + ::= { ospfVirtIfEntry 1 } + + ospfVirtIfNeighbor OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + + + + DESCRIPTION + "The Router ID of the virtual neighbor." + ::= { ospfVirtIfEntry 2 } + + ospfVirtIfTransitDelay OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a Link State update packet over this + interface. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 1 } + ::= { ospfVirtIfEntry 3 } + + ospfVirtIfRetransInterval OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link state + avertisement retransmissions, for adjacencies + belonging to this interface. This value is + also used when retransmitting database + description and Link State request packets. This + value should be well over the expected + round-trip time. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 5 } + ::= { ospfVirtIfEntry 4 } + + ospfVirtIfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the + Hello packets that the router sends on the + interface. This value must be the same for the + virtual neighbor." + DEFVAL { 10 } + ::= { ospfVirtIfEntry 5 } + + ospfVirtIfRtrDeadInterval OBJECT-TYPE + + + + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello + packets have not been seen before its + neighbors declare the router down. This should be + some multiple of the Hello interval. This + value must be the same for the virtual neighbor." + DEFVAL { 60 } + ::= { ospfVirtIfEntry 6 } + + ospfVirtIfState OBJECT-TYPE + SYNTAX INTEGER { + down (1), -- these use the same encoding + pointToPoint (4) -- as the ospfIfTable + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OSPF virtual interface states." + DEFVAL { down } + ::= { ospfVirtIfEntry 7 } + + ospfVirtIfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of state changes or error events on + this virtual link. + + 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 ospfDiscontinuityTime." + ::= { ospfVirtIfEntry 8 } + + ospfVirtIfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cleartext password used as an OSPF + authentication key when simplePassword security + is enabled. This object does not access any OSPF + cryptogaphic (e.g., MD5) authentication key under + any circumstance. + + + + If the key length is shorter than 8 octets, the + agent will left adjust and zero fill to 8 octets. + + Unauthenticated interfaces need no authentication + key, and simple password authentication cannot use + a key of more than 8 octets. + + Note that the use of simplePassword authentication + is NOT recommended when there is concern regarding + attack upon the OSPF system. SimplePassword + authentication is only sufficient to protect against + accidental misconfigurations because it re-uses + cleartext passwords. [RFC1704] + + When read, ospfIfAuthKey always returns an octet + string of length zero." + REFERENCE + "OSPF Version 2, Section 9 The Interface Data + Structure" + DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0 + ::= { ospfVirtIfEntry 9 } + + ospfVirtIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfVirtIfEntry 10 } + + ospfVirtIfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication type specified for a virtual interface. + + Note that this object can be used to engage + in significant attacks against an OSPF router." + REFERENCE + "OSPF Version 2, Appendix E Authentication" + DEFVAL { none } -- no authentication, by default + + + + ::= { ospfVirtIfEntry 11 } + + ospfVirtIfLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link-local link state advertisements + in this virtual interface's link-local link state database." + ::= { ospfVirtIfEntry 12 } + + ospfVirtIfLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the link state + advertisements' LS checksums contained in this + virtual interface's link-local link state database. + The sum can be used to determine if there has + been a change in the virtual interface's link state + database, and to compare the virtual interface + link state database of the virtual neighbors." + ::= { ospfVirtIfEntry 13 } + +-- OSPF Neighbor Table + + ospfNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table describing all non-virtual neighbors + in the locality of the OSPF router." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + ::= { ospf 10 } + + ospfNbrEntry OBJECT-TYPE + SYNTAX OspfNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single neighbor. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + + + + storage." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + INDEX { ospfNbrIpAddr, ospfNbrAddressLessIndex } + ::= { ospfNbrTable 1 } + + OspfNbrEntry ::= + SEQUENCE { + ospfNbrIpAddr + IpAddress, + ospfNbrAddressLessIndex + InterfaceIndexOrZero, + ospfNbrRtrId + RouterID, + ospfNbrOptions + Integer32, + ospfNbrPriority + DesignatedRouterPriority, + ospfNbrState + INTEGER, + ospfNbrEvents + Counter32, + ospfNbrLsRetransQLen + Gauge32, + ospfNbmaNbrStatus + RowStatus, + ospfNbmaNbrPermanence + INTEGER, + ospfNbrHelloSuppressed + TruthValue, + ospfNbrRestartHelperStatus + INTEGER, + ospfNbrRestartHelperAge + Unsigned32, + ospfNbrRestartHelperExitReason + INTEGER + } + + ospfNbrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address this neighbor is using in its + IP source address. Note that, on addressless + links, this will not be 0.0.0.0 but the + + + + address of another of the neighbor's interfaces." + ::= { ospfNbrEntry 1 } + + ospfNbrAddressLessIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "On an interface having an IP address, zero. + On addressless interfaces, the corresponding + value of ifIndex in the Internet Standard MIB. + On row creation, this can be derived from the + instance." + ::= { ospfNbrEntry 2 } + + ospfNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 32-bit integer (represented as a type + IpAddress) uniquely identifying the neighboring + router in the Autonomous System." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfNbrEntry 3 } + + ospfNbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask corresponding to the neighbor's + options field. + + Bit 0, if set, indicates that the system will + operate on Type of Service metrics other than + TOS 0. If zero, the neighbor will ignore all + metrics except the TOS 0 metric. + + Bit 1, if set, indicates that the associated + area accepts and operates on external + information; if zero, it is a stub area. + + Bit 2, if set, indicates that the system is + capable of routing IP multicast datagrams, that is + that it implements the multicast extensions to + OSPF. + + + + Bit 3, if set, indicates that the associated + area is an NSSA. These areas are capable of + carrying type-7 external advertisements, which + are translated into type-5 external advertisements + at NSSA borders." + REFERENCE + "OSPF Version 2, Section 12.1.2 Options" + DEFVAL { 0 } + ::= { ospfNbrEntry 4 } + + ospfNbrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this neighbor in the designated + router election algorithm. The value 0 signifies + that the neighbor is not eligible to become + the designated router on this particular network." + + DEFVAL { 1 } + ::= { ospfNbrEntry 5 } + + ospfNbrState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + attempt (2), + init (3), + twoWay (4), + exchangeStart (5), + exchange (6), + loading (7), + full (8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the relationship with this neighbor." + REFERENCE + "OSPF Version 2, Section 10.1 Neighbor States" + DEFVAL { down } + ::= { ospfNbrEntry 6 } + + ospfNbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times this neighbor relationship + has changed state or an error has occurred. + + 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 ospfDiscontinuityTime." + ::= { ospfNbrEntry 7 } + + ospfNbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfNbrEntry 8 } + + ospfNbmaNbrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfNbrEntry 9 } + + ospfNbmaNbrPermanence OBJECT-TYPE + SYNTAX INTEGER { + dynamic (1), -- learned through protocol + permanent (2) -- configured address + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable displays the status of the entry; + 'dynamic' and 'permanent' refer to how the neighbor + became known." + DEFVAL { permanent } + ::= { ospfNbrEntry 10 } + + ospfNbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor." + ::= { ospfNbrEntry 11 } + + ospfNbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a graceful restart helper for the neighbor." + ::= { ospfNbrEntry 12 } + + ospfNbrRestartHelperAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfNbrEntry 13 } + + ospfNbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a graceful restart helper for the neighbor." + ::= { ospfNbrEntry 14 } + +-- OSPF Virtual Neighbor Table + + + + + ospfVirtNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes all virtual neighbors. + Since virtual links are configured + in the Virtual Interface Table, this table is read-only." + REFERENCE + "OSPF Version 2, Section 15 Virtual Links" + ::= { ospf 11 } + + ospfVirtNbrEntry OBJECT-TYPE + SYNTAX OspfVirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Virtual neighbor information." + INDEX { ospfVirtNbrArea, ospfVirtNbrRtrId } + ::= { ospfVirtNbrTable 1 } + + OspfVirtNbrEntry ::= + SEQUENCE { + ospfVirtNbrArea + AreaID, + ospfVirtNbrRtrId + RouterID, + ospfVirtNbrIpAddr + IpAddress, + ospfVirtNbrOptions + Integer32, + ospfVirtNbrState + INTEGER, + ospfVirtNbrEvents + Counter32, + ospfVirtNbrLsRetransQLen + Gauge32, + ospfVirtNbrHelloSuppressed + TruthValue, + ospfVirtNbrRestartHelperStatus + INTEGER, + ospfVirtNbrRestartHelperAge + Unsigned32, + ospfVirtNbrRestartHelperExitReason + INTEGER + } + + ospfVirtNbrArea OBJECT-TYPE + + + + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Transit Area Identifier." + ::= { ospfVirtNbrEntry 1 } + + ospfVirtNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + neighboring router in the Autonomous System." + ::= { ospfVirtNbrEntry 2 } + + ospfVirtNbrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address this virtual neighbor is using." + ::= { ospfVirtNbrEntry 3 } + + ospfVirtNbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask corresponding to the neighbor's + options field. + + Bit 1, if set, indicates that the system will + operate on Type of Service metrics other than + TOS 0. If zero, the neighbor will ignore all + metrics except the TOS 0 metric. + + Bit 2, if set, indicates that the system is + network multicast capable, i.e., that it + implements OSPF multicast routing." + ::= { ospfVirtNbrEntry 4 } + + ospfVirtNbrState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + attempt (2), + + + + init (3), + twoWay (4), + exchangeStart (5), + exchange (6), + loading (7), + full (8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the virtual neighbor relationship." + ::= { ospfVirtNbrEntry 5 } + + ospfVirtNbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this virtual link has + changed its state or an error has occurred. + + 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 ospfDiscontinuityTime." + ::= { ospfVirtNbrEntry 6 } + + ospfVirtNbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfVirtNbrEntry 7 } + + ospfVirtNbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor." + ::= { ospfVirtNbrEntry 8 } + + ospfVirtNbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a graceful restart helper for the neighbor." + ::= { ospfVirtNbrEntry 9 } + + ospfVirtNbrRestartHelperAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfVirtNbrEntry 10 } + + ospfVirtNbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a graceful restart helper for the neighbor." + ::= { ospfVirtNbrEntry 11 } + +-- OSPF Link State Database, External + + ospfExtLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfExtLsdbEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The OSPF Process's external LSA link state database. + + This table is identical to the OSPF LSDB Table + in format, but contains only external link state + advertisements. The purpose is to allow external + + + + LSAs to be displayed once for the router rather + than once in each non-stub area. + + Note that external LSAs are also in the AS-scope link state + database." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospf 12 } + + ospfExtLsdbEntry OBJECT-TYPE + SYNTAX OspfExtLsdbEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A single link state advertisement." + INDEX { ospfExtLsdbType, ospfExtLsdbLsid, ospfExtLsdbRouterId } + ::= { ospfExtLsdbTable 1 } + + OspfExtLsdbEntry ::= + SEQUENCE { + ospfExtLsdbType + INTEGER, + ospfExtLsdbLsid + IpAddress, + ospfExtLsdbRouterId + RouterID, + ospfExtLsdbSequence + Integer32, + ospfExtLsdbAge + Integer32, + ospfExtLsdbChecksum + Integer32, + ospfExtLsdbAdvertisement + OCTET STRING + } + + ospfExtLsdbType OBJECT-TYPE + SYNTAX INTEGER { + asExternalLink (5) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertisement + format." + REFERENCE + + + + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + + ::= { ospfExtLsdbEntry 1 } + + ospfExtLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfExtLsdbEntry 2 } + + ospfExtLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfExtLsdbEntry 3 } + + ospfExtLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfExtLsdbEntry 4 } + + + + ospfExtLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfExtLsdbEntry 5 } + + ospfExtLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfExtLsdbEntry 6 } + + ospfExtLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(36)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospfExtLsdbEntry 7 } + +-- OSPF Use of the CIDR Route Table + + ospfRouteGroup OBJECT IDENTIFIER ::= { ospf 13 } + +-- The IP Forwarding Table defines a number of objects for use by +-- the routing protocol to externalize its information. Most of + + + +-- the variables (ipForwardDest, ipForwardMask, ipForwardPolicy, +-- ipForwardNextHop, ipForwardIfIndex, ipForwardType, +-- ipForwardProto, ipForwardAge, and ipForwardNextHopAS) are +-- defined there. + +-- Those that leave some discretion are defined here. + +-- ipCidrRouteProto is, of course, ospf (13). + +-- ipCidrRouteAge is the time since the route was first +-- calculated, as opposed to the time since the last SPF run. +-- ipCidrRouteInfo is an OBJECT IDENTIFIER for use by the routing +-- protocol. The following values shall be found there depending +-- on the way the route was calculated. + + ospfIntraArea OBJECT IDENTIFIER ::= { ospfRouteGroup 1 } + ospfInterArea OBJECT IDENTIFIER ::= { ospfRouteGroup 2 } + ospfExternalType1 OBJECT IDENTIFIER ::= { ospfRouteGroup 3 } + ospfExternalType2 OBJECT IDENTIFIER ::= { ospfRouteGroup 4 } + +-- ipCidrRouteMetric1 is, by definition, the primary routing +-- metric. Therefore, it should be the metric that route +-- selection is based on. For intra-area and inter-area routes, +-- it is an OSPF metric. For External Type 1 (comparable value) +-- routes, it is an OSPF metric plus the External Metric. For +-- external Type 2 (non-comparable value) routes, it is the +-- external metric. + +-- ipCidrRouteMetric2 is, by definition, a secondary routing +-- metric. Therefore, it should be the metric that breaks a tie +-- among routes having equal metric1 values and the same +-- calculation rule. For intra-area, inter-area routes, and +-- External Type 1 (comparable value) routes, it is unused. For +-- External Type 2 (non-comparable value) routes, it is the metric +-- to the AS border router. + +-- ipCidrRouteMetric3, ipCidrRouteMetric4, and ipCidrRouteMetric5 +-- are unused. + +-- The OSPF Area Aggregate Table +-- +-- This table replaces the OSPF Area Summary Table, being an +-- extension of that for CIDR routers. + + ospfAreaAggregateTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The Area Aggregate Table acts as an adjunct + to the Area Table. It describes those address aggregates + that are configured to be propagated from an area. + Its purpose is to reduce the amount of information + that is known beyond an Area's borders. + + It contains a set of IP address ranges + specified by an IP address/IP network mask pair. + For example, a class B address range of X.X.X.X + with a network mask of 255.255.0.0 includes all IP + addresses from X.X.0.0 to X.X.255.255. + + Note that if ranges are configured such that one range + subsumes another range (e.g., 10.0.0.0 mask 255.0.0.0 + and 10.1.0.0 mask 255.255.0.0), + the most specific match is the preferred one." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospf 14 } + + ospfAreaAggregateEntry OBJECT-TYPE + SYNTAX OspfAreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single area aggregate entry. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + INDEX { ospfAreaAggregateAreaID, ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, ospfAreaAggregateMask } + ::= { ospfAreaAggregateTable 1 } + + OspfAreaAggregateEntry ::= + SEQUENCE { + ospfAreaAggregateAreaID + AreaID, + ospfAreaAggregateLsdbType + INTEGER, + ospfAreaAggregateNet + IpAddress, + ospfAreaAggregateMask + IpAddress, + ospfAreaAggregateStatus + + + + RowStatus, + ospfAreaAggregateEffect + INTEGER, + ospfAreaAggregateExtRouteTag + Unsigned32 + } + + ospfAreaAggregateAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The area within which the address aggregate is to be + found." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 1 } + + ospfAreaAggregateLsdbType OBJECT-TYPE + SYNTAX INTEGER { + summaryLink (3), + nssaExternalLink (7) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The type of the address aggregate. This field + specifies the Lsdb type that this address + aggregate applies to." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfAreaAggregateEntry 2 } + + ospfAreaAggregateNet OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of the net or subnet indicated + by the range." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 3 } + + + + + ospfAreaAggregateMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The subnet mask that pertains to the net or + subnet." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 4 } + + ospfAreaAggregateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaAggregateEntry 5 } + + ospfAreaAggregateEffect OBJECT-TYPE + SYNTAX INTEGER { + advertiseMatching (1), + doNotAdvertiseMatching (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Subnets subsumed by ranges either trigger the + advertisement of the indicated aggregate + (advertiseMatching) or result in the subnet's not + being advertised at all outside the area." + DEFVAL { advertiseMatching } + ::= { ospfAreaAggregateEntry 6 } + + ospfAreaAggregateExtRouteTag OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "External route tag to be included in NSSA (type-7) + LSAs." + + + + DEFVAL { 0 } + ::= { ospfAreaAggregateEntry 7 } + +-- OSPF Link State Database, link-local for non-virtual links + + + ospfLocalLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's link-local link state database + for non-virtual links. + This table is identical to the OSPF LSDB Table + in format, but contains only link-local Link State + Advertisements for non-virtual links. The purpose is + to allow link-local LSAs to be displayed for each + non-virtual interface. This table is implemented to + support type-9 LSAs that are defined + in 'The OSPF Opaque LSA Option'." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements + and The OSPF Opaque LSA Option" + ::= { ospf 17 } + + ospfLocalLsdbEntry OBJECT-TYPE + SYNTAX OspfLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfLocalLsdbIpAddress, ospfLocalLsdbAddressLessIf, + ospfLocalLsdbType, ospfLocalLsdbLsid, ospfLocalLsdbRouterId + } + ::= { ospfLocalLsdbTable 1 } + + OspfLocalLsdbEntry ::= + SEQUENCE { + ospfLocalLsdbIpAddress + IpAddress, + ospfLocalLsdbAddressLessIf + InterfaceIndexOrZero, + ospfLocalLsdbType + INTEGER, + ospfLocalLsdbLsid + IpAddress, + ospfLocalLsdbRouterId + RouterID, + + + + ospfLocalLsdbSequence + Integer32, + ospfLocalLsdbAge + Integer32, + ospfLocalLsdbChecksum + Integer32, + ospfLocalLsdbAdvertisement + OCTET STRING + } + + ospfLocalLsdbIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the interface from + which the LSA was received if the interface is + numbered." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfLocalLsdbEntry 1 } + + ospfLocalLsdbAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of the interface from + which the LSA was received if the interface is + unnumbered." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfLocalLsdbEntry 2 } + + ospfLocalLsdbType OBJECT-TYPE + SYNTAX INTEGER { localOpaqueLink (9) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfLocalLsdbEntry 3 } + + ospfLocalLsdbLsid OBJECT-TYPE + + + + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a 32-bit identifier in IP address format; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfLocalLsdbEntry 4 } + + ospfLocalLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfLocalLsdbEntry 5 } + + ospfLocalLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfLocalLsdbEntry 6 } + + ospfLocalLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfLocalLsdbEntry 7 } + + ospfLocalLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfLocalLsdbEntry 8 } + + ospfLocalLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospfLocalLsdbEntry 9 } + +-- OSPF Link State Database, link-local for virtual Links + + ospfVirtLocalLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's link-local link state database + for virtual links. + + + + + This table is identical to the OSPF LSDB Table + in format, but contains only link-local Link State + Advertisements for virtual links. The purpose is to + allow link-local LSAs to be displayed for each virtual + interface. This table is implemented to support type-9 LSAs + that are defined in 'The OSPF Opaque LSA Option'." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements and The OSPF Opaque LSA Option" + ::= { ospf 18 } + + ospfVirtLocalLsdbEntry OBJECT-TYPE + SYNTAX OspfVirtLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfVirtLocalLsdbTransitArea, + ospfVirtLocalLsdbNeighbor, + ospfVirtLocalLsdbType, + ospfVirtLocalLsdbLsid, + ospfVirtLocalLsdbRouterId + } + ::= { ospfVirtLocalLsdbTable 1 } + + OspfVirtLocalLsdbEntry ::= + SEQUENCE { + ospfVirtLocalLsdbTransitArea + AreaID, + ospfVirtLocalLsdbNeighbor + RouterID, + ospfVirtLocalLsdbType + INTEGER, + ospfVirtLocalLsdbLsid + IpAddress, + ospfVirtLocalLsdbRouterId + RouterID, + ospfVirtLocalLsdbSequence + Integer32, + ospfVirtLocalLsdbAge + Integer32, + ospfVirtLocalLsdbChecksum + Integer32, + ospfVirtLocalLsdbAdvertisement + OCTET STRING + } + + ospfVirtLocalLsdbTransitArea OBJECT-TYPE + + + + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The transit area that the virtual link + traverses. By definition, this is not 0.0.0.0." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfVirtLocalLsdbEntry 1 } + + ospfVirtLocalLsdbNeighbor OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Router ID of the virtual neighbor." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfVirtLocalLsdbEntry 2 } + + ospfVirtLocalLsdbType OBJECT-TYPE + SYNTAX INTEGER { localOpaqueLink (9) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfVirtLocalLsdbEntry 3 } + + ospfVirtLocalLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a 32-bit identifier in IP address format; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfVirtLocalLsdbEntry 4 } + + ospfVirtLocalLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfVirtLocalLsdbEntry 5 } + + ospfVirtLocalLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfVirtLocalLsdbEntry 6 } + + ospfVirtLocalLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfVirtLocalLsdbEntry 7 } + + ospfVirtLocalLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + + + + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly + referred to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfVirtLocalLsdbEntry 8 } + + ospfVirtLocalLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + ::= { ospfVirtLocalLsdbEntry 9 } + +-- OSPF Link State Database, AS-scope + + ospfAsLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAsLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's AS-scope LSA link state database. + The database contains the AS-scope Link State + Advertisements from throughout the areas that + the device is attached to. + + This table is identical to the OSPF LSDB Table + in format, but contains only AS-scope Link State + Advertisements. The purpose is to allow AS-scope + LSAs to be displayed once for the router rather + than once in each non-stub area." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospf 19 } + + ospfAsLsdbEntry OBJECT-TYPE + SYNTAX OspfAsLsdbEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfAsLsdbType, ospfAsLsdbLsid, ospfAsLsdbRouterId } + ::= { ospfAsLsdbTable 1 } + + OspfAsLsdbEntry ::= + SEQUENCE { + ospfAsLsdbType + INTEGER, + ospfAsLsdbLsid + IpAddress, + ospfAsLsdbRouterId + RouterID, + ospfAsLsdbSequence + Integer32, + ospfAsLsdbAge + Integer32, + ospfAsLsdbChecksum + Integer32, + ospfAsLsdbAdvertisement + OCTET STRING + } + + ospfAsLsdbType OBJECT-TYPE + SYNTAX INTEGER { + asExternalLink (5), + asOpaqueLink (11) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfAsLsdbEntry 1 } + + ospfAsLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + + + + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfAsLsdbEntry 2 } + + ospfAsLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfAsLsdbEntry 3 } + + ospfAsLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfAsLsdbEntry 4 } + + ospfAsLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfAsLsdbEntry 5 } + + + + + ospfAsLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfAsLsdbEntry 6 } + + ospfAsLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + ::= { ospfAsLsdbEntry 7 } + + -- OSPF Area LSA Counter Table + + ospfAreaLsaCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaLsaCountEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maintains per-area, per-LSA-type counters" + ::= { ospf 20 } + + ospfAreaLsaCountEntry OBJECT-TYPE + SYNTAX OspfAreaLsaCountEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with a number of link advertisements + + + + of a given type for a given area." + INDEX { ospfAreaLsaCountAreaId, ospfAreaLsaCountLsaType } + ::= { ospfAreaLsaCountTable 1 } + + OspfAreaLsaCountEntry ::= + SEQUENCE { + ospfAreaLsaCountAreaId + AreaID, + ospfAreaLsaCountLsaType + INTEGER, + ospfAreaLsaCountNumber + Gauge32 + } + + ospfAreaLsaCountAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry Area ID." + ::= { ospfAreaLsaCountEntry 1 } + + ospfAreaLsaCountLsaType OBJECT-TYPE + SYNTAX INTEGER { + routerLink (1), + networkLink (2), + summaryLink (3), + asSummaryLink (4), + multicastLink (6), + nssaExternalLink (7), + areaOpaqueLink (10) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry LSA type." + ::= { ospfAreaLsaCountEntry 2 } + + ospfAreaLsaCountNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of LSAs of a given type for a given area." + ::= { ospfAreaLsaCountEntry 3 } + +-- conformance information + + + + +ospfConformance OBJECT IDENTIFIER ::= { ospf 15 } + +ospfGroups OBJECT IDENTIFIER ::= { ospfConformance 1 } +ospfCompliances OBJECT IDENTIFIER ::= { ospfConformance 2 } + +-- compliance statements + + ospfCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for OSPF systems + conforming to RFC 1850." + MODULE -- this module + MANDATORY-GROUPS { + ospfBasicGroup, + ospfAreaGroup, + ospfStubAreaGroup, + ospfIfGroup, + ospfIfMetricGroup, + ospfVirtIfGroup, + ospfNbrGroup, + ospfVirtNbrGroup, + ospfAreaAggregateGroup + } + GROUP ospfHostGroup + DESCRIPTION + "This group is mandatory for OSPF systems that support + attached hosts." + GROUP ospfLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-area link state database." + GROUP ospfExtLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their external link state database." + ::= { ospfCompliances 1 } + + ospfCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { + ospfBasicGroup2, + ospfAreaGroup2, + ospfStubAreaGroup, + ospfIfGroup2, + + + + ospfIfMetricGroup, + ospfVirtIfGroup2, + ospfNbrGroup2, + ospfVirtNbrGroup2, + ospfAreaAggregateGroup2 + } + GROUP ospfHostGroup2 + DESCRIPTION + "This group is mandatory for OSPF systems that support + attached hosts." + GROUP ospfLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-area link state database." + GROUP ospfAsLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their AS-scope link state database." + GROUP ospfLocalLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-link link state database for non-virtual + links." + GROUP ospfVirtLocalLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-link link state database for virtual links." + GROUP ospfAreaLsaCountGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + per-area, per-LSA-type counters." + ::= { ospfCompliances 2 } + + ospfComplianceObsolete MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "Contains obsolete object groups." + MODULE -- this module + GROUP ospfAreaRangeGroup + DESCRIPTION + "This group is obsolete, and it is mandatory only + for non-Classless Inter-Domain Routing (CIDR) OSPF + systems that support multiple areas." + GROUP ospfObsoleteGroup + DESCRIPTION + "This group contains obsolete objects, + which are no longer required for OSPF systems." + ::= { ospfCompliances 3 } + + + +-- units of conformance + + ospfBasicGroup OBJECT-GROUP + OBJECTS { + ospfRouterId, + ospfAdminStat, + ospfVersionNumber, + ospfAreaBdrRtrStatus, + ospfASBdrRtrStatus, + ospfExternLsaCount, + ospfExternLsaCksumSum, + ospfTOSSupport, + ospfOriginateNewLsas, + ospfRxNewLsas, + ospfExtLsdbLimit, + ospfMulticastExtensions, + ospfExitOverflowInterval, + ospfDemandExtensions + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage + global OSPF parameters. This object group + conforms to RFC 1850." + ::= { ospfGroups 1 } + + ospfAreaGroup OBJECT-GROUP + OBJECTS { + ospfAreaId, + ospfImportAsExtern, + ospfSpfRuns, + ospfAreaBdrRtrCount, + ospfAsBdrRtrCount, + ospfAreaLsaCount, + ospfAreaLsaCksumSum, + ospfAreaSummary, + ospfAreaStatus + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems + supporting areas per RFC 1850." + ::= { ospfGroups 2 } + + ospfStubAreaGroup OBJECT-GROUP + OBJECTS { + ospfStubAreaId, + ospfStubTOS, + + + + ospfStubMetric, + ospfStubStatus, + ospfStubMetricType + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + supporting stub areas." + ::= { ospfGroups 3 } + + ospfLsdbGroup OBJECT-GROUP + OBJECTS { + ospfLsdbAreaId, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId, + ospfLsdbSequence, + ospfLsdbAge, + ospfLsdbChecksum, + ospfLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link state database." + ::= { ospfGroups 4 } + + ospfAreaRangeGroup OBJECT-GROUP + OBJECTS { + ospfAreaRangeAreaId, + ospfAreaRangeNet, + ospfAreaRangeMask, + ospfAreaRangeStatus, + ospfAreaRangeEffect + } + STATUS obsolete + DESCRIPTION + "These objects are used for non-CIDR OSPF + systems that support multiple areas. This + object group is obsolete." + ::= { ospfGroups 5 } + + ospfHostGroup OBJECT-GROUP + OBJECTS { + ospfHostIpAddress, + ospfHostTOS, + ospfHostMetric, + ospfHostStatus, + + + + ospfHostAreaID + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems + that support attached hosts." + ::= { ospfGroups 6 } + + ospfIfGroup OBJECT-GROUP + OBJECTS { + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfAreaId, + ospfIfType, + ospfIfAdminStat, + ospfIfRtrPriority, + ospfIfTransitDelay, + ospfIfRetransInterval, + ospfIfHelloInterval, + ospfIfRtrDeadInterval, + ospfIfPollInterval, + ospfIfState, + ospfIfDesignatedRouter, + ospfIfBackupDesignatedRouter, + ospfIfEvents, + ospfIfAuthType, + ospfIfAuthKey, + ospfIfStatus, + ospfIfMulticastForwarding, + ospfIfDemand + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF + interfaces. This object group conforms to RFC 1850." + ::= { ospfGroups 7 } + + ospfIfMetricGroup OBJECT-GROUP + OBJECTS { + ospfIfMetricIpAddress, + ospfIfMetricAddressLessIf, + ospfIfMetricTOS, + ospfIfMetricValue, + ospfIfMetricStatus + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems for supporting + + + + interface metrics." + ::= { ospfGroups 8 } + + ospfVirtIfGroup OBJECT-GROUP + OBJECTS { + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfTransitDelay, + ospfVirtIfRetransInterval, + ospfVirtIfHelloInterval, + ospfVirtIfRtrDeadInterval, + ospfVirtIfState, + ospfVirtIfEvents, + ospfVirtIfAuthType, + ospfVirtIfAuthKey, + ospfVirtIfStatus + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems for supporting + virtual interfaces. This object group conforms + to RFC 1850." + ::= { ospfGroups 9 } + + ospfNbrGroup OBJECT-GROUP + OBJECTS { + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrOptions, + ospfNbrPriority, + ospfNbrState, + ospfNbrEvents, + ospfNbrLsRetransQLen, + ospfNbmaNbrStatus, + ospfNbmaNbrPermanence, + ospfNbrHelloSuppressed + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF neighbors. + This object group conforms to RFC 1850." + ::= { ospfGroups 10 } + + ospfVirtNbrGroup OBJECT-GROUP + OBJECTS { + ospfVirtNbrArea, + ospfVirtNbrRtrId, + + + + ospfVirtNbrIpAddr, + ospfVirtNbrOptions, + ospfVirtNbrState, + ospfVirtNbrEvents, + ospfVirtNbrLsRetransQLen, + ospfVirtNbrHelloSuppressed + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF virtual + neighbors. This object group conforms to RFC 1850." + + ::= { ospfGroups 11 } + + ospfExtLsdbGroup OBJECT-GROUP + OBJECTS { + ospfExtLsdbType, + ospfExtLsdbLsid, + ospfExtLsdbRouterId, + ospfExtLsdbSequence, + ospfExtLsdbAge, + ospfExtLsdbChecksum, + ospfExtLsdbAdvertisement + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems that display + their link state database. This object group + conforms to RFC 1850. + + This object group is replaced by the ospfAsLsdbGroup + in order to support any AS-scope LSA type in a single + table." + ::= { ospfGroups 12 } + + ospfAreaAggregateGroup OBJECT-GROUP + OBJECTS { + ospfAreaAggregateAreaID, + ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, + ospfAreaAggregateMask, + ospfAreaAggregateStatus, + ospfAreaAggregateEffect + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems to support + network prefix aggregation across areas." + + + + ::= { ospfGroups 13 } + + ospfLocalLsdbGroup OBJECT-GROUP + OBJECTS { + ospfLocalLsdbSequence, + ospfLocalLsdbAge, + ospfLocalLsdbChecksum, + ospfLocalLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link-local link state databases + for non-virtual links." + ::= { ospfGroups 14 } + + ospfVirtLocalLsdbGroup OBJECT-GROUP + OBJECTS { + ospfVirtLocalLsdbSequence, + ospfVirtLocalLsdbAge, + ospfVirtLocalLsdbChecksum, + ospfVirtLocalLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link-local link state databases + for virtual links." + ::= { ospfGroups 15 } + + ospfAsLsdbGroup OBJECT-GROUP + OBJECTS { + ospfAsLsdbSequence, + ospfAsLsdbAge, + ospfAsLsdbChecksum, + ospfAsLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their AS-scope link state database." + ::= { ospfGroups 16 } + + ospfBasicGroup2 OBJECT-GROUP + OBJECTS { + ospfRouterId, + ospfAdminStat, + ospfVersionNumber, + + + + ospfAreaBdrRtrStatus, + ospfASBdrRtrStatus, + ospfExternLsaCount, + ospfExternLsaCksumSum, + ospfTOSSupport, + ospfOriginateNewLsas, + ospfRxNewLsas, + ospfExtLsdbLimit, + ospfMulticastExtensions, + ospfExitOverflowInterval, + ospfDemandExtensions, + ospfRFC1583Compatibility, + ospfOpaqueLsaSupport, + ospfReferenceBandwidth, + ospfRestartSupport, + ospfRestartInterval, + ospfRestartStrictLsaChecking, + ospfRestartStatus, + ospfRestartAge, + ospfRestartExitReason, + ospfAsLsaCount, + ospfAsLsaCksumSum, + ospfStubRouterSupport, + ospfStubRouterAdvertisement, + ospfDiscontinuityTime + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF global + parameters." + ::= { ospfGroups 17 } + + ospfAreaGroup2 OBJECT-GROUP + OBJECTS { + ospfAreaId, + ospfImportAsExtern, + ospfSpfRuns, + ospfAreaBdrRtrCount, + ospfAsBdrRtrCount, + ospfAreaLsaCount, + ospfAreaLsaCksumSum, + ospfAreaSummary, + ospfAreaStatus, + ospfAreaNssaTranslatorRole, + ospfAreaNssaTranslatorState, + ospfAreaNssaTranslatorStabilityInterval, + ospfAreaNssaTranslatorEvents + } + + + + STATUS current + DESCRIPTION + "These objects are used by OSPF systems + to support areas." + ::= { ospfGroups 18 } + + ospfIfGroup2 OBJECT-GROUP + OBJECTS { + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfAreaId, + ospfIfType, + ospfIfAdminStat, + ospfIfRtrPriority, + ospfIfTransitDelay, + ospfIfRetransInterval, + ospfIfHelloInterval, + ospfIfRtrDeadInterval, + ospfIfPollInterval, + ospfIfState, + ospfIfDesignatedRouter, + ospfIfBackupDesignatedRouter, + ospfIfEvents, + ospfIfAuthType, + ospfIfAuthKey, + ospfIfStatus, + ospfIfMulticastForwarding, + ospfIfDemand, + ospfIfLsaCount, + ospfIfLsaCksumSum + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF interfaces." + ::= { ospfGroups 19 } + + ospfVirtIfGroup2 OBJECT-GROUP + OBJECTS { + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfTransitDelay, + ospfVirtIfRetransInterval, + ospfVirtIfHelloInterval, + ospfVirtIfRtrDeadInterval, + ospfVirtIfState, + ospfVirtIfEvents, + ospfVirtIfAuthType, + ospfVirtIfAuthKey, + + + + ospfVirtIfStatus, + ospfVirtIfLsaCount, + ospfVirtIfLsaCksumSum, + ospfIfDesignatedRouterId, + ospfIfBackupDesignatedRouterId + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + virtual interfaces." + ::= { ospfGroups 20 } + + ospfNbrGroup2 OBJECT-GROUP + OBJECTS { + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrOptions, + ospfNbrPriority, + ospfNbrState, + ospfNbrEvents, + ospfNbrLsRetransQLen, + ospfNbmaNbrStatus, + ospfNbmaNbrPermanence, + ospfNbrHelloSuppressed, + ospfNbrRestartHelperStatus, + ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + neighbors." + ::= { ospfGroups 21 } + + ospfVirtNbrGroup2 OBJECT-GROUP + OBJECTS { + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrIpAddr, + ospfVirtNbrOptions, + ospfVirtNbrState, + ospfVirtNbrEvents, + ospfVirtNbrLsRetransQLen, + ospfVirtNbrHelloSuppressed, + ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, + ospfVirtNbrRestartHelperExitReason + + + + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + virtual neighbors." + ::= { ospfGroups 22 } + + ospfAreaAggregateGroup2 OBJECT-GROUP + OBJECTS { + ospfAreaAggregateAreaID, + ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, + ospfAreaAggregateMask, + ospfAreaAggregateStatus, + ospfAreaAggregateEffect, + ospfAreaAggregateExtRouteTag + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems to support + network prefix aggregation across areas." + ::= { ospfGroups 23 } + + ospfAreaLsaCountGroup OBJECT-GROUP + OBJECTS { + ospfAreaLsaCountNumber + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems that display + per-area, per-LSA-type counters." + ::= { ospfGroups 24 } + + ospfHostGroup2 OBJECT-GROUP + OBJECTS { + ospfHostIpAddress, + ospfHostTOS, + ospfHostMetric, + ospfHostStatus, + ospfHostCfgAreaID + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that support attached hosts." + ::= { ospfGroups 25 } + +-- This object group is included for SMI conformance. It is not a + + + +-- mandatory group for compliance with this MIB + + ospfObsoleteGroup OBJECT-GROUP + OBJECTS { + ospfAuthType + } + STATUS obsolete + DESCRIPTION + "These objects are obsolete and are no longer required for + OSPF systems. They are placed into this group for SMI + conformance." + ::= { ospfGroups 26 } + +END diff --git a/mibs/ietf/OSPF-TRAP-MIB b/mibs/ietf/OSPF-TRAP-MIB new file mode 100644 index 0000000..780c228 --- /dev/null +++ b/mibs/ietf/OSPF-TRAP-MIB @@ -0,0 +1,616 @@ +OSPF-TRAP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, IpAddress + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ospfRouterId, ospfIfIpAddress, ospfAddressLessIf, ospfIfState, + ospfVirtIfAreaId, ospfVirtIfNeighbor, ospfVirtIfState, + ospfNbrIpAddr, ospfNbrAddressLessIndex, ospfNbrRtrId, + ospfNbrState, ospfVirtNbrArea, ospfVirtNbrRtrId, + ospfVirtNbrState, ospfLsdbType, ospfLsdbLsid, ospfLsdbRouterId, + ospfLsdbAreaId, ospfExtLsdbLimit, ospf, ospfAreaId, + ospfAreaNssaTranslatorState, ospfRestartStatus, + ospfRestartInterval, ospfRestartExitReason, + ospfNbrRestartHelperStatus, ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason, ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, ospfVirtNbrRestartHelperExitReason + FROM OSPF-MIB; + + ospfTrap MODULE-IDENTITY + + LAST-UPDATED "200611100000Z" -- November 10, 2006 00:00:00 EST + ORGANIZATION "IETF OSPF Working Group" + CONTACT-INFO + "WG E-Mail: ospf@ietf.org + + WG Chairs: acee@cisco.com + rohit@gmail.com + + Editors: Dan Joyal + Nortel + 600 Technology Park Drive + Billerica, MA 01821 + djoyal@nortel.com + + Piotr Galecki + Airvana + 19 Alpha Road + Chelmsford, MA 01824 + pgalecki@airvana.com + + Spencer Giacalone + CSFB + Eleven Madison Ave + New York, NY 10010-3629 + + + spencer.giacalone@gmail.com" + + DESCRIPTION + "The MIB module to describe traps for the OSPF + Version 2 Protocol. + + Copyright (C) The IETF Trust (2006). + This version of this MIB module is part of + RFC 4750; see the RFC itself for full legal + notices." + + REVISION "200611100000Z" -- November 10, 2006 00:00:00 EST + DESCRIPTION + "Updated for latest changes to OSPFv2: + -added graceful restart related traps + -added new config error types + -added ospfNssaTranslatorStatusChange trap. + See Appendix B of RFC 4750 for more details. + + This version published as part of RFC 4750" + + REVISION "199501201225Z" -- Fri Jan 20 12:25:50 PST 1995 + DESCRIPTION + "The initial SMIv2 revision of this MIB module, published + in RFC 1850." + + ::= { ospf 16 } + +-- Trap Support Objects + +-- The following are support objects for the OSPF traps. + + ospfTrapControl OBJECT IDENTIFIER ::= { ospfTrap 1 } + ospfTraps OBJECT IDENTIFIER ::= { ospfTrap 2 } + + ospfSetTrap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 4-octet string serving as a bit map for + the trap events defined by the OSPF traps. This + object is used to enable and disable specific + OSPF traps where a 1 in the bit field + represents enabled. The right-most bit (least + significant) represents trap 0. + + This object is persistent and when written + + + + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfTrapControl 1 } + + ospfConfigErrorType OBJECT-TYPE + SYNTAX INTEGER { + badVersion (1), + areaMismatch (2), + unknownNbmaNbr (3), -- Router is DR eligible + unknownVirtualNbr (4), + authTypeMismatch(5), + authFailure (6), + netMaskMismatch (7), + helloIntervalMismatch (8), + deadIntervalMismatch (9), + optionMismatch (10), + mtuMismatch (11), + duplicateRouterId (12), + noError (13) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Potential types of configuration conflicts. + Used by the ospfConfigError and + ospfConfigVirtError traps. When the last value + of a trap using this object is needed, but no + traps of that type have been sent, this value + pertaining to this object should be returned as + noError." + ::= { ospfTrapControl 2 } + + ospfPacketType OBJECT-TYPE + SYNTAX INTEGER { + hello (1), + dbDescript (2), + lsReq (3), + lsUpdate (4), + lsAck (5), + nullPacket (6) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OSPF packet types. When the last value of a trap + using this object is needed, but no traps of + that type have been sent, this value pertaining + to this object should be returned as nullPacket." + ::= { ospfTrapControl 3 } + + + + + ospfPacketSrc OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of an inbound packet that cannot + be identified by a neighbor instance. When + the last value of a trap using this object is + needed, but no traps of that type have been sent, + this value pertaining to this object should + be returned as 0.0.0.0." + ::= { ospfTrapControl 4 } + +-- Traps + + ospfVirtIfStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfState -- The new state + } + STATUS current + DESCRIPTION + "An ospfVirtIfStateChange trap signifies that there + has been a change in the state of an OSPF virtual + interface. + + This trap should be generated when the interface + state regresses (e.g., goes from Point-to-Point to Down) + or progresses to a terminal state + (i.e., Point-to-Point)." + ::= { ospfTraps 1 } + + ospfNbrStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrState -- The new state + } + STATUS current + DESCRIPTION + "An ospfNbrStateChange trap signifies that + there has been a change in the state of a + non-virtual OSPF neighbor. This trap should be + generated when the neighbor state regresses + (e.g., goes from Attempt or Full to 1-Way or + Down) or progresses to a terminal state (e.g., + + + + 2-Way or Full). When an neighbor transitions + from or to Full on non-broadcast multi-access + and broadcast networks, the trap should be + generated by the designated router. A designated + router transitioning to Down will be noted by + ospfIfStateChange." + ::= { ospfTraps 2 } + + ospfVirtNbrStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrState -- The new state + } + STATUS current + DESCRIPTION + "An ospfVirtNbrStateChange trap signifies that there + has been a change in the state of an OSPF virtual + neighbor. This trap should be generated + when the neighbor state regresses (e.g., goes + from Attempt or Full to 1-Way or Down) or + progresses to a terminal state (e.g., Full)." + ::= { ospfTraps 3 } + + ospfIfConfigError NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfConfigErrorType, -- Type of error + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfConfigError trap signifies that a + packet has been received on a non-virtual + interface from a router whose configuration + parameters conflict with this router's + configuration parameters. Note that the event + optionMismatch should cause a trap only if it + prevents an adjacency from forming." + ::= { ospfTraps 4 } + + ospfVirtIfConfigError NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfConfigErrorType, -- Type of error + + + + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfConfigError trap signifies that a + packet has been received on a virtual interface + from a router whose configuration parameters + conflict with this router's configuration + parameters. Note that the event optionMismatch + should cause a trap only if it prevents an + adjacency from forming." + ::= { ospfTraps 5 } + + ospfIfAuthFailure NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfConfigErrorType, -- authTypeMismatch or + -- authFailure + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfAuthFailure trap signifies that a + packet has been received on a non-virtual + interface from a router whose authentication key + or authentication type conflicts with this + router's authentication key or authentication + type." + ::= { ospfTraps 6 } + + ospfVirtIfAuthFailure NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfConfigErrorType, -- authTypeMismatch or + -- authFailure + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfAuthFailure trap signifies that a + packet has been received on a virtual interface + from a router whose authentication key or + authentication type conflicts with this router's + authentication key or authentication type." + + + + + ::= { ospfTraps 7 } + + ospfIfRxBadPacket NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfRxBadPacket trap signifies that an + OSPF packet has been received on a non-virtual + interface that cannot be parsed." + ::= { ospfTraps 8 } + + ospfVirtIfRxBadPacket NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfRxBadPacket trap signifies that an OSPF + packet has been received on a virtual interface + that cannot be parsed." + ::= { ospfTraps 9 } + + ospfTxRetransmit NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfNbrRtrId, -- Destination + ospfPacketType, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfTxRetransmit trap signifies than an + OSPF packet has been retransmitted on a + non-virtual interface. All packets that may be + retransmitted are associated with an LSDB entry. + The LS type, LS ID, and Router ID are used to + identify the LSDB entry." + ::= { ospfTraps 10 } + + + + ospfVirtIfTxRetransmit NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfPacketType, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfVirtIfTxRetransmit trap signifies than an + OSPF packet has been retransmitted on a virtual + interface. All packets that may be retransmitted + are associated with an LSDB entry. The LS + type, LS ID, and Router ID are used to identify + the LSDB entry." + ::= { ospfTraps 11 } + + ospfOriginateLsa NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfLsdbAreaId, -- 0.0.0.0 for AS Externals + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfOriginateLsa trap signifies that a new + LSA has been originated by this router. This + trap should not be invoked for simple refreshes + of LSAs (which happens every 30 minutes), but + instead will only be invoked when an LSA is + (re)originated due to a topology change. + Additionally, this trap does not include LSAs that + are being flushed because they have reached + MaxAge." + ::= { ospfTraps 12 } + + ospfMaxAgeLsa NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfLsdbAreaId, -- 0.0.0.0 for AS Externals + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + + + + "An ospfMaxAgeLsa trap signifies that one of + the LSAs in the router's link state database has + aged to MaxAge." + ::= { ospfTraps 13 } + + ospfLsdbOverflow NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfExtLsdbLimit + } + + STATUS current + DESCRIPTION + "An ospfLsdbOverflow trap signifies that the + number of LSAs in the router's link state + database has exceeded ospfExtLsdbLimit." + ::= { ospfTraps 14 } + + ospfLsdbApproachingOverflow NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfExtLsdbLimit + } + STATUS current + DESCRIPTION + "An ospfLsdbApproachingOverflow trap signifies + that the number of LSAs in the router's + link state database has exceeded ninety percent of + ospfExtLsdbLimit." + ::= { ospfTraps 15 } + + ospfIfStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfState -- The new state + } + STATUS current + DESCRIPTION + "An ospfIfStateChange trap signifies that there + has been a change in the state of a non-virtual + OSPF interface. This trap should be generated + when the interface state regresses (e.g., goes + from Dr to Down) or progresses to a terminal + state (i.e., Point-to-Point, DR Other, Dr, or + Backup)." + ::= { ospfTraps 16 } + + ospfNssaTranslatorStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + + + + ospfAreaId, + ospfAreaNssaTranslatorState -- The current translation + -- status + } + STATUS current + DESCRIPTION + "An ospfNssaTranslatorStatusChange trap indicates that + there has been a change in the router's ability to + translate OSPF type-7 LSAs into OSPF type-5 LSAs. + This trap should be generated when the translator + status transitions from or to any defined status on + a per-area basis." + ::= { ospfTraps 17 } + + ospfRestartStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfRestartStatus, + ospfRestartInterval, + ospfRestartExitReason + } + STATUS current + DESCRIPTION + "An ospfRestartStatusChange trap signifies that + there has been a change in the graceful restart + state for the router. This trap should be + generated when the router restart status + changes." + ::= { ospfTraps 18 } + + ospfNbrRestartHelperStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrRestartHelperStatus, + ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "An ospfNbrRestartHelperStatusChange trap signifies that + there has been a change in the graceful restart + helper state for the neighbor. This trap should be + generated when the neighbor restart helper status + transitions for a neighbor." + ::= { ospfTraps 19 } + + ospfVirtNbrRestartHelperStatusChange NOTIFICATION-TYPE + + + + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, + ospfVirtNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "An ospfVirtNbrRestartHelperStatusChange trap signifies + that there has been a change in the graceful restart + helper state for the virtual neighbor. This trap should + be generated when the virtual neighbor restart helper + status transitions for a virtual neighbor." + ::= { ospfTraps 20 } + +-- conformance information + +ospfTrapConformance OBJECT IDENTIFIER ::= { ospfTrap 3 } +ospfTrapGroups OBJECT IDENTIFIER ::= { ospfTrapConformance 1 } +ospfTrapCompliances OBJECT IDENTIFIER ::= { ospfTrapConformance 2 } + +-- compliance statements + +ospfTrapCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { ospfTrapControlGroup } + + GROUP ospfTrapControlGroup + DESCRIPTION + "This group is optional but recommended for all + OSPF systems." + ::= { ospfTrapCompliances 1 } + +ospfTrapCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { ospfTrapControlGroup, ospfTrapEventGroup } + OBJECT ospfConfigErrorType + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + + + + OBJECT ospfPacketType + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + OBJECT ospfPacketSrc + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + ::= { ospfTrapCompliances 2 } + +-- units of conformance + + ospfTrapControlGroup OBJECT-GROUP + OBJECTS { ospfSetTrap, + ospfConfigErrorType, + ospfPacketType, + ospfPacketSrc } + STATUS current + DESCRIPTION + "These objects are required to control traps + from OSPF systems." + ::= { ospfTrapGroups 1 } + + ospfTrapEventGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ospfVirtIfStateChange, + ospfNbrStateChange, + ospfVirtNbrStateChange, + ospfIfConfigError, + ospfVirtIfConfigError, + ospfIfAuthFailure, + ospfVirtIfAuthFailure, + ospfIfRxBadPacket, + ospfVirtIfRxBadPacket, + ospfTxRetransmit, + ospfVirtIfTxRetransmit, + ospfOriginateLsa, + ospfMaxAgeLsa, + ospfLsdbOverflow, + ospfLsdbApproachingOverflow, + ospfIfStateChange, + ospfNssaTranslatorStatusChange, + ospfRestartStatusChange, + ospfNbrRestartHelperStatusChange, + ospfVirtNbrRestartHelperStatusChange + } + + + + STATUS current + DESCRIPTION + "A grouping of OSPF trap events, as specified + in NOTIFICATION-TYPE constructs." + ::= { ospfTrapGroups 2 } + +END diff --git a/mibs/ietf/P-BRIDGE-MIB b/mibs/ietf/P-BRIDGE-MIB new file mode 100644 index 0000000..3eb17e3 --- /dev/null +++ b/mibs/ietf/P-BRIDGE-MIB @@ -0,0 +1,1216 @@ +P-BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1p devices +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, Counter64 + FROM SNMPv2-SMI + TruthValue, TimeInterval, MacAddress, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dTp, dot1dTpPort, dot1dBridge, + dot1dBasePortEntry, dot1dBasePort + FROM BRIDGE-MIB; + +pBridgeMIB MODULE-IDENTITY + LAST-UPDATED "200601090000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: bridge-mib@ietf.org + ietfmibs@ops.ietf.org + + David Levi + Postal: Nortel Networks + 4655 Great America Parkway + Santa Clara, CA 95054 + USA + Phone: +1 865 686 0432 + Email: dlevi@nortel.com + + David Harrington + Postal: Effective Software + 50 Harding Rd. + Portsmouth, NH 03801 + USA + Phone: +1 603 436 8634 + Email: ietfdbh@comcast.net + + Les Bell + Postal: Hemel Hempstead, Herts. HP2 7YU + UK + Email: elbell@ntlworld.com + + Vivian Ngai + + + + Email: vivian_ngai@acm.org + + Andrew Smith + Postal: Beijing Harbour Networks + Jiuling Building + 21 North Xisanhuan Ave. + Beijing, 100089 + PRC + Fax: +1 415 345 1827 + Email: ah_smith@acm.org + + Paul Langille + Postal: Newbridge Networks + 5 Corporate Drive + Andover, MA 01810 + USA + Phone: +1 978 691 4665 + Email: langille@newbridge.com + + Anil Rijhsinghani + Postal: Accton Technology Corporation + 5 Mount Royal Ave + Marlboro, MA 01752 + USA + Phone: + Email: anil@accton.com + + Keith McCloghrie + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The Bridge MIB Extension module for managing Priority + and Multicast Filtering, defined by IEEE 802.1D-1998, + including Restricted Group Registration defined by + IEEE 802.1t-2001. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4363; See the RFC itself for + full legal notices." + REVISION "200601090000Z" + DESCRIPTION + "Added dot1dPortRestrictedGroupRegistration. + Deprecated pBridgePortGmrpGroup and pBridgeCompliance + and added pBridgePortGmrpGroup2 and pBridgeCompliance2." + + + + REVISION "199908250000Z" + DESCRIPTION + "The Bridge MIB Extension module for managing Priority + and Multicast Filtering, defined by IEEE 802.1D-1998. + + Initial version, published as RFC 2674." + + ::= { dot1dBridge 6 } + +pBridgeMIBObjects OBJECT IDENTIFIER ::= { pBridgeMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +EnabledStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A simple status value for the object." + SYNTAX INTEGER { enabled(1), disabled(2) } + +-- ------------------------------------------------------------- +-- subtrees in the P-BRIDGE MIB +-- ------------------------------------------------------------- + +dot1dExtBase OBJECT IDENTIFIER ::= { pBridgeMIBObjects 1 } +dot1dPriority OBJECT IDENTIFIER ::= { pBridgeMIBObjects 2 } +dot1dGarp OBJECT IDENTIFIER ::= { pBridgeMIBObjects 3 } +dot1dGmrp OBJECT IDENTIFIER ::= { pBridgeMIBObjects 4 } + +-- ------------------------------------------------------------- +-- the dot1dExtBase subtree +-- ------------------------------------------------------------- + +dot1dDeviceCapabilities OBJECT-TYPE + SYNTAX BITS { + dot1dExtendedFilteringServices(0), + dot1dTrafficClasses(1), + dot1qStaticEntryIndividualPort(2), + dot1qIVLCapable(3), + dot1qSVLCapable(4), + dot1qHybridCapable(5), + dot1qConfigurablePvidTagging(6), + dot1dLocalVlanCapable(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Indicates the optional parts of IEEE 802.1D and 802.1Q + that are implemented by this device and are manageable + through this MIB. Capabilities that are allowed on a + per-port basis are indicated in dot1dPortCapabilities. + + dot1dExtendedFilteringServices(0), + -- can perform filtering of + -- individual multicast addresses + -- controlled by GMRP. + dot1dTrafficClasses(1), + -- can map user priority to + -- multiple traffic classes. + dot1qStaticEntryIndividualPort(2), + -- dot1qStaticUnicastReceivePort & + -- dot1qStaticMulticastReceivePort + -- can represent non-zero entries. + dot1qIVLCapable(3), -- Independent VLAN Learning (IVL). + dot1qSVLCapable(4), -- Shared VLAN Learning (SVL). + dot1qHybridCapable(5), + -- both IVL & SVL simultaneously. + dot1qConfigurablePvidTagging(6), + -- whether the implementation + -- supports the ability to + -- override the default PVID + -- setting and its egress status + -- (VLAN-Tagged or Untagged) on + -- each port. + dot1dLocalVlanCapable(7) + -- can support multiple local + -- bridges, outside of the scope + -- of 802.1Q defined VLANs." + REFERENCE + "ISO/IEC 15802-3 Section 5.2, + IEEE 802.1Q/D11 Section 5.2, 12.10.1.1.3/b/2" + ::= { dot1dExtBase 1 } + +dot1dTrafficClassesEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value true(1) indicates that Traffic Classes are + enabled on this bridge. When false(2), the bridge + operates with a single priority level for all traffic. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { true } + + + + ::= { dot1dExtBase 2 } + +dot1dGmrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status requested by management for + GMRP. The value enabled(1) indicates that GMRP should + be enabled on this device, in all VLANs, on all ports + for which it has not been specifically disabled. When + disabled(2), GMRP is disabled, in all VLANs and on all + ports, and all GMRP packets will be forwarded + transparently. This object affects both Applicant and + Registrar state machines. A transition from disabled(2) + to enabled(1) will cause a reset of all GMRP state + machines on all ports. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1dExtBase 3 } + +-- ------------------------------------------------------------- +-- Port Capabilities Table +-- ------------------------------------------------------------- + +dot1dPortCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains capabilities information about + every port that is associated with this bridge." + ::= { dot1dExtBase 4 } + +dot1dPortCapabilitiesEntry OBJECT-TYPE + SYNTAX Dot1dPortCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of capabilities information about this port + indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortCapabilitiesTable 1 } + +Dot1dPortCapabilitiesEntry ::= + SEQUENCE { + + + + dot1dPortCapabilities + BITS + } + +dot1dPortCapabilities OBJECT-TYPE + SYNTAX BITS { + dot1qDot1qTagging(0), + dot1qConfigurableAcceptableFrameTypes(1), + dot1qIngressFiltering(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the parts of IEEE 802.1D and 802.1Q that are + optional on a per-port basis, that are implemented by + this device, and that are manageable through this MIB. + + dot1qDot1qTagging(0), -- supports 802.1Q VLAN tagging of + -- frames and GVRP. + dot1qConfigurableAcceptableFrameTypes(1), + -- allows modified values of + -- dot1qPortAcceptableFrameTypes. + dot1qIngressFiltering(2) + -- supports the discarding of any + -- frame received on a Port whose + -- VLAN classification does not + -- include that Port in its Member + -- set." + REFERENCE + "ISO/IEC 15802-3 Section 5.2, + IEEE 802.1Q/D11 Section 5.2" + ::= { dot1dPortCapabilitiesEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dPriority subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- Port Priority Table +-- ------------------------------------------------------------- + +dot1dPortPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every port that + is associated with this transparent bridge." + + + + ::= { dot1dPriority 1 } + +dot1dPortPriorityEntry OBJECT-TYPE + SYNTAX Dot1dPortPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Default User Priorities for each port of a + transparent bridge. This is indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortPriorityTable 1 } + +Dot1dPortPriorityEntry ::= + SEQUENCE { + dot1dPortDefaultUserPriority + Integer32, + dot1dPortNumTrafficClasses + Integer32 + } + +dot1dPortDefaultUserPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default ingress User Priority for this port. This + only has effect on media, such as Ethernet, that do not + support native User Priority. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1dPortPriorityEntry 1 } + +dot1dPortNumTrafficClasses OBJECT-TYPE + SYNTAX Integer32 (1..8) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of egress traffic classes supported on this + port. This object may optionally be read-only. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1dPortPriorityEntry 2 } + +-- ------------------------------------------------------------- +-- User Priority Regeneration Table +-- ------------------------------------------------------------- + + + +dot1dUserPriorityRegenTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dUserPriorityRegenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Regenerated User Priorities for each received + User Priority on each port of a bridge. The Regenerated + User Priority value may be used to index the Traffic + Class Table for each input port. This only has effect + on media that support native User Priority. The default + values for Regenerated User Priorities are the same as + the User Priorities." + REFERENCE + "ISO/IEC 15802-3 Section 6.4" + ::= { dot1dPriority 2 } + +dot1dUserPriorityRegenEntry OBJECT-TYPE + SYNTAX Dot1dUserPriorityRegenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping of incoming User Priority to a Regenerated + User Priority." + INDEX { dot1dBasePort, dot1dUserPriority } + ::= { dot1dUserPriorityRegenTable 1 } + +Dot1dUserPriorityRegenEntry ::= + SEQUENCE { + dot1dUserPriority + Integer32, + dot1dRegenUserPriority + Integer32 + } + +dot1dUserPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The User Priority for a frame received on this port." + ::= { dot1dUserPriorityRegenEntry 1 } + +dot1dRegenUserPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Regenerated User Priority that the incoming User + + + + Priority is mapped to for this port. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1dUserPriorityRegenEntry 2 } + +-- ------------------------------------------------------------- +-- Traffic Class Table +-- ------------------------------------------------------------- + +dot1dTrafficClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTrafficClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping evaluated User Priority to Traffic + Class, for forwarding by the bridge. Traffic class is a + number in the range (0..(dot1dPortNumTrafficClasses-1))." + REFERENCE + "ISO/IEC 15802-3 Table 7-2" + ::= { dot1dPriority 3 } + +dot1dTrafficClassEntry OBJECT-TYPE + SYNTAX Dot1dTrafficClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "User Priority to Traffic Class mapping." + INDEX { dot1dBasePort, dot1dTrafficClassPriority } + ::= { dot1dTrafficClassTable 1 } + +Dot1dTrafficClassEntry ::= + SEQUENCE { + dot1dTrafficClassPriority + Integer32, + dot1dTrafficClass + Integer32 + } + +dot1dTrafficClassPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Priority value determined for the received frame. + This value is equivalent to the priority indicated in + the tagged frame received, or one of the evaluated + priorities, determined according to the media-type. + + + + For untagged frames received from Ethernet media, this + value is equal to the dot1dPortDefaultUserPriority value + for the ingress port. + + For untagged frames received from non-Ethernet media, + this value is equal to the dot1dRegenUserPriority value + for the ingress port and media-specific user priority." + ::= { dot1dTrafficClassEntry 1 } + +dot1dTrafficClass OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Traffic Class the received frame is mapped to. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1dTrafficClassEntry 2 } + +-- ------------------------------------------------------------- +-- Outbound Access Priority Table +-- ------------------------------------------------------------- + +dot1dPortOutboundAccessPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortOutboundAccessPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping Regenerated User Priority to Outbound + Access Priority. This is a fixed mapping for all port + types, with two options for 802.5 Token Ring." + REFERENCE + "ISO/IEC 15802-3 Table 7-3" + ::= { dot1dPriority 4 } + +dot1dPortOutboundAccessPriorityEntry OBJECT-TYPE + SYNTAX Dot1dPortOutboundAccessPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Regenerated User Priority to Outbound Access Priority + mapping." + INDEX { dot1dBasePort, dot1dRegenUserPriority } + ::= { dot1dPortOutboundAccessPriorityTable 1 } + +Dot1dPortOutboundAccessPriorityEntry ::= + SEQUENCE { + + + + dot1dPortOutboundAccessPriority + Integer32 + } + +dot1dPortOutboundAccessPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Outbound Access Priority the received frame is + mapped to." + ::= { dot1dPortOutboundAccessPriorityEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dGarp subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- The GARP Port Table +-- ------------------------------------------------------------- + +dot1dPortGarpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortGarpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GARP control information about every bridge + port. This is indexed by dot1dBasePort." + ::= { dot1dGarp 1 } + +dot1dPortGarpEntry OBJECT-TYPE + SYNTAX Dot1dPortGarpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "GARP control information for a bridge port." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortGarpTable 1 } + +Dot1dPortGarpEntry ::= + SEQUENCE { + dot1dPortGarpJoinTime + TimeInterval, + dot1dPortGarpLeaveTime + TimeInterval, + dot1dPortGarpLeaveAllTime + TimeInterval + } + + + +dot1dPortGarpJoinTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP Join time, in centiseconds. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { 20 } + ::= { dot1dPortGarpEntry 1 } + +dot1dPortGarpLeaveTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP Leave time, in centiseconds. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { 60 } + ::= { dot1dPortGarpEntry 2 } + +dot1dPortGarpLeaveAllTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP LeaveAll time, in centiseconds. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { 1000 } + ::= { dot1dPortGarpEntry 3 } + +-- ------------------------------------------------------------- +-- The GMRP Port Configuration and Status Table +-- ------------------------------------------------------------- + +dot1dPortGmrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortGmrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GMRP control and status information about + every bridge port. Augments the dot1dBasePortTable." + ::= { dot1dGmrp 1 } + + + +dot1dPortGmrpEntry OBJECT-TYPE + SYNTAX Dot1dPortGmrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "GMRP control and status information for a bridge port." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortGmrpTable 1 } + +Dot1dPortGmrpEntry ::= + SEQUENCE { + dot1dPortGmrpStatus + EnabledStatus, + dot1dPortGmrpFailedRegistrations + Counter32, + dot1dPortGmrpLastPduOrigin + MacAddress, + dot1dPortRestrictedGroupRegistration + TruthValue + } + +dot1dPortGmrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative state of GMRP operation on this port. The + value enabled(1) indicates that GMRP is enabled on this port + in all VLANs as long as dot1dGmrpStatus is also enabled(1). + A value of disabled(2) indicates that GMRP is disabled on + this port in all VLANs: any GMRP packets received will + be silently discarded, and no GMRP registrations will be + propagated from other ports. Setting this to a value of + enabled(1) will be stored by the agent but will only take + effect on the GMRP protocol operation if dot1dGmrpStatus + also indicates the value enabled(1). This object affects + all GMRP Applicant and Registrar state machines on this + port. A transition from disabled(2) to enabled(1) will + cause a reset of all GMRP state machines on this port. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1dPortGmrpEntry 1 } + +dot1dPortGmrpFailedRegistrations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The total number of failed GMRP registrations, for any + reason, in all VLANs, on this port." + ::= { dot1dPortGmrpEntry 2 } + +dot1dPortGmrpLastPduOrigin OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Source MAC Address of the last GMRP message + received on this port." + ::= { dot1dPortGmrpEntry 3 } + +dot1dPortRestrictedGroupRegistration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of Restricted Group Registration on this port. + If the value of this control is true(1), then creation + of a new dynamic entry is permitted only if there is a + Static Filtering Entry for the VLAN concerned, in which + the Registrar Administrative Control value is Normal + Registration. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1t clause 10.3.2.3, 14.10.1.3." + DEFVAL { false } + ::= { dot1dPortGmrpEntry 4 } + +-- ------------------------------------------------------------- +-- High-Capacity Port Table for Transparent Bridges +-- ------------------------------------------------------------- + +dot1dTpHCPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpHCPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every high- + capacity port that is associated with this transparent + bridge." + ::= { dot1dTp 5 } + + + + +dot1dTpHCPortEntry OBJECT-TYPE + SYNTAX Dot1dTpHCPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for each high-capacity port of a + transparent bridge." + INDEX { dot1dTpPort } + ::= { dot1dTpHCPortTable 1 } + +Dot1dTpHCPortEntry ::= + SEQUENCE { + dot1dTpHCPortInFrames + Counter64, + dot1dTpHCPortOutFrames + Counter64, + dot1dTpHCPortInDiscards + Counter64 + } + +dot1dTpHCPortInFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + 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 + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpHCPortEntry 1 } + +dot1dTpHCPortOutFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + 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 + "ISO/IEC 15802-3 Section 14.6.1.1.3" + + + + ::= { dot1dTpHCPortEntry 2 } + +dot1dTpHCPortInDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of valid frames that have been received by this + port from its segment that were discarded (i.e., + filtered) by the Forwarding Process." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpHCPortEntry 3 } + +-- ---------------------------------------------------- +-- Upper part of High-Capacity Port Table for Transparent Bridges +-- ---------------------------------------------------- + +dot1dTpPortOverflowTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpPortOverflowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains the most-significant bits of + statistics counters for ports that are associated with this + transparent bridge that are on high-capacity interfaces, as + defined in the conformance clauses for this table. This table + is provided as a way to read 64-bit counters for agents that + support only SNMPv1. + + Note that the reporting of most-significant and + least-significant counter bits separately runs the risk of + missing an overflow of the lower bits in the interval between + sampling. The manager must be aware of this possibility, even + within the same varbindlist, when interpreting the results of + a request or asynchronous notification." + ::= { dot1dTp 6 } + +dot1dTpPortOverflowEntry OBJECT-TYPE + SYNTAX Dot1dTpPortOverflowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The most significant bits of statistics counters for a high- + capacity interface of a transparent bridge. Each object is + associated with a corresponding object in dot1dTpPortTable + that indicates the least significant bits of the counter." + INDEX { dot1dTpPort } + + + + ::= { dot1dTpPortOverflowTable 1 } + +Dot1dTpPortOverflowEntry ::= + SEQUENCE { + dot1dTpPortInOverflowFrames + Counter32, + dot1dTpPortOutOverflowFrames + Counter32, + dot1dTpPortInOverflowDiscards + Counter32 + } + +dot1dTpPortInOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated dot1dTpPortInFrames + counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 1 } + +dot1dTpPortOutOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated dot1dTpPortOutFrames + counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 2 } + +dot1dTpPortInOverflowDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1dTpPortInDiscards counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 3 } + +-- ------------------------------------------------------------- +-- IEEE 802.1p MIB - Conformance Information +-- ------------------------------------------------------------- + + + +pBridgeConformance OBJECT IDENTIFIER ::= { pBridgeMIB 2 } + +pBridgeGroups OBJECT IDENTIFIER ::= { pBridgeConformance 1 } + +pBridgeCompliances OBJECT IDENTIFIER + ::= { pBridgeConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +pBridgeExtCapGroup OBJECT-GROUP + OBJECTS { + dot1dDeviceCapabilities, + dot1dPortCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects indicating the optional + capabilities of the device." + ::= { pBridgeGroups 1 } + +pBridgeDeviceGmrpGroup OBJECT-GROUP + OBJECTS { + dot1dGmrpStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + for the Multicast Filtering extended bridge services." + ::= { pBridgeGroups 2 } + +pBridgeDevicePriorityGroup OBJECT-GROUP + OBJECTS { + dot1dTrafficClassesEnabled + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + for the Priority services." + ::= { pBridgeGroups 3 } + +pBridgeDefaultPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortDefaultUserPriority + } + STATUS current + DESCRIPTION + + + + "A collection of objects defining the User Priority + applicable to each port for media that do not support + native User Priority." + ::= { pBridgeGroups 4 } + +pBridgeRegenPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dRegenUserPriority + } + STATUS current + DESCRIPTION + "A collection of objects defining the User Priorities + applicable to each port for media that support native + User Priority." + ::= { pBridgeGroups 5 } + +pBridgePriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortNumTrafficClasses, + dot1dTrafficClass + } + STATUS current + DESCRIPTION + "A collection of objects defining the traffic classes + within a bridge for each evaluated User Priority." + ::= { pBridgeGroups 6 } + +pBridgeAccessPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortOutboundAccessPriority + } + STATUS current + DESCRIPTION + "A collection of objects defining the media-dependent + outbound access level for each priority." + ::= { pBridgeGroups 7 } + +pBridgePortGarpGroup OBJECT-GROUP + OBJECTS { + dot1dPortGarpJoinTime, + dot1dPortGarpLeaveTime, + dot1dPortGarpLeaveAllTime + } + STATUS current + DESCRIPTION + "A collection of objects providing port level control + and status information for GARP operation." + ::= { pBridgeGroups 8 } + + + +pBridgePortGmrpGroup OBJECT-GROUP + OBJECTS { + dot1dPortGmrpStatus, + dot1dPortGmrpFailedRegistrations, + dot1dPortGmrpLastPduOrigin + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing port level control + and status information for GMRP operation." + ::= { pBridgeGroups 9 } + +pBridgeHCPortGroup OBJECT-GROUP + OBJECTS { + dot1dTpHCPortInFrames, + dot1dTpHCPortOutFrames, + dot1dTpHCPortInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing 64-bit statistics + counters for high-capacity bridge ports." + ::= { pBridgeGroups 10 } + +pBridgePortOverflowGroup OBJECT-GROUP + OBJECTS { + dot1dTpPortInOverflowFrames, + dot1dTpPortOutOverflowFrames, + dot1dTpPortInOverflowDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing overflow statistics + counters for high-capacity bridge ports." + ::= { pBridgeGroups 11 } + +pBridgePortGmrpGroup2 OBJECT-GROUP + OBJECTS { + dot1dPortGmrpStatus, + dot1dPortGmrpFailedRegistrations, + dot1dPortGmrpLastPduOrigin, + dot1dPortRestrictedGroupRegistration + } + STATUS current + DESCRIPTION + "A collection of objects providing port level control + and status information for GMRP operation." + ::= { pBridgeGroups 12 } + + + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +pBridgeCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for device support of Priority + and Multicast Filtering extended bridging services." + + MODULE + MANDATORY-GROUPS { pBridgeExtCapGroup } + + GROUP pBridgeDeviceGmrpGroup + DESCRIPTION + "This group is mandatory for devices supporting the GMRP + application, defined by IEEE 802.1D Extended Filtering + Services." + + GROUP pBridgeDevicePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE + 802.1D." + + GROUP pBridgeDefaultPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by the + extended bridge services with media types, such as + Ethernet, that do not support native User Priority." + + GROUP pBridgeRegenPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D + and that have interface media types that support + native User Priority, e.g., IEEE 802.5." + + GROUP pBridgePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D." + + GROUP pBridgeAccessPriorityGroup + DESCRIPTION + "This group is optional and is relevant only for devices + supporting the priority forwarding operations defined by + + + + IEEE 802.1D and that have interface media types that + support native Access Priority, e.g., IEEE 802.5." + + GROUP pBridgePortGarpGroup + DESCRIPTION + "This group is mandatory for devices supporting any + of the GARP applications: e.g., GMRP, defined by the + extended filtering services of 802.1D; or GVRP, + defined by 802.1Q (refer to the Q-BRIDGE-MIB for + conformance statements for GVRP)." + + GROUP pBridgePortGmrpGroup + DESCRIPTION + "This group is mandatory for devices supporting the + GMRP application, as defined by IEEE 802.1D Extended + Filtering Services." + + GROUP pBridgeHCPortGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports that map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP pBridgePortOverflowGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports that map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + OBJECT dot1dPortNumTrafficClasses + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dTrafficClass + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dRegenUserPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pBridgeCompliances 1 } + + + + +pBridgeCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of Priority + and Multicast Filtering extended bridging services." + + MODULE + MANDATORY-GROUPS { pBridgeExtCapGroup } + + GROUP pBridgeDeviceGmrpGroup + DESCRIPTION + "This group is mandatory for devices supporting the GMRP + application, defined by IEEE 802.1D Extended Filtering + Services." + + GROUP pBridgeDevicePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE + 802.1D." + + GROUP pBridgeDefaultPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by the + extended bridge services with media types, such as + Ethernet, that do not support native User Priority." + + GROUP pBridgeRegenPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D + and that have interface media types that support + native User Priority, e.g., IEEE 802.5." + + GROUP pBridgePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D." + + GROUP pBridgeAccessPriorityGroup + DESCRIPTION + "This group is optional and is relevant only for devices + supporting the priority forwarding operations defined by + IEEE 802.1D and that have interface media types that + support native Access Priority, e.g., IEEE 802.5." + + GROUP pBridgePortGarpGroup + + + + DESCRIPTION + "This group is mandatory for devices supporting any + of the GARP applications: e.g., GMRP, defined by the + extended filtering services of 802.1D; or GVRP, + defined by 802.1Q (refer to the Q-BRIDGE-MIB for + conformance statements for GVRP)." + + GROUP pBridgePortGmrpGroup2 + DESCRIPTION + "This group is mandatory for devices supporting the + GMRP application, as defined by IEEE 802.1D Extended + Filtering Services." + + GROUP pBridgeHCPortGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports that map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP pBridgePortOverflowGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports that map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + OBJECT dot1dPortNumTrafficClasses + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dTrafficClass + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dRegenUserPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pBridgeCompliances 2 } + +END diff --git a/mibs/ietf/PARALLEL-MIB b/mibs/ietf/PARALLEL-MIB new file mode 100644 index 0000000..1e426dd --- /dev/null +++ b/mibs/ietf/PARALLEL-MIB @@ -0,0 +1,292 @@ +PARALLEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32 + FROM SNMPv2-SMI + InterfaceIndex + FROM IF-MIB + transmission + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +para MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for Parallel-printer-like hardware devices." + ::= { transmission 34 } + + +-- Generic Parallel-printer-like information + +paraNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports (regardless of their current + state) in the Parallel-printer-like port table." + ::= { para 1 } + + +-- the Parallel-printer-like Port table + +paraPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of paraNumber." + ::= { para 2 } + +paraPortEntry OBJECT-TYPE + SYNTAX ParaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a port." + INDEX { paraPortIndex } + ::= { paraPortTable 1 } + +ParaPortEntry ::= + SEQUENCE { + paraPortIndex + InterfaceIndex, + paraPortType + INTEGER, + paraPortInSigNumber + Integer32, + paraPortOutSigNumber + Integer32 + } + +paraPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the port. By convention + and if possible, hardware port numbers map directly + to external connectors. The value for each port must + remain constant at least from one re-initialization + of the network management agent to the next." + ::= { paraPortEntry 1 } + +paraPortType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + centronics(2), + dataproducts(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's hardware type." + ::= { paraPortEntry 2 } + +paraPortInSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input signals for the port in the + input signal table (paraPortInSigTable). The table + contains entries only for those signals the software + can detect and that are useful to observe." + ::= { paraPortEntry 3 } + +paraPortOutSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output signals for the port in the + output signal table (paraPortOutSigTable). The + table contains entries only for those signals the + software can assert and that are useful to observe." + ::= { paraPortEntry 4 } + +-- Parallel-printer-like Input Signal Table + +paraInSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaInSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port input control signal entries." + ::= { para 3 } + +paraInSigEntry OBJECT-TYPE + SYNTAX ParaInSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Input control signal status for a hardware port." + INDEX { paraInSigPortIndex, paraInSigName } + ::= { paraInSigTable 1 } + +ParaInSigEntry ::= + SEQUENCE { + paraInSigPortIndex + InterfaceIndex, + paraInSigName + INTEGER, + paraInSigState + INTEGER, + paraInSigChanges + Counter32 + } + +paraInSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of paraPortIndex for the port to which + this entry belongs." + ::= { paraInSigEntry 1 } + +paraInSigName OBJECT-TYPE + SYNTAX INTEGER { power(1), online(2), busy(3), + paperout(4), fault(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal." + ::= { paraInSigEntry 2 } + +paraInSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { paraInSigEntry 3 } + +paraInSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { paraInSigEntry 4 } + + +-- Output Signal Table + +paraOutSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaOutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port output control signal entries." + ::= { para 4 } + +paraOutSigEntry OBJECT-TYPE + SYNTAX ParaOutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Output control signal status for a hardware port." + INDEX { paraOutSigPortIndex, paraOutSigName } + ::= { paraOutSigTable 1 } + +ParaOutSigEntry ::= + SEQUENCE { + paraOutSigPortIndex + InterfaceIndex, + paraOutSigName + INTEGER, + paraOutSigState + INTEGER, + paraOutSigChanges + Counter32 + } + +paraOutSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of paraPortIndex for the port to which + this entry belongs." + ::= { paraOutSigEntry 1 } + +paraOutSigName OBJECT-TYPE + SYNTAX INTEGER { power(1), online(2), busy(3), + paperout(4), fault(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal." + ::= { paraOutSigEntry 2 } + +paraOutSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { paraOutSigEntry 3 } + +paraOutSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { paraOutSigEntry 4 } + + +-- conformance information + +paraConformance OBJECT IDENTIFIER ::= { para 5 } + +paraGroups OBJECT IDENTIFIER ::= { paraConformance 1 } +paraCompliances OBJECT IDENTIFIER ::= { paraConformance 2 } + +-- compliance statements + +paraCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have Parallel-printer-like hardware + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { paraGroup } + ::= { paraCompliances 1 } + + +-- units of conformance + +paraGroup OBJECT-GROUP + OBJECTS { paraNumber, paraPortIndex, paraPortType, + paraPortInSigNumber, paraPortOutSigNumber, + paraInSigPortIndex, paraInSigName, + paraInSigState, paraInSigChanges, + paraOutSigPortIndex, paraOutSigName, + paraOutSigState, paraOutSigChanges } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all Parallel-printer-like interfaces." + ::= { paraGroups 1 } + +END diff --git a/mibs/ietf/PIM-MIB b/mibs/ietf/PIM-MIB new file mode 100644 index 0000000..99bddbc --- /dev/null +++ b/mibs/ietf/PIM-MIB @@ -0,0 +1,924 @@ +PIM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental, + NOTIFICATION-TYPE, + Integer32, IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ipMRouteGroup, ipMRouteSource, + ipMRouteSourceMask, ipMRouteNextHopGroup, + ipMRouteNextHopSource, ipMRouteNextHopSourceMask, + ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress FROM IPMROUTE-STD-MIB + InterfaceIndex FROM IF-MIB; + +pimMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF IDMR Working Group." + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of PIM routers." + REVISION "200009280000Z" -- September 28, 2000 + DESCRIPTION + "Initial version, published as RFC 2934." + ::= { experimental 61 } + +pimMIBObjects OBJECT IDENTIFIER ::= { pimMIB 1 } + +pimTraps OBJECT IDENTIFIER ::= { pimMIBObjects 0 } + +pim OBJECT IDENTIFIER ::= { pimMIBObjects 1 } + +pimJoinPruneInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "The default interval at which periodic PIM-SM Join/Prune + messages are to be sent." + ::= { pim 1 } + +-- The PIM Interface Table + +pimInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM interfaces. + IGMP and PIM are enabled on all interfaces listed in this + table." + ::= { pim 2 } + +pimInterfaceEntry OBJECT-TYPE + SYNTAX PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimInterfaceTable." + INDEX { pimInterfaceIfIndex } + ::= { pimInterfaceTable 1 } + +PimInterfaceEntry ::= SEQUENCE { + pimInterfaceIfIndex InterfaceIndex, + pimInterfaceAddress IpAddress, + pimInterfaceNetMask IpAddress, + pimInterfaceMode INTEGER, + pimInterfaceDR IpAddress, + pimInterfaceHelloInterval Integer32, + pimInterfaceStatus RowStatus, + pimInterfaceJoinPruneInterval Integer32, + pimInterfaceCBSRPreference Integer32 +} + +pimInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of this PIM interface." + ::= { pimInterfaceEntry 1 } + +pimInterfaceAddress OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The IP address of the PIM interface." + ::= { pimInterfaceEntry 2 } + +pimInterfaceNetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network mask for the IP address of the PIM interface." + ::= { pimInterfaceEntry 3 } + +pimInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { dense(1), sparse(2), sparseDense(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured mode of this PIM interface. A value of + sparseDense is only valid for PIMv1." + DEFVAL { dense } + ::= { pimInterfaceEntry 4 } + +pimInterfaceDR OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Designated Router on this PIM interface. For point-to- + point interfaces, this object has the value 0.0.0.0." + ::= { pimInterfaceEntry 5 } + +pimInterfaceHelloInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Hello messages are transmitted + on this interface." + DEFVAL { 30 } + ::= { pimInterfaceEntry 6 } + +pimInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The status of this entry. Creating the entry enables PIM + on the interface; destroying the entry disables PIM on the + interface." + ::= { pimInterfaceEntry 7 } + +pimInterfaceJoinPruneInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Join/Prune messages are + transmitted on this PIM interface. The default value of + this object is the pimJoinPruneInterval." + ::= { pimInterfaceEntry 8 } + +pimInterfaceCBSRPreference OBJECT-TYPE + SYNTAX Integer32 (-1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preference value for the local interface as a candidate + bootstrap router. The value of -1 is used to indicate that + the local interface is not a candidate BSR interface." + DEFVAL { 0 } + ::= { pimInterfaceEntry 9 } + + +-- The PIM Neighbor Table + +pimNeighborTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM neighbors." + ::= { pim 3 } + +pimNeighborEntry OBJECT-TYPE + SYNTAX PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNeighborTable." + INDEX { pimNeighborAddress } + ::= { pimNeighborTable 1 } + + +PimNeighborEntry ::= SEQUENCE { + pimNeighborAddress IpAddress, + pimNeighborIfIndex InterfaceIndex, + pimNeighborUpTime TimeTicks, + pimNeighborExpiryTime TimeTicks, + pimNeighborMode INTEGER +} + +pimNeighborAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the PIM neighbor for which this entry + contains information." + ::= { pimNeighborEntry 1 } + +pimNeighborIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNeighborEntry 2 } + +pimNeighborUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this PIM neighbor (last) became a neighbor + of the local router." + ::= { pimNeighborEntry 3 } + +pimNeighborExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before this PIM neighbor will be + aged out." + ::= { pimNeighborEntry 4 } + +pimNeighborMode OBJECT-TYPE + SYNTAX INTEGER { dense(1), sparse(2) } + MAX-ACCESS read-only + STATUS deprecated + + + DESCRIPTION + "The active PIM mode of this neighbor. This object is + deprecated for PIMv2 routers since all neighbors on the + interface must be either dense or sparse as determined by + the protocol running on the interface." + ::= { pimNeighborEntry 5 } + +-- +-- The PIM IP Multicast Route Table +-- + +pimIpMRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimIpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM-specific information on + a subset of the rows of the ipMRouteTable defined in the IP + Multicast MIB." + ::= { pim 4 } + +pimIpMRouteEntry OBJECT-TYPE + SYNTAX PimIpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimIpMRouteTable. There + is one entry per entry in the ipMRouteTable whose incoming + interface is running PIM." + INDEX { ipMRouteGroup, ipMRouteSource, ipMRouteSourceMask } + ::= { pimIpMRouteTable 1 } + +PimIpMRouteEntry ::= SEQUENCE { + pimIpMRouteUpstreamAssertTimer TimeTicks, + pimIpMRouteAssertMetric Integer32, + pimIpMRouteAssertMetricPref Integer32, + pimIpMRouteAssertRPTBit TruthValue, + pimIpMRouteFlags BITS +} + +pimIpMRouteUpstreamAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the router changes its upstream + neighbor back to its RPF neighbor. This timer is called the + Assert timer in the PIM Sparse and Dense mode specification. + + + A value of 0 indicates that no Assert has changed the + upstream neighbor away from the RPF neighbor." + ::= { pimIpMRouteEntry 1 } + +pimIpMRouteAssertMetric OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric advertised by the assert winner on the upstream + interface, or 0 if no such assert is in received." + ::= { pimIpMRouteEntry 2 } + +pimIpMRouteAssertMetricPref OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The preference advertised by the assert winner on the + upstream interface, or 0 if no such assert is in effect." + ::= { pimIpMRouteEntry 3 } + +pimIpMRouteAssertRPTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the RPT-bit advertised by the assert winner on + the upstream interface, or false if no such assert is in + effect." + ::= { pimIpMRouteEntry 4 } + +pimIpMRouteFlags OBJECT-TYPE + SYNTAX BITS { + rpt(0), + spt(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes PIM-specific flags related to a + multicast state entry. See the PIM Sparse Mode + specification for the meaning of the RPT and SPT bits." + ::= { pimIpMRouteEntry 5 } + +-- +-- The PIM Next Hop Table +-- + + +pimIpMRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimIpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM-specific information on + a subset of the rows of the ipMRouteNextHopTable defined in + the IP Multicast MIB." + ::= { pim 7 } + +pimIpMRouteNextHopEntry OBJECT-TYPE + SYNTAX PimIpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimIpMRouteNextHopTable. + There is one entry per entry in the ipMRouteNextHopTable + whose interface is running PIM and whose + ipMRouteNextHopState is pruned(1)." + INDEX { ipMRouteNextHopGroup, ipMRouteNextHopSource, + ipMRouteNextHopSourceMask, ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress } + ::= { pimIpMRouteNextHopTable 1 } + +PimIpMRouteNextHopEntry ::= SEQUENCE { + pimIpMRouteNextHopPruneReason INTEGER +} + +pimIpMRouteNextHopPruneReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + prune (2), + assert (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates why the downstream interface was + pruned, whether in response to a PIM prune message or due to + PIM Assert processing." + ::= { pimIpMRouteNextHopEntry 2 } + +-- The PIM RP Table + +pimRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimRPEntry + MAX-ACCESS not-accessible + STATUS deprecated + + + DESCRIPTION + "The (conceptual) table listing PIM version 1 information + for the Rendezvous Points (RPs) for IP multicast groups. + This table is deprecated since its function is replaced by + the pimRPSetTable for PIM version 2." + ::= { pim 5 } + +pimRPEntry OBJECT-TYPE + SYNTAX PimRPEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) in the pimRPTable. There is one + entry per RP address for each IP multicast group." + INDEX { pimRPGroupAddress, pimRPAddress } + ::= { pimRPTable 1 } + +PimRPEntry ::= SEQUENCE { + pimRPGroupAddress IpAddress, + pimRPAddress IpAddress, + pimRPState INTEGER, + pimRPStateTimer TimeTicks, + pimRPLastChange TimeTicks, + pimRPRowStatus RowStatus +} + +pimRPGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IP multicast group address for which this entry + contains information about an RP." + ::= { pimRPEntry 1 } + +pimRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The unicast address of the RP." + ::= { pimRPEntry 2 } + +pimRPState OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + "The state of the RP." + ::= { pimRPEntry 3 } + +pimRPStateTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The minimum time remaining before the next state change. + When pimRPState is up, this is the minimum time which must + expire until it can be declared down. When pimRPState is + down, this is the time until it will be declared up (in + order to retry)." + ::= { pimRPEntry 4 } + +pimRPLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime at the time when the corresponding + instance of pimRPState last changed its value." + ::= { pimRPEntry 5 } + +pimRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { pimRPEntry 6 } + +-- The PIM RP-Set Table + +pimRPSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM information for + candidate Rendezvous Points (RPs) for IP multicast groups. + When the local router is the BSR, this information is + obtained from received Candidate-RP-Advertisements. When + the local router is not the BSR, this information is + obtained from received RP-Set messages." + ::= { pim 6 } + + + +pimRPSetEntry OBJECT-TYPE + SYNTAX PimRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimRPSetTable." + INDEX { pimRPSetComponent, pimRPSetGroupAddress, + pimRPSetGroupMask, pimRPSetAddress } + ::= { pimRPSetTable 1 } + +PimRPSetEntry ::= SEQUENCE { + + pimRPSetGroupAddress IpAddress, + pimRPSetGroupMask IpAddress, + pimRPSetAddress IpAddress, + pimRPSetHoldTime Integer32, + pimRPSetExpiryTime TimeTicks, + pimRPSetComponent Integer32 +} + +pimRPSetGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + pimRPSetGroupMask, gives the group prefix for which this + entry contains information about the Candidate-RP." + ::= { pimRPSetEntry 1 } + +pimRPSetGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address mask which, when combined with + pimRPSetGroupAddress, gives the group prefix for which this + entry contains information about the Candidate-RP." + ::= { pimRPSetEntry 2 } + +pimRPSetAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the Candidate-RP." + ::= { pimRPSetEntry 3 } + + + +pimRPSetHoldTime OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The holdtime of a Candidate-RP. If the local router is not + the BSR, this value is 0." + ::= { pimRPSetEntry 4 } + +pimRPSetExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before the Candidate-RP will be + declared down. If the local router is not the BSR, this + value is 0." + ::= { pimRPSetEntry 5 } + +pimRPSetComponent OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " A number uniquely identifying the component. Each + protocol instance connected to a separate domain should have + a different index value." + ::= { pimRPSetEntry 6 } + +-- +-- Note: { pim 8 } through { pim 10 } were used in older versions +-- of this MIB. Since some earlier versions of this MIB have been +-- widely-deployed, these values must not be used in the future, +-- as long the MIB is rooted under { experimental 61 }. +-- + +-- The PIM Candidate-RP Table + +pimCandidateRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimCandidateRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IP multicast groups for + which the local router is to advertise itself as a + Candidate-RP when the value of pimComponentCRPHoldTime is + non-zero. If this table is empty, then the local router + + + will advertise itself as a Candidate-RP for all groups + (providing the value of pimComponentCRPHoldTime is non- + zero)." + ::= { pim 11 } + +pimCandidateRPEntry OBJECT-TYPE + SYNTAX PimCandidateRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimCandidateRPTable." + INDEX { pimCandidateRPGroupAddress, + pimCandidateRPGroupMask } + ::= { pimCandidateRPTable 1 } + +PimCandidateRPEntry ::= SEQUENCE { + pimCandidateRPGroupAddress IpAddress, + pimCandidateRPGroupMask IpAddress, + pimCandidateRPAddress IpAddress, + pimCandidateRPRowStatus RowStatus +} + +pimCandidateRPGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + pimCandidateRPGroupMask, identifies a group prefix for which + the local router will advertise itself as a Candidate-RP." + ::= { pimCandidateRPEntry 1 } + +pimCandidateRPGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address mask which, when combined with + pimCandidateRPGroupMask, identifies a group prefix for which + the local router will advertise itself as a Candidate-RP." + ::= { pimCandidateRPEntry 2 } + +pimCandidateRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The (unicast) address of the interface which will be + + + advertised as a Candidate-RP." + ::= { pimCandidateRPEntry 3 } + +pimCandidateRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { pimCandidateRPEntry 4 } + +-- The PIM Component Table + +pimComponentTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimComponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing objects specific to a PIM + domain. One row exists for each domain to which the router + is connected. A PIM-SM domain is defined as an area of the + network over which Bootstrap messages are forwarded. + Typically, a PIM-SM router will be a member of exactly one + domain. This table also supports, however, routers which + may form a border between two PIM-SM domains and do not + forward Bootstrap messages between them." + ::= { pim 12 } + +pimComponentEntry OBJECT-TYPE + SYNTAX PimComponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimComponentTable." + INDEX { pimComponentIndex } + ::= { pimComponentTable 1 } + +PimComponentEntry ::= SEQUENCE { + pimComponentIndex Integer32, + pimComponentBSRAddress IpAddress, + pimComponentBSRExpiryTime TimeTicks, + pimComponentCRPHoldTime Integer32, + pimComponentStatus RowStatus +} + +pimComponentIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying the component. Each protocol + instance connected to a separate domain should have a + different index value. Routers that only support membership + in a single PIM-SM domain should use a pimComponentIndex + value of 1." + ::= { pimComponentEntry 1 } + +pimComponentBSRAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the bootstrap router (BSR) for the local + PIM region." + ::= { pimComponentEntry 2 } + +pimComponentBSRExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before the bootstrap router in + the local domain will be declared down. For candidate BSRs, + this is the time until the component sends an RP-Set + message. For other routers, this is the time until it may + accept an RP-Set message from a lower candidate BSR." + ::= { pimComponentEntry 3 } + +pimComponentCRPHoldTime OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The holdtime of the component when it is a candidate RP in + the local domain. The value of 0 is used to indicate that + the local system is not a Candidate-RP." + DEFVAL { 0 } + ::= { pimComponentEntry 4 } + +pimComponentStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The status of this entry. Creating the entry creates + another protocol instance; destroying the entry disables a + protocol instance." + ::= { pimComponentEntry 5 } + +-- PIM Traps + +pimNeighborLoss NOTIFICATION-TYPE + OBJECTS { + pimNeighborIfIndex + } + STATUS current + DESCRIPTION + "A pimNeighborLoss trap signifies the loss of an adjacency + with a neighbor. This trap should be generated when the + neighbor timer expires, and the router has no other + neighbors on the same interface with a lower IP address than + itself." + ::= { pimTraps 1 } + +-- conformance information + +pimMIBConformance OBJECT IDENTIFIER ::= { pimMIB 2 } +pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 } +pimMIBGroups OBJECT IDENTIFIER ::= { pimMIBConformance 2 } + + +-- compliance statements + +pimV1MIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for routers running PIMv1 and + implementing the PIM MIB." + MODULE -- this module + MANDATORY-GROUPS { pimV1MIBGroup } + + ::= { pimMIBCompliances 1 } + +pimSparseV2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running PIM Sparse + Mode and implementing the PIM MIB." + MODULE -- this module + MANDATORY-GROUPS { pimV2MIBGroup } + + GROUP pimV2CandidateRPMIBGroup + + + DESCRIPTION + "This group is mandatory if the router is capable of being a + Candidate RP." + + OBJECT pimInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pimMIBCompliances 2 } + +pimDenseV2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running PIM Dense Mode + and implementing the PIM MIB." + MODULE -- this module + + MANDATORY-GROUPS { pimDenseV2MIBGroup } + + OBJECT pimInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pimMIBCompliances 3 } + +-- units of conformance + +pimNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimNeighborLoss } + STATUS current + DESCRIPTION + "A collection of notifications for signaling important PIM + events." + ::= { pimMIBGroups 1 } + +pimV2MIBGroup OBJECT-GROUP + OBJECTS { pimJoinPruneInterval, pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceDR, pimInterfaceHelloInterval, + pimInterfaceStatus, pimInterfaceJoinPruneInterval, + pimInterfaceCBSRPreference, pimInterfaceMode, + pimRPSetHoldTime, pimRPSetExpiryTime, + pimComponentBSRAddress, pimComponentBSRExpiryTime, + pimComponentCRPHoldTime, pimComponentStatus, + pimIpMRouteFlags, pimIpMRouteUpstreamAssertTimer + + + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM Sparse + Mode (version 2) routers." + ::= { pimMIBGroups 2 } + +pimDenseV2MIBGroup OBJECT-GROUP + OBJECTS { pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceDR, pimInterfaceHelloInterval, + pimInterfaceStatus, pimInterfaceMode + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM Dense + Mode (version 2) routers." + ::= { pimMIBGroups 5 } + +pimV2CandidateRPMIBGroup OBJECT-GROUP + OBJECTS { pimCandidateRPAddress, + pimCandidateRPRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects to support configuration of which + groups a router is to advertise itself as a Candidate-RP." + ::= { pimMIBGroups 3 } + +pimV1MIBGroup OBJECT-GROUP + OBJECTS { pimJoinPruneInterval, pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimNeighborMode, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceJoinPruneInterval, pimInterfaceStatus, + pimInterfaceMode, pimInterfaceDR, + pimInterfaceHelloInterval, + pimRPState, pimRPStateTimer, + pimRPLastChange, pimRPRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects to support management of PIM + (version 1) routers." + ::= { pimMIBGroups 4 } + +pimNextHopGroup OBJECT-GROUP + + + OBJECTS { pimIpMRouteNextHopPruneReason } + STATUS current + DESCRIPTION + "A collection of optional objects to provide per-next hop + information for diagnostic purposes. Supporting this group + may add a large number of instances to a tree walk, but the + information in this group can be extremely useful in + tracking down multicast connectivity problems." + ::= { pimMIBGroups 6 } + +pimAssertGroup OBJECT-GROUP + OBJECTS { pimIpMRouteAssertMetric, pimIpMRouteAssertMetricPref, + pimIpMRouteAssertRPTBit } + STATUS current + DESCRIPTION + "A collection of optional objects to provide extra + information about the assert election process. There is no + protocol reason to keep such information, but some + implementations may already keep this information and make + it available. These objects can also be very useful in + debugging connectivity or duplicate packet problems, + especially if the assert winner does not support the PIM and + IP Multicast MIBs." + ::= { pimMIBGroups 7 } + +END diff --git a/mibs/ietf/PIM-STD-MIB b/mibs/ietf/PIM-STD-MIB new file mode 100644 index 0000000..3042c14 --- /dev/null +++ b/mibs/ietf/PIM-STD-MIB @@ -0,0 +1,3967 @@ +PIM-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Counter64, Gauge32, + TimeTicks FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + RowStatus, TruthValue, + StorageType FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddressPrefixLength, + InetAddress, InetVersion FROM INET-ADDRESS-MIB -- [RFC4001] + IANAipRouteProtocol FROM IANA-RTPROTO-MIB; -- [RTPROTO] + +pimStdMIB MODULE-IDENTITY + LAST-UPDATED "200711020000Z" -- 2 November 2007 + ORGANIZATION + "IETF Protocol Independent Multicast (PIM) Working Group" + CONTACT-INFO + "Email: pim@ietf.org + WG charter: + + + + + http://www.ietf.org/html.charters/pim-charter.html" + DESCRIPTION + "The MIB module for management of PIM routers. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5060; see the RFC itself for full + legal notices." + REVISION "200711020000Z" -- 2 November 2007 + DESCRIPTION "Initial version, published as RFC 5060." + ::= { mib-2 157 } + +-- +-- Textual Conventions +-- + +PimMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The PIM mode in which a group is operating. + + none(1) The group is not using PIM, which may be the + case if, for example, it is a link-local or + unroutable group address. + + ssm(2) Source-Specific Multicast (SSM) with PIM Sparse + Mode. + + asm(3) Any Source Multicast (ASM) with PIM Sparse + Mode. + + bidir(4) Bidirectional PIM. + + dm(5) PIM Dense Mode. + + other(6) Any other PIM mode." + + SYNTAX INTEGER { + none(1), + ssm(2), + asm(3), + bidir(4), + dm(5), + other(6) + } + +PimGroupMappingOriginType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "The mechanism by which a PIM group mapping was learned. + + fixed(1) Link-local or unroutable group mappings. + + configRp(2) Local static RP configuration. + + configSsm(3) Local SSM Group configuration. + + bsr(4) The PIM Bootstrap Router (BSR) mechanism. + + autoRP(5) Cisco's Auto-RP mechanism. + + embedded(6) The Embedded-RP mechanism where the RP address + is embedded in the multicast group address. + + other(7) Any other mechanism." + + REFERENCE "RFC 3569, RFC 3956, and RFC 5059" + SYNTAX INTEGER { + fixed(1), + configRp(2), + configSsm(3), + bsr(4), + autoRP(5), + embedded(6), + other(7) + } + +-- +-- Top-level structure +-- + +pimNotifications OBJECT IDENTIFIER ::= { pimStdMIB 0 } +pim OBJECT IDENTIFIER ::= { pimStdMIB 1 } + +pimKeepalivePeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The duration of the Keepalive Timer. This is the period + during which the PIM router will maintain (S,G) state in the + absence of explicit (S,G) local membership or (S,G) join + messages received to maintain it. This timer period is + called the Keepalive_Period in the PIM-SM specification. It + is called the SourceLifetime in the PIM-DM specification. + + + + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 210 } + ::= { pim 14 } + +pimRegisterSuppressionTime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The duration of the Register Suppression Timer. This is + the period during which a PIM Designated Router (DR) stops + sending Register-encapsulated data to the Rendezvous Point + (RP) after receiving a Register-Stop message. This object + is used to run timers both at the DR and at the RP. This + timer period is called the Register_Suppression_Time in the + PIM-SM specification. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 60 } + ::= { pim 15 } + +pimStarGEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimStarGTable." + ::= { pim 16 } + +pimStarGIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimStarGITable." + ::= { pim 17 } + +pimSGEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGTable." + + + + ::= { pim 18 } + +pimSGIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGITable." + ::= { pim 19 } + +pimSGRptEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGRptTable." + ::= { pim 20 } + +pimSGRptIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGRptITable." + ::= { pim 21 } + +pimOutAsserts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Asserts sent by this router. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 22 } + +pimInAsserts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Asserts received by this router. Asserts + are multicast to all routers on a network. This counter is + incremented by all routers that receive an assert, not only + those routers that are contesting the assert. + + + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 23 } + +pimLastAssertInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface on which this router most recently sent or + received an assert, or zero if this router has not sent or + received an assert." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 24 } + +pimLastAssertGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the multicast group address in the most + recently sent or received assert. If this router has not + sent or received an assert, then this object is set to + unknown(0)." + ::= { pim 25 } + +pimLastAssertGroupAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group address in the most recently sent or + received assert. The InetAddressType is given by the + pimLastAssertGroupAddressType object." + ::= { pim 26 } + +pimLastAssertSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the source address in the most recently + sent or received assert. If the most recent assert was + (*,G), or if this router has not sent or received an assert, + then this object is set to unknown(0)." + ::= { pim 27 } + + + +pimLastAssertSourceAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address in the most recently sent or received + assert. The InetAddressType is given by the + pimLastAssertSourceAddressType object." + ::= { pim 28 } + +pimNeighborLossNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between pimNeighborLoss + notifications originated by this router. The maximum value + 65535 represents an 'infinite' time, in which case, no + pimNeighborLoss notifications are ever sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 0 } + ::= { pim 29 } + +pimNeighborLossCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbor loss events that have occurred. + + This counter is incremented when the neighbor timer expires, + and the router has no other neighbors on the same interface + with the same IP version and a lower IP address than itself. + + This counter is incremented whenever a pimNeighborLoss + notification would be generated. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pim 30 } + +pimInvalidRegisterNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (10..65535) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimInvalidRegister notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimInvalidRegister notifications are ever + sent. + + The non-zero minimum allowed value provides resilience + against propagation of denial-of-service attacks from the + data and control planes to the network management plane. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 31 } + +pimInvalidRegisterMsgsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid PIM Register messages that have been + received by this device. + + A PIM Register message is invalid if either + + o the destination address of the Register message does not + match the Group to RP mapping on this device, or + + o this device believes the group address to be within an + SSM address range, but this Register implies ASM usage. + + These conditions can occur transiently while RP mapping + changes propagate through the network. If this counter is + incremented repeatedly over several minutes, then there is a + persisting configuration error that requires correction. + + The active Group to RP mapping on this device is specified + by the object pimGroupMappingPimMode. If there is no such + mapping, then the object pimGroupMappingPimMode is absent. + The RP address contained in the invalid Register is + pimInvalidRegisterRp. + + Multicast data carried by invalid Register messages is + discarded. The discarded data is from a source directly + + + + connected to pimInvalidRegisterOrigin, and is addressed to + pimInvalidRegisterGroup. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.4.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pim 32 } + +pimInvalidRegisterAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type stored in pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, and pimInvalidRegisterRp. + + If no invalid Register messages have been received, then + this object is set to unknown(0)." + ::= { pim 33 } + +pimInvalidRegisterOrigin OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the last invalid Register message + received by this device." + ::= { pim 34 } + +pimInvalidRegisterGroup OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP multicast group address to which the last invalid + Register message received by this device was addressed." + ::= { pim 35 } + +pimInvalidRegisterRp OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RP address to which the last invalid Register message + received by this device was delivered." + ::= { pim 36 } + + + +pimInvalidJoinPruneNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (10..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimInvalidJoinPrune notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimInvalidJoinPrune notifications are ever + sent. + + The non-zero minimum allowed value provides resilience + against propagation of denial-of-service attacks from the + control plane to the network management plane. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 37 } + +pimInvalidJoinPruneMsgsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid PIM Join/Prune messages that have + been received by this device. + + A PIM Join/Prune message is invalid if either + + o the Group to RP mapping specified by this message does not + match the Group to RP mapping on this device, or + + o this device believes the group address to be within an + SSM address range, but this Join/Prune (*,G) or (S,G,rpt) + implies ASM usage. + + These conditions can occur transiently while RP mapping + changes propagate through the network. If this counter is + incremented repeatedly over several minutes, then there is a + persisting configuration error that requires correction. + + The active Group to RP mapping on this device is specified + by the object pimGroupMappingPimMode. If there is no such + mapping, then the object pimGroupMappingPimMode is absent. + The RP address contained in the invalid Join/Prune is + pimInvalidJoinPruneRp. + + + + Invalid Join/Prune messages are discarded. This may result + in loss of multicast data affecting listeners downstream of + pimInvalidJoinPruneOrigin, for multicast data addressed to + pimInvalidJoinPruneGroup. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.5.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pim 38 } + +pimInvalidJoinPruneAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type stored in pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, and pimInvalidJoinPruneRp. + + If no invalid Join/Prune messages have been received, this + object is set to unknown(0)." + ::= { pim 39 } + +pimInvalidJoinPruneOrigin OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the last invalid Join/Prune message + received by this device." + ::= { pim 40 } + +pimInvalidJoinPruneGroup OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP multicast group address carried in the last + invalid Join/Prune message received by this device." + ::= { pim 41 } + +pimInvalidJoinPruneRp OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RP address carried in the last invalid Join/Prune + + + + message received by this device." + ::= { pim 42 } + +pimRPMappingNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimRPMappingChange notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimRPMappingChange notifications are ever + sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 43 } + +pimRPMappingChangeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of changes to active RP mappings on this device. + + Information about active RP mappings is available in + pimGroupMappingTable. Only changes to active mappings cause + this counter to be incremented. That is, changes that + modify the pimGroupMappingEntry with the highest precedence + for a group (lowest value of pimGroupMappingPrecedence). + + Such changes may result from manual configuration of this + device, or from automatic RP mapping discovery methods + including the PIM Bootstrap Router (BSR) mechanism. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 5059" + ::= { pim 44 } + +pimInterfaceElectionNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The minimum time that must elapse between + pimInterfaceElection notifications originated by this + router. The default value of 65535 represents an 'infinite' + time, in which case, no pimInterfaceElection notifications + are ever sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 45 } + +pimInterfaceElectionWinCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this device has been elected DR or DF + on any interface. + + Elections occur frequently on newly-active interfaces, as + triggered Hellos establish adjacencies. This counter is not + incremented for elections on an interface until the first + periodic Hello has been sent. If this router is the DR or + DF at the time of sending the first periodic Hello after + interface activation, then this counter is incremented + (once) at that time. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.3.2 and RFC 5015 section 3.5.2" + ::= { pim 46 } + +pimRefreshInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between successive State Refresh messages sent + by an Originator. This timer period is called the + RefreshInterval in the PIM-DM specification. This object is + used only by PIM-DM. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 3973 section 4.8" + + + + DEFVAL { 60 } + ::= { pim 47 } + +pimDeviceConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type used for the global PIM configuration of + this device, comprised of the objects listed below. If this + storage type takes the value 'permanent', write-access to + the listed objects need not be allowed. + + The objects described by this storage type are: + pimKeepalivePeriod, pimRegisterSuppressionTime, + pimNeighborLossNotificationPeriod, + pimInvalidRegisterNotificationPeriod, + pimInvalidJoinPruneNotificationPeriod, + pimRPMappingNotificationPeriod, + pimInterfaceElectionNotificationPeriod, and + pimRefreshInterval." + DEFVAL { nonVolatile } + ::= { pim 48 } + +-- +-- The PIM Interface Table +-- + +pimInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM interfaces. + PIM is enabled on all interfaces listed in this table." + ::= { pim 1 } + +pimInterfaceEntry OBJECT-TYPE + SYNTAX PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimInterfaceTable. This + entry is preserved on agent restart." + INDEX { pimInterfaceIfIndex, + pimInterfaceIPVersion } + ::= { pimInterfaceTable 1 } + + + + +PimInterfaceEntry ::= SEQUENCE { + pimInterfaceIfIndex InterfaceIndex, + pimInterfaceIPVersion InetVersion, + pimInterfaceAddressType InetAddressType, + pimInterfaceAddress InetAddress, + pimInterfaceGenerationIDValue Unsigned32, + pimInterfaceDR InetAddress, + pimInterfaceDRPriority Unsigned32, + pimInterfaceDRPriorityEnabled TruthValue, + pimInterfaceHelloInterval Unsigned32, + pimInterfaceTrigHelloInterval Unsigned32, + pimInterfaceHelloHoldtime Unsigned32, + pimInterfaceJoinPruneInterval Unsigned32, + pimInterfaceJoinPruneHoldtime Unsigned32, + pimInterfaceDFElectionRobustness Unsigned32, + pimInterfaceLanDelayEnabled TruthValue, + pimInterfacePropagationDelay Unsigned32, + pimInterfaceOverrideInterval Unsigned32, + pimInterfaceEffectPropagDelay Unsigned32, + pimInterfaceEffectOverrideIvl Unsigned32, + pimInterfaceSuppressionEnabled TruthValue, + pimInterfaceBidirCapable TruthValue, + pimInterfaceDomainBorder TruthValue, + pimInterfaceStubInterface TruthValue, + pimInterfacePruneLimitInterval Unsigned32, + pimInterfaceGraftRetryInterval Unsigned32, + pimInterfaceSRPriorityEnabled TruthValue, + pimInterfaceStatus RowStatus, + pimInterfaceStorageType StorageType +} + +pimInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of this PIM interface." + ::= { pimInterfaceEntry 1 } + +pimInterfaceIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this PIM interface. A physical interface + may be configured in multiple modes concurrently, e.g., IPv4 + and IPv6; however, the traffic is considered to be logically + separate." + + + + ::= { pimInterfaceEntry 2 } + +pimInterfaceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of this PIM interface." + ::= { pimInterfaceEntry 3 } + +pimInterfaceAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of this router on this PIM + interface. The InetAddressType is given by the + pimInterfaceAddressType object." + REFERENCE "RFC 4601 sections 4.1.6, 4.3.1-4.3.4, and 4.5.1" + ::= { pimInterfaceEntry 4 } + +pimInterfaceGenerationIDValue OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Generation ID this router inserted in the + last PIM Hello message it sent on this interface." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimInterfaceEntry 5 } + +pimInterfaceDR OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of the Designated Router on this PIM + interface. The InetAddressType is given by the + pimInterfaceAddressType object." + REFERENCE "RFC 4601 section 4.3" + ::= { pimInterfaceEntry 6 } + +pimInterfaceDRPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Designated Router Priority value inserted into the DR + + + + Priority option in PIM Hello messages transmitted on this + interface. Numerically higher values for this object + indicate higher priorities." + REFERENCE "RFC 4601 section 4.3.2" + DEFVAL { 1 } + ::= { pimInterfaceEntry 7 } + +pimInterfaceDRPriorityEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the DR Priority option." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimInterfaceEntry 8 } + +pimInterfaceHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..18000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Hello messages are transmitted + on this interface. This object corresponds to the + 'Hello_Period' timer value defined in the PIM-SM + specification. A value of zero represents an 'infinite' + interval, and indicates that periodic PIM Hello messages + should not be sent on this interface." + REFERENCE "RFC 4601 section 9" + DEFVAL { 30 } + ::= { pimInterfaceEntry 9 } + +pimInterfaceTrigHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time before this router sends a triggered PIM + Hello message on this interface. This object corresponds to + the 'Trigered_Hello_Delay' timer value defined in the PIM-SM + specification. A value of zero has no special meaning and + indicates that triggered PIM Hello messages should always be + sent immediately." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 5 } + ::= { pimInterfaceEntry 10 } + + + +pimInterfaceHelloHoldtime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value set in the Holdtime field of PIM Hello messages + transmitted on this interface. A value of 65535 represents + an 'infinite' holdtime. Implementations are recommended + to use a holdtime that is 3.5 times the value of + pimInterfaceHelloInterval, or 65535 if + pimInterfaceHelloInterval is set to zero." + REFERENCE "RFC 4601 sections 4.3.2 and 4.9.2" + DEFVAL { 105 } + ::= { pimInterfaceEntry 11 } + +pimInterfaceJoinPruneInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..18000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which this router sends PIM Join/Prune + messages on this PIM interface. This object corresponds to + the 't_periodic' timer value defined in the PIM-SM + specification. A value of zero represents an 'infinite' + interval, and indicates that periodic PIM Join/Prune + messages should not be sent on this interface." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 60 } + ::= { pimInterfaceEntry 12 } + +pimInterfaceJoinPruneHoldtime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value inserted into the Holdtime field of a PIM + Join/Prune message sent on this interface. A value of 65535 + represents an 'infinite' holdtime. Implementations are + recommended to use a holdtime that is 3.5 times the value of + pimInterfaceJoinPruneInterval, or 65535 if + pimInterfaceJoinPruneInterval is set to zero. PIM-DM + implementations are recommended to use the value of + pimInterfacePruneLimitInterval." + REFERENCE "RFC 4601 sections 4.5.3 and 4.9.5" + DEFVAL { 210 } + + + + ::= { pimInterfaceEntry 13 } + +pimInterfaceDFElectionRobustness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum number of PIM DF-Election messages that must be + lost in order for DF election on this interface to fail." + DEFVAL { 3 } + ::= { pimInterfaceEntry 14 } + +pimInterfaceLanDelayEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the LAN Prune Delay option." + REFERENCE "RFC 4601 sections 4.3.3 and 4.9.2" + ::= { pimInterfaceEntry 15 } + +pimInterfacePropagationDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected propagation delay between PIM routers on this + network or link. + + This router inserts this value into the Propagation_Delay + field of the LAN Prune Delay option in the PIM Hello + messages sent on this interface. Implementations SHOULD + enforce a lower bound on the permitted values for this + object to allow for scheduling and processing delays within + the local router." + DEFVAL { 500 } + ::= { pimInterfaceEntry 16 } + +pimInterfaceOverrideInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value this router inserts into the Override_Interval + field of the LAN Prune Delay option in the PIM Hello + + + + messages it sends on this interface. + + When overriding a prune, PIM routers pick a random timer + duration up to the value of this object. The more PIM + routers that are active on a network, the more likely it is + that the prune will be overridden after a small proportion + of this time has elapsed. + + The more PIM routers are active on this network, the larger + this object should be to obtain an optimal spread of prune + override latencies." + REFERENCE "RFC 4601 section 4.3.3" + DEFVAL { 2500 } + ::= { pimInterfaceEntry 17 } + +pimInterfaceEffectPropagDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Effective Propagation Delay on this interface. This + object is always 500 if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimInterfaceEntry 18 } + +pimInterfaceEffectOverrideIvl OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Effective Override Interval on this interface. This + object is always 2500 if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimInterfaceEntry 19 } + +pimInterfaceSuppressionEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether join suppression is enabled on this interface. + This object is always TRUE if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + + + + ::= { pimInterfaceEntry 20 } + +pimInterfaceBidirCapable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the Bidirectional-PIM Capable option." + REFERENCE "RFC 5015 section 3.2 and 3.7.4" + ::= { pimInterfaceEntry 21 } + +pimInterfaceDomainBorder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether or not this interface is a PIM domain border. This + includes acting as a border for PIM Bootstrap Router (BSR) + messages, if the BSR mechanism is in use." + DEFVAL { false } + ::= { pimInterfaceEntry 22 } + +pimInterfaceStubInterface OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this interface is a 'stub interface'. If this + object is set to TRUE, then no PIM packets are sent out this + interface, and any received PIM packets are ignored. + + Setting this object to TRUE is a security measure for + interfaces towards untrusted hosts. This allows an + interface to be configured for use with IGMP (Internet Group + Management Protocol) or MLD (Multicast Listener Discovery) + only, which protects the PIM router from forged PIM messages + on the interface. + + To communicate with other PIM routers using this interface, + this object must remain set to FALSE. + + Changing the value of this object while the interface is + operational causes PIM to be disabled and then re-enabled on + this interface." + REFERENCE "RFC 3376, RFC 3810" + DEFVAL { false } + ::= { pimInterfaceEntry 23 } + + + +pimInterfacePruneLimitInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum interval that must transpire between two + successive Prunes sent by a router. This object corresponds + to the 't_limit' timer value defined in the PIM-DM + specification. This object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + DEFVAL { 60 } + ::= { pimInterfaceEntry 24 } + +pimInterfaceGraftRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum interval that must transpire between two + successive Grafts sent by a router. This object corresponds + to the 'Graft_Retry_Period' timer value defined in the + PIM-DM specification. This object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + DEFVAL { 3 } + ::= { pimInterfaceEntry 25 } + +pimInterfaceSRPriorityEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the State Refresh option. This object is used only by + PIM-DM." + ::= { pimInterfaceEntry 26 } + +pimInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry. Creating the entry enables PIM + on the interface; destroying the entry disables PIM on the + interface. + + This status object can be set to active(1) without setting + + + + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimInterfaceEntry 27 } + +pimInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimInterfaceEntry 28 } + +-- +-- The PIM Neighbor Table +-- + +pimNeighborTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM neighbors." + ::= { pim 2 } + +pimNeighborEntry OBJECT-TYPE + SYNTAX PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNeighborTable." + INDEX { pimNeighborIfIndex, + pimNeighborAddressType, + pimNeighborAddress } + ::= { pimNeighborTable 1 } + +PimNeighborEntry ::= SEQUENCE { + pimNeighborIfIndex InterfaceIndex, + pimNeighborAddressType InetAddressType, + pimNeighborAddress InetAddress, + pimNeighborGenerationIDPresent TruthValue, + pimNeighborGenerationIDValue Unsigned32, + pimNeighborUpTime TimeTicks, + pimNeighborExpiryTime TimeTicks, + + + + pimNeighborDRPriorityPresent TruthValue, + pimNeighborDRPriority Unsigned32, + pimNeighborLanPruneDelayPresent TruthValue, + pimNeighborTBit TruthValue, + pimNeighborPropagationDelay Unsigned32, + pimNeighborOverrideInterval Unsigned32, + pimNeighborBidirCapable TruthValue, + pimNeighborSRCapable TruthValue +} + +pimNeighborIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNeighborEntry 1 } + +pimNeighborAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this PIM neighbor." + ::= { pimNeighborEntry 2 } + +pimNeighborAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The primary IP address of this PIM neighbor. The + InetAddressType is given by the pimNeighborAddressType + object." + ::= { pimNeighborEntry 3 } + +pimNeighborGenerationIDPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the Generation + ID option." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimNeighborEntry 4 } + +pimNeighborGenerationIDValue OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Generation ID from the last PIM Hello + message received from this neighbor. This object is always + zero if pimNeighborGenerationIDPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimNeighborEntry 5 } + +pimNeighborUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this PIM neighbor (last) became a neighbor + of the local router." + ::= { pimNeighborEntry 6 } + +pimNeighborExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before this PIM neighbor will + time out. The value zero indicates that this PIM neighbor + will never time out." + ::= { pimNeighborEntry 7 } + +pimNeighborDRPriorityPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the DR Priority + option." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimNeighborEntry 8 } + +pimNeighborDRPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Designated Router Priority from the last + PIM Hello message received from this neighbor. This object + is always zero if pimNeighborDRPriorityPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.2" + + + + ::= { pimNeighborEntry 9 } + +pimNeighborLanPruneDelayPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the LAN Prune + Delay option." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 10 } + +pimNeighborTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the T bit was set in the LAN Prune Delay option + received from this neighbor. The T bit specifies the + ability of the neighbor to disable join suppression. This + object is always TRUE if pimNeighborLanPruneDelayPresent is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 11 } + +pimNeighborPropagationDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Propagation_Delay field of the LAN Prune + Delay option received from this neighbor. This object is + always zero if pimNeighborLanPruneDelayPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 12 } + +pimNeighborOverrideInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Override_Interval field of the LAN Prune + Delay option received from this neighbor. This object is + always zero if pimNeighborLanPruneDelayPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 13 } + +pimNeighborBidirCapable OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the + Bidirectional-PIM Capable option." + REFERENCE "RFC 5015 section 3.2 and 3.7.4" + ::= { pimNeighborEntry 14 } + +pimNeighborSRCapable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the State + Refresh Capable option. This object is used only by + PIM-DM." + REFERENCE "RFC 3973 section 4.3.4" + ::= { pimNeighborEntry 15 } + +-- +-- The PIM Neighbor Secondary Address Table +-- + +pimNbrSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNbrSecAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the secondary addresses + advertised by each PIM neighbor (on a subset of the rows of + the pimNeighborTable defined above)." + REFERENCE "RFC 4601 section 4.3.4" + ::= { pim 3 } + +pimNbrSecAddressEntry OBJECT-TYPE + SYNTAX PimNbrSecAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNbrSecAddressTable." + INDEX { pimNbrSecAddressIfIndex, + pimNbrSecAddressType, + pimNbrSecAddressPrimary, + pimNbrSecAddress } + ::= { pimNbrSecAddressTable 1 } + +PimNbrSecAddressEntry ::= SEQUENCE { + + + + pimNbrSecAddressIfIndex InterfaceIndex, + pimNbrSecAddressType InetAddressType, + pimNbrSecAddressPrimary InetAddress, + pimNbrSecAddress InetAddress +} + +pimNbrSecAddressIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNbrSecAddressEntry 1 } + +pimNbrSecAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this PIM neighbor." + ::= { pimNbrSecAddressEntry 2 } + +pimNbrSecAddressPrimary OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The primary IP address of this PIM neighbor. The + InetAddressType is given by the pimNbrSecAddressType + object." + ::= { pimNbrSecAddressEntry 3 } + +pimNbrSecAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary IP address of this PIM neighbor. The + InetAddressType is given by the pimNbrSecAddressType + object." + ::= { pimNbrSecAddressEntry 4 } + +-- +-- The PIM (*,G) State Table +-- + +pimStarGTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF PimStarGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (*,G) state that PIM has." + REFERENCE "RFC 4601 section 4.1.3" + ::= { pim 4 } + +pimStarGEntry OBJECT-TYPE + SYNTAX PimStarGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStarGTable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress } + ::= { pimStarGTable 1 } + +PimStarGEntry ::= SEQUENCE { + pimStarGAddressType InetAddressType, + pimStarGGrpAddress InetAddress, + pimStarGUpTime TimeTicks, + pimStarGPimMode PimMode, + pimStarGRPAddressType InetAddressType, + pimStarGRPAddress InetAddress, + pimStarGPimModeOrigin PimGroupMappingOriginType, + pimStarGRPIsLocal TruthValue, + pimStarGUpstreamJoinState INTEGER, + pimStarGUpstreamJoinTimer TimeTicks, + pimStarGUpstreamNeighborType InetAddressType, + pimStarGUpstreamNeighbor InetAddress, + pimStarGRPFIfIndex InterfaceIndexOrZero, + pimStarGRPFNextHopType InetAddressType, + pimStarGRPFNextHop InetAddress, + pimStarGRPFRouteProtocol IANAipRouteProtocol, + pimStarGRPFRouteAddress InetAddress, + pimStarGRPFRoutePrefixLength InetAddressPrefixLength, + pimStarGRPFRouteMetricPref Unsigned32, + pimStarGRPFRouteMetric Unsigned32 +} + +pimStarGAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this multicast group." + + + + ::= { pimStarGEntry 1 } + +pimStarGGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address. The InetAddressType is given + by the pimStarGAddressType object." + ::= { pimStarGEntry 2 } + +pimStarGUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimStarGEntry 3 } + +pimStarGPimMode OBJECT-TYPE + SYNTAX PimMode { asm(3), bidir(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this entry represents an ASM (Any Source Multicast, + used with PIM-SM) or BIDIR-PIM group." + ::= { pimStarGEntry 4 } + +pimStarGRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the Rendezvous Point (RP), or + unknown(0) if the RP address is unknown." + ::= { pimStarGEntry 5 } + +pimStarGRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the Rendezvous Point (RP) for the group. + The InetAddressType is given by the pimStarGRPAddressType." + ::= { pimStarGEntry 6 } + +pimStarGPimModeOrigin OBJECT-TYPE + SYNTAX PimGroupMappingOriginType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mechanism by which the PIM mode and RP for the group + were learned." + ::= { pimStarGEntry 7 } + +pimStarGRPIsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router is the RP for the group." + ::= { pimStarGEntry 8 } + +pimStarGUpstreamJoinState OBJECT-TYPE + SYNTAX INTEGER { + notJoined (1), + joined (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should join the RP tree for the + group. This corresponds to the state of the upstream (*,G) + state machine in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.6" + ::= { pimStarGEntry 9 } + +pimStarGUpstreamJoinTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router next sends a + periodic (*,G) Join message on pimStarGRPFIfIndex. This + timer is called the (*,G) Upstream Join Timer in the PIM-SM + specification. This object is zero if the timer is not + running." + REFERENCE "RFC 4601 section 4.10" + ::= { pimStarGEntry 10 } + +pimStarGUpstreamNeighborType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address type of the upstream neighbor, or + + + + unknown(0) if the upstream neighbor address is unknown or is + not a PIM neighbor." + ::= { pimStarGEntry 11 } + +pimStarGUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address of the neighbor on pimStarGRPFIfIndex + that the local router is sending periodic (*,G) Join + messages to. The InetAddressType is given by the + pimStarGUpstreamNeighborType object. This address is called + RPF'(*,G) in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.1.6" + ::= { pimStarGEntry 12 } + +pimStarGRPFIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the Reverse Path Forwarding + (RPF) interface towards the RP, or zero if the RPF + interface is unknown." + ::= { pimStarGEntry 13 } + +pimStarGRPFNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the RPF next hop towards the RP, or + unknown(0) if the RPF next hop is unknown." + ::= { pimStarGEntry 14 } + +pimStarGRPFNextHop OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the RPF next hop towards the RP. The + InetAddressType is given by the pimStarGRPFNextHopType + object. This address is called MRIB.next_hop(RP(G)) + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.5" + ::= { pimStarGEntry 15 } + + + + +pimStarGRPFRouteProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + RPF interface towards the RP was learned." + ::= { pimStarGEntry 16 } + +pimStarGRPFRouteAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address that, when combined with the corresponding + value of pimStarGRPFRoutePrefixLength, identifies the route + used to find the RPF interface towards the RP. The + InetAddressType is given by the pimStarGRPFNextHopType + object. + + This address object is only significant up to + pimStarGRPFRoutePrefixLength bits. The remainder of the + address bits are zero." + ::= { pimStarGEntry 17 } + +pimStarGRPFRoutePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The prefix length that, when combined with the + corresponding value of pimStarGRPFRouteAddress, identifies + the route used to find the RPF interface towards the RP. + The InetAddressType is given by the pimStarGRPFNextHopType + object." + ::= { pimStarGEntry 18 } + +pimStarGRPFRouteMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference of the route used to find the RPF + interface towards the RP." + ::= { pimStarGEntry 19 } + +pimStarGRPFRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric of the route used to find the RPF + interface towards the RP." + ::= { pimStarGEntry 20 } + +-- +-- The PIM (*,G,I) State Table +-- + +pimStarGITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimStarGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific (*,G) + state that PIM has." + REFERENCE "RFC 4601 section 4.1.3" + ::= { pim 5 } + +pimStarGIEntry OBJECT-TYPE + SYNTAX PimStarGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStarGITable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimStarGIIfIndex } + ::= { pimStarGITable 1 } + +PimStarGIEntry ::= SEQUENCE { + pimStarGIIfIndex InterfaceIndex, + pimStarGIUpTime TimeTicks, + pimStarGILocalMembership TruthValue, + pimStarGIJoinPruneState INTEGER, + pimStarGIPrunePendingTimer TimeTicks, + pimStarGIJoinExpiryTimer TimeTicks, + pimStarGIAssertState INTEGER, + pimStarGIAssertTimer TimeTicks, + pimStarGIAssertWinnerAddressType InetAddressType, + pimStarGIAssertWinnerAddress InetAddress, + pimStarGIAssertWinnerMetricPref Unsigned32, + pimStarGIAssertWinnerMetric Unsigned32 +} + +pimStarGIIfIndex OBJECT-TYPE + + + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimStarGIEntry 1 } + +pimStarGIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimStarGIEntry 2 } + +pimStarGILocalMembership OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has (*,G) local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_include(*,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, and RFC 4601 section 4.1.6" + ::= { pimStarGIEntry 3 } + +pimStarGIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (*,G) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (*,G) state machine in the + PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.2" + ::= { pimStarGIEntry 4 } + +pimStarGIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The time remaining before the local router acts on a (*,G) + Prune message received on this interface, during which the + router is waiting to see whether another downstream router + will override the Prune message. This timer is called the + (*,G) Prune-Pending Timer in the PIM-SM specification. This + object is zero if the timer is not running." + REFERENCE "RFC 4601 section 4.5.1" + ::= { pimStarGIEntry 5 } + +pimStarGIJoinExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (*,G) Join state for this + interface expires. This timer is called the (*,G) Join + Expiry Timer in the PIM-SM specification. This object is + zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time." + REFERENCE "RFC 4601 section 4.10" + ::= { pimStarGIEntry 6 } + +pimStarGIAssertState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + iAmAssertWinner (2), + iAmAssertLoser (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (*,G) Assert state for this interface. This + corresponds to the state of the per-interface (*,G) Assert + state machine in the PIM-SM specification. If + pimStarGPimMode is 'bidir', this object must be 'noInfo'." + REFERENCE "RFC 4601 section 4.6.2" + ::= { pimStarGIEntry 7 } + +pimStarGIAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertWinner', this is the + time remaining before the local router next sends a (*,G) + Assert message on this interface. If pimStarGIAssertState + is 'iAmAssertLoser', this is the time remaining before the + + + + (*,G) Assert state expires. If pimStarGIAssertState is + 'noInfo', this is zero. This timer is called the (*,G) + Assert Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.2" + ::= { pimStarGIEntry 8 } + +pimStarGIAssertWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + address type of the assert winner; otherwise, this object is + unknown(0)." + ::= { pimStarGIEntry 9 } + +pimStarGIAssertWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + address of the assert winner. The InetAddressType is given + by the pimStarGIAssertWinnerAddressType object." + ::= { pimStarGIEntry 10 } + +pimStarGIAssertWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + metric preference of the route to the RP advertised by the + assert winner; otherwise, this object is zero." + ::= { pimStarGIEntry 11 } + +pimStarGIAssertWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + routing metric of the route to the RP advertised by the + assert winner; otherwise, this object is zero." + ::= { pimStarGIEntry 12 } + +-- +-- The PIM (S,G) State Table + + + +-- + +pimSGTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (S,G) state that PIM has." + REFERENCE "RFC 4601 section 4.1.4" + ::= { pim 6 } + +pimSGEntry OBJECT-TYPE + SYNTAX PimSGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGTable." + INDEX { pimSGAddressType, + pimSGGrpAddress, + pimSGSrcAddress } + ::= { pimSGTable 1 } + +PimSGEntry ::= SEQUENCE { + pimSGAddressType InetAddressType, + pimSGGrpAddress InetAddress, + pimSGSrcAddress InetAddress, + pimSGUpTime TimeTicks, + pimSGPimMode PimMode, + pimSGUpstreamJoinState INTEGER, + pimSGUpstreamJoinTimer TimeTicks, + pimSGUpstreamNeighbor InetAddress, + pimSGRPFIfIndex InterfaceIndexOrZero, + pimSGRPFNextHopType InetAddressType, + pimSGRPFNextHop InetAddress, + pimSGRPFRouteProtocol IANAipRouteProtocol, + pimSGRPFRouteAddress InetAddress, + pimSGRPFRoutePrefixLength InetAddressPrefixLength, + pimSGRPFRouteMetricPref Unsigned32, + pimSGRPFRouteMetric Unsigned32, + pimSGSPTBit TruthValue, + pimSGKeepaliveTimer TimeTicks, + pimSGDRRegisterState INTEGER, + pimSGDRRegisterStopTimer TimeTicks, + pimSGRPRegisterPMBRAddressType InetAddressType, + pimSGRPRegisterPMBRAddress InetAddress, + pimSGUpstreamPruneState INTEGER, + pimSGUpstreamPruneLimitTimer TimeTicks, + + + + pimSGOriginatorState INTEGER, + pimSGSourceActiveTimer TimeTicks, + pimSGStateRefreshTimer TimeTicks +} + +pimSGAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the source and multicast group for this + entry." + ::= { pimSGEntry 1 } + +pimSGGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address for this entry. The + InetAddressType is given by the pimSGAddressType object." + ::= { pimSGEntry 2 } + +pimSGSrcAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address for this entry. The InetAddressType is + given by the pimSGAddressType object." + ::= { pimSGEntry 3 } + +pimSGUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGEntry 4 } + +pimSGPimMode OBJECT-TYPE + SYNTAX PimMode { ssm(2), asm(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether pimSGGrpAddress is an SSM (Source Specific + Multicast, used with PIM-SM) or ASM (Any Source Multicast, + used with PIM-SM) group." + + + + REFERENCE "RFC 4601 section 4.5.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pimSGEntry 5 } + +pimSGUpstreamJoinState OBJECT-TYPE + SYNTAX INTEGER { + notJoined (1), + joined (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should join the shortest-path tree + for the source and group represented by this entry. This + corresponds to the state of the upstream (S,G) state machine + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.7" + ::= { pimSGEntry 6 } + +pimSGUpstreamJoinTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router next sends a + periodic (S,G) Join message on pimSGRPFIfIndex. This timer + is called the (S,G) Upstream Join Timer in the PIM-SM + specification. This object is zero if the timer is not + running." + REFERENCE "RFC 4601 sections 4.10 and 4.11" + ::= { pimSGEntry 7 } + +pimSGUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address of the neighbor on pimSGRPFIfIndex that + the local router is sending periodic (S,G) Join messages to. + This is zero if the RPF next hop is unknown or is not a + PIM neighbor. The InetAddressType is given by the + pimSGAddressType object. This address is called RPF'(S,G) + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.1.6" + ::= { pimSGEntry 8 } + +pimSGRPFIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the RPF interface towards the + source, or zero if the RPF interface is unknown." + ::= { pimSGEntry 9 } + +pimSGRPFNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the RPF next hop towards the source, or + unknown(0) if the RPF next hop is unknown." + ::= { pimSGEntry 10 } + +pimSGRPFNextHop OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the RPF next hop towards the source. The + InetAddressType is given by the pimSGRPFNextHopType. This + address is called MRIB.next_hop(S) in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.5.5" + ::= { pimSGEntry 11 } + +pimSGRPFRouteProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + RPF interface towards the source was learned." + ::= { pimSGEntry 12 } + +pimSGRPFRouteAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address that, when combined with the corresponding + value of pimSGRPFRoutePrefixLength, identifies the route + used to find the RPF interface towards the source. The + InetAddressType is given by the pimSGRPFNextHopType object. + + This address object is only significant up to + + + + pimSGRPFRoutePrefixLength bits. The remainder of the + address bits are zero." + ::= { pimSGEntry 13 } + +pimSGRPFRoutePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The prefix length that, when combined with the + corresponding value of pimSGRPFRouteAddress, identifies the + route used to find the RPF interface towards the source. + The InetAddressType is given by the pimSGRPFNextHopType + object." + ::= { pimSGEntry 14 } + +pimSGRPFRouteMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference of the route used to find the RPF + interface towards the source." + ::= { pimSGEntry 15 } + +pimSGRPFRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric of the route used to find the RPF + interface towards the source." + ::= { pimSGEntry 16 } + +pimSGSPTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the SPT bit is set; and therefore whether + forwarding is taking place on the shortest-path tree." + ::= { pimSGEntry 17 } + +pimSGKeepaliveTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The time remaining before this (S,G) state expires, in + the absence of explicit (S,G) local membership or (S,G) + Join messages received to maintain it. This timer is + called the (S,G) Keepalive Timer in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.1.4" + ::= { pimSGEntry 18 } + +pimSGDRRegisterState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + joinPending (3), + prune (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should encapsulate (S,G) data + packets in Register messages and send them to the RP. This + corresponds to the state of the per-(S,G) Register state + machine in the PIM-SM specification. This object is always + 'noInfo' unless pimSGPimMode is 'asm'." + REFERENCE "RFC 4601 section 4.4.1" + ::= { pimSGEntry 19 } + +pimSGDRRegisterStopTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGDRRegisterState is 'prune', this is the time + remaining before the local router sends a Null-Register + message to the RP. If pimSGDRRegisterState is + 'joinPending', this is the time remaining before the local + router resumes encapsulating data packets and sending them + to the RP. Otherwise, this is zero. This timer is called + the Register-Stop Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.4" + ::= { pimSGEntry 20 } + +pimSGRPRegisterPMBRAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the first PIM Multicast Border Router + to send a Register message with the Border bit set. This + + + + object is unknown(0) if the local router is not the RP for + the group." + ::= { pimSGEntry 21 } + +pimSGRPRegisterPMBRAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the first PIM Multicast Border Router to + send a Register message with the Border bit set. The + InetAddressType is given by the + pimSGRPRegisterPMBRAddressType object." + ::= { pimSGEntry 22 } + +pimSGUpstreamPruneState OBJECT-TYPE + SYNTAX INTEGER { + forwarding (1), + ackpending (2), + pruned (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has pruned itself from the tree. + This corresponds to the state of the upstream prune (S,G) + state machine in the PIM-DM specification. This object is + used only by PIM-DM." + REFERENCE "RFC 3973 section 4.4.1" + ::= { pimSGEntry 23 } + +pimSGUpstreamPruneLimitTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router may send a (S,G) + Prune message on pimSGRPFIfIndex. This timer is called the + (S,G) Prune Limit Timer in the PIM-DM specification. This + object is zero if the timer is not running. This object is + used only by PIM-DM." + REFERENCE "RFC 2973 section 4.8" + ::= { pimSGEntry 24 } + +pimSGOriginatorState OBJECT-TYPE + SYNTAX INTEGER { + notOriginator (1), + originator (2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the router is an originator for an (S,G) message + flow. This corresponds to the state of the per-(S,G) + Originator state machine in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.5.2" + ::= { pimSGEntry 25 } + +pimSGSourceActiveTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGOriginatorState is 'originator', this is the time + remaining before the local router reverts to a notOriginator + state. Otherwise, this is zero. This timer is called the + Source Active Timer in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + ::= { pimSGEntry 26 } + +pimSGStateRefreshTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGOriginatorState is 'originator', this is the time + remaining before the local router sends a State Refresh + message. Otherwise, this is zero. This timer is called the + State Refresh Timer in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + ::= { pimSGEntry 27 } + +-- +-- The PIM (S,G,I) State Table +-- + +pimSGITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific (S,G) + state that PIM has." + + + + REFERENCE "RFC 4601 section 4.1.4" + ::= { pim 7 } + +pimSGIEntry OBJECT-TYPE + SYNTAX PimSGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGITable." + INDEX { pimSGAddressType, + pimSGGrpAddress, + pimSGSrcAddress, + pimSGIIfIndex } + ::= { pimSGITable 1 } + +PimSGIEntry ::= SEQUENCE { + pimSGIIfIndex InterfaceIndex, + pimSGIUpTime TimeTicks, + pimSGILocalMembership TruthValue, + pimSGIJoinPruneState INTEGER, + pimSGIPrunePendingTimer TimeTicks, + pimSGIJoinExpiryTimer TimeTicks, + pimSGIAssertState INTEGER, + pimSGIAssertTimer TimeTicks, + pimSGIAssertWinnerAddressType InetAddressType, + pimSGIAssertWinnerAddress InetAddress, + pimSGIAssertWinnerMetricPref Unsigned32, + pimSGIAssertWinnerMetric Unsigned32 +} + +pimSGIIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimSGIEntry 1 } + +pimSGIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGIEntry 2 } + +pimSGILocalMembership OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has (S,G) local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_include(S,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, RFC 4601 sections 4.1.6, 4.6.1, and + 4.6.2" + ::= { pimSGIEntry 3 } + +pimSGIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (S,G) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (S,G) state machine in the + PIM-SM and PIM-DM specification." + REFERENCE "RFC 4601 section 4.5.3 and RFC 3973 section 4.4.2" + ::= { pimSGIEntry 4 } + +pimSGIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router acts on an (S,G) + Prune message received on this interface, during which the + router is waiting to see whether another downstream router + will override the Prune message. This timer is called the + (S,G) Prune-Pending Timer in the PIM-SM specification. This + object is zero if the timer is not running." + REFERENCE "RFC 4601 sections 4.5.3 and 4.5.4" + ::= { pimSGIEntry 5 } + +pimSGIJoinExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (S,G) Join state for this + + + + interface expires. This timer is called the (S,G) Join + Expiry Timer in the PIM-SM specification. This object is + zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time. This timer is called the + (S,G) Prune Timer in the PIM-DM specification." + REFERENCE "RFC 4601 section 4.10 and RFC 3973 section 4.8" + ::= { pimSGIEntry 6 } + +pimSGIAssertState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + iAmAssertWinner (2), + iAmAssertLoser (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (S,G) Assert state for this interface. This + corresponds to the state of the per-interface (S,G) Assert + state machine in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.1" + ::= { pimSGIEntry 7 } + +pimSGIAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertWinner', this is the time + remaining before the local router next sends a (S,G) Assert + message on this interface. If pimSGIAssertState is + 'iAmAssertLoser', this is the time remaining before the + (S,G) Assert state expires. If pimSGIAssertState is + 'noInfo', this is zero. This timer is called the (S,G) + Assert Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.1" + ::= { pimSGIEntry 8 } + +pimSGIAssertWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + address type of the assert winner; otherwise, this object is + unknown(0)." + ::= { pimSGIEntry 9 } + + + + +pimSGIAssertWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + address of the assert winner. The InetAddressType is given + by the pimSGIAssertWinnerAddressType object." + ::= { pimSGIEntry 10 } + +pimSGIAssertWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + metric preference of the route to the source advertised by + the assert winner; otherwise, this object is zero." + ::= { pimSGIEntry 11 } + +pimSGIAssertWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + routing metric of the route to the source advertised by the + assert winner; otherwise, this object is zero." + ::= { pimSGIEntry 12 } + +-- +-- The PIM (S,G,rpt) State Table +-- + +pimSGRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGRptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (S,G,rpt) state that PIM has." + REFERENCE "RFC 4601 section 4.1.5" + ::= { pim 8 } + +pimSGRptEntry OBJECT-TYPE + SYNTAX PimSGRptEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (conceptual row) in the pimSGRptTable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimSGRptSrcAddress } + ::= { pimSGRptTable 1 } + +PimSGRptEntry ::= SEQUENCE { + pimSGRptSrcAddress InetAddress, + pimSGRptUpTime TimeTicks, + pimSGRptUpstreamPruneState INTEGER, + pimSGRptUpstreamOverrideTimer TimeTicks +} + +pimSGRptSrcAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address for this entry. The InetAddressType is + given by the pimStarGAddressType object." + ::= { pimSGRptEntry 1 } + +pimSGRptUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGRptEntry 2 } + +pimSGRptUpstreamPruneState OBJECT-TYPE + SYNTAX INTEGER { + rptNotJoined (1), + pruned (2), + notPruned (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should prune the source off the RP + tree. This corresponds to the state of the upstream + (S,G,rpt) state machine for triggered messages in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.5.9" + ::= { pimSGRptEntry 3 } + +pimSGRptUpstreamOverrideTimer OBJECT-TYPE + + + + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router sends a + triggered (S,G,rpt) Join message on pimStarGRPFIfIndex. + This timer is called the (S,G,rpt) Upstream Override Timer + in the PIM-SM specification. This object is zero if the + timer is not running." + REFERENCE "RFC 4601 section 4.5.9" + ::= { pimSGRptEntry 4 } + +-- +-- The PIM (S,G,rpt,I) State Table +-- + +pimSGRptITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGRptIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific + (S,G,rpt) state that PIM has." + REFERENCE "RFC 4601 section 4.1.5" + ::= { pim 9 } + +pimSGRptIEntry OBJECT-TYPE + SYNTAX PimSGRptIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGRptITable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimSGRptSrcAddress, + pimSGRptIIfIndex } + ::= { pimSGRptITable 1 } + +PimSGRptIEntry ::= SEQUENCE { + pimSGRptIIfIndex InterfaceIndex, + pimSGRptIUpTime TimeTicks, + pimSGRptILocalMembership TruthValue, + pimSGRptIJoinPruneState INTEGER, + pimSGRptIPrunePendingTimer TimeTicks, + pimSGRptIPruneExpiryTimer TimeTicks +} + +pimSGRptIIfIndex OBJECT-TYPE + + + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimSGRptIEntry 1 } + +pimSGRptIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGRptIEntry 2 } + +pimSGRptILocalMembership OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has both (*,G) include local + membership and (S,G) exclude local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_exclude(S,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, RFC 4601 section 4.1.6" + ::= { pimSGRptIEntry 3 } + +pimSGRptIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + prune (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (S,G,rpt) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (S,G,rpt) state machine in + the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 4 } + +pimSGRptIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The time remaining before the local router starts pruning + this source off the RP tree. This timer is called the + (S,G,rpt) Prune-Pending Timer in the PIM-SM specification. + This object is zero if the timer is not running." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 5 } + +pimSGRptIPruneExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (S,G,rpt) Prune state for this + interface expires. This timer is called the (S,G,rpt) + Prune Expiry Timer in the PIM-SM specification. This object + is zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 6 } + +-- +-- The PIM Bidir DF-Election Table +-- + +pimBidirDFElectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimBidirDFElectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the per-RP Designated + Forwarder (DF) Election state for each interface for all the + RPs in BIDIR mode." + REFERENCE "RFC 5015 section 3.5" + ::= { pim 10 } + +pimBidirDFElectionEntry OBJECT-TYPE + SYNTAX PimBidirDFElectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimBidirDFElectionTable." + INDEX { pimBidirDFElectionAddressType, + pimBidirDFElectionRPAddress, + pimBidirDFElectionIfIndex } + ::= { pimBidirDFElectionTable 1 } + + + + +PimBidirDFElectionEntry ::= SEQUENCE { + pimBidirDFElectionAddressType InetAddressType, + pimBidirDFElectionRPAddress InetAddress, + pimBidirDFElectionIfIndex InterfaceIndex, + pimBidirDFElectionWinnerAddressType InetAddressType, + pimBidirDFElectionWinnerAddress InetAddress, + pimBidirDFElectionWinnerUpTime TimeTicks, + pimBidirDFElectionWinnerMetricPref Unsigned32, + pimBidirDFElectionWinnerMetric Unsigned32, + pimBidirDFElectionState INTEGER, + pimBidirDFElectionStateTimer TimeTicks +} + +pimBidirDFElectionAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the RP for which the DF state is being + maintained." + ::= { pimBidirDFElectionEntry 1 } + +pimBidirDFElectionRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the RP for which the DF state is being + maintained. The InetAddressType is given by the + pimBidirDFElectionAddressType object." + ::= { pimBidirDFElectionEntry 2 } + +pimBidirDFElectionIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface for which the DF + state is being maintained." + ::= { pimBidirDFElectionEntry 3 } + +pimBidirDFElectionWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address type of the winner of the DF Election + process. A value of unknown(0) indicates there is currently + + + + no DF." + ::= { pimBidirDFElectionEntry 4 } + +pimBidirDFElectionWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of the winner of the DF Election + process. The InetAddressType is given by the + pimBidirDFElectionWinnerAddressType object." + ::= { pimBidirDFElectionEntry 5 } + +pimBidirDFElectionWinnerUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the current winner (last) became elected as + the DF for this RP." + ::= { pimBidirDFElectionEntry 6 } + +pimBidirDFElectionWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference advertised by the DF Winner, or zero + if there is currently no DF." + ::= { pimBidirDFElectionEntry 7 } + +pimBidirDFElectionWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric advertised by the DF Winner, or zero if there is + currently no DF." + ::= { pimBidirDFElectionEntry 8 } + +pimBidirDFElectionState OBJECT-TYPE + SYNTAX INTEGER { + dfOffer(1), + dfLose(2), + dfWinner(3), + dfBackoff(4) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The state of this interface with respect to DF-Election for + this RP. The states correspond to the ones defined in the + BIDIR-PIM specification." + REFERENCE "RFC 5015 section 3.5.3.1" + ::= { pimBidirDFElectionEntry 9 } + +pimBidirDFElectionStateTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining after which the local router + will expire the current DF state represented by + pimBidirDFElectionState." + ::= { pimBidirDFElectionEntry 10 } + +-- +-- The PIM Static RP Table +-- + +pimStaticRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimStaticRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to manage static configuration of RPs. + + If the group prefixes configured for two or more rows in + this table overlap, the row with the greatest value of + pimStaticRPGrpPrefixLength is used for the overlapping + range." + REFERENCE "RFC 4601 section 3.7" + ::= { pim 11 } + +pimStaticRPEntry OBJECT-TYPE + SYNTAX PimStaticRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStaticRPTable. This + entry is preserved on agent restart." + INDEX { pimStaticRPAddressType, + pimStaticRPGrpAddress, + pimStaticRPGrpPrefixLength } + ::= { pimStaticRPTable 1 } + + + + +PimStaticRPEntry ::= SEQUENCE { + pimStaticRPAddressType InetAddressType, + pimStaticRPGrpAddress InetAddress, + pimStaticRPGrpPrefixLength InetAddressPrefixLength, + pimStaticRPRPAddress InetAddress, + pimStaticRPPimMode PimMode, + pimStaticRPOverrideDynamic TruthValue, + pimStaticRPPrecedence Unsigned32, + pimStaticRPRowStatus RowStatus, + pimStaticRPStorageType StorageType +} + +pimStaticRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this entry." + ::= { pimStaticRPEntry 1 } + +pimStaticRPGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address that, when combined with + pimStaticRPGrpPrefixLength, gives the group prefix for this + entry. The InetAddressType is given by the + pimStaticRPAddressType object. + + This address object is only significant up to + pimStaticRPGrpPrefixLength bits. The remainder of the + address bits are zero. This is especially important for + this index field, which is part of the index of this entry. + Any non-zero bits would signify an entirely different + entry." + ::= { pimStaticRPEntry 2 } + +pimStaticRPGrpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength (4..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group prefix length that, when combined + with pimStaticRPGrpAddress, gives the group prefix for this + entry. The InetAddressType is given by the + pimStaticRPAddressType object. If pimStaticRPAddressType is + 'ipv4' or 'ipv4z', this object must be in the range 4..32. + + + + If pimStaticRPGrpAddressType is 'ipv6' or 'ipv6z', this + object must be in the range 8..128." + ::= { pimStaticRPEntry 3 } + +pimStaticRPRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address of the RP to be used for groups within this + group prefix. The InetAddressType is given by the + pimStaticRPAddressType object." + ::= { pimStaticRPEntry 4 } + +pimStaticRPPimMode OBJECT-TYPE + SYNTAX PimMode { ssm(2), asm(3), bidir(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The PIM mode to be used for groups in this group prefix. + + If this object is set to ssm(2), then pimStaticRPRPAddress + must be set to zero. No RP operations are ever possible for + PIM Mode SSM." + REFERENCE "RFC 4601 section 3.7, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + DEFVAL { asm } + ::= { pimStaticRPEntry 5 } + +pimStaticRPOverrideDynamic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this static RP configuration will override other + group mappings in this group prefix. If this object is + TRUE, then it will override: + + - RP information learned dynamically for groups in this + group prefix. + + - RP information configured in pimStaticRPTable with + pimStaticRPOverrideDynamic set to FALSE. + + See pimGroupMappingTable for details." + DEFVAL { false } + ::= { pimStaticRPEntry 6 } + + + + +pimStaticRPPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value for pimGroupMappingPrecedence to be used for this + static RP configuration. This allows fine control over + which configuration is overridden by this static + configuration. + + If pimStaticRPOverrideDynamic is set to TRUE, all dynamic RP + configuration is overridden by this static configuration, + whatever the value of this object. + + The absolute values of this object have a significance only + on the local router and do not need to be coordinated with + other routers. A setting of this object may have different + effects when applied to other routers. + + Do not use this object unless fine control of static RP + behavior on the local router is required." + ::= { pimStaticRPEntry 7 } + +pimStaticRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object cannot be set to active(1) before a valid + value has been written to pimStaticRPRPAddress. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimStaticRPEntry 8 } + +pimStaticRPStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimStaticRPEntry 9 } + + + +-- +-- The PIM Anycast-RP Set Table +-- + +pimAnycastRPSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimAnycastRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to manage Anycast-RP via PIM Register + messages, as opposed to via other protocols such as MSDP + (Multicast Source Discovery Protocol). + + Entries must be configured in this table if and only if the + local router is a member of one or more Anycast-RP sets, + that is, one or more Anycast-RP addresses are assigned to + the local router. Note that if using static RP + configuration, this is in addition to, not instead of, the + pimStaticRPTable entries that must be configured for the + Anycast-RPs. + + The set of rows with the same values of both + pimAnycastRPSetAddressType and pimAnycastRPSetAnycastAddress + corresponds to the Anycast-RP set for that Anycast-RP + address. + + When an Anycast-RP set configuration is active, one entry + per pimAnycastRPSetAnycastAddress corresponds to the local + router. The local router is identified by the + pimAnycastRpSetLocalRouter object. That entry determines + the source address used by the local router when forwarding + PIM Register messages within the Anycast-RP set." + REFERENCE "RFC 4610, RFC 3618" + ::= { pim 12 } + +pimAnycastRPSetEntry OBJECT-TYPE + SYNTAX PimAnycastRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry corresponds to a single router within a particular + Anycast-RP set. This entry is preserved on agent restart." + INDEX { pimAnycastRPSetAddressType, + pimAnycastRPSetAnycastAddress, + pimAnycastRPSetRouterAddress } + ::= { pimAnycastRPSetTable 1 } + +PimAnycastRPSetEntry ::= SEQUENCE { + + + + pimAnycastRPSetAddressType InetAddressType, + pimAnycastRPSetAnycastAddress InetAddress, + pimAnycastRPSetRouterAddress InetAddress, + pimAnycastRPSetLocalRouter TruthValue, + pimAnycastRPSetRowStatus RowStatus, + pimAnycastRPSetStorageType StorageType +} + +pimAnycastRPSetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the Anycast-RP address and router + address." + ::= { pimAnycastRPSetEntry 1 } + +pimAnycastRPSetAnycastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Anycast-RP address. The InetAddressType is given by + the pimAnycastRPSetAddressType object." + ::= { pimAnycastRPSetEntry 2 } + +pimAnycastRPSetRouterAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of a router that is a member of the Anycast-RP + set. The InetAddressType is given by the + pimAnycastRPSetAddressType object. + + This address differs from pimAnycastRPSetAnycastAddress. + Equal values for these two addresses in a single entry are + not permitted. That would cause a Register loop." + ::= { pimAnycastRPSetEntry 3 } + +pimAnycastRPSetLocalRouter OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this entry corresponds to the local router." + ::= { pimAnycastRPSetEntry 4 } + + + + +pimAnycastRPSetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimAnycastRPSetEntry 5 } + +pimAnycastRPSetStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimAnycastRPSetEntry 6 } + +-- +-- The PIM Group Mapping Table +-- + +pimGroupMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimGroupMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing mappings from multicast + group prefixes to the PIM mode and RP address to use for + groups within that group prefix. + + Rows in this table are created for a variety of reasons, + indicated by the value of the pimGroupMappingOrigin object. + + - Rows with a pimGroupMappingOrigin value of 'fixed' are + created automatically by the router at startup, to + correspond to the well-defined prefixes of link-local and + unroutable group addresses. These rows are never + destroyed. + + + + + - Rows with a pimGroupMappingOrigin value of 'embedded' are + created by the router to correspond to group prefixes + that are to be treated as being in Embedded-RP format. + + - Rows with a pimGroupMappingOrigin value of 'configRp' are + created and destroyed as a result of rows in the + pimStaticRPTable being created and destroyed. + + - Rows with a pimGroupMappingOrigin value of 'configSsm' + are created and destroyed as a result of configuration of + SSM address ranges to the local router. + + - Rows with a pimGroupMappingOrigin value of 'bsr' are + created as a result of running the PIM Bootstrap Router + (BSR) mechanism. If the local router is not the elected + BSR, these rows are created to correspond to group + prefixes in the PIM Bootstrap messages received from the + elected BSR. If the local router is the elected BSR, + these rows are created to correspond to group prefixes in + the PIM Bootstrap messages that the local router sends. + In either case, these rows are destroyed when the group + prefixes are timed out by the BSR mechanism. + + - Rows with a pimGroupMappingOrigin value of 'other' are + created and destroyed according to some other mechanism + not specified here. + + Given the collection of rows in this table at any point in + time, the PIM mode and RP address to use for a particular + group is determined using the following algorithm. + + 1. From the set of all rows, the subset whose group prefix + contains the group in question are selected. + + 2. If there are no such rows, then the group mapping is + undefined. + + 3. If there are multiple selected rows, and a subset is + defined by pimStaticRPTable (pimGroupMappingOrigin value + of 'configRp') with pimStaticRPOverrideDynamic set to + TRUE, then this subset is selected. + + 4. From the selected subset of rows, the subset that have + the greatest value of pimGroupMappingGrpPrefixLength are + selected. + + 5. If there are still multiple selected rows, the subset + that has the highest precedence (the lowest numerical + + + + value for pimGroupMappingPrecedence) is selected. + + 6. If there are still multiple selected rows, the row + selected is implementation dependent; the implementation + might or might not apply the PIM hash function to select + the row. + + 7. The group mode to use is given by the value of + pimGroupMappingPimMode from the single selected row; the + RP to use is given by the value of + pimGroupMappingRPAddress, unless pimGroupMappingOrigin is + 'embedded', in which case, the RP is extracted from the + group address in question." + REFERENCE "RFC 4601 section 3.7, RFC 3956, and RFC 4610" + ::= { pim 13 } + +pimGroupMappingEntry OBJECT-TYPE + SYNTAX PimGroupMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimGroupMappingTable." + INDEX { pimGroupMappingOrigin, + pimGroupMappingAddressType, + pimGroupMappingGrpAddress, + pimGroupMappingGrpPrefixLength, + pimGroupMappingRPAddressType, + pimGroupMappingRPAddress } + ::= { pimGroupMappingTable 1 } + +PimGroupMappingEntry ::= SEQUENCE { + pimGroupMappingOrigin PimGroupMappingOriginType, + pimGroupMappingAddressType InetAddressType, + pimGroupMappingGrpAddress InetAddress, + pimGroupMappingGrpPrefixLength InetAddressPrefixLength, + pimGroupMappingRPAddressType InetAddressType, + pimGroupMappingRPAddress InetAddress, + pimGroupMappingPimMode PimMode, + pimGroupMappingPrecedence Unsigned32 +} + +pimGroupMappingOrigin OBJECT-TYPE + SYNTAX PimGroupMappingOriginType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mechanism by which this group mapping was learned." + ::= { pimGroupMappingEntry 1 } + + + +pimGroupMappingAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the IP multicast group prefix." + ::= { pimGroupMappingEntry 2 } + +pimGroupMappingGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address that, when combined with + pimGroupMappingGrpPrefixLength, gives the group prefix for + this mapping. The InetAddressType is given by the + pimGroupMappingAddressType object. + + This address object is only significant up to + pimGroupMappingGrpPrefixLength bits. The remainder of the + address bits are zero. This is especially important for + this index field, which is part of the index of this entry. + Any non-zero bits would signify an entirely different + entry." + ::= { pimGroupMappingEntry 3 } + +pimGroupMappingGrpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength (4..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group prefix length that, when combined + with pimGroupMappingGrpAddress, gives the group prefix for + this mapping. The InetAddressType is given by the + pimGroupMappingAddressType object. If + pimGroupMappingAddressType is 'ipv4' or 'ipv4z', this + object must be in the range 4..32. If + pimGroupMappingAddressType is 'ipv6' or 'ipv6z', this object + must be in the range 8..128." + ::= { pimGroupMappingEntry 4 } + +pimGroupMappingRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the RP to be used for groups within + this group prefix, or unknown(0) if no RP is to be used or + + + + if the RP address is unknown. This object must be + unknown(0) if pimGroupMappingPimMode is ssm(2), or if + pimGroupMappingOrigin is embedded(6)." + ::= { pimGroupMappingEntry 5 } + +pimGroupMappingRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the RP to be used for groups within this + group prefix. The InetAddressType is given by the + pimGroupMappingRPAddressType object." + ::= { pimGroupMappingEntry 6 } + +pimGroupMappingPimMode OBJECT-TYPE + SYNTAX PimMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PIM mode to be used for groups in this group prefix." + ::= { pimGroupMappingEntry 7 } + +pimGroupMappingPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The precedence of this row, used in the algorithm that + determines which row applies to a given group address + (described above). Numerically higher values for this + object indicate lower precedences, with the value zero + denoting the highest precedence. + + The absolute values of this object have a significance only + on the local router and do not need to be coordinated with + other routers." + ::= { pimGroupMappingEntry 8 } + +-- +-- PIM Notifications +-- + +pimNeighborLoss NOTIFICATION-TYPE + OBJECTS { pimNeighborUpTime } + STATUS current + DESCRIPTION + "A pimNeighborLoss notification signifies the loss of an + + + + adjacency with a neighbor. This notification should be + generated when the neighbor timer expires, and the router + has no other neighbors on the same interface with the same + IP version and a lower IP address than itself. + + This notification is generated whenever the counter + pimNeighborLossCount is incremented, subject + to the rate limit specified by + pimNeighborLossNotificationPeriod." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimNotifications 1 } + +pimInvalidRegister NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimInvalidRegisterAddressType, + pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, + pimInvalidRegisterRp + } + STATUS current + DESCRIPTION + "A pimInvalidRegister notification signifies that an invalid + PIM Register message was received by this device. + + This notification is generated whenever the counter + pimInvalidRegisterMsgsRcvd is incremented, subject to the + rate limit specified by + pimInvalidRegisterNotificationPeriod." + REFERENCE "RFC 4601 section 4.4.2" + ::= { pimNotifications 2 } + +pimInvalidJoinPrune NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimInvalidJoinPruneAddressType, + pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, + pimInvalidJoinPruneRp, + pimNeighborUpTime + } + STATUS current + DESCRIPTION + "A pimInvalidJoinPrune notification signifies that an + invalid PIM Join/Prune message was received by this device. + + This notification is generated whenever the counter + pimInvalidJoinPruneMsgsRcvd is incremented, subject to the + rate limit specified by + pimInvalidJoinPruneNotificationPeriod." + + + + REFERENCE "RFC 4601 section 4.5.2" + ::= { pimNotifications 3 } + +pimRPMappingChange NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimGroupMappingPrecedence + } + STATUS current + DESCRIPTION + "A pimRPMappingChange notification signifies a change to the + active RP mapping on this device. + + This notification is generated whenever the counter + pimRPMappingChangeCount is incremented, subject to the + rate limit specified by + pimRPMappingChangeNotificationPeriod." + ::= { pimNotifications 4 } + +pimInterfaceElection NOTIFICATION-TYPE + OBJECTS { pimInterfaceAddressType, + pimInterfaceAddress } + STATUS current + DESCRIPTION + "A pimInterfaceElection notification signifies that a new DR + or DF has been elected on a network. + + This notification is generated whenever the counter + pimInterfaceElectionWinCount is incremented, subject to the + rate limit specified by + pimInterfaceElectionNotificationPeriod." + REFERENCE "RFC 4601 section 4.3.2 and RFC 5015 section 3.5.2" + ::= { pimNotifications 5 } + +-- +-- Conformance Information +-- + +pimMIBConformance OBJECT IDENTIFIER ::= { pimStdMIB 2 } +pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 } +pimMIBGroups OBJECT IDENTIFIER ::= { pimMIBConformance 2 } + +-- +-- Compliance Statements +-- + +pimMIBComplianceAsm MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "The compliance statement for routers which are running + PIM-SM (Sparse Mode)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup, + pimRPConfigGroup, + pimSmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 1 } + +pimMIBComplianceBidir MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for routers which are running + Bidir-PIM." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimRPConfigGroup, + pimSmGroup, + pimBidirGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 2 } + +pimMIBComplianceSsm MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "The compliance statement for routers which are running + PIM SSM (Source Specific Multicast)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 3 } + +pimMIBComplianceDm MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers which are running + PIM-DM (Dense Mode)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup, + pimRPConfigGroup, + pimSmGroup, + + + + pimDmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 4 } + +-- +-- Units of Conformance +-- + +pimTopologyGroup OBJECT-GROUP + OBJECTS { pimInterfaceAddressType, + pimInterfaceAddress, + pimInterfaceGenerationIDValue, + + + + pimInterfaceDR, + pimInterfaceDRPriorityEnabled, + pimInterfaceHelloHoldtime, + pimInterfaceJoinPruneHoldtime, + pimInterfaceLanDelayEnabled, + pimInterfaceEffectPropagDelay, + pimInterfaceEffectOverrideIvl, + pimInterfaceSuppressionEnabled, + pimInterfaceBidirCapable, + pimNeighborGenerationIDPresent, + pimNeighborGenerationIDValue, + pimNeighborUpTime, + pimNeighborExpiryTime, + pimNeighborDRPriorityPresent, + pimNeighborDRPriority, + pimNeighborLanPruneDelayPresent, + pimNeighborTBit, + pimNeighborPropagationDelay, + pimNeighborOverrideInterval, + pimNeighborBidirCapable, + pimNbrSecAddress + } + STATUS current + DESCRIPTION + "A collection of read-only objects used to report local PIM + topology." + ::= { pimMIBGroups 1 } + +pimNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimNeighborLoss } + STATUS current + DESCRIPTION + "A collection of notifications for signaling important PIM + events." + ::= { pimMIBGroups 2 } + +pimTuningParametersGroup OBJECT-GROUP + OBJECTS { pimKeepalivePeriod, + pimRegisterSuppressionTime, + pimInterfaceDRPriority, + pimInterfaceHelloInterval, + pimInterfaceTrigHelloInterval, + pimInterfaceJoinPruneInterval, + pimInterfacePropagationDelay, + pimInterfaceOverrideInterval, + pimInterfaceDomainBorder, + pimInterfaceStubInterface, + pimInterfaceStatus, + + + + pimInterfaceStorageType + } + STATUS current + DESCRIPTION + "A collection of writeable objects used to configure PIM + behavior and to tune performance." + ::= { pimMIBGroups 3 } + +pimRouterStatisticsGroup OBJECT-GROUP + OBJECTS { pimStarGEntries, + pimStarGIEntries, + pimSGEntries, + pimSGIEntries, + pimSGRptEntries, + pimSGRptIEntries + } + STATUS current + DESCRIPTION + "A collection of statistics global to the PIM router." + ::= { pimMIBGroups 4 } + +pimSsmGroup OBJECT-GROUP + OBJECTS { pimSGUpTime, + pimSGPimMode, + pimSGUpstreamJoinState, + pimSGUpstreamJoinTimer, + pimSGUpstreamNeighbor, + pimSGRPFIfIndex, + pimSGRPFNextHopType, + pimSGRPFNextHop, + pimSGRPFRouteProtocol, + pimSGRPFRouteAddress, + pimSGRPFRoutePrefixLength, + pimSGRPFRouteMetricPref, + pimSGRPFRouteMetric, + pimSGSPTBit, + pimSGKeepaliveTimer, + pimSGDRRegisterState, + pimSGDRRegisterStopTimer, + pimSGRPRegisterPMBRAddressType, + pimSGRPRegisterPMBRAddress, + pimSGIUpTime, + pimSGILocalMembership, + pimSGIJoinPruneState, + pimSGIPrunePendingTimer, + pimSGIJoinExpiryTimer, + pimSGIAssertState, + pimSGIAssertTimer, + + + + pimSGIAssertWinnerAddressType, + pimSGIAssertWinnerAddress, + pimSGIAssertWinnerMetricPref, + pimSGIAssertWinnerMetric + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running the PIM SSM (Source Specific Multicast) + protocol, in PIM mode SM (Sparse Mode)." + ::= { pimMIBGroups 5 } + +pimRPConfigGroup OBJECT-GROUP + OBJECTS { pimStaticRPRPAddress, + pimStaticRPPimMode, + pimStaticRPOverrideDynamic, + pimStaticRPRowStatus, + pimStaticRPStorageType, + pimGroupMappingPimMode, + pimGroupMappingPrecedence + } + STATUS current + DESCRIPTION + "A collection of objects to support configuration of RPs + (Rendezvous Points) and Group Mappings." + ::= { pimMIBGroups 6 } + +pimSmGroup OBJECT-GROUP + OBJECTS { pimStarGUpTime, + pimStarGPimMode, + pimStarGRPAddressType, + pimStarGRPAddress, + pimStarGPimModeOrigin, + pimStarGRPIsLocal, + pimStarGUpstreamJoinState, + pimStarGUpstreamJoinTimer, + pimStarGUpstreamNeighborType, + pimStarGUpstreamNeighbor, + pimStarGRPFIfIndex, + pimStarGRPFNextHopType, + pimStarGRPFNextHop, + pimStarGRPFRouteProtocol, + pimStarGRPFRouteAddress, + pimStarGRPFRoutePrefixLength, + pimStarGRPFRouteMetricPref, + pimStarGRPFRouteMetric, + pimStarGIUpTime, + pimStarGILocalMembership, + + + + pimStarGIJoinPruneState, + pimStarGIPrunePendingTimer, + pimStarGIJoinExpiryTimer, + pimStarGIAssertState, + pimStarGIAssertTimer, + pimStarGIAssertWinnerAddressType, + pimStarGIAssertWinnerAddress, + pimStarGIAssertWinnerMetricPref, + pimStarGIAssertWinnerMetric, + pimSGRptUpTime, + pimSGRptUpstreamPruneState, + pimSGRptUpstreamOverrideTimer, + pimSGRptIUpTime, + pimSGRptILocalMembership, + pimSGRptIJoinPruneState, + pimSGRptIPrunePendingTimer, + pimSGRptIPruneExpiryTimer + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running PIM-SM (Sparse Mode). The groups + pimSsmGroup and pimRPConfigGroup are also required." + ::= { pimMIBGroups 7 } + +pimBidirGroup OBJECT-GROUP + OBJECTS { pimInterfaceDFElectionRobustness, + pimBidirDFElectionWinnerAddressType, + pimBidirDFElectionWinnerAddress, + pimBidirDFElectionWinnerUpTime, + pimBidirDFElectionWinnerMetricPref, + pimBidirDFElectionWinnerMetric, + pimBidirDFElectionState, + pimBidirDFElectionStateTimer + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running BIDIR mode. The groups pimSsmGroup, + pimSmGroup and pimRPConfigGroup are also required." + ::= { pimMIBGroups 8 } + +pimAnycastRpGroup OBJECT-GROUP + OBJECTS { pimAnycastRPSetLocalRouter, + pimAnycastRPSetRowStatus, + pimAnycastRPSetStorageType + } + STATUS current + + + + DESCRIPTION + "A collection of objects to support management of the PIM + Anycast-RP mechanism." + ::= { pimMIBGroups 9 } + +pimStaticRPPrecedenceGroup OBJECT-GROUP + OBJECTS { pimStaticRPPrecedence } + STATUS current + DESCRIPTION + "A collection of objects to allow fine control of + interactions between static RP configuration and + dynamically acquired group to RP mappings." + ::= { pimMIBGroups 10 } + +pimNetMgmtNotificationObjects OBJECT-GROUP + OBJECTS { pimInvalidRegisterNotificationPeriod, + pimInvalidRegisterMsgsRcvd, + pimInvalidRegisterAddressType, + pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, + pimInvalidRegisterRp, + pimInvalidJoinPruneNotificationPeriod, + pimInvalidJoinPruneMsgsRcvd, + pimInvalidJoinPruneAddressType, + pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, + pimInvalidJoinPruneRp, + pimRPMappingNotificationPeriod, + pimRPMappingChangeCount, + pimInterfaceElectionNotificationPeriod, + pimInterfaceElectionWinCount + } + STATUS current + DESCRIPTION + "A collection of objects to support notification of PIM + network management events." + ::= { pimMIBGroups 11 } + +pimNetMgmtNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimInvalidRegister, + pimInvalidJoinPrune, + pimRPMappingChange, + pimInterfaceElection + } + STATUS current + DESCRIPTION + "A collection of notifications for signaling PIM network + management events." + + + + ::= { pimMIBGroups 12 } + +pimDiagnosticsGroup OBJECT-GROUP + OBJECTS { pimInAsserts, + pimOutAsserts, + pimLastAssertInterface, + pimLastAssertGroupAddressType, + pimLastAssertGroupAddress, + pimLastAssertSourceAddressType, + pimLastAssertSourceAddress, + pimNeighborLossNotificationPeriod, + pimNeighborLossCount + } + STATUS current + DESCRIPTION + "Objects providing additional diagnostics related to a PIM + router." + ::= { pimMIBGroups 13 } + +pimDmGroup OBJECT-GROUP + OBJECTS { + pimRefreshInterval, + pimInterfacePruneLimitInterval, + pimInterfaceGraftRetryInterval, + pimInterfaceSRPriorityEnabled, + pimNeighborSRCapable, + pimSGUpstreamPruneState, + pimSGUpstreamPruneLimitTimer, + pimSGOriginatorState, + pimSGSourceActiveTimer, + pimSGStateRefreshTimer + } + STATUS current + DESCRIPTION + "A collection of objects required for management of PIM + Dense Mode (PIM-DM) function. The groups pimSsmGroup and + pimSmGroup are also required." + REFERENCE "RFC 3973" + ::= { pimMIBGroups 14 } + + + + + + + + + + + + +pimDeviceStorageGroup OBJECT-GROUP + OBJECTS { pimDeviceConfigStorageType + } + STATUS current + DESCRIPTION + "An object that specifies the volatility of global PIM + configuration settings on this device." + ::= { pimMIBGroups 15 } + +END diff --git a/mibs/ietf/PINT-MIB b/mibs/ietf/PINT-MIB new file mode 100644 index 0000000..408a298 --- /dev/null +++ b/mibs/ietf/PINT-MIB @@ -0,0 +1,593 @@ +PINT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-TYPE, Counter32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + sysApplInstallPkgEntry + FROM SYSAPPL-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; -- RFC 2571 [2] + + pintMib MODULE-IDENTITY + LAST-UPDATED "200102010000Z" -- 1 Feb 2001 + +ORGANIZATION "IETF PINT Working Group" +CONTACT-INFO " + Chairs: Steve Bellovin + E-mail: smb@research.att.com + + Igor Faynberg + E-mail: faynberg@lucent.com + + Authors: Murali Krishnaswamy + Postal: 20 Corporate Place South + Piscataway, NJ 08854 + Tel: +1 (732)465-1000 + + + E-mail: murali@photuris.com + + Dan Romascanu + Postal: Atidim Technology Park, Bldg 3 + Tel Aviv, Israel + Tel: +972 3 6458414 + E-mail: dromasca@avaya.com + + General Discussion:pint@lists.bell-labs.com + To Subscribe: pint-request@lists.bell-labs.com + In Body: subscribe your-email-addres + Archive: http://www.bell-labs.com/mailing-lists/pint/ + " + +DESCRIPTION + "This MIB defines the objects necessary to monitor + PINT Services" + +-- Revision history + +REVISION "200102010000Z" -- 1 Feb 2001 +DESCRIPTION + "Initial version, published as RFC 3055." +::= { mib-2 93 } + +PintServiceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the type of a PINT service." + SYNTAX INTEGER { + r2C(1), -- Request-to-Talk + r2F(2), -- Request-to-Fax + r2FB(3), -- Request-to-Fax-Back + r2HC(4) -- Request-to-Hear-Content + } + +PintPerfStatPeriod ::= TEXTUAL-CONVENTION +STATUS current +DESCRIPTION + "This TC describes the statistics period of time. + + Note that the values of the counters indexed with a value + SinceReboot(4) can be potentially affected by a counter rollover. + It is the responsibility of the application using this object to + take into account that the counter has been zeroed each time it + reached a value of (2**32-1)." +SYNTAX INTEGER { +last30sec(1), -- Performance Statics for the last 30 sec + + +last15min(2), -- 15 min +last24Hr(3), -- 24 Hour +sinceReboot(4) -- Since the time the pint server was +-- last rebooted +} + +pintServerConfig OBJECT IDENTIFIER ::= { pintMib 1 } +pintServerMonitor OBJECT IDENTIFIER ::= { pintMib 2 } +pintMibConformance OBJECT IDENTIFIER ::= { pintMib 3 } + +-- pintServerConfig - PINT configuration MIB variables + +pintReleaseNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of version of the PINT protocol supported + by this agent." + ::= { pintServerConfig 1 } + +pintSysContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Contact information related to the administration of the PINT + services." + ::= { pintServerConfig 2 } + +pintApplInstallPkgTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing the PINT applications that are installed." + ::= { pintServerConfig 3 } + +pintApplInstallPkgEntry OBJECT-TYPE + SYNTAX PintApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per PINT Application." + AUGMENTS { sysApplInstallPkgEntry } + ::= { pintApplInstallPkgTable 1 } + +PintApplInstallPkgEntry ::= SEQUENCE { + + +pintApplInstallPkgDescription SnmpAdminString +} + +pintApplInstallPkgDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the installed PINT application." + ::= { pintApplInstallPkgEntry 1 } + +pintRegisteredGatewayTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintRegisteredGatewayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing the registered gateway applications." + ::= { pintServerConfig 4 } + +pintRegisteredGatewayEntry OBJECT-TYPE + SYNTAX PintRegisteredGatewayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per Registered Gateway Application." +AUGMENTS { sysApplInstallPkgEntry } + ::= { pintRegisteredGatewayTable 1 } + +PintRegisteredGatewayEntry ::= SEQUENCE { +pintRegisteredGatewayName SnmpAdminString, +pintRegisteredGatewayDescription SnmpAdminString +} + +pintRegisteredGatewayName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the registered gateway." + ::= { pintRegisteredGatewayEntry 1 } + +pintRegisteredGatewayDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the registered gateway." + ::= { pintRegisteredGatewayEntry 2 } + + +-- pintServerMonitor - PINT monitoring statistics MIB variables + +pintServerGlobalPerf OBJECT IDENTIFIER ::= {pintServerMonitor 1 } +pintServerClientPerf OBJECT IDENTIFIER ::= {pintServerMonitor 2 } +pintServerUserIdPerf OBJECT IDENTIFIER ::= {pintServerMonitor 3 } +pintServerGatewayPerf OBJECT IDENTIFIER ::= {pintServerMonitor 4 } + +pintServerGlobalStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerGlobalStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored global server statistics." + ::= { pintServerGlobalPerf 1 } + +pintServerGlobalStatsEntry OBJECT-TYPE + SYNTAX PintServerGlobalStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the global statistics table. + One entry is defined for each monitored service type and + performance statistics collection period." + INDEX {pintServerServiceTypeIndex, pintServerPerfStatPeriodIndex} + ::= { pintServerGlobalStatsTable 1 } + +PintServerGlobalStatsEntry ::= SEQUENCE { +pintServerServiceTypeIndex PintServiceType, +pintServerPerfStatPeriodIndex PintPerfStatPeriod, +pintServerGlobalCallsReceived Counter32, +pintServerGlobalSuccessfulCalls Counter32, +pintServerGlobalDisconnectedCalls Counter32, +pintServerGlobalDisCUAutFCalls Counter32, +pintServerGlobalDisServProbCalls Counter32, +pintServerGlobalDisGatProbCalls Counter32 +} + +pintServerServiceTypeIndex OBJECT-TYPE + SYNTAX PintServiceType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored service." + ::= { pintServerGlobalStatsEntry 1 } + +pintServerPerfStatPeriodIndex OBJECT-TYPE + SYNTAX PintPerfStatPeriod + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "Time period for which the performance statistics are requested + from the pint server." + ::= { pintServerGlobalStatsEntry 2 } + +pintServerGlobalCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of received global calls." + ::= { pintServerGlobalStatsEntry 3 } + +pintServerGlobalSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global successful calls." + ::= { pintServerGlobalStatsEntry 4 } + +pintServerGlobalDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global disconnected (failed) calls." + ::= { pintServerGlobalStatsEntry 5 } + +pintServerGlobalDisCUAutFCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of global calls that were disconnected because of client + or user authorization failure." +::= { pintServerGlobalStatsEntry 6 } + +pintServerGlobalDisServProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global calls that were disconnected because of + server problems." + ::= { pintServerGlobalStatsEntry 7 } + + +pintServerGlobalDisGatProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global calls that were disconnected because of + gateway problems." + ::= { pintServerGlobalStatsEntry 8 } + +pintServerClientStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerClientStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored server client statistics." + ::= { pintServerClientPerf 1 } + +pintServerClientStatsEntry OBJECT-TYPE + SYNTAX PintServerClientStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the client server statistics table. + One entry is defined for each client identified by name, + monitored service type and performance statistics collection + period." + INDEX {pintServerClientAddress, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex} + ::= { pintServerClientStatsTable 1 } + +PintServerClientStatsEntry ::= SEQUENCE { +pintServerClientAddress SnmpAdminString, +pintServerClientCallsReceived Counter32, +pintServerClientSuccessfulCalls Counter32, +pintServerClientDisconnectedCalls Counter32, +pintServerClientDisCAutFCalls Counter32, +pintServerClientDisEFProbCalls Counter32 +} + +pintServerClientAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored client + identified by its address represented as as a string." + ::= { pintServerClientStatsEntry 1 } + + + +pintServerClientCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the specific client." + ::= { pintServerClientStatsEntry 2 } + +pintServerClientSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the client successfully completed." + ::= { pintServerClientStatsEntry 3 } + +pintServerClientDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the client, and that were + disconnected (failed)." + ::= { pintServerClientStatsEntry 4 } + +pintServerClientDisCAutFCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of calls from the client that were disconnected because of + client authorization failure." +::= { pintServerClientStatsEntry 5 } + +pintServerClientDisEFProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the client that were disconnected because + of egress facility problems." + ::= { pintServerClientStatsEntry 6 } + +pintServerUserIdStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerUserIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "Table displaying the monitored Pint service user statistics." + ::= { pintServerUserIdPerf 1 } + +pintServerUserIdStatsEntry OBJECT-TYPE + SYNTAX PintServerUserIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the user statistics table. + One entry is defined for each user identified by name, + each monitored service type and performance statistics collection + period. + + It is assumed that the capabilities of the pint server + are enough to accommodate the number of entries in this table. + It is a local server implementation issue if an aging mechanism + Is implemented in order to avoid scalability problems." + INDEX {pintServerUserIdName, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex} + ::= { pintServerUserIdStatsTable 1 } + +PintServerUserIdStatsEntry ::= SEQUENCE { +pintServerUserIdName SnmpAdminString, +pintServerUserIdCallsReceived Counter32, +pintServerUserIdSuccessfulCalls Counter32, +pintServerUserIdDisconnectedCalls Counter32, +pintServerUserIdDiscUIdAFailCalls Counter32, +pintServerUserIdEFProbCalls Counter32 +} + +pintServerUserIdName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored user + identified by its name." + ::= { pintServerUserIdStatsEntry 1 } + +pintServerUserIdCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the specific user." + ::= { pintServerUserIdStatsEntry 2 } + + + +pintServerUserIdSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the user successfully completed." + ::= { pintServerUserIdStatsEntry 3 } + +pintServerUserIdDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the user that were + disconnected (failed)." + ::= { pintServerUserIdStatsEntry 4 } + +pintServerUserIdDiscUIdAFailCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of calls from the user that were disconnected because of + user authorization failure." +::= { pintServerUserIdStatsEntry 5 } + +pintServerUserIdEFProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the user that were disconnected because of + egress facility problems." + ::= { pintServerUserIdStatsEntry 6 } + +pintServerGatewayStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerGatewayStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored gateway statistics." + ::= { pintServerGatewayPerf 1 } + +pintServerGatewayStatsEntry OBJECT-TYPE + SYNTAX PintServerGatewayStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "Entries in the gateway table. + One entry is defined for each gateway identified by name, + each monitored service type and performance statistics collection + period." + + INDEX { pintRegisteredGatewayName, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex } + ::= { pintServerGatewayStatsTable 1 } + +PintServerGatewayStatsEntry ::= SEQUENCE { +pintServerGatewayCallsReceived Counter32, +pintServerGatewaySuccessfulCalls Counter32, +pintServerGatewayDisconnectedCalls Counter32 +} + +pintServerGatewayCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received at the specified gateway." + ::= { pintServerGatewayStatsEntry 1 } + +pintServerGatewaySuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls successfully completed at the specified gateway." + ::= { pintServerGatewayStatsEntry 2 } + +pintServerGatewayDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls that were disconnected (failed) at the specified + gateway." + ::= { pintServerGatewayStatsEntry 3 } + +-- +-- Notifications Section +-- (none defined) +-- + +-- +-- Conformance Section + + +-- + +pintMibCompliances OBJECT IDENTIFIER ::= { pintMibConformance 1 } +pintMibGroups OBJECT IDENTIFIER ::= { pintMibConformance 2 } + +pintMibCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION + "Describes the requirements for conformance to the + PINT MIB." +MODULE -- this module +MANDATORY-GROUPS { pintMibConfigGroup, pintMibMonitorGroup } +::= { pintMibCompliances 1 } + +pintMibConfigGroup OBJECT-GROUP +OBJECTS { +pintReleaseNumber, +pintSysContact, +pintApplInstallPkgDescription, +pintRegisteredGatewayName, +pintRegisteredGatewayDescription +} +STATUS current +DESCRIPTION + "A collection of objects providing configuration + information + for a PINT Server." +::= { pintMibGroups 1 } + +pintMibMonitorGroup OBJECT-GROUP +OBJECTS { +pintServerGlobalCallsReceived, +pintServerGlobalSuccessfulCalls, +pintServerGlobalDisconnectedCalls, +pintServerGlobalDisCUAutFCalls, +pintServerGlobalDisServProbCalls, +pintServerGlobalDisGatProbCalls, +pintServerClientCallsReceived, +pintServerClientSuccessfulCalls, +pintServerClientDisconnectedCalls, +pintServerClientDisCAutFCalls, +pintServerClientDisEFProbCalls, +--pintServerUserIdName, +pintServerUserIdCallsReceived, +pintServerUserIdSuccessfulCalls, +pintServerUserIdDisconnectedCalls, +pintServerUserIdDiscUIdAFailCalls, +pintServerUserIdEFProbCalls, + + +pintServerGatewayCallsReceived, +pintServerGatewaySuccessfulCalls, +pintServerGatewayDisconnectedCalls +} +STATUS current +DESCRIPTION + "A collection of objects providing monitoring + information + for a PINT Server." +::= { pintMibGroups 2 } + +END diff --git a/mibs/ietf/PKTC-IETF-MTA-MIB b/mibs/ietf/PKTC-IETF-MTA-MIB new file mode 100644 index 0000000..50e90c4 --- /dev/null +++ b/mibs/ietf/PKTC-IETF-MTA-MIB @@ -0,0 +1,2199 @@ +PKTC-IETF-MTA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + OBJECT-IDENTITY, + Unsigned32, + Counter32, + NOTIFICATION-TYPE, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + RowStatus, + TruthValue + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- [RFC4001] + sysDescr + FROM SNMPv2-MIB -- [RFC3418] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + docsDevSoftwareGroupV2 + FROM DOCS-CABLE-DEVICE-MIB -- [RFC4639] + DocsX509ASN1DEREncodedCertificate, + docsBpi2CodeDownloadGroup + FROM DOCS-IETF-BPI2-MIB -- [RFC4131] + LongUtf8String + FROM SYSAPPL-MIB -- [RFC2287] + ifPhysAddress + FROM IF-MIB; -- [RFC2863] + + pktcIetfMtaMib MODULE-IDENTITY + LAST-UPDATED "200609180000Z" -- September 18, 2006 + ORGANIZATION "IETF IP over Cable Data Network Working Group" + CONTACT-INFO + "Eugene Nechamkin + Broadcom Corporation, + 200-13711 International Place, + + + + Richmond, BC, V6V 2Z8 + CANADA + Phone: +1 604 233 8500 + Email: enechamkin@broadcom.com + + Jean-Francois Mule + Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027-9750 + U.S.A. + Phone: +1 303 661 9100 + Email: jf.mule@cablelabs.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-Chair: Jean-Francois Mule, jf.mule@cablelabs.com + Co-Chair: Richard Woundy, Richard_Woundy@cable.comcast.com" + + DESCRIPTION + "This MIB module defines the basic management object + for the Multimedia Terminal Adapter devices compliant + with PacketCable and IPCablecom requirements. + + Copyright (C) The IETF Trust (2006). This version of + this MIB module is part of RFC 4682; see the RFC itself for + full legal notices." + + REVISION "200609180000Z" -- September 18, 2006 + + DESCRIPTION + "Initial version, published as RFC 4682." + +::= { mib-2 140 } + + -- Textual Conventions + +PktcMtaDevProvEncryptAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This textual convention defines various types of the + encryption algorithms used for the encryption of the MTA + configuration file. The description of the encryption + algorithm for each enumerated value is as follows: + + 'none(0)' no encryption is used, + 'des64CbcMode(1)' DES 64-bit key in CBC mode, + + + + 't3Des192CbcMode(2)' 3DES 192-bit key in CBC mode, + 'aes128CbcMode(3)' AES 128-bit key in CBC mode, + 'aes256CbcMode(4)' AES 256-bit key in CBC mode." + SYNTAX INTEGER { + none (0), + des64CbcMode (1), + t3Des192CbcMode (2), + aes128CbcMode (3), + aes256CbcMode (4) + } + +--================================================================= +-- The MTA MIB module only supports a single Provisioning Server. +--================================================================= + +pktcMtaNotification OBJECT IDENTIFIER ::= { pktcIetfMtaMib 0 } +pktcMtaMibObjects OBJECT IDENTIFIER ::= { pktcIetfMtaMib 1 } +pktcMtaDevBase OBJECT IDENTIFIER ::= { pktcMtaMibObjects 1 } +pktcMtaDevServer OBJECT IDENTIFIER ::= { pktcMtaMibObjects 2 } +pktcMtaDevSecurity OBJECT IDENTIFIER ::= { pktcMtaMibObjects 3 } +pktcMtaDevErrors OBJECT IDENTIFIER ::= { pktcMtaMibObjects 4 } +pktcMtaConformance OBJECT IDENTIFIER ::= { pktcIetfMtaMib 2 } + +-- +-- The following pktcMtaDevBase group describes the base MTA objects +-- + +pktcMtaDevResetNow OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object controls the MTA software reset. + Reading this object always returns 'false'. Setting this + object to 'true' causes the device to reset immediately + and the following actions to occur: + 1. All connections (if present) are flushed locally. + 2. All current actions such as ringing immediately + terminate. + 3. Requests for signaling notifications, such as + notification based on digit map recognition, are + flushed. + 4. All endpoints are disabled. + 5. The provisioning flow is started at step MTA-1. + If a value is written into an instance of + pktcMtaDevResetNow, the agent MUST NOT retain the supplied + value across MTA re-initializations or reboots." + REFERENCE + + + + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 1 } + +pktcMtaDevSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies the manufacturer's serial + number of this MTA. The value of this object MUST be + identical to the value specified in DHCP option 43, + sub-option 4. The list of sub-options for DHCP option + 43 are defined in the PacketCable MTA Device + Provisioning Specification." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 2 } + +pktcMtaDevSwCurrentVers OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object identifies the software version currently + operating in the MTA. + The MTA MUST return a string descriptive of the current + software load. This object should use the syntax + defined by the individual vendor to identify the software + version. The data presented in this object MUST be + identical to the software version information contained + in the 'sysDescr' MIB object of the MTA. The value of + this object MUST be identical to the value specified in + DHCP option 43, sub-option 6. The list of sub-options for + DHCP option 43 are defined in the PacketCable MTA Device + Provisioning Specification." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + +::= { pktcMtaDevBase 3 } + +pktcMtaDevFQDN OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Fully Qualified Domain Name for + this MTA. The MTA FQDN is used to uniquely identify the + device to the PacketCable back office elements." + + + + ::= { pktcMtaDevBase 4 } + +pktcMtaDevEndPntCount OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the number of physical endpoints for + this MTA." + ::= { pktcMtaDevBase 5 } + +pktcMtaDevEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the MTA Admin Status of this device. + If this object is set to 'true', the MTA is + administratively enabled, and the MTA MUST be able to + interact with the PacketCable entities, such as CMS, + Provisioning Server, KDC, and other MTAs and MGs on all + PacketCable interfaces. + If this object is set to 'false', the MTA is + administratively disabled, and the MTA MUST perform the + following actions for all endpoints: + - Shut down all media sessions, if present. + - Shut down Network Control Signaling (NCS) + signaling by following the Restart in + Progress procedures in the PacketCable NCS + specification. + The MTA must execute all actions required to + enable or disable the telephony services for all + endpoints immediately upon receipt of an SNMP SET + operation. + + Additionally, the MTA MUST maintain the SNMP Interface + for management and also the SNMP Key management interface. + Also, the MTA MUST NOT continue Kerberized key management + with CMSes until this object is set to 'true'. + Note: MTAs MUST renew the CMS Kerberos tickets according + to the PacketCable Security or IPCablecom Specification. + If a value is written into an instance of + pktcMtaDevEnabled, the agent MUST NOT retain the supplied + value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification; + PacketCable Network-Based Call Signaling Protocol + + + + Specification." + ::= { pktcMtaDevBase 6 } + +pktcMtaDevTypeIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object provides the MTA device type identifier. The + value of this object must be a copy of the DHCP option 60 + value exchanged between the MTA and the DHCP server. The + DHCP option 60 value contains an ASCII-encoded string + identifying capabilities of the MTA as defined in the + PacketCable MTA Device Provisioning Specification." + REFERENCE + " RFC 2132, DHCP Options and BOOTP Vendor Extensions; + PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 7 } + +pktcMtaDevProvisioningState OBJECT-TYPE + SYNTAX INTEGER { + pass (1), + inProgress (2), + failConfigFileError (3), + passWithWarnings (4), + passWithIncompleteParsing (5), + failureInternalError (6), + failureOtherReason (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates the completion state of the MTA + device provisioning process. + + pass: + If the configuration file could be parsed successfully + and the MTA is able to reflect the same in its + MIB, the MTA MUST return the value 'pass'. + + inProgress: + If the MTA is in the process of being provisioned, + the MTA MUST return the value 'inProgress'. + + failConfigFileError: + If the configuration file was in error due to incorrect + values in the mandatory parameters, the MTA MUST reject + the configuration file, and the MTA MUST return the value + + + + 'failConfigFileError'. + + passWithWarnings: + If the configuration file had proper values for all the + mandatory parameters but has errors in any of the optional + parameters (this includes any vendor-specific Object + Identifiers (OIDs) that are incorrect or not known + to the MTA), the MTA MUST return the value + 'passWithWarnings'. + + passWithIncompleteParsing: + If the configuration file is valid but the MTA cannot + reflect the same in its configuration (for example, too + many entries caused memory exhaustion), it must accept + the CMS configuration entries related, and the MTA MUST + return the value 'passWithIncompleteParsing'. + + failureInternalError: + If the configuration file cannot be parsed due to an + Internal error, the MTA MUST return the value + 'failureInternalError'. + + failureOtherReason: + If the MTA cannot accept the configuration file for any + other reason than the ones stated above, the MTA MUST + return the value 'failureOtherReason'. + + When a final SNMP INFORM is sent as part of Step 25 of the + MTA Provisioning process, this parameter is also included + in the final INFORM message." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 8 } + +pktcMtaDevHttpAccess OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates whether the HTTP protocol is + supported for the MTA configuration file transfer." + ::= { pktcMtaDevBase 9 } + +pktcMtaDevProvisioningTimer OBJECT-TYPE + SYNTAX Unsigned32 (0..30) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + " This object defines the time interval for the provisioning + flow to complete. The MTA MUST finish all provisioning + operations starting from the moment when an MTA receives + its DHCP ACK and ending at the moment when the MTA + downloads its configuration file (e.g., MTA5 to MTA23) + within the period of time set by this object. + Failure to comply with this condition constitutes + a provisioning flow failure. If the object is set to 0, + the MTA MUST ignore the provisioning timer condition. + If a value is written into an instance of + pktcMtaDevProvisioningTimer, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + DEFVAL {10} + ::= {pktcMtaDevBase 10} + +pktcMtaDevProvisioningCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times the + provisioning cycle has looped through step MTA-1." + ::= {pktcMtaDevBase 11} + + pktcMtaDevErrorOidsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevErrorOidsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table contains the list of configuration errors or + warnings the MTA encountered when parsing the + configuration file it received from the Provisioning + Server. + For each error, an entry is created in this table, + containing the configuration parameters the MTA rejected + and the associated reason (e.g., wrong or unknown OID, + inappropriate object values). If the MTA + did not report a provisioning state of 'pass(1)' in + the pktcMtaDevProvisioningState object, this table MUST be + populated for each error or warning instance. Even if + different parameters share the same error type (e.g., all + realm name configuration parameters are invalid), all + observed errors or warnings must be reported as + different instances. Errors are placed into the table in + no particular order. The table MUST be cleared each time + + + + the MTA reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= {pktcMtaDevBase 12 } + +pktcMtaDevErrorOidsEntry OBJECT-TYPE + SYNTAX PktcMtaDevErrorOidsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This entry contains the necessary information the MTA MUST + attempt to provide in case of configuration file errors or + warnings." + INDEX { pktcMtaDevErrorOidIndex } + ::= {pktcMtaDevErrorOidsTable 1} + +PktcMtaDevErrorOidsEntry ::= SEQUENCE { + pktcMtaDevErrorOidIndex Unsigned32, + pktcMtaDevErrorOid SnmpAdminString, + pktcMtaDevErrorValue SnmpAdminString, + pktcMtaDevErrorReason SnmpAdminString + } + +pktcMtaDevErrorOidIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..1024) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object is the index of the MTA configuration error + table. It is an integer value that starts at value '1' + and is incremented for each encountered configuration + file error or warning. + + The maximum number of errors or warnings that can be + recorded in the pktcMtaDevErrorOidsTable is set to 1024 as + a configuration file is usually validated by operators + before deployment. Given the possible number of + configuration parameter assignments in the MTA + configuration file, 1024 is perceived as a sufficient + limit even with future extensions. + + If the number of the errors in the configuration file + exceeds 1024, all errors beyond the 1024th one MUST + be ignored and not be reflected in the + pktcMtaDevErrorOidsTable." + + ::= {pktcMtaDevErrorOidsEntry 1} + + + + +pktcMtaDevErrorOid OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a human readable representation + (character string) of the OID corresponding to the + configuration file parameter that caused the particular + error. + For example, if the value of the pktcMtaDevEnabled object + in the configuration file caused an error, then this + object instance will contain the human-readable string of + '1.3.6.1.2.1.140.1.1.6.0'. + If the MTA generated an error because it was not able + to recognize a particular OID, then this object + instance would contain an empty value (zero-length + string). + For example, if the value of an OID in the configuration + file was interpreted by the MTA as being 1.2.3.4.5, and if + the MTA was not able to recognize this OID as a valid one, + this object instance will contain a zero-length string. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorOid of the table's 1024th entry MUST + contain a human-readable representation of the + pktcMtaDevErrorsTooManyErrors object; i.e., the string + '1.3.6.1.2.1.140.1.1.4.1.0'. + Note that the syntax of this object is SnmpAdminString + instead of OBJECT IDENTIFIER because the object value may + not be a valid OID due to human or configuration tool + encoding errors." + + ::= {pktcMtaDevErrorOidsEntry 2} + +pktcMtaDevErrorValue OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the value of the OID corresponding to + the configuration file parameter that caused the error. + If the MTA cannot recognize the OID of the + configuration parameter causing the error, then this + object instance contains the OID itself as interpreted + by the MTA in human-readable representation. + If the MTA can recognize the OID but generate an error due + to a wrong value of the parameter, then the object + + + + instance contains the erroneous value of the parameter as + read from the configuration file. + In both cases, the value of this object must be + represented in human-readable form as a character string. + For example, if the value of the pktcMtaDevEnabled object + in the configuration file was 3 (invalid value), then the + pktcMtaDevErrorValue object instance will contain the + human-readable (string) representation of value '3'. + Similarly, if the OID in the configuration file has been + interpreted by the MTA as being 1.2.3.4.5 and the MTA + cannot recognize this OID as a valid one, then this + pktcMtaDevErrorValue object instance will contain human + readable (string) representation of value '1.2.3.4.5'. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorValue of the table's 1024th entry MUST + contain a human-readable representation of the + pktcMtaDevErrorsTooManyErrors object; i.e., the string + '1.3.6.1.2.1.140.1.1.4.1.0'." + + ::= {pktcMtaDevErrorOidsEntry 3} + +pktcMtaDevErrorReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates the reason for the error or warning, + as per the MTA's interpretation, in human-readable form. + For example: + 'VALUE NOT IN RANGE', 'VALUE DOES NOT MATCH TYPE', + 'UNSUPPORTED VALUE', 'LAST 4 BITS MUST BE SET TO ZERO', + 'OUT OF MEMORY - CANNOT STORE'. + This object may also contain vendor specific errors for + private vendor OIDs and any proprietary error codes or + messages that can help diagnose configuration errors. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorReason of the table's 1024th entry MUST + contain a human-readable string indicating the reason + for an error; for example, + 'Too many errors in the configuration file'." + ::= {pktcMtaDevErrorOidsEntry 4} + +-- +-- The following group describes server access and parameters used + + + +-- for the initial MTA provisioning and bootstrapping phases. +-- + +pktcMtaDevDhcpServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable DHCP servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 1} + +pktcMtaDevServerDhcp1 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet Address of the primary + DHCP server the MTA uses during provisioning. + The type of this address is determined by the value of + the pktcMtaDevDhcpServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the primary DHCP + server. It is provided by the CM to the MTA via the DHCP + option code 122, sub-option 1, as defined in RFC 3495. + + The behavior of this object when the value of + pktcMtaDevDhcpServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If this object is of value + 0.0.0.0, the MTA MUST stop all provisioning + attempts, as well as all other activities. + If this object is of value 255.255.255.255, it means + that there was no preference given for the primary + DHCP server, and, the MTA must follow the logic of + RFC2131, and the value of DHCP option 122, + sub-option 2, must be ignored." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2131, Dynamic Host Configuration Protocol; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 2 } + +pktcMtaDevServerDhcp2 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + " This object contains the Internet Address of the secondary + DHCP server the MTA uses during provisioning. + The type of this address is determined by the value of + the pktcMtaDevDhcpServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the secondary DHCP + server. It is provided by the CM to the MTA via the DHCP + option code 122, sub-option 2, as defined in RFC 3495. + + The behavior of this object when the value of + pktcMtaDevDhcpServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If there was no secondary DHCP server provided in DHCP + Option 122, sub-option 2, this object must return the value + 0.0.0.0." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 3 } + +pktcMtaDevDnsServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable DNS servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 4} + +pktcMtaDevServerDns1 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the IP Address of the primary + DNS server to be used by the MTA. The type of this address + is determined by the value of the + pktcMtaDevDnsServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the primary DNS server. + As defined in RFC 2132, PacketCable-compliant MTAs receive + the IP addresses of the DNS Servers in DHCP option 6. + The behavior of this object when the value of + pktcMtaDevDnsServerAddressType is other than 'ipv4(1)' + + + + is not presently specified, but it may be specified + in future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevServerDns1, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 5 } + +pktcMtaDevServerDns2 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the IP Address of the secondary + DNS server to be used by the MTA. The type of this address + is determined by the value of the + pktcMtaDevDnsServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the secondary DNS + server. As defined in RFC 2132, PacketCable-compliant MTAs + receive the IP addresses of the DNS Servers in DHCP + option 6. + The behavior of this object when the value of + pktcMtaDevDnsServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevServerDns2, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 6 } + +pktcMtaDevTimeServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable Time servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 7} + +pktcMtaDevTimeServer OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the Internet Address of the Time + Server used by an S-MTA for Time Synchronization. The type + of this address is determined by the value of the + pktcMtaDevTimeServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the Time Server used for Time + Synchronization. + In the case of an S-MTA, this object must be + populated with a value other than 0.0.0.0 as obtained + from DHCP option 4. The protocol by which the time of day + MUST be retrieved is defined in RFC 868. + In the case of an E-MTA, this object must contain a + value of 0.0.0.0 if the address type is 'ipv4(1)' since + an E-MTA does not use the Time Protocol for time + synchronization (an E-MTA uses the time retrieved by the + DOCSIS cable modem). + The behavior of this object when the value of + pktcMtaDevTimeServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified in + future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevTimeServer, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " RFC 868, Time Protocol; + RFC 2131, Dynamic Host Configuration Protocol; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 8} + +pktcMtaDevConfigFile OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the MTA device configuration file + information, including the access method, the server name, + and the configuration file name. The value of this object + is the Uniform Resource Locator (URL) of the configuration + file for TFTP or HTTP download. + If this object value is a TFTP URL, it must be formatted + as defined in RFC 3617. + If this object value is an HTTP URL, it must be formatted + as defined in RFC 2616. + If the MTA SNMP Enrollment mechanism is used, then the MTA + must download the file provided by the Provisioning Server + + + + during provisioning via an SNMP SET on this object. + If the MTA SNMP Enrollment mechanism is not used, this + object MUST contain the URL value corresponding to the + 'siaddr' and 'file' fields received in the DHCP ACK to + locate the configuration file: the 'siaddr' and 'file' + fields represent the host and file of the TFTP URL, + respectively. In this case, the MTA MUST return an + 'inconsistentValue' error in response to SNMP SET + operations. + The MTA MUST return a zero-length string if the server + address (host part of the URL) is unknown. + If a value is written into an instance of + pktcMtaDevConfigFile, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3617, URI Scheme for TFTP; RFC 2616, HTTP 1.1" + ::= { pktcMtaDevServer 9 } + +pktcMtaDevSnmpEntity OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the FQDN of the SNMP entity of the + Provisioning Server. When the MTA SNMP Enrollment + Mechanism is used, this object represents the server that + the MTA communicates with, that it receives the + configuration file URL from, and that it sends the + enrollment notification to. The SNMP entity is also the + destination entity for all the provisioning + notifications. It may be used for post-provisioning + SNMP operations. During the provisioning phase, this + SNMP entity FQDN is supplied to the MTA via DHCP option + 122, sub-option 3, as defined in RFC 3495. The MTA must + resolve the FQDN value before its very first network + interaction with the SNMP entity during the provisioning + phase." + + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 10 } + +pktcMtaDevProvConfigHash OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(20)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + " This object contains the hash value of the contents of the + configuration file. + The authentication algorithm is Secure Hashing Algorithm + 1 (SHA-1), and the length is 160 bits. The hash + calculation MUST follow the requirements defined in the + PacketCable Security Specification. When the MTA SNMP + Enrollment mechanism is used, this hash value is + calculated and sent to the MTA prior to sending the + config file. This object value is then provided by the + Provisioning server via an SNMP SET operation. + When the MTA SNMP Enrollment mechanism is not in use, the + hash value is provided in the configuration file itself, + and it is also calculated by the MTA. This object value + MUST represent the hash value calculated by the MTA. + When the MTA SNMP Enrollment mechanism is not in use, the + MTA must reject all SNMP SET operations on this object and + return an 'inconsistentValue' error. + If a value is written into an instance of + pktcMtaDevProvConfigHash, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification." + ::= { pktcMtaDevServer 11 } + +pktcMtaDevProvConfigKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the key used to encrypt/decrypt + the configuration file when secure SNMPv3 provisioning + is used. + The value of this object is provided along with the + configuration file information (pktcMtaDevConfigFile) + and hash (pktcMtaDevProvConfigHash) by the Provisioning + Server via SNMP SET once the configuration file has been + created, as defined by the PacketCable Security + specification. + + The privacy algorithm is defined by the + pktcMtaDevProvConfigEncryptAlg MIB object. The + MTA requirements related to the privacy algorithm are + defined in the PacketCable Security Specification. + + If this object is set at any other provisioning step than + that allowed by the PacketCable MTA Device + + + + Provisioning Specification, the MTA SHOULD return + an 'inconsistentValue' error. + This object must not be used in non secure provisioning + mode. In non-secure provisioning modes, the MTA SHOULD + return an 'inconsistentValue' in response to SNMP SET + operations, and the MTA SHOULD return a zero-length + string in response to SNMP GET operations. + If a value is written into an instance of + pktcMtaDevProvConfigKey, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification." + ::= { pktcMtaDevServer 12 } + +pktcMtaDevProvConfigEncryptAlg OBJECT-TYPE + SYNTAX PktcMtaDevProvEncryptAlg + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines the encryption algorithm used for + privacy protection of the MTA Configuration File content." + DEFVAL { des64CbcMode } + ::= { pktcMtaDevServer 13 } + +pktcMtaDevProvSolicitedKeyTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..180) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines a Kerberos Key Management timer on the + MTA. It is the time period during which the MTA saves the + nonce and Server Kerberos Principal Identifier to match an + AP Request and its associated AP Reply response from the + Provisioning Server. + After the timeout has been exceeded, the client discards + this (nonce, Server Kerberos Principal Identifier) pair, + after which it will no longer accept a matching AP Reply. + This timer only applies when the Provisioning Server + initiated key management for SNMPv3 (with a + Wake Up message). + If this object is set to a zero value, the MTA MUST return + an 'inconsistentValue' in response to SNMP SET operations. + This object should not be used in non-secure provisioning + modes. In non-secure provisioning modes, the MTA MUST + return an 'inconsistentValue' in response to SNMP SET + operations, and the MTA MUST return a zero value in + + + + response to SNMP GET operations. + If a value is written into an instance of + pktcMtaDevProvSolicitedKeyTimeout, the agent MUST NOT + retain the supplied value across MTA re-initializations + or reboots." + DEFVAL { 3 } + ::= { pktcMtaDevServer 14 } + +--================================================================= +-- +-- Unsolicited key updates are retransmitted according to an +-- exponential back-off mechanism using two timers and a maximum +-- retry counter for AS replies. +-- The initial retransmission timer value is the nominal timer +-- value (pktcMtaDevProvUnsolicitedKeyNomTimeout). The +-- retransmissions occur with an exponentially increasing interval +-- that caps at the maximum timeout value +-- (pktcMtaDevProvUnsolicitedKeyMaxTimeout). +-- Retransmissions stop when the maximum retry counter is reached +-- (pktcMtaDevProvUnsolicitedKeyMaxRetries). +-- For example, with values of 3 seconds for the nominal +-- timer, 100 seconds for the maximum timeout, and 8 retries max, +-- and with an exponential value of 2, this results in +-- retransmission intervals will be 3 s, 6 s, 12 s, 24 s, 48 s, +-- 96 s, 100 s, and 100 s; +-- retransmissions then stop because the maximum number of +-- retries (8) has been reached. +-- +--================================================================= +-- +-- Timeouts for unsolicited key management updates are only +-- pertinent before the first SNMPv3 message is sent between the +-- MTA and the Provisioning Server and before the configuration +-- file is loaded. +-- +--================================================================= + +pktcMtaDevProvUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the timeout value that applies to + an MTA-initiated AP-REQ/REP key management exchange with + the Provisioning Server in SNMPv3 provisioning. + It is the maximum timeout value, and it may not be exceeded + in the exponential back-off algorithm. If the DHCP option + + + + code 122, sub-option 5, is provided to the MTA, it + overwrites this value. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + " PacketCable Security Specification." + DEFVAL {600} + ::= { pktcMtaDevServer 15 } + +pktcMtaDevProvUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the starting value of the timeout + for the AP-REQ/REP Backoff and Retry mechanism + with exponential timeout in SNMPv3 provisioning. + If the DHCP option code 122, sub-option 5, is provided + the MTA, it overwrites this value. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + " PacketCable Security Specification." + DEFVAL {3} + ::= { pktcMtaDevServer 16} + +pktcMtaDevProvUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a retry counter that applies to + an MTA-initiated AP-REQ/REP key management exchange with + the Provisioning Server in secure SNMPv3 provisioning. + It is the maximum number of retries before the MTA stops + attempting to establish a Security Association with + Provisioning Server. + If the DHCP option code 122, sub-option 5, is provided to + the MTA, it overwrites this value. + If this object is set to a zero value, the MTA MUST return + an 'inconsistentValue' in response to SNMP SET operations. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + + + + " PacketCable Security Specification." + DEFVAL {8} + ::= { pktcMtaDevServer 17 } + +pktcMtaDevProvKerbRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the name of the associated + provisioning Kerberos realm acquired during the MTA4 + provisioning step (DHCP Ack) for SNMPv3 provisioning. + The uppercase ASCII representation of the associated + Kerberos realm name MUST be used by both the Manager (SNMP + entity) and the MTA. + The Kerberos realm name for the Provisioning Server is + supplied to the MTA via DHCP option code 122, sub-option 6, + as defined in RFC 3495. In secure SNMP provisioning mode, + the value of the Kerberos realm name for the Provisioning + Server supplied in the MTA configuration file must match + the value supplied in the DHCP option code 122, + sub-option 6. Otherwise, the value of this object must + contain the value supplied in DHCP Option 122, + sub-option 6." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 18 } + +pktcMtaDevProvState OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + waitingForSnmpSetInfo (2), + waitingForTftpAddrResponse (3), + waitingForConfigFile (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the MTA provisioning state. + If the state is: + + 'operational(1)', the device has completed the loading + and processing of the initialization parameters. + + 'waitingForSnmpSetInfo(2)', the device is waiting on + its configuration file download access information. + Note that this state is only reported when the MTA + + + + SNMP enrollment mechanism is used. + + 'waitingForTftpAddrResponse(3)', the device has sent a + DNS request to resolve the server providing the + configuration file, and it is awaiting for a response. + Note that this state is only reported when the MTA + SNMP enrollment mechanism is used. + + 'waitingForConfigFile(4)', the device has sent a + request via TFTP or HTTP for the download of its + configuration file, and it is awaiting for a response or + the file download is in progress." + REFERENCE + " PacketCable MTA Device Provisioning Specification, + PacketCable Security Specification." + ::= { pktcMtaDevServer 19 } + + -- + -- The following object group describes the security objects. + -- + +pktcMtaDevManufacturerCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA Manufacturer Certificate. + The object value must be the ASN.1 DER encoding of the MTA + manufacturer's X.509 public key certificate. The MTA + Manufacturer Certificate is issued to each MTA + manufacturer and is installed into each MTA at the time of + manufacture or with a secure code download. The specific + requirements related to this certificate are defined in + the PacketCable or IPCablecom Security specifications." + REFERENCE + " PacketCable Security Specification." + + ::= {pktcMtaDevSecurity 1} + +pktcMtaDevCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA Device Certificate. + The object value must be the ASN.1 DER encoding of the + MTA's X.509 public-key certificate issued by the + manufacturer and installed into the MTA at the time of + + + + manufacture or with a secure code download. + This certificate contains the MTA MAC address. The + specific requirements related to this certificate are + defined in the PacketCable or IPCablecom Security + specifications." + REFERENCE + " PacketCable Security Specification." + ::= { pktcMtaDevSecurity 2 } + +pktcMtaDevCorrelationId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a correlation ID, an arbitrary value + generated by the MTA that will be exchanged as part of the + device capability data to the Provisioning Application. + This random value is used as an identifier to correlate + related events in the MTA provisioning sequence. + This value is intended for use only during the MTA + initialization and configuration file download." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevSecurity 3 } + +pktcMtaDevTelephonyRootCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the telephony Service Provider Root + certificate. The object value is the ASN.1 DER encoding of + the IP Telephony Service Provider Root X.509 public key + certificate. This certification is stored in the MTA + non-volatile memory and can be updated with a secure code + download. This certificate is used to validate the initial + AS Reply received by the MTA from the Key Distribution + Center (KDC) during the MTA initialization. The specific + requirements related to this certificate are defined in + the PacketCable or IPCablecom Security specifications." + REFERENCE + " PacketCable Security Specification." + ::= { pktcMtaDevSecurity 4 } + +--================================================================= +-- +-- Informative Procedures for Setting up Security Associations +-- + + + +-- A Security Association may be set up either via configuration or +-- via NCS signaling. +-- +-- I. Security association setup via configuration. +-- +-- The realm must be configured first. Associated with the realm +-- is a KDC. The realm table (pktcMtaDevRealmTable) indicates +-- information about the realm (e.g., name, organization name) and +-- parameters associated with KDC communications (e.g., grace +-- periods, AS Request/AS Reply adaptive back-off parameters). +-- +-- Once the realm is established, one or more CMS(es) may be +-- defined in the realm. Associated with each CMS +-- entry in the pktcMtaDevCmsTable is an explicit reference +-- to a Realm via the realm name (pktcMtaDevCmsKerbRealmName), +-- the FQDN of the CMS, and parameters associated with IPSec +-- key management with the CMS (e.g., clock skew, AP Request/ +-- AP Reply adaptive back-off parameters). +-- +-- II. Security association setup via NCS signaling. +-- +-- The procedure of establishing the Security Associations +-- for NCS signaling is described in the PacketCable Security +-- specification. +-- It involves the analysis of the pktcNcsEndPntConfigTable row +-- for the corresponding endpoint number and the correlation of +-- the CMS FQDN from this row with the CMS Table and +-- consequently, with the Realm Table. Both of these tables +-- are defined below. The pktcNcsEndPntConfigTable is defined in +-- the IP over Cable Data Network (IPCDN) +-- NCS Signaling MIB [NCSSIGMIB]. +-- +-- III. When the MTA receives wake-up or re-key messages from a +-- CMS, it performs key management based on the corresponding +-- entry in the CMS table. If the matching CMS entry does not +-- exist, it must ignore the wake-up or re-key messages. +-- +--================================================================= +--================================================================= +-- +-- pktcMtaDevRealmTable +-- +-- The pktcMtaDevRealmTable shows the KDC realms. The table is +-- indexed with pktcMtaDevRealmIndex. The Realm Table contains the +-- pktcMtaDevRealmName in conjunction with any server that needs +-- a Security Association with the MTA. Uppercase must be used +-- to compare the pktcMtaDevRealmName content. +-- + + + +--================================================================= + +pktcMtaDevRealmAvailSlot OBJECT-TYPE + SYNTAX Unsigned32 (0..64) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the index number of the first + available entry in the realm table (pktcMtaDevRealmTable). + If all the entries in the realm table have been assigned, + this object contains the value of zero. + A management station should create new entries in the + realm table, using the following procedure: + + First, issue a management protocol retrieval operation + to determine the value of the first available index in the + realm table (pktcMtaDevRealmAvailSlot). + + Second, issue a management protocol SET operation + to create an instance of the pktcMtaDevRealmStatus + object by setting its value to 'createAndWait(5)'. + + Third, if the SET operation succeeded, continue + modifying the object instances corresponding to the newly + created conceptual row, without fear of collision with + other management stations. When all necessary conceptual + columns of the row are properly populated (via SET + operations or default values), the management station may + SET the pktcMtaDevRealmStatus object to 'active(1)'." + ::= { pktcMtaDevSecurity 5 } + +pktcMtaDevRealmTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevRealmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object contains the realm table. + The CMS table (pktcMtaDevCmsTable) and the realm table + (pktcMtaDevRealmTable) are used for managing the MTA-CMS + Security Associations. The realm table defines the + Kerberos realms for the Application Servers (CMSes and the + Provisioning Server)." + ::= { pktcMtaDevSecurity 6 } + +pktcMtaDevRealmEntry OBJECT-TYPE + SYNTAX PktcMtaDevRealmEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " This table entry object lists the MTA security parameters + for a single Kerberos realm. The conceptual rows MUST NOT + persist across MTA reboots." + INDEX { pktcMtaDevRealmIndex } +::= { pktcMtaDevRealmTable 1 } + +PktcMtaDevRealmEntry ::= SEQUENCE { + pktcMtaDevRealmIndex Unsigned32, + pktcMtaDevRealmName SnmpAdminString, + pktcMtaDevRealmPkinitGracePeriod Unsigned32, + pktcMtaDevRealmTgsGracePeriod Unsigned32, + pktcMtaDevRealmOrgName LongUtf8String, + pktcMtaDevRealmUnsolicitedKeyMaxTimeout Unsigned32, + pktcMtaDevRealmUnsolicitedKeyNomTimeout Unsigned32, + pktcMtaDevRealmUnsolicitedKeyMaxRetries Unsigned32, + pktcMtaDevRealmStatus RowStatus + } + +pktcMtaDevRealmIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..64) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the realm table index." + ::= { pktcMtaDevRealmEntry 1} + +pktcMtaDevRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object identifies the Kerberos realm name in all + capitals. The MTA MUST prohibit the instantiation of any + two rows with identical Kerberos realm names. The MTA MUST + also verify that any search operation involving Kerberos + realm names is done using the uppercase ASCII + representation of the characters." + ::= { pktcMtaDevRealmEntry 2 } + +pktcMtaDevRealmPkinitGracePeriod OBJECT-TYPE + SYNTAX Unsigned32 (15..600) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the PKINIT Grace Period. For the + purpose of key management with Application Servers (CMSes + + + + or the Provisioning Server), the MTA must utilize the + PKINIT exchange to obtain Application Server tickets. The + MTA may utilize the PKINIT exchange to obtain Ticket + Granting Tickets (TGTs), which are then used to obtain + Application Server tickets in a TGS exchange. + The PKINIT exchange occurs according to the current Ticket + Expiration Time (TicketEXP) and on the PKINIT Grace Period + (PKINITGP). The MTA MUST initiate the PKINIT exchange at + the time: TicketEXP - PKINITGP." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 15 } + ::= { pktcMtaDevRealmEntry 3 } + +pktcMtaDevRealmTgsGracePeriod OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the Ticket Granting Server Grace + Period (TGSGP). The Ticket Granting Server (TGS) + Request/Reply exchange may be performed by the MTA + on demand whenever an Application Server ticket is + needed to establish security parameters. If the MTA + possesses a ticket that corresponds to the Provisioning + Server or a CMS that currently exists in the CMS table, + the MTA MUST initiate the TGS Request/Reply exchange + at the time: TicketEXP - TGSGP." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 10 } + ::= { pktcMtaDevRealmEntry 4 } + +pktcMtaDevRealmOrgName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the X.500 organization name attribute + as defined in the subject name of the service provider + certificate." + REFERENCE + " PacketCable Security Specification; + RFCs 3280 and 4630, Internet X.509 Public Key + Infrastructure Certificate and Certificate Revocation List + (CRL) Profile" + ::= { pktcMtaDevRealmEntry 5 } + + + + +pktcMtaDevRealmUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum time the MTA will + attempt to perform the exponential back-off algorithm. + This timer only applies when the MTA initiated key + management. If the DHCP option code 122, sub-option 4, is + provided to the MTA, it overwrites this value. + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s, and retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 100 } + ::= { pktcMtaDevRealmEntry 6 } + +pktcMtaDevRealmUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..600000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the initial timeout value + for the AS-REQ/AS-REP exponential back-off and retry + mechanism. If the DHCP option code 122, sub-option 4, is + provided to the MTA, it overwrites this value. + This value should account for the average roundtrip + time between the MTA and the KDC, as well as the + processing delay on the KDC. + + + + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, in retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s; retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 3000 } + ::= { pktcMtaDevRealmEntry 7 } + +pktcMtaDevRealmUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..1024) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum number of retries the + MTA attempts to obtain a ticket from the KDC. + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s; retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 5 } + + + + ::= { pktcMtaDevRealmEntry 8 } + +pktcMtaDevRealmStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the row status of this realm in the + realm table (pktcMtaDevRealmTable). + + An entry in this table is not qualified for activation + until the object instances of all corresponding columns + have been initialized, either by default values, or via + explicit SET operations. Until all object instances in + this row are initialized, the status value for this realm + must be 'notReady(3)'. + In particular, two columnar objects must be explicitly + SET: the realm name (pktcMtaDevRealmName) and the + organization name (pktcMtaDevRealmOrgName). Once these 2 + objects have been set and the row status is SET to + 'active(1)', the MTA MUST NOT allow any modification of + these 2 object values. + The value of this object has no effect on whether other + columnar objects in this row can be modified." + ::= { pktcMtaDevRealmEntry 9 } + +--================================================================= +-- +-- The CMS table, pktcMtaDevCmsTable +-- +-- The CMS table and the realm table (pktcMtaDevRealmTable) are used +-- for managing the MTA signaling security. The CMS table defines +-- the CMSes the MTA is allowed to communicate with and contains +-- the parameters describing the SA establishment between the MTA +-- and a CMS. +-- The CMS table is indexed by pktcMtaDevCmsIndex. The table +-- contains the CMS FQDN (pktcMtaDevCmsFQDN) and the associated +-- Kerberos realm name (pktcMtaDevCmsKerbRealmName) so that the MTA +-- can find the corresponding Kerberos realm name in the +-- pktcMtaDevRealmTable. +-- +--================================================================= + +pktcMtaDevCmsAvailSlot OBJECT-TYPE + SYNTAX Unsigned32 (0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + " This object contains the index number of the first + available entry in the CMS table (pktcMtaDevCmsTable). + If all the entries in the CMS table have been assigned, + this object contains the value of zero. + A management station should create new entries in the + CMS table, using the following procedure: + + First, issue a management protocol retrieval operation + to determine the value of the first available index in the + CMS table (pktcMtaDevCmsAvailSlot). + + Second, issue a management protocol SET operation + to create an instance of the pktcMtaDevCmsStatus + object by setting its value to 'createAndWait(5)'. + + Third, if the SET operation succeeded, continue + modifying the object instances corresponding to the newly + created conceptual row, without fear of collision with + other management stations. When all necessary conceptual + columns of the row are properly populated (via SET + operations or default values), the management station may + SET the pktcMtaDevCmsStatus object to 'active(1)'." + ::= { pktcMtaDevSecurity 7 } + +pktcMtaDevCmsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevCmsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the CMS table. + The CMS table (pktcMtaDevCmsTable) and the realm table + (pktcMtaDevRealmTable) are used for managing security + between the MTA and CMSes. Each CMS table entry defines + a CMS the managed MTA is allowed to communicate with + and contains security parameters for key management with + that CMS." + ::= { pktcMtaDevSecurity 8 } + +pktcMtaDevCmsEntry OBJECT-TYPE + SYNTAX PktcMtaDevCmsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table entry object lists the MTA key management + parameters used when establishing Security Associations + with a CMS. The conceptual rows MUST NOT persist across + MTA reboots." + INDEX { pktcMtaDevCmsIndex } + + + + ::= { pktcMtaDevCmsTable 1 } + +PktcMtaDevCmsEntry ::= SEQUENCE { + pktcMtaDevCmsIndex Unsigned32, + pktcMtaDevCmsFqdn SnmpAdminString, + pktcMtaDevCmsKerbRealmName SnmpAdminString, + pktcMtaDevCmsMaxClockSkew Unsigned32, + pktcMtaDevCmsSolicitedKeyTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyMaxTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyNomTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyMaxRetries Unsigned32, + pktcMtaDevCmsIpsecCtrl TruthValue, + pktcMtaDevCmsStatus RowStatus + } + +pktcMtaDevCmsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the CMS table index." + ::= { pktcMtaDevCmsEntry 1 } + +pktcMtaDevCmsFqdn OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the CMS FQDN. The MTA must + prohibit the instantiation of any two rows with identical + FQDNs. The MTA must also verify that any search and/or + comparison operation involving a CMS FQDN is case + insensitive. The MTA must resolve the CMS FQDN as required + by the corresponding PacketCable Specifications." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification; + PacketCable Network-Based Call Signaling Protocol + Specification." + ::= { pktcMtaDevCmsEntry 2 } + +pktcMtaDevCmsKerbRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object identifies the Kerberos realm name in uppercase + characters associated with the CMS defined in this + + + + conceptual row. The object value is a reference + point to the corresponding Kerberos realm name in the + realm table (pktcMtaDevRealmTable)." + ::= { pktcMtaDevCmsEntry 3 } + +pktcMtaDevCmsMaxClockSkew OBJECT-TYPE + SYNTAX Unsigned32 (1..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum allowable clock skew + between the MTA and the CMS defined in this row." + DEFVAL { 300 } + ::= { pktcMtaDevCmsEntry 4 } + +pktcMtaDevCmsSolicitedKeyTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..30000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines a Kerberos Key Management timer on the + MTA. It is the time period during which the MTA saves the + nonce and Server Kerberos Principal Identifier to match an + AP Request and its associated AP Reply response from the + CMS. This timer only applies when the CMS initiated key + management (with a Wake Up message or a Rekey message)." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 1000 } + ::= { pktcMtaDevCmsEntry 5 } + +--================================================================= +-- +-- Unsolicited key updates are retransmitted according to an +-- exponential back-off mechanism using two timers and a maximum +-- retry counter for AS replies. +-- The initial retransmission timer value is the nominal timer +-- value (pktcMtaDevCmsUnsolicitedKeyNomTimeout). The +-- retransmissions occur with an exponentially increasing interval +-- that caps at the maximum timeout value +-- (pktcMtaDevCmsUnsolicitedKeyMaxTimeout). +-- Retransmissions stop when the maximum retry counter is reached +-- (pktcMatDevCmsUnsolicitedMaxRetries). +-- For example, with values of 3 seconds for the nominal +-- timer, 20 seconds for the maximum timeout, and 5 retries max, +-- retransmission intervals will be 3 s, 6 s, 12 s, + + + +-- 20 s, and 20 s; retransmissions then stop due to the +-- maximum number of retries reached. +-- +--================================================================= + +pktcMtaDevCmsUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the timeout value that only applies + to an MTA-initiated key management exchange. It is the + maximum timeout, and it may not be exceeded in the + exponential back-off algorithm." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 600 } + ::= { pktcMtaDevCmsEntry 6 } + +pktcMtaDevCmsUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..30000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the starting value of the timeout + for an MTA-initiated key management. It should account for + the average roundtrip time between the MTA and the CMS and + the processing time on the CMS." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 500 } + ::= { pktcMtaDevCmsEntry 7 } + +pktcMtaDevCmsUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..1024) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the maximum number of retries before + the MTA stops attempting to establish a Security + Association with the CMS." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 5 } + ::= { pktcMtaDevCmsEntry 8 } + + + + +pktcMtaDevCmsIpsecCtrl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies the MTA IPSec control flag. + If the object value is 'true', the MTA must use Kerberos + Key Management and IPsec to communicate with this CMS. If + it is 'false', IPSec Signaling Security and Kerberos key + management are disabled for this specific CMS." + DEFVAL { true } + ::= { pktcMtaDevCmsEntry 9 } + +pktcMtaDevCmsStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the row status associated with this + particular CMS in the CMS table (pktcMtaDevCmsTable). + + An entry in this table is not qualified for activation + until the object instances of all corresponding columns + have been initialized, either by default values or via + explicit SET operations. Until all object instances in + this row are initialized, the status value for this realm + must be 'notReady(3)'. + In particular, two columnar objects must be SET: the + CMS FQDN (pktcMtaDevCmsFqdn) and the Kerberos realm name + (pktcMtaDevCmsKerbRealmName). Once these 2 objects have + been set and the row status is SET to 'active(1)', the MTA + MUST NOT allow any modification of these 2 object values. + + The value of this object has no effect on + whether other columnar objects in this row can be + modified." + ::= { pktcMtaDevCmsEntry 10 } + +pktcMtaDevResetKrbTickets OBJECT-TYPE + SYNTAX BITS { + invalidateProvOnReboot (0), + invalidateAllCmsOnReboot (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines a Kerberos Ticket Control Mask that + instructs the MTA to invalidate the specific Application + + + + Server Kerberos ticket(s) that are stored locally in the + MTA NVRAM (non-volatile or persistent memory). + If the MTA does not store Kerberos tickets in NVRAM, it + MUST ignore setting of this object and MUST report a BITS + value of zero when the object is read. + If the MTA supports Kerberos tickets storage in NVRAM, the + object value is encoded as follows: + - Setting the invalidateProvOnReboot bit (bit 0) to 1 + means that the MTA MUST invalidate the Kerberos + Application Ticket(s) for the Provisioning Application + at the next MTA reboot if secure SNMP provisioning mode + is used. In non-secure provisioning modes, the MTA MUST + return an 'inconsistentValue' in response to SNMP SET + operations with a bit 0 set to 1. + - Setting the invalidateAllCmsOnReboot bit (bit 1) to 1 + means that the MTA MUST invalidate the Kerberos + Application Ticket(s) for all CMSes currently assigned + to the MTA endpoints. + If a value is written into an instance of + pktcMtaDevResetKrbTickets, the agent MUST retain the + supplied value across an MTA re-initialization or + reboot." + REFERENCE + "PacketCable Security Specification." + DEFVAL { { } } + ::= { pktcMtaDevSecurity 9 } + +-- +-- The following group, pktcMtaDevErrors, defines an OID +-- corresponding to error conditions encountered during the MTA +-- provisioning. +-- + +pktcMtaDevErrorsTooManyErrors OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This object defines the OID corresponding to the error + condition when too many errors are encountered in the + MTA configuration file during provisioning." + ::= { pktcMtaDevErrors 1 } + +pktcMtaDevProvisioningEnrollment NOTIFICATION-TYPE + OBJECTS { + sysDescr, + pktcMtaDevSwCurrentVers, + pktcMtaDevTypeIdentifier, + ifPhysAddress, + pktcMtaDevCorrelationId + + + + } + STATUS current + DESCRIPTION + " This INFORM notification is issued by the MTA to initiate + the PacketCable provisioning process when the MTA SNMP + enrollment mechanism is used. + It contains the system description, the current software + version, the MTA device type identifier, the MTA MAC + address (obtained in the MTA ifTable in the ifPhysAddress + object that corresponds to the ifIndex 1), and a + correlation ID." + ::= { pktcMtaNotification 1 } + +pktcMtaDevProvisioningStatus NOTIFICATION-TYPE + OBJECTS { + ifPhysAddress, + pktcMtaDevCorrelationId, + pktcMtaDevProvisioningState + } + STATUS current + DESCRIPTION + " This INFORM notification may be issued by the MTA to + confirm the completion of the PacketCable provisioning + process, and to report its provisioning completion + status. + It contains the MTA MAC address (obtained in the MTA + ifTable in the ifPhysAddress object that corresponds + to the ifIndex 1), a correlation ID and the MTA + provisioning state as defined in + pktcMtaDevProvisioningState." + ::= { pktcMtaNotification 2 } + +-- +-- Compliance Statements +-- + +pktcMtaCompliances OBJECT IDENTIFIER ::= { pktcMtaConformance 1 } +pktcMtaGroups OBJECT IDENTIFIER ::= { pktcMtaConformance 2 } + +pktcMtaBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for MTA devices that implement + PacketCable or IPCablecom requirements. + + This compliance statement applies to MTA implementations + that support PacketCable 1.0 or IPCablecom requirements, + which are not IPv6-capable at the time of this + + + + RFC publication." + + MODULE -- Unconditionally mandatory groups for MTAs + + MANDATORY-GROUPS { + pktcMtaGroup, + pktcMtaNotificationGroup + } + + OBJECT pktcMtaDevDhcpServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevDnsServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevTimeServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevServerDhcp1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDhcp2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns1 + + + + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevTimeServer + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevProvConfigEncryptAlg + SYNTAX PktcMtaDevProvEncryptAlg + DESCRIPTION + "An implementation is only required to support + values of none(0) and des64Cbcmode(1). + An IV of zero is used to encrypt in des64Cbcmode, and + the length of pktcMtaDevProvConfigKey is 64 bits, as + defined in the PacketCable Security specification. + Other encryption types may be defined in future + versions of this MIB module." + + OBJECT pktcMtaDevRealmOrgName + SYNTAX LongUtf8String (SIZE (1..384)) + DESCRIPTION + "The Organization Name field in X.509 certificates + can contain up to 64 UTF-8 encoded characters, + as defined in RFCs 3280 and 4630. Therefore, compliant + devices are only required to support Organization + Name values of up to 64 UTF-8 encoded characters. + Given that RFCs 3280 and 4630 define the UTF-8 encoding, + compliant devices must support a maximum size of 384 + octets for pktcMtaDevRealmOrgName. The calculation of + 384 octets comes from the RFC 3629 UTF-8 encoding + definition whereby the UTF-8 encoded characters + are encoded as sequences of 1 to 6 octets, + assuming that code points as high as 0x7ffffffff + might be used. Subsequent versions of Unicode and ISO + 10646 have limited the upper bound to 0x10ffff. + + + + Consequently, the current version of UTF-8, defined in + RFC 3629, does not require more than four octets to + encode a valid code point." + + ::= { pktcMtaCompliances 1 } + +pktcMtaGroup OBJECT-GROUP + OBJECTS { + pktcMtaDevResetNow, + pktcMtaDevSerialNumber, + pktcMtaDevSwCurrentVers, + pktcMtaDevFQDN, + pktcMtaDevEndPntCount, + pktcMtaDevEnabled, + pktcMtaDevProvisioningCounter, + pktcMtaDevErrorOid, + pktcMtaDevErrorValue, + pktcMtaDevErrorReason, + pktcMtaDevTypeIdentifier, + pktcMtaDevProvisioningState, + pktcMtaDevHttpAccess, + pktcMtaDevCertificate, + pktcMtaDevCorrelationId, + pktcMtaDevManufacturerCertificate, + pktcMtaDevDhcpServerAddressType, + pktcMtaDevDnsServerAddressType, + pktcMtaDevTimeServerAddressType, + pktcMtaDevProvConfigEncryptAlg, + pktcMtaDevServerDhcp1, + pktcMtaDevServerDhcp2, + pktcMtaDevServerDns1, + pktcMtaDevServerDns2, + pktcMtaDevTimeServer, + pktcMtaDevConfigFile, + pktcMtaDevSnmpEntity, + pktcMtaDevRealmPkinitGracePeriod, + pktcMtaDevRealmTgsGracePeriod, + pktcMtaDevRealmAvailSlot, + pktcMtaDevRealmName, + pktcMtaDevRealmOrgName, + pktcMtaDevRealmUnsolicitedKeyMaxTimeout, + pktcMtaDevRealmUnsolicitedKeyNomTimeout, + pktcMtaDevRealmUnsolicitedKeyMaxRetries, + pktcMtaDevRealmStatus, + pktcMtaDevCmsAvailSlot, + pktcMtaDevCmsFqdn, + pktcMtaDevCmsKerbRealmName, + pktcMtaDevCmsUnsolicitedKeyMaxTimeout, + + + + pktcMtaDevCmsUnsolicitedKeyNomTimeout, + pktcMtaDevCmsUnsolicitedKeyMaxRetries, + pktcMtaDevCmsSolicitedKeyTimeout, + pktcMtaDevCmsMaxClockSkew, + pktcMtaDevCmsIpsecCtrl, + pktcMtaDevCmsStatus, + pktcMtaDevResetKrbTickets, + pktcMtaDevProvUnsolicitedKeyMaxTimeout, + pktcMtaDevProvUnsolicitedKeyNomTimeout, + pktcMtaDevProvUnsolicitedKeyMaxRetries, + pktcMtaDevProvKerbRealmName, + pktcMtaDevProvSolicitedKeyTimeout, + pktcMtaDevProvConfigHash, + pktcMtaDevProvConfigKey, + pktcMtaDevProvState, + pktcMtaDevProvisioningTimer, + pktcMtaDevTelephonyRootCertificate + } + STATUS current + DESCRIPTION + " A collection of objects for managing PacketCable or + IPCablecom MTA implementations." + ::= { pktcMtaGroups 1 } + +pktcMtaNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + pktcMtaDevProvisioningStatus, + pktcMtaDevProvisioningEnrollment + } + STATUS current + DESCRIPTION + " A collection of notifications dealing with the change of + MTA provisioning status." + ::= { pktcMtaGroups 2 } + +pktcMtaBasicSmtaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for S-MTA devices + that implement PacketCable or IPCablecom requirements. + + This compliance statement applies to S-MTA implementations + that support PacketCable or IPCablecom requirements, + which are not IPv6-capable at the time of this + RFC publication." + + MODULE -- Unconditionally Mandatory Groups for S-MTA devices + MANDATORY-GROUPS { + + + + pktcMtaGroup, + pktcMtaNotificationGroup + } + + OBJECT pktcMtaDevDhcpServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevDnsServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevTimeServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevServerDhcp1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDhcp2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + + + + OBJECT pktcMtaDevServerDns2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevTimeServer + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevProvConfigEncryptAlg + SYNTAX PktcMtaDevProvEncryptAlg + DESCRIPTION + "An implementation is only required to support + values of none(0) and des64Cbcmode(1). + An IV of zero is used to encrypt in des64Cbcmode, and + the length of pktcMtaDevProvConfigKey is 64 bits, as + defined in the PacketCable Security specification. + Other encryption types may be defined in future + versions of this MIB module." + + OBJECT pktcMtaDevRealmOrgName + SYNTAX LongUtf8String (SIZE (1..384)) + DESCRIPTION + "The Organization Name field in X.509 certificates + can contain up to 64 UTF-8 encoded characters, as + defined in RFCs 3280 and 4630. Therefore, compliant + devices are only required to support Organization + Name values of up to 64 UTF-8 encoded characters. + Given that RFCs 3280 and 4630 define the UTF-8 encoding, + compliant devices must support a maximum size of 384 + octets for pktcMtaDevRealmOrgName. The calculation of + 384 octets comes from the RFC 3629 UTF-8 encoding + definition whereby the UTF-8 encoded characters + are encoded as sequences of 1 to 6 octets, + assuming that code points as high as 0x7ffffffff + might be used. Subsequent versions of Unicode and ISO + 10646 have limited the upper bound to 0x10ffff. + Consequently, the current version of UTF-8, defined in + RFC 3629 does not require more than four octets to + encode a valid code point." + MODULE DOCS-CABLE-DEVICE-MIB + MANDATORY-GROUPS { + + + + docsDevSoftwareGroupV2 + } + + MODULE DOCS-IETF-BPI2-MIB + MANDATORY-GROUPS { + docsBpi2CodeDownloadGroup + } + + ::= { pktcMtaCompliances 2 } + +END diff --git a/mibs/ietf/PKTC-IETF-SIG-MIB b/mibs/ietf/PKTC-IETF-SIG-MIB new file mode 100644 index 0000000..c9f708a --- /dev/null +++ b/mibs/ietf/PKTC-IETF-SIG-MIB @@ -0,0 +1,3199 @@ +PKTC-IETF-SIG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Unsigned32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC4001] + TEXTUAL-CONVENTION, + RowStatus, + TruthValue + FROM SNMPv2-TC -- [RFC2579] + + + + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex + FROM IF-MIB -- [RFC2863] + Dscp + FROM DIFFSERV-DSCP-TC; -- [RFC3289] + +pktcIetfSigMib MODULE-IDENTITY + LAST-UPDATED "200712180000Z" -- December 18, 2007 + ORGANIZATION "IETF IPCDN Working Group" + CONTACT-INFO + "Sumanth Channabasappa + Cable Television Laboratories, Inc. + 858 Coal Creek Circle, + Louisville, CO 80027, USA + Phone: +1 303-661-3307 + Email: Sumanth@cablelabs.com + + Gordon Beacham + Motorola, Inc. + 6450 Sequence Drive, Bldg. 1 + San Diego, CA 92121, USA + Phone: +1 858-404-2334 + Email: gordon.beacham@motorola.com + + Satish Kumar Mudugere Eswaraiah + Texas Instruments India (P) Ltd., + Golf view, Wind Tunnel Road + Murugesh Palya + Bangalore 560 017, INDIA + Phone: +91 80 5269451 + Email: satish.kumar@ti.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-Chair: Jean-Francois Mule, jf.mule@cablelabs.com + Co-Chair: Richard Woundy, Richard_Woundy@cable.comcast.com" + + DESCRIPTION + "This MIB module supplies the basic management + objects for the PacketCable and IPCablecom Signaling + protocols. This version of the MIB includes + common signaling and Network Call Signaling + + + + (NCS)-related signaling objects. + + Copyright (C) The IETF Trust (2008). This version of + this MIB module is part of RFC 5098; see the RFC itself for + full legal notices." + REVISION "200712180000Z" + DESCRIPTION + "Initial version, published as RFC 5098." + +::= { mib-2 169 } + +-- Textual Conventions + +TenthdBm ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents power levels that are + normally expressed in dBm. Units are in tenths of a dBm; + for example, -13.5 dBm will be represented as -135." + SYNTAX Integer32 + +PktcCodecType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This TEXTUAL-CONVENTION defines various types of codecs + that MAY be supported. The description for each + enumeration is listed below: + + Enumeration Description + other a defined codec not in the enumeration + unknown a codec not defined by the PacketCable + Codec Specification + g729 ITU-T Recommendation G.729 + reserved for future use + g729E ITU-T Recommendation G.729E + pcmu Pulse Code Modulation u-law (PCMU) + g726at32 ITU-T Recommendation G.726-32 (32 kbit/s) + g728 ITU-T Recommendation G.728 + pcma Pulse Code Modulation a-law (PCMA) + g726at16 ITU-T Recommendation G.726-16 (16 kbit/s) + g726at24 ITU-T Recommendation G.726-24 (24 kbit/s) + g726at40 ITU-T Recommendation G.726-40 (40 kbit/s) + ilbc IETF Internet low-bit rate codec + bv16 Broadcom BroadVoice16 + + The list of codecs is consistent with the IETF + Real-Time Transport Protocol (RTP) Profile registry and + + + + the RTP Map Parameters Table in PacketCable Audio/Video + Codecs Specification [PKT-SP-CODEC]. The literal codec + name for each codec is listed below: + + Codec Literal Codec Name + g729 G729 + g729E G729E + pcmu PCMU + g726at32 G726-32 + g728 G728 + pcma PCMA + g726at16 G726-16 + g726at24 G726-24 + g726at40 G726-40 + ilbc iLBC + bv16 BV16 + + The literal codec name is the second column of the table + with codec RTP Map Parameters. The Literal Codec Name Column + contains the codec name used in the local connection + options (LCO) of the NCS messages create connection + (CRCX)/modify connection (MDCX) and is also used to + identify the codec in the Call Management System (CMS) + Provisioning Specification. The RTP Map Parameter column of + the Table contains the string used in the media attribute + line (a=) of the session description protocol (SDP) + parameters in NCS messages." + SYNTAX INTEGER { + other (1), + unknown (2), + g729 (3), + reserved (4), + g729E (5), + pcmu (6), + g726at32 (7), + g728 (8), + pcma (9), + g726at16 (10), + g726at24 (11), + g726at40 (12), + ilbc (13), + bv16 (14) + } + +PktcRingCadence ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This object provides an encoding scheme for ring + + + + cadences, including repeatability characteristics. All + fields in this object MUST be encoded in network-byte + order. + + The first three higher-order octets are reserved. The + octets that follow are used to encode a 'bit-string', with + each bit corresponding to 50 milliseconds. A bit value of + '1' indicates the presence of a ring-tone, and a bit value + of '0' indicates the absence of a ring-tone, for that + duration (50 ms) (Note: A minimum number of octets + required to encode the bit-string MUST be used). + + The first two of the reserved octets MUST indicate the + length of the encoded cadence (in bits) and MUST range + between 1 and 264. (Note: The length in bits MUST also be + consistent with the number of octets that encode the + cadence). The MTA MUST ignore any unused bits in the last + octet, but MUST reflect the value as provided on + subsequent SNMP GETs. + + The third of the reserved octets indicates 'repeatability' + and MUST be either 0x80 or 0x00 -- the former value + indicating 'non-repeatability', and the latter indicating + 'repeatability'. + + The MTA MUST reject attempts to set a value that violates + any of the above requirements." + + + SYNTAX OCTET STRING (SIZE(4..36)) + + +PktcSigType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This object lists the various types of signaling that may + be supported: + + other(1) - set when signaling other than NCS is used + ncs(2) - Network Call Signaling is a derivation of MGCP + (Media Gateway Control Protocol) defined for + IPCablecom/PacketCable MTAs." + SYNTAX INTEGER { + other(1), + ncs(2) + } + + + + + +DtmfCode::=TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents the Dual-Tone + Multi-Frequency (DTMF) Character used + to indicate the start or end of the digit transition + sequence used for caller id or Visual Message Waiting + Indicator (VMWI). + + Note: The DTMF code '*' is indicated using 'dtmfcodeStar', + and the DTMF code '#' is indicated using ' dtmfcodeHash'." + SYNTAX INTEGER { + dtmfcode0(0), + dtmfcode1(1), + dtmfcode2(2), + dtmfcode3(3), + dtmfcode4(4), + dtmfcode5(5), + dtmfcode6(6), + dtmfcode7(7), + dtmfcode8(8), + dtmfcode9(9), + dtmfcodeStar(10), + dtmfcodeHash(11), + dtmfcodeA(12), + dtmfcodeB(13), + dtmfcodeC(14), + dtmfcodeD(15) +} + +PktcSubscriberSideSigProtocol::=TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents the Signaling + protocol being used for purposes such as caller id + or VMWI. + + A value of fsk(1) indicates Frequency Shift Keying + (FSK). + A value of dtmf(2) indicates Dual-Tone Multi-Frequency + (DTMF)." + SYNTAX INTEGER { + fsk(1), + dtmf(2) + } + +pktcSigMibObjects OBJECT IDENTIFIER ::= { pktcIetfSigMib 1 } +pktcSigDevObjects OBJECT IDENTIFIER ::= + + + + { pktcSigMibObjects 1 } +pktcSigEndPntConfigObjects OBJECT IDENTIFIER ::= + { pktcSigMibObjects 2 } +-- +-- The codec table (pktcSigDevCodecTable) defines all combinations +-- of codecs supported by the Multimedia Terminal Adapter (MTA). +-- +pktcSigDevCodecTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevCodecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the MTA-supported codec types. An MTA + MUST populate this table with all possible combinations of + codecs it supports for simultaneous operation. For example, + an MTA with two endpoints may be designed with a particular + Digital Signal Processing (DSP) and memory architecture that + allows it to support the following fixed combinations of + codecs for simultaneous operation: + + Codec Type Maximum Number of Simultaneous Codecs + PCMA 3 + + PCMA 2 + PCMU 1 + + PCMA 1 + + PCMU 2 + + PCMU 3 + + PCMA 1 + G729 1 + + G729 2 + + PCMU 1 + G729 1 + + Based on this example, the entries in the codec table + would be: + + pktcSigDev pktcSigDev pktcSigDev + CodecComboIndex CodecType CodecMax + 1 pcma 3 + 2 pcma 2 + 2 pcmu 1 + + + + 3 pcma 1 + 3 pcmu 2 + 4 pcmu 3 + 5 pcma 1 + 5 g729 1 + 6 g729 2 + 7 pcmu 1 + 7 g729 1 + + An operator querying this table is able to determine all + possible codec combinations the MTA is capable of + simultaneously supporting. + + This table MUST NOT include non-voice codecs." + ::= { pktcSigDevObjects 1 } + +pktcSigDevCodecEntry OBJECT-TYPE + SYNTAX PktcSigDevCodecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents the maximum number of active + connections with a particular codec the MTA is capable of + supporting. Each row is indexed by a composite key + consisting of a number enumerating the particular codec + combination and the codec type." + INDEX { pktcSigDevCodecComboIndex, pktcSigDevCodecType } + ::= { pktcSigDevCodecTable 1 } + +PktcSigDevCodecEntry ::= SEQUENCE { + pktcSigDevCodecComboIndex Unsigned32, + pktcSigDevCodecType PktcCodecType, + pktcSigDevCodecMax Unsigned32 + } + +pktcSigDevCodecComboIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The index value that enumerates a particular codec + combination in the pktcSigDevCodecTable." + ::= { pktcSigDevCodecEntry 1 } + +pktcSigDevCodecType OBJECT-TYPE + SYNTAX PktcCodecType + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " A codec type supported by this MTA." + ::= { pktcSigDevCodecEntry 2 } + +pktcSigDevCodecMax OBJECT-TYPE + SYNTAX Unsigned32(1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The maximum number of simultaneous sessions of a + particular codec that the MTA can support." + ::= { pktcSigDevCodecEntry 3 } + +-- +-- These are the common signaling-related definitions that affect +-- the entire MTA device. +-- + +pktcSigDevEchoCancellation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies if the device is capable of echo + cancellation. The MTA MUST set this MIB object to a + value of true(1) if it is capable of echo + cancellation, and a value of false(2) if not." + ::= { pktcSigDevObjects 2 } + +pktcSigDevSilenceSuppression OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies if the device is capable of + silence suppression (as a result of Voice Activity + Detection). The MTA MUST set this MIB object to a + value of true(1) if it is capable of silence + suppression, and a value of false(2) if not." +::= { pktcSigDevObjects 3 } + +pktcSigDevCidSigProtocol OBJECT-TYPE + SYNTAX PktcSubscriberSideSigProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the subscriber-line + protocol used for signaling on-hook caller id information. + + + + Different countries define different caller id signaling + protocols to support caller identification. + + Setting this object at a value fsk(1) sets the subscriber + line protocol to be Frequency Shift Keying (FSK). + + Setting this object at a value dtmf(2) sets the subscriber + line protocol to be Dual-Tone Multi-Frequency (DTMF). + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { fsk } +::= { pktcSigDevObjects 4 } + +pktcSigDevR0Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 0 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 5 } + +pktcSigDevR1Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 1 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 6 } + +pktcSigDevR2Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 2 (a user-defined + field). + + + + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 7 } + +pktcSigDevR3Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 3 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 8 } + +pktcSigDevR4Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 4 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 9 } + +pktcSigDevR5Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 5 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 10 } + +pktcSigDevR6Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 6 (a user-defined + field). + + + + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 11 } + +pktcSigDevR7Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 7 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 12 } + +pktcSigDevRgCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence rg (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 13 } + +pktcSigDevRsCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence rs (a user-defined + field). The MTA MUST reject any attempt to make this object + repeatable. + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 14 } + +pktcSigDefCallSigDscp OBJECT-TYPE + SYNTAX Dscp -- RFC 3289: DIFFSERV-DSCP-TC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " The default value used in the IP header for setting the + Differentiated Services Code Point (DSCP) value for call + + + + signaling. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 0 } + ::= { pktcSigDevObjects 15 } + +pktcSigDefMediaStreamDscp OBJECT-TYPE + SYNTAX Dscp -- RFC 3289: DIFFSERV-DSCP-TC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the default value used in the IP + header for setting the Differentiated Services Code Point + (DSCP) value for media stream packets. The MTA MUST NOT + update this object with the value supplied by the CMS in + the NCS messages (if present). Any currently active + connections are not affected by updates to this object. + When the value of this object is updated by SNMP, the MTA + MUST use the new value as a default starting only from + new connections. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 0 } + ::= { pktcSigDevObjects 16 } + +-- +-- pktcSigCapabilityTable - This table defines the valid signaling +-- types supported by this MTA. +-- + +pktcSigCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the signaling types supported by this + MTA." + ::= { pktcSigDevObjects 17 } + +pktcSigCapabilityEntry OBJECT-TYPE + SYNTAX PktcSigCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entries in pktcMtaDevSigCapabilityTable - list of + supported signaling types, versions, and vendor extensions + + + + for this MTA. Each entry in the list provides for one + signaling type and version combination. If the device + supports multiple versions of the same signaling type, it + will require multiple entries." + INDEX { pktcSigCapabilityIndex } + ::= { pktcSigCapabilityTable 1 } + +PktcSigCapabilityEntry ::= SEQUENCE { + pktcSigCapabilityIndex Unsigned32, + pktcSigCapabilityType PktcSigType, + pktcSigCapabilityVersion SnmpAdminString, + pktcSigCapabilityVendorExt SnmpAdminString + } + +pktcSigCapabilityIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The index value that uniquely identifies an entry in the + pktcSigCapabilityTable." + ::= { pktcSigCapabilityEntry 1 } + +pktcSigCapabilityType OBJECT-TYPE + SYNTAX PktcSigType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object identifies the type of signaling used. This + value has to be associated with a single signaling + version." + ::= { pktcSigCapabilityEntry 2 } + +pktcSigCapabilityVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Provides the version of the signaling type - reference + pktcSigCapabilityType. Examples would be 1.0 or 2.33 etc." + ::= { pktcSigCapabilityEntry 3 } + +pktcSigCapabilityVendorExt OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The vendor extension allows vendors to provide a list of + + + + additional capabilities. + + The syntax for this MIB object in ABNF ([RFC5234]) is + specified to be zero or more occurrences of vendor + extensions, as follows: + + pktcSigCapabilityVendorExt = *(vendor-extension) + vendor-extension = (ext symbol alphanum) DQUOTE ; DQUOTE + ext = DQUOTE %x58 DQUOTE + symbol = (DQUOTE %x2D DQUOTE)/(DQUOTE %x2D DQUOTE) + alphanum = 1*6(ALPHA/DIGIT) + + " + ::= { pktcSigCapabilityEntry 4 } + +pktcSigDefNcsReceiveUdpPort OBJECT-TYPE + SYNTAX InetPortNumber (1025..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA User Datagram Protocol (UDP) + receive port that is being used for NCS call signaling. + This object should only be changed by the configuration + file. + + Unless changed via configuration, this MIB object MUST + reflect a value of '2427'." + REFERENCE + "PacketCable NCS Specification" + ::= { pktcSigDevObjects 18 } + +pktcSigPowerRingFrequency OBJECT-TYPE + SYNTAX INTEGER { + f20Hz(1), + f25Hz(2), + f33Point33Hz(3), + f50Hz(4), + f15Hz(5), + f16Hz(6), + f22Hz(7), + f23Hz(8), + f45Hz(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object must only be provided via the configuration + file during the provisioning process. The power ring + + + + frequency is the frequency at which the sinusoidal voltage + must travel down the twisted pair to make terminal + equipment ring. Different countries define different + electrical characteristics to make terminal equipment + ring. + + The f20Hz setting corresponds to a power ring frequency + of 20 Hertz. The f25Hz setting corresponds to a power ring + frequency of 25 Hertz. The f33Point33Hz setting + corresponds to a power ring frequency of 33.33 Hertz. The + f50Hz setting corresponds to a power ring frequency of 50 + Hertz. The f15Hz setting corresponds to a power ring + frequency of 15 Hertz. The f16Hz setting corresponds to a + power ring frequency of 16 Hertz. The f22Hz setting + corresponds to a power ring frequency of 22 Hertz. The + f23Hz setting corresponds to a power ring frequency of 23 + Hertz. The f45Hz setting corresponds to a power ring + frequency of 45 Hertz." + REFERENCE + "ETSI-EN-300-001" + ::= { pktcSigDevObjects 19 } + +pktcSigPulseSignalTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigPulseSignalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The Pulse signal table defines the pulse signal operation. + There are nine types of international pulse signals, + with each signal having a set of provisionable parameters. + The values of the MIB objects in this table take effect + only if these parameters are not defined via signaling, in + which case, the latter determines the values of the + parameters. The MIB objects in this table do not persist + across MTA reboots." + REFERENCE + "ETSI-TS-101-909-4 Specification" + ::= { pktcSigDevObjects 20 } + +pktcSigPulseSignalEntry OBJECT-TYPE + SYNTAX PktcSigPulseSignalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the set of parameters associated with + each particular value of pktcSigPulseSignalType. Each + entry in the pktcSigPulseSignalTable is indexed by the + pktcSigPulseSignalType object. + + + + The conceptual rows MUST NOT persist across MTA reboots." + INDEX { pktcSigPulseSignalType } + ::= { pktcSigPulseSignalTable 1 } + +PktcSigPulseSignalEntry ::= SEQUENCE { + pktcSigPulseSignalType INTEGER, + pktcSigPulseSignalFrequency INTEGER, + pktcSigPulseSignalDbLevel TenthdBm, + pktcSigPulseSignalDuration Unsigned32, + pktcSigPulseSignalPulseInterval Unsigned32, + pktcSigPulseSignalRepeatCount Unsigned32 +} + +pktcSigPulseSignalType OBJECT-TYPE + SYNTAX INTEGER + { + initialRing(1), + pulseLoopClose(2), + pulseLoopOpen(3), + enableMeterPulse(4), + meterPulseBurst(5), + pulseNoBattery(6), + pulseNormalPolarity(7), + pulseReducedBattery(8), + pulseReversePolarity(9) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There are nine types of international pulse signals. These + signals are defined as follows: + initial ring + pulse loop close + pulse loop open + enable meter pulse + meter pulse burst + pulse no battery + pulse normal polarity + pulse reduced battery + pulse reverse polarity" + REFERENCE + "ETSI-EN-300-324-1 Specification" + + ::= { pktcSigPulseSignalEntry 1 } + +pktcSigPulseSignalFrequency OBJECT-TYPE + SYNTAX INTEGER { + twentyfive(1), + + + + twelvethousand(2), + sixteenthousand(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object is only applicable to the initialRing, + enableMeterPulse, and meterPulseBurst signal types. This + object identifies the frequency of the generated signal. + The following table defines the default values for this + object depending on signal type: + + pktcSigPulseSignalType Default + initialRing 25 + enableMeterPulse 16000 + meterPulseBurst 16000 + + The value of twentyfive MUST only be used for the + initialRing signal type. The values of twelvethousand and + sixteenthousand MUST only be used for enableMeterPulse and + meterPulseBurst signal types. An attempt to set this + object while the value of pktcSigPulseSignalType is not + initialRing, enableMeterPulse, or meterPulseBurst will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-001 Specification" + ::= { pktcSigPulseSignalEntry 2} + +pktcSigPulseSignalDbLevel OBJECT-TYPE + SYNTAX TenthdBm (-350..0) + UNITS "1/10 of a dBm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object is only applicable to the enableMeterPulse and + meterPulseBurst signal types. This is the decibel level + for each frequency at which tones could be generated at + the a and b terminals (TE connection point). An attempt to + set this object while the value of pktcSigPulseSignalType + is not enableMeterPulse or meterPulseBurst will result in + an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-001 Specification" + + DEFVAL { -135 } + ::={pktcSigPulseSignalEntry 3 } + +pktcSigPulseSignalDuration OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..5000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the pulse duration for each + signal type. In addition, the MTA must accept the values + in the incremental steps specific for each signal type. + The following table defines the default values and the + incremental steps for this object depending on the signal + type: + + pktcSigPulseSignaltype Default (ms) Increment (ms) + initialRing 200 50 + pulseLoopClose 200 10 + pulseLoopOpen 200 10 + enableMeterPulse 150 10 + meterPulseBurst 150 10 + pulseNoBattery 200 10 + pulseNormalPolarity 200 10 + pulseReducedBattery 200 10 + pulseReversePolarity 200 10 + + An attempt to set this object to a value that does not + fall on one of the increment boundaries, or on the wrong + increment boundary for the specific signal type, will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-324-1 Specification" + ::= {pktcSigPulseSignalEntry 4 } + +pktcSigPulseSignalPulseInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..5000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the repeat interval, or the period, + for each signal type. In addition, the MTA must accept + the values in the incremental steps specific for each + signal type. The following table defines the default + values and the incremental steps for this object, depending + on the signal type: + + pktcSigPulseSignaltype Default (ms) Increment (ms) + initialRing 200 50 + pulseLoopClose 1000 10 + pulseLoopOpen 1000 10 + + + + enableMeterPulse 1000 10 + meterPulseBurst 1000 10 + pulseNoBattery 1000 10 + pulseNormalPolarity 1000 10 + pulseReducedBattery 1000 10 + pulseReversePolarity 1000 10 + + An attempt to set this object to a value that does not + fall on one of the increment boundaries, or on the wrong + increment boundary for the specific signal type, will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-324-1 Specification" + ::= { pktcSigPulseSignalEntry 5} + +pktcSigPulseSignalRepeatCount OBJECT-TYPE + SYNTAX Unsigned32 (1..50) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies how many times to repeat a pulse. + This object is not used by the enableMeterPulse signal + type, and in that case, the value is irrelevant. The + following table defines the default values and the valid + ranges for this object, depending on the signal type: + + pktcSigPulseSignaltype Default Range + + initialRing 1 1-5 + pulseLoopClose 1 1-50 + pulseLoopOpen 1 1-50 + enableMeterPulse (any value)(but not used) + meterPulseBurst 1 1-50 + pulseNoBattery 1 1-50 + pulseNormalPolarity 1 1-50 + pulseReducedBattery 1 1-50 + pulseReversePolarity 1 1-50 + + An attempt to set this object to a value that does not + fall within the range for the specific + signal type will result in an 'inconsistentValue' error." + ::={ pktcSigPulseSignalEntry 6 } + +pktcSigDevCidMode OBJECT-TYPE + SYNTAX INTEGER { + duringRingingETS(1), + dtAsETS(2), + rpAsETS(3), + + + + lrAsETS(4), + lrETS(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " For on-hook caller id, pktcSigDevCidMode selects the method + for representing and signaling caller identification. For + the duringRingingETS method, the Frequency Shift Keying + (FSK) or the Dual-Tone Multi-Frequency (DTMF) containing + the caller identification information is sent between the + first and second ring pattern. + + For the dtAsETS,rpAsETS, lrAsETS and lrETS + methods, the FSK or DTMF containing the caller id + information is sent before the first ring pattern. + + For the dtAsETS method, the FSK or DTMF is sent after the + Dual Tone Alert Signal. For the rpAsETS method, the FSK or + DTMF is sent after a Ring Pulse. + + For the lrAsETS method, the Line Reversal occurs first, + then the Dual Tone Alert Signal, and, finally, the FSK or + DTMF is sent. + + For the lrETS method, the Line Reversal occurs first, + then the FSK or DTMF is sent. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL { rpAsETS} + ::= {pktcSigDevObjects 21 } + +pktcSigDevCidAfterRing OBJECT-TYPE + SYNTAX Unsigned32 (0|50..2000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of first + ringing pattern and the start of the transmission of the + FSK or DTMF containing the caller id information. It is + only used when pktcSigDevCidMode is set to a value of + 'duringRingingETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + + + + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS 550 ms + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not duringringingETS will result in + an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 550 } + ::= {pktcSigDevObjects 22 } + +pktcSigDevCidAfterDTAS OBJECT-TYPE + SYNTAX Unsigned32 (0|45..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Dual Tone Alert Signal (DT-AS) and the start of the + transmission of the FSK or DTMF containing the caller id + information. This object is only used when + pktcSigDevCidMode is set to a value of 'dtAsETS' or + 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + + duringringingETS any value (not used) + dtAsETS 50 ms + rpAsETS any value (not used) + lrAsETS 50 ms + lrETS any value (not used) + + An attempt to set this object while the value of + + + + pktcSigDevCidMode is not 'dtAsETS' or 'lrAsETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 50 } + ::= {pktcSigDevObjects 23 } + +pktcSigDevCidAfterRPAS OBJECT-TYPE + SYNTAX Unsigned32 (0|500..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Ring Pulse Alert Signal (RP-AS) and the start of the + transmission of the FSK or DTMF containing the caller id + information. This MIB object is only used when + pktcSigDevCidMode is set to a value of 'rpAsETS'. + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS 650 ms + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'rpAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 650 } + ::= {pktcSigDevObjects 24 } + +pktcSigDevRingAfterCID OBJECT-TYPE + SYNTAX Unsigned32 (0|50..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + complete transmission of the FSK or DTMF containing the + caller id information and the start of the first ring + pattern. It is only used when pktcSigDevCidMode is + set to a value of 'dtAsETS', 'rpAsETS', 'lrAsETS' or + 'lrETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS 250 ms + rpAsETS 250 ms + lrAsETS 250 ms + lrETS 250 ms + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'dtAsETS', 'rpAsETS', + 'lrAsETS', or 'lrETS' will result in an 'inconsistent + value' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + ::= {pktcSigDevObjects 25 } + +pktcSigDevCidDTASAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (50..655) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Line Reversal and the start of the Dual Tone Alert Signal + (DT-AS). This object is only used when pktcSigDevCidMode + is set to a value of 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + + + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS 250 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not lrAsETS will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + + ::= {pktcSigDevObjects 26 } + +pktcSigDevVmwiMode OBJECT-TYPE + SYNTAX INTEGER { + dtAsETS(1), + rpAsETS(2), + lrAsETS(3), + osi(4), + lrETS(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " For visual message waiting indicator (VMWI), + pktcSigDevVmwiMode selects the alerting signal method. For + the dtAsETS, rpAsETS, lrAsETS, osi, and lrETS methods, + the FSK containing the VMWI information is sent after an + alerting signal. + + For the dtAsETS method, the FSK, or DTMF + is sent after the Dual Tone Alert Signal. For the rpAsETS + method, the FSK or DTMF is sent after a Ring Pulse. + + For the lrAsETS method, the Line Reversal occurs first, + then the Dual Tone Alert Signal, and, finally, the FSK or + DTMF is sent. + + For the OSI method, the FSK or DTMF is sent after the Open + Switching Interval. + + + + + For the lrETS method, the Line Reversal occurs first, + then the FSK or DTMF is sent. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL { rpAsETS } + ::= {pktcSigDevObjects 27 } + +pktcSigDevVmwiAfterDTAS OBJECT-TYPE + SYNTAX Unsigned32 (0|45..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Dual Tone Alert Signal (DT-AS) and the start of the + transmission of the FSK or DTMF containing the VMWI + information. + + This object is only used when pktcSigDevVmwiMode is + set to a value of 'dtAsETS' or 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + dtAsETS 50 ms + rpAsETS any value (not used) + lrAsETS 50 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'dtAsETS' or 'lrAsETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 50 } + ::= {pktcSigDevObjects 28 } + + +pktcSigDevVmwiAfterRPAS OBJECT-TYPE + SYNTAX Unsigned32 (0|500..800) + + + + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Ring Pulse Alert Signal (RP-AS) and the start of the + transmission of the FSK or DTMF containing the VMWI + information. + + This object is only used when pktcSigDevVmwiMode is + set to a value of 'rpAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + dtAsETS any value (not used) + rpAsETS 650 ms + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'rpAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 650 } + ::= {pktcSigDevObjects 29 } + +pktcSigDevVmwiDTASAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (0|50..655) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Line Reversal and the start of the Dual Tone Alert Signal + (DT-AS) for VMWI information. This object is only used + when pktcSigDevVmwiMode is set to a value of 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + + + + Value of pktcSigDevVmwiMode Default value + + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS 250 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'lrAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + ::= {pktcSigDevObjects 30 } + +pktcSigDevRingCadenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevRingCadenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Cadence rings are defined by the telco governing + body for each country. The MTA must be able to support + various ranges of cadence patterns and cadence periods. + The MTA will be able to support country-specific + provisioning of the cadence and idle period. Each + cadence pattern will be assigned a unique value ranging + from 0-127 (inclusive) corresponding to the value of x, + where x is the value sent in the cadence ringing (cr) + signal cr(x), requested per the appropriate NCS + message, and defined in the E package. The MTA will derive + the cadence periods from the ring cadence table entry, as + provisioned by the customer. The MTA is allowed to provide + appropriate default values for each of the ring cadences. + This table only needs to be supported when the MTA + implements the E package." + REFERENCE + "ETSI-TS-101-909-4 Specification" + ::= { pktcSigDevObjects 31 } + +pktcSigDevRingCadenceEntry OBJECT-TYPE + SYNTAX PktcSigDevRingCadenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + " Each entry in this row corresponds to a ring cadence + that is being supported by the device. The conceptual + rows MUST NOT persist across MTA reboots." + INDEX { pktcSigDevRingCadenceIndex } + ::= { pktcSigDevRingCadenceTable 1 } + +PktcSigDevRingCadenceEntry ::= SEQUENCE { + pktcSigDevRingCadenceIndex Unsigned32, + pktcSigDevRingCadence PktcRingCadence + } + +pktcSigDevRingCadenceIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " A unique value ranging from 0 to 127 that corresponds to the + value sent by the LE based on country-specific cadences, + one row per cadence cycle. In any given system + implementation for a particular country, it is anticipated + that a small number of ring cadences will be in use. Thus, + this table most likely will not be populated to its full + size." + ::= { pktcSigDevRingCadenceEntry 1 } + +pktcSigDevRingCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Ring Cadence." + ::= { pktcSigDevRingCadenceEntry 2 } + + +pktcSigDevToneTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The Tone Table defines the composition of tones and + various tone operations. + + The definition of the tones callWaiting1 through + callWaiting4 in this table MUST only contain the + audible tone itself; the delay between tones or the value + of the tone repeat count are not applicable for the call + waiting tones. + + + + + The delay between tones or the repeat count is controlled + by the objects pktcSigEndPntConfigCallWaitingDelay and + pktcSigEndPntConfigCallWaitingMaxRep. If the + pktcSigDevToneType is set to either of the values + callWaiting1, callWaiting2, callWaiting3, or callWaiting4, + then the value of the pktcSigDevToneWholeToneRepeatCount + object indicates that the particular frequency group is + applicable, as a repeatable part of the tone, based on the + value of the MIB object + pktcSigDevToneWholeToneRepeatCount. + + The MTA MUST make sure that, after the provisioning + cycle, the table is fully populated (i.e., for each + possible index, an entry MUST be defined) using + reasonable defaults for each row that was not defined + by the provisioning information delivered via MTA + Configuration. + + The frequency composition of each tone is defined by the + pktcSigDevMultiFreqToneTable. For each tone type defined + in pktcSigDevToneTable, the MTA MUST populate at least + one entry in the pktcSigDevMultiFreqToneTable. + + For each particular value of pktcSigDevToneType, the + pktcSigDevToneTable table can define non-repeating and + repeating groups of the frequencies defined by the + pktcSigDevMultiFreqToneTable, such that each group is + represented by the set of the consecutive rows + (frequency group) in the pktcSigDevMultiFreqToneTable. + + Objects in this table do not persist across MTA reboots. + For tones with multiple frequencies refer to the MIB table + pktcSigDevMultiFreqToneTable." + REFERENCE + "PacketCable NCS Specification, ETSI-TS-101-909-4 + Specification." + ::= { pktcSigDevObjects 32 } + +pktcSigDevToneEntry OBJECT-TYPE + SYNTAX PktcSigDevToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The different tone types that can be provisioned based on + country-specific needs. + + Each entry contains the tone generation parameters for + a specific frequency group of the specific Tone Type. + + + + The different parameters can be provisioned via MTA + configuration based on country specific needs. + An MTA MUST populate all entries of this table for each + tone type." + INDEX { pktcSigDevToneType, pktcSigDevToneFreqGroup } + ::= { pktcSigDevToneTable 1 } + +PktcSigDevToneEntry ::= SEQUENCE { + pktcSigDevToneType INTEGER, + pktcSigDevToneFreqGroup Unsigned32, + pktcSigDevToneFreqCounter Unsigned32, + pktcSigDevToneWholeToneRepeatCount Unsigned32, + pktcSigDevToneSteady TruthValue + } + +pktcSigDevToneType OBJECT-TYPE + SYNTAX INTEGER { + busy(1), + confirmation(2), + dial(3), + messageWaiting(4), + offHookWarning(5), + ringBack(6), + reOrder(7), + stutterdial(8), + callWaiting1(9), + callWaiting2(10), + callWaiting3(11), + callWaiting4(12), + alertingSignal(13), + specialDial(14), + specialInfo(15), + release(16), + congestion(17), + userDefined1(18), + userDefined2(19), + userDefined3(20), + userDefined4(21) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value that will correspond to the different + tone types. These tones can be provisioned based on + country-specific needs. This object defines the type + of tone being accessed. + + The alertingSignal, specialDial, specialInfo, release, + + + + congestion, userDefined1, userDefined2, userDefined3, + and userDefined4 tone types are used in + the E line package." + ::= { pktcSigDevToneEntry 1 } + +pktcSigDevToneFreqGroup OBJECT-TYPE + SYNTAX Unsigned32(1..4) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This MIB object represents the Tone Sequence reference + of a multi-sequence tone." + ::={ pktcSigDevToneEntry 2} + +pktcSigDevToneFreqCounter OBJECT-TYPE + SYNTAX Unsigned32(1..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the number of consecutive + multi-frequency tones for the particular tone type in + the multi-frequency table (pktcSigDevMultiFreqToneTable). + + Such a sequence of the consecutive multi-frequency tones + forms the tone group for the particular tone type in the + pktcSigDevToneTable." + ::={ pktcSigDevToneEntry 3} + +pktcSigDevToneWholeToneRepeatCount OBJECT-TYPE + SYNTAX Unsigned32 (0..5000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the repeat count, which signifies how many times + to repeat the entire on-off cadence sequence. Setting this + object may result in a cadence duration longer or shorter + than the overall signal duration specified by the time out + (TO) object for a particular signal. If the repeat count + results in a longer tone duration than the signal duration + specified by the TO, the tone duration defined by the + TO object for a particular signal always represents + the overall signal duration for a tone. In this case, the + tone duration repeat count will not be fully exercised, and + the desired tone duration will be truncated per the TO + setting. If the repeat count results in a shorter tone + duration than the signal duration specified by the TO, the + tone duration defined by the repeat count takes precedence + over the TO and will end the signal event. In this case, + + + + the TO represents a time not to be exceeded for the signal. + It is recommended to ensure proper telephony signaling so that + the TO duration setting should always be longer than the + desired repeat count-time duration." + ::={ pktcSigDevToneEntry 4 } + +pktcSigDevToneSteady OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the steady tone status. A value + of 'true(1)' indicates that the steady tone is applied, and + a value of 'false(2)' indicates otherwise. + Devices must play out the on-off cadence sequence for + the number of times indicated by the MIB object + 'pktcSigDevToneWholeToneRepeatCount' prior to applying the + last tone steadily, indefinitely. If the MIB table + 'pktcSigDevToneTable' contains multiple rows with this + Object set to a value of 'true(1)', the steady tone is + applied to the last repeating frequency group of the tone. + + Setting this MIB object may result in a tone duration that is + longer or shorter than the overall signal duration + specified by the time out (TO) MIB object for a particular + signal. If the repeat count results in a longer tone + duration than the signal duration specified by the TO, the + tone duration defined by the TO object for a particular + signal always represents the overall signal duration for a + tone. In this case, the tone duration repeat count will + not be fully exercised, and the desired tone duration will + be truncated per the TO setting. If the repeat count + results in a shorter tone duration than the signal duration + specified by the TO, the tone duration defined by the + repeat count takes precedence over the TO and will end the + signal event. In this case, the TO represents a time not to + be exceeded for the signal. + + It is recommended to ensure proper telephony signaling that + The TO duration setting should always be longer than the + desired repeat count-time duration, plus the desired maximum + steady tone period." + ::={ pktcSigDevToneEntry 5 } + + pktcSigDevMultiFreqToneTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevMultiFreqToneEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " This MIB table defines the characteristics of tones + with multiple frequencies. The constraints imposed + on the tones by the MIB table pktcSigDevToneTable + need to be considered for MIB objects in this table + as well. + + The MTA MUST populate the corresponding row(s) + of the pktcSigDevMultiFreqToneTable for each tone + defined in the pktcSigDevToneTable. + + The contents of the table may be provisioned via + MTA configuration." + REFERENCE + "PacketCable NCS Specification, ETSI-TS-101-909-4 + Specification." + ::= { pktcSigDevObjects 33 } + + pktcSigDevMultiFreqToneEntry OBJECT-TYPE + SYNTAX PktcSigDevMultiFreqToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The different tone types with multiple frequencies + that can be provisioned based on country-specific + needs." + INDEX {pktcSigDevToneType, pktcSigDevToneNumber} + ::= { pktcSigDevMultiFreqToneTable 1 } + + PktcSigDevMultiFreqToneEntry ::= SEQUENCE { + pktcSigDevToneNumber Unsigned32, + pktcSigDevToneFirstFreqValue Unsigned32, + pktcSigDevToneSecondFreqValue Unsigned32, + pktcSigDevToneThirdFreqValue Unsigned32, + pktcSigDevToneFourthFreqValue Unsigned32, + pktcSigDevToneFreqMode INTEGER, + pktcSigDevToneFreqAmpModePrtg Unsigned32, + pktcSigDevToneDbLevel TenthdBm, + pktcSigDevToneFreqOnDuration Unsigned32, + pktcSigDevToneFreqOffDuration Unsigned32, + pktcSigDevToneFreqRepeatCount Unsigned32 + } + + pktcSigDevToneNumber OBJECT-TYPE + SYNTAX Unsigned32(1..8) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This MIB object represents the frequency reference + of a multi-frequency tone." + ::={ pktcSigDevMultiFreqToneEntry 1} + + pktcSigDevToneFirstFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the first + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 2} + + pktcSigDevToneSecondFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the second + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 3} + + pktcSigDevToneThirdFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the third + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 4} + + pktcSigDevToneFourthFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the fourth + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 5} + + pktcSigDevToneFreqMode OBJECT-TYPE + SYNTAX INTEGER { + firstModulatedBySecond(1), + summation(2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object provides directive on the + modulation or summation of the frequencies + involved in the tone. + + It is to be noted that while summation can + be done without any constraint on the number + of frequencies, the modulation (amplitude) + holds good only when there are two frequencies + (first and second). + + Thus: + - If the mode is set to a value of + 'firstModulatedBySecond(1)', the first frequency + MUST be modulated by the second, and the remaining + frequencies (third and fourth) ignored. The + percentage of amplitude modulation to be applied + is defined by the MIB object + pktcSigDevToneFreqAmpModePrtg. + + - If the mode is set to a value of + 'summation(2)', all the frequencies MUST be + summed without any modulation. + " + ::={ pktcSigDevMultiFreqToneEntry 6} + + pktcSigDevToneFreqAmpModePrtg OBJECT-TYPE + SYNTAX Unsigned32(0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the percentage of amplitude + modulation applied to the second frequency + when the MIB object pktcSigDevToneFreqMode is + set to a value of 'firstModulatedBySecond (1)'. + + If the MIB object pktcSigDevToneFreqMode is set to + value of 'summation (2)', then this MIB object MUST be + ignored." + ::={ pktcSigDevMultiFreqToneEntry 7} + + pktcSigDevToneDbLevel OBJECT-TYPE + SYNTAX TenthdBm (-250..-110) + UNITS "1/10 of a dBm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This MIB object contains the decibel level for each + analog signal (tone) that is locally generated + (versus in-band supervisory tones) and sourced to + the a-b terminals (TE connection point). Each tone + in itself may consist of multiple frequencies, as + defined by the MIB table pktcSigDevMultiFreqToneTable. + + This MIB object reflects the desired level at + the Telco (POTS) a-b (T/R) terminals, including the + effect of any MTA receiver gain (loss). This is required + so that locally generated tones are consistent with + remotely generated in-band tones at the a-b terminals, + consistent with user expectations. + + This MIB object must be set for each tone. + When tones are formed by combining multi-frequencies, + the level of each frequency shall be set so as to result + in the tone level specified in this object at the a-b + (T/R) terminals. + + The wide range of levels for this Object is required + to provide signal-generator levels across the wide + range of gains (losses) -- but does not imply the entire + range is to be achievable given the range of gains (losses) + in the MTA." + DEFVAL { -120 } + ::={ pktcSigDevMultiFreqToneEntry 8} + + pktcSigDevToneFreqOnDuration OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the duration for which the + frequency reference corresponding to the tone type + is turned on." + ::={ pktcSigDevMultiFreqToneEntry 9} + + pktcSigDevToneFreqOffDuration OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the duration for which the + + + + frequency reference corresponding to the tone type + is turned off." + ::={ pktcSigDevMultiFreqToneEntry 10} + + pktcSigDevToneFreqRepeatCount OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object indicates the number of times + to repeat the cadence cycle represented by the + on/off durations (refer to the MIB objects + pktcSigDevToneFreqOnDuration and + pktcSigDevToneFreqOffDuration). + + Setting this object may result in a tone duration that is + longer or shorter than the overall signal duration + specified by the time out (TO) object for the + corresponding tone type. If the value of this MIB + Object indicates a longer duration than that + specified by the TO, the latter overrules the former, + and the desired tone duration will be truncated according + to the TO. + + However, if the repeat count results in a shorter + tone duration than the signal duration specified by + the TO, the tone duration defined by the repeat count + takes precedence over the TO and will end the signal + event. In this case, the TO represents a time not to + be exceeded for the signal. It is recommended, to + ensure proper telephony signaling, that the TO + duration setting should always be longer than the + desired repeat count-time duration. A value of zero + means the tone sequence is to be played once but not + repeated." + ::={ pktcSigDevMultiFreqToneEntry 11} + + pktcSigDevCidDelayAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (300..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the delay between the end of the + Line Reversal and the start of the FSK or DTMF signal. + This MIB object is used only when pktcSigDevCidMode is + set to a value of 'lrETS'. This timing has a range of + 300 to 800 ms. + + + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS 400 + + An attempt to set this object while the value of + pktcSigDevCidMode is not set to a value of 'lrETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 400 } + ::= {pktcSigDevObjects 34 } + + pktcSigDevCidDtmfStartCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional start codes used when + the MIB object pktcSigDevCidSigProtocol is set + to a value of 'dtmf(2)'. + + Different countries define different caller id signaling + codes to support caller identification. When Dual-Tone + Multi-Frequency (DTMF) is used, the caller id digits are + preceded by a 'start code' digit, followed by the digit + transmission sequence ... (where Sx represents + the digits 0-9), and terminated by the 'end code' digit. + + For example, + ... ... ... . + The start code for calling number delivery may be DTMF + 'A' or 'D'. The start code for redirecting a number may be + DTMF 'D'. The DTMF code 'B' may be sent by the network + as a start code for the transfer of information values, + through which special events can be indicated to the + user. In some countries, the '*' or '#' may be used + instead of 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + + + + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeA} + ::= { pktcSigDevObjects 35 } + + pktcSigDevCidDtmfEndCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional end codes used when the + pktcSigDevCidSigProtocol is set to a value of + 'dtmf(2)'. + + Different countries define different caller id signaling + protocols to support caller identification. When + Dual-Tone Multi-Frequency (DTMF) is used, the caller id + digits are preceded by a 'start code' digit, followed by + the digit transmission sequence ... (where Sx + represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + The DTMF code 'C' may be sent by the network as an + end code for the transfer of information values, through + which special events can be indicated to the user. In + some countries, the '*' or '#' may be used instead of + 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeC} + ::= { pktcSigDevObjects 36 } + + pktcSigDevVmwiSigProtocol OBJECT-TYPE + SYNTAX PktcSubscriberSideSigProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the subscriber line protocol used + for signaling the information on Visual Message Waiting + Indicator (VMWI). Different countries define different + VMWI signaling protocols to support VMWI service. + + + + Frequency shift keying (FSK) is most commonly used. + DTMF is an alternative. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { fsk } + ::= { pktcSigDevObjects 37 } + + pktcSigDevVmwiDelayAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (0|300..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the delay between the end of the + Line Reversal and the start of the FSK or DTMF signal. + This object is only used when pktcSigDevVmwiMode is + set to a value of 'lrETS'. + This timing has a range of 300 to 800 ms. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS 400 + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'lrETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL {400} + ::= {pktcSigDevObjects 38 } + + pktcSigDevVmwiDtmfStartCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional start codes used when + + + + the pktcSigDevVmwiSigProtocol is set to a value of + 'dtmf(2)'. Different countries define different On Hook + Data Transmission Protocol signaling codes to support + VMWI. + + When Dual-Tone Multi-Frequency (DTMF) is used, the VMWI + digits are preceded by a 'start code' digit, followed + by the digit transmission sequence ... (where + Sx represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + The start code for redirecting VMWI may be DTMF 'D' + The DTMF code 'B' may be sent by the network as a start + code for the transfer of information values, through + which special events can be indicated to the user. In + some countries, the '*' or '#' may be used instead of + 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeA} + ::= { pktcSigDevObjects 39 } + + pktcSigDevVmwiDtmfEndCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies an optional end code used when the + pktcSigDevVmwiSigProtocol is set to a value of + 'dtmf(2)'. Different countries define different on-hook + Data Transmission Protocol signaling codes to support + VMWI. + + When Dual-Tone Multi-Frequency (DTMF) is used, the VMWI + digits are preceded by a 'start code' digit, followed + by the digit transmission sequence ... (where + Sx represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + + + + The DTMF code 'C' may be sent by the network as an end code + for the transfer of information values, through which + special events can be indicated to the user. In some + countries, the '*' or '#' may be used instead of 'A', + 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeC} + ::= { pktcSigDevObjects 40 } + +pktcSigDevrpAsDtsDuration OBJECT-TYPE + SYNTAX Unsigned32 (0|200..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the duration of the rpASDTS ring + pulse prior to the start of the transmission of the + FSK or DTMF containing the caller id information. It is + only used when pktcSigDevCidMode is set to a value of + 'rpAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS 250 + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'rpAsETS' will result in + an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification and Belgacom + BGC_D_48_9811_30_09_EDOC version 3.3" + DEFVAL { 250 } + ::= {pktcSigDevObjects 41 } + + + + +-- +-- The Endpoint Config Table is used to define attributes that +-- are specific to connection EndPoints. +-- + +pktcSigEndPntConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigEndPntConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the information pertaining to each + endpoint of the MTA. All entries in this table represent + the provisioned endpoints provisioned with the information + required by the MTA to maintain the NCS protocol + communication with the CMS. Each endpoint can be assigned + to its own CMS. If the specific endpoint does not have + the corresponding CMS information in this table, the + endpoint is considered as not provisioned with voice + services. Objects in this table do not persist across + MTA reboots." + ::= { pktcSigEndPntConfigObjects 1 } + +pktcSigEndPntConfigEntry OBJECT-TYPE + SYNTAX PktcSigEndPntConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the pktcSigEndPntConfigTable represents + required signaling parameters for the specific endpoint + provisioned with voice services. The conceptual rows MUST + NOT persist across MTA reboots." + INDEX { ifIndex } + ::= { pktcSigEndPntConfigTable 1 } + +PktcSigEndPntConfigEntry ::= SEQUENCE { + pktcSigEndPntConfigCallAgentId SnmpAdminString, + pktcSigEndPntConfigCallAgentUdpPort InetPortNumber, + pktcSigEndPntConfigPartialDialTO Unsigned32, + pktcSigEndPntConfigCriticalDialTO Unsigned32, + pktcSigEndPntConfigBusyToneTO Unsigned32, + pktcSigEndPntConfigDialToneTO Unsigned32, + pktcSigEndPntConfigMessageWaitingTO Unsigned32, + pktcSigEndPntConfigOffHookWarnToneTO Unsigned32, + pktcSigEndPntConfigRingingTO Unsigned32, + pktcSigEndPntConfigRingBackTO Unsigned32, + pktcSigEndPntConfigReorderToneTO Unsigned32, + pktcSigEndPntConfigStutterDialToneTO Unsigned32, + + + + pktcSigEndPntConfigTSMax Unsigned32, + pktcSigEndPntConfigMax1 Unsigned32, + pktcSigEndPntConfigMax2 Unsigned32, + pktcSigEndPntConfigMax1QEnable TruthValue, + pktcSigEndPntConfigMax2QEnable TruthValue, + pktcSigEndPntConfigMWD Unsigned32, + pktcSigEndPntConfigTdinit Unsigned32, + pktcSigEndPntConfigTdmin Unsigned32, + pktcSigEndPntConfigTdmax Unsigned32, + pktcSigEndPntConfigRtoMax Unsigned32, + pktcSigEndPntConfigRtoInit Unsigned32, + pktcSigEndPntConfigLongDurationKeepAlive Unsigned32, + pktcSigEndPntConfigThist Unsigned32, + pktcSigEndPntConfigStatus RowStatus, + pktcSigEndPntConfigCallWaitingMaxRep Unsigned32, + pktcSigEndPntConfigCallWaitingDelay Unsigned32, + pktcSigEndPntStatusCallIpAddressType InetAddressType, + pktcSigEndPntStatusCallIpAddress InetAddress, + pktcSigEndPntStatusError INTEGER, + pktcSigEndPntConfigMinHookFlash Unsigned32, + pktcSigEndPntConfigMaxHookFlash Unsigned32, + pktcSigEndPntConfigPulseDialInterdigitTime Unsigned32, + pktcSigEndPntConfigPulseDialMinMakeTime Unsigned32, + pktcSigEndPntConfigPulseDialMaxMakeTime Unsigned32, + pktcSigEndPntConfigPulseDialMinBreakTime Unsigned32, + pktcSigEndPntConfigPulseDialMaxBreakTime Unsigned32 + } + +pktcSigEndPntConfigCallAgentId OBJECT-TYPE + SYNTAX SnmpAdminString(SIZE (3..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains a string indicating the call agent + name (e.g., ca@example.com). The call agent name, after + the character '@', MUST be a fully qualified domain name + (FQDN) and MUST have a corresponding pktcMtaDevCmsFqdn + entry in the pktcMtaDevCmsTable. The object + pktcMtaDevCmsFqdn is defined in the PacketCable MIBMTA + Specification. For each particular endpoint, the MTA MUST + use the current value of this object to communicate with + the corresponding CMS. The MTA MUST update this object + with the value of the 'Notified Entity' parameter of the + NCS message. Because of the high importance of this object + to the ability of the MTA to maintain reliable NCS + communication with the CMS, it is highly recommended not + to change this object's value using SNMP during normal + operation." + + + + ::= { pktcSigEndPntConfigEntry 1 } + +pktcSigEndPntConfigCallAgentUdpPort OBJECT-TYPE + SYNTAX InetPortNumber (1025..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the current value of the User + Datagram Protocol (UDP) receive port on which the + call agent will receive NCS from the endpoint. + For each particular endpoint, the MTA MUST use the current + value of this object to communicate with the corresponding + CMS. The MTA MUST update this object with the value of the + 'Notified Entity' parameter of the NCS message. If the + Notified Entity parameter does not contain a CallAgent + port, the MTA MUST update this object with the default + value of 2727. Because of the high importance of this + object to the ability of the MTA to maintain reliable NCS + communication with the CMS, it is highly recommended not + to change this object's value using SNMP during normal + operation." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 2727 } + ::= { pktcSigEndPntConfigEntry 2 } + +pktcSigEndPntConfigPartialDialTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the value of the partial dial + time out. + The time out (TO) elements are intended to limit the time a + tone or frequency is generated. When this MIB object is set + to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 3 } + +pktcSigEndPntConfigCriticalDialTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the value of the critical + dial time out. + The time out (TO) elements are intended to limit the time a + tone or frequency is generated. When this MIB object is set + to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 4 } + ::= { pktcSigEndPntConfigEntry 4 } + +pktcSigEndPntConfigBusyToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for busy + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 5 } + +pktcSigEndPntConfigDialToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for dial + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + + + + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 6 } + +pktcSigEndPntConfigMessageWaitingTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for message + waiting indicator. The MTA MUST NOT update this object + with the value provided in the NCS message (if + present). If the value of the object is modified by the + SNMP Manager application, the MTA MUST use the new value + as a default only for a new signal requested by the NCS + message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 7 } + +pktcSigEndPntConfigOffHookWarnToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for the + off-hook warning tone. The MTA MUST NOT update this object + with the value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Manager + + + + application, the MTA MUST use the new value as a default + only for a new signal requested by the NCS message. The + time out (TO) elements are intended to limit the time a tone + or frequency is generated. When this MIB object is set to a + value of '0', the MTA MUST NOT generate the corresponding + frequency or tone, regardless of the definitions pertaining + to frequency, tone duration, or cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 0 } + ::= { pktcSigEndPntConfigEntry 8 } + +pktcSigEndPntConfigRingingTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for + ringing. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 180 } + ::= { pktcSigEndPntConfigEntry 9 } + +pktcSigEndPntConfigRingBackTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for ring + back. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + + + + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 180 } + ::= { pktcSigEndPntConfigEntry 10 } + +pktcSigEndPntConfigReorderToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for reorder + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 11 } + +pktcSigEndPntConfigStutterDialToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for stutter + dial tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + + + + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 12 } + +pktcSigEndPntConfigTSMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object is used as part of an NCS + retransmission algorithm. Prior to any retransmission, + the MTA must check to make sure that the time elapsed + since the sending of the initial datagram does not + exceed the value specified by this MIB object. If more + than Tsmax time has elapsed, then the retransmissions + MUST cease. + + Refer to the MIB object pktcSigEndPntConfigThist for + information on when the endpoint becomes disconnected." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 20 } + ::= { pktcSigEndPntConfigEntry 13 } + +pktcSigEndPntConfigMax1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the suspicious error threshold for + signaling messages. The pktcSigEndPntConfigMax1 object + indicates the retransmission threshold at which the MTA MAY + actively query the domain name server (DNS) in order to + detect the possible change of call agent interfaces." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 5 } + ::= { pktcSigEndPntConfigEntry 14 } + +pktcSigEndPntConfigMax2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object contains the disconnect error threshold for + signaling messages. The pktcSigEndPntConfigMax2 object + indicates the retransmission threshold at which the MTA + SHOULD contact the DNS one more time to see if any other + interfaces to the call agent have become available." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 7 } + ::= { pktcSigEndPntConfigEntry 15 } + +pktcSigEndPntConfigMax1QEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables the Max1 domain name server + (DNS) query operation when the pktcSigEndPntConfigMax1 + threshold has been reached. + A value of true(1) indicates enabling, and a value of + false(2) indicates disabling." + DEFVAL { true } + ::= { pktcSigEndPntConfigEntry 16 } + +pktcSigEndPntConfigMax2QEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables the Max2 domain name server + (DNS) query operation when the pktcSigEndPntConfigMax2 + threshold has been reached. + A value of true(1) indicates enabling, and a value of + false(2) indicates disabling." + DEFVAL { true } + ::= { pktcSigEndPntConfigEntry 17 } + +pktcSigEndPntConfigMWD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum Waiting Delay (MWD) contains the maximum number of + seconds an MTA waits, after powering on, before initiating + the restart procedure with the call agent." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 600 } + + + + ::= { pktcSigEndPntConfigEntry 18 } + +pktcSigEndPntConfigTdinit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object represents the 'disconnected' initial + waiting delay within the context of an MTA's 'disconnected + procedure'. The 'disconnected procedure' is initiated when + an endpoint becomes 'disconnected' while attempting to + communicate with a call agent. + + The 'disconnected timer' associated with the 'disconnected + Procedure' is initialized to a random value, uniformly + distributed between zero and the value contained in this + MIB object. + + For more information on the usage of this timer, please + refer to the PacketCable NCS Specification." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 15 } + ::= { pktcSigEndPntConfigEntry 19 } + +pktcSigEndPntConfigTdmin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object represents the 'disconnected' minimum + waiting delay within the context of an MTA's + 'disconnected procedure', specifically when local user + activity is detected. + The 'disconnected procedure' is initiated when + an endpoint becomes 'disconnected' while attempting to + communicate with a call agent. + For more information on the usage of this timer, please + refer to the PacketCable NCS Specification." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 15 } + ::= { pktcSigEndPntConfigEntry 20 } + +pktcSigEndPntConfigTdmax OBJECT-TYPE + SYNTAX Unsigned32 + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the maximum number of seconds the MTA + waits, after a disconnect, before initiating the + disconnected procedure with the call agent. + " + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 600 } + ::= { pktcSigEndPntConfigEntry 21 } + +pktcSigEndPntConfigRtoMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum number of seconds the MTA + waits for a response to an NCS message before initiating + a retransmission." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 4 } + ::= { pktcSigEndPntConfigEntry 22 } + +pktcSigEndPntConfigRtoInit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the initial number of seconds for the + retransmission timer." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 200 } + ::= { pktcSigEndPntConfigEntry 23 } + +pktcSigEndPntConfigLongDurationKeepAlive OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Specifies a time out value, in minutes, for sending long + duration call notification messages." + + + + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 60 } + ::= { pktcSigEndPntConfigEntry 24 } + +pktcSigEndPntConfigThist OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Time out period, in seconds, before no response is declared." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 25 } + +pktcSigEndPntConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the Row Status associated with the + pktcSigEndPntConfigTable. There are no restrictions or + dependencies amidst the columnar objects before this + row can be activated or for modifications of the + columnar objects when this object is set to a + value of 'active(1)." + ::= { pktcSigEndPntConfigEntry 26 } + +pktcSigEndPntConfigCallWaitingMaxRep OBJECT-TYPE + SYNTAX Unsigned32 (0..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default value of the maximum + number of repetitions of the Call Waiting tone that the + MTA will play from a single CMS request. The MTA MUST NOT + update this object with the information provided in the + NCS message (if present). If the value of the object is + modified by the SNMP Manager application, the MTA MUST use + the new value as a default only for a new signal + requested by the NCS message." + DEFVAL { 1 } + ::= { pktcSigEndPntConfigEntry 27 } + +pktcSigEndPntConfigCallWaitingDelay OBJECT-TYPE + SYNTAX Unsigned32 (1..100) + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the delay between repetitions of the + Call Waiting tone that the MTA will play from a single CMS + request." + DEFVAL { 10 } + ::= { pktcSigEndPntConfigEntry 28 } + +pktcSigEndPntStatusCallIpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the type of Internet address contained + in the MIB object 'pktcSigEndPntStatusCallIpAddress'. + + Since pktcSigEndPntStatusCallIpAddress is expected to + contain an IP address, a value of dns(16) is disallowed." + + ::= { pktcSigEndPntConfigEntry 29 } + +pktcSigEndPntStatusCallIpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This MIB object contains the chosen IP address of the CMS + currently being used for the corresponding endpoint. + + The device determines the IP address by using DNS to + resolve the IP address of the CMS from the FQDN stored in + the MIB object 'pktcSigEndPntConfigCallAgentId'. The + processes are outlined in the PacketCable NCS and Security + specifications, and MUST be followed by the MTA. + + The IP address type contained in this MIB object is + indicated by pktcSigEndPntStatusCallIpAddressType." + REFERENCE + "PacketCable NCS Specification; + PacketCable Security specification, [PKT-SP-SEC]." +::= { pktcSigEndPntConfigEntry 30 } + +pktcSigEndPntStatusError OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + noSecurityAssociation (2), + + + + disconnected (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the error status for this interface. + The operational status indicates that all operations + necessary to put the line in service have occurred, and the + CMS has acknowledged the Restart In Progress (RSIP) + message successfully. If pktcMtaDevCmsIpsecCtrl is enabled + for the associated call agent, the noSecurityAssociation + status indicates that no Security Association (SA) yet + exists for this endpoint. If pktcMtaDevCmsIpsecCtrl is + disabled for the associated call agent, the + noSecurityAssociation status is not applicable and should + not be used by the MTA. The disconnected status indicates + one of the following two: + If pktcMtaDevCmsIpsecCtrl is disabled, then no security + association is involved with this endpoint. The NCS + signaling software is in process of establishing the NCS + signaling link via an RSIP exchange. + Otherwise, when pktcMtaDevCmsIpsecCtrl is enabled, + security Association has been established, and the NCS + signaling software is in process of establishing the NCS + signaling link via an RSIP exchange." + ::= { pktcSigEndPntConfigEntry 31 } + +pktcSigEndPntConfigMinHookFlash OBJECT-TYPE + SYNTAX Unsigned32 (20..1550) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum time a line needs to be on-hook for a + valid hook flash. The value of this object MUST be + greater than the value of + pktcSigEndPntConfigPulseDialMaxBreakTime. The value of + pktcSigEndPntConfigMinHookFlash MUST be less than + pktcSigEndPntConfigMaxHookFlash. This object MUST only be + set via the MTA configuration during the provisioning + process. + Furthermore, given the possibility for the 'pulse dial' + and 'hook flash' to overlap, the value of this object + MUST be greater than the value contained by the MIB + Object 'pktcSigEndPntConfigPulseDialMaxMakeTime'." + DEFVAL { 300 } + ::= { pktcSigEndPntConfigEntry 32 } + + + + +pktcSigEndPntConfigMaxHookFlash OBJECT-TYPE + SYNTAX Unsigned32 (20..1550) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum time a line needs to be on-hook for a + valid hook flash. The value of + pktcSigEndPntConfigMaxHookFlash MUST be greater than + pktcSigEndPntConfigMinHookFlash. This object MUST only be + set via the MTA configuration during the provisioning + process." + DEFVAL { 800 } + ::= { pktcSigEndPntConfigEntry 33 } + +pktcSigEndPntConfigPulseDialInterdigitTime OBJECT-TYPE + SYNTAX Unsigned32 (100..1500) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the pulse dial inter-digit time out. This object + MUST only be set via the MTA configuration during the + provisioning process." + DEFVAL { 100 } + ::= { pktcSigEndPntConfigEntry 34 } + +pktcSigEndPntConfigPulseDialMinMakeTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum make pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMinMakeTime MUST + be less than pktcSigEndPntConfigPulseDialMaxMakeTime. This + object MUST only be set via the MTA configuration during + the provisioning process." + DEFVAL { 25 } + ::= { pktcSigEndPntConfigEntry 35 } + +pktcSigEndPntConfigPulseDialMaxMakeTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum make pulse width for the dial pulse. + + + + The value of pktcSigEndPntConfigPulseDialMaxMakeTime MUST + be greater than pktcSigEndPntConfigPulseDialMinMakeTime. + This object MUST only be provided via the configuration + file during the provisioning process. + Furthermore, given the possibility for the 'pulse dial' + and 'hook flash' to overlap, the value of this object MUST + be less than the value contained by the MIB object + pktcSigEndPntConfigMinHookFlash." + DEFVAL { 55 } + ::= { pktcSigEndPntConfigEntry 36 } + +pktcSigEndPntConfigPulseDialMinBreakTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum break pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMinBreakTime MUST + be less than pktcSigEndPntConfigPulseDialMaxBreakTime. + This object must only be provided via the configuration + file during the provisioning process." + DEFVAL { 45 } + ::= { pktcSigEndPntConfigEntry 37 } + +pktcSigEndPntConfigPulseDialMaxBreakTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum break pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMaxBreakTime MUST + be greater than pktcSigEndPntConfigPulseDialMinBreakTime. + This object MUST only be provided via the configuration + file during the provisioning process." + DEFVAL { 75 } + ::= { pktcSigEndPntConfigEntry 38 } + +-- +-- notification group is for future extension. +-- +pktcSigNotification OBJECT IDENTIFIER ::= { pktcIetfSigMib 0 } +pktcSigConformance OBJECT IDENTIFIER ::= { pktcIetfSigMib 2 } +pktcSigCompliances OBJECT IDENTIFIER ::= { pktcSigConformance 1 } +pktcSigGroups OBJECT IDENTIFIER ::= { pktcSigConformance 2 } + +-- + + + +-- compliance statements +-- + +pktcSigBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for MTAs that implement + NCS signaling." + +MODULE -- pktcIetfSigMib + +--- +-- Unconditionally mandatory groups for all MTAs +--- + +MANDATORY-GROUPS { + pktcSigDeviceGroup, + pktcSigEndpointGroup +} +--- +-- Conditionally mandatory groups for MTAs +--- + +GROUP pktcInternationalGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing + international telephony features." + +GROUP pktcLLinePackageGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing the L + line package." + +GROUP pktcELinePackageGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing the E + Line Package." + ::={ pktcSigCompliances 1 } + +pktcSigDeviceGroup OBJECT-GROUP + OBJECTS { + pktcSigDevCodecMax, + pktcSigDevEchoCancellation, + pktcSigDevSilenceSuppression, + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + + + + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence, + pktcSigDefCallSigDscp, + pktcSigDefMediaStreamDscp, + pktcSigDevVmwiMode, + pktcSigCapabilityType, + pktcSigCapabilityVersion, + pktcSigCapabilityVendorExt, + pktcSigDefNcsReceiveUdpPort + } + STATUS current + DESCRIPTION + "Group of MIB objects containing signaling configuration + information that is applicable per-device." + ::= { pktcSigGroups 1 } + +pktcSigEndpointGroup OBJECT-GROUP + OBJECTS { + pktcSigEndPntConfigCallAgentId, + pktcSigEndPntConfigCallAgentUdpPort, + pktcSigEndPntConfigPartialDialTO, + pktcSigEndPntConfigCriticalDialTO, + pktcSigEndPntConfigBusyToneTO, + pktcSigEndPntConfigDialToneTO, + pktcSigEndPntConfigMessageWaitingTO, + pktcSigEndPntConfigOffHookWarnToneTO, + pktcSigEndPntConfigRingingTO, + pktcSigEndPntConfigRingBackTO, + pktcSigEndPntConfigReorderToneTO, + pktcSigEndPntConfigStutterDialToneTO, + pktcSigEndPntConfigTSMax, + pktcSigEndPntConfigMax1, + pktcSigEndPntConfigMax2, + pktcSigEndPntConfigMax1QEnable, + pktcSigEndPntConfigMax2QEnable, + pktcSigEndPntConfigMWD, + pktcSigEndPntConfigTdinit, + pktcSigEndPntConfigTdmin, + pktcSigEndPntConfigTdmax, + pktcSigEndPntConfigRtoMax, + pktcSigEndPntConfigRtoInit, + pktcSigEndPntConfigLongDurationKeepAlive, + pktcSigEndPntConfigThist, + pktcSigEndPntConfigStatus, + + + + pktcSigEndPntConfigCallWaitingMaxRep, + pktcSigEndPntConfigCallWaitingDelay, + pktcSigEndPntStatusCallIpAddressType, + pktcSigEndPntStatusCallIpAddress, + pktcSigEndPntStatusError + } + STATUS current + DESCRIPTION + "Group of MIB objects containing signaling configuration + information that is applicable per-endpoint." + ::= { pktcSigGroups 2 } + +pktcInternationalGroup OBJECT-GROUP + OBJECTS { + pktcSigEndPntConfigMinHookFlash, + pktcSigEndPntConfigMaxHookFlash, + pktcSigEndPntConfigPulseDialInterdigitTime, + pktcSigEndPntConfigPulseDialMinMakeTime, + pktcSigEndPntConfigPulseDialMaxMakeTime, + pktcSigEndPntConfigPulseDialMinBreakTime, + pktcSigEndPntConfigPulseDialMaxBreakTime, + pktcSigDevRingCadence, + pktcSigDevCidSigProtocol, + pktcSigDevCidDelayAfterLR, + pktcSigDevCidDtmfStartCode, + pktcSigDevCidDtmfEndCode, + pktcSigDevVmwiSigProtocol, + pktcSigDevVmwiDelayAfterLR, + pktcSigDevVmwiDtmfStartCode, + pktcSigDevVmwiDtmfEndCode, + pktcSigDevrpAsDtsDuration, + pktcSigDevCidMode, + pktcSigDevCidAfterRing, + pktcSigDevCidAfterDTAS, + pktcSigDevCidAfterRPAS, + pktcSigDevRingAfterCID, + pktcSigDevCidDTASAfterLR, + pktcSigDevVmwiMode, + pktcSigDevVmwiAfterDTAS, + pktcSigDevVmwiAfterRPAS, + pktcSigDevVmwiDTASAfterLR, + pktcSigPowerRingFrequency, + pktcSigPulseSignalFrequency, + pktcSigPulseSignalDbLevel, + pktcSigPulseSignalDuration, + pktcSigPulseSignalPulseInterval, + pktcSigPulseSignalRepeatCount, + pktcSigDevToneDbLevel, + + + + pktcSigDevToneFreqCounter, + pktcSigDevToneWholeToneRepeatCount, + pktcSigDevToneSteady, + pktcSigDevToneFirstFreqValue, + pktcSigDevToneSecondFreqValue, + pktcSigDevToneThirdFreqValue, + pktcSigDevToneFourthFreqValue, + pktcSigDevToneFreqMode, + pktcSigDevToneFreqAmpModePrtg, + pktcSigDevToneFreqOnDuration, + pktcSigDevToneFreqOffDuration, + pktcSigDevToneFreqRepeatCount + } + STATUS current + DESCRIPTION + " Group of objects that extend the behavior of existing + objects to support operations in the widest possible set + of international marketplaces. Note that many of these + objects represent a superset of behaviors described in + other objects within this MIB module." + ::= { pktcSigGroups 3 } + +pktcLLinePackageGroup OBJECT-GROUP + OBJECTS { + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence + } + STATUS current + DESCRIPTION + "Group of Objects to support the L line package." + ::= { pktcSigGroups 4 } + +pktcELinePackageGroup OBJECT-GROUP + OBJECTS { + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + + + + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence, + pktcSigPulseSignalFrequency, + pktcSigPulseSignalDbLevel, + pktcSigPulseSignalDuration, + pktcSigPulseSignalPulseInterval, + pktcSigPulseSignalRepeatCount, + pktcSigDevRingCadence + } + STATUS current + DESCRIPTION + "Group of Objects to support the E line package." + ::= { pktcSigGroups 5 } + +END diff --git a/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB b/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB new file mode 100644 index 0000000..077a0e4 --- /dev/null +++ b/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB @@ -0,0 +1,2194 @@ +POLICY-BASED-MANAGEMENT-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Gauge32, Unsigned32, + mib-2 FROM SNMPv2-SMI + RowStatus, RowPointer, TEXTUAL-CONVENTION, + DateAndTime, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +-- Policy-Based Management MIB + +pmMib MODULE-IDENTITY + LAST-UPDATED "200502070000Z" -- February 7, 2005 + ORGANIZATION "IETF SNMP Configuration Working Group" + CONTACT-INFO + " + + + + + Steve Waldbusser + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Jon Saperia (WG Co-chair) + JDS Consulting, Inc. + 84 Kettell Plain Road. + Stow MA 01775 + USA + Phone: +1-978-461-0249 + Fax: +1-617-249-0874 + Email: saperia@jdscons.com + + Thippanna Hongal + Riverstone Networks, Inc. + 5200 Great America Parkway + Santa Clara, CA, 95054 + USA + + Phone: +1-408-878-6562 + Fax: +1-408-878-6501 + Email: hongal@riverstonenet.com + + David Partain (WG Co-chair) + Postal: Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + Tel: +46 13 28 41 44 + E-mail: David.Partain@ericsson.com + + Any questions or comments about this document can also be + directed to the working group at snmpconf@snmp.com." + DESCRIPTION + "The MIB module for policy-based configuration of SNMP + infrastructures. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4011; see the RFC itself for + full legal notices." + + REVISION "200502070000Z" -- February 7, 2005 + DESCRIPTION + "The original version of this MIB, published as RFC4011." + ::= { mib-2 124 } + + + + + +PmUTF8String ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string containing information typically in + human-readable form. + + To facilitate internationalization, this + information is represented by using the ISO/IEC + IS 10646-1 character set, encoded as an octet + string using the UTF-8 transformation format + described in RFC 3629. + + As additional code points are added by + amendments to the 10646 standard from time + to time, implementations must be prepared to + encounter any code point from 0x00000000 to + 0x10FFFF. Byte sequences that do not + correspond to the valid UTF-8 encoding of a + code point or that are outside this range are + prohibited. + + The use of control codes should be avoided. + + When it is necessary to represent a newline, + the control code sequence CR LF should be used. + + For code points not directly supported by user + interface hardware or software, an alternative + means of entry and display, such as hexadecimal, + may be provided. + + For information encoded in 7-bit US-ASCII, + the UTF-8 encoding is identical to the + US-ASCII encoding. + + UTF-8 may require multiple bytes to represent a + single character/code point; thus, the length + of this object in octets may be different from + the number of characters encoded. Similarly, + size constraints refer to the number of encoded + octets, not the number of characters represented + by an encoding. + + Note that when this TC is used for an object + used or envisioned to be used as an index, then + a SIZE restriction MUST be specified so that the + number of sub-identifiers for any object instance + does not exceed the limit of 128, as defined by + + + + RFC 3416. + + Note that the size of PmUTF8String object is + measured in octets, not characters." + SYNTAX OCTET STRING (SIZE (0..65535)) + +-- The policy table + +pmPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The policy table. A policy is a pairing of a + policyCondition and a policyAction that is used to apply the + action to a selected set of elements." + ::= { pmMib 1 } + +pmPolicyEntry OBJECT-TYPE + SYNTAX PmPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the policy table representing one policy." + INDEX { pmPolicyAdminGroup, pmPolicyIndex } + ::= { pmPolicyTable 1 } + +PmPolicyEntry ::= SEQUENCE { + pmPolicyAdminGroup PmUTF8String, + pmPolicyIndex Unsigned32, + pmPolicyPrecedenceGroup PmUTF8String, + pmPolicyPrecedence Unsigned32, + pmPolicySchedule Unsigned32, + pmPolicyElementTypeFilter PmUTF8String, + pmPolicyConditionScriptIndex Unsigned32, + pmPolicyActionScriptIndex Unsigned32, + pmPolicyParameters OCTET STRING, + pmPolicyConditionMaxLatency Unsigned32, + pmPolicyActionMaxLatency Unsigned32, + pmPolicyMaxIterations Unsigned32, + pmPolicyDescription PmUTF8String, + pmPolicyMatches Gauge32, + pmPolicyAbnormalTerminations Gauge32, + pmPolicyExecutionErrors Counter32, + pmPolicyDebugging INTEGER, + pmPolicyAdminStatus INTEGER, + pmPolicyStorageType StorageType, + pmPolicyRowStatus RowStatus + + + +} + +pmPolicyAdminGroup OBJECT-TYPE + SYNTAX PmUTF8String (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An administratively assigned string that can be used to group + policies for convenience, for readability, or to simplify + configuration of access control. + + The value of this string does not affect policy processing in + any way. If grouping is not desired or necessary, this object + may be set to a zero-length string." + ::= { pmPolicyEntry 1 } + +pmPolicyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this policy entry, unique among all + policies regardless of administrative group." + ::= { pmPolicyEntry 2 } + +pmPolicyPrecedenceGroup OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned string that is used to group + policies. For each element, only one policy in the same + precedence group may be active on that element. If multiple + policies would be active on an element (because their + conditions return non-zero), the execution environment will + only allow the policy with the highest value of + pmPolicyPrecedence to be active. + + All values of this object must have been successfully + transformed by Stringprep RFC 3454. Management stations + must perform this translation and must only set this object to + string values that have been transformed." + ::= { pmPolicyEntry 3 } + +pmPolicyPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "If, while checking to see which policy conditions match an + element, 2 or more ready policies in the same precedence group + match the same element, the pmPolicyPrecedence object provides + the rule to arbitrate which single policy will be active on + 'this element'. Of policies in the same precedence group, only + the ready and matching policy with the highest precedence + value (e.g., 2 is higher than 1) will have its policy action + periodically executed on 'this element'. + + When a policy is active on an element but the condition ceases + to match the element, its action (if currently running) will + be allowed to finish and then the condition-matching ready + policy with the next-highest precedence will immediately + become active (and have its action run immediately). If the + condition of a higher-precedence ready policy suddenly begins + matching an element, the previously-active policy's action (if + currently running) will be allowed to finish and then the + higher precedence policy will immediately become active. Its + action will run immediately, and any lower-precedence matching + policy will not be active anymore. + + In the case where multiple ready policies share the highest + value, it is an implementation-dependent matter as to which + single policy action will be chosen. + + Note that if it is necessary to take certain actions after a + policy is no longer active on an element, these actions should + be included in a lower-precedence policy that is in the same + precedence group." + ::= { pmPolicyEntry 4 } + +pmPolicySchedule OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This policy will be ready if any of the associated schedule + entries are active. + + If the value of this object is 0, this policy is always + ready. + + If the value of this object is non-zero but doesn't + refer to a schedule group that includes an active schedule, + then the policy will not be ready, even if this is due to a + misconfiguration of this object or the pmSchedTable." + ::= { pmPolicyEntry 5 } + + + +pmPolicyElementTypeFilter OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..128)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the element types for which this policy + can be executed. + + The format of this object will be a sequence of + pmElementTypeRegOIDPrefix values, encoded in the following + BNF form: + + elementTypeFilter: oid [ ';' oid ]* + oid: subid [ '.' subid ]* + subid: '0' | decimal_constant + + For example, to register for the policy to be run on all + interface elements, the 'ifEntry' element type will be + registered as '1.3.6.1.2.1.2.2.1'. + + If a value is included that does not represent a registered + pmElementTypeRegOIDPrefix, then that value will be ignored." + ::= { pmPolicyEntry 6 } + +pmPolicyConditionScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row or rows in the pmPolicyCodeTable that + contain the condition code for this policy. When a policy + entry is created, a pmPolicyCodeIndex value unused by this + policy's adminGroup will be assigned to this object. + + A policy condition is one or more PolicyScript statements + that result(s) in a boolean value that represents whether + an element is a member of a set of elements upon which an + action is to be performed. If a policy is ready and the + condition returns true for an element of a proper element + type, and if no higher-precedence policy should be active, + then the policy is active on that element. + + Condition evaluation stops immediately when any run-time + exception is detected, and the policyAction is not executed. + + The policyCondition is evaluated for various elements. Any + element for which the policyCondition returns any nonzero value + will match the condition and will have the associated + + + + policyAction executed on that element unless a + higher-precedence policy in the same precedence group also + matches 'this element'. + + If the condition object is empty (contains no code) or + otherwise does not return a value, the element will not be + matched. + + When this condition is executed, if SNMP requests are made to + the local system and secModel/secName/secLevel aren't + specified, access to objects is under the security + credentials of the requester who most recently modified the + associated pmPolicyAdminStatus object. If SNMP requests are + made in which secModel/secName/secLevel are specified, then + the specified credentials are retrieved from the local + configuration datastore only if VACM is configured to + allow access to the requester who most recently modified the + associated pmPolicyAdminStatus object. See the Security + Considerations section for more information." + ::= { pmPolicyEntry 7 } + +pmPolicyActionScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row or rows in the pmPolicyCodeTable that + contain the action code for this policy. When a policy entry + is created, a pmPolicyCodeIndex value unused by this policy's + adminGroup will be assigned to this object. + + A PolicyAction is an operation performed on a + set of elements for which the policy is active. + + Action evaluation stops immediately when any run-time + exception is detected. + + When this condition is executed, if SNMP requests are made to + the local system and secModel/secName/secLevel aren't + specified, access to objects is under the security + credentials of the requester who most recently modified the + associated pmPolicyAdminStatus object. If SNMP requests are + made in which secModel/secName/secLevel are specified, then + the specified credentials are retrieved from the local + configuration datastore only if VACM is configured to + allow access to the requester who most recently modified the + associated pmPolicyAdminStatus object. See the Security + Considerations section for more information." + + + + ::= { pmPolicyEntry 8 } + +pmPolicyParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "From time to time, policy scripts may seek one or more + parameters (e.g., site-specific constants). These parameters + may be installed with the script in this object and are + accessible to the script via the getParameters() function. If + it is necessary for multiple parameters to be passed to the + script, the script can choose whatever encoding/delimiting + mechanism is most appropriate." + ::= { pmPolicyEntry 9 } + +pmPolicyConditionMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Every element under the control of this agent is + re-checked periodically to see whether it is under control + of this policy by re-running the condition for this policy. + This object lets the manager control the maximum amount of + time that may pass before an element is re-checked. + + In other words, in any given interval of this duration, all + elements must be re-checked. Note that how the policy agent + schedules the checking of various elements within this + interval is an implementation-dependent matter. + Implementations may wish to re-run a condition more + quickly if they note a change to the role strings for an + element." + ::= { pmPolicyEntry 10 } + +pmPolicyActionMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Every element that matches this policy's condition and is + therefore under control of this policy will have this policy's + action executed periodically to ensure that the element + remains in the state dictated by the policy. + This object lets the manager control the maximum amount of + + + + time that may pass before an element has the action run on + it. + + In other words, in any given interval of this duration, all + elements under control of this policy must have the action run + on them. Note that how the policy agent schedules the policy + action on various elements within this interval is an + implementation-dependent matter." + ::= { pmPolicyEntry 11 } + +pmPolicyMaxIterations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If a condition or action script iterates in loops too many + times in one invocation, the execution environment may + consider it in an infinite loop or otherwise not acting + as intended and may be terminated by the execution + environment. The execution environment will count the + cumulative number of times all 'for' or 'while' loops iterated + and will apply a threshold to determine when to terminate the + script. What threshold the execution environment uses is an + implementation-dependent manner, but the value of + this object SHOULD be the basis for choosing the threshold for + each script. The value of this object represents a + policy-specific threshold and can be tuned for policies of + varying workloads. If this value is zero, no + threshold will be enforced except for any + implementation-dependent maximum. Regardless of this value, + the agent is allowed to terminate any script invocation that + exceeds a local CPU or memory limitation. + + Note that the condition and action invocations are tracked + separately." + ::= { pmPolicyEntry 12 } + +pmPolicyDescription OBJECT-TYPE + SYNTAX PmUTF8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of this rule and its significance, typically + provided by a human." + ::= { pmPolicyEntry 13 } + +pmPolicyMatches OBJECT-TYPE + SYNTAX Gauge32 + + + + UNITS "elements" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of elements that, in their most recent execution + of the associated condition, were matched by the condition." + ::= { pmPolicyEntry 14 } + +pmPolicyAbnormalTerminations OBJECT-TYPE + SYNTAX Gauge32 + UNITS "elements" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of elements that, in their most recent execution + of the associated condition or action, have experienced a + run-time exception and terminated abnormally. Note that if a + policy was experiencing a run-time exception while processing + a particular element but runs normally on a subsequent + invocation, this number can decline." + ::= { pmPolicyEntry 15 } + +pmPolicyExecutionErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that execution of this policy's + condition or action has been terminated due to run-time + exceptions." + ::= { pmPolicyEntry 16 } + +pmPolicyDebugging OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of debugging for this policy. If this is turned + on(2), log entries will be created in the pmDebuggingTable + for each run-time exception that is experienced by this + policy." + DEFVAL { off } + ::= { pmPolicyEntry 17 } + + + + +pmPolicyAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabled(2), + enabledAutoRemove(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative status of this policy. + + The policy will be valid only if the associated + pmPolicyRowStatus is set to active(1) and this object is set + to enabled(2) or enabledAutoRemove(3). + + If this object is set to enabledAutoRemove(3), the next time + the associated schedule moves from the active state to the + inactive state, this policy will immediately be deleted, + including any associated entries in the pmPolicyCodeTable. + + The following related objects may not be changed unless this + object is set to disabled(1): + pmPolicyPrecedenceGroup, pmPolicyPrecedence, + pmPolicySchedule, pmPolicyElementTypeFilter, + pmPolicyConditionScriptIndex, pmPolicyActionScriptIndex, + pmPolicyParameters, and any pmPolicyCodeTable row + referenced by this policy. + In order to change any of these parameters, the policy must + be moved to the disabled(1) state, changed, and then + re-enabled. + + When this policy moves to either enabled state from the + disabled state, any cached values of policy condition must be + erased, and any Policy or PolicyElement scratchpad values for + this policy should be removed. Policy execution will begin by + testing the policy condition on all appropriate elements." + ::= { pmPolicyEntry 18 } + +pmPolicyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this policy and any associated + entries in the pmPolicyCodeTable are kept in volatile storage + and lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + + + + If the value of this object is 'permanent', the values for + the associated pmPolicyAdminStatus object must remain + writable." + ::= { pmPolicyEntry 19 } + +pmPolicyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of this pmPolicyEntry. + + The status may not be set to active if any of the related + entries in the pmPolicyCode table do not have a status of + active or if any of the objects in this row are not set to + valid values. Only the following objects may be modified + while in the active state: + pmPolicyParameters + pmPolicyConditionMaxLatency + pmPolicyActionMaxLatency + pmPolicyDebugging + pmPolicyAdminStatus + + If this row is deleted, any associated entries in the + pmPolicyCodeTable will be deleted as well." + ::= { pmPolicyEntry 20 } + +-- Policy Code Table + +pmPolicyCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmPolicyCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmPolicyCodeTable stores the code for policy conditions and + actions. + + An example of the relationships between the code table and the + policy table follows: + + pmPolicyTable + AdminGroup Index ConditionScriptIndex ActionScriptIndex + A '' 1 1 2 + B 'oper' 1 1 2 + C 'oper' 2 3 4 + + pmPolicyCodeTable + AdminGroup ScriptIndex Segment Note + + + + '' 1 1 Filter for policy A + '' 2 1 Action for policy A + 'oper' 1 1 Filter for policy B + 'oper' 2 1 Action 1/2 for policy B + 'oper' 2 2 Action 2/2 for policy B + 'oper' 3 1 Filter for policy C + 'oper' 4 1 Action for policy C + + In this example, there are 3 policies: 1 in the '' adminGroup, + and 2 in the 'oper' adminGroup. Policy A has been assigned + script indexes 1 and 2 (these script indexes are assigned out of + a separate pool per adminGroup), with 1 code segment each for + the filter and the action. Policy B has been assigned script + indexes 1 and 2 (out of the pool for the 'oper' adminGroup). + While the filter has 1 segment, the action is longer and is + loaded into 2 segments. Finally, Policy C has been assigned + script indexes 3 and 4, with 1 code segment each for the filter + and the action." + ::= { pmMib 2 } + +pmPolicyCodeEntry OBJECT-TYPE + SYNTAX PmPolicyCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the policy code table representing one code + segment. Entries that share a common AdminGroup/ScriptIndex + pair make up a single script. Valid values of ScriptIndex are + retrieved from pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex after a pmPolicyEntry is + created. Segments of code can then be written to this table + with the learned ScriptIndex values. + + The StorageType of this entry is determined by the value of + the associated pmPolicyStorageType. + + The pmPolicyAdminGroup element of the index represents the + administrative group of the policy of which this code entry is + a part." + INDEX { pmPolicyAdminGroup, pmPolicyCodeScriptIndex, + pmPolicyCodeSegment } + ::= { pmPolicyCodeTable 1 } + +PmPolicyCodeEntry ::= SEQUENCE { + pmPolicyCodeScriptIndex Unsigned32, + pmPolicyCodeSegment Unsigned32, + pmPolicyCodeText PmUTF8String, + pmPolicyCodeStatus RowStatus + + + +} + +pmPolicyCodeScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for each policy condition or action. The code + for each such condition or action may be composed of multiple + entries in this table if the code cannot fit in one entry. + Values of pmPolicyCodeScriptIndex may not be used unless + they have previously been assigned in the + pmPolicyConditionScriptIndex or pmPolicyActionScriptIndex + objects." + ::= { pmPolicyCodeEntry 1 } + +pmPolicyCodeSegment OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for each segment of a policy condition or + action. + + When a policy condition or action spans multiple entries in + this table, the code of that policy starts from the + lowest-numbered segment and continues with increasing segment + values until it ends with the highest-numbered segment." + ::= { pmPolicyCodeEntry 2 } + +pmPolicyCodeText OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A segment of policy code (condition or action). Lengthy + Policy conditions or actions may be stored in multiple + segments in this table that share the same value of + pmPolicyCodeScriptIndex. When multiple segments are used, it + is recommended that each segment be as large as is practical. + + Entries in this table are associated with policies by values + of the pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex objects. If the status of the + related policy is active, then this object may not be + modified." + ::= { pmPolicyCodeEntry 3 } + + + + +pmPolicyCodeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this code entry. + + Entries in this table are associated with policies by values + of the pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex objects. If the status of the + related policy is active, then this object can not be + modified (i.e., deleted or set to notInService), nor may new + entries be created. + + If the status of this object is active, no objects in this + row may be modified." + ::= { pmPolicyCodeEntry 4 } + +-- Element Type Registration Table + +pmElementTypeRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmElementTypeRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A registration table for element types managed by this + system. + + The Element Type Registration table allows the manager to + learn what element types are being managed by the system and + to register new types, if necessary. An element type is + registered by providing the OID of an SNMP object (i.e., + without the instance). Each SNMP instance that exists under + that object is a distinct element. The index of the element is + the index part of the discovered OID. This index will be + supplied to policy conditions and actions so that this code + can inspect and configure the element. + + For example, this table might contain the following entries. + The first three are agent-installed, and the 4th was + downloaded by a management station: + + OIDPrefix MaxLatency Description StorageType + ifEntry 100 mS interfaces - builtin readOnly + 0.0 100 mS system element - builtin readOnly + frCircuitEntry 100 mS FR Circuits - builtin readOnly + hrSWRunEntry 60 sec Running Processes volatile + + + + + Note that agents may automatically configure elements in this + table for frequently used element types (interfaces, circuits, + etc.). In particular, it may configure elements for whom + discovery is optimized in one or both of the following ways: + + 1. The agent may discover elements by scanning internal data + structures as opposed to issuing local SNMP requests. It is + possible to recreate the exact semantics described in this + table even if local SNMP requests are not issued. + + 2. The agent may receive asynchronous notification of new + elements (for example, 'card inserted') and use that + information to instantly create elements rather than + through polling. A similar feature might be available for + the deletion of elements. + + Note that the disposition of agent-installed entries is + described by the pmPolicyStorageType object." + ::= { pmMib 3 } + +pmElementTypeRegEntry OBJECT-TYPE + SYNTAX PmElementTypeRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A registration of an element type. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such values." + INDEX { pmElementTypeRegOIDPrefix } + ::= { pmElementTypeRegTable 1 } + +PmElementTypeRegEntry ::= SEQUENCE { + pmElementTypeRegOIDPrefix OBJECT IDENTIFIER, + pmElementTypeRegMaxLatency Unsigned32, + pmElementTypeRegDescription PmUTF8String, + pmElementTypeRegStorageType StorageType, + pmElementTypeRegRowStatus RowStatus +} + +pmElementTypeRegOIDPrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This OBJECT IDENTIFIER value identifies a table in which all + + + + elements of this type will be found. Every row in the + referenced table will be treated as an element for the + period of time that it remains in the table. The agent will + then execute policy conditions and actions as appropriate on + each of these elements. + + This object identifier value is specified down to the 'entry' + component (e.g., ifEntry) of the identifier. + + The index of each discovered row will be passed to each + invocation of the policy condition and policy action. + + The actual mechanism by which instances are discovered is + implementation dependent. Periodic walks of the table to + discover the rows in the table is one such mechanism. This + mechanism has the advantage that it can be performed by an + agent with no knowledge of the names, syntax, or semantics + of the MIB objects in the table. This mechanism also serves as + the reference design. Other implementation-dependent + mechanisms may be implemented that are more efficient (perhaps + because they are hard coded) or that don't require polling. + These mechanisms must discover the same elements as would the + table-walking reference design. + + This object can contain a OBJECT IDENTIFIER, '0.0'. + '0.0' represents the single instance of the system + itself and provides an execution context for policies to + operate on the 'system element' and on MIB objects + modeled as scalars. For example, '0.0' gives an execution + context for policy-based selection of the operating system + code version (likely modeled as a scalar MIB object). The + element type '0.0' always exists; as a consequence, no actual + discovery will take place, and the pmElementTypeRegMaxLatency + object will have no effect for the '0.0' element + type. However, if the '0.0' element type is not registered in + the table, policies will not be executed on the '0.0' element. + + When a policy is invoked on behalf of a '0.0' entry in this + table, the element name will be '0.0', and there is no index + of 'this element' (in other words, it has zero length). + + As this object is used in the index for the + pmElementTypeRegTable, users of this table should be careful + not to create entries that would result in instance names with + more than 128 sub-identifiers." + ::= { pmElementTypeRegEntry 2 } + + + + + +pmElementTypeRegMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The PM agent is responsible for discovering new elements of + types that are registered. This object lets the manager + control the maximum amount of time that may pass between the + time an element is created and when it is discovered. + + In other words, in any given interval of this duration, all + new elements must be discovered. Note that how the policy + agent schedules the checking of various elements within this + interval is an implementation-dependent matter." + ::= { pmElementTypeRegEntry 3 } + +pmElementTypeRegDescription OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A descriptive label for this registered type." + ::= { pmElementTypeRegEntry 4 } + +pmElementTypeRegStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept + in volatile storage and lost upon reboot or + backed up by non-volatile or permanent storage. + + If the value of this object is 'permanent', no values in the + associated row have to be writable." + ::= { pmElementTypeRegEntry 5 } + +pmElementTypeRegRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this registration entry. + + If the value of this object is active, no objects in this row + may be modified." + ::= { pmElementTypeRegEntry 6 } + + + +-- Role Table + +pmRoleTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmRoleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmRoleTable is a read-create table that organizes role + strings sorted by element. This table is used to create and + modify role strings and their associations, as well as to allow + a management station to learn about the existence of roles and + their associations. + + It is the responsibility of the agent to keep track of any + re-indexing of the underlying SNMP elements and to continue to + associate role strings with the element with which they were + initially configured. + + Policy MIB agents that have elements in multiple local SNMP + contexts have to allow some roles to be assigned to elements + in particular contexts. This is particularly true when some + elements have the same names in different contexts and the + context is required to disambiguate them. In those situations, + a value for the pmRoleContextName may be provided. When a + pmRoleContextName value is not provided, the assignment is to + the element in the default context. + + Policy MIB agents that discover elements on other systems and + execute policies on their behalf need to have access to role + information for these remote elements. In such situations, + role assignments for other systems can be stored in this table + by providing values for the pmRoleContextEngineID parameters. + + For example: + Example: + element role context ctxEngineID #comment + ifindex.1 gold local, default context + ifindex.2 gold local, default context + repeaterid.1 foo rptr1 local, rptr1 context + repeaterid.1 bar rptr2 local, rptr2 context + ifindex.1 gold '' A different system + ifindex.1 gold '' B different system + + The agent must store role string associations in non-volatile + storage." + ::= { pmMib 4 } + + + + + +pmRoleEntry OBJECT-TYPE + SYNTAX PmRoleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A role string entry associates a role string with an + individual element. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + combinations." + INDEX { pmRoleElement, pmRoleContextName, + pmRoleContextEngineID, pmRoleString } + ::= { pmRoleTable 1 } + +PmRoleEntry ::= SEQUENCE { + pmRoleElement RowPointer, + pmRoleContextName SnmpAdminString, + pmRoleContextEngineID OCTET STRING, + pmRoleString PmUTF8String, + pmRoleStatus RowStatus +} + +pmRoleElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element with which this role string is associated. + + For example, if the element is interface 3, then this object + will contain the OID for 'ifIndex.3'. + + If the agent assigns new indexes in the MIB table to + represent the same underlying element (re-indexing), the + agent will modify this value to contain the new index for the + underlying element. + + As this object is used in the index for the pmRoleTable, + users of this table should be careful not to create entries + that would result in instance names with more than 128 + sub-identifiers." + ::= { pmRoleEntry 1 } + + + + + + +pmRoleContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmRoleEntry 2 } + +pmRoleContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system for which this role string + assignment is valid. If the element is on the local system + this object will be the empty string." + ::= { pmRoleEntry 3 } + +pmRoleString OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The role string that is associated with an element through + this table. All role strings must have been successfully + transformed by Stringprep RFC 3454. Management stations + must perform this translation and must only set this object + to string values that have been transformed. + + A role string is an administratively specified characteristic + of a managed element (for example, an interface). It is a + selector for policy rules, that determines the applicability of + the rule to a particular managed element." + ::= { pmRoleEntry 4 } + +pmRoleStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this role string. + + + + + + If the value of this object is active, no object in this row + may be modified." + ::= { pmRoleEntry 5 } + +-- Capabilities table + +pmCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmCapabilitiesTable contains a description of + the inherent capabilities of the system so that + management stations can learn of an agent's capabilities and + differentially install policies based on the capabilities. + + Capabilities are expressed at the system level. There can be + variation in how capabilities are realized from one vendor or + model to the next. Management systems should consider these + differences before selecting which policy to install in a + system." + ::= { pmMib 5 } + +pmCapabilitiesEntry OBJECT-TYPE + SYNTAX PmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A capabilities entry holds an OID indicating support for a + particular capability. Capabilities may include hardware and + software functions and the implementation of MIB + Modules. The semantics of the OID are defined in the + description of pmCapabilitiesType. + + Entries appear in this table if any element in the system has + a specific capability. A capability should appear in this + table only once, regardless of the number of elements in the + system with that capability. An entry is removed from this + table when the last element in the system that has the + capability is removed. In some cases, capabilities are + dynamic and exist only in software. This table should have an + entry for the capability even if there are no current + instances. Examples include systems with database or WEB + services. While the system has the ability to create new + databases or WEB services, the entry should exist. In these + cases, the ability to create these services could come from + other processes that are running in the system, even though + there are no currently open databases or WEB servers running. + + + + Capabilities may include the implementation of MIB Modules + but need not be limited to those that represent MIB Modules + with one or more configurable objects. It may also be + valuable to include entries for capabilities that do not + include configuration objects, as that information, in + combination with other entries in this table, might be used + by the management software to determine whether to + install a policy. + + Vendor software may also add entries in this table to express + capabilities from their private branch. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + values." + INDEX { pmCapabilitiesType } + ::= { pmCapabilitiesTable 1 } + +PmCapabilitiesEntry ::= SEQUENCE { + pmCapabilitiesType OBJECT IDENTIFIER +} + +pmCapabilitiesType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "There are three types of OIDs that may be present in the + pmCapabilitiesType object: + + 1) The OID of a MODULE-COMPLIANCE macro that represents the + highest level of compliance realized by the agent for that + MIB Module. For example, an agent that implements the OSPF + MIB Module at the highest level of compliance would have the + value of '1.3.6.1.2.1.14.15.2' in the pmCapabilitiesType + object. For software that realizes standard MIB + Modules that do not have compliance statements, the base OID + of the MIB Module should be used instead. If the OSPF MIB + Module had not been created with a compliance statement, then + the correct value of the pmCapabilitiesType would be + '1.3.6.1.2.1.14'. In the cases where multiple compliance + statements in a MIB Module are supported by the agent, and + where one compliance statement does not by definition include + the other, each of the compliance OIDs would have entries in + this table. + + + + + MIB Documents can contain more than one MIB Module. In the + case of OSPF, there is a second MIB Module + that describes notifications for the OSPF Version 2 Protocol. + If the agent also realizes these functions, an entry will + also exist for those capabilities in this table. + + 2) Vendors should install OIDs in this table that represent + vendor-specific capabilities. These capabilities can be + expressed just as those described above for MIB Modules on + the standards track. In addition, vendors may install any + OID they desire from their registered branch. The OIDs may be + at any level of granularity, from the root of their entire + branch to an instance of a single OID. There is no + restriction on the number of registrations they may make, + though care should be taken to avoid unnecessary entries. + + 3) OIDs that represent one capability or a collection of + capabilities that could be any collection of MIB Objects or + hardware or software functions may be created in working + groups and registered in a MIB Module. Other entities (e.g., + vendors) may also make registrations. Software will register + these standard capability OIDs, as well as vendor specific + OIDs. + + If the OID for a known capability is not present in the + table, then it should be assumed that the capability is not + implemented. + + As this object is used in the index for the + pmCapabilitiesTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmCapabilitiesEntry 1 } + +-- Capabilities override table + +pmCapabilitiesOverrideTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmCapabilitiesOverrideEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmCapabilitiesOverrideTable allows management stations + to override pmCapabilitiesTable entries that have been + registered by the agent. This facility can be used to avoid + situations in which managers in the network send policies to + a system that has advertised a capability in the + pmCapabilitiesTable but that should not be installed on this + particular system. One example could be newly deployed + + + + equipment that is still in a trial state in a trial state or + resources reserved for some other administrative reason. + This table can also be used to override entries in the + pmCapabilitiesTable through the use of the + pmCapabilitiesOverrideState object. Capabilities can also be + declared available in this table that were not registered in + the pmCapabilitiesTable. A management application can make + an entry in this table for any valid OID and declare the + capability available by setting the + pmCapabilitiesOverrideState for that row to valid(1)." + ::= { pmMib 6 } + +pmCapabilitiesOverrideEntry OBJECT-TYPE + SYNTAX PmCapabilitiesOverrideEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table indicates whether a particular + capability is valid or invalid. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + values." + INDEX { pmCapabilitiesOverrideType } + ::= { pmCapabilitiesOverrideTable 1 } + +PmCapabilitiesOverrideEntry ::= SEQUENCE { + pmCapabilitiesOverrideType OBJECT IDENTIFIER, + pmCapabilitiesOverrideState INTEGER, + pmCapabilitiesOverrideRowStatus RowStatus +} + +pmCapabilitiesOverrideType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the OID of the capability that is declared valid or + invalid by the pmCapabilitiesOverrideState value for this + row. Any valid OID, as described in the pmCapabilitiesTable, + is permitted in the pmCapabilitiesOverrideType object. This + means that capabilities can be expressed at any level, from a + specific instance of an object to a table or entire module. + There are no restrictions on whether these objects are from + standards track MIB documents or in the private branch of the + MIB. + + + + If an entry exists in this table for which there is a + corresponding entry in the pmCapabilitiesTable, then this entry + shall have precedence over the entry in the + pmCapabilitiesTable. All entries in this table must be + preserved across reboots. + + As this object is used in the index for the + pmCapabilitiesOverrideTable, users of this table should be + careful not to create entries that would result in instance + names with more than 128 sub-identifiers." + ::= { pmCapabilitiesOverrideEntry 1 } + +pmCapabilitiesOverrideState OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pmCapabilitiesOverrideState of invalid indicates that + management software should not send policies to this system + for the capability identified in the + pmCapabilitiesOverrideType for this row of the table. This + behavior is the same whether the capability represented by + the pmCapabilitiesOverrideType exists only in this table + (that is, it was installed by an external management + application) or exists in this table as well as the + pmCapabilitiesTable. This would be the case when a manager + wanted to disable a capability that the native management + system found and registered in the pmCapabilitiesTable. + + An entry in this table that has a pmCapabilitiesOverrideState + of valid should be treated as though it appeared in the + pmCapabilitiesTable. If the entry also exists in the + pmCapabilitiesTable in the pmCapabilitiesType object, and if + the value of this object is valid, then the system shall + operate as though this entry did not exist and policy + installations and executions will continue in a normal + fashion." + ::= { pmCapabilitiesOverrideEntry 2 } + +pmCapabilitiesOverrideRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of this pmCapabilitiesOverrideEntry. + + + + If the value of this object is active, no object in this row + may be modified." + ::= { pmCapabilitiesOverrideEntry 3 } + +-- The Schedule Group + +pmSchedLocalTime OBJECT-TYPE + SYNTAX DateAndTime (SIZE (11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local time used by the scheduler. Schedules that + refer to calendar time will use the local time indicated + by this object. An implementation MUST return all 11 bytes + of the DateAndTime textual-convention so that a manager + may retrieve the offset from GMT time." + ::= { pmMib 7 } + +-- +-- The schedule table that controls the scheduler. +-- + +pmSchedTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmSchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines schedules for policies." + ::= { pmMib 8 } + +pmSchedEntry OBJECT-TYPE + SYNTAX PmSchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular schedule. + + Unless noted otherwise, writable objects of this row can be + modified independently of the current value of pmSchedRowStatus, + pmSchedAdminStatus and pmSchedOperStatus. In particular, it + is legal to modify pmSchedWeekDay, pmSchedMonth, and + pmSchedDay when pmSchedRowStatus is active." + INDEX { pmSchedIndex } + ::= { pmSchedTable 1 } + + + + + + + +PmSchedEntry ::= SEQUENCE { + pmSchedIndex Unsigned32, + pmSchedGroupIndex Unsigned32, + pmSchedDescr PmUTF8String, + pmSchedTimePeriod PmUTF8String, + pmSchedMonth BITS, + pmSchedDay BITS, + pmSchedWeekDay BITS, + pmSchedTimeOfDay PmUTF8String, + pmSchedLocalOrUtc INTEGER, + pmSchedStorageType StorageType, + pmSchedRowStatus RowStatus +} + +pmSchedIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally unique, administratively assigned index for this + scheduling entry." + ::= { pmSchedEntry 1 } + +pmSchedGroupIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The locally unique, administratively assigned index for the + schedule group this scheduling entry belongs to. + + To assign multiple schedule entries to the same group, the + pmSchedGroupIndex of each entry in the group will be set to + the same value. This pmSchedGroupIndex value must be equal to + the pmSchedIndex of one of the entries in the group. If the + entry whose pmSchedIndex equals the pmSchedGroupIndex + for the group is deleted, the agent will assign a new + pmSchedGroupIndex to all remaining members of the group. + + If an entry is not a member of a group, its pmSchedGroupIndex + must be assigned to the value of its pmSchedIndex. + + Policies that are controlled by a group of schedule entries + are active when any schedule in the group is active." + ::= { pmSchedEntry 2 } + + + + + + +pmSchedDescr OBJECT-TYPE + SYNTAX PmUTF8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human-readable description of the purpose of this + scheduling entry." + DEFVAL { ''H } + ::= { pmSchedEntry 3 } + +pmSchedTimePeriod OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..31)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The overall range of calendar dates and times over which this + schedule is active. It is stored in a slightly extended version + of the format for a 'period-explicit' defined in RFC 2445. + This format is expressed as a string representing the + starting date and time, in which the character 'T' indicates + the beginning of the time portion, followed by the solidus + character, '/', followed by a similar string representing an + end date and time. The start of the period MUST be before the + end of the period. Date-Time values are expressed as + substrings of the form 'yyyymmddThhmmss'. For example: + + 20000101T080000/20000131T130000 + + January 1, 2000, 0800 through January 31, 2000, 1PM + + The 'Date with UTC time' format defined in RFC 2445 in which + the Date-Time string ends with the character 'Z' is not + allowed. + + This 'period-explicit' format is also extended to allow two + special cases in which one of the Date-Time strings is + replaced with a special string defined in RFC 2445: + + 1. If the first Date-Time value is replaced with the string + 'THISANDPRIOR', then the value indicates that the schedule + is active at any time prior to the Date-Time that appears + after the '/'. + + 2. If the second Date-Time is replaced with the string + 'THISANDFUTURE', then the value indicates that the schedule + is active at any time after the Date-Time that appears + before the '/'. + + + + + Note that although RFC 2445 defines these two strings, they are + not specified for use in the 'period-explicit' format. The use + of these strings represents an extension to the + 'period-explicit' format." + ::= { pmSchedEntry 4 } + +pmSchedMonth OBJECT-TYPE + SYNTAX BITS { + january(0), + february(1), + march(2), + april(3), + may(4), + june(5), + july(6), + august(7), + september(8), + october(9), + november(10), + december(11) + } + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific months within that time period when the schedule + is active. Setting all bits will cause the schedule to act + independently of the month." + DEFVAL { { january, february, march, april, may, june, july, + august, september, october, november, december } } + ::= { pmSchedEntry 5 } + +pmSchedDay OBJECT-TYPE + SYNTAX BITS { + d1(0), d2(1), d3(2), d4(3), d5(4), + d6(5), d7(6), d8(7), d9(8), d10(9), + d11(10), d12(11), d13(12), d14(13), d15(14), + d16(15), d17(16), d18(17), d19(18), d20(19), + d21(20), d22(21), d23(22), d24(23), d25(24), + d26(25), d27(26), d28(27), d29(28), d30(29), + d31(30), + r1(31), r2(32), r3(33), r4(34), r5(35), + r6(36), r7(37), r8(38), r9(39), r10(40), + r11(41), r12(42), r13(43), r14(44), r15(45), + r16(46), r17(47), r18(48), r19(49), r20(50), + r21(51), r22(52), r23(53), r24(54), r25(55), + + + + r26(56), r27(57), r28(58), r29(59), r30(60), + r31(61) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific days of the month within that time period when + the schedule is active. + + There are two sets of bits one can use to define the day + within a month: + + Enumerations starting with the letter 'd' indicate a + day in a month relative to the first day of a month. + The first day of the month can therefore be specified + by setting the bit d1(0), and d31(30) means the last + day of a month with 31 days. + + Enumerations starting with the letter 'r' indicate a + day in a month in reverse order, relative to the last + day of a month. The last day in the month can therefore + be specified by setting the bit r1(31), and r31(61) means + the first day of a month with 31 days. + + Setting multiple bits will include several days in the set + of possible days for this schedule. Setting all bits starting + with the letter 'd' or all bits starting with the letter 'r' + will cause the schedule to act independently of the day of the + month." + DEFVAL { { d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, + d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, + d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, + d31, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, + r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, + r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, + r31 } } + ::= { pmSchedEntry 6 } + +pmSchedWeekDay OBJECT-TYPE + SYNTAX BITS { + sunday(0), + monday(1), + tuesday(2), + wednesday(3), + thursday(4), + friday(5), + + + + saturday(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific days of the week within that time period when + the schedule is active. Setting all bits will cause the + schedule to act independently of the day of the week." + DEFVAL { { sunday, monday, tuesday, wednesday, thursday, + friday, saturday } } + ::= { pmSchedEntry 7 } + +pmSchedTimeOfDay OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..15)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the range of times in a day when the schedule is active. + + This value is stored in a format based on the RFC 2445 format + for 'time': The character 'T' followed by a 'time' string, + followed by the solidus character, '/', followed by the + character 'T', followed by a second time string. The first time + indicates the beginning of the range, and the second time + indicates the end. Thus, this value takes the following + form: + + 'Thhmmss/Thhmmss'. + + The second substring always identifies a later time than the + first substring. To allow for ranges that span midnight, + however, the value of the second string may be smaller than + the value of the first substring. Thus, 'T080000/T210000' + identifies the range from 0800 until 2100, whereas + 'T210000/T080000' identifies the range from 2100 until 0800 of + the following day. + + When a range spans midnight, by definition it includes parts + of two successive days. When one of these days is also + selected by either the MonthOfYearMask, DayOfMonthMask, and/or + DayOfWeekMask, but the other day is not, then the policy is + active only during the portion of the range that falls on the + selected day. For example, if the range extends from 2100 + + + + until 0800, and the day of week mask selects Monday and + Tuesday, then the policy is active during the following three + intervals: + + From midnight Sunday until 0800 Monday + From 2100 Monday until 0800 Tuesday + From 2100 Tuesday until 23:59:59 Tuesday + + Setting this value to 'T000000/T235959' will cause the + schedule to act independently of the time of day." + DEFVAL { '543030303030302F54323335393539'H } -- T000000/T235959 + ::= { pmSchedEntry 8 } + +pmSchedLocalOrUtc OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the times represented in the + TimePeriod object and in the various Mask objects represent + local times or UTC times." + DEFVAL { utcTime } + ::= { pmSchedEntry 9 } + +pmSchedStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this schedule entry is kept + in volatile storage and lost upon reboot or + backed up by non-volatile or permanent storage. + + Conceptual rows having the value 'permanent' must allow write + access to the columnar objects pmSchedDescr, pmSchedWeekDay, + pmSchedMonth, and pmSchedDay. + + If the value of this object is 'permanent', no values in the + associated row have to be writable." + DEFVAL { volatile } + ::= { pmSchedEntry 10 } + + + + + + + +pmSchedRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this schedule entry. + + If the value of this object is active, no object in this row + may be modified." + ::= { pmSchedEntry 11 } + +-- Policy Tracking + +-- The "policy to element" (PE) table and the "element to policy" (EP) +-- table track the status of execution contexts grouped by policy and +-- element respectively. + +pmTrackingPETable OBJECT-TYPE + SYNTAX SEQUENCE OF PmTrackingPEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmTrackingPETable describes what elements + are active (under control of) a policy. This table is indexed + in order to optimize retrieval of the entire status for a + given policy." + ::= { pmMib 9 } + +pmTrackingPEEntry OBJECT-TYPE + SYNTAX PmTrackingPEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmTrackingPETable. The pmPolicyIndex in + the index specifies the policy tracked by this entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + combinations." + INDEX { pmPolicyIndex, pmTrackingPEElement, + pmTrackingPEContextName, pmTrackingPEContextEngineID } + ::= { pmTrackingPETable 1 } + + + + + + + +PmTrackingPEEntry ::= SEQUENCE { + pmTrackingPEElement RowPointer, + pmTrackingPEContextName SnmpAdminString, + pmTrackingPEContextEngineID OCTET STRING, + pmTrackingPEInfo BITS +} + +pmTrackingPEElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element that is acted upon by the associated policy. + + As this object is used in the index for the + pmTrackingPETable, users of this table should be careful not + to create entries that would result in instance names with + more than 128 sub-identifiers." + ::= { pmTrackingPEEntry 1 } + +pmTrackingPEContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmTrackingPEEntry 2 } + +pmTrackingPEContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmTrackingPEEntry 3 } + +pmTrackingPEInfo OBJECT-TYPE + SYNTAX BITS { + actionSkippedDueToPrecedence(0), + conditionRunTimeException(1), + conditionUserSignal(2), + + + + actionRunTimeException(3), + actionUserSignal(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns information about the previous policy + script executions. + + If the actionSkippedDueToPrecedence(1) bit is set, the last + execution of the associated policy condition returned non-zero, + but the action is not active, because it was trumped by a + matching policy condition in the same precedence group with a + higher precedence value. + + If the conditionRunTimeException(2) bit is set, the last + execution of the associated policy condition encountered a + run-time exception and aborted. + + If the conditionUserSignal(3) bit is set, the last + execution of the associated policy condition called the + signalError() function. + + If the actionRunTimeException(4) bit is set, the last + execution of the associated policy action encountered a + run-time exception and aborted. + + If the actionUserSignal(5) bit is set, the last + execution of the associated policy action called the + signalError() function. + + Entries will only exist in this table of one or more bits are + set. In particular, if an entry does not exist for a + particular policy/element combination, it can be assumed that + the policy's condition did not match 'this element'." + ::= { pmTrackingPEEntry 4 } + +-- Element to Policy Table + +pmTrackingEPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmTrackingEPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmTrackingEPTable describes what policies + are controlling an element. This table is indexed in + order to optimize retrieval of the status of all policies + active for a given element." + + + + ::= { pmMib 10 } + +pmTrackingEPEntry OBJECT-TYPE + SYNTAX PmTrackingEPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmTrackingEPTable. Entries exist for all + element/policy combinations for which the policy's condition + matches and only if the schedule for the policy is active. + + The pmPolicyIndex in the index specifies the policy + tracked by this entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such combinations." + INDEX { pmTrackingEPElement, pmTrackingEPContextName, + pmTrackingEPContextEngineID, pmPolicyIndex } + ::= { pmTrackingEPTable 1 } + +PmTrackingEPEntry ::= SEQUENCE { + pmTrackingEPElement RowPointer, + pmTrackingEPContextName SnmpAdminString, + pmTrackingEPContextEngineID OCTET STRING, + pmTrackingEPStatus INTEGER +} + +pmTrackingEPElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element acted upon by the associated policy. + + As this object is used in the index for the + pmTrackingEPTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmTrackingEPEntry 1 } + +pmTrackingEPContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + + + + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmTrackingEPEntry 2 } + +pmTrackingEPContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmTrackingEPEntry 3 } + +pmTrackingEPStatus OBJECT-TYPE + SYNTAX INTEGER { + on(1), + forceOff(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This entry will only exist if the calendar for the policy is + active and if the associated policyCondition returned 1 for + 'this element'. + + A policy can be forcibly disabled on a particular element + by setting this value to forceOff(2). The agent should then + act as though the policyCondition failed for 'this element'. + The forceOff(2) state will persist (even across reboots) until + this value is set to on(1) by a management request. The + forceOff(2) state may be set even if the entry does not + previously exist so that future policy invocations can be + avoided. + + Unless forcibly disabled, if this entry exists, its value + will be on(1)." + ::= { pmTrackingEPEntry 4 } + +-- Policy Debugging Table + +pmDebuggingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmDebuggingEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Policies that have debugging turned on will generate a log + entry in the policy debugging table for every runtime + exception that occurs in either the condition or action + code. + + The pmDebuggingTable logs debugging messages when + policies experience run-time exceptions in either the condition + or action code and the associated pmPolicyDebugging object + has been turned on. + + The maximum number of debugging entries that will be stored + and the maximum length of time an entry will be kept are an + implementation-dependent manner. If entries must + be discarded to make room for new entries, the oldest entries + must be discarded first. + + If the system restarts, all debugging entries may be deleted." + ::= { pmMib 11 } + +pmDebuggingEntry OBJECT-TYPE + SYNTAX PmDebuggingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmDebuggingTable. The pmPolicyIndex in the + index specifies the policy that encountered the exception + that led to this log entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such combinations." + INDEX { pmPolicyIndex, pmDebuggingElement, + pmDebuggingContextName, pmDebuggingContextEngineID, + pmDebuggingLogIndex } + ::= { pmDebuggingTable 1 } + +PmDebuggingEntry ::= SEQUENCE { + pmDebuggingElement RowPointer, + pmDebuggingContextName SnmpAdminString, + pmDebuggingContextEngineID OCTET STRING, + pmDebuggingLogIndex Unsigned32, + pmDebuggingMessage PmUTF8String +} + + + + + + +pmDebuggingElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element the policy was executing on when it encountered + the error that led to this log entry. + + For example, if the element is interface 3, then this object + will contain the OID for 'ifIndex.3'. + + As this object is used in the index for the + pmDebuggingTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmDebuggingEntry 1 } + +pmDebuggingContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmDebuggingEntry 2 } + +pmDebuggingContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmDebuggingEntry 3 } + +pmDebuggingLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this log entry among other log entries + for this policy/element combination." + ::= { pmDebuggingEntry 4 } + + + +pmDebuggingMessage OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An error message generated by the policy execution + environment. It is recommended that this message include the + time of day when the message was generated, if known." + ::= { pmDebuggingEntry 5 } + +-- Notifications + +pmNotifications OBJECT IDENTIFIER ::= { pmMib 0 } + +pmNewRoleNotification NOTIFICATION-TYPE + OBJECTS { pmRoleStatus } + STATUS current + DESCRIPTION + "The pmNewRoleNotification is sent when an agent is configured + with its first instance of a previously unused role string + (not every time a new element is given a particular role). + + An instance of the pmRoleStatus object is sent containing + the new roleString in its index. In the event that two or + more elements are given the same role simultaneously, it is an + implementation-dependent matter as to which pmRoleTable + instance will be included in the notification." + ::= { pmNotifications 1 } + +pmNewCapabilityNotification NOTIFICATION-TYPE + OBJECTS { pmCapabilitiesType } + STATUS current + DESCRIPTION + "The pmNewCapabilityNotification is sent when an agent + gains a new capability that did not previously exist in any + element on the system (not every time an element gains a + particular capability). + + An instance of the pmCapabilitiesType object is sent containing + the identity of the new capability. In the event that two or + more elements gain the same capability simultaneously, it is an + implementation-dependent matter as to which pmCapabilitiesType + instance will be included in the notification." + ::= { pmNotifications 2 } + +pmAbnormalTermNotification NOTIFICATION-TYPE + OBJECTS { pmTrackingPEInfo } + STATUS current + + + + DESCRIPTION + "The pmAbnormalTermNotification is sent when a policy's + pmPolicyAbnormalTerminations gauge value changes from zero to + any value greater than zero and no such notification has been + sent for that policy in the last 5 minutes. + + The notification contains an instance of the pmTrackingPEInfo + object where the pmPolicyIndex component of the index + identifies the associated policy and the rest of the index + identifies an element on which the policy failed." + ::= { pmNotifications 3 } + +-- Compliance Statements + + pmConformance OBJECT IDENTIFIER ::= { pmMib 12 } + pmCompliances OBJECT IDENTIFIER ::= { pmConformance 1 } + pmGroups OBJECT IDENTIFIER ::= { pmConformance 2 } + +pmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the Policy-Based Management MIB" + MODULE -- this module + MANDATORY-GROUPS { pmPolicyManagementGroup, pmSchedGroup, + pmNotificationGroup } + ::= { pmCompliances 1 } + +pmPolicyManagementGroup OBJECT-GROUP + OBJECTS { pmPolicyPrecedenceGroup, pmPolicyPrecedence, + pmPolicySchedule, pmPolicyElementTypeFilter, + pmPolicyConditionScriptIndex, pmPolicyActionScriptIndex, + pmPolicyParameters, + pmPolicyConditionMaxLatency, pmPolicyActionMaxLatency, + pmPolicyMaxIterations, + pmPolicyDescription, pmPolicyMatches, + pmPolicyAbnormalTerminations, + pmPolicyExecutionErrors, pmPolicyDebugging, + pmPolicyStorageType, pmPolicyAdminStatus, + pmPolicyRowStatus, pmPolicyCodeText, pmPolicyCodeStatus, + pmElementTypeRegMaxLatency, pmElementTypeRegDescription, + pmElementTypeRegStorageType, pmElementTypeRegRowStatus, + pmRoleStatus, + pmCapabilitiesType, pmCapabilitiesOverrideState, + pmCapabilitiesOverrideRowStatus, + pmTrackingPEInfo, + pmTrackingEPStatus, + pmDebuggingMessage } + + + + STATUS current + DESCRIPTION + "Objects that allow for the creation and management of + configuration policies." + ::= { pmGroups 1 } + +pmSchedGroup OBJECT-GROUP + OBJECTS { pmSchedLocalTime, pmSchedGroupIndex, + pmSchedDescr, pmSchedTimePeriod, + pmSchedMonth, pmSchedDay, pmSchedWeekDay, + pmSchedTimeOfDay, pmSchedLocalOrUtc, pmSchedStorageType, + pmSchedRowStatus + } + STATUS current + DESCRIPTION + "Objects that allow for the scheduling of policies." + ::= { pmGroups 2 } + +pmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pmNewRoleNotification, + pmNewCapabilityNotification, + pmAbnormalTermNotification } + STATUS current + DESCRIPTION + "Notifications sent by an Policy MIB agent." + ::= { pmGroups 3 } + +pmBaseFunctionLibrary OBJECT IDENTIFIER ::= { pmGroups 4 } + +END diff --git a/mibs/ietf/POWER-ETHERNET-MIB b/mibs/ietf/POWER-ETHERNET-MIB new file mode 100644 index 0000000..3b45a60 --- /dev/null +++ b/mibs/ietf/POWER-ETHERNET-MIB @@ -0,0 +1,659 @@ +POWER-ETHERNET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Integer32, + Gauge32, Counter32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + powerEthernetMIB MODULE-IDENTITY + + LAST-UPDATED "200311240000Z" -- November 24, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + + + + + + + CONTACT-INFO + " + WG Charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-requests@ietf.org + In Body: subscribe your_email_address + + Chair: Dan Romascanu + Avaya + Tel: +972-3-645-8414 + Email: dromasca@avaya.com + + Editor: Avi Berger + PowerDsine Inc. + Tel: 972-9-7755100 Ext 307 + Fax: 972-9-7755120 + E-mail: avib@PowerDsine.com + " + + DESCRIPTION + "The MIB module for managing Power Source Equipment + (PSE) working according to the IEEE 802.af Powered + Ethernet (DTE Power via MDI) standard. + + The following terms are used throughout this + MIB module. For complete formal definitions, + the IEEE 802.3 standards should be consulted + wherever possible: + + Group - A recommended, but optional, entity + defined by the IEEE 802.3 management standard, + in order to support a modular numbering scheme. + The classical example allows an implementor to + represent field-replaceable units as groups of + ports, with the port numbering matching the + modular hardware implementation. + + Port - This entity identifies the port within the group + for which this entry contains information. The numbering + scheme for ports is implementation specific. + + Copyright (c) The Internet Society (2003). This version + of this MIB module is part of RFC 3621; See the RFC + itself for full legal notices." + + + + + REVISION "200311240000Z" -- November 24, 2003 + DESCRIPTION "Initial version, published as RFC 3621." + ::= { mib-2 105 } + +pethNotifications OBJECT IDENTIFIER ::= { powerEthernetMIB 0 } +pethObjects OBJECT IDENTIFIER ::= { powerEthernetMIB 1 } +pethConformance OBJECT IDENTIFIER ::= { powerEthernetMIB 2 } + +-- PSE Objects + + pethPsePortTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethPsePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that display and control the power + characteristics of power Ethernet ports on a Power Source + Entity (PSE) device. This group will be implemented in + managed power Ethernet switches and mid-span devices. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethObjects 1 } + + pethPsePortEntry OBJECT-TYPE + SYNTAX PethPsePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that display and control the power + characteristics of a power Ethernet PSE port." + INDEX { pethPsePortGroupIndex , pethPsePortIndex } + ::= { pethPsePortTable 1 } + + PethPsePortEntry ::= SEQUENCE { + pethPsePortGroupIndex + Integer32, + pethPsePortIndex + Integer32, + pethPsePortAdminEnable + TruthValue, + pethPsePortPowerPairsControlAbility + TruthValue, + pethPsePortPowerPairs + INTEGER, + pethPsePortDetectionStatus + INTEGER, + pethPsePortPowerPriority + INTEGER, + + + + pethPsePortMPSAbsentCounter + Counter32, + pethPsePortType + SnmpAdminString, + pethPsePortPowerClassifications + INTEGER, + pethPsePortInvalidSignatureCounter + Counter32, + pethPsePortPowerDeniedCounter + Counter32, + pethPsePortOverLoadCounter + Counter32, + pethPsePortShortCounter + Counter32 + } + + pethPsePortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which a power Ethernet PSE is + connected. Group means box in the stack, module in a + rack and the value 1 MUST be used for non-modular devices. + Furthermore, the same value MUST be used in this variable, + pethMainPseGroupIndex, and pethNotificationControlGroupIndex + to refer to a given box in a stack or module in the rack." + ::= { pethPsePortEntry 1 } + + pethPsePortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the power Ethernet PSE + port within group pethPsePortGroupIndex to which the + power Ethernet PSE entry is connected." + ::= { pethPsePortEntry 2 } + + pethPsePortAdminEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "true (1) An interface which can provide the PSE functions. + false(2) The interface will act as it would if it had no PSE + function." + + + + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.2 aPSEAdminState" + ::= { pethPsePortEntry 3 } + + pethPsePortPowerPairsControlAbility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the capability of controlling the power pairs + functionality to switch pins for sourcing power. + The value true indicate that the device has the capability + to control the power pairs. When false the PSE Pinout + Alternative used cannot be controlled through the + PethPsePortAdminEnable attribute." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.3 + aPSEPowerPairsControlAbility" + ::= { pethPsePortEntry 4 } + + pethPsePortPowerPairs OBJECT-TYPE + SYNTAX INTEGER { + signal(1), + spare(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Describes or controls the pairs in use. If the value of + pethPsePortPowerPairsControl is true, this object is + writable. + A value of signal(1) means that the signal pairs + only are in use. + A value of spare(2) means that the spare pairs + only are in use." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.4 aPSEPowerPairs" + ::= { pethPsePortEntry 5 } + + pethPsePortDetectionStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + searching(2), + deliveringPower(3), + fault(4), + test(5), + otherFault(6) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the operational status of the port PD detection. + A value of disabled(1)- indicates that the PSE State diagram + is in the state DISABLED. + A value of deliveringPower(3) - indicates that the PSE State + diagram is in the state POWER_ON for a duration greater than + tlim max (see IEEE Std 802.3af Table 33-5 tlim). + A value of fault(4) - indicates that the PSE State diagram is + in the state TEST_ERROR. + A value of test(5) - indicates that the PSE State diagram is + in the state TEST_MODE. + A value of otherFault(6) - indicates that the PSE State + diagram is in the state IDLE due to the variable + error_conditions. + A value of searching(2)- indicates the PSE State diagram is + in a state other than those listed above." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.5 + aPSEPowerDetectionStatus" + ::= { pethPsePortEntry 6 } + + pethPsePortPowerPriority OBJECT-TYPE + SYNTAX INTEGER { + critical(1), + high(2), + low(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the priority of the port from the point + of view of a power management algorithm. The priority that + is set by this variable could be used by a control mechanism + that prevents over current situations by disconnecting first + ports with lower power priority. Ports that connect devices + critical to the operation of the network - like the E911 + telephones ports - should be set to higher priority." + ::= { pethPsePortEntry 7 } + + pethPsePortMPSAbsentCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + transitions directly from the state POWER_ON to the + + + + state IDLE due to tmpdo_timer_done being asserted." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.11 + aPSEMPSAbsentCounter" + ::= { pethPsePortEntry 8 } + + pethPsePortType OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A manager will set the value of this variable to indicate + the type of powered device that is connected to the port. + The default value supplied by the agent if no value has + ever been set should be a zero-length octet string." + ::= { pethPsePortEntry 9 } + + pethPsePortPowerClassifications OBJECT-TYPE + SYNTAX INTEGER { + class0(1), + class1(2), + class2(3), + class3(4), + class4(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Classification is a way to tag different terminals on the + Power over LAN network according to their power consumption. + Devices such as IP telephones, WLAN access points and others, + will be classified according to their power requirements. + + The meaning of the classification labels is defined in the + IEEE specification. + + This variable is valid only while a PD is being powered, + that is, while the attribute pethPsePortDetectionStatus + is reporting the enumeration deliveringPower." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.6 + aPSEPowerClassification" + ::= { pethPsePortEntry 10 } + + pethPsePortInvalidSignatureCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state SIGNATURE_INVALID." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.7 + aPSEInvalidSignatureCounter" + ::= { pethPsePortEntry 11 } + + pethPsePortPowerDeniedCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state POWER_DENIED." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.8 + aPSEPowerDeniedCounter" + ::= { pethPsePortEntry 12 } + + pethPsePortOverLoadCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state ERROR_DELAY_OVER." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.9 + aPSEOverLoadCounter" + ::= { pethPsePortEntry 13 } + + pethPsePortShortCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state ERROR_DELAY_SHORT." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.10 + aPSEShortCounter" + ::= { pethPsePortEntry 14 } + +-- Main PSE Objects + +pethMainPseObjects OBJECT IDENTIFIER ::= { pethObjects 3 } + + + + +pethMainPseTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethMainPseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that display and control attributes + of the main power source in a PSE device. Ethernet + switches are one example of boxes that would support + these objects. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethMainPseObjects 1 } + + pethMainPseEntry OBJECT-TYPE + SYNTAX PethMainPseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that display and control the Main + power of a PSE. " + INDEX { pethMainPseGroupIndex } + ::= { pethMainPseTable 1 } + + PethMainPseEntry ::= SEQUENCE { + pethMainPseGroupIndex + Integer32, + pethMainPsePower + Gauge32 , + pethMainPseOperStatus + INTEGER, + pethMainPseConsumptionPower + Gauge32, + pethMainPseUsageThreshold + Integer32 + } + pethMainPseGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group to which + power Ethernet PSE is connected. Group means (box in + the stack, module in a rack) and the value 1 MUST be + used for non-modular devices. Furthermore, the same + value MUST be used in this variable, pethPsePortGroupIndex, + and pethNotificationControlGroupIndex to refer to a + given box in a stack or module in a rack." + ::= { pethMainPseEntry 1 } + + + + pethMainPsePower OBJECT-TYPE + SYNTAX Gauge32 (1..65535) + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal power of the PSE expressed in Watts." + ::= { pethMainPseEntry 2 } + + pethMainPseOperStatus OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2), + faulty(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the main PSE." + ::= { pethMainPseEntry 3 } + + pethMainPseConsumptionPower OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured usage power expressed in Watts." + ::= { pethMainPseEntry 4 } + + pethMainPseUsageThreshold OBJECT-TYPE + SYNTAX Integer32 (1..99) + UNITS "%" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The usage threshold expressed in percents for + comparing the measured power and initiating + an alarm if the threshold is exceeded." + ::= { pethMainPseEntry 5 } + +-- Notification Control Objects + +pethNotificationControl OBJECT IDENTIFIER ::= { pethObjects 4 } + +pethNotificationControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethNotificationControlEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A table of objects that display and control the + Notification on a PSE device. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethNotificationControl 1 } + + pethNotificationControlEntry OBJECT-TYPE + SYNTAX PethNotificationControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that control the Notification events." + INDEX { pethNotificationControlGroupIndex } + ::= { pethNotificationControlTable 1 } + + PethNotificationControlEntry ::= SEQUENCE { + pethNotificationControlGroupIndex + Integer32, + pethNotificationControlEnable + TruthValue + } + pethNotificationControlGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group. Group + means box in the stack, module in a rack and the value + 1 MUST be used for non-modular devices. Furthermore, + the same value MUST be used in this variable, + pethPsePortGroupIndex, and + pethMainPseGroupIndex to refer to a given box in a + stack or module in a rack. " + ::= { pethNotificationControlEntry 1 } + + pethNotificationControlEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls, on a per-group basis, whether + or not notifications from the agent are enabled. The + value true(1) means that notifications are enabled; the + value false(2) means that they are not." + ::= { pethNotificationControlEntry 2 } + + + + +-- +-- Notifications Section +-- +-- + + pethPsePortOnOffNotification NOTIFICATION-TYPE + OBJECTS { pethPsePortDetectionStatus } + STATUS current + DESCRIPTION + " This Notification indicates if Pse Port is delivering or + not power to the PD. This Notification SHOULD be sent on + every status change except in the searching mode. + At least 500 msec must elapse between notifications + being emitted by the same object instance." + ::= { pethNotifications 1 } + + pethMainPowerUsageOnNotification NOTIFICATION-TYPE + OBJECTS { pethMainPseConsumptionPower } + STATUS current + DESCRIPTION + " This Notification indicate PSE Threshold usage + indication is on, the usage power is above the + threshold. At least 500 msec must elapse between + notifications being emitted by the same object + instance." + ::= { pethNotifications 2 } + + pethMainPowerUsageOffNotification NOTIFICATION-TYPE + OBJECTS { pethMainPseConsumptionPower } + STATUS current + DESCRIPTION + " This Notification indicates PSE Threshold usage indication + off, the usage power is below the threshold. + At least 500 msec must elapse between notifications being + emitted by the same object instance." + ::= { pethNotifications 3 } + +-- +-- Conformance Section +-- +pethCompliances OBJECT IDENTIFIER ::= { pethConformance 1 } +pethGroups OBJECT IDENTIFIER ::= { pethConformance 2 } + +pethCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Power Ethernet MIB." + + + + MODULE -- this module + MANDATORY-GROUPS { pethPsePortGroup, + pethPsePortNotificationGroup, + pethNotificationControlGroup + } + GROUP pethMainPseGroup + DESCRIPTION + "The pethMainPseGroup is mandatory for PSE systems + that implement a main power supply." + GROUP pethMainPowerNotificationGroup + DESCRIPTION + "The pethMainPowerNotificationGroup is mandatory for + PSE systems that implement a main power supply." + ::= { pethCompliances 1 } + +pethPsePortGroup OBJECT-GROUP + OBJECTS { + pethPsePortAdminEnable, + pethPsePortPowerPairsControlAbility, + pethPsePortPowerPairs, + pethPsePortDetectionStatus, + pethPsePortPowerPriority, + pethPsePortMPSAbsentCounter, + pethPsePortInvalidSignatureCounter, + pethPsePortPowerDeniedCounter, + pethPsePortOverLoadCounter, + pethPsePortShortCounter, + pethPsePortType, + pethPsePortPowerClassifications + } + STATUS current + DESCRIPTION + "PSE Port objects." + ::= { pethGroups 1 } + +pethMainPseGroup OBJECT-GROUP + OBJECTS { + pethMainPsePower, + pethMainPseOperStatus, + pethMainPseConsumptionPower, + pethMainPseUsageThreshold + } + STATUS current + DESCRIPTION + "Main PSE Objects. " + ::= { pethGroups 2 } + +pethNotificationControlGroup OBJECT-GROUP + + + + OBJECTS { + pethNotificationControlEnable + } + STATUS current + DESCRIPTION + "Notification Control Objects. " + ::= { pethGroups 3 } + +pethPsePortNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pethPsePortOnOffNotification} + STATUS current + DESCRIPTION "Pse Port Notifications." + ::= { pethGroups 4 } + + pethMainPowerNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pethMainPowerUsageOnNotification, + pethMainPowerUsageOffNotification} + STATUS current + DESCRIPTION "Main PSE Notifications." + ::= { pethGroups 5 } + +END diff --git a/mibs/ietf/PPP-BRIDGE-NCP-MIB b/mibs/ietf/PPP-BRIDGE-NCP-MIB new file mode 100644 index 0000000..2dac327 --- /dev/null +++ b/mibs/ietf/PPP-BRIDGE-NCP-MIB @@ -0,0 +1,449 @@ +PPP-BRIDGE-NCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + pppBridge OBJECT IDENTIFIER ::= { ppp 4 } + +-- +-- The PPP Bridge NCP Group. +-- Implementation of this group is mandatory for all +-- PPP implementations that support MAC Bridging over +-- PPP (RFC1220). +-- + +-- The following object reflect the values of the option +-- parameters used in the PPP Link Control Protocol +-- pppBridgeLocalToRemoteTinygramCompression +-- pppBridgeRemoteToLocalTinygramCompression +-- pppBridgeLocalToRemoteLanId +-- pppBridgeRemoteToLocalLanId +-- +-- These values are not available until after the PPP Option + +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e. pppBridgeOperStatus is set to +-- opened). +-- +-- Therefore, when pppBridgeOperStatus is not opened +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppBridgeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the parameters and statistics + for the local PPP entity that are related to + the operation of Bridging over the PPP." + ::= { pppBridge 1 } + + +pppBridgeEntry OBJECT-TYPE + SYNTAX PppBridgeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Bridging information for a particular PPP + link." + INDEX { ifIndex } + ::= { pppBridgeTable 1 } + + +PppBridgeEntry ::= SEQUENCE { + pppBridgeOperStatus + INTEGER, + pppBridgeLocalToRemoteTinygramCompression + INTEGER, + pppBridgeRemoteToLocalTinygramCompression + INTEGER, + pppBridgeLocalToRemoteLanId + INTEGER, + pppBridgeRemoteToLocalLanId + INTEGER +} + +pppBridgeOperStatus OBJECT-TYPE + SYNTAX INTEGER {opened(1), not-opened(2)} + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The operational status of the Bridge network + protocol. If the value of this object is up + then the finite state machine for the Bridge + network protocol has reached the Opened state." + ::= { pppBridgeEntry 1 } + + +pppBridgeLocalToRemoteTinygramCompression OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local node will perform + Tinygram Compression when sending packets to + the remote entity. If false then the local + entity will not perform Tinygram Compression. + If true then the local entity will perform + Tinygram Compression. The value of this object + is meaningful only when the link has reached + the open state (pppBridgeOperStatus is + opened)." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + ::= { pppBridgeEntry 2 } + + +pppBridgeRemoteToLocalTinygramCompression OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "If false(1) then the remote entity is not + expected to perform Tinygram Compression. If + true then the remote entity is expected to + perform Tinygram Compression. The value of this + object is meaningful only when the link has + reached the open state (pppBridgeOperStatus is + opened)." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + ::= { pppBridgeEntry 3 } + +pppBridgeLocalToRemoteLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local node will include + the LAN Identification field in transmitted + packets or not. If false(1) then the local node + will not transmit this field, true(2) means + that the field will be transmitted. The value + of this object is meaningful only when the link + has reached the open state (pppBridgeOperStatus + is opened)." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + ::= { pppBridgeEntry 4 } + + +pppBridgeRemoteToLocalLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote node has + indicated that it will include the LAN + Identification field in transmitted packets or + not. If false(1) then the field will not be + transmitted, if true(2) then the field will be + transmitted. The value of this object is + meaningful only when the link has reached the + open state (pppBridgeOperStatus is opened)." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + ::= { pppBridgeEntry 5 } + + +-- +-- The PPP Bridge Configuration table +-- + +pppBridgeConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the parameters and statistics + for the local PPP entity that are related to + the operation of Bridging over the PPP." + ::= { pppBridge 2 } + + +pppBridgeConfigEntry OBJECT-TYPE + SYNTAX PppBridgeConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Bridging Configuration information for a + particular PPP link." + INDEX { ifIndex } + ::= { pppBridgeConfigTable 1 } + + +PppBridgeConfigEntry ::= SEQUENCE { + pppBridgeConfigAdminStatus + INTEGER, + pppBridgeConfigTinygram + INTEGER, + pppBridgeConfigRingId + INTEGER, + pppBridgeConfigLineId + INTEGER, + pppBridgeConfigLanId + INTEGER +} + + +pppBridgeConfigAdminStatus OBJECT-TYPE + SYNTAX INTEGER { open(1), close(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The immediate desired status of the Bridging + network protocol. Setting this object to open + will inject an administrative open event into + the Bridging network protocol's finite state + machine. Setting this object to close will + inject an administrative close event into the + Bridging network protocol's finite state + machine." + ::= { pppBridgeConfigEntry 1 } + + +pppBridgeConfigTinygram OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local BNCP entity will not + initiate the Tinygram Compression Option + Negotiation. If true then the local BNCP entity + will initiate negotiation of this option." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + DEFVAL { true } + ::= { pppBridgeConfigEntry 2 } + + +pppBridgeConfigRingId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local PPP Entity will not + initiate a Remote Ring Identification Option + negotiation. If true then the local PPP entity + will intiate this negotiation. This MIB object + is relevant only if the interface is for 802.5 + Token Ring bridging." + REFERENCE + "Section 6.4, IEEE 802.5 Remote Ring + Identification Option, of RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 3 } + + +pppBridgeConfigLineId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local PPP Entity is not to + initiate a Line Identification Option + negotiation. If true then the local PPP entity + will intiate this negotiation. This MIB object + is relevant only if the interface is for 802.5 + Token Ring bridging." + REFERENCE + "Section 6.5, IEEE 802.5 Line Identification + Option, of RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 4 } + +pppBridgeConfigLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local BNCP entity will not + initiate the LAN Identification Option + Negotiation. If true then the local BNCP entity + will initiate negotiation of this option." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 5 } + + +-- +-- The PPP Bridge Media Status Table +-- + +pppBridgeMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table identifying which MAC media types are + enabled for the Bridging NCPs." + ::= { pppBridge 3 } + + +pppBridgeMediaEntry OBJECT-TYPE + SYNTAX PppBridgeMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status of a specific MAC Type for a specific + PPP Link." + INDEX { ifIndex, pppBridgeMediaMacType } + ::= { pppBridgeMediaTable 1 } + + +PppBridgeMediaEntry ::= SEQUENCE { + pppBridgeMediaMacType + INTEGER, + pppBridgeMediaLocalStatus + INTEGER, + pppBridgeMediaRemoteStatus + INTEGER +} + +pppBridgeMediaMacType OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC type for which this entry in the + pppBridgeMediaTable is providing status + information. Valid values for this object are + defined in Section 6.6 MAC Type Support + Selection of RFC1220 (Bridging Point-to-Point + Protocol)." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 1 } + + +pppBridgeMediaLocalStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity will accept packets of the protocol type + identified in pppBridgeMediaMacType on the PPP + link identified by ifIndex or not. If this + object is accept then any packets of the + indicated MAC type will be received and + properly processed. If this object is dont- + accept then received packets of the indicated + MAC type will not be properly processed." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 2 } + + +pppBridgeMediaRemoteStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity believes that the remote PPP Bridging + Entity will accept packets of the protocol type + identified in pppBridgeMediaMacType on the PPP + link identified by ifIndex or not." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 3 } + + +-- +-- The PPP Bridge Media Configuration Table +-- + +pppBridgeMediaConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeMediaConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table identifying which MAC media types are + enabled for the Bridging NCPs." + ::= { pppBridge 4 } + + +pppBridgeMediaConfigEntry OBJECT-TYPE + SYNTAX PppBridgeMediaConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status of a specific MAC Type for a specific + PPP Link." + INDEX { ifIndex, pppBridgeMediaConfigMacType } + ::= { pppBridgeMediaConfigTable 1 } + + +PppBridgeMediaConfigEntry ::= SEQUENCE { + pppBridgeMediaConfigMacType + INTEGER, + pppBridgeMediaConfigLocalStatus + INTEGER +} + + +pppBridgeMediaConfigMacType OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The MAC type for which this entry in the + pppBridgeMediaConfigTable is providing status + information. Valid values for this object are + defined in Section 6.6 MAC Type Support + Selection of RFC1220 (Bridging Point-to-Point + Protocol)." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaConfigEntry 1 } + + +pppBridgeMediaConfigLocalStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity should accept packets of the protocol + type identified in pppBridgeMediaConfigMacType + on the PPP link identified by ifIndex or not. + Setting this object to the value dont-accept + has the affect of invalidating the + corresponding entry in the + pppBridgeMediaConfigTable object. 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. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaConfigEntry 2 } + + +END diff --git a/mibs/ietf/PPP-IP-NCP-MIB b/mibs/ietf/PPP-IP-NCP-MIB new file mode 100644 index 0000000..a823971 --- /dev/null +++ b/mibs/ietf/PPP-IP-NCP-MIB @@ -0,0 +1,214 @@ +PPP-IP-NCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + -- The PPP IP Group. + -- Implementation of this group is mandatory for all + -- PPP implementations that support operating IP over PPP. + + pppIp OBJECT IDENTIFIER ::= { ppp 3 } + + +pppIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppIpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the IP parameters and + statistics for the local PPP entity." + ::= { pppIp 1 } + + +pppIpEntry OBJECT-TYPE + SYNTAX PppIpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "IPCP status information for a particular PPP + link." + INDEX { ifIndex } + ::= { pppIpTable 1 } + + +PppIpEntry ::= SEQUENCE { + pppIpOperStatus + INTEGER, + pppIpLocalToRemoteCompressionProtocol + INTEGER, + pppIpRemoteToLocalCompressionProtocol + INTEGER, + pppIpRemoteMaxSlotId + INTEGER, + pppIpLocalMaxSlotId + INTEGER +} + +-- The following object reflect the values of the option +-- parameters used in the PPP IP Control Protocol +-- pppIpLocalToRemoteCompressionProtocol +-- pppIpRemoteToLocalCompressionProtocol +-- pppIpRemoteMaxSlotId +-- pppIpLocalMaxSlotId +-- These values are not available until after the PPP Option +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e., pppIpOperStatus is set to +-- opened). +-- +-- Therefore, when pppIpOperStatus is not opened +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppIpOperStatus OBJECT-TYPE + SYNTAX INTEGER {opened(1), not-opened(2)} + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The operational status of the IP network + protocol. If the value of this object is up + then the finite state machine for the IP + network protocol has reached the Opened state." + ::= { pppIpEntry 1 } + + +pppIpLocalToRemoteCompressionProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP compression protocol that the local + PPP-IP entity uses when sending packets to the + remote PPP-IP entity. The value of this object + is meaningful only when the link has reached + the open state (pppIpOperStatus is opened)." + ::= { pppIpEntry 2 } + + +pppIpRemoteToLocalCompressionProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP compression protocol that the remote + PPP-IP entity uses when sending packets to the + local PPP-IP entity. The value of this object + is meaningful only when the link has reached + the open state (pppIpOperStatus is opened)." + ::= { pppIpEntry 3 } + + +pppIpRemoteMaxSlotId OBJECT-TYPE + SYNTAX INTEGER(0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Max-Slot-Id parameter that the remote node + has advertised and that is in use on the link. + If vj-tcp header compression is not in use on + the link then the value of this object shall be + 0. The value of this object is meaningful only + when the link has reached the open state + (pppIpOperStatus is opened)." + ::= { pppIpEntry 4 } + + +pppIpLocalMaxSlotId OBJECT-TYPE + SYNTAX INTEGER(0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Max-Slot-Id parameter that the local node + has advertised and that is in use on the link. + If vj-tcp header compression is not in use on + the link then the value of this object shall be + 0. The value of this object is meaningful only + when the link has reached the open state + (pppIpOperStatus is opened)." + ::= { pppIpEntry 5 } + + +-- +-- The PPP IP Configuration table. +-- This is a separate table in order to facilitate +-- placing these variables in a separate MIB view. +-- + +pppIpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppIpConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing configuration variables for + the IPCP for the local PPP entity." + ::= { pppIp 2 } + + +pppIpConfigEntry OBJECT-TYPE + SYNTAX PppIpConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "IPCP information for a particular PPP link." + INDEX { ifIndex } + ::= { pppIpConfigTable 1 } + + +PppIpConfigEntry ::= SEQUENCE { + pppIpConfigAdminStatus + INTEGER, + pppIpConfigCompression + INTEGER +} + +pppIpConfigAdminStatus OBJECT-TYPE + SYNTAX INTEGER {open(1), close(2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The immediate desired status of the IP network + protocol. Setting this object to open will + inject an administrative open event into the IP + network protocol's finite state machine. + Setting this object to close will inject an + administrative close event into the IP network + protocol's finite state machine." + ::= { pppIpConfigEntry 1 } + + +pppIpConfigCompression OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If none(1) then the local node will not + attempt to negotiate any IP Compression option. + Otherwise, the local node will attempt to + negotiate compression mode indicated by the + enumerated value. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 4.0, Van Jacobson TCP/IP Header + Compression of RFC1332." + DEFVAL { none } + ::= { pppIpConfigEntry 2 } + + +END diff --git a/mibs/ietf/PPP-LCP-MIB b/mibs/ietf/PPP-LCP-MIB new file mode 100644 index 0000000..6e22c38 --- /dev/null +++ b/mibs/ietf/PPP-LCP-MIB @@ -0,0 +1,798 @@ +PPP-LCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex, transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + + -- PPP MIB + + ppp OBJECT IDENTIFIER ::= { transmission 23 } + + pppLcp OBJECT IDENTIFIER ::= { ppp 1 } + + -- The individual groups within the PPP-LCP-MIB + + pppLink OBJECT IDENTIFIER ::= { pppLcp 1 } + pppLqr OBJECT IDENTIFIER ::= { pppLcp 2 } + pppTests OBJECT IDENTIFIER ::= { pppLcp 3 } + + +-- 4.1. PPP Link Group + + +-- +-- The PPP Link Group. Implementation of this +-- group is mandatory for all PPP entities. +-- + +-- The following object reflect the values of the option +-- parameters used in the PPP Link Control Protocol +-- pppLinkStatusLocalMRU +-- pppLinkStatusRemoteMRU +-- pppLinkStatusLocalToPeerACCMap +-- pppLinkStatusPeerToLocalACCMap +-- pppLinkStatusLocalToRemoteProtocolCompression +-- pppLinkStatusRemoteToLocalProtocolCompression +-- pppLinkStatusLocalToRemoteACCompression +-- pppLinkStatusRemoteToLocalACCompression +-- pppLinkStatusTransmitFcsSize +-- pppLinkStatusReceiveFcsSize +-- +-- These values are not available until after the PPP Option +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e., ifOperStatus is set to +-- up). +-- +-- Therefore, when ifOperStatus is not up +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppLinkStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLinkStatusEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing PPP-link specific variables + for this PPP implementation." + ::= { pppLink 1 } + +pppLinkStatusEntry OBJECT-TYPE + SYNTAX PppLinkStatusEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Management information about a particular PPP + Link." + INDEX { ifIndex } + ::= { pppLinkStatusTable 1 } + + +PppLinkStatusEntry ::= SEQUENCE { + pppLinkStatusPhysicalIndex + INTEGER, + pppLinkStatusBadAddresses + Counter, + pppLinkStatusBadControls + Counter, + pppLinkStatusPacketTooLongs + Counter, + pppLinkStatusBadFCSs + Counter, + pppLinkStatusLocalMRU + INTEGER, + pppLinkStatusRemoteMRU + INTEGER, + pppLinkStatusLocalToPeerACCMap + OCTET STRING, + pppLinkStatusPeerToLocalACCMap + OCTET STRING, + pppLinkStatusLocalToRemoteProtocolCompression + INTEGER, + pppLinkStatusRemoteToLocalProtocolCompression + INTEGER, + pppLinkStatusLocalToRemoteACCompression + INTEGER, + pppLinkStatusRemoteToLocalACCompression + INTEGER, + pppLinkStatusTransmitFcsSize + INTEGER, + pppLinkStatusReceiveFcsSize + INTEGER + } +pppLinkStatusPhysicalIndex OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of ifIndex that identifies the + lower-level interface over which this PPP Link + is operating. This interface would usually be + an HDLC or RS-232 type of interface. If there + is no lower-layer interface element, or there + is no ifEntry for the element, or the element + can not be identified, then the value of this + object is 0. For example, suppose that PPP is + operating over a serial port. This would use + two entries in the ifTable. The PPP could be + running over `interface' number 123 and the + serial port could be running over `interface' + number 987. Therefore, ifSpecific.123 would + contain the OBJECT IDENTIFIER ppp + pppLinkStatusPhysicalIndex.123 would contain + 987, and ifSpecific.987 would contain the + OBJECT IDENTIFIER for the serial-port's media- + specific MIB." + ::= { pppLinkStatusEntry 1 } + + +pppLinkStatusBadAddresses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received with an + incorrect Address Field. This counter is a + component of the ifInErrors variable that is + associated with the interface that represents + this PPP Link." + REFERENCE + "Section 3.1, Address Field, of RFC1331." + ::= { pppLinkStatusEntry 2 } + + +pppLinkStatusBadControls OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received on this link + with an incorrect Control Field. This counter + is a component of the ifInErrors variable that + is associated with the interface that + represents this PPP Link." + REFERENCE + "Section 3.1, Control Field, of RFC1331." + ::= { pppLinkStatusEntry 3 } + + +pppLinkStatusPacketTooLongs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of received packets that have been + discarded because their length exceeded the + MRU. This counter is a component of the + ifInErrors variable that is associated with the + interface that represents this PPP Link. NOTE, + packets which are longer than the MRU but which + are successfully received and processed are NOT + included in this count." + ::= { pppLinkStatusEntry 4 } + + +pppLinkStatusBadFCSs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of received packets that have been + discarded due to having an incorrect FCS. This + counter is a component of the ifInErrors + variable that is associated with the interface + that represents this PPP Link." + ::= { pppLinkStatusEntry 5 } + + +pppLinkStatusLocalMRU OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the MRU for the local PPP + Entity. This value is the MRU that the remote + entity is using when sending packets to the + local PPP entity. The value of this object is + meaningful only when the link has reached the + open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 6 } + + +pppLinkStatusRemoteMRU OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the MRU for the remote + PPP Entity. This value is the MRU that the + local entity is using when sending packets to + the remote PPP entity. The value of this object + is meaningful only when the link has reached + the open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 7 } + + +pppLinkStatusLocalToPeerACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the ACC Map used for + sending packets from the local PPP entity to + the remote PPP entity. The value of this object + is meaningful only when the link has reached + the open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 8 } + + +pppLinkStatusPeerToLocalACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ACC Map used by the remote PPP entity when + transmitting packets to the local PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 9 } + + +pppLinkStatusLocalToRemoteProtocolCompression + OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP entity will + use Protocol Compression when transmitting + packets to the remote PPP entity. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 10 } + + +pppLinkStatusRemoteToLocalProtocolCompression + OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote PPP entity will + use Protocol Compression when transmitting + packets to the local PPP entity. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 11 } + + +pppLinkStatusLocalToRemoteACCompression OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP entity will + use Address and Control Compression when + transmitting packets to the remote PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 12 } + + +pppLinkStatusRemoteToLocalACCompression OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote PPP entity will + use Address and Control Compression when + transmitting packets to the local PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 13 } + + +pppLinkStatusTransmitFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the Frame Check Sequence (FCS) in + bits that the local node will generate when + sending packets to the remote node. The value + of this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 14 } + + +pppLinkStatusReceiveFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the Frame Check Sequence (FCS) in + bits that the remote node will generate when + sending packets to the local node. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 15 } + + +pppLinkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLinkConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing the LCP configuration + parameters for this PPP Link. These variables + represent the initial configuration of the PPP + Link. The actual values of the parameters may + be changed when the link is brought up via the + LCP options negotiation mechanism." + ::= { pppLink 2 } + + +pppLinkConfigEntry OBJECT-TYPE + SYNTAX PppLinkConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configuration information about a particular + PPP Link." + INDEX { ifIndex } + ::= { pppLinkConfigTable 1 } + + +PppLinkConfigEntry ::= SEQUENCE { + pppLinkConfigInitialMRU + INTEGER, + pppLinkConfigReceiveACCMap + OCTET STRING, + pppLinkConfigTransmitACCMap + OCTET STRING, + pppLinkConfigMagicNumber + INTEGER, + pppLinkConfigFcsSize + INTEGER + } + +pppLinkConfigInitialMRU OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The initial Maximum Receive Unit (MRU) that + the local PPP entity will advertise to the + remote entity. If the value of this variable is + 0 then the local PPP entity will not advertise + any MRU to the remote entity and the default + MRU will be assumed. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 7.2, Maximum Receive Unit of RFC1331." + DEFVAL { 1500 } + ::= { pppLinkConfigEntry 1 } + +pppLinkConfigReceiveACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Asynchronous-Control-Character-Map (ACC) + that the local PPP entity requires for use on + its receive side. In effect, this is the ACC + Map that is required in order to ensure that + the local modem will successfully receive all + characters. The actual ACC map used on the + receive side of the link will be a combination + of the local node's pppLinkConfigReceiveACCMap + and the remote node's + pppLinkConfigTransmitACCMap. Changing this + object will have effect when the link is next + restarted." + REFERENCE + "Section 7.3, page 4, Async-Control-Character- + Map of RFC1331." + DEFVAL { 'ffffffff'h } + ::= { pppLinkConfigEntry 2 } + + +pppLinkConfigTransmitACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Asynchronous-Control-Character-Map (ACC) + that the local PPP entity requires for use on + its transmit side. In effect, this is the ACC + Map that is required in order to ensure that + all characters can be successfully transmitted + through the local modem. The actual ACC map + used on the transmit side of the link will be a + combination of the local node's + pppLinkConfigTransmitACCMap and the remote + node's pppLinkConfigReceiveACCMap. Changing + this object will have effect when the link is + next restarted." + REFERENCE + "Section 7.3, page 4, Async-Control-Character- + Map of RFC1331." + DEFVAL { 'ffffffff'h } + ::= { pppLinkConfigEntry 3 } + +pppLinkConfigMagicNumber OBJECT-TYPE + SYNTAX INTEGER {false (1), true (2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If true(2) then the local node will attempt to + perform Magic Number negotiation with the + remote node. If false(1) then this negotiation + is not performed. In any event, the local node + will comply with any magic number negotiations + attempted by the remote node, per the PPP + specification. Changing this object will have + effect when the link is next restarted." + REFERENCE + "Section 7.6, Magic Number, of RFC1331." + DEFVAL { false } + ::= { pppLinkConfigEntry 4 } + + +pppLinkConfigFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The size of the FCS, in bits, the local node + will attempt to negotiate for use with the + remote node. Regardless of the value of this + object, the local node will comply with any FCS + size negotiations initiated by the remote node, + per the PPP specification. Changing this object + will have effect when the link is next + restarted." + DEFVAL { 16 } + ::= { pppLinkConfigEntry 5 } + + +-- 4.2. PPP LQR Group + + + -- + -- The PPP LQR Group. + -- Implementation of this group is mandatory for all + -- PPP implementations that implement LQR. + -- + +pppLqrTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the LQR parameters and + statistics for the local PPP entity." + ::= { pppLqr 1 } + + +pppLqrEntry OBJECT-TYPE + SYNTAX PppLqrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "LQR information for a particular PPP link. A + PPP link will have an entry in this table if + and only if LQR Quality Monitoring has been + successfully negotiated for said link." + INDEX { ifIndex } + ::= { pppLqrTable 1 } + + +PppLqrEntry ::= SEQUENCE { + pppLqrQuality + INTEGER, + pppLqrInGoodOctets + Counter, + pppLqrLocalPeriod + INTEGER, + pppLqrRemotePeriod + INTEGER, + pppLqrOutLQRs + Counter, + pppLqrInLQRs + Counter +} + +pppLqrQuality OBJECT-TYPE + SYNTAX INTEGER { + good(1), + bad(2), + not-determined(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current quality of the link as declared by + the local PPP entity's Link-Quality Management + modules. No effort is made to define good or + bad, nor the policy used to determine it. The + not-determined value indicates that the entity + does not actually evaluate the link's quality. + This value is used to disambiguate the + `determined to be good' case from the `no + determination made and presumed to be good' + case." + ::= { pppLqrEntry 1 } + + +pppLqrInGoodOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR InGoodOctets counter for this link." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 2 } + + +pppLqrLocalPeriod OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR reporting period, in hundredths of a + second that is in effect for the local PPP + entity." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + ::= { pppLqrEntry 3 } + + +pppLqrRemotePeriod OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR reporting period, in hundredths of a + second, that is in effect for the remote PPP + entity." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + ::= { pppLqrEntry 4 } + +pppLqrOutLQRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the OutLQRs counter on the local + node for the link identified by ifIndex." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 5 } + + +pppLqrInLQRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the InLQRs counter on the local + node for the link identified by ifIndex." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 6 } + + +-- +-- The PPP LQR Configuration table. +-- + +pppLqrConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the LQR Configuration + parameters for the local PPP entity." + ::= { pppLqr 2 } + + +pppLqrConfigEntry OBJECT-TYPE + SYNTAX PppLqrConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "LQR configuration information for a particular + PPP link." + INDEX { ifIndex } + ::= { pppLqrConfigTable 1 } + +PppLqrConfigEntry ::= SEQUENCE { + pppLqrConfigPeriod + INTEGER, + pppLqrConfigStatus + INTEGER +} + +pppLqrConfigPeriod OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The LQR Reporting Period that the local PPP + entity will attempt to negotiate with the + remote entity, in units of hundredths of a + second. Changing this object will have effect + when the link is next restarted." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + DEFVAL { 0 } + ::= { pppLqrConfigEntry 1 } + + +pppLqrConfigStatus OBJECT-TYPE + SYNTAX INTEGER {disabled (1), enabled (2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If enabled(2) then the local node will attempt + to perform LQR negotiation with the remote + node. If disabled(1) then this negotiation is + not performed. In any event, the local node + will comply with any magic number negotiations + attempted by the remote node, per the PPP + specification. Changing this object will have + effect when the link is next restarted. + Setting this object to the value disabled(1) + has the effect of invalidating the + corresponding entry in the pppLqrConfigTable + object. 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." + REFERENCE + "Section 7.6, Magic Number, of RFC1331." + DEFVAL { enabled } + ::= { pppLqrConfigEntry 2 } + + +-- 4.3. PPP LQR Extensions Group + + +-- +-- The PPP LQR Extensions Group. +-- Implementation of this group is optional. +-- +-- The intent of this group is to allow external +-- implementation of the policy mechanisms that +-- are used to declare a link to be "bad" or not. +-- +-- It is not practical to examine the MIB objects +-- which are used to generate LQR packets since +-- LQR policies tend to require synchronization of +-- the values of all data used to determine Link +-- Quality; i.e. the values of the relevant counters +-- must all be taken at the same instant in time. +-- + +pppLqrExtnsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrExtnsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing additional LQR information + for the local PPP entity." + ::= { pppLqr 3 } + + +pppLqrExtnsEntry OBJECT-TYPE + SYNTAX PppLqrExtnsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Extended LQR information for a particular PPP + link. Assuming that this group has been + implemented, a PPP link will have an entry in + this table if and only if LQR Quality + Monitoring has been successfully negotiated for + said link." + INDEX { ifIndex } + ::= { pppLqrExtnsTable 1 } + +PppLqrExtnsEntry ::= SEQUENCE { + pppLqrExtnsLastReceivedLqrPacket + OCTET STRING(SIZE(68)) +} + +pppLqrExtnsLastReceivedLqrPacket OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(68)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object contains the most recently + received LQR packet. The format of the packet + is as described in the LQM Protocol + specificiation. All fields of the packet, + including the `save' fields, are stored in this + object. + + The LQR packet is stored in network byte order. + The LAP-B and PPP headers are not stored in + this object; the first four octets of this + variable contain the Magic-Number field, the + second four octets contain the LastOutLQRs + field and so on. The last four octets of this + object contain the SaveInOctets field of the + LQR packet." + REFERENCE + "Section 2.6, Packet Format, of RFC1333" + ::= { pppLqrExtnsEntry 1 } + + +-- 4.4. PPP Tests + +-- The extensions to the interface table in RFC1229 define a +-- table through which the network manager can instruct the +-- managed object to perform various tests of the interface. This +-- is the ifExtnsTestTable. + +-- The PPP MIB defines two such tests. + +-- 4.4.1. PPP Echo Test + +-- The PPP Echo Test is defined as + + pppEchoTest OBJECT IDENTIFIER ::= { pppTests 1 } + +-- Invoking this test causes a PPP Echo Packet to be sent on the +-- line. ifExtnsTestResult returns success(2) if the echo +-- response came back properly. It returns failed(7) if the +-- response did not properly return. The definition of "proper" + +-- in this context is left to the discretion of the implementor. + +-- 4.4.2. PPP Discard Test + +-- The PPP Discard Test is defined as + + pppDiscardTest OBJECT IDENTIFIER ::= { pppTests 2 } + +-- Invoking this test causes a PPP Discard Packet to be sent on +-- the line. ifExtnsTestResult returns success(2) if the discard +-- packet was successfully transmitted and failed(7) if an error +-- was detected on transmission. The definition of "transmission +-- error" in this context is left to the discretion of the +-- implementor. + +END diff --git a/mibs/ietf/PPP-SEC-MIB b/mibs/ietf/PPP-SEC-MIB new file mode 100644 index 0000000..da476b3 --- /dev/null +++ b/mibs/ietf/PPP-SEC-MIB @@ -0,0 +1,304 @@ +PPP-SEC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + pppSecurity OBJECT IDENTIFIER ::= { ppp 2 } + + pppSecurityProtocols OBJECT IDENTIFIER ::= { pppSecurity 1 } + +-- The following uniquely identify the various protocols +-- used by PPP security. These OBJECT IDENTIFIERS are +-- used in the pppSecurityConfigProtocol and +-- pppSecuritySecretsProtocol objects to identify to which +-- protocols the table entries apply. + + pppSecurityPapProtocol OBJECT IDENTIFIER ::= + { pppSecurityProtocols 1 } + pppSecurityChapMD5Protocol OBJECT IDENTIFIER ::= + { pppSecurityProtocols 2 } + +-- PPP Security Group +-- Implementation of this group is optional. + +-- This table allows the network manager to configure +-- which security protocols are to be used on which +-- link and in what order of preference each is to be tried + + +pppSecurityConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppSecurityConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the configuration and + preference parameters for PPP Security." + ::= { pppSecurity 2 } + + +pppSecurityConfigEntry OBJECT-TYPE + SYNTAX PppSecurityConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Security configuration information for a + particular PPP link." + INDEX { pppSecurityConfigLink, + pppSecurityConfigPreference } + ::= { pppSecurityConfigTable 1 } + + +PppSecurityConfigEntry ::= SEQUENCE { + pppSecurityConfigLink + INTEGER, + pppSecurityConfigPreference + INTEGER, + pppSecurityConfigProtocol + OBJECT IDENTIFIER, + pppSecurityConfigStatus + INTEGER + } + + +pppSecurityConfigLink OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of ifIndex that identifies the entry + in the interface table that is associated with + the local PPP entity's link for which this + particular security algorithm shall be + attempted. A value of 0 indicates the default + algorithm - i.e., this entry applies to all + links for which explicit entries in the table + do not exist." + ::= { pppSecurityConfigEntry 1 } + + +pppSecurityConfigPreference OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The relative preference of the security + protocol identified by + pppSecurityConfigProtocol. Security protocols + with lower values of + pppSecurityConfigPreference are tried before + protocols with higher values of + pppSecurityConfigPreference." + ::= { pppSecurityConfigEntry 2 } + + +pppSecurityConfigProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the security protocol to be + attempted on the link identified by + pppSecurityConfigLink at the preference level + identified by pppSecurityConfigPreference. " + ::= { pppSecurityConfigEntry 3 } + + +pppSecurityConfigStatus OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to the value invalid(1) + has the effect of invalidating the + corresponding entry in the + pppSecurityConfigTable. 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 pppSecurityConfigStatus object." + DEFVAL { valid } + ::= { pppSecurityConfigEntry 4 } + + +-- This table contains all of the ID/Secret pair information. + + +pppSecuritySecretsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppSecuritySecretsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the identities and secrets + used by the PPP authentication protocols. As + this table contains secret information, it is + expected that access to this table be limited + to those SNMP Party-Pairs for which a privacy + protocol is in use for all SNMP messages that + the parties exchange. This table contains both + the ID and secret pair(s) that the local PPP + entity will advertise to the remote entity and + the pair(s) that the local entity will expect + from the remote entity. This table allows for + multiple id/secret password pairs to be + specified for a particular link by using the + pppSecuritySecretsIdIndex object." + ::= { pppSecurity 3 } + + +pppSecuritySecretsEntry OBJECT-TYPE + SYNTAX PppSecuritySecretsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Secret information." + INDEX { pppSecuritySecretsLink, + pppSecuritySecretsIdIndex } + ::= { pppSecuritySecretsTable 1 } + +PppSecuritySecretsEntry ::= SEQUENCE { + pppSecuritySecretsLink + INTEGER, + pppSecuritySecretsIdIndex + INTEGER, + pppSecuritySecretsDirection + INTEGER, + pppSecuritySecretsProtocol + OBJECT IDENTIFIER, + pppSecuritySecretsIdentity + OCTET STRING, + pppSecuritySecretsSecret + OCTET STRING, + pppSecuritySecretsStatus + INTEGER +} + +pppSecuritySecretsLink OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The link to which this ID/Secret pair applies. + By convention, if the value of this object is 0 + then the ID/Secret pair applies to all links." + ::= { pppSecuritySecretsEntry 1 } + + +pppSecuritySecretsIdIndex OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each ID/Secret pair that + has been defined for use on this link. This + allows multiple ID/Secret pairs to be defined + for each link. How the local entity selects + which pair to use is a local implementation + decision." + ::= { pppSecuritySecretsEntry 2 } + + +pppSecuritySecretsDirection OBJECT-TYPE + SYNTAX INTEGER { + local-to-remote(1), + remote-to-local(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object defines the direction in which a + particular ID/Secret pair is valid. If this + object is local-to-remote then the local PPP + entity will use the ID/Secret pair when + attempting to authenticate the local PPP entity + to the remote PPP entity. If this object is + remote-to-local then the local PPP entity will + expect the ID/Secret pair to be used by the + remote PPP entity when the remote PPP entity + attempts to authenticate itself to the local + PPP entity." + ::= { pppSecuritySecretsEntry 3 } + + +pppSecuritySecretsProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The security protocol (e.g. CHAP or PAP) to + which this ID/Secret pair applies." + ::= { pppSecuritySecretsEntry 4 } + + +pppSecuritySecretsIdentity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Identity of the ID/Secret pair. The + actual format, semantics, and use of + pppSecuritySecretsIdentity depends on the + actual security protocol used. For example, if + pppSecuritySecretsProtocol is + pppSecurityPapProtocol then this object will + contain a PAP Peer-ID. If + pppSecuritySecretsProtocol is + pppSecurityChapMD5Protocol then this object + would contain the CHAP NAME parameter." + ::= { pppSecuritySecretsEntry 5 } + + +pppSecuritySecretsSecret OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The secret of the ID/Secret pair. The actual + format, semantics, and use of + pppSecuritySecretsSecret depends on the actual + security protocol used. For example, if + pppSecuritySecretsProtocol is + pppSecurityPapProtocol then this object will + contain a PAP Password. If + pppSecuritySecretsProtocol is + pppSecurityChapMD5Protocol then this object + would contain the CHAP MD5 Secret." + ::= { pppSecuritySecretsEntry 6 } + + +pppSecuritySecretsStatus OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to the value invalid(1) + has the effect of invalidating the + corresponding entry in the + pppSecuritySecretsTable. 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 pppSecuritySecretsStatus object." + DEFVAL { valid } + ::= { pppSecuritySecretsEntry 7 } + + +END diff --git a/mibs/ietf/PTOPO-MIB b/mibs/ietf/PTOPO-MIB new file mode 100644 index 0000000..def5918 --- /dev/null +++ b/mibs/ietf/PTOPO-MIB @@ -0,0 +1,839 @@ +PTOPO-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, AutonomousType, RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + + + FROM SNMPv2-CONF + TimeFilter + FROM RMON2-MIB + PhysicalIndex + FROM ENTITY-MIB + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB; + +ptopoMIB MODULE-IDENTITY + LAST-UPDATED "200009210000Z" + ORGANIZATION "IETF; PTOPOMIB Working Group" + CONTACT-INFO + "PTOPOMIB WG Discussion: + ptopo@3com.com + Subscription: + majordomo@3com.com + msg body: [un]subscribe ptopomib + + Andy Bierman + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + 408-527-3711 + abierman@cisco.com + + Kendall S. Jones + Nortel Networks + 4401 Great America Parkway + Santa Clara, CA 95054 + 408-495-7356 + kejones@nortelnetworks.com" + DESCRIPTION + "The MIB module for physical topology information." + REVISION "200009210000Z" + DESCRIPTION + "Initial Version of the Physical Topology MIB. This version + published as RFC 2922." + ::= { mib-2 79 } + +ptopoMIBObjects OBJECT IDENTIFIER ::= { ptopoMIB 1 } + + +-- MIB groups +ptopoData OBJECT IDENTIFIER ::= { ptopoMIBObjects 1 } +ptopoGeneral OBJECT IDENTIFIER ::= { ptopoMIBObjects 2 } +ptopoConfig OBJECT IDENTIFIER ::= { ptopoMIBObjects 3 } + +-- textual conventions + + +PtopoGenAddr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of an address." + SYNTAX OCTET STRING (SIZE (0..20)) + +PtopoChassisIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a chassis identifier. + + The enumeration 'chasIdEntPhysicalAlias(1)' represents a + chassis identifier based on the value of entPhysicalAlias + for a chassis component (i.e., an entPhysicalClass value of + 'chassis(3)'). + + The enumeration 'chasIdIfAlias(2)' represents a chassis + identifier based on the value of ifAlias for an interface + on the containing chassis. + + The enumeration 'chasIdPortEntPhysicalAlias(3)' represents + a chassis identifier based on the value of entPhysicalAlias + for a port or backplane component (i.e., entPhysicalClass + value of 'port(10)' or 'backplane(4)'), within the + containing chassis. + + The enumeration 'chasIdMacAddress(4)' represents a chassis + identifier based on the value of a unicast source MAC + address (encoded in network byte order and IEEE 802.3 + canonical bit order), of a port on the containing chassis. + + The enumeration 'chasIdPtopoGenAddr(5)' represents a + chassis identifier based on a network address, associated + with a particular chassis. The encoded address is actually + composed of two fields. The first field is a single octet, + representing the IANA AddressFamilyNumbers value for the + specific address type, and the second field is the + PtopoGenAddr address value." + SYNTAX INTEGER { + chasIdEntPhysicalAlias(1), + chasIdIfAlias(2), + chasIdPortEntPhysicalAlias(3), + chasIdMacAddress(4), + chasIdPtopoGenAddr(5) + } + +PtopoChassisId ::= TEXTUAL-CONVENTION + STATUS current + + + DESCRIPTION + "This TC describes the format of a chassis identifier + string. Objects of this type are always used with an + associated PtopoChassisIdType object, which identifies the + format of the particular PtopoChassisId object instance. + + If the associated PtopoChassisIdType object has a value of + 'chasIdEntPhysicalAlias(1)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a chassis component (i.e., an entPhysicalClass + value of 'chassis(3)'). + + If the associated PtopoChassisIdType object has a value of + 'chasIdIfAlias(2)', then the octet string identifies a + particular instance of the ifAlias object for an interface + on the containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdPortEntPhysicalAlias(3)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a port or backplane component within the + containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdMacAddress(4)', then this string identifies a + particular unicast source MAC address (encoded in network + byte order and IEEE 802.3 canonical bit order), of a port on + the containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdPtopoGenAddr(5)', then this string identifies a + particular network address, encoded in network byte order, + associated with one or more ports on the containing chassis. + The first octet contains the IANA Address Family Numbers + enumeration value for the specific address type, and octets + 2 through N contain the PtopoGenAddr address value in + network byte order." + SYNTAX OCTET STRING (SIZE (1..32)) + +PtopoPortIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a particular type of port + identifier used in the PTOPO MIB. + + The enumeration 'portIdIfAlias(1)' represents a port + identifier based on the ifAlias MIB object. + + + + The enumeration 'portIdPortEntPhysicalAlias(2)' represents a + port identifier based on the value of entPhysicalAlias for a + port or backplane component (i.e., entPhysicalClass value of + 'port(10)' or 'backplane(4)'), within the containing + chassis. + + The enumeration 'portIdMacAddr(3)' represents a port + identifier based on a unicast source MAC address, which has + been detected by the agent and associated with a particular + port. + + The enumeration 'portIdPtopoGenAddr(4)' represents a port + identifier based on a network address, detected by the agent + and associated with a particular port." + SYNTAX INTEGER { + portIdIfAlias(1), + portIdEntPhysicalAlias(2), + portIdMacAddr(3), + portIdPtopoGenAddr(4) + } + +PtopoPortId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the format of a port identifier string. + Objects of this type are always used with an associated + PtopoPortIdType object, which identifies the format of the + particular PtopoPortId object instance. + + If the associated PtopoPortIdType object has a value of + 'portIdIfAlias(1)', then the octet string identifies a + particular instance of the ifAlias object. + + If the associated PtopoPortIdType object has a value of + 'portIdEntPhysicalAlias(2)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a port component (i.e., entPhysicalClass value of + 'port(10)'). + + If the associated PtopoPortIdType object has a value of + 'portIdMacAddr(3)', then this string identifies a particular + unicast source MAC address associated with the port. + + If the associated PtopoPortIdType object has a value of + 'portIdPtopoGenAddr(4)', then this string identifies a + network address associated with the port. The first octet + contains the IANA AddressFamilyNumbers enumeration value for + the specific address type, and octets 2 through N contain + + + the PtopoGenAddr address value in network byte order." + SYNTAX OCTET STRING (SIZE (1..32)) + + +PtopoAddrSeenState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the state of address detection for a + particular type of port identifier used in the PTOPO MIB. + + The enumeration 'notUsed(1)' represents an entry for which + the particular MIB object is not applicable to the remote + connection endpoint, + + The enumeration 'unknown(2)' represents an entry for which + the particular address collection state is not known. + + The enumeration 'oneAddr(3)' represents an entry for which + exactly one source address (of the type indicated by the + particular MIB object), has been detected. + + The enumeration 'multiAddr(4)' represents an entry for + which more than one source address (of the type indicated by + the particular MIB object), has been detected. + + An agent is expected to set the initial state of the + PtopoAddrSeenState to 'notUsed(1)' or 'unknown(2)'. + + Note that the PTOPO MIB does not restrict or specify the + means in which the PtopoAddrSeenState is known to an agent. + In particular, an agent may detect this information through + configuration data, or some means other than directly + monitoring all port traffic." + SYNTAX INTEGER { + notUsed(1), + unknown(2), + oneAddr(3), + multiAddr(4) + } + +-- *********************************************************** +-- +-- P T O P O D A T A G R O U P +-- +-- *********************************************************** + +-- Connection Table + + + +ptopoConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF PtopoConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per physical network + connection known to this agent. The agent may wish to + ensure that only one ptopoConnEntry is present for each + local port, or it may choose to maintain multiple + ptopoConnEntries for the same local port. + + Entries based on lower numbered identifier types are + preferred over higher numbered identifier types, i.e., lower + values of the ptopoConnRemoteChassisType and + ptopoConnRemotePortType objects." + ::= { ptopoData 1 } + +ptopoConnEntry OBJECT-TYPE + SYNTAX PtopoConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical network connection. + Entries may be created and deleted in this table, either + manually or by the agent, if a physical topology discovery + process is active." + INDEX { + ptopoConnTimeMark, + ptopoConnLocalChassis, + ptopoConnLocalPort, + ptopoConnIndex + } + ::= { ptopoConnTable 1 } + +PtopoConnEntry ::= SEQUENCE { + ptopoConnTimeMark TimeFilter, + ptopoConnLocalChassis PhysicalIndex, + ptopoConnLocalPort PhysicalIndex, + ptopoConnIndex Integer32, + ptopoConnRemoteChassisType PtopoChassisIdType, + ptopoConnRemoteChassis PtopoChassisId, + ptopoConnRemotePortType PtopoPortIdType, + ptopoConnRemotePort PtopoPortId, + ptopoConnDiscAlgorithm AutonomousType, + ptopoConnAgentNetAddrType AddressFamilyNumbers, + ptopoConnAgentNetAddr PtopoGenAddr, + ptopoConnMultiMacSASeen PtopoAddrSeenState, + ptopoConnMultiNetSASeen PtopoAddrSeenState, + + + ptopoConnIsStatic TruthValue, + ptopoConnLastVerifyTime TimeStamp, + ptopoConnRowStatus RowStatus +} + +ptopoConnTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention in RFC 2021 to see how this works." + ::= { ptopoConnEntry 1 } + +ptopoConnLocalChassis OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entPhysicalIndex value used to identify the chassis + component associated with the local connection endpoint." + ::= { ptopoConnEntry 2 } + +ptopoConnLocalPort OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entPhysicalIndex value used to identify the port + component associated with the local connection endpoint." + ::= { ptopoConnEntry 3 } + +ptopoConnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary local integer value + used by this agent to identify a particular connection + instance, unique only for the indicated local connection + endpoint. + + A particular ptopoConnIndex value may be reused in the event + an entry is aged out and later re-learned with the same (or + different) remote chassis and port identifiers. + + An agent is encouraged to assign monotonically increasing + index values to new entries, starting with one, after each + + + reboot. It is considered unlikely that the ptopoConnIndex + will wrap between reboots." + ::= { ptopoConnEntry 4 } + +ptopoConnRemoteChassisType OBJECT-TYPE + SYNTAX PtopoChassisIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of encoding used to identify the chassis + associated with the remote connection endpoint. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 5 } + +ptopoConnRemoteChassis OBJECT-TYPE + SYNTAX PtopoChassisId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value used to identify the chassis component + associated with the remote connection endpoint. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 6 } + +ptopoConnRemotePortType OBJECT-TYPE + SYNTAX PtopoPortIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of port identifier encoding used in the associated + 'ptopoConnRemotePort' object. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 7 } + +ptopoConnRemotePort OBJECT-TYPE + SYNTAX PtopoPortId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value used to identify the port component + associated with the remote connection endpoint. + + + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 8 } + +ptopoConnDiscAlgorithm OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the algorithm used to discover the + information contained in this conceptual row. + + A value of ptopoDiscoveryLocal indicates this entry was + configured by the local agent, without use of a discovery + protocol. + + A value of { 0 0 } indicates this entry was created manually + by an NMS via the associated RowStatus object. " + ::= { ptopoConnEntry 9 } + +ptopoConnAgentNetAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This network address type of the associated + ptopoConnNetAddr object, unless that object contains a zero + length string. In such a case, an NMS application should + ignore any returned value for this object. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 10 } + +ptopoConnAgentNetAddr OBJECT-TYPE + SYNTAX PtopoGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies a network address which may be used + to reach an SNMP agent entity containing information for the + chassis and port components represented by the associated + 'ptopoConnRemoteChassis' and 'ptopoConnRemotePort' objects. + If no such address is known, then this object shall contain + an empty string. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + + + ::= { ptopoConnEntry 11 } + +ptopoConnMultiMacSASeen OBJECT-TYPE + SYNTAX PtopoAddrSeenState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if multiple unicast source MAC + addresses have been detected by the agent from the remote + connection endpoint, since the creation of this entry. + + If this entry has an associated ptopoConnRemoteChassisType + and/or ptopoConnRemotePortType value other than + 'portIdMacAddr(3)', then the value 'notUsed(1)' is returned. + + Otherwise, one of the following conditions must be true: + + If the agent has not yet detected any unicast source MAC + addresses from the remote port, then the value 'unknown(2)' + is returned. + + If the agent has detected exactly one unicast source MAC + address from the remote port, then the value 'oneAddr(3)' is + returned. + + If the agent has detected more than one unicast source MAC + address from the remote port, then the value 'multiAddr(4)' + is returned." + ::= { ptopoConnEntry 12 } + +ptopoConnMultiNetSASeen OBJECT-TYPE + SYNTAX PtopoAddrSeenState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if multiple network layer source + addresses have been detected by the agent from the remote + connection endpoint, since the creation of this entry. + + If this entry has an associated ptopoConnRemoteChassisType + or ptopoConnRemotePortType value other than + 'portIdGenAddr(4)' then the value 'notUsed(1)' is returned. + + Otherwise, one of the following conditions must be true: + + If the agent has not yet detected any network source + addresses of the appropriate type from the remote port, then + the value 'unknown(2)' is returned. + + + If the agent has detected exactly one network source address + of the appropriate type from the remote port, then the value + 'oneAddr(3)' is returned. + + If the agent has detected more than one network source + address (of the same appropriate type) from the remote port, + this the value 'multiAddr(4)' is returned." + ::= { ptopoConnEntry 13 } + +ptopoConnIsStatic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies static ptopoConnEntries. If this + object has the value 'true(1)', then this entry is not + subject to any age-out mechanisms implemented by the agent. + + If this object has the value 'false(2)', then this entry is + subject to all age-out mechanisms implemented by the agent. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + DEFVAL { false } + ::= { ptopoConnEntry 14 } + +ptopoConnLastVerifyTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the associated value of ptopoConnIsStatic is equal to + 'false(2)', then this object contains the value of sysUpTime + at the time the conceptual row was last verified by the + agent, e.g., via reception of a topology protocol message, + pertaining to the associated remote chassis and port. + + If the associated value of ptopoConnIsStatic is equal to + 'true(1)', then this object shall contain the value of + sysUpTime at the time this entry was last activated (i.e., + ptopoConnRowStatus set to 'active(1)')." + ::= { ptopoConnEntry 15 } + +ptopoConnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The status of this conceptual row." + ::= { ptopoConnEntry 16 } + +-- *********************************************************** +-- +-- P T O P O G E N E R A L G R O U P +-- +-- *********************************************************** + +-- last change time stamp for the whole MIB + +ptopoLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time a conceptual row is + created, modified, or deleted in the ptopoConnTable. + + An NMS can use this object to reduce polling of the + ptopoData group objects." + ::= { ptopoGeneral 1 } + +ptopoConnTabInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an entry has been inserted into the + ptopoConnTable." + ::= { ptopoGeneral 2 } + +ptopoConnTabDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of times an entry has been deleted from the + ptopoConnTable." + ::= { ptopoGeneral 3 } + +ptopoConnTabDrops OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The number of times an entry would have been added to the + ptopoConnTable, (e.g., via information learned from a + topology protocol), but was not because of insufficient + resources." + ::= { ptopoGeneral 4 } + +ptopoConnTabAgeouts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an entry has been deleted from the + ptopoConnTable because the information timeliness interval + for that entry has expired." + ::= { ptopoGeneral 5 } + +-- *********************************************************** +-- +-- P T O P O C O N F I G G R O U P +-- +-- *********************************************************** + +ptopoConfigTrapInterval OBJECT-TYPE + SYNTAX Integer32 (0 | 5..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the transmission of PTOPO + notifications. + + If this object has a value of zero, then no + ptopoConfigChange notifications will be transmitted by the + agent. + + If this object has a non-zero value, then the agent must not + generate more than one ptopoConfigChange trap-event in the + indicated period, where a 'trap-event' is the transmission + of a single notification PDU type to a list of notification + destinations. If additional configuration changes occur + within the indicated throttling period, then these trap- + events must be suppressed by the agent. An NMS should + periodically check the value of ptopoLastChangeTime to + detect any missed ptopoConfigChange trap-events, e.g. due to + throttling or transmission loss. + + + + If notification transmission is enabled, the suggested + default throttling period is 60 seconds, but transmission + should be disabled by default. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 0 } + ::= { ptopoConfig 1 } + +ptopoConfigMaxHoldTime OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the desired time interval for which + an agent will maintain dynamic ptopoConnEntries. + + After the specified number of seconds since the last time an + entry was verified, in the absence of new verification + (e.g., receipt of a topology protocol message), the agent + shall remove the entry. Note that entries may not always be + removed immediately, but may possibly be removed at periodic + garbage collection intervals. + This object only affects dynamic ptopoConnEntries, i.e. for + which ptopoConnIsStatic equals 'false(2)'. Static entries + are not aged out. + + Note that dynamic ptopoConnEntries may also be removed by + the agent due to the expired timeliness of learned topology + information (e.g., timeliness interval for a remote port + expires). The actual age-out interval for a given entry is + defined by the following formula: + + age-out-time = + min(ptopoConfigMaxHoldTime, ) + + where is determined by the + discovery algorithm, and may be different for each entry." + DEFVAL { 300 } + ::= { ptopoConfig 2 } + + +-- PTOPO MIB Notification Definitions +ptopoMIBNotifications OBJECT IDENTIFIER ::= { ptopoMIB 2 } +ptopoMIBTrapPrefix OBJECT IDENTIFIER ::= + + + { ptopoMIBNotifications 0 } + +ptopoConfigChange NOTIFICATION-TYPE + OBJECTS { + ptopoConnTabInserts, + ptopoConnTabDeletes, + ptopoConnTabDrops, + ptopoConnTabAgeouts + } + STATUS current + DESCRIPTION + "A ptopoConfigChange notification is sent when the value of + ptopoLastChangeTime changes. It can be utilized by an NMS to + trigger physical topology table maintenance polls. + + Note that transmission of ptopoConfigChange notifications + are throttled by the agent, as specified by the + 'ptopoConfigTrapInterval' object." + ::= { ptopoMIBTrapPrefix 1 } + + +-- PTOPO Registration Points +ptopoRegistrationPoints OBJECT IDENTIFIER ::= { ptopoMIB 3 } + +-- values used with ptopoConnDiscAlgorithm object +ptopoDiscoveryMechanisms OBJECT IDENTIFIER ::= + { ptopoRegistrationPoints 1 } + +ptopoDiscoveryLocal OBJECT IDENTIFIER ::= + { ptopoDiscoveryMechanisms 1 } + + +-- conformance information +ptopoConformance OBJECT IDENTIFIER ::= { ptopoMIB 4 } + +ptopoCompliances OBJECT IDENTIFIER ::= { ptopoConformance 1 } +ptopoGroups OBJECT IDENTIFIER ::= { ptopoConformance 2 } + + +-- compliance statements +ptopoCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the PTOPO MIB." + MODULE -- this module + MANDATORY-GROUPS { + ptopoDataGroup, + + + ptopoGeneralGroup, + ptopoConfigGroup, + ptopoNotificationsGroup + } + ::= { ptopoCompliances 1 } + +-- MIB groupings +ptopoDataGroup OBJECT-GROUP + OBJECTS { + ptopoConnRemoteChassisType, + ptopoConnRemoteChassis, + ptopoConnRemotePortType, + ptopoConnRemotePort, + ptopoConnDiscAlgorithm, + ptopoConnAgentNetAddrType, + ptopoConnAgentNetAddr, + ptopoConnMultiMacSASeen, + ptopoConnMultiNetSASeen, + ptopoConnIsStatic, + ptopoConnLastVerifyTime, + ptopoConnRowStatus + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent + physical topology information for which a single agent + provides management information. + + This group is mandatory for all implementations of the PTOPO + MIB." + ::= { ptopoGroups 1 } + +ptopoGeneralGroup OBJECT-GROUP + OBJECTS { + ptopoLastChangeTime, + ptopoConnTabInserts, + ptopoConnTabDeletes, + ptopoConnTabDrops, + ptopoConnTabAgeouts + } + STATUS current + DESCRIPTION + "The collection of objects which are used to report the + general status of the PTOPO MIB implementation. + + This group is mandatory for all agents which implement the + PTOPO MIB." + ::= { ptopoGroups 2 } + + +ptopoConfigGroup OBJECT-GROUP + OBJECTS { + ptopoConfigTrapInterval, + ptopoConfigMaxHoldTime + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + PTOPO MIB implementation behavior. + + This group is mandatory for agents which implement the PTOPO + MIB." + ::= { ptopoGroups 3 } + +ptopoNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ptopoConfigChange + } + STATUS current + DESCRIPTION + "The collection of notifications used to indicate PTOPO MIB + data consistency and general status information. + + This group is mandatory for agents which implement the PTOPO + MIB." + ::= { ptopoGroups 4 } + +END diff --git a/mibs/ietf/PerfHist-TC-MIB b/mibs/ietf/PerfHist-TC-MIB new file mode 100644 index 0000000..2ba6732 --- /dev/null +++ b/mibs/ietf/PerfHist-TC-MIB @@ -0,0 +1,191 @@ +PerfHist-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Gauge32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +perfHistTCMIB MODULE-IDENTITY + LAST-UPDATED "200308130000Z" + ORGANIZATION "IETF AToM MIB WG" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Kaj Tesink + Postal: Telcordia Technologies + 331 Newman Springs Road + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + E-mail: kaj@research.telcordia.com" + + DESCRIPTION + "This MIB Module provides Textual Conventions + to be used by systems supporting 15 minute + based performance history counts. + + Copyright (C) The Internet Society (2003). + This version of this MIB module is part of + RFC 3593; see the RFC itself for full + legal notices." + REVISION "200308130000Z" + DESCRIPTION + "Contact information and references updated. + No technical changes have been applied. + Published as RFC 3593." + REVISION "199811071100Z" + DESCRIPTION + "The RFC 2493 version of this MIB module." + ::= { mib-2 58 } + + + +-- The Textual Conventions defined below are organized +-- alphabetically + +-- Use of these TCs assumes the following: +-- 0 The agent supports 15 minute based history +-- counters. +-- 0 The agent is capable of keeping a history of n +-- intervals of 15 minute performance data. The +-- value of n is defined by the specific MIB +-- module but shall be 0 < n =< 96. +-- 0 The agent may optionally support performance +-- data aggregating the history intervals. +-- 0 The agent will keep separate tables for the +-- current interval, the history intervals, and +-- the total aggregates. +-- 0 The agent will keep the following objects. +-- If performance data is kept for multiple instances +-- of a measured entity, then +-- these objects are applied to each instance of +-- the measured entity (e.g., interfaces). +-- +-- xyzTimeElapsed OBJECT-TYPE +-- SYNTAX INTEGER (0..899) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of seconds that have elapsed since +-- the beginning of the current measurement period. +-- If, for some reason, such as an adjustment in the +-- system's time-of-day clock, the current interval +-- exceeds the maximum value, the agent will return +-- the maximum value." +-- ::= { xxx } + +-- xyzValidIntervals OBJECT-TYPE +-- SYNTAX INTEGER (0..) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of previous near end intervals +-- for which data was collected. +-- [ The overall constraint on is 1 =< n =< 96; ] +-- [ Define any additional constraints on here. ] +-- The value will be unless the measurement was +-- (re-)started within the last (*15) minutes, in which +-- case the value will be the number of complete 15 +-- minute intervals for which the agent has at least +-- some data. In certain cases (e.g., in the case + + + +-- where the agent is a proxy) it is possible that some +-- intervals are unavailable. In this case, this +-- interval is the maximum interval number for +-- which data is available." +-- ::= { xxx } + +-- xyzInvalidIntervals OBJECT-TYPE +-- SYNTAX INTEGER (0..) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of intervals in the range from +-- 0 to xyzValidIntervals for which no +-- data is available. This object will typically +-- be zero except in cases where the data for some +-- intervals are not available (e.g., in proxy +-- situations)." +-- ::= { xxx } + +PerfCurrentCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurement in a current 15 + minute measurement interval. The value + of this counter starts from zero and is + increased when associated events occur, + until the end of the 15 minute interval. + At that time the value of the counter is + stored in the first 15 minute history + interval, and the CurrentCount is + restarted at zero. In the + case where the agent has no valid data + available for the current interval the + corresponding object instance is not + available and upon a retrieval request + a corresponding error message shall be + returned to indicate that this instance + does not exist (for example, a noSuchName + error for SNMPv1 and a noSuchInstance for + SNMPv2 GET operation)." + SYNTAX Gauge32 + + + + + + + + + +PerfIntervalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurement in a previous + 15 minute measurement interval. In the + case where the agent has no valid data + available for a particular interval the + corresponding object instance is not + available and upon a retrieval request + a corresponding error message shall be + returned to indicate that this instance + does not exist (for example, a noSuchName + error for SNMPv1 and a noSuchInstance for + SNMPv2 GET operation). + In a system supporting + a history of n intervals with + IntervalCount(1) and IntervalCount(n) the + most and least recent intervals + respectively, the following applies at + the end of a 15 minute interval: + - discard the value of IntervalCount(n) + - the value of IntervalCount(i) becomes that + of IntervalCount(i-1) for n >= i > 1 + - the value of IntervalCount(1) becomes that + of CurrentCount + - the TotalCount, if supported, is adjusted." + SYNTAX Gauge32 + +PerfTotalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurements aggregating the + previous valid 15 minute measurement + intervals. (Intervals for which no valid + data was available are not counted)" + SYNTAX Gauge32 + +END diff --git a/mibs/ietf/Printer-MIB b/mibs/ietf/Printer-MIB new file mode 100644 index 0000000..4e21a2b --- /dev/null +++ b/mibs/ietf/Printer-MIB @@ -0,0 +1,4638 @@ +Printer-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, TimeTicks, + NOTIFICATION-TYPE, OBJECT-IDENTITY, + mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + hrDeviceIndex, hrStorageIndex FROM HOST-RESOURCES-MIB -- [RFC2790] + InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + PrtCoverStatusTC, PrtGeneralResetTC, PrtChannelTypeTC, + PrtInterpreterLangFamilyTC, PrtInputTypeTC, PrtOutputTypeTC, + PrtMarkerMarkTechTC, PrtMarkerSuppliesTypeTC, PrtConsoleColorTC, + PrtConsoleDisableTC, PrtMediaPathTypeTC, PrtAlertGroupTC, + PrtAlertTrainingLevelTC, PrtAlertCodeTC + FROM IANA-PRINTER-MIB + IANACharset FROM IANA-CHARSET-MIB; + +printmib MODULE-IDENTITY + LAST-UPDATED "200406020000Z" + ORGANIZATION "PWG IEEE/ISTO Printer Working Group" + + + CONTACT-INFO + "Harry Lewis + IBM + Phone (303) 924-5337 + Email: harryl@us.ibm.com + http://www.pwg.org/index.html + + Send comments to the printmib WG using the Printer MIB + Project (PMP) Mailing List: pmp@pwg.org + + For further information, access the PWG web page under 'Printer + MIB': http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + pmp mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for management of printers. + Copyright (C) The Internet Society (2004). This + version of this MIB module was published + in RFC 3805. For full legal notices see the RFC itself." + REVISION "200406020000Z" + DESCRIPTION + "Printer MIB v2. + Moved all enum groups to be maintained by IANA into new TCs + within the ianaPrinterMIB, which is contained in this + document. + New TCs created from enums defined within RFC 1759 Objects: + PrtPrintOrientationTC, PrtLocalizedDescriptionStringTC, + PrtConsoleDescriptionStringTC, PrtChannelStateTC, + PrtOutputStackingOrderTC, PrtOutputPageDeliveryOrientationTC, + PrtMarkerCounterUnitTC, PrtMarkerSuppliesSupplyUnitTC, + PrtMarkerSuppliesClassTC, PrtMarkerAddressabilityUnitTC, + PrtMarkerColorantRoleTC, PrtMediaPathMaxSpeedPrintUnitTC, + PrtInterpreterTwoWayTC, and PrtAlertSeverityLevelTC. + The following four TCs have been deprecated: + MediaUnit (replaced by PrtMediaUnitTC), + CapacityUnit (replaced by PrtCapacityUnitTC), + SubUnitStatus (replaced by PrtSubUnitStatusTC), + CodedCharSet (replaced by IANACharset in IANA Charset MIB) + Five new OBJECT-GROUPs: prtAuxilliarySheetGroup, + prtInputSwitchingGroup, prtGeneralV2Group, + prtAlertTableV2Group, prtChannelV2Group. + Nine new objects added to those groups: + prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, + prtGeneralPrinterName, prtGeneralSerialNumber, + prtAlertCriticalEvents, prtAlertAllEvents, + + + prtInputMediaLoadTimeout, prtInputNextIndex, + prtChannelInformation. + SYNTAX range changed from (0..65535) to (1..65535) for the + index objects prtStorageRefSeqNumber, prtDeviceRefSeqNumber, + and prtConsoleLightIndex. + SYNTAX range changed from (0..65535) to (0..2147483647) for the + objects prtStorageRefIndex and prtDeviceRefIndex to agree + with the Host Resources MIB. + Defined a range for the objects with a SYNTAX of Integer32: + prtOutputDefaultIndex, prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, prtInputMaxCapacity, + prtInputCurrentLevel, prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaFormParts, prtOutputIndex, + prtOutputMaxCapacity, prtOutputRemainingCapacity, + prtOutputMaxDimFeedDir, prtOutputMaxDimXFeedDir, + prtOutputMinDimFeedDir, prtOutputMinDimXFeedDir, + prtMarkerAddressibilityFeedDir, + prtMarkerAddressibilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerSuppliesMaxCapacity, + prtMarkerSuppliesLevel, prtMarkerColorantTonality, + prtMediaPathMaxSpeed, prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtChannelIndex, + prtChannelCurrentJobCntlLangIndex, prtInterpreterIndex, + prtChannelDefaultPageDescLangIndex, prtConsoleOnTime, + prtInterpreterFeedAddressibility, prtConsoleOffTime, + prtInterpreterXFeedAddressibility, prtAlertIndex, + prtAlertGroupIndex, prtAlertLocation. + Changed SYNTAX from Integer32 to InterfaceIndexOrZero for + prtChannelIfIndex. + Changed MAX-ACCESS of prtAlertIndex from not-accessible to + Read-only and added a compliance statement to allow a + MIN-ACCESS of accessible-for-notify. + One new NOTIFICATION-GROUP: prtAlertTrapGroup which contains + printerV2Alert. + In MODULE-COMPLIANCE prtMIBCompliance, new OBJECT-GROUPs and + the NOTIFICATION_GROUP, all in GROUP (not MANDATORY-GROUP) + clauses. The nine new objects are optional, i.e., this + document is backward compatible with RFC 1759." + REVISION "199411250000Z" + DESCRIPTION + "The original version of this MIB, published as RFC1759." + ::= { mib-2 43 } + + + + + +-- TEXTUAL-CONVENTIONs for this MIB module +-- +-- Generic unspecific TEXTUAL-CONVENTIONs +-- + +PrtMediaUnitTC ::= TEXTUAL-CONVENTION + -- Replaces MediaUnit in RFC 1759. + STATUS current + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +MediaUnit ::= TEXTUAL-CONVENTION + -- Replaced by PrtMediaUnitTC. + STATUS deprecated + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +PrtCapacityUnitTC ::= TEXTUAL-CONVENTION + -- Replaces CapacityUnit in RFC 1759. + STATUS current + DESCRIPTION + "Units of measure for media capacity." + SYNTAX INTEGER { + other(1), -- New, not in RFC 1759 + unknown(2), -- New, not in RFC 1759 + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), -- New, not in RFC 1759 + percent(19) -- New, not in RFC 1759 + } + +CapacityUnit ::= TEXTUAL-CONVENTION + -- Replaced by PrtCapacityUnitTC. + STATUS deprecated + DESCRIPTION + "Units of measure for media capacity." + + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17) + } + +PrtPrintOrientationTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterDefaultOrientation in + -- RFC 1759. + STATUS current + DESCRIPTION + "A generic representation for printing orientation on a + 'page'." + SYNTAX INTEGER { + other(1), + portrait(3), + landscape(4) + } + +PrtSubUnitStatusTC ::= TEXTUAL-CONVENTION + -- Replaces SubUnitStatus in RFC 1759. + STATUS current + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + + + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +SubUnitStatus ::= TEXTUAL-CONVENTION + -- Replaced by PrtSubUnitStatusTC. + STATUS deprecated + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +PresentOnOff ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Presence and configuration of a device or feature." + SYNTAX INTEGER { + other(1), + on(3), + off(4), + notPresent(5) + } + +PrtLocalizedDescriptionStringTC ::= TEXTUAL-CONVENTION + -- This TC did not appear in RFC 1759. + STATUS current + DESCRIPTION + "An object MUST use this TEXTUAL-CONVENTION when its + 'charset' is controlled by the value of + prtGeneralCurrentLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +PrtConsoleDescriptionStringTC ::= TEXTUAL-CONVENTION + -- This TC did not appear in RFC 1759. + STATUS current + DESCRIPTION + "An object MUST use this TEXTUAL-CONVENTION when its + 'charset' is controlled by the value of + prtConsoleLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +CodedCharSet ::= TEXTUAL-CONVENTION + + -- Replaced by IANACharset TEXTUAL-CONVENTION in IANA Charset MIB. + STATUS deprecated + DESCRIPTION + "The original description clause from RFC 1759 [RFC1759] was + technically inaccurate and therefore has been deleted." + SYNTAX INTEGER { + other(1) -- used if the designated coded + -- character set is not currently in + -- the enumeration +} + +-- + + +-- Channel Group TEXTUAL-CONVENTIONs +-- + +PrtChannelStateTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtChannelState in RFC 1759. + STATUS current + DESCRIPTION + "The state of this print job delivery channel. The value + determines whether print data is allowed through this channel." + SYNTAX INTEGER { + other(1), + printDataAccepted(3), + noDataAccepted(4) + } + +-- +-- Input/Output Group TEXTUAL-CONVENTIONs +-- + +PrtOutputStackingOrderTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputStackingOrder in RFC 1759. + STATUS current + DESCRIPTION + "The current state of the stacking order for the associated + output sub-unit. 'firstToLast' means that as pages are output, + the front of the next page is placed against the back of the + previous page. 'lastToFirst' means that as pages are output, + the back of the next page is placed against the front of the + previous page." + SYNTAX INTEGER { + unknown(2), + firstToLast(3), + lastToFirst(4) + } + +PrtOutputPageDeliveryOrientationTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputPageDeliveryOrientation + -- in RFC 1759. + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are delivered + to the associated output sub-unit. Values are Face-Up and Face + Down (Note: interpretation of these values is, in general, + context-dependent based on locale; presentation of these values + to an end-user should be normalized to the expectations of the + user." + SYNTAX INTEGER { + faceUp(3), + + + faceDown(4) + } + +-- +-- Marker Group TEXTUAL-CONVENTIONs +-- + +PrtMarkerCounterUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerCounterUnit in RFC 1759. + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The + time units of measure are provided for a device like a + strip recorder that does not or cannot track the physical + dimensions of the media and does not use characters, + lines or sheets." + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + characters(5), + lines(6), + impressions(7), + sheets(8), + dotRow(9), + hours(11), + feet(16), + meters(17) + } + +PrtMarkerSuppliesSupplyUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesSupplyUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "Unit of this marker supply container/receptacle." + SYNTAX INTEGER { + other(1), -- New, not in RFC 1759 + unknown(2), -- New, not in RFC 1759 + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + impressions(7), -- New, not in RFC 1759 + sheets(8), -- New, not in RFC 1759 + hours(11), -- New, not in RFC 1759 + thousandthsOfOunces(12), + tenthsOfGrams(13), + hundrethsOfFluidOunces(14), + + + tenthsOfMilliliters(15), + feet(16), -- New, not in RFC 1759 + meters(17), -- New, not in RFC 1759 + -- Values for Finisher MIB + items(18), -- e.g., #staples. New, not in RFC 1759 + percent(19) -- New, not in RFC 1759 + } + +PrtMarkerSuppliesClassTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesClass in RFC 1759. + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply + that is consumed or a receptacle that is filled." + SYNTAX INTEGER { + other(1), + supplyThatIsConsumed(3), + receptacleThatIsFilled(4) + } + +PrtMarkerColorantRoleTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerColorantRole in RFC 1759. + STATUS current + DESCRIPTION + "The role played by this colorant." + SYNTAX INTEGER { -- Colorant Role + other(1), + process(3), + spot(4) + } + +PrtMarkerAddressabilityUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerAddressabilityUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +-- +-- Media Path TEXTUAL-CONVENTIONs +-- + +PrtMediaPathMaxSpeedPrintUnitTC ::= TEXTUAL-CONVENTION + + + -- This TC was extracted from prtMediaPathMaxSpeedPrintUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all + media paths in the printer." + SYNTAX INTEGER { + tenThousandthsOfInchesPerHour(3),-- .0001/hour + micrometersPerHour(4), + charactersPerHour(5), + linesPerHour(6), + impressionsPerHour(7), + sheetsPerHour(8), + dotRowPerHour(9), + feetPerHour(16), + metersPerHour(17) + } + +-- +-- Interpreter Group TEXTUAL-CONVENTIONs +-- + +PrtInterpreterTwoWayTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterTwoWay in RFC 1759. + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + SYNTAX INTEGER { + yes(3), + no(4) + } + +-- +-- Alert Group TEXTUAL-CONVENTIONs +-- + +PrtAlertSeverityLevelTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertSeverityLevel in RFC 1759. + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry in the + table. A critical alert is binary by nature and definition. A + warning is defined to be a non-critical alert. The original and + most common warning is unary. The binary warning was added later + and given a more distinguished name." + SYNTAX INTEGER { + + + other(1), + critical(3), + warning(4), + warningBinaryChangeEvent(5) -- New, not in RFC 1759 + } + +-- The General Printer Group +-- +-- The general printer sub-unit is responsible for the overall +-- control and status of the printer. There is exactly one +-- general printer sub-unit in a printer. + +prtGeneral OBJECT IDENTIFIER ::= { printmib 5 } + +prtGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of general information per printer. + Objects in this table are defined in various + places in the MIB, nearby the groups to + which they apply. They are all defined + here to minimize the number of tables that would + otherwise need to exist." + ::= { prtGeneral 1 } + +prtGeneralEntry OBJECT-TYPE + SYNTAX PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry exists in this table for each device entry in the + host resources MIB device table with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex } + ::= { prtGeneralTable 1 } + +PrtGeneralEntry ::= SEQUENCE { + -- Note that not all of the objects in this sequence are in + -- the general printer group. The group to which an + -- object belongs is tagged with a label "General", "Input" + -- "Output", etc. after each entry in the following sequence. + -- + prtGeneralConfigChanges Counter32, -- General + + + + prtGeneralCurrentLocalization Integer32, -- General + prtGeneralReset PrtGeneralResetTC, + -- General + prtGeneralCurrentOperator OCTET STRING, + -- Responsible Party + prtGeneralServicePerson OCTET STRING, + -- Responsible Party + prtInputDefaultIndex Integer32, -- Input + prtOutputDefaultIndex Integer32, -- Output + prtMarkerDefaultIndex Integer32, -- Marker + prtMediaPathDefaultIndex Integer32, -- Media Path + prtConsoleLocalization Integer32, -- Console + prtConsoleNumberOfDisplayLines Integer32, -- Console + prtConsoleNumberOfDisplayChars Integer32, -- Console + prtConsoleDisable PrtConsoleDisableTC, + -- Console, + prtAuxiliarySheetStartupPage PresentOnOff, + -- AuxiliarySheet + prtAuxiliarySheetBannerPage PresentOnOff, + -- AuxiliarySheet + prtGeneralPrinterName OCTET STRING, + -- General V2 + prtGeneralSerialNumber OCTET STRING, + -- General V2 + prtAlertCriticalEvents Counter32, -- Alert V2 + prtAlertAllEvents Counter32 -- Alert V2 + } + +prtGeneralConfigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counts configuration changes within the printer. A + configuration change is defined to be an action that results in + a change to any MIB object other than those that reflect status + or level, or those that act as counters or gauges. In addition, + any action that results in a row being added or deleted from + any table in the Printer MIB is considered a configuration + change. Such changes will often affect the capability of the + printer to service certain types of print jobs. Management + applications may cache infrequently changed configuration + information about sub units within the printer. This object + should be incremented whenever the agent wishes to notify + management applications that any cached configuration + information for this device is to be considered 'stale'. At + this point, the management application should flush any + configuration information cached about this device and fetch + + + + new configuration information. + + The following are examples of actions that would cause the + prtGeneralConfigChanges object to be incremented: + + - Adding an output bin + - Changing the media in a sensing input tray + - Changing the value of prtInputMediaType + + Note that the prtGeneralConfigChanges counter would not be + incremented when an input tray is temporarily removed to load + additional paper or when the level of an input device changes. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + + ::= { prtGeneralEntry 1 } + +prtGeneralCurrentLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to the + current language, country, and character set to be used for + localized string values that are identified as being dependent + on the value of this object. Note that this object does not + apply to localized strings in the prtConsole group or to any + object that is not explicitly identified as being localized + according to prtGeneralCurrentLocalization. When an object's + 'charset' is controlled by the value of + prtGeneralCurrentLocalization, it MUST specify + PrtLocalizedDescriptionStringTC as its syntax. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 2 } + +prtGeneralReset OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtGeneralResetTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'powerCycleReset', 'resetToNVRAM', or + 'resetToFactoryDefaults' will result in the resetting of the + printer. When read, this object will always have the value + + + + 'notResetting(3)', and a SET of the value 'notResetting' shall + have no effect on the printer. Some of the defined values are + optional. However, every implementation must support at least + the values 'notResetting' and 'resetToNVRAM'." + ::= { prtGeneralEntry 3 } + +-- The Responsible Party group + +prtGeneralCurrentOperator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person who is responsible for operating + this printer. It is suggested that this string include + information that would enable other humans to reach the + operator, such as a phone number. As a convention to + facilitate automatic notification of the operator by the + agent or network management station, the phone number, + fax number or email address should be indicated by the + URL schemes 'tel:', 'fax:' and 'mailto:', respectively. + If either the phone, fax, or email information is not + available, then a line should not be included for this + information. + + NOTE: For interoperability purposes, it is advisable to + use email addresses formatted according to [RFC2822] + requirements. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 4 } + +prtGeneralServicePerson OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person responsible for servicing this + printer. It is suggested that this string include + information that would enable other humans to reach the + service person, such as a phone number. As a convention + to facilitate automatic notification of the operator by + the agent or network management station, the phone + number, fax number or email address should be indicated + by the URL schemes 'tel:', 'fax:' and 'mailto:', + respectively. If either the phone, fax, or email + information is not available, then a line should not + + + + be included for this information. + + NOTE: For interoperability purposes, it is advisable to use + email addresses formatted per [RFC2822] requirements. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + + ::= { prtGeneralEntry 5 } + +-- Default indexes section +-- +-- The following four objects are used to specify the indexes of +-- certain subunits used as defaults during the printing process. + +prtInputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the default input + sub-unit: that is, this object selects the default source of + input media." +::= { prtGeneralEntry 6 } + +prtOutputDefaultIndex OBJECT-TYPE + -- A range has been added to the SYNTAX clause that was not in + -- RFC 1759. Although this violates SNMP compatibility rules, + -- it provides a more reasonable guide for SNMP managers. + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtOutputIndex corresponding to the default + output sub-unit; that is, this object selects the default + output destination." +::= { prtGeneralEntry 7 } + +prtMarkerDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the + default marker sub-unit; that is, this object selects the + default marker." + ::= { prtGeneralEntry 8 } + + + + +prtMediaPathDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMediaPathIndex corresponding to + the default media path; that is, the selection of the + default media path." + ::= { prtGeneralEntry 9 } + +-- Console general section +-- +-- The following four objects describe overall parameters of the +-- printer console subsystem. + +prtConsoleLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to + the language, country, and character set to be used for the + console. This localization applies both to the actual display + on the console as well as the encoding of these console objects + in management operations. When an object's 'charset' is + controlled by the value of prtConsoleLocalization, it MUST + specify PrtConsoleDescriptionStringTC as its syntax. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 10 } + +prtConsoleNumberOfDisplayLines OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of lines on the printer's physical + display. This value is 0 if there are no lines on the + physical display or if there is no physical display" + ::= { prtGeneralEntry 11 } + +prtConsoleNumberOfDisplayChars OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of characters per line displayed on the physical + + + + display. This value is 0 if there are no lines on the physical + display or if there is no physical display" + ::= { prtGeneralEntry 12 } + +prtConsoleDisable OBJECT-TYPE + -- In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtConsoleDisableTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value indicates how input is (or is not) accepted from + the operator console. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 13 } + +-- The Auxiliary Sheet Group +-- +-- The auxiliary sheet group allows the administrator to control +-- the production of auxiliary sheets by the printer. This group +-- contains only the "prtAuxiliarySheetStartupPage" and +-- "prtAuxiliarySheetBannerPage" objects. + +prtAuxiliarySheetStartupPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing a startup page. If enabled, + a startup page will be printed shortly after power-up, when the + device is ready. Typical startup pages include test patterns + and/or printer configuration information." + ::= { prtGeneralEntry 14 } + +prtAuxiliarySheetBannerPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing banner pages at the + beginning of jobs. This is a master switch which applies to all + jobs, regardless of interpreter." + ::= { prtGeneralEntry 15 } + + + + + + +-- Administrative section (The General V2 Group) +-- +-- The following two objects are used to specify administrative +-- information assigned to the printer. + +prtGeneralPrinterName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administrator-specified name for this printer. Depending + upon implementation of this printer, the value of this object + may or may not be same as the value for the MIB-II 'SysName' + object." + ::= { prtGeneralEntry 16 } + +prtGeneralSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A recorded serial number for this device that indexes some + type device catalog or inventory. This value is usually set by + the device manufacturer but the MIB supports the option of + writing for this object for site-specific administration of + device inventory or tracking." + ::= { prtGeneralEntry 17 } + +-- General alert table section (Alert Table V2 Group) +-- +-- The following two objects are used to specify counters +-- associated with the Alert Table. + +prtAlertCriticalEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the number of critical alert events that + have been recorded in the alert table. The value of this object + is RESET in the event of a power cycle operation (i.e., the + value is not persistent." + ::= { prtGeneralEntry 18 } + +prtAlertAllEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A running counter of the total number of alert event entries + (critical and non-critical) that have been recorded in the + alert table" + ::= { prtGeneralEntry 19 } + +-- The Cover Table +-- +-- The cover portion of the General print sub-unit describes the +-- covers and interlocks of the printer. The Cover Table has an +-- entry for each cover and interlock. + +prtCover OBJECT IDENTIFIER ::= { printmib 6 } + +prtCoverTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the covers and interlocks of the printer." + ::= { prtCover 1 } + +prtCoverEntry OBJECT-TYPE + SYNTAX PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a cover or interlock. + Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtCoverIndex } + ::= { prtCoverTable 1 } + +PrtCoverEntry ::= SEQUENCE { + prtCoverIndex Integer32, + prtCoverDescription PrtLocalizedDescriptionStringTC, + prtCoverStatus PrtCoverStatusTC + } + +prtCoverIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this Cover sub + + + + unit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new cover + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtCoverEntry 1 } + +prtCoverDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer provided cover sub-mechanism name in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtCoverEntry 2 } + +prtCoverStatus OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object and are now defined in the IANA-PRINTER-MIB. The + -- new TC has defined "coverOpen" and "coverClosed" to replace + -- "doorOpen" and "doorClosed" in RFC 1759. A name change is not + -- formally allowed per SMI rules, but was agreed to by the WG group + -- since a door has a more restrictive meaning than a cover and + -- Cover group is intended to support doors as a subset of covers. + + SYNTAX PrtCoverStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this cover sub-unit." + ::= { prtCoverEntry 3 } + +-- The Localization Table +-- +-- The localization portion of the General printer sub-unit is +-- responsible for identifying the natural language, country, and +-- character set in which character strings are expressed. There +-- may be one or more localizations supported per printer. The +-- available localizations are represented by the Localization +-- table. + +prtLocalization OBJECT IDENTIFIER ::= { printmib 7 } + +prtLocalizationTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The available localizations in this printer." + ::= { prtLocalization 1 } + +prtLocalizationEntry OBJECT-TYPE + SYNTAX PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A description of a localization. + Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtLocalizationIndex } + ::= { prtLocalizationTable 1 } + +PrtLocalizationEntry ::= SEQUENCE { + prtLocalizationIndex Integer32, + prtLocalizationLanguage OCTET STRING, + prtLocalizationCountry OCTET STRING, + prtLocalizationCharacterSet IANACharset + } + +prtLocalizationIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this + localization entry. Although these values may change due to a + major reconfiguration of the device (e.g., the addition of new + localization data to the printer), values SHOULD remain + stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtLocalizationEntry 1 } + +prtLocalizationLanguage OBJECT-TYPE + -- Note: The size is fixed, was incorrectly 0..2 in RFC 1759. + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A two character language code from ISO 639. Examples en, + es, fr, de. NOTE: These examples were shown as upper case in + RFC 1759 and are now shown as lower case to agree with ISO 639." + ::= { prtLocalizationEntry 2 } + +prtLocalizationCountry OBJECT-TYPE + -- Note: The size is fixed, was incorrectly 0..2 in RFC 1759. + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character country code from ISO 3166, a blank string + (two space characters) shall indicate that the country is not + defined. Examples: US, GB, FR, DE, ..." + ::= { prtLocalizationEntry 3 } + +prtLocalizationCharacterSet OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set used for this localization." + ::= { prtLocalizationEntry 4 } + +-- The System Resources Tables +-- +-- The Printer MIB makes use of the Host Resources MIB to +-- define system resources by referencing the storage +-- and device groups of the print group. + +prtStorageRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines which printer, amongst multiple printers + serviced by one agent, owns which storage units. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneral 2 } + +prtStorageRefEntry OBJECT-TYPE + SYNTAX PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table will have an entry for each entry in the Host + Resources MIB storage table that represents storage associated + with a printer managed by this agent. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrStorageIndex, prtStorageRefSeqNumber } + ::= { prtStorageRefTable 1 } + +PrtStorageRefEntry ::= SEQUENCE { + prtStorageRefSeqNumber Integer32, + prtStorageRefIndex Integer32 + } + +prtStorageRefSeqNumber OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759, which allowed a + -- minumum value of zero. This was incorrect, since zero is not a + -- valid index. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrStorageIndex. This object allows a storage entry to + point to the multiple printer devices with which it is + associated." + ::= { prtStorageRefEntry 1 } + +prtStorageRefIndex OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759 to be compatible + -- with the defined range of hrDeviceIndex. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + storageEntry is associated with." + ::= { prtStorageRefEntry 2 } + +prtDeviceRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines which printer, amongst multiple printers + serviced by one agent, is associated with which devices. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + ::= { prtGeneral 3 } + +prtDeviceRefEntry OBJECT-TYPE + SYNTAX PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB device table that represents a device associated + with a printer managed by this agent. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtDeviceRefSeqNumber } + ::= { prtDeviceRefTable 1 } + +PrtDeviceRefEntry ::= SEQUENCE { + prtDeviceRefSeqNumber Integer32, + prtDeviceRefIndex Integer32 + } + +prtDeviceRefSeqNumber OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759, which allowed a + -- minumum value of zero. This was incorrect, since zero is not a + -- valid index. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrDeviceIndex. This object allows a device entry to + point to the multiple printer devices with which it is + associated." + ::= { prtDeviceRefEntry 1 } + +prtDeviceRefIndex OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759 to be compatible + -- with the defined range of hrDeviceIndex. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + deviceEntry is associated with." + ::= { prtDeviceRefEntry 2 } + + + + + +-- The Input Group +-- +-- Input sub-units are managed as a tabular, indexed collection +-- of possible devices capable of providing media for input to +-- the printing process. Input sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other media +-- characteristics, and may be capable of indicating current +-- status or capacity. + +prtInput OBJECT IDENTIFIER ::= { printmib 8 } + +prtInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of providing media for input to + the printing process." + ::= { prtInput 2 } + +prtInputEntry OBJECT-TYPE + SYNTAX PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of providing media for input to + the printing process. Entries may exist in the table for each + device index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtInputIndex } + ::= { prtInputTable 1 } + +PrtInputEntry ::= SEQUENCE { + prtInputIndex Integer32, + prtInputType PrtInputTypeTC, + prtInputDimUnit PrtMediaUnitTC, + prtInputMediaDimFeedDirDeclared Integer32, + prtInputMediaDimXFeedDirDeclared Integer32, + prtInputMediaDimFeedDirChosen Integer32, + prtInputMediaDimXFeedDirChosen Integer32, + prtInputCapacityUnit PrtCapacityUnitTC, + prtInputMaxCapacity Integer32, + prtInputCurrentLevel Integer32, + prtInputStatus PrtSubUnitStatusTC, + prtInputMediaName OCTET STRING, + + + + prtInputName OCTET STRING, + prtInputVendorName OCTET STRING, + prtInputModel OCTET STRING, + prtInputVersion OCTET STRING, + prtInputSerialNumber OCTET STRING, + prtInputDescription PrtLocalizedDescriptionStringTC, + prtInputSecurity PresentOnOff, + prtInputMediaWeight Integer32, + prtInputMediaType OCTET STRING, + prtInputMediaColor OCTET STRING, + prtInputMediaFormParts Integer32, + prtInputMediaLoadTimeout Integer32, + prtInputNextIndex Integer32 + } + +prtInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this input + sub-unit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new input + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInputEntry 1 } + +prtInputType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by the input sub-unit. Note, + the Input Class provides for a descriptor field to further + qualify the other choice." + ::= { prtInputEntry 2 } + +prtInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The unit of measurement for use calculating and relaying + dimensional values for this input sub-unit." + ::= { prtInputEntry 3 } + +prtInputMediaDimFeedDirDeclared OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the feed direction, of the media that is (or, if empty, was or + will be) in this input sub-unit. The feed direction is the + direction in which the media is fed on this sub-unit. This + dimension is measured in input sub-unit dimensional units + (controlled by prtInputDimUnit, which uses PrtMediaUnitTC). If + this input sub-unit can reliably sense this value, the value is + sensed by the printer and may not be changed by management + requests. Otherwise, the value may be changed. The value (-1) + means other and specifically means that this sub-unit places no + restriction on this parameter. The value (-2) indicates + unknown." + ::= { prtInputEntry 4 } + +prtInputMediaDimXFeedDirDeclared OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the cross feed direction, of the media that is (or, if empty, + was or will be) in this input sub-unit. The cross feed + direction is ninety degrees relative to the feed direction + associated with this sub-unit. This dimension is measured in + input sub-unit dimensional units (controlled by + prtInputDimUnit,which uses PrtMediaUnitTC). If this input sub- + unit can reliably sense this value, the value is sensed by the + printer and may not be changed by management requests. + Otherwise, the value may be changed. The value (-1) means other + and specifically means that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 5 } + +prtInputMediaDimFeedDirChosen OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the feed direction) is present in this input source. Note that + this value will be used even if the input tray is empty. Feed + dimension measurements are taken relative to the feed direction + associated with that sub-unit and are in input sub-unit + dimensional units (controlled by prtInputDimUnit, which uses + PrtMediaUnitTC). If the printer supports the declared + dimension,the granted dimension is the same as the declared + dimension. If not, the granted dimension is set to the closest + dimension that the printer supports when the declared dimension + is set. The value (-1) means other and specifically indicates + that this sub-unit places no restriction on this parameter. The + value (-2)indicates unknown." + ::= { prtInputEntry 6 } + +prtInputMediaDimXFeedDirChosen OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the cross feed direction) is present in this input source. Note + that this value will be used even if the input tray is empty. + The cross feed direction is ninety degrees relative to the feed + direction associated with this sub-unit. This dimension is + measured in input sub-unit dimensional units (controlled by + prtInputDimUnit, which uses PrtMediaUnitTC). If the printer + supports the declare dimension, the granted dimension is the + same as the declared dimension. If not, the granted dimension + is set to the closest dimension that the printer supports when + the declared dimension is set. The value (-1) means other and + specifically indicates that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 7 } + +prtInputCapacityUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this input sub-unit." + ::= { prtInputEntry 8 } + + + +prtInputMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value reflects claimed + capacity. If this input sub-unit can reliably sense this value, + the value is sensed by the printer and may not be changed by + management requests; otherwise, the value may be written (by a + Remote Control Panel or a Management Application). The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 9 } + +prtInputCurrentLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) -- in capacity units + -- (PrtCapacityUnitTC). + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). If this input sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed by management requests; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. The value (-3) means + that the printer knows that at least one unit remains." + ::= { prtInputEntry 10 } + +prtInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this input sub-unit." + ::= { prtInputEntry 11 } + +prtInputMediaName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "A description of the media contained in this input sub-unit; + This description is to be used by a client to format and + Localize a string for display to a human operator. This + description is not processed by the printer. It is used to + provide information not expressible in terms of the other + media attributes (e.g., prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaType)." + -- The following reference was not included in RFC 1759. + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA] + contains the recommended values for this object. See also + RFC 3805 Appendix C,'Media Names', which lists the values + Of standardized media names defined in ISO/IEC 10175." + ::= { prtInputEntry 12 } + +-- INPUT MEASUREMENT +-- +-- _______ | | +-- ^ | | +-- | | | | +-- | |_ _ _ _ _ _ _ _| _______________ |direction +-- | | | ^ v +-- MaxCapacity | Sheets | | +-- | | left | CurrentLevel +-- | | in | | +-- v | tray | v +-- _______ +_______________+ _______ + +-- The Extended Input Group + +prtInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input sub-unit." + ::= { prtInputEntry 13 } + +prtInputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this input sub-unit." + ::= { prtInputEntry 14 } + + + + +prtInputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name of this input sub-unit." + ::= { prtInputEntry 15 } + +prtInputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this input sub-unit." + ::= { prtInputEntry 16 } + +prtInputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this input sub-unit." + ::= { prtInputEntry 17 } + +prtInputDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this input sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtInputEntry 18 } + +prtInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this input sub-unit has some security associated + with it." + ::= { prtInputEntry 19 } + +-- The Input Media Group +-- +-- The Input Media Group supports identification of media +-- installed or available for use on a printing device. + + + +-- Medium resources are identified by name, and include a +-- collection of characteristic attributes that may further be +-- used for selection and management of them. +-- The Input Media group consists of a set of optional +-- "columns" in the Input Table. In this manner, a minimally +-- conforming implementation may choose to not support reporting +-- of media resources if it cannot do so. + +prtInputMediaWeight OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the medium associated with this input sub-unit + in grams / per meter squared. The value (-2) means unknown." + ::= { prtInputEntry 20 } + +prtInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input sub + unit. This name need not be processed by the printer; it might + simply be displayed to an operator. + + NOTE: The above description has been modified from RFC 1759." + -- The following reference was not included in RFC 1759. + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 3 Media Type Names, contains the recommended values for + this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { prtInputEntry 21 } + +prtInputMediaColor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the color of the medium associated with + this input sub-unit using standardized string values. + + NOTE: The above description has been modified from RFC 1759." + -- The following reference was not included in RFC 1759. + REFERENCE + + + + "The PWG Standardized Media Names specification [PWGMEDIA], + section 4 Media Color Names, contains the recommended values + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { prtInputEntry 22 } + +prtInputMediaFormParts OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of parts associated with the medium + associated with this input sub-unit if the medium is a + multi-part form. The value (-1) means other and + specifically indicates that the device places no + restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 23 } + +-- The Input Switching Group +-- +-- The input switching group allows the administrator to set the +-- input subunit time-out for the printer and to control the +-- automatic input subunit switching by the printer when an input +-- subunit becomes empty. + +prtInputMediaLoadTimeout OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the printer is not able to print due to a subunit being + empty or the requested media must be manually loaded, the + printer will wait for the duration (in seconds) specified by + this object. Upon expiration of the time-out, the printer will + take the action specified by prtInputNextIndex. + + The event which causes the printer to enter the waiting state + is product specific. If the printer is not waiting for manually + fed media, it may switch from an empty subunit to a different + subunit without waiting for the time-out to expire. + + A value of (-1) implies 'other' or 'infinite' which translates + to 'wait forever'. The action which causes printing to continue + is product specific. A value of (-2) implies 'unknown'." + ::= { prtInputEntry 24 } + + + +prtInputNextIndex OBJECT-TYPE + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the input subunit + which will be used when this input subunit is emptied and the + time-out specified by prtInputMediaLoadTimeout expires. A value + of zero(0) indicates that auto input switching will not occur + when this input subunit is emptied. If the time-out specified + by prtInputLoadMediaTimeout expires and this value is zero(0), + the job will be aborted. A value of (-1) means other. The + value (-2)means 'unknown' and specifically indicates that an + implementation specific method will determine the next input + subunit to use at the time this subunit is emptied and the time + out expires. The value(-3) means input switching is not + supported for this subunit." + ::= { prtInputEntry 25 } + +-- The Output Group +-- +-- Output sub-units are managed as a tabular, indexed collection +-- of possible devices capable of receiving media delivered from +-- the printing process. Output sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other characteristics, +-- and may be capable of indicating current status or capacity. + +prtOutput OBJECT IDENTIFIER ::= { printmib 9 } + +prtOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of receiving media delivered + from the printing process." + ::= { prtOutput 2 } + +prtOutputEntry OBJECT-TYPE + SYNTAX PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of receiving media delivered + from the printing process. Entries may exist in the table for + each device index with a device type of 'printer'. + + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtOutputIndex } + ::= { prtOutputTable 1 } + +PrtOutputEntry ::= SEQUENCE { + prtOutputIndex Integer32, + prtOutputType PrtOutputTypeTC, + prtOutputCapacityUnit PrtCapacityUnitTC, + prtOutputMaxCapacity Integer32, + prtOutputRemainingCapacity Integer32, + prtOutputStatus PrtSubUnitStatusTC, + prtOutputName OCTET STRING, + prtOutputVendorName OCTET STRING, + prtOutputModel OCTET STRING, + prtOutputVersion OCTET STRING, + prtOutputSerialNumber OCTET STRING, + prtOutputDescription PrtLocalizedDescriptionStringTC, + prtOutputSecurity PresentOnOff, + prtOutputDimUnit PrtMediaUnitTC, + prtOutputMaxDimFeedDir Integer32, + prtOutputMaxDimXFeedDir Integer32, + prtOutputMinDimFeedDir Integer32, + prtOutputMinDimXFeedDir Integer32, + prtOutputStackingOrder PrtOutputStackingOrderTC, + prtOutputPageDeliveryOrientation + PrtOutputPageDeliveryOrientationTC, + prtOutputBursting PresentOnOff, + prtOutputDecollating PresentOnOff, + prtOutputPageCollated PresentOnOff, + prtOutputOffsetStacking PresentOnOff + } + +prtOutputIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by this printer to identify this output + sub-unit. Although these values may change due to a major + reconfiguration of the sub-unit (e.g., the addition of new + output devices to the printer), values SHOULD remain stable + across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 1 } + + + +prtOutputType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtOutputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology supported by this output sub-unit." + ::= { prtOutputEntry 2 } + +prtOutputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this output sub-unit." + ::= { prtOutputEntry 3 } + +prtOutputMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this output sub-unit in output sub- + unit capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value essentially + reflects claimed capacity. If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may + not be changed by management requests; otherwise, the value may + be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtOutputEntry 4 } + +prtOutputRemainingCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The remaining capacity of the possible output sub-unit + capacity in output sub-unit capacity units + (PrtCapacityUnitTC)of this output sub-unit. If this output sub- + unit can reliably sense this value, the value is sensed by the + printer and may not be modified by management requests; + + + + otherwise, the value may be written (by a Remote Control Panel + or a Management Application). The value (-1) means other and + specifically indicates that the sub-unit places no restrictions + on this parameter. The value (-2) means unknown. The value + (-3) means that the printer knows that there remains capacity + for at least one unit." + ::= { prtOutputEntry 5 } + +prtOutputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this output sub-unit." + ::= { prtOutputEntry 6 } + +-- OUTPUT MEASUREMENT +-- +-- _______ | | ________ +-- ^ | | ^ +-- | | | | +-- | | |RemainingCapacity +-- MaxCapacity| | | +-- | | | v ^ +-- | |_ _ _ _ _ _ _ _ | _______________ |direction +-- | | Sheets | | +-- | | in | +-- v | Output | +-- _______ +________________+ + +-- The Extended Output Group + +prtOutputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this output sub-unit." + ::= { prtOutputEntry 7 } + +prtOutputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this output sub-unit." + ::= { prtOutputEntry 8 } + + + + +prtOutputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name assigned to this output sub-unit. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 9 } + +prtOutputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this output sub-unit." + ::= { prtOutputEntry 10 } + +prtOutputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this output sub-unit." + ::= { prtOutputEntry 11 } + +prtOutputDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this output sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtOutputEntry 12 } + +prtOutputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this output sub-unit has some security associated + with it and if that security is enabled or not." + ::= { prtOutputEntry 13 } + + + + + +-- The Output Dimensions Group + +prtOutputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + dimensional values for this output sub-unit." + ::= { prtOutputEntry 14 } + +prtOutputMaxDimFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 15 } + +prtOutputMaxDimXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 16 } + +prtOutputMinDimFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 17 } + +prtOutputMinDimXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 18 } + + + + + + +-- The Output Features Group + +prtOutputStackingOrder OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtOutputStackingOrderTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the stacking order for the + associated output sub-unit. 'FirstToLast' means + that as pages are output the front of the next page is + placed against the back of the previous page. + 'LasttoFirst' means that as pages are output the back + of the next page is placed against the front of the + previous page." + ::= { prtOutputEntry 19 } + +prtOutputPageDeliveryOrientation OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtOutputPageDeliveryOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are + delivered to the associated output sub-unit. Values are + faceUp and faceDown. (Note: interpretation of these + values is in general context-dependent based on locale; + presentation of these values to an end-user should be + normalized to the expectations of the user)." + ::= { prtOutputEntry 20 } + +prtOutputBursting OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the outputting sub-unit supports + bursting, and if so, whether the feature is enabled. Bursting + is the process by which continuous media is separated into + individual sheets, typically by bursting along pre-formed + perforations." + ::= { prtOutputEntry 21 } + +prtOutputDecollating OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object indicates that the output supports decollating, + and if so, whether the feature is enabled. Decollating is the + process by which the individual parts within a multi-part form + are separated and sorted into separate stacks for each part." + ::= { prtOutputEntry 22 } + +prtOutputPageCollated OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output sub-unit supports page + collation, and if so, whether the feature is enabled. See RFC + 3805 Appendix A, Glossary Of Terms, for definition of how this + document defines collation. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 23 } + +prtOutputOffsetStacking OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports offset + stacking,and if so, whether the feature is enabled. See RFC + 3805 Appendix A, Glossary Of Terms, for how Offset Stacking is + defined by this document. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 24 } + +-- The Marker Group +-- +-- A marker is the mechanism that produces marks on the print +-- media. The marker sub-units and their associated supplies are +-- represented by the Marker Group in the model. A printer can +-- contain one or more marking mechanisms. Some examples of +-- multiple marker sub-units are: a printer +-- with separate markers for normal and magnetic ink or an +-- imagesetter that can output to both a proofing device and +-- final film. Each marking device can have its own set of +-- characteristics associated with it, such as marking technology +-- and resolution. + + + +prtMarker OBJECT IDENTIFIER ::= { printmib 10 } + +-- The printable area margins as listed below define an area of +-- the print media which is guaranteed to be printable for all +-- combinations of input, media paths, and interpreters for this +-- marker. + +prtMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The marker table provides a description of each marker + sub-unit contained within the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarker 2 } + +prtMarkerEntry OBJECT-TYPE + SYNTAX PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table define the characteristics and status + of each marker sub-unit in the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerIndex } + ::= { prtMarkerTable 1 } + +PrtMarkerEntry ::= SEQUENCE { + prtMarkerIndex Integer32, + prtMarkerMarkTech PrtMarkerMarkTechTC, + prtMarkerCounterUnit PrtMarkerCounterUnitTC, + prtMarkerLifeCount Counter32, + prtMarkerPowerOnCount Counter32, + prtMarkerProcessColorants Integer32, + prtMarkerSpotColorants Integer32, + prtMarkerAddressabilityUnit PrtMarkerAddressabilityUnitTC, + prtMarkerAddressabilityFeedDir Integer32, + prtMarkerAddressabilityXFeedDir Integer32, + prtMarkerNorthMargin Integer32, + prtMarkerSouthMargin Integer32, + prtMarkerWestMargin Integer32, + prtMarkerEastMargin Integer32, + prtMarkerStatus PrtSubUnitStatusTC + + + + } + +prtMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marking + SubUnit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new marking + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 1 } + +prtMarkerMarkTech OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerMarkTechTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of marking technology used for this marking + sub-unit." + ::= { prtMarkerEntry 2 } + +prtMarkerCounterUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerCounterUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The time units of + measure are provided for a device like a strip recorder that + does not or cannot track the physical dimensions of the media + and does not use characters, lines or sheets." + ::= { prtMarkerEntry 3 } + +prtMarkerLifeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted during the + + + + life of printer using units of measure as specified by + prtMarkerCounterUnit. + + Note: This object should be implemented as a persistent object + with a reliable value throughout the lifetime of the printer." + ::= { prtMarkerEntry 4 } + +prtMarkerPowerOnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted since the + equipment was most recently powered on using units of measure + as specified by prtMarkerCounterUnit." + ::= { prtMarkerEntry 5 } + +prtMarkerProcessColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of process colors supported by this marker. A + process color of 1 implies monochrome. The value of this + object and prtMarkerSpotColorants cannot both be 0. The value + of prtMarkerProcessColorants must be 0 or greater. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 6 } + +prtMarkerSpotColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of spot colors supported by this marker. The value + of this object and prtMarkerProcessColorants cannot both be 0. + Must be 0 or greater. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 7 } + +prtMarkerAddressabilityUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerAddressabilityUnitTC + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 8 } + +prtMarkerAddressabilityFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + feed direction per 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' + or 'infinite' while a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 9 } + +prtMarkerAddressabilityXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + cross feed direction in 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' + or 'infinite' while a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 10 } + +prtMarkerNorthMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin, in units identified by prtMarkerAddressabilityUnit, + from the leading edge of the medium as the medium flows through + + + + the marking engine with the side to be imaged facing the + observer. The leading edge is the North edge and the other + edges are defined by the normal compass layout of directions + with the compass facing the observer. Printing within the area + bounded by all four margins is guaranteed for all interpreters. + The value (-2) means unknown." + ::= { prtMarkerEntry 11 } + +prtMarkerSouthMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the South edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 12 } + +prtMarkerWestMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the West edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 13 } + +prtMarkerEastMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the East edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 14 } + +prtMarkerStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current status of this marker sub-unit." + ::= { prtMarkerEntry 15 } + +-- The Marker Supplies Group + +prtMarkerSupplies OBJECT IDENTIFIER ::= { printmib 11 } + +prtMarkerSuppliesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the marker supplies available on this printer." + ::= { prtMarkerSupplies 1 } + +prtMarkerSuppliesEntry OBJECT-TYPE + SYNTAX PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a marker supply. Entries may exist in the table + for each device index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerSuppliesIndex } + ::= { prtMarkerSuppliesTable 1 } +PrtMarkerSuppliesEntry ::= SEQUENCE { + prtMarkerSuppliesIndex Integer32, + prtMarkerSuppliesMarkerIndex Integer32, + prtMarkerSuppliesColorantIndex Integer32, + prtMarkerSuppliesClass PrtMarkerSuppliesClassTC, + prtMarkerSuppliesType PrtMarkerSuppliesTypeTC, + prtMarkerSuppliesDescription PrtLocalizedDescriptionStringTC, + prtMarkerSuppliesSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + prtMarkerSuppliesMaxCapacity Integer32, + prtMarkerSuppliesLevel Integer32 + } + +prtMarkerSuppliesIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marker + supply. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new marker + + + + supplies to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 1 } + +prtMarkerSuppliesMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marking sub + unit with which this marker supply sub-unit is associated." + ::= { prtMarkerSuppliesEntry 2 } + +prtMarkerSuppliesColorantIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerColorantIndex corresponding to the + colorant with which this marker supply sub-unit is associated. + This value shall be 0 if there is no colorant table or if this + supply does not depend on a single specified colorant. + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 3 } + +prtMarkerSuppliesClass OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply that + is consumed or a receptacle that is filled. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 4 } + +prtMarkerSuppliesType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The type of this supply." + ::= { prtMarkerSuppliesEntry 5 } + +prtMarkerSuppliesDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply container/receptacle in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMarkerSuppliesEntry 6 } + +prtMarkerSuppliesSupplyUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this marker supply container/receptacle. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 7 } + +prtMarkerSuppliesMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in prtMarkerSuppliesSupplyUnit. If this supply + container/receptacle can reliably sense this value, the value + is reported by the printer and is read-only; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtMarkerSuppliesEntry 8 } + +prtMarkerSuppliesLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; the remaining + space if this supply is a receptacle. If this supply + container/receptacle can reliably sense this value, the value + is reported by the printer and is read-only; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. A value of (-3) means + that the printer knows that there is some supply/remaining + space, respectively." + ::= { prtMarkerSuppliesEntry 9 } + +-- The Marker Colorant Group + +prtMarkerColorant OBJECT IDENTIFIER ::= { printmib 12 } + +prtMarkerColorantTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all of the colorants available on the printer." + ::= { prtMarkerColorant 1 } + +prtMarkerColorantEntry OBJECT-TYPE + SYNTAX PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a colorant available on the printer. Entries may + exist in the table for each device index with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerColorantIndex } + ::= { prtMarkerColorantTable 1 } + +PrtMarkerColorantEntry ::= SEQUENCE { + prtMarkerColorantIndex Integer32, + prtMarkerColorantMarkerIndex Integer32, + prtMarkerColorantRole PrtMarkerColorantRoleTC, + prtMarkerColorantValue OCTET STRING, + prtMarkerColorantTonality Integer32 + } + + + +prtMarkerColorantIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this colorant. + Although these values may change due to a major reconfiguration + of the device (e.g., the addition of new colorants to the + printer) , values SHOULD remain stable across successive + printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerColorantEntry 1 } + +prtMarkerColorantMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marker sub + unit with which this colorant entry is associated." + ::= { prtMarkerColorantEntry 2 } + +prtMarkerColorantRole OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerColorantRoleTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role played by this colorant." + ::= { prtMarkerColorantEntry 3 } + +prtMarkerColorantValue OBJECT-TYPE + -- NOTE: The string length range has been increased from RFC 1759. + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color of this colorant using standardized + string names from ISO 10175 (DPA) and ISO 10180 (SPDL) such as: + other + unknown + white + red + green + blue + + + + cyan + magenta + yellow + black + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes" + ::= { prtMarkerColorantEntry 4 } + +prtMarkerColorantTonality OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The distinct levels of tonality realizable by a marking sub + unit when using this colorant. This value does not include the + number of levels of tonal difference that an interpreter can + obtain by techniques such as half toning. This value must be at + least 2." + ::= { prtMarkerColorantEntry 5 } + +-- The Media Path Group +-- +-- The media paths encompass the mechanisms in the printer that +-- move the media through the printer and connect all other media +-- related sub-units: inputs, outputs, markers and finishers. A +-- printer contains one or more media paths. These are +-- represented by the Media Path Group in the model. + +prtMediaPath OBJECT IDENTIFIER ::= { printmib 13 } + +prtMediaPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The media path table includes both physical and logical paths + within the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPath 4 } + +prtMediaPathEntry OBJECT-TYPE + SYNTAX PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer' Each entry defines the physical + characteristics of and the status of the media path. The data + provided indicates the maximum throughput and the media + size limitations of these subunits. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMediaPathIndex } + ::= { prtMediaPathTable 1 } + +PrtMediaPathEntry ::= SEQUENCE { + prtMediaPathIndex Integer32, + prtMediaPathMaxSpeedPrintUnit PrtMediaPathMaxSpeedPrintUnitTC, + prtMediaPathMediaSizeUnit PrtMediaUnitTC, + prtMediaPathMaxSpeed Integer32, + prtMediaPathMaxMediaFeedDir Integer32, + prtMediaPathMaxMediaXFeedDir Integer32, + prtMediaPathMinMediaFeedDir Integer32, + prtMediaPathMinMediaXFeedDir Integer32, + prtMediaPathType PrtMediaPathTypeTC, + prtMediaPathDescription PrtLocalizedDescriptionStringTC, + prtMediaPathStatus PrtSubUnitStatusTC + } + +prtMediaPathIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this media + path. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new media + paths to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 1 } + +prtMediaPathMaxSpeedPrintUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMediaPathMaxSpeedPrintUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The unit of measure used in specifying the speed of all media + paths in the printer." + ::= { prtMediaPathEntry 2 } + +prtMediaPathMediaSizeUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The units of measure of media size for use in calculating and + relaying dimensional values for all media paths in the + printer." + ::= { prtMediaPathEntry 3 } + +prtMediaPathMaxSpeed OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum printing speed of this media path expressed in + prtMediaPathMaxSpeedUnit's. A value of (-1) implies 'other'." + ::= { prtMediaPathEntry 4 } + +prtMediaPathMaxMediaFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size in the feed direction of this + media path expressed in units of measure specified by + PrtMediaPathMediaSizeUnit. A value of (-1) implies 'unlimited' + a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 5 } + +prtMediaPathMaxMediaXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 6 } + +prtMediaPathMinMediaFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size in the feed direction of this + media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 7 } + +prtMediaPathMinMediaXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 8 } + +prtMediaPathType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMediaPathTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the media path for this media path." + ::= { prtMediaPathEntry 9 } + +prtMediaPathDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The manufacturer-provided description of this media path in + the localization specified by prtGeneralCurrentLocalization." + ::= { prtMediaPathEntry 10 } + +prtMediaPathStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this media path." + ::= { prtMediaPathEntry 11 } + +-- The Print Job Delivery Channel Group +-- +-- Print Job Delivery Channels are independent sources of print +-- data. Here, print data is the term used for the information +-- that is used to construct printed pages and may have both data +-- and control aspects. The output of a channel is in a form +-- suitable for input to one of the interpreters as a +-- stream. A channel may be independently enabled (allowing +-- print data to flow) or disabled (stopping the flow of +-- print data). A printer may have one or more channels. +-- +-- The Print Job Delivery Channel table describes the +-- capabilities of the printer and not what is currently being +-- performed by the printer +-- +-- Basically, the print job delivery channel abstraction +-- describes the final processing step of getting the print data +-- to an interpreter. It might include some level of +-- decompression or decoding of print stream data. +-- channel. All of these aspects are hidden in the channel +-- abstraction. +-- +-- There are many kinds of print job delivery channels; some of +-- which are based on networks and others which are not. For +-- example, a channel can be a serial (or parallel) connection; +-- it can be a service, such as the UNIX Line Printer Daemon +-- (LPD), offering services over a network connection; or +-- it could be a disk drive into which a floppy disk with +-- the print data is inserted. Each print job delivery channel is +-- identified by the electronic path and/or service protocol +-- used to deliver print data to a print data interpreter. +-- +-- Channel example Implementation +-- +-- serial port channel bi-directional data channel + + + +-- parallel port channel often uni-directional channel +-- IEEE 1284 port channel bi-directional channel +-- SCSI port channel bi-directional +-- Apple PAP channel may be based on LocalTalk, +-- Ethernet or Tokentalk +-- LPD Server channel TCP/IP based, port 515 +-- Netware Remote Printer SPX/IPX based channel +-- Netware Print Server SPX/IPX based channel +-- +-- It is easy to note that this is a mixed bag. There are +-- some physical connections over which no (or very meager) +-- protocols are run (e.g., the serial or old parallel ports) +-- and there are services which often have elaborate +-- protocols that run over a number of protocol stacks. In +-- the end, what is important is the delivery of print data +-- through the channel. +-- +-- The print job delivery channel sub-units are represented by +-- the Print Job Delivery Channel Group in the Model. It has a +-- current print job control language, which can be used to +-- specify which interpreter is to be used for the print data and +-- to query and change environment variables used by the +-- interpreters (and Management Applications). There is also a +-- default interpreter that is to be used if an interpreter is +-- not explicitly specified using the Control Language. + +-- The first seven items in the Print Job Delivery Channel Table +-- define the "channel" itself. A channel typically depends on +-- other protocols and interfaces to provide the data that flows +-- through the channel. +-- +-- Control of a print job delivery channel is largely limited to +-- enabling or disabling the entire channel itself. It is likely +-- that more control of the process of accessing print data +-- will be needed over time. Thus, the ChannelType will +-- allow type-specific data to be associated with each +-- channel (using ChannelType specific groups in a fashion +-- analogous to the media specific MIBs that are associated +-- with the IANAIfType in the Interfaces Table). As a first +-- step in this direction, each channel will identify the +-- underlying Interface on which it is based. This is the +-- eighth object in each row of the table. + + + + + + + + + +-- The Print Job Delivery Channel Table + +prtChannel OBJECT IDENTIFIER ::= { printmib 14 } + +prtChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The channel table represents the set of input data sources + which can provide print data to one or more of the + interpreters available on a printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannel 1 } + +prtChannelEntry OBJECT-TYPE + SYNTAX PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. Each channel table entry is + characterized by a unique protocol stack and/or addressing. + The channel may also have printer dependent features that are + associated with a printing language. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtChannelIndex } + ::= { prtChannelTable 1 } + +PrtChannelEntry ::= SEQUENCE { + prtChannelIndex Integer32, + prtChannelType PrtChannelTypeTC, + prtChannelProtocolVersion OCTET STRING, + prtChannelCurrentJobCntlLangIndex Integer32, + prtChannelDefaultPageDescLangIndex Integer32, + prtChannelState PrtChannelStateTC, + prtChannelIfIndex InterfaceIndexOrZero, + prtChannelStatus PrtSubUnitStatusTC, + prtChannelInformation OCTET STRING + } + +prtChannelIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (1..65535) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this data + channel. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new data + channels to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 1 } + +prtChannelType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtChannelTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this print data channel. This object provides the + linkage to ChannelType-specific groups that may (conceptually) + extend the prtChannelTable with additional details about that + channel." + ::= { prtChannelEntry 2 } + +prtChannelProtocolVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the protocol used on this channel. The format + used for version numbering depends on prtChannelType." + ::= { prtChannelEntry 3 } + +prtChannelCurrentJobCntlLangIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Control + Language Interpreter for this channel. This interpreter defines + the syntax used for control functions, such as querying or + changing environment variables and identifying job boundaries + (e.g., PJL, PostScript, NPAP). A value of zero indicates that + there is no current Job Control Language Interpreter for this + channel. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 4 } + +prtChannelDefaultPageDescLangIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Page + Description Language Interpreter for this channel. This + interpreter defines the default Page Description Language + interpreter to be used for the print data unless the Control + Language is used to select a specific interpreter (e.g., PCL, + PostScript Language, auto-sense). A value of zero indicates + that there is no default page description language interpreter + for this channel. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 5 } + +prtChannelState OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtChannelStateTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this print data channel. The value determines + whether control information and print data is allowed through + this channel or not." + ::= { prtChannelEntry 6 } + +prtChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero -- Was Integer32 in RFC 1759. + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of ifIndex in the ifTable; see the Interfaces Group + MIB [RFC2863] which corresponds to this channel. + When more than one row of the ifTable is relevant, this is the + index of the row representing the topmost layer in the + interface hierarchy. A value of zero indicates that no + interface is associated with this channel. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + ::= { prtChannelEntry 7 } + +prtChannelStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the channel." + ::= { prtChannelEntry 8 } + +prtChannelInformation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Auxiliary information to allow a printing application to use + the channel for data submission to the printer. An application + capable of using a specific PrtChannelType should be able to + use the combined information from the prtChannelInformation and + other channel and interface group objects to 'bootstrap' its + use of the channel. prtChannelInformation is not intended to + provide a general channel description, nor to provide + information that is available once the channel is in use. + + The encoding and interpretation of the prtChannelInformation + object is specific to channel type. The description of each + PrtChannelType enum value for which prtChannelInformation is + defined specifies the appropriate encoding and interpretation, + including interaction with other objects. For channel types + that do not specify a prtChannelInformation value, its value + shall be null (0 length). + + When a new PrtChannelType enumeration value is registered, its + accompanying description must specify the encoding and + interpretation of the prtChannelInformation value for the + channel type. prtChannelInformation semantics for an existing + PrtChannelType may be added or amended in the same manner as + described in section 2.4.1 for type 2 enumeration values. + + The prtChannelInformation specifies values for a collection of + channel attributes, represented as text according to the + following rules: + + 1. The prtChannelInformation is not affected by localization. + + 2. The prtChannelInformation is a list of entries representing + the attribute values. Each entry consists of the following + + + + items, in order: + + a. A keyword, composed of alphabetic characters (A-Z, a-z) + represented by their NVT ASCII [RFC854] codes, that + identifies a channel attribute, + + b. The NVT ASCII code for an Equals Sign (=) (code 61) to + delimit the keyword, + + c. A data value encoded using rules specific to the + PrtChannelType to with the prtChannelInformation applies which + must in no case allow an octet with value 10 (the NVT ASCII + Line Feed code), + + d. the NVT ASCII code for a Line Feed character (code 10) to + delimit the data value. + + No other octets shall be present. + + Keywords are case-sensitive. Conventionally, keywords are + capitalized (including each word of a multi-word keyword) and + since they occupy space in the prtChannelInformation, they are + kept short. + + 3. If a channel attribute has multiple values, it is + represented by multiple entries with the same keyword, each + specifying one value. Otherwise, there shall be at most one + entry for each attribute. + + 4. By default, entries may appear in any order. If there are + ordering constraints for particular entries, these must be + specified in their definitions. + + 5. The prtChannelInformation value by default consists of text + represented by NVT ASCII graphics character codes. However, + other representations may be specified: + + a. In cases where the prtChannelInformation value contains + information not normally coded in textual form, whatever + symbolic representation is conventionally used for the + information should be used for encoding the + prtChannelInformation value. (For instance, a binary port value + might be represented as a decimal number using NVT ASCII + codes.) Such encoding must be specified in the definition of + the value. + + b. The value may contain textual information in a character set + other than NVT ASCII graphics characters. (For instance, an + + + + identifier might consist of ISO 10646 text encoded using the + UTF-8 encoding scheme.) Such a character set and its encoding + must be specified in the definition of the value. + + 6. For each PrtChannelType for which prtChannelInformation + entries are defined, the descriptive text associated with the + PrtChannelType enumeration value shall specify the following + information for each entry: + + Title: Brief description phrase, e.g.: 'Port name', + 'Service Name', etc. + + Keyword: The keyword value, e.g.: 'Port' or 'Service' + + Syntax: The encoding of the entry value if it cannot be + directly represented by NVT ASCII. + + Status: 'Mandatory', 'Optional', or 'Conditionally + Mandatory' + + Multiplicity: 'Single' or 'Multiple' to indicate whether the + entry may be present multiple times. + + Description: Description of the use of the entry, other + information required to complete the definition + (e.g.: ordering constraints, interactions between + entries). + + Applications that interpret prtChannelInformation should ignore + unrecognized entries, so they are not affected if new entry + types are added." + + ::= { prtChannelEntry 9 } + +-- The Interpreter Group +-- +-- The interpreter sub-units are responsible for the conversion +-- of a description of intended print instances into images that +-- are to be marked on the media. A printer may have one or more +-- interpreters. The interpreter sub-units are represented by the +-- Interpreter Group in the Model. Each interpreter is generally +-- implemented with software running on the System Controller +-- sub-unit. The Interpreter Table has one entry per interpreter +-- where the interpreters include both Page Description Language +-- (PDL) Interpreters and Control Language Interpreters. + +prtInterpreter OBJECT IDENTIFIER ::= { printmib 15 } + + + + +-- Interpreter Table + +prtInterpreterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interpreter table is a table representing the + interpreters in the printer. An entry shall be placed in the + interpreter table for each interpreter on the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreter 1 } + +prtInterpreterEntry OBJECT-TYPE + SYNTAX PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. Each table entry provides a complete + description of the interpreter, including version information, + rendering resolutions, default character sets, output + orientation, and communication capabilities. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtInterpreterIndex } + ::= { prtInterpreterTable 1 } + +PrtInterpreterEntry ::= SEQUENCE { + prtInterpreterIndex Integer32, + prtInterpreterLangFamily PrtInterpreterLangFamilyTC, + prtInterpreterLangLevel OCTET STRING, + prtInterpreterLangVersion OCTET STRING, + prtInterpreterDescription PrtLocalizedDescriptionStringTC, + prtInterpreterVersion OCTET STRING, + prtInterpreterDefaultOrientation PrtPrintOrientationTC, + prtInterpreterFeedAddressability Integer32, + prtInterpreterXFeedAddressability Integer32, + prtInterpreterDefaultCharSetIn IANACharset, + prtInterpreterDefaultCharSetOut IANACharset, + prtInterpreterTwoWay PrtInterpreterTwoWayTC + } + +prtInterpreterIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + + + + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each PDL or control language for which + there exists an interpreter or emulator in the printer. The + value is used to identify this interpreter. Although these + values may change due to a major reconfiguration of the device + (e.g., the addition of new interpreters to the printer), values + SHOULD remain stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 1 } + +prtInterpreterLangFamily OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInterpreterLangFamilyTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The family name of a Page Description Language (PDL) or + control language which this interpreter in the printer can + interpret or emulate. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 2 } + +prtInterpreterLangLevel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of the language which this interpreter is + interpreting or emulating. This might contain a value like + '5e'for an interpreter which is emulating level 5e of the PCL + language. It might contain '2' for an interpreter which is + emulating level 2 of the PostScript language. Similarly it + might contain '2' for an interpreter which is emulating level 2 + of the HPGL language." + ::= { prtInterpreterEntry 3 } + +prtInterpreterLangVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The date code or version of the language which this + interpreter is interpreting or emulating." + ::= { prtInterpreterEntry 4 } + +prtInterpreterDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string to identify this interpreter in the localization + specified by prtGeneralCurrentLocalization as opposed to the + language which is being interpreted. It is anticipated that + this string will allow manufacturers to unambiguously identify + their interpreters." + ::= { prtInterpreterEntry 5 } + +prtInterpreterVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code, version number, or other product specific + information tied to this interpreter. This value is associated + with the interpreter, rather than with the version of the + language which is being interpreted or emulated." + ::= { prtInterpreterEntry 6 } + +prtInterpreterDefaultOrientation OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtPrintOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current orientation default for this interpreter. This + value may be overridden for a particular job (e.g., by a + command in the input data stream)." + ::= { prtInterpreterEntry 7 } + +prtInterpreterFeedAddressability OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum interpreter addressability in the feed + direction in 10000 prtMarkerAddressabilityUnits (as specified + by prtMarkerDefaultIndex) for this interpreter. The + value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 8 } + +prtInterpreterXFeedAddressability OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the cross feed + direction in 10000 prtMarkerAddressabilityUnits (as specified + by prtMarkerDefaultIndex) for this interpreter. The + value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 9 } + +prtInterpreterDefaultCharSetIn OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default coded character set for input octets encountered + outside a context in which the Page Description Language + established the interpretation of the octets. (Input octets are + presented to the interpreter through a path defined in the + channel group.)" + ::= { prtInterpreterEntry 10 } + +prtInterpreterDefaultCharSetOut OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default character set for data coming from this + interpreter through the printer's output channel (i.e. the + 'backchannel')." + + + + ::= { prtInterpreterEntry 11 } + +prtInterpreterTwoWay OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInterpreterTwoWayTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + ::= { prtInterpreterEntry 12 } + +-- The Console Group +-- +-- Many printers have a console on the printer, the operator +-- console, that is used to display and modify the state of the +-- printer. The console can be as simple as a few indicators and +-- switches or as complicated as full screen displays and +-- keyboards. There can be at most one such console. + +-- The Display Buffer Table + +prtConsoleDisplayBuffer OBJECT IDENTIFIER ::= { printmib 16 } + +prtConsoleDisplayBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Physical display buffer for printer console display or + operator panel + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleDisplayBuffer 5 } + +prtConsoleDisplayBufferEntry OBJECT-TYPE + SYNTAX PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each physical line on + the display. Lines cannot be added or deleted. Entries may + exist in the table for each device index with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + INDEX { hrDeviceIndex, prtConsoleDisplayBufferIndex } + ::= { prtConsoleDisplayBufferTable 1 } + +PrtConsoleDisplayBufferEntry ::= SEQUENCE { + prtConsoleDisplayBufferIndex Integer32, + prtConsoleDisplayBufferText PrtConsoleDescriptionStringTC + } + +prtConsoleDisplayBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each console line in the printer. The value + is used to identify this console line. Although these values + may change due to a major reconfiguration of the device (e.g., + the addition of new console lines to the printer). Values + SHOULD remain stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleDisplayBufferEntry 1 } + +prtConsoleDisplayBufferText OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtConsoleDescriptionStringTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The content of a line in the logical display buffer of + the operator's console of the printer. When a write + operation occurs, normally a critical message, to one of + the LineText strings, the agent should make that line + displayable if a physical display is present. Writing a zero + length string clears the line. It is an implementation- + specific matter as to whether the agent allows a line to be + overwritten before it has been cleared. Printer generated + strings shall be in the localization specified by + prtConsoleLocalization.Management Application generated strings + should be localized by the Management Application." + ::= { prtConsoleDisplayBufferEntry 2 } + +-- The Console Light Table + +prtConsoleLights OBJECT IDENTIFIER ::= { printmib 17 } + + + + +prtConsoleLightTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The console light table provides a description and state + information for each light present on the printer console. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLights 6 } + +prtConsoleLightEntry OBJECT-TYPE + SYNTAX PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtConsoleLightIndex } + ::= { prtConsoleLightTable 1 } + +PrtConsoleLightEntry ::= SEQUENCE { + prtConsoleLightIndex Integer32, + prtConsoleOnTime Integer32, + prtConsoleOffTime Integer32, + prtConsoleColor PrtConsoleColorTC, + prtConsoleDescription PrtConsoleDescriptionStringTC + } + +prtConsoleLightIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) -- Lower limit invalid in RFC 1759 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this light. + Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new lights + to the printer). Values SHOULD remain stable across successive + printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 1 } + + + + +prtConsoleOnTime OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOffTime, defines + the current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 2 } + +prtConsoleOffTime OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOnTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 3 } + +prtConsoleColor OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtConsoleColorTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The color of this light." + ::= { prtConsoleLightEntry 4 } + + + + +prtConsoleDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtConsoleDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor description or label of this light in the + localization specified by prtConsoleLocalization." + ::= { prtConsoleLightEntry 5 } + +-- The Alerts Group +-- +-- The table contains information on the severity, component, +-- detail location within the component, alert code and +-- description of each critical alert that is currently active +-- within the printer. See 2.2.13 for a more complete +-- description of the alerts table and its management. +-- +-- Each parameter in the Trap PDU is a full OID which itself is +-- indexed by the host resources MIB "hrDeviceIndex" object. In +-- order for a management station to obtain the correct +-- "hrDeviceIndex" associated with a particular Trap PDU, the +-- "hrDeviceIndex" value can be extracted from the returned OID +-- value in the Trap PDU when the PDU is received by the +-- Management station. + +prtAlert OBJECT IDENTIFIER ::= { printmib 18 } + +prtAlertTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prtAlertTable lists all the critical and non-critical + alerts currently active in the printer. A critical alert is + one that stops the printer from printing immediately and + printing can not continue until the critical alert condition + is eliminated. Non-critical alerts are those items that do + not stop printing but may at some future time. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlert 1 } + +prtAlertEntry OBJECT-TYPE + SYNTAX PrtAlertEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtAlertIndex } + ::= { prtAlertTable 1 } + +PrtAlertEntry ::= SEQUENCE { + prtAlertIndex Integer32, + prtAlertSeverityLevel PrtAlertSeverityLevelTC, + prtAlertTrainingLevel PrtAlertTrainingLevelTC, + prtAlertGroup PrtAlertGroupTC, + prtAlertGroupIndex Integer32, + prtAlertLocation Integer32, + prtAlertCode PrtAlertCodeTC, + prtAlertDescription PrtLocalizedDescriptionStringTC, + prtAlertTime TimeTicks + } + +prtAlertIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. The MAX-ACCESS has + -- been changed from not accessible to allow the object to be + -- included (as originally in RFC 1759) in the trap bindings. + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index value used to determine which alerts have been added + or removed from the alert table. This is an incrementing + integer initialized to 1 when the printer is reset. (i.e., The + first event placed in the alert table after a reset of the + printer shall have an index value of 1.) When the printer adds + an alert to the table, that alert is assigned the next higher + integer value from the last item entered into the table. If + the index value reaches its maximum value, the next index value + used must be 1. + + NOTE: The management application will read the alert table when + a trap or event notification occurs or at a periodic rate and + then parse the table to determine if any new entries were added + by comparing the last known index value with the current + highest index value. The management application will then + update its copy of the alert table. When the printer discovers + that an alert is no longer active, the printer shall remove the + + + + row for that alert from the table and shall reduce the number + of rows in the table. The printer may add or delete any number + of rows from the table at any time. The management station can + detect when binary change alerts have been deleted by + requesting an attribute of each alert, and noting alerts as + deleted when that retrieval is not possible. The objects + 'prtAlertCriticalEvents'and 'prtAlertAllEvents' in the + 'prtGeneralTable' reduce the need for management applications + to scan the 'prtAlertTable'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 1 } + +prtAlertSeverityLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertSeverityLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry into the + table." + ::= { prtAlertEntry 2 } + +prtAlertTrainingLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertTrainingLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See TEXTUAL-CONVENTION PrtAlertTrainingLevelTC. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 3 } + +prtAlertGroup OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertGroupTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + is related. Input, output, and markers are examples of printer + + + + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printmib." + ::= { prtAlertEntry 4 } + +prtAlertGroupIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The low-order index of the row within the table identified + by prtAlertGroup that represents the sub-unit of the printer + that caused this alert, or -1 if not applicable. The + combination of the prtAlertGroup and the prtAlertGroupIndex + defines exactly which printer sub-unit caused the alert; for + example, Input #3, Output#2, and Marker #1. Every object in + this MIB is indexed with hrDeviceIndex and optionally, another + index variable. If this other index variable is present in the + table that generated the alert, it will be used as the value + for this object. Otherwise, this value shall be -1. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 5 } + +prtAlertLocation OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sub-unit location that is defined by the printer + manufacturer to further refine the location of this alert + within the designated sub-unit. The location is used in + conjunction with the Group and GroupIndex values; for example, + there is an alert in Input #2 at location number 7. The value + (-2) indicates unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 6 } + +prtAlertCode OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertCodeTC + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "See associated TEXTUAL-CONVENTION PrtAlertCodeTC. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 7 } + +prtAlertDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of this alert entry in the localization + specified by prtGeneralCurrentLocalization. The description is + provided by the printer to further elaborate on the enumerated + alert or provide information in the case where the code is + classified as 'other' or 'unknown'. The printer is required to + return a description string but the string may be a null + string." + ::= { prtAlertEntry 8 } + +prtAlertTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this alert was + generated." + ::= { prtAlertEntry 9 } + +printerV1Alert OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The value of the enterprise-specific OID in an SNMPv1 trap + sent signaling a critical event in the prtAlertTable." + ::= { prtAlert 2 } + +printerV2AlertPrefix OBJECT IDENTIFIER ::= { printerV1Alert 0 } + +printerV2Alert NOTIFICATION-TYPE + OBJECTS { prtAlertIndex, prtAlertSeverityLevel, prtAlertGroup, + prtAlertGroupIndex, prtAlertLocation, prtAlertCode } + STATUS current + DESCRIPTION + "This trap is sent whenever a critical event is added to the + + + + prtAlertTable. + + NOTE: The prtAlertIndex object was redundantly included in the + bindings of the 'printerV2Alert' notification in RFC 1759, even + though the value exists in the instance qualifier of all the + other bindings. This object has been retained to provide + compatiblity with existing RFC 1759 implementaions." + ::= { printerV2AlertPrefix 1 } + +-- Note that the SNMPv2 to SNMPv1 translation rules dictate that +-- the preceding structure will result in SNMPv1 traps of the +-- following form: +-- +-- printerAlert TRAP-TYPE +-- ENTERPRISE printerV1Alert +-- VARIABLES { prtAlertIndex, prtAlertSeverityLevel, +-- prtAlertGroup, prtAlertGroupIndex, +-- prtAlertLocation, prtAlertCode } +-- DESCRIPTION +-- "This trap is sent whenever a critical event is added +-- to the prtAlertTable." +-- ::= 1 + +-- Conformance Information + +prtMIBConformance OBJECT IDENTIFIER ::= { printmib 2 } + +-- compliance statements + +prtMIBCompliance MODULE-COMPLIANCE + + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB as defined by RFC 1759." + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + + + + object. Any additional states are optional." + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + ::= { prtMIBConformance 1 } + +prtMIB2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB V2." + -- The changes from RFC 1759 fall into 2 categories: + -- 1. New objects plus existing objects with a MIN-ACCESS of + -- read-only are included. Existing objects have been added + -- to this category due to feedback from implementers and + -- interoperability testing. This allows products to be + -- be designed with a higher degree of SNMP security. + -- 2. New object groups have been added to include all new + -- objects in this MIB. All new object groups are optional. + -- Any MIB that is compliant with RFC 1759 will also be + -- compliant with this version of the MIB. + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + object. Any additional states are optional." + + OBJECT prtGeneralCurrentLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + + OBJECT prtGeneralCurrentOperator + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralServicePerson + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralPrinterName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralSerialNumber + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaDimFeedDirDeclared + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputName + MIN-ACCESS read-only + DESCRIPTION + + + + "It is conformant to implement this object as read-only" + + OBJECT prtInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaColor + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaFormParts + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputRemainingCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputSecurity + + + + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputStackingOrder + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageDeliveryOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputBursting + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDecollating + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageCollated + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + OBJECT prtOutputOffsetStacking + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMediaPathDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelCurrentJobCntlLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelDefaultPageDescLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelState + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultOrientation + MIN-ACCESS read-only + DESCRIPTION + + + + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetIn + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetOut + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisable + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisplayBufferText + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAlertIndex + MIN-ACCESS accessible-for-notify + DESCRIPTION + "It is conformant to implement this object as + accessible-for-notify " + + GROUP prtResponsiblePartyGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedInputGroup + + + + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputMediaGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedOutputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputDimensionsGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputFeaturesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerSuppliesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerColorantGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTimeGroup + DESCRIPTION + "This group is unconditionally optional." + + -- the prtResponsiblePartyGroup, prtExtendedInputGroup, + -- prtInputMediaGroup, prtExtendedOutputGroup, + -- prtOutputDimensionsGroup, prtOutputFeaturesGroup, + -- prtMarkerSuppliesGroup, prtMarkerColorantGroup, and the + -- prtAlertTimeGroup are completely optional. However, it is + -- strongly RECOMMENDED that the prtAlertTimeGroup be implemented. + + -- New to version 2 of this printer MIB: + OBJECT prtAuxiliarySheetStartupPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAuxiliarySheetBannerPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + OBJECT prtInputMediaLoadTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputNextIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtAuxiliarySheetGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputSwitchingGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtGeneralV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTableV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtChannelV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTrapGroup + DESCRIPTION + "This group is unconditionally optional." + ::= { prtMIBConformance 3 } + +prtMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 2 } +-- These groups are from RFC 1759 and are applicable to Printer MIB V2 + +prtGeneralGroup OBJECT-GROUP + OBJECTS { prtGeneralConfigChanges, + prtGeneralCurrentLocalization, + prtGeneralReset, prtCoverDescription, + prtCoverStatus, + prtLocalizationLanguage, prtLocalizationCountry, + prtLocalizationCharacterSet, prtStorageRefIndex, + prtDeviceRefIndex } + STATUS current + DESCRIPTION + + + + "The general printer group." + ::= { prtMIBGroups 1 } + +prtResponsiblePartyGroup OBJECT-GROUP + OBJECTS { prtGeneralCurrentOperator, prtGeneralServicePerson } + STATUS current + DESCRIPTION + "The responsible party group contains contact information for + humans responsible for the printer." + ::= { prtMIBGroups 2 } + +prtInputGroup OBJECT-GROUP + OBJECTS { prtInputDefaultIndex, prtInputType, prtInputDimUnit, + prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, + prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputCapacityUnit, + prtInputMaxCapacity, prtInputCurrentLevel, prtInputStatus, + prtInputMediaName } + STATUS current + DESCRIPTION + "The input group." + ::= { prtMIBGroups 3 } + +prtExtendedInputGroup OBJECT-GROUP + OBJECTS { prtInputName, prtInputVendorName, prtInputModel, + prtInputVersion, prtInputSerialNumber, + prtInputDescription, prtInputSecurity } + STATUS current + DESCRIPTION + "The extended input group." + ::= { prtMIBGroups 4 } + +prtInputMediaGroup OBJECT-GROUP + OBJECTS { prtInputMediaWeight, prtInputMediaType, + prtInputMediaColor, prtInputMediaFormParts } + STATUS current + DESCRIPTION + "The input media group." + ::= { prtMIBGroups 5 } + +prtOutputGroup OBJECT-GROUP + OBJECTS { prtOutputDefaultIndex, prtOutputType, + prtOutputCapacityUnit, prtOutputMaxCapacity, + prtOutputRemainingCapacity, prtOutputStatus } + STATUS current + DESCRIPTION + "The output group." + + + + ::= { prtMIBGroups 6 } + +prtExtendedOutputGroup OBJECT-GROUP + OBJECTS { prtOutputName, prtOutputVendorName, prtOutputModel, + prtOutputVersion, prtOutputSerialNumber, + prtOutputDescription, prtOutputSecurity } + STATUS current + DESCRIPTION + "The extended output group." + ::= { prtMIBGroups 7 } + +prtOutputDimensionsGroup OBJECT-GROUP + OBJECTS { prtOutputDimUnit, prtOutputMaxDimFeedDir, + prtOutputMaxDimXFeedDir, prtOutputMinDimFeedDir, + prtOutputMinDimXFeedDir } + STATUS current + DESCRIPTION + "The output dimensions group" + ::= { prtMIBGroups 8 } + +prtOutputFeaturesGroup OBJECT-GROUP + OBJECTS { prtOutputStackingOrder, + prtOutputPageDeliveryOrientation, prtOutputBursting, + prtOutputDecollating, prtOutputPageCollated, + prtOutputOffsetStacking } + STATUS current + DESCRIPTION + "The output features group." + ::= { prtMIBGroups 9 } + +prtMarkerGroup OBJECT-GROUP + OBJECTS { prtMarkerDefaultIndex, prtMarkerMarkTech, + prtMarkerCounterUnit, prtMarkerLifeCount, + prtMarkerPowerOnCount, prtMarkerProcessColorants, + prtMarkerSpotColorants, prtMarkerAddressabilityUnit, + prtMarkerAddressabilityFeedDir, + prtMarkerAddressabilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerStatus } + STATUS current + DESCRIPTION + "The marker group." + ::= { prtMIBGroups 10 } + +prtMarkerSuppliesGroup OBJECT-GROUP + OBJECTS { prtMarkerSuppliesMarkerIndex, + prtMarkerSuppliesColorantIndex, prtMarkerSuppliesClass, + prtMarkerSuppliesType, prtMarkerSuppliesDescription, + + + + prtMarkerSuppliesSupplyUnit, + prtMarkerSuppliesMaxCapacity, prtMarkerSuppliesLevel } + STATUS current + DESCRIPTION + "The marker supplies group." + ::= { prtMIBGroups 11 } + +prtMarkerColorantGroup OBJECT-GROUP + OBJECTS { prtMarkerColorantMarkerIndex, prtMarkerColorantRole, + prtMarkerColorantValue, prtMarkerColorantTonality } + STATUS current + DESCRIPTION + "The marker colorant group." + ::= { prtMIBGroups 12 } + +prtMediaPathGroup OBJECT-GROUP + OBJECTS { prtMediaPathDefaultIndex, prtMediaPathMaxSpeedPrintUnit, + prtMediaPathMediaSizeUnit, prtMediaPathMaxSpeed, + prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, + prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtMediaPathType, + prtMediaPathDescription, prtMediaPathStatus} + STATUS current + DESCRIPTION + "The media path group." + ::= { prtMIBGroups 13 } + +prtChannelGroup OBJECT-GROUP + OBJECTS { prtChannelType, prtChannelProtocolVersion, + prtChannelCurrentJobCntlLangIndex, + prtChannelDefaultPageDescLangIndex, prtChannelState, + prtChannelIfIndex, prtChannelStatus + } + STATUS current + DESCRIPTION + "The channel group." + ::= { prtMIBGroups 14 } + +prtInterpreterGroup OBJECT-GROUP + OBJECTS { prtInterpreterLangFamily, prtInterpreterLangLevel, + prtInterpreterLangVersion, prtInterpreterDescription, + prtInterpreterVersion, prtInterpreterDefaultOrientation, + prtInterpreterFeedAddressability, + prtInterpreterXFeedAddressability, + prtInterpreterDefaultCharSetIn, + prtInterpreterDefaultCharSetOut, prtInterpreterTwoWay } + STATUS current + + + + DESCRIPTION + "The interpreter group." + ::= { prtMIBGroups 15 } + +prtConsoleGroup OBJECT-GROUP + OBJECTS { prtConsoleLocalization, prtConsoleNumberOfDisplayLines, + prtConsoleNumberOfDisplayChars, prtConsoleDisable, + prtConsoleDisplayBufferText, prtConsoleOnTime, + prtConsoleOffTime, prtConsoleColor, + prtConsoleDescription } + STATUS current + DESCRIPTION + "The console group." + ::= { prtMIBGroups 16 } + +prtAlertTableGroup OBJECT-GROUP + OBJECTS { prtAlertSeverityLevel, prtAlertTrainingLevel, + prtAlertGroup, prtAlertGroupIndex, prtAlertLocation, + prtAlertCode, prtAlertDescription } + STATUS current + DESCRIPTION + "The alert table group." + ::= { prtMIBGroups 17 } + +prtAlertTimeGroup OBJECT-GROUP + OBJECTS { prtAlertTime } + STATUS current + DESCRIPTION + "The alert time group. Implementation of prtAlertTime is + strongly RECOMMENDED." + ::= { prtMIBGroups 18 } + +prtMIB2Groups OBJECT IDENTIFIER ::= { prtMIBConformance 4 } +-- These groups are unique to Printer MIB V2 + +prtAuxiliarySheetGroup OBJECT-GROUP + OBJECTS { prtAuxiliarySheetStartupPage, + prtAuxiliarySheetBannerPage } + STATUS current + DESCRIPTION + "The auxiliary sheet group." + ::= { prtMIBGroups 19 } + +prtInputSwitchingGroup OBJECT-GROUP + OBJECTS { prtInputMediaLoadTimeout, prtInputNextIndex } + STATUS current + DESCRIPTION + "The input switching group." + + + + ::= { prtMIBGroups 20 } + +prtGeneralV2Group OBJECT-GROUP + OBJECTS { prtGeneralPrinterName, prtGeneralSerialNumber } + STATUS current + DESCRIPTION + "The general printer group with new v2 objects." + ::= { prtMIBGroups 21 } + +prtAlertTableV2Group OBJECT-GROUP + OBJECTS { prtAlertIndex, prtAlertCriticalEvents, prtAlertAllEvents } + STATUS current + DESCRIPTION + "The alert table group with new v2 objects and prtAlertIndex + changed to MAX-ACCESS of 'read-only' for inclusion in the trap + bindings (as originally defined in RFC 1759)." + + ::= { prtMIBGroups 22 } + +prtChannelV2Group OBJECT-GROUP + OBJECTS { prtChannelInformation } + STATUS current + DESCRIPTION + "The channel group with a new v2 object." + ::= { prtMIBGroups 23 } + +prtAlertTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { printerV2Alert } + STATUS current + DESCRIPTION + "The alert trap group." + ::= { prtMIBGroups 24 } + +END diff --git a/mibs/ietf/Q-BRIDGE-MIB b/mibs/ietf/Q-BRIDGE-MIB new file mode 100644 index 0000000..b9c82a7 --- /dev/null +++ b/mibs/ietf/Q-BRIDGE-MIB @@ -0,0 +1,2489 @@ +Q-BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1Q Devices +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Counter64, Unsigned32, TimeTicks, Integer32 + FROM SNMPv2-SMI + RowStatus, TruthValue, TEXTUAL-CONVENTION, MacAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dBridge, dot1dBasePortEntry, dot1dBasePort + FROM BRIDGE-MIB + EnabledStatus + FROM P-BRIDGE-MIB + TimeFilter + FROM RMON2-MIB; + +qBridgeMIB MODULE-IDENTITY + LAST-UPDATED "200601090000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: Bridge-mib@ietf.org + ietfmibs@ops.ietf.org + + David Levi + Postal: Nortel Networks + 4655 Great America Parkway + Santa Clara, CA 95054 + USA + Phone: +1 865 686 0432 + Email: dlevi@nortel.com + + David Harrington + Postal: Effective Software + 50 Harding Rd. + Portsmouth, NH 03801 + USA + Phone: +1 603 436 8634 + Email: ietfdbh@comcast.net + + + + Les Bell + Postal: Hemel Hempstead, Herts. HP2 7YU + UK + Email: elbell@ntlworld.com + + Andrew Smith + Postal: Beijing Harbour Networks + Jiuling Building + 21 North Xisanhuan Ave. + Beijing, 100089 + PRC + Fax: +1 415 345 1827 + Email: ah_smith@acm.org + + Paul Langille + Postal: Newbridge Networks + 5 Corporate Drive + Andover, MA 01810 + USA + Phone: +1 978 691 4665 + Email: langille@newbridge.com + + Anil Rijhsinghani + Postal: Accton Technology Corporation + 5 Mount Royal Ave + Marlboro, MA 01752 + USA + Phone: + Email: anil@accton.com + + Keith McCloghrie + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The VLAN Bridge MIB module for managing Virtual Bridged + Local Area Networks, as defined by IEEE 802.1Q-2003, + including Restricted Vlan Registration defined by + IEEE 802.1u-2001 and Vlan Classification defined by + IEEE 802.1v-2001. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4363; See the RFC itself for + full legal notices." + REVISION "200601090000Z" + + + + DESCRIPTION + "Added Vlan TEXTUAL-CONVENTIONs, + dot1qPortRestrictedVlanRegistration, dot1vProtocol subtree, + qBridgeClassificationDeviceGroup, qBridgePortGroup2, + qBridgeClassificationPortGroup, and qBridgeCompliance2. + Clarified dot1qForwardAllStaticPorts, + qPortAcceptableFrameTypes, and qBridgeCompliance. + Deprecated qBridgePortGroup and qBridgeCompliance." + + REVISION "199908250000Z" + DESCRIPTION + "The VLAN Bridge MIB module for managing Virtual Bridged + Local Area Networks, as defined by IEEE 802.1Q-1998. + + Initial version, published as RFC 2674." + + ::= { dot1dBridge 7 } + +qBridgeMIBObjects OBJECT IDENTIFIER ::= { qBridgeMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +PortList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each octet within this value 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'." + SYNTAX OCTET STRING + +VlanIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A value used to index per-VLAN tables: values of 0 and + 4095 are not permitted. If the value is between 1 and + 4094 inclusive, it represents an IEEE 802.1Q VLAN-ID with + global scope within a given bridged domain (see VlanId + textual convention). If the value is greater than 4095, + + + + then it represents a VLAN with scope local to the + particular agent, i.e., one without a global VLAN-ID + assigned to it. Such VLANs are outside the scope of + IEEE 802.1Q, but it is convenient to be able to manage them + in the same way using this MIB." + SYNTAX Unsigned32 + +VlanId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a VLAN. This + is the 12-bit VLAN-ID used in the VLAN Tag header. + The range is defined by the REFERENCEd specification." + REFERENCE + "IEEE Std 802.1Q 2003 Edition, Virtual Bridged + Local Area Networks." + SYNTAX Integer32 (1..4094) + +VlanIdOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + or any VLAN. The special value of 4095 is used to + indicate a wildcard, i.e., any VLAN. This can be used + in any situation where an object or table entry must + refer either to a specific VLAN or to any VLAN. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'any VLAN' (i.e., the special value 4095)." + SYNTAX Integer32 (1..4094 | 4095) + +VlanIdOrNone ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + or no VLAN. The special value of zero is used to + indicate that no VLAN-ID is present or used. This can + be used in any situation where an object or a table entry + must refer either to a specific VLAN, or to no VLAN. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'no VLAN' (i.e., the special value 0)." + SYNTAX Integer32 (0 | 1..4094) + + + +VlanIdOrAnyOrNone ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + any VLAN, or no VLAN. The special values 0 and 4095 + have the same meaning as described in the VlanIdOrAny + and VlanIdOrNone TEXTUAL-CONVENTIONs. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'any VLAN' and 'no VLAN' (i.e., the special values + 0 and 4095)." + SYNTAX Integer32 (0 | 1..4094 | 4095) + +-- ------------------------------------------------------------- +-- subtrees in the Q-BRIDGE MIB +-- ------------------------------------------------------------- + +dot1qBase OBJECT IDENTIFIER ::= { qBridgeMIBObjects 1 } +dot1qTp OBJECT IDENTIFIER ::= { qBridgeMIBObjects 2 } +dot1qStatic OBJECT IDENTIFIER ::= { qBridgeMIBObjects 3 } +dot1qVlan OBJECT IDENTIFIER ::= { qBridgeMIBObjects 4 } +dot1vProtocol OBJECT IDENTIFIER ::= { qBridgeMIBObjects 5 } + +-- ------------------------------------------------------------- +-- dot1qBase subtree +-- ------------------------------------------------------------- + +dot1qVlanVersionNumber OBJECT-TYPE + SYNTAX INTEGER { + version1(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of IEEE 802.1Q that this device + supports." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + ::= { dot1qBase 1 } + +dot1qMaxVlanId OBJECT-TYPE + SYNTAX VlanId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum IEEE 802.1Q VLAN-ID that this device + + + + supports." + REFERENCE + "IEEE 802.1Q/D11 Section 9.3.2.3" + ::= { dot1qBase 2 } + +dot1qMaxSupportedVlans OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of IEEE 802.1Q VLANs that this + device supports." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + ::= { dot1qBase 3 } + +dot1qNumVlans OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of IEEE 802.1Q VLANs that are + configured in this device." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.1.1" + ::= { dot1qBase 4 } + +dot1qGvrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status requested by management for + GVRP. The value enabled(1) indicates that GVRP should + be enabled on this device, on all ports for which it has + not been specifically disabled. When disabled(2), GVRP + is disabled on all ports, and all GVRP packets will be + forwarded transparently. This object affects all GVRP + Applicant and Registrar state machines. A transition + from disabled(2) to enabled(1) will cause a reset of all + GVRP state machines on all ports. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1qBase 5 } + +-- ------------------------------------------------------------- + + + +-- the dot1qTp subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- the current Filtering Database Table +-- ------------------------------------------------------------- + +dot1qFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains configuration and control + information for each Filtering Database currently + operating on this device. Entries in this table appear + automatically when VLANs are assigned FDB IDs in the + dot1qVlanCurrentTable." + ::= { dot1qTp 1 } + +dot1qFdbEntry OBJECT-TYPE + SYNTAX Dot1qFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a specific Filtering Database." + INDEX { dot1qFdbId } + ::= { dot1qFdbTable 1 } + +Dot1qFdbEntry ::= + SEQUENCE { + dot1qFdbId + Unsigned32, + dot1qFdbDynamicCount + Counter32 + } + +dot1qFdbId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identity of this Filtering Database." + ::= { dot1qFdbEntry 1 } + +dot1qFdbDynamicCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of dynamic entries in this + Filtering Database." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.1.1.3" + ::= { dot1qFdbEntry 2 } + +-- ------------------------------------------------------------- +-- Multiple Forwarding Databases for 802.1Q Transparent Devices +-- This table is an alternative to the dot1dTpFdbTable, +-- previously defined for 802.1D devices that only support a +-- single Forwarding Database. +-- ------------------------------------------------------------- + +dot1qTpFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about unicast entries + for which the device has forwarding and/or filtering + information. This information is used by the + transparent bridging function in determining how to + propagate a received frame." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7" + ::= { dot1qTp 2 } + +dot1qTpFdbEntry OBJECT-TYPE + SYNTAX Dot1qTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a specific unicast MAC address for + which the device has some forwarding and/or filtering + information." + INDEX { dot1qFdbId, dot1qTpFdbAddress } + ::= { dot1qTpFdbTable 1 } + +Dot1qTpFdbEntry ::= + SEQUENCE { + dot1qTpFdbAddress + MacAddress, + dot1qTpFdbPort + Integer32, + dot1qTpFdbStatus + INTEGER + } + + + +dot1qTpFdbAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unicast MAC address for which the device has + forwarding and/or filtering information." + ::= { dot1qTpFdbEntry 1 } + +dot1qTpFdbPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + 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 dot1qTpFdbAddress has + been seen. A value of '0' indicates that the port + number has not been learned but that the device does + have some forwarding/filtering information about this + address (e.g., in the dot1qStaticUnicastTable). + Implementors are encouraged to assign the port value to + this object whenever it is learned, even for addresses + for which the corresponding value of dot1qTpFdbStatus is + not learned(3)." + ::= { dot1qTpFdbEntry 2 } + +dot1qTpFdbStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + learned(3), + self(4), + mgmt(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this entry. The meanings of the values + are: + other(1) - none of the following. This may include + the case where some other MIB object (not the + corresponding instance of dot1qTpFdbPort, nor an + entry in the dot1qStaticUnicastTable) is being + used to determine if and how frames addressed to + the value of the corresponding instance of + dot1qTpFdbAddress are being forwarded. + invalid(2) - this entry is no 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 dot1qTpFdbPort was learned and is being used. + self(4) - the value of the corresponding instance of + dot1qTpFdbAddress represents one of the device's + addresses. The corresponding instance of + dot1qTpFdbPort indicates which of the device's + ports has this address. + mgmt(5) - the value of the corresponding instance of + dot1qTpFdbAddress is also the value of an + existing instance of dot1qStaticAddress." + ::= { dot1qTpFdbEntry 3 } + +-- ------------------------------------------------------------- +-- Dynamic Group Registration Table +-- ------------------------------------------------------------- + +dot1qTpGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qTpGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for VLANs + configured into the bridge by (local or network) + management, or learned dynamically, specifying the set of + ports to which frames received on a VLAN for this FDB + and containing a specific Group destination address are + allowed to be forwarded." + ::= { dot1qTp 3 } + +dot1qTpGroupEntry OBJECT-TYPE + SYNTAX Dot1qTpGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the bridge by + management, or learned dynamically, specifying the set of + ports to which frames received on a VLAN and containing + a specific Group destination address are allowed to be + forwarded. The subset of these ports learned dynamically + is also provided." + INDEX { dot1qVlanIndex, dot1qTpGroupAddress } + ::= { dot1qTpGroupTable 1 } + +Dot1qTpGroupEntry ::= + SEQUENCE { + dot1qTpGroupAddress + + + + MacAddress, + dot1qTpGroupEgressPorts + PortList, + dot1qTpGroupLearnt + PortList + } + +dot1qTpGroupAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination Group MAC address in a frame to which + this entry's filtering information applies." + ::= { dot1qTpGroupEntry 1 } + +dot1qTpGroupEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports, in this VLAN, to which + frames destined for this Group MAC address are currently + being explicitly forwarded. This does not include ports + for which this address is only implicitly forwarded, in + the dot1qForwardAllPorts list." + ::= { dot1qTpGroupEntry 2 } + +dot1qTpGroupLearnt OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subset of ports in dot1qTpGroupEgressPorts that + were learned by GMRP or some other dynamic mechanism, in + this Filtering database." + ::= { dot1qTpGroupEntry 3 } + +-- ------------------------------------------------------------- +-- Service Requirements subtree +-- ------------------------------------------------------------- + +dot1qForwardAllTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qForwardAllEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing forwarding information for each + + + + VLAN, specifying the set of ports to which forwarding of + all multicasts applies, configured statically by + management or dynamically by GMRP. An entry appears in + this table for all VLANs that are currently + instantiated." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.2, 12.7.7" + ::= { dot1qTp 4 } + +dot1qForwardAllEntry OBJECT-TYPE + SYNTAX Dot1qForwardAllEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Forwarding information for a VLAN, specifying the set + of ports to which all multicasts should be forwarded, + configured statically by management or dynamically by + GMRP." + INDEX { dot1qVlanIndex } + ::= { dot1qForwardAllTable 1 } + +Dot1qForwardAllEntry ::= + SEQUENCE { + dot1qForwardAllPorts + PortList, + dot1qForwardAllStaticPorts + PortList, + dot1qForwardAllForbiddenPorts + PortList + } + +dot1qForwardAllPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports in this VLAN to which all + multicast group-addressed frames are to be forwarded. + This includes ports for which this need has been + determined dynamically by GMRP, or configured statically + by management." + ::= { dot1qForwardAllEntry 1 } + +dot1qForwardAllStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The set of ports configured by management in this VLAN + to which all multicast group-addressed frames are to be + forwarded. Ports entered in this list will also appear + in the complete set shown by dot1qForwardAllPorts. This + value will be restored after the device is reset. This + only applies to ports that are members of the VLAN, + defined by dot1qVlanCurrentEgressPorts. A port may not + be added in this set if it is already a member of the + set of ports in dot1qForwardAllForbiddenPorts. The + default value is a string of ones of appropriate length, + to indicate the standard behaviour of using basic + filtering services, i.e., forward all multicasts to all + ports. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardAllEntry 2 } + +dot1qForwardAllForbiddenPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management in this VLAN + for which the Service Requirement attribute Forward All + Multicast Groups may not be dynamically registered by + GMRP. This value will be restored after the device is + reset. A port may not be added in this set if it is + already a member of the set of ports in + dot1qForwardAllStaticPorts. The default value is a + string of zeros of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardAllEntry 3 } + +dot1qForwardUnregisteredTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qForwardUnregisteredEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing forwarding information for each + VLAN, specifying the set of ports to which forwarding of + multicast group-addressed frames for which no + more specific forwarding information applies. This is + configured statically by management and determined + dynamically by GMRP. An entry appears in this table for + all VLANs that are currently instantiated." + + + + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.2, 12.7.7" + ::= { dot1qTp 5 } + +dot1qForwardUnregisteredEntry OBJECT-TYPE + SYNTAX Dot1qForwardUnregisteredEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Forwarding information for a VLAN, specifying the set + of ports to which all multicasts for which there is no + more specific forwarding information shall be forwarded. + This is configured statically by management or + dynamically by GMRP." + INDEX { dot1qVlanIndex } + ::= { dot1qForwardUnregisteredTable 1 } + +Dot1qForwardUnregisteredEntry ::= + SEQUENCE { + dot1qForwardUnregisteredPorts + PortList, + dot1qForwardUnregisteredStaticPorts + PortList, + dot1qForwardUnregisteredForbiddenPorts + PortList + } + +dot1qForwardUnregisteredPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports in this VLAN to which + multicast group-addressed frames for which there is no + more specific forwarding information will be forwarded. + This includes ports for which this need has been + determined dynamically by GMRP, or configured statically + by management." + ::= { dot1qForwardUnregisteredEntry 1 } + +dot1qForwardUnregisteredStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management, in this + VLAN, to which multicast group-addressed frames for + which there is no more specific forwarding information + + + + are to be forwarded. Ports entered in this list will + also appear in the complete set shown by + dot1qForwardUnregisteredPorts. This value will be + restored after the device is reset. A port may not be + added in this set if it is already a member of the set + of ports in dot1qForwardUnregisteredForbiddenPorts. The + default value is a string of zeros of appropriate + length, although this has no effect with the default + value of dot1qForwardAllStaticPorts. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardUnregisteredEntry 2 } + +dot1qForwardUnregisteredForbiddenPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management in this VLAN + for which the Service Requirement attribute Forward + Unregistered Multicast Groups may not be dynamically + registered by GMRP. This value will be restored after + the device is reset. A port may not be added in this + set if it is already a member of the set of ports in + dot1qForwardUnregisteredStaticPorts. The default value + is a string of zeros of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardUnregisteredEntry 3 } + +-- ------------------------------------------------------------- +-- The Static (Destination-Address Filtering) Database +-- ------------------------------------------------------------- + +dot1qStaticUnicastTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qStaticUnicastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for Unicast + MAC addresses for each Filtering Database, configured + into the device by (local or network) management + specifying the set of ports to which frames received + from specific ports and containing specific unicast + destination addresses are allowed to be forwarded. A + 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 + addresses only." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7, + ISO/IEC 15802-3 Section 7.9.1" + ::= { dot1qStatic 1 } + +dot1qStaticUnicastEntry OBJECT-TYPE + SYNTAX Dot1qStaticUnicastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the device by + (local or network) management specifying the set of + ports to which frames received from a specific port and + containing a specific unicast destination address are + allowed to be forwarded." + INDEX { + dot1qFdbId, + dot1qStaticUnicastAddress, + dot1qStaticUnicastReceivePort + } + ::= { dot1qStaticUnicastTable 1 } + +Dot1qStaticUnicastEntry ::= + SEQUENCE { + dot1qStaticUnicastAddress + MacAddress, + dot1qStaticUnicastReceivePort + Integer32, + dot1qStaticUnicastAllowedToGoTo + PortList, + dot1qStaticUnicastStatus + INTEGER + } + +dot1qStaticUnicastAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination MAC address in a frame to which this + entry's filtering information applies. This object must + take the value of a unicast address." + ::= { dot1qStaticUnicastEntry 1 } + + + +dot1qStaticUnicastReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + 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 + device for which there is no other applicable entry." + ::= { dot1qStaticUnicastEntry 2 } + +dot1qStaticUnicastAllowedToGoTo OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports for which a frame with a specific + unicast address will be flooded in the event that it + has not been learned. It also specifies the set of + ports on which a specific unicast address may be dynamically + learned. The dot1qTpFdbTable will have an equivalent + entry with a dot1qTpFdbPort value of '0' until this + address has been learned, at which point it will be updated + with the port the address has been seen on. This only + applies to ports that are members of the VLAN, defined + by dot1qVlanCurrentEgressPorts. The default value of + this object is a string of ones of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Table 8-5, ISO/IEC 15802-3 Table 7-5" + ::= { dot1qStaticUnicastEntry 3 } + +dot1qStaticUnicastStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but + + + + the conditions under which it will remain + so differ from 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. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { permanent } + ::= { dot1qStaticUnicastEntry 4 } + +dot1qStaticMulticastTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qStaticMulticastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for Multicast + and Broadcast MAC addresses for each VLAN, configured + into the device by (local or network) management + specifying the set of ports to which frames received + from specific ports and containing specific Multicast + and Broadcast destination addresses are allowed to be + forwarded. A 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 + Multicast and Broadcast addresses only." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7, + ISO/IEC 15802-3 Section 7.9.1" + ::= { dot1qStatic 2 } + +dot1qStaticMulticastEntry OBJECT-TYPE + SYNTAX Dot1qStaticMulticastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the device by + (local or network) management specifying the set of + ports to which frames received from this specific port + + + + for this VLAN and containing this Multicast or Broadcast + destination address are allowed to be forwarded." + INDEX { + dot1qVlanIndex, + dot1qStaticMulticastAddress, + dot1qStaticMulticastReceivePort + } + ::= { dot1qStaticMulticastTable 1 } + +Dot1qStaticMulticastEntry ::= + SEQUENCE { + dot1qStaticMulticastAddress + MacAddress, + dot1qStaticMulticastReceivePort + Integer32, + dot1qStaticMulticastStaticEgressPorts + PortList, + dot1qStaticMulticastForbiddenEgressPorts + PortList, + dot1qStaticMulticastStatus + INTEGER + } + +dot1qStaticMulticastAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination MAC address in a frame to which this + entry's filtering information applies. This object must + take the value of a Multicast or Broadcast address." + ::= { dot1qStaticMulticastEntry 1 } + +dot1qStaticMulticastReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + 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 + device for which there is no other applicable entry." + ::= { dot1qStaticMulticastEntry 2 } + +dot1qStaticMulticastStaticEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The set of ports to which frames received from a + specific port and destined for a specific Multicast or + Broadcast MAC address must be forwarded, regardless of + any dynamic information, e.g., from GMRP. A port may not + be added in this set if it is already a member of the + set of ports in dot1qStaticMulticastForbiddenEgressPorts. + The default value of this object is a string of ones of + appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qStaticMulticastEntry 3 } + +dot1qStaticMulticastForbiddenEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports to which frames received from a + specific port and destined for a specific Multicast or + Broadcast MAC address must not be forwarded, regardless + of any dynamic information, e.g., from GMRP. A port may + not be added in this set if it is already a member of the + set of ports in dot1qStaticMulticastStaticEgressPorts. + The default value of this object is a string of zeros of + appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qStaticMulticastEntry 4 } + +dot1qStaticMulticastStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but + the conditions under which it will remain + so differ from 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. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { permanent } + ::= { dot1qStaticMulticastEntry 5 } + +-- ------------------------------------------------------------- +-- The Current VLAN Database +-- ------------------------------------------------------------- + +dot1qVlanNumDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a VLAN entry has been deleted from + the dot1qVlanCurrentTable (for any reason). If an entry + is deleted, then inserted, and then deleted, this + counter will be incremented by 2." + ::= { dot1qVlan 1 } + +dot1qVlanCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qVlanCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing current configuration information + for each VLAN currently configured into the device by + (local or network) management, or dynamically created + as a result of GVRP requests received." + ::= { dot1qVlan 2 } + +dot1qVlanCurrentEntry OBJECT-TYPE + SYNTAX Dot1qVlanCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for a VLAN configured into the device by + + + + (local or network) management, or dynamically created + as a result of GVRP requests received." + INDEX { dot1qVlanTimeMark, dot1qVlanIndex } + ::= { dot1qVlanCurrentTable 1 } + +Dot1qVlanCurrentEntry ::= + SEQUENCE { + dot1qVlanTimeMark + TimeFilter, + dot1qVlanIndex + VlanIndex, + dot1qVlanFdbId + Unsigned32, + dot1qVlanCurrentEgressPorts + PortList, + dot1qVlanCurrentUntaggedPorts + PortList, + dot1qVlanStatus + INTEGER, + dot1qVlanCreationTime + TimeTicks + } + +dot1qVlanTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter + textual convention to see how this works." + ::= { dot1qVlanCurrentEntry 1 } + +dot1qVlanIndex OBJECT-TYPE + SYNTAX VlanIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VLAN-ID or other identifier referring to this VLAN." + ::= { dot1qVlanCurrentEntry 2 } + +dot1qVlanFdbId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Filtering Database used by this VLAN. This is one + of the dot1qFdbId values in the dot1qFdbTable. This + value is allocated automatically by the device whenever + + + + the VLAN is created: either dynamically by GVRP, or by + management, in dot1qVlanStaticTable. Allocation of this + value follows the learning constraints defined for this + VLAN in dot1qLearningConstraintsTable." + ::= { dot1qVlanCurrentEntry 3 } + +dot1qVlanCurrentEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports that are transmitting traffic for + this VLAN as either tagged or untagged frames." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanCurrentEntry 4 } + +dot1qVlanCurrentUntaggedPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports that are transmitting traffic for + this VLAN as untagged frames." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanCurrentEntry 5 } + +dot1qVlanStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + permanent(2), + dynamicGvrp(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but the + conditions under which it will remain so differ + from the following values. + permanent(2) - this entry, corresponding to an entry + in dot1qVlanStaticTable, is currently in use and + will remain so after the next reset of the + device. The port lists for this entry include + ports from the equivalent dot1qVlanStaticTable + entry and ports learned dynamically. + dynamicGvrp(3) - this entry is currently in use + + + + and will remain so until removed by GVRP. There + is no static entry for this VLAN, and it will be + removed when the last port leaves the VLAN." + ::= { dot1qVlanCurrentEntry 6 } + +dot1qVlanCreationTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this VLAN was created." + ::= { dot1qVlanCurrentEntry 7 } + +-- ------------------------------------------------------------- +-- The Static VLAN Database +-- ------------------------------------------------------------- + +dot1qVlanStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qVlanStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing static configuration information for + each VLAN configured into the device by (local or + network) management. All entries are permanent and will + be restored after the device is reset." + ::= { dot1qVlan 3 } + +dot1qVlanStaticEntry OBJECT-TYPE + SYNTAX Dot1qVlanStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Static information for a VLAN configured into the + device by (local or network) management." + INDEX { dot1qVlanIndex } + ::= { dot1qVlanStaticTable 1 } + +Dot1qVlanStaticEntry ::= + SEQUENCE { + dot1qVlanStaticName + SnmpAdminString, + dot1qVlanStaticEgressPorts + PortList, + dot1qVlanForbiddenEgressPorts + PortList, + dot1qVlanStaticUntaggedPorts + PortList, + + + + dot1qVlanStaticRowStatus + RowStatus + } + +dot1qVlanStaticName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned string, which may be used + to identify the VLAN." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanStaticEntry 1 } + +dot1qVlanStaticEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that are permanently assigned to the + egress list for this VLAN by management. Changes to a + bit in this object affect the per-port, per-VLAN + Registrar control for Registration Fixed for the + relevant GVRP state machine on each port. A port may + not be added in this set if it is already a member of + the set of ports in dot1qVlanForbiddenEgressPorts. The + default value of this object is a string of zeros of + appropriate length, indicating not fixed." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7.3, 11.2.3.2.3" + ::= { dot1qVlanStaticEntry 2 } + +dot1qVlanForbiddenEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that are prohibited by management + from being included in the egress list for this VLAN. + Changes to this object that cause a port to be included + or excluded affect the per-port, per-VLAN Registrar + control for Registration Forbidden for the relevant GVRP + state machine on each port. A port may not be added in + this set if it is already a member of the set of ports + in dot1qVlanStaticEgressPorts. The default value of + this object is a string of zeros of appropriate length, + excluding all ports from the forbidden set." + + + + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7.3, 11.2.3.2.3" + ::= { dot1qVlanStaticEntry 3 } + +dot1qVlanStaticUntaggedPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that should transmit egress packets + for this VLAN as untagged. The default value of this + object for the default VLAN (dot1qVlanIndex = 1) is a string + of appropriate length including all ports. There is no + specified default for other VLANs. If a device agent cannot + support the set of ports being set, then it will reject the + set operation with an error. For example, a + manager might attempt to set more than one VLAN to be untagged + on egress where the device does not support this IEEE 802.1Q + option." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanStaticEntry 4 } + +dot1qVlanStaticRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1qVlanStaticEntry 5 } + +dot1qNextFreeLocalVlanIndex OBJECT-TYPE + SYNTAX Integer32 (0|4096..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next available value for dot1qVlanIndex of a local + VLAN entry in dot1qVlanStaticTable. This will report + values >=4096 if a new Local VLAN may be created or else + the value 0 if this is not possible. + + A row creation operation in this table for an entry with a local + VlanIndex value may fail if the current value of this object + is not used as the index. Even if the value read is used, + there is no guarantee that it will still be the valid index + when the create operation is attempted; another manager may + have already got in during the intervening time interval. + In this case, dot1qNextFreeLocalVlanIndex should be re-read + + + + and the creation re-tried with the new value. + + This value will automatically change when the current value is + used to create a new row." + ::= { dot1qVlan 4 } + +-- ------------------------------------------------------------- +-- The VLAN Port Configuration Table +-- ------------------------------------------------------------- + +dot1qPortVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port control and status + information for VLAN configuration in the device." + ::= { dot1qVlan 5 } + +dot1qPortVlanEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information controlling VLAN configuration for a port + on the device. This is indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1qPortVlanTable 1 } + +Dot1qPortVlanEntry ::= + SEQUENCE { + dot1qPvid + VlanIndex, + dot1qPortAcceptableFrameTypes + INTEGER, + dot1qPortIngressFiltering + TruthValue, + dot1qPortGvrpStatus + EnabledStatus, + dot1qPortGvrpFailedRegistrations + Counter32, + dot1qPortGvrpLastPduOrigin + MacAddress, + dot1qPortRestrictedVlanRegistration + TruthValue + } + +dot1qPvid OBJECT-TYPE + + + + SYNTAX VlanIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The PVID, the VLAN-ID assigned to untagged frames or + Priority-Tagged frames received on this port. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + DEFVAL { 1 } + ::= { dot1qPortVlanEntry 1 } + +dot1qPortAcceptableFrameTypes OBJECT-TYPE + SYNTAX INTEGER { + admitAll(1), + admitOnlyVlanTagged(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this is admitOnlyVlanTagged(2), the device will + discard untagged frames or Priority-Tagged frames + received on this port. When admitAll(1), untagged + frames or Priority-Tagged frames received on this port + will be accepted and assigned to a VID based on the + PVID and VID Set for this port. + + This control does not affect VLAN-independent Bridge + Protocol Data Unit (BPDU) frames, such as GVRP and + Spanning Tree Protocol (STP). It does affect VLAN- + dependent BPDU frames, such as GMRP. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.3" + DEFVAL { admitAll } + ::= { dot1qPortVlanEntry 2 } + +dot1qPortIngressFiltering OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this is true(1), the device will discard incoming + frames for VLANs that do not include this Port in its + + + + Member set. When false(2), the port will accept all + incoming frames. + + This control does not affect VLAN-independent BPDU + frames, such as GVRP and STP. It does affect VLAN- + dependent BPDU frames, such as GMRP. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.4" + DEFVAL { false } + ::= { dot1qPortVlanEntry 3 } + +dot1qPortGvrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of GVRP operation on this port. The value + enabled(1) indicates that GVRP is enabled on this port, + as long as dot1qGvrpStatus is also enabled for this + device. When disabled(2) but dot1qGvrpStatus is still + enabled for the device, GVRP is disabled on this port: + any GVRP packets received will be silently discarded, and + no GVRP registrations will be propagated from other + ports. This object affects all GVRP Applicant and + Registrar state machines on this port. A transition + from disabled(2) to enabled(1) will cause a reset of all + GVRP state machines on this port. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1qPortVlanEntry 4 } + +dot1qPortGvrpFailedRegistrations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of failed GVRP registrations, for any + reason, on this port." + ::= { dot1qPortVlanEntry 5 } + +dot1qPortGvrpLastPduOrigin OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The Source MAC Address of the last GVRP message + received on this port." + ::= { dot1qPortVlanEntry 6 } + +dot1qPortRestrictedVlanRegistration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of Restricted VLAN Registration on this port. + If the value of this control is true(1), then creation + of a new dynamic VLAN entry is permitted only if there + is a Static VLAN Registration Entry for the VLAN concerned, + in which the Registrar Administrative Control value for + this port is Normal Registration. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1u clause 11.2.3.2.3, 12.10.1.7." + DEFVAL { false } + ::= { dot1qPortVlanEntry 7 } + +-- ------------------------------------------------------------- +-- Per port VLAN Statistics Table +-- ------------------------------------------------------------- + +dot1qPortVlanStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port, per-VLAN statistics for + traffic received. Separate objects are provided for both the + most-significant and least-significant bits of statistics + counters for ports that are associated with this transparent + bridge. The most-significant bit objects are only required on + high-capacity interfaces, as defined in the conformance clauses + for these objects. This mechanism is provided as a way to read + 64-bit counters for agents that support only SNMPv1. + + Note that the reporting of most-significant and least- + significant counter bits separately runs the risk of missing + an overflow of the lower bits in the interval between sampling. + The manager must be aware of this possibility, even within the + same varbindlist, when interpreting the results of a request or + + + + asynchronous notification." + ::= { dot1qVlan 6 } + +dot1qPortVlanStatisticsEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Traffic statistics for a VLAN on an interface." + INDEX { dot1dBasePort, dot1qVlanIndex } + ::= { dot1qPortVlanStatisticsTable 1 } + +Dot1qPortVlanStatisticsEntry ::= + SEQUENCE { + dot1qTpVlanPortInFrames + Counter32, + dot1qTpVlanPortOutFrames + Counter32, + dot1qTpVlanPortInDiscards + Counter32, + dot1qTpVlanPortInOverflowFrames + Counter32, + dot1qTpVlanPortOutOverflowFrames + Counter32, + dot1qTpVlanPortInOverflowDiscards + Counter32 + } + +dot1qTpVlanPortInFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN. Note that a frame received on this port is + counted by this object if and only if it is for a + protocol being processed by the local forwarding process + for this VLAN. This object includes received bridge + management frames classified as belonging to this VLAN + (e.g., GMRP, but not GVRP or STP." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(a)" + ::= { dot1qPortVlanStatisticsEntry 1 } + +dot1qTpVlanPortOutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of valid frames transmitted by this port to + its segment from the local forwarding process for this + VLAN. This includes bridge management frames originated + by this device that are classified as belonging to this + VLAN (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(d)" + ::= { dot1qPortVlanStatisticsEntry 2 } + +dot1qTpVlanPortInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN and that were discarded due to VLAN-related reasons. + Specifically, the IEEE 802.1Q counters for Discard + Inbound and Discard on Ingress Filtering." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 3 } + +dot1qTpVlanPortInOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortInFrames counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 4 } + +dot1qTpVlanPortOutOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortOutFrames counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 5 } + +dot1qTpVlanPortInOverflowDiscards OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortInDiscards counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 6 } + +dot1qPortVlanHCStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanHCStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port, per-VLAN statistics for + traffic on high-capacity interfaces." + ::= { dot1qVlan 7 } + +dot1qPortVlanHCStatisticsEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanHCStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Traffic statistics for a VLAN on a high-capacity + interface." + INDEX { dot1dBasePort, dot1qVlanIndex } + ::= { dot1qPortVlanHCStatisticsTable 1 } + +Dot1qPortVlanHCStatisticsEntry ::= + SEQUENCE { + dot1qTpVlanPortHCInFrames + Counter64, + dot1qTpVlanPortHCOutFrames + Counter64, + dot1qTpVlanPortHCInDiscards + Counter64 + } + +dot1qTpVlanPortHCInFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN. Note that a frame received on this port is + counted by this object if and only if it is for a + + + + protocol being processed by the local forwarding process + for this VLAN. This object includes received bridge + management frames classified as belonging to this VLAN + (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(a)" + ::= { dot1qPortVlanHCStatisticsEntry 1 } + +dot1qTpVlanPortHCOutFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames transmitted by this port to + its segment from the local forwarding process for this + VLAN. This includes bridge management frames originated + by this device that are classified as belonging to this + VLAN (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(d)" + ::= { dot1qPortVlanHCStatisticsEntry 2 } + +dot1qTpVlanPortHCInDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN and that were discarded due to VLAN-related reasons. + Specifically, the IEEE 802.1Q counters for Discard + Inbound and Discard on Ingress Filtering." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3" + ::= { dot1qPortVlanHCStatisticsEntry 3 } + +-- ------------------------------------------------------------- +-- The VLAN Learning Constraints Table +-- ------------------------------------------------------------- + +dot1qLearningConstraintsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qLearningConstraintsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing learning constraints for sets of + Shared and Independent VLANs." + REFERENCE + + + + "IEEE 802.1Q/D11 Section 12.10.3.1" + ::= { dot1qVlan 8 } + +dot1qLearningConstraintsEntry OBJECT-TYPE + SYNTAX Dot1qLearningConstraintsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A learning constraint defined for a VLAN." + INDEX { dot1qConstraintVlan, dot1qConstraintSet } + ::= { dot1qLearningConstraintsTable 1 } + +Dot1qLearningConstraintsEntry ::= + SEQUENCE { + dot1qConstraintVlan + VlanIndex, + dot1qConstraintSet + Integer32, + dot1qConstraintType + INTEGER, + dot1qConstraintStatus + RowStatus + } + +dot1qConstraintVlan OBJECT-TYPE + SYNTAX VlanIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the row in dot1qVlanCurrentTable for the + VLAN constrained by this entry." + ::= { dot1qLearningConstraintsEntry 1 } + +dot1qConstraintSet OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identity of the constraint set to which + dot1qConstraintVlan belongs. These values may be chosen + by the management station." + ::= { dot1qLearningConstraintsEntry 2 } + +dot1qConstraintType OBJECT-TYPE + SYNTAX INTEGER { + independent(1), + shared(2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of constraint this entry defines. + independent(1) - the VLAN, dot1qConstraintVlan, + uses a filtering database independent from all + other VLANs in the same set, defined by + dot1qConstraintSet. + shared(2) - the VLAN, dot1qConstraintVlan, shares + the same filtering database as all other VLANs + in the same set, defined by dot1qConstraintSet." + ::= { dot1qLearningConstraintsEntry 3 } + +dot1qConstraintStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry." + ::= { dot1qLearningConstraintsEntry 4 } + +dot1qConstraintSetDefault OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The identity of the constraint set to which a VLAN + belongs, if there is not an explicit entry for that VLAN + in dot1qLearningConstraintsTable. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qVlan 9 } + +dot1qConstraintTypeDefault OBJECT-TYPE + SYNTAX INTEGER { + independent(1), + shared(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of constraint set to which a VLAN belongs, if + there is not an explicit entry for that VLAN in + dot1qLearningConstraintsTable. The types are as defined + for dot1qConstraintType. + + The value of this object MUST be retained across + + + + reinitializations of the management system." + ::= { dot1qVlan 10 } + +-- ------------------------------------------------------------- +-- dot1vProtocol subtree +-- ------------------------------------------------------------- + +dot1vProtocolGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1vProtocolGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains mappings from Protocol + Templates to Protocol Group Identifiers used for + Port-and-Protocol-based VLAN Classification." + REFERENCE + "IEEE 802.1v clause 8.6.4" + ::= { dot1vProtocol 1 } + +dot1vProtocolGroupEntry OBJECT-TYPE + SYNTAX Dot1vProtocolGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping from a Protocol Template to a Protocol + Group Identifier." + INDEX { dot1vProtocolTemplateFrameType, + dot1vProtocolTemplateProtocolValue } + ::= { dot1vProtocolGroupTable 1 } + +Dot1vProtocolGroupEntry ::= + SEQUENCE { + dot1vProtocolTemplateFrameType + INTEGER, + dot1vProtocolTemplateProtocolValue + OCTET STRING, + dot1vProtocolGroupId + Integer32, + dot1vProtocolGroupRowStatus + RowStatus + } + +dot1vProtocolTemplateFrameType OBJECT-TYPE + SYNTAX INTEGER { + ethernet (1), + rfc1042 (2), + snap8021H (3), + snapOther (4), + + + + llcOther (5) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data-link encapsulation format or the + 'detagged_frame_type' in a Protocol Template." + REFERENCE + "IEEE 802.1v clause 8.6.2" + ::= { dot1vProtocolGroupEntry 1 } + +dot1vProtocolTemplateProtocolValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2 | 5)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identification of the protocol above the data-link + layer in a Protocol Template. Depending on the + frame type, the octet string will have one of the + following values: + + For 'ethernet', 'rfc1042' and 'snap8021H', + this is the 16-bit (2-octet) IEEE 802.3 Type Field. + For 'snapOther', + this is the 40-bit (5-octet) PID. + For 'llcOther', + this is the 2-octet IEEE 802.2 Link Service Access + Point (LSAP) pair: first octet for Destination Service + Access Point (DSAP) and second octet for Source Service + Access Point (SSAP)." + REFERENCE + "IEEE 802.1v clause 8.6.2" + ::= { dot1vProtocolGroupEntry 2 } + +dot1vProtocolGroupId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Represents a group of protocols that are associated + together when assigning a VID to a frame." + REFERENCE + "IEEE 802.1v clause 8.6.3, 12.10.2.1" + ::= { dot1vProtocolGroupEntry 3 } + +dot1vProtocolGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1vProtocolGroupEntry 4 } + +dot1vProtocolPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1vProtocolPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains VID sets used for + Port-and-Protocol-based VLAN Classification." + REFERENCE + "IEEE 802.1v clause 8.4.4" + ::= { dot1vProtocol 2 } + +dot1vProtocolPortEntry OBJECT-TYPE + SYNTAX Dot1vProtocolPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A VID set for a port." + INDEX { dot1dBasePort, + dot1vProtocolPortGroupId } + ::= { dot1vProtocolPortTable 1 } + +Dot1vProtocolPortEntry ::= + SEQUENCE { + dot1vProtocolPortGroupId + Integer32, + dot1vProtocolPortGroupVid + Integer32, + dot1vProtocolPortRowStatus + RowStatus + } + +dot1vProtocolPortGroupId OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Designates a group of protocols in the Protocol + Group Database." + REFERENCE + "IEEE 802.1v clause 8.6.3, 12.10.1.2" + ::= { dot1vProtocolPortEntry 1 } + +dot1vProtocolPortGroupVid OBJECT-TYPE + + + + SYNTAX Integer32 (1..4094) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VID associated with a group of protocols for + each port." + REFERENCE + "IEEE 802.1v clause 8.4.4, 12.10.1.2" + ::= { dot1vProtocolPortEntry 2 } + +dot1vProtocolPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1vProtocolPortEntry 3 } + +-- ------------------------------------------------------------- +-- IEEE 802.1Q MIB - Conformance Information +-- ------------------------------------------------------------- + +qBridgeConformance OBJECT IDENTIFIER ::= { qBridgeMIB 2 } + +qBridgeGroups OBJECT IDENTIFIER ::= { qBridgeConformance 1 } + +qBridgeCompliances OBJECT IDENTIFIER ::= { qBridgeConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +qBridgeBaseGroup OBJECT-GROUP + OBJECTS { + dot1qVlanVersionNumber, + dot1qMaxVlanId, + dot1qMaxSupportedVlans, + dot1qNumVlans, + dot1qGvrpStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + and status information for the Virtual LAN bridge + services." + ::= { qBridgeGroups 1 } + +qBridgeFdbUnicastGroup OBJECT-GROUP + + + + OBJECTS { + dot1qFdbDynamicCount, + dot1qTpFdbPort, + dot1qTpFdbStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + unicast addresses, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 2 } + +qBridgeFdbMulticastGroup OBJECT-GROUP + OBJECTS { + dot1qTpGroupEgressPorts, + dot1qTpGroupLearnt + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + multicast addresses, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 3 } + +qBridgeServiceRequirementsGroup OBJECT-GROUP + OBJECTS { + dot1qForwardAllPorts, + dot1qForwardAllStaticPorts, + dot1qForwardAllForbiddenPorts, + dot1qForwardUnregisteredPorts, + dot1qForwardUnregisteredStaticPorts, + dot1qForwardUnregisteredForbiddenPorts + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + service requirements, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 4 } + +qBridgeFdbStaticGroup OBJECT-GROUP + OBJECTS { + dot1qStaticUnicastAllowedToGoTo, + dot1qStaticUnicastStatus, + dot1qStaticMulticastStaticEgressPorts, + dot1qStaticMulticastForbiddenEgressPorts, + dot1qStaticMulticastStatus + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about + unicast and multicast addresses statically configured by + management, in each Filtering Database or VLAN." + ::= { qBridgeGroups 5 } + +qBridgeVlanGroup OBJECT-GROUP + OBJECTS { + dot1qVlanNumDeletes, + dot1qVlanFdbId, + dot1qVlanCurrentEgressPorts, + dot1qVlanCurrentUntaggedPorts, + dot1qVlanStatus, + dot1qVlanCreationTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + all VLANs currently configured on this device." + ::= { qBridgeGroups 6 } + +qBridgeVlanStaticGroup OBJECT-GROUP + OBJECTS { + dot1qVlanStaticName, + dot1qVlanStaticEgressPorts, + dot1qVlanForbiddenEgressPorts, + dot1qVlanStaticUntaggedPorts, + dot1qVlanStaticRowStatus, + dot1qNextFreeLocalVlanIndex + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + VLANs statically configured by management." + ::= { qBridgeGroups 7 } + +qBridgePortGroup OBJECT-GROUP + OBJECTS { + dot1qPvid, + dot1qPortAcceptableFrameTypes, + dot1qPortIngressFiltering, + dot1qPortGvrpStatus, + dot1qPortGvrpFailedRegistrations, + dot1qPortGvrpLastPduOrigin + } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing port-level VLAN + control and status information for all ports." + ::= { qBridgeGroups 8 } + +qBridgeVlanStatisticsGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortInFrames, + dot1qTpVlanPortOutFrames, + dot1qTpVlanPortInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing per-port packet + statistics for all VLANs currently configured on this + device." + ::= { qBridgeGroups 9 } + +qBridgeVlanStatisticsOverflowGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortInOverflowFrames, + dot1qTpVlanPortOutOverflowFrames, + dot1qTpVlanPortInOverflowDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing overflow counters for + per-port packet statistics for all VLANs currently configured + on this device for high-capacity interfaces, defined as those + that have the value of the corresponding instance of + ifSpeed greater than 650,000,000 bits/second." + ::= { qBridgeGroups 10 } + +qBridgeVlanHCStatisticsGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortHCInFrames, + dot1qTpVlanPortHCOutFrames, + dot1qTpVlanPortHCInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing per-port packet + statistics for all VLANs currently configured on this + device for high-capacity interfaces, defined as those + that have the value of the corresponding instance of + ifSpeed greater than 650,000,000 bits/second." + ::= { qBridgeGroups 11 } + +qBridgeLearningConstraintsGroup OBJECT-GROUP + + + + OBJECTS { + dot1qConstraintType, + dot1qConstraintStatus + } + STATUS current + DESCRIPTION + "A collection of objects defining the Filtering Database + constraints all VLANs have with each other." + ::= { qBridgeGroups 12 } + +qBridgeLearningConstraintDefaultGroup OBJECT-GROUP + OBJECTS { + dot1qConstraintSetDefault, + dot1qConstraintTypeDefault + } + STATUS current + DESCRIPTION + "A collection of objects defining the default Filtering + Database constraints for VLANs that have no specific + constraints defined." + ::= { qBridgeGroups 13 } + +qBridgeClassificationDeviceGroup OBJECT-GROUP + OBJECTS { + dot1vProtocolGroupId, + dot1vProtocolGroupRowStatus + } + STATUS current + DESCRIPTION + "VLAN classification information for the bridge." + ::= { qBridgeGroups 14 } + +qBridgeClassificationPortGroup OBJECT-GROUP + OBJECTS { + dot1vProtocolPortGroupVid, + dot1vProtocolPortRowStatus + } + STATUS current + DESCRIPTION + "VLAN classification information for individual ports." + ::= { qBridgeGroups 15 } + +qBridgePortGroup2 OBJECT-GROUP + OBJECTS { + dot1qPvid, + dot1qPortAcceptableFrameTypes, + dot1qPortIngressFiltering, + dot1qPortGvrpStatus, + + + + dot1qPortGvrpFailedRegistrations, + dot1qPortGvrpLastPduOrigin, + dot1qPortRestrictedVlanRegistration + } + STATUS current + DESCRIPTION + "A collection of objects providing port-level VLAN + control and status information for all ports." + ::= { qBridgeGroups 16 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +qBridgeCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for device support of Virtual + LAN Bridge services. + + RFC2674 was silent about the expected persistence of the + read-write objects in this MIB module. Applications MUST + NOT assume that the values of the read-write objects are + persistent across reinitializations of the management + system and MUST NOT assume that the values are not + persistent across reinitializations of the management + system." + + MODULE + MANDATORY-GROUPS { + qBridgeBaseGroup, + qBridgeVlanGroup, + qBridgeVlanStaticGroup, + qBridgePortGroup + } + + GROUP qBridgeFdbUnicastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeFdbMulticastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeServiceRequirementsGroup + DESCRIPTION + + + + "This group is mandatory for bridges that implement + extended filtering services. All objects must be + read-write if extended-filtering services are + enabled." + + GROUP qBridgeFdbStaticGroup + DESCRIPTION + "This group is optional." + + GROUP qBridgeVlanStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support." + + GROUP qBridgeVlanStatisticsOverflowGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces where the SNMP agent + supports only SNMPv1." + + GROUP qBridgeVlanHCStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces." + + GROUP qBridgeLearningConstraintsGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeLearningConstraintDefaultGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + OBJECT dot1qPortAcceptableFrameTypes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qPortIngressFiltering + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintSetDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintTypeDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + ::= { qBridgeCompliances 1 } + +qBridgeCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of Virtual + LAN Bridge services. + + This document clarifies the persistence requirements for + the read-write objects in this MIB module. All + implementations claiming compliance to qBridgeCompliance2 + MUST retain the values of those read-write objects that + specify this requirement." + + MODULE + MANDATORY-GROUPS { + qBridgeBaseGroup, + qBridgeVlanGroup, + qBridgeVlanStaticGroup, + qBridgePortGroup2 + } + + GROUP qBridgeFdbUnicastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeFdbMulticastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + + + GROUP qBridgeServiceRequirementsGroup + DESCRIPTION + "This group is mandatory for bridges that implement + extended filtering services. All objects must be + read-write if extended-filtering services are + enabled." + + GROUP qBridgeFdbStaticGroup + DESCRIPTION + "This group is optional." + + GROUP qBridgeVlanStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support." + + GROUP qBridgeVlanStatisticsOverflowGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces where the SNMP agent + supports only SNMPv1." + + GROUP qBridgeVlanHCStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces." + + GROUP qBridgeLearningConstraintsGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeLearningConstraintDefaultGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeClassificationDeviceGroup + DESCRIPTION + "This group is mandatory ONLY for devices implementing + VLAN Classification as specified in IEEE 802.1v." + + + + + GROUP qBridgeClassificationPortGroup + DESCRIPTION + "This group is mandatory ONLY for devices implementing + VLAN Classification as specified in IEEE 802.1v." + + OBJECT dot1qPortAcceptableFrameTypes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qPortIngressFiltering + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintSetDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintTypeDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1vProtocolGroupId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1v." + + OBJECT dot1vProtocolGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1v." + + ::= { qBridgeCompliances 2 } + +END diff --git a/mibs/ietf/RADIUS-ACC-CLIENT-MIB b/mibs/ietf/RADIUS-ACC-CLIENT-MIB new file mode 100644 index 0000000..56281bd --- /dev/null +++ b/mibs/ietf/RADIUS-ACC-CLIENT-MIB @@ -0,0 +1,694 @@ +RADIUS-ACC-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, Gauge32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +radiusAccClientMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + + + + Redmond, WA 98052 + US + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the client + side of the Remote Authentication Dial-In User Service + (RADIUS) accounting protocol. Copyright (C) The + Internet Society (2006). This version of this MIB + module is part of RFC 4670; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4670. + This version obsoletes that of RFC 2620 by + deprecating the MIB table containing IPv4-only + address formats and defining a new table to add support + for version-neutral IP address formats. The remaining + MIB objects from RFC 2620 are carried forward into this + version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2620." + ::= { radiusAccounting 2 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAccounting OBJECT IDENTIFIER ::= {radiusMIB 2} + +radiusAccClientMIBObjects OBJECT IDENTIFIER + ::= { radiusAccClientMIB 1 } + +radiusAccClient OBJECT IDENTIFIER + ::= { radiusAccClientMIBObjects 1 } + +radiusAccClientInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + received from unknown addresses." + ::= { radiusAccClient 1 } + + + + +radiusAccClientIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client. + This is not necessarily the same as sysName in MIB + II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClient 2 } + +radiusAccServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + servers with which the client shares a secret." + ::= { radiusAccClient 3 } + +radiusAccServerEntry OBJECT-TYPE + SYNTAX RadiusAccServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting server with which the client shares a + secret." + INDEX { radiusAccServerIndex } + ::= { radiusAccServerTable 1 } + +RadiusAccServerEntry ::= SEQUENCE { + radiusAccServerIndex Integer32, + radiusAccServerAddress IpAddress, + radiusAccClientServerPortNumber Integer32, + radiusAccClientRoundTripTime TimeTicks, + radiusAccClientRequests Counter32, + radiusAccClientRetransmissions Counter32, + radiusAccClientResponses Counter32, + radiusAccClientMalformedResponses Counter32, + radiusAccClientBadAuthenticators Counter32, + radiusAccClientPendingRequests Gauge32, + radiusAccClientTimeouts Counter32, + radiusAccClientUnknownTypes Counter32, + radiusAccClientPacketsDropped Counter32 +} + + + + + +radiusAccServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + Accounting server with which this client + communicates." + ::= { radiusAccServerEntry 1 } + +radiusAccServerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the RADIUS accounting server + referred to in this table entry." + ::= { radiusAccServerEntry 2 } + +radiusAccClientServerPortNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The UDP port the client is using to send requests to + this server." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerEntry 3 } + +radiusAccClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The time interval between the most recent + Accounting-Response and the Accounting-Request that + matched it from this RADIUS accounting server." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 4 } + +-- Request/Response statistics +-- +-- Requests = Responses + PendingRequests + ClientTimeouts +-- +-- Responses - MalformedResponses - BadAuthenticators - +-- UnknownTypes - PacketsDropped = Successfully received + + + + + +radiusAccClientRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent. This does not include retransmissions." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServerEntry 5 } + +radiusAccClientRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + retransmitted to this RADIUS accounting server. + Retransmissions include retries where the + Identifier and Acct-Delay have been updated, as + well as those in which they remain the same." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 6 } + +radiusAccClientResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets received on the + accounting port from this server." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServerEntry 7 } + +radiusAccClientMalformedResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Accounting-Response + packets received from this server. Malformed packets + include packets with an invalid length. Bad + authenticators and unknown types are not included as + malformed accounting responses." + REFERENCE "RFC 2866 section 3" + + + + ::= { radiusAccServerEntry 8 } + +radiusAccClientBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Response + packets that contained invalid authenticators + received from this server." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerEntry 9 } + +radiusAccClientPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent to this server that have not yet timed out or + received a response. This variable is incremented + when an Accounting-Request is sent and decremented + due to receipt of an Accounting-Response, a timeout, + or a retransmission." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 10 } + +radiusAccClientTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of accounting timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or give up. + A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as an Accounting-Request as well as + a timeout." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 11 } + +radiusAccClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the accounting port." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServerEntry 12 } + +radiusAccClientPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets that were received from + this server on the accounting port and dropped for some + other reason." + ::= { radiusAccServerEntry 13 } + + +-- New MIB objects added in this revision + +radiusAccServerExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + servers with which the client shares a secret." + ::= { radiusAccClient 4 } + +radiusAccServerExtEntry OBJECT-TYPE + SYNTAX RadiusAccServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting server with which the client shares a + secret." + INDEX { radiusAccServerExtIndex } + ::= { radiusAccServerExtTable 1 } + +RadiusAccServerExtEntry ::= SEQUENCE { + radiusAccServerExtIndex Integer32, + radiusAccServerInetAddressType InetAddressType, + radiusAccServerInetAddress InetAddress, + radiusAccClientServerInetPortNumber InetPortNumber, + radiusAccClientExtRoundTripTime TimeTicks, + + + + radiusAccClientExtRequests Counter32, + radiusAccClientExtRetransmissions Counter32, + radiusAccClientExtResponses Counter32, + radiusAccClientExtMalformedResponses Counter32, + radiusAccClientExtBadAuthenticators Counter32, + radiusAccClientExtPendingRequests Gauge32, + radiusAccClientExtTimeouts Counter32, + radiusAccClientExtUnknownTypes Counter32, + radiusAccClientExtPacketsDropped Counter32, + radiusAccClientCounterDiscontinuity TimeTicks +} + +radiusAccServerExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + Accounting server with which this client + communicates." + ::= { radiusAccServerExtEntry 1 } + + +radiusAccServerInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAccServerInetAddress object." + ::= { radiusAccServerExtEntry 2 } + + + radiusAccServerInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS accounting + server referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAccServerExtEntry 3 } + + radiusAccClientServerInetPortNumber OBJECT-TYPE + SYNTAX InetPortNumber ( 1..65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The UDP port the client is using to send requests + to this accounting server. The value zero (0) is + invalid." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 4 } + + +radiusAccClientExtRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval between the most recent + Accounting-Response and the Accounting-Request that + matched it from this RADIUS accounting server." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 5 } + +-- Request/Response statistics +-- +-- Requests = Responses + PendingRequests + ClientTimeouts +-- +-- Responses - MalformedResponses - BadAuthenticators - +-- UnknownTypes - PacketsDropped = Successfully received + +radiusAccClientExtRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent. This does not include retransmissions. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServerExtEntry 6 } + +radiusAccClientExtRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + retransmitted to this RADIUS accounting server. + + + + Retransmissions include retries where the + Identifier and Acct-Delay have been updated, as + well as those in which they remain the same. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 7 } + +radiusAccClientExtResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets received on the + accounting port from this server. This counter + may experience a discontinuity when the RADIUS + Accounting Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServerExtEntry 8 } + +radiusAccClientExtMalformedResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Response + packets received from this server. Malformed packets + include packets with an invalid length. Bad + authenticators and unknown types are not included as + malformed accounting responses. This counter may + experience a discontinuity when the RADIUS Accounting + Client module within the managed entity is + reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 9 } + +radiusAccClientExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS Accounting-Response + packets that contained invalid authenticators + received from this server. This counter may + experience a discontinuity when the RADIUS + Accounting Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 10 } + +radiusAccClientExtPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent to this server that have not yet timed out or + received a response. This variable is incremented + when an Accounting-Request is sent and decremented + due to receipt of an Accounting-Response, a timeout, + or a retransmission. This counter may experience a + discontinuity when the RADIUS Accounting Client module + within the managed entity is reinitialized, as + indicated by the current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 11 } + +radiusAccClientExtTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of accounting timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or give up. + A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as an Accounting-Request as well as + a timeout. This counter may experience a discontinuity + when the RADIUS Accounting Client module within the + managed entity is reinitialized, as indicated by the + current value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + + + + ::= { radiusAccServerExtEntry 12 } + +radiusAccClientExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the accounting port. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServerExtEntry 13 } + +radiusAccClientExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets that were received from + this server on the accounting port and dropped for some + other reason. This counter may experience a + discontinuity when the RADIUS Accounting Client module + within the managed entity is reinitialized, as indicated + by the current value of + radiusAccClientCounterDiscontinuity." + ::= { radiusAccServerExtEntry 14 } + +radiusAccClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Accounting Client + counters. A discontinuity may be the result of a + reinitialization of the RADIUS Accounting Client + module within the managed entity." + ::= { radiusAccServerExtEntry 15 } + + + + + + + +-- conformance information + +radiusAccClientMIBConformance OBJECT IDENTIFIER + ::= { radiusAccClientMIB 2 } + +radiusAccClientMIBCompliances OBJECT IDENTIFIER + ::= { radiusAccClientMIBConformance 1 } + +radiusAccClientMIBGroups OBJECT IDENTIFIER + ::= { radiusAccClientMIBConformance 2 } + + +-- units of conformance + +radiusAccClientMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for accounting clients + implementing the RADIUS Accounting Client MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccClientMIBGroup } + + ::= { radiusAccClientMIBCompliances 1 } + + +radiusAccClientExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for accounting + clients implementing the RADIUS Accounting + Client IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccClientExtMIBGroup } + + OBJECT radiusAccServerInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAccServerInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + + + + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAccClientMIBCompliances 2 } + + +-- units of conformance + +radiusAccClientMIBGroup OBJECT-GROUP + OBJECTS { radiusAccClientIdentifier, + radiusAccClientInvalidServerAddresses, + radiusAccServerAddress, + radiusAccClientServerPortNumber, + radiusAccClientRoundTripTime, + radiusAccClientRequests, + radiusAccClientRetransmissions, + radiusAccClientResponses, + radiusAccClientMalformedResponses, + radiusAccClientBadAuthenticators, + radiusAccClientPendingRequests, + radiusAccClientTimeouts, + radiusAccClientUnknownTypes, + radiusAccClientPacketsDropped + } + STATUS deprecated + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Accounting Clients." + ::= { radiusAccClientMIBGroups 1 } + + +radiusAccClientExtMIBGroup OBJECT-GROUP + OBJECTS { radiusAccClientIdentifier, + radiusAccClientInvalidServerAddresses, + radiusAccServerInetAddressType, + radiusAccServerInetAddress, + radiusAccClientServerInetPortNumber, + radiusAccClientExtRoundTripTime, + radiusAccClientExtRequests, + radiusAccClientExtRetransmissions, + radiusAccClientExtResponses, + radiusAccClientExtMalformedResponses, + radiusAccClientExtBadAuthenticators, + radiusAccClientExtPendingRequests, + radiusAccClientExtTimeouts, + radiusAccClientExtUnknownTypes, + radiusAccClientExtPacketsDropped, + radiusAccClientCounterDiscontinuity + + + + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Accounting Clients." + ::= { radiusAccClientMIBGroups 2 } + + +END diff --git a/mibs/ietf/RADIUS-ACC-SERVER-MIB b/mibs/ietf/RADIUS-ACC-SERVER-MIB new file mode 100644 index 0000000..09317db --- /dev/null +++ b/mibs/ietf/RADIUS-ACC-SERVER-MIB @@ -0,0 +1,772 @@ +RADIUS-ACC-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +radiusAccServMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + US + + + + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the server + side of the Remote Authentication Dial-In User + Service (RADIUS) accounting protocol. Copyright (C) + The Internet Society (2006). This version of this + MIB module is part of RFC 4671; see the RFC itself + for full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4671. This + version obsoletes that of RFC 2621 by deprecating + the MIB table containing IPv4-only address formats + and defining a new table to add support for version- + neutral IP address formats. The remaining MIB objects + from RFC 2621 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2621." + ::= { radiusAccounting 1 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAccounting OBJECT IDENTIFIER ::= {radiusMIB 2} + +radiusAccServMIBObjects OBJECT IDENTIFIER + ::= { radiusAccServMIB 1 } + +radiusAccServ OBJECT IDENTIFIER + ::= { radiusAccServMIBObjects 1 } + +radiusAccServIdent OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + RADIUS accounting server software in use on the + system, for example, 'FNS-2.1'." + ::= {radiusAccServ 1} + +radiusAccServUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a + process), this value will be the time elapsed (in + hundredths of a second) since the server process was + started. For software without persistent state, this + value will be zero." + ::= {radiusAccServ 2} + +radiusAccServResetTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a 'reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed (in hundredths of a second) since the + server was 'reset.' For software that does not + have persistence or does not support a 'reset' + operation, this value will be zero." + ::= {radiusAccServ 3} + +radiusAccServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4)} + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistent + server state. When set to reset(2), any persistent + server state (such as a process) is reinitialized as + if the server had just been started. This value will + never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= {radiusAccServ 4} + +radiusAccServTotalRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of packets received on the + accounting port." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServ 5 } + +radiusAccServTotalInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + received from unknown addresses." + REFERENCE "RFC 2866 sections 2, 4.1" + ::= { radiusAccServ 6 } + +radiusAccServTotalDupRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServ 7 } + +radiusAccServTotalResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServ 8 } + +radiusAccServTotalMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets received. Bad authenticators or unknown + types are not included as malformed Access-Requests." + REFERENCE "RFC 2866 section 3" + + + + ::= { radiusAccServ 9 } + +radiusAccServTotalBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained an invalid authenticator." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServ 10 } + +radiusAccServTotalPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets silently discarded + for a reason other than malformed, bad authenticators, + or unknown types." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServ 11 } + +radiusAccServTotalNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded." + ::= { radiusAccServ 12 } + +radiusAccServTotalUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServ 13 } + +radiusAccClientTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RadiusAccClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + clients with which the server shares a secret." + ::= { radiusAccServ 14 } + +radiusAccClientEntry OBJECT-TYPE + SYNTAX RadiusAccClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting client with which the server shares a + secret." + INDEX { radiusAccClientIndex } + ::= { radiusAccClientTable 1 } + +RadiusAccClientEntry ::= SEQUENCE { + radiusAccClientIndex Integer32, + radiusAccClientAddress IpAddress, + radiusAccClientID SnmpAdminString, + radiusAccServPacketsDropped Counter32, + radiusAccServRequests Counter32, + radiusAccServDupRequests Counter32, + radiusAccServResponses Counter32, + radiusAccServBadAuthenticators Counter32, + radiusAccServMalformedRequests Counter32, + radiusAccServNoRecords Counter32, + radiusAccServUnknownTypes Counter32 +} + +radiusAccClientIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS accounting + client with which this server communicates." + ::= { radiusAccClientEntry 1 } + +radiusAccClientAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-IP-Address of the RADIUS accounting client + + + + referred to in this table entry." + ::= { radiusAccClientEntry 2 } + +radiusAccClientID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClientEntry 3 } + +-- Server Counters +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - NoRecords = entries logged + +radiusAccServPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of incoming packets received + from this client and silently discarded + for a reason other than malformed, bad + authenticators, or unknown types." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 4 } + +radiusAccServRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets received from this + client on the accounting port." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientEntry 5 } + +radiusAccServDupRequests OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received from this client." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientEntry 6 } + +radiusAccServResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent to this client." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccClientEntry 7 } + +radiusAccServBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained invalid authenticators received + from this client." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 8 } + +radiusAccServMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets that were received from this client. + Bad authenticators and unknown types + are not included as malformed Accounting-Requests." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 9 } + +radiusAccServNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded." + ::= { radiusAccClientEntry 10 } + +radiusAccServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccClientEntry 11 } + + +-- New MIB objects added in this revision + +radiusAccClientExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + clients with which the server shares a secret." + ::= { radiusAccServ 15 } + +radiusAccClientExtEntry OBJECT-TYPE + SYNTAX RadiusAccClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting client with which the server shares a + secret." + INDEX { radiusAccClientExtIndex } + ::= { radiusAccClientExtTable 1 } + +RadiusAccClientExtEntry ::= SEQUENCE { + radiusAccClientExtIndex Integer32, + radiusAccClientInetAddressType InetAddressType, + radiusAccClientInetAddress InetAddress, + radiusAccClientExtID SnmpAdminString, + radiusAccServExtPacketsDropped Counter32, + + + + radiusAccServExtRequests Counter32, + radiusAccServExtDupRequests Counter32, + radiusAccServExtResponses Counter32, + radiusAccServExtBadAuthenticators Counter32, + radiusAccServExtMalformedRequests Counter32, + radiusAccServExtNoRecords Counter32, + radiusAccServExtUnknownTypes Counter32, + radiusAccServerCounterDiscontinuity TimeTicks +} + +radiusAccClientExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS accounting + client with which this server communicates." + ::= { radiusAccClientExtEntry 1 } + + radiusAccClientInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAccClientInetAddress object." + ::= { radiusAccClientExtEntry 2 } + + radiusAccClientInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS accounting + client referred to in this table entry, using + the IPv6 address format." + ::= { radiusAccClientExtEntry 3 } + +radiusAccClientExtID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClientExtEntry 4 } + + + +-- Server Counters +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - NoRecords = entries logged + +radiusAccServExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets received from this + client and silently discarded for a reason other + than malformed, bad authenticators, or unknown types. + This counter may experience a discontinuity when the + RADIUS Accounting Server module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 5 } + +radiusAccServExtRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received from this + client on the accounting port. This counter + may experience a discontinuity when the + RADIUS Accounting Server module within the + managed entity is reinitialized, as indicated by + the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientExtEntry 6 } + +radiusAccServExtDupRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received from this client. This counter + + + + may experience a discontinuity when the RADIUS + Accounting Server module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientExtEntry 7 } + +radiusAccServExtResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent to this client. This counter may experience + a discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccClientExtEntry 8 } + +radiusAccServExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained invalid authenticators received + from this client. This counter may experience a + discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 9 } + +radiusAccServExtMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets that were received from this client. + Bad authenticators and unknown types are not + + + + included as malformed Accounting-Requests. This + counter may experience a discontinuity when the + RADIUS Accounting Server module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 10 } + +radiusAccServExtNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded. This counter may experience a + discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + ::= { radiusAccClientExtEntry 11 } + +radiusAccServExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client. This counter may + experience a discontinuity when the RADIUS Accounting + Server module within the managed entity is + reinitialized, as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccClientExtEntry 12 } + +radiusAccServerCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Accounting Server + counters. A discontinuity may be the result of + a reinitialization of the RADIUS Accounting Server + + + + module within the managed entity." + ::= { radiusAccClientExtEntry 13 } + + +-- conformance information + +radiusAccServMIBConformance OBJECT IDENTIFIER + ::= { radiusAccServMIB 2 } + +radiusAccServMIBCompliances OBJECT IDENTIFIER + ::= { radiusAccServMIBConformance 1 } + +radiusAccServMIBGroups OBJECT IDENTIFIER + ::= { radiusAccServMIBConformance 2 } + + +-- compliance statements + +radiusAccServMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for accounting servers + implementing the RADIUS Accounting Server MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccServMIBGroup } + + OBJECT radiusAccServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + ::= { radiusAccServMIBCompliances 1 } + +radiusAccServExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for accounting + servers implementing the RADIUS Accounting + Server IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccServExtMIBGroup } + + OBJECT radiusAccServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + + + + DESCRIPTION "The only SETable value is 'reset' (2)." + + OBJECT radiusAccClientInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAccClientInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAccServMIBCompliances 2 } + + +-- units of conformance + +radiusAccServMIBGroup OBJECT-GROUP + OBJECTS {radiusAccServIdent, + radiusAccServUpTime, + radiusAccServResetTime, + radiusAccServConfigReset, + radiusAccServTotalRequests, + radiusAccServTotalInvalidRequests, + radiusAccServTotalDupRequests, + radiusAccServTotalResponses, + radiusAccServTotalMalformedRequests, + radiusAccServTotalBadAuthenticators, + radiusAccServTotalPacketsDropped, + radiusAccServTotalNoRecords, + radiusAccServTotalUnknownTypes, + radiusAccClientAddress, + radiusAccClientID, + radiusAccServPacketsDropped, + radiusAccServRequests, + radiusAccServDupRequests, + radiusAccServResponses, + radiusAccServBadAuthenticators, + radiusAccServMalformedRequests, + radiusAccServNoRecords, + radiusAccServUnknownTypes + } + STATUS deprecated + DESCRIPTION + "The collection of objects providing management of + a RADIUS Accounting Server." + + + + ::= { radiusAccServMIBGroups 1 } + +radiusAccServExtMIBGroup OBJECT-GROUP + OBJECTS {radiusAccServIdent, + radiusAccServUpTime, + radiusAccServResetTime, + radiusAccServConfigReset, + radiusAccServTotalRequests, + radiusAccServTotalInvalidRequests, + radiusAccServTotalDupRequests, + radiusAccServTotalResponses, + radiusAccServTotalMalformedRequests, + radiusAccServTotalBadAuthenticators, + radiusAccServTotalPacketsDropped, + radiusAccServTotalNoRecords, + radiusAccServTotalUnknownTypes, + radiusAccClientInetAddressType, + radiusAccClientInetAddress, + radiusAccClientExtID, + radiusAccServExtPacketsDropped, + radiusAccServExtRequests, + radiusAccServExtDupRequests, + radiusAccServExtResponses, + radiusAccServExtBadAuthenticators, + radiusAccServExtMalformedRequests, + radiusAccServExtNoRecords, + radiusAccServExtUnknownTypes, + radiusAccServerCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of objects providing management of + a RADIUS Accounting Server." + ::= { radiusAccServMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-AUTH-CLIENT-MIB b/mibs/ietf/RADIUS-AUTH-CLIENT-MIB new file mode 100644 index 0000000..eea8e9d --- /dev/null +++ b/mibs/ietf/RADIUS-AUTH-CLIENT-MIB @@ -0,0 +1,755 @@ +RADIUS-AUTH-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, Gauge32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +radiusAuthClientMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + + + + US + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the client + side of the Remote Authentication Dial-In User Service + (RADIUS) authentication protocol. Copyright (C) The + Internet Society (2006). This version of this MIB + module is part of RFC 4668; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4668. This + version obsoletes that of RFC 2618 by deprecating + the MIB table containing IPv4-only address formats + and defining a new table to add support for version + neutral IP address formats. The remaining MIB objects + from RFC 2618 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2618." + ::= { radiusAuthentication 2 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAuthentication OBJECT IDENTIFIER ::= {radiusMIB 1} + +radiusAuthClientMIBObjects OBJECT IDENTIFIER + ::= { radiusAuthClientMIB 1 } + +radiusAuthClient OBJECT IDENTIFIER + ::= { radiusAuthClientMIBObjects 1 } + +radiusAuthClientInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Response packets + received from unknown addresses." + ::= { radiusAuthClient 1 } + +radiusAuthClientIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client. + This is not necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClient 2 } + +radiusAuthServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS authentication + servers with which the client shares a secret." + ::= { radiusAuthClient 3 } + +radiusAuthServerEntry OBJECT-TYPE + SYNTAX RadiusAuthServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication server with which the client shares + a secret." + INDEX { radiusAuthServerIndex } + ::= { radiusAuthServerTable 1 } + +RadiusAuthServerEntry ::= SEQUENCE { + radiusAuthServerIndex Integer32, + radiusAuthServerAddress IpAddress, + radiusAuthClientServerPortNumber Integer32, + radiusAuthClientRoundTripTime TimeTicks, + radiusAuthClientAccessRequests Counter32, + radiusAuthClientAccessRetransmissions Counter32, + radiusAuthClientAccessAccepts Counter32, + radiusAuthClientAccessRejects Counter32, + radiusAuthClientAccessChallenges Counter32, + radiusAuthClientMalformedAccessResponses Counter32, + radiusAuthClientBadAuthenticators Counter32, + radiusAuthClientPendingRequests Gauge32, + radiusAuthClientTimeouts Counter32, + radiusAuthClientUnknownTypes Counter32, + radiusAuthClientPacketsDropped Counter32 +} + +radiusAuthServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + + + + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + Authentication server with which this client + communicates." + ::= { radiusAuthServerEntry 1 } + +radiusAuthServerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the RADIUS authentication server + referred to in this table entry." + ::= { radiusAuthServerEntry 2 } + +radiusAuthClientServerPortNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The UDP port the client is using to send requests to + this server." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerEntry 3 } + +radiusAuthClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Access-Reply/Access-Challenge and the + Access-Request that matched it from this RADIUS + authentication server." + ::= { radiusAuthServerEntry 4 } + +-- Request/Response statistics +-- +-- TotalIncomingPackets = Accepts + Rejects + Challenges + +-- UnknownTypes +-- +-- TotalIncomingPackets - MalformedResponses - +-- BadAuthenticators - UnknownTypes - PacketsDropped = +-- Successfully received +-- +-- AccessRequests + PendingRequests + ClientTimeouts = + + + +-- Successfully received +-- +-- + +radiusAuthClientAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets sent + to this server. This does not include retransmissions." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServerEntry 5 } + +radiusAuthClientAccessRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets + retransmitted to this RADIUS authentication server." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerEntry 6 } + +radiusAuthClientAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Accept packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServerEntry 7 } + +radiusAuthClientAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Reject packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServerEntry 8 } + + + + +radiusAuthClientAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Challenge packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServerEntry 9 } + +-- "Access-Response" includes an Access-Accept, Access-Challenge +-- or Access-Reject + +radiusAuthClientMalformedAccessResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Access-Response + packets received from this server. + Malformed packets include packets with + an invalid length. Bad authenticators or + Message Authenticator attributes or unknown types + are not included as malformed access responses." + ::= { radiusAuthServerEntry 10 } + +radiusAuthClientBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Response packets + containing invalid authenticators or Message + Authenticator attributes received from this server." + REFERENCE "RFC 2865 section 3, RFC 2869 section 5.14" + ::= { radiusAuthServerEntry 11 } + +radiusAuthClientPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + + + + when an Access-Request is sent and decremented due to + receipt of an Access-Accept, Access-Reject, + Access-Challenge, timeout, or retransmission." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerEntry 12 } + +radiusAuthClientTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of authentication timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or + give up. A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as a Request as well as a timeout." + REFERENCE "RFC 2865 section 2, RFC 2869 section 2.3.2" + ::= { radiusAuthServerEntry 13 } + +radiusAuthClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the authentication + port." + ::= { radiusAuthServerEntry 14 } + +radiusAuthClientPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets that were + received from this server on the authentication port + and dropped for some other reason." + ::= { radiusAuthServerEntry 15 } + + +-- New MIB Objects in this revision + +radiusAuthServerExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthServerExtEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS authentication + servers with which the client shares a secret." + ::= { radiusAuthClient 4 } + +radiusAuthServerExtEntry OBJECT-TYPE + SYNTAX RadiusAuthServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication server with which the client shares + a secret." + INDEX { radiusAuthServerExtIndex } + ::= { radiusAuthServerExtTable 1 } + +RadiusAuthServerExtEntry ::= SEQUENCE { + radiusAuthServerExtIndex Integer32, + radiusAuthServerInetAddressType InetAddressType, + radiusAuthServerInetAddress InetAddress, + radiusAuthClientServerInetPortNumber InetPortNumber, + radiusAuthClientExtRoundTripTime TimeTicks, + radiusAuthClientExtAccessRequests Counter32, + radiusAuthClientExtAccessRetransmissions Counter32, + radiusAuthClientExtAccessAccepts Counter32, + radiusAuthClientExtAccessRejects Counter32, + radiusAuthClientExtAccessChallenges Counter32, + radiusAuthClientExtMalformedAccessResponses Counter32, + radiusAuthClientExtBadAuthenticators Counter32, + radiusAuthClientExtPendingRequests Gauge32, + radiusAuthClientExtTimeouts Counter32, + radiusAuthClientExtUnknownTypes Counter32, + radiusAuthClientExtPacketsDropped Counter32, + radiusAuthClientCounterDiscontinuity TimeTicks +} + +radiusAuthServerExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + Authentication server with which this client + communicates." + ::= { radiusAuthServerExtEntry 1 } + + + + +radiusAuthServerInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAuthServerInetAddress object." + ::= { radiusAuthServerExtEntry 2 } + +radiusAuthServerInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS authentication + server referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAuthServerExtEntry 3 } + +radiusAuthClientServerInetPortNumber OBJECT-TYPE + SYNTAX InetPortNumber ( 1..65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP port the client is using to send requests + to this server. The value of zero (0) is invalid." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerExtEntry 4 } + +radiusAuthClientExtRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Access-Reply/Access-Challenge and the + Access-Request that matched it from this RADIUS + authentication server." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerExtEntry 5 } + +-- Request/Response statistics +-- +-- TotalIncomingPackets = Accepts + Rejects + Challenges + +-- UnknownTypes +-- +-- TotalIncomingPackets - MalformedResponses - +-- BadAuthenticators - UnknownTypes - PacketsDropped = + + + +-- Successfully received +-- +-- AccessRequests + PendingRequests + ClientTimeouts = +-- Successfully received +-- +-- + +radiusAuthClientExtAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets sent + to this server. This does not include retransmissions. + This counter may experience a discontinuity when the + RADIUS Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServerExtEntry 6 } + +radiusAuthClientExtAccessRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + retransmitted to this RADIUS authentication server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerExtEntry 7 } + +radiusAuthClientExtAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + + + + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServerExtEntry 8 } + +radiusAuthClientExtAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServerExtEntry 9 } + +radiusAuthClientExtAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServerExtEntry 10 } + +-- "Access-Response" includes an Access-Accept, Access-Challenge, +-- or Access-Reject + +radiusAuthClientExtMalformedAccessResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Response + packets received from this server. + Malformed packets include packets with + + + + an invalid length. Bad authenticators or + Message Authenticator attributes or unknown types + are not included as malformed access responses. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 3, 4" + ::= { radiusAuthServerExtEntry 11 } + +radiusAuthClientExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Response packets + containing invalid authenticators or Message + Authenticator attributes received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerExtEntry 12 } + +radiusAuthClientExtPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + when an Access-Request is sent and decremented due to + receipt of an Access-Accept, Access-Reject, + Access-Challenge, timeout, or retransmission." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerExtEntry 13 } + +radiusAuthClientExtTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication timeouts to this server. + + + + After a timeout, the client may retry to the same + server, send to a different server, or + give up. A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as a Request as well as a timeout. + This counter may experience a discontinuity when the + RADIUS Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerExtEntry 14 } + +radiusAuthClientExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the authentication + port. This counter may experience a discontinuity + when the RADIUS Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthServerExtEntry 15 } + +radiusAuthClientExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets that were + received from this server on the authentication port + and dropped for some other reason. This counter may + experience a discontinuity when the RADIUS Client + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + ::= { radiusAuthServerExtEntry 16 } + +radiusAuthClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of centiseconds since the last discontinuity + in the RADIUS Client counters. A discontinuity may + be the result of a reinitialization of the RADIUS + Client module within the managed entity." + ::= { radiusAuthServerExtEntry 17 } + + +-- conformance information + +radiusAuthClientMIBConformance OBJECT IDENTIFIER + ::= { radiusAuthClientMIB 2 } + +radiusAuthClientMIBCompliances OBJECT IDENTIFIER + ::= { radiusAuthClientMIBConformance 1 } + +radiusAuthClientMIBGroups OBJECT IDENTIFIER + ::= { radiusAuthClientMIBConformance 2 } + + +-- compliance statements + +radiusAuthClientMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for authentication clients + implementing the RADIUS Authentication Client MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthClientMIBGroup } + + ::= { radiusAuthClientMIBCompliances 1 } + +radiusAuthClientExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for authentication + clients implementing the RADIUS Authentication + Client IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthClientExtMIBGroup } + + OBJECT radiusAuthServerInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + + + + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAuthServerInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + ::= { radiusAuthClientMIBCompliances 2 } + + +-- units of conformance + +radiusAuthClientMIBGroup OBJECT-GROUP + OBJECTS { radiusAuthClientIdentifier, + radiusAuthClientInvalidServerAddresses, + radiusAuthServerAddress, + radiusAuthClientServerPortNumber, + radiusAuthClientRoundTripTime, + radiusAuthClientAccessRequests, + radiusAuthClientAccessRetransmissions, + radiusAuthClientAccessAccepts, + radiusAuthClientAccessRejects, + radiusAuthClientAccessChallenges, + radiusAuthClientMalformedAccessResponses, + radiusAuthClientBadAuthenticators, + radiusAuthClientPendingRequests, + radiusAuthClientTimeouts, + radiusAuthClientUnknownTypes, + radiusAuthClientPacketsDropped + } + STATUS deprecated + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Authentication Clients." + ::= { radiusAuthClientMIBGroups 1 } + + +radiusAuthClientExtMIBGroup OBJECT-GROUP + OBJECTS { radiusAuthClientIdentifier, + radiusAuthClientInvalidServerAddresses, + radiusAuthServerInetAddressType, + radiusAuthServerInetAddress, + radiusAuthClientServerInetPortNumber, + radiusAuthClientExtRoundTripTime, + radiusAuthClientExtAccessRequests, + radiusAuthClientExtAccessRetransmissions, + radiusAuthClientExtAccessAccepts, + + + + radiusAuthClientExtAccessRejects, + radiusAuthClientExtAccessChallenges, + radiusAuthClientExtMalformedAccessResponses, + radiusAuthClientExtBadAuthenticators, + radiusAuthClientExtPendingRequests, + radiusAuthClientExtTimeouts, + radiusAuthClientExtUnknownTypes, + radiusAuthClientExtPacketsDropped, + radiusAuthClientCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of extended objects providing + management of RADIUS Authentication Clients + using version-neutral IP address format." + ::= { radiusAuthClientMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-AUTH-SERVER-MIB b/mibs/ietf/RADIUS-AUTH-SERVER-MIB new file mode 100644 index 0000000..6fbd518 --- /dev/null +++ b/mibs/ietf/RADIUS-AUTH-SERVER-MIB @@ -0,0 +1,824 @@ +RADIUS-AUTH-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +radiusAuthServMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + US + Phone: +1 425 936 6605 + + + + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the server + side of the Remote Authentication Dial-In User + Service (RADIUS) authentication protocol. Copyright + (C) The Internet Society (2006). This version of this + MIB module is part of RFC 4669; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4669. This + version obsoletes that of RFC 2619 by deprecating the + MIB table containing IPv4-only address formats and + defining a new table to add support for version-neutral + IP address formats. The remaining MIB objects from RFC + 2619 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2619." + ::= { radiusAuthentication 1 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAuthentication OBJECT IDENTIFIER ::= {radiusMIB 1} + +radiusAuthServMIBObjects OBJECT IDENTIFIER + ::= { radiusAuthServMIB 1 } + +radiusAuthServ OBJECT IDENTIFIER + ::= { radiusAuthServMIBObjects 1 } + +radiusAuthServIdent OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + RADIUS authentication server software in use on the + system, for example, 'FNS-2.1'." + ::= {radiusAuthServ 1} + +radiusAuthServUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "If the server has a persistent state (e.g., a + process), this value will be the time elapsed (in + hundredths of a second) since the server process + was started. For software without persistent state, + this value will be zero." + ::= {radiusAuthServ 2} + +radiusAuthServResetTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a 'reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed (in hundredths of a second) since the + server was 'reset.' For software that does not + have persistence or does not support a 'reset' + operation, this value will be zero." + ::= {radiusAuthServ 3} + +radiusAuthServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4)} + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistent + server state. When set to reset(2), any persistent + server state (such as a process) is reinitialized as + if the server had just been started. This value will + never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= {radiusAuthServ 4} + +radiusAuthServTotalAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received on the + + + + authentication port." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 5} + +radiusAuthServTotalInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + received from unknown addresses." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 6 } + +radiusAuthServTotalDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 7 } + +radiusAuthServTotalAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets sent." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServ 8 } + +radiusAuthServTotalAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets sent." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServ 9 } + +radiusAuthServTotalAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets sent." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServ 10 } + +radiusAuthServTotalMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received. Bad authenticators + and unknown types are not included as + malformed Access-Requests." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 11 } + +radiusAuthServTotalBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServ 12 } + +radiusAuthServTotalPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets + silently discarded for some reason other + than malformed, bad authenticators or + unknown types." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServ 13 } + +radiusAuthServTotalUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthServ 14 } + + +radiusAuthClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS + authentication clients with which the server shares + a secret." + ::= { radiusAuthServ 15 } + + +radiusAuthClientEntry OBJECT-TYPE + SYNTAX RadiusAuthClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication client with which the server shares a + secret." + INDEX { radiusAuthClientIndex } + ::= { radiusAuthClientTable 1 } + +RadiusAuthClientEntry ::= SEQUENCE { + radiusAuthClientIndex Integer32, + radiusAuthClientAddress IpAddress, + radiusAuthClientID SnmpAdminString, + radiusAuthServAccessRequests Counter32, + radiusAuthServDupAccessRequests Counter32, + radiusAuthServAccessAccepts Counter32, + radiusAuthServAccessRejects Counter32, + radiusAuthServAccessChallenges Counter32, + radiusAuthServMalformedAccessRequests Counter32, + radiusAuthServBadAuthenticators Counter32, + radiusAuthServPacketsDropped Counter32, + radiusAuthServUnknownTypes Counter32 +} + +radiusAuthClientIndex OBJECT-TYPE + + + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + authentication client with which this server + communicates." + ::= { radiusAuthClientEntry 1 } + +radiusAuthClientAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-IP-Address of the RADIUS authentication client + referred to in this table entry." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthClientEntry 2 } + +radiusAuthClientID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClientEntry 3 } + +-- Server Counters + +-- +-- Responses = AccessAccepts + AccessRejects + AccessChallenges +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped = entries logged + +radiusAuthServAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets received on the authentication + + + + port from this client." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientEntry 4 } + +radiusAuthServDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received from this client." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientEntry 5 } + +radiusAuthServAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Accept packets + sent to this client." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthClientEntry 6 } + +radiusAuthServAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Reject packets + sent to this client." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthClientEntry 7 } + +radiusAuthServAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Challenge packets + sent to this client." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthClientEntry 8 } + + + + +radiusAuthServMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received from this client. + Bad authenticators and unknown types are not included + as malformed Access-Requests." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 9 } + +radiusAuthServBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received from this client." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 10 } + +radiusAuthServPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of incoming packets from this + client silently discarded for some reason other + than malformed, bad authenticators or + unknown types." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 11 } + +radiusAuthServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthClientEntry 12 } + + + +-- New MIB objects added in this revision + +radiusAuthClientExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS + authentication clients with which the server shares + a secret." + ::= { radiusAuthServ 16 } + +radiusAuthClientExtEntry OBJECT-TYPE + SYNTAX RadiusAuthClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication client with which the server shares a + secret." + INDEX { radiusAuthClientExtIndex } + ::= { radiusAuthClientExtTable 1 } + +RadiusAuthClientExtEntry ::= SEQUENCE { + radiusAuthClientExtIndex Integer32, + radiusAuthClientInetAddressType InetAddressType, + radiusAuthClientInetAddress InetAddress, + radiusAuthClientExtID SnmpAdminString, + radiusAuthServExtAccessRequests Counter32, + radiusAuthServExtDupAccessRequests Counter32, + radiusAuthServExtAccessAccepts Counter32, + radiusAuthServExtAccessRejects Counter32, + radiusAuthServExtAccessChallenges Counter32, + radiusAuthServExtMalformedAccessRequests Counter32, + radiusAuthServExtBadAuthenticators Counter32, + radiusAuthServExtPacketsDropped Counter32, + radiusAuthServExtUnknownTypes Counter32, + radiusAuthServCounterDiscontinuity TimeTicks +} + +radiusAuthClientExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + authentication client with which this server + communicates." + + + + ::= { radiusAuthClientExtEntry 1 } + +radiusAuthClientInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAuthClientInetAddress object." + ::= { radiusAuthClientExtEntry 2 } + + radiusAuthClientInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS authentication + client referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAuthClientExtEntry 3 } + + +radiusAuthClientExtID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClientExtEntry 4 } + +-- Server Counters + +-- +-- Responses = AccessAccepts + AccessRejects + AccessChallenges +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped = entries logged + +radiusAuthServExtAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets received on the authentication + port from this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientExtEntry 5 } + +radiusAuthServExtDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received from this client. This counter may + experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientExtEntry 6 } + +radiusAuthServExtAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthClientExtEntry 7 } + +radiusAuthServExtAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + + + + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthClientExtEntry 8 } + +radiusAuthServExtAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthClientExtEntry 9 } + +radiusAuthServExtMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received from this client. Bad authenticators + and unknown types are not included as malformed + Access-Requests. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 sections 3, 4.1" + ::= { radiusAuthClientExtEntry 10 } + +radiusAuthServExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received from this client. This counter + may experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + + + + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientExtEntry 11 } + +radiusAuthServExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets from this client + silently discarded for some reason other than + malformed, bad authenticators or unknown types. + This counter may experience a discontinuity when the + RADIUS Server module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientExtEntry 12 } + +radiusAuthServExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client. This counter may + experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthClientExtEntry 13 } + +radiusAuthServCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Server counters. + A discontinuity may be the result of a + reinitialization of the RADIUS Server module + within the managed entity." + ::= { radiusAuthClientExtEntry 14 } + + + + + +-- conformance information + +radiusAuthServMIBConformance OBJECT IDENTIFIER + ::= { radiusAuthServMIB 2 } + +radiusAuthServMIBCompliances OBJECT IDENTIFIER + ::= { radiusAuthServMIBConformance 1 } + +radiusAuthServMIBGroups OBJECT IDENTIFIER + ::= { radiusAuthServMIBConformance 2 } + +-- compliance statements + +radiusAuthServMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for authentication + servers implementing the RADIUS Authentication + Server MIB. Implementation of this module is for + IPv4-only entities, or for backwards compatibility + use with entities that support both IPv4 and + IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthServMIBGroup } + + OBJECT radiusAuthServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + ::= { radiusAuthServMIBCompliances 1 } + + +radiusAuthServMIBExtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for authentication + servers implementing the RADIUS Authentication + Server IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthServExtMIBGroup } + + OBJECT radiusAuthServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + OBJECT radiusAuthClientInetAddressType + + + + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAuthClientInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAuthServMIBCompliances 2 } + + +-- units of conformance + +radiusAuthServMIBGroup OBJECT-GROUP + OBJECTS {radiusAuthServIdent, + radiusAuthServUpTime, + radiusAuthServResetTime, + radiusAuthServConfigReset, + radiusAuthServTotalAccessRequests, + radiusAuthServTotalInvalidRequests, + radiusAuthServTotalDupAccessRequests, + radiusAuthServTotalAccessAccepts, + radiusAuthServTotalAccessRejects, + radiusAuthServTotalAccessChallenges, + radiusAuthServTotalMalformedAccessRequests, + radiusAuthServTotalBadAuthenticators, + radiusAuthServTotalPacketsDropped, + radiusAuthServTotalUnknownTypes, + radiusAuthClientAddress, + radiusAuthClientID, + radiusAuthServAccessRequests, + radiusAuthServDupAccessRequests, + radiusAuthServAccessAccepts, + radiusAuthServAccessRejects, + radiusAuthServAccessChallenges, + radiusAuthServMalformedAccessRequests, + radiusAuthServBadAuthenticators, + radiusAuthServPacketsDropped, + radiusAuthServUnknownTypes + } + STATUS deprecated + DESCRIPTION + "The collection of objects providing management of + a RADIUS Authentication Server." + ::= { radiusAuthServMIBGroups 1 } + + + +radiusAuthServExtMIBGroup OBJECT-GROUP + OBJECTS {radiusAuthServIdent, + radiusAuthServUpTime, + radiusAuthServResetTime, + radiusAuthServConfigReset, + radiusAuthServTotalAccessRequests, + radiusAuthServTotalInvalidRequests, + radiusAuthServTotalDupAccessRequests, + radiusAuthServTotalAccessAccepts, + radiusAuthServTotalAccessRejects, + radiusAuthServTotalAccessChallenges, + radiusAuthServTotalMalformedAccessRequests, + radiusAuthServTotalBadAuthenticators, + radiusAuthServTotalPacketsDropped, + radiusAuthServTotalUnknownTypes, + radiusAuthClientInetAddressType, + radiusAuthClientInetAddress, + radiusAuthClientExtID, + radiusAuthServExtAccessRequests, + radiusAuthServExtDupAccessRequests, + radiusAuthServExtAccessAccepts, + radiusAuthServExtAccessRejects, + radiusAuthServExtAccessChallenges, + radiusAuthServExtMalformedAccessRequests, + radiusAuthServExtBadAuthenticators, + radiusAuthServExtPacketsDropped, + radiusAuthServExtUnknownTypes, + radiusAuthServCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of objects providing management of + a RADIUS Authentication Server." + ::= { radiusAuthServMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB b/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB new file mode 100644 index 0000000..d2257e4 --- /dev/null +++ b/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB @@ -0,0 +1,816 @@ +RADIUS-DYNAUTH-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, Integer32, + mib-2, TimeTicks FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB -- [RFC4001] + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF; -- [RFC2580] + +radiusDynAuthClientMIB MODULE-IDENTITY + LAST-UPDATED "200608290000Z" -- 29 August 2006 + ORGANIZATION "IETF RADEXT Working Group" + CONTACT-INFO + " Stefaan De Cnodder + + + + Alcatel + Francis Wellesplein 1 + B-2018 Antwerp + Belgium + + Phone: +32 3 240 85 15 + EMail: stefaan.de_cnodder@alcatel.be + + Nagi Reddy Jonnala + Cisco Systems, Inc. + Divyasree Chambers, B Wing, + O'Shaugnessy Road, + Bangalore-560027, India. + + Phone: +91 94487 60828 + EMail: njonnala@cisco.com + + Murtaza Chiba + Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA, 95134 + + Phone: +1 408 525 7198 + EMail: mchiba@cisco.com " + DESCRIPTION + "The MIB module for entities implementing the client + side of the Dynamic Authorization Extensions to the + Remote Authentication Dial-In User Service (RADIUS) + protocol. Copyright (C) The Internet Society (2006). + Initial version as published in RFC 4672; + for full legal notices see the RFC itself." + + REVISION "200609290000Z" -- 29 August 2006 + DESCRIPTION "Initial version as published in RFC 4672" + ::= { mib-2 145 } + +radiusDynAuthClientMIBObjects OBJECT IDENTIFIER ::= + { radiusDynAuthClientMIB 1 } + +radiusDynAuthClientScalars OBJECT IDENTIFIER ::= + { radiusDynAuthClientMIBObjects 1 } + +radiusDynAuthClientDisconInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect-Ack and Disconnect-NAK packets + + + + received from unknown addresses. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + ::= { radiusDynAuthClientScalars 1 } + +radiusDynAuthClientCoAInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA-Ack and CoA-NAK packets received from + unknown addresses. Disconnect-NAK packets received + from unknown addresses. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + ::= { radiusDynAuthClientScalars 2 } + +radiusDynAuthServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusDynAuthServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS Dynamic + Authorization Servers with which the client shares a + secret." + ::= { radiusDynAuthClientMIBObjects 2 } + +radiusDynAuthServerEntry OBJECT-TYPE + SYNTAX RadiusDynAuthServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing one Dynamic + Authorization Server with which the client shares a + secret." + INDEX { radiusDynAuthServerIndex } + ::= { radiusDynAuthServerTable 1 } + +RadiusDynAuthServerEntry ::= SEQUENCE { + radiusDynAuthServerIndex Integer32, + radiusDynAuthServerAddressType InetAddressType, + radiusDynAuthServerAddress InetAddress, + radiusDynAuthServerClientPortNumber InetPortNumber, + radiusDynAuthServerID SnmpAdminString, + radiusDynAuthClientRoundTripTime TimeTicks, + radiusDynAuthClientDisconRequests Counter32, + + + + radiusDynAuthClientDisconAuthOnlyRequests Counter32, + radiusDynAuthClientDisconRetransmissions Counter32, + radiusDynAuthClientDisconAcks Counter32, + radiusDynAuthClientDisconNaks Counter32, + radiusDynAuthClientDisconNakAuthOnlyRequest Counter32, + radiusDynAuthClientDisconNakSessNoContext Counter32, + radiusDynAuthClientMalformedDisconResponses Counter32, + radiusDynAuthClientDisconBadAuthenticators Counter32, + radiusDynAuthClientDisconPendingRequests Gauge32, + radiusDynAuthClientDisconTimeouts Counter32, + radiusDynAuthClientDisconPacketsDropped Counter32, + radiusDynAuthClientCoARequests Counter32, + radiusDynAuthClientCoAAuthOnlyRequest Counter32, + radiusDynAuthClientCoARetransmissions Counter32, + radiusDynAuthClientCoAAcks Counter32, + radiusDynAuthClientCoANaks Counter32, + radiusDynAuthClientCoANakAuthOnlyRequest Counter32, + radiusDynAuthClientCoANakSessNoContext Counter32, + radiusDynAuthClientMalformedCoAResponses Counter32, + radiusDynAuthClientCoABadAuthenticators Counter32, + radiusDynAuthClientCoAPendingRequests Gauge32, + radiusDynAuthClientCoATimeouts Counter32, + radiusDynAuthClientCoAPacketsDropped Counter32, + radiusDynAuthClientUnknownTypes Counter32, + radiusDynAuthClientCounterDiscontinuity TimeTicks +} + + +radiusDynAuthServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS Dynamic + Authorization Server with which this Dynamic + Authorization Client communicates. This number is + allocated by the agent implementing this MIB module + and is unique in this context." + ::= { radiusDynAuthServerEntry 1 } + +radiusDynAuthServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of IP address of the RADIUS Dynamic + Authorization Server referred to in this table entry." + ::= { radiusDynAuthServerEntry 2 } + + + +radiusDynAuthServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address value of the RADIUS Dynamic + Authorization Server referred to in this table entry + using the version neutral IP address format. The type + of this address is determined by the value of the + radiusDynAuthServerAddressType object." + ::= { radiusDynAuthServerEntry 3 } + +radiusDynAuthServerClientPortNumber OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP destination port that the RADIUS Dynamic + Authorization Client is using to send requests to this + server. The value zero is invalid." + ::= { radiusDynAuthServerEntry 4 } + + +radiusDynAuthServerID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS Dynamic Authorization + Server referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE + "RFC 2865, Section 5.32, NAS-Identifier." + ::= { radiusDynAuthServerEntry 5 } + +radiusDynAuthClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Disconnect or CoA request and the + receipt of the corresponding Disconnect or CoA reply. + A value of zero is returned if no reply has been + received yet from this server." + ::= { radiusDynAuthServerEntry 6 } + + + + +radiusDynAuthClientDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests sent + to this Dynamic Authorization Server. This also + includes the RADIUS Disconnect-Requests that have a + Service-Type attribute with value 'Authorize Only'. + Disconnect-NAK packets received from unknown addresses. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 7 } + +radiusDynAuthClientDisconAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Server. + Disconnect-NAK packets received from unknown addresses. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 8 } + +radiusDynAuthClientDisconRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "retransmissions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-request packets + retransmitted to this RADIUS Dynamic Authorization + Server. Disconnect-NAK packets received from unknown + addresses. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + + + + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 9 } + +radiusDynAuthClientDisconAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-ACK packets + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 10 } + +radiusDynAuthClientDisconNaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + received from this Dynamic Authorization Server. + This includes the RADIUS Disconnect-NAK packets + received with a Service-Type attribute with value + 'Authorize Only' and the RADIUS Disconnect-NAK + packets received if no session context was found. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 11 } + +radiusDynAuthClientDisconNakAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + that include a Service-Type attribute with value + 'Authorize Only' received from this Dynamic + Authorization Server. This counter may experience a + discontinuity when the DAC module (re)starts, as + + + + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 12 } + +radiusDynAuthClientDisconNakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + received from this Dynamic Authorization Server + because no session context was found; i.e., it + includes an Error-Cause attribute with value 503 + ('Session Context Not Found'). This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 13 } + +radiusDynAuthClientMalformedDisconResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Disconnect-Ack and + Disconnect-NAK packets received from this Dynamic + Authorization Server. Bad authenticators and unknown + types are not included as malformed Disconnect-Ack and + Disconnect-NAK packets. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 14 } + +radiusDynAuthClientDisconBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS Disconnect-Ack and Disconnect-NAK + packets that contained invalid Authenticator field + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 15 } + +radiusDynAuthClientDisconPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + when an Disconnect-Request is sent and decremented + due to receipt of a Disconnect-Ack, a Disconnect-NAK, + a timeout, or a retransmission." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 16 } + +radiusDynAuthClientDisconTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect request timeouts to this + server. After a timeout, the client may retry to the + same server or give up. A retry to the same server is + counted as a retransmit and as a timeout. A send + to a different server is counted as a + Disconnect-Request and as a timeout. This counter + may experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 17 } + +radiusDynAuthClientDisconPacketsDropped OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming Disconnect-Ack and + Disconnect-NAK packets from this Dynamic Authorization + Server silently discarded by the client application for + some reason other than malformed, bad authenticators, + or unknown types. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 18 } + +radiusDynAuthClientCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Requests sent to this + Dynamic Authorization Server. This also includes + CoA requests that have a Service-Type attribute + with value 'Authorize Only'. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 19 } + +radiusDynAuthClientCoAAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 20 } + +radiusDynAuthClientCoARetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "retransmissions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-request packets + retransmitted to this RADIUS Dynamic Authorization + Server. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 21 } + +radiusDynAuthClientCoAAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-ACK packets received from + this Dynamic Authorization Server. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 22 } + +radiusDynAuthClientCoANaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets received from + this Dynamic Authorization Server. This includes the + RADIUS CoA-NAK packets received with a Service-Type + attribute with value 'Authorize Only' and the RADIUS + CoA-NAK packets received because no session context + + + + was found. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 23 } + +radiusDynAuthClientCoANakAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets that include a + Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 24 } + +radiusDynAuthClientCoANakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets received from + this Dynamic Authorization Server because no session + context was found; i.e., it includes an Error-Cause + attribute with value 503 ('Session Context Not Found'). + This counter may experience a discontinuity when the + DAC module (re)starts as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 25 } + +radiusDynAuthClientMalformedCoAResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of malformed RADIUS CoA-Ack and CoA-NAK + packets received from this Dynamic Authorization + Server. Bad authenticators and unknown types are + not included as malformed CoA-Ack and CoA-NAK packets. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 26 } + +radiusDynAuthClientCoABadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Ack and CoA-NAK packets + that contained invalid Authenticator field + received from this Dynamic Authorization Server. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 27 } + +radiusDynAuthClientCoAPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-request packets destined for + this server that have not yet timed out or received a + response. This variable is incremented when an + CoA-Request is sent and decremented due to receipt of + a CoA-Ack, a CoA-NAK, or a timeout, or a + retransmission." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 28 } + +radiusDynAuthClientCoATimeouts OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA request timeouts to this server. + After a timeout, the client may retry to the same + server or give up. A retry to the same server is + counted as a retransmit and as a timeout. A send to + a different server is counted as a CoA-Request and + as a timeout. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 29 } + +radiusDynAuthClientCoAPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming CoA-Ack and CoA-NAK from this + Dynamic Authorization Server silently discarded by the + client application for some reason other than + malformed, bad authenticators, or unknown types. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 30 } + +radiusDynAuthClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets of unknown types + that were received on the Dynamic Authorization port. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 31 } + +radiusDynAuthClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last counter discontinuity. A discontinuity may + be the result of a reinitialization of the DAC + module within the managed entity." + ::= { radiusDynAuthServerEntry 32 } + + +-- conformance information + +radiusDynAuthClientMIBConformance + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIB 2 } +radiusDynAuthClientMIBCompliances + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIBConformance 1 } +radiusDynAuthClientMIBGroups + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIBConformance 2 } +-- compliance statements + +radiusDynAuthClientMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities implementing + the RADIUS Dynamic Authorization Client. + Implementation of this module is for entities that + support IPv4 and/or IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusDynAuthClientMIBGroup } + + OBJECT radiusDynAuthServerAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT radiusDynAuthServerAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + + + GROUP radiusDynAuthClientAuthOnlyGroup + DESCRIPTION + "Only required for Dynamic Authorization Clients that + are supporting Service-Type attributes with value + 'Authorize-Only'." + + + GROUP radiusDynAuthClientNoSessGroup + DESCRIPTION + "This group is not required if the Dynamic + Authorization Server cannot easily determine whether + a session exists (e.g., in case of a RADIUS + proxy)." + + ::= { radiusDynAuthClientMIBCompliances 1 } + +-- units of conformance + +radiusDynAuthClientMIBGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconInvalidServerAddresses, + radiusDynAuthClientCoAInvalidServerAddresses, + radiusDynAuthServerAddressType, + radiusDynAuthServerAddress, + radiusDynAuthServerClientPortNumber, + radiusDynAuthServerID, + radiusDynAuthClientRoundTripTime, + radiusDynAuthClientDisconRequests, + radiusDynAuthClientDisconRetransmissions, + radiusDynAuthClientDisconAcks, + radiusDynAuthClientDisconNaks, + radiusDynAuthClientMalformedDisconResponses, + radiusDynAuthClientDisconBadAuthenticators, + radiusDynAuthClientDisconPendingRequests, + radiusDynAuthClientDisconTimeouts, + radiusDynAuthClientDisconPacketsDropped, + radiusDynAuthClientCoARequests, + radiusDynAuthClientCoARetransmissions, + radiusDynAuthClientCoAAcks, + radiusDynAuthClientCoANaks, + radiusDynAuthClientMalformedCoAResponses, + radiusDynAuthClientCoABadAuthenticators, + radiusDynAuthClientCoAPendingRequests, + radiusDynAuthClientCoATimeouts, + radiusDynAuthClientCoAPacketsDropped, + radiusDynAuthClientUnknownTypes, + radiusDynAuthClientCounterDiscontinuity + } + STATUS current + + + + DESCRIPTION + "The collection of objects providing management of + a RADIUS Dynamic Authorization Client." + ::= { radiusDynAuthClientMIBGroups 1 } + +radiusDynAuthClientAuthOnlyGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconAuthOnlyRequests, + radiusDynAuthClientDisconNakAuthOnlyRequest, + radiusDynAuthClientCoAAuthOnlyRequest, + radiusDynAuthClientCoANakAuthOnlyRequest + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages including Service-Type attribute with + value 'Authorize Only'." + ::= { radiusDynAuthClientMIBGroups 2 } + +radiusDynAuthClientNoSessGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconNakSessNoContext, + radiusDynAuthClientCoANakSessNoContext + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages that are referring to non-existing sessions." + ::= { radiusDynAuthClientMIBGroups 3 } + + + +END diff --git a/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB b/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB new file mode 100644 index 0000000..6163023 --- /dev/null +++ b/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB @@ -0,0 +1,742 @@ +RADIUS-DYNAUTH-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, mib-2, + TimeTicks FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, + InetAddress FROM INET-ADDRESS-MIB -- [RFC4001] + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF; -- [RFC2580] + +radiusDynAuthServerMIB MODULE-IDENTITY + LAST-UPDATED "200608290000Z" -- 29 August 2006 + ORGANIZATION "IETF RADEXT Working Group" + CONTACT-INFO + " Stefaan De Cnodder + Alcatel + Francis Wellesplein 1 + B-2018 Antwerp + Belgium + + Phone: +32 3 240 85 15 + EMail: stefaan.de_cnodder@alcatel.be + + Nagi Reddy Jonnala + Cisco Systems, Inc. + Divyasree Chambers, B Wing, + O'Shaugnessy Road, + Bangalore-560027, India. + + Phone: +91 94487 60828 + EMail: njonnala@cisco.com + + Murtaza Chiba + Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA, 95134 + + Phone: +1 408 525 7198 + EMail: mchiba@cisco.com " + DESCRIPTION + "The MIB module for entities implementing the server + side of the Dynamic Authorization Extensions to the + Remote Authentication Dial-In User Service (RADIUS) + protocol. Copyright (C) The Internet Society (2006). + + + + Initial version as published in RFC 4673; for full + legal notices see the RFC itself." + + REVISION "200608290000Z" -- 29 August 2006 + DESCRIPTION "Initial version as published in RFC 4673." + ::= { mib-2 146 } + +radiusDynAuthServerMIBObjects OBJECT IDENTIFIER ::= + { radiusDynAuthServerMIB 1 } + +radiusDynAuthServerScalars OBJECT IDENTIFIER ::= + { radiusDynAuthServerMIBObjects 1 } + +radiusDynAuthServerDisconInvalidClientAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect-Request packets received from + unknown addresses. This counter may experience a + discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + ::= { radiusDynAuthServerScalars 1 } + +radiusDynAuthServerCoAInvalidClientAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA-Request packets received from unknown + addresses. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + ::= { radiusDynAuthServerScalars 2 } + +radiusDynAuthServerIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS Dynamic Authorization + Server. This is not necessarily the same as sysName in + MIB II." + REFERENCE + "RFC 2865, Section 5.32, NAS-Identifier." + ::= { radiusDynAuthServerScalars 3 } + + + + +radiusDynAuthClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusDynAuthClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS Dynamic + Authorization Clients with which the server shares a + secret." + ::= { radiusDynAuthServerMIBObjects 2 } + +radiusDynAuthClientEntry OBJECT-TYPE + SYNTAX RadiusDynAuthClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing one Dynamic + Authorization Client with which the server shares a + secret." + INDEX { radiusDynAuthClientIndex } + ::= { radiusDynAuthClientTable 1 } + +RadiusDynAuthClientEntry ::= SEQUENCE { + radiusDynAuthClientIndex Integer32, + radiusDynAuthClientAddressType InetAddressType, + radiusDynAuthClientAddress InetAddress, + radiusDynAuthServDisconRequests Counter32, + radiusDynAuthServDisconAuthOnlyRequests Counter32, + radiusDynAuthServDupDisconRequests Counter32, + radiusDynAuthServDisconAcks Counter32, + radiusDynAuthServDisconNaks Counter32, + radiusDynAuthServDisconNakAuthOnlyRequests Counter32, + radiusDynAuthServDisconNakSessNoContext Counter32, + radiusDynAuthServDisconUserSessRemoved Counter32, + radiusDynAuthServMalformedDisconRequests Counter32, + radiusDynAuthServDisconBadAuthenticators Counter32, + radiusDynAuthServDisconPacketsDropped Counter32, + radiusDynAuthServCoARequests Counter32, + radiusDynAuthServCoAAuthOnlyRequests Counter32, + radiusDynAuthServDupCoARequests Counter32, + radiusDynAuthServCoAAcks Counter32, + radiusDynAuthServCoANaks Counter32, + radiusDynAuthServCoANakAuthOnlyRequests Counter32, + radiusDynAuthServCoANakSessNoContext Counter32, + radiusDynAuthServCoAUserSessChanged Counter32, + radiusDynAuthServMalformedCoARequests Counter32, + radiusDynAuthServCoABadAuthenticators Counter32, + radiusDynAuthServCoAPacketsDropped Counter32, + radiusDynAuthServUnknownTypes Counter32, + + + + radiusDynAuthServerCounterDiscontinuity TimeTicks +} + + +radiusDynAuthClientIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS Dynamic + Authorization Client with which this Dynamic + Authorization Server communicates. This number is + allocated by the agent implementing this MIB module + and is unique in this context." + ::= { radiusDynAuthClientEntry 1 } + +radiusDynAuthClientAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of IP address of the RADIUS Dynamic + Authorization Client referred to in this table entry." + ::= { radiusDynAuthClientEntry 2 } + +radiusDynAuthClientAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address value of the RADIUS Dynamic + Authorization Client referred to in this table entry, + using the version neutral IP address format. The type + of this address is determined by the value of + the radiusDynAuthClientAddressType object." + ::= { radiusDynAuthClientEntry 3 } + +radiusDynAuthServDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests received + from this Dynamic Authorization Client. This also + includes the RADIUS Disconnect-Requests that have a + Service-Type attribute with value 'Authorize Only'. + This counter may experience a discontinuity when the + + + + DAS module (re)starts as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 4 } + +radiusDynAuthServDisconAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests that include + a Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 5 } + +radiusDynAuthServDupDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Disconnect-Request + packets received from this Dynamic Authorization + Client. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 6 } + +radiusDynAuthServDisconAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-ACK packets sent to + this Dynamic Authorization Client. This counter may + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 7 } + +radiusDynAuthServDisconNaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + sent to this Dynamic Authorization Client. This + includes the RADIUS Disconnect-NAK packets sent + with a Service-Type attribute with value 'Authorize + Only' and the RADIUS Disconnect-NAK packets sent + because no session context was found. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 8 } + +radiusDynAuthServDisconNakAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets that + include a Service-Type attribute with value + 'Authorize Only' sent to this Dynamic Authorization + Client. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 9 } + +radiusDynAuthServDisconNakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + sent to this Dynamic Authorization Client + because no session context was found. This counter may + + + + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 10 } + +radiusDynAuthServDisconUserSessRemoved OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions removed for the + Disconnect-Requests received from this + Dynamic Authorization Client. Depending on site- + specific policies, a single Disconnect request + can remove multiple user sessions. In cases where + this Dynamic Authorization Server has no + knowledge of the number of user sessions that + are affected by a single request, each such + Disconnect-Request will count as a single + affected user session only. This counter may experience + a discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 11 } + +radiusDynAuthServMalformedDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Disconnect-Request + packets received from this Dynamic Authorization + Client. Bad authenticators and unknown types are not + included as malformed Disconnect-Requests. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 12 } + + + + +radiusDynAuthServDisconBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Request packets + that contained an invalid Authenticator field + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 13 } + +radiusDynAuthServDisconPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming Disconnect-Requests + from this Dynamic Authorization Client silently + discarded by the server application for some reason + other than malformed, bad authenticators, or unknown + types. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 14 } + +radiusDynAuthServCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests received from this + Dynamic Authorization Client. This also includes + the CoA requests that have a Service-Type attribute + with value 'Authorize Only'. This counter may + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 15 } + +radiusDynAuthServCoAAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests that include a + Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 16 } + + +radiusDynAuthServDupCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS CoA-Request packets + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 17 } + +radiusDynAuthServCoAAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-ACK packets sent to this + Dynamic Authorization Client. This counter may + experience a discontinuity when the DAS module + + + + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 18 } + +radiusDynAuthServCoANaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets sent to + this Dynamic Authorization Client. This includes + the RADIUS CoA-NAK packets sent with a Service-Type + attribute with value 'Authorize Only' and the RADIUS + CoA-NAK packets sent because no session context was + found. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 19 } + +radiusDynAuthServCoANakAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Client. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 20 } + +radiusDynAuthServCoANakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS CoA-NAK packets sent to this + Dynamic Authorization Client because no session context + was found. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 21 } + +radiusDynAuthServCoAUserSessChanged OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions authorization + changed for the CoA-Requests received from this + Dynamic Authorization Client. Depending on site- + specific policies, a single CoA request can change + multiple user sessions' authorization. In cases where + this Dynamic Authorization Server has no knowledge of + the number of user sessions that are affected by a + single request, each such CoA-Request will + count as a single affected user session only. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 22 } + +radiusDynAuthServMalformedCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS CoA-Request packets + received from this Dynamic Authorization Client. Bad + authenticators and unknown types are not included as + malformed CoA-Requests. This counter may experience a + discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + + + + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 23 } + +radiusDynAuthServCoABadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Request packets that + contained an invalid Authenticator field received + from this Dynamic Authorization Client. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 24 } + +radiusDynAuthServCoAPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming CoA packets from this + Dynamic Authorization Client silently discarded + by the server application for some reason other than + malformed, bad authenticators, or unknown types. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 25 } + +radiusDynAuthServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets of unknown types that + were received on the Dynamic Authorization port. This + counter may experience a discontinuity when the DAS + + + + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 26 } + +radiusDynAuthServerCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last counter discontinuity. A discontinuity may + be the result of a reinitialization of the DAS + module within the managed entity." + ::= { radiusDynAuthClientEntry 27 } + + +-- conformance information + +radiusDynAuthServerMIBConformance + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIB 2 } +radiusDynAuthServerMIBCompliances + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIBConformance 1 } +radiusDynAuthServerMIBGroups + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIBConformance 2 } + +-- compliance statements + +radiusAuthServerMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities implementing + the RADIUS Dynamic Authorization Server. Implementation + of this module is for entities that support IPv4 and/or + IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusDynAuthServerMIBGroup } + + OBJECT radiusDynAuthClientAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT radiusDynAuthClientAddress + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + GROUP radiusDynAuthServerAuthOnlyGroup + DESCRIPTION + "Only required for Dynamic Authorization Clients that + are supporting Service-Type attributes with value + 'Authorize-Only'." + + + GROUP radiusDynAuthServerNoSessGroup + DESCRIPTION + "This group is not required if the Dynamic + Authorization Server cannot easily determine whether + a session exists (e.g., in case of a RADIUS + proxy)." + + ::= { radiusDynAuthServerMIBCompliances 1 } + +-- units of conformance + +radiusDynAuthServerMIBGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServerDisconInvalidClientAddresses, + radiusDynAuthServerCoAInvalidClientAddresses, + radiusDynAuthServerIdentifier, + radiusDynAuthClientAddressType, + radiusDynAuthClientAddress, + radiusDynAuthServDisconRequests, + radiusDynAuthServDupDisconRequests, + radiusDynAuthServDisconAcks, + radiusDynAuthServDisconNaks, + radiusDynAuthServDisconUserSessRemoved, + radiusDynAuthServMalformedDisconRequests, + radiusDynAuthServDisconBadAuthenticators, + radiusDynAuthServDisconPacketsDropped, + radiusDynAuthServCoARequests, + radiusDynAuthServDupCoARequests, + radiusDynAuthServCoAAcks, + radiusDynAuthServCoANaks, + radiusDynAuthServCoAUserSessChanged, + radiusDynAuthServMalformedCoARequests, + radiusDynAuthServCoABadAuthenticators, + radiusDynAuthServCoAPacketsDropped, + radiusDynAuthServUnknownTypes, + radiusDynAuthServerCounterDiscontinuity + } + STATUS current + + + + DESCRIPTION + "The collection of objects providing management of + a RADIUS Dynamic Authorization Server." + ::= { radiusDynAuthServerMIBGroups 1 } + +radiusDynAuthServerAuthOnlyGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServDisconAuthOnlyRequests, + radiusDynAuthServDisconNakAuthOnlyRequests, + radiusDynAuthServCoAAuthOnlyRequests, + radiusDynAuthServCoANakAuthOnlyRequests + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages including Service-Type attribute with + value 'Authorize Only'." + ::= { radiusDynAuthServerMIBGroups 2 } + +radiusDynAuthServerNoSessGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServDisconNakSessNoContext, + radiusDynAuthServCoANakSessNoContext + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages that are referring to non-existing sessions." + ::= { radiusDynAuthServerMIBGroups 3 } + + +END diff --git a/mibs/ietf/RAQMON-MIB b/mibs/ietf/RAQMON-MIB new file mode 100644 index 0000000..f8c088a --- /dev/null +++ b/mibs/ietf/RAQMON-MIB @@ -0,0 +1,1514 @@ +RAQMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + Integer32, Unsigned32, + Gauge32, Counter32, OBJECT-TYPE, + MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + rmon + FROM RMON-MIB + RowStatus, TruthValue, DateAndTime, RowPointer + FROM SNMPv2-TC; + + raqmonMIB MODULE-IDENTITY + LAST-UPDATED "200610100000Z" -- October 10, 2006 + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/rmonmib-charter.html + + Mailing lists: + General Discussion: rmonmib@ietf.org + To Subscribe: rmonmib-requests@ietf.org + In Body: subscribe your_email_address + + Chair: Andy Bierman + Email: ietf@andybierman.com + + Editor: Dan Romascanu + Avaya + Email: dromasca@avaya.com" + DESCRIPTION + "Real-Time Application QoS Monitoring MIB. + + Copyright (c) The Internet Society (2006). + This version of this MIB module is part of + RFC 4711; See the RFC itself for full legal notices." + REVISION "200610100000Z" + DESCRIPTION + "Initial version, published as RFC 4711." + ::= { rmon 31 } +-- This OID allocation conforms to [RFC3737] + + + +-- +-- Node definitions +-- + raqmonNotifications OBJECT IDENTIFIER ::= { raqmonMIB 0 } + + raqmonSessionAlarm NOTIFICATION-TYPE + OBJECTS { raqmonParticipantAddr, + raqmonParticipantName, + raqmonParticipantPeerAddrType, + raqmonParticipantPeerAddr, + raqmonQoSEnd2EndNetDelay, + raqmonQoSInterArrivalJitter, + raqmonQosLostPackets, + raqmonQosRcvdPackets } + STATUS current + DESCRIPTION + "A notification generated by an entry in the + raqmonSessionExceptionTable." + ::= { raqmonNotifications 1 } + + + raqmonMIBObjects OBJECT IDENTIFIER ::= { raqmonMIB 1 } + + raqmonSession OBJECT IDENTIFIER ::= { raqmonMIBObjects 1 } + + raqmonParticipantTable OBJECT-TYPE + SYNTAX SEQUENCE OF RaqmonParticipantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about participants in + both active and closed (terminated) sessions." + ::= { raqmonSession 1 } + + raqmonParticipantEntry OBJECT-TYPE + SYNTAX RaqmonParticipantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row contains information for a single session + (application) run by one participant. + Indexation by the start time of the session aims + to ease sorting by management applications. Agents MUST + NOT report identical start times for any two sessions + on the same host. + Rows are removed for inactive sessions + when implementation-specific age or space limits are + reached." + + + + INDEX { raqmonParticipantStartDate, raqmonParticipantIndex } + ::= { raqmonParticipantTable 1 } + + RaqmonParticipantEntry ::= + SEQUENCE { + raqmonParticipantStartDate DateAndTime, + raqmonParticipantIndex Unsigned32, + raqmonParticipantReportCaps BITS, + raqmonParticipantAddrType InetAddressType, + raqmonParticipantAddr InetAddress, + raqmonParticipantSendPort InetPortNumber, + raqmonParticipantRecvPort InetPortNumber, + raqmonParticipantSetupDelay Integer32, + raqmonParticipantName SnmpAdminString, + raqmonParticipantAppName SnmpAdminString, + raqmonParticipantQosCount Gauge32, + raqmonParticipantEndDate DateAndTime, + raqmonParticipantDestPayloadType Integer32, + raqmonParticipantSrcPayloadType Integer32, + raqmonParticipantActive TruthValue, + raqmonParticipantPeer RowPointer, + raqmonParticipantPeerAddrType InetAddressType, + raqmonParticipantPeerAddr InetAddress, + raqmonParticipantSrcL2Priority Integer32, + raqmonParticipantDestL2Priority Integer32, + raqmonParticipantSrcDSCP Integer32, + raqmonParticipantDestDSCP Integer32, + raqmonParticipantCpuMean Integer32, + raqmonParticipantCpuMin Integer32, + raqmonParticipantCpuMax Integer32, + raqmonParticipantMemoryMean Integer32, + raqmonParticipantMemoryMin Integer32, + raqmonParticipantMemoryMax Integer32, + raqmonParticipantNetRTTMean Integer32, + raqmonParticipantNetRTTMin Integer32, + raqmonParticipantNetRTTMax Integer32, + raqmonParticipantIAJitterMean Integer32, + raqmonParticipantIAJitterMin Integer32, + raqmonParticipantIAJitterMax Integer32, + raqmonParticipantIPDVMean Integer32, + raqmonParticipantIPDVMin Integer32, + raqmonParticipantIPDVMax Integer32, + raqmonParticipantNetOwdMean Integer32, + raqmonParticipantNetOwdMin Integer32, + raqmonParticipantNetOwdMax Integer32, + raqmonParticipantAppDelayMean Integer32, + raqmonParticipantAppDelayMin Integer32, + raqmonParticipantAppDelayMax Integer32, + + + + raqmonParticipantPacketsRcvd Integer32, + raqmonParticipantPacketsSent Integer32, + raqmonParticipantOctetsRcvd Integer32, + raqmonParticipantOctetsSent Integer32, + raqmonParticipantLostPackets Integer32, + raqmonParticipantLostPacketsFrct Integer32, + raqmonParticipantDiscards Integer32, + raqmonParticipantDiscardsFrct Integer32 + } + + raqmonParticipantStartDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The date and time of this entry. + It will be the date and time + of the first report received." + ::= { raqmonParticipantEntry 1 } + + raqmonParticipantIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the conceptual row, which is for SNMP + purposes only and has no relation to any protocol value. + + There is no requirement that these rows be created or + maintained sequentially. The index will be unique for a + particular date and time." + ::= { raqmonParticipantEntry 2 } + + raqmonParticipantReportCaps OBJECT-TYPE + SYNTAX BITS { + raqmonPartRepDsrcName(0), + raqmonPartRepRecvName(1), + raqmonPartRepDsrcPort(2), + raqmonPartRepRecvPort(3), + raqmonPartRepSetupTime(4), + raqmonPartRepSetupDelay(5), + raqmonPartRepSessionDuration(6), + raqmonPartRepSetupStatus(7), + raqmonPartRepRTEnd2EndNetDelay(8), + raqmonPartRepOWEnd2EndNetDelay(9), + raqmonPartApplicationDelay(10), + raqmonPartRepIAJitter(11), + raqmonPartRepIPDV(12), + + + + raqmonPartRepRcvdPackets(13), + raqmonPartRepRcvdOctets(14), + raqmonPartRepSentPackets(15), + raqmonPartRepSentOctets(16), + raqmonPartRepCumPacketsLoss(17), + raqmonPartRepFractionPacketsLoss(18), + raqmonPartRepCumDiscards(19), + raqmonPartRepFractionDiscards(20), + raqmonPartRepSrcPayloadType(21), + raqmonPartRepDestPayloadType(22), + raqmonPartRepSrcLayer2Priority(23), + raqmonPartRepSrcTosDscp(24), + raqmonPartRepDestLayer2Priority(25), + raqmonPartRepDestTosDscp(26), + raqmonPartRepCPU(27), + raqmonPartRepMemory(28), + raqmonPartRepAppName(29) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Report capabilities of the participant, as perceived + by the Collector. + + If the participant can report the Data Source Name as + defined in [RFC4710], Section 5.3, then the + raqmonPartRepDsrcName bit will be set. + + If the participant can report the Receiver Name as + defined in [RFC4710], Section 5.4, then the + raqmonPartRepRecvName bit will be set. + + If the participant can report the Data Source Port as + defined in [RFC4710], Section 5.5, then the + raqmonPartRepDsrcPort bit will be set. + + If the participant can report the Receiver Port as + defined in [RFC4710], Section 5.6, then the + raqmonPartRepRecvPort bit will be set. + + If the participant can report the Session Setup Time as + defined in [RFC4710], Section 5.7, then the + raqmonPartRepSetupTime bit will be set. + + If the participant can report the Session Setup Delay as + defined in [RFC4710], Section 5.8, then the + raqmonPartRepSetupDelay bit will be set. + + + + + If the participant can report the Session Duration as + defined in [RFC4710], Section 5.9, then the + raqmonPartRepSessionDuration bit will be set. + + If the participant can report the Setup Status as + defined in [RFC4710], Section 5.10, then the + raqmonPartRepSetupStatus bit will be set. + + If the participant can report the Round-Trip End-to-end + Network Delay as defined in [RFC4710], Section 5.11, + then the raqmonPartRepRTEnd2EndNetDelay bit will be set. + + If the participant can report the One-way End-to-end + Network Delay as defined in [RFC4710], Section 5.12, + then the raqmonPartRepOWEnd2EndNetDelay bit will be set. + + If the participant can report the Application Delay as + defined in [RFC4710], Section 5.13, then the + raqmonPartApplicationDelay bit will be set. + + If the participant can report the Inter-Arrival Jitter + as defined in [RFC4710], Section 5.14, then the + raqmonPartRepIAJitter bit will be set. + + If the participant can report the IP Packet Delay + Variation as defined in [RFC4710], Section 5.15, then + the raqmonPartRepIPDV bit will be set. + + If the participant can report the number of application + packets received as defined in [RFC4710], Section 5.16, + then the raqmonPartRepRcvdPackets bit will be set. + + If the participant can report the number of application + octets received as defined in [RFC4710], Section 5.17, + then the raqmonPartRepRcvdOctets bit will be set. + + If the participant can report the number of application + packets sent as defined in [RFC4710], Section 5.18, then + the raqmonPartRepSentPackets bit will be set. + + If the participant can report the number of application + octets sent as defined in [RFC4710], Section 5.19, then + the raqmonPartRepSentOctets bit will be set. + + If the participant can report the number of cumulative + packets lost as defined in [RFC4710], Section 5.20, then + the raqmonPartRepCumPacketsLoss bit will be set. + + + + + If the participant can report the fraction of packet + loss as defined in [RFC4710], Section 5.21, then the + raqmonPartRepFractionPacketsLoss bit will be set. + + If the participant can report the number of cumulative + discards as defined in [RFC4710], Section 5.22, then the + raqmonPartRepCumDiscards bit will be set. + + If the participant can report the fraction of discards + as defined in [RFC4710], Section 5.23, then the + raqmonPartRepFractionDiscards bit will be set. + + If the participant can report the Source Payload Type as + defined in [RFC4710], Section 5.24, then the + raqmonPartRepSrcPayloadType bit will be set. + + If the participant can report the Destination Payload + Type as defined in [RFC4710], Section 5.25, then the + raqmonPartRepDestPayloadType bit will be set. + + If the participant can report the Source Layer 2 + Priority as defined in [RFC4710], Section 5.26, then the + raqmonPartRepSrcLayer2Priority bit will be set. + + If the participant can report the Source DSCP/ToS value + as defined in [RFC4710], Section 5.27, then the + raqmonPartRepSrcToSDscp bit will be set. + + If the participant can report the Destination Layer 2 + Priority as defined in [RFC4710], Section 5.28, then the + raqmonPartRepDestLayer2Priority bit will be set. + + If the participant can report the Destination DSCP/ToS + Value as defined in [RFC4710], Section 5.29, then the + raqmonPartRepDestToSDscp bit will be set. + + If the participant can report the CPU utilization as + defined in [RFC4710], Section 5.30, then the + raqmonPartRepCPU bit will be set. + + If the participant can report the memory utilization as + defined in [RFC4710], Section 5.31, then the + raqmonPartRepMemory bit will be set. + + If the participant can report the Application Name as + defined in [RFC4710], Section 5.32, then the + raqmonPartRepAppName bit will be set. + + + + + The capability of reporting of a specific metric does + not mandate that the metric must be reported permanently + by the data source to the respective collector. Some + data sources MAY be configured not to send a metric, or + some metrics may not be relevant to the specific + application." + ::= { raqmonParticipantEntry 3 } + + raqmonParticipantAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address of the participant for + this session." + ::= { raqmonParticipantEntry 4 } + + raqmonParticipantAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Address of the participant for this + session. Formatting of this object is determined + by the value of raqmonParticipantAddrType." + ::= { raqmonParticipantEntry 5 } + + raqmonParticipantSendPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Port from which session data is sent. + If the value was not reported to the collector, + this object will have the value 0." + REFERENCE + "Section 5.5 of the [RFC4710]" + ::= { raqmonParticipantEntry 6 } + + raqmonParticipantRecvPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Port on which session data is received. + If the value was not reported to the collector, + this object will have the value 0." + REFERENCE + + + + "Section 5.6 of the [RFC4710]" + ::= { raqmonParticipantEntry 7 } + + raqmonParticipantSetupDelay OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Session setup time. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.8 of the [RFC4710]" + ::= { raqmonParticipantEntry 8 } + + raqmonParticipantName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The data source name for the participant." + REFERENCE + "Section 5.3 of the [RFC4710]" + ::= { raqmonParticipantEntry 9 } + + raqmonParticipantAppName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string giving the name and possibly the version + of the application generating the stream, e.g., + 'videotool 1.2.' + + This information may be useful for debugging purposes + and is similar to the Mailer or Mail-System-Version SMTP + headers. The tool value is expected to remain constant + for the duration of the session." + REFERENCE + "Section 5.32 of the [RFC4710]" + ::= { raqmonParticipantEntry 10 } + + raqmonParticipantQosCount OBJECT-TYPE + SYNTAX Gauge32 + UNITS "entries" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of entries in the raqmonQosTable + for this participant and session." + ::= { raqmonParticipantEntry 11 } + + raqmonParticipantEndDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the most recent report received." + ::= { raqmonParticipantEntry 12 } + + raqmonParticipantDestPayloadType OBJECT-TYPE + SYNTAX Integer32 (-1|0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination Payload Type. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "RFC 3551 and Section 5.25 of the [RFC4710]" + ::= { raqmonParticipantEntry 13 } + + raqmonParticipantSrcPayloadType OBJECT-TYPE + SYNTAX Integer32 (-1|0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Payload Type. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "RFC 3551 and Section 5.24 of the [RFC4710]" + ::= { raqmonParticipantEntry 14 } + + raqmonParticipantActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Value 'true' indicates that the session + for this participant is active (open). + Value 'false' indicates that the session + is closed (terminated)." + ::= { raqmonParticipantEntry 15 } + + + + + raqmonParticipantPeer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The pointer to the corresponding entry in this table for + the other peer participant. If there is no such entry + in the participant table of the collector represented by + this SNMP agent, then the value will be { 0 0 }. + " + ::= { raqmonParticipantEntry 16 } + + raqmonParticipantPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address of the peer participant + for this session." + ::= { raqmonParticipantEntry 17 } + + raqmonParticipantPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Address of the peer participant for this + session. Formatting of this object is determined by + the value of raqmonParticipantPeerAddrType." + ::= { raqmonParticipantEntry 18 } + + raqmonParticipantSrcL2Priority OBJECT-TYPE + SYNTAX Integer32 (-1|0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Layer 2 Priority. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.26 of the [RFC4710]" + ::= { raqmonParticipantEntry 19 } + + raqmonParticipantDestL2Priority OBJECT-TYPE + SYNTAX Integer32 (-1|0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Destination Layer 2 Priority. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.28 of the [RFC4710]" + ::= { raqmonParticipantEntry 20 } + + raqmonParticipantSrcDSCP OBJECT-TYPE + SYNTAX Integer32 (-1|0..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Layer 3 DSCP value. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.27 of the [RFC4710]" + ::= { raqmonParticipantEntry 21 } + + raqmonParticipantDestDSCP OBJECT-TYPE + SYNTAX Integer32 (-1|0..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination Layer 3 DSCP value." + REFERENCE + "Section 5.29 of the [RFC4710]" + ::= { raqmonParticipantEntry 22 } + + raqmonParticipantCpuMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 23 } + + raqmonParticipantCpuMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Minimum CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 24 } + + raqmonParticipantCpuMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 25 } + + raqmonParticipantMemoryMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 26 } + + raqmonParticipantMemoryMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 27 } + + raqmonParticipantMemoryMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + + + + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 28 } + + raqmonParticipantNetRTTMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean round-trip end-to-end network + delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 29 } + + raqmonParticipantNetRTTMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum round-trip end-to-end network delay + over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 30 } + + raqmonParticipantNetRTTMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum round-trip end-to-end network delay + over the entire session. + If the value was not reported to the collector, + + + + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 31 } + + raqmonParticipantIAJitterMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 32 } + + raqmonParticipantIAJitterMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 33 } + + raqmonParticipantIAJitterMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 34 } + + raqmonParticipantIPDVMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Mean IP packet delay variation over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 35 } + + raqmonParticipantIPDVMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum IP packet delay variation over the entire + session. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 36 } + + raqmonParticipantIPDVMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum IP packet delay variation over the entire + session. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 37 } + + raqmonParticipantNetOwdMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.12 of the [RFC4710]" + ::= { raqmonParticipantEntry 38 } + + + + + raqmonParticipantNetOwdMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.12 of the [RFC4710]" + ::= { raqmonParticipantEntry 39 } + + raqmonParticipantNetOwdMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.1 of the [RFC4710]" + ::= { raqmonParticipantEntry 40 } + + raqmonParticipantAppDelayMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 41 } + + raqmonParticipantAppDelayMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + + + + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 42 } + + raqmonParticipantAppDelayMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 43 } + + raqmonParticipantPacketsRcvd OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets received for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.16 of the [RFC4710]" + ::= { raqmonParticipantEntry 44 } + + raqmonParticipantPacketsSent OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets sent for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.17 of the [RFC4710]" + ::= { raqmonParticipantEntry 45 } + + raqmonParticipantOctetsRcvd OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Count of octets received for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.18 of the [RFC4710]" + ::= { raqmonParticipantEntry 46 } + + raqmonParticipantOctetsSent OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets sent for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.19 of the [RFC4710]" + ::= { raqmonParticipantEntry 47 } + + raqmonParticipantLostPackets OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets lost by this receiver for the entire + session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.20 of the [RFC4710]" + ::= { raqmonParticipantEntry 48 } + + raqmonParticipantLostPacketsFrct OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fraction of lost packets out of total packets received. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.21 of the [RFC4710]" + ::= { raqmonParticipantEntry 49 } + + + + + raqmonParticipantDiscards OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets discarded by this receiver for the + entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.22 of the [RFC4710]" + ::= { raqmonParticipantEntry 50 } + + raqmonParticipantDiscardsFrct OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fraction of discarded packets out of total packets + received. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.23 of the [RFC4710]" + ::= { raqmonParticipantEntry 51 } + + + raqmonQosTable OBJECT-TYPE + SYNTAX SEQUENCE OF RaqmonQosEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about quality-of-service + data during sessions." + ::= { raqmonSession 2 } + + raqmonQosEntry OBJECT-TYPE + SYNTAX RaqmonQosEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RAQMON + packet, related to a single session + (application) run by one participant. + Indexation by the start time of the session aims + to ease sorting by management applications. Agents MUST + NOT report identical start times for any two sessions + + + + on the same host. + Rows are removed for inactive sessions when + implementation-specific time or space limits are + reached." + INDEX { raqmonParticipantStartDate, + raqmonParticipantIndex, + raqmonQosTime } + ::= { raqmonQosTable 1 } + + RaqmonQosEntry ::= + SEQUENCE { + raqmonQosTime Unsigned32, + raqmonQoSEnd2EndNetDelay Integer32, + raqmonQoSInterArrivalJitter Integer32, + raqmonQosRcvdPackets Integer32, + raqmonQosRcvdOctets Integer32, + raqmonQosSentPackets Integer32, + raqmonQosSentOctets Integer32, + raqmonQosLostPackets Integer32, + raqmonQosSessionStatus SnmpAdminString + } + + raqmonQosTime OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Time of this entry measured from the start of the + corresponding participant session." + ::= { raqmonQosEntry 1 } + + raqmonQoSEnd2EndNetDelay OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round-trip time. + Will contain the previous value if there was no report + for this time, or -1 if the value has never + been reported." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonQosEntry 2 } + + raqmonQoSInterArrivalJitter OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + + + + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of delay variation as observed by this + receiver. Will contain the previous value if there + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonQosEntry 3 } + + raqmonQosRcvdPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets received by this receiver since the + previous entry. Will contain the previous value if + there was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.16 of the [RFC4710]" + ::= { raqmonQosEntry 4 } + + raqmonQosRcvdOctets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets received by this receiver since the + previous report. Will contain the previous value if + there was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.18 of the [RFC4710]" + ::= { raqmonQosEntry 5 } + + raqmonQosSentPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets sent since the previous report. + Will contain the previous value if there + + + + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.17 of the [RFC4710]" + ::= { raqmonQosEntry 6 } + + raqmonQosSentOctets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets sent since the previous report. + Will contain the previous value if there + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.19 of the [RFC4710]" + ::= { raqmonQosEntry 7 } + + raqmonQosLostPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of packets lost as observed by this receiver + since the previous report. Will contain the previous + value if there was no report for this time, or -1 if + the value has never been reported." + REFERENCE + "Section 5.20 of the [RFC4710]" + ::= { raqmonQosEntry 8 } + + raqmonQosSessionStatus OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session status. Will contain the previous value + if there was no report for this time or the zero-length + string if no value was ever reported." + REFERENCE + "Section 5.10 of the [RFC4710]" + ::= { raqmonQosEntry 9 } + + + raqmonParticipantAddrTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RaqmonParticipantAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps raqmonParticipantAddr to the index of the + raqmonParticipantTable. This table allows + management applications to find entries + sorted by raqmonParticipantAddr rather than + raqmonParticipantStartDate." + ::= { raqmonSession 3 } + + raqmonParticipantAddrEntry OBJECT-TYPE + SYNTAX RaqmonParticipantAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + raqmonParticipantEntry: the entry containing the + index pair raqmonParticipantStartDate, + raqmonParticipantIndex. + + Note that there is no concern about the indexation of + this table exceeding the limits defined by RFC 2578, + Section 3.5. According to [RFC4710], Section + 5.1, only IPv4 and IPv6 addresses can be reported as + participant addresses." + INDEX { raqmonParticipantAddrType, + raqmonParticipantAddr, + raqmonParticipantStartDate, + raqmonParticipantIndex } + ::= { raqmonParticipantAddrTable 1 } + + RaqmonParticipantAddrEntry ::= + SEQUENCE { raqmonParticipantAddrEndDate DateAndTime } + + raqmonParticipantAddrEndDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of raqmonParticipantEndDate for the + corresponding raqmonParticipantEntry." + ::= { raqmonParticipantAddrEntry 1 } + + + raqmonException OBJECT IDENTIFIER ::= { raqmonMIBObjects 2 } + + raqmonSessionExceptionTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RaqmonSessionExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines thresholds for the management + station to get notifications about sessions that + encountered poor quality of service. + + The information in this table MUST be persistent + across agent reboots." + ::= { raqmonException 2 } + + raqmonSessionExceptionEntry OBJECT-TYPE + SYNTAX RaqmonSessionExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the raqmonSessionExceptionTable." + INDEX { raqmonSessionExceptionIndex } + ::= { raqmonSessionExceptionTable 1 } + + RaqmonSessionExceptionEntry ::= + SEQUENCE { + raqmonSessionExceptionIndex Unsigned32, + raqmonSessionExceptionIAJitterThreshold Unsigned32, + raqmonSessionExceptionNetRTTThreshold Unsigned32, + raqmonSessionExceptionLostPacketsThreshold Unsigned32, + raqmonSessionExceptionRowStatus RowStatus + } + + raqmonSessionExceptionIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an + entry in the raqmonSessionExceptionTable. + Management applications can determine unused indices + by performing GetNext or GetBulk operations on the + Table." + ::= { raqmonSessionExceptionEntry 2 } + + raqmonSessionExceptionIAJitterThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Threshold for jitter. + The value during a session must be greater than or + equal to this value for an exception to be created." + ::= { raqmonSessionExceptionEntry 3 } + + raqmonSessionExceptionNetRTTThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Threshold for round-trip time. + The value during a session must be greater than or + equal to this value for an exception to be created." + ::= { raqmonSessionExceptionEntry 4 } + + raqmonSessionExceptionLostPacketsThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + UNITS "tenth of a percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Threshold for lost packets in units of tenths + of a percent. The value during a session must + be greater than or equal to this value for an + exception to be created." + ::= { raqmonSessionExceptionEntry 5 } + + raqmonSessionExceptionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has a value of 'active' when + exceptions are being monitored by the system. + A newly-created conceptual row must have all + the read-create objects initialized before + becoming 'active'. A conceptual row that is in + the 'notReady' or 'notInService' state MAY be + removed after 5 minutes. No writeable objects + can be changed while the row is active." + ::= { raqmonSessionExceptionEntry 7 } + + + raqmonConfig OBJECT IDENTIFIER ::= { raqmonMIBObjects 3 } + + raqmonConfigPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The UDP port to listen on for RAQMON reports, + running on transport protocols other than SNMP. + If the RAQMON PDU transport protocol is SNMP, + a write operation on this object has no effect, as + the standard port 162 is always used. + The value of this object MUST be persistent across + agent reboots." + ::= { raqmonConfig 1 } + + raqmonConfigPduTransport OBJECT-TYPE + SYNTAX BITS + { + other(0), + tcp(1), + snmp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU transport(s) used by this collector. + If other(0) is set, the collector supports a + transport other than SNMP or TCP. + If tcp(1) is set, the collector supports TCP as a + transport protocol. + If snmp(2) is set, the collector supports SNMP as a + transport protocol." + ::= { raqmonConfig 2 } + + + raqmonConfigRaqmonPdus OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RAQMON PDUs received by the Collector." + ::= { raqmonConfig 3 } + + raqmonConfigRDSTimeout OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of seconds since the reception of the + last RAQMON PDU from a RDS after which a session + + + + between the respective RDS and the collector will be + considered terminated. + The value of this object MUST be persistent across + agent reboots." + ::= { raqmonConfig 4 } + + + + + raqmonConformance OBJECT IDENTIFIER ::= { raqmonMIB 2 } + + + raqmonCompliances OBJECT IDENTIFIER ::= { raqmonConformance 1 } + raqmonGroups OBJECT IDENTIFIER ::= { raqmonConformance 2 } + + raqmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + RAQMON MIB." + MODULE -- this module + MANDATORY-GROUPS { raqmonCollectorGroup, + raqmonCollectorNotificationsGroup + } + + OBJECT raqmonParticipantAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantPeerAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantPeerAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + ::= { raqmonCompliances 1 } + + + + + + raqmonCollectorGroup OBJECT-GROUP + OBJECTS { + raqmonParticipantReportCaps, + raqmonParticipantAddrType, + raqmonParticipantAddr, + raqmonParticipantSendPort, + raqmonParticipantRecvPort, + raqmonParticipantSetupDelay, + raqmonParticipantName, + raqmonParticipantAppName, + raqmonParticipantQosCount, + raqmonParticipantEndDate, + raqmonParticipantDestPayloadType, + raqmonParticipantSrcPayloadType, + raqmonParticipantActive, + raqmonParticipantPeer, + raqmonParticipantPeerAddrType, + raqmonParticipantPeerAddr, + raqmonParticipantSrcL2Priority, + raqmonParticipantDestL2Priority, + raqmonParticipantSrcDSCP, + raqmonParticipantDestDSCP, + raqmonParticipantCpuMean, + raqmonParticipantCpuMin, + raqmonParticipantCpuMax, + raqmonParticipantMemoryMean, + raqmonParticipantMemoryMin, + raqmonParticipantMemoryMax, + raqmonParticipantNetRTTMean, + raqmonParticipantNetRTTMin, + raqmonParticipantNetRTTMax, + raqmonParticipantIAJitterMean, + raqmonParticipantIAJitterMin, + raqmonParticipantIAJitterMax, + raqmonParticipantIPDVMean, + raqmonParticipantIPDVMin, + raqmonParticipantIPDVMax, + raqmonParticipantNetOwdMean, + raqmonParticipantNetOwdMin, + raqmonParticipantNetOwdMax, + raqmonParticipantAppDelayMean, + raqmonParticipantAppDelayMin, + raqmonParticipantAppDelayMax, + raqmonParticipantPacketsRcvd, + raqmonParticipantPacketsSent, + raqmonParticipantOctetsRcvd, + raqmonParticipantOctetsSent, + raqmonParticipantLostPackets, + + + + raqmonParticipantLostPacketsFrct, + raqmonParticipantDiscards, + raqmonParticipantDiscardsFrct, + raqmonQoSEnd2EndNetDelay, + raqmonQoSInterArrivalJitter, + raqmonQosRcvdPackets, + raqmonQosRcvdOctets, + raqmonQosSentPackets, + raqmonQosSentOctets, + raqmonQosLostPackets, + raqmonQosSessionStatus, + raqmonParticipantAddrEndDate, + raqmonConfigPort, + raqmonSessionExceptionIAJitterThreshold, + raqmonSessionExceptionNetRTTThreshold, + raqmonSessionExceptionLostPacketsThreshold, + raqmonSessionExceptionRowStatus, + raqmonConfigPduTransport, + raqmonConfigRaqmonPdus, + raqmonConfigRDSTimeout} + STATUS current + DESCRIPTION + "Objects used in RAQMON by a collector." + + + ::= { raqmonGroups 1 } + + raqmonCollectorNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { raqmonSessionAlarm } + STATUS current + DESCRIPTION + "Notifications emitted by a RAQMON collector." + ::= { raqmonGroups 2 } + +END diff --git a/mibs/ietf/RDBMS-MIB b/mibs/ietf/RDBMS-MIB new file mode 100644 index 0000000..10b66cd --- /dev/null +++ b/mibs/ietf/RDBMS-MIB @@ -0,0 +1,1398 @@ +RDBMS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Counter32, Gauge32, Integer32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + DisplayString, DateAndTime, AutonomousType + FROM SNMPv2-TC + applIndex, applGroups + FROM NETWORK-SERVICES-MIB + mib-2 + FROM RFC1213-MIB; + +rdbmsMIB MODULE-IDENTITY + LAST-UPDATED "9406150655Z" + ORGANIZATION "IETF RDBMSMIB Working Group" + CONTACT-INFO + " David Brower + + Postal: The ASK Group, INGRES DBMS Development + 1080 Marina Village Parkway + Alameda, CA 94501 + US + + Tel: +1 510 748 3418 + Fax: +1 510 748 2770 + + E-mail: daveb@ingres.com" + DESCRIPTION + "The MIB module to describe objects for generic relational + databases." + + ::= { mib-2 39 } + +rdbmsObjects OBJECT IDENTIFIER ::= { rdbmsMIB 1 } + +---------------------------------------------------------------- + +rdbmsDbTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of databases installed on a system." + ::= { rdbmsObjects 1 } + +rdbmsDbEntry OBJECT-TYPE + SYNTAX RdbmsDbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single database on the host. Whether a + particular database is represented by a row in rdbmsDbTable + may be dependent on the activity level of that database, + according to the product's implementation. An instance of + rdbmsRelState having the value active, other, or restricted + implies that an entry, corresponding to that instance, will + be present." + INDEX { rdbmsDbIndex } + ::= { rdbmsDbTable 1 } + +RdbmsDbEntry ::= + SEQUENCE { + rdbmsDbIndex INTEGER, + rdbmsDbPrivateMibOID OBJECT IDENTIFIER, + rdbmsDbVendorName DisplayString, + rdbmsDbName DisplayString, + rdbmsDbContact DisplayString + } + +rdbmsDbIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A numeric index, unique among all the databases from all + products on this host. This value is a surrogate for the + conceptually unique key, which is {PrivateMibOID, + databasename}" + ::= { rdbmsDbEntry 1 } + +rdbmsDbPrivateMibOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative identification for the private MIB for + this database, presumably based on the vendor, e.g., { + enterprises 111 } for Oracle + databases, {enterprises 757 } for + Ingres databases, { enterprises 897 } for Sybase databases, etc. + + If no OBJECT IDENTIFIER exists for the private MIB, attempts + to access this object will return noSuchName (SNMPv1) + or noSuchInstance (SNMPv2)." + ::= { rdbmsDbEntry 2 } + +rdbmsDbVendorName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the vendor whose RDBMS manages this database, + for informational purposes." + ::= { rdbmsDbEntry 3 } + +rdbmsDbName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this database, in a product specific format. The + product may need to qualify the name in some way to resolve + conflicts if it is possible for a database name to be + duplicated on a host. It might be necessary to construct a + hierarchical name embedding the RDBMS instance/installation + on the host, and/or the owner of the database. For instance, + '/test-installation/database-owner/database-name'." + ::= { rdbmsDbEntry 4 } + +rdbmsDbContact OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + managed database, together with information on how to contact + this person. + + Note: if there is no server associated with this database, an + agent may need to keep this in other persistent storage, + e.g., a configuration file. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbEntry 5 } + +---------------------------------------------------------------- + +rdbmsDbInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of additional information about databases present + on the host." + ::= { rdbmsObjects 2 } + +rdbmsDbInfoEntry OBJECT-TYPE + SYNTAX RdbmsDbInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information that must be present if the database is actively + opened. If the database is not actively opened, then + attempts to access corresponding instances in this table may + result in either noSuchName (SNMPv1) or noSuchInstance + (SNMPv2). 'Actively opened' means at least one of the + rdbmsRelState entries for this database in the rdbmsRelTable + is active(2)." + INDEX { rdbmsDbIndex } + ::= { rdbmsDbInfoTable 1 } + +RdbmsDbInfoEntry ::= + SEQUENCE { + rdbmsDbInfoProductName DisplayString, + rdbmsDbInfoVersion DisplayString, + rdbmsDbInfoSizeUnits INTEGER, + rdbmsDbInfoSizeAllocated INTEGER, + rdbmsDbInfoSizeUsed INTEGER, + rdbmsDbInfoLastBackup DateAndTime + } + +rdbmsDbInfoProductName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual product name of the server that created or last + restructured this database. The format is product specific." + ::= { rdbmsDbInfoEntry 1 } + +rdbmsDbInfoVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the server that created or last + restructured this database. The format is product specific." + ::= { rdbmsDbInfoEntry 2 } + +rdbmsDbInfoSizeUnits OBJECT-TYPE + SYNTAX INTEGER { + bytes(1), + kbytes(2), + mbytes(3), + gbytes(4), + tbytes(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of the units used to measure the size of this + database in rdbmsDbInfoSizeAllocated and rdbmsDbInfoSizeUsed. + bytes(1) indicates individual bytes, kbytes(2) indicates + units of kilobytes, mbytes(3) indicates units of megabytes, + gbytes(4) indicates units of gigabytes, and tbytes(5) + indicates units of terabytes. All are binary multiples -- 1K + = 1024. If writable, changes here are reflected in the get + values of the associated objects." + + ::= { rdbmsDbInfoEntry 3 } + +rdbmsDbInfoSizeAllocated OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The estimated size of this database (in + rdbmsDbInfoSizeUnits), which is the disk space that has been + allocated to it and is no longer available to users on this + host. rdbmsDbInfoSize does not necessarily indicate the + amount of space actually in use for database data. Some + databases may support extending allocated size, and others + may not. + + Note that a compliant agent does not need to + allow write access to this object." + +-- Note: computing SizeAllocated may be expensive, and SNMP +-- agents might cache the value to increase performance. + + ::= { rdbmsDbInfoEntry 4 } + +rdbmsDbInfoSizeUsed OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The estimated size of this database, in rdbmsDbInfoSizeUnits, + which is actually in use for database data." + +-- Note: computing SizeUsed may be expensive, and SNMP +-- agents might cache the value to increase performance. + ::= { rdbmsDbInfoEntry 5 } + +rdbmsDbInfoLastBackup OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the latest complete or partial backup + of the database was taken. If a database has never been + backed up, then attempts to access this object will + result in either noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbInfoEntry 6 } + +---------------------------------------------------------------- + +rdbmsDbParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of configuration parameters for a database. + Entries should be populated according to the following + guidelines: + (1) The value should be specified through administrative + (human) intervention. + (2) It should be configured on a per-database basis. + (3) One of the following is true: + (a) The parameter has a non-numeric value; + (b) The current value is numeric, but it only changes due + to human intervention; + (c) The current value is numeric and dynamic, but the + RDBMS does not track access/allocation failures + related to the parameter; + (d) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, but the failure has no + significant impact on RDBMS performance or + availability. + (e) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, the failure has + significant impact on RDBMS performance or + availability, and is shown in the + rdbmsDbLimitedResource table." + ::= { rdbmsObjects 3 } + +rdbmsDbParamEntry OBJECT-TYPE + SYNTAX RdbmsDbParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single configuration parameter for a database. + Parameters with single values have a subindex value of one. + If the parameter is naturally considered to contain a + variable number of members of a class, e.g. members of the + DBA user group, or files which are part of the database, then + it must be presented as a set of rows. If, on the other + hand, the parameter represents a set of choices from a class, + e.g. the permissions on a file or the options chosen out of + the set of all options allowed, AND is guaranteed to always + fit in the 255 character length of a DisplayString, then it + may be presented as a comma separated list with a subindex + value of one. Zero may not be used as a subindex value. + + If the database is not actively opened, then attempts + to access corresponding instances in this table may result in + either noSuchName (SNMPv1) or noSuchInstance (SNMPv2). + 'Actively opened' means at least one of the + rdbmsRelState entries for this database in the rdbmsRelTable + is active(2)." + INDEX { rdbmsDbIndex, rdbmsDbParamName, rdbmsDbParamSubIndex } + ::= { rdbmsDbParamTable 1 } + +RdbmsDbParamEntry ::= + SEQUENCE { + rdbmsDbParamName DisplayString, + rdbmsDbParamSubIndex INTEGER, + rdbmsDbParamID AutonomousType, + rdbmsDbParamCurrValue DisplayString, + rdbmsDbParamComment DisplayString + } + +rdbmsDbParamName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a configuration parameter for a database. This + name is product-specific. The length is limited to 64 + characters to constrain the number of sub-identifiers needed + for instance identification (and to minimize network + traffic)." + + ::= { rdbmsDbParamEntry 1 } + +rdbmsDbParamSubIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The subindex value for this parameter. If the parameter is + naturally considered to contain a variable number of members + of a class, e.g. members of the DBA user group, or files + which are part of the database, then it must be presented as + a set of rows. If, on the other hand, the parameter + represents a set of choices from a class, e.g. the + permissions on a file or the options chosen out of the set of + all options allowed, AND is guaranteed to always fit in the + 255 character length of a DisplayString, then it may be + presented as a comma separated list with a subindex value of + one. Zero may not be used as a value." + ::= { rdbmsDbParamEntry 2 } + +rdbmsDbParamID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the parameter which may be described in some other + MIB (e.g., an enterprise-specific MIB module). If there is + no ID for this rdbmsDbParamName, attempts to access this + object will return noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbParamEntry 3 } + +rdbmsDbParamCurrValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value for a configuration parameter now in effect, the + actual setting for the database. While there may multiple + values in the temporal domain of interest (for instance, the + value to take effect at the next restart), this is the + current setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbParamEntry 4 } + +rdbmsDbParamComment OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Annotation which describes the purpose of a configuration + parameter or the reason for a particular parameter's + setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbParamEntry 5 } + +---------------------------------------------------------------- + +rdbmsDbLimitedResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of limited resources that are kept per-database." + ::= { rdbmsObjects 4 } + +rdbmsDbLimitedResourceEntry OBJECT-TYPE + SYNTAX RdbmsDbLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single limited resource kept per-database. + A limited resource has maximum use determined by a parameter + that might or might not be changeable at run time, or visible + in the rdbmsDbParamTable. Examples would be the number of + available locks, or disk space on a partition. Arrays of + resources are supported through an integer sub index, which + should have the value of one for single-instance names. + + Limited resources that are shared across databases, are best + put in the rdbmsSvrLimitedResourceTable instead of this one. + If the database is not actively opened, then attempts to + access corresponding instances in this table may result in + either noSuchName (SNMPv1) or noSuchInstance (SNMPv2). + 'Actively opened' means at least one of the rdbmsRelState + entries for this database in the rdbmsRelTable is active(2)." + + INDEX { rdbmsDbIndex, rdbmsDbLimitedResourceName } + ::= { rdbmsDbLimitedResourceTable 1 } + +RdbmsDbLimitedResourceEntry ::= + SEQUENCE { + rdbmsDbLimitedResourceName DisplayString, + rdbmsDbLimitedResourceID AutonomousType, + rdbmsDbLimitedResourceLimit INTEGER, + rdbmsDbLimitedResourceCurrent INTEGER, + rdbmsDbLimitedResourceHighwater INTEGER, + rdbmsDbLimitedResourceFailures Counter32, + rdbmsDbLimitedResourceDescription DisplayString + } + +rdbmsDbLimitedResourceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the resource, for instance 'global locks' or + 'locks for the FOO database', or 'data space on /dev/rdsk/5s0 + for FOO'. The length is limited to 64 characters to constrain + the number of sub-identifiers needed for instance + identification (and to minimize network traffic)." + ::= { rdbmsDbLimitedResourceEntry 1 } + +rdbmsDbLimitedResourceID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the resource which may be described in some other + MIB (e.g., an enterprise-specific MIB module). If there is + no ID for this rdbmsDbLimitedResourceName, attempts to access + this object will return noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbLimitedResourceEntry 2 } + +rdbmsDbLimitedResourceLimit OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum value the resource use may attain. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbLimitedResourceEntry 3 } + +rdbmsDbLimitedResourceCurrent OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value for the resource." + ::= { rdbmsDbLimitedResourceEntry 4 } + +rdbmsDbLimitedResourceHighwater OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the resource seen since applUpTime + was reset for the earliest server which has the database + actively opened. + + If there are two servers with the database open, and the + oldest one dies, the proper way to invalidate the value is by + resetting sysUpTime." + ::= { rdbmsDbLimitedResourceEntry 5 } + +rdbmsDbLimitedResourceFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the system wanted to exceed the limit of + the resource since applUpTime was reset for the earliest + server which has the database actively opened. + + If there are two servers with the DB open, and the + oldest one dies, the proper way to invalidate the value is by + resetting sysUpTime." + ::= { rdbmsDbLimitedResourceEntry 6 } + +rdbmsDbLimitedResourceDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the resource and the meaning of the integer + units used for Limit, Current, and Highwater. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbLimitedResourceEntry 7 } + +---------------------------------------------------------------- + +rdbmsSrvTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of database servers running or installed + on a system." + ::= { rdbmsObjects 5 } + +rdbmsSrvEntry OBJECT-TYPE + SYNTAX RdbmsSrvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single database server. A server is an + independent entity that provides access to one or more + databases. Failure of one does not affect access to + databases through any other servers. There might be one or + more servers providing access to a database. A server may be + a 'process' or collection of 'processes', as interpreted by + the product." + INDEX { applIndex } + ::= { rdbmsSrvTable 1 } + +RdbmsSrvEntry ::= + SEQUENCE { + rdbmsSrvPrivateMibOID OBJECT IDENTIFIER, + rdbmsSrvVendorName DisplayString, + rdbmsSrvProductName DisplayString, + rdbmsSrvContact DisplayString + } + +rdbmsSrvPrivateMibOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative identification for the private MIB for this + server, presumably based on the vendor, e.g., { enterprises + 111 } for Oracle servers, { + enterprises 757 } for Ingres + servers, { enterprises 897 } for + Sybase servers, etc. + + If no OBJECT IDENTIFIER exists for the private MIB, attempts + to access this object will return noSuchName (SNMPv1) + or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvEntry 1 } + +rdbmsSrvVendorName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the vendor whose RDBMS manages this database, + for informational purposes." + ::= { rdbmsSrvEntry 2 } + +rdbmsSrvProductName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product name of this server. This is normally the + vendor's formal name for the product, in product specific + format." + ::= { rdbmsSrvEntry 3 } + +rdbmsSrvContact OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + managed server, together with information on how to contact + this person. + + Note: if there is no active server associated with this + object, an agent may need to keep this in other persistent + storage, e.g., a configuration file. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvEntry 4 } + +---------------------------------------------------------------- + +rdbmsSrvInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of additional information about database servers. + + Entries in this table correspond to applications in the + NETWORK-SERVICES-MIB applTable. Some objects in that table are + application-specific. When they are associated with an RDBMS + server in this table, the objects have the following + meanings. + + applName - The name of this server, i.e., the process or + group of processes providing access to this database. The + exact format will be product and host specific. + + applVersion - The version number of this server, in product + specific format. + + applOperStatus - up(1) means operational and available for + general use. down(2) means the server is not available for + use, but is known to the agent. The other states have broad + meaning, and may need to be supplemented by the vendor + private MIB. Halted(3) implies an administrative state of + unavailability. Congested(4) implies a resource or or + administrative limit is prohibiting new inbound associations. + The 'available soon' description of restarting(5) may include + an indeterminate amount of recovery. + + applLastChange is the time the agent noticed the most recent + change to applOperStatus. + + applInboundAssociation is the number of currently active + local and remote conversations (usually SQL connects). + + applOutboundAssociations is not provided by this MIB. + + applAccumulatedInboundAssociations is the total number of + local and remote conversations started since the server came + up. + + applAccumulatedOutbound associations is not provided by this + MIB. + + applLastInboundActivity is the time the most recent local or + remote conversation was attempted or disconnected. + + applLastOutboundActivity is not provided by this MIB. + + applRejectedInboundAssociations is the number of local or + remote conversations rejected by the server for + administrative reasons or because of resource limitations. + + applFailedOutboundAssociations is not provided by this MIB." + + ::= { rdbmsObjects 6 } + +rdbmsSrvInfoEntry OBJECT-TYPE + SYNTAX RdbmsSrvInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information that must be present for a single 'up' database + server, with visibility determined by the value of the + corresponding applOperStatus object. If an instance of + applOperStatus is not up(1), then attempts to access + corresponding instances in this table may result in either + noSuchName (SNMPv1) or noSuchInstance (SNMPv2) being returned + by the agent." + INDEX { applIndex } + ::= { rdbmsSrvInfoTable 1 } + +RdbmsSrvInfoEntry ::= + SEQUENCE { + rdbmsSrvInfoStartupTime DateAndTime, + rdbmsSrvInfoFinishedTransactions Gauge32, + rdbmsSrvInfoDiskReads Counter32, + rdbmsSrvInfoDiskWrites Counter32, + rdbmsSrvInfoLogicalReads Counter32, + rdbmsSrvInfoLogicalWrites Counter32, + rdbmsSrvInfoPageWrites Counter32, + rdbmsSrvInfoPageReads Counter32, + rdbmsSrvInfoDiskOutOfSpaces Counter32, + rdbmsSrvInfoHandledRequests Counter32, + rdbmsSrvInfoRequestRecvs Counter32, + rdbmsSrvInfoRequestSends Counter32, + rdbmsSrvInfoHighwaterInboundAssociations Gauge32, + rdbmsSrvInfoMaxInboundAssociations Gauge32 + } + +rdbmsSrvInfoStartupTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time at which this server was last started." + ::= { rdbmsSrvInfoEntry 1 } + +rdbmsSrvInfoFinishedTransactions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transactions visible to this server that have + been completed by either commit or abort. Some database + operations, such as read-only queries, may not result in the + creation of a transaction." + ::= { rdbmsSrvInfoEntry 2 } + +rdbmsSrvInfoDiskReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of reads of database files issued to the + operating system by this server since startup. Numbers are + not comparable between products. What constitutes a + readand how it is accounted is product-specific." + ::= { rdbmsSrvInfoEntry 3 } + +rdbmsSrvInfoLogicalReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of logical reads of database files made + internally by this server since startup. The values of this + object and those of rdbmsSrvInfoDiskReads reveal the effect + of caching on read operation. Numbers are not comparable + between products, and may only be meaningful when aggregated + across all servers sharing a common cache." + ::= { rdbmsSrvInfoEntry 4 } + +rdbmsSrvInfoDiskWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of writes to database files issued to the + operating system by this server since startup. Numbers are + not comparable between products." + ::= { rdbmsSrvInfoEntry 5 } + +rdbmsSrvInfoLogicalWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times parts of the database files have + been marked 'dirty' and in need of writing to the disk. This + value and rdbmsSrvInfoDiskWrites give some indication of the + effect of 'write-behind' strategies in reducing the number of + disk writes compared to database operations. Because the + writes may be done by servers other than those marking the + parts of the database files dirty, these values may only be + meaningful when aggregated across all servers sharing a + common cache. Numbers are not comparable between products." + ::= { rdbmsSrvInfoEntry 6 } + +rdbmsSrvInfoPageReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of pages in database files read by this + server since startup. 'Pages' are product specific units of + disk i/o operations. This value, along with + rdbmsSrvInfoDiskReads, reveals the effect of any grouping + read-ahead that may be used to enhance performance of some + queries, such as scans." + ::= { rdbmsSrvInfoEntry 7} + +rdbmsSrvInfoPageWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of pages in database files written by this + server since startup. Pages are product-specific units of + disk I/O. This value, with rdbmsSrvInfoDiskWrites, shows the + effect of write strategies that collapse logical writes of + contiguous pages into single calls to the operating system." + ::= { rdbmsSrvInfoEntry 8 } + +rdbmsSrvInfoDiskOutOfSpaces OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the server has been unable to + obtain disk space that it wanted, since server startup. This + would be inspected by an agent on receipt of an + rdbmsOutOfSpace trap." + ::= { rdbmsSrvInfoEntry 9 } + +rdbmsSrvInfoHandledRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of requests made to the server on inbound + associations. The meaning of 'requests' is product specific, + and is not comparable between products. + + This is intended to encapsulate high level semantic + operations between clients and servers, or between peers. + For instance, one request might correspond to a 'select' or + an 'insert' statement. It is not intended to capture disk + i/o described in rdbmsSrvInfoDiskReads and + rdbmsSrvInfoDiskWrites." + ::= { rdbmsSrvInfoEntry 10 } + +rdbmsSrvInfoRequestRecvs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of receive operations made processing any requests + on inbound associations. The meaning of operations is product + specific, and is not comparable between products. + + This is intended to capture lower-level i/o operations than + shown by HandledRequests, between clients and servers, or + between peers. For instance, it might roughly correspond to + the amount of data given with an 'insert' statement. It is + not intended to capture disk i/o described in + rdbmsSrvInfoDiskReads and rdbmsSrvInfoDiskWrites." + ::= { rdbmsSrvInfoEntry 11 } + +rdbmsSrvInfoRequestSends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of send operations made processing requests + handled on inbound associations. The meaning of operations + is product specific, and is not comparable between products. + This is intended to capture lower-level i/o operations than + shown by HandledRequests, between between clients and + servers, or between peers. It might roughly correspond to + the number of rows returned by a 'select' statement. It is + not intended to capture disk i/o described in DiskReads." + ::= { rdbmsSrvInfoEntry 12 } + +rdbmsSrvInfoHighwaterInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The greatest number of inbound associations that have been + simultaneously open to this server since startup." + ::= { rdbmsSrvInfoEntry 13 } + +rdbmsSrvInfoMaxInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The greatest number of inbound associations that can be + simultaneously open with this server. If there is no limit, + then the value should be zero. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvInfoEntry 14 } + +---------------------------------------------------------------- + +rdbmsSrvParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of configuration parameters for a server. Entries + should be populated according to the following guidelines: + (1) The value should be specified through administrative + (human) intervention. + (2) It should be configured on a per-server or a more global + basis, with duplicate entries for each server sharing + use of the parameter. + (3) One of the following is true: + (a) The parameter has a non-numeric value; + (b) The current value is numeric, but it only changes due + to human intervention; + (c) The current value is numeric and dynamic, but the + RDBMS does not track access/allocation failures + related to the parameter; + (d) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, but the failure has no + significant impact on RDBMS performance or + availability. + (e) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, the failure has + significant impact on RDBMS performance or + availability, and is shown in the + rdbmsSrvLimitedResource table." + ::= { rdbmsObjects 7 } + +rdbmsSrvParamEntry OBJECT-TYPE + SYNTAX RdbmsSrvParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single configuration parameter for a server. + Parameters with single values have a subindex value of one. + If the parameter is naturally considered to contain a + variable number of members of a class, e.g. members of the + DBA user group, or tracepoints active in the server, then it + must be presented as a set of rows. If, on the other hand, + the parameter represents a set of choices from a class, + e.g. the permissions on a file or the options chosen out of + the set of all options allowed, AND is guaranteed to always + fit in the 255 character length of a DisplayString, then it + may be presented as a comma separated list with a subindex + value of one. Zero may not be used as a subindex value. + + Entries for a server must be present if the value of the + corresponding applOperStatus object is up(1). If an instance + of applOperStatus is not up(1), then attempts to access + corresponding instances in this table may result in either + noSuchName (SNMPv1) or noSuchInstance (SNMPv2) being returned + by the agent." + INDEX { applIndex, rdbmsSrvParamName, rdbmsSrvParamSubIndex } + ::= { rdbmsSrvParamTable 1 } + +RdbmsSrvParamEntry ::= + SEQUENCE { + rdbmsSrvParamName DisplayString, + rdbmsSrvParamSubIndex INTEGER, + rdbmsSrvParamID AutonomousType, + rdbmsSrvParamCurrValue DisplayString, + rdbmsSrvParamComment DisplayString + } + +rdbmsSrvParamName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a configuration parameter for a server. This + name is product-specific. The length is limited to 64 + characters to constrain the number of sub-identifiers needed + for instance identification (and to minimize network + traffic)." + ::= { rdbmsSrvParamEntry 1 } + +rdbmsSrvParamSubIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The subindex value for this parameter. If the parameter is + naturally considered to contain a variable number of members + of a class, e.g. members of the DBA user group, or files + which are part of the database, then it must be presented as + a set of rows. If, on the other hand, the parameter + represents a set of choices from a class, e.g. the + permissions on a file or the options chosen out of the set of + all options allowed, AND is guaranteed to always fit in the + 255 character length of a DisplayString, then it may be + presented as a comma separated list with a subindex value of + one. Zero may not be used as a value." + ::= { rdbmsSrvParamEntry 2 } + +rdbmsSrvParamID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the parameter which may be described in some + other MIB. If there is no ID for this rdbmsSrvParamName, + attempts to access this object will return noSuchName + (SNMPv1) or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvParamEntry 3 } + +rdbmsSrvParamCurrValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value for a configuration parameter now in effect, the + actual setting for the server. While there may multiple + values in the temporal domain of interest (for instance, the + value to take effect at the next restart), this is the + current setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvParamEntry 4 } + +rdbmsSrvParamComment OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Annotation which describes the purpose of a configuration + parameter or the reason for a particular parameter's + setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvParamEntry 5 } + +---------------------------------------------------------------- + +rdbmsSrvLimitedResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of limited resources relevant to a server." + ::= { rdbmsObjects 8 } + +rdbmsSrvLimitedResourceEntry OBJECT-TYPE + SYNTAX RdbmsSrvLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single limited resource kept by the server. + A limited resource has maximum use determined by a parameter + that might or might not changeable at run time, or visible in + the rbmsSrvParamTable. Examples would be the number of + available locks, or number of concurrent executions allowed + in a server. Arrays of resources are supported through an + integer subindex, which should have the value of one for + single-instance names. + + Limited resources that are shared across servers or databases + are best duplicated in this table across + all servers accessing the resource." + INDEX { applIndex, rdbmsSrvLimitedResourceName } + ::= { rdbmsSrvLimitedResourceTable 1 } + +RdbmsSrvLimitedResourceEntry ::= + SEQUENCE { + rdbmsSrvLimitedResourceName DisplayString, + rdbmsSrvLimitedResourceID AutonomousType, + rdbmsSrvLimitedResourceLimit INTEGER, + rdbmsSrvLimitedResourceCurrent INTEGER, + rdbmsSrvLimitedResourceHighwater INTEGER, + rdbmsSrvLimitedResourceFailures Counter32, + rdbmsSrvLimitedResourceDescription DisplayString + } + +rdbmsSrvLimitedResourceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the resource, for instance 'threads' or + 'semaphores', or 'buffer pages'" + ::= { rdbmsSrvLimitedResourceEntry 1 } + +rdbmsSrvLimitedResourceID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the resource which may be described in some other + MIB. If there is no ID for this rdbmsSrvLimitedResourceName, + attempts to access this object will return noSuchName + (SNMPv1) or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvLimitedResourceEntry 2 } + +rdbmsSrvLimitedResourceLimit OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum value the resource use may attain. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvLimitedResourceEntry 3 } + +rdbmsSrvLimitedResourceCurrent OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value for the resource." + ::= { rdbmsSrvLimitedResourceEntry 4 } + +rdbmsSrvLimitedResourceHighwater OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the resource seen since applUpTime + was reset." + ::= { rdbmsSrvLimitedResourceEntry 5 } + +rdbmsSrvLimitedResourceFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the system wanted to exceed the limit of + the resource since applUpTime was reset." + ::= { rdbmsSrvLimitedResourceEntry 6 } + +rdbmsSrvLimitedResourceDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the resource and the meaning of the integer + units used for Limit, Current, and Highwater. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvLimitedResourceEntry 7 } + +---------------------------------------------------------------- + +rdbmsRelTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsRelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table relating databases and servers present on a host." + ::= { rdbmsObjects 9 } + +rdbmsRelEntry OBJECT-TYPE + SYNTAX RdbmsRelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry relating a single database server to a single + database to which it may provide access. The table is + indexed first by the index of rdbmsDbTable, and then + rdbmsSrvTable, so that all servers capable of providing + access to a given database may be found by SNMP traversal + operations (get-next and get-bulk). The makeup of this table + depends on the product's architecture, e.g. if it is one + server - many databases, then each server will appear n + times, where n is the number of databases it may access, and + each database will appear once. If the architecture is one + database - many servers, then each server will appear once + and each database will appear n times, where n is the number + of servers that may be accessing it." + INDEX { rdbmsDbIndex, applIndex } + ::= { rdbmsRelTable 1 } + +RdbmsRelEntry ::= + SEQUENCE { + rdbmsRelState INTEGER, + rdbmsRelActiveTime DateAndTime + } + +rdbmsRelState OBJECT-TYPE + SYNTAX INTEGER{ + other(1), + active(2), + available(3), + restricted(4), + unavailable(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of this server's access to this database. + Active(2) means the server is actively using the database. + Available(3) means the server could use the database if + necessary. Restricted(4) means the database is in some + administratively determined state of less-than-complete + availability. Unavailable(5) means the database is not + available through this server. Other(1) means the + database/server is in some other condition, possibly + described in the vendor private MIB." + + ::= { rdbmsRelEntry 1 } + +rdbmsRelActiveTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the database was made active by the server. If an + instance of rdbmsRelState is not active(1), then attempts to + access the corresponding instance of this object may result + in either noSuchName (SNMPv1) or noSuchInstance (SNMPv2) + being returned by the agent." + ::= { rdbmsRelEntry 2 } + +---------------------------------------------------------------- + +-- Well known resources for which limits, high water marks, +-- access or allocation failures, and current levels of use +-- are possibly available in either the rdbmsDbLimitedResources +-- or the rdbmsSrvLimitedResources tables. + +rdbmsWellKnownLimitedResources OBJECT IDENTIFIER + ::= { rdbmsObjects 10 } + +rdbmsLogSpace OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Storage allocated for redo and undo logs." + ::= { rdbmsWellKnownLimitedResources 1} + +---------------------------------------------------------------- + +rdbmsTraps OBJECT IDENTIFIER ::= { rdbmsMIB 2 } + +rdbmsStateChange NOTIFICATION-TYPE + OBJECTS { rdbmsRelState } + STATUS current + DESCRIPTION + "An rdbmsStateChange trap signifies that one of the database + server/databases managed by this agent has changed its + rdbmsRelState in a way that makes it less accessible for use. + For these purposes, both active(2) and available(3) are + considered fully accessible. The state sent with the trap is + the new, less accessible state." + ::= { rdbmsTraps 1 } + +rdbmsOutOfSpace NOTIFICATION-TYPE + OBJECTS { rdbmsSrvInfoDiskOutOfSpaces } + STATUS current + DESCRIPTION + "An rdbmsOutOfSpace trap signifies that one of the database + servers managed by this agent has been unable to allocate + space for one of the databases managed by this agent. Care + should be taken to avoid flooding the network with these + traps." + ::= { rdbmsTraps 2 } + +---------------------------------------------------------------- + +-- compliance information + +rdbmsConformance OBJECT IDENTIFIER ::= { rdbmsMIB 3 } +rdbmsCompliances OBJECT IDENTIFIER ::= { rdbmsConformance 1 } +rdbmsGroups OBJECT IDENTIFIER ::= { rdbmsConformance 2 } + +-- compliance statements + +rdbmsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement the RDBMS MIB" + MODULE HOST-RESOURCES-MIB + MANDATORY-GROUPS { hrSystem } + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applGroups } + MODULE RDBMS-MIB + MANDATORY-GROUPS { rdbmsGroup } + + GROUP rdbmsGroup + DESCRIPTION + "The rdbmsGroup is mandatory, but no write access + to objects is required for compliance." + OBJECT rdbmsDbContact + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbParamCurrValue + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbParamComment + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbLimitedResourceLimit + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbLimitedResourceDescription + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvContact + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvInfoMaxInboundAssociations + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvParamCurrValue + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvParamComment + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvLimitedResourceLimit + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvLimitedResourceDescription + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + + ::= { rdbmsCompliances 1 } + +-- units of conformance + + -- rdbmsStateChange and rdbmsOutOfSpace traps are omitted + -- intentionally. They are not required or part of any + -- conformance group. + +rdbmsGroup OBJECT-GROUP + OBJECTS { + rdbmsDbPrivateMibOID, rdbmsDbVendorName, + rdbmsDbName, rdbmsDbContact, + + rdbmsDbInfoProductName, rdbmsDbInfoVersion, + rdbmsDbInfoSizeUnits, rdbmsDbInfoSizeAllocated, + rdbmsDbInfoSizeUsed, rdbmsDbInfoLastBackup, + + rdbmsDbParamCurrValue, rdbmsDbParamComment, + + rdbmsDbLimitedResourceLimit, + rdbmsDbLimitedResourceCurrent, + rdbmsDbLimitedResourceHighwater, + rdbmsDbLimitedResourceFailures, + rdbmsDbLimitedResourceDescription, + + rdbmsSrvPrivateMibOID, rdbmsSrvVendorName, + rdbmsSrvProductName, rdbmsSrvContact, + + rdbmsSrvInfoStartupTime, + rdbmsSrvInfoFinishedTransactions, + rdbmsSrvInfoDiskReads, rdbmsSrvInfoDiskWrites, + rdbmsSrvInfoLogicalReads, rdbmsSrvInfoLogicalWrites, + rdbmsSrvInfoPageReads, rdbmsSrvInfoPageWrites, + rdbmsSrvInfoHandledRequests, + rdbmsSrvInfoRequestRecvs, rdbmsSrvInfoRequestSends, + rdbmsSrvInfoHighwaterInboundAssociations, + rdbmsSrvInfoMaxInboundAssociations, + + rdbmsSrvParamCurrValue, rdbmsSrvParamComment, + + rdbmsSrvLimitedResourceLimit, + rdbmsSrvLimitedResourceCurrent, + rdbmsSrvLimitedResourceHighwater, + rdbmsSrvLimitedResourceFailures, + rdbmsSrvLimitedResourceDescription, + + rdbmsRelState, rdbmsRelActiveTime } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation of an + RDBMS entity." + ::= { rdbmsGroups 1 } + +---------------------------------------------------------------- + +END diff --git a/mibs/ietf/RFC-1212 b/mibs/ietf/RFC-1212 new file mode 100644 index 0000000..4b1bdcf --- /dev/null +++ b/mibs/ietf/RFC-1212 @@ -0,0 +1,75 @@ +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 + diff --git a/mibs/ietf/RFC-1215 b/mibs/ietf/RFC-1215 new file mode 100644 index 0000000..3cdcfdf --- /dev/null +++ b/mibs/ietf/RFC-1215 @@ -0,0 +1,34 @@ +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 + +END diff --git a/mibs/ietf/RFC1065-SMI b/mibs/ietf/RFC1065-SMI new file mode 100644 index 0000000..40e55d7 --- /dev/null +++ b/mibs/ietf/RFC1065-SMI @@ -0,0 +1,132 @@ +RFC1065-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 + + Opaque ::= + [APPLICATION 4] -- arbitrary ASN.1 value, + IMPLICIT OCTET STRING -- "double-wrapped" + + END diff --git a/mibs/ietf/RFC1155-SMI b/mibs/ietf/RFC1155-SMI new file mode 100644 index 0000000..a6c3bf6 --- /dev/null +++ b/mibs/ietf/RFC1155-SMI @@ -0,0 +1,129 @@ +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 diff --git a/mibs/ietf/RFC1158-MIB b/mibs/ietf/RFC1158-MIB new file mode 100644 index 0000000..4acf34a --- /dev/null +++ b/mibs/ietf/RFC1158-MIB @@ -0,0 +1,1493 @@ +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 } + +ipAdEntReasmMaxSize 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, + ipNetToMediaType + 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 diff --git a/mibs/ietf/RFC1213-MIB b/mibs/ietf/RFC1213-MIB new file mode 100644 index 0000000..2a849de --- /dev/null +++ b/mibs/ietf/RFC1213-MIB @@ -0,0 +1,2621 @@ +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 diff --git a/mibs/ietf/RFC1269-MIB b/mibs/ietf/RFC1269-MIB new file mode 100644 index 0000000..996892e --- /dev/null +++ b/mibs/ietf/RFC1269-MIB @@ -0,0 +1,375 @@ +RFC1269-MIB DEFINITIONS ::= BEGIN + +IMPORTS + NetworkAddress, IpAddress, Counter + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9], and the TRAP-TYPE macro as defined +-- in [10]. + +bgp OBJECT IDENTIFIER ::= { mib-2 15 } + +bgpVersion OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vector of supported BGP protocol version + numbers. Each peer negotiates the version from + this vector. Versions are identified via the + string of bits contained within this object. + The first octet contains bits 0 to 7, the + second octet contains bits 8 to 15, and so on, + with the most significant bit referring to the + lowest bit number in the octet (e.g., the MSB + of the first octet refers to bit 0). If a bit, + i, is present and set, then the version (i+1) + of the BGP is supported." + ::= { bgp 1 } + +bgpLocalAs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local autonomous system number." + ::= { bgp 2 } + +bgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The bgp peer table." + ::= { bgp 3 } + +bgpIdentifier OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The BGP Identifier of local system." + ::= { bgp 4 } + +bgpPeerEntry OBJECT-TYPE + SYNTAX BgpPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a BGP peer connection." + INDEX + { bgpPeerRemoteAddr } + ::= { bgpPeerTable 1 } + +BgpPeerEntry ::= SEQUENCE { + bgpPeerIdentifier + IpAddress, + bgpPeerState + INTEGER, + bgpPeerAdminStatus + INTEGER, + bgpPeerNegotiatedVersion + INTEGER, + bgpPeerLocalAddr + IpAddress, + bgpPeerLocalPort + INTEGER, + bgpPeerRemoteAddr + IpAddress, + bgpPeerRemotePort + INTEGER, + bgpPeerRemoteAs + INTEGER, + bgpPeerInUpdates + Counter, + bgpPeerOutUpdates + Counter, + bgpPeerInTotalMessages + Counter, + bgpPeerOutTotalMessages + Counter, + bgpPeerLastError + OCTET STRING + } + +bgpPeerIdentifier OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The BGP Identifier of this entry's BGP peer." + ::= { bgpPeerEntry 1 } + +bgpPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + opensent(4), + openconfirm(5), + established(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The bgp peer connection state. " + ::= { bgpPeerEntry 2 } + +bgpPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired state of the BGP connection. A + transition from 'stop' to 'start' will cause + the BGP Start Event to be generated. A + transition from 'start' to 'stop' will cause + the BGP Stop Event to be generated. This + parameter can be used to restart BGP peer + connections. Care should be used in providing + write access to this object without adequate + authentication." + ::= { bgpPeerEntry 3 } + +bgpPeerNegotiatedVersion OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The negotiated version of BGP running between + the two peers. " + ::= { bgpPeerEntry 4 } + +bgpPeerLocalAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IP address of this entry's BGP + connection." + ::= { bgpPeerEntry 5 } + +bgpPeerLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port for the TCP connection between + the BGP peers." + ::= { bgpPeerEntry 6 } + +bgpPeerRemoteAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote IP address of this entry's BGP + peer." + ::= { bgpPeerEntry 7 } + +bgpPeerRemotePort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote port for the TCP connection between + the BGP peers. Note that the objects + bgpLocalAddr, bgpLocalPort, bgpRemoteAddr and + bgpRemotePort provide the appropriate reference + to the standard MIB TCP connection table." + ::= { bgpPeerEntry 8 } + +bgpPeerRemoteAs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote autonomous system number." + ::= { bgpPeerEntry 9 } + +bgpPeerInUpdates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of BGP UPDATE messages received on + this connection. This object should be + initialized to zero when the connection is + established." + ::= { bgpPeerEntry 10 } + +bgpPeerOutUpdates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of BGP UPDATE messages received on + this connection. This object should be + initialized to zero when the connection is + established." + ::= { bgpPeerEntry 11} + +bgpPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of messages received from the + remote peer on this connection. This object + should be initialized to zero when the + connection is established." + ::= { bgpPeerEntry 12 } + +bgpPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of messages transmitted to + the remote peer on this connection. This object + should be initialized to zero when the + connection is established." + ::= { bgpPeerEntry 13 } + +bgpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last error code and subcode seen by this + peer on this connection. If no error has + occurred, this field is zero. Otherwise, the + first byte of this two byte OCTET STRING + contains the error code; the second contains + the subcode." + ::= { bgpPeerEntry 14 } + +bgpRcvdPathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPathAttrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The BGP Received Path Attribute Table contains + information about paths to destination networks + received by all peers." + ::= { bgp 5 } + +bgpPathAttrEntry OBJECT-TYPE + SYNTAX BgpPathAttrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a path to a network." + INDEX + { bgpPathAttrDestNetwork, + bgpPathAttrPeer } + ::= { bgpRcvdPathAttrTable 1 } + +BgpPathAttrEntry ::= SEQUENCE { + bgpPathAttrPeer + IpAddress, + bgpPathAttrDestNetwork + IpAddress, + bgpPathAttrOrigin + INTEGER, + bgpPathAttrASPath + OCTET STRING, + bgpPathAttrNextHop + IpAddress, + bgpPathAttrInterASMetric + INTEGER + } + +bgpPathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address of the peer where the path + information + was learned." + ::= { bgpPathAttrEntry 1 } + +bgpPathAttrDestNetwork OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the destination network." + ::= { bgpPathAttrEntry 2 } + +bgpPathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via EGP + incomplete(3) -- undetermined + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ultimate origin of the path information." + ::= { bgpPathAttrEntry 3 } + +bgpPathAttrASPath OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of ASs that must be traversed to reach + the network. ( This object is probably best + represented as SEQUENCE OF INTEGER. For SMI + compatibility, though, it is represented as + OCTET STRING. Each AS is represented as a pair + of octets according to the following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255;" + ::= { bgpPathAttrEntry 4 } + +bgpPathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the border router that should + be used for the destination network." + ::= { bgpPathAttrEntry 5 } + +bgpPathAttrInterASMetric OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The optional inter-AS metric. If this + attribute has not been provided for this route, + the value for this object is 0." + ::= { bgpPathAttrEntry 6 } + +bgpEstablished TRAP-TYPE + ENTERPRISE bgp + VARIABLES { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + DESCRIPTION + "The BGP Established event is generated when + the BGP FSM enters the ESTABLISHED state. " + ::= 1 + +bgpBackwardTransition TRAP-TYPE + ENTERPRISE bgp + VARIABLES { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + DESCRIPTION + "The BGPBackwardTransition Event is generated + when the BGP FSM moves from a higher numbered + state to a lower numbered state." + ::= 2 +END diff --git a/mibs/ietf/RFC1271-MIB b/mibs/ietf/RFC1271-MIB new file mode 100644 index 0000000..1e00984 --- /dev/null +++ b/mibs/ietf/RFC1271-MIB @@ -0,0 +1,3356 @@ + RFC1271-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter FROM RFC1155-SMI + mib-2, DisplayString FROM RFC1213-MIB + OBJECT-TYPE FROM RFC-1212; + + -- This MIB module uses the extended OBJECT-TYPE macro as + -- defined in [9]. + + + -- Remote Network Monitoring MIB + + rmon OBJECT IDENTIFIER ::= { mib-2 16 } + + + -- textual conventions + + OwnerString ::= DisplayString + -- 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: + -- IP address, management station name, network manager'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 'monitor'. + + -- + -- SNMP access control is articulated entirely in terms of + -- the contents of MIB views; access to a particular SNMP + -- object instance depends only upon its presence or + -- absence in a particular MIB view and never upon its + -- value or the value of related object instances. Thus, + -- objects of this type afford resolution of resource + -- contention only among cooperating managers; they + -- realize no access control function with respect + -- to uncooperative parties. + -- + -- By convention, objects with this syntax are declared + -- as having + -- + -- SIZE (0..127) + + + EntryStatus ::= INTEGER + { valid(1), + createRequest(2), + underCreation(3), + invalid(4) + } + + -- The status of a table entry. + -- + -- Setting this object to the value invalid(4) has the + -- effect of invalidating the corresponding entry. + -- 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 tabular information from agents that corresponds + -- to entries currently not in use. Proper + -- interpretation of such entries requires examination + -- of the relevant EntryStatus object. + -- + -- An existing instance of this object cannot be set to + -- createRequest(2). This object may only be set to + -- createRequest(2) when this instance is created. When + -- this object is created, the agent may wish to create + -- supplemental object instances to complete a conceptual + -- row in this table. Immediately after completing the + -- create operation, the agent must set this object to + -- underCreation(3). + -- + -- Entries shall exist in the underCreation(3) state until + + -- the management station is finished configuring the + -- entry and sets this object to valid(1) or aborts, + -- setting this object to invalid(4). If the agent + -- determines that an entry has been in the + -- underCreation(3) state for an abnormally long time, + -- it may decide that the management station has + -- crashed. If the agent makes this decision, + -- it may set this object to invalid(4) to reclaim the + -- entry. A prudent agent will understand that the + -- management station may need to wait for human input + -- and will allow for that possibility in its + -- determination of this abnormally long period. + + + statistics OBJECT IDENTIFIER ::= { rmon 1 } + history OBJECT IDENTIFIER ::= { rmon 2 } + alarm OBJECT IDENTIFIER ::= { rmon 3 } + hosts OBJECT IDENTIFIER ::= { rmon 4 } + hostTopN OBJECT IDENTIFIER ::= { rmon 5 } + matrix OBJECT IDENTIFIER ::= { rmon 6 } + filter OBJECT IDENTIFIER ::= { rmon 7 } + capture OBJECT IDENTIFIER ::= { rmon 8 } + event OBJECT IDENTIFIER ::= { rmon 9 } + + + -- The Statistics Group + -- + -- Implementation of the Statistics group is optional. + -- + -- The statistics group contains statistics measured by the + -- probe for each monitored interface on this device. These + -- statistics take the form of free running counters that + -- start from zero when a valid entry is created. + -- + -- This group currently has statistics defined only for + -- Ethernet interfaces. Each etherStatsEntry contains + -- statistics for one Ethernet interface. The probe must + -- create one etherStats entry for each monitored Ethernet + -- interface on the device. + + etherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Ethernet statistics entries." + ::= { statistics 1 } + + etherStatsEntry OBJECT-TYPE + SYNTAX EtherStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics kept for a particular + Ethernet interface." + INDEX { etherStatsIndex } + ::= { etherStatsTable 1 } + + EtherStatsEntry ::= SEQUENCE { + etherStatsIndex INTEGER (1..65535), + etherStatsDataSource OBJECT IDENTIFIER, + etherStatsDropEvents Counter, + etherStatsOctets Counter, + etherStatsPkts Counter, + etherStatsBroadcastPkts Counter, + etherStatsMulticastPkts Counter, + etherStatsCRCAlignErrors Counter, + etherStatsUndersizePkts Counter, + etherStatsOversizePkts Counter, + etherStatsFragments Counter, + etherStatsJabbers Counter, + etherStatsCollisions Counter, + etherStatsPkts64Octets Counter, + etherStatsPkts65to127Octets Counter, + etherStatsPkts128to255Octets Counter, + etherStatsPkts256to511Octets Counter, + etherStatsPkts512to1023Octets Counter, + etherStatsPkts1024to1518Octets Counter, + etherStatsOwner OwnerString, + etherStatsStatus INTEGER + } + + etherStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + etherStats entry." + ::= { etherStatsEntry 1 } + + etherStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data that + this etherStats entry is configured to analyze. This + source can be any ethernet interface on this device. + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [4,6], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + etherStatsStatus object is equal to valid(1)." + ::= { etherStatsEntry 2 } + + etherStatsDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets + were dropped by the probe due to lack of resources. + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected." + ::= { etherStatsEntry 3 } + + etherStatsOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherStatsEntry 4 } + + etherStatsPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error packets) + received." + ::= { etherStatsEntry 5 } + + etherStatsBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good packets received that were + directed to the broadcast address." + ::= { etherStatsEntry 6 } + + etherStatsMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good packets received that were + directed to a multicast address. Note that this + number does not include packets directed to the + broadcast address." + ::= { etherStatsEntry 7 } + + etherStatsCRCAlignErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that + had a length (excluding framing bits, but + including FCS octets) of between 64 and 1518 + octets, inclusive, but were not an integral number + of octets in length or had a bad Frame Check + Sequence (FCS)." + ::= { etherStatsEntry 8 } + + etherStatsUndersizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + less than 64 octets long (excluding framing bits, + but including FCS octets) and were otherwise well + formed." + ::= { etherStatsEntry 9 } + + etherStatsOversizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets) and were otherwise + well formed." + ::= { etherStatsEntry 10 } + + etherStatsFragments OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were not an + integral number of octets in length or that had a bad + Frame Check Sequence (FCS), and were less than 64 + octets in length (excluding framing bits but + including FCS octets)." + ::= { etherStatsEntry 11 } + + etherStatsJabbers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets), and were not an + integral number of octets in length or had + a bad Frame Check Sequence (FCS)." + ::= { etherStatsEntry 12 } + + etherStatsCollisions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment." + ::= { etherStatsEntry 13 } + + etherStatsPkts64Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 14 } + + etherStatsPkts65to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 15 } + + etherStatsPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 16 } + + etherStatsPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 17 } + + etherStatsPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 18 } + + etherStatsPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 19 } + + etherStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { etherStatsEntry 20 } + + etherStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this etherStats entry." + ::= { etherStatsEntry 21 } + + + -- The History Group + + -- Implementation of the History group is optional. + -- + -- The history group records periodic statistical samples from + -- a network and stores them for later retrieval. The + -- historyControl table stores configuration entries that each + -- define an interface, polling period, and other parameters. + -- Once samples are taken, their data is stored in an entry + -- in a media-specific table. Each such entry defines one + -- sample, and is associated with the historyControlEntry that + -- caused the sample to be taken. Currently the only media- + -- specific table defined is the etherHistoryTable, for + -- Ethernet networks. + -- + -- If the probe keeps track of the time of day, it should + -- start the first sample of the history at a time such that + -- when the next hour of the day begins, a sample is + -- started at that instant. This tends to make more + + -- user-friendly reports, and enables comparison of reports + -- from different probes that have relatively accurate time + -- of day. + -- + -- The monitor is encouraged to add two history control entries + -- per monitored interface upon initialization that describe + -- a short term and a long term polling period. Suggested + -- parameters are 30 seconds for the short term polling + -- period and 30 minutes for the long term period. + + historyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of history control entries." + ::= { history 1 } + + historyControlEntry OBJECT-TYPE + SYNTAX HistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up a periodic + sampling of statistics." + INDEX { historyControlIndex } + ::= { historyControlTable 1 } + + HistoryControlEntry ::= SEQUENCE { + historyControlIndex INTEGER (1..65535), + historyControlDataSource OBJECT IDENTIFIER, + historyControlBucketsRequested INTEGER (1..65535), + historyControlBucketsGranted INTEGER (1..65535), + historyControlInterval INTEGER (1..3600), + historyControlOwner OwnerString, + historyControlStatus INTEGER + } + + historyControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + historyControl table. Each such entry defines a + set of samples at a particular interval for an + interface on the device." + ::= { historyControlEntry 1 } + + historyControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data for + which historical data was collected and + placed in a media-specific table on behalf of this + historyControlEntry. This source can be any + interface on this device. In order to identify + a particular interface, this object shall identify + the instance of the ifIndex object, defined + in [4,6], for the desired interface. For example, + if an entry were to receive data from interface #1, + this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + ::= { historyControlEntry 2 } + + historyControlBucketsRequested OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + media-specific table associated with this + historyControl entry. + + When this object is created or modified, the probe + should set historyControlBucketsGranted as closely to + this object as is possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { historyControlEntry 3 } + + historyControlBucketsGranted OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the media-specific table associated with this + historyControl entry. + + When the associated historyControlBucketsRequested + object is created or modified, the probe + should set this object as closely to the requested + value as is possible for the particular + probe implementation and available resources. The + probe must not lower this value except as a result + of a modification to the associated + historyControlBucketsRequested object. + + There will be times when the actual number of + buckets associated with this entry is less than + the value of this object. In this case, at the + end of each sampling interval, a new bucket will + be added to the media-specific table. + + When the number of buckets reaches the value of + this object and a new bucket is to be added to the + media-specific table, the oldest bucket associated + with this historyControlEntry shall be deleted by + the agent so that the new bucket can be added. + + When the value of this object changes to a value less + than the current value, entries are deleted + from the media-specific table associated with this + historyControlEntry. Enough of the oldest of these + entries shall be deleted by the agent so that their + number remains less than or equal to the new value of + this object. + + When the value of this object changes to a value + greater than the current value, the number of + associated media-specific entries may be allowed + to grow." + ::= { historyControlEntry 4 } + + historyControlInterval OBJECT-TYPE + SYNTAX INTEGER (1..3600) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the + media-specific table associated with this + historyControl entry. This interval can + be set to any number of seconds between 1 and + 3600 (1 hour). + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager + will take into account the possibility of overflow + in any of the associated counters. It is important + to consider the minimum time in which any counter + could overflow on a particular media type and set + the historyControlInterval object to a value less + than this interval. This is typically most + important for the 'octets' counter in any + media-specific table. For example, on an Ethernet + network, the etherHistoryOctets counter could overflow + in about one hour at the Ethernet's maximum + utilization. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + DEFVAL { 1800 } + ::= { historyControlEntry 5 } + + historyControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { historyControlEntry 6 } + + historyControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this historyControl entry. + + Each instance of the media-specific table associated + with this historyControlEntry will be deleted by the + agent if this historyControlEntry is not equal to + valid(1)." + ::= { historyControlEntry 7 } + + + -- Ether History table + + etherHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Ethernet history entries." + ::= { history 2 } + + etherHistoryEntry OBJECT-TYPE + SYNTAX EtherHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An historical sample of Ethernet statistics on a + particular Ethernet interface. This sample is + associated with the historyControlEntry which set + up the parameters for a regular collection of these + samples." + INDEX { etherHistoryIndex , etherHistorySampleIndex } + ::= { etherHistoryTable 1 } + + EtherHistoryEntry ::= SEQUENCE { + etherHistoryIndex INTEGER (1..65535), + etherHistorySampleIndex INTEGER, + etherHistoryIntervalStart TimeTicks, + etherHistoryDropEvents Counter, + etherHistoryOctets Counter, + etherHistoryPkts Counter, + etherHistoryBroadcastPkts Counter, + etherHistoryMulticastPkts Counter, + etherHistoryCRCAlignErrors Counter, + etherHistoryUndersizePkts Counter, + etherHistoryOversizePkts Counter, + etherHistoryFragments Counter, + etherHistoryJabbers Counter, + etherHistoryCollisions Counter, + etherHistoryUtilization INTEGER (0..10000) + } + + etherHistoryIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified + by the same value of historyControlIndex." + ::= { etherHistoryEntry 1 } + + etherHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular + sample this entry represents among all samples + associated with the same historyControlEntry. + This index starts at 1 and increases by one + as each new sample is taken." + ::= { etherHistoryEntry 2 } + + etherHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the interval + over which this sample was measured. If the probe + keeps track of the time of day, it should start + the first sample of the history at a time such that + when the next hour of the day begins, a sample is + started at that instant. Note that following this + rule may require the probe to delay collecting the + first sample of the history, as each sample must be + of the same interval. Also note that the sample which + is currently being collected is not accessible in this + table until the end of its interval." + ::= { etherHistoryEntry 3 } + + etherHistoryDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets + were dropped by the probe due to lack of resources + during this interval. Note that this number is not + necessarily the number of packets dropped, it is just + the number of times this condition has been detected." + ::= { etherHistoryEntry 4 } + + etherHistoryOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherHistoryEntry 5 } + + etherHistoryPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets (including error packets) + received during this sampling interval." + ::= { etherHistoryEntry 6 } + + etherHistoryBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to the + broadcast address." + ::= { etherHistoryEntry 7 } + + etherHistoryMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to a + multicast address. Note that this number does not + include packets addressed to the broadcast address." + ::= { etherHistoryEntry 8 } + + etherHistoryCRCAlignErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + sampling interval that had a length (excluding + framing bits but including FCS octets) between + 64 and 1518 octets, inclusive, but were not an + integral number of octets in length or had a + bad Frame Check Sequence (FCS)." + ::= { etherHistoryEntry 9 } + + etherHistoryUndersizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were less than 64 octets long + (excluding framing bits but including FCS + octets) and were otherwise well formed." + ::= { etherHistoryEntry 10 } + + etherHistoryOversizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were longer than 1518 octets + (excluding framing bits but including FCS + octets) but were otherwise well formed." + ::= { etherHistoryEntry 11 } + + etherHistoryFragments OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received during this + sampling interval that were not an integral + number of octets in length or that + had a bad Frame Check Sequence (FCS), and + were less than 64 octets in length (excluding + framing bits but including FCS octets)." + ::= { etherHistoryEntry 12 } + + etherHistoryJabbers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were longer than 1518 octets + (excluding framing bits but including FCS octets), + and were not an integral number of octets in + length or had a bad Frame Check Sequence (FCS)." + ::= { etherHistoryEntry 13 } + + etherHistoryCollisions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment during this interval." + ::= { etherHistoryEntry 14 } + + etherHistoryUtilization OBJECT-TYPE + SYNTAX INTEGER (0..10000) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the mean physical layer + network utilization on this interface during this + interval, in hundredths of a percent." + ::= { etherHistoryEntry 15 } + + + -- The Alarm Group + + -- Implementation of the Alarm group is optional. + -- + -- The Alarm Group requires the implementation of the Event + -- group. + -- + -- The Alarm group periodically takes statistical samples from + -- variables in the probe and compares them to thresholds + -- that have been configured. The alarm table stores + -- configuration entries that each define a variable, + -- polling period, and threshold parameters. If a sample is + -- found to cross the threshold values, an event is + -- generated. Only variables that resolve to an ASN.1 + -- primitive type of INTEGER (INTEGER, Counter, + -- Gauge, or TimeTicks) may be monitored in this way. + -- + -- This function has a hysteresis mechanism to limit the + -- generation of events. This mechanism generates one event + -- as a threshold is crossed in the appropriate direction. + -- No more events are generated for that threshold until the + -- opposite threshold is crossed. + -- + -- In the case of a sampling a deltaValue, a probe may + -- implement this mechanism with more precision if it takes + -- a delta sample twice per period, each time comparing the + -- sum of the latest two samples to the threshold. This + -- allows the detection of threshold crossings + + -- that span the sampling boundary. Note that this does not + -- require any special configuration of the threshold value. + -- It is suggested that probes implement this more precise + -- algorithm. + + alarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of alarm entries." + ::= { alarm 1 } + + alarmEntry OBJECT-TYPE + SYNTAX AlarmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up a periodic checking + for alarm conditions." + INDEX { alarmIndex } + ::= { alarmTable 1 } + + AlarmEntry ::= SEQUENCE { + alarmIndex INTEGER (1..65535), + alarmInterval INTEGER, + alarmVariable OBJECT IDENTIFIER, + alarmSampleType INTEGER, + alarmValue INTEGER, + alarmStartupAlarm INTEGER, + alarmRisingThreshold INTEGER, + alarmFallingThreshold INTEGER, + alarmRisingEventIndex INTEGER (1..65535), + alarmFallingEventIndex INTEGER (1..65535), + alarmOwner OwnerString, + alarmStatus INTEGER + } + + alarmIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + alarm table. Each such entry defines a + diagnostic sample at a particular interval + for an object on the device." + ::= { alarmEntry 1 } + + alarmInterval OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interval in seconds over which the data is + sampled and compared with the rising and falling + thresholds. When setting this variable, care + should be given to ensure that the variable being + monitored will not exceed 2^31 - 1 and roll + over the alarmValue object during the interval. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 2 } + + alarmVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The object identifier of the particular variable to + be sampled. Only variables that resolve to an ASN.1 + primitive type of INTEGER (INTEGER, Counter, Gauge, + or TimeTicks) may be sampled. + + Because SNMP access control is articulated entirely + in terms of the contents of MIB views, no access + control mechanism exists that can restrict the value of + this object to identify only those objects that exist + in a particular MIB view. Because there is thus no + acceptable means of restricting the read access that + could be obtained through the alarm mechanism, the + probe must only grant write access to this object in + those views that have read access to all objects on + the probe. + + During a set operation, if the supplied variable + name is not available in the selected MIB view, a + badValue error must be returned. If at any time + the variable name of an established alarmEntry is + no longer available in the selected MIB view, the + probe must change the status of this alarmEntry + to invalid(4). + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 3 } + + alarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the + thresholds. If the value of this object is + absoluteValue(1), the value of the selected variable + will be compared directly with the thresholds at the + end of the sampling interval. If the value of this + object is deltaValue(2), the value of the selected + variable at the last sample will be subtracted from + the current value, and the difference compared with + the thresholds. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 4 } + + alarmValue OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the statistic during the last sampling + period. The value during the current sampling period + is not made available until the period is completed." + ::= { alarmEntry 5 } + + alarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The alarm that may be sent when this entry is first + set to valid. If the first sample after this entry + becomes valid is greater than or equal to the + risingThreshold and alarmStartupAlarm is equal to + risingAlarm(1) or risingOrFallingAlarm(3), then a + single rising alarm will be generated. If the first + sample after this entry becomes valid is less than + or equal to the fallingThreshold and + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3), then a single falling + alarm will be generated. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 6 } + + alarmRisingThreshold OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for the sampled statistic. When the + current sampled value is greater than or equal to + this threshold, and the value at the last sampling + interval was less than this threshold, a single + event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is greater + than or equal to this threshold and the associated + alarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event + will not be generated until the sampled value + falls below this threshold and reaches the + alarmFallingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 7 } + + alarmFallingThreshold OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for the sampled statistic. When the + current sampled value is less than or equal to + this threshold, and the value at the last sampling + interval was greater than this threshold, a single + event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is less than or + equal to this threshold and the associated + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event + will not be generated until the sampled value + rises above this threshold and reaches the + alarmRisingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 8 } + + alarmRisingEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index of the eventEntry that is + used when a rising threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 9 } + + alarmFallingEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index of the eventEntry that is + used when a falling threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 10 } + + alarmOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { alarmEntry 11 } + + alarmStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this alarm entry." + ::= { alarmEntry 12 } + + + -- The Host Group + + -- Implementation of the Host group is optional. + -- + -- The host group discovers new hosts on the network by + -- keeping a list of source and destination MAC Addresses seen + -- in good packets. For each of these addresses, the host + -- group keeps a set of statistics. The hostControlTable + -- controls which interfaces this function is performed on, + -- and contains some information about the process. On + -- behalf of each hostControlEntry, data is collected on an + -- interface and placed both the hostTable and the + -- hostTimeTable. If the monitoring device finds itself + -- short of resources, it may delete entries as needed. It + -- is suggested that the device delete the least recently + -- used entries first. + + -- The hostTable contains entries for each address + -- discovered on a particular interface. Each entry + -- contains statistical data about that host. This table + -- is indexed by the MAC address of the host, through + -- which a random access may be achieved. + + -- The hostTimeTable contains data in the same format as the + -- hostTable, and must contain the same set of hosts, but is + -- indexed using hostTimeCreationOrder rather than hostAddress. + -- The hostTimeCreationOrder is an integer which reflects + -- the relative order in which a particular entry was + + -- discovered and thus inserted into the table. As this + -- order, and thus index, is among those entries currently + -- in the table, the index for a particular entry may change + -- if an (earlier) entry is deleted. Thus the association + -- between hostTimeCreationOrder and hostTimeEntry may be + -- broken at any time. + + -- The hostTimeTable has two important uses. The first is the + -- fast download of this potentially large table. Because the + -- index of this table runs from 1 to the size of the table, + -- inclusive, its values are predictable. This allows very + -- efficient packing of variables into SNMP PDU's and allows + -- a table transfer to have multiple packets outstanding. + -- These benefits increase transfer rates tremendously. + + -- The second use of the hostTimeTable is the efficient + -- discovery by the management station of new entries added + -- to the table. After the management station has + -- downloaded the entire table, it knows that new entries + -- will be added immediately after the end of the current + -- table. It can thus detect new entries there + -- and retrieve them easily. + + -- Because the association between hostTimeCreationOrder and + -- hostTimeEntry may be broken at any time, the management + -- station must monitor the related hostControlLastDeleteTime + -- object. When the management station thus detects a deletion, + -- it must assume that any such associations have been broken, + -- and invalidate any it has stored locally. This includes + -- restarting any download of the hostTimeTable that may have + -- been in progress, as well as rediscovering the end of the + -- hostTimeTable so that it may detect new entries. If the + -- management station does not detect the broken association, + -- it may continue to refer to a particular host by its + -- creationOrder while unwittingly retrieving the data + -- associated with another host entirely. If this happens + -- while downloading the host table, the management station + -- may fail to download all of the entries in the table. + + + hostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of host table control entries." + ::= { hosts 1 } + + hostControlEntry OBJECT-TYPE + SYNTAX HostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up the discovery of + hosts on a particular interface and the collection + of statistics about these hosts." + INDEX { hostControlIndex } + ::= { hostControlTable 1 } + + HostControlEntry ::= SEQUENCE { + hostControlIndex INTEGER (1..65535), + hostControlDataSource OBJECT IDENTIFIER, + hostControlTableSize INTEGER, + hostControlLastDeleteTime TimeTicks, + hostControlOwner OwnerString, + hostControlStatus INTEGER + } + + hostControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + hostControl table. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + hostTable and the hostTimeTable on behalf of this + hostControlEntry." + ::= { hostControlEntry 1 } + + hostControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data for + this instance of the host function. This source + can be any interface on this device. In order + to identify a particular interface, this object shall + identify the instance of the ifIndex object, defined + in [4,6], for the desired interface. For example, + if an entry were to receive data from interface #1, + this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hostControlStatus object is equal to valid(1)." + ::= { hostControlEntry 2 } + + hostControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hostEntries in the hostTable and the + hostTimeTable associated with this hostControlEntry." + ::= { hostControlEntry 3 } + + hostControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the hostTable + associated with this hostControlEntry. If no + deletions have occurred, this value shall be zero." + ::= { hostControlEntry 4 } + + hostControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hostControlEntry 5 } + + hostControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hostControl entry. + + If this object is not equal to valid(1), all + associated entries in the hostTable, + hostTimeTable, and the hostTopNTable shall be + deleted by the agent." + ::= { hostControlEntry 6 } + + hostTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of host entries." + ::= { hosts 2 } + + hostEntry OBJECT-TYPE + SYNTAX HostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular host + that has been discovered on an interface of this + device." + INDEX { hostIndex, hostAddress } + ::= { hostTable 1 } + + HostEntry ::= SEQUENCE { + hostAddress OCTET STRING, + hostCreationOrder INTEGER (1..65535), + hostIndex INTEGER (1..65535), + hostInPkts Counter, + hostOutPkts Counter, + hostInOctets Counter, + hostOutOctets Counter, + hostOutErrors Counter, + hostOutBroadcastPkts Counter, + hostOutMulticastPkts Counter + } + + hostAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostEntry 1 } + + hostCreationOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that defines the relative ordering of + the creation time of hosts captured for a + particular hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added + earlier have a lower index value than entries added + later. + + It is important to note that the order for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTable. By observing + this variable, the management station may detect + the circumstances where a previous association + between a value of hostCreationOrder + and a hostEntry may no longer hold." + ::= { hostEntry 2 } + + hostIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostEntry 3 } + + hostInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the hostTable." + ::= { hostEntry 4 } + + hostOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets including errors transmitted + by this address since it was added to the hostTable." + ::= { hostEntry 5 } + + hostInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTable (excluding + framing bits but including FCS octets), except for + those octets in packets that contained errors." + ::= { hostEntry 6 } + + hostOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the hostTable (excluding + framing bits but including FCS octets), including + those octets in packets that contained errors." + ::= { hostEntry 7 } + + hostOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted by this + address since this host was added to the hostTable." + ::= { hostEntry 8 } + + hostOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTable." + ::= { hostEntry 9 } + + hostOutMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostEntry 10 } + + + -- host Time Table + + hostTimeTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of time-ordered host table entries." + ::= { hosts 3 } + + hostTimeEntry OBJECT-TYPE + SYNTAX HostTimeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular host + that has been discovered on an interface of this + device. This collection includes the relative + ordering of the creation time of this object." + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeTable 1 } + + HostTimeEntry ::= SEQUENCE { + hostTimeAddress OCTET STRING, + hostTimeCreationOrder INTEGER (1..65535), + hostTimeIndex INTEGER (1..65535), + hostTimeInPkts Counter, + hostTimeOutPkts Counter, + hostTimeInOctets Counter, + hostTimeOutOctets Counter, + hostTimeOutErrors Counter, + hostTimeOutBroadcastPkts Counter, + hostTimeOutMulticastPkts Counter + } + + hostTimeAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostTimeEntry 1 } + + hostTimeCreationOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTime table among those entries associated + with the same hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added + earlier have a lower index value than entries added + later. Thus the management station has the ability + to learn of new entries added to this table without + downloading the entire table. + + It is important to note that the index for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTimeTable. By observing + this variable, the management station may detect + the circumstances where a download of the table + may have missed entries, and where a previous + association between a value of hostTimeCreationOrder + and a hostTimeEntry may no longer hold." + ::= { hostTimeEntry 2 } + + hostTimeIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostTimeEntry 3 } + + hostTimeInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the hostTimeTable." + ::= { hostTimeEntry 4 } + + hostTimeOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets including errors transmitted + by this address since it was added to the + hostTimeTable." + ::= { hostTimeEntry 5 } + + hostTimeInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTimeTable (excluding + framing bits but including FCS octets), except for + those octets in packets that contained errors." + ::= { hostTimeEntry 6 } + + hostTimeOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + octets in packets that contained errors." + ::= { hostTimeEntry 7 } + + hostTimeOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted by this + address since this host was added to the + hostTimeTable." + ::= { hostTimeEntry 8 } + + hostTimeOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 9 } + + hostTimeOutMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTimeTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostTimeEntry 10 } + + + -- The Host Top "N" Group + + -- Implementation of the Host Top N group is optional. + -- + -- The Host Top N group requires the implementation of the + -- host group. + -- + -- The Host Top N group is used to prepare reports that + -- describe the hosts that top a list ordered by one of + -- their statistics. The available statistics are samples + -- of one of their base statistics, over an interval + -- specified by the management station. Thus, these + -- statistics are rate based. The management + -- station also selects how many such hosts are reported. + + -- The hostTopNControlTable is used to initiate the generation + -- of such a report. The management station may select the + -- parameters of such a report, such as which interface, + -- which statistic, how many hosts, and the start and stop + -- times of the sampling. When the report is prepared, + -- entries are created in the hostTopNTable associated with + -- the relevant hostTopNControlEntry. These entries are + + -- static for each report after it has been prepared. + + hostTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of top N host control entries." + ::= { hostTopN 1 } + + hostTopNControlEntry OBJECT-TYPE + SYNTAX HostTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N hosts according to several + metrics." + INDEX { hostTopNControlIndex } + ::= { hostTopNControlTable 1 } + + HostTopNControlEntry ::= SEQUENCE { + hostTopNControlIndex INTEGER (1..65535), + hostTopNHostIndex INTEGER (1..65535), + hostTopNRateBase INTEGER, + hostTopNTimeRemaining INTEGER, + hostTopNDuration INTEGER, + hostTopNRequestedSize INTEGER, + hostTopNGrantedSize INTEGER, + hostTopNStartTime TimeTicks, + hostTopNOwner OwnerString, + hostTopNStatus INTEGER + } + + hostTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the hostTopNControl table. Each such + entry defines one top N report prepared for + one interface." + ::= { hostTopNControlEntry 1 } + + hostTopNHostIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The host table for which a top N report will be + prepared on behalf of this entry. The host table + identified by a particular value of this index is + associated with the same host table as identified + by the same value of hostIndex. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 2 } + + hostTopNRateBase OBJECT-TYPE + SYNTAX INTEGER { + hostTopNInPkts(1), + hostTopNOutPkts(2), + hostTopNInOctets(3), + hostTopNOutOctets(4), + hostTopNOutErrors(5), + hostTopNOutBroadcastPkts(6), + hostTopNOutMulticastPkts(7) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The variable for each host that the hostTopNRate + variable is based upon. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 3 } + + hostTopNTimeRemaining OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report, which is loaded into the associated + hostTopNDuration object. + + When this object is set to a non-zero value, any + associated hostTopNEntries shall be made + inaccessible by the monitor. While the value of this + object is non-zero, it decrements by one per second + until it reaches zero. During this time, all + associated hostTopNEntries shall remain + inaccessible. At the time that this object + decrements to zero, the report is made + accessible in the hostTopNTable. Thus, the hostTopN + table needs to be created only at the end of the + collection interval." + DEFVAL { 0 } + ::= { hostTopNControlEntry 4 } + + hostTopNDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval, or if this + report is currently being collected, the number + of seconds that this report is being collected + during this sampling interval. + + When the associated hostTopNTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the hostTopNTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this hostTopNControlEntry." + DEFVAL { 0 } + ::= { hostTopNControlEntry 5 } + + hostTopNRequestedSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of hosts requested for the top N + table. + + When this object is created or modified, the probe + should set hostTopNGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 10 } + ::= { hostTopNControlEntry 6 } + + hostTopNGrantedSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of hosts in the top N table. + + When the associated hostTopNRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as is + possible for the particular implementation and + available resources. The probe must not lower this + value except as a result of a set to the associated + hostTopNRequestedSize object. + + Hosts with the highest value of hostTopNRate shall be + placed in this table in decreasing order of this rate + until there is no more room or until there are no more + hosts." + ::= { hostTopNControlEntry 7 } + + hostTopNStartTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated hostTopNTimeRemaining object was + modified to start the requested report." + ::= { hostTopNControlEntry 8 } + + hostTopNOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hostTopNControlEntry 9 } + + hostTopNStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hostTopNControl entry. + If this object is not equal to valid(1), all + associated hostTopNEntries shall be deleted by + the agent." + ::= { hostTopNControlEntry 10 } + + hostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of top N host entries." + ::= { hostTopN 2 } + + hostTopNEntry OBJECT-TYPE + SYNTAX HostTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of statistics for a host that is part of a + top N report." + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNTable 1 } + + HostTopNEntry ::= SEQUENCE { + hostTopNReport INTEGER (1..65535), + hostTopNIndex INTEGER (1..65535), + hostTopNAddress OCTET STRING, + hostTopNRate INTEGER + } + + hostTopNReport OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the top N report of which + this entry is a part. The set of hosts + identified by a particular value of this + object is part of the same report as identified + by the same value of the hostTopNControlIndex object." + ::= { hostTopNEntry 1 } + + hostTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTopN table among those in the same report. + This index is between 1 and N, where N is the + number of entries in this table. Increasing values + of hostTopNIndex shall be assigned to entries with + decreasing values of hostTopNRate until index N + is assigned to the entry with the lowest value of + hostTopNRate or there are no more hostTopNEntries." + ::= { hostTopNEntry 2 } + + hostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostTopNEntry 3 } + + hostTopNRate OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNEntry 4 } + + + -- The Matrix Group + + -- Implementation of the Matrix group is optional. + -- + -- The Matrix group consists of the matrixControlTable, + -- matrixSDTable and the matrixDSTable. These tables + -- store statistics for a particular conversation between + -- two addresses. As the device detects a new conversation, + -- including those to a non-unicast address, it creates a + -- new entry in both of the matrix tables. + -- It must only create new entries based on information + -- received in good packets. If the monitoring device finds + -- itself short of resources, it may delete entries as needed. + -- It is suggested that the device delete the least recently + -- used entries first. + + matrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information entries for the + traffic matrix on each interface." + ::= { matrix 1 } + + matrixControlEntry OBJECT-TYPE + SYNTAX MatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a traffic matrix on a + particular interface." + INDEX { matrixControlIndex } + ::= { matrixControlTable 1 } + + MatrixControlEntry ::= SEQUENCE { + matrixControlIndex INTEGER (1..65535), + matrixControlDataSource OBJECT IDENTIFIER, + matrixControlTableSize INTEGER, + matrixControlLastDeleteTime TimeTicks, + matrixControlOwner OwnerString, + matrixControlStatus INTEGER + } + + matrixControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + matrixControl table. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + matrixSDTable and the matrixDSTable on behalf of this + matrixControlEntry." + ::= { matrixControlEntry 1 } + + matrixControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of + the data from which this entry creates a traffic matrix. + This source can be any interface on this device. In + order to identify a particular interface, this object + shall identify the instance of the ifIndex object, + defined in [4,6], for the desired interface. For + example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + matrixControlStatus object is equal to valid(1)." + ::= { matrixControlEntry 2 } + + matrixControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of matrixSDEntries in the matrixSDTable + for this interface. This must also be the value of + the number of entries in the matrixDSTable for this + interface." + ::= { matrixControlEntry 3 } + + matrixControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the matrixSDTable + or matrixDSTable associated with this + matrixControlEntry. + If no deletions have occurred, this value shall be + zero." + ::= { matrixControlEntry 4 } + + matrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { matrixControlEntry 5 } + + matrixControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this matrixControl entry. + + If this object is not equal to valid(1), all + associated entries in the matrixSDTable and the + matrixDSTable shall be deleted by the agent." + ::= { matrixControlEntry 6 } + + matrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries indexed by + source and destination MAC address." + ::= { matrix 2 } + + matrixSDEntry OBJECT-TYPE + SYNTAX MatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface." + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDTable 1 } + + MatrixSDEntry ::= SEQUENCE { + matrixSDSourceAddress OCTET STRING, + matrixSDDestAddress OCTET STRING, + matrixSDIndex INTEGER (1..65535), + matrixSDPkts Counter, + matrixSDOctets Counter, + matrixSDErrors Counter + } + + matrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The source physical address." + ::= { matrixSDEntry 1 } + + matrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The destination physical address." + ::= { matrixSDEntry 2 } + + matrixSDIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixSDEntry 3 } + + matrixSDPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes error packets)." + ::= { matrixSDEntry 4 } + + matrixSDOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDEntry 5 } + + matrixSDErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted from + the source address to the destination address." + ::= { matrixSDEntry 6 } + + + -- Traffic matrix tables from destination to source + + matrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries indexed by + destination and source MAC address." + ::= { matrix 3 } + + matrixDSEntry OBJECT-TYPE + SYNTAX MatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for communications between + two address on a particular interface." + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSTable 1 } + + MatrixDSEntry ::= SEQUENCE { + matrixDSSourceAddress OCTET STRING, + matrixDSDestAddress OCTET STRING, + matrixDSIndex INTEGER (1..65535), + matrixDSPkts Counter, + matrixDSOctets Counter, + matrixDSErrors Counter + } + + matrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The source physical address." + ::= { matrixDSEntry 1 } + + matrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The destination physical address." + ::= { matrixDSEntry 2 } + + matrixDSIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixDSEntry 3 } + + matrixDSPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes error packets)." + ::= { matrixDSEntry 4 } + + matrixDSOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSEntry 5 } + + matrixDSErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted from + the source address to the destination address." + ::= { matrixDSEntry 6 } + + + -- The Filter Group + + -- Implementation of the Filter group is optional. + + -- + -- The Filter group allows packets to be captured with an + -- arbitrary filter expression. A logical data and + -- event stream or "channel" is formed by the packets + -- that match the filter expression. + -- + -- This filter mechanism allows the creation of an arbitrary + -- logical expression with which to filter packets. Each + -- filter associated with a channel is OR'ed with the others. + -- Within a filter, any bits checked in the data and status are + -- AND'ed with respect to other bits in the same filter. The + -- NotMask also allows for checking for inequality. Finally, + -- the channelAcceptType object allows for inversion of the + -- whole equation. + -- + -- The channel can be turned on or off, and can also + -- generate events when packets pass through it. + + filterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packet filter entries." + ::= { filter 1 } + + filterEntry OBJECT-TYPE + SYNTAX FilterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters for a packet filter applied on a + particular interface." + INDEX { filterIndex } + ::= { filterTable 1 } + + FilterEntry ::= SEQUENCE { + filterIndex INTEGER (1..65535), + filterChannelIndex INTEGER (1..65535), + filterPktDataOffset INTEGER, + filterPktData OCTET STRING, + filterPktDataMask OCTET STRING, + filterPktDataNotMask OCTET STRING, + filterPktStatus INTEGER, + filterPktStatusMask INTEGER, + filterPktStatusNotMask INTEGER, + filterOwner OwnerString, + filterStatus INTEGER + } + + filterIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the filter table. Each such entry defines + one filter that is to be applied to every packet + received on an interface." + ::= { filterEntry 1 } + + filterChannelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the channel of which this + filter is a part. The filters identified by a + particular value of this object are associated + with the same channel as identified by the same + value of the channelIndex object." + ::= { filterEntry 2 } + + filterPktDataOffset OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The offset from the beginning of each packet where + a match of packet data will be attempted. This offset + is measured from the point in the physical layer + packet after the framing bits, if any. For example, + in an Ethernet frame, this point is at the beginning + of the destination MAC address. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + DEFVAL { 0 } + ::= { filterEntry 3 } + + filterPktData OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The data that is to be matched with the input packet. + For each packet received, this filter and the + accompanying filterPktDataMask and + filterPktDataNotMask will be adjusted for the + offset. The only bits relevant to this + match algorithm are those that have the corresponding + filterPktDataMask bit equal to one. The following + three rules are then applied to every packet: + + (1) If the packet is too short and does not have data + corresponding to part of the filterPktData, the + packet will fail this data match. + + (2) For each relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to + zero, if the bit from the packet is not equal to + the corresponding bit from the filterPktData, + then the packet will fail this data match. + + (3) If for every relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to one, + the bit from the packet is equal to the + corresponding bit from the filterPktData, then + the packet will fail this data match. + + Any packets that have not failed any of the three + matches above have passed this data match. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 4 } + + filterPktDataMask OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The mask that is applied to the match process. + After adjusting this mask for the offset, only those + bits in the received packet that correspond to bits + set in this mask are relevant for further processing + by the match algorithm. The offset is applied to + filterPktDataMask in the same way it is applied to + the filter. For the purposes of the matching + algorithm, if the associated filterPktData object + is longer than this mask, this mask is conceptually + extended with '1' bits until it reaches the + length of the filterPktData object. + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 5 } + + filterPktDataNotMask OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The inversion mask that is applied to the match + process. After adjusting this mask for the offset, + those relevant bits in the received packet that + correspond to bits cleared in this mask must all + be equal to their corresponding bits in the + filterPktData object for the packet to be accepted. + In addition, at least one of those relevant + bits in the received packet that correspond to bits + set in this mask must be different to its + corresponding bit in the filterPktData object. + + For the purposes of the matching algorithm, if + the associated filterPktData object is longer than + this mask, this mask is conceptually extended with + '0' bits until it reaches the length of the + filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 6 } + + filterPktStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status that is to be matched with the input + packet. The only bits relevant to this match + algorithm are those that have the corresponding + filterPktStatusMask bit equal to one. + + The following two rules are then applied to every + packet: + + (1) For each relevant bit from the packet status + with the corresponding filterPktStatusNotMask + bit set to zero, if the bit from the packet + status is not equal to the corresponding bit + from the filterPktStatus, then the packet will + fail this status match. + + (2) If for every relevant bit from the packet status + with the corresponding filterPktStatusNotMask + bit set to one, the bit from the packet status + is equal to the corresponding bit from the + filterPktStatus, then the packet will fail + this status match. + + Any packets that have not failed either of the two + matches above have passed this status match. + + The value of the packet status is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + The errors and the bits that represent them are + dependent on the media type of the interface that + this channel is receiving packets from. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment + error + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this + object will have other media-specific errors defined. + + For the purposes of this status matching algorithm, if + the packet status is longer than this + object, filterPktStatus this object is conceptually + extended with '0' bits until it reaches the size of + the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 7 } + + filterPktStatusMask OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The mask that is applied to the status match process. + Only those bits in the received packet that correspond + to bits set in this mask are relevant for further + processing by the status match algorithm. For the + purposes of the matching algorithm, if the + associated filterPktStatus object is longer than + this mask, this mask is conceptually extended with + '1' bits until it reaches the size of the + filterPktStatus. In addition, if a packet status is + longer than this mask, this mask is conceptually + extended with '0' bits until it reaches the size of + the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 8 } + + filterPktStatusNotMask OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The inversion mask that is applied to the status match + process. Those relevant bits in the received packet + status that correspond to bits cleared in this mask + must all be equal to their corresponding bits in the + filterPktStatus object for the packet to be accepted. + In addition, at least one of those relevant bits in the + received packet status that correspond to bits set in + this mask must be different to its corresponding bit + in the filterPktStatus object for the packet to be + accepted. + + For the purposes of the matching algorithm, if the + associated filterPktStatus object or a packet status + is longer than this mask, this mask is conceptually + extended with '0' bits until it reaches the longer of + the lengths of the filterPktStatus object and the + packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 9 } + + filterOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { filterEntry 10 } + + filterStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this filter entry." + ::= { filterEntry 11 } + + channelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packet channel entries." + ::= { filter 2 } + + channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters for a packet channel applied on a + particular interface." + INDEX { channelIndex } + ::= { channelTable 1 } + + ChannelEntry ::= SEQUENCE { + channelIndex INTEGER (1..65535), + channelIfIndex INTEGER (1..65535), + channelAcceptType INTEGER, + channelDataControl INTEGER, + channelTurnOnEventIndex INTEGER (0..65535), + channelTurnOffEventIndex INTEGER (0..65535), + channelEventIndex INTEGER (0..65535), + channelEventStatus INTEGER, + channelMatches Counter, + channelDescription DisplayString (SIZE (0..127)), + channelOwner OwnerString, + channelStatus INTEGER + } + + channelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the channel table. Each such + entry defines one channel, a logical data + and event stream." + ::= { channelEntry 1 } + + channelIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + to which the associated filters are applied to allow + data into this channel. The interface identified by + a particular value of this object is the same + interface as identified by the same value of the + ifIndex object, defined in [4,6]. The filters in + this group are applied to all packets on the local + network segment attached to the identified + interface. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 2 } + + channelAcceptType OBJECT-TYPE + SYNTAX INTEGER { + acceptMatched(1), + acceptFailed(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls the action of the filters + associated with this channel. If this object is equal + to acceptMatched(1), packets will be accepted to this + channel if they are accepted by both the packet data + and packet status matches of an associated filter. If + this object is equal to acceptFailed(2), packets will + be accepted to this channel only if they fail either + the packet data match or the packet status match of + each of the associated filters. + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 3 } + + channelDataControl OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls the flow of data through this + channel. If this object is on(1), data, status and + events flow through this channel. If this object is + off(2), data, status and events will not flow through + this channel." + DEFVAL { off } + ::= { channelEntry 4 } + + channelTurnOnEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from off to on when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOnEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 5 } + + channelTurnOffEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from on to off when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOffEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 6 } + + channelEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to be generated when the + associated channelDataControl is on and a packet + is matched. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 7 } + + channelEventStatus OBJECT-TYPE + SYNTAX INTEGER { + eventReady(1), + eventFired(2), + eventAlwaysReady(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The event status of this channel. + + If this channel is configured to generate events + when packets are matched, a means of controlling + the flow of those events is often needed. When + this object is equal to eventReady(1), a single + event may be generated, after which this object + will be set by the probe to eventFired(2). While + in the eventFired(2) state, no events will be + generated until the object is modified to + eventReady(1) (or eventAlwaysReady(3)). The + management station can thus easily respond to a + notification of an event by re-enabling this object. + + If the management station wishes to disable this + flow control and allow events to be generated + at will, this object may be set to + eventAlwaysReady(3). Disabling the flow control + is discouraged as it can result in high network + traffic or other performance problems." + DEFVAL { eventReady } + ::= { channelEntry 8 } + + channelMatches OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this channel has matched a packet. + Note that this object is updated even when + channelDataControl is set to off." + ::= { channelEntry 9 } + + channelDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A comment describing this channel." + ::= { channelEntry 10 } + + channelOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { channelEntry 11 } + + channelStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this channel entry." + ::= { channelEntry 12 } + + + -- The Packet Capture Group + + -- Implementation of the Packet Capture group is optional. + -- + -- The Packet Capture Group requires implementation of the + -- Filter Group. + -- + -- The Packet Capture group allows packets to be captured + -- upon a filter match. The bufferControlTable controls + -- the captured packets output from a channel that is + -- associated with it. The captured packets are placed + -- in entries in the captureBufferTable. These entries are + -- associated with the bufferControlEntry on whose behalf they + -- were stored. + + bufferControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF BufferControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of buffers control entries." + ::= { capture 1 } + + bufferControlEntry OBJECT-TYPE + SYNTAX BufferControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the collection of + a stream of packets that have matched filters." + INDEX { bufferControlIndex } + ::= { bufferControlTable 1 } + + BufferControlEntry ::= SEQUENCE { + bufferControlIndex INTEGER (1..65535), + bufferControlChannelIndex INTEGER (1..65535), + bufferControlFullStatus INTEGER, + bufferControlFullAction INTEGER, + bufferControlCaptureSliceSize INTEGER, + bufferControlDownloadSliceSize INTEGER, + bufferControlDownloadOffset INTEGER, + bufferControlMaxOctetsRequested INTEGER, + bufferControlMaxOctetsGranted INTEGER, + bufferControlCapturedPackets INTEGER, + bufferControlTurnOnTime TimeTicks, + bufferControlOwner OwnerString, + bufferControlStatus INTEGER + } + + bufferControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the bufferControl table. The value of this + index shall never be zero. Each such + entry defines one set of packets that is + captured and controlled by one or more filters." + ::= { bufferControlEntry 1 } + + bufferControlChannelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An index that identifies the channel that is the + source of packets for this bufferControl table. + The channel identified by a particular value of this + index is the same as identified by the same value of + the channelIndex object. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + ::= { bufferControlEntry 2 } + + bufferControlFullStatus OBJECT-TYPE + SYNTAX INTEGER { + spaceAvailable(1), + full(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object shows whether the buffer has room to + accept new packets or if it is full. + + If the status is spaceAvailable(1), the buffer is + accepting new packets normally. If the status is + full(2) and the associated bufferControlFullAction + object is wrapWhenFull, the buffer is accepting new + packets by deleting enough of the oldest packets + to make room for new ones as they arrive. Otherwise, + if the status is full(2) and the + bufferControlFullAction object is lockWhenFull, + then the buffer has stopped collecting packets. + + When this object is set to full(2) the probe must + not later set it to spaceAvailable(1) except in the + case of a significant gain in resources such as + an increase of bufferControlOctetsGranted. In + particular, the wrap-mode action of deleting old + packets to make room for newly arrived packets + must not affect the value of this object." + ::= { bufferControlEntry 3 } + + bufferControlFullAction OBJECT-TYPE + SYNTAX INTEGER { + lockWhenFull(1), + wrapWhenFull(2) -- FIFO + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Controls the action of the buffer when it + reaches the full status. When in the lockWhenFull(1) + state a packet is added to the buffer that + fills the buffer, the bufferControlFullStatus will + be set to full(2) and this buffer will stop capturing + packets." + ::= { bufferControlEntry 4 } + + bufferControlCaptureSliceSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of octets of each packet + that will be saved in this capture buffer. + For example, if a 1500 octet packet is received by + the probe and this object is set to 500, then only + 500 octets of the packet will be stored in the + associated capture buffer. If this variable is set + to 0, the capture buffer will save as many octets + as is possible. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + DEFVAL { 100 } + ::= { bufferControlEntry 5 } + + bufferControlDownloadSliceSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of octets of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer, the associated + bufferControlDownloadOffset is 0, and this + object is set to 100, then the captureBufferPacket + object that contains the packet will contain only + the first 100 octets of the packet. + + A prudent manager will take into account possible + interoperability or fragmentation problems that may + occur if the download slice size is set too large. + In particular, conformant SNMP implementations are not + required to accept messages whose length exceeds 484 + octets, although they are encouraged to support larger + datagrams whenever feasible." + DEFVAL { 100 } + ::= { bufferControlEntry 6 } + + bufferControlDownloadOffset OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The offset of the first octet of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer and this object is set to + 100, then the captureBufferPacket object that + contains the packet will contain bytes starting + 100 octets into the packet." + DEFVAL { 0 } + ::= { bufferControlEntry 7 } + + bufferControlMaxOctetsRequested OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested maximum number of octets to be + saved in this captureBuffer, including any + implementation-specific overhead. If this variable + is set to -1, the capture buffer will save as many + octets as is possible. + + When this object is created or modified, the probe + should set bufferControlMaxOctetsGranted as closely + to this object as is possible for the particular probe + implementation and available resources. However, if + the object has the special value of -1, the probe + must set bufferControlMaxOctetsGranted to -1." + DEFVAL { -1 } + ::= { bufferControlEntry 8 } + + bufferControlMaxOctetsGranted OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of octets that can be + saved in this captureBuffer, including overhead. + If this variable is -1, the capture buffer will save + as many octets as possible. + + When the bufferControlMaxOctetsRequested object is + created or modified, the probe should set this object + as closely to the requested value as is possible for + the particular probe implementation and available + resources. However, if the request object has the + special value of -1, the probe must set this object + to -1. The probe must not lower this value except + as a result of a modification to the associated + bufferControlMaxOctetsRequested object. + + When this maximum number of octets is reached + and a new packet is to be added to this + capture buffer and the corresponding + bufferControlFullAction is set to wrapWhenFull(2), + enough of the oldest packets associated with this + capture buffer shall be deleted by the agent so + that the new packet can be added. If the + corresponding bufferControlFullAction is set to + lockWhenFull(1), the new packet shall be discarded. + In either case, the probe must set + bufferControlFullStatus to full(2). + + When the value of this object changes to a value less + than the current value, entries are deleted from + the captureBufferTable associated with this + bufferControlEntry. Enough of the + oldest of these captureBufferEntries shall be + deleted by the agent so that the number of octets + used remains less than or equal to the new value of + this object. + + When the value of this object changes to a value greater + than the current value, the number of associated + captureBufferEntries may be allowed to grow." + ::= { bufferControlEntry 9 } + + bufferControlCapturedPackets OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets currently in this captureBuffer." + ::= { bufferControlEntry 10 } + + bufferControlTurnOnTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this capture buffer was + first turned on." + ::= { bufferControlEntry 11 } + + bufferControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { bufferControlEntry 12 } + + bufferControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this buffer Control Entry." + ::= { bufferControlEntry 13 } + + captureBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packets captured off of a channel." + ::= { capture 2 } + + captureBufferEntry OBJECT-TYPE + SYNTAX CaptureBufferEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A packet captured off of an attached network." + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferTable 1 } + + CaptureBufferEntry ::= SEQUENCE { + captureBufferControlIndex INTEGER (1..65535), + captureBufferIndex INTEGER, + captureBufferPacketID INTEGER, + captureBufferPacketData OCTET STRING, + captureBufferPacketLength INTEGER, + captureBufferPacketTime INTEGER, + captureBufferPacketStatus INTEGER + } + + captureBufferControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The index of the bufferControlEntry with which + this packet is associated." + ::= { captureBufferEntry 1 } + + captureBufferIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the captureBuffer table associated with a + particular bufferControlEntry. This index will + start at 1 and increase by one for each new packet + added with the same captureBufferControlIndex." + ::= { captureBufferEntry 2 } + + captureBufferPacketID OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that describes the order of packets + that are received on a particular interface. + The packetID of a packet captured on an + interface is defined to be greater than the + packetID's of all packets captured previously on + the same interface. As the captureBufferPacketID + object has a maximum positive value of 2^31 - 1, + any captureBufferPacketID object shall have the + value of the associated packet's packetID mod 2^31." + ::= { captureBufferEntry 3 } + + captureBufferPacketData OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The data inside the packet, starting at the beginning + of the packet plus any offset specified in the + associated bufferControlDownloadOffset, including any + link level headers. The length of the data in this + object is the minimum of the length of the captured + packet minus the offset, the length of the associated + bufferControlCaptureSliceSize minus the offset, and the + associated bufferControlDownloadSliceSize. If this + minimum is less than zero, this object shall have a + length of zero." + ::= { captureBufferEntry 4 } + + captureBufferPacketLength OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The actual length (off the wire) of the packet stored + in this entry, including FCS octets." + ::= { captureBufferEntry 5 } + + captureBufferPacketTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of milliseconds that had passed since + this capture buffer was first turned on when this + packet was captured." + ::= { captureBufferEntry 6 } + + captureBufferPacketStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value which indicates the error status of this + packet. + + The value of this object is defined in the same way as + filterPacketStatus. The value is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment + error + 3 First packet in this capture buffer after + it was detected that some packets were + not processed correctly. + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined." + ::= { captureBufferEntry 7 } + + + -- The Event Group + + -- Implementation of the Event group is optional. + -- + -- The Event group controls the generation and notification + -- of events from this device. Each entry in the eventTable + -- describes the parameters of the event that can be triggered. + -- Each event entry is fired by an associated condition located + -- elsewhere in the MIB. An event entry may also be associated + -- with a function elsewhere in the MIB that will be executed + -- when the event is generated. For example, a channel may + -- be turned on or off by the firing of an event. + -- + -- Each eventEntry may optionally specify that a log entry + + -- be created on its behalf whenever the event occurs. + -- Each entry may also specify that notification should + -- occur by way of SNMP trap messages. In this case, the + -- community for the trap message is given in the associated + -- eventCommunity object. The enterprise and specific trap + -- fields of the trap are determined by the condition that + -- triggered the event. Three traps are defined in a companion + -- document: risingAlarm, fallingAlarm, and packetMatch. + -- If the eventTable is triggered by a condition specified + -- elsewhere, the enterprise and specific trap fields + -- must be specified for traps generated for that condition. + + eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of events to be generated." + ::= { event 1 } + + eventEntry OBJECT-TYPE + SYNTAX EventEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that describe an event to be + generated when certain conditions are met." + INDEX { eventIndex } + ::= { eventTable 1 } + + EventEntry ::= SEQUENCE { + eventIndex INTEGER (1..65535), + eventDescription DisplayString (SIZE (0..127)), + eventType INTEGER, + eventCommunity OCTET STRING (SIZE (0..127)), + eventLastTimeSent TimeTicks, + eventOwner OwnerString, + eventStatus INTEGER + } + + eventIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + event table. Each such entry defines one event that + is to be generated when the appropriate conditions + occur." + ::= { eventEntry 1 } + + eventDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A comment describing this event entry." + ::= { eventEntry 2 } + + eventType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + log(2), + snmp-trap(3), -- send an SNMP trap + log-and-trap(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of notification that the probe will make + about this event. In the case of log, an entry is + made in the log table for each event. In the case of + snmp-trap, an SNMP trap is sent to one or more + management stations." + ::= { eventEntry 3 } + + eventCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If an SNMP trap is to be sent, it will be sent to + the SNMP community specified by this octet string. + In the future this table will be extended to include + the party security mechanism. This object shall be + set to a string of length zero if it is intended that + that mechanism be used to specify the destination of + the trap." + ::= { eventEntry 4 } + + eventLastTimeSent OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this event + entry last generated an event. If this entry has + not generated any events, this value will be + zero." + ::= { eventEntry 5 } + + eventOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it. + + If this object contains a string starting with 'monitor' + and has associated entries in the log table, all + connected management stations should retrieve those + log entries, as they may have significance to all + management stations connected to this device" + ::= { eventEntry 6 } + + eventStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this event entry. + + If this object is not equal to valid(1), all associated + log entries shall be deleted by the agent." + ::= { eventEntry 7 } + + -- + logTable OBJECT-TYPE + SYNTAX SEQUENCE OF LogEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of events that have been logged." + ::= { event 2 } + + logEntry OBJECT-TYPE + SYNTAX LogEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of data describing an event that has been + logged." + INDEX { logEventIndex, logIndex } + ::= { logTable 1 } + + LogEntry ::= SEQUENCE { + logEventIndex INTEGER (1..65535), + logIndex INTEGER, + logTime TimeTicks, + logDescription DisplayString (SIZE (0..255)) + } + + logEventIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The event entry that generated this log + entry. The log identified by a particular + value of this index is associated with the same + eventEntry as identified by the same value + of eventIndex." + ::= { logEntry 1 } + + logIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the log table amongst those generated by the + same eventEntries. These indexes are + assigned beginning with 1 and increase by one + with each new log entry. The association + between values of logIndex and logEntries + is fixed for the lifetime of each logEntry. + The agent may choose to delete the oldest + instances of logEntry as required because of + lack of memory. It is an implementation-specific + matter as to when this deletion may occur." + ::= { logEntry 2 } + + logTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this log entry was + created." + ::= { logEntry 3 } + + logDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An implementation dependent description of the + event that activated this log entry." + ::= { logEntry 4 } + + END diff --git a/mibs/ietf/RFC1285-MIB b/mibs/ietf/RFC1285-MIB new file mode 100644 index 0000000..faad832 --- /dev/null +++ b/mibs/ietf/RFC1285-MIB @@ -0,0 +1,1870 @@ +RFC1285-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [7]. + + +-- this is the FDDI MIB module + +fddi OBJECT IDENTIFIER ::= { transmission 15 } + + +-- textual conventions + +FddiTime ::= INTEGER (0..2147483647) +-- This data type specifies octet units of 80 nanoseconds as +-- an integer value. It is used for Path Latency and +-- Synchronous Bandwidth values. The encoding is normal +-- integer representation (not twos complement). + +FddiResourceId ::= INTEGER (0..65535) +-- This data type is used to refer to an instance of a MAC, +-- PORT, PATH, or ATTACHMENT Resource ID. Indexing begins +-- at 1. Zero is used to indicate the absence of a resource. + +FddiSMTStationIdType ::= OCTET STRING (SIZE (8)) +-- The unique identifier for the FDDI station. This is a +-- string of 8 octets, represented as +-- X' yy yy xx xx xx xx xx xx' +-- with the low order 6 octet (xx) from a unique IEEE +-- assigned address. The high order two bits of the IEEE +-- address, the group address bit and the administration bit + +-- (Universal/Local) bit should both be zero. The first two +-- octets, the yy octets, are implementor-defined. +-- +-- The representation of the address portion of the station id +-- is in the IEEE (ANSI/IEEE P802.1A) canonical notation for +-- 48 bit addresses. The canonical form is a 6-octet string +-- where the first octet contains the first 8 bits of the +-- address, with the I/G(Individual/Group) address bit as the +-- least significant bit and the U/L (Universal/Local) bit +-- as the next more significant bit, and so on. Note that +-- addresses in the ANSI FDDI standard SMT frames are +-- represented in FDDI MAC order. + +FddiMACLongAddressType ::= OCTET STRING (SIZE (6)) +-- The representation of long MAC addresses as management +-- values is in the IEEE (ANSI/IEEE P802.1A) canonical +-- notation for 48 bit addresses. The canonical form is a +-- 6-octet string where the first octet contains the first 8 +-- bits of the address, with the I/G (Individual/Group) +-- address bit as the least significant bit and the U/L +-- (Universal/Local) bit as the next more significant bit, +-- and so on. Note that the addresses in the SMT frames are +-- represented in FDDI MAC order. + +-- groups in the FDDI MIB module + +snmpFddiSMT OBJECT IDENTIFIER ::= { fddi 1 } + +snmpFddiMAC OBJECT IDENTIFIER ::= { fddi 2 } + +snmpFddiPATH OBJECT IDENTIFIER ::= { fddi 3 } + +snmpFddiPORT OBJECT IDENTIFIER ::= { fddi 4 } + +snmpFddiATTACHMENT OBJECT IDENTIFIER ::= { fddi 5 } + +snmpFddiChipSets OBJECT IDENTIFIER ::= { fddi 6 } + + +-- the SMT group +-- Implementation of the SMT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +snmpFddiSMTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of SMT implementations (regardless of + their current state) on this network management + application entity. The value for this variable + must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { snmpFddiSMT 1 } + + +-- the SMT table + +snmpFddiSMTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of SMT entries. The number of entries is + given by the value of snmpFddiSMTNumber." + ::= { snmpFddiSMT 2 } + +snmpFddiSMTEntry OBJECT-TYPE + SYNTAX SnmpFddiSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An SMT entry containing information common to a + given SMT." + INDEX { snmpFddiSMTIndex } + ::= { snmpFddiSMTTable 1 } + +SnmpFddiSMTEntry ::= + SEQUENCE { + snmpFddiSMTIndex + INTEGER, + snmpFddiSMTStationId + FddiSMTStationIdType, + snmpFddiSMTOpVersionId + INTEGER, + snmpFddiSMTHiVersionId + INTEGER, + snmpFddiSMTLoVersionId + INTEGER, + snmpFddiSMTMACCt + INTEGER, + snmpFddiSMTNonMasterCt + INTEGER, + snmpFddiSMTMasterCt + INTEGER, + snmpFddiSMTPathsAvailable + INTEGER, + snmpFddiSMTConfigCapabilities + INTEGER, + snmpFddiSMTConfigPolicy + INTEGER, + snmpFddiSMTConnectionPolicy + INTEGER, + snmpFddiSMTTNotify + INTEGER, + snmpFddiSMTStatusReporting + INTEGER, + snmpFddiSMTECMState + INTEGER, + snmpFddiSMTCFState + INTEGER, + snmpFddiSMTHoldState + INTEGER, + snmpFddiSMTRemoteDisconnectFlag + INTEGER, + snmpFddiSMTStationAction + INTEGER + } + +snmpFddiSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each SMT. Its value ranges + between 1 and the value of snmpFddiSMTNumber. The + value for each SMT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiSMTEntry 1 } + +snmpFddiSMTStationId OBJECT-TYPE + SYNTAX FddiSMTStationIdType -- OCTET STRING (SIZE (8)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Uniquely identifies an FDDI station." + REFERENCE + "ANSI { fddiSMT 11 }" + ::= { snmpFddiSMTEntry 2 } + +snmpFddiSMTOpVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The version that this station is using for its + operation (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 13 }" + ::= { snmpFddiSMTEntry 3 } + +snmpFddiSMTHiVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The highest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 14 }" + ::= { snmpFddiSMTEntry 4 } + +snmpFddiSMTLoVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The lowest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 15 }" + ::= { snmpFddiSMTEntry 5 } + +snmpFddiSMTMACCt OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of MACs in the station or + concentrator." + REFERENCE + "ANSI { fddiSMT 21 }" + ::= { snmpFddiSMTEntry 6 } + +snmpFddiSMTNonMasterCt OBJECT-TYPE + SYNTAX INTEGER (0..2) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Non Master PORTs (A, B, or S PORTs) + in the station or concentrator." + REFERENCE + "ANSI { fddiSMT 22 }" + ::= { snmpFddiSMTEntry 7 } + +snmpFddiSMTMasterCt OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Master PORTs in a node. If the + node is not a concentrator, the value is zero." + REFERENCE + "ANSI { fddiSMT 23 }" + ::= { snmpFddiSMTEntry 8 } + +snmpFddiSMTPathsAvailable OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + in the station. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this node has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + + For example, a station having Primary and Local + PATHs available would have a value of 5 (2**0 + + 2**2)." + REFERENCE + "ANSI { fddiSMT 24 }" + ::= { snmpFddiSMTEntry 9 } + +snmpFddiSMTConfigCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates capabilities that are + present in the node. If 'holdAvailable' is + present, this indicates support of the optional + Hold Function (refer to ANSI SMT 9.4.3.2). If + 'CF-Wrap-AB' is present, this indicates that the + WRAP_AB state is forced. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + holdAvailable 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 25 }" + ::= { snmpFddiSMTEntry 10 } + +snmpFddiSMTConfigPolicy OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration policies + currently enforced in the node (refer to ANSI SMT + 9.4.3.2). The 'configurationHold' policy refers + to the Hold flag, and should not be present only + if the Hold function is supported. The 'CF-Wrap- + AB' policy refers to the CF_Wrap_AB flag. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + configurationHold 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 26 }" + ::= { snmpFddiSMTEntry 11 } + +snmpFddiSMTConnectionPolicy OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the connection policies + enforced at the station. A station sets the + corresponding policy for each of the connection + types that it rejects. The letter designations, X + and Y, in the 'rejectX-Y' names have the following + significance: X represents the PC-Type of the + local PORT and Y represents a PC-Neighbor in the + evaluation of Connection-Policy (PC-Type, PC- + Neighbor) that is done to determine the setting of + T-Val(3) in the PC-Signaling sequence (refer to + ANSI Section 9.6.3). + + The value is a sum. This value initially takes + the value zero, then for each of the connection + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + rejectA-A 0 + rejectA-B 1 + rejectA-S 2 + rejectA-M 3 + rejectB-A 4 + rejectB-B 5 + rejectB-S 6 + rejectB-M 7 + rejectS-A 8 + rejectS-B 9 + rejectS-S 10 + rejectS-M 11 + rejectM-A 12 + rejectM-B 13 + rejectM-S 14 + rejectM-M 15 + + Implementors should note that the polarity of + these bits is different in different places in an + SMT system. Implementors should take appropriate + care." + REFERENCE + "ANSI { fddiSMT 27 }" + ::= { snmpFddiSMTEntry 12 } + +snmpFddiSMTTNotify OBJECT-TYPE + SYNTAX INTEGER (2..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The timer used in the Neighbor Notification + protocol, reported in seconds and ranging from 2 + to 30 seconds (refer to ANSI SMT 8.3.1)." + REFERENCE + "ANSI { fddiSMT 29 }" + ::= { snmpFddiSMTEntry 13 } + +snmpFddiSMTStatusReporting OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the node implements the Status + Reporting Protocol. This object is included for + compatibility with products that were designed + prior to the adoption of this standard." + REFERENCE + "ANSI { fddiSMT 30 }" + ::= { snmpFddiSMTEntry 14 } + +snmpFddiSMTECMState OBJECT-TYPE + SYNTAX INTEGER { + ec0(1), -- Out + ec1(2), -- In + ec2(3), -- Trace + ec3(4), -- Leave + ec4(5), -- Path_Test + ec5(6), -- Insert + ec6(7), -- Check + ec7(8) -- Deinsert + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the ECM state + machine (refer to ANSI SMT 9.5.2)." + REFERENCE + "ANSI { fddiSMT 41 }" + ::= { snmpFddiSMTEntry 15 } + +snmpFddiSMTCFState OBJECT-TYPE + SYNTAX INTEGER { + cf0(1), -- Isolated + cf1(2), -- Wrap_S + cf2(3), -- Wrap_A + cf3(4), -- Wrap_B + cf4(5), -- Wrap_AB + cf5(6) -- Thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The attachment configuration for the station or + concentrator (refer to ANSI SMT 9.7.4.3)." + REFERENCE + "ANSI { fddiSMT 42 }" + ::= { snmpFddiSMTEntry 16 } + +snmpFddiSMTHoldState OBJECT-TYPE + SYNTAX INTEGER { + not-implemented(1), -- holding not implemented + not-holding(2), + holding-prm(3), -- holding on primary + holding-sec(4) -- holding on secondary + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the current state of the + Hold function. The values are determined as + follows: 'holding-prm' is set if the primary ring + is operational and the Recovery Enable Flag is + clear (NOT NO_Flag(primary) AND NOT RE_Flag). is + set if the secondary ring is operational and the + Recovery Enable Flag is clear (NOT + NO_Flag(secondary) AND NOT RE_Flag). Ref 9.4.3. + and 10.3.1. the primary or secondary, i.e., the + Recovery Enable, RE_Flag, is set." + REFERENCE + "ANSI { fddiSMT 43 }" + ::= { snmpFddiSMTEntry 17 } + +snmpFddiSMTRemoteDisconnectFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating that the station was remotely + disconnected from the network. A station requires + a Connect Action (SM_CM_CONNECT.request (Connect)) + to rejoin and clear the flag (refer to ANSI + 6.4.5.2)." + REFERENCE + "ANSI { fddiSMT 44 }" + ::= { snmpFddiSMTEntry 18 } + +snmpFddiSMTStationAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + connect(2), + disconnect(3), + path-Test(4), + self-Test(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue error. + + Connect: Generates an + SM_CM_Connect.request(connect) signal to CMT + indicating that the ECM State machine is to begin + a connection sequence. The + fddiSMTRemoteDisconnectFlag is cleared on the + setting of this variable to 1. See ANSI Ref + 9.3.1.1. + + Disconnect: Generates an + SM_CM_Connect.request(disconnect) signal to ECM + and sets the fddiSMTRemoteDisconnectFlag. See + ANSI Ref 9.3.1.1. + + Path-Test: Initiates a station path test. + The Path_Test variable (See ANSI Ref. 9.4.1) is + set to Testing. The results of this action are + not specified in this standard. + + Self-Test: Initiates a station self test. + The results of this action are not specified in + this standard. + + Attempts to set this object to all other values + results in a badValue error. Agents may elect to + return a badValue error on attempts to set this + variable to path-Test(4) or self-Test(5)." + REFERENCE + "ANSI { fddiSMT 60 }" + ::= { snmpFddiSMTEntry 19 } + + +-- the MAC group +-- Implementation of the MAC Group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +snmpFddiMACNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiMAC 1 } + + +-- the MAC table + +snmpFddiMACTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC entries. The number of entries is + given by the value of snmpFddiMACNumber." + ::= { snmpFddiMAC 2 } + +snmpFddiMACEntry OBJECT-TYPE + SYNTAX SnmpFddiMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC entry containing information common to a + given MAC." + INDEX { snmpFddiMACSMTIndex, snmpFddiMACIndex } + ::= { snmpFddiMACTable 1 } + +SnmpFddiMACEntry ::= + SEQUENCE { + snmpFddiMACSMTIndex + INTEGER, + snmpFddiMACIndex + INTEGER, + snmpFddiMACFrameStatusCapabilities + INTEGER, + snmpFddiMACTMaxGreatestLowerBound + FddiTime, + snmpFddiMACTVXGreatestLowerBound + FddiTime, + snmpFddiMACPathsAvailable + INTEGER, + snmpFddiMACCurrentPath + INTEGER, + snmpFddiMACUpstreamNbr + FddiMACLongAddressType, + snmpFddiMACOldUpstreamNbr + FddiMACLongAddressType, + snmpFddiMACDupAddrTest + INTEGER, + snmpFddiMACPathsRequested + INTEGER, + snmpFddiMACDownstreamPORTType + INTEGER, + snmpFddiMACSMTAddress + FddiMACLongAddressType, + snmpFddiMACTReq + FddiTime, + snmpFddiMACTNeg + FddiTime, + snmpFddiMACTMax + FddiTime, + snmpFddiMACTvxValue + FddiTime, + snmpFddiMACTMin + FddiTime, + snmpFddiMACCurrentFrameStatus + INTEGER, + snmpFddiMACFrameCts + Counter, + snmpFddiMACErrorCts + Counter, + snmpFddiMACLostCts + Counter, + snmpFddiMACFrameErrorThreshold + INTEGER, + snmpFddiMACFrameErrorRatio + INTEGER, + snmpFddiMACRMTState + INTEGER, + snmpFddiMACDaFlag + INTEGER, + snmpFddiMACUnaDaFlag + INTEGER, + snmpFddiMACFrameCondition + INTEGER, + snmpFddiMACChipSet + OBJECT IDENTIFIER, + snmpFddiMACAction + INTEGER + } + + +snmpFddiMACSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + MAC." + ::= { snmpFddiMACEntry 1 } + +snmpFddiMACIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each MAC on the managed + entity. The MAC identified by a particular value + of this index is that identified by the same value + of an ifIndex object instance. That is, if a MAC + is associated with the interface whose value of + ifIndex in the Internet-Standard MIB is equal to + 5, then the value of snmpFddiMACIndex shall also + equal 5. The value for each MAC must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiMACEntry 2 } + +snmpFddiMACFrameStatusCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..1799) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the MAC's bridge and end- + station capabilities for operating in a bridged + FDDI network. + The value is a sum. This value initially takes + the value zero, then for each capability present, + 2 raised to a power is added to the sum. The + powers are according to the following table: + + + Capability Power + FSC-Type0 0 + -- MAC repeats A/C indicators as received on + -- copying with the intent to forward. + + FSC-Type1 1 + -- MAC sets C but not A on copying for + -- forwarding. + + FSC-Type2 2 + -- MAC resets C and sets A on C set and + -- A reset if the frame is not copied and the + -- frame was addressed to this MAC + + FSC-Type0-programmable 8 + -- Type0 capability is programmable + + FSC-Type1-programmable 9 + -- Type1 capability is programmable + + FSC-Type2-programmable 10 + -- Type2 capability is programmable + " + REFERENCE + "ANSI { fddiMAC 11 }" + ::= { snmpFddiMACEntry 3 } + +snmpFddiMACTMaxGreatestLowerBound OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The greatest lower bound of T_Max supported for + this MAC." + REFERENCE + "ANSI { fddiMAC 13 }" + ::= { snmpFddiMACEntry 4 } + +snmpFddiMACTVXGreatestLowerBound OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The greatest lower bound of TVX supported for + this MAC." + REFERENCE + "ANSI { fddiMAC 14 }" + ::= { snmpFddiMACEntry 5 } + +snmpFddiMACPathsAvailable OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + for this MAC. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this MAC has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiMAC 22 }" + ::= { snmpFddiMACEntry 6 } + +snmpFddiMACCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + primary(2), + secondary(4), + local(8), + isolated(16) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the association of the MAC with a + station PATH." + REFERENCE + "ANSI { fddiMAC 23 }" + ::= { snmpFddiMACEntry 7 } + +snmpFddiMACUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's upstream neighbor's long individual MAC + address. It may be determined by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1). The value shall be reported as '00 00 00 + 00 00 00' if it is unknown." + REFERENCE + "ANSI { fddiMAC 24 }" + ::= { snmpFddiMACEntry 8 } + +snmpFddiMACOldUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's upstream + neighbor's long individual MAC address. It may be + determined by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1). The value + shall be reported as '00 00 00 00 00 00' if it is + unknown." + REFERENCE + "ANSI { fddiMAC 26 }" + ::= { snmpFddiMACEntry 9 } + +snmpFddiMACDupAddrTest OBJECT-TYPE + SYNTAX INTEGER { none(1), pass(2), fail(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Duplicate Address Test flag, Dup_Addr_Test + (refer to ANSI 8.3.1)." + REFERENCE + "ANSI { fddiMAC 29 }" + ::= { snmpFddiMACEntry 10 } + +snmpFddiMACPathsRequested OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates PATH(s) desired for this + MAC. + + The value is a sum which represents the individual + PATHs that are desired. This value initially + takes the value zero, then for each type of PATH + that this node is, 2 raised to a power is added to + the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + Isolated 3 + + The precedence order is primary, secondary, local, + and then isolated if multiple PATHs are desired + are set." + REFERENCE + "ANSI { fddiMAC 32 }" + ::= { snmpFddiMACEntry 11 } + +snmpFddiMACDownstreamPORTType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), unknown(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the PC-Type of the first port that is + downstream of this MAC (the exit port)." + REFERENCE + "ANSI { fddiMAC 33 }" + ::= { snmpFddiMACEntry 12 } + +snmpFddiMACSMTAddress OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The 48 bit individual address of the MAC used for + SMT frames." + REFERENCE + "ANSI { fddiMAC 41 }" + ::= { snmpFddiMACEntry 13 } + +snmpFddiMACTReq OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of T-Req (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 51 }" + ::= { snmpFddiMACEntry 14 } + +snmpFddiMACTNeg OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Neg (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 52 }" + ::= { snmpFddiMACEntry 15 } + +snmpFddiMACTMax OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Max (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 53 }" + ::= { snmpFddiMACEntry 16 } + +snmpFddiMACTvxValue OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of TvxValue (refer to ANSI MAC 2.2.1 + and ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 54 }" + ::= { snmpFddiMACEntry 17 } + +snmpFddiMACTMin OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Min (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 55 }" + ::= { snmpFddiMACEntry 18 } + +snmpFddiMACCurrentFrameStatus OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the MAC's operational + frame status setting functionality. + + The value is a sum. This value initially takes + the value zero, then for each functionality + present, 2 raised to a power is added to the sum. + The powers are according to the following table: + + Functionality Power + FSC-Type0 0 + -- MAC repeats A/C indicators as received + + FSC-Type1 1 + -- MAC sets C but not A on copying for + -- forwarding + + FSC-Type2 2 + -- MAC resets C and sets A on C set and A + -- reset if frame is not copied + " + REFERENCE + "ANSI { fddiMAC 63 }" + ::= { snmpFddiMACEntry 19 } + +snmpFddiMACFrameCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Frame_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 71 }" + ::= { snmpFddiMACEntry 20 } + +snmpFddiMACErrorCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Error_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 81 }" + ::= { snmpFddiMACEntry 21 } + +snmpFddiMACLostCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Lost_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 82 }" + ::= { snmpFddiMACEntry 22 } + +snmpFddiMACFrameErrorThreshold OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC Condition + report should be generated. The condition is true + when the ratio, ((delta snmpFddiMACLostCt + delta + snmpFddiMACErrorCt) / (delta snmpFddiMACFrameCt + + delta snmpFddiMACLostCt)) x 2**16. exceeds the + threshold. It is used to determine when a station + has an unacceptable frame error threshold. The + sampling algorithm is implementation dependent. + Any attempt to set this variable to a value of + less than one shall result in a badValue error. + Those who are familiar with the SNMP management + framework will recognize that thresholds are not + in keeping with the SNMP philosophy. However, + this variable is supported by underlying SMT + implementations already and maintaining this + threshold should not pose an undue additional + burden on SNMP agent implementors." + REFERENCE + "ANSI { fddiMAC 95 }" + ::= { snmpFddiMACEntry 23 } + +snmpFddiMACFrameErrorRatio OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This attribute is the actual ratio, ((delta + snmpFddiMACLostCt + delta snmpFddiMACErrorCt) / + (delta snmpFddiMACFrameCt + delta + snmpFddiMACLostCt)) x 2**16." + REFERENCE + "ANSI { fddiMAC 96 }" + ::= { snmpFddiMACEntry 24 } + +snmpFddiMACRMTState OBJECT-TYPE + SYNTAX INTEGER { + rm0(1), -- Isolated + rm1(2), -- Non_Op + rm2(3), -- Ring_Op + rm3(4), -- Detect + rm4(5), -- Non_Op_Dup + rm5(6), -- Ring_Op_Dup + rm6(7), -- Directed + rm7(8) -- Trace + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the Ring + Management state machine (refer to ANSI Section + 10)." + REFERENCE + "ANSI { fddiMAC 111 }" + ::= { snmpFddiMACEntry 25 } + +snmpFddiMACDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The RMT flag Duplicate Address Flag, DA_Flag + (refer to ANSI 10.3.1.2)." + REFERENCE + "ANSI { fddiMAC 112 }" + ::= { snmpFddiMACEntry 26 } + +snmpFddiMACUnaDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag set when the upstream neighbor reports a + duplicate address condition. Reset when the + condition clears." + REFERENCE + "ANSI { fddiMAC 113 }" + ::= { snmpFddiMACEntry 27 } + +snmpFddiMACFrameCondition OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC Condition is active when set. + Cleared when the condition clears and on power + up." + REFERENCE + "ANSI { fddiMAC 114 }" + ::= { snmpFddiMACEntry 28 } + +snmpFddiMACChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the hardware chip(s) which + is (are) principally responsible for the + implementation of the MAC function. A few OBJECT + IDENTIFIERS are identified elsewhere in this memo. + For those The assignment of additional OBJECT + IDENTIFIERs to various types of hardware chip sets + is managed by the IANA. For example, vendors + whose chip sets are not defined in this memo may + request a number from the Internet Assigned + Numbers Authority (IANA) which indicates the + assignment of a enterprise specific subtree which, + among other things, may be used to allocate OBJECT + IDENTIFIER assignments for that enterprise's chip + sets. Similarly, in the absence of an + appropriately assigned OBJECT IDENTIFIER in this + memo or in an enterprise specific subtree of a + chip vendor, a board or system vendor can request + a number for a subtree from the IANA and make an + appropriate assignment. It is desired that, + whenever possible, the same OBJECT IDENTIFIER be + used for all chips of a given type. Consequently, + the assignment made in this memo for a chip, if + any, should be used in preference to any other + assignment and the assignment made by the chip + manufacturer, if any, should be used in preference + to assignments made by users of those chips. If + the hardware chip set is unknown, the object + identifier + + unknownChipSet OBJECT IDENTIFIER ::= { 0 0 } + + is returned. Note that unknownChipSet is a + syntactically valid object identifier, and any + conformant implementation of ASN.1 and the BER + must be able to generate and recognize this + value." + ::= { snmpFddiMACEntry 29 } + +snmpFddiMACAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + enableLLCService(2), + disableLLCService(3), + connectMAC(4), + disconnectMAC(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue + error. + + enableLLCService: enables MAC service to + higher layers. + + disableLLCService: disables MAC service to + higher layers. + + connectMAC: connect this MAC in + station. + + disconnectMAC: disconnect this MAC in + station. + + Attempts to set this object to all other values + results in a badValue error." + REFERENCE + "ANSI { fddiMAC 130 }" + ::= { snmpFddiMACEntry 30 } + + +-- the PATH group + +-- the PATH group is empty for now and shall remain so until +-- the ANSI community sorts out their PATH group + + +-- the PORT group +-- Implementation of the PORT group is mandatory for all + +-- systems which implement manageable FDDI subsystems. + +snmpFddiPORTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PORT implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiPORT 1 } + + +-- the PORT table + +snmpFddiPORTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PORT entries. The number of entries is + given by the value of snmpFddiPORTNumber." + ::= { snmpFddiPORT 2 } + +snmpFddiPORTEntry OBJECT-TYPE + SYNTAX SnmpFddiPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PORT entry containing information common to a + given PORT." + INDEX { snmpFddiPORTSMTIndex, snmpFddiPORTIndex } + ::= { snmpFddiPORTTable 1 } + +SnmpFddiPORTEntry ::= + SEQUENCE { + snmpFddiPORTSMTIndex + INTEGER, + snmpFddiPORTIndex + INTEGER, + snmpFddiPORTPCType + INTEGER, + snmpFddiPORTPCNeighbor + INTEGER, + snmpFddiPORTConnectionPolicies + INTEGER, + snmpFddiPORTRemoteMACIndicated + INTEGER, + snmpFddiPORTCEState + INTEGER, + snmpFddiPORTPathsRequested + INTEGER, + snmpFddiPORTMACPlacement + FddiResourceId, + snmpFddiPORTAvailablePaths + INTEGER, + snmpFddiPORTMACLoopTime + FddiTime, + snmpFddiPORTTBMax + FddiTime, + snmpFddiPORTBSFlag + INTEGER, + snmpFddiPORTLCTFailCts + Counter, + snmpFddiPORTLerEstimate + INTEGER, + snmpFddiPORTLemRejectCts + Counter, + snmpFddiPORTLemCts + Counter, + snmpFddiPORTLerCutoff + INTEGER, + snmpFddiPORTLerAlarm + INTEGER, + snmpFddiPORTConnectState + INTEGER, + snmpFddiPORTPCMState + INTEGER, + snmpFddiPORTPCWithhold + INTEGER, + snmpFddiPORTLerCondition + INTEGER, + snmpFddiPORTChipSet + OBJECT IDENTIFIER, + snmpFddiPORTAction + INTEGER + } + +snmpFddiPORTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PORT." + ::= { snmpFddiPORTEntry 1 } + +snmpFddiPORTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each PORT within a given SMT. + Its value ranges between 1 and the sum of the + values of snmpFddiSMTNonMasterCt + { snmpFddiSMTEntry 6 } and snmpFddiSMTMasterCt + { snmpFddiSMTEntry 7 } on the given SMT. The + value for each PORT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiPORTEntry 2 } + +snmpFddiPORTPCType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PC_Type (refer to ANSI SMT 9.2.2 and ANSI SMT + 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 12 }" + ::= { snmpFddiPORTEntry 3 } + +snmpFddiPORTPCNeighbor OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), unknown(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type (PC_Neighbor) of the remote PORT that is + determined in PC_Signaling in R_Val (1,2) (refer + to ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 13 }" + ::= { snmpFddiPORTEntry 4 } + +snmpFddiPORTConnectionPolicies OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the node's PORT policies. + Pc-MAC-LCT, Pc-MAC-Loop, and Pc-MAC-Placement + indicate how the respective PC Signaling + Capability flags should be set (refer to ANSI SMT + 9.4.3.2). + + The value is a sum. This value initially takes + the value zero, then for each PORT policy, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + Policy Power + Pc-MAC-LCT 0 + Pc-MAC-Loop 1 + Pc-MAC-Placement 2 " + REFERENCE + "ANSI { fddiPORT 14 }" + ::= { snmpFddiPORTEntry 5 } + +snmpFddiPORTRemoteMACIndicated OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The indication, in PC-Signaling that the remote + partner intends to place a MAC in the output token + PATH of this PORT. Signaled as R_Val (9) (refer + to ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 15 }" + ::= { snmpFddiPORTEntry 6 } + +snmpFddiPORTCEState OBJECT-TYPE + SYNTAX INTEGER { + ce0(1), -- Isolated + ce1(2), -- Insert_P + ce2(3), -- Insert_S + ce3(4), -- Insert_X + ce4(5) -- Local + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of PORT's + Configuration Element (CE) (refer to ANSI 9.7.5). + Note that this value represents the Current Path + information for this PORT." + REFERENCE + "ANSI { fddiPORT 16 }" + ::= { snmpFddiPORTEntry 7 } + +snmpFddiPORTPathsRequested OBJECT-TYPE + SYNTAX INTEGER (0..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the desired association(s) + of the port with a station PATH. The 'Primary' + Path is the default. The value of 'Secondary' is + only meaningful for S (slave) or M (master) PORT + PC-Types. This value effects the setting of the + CF_Insert_S, and CF_Insert_L flags (refer to ANSI + Section 9.4.3). If the 'Primary' PATH is present, + then the Primary PATH (the default PATH) is + selected. If the 'Secondary' PATH is present and + the 'Primary' PATH is not present, then the + CF_Insert_S flag is set. If the 'Local' PATH is + sent and neither the 'Primary' or 'Secondary' + PATHs are sent, then the CF_Insert_L flag is set. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH + desired, 2 raised to a power is added to the sum. + The powers are according to the following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + Isolated 3 " + REFERENCE + "ANSI { fddiPORT 17 }" + ::= { snmpFddiPORTEntry 8 } + +snmpFddiPORTMACPlacement OBJECT-TYPE + SYNTAX FddiResourceId -- INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the upstream MAC, if any, that is + associated with the PORT. The value shall be zero + if there is no MAC associated with the PORT. + Otherwise, the value shall be equal to the value + of snmpFddiMACIndex associated with the MAC." + REFERENCE + "ANSI { fddiPORT 18 }" + ::= { snmpFddiPORTEntry 9 } + +snmpFddiPORTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + for M and S PORTs. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this port has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiPORT 19 }" + ::= { snmpFddiPORTEntry 10 } + +snmpFddiPORTMACLoopTime OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Time for the optional MAC Local Loop, T_Next(9), + which is greater-than or equal-to 200 milliseconds + (refer to ANSI SMT 9.4.4.2.3)." + REFERENCE + "ANSI { fddiPORT 21 }" + ::= { snmpFddiPORTEntry 11 } + +snmpFddiPORTTBMax OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "TB_Max (refer to ANSI SMT 9.4.4.2.1)." + REFERENCE + "ANSI { fddiPORT 32 }" + ::= { snmpFddiPORTEntry 12 } + +snmpFddiPORTBSFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Break State, BS_Flag (refer to ANSI SMT + 9.4.3.4)." + REFERENCE + "ANSI { fddiPORT 33 }" + ::= { snmpFddiPORTEntry 13 } + +snmpFddiPORTLCTFailCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the consecutive times the link + confidence test (LCT) has failed during connection + management (refer to ANSI 9.4.1)." + REFERENCE + "ANSI { fddiPORT 42 }" + ::= { snmpFddiPORTEntry 14 } + +snmpFddiPORTLerEstimate OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A long term average link error rate. It ranges + from 10**-4 to 10**-15 and is reported as the + absolute value of the exponent of the estimate." + REFERENCE + "ANSI { fddiPORT 51 }" + ::= { snmpFddiPORTEntry 15 } + +snmpFddiPORTLemRejectCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A link error monitoring count of the times that a + link has been rejected." + REFERENCE + "ANSI { fddiPORT 52 }" + ::= { snmpFddiPORTEntry 16 } + +snmpFddiPORTLemCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The aggregate link error monitor error count, set + to zero only on station power_up." + REFERENCE + "ANSI { fddiPORT 53 }" + ::= { snmpFddiPORTEntry 17 } + +snmpFddiPORTLerCutoff OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will be broken. It ranges from 10**-4 + to 10**-15 and is reported as the absolute value + of the exponent." + REFERENCE + "ANSI { fddiPORT 58 }" + ::= { snmpFddiPORTEntry 18 } + +snmpFddiPORTLerAlarm OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will generate an alarm. It ranges from + 10**-4 to 10**-15 and is reported as the absolute + value of the exponent of the estimate." + REFERENCE + "ANSI { fddiPORT 59 }" + ::= { snmpFddiPORTEntry 19 } + +snmpFddiPORTConnectState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + connecting(2), + standby(3), + active(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of the connect state of this PORT. + Basically, this gives a higher level view of the + state of the connection by grouping PCM states and + the PC-Withhold flag state. The supported values + and their corresponding PCM states and PC-Withhold + condition, when relevant, are: + disabled: (PC0:Off, PC9:Maint) + + connecting: (PC1(Break) || PC3 (Connect) || PC4 + (Next) || PC5 (Signal) || PC6 + (Join) || PC7 (Verify)) && + (PC_Withhold = None) + + standby: (NOT PC_Withhold == None) + + active: (PC2:Trace || PC8:Active) " + REFERENCE + "ANSI { fddiPORT 61 }" + ::= { snmpFddiPORTEntry 20 } + +snmpFddiPORTPCMState OBJECT-TYPE + SYNTAX INTEGER { + pc0(1), -- Off + pc1(2), -- Break + pc2(3), -- Trace + pc3(4), -- Connect + pc4(5), -- Next + pc5(6), -- Signal + pc6(7), -- Join + pc7(8), -- Verify + pc8(9), -- Active + pc9(10) -- Maint + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "(refer to SMT 9.6.2)." + REFERENCE + "ANSI { fddiPORT 62 }" + ::= { snmpFddiPORTEntry 21 } + +snmpFddiPORTPCWithhold OBJECT-TYPE + SYNTAX INTEGER { none(1), m-m(2), other(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PC_Withhold, (refer to ANSI SMT 9.4.1)." + REFERENCE + "ANSI { fddiPORT 63 }" + ::= { snmpFddiPORTEntry 22 } + +snmpFddiPORTLerCondition OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is set to true whenever LerEstimate + is less than or equal to LerAlarm." + REFERENCE + "ANSI { fddiPORT 64 }" + ::= { snmpFddiPORTEntry 23 } + +snmpFddiPORTChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the hardware chip(s) which + is (are) principally responsible for the + implementation of the PORT (PHY) function. A few + OBJECT IDENTIFIERS are identified elsewhere in + this memo. For those The assignment of additional + OBJECT IDENTIFIERs to various types of hardware + chip sets is managed by the IANA. For example, + vendors whose chip sets are not defined in this + memo may request a number from the Internet + Assigned Numbers Authority (IANA) which indicates + the assignment of a enterprise specific subtree + which, among other things, may be used to allocate + OBJECT IDENTIFIER assignments for that + enterprise's chip sets. Similarly, in the absence + of an appropriately assigned OBJECT IDENTIFIER in + this memo or in an enterprise specific subtree of + a chip vendor, a board or system vendor can + request a number for a subtree from the IANA and + make an appropriate assignment. It is desired + that, whenever possible, the same OBJECT + IDENTIFIER be used for all chips of a given type. + Consequently, the assignment made in this memo for + a chip, if any, should be used in preference to + any other assignment and the assignment made by + the chip manufacturer, if any, should be used in + preference to assignments made by users of those + chips. If the hardware chip set is unknown, the + object identifier + + unknownChipSet OBJECT IDENTIFIER ::= { 0 0 } + + is returned. Note that unknownChipSet is a + syntactically valid object identifier, and any + conformant implementation of ASN.1 and the BER + must be able to generate and recognize this + value." + ::= { snmpFddiPORTEntry 24 } + +snmpFddiPORTAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + maintPORT(2), + enablePORT(3), + disablePORT(4), + startPORT(5), + stopPORT(6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue error. + + maintPORT: Signal PC_Maint + + enablePORT: Signal PC_Enable + + disablePORT: Signal PC_Disable + + startPORT: Signal PC_Start + + stopPORT: Signal PC_Stop + + Signals cause an SM_CM_CONTROL.request service to + be generated with a control_action of `Signal' and + the `variable' parameter set with the appropriate + value (i.e., PC_Maint, PC_Enable, PC_Disable, + PC_Start, PC_Stop). Ref. ANSI SMT Section 9.3.2. + + Attempts to set this object to all other values + results in a badValue error." + REFERENCE + "ANSI { fddiPORT 70 }" + ::= { snmpFddiPORTEntry 25 } + + +-- the ATTACHMENT group +-- Implementation of the ATTACHMENT group is mandatory for +-- all systems which implement manageable FDDI subsystems. + +snmpFddiATTACHMENTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of attachments (across all SMTs) + on this network management application entity. + The value for this variable must remain constant + at least from one re-initialization of the + entity's network management system to the next + re-initialization." + ::= { snmpFddiATTACHMENT 1 } + + +-- the ATTACHMENT table + +snmpFddiATTACHMENTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiATTACHMENTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ATTACHMENT entries. The number of + entries is given by the value of + snmpFddiATTACHMENTNumber." + ::= { snmpFddiATTACHMENT 2 } + +snmpFddiATTACHMENTEntry OBJECT-TYPE + SYNTAX SnmpFddiATTACHMENTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An ATTACHMENT entry containing information common + to a given set of ATTACHMENTs. + + The ATTACHMENT Resource represents a PORT or a + pair of PORTs plus the optional associated optical + bypass that are managed as a functional unit. + Because of its relationship to the PORT Objects, + there is a natural association of ATTACHMENT + Resource Indices to the PORT Indices. The + resource index for the ATTACHMENT is equal to the + associated PORT index for 'single-attachment' and + 'concentrator' type snmpFddiATTACHMENTClasses. + For 'dual-attachment' Classes, the ATTACHMENT + Index is the PORT Index of the A PORT of the A/B + PORT Pair that represents the ATTACHMENT." + INDEX { snmpFddiATTACHMENTSMTIndex, + snmpFddiATTACHMENTIndex } + ::= { snmpFddiATTACHMENTTable 1 } + +SnmpFddiATTACHMENTEntry ::= + SEQUENCE { + snmpFddiATTACHMENTSMTIndex + INTEGER, + snmpFddiATTACHMENTIndex + INTEGER, + snmpFddiATTACHMENTClass + INTEGER, + snmpFddiATTACHMENTOpticalBypassPresent + INTEGER, + snmpFddiATTACHMENTIMaxExpiration + FddiTime, + snmpFddiATTACHMENTInsertedStatus + INTEGER, + snmpFddiATTACHMENTInsertPolicy + INTEGER + } + +snmpFddiATTACHMENTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + ATTACHMENT." + ::= { snmpFddiATTACHMENTEntry 1 } + +snmpFddiATTACHMENTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each ATTACHMENT on a given + SMT. Its value ranges between 1 and the sum of + the values of snmpFddiSMTNonMasterCt { + snmpFddiSMTEntry 6 } and snmpFddiSMTMasterCt { + snmpFddiSMTEntry 7 } on the given SMT. The value + for each ATTACHMENT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiATTACHMENTEntry 2 } + +snmpFddiATTACHMENTClass OBJECT-TYPE + SYNTAX INTEGER { + single-attachment(1), + dual-attachment(2), + concentrator(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Attachment class. This represents a PORT or + a pair of PORTs plus the associated optional + optical bypass that are managed as a functional + unit. The PORT associations are the following: + + single-attachment - S PORTs + dual-attachment - A/B PORT Pairs + concentrator - M PORTs " + REFERENCE + "ANSI { fddiATTACHMENT 11 }" + ::= { snmpFddiATTACHMENTEntry 3 } + +snmpFddiATTACHMENTOpticalBypassPresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this value is false for 'single- + attachment' and { snmpFddiATTACHMENT 11 }. + Correct operation of CMT for single-attachment and + concentrator attachments requires that a bypass + function must not loopback the network side of the + MIC, but only the node side." + REFERENCE + "ANSI { fddiATTACHMENT 12 }" + ::= { snmpFddiATTACHMENTEntry 4 } + +snmpFddiATTACHMENTIMaxExpiration OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "I_Max (refer to ANSI SMT 9.4.4.2.1). It is + recognized that some currently deployed systems do + not implement an optical bypass. Systems which do + not implement optical bypass should return a value + of 0." + REFERENCE + "ANSI { fddiATTACHMENT 13 }" + ::= { snmpFddiATTACHMENTEntry 5 } + +snmpFddiATTACHMENTInsertedStatus OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2), unimplemented(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the attachment is currently + inserted in the node." + REFERENCE + "ANSI { fddiATTACHMENT 14 }" + ::= { snmpFddiATTACHMENTEntry 6 } + +snmpFddiATTACHMENTInsertPolicy OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2), unimplemented(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates the Insert Policy for this Attachment. + Insert: True (1), Don't Insert: False (2), + Unimplemented (3)" + REFERENCE + "ANSI { fddiATTACHMENT 15 }" + ::= { snmpFddiATTACHMENTEntry 7 } + + +-- the Chip Set group +-- The following object identifiers are allocated for use +-- with the snmpFddiMACChipSet and snmpFddiPORTChipSet +-- variables. + + snmpFddiPHYChipSets -- Chips primarily responsible + -- for implementing the PHY + -- function. + OBJECT IDENTIFIER ::= { snmpFddiChipSets 1 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + + + snmpFddiMACChipSets -- Chips primarily responsible + -- for implementing the + -- MAC function. + OBJECT IDENTIFIER ::= { snmpFddiChipSets 2 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + + snmpFddiPHYMACChipSets -- Chips which implement both + -- the PHY and MAC functions + OBJECT IDENTIFIER ::= { snmpFddiChipSets 3 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + +END diff --git a/mibs/ietf/RFC1316-MIB b/mibs/ietf/RFC1316-MIB new file mode 100644 index 0000000..c09af9f --- /dev/null +++ b/mibs/ietf/RFC1316-MIB @@ -0,0 +1,513 @@ + RFC1316-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter, TimeTicks, Gauge + FROM RFC1155-SMI + DisplayString, mib-2 + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- this is the MIB module for character stream devices + +char OBJECT IDENTIFIER ::= { mib-2 19 } + +-- Textual Conventions + + AutonomousType ::= OBJECT IDENTIFIER + +-- The object identifier is an independently extensible type +-- identification value. It may, for example indicate a +-- particular sub-tree with further MIB definitions, or +-- define something like a protocol type or type of +-- hardware. + + InstancePointer ::= OBJECT IDENTIFIER + +-- The object identifier is a pointer to a specific instance +-- of a MIB object in this agent's implemented MIB. By +-- convention, it is the first object in the conceptual row +-- for the instance. + +-- the generic Character group + +-- Implementation of this group is mandatory for all +-- systems that offer character ports + +charNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of entries in charPortTable, regardless + of their current state." + ::= { char 1 } + + +-- the Character Port table + +charPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of charNumber." + ::= { char 2 } + +charPortEntry OBJECT-TYPE + SYNTAX CharPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status and parameter values for a character port." + INDEX { charPortIndex } + ::= { charPortTable 1 } + +CharPortEntry ::= + SEQUENCE { + charPortIndex + INTEGER, + charPortName + DisplayString, + charPortType + INTEGER, + charPortHardware + AutonomousType, + charPortReset + INTEGER, + charPortAdminStatus + INTEGER, + charPortOperStatus + INTEGER, + charPortLastChange + TimeTicks, + charPortInFlowType + INTEGER, + charPortOutFlowType + INTEGER, + charPortInFlowState + INTEGER, + charPortOutFlowState + INTEGER, + charPortInCharacters + Counter, + charPortOutCharacters + Counter, + charPortAdminOrigin + INTEGER, + charPortSessionMaximum + INTEGER, + charPortSessionNumber + Gauge, + charPortSessionIndex + INTEGER + } + +charPortIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each character port. Its value + ranges between 1 and the value of charNumber. By + convention and if possible, hardware port numbers + come first, with a simple, direct mapping. The + value for each port must remain constant at least + from one re-initialization of the network management + agent to the next." + ::= { charPortEntry 1 } + +charPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An administratively assigned name for the port, + typically with some local significance." + ::= { charPortEntry 2 } + +charPortType OBJECT-TYPE + SYNTAX INTEGER { physical(1), virtual(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port's type, 'physical' if the port represents + an external hardware connector, 'virtual' if it does + not." + ::= { charPortEntry 3 } + +charPortHardware OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to hardware MIB definitions specific to + a physical port's external connector. For example, + if the connector is RS-232, then the value of this + object refers to a MIB sub-tree defining objects + specific to RS-232. If an agent is not configured + to have such values, the agent returns the object + identifier: + + nullHardware OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charPortEntry 4 } + +charPortReset OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A control to force the port into a clean, initial + state, both hardware and software, disconnecting all + the port's existing sessions. In response to a + get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes a reset." + ::= { charPortEntry 5 } + +charPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), off(3), + maintenance(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's desired state, independent of flow + control. 'enabled' indicates that the port is + allowed to pass characters and form new sessions. + 'disabled' indicates that the port is allowed to + pass characters but not form new sessions. 'off' + indicates that the port is not allowed to pass + characters or have any sessions. 'maintenance' + indicates a maintenance mode, exclusive of normal + operation, such as running a test." + ::= { charPortEntry 6 } + +charPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), + maintenance(3), absent(4), active(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port's actual, operational state, independent + of flow control. 'up' indicates able to function + normally. 'down' indicates inability to function + for administrative or operational reasons. + 'maintenance' indicates a maintenance mode, + exclusive of normal operation, such as running a + test. 'absent' indicates that port hardware is not + present. 'active' indicates up with a user present + (e.g. logged in)." + ::= { charPortEntry 7 } + +charPortLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the port entered + its current operational state. If the current state + was entered prior to the last reinitialization of + the local network management subsystem, then this + object contains a zero value." + ::= { charPortEntry 8 } + +charPortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicity's sake." + ::= { charPortEntry 9 } + +charPortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicy's sake." + ::= { charPortEntry 10 } + +charPortInFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of input flow control + on the port. 'none' indicates not applicable. + 'unknown' indicates this level does not know. + 'stop' indicates flow not allowed. 'go' indicates + flow allowed." + ::= { charPortEntry 11 } + +charPortOutFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of output flow + control on the port. 'none' indicates not + applicable. 'unknown' indicates this level does not + know. 'stop' indicates flow not allowed. 'go' + indicates flow allowed." + ::= { charPortEntry 12 } + +charPortInCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Total number of characters detected as input from + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-processed input, and input + sent to all sessions." + ::= { charPortEntry 13 } + +charPortOutCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Total number of characters detected as output to + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-created output, and output + received from all sessions." + ::= { charPortEntry 14 } + +charPortAdminOrigin OBJECT-TYPE + SYNTAX INTEGER { dynamic(1), network(2), local(3), + none(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The administratively allowed origin for + establishing session on the port. 'dynamic' allows + 'network' or 'local' session establishment. 'none' + disallows session establishment." + ::= { charPortEntry 15 } + +charPortSessionMaximum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of concurrent sessions allowed + on the port. A value of -1 indicates no maximum. + Setting the maximum to less than the current number + of sessions has unspecified results." + ::= { charPortEntry 16 } + +charPortSessionNumber OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of open sessions on the port that are in + the connecting, connected, or disconnecting state." + ::= { charPortEntry 17 } + +charPortSessionIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of charSessIndex for the port's first or + only active session. If the port has no active + session, the agent returns the value zero." + ::= { charPortEntry 18 } + + +-- the Character Session table + +charSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharSessEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port session entries." + ::= { char 3 } + +charSessEntry OBJECT-TYPE + SYNTAX CharSessEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status and parameter values for a character port + session." + INDEX { charSessPortIndex, charSessIndex } + ::= { charSessTable 1 } + +CharSessEntry ::= + SEQUENCE { + charSessPortIndex + INTEGER, + charSessIndex + INTEGER, + charSessKill + INTEGER, + charSessState + INTEGER, + charSessProtocol + AutonomousType, + charSessOperOrigin + INTEGER, + charSessInCharacters + Counter, + charSessOutCharacters + Counter, + charSessConnectionId + InstancePointer, + charSessStartTime + TimeTicks + } + +charSessPortIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of charPortIndex for the port to which + this session belongs." + ::= { charSessEntry 1 } + +charSessIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The session index in the context of the port, a + non-zero positive integer. Session indexes within a + port need not be sequential. Session indexes may be + reused for different ports. For example, port 1 and + port 3 may both have a session 2 at the same time. + Session indexes may have any valid integer value, + with any meaning convenient to the agent + implementation." + ::= { charSessEntry 2 } + +charSessKill OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A control to terminate the session. In response to + a get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes termination." + ::= { charSessEntry 3 } + +charSessState OBJECT-TYPE + SYNTAX INTEGER { connecting(1), connected(2), + disconnecting(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of the session, + disregarding flow control. 'connected' indicates + that character data could flow on the network side + of session. 'connecting' indicates moving from + nonexistent toward 'connected'. 'disconnecting' + indicates moving from 'connected' or 'connecting' to + nonexistent." + ::= { charSessEntry 4 } + +charSessProtocol OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network protocol over which the session is + running. Other OBJECT IDENTIFIER values may be + defined elsewhere, in association with specific + protocols. However, this document assigns those of + known interest as of this writing." + ::= { charSessEntry 5 } + +wellKnownProtocols OBJECT IDENTIFIER ::= { char 4 } + +protocolOther OBJECT IDENTIFIER ::= {wellKnownProtocols 1} +protocolTelnet OBJECT IDENTIFIER ::= {wellKnownProtocols 2} +protocolRlogin OBJECT IDENTIFIER ::= {wellKnownProtocols 3} +protocolLat OBJECT IDENTIFIER ::= {wellKnownProtocols 4} +protocolX29 OBJECT IDENTIFIER ::= {wellKnownProtocols 5} +protocolVtp OBJECT IDENTIFIER ::= {wellKnownProtocols 6} + +charSessOperOrigin OBJECT-TYPE + SYNTAX INTEGER { unknown(1), network(2), local(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The session's source of establishment." + ::= { charSessEntry 6 } + +charSessInCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This session's subset of charPortInCharacters." + ::= { charSessEntry 7 } + +charSessOutCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This session's subset of charPortOutCharacters." + ::= { charSessEntry 8 } + +charSessConnectionId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to additional local MIB information. + This should be the highest available related MIB, + corresponding to charSessProtocol, such as Telnet. + For example, the value for a TCP connection (in the + absence of a Telnet MIB) is the object identifier of + tcpConnState. If an agent is not configured to have + such values, the agent returns the object + identifier: + + nullConnectionId OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charSessEntry 9 } + +charSessStartTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime in MIB-2 when the session + entered connecting state." + ::= { charSessEntry 10 } + +END diff --git a/mibs/ietf/RFC1381-MIB b/mibs/ietf/RFC1381-MIB new file mode 100644 index 0000000..80cf6b6 --- /dev/null +++ b/mibs/ietf/RFC1381-MIB @@ -0,0 +1,1011 @@ +RFC1381-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + + + -- LAPB MIB + +lapb OBJECT IDENTIFIER ::= { transmission 16 } + +PositiveInteger ::= INTEGER (0..2147483647) + +IfIndexType ::= INTEGER (1..2147483647) +-- IfIndexType specifies an index object for a table +-- with entries that match entries in the MIB-II ifTable. +-- The value of the index for the table will match the +-- ifIndex entry for same interface in the ifTable. +-- The values of this object range from 1 to ifNumber +-- inclusive. + + +-- ########################################################### +-- LAPB Admn Table +-- ########################################################### + +-- Support of the lapbAdmnTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbAdmnTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbAdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains objects that can be + changed to manage a LAPB interface. + Changing one of these parameters may take + effect in the operating LAPB immediately or + may wait until the interface is restarted + depending on the details of the + implementation. + + Most of the objects in this read-write table + have corresponding read-only objects in the + lapbOperTable that return the current + operating value. + + The operating values may be different from + these configured values if changed by XID + negotiation or if a configured parameter was + changed after the interface was started." + ::= { lapb 1 } + +lapbAdmnEntry OBJECT-TYPE + SYNTAX LapbAdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configured parameter values for a specific + LAPB." + INDEX { lapbAdmnIndex } + ::= { lapbAdmnTable 1 } + +LapbAdmnEntry ::= SEQUENCE { + lapbAdmnIndex + IfIndexType, + lapbAdmnStationType + INTEGER, + lapbAdmnControlField + INTEGER, + lapbAdmnTransmitN1FrameSize + PositiveInteger, + lapbAdmnReceiveN1FrameSize + PositiveInteger, + lapbAdmnTransmitKWindowSize + INTEGER, + lapbAdmnReceiveKWindowSize + INTEGER, + lapbAdmnN2RxmitCount + INTEGER, + lapbAdmnT1AckTimer + PositiveInteger, + lapbAdmnT2AckDelayTimer + PositiveInteger, + lapbAdmnT3DisconnectTimer + PositiveInteger, + lapbAdmnT4IdleTimer + PositiveInteger, + lapbAdmnActionInitiate + INTEGER, + lapbAdmnActionRecvDM + INTEGER + } + +lapbAdmnIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbAdmnEntry 1 } + +lapbAdmnStationType OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the desired station type of this + interface." + REFERENCE "ISO 7776 section 3.1" + DEFVAL { dte } + ::= { lapbAdmnEntry 2 } + +lapbAdmnControlField OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired size of the sequence numbers + used to number frames." + REFERENCE "ISO 8885 Table 3, Name: HDLC Option - 10" + DEFVAL { modulo8 } + ::= { lapbAdmnEntry 3 } + +lapbAdmnTransmitN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default maximum N1 frame size desired + in number of bits for a frame transmitted by + this DTE. This excludes flags and 0 bits + inserted for transparency." + REFERENCE "ISO 8885 Table 3, + Name: Information Field length" + DEFVAL { 36000 } -- 4500 * 8; 802.5 Frame size + ::= { lapbAdmnEntry 4 } + +lapbAdmnReceiveN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default maximum N1 frame size desired + in number of bits for a frame the DCE/remote + DTE transmits to this DTE. This excludes + flags and 0 bits inserted for transparency." + DEFVAL { 36000 } -- 4500 * 8; 802.5 Frame size + ::= { lapbAdmnEntry 5 } + +lapbAdmnTransmitKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default transmit window size for this + Interface. This is the maximum number of + unacknowledged sequenced PDUs that may be + outstanding from this DTE at any one time." + REFERENCE "ISO 8885 Table 3, Name: Window size" + DEFVAL { 7 } + ::= { lapbAdmnEntry 6 } + +lapbAdmnReceiveKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default receive window size for this + Interface. This is the maximum number of + unacknowledged sequenced PDUs that may be + outstanding from the DCE/remote DTE at any + one time." + REFERENCE "ISO 8885 Table 3, Name: Window size" + DEFVAL { 7 } + ::= { lapbAdmnEntry 7 } + +lapbAdmnN2RxmitCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default N2 retry counter for this + interface. This specifies the number of + times a PDU will be resent after the T1 + timer expires without an acknowledgement for + the PDU." + REFERENCE "ISO 8885 Table 3, + Name: Retransmission Attempts" + DEFVAL { 20 } + ::= { lapbAdmnEntry 8 } + +lapbAdmnT1AckTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default T1 timer for this interface. + This specifies the maximum time in + Milliseconds to wait for acknowledgment of a + PDU." + REFERENCE "ISO 8885 Table 3, Name: + Acknowledgement timer" + DEFVAL { 3000 } + ::= { lapbAdmnEntry 9 } + +lapbAdmnT2AckDelayTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default T2 timer for this interface. + This specifies the maximum time in + Milliseconds to wait before sending an + acknowledgment for a sequenced PDU. A value + of zero means there will be no delay in + acknowledgement generation." + REFERENCE "ISO 8885 Table 3, + Name: Reply delay timer" + DEFVAL { 0 } + ::= { lapbAdmnEntry 10 } + +lapbAdmnT3DisconnectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T3 timer for this interface. This + specifies the time in Milliseconds to wait + before considering the link disconnected. A + value of zero indicates the link will be + considered disconnected upon completion of + the frame exchange to disconnect the link." + REFERENCE "ISO 7776 section 5.7.1.3" + DEFVAL { 60000 } + ::= { lapbAdmnEntry 11 } + +lapbAdmnT4IdleTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T4 timer for this interface. This + specifies the maximum time in Milliseconds + to allow without frames being exchanged on + the data link. A value of 2147483647 + indicates no idle timer is being kept." + REFERENCE "ISO 7776 section 5.7.1.4" + DEFVAL { 2147483647 } + ::= { lapbAdmnEntry 12 } + +lapbAdmnActionInitiate OBJECT-TYPE + SYNTAX INTEGER { + sendSABM (1), + sendDISC (2), + sendDM (3), + none (4), + other (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the action LAPB will take + to initiate link set-up." + DEFVAL { sendSABM } + ::= { lapbAdmnEntry 13 } + +lapbAdmnActionRecvDM OBJECT-TYPE + SYNTAX INTEGER { + sendSABM (1), + sendDISC (2), + other (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the action LAPB will take + when it receives a DM response." + DEFVAL { sendSABM } + ::= { lapbAdmnEntry 14 } + + +-- ########################################################### +-- LAPB operating parameters. +-- ########################################################### + +-- Support of the lapbOperTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbOperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains configuration + information about interface parameters + currently set in the interface. Many of + these objects have corresponding objects in + the lapbAdmnTable." + ::= { lapb 2 } + +lapbOperEntry OBJECT-TYPE + SYNTAX LapbOperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Currently set parameter values for a + specific LAPB." + INDEX { lapbOperIndex } + ::= { lapbOperTable 1 } + +LapbOperEntry ::= SEQUENCE { + lapbOperIndex + IfIndexType, + lapbOperStationType + INTEGER, + lapbOperControlField + INTEGER, + lapbOperTransmitN1FrameSize + PositiveInteger, + lapbOperReceiveN1FrameSize + PositiveInteger, + lapbOperTransmitKWindowSize + INTEGER, + lapbOperReceiveKWindowSize + INTEGER, + lapbOperN2RxmitCount + INTEGER, + lapbOperT1AckTimer + PositiveInteger, + lapbOperT2AckDelayTimer + PositiveInteger, + lapbOperT3DisconnectTimer + PositiveInteger, + lapbOperT4IdleTimer + PositiveInteger, + lapbOperPortId + OBJECT IDENTIFIER, + lapbOperProtocolVersionId + OBJECT IDENTIFIER + } + +lapbOperIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbOperEntry 1 } + +lapbOperStationType OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies the current operating station + type of this interface. A value of dxe (3) + indicates XID negotiation has not yet taken + place." + REFERENCE "ISO 7776 section 3.1" + ::= { lapbOperEntry 2 } + +lapbOperControlField OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operating size of the sequence + numbers used to number frames." + REFERENCE "ISO 7776 section 3.3" + ::= { lapbOperEntry 3 } + +lapbOperTransmitN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operating N1 frame size used + for the maximum number of bits in a frame + this DTE can transmit. This excludes flags + and 0 bits inserted for transparency." + REFERENCE "ISO 7776 section 5.7.3" + ::= { lapbOperEntry 4 } + +lapbOperReceiveN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + -- See lapbOperTransmitN1FrameSize above + DESCRIPTION + "The current operating N1 frame size used + for the maximum number of bits in a frame + the DCE/remote DTE can transmit. This + excludes flags and 0 bits inserted for + transparency." + ::= { lapbOperEntry 5 } + +lapbOperTransmitKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current PDU window size this Interface + uses to transmit. This is the maximum + number of unacknowledged sequenced PDUs that + may be outstanding from this DTE at any one + time." + REFERENCE "ISO 7776 section 5.7.4" + ::= { lapbOperEntry 6 } + +lapbOperReceiveKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current receive PDU window size for + this Interface. This is the maximum number + of unacknowledged sequenced PDUs that may be + outstanding from the DCE/remote DTE at any + one time." + REFERENCE "ISO 7776 section 5.7.4" + ::= { lapbOperEntry 7 } + +lapbOperN2RxmitCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current N2 retry counter used for this + interface. This specifies the number of + times a PDU will be resent after the T1 + timer expires without an acknowledgement for + the PDU." + REFERENCE "ISO 7776 section 5.7.2" + ::= { lapbOperEntry 8 } + +lapbOperT1AckTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T1 timer for this interface. + This specifies the maximum time in + Milliseconds to wait for acknowledgment of a + PDU." + REFERENCE "ISO 7776 section 5.7.1.1" + ::= { lapbOperEntry 9 } + +lapbOperT2AckDelayTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T2 timer for this interface. + This specifies the maximum time in + Milliseconds to wait before sending an + acknowledgment for a sequenced PDU. A value + of zero means there will be no delay in + acknowledgement generation." + REFERENCE "ISO 7776 section 5.7.1.2" + ::= { lapbOperEntry 10 } + +lapbOperT3DisconnectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T3 timer for this interface. + This specifies the time in Milliseconds to + wait before considering the link + disconnected. A value of zero indicates the + link will be considered disconnected upon + completion of the frame exchange to + disconnect the link." + REFERENCE "ISO 7776 section 5.7.1.3" + ::= { lapbOperEntry 11 } + +lapbOperT4IdleTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current T4 timer for this interface. + This specifies the maximum time in + Milliseconds to allow without frames being + exchanged on the data link. A value of + 2147483647 indicates no idle timer is being + kept." + REFERENCE "ISO 7776 section 5.7.1.4" + ::= { lapbOperEntry 12 } + +lapbOperPortId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies an instance of the + index object in the first group of objects + in the MIB specific to the physical device + or interface used to send and receive + frames. If an agent does not support any + such objects, it should return nullSpec + OBJECT IDENTIFIER {0 0}." + ::= { lapbOperEntry 13 } + +lapbOperProtocolVersionId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the version of the + lapb protocol implemented by this + interface." + ::= { lapbOperEntry 14 } + + +-- ########################################################### +-- LAPB Flow Table +-- ########################################################### + +-- Support of the lapbFlowTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbFlowEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table defines the objects recorded by + LAPB to provide information about the + traffic flow through the interface." + ::= { lapb 3 } + +lapbFlowEntry OBJECT-TYPE + SYNTAX LapbFlowEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The information regarding the effects of + flow controls in LAPB." + INDEX { lapbFlowIfIndex } + ::= { lapbFlowTable 1 } + +LapbFlowEntry ::= SEQUENCE { + lapbFlowIfIndex + IfIndexType, + lapbFlowStateChanges + Counter, + lapbFlowChangeReason + INTEGER, + lapbFlowCurrentMode + INTEGER, + lapbFlowBusyDefers + Counter, + lapbFlowRejOutPkts + Counter, + lapbFlowRejInPkts + Counter, + lapbFlowT1Timeouts + Counter, + lapbFlowFrmrSent + OCTET STRING, + lapbFlowFrmrReceived + OCTET STRING, + lapbFlowXidReceived + OCTET STRING + } + +lapbFlowIfIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB Interface." + ::= { lapbFlowEntry 1 } + +lapbFlowStateChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of LAPB State Changes, including + resets." + ::= { lapbFlowEntry 2 } + +lapbFlowChangeReason OBJECT-TYPE + SYNTAX INTEGER { + notStarted (1), -- Initial state + abmEntered (2), -- SABM or UA + abmeEntered (3), -- SABME or UA + abmReset (4), -- SABM in ABM + abmeReset (5), -- SABME in ABME + dmReceived (6), -- DM Response + dmSent (7), -- DM sent + discReceived (8), -- DISC Response + discSent (9), -- DISC Sent + frmrReceived (10), -- FRMR Received + frmrSent (11), -- FRMR Sent + n2Timeout (12), -- N2 Timer Expired + other (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The reason for the most recent incrementing + of lapbFlowStateChanges. A DM or DISC frame + generated to initiate link set-up does not + alter this object. When the MIB-II object + ifOperStatus does not have a value of + testing, there exists a correlation between + this object and ifOperStatus. IfOperStatus + will have a value of up when this object + contains: abmEntered, abmeEntered, + abmReset, or abmeReset. IfOperStatus will + have a value of down when this object has a + value of notStarted, or dmReceived through + n2Timeout. There is no correlation when + this object has the value other." + ::= { lapbFlowEntry 3 } + +lapbFlowCurrentMode OBJECT-TYPE + SYNTAX INTEGER { + disconnected (1), + -- initial state or DISC received + + linkSetup (2), + -- SABM sent + + frameReject (3), + -- Invalid frame received and + -- FRMR sent + + disconnectRequest (4), + -- DISC sent + + informationTransfer (5), + -- normal information transfer state + -- SABM(E) sent and UA received, or + -- SABM(E) received and UA sent + + rejFrameSent (6), + -- invalid NS received and REJ sent + + waitingAcknowledgement (7), + + -- T1 expired and RR sent + + stationBusy (8), + -- RNR sent + + remoteStationBusy (9), + -- RNR received + + bothStationsBusy (10), + -- RNR received and RNR sent + + waitingAckStationBusy (11), + -- T1 expired, RNR sent + + waitingAckRemoteBusy (12), + -- T1 expired, RNR received + + waitingAckBothBusy (13), + -- T1 expired, RNR sent, + -- and RNR received + + rejFrameSentRemoteBusy (14), + -- REJ sent and RNR received + + xidFrameSent (15), + -- XID frame sent + + error (16), + -- An error state other than + -- a one defined above + + other (17) + -- A state not listed above + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current condition of the conversation." + ::= { lapbFlowEntry 4 } + +lapbFlowBusyDefers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this device was unable + to transmit a frame due to a perceived + remote busy condition. Busy conditions can + result from the receipt of an RNR from the + remote device, the lack of valid sequence + number space (window saturation), or other + conditions." + ::= { lapbFlowEntry 5 } + +lapbFlowRejOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of REJ or SREJ frames sent by + this station." + ::= { lapbFlowEntry 6 } + +lapbFlowRejInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of REJ or SREJ frames received + by this station." + ::= { lapbFlowEntry 7 } + +lapbFlowT1Timeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a re-transmission was + effected by the T1 Timer expiring." + ::= { lapbFlowEntry 8 } + +lapbFlowFrmrSent OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..7)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the FRMR most + recently sent. If no FRMR has been sent + (the normal case) or the information isn't + available, this will be an OCTET STRING of + zero length." + REFERENCE "ISO 7776 Section 4.3.9, tables 7 and 8" + ::= { lapbFlowEntry 9 } + +lapbFlowFrmrReceived OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..7)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the FRMR most + recently received. If no FRMR has been + received (the normal case) or the + information isn't available, this will be an + OCTET STRING of zero length." + REFERENCE "ISO 7776 Section 4.3.9, tables 7 and 8" + ::= { lapbFlowEntry 10 } + +lapbFlowXidReceived OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8206)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the XID frame most + recently received. If no XID frame has been + received, this will be an OCTET STRING of + zero length." + REFERENCE "ISO 8885" + ::= { lapbFlowEntry 11 } + + +-- ########################################################### +-- LAPB XID Table +-- ########################################################### + +-- Support for the lapbXidTable is mandatory for all agents +-- of systems that have a LAPB implementation using XID +-- negotiation. Agents of systems without XID negotiation +-- support should not implement this table. + +lapbXidTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbXidEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table defines values to use for XID + negotiation that are not found in the + lapbAdmnTable. This table is optional for + implementations that don't support XID and + mandatory for implementations that do + initiate XID negotiation." + ::= { lapb 4 } + +lapbXidEntry OBJECT-TYPE + SYNTAX LapbXidEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "XId negotiation parameter values for a + specific LAPB." + INDEX { lapbXidIndex } + ::= { lapbXidTable 1 } + + +LapbXidEntry ::= SEQUENCE { + lapbXidIndex + IfIndexType, + lapbXidAdRIdentifier + OCTET STRING, + lapbXidAdRAddress + OCTET STRING, + lapbXidParameterUniqueIdentifier + OCTET STRING, + lapbXidGroupAddress + OCTET STRING, + lapbXidPortNumber + OCTET STRING, + lapbXidUserDataSubfield + OCTET STRING + } + +lapbXidIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbXidEntry 1 } + +lapbXidAdRIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the Address Resolution + Identifier. A zero length string indicates + no Identifier value has been assigned." + REFERENCE "ISO 8885 Table 2, Name: Identifier" + DEFVAL { ''h } + ::= { lapbXidEntry 2 } + +lapbXidAdRAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the Address Resolution + Address. A zero length string indicates no + Address value has been assigned." + REFERENCE "ISO 8885 Table 2, Name: Address" + DEFVAL { ''h } + ::= { lapbXidEntry 3 } + +lapbXidParameterUniqueIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the parameter unique + Identifier. A zero length string indicates + no Unique identifier value has been + assigned." + REFERENCE "ISO 8885 Table 3, Name: Identifier" + DEFVAL { ''h } + ::= { lapbXidEntry 4 } + +lapbXidGroupAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the parameter Group address. + A zero length string indicates no Group + address value has been assigned." + REFERENCE "ISO 8885 Table 3, Name: Group address" + DEFVAL { ''h } + ::= { lapbXidEntry 5 } + +lapbXidPortNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number assigned for this link. A + zero length string indicates no local port + number identifier has been assigned." + REFERENCE "ISO 8885 Table 3, Name: Port number" + DEFVAL { ''h } + ::= { lapbXidEntry 6 } + +lapbXidUserDataSubfield OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8206)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A user data subfield, if any, to be + transmitted in an XID frame. A zero length + frame indicates no user data subfield has + been assigned. The octet string should + include both the User data identifier and + User data field as shown in Figures 1 and + 4." + REFERENCE "ISO 8885 section 4.3" + DEFVAL { ''h } + ::= { lapbXidEntry 7 } + + +-- ########################################################### +-- LAPB protocol versions +-- ########################################################### + +lapbProtocolVersion OBJECT IDENTIFIER + ::= { lapb 5 } + +lapbProtocolIso7776v1986 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 1 } + +lapbProtocolCcittV1980 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 2 } + +lapbProtocolCcittV1984 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 3 } + + + +-- The following describes some of the MIB-II interface +-- objects and their relationship with the objects in this +-- MIB extension. + +-- ifDescr: describes the interface. It should include +-- identification information for the physical line and a +-- description of the network. For connections to PDNs, +-- it should name the PDN. + +-- ifMtu: the maximum number of octets an upper layer can +-- pass to this interface as a single frame. + +-- ifSpeed: + +-- ifAdminStatus: + +-- ifOperStatus: + +-- ifLastChange: the last time the state of the interface +-- changed. A reset is considered an instantaneous change to +-- the ndm state and back to abm or abme. This will be the +-- last time that lapbFlowChangeReason and lapbFlowChanges +-- changed. + +-- ifInOctets: contains the number of octets +-- received from the peer LAPB including FCS. + +-- ifInUcastPkts: contains the number of I-frames delivered +-- by this interface to a higher layer interface. + +-- ifInDiscards: contains the number of received +-- frames discarded because of internal conditions +-- (such as lack of buffering). + +-- ifInErrors: contains the number of Invalid frames received. +-- This does not have any relationship with the number REJ, +-- or RNR frames sent or received. + +-- ifInUnknownProtos: contains the number of frames +-- that were correct but were dropped because they +-- were inappropriate for the current state. This +-- includes an invalid Poll bit, an unknown address, +-- or other condition such as an RNR when connection +-- not established. This also includes the number of +-- DISC or other frames that were ignored because the +-- link was not established and this interface was not +-- configured to perform link setup on that type frame. + +-- ifOutOctets: number of octets sent to peer including +-- FCS octets. + +-- ifOutUcastPkts: number of I-frames received from +-- a higher layer for transmission to peer. + +-- ifOutDiscards: number of frames to be sent that were +-- dropped due to internal conditions such as buffering etc. + +-- ifOutErrors: number of transmissions that failed +-- due to errors or were considered invalid by the receiver. +-- This does not have any relationship with the number REJ, +-- or RNR frames sent or received. + +-- ifOutQLen: number of frames waiting to be transmitted. + + +-- This MIB does not provide any support for: +-- Multilink procedure (MLP) in ISO 7776 section 6 +-- LLC Pbit timer +-- LLC REJ timer +-- LLC Busy State Timer 7.8.1.4 + +-- ########################################################### + +END diff --git a/mibs/ietf/RFC1382-MIB b/mibs/ietf/RFC1382-MIB new file mode 100644 index 0000000..cc9bcbc --- /dev/null +++ b/mibs/ietf/RFC1382-MIB @@ -0,0 +1,2625 @@ +RFC1382-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, Gauge, TimeTicks + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + DisplayString, transmission + FROM RFC1213-MIB + TRAP-TYPE + FROM RFC-1215 + EntryStatus + FROM RFC1271-MIB + PositiveInteger, + IfIndexType + FROM RFC1381-MIB; + +x25 OBJECT IDENTIFIER ::= { transmission 5 } + + +-- Support of the X25 subtree and all subtrees under it +-- is mandatory for all agents of system that implement X.25. + +X121Address ::= OCTET STRING (SIZE(0..17)) + -- 0 to 17 bytes in length containing the ASCII + -- characters [0-9], each octet contains one digit + -- of the address. + + +-- ########################################################### +-- X.25 Administration Table +-- ########################################################### + +x25AdmnTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25AdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains the administratively + set configuration parameters for an X.25 + Packet Level Entity (PLE). + + Most of the objects in this table have + corresponding objects in the x25OperTable. + This table contains the values as last set + by the administrator. The x25OperTable + contains the values actually in use by an + X.25 PLE. + + Changing an administrative value may or may + not change a current operating value. The + operating value may not change until the + interface is restarted. Some + implementations may change the values + immediately upon changing the administrative + table. All implementations are required to + load the values from the administrative + table when initializing a PLE." + ::= { x25 1 } + +x25AdmnEntry OBJECT-TYPE + SYNTAX X25AdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25AdmnTable." + INDEX { x25AdmnIndex } + ::= { x25AdmnTable 1 } + +X25AdmnEntry ::= SEQUENCE { + x25AdmnIndex + IfIndexType, + x25AdmnInterfaceMode + INTEGER, + x25AdmnMaxActiveCircuits + INTEGER, + x25AdmnPacketSequencing + INTEGER, + x25AdmnRestartTimer + PositiveInteger, + x25AdmnCallTimer + PositiveInteger, + x25AdmnResetTimer + PositiveInteger, + x25AdmnClearTimer + PositiveInteger, + x25AdmnWindowTimer + PositiveInteger, + x25AdmnDataRxmtTimer + PositiveInteger, + x25AdmnInterruptTimer + PositiveInteger, + x25AdmnRejectTimer + PositiveInteger, + x25AdmnRegistrationRequestTimer + PositiveInteger, + x25AdmnMinimumRecallTimer + PositiveInteger, + x25AdmnRestartCount + INTEGER, + x25AdmnResetCount + INTEGER, + x25AdmnClearCount + INTEGER, + x25AdmnDataRxmtCount + INTEGER, + x25AdmnRejectCount + INTEGER, + x25AdmnRegistrationRequestCount + INTEGER, + x25AdmnNumberPVCs + INTEGER, + x25AdmnDefCallParamId + OBJECT IDENTIFIER, + x25AdmnLocalAddress + X121Address, + x25AdmnProtocolVersionSupported + OBJECT IDENTIFIER + } + +x25AdmnIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25AdmnEntry 1 } + +x25AdmnInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies DCE/DTE mode in which the + interface operates. A value of dxe + indicates the mode will be determined by XID + negotiation." + REFERENCE "10733 5.9 interfaceMode" + ::= { x25AdmnEntry 2 } + +x25AdmnMaxActiveCircuits OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of circuits this PLE can + support; including PVCs." + REFERENCE "10733 5.9 maxActiveCircuits; + See ISO 8208, Section 3.7" + ::= { x25AdmnEntry 3 } + +x25AdmnPacketSequencing OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The modulus of the packet sequence number + space." + REFERENCE "10733 extendedPacketSequencing; + See ISO 8208 Section 7.1.1" + ::= { x25AdmnEntry 4 } + +x25AdmnRestartTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T20 restart timer in milliseconds." + REFERENCE "10733 5.9 restartTime + See ISO 8208 Section 4.1, table 26" + ::= { x25AdmnEntry 5 } + +x25AdmnCallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T21 Call timer in milliseconds." + REFERENCE "10733 callTime; + See ISO 8208 Section 5.2.1, table 26" + ::= { x25AdmnEntry 6 } + +x25AdmnResetTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T22 Reset timer in milliseconds." + REFERENCE "10733 resetTime; + See ISO 8208 Section 8.1, table 26" + ::= { x25AdmnEntry 7 } + +x25AdmnClearTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T23 Clear timer in milliseconds." + REFERENCE "10733 clearTime; + See ISO 8208 Section 5.5.1, table 26" + ::= { x25AdmnEntry 8 } + +x25AdmnWindowTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T24 window status transmission timer in + milliseconds. A value of 2147483647 + indicates no window timer in use." + REFERENCE "10733 5.10.1 windowTime (opt); + See ISO 8208 Section 11.2.2, table 26" + ::= { x25AdmnEntry 9 } + +x25AdmnDataRxmtTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T25 data retransmission timer in + milliseconds. A value of 2147483647 + indicates no data retransmission timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionTime (opt); + See ISO 8208 Section 11.2.1, table 26" + ::= { x25AdmnEntry 10 } + +x25AdmnInterruptTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T26 interrupt timer in milliseconds. A + value of 2147483647 indicates no interrupt + timer in use." + REFERENCE "10733 interruptTime; + See ISO 8208 Section 6.8.1, table 26" + ::= { x25AdmnEntry 11 } + +x25AdmnRejectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T27 Reject retransmission timer in + milliseconds. A value of 2147483647 + indicates no reject timer in use." + REFERENCE "10733 5.10.1 dataRejectTime (opt); + See ISO 8208 Section 13.4.1, table 26" + ::= { x25AdmnEntry 12 } + +x25AdmnRegistrationRequestTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T28 registration timer in milliseconds. + A value of 2147483647 indicates no + registration timer in use." + REFERENCE "10733 5.8.1 registrationRequestTime (opt) + See ISO 8208 Section 13.1.1.1, table 26" + ::= { x25AdmnEntry 13 } + +x25AdmnMinimumRecallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Minimum time interval between unsuccessful + call attempts in milliseconds." + REFERENCE "10733 5.9 minimum RecallTimer" + ::= { x25AdmnEntry 14 } + +x25AdmnRestartCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R20 restart retransmission count." + REFERENCE "10733 5.9 restartCount; + See ISO 8208 Section 4.1, table 27" + ::= { x25AdmnEntry 15 } + +x25AdmnResetCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The r22 Reset retransmission count." + REFERENCE "10733 resetCount; + See section ISO 8208 8.1, table 27" + ::= { x25AdmnEntry 16 } + +x25AdmnClearCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The r23 Clear retransmission count." + REFERENCE "10733 clearCount; + See ISO 8208 Section 5.5.1, table 27" + ::= { x25AdmnEntry 17 } + +x25AdmnDataRxmtCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R25 Data retransmission count. This + value is irrelevant if the + x25AdmnDataRxmtTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionCount (opt) + See ISO 8208 Section 11.2.1, table 27" + ::= { x25AdmnEntry 18 } + +x25AdmnRejectCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R27 reject retransmission count. This + value is irrelevant if the + x25AdmnRejectTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRejectCount (opt)" + ::= { x25AdmnEntry 19 } + +x25AdmnRegistrationRequestCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R28 Registration retransmission Count. + This value is irrelevant if the + x25AdmnRegistrationRequestTimer indicates no + timer in use." + REFERENCE "10733 5.8.1 registrationRequestCount (opt); + See ISO 8208 Section 13.1.1.1, table 27" + ::= { x25AdmnEntry 20 } + +x25AdmnNumberPVCs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of PVC configured for this PLE. + The PVCs use channel numbers from 1 to this + number." + ::= { x25AdmnEntry 21 } + +x25AdmnDefCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable which contains the default + call parameters for this PLE." + ::= { x25AdmnEntry 22 } + +x25AdmnLocalAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The local address for this PLE subnetwork. + A zero length address maybe returned by PLEs + that only support PVCs." + REFERENCE "10733 5.9 localDTEAddress" + ::= { x25AdmnEntry 23 } + +x25AdmnProtocolVersionSupported OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the version of the X.25 protocol + this interface should support. Object + identifiers for common versions are defined + below in the x25ProtocolVersion subtree." + REFERENCE "10733 5.9 protocolVersionSupported" + ::= { x25AdmnEntry 24 } + + +-- ########################################################### +-- X.25 Operational Table +-- ########################################################### + +x25OperTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25OperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The operation parameters in use by the X.25 + PLE." + ::= { x25 2 } + +x25OperEntry OBJECT-TYPE + SYNTAX X25OperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25OperTable." + INDEX { x25OperIndex } + ::= { x25OperTable 1 } + +X25OperEntry ::= SEQUENCE { + x25OperIndex + IfIndexType, + x25OperInterfaceMode + INTEGER, + x25OperMaxActiveCircuits + INTEGER, + x25OperPacketSequencing + INTEGER, + x25OperRestartTimer + PositiveInteger, + x25OperCallTimer + PositiveInteger, + x25OperResetTimer + PositiveInteger, + x25OperClearTimer + PositiveInteger, + x25OperWindowTimer + PositiveInteger, + x25OperDataRxmtTimer + PositiveInteger, + x25OperInterruptTimer + PositiveInteger, + x25OperRejectTimer + PositiveInteger, + x25OperRegistrationRequestTimer + PositiveInteger, + x25OperMinimumRecallTimer + PositiveInteger, + x25OperRestartCount + INTEGER, + x25OperResetCount + INTEGER, + x25OperClearCount + INTEGER, + x25OperDataRxmtCount + INTEGER, + x25OperRejectCount + INTEGER, + x25OperRegistrationRequestCount + INTEGER, + x25OperNumberPVCs + INTEGER, + x25OperDefCallParamId + OBJECT IDENTIFIER, + x25OperLocalAddress + X121Address, + x25OperDataLinkId + OBJECT IDENTIFIER, + x25OperProtocolVersionSupported + OBJECT IDENTIFIER + } + +x25OperIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 interface." + ::= { x25OperEntry 1 } + +x25OperInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies DCE/DTE mode in which the + interface operates. A value of dxe + indicates the role will be determined by XID + negotiation at the Link Layer and that + negotiation has not yet taken place." + REFERENCE "10733 5.9 interfaceMode" + ::= { x25OperEntry 2 } + +x25OperMaxActiveCircuits OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Maximum number of circuits this PLE can + support." + REFERENCE "10733 5.9 maxActiveCircuits + See ISO 8208, Section 3.7" + ::= { x25OperEntry 3 } + +x25OperPacketSequencing OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The modulus of the packet sequence number + space." + REFERENCE "10733 extendedPacketSequencing; + See ISO 8208 Section 7.1.1" + ::= { x25OperEntry 4 } + +x25OperRestartTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T20 restart timer in milliseconds." + REFERENCE "10733 5.9 restartTime; + See ISO 8208 Section 4.1, table 26" + ::= { x25OperEntry 5 } + +x25OperCallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T21 Call timer in milliseconds." + REFERENCE "10733 callTime; + See ISO 8208 Section 5.2.1, table 26" + ::= { x25OperEntry 6 } + +x25OperResetTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T22 Reset timer in milliseconds." + REFERENCE "10733 resetTime; + See ISO 8208 Section 8.1, table 26" + ::= { x25OperEntry 7 } + +x25OperClearTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T23 Clear timer in milliseconds." + REFERENCE "10733 clearTime; + See ISO 8208 Section 5.5.1, table 26" + ::= { x25OperEntry 8 } + +x25OperWindowTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T24 window status transmission timer + milliseconds. A value of 2147483647 + indicates no window timer in use." + REFERENCE "10733 5.10.1 windowTime (opt); + See ISO 8208 Section 11.2.2, table 26" + ::= { x25OperEntry 9 } + +x25OperDataRxmtTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T25 Data Retransmission timer in + milliseconds. A value of 2147483647 + indicates no data retransmission timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionTime (opt); + See ISO 8208 Section 11.2.1, table 26" + ::= { x25OperEntry 10 } + +x25OperInterruptTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T26 Interrupt timer in milliseconds. A + value of 2147483647 indicates interrupts are + not being used." + REFERENCE "10733 interruptTime; + See ISO 8208 Section 6.8.1, table 26" + ::= { x25OperEntry 11 } + +x25OperRejectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T27 Reject retransmission timer in + milliseconds. A value of 2147483647 + indicates no reject timer in use." + REFERENCE "10733 5.10.1 dataRejectTime (opt); + See ISO 8208 Section 13.4.1, table 26" + ::= { x25OperEntry 12 } + +x25OperRegistrationRequestTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T28 registration timer in milliseconds. + A value of 2147483647 indicates no + registration timer in use." + REFERENCE "10733 5.8.1 registrationRequestTime (opt); + See ISO 8208 Section 13.1.1.1, table 26" + ::= { x25OperEntry 13 } + +x25OperMinimumRecallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Minimum time interval between unsuccessful + call attempts in milliseconds." + REFERENCE "10733 5.9 minimum RecallTimer" + ::= { x25OperEntry 14 } + +x25OperRestartCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R20 restart retransmission count." + REFERENCE "10733 5.9 restartCount + See ISO 8208 Section 4.1, table 27" + ::= { x25OperEntry 15 } + +x25OperResetCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The r22 Reset retransmission count." + REFERENCE "10733 resetCount; + See section ISO 8208 8.1, table 27" + ::= { x25OperEntry 16 } + +x25OperClearCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The r23 Clear retransmission count." + REFERENCE "10733 clearCount; + See ISO 8208 Section 5.5.1, table 27" + ::= { x25OperEntry 17 } + +x25OperDataRxmtCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R25 Data retransmission count. This + value is undefined if the + x25OperDataRxmtTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionCount (opt); + See ISO 8208 Section 11.2.1, table 27" + ::= { x25OperEntry 18 } + +x25OperRejectCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R27 reject retransmission count. This + value is undefined if the x25OperRejectTimer + indicates no timer in use." + REFERENCE "10733 5.10.1 dataRejectCount (opt)" + ::= { x25OperEntry 19 } + +x25OperRegistrationRequestCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R28 Registration retransmission Count. + This value is undefined if the + x25OperREgistrationRequestTimer indicates no + timer in use." + REFERENCE "10733 5.8.1 registrationRequestCount (opt); + See ISO 8208 Section 13.1.1.1, table 27" + ::= { x25OperEntry 20 } + +x25OperNumberPVCs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PVC configured for this PLE. + The PVCs use channel numbers from 1 to this + number." + ::= { x25OperEntry 21 } + +x25OperDefCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable that contains the default + call parameters for this PLE." + ::= { x25OperEntry 22 } + +x25OperLocalAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local address for this PLE subnetwork. + A zero length address maybe returned by PLEs + that only support PVCs." + REFERENCE "10733 5.9 localDTEAddress" + ::= { x25OperEntry 23 } + +x25OperDataLinkId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This identifies the instance of the index + object in the first table of the most device + specific MIB for the interface used by this + PLE." + ::= { x25OperEntry 24 } + +x25OperProtocolVersionSupported OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies the version of the X.25 protocol + this interface supports. Object identifiers + for common versions are defined below in the + x25ProtocolVersion subtree." + REFERENCE "10733 5.9 protocolVersionSupported" + ::= { x25OperEntry 25 } + + +-- MIB-II also provides: + +-- ifDescr: +-- On an X.25 interface this must include sufficient + +-- information to enable the system's administrator +-- to determine the appropriate configuration +-- information on a system having multiple X.25 +-- subnetworks. + +-- ifType: ddn-x25 or rfc877-x25 +-- an interface of type ddn-x25 will use an algorithm to +-- translate between X.121 address and IP addresses. +-- An interface of type rfc877-x25 will use a +-- configuration table to translate between X.121 +-- addresses and IP addresses. + +-- ifMtu: the maximum PDU a higher layer can pass to X.25 or +-- receive from X.25 + +-- ifSpeed: +-- This will be the value of the local clock for this line. +-- A value of zero indicates external clocking. + +-- ifAdminStatus: + +-- ifOperStatus + +-- ifLastChange + + +-- ########################################################### +-- X.25 Statistics Table +-- ########################################################### + +x25StatTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25StatEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Statistics information about this X.25 + PLE." + ::= { x25 3 } + +x25StatEntry OBJECT-TYPE + SYNTAX X25StatEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of the x25StatTable." + INDEX { x25StatIndex } + ::= { x25StatTable 1 } + +X25StatEntry ::= SEQUENCE { + x25StatIndex + IfIndexType, + x25StatInCalls + Counter, + x25StatInCallRefusals + Counter, + x25StatInProviderInitiatedClears + Counter, + x25StatInRemotelyInitiatedResets + Counter, + x25StatInProviderInitiatedResets + Counter, + x25StatInRestarts + Counter, + x25StatInDataPackets + Counter, + x25StatInAccusedOfProtocolErrors + Counter, + x25StatInInterrupts + Counter, + x25StatOutCallAttempts + Counter, + x25StatOutCallFailures + Counter, + x25StatOutInterrupts + Counter, + x25StatOutDataPackets + Counter, + x25StatOutgoingCircuits + Gauge, + x25StatIncomingCircuits + Gauge, + x25StatTwowayCircuits + Gauge, + x25StatRestartTimeouts + Counter, + x25StatCallTimeouts + Counter, + x25StatResetTimeouts + Counter, + x25StatClearTimeouts + Counter, + x25StatDataRxmtTimeouts + Counter, + x25StatInterruptTimeouts + Counter, + x25StatRetryCountExceededs + Counter, + x25StatClearCountExceededs + Counter + } + +x25StatIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 interface." + ::= { x25StatEntry 1 } + +x25StatInCalls OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incoming calls received." + ::= { x25StatEntry 2 } + +x25StatInCallRefusals OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incoming calls refused. This + includes calls refused by the PLE and by + higher layers. This also includes calls + cleared because of restricted fast select." + ::= { x25StatEntry 3 } + +x25StatInProviderInitiatedClears OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of clear requests with a cause + code other than DTE initiated." + REFERENCE "10733 providerInitiatedDisconnect" + ::= { x25StatEntry 4 } + +x25StatInRemotelyInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reset requests received with + cause code DTE initiated." + REFERENCE "10733 remotelyInitiatedResets" + ::= { x25StatEntry 5 } + +x25StatInProviderInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reset requests received with + cause code other than DTE initiated." + REFERENCE "10733 ProviderInitiatedResets" + ::= { x25StatEntry 6 } + +x25StatInRestarts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of remotely initiated (including + provider initiated) restarts experienced by + the PLE excluding the restart associated + with bringing up the PLE interface. This + only counts restarts received when the PLE + already has an established connection with + the remove PLE." + REFERENCE "10733 5.9 remotelyInitiatedRestarts" + ::= { x25StatEntry 7 } + +x25StatInDataPackets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data packets received." + REFERENCE "10733 5.9 dataPacketsReceived." + ::= { x25StatEntry 8 } + +x25StatInAccusedOfProtocolErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received containing a + procedure error cause code. These include + clear, reset, restart, or diagnostic + packets." + REFERENCE "CD 10733 5.9 accusedOfProtocolError" + ::= { x25StatEntry 9 } + +x25StatInInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets received by + the PLE or over the PVC/VC." + REFERENCE "10733 interruptPacketsReceived" + ::= { x25StatEntry 10 } + +x25StatOutCallAttempts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of calls attempted." + REFERENCE "10733 5.9 callAttempts" + ::= { x25StatEntry 11 } + +x25StatOutCallFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of call attempts which failed. + This includes calls that were cleared + because of restrictive fast select." + ::= { x25StatEntry 12 } + +x25StatOutInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets send by the + PLE or over the PVC/VC." + REFERENCE "10733 InterruptPacketsSent" + ::= { x25StatEntry 13 } + +x25StatOutDataPackets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data packets sent by this + PLE." + REFERENCE "10733 dataPacketSent" + ::= { x25StatEntry 14 } + +x25StatOutgoingCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active outgoing circuits. + This includes call requests sent but not yet + confirmed. This does not count PVCs." + ::= { x25StatEntry 15 } + +x25StatIncomingCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active Incoming Circuits. + This includes call indications received but + not yet acknowledged. This does not count + PVCs." + ::= { x25StatEntry 16 } + +x25StatTwowayCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active two-way Circuits. + This includes call requests sent but not yet + confirmed. This does not count PVCs." + ::= { x25StatEntry 17 } + +x25StatRestartTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T20 restart timer + expired." + REFERENCE "10733 5.9 restartTimeouts" + ::= { x25StatEntry 18 } + +x25StatCallTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T21 call timer + expired." + REFERENCE "10733 5.9 callTimeouts" + ::= { x25StatEntry 19 } + +x25StatResetTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T22 reset timer + expired." + REFERENCE "10733 5.9 resetTimeouts" + ::= { x25StatEntry 20 } + +x25StatClearTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T23 clear timer + expired." + REFERENCE "10733 5.9 clearTimeouts" + ::= { x25StatEntry 21 } + +x25StatDataRxmtTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T25 data timer + expired." + REFERENCE "10733 5.9 dataRetransmissionsTimerExpiries" + ::= { x25StatEntry 22 } + +x25StatInterruptTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T26 interrupt timer + expired." + REFERENCE "10733 5.9 interruptTimerExpires" + ::= { x25StatEntry 23 } + +x25StatRetryCountExceededs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a retry counter was + exhausted." + REFERENCE "10733 5.9 retryCountsExceeded" + ::= { x25StatEntry 24 } + +x25StatClearCountExceededs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the R23 clear count was + exceeded." + REFERENCE "10733 5.9 clearCountsExceeded" + ::= { x25StatEntry 25 } + + +-- MIB-II also contains: + +-- ifInOctets: Number of data octets delivered to upper +-- layer entities. + +-- ifInUcastPkts: Number of packets with a clear M-bit +-- delivered to higher layer entities. + +-- ifDiscards: Number of packets dropped for lack of buffering + +-- ifInErrors: Number of packets received containing errors + -- REFERENCE ProtocolErrorsDetectedLocally + +-- ifInUnknownProtos: Number of packets with unknown circuit +-- identifier. + +-- ifOutOctets: Number of data octets delivered by +-- X.25 to upper layers. + +-- ifOutUcastPkts: Number of packets with a clear M-bit +-- received from higher layer entities. + + +-- ########################################################### +-- X.25 Channel Table +-- ########################################################### + +x25ChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain information about the + channel number configuration in an X.25 PLE. + These values are the configured values. + changes in these values after the interfaces + has started may not be reflected in the + operating PLE." + REFERENCE "See ISO 8208, Section 3.7" + ::= { x25 4 } + +x25ChannelEntry OBJECT-TYPE + SYNTAX X25ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25ChannelTable." + REFERENCE "This provides the information available + in 10733 logicalChannelAssignments." + INDEX { x25ChannelIndex } + ::= { x25ChannelTable 1 } + +X25ChannelEntry ::= SEQUENCE { + x25ChannelIndex + IfIndexType, + x25ChannelLIC + INTEGER, + x25ChannelHIC + INTEGER, + x25ChannelLTC + INTEGER, + x25ChannelHTC + INTEGER, + x25ChannelLOC + INTEGER, + x25ChannelHOC + INTEGER + } + +x25ChannelIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25ChannelEntry 1 } + +x25ChannelLIC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest Incoming channel." + ::= { x25ChannelEntry 2 } + +x25ChannelHIC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest Incoming channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 3 } + +x25ChannelLTC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest Two-way channel." + ::= { x25ChannelEntry 4 } + +x25ChannelHTC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest Two-way channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 5 } + +x25ChannelLOC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest outgoing channel." + ::= { x25ChannelEntry 6 } + +x25ChannelHOC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest outgoing channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 7 } + + + + +-- ########################################################### +-- X25 Per Circuits Information Table +-- ########################################################### + +x25CircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25CircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain general information + about a specific circuit of an X.25 PLE." + ::= { x25 5 } + +x25CircuitEntry OBJECT-TYPE + SYNTAX X25CircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25CircuitTable." + INDEX { x25CircuitIndex, + x25CircuitChannel } + ::= { x25CircuitTable 1 } + +X25CircuitEntry ::= SEQUENCE { + x25CircuitIndex + IfIndexType, + x25CircuitChannel + INTEGER, + x25CircuitStatus + INTEGER, + x25CircuitEstablishTime + TimeTicks, + x25CircuitDirection + INTEGER, + x25CircuitInOctets + Counter, + x25CircuitInPdus + Counter, + x25CircuitInRemotelyInitiatedResets + Counter, + x25CircuitInProviderInitiatedResets + Counter, + x25CircuitInInterrupts + Counter, + x25CircuitOutOctets + Counter, + x25CircuitOutPdus + Counter, + x25CircuitOutInterrupts + Counter, + x25CircuitDataRetransmissionTimeouts + Counter, + x25CircuitResetTimeouts + Counter, + x25CircuitInterruptTimeouts + Counter, + x25CircuitCallParamId + OBJECT IDENTIFIER, + x25CircuitCalledDteAddress + X121Address, + x25CircuitCallingDteAddress + X121Address, + x25CircuitOriginallyCalledAddress + X121Address, + x25CircuitDescr + DisplayString + } + +x25CircuitIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25CircuitEntry 1 } + +x25CircuitChannel OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The channel number for this circuit." + ::= { x25CircuitEntry 2 } + +x25CircuitStatus OBJECT-TYPE + SYNTAX INTEGER { -- state table states + invalid (1), + closed (2), -- (p1) + calling (3), -- (p2,p3,p5) + open (4), -- (p4) + clearing (5), -- (p6,p7) + pvc (6), + pvcResetting (7), + startClear (8), -- Close cmd + startPvcResetting (9), -- Reset cmd + other (10) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object reports the current status of + the circuit. + + An existing instance of this object can only + be set to startClear, startPvcResetting, or + invalid. An instance with the value calling + or open can only be set to startClear and + that action will start clearing the circuit. + An instance with the value PVC can only be + set to startPvcResetting or invalid and that + action resets the PVC or deletes the circuit + respectively. The values startClear or + startPvcResetting will never be returned by + an agent. An attempt to set the status of + an existing instance to a value other than + one of these values will result in an error. + + A non-existing instance can be set to PVC to + create a PVC if the implementation supports + dynamic creation of PVCs. Some + implementations may only allow creation and + deletion of PVCs if the interface is down. + Since the instance identifier will supply + the PLE index and the channel number, + setting this object alone supplies + sufficient information to create the + instance. All the DEFVAL clauses for the + other objects of this table are appropriate + for creating a PVC; PLEs creating entries + for placed or accepted calls will use values + appropriate for the call rather than the + value of the DEFVAL clause. Two managers + trying to create the same PVC can determine + from the return code which manager succeeded + and which failed (the failing manager fails + because it can not set a value of PVC for an + existing object). + An entry in the closed or invalid state may + be deleted or reused at the agent's + convence. If the entry is kept in the + closed state, the values of the parameters + associated with the entry must be correct. + Closed implies the values in the circuit + table are correct. + + The value of invalid indicates the other + values in the table are invalid. Many + agents may never return a value of invalid + because they dynamically allocate and free + unused table entries. An agent for a + statically configured systems can return + invalid to indicate the entry has not yet + been used so the counters contain no + information." + REFERENCE "See ISO 8208, + table 33 for (p) state table" + ::= { x25CircuitEntry 3 } + +x25CircuitEstablishTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the channel was + associated with this circuit. For outgoing + SVCs, this is the time the first call packet + was sent. For incoming SVCs, this is the + time the call indication was received. For + PVCs this is the time the PVC was able to + pass data to a higher layer entity without + loss of data." + ::= { x25CircuitEntry 4 } + +x25CircuitDirection OBJECT-TYPE + SYNTAX INTEGER { + incoming (1), + outgoing (2), + pvc (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The direction of the call that established + this circuit." + REFERENCE "10733 direction" + DEFVAL { pvc } + ::= { x25CircuitEntry 5 } + + -- X25 Circuit data flow statistics + +x25CircuitInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets of user data delivered + to upper layer." + REFERENCE "5.11 octetsReceivedCounter" + ::= { x25CircuitEntry 6 } + +x25CircuitInPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs received for this + circuit." + REFERENCE "10733 5.11 dataPacketsReceived" + ::= { x25CircuitEntry 7 } + +x25CircuitInRemotelyInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Resets received for this + circuit with cause code of DTE initiated." + REFERENCE "10733 remotelyInitiatedResets" + ::= { x25CircuitEntry 8 } + +x25CircuitInProviderInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Resets received for this + circuit with cause code other than DTE + initiated." + REFERENCE "10733 ProviderInitiatedResets" + ::= { x25CircuitEntry 9 } + +x25CircuitInInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets received + for this circuit." + REFERENCE "10733 interruptPacketsReceived" + ::= { x25CircuitEntry 10 } + +x25CircuitOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets of user data sent for + this circuit." + REFERENCE "10733 5.11 octetsSentCounter" + ::= { x25CircuitEntry 11 } + +x25CircuitOutPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs sent for this circuit." + REFERENCE "10733 5.11 dataPacketsSent" + ::= { x25CircuitEntry 12 } + +x25CircuitOutInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets sent on + this circuit." + REFERENCE "10733 interruptPacketsSent" + ::= { x25CircuitEntry 13 } + + + -- X25 circuit timer statistics + +x25CircuitDataRetransmissionTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T25 data + retransmission timer expired for this + circuit." + REFERENCE "10733 5.11 dataRetransmissionTimerExpiries" + ::= { x25CircuitEntry 14 } + +x25CircuitResetTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T22 reset timer + expired for this circuit." + REFERENCE "10733 5.11 resetTimeouts" + ::= { x25CircuitEntry 15 } + +x25CircuitInterruptTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T26 Interrupt timer + expired for this circuit." + REFERENCE "10733 interruptTimerExpiries" + ::= { x25CircuitEntry 16 } + +x25CircuitCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable which contains the call + parameters in use with this circuit. The + entry referenced must contain the values + that are currently in use by the circuit + rather than proposed values. A value of + NULL indicates the circuit is a PVC or is + using all the default parameters." + DEFVAL { {0 0} } + ::= { x25CircuitEntry 17 } + +x25CircuitCalledDteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the called + address from the call indication packet. + For outgoing calls, this is the called + address from the call confirmation packet. + This will be zero length for PVCs." + REFERENCE "10733 calledDTEAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 18 } + +x25CircuitCallingDteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the calling + address from the call indication packet. + For outgoing calls, this is the calling + address from the call confirmation packet. + This will be zero length for PVCs." + REFERENCE "10733 callingDTEAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 19 } + +x25CircuitOriginallyCalledAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the address in + the call Redirection or Call Deflection + Notification facility if the call was + deflected or redirected, otherwise it will + be called address from the call indication + packet. For outgoing calls, this is the + address from the call request packet. This + will be zero length for PVCs." + REFERENCE "10733 originallyCalledAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 20 } + +x25CircuitDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A descriptive string associated with this + circuit. This provides a place for the + agent to supply any descriptive information + it knows about the use or owner of the + circuit. The agent may return the process + identifier and user name for the process + using the circuit. Alternative the agent + may return the name of the configuration + entry that caused a bridge to establish the + circuit. A zero length value indicates the + agent doesn't have any additional + information." + DEFVAL { ''h } + ::= { x25CircuitEntry 21 } + + + +-- ########################################################### +-- The Cleared Circuit Table +-- ########################################################### + +x25ClearedCircuitEntriesRequested OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested number of entries for the + agent to keep in the x25ClearedCircuit + table." + ::= { x25 6 } + +x25ClearedCircuitEntriesGranted OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The actual number of entries the agent will + keep in the x25ClearedCircuit Table." + ::= { x25 7 } + +x25ClearedCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25ClearedCircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of entries about closed circuits. + Entries must be made in this table whenever + circuits are closed and the close request or + close indication packet contains a clearing + cause other than DTE Originated or a + Diagnostic code field other than Higher + Layer Initiated disconnection-normal. An + agent may optionally make entries for normal + closes (to record closing facilities or + other information). + + Agents will delete the oldest entry in the + table when adding a new entry would exceed + agent resources. Agents are required to + keep the last entry put in the table and may + keep more entries. The object + x25OperClearEntriesGranted returns the + maximum number of entries kept in the + table." + REFERENCE "See ISO 8208 Section 12.2.3.1.1 + and 12.2.3.1.2" + ::= { x25 8 } + +x25ClearedCircuitEntry OBJECT-TYPE + SYNTAX X25ClearedCircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a cleared circuit." + INDEX { x25ClearedCircuitIndex } + ::= { x25ClearedCircuitTable 1 } + +X25ClearedCircuitEntry ::= SEQUENCE { + x25ClearedCircuitIndex + PositiveInteger, + x25ClearedCircuitPleIndex + IfIndexType, + x25ClearedCircuitTimeEstablished + TimeTicks, + x25ClearedCircuitTimeCleared + TimeTicks, + x25ClearedCircuitChannel + INTEGER, + x25ClearedCircuitClearingCause + INTEGER, + x25ClearedCircuitDiagnosticCode + INTEGER, + x25ClearedCircuitInPdus + Counter, + x25ClearedCircuitOutPdus + Counter, + x25ClearedCircuitCalledAddress + X121Address, + x25ClearedCircuitCallingAddress + X121Address, + x25ClearedCircuitClearFacilities + OCTET STRING + } + +x25ClearedCircuitIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely distinguishes one + entry in the clearedCircuitTable from + another. This index will start at + 2147483647 and will decrease by one for each + new entry added to the table. Upon reaching + one, the index will reset to 2147483647. + Because the index starts at 2147483647 and + decreases, a manager may do a getnext on + entry zero and obtain the most recent entry. + When the index has the value of 1, the next + entry will delete all entries in the table + and that entry will be numbered 2147483647." + ::= { x25ClearedCircuitEntry 1 } + +x25ClearedCircuitPleIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of ifIndex for the PLE which + cleared the circuit that created the entry." + ::= { x25ClearedCircuitEntry 2 } + +x25ClearedCircuitTimeEstablished OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the circuit was + established. This will be the same value + that was in the x25CircuitEstablishTime for + the circuit." + ::= { x25ClearedCircuitEntry 3 } + +x25ClearedCircuitTimeCleared OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the circuit was + cleared. For locally initiated clears, this + will be the time when the clear confirmation + was received. For remotely initiated + clears, this will be the time when the clear + indication was received." + ::= { x25ClearedCircuitEntry 4 } + +x25ClearedCircuitChannel OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The channel number for the circuit that was + cleared." + ::= { x25ClearedCircuitEntry 5 } + +x25ClearedCircuitClearingCause OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Clearing Cause from the clear request + or clear indication packet that cleared the + circuit." + REFERENCE "See ISO 8208 Section 12.2.3.1.1" + ::= { x25ClearedCircuitEntry 6 } + +x25ClearedCircuitDiagnosticCode OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Diagnostic Code from the clear request + or clear indication packet that cleared the + circuit." + REFERENCE "See ISO 8208 Section 12.2.3.1.2" + ::= { x25ClearedCircuitEntry 7 } + +x25ClearedCircuitInPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs received on the + circuit." + ::= { x25ClearedCircuitEntry 8 } + +x25ClearedCircuitOutPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs transmitted on the + circuit." + ::= { x25ClearedCircuitEntry 9 } + +x25ClearedCircuitCalledAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The called address from the cleared + circuit." + ::= { x25ClearedCircuitEntry 10 } + +x25ClearedCircuitCallingAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The calling address from the cleared + circuit." + ::= { x25ClearedCircuitEntry 11 } + +x25ClearedCircuitClearFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..109)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The facilities field from the clear request + or clear indication packet that cleared the + circuit. A size of zero indicates no + facilities were present." + ::= { x25ClearedCircuitEntry 12 } + + + + +-- ########################################################### +-- The Call Parameter Table +-- ########################################################### + +x25CallParmTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25CallParmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain the parameters that + can be varied between X.25 calls. The + entries in this table are independent of the + PLE. There exists only one of these tables + for the entire system. The indexes for the + entries are independent of any PLE or any + circuit. Other tables reference entries in + this table. Entries in this table can be + used for default PLE parameters, for + parameters to use to place/answer a call, + for the parameters currently in use for a + circuit, or parameters that were used by a + circuit. + + The number of references to a given set of + parameters can be found in the + x25CallParmRefCount object sharing the same + instance identifier with the parameters. + The value of this reference count also + affects the access of the objects in this + table. An object in this table with the + same instance identifier as the instance + identifier of an x25CallParmRefCount must be + consider associated with that reference + count. An object with an associated + reference count of zero can be written (if + its ACCESS clause allows it). An object + with an associated reference count greater + than zero can not be written (regardless of + the ACCESS clause). This ensures that a set + of call parameters being referenced from + another table can not be modified or changed + in a ways inappropriate for continued use by + that table." + ::= { x25 9 } + +x25CallParmEntry OBJECT-TYPE + SYNTAX X25CallParmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25CallParmTable." + INDEX { x25CallParmIndex } + ::= { x25CallParmTable 1 } + +X25CallParmEntry ::= SEQUENCE { + x25CallParmIndex + PositiveInteger, + x25CallParmStatus + EntryStatus, + x25CallParmRefCount + PositiveInteger, + x25CallParmInPacketSize + INTEGER, + x25CallParmOutPacketSize + INTEGER, + x25CallParmInWindowSize + INTEGER, + x25CallParmOutWindowSize + INTEGER, + x25CallParmAcceptReverseCharging + INTEGER, + x25CallParmProposeReverseCharging + INTEGER, + x25CallParmFastSelect + INTEGER, + x25CallParmInThruPutClasSize + INTEGER, + x25CallParmOutThruPutClasSize + INTEGER, + x25CallParmCug + DisplayString, + x25CallParmCugoa + DisplayString, + x25CallParmBcug + DisplayString, + x25CallParmNui + OCTET STRING, + x25CallParmChargingInfo + INTEGER, + x25CallParmRpoa + DisplayString, + x25CallParmTrnstDly + INTEGER, + x25CallParmCallingExt + DisplayString, + x25CallParmCalledExt + DisplayString, + x25CallParmInMinThuPutCls + INTEGER, + x25CallParmOutMinThuPutCls + INTEGER, + x25CallParmEndTrnsDly + OCTET STRING, + x25CallParmPriority + OCTET STRING, + x25CallParmProtection + DisplayString, + x25CallParmExptData + INTEGER, + x25CallParmUserData + OCTET STRING, + x25CallParmCallingNetworkFacilities + OCTET STRING, + x25CallParmCalledNetworkFacilities + OCTET STRING + } + +x25CallParmIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that distinguishes this entry from + another entry. Entries in this table are + referenced from other objects which identify + call parameters. + + It is impossible to know which other objects + in the MIB reference entries in the table by + looking at this table. Because of this, + changes to parameters must be accomplished + by creating a new entry in this table and + then changing the referencing table to + identify the new entry. + + Note that an agent will only use the values + in this table when another table is changed + to reference those values. The number of + other tables that reference an index object + in this table can be found in + x25CallParmRefCount. The value of the + reference count will affect the writability + of the objects as explained above. + + Entries in this table which have a reference + count of zero maybe deleted at the convence + of the agent. Care should be taken by the + agent to give the NMS sufficient time to + create a reference to newly created entries. + + Should a Management Station not find a free + index with which to create a new entry, it + may feel free to delete entries with a + reference count of zero. However in doing + so the Management Station much realize it + may impact other Management Stations." + ::= { x25CallParmEntry 1 } + +x25CallParmStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this call parameter entry. + See RFC 1271 for details of usage." + ::= { x25CallParmEntry 2 } + +x25CallParmRefCount OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of references know by a + management station to exist to this set of + call parameters. This is the number of + other objects that have returned a value of, + and will return a value of, the index for + this set of call parameters. Examples of + such objects are the x25AdmnDefCallParamId, + x25OperDataLinkId, or x25AdmnDefCallParamId + objects defined above." + ::= { x25CallParmEntry 3 } + +x25CallParmInPacketSize OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum receive packet size in octets + for a circuit. A size of zero for a circuit + means use the PLE default size. A size of + zero for the PLE means use a default size of + 128." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.1.1" + DEFVAL { 128 } + ::= { x25CallParmEntry 4 } + +x25CallParmOutPacketSize OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum transmit packet size in octets + for a circuit. A size of zero for a circuit + means use the PLE default size. A size of + zero for the PLE default means use a default + size of 128." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.1.1" + DEFVAL { 128 } + ::= { x25CallParmEntry 5 } + +x25CallParmInWindowSize OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The receive window size for a circuit. A + size of zero for a circuit means use the PLE + default size. A size of zero for the PLE + default means use 2." + REFERENCE "10733 proposedWindowSize; + See ISO 8208 Section 15.2.2.1.2" + DEFVAL { 2 } + ::= { x25CallParmEntry 6 } + +x25CallParmOutWindowSize OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The transmit window size for a circuit. A + size of zero for a circuit means use the PLE + default size. A size of zero for the PLE + default means use 2." + REFERENCE "10733 proposedWindowSize; + See ISO 8208 Section 15.2.2.1.2" + DEFVAL { 2 } + ::= { x25CallParmEntry 7 } + +x25CallParmAcceptReverseCharging OBJECT-TYPE + SYNTAX INTEGER { + default (1), + accept (2), + refuse (3), + neverAccept (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An enumeration defining if the PLE will + accept or refuse charges. A value of + default for a circuit means use the PLE + default value. A value of neverAccept is + only used for the PLE default and indicates + the PLE will never accept reverse charging. + A value of default for a PLE default means + refuse." + REFERENCE "10733 acceptReverseCharging" + DEFVAL { refuse } + ::= { x25CallParmEntry 8 } + +x25CallParmProposeReverseCharging OBJECT-TYPE + SYNTAX INTEGER { + default (1), + reverse (2), + local (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An enumeration defining if the PLE should + propose reverse or local charging. The + value of default for a circuit means use the + PLE default. The value of default for the + PLE default means use local." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.6" + DEFVAL { local } + ::= { x25CallParmEntry 9 } + +x25CallParmFastSelect OBJECT-TYPE + SYNTAX INTEGER { + default (1), + notSpecified (2), + fastSelect (3), + restrictedFastResponse (4), + noFastSelect (5), + noRestrictedFastResponse (6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Expresses preference for use of fast select + facility. The value of default for a + circuit is the PLE default. A value of + default for the PLE means noFastSelect. A + value of noFastSelect or + noRestrictedFastResponse indicates a circuit + may not use fast select or restricted fast + response." + REFERENCE "10733 fastSelect; + Sec ISO 8208 Section 15.2.2.6" + DEFVAL { noFastSelect } + ::= { x25CallParmEntry 10 } + +x25CallParmInThruPutClasSize OBJECT-TYPE + SYNTAX INTEGER { + tcReserved1 (1), + tcReserved2 (2), + tc75 (3), + tc150 (4), + tc300 (5), + tc600 (6), + tc1200 (7), + tc2400 (8), + tc4800 (9), + tc9600 (10), + tc19200 (11), + tc48000 (12), + tc64000 (13), + tcReserved14 (14), + tcReserved15 (15), + tcReserved0 (16), + tcNone (17), + tcDefault (18) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The incoming throughput class to negotiate. + A value of tcDefault for a circuit means use + the PLE default. A value of tcDefault for + the PLE default means tcNone. A value of + tcNone means do not negotiate throughtput + class." + REFERENCE "See ISO 8208 Section 15.2.2.2, table 18" + DEFVAL { tcNone } + ::= { x25CallParmEntry 11 } + +x25CallParmOutThruPutClasSize OBJECT-TYPE + SYNTAX INTEGER { + tcReserved1 (1), + tcReserved2 (2), + tc75 (3), + tc150 (4), + tc300 (5), + tc600 (6), + tc1200 (7), + tc2400 (8), + tc4800 (9), + tc9600 (10), + tc19200 (11), + tc48000 (12), + tc64000 (13), + tcReserved14 (14), + tcReserved15 (15), + tcReserved0 (16), + tcNone (17), + tcDefault (18) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The outgoing throughput class to negotiate. + A value of tcDefault for a circuit means use + the PLE default. A value of tcDefault for + the PLE default means use tcNone. A value + of tcNone means do not negotiate throughtput + class." + REFERENCE "See ISO 8208 Section 15.2.2.2, table 18" + DEFVAL { tcNone } + ::= { x25CallParmEntry 12 } + +x25CallParmCug OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Closed User Group to specify. This + consists of two or four octets containing + the characters 0 through 9. A zero length + string indicates no facility requested. A + string length of three containing the + characters DEF for a circuit means use the + PLE default, (the PLE default parameter may + not reference an entry of DEF.)" + REFERENCE "See ISO 8208 Section 15.2.2.3" + DEFVAL { ''h } + ::= { x25CallParmEntry 13 } + +x25CallParmCugoa OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Closed User Group with Outgoing Access + to specify. This consists of two or four + octets containing the characters 0 through + 9. A string length of three containing the + characters DEF for a circuit means use the + PLE default (the PLE default parameters may + not reference an entry of DEF). A zero + length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.2.2.4" + DEFVAL { ''h } + ::= { x25CallParmEntry 14 } + +x25CallParmBcug OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..3)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Bilateral Closed User Group to specify. + This consists of two octets containing the + characters 0 through 9. A string length of + three containing the characters DEF for a + circuit means use the PLE default (the PLE + default parameter may not reference an entry + of DEF). A zero length string indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.2.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 15 } + +x25CallParmNui OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Network User Identifier facility. This + is binary value to be included immediately + after the length field. The PLE will supply + the length octet. A zero length string + indicates no facility requested. This value + is ignored for the PLE default parameters + entry." + REFERENCE "See ISO 8208 Section 15.2.2.7" + DEFVAL { ''h } + ::= { x25CallParmEntry 16 } + +x25CallParmChargingInfo OBJECT-TYPE + SYNTAX INTEGER { + default (1), + noFacility (2), + noChargingInfo (3), + chargingInfo (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The charging Information facility. A value + of default for a circuit means use the PLE + default. The value of default for the + default PLE parameters means use noFacility. + The value of noFacility means do not include + a facility." + REFERENCE "See ISO 8208 Section 15.2.2.8" + DEFVAL { noFacility } + ::= { x25CallParmEntry 17 } + +x25CallParmRpoa OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The RPOA facility. The octet string + contains n * 4 sequences of the characters + 0-9 to specify a facility with n entries. + The octet string containing the 3 characters + DEF for a circuit specifies use of the PLE + default (the entry for the PLE default may + not contain DEF). A zero length string + indicates no facility requested." + REFERENCE "See ISO 8208, section 15.2.2.9" + DEFVAL { ''h } + ::= { x25CallParmEntry 18 } + +x25CallParmTrnstDly OBJECT-TYPE + SYNTAX INTEGER (0..65537) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Transit Delay Selection and Indication + value. A value of 65536 indicates no + facility requested. A value of 65537 for a + circuit means use the PLE default (the PLE + default parameters entry may not use the + value 65537). The value 65535 may only be + used to indicate the value in use by a + circuit." + REFERENCE "See ISO 8208, Section 15.2.2.13" + DEFVAL { 65536 } + ::= { x25CallParmEntry 19 } + + + -- The following parameters are for CCITT facilities. + +x25CallParmCallingExt OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..40)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Calling Extension facility. This + contains one of the following: + + A sequence of hex digits with the value to + be put in the facility. These digits will be + converted to binary by the agent and put in + the facility. These octets do not include + the length octet. + + A value containing the three character DEF + for a circuit means use the PLE default, + (the entry for the PLE default parameters + may not use the value DEF). + + A zero length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.1" + DEFVAL { ''h } + ::= { x25CallParmEntry 20 } + +x25CallParmCalledExt OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..40)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Called Extension facility. This + contains one of the following: + + A sequence of hex digits with the value to + be put in the facility. These digits will be + converted to binary by the agent and put in + the facility. These octets do not include + the length octet. + + A value containing the three character DEF + for a circuit means use the PLE default, + (the entry for the PLE default parameters + may not use the value DEF). + + A zero length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.2" + DEFVAL { ''h } + ::= { x25CallParmEntry 21 } + +x25CallParmInMinThuPutCls OBJECT-TYPE + SYNTAX INTEGER (0..17) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum input throughput Class. A + value of 16 for a circuit means use the PLE + default (the PLE parameters entry may not + use this value). A value of 17 indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.3.2.3" + DEFVAL { 17 } + ::= { x25CallParmEntry 22 } + +x25CallParmOutMinThuPutCls OBJECT-TYPE + SYNTAX INTEGER (0..17) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum output throughput Class. A + value of 16 for a circuit means use the PLE + default (the PLE parameters entry may not + use this value). A value of 17 indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.3.2.3" + DEFVAL { 17 } + ::= { x25CallParmEntry 23 } + +x25CallParmEndTrnsDly OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The End-to-End Transit Delay to negotiate. + An octet string of length 2, 4, or 6 + contains the facility encoded as specified + in ISO/IEC 8208 section 15.3.2.4. An octet + string of length 3 containing the three + character DEF for a circuit means use the + PLE default (the entry for the PLE default + can not contain the characters DEF). A zero + length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.4" + DEFVAL { ''h } + ::= { x25CallParmEntry 24 } + +x25CallParmPriority OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The priority facility to negotiate. The + octet string encoded as specified in ISO/IEC + 8208 section 15.3.2.5. A zero length string + indicates no facility requested. The entry + for the PLE default parameters must be zero + length." + REFERENCE "See ISO 8208 Section 15.3.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 25 } + +x25CallParmProtection OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A string contains the following: + A hex string containing the value for the + protection facility. This will be converted + from hex to the octets actually in the + packet by the agent. The agent will supply + the length field and the length octet is not + contained in this string. + + An string containing the 3 characters DEF + for a circuit means use the PLE default (the + entry for the PLE default parameters may not + use the value DEF). + + A zero length string mean no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 26 } + +x25CallParmExptData OBJECT-TYPE + SYNTAX INTEGER { + default (1), + noExpeditedData (2), + expeditedData (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Expedited Data facility to negotiate. + A value of default for a circuit means use + the PLE default value. The entry for the + PLE default parameters may not have the + value default." + REFERENCE "See ISO 8208 Section 15.3.2.7" + DEFVAL { noExpeditedData } + ::= { x25CallParmEntry 27 } + +x25CallParmUserData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The call user data as placed in the packet. + A zero length string indicates no call user + data. If both the circuit call parameters + and the PLE default have call user data + defined, the data from the circuit call + parameters will be used. If only the PLE + has data defined, the PLE entry will be + used. If neither the circuit call + parameters or the PLE default entry has a + value, no call user data will be sent." + REFERENCE "See ISO 8208 Section 12.2.1.1.6, 12.2.1.2" + DEFVAL { ''h } + ::= { x25CallParmEntry 28 } + +x25CallParmCallingNetworkFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The calling network facilities. The + facilities are encoded here exactly as + encoded in the call packet. These + facilities do not include the marker + facility code. + + A zero length string in the entry for the + parameter to use when establishing a circuit + means use the PLE default. A zero length + string in the entry for PLE default + parameters indicates no default facilities." + REFERENCE "See ISO 8206 Section 15.1, category b" + DEFVAL { ''h } + ::= { x25CallParmEntry 29 } + +x25CallParmCalledNetworkFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The called network facilities. The + facilities are encoded here exactly as + encoded in the call packet. These + facilities do not include the marker + facility code. + + A zero length string in the entry for the + parameter to use when establishing a circuit + means use the PLE default. A zero length + string in the entry for PLE default + parameters indicates no default facilities." + REFERENCE "See ISO 8206 Section 15.1, category c" + DEFVAL { ''h } + ::= { x25CallParmEntry 30 } + +-- ########################################################### +-- X.25 Traps +-- ########################################################### + +x25Restart TRAP-TYPE + ENTERPRISE x25 + VARIABLES { x25OperIndex } + DESCRIPTION + "This trap means the X.25 PLE sent or + received a restart packet. The restart that + brings up the link should not send a + x25Restart trap so the interface should send + a linkUp trap. Sending this trap means the + agent does not send a linkDown and linkUp + trap." + ::= 1 + +x25Reset TRAP-TYPE + ENTERPRISE x25 + VARIABLES { x25CircuitIndex, + x25CircuitChannel } + DESCRIPTION + "If the PLE sends or receives a reset, the + agent should send an x25Reset trap." + ::= 2 + + +-- ########################################################### +-- X.25 Protocol Version Identifiers +-- ########################################################### + +x25ProtocolVersion OBJECT IDENTIFIER + ::= { x25 10 } + + -- X.25 CCITT 1976 version. +x25protocolCcittV1976 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 1 } + + -- X.25 CCITT 1980 version. +x25protocolCcittV1980 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 2 } + + -- X.25 CCITT 1984 version. +x25protocolCcittV1984 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 3 } + + -- X.25 CCITT 1988 version. +x25protocolCcittV1988 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 4 } + + -- X.25 1987 version of ISO 8208. +x25protocolIso8208V1987 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 5 } + + -- X.25 1989 version of ISO 8208. +x25protocolIso8208V1989 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 6 } + +-- ########################################################### + +END diff --git a/mibs/ietf/RFC1414-MIB b/mibs/ietf/RFC1414-MIB new file mode 100644 index 0000000..c5223af --- /dev/null +++ b/mibs/ietf/RFC1414-MIB @@ -0,0 +1,134 @@ +RFC1414-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE + FROM RFC-1212 + tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort, mib-2 + FROM RFC1213-MIB; + + +ident OBJECT IDENTIFIER ::= { mib-2 24 } + + +-- conformance groups + +identInfo OBJECT IDENTIFIER ::= { ident 1 } + + +-- textual conventions + +-- none + +-- the ident information system group +-- +-- implementation of this group is mandatory + +identTable OBJECT-TYPE + SYNTAX SEQUENCE OF IdentEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing user information for TCP + connections. + + Note that this table contains entries for all TCP + connections on a managed system. The + corresponding instance of tcpConnState (defined in + MIB-II) indicates the state of a particular + connection." + ::= { identInfo 1 } + +identEntry OBJECT-TYPE + SYNTAX IdentEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "User information about a particular TCP + connection." + INDEX { tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort } + ::= { identTable 1 } + +IdentEntry ::= + SEQUENCE { + identStatus INTEGER, + identOpSys OCTET STRING, + identCharset OCTET STRING, + identUserid OCTET STRING, + identMisc OCTET STRING + } + +identStatus OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + unknownError(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether user information for the + associated TCP connection can be determined. A + value of `noError(1)' indicates that user + information is available. A value of + `unknownError(2)' indicates that user information + is not available." + ::= { identEntry 1 } + +identOpSys OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..40)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the type of operating system in use. + In addition to identifying an operating system, + each assignment made for this purpose also + (implicitly) identifies the textual format and + maximum size of the corresponding identUserid and + identMisc objects. + + The legal values for the `indentOpSys' strings + are those listed in the SYSTEM NAMES section of + the most recent edition of the ASSIGNED NUMBERS + RFC [8]." + ::= { identEntry 2 } + + +identCharset OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..40)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the repertoire of the corresponding + identUserid and identMisc objects. + + The legal values for the `identCharset' strings + are those listed in the CHARACTER SET section of + the most recent edition of the ASSIGNED NUMBERS + RFC [8]." + ::= { identEntry 3 } + +identUserid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the user's identity. Interpretation of + this object requires examination of the + corresponding value of the identOpSys and + identCharset objects." + ::= { identEntry 4 } + +identMisc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates miscellaneous information about the + user. Interpretation of this object requires + examination of the corresponding value of the + identOpSys and identCharset objects." + ::= { identEntry 5 } + + +END diff --git a/mibs/ietf/RIPv2-MIB b/mibs/ietf/RIPv2-MIB new file mode 100644 index 0000000..6fb9f9d --- /dev/null +++ b/mibs/ietf/RIPv2-MIB @@ -0,0 +1,530 @@ + RIPv2-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + TimeTicks, IpAddress FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2 FROM RFC1213-MIB; + + -- This MIB module uses the extended OBJECT-TYPE macro as + -- defined in [9]. + + rip2 MODULE-IDENTITY + LAST-UPDATED "9407272253Z" -- Wed Jul 27 22:53:04 PDT 1994 + ORGANIZATION "IETF RIP-II Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fbaker@cisco.com + + Postal: Gary Malkin + Xylogics, Inc. + 53 Third Avenue + Burlington, MA 01803 + + Phone: (617) 272-8140 + EMail: gmalkin@Xylogics.COM" + DESCRIPTION + "The MIB module to describe the RIP2 Version 2 Protocol" + ::= { mib-2 23 } + + -- RIP-2 Management Information Base + + -- the RouteTag type represents the contents of the + -- Route Domain field in the packet header or route entry. + -- The use of the Route Domain is deprecated. + + RouteTag ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "the RouteTag type represents the contents of the Route Domain + field in the packet header or route entry" + SYNTAX OCTET STRING (SIZE (2)) + +--4.1 Global Counters + +-- The RIP-2 Globals Group. +-- Implementation of this group is mandatory for systems +-- which implement RIP-2. + +-- These counters are intended to facilitate debugging quickly +-- changing routes or failing neighbors + +rip2Globals OBJECT IDENTIFIER ::= { rip2 1 } + + rip2GlobalRouteChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of route changes made to the IP Route + Database by RIP. This does not include the refresh + of a route's age." + ::= { rip2Globals 1 } + + rip2GlobalQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses sent to RIP queries + from other systems." + ::= { rip2Globals 2 } + +--4.2 RIP Interface Tables + +-- RIP Interfaces Groups +-- Implementation of these Groups is mandatory for systems +-- which implement RIP-2. + +-- The RIP Interface Status Table. + + rip2IfStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2IfStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of subnets which require separate + status monitoring in RIP." + ::= { rip2 2 } + + rip2IfStatEntry OBJECT-TYPE + SYNTAX Rip2IfStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Single Routing Domain in a single Subnet." + INDEX { rip2IfStatAddress } + ::= { rip2IfStatTable 1 } + + Rip2IfStatEntry ::= + SEQUENCE { + rip2IfStatAddress + IpAddress, + rip2IfStatRcvBadPackets + Counter32, + rip2IfStatRcvBadRoutes + Counter32, + rip2IfStatSentUpdates + Counter32, + rip2IfStatStatus + RowStatus + } + + rip2IfStatAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of this system on the indicated + subnet. For unnumbered interfaces, the value 0.0.0.N, + where the least significant 24 bits (N) is the ifIndex + for the IP Interface in network byte order." + ::= { rip2IfStatEntry 1 } + + rip2IfStatRcvBadPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RIP response packets received by + the RIP process which were subsequently discarded + for any reason (e.g. a version 0 packet, or an + unknown command type)." + ::= { rip2IfStatEntry 2 } + + rip2IfStatRcvBadRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of routes, in valid RIP packets, + which were ignored for any reason (e.g. unknown + address family, or invalid metric)." + ::= { rip2IfStatEntry 3 } + + rip2IfStatSentUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of triggered RIP updates actually + sent on this interface. This explicitly does + NOT include full updates sent containing new + information." + ::= { rip2IfStatEntry 4 } + + rip2IfStatStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing invalid has the effect of deleting + this interface." + ::= { rip2IfStatEntry 5 } + +-- The RIP Interface Configuration Table. + + rip2IfConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2IfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of subnets which require separate + configuration in RIP." + ::= { rip2 3 } + + rip2IfConfEntry OBJECT-TYPE + SYNTAX Rip2IfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Single Routing Domain in a single Subnet." + INDEX { rip2IfConfAddress } + ::= { rip2IfConfTable 1 } + + Rip2IfConfEntry ::= + SEQUENCE { + rip2IfConfAddress + IpAddress, + rip2IfConfDomain + RouteTag, + rip2IfConfAuthType + INTEGER, + rip2IfConfAuthKey + OCTET STRING, + rip2IfConfSend + INTEGER, + rip2IfConfReceive + INTEGER, + rip2IfConfDefaultMetric + INTEGER, + rip2IfConfStatus + RowStatus, + rip2IfConfSrcAddress + IpAddress + } + + rip2IfConfAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of this system on the indicated + subnet. For unnumbered interfaces, the value 0.0.0.N, + where the least significant 24 bits (N) is the ifIndex + for the IP Interface in network byte order." + ::= { rip2IfConfEntry 1 } + + rip2IfConfDomain OBJECT-TYPE + SYNTAX RouteTag + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Value inserted into the Routing Domain field + of all RIP packets sent on this interface." + DEFVAL { '0000'h } + ::= { rip2IfConfEntry 2 } + + rip2IfConfAuthType OBJECT-TYPE + SYNTAX INTEGER { + noAuthentication (1), + simplePassword (2), + md5 (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Authentication used on this + interface." + DEFVAL { noAuthentication } + ::= { rip2IfConfEntry 3 } + + rip2IfConfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be used as the Authentication Key + whenever the corresponding instance of + rip2IfConfAuthType has a value other than + noAuthentication. A modification of the corresponding + instance of rip2IfConfAuthType does not modify + the rip2IfConfAuthKey value. If a string shorter + than 16 octets is supplied, it will be left- + justified and padded to 16 octets, on the right, + with nulls (0x00). + + Reading this object always results in an OCTET + STRING of length zero; authentication may not + be bypassed by reading the MIB object." + DEFVAL { ''h } + ::= { rip2IfConfEntry 4 } + + rip2IfConfSend OBJECT-TYPE + SYNTAX INTEGER { + doNotSend (1), + ripVersion1 (2), + rip1Compatible (3), + ripVersion2 (4), + ripV1Demand (5), + ripV2Demand (6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "What the router sends on this interface. + ripVersion1 implies sending RIP updates compliant + with RFC 1058. rip1Compatible implies + broadcasting RIP-2 updates using RFC 1058 route + subsumption rules. ripVersion2 implies + multicasting RIP-2 updates. ripV1Demand indicates + the use of Demand RIP on a WAN interface under RIP + Version 1 rules. ripV2Demand indicates the use of + Demand RIP on a WAN interface under Version 2 rules." + DEFVAL { rip1Compatible } + ::= { rip2IfConfEntry 5 } + + rip2IfConfReceive OBJECT-TYPE + SYNTAX INTEGER { + rip1 (1), + rip2 (2), + rip1OrRip2 (3), + doNotRecieve (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates which version of RIP updates + are to be accepted. Note that rip2 and + rip1OrRip2 implies reception of multicast + packets." + DEFVAL { rip1OrRip2 } + ::= { rip2IfConfEntry 6 } + + rip2IfConfDefaultMetric OBJECT-TYPE + SYNTAX INTEGER ( 0..15 ) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the metric that is to + be used for the default route entry in RIP updates + originated on this interface. A value of zero + indicates that no default route should be + originated; in this case, a default route via + another router may be propagated." + ::= { rip2IfConfEntry 7 } + + rip2IfConfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing invalid has the effect of deleting + this interface." + ::= { rip2IfConfEntry 8 } + + rip2IfConfSrcAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address this system will use as a source + address on this interface. If it is a numbered + interface, this MUST be the same value as + rip2IfConfAddress. On unnumbered interfaces, + it must be the value of rip2IfConfAddress for + some interface on the system." + ::= { rip2IfConfEntry 9 } + +--4.3 Peer Table + +-- Peer Table + +-- The RIP Peer Group +-- Implementation of this Group is Optional + +-- This group provides information about active peer +-- relationships intended to assist in debugging. An +-- active peer is a router from which a valid RIP +-- updated has been heard in the last 180 seconds. + + rip2PeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2PeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of RIP Peers." + ::= { rip2 4 } + + rip2PeerEntry OBJECT-TYPE + SYNTAX Rip2PeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information regarding a single routing peer." + INDEX { rip2PeerAddress, rip2PeerDomain } + ::= { rip2PeerTable 1 } + + Rip2PeerEntry ::= + SEQUENCE { + rip2PeerAddress + IpAddress, + rip2PeerDomain + RouteTag, + rip2PeerLastUpdate + TimeTicks, + rip2PeerVersion + INTEGER, + rip2PeerRcvBadPackets + Counter32, + rip2PeerRcvBadRoutes + Counter32 + } + + rip2PeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address that the peer is using as its source + address. Note that on an unnumbered link, this may + not be a member of any subnet on the system." + ::= { rip2PeerEntry 1 } + + rip2PeerDomain OBJECT-TYPE + SYNTAX RouteTag + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value in the Routing Domain field in RIP + packets received from the peer. As domain suuport + is deprecated, this must be zero." + ::= { rip2PeerEntry 2 } + + rip2PeerLastUpdate OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the most recent + RIP update was received from this system." + ::= { rip2PeerEntry 3 } + + rip2PeerVersion OBJECT-TYPE + SYNTAX INTEGER ( 0..255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RIP version number in the header of the + last RIP packet received." + ::= { rip2PeerEntry 4 } + + rip2PeerRcvBadPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RIP response packets from this + peer discarded as invalid." + ::= { rip2PeerEntry 5 } + + + rip2PeerRcvBadRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of routes from this peer that were + ignored because the entry format was invalid." + ::= { rip2PeerEntry 6 } + +-- conformance information + +rip2Conformance OBJECT IDENTIFIER ::= { rip2 5 } + +rip2Groups OBJECT IDENTIFIER ::= { rip2Conformance 1 } +rip2Compliances OBJECT IDENTIFIER ::= { rip2Conformance 2 } + +-- compliance statements +rip2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { + rip2GlobalGroup, + rip2IfStatGroup, + rip2IfConfGroup, + rip2PeerGroup + } + GROUP rip2GlobalGroup + DESCRIPTION + "This group defines global controls for RIP-II systems." + GROUP rip2IfStatGroup + DESCRIPTION + "This group defines interface statistics for RIP-II systems." + GROUP rip2IfConfGroup + DESCRIPTION + "This group defines interface configuration for RIP-II systems." + GROUP rip2PeerGroup + DESCRIPTION + "This group defines peer information for RIP-II systems." + ::= { rip2Compliances 1 } + +-- units of conformance + +rip2GlobalGroup OBJECT-GROUP + OBJECTS { + rip2GlobalRouteChanges, + rip2GlobalQueries + } + STATUS current + DESCRIPTION + "This group defines global controls for RIP-II systems." + ::= { rip2Groups 1 } +rip2IfStatGroup OBJECT-GROUP + OBJECTS { + rip2IfStatAddress, + rip2IfStatRcvBadPackets, + rip2IfStatRcvBadRoutes, + rip2IfStatSentUpdates, + rip2IfStatStatus + } + STATUS current + DESCRIPTION + "This group defines interface statistics for RIP-II systems." + ::= { rip2Groups 2 } +rip2IfConfGroup OBJECT-GROUP + OBJECTS { + rip2IfConfAddress, + rip2IfConfAuthType, + rip2IfConfAuthKey, + rip2IfConfSend, + rip2IfConfReceive, + rip2IfConfDefaultMetric, + rip2IfConfStatus, + rip2IfConfSrcAddress + } + STATUS current + DESCRIPTION + "This group defines interface configuration for RIP-II systems." + ::= { rip2Groups 3 } +rip2PeerGroup OBJECT-GROUP + OBJECTS { + rip2PeerAddress, + rip2PeerDomain, + rip2PeerLastUpdate, + rip2PeerVersion, + rip2PeerRcvBadPackets, + rip2PeerRcvBadRoutes + } + STATUS current + DESCRIPTION + "This group defines peer information for RIP-II systems." + ::= { rip2Groups 4 } +END diff --git a/mibs/ietf/RMON-MIB b/mibs/ietf/RMON-MIB new file mode 100644 index 0000000..023f9bb --- /dev/null +++ b/mibs/ietf/RMON-MIB @@ -0,0 +1,3952 @@ +RMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + NOTIFICATION-TYPE, mib-2, Counter32, + Integer32, TimeTicks FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, DisplayString FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF; + + +-- Remote Network Monitoring MIB + +rmonMibModule MODULE-IDENTITY + LAST-UPDATED "200005110000Z" -- 11 May, 2000 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com" + DESCRIPTION + "Remote network monitoring devices, often called + monitors or probes, are instruments that exist for + the purpose of managing a network. This MIB defines + objects for managing remote network monitoring devices." + + REVISION "200005110000Z" -- 11 May, 2000 + DESCRIPTION + "Reformatted into SMIv2 format. + + This version published as RFC 2819." + + REVISION "199502010000Z" -- 1 Feb, 1995 + DESCRIPTION + "Bug fixes, clarifications and minor changes based on + implementation experience, published as RFC1757 [18]. + + Two changes were made to object definitions: + + 1) A new status bit has been defined for the + captureBufferPacketStatus object, indicating that the + packet order within the capture buffer may not be identical to + the packet order as received off the wire. This bit may only + be used for packets transmitted by the probe. Older NMS + applications can safely ignore this status bit, which might be + used by newer agents. + + 2) The packetMatch trap has been removed. This trap was never + actually 'approved' and was not added to this document along + with the risingAlarm and fallingAlarm traps. The packetMatch + trap could not be throttled, which could cause disruption of + normal network traffic under some circumstances. An NMS should + configure a risingAlarm threshold on the appropriate + channelMatches instance if a trap is desired for a packetMatch + event. Note that logging of packetMatch events is still + supported--only trap generation for such events has been + removed. + + In addition, several clarifications to individual object + definitions have been added to assist agent and NMS + implementors: + + - global definition of 'good packets' and 'bad packets' + + - more detailed text governing conceptual row creation and + modification + + - instructions for probes relating to interface changes and + disruptions + + - clarification of some ethernet counter definitions + + - recommended formula for calculating network utilization + + - clarification of channel and captureBuffer behavior for some + unusual conditions + + - examples of proper instance naming for each table" + + REVISION "199111010000Z" -- 1 Nov, 1991 + DESCRIPTION + "The original version of this MIB, published as RFC1271." + ::= { rmonConformance 8 } + + rmon OBJECT IDENTIFIER ::= { mib-2 16 } + + + -- textual conventions + +OwnerString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model an administratively + assigned name of the owner of a resource. Implementations + must accept values composed of well-formed NVT ASCII + sequences. In addition, implementations should accept + values composed of well-formed UTF-8 sequences. + + It is suggested that this name contain one or more of + the following: IP address, management station name, + network manager'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 'monitor'. + + SNMP access control is articulated entirely in terms + of the contents of MIB views; access to a particular + SNMP object instance depends only upon its presence + or absence in a particular MIB view and never upon + its value or the value of related object instances. + Thus, objects of this type afford resolution of + resource contention only among cooperating + managers; they realize no access control function + with respect to uncooperative parties." + SYNTAX OCTET STRING (SIZE (0..127)) + +EntryStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of a table entry. + + Setting this object to the value invalid(4) has the + effect of invalidating the corresponding entry. + 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 tabular information from agents that corresponds + to entries currently not in use. Proper + interpretation of such entries requires examination + of the relevant EntryStatus object. + + An existing instance of this object cannot be set to + createRequest(2). This object may only be set to + createRequest(2) when this instance is created. When + this object is created, the agent may wish to create + supplemental object instances with default values + to complete a conceptual row in this table. Because the + creation of these default objects is entirely at the option + of the agent, the manager must not assume that any will be + created, but may make use of any that are created. + Immediately after completing the create operation, the agent + must set this object to underCreation(3). + + When in the underCreation(3) state, an entry is allowed to + exist in a possibly incomplete, possibly inconsistent state, + usually to allow it to be modified in multiple PDUs. When in + this state, an entry is not fully active. + Entries shall exist in the underCreation(3) state until + the management station is finished configuring the entry + and sets this object to valid(1) or aborts, setting this + object to invalid(4). If the agent determines that an + entry has been in the underCreation(3) state for an + abnormally long time, it may decide that the management + station has crashed. If the agent makes this decision, + it may set this object to invalid(4) to reclaim the + entry. A prudent agent will understand that the + management station may need to wait for human input + and will allow for that possibility in its + determination of this abnormally long period. + + An entry in the valid(1) state is fully configured and + consistent and fully represents the configuration or + operation such a row is intended to represent. For + example, it could be a statistical function that is + configured and active, or a filter that is available + in the list of filters processed by the packet capture + process. + + A manager is restricted to changing the state of an entry in + the following ways: + + To: valid createRequest underCreation invalid + From: + valid OK NO OK OK + createRequest N/A N/A N/A N/A + underCreation OK NO OK OK + invalid NO NO NO OK + nonExistent NO OK NO OK + + In the table above, it is not applicable to move the state + from the createRequest state to any other state because the + manager will never find the variable in that state. The + nonExistent state is not a value of the enumeration, rather + it means that the entryStatus variable does not exist at all. + An agent may allow an entryStatus variable to change state in + additional ways, so long as the semantics of the states are + followed. This allowance is made to ease the implementation of + the agent and is made despite the fact that managers should + never exercise these additional state transitions." + SYNTAX INTEGER { + valid(1), + createRequest(2), + underCreation(3), + invalid(4) + } + + statistics OBJECT IDENTIFIER ::= { rmon 1 } + history OBJECT IDENTIFIER ::= { rmon 2 } + alarm OBJECT IDENTIFIER ::= { rmon 3 } + hosts OBJECT IDENTIFIER ::= { rmon 4 } + hostTopN OBJECT IDENTIFIER ::= { rmon 5 } + matrix OBJECT IDENTIFIER ::= { rmon 6 } + filter OBJECT IDENTIFIER ::= { rmon 7 } + capture OBJECT IDENTIFIER ::= { rmon 8 } + event OBJECT IDENTIFIER ::= { rmon 9 } + rmonConformance OBJECT IDENTIFIER ::= { rmon 20 } + +-- The Ethernet Statistics Group +-- +-- Implementation of the Ethernet Statistics group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The ethernet statistics group contains statistics measured by the +-- probe for each monitored interface on this device. These +-- statistics take the form of free running counters that start from +-- zero when a valid entry is created. +-- +-- This group currently has statistics defined only for +-- Ethernet interfaces. Each etherStatsEntry contains statistics +-- for one Ethernet interface. The probe must create one +-- etherStats entry for each monitored Ethernet interface +-- on the device. + +etherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Ethernet statistics entries." + ::= { statistics 1 } + +etherStatsEntry OBJECT-TYPE + SYNTAX EtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics kept for a particular + Ethernet interface. As an example, an instance of the + etherStatsPkts object might be named etherStatsPkts.1" + INDEX { etherStatsIndex } + ::= { etherStatsTable 1 } + +EtherStatsEntry ::= SEQUENCE { + etherStatsIndex Integer32, + etherStatsDataSource OBJECT IDENTIFIER, + etherStatsDropEvents Counter32, + etherStatsOctets Counter32, + etherStatsPkts Counter32, + etherStatsBroadcastPkts Counter32, + etherStatsMulticastPkts Counter32, + etherStatsCRCAlignErrors Counter32, + etherStatsUndersizePkts Counter32, + etherStatsOversizePkts Counter32, + etherStatsFragments Counter32, + etherStatsJabbers Counter32, + etherStatsCollisions Counter32, + etherStatsPkts64Octets Counter32, + etherStatsPkts65to127Octets Counter32, + etherStatsPkts128to255Octets Counter32, + etherStatsPkts256to511Octets Counter32, + etherStatsPkts512to1023Octets Counter32, + etherStatsPkts1024to1518Octets Counter32, + etherStatsOwner OwnerString, + etherStatsStatus EntryStatus +} + +etherStatsIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object uniquely identifies this + etherStats entry." + ::= { etherStatsEntry 1 } + +etherStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data that + this etherStats entry is configured to analyze. This + source can be any ethernet interface on this device. + In order to identify a particular interface, this object + shall identify the instance of the ifIndex object, + defined in RFC 2233 [17], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + etherStatsStatus object is equal to valid(1)." + ::= { etherStatsEntry 2 } + +etherStatsDropEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which packets + were dropped by the probe due to lack of resources. + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected." + ::= { etherStatsEntry 3 } + +etherStatsOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets). + This object can be used as a reasonable estimate of + 10-Megabit ethernet utilization. If greater precision is + desired, the etherStatsPkts and etherStatsOctets objects + should be sampled before and after a common interval. The + differences in the sampled values are Pkts and Octets, + respectively, and the number of seconds in the interval is + Interval. These values are used to calculate the Utilization + as follows: + + Pkts * (9.6 + 6.4) + (Octets * .8) + Utilization = ------------------------------------- + Interval * 10,000 + + The result of this equation is the value Utilization which + is the percent utilization of the ethernet segment on a + scale of 0 to 100 percent." + ::= { etherStatsEntry 4 } + +etherStatsPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received." + ::= { etherStatsEntry 5 } + +etherStatsBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good packets received that were + directed to the broadcast address. Note that this + does not include multicast packets." + ::= { etherStatsEntry 6 } + +etherStatsMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good packets received that were + directed to a multicast address. Note that this number + does not include packets directed to the broadcast + address." + ::= { etherStatsEntry 7 } + +etherStatsCRCAlignErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that + had a length (excluding framing bits, but + including FCS octets) of between 64 and 1518 + octets, inclusive, but had either a bad + Frame Check Sequence (FCS) with an integral + number of octets (FCS Error) or a bad FCS with + a non-integral number of octets (Alignment Error)." + ::= { etherStatsEntry 8 } + +etherStatsUndersizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + less than 64 octets long (excluding framing bits, + but including FCS octets) and were otherwise well + formed." + ::= { etherStatsEntry 9 } + +etherStatsOversizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets) and were otherwise + well formed." + ::= { etherStatsEntry 10 } + +etherStatsFragments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were less than + 64 octets in length (excluding framing bits but including + FCS octets) and had either a bad Frame Check Sequence + (FCS) with an integral number of octets (FCS Error) or a + bad FCS with a non-integral number of octets (Alignment + Error). + + Note that it is entirely normal for etherStatsFragments to + increment. This is because it counts both runts (which are + normal occurrences due to collisions) and noise hits." + ::= { etherStatsEntry 11 } + +etherStatsJabbers OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets), and had either a bad + Frame Check Sequence (FCS) with an integral number + of octets (FCS Error) or a bad FCS with a non-integral + number of octets (Alignment Error). + + Note that this definition of jabber is different + than the definition in IEEE-802.3 section 8.2.1.5 + (10BASE5) and section 10.3.1.4 (10BASE2). These + documents define jabber as the condition where any + packet exceeds 20 ms. The allowed range to detect + jabber is between 20 ms and 150 ms." + ::= { etherStatsEntry 12 } + +etherStatsCollisions OBJECT-TYPE + SYNTAX Counter32 + UNITS "Collisions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment. + + The value returned will depend on the location of the + RMON probe. Section 8.2.1.3 (10BASE-5) and section + 10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a + station must detect a collision, in the receive mode, if + three or more stations are transmitting simultaneously. A + repeater port must detect a collision when two or more + stations are transmitting simultaneously. Thus a probe + placed on a repeater port could record more collisions + than a probe connected to a station on the same segment + would. + + Probe location plays a much smaller role when considering + 10BASE-T. 14.2.1.4 (10BASE-T) of IEEE standard 802.3 + defines a collision as the simultaneous presence of signals + on the DO and RD circuits (transmitting and receiving + at the same time). A 10BASE-T station can only detect + collisions when it is transmitting. Thus probes placed on + a station and a repeater, should report the same number of + collisions. + + Note also that an RMON probe inside a repeater should + ideally report collisions between the repeater and one or + more other hosts (transmit collisions as defined by IEEE + 802.3k) plus receiver collisions observed on any coax + segments to which the repeater is connected." + ::= { etherStatsEntry 13 } + +etherStatsPkts64Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 14 } + +etherStatsPkts65to127Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 15 } + +etherStatsPkts128to255Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 16 } + +etherStatsPkts256to511Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 17 } + +etherStatsPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 18 } + +etherStatsPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 19 } + +etherStatsOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { etherStatsEntry 20 } + +etherStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this etherStats entry." + ::= { etherStatsEntry 21 } + +-- The History Control Group + +-- Implementation of the History Control group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The history control group controls the periodic statistical +-- sampling of data from various types of networks. The +-- historyControlTable stores configuration entries that each +-- define an interface, polling period, and other parameters. +-- Once samples are taken, their data is stored in an entry +-- in a media-specific table. Each such entry defines one +-- sample, and is associated with the historyControlEntry that +-- caused the sample to be taken. Each counter in the +-- etherHistoryEntry counts the same event as its similarly-named +-- counterpart in the etherStatsEntry, except that each value here +-- is a cumulative sum during a sampling period. +-- +-- If the probe keeps track of the time of day, it should start +-- the first sample of the history at a time such that +-- when the next hour of the day begins, a sample is +-- started at that instant. This tends to make more +-- user-friendly reports, and enables comparison of reports +-- from different probes that have relatively accurate time +-- of day. +-- +-- The probe is encouraged to add two history control entries +-- per monitored interface upon initialization that describe a short +-- term and a long term polling period. Suggested parameters are 30 +-- seconds for the short term polling period and 30 minutes for +-- the long term period. + +historyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of history control entries." + ::= { history 1 } + +historyControlEntry OBJECT-TYPE + SYNTAX HistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a periodic sampling of + statistics. As an example, an instance of the + historyControlInterval object might be named + historyControlInterval.2" + INDEX { historyControlIndex } + ::= { historyControlTable 1 } + +HistoryControlEntry ::= SEQUENCE { + historyControlIndex Integer32, + historyControlDataSource OBJECT IDENTIFIER, + historyControlBucketsRequested Integer32, + historyControlBucketsGranted Integer32, + historyControlInterval Integer32, + historyControlOwner OwnerString, + historyControlStatus EntryStatus +} + +historyControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + historyControl table. Each such entry defines a + set of samples at a particular interval for an + interface on the device." + ::= { historyControlEntry 1 } + +historyControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data for + which historical data was collected and + placed in a media-specific table on behalf of this + historyControlEntry. This source can be any + interface on this device. In order to identify + a particular interface, this object shall identify + the instance of the ifIndex object, defined + in RFC 2233 [17], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + ::= { historyControlEntry 2 } + +historyControlBucketsRequested OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + media-specific table associated with this + historyControlEntry. + + When this object is created or modified, the probe + should set historyControlBucketsGranted as closely to + this object as is possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { historyControlEntry 3 } + +historyControlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the media-specific table associated with this + historyControlEntry. + When the associated historyControlBucketsRequested + object is created or modified, the probe + should set this object as closely to the requested + value as is possible for the particular + probe implementation and available resources. The + probe must not lower this value except as a result + of a modification to the associated + historyControlBucketsRequested object. + + There will be times when the actual number of + buckets associated with this entry is less than + the value of this object. In this case, at the + end of each sampling interval, a new bucket will + be added to the media-specific table. + + When the number of buckets reaches the value of + this object and a new bucket is to be added to the + media-specific table, the oldest bucket associated + with this historyControlEntry shall be deleted by + the agent so that the new bucket can be added. + + When the value of this object changes to a value less + than the current value, entries are deleted + from the media-specific table associated with this + historyControlEntry. Enough of the oldest of these + entries shall be deleted by the agent so that their + number remains less than or equal to the new value of + this object. + + When the value of this object changes to a value greater + than the current value, the number of associated media- + specific entries may be allowed to grow." + ::= { historyControlEntry 4 } + +historyControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..3600) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the + media-specific table associated with this + historyControlEntry. This interval can + be set to any number of seconds between 1 and + 3600 (1 hour). + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and set the historyControlInterval + object to a value less than this interval. This is + typically most important for the 'octets' counter in any + media-specific table. For example, on an Ethernet + network, the etherHistoryOctets counter could overflow + in about one hour at the Ethernet's maximum + utilization. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + DEFVAL { 1800 } + ::= { historyControlEntry 5 } + +historyControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { historyControlEntry 6 } + +historyControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this historyControl entry. + + Each instance of the media-specific table associated + with this historyControlEntry will be deleted by the agent + if this historyControlEntry is not equal to valid(1)." + ::= { historyControlEntry 7 } + +-- The Ethernet History Group + +-- Implementation of the Ethernet History group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Ethernet History group records periodic statistical samples +-- from a network and stores them for later retrieval. +-- Once samples are taken, their data is stored in an entry +-- in a media-specific table. Each such entry defines one + +-- sample, and is associated with the historyControlEntry that +-- caused the sample to be taken. This group defines the +-- etherHistoryTable, for Ethernet networks. +-- + +etherHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Ethernet history entries." + ::= { history 2 } + +etherHistoryEntry OBJECT-TYPE + SYNTAX EtherHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An historical sample of Ethernet statistics on a particular + Ethernet interface. This sample is associated with the + historyControlEntry which set up the parameters for + a regular collection of these samples. As an example, an + instance of the etherHistoryPkts object might be named + etherHistoryPkts.2.89" + INDEX { etherHistoryIndex , etherHistorySampleIndex } + ::= { etherHistoryTable 1 } + +EtherHistoryEntry ::= SEQUENCE { + etherHistoryIndex Integer32, + etherHistorySampleIndex Integer32, + etherHistoryIntervalStart TimeTicks, + etherHistoryDropEvents Counter32, + etherHistoryOctets Counter32, + etherHistoryPkts Counter32, + etherHistoryBroadcastPkts Counter32, + etherHistoryMulticastPkts Counter32, + etherHistoryCRCAlignErrors Counter32, + etherHistoryUndersizePkts Counter32, + etherHistoryOversizePkts Counter32, + etherHistoryFragments Counter32, + etherHistoryJabbers Counter32, + etherHistoryCollisions Counter32, + etherHistoryUtilization Integer32 +} + +etherHistoryIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified + by the same value of historyControlIndex." + ::= { etherHistoryEntry 1 } + +etherHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies the particular + sample this entry represents among all samples + associated with the same historyControlEntry. + This index starts at 1 and increases by one + as each new sample is taken." + ::= { etherHistoryEntry 2 } + +etherHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the start of the interval + over which this sample was measured. If the probe + keeps track of the time of day, it should start + the first sample of the history at a time such that + when the next hour of the day begins, a sample is + started at that instant. Note that following this + rule may require the probe to delay collecting the + first sample of the history, as each sample must be + of the same interval. Also note that the sample which + is currently being collected is not accessible in this + table until the end of its interval." + ::= { etherHistoryEntry 3 } + +etherHistoryDropEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which packets + were dropped by the probe due to lack of resources + during this sampling interval. Note that this number + is not necessarily the number of packets dropped, it + is just the number of times this condition has been + detected." + ::= { etherHistoryEntry 4 } + +etherHistoryOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherHistoryEntry 5 } + +etherHistoryPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets (including bad packets) + received during this sampling interval." + ::= { etherHistoryEntry 6 } + +etherHistoryBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to the + broadcast address." + ::= { etherHistoryEntry 7 } + +etherHistoryMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to a + multicast address. Note that this number does not + include packets addressed to the broadcast address." + ::= { etherHistoryEntry 8 } + +etherHistoryCRCAlignErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that had a length (excluding + framing bits but including FCS octets) between + 64 and 1518 octets, inclusive, but had either a bad Frame + Check Sequence (FCS) with an integral number of octets + (FCS Error) or a bad FCS with a non-integral number + of octets (Alignment Error)." + ::= { etherHistoryEntry 9 } + +etherHistoryUndersizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were less than 64 octets + long (excluding framing bits but including FCS + octets) and were otherwise well formed." + ::= { etherHistoryEntry 10 } + +etherHistoryOversizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were longer than 1518 + octets (excluding framing bits but including + FCS octets) but were otherwise well formed." + ::= { etherHistoryEntry 11 } + +etherHistoryFragments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received during this + sampling interval that were less than 64 octets in + length (excluding framing bits but including FCS + octets) had either a bad Frame Check Sequence (FCS) + with an integral number of octets (FCS Error) or a bad + FCS with a non-integral number of octets (Alignment + Error). + + Note that it is entirely normal for etherHistoryFragments to + increment. This is because it counts both runts (which are + normal occurrences due to collisions) and noise hits." + ::= { etherHistoryEntry 12 } + +etherHistoryJabbers OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were longer than 1518 octets + (excluding framing bits but including FCS octets), + and had either a bad Frame Check Sequence (FCS) + with an integral number of octets (FCS Error) or + a bad FCS with a non-integral number of octets + (Alignment Error). + + Note that this definition of jabber is different + than the definition in IEEE-802.3 section 8.2.1.5 + (10BASE5) and section 10.3.1.4 (10BASE2). These + documents define jabber as the condition where any + packet exceeds 20 ms. The allowed range to detect + jabber is between 20 ms and 150 ms." + ::= { etherHistoryEntry 13 } + +etherHistoryCollisions OBJECT-TYPE + SYNTAX Counter32 + UNITS "Collisions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment during this sampling + interval. + + The value returned will depend on the location of the + RMON probe. Section 8.2.1.3 (10BASE-5) and section + 10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a + station must detect a collision, in the receive mode, if + three or more stations are transmitting simultaneously. A + repeater port must detect a collision when two or more + stations are transmitting simultaneously. Thus a probe + placed on a repeater port could record more collisions + than a probe connected to a station on the same segment + would. + + Probe location plays a much smaller role when considering + 10BASE-T. 14.2.1.4 (10BASE-T) of IEEE standard 802.3 + defines a collision as the simultaneous presence of signals + on the DO and RD circuits (transmitting and receiving + at the same time). A 10BASE-T station can only detect + collisions when it is transmitting. Thus probes placed on + a station and a repeater, should report the same number of + collisions. + + Note also that an RMON probe inside a repeater should + ideally report collisions between the repeater and one or + more other hosts (transmit collisions as defined by IEEE + 802.3k) plus receiver collisions observed on any coax + segments to which the repeater is connected." + ::= { etherHistoryEntry 14 } + +etherHistoryUtilization OBJECT-TYPE + SYNTAX Integer32 (0..10000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the mean physical layer + network utilization on this interface during this + sampling interval, in hundredths of a percent." + ::= { etherHistoryEntry 15 } + +-- The Alarm Group + +-- Implementation of the Alarm group is optional. The Alarm Group +-- requires the implementation of the Event group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Alarm group periodically takes statistical samples from +-- variables in the probe and compares them to thresholds that have +-- been configured. The alarm table stores configuration +-- entries that each define a variable, polling period, and +-- threshold parameters. If a sample is found to cross the +-- threshold values, an event is generated. Only variables that +-- resolve to an ASN.1 primitive type of INTEGER (INTEGER, Integer32, +-- Counter32, Counter64, Gauge32, or TimeTicks) may be monitored in +-- this way. +-- + +-- This function has a hysteresis mechanism to limit the generation +-- of events. This mechanism generates one event as a threshold +-- is crossed in the appropriate direction. No more events are +-- generated for that threshold until the opposite threshold is +-- crossed. +-- +-- In the case of a sampling a deltaValue, a probe may implement +-- this mechanism with more precision if it takes a delta sample +-- twice per period, each time comparing the sum of the latest two +-- samples to the threshold. This allows the detection of threshold +-- crossings that span the sampling boundary. Note that this does +-- not require any special configuration of the threshold value. +-- It is suggested that probes implement this more precise algorithm. + +alarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of alarm entries." + ::= { alarm 1 } + +alarmEntry OBJECT-TYPE + SYNTAX AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a periodic checking + for alarm conditions. For example, an instance of the + alarmValue object might be named alarmValue.8" + INDEX { alarmIndex } + ::= { alarmTable 1 } + +AlarmEntry ::= SEQUENCE { + alarmIndex Integer32, + alarmInterval Integer32, + alarmVariable OBJECT IDENTIFIER, + alarmSampleType INTEGER, + alarmValue Integer32, + alarmStartupAlarm INTEGER, + alarmRisingThreshold Integer32, + alarmFallingThreshold Integer32, + alarmRisingEventIndex Integer32, + alarmFallingEventIndex Integer32, + alarmOwner OwnerString, + alarmStatus EntryStatus +} + +alarmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + alarm table. Each such entry defines a + diagnostic sample at a particular interval + for an object on the device." + ::= { alarmEntry 1 } + +alarmInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled and compared with the rising and falling + thresholds. When setting this variable, care + should be taken in the case of deltaValue + sampling - the interval should be set short enough + that the sampled variable is very unlikely to + increase or decrease by more than 2^31 - 1 during + a single sampling interval. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 2 } + +alarmVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + sampled. Only variables that resolve to an ASN.1 primitive + type of INTEGER (INTEGER, Integer32, Counter32, Counter64, + Gauge, or TimeTicks) may be sampled. + + Because SNMP access control is articulated entirely + in terms of the contents of MIB views, no access + control mechanism exists that can restrict the value of + this object to identify only those objects that exist + in a particular MIB view. Because there is thus no + acceptable means of restricting the read access that + could be obtained through the alarm mechanism, the + probe must only grant write access to this object in + those views that have read access to all objects on + the probe. + + During a set operation, if the supplied variable name is + not available in the selected MIB view, a badValue error + must be returned. If at any time the variable name of + an established alarmEntry is no longer available in the + selected MIB view, the probe must change the status of + this alarmEntry to invalid(4). + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 3 } + +alarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the + thresholds. If the value of this object is + absoluteValue(1), the value of the selected variable + will be compared directly with the thresholds at the + end of the sampling interval. If the value of this + object is deltaValue(2), the value of the selected + variable at the last sample will be subtracted from + the current value, and the difference compared with + the thresholds. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 4 } + +alarmValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the statistic during the last sampling + period. For example, if the sample type is deltaValue, + this value will be the difference between the samples + at the beginning and end of the period. If the sample + type is absoluteValue, this value will be the sampled + value at the end of the period. + This is the value that is compared with the rising and + falling thresholds. + + The value during the current sampling period is not + made available until the period is completed and will + remain available until the next period completes." + ::= { alarmEntry 5 } + +alarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alarm that may be sent when this entry is first + set to valid. If the first sample after this entry + becomes valid is greater than or equal to the + risingThreshold and alarmStartupAlarm is equal to + risingAlarm(1) or risingOrFallingAlarm(3), then a single + rising alarm will be generated. If the first sample + after this entry becomes valid is less than or equal + to the fallingThreshold and alarmStartupAlarm is equal + to fallingAlarm(2) or risingOrFallingAlarm(3), then a + single falling alarm will be generated. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 6 } + +alarmRisingThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold for the sampled statistic. When the current + sampled value is greater than or equal to this threshold, + and the value at the last sampling interval was less than + this threshold, a single event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is greater than or + equal to this threshold and the associated + alarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event + will not be generated until the sampled value + falls below this threshold and reaches the + alarmFallingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 7 } + +alarmFallingThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold for the sampled statistic. When the current + sampled value is less than or equal to this threshold, + and the value at the last sampling interval was greater than + this threshold, a single event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is less than or + equal to this threshold and the associated + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event + will not be generated until the sampled value + rises above this threshold and reaches the + alarmRisingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 8 } + +alarmRisingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is + used when a rising threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 9 } + +alarmFallingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is + used when a falling threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 10 } + +alarmOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { alarmEntry 11 } + +alarmStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alarm entry." + ::= { alarmEntry 12 } + +-- The Host Group + +-- Implementation of the Host group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The host group discovers new hosts on the network by +-- keeping a list of source and destination MAC Addresses seen +-- in good packets. For each of these addresses, the host group + +-- keeps a set of statistics. The hostControlTable controls +-- which interfaces this function is performed on, and contains +-- some information about the process. On behalf of each +-- hostControlEntry, data is collected on an interface and placed +-- in both the hostTable and the hostTimeTable. If the +-- monitoring device finds itself short of resources, it may +-- delete entries as needed. It is suggested that the device +-- delete the least recently used entries first. + +-- The hostTable contains entries for each address discovered on +-- a particular interface. Each entry contains statistical +-- data about that host. This table is indexed by the +-- MAC address of the host, through which a random access +-- may be achieved. + +-- The hostTimeTable contains data in the same format as the +-- hostTable, and must contain the same set of hosts, but is +-- indexed using hostTimeCreationOrder rather than hostAddress. +-- The hostTimeCreationOrder is an integer which reflects +-- the relative order in which a particular entry was discovered +-- and thus inserted into the table. As this order, and thus +-- the index, is among those entries currently in the table, +-- the index for a particular entry may change if an +-- (earlier) entry is deleted. Thus the association between +-- hostTimeCreationOrder and hostTimeEntry may be broken at +-- any time. + +-- The hostTimeTable has two important uses. The first is the +-- fast download of this potentially large table. Because the +-- index of this table runs from 1 to the size of the table, +-- inclusive, its values are predictable. This allows very +-- efficient packing of variables into SNMP PDU's and allows +-- a table transfer to have multiple packets outstanding. +-- These benefits increase transfer rates tremendously. + +-- The second use of the hostTimeTable is the efficient discovery +-- by the management station of new entries added to the table. +-- After the management station has downloaded the entire table, +-- it knows that new entries will be added immediately after the +-- end of the current table. It can thus detect new entries there +-- and retrieve them easily. + +-- Because the association between hostTimeCreationOrder and +-- hostTimeEntry may be broken at any time, the management +-- station must monitor the related hostControlLastDeleteTime +-- object. When the management station thus detects a deletion, +-- it must assume that any such associations have been broken, +-- and invalidate any it has stored locally. This includes + +-- restarting any download of the hostTimeTable that may have been +-- in progress, as well as rediscovering the end of the +-- hostTimeTable so that it may detect new entries. If the +-- management station does not detect the broken association, +-- it may continue to refer to a particular host by its +-- creationOrder while unwittingly retrieving the data associated +-- with another host entirely. If this happens while downloading +-- the host table, the management station may fail to download +-- all of the entries in the table. + + +hostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of host table control entries." + ::= { hosts 1 } + +hostControlEntry OBJECT-TYPE + SYNTAX HostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up the discovery of hosts + on a particular interface and the collection of statistics + about these hosts. For example, an instance of the + hostControlTableSize object might be named + hostControlTableSize.1" + INDEX { hostControlIndex } + ::= { hostControlTable 1 } + +HostControlEntry ::= SEQUENCE { + + hostControlIndex Integer32, + hostControlDataSource OBJECT IDENTIFIER, + hostControlTableSize Integer32, + hostControlLastDeleteTime TimeTicks, + hostControlOwner OwnerString, + hostControlStatus EntryStatus +} + +hostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hostControl table. Each such entry defines + a function that discovers hosts on a particular interface + and places statistics about them in the hostTable and + the hostTimeTable on behalf of this hostControlEntry." + ::= { hostControlEntry 1 } + +hostControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data for + this instance of the host function. This source + can be any interface on this device. In order + to identify a particular interface, this object shall + identify the instance of the ifIndex object, defined + in RFC 2233 [17], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + hostControlStatus object is equal to valid(1)." + ::= { hostControlEntry 2 } + +hostControlTableSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of hostEntries in the hostTable and the + hostTimeTable associated with this hostControlEntry." + ::= { hostControlEntry 3 } + +hostControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the hostTable + associated with this hostControlEntry. If no + deletions have occurred, this value shall be zero." + ::= { hostControlEntry 4 } + +hostControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { hostControlEntry 5 } + +hostControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hostControl entry. + + If this object is not equal to valid(1), all associated + entries in the hostTable, hostTimeTable, and the + hostTopNTable shall be deleted by the agent." + ::= { hostControlEntry 6 } + +hostTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of host entries." + ::= { hosts 2 } + +hostEntry OBJECT-TYPE + SYNTAX HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular host that has + been discovered on an interface of this device. For example, + an instance of the hostOutBroadcastPkts object might be + named hostOutBroadcastPkts.1.6.8.0.32.27.3.176" + INDEX { hostIndex, hostAddress } + ::= { hostTable 1 } + +HostEntry ::= SEQUENCE { + hostAddress OCTET STRING, + hostCreationOrder Integer32, + hostIndex Integer32, + hostInPkts Counter32, + hostOutPkts Counter32, + hostInOctets Counter32, + hostOutOctets Counter32, + hostOutErrors Counter32, + hostOutBroadcastPkts Counter32, + hostOutMulticastPkts Counter32 +} + +hostAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostEntry 1 } + +hostCreationOrder OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that defines the relative ordering of + the creation time of hosts captured for a + particular hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added earlier + have a lower index value than entries added later. + + It is important to note that the order for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTable. By observing + this variable, the management station may detect + the circumstances where a previous association + between a value of hostCreationOrder + and a hostEntry may no longer hold." + ::= { hostEntry 2 } + +hostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostEntry 3 } + +hostInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this + address since it was added to the hostTable." + ::= { hostEntry 4 } + +hostOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the hostTable." + ::= { hostEntry 5 } + +hostInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address since + it was added to the hostTable (excluding framing + bits but including FCS octets), except for those + octets in bad packets." + ::= { hostEntry 6 } + +hostOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTable (excluding framing + bits but including FCS octets), including those + octets in bad packets." + ::= { hostEntry 7 } + +hostOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted by this address + since this host was added to the hostTable." + ::= { hostEntry 8 } + +hostOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTable." + ::= { hostEntry 9 } + +hostOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostEntry 10 } + +-- host Time Table + +hostTimeTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of time-ordered host table entries." + ::= { hosts 3 } + +hostTimeEntry OBJECT-TYPE + SYNTAX HostTimeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular host that has + been discovered on an interface of this device. This + collection includes the relative ordering of the creation + time of this object. For example, an instance of the + hostTimeOutBroadcastPkts object might be named + hostTimeOutBroadcastPkts.1.687" + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeTable 1 } + +HostTimeEntry ::= SEQUENCE { + hostTimeAddress OCTET STRING, + hostTimeCreationOrder Integer32, + hostTimeIndex Integer32, + hostTimeInPkts Counter32, + hostTimeOutPkts Counter32, + hostTimeInOctets Counter32, + hostTimeOutOctets Counter32, + hostTimeOutErrors Counter32, + hostTimeOutBroadcastPkts Counter32, + hostTimeOutMulticastPkts Counter32 +} + +hostTimeAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTimeEntry 1 } + +hostTimeCreationOrder OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTime table among those entries associated + with the same hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added earlier + have a lower index value than entries added later. + Thus the management station has the ability to + learn of new entries added to this table without + downloading the entire table. + + It is important to note that the index for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTimeTable. By observing + this variable, the management station may detect + the circumstances where a download of the table + may have missed entries, and where a previous + association between a value of hostTimeCreationOrder + and a hostTimeEntry may no longer hold." + ::= { hostTimeEntry 2 } + +hostTimeIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostTimeEntry 3 } + +hostTimeInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this + address since it was added to the hostTimeTable." + ::= { hostTimeEntry 4 } + +hostTimeOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the hostTimeTable." + ::= { hostTimeEntry 5 } + +hostTimeInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), except for those + octets in bad packets." + ::= { hostTimeEntry 6 } + +hostTimeOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + octets in bad packets." + ::= { hostTimeEntry 7 } + +hostTimeOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted by this address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 8 } + +hostTimeOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 9 } + +hostTimeOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTimeTable. + Note that this number does not include packets directed + to the broadcast address." + ::= { hostTimeEntry 10 } + +-- The Host Top "N" Group + +-- Implementation of the Host Top N group is optional. The Host Top N +-- group requires the implementation of the host group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Host Top N group is used to prepare reports that describe +-- the hosts that top a list ordered by one of their statistics. +-- The available statistics are samples of one of their +-- base statistics, over an interval specified by the management +-- station. Thus, these statistics are rate based. The management +-- station also selects how many such hosts are reported. + +-- The hostTopNControlTable is used to initiate the generation of +-- such a report. The management station may select the parameters +-- of such a report, such as which interface, which statistic, +-- how many hosts, and the start and stop times of the sampling. +-- When the report is prepared, entries are created in the +-- hostTopNTable associated with the relevant hostTopNControlEntry. +-- These entries are static for each report after it has been +-- prepared. + +hostTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of top N host control entries." + ::= { hostTopN 1 } + +hostTopNControlEntry OBJECT-TYPE + SYNTAX HostTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N hosts according to several metrics. For + example, an instance of the hostTopNDuration object might + be named hostTopNDuration.3" + INDEX { hostTopNControlIndex } + ::= { hostTopNControlTable 1 } + +HostTopNControlEntry ::= SEQUENCE { + hostTopNControlIndex Integer32, + hostTopNHostIndex Integer32, + hostTopNRateBase INTEGER, + hostTopNTimeRemaining Integer32, + hostTopNDuration Integer32, + hostTopNRequestedSize Integer32, + hostTopNGrantedSize Integer32, + hostTopNStartTime TimeTicks, + hostTopNOwner OwnerString, + hostTopNStatus EntryStatus +} + +hostTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the hostTopNControl table. Each such + entry defines one top N report prepared for + one interface." + ::= { hostTopNControlEntry 1 } + +hostTopNHostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The host table for which a top N report will be prepared + on behalf of this entry. The host table identified by a + particular value of this index is associated with the same + host table as identified by the same value of + hostIndex. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 2 } + +hostTopNRateBase OBJECT-TYPE + SYNTAX INTEGER { + hostTopNInPkts(1), + hostTopNOutPkts(2), + hostTopNInOctets(3), + hostTopNOutOctets(4), + hostTopNOutErrors(5), + hostTopNOutBroadcastPkts(6), + hostTopNOutMulticastPkts(7) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each host that the hostTopNRate + variable is based upon. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 3 } + +hostTopNTimeRemaining OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently being + collected. When this object is modified by the management + station, a new collection is started, possibly aborting + a currently running report. The new value is used + as the requested duration of this report, which is + loaded into the associated hostTopNDuration object. + + When this object is set to a non-zero value, any + associated hostTopNEntries shall be made + inaccessible by the monitor. While the value of this + object is non-zero, it decrements by one per second until + it reaches zero. During this time, all associated + hostTopNEntries shall remain inaccessible. At the time + that this object decrements to zero, the report is made + accessible in the hostTopNTable. Thus, the hostTopN + table needs to be created only at the end of the collection + interval." + DEFVAL { 0 } + ::= { hostTopNControlEntry 4 } + +hostTopNDuration OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval, or if this + report is currently being collected, the number + of seconds that this report is being collected + during this sampling interval. + + When the associated hostTopNTimeRemaining object is set, + this object shall be set by the probe to the same value + and shall not be modified until the next time + the hostTopNTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this hostTopNControlEntry." + DEFVAL { 0 } + ::= { hostTopNControlEntry 5 } + +hostTopNRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of hosts requested for the top N + table. + + When this object is created or modified, the probe + should set hostTopNGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 10 } + ::= { hostTopNControlEntry 6 } + +hostTopNGrantedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of hosts in the top N table. + + When the associated hostTopNRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as is possible + for the particular implementation and available + resources. The probe must not lower this value except + as a result of a set to the associated + hostTopNRequestedSize object. + + Hosts with the highest value of hostTopNRate shall be + placed in this table in decreasing order of this rate + until there is no more room or until there are no more + hosts." + ::= { hostTopNControlEntry 7 } + +hostTopNStartTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated hostTopNTimeRemaining object was + modified to start the requested report." + ::= { hostTopNControlEntry 8 } + +hostTopNOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { hostTopNControlEntry 9 } + +hostTopNStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hostTopNControl entry. + + If this object is not equal to valid(1), all associated + hostTopNEntries shall be deleted by the agent." + ::= { hostTopNControlEntry 10 } + +hostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of top N host entries." + ::= { hostTopN 2 } + +hostTopNEntry OBJECT-TYPE + SYNTAX HostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a host that is part of a top N + report. For example, an instance of the hostTopNRate + object might be named hostTopNRate.3.10" + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNTable 1 } + +HostTopNEntry ::= SEQUENCE { + hostTopNReport Integer32, + hostTopNIndex Integer32, + hostTopNAddress OCTET STRING, + hostTopNRate Integer32 +} + +hostTopNReport OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the top N report of which + this entry is a part. The set of hosts + identified by a particular value of this + object is part of the same report as identified + by the same value of the hostTopNControlIndex object." + ::= { hostTopNEntry 1 } + +hostTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTopN table among those in the same report. + This index is between 1 and N, where N is the + number of entries in this table. Increasing values + of hostTopNIndex shall be assigned to entries with + decreasing values of hostTopNRate until index N + is assigned to the entry with the lowest value of + hostTopNRate or there are no more hostTopNEntries." + ::= { hostTopNEntry 2 } + +hostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTopNEntry 3 } + +hostTopNRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNEntry 4 } + +-- The Matrix Group + +-- Implementation of the Matrix group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Matrix group consists of the matrixControlTable, matrixSDTable +-- and the matrixDSTable. These tables store statistics for a +-- particular conversation between two addresses. As the device +-- detects a new conversation, including those to a non-unicast +-- address, it creates a new entry in both of the matrix tables. +-- It must only create new entries based on information +-- received in good packets. If the monitoring device finds +-- itself short of resources, it may delete entries as needed. +-- It is suggested that the device delete the least recently used +-- entries first. + +matrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information entries for the + traffic matrix on each interface." + ::= { matrix 1 } + +matrixControlEntry OBJECT-TYPE + SYNTAX MatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a traffic matrix on a particular + interface. For example, an instance of the + matrixControlLastDeleteTime object might be named + matrixControlLastDeleteTime.1" + INDEX { matrixControlIndex } + ::= { matrixControlTable 1 } + +MatrixControlEntry ::= SEQUENCE { + matrixControlIndex Integer32, + matrixControlDataSource OBJECT IDENTIFIER, + matrixControlTableSize Integer32, + matrixControlLastDeleteTime TimeTicks, + matrixControlOwner OwnerString, + matrixControlStatus EntryStatus +} + +matrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + matrixControl table. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + matrixSDTable and the matrixDSTable on behalf of this + matrixControlEntry." + ::= { matrixControlEntry 1 } + +matrixControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of + the data from which this entry creates a traffic matrix. + This source can be any interface on this device. In + order to identify a particular interface, this object + shall identify the instance of the ifIndex object, + defined in RFC 2233 [17], for the desired + interface. For example, if an entry were to receive data + from interface #1, this object would be set to ifIndex.1. + + The statistics in this group reflect all packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + matrixControlStatus object is equal to valid(1)." + ::= { matrixControlEntry 2 } + +matrixControlTableSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of matrixSDEntries in the matrixSDTable + for this interface. This must also be the value of + the number of entries in the matrixDSTable for this + interface." + ::= { matrixControlEntry 3 } + +matrixControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the matrixSDTable + or matrixDSTable associated with this matrixControlEntry. + If no deletions have occurred, this value shall be + zero." + ::= { matrixControlEntry 4 } + +matrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { matrixControlEntry 5 } + +matrixControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this matrixControl entry. + If this object is not equal to valid(1), all associated + entries in the matrixSDTable and the matrixDSTable + shall be deleted by the agent." + ::= { matrixControlEntry 6 } + +matrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries indexed by + source and destination MAC address." + ::= { matrix 2 } + +matrixSDEntry OBJECT-TYPE + SYNTAX MatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface. For example, + an instance of the matrixSDPkts object might be named + matrixSDPkts.1.6.8.0.32.27.3.176.6.8.0.32.10.8.113" + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDTable 1 } + +MatrixSDEntry ::= SEQUENCE { + matrixSDSourceAddress OCTET STRING, + matrixSDDestAddress OCTET STRING, + matrixSDIndex Integer32, + matrixSDPkts Counter32, + matrixSDOctets Counter32, + matrixSDErrors Counter32 +} + +matrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source physical address." + ::= { matrixSDEntry 1 } + +matrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination physical address." + ::= { matrixSDEntry 2 } + +matrixSDIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixSDEntry 3 } + +matrixSDPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number includes + bad packets)." + ::= { matrixSDEntry 4 } + +matrixSDOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDEntry 5 } + +matrixSDErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted from + the source address to the destination address." + ::= { matrixSDEntry 6 } + +-- Traffic matrix tables from destination to source + +matrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries indexed by + destination and source MAC address." + ::= { matrix 3 } + +matrixDSEntry OBJECT-TYPE + SYNTAX MatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface. For example, + an instance of the matrixSDPkts object might be named + matrixSDPkts.1.6.8.0.32.10.8.113.6.8.0.32.27.3.176" + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSTable 1 } + +MatrixDSEntry ::= SEQUENCE { + matrixDSSourceAddress OCTET STRING, + matrixDSDestAddress OCTET STRING, + matrixDSIndex Integer32, + matrixDSPkts Counter32, + matrixDSOctets Counter32, + matrixDSErrors Counter32 +} + +matrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source physical address." + ::= { matrixDSEntry 1 } + +matrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination physical address." + ::= { matrixDSEntry 2 } + +matrixDSIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixDSEntry 3 } + +matrixDSPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number includes + bad packets)." + ::= { matrixDSEntry 4 } + +matrixDSOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSEntry 5 } + +matrixDSErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted from + the source address to the destination address." + ::= { matrixDSEntry 6 } + +-- The Filter Group + +-- Implementation of the Filter group is optional. + +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Filter group allows packets to be captured with an +-- arbitrary filter expression. A logical data and +-- event stream or "channel" is formed by the packets +-- that match the filter expression. +-- +-- This filter mechanism allows the creation of an arbitrary +-- logical expression with which to filter packets. Each +-- filter associated with a channel is OR'ed with the others. +-- Within a filter, any bits checked in the data and status are +-- AND'ed with respect to other bits in the same filter. The +-- NotMask also allows for checking for inequality. Finally, +-- the channelAcceptType object allows for inversion of the +-- whole equation. +-- +-- If a management station wishes to receive a trap to alert it +-- that new packets have been captured and are available for +-- download, it is recommended that it set up an alarm entry that +-- monitors the value of the relevant channelMatches instance. +-- +-- The channel can be turned on or off, and can also +-- generate events when packets pass through it. + +filterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packet filter entries." + ::= { filter 1 } + +filterEntry OBJECT-TYPE + SYNTAX FilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for a packet filter applied on a + particular interface. As an example, an instance of the + filterPktData object might be named filterPktData.12" + INDEX { filterIndex } + ::= { filterTable 1 } + +FilterEntry ::= SEQUENCE { + filterIndex Integer32, + filterChannelIndex Integer32, + filterPktDataOffset Integer32, + filterPktData OCTET STRING, + filterPktDataMask OCTET STRING, + filterPktDataNotMask OCTET STRING, + filterPktStatus Integer32, + filterPktStatusMask Integer32, + filterPktStatusNotMask Integer32, + filterOwner OwnerString, + filterStatus EntryStatus +} + +filterIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the filter table. Each such entry defines + one filter that is to be applied to every packet + received on an interface." + ::= { filterEntry 1 } + +filterChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the channel of which this filter + is a part. The filters identified by a particular value + of this object are associated with the same channel as + identified by the same value of the channelIndex object." + ::= { filterEntry 2 } + +filterPktDataOffset OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The offset from the beginning of each packet where + a match of packet data will be attempted. This offset + is measured from the point in the physical layer + packet after the framing bits, if any. For example, + in an Ethernet frame, this point is at the beginning of + the destination MAC address. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + DEFVAL { 0 } + ::= { filterEntry 3 } + +filterPktData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The data that is to be matched with the input packet. + For each packet received, this filter and the accompanying + filterPktDataMask and filterPktDataNotMask will be + adjusted for the offset. The only bits relevant to this + match algorithm are those that have the corresponding + filterPktDataMask bit equal to one. The following three + rules are then applied to every packet: + + (1) If the packet is too short and does not have data + corresponding to part of the filterPktData, the packet + will fail this data match. + + (2) For each relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to zero, if + the bit from the packet is not equal to the corresponding + bit from the filterPktData, then the packet will fail + this data match. + + (3) If for every relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to one, the + bit from the packet is equal to the corresponding bit + from the filterPktData, then the packet will fail this + data match. + + Any packets that have not failed any of the three matches + above have passed this data match. In particular, a zero + length filter will match any packet. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 4 } + +filterPktDataMask OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask that is applied to the match process. + After adjusting this mask for the offset, only those + bits in the received packet that correspond to bits set + in this mask are relevant for further processing by the + match algorithm. The offset is applied to filterPktDataMask + in the same way it is applied to the filter. For the + purposes of the matching algorithm, if the associated + filterPktData object is longer than this mask, this mask is + conceptually extended with '1' bits until it reaches the + length of the filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 5 } + +filterPktDataNotMask OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inversion mask that is applied to the match + process. After adjusting this mask for the offset, + those relevant bits in the received packet that correspond + to bits cleared in this mask must all be equal to their + corresponding bits in the filterPktData object for the packet + to be accepted. In addition, at least one of those relevant + bits in the received packet that correspond to bits set in + this mask must be different to its corresponding bit in the + filterPktData object. + + For the purposes of the matching algorithm, if the associated + filterPktData object is longer than this mask, this mask is + conceptually extended with '0' bits until it reaches the + length of the filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 6 } + +filterPktStatus OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status that is to be matched with the input packet. + The only bits relevant to this match algorithm are those that + have the corresponding filterPktStatusMask bit equal to one. + The following two rules are then applied to every packet: + + (1) For each relevant bit from the packet status with the + corresponding filterPktStatusNotMask bit set to zero, if + the bit from the packet status is not equal to the + corresponding bit from the filterPktStatus, then the + packet will fail this status match. + + (2) If for every relevant bit from the packet status with the + corresponding filterPktStatusNotMask bit set to one, the + bit from the packet status is equal to the corresponding + bit from the filterPktStatus, then the packet will fail + this status match. + + Any packets that have not failed either of the two matches + above have passed this status match. In particular, a zero + length status filter will match any packet's status. + + The value of the packet status is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + The errors and the bits that represent them are dependent + on the media type of the interface that this channel + is receiving packets from. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment error + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined. + + For the purposes of this status matching algorithm, if the + packet status is longer than this filterPktStatus object, + this object is conceptually extended with '0' bits until it + reaches the size of the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 7 } + +filterPktStatusMask OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask that is applied to the status match process. + Only those bits in the received packet that correspond to + bits set in this mask are relevant for further processing + by the status match algorithm. For the purposes + of the matching algorithm, if the associated filterPktStatus + object is longer than this mask, this mask is conceptually + extended with '1' bits until it reaches the size of the + filterPktStatus. In addition, if a packet status is longer + than this mask, this mask is conceptually extended with '0' + bits until it reaches the size of the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 8 } + +filterPktStatusNotMask OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inversion mask that is applied to the status match + process. Those relevant bits in the received packet status + that correspond to bits cleared in this mask must all be + equal to their corresponding bits in the filterPktStatus + object for the packet to be accepted. In addition, at least + one of those relevant bits in the received packet status + that correspond to bits set in this mask must be different + to its corresponding bit in the filterPktStatus object for + the packet to be accepted. + + For the purposes of the matching algorithm, if the associated + filterPktStatus object or a packet status is longer than this + mask, this mask is conceptually extended with '0' bits until + it reaches the longer of the lengths of the filterPktStatus + object and the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 9 } + +filterOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { filterEntry 10 } + +filterStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this filter entry." + ::= { filterEntry 11 } + +channelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packet channel entries." + ::= { filter 2 } + +channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for a packet channel applied on a + particular interface. As an example, an instance of the + channelMatches object might be named channelMatches.3" + INDEX { channelIndex } + ::= { channelTable 1 } + +ChannelEntry ::= SEQUENCE { + channelIndex Integer32, + channelIfIndex Integer32, + channelAcceptType INTEGER, + channelDataControl INTEGER, + channelTurnOnEventIndex Integer32, + channelTurnOffEventIndex Integer32, + channelEventIndex Integer32, + channelEventStatus INTEGER, + channelMatches Counter32, + channelDescription DisplayString, + channelOwner OwnerString, + channelStatus EntryStatus +} + +channelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the channel + table. Each such entry defines one channel, a logical + data and event stream. + + It is suggested that before creating a channel, an + application should scan all instances of the + filterChannelIndex object to make sure that there are no + pre-existing filters that would be inadvertently be linked + to the channel." + ::= { channelEntry 1 } + +channelIfIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device to which + the associated filters are applied to allow data into this + channel. The interface identified by a particular value + of this object is the same interface as identified by the + same value of the ifIndex object, defined in RFC 2233 [17]. + + The filters in this group are applied to all packets on + the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 2 } + +channelAcceptType OBJECT-TYPE + SYNTAX INTEGER { + acceptMatched(1), + acceptFailed(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the action of the filters + associated with this channel. If this object is equal + to acceptMatched(1), packets will be accepted to this + channel if they are accepted by both the packet data and + packet status matches of an associated filter. If + this object is equal to acceptFailed(2), packets will + be accepted to this channel only if they fail either + the packet data match or the packet status match of + each of the associated filters. + + In particular, a channel with no associated filters will + match no packets if set to acceptMatched(1) case and will + match all packets in the acceptFailed(2) case. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 3 } + +channelDataControl OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the flow of data through this channel. + If this object is on(1), data, status and events flow + through this channel. If this object is off(2), data, + status and events will not flow through this channel." + DEFVAL { off } + ::= { channelEntry 4 } + +channelTurnOnEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from off to on when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOnEventIndex must be + set to zero, a non-existent event index. + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 5 } + +channelTurnOffEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from on to off when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOffEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 6 } + +channelEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to be generated when the + associated channelDataControl is on and a packet + is matched. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 7 } + +channelEventStatus OBJECT-TYPE + SYNTAX INTEGER { + eventReady(1), + eventFired(2), + eventAlwaysReady(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The event status of this channel. + + If this channel is configured to generate events + when packets are matched, a means of controlling + the flow of those events is often needed. When + this object is equal to eventReady(1), a single + event may be generated, after which this object + will be set by the probe to eventFired(2). While + in the eventFired(2) state, no events will be + generated until the object is modified to + eventReady(1) (or eventAlwaysReady(3)). The + management station can thus easily respond to a + notification of an event by re-enabling this object. + + If the management station wishes to disable this + flow control and allow events to be generated + at will, this object may be set to + eventAlwaysReady(3). Disabling the flow control + is discouraged as it can result in high network + traffic or other performance problems." + DEFVAL { eventReady } + ::= { channelEntry 8 } + +channelMatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this channel has matched a packet. + Note that this object is updated even when + channelDataControl is set to off." + ::= { channelEntry 9 } + +channelDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment describing this channel." + ::= { channelEntry 10 } + +channelOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { channelEntry 11 } + +channelStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this channel entry." + ::= { channelEntry 12 } + +-- The Packet Capture Group + +-- Implementation of the Packet Capture group is optional. The Packet +-- Capture Group requires implementation of the Filter Group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Packet Capture group allows packets to be captured +-- upon a filter match. The bufferControlTable controls +-- the captured packets output from a channel that is +-- associated with it. The captured packets are placed +-- in entries in the captureBufferTable. These entries are +-- associated with the bufferControlEntry on whose behalf they +-- were stored. + +bufferControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF BufferControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of buffers control entries." + ::= { capture 1 } + +bufferControlEntry OBJECT-TYPE + SYNTAX BufferControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the collection of a stream + of packets that have matched filters. As an example, an + instance of the bufferControlCaptureSliceSize object might + be named bufferControlCaptureSliceSize.3" + INDEX { bufferControlIndex } + ::= { bufferControlTable 1 } + +BufferControlEntry ::= SEQUENCE { + bufferControlIndex Integer32, + bufferControlChannelIndex Integer32, + bufferControlFullStatus INTEGER, + bufferControlFullAction INTEGER, + bufferControlCaptureSliceSize Integer32, + bufferControlDownloadSliceSize Integer32, + bufferControlDownloadOffset Integer32, + bufferControlMaxOctetsRequested Integer32, + bufferControlMaxOctetsGranted Integer32, + bufferControlCapturedPackets Integer32, + bufferControlTurnOnTime TimeTicks, + bufferControlOwner OwnerString, + bufferControlStatus EntryStatus +} + +bufferControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the bufferControl table. The value of this + index shall never be zero. Each such + entry defines one set of packets that is + captured and controlled by one or more filters." + ::= { bufferControlEntry 1 } + +bufferControlChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index that identifies the channel that is the + source of packets for this bufferControl table. + The channel identified by a particular value of this + index is the same as identified by the same value of + the channelIndex object. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + ::= { bufferControlEntry 2 } + +bufferControlFullStatus OBJECT-TYPE + SYNTAX INTEGER { + spaceAvailable(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object shows whether the buffer has room to + accept new packets or if it is full. + + If the status is spaceAvailable(1), the buffer is + accepting new packets normally. If the status is + full(2) and the associated bufferControlFullAction + object is wrapWhenFull, the buffer is accepting new + packets by deleting enough of the oldest packets + to make room for new ones as they arrive. Otherwise, + if the status is full(2) and the + bufferControlFullAction object is lockWhenFull, + then the buffer has stopped collecting packets. + + When this object is set to full(2) the probe must + not later set it to spaceAvailable(1) except in the + case of a significant gain in resources such as + an increase of bufferControlOctetsGranted. In + particular, the wrap-mode action of deleting old + packets to make room for newly arrived packets + must not affect the value of this object." + ::= { bufferControlEntry 3 } + +bufferControlFullAction OBJECT-TYPE + SYNTAX INTEGER { + lockWhenFull(1), + wrapWhenFull(2) -- FIFO + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls the action of the buffer when it + reaches the full status. When in the lockWhenFull(1) + state and a packet is added to the buffer that + fills the buffer, the bufferControlFullStatus will + be set to full(2) and this buffer will stop capturing + packets." + ::= { bufferControlEntry 4 } + +bufferControlCaptureSliceSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of octets of each packet + that will be saved in this capture buffer. + For example, if a 1500 octet packet is received by + the probe and this object is set to 500, then only + 500 octets of the packet will be stored in the + associated capture buffer. If this variable is set + to 0, the capture buffer will save as many octets + as is possible. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + DEFVAL { 100 } + ::= { bufferControlEntry 5 } + +bufferControlDownloadSliceSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of octets of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer, the associated + bufferControlDownloadOffset is 0, and this + object is set to 100, then the captureBufferPacket + object that contains the packet will contain only + the first 100 octets of the packet. + + A prudent manager will take into account possible + interoperability or fragmentation problems that may + occur if the download slice size is set too large. + In particular, conformant SNMP implementations are not + required to accept messages whose length exceeds 484 + octets, although they are encouraged to support larger + datagrams whenever feasible." + DEFVAL { 100 } + ::= { bufferControlEntry 6 } + +bufferControlDownloadOffset OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The offset of the first octet of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer and this object is set to + 100, then the captureBufferPacket object that + contains the packet will contain bytes starting + 100 octets into the packet." + DEFVAL { 0 } + ::= { bufferControlEntry 7 } + +bufferControlMaxOctetsRequested OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested maximum number of octets to be + saved in this captureBuffer, including any + implementation-specific overhead. If this variable + is set to -1, the capture buffer will save as many + octets as is possible. + + When this object is created or modified, the probe + should set bufferControlMaxOctetsGranted as closely + to this object as is possible for the particular probe + implementation and available resources. However, if + the object has the special value of -1, the probe + must set bufferControlMaxOctetsGranted to -1." + DEFVAL { -1 } + ::= { bufferControlEntry 8 } + +bufferControlMaxOctetsGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets that can be + saved in this captureBuffer, including overhead. + If this variable is -1, the capture buffer will save + as many octets as possible. + + When the bufferControlMaxOctetsRequested object is + created or modified, the probe should set this object + as closely to the requested value as is possible for the + particular probe implementation and available resources. + However, if the request object has the special value + of -1, the probe must set this object to -1. + + The probe must not lower this value except as a result of + a modification to the associated + bufferControlMaxOctetsRequested object. + + When this maximum number of octets is reached + and a new packet is to be added to this + capture buffer and the corresponding + bufferControlFullAction is set to wrapWhenFull(2), + enough of the oldest packets associated with this + capture buffer shall be deleted by the agent so + that the new packet can be added. If the corresponding + bufferControlFullAction is set to lockWhenFull(1), + the new packet shall be discarded. In either case, + the probe must set bufferControlFullStatus to + full(2). + + When the value of this object changes to a value less + than the current value, entries are deleted from + the captureBufferTable associated with this + bufferControlEntry. Enough of the + oldest of these captureBufferEntries shall be + deleted by the agent so that the number of octets + used remains less than or equal to the new value of + this object. + + When the value of this object changes to a value greater + than the current value, the number of associated + captureBufferEntries may be allowed to grow." + ::= { bufferControlEntry 9 } + +bufferControlCapturedPackets OBJECT-TYPE + SYNTAX Integer32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets currently in this captureBuffer." + ::= { bufferControlEntry 10 } + +bufferControlTurnOnTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this capture buffer was + first turned on." + ::= { bufferControlEntry 11 } + +bufferControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it." + ::= { bufferControlEntry 12 } + +bufferControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this buffer Control Entry." + ::= { bufferControlEntry 13 } + +captureBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packets captured off of a channel." + ::= { capture 2 } + +captureBufferEntry OBJECT-TYPE + SYNTAX CaptureBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A packet captured off of an attached network. As an + example, an instance of the captureBufferPacketData + object might be named captureBufferPacketData.3.1783" + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferTable 1 } + +CaptureBufferEntry ::= SEQUENCE { + captureBufferControlIndex Integer32, + captureBufferIndex Integer32, + captureBufferPacketID Integer32, + captureBufferPacketData OCTET STRING, + captureBufferPacketLength Integer32, + captureBufferPacketTime Integer32, + captureBufferPacketStatus Integer32 +} + +captureBufferControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the bufferControlEntry with which + this packet is associated." + ::= { captureBufferEntry 1 } + +captureBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the captureBuffer table associated with a + particular bufferControlEntry. This index will + start at 1 and increase by one for each new packet + added with the same captureBufferControlIndex. + + Should this value reach 2147483647, the next packet + added with the same captureBufferControlIndex shall + cause this value to wrap around to 1." + ::= { captureBufferEntry 2 } + +captureBufferPacketID OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that describes the order of packets + that are received on a particular interface. + The packetID of a packet captured on an + interface is defined to be greater than the + packetID's of all packets captured previously on + the same interface. As the captureBufferPacketID + object has a maximum positive value of 2^31 - 1, + any captureBufferPacketID object shall have the + value of the associated packet's packetID mod 2^31." + ::= { captureBufferEntry 3 } + +captureBufferPacketData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The data inside the packet, starting at the beginning + of the packet plus any offset specified in the + associated bufferControlDownloadOffset, including any + link level headers. The length of the data in this object + is the minimum of the length of the captured packet minus + the offset, the length of the associated + bufferControlCaptureSliceSize minus the offset, and the + associated bufferControlDownloadSliceSize. If this minimum + is less than zero, this object shall have a length of zero." + ::= { captureBufferEntry 4 } + +captureBufferPacketLength OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual length (off the wire) of the packet stored + in this entry, including FCS octets." + ::= { captureBufferEntry 5 } + +captureBufferPacketTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of milliseconds that had passed since + this capture buffer was first turned on when this + packet was captured." + ::= { captureBufferEntry 6 } + +captureBufferPacketStatus OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the error status of this packet. + + The value of this object is defined in the same way as + filterPktStatus. The value is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment error + 3 First packet in this capture buffer after + it was detected that some packets were + not processed correctly. + 4 Packet's order in buffer is only approximate + (May only be set for packets sent from + the probe) + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined." + ::= { captureBufferEntry 7 } + +-- The Event Group + +-- Implementation of the Event group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Event group controls the generation and notification +-- of events from this device. Each entry in the eventTable +-- describes the parameters of the event that can be triggered. +-- Each event entry is fired by an associated condition located +-- elsewhere in the MIB. An event entry may also be associated +-- with a function elsewhere in the MIB that will be executed +-- when the event is generated. For example, a channel may +-- be turned on or off by the firing of an event. +-- +-- Each eventEntry may optionally specify that a log entry +-- be created on its behalf whenever the event occurs. +-- Each entry may also specify that notification should +-- occur by way of SNMP trap messages. In this case, the +-- community for the trap message is given in the associated +-- eventCommunity object. The enterprise and specific trap +-- fields of the trap are determined by the condition that +-- triggered the event. Two traps are defined: risingAlarm and +-- fallingAlarm. If the eventTable is triggered by a condition +-- specified elsewhere, the enterprise and specific trap fields +-- must be specified for traps generated for that condition. + +eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of events to be generated." + ::= { event 1 } + +eventEntry OBJECT-TYPE + SYNTAX EventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that describe an event to be generated + when certain conditions are met. As an example, an instance + of the eventLastTimeSent object might be named + eventLastTimeSent.6" + INDEX { eventIndex } + ::= { eventTable 1 } + +EventEntry ::= SEQUENCE { + eventIndex Integer32, + eventDescription DisplayString, + eventType INTEGER, + eventCommunity OCTET STRING, + eventLastTimeSent TimeTicks, + eventOwner OwnerString, + eventStatus EntryStatus +} + +eventIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + event table. Each such entry defines one event that + is to be generated when the appropriate conditions + occur." + ::= { eventEntry 1 } + +eventDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment describing this event entry." + ::= { eventEntry 2 } + +eventType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + log(2), + snmptrap(3), -- send an SNMP trap + logandtrap(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of notification that the probe will make + about this event. In the case of log, an entry is + made in the log table for each event. In the case of + snmp-trap, an SNMP trap is sent to one or more + management stations." + ::= { eventEntry 3 } + +eventCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If an SNMP trap is to be sent, it will be sent to + the SNMP community specified by this octet string." + ::= { eventEntry 4 } + +eventLastTimeSent OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this event + entry last generated an event. If this entry has + not generated any events, this value will be + zero." + ::= { eventEntry 5 } + +eventOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is therefore + using the resources assigned to it. + + If this object contains a string starting with 'monitor' + and has associated entries in the log table, all connected + management stations should retrieve those log entries, + as they may have significance to all management stations + connected to this device" + ::= { eventEntry 6 } + +eventStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this event entry. + + If this object is not equal to valid(1), all associated + log entries shall be deleted by the agent." + ::= { eventEntry 7 } + +-- +logTable OBJECT-TYPE + SYNTAX SEQUENCE OF LogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of events that have been logged." + ::= { event 2 } + +logEntry OBJECT-TYPE + SYNTAX LogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of data describing an event that has been + logged. For example, an instance of the logDescription + object might be named logDescription.6.47" + INDEX { logEventIndex, logIndex } + ::= { logTable 1 } + +LogEntry ::= SEQUENCE { + logEventIndex Integer32, + logIndex Integer32, + logTime TimeTicks, + logDescription DisplayString +} + +logEventIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The event entry that generated this log + entry. The log identified by a particular + value of this index is associated with the same + eventEntry as identified by the same value + of eventIndex." + ::= { logEntry 1 } + +logIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the log table amongst those generated by the + same eventEntries. These indexes are + assigned beginning with 1 and increase by one + with each new log entry. The association + between values of logIndex and logEntries + is fixed for the lifetime of each logEntry. + The agent may choose to delete the oldest + instances of logEntry as required because of + lack of memory. It is an implementation-specific + matter as to when this deletion may occur." + ::= { logEntry 2 } + +logTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this log entry was created." + ::= { logEntry 3 } + +logDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An implementation dependent description of the + event that activated this log entry." + ::= { logEntry 4 } + +-- Remote Network Monitoring Traps + +rmonEventsV2 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Definition point for RMON notifications." + ::= { rmon 0 } + +risingAlarm NOTIFICATION-TYPE + OBJECTS { alarmIndex, alarmVariable, alarmSampleType, + alarmValue, alarmRisingThreshold } + STATUS current + DESCRIPTION + "The SNMP trap that is generated when an alarm + entry crosses its rising threshold and generates + an event that is configured for sending SNMP + traps." + ::= { rmonEventsV2 1 } + +fallingAlarm NOTIFICATION-TYPE + OBJECTS { alarmIndex, alarmVariable, alarmSampleType, + alarmValue, alarmFallingThreshold } + STATUS current + DESCRIPTION + "The SNMP trap that is generated when an alarm + entry crosses its falling threshold and generates + an event that is configured for sending SNMP + traps." + ::= { rmonEventsV2 2 } + +-- Conformance information + +rmonCompliances OBJECT IDENTIFIER ::= { rmonConformance 9 } +rmonGroups OBJECT IDENTIFIER ::= { rmonConformance 10 } + +-- Compliance Statements +rmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the RMON MIB. At least + one of the groups in this module must be implemented to + conform to the RMON MIB. Implementations of this MIB + must also implement the system group of MIB-II [16] and the + IF-MIB [17]." + MODULE -- this module + + GROUP rmonEtherStatsGroup + DESCRIPTION + "The RMON Ethernet Statistics Group is optional." + + GROUP rmonHistoryControlGroup + DESCRIPTION + "The RMON History Control Group is optional." + + GROUP rmonEthernetHistoryGroup + DESCRIPTION + "The RMON Ethernet History Group is optional." + + GROUP rmonAlarmGroup + DESCRIPTION + "The RMON Alarm Group is optional." + + GROUP rmonHostGroup + DESCRIPTION + "The RMON Host Group is mandatory when the + rmonHostTopNGroup is implemented." + + GROUP rmonHostTopNGroup + DESCRIPTION + "The RMON Host Top N Group is optional." + + GROUP rmonMatrixGroup + DESCRIPTION + "The RMON Matrix Group is optional." + + GROUP rmonFilterGroup + DESCRIPTION + "The RMON Filter Group is mandatory when the + rmonPacketCaptureGroup is implemented." + + GROUP rmonPacketCaptureGroup + DESCRIPTION + "The RMON Packet Capture Group is optional." + + GROUP rmonEventGroup + DESCRIPTION + "The RMON Event Group is mandatory when the + rmonAlarmGroup is implemented." + ::= { rmonCompliances 1 } + + rmonEtherStatsGroup OBJECT-GROUP + OBJECTS { + etherStatsIndex, etherStatsDataSource, + etherStatsDropEvents, etherStatsOctets, etherStatsPkts, + etherStatsBroadcastPkts, etherStatsMulticastPkts, + etherStatsCRCAlignErrors, etherStatsUndersizePkts, + etherStatsOversizePkts, etherStatsFragments, + etherStatsJabbers, etherStatsCollisions, + etherStatsPkts64Octets, etherStatsPkts65to127Octets, + etherStatsPkts128to255Octets, + etherStatsPkts256to511Octets, + etherStatsPkts512to1023Octets, + etherStatsPkts1024to1518Octets, + etherStatsOwner, etherStatsStatus + } + STATUS current + DESCRIPTION + "The RMON Ethernet Statistics Group." + ::= { rmonGroups 1 } + + rmonHistoryControlGroup OBJECT-GROUP + OBJECTS { + historyControlIndex, historyControlDataSource, + historyControlBucketsRequested, + historyControlBucketsGranted, historyControlInterval, + historyControlOwner, historyControlStatus + } + STATUS current + DESCRIPTION + "The RMON History Control Group." + ::= { rmonGroups 2 } + + rmonEthernetHistoryGroup OBJECT-GROUP + OBJECTS { + etherHistoryIndex, etherHistorySampleIndex, + etherHistoryIntervalStart, etherHistoryDropEvents, + etherHistoryOctets, etherHistoryPkts, + etherHistoryBroadcastPkts, etherHistoryMulticastPkts, + etherHistoryCRCAlignErrors, etherHistoryUndersizePkts, + etherHistoryOversizePkts, etherHistoryFragments, + etherHistoryJabbers, etherHistoryCollisions, + etherHistoryUtilization + } + STATUS current + DESCRIPTION + "The RMON Ethernet History Group." + ::= { rmonGroups 3 } + + rmonAlarmGroup OBJECT-GROUP + OBJECTS { + alarmIndex, alarmInterval, alarmVariable, + alarmSampleType, alarmValue, alarmStartupAlarm, + alarmRisingThreshold, alarmFallingThreshold, + alarmRisingEventIndex, alarmFallingEventIndex, + alarmOwner, alarmStatus + } + STATUS current + DESCRIPTION + "The RMON Alarm Group." + ::= { rmonGroups 4 } + + rmonHostGroup OBJECT-GROUP + OBJECTS { + hostControlIndex, hostControlDataSource, + hostControlTableSize, hostControlLastDeleteTime, + hostControlOwner, hostControlStatus, + hostAddress, hostCreationOrder, hostIndex, + hostInPkts, hostOutPkts, hostInOctets, + hostOutOctets, hostOutErrors, hostOutBroadcastPkts, + hostOutMulticastPkts, hostTimeAddress, + hostTimeCreationOrder, hostTimeIndex, + hostTimeInPkts, hostTimeOutPkts, hostTimeInOctets, + hostTimeOutOctets, hostTimeOutErrors, + hostTimeOutBroadcastPkts, hostTimeOutMulticastPkts + } + STATUS current + DESCRIPTION + "The RMON Host Group." + ::= { rmonGroups 5 } + + rmonHostTopNGroup OBJECT-GROUP + OBJECTS { + hostTopNControlIndex, hostTopNHostIndex, + hostTopNRateBase, hostTopNTimeRemaining, + hostTopNDuration, hostTopNRequestedSize, + hostTopNGrantedSize, hostTopNStartTime, + hostTopNOwner, hostTopNStatus, + hostTopNReport, hostTopNIndex, + hostTopNAddress, hostTopNRate + } + STATUS current + DESCRIPTION + "The RMON Host Top 'N' Group." + ::= { rmonGroups 6 } + + rmonMatrixGroup OBJECT-GROUP + OBJECTS { + matrixControlIndex, matrixControlDataSource, + matrixControlTableSize, matrixControlLastDeleteTime, + matrixControlOwner, matrixControlStatus, + matrixSDSourceAddress, matrixSDDestAddress, + matrixSDIndex, matrixSDPkts, + matrixSDOctets, matrixSDErrors, + matrixDSSourceAddress, matrixDSDestAddress, + matrixDSIndex, matrixDSPkts, + matrixDSOctets, matrixDSErrors + } + STATUS current + DESCRIPTION + "The RMON Matrix Group." + ::= { rmonGroups 7 } + + rmonFilterGroup OBJECT-GROUP + OBJECTS { + filterIndex, filterChannelIndex, filterPktDataOffset, + filterPktData, filterPktDataMask, + filterPktDataNotMask, filterPktStatus, + filterPktStatusMask, filterPktStatusNotMask, + filterOwner, filterStatus, + channelIndex, channelIfIndex, channelAcceptType, + channelDataControl, channelTurnOnEventIndex, + channelTurnOffEventIndex, channelEventIndex, + channelEventStatus, channelMatches, + channelDescription, channelOwner, channelStatus + } + STATUS current + DESCRIPTION + "The RMON Filter Group." + ::= { rmonGroups 8 } + + rmonPacketCaptureGroup OBJECT-GROUP + OBJECTS { + bufferControlIndex, bufferControlChannelIndex, + bufferControlFullStatus, bufferControlFullAction, + bufferControlCaptureSliceSize, + bufferControlDownloadSliceSize, + bufferControlDownloadOffset, + bufferControlMaxOctetsRequested, + bufferControlMaxOctetsGranted, + bufferControlCapturedPackets, + bufferControlTurnOnTime, + bufferControlOwner, bufferControlStatus, + captureBufferControlIndex, captureBufferIndex, + captureBufferPacketID, captureBufferPacketData, + captureBufferPacketLength, captureBufferPacketTime, + captureBufferPacketStatus + } + STATUS current + DESCRIPTION + "The RMON Packet Capture Group." + ::= { rmonGroups 9 } + + rmonEventGroup OBJECT-GROUP + OBJECTS { + eventIndex, eventDescription, eventType, + eventCommunity, eventLastTimeSent, + eventOwner, eventStatus, + logEventIndex, logIndex, logTime, + logDescription + } + STATUS current + DESCRIPTION + "The RMON Event Group." + ::= { rmonGroups 10 } + + rmonNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { risingAlarm, fallingAlarm } + STATUS current + DESCRIPTION + "The RMON Notification Group." + ::= { rmonGroups 11 } +END diff --git a/mibs/ietf/RMON2-MIB b/mibs/ietf/RMON2-MIB new file mode 100644 index 0000000..31ec04e --- /dev/null +++ b/mibs/ietf/RMON2-MIB @@ -0,0 +1,6019 @@ +RMON2-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Gauge32, IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + OwnerString, statistics, history, hosts, + matrix, filter, etherStatsEntry, historyControlEntry, + hostControlEntry, matrixControlEntry, filterEntry, + channelEntry FROM RMON-MIB + tokenRing, tokenRingMLStatsEntry, tokenRingPStatsEntry, + + + + ringStationControlEntry, sourceRoutingStatsEntry + FROM TOKEN-RING-RMON-MIB; +-- Remote Network Monitoring MIB + +rmon MODULE-IDENTITY + LAST-UPDATED "200605020000Z" -- May 2, 2006 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + + REVISION "200605020000Z" -- May 2, 2006 + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + + REVISION "200207080000Z" -- 08 July, 2002 + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + + REVISION "199605270000Z" -- 27 May, 1996 + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + +-- { rmon 1 } through { rmon 10 } are defined in RMON and +-- the Token Ring RMON MIB [RFC1513] + + protocolDir OBJECT IDENTIFIER ::= { rmon 11 } + protocolDist OBJECT IDENTIFIER ::= { rmon 12 } + addressMap OBJECT IDENTIFIER ::= { rmon 13 } + nlHost OBJECT IDENTIFIER ::= { rmon 14 } + nlMatrix OBJECT IDENTIFIER ::= { rmon 15 } + alHost OBJECT IDENTIFIER ::= { rmon 16 } + alMatrix OBJECT IDENTIFIER ::= { rmon 17 } + usrHistory OBJECT IDENTIFIER ::= { rmon 18 } + probeConfig OBJECT IDENTIFIER ::= { rmon 19 } + rmonConformance OBJECT IDENTIFIER ::= { rmon 20 } + + + + +-- Textual Conventions + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use." + SYNTAX Gauge32 + +LastCreateTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment 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 + +TimeFilter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + + SYNTAX TimeTicks + +DataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1." + SYNTAX OBJECT IDENTIFIER + +-- +-- Protocol Directory Group +-- +-- Lists the inventory of protocols the probe has the capability of +-- monitoring and allows the addition, deletion, and configuration of +-- entries in this list. + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups." + ::= { protocolDir 2 } + +protocolDirEntry OBJECT-TYPE + SYNTAX ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error." + ::= { protocolDirEntry 1 } + +protocolDirParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero." + ::= { protocolDirEntry 2 } + +protocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)." + ::= { protocolDirEntry 4 } + +protocolDirType OBJECT-TYPE + SYNTAX BITS { + extensible(0), + addressRecognitionCapable(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero." + ::= { protocolDirEntry 5 } + +protocolDirAddressMapConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable." + ::= { protocolDirEntry 6 } + +protocolDirHostConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 7 } + +protocolDirMatrixConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 8 } + +protocolDirOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted." + ::= { protocolDirEntry 10 } + +-- +-- Protocol Distribution Group (protocolDist) +-- +-- Collects the relative amounts of octets and packets for the +-- different protocols detected on a network segment. +-- protocolDistControlTable, +-- protocolDistStatsTable + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface." + ::= { protocolDist 1 } + +protocolDistControlEntry OBJECT-TYPE + SYNTAX ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7" + INDEX { protocolDistControlIndex } + + + + ::= { protocolDistControlTable 1 } + +ProtocolDistControlEntry ::= SEQUENCE { + protocolDistControlIndex Integer32, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter32, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)." + ::= { protocolDistControlEntry 2 } + +protocolDistControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { protocolDistControlEntry 3 } + +protocolDistControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { protocolDistControlEntry 4 } + +protocolDistControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted." + ::= { protocolDistControlEntry 6 } + +-- per interface protocol distribution statistics table +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed." + ::= { protocolDist 2 } + +protocolDistStatsEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsTable 1 } + +ProtocolDistStatsEntry ::= SEQUENCE { + protocolDistStatsPkts ZeroBasedCounter32, + protocolDistStatsOctets ZeroBasedCounter32 +} + +protocolDistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { protocolDistStatsEntry 1 } + +protocolDistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +-- +-- Address Map Group (addressMap) +-- +-- Lists MAC address to network address bindings discovered by the +-- probe and what interface they were last seen on. +-- addressMapControlTable +-- addressMapTable + +addressMapInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 1 } + +addressMapDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 2 } + +addressMapMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { addressMap 3 } + +addressMapControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available." + ::= { addressMap 4 } + +addressMapControlEntry OBJECT-TYPE + SYNTAX AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1" + + + + INDEX { addressMapControlIndex } + ::= { addressMapControlTable 1 } + +AddressMapControlEntry ::= SEQUENCE { + addressMapControlIndex Integer32, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter32, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { addressMapControlEntry 3 } + +addressMapControlOwner OBJECT-TYPE + SYNTAX OwnerString + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted." + ::= { addressMapControlEntry 5 } + +addressMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)." + ::= { addressMap 5 } + +addressMapEntry OBJECT-TYPE + SYNTAX AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource } + ::= { addressMapTable 1 } + +AddressMapEntry ::= SEQUENCE { + addressMapTimeMark TimeFilter, + addressMapNetworkAddress OCTET STRING, + addressMapSource OBJECT IDENTIFIER, + addressMapPhysicalAddress OCTET STRING, + addressMapLastChange TimeStamp +} + +addressMapTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { addressMapEntry 2 } + +addressMapSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater." + ::= { addressMapEntry 3 } + +addressMapPhysicalAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol." + ::= { addressMapEntry 4 } + +addressMapLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently." + ::= { addressMapEntry 5 } + +-- +-- Network Layer Host Group +-- +-- Counts the amount of traffic sent from and to each network address +-- discovered by the probe. +-- Note that while the hlHostControlTable also has objects that +-- control an optional alHostTable, implementation of the alHostTable is +-- not required to fully implement this group. + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available." + ::= { nlHost 1 } + +hlHostControlEntry OBJECT-TYPE + SYNTAX HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1" + INDEX { hlHostControlIndex } + ::= { hlHostControlTable 1 } + +HlHostControlEntry ::= SEQUENCE { + hlHostControlIndex Integer32, + hlHostControlDataSource DataSource, + hlHostControlNlDroppedFrames Counter32, + hlHostControlNlInserts Counter32, + hlHostControlNlDeletes Counter32, + hlHostControlNlMaxDesiredEntries Integer32, + hlHostControlAlDroppedFrames Counter32, + hlHostControlAlInserts Counter32, + hlHostControlAlDeletes Counter32, + hlHostControlAlMaxDesiredEntries Integer32, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry." + ::= { hlHostControlEntry 1 } + +hlHostControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)." + ::= { hlHostControlEntry 2 } + +hlHostControlNlDroppedFrames OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 3 } + +hlHostControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 4 } + +hlHostControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 5 } + +hlHostControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 6 } + +hlHostControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 7 } + +hlHostControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 8 } + +hlHostControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 9 } + +hlHostControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 10 } + +hlHostControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted." + ::= { hlHostControlEntry 12 } + +nlHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors." +::= { nlHost 2 } + +nlHostEntry OBJECT-TYPE + SYNTAX NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostTable 1 } + +NlHostEntry ::= SEQUENCE { + nlHostTimeMark TimeFilter, + nlHostAddress OCTET STRING, + nlHostInPkts ZeroBasedCounter32, + nlHostOutPkts ZeroBasedCounter32, + nlHostInOctets ZeroBasedCounter32, + nlHostOutOctets ZeroBasedCounter32, + nlHostOutMacNonUnicastPkts ZeroBasedCounter32, + nlHostCreateTime LastCreateTime +} + +nlHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlHostEntry 2 } + +nlHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 3 } + +nlHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 4 } + +nlHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 5 } + +nlHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 6 } + + + + +nlHostOutMacNonUnicastPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlHostEntry 7 } + +nlHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlHostEntry 8 } + +-- +-- Network Layer Matrix Group +-- +-- Counts the amount of traffic sent between each pair of network +-- addresses discovered by the probe. +-- Note that while the hlMatrixControlTable also has objects that +-- control optional alMatrixTables, implementation of the +-- alMatrixTables is not required to fully implement this group. + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table." + ::= { nlMatrix 1 } + +hlMatrixControlEntry OBJECT-TYPE + SYNTAX HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex Integer32, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter32, + hlMatrixControlNlInserts Counter32, + hlMatrixControlNlDeletes Counter32, + hlMatrixControlNlMaxDesiredEntries Integer32, + hlMatrixControlAlDroppedFrames Counter32, + hlMatrixControlAlInserts Counter32, + hlMatrixControlAlDeletes Counter32, + hlMatrixControlAlMaxDesiredEntries Integer32, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry." + ::= { hlMatrixControlEntry 1 } + +hlMatrixControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)." + ::= { hlMatrixControlEntry 2 } + +hlMatrixControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 3 } + +hlMatrixControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 4 } + +hlMatrixControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 5 } + +hlMatrixControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 6 } + +hlMatrixControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 7 } + +hlMatrixControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 8 } + +hlMatrixControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 9 } + +hlMatrixControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 10 } + +hlMatrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address." + ::= { nlMatrix 2 } + +nlMatrixSDEntry OBJECT-TYPE + SYNTAX NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress } + ::= { nlMatrixSDTable 1 } + + + +NlMatrixSDEntry ::= SEQUENCE { + nlMatrixSDTimeMark TimeFilter, + nlMatrixSDSourceAddress OCTET STRING, + nlMatrixSDDestAddress OCTET STRING, + nlMatrixSDPkts ZeroBasedCounter32, + nlMatrixSDOctets ZeroBasedCounter32, + nlMatrixSDCreateTime LastCreateTime +} + +nlMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 2 } + +nlMatrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 3 } + +nlMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixSDEntry 4 } + +nlMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDEntry 5 } + +nlMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixSDEntry 6 } + + +-- Traffic matrix tables from destination to source + +nlMatrixDSTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address." + ::= { nlMatrix 3 } + +nlMatrixDSEntry OBJECT-TYPE + SYNTAX NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + + + + nlMatrixDSDestAddress, nlMatrixDSSourceAddress } + ::= { nlMatrixDSTable 1 } + +NlMatrixDSEntry ::= SEQUENCE { + nlMatrixDSTimeMark TimeFilter, + nlMatrixDSSourceAddress OCTET STRING, + nlMatrixDSDestAddress OCTET STRING, + nlMatrixDSPkts ZeroBasedCounter32, + nlMatrixDSOctets ZeroBasedCounter32, + nlMatrixDSCreateTime LastCreateTime +} + +nlMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 2 } + +nlMatrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 3 } + +nlMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixDSEntry 4 } + +nlMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSEntry 5 } + +nlMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixDSEntry 6 } + +nlMatrixTopNControlTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { nlMatrix 4 } + +nlMatrixTopNControlEntry OBJECT-TYPE + SYNTAX NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3" + INDEX { nlMatrixTopNControlIndex } + ::= { nlMatrixTopNControlTable 1 } + +NlMatrixTopNControlEntry ::= SEQUENCE { + nlMatrixTopNControlIndex Integer32, + nlMatrixTopNControlMatrixIndex Integer32, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining Integer32, + nlMatrixTopNControlGeneratedReports Counter32, + nlMatrixTopNControlDuration Integer32, + nlMatrixTopNControlRequestedSize Integer32, + nlMatrixTopNControlGrantedSize Integer32, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 2 } + +nlMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { nlMatrixTopNControlEntry 4 } + +nlMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry." + + + + ::= { nlMatrixTopNControlEntry 6 } + +nlMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent." + ::= { nlMatrixTopNControlEntry 11 } + +nlMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets." + ::= { nlMatrix 5 } + +nlMatrixTopNEntry OBJECT-TYPE + SYNTAX NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10" + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNTable 1 } + +NlMatrixTopNEntry ::= SEQUENCE { + nlMatrixTopNIndex Integer32, + nlMatrixTopNProtocolDirLocalIndex Integer32, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge32, + nlMatrixTopNReversePktRate Gauge32, + nlMatrixTopNOctetRate Gauge32, + nlMatrixTopNReverseOctetRate Gauge32 +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries." + ::= { nlMatrixTopNEntry 1 } + +nlMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 3 } + +nlMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + + + + ::= { nlMatrixTopNEntry 4 } + +nlMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 5 } + +nlMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object." + ::= { nlMatrixTopNEntry 6 } + +nlMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 7 } + +nlMatrixTopNReverseOctetRate OBJECT-TYPE + + + + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object." + ::= { nlMatrixTopNEntry 8 } + +-- Application Layer Functions +-- +-- The application layer host, matrix, and matrixTopN functions report +-- on protocol usage at the network layer or higher. Note that the +-- use of the term application layer does not imply that only +-- application-layer protocols are counted, rather it means that +-- protocols up to and including the application layer are supported. + +-- +-- Application Layer Host Group +-- +-- Counts the amount of traffic, by protocol, sent from and to each +-- network address discovered by the probe. +-- Implementation of this group requires implementation of the Network +-- Layer Host Group. + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable." + ::= { alHost 1 } + +alHostEntry OBJECT-TYPE + SYNTAX AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostTable 1 } + +AlHostEntry ::= SEQUENCE { + alHostTimeMark TimeFilter, + alHostInPkts ZeroBasedCounter32, + alHostOutPkts ZeroBasedCounter32, + alHostInOctets ZeroBasedCounter32, + alHostOutOctets ZeroBasedCounter32, + alHostCreateTime LastCreateTime +} + +alHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 2 } + +alHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 3 } + +alHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 4 } + + + +alHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 5 } + +alHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alHostEntry 6 } + +-- +-- Application Layer Matrix Group +-- +-- Counts the amount of traffic, by protocol, sent between each pair +-- of network addresses discovered by the probe. +-- Implementation of this group requires implementation of the Network +-- Layer Matrix Group. + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable." + ::= { alMatrix 1 } + +alMatrixSDEntry OBJECT-TYPE + SYNTAX AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + + + + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixSDEntry 2 } + +alMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixSDEntry 3 } + +alMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixSDEntry 4 } + +-- Traffic matrix tables from destination to source + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable." + ::= { alMatrix 2 } + +alMatrixDSEntry OBJECT-TYPE + SYNTAX AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixDSEntry 2 } + + + + +alMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixDSEntry 3 } + +alMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixDSEntry 4 } + +alMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { alMatrix 3 } + +alMatrixTopNControlEntry OBJECT-TYPE + SYNTAX AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3" + INDEX { alMatrixTopNControlIndex } + ::= { alMatrixTopNControlTable 1 } + + + + +AlMatrixTopNControlEntry ::= SEQUENCE { + alMatrixTopNControlIndex Integer32, + alMatrixTopNControlMatrixIndex Integer32, + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining Integer32, + alMatrixTopNControlGeneratedReports Counter32, + alMatrixTopNControlDuration Integer32, + alMatrixTopNControlRequestedSize Integer32, + alMatrixTopNControlGrantedSize Integer32, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 2 } + +alMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { + alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + + + + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 3 } + +alMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { alMatrixTopNControlEntry 4 } + +alMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry." + ::= { alMatrixTopNControlEntry 6 } + +alMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + + + + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent." + ::= { alMatrixTopNControlEntry 11 } + +alMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets." + ::= { alMatrix 4 } + +alMatrixTopNEntry OBJECT-TYPE + SYNTAX AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10" + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNTable 1 } + +AlMatrixTopNEntry ::= SEQUENCE { + alMatrixTopNIndex Integer32, + alMatrixTopNProtocolDirLocalIndex Integer32, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + alMatrixTopNAppProtocolDirLocalIndex Integer32, + alMatrixTopNPktRate Gauge32, + alMatrixTopNReversePktRate Gauge32, + alMatrixTopNOctetRate Gauge32, + alMatrixTopNReverseOctetRate Gauge32 + } + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries." + ::= { alMatrixTopNEntry 1 } + +alMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + + + + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 3 } + +alMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 4 } + +alMatrixTopNAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 6 } + +alMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object." + ::= { alMatrixTopNEntry 7 } + +alMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 8 } + +alMatrixTopNReverseOctetRate OBJECT-TYPE + + + + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object." + ::= { alMatrixTopNEntry 9 } + +-- +-- User History Collection Group (usrHistory) +-- +-- The usrHistory group combines mechanisms seen in the alarm and +-- history groups to provide user-specified history collection, +-- utilizing two additional control tables and one additional data +-- table. This function has traditionally been done by NMS +-- applications, via periodic polling. The usrHistory group allows +-- this task to be offloaded to an RMON probe. +-- +-- Data (an ASN.1 INTEGER based object) is collected in the same +-- manner as any history data table (e.g., etherHistoryTable) except +-- that the user specifies the MIB instances to be collected. Objects +-- are collected in bucket-groups, with the intent that all MIB +-- instances in the same bucket-group are collected as atomically as +-- possible by the RMON probe. +-- +-- The usrHistoryControlTable is a one-dimensional read-create table. +-- Each row configures a collection of user history buckets, much +-- the same as a historyControlEntry, except that the creation of a +-- row in this table will cause one or more associated instances in +-- the usrHistoryObjectTable to be created. The user specifies the +-- number of bucket elements (rows in the usrHistoryObjectTable) +-- requested, as well as the number of buckets requested. +-- +-- The usrHistoryObjectTable is a 2-d read-write table. +-- Each row configures a single MIB instance to be collected. +-- All rows with the same major index constitute a bucket-group. +-- +-- The usrHistoryTable is a 3-d read-only table containing + + + +-- the data of associated usrHistoryControlEntries. Each +-- entry represents the value of a single MIB instance +-- during a specific sampling interval (or the rate of +-- change during the interval). +-- +-- A sample value is stored in two objects - an absolute value and +-- a status object. This allows numbers from -(2G-1) to +4G to be +-- stored. The status object also indicates whether a sample is +-- valid. This allows data collection to continue if periodic +-- retrieval of a particular instance fails for any reason. +-- +-- Row Creation Order Relationships +-- +-- The static nature of the usrHistoryObjectTable creates +-- some row creation/modification issues. The rows in this +-- table need to be set before the associated +-- usrHistoryControlEntry can be activated. +-- +-- Note that the usrHistoryObject entries associated with a +-- particular usrHistoryControlEntry are not required to +-- be active before the control entry is activated. However, +-- the usrHistory data entries associated with an inactive +-- usrHistoryObject entry will be inactive (i.e., +-- usrHistoryValStatus == valueNotAvailable). +-- + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1" + INDEX { usrHistoryControlIndex } + ::= { usrHistoryControlTable 1 } + + + + +UsrHistoryControlEntry ::= SEQUENCE { + usrHistoryControlIndex Integer32, + usrHistoryControlObjects Integer32, + usrHistoryControlBucketsRequested Integer32, + usrHistoryControlBucketsGranted Integer32, + usrHistoryControlInterval Integer32, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system." + ::= { usrHistoryControlEntry 1 } + +usrHistoryControlObjects OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)." + ::= { usrHistoryControlEntry 2 } + +usrHistoryControlBucketsRequested OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + + + + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow." + ::= { usrHistoryControlEntry 4 } + + + + +usrHistoryControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + DEFVAL { 1800 } + ::= { usrHistoryControlEntry 5 } + +usrHistoryControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted." + ::= { usrHistoryControlEntry 7 } + +-- Object table + +usrHistoryObjectTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3" + INDEX { usrHistoryControlIndex, usrHistoryObjectIndex } + ::= { usrHistoryObjectTable 1 } + +UsrHistoryObjectEntry ::= SEQUENCE { + usrHistoryObjectIndex Integer32, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically." + ::= { usrHistoryObjectEntry 1 } + + +usrHistoryObjectVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 2 } + +usrHistoryObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 3 } + +-- data table + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of user-defined history entries." + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryTable 1 } + +UsrHistoryEntry ::= SEQUENCE { + usrHistorySampleIndex Integer32, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge32, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken." + ::= { usrHistoryEntry 1 } + +usrHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryEntry 4 } + + +usrHistoryValStatus OBJECT-TYPE + SYNTAX INTEGER { + valueNotAvailable(1), + valuePositive(2), + valueNegative(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value." + ::= { usrHistoryEntry 5 } + +-- The Probe Configuration Group +-- +-- This group controls the configuration of various operating +-- parameters of the probe. + +ControlString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed." + SYNTAX OCTET STRING (SIZE (0..255)) + +probeCapabilities OBJECT-TYPE + SYNTAX BITS { + etherStats(0), + historyControl(1), + etherHistory(2), + alarm(3), + hosts(4), + hostTopN(5), + matrix(6), + filter(7), + capture(8), + event(9), + tokenRingMLStats(10), + tokenRingPStats(11), + tokenRingMLHistory(12), + tokenRingPHistory(13), + ringStation(14), + ringStationOrder(15), + ringStationConfig(16), + sourceRouting(17), + protocolDirectory(18), + protocolDistribution(19), + addressMapping(20), + nlHost(21), + nlMatrix(22), + alHost(23), + alMatrix(24), + usrHistory(25), + probeConfig(26) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 1 } + +probeSoftwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..15)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The software revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 2 } + +probeHardwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hardware revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 3 } + +probeDateTime OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8 | 11)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + + + + SYNTAX INTEGER { + running(1), + warmBoot(2), + coldBoot(3) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +-- The following download objects do not restrict an implementation +-- from implementing additional download mechanisms (controlled in an +-- implementation-specific manner). Further, in the case where the RMON +-- agent shares a processor with other types of systems, the +-- implementation is not required to download those non-RMON functions +-- with this mechanism. + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { + notDownloading(1), + downloadToPROM(2), + downloadToRAM(3) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { + downloadSuccess(1), + downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) + } + MAX-ACCESS read-only + + + + STATUS deprecated + DESCRIPTION + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface." + INDEX { ifIndex } + ::= { serialConfigTable 1 } + +SerialConfigEntry ::= SEQUENCE { + serialMode INTEGER, + serialProtocol INTEGER, + serialTimeout Integer32, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + + + + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + modem(2) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), + slip(2), + ppp(3) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap." + DEFVAL { 300 } + ::= { serialConfigEntry 3 } + +serialModemInitString OBJECT-TYPE + SYNTAX ControlString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS deprecated + + + + DESCRIPTION + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'." + ::= { serialConfigEntry 4 } + +serialModemHangUpString OBJECT-TYPE + SYNTAX ControlString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'." + ::= { serialConfigEntry 5 } + +serialModemConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'." + ::= { serialConfigEntry 6 } + +serialModemNoConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'." + ::= { serialConfigEntry 7 } + +serialDialoutTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface." + DEFVAL { 20 } + ::= { serialConfigEntry 8 } + +serialStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConfigEntry 9 } + + + +netConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface." + INDEX { ifIndex } + ::= { netConfigTable 1 } + +NetConfigEntry ::= SEQUENCE { + netConfigIPAddress IpAddress, + netConfigSubnetMask IpAddress, + netConfigStatus RowStatus +} + +netConfigIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + + + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { netConfigEntry 3 } + +netDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { probeConfig 12 } + +-- Trap Destination Table +-- +-- This table defines the destination addresses for traps generated +-- from the device. This table maps a community to one or more trap +-- destination entries. +-- +-- The same trap will be sent to all destinations specified in the +-- entries that have the same trapDestCommunity as the eventCommunity +-- (as defined by RMON MIB), as long as no access control mechanism +-- (e.g., VACM) prohibits sending to one or more of the destinations. +-- Information in this table will be stored in non-volatile memory. + + + +-- If the device has gone through a hard restart, this information +-- will be reset to its default state. + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex Integer32, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 2 } + +trapDestProtocol OBJECT-TYPE + SYNTAX INTEGER { + ip(1), + ipx(2) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 4 } + +trapDestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { trapDestEntry 6 } + +-- Serial Connection Table +-- +-- The device may communicate with a management station using +-- SLIP. In order for the device to send traps via SLIP, it must +-- be able to initiate a connection over the serial interface. The +-- serialConnectionTable stores the parameters for such connection +-- initiation. + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + + + + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex Integer32, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 2 } + + +serialConnectType OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + modem(2), + switch(3), + modemSwitch(4) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + + + + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + DEFVAL { direct } + ::= { serialConnectionEntry 3 } + +serialConnectDialString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 4 } + +serialConnectSwitchConnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 5 } + +serialConnectSwitchDisconnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + + + + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 6 } + +serialConnectSwitchResetSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 7 } + +serialConnectOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConnectionEntry 9 } + +-- +-- Extensions to the RMON 1 MIB for RMON 2 devices +-- +-- These extensions include the standard LastCreateTime Textual +-- Convention for all control tables, as well as an augmentation of +-- the filter entry that provides variable-length offsets into +-- packets. + + +-- Each of the following, except for filterDroppedFrames, is a +-- read-only object which, if implemented, automatically appears when +-- the RMON1 row it is associated with is created. + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter32, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { etherStats2Entry 1 } + +etherStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { etherStats2Entry 2 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter32 +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { historyControl2Entry 1 } + +hostControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter32, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hostControl2Entry 1 } + +hostControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { hostControl2Entry 2 } + +matrixControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter32, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { matrixControl2Entry 1 } + +matrixControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { matrixControl2Entry 2 } + +channel2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter32, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { channel2Entry 1 } + +channelCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { channel2Entry 2 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingMLStatsEntry } + + + + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter32, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingMLStats2Entry 1 } + +tokenRingMLStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingMLStats2Entry 2 } + +tokenRingPStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + + + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter32, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingPStats2Entry 1 } + +tokenRingPStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingPStats2Entry 2 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + + + + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter32, + ringStationControlCreateTime LastCreateTime +} + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { ringStationControl2Entry 1 } + +ringStationControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls." + ::= { ringStationControl2Entry 2 } + +sourceRoutingStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter32, + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { sourceRoutingStats2Entry 1 } + + + +sourceRoutingStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { sourceRoutingStats2Entry 2 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex Integer32, + filterProtocolDirLocalIndex Integer32 +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet." + DEFVAL { 0 } + ::= { filter2Entry 1 } + +filterProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry." + DEFVAL { 0 } + ::= { filter2Entry 2 } + +-- Conformance Macros + +rmon2MIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 1 } +rmon2MIBGroups OBJECT IDENTIFIER ::= { rmonConformance 2 } + + +rmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB" + MODULE -- this module + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2) + } + DESCRIPTION + + + + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements." + MODULE -- this module + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + alHostGroup, + alMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2) + } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { + alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4) + } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + ::= { rmon2MIBCompliances 2 } + + +protocolDirectoryGroup OBJECT-GROUP + OBJECTS { protocolDirLastChange, + protocolDirLocalIndex, protocolDirDescr, + protocolDirType, protocolDirAddressMapConfig, + protocolDirHostConfig, protocolDirMatrixConfig, + protocolDirOwner, protocolDirStatus } + STATUS current + DESCRIPTION + "Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list." + ::= { rmon2MIBGroups 1 } + +protocolDistributionGroup OBJECT-GROUP + OBJECTS { protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, protocolDistControlStatus, + protocolDistStatsPkts, protocolDistStatsOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT-GROUP + OBJECTS { addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, + addressMapControlOwner, addressMapControlStatus, + addressMapPhysicalAddress, + addressMapLastChange } + STATUS current + + + + DESCRIPTION + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on." + ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT-GROUP + OBJECTS { hlHostControlDataSource, + hlHostControlNlDroppedFrames, hlHostControlNlInserts, + hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, hlHostControlOwner, + hlHostControlStatus, nlHostInPkts, nlHostOutPkts, + nlHostInOctets, nlHostOutOctets, + nlHostOutMacNonUnicastPkts, nlHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not + required to fully implement this group." + ::= { rmon2MIBGroups 4 } + +nlMatrixGroup OBJECT-GROUP + OBJECTS { hlMatrixControlDataSource, + hlMatrixControlNlDroppedFrames, + hlMatrixControlNlInserts, hlMatrixControlNlDeletes, + hlMatrixControlNlMaxDesiredEntries, + hlMatrixControlAlDroppedFrames, + hlMatrixControlAlInserts, hlMatrixControlAlDeletes, + hlMatrixControlAlMaxDesiredEntries, + hlMatrixControlOwner, hlMatrixControlStatus, + nlMatrixSDPkts, nlMatrixSDOctets, nlMatrixSDCreateTime, + nlMatrixDSPkts, nlMatrixDSOctets, nlMatrixDSCreateTime, + nlMatrixTopNControlMatrixIndex, + nlMatrixTopNControlRateBase, + nlMatrixTopNControlTimeRemaining, + nlMatrixTopNControlGeneratedReports, + nlMatrixTopNControlDuration, + nlMatrixTopNControlRequestedSize, + nlMatrixTopNControlGrantedSize, + nlMatrixTopNControlStartTime, + nlMatrixTopNControlOwner, nlMatrixTopNControlStatus, + nlMatrixTopNProtocolDirLocalIndex, + nlMatrixTopNSourceAddress, nlMatrixTopNDestAddress, + nlMatrixTopNPktRate, nlMatrixTopNReversePktRate, + + + + nlMatrixTopNOctetRate, nlMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while + the hlMatrixControlTable also has objects that control + optional alMatrixTables, implementation of the + alMatrixTables is not required to fully implement this + group." + ::= { rmon2MIBGroups 5 } + +alHostGroup OBJECT-GROUP + OBJECTS { alHostInPkts, alHostOutPkts, + alHostInOctets, alHostOutOctets, alHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network-Layer + Host Group." + ::= { rmon2MIBGroups 6 } + +alMatrixGroup OBJECT-GROUP + OBJECTS { alMatrixSDPkts, alMatrixSDOctets, alMatrixSDCreateTime, + alMatrixDSPkts, alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, + alMatrixTopNControlOwner, alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, alMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation + of the Network-Layer Matrix Group." + ::= { rmon2MIBGroups 7 } + +usrHistoryGroup OBJECT-GROUP + + + + OBJECTS { usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, + usrHistoryControlOwner, usrHistoryControlStatus, + usrHistoryObjectVariable, usrHistoryObjectSampleType, + usrHistoryIntervalStart, usrHistoryIntervalEnd, + usrHistoryAbsValue, usrHistoryValStatus } + STATUS current + DESCRIPTION + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe." + ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT-GROUP + OBJECTS { probeCapabilities, + probeSoftwareRev, probeHardwareRev, probeDateTime } + STATUS current + DESCRIPTION + "This group describes various operating parameters of the + probe and controls the local time of the probe." + ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT-GROUP + OBJECTS { probeResetControl, probeDownloadFile, + probeDownloadTFTPServer, probeDownloadAction, + probeDownloadStatus, + serialMode, serialProtocol, serialTimeout, + serialModemInitString, serialModemHangUpString, + serialModemConnectResp, serialModemNoConnectResp, + serialDialoutTimeout, serialStatus, + netConfigIPAddress, netConfigSubnetMask, + netConfigStatus, netDefaultGateway, + trapDestCommunity, trapDestProtocol, trapDestAddress, + trapDestOwner, trapDestStatus, + serialConnectDestIpAddress, serialConnectType, + serialConnectDialString, serialConnectSwitchConnectSeq, + serialConnectSwitchDisconnectSeq, + serialConnectSwitchResetSeq, + serialConnectOwner, serialConnectStatus } + STATUS deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 10 } + + + + +rmon1EnhancementGroup OBJECT-GROUP + OBJECTS { historyControlDroppedFrames, hostControlDroppedFrames, + hostControlCreateTime, matrixControlDroppedFrames, + matrixControlCreateTime, channelDroppedFrames, + channelCreateTime, filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT-GROUP + OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT-GROUP + OBJECTS { tokenRingMLStatsDroppedFrames, + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime } + STATUS deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } +END diff --git a/mibs/ietf/ROHC-MIB b/mibs/ietf/ROHC-MIB new file mode 100644 index 0000000..1ec8213 --- /dev/null +++ b/mibs/ietf/ROHC-MIB @@ -0,0 +1,1197 @@ +ROHC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION, TruthValue, + TimeInterval, DateAndTime + FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + + ifIndex + FROM IF-MIB; -- [RFC2863] + +rohcMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + + + + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of basic objects for + monitoring and configuring robust header compression. + The module covers information about running instances + of ROHC (compressors or decompressors) at IP interfaces. + + Information about compressor contexts and decompressor + contexts has different structure for different profiles. + Therefore it is not provided by this MIB module, but by + individual modules for different profiles. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 112 } + +RohcChannelIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number identifying a channel. + The value of 0 must not be used as identifier + of an existing channel." + SYNTAX Unsigned32 (1..4294967295) + +RohcChannelIdentifierOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number identifying a channel. + The value of 0 is indicates that + no channel is identified." + SYNTAX Unsigned32 (0..4294967295) + +RohcCompressionRatio ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number indicating a compression ratio over + + + + a set of bytes. The value is defined as + 1000 * bytes(compressed) / bytes(original) + rounded to the next integer value. + + Note that compressed sets of bytes can be larger + than the corresponding uncompressed ones. + Therefore, the number can be greater than 1000." + SYNTAX Unsigned32 + +-- +-- The groups defined within this MIB module: +-- + +rohcObjects OBJECT IDENTIFIER ::= { rohcMIB 1 } +rohcConformance OBJECT IDENTIFIER ::= { rohcMIB 2 } + +-- +-- The ROHC Instance group lists properties of ROHC +-- instances in the rohcInstanceTable, about the channels used +-- by the instances in the rohcChanneltable and about the profiles +-- available at the instances in the rohcProfileTable. +-- + +rohcInstanceObjects OBJECT IDENTIFIER ::= { rohcObjects 1 } + +-- +-- Channel Table +-- +-- Listing all channels used for ROHC data channel +-- and/or as feedback channel. +-- + +rohcChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes all ROHC channels + per interface." + ::= { rohcInstanceObjects 1 } + +rohcChannelEntry OBJECT-TYPE + SYNTAX RohcChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + + + + this script table. + + Note, that the rohcChannelID identifies the channel + uniquely. The ifIndex is part of the index of this table + just in order to allow addressing channels per interface." + INDEX { ifIndex, rohcChannelID } + ::= { rohcChannelTable 1 } + +RohcChannelEntry ::= SEQUENCE { + rohcChannelID RohcChannelIdentifier, + rohcChannelType INTEGER, + rohcChannelFeedbackFor RohcChannelIdentifierOrZero, + rohcChannelDescr SnmpAdminString, + rohcChannelStatus INTEGER +} + +rohcChannelID OBJECT-TYPE + SYNTAX RohcChannelIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this channel. The value is REQUIRED to be unique + per ROHC MIB implementation independent of the associated + interface. + + The value is REQUIRED to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. It is RECOMMENDED that the + value persist across such re-initializations." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcChannelEntry 2 } + +rohcChannelType OBJECT-TYPE + SYNTAX INTEGER { + notInUse(1), + rohc(2), + dedicatedFeedback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of usage of the channel. A channel might be currently + not in use for ROHC or feedback, it might be in use as + a ROHC channel carrying packets and optional piggy-backed + feedback, or it might be used as a dedicated feedback + channel exclusively carrying feedback." + + + + ::= { rohcChannelEntry 3 } + +rohcChannelFeedbackFor OBJECT-TYPE + SYNTAX RohcChannelIdentifierOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of another channel of this interface for which + the channel serves as feedback channel. + + If no feedback information is transferred on this channel, + then the value of this ID is 0. If the channel type is set + to notInUse(1), then the value of this object must be 0. + If the channel type is rohc(2) and the value of this object + is a valid channel ID, then feedback information is + piggy-backed on the ROHC channel. If the channel type is + dedicatedFeedback(3), then feedback is transferred on this + channel and the value of this object MUST be different from + 0 and MUST identify an existing ROHC channel." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcChannelEntry 4 } + +rohcChannelDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the channel." + ::= { rohcChannelEntry 5 } + +rohcChannelStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the channel." + ::= { rohcChannelEntry 6 } + +-- +-- Instances of ROHC +-- +-- This table lists properties of running instances of ROHC +-- compressors and decompressors at the managed node. +-- + + + + +rohcInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists properties of running instances + of robust header compressors and decompressors + at IP interfaces. It is indexed by interface number, + the type of instance (compressor or decompressor), + and the ID of the channel used by the instance as + ROHC channel. + + Note that the rohcChannelID uniquely identifies an + instance. The ifIndex and rohcInstanceType are part + of the index, because it simplifies accessing instances + per interface and for addressing either compressors or + decompressors only." + ::= { rohcInstanceObjects 2 } + +rohcInstanceEntry OBJECT-TYPE + SYNTAX RohcInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular instance + of a robust header compressor or decompressor." + INDEX { ifIndex, rohcInstanceType, rohcChannelID } + ::= { rohcInstanceTable 1 } + +RohcInstanceEntry ::= SEQUENCE { + rohcInstanceType INTEGER, + rohcInstanceFBChannelID RohcChannelIdentifierOrZero, + rohcInstanceVendor OBJECT IDENTIFIER, + rohcInstanceVersion SnmpAdminString, + rohcInstanceDescr SnmpAdminString, + rohcInstanceClockRes Unsigned32, + rohcInstanceMaxCID Unsigned32, + rohcInstanceLargeCIDs TruthValue, + rohcInstanceMRRU Unsigned32, + rohcInstanceContextStorageTime TimeInterval, + rohcInstanceStatus INTEGER, + rohcInstanceContextsTotal Counter32, + rohcInstanceContextsCurrent Unsigned32, + rohcInstancePackets Counter32, + rohcInstanceIRs Counter32, + rohcInstanceIRDYNs Counter32, + rohcInstanceFeedbacks Counter32, + + + + rohcInstanceCompressionRatio RohcCompressionRatio +} + +rohcInstanceType OBJECT-TYPE + SYNTAX INTEGER { + compressor(1), + decompressor(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Type of the instance of ROHC. It is either a + compressor instance or a decompressor instance." + ::= { rohcInstanceEntry 2 } + +rohcInstanceFBChannelID OBJECT-TYPE + SYNTAX RohcChannelIdentifierOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifier of the channel used for feedback. + If no feedback channel is used, the value of + this object is 0 ." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 4 } + +rohcInstanceVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier that identifies the vendor who + provides the implementation of robust header description. + This object identifier SHALL point to the object identifier + directly below the enterprise object identifier + {1 3 6 1 4 1} allocated for the vendor. The value must be + the object identifier {0 0} if the vendor is not known." + ::= { rohcInstanceEntry 5 } + +rohcInstanceVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the implementation of robust header + compression. The zero-length string shall be used if the + implementation does not have a version number. + + + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { rohcInstanceEntry 6 } + +rohcInstanceDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the implementation." + ::= { rohcInstanceEntry 7 } + +rohcInstanceClockRes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the system clock resolution in + units of milliseconds. A zero (0) value means that there + is no clock available." + ::= { rohcInstanceEntry 8 } + +rohcInstanceMaxCID OBJECT-TYPE + SYNTAX Unsigned32 (1..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest context ID number to be used by the + compressor. Note that this parameter is not coupled to, + but in effect further constrained by, + rohcChannelLargeCIDs." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 9 } + +rohcInstanceLargeCIDs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this boolean object returns false if + the short CID representation (0 bytes or 1 prefix byte, + covering CID 0 to 15) is used; it returns true, if the + embedded CID representation (1 or 2 embedded CID bytes + covering CID 0 to 16383) is used." + + + + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 10 } + +rohcInstanceMRRU OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum reconstructed reception unit. This is the + size of the largest reconstructed unit in octets that + the decompressor is expected to reassemble from + segments (see RFC 3095, Section 5.2.5). Note that this + size includes the CRC. If MRRU is negotiated to be 0, + no segment headers are allowed on the channel." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 11 } + +rohcInstanceContextStorageTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the default maximum amount of time + information on a context belonging to this instance is kept + as entry in the rohcContextTable after the context is + expired or terminated. The value of this object is used + to initialize rohcContexStorageTime object when a new + context is created. + Changing the value of an rohcInstanceContextStorageTime + instance does not affect any entry of the rohcContextTable + created previously. + ROHC-MIB implementations SHOULD store the set value of this + object persistently." + DEFVAL { 360000 } + ::= { rohcInstanceEntry 12 } + +rohcInstanceStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the instance of ROHC." + + + + ::= { rohcInstanceEntry 13 } + +rohcInstanceContextsTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counter of all contexts created by this instance. + + 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." + ::= { rohcInstanceEntry 14 } + +rohcInstanceContextsCurrent OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of currently active contexts created by this + instance." + ::= { rohcInstanceEntry 15 } + +rohcInstancePackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counter of all packets passing this instance. + + 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." + ::= { rohcInstanceEntry 16 } + +rohcInstanceIRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR packets that are either sent + or received by this instance. + + 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." + REFERENCE + "RFC 3095, Section 5.7.7.1" + ::= { rohcInstanceEntry 17 } + +rohcInstanceIRDYNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR-DYN packets that are either sent + or received by this instance. + + 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." + REFERENCE + "RFC 3095, Section 5.7.7.2" + ::= { rohcInstanceEntry 18 } + +rohcInstanceFeedbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all feedbacks that are either sent + or received by this instance. + + 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." + ::= { rohcInstanceEntry 19 } + +rohcInstanceCompressionRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packets on the channel served by this instance. The + compression is computed over all bytes of the IP packets + including the IP header but excluding all lower layer + headers." + ::= { rohcInstanceEntry 20 } + +-- + + + +-- Profile Table +-- + +rohcProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists a set of profiles supported by the + instance." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceObjects 3 } + +rohcProfileEntry OBJECT-TYPE + SYNTAX RohcProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular profile supported by + the instance. It is indexed by the rohcChannelID + identifying the instance and by the rohcProfile." + INDEX { rohcChannelID, rohcProfile } + ::= { rohcProfileTable 1 } + +RohcProfileEntry ::= SEQUENCE { + rohcProfile Unsigned32, + rohcProfileVendor OBJECT IDENTIFIER, + rohcProfileVersion SnmpAdminString, + rohcProfileDescr SnmpAdminString, + rohcProfileNegotiated TruthValue +} + +rohcProfile OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifier of a profile supported. For a listing of + possible profile values, see the IANA registry for + 'RObust Header Compression (ROHC) Profile Identifiers' + at http://www.iana.org/assignments/rohc-pro-ids" + ::= { rohcProfileEntry 2 } + +rohcProfileVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "An object identifier that identifies the vendor who + provides the implementation of robust header description. + This object identifier SHALL point to the object identifier + directly below the enterprise object identifier + {1 3 6 1 4 1} allocated for the vendor. The value must be + the object identifier {0 0} if the vendor is not known." + ::= { rohcProfileEntry 3 } + +rohcProfileVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the implementation of robust header + compression. The zero-length string shall be used if the + implementation does not have a version number. + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { rohcProfileEntry 4 } + +rohcProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the implementation." + ::= { rohcProfileEntry 5 } + +rohcProfileNegotiated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this boolean object returns true + if the profile has been negotiated to be used at + the instance, i.e., is supported also be the + corresponding compressor/decompressor." + ::= { rohcProfileEntry 6 } + +-- +-- Context Table +-- + +rohcContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcContextEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes all compressor contexts + per instance." + ::= { rohcObjects 2 } + +rohcContextEntry OBJECT-TYPE + SYNTAX RohcContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular compressor context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcContextTable 1 } + +RohcContextEntry ::= SEQUENCE { + rohcContextCID Unsigned32, + rohcContextCIDState INTEGER, + rohcContextProfile Unsigned32, + rohcContextDecompressorDepth Unsigned32, + rohcContextStorageTime TimeInterval, + rohcContextActivationTime DateAndTime, + rohcContextDeactivationTime DateAndTime, + rohcContextPackets Counter32, + rohcContextIRs Counter32, + rohcContextIRDYNs Counter32, + rohcContextFeedbacks Counter32, + rohcContextDecompressorFailures Counter32, + rohcContextDecompressorRepairs Counter32, + rohcContextAllPacketsRatio RohcCompressionRatio, + rohcContextAllHeadersRatio RohcCompressionRatio, + rohcContextAllPacketsMeanSize Unsigned32, + rohcContextAllHeadersMeanSize Unsigned32, + rohcContextLastPacketsRatio RohcCompressionRatio, + rohcContextLastHeadersRatio RohcCompressionRatio, + rohcContextLastPacketsMeanSize Unsigned32, + rohcContextLastHeadersMeanSize Unsigned32 +} + +rohcContextCID OBJECT-TYPE + SYNTAX Unsigned32 (0..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The context identifier (CID) of this context." + REFERENCE + "RFC 3095, Sections 5.1.1 and 5.1.3" + ::= { rohcContextEntry 2 } + +rohcContextCIDState OBJECT-TYPE + SYNTAX INTEGER { + unused(1), + active(2), + expired(3), + terminated(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the CID. When a CID is assigned to a context, + its state changes from `unused' to `active'. The active + context may stop operation due to some explicit + signalling or after observing no packet for some specified + time. In the first case then the CID state changes to + `terminated', in the latter case it changes to `expired'. + If the CID is re-used again for another context, the + state changes back to `active'." + ::= { rohcContextEntry 3 } + +rohcContextProfile OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifier of the profile for this context. + The profile is identified by its index in the + rohcProfileTable for this instance. There MUST exist a + corresponding entry in the rohcProfileTable using the + value of rohcContextProfile as second part of the index + (and using the same rohcChannelID as first part of the + index)." + ::= { rohcContextEntry 4 } + +rohcContextDecompressorDepth OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether reverse decompression, for + example as described in RFC 3095, Section 6.1, is used + on this channel or not, and if used, to what extent. + + + + + Its value is only valid for decompressor contexts, i.e., + if rohcInstanceType has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), the value of this object is irrelevant + and MUST be set to zero (0). + + The value of the reverse decompression depth indicates + the maximum number of packets that are buffered, and thus + possibly be reverse decompressed by the decompressor. + A zero (0) value means that reverse decompression is not + used." + ::= { rohcContextEntry 5 } + +rohcContextStorageTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object specifies how long this row + can exist in the rohcContextTable after the + rohcContextCIDState switched to expired(3) or + terminated(4). This object returns the remaining time + that the row may exist before it is aged out. The object + is initialized with the value of the associated + rohcContextStorageTime object. After expiration or + termination of the context, the value of this object ticks + backwards. The entry in the rohcContextTable is destroyed + when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + rochContextCIDState has the value expired(3) or + terminated(4). + + Note that there is no guarantee that the row is stored as + long as this object indicates. In case of limited CID + space, the instance may re-use a CID before the storage + time of the corresponding row in rohcContextTable reaches + the value of 0. In this case the information stored in this + row is not anymore available." + ::= { rohcContextEntry 6 } + +rohcContextActivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The date and time when the context started to be able to + compress packets or decompress packets, respectively. + The value '0000000000000000'H is returned if the context + has not been activated yet." + DEFVAL { '0000000000000000'H } + ::= { rohcContextEntry 7 } + +rohcContextDeactivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the context stopped being able to + compress packets or decompress packets, respectively, + because it expired or was terminated for other reasons. + The value '0000000000000000'H is returned if the context + has not been deactivated yet." + DEFVAL { '0000000000000000'H } + ::= { rohcContextEntry 8 } + +rohcContextPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all packets passing this context. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 9 } + +rohcContextIRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR packets sent or received, + respectively, by this context. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + REFERENCE + "RFC 3095, Section 5.7.7.1" + ::= { rohcContextEntry 10 } + +rohcContextIRDYNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR-DYN packets sent or received, + respectively, by this context. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + REFERENCE + "RFC 3095, Section 5.7.7.2" + ::= { rohcContextEntry 11 } + +rohcContextFeedbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all feedbacks sent or received, + respectively, by this context. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 12 } + +rohcContextDecompressorFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of all decompressor failures so far in this + context. The number is only valid for decompressor + contexts, i.e., if rohcInstanceType has the value + decompressor(2). + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 13 } + +rohcContextDecompressorRepairs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all context repairs so far in this + context. The number is only valid for decompressor + contexts, i.e., if rohcInstanceType has the value + decompressor(2). + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 14 } + +rohcContextAllPacketsRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packets passing this context. The compression is computed + over all bytes of the IP packets including the IP header + but excluding all lower layer headers." + ::= { rohcContextEntry 15 } + +rohcContextAllHeadersRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packet headers passing this context. The compression is + computed over all bytes of all headers that are subject to + compression for the used profile." + ::= { rohcContextEntry 16 } + +rohcContextAllPacketsMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet size + of all packets passing this context. The packet size + includes the IP header and payload but excludes all lower + layer headers. The mean value is given in byte rounded + to the next integer value." + ::= { rohcContextEntry 17 } + +rohcContextAllHeadersMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet header size + of all packets passing this context. The packet header size + is the sum of the size of all headers of a packet that are + subject to compression for the used profile. The mean value + is given in byte rounded to the next integer value." + ::= { rohcContextEntry 18 } + +rohcContextLastPacketsRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio + concerning the last 16 packets passing this context + or concerning all packets passing this context + if they are less than 16, so far. The compression is + computed over all bytes of the IP packets including the IP + header but excluding all lower layer headers." + ::= { rohcContextEntry 19 } + +rohcContextLastHeadersRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the compression ratio concerning the + headers of the last 16 packets passing this context or + concerning the headers of all packets passing this context + if they are less than 16, so far. The compression is + computed over all bytes of all headers that are subject to + compression for the used profile." + ::= { rohcContextEntry 20 } + +rohcContextLastPacketsMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet size + concerning the last 16 packets passing this context or + concerning all packets passing this context if they are + less than 16, so far. The packet size includes the IP + header and payload but excludes all lower layer headers. + The mean value is given in byte rounded to the next + integer value." + ::= { rohcContextEntry 21 } + +rohcContextLastHeadersMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet header size + concerning the last 16 packets passing this context or + concerning all packets passing this context if they are + less than 16, so far. The packet header size is the sum of + the size of all headers of a packet that are subject to + compression for the used profile. The mean value is given + in byte rounded to the next integer value." + ::= { rohcContextEntry 22 } + +-- +-- conformance information +-- + +rohcCompliances OBJECT IDENTIFIER ::= { rohcConformance 1 } +rohcGroups OBJECT IDENTIFIER ::= { rohcConformance 2 } + +-- +-- compliance statements +-- + + + + + +rohcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-MIB. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcInstanceGroup, rohcContextGroup + } + GROUP rohcStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcStatisticsGroup." + GROUP rohcTimerGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcTimerGroup." + OBJECT rohcInstanceContextStorageTime + MIN-ACCESS read-only + DESCRIPTION + "A compliant implementation does not have to support changing + the value of object rohcInstanceContextStorageTime." + OBJECT rohcContextStorageTime + MIN-ACCESS read-only + DESCRIPTION + "A compliant implementation does not have to support changing + the value of object rohcContextStorageTime." + GROUP rohcContextStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcContextStatisticsGroup." + ::= { rohcCompliances 1 } + +rohcInstanceGroup OBJECT-GROUP + OBJECTS { + rohcChannelType, + rohcChannelFeedbackFor, + rohcChannelDescr, + rohcChannelStatus, + rohcInstanceFBChannelID, + rohcInstanceVendor, + + + + rohcInstanceVersion, + rohcInstanceDescr, + rohcInstanceClockRes, + rohcInstanceMaxCID, + rohcInstanceLargeCIDs, + rohcInstanceMRRU, + rohcInstanceStatus, + rohcProfileVendor, + rohcProfileVersion, + rohcProfileDescr, + rohcProfileNegotiated + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC instances, used channels and available profiles." + ::= { rohcGroups 2 } + +rohcStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcInstanceContextsTotal, + rohcInstanceContextsCurrent, + rohcInstancePackets, + rohcInstanceIRs, + rohcInstanceIRDYNs, + rohcInstanceFeedbacks, + rohcInstanceCompressionRatio + } + STATUS current + DESCRIPTION + "A collection of objects providing ROHC statistics." + ::= { rohcGroups 4 } + +rohcContextGroup OBJECT-GROUP + OBJECTS { + rohcContextCIDState, + rohcContextProfile, + rohcContextDecompressorDepth + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 5 } + +rohcTimerGroup OBJECT-GROUP + OBJECTS { + rohcInstanceContextStorageTime, + + + + rohcContextStorageTime, + rohcContextActivationTime, + rohcContextDeactivationTime + + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical information + about ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 6 } + +rohcContextStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcContextPackets, + rohcContextIRs, + rohcContextIRDYNs, + rohcContextFeedbacks, + rohcContextDecompressorFailures, + rohcContextDecompressorRepairs, + rohcContextAllPacketsRatio, + rohcContextAllHeadersRatio, + rohcContextAllPacketsMeanSize, + rohcContextAllHeadersMeanSize, + rohcContextLastPacketsRatio, + rohcContextLastHeadersRatio, + rohcContextLastPacketsMeanSize, + rohcContextLastHeadersMeanSize + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical information + about ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 7 } + +END diff --git a/mibs/ietf/ROHC-RTP-MIB b/mibs/ietf/ROHC-RTP-MIB new file mode 100644 index 0000000..9c7a0a0 --- /dev/null +++ b/mibs/ietf/ROHC-RTP-MIB @@ -0,0 +1,655 @@ +ROHC-RTP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + + TruthValue + FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + rohcChannelID, rohcContextCID + FROM ROHC-MIB; -- [RFC3816] + +rohcRtpMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of objects for monitoring + and configuring RObust Header Compression (ROHC). + The objects are specific to ROHC RTP (profile 0x0001), + ROHC UDP (profile 0x0002), and ROHC ESP (profile 0x0003) + defined in RFC 3095 and for the ROHC LLA profile (profile + 0x0005) defined in RFC 3242. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 114 } + + + +-- +-- The groups defined within this MIB module: +-- + +rohcRtpObjects OBJECT IDENTIFIER ::= { rohcRtpMIB 1 } +rohcRtpConformance OBJECT IDENTIFIER ::= { rohcRtpMIB 2 } + +-- +-- Context Table +-- +-- The rohcRtpContextTable lists all contexts per interface +-- and instance. It extends the rohcContextTable. +-- + +rohcRtpContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcRtpContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes RTP profile specific + properties of compressor contexts and decompressor + contexts. It extends the rohcContextTable of the + ROHC-MIB module." + ::= { rohcRtpObjects 1 } + +rohcRtpContextEntry OBJECT-TYPE + SYNTAX RohcRtpContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcRtpContextTable 1 } + +RohcRtpContextEntry ::= SEQUENCE { + rohcRtpContextState INTEGER, + rohcRtpContextMode INTEGER, + rohcRtpContextAlwaysPad TruthValue, + rohcRtpContextLargePktsAllowed TruthValue, + rohcRtpContextVerifyPeriod Unsigned32, + rohcRtpContextSizesAllowed Unsigned32, + rohcRtpContextSizesUsed Unsigned32, + rohcRtpContextACKs Counter32, + rohcRtpContextNACKs Counter32, + rohcRtpContextSNACKs Counter32, + + + rohcRtpContextNHPs Counter32, + rohcRtpContextCSPs Counter32, + rohcRtpContextCCPs Counter32, + rohcRtpContextPktsLostPhysical Counter32, + rohcRtpContextPktsLostPreLink Counter32 +} + +rohcRtpContextState OBJECT-TYPE + SYNTAX INTEGER { + initAndRefresh(1), + firstOrder(2), + secondOrder(3), + noContext(4), + staticContext(5), + fullContext(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the context as defined in RFC 3095. States + initAndRefresh(1), firstOrder(2), and secondOrder(3) + are states of compressor contexts, states noContext(4), + staticContext(5) and fullContext(6) are states of + decompressor contexts." + REFERENCE + "RFC 3095" + ::= { rohcRtpContextEntry 3 } + +rohcRtpContextMode OBJECT-TYPE + SYNTAX INTEGER { + unidirectional(1), + optimistic(2), + reliable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mode of the context." + REFERENCE + "RFC 3095, Section 4.4" + ::= { rohcRtpContextEntry 4 } + +rohcRtpContextAlwaysPad OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Boolean, only applicable to compressor contexts using the + + + LLA profile. If its value is true, the compressor must + pad every RHP packet with a minimum of one octet ROHC + padding. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { false } + ::= { rohcRtpContextEntry 5 } + +rohcRtpContextLargePktsAllowed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Boolean, only applicable to compressor contexts using the + LLA profile. It specifies how to handle packets that do + not fit any of the preferred packet sizes specified. If + its value is true, the compressor must deliver the larger + packet as-is and must not use segmentation. If it is set + to false, the ROHC segmentation scheme must be used to + split the packet into two or more segments, and each + segment must further be padded to fit one of the preferred + packet sizes. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { true } + ::= { rohcRtpContextEntry 6 } + +rohcRtpContextVerifyPeriod OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the LLA profile. It specifies the minimum frequency + with which a packet validating the context must be sent. + This tells the compressor that a packet containing a CRC + + + field must be sent at least once every N packets, where N + is the value of the object. A value of 0 indicates that + periodical verifications are disabled. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { 0 } + ::= { rohcRtpContextEntry 7 } + +rohcRtpContextSizesAllowed OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is only valid for decompressor + contexts, i.e., if rohcInstanceType of the corresponding + rohcContextEntry has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), this object MUST NOT be instantiated. + + This object contains the number of different packet sizes + that may be used in the context." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpContextEntry 8 } + +rohcRtpContextSizesUsed OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is only valid for decompressor + contexts, i.e., if rohcInstanceType of the corresponding + rohcContextEntry has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), this object MUST NOT be instantiated. + + This object contains the number of different packet sizes + that are used in the context." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpContextEntry 9 } + + + +rohcRtpContextACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all positive feedbacks (ACK) sent or + received in this context, respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 10 } + +rohcRtpContextNACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all dynamic negative feedbacks (ACK) sent + or received in this context, respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 11 } + +rohcRtpContextSNACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all static negative feedbacks (ACK) sent + or received in this context, respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 12 } + +rohcRtpContextNHPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all no-header + packets (NHP) sent or received in this context, + respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.1." + ::= { rohcRtpContextEntry 13 } + +rohcRtpContextCSPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all context + synchronization packets (CSP) sent or received in this + context, respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.2." + ::= { rohcRtpContextEntry 14 } + +rohcRtpContextCCPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all context check + packets (CCP) sent or received in this context, + respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.3." + ::= { rohcRtpContextEntry 15 } + +rohcRtpContextPktsLostPhysical OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to decompressor contexts + + + using the LLA profile. It contains the number of physical + packet losses on the link between compressor and + decompressor, that have been indicated to the decompressor. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.2." + ::= { rohcRtpContextEntry 16 } + +rohcRtpContextPktsLostPreLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to decompressor contexts + using the LLA profile. It contains the number of pre-link + packet losses on the link between compressor and + decompressor, that have been indicated to the decompressor. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.2." + ::= { rohcRtpContextEntry 17 } + + + +-- +-- Packet Sizes Table +-- +-- The rohcPacketSizeTable lists allowed, preferred, and used +-- packet sizes per compressor context. + +rohcRtpPacketSizeTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcRtpPacketSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all allowed, preferred, and used packet + sizes per compressor context and channel. + + Note, that the sizes table represents implementation + parameters that are suggested by RFC 3095 and/or RFC 3242, + but that are not mandatory." + ::= { rohcRtpObjects 2 } + +rohcRtpPacketSizeEntry OBJECT-TYPE + SYNTAX RohcRtpPacketSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry of a particular packet size." + INDEX { + rohcChannelID, + rohcContextCID, + rohcRtpPacketSize + } + ::= { rohcRtpPacketSizeTable 1 } + +RohcRtpPacketSizeEntry ::= SEQUENCE { + rohcRtpPacketSize Unsigned32, + rohcRtpPacketSizePreferred TruthValue, + rohcRtpPacketSizeUsed TruthValue, + rohcRtpPacketSizeRestrictedType INTEGER +} + +rohcRtpPacketSize OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A packet size used as index." + ::= { rohcRtpPacketSizeEntry 3 } + +rohcRtpPacketSizePreferred OBJECT-TYPE + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the LLA profile. When retrieved, it will have + the value true(1) if the packet size is preferred. + Otherwise, its value will be false(2). + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + ::= { rohcRtpPacketSizeEntry 4 } + +rohcRtpPacketSizeUsed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the UDP, RTP, or ESP profile. When retrieved, + it will have the value true(1) if the packet size is + used. Otherwise, its value will be false(2). + + The value of this object is only valid for UDP, RTP, + and ESP profiles, i.e., if the corresponding rohcProfile + has a value of either 0x0001, 0x0002 or 0x0003. If + the corresponding rohcProfile has a value other than + 0x0001, 0x0002 or 0x0003, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpPacketSizeEntry 5 } + +rohcRtpPacketSizeRestrictedType OBJECT-TYPE + SYNTAX INTEGER { + nhpOnly(1), + rhpOnly(2), + noRestrictions(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to preferred packet + + + sizes of compressor contexts using the LLA profile. + When retrieved, it will indicate whether the packet + size is preferred for NHP only, for RHP only, or + for both of them. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + ::= { rohcRtpPacketSizeEntry 6 } +-- +-- conformance information +-- + +rohcRtpCompliances OBJECT IDENTIFIER ::= { rohcRtpConformance 1 } +rohcRtpGroups OBJECT IDENTIFIER ::= { rohcRtpConformance 2 } + +-- +-- compliance statements +-- + +rohcRtpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-RTP-MIB. + + Note that compliance with this compliance + statement requires compliance with the + rohcCompliance MODULE-COMPLIANCE statement of the + ROHC-MIB and with the ifCompliance3 MODULE-COMPLIANCE + statement of the IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcRtpContextGroup + } + GROUP rohcRtpPacketSizesGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcRtpPacketSizesGroup." + GROUP rohcRtpStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcRtpStatisticsGroup." + ::= { rohcRtpCompliances 1 } + + +rohcRtpContextGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextState, + rohcRtpContextMode, + rohcRtpContextAlwaysPad, + rohcRtpContextLargePktsAllowed, + rohcRtpContextVerifyPeriod + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC RTP compressors and decompressors." + ::= { rohcRtpGroups 1 } + +rohcRtpPacketSizesGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextSizesAllowed, + rohcRtpContextSizesUsed, + rohcRtpPacketSizePreferred, + rohcRtpPacketSizeUsed, + rohcRtpPacketSizeRestrictedType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + allowed and used packet sizes at a ROHC RTP compressor." + ::= { rohcRtpGroups 2 } + +rohcRtpStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextACKs, + rohcRtpContextNACKs, + rohcRtpContextSNACKs, + rohcRtpContextNHPs, + rohcRtpContextCSPs, + rohcRtpContextCCPs, + rohcRtpContextPktsLostPhysical, + rohcRtpContextPktsLostPreLink + } + STATUS current + DESCRIPTION + "A collection of objects providing ROHC compressor and + decompressor statistics." + ::= { rohcRtpGroups 3 } + +END diff --git a/mibs/ietf/ROHC-UNCOMPRESSED-MIB b/mibs/ietf/ROHC-UNCOMPRESSED-MIB new file mode 100644 index 0000000..ccdca76 --- /dev/null +++ b/mibs/ietf/ROHC-UNCOMPRESSED-MIB @@ -0,0 +1,206 @@ +ROHC-UNCOMPRESSED-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + rohcChannelID, rohcContextCID + FROM ROHC-MIB; + + + +rohcUncmprMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of objects for monitoring + and configuring RObust Header Compression (ROHC). + The objects are specific to ROHC uncompressed + (profile 0x0000). + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 113 } + +-- +-- The groups defined within this MIB module: +-- + +rohcUncmprObjects OBJECT IDENTIFIER ::= { rohcUncmprMIB 1 } +rohcUncmprConformance OBJECT IDENTIFIER ::= { rohcUncmprMIB 2 } + +-- +-- Context Table +-- +-- The rohcUncmprContextTable lists all contexts per interface + + +-- and instance. It extends the rohcContextTable. +-- + +rohcUncmprContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcUncmprContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes ROHC uncompressed profile + specific properties of compressor contexts and + decompressor contexts. It extends the rohcContextTable + of the ROHC-MIB module." + ::= { rohcUncmprObjects 1 } + +rohcUncmprContextEntry OBJECT-TYPE + SYNTAX RohcUncmprContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcUncmprContextTable 1 } + +RohcUncmprContextEntry ::= SEQUENCE { + rohcUncmprContextState INTEGER, + rohcUncmprContextMode INTEGER, + rohcUncmprContextACKs Counter32 +} + +rohcUncmprContextState OBJECT-TYPE + SYNTAX INTEGER { + initAndRefresh(1), + normal(2), + noContext(3), + fullContext(4) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the context. States initAndRefresh(1) and normal(2) + are states of compressor contexts, states noContext(3) + and fullContext(4) are states of decompressor contexts." + REFERENCE + "RFC 3095, Section 5.10.3" + + + + ::= { rohcUncmprContextEntry 3 } + +rohcUncmprContextMode OBJECT-TYPE + SYNTAX INTEGER { + unidirectional(1), + bidirectional(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mode of the context." + REFERENCE + "RFC 3095, Section 5.10.3" + ::= { rohcUncmprContextEntry 4 } + +rohcUncmprContextACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all positive feedbacks (ACK) sent or + received in this context, respectively. + + 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. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1" + ::= { rohcUncmprContextEntry 5 } + +-- +-- conformance information +-- + +rohcUncmprCompliances OBJECT IDENTIFIER + ::= { rohcUncmprConformance 1 } +rohcUncmprGroups OBJECT IDENTIFIER + ::= { rohcUncmprConformance 2 } + +-- +-- compliance statements +-- + +rohcUncmprCompliance MODULE-COMPLIANCE + + + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-UNCOMPRESSED-MIB. + + Note that compliance with this compliance + statement requires compliance with the + rohcCompliance MODULE-COMPLIANCE statement of the + ROHC-MIB and with the ifCompliance3 MODULE-COMPLIANCE + statement of the IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcUncmprContextGroup + } + GROUP rohcUncmprStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcUncmprStatisticsGroup." + ::= { rohcUncmprCompliances 1 } + +rohcUncmprContextGroup OBJECT-GROUP + OBJECTS { + rohcUncmprContextState, + rohcUncmprContextMode + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC uncompressed compressors and decompressors." + ::= { rohcUncmprGroups 1 } + +rohcUncmprStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcUncmprContextACKs + } + STATUS current + DESCRIPTION + "An object providing context statistics." + ::= { rohcUncmprGroups 2 } + +END diff --git a/mibs/ietf/RS-232-MIB b/mibs/ietf/RS-232-MIB new file mode 100644 index 0000000..e5c5365 --- /dev/null +++ b/mibs/ietf/RS-232-MIB @@ -0,0 +1,792 @@ +RS-232-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32 + FROM SNMPv2-SMI + InterfaceIndex + FROM IF-MIB + transmission + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +rs232 MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for RS-232-like hardware devices." + ::= { transmission 33 } + + +-- Generic RS-232-like information + +rs232Number OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports (regardless of their current + state) in the RS-232-like general port table." + ::= { rs232 1 } + + +-- RS-232-like General Port Table + +rs232PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of rs232Number." + ::= { rs232 2 } + +rs232PortEntry OBJECT-TYPE + SYNTAX Rs232PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a port." + INDEX { rs232PortIndex } + ::= { rs232PortTable 1 } + +Rs232PortEntry ::= + SEQUENCE { + rs232PortIndex + InterfaceIndex, + rs232PortType + INTEGER, + rs232PortInSigNumber + Integer32, + rs232PortOutSigNumber + Integer32, + rs232PortInSpeed + Integer32, + rs232PortOutSpeed + Integer32, + rs232PortInFlowType + INTEGER, + rs232PortOutFlowType + INTEGER + } + +rs232PortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the port. By convention + and if possible, hardware port numbers map directly + to external connectors. The value for each port must + remain constant at least from one re-initialization + of the network management agent to the next." + ::= { rs232PortEntry 1 } + +rs232PortType OBJECT-TYPE + SYNTAX INTEGER { other(1), rs232(2), rs422(3), + rs423(4), v35(5), x21(6) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's hardware type." + ::= { rs232PortEntry 2 } + +rs232PortInSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input signals for the port in the + input signal table (rs232PortInSigTable). The table + contains entries only for those signals the software + can detect and that are useful to observe." + ::= { rs232PortEntry 3 } + +rs232PortOutSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output signals for the port in the + output signal table (rs232PortOutSigTable). The + table contains entries only for those signals the + software can assert and that are useful to observe." + ::= { rs232PortEntry 4 } + +rs232PortInSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's input speed in bits per second. Note that + non-standard values, such as 9612, are probably not allowed + on most implementations." + ::= { rs232PortEntry 5 } + +rs232PortOutSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's output speed in bits per second. Note that + non-standard values, such as 9612, are probably not allowed + on most implementations." + ::= { rs232PortEntry 6 } + +rs232PortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), ctsRts(2), dsrDtr(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level. + 'ctsRts' and 'dsrDtr' indicate use of the indicated + hardware signals." + ::= { rs232PortEntry 7 } + +rs232PortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), ctsRts(2), dsrDtr(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level. + 'ctsRts' and 'dsrDtr' indicate use of the indicated + hardware signals." + ::= { rs232PortEntry 8 } + + +-- RS-232-like Asynchronous Port Table + +rs232AsyncPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232AsyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of asynchronous port entries. Entries need + not exist for synchronous ports." + ::= { rs232 3 } + +rs232AsyncPortEntry OBJECT-TYPE + SYNTAX Rs232AsyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for an asynchronous + port." + INDEX { rs232AsyncPortIndex } + ::= { rs232AsyncPortTable 1 } + +Rs232AsyncPortEntry ::= + SEQUENCE { + rs232AsyncPortIndex + InterfaceIndex, + rs232AsyncPortBits + INTEGER, + rs232AsyncPortStopBits + INTEGER, + rs232AsyncPortParity + INTEGER, + rs232AsyncPortAutobaud + INTEGER, + rs232AsyncPortParityErrs + Counter32, + rs232AsyncPortFramingErrs + Counter32, + rs232AsyncPortOverrunErrs + Counter32 + + } + +rs232AsyncPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each port. Its value is the + same as rs232PortIndex for the port." + ::= { rs232AsyncPortEntry 1 } + +rs232AsyncPortBits OBJECT-TYPE + SYNTAX INTEGER (5..8) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's number of bits in a character." + ::= { rs232AsyncPortEntry 2 } + +rs232AsyncPortStopBits OBJECT-TYPE + SYNTAX INTEGER { one(1), two(2), + oneAndHalf(3), dynamic(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's number of stop bits." + ::= { rs232AsyncPortEntry 3 } + +rs232AsyncPortParity OBJECT-TYPE + SYNTAX INTEGER { none(1), odd(2), even(3), + mark(4), space(5) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's sense of a character parity bit." + ::= { rs232AsyncPortEntry 4 } + +rs232AsyncPortAutobaud OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control for the port's ability to automatically + sense input speed. + + When rs232PortAutoBaud is 'enabled', a port may + autobaud to values different from the set values for + speed, parity, and character size. As a result a + network management system may temporarily observe + values different from what was previously set." + ::= { rs232AsyncPortEntry 5 } + +rs232AsyncPortParityErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with a parity error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 6 } + +rs232AsyncPortFramingErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with a framing error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 7 } + +rs232AsyncPortOverrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with an overrun error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 8 } + + +-- RS-232-like Synchronous Port Table + +rs232SyncPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232SyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of asynchronous port entries. Entries need + not exist for synchronous ports." + ::= { rs232 4 } + +rs232SyncPortEntry OBJECT-TYPE + SYNTAX Rs232SyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a synchronous + port." + INDEX { rs232SyncPortIndex } + ::= { rs232SyncPortTable 1 } + +Rs232SyncPortEntry ::= + SEQUENCE { + rs232SyncPortIndex + InterfaceIndex, + rs232SyncPortClockSource + INTEGER, + rs232SyncPortFrameCheckErrs + Counter32, + rs232SyncPortTransmitUnderrunErrs + Counter32, + rs232SyncPortReceiveOverrunErrs + Counter32, + rs232SyncPortInterruptedFrames + Counter32, + rs232SyncPortAbortedFrames + Counter32, + rs232SyncPortRole + INTEGER, + rs232SyncPortEncoding + INTEGER, + rs232SyncPortRTSControl + INTEGER, + rs232SyncPortRTSCTSDelay + Integer32, + rs232SyncPortMode + INTEGER, + rs232SyncPortIdlePattern + INTEGER, + rs232SyncPortMinFlags + Integer32 + } + +rs232SyncPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each port. Its value is the + same as rs232PortIndex for the port." + ::= { rs232SyncPortEntry 1 } + +rs232SyncPortClockSource OBJECT-TYPE + SYNTAX INTEGER { internal(1), external(2), split(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Source of the port's bit rate clock. 'split' means + the tranmit clock is internal and the receive clock + is external." + ::= { rs232SyncPortEntry 2 } + +rs232SyncPortFrameCheckErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames with an invalid frame check + sequence, input from the port since system + re-initialization and while the port state was 'up' + or 'test'." + ::= { rs232SyncPortEntry 3 } + +rs232SyncPortTransmitUnderrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be + transmitted on the port since system + re-initialization and while the port state was 'up' + or 'test' because data was not available to the + transmitter in time." + ::= { rs232SyncPortEntry 4 } + +rs232SyncPortReceiveOverrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be received + on the port since system re-initialization and while + the port state was 'up' or 'test' because the + receiver did not accept the data in time." + ::= { rs232SyncPortEntry 5 } + +rs232SyncPortInterruptedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be received + or transmitted on the port due to loss of modem + signals since system re-initialization and while the + port state was 'up' or 'test'." + ::= { rs232SyncPortEntry 6 } + +rs232SyncPortAbortedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames aborted on the port due to + receiving an abort sequence since system + re-initialization and while the port state was 'up' + or 'test'." + ::= { rs232SyncPortEntry 7 } + +rs232SyncPortRole OBJECT-TYPE + SYNTAX INTEGER { dte(1), dce(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The role the device is playing that is using this port. + dte means the device is performing the role of + data terminal equipment + dce means the device is performing the role of + data circuit-terminating equipment." + DEFVAL { dce } + ::= { rs232SyncPortEntry 8 } + +rs232SyncPortEncoding OBJECT-TYPE + SYNTAX INTEGER { nrz(1), nrzi(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit stream encoding technique that is in effect + for this port. + nrz for Non-Return to Zero encoding + nrzi for Non-Return to Zero Inverted encoding." + DEFVAL { nrz } + ::= { rs232SyncPortEntry 9 } + +rs232SyncPortRTSControl OBJECT-TYPE + SYNTAX INTEGER { controlled(1), constant(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to control the Request To Send (RTS) + signal. + + controlled when the DTE is asserts RTS each time + data needs to be transmitted and drops + RTS at some point after data + transmission begins. + + If rs232SyncPortRole is 'dte', the + RTS is an output signal. The device + will issue a RTS and wait for a CTS + from the DCE before starting to + transmit. + + If rs232SyncPortRole is 'dce', the + RTS is an input signal. The device + will issue a CTS only after having + received RTS and waiting the + rs232SyncPortRTSCTSDelay interval. + + constant when the DTE constantly asserts RTS." + DEFVAL { constant } + ::= { rs232SyncPortEntry 10 } + +rs232SyncPortRTSCTSDelay OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval (in milliseconds) that the DCE must wait + after it sees RTS asserted before asserting CTS. This + object exists in support of older synchronous devices + that cannot recognize CTS within a certain interval + after it asserts RTS." + DEFVAL { 0 } + ::= { rs232SyncPortEntry 11 } + +rs232SyncPortMode OBJECT-TYPE + SYNTAX INTEGER { fdx(1), hdx(2), simplex-receive(3), + simplex-send(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mode of operation of the port with respect to the + direction and simultaneity of data transfer. + fdx when frames on the data link can be + transmitted and received at the same + time + + hdx when frames can either be received + from the data link or transmitted + onto the data link but not at the + same time. + + simplex-receive when frames can only be received on + this data link. + + simplex-send when frames can only be sent on this + data link." + DEFVAL { fdx } + ::= { rs232SyncPortEntry 12 } + +rs232SyncPortIdlePattern OBJECT-TYPE + SYNTAX INTEGER { mark(1), space(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit pattern used to indicate an idle line." + DEFVAL { space } + ::= { rs232SyncPortEntry 13 } + +rs232SyncPortMinFlags OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum number of flag patterns this port needs in + order to recognize the end of one frame and the start + of the next. Plausible values are 1 and 2." + DEFVAL { 2 } + ::= { rs232SyncPortEntry 14 } + + +-- Input Signal Table + +rs232InSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232InSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port input control signal entries + implemented and visible to the software on the port, + and useful to monitor." + ::= { rs232 5 } + +rs232InSigEntry OBJECT-TYPE + SYNTAX Rs232InSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Input control signal status for a hardware port." + INDEX { rs232InSigPortIndex, rs232InSigName } + ::= { rs232InSigTable 1 } + +Rs232InSigEntry ::= + SEQUENCE { + rs232InSigPortIndex + InterfaceIndex, + rs232InSigName + INTEGER, + rs232InSigState + INTEGER, + rs232InSigChanges + Counter32 + } + +rs232InSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of rs232PortIndex for the port to which + this entry belongs." + ::= { rs232InSigEntry 1 } + +rs232InSigName OBJECT-TYPE + SYNTAX INTEGER { rts(1), cts(2), dsr(3), dtr(4), ri(5), + dcd(6), sq(7), srs(8), srts(9), + scts(10), sdcd(11) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal, as follows: + + rts Request to Send + cts Clear to Send + dsr Data Set Ready + dtr Data Terminal Ready + ri Ring Indicator + dcd Received Line Signal Detector + sq Signal Quality Detector + srs Data Signaling Rate Selector + srts Secondary Request to Send + scts Secondary Clear to Send + sdcd Secondary Received Line Signal Detector + " + REFERENCE + "EIA Standard RS-232-C, August 1969." + ::= { rs232InSigEntry 2 } + +rs232InSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { rs232InSigEntry 3 } + +rs232InSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { rs232InSigEntry 4 } + + +-- Output Signal Table + +rs232OutSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232OutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port output control signal entries + implemented and visible to the software on the port, + and useful to monitor." + ::= { rs232 6 } + +rs232OutSigEntry OBJECT-TYPE + SYNTAX Rs232OutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Output control signal status for a hardware port." + INDEX { rs232OutSigPortIndex, rs232OutSigName } + ::= { rs232OutSigTable 1 } + +Rs232OutSigEntry ::= + SEQUENCE { + rs232OutSigPortIndex + InterfaceIndex, + rs232OutSigName + INTEGER, + rs232OutSigState + INTEGER, + rs232OutSigChanges + Counter32 + } + +rs232OutSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of rs232PortIndex for the port to which + this entry belongs." + ::= { rs232OutSigEntry 1 } + +rs232OutSigName OBJECT-TYPE + SYNTAX INTEGER { rts(1), cts(2), dsr(3), dtr(4), ri(5), + dcd(6), sq(7), srs(8), srts(9), + scts(10), sdcd(11) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal, as follows: + + rts Request to Send + cts Clear to Send + dsr Data Set Ready + dtr Data Terminal Ready + ri Ring Indicator + dcd Received Line Signal Detector + sq Signal Quality Detector + srs Data Signaling Rate Selector + srts Secondary Request to Send + scts Secondary Clear to Send + sdcd Secondary Received Line Signal Detector + " + REFERENCE + "EIA Standard RS-232-C, August 1969." + ::= { rs232OutSigEntry 2 } + +rs232OutSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { rs232OutSigEntry 3 } + +rs232OutSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { rs232OutSigEntry 4 } + + +-- conformance information + +rs232Conformance OBJECT IDENTIFIER ::= { rs232 7 } + +rs232Groups OBJECT IDENTIFIER ::= { rs232Conformance 1 } +rs232Compliances OBJECT IDENTIFIER ::= { rs232Conformance 2 } + + +-- compliance statements + +rs232Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have RS-232-like hardware interfaces." + + MODULE -- this module + MANDATORY-GROUPS { rs232Group } + + GROUP rs232AsyncGroup + DESCRIPTION + "The Asynch group is mandatory only for those + SNMPv2 entities which have asynchronous + interfaces Rs-232-like." + + GROUP rs232SyncGroup + DESCRIPTION + "The Synch group is mandatory only for those + SNMPv2 entities which have synchronous + interfaces Rs-232-like." + ::= { rs232Compliances 1 } + +-- units of conformance + +rs232Group OBJECT-GROUP + OBJECTS { rs232Number, rs232PortIndex, rs232PortType, + rs232PortInSigNumber, rs232PortOutSigNumber, + rs232PortInSpeed, rs232PortOutSpeed, + rs232PortInFlowType, rs232PortOutFlowType, + rs232InSigPortIndex, rs232InSigName, + rs232InSigState, rs232InSigChanges, + rs232OutSigPortIndex, rs232OutSigName, + rs232OutSigState, rs232OutSigChanges } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all RS-232-like interfaces." + ::= { rs232Groups 1 } + +rs232AsyncGroup OBJECT-GROUP + OBJECTS { rs232AsyncPortIndex, rs232AsyncPortBits, + rs232AsyncPortStopBits, rs232AsyncPortParity, + rs232AsyncPortAutobaud, rs232AsyncPortParityErrs, + rs232AsyncPortFramingErrs, rs232AsyncPortOverrunErrs } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to asynchronous RS-232-like interfaces." + ::= { rs232Groups 2 } + +rs232SyncGroup OBJECT-GROUP + OBJECTS { rs232SyncPortIndex, rs232SyncPortClockSource, + rs232SyncPortFrameCheckErrs, + rs232SyncPortTransmitUnderrunErrs, + rs232SyncPortReceiveOverrunErrs, + rs232SyncPortInterruptedFrames, + rs232SyncPortAbortedFrames } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to synchronous RS-232-like interfaces." + ::= { rs232Groups 3 } + +rs232SyncSDLCGroup OBJECT-GROUP + OBJECTS { rs232SyncPortRole, + rs232SyncPortEncoding, + rs232SyncPortRTSControl, + rs232SyncPortRTSCTSDelay, + rs232SyncPortMode, + rs232SyncPortIdlePattern, + rs232SyncPortMinFlags } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to synchronous RS-232-like interfaces + running SDLC." + ::= { rs232Groups 4 } + +END diff --git a/mibs/ietf/RSTP-MIB b/mibs/ietf/RSTP-MIB new file mode 100644 index 0000000..9a98f70 --- /dev/null +++ b/mibs/ietf/RSTP-MIB @@ -0,0 +1,327 @@ +RSTP-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1w Rapid Spanning Tree Protocol +-- ------------------------------------------------------------- + +IMPORTS + + + + MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dStp, dot1dStpPortEntry + FROM BRIDGE-MIB; + +rstpMIB MODULE-IDENTITY + LAST-UPDATED "200512070000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: Bridge-mib@ietf.org" + DESCRIPTION + "The Bridge MIB Extension module for managing devices + that support the Rapid Spanning Tree Protocol defined + by IEEE 802.1w. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4318; See the RFC itself for + full legal notices." + + REVISION "200512070000Z" + DESCRIPTION + "The initial version of this MIB module as published in + RFC 4318." + ::= { mib-2 134 } + +-- ---------------------------------------------------------- -- +-- subtrees in the RSTP-MIB +-- ---------------------------------------------------------- -- + +rstpNotifications OBJECT IDENTIFIER ::= { rstpMIB 0 } +rstpObjects OBJECT IDENTIFIER ::= { rstpMIB 1 } +rstpConformance OBJECT IDENTIFIER ::= { rstpMIB 2 } + +-- ------------------------------------------------------------- +-- Addition to the dot1dStp group +-- ------------------------------------------------------------- + +dot1dStpVersion OBJECT-TYPE + SYNTAX INTEGER { + stpCompatible(0), + rstp(2) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The version of Spanning Tree Protocol the bridge is + currently running. The value 'stpCompatible(0)' + indicates the Spanning Tree Protocol specified in + IEEE 802.1D-1998 and 'rstp(2)' indicates the Rapid + Spanning Tree Protocol specified in IEEE 802.1w and + clause 17 of 802.1D-2004. The values are directly from + the IEEE standard. New values may be defined as future + versions of the protocol become available. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1w clause 14.8.1, 17.12, 17.16.1" + DEFVAL { rstp } + ::= { dot1dStp 16 } + +dot1dStpTxHoldCount OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value used by the Port Transmit state machine to limit + the maximum transmission rate. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1w clause 17.16.6" + DEFVAL { 3 } + ::= { dot1dStp 17 } + +-- +-- { dot1dStp 18 } was used to represent dot1dStpPathCostDefault +-- in an earlier version of this MIB. It has since been +-- obsoleted, and should not be used. +-- + +dot1dStpExtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStpExtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains port-specific Rapid Spanning Tree + information." + ::= { dot1dStp 19 } + + + + +dot1dStpExtPortEntry OBJECT-TYPE + SYNTAX Dot1dStpExtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Rapid Spanning Tree information maintained by + each port." + AUGMENTS { dot1dStpPortEntry } + ::= { dot1dStpExtPortTable 1 } + +Dot1dStpExtPortEntry ::= + SEQUENCE { + dot1dStpPortProtocolMigration + TruthValue, + dot1dStpPortAdminEdgePort + TruthValue, + dot1dStpPortOperEdgePort + TruthValue, + dot1dStpPortAdminPointToPoint + INTEGER, + dot1dStpPortOperPointToPoint + TruthValue, + dot1dStpPortAdminPathCost + Integer32 + } + +dot1dStpPortProtocolMigration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When operating in RSTP (version 2) mode, writing true(1) + to this object forces this port to transmit RSTP BPDUs. + Any other operation on this object has no effect and + it always returns false(2) when read." + REFERENCE + "IEEE 802.1w clause 14.8.2.4, 17.18.10, 17.26" + ::= { dot1dStpExtPortEntry 1 } + +dot1dStpPortAdminEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative value of the Edge Port parameter. A + value of true(1) indicates that this port should be + assumed as an edge-port, and a value of false(2) indicates + that this port should be assumed as a non-edge-port. + + + + Setting this object will also cause the corresponding + instance of dot1dStpPortOperEdgePort to change to the + same value. Note that even when this object's value + is true, the value of the corresponding instance of + dot1dStpPortOperEdgePort can be false if a BPDU has + been received. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.3" + ::= { dot1dStpExtPortEntry 2 } + +dot1dStpPortOperEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational value of the Edge Port parameter. The + object is initialized to the value of the corresponding + instance of dot1dStpPortAdminEdgePort. When the + corresponding instance of dot1dStpPortAdminEdgePort is + set, this object will be changed as well. This object + will also be changed to false on reception of a BPDU." + + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.4" + ::= { dot1dStpExtPortEntry 3 } + +dot1dStpPortAdminPointToPoint OBJECT-TYPE + SYNTAX INTEGER { + forceTrue(0), + forceFalse(1), + auto(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative point-to-point status of the LAN segment + attached to this port, using the enumeration values of the + IEEE 802.1w clause. A value of forceTrue(0) indicates + that this port should always be treated as if it is + connected to a point-to-point link. A value of + forceFalse(1) indicates that this port should be treated as + having a shared media connection. A value of auto(2) + indicates that this port is considered to have a + point-to-point link if it is an Aggregator and all of its + + + + members are aggregatable, or if the MAC entity + is configured for full duplex operation, either through + auto-negotiation or by management means. Manipulating this + object changes the underlying adminPortToPortMAC. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { dot1dStpExtPortEntry 4 } + +dot1dStpPortOperPointToPoint OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational point-to-point status of the LAN segment + attached to this port. It indicates whether a port is + considered to have a point-to-point connection. + If adminPointToPointMAC is set to auto(2), then the value + of operPointToPointMAC is determined in accordance with the + specific procedures defined for the MAC entity concerned, + as defined in IEEE 802.1w, clause 6.5. The value is + determined dynamically; that is, it is re-evaluated whenever + the value of adminPointToPointMAC changes, and whenever + the specific procedures defined for the MAC entity evaluate + a change in its point-to-point status." + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { dot1dStpExtPortEntry 5 } + +dot1dStpPortAdminPathCost OBJECT-TYPE + SYNTAX Integer32 (0..200000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively assigned value for the contribution + of this port to the path cost of paths toward the spanning + tree root. + + Writing a value of '0' assigns the automatically calculated + default Path Cost value to the port. If the default Path + Cost is being used, this object returns '0' when read. + + This complements the object dot1dStpPortPathCost or + dot1dStpPortPathCost32, which returns the operational value + of the path cost. + + + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1D-1998: Section 8.5.5.3" + ::= { dot1dStpExtPortEntry 6 } + +-- ------------------------------------------------------------- +-- rstpMIB - Conformance Information +-- ------------------------------------------------------------- + +rstpGroups OBJECT IDENTIFIER ::= { rstpConformance 1 } + +rstpCompliances OBJECT IDENTIFIER ::= { rstpConformance 2 } + +-- ------------------------------------------------------------- +-- Units of conformance +-- ------------------------------------------------------------- + +rstpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dStpVersion, + dot1dStpTxHoldCount + } + STATUS current + DESCRIPTION + "Rapid Spanning Tree information for the bridge." + ::= { rstpGroups 1 } + +rstpPortGroup OBJECT-GROUP + OBJECTS { + dot1dStpPortProtocolMigration, + dot1dStpPortAdminEdgePort, + dot1dStpPortOperEdgePort, + dot1dStpPortAdminPointToPoint, + dot1dStpPortOperPointToPoint, + dot1dStpPortAdminPathCost + } + STATUS current + DESCRIPTION + "Rapid Spanning Tree information for individual ports." + ::= { rstpGroups 2 } + +-- ------------------------------------------------------------- +-- Compliance statements +-- ------------------------------------------------------------- + +rstpCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for device support of Rapid + Spanning Tree Protocol (RSTP) bridging services." + MODULE + MANDATORY-GROUPS { + rstpBridgeGroup, + rstpPortGroup + } + ::= { rstpCompliances 1 } + +END diff --git a/mibs/ietf/RSVP-MIB b/mibs/ietf/RSVP-MIB new file mode 100644 index 0000000..fefe9d2 --- /dev/null +++ b/mibs/ietf/RSVP-MIB @@ -0,0 +1,2812 @@ +RSVP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Gauge32, + NOTIFICATION-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, RowStatus, + TimeStamp, TestAndIncr, TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + Port, SessionNumber, SessionType, + Protocol, QosService, intSrvFlowStatus, + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + ifIndex, InterfaceIndex FROM IF-MIB; + + + rsvp MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:03:53 PDT 1997 + ORGANIZATION "IETF RSVP Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com + John Krawczyk + Postal: ArrowPoint Communications + 235 Littleton Road + Westford, Massachusetts 01886 + Tel: +1 508 692 5875 + E-Mail: jjk@tiac.net + + Arun Sastry + Postal: Cisco Systems + 210 W. Tasman Drive + San Jose, California 95134 + Tel: +1 408 526 7685 + E-Mail: arun@cisco.com" + DESCRIPTION + "The MIB module to describe the RSVP Protocol" + ::= { mib-2 51 } + + rsvpObjects OBJECT IDENTIFIER + ::= { rsvp 1 } -- tables + rsvpGenObjects OBJECT IDENTIFIER + ::= { rsvp 2 } -- global objects + rsvpNotificationsPrefix OBJECT IDENTIFIER + ::= { rsvp 3 } -- traps + rsvpConformance OBJECT IDENTIFIER + ::= { rsvp 4 } -- conformance + + + RsvpEncapsulation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This indicates the encapsulation that an RSVP + Neighbor is perceived to be using." + SYNTAX INTEGER { + ip (1), -- IP Protocol 46 + udp (2), -- UDP Encapsulation + both (3) -- neighbor is using both encapsulations + } + + + RefreshInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of milliseconds that are expected + to elapse between refreshes of path or reserva- + tion state. Unrefreshed Path or reservation + state is removed after a small multiple of this + period." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + +-- The RSVP Session Statistics Database displays statistics +-- relating to the number of senders and receivers in each +-- session. + + + rsvpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all sessions seen by a given sys- + tem." + ::= { rsvpObjects 1 } + + + rsvpSessionEntry OBJECT-TYPE + SYNTAX RsvpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single session seen by a given system." + INDEX { rsvpSessionNumber } + ::= { rsvpSessionTable 1 } + + + RsvpSessionEntry ::= + SEQUENCE { + rsvpSessionNumber SessionNumber, + rsvpSessionType SessionType, + rsvpSessionDestAddr OCTET STRING, + rsvpSessionDestAddrLength INTEGER, + rsvpSessionProtocol Protocol, + rsvpSessionPort Port, + rsvpSessionSenders Gauge32, + rsvpSessionReceivers Gauge32, + rsvpSessionRequests Gauge32 + } + + + rsvpSessionNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this session. This is for SNMP + Indexing purposes only and has no relation to + any protocol value." + ::= { rsvpSessionEntry 1 } + + + rsvpSessionType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpSessionEntry 2 } + + + rsvpSessionDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSessionEntry 3 } + + + rsvpSessionDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CIDR prefix length of the session address, + which is 32 for IP4 host and multicast ad- + dresses, and 128 for IP6 addresses. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSessionEntry 4 } + + + rsvpSessionProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSessionEntry 5 } + + + rsvpSessionPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by rsvpSen- + derProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpSessionEntry 6 } + + + rsvpSessionSenders OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of distinct senders currently known + to be part of this session." + ::= { rsvpSessionEntry 7 } + + + rsvpSessionReceivers OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reservations being requested of + this system for this session." + ::= { rsvpSessionEntry 8 } + + + rsvpSessionRequests OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reservation requests this system + is sending upstream for this session." + ::= { rsvpSessionEntry 9 } + + rsvpBadPackets OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object keeps a count of the number of bad + RSVP packets received." + ::= { rsvpGenObjects 1 } + + +-- The RSVP Session Sender Database contains the information +-- displayed by senders regarding their potential contribution +-- to session data content. It is in essence a list of the +-- valid PATH messages that the RSVP Router or Host is receiving. + + + rsvpSenderNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpSenderNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + rsvpSenderEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { rsvpGenObjects 2 } + + + rsvpSenderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by senders in PATH messages." + ::= { rsvpObjects 2 } + + + rsvpSenderEntry OBJECT-TYPE + SYNTAX RsvpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by a single sender's PATH message." + INDEX { rsvpSessionNumber, rsvpSenderNumber } + ::= { rsvpSenderTable 1 } + +RsvpSenderEntry ::= + + + SEQUENCE { + rsvpSenderNumber SessionNumber, + rsvpSenderType SessionType, + rsvpSenderDestAddr OCTET STRING, + rsvpSenderAddr OCTET STRING, + rsvpSenderDestAddrLength INTEGER, + rsvpSenderAddrLength INTEGER, + rsvpSenderProtocol Protocol, + rsvpSenderDestPort Port, + rsvpSenderPort Port, + rsvpSenderFlowId INTEGER, + rsvpSenderHopAddr OCTET STRING, + rsvpSenderHopLih Integer32, + rsvpSenderInterface InterfaceIndex, + rsvpSenderTSpecRate BitRate, + rsvpSenderTSpecPeakRate BitRate, + rsvpSenderTSpecBurst BurstSize, + rsvpSenderTSpecMinTU MessageSize, + rsvpSenderTSpecMaxTU MessageSize, + rsvpSenderInterval RefreshInterval, + rsvpSenderRSVPHop TruthValue, + rsvpSenderLastChange TimeStamp, + rsvpSenderPolicy OCTET STRING, + rsvpSenderAdspecBreak TruthValue, + rsvpSenderAdspecHopCount INTEGER, + rsvpSenderAdspecPathBw BitRate, + rsvpSenderAdspecMinLatency Integer32, + rsvpSenderAdspecMtu INTEGER, + rsvpSenderAdspecGuaranteedSvc TruthValue, + rsvpSenderAdspecGuaranteedBreak TruthValue, + rsvpSenderAdspecGuaranteedCtot Integer32, + rsvpSenderAdspecGuaranteedDtot Integer32, + rsvpSenderAdspecGuaranteedCsum Integer32, + rsvpSenderAdspecGuaranteedDsum Integer32, + rsvpSenderAdspecGuaranteedHopCount INTEGER, + rsvpSenderAdspecGuaranteedPathBw BitRate, + rsvpSenderAdspecGuaranteedMinLatency Integer32, + rsvpSenderAdspecGuaranteedMtu INTEGER, + rsvpSenderAdspecCtrlLoadSvc TruthValue, + rsvpSenderAdspecCtrlLoadBreak TruthValue, + rsvpSenderAdspecCtrlLoadHopCount INTEGER, + rsvpSenderAdspecCtrlLoadPathBw BitRate, + rsvpSenderAdspecCtrlLoadMinLatency Integer32, + rsvpSenderAdspecCtrlLoadMtu INTEGER, + rsvpSenderStatus RowStatus, + + + rsvpSenderTTL INTEGER + } + + rsvpSenderNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this sender. This is for SNMP + Indexing purposes only and has no relation to + any protocol value." + ::= { rsvpSenderEntry 1 } + + + rsvpSenderType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpSenderEntry 2 } + + + rsvpSenderDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSenderEntry 3 } + + + rsvpSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address used by this sender in this + session. This object may not be changed when + the value of the RowStatus object is 'active'." + ::= { rsvpSenderEntry 4 } + + + rsvpSenderDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 5 } + + + rsvpSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 6 } + + + rsvpSenderProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 7 } + + + rsvpSenderDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by rsvpSen- + derProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpSenderEntry 8 } + + + rsvpSenderPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by rsvpSenderPro- + tocol is 50 (ESP) or 51 (AH), this represents a + generalized port identifier (GPI). A value of + zero indicates that the IP protocol in use does + not have ports. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSenderEntry 9 } + + + rsvpSenderFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this sender is using, if + this is an IPv6 session." + ::= { rsvpSenderEntry 10 } + + + rsvpSenderHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address used by the previous RSVP hop + (which may be the original sender)." + ::= { rsvpSenderEntry 11 } + + rsvpSenderHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Logical Interface Handle used by the pre- + vious RSVP hop (which may be the original + sender)." + ::= { rsvpSenderEntry 12 } + + + rsvpSenderInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this PATH message was most recently received." + ::= { rsvpSenderEntry 13 } + + + rsvpSenderTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpSenderTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed rsvpSen- + derTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpSenderEntry 14 } + + + rsvpSenderTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream. + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpSenderEntry 15 } + + + rsvpSenderTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time." + ::= { rsvpSenderEntry 16 } + + + rsvpSenderTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpSenderEntry 17 } + + + rsvpSenderTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpSenderEntry 18 } + + + rsvpSenderInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval between refresh messages as ad- + vertised by the Previous Hop." + ::= { rsvpSenderEntry 19 } + + + rsvpSenderRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the node believes that the previous + IP hop is an RSVP hop. If FALSE, the node be- + lieves that the previous IP hop may not be an + RSVP hop." + ::= { rsvpSenderEntry 20 } + + + rsvpSenderLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this PATH mes- + sage; This is either the first time it was re- + ceived or the time of the most recent change in + parameters." + ::= { rsvpSenderEntry 21 } + + + rsvpSenderPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpSenderEntry 22 } + + + rsvpSenderAdspecBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The global break bit general characterization + parameter from the ADSPEC. If TRUE, at least + one non-IS hop was detected in the path. If + FALSE, no non-IS hops were detected." + ::= { rsvpSenderEntry 23 } + + + rsvpSenderAdspecHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The hop count general characterization parame- + ter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 24 } + + + rsvpSenderAdspecPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The path bandwidth estimate general character- + ization parameter from the ADSPEC. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 25 } + + + rsvpSenderAdspecMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum path latency general characteriza- + tion parameter from the ADSPEC. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 26 } + + + rsvpSenderAdspecMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The composed Maximum Transmission Unit general + characterization parameter from the ADSPEC. A + return of zero or noSuchValue indicates one of + the following conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 27 } + + + rsvpSenderAdspecGuaranteedSvc OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the ADSPEC contains a Guaranteed Ser- + vice fragment. If FALSE, the ADSPEC does not + contain a Guaranteed Service fragment." + ::= { rsvpSenderEntry 28 } + + + rsvpSenderAdspecGuaranteedBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the Guaranteed Service fragment has + its 'break' bit set, indicating that one or + more nodes along the path do not support the + guaranteed service. If FALSE, and rsvpSen- + derAdspecGuaranteedSvc is TRUE, the 'break' bit + is not set. + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns FALSE or noSuchValue." + ::= { rsvpSenderEntry 29 } + + + rsvpSenderAdspecGuaranteedCtot OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the end-to-end composed value for the + guaranteed service 'C' parameter. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 30 } + + + rsvpSenderAdspecGuaranteedDtot OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the end-to-end composed value for the + guaranteed service 'D' parameter. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 31 } + + + rsvpSenderAdspecGuaranteedCsum OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the composed value for the guaranteed ser- + vice 'C' parameter since the last reshaping + point. A return of zero or noSuchValue indi- + cates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 32 } + + + rsvpSenderAdspecGuaranteedDsum OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the composed value for the guaranteed ser- + vice 'D' parameter since the last reshaping + point. A return of zero or noSuchValue indi- + cates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 33 } + + + rsvpSenderAdspecGuaranteedHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the hop + count general characterization parameter from + the ADSPEC. A return of zero or noSuchValue + indicates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 34 } + + + rsvpSenderAdspecGuaranteedPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the path + bandwidth estimate general characterization + parameter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 35 } + + + rsvpSenderAdspecGuaranteedMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the minimum + path latency general characterization parameter + from the ADSPEC. A return of zero or noSuch- + Value indicates one of the following condi- + tions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 36 } + + + rsvpSenderAdspecGuaranteedMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the com- + posed Maximum Transmission Unit general charac- + terization parameter from the ADSPEC. A return + of zero or noSuchValue indicates one of the + following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 37 } + + + rsvpSenderAdspecCtrlLoadSvc OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the ADSPEC contains a Controlled Load + Service fragment. If FALSE, the ADSPEC does + not contain a Controlled Load Service frag- + ment." + ::= { rsvpSenderEntry 38 } + + + rsvpSenderAdspecCtrlLoadBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the Controlled Load Service fragment + has its 'break' bit set, indicating that one or + more nodes along the path do not support the + controlled load service. If FALSE, and + rsvpSenderAdspecCtrlLoadSvc is TRUE, the + 'break' bit is not set. + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns FALSE or noSuchValue." + ::= { rsvpSenderEntry 39 } + + rsvpSenderAdspecCtrlLoadHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the hop + count general characterization parameter from + the ADSPEC. A return of zero or noSuchValue + indicates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 40 } + + + rsvpSenderAdspecCtrlLoadPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the path + bandwidth estimate general characterization + parameter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 41 } + + + rsvpSenderAdspecCtrlLoadMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the minimum + path latency general characterization parameter + from the ADSPEC. A return of zero or noSuch- + Value indicates one of the following condi- + tions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 42 } + + + rsvpSenderAdspecCtrlLoadMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the com- + posed Maximum Transmission Unit general charac- + terization parameter from the ADSPEC. A return + of zero or noSuchValue indicates one of the + following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 43 } + + + rsvpSenderStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active PATH messages. This + object may be used to install static PATH in- + formation or delete PATH information." + ::= { rsvpSenderEntry 44 } + + + rsvpSenderTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpSenderEntry 45 } + + + rsvpSenderOutInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSenderOutInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of outgoing interfaces that PATH messages + use. The ifIndex is the ifIndex value of the + egress interface." + ::= { rsvpObjects 3 } + + + rsvpSenderOutInterfaceEntry OBJECT-TYPE + SYNTAX RsvpSenderOutInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of outgoing interfaces that a particular + PATH message has." + INDEX { rsvpSessionNumber, rsvpSenderNumber, ifIndex } + ::= { rsvpSenderOutInterfaceTable 1 } + +RsvpSenderOutInterfaceEntry ::= + SEQUENCE { + rsvpSenderOutInterfaceStatus RowStatus + } + + rsvpSenderOutInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "'active' for all active PATH messages." + ::= { rsvpSenderOutInterfaceEntry 1 } + + +-- The RSVP Reservation Requests Received Table contains the +-- information displayed by receivers regarding their needs with +-- respect to sessions and senders. It is in essence a list of the +-- valid RESV messages that the RSVP Router or Host is receiving. + + rsvpResvNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpResvNumber as described in 'Textual Conven- + tions for SNMPv2'. The network manager reads + the object, and then writes the value back in + the SET that creates a new instance of + rsvpResvEntry. If the SET fails with the code + 'inconsistentValue', then the process must be + repeated; If the SET succeeds, then the object + is incremented, and the new instance is created + according to the manager's directions." + ::= { rsvpGenObjects 3 } + + + rsvpResvTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpResvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by receivers in RESV messages." + ::= { rsvpObjects 4 } + + + rsvpResvEntry OBJECT-TYPE + SYNTAX RsvpResvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by a single receiver's RESV message + concerning a single sender." + INDEX { rsvpSessionNumber, rsvpResvNumber } + ::= { rsvpResvTable 1 } + + + + RsvpResvEntry ::= + SEQUENCE { + rsvpResvNumber SessionNumber, + rsvpResvType SessionType, + rsvpResvDestAddr OCTET STRING, + rsvpResvSenderAddr OCTET STRING, + rsvpResvDestAddrLength INTEGER, + rsvpResvSenderAddrLength INTEGER, + rsvpResvProtocol Protocol, + rsvpResvDestPort Port, + rsvpResvPort Port, + rsvpResvHopAddr OCTET STRING, + rsvpResvHopLih Integer32, + rsvpResvInterface InterfaceIndex, + rsvpResvService QosService, + rsvpResvTSpecRate BitRate, + rsvpResvTSpecPeakRate BitRate, + rsvpResvTSpecBurst BurstSize, + rsvpResvTSpecMinTU MessageSize, + rsvpResvTSpecMaxTU MessageSize, + rsvpResvRSpecRate BitRate, + rsvpResvRSpecSlack Integer32, + rsvpResvInterval RefreshInterval, + rsvpResvScope OCTET STRING, + rsvpResvShared TruthValue, + rsvpResvExplicit TruthValue, + rsvpResvRSVPHop TruthValue, + rsvpResvLastChange TimeStamp, + rsvpResvPolicy OCTET STRING, + rsvpResvStatus RowStatus, + rsvpResvTTL INTEGER, + rsvpResvFlowId INTEGER + } + + + rsvpResvNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this reservation request. This + is for SNMP Indexing purposes only and has no + relation to any protocol value." + ::= { rsvpResvEntry 1 } + + + rsvpResvType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpResvEntry 2 } + + rsvpResvDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvEntry 3 } + + + rsvpResvSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { rsvpResvEntry 4 } + + + rsvpResvDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 5 } + + + rsvpResvSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 6 } + + + rsvpResvProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 7 } + + + rsvpResvDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + rsvpResvProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpResvEntry 8 } + + + rsvpResvPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by rsvpResvProto- + col is 50 (ESP) or 51 (AH), this represents a + generalized port identifier (GPI). A value of + zero indicates that the IP protocol in use does + not have ports. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvEntry 9 } + + rsvpResvHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address used by the next RSVP hop (which + may be the ultimate receiver)." + ::= { rsvpResvEntry 10 } + + + rsvpResvHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Logical Interface Handle received from the + previous RSVP hop (which may be the ultimate + receiver)." + ::= { rsvpResvEntry 11 } + + + rsvpResvInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this RESV message was most recently received." + ::= { rsvpResvEntry 12 } + + + rsvpResvService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The QoS Service classification requested by + the receiver." + ::= { rsvpResvEntry 13 } + + + rsvpResvTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpResvTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed + rsvpResvTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpResvEntry 14 } + + + rsvpResvTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream. + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpResvEntry 15 } + + + rsvpResvTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { rsvpResvEntry 16 } + + + rsvpResvTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpResvEntry 17 } + + + rsvpResvTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpResvEntry 18 } + + + rsvpResvRSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the + clearing rate that is being requested. Other- + wise, it is zero, or the agent may return + noSuchValue." + ::= { rsvpResvEntry 19 } + + + rsvpResvRSpecSlack OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the delay + slack. Otherwise, it is zero, or the agent may + return noSuchValue." + ::= { rsvpResvEntry 20 } + + + rsvpResvInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval between refresh messages as ad- + vertised by the Next Hop." + ::= { rsvpResvEntry 21 } + + + rsvpResvScope OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "The contents of the scope object, displayed as + an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length. + + If the length is non-zero, this contains a + series of IP4 or IP6 addresses." + ::= { rsvpResvEntry 22 } + + + rsvpResvShared OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, a reservation shared among senders is + requested. If FALSE, a reservation specific to + this sender is requested." + ::= { rsvpResvEntry 23 } + + + rsvpResvExplicit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, individual senders are listed using + Filter Specifications. If FALSE, all senders + are implicitly selected. The Scope Object will + contain a list of senders that need to receive + this reservation request for the purpose of + routing the RESV message." + ::= { rsvpResvEntry 24 } + + rsvpResvRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the node believes that the previous + IP hop is an RSVP hop. If FALSE, the node be- + lieves that the previous IP hop may not be an + RSVP hop." + ::= { rsvpResvEntry 25 } + + + rsvpResvLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this reserva- + tion request; This is either the first time it + was received or the time of the most recent + change in parameters." + ::= { rsvpResvEntry 26 } + + + rsvpResvPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvEntry 27 } + + + rsvpResvStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active RESV messages. This + object may be used to install static RESV in- + formation or delete RESV information." + ::= { rsvpResvEntry 28 } + + + rsvpResvTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpResvEntry 29 } + + + rsvpResvFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this receiver is using, if + this is an IPv6 session." + ::= { rsvpResvEntry 30 } + + +-- The RSVP Reservation Requests Forwarded Table contains the +-- information displayed by receivers regarding their needs with +-- respect to sessions and senders. It is in essence a list of the +-- valid RESV messages that the RSVP Router or Host is sending +-- to its upstream neighbors. + + + rsvpResvFwdNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpResvFwdNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + rsvpResvFwdEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { rsvpGenObjects 4 } + + + rsvpResvFwdTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpResvFwdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed upstream in RESV messages." + ::= { rsvpObjects 5 } + + + rsvpResvFwdEntry OBJECT-TYPE + SYNTAX RsvpResvFwdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed upstream in an RESV message concern- + ing a single sender." + INDEX { rsvpSessionNumber, rsvpResvFwdNumber } + ::= { rsvpResvFwdTable 1 } + + + RsvpResvFwdEntry ::= + SEQUENCE { + rsvpResvFwdNumber SessionNumber, + rsvpResvFwdType SessionType, + rsvpResvFwdDestAddr OCTET STRING, + rsvpResvFwdSenderAddr OCTET STRING, + rsvpResvFwdDestAddrLength INTEGER, + rsvpResvFwdSenderAddrLength INTEGER, + rsvpResvFwdProtocol Protocol, + rsvpResvFwdDestPort Port, + rsvpResvFwdPort Port, + rsvpResvFwdHopAddr OCTET STRING, + rsvpResvFwdHopLih Integer32, + rsvpResvFwdInterface InterfaceIndex, + rsvpResvFwdService QosService, + rsvpResvFwdTSpecRate BitRate, + rsvpResvFwdTSpecPeakRate BitRate, + rsvpResvFwdTSpecBurst BurstSize, + rsvpResvFwdTSpecMinTU MessageSize, + rsvpResvFwdTSpecMaxTU MessageSize, + rsvpResvFwdRSpecRate BitRate, + rsvpResvFwdRSpecSlack Integer32, + rsvpResvFwdInterval RefreshInterval, + rsvpResvFwdScope OCTET STRING, + rsvpResvFwdShared TruthValue, + rsvpResvFwdExplicit TruthValue, + rsvpResvFwdRSVPHop TruthValue, + rsvpResvFwdLastChange TimeStamp, + rsvpResvFwdPolicy OCTET STRING, + rsvpResvFwdStatus RowStatus, + rsvpResvFwdTTL INTEGER, + rsvpResvFwdFlowId INTEGER + } + + + rsvpResvFwdNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this reservation request. This + is for SNMP Indexing purposes only and has no + relation to any protocol value." + ::= { rsvpResvFwdEntry 1 } + + + rsvpResvFwdType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpResvFwdEntry 2 } + + + rsvpResvFwdDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvFwdEntry 3 } + + + rsvpResvFwdSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { rsvpResvFwdEntry 4 } + + + rsvpResvFwdDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 5 } + + + rsvpResvFwdSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 6 } + + + rsvpResvFwdProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Protocol used by a session. for secure + sessions, this indicates IP Security. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 7 } + + + rsvpResvFwdDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + rsvpResvFwdProtocol, is 50 (ESP) or 51 (AH), + this represents a virtual destination port + number. A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 8 } + + + rsvpResvFwdPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by + rsvpResvFwdProtocol is 50 (ESP) or 51 (AH), + this represents a generalized port identifier + (GPI). A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 9 } + + + rsvpResvFwdHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the (previous) RSVP that will + receive this message." + ::= { rsvpResvFwdEntry 10 } + + + rsvpResvFwdHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Logical Interface Handle sent to the (pre- + vious) RSVP that will receive this message." + ::= { rsvpResvFwdEntry 11 } + + + rsvpResvFwdInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this RESV message was most recently sent." + ::= { rsvpResvFwdEntry 12 } + + + rsvpResvFwdService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The QoS Service classification requested." + ::= { rsvpResvFwdEntry 13 } + + + rsvpResvFwdTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpResvFwdTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed + rsvpResvFwdTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpResvFwdEntry 14 } + + + rsvpResvFwdTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpResvFwdEntry 15 } + + + rsvpResvFwdTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { rsvpResvFwdEntry 16 } + + + rsvpResvFwdTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpResvFwdEntry 17 } + + + rsvpResvFwdTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpResvFwdEntry 18 } + + + rsvpResvFwdRSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the + clearing rate that is being requested. Other- + wise, it is zero, or the agent may return + noSuchValue." + ::= { rsvpResvFwdEntry 19 } + + + rsvpResvFwdRSpecSlack OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the delay + slack. Otherwise, it is zero, or the agent may + return noSuchValue." + ::= { rsvpResvFwdEntry 20 } + + + rsvpResvFwdInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interval between refresh messages adver- + tised to the Previous Hop." + ::= { rsvpResvFwdEntry 21 } + + + rsvpResvFwdScope OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contents of the scope object, displayed as + an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvFwdEntry 22 } + + + rsvpResvFwdShared OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, a reservation shared among senders is + requested. If FALSE, a reservation specific to + this sender is requested." + ::= { rsvpResvFwdEntry 23 } + + + rsvpResvFwdExplicit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, individual senders are listed using + Filter Specifications. If FALSE, all senders + are implicitly selected. The Scope Object will + contain a list of senders that need to receive + this reservation request for the purpose of + routing the RESV message." + ::= { rsvpResvFwdEntry 24 } + + + rsvpResvFwdRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, the node believes that the next IP + hop is an RSVP hop. If FALSE, the node be- + lieves that the next IP hop may not be an RSVP + hop." + ::= { rsvpResvFwdEntry 25 } + + + rsvpResvFwdLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this request; + This is either the first time it was sent or + the time of the most recent change in parame- + ters." + ::= { rsvpResvFwdEntry 26 } + + + rsvpResvFwdPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvFwdEntry 27 } + + + rsvpResvFwdStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "'active' for all active RESV messages. This + object may be used to delete RESV information." + ::= { rsvpResvFwdEntry 28 } + + + rsvpResvFwdTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpResvFwdEntry 29 } + + + rsvpResvFwdFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this receiver is using, if + this is an IPv6 session." + ::= { rsvpResvFwdEntry 30 } + + +-- The RSVP Interface Attributes Database contains the +-- RSVP-specific information for an interface. Information +-- that is shared with other reservation procedures such +-- as ST-II is in the Integrated Interface Attributes +-- Database. + + rsvpIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSVP-specific attributes of the system's + interfaces." + ::= { rsvpObjects 6 } + + + rsvpIfEntry OBJECT-TYPE + SYNTAX RsvpIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSVP-specific attributes of the a given + interface." + INDEX { ifIndex } + ::= { rsvpIfTable 1 } + +RsvpIfEntry ::= + SEQUENCE { + rsvpIfUdpNbrs Gauge32, + rsvpIfIpNbrs Gauge32, + rsvpIfNbrs Gauge32, + rsvpIfEnabled TruthValue, + rsvpIfUdpRequired TruthValue, + rsvpIfRefreshBlockadeMultiple INTEGER, + rsvpIfRefreshMultiple INTEGER, + rsvpIfTTL INTEGER, + rsvpIfRefreshInterval TimeInterval, + rsvpIfRouteDelay TimeInterval, + rsvpIfStatus RowStatus + } + + + rsvpIfUdpNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors perceived to be using + only the RSVP UDP Encapsulation." + ::= { rsvpIfEntry 1 } + + + rsvpIfIpNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors perceived to be using + only the RSVP IP Encapsulation." + ::= { rsvpIfEntry 2 } + + + rsvpIfNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors currently perceived; + this will exceed rsvpIfIpNbrs + rsvpIfUdpNbrs + by the number of neighbors using both encapsu- + lations." + ::= { rsvpIfEntry 3 } + + + rsvpIfRefreshBlockadeMultiple OBJECT-TYPE + SYNTAX INTEGER (1..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'Kb', Which is the + minimum number of refresh intervals that + blockade state will last once entered." + DEFVAL { 4 } + ::= { rsvpIfEntry 4 } + + + rsvpIfRefreshMultiple OBJECT-TYPE + SYNTAX INTEGER (1..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'K', which is the + number of refresh intervals which must elapse + (minimum) before a PATH or RESV message which + is not being refreshed will be aged out." + DEFVAL { 3 } + ::= { rsvpIfEntry 5 } + + + rsvpIfTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of SEND_TTL used on this interface + for messages this node originates. If set to + zero, the node determines the TTL via other + means." + DEFVAL { 0 } -- which is to say, no override + ::= { rsvpIfEntry 6 } + + + rsvpIfRefreshInterval OBJECT-TYPE + SYNTAX TimeInterval + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'R', which is the + minimum period between refresh transmissions of + a given PATH or RESV message on an interface." + DEFVAL { 3000 } -- 30 seconds + ::= { rsvpIfEntry 7 } + + + rsvpIfRouteDelay OBJECT-TYPE + SYNTAX TimeInterval + UNITS "hundredths of a second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The approximate period from the time a route + is changed to the time a resulting message ap- + pears on the interface." + DEFVAL { 200 } -- 2 seconds + ::= { rsvpIfEntry 8 } + + + rsvpIfEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, RSVP is enabled on this Interface. + If FALSE, RSVP is not enabled on this inter- + face." + ::= { rsvpIfEntry 9 } + + + rsvpIfUdpRequired OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, manual configuration forces the use + of UDP encapsulation on the interface. If + FALSE, UDP encapsulation is only used if rsvpI- + fUdpNbrs is not zero." + + ::= { rsvpIfEntry 10 } + + + rsvpIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' on interfaces that are configured for + RSVP." + ::= { rsvpIfEntry 11 } + + +-- The RSVP Neighbor Database lists the neighbors the RSVP +-- process currently is receiving messages from. + + + rsvpNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the Neighbors of an + RSVP system." + ::= { rsvpObjects 7 } + + + rsvpNbrEntry OBJECT-TYPE + SYNTAX RsvpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing a single RSVP Neigh- + bor." + INDEX { ifIndex, rsvpNbrAddress } + ::= { rsvpNbrTable 1 } + +RsvpNbrEntry ::= + SEQUENCE { + rsvpNbrAddress OCTET STRING, + rsvpNbrProtocol RsvpEncapsulation, + rsvpNbrStatus RowStatus + } + + rsvpNbrAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP4 or IP6 Address used by this neighbor. + This object may not be changed when the value + of the RowStatus object is 'active'." + ::= { rsvpNbrEntry 1 } + + + rsvpNbrProtocol OBJECT-TYPE + SYNTAX RsvpEncapsulation + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation being used by this neigh- + bor." + ::= { rsvpNbrEntry 2 } + + + rsvpNbrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all neighbors. This object may + be used to configure neighbors. In the pres- + ence of configured neighbors, the implementa- + tion may (but is not required to) limit the set + of valid neighbors to those configured." + ::= { rsvpNbrEntry 3 } + + +-- +-- Notifications used to signal events +-- + + rsvpNotifications OBJECT IDENTIFIER + ::= { rsvpNotificationsPrefix 0 } + + + newFlow NOTIFICATION-TYPE + OBJECTS { + intSrvFlowStatus, rsvpSessionDestAddr, + rsvpResvFwdStatus, rsvpResvStatus, rsvpSenderStatus + } + STATUS current + DESCRIPTION + "The newFlow trap indicates that the originat- + ing system has installed a new flow in its + classifier, or (when reservation authorization + is in view) is prepared to install such a flow + in the classifier and is requesting authoriza- + tion. The objects included with the Notifica- + tion may be used to read further information + using the Integrated Services and RSVP MIBs. + Authorization or non-authorization may be + enacted by a write to the variable intSrvFlowS- + tatus." + ::= { rsvpNotifications 1 } + + + lostFlow NOTIFICATION-TYPE + OBJECTS { + intSrvFlowStatus, rsvpSessionDestAddr, + rsvpResvFwdStatus, rsvpResvStatus, rsvpSenderStatus + } + STATUS current + DESCRIPTION + "The lostFlow trap indicates that the originat- + ing system has removed a flow from its classif- + ier." + ::= { rsvpNotifications 2 } + + +-- conformance information + + +rsvpGroups OBJECT IDENTIFIER ::= { rsvpConformance 1 } +rsvpCompliances OBJECT IDENTIFIER ::= { rsvpConformance 2 } + +-- compliance statements + + + rsvpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement. Note that the im- + plementation of this module requires implemen- + tation of the Integrated Services MIB as well." + MODULE -- this module + MANDATORY-GROUPS { + rsvpSessionGroup, rsvpSenderGroup, rsvpResvGroup, + rsvpIfGroup, rsvpNbrGroup + } + + GROUP rsvpResvFwdGroup + DESCRIPTION + "The Reservation Requests table is appropriate + in implementations that store upstream reserva- + tion messages, but not appropriate in implemen- + tations which calculate them on each transmis- + sion." + + GROUP rsvpNotificationGroup + DESCRIPTION + "The notifications in this module may be used to + advise a network management station of changes in + flow status, and are required when this use is in + view." + + OBJECT rsvpSessionRequests + MIN-ACCESS not-accessible + DESCRIPTION + "This object is optional." + + OBJECT rsvpSenderType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderHopAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderHopLih + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecPeakRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderInterval + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderRSVPHop + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderPolicy + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecBreak + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecHopCount + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecPathBw + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecMinLatency + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecMtu + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecGuaranteedSvc + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedBreak + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedCtot + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedDtot + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedCsum + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedDsum + MIN-ACCESS read-only + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedHopCount + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedPathBw + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedMinLatency + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedMtu + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecCtrlLoadSvc + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadBreak + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadHopCount + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadPathBw + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadMinLatency + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadMtu + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + + OBJECT rsvpResvType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvHopAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvHopLih + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvService + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecPeakRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSpecSlack + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvInterval + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvScope + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvShared + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvExplicit + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSVPHop + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvPolicy + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + OBJECT rsvpResvFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + OBJECT rsvpResvFwdStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvFwdFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + ::= { rsvpCompliances 1 } + + + rsvpSessionGroup OBJECT-GROUP + OBJECTS { + rsvpSessionType, rsvpSessionDestAddr, + rsvpSessionDestAddrLength, rsvpSessionProtocol, + rsvpSessionPort, rsvpSessionSenders, rsvpSessionReceivers, + rsvpSessionRequests + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 1 } + + rsvpSenderGroup OBJECT-GROUP + OBJECTS { + rsvpSenderType, rsvpSenderDestAddr, rsvpSenderAddr, + rsvpSenderDestAddrLength, rsvpSenderAddrLength, + rsvpSenderProtocol, rsvpSenderDestPort, rsvpSenderPort, + rsvpSenderHopAddr, rsvpSenderHopLih, rsvpSenderInterface, + rsvpSenderTSpecRate, rsvpSenderTSpecPeakRate, + rsvpSenderTSpecBurst, rsvpSenderTSpecMinTU, + rsvpSenderTSpecMaxTU, rsvpSenderInterval, + rsvpSenderLastChange, rsvpSenderStatus, + rsvpSenderRSVPHop, rsvpSenderPolicy, + rsvpSenderAdspecBreak, rsvpSenderAdspecHopCount, + rsvpSenderAdspecPathBw, rsvpSenderAdspecMinLatency, + rsvpSenderAdspecMtu, rsvpSenderAdspecGuaranteedSvc, + rsvpSenderAdspecGuaranteedBreak, + rsvpSenderAdspecGuaranteedCtot, + rsvpSenderAdspecGuaranteedDtot, + rsvpSenderAdspecGuaranteedCsum, + rsvpSenderAdspecGuaranteedDsum, + rsvpSenderAdspecGuaranteedHopCount, + rsvpSenderAdspecGuaranteedPathBw, + rsvpSenderAdspecGuaranteedMinLatency, + rsvpSenderAdspecGuaranteedMtu, rsvpSenderAdspecCtrlLoadSvc, + rsvpSenderAdspecCtrlLoadBreak, + rsvpSenderAdspecCtrlLoadHopCount, + rsvpSenderAdspecCtrlLoadPathBw, + rsvpSenderAdspecCtrlLoadMinLatency, + rsvpSenderAdspecCtrlLoadMtu, rsvpSenderNewIndex + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 2 } + + + rsvpResvGroup OBJECT-GROUP + OBJECTS { + rsvpResvType, rsvpResvDestAddr, rsvpResvSenderAddr, + rsvpResvDestAddrLength, rsvpResvSenderAddrLength, + rsvpResvProtocol, rsvpResvDestPort, rsvpResvPort, + rsvpResvHopAddr, rsvpResvHopLih, rsvpResvInterface, + rsvpResvService, rsvpResvTSpecRate, rsvpResvTSpecBurst, + rsvpResvTSpecPeakRate, rsvpResvTSpecMinTU, + rsvpResvTSpecMaxTU, rsvpResvRSpecRate, + rsvpResvRSpecSlack, rsvpResvInterval, + rsvpResvScope, rsvpResvShared, rsvpResvExplicit, + rsvpResvRSVPHop, rsvpResvLastChange, rsvpResvPolicy, + rsvpResvStatus, rsvpResvNewIndex + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 3 } + + + rsvpResvFwdGroup OBJECT-GROUP + OBJECTS { + rsvpResvFwdType, rsvpResvFwdDestAddr, rsvpResvFwdSenderAddr, + rsvpResvFwdDestAddrLength, rsvpResvFwdSenderAddrLength, + rsvpResvFwdProtocol, rsvpResvFwdDestPort, rsvpResvFwdPort, + rsvpResvFwdHopAddr, rsvpResvFwdHopLih, rsvpResvFwdInterface, + rsvpResvFwdNewIndex, rsvpResvFwdService, + rsvpResvFwdTSpecPeakRate, rsvpResvFwdTSpecMinTU, + rsvpResvFwdTSpecMaxTU, rsvpResvFwdTSpecRate, + rsvpResvFwdTSpecBurst, rsvpResvFwdRSpecRate, + rsvpResvFwdRSpecSlack, rsvpResvFwdInterval, + rsvpResvFwdScope, rsvpResvFwdShared, rsvpResvFwdExplicit, + rsvpResvFwdRSVPHop, rsvpResvFwdLastChange, + rsvpResvFwdPolicy, rsvpResvFwdStatus + } + STATUS current + DESCRIPTION + "These objects are optional, used for some RSVP + Systems." + ::= { rsvpGroups 4 } + + + rsvpIfGroup OBJECT-GROUP + OBJECTS { + rsvpIfUdpNbrs, rsvpIfIpNbrs, rsvpIfNbrs, rsvpIfEnabled, + rsvpIfUdpRequired, rsvpIfRefreshBlockadeMultiple, + rsvpIfRefreshMultiple, rsvpIfRefreshInterval, rsvpIfTTL, + rsvpIfRouteDelay, rsvpIfStatus + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 6 } + + + rsvpNbrGroup OBJECT-GROUP + OBJECTS { + rsvpNbrProtocol, rsvpNbrStatus + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 7 } + + + rsvpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { newFlow, lostFlow } + STATUS current + DESCRIPTION + "This notification is required for Systems sup- + porting the RSVP Policy Module using an SNMP + interface to the Policy Manager." + ::= { rsvpGroups 8 } +END diff --git a/mibs/ietf/RTP-MIB b/mibs/ietf/RTP-MIB new file mode 100644 index 0000000..ea6668f --- /dev/null +++ b/mibs/ietf/RTP-MIB @@ -0,0 +1,1012 @@ +RTP-MIB DEFINITIONS ::= BEGIN +IMPORTS + Counter32, Counter64, Gauge32, mib-2, Integer32, + MODULE-IDENTITY, + OBJECT-TYPE, Unsigned32 FROM SNMPv2-SMI + RowStatus, TAddress, + TDomain, TestAndIncr, + TimeStamp, TruthValue FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF + Utf8String FROM SYSAPPL-MIB + InterfaceIndex FROM IF-MIB; + +rtpMIB MODULE-IDENTITY + LAST-UPDATED "200010020000Z" -- 2 October 2000 + ORGANIZATION + "IETF AVT Working Group + Email: rem-conf@es.net" + CONTACT-INFO + "Mark Baugher + Postal: Intel Corporation + 2111 NE 25th Avenue + Hillsboro, OR 97124 + + + United States + Tel: +1 503 466 8406 + Email: mbaugher@passedge.com + + Bill Strahm + Postal: Intel Corporation + 2111 NE 25th Avenue + Hillsboro, OR 97124 + United States + Tel: +1 503 264 4632 + Email: bill.strahm@intel.com + + Irina Suconick + Postal: Ennovate Networks + 60 Codman Hill Rd., + Boxboro, Ma 01719 + Tel: +1 781-505-2155 + Email: irina@ennovatenetworks.com" + + DESCRIPTION + "The managed objects of RTP systems. The MIB is + structured around three types of information. + 1. General information about RTP sessions such + as the session address. + 2. Information about RTP streams being sent to + an RTP session by a particular sender. + 3. Information about RTP streams received on an + RTP session by a particular receiver from a + particular sender. + There are two types of RTP Systems, RTP hosts and + RTP monitors. As described below, certain objects + are unique to a particular type of RTP System. An + RTP host may also function as an RTP monitor. + Refer to RFC 1889, 'RTP: A Transport Protocol for + Real-Time Applications,' section 3.0, for definitions." + REVISION "200010020000Z" -- 2 October 2000 + DESCRIPTION "Initial version of this MIB. + Published as RFC 2959." + +::= { mib-2 87 } + +-- +-- OBJECTS +-- +rtpMIBObjects OBJECT IDENTIFIER ::= { rtpMIB 1 } +rtpConformance OBJECT IDENTIFIER ::= { rtpMIB 2 } + +-- + + +-- SESSION NEW INDEX +-- +rtpSessionNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to rtpSessionIndex + as described in 'Textual Conventions for SMIv2'. For an RTP + system that supports the creation of rows, the network manager + would read the object, and then write the value back in + the Set that creates a new instance of rtpSessionEntry. If + the Set fails with the code 'inconsistentValue,' then the + process must be repeated; If the Set succeeds, then the object + is incremented, and the new instance is created according to + the manager's directions. However, if the RTP agent is not + acting as a monitor, only the RTP agent may create conceptual + rows in the RTP session table." + ::= { rtpMIBObjects 1 } + +-- +-- SESSION INVERSE TABLE +-- +rtpSessionInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSessionInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpSessionDomain, rtpSessionRemAddr, and rtpSessionLocAddr + TAddress pairs to one or more rtpSessionIndex values, each + describing a row in the rtpSessionTable. This makes it possible + to retrieve the row(s) in the rtpSessionTable corresponding to a + given session without having to walk the entire (potentially + large) table." + ::= { rtpMIBObjects 2 } + +rtpSessionInverseEntry OBJECT-TYPE + SYNTAX RtpSessionInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpSessionTable - the entry containing the tuple, + rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr + and rtpSessionIndex." + INDEX { rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr, + rtpSessionIndex } + ::= { rtpSessionInverseTable 1 } + + +RtpSessionInverseEntry ::= SEQUENCE { + rtpSessionInverseStartTime TimeStamp + } + +rtpSessionInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSessionInverseEntry 1 } + +-- +-- SESSION TABLE +-- +rtpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There's one entry in rtpSessionTable for each RTP session + on which packets are being sent, received, and/or + monitored." + ::= { rtpMIBObjects 3 } + +rtpSessionEntry OBJECT-TYPE + SYNTAX RtpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Data in rtpSessionTable uniquely identify an RTP session. A + host RTP agent MUST create a read-only row for each session to + which packets are being sent or received. Rows MUST be created + by the RTP Agent at the start of a session when one or more + senders or receivers are observed. Rows created by an RTP agent + MUST be deleted when the session is over and there are no + rtpRcvrEntry and no rtpSenderEntry for this session. An RTP + session SHOULD be monitored to create management information on + all RTP streams being sent or received when the + rtpSessionMonitor has the TruthValue of 'true(1)'. An RTP + monitor SHOULD permit row creation with the side effect of + causing the RTP System to join the multicast session for the + purposes of gathering management information (additional + conceptual rows are created in the rtpRcvrTable and + rtpSenderTable). Thus, rtpSessionTable rows SHOULD be created + for RTP session monitoring purposes. Rows created by a + management application SHOULD be deleted via SNMP operations by + + + management applications. Rows created by management operations + are deleted by management operations by setting + rtpSessionRowStatus to 'destroy(6)'." + INDEX { rtpSessionIndex } + ::= { rtpSessionTable 1 } + +RtpSessionEntry ::= SEQUENCE { + rtpSessionIndex Integer32, + rtpSessionDomain TDomain, + rtpSessionRemAddr TAddress, + rtpSessionLocAddr TAddress, + rtpSessionIfIndex InterfaceIndex, + rtpSessionSenderJoins Counter32, + rtpSessionReceiverJoins Counter32, + rtpSessionByes Counter32, + rtpSessionStartTime TimeStamp, + rtpSessionMonitor TruthValue, + rtpSessionRowStatus RowStatus + } + +rtpSessionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the conceptual row which is for SNMP purposes + only and has no relation to any protocol value. There is + no requirement that these rows are created or maintained + sequentially." + ::= { rtpSessionEntry 1 } + +rtpSessionDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transport-layer protocol used for sending or receiving + the stream of RTP data packets on this session. + Cannot be changed if rtpSessionRowStatus is 'active'." + ::= { rtpSessionEntry 2 } + +rtpSessionRemAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address to which RTP packets are sent by the RTP system. + In an IP multicast RTP session, this is the single address used + + + by all senders and receivers of RTP session data. In a unicast + RTP session this is the unicast address of the remote RTP system. + 'The destination address pair may be common for all participants, + as in the case of IP multicast, or may be different for each, as + in the case of individual unicast network address pairs.' See + RFC 1889, 'RTP: A Transport Protocol for Real-Time Applications,' + sec. 3. The transport service is identified by rtpSessionDomain. + For snmpUDPDomain, this is an IP address and even-numbered UDP + Port with the RTCP being sent on the next higher odd-numbered + port, see RFC 1889, sec. 5." + ::= { rtpSessionEntry 3 } + +rtpSessionLocAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address used by the RTP system. In an IP multicast + RTP session, rtpSessionRemAddr will be the same IP multicast + address as rtpSessionLocAddr. In a unicast RTP session, + rtpSessionRemAddr and rtpSessionLocAddr will have different + unicast addresses. See RFC 1889, 'RTP: A Transport Protocol for + Real-Time Applications,' sec. 3. The transport service is + identified by rtpSessionDomain. For snmpUDPDomain, this is an IP + address and even-numbered UDP Port with the RTCP being sent on + the next higher odd-numbered port, see RFC 1889, sec. 5." + ::= { rtpSessionEntry 4 } + +rtpSessionIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value is set to the corresponding value + from IF-MIB (See RFC 2233, 'The Interfaces Group MIB using + SMIv2'). This is the interface that the RTP stream is being sent + to or received from, or in the case of an RTP Monitor the + interface that RTCP packets will be received on. Cannot be + changed if rtpSessionRowStatus is 'active'." + ::= { rtpSessionEntry 5 } + +rtpSessionSenderJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of senders that have been observed to have + joined the session since this conceptual row was created + + + (rtpSessionStartTime). A sender 'joins' an RTP + session by sending to it. Senders that leave and then + re-join following an RTCP BYE (see RFC 1889, 'RTP: A + Transport Protocol for Real-Time Applications,' sec. 6.6) + or session timeout may be counted twice. Every time a new + RTP sender is detected either using RTP or RTCP, this counter + is incremented." + ::= { rtpSessionEntry 6 } + +rtpSessionReceiverJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of receivers that have been been observed to + have joined this session since this conceptual row was + created (rtpSessionStartTime). A receiver 'joins' an RTP + session by sending RTCP Receiver Reports to the session. + Receivers that leave and then re-join following an RTCP BYE + (see RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications,' sec. 6.6) or session timeout may be counted + twice." + ::= { rtpSessionEntry 7 } + +rtpSessionByes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of RTCP BYE (see RFC 1889, 'RTP: A Transport + Protocol for Real-Time Applications,' sec. 6.6) messages + received by this entity." + ::= { rtpSessionEntry 8 } + +rtpSessionStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSessionEntry 9 } + +rtpSessionMonitor OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Boolean, Set to 'true(1)' if remote senders or receivers in + addition to the local RTP System are to be monitored using RTCP. + RTP Monitors MUST initialize to 'true(1)' and RTP Hosts SHOULD + initialize this 'false(2)'. Note that because 'host monitor' + systems are receiving RTCP from their remote participants they + MUST set this value to 'true(1)'." + ::= { rtpSessionEntry 10 } + +rtpSessionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Value of 'active' when RTP or RTCP messages are being + sent or received by an RTP System. A newly-created + conceptual row must have the all read-create objects + initialized before becoming 'active'. + A conceptual row that is in the 'notReady' or 'notInService' + state MAY be removed after 5 minutes." + ::= { rtpSessionEntry 11 } + +-- +-- SENDER INVERSE TABLE +-- +rtpSenderInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSenderInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpSenderAddr, rtpSessionIndex, to the rtpSenderSSRC + index of the rtpSenderTable. This table allows management + applications to find entries sorted by rtpSenderAddr rather than + sorted by rtpSessionIndex. Given the rtpSessionDomain and + rtpSenderAddr, a set of rtpSessionIndex and rtpSenderSSRC values + can be returned from a tree walk. When rtpSessionIndex is + specified in the SNMP Get-Next operations, one or more + rtpSenderSSRC values may be returned." + ::= { rtpMIBObjects 4 } + +rtpSenderInverseEntry OBJECT-TYPE + SYNTAX RtpSenderInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpSenderTable - the entry containing the index pair, + rtpSessionIndex, rtpSenderSSRC." + INDEX { rtpSessionDomain, rtpSenderAddr, rtpSessionIndex, + + + rtpSenderSSRC } + ::= { rtpSenderInverseTable 1 } + +RtpSenderInverseEntry ::= SEQUENCE { + rtpSenderInverseStartTime TimeStamp + } + +rtpSenderInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSenderInverseEntry 1 } + +-- +-- SENDERS TABLE +-- +rtpSenderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about a sender or senders to an RTP + Session. RTP sending hosts MUST have an entry in this table + for each stream being sent. RTP receiving hosts MAY have an + entry in this table for each sending stream being received by + this host. RTP monitors MUST create an entry for each observed + sender to a multicast RTP Session as a side-effect when a + conceptual row in the rtpSessionTable is made 'active' by a + manager." + ::= { rtpMIBObjects 5 } + +rtpSenderEntry OBJECT-TYPE + SYNTAX RtpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RTP Sender + Synchronization Source (SSRC, see RFC 1889 'RTP: A Transport + Protocol for Real-Time Applications' sec.6). The session is + identified to the the SNMP entity by rtpSessionIndex. + Rows are removed by the RTP agent when a BYE is received + from the sender or when the sender times out (see RFC + 1889, Sec. 6.2.1) or when the rtpSessionEntry is deleted." + INDEX { rtpSessionIndex, rtpSenderSSRC } + ::= { rtpSenderTable 1 } + + +RtpSenderEntry ::= SEQUENCE { + rtpSenderSSRC Unsigned32, + rtpSenderCNAME Utf8String, + rtpSenderAddr TAddress, + rtpSenderPackets Counter64, + rtpSenderOctets Counter64, + rtpSenderTool Utf8String, + rtpSenderSRs Counter32, + rtpSenderSRTime TimeStamp, + rtpSenderPT INTEGER, + rtpSenderStartTime TimeStamp + } + +rtpSenderSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + sender. The RTP session address plus an SSRC uniquely + identify a sender to an RTP session (see RFC 1889, 'RTP: A + Transport Protocol for Real-Time Applications' sec.3)." + ::= { rtpSenderEntry 1 } + +rtpSenderCNAME OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP canonical name of the sender." + ::= { rtpSenderEntry 2 } + +rtpSenderAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unicast transport source address of the sender. In the + case of an RTP Monitor this address is the address that the + sender is using to send its RTCP Sender Reports." + ::= { rtpSenderEntry 3 } + +rtpSenderPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RTP packets sent by this sender, or observed by + + + an RTP monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 4 } + +rtpSenderOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of non-header RTP octets sent by this sender, or observed + by an RTP monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 5 } + +rtpSenderTool OBJECT-TYPE + SYNTAX Utf8String (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the application program source of the stream." + ::= { rtpSenderEntry 6 } + +rtpSenderSRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of RTCP Sender Reports that have + been sent from this sender, or observed if the RTP entity + is a monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 7 } + +rtpSenderSRTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "rtpSenderSRTime is the value of SysUpTime at the time that + the last SR was received from this sender, in the case of a + monitor or receiving host. Or sent by this sender, in the + case of a sending host." + ::= { rtpSenderEntry 8 } + +rtpSenderPT OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Payload type from the RTP header of the most recently received + RTP Packet (see RFC 1889, 'RTP: A Transport Protocol for + + + Real-Time Applications' sec. 5)." + ::= { rtpSenderEntry 9 } + +rtpSenderStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSenderEntry 10 } + +-- +-- RECEIVER INVERSE TABLE +-- +rtpRcvrInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpRcvrInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpRcvrAddr and rtpSessionIndex to the rtpRcvrSRCSSRC and + rtpRcvrSSRC indexes of the rtpRcvrTable. This table allows + management applications to find entries sorted by rtpRcvrAddr + rather than by rtpSessionIndex. Given rtpSessionDomain and + rtpRcvrAddr, a set of rtpSessionIndex, rtpRcvrSRCSSRC, and + rtpRcvrSSRC values can be returned from a tree walk. When + rtpSessionIndex is specified in SNMP Get-Next operations, one or + more rtpRcvrSRCSSRC and rtpRcvrSSRC pairs may be returned." + ::= { rtpMIBObjects 6 } + +rtpRcvrInverseEntry OBJECT-TYPE + SYNTAX RtpRcvrInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpRcvrTable - the entry containing the index pair, + rtpSessionIndex, rtpRcvrSSRC." + INDEX { rtpSessionDomain, rtpRcvrAddr, rtpSessionIndex, + rtpRcvrSRCSSRC, rtpRcvrSSRC } + ::= { rtpRcvrInverseTable 1 } + +RtpRcvrInverseEntry ::= SEQUENCE { + rtpRcvrInverseStartTime TimeStamp + } + +rtpRcvrInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpRcvrInverseEntry 1 } + +-- +-- RECEIVERS TABLE +-- +rtpRcvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpRcvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about a receiver or receivers of RTP + session data. RTP hosts that receive RTP session packets + MUST create an entry in this table for that receiver/sender + pair. RTP hosts that send RTP session packets MAY create + an entry in this table for each receiver to their stream + using RTCP feedback from the RTP group. RTP monitors + create an entry for each observed RTP session receiver as + a side effect when a conceptual row in the rtpSessionTable + is made 'active' by a manager." + ::= { rtpMIBObjects 7 } + +rtpRcvrEntry OBJECT-TYPE + SYNTAX RtpRcvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RTP + Synchronization Source that is receiving packets from the + sender identified by rtpRcvrSRCSSRC (SSRC, see RFC 1889, + 'RTP: A Transport Protocol for Real-Time Applications' + sec.6). The session is identified to the the RTP Agent entity + by rtpSessionIndex. Rows are removed by the RTP agent when + a BYE is received from the sender or when the sender times + out (see RFC 1889, Sec. 6.2.1) or when the rtpSessionEntry is + deleted." + INDEX { rtpSessionIndex, rtpRcvrSRCSSRC, rtpRcvrSSRC } + ::= { rtpRcvrTable 1 } + +RtpRcvrEntry ::= SEQUENCE { + rtpRcvrSRCSSRC Unsigned32, + rtpRcvrSSRC Unsigned32, + rtpRcvrCNAME Utf8String, + rtpRcvrAddr TAddress, + + + rtpRcvrRTT Gauge32, + rtpRcvrLostPackets Counter64, + rtpRcvrJitter Gauge32, + rtpRcvrTool Utf8String, + rtpRcvrRRs Counter32, + rtpRcvrRRTime TimeStamp, + rtpRcvrPT INTEGER, + rtpRcvrPackets Counter64, + rtpRcvrOctets Counter64, + rtpRcvrStartTime TimeStamp + } + +rtpRcvrSRCSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + sender. The RTP session address plus an SSRC uniquely + identify a sender or receiver of an RTP stream (see RFC + 1889, 'RTP: A Transport Protocol for Real-Time + Applications' sec.3)." + ::= { rtpRcvrEntry 1 } + +rtpRcvrSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + receiver. The RTP session address plus an SSRC uniquely + identify a receiver of an RTP stream (see RFC 1889, 'RTP: + A Transport Protocol for Real-Time Applications' sec.3)." + ::= { rtpRcvrEntry 2 } + +rtpRcvrCNAME OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP canonical name of the receiver." + ::= { rtpRcvrEntry 3 } + +rtpRcvrAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The unicast transport address on which the receiver is + receiving RTP packets and/or RTCP Receiver Reports." + ::= { rtpRcvrEntry 4 } + +rtpRcvrRTT OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round trip time measurement taken by the source of the + RTP stream based on the algorithm described on sec. 6 of + RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications.' This algorithm can produce meaningful + results when the RTP agent has the same clock as the stream + sender (when the RTP monitor is also the sending host for the + particular receiver). Otherwise, the entity should return + 'noSuchInstance' in response to queries against rtpRcvrRTT." + ::= { rtpRcvrEntry 5 } + +rtpRcvrLostPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of RTP packets lost as observed by this receiver + since rtpRcvrStartTime." + ::= { rtpRcvrEntry 6 } + +rtpRcvrJitter OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of delay variation as observed by this + receiver. (see RFC 1889, 'RTP: A Transport Protocol + for Real-Time Applications' sec.6.3.1 and A.8)." + ::= { rtpRcvrEntry 7 } + +rtpRcvrTool OBJECT-TYPE + SYNTAX Utf8String (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the application program source of the stream." + ::= { rtpRcvrEntry 8 } + +rtpRcvrRRs OBJECT-TYPE + SYNTAX Counter32 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of RTCP Receiver Reports that have + been sent from this receiver, or observed if the RTP entity + is a monitor, since rtpRcvrStartTime." + ::= { rtpRcvrEntry 9 } + +rtpRcvrRRTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "rtpRcvrRRTime is the value of SysUpTime at the time that the + last RTCP Receiver Report was received from this receiver, in + the case of a monitor or RR receiver (the RTP Sender). It is + the value of SysUpTime at the time that the last RR was sent by + this receiver in the case of an RTP receiver sending the RR." + ::= { rtpRcvrEntry 10 } + +rtpRcvrPT OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Static or dynamic payload type from the RTP header (see + RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications' sec. 5)." + ::= { rtpRcvrEntry 11 } + +rtpRcvrPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RTP packets received by this RTP host receiver + since rtpRcvrStartTime." + ::= { rtpRcvrEntry 12 } + +rtpRcvrOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of non-header RTP octets received by this receiving RTP + host since rtpRcvrStartTime." + ::= { rtpRcvrEntry 13 } + + + +rtpRcvrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpRcvrEntry 14 } + +-- +-- MODULE GROUPS +-- +-- +-- There are two types of RTP Systems, RTP hosts and RTP Monitors. +-- Thus there are three kinds of objects: 1) Objects common to both +-- kinds of systems, 2) Objects unique to RTP Hosts and 3) Objects +-- unique to RTP Monitors. There is a fourth group, 4) Objects that +-- SHOULD be implemented by Multicast hosts and RTP Monitors + +rtpGroups OBJECT IDENTIFIER ::= { rtpConformance 1 } +rtpSystemGroup OBJECT-GROUP + OBJECTS { + rtpSessionDomain, + rtpSessionRemAddr, + rtpSessionIfIndex, + rtpSessionSenderJoins, + rtpSessionReceiverJoins, + rtpSessionStartTime, + rtpSessionByes, + rtpSessionMonitor, + rtpSenderCNAME, + rtpSenderAddr, + rtpSenderPackets, + rtpSenderOctets, + rtpSenderTool, + rtpSenderSRs, + rtpSenderSRTime, + rtpSenderStartTime, + rtpRcvrCNAME, + rtpRcvrAddr, + rtpRcvrLostPackets, + rtpRcvrJitter, + rtpRcvrTool, + rtpRcvrRRs, + rtpRcvrRRTime, + rtpRcvrStartTime + } + STATUS current + + + DESCRIPTION + "Objects available to all RTP Systems." + ::= { rtpGroups 1 } + +rtpHostGroup OBJECT-GROUP + OBJECTS { + rtpSessionLocAddr, + rtpSenderPT, + rtpRcvrPT, + rtpRcvrRTT, + rtpRcvrOctets, + rtpRcvrPackets + } + STATUS current + DESCRIPTION + "Objects that are available to RTP Host systems, but may not + be available to RTP Monitor systems." + ::= { rtpGroups 2 } + +rtpMonitorGroup OBJECT-GROUP + OBJECTS { + rtpSessionNewIndex, + rtpSessionRowStatus + } + STATUS current + DESCRIPTION + "Objects used to create rows in the RTP Session Table. These + objects are not needed if the system does not create rows." + ::= { rtpGroups 3 } + +rtpInverseGroup OBJECT-GROUP + OBJECTS { + rtpSessionInverseStartTime, + rtpSenderInverseStartTime, + rtpRcvrInverseStartTime + } + STATUS current + DESCRIPTION + "Objects used in the Inverse Lookup Tables." + ::= { rtpGroups 4 } + +-- +-- Compliance +-- +rtpCompliances OBJECT IDENTIFIER ::= { rtpConformance 2 } + +rtpHostCompliance MODULE-COMPLIANCE + STATUS current + + + DESCRIPTION + "Host implementations MUST comply." + MODULE RTP-MIB + MANDATORY-GROUPS { + rtpSystemGroup, + rtpHostGroup + } + GROUP rtpMonitorGroup + DESCRIPTION + "Host systems my optionally support row creation and deletion. + This would allow an RTP Host system to act as an RTP Monitor." + GROUP rtpInverseGroup + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSessionNewIndex + MIN-ACCESS not-accessible + DESCRIPTION + "RTP system implementations support of + row creation and deletion is OPTIONAL so + implementation of this object is OPTIONAL." + OBJECT rtpSessionDomain + MIN-ACCESS read-only + DESCRIPTION + "RTP system implementation support of + row creation and deletion is OPTIONAL. When + it is not supported so write access is + OPTIONAL." + OBJECT rtpSessionRemAddr + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionRowStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + + + OBJECT rtpSenderInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpRcvrInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + ::= { rtpCompliances 1 } + +rtpMonitorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Monitor implementations must comply. RTP Monitors are not + required to support creation or deletion." + MODULE RTP-MIB + MANDATORY-GROUPS { + rtpSystemGroup, + rtpMonitorGroup + } + GROUP rtpHostGroup + DESCRIPTION + "Monitor implementations may not have access to values in the + rtpHostGroup." + GROUP rtpInverseGroup + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSessionLocAddr + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor sourcing of RTP or RTCP data packets + is OPTIONAL and implementation of this object is + OPTIONAL." + OBJECT rtpRcvrPT + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may not support + retrieval of the RTP Payload Type from the RTP + header (and may receive RTCP messages only). When + queried for the payload type information" + OBJECT rtpSenderPT + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may not support + retrieval of the RTP Payload Type from the RTP + + + header (and may receive RTCP messages only). When + queried for the payload type information." + OBJECT rtpRcvrOctets + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may receive only the RTCP messages + and not the RTP messages that contain the octet count + of the RTP message. Thus implementation of this + object is OPTIONAL" + OBJECT rtpRcvrPackets + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may receive only the RTCP messages + and not the RTP messages that contain the octet count + of the RTP message. Thus implementation of this + object is OPTIONAL." + OBJECT rtpSessionIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSenderInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpRcvrInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + ::= { rtpCompliances 2 } +END diff --git a/mibs/ietf/SCSI-MIB b/mibs/ietf/SCSI-MIB new file mode 100644 index 0000000..81d0e72 --- /dev/null +++ b/mibs/ietf/SCSI-MIB @@ -0,0 +1,2930 @@ +SCSI-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Integer32, Unsigned32, Counter32, + Counter64, Gauge32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TimeStamp, TruthValue, + RowStatus, RowPointer, AutonomousType, + StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +scsiMIB MODULE-IDENTITY + LAST-UPDATED "200603300000Z" -- 30th March 2006 + ORGANIZATION "IETF" + CONTACT-INFO " + Michele Hallak-Stamler + + + + Sanrad Intelligent Network + 27 Habarzel Street + Tel Aviv, Israel + Phone: +972 3 7674809 + E-mail: michele@sanrad.com + + Yaron Lederman + Siliquent Technologies Ltd. + 21 Etzel Street + Ramat Gan, Israel + Phone: +972 54 5308833 + E-mail: yaronled@bezeqint.net + + Mark Bakke + Postal: Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + E-mail: mbakke@cisco.com + + Marjorie Krueger + Postal: Hewlett-Packard + 8000 Foothills Blvd. + Roseville, CA 95747 + E-mail: marjorie_krueger@hp.com + + Keith McCloghrie + Cisco Systems, Inc. + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408 526-5260 + E-mail: kzm@cisco.com + + " + DESCRIPTION + "The SCSI MIB Module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4455; see the RFC + itself for full legal notices." + + -- Revision History + + REVISION "200603300000Z" + DESCRIPTION " Initial version published as RFC 4455." +::= { mib-2 139} + +--****************** Textual Conventions ************************** +ScsiLUN ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This textual convention represents a SCSI Logical Unit + Number (LUN). The format of a LUN is documented in Tables + A.2 and A.3 of SAM-2 [SAM2]." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE ( 2 | 8)) + +ScsiIndexValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An arbitrary integer value, greater than zero, for use + as a unique index value." + SYNTAX Unsigned32 (1..4294967295) + +ScsiPortIndexValueOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the ScsiIndexValue + convention. The latter defines a greater than zero value used + to identify an index. This extension permits the additional + value of zero and is applicable only to indices of SCSI port. + Usage of the zero is object-specific and must therefore be + defined as part of the description of any object that uses + this syntax. Examples of the usage of zero might include + situations where the index was unknown, or when none or all + indices need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +ScsiIndexValueOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the ScsiIndexValue + convention. The latter defines a greater than zero value used + to identify an index. This extension permits the additional + value of zero. Usage of the zero is object-specific and must + therefore be defined as part of the description of any object + that uses this syntax. Examples of the usage of zero might + include situations where index was unknown, or when none or + all indices need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +ScsiIdentifier ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This textual convention represents a generic SCSI port + identifier. + The format depends on the transport used and is documented + in Tables A.2 and A.3 of SAM-2 [SAM2]." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0..262)) + +ScsiName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents the name of a SCSI + initiator device, a SCSI target device, a SCSI initiator port + or a SCSI target port. + The format depends on the transport used and is documented + in Tables A.4 and A.5 of SAM-2 [SAM2]. + Every object defined using this syntax must define whether it + is + a) always used for a port, + b) always used for a device, or + c) the circumstances under which it is used for a port or + device." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0..262)) + +ScsiLuNameOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents either the name of a SCSI + logical unit or a zero-length string. Objects defined with + this syntax must specify the meaning of the zero-length + string. + The format of the name of a LU is defined as: + - a zero-length octet string or + - a string of eight bytes." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0 | 8)) + + + +ScsiDeviceOrPort ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This type specifies whether a particular configuration is + applicable to a port or to a device." + SYNTAX INTEGER { + device(1), + port(2), + other(3) + } + +ScsiIdCodeSet ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies the code set for the + identifier contained in an Identification Descriptor returned + in a logical unit's Device Identification Page, and is + formatted as defined in T10 SPC-2 (see REFERENCE) Table 172 - + Code Set" + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..15) + +ScsiIdAssociation ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies what the identifier is + associated with (e.g., with the addressed physical/logical + device or with a particular port) for the identifier + contained in an Identification Descriptor returned in a + logical unit's Device Identification Page, and is + formatted as defined in T10 SPC-2 (see REFERENCE) + Table 173 - Association." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..3) + +ScsiIdType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies the type for the identifier + contained in an Identification Descriptor returned in a + + + + logical unit's Device Identification Page, and is formatted + as defined in T10 SPC-2 (see REFERENCE) table 174 - Identifier + Type." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..15) + +ScsiIdValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents an identifier. The objects + of type ScsiIdCodeSet, ScsiIdAssociation, ScsiIdType define + together the format. + The format is the same as contained in an Identification + Descriptor returned in a logical unit's Device Identification + Page, and is formatted as defined in T10 SPC-2 + (see REFERENCE)." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX OCTET STRING (SIZE (0..255)) + +ScsiHrSWInstalledIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The index value for a software module's row in the Host + Resources MIBs hrSWInstalledTable. A zero value indicates + that no row in the hrSWInstalledTable is applicable." + REFERENCE + "hrSWInstalledTable is defined in the Host Resources MIB, + [RFC2790]." + SYNTAX Integer32 (0..2147483647) + + +--****************** Structure of the MIB ************************** +scsiNotifications OBJECT IDENTIFIER ::= { scsiMIB 0 } +scsiAdmin OBJECT IDENTIFIER ::= { scsiMIB 1 } +scsiObjects OBJECT IDENTIFIER ::= { scsiMIB 2 } +scsiConformance OBJECT IDENTIFIER ::= { scsiMIB 3 } + +scsiTransportTypes OBJECT IDENTIFIER ::= { scsiAdmin 1 } +scsiGeneral OBJECT IDENTIFIER ::= { scsiObjects 1 } +scsiInitiatorDevice OBJECT IDENTIFIER ::= { scsiObjects 2 } +scsiTargetDevice OBJECT IDENTIFIER ::= { scsiObjects 3 } + + + +scsiLogicalUnit OBJECT IDENTIFIER ::= { scsiObjects 4 } + +--****************** Transport Types ******************************* +-- The following object identifiers allow determining the different +-- transports (service delivery subsystems) in use under the SCSI +-- layer. + +scsiTransportOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a transport that has no identity; it + might happen because the transport is unknown or might not + have been defined when this MIB module was created." +::= { scsiTransportTypes 1 } + +scsiTransportSPI OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a parallel SCSI transport." + REFERENCE + "T10 - SCSI Parallel Interface - 4 (SPI-4) + - ANSI INCITS 362-2002 [SPI4]" +::= { scsiTransportTypes 2 } + +scsiTransportFCP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a Fibre Channel Protocol for SCSI, + Second Version." + REFERENCE + "T10 - SCSI Fibre Channel Protocol - 2 (FCP-2) + - ANSI INCITS 350-2003 [FCP2]" +::= { scsiTransportTypes 3 } + +scsiTransportSRP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a protocol for transporting SCSI over + Remote Direct Memory Access (RDMA) interfaces, e.g., InfiniBand + (tm)." + REFERENCE + "T10 - SCSI RDMA Protocol (SRP) + - ANSI INCITS 365-2002 [SRP]." +::= { scsiTransportTypes 4 } + +scsiTransportISCSI OBJECT-IDENTITY + STATUS current + DESCRIPTION + + + + "This identity identifies an iSCSI transport." + REFERENCE + "IETF IPS WG - Internet Small Computer Systems Interface + (iSCSI) [RFC3720] " +::= { scsiTransportTypes 5 } + +scsiTransportSBP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies the Serial Bus Protocol 3." + REFERENCE + "T10 - Serial Bus Protocol 3 (SBP-3) + - ANSI INCITS 375-2004 [SBP3]." +::= { scsiTransportTypes 6 } + +scsiTransportSAS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies the Serial Attach SCSI Protocol." + REFERENCE + "T10 - Serial Attached SCSI - 1.1 (SAS - 1.1) + - #1601-D Rev-10 [SAS-1.1]." +::= { scsiTransportTypes 7 } + +--****************** Instance Table ***************************** +scsiInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI instances present on the system. + The SCSI instance is the top-level entity, to which everything + else belongs. An SNMP agent could represent more than one + instance if it represents either a stack of devices, or virtual + partitions of a larger device, or a host running multiple SCSI + implementations from different vendors." +::= { scsiGeneral 1 } + +scsiInstanceEntry OBJECT-TYPE + SYNTAX ScsiInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI instance." + INDEX { scsiInstIndex } +::= { scsiInstanceTable 1 } + + + + +ScsiInstanceEntry ::= SEQUENCE { + scsiInstIndex ScsiIndexValue, + scsiInstAlias SnmpAdminString, + scsiInstSoftwareIndex ScsiHrSWInstalledIndexOrZero, + scsiInstVendorVersion SnmpAdminString, + scsiInstScsiNotificationsEnable TruthValue, + scsiInstStorageType StorageType +} + +scsiInstIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular SCSI instance." +::= { scsiInstanceEntry 1 } + +scsiInstAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object represents an administrative string, configured by + the administrator. It can be a zero-length string." +::= { scsiInstanceEntry 2 } + +scsiInstSoftwareIndex OBJECT-TYPE + SYNTAX ScsiHrSWInstalledIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to an installed + software module, then this object's value is the value of the + hrSWInstalledIndex of that module. If there is no + correspondence to an installed software module (or no module + that has an hrSWInstalledIndex value), then the value of this + object is zero." + REFERENCE + "hrSWInstalledIndex is defined in the Host Resources MIB, + [RFC2790]." +::= { scsiInstanceEntry 3 } + +scsiInstVendorVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object represents a text string set by the manufacturer + describing the version of this instance. The format of this + string is determined solely by the manufacturer and is for + informational purposes only. It is unrelated to the SCSI + specification version numbers." +::= { scsiInstanceEntry 4 } + +scsiInstScsiNotificationsEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether notifications defined in this + MIB module will be generated." + DEFVAL { true } +::= { scsiInstanceEntry 5 } + +scsiInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the memory realization for + this SCSI entity. + Specifically, each row in the following tables: + + scsiIntrDevTable + scsiDscTgtTable + scsiAuthorizedIntrTable + scsiLunMapTable + + has a StorageType as specified by the instance of + this object that is INDEXed by the same value of + scsiInstIndex. + This value of this object is also used to indicate + the persistence across reboots of writable values in + its row of the scsiInstanceTable. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row, + nor to any object belonging to a table whose entry is + INDEXed by the same value of scsiInstIndex." + DEFVAL { nonVolatile } +::= { scsiInstanceEntry 6 } + + +--******************** Device Table ******************************** +scsiDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDeviceEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI devices contained in each of the SCSI manageable + instances that this agent is reporting." +::= { scsiGeneral 2 } + +scsiDeviceEntry OBJECT-TYPE + SYNTAX ScsiDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI device included in this SCSI manageable + instance identifiable by the value of scsiInstIndex." + INDEX {scsiInstIndex, scsiDeviceIndex} +::= { scsiDeviceTable 1 } + +ScsiDeviceEntry ::= SEQUENCE { + scsiDeviceIndex ScsiIndexValue, + scsiDeviceAlias SnmpAdminString, + scsiDeviceRole BITS, + scsiDevicePortNumber Unsigned32 +} + +scsiDeviceIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular device within a particular SCSI instance." +::= { scsiDeviceEntry 1 } + +scsiDeviceAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains an administrative name for this device. + If no name is assigned, the value of this object is the + zero-length string. + The StorageType of this object is specified by the instance + of scsiInstStorageType that is INDEXed by the same value of + scsiInstIndex." +::= { scsiDeviceEntry 2 } + +scsiDeviceRole OBJECT-TYPE + + + + SYNTAX BITS { + target(0), + initiator(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object determines whether this device is acting as a + SCSI initiator device, or as a SCSI target device, or as both." +::= { scsiDeviceEntry 3 } + +scsiDevicePortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of ports contained in this + device." +::= { scsiDeviceEntry 4 } + + +--****************** Port Table ************************************ +scsiPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI ports for each SCSI device in each instance." +::= { scsiGeneral 3 } + +scsiPortEntry OBJECT-TYPE + SYNTAX ScsiPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI port of a particular SCSI device in a + particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex } +::= { scsiPortTable 1 } + +ScsiPortEntry ::= SEQUENCE { + scsiPortIndex ScsiIndexValue, + scsiPortRole BITS, + scsiPortTransportPtr RowPointer, + scsiPortBusyStatuses Counter32 +} + + + + +scsiPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + port of a given device within a particular SCSI instance." +::= { scsiPortEntry 1 } + +scsiPortRole OBJECT-TYPE + SYNTAX BITS { + target(0), + initiator(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether this port is acting as a + SCSI initiator port, or as a SCSI target port or as both." +::= { scsiPortEntry 2 } + +scsiPortTransportPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the corresponding row in the + scsiTransportTable. This row contains information on the + transport such as transport type and port name." +::= { scsiPortEntry 3 } + +scsiPortBusyStatuses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of port busy statuses sent or + received by this port. Note: Initiator ports only receive busy + status and SCSI target ports only send busy status. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiPortEntry 4 } + + +--******************** Table of supported transports *************** +scsiTransportTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTransportEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table contains the device transport-specific information + for each transport connected to each device in + scsiDeviceTable." +::= { scsiGeneral 5 } + +scsiTransportEntry OBJECT-TYPE + SYNTAX ScsiTransportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing parameters applicable to a transport + used by a particular device of a particular SCSI manageable + instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiTransportIndex} +::= { scsiTransportTable 1 } + +ScsiTransportEntry ::= SEQUENCE { + scsiTransportIndex ScsiIndexValue, + scsiTransportType AutonomousType, + scsiTransportPointer RowPointer, + scsiTransportDevName ScsiName +} + +scsiTransportIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + transport within a given device within a particular SCSI + instance." +::= { scsiTransportEntry 1 } + +scsiTransportType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the transport type of this row of the + transport table. For example, if this object has the value + scsiTransportFCP, then the identified transport is FCP." +::= { scsiTransportEntry 2 } + +scsiTransportPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object represents a pointer to a conceptual row in a + 'transport' MIB module allowing a manager to get useful + information for the transport described by this entry. + For example, if the transport of this device is iSCSI, this + object will point to the iSCSI Instance of the iSCSI MIB + module. + If there is no MIB for this transport, this object has the + value 0.0." +::= { scsiTransportEntry 3 } + +scsiTransportDevName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of this device in one of the + format(s) appropriate for this type of transport." +::= { scsiTransportEntry 4 } + +--******************** SCSI Initiator Device Table *************** +scsiIntrDevTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiIntrDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information for each local SCSI initiator + device in each instance." +::= { scsiInitiatorDevice 1} + +scsiIntrDevEntry OBJECT-TYPE + SYNTAX ScsiIntrDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a SCSI + initiator device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex } +::= { scsiIntrDevTable 1 } + +ScsiIntrDevEntry ::= SEQUENCE { + scsiIntrDevTgtAccessMode INTEGER, + scsiIntrDevOutResets Counter32 +} + +scsiIntrDevTgtAccessMode OBJECT-TYPE + SYNTAX INTEGER { + + + + unknown(1), + autoEnable(2), + manualEnable(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls whether or not a discovered SCSI target + device is immediately authorized: + - autoEnable (2) means that when a SCSI initiator device + discovers a SCSI target device, it can use it immediately. + - manualEnable (3) means that the SCSI initiator device + must wait for an operator to set scsiIntrDscTgtConfigured + = true before it is authorized. + The StorageType of this object is specified by the instance + of scsiInstStorageType that is INDEXed by the same value of + scsiInstIndex." +::= { scsiIntrDevEntry 1 } + +scsiIntrDevOutResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the total number of times that this SCSI + initiator device has issued + - a LOGICAL UNIT RESET or TARGET RESET task management request, + or + - any other SCSI transport protocol-specific action or event + that causes a Logical Unit Reset or a Hard Reset at one or + more SCSI target ports ([SAM2] chapters 5.9.6, 5.9.7). + Discontinuities in the value of this counter can occur at re- + initialization of the management system." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 + Chapters 5.9.6 & 5.9.7 [SAM2]" +::= { scsiIntrDevEntry 2 } + + +-- The following section describes managed objects related to +-- SCSI initiator ports. + +scsiIntrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table contains all the SCSI initiator ports for each + local SCSI initiator or target/initiator devices in each SCSI + instance." +::= { scsiInitiatorDevice 2 } + +scsiIntrPortEntry OBJECT-TYPE + SYNTAX ScsiIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular SCSI initiator port of a particular SCSI device + within a SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex } +::= { scsiIntrPortTable 1 } + +ScsiIntrPortEntry ::= SEQUENCE { + scsiIntrPortName ScsiName, + scsiIntrPortIdentifier ScsiIdentifier, + scsiIntrPortOutCommands Counter32, + scsiIntrPortWrittenMegaBytes Counter32, + scsiIntrPortReadMegaBytes Counter32, + scsiIntrPortHSOutCommands Counter64 +} + +scsiIntrPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the port assigned for use + by the SCSI protocol. The format will depend on the type of + transport this port is using." +::= { scsiIntrPortEntry 1 } + + +scsiIntrPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the port in one of + the format(s) appropriate for the type of transport in use." +::= { scsiIntrPortEntry 2 } + +scsiIntrPortOutCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by this + SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 3 } + +scsiIntrPortWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes sent + by this SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 4 } + +scsiIntrPortReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes + received by this SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 5 } + +scsiIntrPortHSOutCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by this + SCSI initiator port. This object provides support for systems + that can quickly generate a large number of commands because + they run at high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 6 } + + + + + +--******************** Discovered SCSI Target Device group ******** +scsiRemoteTgtDev OBJECT IDENTIFIER ::= { scsiInitiatorDevice 3 } + +-- SCSI target device discovered or authorized to attach each of the +-- SCSI initiator ports of each SCSI initiator device of each +-- instance. + +scsiDscTgtTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscTgtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + SCSI target ports that are authorized to attach to each local + SCSI initiator port of this SCSI instance." +::= { scsiRemoteTgtDev 1 } + +scsiDscTgtEntry OBJECT-TYPE + SYNTAX ScsiDscTgtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry (row) contains information about the SCSI target + device or port to which this SCSI initiator port (or all SCSI + initiator ports in the SCSI initiator entry indexed by + scsiInstIndex, scsiDeviceIndex) will attempt to attach. The + entry is either for all local ports (if scsiDscTgtIntrPortIndex + is zero) or only for the specific SCSI initiator port + identified by scsiDscTgtIntrPortIndex. Note that if an entry in + this table is deleted, any corresponding entries in the + scsiDscLunsTable must be deleted as well. + The StorageType of a row in this table is specified by the + instance of scsiInstStorageType that is INDEXed by the same + value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex } +::= { scsiDscTgtTable 1 } + +ScsiDscTgtEntry ::= SEQUENCE { + scsiDscTgtIntrPortIndex ScsiPortIndexValueOrZero, + scsiDscTgtIndex ScsiIndexValue, + scsiDscTgtDevOrPort ScsiDeviceOrPort, + scsiDscTgtName ScsiName, + scsiDscTgtConfigured TruthValue, + scsiDscTgtDiscovered TruthValue, + scsiDscTgtInCommands Counter32, + scsiDscTgtWrittenMegaBytes Counter32, + scsiDscTgtReadMegaBytes Counter32, + + + + scsiDscTgtHSInCommands Counter64, + scsiDscTgtLastCreation TimeStamp, + scsiDscTgtRowStatus RowStatus +} + +scsiDscTgtIntrPortIndex OBJECT-TYPE + SYNTAX ScsiPortIndexValueOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object relates to a particular local device within a + particular SCSI instance and specifies + - the index of the local SCSI initiator port, + - or zero, if this entry refers to the local device and + therefore refers to all the local SCSI initiator ports." +::= { scsiDscTgtEntry 1 } + +scsiDscTgtIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular SCSI target device either discovered by, or + configured for use with, one or more ports scsiDscTgtName of + a particular device within a particular SCSI instance." +::= { scsiDscTgtEntry 2 } + +scsiDscTgtDevOrPort OBJECT-TYPE + SYNTAX ScsiDeviceOrPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether this entry describes a + configured SCSI target device name (and applies to all ports + on the identified SCSI target device) or an individual SCSI + target port." +::= { scsiDscTgtEntry 3 } + +scsiDscTgtName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the name of this configured or + discovered SCSI target device or port depending on the value + of scsiDscTgtDevOrPort." + ::= { scsiDscTgtEntry 4 } + + + +scsiDscTgtConfigured OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object means + -true(1): this entry has been configured by an administrator. + -false(2): this entry has been added from a discovery + mechanism (e.g., SendTargets, SLP, iSNS). + An administrator can modify this value from false to true." + DEFVAL { true } +::= { scsiDscTgtEntry 5 } + +scsiDscTgtDiscovered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object means + -true(1): this entry has been discovered by the SCSI instance + as result of an automatic discovery process. + -false(2):this entry has been added by manual configuration. + This entry is read-only because an administrator cannot change + it. + Note that it is an implementation decision to determine how + long to retain a row with configured=false, such as when the + SCSI target device is no longer visible/accessible to the local + SCSI initiator device." +::= { scsiDscTgtEntry 6 } + +scsiDscTgtInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received from + this SCSI target port or device. + 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 scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 7 } + +scsiDscTgtWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents the amount of megabytes of data sent as + the result of WRITE commands to this SCSI target port or device. + 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 scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 8 } + +scsiDscTgtReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of megabytes received as the + result of READ commands to this SCSI target port or device. + 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 scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 9 } + +scsiDscTgtHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + SCSI target port or device. This object provides support for + system that can quickly generate a large number of commands + because they run at high speed. + 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 scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 10 } + +scsiDscTgtLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the value of sysUpTime when this row + was created." +::= { scsiDscTgtEntry 11 } + +scsiDscTgtRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object allows an administrator to configure dynamically a + new entry in this table via SNMP or eventually delete it. + An administrator is not allowed to delete an entry for which + the value of the object scsiIntrDscTgtDiscovered is equal to + true. + Note that when an entry in this table is deleted, then any + corresponding entries in the scsiDscLunsTable must also be + automatically deleted. + + A newly created row cannot be made active until a value has + been set for scsiDscTgtName. In this case, the value of the + corresponding instance of the scsiDscTgtRowStatus column will + stay 'notReady'. + The RowStatus TC [RFC2579] requires that this DESCRIPTION + clause states under which circumstances other objects in this + row can be modified: + The value of this object has no effect on whether other objects + in this conceptual row can be modified." +::= { scsiDscTgtEntry 12 } + + +--********************** LUNs discovered *************************** +scsiDscLunTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscLunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + logical unit numbers (LUNs) discovered via each local SCSI + initiator port of each local device within a particular SCSI + instance." +::= { scsiRemoteTgtDev 2 } + +scsiDscLunEntry OBJECT-TYPE + SYNTAX ScsiDscLunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a discovered LUN at a particular + SCSI target device (scsiDscTgtIndex), where the LUN was + discovered by a particular local SCSI initiator device within a + particular SCSI instance, possibly via a particular local + SCSI initiator port. + Note that when an entry in the scsiDscTgtTable is deleted, + all corresponding entries in this table should automatically be + deleted." + + + + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex, scsiDscLunIndex } +::= { scsiDscLunTable 1 } + +ScsiDscLunEntry ::= SEQUENCE { + scsiDscLunIndex ScsiIndexValue, + scsiDscLunLun ScsiLUN +} + +scsiDscLunIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular LUN discovered by a particular SCSI initiator port + or a particular SCSI initiator device within a particular SCSI + instance. + Entries in the scsiDscLunIdTable are associated with a LUN by + having the value of this object in their INDEX." +::= { scsiDscLunEntry 1 } + +scsiDscLunLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Logical Unit Number (LUN) of the + discovered logical unit." +::= { scsiDscLunEntry 2 } + + +--******************** LU Identifiers discovered ******************* +scsiDscLunIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscLunIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the known LU identifiers of the remote + (not in the local system) logical units discovered via each + local SCSI initiator port or device of this SCSI instance." +::= { scsiRemoteTgtDev 3 } + +scsiDscLunIdEntry OBJECT-TYPE + SYNTAX ScsiDscLunIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry (row) represents the LU identifier of a discovered + LUN at a particular SCSI target device (scsiDscTgtIndex), where + the LUN was discovered by a particular local SCSI initiator + device within a particular SCSI instance, possibly via a + particular local SCSI initiator port." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex, scsiDscLunIndex, scsiDscLunIdIndex } +::= { scsiDscLunIdTable 1 } + +ScsiDscLunIdEntry ::= SEQUENCE { + scsiDscLunIdIndex ScsiIndexValue, + scsiDscLunIdCodeSet ScsiIdCodeSet, + scsiDscLunIdAssociation ScsiIdAssociation, + scsiDscLunIdType ScsiIdType, + scsiDscLunIdValue ScsiIdValue +} + +scsiDscLunIdIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular LUN identifier discovered by each SCSI initiator + device or particular SCSI initiator port within a particular + SCSI instance." +::= { scsiDscLunIdEntry 1 } + +scsiDscLunIdCodeSet OBJECT-TYPE + SYNTAX ScsiIdCodeSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the code set in use with this + identifier. The value is represented in the same format as + is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 2 } + +scsiDscLunIdAssociation OBJECT-TYPE + SYNTAX ScsiIdAssociation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object specifies what the identifier is associated with + (e.g., with the addressed physical/logical device or with a + particular port). The value is represented in the same format + as is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 3 } + +scsiDscLunIdType OBJECT-TYPE + SYNTAX ScsiIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of the identifier. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 4 } + +scsiDscLunIdValue OBJECT-TYPE + SYNTAX ScsiIdValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the actual value of this identifier. + The format is defined by the objects scsiDscLunIdCodeSet, + scsiDscLunIdAssociation, scsiDscLunIdType. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 5 } + +--***** Table of SCSI Target Device Attached to local SCSI +--***** Initiator Ports +scsiAttTgtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAttTgtPortEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + SCSI target ports that are currently attached to each local + SCSI initiator port of this SCSI instance." +::= { scsiRemoteTgtDev 4 } + +scsiAttTgtPortEntry OBJECT-TYPE + SYNTAX ScsiAttTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI target port + (scsiAttTgtPortIndex) currently attached to a particular + SCSI initiator port (scsiPortIndex) of a particular SCSI + initiator device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex, + scsiAttTgtPortIndex } +::= { scsiAttTgtPortTable 1 } + +ScsiAttTgtPortEntry ::= SEQUENCE { + scsiAttTgtPortIndex ScsiIndexValue, + scsiAttTgtPortDscTgtIdx ScsiIndexValueOrZero, + scsiAttTgtPortName ScsiName, + scsiAttTgtPortIdentifier ScsiIdentifier +} + +scsiAttTgtPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + SCSI target currently attached to a particular SCSI initiator + port of a particular SCSI initiator device within a particular + SCSI instance." +::= { scsiAttTgtPortEntry 1 } + +scsiAttTgtPortDscTgtIdx OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the scsiDscTgtIntrPortIndex + index variable for the row in the scsiDscTgtTable representing + this currently attached SCSI target port. If the currently + attached SCSI target port is not represented in the + scsiDscTgtTable, then the value of this object is zero." + + + +::= { scsiAttTgtPortEntry 2 } + +scsiAttTgtPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the name of the attached SCSI target + port." +::= { scsiAttTgtPortEntry 3 } + +scsiAttTgtPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the identifier of the attached SCSI + target port." +::= { scsiAttTgtPortEntry 4 } + +-- ***************************************************************** +-- ***** Table of SCSI Target devices +-- +scsiTgtDevTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTgtDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about each local SCSI target + device." +::= { scsiTargetDevice 1 } + +scsiTgtDevEntry OBJECT-TYPE + SYNTAX ScsiTgtDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular local SCSI target device within a particular SCSI + instance." + INDEX { scsiInstIndex, scsiDeviceIndex } +::= { scsiTgtDevTable 1 } + +ScsiTgtDevEntry ::= SEQUENCE { + scsiTgtDevNumberOfLUs Gauge32, + scsiTgtDeviceStatus INTEGER, + scsiTgtDevNonAccessibleLUs Gauge32, + scsiTgtDevResets Counter32 + + + +} + +scsiTgtDevNumberOfLUs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of logical units accessible via this + local SCSI target device." +::= { scsiTgtDevEntry 1 } + +scsiTgtDeviceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + available(2), + broken(3), + readying(4), + abnormal(5), + nonAddrFailure(6), + nonAddrFailReadying(7), + nonAddrFailAbnormal(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the status of this SCSI device, + summarizing the state of both the addressable devices (i.e., + the logical units) and the non-addressable devices within this + SCSI device: + - unknown(1): This value is used when the status cannot be + determined + - available(2): All addressable and non-addressable + devices within the SCSI device are fully operational (i.e., + no logical units have an abnormal status). + - broken(3): The SCSI device is not operational and cannot + be made operational without external intervention. + - readying(4): One or more logical units within the SCSI + device are being initialized and access to the SCSI device + is temporarily limited (i.e., one or more of the logical + units have a readying status). + - abnormal(5): One or more addressable devices within the + SCSI device are indicating a status other than available; + nevertheless, the SCSI device is operational (i.e., one or + more of the logical units have an abnormal status). + - nonAddrFailure(6): One or more non-addressable devices + within the SCSI device have failed; nevertheless, the SCSI + device is operational (i.e., no logical units have an + abnormal or readying status). + + + + - nonAddrFailReadying(7): One or more non-addressable + devices within the SCSI device have failed; nevertheless, + one or more logical units within the SCSI device are being + initialized and access to the SCSI device is temporarily + limited. + - nonAddrFailAbnormal(8): One or more non-addressable + devices within the SCSI device have failed and one or more + addressable devices within the SCSI device are indicating a + status other than available; however, the SCSI device is + operational. + " + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiTgtDevEntry 2} + +scsiTgtDevNonAccessibleLUs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of logical units existing but not + currently accessible via this local SCSI target device." +::= { scsiTgtDevEntry 3 } + +scsiTgtDevResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of hard resets encountered + by this SCSI target device. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Chapter 5.9.7 [SAM2]" +::= { scsiTgtDevEntry 4 } + + +--******************** SCSI Target Port Table ********************* +scsiTgtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the local SCSI target ports of all the + local SCSI target devices." + + + +::= { scsiTargetDevice 2 } + +scsiTgtPortEntry OBJECT-TYPE + SYNTAX ScsiTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular local SCSI target port of a particular local SCSI + target device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex} +::= { scsiTgtPortTable 1 } + +ScsiTgtPortEntry ::= SEQUENCE { + scsiTgtPortName ScsiName, + scsiTgtPortIdentifier ScsiIdentifier, + scsiTgtPortInCommands Counter32, + scsiTgtPortWrittenMegaBytes Counter32, + scsiTgtPortReadMegaBytes Counter32, + scsiTgtPortHSInCommands Counter64 +} + +scsiTgtPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the port assigned for use + in the SCSI protocol." +::= { scsiTgtPortEntry 1 } + +scsiTgtPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the port in one of + the format(s) appropriate for the type of transport." +::= { scsiTgtPortEntry 2 } + +scsiTgtPortInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + SCSI target port. + + + + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 3 } + +scsiTgtPortWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data written in megabytes + by this SCSI target port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 4 } + +scsiTgtPortReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data read in megabytes by + this SCSI target port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 5 } + +scsiTgtPortHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received. This + object provides support for systems that can quickly generate a + large number of commands because they run at high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 6 } + +scsiRemoteIntrDev OBJECT IDENTIFIER ::= { scsiTargetDevice 3 } + +-- The scsiAuthorizedIntrTable contains the list of remote initiator +-- ports that are authorized to be attached to specific SCSI target +-- ports and on which an administrator would like to keep permanent +-- information and long term statistics even when not currently +-- attached. + + + +scsiAuthorizedIntrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAuthorizedIntrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the authorized SCSI initiator devices + or ports that may attach a SCSI target device + (ScsiAuthIntrTgtPortIndex = 0) or port (ScsiAuthIntrTgtPortIndex + different than 0) of the local SCSI instance. Statistics are + kept for each such authorization; thus, the authorizations + should be configured in the manner that will cause the desired + set of statistics to be collected and that will determine the + correct LUN map." +::= { scsiRemoteIntrDev 1 } + +scsiAuthorizedIntrEntry OBJECT-TYPE + SYNTAX ScsiAuthorizedIntrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI initiator port or + remote SCSI initiator device that may attach to the local SCSI + target port or device within a particular SCSI instance. + The StorageType of a row in this table is specified by the + instance of scsiInstStorageType that is INDEXed by the same + value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiAuthIntrTgtPortIndex, + scsiAuthIntrIndex } +::= { scsiAuthorizedIntrTable 1 } + +ScsiAuthorizedIntrEntry ::= SEQUENCE { + scsiAuthIntrTgtPortIndex ScsiPortIndexValueOrZero, + scsiAuthIntrIndex ScsiIndexValue, + scsiAuthIntrDevOrPort ScsiDeviceOrPort, + scsiAuthIntrName ScsiName, + scsiAuthIntrLunMapIndex ScsiIndexValueOrZero, + scsiAuthIntrAttachedTimes Counter32, + scsiAuthIntrOutCommands Counter32, + scsiAuthIntrReadMegaBytes Counter32, + scsiAuthIntrWrittenMegaBytes Counter32, + scsiAuthIntrHSOutCommands Counter64, + scsiAuthIntrLastCreation TimeStamp, + scsiAuthIntrRowStatus RowStatus +} + + +scsiAuthIntrTgtPortIndex OBJECT-TYPE + SYNTAX ScsiPortIndexValueOrZero + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains either the index of the port or zero, to + indicate any port, on the particular local SCSI target device." +::= { scsiAuthorizedIntrEntry 1 } + +scsiAuthIntrIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a SCSI initiator device or port that is authorized to attach + to a particular local SCSI target device or port of a particular + SCSI instance." +::= { scsiAuthorizedIntrEntry 2 } + +scsiAuthIntrDevOrPort OBJECT-TYPE + SYNTAX ScsiDeviceOrPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether this entry refers to a remote + SCSI initiator port or to a SCSI initiator device. + A value of device(1) means that the authorized remote initiator + is a SCSI initiator device and includes all of its ports. + A value of port(2) means that the authorized remote initiator + is a SCSI initiator port." +::= { scsiAuthorizedIntrEntry 3 } + +scsiAuthIntrName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the name of the remote SCSI initiator + device or port authorized by this row." +::= { scsiAuthorizedIntrEntry 4 } + +scsiAuthIntrLunMapIndex OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the set of entries in the + scsiLunMapTable for which scsiLunMapIndex has the same value as + the value of this object. The identified set of entries + + + + constitutes the LUN map to be used for accessing logical units + when the remote SCSI initiator port or device corresponding to + this entry is attached to any local SCSI target port or device + corresponding to this entry. + Note that this object has a value of zero if this entry should + use the default LUN map." +::= { scsiAuthorizedIntrEntry 5 } + +scsiAuthIntrAttachedTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Times" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the number of times that this remote + SCSI initiator device or port has transitioned from unattached + to attached to this local SCSI target device or port. + 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 scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 6 } + +scsiAuthIntrOutCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the number of commands that the remote + SCSI initiator device or port corresponding to this entry has + sent to the local SCSI target device or port corresponding to + this entry. + 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 scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 7 } + +scsiAuthIntrReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the amount of data in megabytes that + the remote SCSI initiator device or port corresponding to this + entry has read from the local SCSI target device or port + corresponding to this entry. + 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 scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 8 } + +scsiAuthIntrWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the amount of data in megabytes that the + remote SCSI initiator device or port corresponding to this + entry has written to the local SCSI target device or port + corresponding to this entry. + 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 scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 9} + +scsiAuthIntrHSOutCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by the + remote SCSI initiator device or port corresponding to this + entry to the local SCSI target device or port corresponding to + this entry. This object provides support for systems that can + quickly generate a large number of commands because they run at + high speed. + 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 scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 10 } + +scsiAuthIntrLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the value of sysUpTime when this row was + last created." +::= { scsiAuthorizedIntrEntry 11 } + +scsiAuthIntrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object allows an administrator to create or delete this + entry. + A newly created row cannot be made active until a value has + been set for scsiAuthIntrName. In this case, the value of the + corresponding instance of the scsiAuthIntrRowStatus column will + stay 'notReady'. + The RowStatus TC [RFC2579] requires that this DESCRIPTION + clause states under which circumstances other objects in this + row can be modified: + The value of this object has no effect on whether other objects + in this conceptual row can be modified." +::= { scsiAuthorizedIntrEntry 12 } + + +-- Table of SCSI initiator devices or ports attached to local +-- SCSI target ports +-- + +scsiAttIntrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAttIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote SCSI initiator ports that + are currently attached to a local SCSI target port of all local + devices within all SCSI instances." +::= { scsiRemoteIntrDev 2 } + +scsiAttIntrPortEntry OBJECT-TYPE + SYNTAX ScsiAttIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI initiator port + currently attached to a particular local SCSI target port of a + particular SCSI target device of a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex, + scsiAttIntrPortIndex } +::= { scsiAttIntrPortTable 1 } + +ScsiAttIntrPortEntry ::= SEQUENCE { + scsiAttIntrPortIndex ScsiIndexValue, + scsiAttIntrPortAuthIntrIdx ScsiIndexValueOrZero, + scsiAttIntrPortName ScsiName, + scsiAttIntrPortIdentifier ScsiIdentifier +} + + + +scsiAttIntrPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular attached remote initiator port to a + particular SCSI target port within a particular SCSI target + device within a particular SCSI instance." +::= { scsiAttIntrPortEntry 1 } + +scsiAttIntrPortAuthIntrIdx OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the corresponding index in the + scsiAuthorizedIntrTable for this current attached remote + SCSI initiator device or zero if this remote attached SCSI + initiator device is not configured in that table." +::= { scsiAttIntrPortEntry 2 } + +scsiAttIntrPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the remote SCSI initiator + device attached to this local SCSI target port." +::= { scsiAttIntrPortEntry 3 } + +scsiAttIntrPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the remote SCSI + initiator device attached to this local SCSI target port." +::= { scsiAttIntrPortEntry 4 } + +--****************** Managed Objects regarding logical units ******* +scsiLuTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the logical units exposed by local SCSI + target devices. + + + + It includes attributes for the World Wide Name (WWN), + scsiLuVendorId, scsiLuProductId, and scsiLuRevisionId, which may + also appear in the scsiLuIdTable. If an implementation exposes + a WWN as a LuIdTable entry, it must match the scsiLuWwnName in + this table. If an implementation exposes a (vendor, product, + revision) identifier as an LuIdTable entry, each of these fields + must match the scsiLuVendorId, scsiLuProductId, and + scsiLuRevisionId attributes in this table." +::= { scsiLogicalUnit 1 } + +scsiLuEntry OBJECT-TYPE + SYNTAX ScsiLuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) contains information applicable to a particular + logical unit of a particular local SCSI target device within a + particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiLuIndex} +::= { scsiLuTable 1 } + +ScsiLuEntry ::= SEQUENCE { + scsiLuIndex ScsiIndexValue, + scsiLuDefaultLun ScsiLUN, + scsiLuWwnName ScsiLuNameOrZero, + scsiLuVendorId SnmpAdminString, + scsiLuProductId SnmpAdminString, + scsiLuRevisionId SnmpAdminString, + scsiLuPeripheralType Unsigned32, + scsiLuStatus INTEGER, + scsiLuState BITS, + scsiLuInCommands Counter32, + scsiLuReadMegaBytes Counter32, + scsiLuWrittenMegaBytes Counter32, + scsiLuInResets Counter32, + scsiLuOutTaskSetFullStatus Counter32, + scsiLuHSInCommands Counter64, + scsiLuLastCreation TimeStamp +} + +scsiLuIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular logical unit within a particular SCSI + target device within a particular SCSI instance." + + + +::= { scsiLuEntry 1 } + +scsiLuDefaultLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the default Logical Unit Number (LUN) + for this logical unit; if a SCSI initiator device has not been + configured to view this logical unit via an entry in the + ScsiLunMapTable, the LU will be visible as scsiLuDefaultLun. + If this logical unit does not have a default LUN, it will only + be visible if specified via the ScsiLunMapTable, and this + object will contain a zero-length string." +::= { scsiLuEntry 2 } + +scsiLuWwnName OBJECT-TYPE + SYNTAX ScsiLuNameOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the World Wide Name of this LU that is + the device identifier of the Vital Product Data (VPD) page name; + if there is no WWN for this LU, this object will contain a + zero-length string. If there is more than one identifier, they + will be listed in the scsiLuIdTable and this object will contain + a zero-length string." +::= { scsiLuEntry 3 } + +scsiLuVendorId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string identifying the vendor of this + LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 4 } + +scsiLuProductId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string identifying the product for + this LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 5 } + +scsiLuRevisionId OBJECT-TYPE + + + + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string defining the product revision + of this LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 6 } + +scsiLuPeripheralType OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the value returned by SCSI Standard INQUIRY + data. It can be: direct-access device, sequential-access + device, printer, communication device and so on. + The values that can be returned here are defined in SCSI + Primary Commands -2." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001,11 July 2001 [SPC2]- Table 48." +::= { scsiLuEntry 7 } + +scsiLuStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + available(2), + notAvailable(3), + broken(4), + readying(5), + abnormal(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the status of this logical unit: + - unknown(1): The status of this logical unit cannot be + determined. + - available(2): The logical unit is fully operational (i.e., + accepts media access SCSI commands and has no state + information to report). + - notAvailable(3): The logical unit is capable of being + supported but is not available (i.e., no logical unit is + currently present or the logical unit is present but not + configured for use). + - broken(4): The logical unit has failed and cannot respond + to SCSI commands. + - readying(5): The logical unit is being initialized and + + + + access is temporarily limited. + - abnormal(6): The logical unit has state information + available that indicates it is operating with limits. The + scsiLuState indicates what those limits are. + " + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiLuEntry 8 } + +scsiLuState OBJECT-TYPE + SYNTAX BITS { + dataLost(0), + dynamicReconfigurationInProgress(1), + exposed(2), + fractionallyExposed(3), + partiallyExposed(4), + protectedRebuild(5), + protectionDisabled(6), + rebuild(7), + recalculate(8), + spareInUse(9), + verifyInProgress(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the state of a logical unit and its + meaning according to the bit position: + 0 Data lost: Within the logical unit data has been lost. + 1 Dynamic reconfiguration in progress: The logical unit is + being reconfigured. In this state all data is still + protected. + 2 Exposed: Within the logical unit data is not protected. + In this state all data is still valid; however, loss + of data or data availability is unavoidable in the + event of a failure. + 3 Fractionally exposed: Within the logical unit part of + the data is not protected. In this state all data is + still valid; however, a failure may cause a loss of + data or a loss of data availability. + 4 Partially exposed: Within the logical unit one or more + underlying storage devices have failed. In this state + all data is still protected. + 5 Protected rebuild: The logical unit is in the process of + a rebuild operation. In this state all data is + protected. + 6 Protection disabled: Within the logical unit the data + + + + protection method has been disabled. + In this state all data is still valid; however, + loss of data or data availability is unavoidable + in the event of a failure. + 7 Rebuild: The data protection method is in the process of + rebuilding data. In this state data is not protected. + 8 Recalculate: The logical unit is in the process of a + recalculate operation. + 9 Spare in use: Within the logical unit a storage device + in full or part is being used to store data. In this + state all data is still protected. + 10 Verify in progress: Within the logical unit data is + being verified." + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiLuEntry 9 } + +scsiLuInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + logical unit. + 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 scsiLuLastCreation." +::= { scsiLuEntry 10 } + +scsiLuReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes read + from this logical unit. + 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 scsiLuLastCreation." +::= { scsiLuEntry 11 } + +scsiLuWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes written + to this logical unit. + 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 scsiLuLastCreation." +::= { scsiLuEntry 12 } + +scsiLuInResets OBJECT-TYPE + SYNTAX Counter32 + UNITS "resets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of times that this logical + unit received + - a LOGICAL UNIT RESET or TARGET RESET task management request, + or + - any other SCSI transport protocol-specific action or event + that causes a Logical Unit Reset or a Hard Reset at a SCSI + target port of the containing device + ([SAM2] Chapters 5.9.6, 5.9.7). + 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 scsiLuLastCreation." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Chapter 5.9.7 [SAM2]" +::= { scsiLuEntry 13 } + +scsiLuOutTaskSetFullStatus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of Task Set full statuses + issued for this logical unit. + 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 scsiLuLastCreation." +::= { scsiLuEntry 14 } + +scsiLuHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents the number of commands received by this + logical unit. This object provides support for systems that can + quickly generate a large number of commands because they run at + high speed. + 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 scsiLuLastCreation." +::= { scsiLuEntry 15 } + +scsiLuLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the value of sysUpTime when this row was + last created." +::= { scsiLuEntry 16 } + +--****************** Logical Unit Identifier Table ***************** +scsiLuIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLuIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of identifiers for all logical units exposed by the + local SCSI target device." +::= { scsiLogicalUnit 2 } + +scsiLuIdEntry OBJECT-TYPE + SYNTAX ScsiLuIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular identifier for a particular logical unit of a + particular SCSI target device within a particular SCSI + instance." + INDEX {scsiInstIndex, scsiDeviceIndex, scsiLuIndex, scsiLuIdIndex} +::= { scsiLuIdTable 1 } + +ScsiLuIdEntry ::= SEQUENCE { + scsiLuIdIndex ScsiIndexValue, + scsiLuIdCodeSet ScsiIdCodeSet, + scsiLuIdAssociation ScsiIdAssociation, + scsiLuIdType ScsiIdType, + scsiLuIdValue ScsiIdValue +} + + + +scsiLuIdIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular LU identifier within a particular logical + unit within a particular SCSI target device within a particular + SCSI instance." +::= { scsiLuIdEntry 1 } + +scsiLuIdCodeSet OBJECT-TYPE + SYNTAX ScsiIdCodeSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the code set in use with this + identifier. The value is represented in the same format as is + contained in the identifier's Identification Descriptor within + the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 2 } + +scsiLuIdAssociation OBJECT-TYPE + SYNTAX ScsiIdAssociation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies what the identifier is associated with + (e.g., with the addressed physical/logical device or with a + particular port). The value is represented in the same format + as is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 3 } + +scsiLuIdType OBJECT-TYPE + SYNTAX ScsiIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of the identifier. + + + + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 4 } + +scsiLuIdValue OBJECT-TYPE + SYNTAX ScsiIdValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the actual value of this identifier. + The format is defined by the objects scsiLuIdCodeSet, + scsiLuIdAssociation, scsiLuIdType. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 5 } + +--******************* The LUN Map Table **************************** + +scsiLunMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLunMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides the ability to present a logical unit + using different Logical Unit Numbers for different SCSI + initiator devices. + This table provides a mapping between a logical unit and a + Logical Unit Number, and can be referenced by a + ScsiAuthorizedIntrEntry to specify the LUN map for that + initiator." +::= { scsiLogicalUnit 3 } + +scsiLunMapEntry OBJECT-TYPE + SYNTAX ScsiLunMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the mapping of a + + + + particular logical unit to a particular LUN. The set of + entries that all have the same values of scsiInstIndex, + scsiDeviceIndex and scsiLunMapIndex constitutes a LUN map + within a particular SCSI instance. + The StorageType of a row in this table is specified by + the instance of scsiInstStorageType that is INDEX-ed by + the same value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiLunMapIndex, + scsiLunMapLun} +::= { scsiLunMapTable 1 } + +ScsiLunMapEntry ::= SEQUENCE { + scsiLunMapIndex ScsiIndexValue, + scsiLunMapLun ScsiLUN, + scsiLunMapLuIndex ScsiIndexValue, + scsiLunMapRowStatus RowStatus +} + +scsiLunMapIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular LunMap within a particular SCSI target + device within a particular SCSI instance." +::= { scsiLunMapEntry 1 } + +scsiLunMapLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the Logical Unit Number, to which a + logical unit is mapped by this row." +::= { scsiLunMapEntry 2 } + + +scsiLunMapLuIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the logical unit for which the value of + scsiLuIndex is the same as the value of this object. The + identified logical unit is the one mapped to a LUN by this + row." +::= { scsiLunMapEntry 3 } + + + +scsiLunMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows an administrator to create and delete this + entry." +::= { scsiLunMapEntry 4 } + +--********************** Notifications ****************************** +-- scsiNotifications OBJECT IDENTIFIER ::= { scsiMIB 2 } + +scsiNotificationsPrefix OBJECT IDENTIFIER + ::= { scsiNotifications 0 } + +scsiTgtDeviceStatusChanged NOTIFICATION-TYPE + OBJECTS { scsiTgtDeviceStatus } + STATUS current + DESCRIPTION + "This notification will be generated for each occurrence of the + abnormal status (e.g., if the SCSI target device's current + status is abnormal) providing that the SCSI instance's value of + scsiInstScsiNotificationsEnable is enabled. + An SNMP agent implementing the SCSI MIB module should not send + more than three SCSI identical notifications in any 10-second + period." +::= { scsiNotificationsPrefix 1 } + +scsiLuStatusChanged NOTIFICATION-TYPE + OBJECTS { scsiLuStatus } + STATUS current + DESCRIPTION + "This notification will be generated each time that + scsiLuStatus changes providing that the SCSI instance's value + of scsiInstScsiNotificationsEnable is enabled. + An SNMP agent implementing the SCSI MIB module should not send + more than three SCSI identical notifications in any 10-second + period." +::= { scsiNotificationsPrefix 2 } + + + +--****************************************************************** +-- The next part defines the conformance groups in use +-- for SCSI MIB module. +scsiCompliances OBJECT IDENTIFIER ::= { scsiConformance 1 } + +scsiCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Describes the requirements for compliance to this SCSI MIB + module. + If an implementation can be both a SCSI target device and a SCSI + initiator device, all groups are mandatory." + MODULE -- this module + MANDATORY-GROUPS { + scsiDeviceGroup + } + + OBJECT scsiInstAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiInstScsiNotificationsEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiDeviceAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiInstStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- SCSI target device. + + GROUP scsiTargetDeviceGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI target devices." + GROUP scsiLunMapGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of mapping local SCSI target devices and logical units + according to remote SCSI initiator devices." + + OBJECT scsiAuthIntrDevOrPort + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT scsiAuthIntrName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT scsiAuthIntrLunMapIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT scsiAuthIntrRowStatus + SYNTAX RowStatus { active(1) } + 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)." + + GROUP scsiTgtDevLuNotificationsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI target devices and are able to report status + changes." + + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- SCSI initiator device. + + GROUP scsiInitiatorDeviceGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI initiator devices." + + OBJECT scsiIntrDevTgtAccessMode + MIN-ACCESS read-only + DESCRIPTION "Write access is not mandatory." + + GROUP scsiDiscoveryGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of discovering remote SCSI target devices via local SCSI + initiator devices." + + OBJECT scsiLunMapLuIndex + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiLunMapRowStatus + SYNTAX RowStatus { active(1) } + 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 scsiDscTgtDevOrPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiDscTgtName + MIN-ACCESS read-only + DESCRIPTION "Write access is not mandatory." + + OBJECT scsiDscTgtConfigured + SYNTAX TruthValue { false(2) } + MIN-ACCESS read-only + DESCRIPTION + "The value of true(1) is not mandatory neither is the write + access." + + OBJECT scsiDscTgtRowStatus + SYNTAX RowStatus { active(1) } + 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)." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics. + + GROUP scsiDeviceStatGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics at the SCSI +-- initiator device side. + + GROUP scsiInitiatorDevStatsGroup + + + + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI initiator device side." + + GROUP scsiDiscoveryStatsGroup + DESCRIPTION + "This group is mandatory for system having the capabilities + of gathering statistics regarding remote SCSI target devices + via local SCSI initiator devices." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics at the SCSI +-- target side. + + GROUP scsiTargetDevStatsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI target devices." + + GROUP scsiLunMapStatsGroup + DESCRIPTION + "This group is mandatory for SCSI implementations able to map + local SCSI target devices and logical units according to + remote SCSI initiator devices." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation is running at high speed and can +-- gather statistics at the SCSI initiator device side. + + GROUP scsiInitiatorDevHSStatsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at the SCSI initiator device side and + are running at high speed, meaning speed of 4 Gbit/second or + higher." + + GROUP scsiDiscoveryHSStatsGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of gathering statistics regarding remote SCSI target devices + via local SCSI initiator devices and are running at high + speed, meaning speed of 4 Gbit/second or higher." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation is running at high speed and can +-- gather statistics at the SCSI target side. + GROUP scsiTargetDevHSStatsGroup + DESCRIPTION + + + + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI target devices in high speed + systems, meaning speed of 4 Gbit/second or higher." + + GROUP scsiLunMapHSStatsGroup + DESCRIPTION + "This group is mandatory for SCSI implementations able to map + local SCSI target devices and logical units according to + remote SCSI initiator devices in a high speed system, meaning + speed of 4 Gbit/second or higher." +::= { scsiCompliances 1 } + +scsiGroups OBJECT IDENTIFIER ::= { scsiConformance 2 } + +scsiDeviceGroup OBJECT-GROUP + OBJECTS { + scsiInstAlias, + scsiInstSoftwareIndex, + scsiInstVendorVersion, + scsiInstScsiNotificationsEnable, + scsiInstStorageType, + scsiDeviceAlias, + scsiDeviceRole, + scsiDevicePortNumber, + scsiPortRole, + scsiPortTransportPtr, + scsiTransportType, + scsiTransportPointer, + scsiTransportDevName + } + STATUS current + DESCRIPTION + "A collection of objects providing information about SCSI + instances, devices, and ports." +::= { scsiGroups 1 } + +scsiInitiatorDeviceGroup OBJECT-GROUP + OBJECTS { + scsiIntrDevTgtAccessMode, + scsiIntrPortName, + scsiIntrPortIdentifier, + scsiAttTgtPortDscTgtIdx, + scsiAttTgtPortName, + scsiAttTgtPortIdentifier + } + STATUS current + DESCRIPTION + "This group is relevant for s SCSI initiator device and port." + + + +::= { scsiGroups 2 } + +scsiDiscoveryGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtDevOrPort, + scsiDscTgtName, + scsiDscTgtConfigured, + scsiDscTgtDiscovered, + scsiDscTgtRowStatus, + scsiDscTgtLastCreation, + scsiDscLunLun, + scsiDscLunIdCodeSet, + scsiDscLunIdAssociation, + scsiDscLunIdType, + scsiDscLunIdValue + } + STATUS current + DESCRIPTION + "This group is relevant for the discovered SCSI target devices + by a SCSI initiator port." +::= { scsiGroups 3 } + +scsiTargetDeviceGroup OBJECT-GROUP + OBJECTS { + scsiTgtDevNumberOfLUs, + scsiTgtDeviceStatus, + scsiTgtDevNonAccessibleLUs, + scsiTgtPortName, + scsiTgtPortIdentifier, + scsiAttIntrPortAuthIntrIdx, + scsiAttIntrPortName, + scsiAttIntrPortIdentifier, + scsiLuDefaultLun, + scsiLuWwnName, + scsiLuVendorId, + scsiLuProductId, + scsiLuRevisionId, + scsiLuPeripheralType, + scsiLuStatus, + scsiLuState, + scsiLuLastCreation, + scsiLuIdCodeSet, + scsiLuIdAssociation, + scsiLuIdType, + scsiLuIdValue + } + STATUS current + DESCRIPTION + + + + "This group is relevant for a SCSI target device and port." +::= { scsiGroups 4 } + +scsiLunMapGroup OBJECT-GROUP + OBJECTS { + scsiLunMapLuIndex, + scsiLunMapRowStatus, + scsiAuthIntrDevOrPort, + scsiAuthIntrName, + scsiAuthIntrLunMapIndex, + scsiAuthIntrLastCreation, + scsiAuthIntrRowStatus + } + STATUS current + DESCRIPTION + "This group is a collection of attributes regarding the mapping + between Logical Unit Number, logical unit, and target device." +::= { scsiGroups 5} + +scsiTargetDevStatsGroup OBJECT-GROUP + OBJECTS { + scsiTgtDevResets, + scsiTgtPortInCommands, + scsiTgtPortWrittenMegaBytes, + scsiTgtPortReadMegaBytes, + scsiLuInCommands, + scsiLuReadMegaBytes, + scsiLuWrittenMegaBytes, + scsiLuInResets, + scsiLuOutTaskSetFullStatus + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain SCSI target + devices." +::= { scsiGroups 6} + +scsiTargetDevHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiTgtPortHSInCommands, + scsiLuHSInCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + implementations of the SCSI MIB module that contain SCSI target + devices." + + + +::= { scsiGroups 7} + +scsiLunMapStatsGroup OBJECT-GROUP + OBJECTS { + scsiAuthIntrAttachedTimes, + scsiAuthIntrOutCommands, + scsiAuthIntrReadMegaBytes, + scsiAuthIntrWrittenMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics regarding SCSI + initiator devices authorized to attach local logical unit and + SCSI target device." +::= { scsiGroups 8} + +scsiLunMapHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiAuthIntrHSOutCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics regarding + SCSI initiator devices authorized to attach local logical unit + and SCSI target device." +::= { scsiGroups 9} + +scsiInitiatorDevStatsGroup OBJECT-GROUP + OBJECTS { + scsiIntrDevOutResets, + scsiIntrPortOutCommands, + scsiIntrPortWrittenMegaBytes, + scsiIntrPortReadMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain SCSI + initiator devices." +::= { scsiGroups 10} + +scsiInitiatorDevHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiIntrPortHSOutCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + + + + implementations of the SCSI MIB module that contain SCSI + initiator devices." +::= { scsiGroups 11} + +scsiDiscoveryStatsGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtInCommands, + scsiDscTgtReadMegaBytes, + scsiDscTgtWrittenMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain discovered + SCSI initiator devices." +::= { scsiGroups 12} + +scsiDiscoveryHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtHSInCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + implementations of the SCSI MIB module that contain discovered + SCSI initiator devices." +::= { scsiGroups 13} + +scsiDeviceStatGroup OBJECT-GROUP + OBJECTS { + scsiPortBusyStatuses + } + STATUS current + DESCRIPTION + "A collection of statistics regarding SCSI devices and + ports." +::= { scsiGroups 14 } + +scsiTgtDevLuNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + scsiTgtDeviceStatusChanged, + scsiLuStatusChanged + } + STATUS current + DESCRIPTION + "A collection of notifications regarding status change of SCSI + target devices and logical units." +::= { scsiGroups 15 } + + + +END diff --git a/mibs/ietf/SCTP-MIB b/mibs/ietf/SCTP-MIB new file mode 100644 index 0000000..60a84e0 --- /dev/null +++ b/mibs/ietf/SCTP-MIB @@ -0,0 +1,1641 @@ +SCTP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, Gauge32, + Counter32, Counter64, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB; -- [RFC3291] + + + + + + + +sctpMIB MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- 2nd September 2004 + ORGANIZATION "IETF SIGTRAN Working Group" + CONTACT-INFO + " + WG EMail: sigtran@ietf.org + + Web Page: + http://www.ietf.org/html.charters/sigtran-charter.html + + Chair: Lyndon Ong + Ciena Corporation + 0480 Ridgeview Drive + Cupertino, CA 95014 + USA + Tel: + Email: lyong@ciena.com + + Editors: Maria-Carmen Belinchon + R&D Department + Ericsson Espana S. A. + Via de los Poblados, 13 + 28033 Madrid + Spain + Tel: +34 91 339 3535 + Email: Maria.C.Belinchon@ericsson.com + + Jose-Javier Pastor-Balbas + R&D Department + Ericsson Espana S. A. + Via de los Poblados, 13 + 28033 Madrid + Spain + Tel: +34 91 339 1397 + Email: J.Javier.Pastor@ericsson.com + " + DESCRIPTION + "The MIB module for managing SCTP implementations. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3873; see the RFC itself for + full legal notices. " + + REVISION "200409020000Z" -- 2nd September 2004 + + DESCRIPTION " Initial version, published as RFC 3873" + + ::= { mib-2 104 } + + + +-- the SCTP base variables group + +sctpObjects OBJECT IDENTIFIER ::= { sctpMIB 1 } + +sctpStats OBJECT IDENTIFIER ::= { sctpObjects 1 } +sctpParams OBJECT IDENTIFIER ::= { sctpObjects 2 } + +-- STATISTICS +-- ********** + +-- STATE-RELATED STATISTICS + +sctpCurrEstab OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of associations for which the current state is + either ESTABLISHED, SHUTDOWN-RECEIVED or SHUTDOWN-PENDING." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 1 } + + +sctpActiveEstabs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the ESTABLISHED state from the COOKIE-ECHOED + state: COOKIE-ECHOED -> ESTABLISHED. The upper layer initiated + the association attempt." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 2 } + + + + + + + + + + + +sctpPassiveEstabs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the ESTABLISHED state from the CLOSED state: + CLOSED -> ESTABLISHED. The remote endpoint initiated the + association attempt." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 3 } + + +sctpAborteds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the CLOSED state from any state using the + primitive 'ABORT': AnyState --Abort--> CLOSED. Ungraceful + termination of the association." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 4 } + + +sctpShutdowns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the CLOSED state from either the SHUTDOWN-SENT + state or the SHUTDOWN-ACK-SENT state. Graceful termination of + the association." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 5 } + + + + + +-- OTHER LAYER STATISTICS + +sctpOutOfBlues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of out of the blue packets received by the host. + An out of the blue packet is an SCTP packet correctly formed, + including the proper checksum, but for which the receiver was + unable to identify an appropriate association." + REFERENCE + "Section 8.4 in RFC2960 deals with the Out-Of-The-Blue + (OOTB) packet definition and procedures." + + ::= { sctpStats 6 } + +sctpChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets received with an invalid + checksum." + REFERENCE + "The checksum is located at the end of the SCTP packet as per + Section 3.1 in RFC2960. RFC3309 updates SCTP to use a 32 bit + CRC checksum." + +::= { sctpStats 7 } + +sctpOutCtrlChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP control chunks sent (retransmissions are + not included). Control chunks are those chunks different from + DATA." + REFERENCE + "Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as + those chunks different from those that contain user + information, i.e., DATA chunks." + + ::= { sctpStats 8 } + + + + + + +sctpOutOrderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP ordered data chunks sent (retransmissions + are not included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the ordered data chunk." + + ::= { sctpStats 9 } + +sctpOutUnorderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP unordered chunks (data chunks in which the + U bit is set to 1) sent (retransmissions are not included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the unordered data chunk." + + ::= { sctpStats 10 } + +sctpInCtrlChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP control chunks received (no duplicate + chunks included)." + REFERENCE + "Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as + those chunks different from those that contain user + information, i.e., DATA chunks." + + ::= { sctpStats 11 } + + +sctpInOrderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP ordered data chunks received (no duplicate + chunks included)." + + + + + + REFERENCE + "Section 3.3.1 in RFC2960 defines the ordered data chunk." + + ::= { sctpStats 12 } + + +sctpInUnorderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP unordered chunks (data chunks in which the + U bit is set to 1) received (no duplicate chunks included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the unordered data chunk." + + ::= { sctpStats 13 } + + + +sctpFragUsrMsgs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The number of user messages that have to be fragmented + because of the MTU." + + ::= { sctpStats 14 } + + +sctpReasmUsrMsgs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user messages reassembled, after conversion + into DATA chunks." + REFERENCE + "Section 6.9 in RFC2960 includes a description of the + reassembly process." + + ::= { sctpStats 15 } + + + + + + + +sctpOutSCTPPacks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets sent. Retransmitted DATA chunks + are included." + + ::= { sctpStats 16 } + + +sctpInSCTPPacks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets received. Duplicates are + included." + + ::= { sctpStats 17 } + +sctpDiscontinuityTime 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 general statistics counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + Counter64 object contained in the SCTP layer statistics + (defined below sctpStats branch). If no such discontinuities + have occurred since the last re-initialization of the local + management subsystem, then this object contains a zero value." + REFERENCE + "The inclusion of this object is recommended by RFC2578." + + ::= { sctpStats 18 } + + +-- PROTOCOL GENERAL VARIABLES +-- ************************** + +sctpRtoAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Other new one. Future use + vanj(2) -- Van Jacobson's algorithm + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The algorithm used to determine the timeout value (T3-rtx) + used for re-transmitting unacknowledged chunks." + REFERENCE + "Section 6.3.1 and 6.3.2 in RFC2960 cover the RTO calculation + and retransmission timer rules." + DEFVAL {vanj} -- vanj(2) + + ::= { sctpParams 1 } + + +sctpRtoMin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum value permitted by a SCTP implementation for the + retransmission timeout value, measured in milliseconds. More + refined semantics for objects of this type depend upon the + algorithm used to determine the retransmission timeout value. + + A retransmission time value of zero means immediate + retransmission. + + The value of this object has to be lower than or equal to + stcpRtoMax's value." + DEFVAL {1000} -- milliseconds + + ::= { sctpParams 2 } + +sctpRtoMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value permitted by a SCTP implementation for the + retransmission timeout value, measured in milliseconds. More + refined semantics for objects of this type depend upon the + algorithm used to determine the retransmission timeout value. + + A retransmission time value of zero means immediate re- + transmission. + + + + + + The value of this object has to be greater than or equal to + stcpRtoMin's value." + DEFVAL {60000} -- milliseconds + + ::= { sctpParams 3 } + + +sctpRtoInitial OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial value for the retransmission timer. + + A retransmission time value of zero means immediate re- + transmission." + DEFVAL {3000} -- milliseconds + + ::= { sctpParams 4 } + + +sctpMaxAssocs OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The limit on the total number of associations the entity can + support. In entities where the maximum number of associations + is dynamic, this object should contain the value -1." + + ::= { sctpParams 5 } + + +sctpValCookieLife OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid cookie life in the 4-way start-up handshake procedure." + REFERENCE + "Section 5.1.3 in RFC2960 explains the cookie generation + process. Recommended value is per section 14 in RFC2960." + DEFVAL {60000} -- milliseconds + + ::= { sctpParams 6 } + + + +sctpMaxInitRetr OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of retransmissions at the start-up phase + (INIT and COOKIE ECHO chunks). " + REFERENCE + "Section 5.1.4, 5.1.6 in RFC2960 refers to Max.Init.Retransmit + parameter. Recommended value is per section 14 in RFC2960." + DEFVAL {8} -- number of attempts + + ::= { sctpParams 7 } + + +-- TABLES +-- ****** + +-- the SCTP Association TABLE + +-- The SCTP association table contains information about each +-- association in which the local endpoint is involved. + + +sctpAssocTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing SCTP association-specific information." + + ::= { sctpObjects 3 } + + +sctpAssocEntry OBJECT-TYPE + SYNTAX SctpAssocEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "General common variables and statistics for the whole + association." + INDEX { sctpAssocId } + + ::= { sctpAssocTable 1 } + + + + + + +SctpAssocEntry ::= SEQUENCE { + sctpAssocId Unsigned32, + sctpAssocRemHostName OCTET STRING, + sctpAssocLocalPort InetPortNumber, + sctpAssocRemPort InetPortNumber, + sctpAssocRemPrimAddrType InetAddressType, + sctpAssocRemPrimAddr InetAddress, + sctpAssocHeartBeatInterval Unsigned32, + sctpAssocState INTEGER, + sctpAssocInStreams Unsigned32, + sctpAssocOutStreams Unsigned32, + sctpAssocMaxRetr Unsigned32, + sctpAssocPrimProcess Unsigned32, + sctpAssocT1expireds Counter32, -- Statistic + sctpAssocT2expireds Counter32, -- Statistic + sctpAssocRtxChunks Counter32, -- Statistic + sctpAssocStartTime TimeStamp, + sctpAssocDiscontinuityTime TimeStamp + } + + +sctpAssocId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Association Identification. Value identifying the + association. " + + ::= { sctpAssocEntry 1 } + + +sctpAssocRemHostName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The peer's DNS name. This object needs to have the same + format as the encoding in the DNS protocol. This implies that + the domain name can be up to 255 octets long, each octet being + 0<=x<=255 as value with US-ASCII A-Z having a case insensitive + matching. + + If no DNS domain name was received from the peer at init time + (embedded in the INIT or INIT-ACK chunk), this object is + meaningless. In such cases the object MUST contain a zero- + length string value. Otherwise, it contains the remote host + name received at init time." + + + + ::= { sctpAssocEntry 2 } + + +sctpAssocLocalPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local SCTP port number used for this association." + + ::= { sctpAssocEntry 3 } + + +sctpAssocRemPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote SCTP port number used for this association." + + ::= { sctpAssocEntry 4 } + + +sctpAssocRemPrimAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet type of primary remote IP address. " + + ::= { sctpAssocEntry 5 } + +sctpAssocRemPrimAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary remote IP address. The type of this address is + determined by the value of sctpAssocRemPrimAddrType. + + The client side will know this value after INIT_ACK message + reception, the server side will know this value when sending + INIT_ACK message. However, values will be filled in at + established(4) state." + + ::= { sctpAssocEntry 6 } + + + + + +sctpAssocHeartBeatInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current heartbeat interval.. + + Zero value means no HeartBeat, even when the concerned + sctpAssocRemAddrHBFlag object is true." + DEFVAL {30000} -- milliseconds + + ::= { sctpAssocEntry 7 } + + +sctpAssocState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + cookieWait(2), + cookieEchoed(3), + established(4), + shutdownPending(5), + shutdownSent(6), + shutdownReceived(7), + shutdownAckSent(8), + deleteTCB(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this SCTP association. + + As in TCP, deleteTCB(9) is the only value that may be set by a + management station. If any other value is received, then the + agent must return a wrongValue error. + + If a management station sets this object to the value + deleteTCB(9), then this has the effect of deleting the TCB (as + defined in SCTP) of the corresponding association on the + managed node, resulting in immediate termination of the + association. + + As an implementation-specific option, an ABORT chunk may be + sent from the managed node to the other SCTP endpoint as a + result of setting the deleteTCB(9) value. The ABORT chunk + implies an ungraceful association shutdown." + + + + + + REFERENCE + + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpAssocEntry 8 } + + +sctpAssocInStreams OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Inbound Streams according to the negotiation at association + start up." + REFERENCE + "Section 1.3 in RFC2960 includes a definition of stream. + Section 5.1.1 in RFC2960 covers the streams negotiation + process." + + ::= { sctpAssocEntry 9 } + +sctpAssocOutStreams OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Outbound Streams according to the negotiation at association + start up. " + REFERENCE + "Section 1.3 in RFC2960 includes a definition of stream. + Section 5.1.1 in RFC2960 covers the streams negotiation + process." + + ::= { sctpAssocEntry 10 } + + +sctpAssocMaxRetr OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of data retransmissions in the association + context. This value is specific for each association and the + upper layer can change it by calling the appropriate + primitives. This value has to be smaller than the addition of + all the maximum number for all the paths + (sctpAssocRemAddrMaxPathRtx). + + + + A value of zero value means no retransmissions." + DEFVAL {10} -- number of attempts + + ::= { sctpAssocEntry 11 } + +sctpAssocPrimProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the system level process which holds + primary responsibility for the SCTP association. + Wherever possible, this should be the system's native unique + identification number. The special value 0 can be used to + indicate that no primary process is known. + + Note that the value of this object can be used as a pointer + into the swRunTable of the HOST-RESOURCES-MIB(if the value is + smaller than 2147483647) or into the sysApplElmtRunTable of + the SYSAPPL-MIB." + + ::= { sctpAssocEntry 12 } + + +-- Association Statistics + +sctpAssocT1expireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The T1 timer determines how long to wait for an + acknowledgement after sending an INIT or COOKIE-ECHO chunk. + This object reflects the number of times the T1 timer expires + without having received the acknowledgement. + + 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 sctpAssocDiscontinuityTime." + REFERENCE + "Section 5 in RFC2960." + + + ::= { sctpAssocEntry 13 } + +sctpAssocT2expireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The T2 timer determines how long to wait for an + acknowledgement after sending a SHUTDOWN or SHUTDOWN-ACK + chunk. This object reflects the number of times that T2- timer + expired. + + 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 sctpAssocDiscontinuityTime." +REFERENCE + "Section 9.2 in RFC2960." + ::= { sctpAssocEntry 14 } + + +sctpAssocRtxChunks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When T3-rtx expires, the DATA chunks that triggered the T3 + timer will be re-sent according with the retransmissions + rules. Every DATA chunk that was included in the SCTP packet + that triggered the T3-rtx timer must be added to the value of + this counter. + + 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 sctpAssocDiscontinuityTime." + REFERENCE + "Section 6 in RFC2960 covers the retransmission process and + rules." + + ::= { sctpAssocEntry 15 } + + +sctpAssocStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that the association + represented by this row enters the ESTABLISHED state, i.e., + the sctpAssocState object is set to established(4). The + value of this object will be zero: + - before the association enters the established(4) + state, or + + + + + - if the established(4) state was entered prior to + the last re-initialization of the local network management + subsystem." + + ::= { sctpAssocEntry 16 } + +sctpAssocDiscontinuityTime 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 SCTP association counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + Counter64 object contained in the sctpAssocTable or + sctpLocalAddrTable or sctpRemAddrTable. If no such + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains a + zero value. " + REFERENCE + "The inclusion of this object is recommended by RFC2578." + + ::= { sctpAssocEntry 17 } + +-- Expanded tables: Including Multi-home feature + +-- Local Address TABLE +-- ******************* + +sctpAssocLocalAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocLocalAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Expanded table of sctpAssocTable based on the AssocId index. + This table shows data related to each local IP address which + is used by this association." + + ::= { sctpObjects 4 } + +sctpAssocLocalAddrEntry OBJECT-TYPE + SYNTAX SctpAssocLocalAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Local information about the available addresses. There will + be an entry for every local IP address defined for this + + + + association. + Implementors need to be aware that if the size of + sctpAssocLocalAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + INDEX { sctpAssocId, -- shared index + sctpAssocLocalAddrType, + sctpAssocLocalAddr } + + ::= { sctpAssocLocalAddrTable 1 } + + +SctpAssocLocalAddrEntry ::= SEQUENCE { + sctpAssocLocalAddrType InetAddressType, + sctpAssocLocalAddr InetAddress, + sctpAssocLocalAddrStartTime TimeStamp + } + + +sctpAssocLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Internet type of local IP address used for this association." + + + ::= { sctpAssocLocalAddrEntry 1 } + +sctpAssocLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of a local IP address available for this + association. The type of this address is determined by the + value of sctpAssocLocalAddrType." + + ::= { sctpAssocLocalAddrEntry 2 } + + + + + + + + + + + +sctpAssocLocalAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was + created." + + ::= { sctpAssocLocalAddrEntry 3 } + +-- Remote Addresses TABLE +-- ********************** + +sctpAssocRemAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocRemAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Expanded table of sctpAssocTable based on the AssocId index. + This table shows data related to each remote peer IP address + which is used by this association." + + ::= { sctpObjects 5 } + + +sctpAssocRemAddrEntry OBJECT-TYPE + SYNTAX SctpAssocRemAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the most important variables for every + remote IP address. There will be an entry for every remote IP + address defined for this association. + + Implementors need to be aware that if the size of + sctpAssocRemAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + INDEX { sctpAssocId, -- shared index + sctpAssocRemAddrType, + sctpAssocRemAddr } + + ::= { sctpAssocRemAddrTable 1 } + + + + + + + +SctpAssocRemAddrEntry ::= SEQUENCE { + sctpAssocRemAddrType InetAddressType, + sctpAssocRemAddr InetAddress, + sctpAssocRemAddrActive TruthValue, + sctpAssocRemAddrHBActive TruthValue, + sctpAssocRemAddrRTO Unsigned32, + sctpAssocRemAddrMaxPathRtx Unsigned32, + sctpAssocRemAddrRtx Counter32, -- Statistic + sctpAssocRemAddrStartTime TimeStamp + } + + +sctpAssocRemAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Internet type of a remote IP address available for this + association." + ::= { sctpAssocRemAddrEntry 1 } + + +sctpAssocRemAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of a remote IP address available for this + association. The type of this address is determined by the + value of sctpAssocLocalAddrType." + + ::= { sctpAssocRemAddrEntry 2 } + + +sctpAssocRemAddrActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object gives information about the reachability of this + specific remote IP address. + + When the object is set to 'true' (1), the remote IP address is + understood as Active. Active means that the threshold of no + answers received from this IP address has not been reached. + + + + + + + When the object is set to 'false' (2), the remote IP address + is understood as Inactive. Inactive means that either no + heartbeat or any other message was received from this address, + reaching the threshold defined by the protocol." + + REFERENCE + "The remote transport states are defined as Active and + Inactive in the SCTP, RFC2960." + + ::= { sctpAssocRemAddrEntry 3 } + + +sctpAssocRemAddrHBActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the optional Heartbeat check + associated to one destination transport address is activated + or not (value equal to true or false, respectively). " + + ::= { sctpAssocRemAddrEntry 4 } + + +sctpAssocRemAddrRTO OBJECT-TYPE -- T3-rtx- Timer + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Retransmission Timeout. T3-rtx timer as defined + in the protocol SCTP." + REFERENCE + "Section 6.3 in RFC2960 deals with the Retransmission Timer + Management." + + ::= { sctpAssocRemAddrEntry 5 } + + +sctpAssocRemAddrMaxPathRtx OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of DATA chunks retransmissions allowed to a + remote IP address before it is considered inactive, as defined + in RFC2960." + + + + + REFERENCE + "Section 8.2, 8.3 and 14 in RFC2960." + DEFVAL {5} -- number of attempts + + ::= { sctpAssocRemAddrEntry 6 } + + +-- Remote Address Statistic + +sctpAssocRemAddrRtx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DATA chunks retransmissions to this specific IP + address. When T3-rtx expires, the DATA chunk that triggered + the T3 timer will be re-sent according to the retransmissions + rules. Every DATA chunk that is included in a SCTP packet and + was transmitted to this specific IP address before, will be + included in this counter. + + 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 sctpAssocDiscontinuityTime." + + ::= { sctpAssocRemAddrEntry 7 } + +sctpAssocRemAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was + created." + + ::= { sctpAssocRemAddrEntry 8 } + +-- ASSOCIATION INVERSE TABLE +-- ************************* + +-- BY LOCAL PORT + +sctpLookupLocalPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupLocalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations which are + + + + using the specified local port can be retrieved." + + ::= { sctpObjects 6 } + + +sctpLookupLocalPortEntry OBJECT-TYPE + SYNTAX SctpLookupLocalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by local port and association ID. + Specifying a local port, we would get a list of the + associations whose local port is the one specified." + + INDEX { sctpAssocLocalPort, + sctpAssocId } + + ::= { sctpLookupLocalPortTable 1 } + + +SctpLookupLocalPortEntry::= SEQUENCE { + sctpLookupLocalPortStartTime TimeStamp + } + + +sctpLookupLocalPortStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupLocalPortEntry 1 } + +-- BY REMOTE PORT + +sctpLookupRemPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemPortEntry + MAX-ACCESS not-accessible + STATUS current + + + + + + + + DESCRIPTION + "With the use of this table, a list of associations which are + using the specified remote port can be got" + + ::= { sctpObjects 7 } + +sctpLookupRemPortEntry OBJECT-TYPE + SYNTAX SctpLookupRemPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by remote port and association ID. + Specifying a remote port we would get a list of the + associations whose local port is the one specified " + + INDEX { sctpAssocRemPort, + sctpAssocId } + + ::= { sctpLookupRemPortTable 1 } + +SctpLookupRemPortEntry::= SEQUENCE { + sctpLookupRemPortStartTime TimeStamp + } + + +sctpLookupRemPortStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemPortEntry 1 } + +-- BY REMOTE HOST NAME + +sctpLookupRemHostNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemHostNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations with that + particular host can be retrieved." + + + + + ::= { sctpObjects 8 } + + +sctpLookupRemHostNameEntry OBJECT-TYPE + SYNTAX SctpLookupRemHostNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by remote host name and association ID. + Specifying a host name we would get a list of the associations + specifying that host name as the remote one. + + Implementors need to be aware that if the size of + sctpAssocRemHostName exceeds 115 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + + INDEX { sctpAssocRemHostName, + sctpAssocId } + + ::= { sctpLookupRemHostNameTable 1 } + + +SctpLookupRemHostNameEntry::= SEQUENCE { + sctpLookupRemHostNameStartTime TimeStamp + } + +sctpLookupRemHostNameStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemHostNameEntry 1 } + + + + + + + + + + + +-- BY REMOTE PRIMARY IP ADDRESS + +sctpLookupRemPrimIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemPrimIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations that have + the specified IP address as primary within the remote set of + active addresses can be retrieved." + + ::= { sctpObjects 9 } + + +sctpLookupRemPrimIPAddrEntry OBJECT-TYPE + SYNTAX SctpLookupRemPrimIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by primary address and association ID. + Specifying a primary address, we would get a list of the + associations that have the specified remote IP address marked + as primary. + Implementors need to be aware that if the size of + sctpAssocRemPrimAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + + INDEX { sctpAssocRemPrimAddrType, + sctpAssocRemPrimAddr, + sctpAssocId } + + ::= { sctpLookupRemPrimIPAddrTable 1 } + +SctpLookupRemPrimIPAddrEntry::= SEQUENCE { + sctpLookupRemPrimIPAddrStartTime TimeStamp + } + + +sctpLookupRemPrimIPAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + + + + + + + + DESCRIPTION + "The value of SysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemPrimIPAddrEntry 1 } + + +-- BY REMOTE IP ADDRESS + +sctpLookupRemIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations that have + the specified IP address as one of the remote ones can be + retrieved. " + + ::= { sctpObjects 10 } + + +sctpLookupRemIPAddrEntry OBJECT-TYPE + SYNTAX SctpLookupRemIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by a remote IP address and association + ID. Specifying an IP address we would get a list of the + associations that have the specified IP address included + within the set of remote IP addresses." + + INDEX { sctpAssocRemAddrType, + sctpAssocRemAddr, + sctpAssocId } + + ::= { sctpLookupRemIPAddrTable 1 } + + +SctpLookupRemIPAddrEntry::= SEQUENCE { + + sctpLookupRemIPAddrStartTime TimeStamp + } + + + + + + +sctpLookupRemIPAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemIPAddrEntry 1 } + + +-- 4.1 Conformance Information + +sctpMibConformance OBJECT IDENTIFIER ::= { sctpMIB 2 } +sctpMibCompliances OBJECT IDENTIFIER ::= { sctpMibConformance 1 } +sctpMibGroups OBJECT IDENTIFIER ::= { sctpMibConformance 2 } + + +-- 4.1.1 Units of conformance + +-- +-- MODULE GROUPS +-- + +sctpLayerParamsGroup OBJECT-GROUP + OBJECTS { sctpRtoAlgorithm, + sctpRtoMin, + sctpRtoMax, + sctpRtoInitial, + sctpMaxAssocs, + sctpValCookieLife, + sctpMaxInitRetr + } + + STATUS current + DESCRIPTION + "Common parameters for the SCTP layer, i.e., for all the + associations. They can usually be referred to as configuration + parameters." + + ::= { sctpMibGroups 1 } + + + + + + + +sctpStatsGroup OBJECT-GROUP + OBJECTS { sctpCurrEstab, + sctpActiveEstabs, + sctpPassiveEstabs, + sctpAborteds, + sctpShutdowns, + sctpOutOfBlues, + sctpChecksumErrors, + sctpOutCtrlChunks, + sctpOutOrderChunks, + sctpOutUnorderChunks, + sctpInCtrlChunks, + sctpInOrderChunks, + sctpInUnorderChunks, + sctpFragUsrMsgs, + sctpReasmUsrMsgs, + sctpOutSCTPPacks, + sctpInSCTPPacks, + sctpDiscontinuityTime, + sctpAssocT1expireds, + sctpAssocT2expireds, + sctpAssocRtxChunks, + sctpAssocRemAddrRtx + } + + STATUS current + DESCRIPTION + "Statistics group. It includes the objects to collect state + changes in the SCTP protocol local layer and flow control + statistics." + + ::= { sctpMibGroups 2 } + + +sctpPerAssocParamsGroup OBJECT-GROUP + OBJECTS { sctpAssocRemHostName, + sctpAssocLocalPort, + sctpAssocRemPort, + sctpAssocRemPrimAddrType, + sctpAssocRemPrimAddr, + sctpAssocHeartBeatInterval, + sctpAssocState, + sctpAssocInStreams, + sctpAssocOutStreams, + sctpAssocMaxRetr, + sctpAssocPrimProcess, + sctpAssocStartTime, + sctpAssocDiscontinuityTime, + + + + sctpAssocLocalAddrStartTime, + sctpAssocRemAddrActive, + sctpAssocRemAddrHBActive, + sctpAssocRemAddrRTO, + sctpAssocRemAddrMaxPathRtx, + sctpAssocRemAddrStartTime + } + + STATUS current + DESCRIPTION + "The SCTP group of objects to manage per-association + parameters. These variables include all the SCTP basic + features." + + ::= { sctpMibGroups 3 } + +sctpPerAssocStatsGroup OBJECT-GROUP + OBJECTS + { sctpAssocT1expireds, + sctpAssocT2expireds, + sctpAssocRtxChunks, + sctpAssocRemAddrRtx + } + + STATUS current + DESCRIPTION + "Per Association Statistics group. It includes the objects to + collect flow control statistics per association." + + ::= { sctpMibGroups 4 } + +sctpInverseGroup OBJECT-GROUP + OBJECTS { sctpLookupLocalPortStartTime, + sctpLookupRemPortStartTime, + sctpLookupRemHostNameStartTime, + sctpLookupRemPrimIPAddrStartTime, + sctpLookupRemIPAddrStartTime + } + + STATUS current + DESCRIPTION + "Objects used in the inverse lookup tables." + + ::= { sctpMibGroups 5 } + + + + + + + +-- 4.1.2 Compliance Statements + +-- +-- MODULE COMPLIANCES +-- + +sctpMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + this SCTP MIB Module. + + There are a number of INDEX objects that cannot be represented + in the form of OBJECT clauses in SMIv2, but for which we have + the following compliance requirements, expressed in OBJECT + clause form in this description clause: + +-- OBJECT sctpAssocLocalAddrType +-- SYNTAX InetAddressType {ipv4(1), ipv6(2)} +-- DESCRIPTION +-- It is only required to have IPv4 and IPv6 addresses without +-- zone indices. +-- The address with zone indices is required if an +-- implementation can connect multiple zones. +-- +-- OBJECT sctpAssocLocalAddr +-- SYNTAX InetAddress (SIZE(4|16)) +-- DESCRIPTION +-- An implementation is only required to support globally +-- unique IPv4 and IPv6 addresses. +-- +-- OBJECT sctpAssocRemAddrType +-- SYNTAX InetAddressType {ipv4(1), ipv6(2)} +-- DESCRIPTION +-- It is only required to have IPv4 and IPv6 addresses without +-- zone indices. +-- The address with zone indices is required if an +-- implementation can connect multiple zones. +-- +-- OBJECT sctpAssocRemAddr +-- SYNTAX InetAddress (SIZE(4|16)) +-- DESCRIPTION +-- An implementation is only required to support globally +-- unique IPv4 and IPv6 addresses. +-- + " -- closes DESCRIPTION clause of MODULE-COMPLIANCE + + MODULE -- this module + + + + MANDATORY-GROUPS { sctpLayerParamsGroup, + sctpPerAssocParamsGroup, + sctpStatsGroup, + sctpPerAssocStatsGroup + } + + OBJECT sctpAssocRemPrimAddrType + SYNTAX InetAddressType { ipv4(1), + ipv6(2) + } + DESCRIPTION + "It is only required to have IPv4 and IPv6 addresses + without zone indices. + + The address with zone indices is required if an + implementation can connect multiple zones." + + OBJECT sctpAssocRemPrimAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is only required to support globally + unique IPv4 and globally unique IPv6 addresses." + + + OBJECT sctpAssocState + WRITE-SYNTAX INTEGER { deleteTCB(9) } + MIN-ACCESS read-only + DESCRIPTION + "Only the deleteTCB(9) value MAY be set by a management + station at most. A read-only option is also considered to + be compliant with this MIB module description." + + GROUP sctpInverseGroup + DESCRIPTION + "Objects used in inverse lookup tables. This should be + implemented, at the discretion of the implementers, for + easier lookups in the association tables" + + ::= { sctpMibCompliances 1 } + +END diff --git a/mibs/ietf/SFLOW-MIB b/mibs/ietf/SFLOW-MIB new file mode 100644 index 0000000..75ba9ef --- /dev/null +++ b/mibs/ietf/SFLOW-MIB @@ -0,0 +1,410 @@ +SFLOW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises + FROM SNMPv2-SMI +SnmpAdminString + FROM SNMP-FRAMEWORK-MIB +OwnerString + FROM RMON-MIB +InetAddressType, InetAddress + FROM INET-ADDRESS-MIB +MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +sFlowMIB MODULE-IDENTITY + LAST-UPDATED "200105150000Z" -- May 15, 2001 + ORGANIZATION "InMon Corp." + CONTACT-INFO + + + + "Peter Phaal + InMon Corp. + http://www.inmon.com/ + + Tel: +1-415-661-6343 + Email: peter_phaal@inmon.com" + DESCRIPTION + "The MIB module for managing the generation and transportation + of sFlow data records." + + -- + -- Revision History + -- + REVISION "200105150000Z" -- May 15, 2001 + DESCRIPTION + "Version 1.2 + + Brings MIB into SMI v2 compliance." + + REVISION "200105010000Z" -- May 1, 2001 + DESCRIPTION + "Version 1.1 + + Adds sFlowDatagramVersion." + ::= { enterprises 4300 1 } + +sFlowAgent OBJECT IDENTIFIER ::= { sFlowMIB 1 } + +sFlowVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Uniquely identifies the version and implementation of this MIB. + The version string must have the following structure: + ;; + where: + must be '1.2', the version of this MIB. + the name of the organization responsible + for the agent implementation. + the specific software build of this agent. + + As an example, the string '1.2;InMon Corp.;2.1.1' indicates + that this agent implements version '1.2' of the SFLOW MIB, that + it was developed by 'InMon Corp.' and that the software build + is '2.1.1'. + + The MIB Version will change with each revision of the SFLOW + + + + MIB. + + Management entities must check the MIB Version and not attempt + to manage agents with MIB Versions greater than that for which + they were designed. + + Note: The sFlow Datagram Format has an independent version + number which may change independently from . + applies to the structure and semantics of + the SFLOW MIB only." + DEFVAL { "1.2;;" } + ::= { sFlowAgent 1 } + +sFlowAgentAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the address associated with this agent. + Only ipv4 and ipv6 types are supported." + ::= { sFlowAgent 2 } + +sFlowAgentAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address associated with this agent. In the case of a + multi-homed agent, this should be the loopback address of the + agent. The sFlowAgent address must provide SNMP connectivity + to the agent. The address should be an invariant that does not + change as interfaces are reconfigured, enabled, disabled, + added or removed. A manager should be able to use the + sFlowAgentAddress as a unique key that will identify this + agent over extended periods of time so that a history can + be maintained." + ::= { sFlowAgent 3 } + +sFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF SFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the sFlow samplers within a device." + ::= { sFlowAgent 4 } + +sFlowEntry OBJECT-TYPE + SYNTAX SFlowEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of an sFlow sampler." + INDEX { sFlowDataSource } + ::= { sFlowTable 1 } + +SFlowEntry ::= SEQUENCE { + sFlowDataSource OBJECT IDENTIFIER, + sFlowOwner OwnerString, + sFlowTimeout Integer32, + sFlowPacketSamplingRate Integer32, + sFlowCounterSamplingInterval Integer32, + sFlowMaximumHeaderSize Integer32, + sFlowMaximumDatagramSize Integer32, + sFlowCollectorAddressType InetAddressType, + sFlowCollectorAddress InetAddress, + sFlowCollectorPort Integer32, + sFlowDatagramVersion Integer32 +} + +sFlowDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the source of the data for the sFlow sampler. + The following data source types are currently defined: + + - ifIndex. + DataSources of this traditional form are called 'port-based'. + Ideally the sampling entity will perform sampling on all flows + originating from or destined to the specified interface. + However, if the switch architecture only permits input or + output sampling then the sampling agent is permitted to only + sample input flows input or output flows. Each packet must + only be considered once for sampling, irrespective of the + number of ports it will be forwarded to. + + Note: Port 0 is used to indicate that all ports on the device + are represented by a single data source. + - sFlowPacketSamplingRate applies to all ports on the + device capable of packet sampling. + - sFlowCounterSamplingInterval applies to all ports. + + - smonVlanDataSource. + A dataSource of this form refers to a 'Packet-based VLAN' + and is called a 'VLAN-based' dataSource. is the VLAN + + + + ID as defined by the IEEE 802.1Q standard. The + value is between 1 and 4094 inclusive, and it represents + an 802.1Q VLAN-ID with global scope within a given + bridged domain. + Sampling is performed on all packets received that are part + of the specified VLAN (no matter which port they arrived on). + Each packet will only be considered once for sampling, + irrespective of the number of ports it will be forwarded to. + + - entPhysicalEntry. + A dataSource of this form refers to a physical entity within + the agent (e.g., entPhysicalClass = backplane(4)) and is called + an 'entity-based' dataSource. + Sampling is performed on all packets entering the resource (e.g. + If the backplane is being sampled, all packets transmitted onto + the backplane will be considered as single candidates for + sampling irrespective of the number of ports they ultimately + reach). + + Note: Since each DataSource operates independently, a packet + that crosses multiple DataSources may generate multiple + flow records." + ::= { sFlowEntry 1 } + +sFlowOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The entity making use of this sFlow sampler. The empty string + indicates that the sFlow sampler is currently unclaimed. + An entity wishing to claim an sFlow sampler must make sure + that the sampler is unclaimed before trying to claim it. + The sampler is claimed by setting the owner string to identify + the entity claiming the sampler. The sampler must be claimed + before any changes can be made to other sampler objects. + + In order to avoid a race condition, the entity taking control + of the sampler must set both the owner and a value for + sFlowTimeout in the same SNMP set request. + + When a management entity is finished using the sampler, + it should set its value back to unclaimed. The agent + must restore all other entities this row to their + default values when the owner is set to unclaimed. + + This mechanism provides no enforcement and relies on the + cooperation of management entities in order to ensure that + + + + competition for a sampler is fairly resolved." + DEFVAL { "" } + ::= { sFlowEntry 2 } + +sFlowTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time (in seconds) remaining before the sampler is released + and stops sampling. When set, the owner establishes control + for the specified period. When read, the remaining time in the + interval is returned. + + A management entity wanting to maintain control of the sampler + is responsible for setting a new value before the old one + expires. + + When the interval expires, the agent is responsible for + restoring all other entities in this row to their default + values." + DEFVAL { 0 } + ::= { sFlowEntry 3 } + +sFlowPacketSamplingRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The statistical sampling rate for packet sampling from this + source. + + Set to N to sample 1/Nth of the packets in the monitored flows. + An agent should choose its own algorithm introduce variance + into the sampling so that exactly every Nth packet is not + counted. A sampling rate of 1 counts all packets. A sampling + rate of 0 disables sampling. + + The agent is permitted to have minimum and maximum allowable + values for the sampling rate. A minimum rate lets the agent + designer set an upper bound on the overhead associated with + sampling, and a maximum rate may be the result of hardware + restrictions (such as counter size). In addition not all values + between the maximum and minimum may be realizable as the + sampling rate (again because of implementation considerations). + + When the sampling rate is set the agent is free to adjust the + value so that it lies between the maximum and minimum values + + + + and has the closest achievable value. + + When read, the agent must return the actual sampling rate it + will be using (after the adjustments previously described). The + sampling algorithm must converge so that over time the number + of packets sampled approaches 1/Nth of the total number of + packets in the monitored flows." + DEFVAL { 0 } + ::= { sFlowEntry 4 } + +sFlowCounterSamplingInterval OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of seconds between successive samples of the + counters associated with this data source. A sampling interval + of 0 disables counter sampling." + DEFVAL { 0 } + ::= { sFlowEntry 5 } + +sFlowMaximumHeaderSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of bytes that should be copied from a + sampled packet. The agent may have an internal maximum and + minimum permissible sizes. If an attempt is made to set this + value outside the permissible range then the agent should + adjust the value to the closest permissible value." + DEFVAL { 128 } + ::= { sFlowEntry 6 } + +sFlowMaximumDatagramSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of data bytes that can be sent in a single + sample datagram. The manager should set this value to avoid + fragmentation of the sFlow datagrams." + DEFVAL { 1400 } + ::= { sFlowEntry 7 } + +sFlowCollectorAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The type of sFlowCollectorAddress." + DEFVAL { ipv4 } + ::= { sFlowEntry 8 } + +sFlowCollectorAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the sFlow collector. + If set to 0.0.0.0 all sampling is disabled." + DEFVAL { "0.0.0.0" } + ::= { sFlowEntry 9 } + +sFlowCollectorPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The destination port for sFlow datagrams." + DEFVAL { 6343 } + ::= { sFlowEntry 10 } + +sFlowDatagramVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The version of sFlow datagrams that should be sent. + + When set to a value not support by the agent, the agent should + adjust the value to the highest supported value less than the + requested value, or return an error if no such values exist." + DEFVAL { 4 } + ::= { sFlowEntry 11 } + + -- + -- Compliance Statements + -- + +sFlowMIBConformance OBJECT IDENTIFIER ::= { sFlowMIB 2 } +sFlowMIBGroups OBJECT IDENTIFIER ::= { sFlowMIBConformance 1 } +sFlowMIBCompliances OBJECT IDENTIFIER ::= { sFlowMIBConformance 2 } + +sFlowCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Compliance statements for the sFlow Agent." + + MODULE -- this module + MANDATORY-GROUPS { sFlowAgentGroup } + OBJECT sFlowAgentAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "Agents need only support ipv4." + + OBJECT sFlowCollectorAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "Agents need only support ipv4." + + ::= { sFlowMIBCompliances 1 } + +sFlowAgentGroup OBJECT-GROUP + OBJECTS { sFlowVersion, sFlowAgentAddressType, sFlowAgentAddress, + sFlowDataSource, sFlowOwner, sFlowTimeout, + sFlowPacketSamplingRate, sFlowCounterSamplingInterval, + sFlowMaximumHeaderSize, sFlowMaximumDatagramSize, + sFlowCollectorAddressType, sFlowCollectorAddress, + sFlowCollectorPort, sFlowDatagramVersion } + STATUS current + DESCRIPTION + "A collection of objects for managing the generation and + transportation of sFlow data records." + ::= { sFlowMIBGroups 1 } + +END diff --git a/mibs/ietf/SIP-COMMON-MIB b/mibs/ietf/SIP-COMMON-MIB new file mode 100644 index 0000000..8218595 --- /dev/null +++ b/mibs/ietf/SIP-COMMON-MIB @@ -0,0 +1,2013 @@ +SIP-COMMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, + Gauge32, + TimeTicks, + Unsigned32, + + + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + RowStatus, + TimeStamp, + TruthValue + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + SipTCTransportProtocol, + SipTCMethodName, + SipTCEntityRole, + SipTCOptionTagHeaders + FROM SIP-TC-MIB -- RFC 4780 + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetPortNumber + FROM INET-ADDRESS-MIB; -- RFC 4001 + +sipCommonMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + + + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) Common MIB module. This + module defines objects that may be common to all SIP entities. + + SIP is an application-layer signaling protocol for creating, + modifying and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + This MIB is defined for managing objects that are common to + SIP User Agents (UAs), Proxy, Redirect, and Registrar servers. + Objects specific to each of these entities MAY be managed using + entity specific MIBs defined in other modules. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-COMMON-MIB module. This + version published as part of RFC 4780." + ::= { mib-2 149 } + +-- Top-Level Components of this MIB. +sipCommonMIBNotifications OBJECT IDENTIFIER ::= { sipCommonMIB 0 } +sipCommonMIBObjects OBJECT IDENTIFIER ::= { sipCommonMIB 1 } +sipCommonMIBConformance OBJECT IDENTIFIER ::= { sipCommonMIB 2 } + +-- +-- This MIB contains objects that are common to all SIP entities. +-- + +-- Common basic configuration +sipCommonCfgBase OBJECT IDENTIFIER ::= { sipCommonMIBObjects 1 } + +-- Protocol timer configuration +sipCommonCfgTimer OBJECT IDENTIFIER ::= { sipCommonMIBObjects 2 } + +-- SIP message summary statistics + + +sipCommonSummaryStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 3 } + +-- Per method statistics +sipCommonMethodStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 4 } + +-- Per Status code or status code class statistics +sipCommonStatusCode OBJECT IDENTIFIER ::= { sipCommonMIBObjects 5 } + +-- Transaction statistics +sipCommonStatsTrans OBJECT IDENTIFIER ::= { sipCommonMIBObjects 6 } + +-- Method retry statistics +sipCommonStatsRetry OBJECT IDENTIFIER ::= { sipCommonMIBObjects 7 } + +-- Other statistics +sipCommonOtherStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 8 } + +-- Accessible-for-notify objects +sipCommonNotifObjects OBJECT IDENTIFIER ::= { sipCommonMIBObjects 9 } + +-- +-- Common Configuration Objects +-- +sipCommonCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the common configuration objects applicable + to all SIP entities." + ::= { sipCommonCfgBase 1 } + +sipCommonCfgEntry OBJECT-TYPE + SYNTAX SipCommonCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common configuration. + + Each row represents objects for a particular SIP entity + instance present in this system. applIndex is used to uniquely + identify these instances of SIP entities and correlate them + through the common framework of the NETWORK-SERVICES-MIB (RFC + 2788)." + INDEX { applIndex } + ::= { sipCommonCfgTable 1 } + +SipCommonCfgEntry ::= SEQUENCE { + + + sipCommonCfgProtocolVersion SnmpAdminString, + sipCommonCfgServiceOperStatus INTEGER, + sipCommonCfgServiceStartTime TimeTicks, + sipCommonCfgServiceLastChange TimeTicks, + sipCommonCfgOrganization SnmpAdminString, + sipCommonCfgMaxTransactions Unsigned32, + sipCommonCfgServiceNotifEnable BITS, + sipCommonCfgEntityType SipTCEntityRole + } + +sipCommonCfgProtocolVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will reflect the version of SIP supported by this + SIP entity. It will follow the same format as SIP version + information contained in the SIP messages generated by this SIP + entity. For example, entities supporting SIP version 2 will + return 'SIP/2.0' as dictated by the standard." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonCfgEntry 1 } + +sipCommonCfgServiceOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + up(2), + down(3), + congested(4), + restarting(5), + quiescing(6), + testing(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current operational state of + the SIP application. + + unknown : The operational status cannot be determined + for some reason. + up : The application is operating normally and is + processing (receiving and possibly issuing) SIP + requests and responses. + down : The application is currently unable to process + SIP messages. + congested : The application is operational but no additional + + + + inbound transactions can be accommodated at the + moment. + restarting : The application is currently unavailable, but it + is in the process of restarting and will + presumably, soon be able to process SIP messages. + quiescing : The application is currently operational + but has been administratively put into + quiescence mode. Additional inbound + transactions MAY be rejected. + testing : The application is currently in test mode + and MAY not be able to process SIP messages. + + The operational status values defined for this object are not + based on any specific information contained in the SIP + standard." + ::= { sipCommonCfgEntry 2 } + +sipCommonCfgServiceStartTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the SIP entity was last + started. If started prior to the last re-initialization of the + local network management subsystem, then this object contains a + zero value." + ::= { sipCommonCfgEntry 3 } + +sipCommonCfgServiceLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the SIP entity 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." + ::= { sipCommonCfgEntry 4 } + +sipCommonCfgOrganization OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the organization name that the SIP entity + inserts into Organization headers of SIP messages processed by + this system. If the string is empty, no Organization header is + to be generated." + + + + REFERENCE + "RFC 3261, Section 20.25" + ::= { sipCommonCfgEntry 5 } + +sipCommonCfgMaxTransactions OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the maximum number of simultaneous + transactions per second that the SIP entity can manage. In + general, the value of this object SHOULD reflect a level of + transaction processing per second that is considered high + enough to impact the system's CPU and/or memory resources to + the point of deteriorating SIP call processing but not high + enough to cause catastrophic system failure." + ::= { sipCommonCfgEntry 6 } + +sipCommonCfgServiceNotifEnable OBJECT-TYPE + SYNTAX BITS { + sipCommonServiceColdStart(0), + sipCommonServiceWarmStart(1), + sipCommonServiceStatusChanged(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies which SIP service related notifications + are enabled. Each bit represents a specific notification. If + a bit has a value 1, the associated notification is enabled and + will be generated by the SIP entity at the appropriate time. + + Support for these notifications is OPTIONAL: either none or all + notification values are supported. If an implementation does + not support this object, it should return a 'noSuchObject' + exception to an SNMP GET operation. If notifications are + supported, this object's default value SHOULD reflect + sipCommonServiceColdStart and sipCommonServiceWarmStart enabled + and sipCommonServiceStatusChanged disabled. + + This object value SHOULD persist across reboots." + DEFVAL { { sipCommonServiceColdStart, + sipCommonServiceWarmStart } } + ::= { sipCommonCfgEntry 7 } + +sipCommonCfgEntityType OBJECT-TYPE + SYNTAX SipTCEntityRole + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object identifies the list of SIP entities to which this + row is related. It is defined as a bit map. Each bit + represents a type of SIP entity. If a bit has value 1, the + SIP entity represented by this row plays the role of this + entity type. If a bit has value 0, the SIP entity represented + by this row does not act as this entity type. Combinations + of bits can be set when the SIP entity plays multiple SIP + roles." + ::= { sipCommonCfgEntry 8 } + +-- +-- Support for multiple ports +-- +sipCommonPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of ports that each SIP entity in + this system is allowed to use. These ports can be advertised + using the Contact header in a REGISTER request or response." + ::= { sipCommonCfgBase 2 } + +sipCommonPortEntry OBJECT-TYPE + SYNTAX SipCommonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specification of a particular port. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonPort } + ::= { sipCommonPortTable 1 } + +SipCommonPortEntry ::= SEQUENCE { + sipCommonPort InetPortNumber, + sipCommonPortTransportRcv SipTCTransportProtocol + } + +sipCommonPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This object reflects a particular port that can be used by the + SIP application." + ::= { sipCommonPortEntry 1 } + +sipCommonPortTransportRcv OBJECT-TYPE + SYNTAX SipTCTransportProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will specify the transport protocol the SIP entity + will use to receive SIP messages. + + This object is a bit map. Each bit represents a transport + protocol. If a bit has value 1, then that transport protocol + is currently being used. If a bit has value 0, then that + transport protocol is currently not being used." + ::= { sipCommonPortEntry 2 } + +-- +-- Support for SIP option tags (SIP extensions). +-- SIP extensions MAY be supported or required by SIP entities. +-- + +sipCommonOptionTagTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonOptionTagEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of the SIP option tags (SIP + extensions) that are either required, supported, or + unsupported by the SIP entity. These option tags are + used in the Require, Proxy-Require, Supported, and + Unsupported header fields. + + Example: If a user agent client supports, and requires the + server to support, reliability of provisional responses + (RFC 3262), this table contains a row with the option tag string + '100rel' in sipCommonOptionTag and the OCTET STRING value of + '1010 0000' or '0xA0' in sipCommonOptionTagHeaderField. + + If a server does not support the required feature (indicated in + a Require header to a UAS, or in a Proxy-Require to a Proxy + Server), the server returns a 420 Bad Extension listing the + feature in an Unsupported header. + + Normally, the list of such features supported by an entity is + static (i.e., will not change over time)." + + + + REFERENCE + "RFC 3261, Sections 19.2, 20.32, 20.29, 20.37, and 20.40" + ::= { sipCommonCfgBase 3 } + +sipCommonOptionTagEntry OBJECT-TYPE + SYNTAX SipCommonOptionTagEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular SIP option tag (extension) supported or + unsupported by the SIP entity, and which may be supported or + required by a peer. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonOptionTagIndex } + ::= { sipCommonOptionTagTable 1 } + +SipCommonOptionTagEntry ::= SEQUENCE { + sipCommonOptionTagIndex Unsigned32, + sipCommonOptionTag SnmpAdminString, + sipCommonOptionTagHeaderField SipTCOptionTagHeaders + } + +sipCommonOptionTagIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table." + ::= { sipCommonOptionTagEntry 1 } + +sipCommonOptionTag OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the SIP option tag. The option tag names + are registered with IANA and available at http://www.iana.org." + REFERENCE "RFC 3261, Section 27.1" + ::= { sipCommonOptionTagEntry 2 } + +sipCommonOptionTagHeaderField OBJECT-TYPE + SYNTAX SipTCOptionTagHeaders + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object indicates whether the SIP option tag is supported + (Supported header), unsupported (Unsupported header), or + required (Require or Proxy-Require header) by the SIP entity. + A SIP option tag may be both supported and required." + ::= { sipCommonOptionTagEntry 3 } + +-- +-- Supported SIP Methods +-- +sipCommonMethodSupportedTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonMethodSupportedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of methods supported by each SIP + entity in this system (see the standard set of SIP methods in + Section 7.1 of RFC 3261). Any additional methods that may be + incorporated into the SIP protocol can be represented by this + table without any requirement to update this MIB module. + + The table is informational in nature and conveys capabilities + of the managed system to the SNMP Manager. + + From a protocol point of view, the list of methods advertised + by the SIP entity in the Allow header (Section 20.5 of RFC + 3261) MUST be consistent with the methods reflected in this + table." + ::= { sipCommonCfgBase 4 } + +sipCommonMethodSupportedEntry OBJECT-TYPE + SYNTAX SipCommonMethodSupportedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular method supported by the SIP entity. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonMethodSupportedIndex } + ::= { sipCommonMethodSupportedTable 1 } + +SipCommonMethodSupportedEntry ::= SEQUENCE { + sipCommonMethodSupportedIndex Unsigned32, + sipCommonMethodSupportedName SipTCMethodName + } + + + +sipCommonMethodSupportedIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table + and reflects an assigned number used to identify a specific + SIP method. + + This identifier is suitable for referencing the associated + method throughout this and other MIBs supported by this managed + system." + ::= { sipCommonMethodSupportedEntry 1 } + +sipCommonMethodSupportedName OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the supported method's name. The method + name MUST be all upper case (e.g., 'INVITE')." + ::= { sipCommonMethodSupportedEntry 2 } + +-- +-- SIP Timer Configuration +-- +sipCommonCfgTimerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonCfgTimerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains timer configuration objects applicable to + SIP user agent and SIP stateful Proxy Server entities." + ::= { sipCommonCfgTimer 1 } + +sipCommonCfgTimerEntry OBJECT-TYPE + SYNTAX SipCommonCfgTimerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of timer configuration. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788). + The objects in this table entry SHOULD be non-volatile and + their value SHOULD be kept at reboot." + + + + INDEX { applIndex } + ::= { sipCommonCfgTimerTable 1 } + +SipCommonCfgTimerEntry ::= SEQUENCE { + sipCommonCfgTimerA Unsigned32, + sipCommonCfgTimerB Unsigned32, + sipCommonCfgTimerC Unsigned32, + sipCommonCfgTimerD Unsigned32, + sipCommonCfgTimerE Unsigned32, + sipCommonCfgTimerF Unsigned32, + sipCommonCfgTimerG Unsigned32, + sipCommonCfgTimerH Unsigned32, + sipCommonCfgTimerI Unsigned32, + sipCommonCfgTimerJ Unsigned32, + sipCommonCfgTimerK Unsigned32, + sipCommonCfgTimerT1 Unsigned32, + sipCommonCfgTimerT2 Unsigned32, + sipCommonCfgTimerT4 Unsigned32 + } + +sipCommonCfgTimerA OBJECT-TYPE + SYNTAX Unsigned32 (100..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for the INVITE method. The retransmit timer doubles after each + retransmission, ensuring an exponential backoff in network + traffic. This object represents the initial time a SIP entity + will wait to receive a provisional response to an INVITE before + resending the INVITE request." + REFERENCE + "RFC 3261, Section 17.1.1.2" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 1 } + +sipCommonCfgTimerB OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive a final response to an INVITE. The timer is started + upon transmission of the initial INVITE request." + REFERENCE + "RFC 3261, Section 17.1.1.2" + + + + DEFVAL { 32000 } +::= { sipCommonCfgTimerEntry 2 } + +sipCommonCfgTimerC OBJECT-TYPE + SYNTAX Unsigned32 (180000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP Proxy Server will + wait to receive a provisional response to an INVITE. The Timer + C MUST be set for each client transaction when an INVITE + request is proxied." + REFERENCE + "RFC 3261, Section 16.6" + DEFVAL { 180000 } + ::= { sipCommonCfgTimerEntry 3 } + +sipCommonCfgTimerD OBJECT-TYPE + SYNTAX Unsigned32 (0..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the amount of time that the server + transaction can remain in the 'Completed' state when unreliable + transports are used. The default value MUST be equal to or + greater than 32000 for UDP transport, and its value MUST be 0 + for TCP/SCTP transport." + REFERENCE + "RFC 3261, Section 17.1.1.2" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 4 } + +sipCommonCfgTimerE OBJECT-TYPE + SYNTAX Unsigned32 (100..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for a non-INVITE method while in 'Trying' state. The + retransmit timer doubles after each retransmission until it + reaches T2 to ensure an exponential backoff in network traffic. + This object represents the initial time a SIP entity will wait + to receive a provisional response to the request before + resending the non-INVITE request." + REFERENCE + + + + "RFC 3261, Section 17.1.2.2" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 5 } + +sipCommonCfgTimerF OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive a final response to a non-INVITE request. The timer is + started upon transmission of the initial request." + REFERENCE + "RFC 3261, Section 17.1.2.2" + DEFVAL { 32000 } + + ::= { sipCommonCfgTimerEntry 6 } + +sipCommonCfgTimerG OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for final responses to INVITE requests. If timer G fires, the + response is passed to the transport layer again for + retransmission, and timer G is set to fire in MIN(2*T1, T2) + seconds. From then on, when timer G fires, the response is + passed to the transport again for transmission, and timer G is + reset with a value that doubles, unless that value exceeds T2, + in which case, it is reset with the value of T2. The default + value MUST be T1 for UDP transport, and its value MUST be 0 for + reliable transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 7 } + +sipCommonCfgTimerH OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a server will wait to + receive an ACK before it abandons retransmitting the response. + + + + The timer is started upon entering the 'Completed' state." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 8 } + +sipCommonCfgTimerI OBJECT-TYPE + SYNTAX Unsigned32 (0..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive additional ACK message retransmissions. + + The timer is started upon entering the 'Confirmed' state. The + default value MUST be T4 for UDP transport and its value MUST + be 0 for reliable transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 9 } + +sipCommonCfgTimerJ OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP server will wait to + receive retransmissions of non-INVITE requests. The timer is + started upon entering the 'Completed' state for non-INVITE + transactions. When timer J fires, the server MUST transition to + the 'Terminated' state." + REFERENCE + "RFC 3261, Section 17.2.2" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 10 } + +sipCommonCfgTimerK OBJECT-TYPE + SYNTAX Unsigned32 (0..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP client will wait to + receive retransmissions of responses to non-INVITE requests. + The timer is started upon entering the 'Completed' state for + + + + non-INVITE transactions. When timer K fires, the server MUST + transition to the 'Terminated' state. The default value MUST + be T4 for UDP transport, and its value MUST be 0 for reliable + transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.1.2.2" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 11 } + +sipCommonCfgTimerT1 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T1 timer for a SIP entity. T1 is an + estimate of the round-trip time (RTT) between the client and + server transactions." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 12 } + +sipCommonCfgTimerT2 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T2 timer for a SIP entity. T2 is the + maximum retransmit interval for non-INVITE requests and INVITE + responses. It's used in various parts of the protocol to reset + other Timer* objects to this value." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 4000 } + ::= { sipCommonCfgTimerEntry 13 } + +sipCommonCfgTimerT4 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T4 timer for a SIP entity. T4 is the + maximum duration a message will remain in the network. It + represents the amount of time the network will take to clear + messages between client and server transactions. It's used in + + + + various parts of the protocol to reset other Timer* objects to + this value." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 14 } + +-- +-- Common Statistics Objects +-- + +-- +-- Summary Statistics +-- +sipCommonSummaryStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonSummaryStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the summary statistics objects applicable + to all SIP entities. Each row represents those objects for a + particular SIP entity present in this system." + ::= { sipCommonSummaryStats 1 } + +sipCommonSummaryStatsEntry OBJECT-TYPE + SYNTAX SipCommonSummaryStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonSummaryStatsTable 1 } + +SipCommonSummaryStatsEntry ::= SEQUENCE { + sipCommonSummaryInRequests Counter32, + sipCommonSummaryOutRequests Counter32, + sipCommonSummaryInResponses Counter32, + sipCommonSummaryOutResponses Counter32, + sipCommonSummaryTotalTransactions Counter32, + sipCommonSummaryDisconTime TimeStamp + } + +sipCommonSummaryInRequests OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the total number of SIP request messages + received by the SIP entity, including retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 1 } + +sipCommonSummaryOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP request messages + sent out (originated and relayed) by the SIP entity. Where a + particular message is sent more than once, for example as a + retransmission or as a result of forking, each transmission is + counted separately. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 2 } + +sipCommonSummaryInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP response messages + received by the SIP entity, including retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 3 } + +sipCommonSummaryOutResponses OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP response messages + sent (originated and relayed) by the SIP entity including + retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 4 } + +sipCommonSummaryTotalTransactions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of transactions that + are in progress and transactions that have reached the + 'Terminated' state. It is not applicable to stateless SIP Proxy + Servers. + + A SIP transaction occurs between a client and a server, and + comprises all messages from the first request sent from the + client to the server, up to a final (non-1xx) response sent + from the server to the client. + + If the request is INVITE and the final response is a non-2xx, + the transaction also include an ACK to the response. The ACK + for a 2xx response to an INVITE request is a separate + transaction. + + The branch ID parameter in the Via header field values serves + as a transaction identifier. + + A transaction is identified by the CSeq sequence number within + a single call leg. The ACK request has the same CSeq number as + the corresponding INVITE request, but comprises a transaction + of its own. + + In the case of a forked request, each branch counts as a single + transaction. + + For a transaction stateless Proxy Server, this counter is + always 0. + + + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 5 } + +sipCommonSummaryDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + summary statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonSummaryStatsEntry 6 } + +-- +-- SIP Method Statistics +-- Total counts for each SIP method. +-- +sipCommonMethodStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonMethodStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the method statistics objects for SIP + entities. Each row represents those objects for a particular + SIP entity present in this system." + ::= { sipCommonMethodStats 1 } + +sipCommonMethodStatsEntry OBJECT-TYPE + SYNTAX SipCommonMethodStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of per entity method statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonMethodStatsName } + ::= { sipCommonMethodStatsTable 1 } + +SipCommonMethodStatsEntry ::= SEQUENCE { + sipCommonMethodStatsName SipTCMethodName, + sipCommonMethodStatsOutbounds Counter32, + + + + sipCommonMethodStatsInbounds Counter32, + sipCommonMethodStatsDisconTime TimeStamp + + } + +sipCommonMethodStatsName OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the SIP method related to the + objects in a particular row." + ::= { sipCommonMethodStatsEntry 1 } + +sipCommonMethodStatsOutbounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of requests sent by the + SIP entity, excluding retransmissions. Retransmissions are + counted separately and are not reflected in this counter. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonMethodStatsDisconTime object in the + same row." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonMethodStatsEntry 2 } + +sipCommonMethodStatsInbounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of requests received by + the SIP entity. Retransmissions are counted separately and are + not reflected in this counter. A Management Station can detect + discontinuities in this counter by monitoring the + sipCommonMethodStatsDisconTime object in the same row." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonMethodStatsEntry 3 } + +sipCommonMethodStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of the sysUpTime object when the counters for the + method statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonMethodStatsEntry 4 } + +-- +-- Support for specific status codes +-- +sipCommonStatusCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatusCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of SIP status codes that each SIP + entity in this system has been requested to monitor. It is the + mechanism by which specific status codes are monitored. + Entries created in this table must not persist across reboots." + ::= { sipCommonStatusCode 1 } + +sipCommonStatusCodeEntry OBJECT-TYPE + SYNTAX SipCommonStatusCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This row contains information on a particular SIP status code + that the SIP entity has been requested to monitor. Entries + created in this table must not persist across reboots. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonStatusCodeMethod, + sipCommonStatusCodeValue } + ::= { sipCommonStatusCodeTable 1 } + +SipCommonStatusCodeEntry ::= SEQUENCE { + sipCommonStatusCodeMethod SipTCMethodName, + sipCommonStatusCodeValue Unsigned32, + sipCommonStatusCodeIns Counter32, + sipCommonStatusCodeOuts Counter32, + sipCommonStatusCodeRowStatus RowStatus, + sipCommonStatusCodeDisconTime TimeStamp + } + +sipCommonStatusCodeMethod OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the + table." + ::= { sipCommonStatusCodeEntry 1 } + +sipCommonStatusCodeValue OBJECT-TYPE + SYNTAX Unsigned32 (100..999) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains a SIP status code value that the SIP + entity has been requested to monitor. All of the other + information in the row is related to this value." + ::= { sipCommonStatusCodeEntry 2 } + +sipCommonStatusCodeIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of response messages + received by the SIP entity with the status code value contained + in the sipCommonStatusCodeValue column. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service, or when the + monitoring of the status code is temporarily disabled. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonStatusCodeDisconTime object in the + same row." + ::= { sipCommonStatusCodeEntry 3 } + +sipCommonStatusCodeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of response messages sent + by the SIP entity with the status code value contained in the + sipCommonStatusCodeValue column. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service, or when the + monitoring of the Status code is temporarily disabled. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonStatusCodeDisconTime object in the + same row." + + + + ::= { sipCommonStatusCodeEntry 4 } + +sipCommonStatusCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row augmentation in sipCommonStatusCodeNotifTable will be + governed by the value of this RowStatus. + + The values 'createAndGo' and 'destroy' are the only valid + values allowed for this object. If a row exists, it will + reflect a status of 'active' when queried." + ::= { sipCommonStatusCodeEntry 5 } + +sipCommonStatusCodeDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + status code statistics objects in this row last experienced + a discontinuity." + ::= { sipCommonStatusCodeEntry 6 } + +-- +-- Support for specific status code notifications +-- + +sipCommonStatusCodeNotifTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatusCodeNotifEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects to control notifications related to + particular status codes that each SIP entity in this system has + been requested to monitor. + + There is an entry in this table corresponding to each entry in + sipCommonStatusCodeTable. Therefore, this table augments + sipCommonStatusCodeTable and utilizes the same index + methodology. + + The objects in this table are not included directly in the + sipCommonStatusCodeTable simply to keep the status code + notification control objects separate from the actual status + code statistics." + ::= { sipCommonStatusCode 2 } + + + +sipCommonStatusCodeNotifEntry OBJECT-TYPE + SYNTAX SipCommonStatusCodeNotifEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This row contains information controlling notifications for a + particular SIP status code that the SIP entity has been + requested to monitor." + AUGMENTS { sipCommonStatusCodeEntry } + ::= { sipCommonStatusCodeNotifTable 1 } + +SipCommonStatusCodeNotifEntry ::= SEQUENCE { + sipCommonStatusCodeNotifSend TruthValue, + sipCommonStatusCodeNotifEmitMode INTEGER, + sipCommonStatusCodeNotifThresh Unsigned32, + sipCommonStatusCodeNotifInterval Unsigned32 + } + +sipCommonStatusCodeNotifSend OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls whether a sipCommonStatusCodeNotif is + emitted when the status code value specified by + sipCommonStatusCodeValue is sent or received. If the value of + this object is 'true', then a notification is sent. If it is + 'false', no notification is sent. + Note well that a notification MAY be emitted for every message + sent or received that contains the particular status code. + Depending on the status code involved, this can cause a + significant number of notification emissions that could be + detrimental to network performance. Managers are forewarned to + be prudent in the use of this object to enable notifications. + Look to sipCommonStatusCodeNotifEmitMode for alternative + controls for sipCommonStatusCodeNotif emissions." + DEFVAL { false } + ::= { sipCommonStatusCodeNotifEntry 1 } + +sipCommonStatusCodeNotifEmitMode OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + oneShot(2), + triggered(3) -- read-only + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The object sipCommonStatusCodeNotifSend MUST be set to 'true' + for the values of this object to have any effect. It is + RECOMMENDED that the desired emit mode be established by this + object prior to setting sipCommonStatusCodeNotifSend to 'true'. + This object and the sipCommonStatusCodeNotifSend object can + obviously be set independently, but their respective values + will have a dependency on each other and the resulting + notifications. + + This object specifies the mode for emissions of + sipCommonStatusCodeNotif notifications. + + normal : sipCommonStatusCodeNotif notifications will be + emitted by the system for each SIP response + message sent or received that contains the + desired status code. + + oneShot : Only one sipCommonStatusCodeNotif notification + will be emitted. It will be the next SIP response + message sent or received that contains the + desired status code. + + No more notifications are emitted until this + object is set to 'oneShot' again or set to + 'normal'. This option is provided as a means of + quelling the potential promiscuous behavior that + can be associated with the + sipCommonStatusCodeNotif. + + triggered : This value is only readable and cannot be set. It + reflects that the 'oneShot' case has occurred, + and indicates that the mode needs to be reset to + get further notifications. The mode is reset by + setting this object to 'oneShot' or 'normal'." + DEFVAL { oneShot } + ::= { sipCommonStatusCodeNotifEntry 2 } + +sipCommonStatusCodeNotifThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the number of response messages sent or + received by this system that are considered excessive. Based + on crossing that threshold, a + sipCommonStatusCodeThreshExceededInNotif notification or a + sipCommonStatusCodeThreshExceededOutNotif will be sent. The + sipCommonStatusCodeThreshExceededInNotif and + + + + sipCommonStatusCodeThreshExceededOutNotif notifications can be + used as an early warning mechanism in lieu of using + sipCommonStatusCodeNotif. + + Note that the configuration applied by this object will be + applied equally to inbound and outbound response messages." + DEFVAL { 500 } + ::= { sipCommonStatusCodeNotifEntry 3 } + +sipCommonStatusCodeNotifInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the time interval over which, if + sipCommonStatusCodeThresh is exceeded with respect to sent or + received messages, a sipCommonStatusCodeThreshExceededInNotif + or sipCommonStatusCodeThreshExceededOutNotif notification will + be sent. + + Note that the configuration applied by this object will be + applied equally to inbound and outbound response messages." + DEFVAL { 60 } + ::= { sipCommonStatusCodeNotifEntry 4 } + +-- +-- Transaction Statistics +-- +sipCommonTransCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonTransCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the transactions currently + awaiting definitive responses by each SIP entity in this + system. + + This table does not apply to transaction stateless Proxy + Servers." + ::= { sipCommonStatsTrans 1 } + +sipCommonTransCurrentEntry OBJECT-TYPE + SYNTAX SipCommonTransCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular SIP entity's current transactions. + + + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonTransCurrentTable 1 } + +SipCommonTransCurrentEntry ::= SEQUENCE { + sipCommonTransCurrentactions Gauge32 + } + +sipCommonTransCurrentactions OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of transactions awaiting + definitive (non-1xx) response. In the case of a forked + request, each branch counts as a single transaction + corresponding to the entity identified by applIndex." +::= { sipCommonTransCurrentEntry 1 } + +-- +-- SIP Retry Statistics +-- +-- This group contains various statistics objects about +-- retransmission counts. +-- +sipCommonStatsRetryTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatsRetryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains retry statistics objects applicable to each + SIP entity in this system." + ::= { sipCommonStatsRetry 1 } + +sipCommonStatsRetryEntry OBJECT-TYPE + SYNTAX SipCommonStatsRetryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of retry statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + + + + INDEX { applIndex, sipCommonStatsRetryMethod } + ::= { sipCommonStatsRetryTable 1 } + +SipCommonStatsRetryEntry ::= SEQUENCE { + sipCommonStatsRetryMethod SipTCMethodName, + sipCommonStatsRetries Counter32, + sipCommonStatsRetryFinalResponses Counter32, + sipCommonStatsRetryNonFinalResponses Counter32, + sipCommonStatsRetryDisconTime TimeStamp + } + +sipCommonStatsRetryMethod OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the SIP method related to the + objects in a row." + ::= { sipCommonStatsRetryEntry 1 } + +sipCommonStatsRetries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of request + retransmissions that have been sent by the SIP entity. Note + that there could be multiple retransmissions per request. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 2 } + +sipCommonStatsRetryFinalResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of Final Response retries + that have been sent by the SIP entity. Note that there could + be multiple retransmissions per request. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + + + + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 3 } + +sipCommonStatsRetryNonFinalResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of non-Final Response + retries that have been sent by the SIP entity. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 4 } + +sipCommonStatsRetryDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + retry statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonStatsRetryEntry 5 } + +-- +-- Other Common Statistics +-- +sipCommonOtherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonOtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains other common statistics supported by each + SIP entity in this system." + ::= { sipCommonOtherStats 1 } + +sipCommonOtherStatsEntry OBJECT-TYPE + SYNTAX SipCommonOtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular SIP entity's other common + statistics. + + + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonOtherStatsTable 1 } + +SipCommonOtherStatsEntry ::= SEQUENCE { + sipCommonOtherStatsNumUnsupportedUris Counter32, + sipCommonOtherStatsNumUnsupportedMethods Counter32, + sipCommonOtherStatsOtherwiseDiscardedMsgs Counter32, + sipCommonOtherStatsDisconTime TimeStamp + } + +sipCommonOtherStatsNumUnsupportedUris OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RequestURIs received with an unsupported scheme. + A server normally responds to such requests with a 400 Bad + Request status code. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 1 } + +sipCommonOtherStatsNumUnsupportedMethods OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SIP requests received with unsupported methods. A + server normally responds to such requests with a 501 (Not + Implemented) or 405 (Method Not Allowed). + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 2 } + +sipCommonOtherStatsOtherwiseDiscardedMsgs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SIP messages received that, for any number of + reasons, was discarded without a response. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 3 } + +sipCommonOtherStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonOtherStatsEntry 4 } + +-- +-- Notification related objects +-- + +-- +-- Status code related notification objects. +-- +sipCommonStatusCodeNotifTo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the To header in the message + containing the status code that caused the notification. The + header name will be part of this object value. For example, + 'To: Watson '." + ::= { sipCommonNotifObjects 1 } + +sipCommonStatusCodeNotifFrom OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the From header in the + message containing the status code that caused the + + + + notification. The header name will be part of this object + value. For example, 'From: Watson '." + ::= { sipCommonNotifObjects 2 } + +sipCommonStatusCodeNotifCallId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the Call-ID in the message + containing the status code that caused the notification. The + header name will be part of this object value. For example, + 'Call-ID: 5551212@example.com'." + ::= { sipCommonNotifObjects 3 } + +sipCommonStatusCodeNotifCSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the CSeq value in the message containing + the status code that caused the notification. The header name + will be part of this object value. For example, 'CSeq: 1722 + INVITE'." + ::= { sipCommonNotifObjects 4 } + +-- +-- General notification related objects. +-- +sipCommonNotifApplIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the applIndex as described in RFC 2788. + This object is created in order to allow a variable binding + containing a value of applIndex in a notification." + ::= { sipCommonNotifObjects 5 } + +sipCommonNotifSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains a sequence number for each notification + generated by this SIP entity. Each notification SHOULD have a + unique sequence number. A network manager can use this + information to determine whether notifications from a + + + + particular SIP entity have been missed. The value of this + object MUST start at 1 and increase by 1 with each generated + notification. If a system restarts, the sequence number MAY + start again from 1." + ::= { sipCommonNotifObjects 6 } + +-- +-- Notifications +-- +sipCommonStatusCodeNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeNotifTo, + sipCommonStatusCodeNotifFrom, + sipCommonStatusCodeNotifCallId, + sipCommonStatusCodeNotifCSeq, + sipCommonStatusCodeIns, + sipCommonStatusCodeOuts + } + STATUS current + DESCRIPTION + "Signifies that a specific status code has been sent or received + by the system." + ::= { sipCommonMIBNotifications 1 } + +sipCommonStatusCodeThreshExceededInNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeIns + } + STATUS current + DESCRIPTION + "Signifies that a specific status code was found to have been + received by the system frequently enough to exceed the + configured threshold. This notification can be used as + an early warning mechanism in lieu of using + sipCommonStatusCodeNotif." + ::= { sipCommonMIBNotifications 2 } + +sipCommonStatusCodeThreshExceededOutNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeOuts + } + STATUS current + + + + DESCRIPTION + "Signifies that a specific status code was found to have been + sent by the system enough to exceed the configured threshold. + This notification can be used as an early warning mechanism in + lieu of using sipCommonStatusCodeNotif." + ::= { sipCommonMIBNotifications 3 } + +sipCommonServiceColdStart NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceStartTime + } + STATUS current + DESCRIPTION + "Signifies that the SIP service has reinitialized itself or + started for the first time. This SHOULD result from a hard + 'down' to 'up' administrative status change. The configuration + or behavior of the service MAY be altered." + ::= { sipCommonMIBNotifications 4 } + +sipCommonServiceWarmStart NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceLastChange + } + STATUS current + DESCRIPTION + "Signifies that the SIP service has reinitialized itself and is + restarting after an administrative 'reset'. The configuration + or behavior of the service MAY be altered." + ::= { sipCommonMIBNotifications 5 } + +sipCommonServiceStatusChanged NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceLastChange, + sipCommonCfgServiceOperStatus + } + STATUS current + DESCRIPTION + "Signifies that the SIP service operational status has changed." + ::= { sipCommonMIBNotifications 6 } + +-- +-- Conformance + + + +-- +sipCommonMIBCompliances + OBJECT IDENTIFIER ::= { sipCommonMIBConformance 1 } +sipCommonMIBGroups + OBJECT IDENTIFIER ::= { sipCommonMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipCommonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities." + + MODULE -- this module + MANDATORY-GROUPS { sipCommonConfigGroup, + sipCommonStatsGroup + } + + OBJECT sipCommonStatusCodeRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT sipCommonCfgServiceNotifEnable + MIN-ACCESS not-accessible + DESCRIPTION + "This object is optional and does not need to be supported." + + GROUP sipCommonInformationalGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any support for these objects, as they provide optional + information." + + GROUP sipCommonConfigTimerGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any timer configuration." + + GROUP sipCommonStatsRetryGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any retry statistics." + + GROUP sipCommonNotifGroup + DESCRIPTION + + + + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the + sipCommonStatusCodeNotifGroup and sipCommonNotifObjectsGroup + MUST also be implemented." + + GROUP sipCommonStatusCodeNotifGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the sipCommonNotifGroup and + sipCommonNotifObjectsGroup MUST also be implemented." + + GROUP sipCommonNotifObjectsGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the + sipCommonStatusCodeNotifGroup and sipCommonNotifGroup MUST also + be implemented." + + ::= { sipCommonMIBCompliances 1 } + +-- +-- Units of Conformance +-- +sipCommonConfigGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgProtocolVersion, + sipCommonCfgServiceOperStatus, + sipCommonCfgServiceStartTime, + sipCommonCfgServiceLastChange, + sipCommonPortTransportRcv, + sipCommonOptionTag, + sipCommonOptionTagHeaderField, + sipCommonCfgMaxTransactions, + sipCommonCfgServiceNotifEnable, + sipCommonCfgEntityType, + sipCommonMethodSupportedName + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration common to all + SIP entities." + ::= { sipCommonMIBGroups 1 } + +sipCommonInformationalGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgOrganization + } + STATUS current + + + + DESCRIPTION + "A collection of objects providing configuration common to all + SIP entities." + ::= { sipCommonMIBGroups 2 } + +sipCommonConfigTimerGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgTimerA, + sipCommonCfgTimerB, + sipCommonCfgTimerC, + sipCommonCfgTimerD, + sipCommonCfgTimerE, + sipCommonCfgTimerF, + sipCommonCfgTimerG, + sipCommonCfgTimerH, + sipCommonCfgTimerI, + sipCommonCfgTimerJ, + sipCommonCfgTimerK, + sipCommonCfgTimerT1, + sipCommonCfgTimerT2, + sipCommonCfgTimerT4 + } + STATUS current + DESCRIPTION + "A collection of objects providing timer configuration common to + all SIP entities." + ::= { sipCommonMIBGroups 3 } + +sipCommonStatsGroup OBJECT-GROUP + OBJECTS { + sipCommonSummaryInRequests, + sipCommonSummaryOutRequests, + sipCommonSummaryInResponses, + sipCommonSummaryOutResponses, + sipCommonSummaryTotalTransactions, + sipCommonSummaryDisconTime, + sipCommonMethodStatsOutbounds, + sipCommonMethodStatsInbounds, + sipCommonMethodStatsDisconTime, + sipCommonStatusCodeIns, + sipCommonStatusCodeOuts, + sipCommonStatusCodeRowStatus, + sipCommonStatusCodeDisconTime, + sipCommonTransCurrentactions, + sipCommonOtherStatsNumUnsupportedUris, + sipCommonOtherStatsNumUnsupportedMethods, + sipCommonOtherStatsOtherwiseDiscardedMsgs, + sipCommonOtherStatsDisconTime + + + + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics common to all SIP + entities." + ::= { sipCommonMIBGroups 4 } + +sipCommonStatsRetryGroup OBJECT-GROUP + OBJECTS { + sipCommonStatsRetries, + sipCommonStatsRetryFinalResponses, + sipCommonStatsRetryNonFinalResponses, + sipCommonStatsRetryDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing retry statistics." + ::= { sipCommonMIBGroups 5 } + +sipCommonNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + sipCommonStatusCodeNotif, + sipCommonStatusCodeThreshExceededInNotif, + sipCommonStatusCodeThreshExceededOutNotif, + sipCommonServiceColdStart, + sipCommonServiceWarmStart, + sipCommonServiceStatusChanged + } + + STATUS current + DESCRIPTION + "A collection of notifications common to all SIP entities." + ::= { sipCommonMIBGroups 6 } + +sipCommonStatusCodeNotifGroup OBJECT-GROUP + OBJECTS { + sipCommonStatusCodeNotifSend, + sipCommonStatusCodeNotifEmitMode, + sipCommonStatusCodeNotifThresh, + sipCommonStatusCodeNotifInterval + } + STATUS current + DESCRIPTION + "A collection of objects related to the control and attribution + of notifications common to all SIP entities." + ::= { sipCommonMIBGroups 7 } + +sipCommonNotifObjectsGroup OBJECT-GROUP + + + + OBJECTS { + sipCommonStatusCodeNotifTo, + sipCommonStatusCodeNotifFrom, + sipCommonStatusCodeNotifCallId, + sipCommonStatusCodeNotifCSeq, + sipCommonNotifApplIndex, + sipCommonNotifSequenceNumber + } + STATUS current + DESCRIPTION + "A collection of accessible-for-notify objects related to the + notification defined in this MIB module." + ::= { sipCommonMIBGroups 8 } + +END diff --git a/mibs/ietf/SIP-MIB b/mibs/ietf/SIP-MIB new file mode 100644 index 0000000..5878ace --- /dev/null +++ b/mibs/ietf/SIP-MIB @@ -0,0 +1,1117 @@ +SIP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, IpAddress FROM SNMPv2-SMI + TimeStamp, TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + transmission, ifIndex, mib-2 FROM RFC1213-MIB; + +-- This is the MIB module for the SMDS Interface objects. + +sipMIB MODULE-IDENTITY + LAST-UPDATED "9403311818Z" + ORGANIZATION "IETF Interfaces Working Group" + CONTACT-INFO + " Tracy Brown + Postal: Bell Communications Research + 331 Newman Springs Road + P.O. Box 7020 + Red Bank, NJ 07701-7020 + US + + Tel: +1 908 758-2107 + Fax: +1 908 758-4177 + E-mail: tacox@mail.bellcore.com + + Kaj Tesink + Postal: Bell Communications Research + 331 Newman Springs Road + P.O. Box 7020 + Red Bank, NJ 07701-7020 + US + + Tel: +1 908 758 5254 + Fax: +1 908 758 4177 + E-mail: kaj@cc.bellcore.com." + DESCRIPTION + "The MIB module to describe + SMDS interfaces objects." + ::= { mib-2 36 } + +SMDSAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "The 60-bit SMDS address, + preceded by 4 bits with the following values: + 1100 when representing an individual address + 1110 when representing a group address." + SYNTAX OCTET STRING (SIZE (8)) + +IfIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains + management information. The value of this + object for a particular interface has the same + value as the ifIndex object, defined in RFC + 1213, for the same interface." + SYNTAX Integer32 + + +sip OBJECT IDENTIFIER ::= { transmission 31 } +sipMIBObjects OBJECT IDENTIFIER ::= { sipMIB 1 } + + +-- The SIP Level 3 Group + +sipL3Table OBJECT-TYPE + SYNTAX SEQUENCE OF SipL3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP L3 parameters and + state variables, one entry per SIPL3 interface." + ::= { sip 1 } + +sipL3Entry OBJECT-TYPE + SYNTAX SipL3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP L3 parameters and + state variables." + INDEX { sipL3Index } + ::= { sipL3Table 1 } + +SipL3Entry ::= SEQUENCE { + sipL3Index IfIndex, + sipL3ReceivedIndividualDAs Counter32, + sipL3ReceivedGAs Counter32, + sipL3UnrecognizedIndividualDAs Counter32, + sipL3UnrecognizedGAs Counter32, + sipL3SentIndividualDAs Counter32, + sipL3SentGAs Counter32, + sipL3Errors Counter32, + sipL3InvalidSMDSAddressTypes Counter32, + sipL3VersionSupport Integer32 + } + +sipL3Index OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the SIP + L3 interface for which this entry contains + management information. " + ::= { sipL3Entry 1 } + +sipL3ReceivedIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInUcastPkts defined in [9] must be used instead. + DESCRIPTION + "The total number of individually addressed SIP + Level 3 PDUs received from the remote system + across the SNI. The total includes only + unerrored L3PDUs." + ::= { sipL3Entry 2 } + +sipL3ReceivedGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInMulticastPkts defined in [9] must be used instead. + DESCRIPTION + "The total number of group addressed SIP Level 3 + PDUs received from the remote system across the + SNI. The total includes only unerrored L3PDUs." + ::= { sipL3Entry 3 } + +sipL3UnrecognizedIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system with invalid or unknown individual + destination addresses (Destination Address + Screening violations are not included). See SMDS + Subscription MIB module." + ::= { sipL3Entry 4 } + +sipL3UnrecognizedGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system with invalid or unknown group + addresses. (Destination Address Screening + violations are not included). See SMDS + Subscription MIB module." + ::= { sipL3Entry 5 } + +sipL3SentIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifOutUcastPkts defined in [9] must be used instead. + DESCRIPTION + "The number of individually addressed SIP Level 3 + PDUs that have been sent by this system across the + SNI." + ::= { sipL3Entry 6 } + +sipL3SentGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifOutMulticastPkts defined in [9] must be used instead. + DESCRIPTION + "The number of group addressed SIP L3PDUs that + have been sent by this system across the SNI." + ::= { sipL3Entry 7 } + +-- The total number of SIP L3PDU errors can be calculated as +-- (Syntactic errors + Semantic Service errors ) +-- Syntactic errors include: +-- sipL3Errors +-- Latest occurrences of syntactic error types are logged in +-- sipL3PDUErrorTable. +-- Semantic Service errors include: + +-- sipL3UnrecognizedIndividualDAs +-- sipL3UnrecognizedGAs +-- sipL3InvalidSMDSAddressTypes +-- Note that public networks supporting SMDS may discard +-- SIP L3PDUs due to subscription violations. Related +-- managed objects are defined in Definitions of Managed +-- Objects for SMDS Subscription. + +sipL3Errors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInErrors defined in [9] must be used instead. + DESCRIPTION + "The total number of SIP Level 3 PDUs received + from the remote system that were discovered to + have errors (including protocol processing and bit + errors but excluding addressing-related errors) + and were discarded. Includes both group addressed + L3PDUs and L3PDUs containing an individual + destination address." + ::= { sipL3Entry 8 } + +sipL3InvalidSMDSAddressTypes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInUnknownProtos defined in [9] must be used instead. + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system that had the Source or Destination + Address_Type subfields, (the four most significant + bits of the 64 bit address field), not equal to + the value 1100 or 1110. Also, an error is + considered to have occurred if the Address_Type + field for a Source Address, the four most + significant bits of the 64 bits, is equal to 1110 + (a group address)." + ::= { sipL3Entry 9 } + +sipL3VersionSupport OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the version(s) of SIP + that this interface supports. The value is a sum. + This sum initially takes the value zero. For each + version, V, that this interface supports, 2 raised + to (V - 1) is added to the sum. For example, a + port supporting versions 1 and 2 would have a + value of (2^(1-1)+2^(2-1))=3. The + sipL3VersionSupport is effectively a bit mask with + Version 1 equal to the least significant bit + (LSB)." + ::= { sipL3Entry 10 } + + +-- The SIP Level 2 Group + +sipL2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SipL2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP L2PDU parameters and + state variables, one entry per SIP L2 interface." + ::= { sip 2 } + +sipL2Entry OBJECT-TYPE + SYNTAX SipL2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP L2 parameters and state + variables." + INDEX { sipL2Index } + ::= { sipL2Table 1 } + +SipL2Entry ::= SEQUENCE { + sipL2Index IfIndex, + sipL2ReceivedCounts Counter32, + sipL2SentCounts Counter32, + sipL2HcsOrCRCErrors Counter32, + sipL2PayloadLengthErrors Counter32, + sipL2SequenceNumberErrors Counter32, + sipL2MidCurrentlyActiveErrors Counter32, + sipL2BomOrSSMsMIDErrors Counter32, + sipL2EomsMIDErrors Counter32 + } + +sipL2Index OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the SIP + interface for which this entry contains management + information." + ::= { sipL2Entry 1 } + +sipL2ReceivedCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SIP Level 2 PDUs received from the + remote system across the SNI. The total includes + only unerrored L2PDUs." + ::= { sipL2Entry 2 } + +sipL2SentCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SIP Level 2 PDUs that have been + sent by this system across the SNI." + ::= { sipL2Entry 3 } + +-- The following error types are counted, and +-- preclude sipL2ReceivedCounts to be incremented: +-- sipL2HcsOrCRCErrors +-- sipL2PayloadLengthErrors +-- sipL2SequenceNumberErrors +-- sipL2BomOrSSMsMIDErrors +-- sipL2EomsMIDErrors +-- The receipt of SIP Level 2 PDUs which are BOMs and +-- for with a MID that is already active will cause +-- sipL2MidCurrentlyActiveErrors to increment. +-- Any already accumulated (correct) segmentation +-- units are discarded.The sipL2ReceivedCounts +-- is incremented by 1. Thus, +-- sipL2ReceivedCounts defines the number of +-- correct SIP Level 2 PDUs delivered to the reassembly +-- process. + +sipL2HcsOrCRCErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that were + discovered to have either a Header Check Sequence + error or a Payload CRC violation." + ::= { sipL2Entry 4 } + +sipL2PayloadLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that had + Payload Length errors that fall in the following + specifications: + - SSM L2_PDU payload length field value less + - than 28 octets or greater than 44 octets, + + - BOM or COM L2_PDU payload length field not + - equal to 44 octets, + - EOM L2_PDU payload length field value less + - than 4 octets or greater than 44 octets." + ::= { sipL2Entry 5 } + +sipL2SequenceNumberErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that had + a sequence number within the L2PDU not equal to + the expected sequence number of the SMDS SS + receive process." + ::= { sipL2Entry 6 } + +sipL2MidCurrentlyActiveErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + BOMs for which an active receive process is + already started." + ::= { sipL2Entry 7 } + +sipL2BomOrSSMsMIDErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + SSMs with a MID not equal to zero or are BOMs with + MIDs equal to zero." + ::= { sipL2Entry 8 } + +sipL2EomsMIDErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + EOMs for which there is no active receive process + for the MID (i.e., the receipt of an EOM which + does not correspond to a BOM) OR the EOM has a MID + equal to zero." + ::= { sipL2Entry 9 } + + +-- The SIP PLCP Group + +sipPLCP OBJECT IDENTIFIER ::= { sip 3 } + + +-- The DS1 PLCP Group + +sipDS1PLCPTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDS1PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP DS1 PLCP parameters and + state variables, one entry per SIP port." + ::= { sipPLCP 1 } + +sipDS1PLCPEntry OBJECT-TYPE + SYNTAX SipDS1PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP DS1 PLCP parameters and + state variables." + INDEX { sipDS1PLCPIndex } + ::= { sipDS1PLCPTable 1 } + +SipDS1PLCPEntry ::= SEQUENCE { + sipDS1PLCPIndex IfIndex, + sipDS1PLCPSEFSs Counter32, + sipDS1PLCPAlarmState INTEGER, + sipDS1PLCPUASs Counter32 + } + +sipDS1PLCPIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { sipDS1PLCPEntry 1 } + +sipDS1PLCPSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A DS1 Severely Errored Framing Second (SEFS) is a + count of one-second intervals containing one or + more SEF events. A Severely Errored Framing (SEF) + event is declared when an error in the A1 octet + and an error in the A2 octet of a framing octet + pair (i.e., errors in both framing octets), or two + consecutive invalid and/or nonsequential Path + Overhead Identifier octets are detected." + ::= { sipDS1PLCPEntry 2 } + +sipDS1PLCPAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm (1), + receivedFarEndAlarm (2), + incomingLOF (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an alarm + present for the DS1 PLCP. The value + receivedFarEndAlarm means that the DS1 PLCP has + received an incoming Yellow Signal, the value + incomingLOF means that the DS1 PLCP has declared a + loss of frame (LOF) failure condition, and the + value noAlarm means that there are no alarms + present. See TR-TSV-000773 for a description of + alarm states." + ::= { sipDS1PLCPEntry 3 } + +sipDS1PLCPUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, as defined by TR-TSV-000773, + encountered by the PLCP." + ::= { sipDS1PLCPEntry 4 } + + +-- The DS3 PLCP Group + +sipDS3PLCPTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDS3PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP DS3 PLCP parameters and + state variables, one entry per SIP port." + ::= { sipPLCP 2 } + +sipDS3PLCPEntry OBJECT-TYPE + SYNTAX SipDS3PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP DS3 PLCP parameters and + state variables." + INDEX { sipDS3PLCPIndex } + ::= { sipDS3PLCPTable 1 } + +SipDS3PLCPEntry ::= SEQUENCE { + sipDS3PLCPIndex IfIndex, + sipDS3PLCPSEFSs Counter32, + sipDS3PLCPAlarmState INTEGER, + sipDS3PLCPUASs Counter32 + } + +sipDS3PLCPIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { sipDS3PLCPEntry 1 } + +sipDS3PLCPSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A DS3 Severely Errored Framing Second (SEFS) is a + count of one-second intervals containing one or + more SEF events. A Severely Errored Framing (SEF) + event is declared when an error in the A1 octet + and an error in the A2 octet of a framing octet + pair (i.e., errors in both framing octets), or two + consecutive invalid and/or nonsequential Path + Overhead Identifier octets are detected." + ::= { sipDS3PLCPEntry 2 } + +sipDS3PLCPAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm (1), + receivedFarEndAlarm (2), + incomingLOF (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an alarm + present for the DS3 PLCP. The value + receivedFarEndAlarm means that the DS3 PLCP has + received an incoming Yellow Signal, the value + incomingLOF means that the DS3 PLCP has declared a + loss of frame (LOF) failure condition, and the + value noAlarm means that there are no alarms + present. See TR-TSV-000773 for a description of + alarm states." + ::= { sipDS3PLCPEntry 3 } + +sipDS3PLCPUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, as defined by TR-TSV-000773, + encountered by the PLCP." + ::= { sipDS3PLCPEntry 4 } + + +-- The SMDS Applications group +-- Applications that have been identified for this group are: + +-- * IP-over-SMDS (details are specified in RFC 1209) + +smdsApplications OBJECT IDENTIFIER ::= { sip 4 } + +ipOverSMDS OBJECT IDENTIFIER ::= { smdsApplications 1 } + +-- Although the objects in this group are read-only, at the +-- agent's discretion they may be made read-write so that the +-- management station, when appropriately authorized, may +-- change the addressing information related to the +-- configuration of a logical IP subnetwork implemented on +-- top of SMDS. + +-- This table is necessary to support RFC1209 (IP-over-SMDS) +-- and gives information on the Group Addresses and ARP +-- Addresses used in the Logical IP subnetwork. +-- One SMDS address may be associated with multiple IP +-- addresses. One SNI may be associated with multiple LISs. + +ipOverSMDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpOverSMDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addressing information relevant to + this entity's IP addresses." + ::= { ipOverSMDS 1 } + +ipOverSMDSEntry OBJECT-TYPE + SYNTAX IpOverSMDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The addressing information for one of this + entity's IP addresses." + INDEX { ipOverSMDSIndex, ipOverSMDSAddress } + ::= { ipOverSMDSTable 1 } + +IpOverSMDSEntry ::= + SEQUENCE { + ipOverSMDSIndex IfIndex, + ipOverSMDSAddress IpAddress, + ipOverSMDSHA SMDSAddress, + ipOverSMDSLISGA SMDSAddress, + ipOverSMDSARPReq SMDSAddress + } + +ipOverSMDSIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { ipOverSMDSEntry 1 } + +ipOverSMDSAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address to which this entry's addressing + information pertains." + ::= { ipOverSMDSEntry 2 } + +ipOverSMDSHA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS Individual address of the IP station." + ::= { ipOverSMDSEntry 3 } + +ipOverSMDSLISGA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS Group Address that has been configured + to identify the SMDS Subscriber-Network Interfaces + (SNIs) of all members of the Logical IP Subnetwork + (LIS) connected to the network supporting SMDS." + ::= { ipOverSMDSEntry 4 } + +ipOverSMDSARPReq OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS address (individual or group) to which + ARP Requests are to be sent." + ::= { ipOverSMDSEntry 5 } + + +-- The SMDS Carrier Selection group + +-- This group is used as a place holder +-- for carrier selection objects. + +smdsCarrierSelection OBJECT IDENTIFIER ::= { sip 5 } + + +-- The SIP Error Log + +sipErrorLog OBJECT IDENTIFIER ::= { sip 6 } + +sipL3PDUErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipL3PDUErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains the latest occurrence of + the following syntactical SIP L3PDU errors: + + - Destination Address Field Format Error, + + The following pertains to the 60 least significant + bits of the 64 bit address field. The 60 bits + contained in the address subfield can be used to + represent addresses up to 15 decimal digits. Each + decimal digit shall be encoded into four bits + using Binary Coded Decimal (BCD), with the most + significant digit occurring left-most. If not all + 15 digits are required, then the remainder of this + field shall be padded on the right with bits set + to one. An error is considered to have occurred: + a). if the first four bits of the address + subfield are not BCD, OR b). if the first four + bits of the address subfield are populated with + the country code value 0001, AND the 40 bits which + follow are not Binary Coded Decimal (BCD) encoded + values of the 10 digit addresses, OR the remaining + 16 least significant bits are not populated with + 1's, OR c). if the address subfield is not + correct according to another numbering plan which + is dependent upon the carrier assigning the + numbers and offering SMDS. + + - Source Address Field Format Error, + + The description of this parameter is the same as + the description of the Destination Address Field + Format Error. + - Invalid BAsize Field Value, + + An error is considered to have occurred when the + BAsize field of an SIP L3PDU contains a value less + that 32, greater than 9220 octets without the + CRC32 field present, greater than 9224 octets with + the CRC32 field present, or not equal to a + multiple of 4 octets, + + - Invalid Header Extension Length Field Value, + + An error is considered to have occurred when the + Header Extension Length field value is not equal + 3. + + - Invalid Header Extension - Element Length, + + An error is considered to have occurred when the + Header Extension - Element Length is greater than + 12. + + - Invalid Header Extension - Version Element + Position, Length, or Value, + + An error is considered to have occurred when a + Version element with Length=3, Type=0, and Value=1 + does not appear first within the Header Extension, + or an element Type=0 appears somewhere other than + within the first three octets in the Header + Extension. + + - Invalid Header Extension - Carrier Selection + Element Position, Length, Value or Format, + + An error is considered to have occurred when a + Carrier Selection element does not appear second + within the Header Extension, if the Element Type + does not equal 1, the Element Length does not + equal 4, 6, or 8, the Element Value field is not + four BCD encoded decimal digits used in specifying + the Carrier Identification Code (CIC), or the + identified CIC code is invalid. + + - Header Extension PAD Error + + An error is considered to have occurred when the + Header Extension PAD is 9 octets in length, or if + the Header Extension PAD is greater than zero + octets in length and the Header Extension PAD does + not follow all Header Extension elements or does + not begin with at least one octet of all zeros. + + - BEtag Mismatch Error, + + An error is considered to have occurred when the + Beginning-End Tags in the SIP L3PDU header and + trailer are not equal. + + - BAsize Field not equal to Length Field Error, + + An error is considered to have occurred when the + value of the BAsize Field does not equal the value + of the Length Field. + + - Incorrect Length Error, and + + An error is considered to have occurred when the + the Length field value is not equal to the portion + of the SIP L3PDU which extends from the + Destination Address field up to and including the + CRC32 field (if present) or up to and including + the PAD field (if the CRC32 field is not present). + As an optional check, an error is considered to + have occurred when the length of a partially + received SIP L3PDU exceeds the BAsize value. + + - MRI Timeout Error. + + An error is considered to have occurred when the + elapsed time between receipt of BOM and + corresponding EOM exceeds the value of the MRI + (Message Receive Interval) for a particular + transport signal format. + + An entry is indexed by interface number and error + type, and contains Source Address, Destination + Address and a timestamp. All these errors are + counted in the sipL3Errors counter. When + sipL3PDUErrorTimeStamp is equal to zero, the + SipL3PDUErrorEntry does not contain any valid + information." + ::= { sipErrorLog 1 } + +sipL3PDUErrorEntry OBJECT-TYPE + SYNTAX SipL3PDUErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the service disagreement table." + INDEX { sipL3PDUErrorIndex, sipL3PDUErrorType } + ::= { sipL3PDUErrorTable 1 } + +SipL3PDUErrorEntry ::= SEQUENCE { + sipL3PDUErrorIndex IfIndex, + sipL3PDUErrorType INTEGER, + sipL3PDUErrorSA SMDSAddress, + sipL3PDUErrorDA SMDSAddress, + sipL3PDUErrorTimeStamp TimeStamp + } + +sipL3PDUErrorIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information." + ::= { sipL3PDUErrorEntry 1 } + +sipL3PDUErrorType OBJECT-TYPE + SYNTAX INTEGER { + erroredDAFieldFormat (1), + erroredSAFieldFormat (2), + invalidBAsizeFieldValue (3), + invalidHdrExtLength (4), + invalidHdrExtElementLength (5), + invalidHdrExtVersionElementPositionLenthOrValue (6), + invalidHdrExtCarSelectElementPositionLenghtValueOrFormat (7), + hePADError (8), + beTagMismatch (9), + baSizeFieldNotEqualToLengthField (10), + incorrectLength (11), + mriTimeout (12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of error." + ::= { sipL3PDUErrorEntry 2 } + +sipL3PDUErrorSA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A rejected SMDS source address." + ::= { sipL3PDUErrorEntry 3 } + +sipL3PDUErrorDA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A rejected SMDS destination address." + ::= { sipL3PDUErrorEntry 4 } + +sipL3PDUErrorTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for the service disagreement. The + timestamp contains the value of sysUpTime at the + latest occurrence of this type of service + disagreement. See textual description under + sipL3PDUErrorTable for boundary conditions." + ::= { sipL3PDUErrorEntry 5 } + + +-- The DXI Group + +sipDxiTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDxiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DXI table." + ::= { sipMIBObjects 1 } + +sipDxiEntry OBJECT-TYPE + SYNTAX SipDxiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DXI table." + INDEX { ifIndex } + ::= { sipDxiTable 1 } + +SipDxiEntry ::= + SEQUENCE { + sipDxiCrc + INTEGER, + sipDxiOutDiscards + Counter32, + sipDxiInErrors + Counter32, + sipDxiInAborts + Counter32, + sipDxiInTestFrames + Counter32, + sipDxiOutTestFrames + Counter32, + sipDxiHbpNoAcks + Counter32 + } + +sipDxiCrc OBJECT-TYPE + SYNTAX INTEGER { + crc16(1), + crc32(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the type + of Frame Checksum used by DXI. Current + choices include CCITT CRC16 or CRC32." + ::= { sipDxiEntry 1 } + +sipDxiOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound frames discarded + because of congestion." + ::= { sipDxiEntry 2 } + +sipDxiInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames discarded + because of errors such as frame checksum + (CRC) violations, + non-integral number of octets, address + and control field violations, and frame + size errors." + ::= { sipDxiEntry 3 } + +sipDxiInAborts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames discarded + because of an abort bit sequence (1111111) + received before closing flag." + ::= { sipDxiEntry 4 } + +sipDxiInTestFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unerrored, + inbound Test frames received + (generally as part of Heart + Beat Poll procedure)." + ::= { sipDxiEntry 5 } + +sipDxiOutTestFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unerrored, + outbound Test frames sent + (generally as part of Heart + Beat Poll procedure)." + ::= { sipDxiEntry 6 } + +sipDxiHbpNoAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Heart Beat + Poll (HBP) No Ack timeouts." + ::= { sipDxiEntry 7 } + + +-- conformance information + +smdsConformance OBJECT IDENTIFIER ::= { sipMIB 2 } +smdsGroups OBJECT IDENTIFIER ::= { smdsConformance 1 } +smdsCompliances OBJECT IDENTIFIER ::= { smdsConformance 2 } + + +-- compliance statements + +smdsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SMDS interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sipLevel3Stuff } + + GROUP sipLevel2Stuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run SIP Level 2." + + GROUP sipDS1PLCPStuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run the DS1 PLCP." + + GROUP sipDS3PLCPStuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run the DS3 PLCP." + + GROUP sipIPApplicationsStuff + DESCRIPTION + "This group is mandatory only for interfaces + operating IP over SMDS in accordance with + RFC1209." + + GROUP sipDxiStuff + DESCRIPTION + "This group is mandatory only for those interfaces + (DXI-SNI) + which run the DXI protocol." + ::= { smdsCompliances 1 } + +-- units of conformance + +sipLevel3Stuff OBJECT-GROUP + OBJECTS { sipL3Index, + sipL3VersionSupport, sipL3PDUErrorIndex, + sipL3PDUErrorType, + sipL3PDUErrorSA, sipL3PDUErrorDA, + sipL3PDUErrorTimeStamp } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all SMDS interfaces." + ::= { smdsGroups 1 } + +sipLevel2Stuff OBJECT-GROUP + OBJECTS { sipL2Index, sipL2HcsOrCRCErrors, + sipL2PayloadLengthErrors, + sipL2SequenceNumberErrors, + sipL2MidCurrentlyActiveErrors, + sipL2BomOrSSMsMIDErrors, + sipL2EomsMIDErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the SIP Level 2." + ::= { smdsGroups 2 } + +sipDS1PLCPStuff OBJECT-GROUP + OBJECTS { sipDS1PLCPIndex, sipDS1PLCPSEFSs, + sipDS1PLCPAlarmState, sipDS1PLCPUASs } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DS1 PLCP." + ::= { smdsGroups 3 } + +sipDS3PLCPStuff OBJECT-GROUP + OBJECTS { sipDS3PLCPIndex, sipDS3PLCPSEFSs, + sipDS3PLCPAlarmState, sipDS3PLCPUASs } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DS3 PLCP." + ::= { smdsGroups 4 } + + +sipIPApplicationsStuff OBJECT-GROUP + OBJECTS { ipOverSMDSIndex, ipOverSMDSAddress, + ipOverSMDSHA, ipOverSMDSLISGA, ipOverSMDSARPReq } + STATUS current + DESCRIPTION + "A collection of objects providing information + for running IP over SMDS." + ::= { smdsGroups 5 } + +sipDxiStuff OBJECT-GROUP + OBJECTS { sipDxiCrc, sipDxiOutDiscards, + sipDxiInErrors, sipDxiInAborts, + sipDxiInTestFrames, sipDxiOutTestFrames, + sipDxiHbpNoAcks } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DXI protocol." + ::= { smdsGroups 6 } + +END diff --git a/mibs/ietf/SIP-SERVER-MIB b/mibs/ietf/SIP-SERVER-MIB new file mode 100644 index 0000000..bc1e38a --- /dev/null +++ b/mibs/ietf/SIP-SERVER-MIB @@ -0,0 +1,901 @@ +SIP-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Counter32, + Unsigned32, + Gauge32, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TruthValue, + TimeStamp, DateAndTime + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB; -- RFC 4001 + +sipServerMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol + Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor: Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor: Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor: Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor: Dave Walker + email: drwalker@rogers.com + " + DESCRIPTION + "Session Initiation Protocol (SIP) Server MIB module. SIP is an + application-layer signaling protocol for creating, modifying, + and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + This MIB is defined for the management of SIP Proxy, Redirect, + and Registrar Servers. + + + + A Proxy Server acts as both a client and a server. It accepts + requests from other clients, either responding to them or + passing them on to other servers, possibly after modification. + + A Redirect Server accepts requests from clients and returns + zero or more addresses to that client. Unlike a User Agent + Server, it does not accept calls. + + A Registrar is a server that accepts REGISTER requests. A + Registrar is typically co-located with a Proxy or Redirect + Server. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-SERVER-MIB module. This + version published as part of RFC 4780." + ::= { mib-2 151 } + +-- Top-Level Components of this MIB. + +sipServerMIBObjects OBJECT IDENTIFIER ::= { sipServerMIB 1 } +sipServerMIBConformance OBJECT IDENTIFIER ::= { sipServerMIB 2 } + +-- +-- These groups contain objects common to all SIP servers. +-- +sipServerCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 1 } + +-- +-- Common Server Configuration Objects +-- +sipServerCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Redirect and Proxy Servers." + ::= { sipServerCfg 1 } + +sipServerCfgEntry OBJECT-TYPE + SYNTAX SipServerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "A row of common configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788). + The same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerCfgTable 1 } + +SipServerCfgEntry ::= + SEQUENCE { + sipServerCfgHostAddressType InetAddressType, + sipServerCfgHostAddress InetAddress + } + +sipServerCfgHostAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The type of Internet address by which the SIP server is + reachable." + REFERENCE + "RFC 3261, Section 19.1.1" + ::= { sipServerCfgEntry 1 } + +sipServerCfgHostAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the host portion of a SIP URI that is assigned to the + SIP server. It MAY contain a fully qualified domain name or + an IP address. The length of the value will depend on the type + of address specified. The type of address given by this object + is controlled by sipServerCfgHostAddressType." + REFERENCE + "RFC 3261, Section 19.1.1" + ::= { sipServerCfgEntry 2 } + +-- +-- This group contains MIB objects +-- related to SIP Proxy Servers. +-- +sipServerProxyCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 3 } + + +sipServerProxyStats OBJECT IDENTIFIER ::= { sipServerMIBObjects 4 } + +-- +-- Proxy Server Configuration +-- +sipServerProxyCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerProxyCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Proxy Servers." + ::= { sipServerProxyCfg 1 } + +sipServerProxyCfgEntry OBJECT-TYPE + SYNTAX SipServerProxyCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common proxy configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerProxyCfgTable 1 } + +SipServerProxyCfgEntry ::= + SEQUENCE { + sipServerCfgProxyStatefulness INTEGER, + sipServerCfgProxyRecursion TruthValue, + sipServerCfgProxyRecordRoute TruthValue, + sipServerCfgProxyAuthMethod BITS, + sipServerCfgProxyAuthDefaultRealm SnmpAdminString + } + +sipServerCfgProxyStatefulness OBJECT-TYPE + SYNTAX INTEGER { + stateless(1), + transactionStateful(2), + callStateful(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object reflects the default mode of operation for the + Proxy Server entity. + + A stateless proxy is a logical entity that does not maintain + the client or server transaction state machines when it + processes requests. A stateless proxy forwards every request it + receives downstream and every response it receives upstream. If + the value of this object is stateless(1), the proxy defaults to + stateless operations. + + A transaction stateful proxy, or simply a 'stateful proxy', is + a logical entity that maintains the client and server + transaction state machines during the processing of a request. + A (transaction) stateful proxy is not the same as a call + stateful proxy. If the value of this object is + transactionStateful(2), the proxy is stateful on a transaction + basis. + + A call stateful proxy is a logical entity if it retains state + for a dialog from the initiating INVITE to the terminating BYE + request. A call stateful proxy is always transaction stateful, + but the converse is not necessarily true. If the value of this + object is callStateful(3), the proxy is call stateful." + + REFERENCE + "RFC 3261, Section 16" + ::= { sipServerProxyCfgEntry 1 } + +sipServerCfgProxyRecursion OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects whether or not the Proxy performs a + recursive search on the Contacts provided in 3xx redirects. + + If the value of this object is 'true', a recursive search is + performed. If the value is 'false', no search is performed, + and the 3xx response is sent upstream towards the source of + the request." + REFERENCE + "RFC 3261 Sections 16.5 and 16.6" + ::= { sipServerProxyCfgEntry 2 } + +sipServerCfgProxyRecordRoute OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "This object reflects whether or not the proxy adds itself to + the Record-Route header as a default action. This header is + used to list the proxies that insist on being in the signaling + path for subsequent requests related to the call leg. + + If the value of this object is 'true', the proxy adds itself to + the end of the Record-Route header, creating the header if + required. If the value is 'false', the proxy does not add + itself to the Record-Route header." + REFERENCE + "RFC 3261, Section 20.30" + ::= { sipServerProxyCfgEntry 3 } + +-- +-- Security +-- +sipServerCfgProxyAuthMethod OBJECT-TYPE + SYNTAX BITS { + none(0), + tls(1), + digest(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the authentication methods that MAY be + used to authenticate request originators. + + bit 0 no authentication is performed + bit 1 TLS is used + bit 2 HTTP Digest is used." + REFERENCE + "RFC 3261 Sections 22, 23, 26, 26.2.3" + ::= { sipServerProxyCfgEntry 4 } + +sipServerCfgProxyAuthDefaultRealm OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the default realm value used in + Proxy-Authenticate headers. Note that this MAY need to be + stored per user, in which case, this default value is ignored. + " + REFERENCE + "RFC 3261, Section 22.1" + ::= { sipServerProxyCfgEntry 5 } + + +-- +-- Proxy Server Statistics +-- +sipServerProxyStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerProxyStatsEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "This table contains the statistics objects applicable to all + SIP Proxy Servers in this system." + ::= { sipServerProxyStats 1 } + +sipServerProxyStatsEntry OBJECT-TYPE + SYNTAX SipServerProxyStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerProxyStatsTable 1 } + +SipServerProxyStatsEntry ::= + SEQUENCE { + sipServerProxyStatProxyReqFailures Counter32, + sipServerProxyStatsDisconTime TimeStamp + } + +sipServerProxyStatProxyReqFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of occurrences of unsupported + options being specified in received Proxy-Require headers. + Such occurrences result in a 420 Bad Extension status code + being returned. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + + + monitoring the sipServerProxyStatsDisconTime object in the same + row." + ::= { sipServerProxyStatsEntry 1 } + +sipServerProxyStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the server + statistics objects in this row last experienced a discontinuity." + ::= { sipServerProxyStatsEntry 2 } + +-- +-- This group contains MIB objects related to SIP Registrars. +-- +sipServerRegCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 5 } +sipServerRegStats OBJECT IDENTIFIER ::= { sipServerMIBObjects 6 } + +-- +-- Registrar Configuration +-- +sipServerRegCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Registrars." + ::= { sipServerRegCfg 1 } + +sipServerRegCfgEntry OBJECT-TYPE + SYNTAX SipServerRegCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common Registrar configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerRegCfgTable 1 } + +SipServerRegCfgEntry ::= + + + SEQUENCE { + sipServerRegMaxContactExpiryDuration Unsigned32, + sipServerRegMaxUsers Unsigned32, + sipServerRegCurrentUsers Gauge32, + sipServerRegDfltRegActiveInterval Unsigned32 + } + +sipServerRegMaxContactExpiryDuration OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum expiry that may be requested + by a User Agent for a particular Contact. User Agents can + specify expiry using either an Expiry header in a REGISTER + request, or using an Expires parameter in a Contact header in + a REGISTER request. If the value requested by the User Agent + is greater than the value of this object, then the contact + information is given the duration specified by this object, and + that duration is indicated to the User Agent in the response." + ::= { sipServerRegCfgEntry 1 } + +sipServerRegMaxUsers OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum number of users that the + Registrar supports. The current number of users is reflected + by sipServerRegCurrentUsers." + ::= { sipServerRegCfgEntry 2 } + +sipServerRegCurrentUsers OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the number of users currently registered + with the Registrar." + ::= { sipServerRegCfgEntry 3 } + +sipServerRegDfltRegActiveInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object reflects the default time interval the Registrar + considers registrations to be active. The value is used to + compute the Expires header in the REGISTER response. If a user + agent requests a time interval shorter than specified by this + object, the Registrar SHOULD honor that request. If a Contact + entry does not have an 'expires' parameter, the value of the + Expires header field is used instead. If a Contact entry has no + 'expires' parameter and no Expires header field is present, + the value of this object is used as the default value." + REFERENCE + "RFC 3261, Section 10.2" + ::= { sipServerRegCfgEntry 4 } +-- +-- Per User Information +-- +sipServerRegUserTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on all users registered to each + Registrar in this system." + ::= { sipServerRegCfg 2 } + +sipServerRegUserEntry OBJECT-TYPE + SYNTAX SipServerRegUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information for a single user registered to + this Registrar. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex, sipServerRegUserIndex } + ::= { sipServerRegUserTable 1 } + +SipServerRegUserEntry ::= + SEQUENCE { + sipServerRegUserIndex Unsigned32, + sipServerRegUserUri SnmpAdminString, + sipServerRegUserAuthenticationFailures Counter32, + sipServerRegUserDisconTime TimeStamp + } + + +sipServerRegUserIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table." + ::= { sipServerRegUserEntry 1 } + +sipServerRegUserUri OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the user's address-of-record. It is the + main form by which the Registrar knows the user. The format is + typically 'user@domain'. It is contained in the To header for + all REGISTER requests." + ::= { sipServerRegUserEntry 2 } + +sipServerRegUserAuthenticationFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of times the user + has failed authentication. + + Discontinuities in the value of this counter can occur due to + successful user authentications and at re-initialization of + the SIP entity or service. A Management Station can detect + discontinuities in this counter by monitoring the + sipServerRegUserDisconTime object in the same row." + ::= { sipServerRegUserEntry 3 } + +sipServerRegUserDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + user registration statistics objects in this row last + experienced a discontinuity." + ::= { sipServerRegUserEntry 4 } +-- +-- Per Contact Information +-- +sipServerRegContactTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegContactEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on every location where a + registered user (specified by sipServerRegUserIndex) wishes to + be found (i.e., the user has provided contact information to + each SIP Registrar in this system)." + ::= { sipServerRegCfg 3 } + +sipServerRegContactEntry OBJECT-TYPE + SYNTAX SipServerRegContactEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information for a single Contact. Multiple + contacts may exist for a single user. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + + INDEX { applIndex, + sipServerRegUserIndex, + sipServerRegContactIndex + } + ::= { sipServerRegContactTable 1 } + +SipServerRegContactEntry ::= + SEQUENCE { + sipServerRegContactIndex Unsigned32, + sipServerRegContactDisplayName SnmpAdminString, + sipServerRegContactURI SnmpAdminString, + sipServerRegContactLastUpdated TimeStamp, + sipServerRegContactExpiry DateAndTime, + sipServerRegContactPreference SnmpAdminString + } + +sipServerRegContactIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Along with the sipServerRegUserIndex, this object uniquely + identifies a conceptual row in the table." + ::= { sipServerRegContactEntry 1 } + + +sipServerRegContactDisplayName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the display name for the Contact. For + example, 'Santa at Home', or 'Santa on his Sled', corresponding + to contact URIs of sip:BigGuy@example.com or + sip:sclaus817@example.com, respectively." + ::= { sipServerRegContactEntry 2 } + +sipServerRegContactURI OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains either a SIP URI where the user can be + contacted. This URI is normally returned to a client from a + Redirect Server, or is used as the RequestURI in a SIP request + line for requests forwarded by a proxy." + ::= { sipServerRegContactEntry 3 } + +sipServerRegContactLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the time when this contact information + was accepted. If the contact information is updated via a + subsequent REGISTER of the same information, this object is + also updated." + ::= { sipServerRegContactEntry 4 } + +sipServerRegContactExpiry OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the date and time when the contact + information will no longer be valid. Such times may be + specified by the user at registration (i.e., Expires header or + expiry parameter in the Contact information), or a system + default can be applied." + ::= { sipServerRegContactEntry 5 } + +sipServerRegContactPreference OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates a relative preference for the particular + Contact header field value compared to other bindings for this + address-of-record. A registering user may provide this + preference as a 'qvalue' parameter in the Contact header. + + The format of this item is a decimal number between 0 and 1 + (for example 0.9). Higher values indicate locations preferred + by the user." + REFERENCE + "RFC 3261, Section 10.2.1.2, 16.6, and 20.10" + ::= { sipServerRegContactEntry 6 } + +-- +-- Registrar Statistics +-- +sipServerRegStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the summary statistics objects applicable + to all SIP Registrars in this system." + ::= { sipServerRegStats 1 } + +sipServerRegStatsEntry OBJECT-TYPE + SYNTAX SipServerRegStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerRegStatsTable 1 } + +SipServerRegStatsEntry ::= + SEQUENCE { + sipServerRegStatsAcceptedRegs Counter32, + sipServerRegStatsRejectedRegs Counter32, + sipServerRegStatsDisconTime TimeStamp + } + + +sipServerRegStatsAcceptedRegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of REGISTER requests + that have been accepted (status code 200) by the Registrar. + This includes additions of new contact information, refreshing + contact information, as well as requests for deletion of + contact information. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipServerRegStatsDisconTime object in the same + row." + ::= { sipServerRegStatsEntry 1 } + +sipServerRegStatsRejectedRegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number REGISTER requests + that have been rejected by the Registrar. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipServerRegStatsDisconTime object in the same + row." + ::= { sipServerRegStatsEntry 2 } + +sipServerRegStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + registrar statistics objects in this row last experienced a + discontinuity." + ::= { sipServerRegStatsEntry 3 } + +-- +-- Conformance +-- +sipServerMIBCompliances + OBJECT IDENTIFIER ::= { sipServerMIBConformance 1 } + + +sipServerMIBGroups + OBJECT IDENTIFIER ::= { sipServerMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipServerProxyServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as Proxy + Servers." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup, + sipServerProxyConfigGroup, + sipServerProxyStatsGroup + } + ::= { sipServerMIBCompliances 1 } + +sipRedirectServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as Redirect + Servers." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup } + ::= { sipServerMIBCompliances 2 } + +sipServerRegistrarServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as + Registrars." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup, + sipServerRegistrarConfigGroup, + sipServerRegistrarStatsGroup } + GROUP sipServerRegistrarUsersGroup + DESCRIPTION + "This is an optional group." + ::= { sipServerMIBCompliances 3 } + +-- +-- Units of Conformance +-- +sipServerConfigGroup OBJECT-GROUP + OBJECTS { + sipServerCfgHostAddressType, + sipServerCfgHostAddress + + + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration common to SIP + Proxy and Redirect servers." + ::= { sipServerMIBGroups 1 } + +sipServerProxyConfigGroup OBJECT-GROUP + OBJECTS { + sipServerCfgProxyStatefulness, + sipServerCfgProxyRecursion, + sipServerCfgProxyRecordRoute, + sipServerCfgProxyAuthMethod, + sipServerCfgProxyAuthDefaultRealm + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration for SIP Proxy + servers." + ::= { sipServerMIBGroups 2 } + +sipServerProxyStatsGroup OBJECT-GROUP + OBJECTS { + sipServerProxyStatProxyReqFailures, + sipServerProxyStatsDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for SIP Proxy + servers." + ::= { sipServerMIBGroups 3 } + +sipServerRegistrarConfigGroup OBJECT-GROUP + OBJECTS { + sipServerRegMaxContactExpiryDuration, + sipServerRegMaxUsers, + sipServerRegCurrentUsers, + sipServerRegDfltRegActiveInterval + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration for SIP + Registrars." + ::= { sipServerMIBGroups 4 } + +sipServerRegistrarStatsGroup OBJECT-GROUP + OBJECTS { + sipServerRegStatsAcceptedRegs, + + + sipServerRegStatsRejectedRegs, + sipServerRegStatsDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for SIP + Registrars." + ::= { sipServerMIBGroups 5 } + +sipServerRegistrarUsersGroup OBJECT-GROUP + OBJECTS { + sipServerRegUserUri, + sipServerRegUserAuthenticationFailures, + sipServerRegUserDisconTime, + sipServerRegContactDisplayName, + sipServerRegContactURI, + sipServerRegContactLastUpdated, + sipServerRegContactExpiry, + sipServerRegContactPreference + } + STATUS current + DESCRIPTION + "A collection of objects related to registered users." + ::= { sipServerMIBGroups 6 } + +END diff --git a/mibs/ietf/SIP-TC-MIB b/mibs/ietf/SIP-TC-MIB new file mode 100644 index 0000000..436a016 --- /dev/null +++ b/mibs/ietf/SIP-TC-MIB @@ -0,0 +1,183 @@ +SIP-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- RFC 2579 + +sipTC MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) MIB TEXTUAL-CONVENTION + module used by other SIP-related MIB Modules. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + + + + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-TC-MIB module. This version + published as part of RFC 4780." + ::= { mib-2 148 } + +-- +-- Textual Conventions +-- + +SipTCTransportProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention is a bit map. Each bit represents a transport + protocol. If a bit has value 1, then that selected transport + protocol is in some way dependent on the context of the object + using this convention. If a bit has value 0, then that + transport protocol is not selected. Combinations of bits can + be set when multiple transport protocols are selected. + + bit 0: a protocol other than those defined here + bit 1: User Datagram Protocol + bit 2: Transmission Control Protocol + bit 3: Stream Control Transmission Protocol + bit 4: Transport Layer Security Protocol over TCP + bit 5: Transport Layer Security Protocol over SCTP + " + REFERENCE "RFC 3261, Section 18 and RFC 4168" + SYNTAX BITS { + other(0), -- none of the following + udp(1), + tcp(2), + sctp(3), -- RFC4168 + tlsTcp(4), + tlsSctp(5) -- RFC 4168 + } + +SipTCEntityRole ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines the role of a SIP entity. Examples of + SIP entities are proxies, user agents, redirect servers, + registrars, or combinations of the above. + + User Agent (UA): A logical entity that can act as both a user + agent client and user agent server. + + + + + User Agent Client (UAC): A logical entity that creates a new + request, and then uses the client transaction state machinery + to send it. The role of UAC lasts only for the duration of + that transaction. In other words, if a piece of software + initiates a request, it acts as a UAC for the duration of that + transaction. If it receives a request later, it assumes the + role of a user agent server for the processing of that + transaction. + + User Agent Server (UAS): A logical entity that generates a + response to a SIP request. The response accepts, rejects, + or redirects the request. This role lasts only for the + duration of that transaction. In other words, if a piece of + software responds to a request, it acts as a UAS for the + duration of that transaction. If it generates a request + later, it assumes the role of a user agent client for the + processing of that transaction. + + Proxy, Proxy Server: An intermediary entity that acts as both + a server and a client for the purpose of making requests on + behalf of other clients. A proxy server primarily plays the + role of routing, which means its job is to ensure that a + request is sent to another entity 'closer' to the targeted + user. Proxies are also useful for enforcing policy. A proxy + interprets and, if necessary, rewrites specific parts of a + request message before forwarding it. + + Redirect Server: A redirect server is a user agent server that + generates 3xx responses to requests it receives, directing the + client to contact an alternate set of URIs. + + Registrar: A registrar is a server that accepts REGISTER + requests and places the information it receives in those + requests into the location service for the domain it handles." + REFERENCE + "RFC 3261, Section 6" + SYNTAX BITS { + other(0), + userAgent(1), + proxyServer(2), + redirectServer(3), + registrarServer(4) + } + +SipTCOptionTagHeaders ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines the header fields that use the option + + + + tags per Section 19.2 of RFC 3261. These tags are used in + Require (Section 20.32), Proxy-Require (Section 20.29), + Supported (Section 20.37), and Unsupported (Section 20.40) + header fields." + REFERENCE + "RFC 3261, Sections 19.2, 20.32, 20.29, 20.37, and 20.40" + SYNTAX BITS { + require(0), -- Require header + proxyRequire(1), -- Proxy-Require header + supported(2), -- Supported header + unsupported(3) -- Unsupported header + } + +SipTCMethodName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION is a string that uniquely identifies a + SIP method. The scope of uniqueness is the context of all + defined SIP methods. + + Experimental support of extension methods is acceptable and + expected. Extension methods are those defined in + officially sanctioned by IANA. + + To support experimental extension methods, any object using + this TEXTUAL-CONVENTION as syntax MAY return/accept a method + identifier value other than those sanctioned by IANA. That + system MUST ensure no collisions with officially assigned + method names." + REFERENCE + "RFC 3261, Section 27.4" + SYNTAX OCTET STRING (SIZE (1..100)) + +END diff --git a/mibs/ietf/SIP-UA-MIB b/mibs/ietf/SIP-UA-MIB new file mode 100644 index 0000000..f37a346 --- /dev/null +++ b/mibs/ietf/SIP-UA-MIB @@ -0,0 +1,209 @@ +SIP-UA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Unsigned32, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + + SipTCEntityRole + FROM SIP-TC-MIB; -- RFC 4780 + +sipUAMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + + + + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) User Agent (UA) MIB module. + + SIP is an application-layer signaling protocol for creating, + modifying, and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + A User Agent is an application that contains both a User Agent + Client (UAC) and a User Agent Server (UAS). A UAC is an + application that initiates a SIP request. A UAS is an + application that contacts the user when a SIP request is + received and that returns a response on behalf of the user. + The response accepts, rejects, or redirects the request. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-UA-MIB module. This version + published as part of RFC 4780." + ::= { mib-2 150 } + +-- Top-Level Components of this MIB. +sipUAMIBObjects OBJECT IDENTIFIER ::= { sipUAMIB 1 } + + + +sipUAMIBConformance OBJECT IDENTIFIER ::= { sipUAMIB 2 } + +-- +-- This MIB contains objects related to SIP User Agents. +-- +sipUACfgServer OBJECT IDENTIFIER ::= { sipUAMIBObjects 1 } + +-- +-- SIP Server Configuration +-- +sipUACfgServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipUACfgServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP server configuration objects applicable + to each SIP user agent in this system." + ::= { sipUACfgServer 1 } + +sipUACfgServerEntry OBJECT-TYPE + SYNTAX SipUACfgServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of server configuration. + + Each row represents those objects for a particular SIP user + agent present in this system. applIndex is used to uniquely + identify these instances of SIP user agents and correlate + them through the common framework of the NETWORK-SERVICES-MIB + (RFC 2788). The same value of applIndex used in the + corresponding SIP-COMMON-MIB is used here." + INDEX { applIndex, sipUACfgServerIndex } + ::= { sipUACfgServerTable 1 } + +SipUACfgServerEntry ::= SEQUENCE { + sipUACfgServerIndex Unsigned32, + sipUACfgServerAddressType InetAddressType, + sipUACfgServerAddress InetAddress, + sipUACfgServerRole SipTCEntityRole + } + +sipUACfgServerIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier of a server address when multiple addresses + + + are configured by the SIP entity. If one address isn't + reachable, then another can be tried." + ::= { sipUACfgServerEntry 1 } + +sipUACfgServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the type of address contained in the + associated instance of sipUACfgServerAddress." + REFERENCE + "INET-ADDRESS-MIB (RFC 4001)" + ::= { sipUACfgServerEntry 2 } + +sipUACfgServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the address of a SIP server this user + agent will use to proxy/redirect calls. The type of this + address is determined by the value of the + sipUACfgServerAddressType object." + REFERENCE "INET-ADDRESS-MIB (RFC 4001)" + ::= { sipUACfgServerEntry 3 } + +sipUACfgServerRole OBJECT-TYPE + SYNTAX SipTCEntityRole + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the function of the SIP server this user + agent should communicate with: registrar, proxy (outbound + proxy), etc." + ::= { sipUACfgServerEntry 4 } + +-- +-- Conformance +-- +sipUAMIBCompliances OBJECT IDENTIFIER ::= { sipUAMIBConformance 1 } +sipUAMIBGroups OBJECT IDENTIFIER ::= { sipUAMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipUACompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for SIP entities that implement the + SIP-UA-MIB module." + MODULE -- this module + MANDATORY-GROUPS { sipUAConfigGroup } + + ::= { sipUAMIBCompliances 1 } + +-- +-- Units of Conformance +-- +sipUAConfigGroup OBJECT-GROUP + OBJECTS { + sipUACfgServerAddressType, + sipUACfgServerAddress, + sipUACfgServerRole + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + configuration of SIP User Agents." + ::= { sipUAMIBGroups 1 } + +END diff --git a/mibs/ietf/SLAPM-MIB b/mibs/ietf/SLAPM-MIB new file mode 100644 index 0000000..45d10e6 --- /dev/null +++ b/mibs/ietf/SLAPM-MIB @@ -0,0 +1,2821 @@ +SLAPM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + experimental, Integer32, NOTIFICATION-TYPE, + Gauge32, Counter32, Unsigned32 + FROM SNMPv2-SMI -- RFC2578 + TEXTUAL-CONVENTION, RowStatus, + TestAndIncr, DateAndTime + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; -- RFC2571 + + slapmMIB MODULE-IDENTITY + LAST-UPDATED "200001240000Z" -- 24 January 2000 + ORGANIZATION "International Business Machines Corp." + CONTACT-INFO + "Kenneth White + + International Business Machines Corporation + Network Computing Software Division + Research Triangle Park, NC, USA + + E-mail: wkenneth@us.ibm.com" + DESCRIPTION + "The Service Level Agreement Performance Monitoring MIB + (SLAPM-MIB) provides data collection and monitoring + capabilities for Service Level Agreements (SLAs) + policy definitions." + + -- Revision history + REVISION "200001240000Z" -- 24 January 2000 + DESCRIPTION + "This version published as RFC 2758." + + ::= { experimental 88 } + + -- Textual Conventions + + SlapmNameType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "The textual convention for naming entities + within this MIB. The actual contents of an object + defined using this textual convention should consist + of the distinguished name portion of an name. + This is usually the right-most + portion of the name. This convention is necessary, + since names within this MIB can be used as index + items and an instance identifier is limited to 128 + subidentifiers. + + This textual convention has been deprecated. All of the + tables defined within this MIB that use this textual + convention have been deprecated as well since the method + of using a portion of the name (either of a policy + definition or of a traffic profile) has been replaced + by using an Unsigned32 index. The new slapmPolicyNameTable + would then map the Unsigned32 index to a real name." + SYNTAX SnmpAdminString (SIZE(0..32)) + + SlapmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the various + slapmPRMonTable (or old slapmPolicyMonitorTable) + and the slapmSubcomponentTable states for actual policy + rule traffic monitoring." + SYNTAX BITS { + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4), + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + } + + SlapmPolicyRuleName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024t" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..1024)) + + -- Top-level structure of the MIB + + slapmNotifications OBJECT IDENTIFIER ::= { slapmMIB 0 } + slapmObjects OBJECT IDENTIFIER ::= { slapmMIB 1 } + slapmConformance OBJECT IDENTIFIER ::= { slapmMIB 2 } + + -- All scalar objects + + slapmBaseObjects OBJECT IDENTIFIER ::= { slapmObjects 1 } + + -- Scalar Object Definitions + + slapmSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating applications + to coordinate their use of the contents of this MIB. This + typically occurs when an application seeks to create an + new entry or alter an existing entry in + slapmPRMonTable (or old slapmPolicyMonitorTable). A + management implementation MAY utilize the slapmSpinLock to + serialize its changes or additions. This usage is not + required. However, slapmSpinLock MUST be supported by + agent implementations." + ::= { slapmBaseObjects 1 } + + slapmPolicyCountQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that a policy lookup occurred + with respect to a policy agent. + This is the number of times that a reference was made to + a policy definition at a system and includes the number + of times that a policy repository was accessed, + slapmPolicyCountAccesses. The object + slapmPolicyCountAccesses should be less than + slapmPolicyCountQueries when policy definitions are + cached at a system." + ::= { slapmBaseObjects 2 } + + slapmPolicyCountAccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of times that a policy repository was + accessed with respect to a policy agent. + The value of this object should be less than + slapmPolicyCountQueries, since typically policy entries + are cached to minimize repository accesses." + ::= { slapmBaseObjects 3 } + + slapmPolicyCountSuccessAccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of successful policy repository accesses + with respect to a policy agent." + ::= { slapmBaseObjects 4 } + + slapmPolicyCountNotFounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of policy repository accesses, + with respect to a policy agent, that + resulted in an entry not being located." + ::= { slapmBaseObjects 5 } + + slapmPolicyPurgeTime OBJECT-TYPE + SYNTAX Integer32 (0..3600) -- maximum of 1 hour + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The purpose of this object is to define the amount + of time (in seconds) to wait before removing an + slapmPolicyRuleStatsEntry (or old slapmPolicyStatsEntry) + when a system detects that the associated policy + definition has been deleted. This gives any polling + management applications time to complete their last poll + before an entry is removed. An slapmPolicyRuleStatsEntry + (or old slapmPolicyStatsEntry) enters the + deleteNeeded(3) state via slapmPolicyRuleStatsOperStatus + (or old slapmPolicyStatsOperStatus) when a system first + detects that the entry needs to be removed. + + Once slapmPolicyPurgeTime has expired for an entry in + deleteNeeded(3) state it is removed a long with any + dependent slapmPRMonTable (or slapmPolicyMonitorTable) + entries. + + A value of 0 for this option disables this function and + results in the automatic purging of slapmPRMonTable + (or slapmPolicyTable) entries upon transition into + deleteNeeded(3) state. + + A slapmPolicyRuleDeleted (or slapmPolicyProfileDeleted) + notification is sent when an slapmPolicyRuleStatsEntry (or + slapmPolicyStatsEntry) is removed. Dependent + slapmPRMonTable (or slapmPolicyMonitorTable) + deletion results in a slapmPolicyRuleMonDeleted (or + slapmPolicyMonitorDeleted) notification being sent. + These notifications are suppressed if the value of + slapmPolicyTrapEnable is disabled(2)." + DEFVAL { 900 } -- 15 minute default purge time + ::= { slapmBaseObjects 6 } + + slapmPolicyTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether slapmPolicyRuleDeleted and + slapmPolicyRuleMonDeleted (or slapmPolicyProfileDeleted + and slapmPolicyMonitorDeleted) notifications should be + generated by this system." + DEFVAL { disabled } + ::= { slapmBaseObjects 7 } + + slapmPolicyTrapFilter OBJECT-TYPE + SYNTAX Integer32 (0..64) + UNITS "intervals" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The purpose of this object is to suppress unnecessary + slapmSubcMonitorNotOkay (or + slapmSubcomponentMonitoredEventNotAchieved), for example, + notifications. Basically, a monitored event has to + not meet its SLA requirement for the number of + consecutive intervals indicated by the value of this + object." + DEFVAL { 3 } + ::= { slapmBaseObjects 8 } + + slapmTableObjects OBJECT IDENTIFIER ::= { slapmObjects 2 } + + -- Sla Performance Monitoring Policy Statistics Table + + slapmPolicyStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyStatsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Provides statistics on all policies known at a + system. + + This table has been deprecated and replaced with + the slapmPolicyRuleStatsTable. Older implementations of + this MIB are expected to continue their support of this + table." + ::= { slapmTableObjects 1 } + + slapmPolicyStatsEntry OBJECT-TYPE + SYNTAX SlapmPolicyStatsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Defines an entry in the slapmPolicyStatsTable. This table + defines a set of statistics that is kept on a per system, + policy and traffic profile basis. A policy can be + defined to contain multiple traffic profiles that map to + a single action. + + Entries in this table are not created or deleted via SNMP + but reflect the set of policy definitions known at a system." + INDEX { + slapmPolicyStatsSystemAddress, + slapmPolicyStatsPolicyName, + slapmPolicyStatsTrafficProfileName + } + ::= { slapmPolicyStatsTable 1 } + + SlapmPolicyStatsEntry ::= + SEQUENCE { + slapmPolicyStatsSystemAddress OCTET STRING, + slapmPolicyStatsPolicyName SlapmNameType, + slapmPolicyStatsTrafficProfileName SlapmNameType, + slapmPolicyStatsOperStatus INTEGER, + slapmPolicyStatsActiveConns Gauge32, + slapmPolicyStatsTotalConns Counter32, + slapmPolicyStatsFirstActivated DateAndTime, + slapmPolicyStatsLastMapping DateAndTime, + slapmPolicyStatsInOctets Counter32, + slapmPolicyStatsOutOctets Counter32, + slapmPolicyStatsConnectionLimit Integer32, + slapmPolicyStatsCountAccepts Counter32, + slapmPolicyStatsCountDenies Counter32, + slapmPolicyStatsInDiscards Counter32, + slapmPolicyStatsOutDiscards Counter32, + slapmPolicyStatsInPackets Counter32, + slapmPolicyStatsOutPackets Counter32, + slapmPolicyStatsInProfileOctets Counter32, + slapmPolicyStatsOutProfileOctets Counter32, + slapmPolicyStatsMinRate Integer32, + slapmPolicyStatsMaxRate Integer32, + slapmPolicyStatsMaxDelay Integer32 + } + + slapmPolicyStatsSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string must be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string must be + 4 for an ipv4 address or 16 for an ipv6 address." + ::= { slapmPolicyStatsEntry 1 } + + slapmPolicyStatsPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to." + ::= { slapmPolicyStatsEntry 2 } + + slapmPolicyStatsTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The name of a traffic profile that is associated with + a policy." + ::= { slapmPolicyStatsEntry 3 } + + slapmPolicyStatsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + active(2), + deleteNeeded(3) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The state of a policy entry: + + inactive(1) - An policy entry was either defined + by local system definition or + discovered via a directory search + but has not been activated (not + currently being used). + active(2) - Policy entry is being used to affect + traffic flows. + deleteNeeded(3) - Either though local implementation + dependent methods or by discovering + that the directory entry corresponding + to this table entry no longer + exists and slapmPolicyPurgeTime needs + to expire before attempting to remove + the corresponding slapmPolicyStatsEntry + and any dependent slapmPolicyMonitor + table entries. + Note: a policy traffic profile in a state other than + active(1) is not being used to affect traffic flows." + ::= { slapmPolicyStatsEntry 4 } + + slapmPolicyStatsActiveConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of active TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyStatsEntry 5 } + + slapmPolicyStatsTotalConns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of total TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyStatsEntry 6 } + + slapmPolicyStatsFirstActivated OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the corresponding policy entry + is activated. The value of this object serves as + the discontinuity event indicator when polling entries + in this table. The value of this object is updated on + transition of slapmPolicyStatsOperStatus into the active(2) + state." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyStatsEntry 7 } + + slapmPolicyStatsLastMapping OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the last time + that the associated policy entry was used." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyStatsEntry 8 } + + slapmPolicyStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of octets that was received by IP for an + entity that map to this entry." + ::= { slapmPolicyStatsEntry 9 } + + slapmPolicyStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of octets that was transmitted by IP for an + entity that map to this entry." + ::= { slapmPolicyStatsEntry 10 } + + slapmPolicyStatsConnectionLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The limit for the number of active TCP connections that + are allowed for this policy definition. A value of zero + for this object implies that a connection limit has not + been specified." + ::= { slapmPolicyStatsEntry 11 } + + slapmPolicyStatsCountAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Accept and a session + (TCP connection) is accepted." + ::= { slapmPolicyStatsEntry 12 } + + slapmPolicyStatsCountDenies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Deny and a session is denied, + or when a session (TCP connection) is rejected due to a + policy's connection limit (slapmPolicyStatsConnectLimit) + being reached." + ::= { slapmPolicyStatsEntry 13 } + + slapmPolicyStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in octets discarded. + This occurs when an error is detected. Examples of this + are buffer overflow, checksum error, or bad packet + format." + ::= { slapmPolicyStatsEntry 14 } + + slapmPolicyStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out octets discarded. + Examples of this are buffer overflow, checksum error, or + bad packet format." + ::= { slapmPolicyStatsEntry 15 } + + slapmPolicyStatsInPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in packets received + that relate to this policy entry from IP." + ::= { slapmPolicyStatsEntry 16 } + + slapmPolicyStatsOutPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out packets sent + by IP that relate to this policy entry." + ::= { slapmPolicyStatsEntry 17 } + + slapmPolicyStatsInProfileOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in octets that are + determined to be within profile." + ::= { slapmPolicyStatsEntry 18 } + + slapmPolicyStatsOutProfileOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out octets that are + determined to be within profile." + ::= { slapmPolicyStatsEntry 19 } + + slapmPolicyStatsMinRate OBJECT-TYPE + SYNTAX Integer32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The minimum transfer rate defined for this entry." + ::= { slapmPolicyStatsEntry 20 } + + slapmPolicyStatsMaxRate OBJECT-TYPE + SYNTAX Integer32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The maximum transfer rate defined for this entry." + ::= { slapmPolicyStatsEntry 21 } + + slapmPolicyStatsMaxDelay OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The maximum delay defined for this entry." + ::= { slapmPolicyStatsEntry 22 } + + -- SLA Performance Monitoring Policy Monitor Table + + slapmPolicyMonitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyMonitorEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Provides a method of monitoring policies and their + effect at a system. + + This table has been deprecated and replaced with + the slapmPRMonTable. Older implementations of + this MIB are expected to continue their support + of this table." + ::= { slapmTableObjects 2 } + + slapmPolicyMonitorEntry OBJECT-TYPE + SYNTAX SlapmPolicyMonitorEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Defines an entry in the slapmPolicyMonitorTable. This + table defines which policies should be monitored on a + per policy traffic profile basis." + INDEX { + slapmPolicyMonitorOwnerIndex, + slapmPolicyMonitorSystemAddress, + slapmPolicyMonitorPolicyName, + slapmPolicyMonitorTrafficProfileName + } + ::= { slapmPolicyMonitorTable 1 } + + SlapmPolicyMonitorEntry ::= + SEQUENCE { + slapmPolicyMonitorOwnerIndex SnmpAdminString, + slapmPolicyMonitorSystemAddress OCTET STRING, + slapmPolicyMonitorPolicyName SlapmNameType, + slapmPolicyMonitorTrafficProfileName SlapmNameType, + slapmPolicyMonitorControl BITS, + slapmPolicyMonitorStatus SlapmStatus, + slapmPolicyMonitorInterval Integer32, + slapmPolicyMonitorIntTime DateAndTime, + slapmPolicyMonitorCurrentInRate Gauge32, + slapmPolicyMonitorCurrentOutRate Gauge32, + slapmPolicyMonitorMinRateLow Integer32, + slapmPolicyMonitorMinRateHigh Integer32, + slapmPolicyMonitorMaxRateHigh Integer32, + slapmPolicyMonitorMaxRateLow Integer32, + slapmPolicyMonitorMaxDelayHigh Integer32, + slapmPolicyMonitorMaxDelayLow Integer32, + slapmPolicyMonitorMinInRateNotAchieves Counter32, + slapmPolicyMonitorMaxInRateExceeds Counter32, + slapmPolicyMonitorMaxDelayExceeds Counter32, + slapmPolicyMonitorMinOutRateNotAchieves Counter32, + slapmPolicyMonitorMaxOutRateExceeds Counter32, + slapmPolicyMonitorCurrentDelayRate Gauge32, + slapmPolicyMonitorRowStatus RowStatus + } + + slapmPolicyMonitorOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to independently create or modify + entries, the initial index is used as an 'owner index'. + Such an initial index has a syntax of SnmpAdminString, + and can thus be trivially mapped to a securityName or + groupName as defined in VACM, in accordance with a + security policy. + + All entries in that table belonging to a particular user + will have the same value for this initial index. For a + given user's entries in a particular table, the object + identifiers for the information in these entries will + have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including the + owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { slapmPolicyMonitorEntry 1 } + + slapmPolicyMonitorSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmPolicyMonitorEntry 2 } + + slapmPolicyMonitorPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to." + ::= { slapmPolicyMonitorEntry 3 } + + slapmPolicyMonitorTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The corresponding Traffic Profile name." + ::= { slapmPolicyMonitorEntry 4 } + + slapmPolicyMonitorControl OBJECT-TYPE + SYNTAX BITS { + monitorMinRate(0), + monitorMaxRate(1), + monitorMaxDelay(2), + enableAggregateTraps(3), + enableSubcomponentTraps(4), + monitorSubcomponents(5) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The value of this object determines the type and level + of monitoring that is applied to a policy/profile. The + value of this object can't be changed once the table + entry that it is a part of is activated via a + slapmPolicyMonitorRowStatus transition to active state. + + monitorMinRate(0) - Monitor minimum transfer rate. + monitorMaxRate(1) - Monitor maximum transfer rate. + monitorMaxDelay(2) - Monitor maximum delay. + enableAggregateTraps(3) - The enableAggregateTraps(3) + BITS setting enables notification generation + when monitoring a policy traffic profile as an + aggregate using the values in the corresponding + slapmPolicyStatsEntry. By default this function + is not enabled. + enableSubcomponentTraps(4) - This BITS setting enables + notification generation when monitoring all + subcomponents that are mapped to an corresponding + slapmPolicyStatsEntry. By default this + function is not enabled. + monitorSubcomponents(5) - This BITS setting enables + monitoring of each subcomponent (typically a + TCP connection or UDP listener) individually." + DEFVAL { { monitorMinRate, monitorMaxRate, + monitorMaxDelay } } + ::= { slapmPolicyMonitorEntry 5 } + + slapmPolicyMonitorStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of this object indicates when a monitored + value has not meet a threshold or isn't meeting the + defined service level. The SlapmStatus TEXTUAL-CONVENTION + defines two levels of not meeting a threshold. The first + set: + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4) + + are used to indicate when the SLA as an aggregate is + not meeting a threshold while the second set: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + indicate that at least one subcomponent is not meeting + a threshold." + ::= { slapmPolicyMonitorEntry 6 } + + slapmPolicyMonitorInterval OBJECT-TYPE + SYNTAX Integer32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The number of seconds that defines the sample period." + DEFVAL {20} -- 20 seconds + ::= { slapmPolicyMonitorEntry 7 } + + slapmPolicyMonitorIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the last interval ended." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyMonitorEntry 8 } + + slapmPolicyMonitorCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonitorInterval, slapmPolicyStatsInOctets + is sampled and then divided by slapmPolicyMonitorInterval + to determine the current in transfer rate." + ::= { slapmPolicyMonitorEntry 9 } + + slapmPolicyMonitorCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonitorInterval, slapmPolicyStatsOutOctets + is sampled and then divided by slapmPolicyMonitorInterval + to determine the current out transfer rate." + ::= { slapmPolicyMonitorEntry 10 } + + slapmPolicyMonitorMinRateLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored minimum transfer rate has not been meet. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until + the minimum transfer rate + exceeds slapmPolicyMonitorMinRateHigh (a + slapmMonitoredEventOkay notification is then transmitted) + and then fails below slapmPolicyMonitorMinRateLow. This + behavior reduces the slapmMonitoredEventNotAchieved + notifications that are transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 11 } + + slapmPolicyMonitorMinRateHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored minimum + transfer rate has increased to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 12 } + + slapmPolicyMonitorMaxRateHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored maximum transfer rate has been exceeded. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until the + maximum transfer rate fails below + slapmPolicyMonitorMaxRateLow (a slapmMonitoredEventOkay + notification is then transmitted) and then raises above + slapmPolicyMonitorMaxRateHigh. This behavior reduces the + slapmMonitoredEventNotAchieved notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 13 } + + slapmPolicyMonitorMaxRateLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored maximum + transfer rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 14 } + + slapmPolicyMonitorMaxDelayHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored maximum delay rate has been exceeded. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until + the maximum delay rate falls below + slapmPolicyMonitorMaxDelayLow (a slapmMonitoredEventOkay + notification is then transmitted) and raises above + slapmPolicyMonitorMaxDelayHigh. This behavior reduces + the slapmMonitoredEventNotAchieved notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 15 } + + slapmPolicyMonitorMaxDelayLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored maximum delay + rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 16 } + + slapmPolicyMonitorMinInRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a minimum transfer in rate + was not achieved." + ::= { slapmPolicyMonitorEntry 17 } + + slapmPolicyMonitorMaxInRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum transfer in rate + was exceeded." + ::= { slapmPolicyMonitorEntry 18 } + + slapmPolicyMonitorMaxDelayExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum delay in rate + was exceeded." + ::= { slapmPolicyMonitorEntry 19 } + + slapmPolicyMonitorMinOutRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a minimum transfer out rate + was not achieved." + ::= { slapmPolicyMonitorEntry 20 } + + slapmPolicyMonitorMaxOutRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum transfer out rate + was exceeded." + ::= { slapmPolicyMonitorEntry 21 } + + slapmPolicyMonitorCurrentDelayRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The current delay rate for this entry. This is + calculated by taking the average of the TCP + round trip times for all associating + slapmSubcomponentTable entries within a interval." + ::= { slapmPolicyMonitorEntry 22 } + + slapmPolicyMonitorRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object allows entries to be created and deleted + in the slapmPolicyMonitorTable. An entry in this table + is deleted by setting this object to destroy(6). + + Removal of a corresponding (same policy and traffic profile + names) slapmPolicyStatsEntry has the side effect of the + automatic deletion an entry in this table." + ::= { slapmPolicyMonitorEntry 23 } + + -- Subcomponent Table + + slapmSubcomponentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmSubcomponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table to provide information on the + individually components that are mapped to + a policy rule (or old traffic profile). + + The indexing for this table is designed to support + the use of an SNMP GET-NEXT operation using only + the remote address and remote port as a way for + a management station to retrieve the table entries + relating to a particular client." + ::= { slapmTableObjects 3 } + + slapmSubcomponentEntry OBJECT-TYPE + SYNTAX SlapmSubcomponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a particular subcomponent entry. This + table does not have an OwnerIndex as + part of its indexing since this table's contents + is intended to span multiple users." + INDEX { + slapmSubcomponentRemAddress, + slapmSubcomponentRemPort, + slapmSubcomponentLocalAddress, + slapmSubcomponentLocalPort + } + ::= { slapmSubcomponentTable 1 } + + SlapmSubcomponentEntry ::= + SEQUENCE { + slapmSubcomponentRemAddress OCTET STRING, + slapmSubcomponentRemPort Integer32, + slapmSubcomponentLocalAddress OCTET STRING, + slapmSubcomponentLocalPort Integer32, + slapmSubcomponentProtocol INTEGER, + slapmSubcomponentSystemAddress OCTET STRING, + slapmSubcomponentPolicyName SlapmNameType, + slapmSubcomponentTrafficProfileName SlapmNameType, + slapmSubcomponentLastActivity DateAndTime, + slapmSubcomponentInOctets Counter32, + slapmSubcomponentOutOctets Counter32, + slapmSubcomponentTcpOutBufferedOctets Counter32, + slapmSubcomponentTcpInBufferedOctets Counter32, + slapmSubcomponentTcpReXmts Counter32, + slapmSubcomponentTcpRoundTripTime Integer32, + slapmSubcomponentTcpRoundTripVariance Integer32, + slapmSubcomponentInPdus Counter32, + slapmSubcomponentOutPdus Counter32, + slapmSubcomponentApplName SnmpAdminString, + slapmSubcomponentMonitorStatus SlapmStatus, + slapmSubcomponentMonitorIntTime DateAndTime, + slapmSubcomponentMonitorCurrentInRate Gauge32, + slapmSubcomponentMonitorCurrentOutRate Gauge32, + slapmSubcomponentPolicyRuleIndex Unsigned32 + } + + slapmSubcomponentRemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the remote address of a subcomponent. + A remote address can be either an ipv4 address in which + case 4 octets are required or as an ipv6 address that + requires 16 octets. The value of this subidentifier + is a zero length octet string when this entry relates + to a UDP listener." + ::= { slapmSubcomponentEntry 1 } + + slapmSubcomponentRemPort OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the remote port of a subcomponent. + The value of this subidentifier + is 0 when this entry relates to a UDP listener." + ::= { slapmSubcomponentEntry 2 } + + slapmSubcomponentLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the local address of a subcomponent. + A local address can be either an ipv4 address in which + case 4 octets are required or as an ipv6 address that + requires 16 octets." + ::= { slapmSubcomponentEntry 3 } + + slapmSubcomponentLocalPort OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Indicate the local port of a subcomponent." + ::= { slapmSubcomponentEntry 4 } + + slapmSubcomponentProtocol OBJECT-TYPE + SYNTAX INTEGER { + udpListener(1), + tcpConnection(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicate the protocol in use that identifies the + type of subcomponent." + ::= { slapmSubcomponentEntry 5 } + + slapmSubcomponentSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmSubcomponentEntry 6 } + + slapmSubcomponentPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to. + + This object, along with slapmSubcomponentTrafficProfileName, + have been replaced with the use of an unsigned integer + index that is mapped to an slapmPolicyNameEntry to actually + identify policy naming." + ::= { slapmSubcomponentEntry 7 } + + slapmSubcomponentTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The corresponding traffic profile name. + + This object, along with slapmSubcomponentProfileName, + have been replaced with the use of an unsigned integer + index that is mapped to an slapmPolicyNameEntry to + actually identify policy naming." + ::= { slapmSubcomponentEntry 8 } + + slapmSubcomponentLastActivity OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and timestamp of when this entry was last used." + DEFVAL { '0000000000000000'H } + ::= { slapmSubcomponentEntry 9 } + + slapmSubcomponentInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets received from IP for this + connection." + ::= { slapmSubcomponentEntry 10 } + + slapmSubcomponentOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent to IP for this connection." + ::= { slapmSubcomponentEntry 11 } + + slapmSubcomponentTcpOutBufferedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outgoing octets buffered. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 12 } + + slapmSubcomponentTcpInBufferedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of incoming octets buffered. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 13 } + + slapmSubcomponentTcpReXmts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of retransmissions. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 14 } + + slapmSubcomponentTcpRoundTripTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time that has elapsed, measured in + milliseconds, from when the last TCP segment was + transmitted by the TCP Stack until the ACK was + received. + + The value of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 15 } + + slapmSubcomponentTcpRoundTripVariance OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Round trip time variance. + + The value of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 16 } + + slapmSubcomponentInPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of protocol related data units transferred + inbound: + + slapmSubcomponentProtocol PDU Type + + udpListener(1) UDP datagrams + tcpConnection(2) TCP segments" + ::= { slapmSubcomponentEntry 17 } + + slapmSubcomponentOutPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of protocol related data units transferred + outbound: + + slapmSubcomponentProtocol PDU Type + + udpListener(1) UDP datagrams + tcpConnection(2) TCP segments" + ::= { slapmSubcomponentEntry 18 } + + slapmSubcomponentApplName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The application name associated with this entry if known, + otherwise a zero-length octet string is returned as the + value of this object." + ::= { slapmSubcomponentEntry 19 } + + slapmSubcomponentMonitorStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates when a monitored + value has exceeded a threshold or isn't meeting the + defined service level. Only the following SlapmStatus + BITS setting can be reported here: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + This object only has meaning when an corresponding + slapmPolicyMonitorEntry exists with the + slapmPolicyMonitorControl BITS setting + monitorSubcomponents(5) enabled." + ::= { slapmSubcomponentEntry 20 } + + slapmSubcomponentMonitorIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last interval ended. + + This object only has meaning when an corresponding + slapmPRMonEntry (or old slapmPolicyMonitorEntry) + exists with the slapmPRMonControl (or + slapmPolicyMonitorControl) BITS setting + monitorSubcomponents(5) enabled. All of the + octets returned when monitoring is not in effect + must be zero." + DEFVAL { '0000000000000000'H } + ::= { slapmSubcomponentEntry 21 } + + slapmSubcomponentMonitorCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPRMonInterval (or slapmPolicyMonitorInterval), + slapmSubcomponentStatsInOctets + is divided by slapmSubcomponentMonitorInterval to determine + the current in transfer rate. + + This object only has meaning when an corresponding + slapmPRMonEntry (or slapmPolicyMonitorEntry) + exists with the slapmPRMonControl (or + slapmPolicyMonitorControl) BITS setting + monitorSubcomponents(5) enabled. The value of this + object is zero when monitoring is not in effect." + ::= { slapmSubcomponentEntry 22 } + + slapmSubcomponentMonitorCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding slapmPRMonInterval (or + slapmPolicyMonitorInterva)l, slapmSubcomponentStatsOutOctets + is divided by slapmPRMonInterval (or + slapmPolicyMonitorInterval) to determine the + current out transfer rate. + + This object only has meaning when an corresponding + slapmPRMonEntry (or slapmPolicyMonitorEntry) exists with + the slapmPRMonControl (or slapmPolicyMonitorControl) + BITS setting monitorSubcomponents(5) enabled. The value + of this object is zero when monitoring is not in effect." + ::= { slapmSubcomponentEntry 23 } + + slapmSubcomponentPolicyRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to an slapmPolicyNameEntry when combined with + slapmSubcomponentSystemAddress to indicate the + policy naming that relates to this entry. + + A value of 0 for this object MUST be returned when + the corresponding slapmSubcomponentEntry has no + policy rule associated with it." + ::= { slapmSubcomponentEntry 24 } + + -- Table that maps an unsigned integer index to whatever + -- names a policy rule. + + slapmPolicyNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides the mapping between a policy index as a + unsigned 32 bit integer and the unique name associated + with a policy rule." + ::= { slapmTableObjects 4 } + + slapmPolicyNameEntry OBJECT-TYPE + SYNTAX SlapmPolicyNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPolicyNameTable." + INDEX { + slapmPolicyNameSystemAddress, + slapmPolicyNameIndex + } + ::= { slapmPolicyNameTable 1 } + + SlapmPolicyNameEntry ::= + SEQUENCE { + slapmPolicyNameSystemAddress OCTET STRING, + slapmPolicyNameIndex Unsigned32, + slapmPolicyNameOfRule SlapmPolicyRuleName + } + + slapmPolicyNameSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Address of a system that an Policy rule definition relates + to. A zero length octet string must be used to indicate + that only a single system is being represented. + Otherwise, the length of the octet string must be + 4 for an ipv4 address or 16 for an ipv6 address." + ::= { slapmPolicyNameEntry 1 } + + slapmPolicyNameIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally arbitrary, but unique identifier associated + with this table entry. This value is not expected to + remain constant across reIPLs." + ::= { slapmPolicyNameEntry 2 } + + slapmPolicyNameOfRule OBJECT-TYPE + SYNTAX SlapmPolicyRuleName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unique name that identifies a policy rule definition." + ::= { slapmPolicyNameEntry 3 } + + -- Sla Performance Monitoring Policy Rule Statistics Table + + slapmPolicyRuleStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyRuleStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides statistics on a per system and a per policy + rule basis." + ::= { slapmTableObjects 5 } + + slapmPolicyRuleStatsEntry OBJECT-TYPE + SYNTAX SlapmPolicyRuleStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPolicyRuleStatsTable. + This table defines a set of statistics that is kept + on a per system and per policy rule basis. + + Entries in this table are not created or deleted via SNMP + but reflect the set of policy rule definitions known + at a system." + INDEX { + slapmPolicyNameSystemAddress, + slapmPolicyNameIndex + } + ::= { slapmPolicyRuleStatsTable 1 } + + SlapmPolicyRuleStatsEntry ::= + SEQUENCE { + slapmPolicyRuleStatsOperStatus INTEGER, + slapmPolicyRuleStatsActiveConns Gauge32, + slapmPolicyRuleStatsTotalConns Counter32, + slapmPolicyRuleStatsLActivated DateAndTime, + slapmPolicyRuleStatsLastMapping DateAndTime, + slapmPolicyRuleStatsInOctets Counter32, + slapmPolicyRuleStatsOutOctets Counter32, + slapmPolicyRuleStatsConnLimit Unsigned32, + slapmPolicyRuleStatsCountAccepts Counter32, + slapmPolicyRuleStatsCountDenies Counter32, + slapmPolicyRuleStatsInDiscards Counter32, + slapmPolicyRuleStatsOutDiscards Counter32, + slapmPolicyRuleStatsInPackets Counter32, + slapmPolicyRuleStatsOutPackets Counter32, + slapmPolicyRuleStatsInProOctets Counter32, + slapmPolicyRuleStatsOutProOctets Counter32, + slapmPolicyRuleStatsMinRate Unsigned32, + slapmPolicyRuleStatsMaxRate Unsigned32, + slapmPolicyRuleStatsMaxDelay Unsigned32, + slapmPolicyRuleStatsTotalRsvpFlows Counter32, + slapmPolicyRuleStatsActRsvpFlows Gauge32 + } + + slapmPolicyRuleStatsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + active(2), + deleteNeeded(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of a policy entry: + + inactive(1) - An policy entry was either defined + by local system definition or + discovered via + a directory search but has not been + activated (not currently being used). + active(2) - Policy entry is being used to affect + traffic flows. + deleteNeeded(3) - Either though local implementation + dependent methods or by discovering + that the directory entry corresponding + to this table entry no longer + exists and slapmPolicyPurgeTime needs + to expire before attempting to remove + the corresponding slapmPolicyStatsEntry + and any dependent slapmPolicyMonitor + table entries. + Note: a policy rule in a state other than + active(2) is not being used to affect traffic flows." + ::= { slapmPolicyRuleStatsEntry 1 } + + slapmPolicyRuleStatsActiveConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyRuleStatsEntry 2 } + + slapmPolicyRuleStatsTotalConns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of total TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyRuleStatsEntry 3 } + + slapmPolicyRuleStatsLActivated OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the corresponding policy entry + was last activated. The value of this object serves as + the discontinuity event indicator when polling entries + in this table. The value of this object is updated on + transition of slapmPolicyRuleStatsOperStatus into the + active(2) state." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyRuleStatsEntry 4 } + + slapmPolicyRuleStatsLastMapping OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last time + that the associated policy entry was used." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyRuleStatsEntry 5 } + + slapmPolicyRuleStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that was received by IP for an + entity that map to this entry." + ::= { slapmPolicyRuleStatsEntry 6 } + + slapmPolicyRuleStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that was transmitted by IP for an + entity that map to this entry." + ::= { slapmPolicyRuleStatsEntry 7 } + + slapmPolicyRuleStatsConnLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The limit for the number of active TCP connections that + are allowed for this policy definition. A value of zero + for this object implies that a connection limit has not + been specified." + ::= { slapmPolicyRuleStatsEntry 8 } + + slapmPolicyRuleStatsCountAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Accept and a session + (TCP connection) is accepted." + ::= { slapmPolicyRuleStatsEntry 9 } + + slapmPolicyRuleStatsCountDenies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Deny and a session is denied, + or when a session (TCP connection) is rejected due to a + policy's connection limit (slapmPolicyRuleStatsConnectLimit) + being reached." + ::= { slapmPolicyRuleStatsEntry 10 } + + slapmPolicyRuleStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in octets discarded. + This occurs when an error is detected. Examples of this + are buffer overflow, checksum error, or bad packet + format." + ::= { slapmPolicyRuleStatsEntry 11 } + + slapmPolicyRuleStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out octets discarded. + Examples of this are buffer overflow, checksum error, or + bad packet format." + ::= { slapmPolicyRuleStatsEntry 12 } + + slapmPolicyRuleStatsInPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in packets received + that relate to this policy entry from IP." + ::= { slapmPolicyRuleStatsEntry 13 } + + slapmPolicyRuleStatsOutPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out packets sent + by IP that relate to this policy entry." + ::= { slapmPolicyRuleStatsEntry 14 } + + slapmPolicyRuleStatsInProOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in octets that are + determined to be within profile." + ::= { slapmPolicyRuleStatsEntry 15 } + + slapmPolicyRuleStatsOutProOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out octets that are + determined to be within profile." + ::= { slapmPolicyRuleStatsEntry 16 } + + slapmPolicyRuleStatsMinRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum transfer rate defined for this entry." + ::= { slapmPolicyRuleStatsEntry 17 } + + slapmPolicyRuleStatsMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum transfer rate defined for this entry." + ::= { slapmPolicyRuleStatsEntry 18 } + + slapmPolicyRuleStatsMaxDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum delay defined for this entry." + ::= { slapmPolicyRuleStatsEntry 19 } + + slapmPolicyRuleStatsTotalRsvpFlows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of RSVP flows that have be activated." + ::= { slapmPolicyRuleStatsEntry 20 } + + slapmPolicyRuleStatsActRsvpFlows OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of active RSVP flows." + ::= { slapmPolicyRuleStatsEntry 21 } + + -- SLA Performance Monitoring Policy Rule Monitor Table + + slapmPRMonTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPRMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a method of monitoring policies and their + effect at a system." + ::= { slapmTableObjects 6 } + + slapmPRMonEntry OBJECT-TYPE + SYNTAX SlapmPRMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPRMonTable. This + table defines which policies should be monitored on a + per policy rule basis. + + An attempt to set any read-create object defined within an + slapmPRMonEntry while the value of slapmPRMonRowStatus is + active(1) will result in an inconsistentValue error." + INDEX { + slapmPRMonOwnerIndex, + slapmPRMonSystemAddress, + slapmPRMonIndex + } + ::= { slapmPRMonTable 1 } + + SlapmPRMonEntry ::= + SEQUENCE { + slapmPRMonOwnerIndex SnmpAdminString, + slapmPRMonSystemAddress OCTET STRING, + slapmPRMonIndex Unsigned32, + slapmPRMonControl BITS, + slapmPRMonStatus SlapmStatus, + slapmPRMonInterval Unsigned32, + slapmPRMonIntTime DateAndTime, + slapmPRMonCurrentInRate Gauge32, + slapmPRMonCurrentOutRate Gauge32, + slapmPRMonMinRateLow Unsigned32, + slapmPRMonMinRateHigh Unsigned32, + slapmPRMonMaxRateHigh Unsigned32, + slapmPRMonMaxRateLow Unsigned32, + slapmPRMonMaxDelayHigh Unsigned32, + slapmPRMonMaxDelayLow Unsigned32, + slapmPRMonMinInRateNotAchieves Counter32, + slapmPRMonMaxInRateExceeds Counter32, + slapmPRMonMaxDelayExceeds Counter32, + slapmPRMonMinOutRateNotAchieves Counter32, + slapmPRMonMaxOutRateExceeds Counter32, + slapmPRMonCurrentDelayRate Gauge32, + slapmPRMonRowStatus RowStatus + } + + slapmPRMonOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to independently create or modify + entries, the initial index is used as an 'owner index'. + Such an initial index has a syntax of SnmpAdminString, + and can thus be trivially mapped to a securityName or + groupName as defined in VACM, in accordance with a + security policy. + + All entries in that table belonging to a particular user + will have the same value for this initial index. For a + given user's entries in a particular table, the object + identifiers for the information in these entries will + have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including the + owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { slapmPRMonEntry 1 } + + slapmPRMonSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmPRMonEntry 2 } + + slapmPRMonIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An slapmPolicyNameTable index, slapmPolicyNameIndex, + that points to the unique name associated with a + policy rule definition." + ::= { slapmPRMonEntry 3 } + + slapmPRMonControl OBJECT-TYPE + SYNTAX BITS { + monitorMinRate(0), + monitorMaxRate(1), + monitorMaxDelay(2), + enableAggregateTraps(3), + enableSubcomponentTraps(4), + monitorSubcomponents(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines the type and level + of monitoring that is applied to a policy rule. The + value of this object can't be changed once the table + entry that it is a part of is activated via a + slapmPRMonRowStatus transition to active state. + + monitorMinRate(0) - Monitor minimum transfer rate. + monitorMaxRate(1) - Monitor maximum transfer rate. + monitorMaxDelay(2) - Monitor maximum delay. + enableAggregateTraps(3) - The enableAggregateTraps(3) + BITS setting enables notification generation + when monitoring a policy rule as an + aggregate using the values in the corresponding + slapmPRMonStatsEntry. By default this function + is not enabled. + enableSubcomponentTraps(4) - This BITS setting enables + notification generation when monitoring all + subcomponents that are mapped to an corresponding + slapmPRMonStatsEntry. By default this + function is not enabled. + monitorSubcomponents(5) - This BITS setting enables + monitoring of each subcomponent (typically a + TCP connection or UDP listener) individually." + DEFVAL { { monitorMinRate, monitorMaxRate, + monitorMaxDelay } } + ::= { slapmPRMonEntry 4 } + + slapmPRMonStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates when a monitored + value has not meet a threshold or isn't meeting the + defined service level. The SlapmStatus TEXTUAL-CONVENTION + defines two levels of not meeting a threshold. The first + set: + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4) + + are used to indicate when the SLA as an aggregate is + not meeting a threshold while the second set: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + indicate that at least one subcomponent is not meeting + a threshold." + ::= { slapmPRMonEntry 5 } + + slapmPRMonInterval OBJECT-TYPE + SYNTAX Unsigned32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that defines the sample period." + DEFVAL {20} -- 20 seconds + ::= { slapmPRMonEntry 6 } + + slapmPRMonIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last interval ended." + DEFVAL { '0000000000000000'H } + ::= { slapmPRMonEntry 7 } + + slapmPRMonCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPRMonInterval, slapmPolicyRuleStatsInOctets + is sampled and then divided by slapmPRMonInterval + to determine the current in transfer rate." + ::= { slapmPRMonEntry 8 } + + slapmPRMonCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonInterval, slapmPolicyRuleStatsOutOctets + is sampled and then divided by slapmPRMonInterval + to determine the current out transfer rate." + ::= { slapmPRMonEntry 9 } + + slapmPRMonMinRateLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored minimum transfer rate has not been meet. + A slapmPolicyRuleMonNotOkay notification is not + generated again for an slapmPRMonEntry until + the minimum transfer rate + exceeds slapmPRMonMinRateHigh (a + slapmPolicyRuleMonOkay notification is then transmitted) + and then fails below slapmPRMonMinRateLow. This + behavior reduces the slapmPolicyRuleMonNotOkay + notifications that are transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 10 } + + slapmPRMonMinRateHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored minimum + transfer rate has increased to an acceptable level. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 11 } + + slapmPRMonMaxRateHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored maximum transfer rate has been exceeded. + + A slapmPolicyRuleNotOkay notification is not + generated again for an slapmPRMonEntry until the + maximum transfer rate fails below + slapmPRMonMaxRateLow (a slapmPolicyRuleMonOkay + notification is then transmitted) and then raises above + slapmPRMonMaxRateHigh. This behavior reduces the + slapmPolicyRuleMonNotOkay notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 12 } + + slapmPRMonMaxRateLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored maximum + transfer rate has fallen to an acceptable level. + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 13 } + + slapmPRMonMaxDelayHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored maximum delay rate has been exceeded. + + A slapmPolicyRuleMonNotOkay notification is not + generated again for an slapmPRMonEntry until + the maximum delay rate falls below + slapmPRMonMaxDelayLow (a slapmPolicyRuleMonOkay + notification is then transmitted) and raises above + slapmPRMonMaxDelayHigh. This behavior reduces + the slapmPolicyRuleMonNotOkay notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 14 } + + slapmPRMonMaxDelayLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored maximum delay + rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 15 } + + slapmPRMonMinInRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a minimum transfer in rate + was not achieved." + ::= { slapmPRMonEntry 16 } + + slapmPRMonMaxInRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum transfer in rate + was exceeded." + ::= { slapmPRMonEntry 17 } + + slapmPRMonMaxDelayExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum delay in rate + was exceeded." + ::= { slapmPRMonEntry 18 } + + slapmPRMonMinOutRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a minimum transfer out rate + was not achieved." + ::= { slapmPRMonEntry 19 } + + slapmPRMonMaxOutRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum transfer out rate + was exceeded." + ::= { slapmPRMonEntry 20 } + + slapmPRMonCurrentDelayRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current delay rate for this entry. This is + calculated by taking the average of the TCP + round trip times for all associating + slapmSubcomponentTable entries within a interval." + ::= { slapmPRMonEntry 21 } + + slapmPRMonRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the slapmPRMonTable. An entry in this table + is deleted by setting this object to destroy(6). + + Removal of an corresponding (same policy index) + slapmPolicyRuleStatsEntry has the side effect of the + automatic deletion an entry in this table. + + Note that an attempt to set any read-create object + defined within an slapmPRMonEntry while the value + of slapmPRMonRowStatus is active(1) will result in + an inconsistentValue error." + ::= { slapmPRMonEntry 22 } + + -- Notifications + + slapmMonitoredEventNotAchieved NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorIntTime, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorStatus, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate + } + STATUS deprecated + DESCRIPTION + "This notification is generated when an monitored event + is not achieved with respect to threshold. This + applies only towards monitoring a policy traffic + profile as an aggregate via an associating + slapmPolicyStatsEntry. The value + of slapmPolicyMonitorControl can be examined to + determine what is being monitored. The first + slapmPolicyMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 1 } + + slapmMonitoredEventOkay NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorIntTime, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorStatus, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored + event has improved to an acceptable level. This + applies only towards monitoring a policy traffic + profile as an aggregate via an associating + slapmPolicyStatsEntry. The value + of slapmPolicyMonitorControl can be examined to + determine what is being monitored. The first + slapmPolicyMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 2 } + + slapmPolicyProfileDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyStatsActiveConns, + slapmPolicyStatsTotalConns, + slapmPolicyStatsFirstActivated, + slapmPolicyStatsLastMapping, + slapmPolicyStatsInOctets, + slapmPolicyStatsOutOctets, + slapmPolicyStatsConnectionLimit, + slapmPolicyStatsCountAccepts, + slapmPolicyStatsCountDenies, + slapmPolicyStatsInDiscards, + slapmPolicyStatsOutDiscards, + slapmPolicyStatsInPackets, + slapmPolicyStatsOutPackets, + slapmPolicyStatsInProfileOctets, + slapmPolicyStatsOutProfileOctets, + slapmPolicyStatsMinRate, + slapmPolicyStatsMaxRate, + slapmPolicyStatsMaxDelay + } + STATUS deprecated + DESCRIPTION + "A slapmPolicyDeleted notification is sent when a + slapmPolicyStatsEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 3 } + + slapmPolicyMonitorDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorStatus, + slapmPolicyMonitorInterval, + slapmPolicyMonitorIntTime, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate, + slapmPolicyMonitorMinRateLow, + slapmPolicyMonitorMinRateHigh, + slapmPolicyMonitorMaxRateHigh, + slapmPolicyMonitorMaxRateLow, + slapmPolicyMonitorMaxDelayHigh, + slapmPolicyMonitorMaxDelayLow, + slapmPolicyMonitorMinInRateNotAchieves, + slapmPolicyMonitorMaxInRateExceeds, + slapmPolicyMonitorMaxDelayExceeds, + slapmPolicyMonitorMinOutRateNotAchieves, + slapmPolicyMonitorMaxOutRateExceeds + } + STATUS deprecated + DESCRIPTION + "A slapmPolicyMonitorDeleted notification is sent when a + slapmPolicyMonitorEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 4 } + + slapmSubcomponentMonitoredEventNotAchieved NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored value + does not achieved a threshold specification. This + applies only towards monitoring the individual components + of a policy traffic profile. The value of the + corresponding slapmPolicyMonitorControl can be examined + to determine what is being monitored. The first + slapmSubcomponentMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableSubcomponentTraps(4), MUST be selected + in order for this notification to potentially be generated." + ::= { slapmNotifications 5 } + + slapmSubcomponentMonitoredEventOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored value + has reached an acceptable level. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableSubcomponentTraps(3), MUST be + selected in order for this notification to potentially + be generated." + ::= { slapmNotifications 6 } + + slapmPolicyRuleMonNotOkay NOTIFICATION-TYPE + OBJECTS { + slapmPRMonIntTime, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonStatus, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate + } + STATUS current + DESCRIPTION + "This notification is generated when an monitored event + is not achieved with respect to a threshold. This + applies only towards monitoring a policy rule + as an aggregate via an associating + slapmPolicyRuleStatsEntry. The value + of slapmPRMonControl can be examined to + determine what is being monitored. The first + slapmPRMonStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 7 } + + slapmPolicyRuleMonOkay NOTIFICATION-TYPE + OBJECTS { + slapmPRMonIntTime, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonStatus, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate + } + STATUS current + DESCRIPTION + "This notification is generated when a monitored + event has improved to an acceptable level. This + applies only towards monitoring a policy rule + as an aggregate via an associating + slapmPolicyRuleStatsEntry. The value + of slapmPRMonControl can be examined to + determine what is being monitored. The first + slapmPRMonStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 8 } + + slapmPolicyRuleDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyRuleStatsActiveConns, + slapmPolicyRuleStatsTotalConns, + slapmPolicyRuleStatsLActivated, + slapmPolicyRuleStatsLastMapping, + slapmPolicyRuleStatsInOctets, + slapmPolicyRuleStatsOutOctets, + slapmPolicyRuleStatsConnLimit, + slapmPolicyRuleStatsCountAccepts, + slapmPolicyRuleStatsCountDenies, + slapmPolicyRuleStatsInDiscards, + slapmPolicyRuleStatsOutDiscards, + slapmPolicyRuleStatsInPackets, + slapmPolicyRuleStatsOutPackets, + slapmPolicyRuleStatsInProOctets, + slapmPolicyRuleStatsOutProOctets, + slapmPolicyRuleStatsMinRate, + slapmPolicyRuleStatsMaxRate, + slapmPolicyRuleStatsMaxDelay, + slapmPolicyRuleStatsTotalRsvpFlows, + slapmPolicyRuleStatsActRsvpFlows + } + STATUS current + DESCRIPTION + "A slapmPolicyRuleDeleted notification is sent when a + slapmPolicyRuleStatsEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 9 } + + slapmPolicyRuleMonDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonInterval, + slapmPRMonIntTime, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate, + slapmPRMonMinRateLow, + slapmPRMonMinRateHigh, + slapmPRMonMaxRateHigh, + slapmPRMonMaxRateLow, + slapmPRMonMaxDelayHigh, + slapmPRMonMaxDelayLow, + slapmPRMonMinInRateNotAchieves, + slapmPRMonMaxInRateExceeds, + slapmPRMonMaxDelayExceeds, + slapmPRMonMinOutRateNotAchieves, + slapmPRMonMaxOutRateExceeds + } + STATUS current + DESCRIPTION + "A slapmPolicyRuleMonDeleted notification is sent when a + slapmPRMonEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 10 } + + slapmSubcMonitorNotOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyRuleIndex, + slapmPRMonControl, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS current + DESCRIPTION + "This notification is generated when a monitored value + does not achieved a threshold specification. This + applies only towards monitoring the individual components + of a policy rule. The value of the + corresponding slapmPRMonControl can be examined + to determine what is being monitored. The first + slapmSubcomponentMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableSubcomponentTraps(4), MUST be selected + in order for this notification to potentially be generated." + ::= { slapmNotifications 11 } + + slapmSubcMonitorOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyRuleIndex, + slapmPRMonControl, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + + STATUS current + DESCRIPTION + "This notification is generated when a monitored value + has reached an acceptable level. + + Note: The corresponding slapmPRMonControl + BITS setting, enableSubcomponentTraps(3), MUST be + selected in order for this notification to potentially + be generated." + ::= { slapmNotifications 12 } + + -- Conformance information + -- Compliance statements + + slapmCompliances OBJECT IDENTIFIER ::= { slapmConformance 1 } + slapmGroups OBJECT IDENTIFIER ::= { slapmConformance 2 } + + -- Compliance statements + + slapmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SLAPM-MIB." + MODULE -- this module + MANDATORY-GROUPS { + slapmBaseGroup2, + slapmNotGroup2 + } + GROUP slapmEndSystemGroup2 + DESCRIPTION + "The contents of this group is required by end-system + implementations." + GROUP slapmEndSystemNotGroup2 + DESCRIPTION + "The contents of this group is required by end-system + implementations." + GROUP slapmBaseGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmBaseGroup2. Older implementations of this + MIB would continue its support of the contents of this + group." + GROUP slapmNotGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmNotGroup2. Older implementations of this + MIB would continue its support of the contents of + this group." + GROUP slapmOptionalGroup + DESCRIPTION + "The contents of this group has been deprecated." + GROUP slapmEndSystemGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmEndSystemGroup2. Older implementations + of this MIB would continue its support of the + contents of this group." + GROUP slapmEndSystemNotGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmEndSystemNotGroup2. Older + implementations of this MIB would continue its support + of the contents of this group." + ::= { slapmCompliances 1 } + + -- MIB groupings + + slapmBaseGroup OBJECT-GROUP + OBJECTS { + slapmSpinLock, + slapmPolicyCountQueries, + slapmPolicyCountAccesses, + slapmPolicyCountSuccessAccesses, + slapmPolicyCountNotFounds, + slapmPolicyPurgeTime, + slapmPolicyTrapEnable, + slapmPolicyStatsOperStatus, + slapmPolicyStatsActiveConns, + slapmPolicyStatsFirstActivated, + slapmPolicyStatsLastMapping, + slapmPolicyStatsInOctets, + slapmPolicyStatsOutOctets, + slapmPolicyStatsConnectionLimit, + slapmPolicyStatsTotalConns, + slapmPolicyStatsCountAccepts, + slapmPolicyStatsCountDenies, + slapmPolicyStatsInDiscards, + slapmPolicyStatsOutDiscards, + slapmPolicyStatsInPackets, + slapmPolicyStatsOutPackets, + slapmPolicyStatsMinRate, + slapmPolicyStatsMaxRate, + slapmPolicyStatsMaxDelay, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorInterval, + slapmPolicyMonitorIntTime, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorMinRateLow, + slapmPolicyMonitorMinRateHigh, + slapmPolicyMonitorMaxRateHigh, + slapmPolicyMonitorMaxRateLow, + slapmPolicyMonitorMaxDelayHigh, + slapmPolicyMonitorMaxDelayLow, + slapmPolicyMonitorMinInRateNotAchieves, + slapmPolicyMonitorMaxInRateExceeds, + slapmPolicyMonitorMaxDelayExceeds, + slapmPolicyMonitorMinOutRateNotAchieves, + slapmPolicyMonitorMaxOutRateExceeds, + slapmPolicyMonitorCurrentDelayRate, + slapmPolicyMonitorRowStatus + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for all implementations to be compliant." + ::= { slapmGroups 1 } + + slapmOptionalGroup OBJECT-GROUP + OBJECTS { + slapmPolicyStatsInProfileOctets, + slapmPolicyStatsOutProfileOctets + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + optional." + ::= { slapmGroups 2 } + + slapmEndSystemGroup OBJECT-GROUP + OBJECTS { + slapmPolicyTrapFilter, + slapmSubcomponentProtocol, + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentLastActivity, + slapmSubcomponentInOctets, + slapmSubcomponentOutOctets, + slapmSubcomponentTcpOutBufferedOctets, + slapmSubcomponentTcpInBufferedOctets, + slapmSubcomponentTcpReXmts, + slapmSubcomponentTcpRoundTripTime, + slapmSubcomponentTcpRoundTripVariance, + slapmSubcomponentInPdus, + slapmSubcomponentOutPdus, + slapmSubcomponentApplName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentMonitorCurrentInRate + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 3 } + + slapmNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + slapmMonitoredEventNotAchieved, + slapmMonitoredEventOkay, + slapmPolicyProfileDeleted, + slapmPolicyMonitorDeleted + } + STATUS deprecated + DESCRIPTION + "The group of notifications defined by this MIB that MUST + be implemented." + ::= { slapmGroups 4 } + + slapmEndSystemNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + slapmSubcomponentMonitoredEventNotAchieved, + slapmSubcomponentMonitoredEventOkay + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 5 } + + slapmBaseGroup2 OBJECT-GROUP + OBJECTS { + slapmSpinLock, + slapmPolicyCountQueries, + slapmPolicyCountAccesses, + slapmPolicyCountSuccessAccesses, + slapmPolicyCountNotFounds, + slapmPolicyPurgeTime, + slapmPolicyTrapEnable, + slapmPolicyNameOfRule, + slapmPolicyRuleStatsOperStatus, + slapmPolicyRuleStatsActiveConns, + slapmPolicyRuleStatsTotalConns, + slapmPolicyRuleStatsLActivated, + slapmPolicyRuleStatsLastMapping, + slapmPolicyRuleStatsInOctets, + slapmPolicyRuleStatsOutOctets, + slapmPolicyRuleStatsConnLimit, + slapmPolicyRuleStatsCountAccepts, + slapmPolicyRuleStatsCountDenies, + slapmPolicyRuleStatsInDiscards, + slapmPolicyRuleStatsOutDiscards, + slapmPolicyRuleStatsInPackets, + slapmPolicyRuleStatsOutPackets, + slapmPolicyRuleStatsInProOctets, + slapmPolicyRuleStatsOutProOctets, + slapmPolicyRuleStatsMinRate, + slapmPolicyRuleStatsMaxRate, + slapmPolicyRuleStatsMaxDelay, + slapmPolicyRuleStatsTotalRsvpFlows, + slapmPolicyRuleStatsActRsvpFlows, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonInterval, + slapmPRMonIntTime, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonMinRateLow, + slapmPRMonMinRateHigh, + slapmPRMonMaxRateHigh, + slapmPRMonMaxRateLow, + slapmPRMonMaxDelayHigh, + slapmPRMonMaxDelayLow, + slapmPRMonMinInRateNotAchieves, + slapmPRMonMaxInRateExceeds, + slapmPRMonMaxDelayExceeds, + slapmPRMonMinOutRateNotAchieves, + slapmPRMonMaxOutRateExceeds, + slapmPRMonCurrentDelayRate, + slapmPRMonRowStatus + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for all implementations to be compliant." + ::= { slapmGroups 6 } + + slapmEndSystemGroup2 OBJECT-GROUP + OBJECTS { + slapmPolicyTrapFilter, + slapmSubcomponentProtocol, + slapmSubcomponentSystemAddress, + slapmSubcomponentLastActivity, + slapmSubcomponentInOctets, + slapmSubcomponentOutOctets, + slapmSubcomponentTcpOutBufferedOctets, + slapmSubcomponentTcpInBufferedOctets, + slapmSubcomponentTcpReXmts, + slapmSubcomponentTcpRoundTripTime, + slapmSubcomponentTcpRoundTripVariance, + slapmSubcomponentInPdus, + slapmSubcomponentOutPdus, + slapmSubcomponentApplName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentPolicyRuleIndex + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 7 } + + slapmNotGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + slapmPolicyRuleMonNotOkay, + slapmPolicyRuleMonOkay, + slapmPolicyRuleDeleted, + slapmPolicyRuleMonDeleted + } + STATUS current + DESCRIPTION + "The group of notifications defined by this MIB that MUST + be implemented." + ::= { slapmGroups 8 } + + slapmEndSystemNotGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + slapmSubcMonitorNotOkay, + slapmSubcMonitorOkay + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 9 } +END diff --git a/mibs/ietf/SMON-MIB b/mibs/ietf/SMON-MIB new file mode 100644 index 0000000..368a309 --- /dev/null +++ b/mibs/ietf/SMON-MIB @@ -0,0 +1,1262 @@ +SMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, Counter64 + FROM SNMPv2-SMI + RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + rmon, OwnerString + FROM RMON-MIB + LastCreateTime, DataSource, rmonConformance, probeConfig + FROM RMON2-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +switchRMON MODULE-IDENTITY + LAST-UPDATED "9812160000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "IETF RMONMIB WG Mailing list: rmonmib@cisco.com + + Rich Waterman + Allot Networks Inc. + Tel: +1-408-559-0253 + Email: rich@allot.com + + Bill Lahaye + Xylan Corp. + Tel: +1-800-995-2612 + Email: lahaye@ctron.com + + Dan Romascanu + Lucent Technologies + Tel: +972-3-645-8414 + Email: dromasca@lucent.com + + Steven Waldbusser + International Network Services (INS) + Tel: +1-650-318-1251 + Email: waldbusser@ins.com" + + DESCRIPTION + "The MIB module for managing remote monitoring device + implementations for Switched Networks" + + -- revision history + + REVISION "9812160000Z" -- 16 Dec 1998 midemight + DESCRIPTION "Initial Version, published as RFC 2613." + + ::= { rmon 22 } + +smonMIBObjects OBJECT IDENTIFIER ::= { switchRMON 1 } + +dataSourceCaps OBJECT IDENTIFIER ::= {smonMIBObjects 1} +smonStats OBJECT IDENTIFIER ::= {smonMIBObjects 2} +portCopyConfig OBJECT IDENTIFIER ::= {smonMIBObjects 3} +smonRegistrationPoints OBJECT IDENTIFIER ::= {smonMIBObjects 4} + +-- Textual Conventions +-- + +SmonDataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated function + is configured to analyze. This Textual Convention + extends the DataSource Textual Convention defined by RMON 2 + to the following data source types: + + - ifIndex. + DataSources of this traditional form are called 'port-based', + but only if ifType. is not equal to 'propVirtual(53)'. + + - smonVlanDataSource. + A dataSource of this form refers to a 'Packet-based VLAN' + and is called a 'VLAN-based' dataSource. is the VLAN + ID as defined by the IEEE 802.1Q standard [19]. The + value is between 1 and 4094 inclusive, and it represents + an 802.1Q VLAN-ID with global scope within a given + bridged domain, as defined by [19]. + + - entPhysicalEntry. + A dataSource of this form refers to a physical entity within + the agent (e.g. entPhysicalClass = backplane(4)) and is called + an 'entity-based' dataSource." + SYNTAX OBJECT IDENTIFIER + +-- The smonCapabilities object describes SMON agent capabilities. + +smonCapabilities OBJECT-TYPE + SYNTAX BITS { + smonVlanStats(0), + smonPrioStats(1), + dataSource(2), + smonUnusedBit(3), + portCopy(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the SMON MIB groups supported + by this agent." + ::= { probeConfig 15 } + +-- dataSourceCaps MIB group - defines SMON data source and port +-- copy capabilities for devices supporting SMON. + +-- A NMS application will check this MIB group and retrieve +-- information about the SMON capabilities of the device before +-- applying SMON control operations to the device. + + +-- dataSourceCapsTable: defines capabilities of RMON data sources + +dataSourceCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes RMON data sources and port copy + capabilities. An NMS MAY use this table to discover the + identity and attributes of the data sources on a given agent + implementation. Similar to the probeCapabilities object, + actual row-creation operations will succeed or fail based on + the resources available and parameter values used in each + row-creation operation. + + Upon restart of the RMON agent, the dataSourceTable, ifTable, + and perhaps entPhysicalTable are initialized for the available + dataSources. + + For each dataSourceCapsEntry representing a VLAN or + entPhysicalEntry the agent MUST create an associated ifEntry + with a ifType value of 'propVirtual(53)'. This ifEntry will be + used as the actual value in RMON control table dataSource + objects. The assigned ifIndex value is copied into the + associated dataSourceCapsIfIndex object. + + It is understood that dataSources representing VLANs may not + always be instantiated immediately upon restart, but rather as + VLAN usage is detected by the agent. The agent SHOULD attempt + to create dataSource and interface entries for all dataSources + as soon as possible." +::= { dataSourceCaps 1 } + +dataSourceCapsEntry OBJECT-TYPE + SYNTAX DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per data source containing descriptions of data + source and port copy capabilities. This table is populated by + the SMON agent with one entry for each supported data + source." +INDEX { IMPLIED dataSourceCapsObject } +::= { dataSourceCapsTable 1 } + +DataSourceCapsEntry ::= SEQUENCE { + dataSourceCapsObject + SmonDataSource, + dataSourceRmonCaps + BITS, + dataSourceCopyCaps + BITS, + dataSourceCapsIfIndex + InterfaceIndex + } + +dataSourceCapsObject OBJECT-TYPE + SYNTAX SmonDataSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an object that can be a SMON data source or a + source or a destination for a port copy operation." + ::= { dataSourceCapsEntry 1 } + +dataSourceRmonCaps OBJECT-TYPE + SYNTAX BITS { + countErrFrames(0), + countAllGoodFrames(1), + countAnyRmonTables(2), + babyGiantsCountAsGood(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " General attributes of the specified dataSource. Note that + these are static attributes, which SHOULD NOT be adjusted + because of current resources or configuration. + + - countErrFrames(0) + The agent sets this bit for the dataSource if errored frames + received on this dataSource can actually be monitored by the + agent The agent clears this bit if any errored frames are + not visible to the RMON data collector. + + - countAllGoodFrames(1) + The agent sets this bit for the dataSource if all good + frames received on this dataSource can actually be monitored + by the agent. The agent clears this bit if any good frames + are not visible for RMON collection, e.g., the dataSource is + a non-promiscuous interface or an internal switch interface + which may not receive frames which were switched in hardware + or dropped by the bridge forwarding function. + + - countAnyRmonTables(2) + The agent sets this bit if this dataSource can actually be + used in any of the implemented RMON tables, resources + notwithstanding. The agent clears this bit if this + dataSourceCapsEntry is present simply to identify a + dataSource that may only be used as portCopySource and/or a + portCopyDest, but not the source of an actual RMON data + collection. + + - babyGiantsCountAsGood(3) + The agent sets this bit if it can distinguish, for counting + purposes, between true giant frames and frames that exceed + Ethernet maximum frame size 1518 due to VLAN tagging ('baby + giants'). Specifically, this BIT means that frames up to + 1522 octets are counted as good. + + Agents not capable of detecting 'baby giants' will clear + this bit and will view all frames less than or equal to 1518 + octets as 'good frames' and all frames larger than 1518 + octets as 'bad frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables. + + Agents capable of detecting 'baby giants' SHALL consider + them as 'good frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables." + + ::= { dataSourceCapsEntry 2 } + +dataSourceCopyCaps OBJECT-TYPE + SYNTAX BITS { + copySourcePort(0), + copyDestPort(1), + copySrcTxTraffic(2), + copySrcRxTraffic(3), + countDestDropEvents(4), + copyErrFrames(5), + copyUnalteredFrames(6), + copyAllGoodFrames(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PortCopy function capabilities of the specified dataSource. + Note that these are static capabilities, which SHOULD NOT be + adjusted because of current resources or configuration. + + - copySourcePort(0) + The agent sets this bit if this dataSource is capable of + acting as a source of a portCopy operation. The agent clears + this bit otherwise. + + - copyDestPort(1) + The agent sets this bit if this dataSource is capable of + acting as a destination of a portCopy operation. The agent + clears this bit otherwise. + + - copySrcTxTraffic(2) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames transmitted out this portCopy source. The + agent clears this bit otherwise. This function is needed + to support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - copySrcRxTraffic(3) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames received on this portCopy source. The agent + clears this bit otherwise. This function is needed to + support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - countDestDropEvents(4) + If the copyDestPort bit is set: + The agent sets this bit if it is capable of incrementing + portCopyDestDropEvents, when this dataSource is the + target of a portCopy operation and a frame destined to + this dataSource is dropped (for RMON counting purposes). + Else: + this BIT SHOULD be cleared. + + - copyErrFrames(5) + If the copySourcePort bit is set: + The agent sets this bit if it is capable of copying all + errored frames from this portCopy source-port, for + errored frames received on this dataSource. + Else: + this BIT SHOULD be cleared. + + - copyUnalteredFrames(6) + If the copySourcePort bit is set: + The agent sets the copyUnalteredFrames bit If it is + capable of copying all frames from this portCopy + source-port without alteration in any way; + Else: + this bit SHOULD be cleared. + + - copyAllGoodFrames(7) + If the copySourcePort bit is set: + The agent sets this bit for the dataSource if all good + frames received on this dataSource are normally capable + of being copied by the agent. The agent clears this bit + if any good frames are not visible for the RMON portCopy + operation, e.g., the dataSource is a non-promiscuous + interface or an internal switch interface which may not + receive frames which were switched in hardware or + dropped by the bridge forwarding function. + Else: + this bit SHOULD be cleared." + + ::= { dataSourceCapsEntry 3 } + +dataSourceCapsIfIndex OBJECT-TYPE +SYNTAX InterfaceIndex +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "This object contains the ifIndex value of the ifEntry + associated with this smonDataSource. The agent MUST create + 'propVirtual' ifEntries for each dataSourceCapsEntry of type + VLAN or entPhysicalEntry." + + ::= { dataSourceCapsEntry 4 } + +-- The SMON Statistics MIB Group + +-- aggregated statistics for IEEE 802.1Q VLAN environments. + +-- VLAN statistics can be gathered by configuring smonVlanIdStats +-- and/or smonPrioStats collections. These functions allow a +-- VLAN-ID or user priority distributions per dataSource, +-- auto-populated by the agent in a manner similar to the RMON +-- hostTable. + +-- Only good frames are counted in the tables described in this +-- section. + +-- VLAN ID Stats + +-- smonVlanStatsControlTable allows configuration of VLAN-ID +-- collections. + +smonVlanStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "Controls the setup of VLAN statistics tables. + + The statistics collected represent a distribution based on + the IEEE 802.1Q VLAN-ID (VID), for each good frame attributed + to the data source for the collection." + ::= { smonStats 1 } + +smonVlanStatsControlEntry OBJECT-TYPE + SYNTAX SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonVlanStatsControlTable." + INDEX { smonVlanStatsControlIndex } + ::= { smonVlanStatsControlTable 1 } + +SmonVlanStatsControlEntry ::= SEQUENCE { + smonVlanStatsControlIndex Integer32, + smonVlanStatsControlDataSource DataSource, + smonVlanStatsControlCreateTime LastCreateTime, + smonVlanStatsControlOwner OwnerString, + smonVlanStatsControlStatus RowStatus +} + +smonVlanStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonVlanStatsControlEntry." + ::= { smonVlanStatsControlEntry 1 } + +smonVlanStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonVlanStatsControlStatus object is equal to active(1)." + ::= { smonVlanStatsControlEntry 2 } + +smonVlanStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanStatsControlEntry 3 } + +smonVlanStatsControlOwner OBJECT-TYPE + + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonVlanStatsControlEntry 4 } + +smonVlanStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonVlanIdStatsTable SHALL be deleted." + ::= { smonVlanStatsControlEntry 5 } + +-- The VLAN Statistics Table + +smonVlanIdStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the VLAN statistics data. + The statistics collected represent a distribution based + on the IEEE 802.1Q VLAN-ID (VID), for each good frame + attributed to the data source for the collection. + + This function applies the same rules for attributing frames + to VLAN-based collections. RMON VLAN statistics are collected + after the Ingress Rules defined in section 3.13 of the VLAN + Specification [20] are applied. + + It is possible that entries in this table will be + garbage-collected, based on agent resources, and VLAN + configuration. Agents are encouraged to support all 4094 + index values and not garbage collect this table." +::= { smonStats 2 } + +smonVlanIdStatsEntry OBJECT-TYPE + SYNTAX SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonVlanIdStatsTable." + INDEX { smonVlanStatsControlIndex, smonVlanIdStatsId } + ::= { smonVlanIdStatsTable 1 } + +SmonVlanIdStatsEntry ::= SEQUENCE { + smonVlanIdStatsId Integer32, + smonVlanIdStatsTotalPkts Counter32, + smonVlanIdStatsTotalOverflowPkts Counter32, + smonVlanIdStatsTotalHCPkts Counter64, + smonVlanIdStatsTotalOctets Counter32, + smonVlanIdStatsTotalOverflowOctets Counter32, + smonVlanIdStatsTotalHCOctets Counter64, + smonVlanIdStatsNUcastPkts Counter32, + smonVlanIdStatsNUcastOverflowPkts Counter32, + smonVlanIdStatsNUcastHCPkts Counter64, + smonVlanIdStatsNUcastOctets Counter32, + smonVlanIdStatsNUcastOverflowOctets Counter32, + smonVlanIdStatsNUcastHCOctets Counter64, + smonVlanIdStatsCreateTime LastCreateTime +} + +smonVlanIdStatsId OBJECT-TYPE + SYNTAX Integer32 (1..4094) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the VLAN monitored for + this specific statistics collection. + + Tagged packets match the VID for the range between 1 and 4094. + An external RMON probe MAY detect VID=0 on an Inter Switch + Link, in which case the packet belongs to a VLAN determined by + the PVID of the ingress port. The VLAN to which such a packet + belongs can be determined only by a RMON probe internal to the + switch." + REFERENCE + "Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 3.13" + ::= { smonVlanIdStatsEntry 1 } + +smonVlanIdStatsTotalPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 2 } + +smonVlanIdStatsTotalOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 3 } + +smonVlanIdStatsTotalHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 4 } + +smonVlanIdStatsTotalOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." + ::= { smonVlanIdStatsEntry 5 } + +smonVlanIdStatsTotalOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalOctets + counter has overflowed." + ::= { smonVlanIdStatsEntry 6 } + +smonVlanIdStatsTotalHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." +::= { smonVlanIdStatsEntry 7 } + +smonVlanIdStatsNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on this + VLAN." + ::= { smonVlanIdStatsEntry 8 } + +smonVlanIdStatsNUcastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsNUcastPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 9 } + +smonVlanIdStatsNUcastHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 10 } + +smonVlanIdStatsNUcastOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 11 } + +smonVlanIdStatsNUcastOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + smonVlanIdStatsNUcastOctets counter has overflowed." + ::= { smonVlanIdStatsEntry 12 } + +smonVlanIdStatsNUcastHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 13 } + +smonVlanIdStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanIdStatsEntry 14 } + +-- smonPrioStatsControlTable + +smonPrioStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of priority statistics tables. + + The smonPrioStatsControlTable allows configuration of + collections based on the value of the 3-bit user priority + field encoded in the Tag Control Information (TCI) field + according to [19],[20]. + + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes." + + ::= { smonStats 3 } + +smonPrioStatsControlEntry OBJECT-TYPE + SYNTAX SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonPrioStatsControlTable." + INDEX { smonPrioStatsControlIndex } + ::= { smonPrioStatsControlTable 1 } + + +SmonPrioStatsControlEntry ::= SEQUENCE { + smonPrioStatsControlIndex Integer32, + smonPrioStatsControlDataSource DataSource, + smonPrioStatsControlCreateTime LastCreateTime, + smonPrioStatsControlOwner OwnerString, + smonPrioStatsControlStatus RowStatus +} + +smonPrioStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonPrioStatsControlEntry." + ::= { smonPrioStatsControlEntry 1 } + +smonPrioStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonPrioStatsControlStatus object is equal to active(1)." + ::= { smonPrioStatsControlEntry 2 } + +smonPrioStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was created. + This object allows to a management station to + detect deletion and recreation cycles between polls." + + ::= { smonPrioStatsControlEntry 3 } + +smonPrioStatsControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonPrioStatsControlEntry 4 } + +smonPrioStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonPrioStatsTable SHALL be deleted." + ::= { smonPrioStatsControlEntry 5 } + +-- The Priority Statistics Table + +smonPrioStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the priority statistics. The collections are based + on the value of the 3-bit user priority field encoded in the + Tag Control Information (TCI) field according to [19], [20]. + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes. + + No garbage collection is designed for this table, as there + always are at most eight rows per statistical set, and the + low memory requirements do not justify the implementation of + such a mechanism." + ::= { smonStats 4 } + +smonPrioStatsEntry OBJECT-TYPE + SYNTAX SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonPrioStatsTable." + INDEX { smonPrioStatsControlIndex, smonPrioStatsId } + ::= { smonPrioStatsTable 1 } + +SmonPrioStatsEntry ::= SEQUENCE { + smonPrioStatsId Integer32, + smonPrioStatsPkts Counter32, + smonPrioStatsOverflowPkts Counter32, + smonPrioStatsHCPkts Counter64, + smonPrioStatsOctets Counter32, + smonPrioStatsOverflowOctets Counter32, + smonPrioStatsHCOctets Counter64 +} + +smonPrioStatsId OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the priority level monitored for + this specific statistics collection." + REFERENCE + " Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 4.3.2.1" + ::= { smonPrioStatsEntry 1 } + +smonPrioStatsPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 2 } + +smonPrioStatsOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsPkts + counter has overflowed." + ::= { smonPrioStatsEntry 3 } + +smonPrioStatsHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 4 } + +smonPrioStatsOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 5 } + +smonPrioStatsOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsOctets + counter has overflowed." + ::= { smonPrioStatsEntry 6 } + +smonPrioStatsHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 7 } + + +portCopyTable OBJECT-TYPE + SYNTAX SEQUENCE OF PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Port Copy provides the ability to copy all frames from a + specified source to specified destination within a switch. + Source and destinations MUST be ifEntries, as defined by [22]. + One to one, one to many, many to one and many to many source to + destination relationships may be configured. + + Applicable counters on the destination will increment for all + packets transiting the port, be it by normal bridging/switching + or due to packet copy. + Note that this table manages no RMON data collection by itself, + and an agent may possibly implement no RMON objects except + objects related to the port copy operation defined by the + portCopyCompliance conformance macro. That allows for a switch + with no other embedded RMON capability to perform port copy + operations to a destination port at which a different external + RMON probe is connected. + + One to one, many to one and one to many source to destination + relationships may be configured. + Each row that exists in this table defines such a + relationship. By disabling a row in this table the port copy + relationship no longer exists. + + The number of entries and the types of port copies (1-1, + many-1, 1-many) are implementation specific and could + possibly be dynamic due to changing resource availability. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created. + + Applicable counters on the destination will increment for all + packets transmitted, be it by normal bridging/switching or + due to packet copy." +::= { portCopyConfig 1 } + +portCopyEntry OBJECT-TYPE + SYNTAX PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a particular port copy entry." +INDEX { portCopySource, portCopyDest } +::= { portCopyTable 1 } + +PortCopyEntry ::= SEQUENCE { + portCopySource + InterfaceIndex, + portCopyDest + InterfaceIndex, + portCopyDestDropEvents + Counter32, + portCopyDirection + INTEGER, + portCopyStatus + RowStatus + } + +portCopySource OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the source which will have all packets + redirected to the destination as defined by portCopyDest." + ::= { portCopyEntry 1 } + +portCopyDest OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the ifIndex destination for the copy operation." + ::= { portCopyEntry 2 } + +portCopyDestDropEvents OBJECT-TYPE + SYNTAX Counter32 + UNITS "events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which port copy packets were + dropped by the switch at the destination port due to lack of + resources. + + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected. + + A single dropped event counter is maintained for each + portCopyDest. Thus all instances associated with a given + portCopyDest will have the same portCopyDestDropEvents + value." + ::= { portCopyEntry 3 } + +portCopyDirection OBJECT-TYPE + SYNTAX INTEGER { + copyRxOnly(1), + copyTxOnly(2), + copyBoth(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object affects the way traffic is copied from a switch + source port, for the indicated port copy operation. + If this object has the value 'copyRxOnly(1)', then only + traffic received on the indicated source port will be copied + to the indicated destination port. + + If this object has the value 'copyTxOnly(2)', then only + traffic transmitted out the indicated source port will be + copied to the indicated destination port. + + If this object has the value 'copyBoth(3)', then all traffic + received or transmitted on the indicated source port will be + copied to the indicated destination port. + + The creation and deletion of instances of this object is + controlled by the portCopyRowStatus object. Note that there + is no guarantee that changes in the value of this object + performed while the associated portCopyRowStatus object is + equal to active will not cause traffic discontinuities in the + packet stream." +DEFVAL { copyBoth } +::= { portCopyEntry 4 } + +portCopyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the status of the port copy entry. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created." + ::= { portCopyEntry 5 } + +-- smonRegistrationPoints +-- defines a set of OIDs for registration purposes of entities +-- supported by the SMON MIB. + +smonVlanDataSource + OBJECT IDENTIFIER ::= { smonRegistrationPoints 1} + +-- Defined for use as an SmonDataSource. A single integer parameter +-- is appended to the end of this OID when actually encountered in +-- the dataSourceCapsTable, which represents a positive, non-zero +-- VLAN identifier value. + +-- Conformance Macros + +smonMIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 3} +smonMIBGroups OBJECT IDENTIFIER ::= { rmonConformance 4} + +smonMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for full conformance with the SMON + MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonPrioStatsGroup, + portCopyConfigGroup, + smonInformationGroup} + + GROUP smonHcTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be greater than 10MB/sec and less than or equal to + 100MB/sec." + + GROUP smonHc100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be more than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + +::= { smonMIBCompliances 1 } + +smonMIBVlanStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for VLAN Statistics. Mandatory for a SMON probe + in environment where IEEE 802.1Q bridging is implemented." + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonInformationGroup} + GROUP hcVlanTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only + for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcVlan100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + is greater than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + +::= { smonMIBCompliances 2 } + +smonMIBPrioStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for priority level Statistics. Mandatory for a + SMON probe in a environment where IEEE 802.1p + priority-switching is implemented." + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonPrioStatsGroup, + smonInformationGroup} + + GROUP hcPrioTo100mbGroup + DESCRIPTION + "This group of VLAN priority statistics counters are mandatory + only for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcPrio100mbPlusGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces for which the corresponding ifSpeed is greater + than 100MB/sec. This group of VLAN priority + statistics is also mandatory for smonDataSources of type + VLAN or entPhysicalEntry" + +::= { smonMIBCompliances 3 } + +portCopyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the port copy + functionality defined by the SMON MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + portCopyConfigGroup, + smonInformationGroup} + + ::= { smonMIBCompliances 4} + +dataSourceCapsGroup OBJECT-GROUP + OBJECTS { dataSourceRmonCaps, + dataSourceCopyCaps, + dataSourceCapsIfIndex} + STATUS current + DESCRIPTION + "Defines the objects that describe the capabilities of RMON + data sources." +::= {smonMIBGroups 1 } + +smonVlanStatsGroup OBJECT-GROUP + OBJECTS { smonVlanStatsControlDataSource, + smonVlanStatsControlCreateTime, + smonVlanStatsControlOwner, + smonVlanStatsControlStatus, + smonVlanIdStatsTotalPkts, + smonVlanIdStatsTotalOctets, + smonVlanIdStatsNUcastPkts, + smonVlanIdStatsCreateTime} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interfaces of 10MB or less." +::= { smonMIBGroups 2 } + +smonPrioStatsGroup OBJECT-GROUP + OBJECTS { smonPrioStatsControlDataSource, + smonPrioStatsControlCreateTime, + smonPrioStatsControlOwner, + smonPrioStatsControlStatus, + smonPrioStatsPkts, + smonPrioStatsOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interface." +::= { smonMIBGroups 3 } + +smonHcTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed greater than 10MB/sec and + less than or equal to 100MB/sec." +::= { smonMIBGroups 4 } + +smonHc100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts, + smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed of more than 100MB/sec. These + statistics MUST also be kept on smonDataSources of type VLAN + or entPhysicalEntry." +::= { smonMIBGroups 5 } + +hcVlanTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed greater than + 10MB/sec and less than or equal to 100MB/sec." +::= { smonMIBGroups 6 } + +hcVlan100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed of more than + 100MB/sec. These statistics MUST also be kept on + smonDataSources of type VLAN or entPhysicalEntry." +::= { smonMIBGroups 7 } + +hcPrioTo100mbGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets } + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 10MB/sec and less than or equal + to 100MB/sec." +::= { smonMIBGroups 8 } + +hcPrio100mbPlusGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 100MB/sec. These statistics MUST + also be kept on smonDataSources of type VLAN or + entPhysicalEntry." +::= { smonMIBGroups 9 } + +smonVlanStatsExtGroup OBJECT-GROUP + OBJECTS {smonVlanIdStatsNUcastOctets, + smonVlanIdStatsNUcastOverflowOctets, + smonVlanIdStatsNUcastHCOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics for systems + capable of counting non-unicast octets for a given dataSource + (as described in the dataSourceRmonCaps object)." +::= { smonMIBGroups 10 } + +smonInformationGroup OBJECT-GROUP + OBJECTS { smonCapabilities } + STATUS current + DESCRIPTION + "An indication of the SMON capabilities supported by this + agent." +::= { smonMIBGroups 11 } + +portCopyConfigGroup OBJECT-GROUP + OBJECTS { portCopyDestDropEvents, + portCopyDirection, + portCopyStatus + } + STATUS current + DESCRIPTION + "Defines the control objects for copy port operations." +::= { smonMIBGroups 12 } + +END diff --git a/mibs/ietf/SNA-NAU-MIB b/mibs/ietf/SNA-NAU-MIB new file mode 100644 index 0000000..19a80ff --- /dev/null +++ b/mibs/ietf/SNA-NAU-MIB @@ -0,0 +1,2764 @@ +SNA-NAU-MIB DEFINITIONS ::= BEGIN + +-- This MIB module contains objects necessary +-- for management of the following SNA devices: PU types 1.0, 2.0, 2.1 +-- and LU types 0, 1, 2, 3, 4, 7. It also contains generic objects +-- which can be used to manage LU 6.2. + +-- Naming conventions in this document: +-- The following names are used in object descriptors according to +-- SNA conventions. +-- The name 'PU' or 'Node' is used to describe Node type 1.0, 2.0 or +-- 2.1. +-- The name 'LU' is used to describe Logical Unit of type 0,1,2,3, +-- 4,7 or 6.2. + + + +IMPORTS + DisplayString, RowStatus, TimeStamp, InstancePointer + FROM SNMPv2-TC + + Counter32, Gauge32, Integer32, mib-2, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +snanauMIB MODULE-IDENTITY + LAST-UPDATED "9405120900Z" + ORGANIZATION "IETF SNA NAU MIB Working Group" + CONTACT-INFO + " Zbigniew Kielczewski + Eicon Technology Inc. + 2196 32nd Avenue + Lachine, Que H8T 3H7 + Canada + Tel: 1 514 631 2592 + E-mail: zbig@eicon.qc.ca + + Deirdre Kostick + Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + Tel: 1 908 758 2642 + E-mail: dck2@mail.bellcore.com + + Kitty Shih (editor) + Novell + 890 Ross Drive + Sunnyvale, CA 94089 + Tel: 1 408 747 4305 + E-mail: kmshih@novell.com" + DESCRIPTION + "This is the MIB module for objects used to + manage SNA devices." +::= { mib-2 34 } + +-- The SNANAU MIB module contains an objects part and a conformance part. +-- Objects are organized into the following groups: +-- (1)snaNode group, +-- (2)snaLU group, +-- (3)snaMgtTools group. + +snanauObjects OBJECT IDENTIFIER ::= { snanauMIB 1 } + + snaNode OBJECT IDENTIFIER ::= { snanauObjects 1 } + snaLu OBJECT IDENTIFIER ::= { snanauObjects 2 } + snaMgtTools OBJECT IDENTIFIER ::= { snanauObjects 3} + + +-- *************************************************************** +-- snaNode group +-- +-- It contains Managed Objects related to any type of Node and +-- some specific objects for Node Type 2.0. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains generic Node configuration +-- parameters. +-- *************************************************************** + +snaNodeAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects which describe the + configuration parameters for an SNA Node. Link + specific configuration objects are contained in + a separate MIB module (e.g., SNA DLC MIB) + corresponding to the link type. + The table snaNodeAdminLinkTable contains objects + which identify the relationship between node instances + and link instances. + + The entries (i.e., rows) in this table can be created + by either an Agent or a Management Station. + The Management Station can do this through setting + the appropriate value in the snaNodeAdminRowStatus. + + The snaNodeAdminRowStatus object describes the + status of an entry and is used to change the status + of an entry. The entry is deleted by an Agent based + on the value of the snaNodeAdminRowStatus. + + The snaNodeAdminState object describes the desired + operational state of a Node and is used to change the + operational state of a Node. For example, such + information may be obtained from a configuration file. + + How an Agent or a Management Station obtains the + initial value of each object at creation time is an + implementation specific issue. + + For each entry in this table, there is a corresponding + entry in the snaNodeOperTable. + While the objects in this table describe the desired + or configured operational values of the SNA Node, the + actual runtime values are contained in + snaNodeOperTable." + ::= { snaNode 1 } + +snaNodeAdminEntry OBJECT-TYPE + SYNTAX SnaNodeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains the configuration parameters for + one SNA Node instance. The objects in the entry + have read-create access. + An entry can be created, modified or deleted. The + object snaNodeAdminRowStatus is used (i.e., set) to + create or delete a row entry." + INDEX { snaNodeAdminIndex } + ::= { snaNodeAdminTable 1 } + +SnaNodeAdminEntry ::= SEQUENCE { + snaNodeAdminIndex + Integer32, + snaNodeAdminName + DisplayString, + snaNodeAdminType + INTEGER, + snaNodeAdminXidFormat + INTEGER, + snaNodeAdminBlockNum + DisplayString, + snaNodeAdminIdNum + DisplayString, + snaNodeAdminEnablingMethod + INTEGER, + snaNodeAdminLuTermDefault + INTEGER, + snaNodeAdminMaxLu + Integer32, + snaNodeAdminHostDescription + DisplayString, + snaNodeAdminStopMethod + INTEGER, + snaNodeAdminState + INTEGER, + snaNodeAdminRowStatus + RowStatus + } + +snaNodeAdminIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index used to uniquely identify each Node instance. + If an Agent creates the entry, then it will assign + this number otherwise a Management Station + generates a random number when it reserves the + entry for creation." + ::= { snaNodeAdminEntry 1 } + +snaNodeAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired name of the + Node for use during Node activation. + In Type 2.1 networks, this is a fully-qualified name, + meaning that the Node name is preceded by the NetId (if + present) with a period as the delimiter. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperName until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 2 } + +snaNodeAdminType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + pu10(2), + pu20(3), + t21len(4), + endNode(5), + networkNode(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the type of SNA Node. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperType until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 3 } + +snaNodeAdminXidFormat OBJECT-TYPE + SYNTAX INTEGER { + format0(1), + format1(2), + format3(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the type of XID format used for + this Node. Note that there is no format type 2. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperAdminXidFormat until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 4 } + +snaNodeAdminBlockNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(3)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the block number for this Node + instance. It is the first 3 hexadecimal digits of the + SNA Node id. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperBlockNum until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 5 } + +snaNodeAdminIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the ID number for this Node + instance. This is the last 5 hexadecimal digits of + the SNA Node id. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperIdNum until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 6 } + +snaNodeAdminEnablingMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + startup (2), + demand (3), + onlyMS (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates how the Node should be + activated for the first time. + The values have the following meanings: + + other (1) - may be used for proprietary methods + not listed in this enumeration, + startup (2) - at SNA services' initialization time + (this is the default), + demand (3) - only when LU is requested by application, + or + onlyMS (4) - by a Management Station only. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperEnablingMethod depending + on the Agent implementation. If the Agent + implementation accepts immediate changes, then the + behavior of the Node changes immediately and not only + after the next system startup of the SNA services. + An immediate change may only apply when the + current value 'demand (3)' is changed to 'onlyMS (4)' + and vice versa." + ::= { snaNodeAdminEntry 7 } + +snaNodeAdminLuTermDefault OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired default method + used to deactivate LUs for this Node + For LU6.2s, 'unbind(1)' is the only valid value. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + The default behavior indicated by the value of this + object may be overridden for an LU instance. The + override is performed by setting the snaLuAdminTerm + object instance in the snaLuAdminTable to the desired + value. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperLuTermDefault depending + on the Agent implementation." + ::= { snaNodeAdminEntry 8 } + +snaNodeAdminMaxLu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of LUs that may be + activated for this Node. For PU2.1, this object + refers to the number of dependent LUs. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperMaxLu until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 9 } + +snaNodeAdminHostDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..128)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value identifies the remote host associated + with this Node. + Since SSCP Id's may not be unique + across hosts, the host description + is required to uniquely identify the SSCP. + This object is only applicable to PU2.0 type + Nodes. If the remote host is unknown, then the + value is the null string. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperHostDescription depending + on the Agent implementation." + ::= { snaNodeAdminEntry 10 } + +snaNodeAdminStopMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + normal (2), + immed (3), + force (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired method to be used + by the Agent to stop a Node (i.e., change the Node's + operational state to inactive(1) ). + + The values have the following meaning: + + other (1) - used for proprietary + methods not listed in this enumeration. + normal(2) - deactivate only when there is no more + activity on this Node (i.e., all data flows + have been completed and all sessions + have been terminated). + immed(3) - deactivate immediately regardless of + current activities on this Node. Wait for + deactivation responses (from remote Node) + before changing the Node state to inactive. + force(4) - deactivate immediately regardless of + current activities on this Node. Do not wait + for deactivation responses (from remote Node) + before changing the Node state to inactive. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperStopMethod depending + on the Agent implementation." + ::= { snaNodeAdminEntry 11 } + +snaNodeAdminState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired operational + state of the SNA Node. This object is used + by the Management Station to + activate or deactivate the Node. + + If the current value in snaNodeOperState is + 'active (2)', then setting this object to + 'inactive (1)' will initiate the Node shutdown + process using the method indicated + by snaNodeOperStopMethod. + + If the current value in snaNodeOperState is + 'inactive (1)', then setting this object to + 'active (2)' will initiate the + Node's activation. + + A Management Station can always set this object to + 'active (2)' irrespective of the value in the + snaOperEnablingMethod." + ::= { snaNodeAdminEntry 12 } + +snaNodeAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaNodeAdminTable following + the RowStatus textual convention. + + Upon successful creation of + the row, an Agent automatically creates a + corresponding entry in the snaNodeOperTable with + snaNodeOperState equal to 'inactive (1)'. + + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of + snaNodeOperState of this Node instance is + 'inactive (1)'. The Agent will then delete the rows + corresponding to this Node instance from the + snaNodeAdminTable and the snaNodeOperTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) All rows with the snaNodeAdminRowStatus object's + value of 'notReady (3)' will be removed upon the + next initialization of the SNA services." + ::= { snaNodeAdminEntry 13 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of any object in the snaNodeAdminTable. +-- *************************************************************** + +snaNodeAdminTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the timestamp + (e.g., the Agent's sysUpTime value) of the last + change made to any object in the snaNodeAdminTable, + including row deletions/additions (e.g., changes to + snaNodeAdminRowStatus values). + + This object can be used to reduce frequent + retrievals of the snaNodeAdminTable by a Management + Station. It is expected that a Management Station + will periodically poll this object and compare its + current value with the previous one. A difference + indicates that some Node configuration information + has been changed. Only then will the Management + Station retrieve the entire table." + ::= { snaNode 2 } + + +-- *************************************************************** +-- The following table contains Node operational parameters. +-- *************************************************************** + +snaNodeOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the dynamic parameters which + have read-only access. These objects reflect the + actual status of the Node. The entries in this + table cannot be created or modified by a + Management Station. + This table augments the snaNodeAdminTable." + ::= { snaNode 3 } + +snaNodeOperEntry OBJECT-TYPE + SYNTAX SnaNodeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry contains parameters which describe the + state of one Node. The entries are created by the + Agent. They have read-only access." + AUGMENTS { snaNodeAdminEntry } + ::= { snaNodeOperTable 1 } + +SnaNodeOperEntry ::= SEQUENCE { + snaNodeOperName + DisplayString, + snaNodeOperType + INTEGER, + snaNodeOperXidFormat + INTEGER, + snaNodeOperBlockNum + DisplayString, + snaNodeOperIdNum + DisplayString, + snaNodeOperEnablingMethod + INTEGER, + snaNodeOperLuTermDefault + INTEGER, + snaNodeOperMaxLu + Integer32, + snaNodeOperHostDescription + DisplayString, + snaNodeOperStopMethod + INTEGER, + snaNodeOperState + INTEGER, + snaNodeOperHostSscpId + OCTET STRING, + snaNodeOperStartTime + TimeStamp, + snaNodeOperLastStateChange + TimeStamp, + snaNodeOperActFailures + Counter32, + snaNodeOperActFailureReason + INTEGER + } + +snaNodeOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current name of the Node. + In Type 2.1 networks, this + is a fully-qualified name, meaning that the Node name + is preceded by the NetId (if present) with a period + as the delimiter." + ::= { snaNodeOperEntry 1 } + +snaNodeOperType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + pu10(2), + pu20(3), + t21LEN(4), + endNode(5), + networkNode(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current type of the Node." + ::= { snaNodeOperEntry 2 } + +snaNodeOperXidFormat OBJECT-TYPE + SYNTAX INTEGER { + format0 (1), + format1 (2), + format3 (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the type of XID format currently + used for this Node. + Note that there is no format type 2." + ::= { snaNodeOperEntry 3 } + +snaNodeOperBlockNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the block number for this Node + instance. It is the first 3 hexadecimal digits + of the SNA Node id." + ::= { snaNodeOperEntry 4 } + +snaNodeOperIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(5)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the ID number for this Node + instance. This is the last 5 hexadecimal digits of + the SNA Node id." + ::= { snaNodeOperEntry 5 } + +snaNodeOperEnablingMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + startup (2), + demand (3), + onlyMS (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates how the Node is activated for + the first time. + The values have the following meanings: + other (1) - not at boot time, LU activation + or by a Management Station; + startup (2) - at SNA services' initialization + time (this is the default), + demand (3) - only when LU is requested by + application, + onlyMS (4) - by a network Management Station + only." + ::= { snaNodeOperEntry 6 } + +snaNodeOperLuTermDefault OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the default method used to + deactivate LUs for this Node. + For LU6.2s, 'unbind(1)' is the only valid value. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + This object describes the default behavior for this + Node; however, it is possible that for a specific LU + the behavior indicated by the snaLuOperTerm object is + different." + ::= { snaNodeOperEntry 7 } + +snaNodeOperMaxLu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current, maximum number + of LUs that are activated for this Node. For PU2.1, + this object refers to the number of dependent LUs." + ::= { snaNodeOperEntry 8 } + +snaNodeOperHostDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the remote host currently + associated with this Node. + Since SSCP Id's may not be unique + across hosts, the host description + is required to uniquely identify the SSCP." + ::= { snaNodeOperEntry 9 } + +snaNodeOperStopMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + normal (2), + immed (3), + force (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current Node shutdown + method to be used by the Agent to stop the Node. + When the Agent changes the Node's state to 'inactive + (1)', the Agent must use the shutdown method + indicated by this object. + + The values have the following meaning: + + other (1) - proprietary method not listed in this + enumeration + normal(2) - deactivate only when there is no more + activity on this Node (i.e., all data flows + have been completed and all sessions have + been terminated). + immed(3) - deactivate immediately regardless of + current activities on this Node. Wait for + deactivation responses (from remote Node) + before changing the Node state to inactive. + force(4) - deactivate immediately regardless of + current activities on this Node. Do not wait + for deactivation responses (from remote Node) + before changing the Node state to inactive. + + Note that a write operation to + snaNodeAdminOperStopMethod may immediately change + the value of snaNodeOperStopMethod depending on + the Agent implementation." + ::= { snaNodeOperEntry 10 } + +snaNodeOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2), + waiting (3), + stopping (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the Node. + The values have the following meanings: + inactive (1), a row representing the Node has + been created in the AdminTable + and, the Node is ready for activation -or- + an active Node has been stopped -or- + a waiting Node has returned to the inactive + state. + waiting (3), a request to have the Node activated + has been issued, and the Node is pending + activation. + active (2), the Node is ready and operating. + stopping (4), the request to stop the Node has + been issued while the StopMethod normal + or immediate is used." + ::= { snaNodeOperEntry 11 } + +snaNodeOperHostSscpId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current SSCP Id + associated with the Node. This object is only + applicable to PU 2.0s. If the Node + is not a PU 2.0 type, then this object contains a + zero length string." + ::= { snaNodeOperEntry 12 } + +snaNodeOperStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g, the Agent's sysUpTime value) + at the Node activation." + ::= { snaNodeOperEntry 13 } + +snaNodeOperLastStateChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last state change of the Node." + ::= { snaNodeOperEntry 14 } + +snaNodeOperActFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the number of failed Node + activation attempts." + ::= { snaNodeOperEntry 15 } + +snaNodeOperActFailureReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + linkFailure (2), + noResources (3), + badConfiguration (4), + internalError (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the reason for the activation + failure. The value 'other (1)' indicates a reason + not listed in the enumeration. This object + will be sent in the trap snaNodeActFailTrap." + ::= { snaNodeOperEntry 16 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of snaNodeOperState in any row or a row is +-- added/deleted from the snaNodeOperTable via the snaNodeAdminTable. +-- *************************************************************** + +snaNodeOperTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last change made to any object in the + snaNodeOperTable, including row deletions/additions + made as a result of changes to the + snaNodeAdminRowStatus object. + + This object can be used to reduce frequent + retrievals of the snaNodeOperTable by a Management + Station. It is expected that a Management Station + will periodically poll this object and compare its + current value with the previous one. A difference + indicates that some Node operational information + has been changed. Only then will the Management + Station retrieve the entire table." + ::= { snaNode 4 } + + +-- *************************************************************** +-- The following table contains PU 2.0 statistics dynamic parameters. +-- *************************************************************** + +snaPu20StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaPu20StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the dynamic parameters which + have read-only access. The entries in this table + correspond to PU 2.0 entries in the snaNodeOperTable + and cannot be created by a Management Station." + ::= { snaNode 5 } + +snaPu20StatsEntry OBJECT-TYPE + SYNTAX SnaPu20StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry contains parameters which describe the + statistics for one PU 2.0. They have read-only + access. + The counters represent traffic for all kinds + of sessions: LU-LU, SSCP-PU, SSCP-LU. + + Each Node of PU Type 2.0 from the snaNodeAdminTable + has one entry in this table and the index used + here has the same value as snaNodeAdminIndex of + that PU. The entry is created by the Agent." + INDEX { snaNodeAdminIndex } + ::= { snaPu20StatsTable 1 } + +SnaPu20StatsEntry ::= SEQUENCE { + snaPu20StatsSentBytes + Counter32, + snaPu20StatsReceivedBytes + Counter32, + snaPu20StatsSentPius + Counter32, + snaPu20StatsReceivedPius + Counter32, + snaPu20StatsSentNegativeResps + Counter32, + snaPu20StatsReceivedNegativeResps + Counter32, + snaPu20StatsActLus + Gauge32, + snaPu20StatsInActLus + Gauge32, + snaPu20StatsBindLus + Gauge32 + } + +snaPu20StatsSentBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent by this Node." + ::= { snaPu20StatsEntry 1 } + +snaPu20StatsReceivedBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by this Node." + ::= { snaPu20StatsEntry 2 } + +snaPu20StatsSentPius OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PIUs sent by this Node." + ::= { snaPu20StatsEntry 3 } + +snaPu20StatsReceivedPius OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PIUs received by this Node." + ::= { snaPu20StatsEntry 4 } + +snaPu20StatsSentNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses sent + by this Node." + ::= { snaPu20StatsEntry 5 } + +snaPu20StatsReceivedNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses received + by this Node." + ::= { snaPu20StatsEntry 6 } + +snaPu20StatsActLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + received and responded to ACTLU from the host." + ::= { snaPu20StatsEntry 7 } + +snaPu20StatsInActLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + not received an ACTLU from the host. This is + possible if the number of configured LUs exceeds + that on the host." + ::= { snaPu20StatsEntry 8 } + +snaPu20StatsBindLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + received and acknowledged a BIND request from the + host." + ::= { snaPu20StatsEntry 9 } + +-- *************************************************************** +-- The following table contains the association between Nodes and +-- link identifiers. +-- It is used for configuration purposes. +-- *************************************************************** + +snaNodeLinkAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeLinkAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the references to link + specific tables. If a Node is configured for + multiple links, then the Node will have + multiple entries in this table. + The entries in this table can be generated + initially, after initialization of SNA service, + by the Agent which uses information from + Node configuration file. + Subsequent modifications of parameters, + creation of new Nodes link entries and deletion + of entries is possible. + The modification to this table can be + saved in the Node configuration file for the + next initialization of SNA service, but the mechanism + for this function is not defined here." + ::= { snaNode 6 } + +snaNodeLinkAdminEntry OBJECT-TYPE + SYNTAX SnaNodeLinkAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry contains the configuration information that + associates a Node instance to one link instance. + The objects in the entry have read-create access. + Entry can be created, modified or deleted. + The object snaNodeLinkAdminRowStatus is used (set) + to create or delete an entry. + The object snaNodeLinkAdminSpecific can be set + later, after the entry has been created." + INDEX { snaNodeAdminIndex, + snaNodeLinkAdminIndex } + ::= { snaNodeLinkAdminTable 1 } + +SnaNodeLinkAdminEntry ::= SEQUENCE { + snaNodeLinkAdminIndex + Integer32, + snaNodeLinkAdminSpecific + InstancePointer, + snaNodeLinkAdminMaxPiu + Integer32, + snaNodeLinkAdminRowStatus + RowStatus + } + +snaNodeLinkAdminIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value is used to index the instances of objects. + If an Agent creates the entry, then it will assign + this number otherwise a Management Station + generates a random number when it reserves the + entry for creation." + ::= { snaNodeLinkAdminEntry 1 } + +snaNodeLinkAdminSpecific OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value points to the row in the table + containing information on the link instance. + (e.g., the sdlcLSAdminTable of + the SNA DLC MIB module)." + ::= { snaNodeLinkAdminEntry 2 } + +snaNodeLinkAdminMaxPiu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the maximum number of octets + that can be exchanged by this Node in one + Path Information Unit (PIU)." + ::= { snaNodeLinkAdminEntry 3 } + +snaNodeLinkAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaNodeLinkAdminTable. + To activate a row, a Management Station sets the value + to 'active (1)' or 'notReady (3)'. Upon successful + creation of the row, the Agent automatically creates + a corresponding entry in the snaNodeLinkOperTable. + + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of + snaNodeLinkOperState of this Link + instance is 'inactive (1)'. The Agent will then + delete the row corresponding to this Link + instance from snaNodeLinkOperTable and + from snaNodeLinkAdminTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) The Agent will not include a row with RowStatus= + 'notReady (3)', after SNA system re-initialization + (e.g., reboot)." + ::= { snaNodeLinkAdminEntry 4 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of any object in the snaNodeLinkAdminTable. +-- *************************************************************** + +snaNodeLinkAdminTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last + change made to any object in the snaNodeLinkAdminTable, + including row deletions/additions (i.e., changes + to the snaNodeLinkAdminRowStatus object). + + This object can be used to reduce frequent + retrievals of the snaNodeLinkAdminTable by a + Management Station. It is expected that a + Management Station will periodically poll this + object and compare its current value with the + previous one. + A difference indicates that some Node operational + information has been changed. Only then will the + Management Station retrieve the entire table." + ::= { snaNode 7 } + + +-- *************************************************************** +-- The following table contains the association between +-- Nodes and link identifiers. +-- It provides the current status. +-- *************************************************************** + +snaNodeLinkOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeLinkOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all references to link + specific tables for operational parameters. + If a Node is configured for multiple links, + then the Node will have multiple entries in + this table. This table augments the + snaNodeLinkAdminTable." + ::= { snaNode 8 } + +snaNodeLinkOperEntry OBJECT-TYPE + SYNTAX SnaNodeLinkOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry contains all current parameters for one + Node link. The objects in the entry have + read-only access." + AUGMENTS { snaNodeLinkAdminEntry } + ::= { snaNodeLinkOperTable 1 } + +SnaNodeLinkOperEntry ::= SEQUENCE { + snaNodeLinkOperSpecific + InstancePointer, + snaNodeLinkOperMaxPiu + Integer32 + } + +snaNodeLinkOperSpecific OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value points to the row in the table + containing information on the link instance. + (e.g., the sdlcLSOperTable of + the SNA DLC MIB module)." + ::= { snaNodeLinkOperEntry 1 } + +snaNodeLinkOperMaxPiu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of octets that can + be exchanged by this Node in one Path + Information Unit (PIU)." + ::= { snaNodeLinkOperEntry 2 } + + +-- *************************************************************** +-- The following object is updated when a row is added/deleted +-- from the snaNodeLinkOperTable. +-- *************************************************************** + +snaNodeLinkOperTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the last + change made to any object in the snaNodeLinkOperTable, + including row deletions/additions. + + This object can be used to reduce frequent + retrievals of the snaNodeLinkOperTable by a + Management Station. It is expected that a + Management Station will periodically poll this + object and compare its current value with the + previous one. + A difference indicates that some Node operational + information has been changed. Only then will the + Management Station retrieve the entire table." + ::= { snaNode 9 } + +-- *************************************************************** +-- Traps +-- *************************************************************** + +snaNodeTraps OBJECT IDENTIFIER ::= { snaNode 10 } + +snaNodeStateChangeTrap NOTIFICATION-TYPE + OBJECTS { snaNodeOperName, + snaNodeOperState } + STATUS current + DESCRIPTION + "This trap indicates that the operational state + (i.e., value of the snaNodeOperState object) of a Node + has changed. The following variables are returned: + snaNodeOperName - current name of the Node, + with the instance identifying the Node; and, + snaNodeOperState - current state after + the change." + ::= { snaNodeTraps 1 } + +snaNodeActFailTrap NOTIFICATION-TYPE + OBJECTS { snaNodeOperName, + snaNodeOperState, + snaNodeOperActFailureReason } + STATUS current + DESCRIPTION + "This trap indicates a Node activation failure. + The value of snaNodeOperState indicates the current + state after the activation attempt. + The value of snaNodeOperActFailureReason indicates + the failure reason." + ::= { snaNodeTraps 2 } + + +-- *************************************************************** +-- snaLu group +-- +-- It contains Managed Objects related to LUs in general and some +-- specific for LUs of type 0, 1, 2, 3. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains LU configuration parameters. +-- *************************************************************** + +snaLuAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains LU configuration information. + The rows in this table can be created and deleted + by a Management Station. + Only objects which are common to all types of LUs + are included in this table." + ::= { snaLu 1 } + +snaLuAdminEntry OBJECT-TYPE + SYNTAX SnaLuAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains configuration variables for an LU." + INDEX { snaNodeAdminIndex, snaLuAdminLuIndex } + ::= { snaLuAdminTable 1 } + +SnaLuAdminEntry ::= SEQUENCE { + snaLuAdminLuIndex + Integer32, + snaLuAdminName + DisplayString, + snaLuAdminSnaName + DisplayString, + snaLuAdminType + INTEGER, + snaLuAdminDepType + INTEGER, + snaLuAdminLocalAddress + OCTET STRING, + snaLuAdminDisplayModel + INTEGER, + snaLuAdminTerm + INTEGER, + snaLuAdminRowStatus + RowStatus + } + +snaLuAdminLuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the unique index for an + LU instance within a Node." + ::= { snaLuAdminEntry 1 } + +snaLuAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the user configurable + name for this LU. If a name is not assigned to the LU, + then this object contains a zero length string. + + A write operation to this object will + not change the operational value reflected + in snaLuOperName until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 2 } + +snaLuAdminSnaName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..17)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the SNA LU name + used in exchange of SNA data. + + A write operation to this object will + not change the operational value reflected + in snaLuOperSnaName until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 3 } + +snaLuAdminType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + lu0(2), + lu1(3), + lu2(4), + lu3(5), + lu4(6), + lu62(7), + lu7(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the LU type. + + A write operation to this object will + not change the operational value reflected + in snaLuOperAdminType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 4 } + +snaLuAdminDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies whether the LU is + dependent or independent. + + A write operation to this object will + not change the operational value reflected + in snaLuOperDepType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 5 } + +snaLuAdminLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value + ranging from 0 to 254.For dependent LUs, this value + ranges from 1 to 254 and for independent LUs this + value is always 0. + + A write operation to this object will not change the + operational value reflected in snaLuOperLocalAddress + until the Node has been re-activated (e.g., after the + next initialization of the SNA services)." + ::= { snaLuAdminEntry 6 } + +snaLuAdminDisplayModel OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + model2A(2), + model2B(3), + model3A(4), + model3B(5), + model4A(6), + model4B(7), + model5A(8), + model5B(9), + dynamic(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the model type + and screen size of the terminal connected to the host. + This is only valid for LU Type 2. The values have + the following meaning: + + model2A(2) - Model 2 (24 rows x 80 cols) with base + attributes + model2B(3) - Model 2 (24 rows x 80 cols) with + extended attributes + model3A(4) - Model 3 (32 rows x 80 cols) with base + attributes + model3B(5) - Model 3 (32 rows x 80 cols) with extended + attributes + model4A(6) - Model 4 (43 rows x 80 cols) with base + attributes + model4B(7) - Model 4 (43 rows x 80 cols) with extended + attributes + model5A(8) - Model 5 (27 rows x 132 cols) with base + attributes + model5B(9) - Model 5 (27 rows x 132 cols) with + extended attributes + dynamic(10) - Screen size determine with BIND and Read + Partition Query. + + In case this LU is not Type 2, then this object + should contain the invalid(1) value." + ::= { snaLuAdminEntry 7 } + +snaLuAdminTerm OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the desired method for + deactivation of this LU. This value overrides the + default method (snaNodeOperLuTermDefault) for this + Node. For LU 6.2, only the value 'unbind (1)' + applies. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + A write operation to this object may immediately + change the operational value reflected + in snaLuOperTerm depending + on the Agent implementation." + ::= { snaLuAdminEntry 8 } + +snaLuAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaLuAdminTable. + To activate a row, the Management Station sets the + value to 'active (1)' or 'notReady (3)'. + Upon successful creation of the row, the Agent + automatically creates a corresponding entry in the + snaLuOperTable with snaLuOperState equal to + 'inactive (1)'. + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of snaLuOperState + of this LU instance is 'inactive (1)'. The Agent will + then delete the row corresponding to this LU + instance from snaLuAdminTable and + from snaLuOperTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) The Agent will not create a row with RowStatus + equal to 'notReady (3)', after SNA system + re-initialization (e.g., reboot)." + ::= { snaLuAdminEntry 9 } + + +-- *************************************************************** +-- The following table contains LU state dynamic parameters. +-- *************************************************************** + +snaLuOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic runtime information and + control variables relating to LUs. + Only objects which are common to all types of LUs are + included in this table. This table augments the + snaLuAdminTable." + ::= { snaLu 2 } + +snaLuOperEntry OBJECT-TYPE + SYNTAX SnaLuOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains objects reflecting current information + for an LU. + Each entry is created by the Agent. All entries + have read-only access." + AUGMENTS { snaLuAdminEntry } + ::= { snaLuOperTable 1 } + +SnaLuOperEntry ::= SEQUENCE { + snaLuOperName + DisplayString, + snaLuOperSnaName + DisplayString, + snaLuOperType + INTEGER, + snaLuOperDepType + INTEGER, + snaLuOperLocalAddress + OCTET STRING, + snaLuOperDisplayModel + INTEGER, + snaLuOperTerm + INTEGER, + snaLuOperState + INTEGER, + snaLuOperSessnCount + Gauge32 + } + +snaLuOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "User configurable name for this LU. If a name + is not assigned, then this object contains a + zero length string." + ::= { snaLuOperEntry 1 } + +snaLuOperSnaName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current SNA LU name." + ::= { snaLuOperEntry 2 } + +snaLuOperType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + lu0(2), + lu1(3), + lu2(4), + lu3(5), + lu4(6), + lu62(7), + lu7(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current LU type." + ::= { snaLuOperEntry 3 } + +snaLuOperDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies whether the LU is currently + dependent or independent. + + A write operation to this object will + not change the operational value reflected + in snaLuOperDepType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuOperEntry 4 } + +snaLuOperLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value + ranging from 0 to 254. For dependent LUs, this value + ranges from 1 to 254; for independent LUs this value + is always 0. + + A write operation to this object will + not change the operational value reflected + in snaLuOperLocalAddress until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuOperEntry 5 } + +snaLuOperDisplayModel OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + model2A(2), + model2B(3), + model3A(4), + model3B(5), + model4A(6), + model4B(7), + model5A(8), + model5B(9), + dynamic(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The screen model type of the terminal connected to + the host. If this LU is not Type 2, then this + object should contain the 'invalid(1)' value." + ::= { snaLuOperEntry 6 } + +snaLuOperTerm OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current method for + deactivation of this LU. This value overrides the + default method (snaNodeOperLuTermDefault) for this + Node. For LU 6.2, only the value 'unbind (1)' + applies. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session." + ::= { snaLuOperEntry 7 } + +snaLuOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current operational state of + this LU. + It has different meanings for dependent and independent + LUs. + For dependent LUs the values indicate the following: + inactive (1) - LU didn't receive ACTLU, or + it received DACTLU, or received ACTLU and sent + negative response. + active (2) - LU received ACTLU and acknowledged + positively. + + For independent LUs the values indicate the following: + active (2) - the LU is defined and is able to send + and receive BIND. + inactive (1) - the LU has a session count equal + to 0." + ::= { snaLuOperEntry 8 } + +snaLuOperSessnCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active LU-LU sessions of + this LU. + For the independent LU, if this object has value 0, + it indicates that LU is inactive." + ::= { snaLuOperEntry 9 } + + +-- *************************************************************** +-- The following table contains LU session status parameters. +-- *************************************************************** + +snaLuSessnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuSessnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a table containing objects which describe the + operational state of LU sessions. Only objects which + are common to all types of LU sessions are included + in this table. + + When a session's snaLuSessnOperState value changes to + 'pendingBind (2)', then the corresponding entry + in the session table is created by the Agent. + + When the session's snaLuSessnOperState value changes to + 'unbound (1)', then the session will be removed from + the session table by the Agent." + ::= { snaLu 3 } + +snaLuSessnEntry OBJECT-TYPE + SYNTAX SnaLuSessnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains dynamic parameters for an LU-LU + session. + The indices identify the Node, local LU, and remote LU + for this session." + INDEX { snaNodeAdminIndex, + snaLuAdminLuIndex, + snaLuSessnRluIndex, + snaLuSessnIndex } + ::= { snaLuSessnTable 1 } + +SnaLuSessnEntry ::= SEQUENCE { + snaLuSessnRluIndex + Integer32, + snaLuSessnIndex + Integer32, + snaLuSessnLocalApplName + DisplayString, + snaLuSessnRemoteLuName + DisplayString, + snaLuSessnMaxSndRuSize + INTEGER, + snaLuSessnMaxRcvRuSize + INTEGER, + snaLuSessnSndPacingSize + INTEGER, + snaLuSessnRcvPacingSize + INTEGER, + snaLuSessnActiveTime + TimeStamp, + snaLuSessnAdminState + INTEGER, + snaLuSessnOperState + INTEGER, + snaLuSessnSenseData + OCTET STRING, + snaLuSessnTerminationRu + INTEGER, + snaLuSessnUnbindType + OCTET STRING, + snaLuSessnLinkIndex + Integer32 + } + +snaLuSessnRluIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value may be used to identify information about + the session partner LU in a table of information about + remote LUs. Such a table is not defined in this + document. If a table of remote LU information is not + implemented, or if the table is implemented but it does + not contain information about the partner LU for a + particular session (as for dependent LU-LU sessions) + then this object will have a value of zero." + ::= { snaLuSessnEntry 1 } + +snaLuSessnIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the unique index of the session. + It is recommended that an Agent should not reuse the + index of a deactivated session for a significant + period of time (e.g., one week)." + ::= { snaLuSessnEntry 2 } + +snaLuSessnLocalApplName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the local application using this LU. + If the local application is unknown, then this object + contains a zero length string." + ::= { snaLuSessnEntry 3 } + +snaLuSessnRemoteLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For dependent LUs which are indicated by the + snaLuOperDepType object containing the value + 'dependent (1)', this object contains the Primary + LU (PLU) name. For independent LUs, + this object contains the fully-qualified remote LU + name of this 6.2 session. + A fully qualified name is an SNA NAU entity name + preceded by the NetId and a period as the delimiter." + ::= { snaLuSessnEntry 4 } + +snaLuSessnMaxSndRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for sending + RUs." + ::= { snaLuSessnEntry 5 } + +snaLuSessnMaxRcvRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for + receiving RUs." + ::= { snaLuSessnEntry 6 } + +snaLuSessnSndPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the send pacing window on this session." + ::= { snaLuSessnEntry 7 } + +snaLuSessnRcvPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the receive pacing window on this + session." + ::= { snaLuSessnEntry 8 } + +snaLuSessnActiveTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + when this session becomes active." + ::= { snaLuSessnEntry 9 } + +snaLuSessnAdminState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + bound (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value indicates the desired operational state of + the session. This object is used to + change the operational state of the session. + A Management Station can only change the operational + state of the session to 'unbound (1)'. + + Session deactivation: + If a session is in the operational state + 'bound (3)' then setting the value of this + object to 'unbound (1)' will initiate the + session shutdown. + + If a session is in the operational state + 'pendingBind (2)' then setting the value of this + object to 'unbound (1)' will initiate the session + shutdown. + If a session is in the operational state + 'pendingUnbind (4)' for an abnormally long period + of time (e.g., three minutes) then setting the value + of this object to 'unbound (1)' will change the + session operational state to 'unbound (1)'. + + Note: for dependent LUs, deactivating the session is + the same as deactivating the LU." + ::= { snaLuSessnEntry 10 } + +snaLuSessnOperState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + pendingBind (2), + bound (3), + pendingUnbind (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the current operational state of + the session. + + 'unbound (1)' - session has been unbound; + in this state it will be removed from the + session table by the Agent. + + 'pendingBind (2)' - this state has different + meanings for dependent and independent LUs; + for dependent LU - waiting for BIND from + the host, for independent LU - waiting for + BIND response. When a session enters this + state, the corresponding entry in the + session table is created by the Agent. + + 'bound (3)' - session has been successfully bound. + + 'pendingUnbind (4)' - session enters this state + when an UNBIND is sent and before the + rsp(UNBIND) is received." + ::= { snaLuSessnEntry 11 } + +snaLuSessnSenseData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the sense code when there is + a BIND failure. It is taken from the negative BIND + response or UNBIND request. + This is displayed as 8 hexadecimal digits." + ::= { snaLuSessnEntry 12 } + +snaLuSessnTerminationRu OBJECT-TYPE + SYNTAX INTEGER { + other (1), + bindFailure (2), + unbind (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the SNA RU that terminated the + session. + If the session is not in the unbound state, this object + has a value of 'other (1)'." + ::= { snaLuSessnEntry 13 } + + +snaLuSessnUnbindType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the session is in the unbound state, and it was + terminated by an UNBIND, then this object contains + the UNBIND type value (byte 1 of the UNBIND RU); + otherwise the string is null." + ::= { snaLuSessnEntry 14 } + +snaLuSessnLinkIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the link over which the session + passes. It is an index into snaNodeLinkAdminTable. + If the index value is not known, the value of this + object shall be zero." + ::= { snaLuSessnEntry 15 } + + +-- *************************************************************** +-- The following table contains LU sessions statistics dynamic +-- parameters. +-- *************************************************************** + +snaLuSessnStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuSessnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic statistics information + relating to LU sessions. + The entries in this table augment the entries in + the snaLuSessnTable and cannot be created by + a Management Station." + ::= { snaLu 4 } + +snaLuSessnStatsEntry OBJECT-TYPE + SYNTAX SnaLuSessnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains statistics information for an LU session. + Each entry is created by the Agent. + Objects in this table have read-only access. + Each session from snaLuSessnTable + has one entry in this table." + AUGMENTS { snaLuSessnEntry } + ::= { snaLuSessnStatsTable 1 } + +SnaLuSessnStatsEntry ::= SEQUENCE { + snaLuSessnStatsSentBytes + Counter32, + snaLuSessnStatsReceivedBytes + Counter32, + snaLuSessnStatsSentRus + Counter32, + snaLuSessnStatsReceivedRus + Counter32, + snaLuSessnStatsSentNegativeResps + Counter32, + snaLuSessnStatsReceivedNegativeResps + Counter32 + } + +snaLuSessnStatsSentBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent by the local LU." + ::= { snaLuSessnStatsEntry 1 } + +snaLuSessnStatsReceivedBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by the local LU." + ::= { snaLuSessnStatsEntry 2 } + +snaLuSessnStatsSentRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RUs sent by the local LU." + ::= { snaLuSessnStatsEntry 3 } + +snaLuSessnStatsReceivedRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RUs received by the local LU." + ::= { snaLuSessnStatsEntry 4 } + +snaLuSessnStatsSentNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses sent by the + local LU." + ::= { snaLuSessnStatsEntry 5 } + +snaLuSessnStatsReceivedNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses received by the + local LU." + ::= { snaLuSessnStatsEntry 6 } + + +-- *************************************************************** +-- Traps +-- *************************************************************** + +snaLuTraps OBJECT IDENTIFIER ::= { snaLu 5 } + +snaLuStateChangeTrap NOTIFICATION-TYPE + OBJECTS { snaLuOperName, + snaLuOperSnaName, + snaLuOperState } + STATUS current + DESCRIPTION + "This trap indicates that the operational state + (i.e., snaLuOperState value) of the LU has changed. + The value of snaLuOperName indicates the name of the + LU. + The value of snaLuOperSnaName indicates the SNA name + of LU. + The value of snaLuOperState indicates the current + state after change." + ::= { snaLuTraps 1 } + +snaLuSessnBindFailTrap NOTIFICATION-TYPE + OBJECTS { snaLuSessnLocalApplName, + snaLuSessnRemoteLuName, + snaLuSessnOperState, + snaLuSessnSenseData } + STATUS current + DESCRIPTION + "This trap indicates the failure of a BIND. + The value of snaLuSessnLocalApplName indicates the local + application name. + The value of snaLuSessnPartnerName indicates the partner + name. + The value of snaLuSessnOperState indicates the current + state after change. + The value of snaLuSessnBindFailureReason + indicates the failure reason. + The Agent should not generate more than 1 trap of this + type per minute to minimize the level of management + traffic on the network." + ::= { snaLuTraps 2 } + +-- *************************************************************** +-- snaMgtTools group +-- +-- Currently this group contains only one table. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains Response Time Monitoring (RTM) +-- configuration information and statistics for LU Type 2s. +-- RTM supports the capability to measure and report end-user +-- response times for dependent LUs. When the RTM state of an LU +-- is 'on', response times for each LU transaction are monitored. +-- A set of ranges is defined (e.g., Range 1 includes the number of +-- transactions with response times less than 1 second) using the +-- "boundary" definitions (e.g., boundary #2 is defined as 3 seconds). +-- A set of counters (one per range) identifies +-- the number of transactions within each response time range. +-- *************************************************************** + +snaLuRtmTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuRtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Response Time Monitoring (RTM) + information relating to an LU (Type 2). Each entry + corresponds to an LU 2 entry in + snaLuAdminTable." + ::= { snaMgtTools 1 } + +snaLuRtmEntry OBJECT-TYPE + SYNTAX SnaLuRtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains RTM information for an LU (Type 2). + Each entry is created by the Agent." + INDEX { snaLuRtmPuIndex, snaLuRtmLuIndex } + ::= { snaLuRtmTable 1 } + +SnaLuRtmEntry ::= SEQUENCE { + snaLuRtmPuIndex + Integer32, + snaLuRtmLuIndex + Integer32, + snaLuRtmState + INTEGER, + snaLuRtmStateTime + TimeStamp, + snaLuRtmDef + INTEGER, + snaLuRtmBoundary1 + Integer32, + snaLuRtmBoundary2 + Integer32, + snaLuRtmBoundary3 + Integer32, + snaLuRtmBoundary4 + Integer32, + snaLuRtmCounter1 + Counter32, + snaLuRtmCounter2 + Counter32, + snaLuRtmCounter3 + Counter32, + snaLuRtmCounter4 + Counter32, + snaLuRtmOverFlows + Counter32, + snaLuRtmObjPercent + Integer32, + snaLuRtmObjRange + INTEGER, + snaLuRtmNumTrans + Integer32, + snaLuRtmLastRspTime + Integer32, + snaLuRtmAvgRspTime + Integer32 + } + +snaLuRtmPuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value identifies the PU 2.0 with which this LU is + associated." + ::= { snaLuRtmEntry 1 } + +snaLuRtmLuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value uniquely identifies an LU in a PU 2.0." + ::= { snaLuRtmEntry 2 } + +snaLuRtmState OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the current RTM state of an LU." + ::= { snaLuRtmEntry 3 } + +snaLuRtmStateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + when this session's RTM state (e.g., snaLuRtmState) + changes value." + ::= { snaLuRtmEntry 4 } + +snaLuRtmDef OBJECT-TYPE + SYNTAX INTEGER { + firstChar(1), + kb(2), + cdeb(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the mode of measurement for this + RTM request. The values have following meaning: + firstChar(1) - time to first character on screen + kb(2) - time to keyboard usable by operator + cdeb(3) - time to Change Direction/End Bracket." + ::= { snaLuRtmEntry 5 } + +snaLuRtmBoundary1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the first boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 6 } + +snaLuRtmBoundary2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the second boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 7 } + +snaLuRtmBoundary3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the third boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 8 } + +snaLuRtmBoundary4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the fourth boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 9 } + +snaLuRtmCounter1 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the first boundary." + ::= { snaLuRtmEntry 10 } + +snaLuRtmCounter2 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the second boundary." + ::= { snaLuRtmEntry 11 } + +snaLuRtmCounter3 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the third boundary." + ::= { snaLuRtmEntry 12 } + +snaLuRtmCounter4 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the fourth boundary." + ::= { snaLuRtmEntry 13 } + +snaLuRtmOverFlows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + exceed the highest range specified by the + boundaries." + ::= { snaLuRtmEntry 14 } + +snaLuRtmObjPercent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the desired percentage of + transactions which should be under a designated + boundary range indicated by snaLuRtmObjRange." + ::= { snaLuRtmEntry 15 } + +snaLuRtmObjRange OBJECT-TYPE + SYNTAX INTEGER { + other(1), + range1(2), + range2(3), + range3(4), + range4(5), + range5(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the designated boundary range to + which the snaLuRtmObject refers. + The values have the following meanings: + other(1) - not specified + range1(2) - less than boundary 1 + range2(3) - between boundary 1 and 2 + range3(4) - between boundary 2 and 3 + range4(5) - between boundary 3 and 4 + range5(6) - greater than boundary 4." + ::= { snaLuRtmEntry 16 } + +snaLuRtmNumTrans OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total number of transactions + executed since the RTM monitoring began (i.e., + snaLuRtmState changed to 'on(2)') for this LU." + ::= { snaLuRtmEntry 17 } + +snaLuRtmLastRspTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the response time for the last + transaction in units of 1/10th of a second." + ::= { snaLuRtmEntry 18 } + +snaLuRtmAvgRspTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the average response time for all + transactions in units of 1/10th of a second." + ::= { snaLuRtmEntry 19 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +snanauConformance OBJECT IDENTIFIER ::= { snanauMIB 2 } + +snanauCompliances OBJECT IDENTIFIER ::= {snanauConformance 1 } +snanauGroups OBJECT IDENTIFIER ::= {snanauConformance 2 } + +-- Compliance statements +snanauCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities + which implement the snanau MIB." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { snaNodeGroup, + snaLuGroup, + snaSessionGroup } + +-- Conditionally mandatory groups + GROUP snaPu20Group + DESCRIPTION + "The snaPu20Group is mandatory only for those + entities which implement PU type 2.0" + GROUP snaMgtToolsRtmGroup + DESCRIPTION + "The snaMgtToolsGroup is mandatory only for + those entities which implement LU type 2 + and RTM." + +-- Refinement of requirements for objects access. +-- The Agent which does not implement row creation for +-- snaNodeAdminTable, snaNodeLinkAdminTable and +-- snaLuAdminTable must at least accept +-- objects modification (read-write access instead of +-- read-create). + + OBJECT snaNodeAdminName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminXidFormat + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminBlockNum + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminIdNum + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminEnablingMethod + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminLuTermDefault + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminMaxLu + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminHostDescription + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminStopMethod + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminState + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeLinkAdminSpecific + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeLinkAdminMaxPiu + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + OBJECT snaLuAdminName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminSnaName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminDepType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminLocalAddress + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminDisplayModel + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminTerm + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + ::= {snanauCompliances 1 } + + +-- Units of conformance + +snaNodeGroup OBJECT-GROUP + OBJECTS { snaNodeAdminName, + snaNodeAdminType, + snaNodeAdminXidFormat, + snaNodeAdminBlockNum, + snaNodeAdminIdNum, + snaNodeAdminEnablingMethod, + snaNodeAdminLuTermDefault, + snaNodeAdminMaxLu, + snaNodeAdminHostDescription, + snaNodeAdminStopMethod, + snaNodeAdminState, + snaNodeAdminRowStatus, + snaNodeAdminTableLastChange, + snaNodeOperName, + snaNodeOperType, + snaNodeOperXidFormat, + snaNodeOperBlockNum, + snaNodeOperIdNum, + snaNodeOperEnablingMethod, + snaNodeOperLuTermDefault, + snaNodeOperMaxLu, + snaNodeOperHostDescription, + snaNodeOperStopMethod, + snaNodeOperState, + snaNodeOperHostSscpId, + snaNodeOperStartTime, + snaNodeOperLastStateChange, + snaNodeOperActFailures, + snaNodeOperActFailureReason, + snaNodeOperTableLastChange, + snaNodeLinkAdminSpecific, + snaNodeLinkAdminMaxPiu, + snaNodeLinkAdminRowStatus, + snaNodeLinkAdminTableLastChange, + snaNodeLinkOperSpecific, + snaNodeLinkOperMaxPiu, + snaNodeLinkOperTableLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA nodes." + ::= { snanauGroups 1 } + +snaLuGroup OBJECT-GROUP + OBJECTS { snaLuAdminName, + snaLuAdminSnaName, + snaLuAdminType, + snaLuAdminDepType, + snaLuAdminLocalAddress, + snaLuAdminDisplayModel, + snaLuAdminTerm, + snaLuAdminRowStatus, + snaLuOperName, + snaLuOperSnaName, + snaLuOperType, + snaLuOperDepType, + snaLuOperLocalAddress, + snaLuOperDisplayModel, + snaLuOperTerm, + snaLuOperState, + snaLuOperSessnCount } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA LUs." + ::= { snanauGroups 2 } + +snaSessionGroup OBJECT-GROUP + OBJECTS { snaLuSessnRluIndex, + snaLuSessnIndex, + snaLuSessnLocalApplName, + snaLuSessnRemoteLuName, + snaLuSessnMaxSndRuSize, + snaLuSessnMaxRcvRuSize, + snaLuSessnSndPacingSize, + snaLuSessnRcvPacingSize, + snaLuSessnActiveTime, + snaLuSessnAdminState, + snaLuSessnOperState, + snaLuSessnSenseData, + snaLuSessnTerminationRu, + snaLuSessnUnbindType, + snaLuSessnLinkIndex, + snaLuSessnStatsSentBytes, + snaLuSessnStatsReceivedBytes, + snaLuSessnStatsSentRus, + snaLuSessnStatsReceivedRus, + snaLuSessnStatsSentNegativeResps, + snaLuSessnStatsReceivedNegativeResps } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA sessions." + ::= { snanauGroups 3 } + +snaPu20Group OBJECT-GROUP + OBJECTS { snaPu20StatsSentBytes, + snaPu20StatsReceivedBytes, + snaPu20StatsSentPius, + snaPu20StatsReceivedPius, + snaPu20StatsSentNegativeResps, + snaPu20StatsReceivedNegativeResps, + snaPu20StatsActLus, + snaPu20StatsInActLus, + snaPu20StatsBindLus } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of PU 2.0." + ::= { snanauGroups 4 } + +snaMgtToolsRtmGroup OBJECT-GROUP + OBJECTS { snaLuRtmState, + snaLuRtmStateTime, + snaLuRtmDef, + snaLuRtmBoundary1, + snaLuRtmBoundary2, + snaLuRtmBoundary3, + snaLuRtmBoundary4, + snaLuRtmCounter1, + snaLuRtmCounter2, + snaLuRtmCounter3, + snaLuRtmCounter4, + snaLuRtmOverFlows, + snaLuRtmObjPercent, + snaLuRtmObjRange, + snaLuRtmNumTrans, + snaLuRtmLastRspTime, + snaLuRtmAvgRspTime } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of RTM for SNA LU 2.0." + ::= { snanauGroups 5 } + +-- end of conformance statement + + +END diff --git a/mibs/ietf/SNA-SDLC-MIB b/mibs/ietf/SNA-SDLC-MIB new file mode 100644 index 0000000..5dc3fc7 --- /dev/null +++ b/mibs/ietf/SNA-SDLC-MIB @@ -0,0 +1,2759 @@ +SNA-SDLC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, TimeTicks + FROM SNMPv2-SMI + DisplayString, RowStatus, TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2, ifIndex, ifAdminStatus, ifOperStatus + FROM RFC1213-MIB; + + +snaDLC MODULE-IDENTITY + LAST-UPDATED "9411150000Z" + ORGANIZATION "IETF SNA DLC MIB Working Group" + CONTACT-INFO + " Wayne Clark + + Postal: cisco Systems, Inc. + 3100 Smoketree Ct. + Suite 1000 + Raleigh, NC 27604 + US + + Tel: +1 919 878 6958 + + E-Mail: wclark@cisco.com" + + DESCRIPTION + "This is the MIB module for objects used to + manage SDLC devices." + +::= { mib-2 41 } + +-- +-- The following data link controls are modelled in this MIB module: +-- +-- 1. SDLC +-- + +sdlc OBJECT IDENTIFIER ::= { snaDLC 1 } + +-- +-- THE SDLC GROUP +-- ============== +-- +-- The following resources are modelled in the SDLC group of this +-- MIB module: +-- +-- 1. PORTS +-- 2. LINK STATIONS + +sdlcPortGroup OBJECT IDENTIFIER ::= { sdlc 1 } -- Physical Ports +sdlcLSGroup OBJECT IDENTIFIER ::= { sdlc 2 } -- Logical Link Stations + +-- +-- THE SDLC PORT GROUP +-- =================== +-- +-- The following classes of information is modelled for each SDLC port: +-- +-- 1. ADMINISTRATIVE ( read/write) +-- 2. OPERATIONAL ( read-only) +-- 3. STATISTICS ( read-only) + +-- Information not found in this group is found in tables described in +-- the following RFCs: +-- +-- 1. RFC1213 - MIB-II +-- +-- TABLE INDEX +-- ==================== ==================== +-- a. ifTable ifIndex +-- +-- 2. RFC1659 - The RS232-like MIB +-- +-- TABLE INDEX +-- ==================== ==================== +-- a. rs232PortTable rs232PortIndex +-- b. rs232SyncPortTable rs232SyncPortIndex +-- c. rs232InSigTable rs232InSigPortIndex, +-- rs232InSigName +-- d. rs232OutSigTable rs232OutSigPortIndex, +-- rs232OutSigName +-- ** e. rs232AsyncPortTable rs232AsyncPortIndex +-- +-- ** rs232AsyncPortTable for ISO 3309.3 ( Start-Stop SDLC). + +-- ************************************************************* +-- * * +-- * THE SDLC PORT ADMINISTRATIVE TABLE * +-- * * +-- ************************************************************* + +sdlcPortAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be + changed to manage an SDLC port. Changing one + of these parameters may take effect in the + operating port immediately or may wait until + the interface is restarted depending on the + details of the implementation. + + Most of the objects in this read-write table + have corresponding read-only objects in the + sdlcPortOperTable that return the current + operating value. + + The operating values may be different from + these configured values if a configured + parameter was changed after the interface was + started." + ::= { sdlcPortGroup 1 } + +sdlcPortAdminEntry OBJECT-TYPE + SYNTAX SdlcPortAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of configured values for an SDLC port." + INDEX { ifIndex } + ::= { sdlcPortAdminTable 1 } + +SdlcPortAdminEntry ::= SEQUENCE +{ + sdlcPortAdminName DisplayString, + sdlcPortAdminRole INTEGER, + sdlcPortAdminType INTEGER, + sdlcPortAdminTopology INTEGER, + sdlcPortAdminISTATUS INTEGER, + sdlcPortAdminACTIVTO TimeInterval, + sdlcPortAdminPAUSE TimeInterval, + sdlcPortAdminSERVLIM Integer32, + sdlcPortAdminSlowPollTimer TimeInterval +} + +sdlcPortAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An octet string that defines the physical port + to which this interface is assigned. It has + implementation-specific significance. Its value + shall be unique within the administered + system. It must contain only ASCII printable + characters. Should an implementation choose to + accept a write operation for this object, it + causes the logical port definition associated + with the table instance to be moved to a + different physical port. A write operation + shall not take effect until the port is cycled + inactive." + ::= { sdlcPortAdminEntry 1 } + +sdlcPortAdminRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + negotiable(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes the role that the link + station shall assume the next time a connection + is established. + + Even though this is defined as a port object, + it is a link station attribute in the sense + that a role is per link station. However, it + is not possible to vary link station roles on a + particular port. For example, if an SDLC port + is configured to primary, all link stations on + that port must be primary." + ::= { sdlcPortAdminEntry 2 } + +sdlcPortAdminType OBJECT-TYPE + SYNTAX INTEGER + { + leased(1), + switched(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port + is to connect to a leased or switched line. A + write operation to this administrative value + shall not take effect until the SDLC port has + been cycled inactive." + DEFVAL { leased } + ::= { sdlcPortAdminEntry 3 } + +sdlcPortAdminTopology OBJECT-TYPE + SYNTAX INTEGER + { + pointToPoint(1), + multipoint(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port is + capable of operating in either a point-to-point + or multipoint topology. + + sdlcPortAdminTopology == multipoint implies the + port can also operate in a point-to-point + topology. sdlcPortAdminTopology == + pointToPoint does not imply the port can + operate in a multipoint topology. + + A write operation to this administrative value + shall not take effect until the SDLC port has + been cycled inactive." + DEFVAL { pointToPoint } + ::= { sdlcPortAdminEntry 4 } + +sdlcPortAdminISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter controls the initial value of + the administrative status, ifAdminStatus, of + this SDLC port at port start-up. Depending + on the implementation, a write operation to + this administrative object may not take effect + until the SDLC port has been cycled inactive." + DEFVAL { active } + ::= { sdlcPortAdminEntry 5 } + +sdlcPortAdminACTIVTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines the period of time (in + 1/100ths of a second) that the port will allow a + switched line to remain inactive before + disconnecting. A switched line is considered + to be inactive if there are no I-Frames being + transferred. A value of zero indicates no + timeout. Depending on the implementation, a + write operation to this administered value may + not take effect until the port is cycled + inactive. + + This object only has meaning for SDLC ports + where sdlcPortAdminType == switched + + The object descriptor contains the name of an + NCP configuration parameter, ACTIVTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP ACTIVTO is + represented in seconds." + DEFVAL { 0 } + ::= { sdlcPortAdminEntry 6 } + +sdlcPortAdminPAUSE OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the minimum elapsed time + (in 1/100ths of a second) between any two + traversals of the poll list for a primary SDLC + port. Depending on the implementation, a write + operation to this administered value may not + take effect until the port is cycled inactive. + The object descriptor contains the name of an + NCP configuration parameter, PAUSE. Please + note that the value of this object represents + 1/100ths of a second while the NCP PAUSE is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where sdlcPortAdminRole == primary " + DEFVAL { 200 } + ::= { sdlcPortAdminEntry 7 } + +sdlcPortAdminSERVLIM OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of times the + active poll list will be traversed before + polling a station on the slow poll list for a + primary, multipoint SDLC port. Depending on + the implementation, a write operation to this + administered value may not take effect until + the port is cycled inactive. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary + and + sdlcPortAdminTopology == multipoint " + DEFVAL { 20 } + ::= { sdlcPortAdminEntry 8 } + +sdlcPortAdminSlowPollTimer OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes the elapsed time (in + 1/100ths of a second) between polls for failed + secondary link station addresses. Depending + on the implementation, a write operation to + this administered value may not take effect + until the port is cycled inactive. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary + and + sdlcPortAdminTopology == multipoint " + DEFVAL { 2000 } + ::= { sdlcPortAdminEntry 9 } + +-- ************************************************************* +-- * * +-- * THE SDLC PORT OPERATIONAL TABLE * +-- * * +-- ************************************************************* + +sdlcPortOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current SDLC port + parameters. Many of these objects have + corresponding objects inthe sdlcPortAdminTable." + ::= { sdlcPortGroup 2 } + +sdlcPortOperEntry OBJECT-TYPE + SYNTAX SdlcPortOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Currently set parameters for a specific SDLC + port." + INDEX { ifIndex } + ::= { sdlcPortOperTable 1 } + +SdlcPortOperEntry ::= SEQUENCE +{ + sdlcPortOperName DisplayString, + sdlcPortOperRole INTEGER, + sdlcPortOperType INTEGER, + sdlcPortOperTopology INTEGER, + sdlcPortOperISTATUS INTEGER, + sdlcPortOperACTIVTO TimeInterval, + sdlcPortOperPAUSE TimeInterval, + sdlcPortOperSlowPollMethod INTEGER, + sdlcPortOperSERVLIM Integer32, + sdlcPortOperSlowPollTimer TimeInterval, + sdlcPortOperLastModifyTime TimeTicks, + sdlcPortOperLastFailTime TimeTicks, + sdlcPortOperLastFailCause INTEGER +} + +sdlcPortOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string that describes the physical + port to which this interface is currently + attached. It has implementation-specific + significance." + ::= { sdlcPortOperEntry 1 } + +sdlcPortOperRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + undefined(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the role that the link + station has assumed on this connection. + + Even though this is defined as a port object, + it is a link station attribute in the sense + that a role is per link station. However, it + is not possible to vary link station roles on a + particular port. For example, if an SDLC port + is configured to primary, all link stations on + that port must be primary. + + The value of sdlcPortOperRole is undefined(3) + whenever the link station role has not yet been + established by the mode setting command." + ::= { sdlcPortOperEntry 2 } + +sdlcPortOperType OBJECT-TYPE + SYNTAX INTEGER + { + leased(1), + switched(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port + is currently operating as though connected to a + leased or switched line." + ::= { sdlcPortOperEntry 3 } + +sdlcPortOperTopology OBJECT-TYPE + SYNTAX INTEGER + { + pointToPoint(1), + multipoint(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port is + currently operating in a point-to-point or + multipoint topology." + ::= { sdlcPortOperEntry 4 } + +sdlcPortOperISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter describes the initial value of + the administrative status, ifAdminStatus, of + this SDLC port at last port start-up." + ::= { sdlcPortOperEntry 5 } + + +sdlcPortOperACTIVTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines the period of time (in + 100ths of a second) that the port will allow a + switched line to remain inactive before + disconnecting. A switched line is considered + to be inactive if there are no I-Frames being + transferred. + + The object descriptor contains the name of an + NCP configuration parameter, ACTIVTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP ACTIVTO is + represented in seconds. + A value of zero indicates no timeout." + ::= { sdlcPortOperEntry 6 } + +sdlcPortOperPAUSE OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the current minimum + elapsed time (in 1/100ths of a second) between + any two traversals of the poll list for a + primary SDLC port. + + The object descriptor contains the name of an + NCP configuration parameter, PAUSE. Please + note that the value of this object represents + 1/100ths of a second while the NCP PAUSE is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary " + ::= { sdlcPortOperEntry 7 } + +sdlcPortOperSlowPollMethod OBJECT-TYPE + SYNTAX INTEGER + { + servlim(1), + pollpause(2), + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object defines the exact method that is in + effect for periodically polling failed secondary + link station addresses. + + If sdlcPortOperSlowPollMethod == servlim, then + sdlcPortOperSERVLIM defines the actual polling + characteristics. + + If sdlcPortOperSlowPollMethod == pollpause, + then sdlcPortOperSlowPollTimer defines the + actual polling characteristics. + + If sdlcPortOperSlowPollMethod == other, then + the polling characteristics are modeled in + vendor-specific objects. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 8 } + +sdlcPortOperSERVLIM OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the number of times the + active poll list is currently being traversed + before polling a station on the slow poll list + for a primary, multipoint SDLC port. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 9 } + +sdlcPortOperSlowPollTimer OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the elapsed time (in + 1/100ths of a second) between polls for failed + secondary link station addresses. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 10 } + +sdlcPortOperLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this port definition was last modified. + If the port has not been modified, then this + value shall be zero." + ::= { sdlcPortOperEntry 11 } + +sdlcPortOperLastFailTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this SDLC port last failed. If the port + has not failed, then this value shall be zero." + ::= { sdlcPortOperEntry 12 } + +sdlcPortOperLastFailCause OBJECT-TYPE + SYNTAX INTEGER + { + undefined(1), + physical(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This enumerated object describes the cause of + the last failure of this SDLC port. If the + port has not failed, then this object has a + value of undefined(1)." + DEFVAL { undefined } + ::= { sdlcPortOperEntry 13 } + +-- ************************************************************* +-- * * +-- * THE SDLC PORT STATISTICS TABLE * +-- * * +-- ************************************************************* + +sdlcPortStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table contains statistics + for a specific SDLC port." + ::= { sdlcPortGroup 3 } + +sdlcPortStatsEntry OBJECT-TYPE + SYNTAX SdlcPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for an SDLC port." + INDEX { ifIndex } + ::= { sdlcPortStatsTable 1 } + +SdlcPortStatsEntry ::= SEQUENCE +{ + sdlcPortStatsPhysicalFailures Counter32, + sdlcPortStatsInvalidAddresses Counter32, + sdlcPortStatsDwarfFrames Counter32, + sdlcPortStatsPollsIn Counter32, + sdlcPortStatsPollsOut Counter32, + sdlcPortStatsPollRspsIn Counter32, + sdlcPortStatsPollRspsOut Counter32, + sdlcPortStatsLocalBusies Counter32, + sdlcPortStatsRemoteBusies Counter32, + sdlcPortStatsIFramesIn Counter32, + sdlcPortStatsIFramesOut Counter32, + sdlcPortStatsOctetsIn Counter32, + sdlcPortStatsOctetsOut Counter32, + sdlcPortStatsProtocolErrs Counter32, + sdlcPortStatsActivityTOs Counter32, + sdlcPortStatsRNRLIMITs Counter32, + sdlcPortStatsRetriesExps Counter32, + sdlcPortStatsRetransmitsIn Counter32, + sdlcPortStatsRetransmitsOut Counter32 +} + +sdlcPortStatsPhysicalFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + this port has failed due to its physical media + since port startup. At port startup time, + this object must be initialized to zero." + ::= { sdlcPortStatsEntry 1 } + +sdlcPortStatsInvalidAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + frames received by this port with invalid link + station addresses." + ::= { sdlcPortStatsEntry 2 } + +sdlcPortStatsDwarfFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + frames received by this port which were + delivered intact by the physical layer but were + too short to be legal. + + Ignoring the frame check sequence (FCS), a + frame is considered to be too short if it + is less than 2 bytes for sdlcLSOperMODULO of + eight, or if it is less than 3 bytes for + sdlcLSOperMODULO of onetwentyeight." + + ::= { sdlcPortStatsEntry 3 } + +sdlcPortStatsPollsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of polls + received by this port since the port was + created." + + ::= { sdlcPortStatsEntry 4 } + +sdlcPortStatsPollsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of polls + sent by this port since the port was created." + + ::= { sdlcPortStatsEntry 5 } + +sdlcPortStatsPollRspsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses received by this port since the port + was created." + + ::= { sdlcPortStatsEntry 6 } + +sdlcPortStatsPollRspsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses sent by this port since the port was + created." + + ::= { sdlcPortStatsEntry 7 } + +sdlcPortStatsLocalBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the local SDLC link stations on + this port have entered a busy state (RNR). + This object is initialized to zero when the + port is created." + ::= { sdlcPortStatsEntry 8 } + +sdlcPortStatsRemoteBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the adjacent (i.e., remote) SDLC + link stations on this port have entered a busy + state (RNR). This object is initialized to + zero when the port is created." + ::= { sdlcPortStatsEntry 9 } + +sdlcPortStatsIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames that have been received by SDLC link + stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 10 } + +sdlcPortStatsIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames that have been transmitted by SDLC + link stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 11 } + +sdlcPortStatsOctetsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + received from adjacent SDLC link stations on + this port. This object covers the address, + control, and information field of I-Frames + only. This object is initialized to zero when + the port is created." + ::= { sdlcPortStatsEntry 12 } + +sdlcPortStatsOctetsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + transmitted to adjacent SDLC link stations on + this port. This object covers the address, + control, and information field of I-Frames + only. This object is initialized to zero when + the port is created." + ::= { sdlcPortStatsEntry 13 } + +sdlcPortStatsProtocolErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of + having received a protocol violation from the + adjacent link station. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 14 } + +sdlcPortStatsActivityTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of no + activity on the link. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 15 } + +sdlcPortStatsRNRLIMITs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of its + RNRLIMIT timer expiring. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 16 } + +sdlcPortStatsRetriesExps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of a + retry sequence being exhausted. This object + is initialized to zero when the port is + created." + ::= { sdlcPortStatsEntry 17 } + +sdlcPortStatsRetransmitsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames retransmitted by remote link stations + for all SDLC link stations on this port. This + object is initialized to zero when the port is + created." + ::= { sdlcPortStatsEntry 18 } + +sdlcPortStatsRetransmitsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames retransmitted by all local SDLC link + stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 19 } + +-- +-- THE SDLC LINK STATION GROUP +-- =========================== +-- + +-- The following classes of information is modelled for each SDLC link +-- station: +-- +-- 1. ADMINISTRATIVE ( read-write) +-- 2. OPERATIONAL ( read-only) +-- 3. STATISTICS ( read-only) + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION ADMINISTRATIVE TABLE * +-- * * +-- ************************************************************* + +sdlcLSAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be + changed to manage an SDLC link station. + Changing one of these parameters may take + effect in the operating link immediately or may + wait until the link is restarted depending on + the details of the implementation. + + The entries in sdlcLSAdminTable can be created + either by an agent or a management station. The + management station can create an entry in + sdlcLSAdminTable by setting the appropriate + value in sdlcLSAdminRowStatus. + + Most of the objects in this read-create table + have corresponding read-only objects in the + sdlcLSOperTable that reflect the current + operating value. + + The operating values may be different from + these configured values if changed by XID + negotiation or if a configured parameter was + changed after the link was started." + ::= { sdlcLSGroup 1 } + +sdlcLSAdminEntry OBJECT-TYPE + SYNTAX SdlcLSAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of configured values for an SDLC link + station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSAdminTable 1 } + +SdlcLSAdminEntry ::= SEQUENCE +{ + sdlcLSAddress INTEGER, + sdlcLSAdminName DisplayString, + sdlcLSAdminState INTEGER, + sdlcLSAdminISTATUS INTEGER, + sdlcLSAdminMAXDATASend Integer32, + sdlcLSAdminMAXDATARcv Integer32, + sdlcLSAdminREPLYTO TimeInterval, + sdlcLSAdminMAXIN INTEGER, + sdlcLSAdminMAXOUT INTEGER, + sdlcLSAdminMODULO INTEGER, + sdlcLSAdminRETRIESm INTEGER, + sdlcLSAdminRETRIESt TimeInterval, + sdlcLSAdminRETRIESn Integer32, + sdlcLSAdminRNRLIMIT TimeInterval, + sdlcLSAdminDATMODE INTEGER, + sdlcLSAdminGPoll INTEGER, + sdlcLSAdminSimRim INTEGER, + sdlcLSAdminXmitRcvCap INTEGER, + sdlcLSAdminRowStatus RowStatus +} + +sdlcLSAddress OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value is the poll address of the + secondary link station for this SDLC link. It + uniquely identifies the SDLC link station + within a single SDLC port." + ::= { sdlcLSAdminEntry 1 } + +sdlcLSAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An octet string that defines the local name of + the SDLC link station. This field may be sent + in the XID3 control vector 0x0E, type 0xF7." + ::= { sdlcLSAdminEntry 2 } + +sdlcLSAdminState OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the desired state of the + SDLC station. The managed system shall attempt + to keep the operational state, sdlcLSOperState, + consistent with this value." + DEFVAL { active } + ::= { sdlcLSAdminEntry 3 } + +sdlcLSAdminISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter controls the desired state, + sdlcLSAdminState, of the SDLC link station at + link station start-up." + DEFVAL { active } + ::= { sdlcLSAdminEntry 4 } + +sdlcLSAdminMAXDATASend OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the maximum PDU size that + the local link station thinks it can send to + the adjacent link station before having + received any XID from the ALS. After the + maximum PDU size that the ALS can receive is + known (via XID exchange) that value is + reflected in sdlcLSOperMAXDATASend and takes + precedence over this object. + + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSAdminEntry 5 } + +sdlcLSAdminMAXDATARcv OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the maximum PDU size that + the local link station can receive from the + adjacent link station. This value is sent in + the XID to the ALS. + + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSAdminEntry 6 } + +sdlcLSAdminREPLYTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the reply timeout (in + 1/100ths of a second) for an SDLC link + station. If the link station does not receive + a response to a poll or message before the + specified time expires then the appropriate + error recovery shall be initiated. + + The object descriptor contains the name of an + NCP configuration parameter, REPLYTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP REPLYTO is + represented in 1/10ths of a second. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, sdlcLSOperREPLYTO, + until the link station is cycled inactive. + + This object only has meaning for SDLC ports + where sdlcPortAdminRole == primary " + DEFVAL { 100 } + ::= { sdlcLSAdminEntry 7 } + +sdlcLSAdminMAXIN OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the maximum number of + unacknowledged I-frames which an SDLC link + station may receive. This should range from 1 + to (sdlcLSAdminMODULO - 1). This value is sent + in the XID to the ALS. + + A write operation to this administered value + will not change the operational value, + sdlcLSOperMAXIN, until the link station is + cycled inactive." + DEFVAL { 7 } + ::= { sdlcLSAdminEntry 8 } + +sdlcLSAdminMAXOUT OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the maximum number of + consecutive unacknowledged I-frames which an + SDLC link station shall send without an + acknowledgement. This shall range from 1 to + (sdlcLSAdminMODULO - 1). + + For link stations on switched SDLC lines, + certain implementions may choose to override + this administered value with the value + received in the XID exchange. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperMAXOUT, until the link station is + cycled inactive. + + An implementation can support only modulo 8, + only modulo 128, or both." + DEFVAL { 1 } + ::= { sdlcLSAdminEntry 9 } + +sdlcLSAdminMODULO OBJECT-TYPE + SYNTAX INTEGER + { + eight(8), + onetwentyeight(128) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the modulus for an SDLC + link station. This modulus determines the size + of the rotating acknowledgement window used the + SDLC link station pair. + + A write operation to this administered value + will not change the operational value, + sdlcLSOperMODULO, until the link station is + cycled inactive. + + An implementation can support only modulo 8, + only modulo 128, or both." + DEFVAL { eight } + ::= { sdlcLSAdminEntry 10 } + +sdlcLSAdminRETRIESm OBJECT-TYPE + SYNTAX INTEGER (0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls number of retries in a + retry sequence for the local SDLC link + station. A retry sequence is a series of + retransmitted frames ( data or control) for + which no positive acknowledgement is received. + + The number of times that the retry sequence is + to be repeated is controlled by the object: + sdlcLSAdminRETRIESn. The interval between retry + sequences is controlled by the object: + sdlcLSAdminRETRIESt. + + A value of zero indicates no retries. If the + value of sdlcLSAdminRETRIESm is zero, then the + values of sdlcLSAdminRETRIESt and + sdlcLSAdminRETRIESn should also be zero. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESm, until the link station is + cycled inactive." + DEFVAL { 15 } + ::= { sdlcLSAdminEntry 11 } + +sdlcLSAdminRETRIESt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the interval (in 1/100ths + of a second) between retry sequences for the + local SDLC link station if multiple retry + sequences are specified . A retry sequence is + a series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The number of repeated retries sequences is + controlled by the object: sdlcLSAdminRETRIESn. + The retries per sequence is controlled by the + object: sdlcLSAdminRETRIESm. + + The object descriptor contains the name of an + NCP configuration parameter, RETRIESt. Please + note that the value of this object represents + 1/100ths of a second while the NCP RETRIESt is + represented in seconds. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESt, until the link station is + cycled inactive." + DEFVAL { 0 } + ::= { sdlcLSAdminEntry 12 } + +sdlcLSAdminRETRIESn OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the number of times that + a retry sequence is repeated for the local SDLC + link station. A retry sequence is a series of + retransmitted frames ( data or control) for + which no positive acknowledgement is received. + + The interval between retry sequences is + controlled by the object: sdlcLSAdminRETRIESn. + The retries per sequence is controlled by the + object: sdlcLSAdminRETRIESm. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESn, until the link station is + cycled inactive." + DEFVAL { 0 } + ::= { sdlcLSAdminEntry 13 } + +sdlcLSAdminRNRLIMIT OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the length of time (in + 1/100ths of a second) that an SDLC link station + will allow its adjacent link station to remain + in a busy (RNR) state before declaring it + inoperative. + + A value of sdlcLSAdminRNRLIMIT == 0 means there + is no limit. + + The object descriptor contains the name of an + NCP configuration parameter, RNRLIMIT. Please + note that the value of this object represents + 1/100ths of a second while the NCP RNRLIMIT is + represented in minutes. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRNRLIMIT, until the link station is + cycled inactive." + DEFVAL { 18000 } + ::= { sdlcLSAdminEntry 14 } + +sdlcLSAdminDATMODE OBJECT-TYPE + SYNTAX INTEGER + { + half(1), + full(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls whether communications + mode with the adjacent link station is + two-way-alternate (half) or two-way-simultaneous + (full). + + A write operation to this administered value + will not change the operational value, + sdlcLSOperDATMODE, until the link station is + cycled inactive." + DEFVAL { half } + ::= { sdlcLSAdminEntry 15 } + +sdlcLSAdminGPoll OBJECT-TYPE + SYNTAX INTEGER (0..254) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes the group poll address + for this link station instance. If group poll + is not in effect for this link station + instance, the value for sdlcLSAdminGPoll should + be zero. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, sdlcLSOperGPoll, + until the link station is cycled inactive." + ::= { sdlcLSAdminEntry 16 } + +sdlcLSAdminSimRim OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the support for + transmission and receipt of SIM and RIM control + frames for this link station. The value of + this object controls the setting of the + transmit-receive capability sent in the XID + field." + DEFVAL { no } + ::= { sdlcLSAdminEntry 17 } + +sdlcLSAdminXmitRcvCap OBJECT-TYPE + SYNTAX INTEGER + { + twa(1), + tws(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the transmit-receive + capabilities for this SDLC link station. The + value of this object establishes the value of + the transmit-receive capability indicator sent + in the XID image to the adjacent link station." + DEFVAL { twa } + ::= { sdlcLSAdminEntry 18 } + +sdlcLSAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a management station to + create or delete the row entry in + sdlcLSAdminTable following the RowStatus + textual convention. + + Upon successful creation of the row, an agent + automatically creates a corresponding entry in + the sdlcLSOperTable with sdlcLSOperState equal + to 'discontacted (1)'." + ::= { sdlcLSAdminEntry 19 } + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION OPERATIONAL TABLE * +-- * * +-- ************************************************************* + +sdlcLSOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current SDLC link + parameters. Many of these objects have + corresponding objects in the + sdlcLSAdminTable." + ::= { sdlcLSGroup 2 } + +sdlcLSOperEntry OBJECT-TYPE + SYNTAX SdlcLSOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of status and control values for an + SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSOperTable 1 } + +SdlcLSOperEntry ::= SEQUENCE +{ + sdlcLSOperName DisplayString, + sdlcLSOperRole INTEGER, + sdlcLSOperState INTEGER, + sdlcLSOperMAXDATASend Integer32, + sdlcLSOperREPLYTO TimeInterval, + sdlcLSOperMAXIN INTEGER, + sdlcLSOperMAXOUT INTEGER, + sdlcLSOperMODULO INTEGER, + sdlcLSOperRETRIESm INTEGER, + sdlcLSOperRETRIESt TimeInterval, + sdlcLSOperRETRIESn INTEGER, + sdlcLSOperRNRLIMIT TimeInterval, + sdlcLSOperDATMODE INTEGER, + sdlcLSOperLastModifyTime TimeTicks, + sdlcLSOperLastFailTime TimeTicks, + sdlcLSOperLastFailCause INTEGER, + sdlcLSOperLastFailCtrlIn OCTET STRING, + sdlcLSOperLastFailCtrlOut OCTET STRING, + sdlcLSOperLastFailFRMRInfo OCTET STRING, + sdlcLSOperLastFailREPLYTOs Counter32, + sdlcLSOperEcho INTEGER, + sdlcLSOperGPoll INTEGER, + sdlcLSOperSimRim INTEGER, + sdlcLSOperXmitRcvCap INTEGER +} + +sdlcLSOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string that defines the name of the + remote SDLC link station. This field is + received in the XID3 control vector 0x0E, type + 0xF7." + ::= { sdlcLSOperEntry 1 } + +sdlcLSOperRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + undefined(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current role that the + link station is assuming. + + The value of sdlcLSOperRole is undefined(3) + whenever the link station role has not yet been + established by the mode setting command." + ::= { sdlcLSOperEntry 2 } + +sdlcLSOperState OBJECT-TYPE + SYNTAX INTEGER + { + discontacted(1), + contactPending(2), + contacted(3), + discontactPending(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the operational state of + the SDLC link station. The managed system + shall attempt to keep this value consistent + with the administered state, sdlcLSAdminState" + ::= { sdlcLSOperEntry 3 } + +sdlcLSOperMAXDATASend OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the actual maximum PDU + size that the local link station can send to + the adjacent link station. This object is + established from the value received in the XID + from the adjacent link station. If no XID + is received, then this value is implementation + dependent (for instance, it could be the value + of sdlcLSAdminMAXDATASend). + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSOperEntry 4 } + +sdlcLSOperREPLYTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current reply timeout + (in 1/100ths of a second) for an SDLC link + station. If the link station does not receive + a response to a poll or message before the + specified time expires then the appropriate + error recovery shall be initiated. + + The object descriptor contains the name of an + NCP configuration parameter, REPLYTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP REPLYTO is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where sdlcPortOperRole == primary " + ::= { sdlcLSOperEntry 5 } + +sdlcLSOperMAXIN OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current maximum + number of unacknowledged I-frames which an SDLC + link station may receive. This shall range + from 1 to (sdlcLSOperMODULO - 1)." + ::= { sdlcLSOperEntry 6 } + +sdlcLSOperMAXOUT OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object controls the maximum number of + consecutive unacknowledged I-frames which an + SDLC link station shall send without an + acknowledgement. This shall range from 1 to + (sdlcLSAdminMODULO - 1). + This value may controlled by the administered + MAXOUT, sdlcLSAdminMAXOUT, or by the MAXIN value + received during the XID exchange." + ::= { sdlcLSOperEntry 7 } + +sdlcLSOperMODULO OBJECT-TYPE + SYNTAX INTEGER + { + eight(8), + onetwentyeight(128) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current modulus for + an SDLC link station. This modulus determines + the size of rotating acknowledgement window + used by the SDLC link station pair." + DEFVAL { eight } + ::= { sdlcLSOperEntry 8 } + +sdlcLSOperRETRIESm OBJECT-TYPE + SYNTAX INTEGER (0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object controls number of retries in a + retry sequence for an SDLC link station. A + retry sequence is a series of retransmitted + frames ( data or control) for which no positive + acknowledgement is received. + + The current number of times that the retry + sequence is to be repeated is reflected by the + object: sdlcLSOperRETRIESn. The current + interval between retry sequences is reflected + by the object: sdlcLSOperRETRIESt." + ::= { sdlcLSOperEntry 9 } + +sdlcLSOperRETRIESt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current interval (in + 1/100ths of a second) between retry sequences + for an SDLC link station if multiple retry + sequences are specified. A retry sequence is a + series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The object descriptor contains the name of an + NCP configuration parameter, RETRIESt. Please + note that the value of this object represents + 1/100ths of a second while the NCP RETRIESt is + represented in seconds. + + The current number of repeated retries + sequences is reflected by the object: + sdlcLSOperRETRIESn. The current retries per + sequence is reflected by the object: + sdlcLSOperRETRIESm." + ::= { sdlcLSOperEntry 10 } + +sdlcLSOperRETRIESn OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current number of + times that a retry sequence is repeated for an + SDLC link station. A retry sequence is a + series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The current interval between retry sequences is + reflected by the object: sdlcLSOperRETRIESn. + The current retries per sequence is reflected + by the object: sdlcLSOperRETRIESm." + ::= { sdlcLSOperEntry 11 } + +sdlcLSOperRNRLIMIT OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current length of + time (in 1/100ths of a second) that an SDLC + link station will allow its adjacent link + station to remain in a busy (RNR) state before + declaring it inoperative. + + The object descriptor contains the name of an + NCP configuration parameter, RNRLIMIT. Please + note that the value of this object represents + 1/100ths of a second while the NCP RNRLIMIT is + represented in minutes. + + A value of sdlcLSOperRNRLIMIT == 0 means there + is no limit." + ::= { sdlcLSOperEntry 12 } + +sdlcLSOperDATMODE OBJECT-TYPE + SYNTAX INTEGER + { + half(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects whether the current + communications mode with the adjacent link + station is two-way-alternate (half) or + two-way-simultaneous (full)." + ::= { sdlcLSOperEntry 13 } + +sdlcLSOperLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this link station definition was last + modified. If the link station has not been + modified, then this value shall be zero." + ::= { sdlcLSOperEntry 14 } + +sdlcLSOperLastFailTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this SDLC link station last failed. If + the link station has not failed, then this + value shall be zero." + ::= { sdlcLSOperEntry 15 } + +sdlcLSOperLastFailCause OBJECT-TYPE + SYNTAX INTEGER + { + undefined(1), + rxFRMR(2), + txFRMR(3), + noResponse(4), + protocolErr(5), + noActivity(6), + rnrLimit(7), + retriesExpired(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This enumerated object reflects the cause of + the last failure of this SDLC link station. If + the link station has not failed, then this + object will have a value of undefined(1)." + DEFVAL { undefined } + ::= { sdlcLSOperEntry 16 } + +sdlcLSOperLastFailCtrlIn OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the last control octet or + octets (depending on modulus) received by this + SDLC link station at the time of the last + failure. If the link station has not failed, + then this value has no meaning." + ::= { sdlcLSOperEntry 17 } + +sdlcLSOperLastFailCtrlOut OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the last control octet or + octets (depending on modulus) sent by this SDLC + link station at the time of the last failure. + If the link station has not failed, then this + value has no meaning." + ::= { sdlcLSOperEntry 18 } + +sdlcLSOperLastFailFRMRInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the information field of + the FRMR frame if the last failure for this + SDLC link station was as a result of an invalid + frame. Otherwise, this field has no meaning." + ::= { sdlcLSOperEntry 19 } + +sdlcLSOperLastFailREPLYTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the number of times that + the REPLYTO timer had expired for an SDLC link + station at the time of the last failure. If the + link station has not failed, then this value + has no meaning." + ::= { sdlcLSOperEntry 20 } + +sdlcLSOperEcho OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether the echo bit is + in effect for this particular link station." + DEFVAL { no } + ::= { sdlcLSOperEntry 21 } + +sdlcLSOperGPoll OBJECT-TYPE + SYNTAX INTEGER (0..254) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the group poll address + in effect for this link station instance." + DEFVAL { 0 } + ::= { sdlcLSOperEntry 22 } + +sdlcLSOperSimRim OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the support for + transmission and receipt of SIM and RIM control + frames for the adjacent link station. The + value of this object is set from the XID field + received from the adjacent link station." + DEFVAL { no } + ::= { sdlcLSOperEntry 23 } + +sdlcLSOperXmitRcvCap OBJECT-TYPE + SYNTAX INTEGER + { + twa(1), + tws(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the transmit-receive + capabilities for the adjacent SDLC link + station. The value of this object is the value + of the transmit-receive capability indicator + received in the XID image from the adjacent + link station." + DEFVAL { twa } + ::= { sdlcLSOperEntry 24 } + + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION STATISTICS TABLE * +-- * * +-- ************************************************************* + +sdlcLSStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table contains statistics + for a specific SDLC link station." + ::= { sdlcLSGroup 3 } + +sdlcLSStatsEntry OBJECT-TYPE + SYNTAX SdlcLSStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for an SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSStatsTable 1 } + +SdlcLSStatsEntry ::= SEQUENCE +{ + sdlcLSStatsBLUsIn Counter32, + sdlcLSStatsBLUsOut Counter32, + sdlcLSStatsOctetsIn Counter32, + sdlcLSStatsOctetsOut Counter32, + sdlcLSStatsPollsIn Counter32, + sdlcLSStatsPollsOut Counter32, + sdlcLSStatsPollRspsIn Counter32, + sdlcLSStatsPollRspsOut Counter32, + sdlcLSStatsLocalBusies Counter32, + sdlcLSStatsRemoteBusies Counter32, + sdlcLSStatsIFramesIn Counter32, + sdlcLSStatsIFramesOut Counter32, + sdlcLSStatsUIFramesIn Counter32, + sdlcLSStatsUIFramesOut Counter32, + sdlcLSStatsXIDsIn Counter32, + sdlcLSStatsXIDsOut Counter32, + sdlcLSStatsTESTsIn Counter32, + sdlcLSStatsTESTsOut Counter32, + sdlcLSStatsREJsIn Counter32, + sdlcLSStatsREJsOut Counter32, + sdlcLSStatsFRMRsIn Counter32, + sdlcLSStatsFRMRsOut Counter32, + sdlcLSStatsSIMsIn Counter32, + sdlcLSStatsSIMsOut Counter32, + sdlcLSStatsRIMsIn Counter32, + sdlcLSStatsRIMsOut Counter32, + sdlcLSStatsDISCIn Counter32, + sdlcLSStatsDISCOut Counter32, + sdlcLSStatsUAIn Counter32, + sdlcLSStatsUAOut Counter32, + sdlcLSStatsDMIn Counter32, + sdlcLSStatsDMOut Counter32, + sdlcLSStatsSNRMIn Counter32, + sdlcLSStatsSNRMOut Counter32, + sdlcLSStatsProtocolErrs Counter32, + sdlcLSStatsActivityTOs Counter32, + sdlcLSStatsRNRLIMITs Counter32, + sdlcLSStatsRetriesExps Counter32, + sdlcLSStatsRetransmitsIn Counter32, + sdlcLSStatsRetransmitsOut Counter32 +} + +sdlcLSStatsBLUsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total basic link + units (BLUs; frames) received from an adjacent + SDLC link station since link station startup. + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 1 } + +sdlcLSStatsBLUsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total basic link + units (BLUs; frames), transmitted to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 2 } + +sdlcLSStatsOctetsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets received + from an adjacent SDLC link station since link + station startup. This object covers the + address, control, and information field of + I-Frames only. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 3 } + +sdlcLSStatsOctetsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + transmitted to an adjacent SDLC link station + since link station startup. This object covers + the address, control, and information field of + I-Frames only. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 4 } + +sdlcLSStatsPollsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total polls received + from an adjacent SDLC link station since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 5 } + +sdlcLSStatsPollsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total polls sent to + an adjacent SDLC link station since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 6 } + +sdlcLSStatsPollRspsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses sent to the adjacent SDLC link + station since link station startup. This value + includes I-frames that are sent in response to + a poll. + + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 7 } + +sdlcLSStatsPollRspsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses received from the adjacent SDLC link + station since station startup. This value + includes I-frames that are received in response + to a poll. + + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 8 } + +sdlcLSStatsLocalBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + that the local SDLC link station has entered a + busy state (RNR) since link station startup. + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 9 } + +sdlcLSStatsRemoteBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + that an adjacent ( remote) SDLC link station + has entered a busy state (RNR) since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 10 } + +sdlcLSStatsIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total I-frames + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 11 } + +sdlcLSStatsIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total I-frames + transmitted to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 12 } + +sdlcLSStatsUIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total UI-frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 13 } + +sdlcLSStatsUIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total UI-frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 14 } + +sdlcLSStatsXIDsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total XID frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 15 } + +sdlcLSStatsXIDsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total XID frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 16 } + +sdlcLSStatsTESTsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total TEST frames, + commands or responses, received from an + adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 17 } + +sdlcLSStatsTESTsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total TEST frames, + commands or responses, transmitted to an + adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 18 } + +sdlcLSStatsREJsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total REJ frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 19 } + +sdlcLSStatsREJsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total REJ frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 20 } + +sdlcLSStatsFRMRsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total frame reject + (FRMR) frames received from an adjacent SDLC + link station since link station startup." + ::= { sdlcLSStatsEntry 21 } + +sdlcLSStatsFRMRsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total frame reject + (FRMR) frames transmitted to an adjacent SDLC + link station since link station startup." + ::= { sdlcLSStatsEntry 22 } + +sdlcLSStatsSIMsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total set + initialization mode (SIM) frames received from + an adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 23 } + +sdlcLSStatsSIMsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total set + initialization mode (SIM) frames transmitted to + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 24 } + +sdlcLSStatsRIMsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total request + initialization mode (RIM) frames received from + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 25 } + +sdlcLSStatsRIMsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total request + initialization mode (RIM) frames transmitted to + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 26 } + +sdlcLSStatsDISCIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect (DISC) requests received from an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 27 } + +sdlcLSStatsDISCOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect (DISC) requests transmited to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 28 } + +sdlcLSStatsUAIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + unnumbered acknowledgements (UA) requests + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 29 } + +sdlcLSStatsUAOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + unnumbered acknowledgements (UA) requests + transmited to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 30 } + +sdlcLSStatsDMIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect mode (DM) requests received from an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 31 } + +sdlcLSStatsDMOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect mode (DM) requests transmited to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 32 } + +sdlcLSStatsSNRMIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + set normal response mode (SNRM/SNRME) requests + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 33 } + +sdlcLSStatsSNRMOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + set normal response mode (SNRM/SNRME) requests + transmited to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 34 } + +sdlcLSStatsProtocolErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since link station startup, where this SDLC + link station has inactivated the link as a + result of receiving a frame from its adjacent + link station which was in violation of the + protocol. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 35 } + +sdlcLSStatsActivityTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of no activity + on the link. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 36 } + +sdlcLSStatsRNRLIMITs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of its + RNRLIMIT timer expiring. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 37 } + +sdlcLSStatsRetriesExps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of a retry + sequence being exhausted. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 38 } + +sdlcLSStatsRetransmitsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + information frames retransmitted by the remote + link station because the N(s) received from + that link station indicated that one or more + information frames sent by that station were + lost. This event causes the first missing + information frame of a window and all + subsequent information frames to be + retransmitted. At link station startup time, + this object must be initialized to zero. + + Management: If the value of + sdlcLSStatsRetransmitsIn grows over time, then + the quality of the serial line is in + question. You might want to look at + decreasing the value for + sdlcLSAdminMAXDATASend to compensate for the + lower quality line." + ::= { sdlcLSStatsEntry 39 } + +sdlcLSStatsRetransmitsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + information frames retransmitted to a remote + link station because the N(r) received from + that link station indicated that one or more + information frames sent to that station were + lost. This event causes the first missing + information frame of a window and all + subsequent information frames to be + retransmitted. At link station startup time, + this object must be initialized to zero. + + Management: If the value of + sdlcLSStatsRetransmitsOut grows over time, + then the quality of the serial line is in + question. You might want to look at + decreasing the value for sdlcLSAdminMAXDATASend + to compensate for the lower quality line." + ::= { sdlcLSStatsEntry 40 } + +-- +-- TRAP DEFINITIONS +-- + +-- +-- Notifications +-- + +sdlcTraps OBJECT IDENTIFIER ::= { sdlc 3 } + +sdlcPortStatusChange NOTIFICATION-TYPE + OBJECTS { ifIndex, + ifAdminStatus, + ifOperStatus, + sdlcPortOperLastFailTime, + sdlcPortOperLastFailCause + } + STATUS current + DESCRIPTION + "This trap indicates that the state of an SDLC + port has transitioned to active or inactive." + ::= { sdlcTraps 1 } + +sdlcLSStatusChange NOTIFICATION-TYPE + OBJECTS { ifIndex, + sdlcLSAddress, + sdlcLSOperState, + sdlcLSAdminState, + sdlcLSOperLastFailTime, + sdlcLSOperLastFailCause, + sdlcLSOperLastFailFRMRInfo, + sdlcLSOperLastFailCtrlIn, + sdlcLSOperLastFailCtrlOut, + sdlcLSOperLastFailREPLYTOs + } + STATUS current + DESCRIPTION + "This trap indicates that the state of an SDLC + link station has transitioned to contacted or + discontacted." + ::= { sdlcTraps 2 } + + +-- +-- Conformance Information +-- + +sdlcConformance OBJECT IDENTIFIER ::= { sdlc 4 } + +sdlcCompliances OBJECT IDENTIFIER ::= { sdlcConformance 1 } +sdlcGroups OBJECT IDENTIFIER ::= { sdlcConformance 2 } + +-- +-- Compliance Statements +-- + +sdlcCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all SDLC + nodes." + MODULE + MANDATORY-GROUPS + { + sdlcCorePortAdminGroup, + sdlcCorePortOperGroup, + sdlcCorePortStatsGroup, + sdlcCoreLSAdminGroup, + sdlcCoreLSOperGroup, + sdlcCoreLSStatsGroup + } + + OBJECT sdlcPortAdminName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT sdlcPortAdminRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminTopology + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminISTATUS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminISTATUS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXDATASend + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXDATARcv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXIN + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXOUT + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMODULO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESm + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRNRLIMIT + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminDATMODE + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminGPoll + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminSimRim + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 1 } + +sdlcPrimaryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for all nodes that + are performing the role of a Primary link + station." + MODULE + MANDATORY-GROUPS { sdlcPrimaryGroup } + + OBJECT sdlcPortAdminPAUSE + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminREPLYTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 2 } + +sdlcPrimaryMultipointCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for all nodes that + are performing the role of a primary link + station on a multipoint line." + MODULE + MANDATORY-GROUPS { sdlcPrimaryMultipointGroup } + + OBJECT sdlcPortAdminSERVLIM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminSlowPollTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 3 } + + +-- +-- Core Conformance Groups for All Link Stations +-- + +sdlcCoreGroups OBJECT IDENTIFIER ::= { sdlcGroups 1 } + +sdlcCorePortAdminGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminName, sdlcPortAdminRole, + sdlcPortAdminType, sdlcPortAdminTopology, + sdlcPortAdminISTATUS + } + STATUS current + DESCRIPTION + "The sdlcCorePortAdminGroup defines objects + which are common to the PortAdmin group of all + compliant link stations." + ::= { sdlcCoreGroups 1 } + +sdlcCorePortOperGroup OBJECT-GROUP + OBJECTS + { + sdlcPortOperName, + sdlcPortOperRole, + sdlcPortOperType, + sdlcPortOperTopology, + sdlcPortOperISTATUS, + sdlcPortOperACTIVTO, + sdlcPortOperLastFailTime, + sdlcPortOperLastFailCause + } + STATUS current + DESCRIPTION + "The sdlcCorePortOperGroup defines objects + which are common to the PortOper group of all + compliant link stations." + ::= { sdlcCoreGroups 2 } + + +sdlcCorePortStatsGroup OBJECT-GROUP + OBJECTS + { + sdlcPortStatsPhysicalFailures, + sdlcPortStatsInvalidAddresses, + sdlcPortStatsDwarfFrames + } + STATUS current + DESCRIPTION + "The sdlcCorePortStatsGroup defines objects + which are common to the PortStats group of all + compliant link stations." + ::= { sdlcCoreGroups 3 } + + +sdlcCoreLSAdminGroup OBJECT-GROUP + OBJECTS + { + sdlcLSAddress, + sdlcLSAdminName, + sdlcLSAdminState, + sdlcLSAdminISTATUS, + sdlcLSAdminMAXDATASend, + sdlcLSAdminMAXDATARcv, + sdlcLSAdminMAXIN, + sdlcLSAdminMAXOUT, + sdlcLSAdminMODULO, + sdlcLSAdminRETRIESm, + sdlcLSAdminRETRIESt, + sdlcLSAdminRETRIESn, + sdlcLSAdminRNRLIMIT, + sdlcLSAdminDATMODE, + sdlcLSAdminGPoll, + sdlcLSAdminSimRim, + sdlcLSAdminRowStatus + } + STATUS current + DESCRIPTION + "The sdlcCorePortAdminGroup defines objects + which are common to the PortAdmin group of all + compliant link stations." + ::= { sdlcCoreGroups 4 } + +sdlcCoreLSOperGroup OBJECT-GROUP + OBJECTS + { + sdlcLSOperRole, + sdlcLSOperState, + sdlcLSOperMAXDATASend, + sdlcLSOperMAXIN, + sdlcLSOperMAXOUT, + sdlcLSOperMODULO, + sdlcLSOperRETRIESm, + sdlcLSOperRETRIESt, + sdlcLSOperRETRIESn, + sdlcLSOperRNRLIMIT, + sdlcLSOperDATMODE, + sdlcLSOperLastFailTime, + sdlcLSOperLastFailCause, + sdlcLSOperLastFailCtrlIn, + sdlcLSOperLastFailCtrlOut, + sdlcLSOperLastFailFRMRInfo, + sdlcLSOperLastFailREPLYTOs, + sdlcLSOperEcho, + sdlcLSOperGPoll + } + STATUS current + DESCRIPTION + "The sdlcCorePortOperGroup defines objects + which are common to the PortOper group of all + compliant link stations." + ::= { sdlcCoreGroups 5 } + + +sdlcCoreLSStatsGroup OBJECT-GROUP + OBJECTS + { + sdlcLSStatsBLUsIn, + sdlcLSStatsBLUsOut, + sdlcLSStatsOctetsIn, + sdlcLSStatsOctetsOut, + sdlcLSStatsPollsIn, + sdlcLSStatsPollsOut, + sdlcLSStatsPollRspsIn, + sdlcLSStatsPollRspsOut, + sdlcLSStatsLocalBusies, + sdlcLSStatsRemoteBusies, + sdlcLSStatsIFramesIn, + sdlcLSStatsIFramesOut, + sdlcLSStatsRetransmitsIn, + sdlcLSStatsRetransmitsOut, + sdlcLSStatsUIFramesIn, + sdlcLSStatsUIFramesOut, + sdlcLSStatsXIDsIn, + sdlcLSStatsXIDsOut, + sdlcLSStatsTESTsIn, + sdlcLSStatsTESTsOut, + sdlcLSStatsREJsIn, + sdlcLSStatsREJsOut, + sdlcLSStatsFRMRsIn, + sdlcLSStatsFRMRsOut, + sdlcLSStatsSIMsIn, + sdlcLSStatsSIMsOut, + sdlcLSStatsRIMsIn, + sdlcLSStatsRIMsOut, + sdlcLSStatsProtocolErrs, + sdlcLSStatsRNRLIMITs, + sdlcLSStatsRetriesExps + } + STATUS current + DESCRIPTION + "The sdlcCorePortStatsGroup defines objects + which are common to the PortStats group of all + compliant link stations." + ::= { sdlcCoreGroups 6 } + + +-- +-- Conformance Groups for Primary Link Stations +-- + +sdlcPrimaryGroups OBJECT IDENTIFIER ::= { sdlcGroups 2 } + +sdlcPrimaryGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminPAUSE, + sdlcPortOperPAUSE, + sdlcLSAdminREPLYTO, + sdlcLSOperREPLYTO + } + STATUS current + DESCRIPTION + "The sdlcPrimaryGroup defines objects which + are common to all compliant primary link + stations." + ::= { sdlcPrimaryGroups 1 } + +sdlcPrimaryMultipointGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminSERVLIM, + sdlcPortAdminSlowPollTimer, + sdlcPortOperSlowPollMethod, + sdlcPortOperSERVLIM, + sdlcPortOperSlowPollTimer + } + STATUS current + DESCRIPTION + "The sdlcPrimaryMultipointGroup defines objects + which are common to all compliant primary link + stations that are in a multipoint topology." + ::= { sdlcPrimaryGroups 2 } + + +END diff --git a/mibs/ietf/SNMP-COMMUNITY-MIB b/mibs/ietf/SNMP-COMMUNITY-MIB new file mode 100644 index 0000000..d24f4e0 --- /dev/null +++ b/mibs/ietf/SNMP-COMMUNITY-MIB @@ -0,0 +1,443 @@ +SNMP-COMMUNITY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IpAddress, + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + snmpModules + FROM SNMPv2-SMI + RowStatus, + StorageType + FROM SNMPv2-TC + SnmpAdminString, + SnmpEngineID + FROM SNMP-FRAMEWORK-MIB + SnmpTagValue, + snmpTargetAddrEntry + FROM SNMP-TARGET-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpCommunityMIB MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 Mar 2000, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In msg body: subscribe snmpv3 + + Chair: Russ Mundy + TIS Labs at Network Associates + Postal: 3060 Washington Rd + Glenwood MD 21738 + USA + Email: mundy@tislabs.com + Phone: +1-301-854-6889 + + + + Co-editor: Rob Frye + CoSine Communications + Postal: 1200 Bridge Parkway + Redwood City, CA 94065 + USA + E-mail: rfrye@cosinecom.com + Phone: +1 703 725 1130 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, TN 37918 + E-mail: dlevi@nortelnetworks.com + Phone: +1 423 686 0432 + + Co-editor: Shawn A. Routhier + Integrated Systems Inc. + Postal: 333 North Ave 4th Floor + Wakefield, MA 01880 + E-mail: sar@epilogue.com + Phone: +1 781 245 0804 + + Co-editor: Bert Wijnen + Lucent Technologies + Postal: Schagen 33 + 3461 GL Linschoten + Netherlands + Email: bwijnen@lucent.com + Phone: +31-348-407-775 + " + + DESCRIPTION + "This MIB module defines objects to help support coexistence + between SNMPv1, SNMPv2c, and SNMPv3." + REVISION "200003060000Z" -- 6 Mar 2000 + DESCRIPTION "This version published as RFC 2576." + REVISION "199905130000Z" -- 13 May 1999 + DESCRIPTION "The Initial Revision" + ::= { snmpModules 18 } + +-- Administrative assignments **************************************** + +snmpCommunityMIBObjects OBJECT IDENTIFIER ::= { snmpCommunityMIB 1 } +snmpCommunityMIBConformance OBJECT IDENTIFIER ::= { snmpCommunityMIB 2 } + +-- +-- The snmpCommunityTable contains a database of community strings. +-- This table provides mappings between community strings, and the + + +-- parameters required for View-based Access Control. +-- + +snmpCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of community strings configured in the SNMP + engine's Local Configuration Datastore (LCD)." + ::= { snmpCommunityMIBObjects 1 } + +snmpCommunityEntry OBJECT-TYPE + SYNTAX SnmpCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular community string." + INDEX { IMPLIED snmpCommunityIndex } + ::= { snmpCommunityTable 1 } + +SnmpCommunityEntry ::= SEQUENCE { + snmpCommunityIndex SnmpAdminString, + snmpCommunityName OCTET STRING, + snmpCommunitySecurityName SnmpAdminString, + snmpCommunityContextEngineID SnmpEngineID, + snmpCommunityContextName SnmpAdminString, + snmpCommunityTransportTag SnmpTagValue, + snmpCommunityStorageType StorageType, + snmpCommunityStatus RowStatus +} + +snmpCommunityIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index value of a row in this table." + ::= { snmpCommunityEntry 1 } + +snmpCommunityName OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The community string for which a row in this table + represents a configuration." + ::= { snmpCommunityEntry 2 } + + +snmpCommunitySecurityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A human readable string representing the corresponding + value of snmpCommunityName in a Security Model + independent format." + ::= { snmpCommunityEntry 3 } + +snmpCommunityContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextEngineID indicating the location of the + context in which management information is accessed + when using the community string specified by the + corresponding instance of snmpCommunityName. + + The default value is the snmpEngineID of the entity in + which this object is instantiated." + ::= { snmpCommunityEntry 4 } + +snmpCommunityContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The context in which management information is accessed + when using the community string specified by the corresponding + instance of snmpCommunityName." + DEFVAL { ''H } -- the empty string + ::= { snmpCommunityEntry 5 } + +snmpCommunityTransportTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a set of transport endpoints + from which a command responder application will accept + management requests. If a management request containing + this community is received on a transport endpoint other + than the transport endpoints identified by this object, + the request is deemed unauthentic. + + The transports identified by this object are specified + + + in the snmpTargetAddrTable. Entries in that table + whose snmpTargetAddrTagList contains this tag value + are identified. + + If the value of this object has zero-length, transport + endpoints are not checked when authenticating messages + containing this community string." + DEFVAL { ''H } -- the empty string + ::= { snmpCommunityEntry 6 } + +snmpCommunityStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + snmpCommunityTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { snmpCommunityEntry 7 } + +snmpCommunityStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row in the snmpCommunityTable. + + An entry in this table is not qualified for activation + until instances of all corresponding columns have been + initialized, either through default values, or through + Set operations. The snmpCommunityName and + snmpCommunitySecurityName objects must be explicitly set. + + There is no restriction on setting columns in this table + when the value of snmpCommunityStatus is active(1)." + ::= { snmpCommunityEntry 8 } + +-- +-- The snmpTargetAddrExtTable +-- + +snmpTargetAddrExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetAddrExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of mask and mms values associated with the + + + snmpTargetAddrTable. + + The snmpTargetAddrExtTable augments the + snmpTargetAddrTable with a transport address mask value + and a maximum message size value. The transport address + mask allows entries in the snmpTargetAddrTable to define + a set of addresses instead of just a single address. + The maximum message size value allows the maximum + message size of another SNMP entity to be configured for + use in SNMPv1 (and SNMPv2c) transactions, where the + message format does not specify a maximum message size." + ::= { snmpCommunityMIBObjects 2 } + +snmpTargetAddrExtEntry OBJECT-TYPE + SYNTAX SnmpTargetAddrExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular mask and mms value." + AUGMENTS { snmpTargetAddrEntry } + ::= { snmpTargetAddrExtTable 1 } + +SnmpTargetAddrExtEntry ::= SEQUENCE { + snmpTargetAddrTMask OCTET STRING, + snmpTargetAddrMMS Integer32 +} + +snmpTargetAddrTMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask value associated with an entry in the + snmpTargetAddrTable. The value of this object must + have the same length as the corresponding instance of + snmpTargetAddrTAddress, or must have length 0. An + attempt to set it to any other value will result in + an inconsistentValue error. + + The value of this object allows an entry in the + snmpTargetAddrTable to specify multiple addresses. + The mask value is used to select which bits of + a transport address must match bits of the corresponding + instance of snmpTargetAddrTAddress, in order for the + transport address to match a particular entry in the + snmpTargetAddrTable. Bits which are 1 in the mask + value indicate bits in the transport address which + must match bits in the snmpTargetAddrTAddress value. + + + Bits which are 0 in the mask indicate bits in the + transport address which need not match. If the + length of the mask is 0, the mask should be treated + as if all its bits were 1 and its length were equal + to the length of the corresponding value of + snmpTargetAddrTable. + + This object may not be modified while the value of the + corresponding instance of snmpTargetAddrRowStatus is + active(1). An attempt to set this object in this case + will result in an inconsistentValue error." + DEFVAL { ''H } + ::= { snmpTargetAddrExtEntry 1 } + +snmpTargetAddrMMS OBJECT-TYPE + SYNTAX Integer32 (0|484..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size value associated with an entry + in the snmpTargetAddrTable." + DEFVAL { 484 } + ::= { snmpTargetAddrExtEntry 2 } + +-- +-- The snmpTrapAddress and snmpTrapCommunity objects are included +-- in notifications that are forwarded by a proxy, which were +-- originally received as SNMPv1 Trap messages. +-- + +snmpTrapAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The value of the agent-addr field of a Trap PDU which + is forwarded by a proxy forwarder application using + an SNMP version other than SNMPv1. The value of this + object SHOULD contain the value of the agent-addr field + from the original Trap PDU as generated by an SNMPv1 + agent." + ::= { snmpCommunityMIBObjects 3 } + +snmpTrapCommunity OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + + + "The value of the community string field of an SNMPv1 + message containing a Trap PDU which is forwarded by a + a proxy forwarder application using an SNMP version + other than SNMPv1. The value of this object SHOULD + contain the value of the community string field from + the original SNMPv1 message containing a Trap PDU as + generated by an SNMPv1 agent." + ::= { snmpCommunityMIBObjects 4 } + +-- Conformance Information ******************************************* + +snmpCommunityMIBCompliances OBJECT IDENTIFIER + ::= { snmpCommunityMIBConformance 1 } +snmpCommunityMIBGroups OBJECT IDENTIFIER + ::= { snmpCommunityMIBConformance 2 } + +-- Compliance statements + +snmpCommunityMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP engines which + implement the SNMP-COMMUNITY-MIB." + + MODULE -- this module + MANDATORY-GROUPS { snmpCommunityGroup } + + OBJECT snmpCommunityName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunitySecurityName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityContextEngineID + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityContextName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityTransportTag + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityStorageType + + + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { snmpCommunityMIBCompliances 1 } + +snmpProxyTrapForwardCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP engines which + contain a proxy forwarding application which is + capable of forwarding SNMPv1 traps using SNMPv2c + or SNMPv3." + MODULE -- this module + MANDATORY-GROUPS { snmpProxyTrapForwardGroup } + ::= { snmpCommunityMIBCompliances 2 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { + snmpCommunityName, + snmpCommunitySecurityName, + snmpCommunityContextEngineID, + snmpCommunityContextName, + snmpCommunityTransportTag, + snmpCommunityStorageType, + snmpCommunityStatus, + snmpTargetAddrTMask, + snmpTargetAddrMMS + } + STATUS current + DESCRIPTION + "A collection of objects providing for configuration + of community strings for SNMPv1 (and SNMPv2c) usage." + ::= { snmpCommunityMIBGroups 1 } + +snmpProxyTrapForwardGroup OBJECT-GROUP + OBJECTS { + snmpTrapAddress, + snmpTrapCommunity + } + STATUS current + DESCRIPTION + "Objects which are used by proxy forwarding applications + when translating traps between SNMP versions. These are + used to preserve SNMPv1-specific information when + + + translating to SNMPv2c or SNMPv3." + ::= { snmpCommunityMIBGroups 3 } + +END diff --git a/mibs/ietf/SNMP-FRAMEWORK-MIB b/mibs/ietf/SNMP-FRAMEWORK-MIB new file mode 100644 index 0000000..ca4e4e4 --- /dev/null +++ b/mibs/ietf/SNMP-FRAMEWORK-MIB @@ -0,0 +1,564 @@ +SNMP-FRAMEWORK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, + snmpModules FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +snmpFrameworkMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair & + Co-editor: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603-337-2614 + + Co-editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, California 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + + + + EMail: bwijnen@lucent.com + phone: +31 348-680-485 + " + DESCRIPTION "The SNMP Management Architecture MIB + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3411; + see the RFC itself for full legal notices. + " + + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Changes in this revision: + - Updated various administrative information. + - Corrected some typos. + - Corrected typo in description of SnmpEngineID + that led to range overlap for 127. + - Changed '255a' to '255t' in definition of + SnmpAdminString to align with current SMI. + - Reworded 'reserved' for value zero in + DESCRIPTION of SnmpSecurityModel. + - The algorithm for allocating security models + should give 256 per enterprise block, rather + than 255. + - The example engine ID of 'abcd' is not + legal. Replaced with '800002b804616263'H based + on example enterprise 696, string 'abc'. + - Added clarification that engineID should + persist across re-initializations. + This revision published as RFC 3411. + " + REVISION "199901190000Z" -- 19 January 1999 + DESCRIPTION "Updated editors' addresses, fixed typos. + Published as RFC 2571. + " + REVISION "199711200000Z" -- 20 November 1997 + DESCRIPTION "The initial version, published in RFC 2271. + " + ::= { snmpModules 10 } + + -- Textual Conventions used in the SNMP Management Architecture *** + +SnmpEngineID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + Objects of this type are for identification, not for + addressing, even though it is possible that an + address may have been used in the generation of + a specific value. + + + + The value for this object may not be all zeros or + all 'ff'H or the empty (zero length) string. + + The initial value for this object may be configured + via an operator console entry or via an algorithmic + function. In the latter case, the following + example algorithm is recommended. + + In cases where there are multiple engines on the + same system, the use of this algorithm is NOT + appropriate, as it would result in all of those + engines ending up with the same ID value. + + 1) The very first bit is used to indicate how the + rest of the data is composed. + + 0 - as defined by enterprise using former methods + that existed before SNMPv3. See item 2 below. + + 1 - as defined by this architecture, see item 3 + below. + + Note that this allows existing uses of the + engineID (also known as AgentID [RFC1910]) to + co-exist with any new uses. + + 2) The snmpEngineID has a length of 12 octets. + + The first four octets are set to the binary + equivalent of the agent's SNMP management + private enterprise number as assigned by the + Internet Assigned Numbers Authority (IANA). + For example, if Acme Networks has been assigned + { enterprises 696 }, the first four octets would + be assigned '000002b8'H. + + The remaining eight octets are determined via + one or more enterprise-specific methods. Such + methods must be designed so as to maximize the + possibility that the value of this object will + be unique in the agent's administrative domain. + For example, it may be the IP address of the SNMP + entity, or the MAC address of one of the + interfaces, with each address suitably padded + with random octets. If multiple methods are + defined, then it is recommended that the first + octet indicate the method being used and the + remaining octets be a function of the method. + + + + 3) The length of the octet string varies. + + The first four octets are set to the binary + equivalent of the agent's SNMP management + private enterprise number as assigned by the + Internet Assigned Numbers Authority (IANA). + For example, if Acme Networks has been assigned + { enterprises 696 }, the first four octets would + be assigned '000002b8'H. + + The very first bit is set to 1. For example, the + above value for Acme Networks now changes to be + '800002b8'H. + + The fifth octet indicates how the rest (6th and + following octets) are formatted. The values for + the fifth octet are: + + 0 - reserved, unused. + + 1 - IPv4 address (4 octets) + lowest non-special IP address + + 2 - IPv6 address (16 octets) + lowest non-special IP address + + 3 - MAC address (6 octets) + lowest IEEE MAC address, canonical + order + + 4 - Text, administratively assigned + Maximum remaining length 27 + + 5 - Octets, administratively assigned + Maximum remaining length 27 + + 6-127 - reserved, unused + + 128-255 - as defined by the enterprise + Maximum remaining length 27 + " + SYNTAX OCTET STRING (SIZE(5..32)) + + + + + + + + + +SnmpSecurityModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An identifier that uniquely identifies a + Security Model of the Security Subsystem within + this SNMP Management Architecture. + + The values for securityModel are allocated as + follows: + + - The zero value does not identify any particular + security model. + + - Values between 1 and 255, inclusive, are reserved + for standards-track Security Models and are + managed by the Internet Assigned Numbers Authority + (IANA). + - Values greater than 255 are allocated to + enterprise-specific Security Models. An + enterprise-specific securityModel value is defined + to be: + + enterpriseID * 256 + security model within + enterprise + + For example, the fourth Security Model defined by + the enterprise whose enterpriseID is 1 would be + 259. + + This scheme for allocation of securityModel + values allows for a maximum of 255 standards- + based Security Models, and for a maximum of + 256 Security Models per enterprise. + + It is believed that the assignment of new + securityModel values will be rare in practice + because the larger the number of simultaneously + utilized Security Models, the larger the + chance that interoperability will suffer. + Consequently, it is believed that such a range + will be sufficient. In the unlikely event that + the standards committee finds this number to be + insufficient over time, an enterprise number + can be allocated to obtain an additional 256 + possible values. + + Note that the most significant bit must be zero; + hence, there are 23 bits allocated for various + organizations to design and define non-standard + + + + securityModels. This limits the ability to + define new proprietary implementations of Security + Models to the first 8,388,608 enterprises. + + It is worthwhile to note that, in its encoded + form, the securityModel value will normally + require only a single byte since, in practice, + the leftmost bits will be zero for most messages + and sign extension is suppressed by the encoding + rules. + + As of this writing, there are several values + of securityModel defined for use with SNMP or + reserved for use with supporting MIB objects. + They are as follows: + + 0 reserved for 'any' + 1 reserved for SNMPv1 + 2 reserved for SNMPv2c + 3 User-Based Security Model (USM) + " + SYNTAX INTEGER(0 .. 2147483647) + + +SnmpMessageProcessingModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An identifier that uniquely identifies a Message + Processing Model of the Message Processing + Subsystem within this SNMP Management Architecture. + + The values for messageProcessingModel are + allocated as follows: + + - Values between 0 and 255, inclusive, are + reserved for standards-track Message Processing + Models and are managed by the Internet Assigned + Numbers Authority (IANA). + + - Values greater than 255 are allocated to + enterprise-specific Message Processing Models. + An enterprise messageProcessingModel value is + defined to be: + + enterpriseID * 256 + + messageProcessingModel within enterprise + + For example, the fourth Message Processing Model + defined by the enterprise whose enterpriseID + + + + is 1 would be 259. + + This scheme for allocating messageProcessingModel + values allows for a maximum of 255 standards- + based Message Processing Models, and for a + maximum of 256 Message Processing Models per + enterprise. + + It is believed that the assignment of new + messageProcessingModel values will be rare + in practice because the larger the number of + simultaneously utilized Message Processing Models, + the larger the chance that interoperability + will suffer. It is believed that such a range + will be sufficient. In the unlikely event that + the standards committee finds this number to be + insufficient over time, an enterprise number + can be allocated to obtain an additional 256 + possible values. + + Note that the most significant bit must be zero; + hence, there are 23 bits allocated for various + organizations to design and define non-standard + messageProcessingModels. This limits the ability + to define new proprietary implementations of + Message Processing Models to the first 8,388,608 + enterprises. + + It is worthwhile to note that, in its encoded + form, the messageProcessingModel value will + normally require only a single byte since, in + practice, the leftmost bits will be zero for + most messages and sign extension is suppressed + by the encoding rules. + + As of this writing, there are several values of + messageProcessingModel defined for use with SNMP. + They are as follows: + + 0 reserved for SNMPv1 + 1 reserved for SNMPv2c + 2 reserved for SNMPv2u and SNMPv2* + 3 reserved for SNMPv3 + " + SYNTAX INTEGER(0 .. 2147483647) + + + + + + +SnmpSecurityLevel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "A Level of Security at which SNMP messages can be + sent or with which operations are being processed; + in particular, one of: + + noAuthNoPriv - without authentication and + without privacy, + authNoPriv - with authentication but + without privacy, + authPriv - with authentication and + with privacy. + + These three values are ordered such that + noAuthNoPriv is less than authNoPriv and + authNoPriv is less than authPriv. + " + SYNTAX INTEGER { noAuthNoPriv(1), + authNoPriv(2), + authPriv(3) + } + +SnmpAdminString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION "An octet string containing administrative + information, preferably in human-readable form. + + To facilitate internationalization, this + information is represented using the ISO/IEC + IS 10646-1 character set, encoded as an octet + string using the UTF-8 transformation format + described in [RFC2279]. + + Since additional code points are added by + amendments to the 10646 standard from time + to time, implementations must be prepared to + encounter any code point from 0x00000000 to + 0x7fffffff. Byte sequences that do not + correspond to the valid UTF-8 encoding of a + code point or are outside this range are + prohibited. + + The use of control codes should be avoided. + + When it is necessary to represent a newline, + the control code sequence CR LF should be used. + + + + + The use of leading or trailing white space should + be avoided. + + For code points not directly supported by user + interface hardware or software, an alternative + means of entry and display, such as hexadecimal, + may be provided. + + For information encoded in 7-bit US-ASCII, + the UTF-8 encoding is identical to the + US-ASCII encoding. + + UTF-8 may require multiple bytes to represent a + single character / code point; thus the length + of this object in octets may be different from + the number of characters encoded. Similarly, + size constraints refer to the number of encoded + octets, not the number of characters represented + by an encoding. + + Note that when this TC is used for an object that + is used or envisioned to be used as an index, then + a SIZE restriction MUST be specified so that the + number of sub-identifiers for any object instance + does not exceed the limit of 128, as defined by + [RFC3416]. + + Note that the size of an SnmpAdminString object is + measured in octets, not characters. + " + SYNTAX OCTET STRING (SIZE (0..255)) + + +-- Administrative assignments *************************************** + +snmpFrameworkAdmin + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 1 } +snmpFrameworkMIBObjects + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 2 } +snmpFrameworkMIBConformance + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 3 } + +-- the snmpEngine Group ******************************************** + +snmpEngine OBJECT IDENTIFIER ::= { snmpFrameworkMIBObjects 1 } + + + + + + +snmpEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + + This information SHOULD be stored in non-volatile + storage so that it remains constant across + re-initializations of the SNMP engine. + " + ::= { snmpEngine 1 } + +snmpEngineBoots OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that the SNMP engine has + (re-)initialized itself since snmpEngineID + was last configured. + " + ::= { snmpEngine 2 } + +snmpEngineTime OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of seconds since the value of + the snmpEngineBoots object last changed. + When incrementing this object's value would + cause it to exceed its maximum, + snmpEngineBoots is incremented as if a + re-initialization had occurred, and this + object's value consequently reverts to zero. + " + ::= { snmpEngine 3 } + +snmpEngineMaxMessageSize OBJECT-TYPE + SYNTAX INTEGER (484..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The maximum length in octets of an SNMP message + which this SNMP engine can send or receive and + process, determined as the minimum of the maximum + message size values supported among all of the + transports available to and supported by the engine. + " + ::= { snmpEngine 4 } + + + +-- Registration Points for Authentication and Privacy Protocols ** + +snmpAuthProtocols OBJECT-IDENTITY + STATUS current + DESCRIPTION "Registration point for standards-track + authentication protocols used in SNMP Management + Frameworks. + " + ::= { snmpFrameworkAdmin 1 } + +snmpPrivProtocols OBJECT-IDENTITY + STATUS current + DESCRIPTION "Registration point for standards-track privacy + protocols used in SNMP Management Frameworks. + " + ::= { snmpFrameworkAdmin 2 } + +-- Conformance information ****************************************** + +snmpFrameworkMIBCompliances + OBJECT IDENTIFIER ::= {snmpFrameworkMIBConformance 1} +snmpFrameworkMIBGroups + OBJECT IDENTIFIER ::= {snmpFrameworkMIBConformance 2} + +-- compliance statements + +snmpFrameworkMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP Management Framework MIB. + " + MODULE -- this module + MANDATORY-GROUPS { snmpEngineGroup } + + ::= { snmpFrameworkMIBCompliances 1 } + +-- units of conformance + +snmpEngineGroup OBJECT-GROUP + OBJECTS { + snmpEngineID, + snmpEngineBoots, + snmpEngineTime, + snmpEngineMaxMessageSize + } + STATUS current + DESCRIPTION "A collection of objects for identifying and + determining the configuration and current timeliness + + + + values of an SNMP engine. + " + ::= { snmpFrameworkMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-MPD-MIB b/mibs/ietf/SNMP-MPD-MIB new file mode 100644 index 0000000..69ad202 --- /dev/null +++ b/mibs/ietf/SNMP-MPD-MIB @@ -0,0 +1,153 @@ +SNMP-MPD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + snmpModules, Counter32 FROM SNMPv2-SMI; + +snmpMPDMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + + + + EMail: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair & + Co-editor: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603-337-2614 + + Co-editor: Jeffrey Case + SNMP Research, Inc. + postal: 3001 Kimberlin Heights Road + Knoxville, TN 37920-9716 + USA + EMail: case@snmp.com + phone: +1 423-573-1434 + + Co-editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + EMail: bwijnen@lucent.com + phone: +31 348-680-485 + " + DESCRIPTION "The MIB for Message Processing and Dispatching + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3412; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Updated addresses, published as RFC 3412." + REVISION "199905041636Z" -- 4 May 1999 + DESCRIPTION "Updated addresses, published as RFC 2572." + + + + + REVISION "199709300000Z" -- 30 September 1997 + DESCRIPTION "Original version, published as RFC 2272." + ::= { snmpModules 11 } + +-- Administrative assignments *************************************** + +snmpMPDAdmin OBJECT IDENTIFIER ::= { snmpMPDMIB 1 } +snmpMPDMIBObjects OBJECT IDENTIFIER ::= { snmpMPDMIB 2 } +snmpMPDMIBConformance OBJECT IDENTIFIER ::= { snmpMPDMIB 3 } + +-- Statistics for SNMP Messages ************************************* + +snmpMPDStats OBJECT IDENTIFIER ::= { snmpMPDMIBObjects 1 } + +snmpUnknownSecurityModels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced a + securityModel that was not known to or supported by + the SNMP engine. + " + ::= { snmpMPDStats 1 } + +snmpInvalidMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because there were invalid + or inconsistent components in the SNMP message. + " + ::= { snmpMPDStats 2 } + +snmpUnknownPDUHandlers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because the PDU contained + in the packet could not be passed to an application + responsible for handling the pduType, e.g. no SNMP + application had registered for the proper + combination of the contextEngineID and the pduType. + " + ::= { snmpMPDStats 3 } + + + + +-- Conformance information ****************************************** + +snmpMPDMIBCompliances OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 1} +snmpMPDMIBGroups OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 2} + +-- Compliance statements + +snmpMPDCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP entities which + implement the SNMP-MPD-MIB. + " + MODULE -- this module + MANDATORY-GROUPS { snmpMPDGroup } + ::= { snmpMPDMIBCompliances 1 } + +snmpMPDGroup OBJECT-GROUP + OBJECTS { + snmpUnknownSecurityModels, + snmpInvalidMsgs, + snmpUnknownPDUHandlers + } + STATUS current + DESCRIPTION "A collection of objects providing for remote + monitoring of the SNMP Message Processing and + Dispatching process. + " + ::= { snmpMPDMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-NOTIFICATION-MIB b/mibs/ietf/SNMP-NOTIFICATION-MIB new file mode 100644 index 0000000..a01dd20 --- /dev/null +++ b/mibs/ietf/SNMP-NOTIFICATION-MIB @@ -0,0 +1,621 @@ +SNMP-NOTIFICATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules + FROM SNMPv2-SMI + + RowStatus, + StorageType + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + SnmpTagValue, + + + snmpTargetParamsName + FROM SNMP-TARGET-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpNotificationMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + + + + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters + used by an SNMP entity for the generation of + notifications. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Clarifications, published as + RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 13 } + +snmpNotifyObjects OBJECT IDENTIFIER ::= + { snmpNotificationMIB 1 } +snmpNotifyConformance OBJECT IDENTIFIER ::= + { snmpNotificationMIB 3 } + +-- +-- +-- The snmpNotifyObjects group +-- +-- + +snmpNotifyTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to select management targets which should + receive notifications, as well as the type of notification + which should be sent to each selected management target." + ::= { snmpNotifyObjects 1 } + +snmpNotifyEntry OBJECT-TYPE + SYNTAX SnmpNotifyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table selects a set of management targets + which should receive notifications, as well as the type of + + + + notification which should be sent to each selected + management target. + + Entries in the snmpNotifyTable are created and + deleted using the snmpNotifyRowStatus object." + INDEX { IMPLIED snmpNotifyName } + ::= { snmpNotifyTable 1 } + +SnmpNotifyEntry ::= SEQUENCE { + snmpNotifyName SnmpAdminString, + snmpNotifyTag SnmpTagValue, + snmpNotifyType INTEGER, + snmpNotifyStorageType StorageType, + snmpNotifyRowStatus RowStatus +} + +snmpNotifyName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpNotifyEntry." + ::= { snmpNotifyEntry 1 } + +snmpNotifyTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a single tag value which is used + to select entries in the snmpTargetAddrTable. Any entry + in the snmpTargetAddrTable which contains a tag value + which is equal to the value of an instance of this + object is selected. If this object contains a value + of zero length, no entries are selected." + DEFVAL { "" } + ::= { snmpNotifyEntry 2 } + +snmpNotifyType OBJECT-TYPE + SYNTAX INTEGER { + trap(1), + inform(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines the type of notification to + + + + be generated for entries in the snmpTargetAddrTable + selected by the corresponding instance of + snmpNotifyTag. This value is only used when + generating notifications, and is ignored when + using the snmpTargetAddrTable for other purposes. + + If the value of this object is trap(1), then any + messages generated for selected rows will contain + Unconfirmed-Class PDUs. + + If the value of this object is inform(2), then any + messages generated for selected rows will contain + Confirmed-Class PDUs. + + Note that if an SNMP entity only supports + generation of Unconfirmed-Class PDUs (and not + Confirmed-Class PDUs), then this object may be + read-only." + DEFVAL { trap } + ::= { snmpNotifyEntry 3 } + +snmpNotifyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyEntry 4 } + +snmpNotifyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5)." + ::= { snmpNotifyEntry 5 } + +snmpNotifyFilterProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyFilterProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table is used to associate a notification filter + profile with a particular set of target parameters." + ::= { snmpNotifyObjects 2 } + +snmpNotifyFilterProfileEntry OBJECT-TYPE + SYNTAX SnmpNotifyFilterProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table indicates the name of the filter + profile to be used when generating notifications using + the corresponding entry in the snmpTargetParamsTable. + + Entries in the snmpNotifyFilterProfileTable are created + and deleted using the snmpNotifyFilterProfileRowStatus + object." + INDEX { IMPLIED snmpTargetParamsName } + ::= { snmpNotifyFilterProfileTable 1 } + +SnmpNotifyFilterProfileEntry ::= SEQUENCE { + snmpNotifyFilterProfileName SnmpAdminString, + snmpNotifyFilterProfileStorType StorageType, + snmpNotifyFilterProfileRowStatus RowStatus +} + +snmpNotifyFilterProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the filter profile to be used when generating + notifications using the corresponding entry in the + snmpTargetAddrTable." + ::= { snmpNotifyFilterProfileEntry 1 } + +snmpNotifyFilterProfileStorType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyFilterProfileEntry 2 } + +snmpNotifyFilterProfileRowStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the + snmpNotifyFilterProfileRowStatus column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding instance of + snmpNotifyFilterProfileName has been set." + ::= { snmpNotifyFilterProfileEntry 3 } + +snmpNotifyFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of filter profiles. Filter profiles are used + to determine whether particular management targets should + receive particular notifications. + + When a notification is generated, it must be compared + with the filters associated with each management target + which is configured to receive notifications, in order to + determine whether it may be sent to each such management + target. + + A more complete discussion of notification filtering + can be found in section 6. of [SNMP-APPL]." + ::= { snmpNotifyObjects 3 } + +snmpNotifyFilterEntry OBJECT-TYPE + SYNTAX SnmpNotifyFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An element of a filter profile. + + Entries in the snmpNotifyFilterTable are created and + deleted using the snmpNotifyFilterRowStatus object." + + + + INDEX { snmpNotifyFilterProfileName, + IMPLIED snmpNotifyFilterSubtree } + ::= { snmpNotifyFilterTable 1 } + +SnmpNotifyFilterEntry ::= SEQUENCE { + snmpNotifyFilterSubtree OBJECT IDENTIFIER, + snmpNotifyFilterMask OCTET STRING, + snmpNotifyFilterType INTEGER, + snmpNotifyFilterStorageType StorageType, + snmpNotifyFilterRowStatus RowStatus +} + +snmpNotifyFilterSubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MIB subtree which, when combined with the corresponding + instance of snmpNotifyFilterMask, defines a family of + subtrees which are included in or excluded from the + filter profile." + ::= { snmpNotifyFilterEntry 1 } + +snmpNotifyFilterMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The bit mask which, in combination with the corresponding + instance of snmpNotifyFilterSubtree, defines a family of + subtrees which are included in or excluded from the + filter profile. + + Each bit of this bit mask corresponds to a + sub-identifier of snmpNotifyFilterSubtree, with the + most significant bit of the i-th octet of this octet + string value (extended if necessary, see below) + corresponding to the (8*i - 7)-th sub-identifier, and + the least significant bit of the i-th octet of this + octet string corresponding to the (8*i)-th + sub-identifier, where i is in the range 1 through 16. + + Each bit of this bit mask specifies whether or not + the corresponding sub-identifiers must match when + determining if an OBJECT IDENTIFIER matches this + family of filter subtrees; a '1' indicates that an + exact match must occur; a '0' indicates 'wild card', + i.e., any sub-identifier value matches. + + + + Thus, the OBJECT IDENTIFIER X of an object instance + is contained in a family of filter subtrees if, for + each sub-identifier of the value of + snmpNotifyFilterSubtree, either: + + the i-th bit of snmpNotifyFilterMask is 0, or + + the i-th sub-identifier of X is equal to the i-th + sub-identifier of the value of + snmpNotifyFilterSubtree. + + If the value of this bit mask is M bits long and + there are more than M sub-identifiers in the + corresponding instance of snmpNotifyFilterSubtree, + then the bit mask is extended with 1's to be the + required length. + + Note that when the value of this object is the + zero-length string, this extension rule results in + a mask of all-1's being used (i.e., no 'wild card'), + and the family of filter subtrees is the one + subtree uniquely identified by the corresponding + instance of snmpNotifyFilterSubtree." + DEFVAL { ''H } + ::= { snmpNotifyFilterEntry 2 } + +snmpNotifyFilterType OBJECT-TYPE + SYNTAX INTEGER { + included(1), + excluded(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the family of filter subtrees + defined by this entry are included in or excluded from a + filter. A more detailed discussion of the use of this + object can be found in section 6. of [SNMP-APPL]." + DEFVAL { included } + ::= { snmpNotifyFilterEntry 3 } + +snmpNotifyFilterStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + + + + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyFilterEntry 4 } + +snmpNotifyFilterRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5)." + ::= { snmpNotifyFilterEntry 5 } + +-- +-- +-- Conformance information +-- +-- + +snmpNotifyCompliances OBJECT IDENTIFIER ::= + { snmpNotifyConformance 1 } +snmpNotifyGroups OBJECT IDENTIFIER ::= + { snmpNotifyConformance 2 } + +-- +-- +-- Compliance statements +-- +-- + +snmpNotifyBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for minimal SNMP entities which + implement only SNMP Unconfirmed-Class notifications 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 Unconfirmed-Class notifications 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 } + +snmpNotifyFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which either + implement only SNMP Confirmed-Class notifications, or both + SNMP Unconfirmed-Class and Confirmed-Class notifications, + + + + plus filtering and read-create operations on all related + tables." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup, + snmpTargetResponseGroup } + MODULE -- This Module + MANDATORY-GROUPS { snmpNotifyGroup, + snmpNotifyFilterGroup } + ::= { snmpNotifyCompliances 3 } + +snmpNotifyGroup OBJECT-GROUP + OBJECTS { + snmpNotifyTag, + snmpNotifyType, + snmpNotifyStorageType, + snmpNotifyRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects for selecting which management + targets are used for generating notifications, and the + type of notification to be generated for each selected + management target." + ::= { snmpNotifyGroups 1 } + +snmpNotifyFilterGroup OBJECT-GROUP + OBJECTS { + snmpNotifyFilterProfileName, + snmpNotifyFilterProfileStorType, + snmpNotifyFilterProfileRowStatus, + snmpNotifyFilterMask, + snmpNotifyFilterType, + snmpNotifyFilterStorageType, + snmpNotifyFilterRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration + of notification filters." + ::= { snmpNotifyGroups 2 } + +END diff --git a/mibs/ietf/SNMP-PROXY-MIB b/mibs/ietf/SNMP-PROXY-MIB new file mode 100644 index 0000000..4a4a6ba --- /dev/null +++ b/mibs/ietf/SNMP-PROXY-MIB @@ -0,0 +1,305 @@ +SNMP-PROXY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules + FROM SNMPv2-SMI + + RowStatus, + StorageType + FROM SNMPv2-TC + + SnmpEngineID, + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + SnmpTagValue + FROM SNMP-TARGET-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpProxyMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters + used by a proxy forwarding application. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Clarifications, published as + RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 14 } + +snmpProxyObjects OBJECT IDENTIFIER ::= { snmpProxyMIB 1 } +snmpProxyConformance OBJECT IDENTIFIER ::= { snmpProxyMIB 3 } + +-- + + +-- +-- The snmpProxyObjects group +-- +-- + +snmpProxyTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpProxyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of translation parameters used by proxy forwarder + applications for forwarding SNMP messages." + ::= { snmpProxyObjects 2 } + +snmpProxyEntry OBJECT-TYPE + SYNTAX SnmpProxyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of translation parameters used by a proxy forwarder + application for forwarding SNMP messages. + + Entries in the snmpProxyTable are created and deleted + using the snmpProxyRowStatus object." + INDEX { IMPLIED snmpProxyName } + ::= { snmpProxyTable 1 } + +SnmpProxyEntry ::= SEQUENCE { + snmpProxyName SnmpAdminString, + snmpProxyType INTEGER, + snmpProxyContextEngineID SnmpEngineID, + snmpProxyContextName SnmpAdminString, + snmpProxyTargetParamsIn SnmpAdminString, + snmpProxySingleTargetOut SnmpAdminString, + snmpProxyMultipleTargetOut SnmpTagValue, + snmpProxyStorageType StorageType, + snmpProxyRowStatus RowStatus +} + +snmpProxyName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpProxyEntry." + ::= { snmpProxyEntry 1 } + + + +snmpProxyType OBJECT-TYPE + SYNTAX INTEGER { + read(1), + write(2), + trap(3), + inform(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of message that may be forwarded using + the translation parameters defined by this entry." + ::= { snmpProxyEntry 2 } + +snmpProxyContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextEngineID contained in messages that + may be forwarded using the translation parameters + defined by this entry." + ::= { snmpProxyEntry 3 } + +snmpProxyContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextName contained in messages that may be + forwarded using the translation parameters defined + by this entry. + + This object is optional, and if not supported, the + contextName contained in a message is ignored when + selecting an entry in the snmpProxyTable." + ::= { snmpProxyEntry 4 } + +snmpProxyTargetParamsIn OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects an entry in the snmpTargetParamsTable. + The selected entry is used to determine which row of the + snmpProxyTable to use for forwarding received messages." + ::= { snmpProxyEntry 5 } + + + + +snmpProxySingleTargetOut OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects a management target defined in the + snmpTargetAddrTable (in the SNMP-TARGET-MIB). The + selected target is defined by an entry in the + snmpTargetAddrTable whose index value (snmpTargetAddrName) + is equal to this object. + + This object is only used when selection of a single + target is required (i.e. when forwarding an incoming + read or write request)." + ::= { snmpProxyEntry 6 } + +snmpProxyMultipleTargetOut OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects a set of management targets defined + in the snmpTargetAddrTable (in the SNMP-TARGET-MIB). + + This object is only used when selection of multiple + targets is required (i.e. when forwarding an incoming + notification)." + ::= { snmpProxyEntry 7 } + +snmpProxyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpProxyEntry 8 } + +snmpProxyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + + + set this object to either createAndGo(4) or + createAndWait(5). + + The following objects may not be modified while the + value of this object is active(1): + - snmpProxyType + - snmpProxyContextEngineID + - snmpProxyContextName + - snmpProxyTargetParamsIn + - snmpProxySingleTargetOut + - snmpProxyMultipleTargetOut" + ::= { snmpProxyEntry 9 } + +-- +-- +-- Conformance information +-- +-- + +snmpProxyCompliances OBJECT IDENTIFIER ::= + { snmpProxyConformance 1 } +snmpProxyGroups OBJECT IDENTIFIER ::= + { snmpProxyConformance 2 } + +-- +-- +-- Compliance statements +-- +-- + +snmpProxyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which include + a proxy forwarding application." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup, + snmpTargetResponseGroup } + MODULE -- This Module + MANDATORY-GROUPS { snmpProxyGroup } + ::= { snmpProxyCompliances 1 } + +snmpProxyGroup OBJECT-GROUP + OBJECTS { + snmpProxyType, + snmpProxyContextEngineID, + snmpProxyContextName, + snmpProxyTargetParamsIn, + + + + snmpProxySingleTargetOut, + snmpProxyMultipleTargetOut, + snmpProxyStorageType, + snmpProxyRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration of + management target translation parameters for use by + proxy forwarder applications." + ::= { snmpProxyGroups 3 } + +END diff --git a/mibs/ietf/SNMP-REPEATER-MIB b/mibs/ietf/SNMP-REPEATER-MIB new file mode 100644 index 0000000..ffcb719 --- /dev/null +++ b/mibs/ietf/SNMP-REPEATER-MIB @@ -0,0 +1,3268 @@ +SNMP-REPEATER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter32, Counter64, Integer32, Gauge32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI + TimeStamp, DisplayString, MacAddress, TEXTUAL-CONVENTION, + RowStatus, TestAndIncr + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + OwnerString + FROM IF-MIB; + + +snmpRptrMod MODULE-IDENTITY + LAST-UPDATED "9609140000Z" + ORGANIZATION "IETF HUB MIB Working Group" + CONTACT-INFO + "WG E-mail: hubmib@hprnd.rose.hp.com + + Chair: Dan Romascanu + Postal: Madge Networks (Israel) Ltd. + Atidim Technology Park, Bldg. 3 + Tel Aviv 61131, Israel + Tel: 972-3-6458414, 6458458 + Fax: 972-3-6487146 + E-mail: dromasca@madge.com + + Editor: Kathryn de Graaf + Postal: 3Com Corporation + 118 Turnpike Rd. + Southborough, MA 01772 USA + Tel: (508)229-1627 + Fax: (508)490-5882 + E-mail: kdegraaf@isd.3com.com" + DESCRIPTION + "Management information for 802.3 repeaters. + + The following references are used throughout + this MIB module: + + [IEEE 802.3 Std] + refers to IEEE 802.3/ISO 8802-3 Information + processing systems - Local area networks - + Part 3: Carrier sense multiple access with + collision detection (CSMA/CD) access method + and physical layer specifications (1993). + + [IEEE 802.3 Mgt] + refers to IEEE 802.3u-1995, '10 Mb/s & + 100 Mb/s Management, Section 30,' + Supplement to ANSI/IEEE 802.3. + + The following terms are used throughout this + MIB module. For complete formal definitions, + the IEEE 802.3 standards should be consulted + wherever possible: + + System - A managed entity compliant with this + MIB, and incorporating at least one managed + 802.3 repeater. + + Chassis - An enclosure for one managed repeater, + part of a managed repeater, or several managed + repeaters. It typically contains an integral + power supply and a variable number of available + module slots. + + Repeater-unit - The portion of the repeater set + that is inboard of the physical media interfaces. + The physical media interfaces (MAUs, AUIs) may be + physically separated from the repeater-unit, or + they may be integrated into the same physical + package. + + Trivial repeater-unit - An isolated port that can + gather statistics. + + Group - A recommended, but optional, entity + defined by the IEEE 802.3 management standard, + in order to support a modular numbering scheme. + The classical example allows an implementor to + represent field-replaceable units as groups of + ports, with the port numbering matching the + modular hardware implementation. + + System interconnect segment - An internal + segment allowing interconnection of ports + belonging to different physical entities + into the same logical manageable repeater. + Examples of implementation might be + backplane busses in modular hubs, or + chaining cables in stacks of hubs. + Stack - A scalable system that may include + managed repeaters, in which modularity is + achieved by interconnecting a number of + different chassis. + + Module - A building block in a modular + chassis. It typically maps into one 'slot'; + however, the range of configurations may be + very large, with several modules entering + one slot, or one module covering several + slots. + " + REVISION "9309010000Z" + DESCRIPTION + "Published as RFC 1516" + REVISION "9210010000Z" + DESCRIPTION + "Published as RFC 1368" + ::= { snmpDot3RptrMgt 5 } + + + +snmpDot3RptrMgt OBJECT IDENTIFIER ::= { mib-2 22 } + + +OptMacAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Either a 6 octet address in the `canonical' + order defined by IEEE 802.1a, i.e., as if it + were transmitted least significant bit first + if a value is available or a zero length string." + REFERENCE + "See MacAddress in SNMPv2-TC. The only difference + is that a zero length string is allowed as a value + for OptMacAddr and not for MacAddress." + SYNTAX OCTET STRING (SIZE (0 | 6)) + + + +-- Basic information at the repeater, group, and port level. + +rptrBasicPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 1 } + rptrRptrInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 1 } + rptrGroupInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 2 } + rptrPortInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 3 } + rptrAllRptrInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 4 } + +-- Monitoring information at the repeater, group, and port level. +rptrMonitorPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 2 } + rptrMonitorRptrInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 1 } + rptrMonitorGroupInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 2 } + rptrMonitorPortInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 3 } + rptrMonitorAllRptrInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 4 } + +-- Address tracking information at the repeater, group, +-- and port level. +rptrAddrTrackPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 3 } + rptrAddrTrackRptrInfo + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 1 } + rptrAddrTrackGroupInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 2 } + rptrAddrTrackPortInfo + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 3 } + +-- TopN information. +rptrTopNPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 4 } + rptrTopNRptrInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrTopNPackage 1 } + rptrTopNGroupInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrTopNPackage 2 } + rptrTopNPortInfo + OBJECT IDENTIFIER ::= { rptrTopNPackage 3 } + + +-- Old version of basic information at the repeater level. +-- +-- In a system containing a single managed repeater, +-- configuration, status, and control objects for the overall +-- repeater. + +-- +-- The objects contained under the rptrRptrInfo subtree are +-- intended for backwards compatibility with implementations of +-- RFC 1516 [11]. In newer implementations (both single- and +-- multiple-repeater implementations) the rptrInfoTable should +-- be implemented. It is the preferred source of this information, +-- as it contains the values for all repeaters managed by the +-- agent. In all cases, the objects in the rptrRptrInfo subtree +-- are duplicates of the corresponding objects in the first entry +-- of the rptrInfoTable. + +rptrGroupCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The rptrGroupCapacity is the number of groups + that can be contained within the repeater. Within + each managed repeater, the groups are uniquely + numbered in the range from 1 to rptrGroupCapacity. + + Some groups may not be present in the repeater, in + which case the actual number of groups present + will be less than rptrGroupCapacity. The number + of groups present will never be greater than + rptrGroupCapacity. + + Note: In practice, this will generally be the + number of field-replaceable units (i.e., modules, + cards, or boards) that can fit in the physical + repeater enclosure, and the group numbers will + correspond to numbers marked on the physical + enclosure." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.3, + aRepeaterGroupCapacity." + ::= { rptrRptrInfo 1 } + +rptrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- undefined or unknown + ok(2), -- no known failures + rptrFailure(3), -- repeater-related failure + groupFailure(4), -- group-related failure + portFailure(5), -- port-related failure + generalFailure(6) -- failure, unspecified type + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The rptrOperStatus object indicates the + operational state of the repeater. The + rptrHealthText object may be consulted for more + specific information about the state of the + repeater's health. + + In the case of multiple kinds of failures (e.g., + repeater failure and port failure), the value of + this attribute shall reflect the highest priority + failure in the following order, listed highest + priority first: + + rptrFailure(3) + groupFailure(4) + portFailure(5) + generalFailure(6)." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState." + ::= { rptrRptrInfo 2 } + +rptrHealthText OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The health text object is a text string that + provides information relevant to the operational + state of the repeater. Agents may use this string + to provide detailed information on current + failures, including how they were detected, and/or + instructions for problem resolution. The contents + are agent-specific." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.6, aRepeaterHealthText." + ::= { rptrRptrInfo 3 } + +rptrReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Setting this object to reset(2) causes a + transition to the START state of Fig 9-2 in + section 9 [IEEE 802.3 Std] for a 10Mb/s repeater, + and the START state of Fig 27-2 in section 27 + of that standard for a 100Mb/s repeater. + + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to allow + the SNMP response to be transmitted. In any + event, the SNMP response must be transmitted. + + This action does not reset the management counters + defined in this document nor does it affect the + portAdminStatus parameters. Included in this + action is the execution of a disruptive Self-Test + with the following characteristics: a) The nature + of the tests is not specified. b) The test resets + the repeater but without affecting management + information about the repeater. c) The test does + not inject packets onto any segment. d) Packets + received during the test may or may not be + transferred. e) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + rptrOperStatus and rptrHealthText), and send a + rptrHealth trap." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.1, acResetRepeater." + ::= { rptrRptrInfo 4 } + +rptrNonDisruptTest OBJECT-TYPE + SYNTAX INTEGER { + noSelfTest(1), + selfTest(2) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Setting this object to selfTest(2) causes the + repeater to perform a agent-specific, non- + disruptive self-test that has the following + characteristics: a) The nature of the tests is + not specified. b) The test does not change the + state of the repeater or management information + about the repeater. c) The test does not inject + packets onto any segment. d) The test does not + prevent the relay of any packets. e) The test + does not interfere with management functions. + + After performing this test, the agent will update + the repeater health information (including + rptrOperStatus and rptrHealthText) and send a + rptrHealth trap. + + Note that this definition allows returning an + 'okay' result after doing a trivial test. + + Setting this object to noSelfTest(1) has no + effect. The agent will always return the value + noSelfTest(1) when this object is read." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.2, + acExecuteNonDisruptiveSelfTest." + ::= { rptrRptrInfo 5 } + +rptrTotalPartitionedPorts OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object returns the total number of ports in + the repeater whose current state meets all three + of the following criteria: rptrPortOperStatus + does not have the value notPresent(3), + rptrPortAdminStatus is enabled(1), and + rptrPortAutoPartitionState is autoPartitioned(2)." + ::= { rptrRptrInfo 6 } + +-- Basic information at the group level. +-- +-- Configuration and status objects for each +-- managed group in the system, independent +-- of whether there is one or more managed +-- repeater-units in the system. + +rptrGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information about + the groups of ports." + ::= { rptrGroupInfo 1 } + +rptrGroupEntry OBJECT-TYPE + SYNTAX RptrGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single group of ports." + INDEX { rptrGroupIndex } + ::= { rptrGroupTable 1 } + +RptrGroupEntry ::= + SEQUENCE { + rptrGroupIndex + Integer32, + rptrGroupDescr + DisplayString, + rptrGroupObjectID + OBJECT IDENTIFIER, + rptrGroupOperStatus + INTEGER, + rptrGroupLastOperStatusChange + TimeTicks, + rptrGroupPortCapacity + Integer32 + } + +rptrGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group within the + system for which this entry contains + information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.2.1.1, aGroupID." + ::= { rptrGroupEntry 1 } + +rptrGroupDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + A textual description of the group. This value + should include the full name and version + identification of the group's hardware type and + indicate how the group is differentiated from + other types of groups in the repeater. Plug-in + Module, Rev A' or 'Barney Rubble 10BASE-T 4-port + SIMM socket Version 2.1' are examples of valid + group descriptions. + + It is mandatory that this only contain printable + ASCII characters." + ::= { rptrGroupEntry 2 } + +rptrGroupObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + group. This value may be allocated within the SMI + enterprises subtree (1.3.6.1.4.1) and provides a + straight-forward and unambiguous means for + determining what kind of group is being managed. + + For example, this object could take the value + 1.3.6.1.4.1.4242.1.2.14 if vendor 'Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.4242, + and had assigned the identifier + 1.3.6.1.4.1.4242.1.2.14 to its 'Wilma Flintstone + 6-Port FOIRL Plug-in Module.'" + ::= { rptrGroupEntry 3 } + +rptrGroupOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + operational(2), + malfunctioning(3), + notPresent(4), + underTest(5), + resetInProgress(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the operational status + of the group. + + A status of notPresent(4) indicates that the group + is temporarily or permanently physically and/or + logically not a part of the repeater. It is an + implementation-specific matter as to whether the + agent effectively removes notPresent entries from + the table. + + A status of operational(2) indicates that the + group is functioning, and a status of + malfunctioning(3) indicates that the group is + malfunctioning in some way." + ::= { rptrGroupEntry 4 } + +rptrGroupLastOperStatusChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An object that contains the value of sysUpTime at + the time when the last of the following occurred: + 1) the agent cold- or warm-started; + 2) the row for the group was created (such + as when the group was added to the system); or + 3) the value of rptrGroupOperStatus for the + group changed. + + A value of zero indicates that the group's + operational status has not changed since the agent + last restarted." + ::= { rptrGroupEntry 5 } + +rptrGroupPortCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrGroupPortCapacity is the number of ports + that can be contained within the group. Valid + range is 1-2147483647. Within each group, the + ports are uniquely numbered in the range from 1 to + rptrGroupPortCapacity. + + Some ports may not be present in the system, in + which case the actual number of ports present + will be less than the value of rptrGroupPortCapacity. + The number of ports present in the group will never + be greater than the value of rptrGroupPortCapacity. + + Note: In practice, this will generally be the + number of ports on a module, card, or board, and + the port numbers will correspond to numbers marked + on the physical embodiment." + REFERENCE + "IEEE 802.3 Mgt, 30.4.2.1.2, aGroupPortCapacity." + ::= { rptrGroupEntry 6 } + + +-- Basic information at the port level. +-- +-- Configuration and status objects for +-- each managed repeater port in the system, +-- independent of whether there is one or more +-- managed repeater-units in the system. + +rptrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information about + the repeater ports in the system. The number of + entries is independent of the number of repeaters + in the managed system." + ::= { rptrPortInfo 1 } + +rptrPortEntry OBJECT-TYPE + SYNTAX RptrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single port." + INDEX { rptrPortGroupIndex, rptrPortIndex } + ::= { rptrPortTable 1 } + +RptrPortEntry ::= + SEQUENCE { + rptrPortGroupIndex + Integer32, + rptrPortIndex + Integer32, + rptrPortAdminStatus + INTEGER, + rptrPortAutoPartitionState + INTEGER, + rptrPortOperStatus + INTEGER, + rptrPortRptrId + Integer32 + } + +rptrPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrPortEntry 1 } + +rptrPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information. This + identifies the port independently from the repeater + it may be attached to. The numbering scheme for + ports is implementation specific; however, this + value can never be greater than + rptrGroupPortCapacity for the associated group." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrPortEntry 2 } + +rptrPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to disabled(2) disables the + port. A disabled port neither transmits nor + receives. Once disabled, a port must be + explicitly enabled to restore operation. A port + which is disabled when power is lost or when a + reset is exerted shall remain disabled when normal + operation resumes. + + The admin status takes precedence over auto- + partition and functionally operates between the + auto-partition mechanism and the AUI/PMA. + + Setting this object to enabled(1) enables the port + and exerts a BEGIN on the port's auto-partition + state machine. + + (In effect, when a port is disabled, the value of + rptrPortAutoPartitionState for that port is frozen + until the port is next enabled. When the port + becomes enabled, the rptrPortAutoPartitionState + becomes notAutoPartitioned(1), regardless of its + pre-disabling state.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.2, aPortAdminState + and 30.4.3.2.1, acPortAdminControl." + ::= { rptrPortEntry 3 } + +rptrPortAutoPartitionState OBJECT-TYPE + SYNTAX INTEGER { + notAutoPartitioned(1), + autoPartitioned(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The autoPartitionState flag indicates whether the + port is currently partitioned by the repeater's + auto-partition protection. + + The conditions that cause port partitioning are + specified in partition state machine in Sections + 9 and 27 of [IEEE 802.3 Std]. They are not + differentiated here." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.3, aAutoPartitionState." + ::= { rptrPortEntry 4 } + +rptrPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { + operational(1), + notOperational(2), + notPresent(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the port's operational + status. The notPresent(3) status indicates the + port is physically removed (note this may or may + not be possible depending on the type of port.) + The operational(1) status indicates that the port + is enabled (see rptrPortAdminStatus) and working, + even though it might be auto-partitioned (see + rptrPortAutoPartitionState). + + If this object has the value operational(1) and + rptrPortAdminStatus is set to disabled(2), it is + expected that this object's value will soon change + to notOperational(2)." + ::= { rptrPortEntry 5 } + +rptrPortRptrId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater to + which this port belongs. The repeater + identified by a particular value of this object + is the same as that identified by the same + value of rptrInfoId. A value of zero + indicates that this port currently is not + a member of any repeater." + ::= { rptrPortEntry 6 } + + +-- New version of basic information at the repeater level. +-- +-- Configuration, status, and control objects for +-- each managed repeater in the system. + +rptrInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each + non-trivial repeater. The number of entries + depends on the physical configuration of the + managed system." + ::= { rptrAllRptrInfo 1 } + +rptrInfoEntry OBJECT-TYPE + SYNTAX RptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single non-trivial repeater." + INDEX { rptrInfoId } + ::= { rptrInfoTable 1 } + +RptrInfoEntry ::= + SEQUENCE { + rptrInfoId + Integer32, + rptrInfoRptrType + INTEGER, + rptrInfoOperStatus + INTEGER, + rptrInfoReset + INTEGER, + rptrInfoPartitionedPorts + Gauge32, + rptrInfoLastChange + TimeStamp + } + +rptrInfoId OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater for which + this entry contains information." + ::= { rptrInfoEntry 1 } + +rptrInfoRptrType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- undefined or unknown + tenMb(2), + onehundredMbClassI(3), + onehundredMbClassII(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrInfoRptrType returns a value that identifies + the CSMA/CD repeater type." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.2, aRepeaterType." + ::= { rptrInfoEntry 2 } + +rptrInfoOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ok(2), + failure(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrInfoOperStatus object indicates the + operational state of the repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState." + ::= { rptrInfoEntry 3 } + +rptrInfoReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to reset(2) causes a + transition to the START state of Fig 9-2 in + section 9 [IEEE 802.3 Std] for a 10Mb/s repeater, + and to the START state of Fig 27-2 in section 27 + of that standard for a 100Mb/s repeater. + + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to allow + the SNMP response to be transmitted. In any + event, the SNMP response must be transmitted. + + This action does not reset the management counters + defined in this document nor does it affect the + portAdminStatus parameters. Included in this + action is the execution of a disruptive Self-Test + with the following characteristics: a) The nature + of the tests is not specified. b) The test resets + the repeater but without affecting management + information about the repeater. c) The test does + not inject packets onto any segment. d) Packets + received during the test may or may not be + transferred. e) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + rptrInfoOperStatus), and send a rptrInfoResetEvent + notification." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.1, acResetRepeater." + ::= { rptrInfoEntry 4 } + +rptrInfoPartitionedPorts OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of ports in + the repeater whose current state meets all three + of the following criteria: rptrPortOperStatus + does not have the value notPresent(3), + rptrPortAdminStatus is enabled(1), and + rptrPortAutoPartitionState is autoPartitioned(2)." + ::= { rptrInfoEntry 5 } + +rptrInfoLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when any of the following + conditions occurred: + 1) agent cold- or warm-started; + 2) this instance of repeater was created + (such as when a device or module was + added to the system); + 3) a change in the value of rptrInfoOperStatus; + 4) ports were added or removed as members of + the repeater; or + 5) any of the counters associated with this + repeater had a discontinuity." + ::= { rptrInfoEntry 6 } + + + + +-- +-- Old version of statistics at the repeater level. +-- +-- Performance monitoring statistics for the repeater +-- +-- In a system containing a single managed repeater-unit, +-- the statistics object for the repeater-unit. + +-- The objects contained under the rptrMonitorRptrInfo subtree are +-- intended for backwards compatibility with implementations of +-- RFC 1516 [11]. In newer implementations (both single- and +-- multiple-repeater implementations), the rptrMonitorTable will +-- be implemented. It is the preferred source of this information, +-- as it contains the values for all repeaters managed by the +-- agent. In all cases, the objects in the rptrMonitorRptrInfo +-- subtree are duplicates of the corresponding objects in the +-- first entry of the rptrMonitorTable. + + +rptrMonitorTransmitCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + For a clause 9 (10Mb/s) repeater, this counter + is incremented every time the repeater state + machine enters the TRANSMIT COLLISION state + from any state other than ONE PORT LEFT + (Ref: Fig 9-2 [IEEE 802.3 Std]). + + For a clause 27 repeater, this counter is + incremented every time the repeater core state + diagram enters the Jam state as a result of + Activity(ALL) > 1 (fig 27-2 [IEEE 802.3 Std]). + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater and 1.6 + hours in a 100Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.8, aTransmitCollisions." + ::= { rptrMonitorRptrInfo 1 } + + +-- Statistics at the group level. +-- +-- In a system containing a single managed repeater-unit, +-- the statistics objects for each group. + +rptrMonitorGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitorGroupEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Table of performance and error statistics for the + groups within the repeater. The number of entries + is the same as that in the rptrGroupTable." + ::= { rptrMonitorGroupInfo 1 } + +rptrMonitorGroupEntry OBJECT-TYPE + SYNTAX RptrMonitorGroupEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing total + performance and error statistics for a single + group. Regular retrieval of the information in + this table provides a means of tracking the + performance and health of the networked devices + attached to this group's ports. + + The counters in this table are redundant in the + sense that they are the summations of information + already available through other objects. However, + these sums provide a considerable optimization of + network management traffic over the otherwise + necessary retrieval of the individual counters + included in each sum. + + Note: Group-level counters are + deprecated in this MIB. It is recommended + that management applications instead use + the repeater-level counters contained in + the rptrMonTable." + INDEX { rptrMonitorGroupIndex } + ::= { rptrMonitorGroupTable 1 } + +RptrMonitorGroupEntry ::= + SEQUENCE { + rptrMonitorGroupIndex + Integer32, + rptrMonitorGroupTotalFrames + Counter32, + rptrMonitorGroupTotalOctets + Counter32, + rptrMonitorGroupTotalErrors + Counter32 + } + +rptrMonitorGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object identifies the group within the + repeater for which this entry contains + information." + ::= { rptrMonitorGroupEntry 1 } + +rptrMonitorGroupTotalFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of frames of valid frame length + that have been received on the ports in this group + and for which the FCSError and CollisionEvent + signals were not asserted. This counter is the + summation of the values of the + rptrMonitorPortReadableFrames counters for all of + the ports in the group. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours in a 10Mb/s repeater." + ::= { rptrMonitorGroupEntry 2 } + +rptrMonitorGroupTotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of octets contained in the valid + frames that have been received on the ports in + this group. This counter is the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter is 58 minutes in a + 10Mb/s repeater." + ::= { rptrMonitorGroupEntry 3 } + +rptrMonitorGroupTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of errors which have occurred on + all of the ports in this group. This counter is + the summation of the values of the + rptrMonitorPortTotalErrors counters for all of the + ports in the group." + ::= { rptrMonitorGroupEntry 4 } + + +-- Statistics at the port level. +-- + +rptrMonitorPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitorPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of performance and error statistics for the + ports. The number of entries is the same as that + in the rptrPortTable. + + The columnar object rptrMonitorPortLastChange + is used to indicate possible discontinuities + of counter type columnar objects in the table." + ::= { rptrMonitorPortInfo 1 } + +rptrMonitorPortEntry OBJECT-TYPE + SYNTAX RptrMonitorPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing performance and + error statistics for a single port." + INDEX { rptrMonitorPortGroupIndex, rptrMonitorPortIndex } + ::= { rptrMonitorPortTable 1 } + +RptrMonitorPortEntry ::= + SEQUENCE { + rptrMonitorPortGroupIndex + Integer32, + rptrMonitorPortIndex + Integer32, + rptrMonitorPortReadableFrames + Counter32, + rptrMonitorPortReadableOctets + Counter32, + rptrMonitorPortFCSErrors + Counter32, + rptrMonitorPortAlignmentErrors + Counter32, + rptrMonitorPortFrameTooLongs + Counter32, + rptrMonitorPortShortEvents + Counter32, + rptrMonitorPortRunts + Counter32, + rptrMonitorPortCollisions + Counter32, + rptrMonitorPortLateEvents + Counter32, + rptrMonitorPortVeryLongEvents + Counter32, + rptrMonitorPortDataRateMismatches + Counter32, + rptrMonitorPortAutoPartitions + Counter32, + rptrMonitorPortTotalErrors + Counter32, + rptrMonitorPortLastChange + TimeStamp + } + +rptrMonitorPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrMonitorPortEntry 1 } + +rptrMonitorPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrMonitorPortEntry 2 } + +rptrMonitorPortReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of frames of valid + frame length that have been received on this port. + This counter is incremented by one for each frame + received on this port whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: IEEE 802.3 Std, + 4.4.2.1) and for which the FCSError and + CollisionEvent signals are not asserted. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.4, aReadableFrames." + ::= { rptrMonitorPortEntry 3 } + +rptrMonitorPortReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port. + This counter is incremented by OctetCount for each + frame received on this port which has been + determined to be a readable frame (i.e., including + FCS octets but excluding framing bits and dribble + bits). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter in a 10Mb/s repeater + is 58 minutes. + + For ports receiving traffic at a maximum rate in + a 100Mb/s repeater, this counter can roll over + in less than 6 minutes. Since that amount of time + could be less than a management station's poll cycle + time, in order to avoid a loss of information a + management station is advised to also poll the + rptrMonitorPortUpper32Octets object, or to use the + 64-bit counter defined by + rptrMonitorPortHCReadableOctets instead of the + two 32-bit counters." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.5, aReadableOctets." + ::= { rptrMonitorPortEntry 4 } + +rptrMonitorPortFCSErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port with the FCSError signal + asserted and the FramingError and CollisionEvent + signals deasserted and whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: 4.4.2.1, IEEE 802.3 + Std). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.6, + aFrameCheckSequenceErrors." + ::= { rptrMonitorPortEntry 5 } + +rptrMonitorPortAlignmentErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port with the FCSError and + FramingError signals asserted and CollisionEvent + signal deasserted and whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: IEEE 802.3 Std, + 4.4.2.1). If rptrMonitorPortAlignmentErrors is + incremented then the rptrMonitorPortFCSErrors + Counter shall not be incremented for the same + frame. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.7, aAlignmentErrors." + ::= { rptrMonitorPortEntry 6 } + +rptrMonitorPortFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port whose OctetCount is greater + than maxFrameSize (Ref: 4.4.2.1, IEEE 802.3 Std). + If rptrMonitorPortFrameTooLongs is incremented + then neither the rptrMonitorPortAlignmentErrors + nor the rptrMonitorPortFCSErrors counter shall be + incremented for the frame. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 61 days in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.8, aFramesTooLong." + ::= { rptrMonitorPortEntry 7 } + +rptrMonitorPortShortEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + CarrierEvent on this port with ActivityDuration + less than ShortEventMaxTime. ShortEventMaxTime is + greater than 74 bit times and less than 82 bit + times. ShortEventMaxTime has tolerances included + to provide for circuit losses between a + conformance test point at the AUI and the + measurement point within the state machine. + + Notes: + + ShortEvents may indicate externally + generated noise hits which will cause the repeater + to transmit Runts to its other ports, or propagate + a collision (which may be late) back to the + transmitting DTE and damaged frames to the rest of + the network. + + Implementors may wish to consider selecting the + ShortEventMaxTime towards the lower end of the + allowed tolerance range to accommodate bit losses + suffered through physical channel devices not + budgeted for within this standard. + + The significance of this attribute is different + in 10 and 100 Mb/s collision domains. Clause 9 + repeaters perform fragment extension of short + events which would be counted as runts on the + interconnect ports of other repeaters. Clause + 27 repeaters do not perform fragment extension. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.9, aShortEvents." + ::= { rptrMonitorPortEntry 8 } + +rptrMonitorPortRunts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + CarrierEvent on this port that meets one of the + following two conditions. Only one test need be + made. a) The ActivityDuration is greater than + ShortEventMaxTime and less than ValidPacketMinTime + and the CollisionEvent signal is deasserted. b) + The OctetCount is less than 64, the + ActivityDuration is greater than ShortEventMaxTime + and the CollisionEvent signal is deasserted. + ValidPacketMinTime is greater than or equal to 552 + bit times and less than 565 bit times. + + An event whose length is greater than 74 bit times + but less than 82 bit times shall increment either + the shortEvents counter or the runts counter but + not both. A CarrierEvent greater than or equal to + 552 bit times but less than 565 bit times may or + may not be counted as a runt. + + ValidPacketMinTime has tolerances included to + provide for circuit losses between a conformance + test point at the AUI and the measurement point + within the state machine. + + Runts usually indicate collision fragments, a + normal network event. In certain situations + associated with large diameter networks a + percentage of collision fragments may exceed + ValidPacketMinTime. + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.10, aRunts." + ::= { rptrMonitorPortEntry 9 } + +rptrMonitorPortCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater, this counter is + incremented by one for any CarrierEvent signal + on any port for which the CollisionEvent signal + on this port is asserted. For a clause 27 + repeater port the counter increments on entering + the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.11, aCollisions." + ::= { rptrMonitorPortEntry 10 } + +rptrMonitorPortLateEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater port, this counter is + incremented by one for each CarrierEvent + on this port in which the CollIn(X) + variable transitions to the value SQE (Ref: + 9.6.6.2, IEEE 802.3 Std) while the + ActivityDuration is greater than the + LateEventThreshold. For a clause 27 repeater + port, this counter is incremented by one on + entering the Collision Count Increment state + of the partition state diagram (fig 27-8) + while the ActivityDuration is greater than + the LateEvent- Threshold. Such a CarrierEvent + is counted twice, as both a collision and as a + lateEvent. + + The LateEventThreshold is greater than 480 bit + times and less than 565 bit times. + LateEventThreshold has tolerances included to + permit an implementation to build a single + threshold to serve as both the LateEventThreshold + and ValidPacketMinTime threshold. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 81 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.12, aLateEvents." + ::= { rptrMonitorPortEntry 11 } + +rptrMonitorPortVeryLongEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater port, this counter + is incremented by one for each CarrierEvent + whose ActivityDuration is greater than the + MAU Jabber Lockup Protection timer TW3 + (Ref: 9.6.1 & 9.6.5, IEEE 802.3 Std). + + For a clause 27 repeater port, this counter + is incremented by one on entry to the + Rx Jabber state of the receiver timer state + diagram (fig 27-7). Other counters may + be incremented as appropriate. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.13, aVeryLongEvents." + ::= { rptrMonitorPortEntry 12 } + +rptrMonitorPortDataRateMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + frame received by this port that meets all + of the conditions required by only one of the + following two measurement methods: + + Measurement method A: 1) The CollisionEvent + signal is not asserted (10Mb/s operation) or + the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]) has not been entered + (100Mb/s operation). 2) The ActivityDuration + is greater than ValidPacketMinTime. 3) The + frequency (data rate) is detectably mismatched + from the local transmit frequency. + + Measurement method B: 1) The CollisionEvent + signal is not asserted (10Mb/s operation) + or the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]) has not been entered + (100Mb/s operation). 2) The OctetCount is + greater than 63. 3) The frequency (data + rate) is detectably mismatched from the local + transmit frequency. The exact degree of + mismatch is vendor specific and is to be + defined by the vendor for conformance testing. + + When this event occurs, other counters whose + increment conditions were satisfied may or may not + also be incremented, at the implementor's + discretion. Whether or not the repeater was able + to maintain data integrity is beyond the scope of + this standard. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.14, aDataRateMismatches." + ::= { rptrMonitorPortEntry 13 } + +rptrMonitorPortAutoPartitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for + each time the repeater has automatically + partitioned this port. + + The conditions that cause a clause 9 + repeater port to partition are specified in + the partition state diagram in clause 9 of + [IEEE 802.3 Std]. They are not differentiated + here. A clause 27 repeater port partitions + on entry to the Partition Wait state of the + partition state diagram (fig 27-8 in + [IEEE 802.3 Std]). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.15, aAutoPartitions." + ::= { rptrMonitorPortEntry 14 } + +rptrMonitorPortTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + this port. This counter is the summation of the + values of other error counters (for the same + port), namely: + + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, and + rptrMonitorPortSymbolErrors. + + This counter is redundant in the sense that it is + the summation of information already available + through other objects. However, it is included + specifically because the regular retrieval of this + object as a means of tracking the health of a port + provides a considerable optimization of network + management traffic over the otherwise necessary + retrieval of the summed counters. + + Note that rptrMonitorPortRunts is not included + in this total; this is because runts usually + indicate collision fragments, a normal network + event. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + ::= { rptrMonitorPortEntry 15 } + +rptrMonitorPortLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last of + the following occurred: + 1) the agent cold- or warm-started; + 2) the row for the port was created + (such as when a device or module was added + to the system); or + 3) any condition that would cause one of + the counters for the row to experience + a discontinuity." + ::= { rptrMonitorPortEntry 16 } + +rptrMonitor100PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitor100PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of additional performance and error + statistics for 100Mb/s ports, above and + beyond those parameters that apply to both + 10 and 100Mbps ports. Entries exist only for + ports attached to 100Mbps repeaters. + + The columnar object rptrMonitorPortLastChange + is used to indicate possible discontinuities + of counter type columnar objects in this table." + ::= { rptrMonitorPortInfo 2 } + +rptrMonitor100PortEntry OBJECT-TYPE + SYNTAX RptrMonitor100PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing performance + and error statistics for a single 100Mb/s port." + INDEX { rptrMonitorPortGroupIndex, rptrMonitorPortIndex } + ::= { rptrMonitor100PortTable 1 } + +RptrMonitor100PortEntry ::= + SEQUENCE { + rptrMonitorPortIsolates + Counter32, + rptrMonitorPortSymbolErrors + Counter32, + rptrMonitorPortUpper32Octets + Counter32, + rptrMonitorPortHCReadableOctets + Counter64 + } + +rptrMonitorPortIsolates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time that + the repeater port automatically isolates as a + consequence of false carrier events. The conditions + which cause a port to automatically isolate are + defined by the transition from the False Carrier + state to the Link Unstable state of the carrier + integrity state diagram (figure 27-9) + [IEEE 802.3 Standard]. + + Note: Isolates do not affect the value of + the PortOperStatus object. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.16, aIsolates." + ::= { rptrMonitor100PortEntry 1 } + +rptrMonitorPortSymbolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time when + valid length packet was received at the port and + there was at least one occurrence of an invalid + data symbol. This can increment only once per valid + carrier event. A collision presence at any port of + the repeater containing port N, will not cause this + attribute to increment. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 7.4 hours at 100Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.17, + aSymbolErrorDuringPacket." + ::= { rptrMonitor100PortEntry 2 } + +rptrMonitorPortUpper32Octets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port, + modulo 2**32. That is, it contains the upper 32 + bits of a 64-bit octets counter, of which the + lower 32 bits are contained in the + rptrMonitorPortReadableOctets object. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMP V1) and are used to + manage a repeater type of 100Mb/s. + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + ::= { rptrMonitor100PortEntry 3 } + +rptrMonitorPortHCReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port. + This counter is incremented by OctetCount for each + frame received on this port which has been + determined to be a readable frame (i.e., including + FCS octets but excluding framing bits and dribble + bits). + + This statistic provides an indicator of the total + data transferred. + + This counter is a 64-bit version of rptrMonitor- + PortReadableOctets. It should be used by network + management protocols which suppport 64-bit counters + (e.g. SNMPv2). + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.5, aReadableOctets." + ::= { rptrMonitor100PortEntry 4 } + + +-- New version of statistics at the repeater level. +-- +-- Statistics objects for each managed repeater +-- in the system. + +rptrMonTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each + non-trivial repeater. The number of entries + in this table is the same as the number of + entries in the rptrInfoTable. + + The columnar object rptrInfoLastChange is + used to indicate possible discontinuities of + counter type columnar objects in this table." + ::= { rptrMonitorAllRptrInfo 1 } + +rptrMonEntry OBJECT-TYPE + SYNTAX RptrMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single non-trivial repeater." + INDEX { rptrInfoId } + ::= { rptrMonTable 1 } + +RptrMonEntry ::= + SEQUENCE { + rptrMonTxCollisions + Counter32, + rptrMonTotalFrames + Counter32, + rptrMonTotalErrors + Counter32, + rptrMonTotalOctets + Counter32 + } + +rptrMonTxCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 (10Mb/s) repeater, this counter + is incremented every time the repeater state + machine enters the TRANSMIT COLLISION state + from any state other than ONE PORT LEFT + (Ref: Fig 9-2 [IEEE 802.3 Std]). + + For a clause 27 repeater, this counter is + incremented every time the repeater core state + diagram enters the Jam state as a result of + Activity(ALL) > 1 (fig 27-2 [IEEE 802.3 Std]). + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater and 1.6 + hours in a 100Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.8, aTransmitCollisions" + ::= { rptrMonEntry 1 } + +rptrMonTotalFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames of valid frame length + that have been received on the ports in this repeater + and for which the FCSError and CollisionEvent + signals were not asserted. If an implementation + can not obtain a count of frames as seen by + the repeater itself, this counter may be + implemented as the summation of the values of the + rptrMonitorPortReadableFrames counters for all of + the ports in the repeater. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours in a 10Mb/s repeater." + ::= { rptrMonEntry 3 } + +rptrMonTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + all of the ports in this repeater. The errors + included in this count are the same as those listed + for the rptrMonitorPortTotalErrors counter. If an + implementation can not obtain a count of these + errors as seen by the repeater itself, this counter + may be implemented as the summation of the values of + the rptrMonitorPortTotalErrors counters for all of + the ports in the repeater." + ::= { rptrMonEntry 4 } + +rptrMonTotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this group. If an implementation can not obtain + a count of octets as seen by the repeater itself, + this counter may be the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter in a 10Mb/s repeater + is 58 minutes divided by the number of ports in + the repeater. + + For 100Mb/s repeaters processing traffic at a + maximum rate, this counter can roll over in less + than 6 minutes divided by the number of ports in + the repeater. Since that amount of time could + be less than a management station's poll cycle + time, in order to avoid a loss of information a + management station is advised to also poll the + rptrMonUpper32TotalOctets object, or to use the + 64-bit counter defined by rptrMonHCTotalOctets + instead of the two 32-bit counters." + ::= { rptrMonEntry 5 } + +rptrMon100Table OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMon100Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of additional information about each + 100Mb/s repeater, augmenting the entries in + the rptrMonTable. Entries exist in this table + only for 100Mb/s repeaters. + + The columnar object rptrInfoLastChange is + used to indicate possible discontinuities of + counter type columnar objects in this table." + ::= { rptrMonitorAllRptrInfo 2 } + +rptrMon100Entry OBJECT-TYPE + SYNTAX RptrMon100Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single 100Mbps repeater." + INDEX { rptrInfoId } + ::= { rptrMon100Table 1 } + +RptrMon100Entry ::= + SEQUENCE { + rptrMonUpper32TotalOctets + Counter32, + rptrMonHCTotalOctets + Counter64 + } + +rptrMonUpper32TotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this repeater, modulo 2**32. That is, it contains + the upper 32 bits of a 64-bit counter, of which + the lower 32 bits are contained in the + rptrMonTotalOctets object. If an implementation + can not obtain a count of octets as seen + by the repeater itself, the 64-bit value + may be the summation of the values of the + rptrMonitorPortReadableOctets counters combined + with the corresponding rptrMonitorPortUpper32Octets + counters for all of the ports in the repeater. + + This statistic provides an indicator of the total + data transferred within the repeater. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMP V1) and are used to + manage a repeater type of 100Mb/s. + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count." + ::= { rptrMon100Entry 1 } + +rptrMonHCTotalOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this group. If a implementation can not obtain + a count of octets as seen by the repeater itself, + this counter may be the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. + + This counter is a 64-bit (high-capacity) version + of rptrMonUpper32TotalOctets and rptrMonTotalOctets. + It should be used by network management protocols + which support 64-bit counters (e.g. SNMPv2). + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count." + ::= { rptrMon100Entry 2 } + + +-- +-- The Repeater Address Search Table +-- +-- This table provides an active address tracking +-- capability which can be also used to collect the +-- necessary information for mapping the topology +-- of a network. Note that an NMS is required to have +-- read-write access to the table in order to access +-- this function. Section 4, "Topology Mapping", +-- contains a description of an algorithm which can +-- make use of this table, in combination with the + +-- forwarding databases of managed bridges/switches +-- in the network, to map network topology. +-- + +rptrAddrSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrAddrSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry per repeater in the + system. It defines objects which allow a network + management application to instruct an agent to watch + for a given MAC address and report which port it + was seen on. Only one address search can be in + progress on each repeater at any one time. Before + starting an address search, a management application + should obtain 'ownership' of the entry in + rptrAddrSearchTable for the repeater that is to + perform the search. This is accomplished with the + rptrAddrSearchLock and rptrAddrSearchStatus as + follows: + + try_again: + get(rptrAddrSearchLock, rptrAddrSearchStatus) + while (rptrAddrSearchStatus != notInUse) + { + /* Loop waiting for objects to be available*/ + short delay + get(rptrAddrSearchLock, rptrAddrSearchStatus) + } + + /* Try to claim map objects */ + lock_value = rptrAddrSearchLock + if ( set(rptrAddrSearchLock = lock_value, + rptrAddrSearchStatus = inUse, + rptrAddrSearchOwner = 'my-IP-address) + == FAILURE) + /* Another manager got the lock */ + goto try_again + + /* I have the lock */ + set (rptrAddrSearchAddress = ) + + wait for rptrAddrSearchState to change from none + + if (rptrAddrSearchState == single) + get (rptrAddrSearchGroup, rptrAddrSearchPort) + /* release the lock, making sure not to overwrite + anyone else's lock */ + set (rptrAddrSearchLock = lock_value+1, + rptrAddrSearchStatus = notInUse, + rptrAddrSearchOwner = '') + + A management station first retrieves the values of + the appropriate instances of the rptrAddrSearchLock + and rptrAddrSearchStatus objects, periodically + repeating the retrieval if necessary, until the value + of rptrAddrSearchStatus is 'notInUse'. The + management station then tries to set the same + instance of the rptrAddrSearchLock object to the + value it just retrieved, the same instance of the + rptrAddrSearchStatus object to 'inUse', and the + corresponding instance of rptrAddrSearchOwner to a + value indicating itself. If the set operation + succeeds, then the management station has obtained + ownership of the rptrAddrSearchEntry, and the value + of rptrAddrSearchLock is incremented by the agent (as + per the semantics of TestAndIncr). Failure of the + set operation indicates that some other manager has + obtained ownership of the rptrAddrSearchEntry. + + Once ownership is obtained, the management station + can proceed with the search operation. Note that the + agent will reset rptrAddrSearchStatus to 'notInUse' + if it has been in the 'inUse' state for an abnormally + long period of time, to prevent a misbehaving manager + from permanently locking the entry. It is suggested + that this timeout period be between one and five + minutes. + + When the management station has completed its search + operation, it should free the entry by setting + the instance of the rptrAddrSearchLock object to the + previous value + 1, the instance of the + rptrAddrSearchStatus to 'notInUse', and the instance + of rptrAddrSearchOwner to a zero length string. This + is done to prevent overwriting another station's + lock." + ::= { rptrAddrTrackRptrInfo 1 } + +rptrAddrSearchEntry OBJECT-TYPE + SYNTAX RptrAddrSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects for invoking an address + search on a repeater." + INDEX { rptrInfoId } + ::= { rptrAddrSearchTable 1 } + +RptrAddrSearchEntry ::= + SEQUENCE { + rptrAddrSearchLock TestAndIncr, + rptrAddrSearchStatus INTEGER, + rptrAddrSearchAddress MacAddress, + rptrAddrSearchState INTEGER, + rptrAddrSearchGroup Integer32, + rptrAddrSearchPort Integer32, + rptrAddrSearchOwner OwnerString + } + + +rptrAddrSearchLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used by a management station as an + advisory lock for this rptrAddrSearchEntry." + ::= { rptrAddrSearchEntry 1 } + +rptrAddrSearchStatus OBJECT-TYPE + SYNTAX INTEGER { + notInUse(1), + inUse(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to indicate that some management + station is currently using this rptrAddrSearchEntry. + Cooperating managers should set this object to + 'notInUse' when they are finished using this entry. + The agent will automatically set the value of this + object to 'notInUse' if it has been set to 'inUse' + for an unusually long period of time." + ::= { rptrAddrSearchEntry 2 } + +rptrAddrSearchAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to search for a specified MAC + address. When this object is set, an address search + begins. This automatically sets the corresponding + instance of the rptrAddrSearchState object to 'none' + and the corresponding instances of the + rptrAddrSearchGroup and rptrAddrSearchPort objects to + 0. + + When a valid frame is received by this repeater with + a source MAC address which matches the current value + of rptrAddrSearchAddress, the agent will update the + corresponding instances of rptrAddrSearchState, + rptrAddrSearchGroup and rptrAddrSearchPort to reflect + the current status of the search, and the group and + port on which the frame was seen." + ::= { rptrAddrSearchEntry 3 } + +rptrAddrSearchState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + single(2), + multiple(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the MAC address search on this + repeater. This object is initialized to 'none' when + the corresponding instance of rptrAddrSearchAddress + is set. If the agent detects the address on exactly + one port, it will set this object to 'single', and + set the corresponding instances of + rptrAddrSearchGroup and rptrAddrSearchPort to reflect + the group and port on which the address was heard. + If the agent detects the address on more than one + port, it will set this object to 'multiple'." + ::= { rptrAddrSearchEntry 4 } + +rptrAddrSearchGroup OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The group from which an error-free frame whose + source address is equal to the corresponding instance + of rptrAddrSearchAddress has been received. The + value of this object is undefined when the + corresponding instance of rptrAddrSearchState is + equal to 'none' or 'multiple'." + ::= { rptrAddrSearchEntry 5 } + +rptrAddrSearchPort OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port rom which an error-free frame whose + source address is equal to the corresponding instance + of rptrAddrSearchAddress has been received. The + value of this object is undefined when the + corresponding instance of rptrAddrSearchState is + equal to 'none' or 'multiple'." + ::= { rptrAddrSearchEntry 6 } + +rptrAddrSearchOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The entity which currently has 'ownership' of this + rptrAddrSearchEntry." + ::= { rptrAddrSearchEntry 7 } + + +-- +-- The Port Address Tracking Table +-- +-- This table provides a way for a network management +-- application to passively gather information (using +-- read-only privileges) about which network addresses +-- are connected to which ports of a repeater. +-- + +rptrAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of address mapping information about the + ports." + ::= { rptrAddrTrackPortInfo 1 } + +rptrAddrTrackEntry OBJECT-TYPE + SYNTAX RptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing address mapping + information about a single port." + INDEX { rptrAddrTrackGroupIndex, rptrAddrTrackPortIndex } + ::= { rptrAddrTrackTable 1 } + +RptrAddrTrackEntry ::= + SEQUENCE { + rptrAddrTrackGroupIndex + INTEGER, + rptrAddrTrackPortIndex + INTEGER, + rptrAddrTrackLastSourceAddress -- DEPRECATED OBJECT + MacAddress, + rptrAddrTrackSourceAddrChanges + Counter32, + rptrAddrTrackNewLastSrcAddress + OptMacAddr, + rptrAddrTrackCapacity + Integer32 + } + +rptrAddrTrackGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrAddrTrackEntry 1 } + +rptrAddrTrackPortIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrAddrTrackEntry 2 } + +rptrAddrTrackLastSourceAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + This object is the SourceAddress of the last + readable frame (i.e., counted by + rptrMonitorPortReadableFrames) received by this + port. + + This object has been deprecated because its value + is undefined when no frames have been observed on + this port. The replacement object is + rptrAddrTrackNewLastSrcAddress." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrAddrTrackEntry 3 } + +rptrAddrTrackSourceAddrChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each time + that the rptrAddrTrackLastSourceAddress attribute + for this port has changed. + + This may indicate whether a link is connected to a + single DTE or another multi-user segment. + + A discontinuity may occur in the value when the + value of object rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 81 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.19, aSourceAddressChanges." + ::= { rptrAddrTrackEntry 4 } + +rptrAddrTrackNewLastSrcAddress OBJECT-TYPE + SYNTAX OptMacAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the SourceAddress of the last + readable frame (i.e., counted by + rptrMonitorPortReadableFrames) received by this + port. If no frames have been received by this + port since the agent began monitoring the port + activity, the agent shall return a string of + length zero." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrAddrTrackEntry 5 } + +rptrAddrTrackCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addresses that can be + detected on this port. This value indicates + to the maximum number of entries in the + rptrExtAddrTrackTable relative to this port. + + If this object has the value of 1, the agent + implements only the LastSourceAddress mechanism + described by RFC 1368 or RFC 1516." + ::= { rptrAddrTrackEntry 6 } + + +-- Table for multiple addresses per port + +rptrExtAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrExtAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to extend the address tracking table (i.e., + rptrAddrTrackTable) with a list of source MAC + addresses that were recently received on each port. + The number of ports is the same as the number + of entries in table rptrPortTable. The number of + entries in this table depends on the agent/repeater + implementation and the number of different + addresses received on each port. + + The first entry for each port contains + the same MAC address that is given by the + rptrAddrTrackNewLastSrcAddress for that port. + + Entries in this table for a particular port are + retained when that port is switched from one + repeater to another. + + The ordering of MAC addresses listed for a + particular port is implementation dependent." + ::= { rptrAddrTrackPortInfo 2 } + +rptrExtAddrTrackEntry OBJECT-TYPE + SYNTAX RptrExtAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the table of extended address tracking + information for ports. Entries can not be directly + created or deleted via SNMP operations." + INDEX { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrExtAddrTrackMacIndex } + ::= { rptrExtAddrTrackTable 1 } + +RptrExtAddrTrackEntry ::= SEQUENCE { + rptrExtAddrTrackMacIndex Integer32, + rptrExtAddrTrackSourceAddress MacAddress + } + +rptrExtAddrTrackMacIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of a source MAC address seen on + the port. + + The ordering of MAC addresses listed for a + particular port is implementation dependent. + + There is no implied relationship between a + particular index and a particular MAC + address. The index for a particular MAC + address may change without notice." + ::= { rptrExtAddrTrackEntry 1 } + +rptrExtAddrTrackSourceAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source MAC address from a readable frame + (i.e., counted by rptrMonitorPortReadableFrames) + recently received by the port." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrExtAddrTrackEntry 2 } + + +-- The Repeater Top "N" Port Group + +-- The Repeater Top N Port group is used to prepare reports that +-- describe a list of ports ordered by one of the statistics in the +-- Repeater Monitor Port Table. The statistic chosen by the +-- management station is sampled over a management +-- station-specified time interval, making the report rate based. +-- The management station also specifies the number of ports that +-- are reported. +-- +-- The rptrTopNPortControlTable is used to initiate the generation +-- of a report. The management station may select the parameters +-- of such a report, such as which repeater, which statistic, how +-- many ports, and the start & stop times of the sampling. When +-- the report is prepared, entries are created in the +-- rptrTopNPortTable associated with the relevent +-- rptrTopNControlEntry. These entries are static for +-- each report after it has been prepared. + +-- Note that counter discontinuities may appear in some +-- implementations if ports' assignment to repeaters changes +-- during the collection of data for a Top "N" report. +-- A management application could read the corresponding +-- rptrMonitorPortLastChange timestamp in order to check +-- whether a discontinuity occurred. + + +rptrTopNPortControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrTopNPortControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control records for reports on the top `N' + ports for the rate of a selected counter. The number + of entries depends on the configuration of the agent. + The maximum number of entries is implementation + dependent." + ::= { rptrTopNPortInfo 1 } + +rptrTopNPortControlEntry OBJECT-TYPE + SYNTAX RptrTopNPortControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N ports according to several metrics." + INDEX { rptrTopNPortControlIndex } + ::= { rptrTopNPortControlTable 1 } + +RptrTopNPortControlEntry ::= SEQUENCE { + rptrTopNPortControlIndex + Integer32, + rptrTopNPortRepeaterId + Integer32, + rptrTopNPortRateBase + INTEGER, + rptrTopNPortTimeRemaining + Integer32, + rptrTopNPortDuration + Integer32, + rptrTopNPortRequestedSize + Integer32, + rptrTopNPortGrantedSize + Integer32, + rptrTopNPortStartTime + TimeStamp, + rptrTopNPortOwner + OwnerString, + rptrTopNPortRowStatus + RowStatus +} + +rptrTopNPortControlIndex OBJECT-TYPE + SYNTAX Integer32 (1 .. 65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + rptrTopNPortControl table. Each such entry defines + one top N report prepared for a repeater or system." + ::= { rptrTopNPortControlEntry 1 } + +rptrTopNPortRepeaterId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the repeater for which a top N report will + be prepared (see rptrInfoId). If the value of this + object is positive, only ports assigned to this repeater + will be used to form the list in which to order the + Top N table. If this value is zero, all ports will be + eligible for inclusion on the list. + + The value of this object may not be modified if the + associated rptrTopNPortRowStatus object is equal to + active(1). + If, for a particular row in this table, the repeater + specified by the value of this object goes away (is + removed from the rptrInfoTable) while the associated + rptrTopNPortRowStatus object is equal to active(1), + the row in this table is preserved by the agent but + the value of rptrTopNPortRowStatus is changed to + notInService(2), and the agent may time out the row + if appropriate. If the specified repeater comes + back (reappears in the rptrInfoTable) before the row + has been timed out, the management station must set + the value of the rptrTopNPortRowStatus object back + to active(1) if desired (the agent doesn't do this + automatically)." + ::= { rptrTopNPortControlEntry 2 } + +rptrTopNPortRateBase OBJECT-TYPE + SYNTAX INTEGER { + readableFrames(1), + readableOctets(2), + fcsErrors(3), + alignmentErrors(4), + frameTooLongs(5), + shortEvents(6), + runts(7), + collisions(8), + lateEvents(9), + veryLongEvents(10), + dataRateMismatches(11), + autoPartitions(12), + totalErrors(13), + isolates(14), + symbolErrors(15) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The monitored variable, which the rptrTopNPortRate + variable is based upon. + + The value of this object may not be modified if + the associated rptrTopNPortRowStatus object has + a value of active(1)." + ::= { rptrTopNPortControlEntry 3 } + +rptrTopNPortTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report + currently being collected. When this object + is modified by the management station, a new + collection is started, possibly aborting a + currently running report. The new value is + used as the requested duration of this report, + which is loaded into the associated + rptrTopNPortDuration object. + + When this object is set to a non-zero value, + any associated rptrTopNPortEntries shall be + made inaccessible by the agent. While the value + of this object is non-zero, it decrements by one + per second until it reaches zero. During this + time, all associated rptrTopNPortEntries shall + remain inaccessible. At the time that this object + decrements to zero, the report is made accessible + in the rptrTopNPortTable. Thus, the rptrTopNPort + table needs to be created only at the end of the + collection interval. + + If the value of this object is set to zero + while the associated report is running, the + running report is aborted and no associated + rptrTopNPortEntries are created." + DEFVAL { 0 } + ::= { rptrTopNPortControlEntry 4 } + +rptrTopNPortDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has + collected during the last sampling interval, + or if this report is currently being collected, + the number of seconds that this report is being + collected during this sampling interval. + + When the associated rptrTopNPortTimeRemaining + object is set, this object shall be set by the + agent to the same value and shall not be modified + until the next time the rptrTopNPortTimeRemaining + is set. + + This value shall be zero if no reports have been + requested for this rptrTopNPortControlEntry." + ::= { rptrTopNPortControlEntry 5 } + +rptrTopNPortRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of repeater ports requested + for the Top N Table. + + When this object is created or modified, the + agent should set rptrTopNPortGrantedSize as close + to this object as is possible for the particular + implementation and available resources." + DEFVAL { 10 } + ::= { rptrTopNPortControlEntry 6 } + +rptrTopNPortGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of repeater ports in the + top N table. + + When the associated rptrTopNPortRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + agent must not lower this value except as a result of a + set to the associated rptrTopNPortRequestedSize object." + ::= { rptrTopNPortControlEntry 7 } + +rptrTopNPortStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated rptrTopNPortTimeRemaining object was + modified to start the requested report. + + If the report has not yet been started, the value + of this object is zero." + ::= { rptrTopNPortControlEntry 8 } + +rptrTopNPortOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + using the resources assigned to it." + ::= { rptrTopNPortControlEntry 9 } + +rptrTopNPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + If the value of this object is not equal to + active(1), all associated entries in the + rptrTopNPortTable shall be deleted by the + agent." + ::= { rptrTopNPortControlEntry 10 } + + +-- Top "N" reports + +rptrTopNPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrTopNPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of reports for the top `N' ports based on + setting of associated control table entries. The + maximum number of entries depends on the number + of entries in table rptrTopNPortControlTable and + the value of object rptrTopNPortGrantedSize for + each entry. + + For each entry in the rptrTopNPortControlTable, + repeater ports with the highest value of + rptrTopNPortRate shall be placed in this table + in decreasing order of that rate until there is + no more room or until there are no more ports." + ::= { rptrTopNPortInfo 2 } + +rptrTopNPortEntry OBJECT-TYPE + SYNTAX RptrTopNPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a repeater port that is + part of a top N report." + INDEX { rptrTopNPortControlIndex, + rptrTopNPortIndex } + ::= { rptrTopNPortTable 1 } + +RptrTopNPortEntry ::= SEQUENCE { + rptrTopNPortIndex + Integer32, + rptrTopNPortGroupIndex + Integer32, + rptrTopNPortPortIndex + Integer32, + rptrTopNPortRate + Gauge32 +} + +rptrTopNPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the rptrTopNPort table among those in the same + report. This index is between 1 and N, where N + is the number of entries in this report. Increasing + values of rptrTopNPortIndex shall be assigned to + entries with decreasing values of rptrTopNPortRate + until index N is assigned to the entry with the + lowest value of rptrTopNPortRate or there are no + more rptrTopNPortEntries. + + No ports are included in a report where their + value of rptrTopNPortRate would be zero." + ::= { rptrTopNPortEntry 1 } + +rptrTopNPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifes the group containing + the port for this entry. (See also object + type rptrGroupIndex.)" + ::= { rptrTopNPortEntry 2 } + +rptrTopNPortPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the repeater port. + (See object type rptrPortIndex.)" + ::= { rptrTopNPortEntry 3 } + +rptrTopNPortRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval for the identified + port. The selected variable is that port's + instance of the object selected by + rptrTopNPortRateBase." + ::= { rptrTopNPortEntry 4 } + + + +-- Notifications for use by Repeaters + +rptrHealth NOTIFICATION-TYPE + OBJECTS { rptrOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater, + the rptrHealth notification conveys information + related to the operational status of the repeater. + It is sent either when the value of + rptrOperStatus changes, or upon completion of a + non-disruptive test. + + The rptrHealth notification must contain the + rptrOperStatus object. The agent may optionally + include the rptrHealthText object in the varBind + list. See the rptrOperStatus and rptrHealthText + objects for descriptions of the information that + is sent. + + The agent must throttle the generation of + consecutive rptrHealth traps so that there is at + least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.1, nRepeaterHealth + notification." + ::= { snmpDot3RptrMgt 0 1 } + +rptrGroupChange NOTIFICATION-TYPE + OBJECTS { rptrGroupIndex } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater, + this notification is sent when a change occurs in the + group structure of the repeater. This occurs only + when a group is logically or physically removed + from or added to a repeater. The varBind list + contains the identifier of the group that was + removed or added. + + The agent must throttle the generation of + consecutive rptrGroupChange traps for the same + group so that there is at least a five-second gap + between traps of this type. When traps are + throttled, they are dropped, not queued for + sending at a future time. (Note that 'generating' + a trap means sending to all configured + recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.3, nGroupMapChange + notification." + ::= { snmpDot3RptrMgt 0 2 } + +rptrResetEvent NOTIFICATION-TYPE + OBJECTS { rptrOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater-unit, + the rptrResetEvent notification conveys information + related to the operational status of the repeater. + This trap is sent on completion of a repeater + reset action. A repeater reset action is defined + as an a transition to the START state of Fig 9-2 + in section 9 [IEEE 802.3 Std], when triggered by a + management command (e.g., an SNMP Set on the + rptrReset object). + + The agent must throttle the generation of + consecutive rptrResetEvent traps so that there is + at least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.) + + The rptrResetEvent trap is not sent when the agent + restarts and sends an SNMP coldStart or warmStart + trap. However, it is recommended that a repeater + agent send the rptrOperStatus object as an + optional object with its coldStart and warmStart + trap PDUs. + + The rptrOperStatus object must be included in the + varbind list sent with this trap. The agent may + optionally include the rptrHealthText object as + well." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.2, nRepeaterReset + notification." + ::= { snmpDot3RptrMgt 0 3 } + + +-- Notifications for repeaters in a multiple-repeater implementation. +-- An implementation may send either the single-repeater OR +-- multiple-repeater version of these notifications (1 or 4; 2 or 5) +-- but not both. + +rptrInfoHealth NOTIFICATION-TYPE + OBJECTS { rptrInfoOperStatus } + STATUS current + DESCRIPTION + "In a system containing multiple managed repeaters, + the rptrInfoHealth notification conveys information + related to the operational status of a repeater. + It is sent either when the value of rptrInfoOperStatus + changes, or upon completion of a non-disruptive test. + + The agent must throttle the generation of + consecutive rptrInfoHealth notifications for + the same repeater so that there is at least + a five-second gap between notifications of this type. + When notifications are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a notification means sending + to all configured recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.1, nRepeaterHealth + notification." + ::= { snmpDot3RptrMgt 0 4 } + +rptrInfoResetEvent NOTIFICATION-TYPE + OBJECTS { rptrInfoOperStatus } + STATUS current + DESCRIPTION + "In a system containing multiple managed + repeaters, the rptrInfoResetEvent notification + conveys information related to the operational + status of a repeater. This notification is sent + on completion of a repeater reset action. A + repeater reset action is defined as a transition + to the START state of Fig 9-2 in section 9 of + [IEEE 802.3 Std], when triggered by a management + command (e.g., an SNMP Set on the rptrInfoReset + object). + + The agent must throttle the generation of + consecutive rptrInfoResetEvent notifications for + a single repeater so that there is at least + a five-second gap between notifications of + this type. When notifications are throttled, + they are dropped, not queued for sending at + a future time. (Note that 'generating' a + notification means sending to all configured + recipients.) + + The rptrInfoResetEvent is not sent when the + agent restarts and sends an SNMP coldStart or + warmStart trap. However, it is recommended that + a repeater agent send the rptrInfoOperStatus + object as an optional object with its coldStart + and warmStart trap PDUs." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.2, nRepeaterReset + notification." + ::= { snmpDot3RptrMgt 0 5 } + + +-- Conformance information + +snmpRptrModConf + OBJECT IDENTIFIER ::= { snmpRptrMod 1 } + snmpRptrModCompls + OBJECT IDENTIFIER ::= { snmpRptrModConf 1 } + snmpRptrModObjGrps + OBJECT IDENTIFIER ::= { snmpRptrModConf 2 } + snmpRptrModNotGrps + OBJECT IDENTIFIER ::= { snmpRptrModConf 3 } + + +-- Object groups + +snmpRptrGrpBasic1516 OBJECT-GROUP + OBJECTS { rptrGroupCapacity, + rptrOperStatus, + rptrHealthText, + rptrReset, + rptrNonDisruptTest, + rptrTotalPartitionedPorts, + + rptrGroupIndex, + rptrGroupDescr, + rptrGroupObjectID, + rptrGroupOperStatus, + rptrGroupLastOperStatusChange, + rptrGroupPortCapacity, + + rptrPortGroupIndex, + rptrPortIndex, + rptrPortAdminStatus, + rptrPortAutoPartitionState, + rptrPortOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Basic group from RFCs 1368 and 1516. + + NOTE: this object group is DEPRECATED and replaced + with snmpRptrGrpBasic." + ::= { snmpRptrModObjGrps 1 } + +snmpRptrGrpMonitor1516 OBJECT-GROUP + OBJECTS { rptrMonitorTransmitCollisions, + + rptrMonitorGroupIndex, + rptrMonitorGroupTotalFrames, + rptrMonitorGroupTotalOctets, + rptrMonitorGroupTotalErrors, + rptrMonitorPortGroupIndex, + rptrMonitorPortIndex, + rptrMonitorPortReadableFrames, + rptrMonitorPortReadableOctets, + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortRunts, + rptrMonitorPortCollisions, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, + rptrMonitorPortAutoPartitions, + rptrMonitorPortTotalErrors } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Monitor group from RFCs 1368 and 1516. + + NOTE: this object group is DEPRECATED and replaced + with snmpRptrGrpMonitor." + ::= { snmpRptrModObjGrps 2 } + +snmpRptrGrpAddrTrack1368 OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackLastSourceAddress, + rptrAddrTrackSourceAddrChanges } + STATUS obsolete + DESCRIPTION + "Address tracking group from RFC 1368. + + NOTE: this object group is OBSOLETE and replaced + with snmpRptrGrpAddrTrack1516." + ::= { snmpRptrModObjGrps 3 } + +snmpRptrGrpAddrTrack1516 OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackLastSourceAddress, + rptrAddrTrackSourceAddrChanges, + rptrAddrTrackNewLastSrcAddress } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Address tracking group from RFC 1516. + + NOTE: this object group is DEPRECATED and + replaced with snmpRptrGrpAddrTrack." + ::= { snmpRptrModObjGrps 4 } + +snmpRptrGrpBasic OBJECT-GROUP + OBJECTS { rptrGroupIndex, + rptrGroupObjectID, + rptrGroupOperStatus, + rptrGroupPortCapacity, + + rptrPortGroupIndex, + rptrPortIndex, + rptrPortAdminStatus, + rptrPortAutoPartitionState, + rptrPortOperStatus, + rptrPortRptrId, + + rptrInfoId, + rptrInfoRptrType, + rptrInfoOperStatus, + rptrInfoReset, + rptrInfoPartitionedPorts, + rptrInfoLastChange } + STATUS current + DESCRIPTION + "Basic group for a system with one or more + repeater-units in multi-segment (post-RFC 1516) + version of the MIB module." + ::= { snmpRptrModObjGrps 5 } + +snmpRptrGrpMonitor OBJECT-GROUP + OBJECTS { rptrMonitorPortGroupIndex, + rptrMonitorPortIndex, + rptrMonitorPortReadableFrames, + rptrMonitorPortReadableOctets, + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortRunts, + rptrMonitorPortCollisions, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, + rptrMonitorPortAutoPartitions, + rptrMonitorPortTotalErrors, + rptrMonitorPortLastChange, + + rptrMonTxCollisions, + rptrMonTotalFrames, + rptrMonTotalErrors, + rptrMonTotalOctets } + STATUS current + DESCRIPTION + "Monitor group for a system with one or more + repeater-units in multi-segment (post-RFC 1516) + version of the MIB module." + ::= { snmpRptrModObjGrps 6 } + +snmpRptrGrpMonitor100 OBJECT-GROUP + OBJECTS { rptrMonitorPortIsolates, + rptrMonitorPortSymbolErrors, + rptrMonitorPortUpper32Octets, + + rptrMonUpper32TotalOctets } + STATUS current + DESCRIPTION + "Monitor group for 100Mb/s ports and repeaters + in a system with one or more repeater-units in + multi-segment (post-RFC 1516) version of the MIB + module. Systems which support Counter64 should + also implement snmpRptrGrpMonitor100w64." + ::= { snmpRptrModObjGrps 7 } + +snmpRptrGrpMonitor100w64 OBJECT-GROUP + OBJECTS { rptrMonitorPortHCReadableOctets, + rptrMonHCTotalOctets } + STATUS current + DESCRIPTION + "Monitor group for 100Mb/s ports and repeaters in a + system with one or more repeater-units and support + for Counter64." + ::= { snmpRptrModObjGrps 8 } + +snmpRptrGrpAddrTrack OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackSourceAddrChanges, + rptrAddrTrackNewLastSrcAddress, + rptrAddrTrackCapacity } + STATUS current + DESCRIPTION + "Passive address tracking group for post-RFC 1516 + version of the MIB module." + ::= { snmpRptrModObjGrps 9 } + +snmpRptrGrpExtAddrTrack OBJECT-GROUP + OBJECTS { rptrExtAddrTrackMacIndex, + rptrExtAddrTrackSourceAddress } + STATUS current + DESCRIPTION + "Extended passive address tracking group for + a system with one or more repeater-units in + post-RFC 1516 version of the MIB module." + ::= { snmpRptrModObjGrps 10 } + +snmpRptrGrpRptrAddrSearch OBJECT-GROUP + OBJECTS { rptrAddrSearchLock, + rptrAddrSearchStatus, + rptrAddrSearchAddress, + rptrAddrSearchState, + rptrAddrSearchGroup, + rptrAddrSearchPort, + rptrAddrSearchOwner } + STATUS current + DESCRIPTION + "Active MAC address search group and topology + mapping support for repeaters." + ::= { snmpRptrModObjGrps 11 } + +snmpRptrGrpTopNPort OBJECT-GROUP + OBJECTS { rptrTopNPortControlIndex, + rptrTopNPortRepeaterId, + rptrTopNPortRateBase, + rptrTopNPortTimeRemaining, + rptrTopNPortDuration, + rptrTopNPortRequestedSize, + rptrTopNPortGrantedSize, + rptrTopNPortStartTime, + rptrTopNPortOwner, + rptrTopNPortRowStatus, + rptrTopNPortIndex, + rptrTopNPortGroupIndex, + rptrTopNPortPortIndex, + rptrTopNPortRate } + STATUS current + DESCRIPTION + "Top `N' group for repeater ports." + ::= { snmpRptrModObjGrps 12 } + + +-- Compliances + +snmpRptrModComplRFC1368 MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "Compliance for RFC 1368. + + NOTE: this module compliance is OBSOLETE and + replaced by snmpRptrModComplRFC1516." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic1516 } + + GROUP snmpRptrGrpMonitor1516 + DESCRIPTION + "Implementation of this optional group is + recommended for systems which have the + instrumentation to do performance monitoring." + + GROUP snmpRptrGrpAddrTrack1368 + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation." + + ::= { snmpRptrModCompls 1 } + +snmpRptrModComplRFC1516 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "********* THIS COMPLIANCE IS DEPRECATED ********** + + Compliance for RFC 1516 and for backwards + compatibility with single-repeater, + 10Mb/s-only implementations." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic1516 } + + GROUP snmpRptrGrpMonitor1516 + DESCRIPTION + "Implementation of this optional group is + recommended for systems which have the + instrumentation to do performance monitoring." + + GROUP snmpRptrGrpAddrTrack1516 + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation." + ::= { snmpRptrModCompls 2 } + +snmpRptrModCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for the multi-segment version of the + MIB module for a system with one or more + repeater-units." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic, + snmpRptrGrpMonitor, + snmpRptrGrpAddrTrack } + + GROUP snmpRptrGrpMonitor100 + DESCRIPTION + "Implementation of this group is + mandatory for managed systems which + contain 100Mb/s repeaters." + + GROUP snmpRptrGrpMonitor100w64 + DESCRIPTION + "Implementation of this group is + mandatory for managed systems which + contain 100Mb/s repeaters and which + can support Counter64." + + GROUP snmpRptrGrpExtAddrTrack + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation to track + MAC addresses of multiple DTEs attached + to a single repeater port." + + GROUP snmpRptrGrpRptrAddrSearch + DESCRIPTION + "Implementation of this group is + recommended for systems which allow + read-write access and which have + the necessary instrumentation to + search all incoming data streams + for a particular MAC address." + + GROUP snmpRptrGrpTopNPort + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary resources to support + TopN statistics reporting." + + ::= { snmpRptrModCompls 3 } + + +END diff --git a/mibs/ietf/SNMP-TARGET-MIB b/mibs/ietf/SNMP-TARGET-MIB new file mode 100644 index 0000000..0152502 --- /dev/null +++ b/mibs/ietf/SNMP-TARGET-MIB @@ -0,0 +1,693 @@ +SNMP-TARGET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules, + Counter32, + Integer32 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + TDomain, + TAddress, + TimeInterval, + RowStatus, + StorageType, + + + + TestAndIncr + FROM SNMPv2-TC + + SnmpSecurityModel, + SnmpMessageProcessingModel, + SnmpSecurityLevel, + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpTargetMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + + + + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters used + by an SNMP entity for the generation of SNMP messages. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Fixed DISPLAY-HINTS for UTF-8 strings, fixed hex + value of LF characters, clarified meaning of zero + length tag values, improved tag list examples. + Published as RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 12 } + +snmpTargetObjects OBJECT IDENTIFIER ::= { snmpTargetMIB 1 } +snmpTargetConformance OBJECT IDENTIFIER ::= { snmpTargetMIB 3 } + +SnmpTagValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION + "An octet string containing a tag value. + Tag values are preferably in human-readable form. + + To facilitate internationalization, this information + is represented using the ISO/IEC IS 10646-1 character + set, encoded as an octet string using the UTF-8 + character encoding scheme described in RFC 2279. + + Since additional code points are added by amendments + to the 10646 standard from time to time, + implementations must be prepared to encounter any code + point from 0x00000000 to 0x7fffffff. + + The use of control codes should be avoided, and certain + + + + control codes are not allowed as described below. + + For code points not directly supported by user + interface hardware or software, an alternative means + of entry and display, such as hexadecimal, may be + provided. + + For information encoded in 7-bit US-ASCII, the UTF-8 + representation is identical to the US-ASCII encoding. + + Note that when this TC is used for an object that + is used or envisioned to be used as an index, then a + SIZE restriction must be specified so that the number + of sub-identifiers for any object instance does not + exceed the limit of 128, as defined by [RFC1905]. + + An object of this type contains a single tag value + which is used to select a set of entries in a table. + + A tag value is an arbitrary string of octets, but + may not contain a delimiter character. Delimiter + characters are defined to be one of the following: + + - An ASCII space character (0x20). + + - An ASCII TAB character (0x09). + + - An ASCII carriage return (CR) character (0x0D). + + - An ASCII line feed (LF) character (0x0A). + + Delimiter characters are used to separate tag values + in a tag list. An object of this type may only + contain a single tag value, and so delimiter + characters are not allowed in a value of this type. + + Note that a tag value of 0 length means that no tag is + defined. In other words, a tag value of 0 length would + never match anything in a tag list, and would never + select any table entries. + + Some examples of valid tag values are: + + - 'acme' + + - 'router' + + - 'host' + + + + The use of a tag value to select table entries is + application and MIB specific." + SYNTAX OCTET STRING (SIZE (0..255)) + +SnmpTagList ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION + "An octet string containing a list of tag values. + Tag values are preferably in human-readable form. + + To facilitate internationalization, this information + is represented using the ISO/IEC IS 10646-1 character + set, encoded as an octet string using the UTF-8 + character encoding scheme described in RFC 2279. + + Since additional code points are added by amendments + to the 10646 standard from time to time, + implementations must be prepared to encounter any code + point from 0x00000000 to 0x7fffffff. + + The use of control codes should be avoided, except as + described below. + + For code points not directly supported by user + interface hardware or software, an alternative means + of entry and display, such as hexadecimal, may be + provided. + + For information encoded in 7-bit US-ASCII, the UTF-8 + representation is identical to the US-ASCII encoding. + + An object of this type contains a list of tag values + which are used to select a set of entries in a table. + + A tag value is an arbitrary string of octets, but + may not contain a delimiter character. Delimiter + characters are defined to be one of the following: + + - An ASCII space character (0x20). + + - An ASCII TAB character (0x09). + + - An ASCII carriage return (CR) character (0x0D). + + - An ASCII line feed (LF) character (0x0A). + + Delimiter characters are used to separate tag values + + + + in a tag list. Only a single delimiter character may + occur between two tag values. A tag value may not + have a zero length. These constraints imply certain + restrictions on the contents of this object: + + - There cannot be a leading or trailing delimiter + character. + + - There cannot be multiple adjacent delimiter + characters. + + Some examples of valid tag lists are: + + - '' -- an empty list + + - 'acme' -- list of one tag + + - 'host router bridge' -- list of several tags + + Note that although a tag value may not have a length of + zero, an empty string is still valid. This indicates + an empty list (i.e. there are no tag values in the list). + + The use of the tag list to select table entries is + application and MIB specific. Typically, an application + will provide one or more tag values, and any entry + which contains some combination of these tag values + will be selected." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- +-- +-- The snmpTargetObjects group +-- +-- + +snmpTargetSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to facilitate modification of table + entries in the SNMP-TARGET-MIB module by multiple + managers. In particular, it is useful when modifying + the value of the snmpTargetAddrTagList object. + + The procedure for modifying the snmpTargetAddrTagList + object is as follows: + + + + 1. Retrieve the value of snmpTargetSpinLock and + of snmpTargetAddrTagList. + + 2. Generate a new value for snmpTargetAddrTagList. + + 3. Set the value of snmpTargetSpinLock to the + retrieved value, and the value of + snmpTargetAddrTagList to the new value. If + the set fails for the snmpTargetSpinLock + object, go back to step 1." + ::= { snmpTargetObjects 1 } + +snmpTargetAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of transport addresses to be used in the generation + of SNMP messages." + ::= { snmpTargetObjects 2 } + +snmpTargetAddrEntry OBJECT-TYPE + SYNTAX SnmpTargetAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A transport address to be used in the generation + of SNMP operations. + + Entries in the snmpTargetAddrTable are created and + deleted using the snmpTargetAddrRowStatus object." + INDEX { IMPLIED snmpTargetAddrName } + ::= { snmpTargetAddrTable 1 } + +SnmpTargetAddrEntry ::= SEQUENCE { + snmpTargetAddrName SnmpAdminString, + snmpTargetAddrTDomain TDomain, + snmpTargetAddrTAddress TAddress, + snmpTargetAddrTimeout TimeInterval, + snmpTargetAddrRetryCount Integer32, + snmpTargetAddrTagList SnmpTagList, + snmpTargetAddrParams SnmpAdminString, + snmpTargetAddrStorageType StorageType, + snmpTargetAddrRowStatus RowStatus +} + +snmpTargetAddrName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpTargetAddrEntry." + ::= { snmpTargetAddrEntry 1 } + +snmpTargetAddrTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the transport type of the address + contained in the snmpTargetAddrTAddress object." + ::= { snmpTargetAddrEntry 2 } + +snmpTargetAddrTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a transport address. The format of + this address depends on the value of the + snmpTargetAddrTDomain object." + ::= { snmpTargetAddrEntry 3 } + +snmpTargetAddrTimeout OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object should reflect the expected maximum round + trip time for communicating with the transport address + defined by this row. When a message is sent to this + address, and a response (if one is expected) is not + received within this time period, an implementation + may assume that the response will not be delivered. + + Note that the time interval that an application waits + for a response may actually be derived from the value + of this object. The method for deriving the actual time + interval is implementation dependent. One such method + is to derive the expected round trip time based on a + particular retransmission algorithm and on the number + of timeouts which have occurred. The type of message may + also be considered when deriving expected round trip + times for retransmissions. For example, if a message is + being sent with a securityLevel that indicates both + + + + authentication and privacy, the derived value may be + increased to compensate for extra processing time spent + during authentication and encryption processing." + DEFVAL { 1500 } + ::= { snmpTargetAddrEntry 4 } + +snmpTargetAddrRetryCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a default number of retries to be + attempted when a response is not received for a generated + message. An application may provide its own retry count, + in which case the value of this object is ignored." + DEFVAL { 3 } + ::= { snmpTargetAddrEntry 5 } + +snmpTargetAddrTagList OBJECT-TYPE + SYNTAX SnmpTagList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a list of tag values which are + used to select target addresses for a particular + operation." + DEFVAL { "" } + ::= { snmpTargetAddrEntry 6 } + +snmpTargetAddrParams OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies an entry in the + snmpTargetParamsTable. The identified entry + contains SNMP parameters to be used when generating + messages to be sent to this transport address." + ::= { snmpTargetAddrEntry 7 } + +snmpTargetAddrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + + + + DEFVAL { nonVolatile } + ::= { snmpTargetAddrEntry 8 } + +snmpTargetAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the snmpTargetAddrRowStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding instances of + snmpTargetAddrTDomain, snmpTargetAddrTAddress, and + snmpTargetAddrParams have all been set. + + The following objects may not be modified while the + value of this object is active(1): + - snmpTargetAddrTDomain + - snmpTargetAddrTAddress + An attempt to set these objects while the value of + snmpTargetAddrRowStatus is active(1) will result in + an inconsistentValue error." + ::= { snmpTargetAddrEntry 9 } + +snmpTargetParamsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetParamsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of SNMP target information to be used + in the generation of SNMP messages." + ::= { snmpTargetObjects 3 } + +snmpTargetParamsEntry OBJECT-TYPE + SYNTAX SnmpTargetParamsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of SNMP target information. + + + + Entries in the snmpTargetParamsTable are created and + deleted using the snmpTargetParamsRowStatus object." + INDEX { IMPLIED snmpTargetParamsName } + ::= { snmpTargetParamsTable 1 } + +SnmpTargetParamsEntry ::= SEQUENCE { + snmpTargetParamsName SnmpAdminString, + snmpTargetParamsMPModel SnmpMessageProcessingModel, + snmpTargetParamsSecurityModel SnmpSecurityModel, + snmpTargetParamsSecurityName SnmpAdminString, + snmpTargetParamsSecurityLevel SnmpSecurityLevel, + snmpTargetParamsStorageType StorageType, + snmpTargetParamsRowStatus RowStatus +} + +snmpTargetParamsName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpTargetParamsEntry." + ::= { snmpTargetParamsEntry 1 } + +snmpTargetParamsMPModel OBJECT-TYPE + SYNTAX SnmpMessageProcessingModel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Message Processing Model to be used when generating + SNMP messages using this entry." + ::= { snmpTargetParamsEntry 2 } + +snmpTargetParamsSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Security Model to be used when generating SNMP + messages using this entry. An implementation may + choose to return an inconsistentValue error if an + attempt is made to set this variable to a value + for a security model which the implementation does + not support." + ::= { snmpTargetParamsEntry 3 } + +snmpTargetParamsSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The securityName which identifies the Principal on + whose behalf SNMP messages will be generated using + this entry." + ::= { snmpTargetParamsEntry 4 } + +snmpTargetParamsSecurityLevel OBJECT-TYPE + SYNTAX SnmpSecurityLevel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Level of Security to be used when generating + SNMP messages using this entry." + ::= { snmpTargetParamsEntry 5 } + +snmpTargetParamsStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpTargetParamsEntry 6 } + +snmpTargetParamsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the snmpTargetParamsRowStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding + snmpTargetParamsMPModel, + snmpTargetParamsSecurityModel, + + + + snmpTargetParamsSecurityName, + and snmpTargetParamsSecurityLevel have all been set. + + The following objects may not be modified while the + value of this object is active(1): + - snmpTargetParamsMPModel + - snmpTargetParamsSecurityModel + - snmpTargetParamsSecurityName + - snmpTargetParamsSecurityLevel + An attempt to set these objects while the value of + snmpTargetParamsRowStatus is active(1) will result in + an inconsistentValue error." + ::= { snmpTargetParamsEntry 7 } + +snmpUnavailableContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMP + engine which were dropped because the context + contained in the message was unavailable." + ::= { snmpTargetObjects 4 } + +snmpUnknownContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMP + engine which were dropped because the context + contained in the message was unknown." + ::= { snmpTargetObjects 5 } + +-- +-- +-- Conformance information +-- +-- + +snmpTargetCompliances OBJECT IDENTIFIER ::= + { snmpTargetConformance 1 } +snmpTargetGroups OBJECT IDENTIFIER ::= + { snmpTargetConformance 2 } + +-- +-- +-- Compliance statements + + + +-- +-- + +snmpTargetCommandResponderCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which include + a command responder application." + MODULE -- This Module + MANDATORY-GROUPS { snmpTargetCommandResponderGroup } + ::= { snmpTargetCompliances 1 } + +snmpTargetBasicGroup OBJECT-GROUP + OBJECTS { + snmpTargetSpinLock, + snmpTargetAddrTDomain, + snmpTargetAddrTAddress, + snmpTargetAddrTagList, + snmpTargetAddrParams, + snmpTargetAddrStorageType, + snmpTargetAddrRowStatus, + snmpTargetParamsMPModel, + snmpTargetParamsSecurityModel, + snmpTargetParamsSecurityName, + snmpTargetParamsSecurityLevel, + snmpTargetParamsStorageType, + snmpTargetParamsRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing basic remote + configuration of management targets." + ::= { snmpTargetGroups 1 } + +snmpTargetResponseGroup OBJECT-GROUP + OBJECTS { + snmpTargetAddrTimeout, + snmpTargetAddrRetryCount + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration + of management targets for applications which generate + SNMP messages for which a response message would be + expected." + ::= { snmpTargetGroups 2 } + +snmpTargetCommandResponderGroup OBJECT-GROUP + + + + OBJECTS { + snmpUnavailableContexts, + snmpUnknownContexts + } + STATUS current + DESCRIPTION + "A collection of objects required for command responder + applications, used for counting error conditions." + ::= { snmpTargetGroups 3 } + +END diff --git a/mibs/ietf/SNMP-USER-BASED-SM-MIB b/mibs/ietf/SNMP-USER-BASED-SM-MIB new file mode 100644 index 0000000..bf4eec9 --- /dev/null +++ b/mibs/ietf/SNMP-USER-BASED-SM-MIB @@ -0,0 +1,959 @@ +SNMP-USER-BASED-SM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, + snmpModules, Counter32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TestAndIncr, + RowStatus, RowPointer, + StorageType, AutonomousType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString, SnmpEngineID, + snmpAuthProtocols, snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; + +snmpUsmMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" -- 16 Oct 2002, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In msg body: subscribe snmpv3 + + Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + email: mundy@tislabs.com + + + + phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor Uri Blumenthal + Lucent Technologies + postal: 67 Whippany Rd. + Whippany, NJ 07981 + USA + email: uri@lucent.com + phone: +1-973-386-2163 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + email: bwijnen@lucent.com + phone: +31-348-480-685 + " + DESCRIPTION "The management information definitions for the + SNMP User-based Security Model. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3414; + see the RFC itself for full legal notices. + " +-- Revision history + + REVISION "200210160000Z" -- 16 Oct 2002, midnight + DESCRIPTION "Changes in this revision: + - Updated references and contact info. + - Clarification to usmUserCloneFrom DESCRIPTION + clause + - Fixed 'command responder' into 'command generator' + in last para of DESCRIPTION clause of + usmUserTable. + This revision published as RFC3414. + " + REVISION "199901200000Z" -- 20 Jan 1999, midnight + DESCRIPTION "Clarifications, published as RFC2574" + + + + REVISION "199711200000Z" -- 20 Nov 1997, midnight + DESCRIPTION "Initial version, published as RFC2274" + + ::= { snmpModules 15 } + +-- Administrative assignments **************************************** + +usmMIBObjects OBJECT IDENTIFIER ::= { snmpUsmMIB 1 } +usmMIBConformance OBJECT IDENTIFIER ::= { snmpUsmMIB 2 } + +-- Identification of Authentication and Privacy Protocols ************ + +usmNoAuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "No Authentication Protocol." + ::= { snmpAuthProtocols 1 } + +usmHMACMD5AuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The HMAC-MD5-96 Digest Authentication Protocol." + REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti HMAC: + Keyed-Hashing for Message Authentication, + RFC2104, Feb 1997. + - Rivest, R., Message Digest Algorithm MD5, RFC1321. + " + ::= { snmpAuthProtocols 2 } + +usmHMACSHAAuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The HMAC-SHA-96 Digest Authentication Protocol." + REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti, HMAC: + Keyed-Hashing for Message Authentication, + RFC2104, Feb 1997. + - Secure Hash Algorithm. NIST FIPS 180-1. + " + ::= { snmpAuthProtocols 3 } + +usmNoPrivProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "No Privacy Protocol." + ::= { snmpPrivProtocols 1 } + +usmDESPrivProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The CBC-DES Symmetric Encryption Protocol." + REFERENCE "- Data Encryption Standard, National Institute of + Standards and Technology. Federal Information + Processing Standard (FIPS) Publication 46-1. + + + + Supersedes FIPS Publication 46, + (January, 1977; reaffirmed January, 1988). + + - Data Encryption Algorithm, American National + Standards Institute. ANSI X3.92-1981, + (December, 1980). + + - DES Modes of Operation, National Institute of + Standards and Technology. Federal Information + Processing Standard (FIPS) Publication 81, + (December, 1980). + + - Data Encryption Algorithm - Modes of Operation, + American National Standards Institute. + ANSI X3.106-1983, (May 1983). + " + ::= { snmpPrivProtocols 2 } + +-- Textual Conventions *********************************************** + +KeyChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Every definition of an object with this syntax must identify + a protocol P, a secret key K, and a hash algorithm H + that produces output of L octets. + + The object's value is a manager-generated, partially-random + value which, when modified, causes the value of the secret + key K, to be modified via a one-way function. + + The value of an instance of this object is the concatenation + of two components: first a 'random' component and then a + 'delta' component. + + The lengths of the random and delta components + are given by the corresponding value of the protocol P; + if P requires K to be a fixed length, the length of both the + random and delta components is that fixed length; if P + allows the length of K to be variable up to a particular + maximum length, the length of the random component is that + maximum length and the length of the delta component is any + length less than or equal to that maximum length. + For example, usmHMACMD5AuthProtocol requires K to be a fixed + length of 16 octets and L - of 16 octets. + usmHMACSHAAuthProtocol requires K to be a fixed length of + 20 octets and L - of 20 octets. Other protocols may define + other sizes, as deemed appropriate. + + + + When a requester wants to change the old key K to a new + key keyNew on a remote entity, the 'random' component is + obtained from either a true random generator, or from a + pseudorandom generator, and the 'delta' component is + computed as follows: + + - a temporary variable is initialized to the existing value + of K; + - if the length of the keyNew is greater than L octets, + then: + - the random component is appended to the value of the + temporary variable, and the result is input to the + the hash algorithm H to produce a digest value, and + the temporary variable is set to this digest value; + - the value of the temporary variable is XOR-ed with + the first (next) L-octets (16 octets in case of MD5) + of the keyNew to produce the first (next) L-octets + (16 octets in case of MD5) of the 'delta' component. + - the above two steps are repeated until the unused + portion of the keyNew component is L octets or less, + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value; + - this digest value, truncated if necessary to be the same + length as the unused portion of the keyNew, is XOR-ed + with the unused portion of the keyNew to produce the + (final portion of the) 'delta' component. + + For example, using MD5 as the hash algorithm H: + + iterations = (lenOfDelta - 1)/16; /* integer division */ + temp = keyOld; + for (i = 0; i < iterations; i++) { + temp = MD5 (temp || random); + delta[i*16 .. (i*16)+15] = + temp XOR keyNew[i*16 .. (i*16)+15]; + } + temp = MD5 (temp || random); + delta[i*16 .. lenOfDelta-1] = + temp XOR keyNew[i*16 .. lenOfDelta-1]; + + The 'random' and 'delta' components are then concatenated as + described above, and the resulting octet string is sent to + the recipient as the new value of an instance of this object. + + At the receiver side, when an instance of this object is set + to a new value, then a new value of K is computed as follows: + + + + + - a temporary variable is initialized to the existing value + of K; + - if the length of the delta component is greater than L + octets, then: + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value, and the + temporary variable is set to this digest value; + - the value of the temporary variable is XOR-ed with + the first (next) L-octets (16 octets in case of MD5) + of the delta component to produce the first (next) + L-octets (16 octets in case of MD5) of the new value + of K. + - the above two steps are repeated until the unused + portion of the delta component is L octets or less, + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value; + - this digest value, truncated if necessary to be the same + length as the unused portion of the delta component, is + XOR-ed with the unused portion of the delta component to + produce the (final portion of the) new value of K. + + For example, using MD5 as the hash algorithm H: + + iterations = (lenOfDelta - 1)/16; /* integer division */ + temp = keyOld; + for (i = 0; i < iterations; i++) { + temp = MD5 (temp || random); + keyNew[i*16 .. (i*16)+15] = + temp XOR delta[i*16 .. (i*16)+15]; + } + temp = MD5 (temp || random); + keyNew[i*16 .. lenOfDelta-1] = + temp XOR delta[i*16 .. lenOfDelta-1]; + + The value of an object with this syntax, whenever it is + retrieved by the management protocol, is always the zero + length string. + + Note that the keyOld and keyNew are the localized keys. + + Note that it is probably wise that when an SNMP entity sends + a SetRequest to change a key, that it keeps a copy of the old + key until it has confirmed that the key change actually + succeeded. + " + SYNTAX OCTET STRING + + + +-- Statistics for the User-based Security Model ********************** + + +usmStats OBJECT IDENTIFIER ::= { usmMIBObjects 1 } + + +usmStatsUnsupportedSecLevels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they requested a + securityLevel that was unknown to the SNMP engine + or otherwise unavailable. + " + ::= { usmStats 1 } + +usmStatsNotInTimeWindows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they appeared + outside of the authoritative SNMP engine's window. + " + ::= { usmStats 2 } + +usmStatsUnknownUserNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced a + user that was not known to the SNMP engine. + " + ::= { usmStats 3 } + +usmStatsUnknownEngineIDs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced an + snmpEngineID that was not known to the SNMP engine. + " + ::= { usmStats 4 } + +usmStatsWrongDigests OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they didn't + contain the expected digest value. + " + ::= { usmStats 5 } + +usmStatsDecryptionErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they could not be + decrypted. + " + ::= { usmStats 6 } + +-- The usmUser Group ************************************************ + +usmUser OBJECT IDENTIFIER ::= { usmMIBObjects 2 } + +usmUserSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION "An advisory lock used to allow several cooperating + Command Generator Applications to coordinate their + use of facilities to alter secrets in the + usmUserTable. + " + ::= { usmUser 1 } + +-- The table of valid users for the User-based Security Model ******** + +usmUserTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of users configured in the SNMP engine's + Local Configuration Datastore (LCD). + + To create a new user (i.e., to instantiate a new + conceptual row in this table), it is recommended to + follow this procedure: + + 1) GET(usmUserSpinLock.0) and save in sValue. + + + + 2) SET(usmUserSpinLock.0=sValue, + usmUserCloneFrom=templateUser, + usmUserStatus=createAndWait) + You should use a template user to clone from + which has the proper auth/priv protocol defined. + + If the new user is to use privacy: + + 3) generate the keyChange value based on the secret + privKey of the clone-from user and the secret key + to be used for the new user. Let us call this + pkcValue. + 4) GET(usmUserSpinLock.0) and save in sValue. + 5) SET(usmUserSpinLock.0=sValue, + usmUserPrivKeyChange=pkcValue + usmUserPublic=randomValue1) + 6) GET(usmUserPulic) and check it has randomValue1. + If not, repeat steps 4-6. + + If the new user will never use privacy: + + 7) SET(usmUserPrivProtocol=usmNoPrivProtocol) + + If the new user is to use authentication: + + 8) generate the keyChange value based on the secret + authKey of the clone-from user and the secret key + to be used for the new user. Let us call this + akcValue. + 9) GET(usmUserSpinLock.0) and save in sValue. + 10) SET(usmUserSpinLock.0=sValue, + usmUserAuthKeyChange=akcValue + usmUserPublic=randomValue2) + 11) GET(usmUserPulic) and check it has randomValue2. + If not, repeat steps 9-11. + + If the new user will never use authentication: + + 12) SET(usmUserAuthProtocol=usmNoAuthProtocol) + + Finally, activate the new user: + + 13) SET(usmUserStatus=active) + + The new user should now be available and ready to be + used for SNMPv3 communication. Note however that access + to MIB data must be provided via configuration of the + SNMP-VIEW-BASED-ACM-MIB. + + + + The use of usmUserSpinlock is to avoid conflicts with + another SNMP command generator application which may + also be acting on the usmUserTable. + " + ::= { usmUser 2 } + +usmUserEntry OBJECT-TYPE + SYNTAX UsmUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A user configured in the SNMP engine's Local + Configuration Datastore (LCD) for the User-based + Security Model. + " + INDEX { usmUserEngineID, + usmUserName + } + ::= { usmUserTable 1 } + +UsmUserEntry ::= SEQUENCE + { + usmUserEngineID SnmpEngineID, + usmUserName SnmpAdminString, + usmUserSecurityName SnmpAdminString, + usmUserCloneFrom RowPointer, + usmUserAuthProtocol AutonomousType, + usmUserAuthKeyChange KeyChange, + usmUserOwnAuthKeyChange KeyChange, + usmUserPrivProtocol AutonomousType, + usmUserPrivKeyChange KeyChange, + usmUserOwnPrivKeyChange KeyChange, + usmUserPublic OCTET STRING, + usmUserStorageType StorageType, + usmUserStatus RowStatus + } + +usmUserEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + + In a simple agent, this value is always that agent's + own snmpEngineID value. + + The value can also take the value of the snmpEngineID + of a remote SNMP engine with which this user can + communicate. + + + + " + ::= { usmUserEntry 1 } + +usmUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A human readable string representing the name of + the user. + + This is the (User-based Security) Model dependent + security ID. + " + ::= { usmUserEntry 2 } + +usmUserSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A human readable string representing the user in + Security Model independent format. + + The default transformation of the User-based Security + Model dependent security ID to the securityName and + vice versa is the identity function so that the + securityName is the same as the userName. + " + ::= { usmUserEntry 3 } + +usmUserCloneFrom OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION "A pointer to another conceptual row in this + usmUserTable. The user in this other conceptual + row is called the clone-from user. + + When a new user is created (i.e., a new conceptual + row is instantiated in this table), the privacy and + authentication parameters of the new user must be + cloned from its clone-from user. These parameters are: + - authentication protocol (usmUserAuthProtocol) + - privacy protocol (usmUserPrivProtocol) + They will be copied regardless of what the current + value is. + + Cloning also causes the initial values of the secret + authentication key (authKey) and the secret encryption + + + + key (privKey) of the new user to be set to the same + values as the corresponding secrets of the clone-from + user to allow the KeyChange process to occur as + required during user creation. + + The first time an instance of this object is set by + a management operation (either at or after its + instantiation), the cloning process is invoked. + Subsequent writes are successful but invoke no + action to be taken by the receiver. + The cloning process fails with an 'inconsistentName' + error if the conceptual row representing the + clone-from user does not exist or is not in an active + state when the cloning process is invoked. + + When this object is read, the ZeroDotZero OID + is returned. + " + ::= { usmUserEntry 4 } + +usmUserAuthProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An indication of whether messages sent on behalf of + this user to/from the SNMP engine identified by + usmUserEngineID, can be authenticated, and if so, + the type of authentication protocol which is used. + + An instance of this object is created concurrently + with the creation of any other object instance for + the same user (i.e., as part of the processing of + the set operation which creates the first object + instance in the same conceptual row). + + If an initial set operation (i.e. at row creation time) + tries to set a value for an unknown or unsupported + protocol, then a 'wrongValue' error must be returned. + + The value will be overwritten/set when a set operation + is performed on the corresponding instance of + usmUserCloneFrom. + + Once instantiated, the value of such an instance of + this object can only be changed via a set operation to + the value of the usmNoAuthProtocol. + + If a set operation tries to change the value of an + + + + existing instance of this object to any value other + than usmNoAuthProtocol, then an 'inconsistentValue' + error must be returned. + + If a set operation tries to set the value to the + usmNoAuthProtocol while the usmUserPrivProtocol value + in the same row is not equal to usmNoPrivProtocol, + then an 'inconsistentValue' error must be returned. + That means that an SNMP command generator application + must first ensure that the usmUserPrivProtocol is set + to the usmNoPrivProtocol value before it can set + the usmUserAuthProtocol value to usmNoAuthProtocol. + " + DEFVAL { usmNoAuthProtocol } + ::= { usmUserEntry 5 } + +usmUserAuthKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 + -- typically (SIZE (0 | 40)) for HMACSHA + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An object, which when modified, causes the secret + authentication key used for messages sent on behalf + of this user to/from the SNMP engine identified by + usmUserEngineID, to be modified via a one-way + function. + + The associated protocol is the usmUserAuthProtocol. + The associated secret key is the user's secret + authentication key (authKey). The associated hash + algorithm is the algorithm used by the user's + usmUserAuthProtocol. + + When creating a new user, it is an 'inconsistentName' + error for a set operation to refer to this object + unless it is previously or concurrently initialized + through a set operation on the corresponding instance + of usmUserCloneFrom. + + When the value of the corresponding usmUserAuthProtocol + is usmNoAuthProtocol, then a set is successful, but + effectively is a no-op. + + When this object is read, the zero-length (empty) + string is returned. + + The recommended way to do a key change is as follows: + + + + + 1) GET(usmUserSpinLock.0) and save in sValue. + 2) generate the keyChange value based on the old + (existing) secret key and the new secret key, + let us call this kcValue. + + If you do the key change on behalf of another user: + + 3) SET(usmUserSpinLock.0=sValue, + usmUserAuthKeyChange=kcValue + usmUserPublic=randomValue) + + If you do the key change for yourself: + + 4) SET(usmUserSpinLock.0=sValue, + usmUserOwnAuthKeyChange=kcValue + usmUserPublic=randomValue) + + If you get a response with error-status of noError, + then the SET succeeded and the new key is active. + If you do not get a response, then you can issue a + GET(usmUserPublic) and check if the value is equal + to the randomValue you did send in the SET. If so, then + the key change succeeded and the new key is active + (probably the response got lost). If not, then the SET + request probably never reached the target and so you + can start over with the procedure above. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 6 } + +usmUserOwnAuthKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 + -- typically (SIZE (0 | 40)) for HMACSHA + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Behaves exactly as usmUserAuthKeyChange, with one + notable difference: in order for the set operation + to succeed, the usmUserName of the operation + requester must match the usmUserName that + indexes the row which is targeted by this + operation. + In addition, the USM security model must be + used for this operation. + + The idea here is that access to this column can be + public, since it will only allow a user to change + his own secret authentication key (authKey). + Note that this can only be done once the row is active. + + + + When a set is received and the usmUserName of the + requester is not the same as the umsUserName that + indexes the row which is targeted by this operation, + then a 'noAccess' error must be returned. + + When a set is received and the security model in use + is not USM, then a 'noAccess' error must be returned. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 7 } + +usmUserPrivProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An indication of whether messages sent on behalf of + this user to/from the SNMP engine identified by + usmUserEngineID, can be protected from disclosure, + and if so, the type of privacy protocol which is used. + + An instance of this object is created concurrently + with the creation of any other object instance for + the same user (i.e., as part of the processing of + the set operation which creates the first object + instance in the same conceptual row). + + If an initial set operation (i.e. at row creation time) + tries to set a value for an unknown or unsupported + protocol, then a 'wrongValue' error must be returned. + + The value will be overwritten/set when a set operation + is performed on the corresponding instance of + usmUserCloneFrom. + + Once instantiated, the value of such an instance of + this object can only be changed via a set operation to + the value of the usmNoPrivProtocol. + + If a set operation tries to change the value of an + existing instance of this object to any value other + than usmNoPrivProtocol, then an 'inconsistentValue' + error must be returned. + + Note that if any privacy protocol is used, then you + must also use an authentication protocol. In other + words, if usmUserPrivProtocol is set to anything else + than usmNoPrivProtocol, then the corresponding instance + of usmUserAuthProtocol cannot have a value of + + + + usmNoAuthProtocol. If it does, then an + 'inconsistentValue' error must be returned. + " + DEFVAL { usmNoPrivProtocol } + ::= { usmUserEntry 8 } + +usmUserPrivKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An object, which when modified, causes the secret + encryption key used for messages sent on behalf + of this user to/from the SNMP engine identified by + usmUserEngineID, to be modified via a one-way + function. + + The associated protocol is the usmUserPrivProtocol. + The associated secret key is the user's secret + privacy key (privKey). The associated hash + algorithm is the algorithm used by the user's + usmUserAuthProtocol. + + When creating a new user, it is an 'inconsistentName' + error for a set operation to refer to this object + unless it is previously or concurrently initialized + through a set operation on the corresponding instance + of usmUserCloneFrom. + + When the value of the corresponding usmUserPrivProtocol + is usmNoPrivProtocol, then a set is successful, but + effectively is a no-op. + + When this object is read, the zero-length (empty) + string is returned. + See the description clause of usmUserAuthKeyChange for + a recommended procedure to do a key change. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 9 } + +usmUserOwnPrivKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Behaves exactly as usmUserPrivKeyChange, with one + notable difference: in order for the Set operation + to succeed, the usmUserName of the operation + requester must match the usmUserName that indexes + + + + the row which is targeted by this operation. + In addition, the USM security model must be + used for this operation. + + The idea here is that access to this column can be + public, since it will only allow a user to change + his own secret privacy key (privKey). + Note that this can only be done once the row is active. + + When a set is received and the usmUserName of the + requester is not the same as the umsUserName that + indexes the row which is targeted by this operation, + then a 'noAccess' error must be returned. + + When a set is received and the security model in use + is not USM, then a 'noAccess' error must be returned. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 10 } + +usmUserPublic OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "A publicly-readable value which can be written as part + of the procedure for changing a user's secret + authentication and/or privacy key, and later read to + determine whether the change of the secret was + effected. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 11 } + +usmUserStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to: + + - usmUserAuthKeyChange, usmUserOwnAuthKeyChange + and usmUserPublic for a user who employs + authentication, and + - usmUserPrivKeyChange, usmUserOwnPrivKeyChange + and usmUserPublic for a user who employs + privacy. + + + + Note that any user who employs authentication or + privacy must allow its secret(s) to be updated and + thus cannot be 'readOnly'. + + If an initial set operation tries to set the value to + 'readOnly' for a user who employs authentication or + privacy, then an 'inconsistentValue' error must be + returned. Note that if the value has been previously + set (implicit or explicit) to any value, then the rules + as defined in the StorageType Textual Convention apply. + + It is an implementation issue to decide if a SET for + a readOnly or permanent row is accepted at all. In some + contexts this may make sense, in others it may not. If + a SET for a readOnly or permanent row is not accepted + at all, then a 'wrongValue' error must be returned. + " + DEFVAL { nonVolatile } + ::= { usmUserEntry 12 } + +usmUserStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the usmUserStatus column + is 'notReady'. + + In particular, a newly created row for a user who + employs authentication, cannot be made active until the + corresponding usmUserCloneFrom and usmUserAuthKeyChange + have been set. + + Further, a newly created row for a user who also + employs privacy, cannot be made active until the + usmUserPrivKeyChange has been set. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified, + except for usmUserOwnAuthKeyChange and + usmUserOwnPrivKeyChange. For these 2 objects, the + + + + value of usmUserStatus MUST be active. + " + ::= { usmUserEntry 13 } + +-- Conformance Information ******************************************* + +usmMIBCompliances OBJECT IDENTIFIER ::= { usmMIBConformance 1 } +usmMIBGroups OBJECT IDENTIFIER ::= { usmMIBConformance 2 } + +-- Compliance statements + +usmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP-USER-BASED-SM-MIB. + " + + MODULE -- this module + MANDATORY-GROUPS { usmMIBBasicGroup } + + OBJECT usmUserAuthProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT usmUserPrivProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { usmMIBCompliances 1 } + +-- Units of compliance +usmMIBBasicGroup OBJECT-GROUP + OBJECTS { + usmStatsUnsupportedSecLevels, + usmStatsNotInTimeWindows, + usmStatsUnknownUserNames, + usmStatsUnknownEngineIDs, + usmStatsWrongDigests, + usmStatsDecryptionErrors, + usmUserSpinLock, + usmUserSecurityName, + usmUserCloneFrom, + usmUserAuthProtocol, + usmUserAuthKeyChange, + usmUserOwnAuthKeyChange, + usmUserPrivProtocol, + usmUserPrivKeyChange, + usmUserOwnPrivKeyChange, + + + + usmUserPublic, + usmUserStorageType, + usmUserStatus + } + STATUS current + DESCRIPTION "A collection of objects providing for configuration + of an SNMP engine which implements the SNMP + User-based Security Model. + " + ::= { usmMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-USM-AES-MIB b/mibs/ietf/SNMP-USM-AES-MIB new file mode 100644 index 0000000..a1dd75f --- /dev/null +++ b/mibs/ietf/SNMP-USM-AES-MIB @@ -0,0 +1,68 @@ +SNMP-USM-AES-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + snmpModules FROM SNMPv2-SMI -- [RFC2578] + snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +snmpUsmAesMIB MODULE-IDENTITY + LAST-UPDATED "200406140000Z" + ORGANIZATION "IETF" + CONTACT-INFO "Uri Blumenthal + Lucent Technologies / Bell Labs + 67 Whippany Rd. + 14D-318 + Whippany, NJ 07981, USA + 973-386-2163 + uri@bell-labs.com + + Fabio Maino + Andiamo Systems, Inc. + 375 East Tasman Drive + San Jose, CA 95134, USA + 408-853-7530 + fmaino@andiamo.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706, USA + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION "Definitions of Object Identities needed for + the use of AES by SNMP's User-based Security + Model. + + Copyright (C) The Internet Society (2004). + + This version of this MIB module is part of RFC 3826; + see the RFC itself for full legal notices. + Supplementary information may be available on + http://www.ietf.org/copyrights/ianamib.html." + + + + + + + REVISION "200406140000Z" + DESCRIPTION "Initial version, published as RFC3826" + + ::= { snmpModules 20 } + +usmAesCfb128Protocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The CFB128-AES-128 Privacy Protocol." + REFERENCE "- Specification for the ADVANCED ENCRYPTION + STANDARD. Federal Information Processing + Standard (FIPS) Publication 197. + (November 2001). + + - Dworkin, M., NIST Recommendation for Block + Cipher Modes of Operation, Methods and + Techniques. NIST Special Publication 800-38A + (December 2001). + " + ::= { snmpPrivProtocols 4 } + +END diff --git a/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB b/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB new file mode 100644 index 0000000..ee2076a --- /dev/null +++ b/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB @@ -0,0 +1,537 @@ +SNMP-USM-DH-OBJECTS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + -- OBJECT-IDENTITY, + experimental, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + usmUserEntry + FROM SNMP-USER-BASED-SM-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +snmpUsmDHObjectsMIB MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March 2000, Midnight + ORGANIZATION "Excite@Home" + CONTACT-INFO "Author: Mike StJohns + Postal: Excite@Home + 450 Broadway + Redwood City, CA 94063 + Email: stjohns@corp.home.net + Phone: +1-650-556-5368" + + DESCRIPTION + "The management information definitions for providing forward + secrecy for key changes for the usmUserTable, and for providing a + method for 'kickstarting' access to the agent via a Diffie-Helman + key agreement." + + REVISION "200003060000Z" + DESCRIPTION + "Initial version published as RFC 2786." + + + ::= { experimental 101 } -- IANA DHKEY-CHANGE 101 + +-- Administrative assignments + +usmDHKeyObjects OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 1 } +usmDHKeyConformance OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 2 } + +-- Textual conventions + +DHKeyChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Upon initialization, or upon creation of a row containing an + object of this type, and after any successful SET of this value, a + GET of this value returns 'y' where y = g^xa MOD p, and where g is + the base from usmDHParameters, p is the prime from + usmDHParameters, and xa is a new random integer selected by the + agent in the interval 2^(l-1) <= xa < 2^l < p-1. 'l' is the + optional privateValueLength from usmDHParameters in bits. If 'l' + is omitted, then xa (and xr below) is selected in the interval 0 + <= xa < p-1. y is expressed as an OCTET STRING 'PV' of length 'k' + which satisfies + + k + y = SUM 2^(8(k-i)) PV'i + i=1 + + where PV1,...,PVk are the octets of PV from first to last, and + where PV1 <> 0. + + A successful SET consists of the value 'y' expressed as an OCTET + STRING as above concatenated with the value 'z'(expressed as an + OCTET STRING in the same manner as y) where z = g^xr MOD p, where + g, p and l are as above, and where xr is a new random integer + selected by the manager in the interval 2^(l-1) <= xr < 2^l < + p-1. A SET to an object of this type will fail with the error + wrongValue if the current 'y' does not match the 'y' portion of + the value of the varbind for the object. (E.g. GET yout, SET + concat(yin, z), yout <> yin). + + Note that the private values xa and xr are never transmitted from + manager to device or vice versa, only the values y and z. + Obviously, these values must be retained until a successful SET on + the associated object. + + The shared secret 'sk' is calculated at the agent as sk = z^xa MOD + p, and at the manager as sk = y^xr MOD p. + + Each object definition of this type MUST describe how to map from + the shared secret 'sk' to the operational key value used by the + protocols and operations related to the object. In general, if n + bits of key are required, the author suggests using the n + right-most bits of the shared secret as the operational key value." + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS #3; + RSA Laboratories, November 1993" + SYNTAX OCTET STRING + +-- Diffie Hellman public values + +usmDHPublicObjects OBJECT IDENTIFIER ::= { usmDHKeyObjects 1 } + +usmDHParameters OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The public Diffie-Hellman parameters for doing a Diffie-Hellman + key agreement for this device. This is encoded as an ASN.1 + DHParameter per PKCS #3, section 9. E.g. + + DHParameter ::= SEQUENCE { + prime INTEGER, -- p + base INTEGER, -- g + privateValueLength INTEGER OPTIONAL } + + + Implementors are encouraged to use either the values from + Oakley Group 1 or the values of from Oakley Group 2 as specified + in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the + default for this object. Other values may be used, but the + security properties of those values MUST be well understood and + MUST meet the requirements of PKCS #3 for the selection of + Diffie-Hellman primes. + + In addition, any time usmDHParameters changes, all values of + type DHKeyChange will change and new random numbers MUST be + generated by the agent for each DHKeyChange object." + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS #3, + RSA Laboratories, November 1993 + -- The Internet Key Exchange, RFC 2409, November 1998, + Sec 6.1, 6.2" + ::= { usmDHPublicObjects 1 } + +usmDHUserKeyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmDHUserKeyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table augments and extends the usmUserTable and provides + 4 objects which exactly mirror the objects in that table with the + textual convention of 'KeyChange'. This extension allows key + changes to be done in a manner where the knowledge of the current + secret plus knowledge of the key change data exchanges (e.g. via + wiretapping) will not reveal the new key." + ::= { usmDHPublicObjects 2 } + +usmDHUserKeyEntry OBJECT-TYPE + SYNTAX UsmDHUserKeyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of DHKeyChange objects which augment or replace the + functionality of the KeyChange objects in the base table row." + AUGMENTS { usmUserEntry } + ::= {usmDHUserKeyTable 1 } + +UsmDHUserKeyEntry ::= SEQUENCE { + usmDHUserAuthKeyChange DHKeyChange, + usmDHUserOwnAuthKeyChange DHKeyChange, + usmDHUserPrivKeyChange DHKeyChange, + usmDHUserOwnPrivKeyChange DHKeyChange + } + +usmDHUserAuthKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change any given user's Authentication Key + using a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserAuthProtocol, are installed as the operational + authentication key for this row after a successful SET." + ::= { usmDHUserKeyEntry 1 } + +usmDHUserOwnAuthKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change the agents own Authentication Key + using a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserAuthProtocol, are installed as the operational + authentication key for this row after a successful SET." + ::= { usmDHUserKeyEntry 2 } + +usmDHUserPrivKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change any given user's Privacy Key using + a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserPrivProtocol, are installed as the operational privacy key + for this row after a successful SET." + ::= { usmDHUserKeyEntry 3 } + +usmDHUserOwnPrivKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change the agent's own Privacy Key using a + Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserPrivProtocol, are installed as the operational privacy key + for this row after a successful SET." + ::= { usmDHUserKeyEntry 4 } + +usmDHKickstartGroup OBJECT IDENTIFIER ::= { usmDHKeyObjects 2 } + +usmDHKickstartTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmDHKickstartEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of mappings between zero or more Diffie-Helman key + agreement values and entries in the usmUserTable. Entries in this + table are created by providing the associated device with a + Diffie-Helman public value and a usmUserName/usmUserSecurityName + pair during initialization. How these values are provided is + outside the scope of this MIB, but could be provided manually, or + through a configuration file. Valid public value/name pairs + result in the creation of a row in this table as well as the + creation of an associated row (with keys derived as indicated) in + the usmUserTable. The actual access the related usmSecurityName + has is dependent on the entries in the VACM tables. In general, + an implementor will specify one or more standard security names + and will provide entries in the VACM tables granting various + levels of access to those names. The actual content of the VACM + table is beyond the scope of this MIB. + + Note: This table is expected to be readable without authentication + using the usmUserSecurityName 'dhKickstart'. See the conformance + statements for details." + ::= { usmDHKickstartGroup 1 } + +usmDHKickstartEntry OBJECT-TYPE + SYNTAX UsmDHKickstartEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "An entry in the usmDHKickstartTable. The agent SHOULD either + delete this entry or mark it as inactive upon a successful SET of + any of the KeyChange-typed objects in the usmUserEntry or upon a + successful SET of any of the DHKeyChange-typed objects in the + usmDhKeyChangeEntry where the related usmSecurityName (e.g. row of + usmUserTable or row of ushDhKeyChangeTable) equals this entry's + usmDhKickstartSecurityName. In otherwords, once you've changed + one or more of the keys for a row in usmUserTable with a + particular security name, the row in this table with that same + security name is no longer useful or meaningful." + + INDEX { usmDHKickstartIndex } + ::= {usmDHKickstartTable 1 } + +UsmDHKickstartEntry ::= SEQUENCE { + usmDHKickstartIndex Integer32, + usmDHKickstartMyPublic OCTET STRING, + usmDHKickstartMgrPublic OCTET STRING, + usmDHKickstartSecurityName SnmpAdminString + } + +usmDHKickstartIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index value for this row." + ::= { usmDHKickstartEntry 1 } + +usmDHKickstartMyPublic OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The agent's Diffie-Hellman public value for this row. At + initialization, the agent generates a random number and derives + its public value from that number. This public value is published + here. This public value 'y' equals g^r MOD p where g is the from + the set of Diffie-Hellman parameters, p is the prime from those + parameters, and r is a random integer selected by the agent in the + interval 2^(l-1) <= r < p-1 < 2^l. If l is unspecified, then r is + a random integer selected in the interval 0 <= r < p-1 + + The public value is expressed as an OCTET STRING 'PV' of length + 'k' which satisfies + + k + y = SUM 2^(8(k-i)) PV'i + i = 1 + + where PV1,...,PVk are the octets of PV from first to last, and + where PV1 != 0. + + + The following DH parameters (Oakley group #2, RFC 2409, sec 6.1, + 6.2) are used for this object: + + g = 2 + p = FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 + FFFFFFFF FFFFFFFF + l=1024 + " + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS#3v1.4; + RSA Laboratories, November 1993 + -- The Internet Key Exchange, RFC2409; + Harkins, D., Carrel, D.; November 1998" + ::= { usmDHKickstartEntry 2 } + +usmDHKickstartMgrPublic OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The manager's Diffie-Hellman public value for this row. Note + that this value is not set via the SNMP agent, but may be set via + some out of band method, such as the device's configuration file. + The manager calculates this value in the same manner and using the + same parameter set as the agent does. E.g. it selects a random + number 'r', calculates y = g^r mod p and provides 'y' as the + public number expressed as an OCTET STRING. See + usmDHKickstartMyPublic for details. + + When this object is set with a valid value during initialization, + a row is created in the usmUserTable with the following values: + + usmUserEngineID localEngineID + usmUserName [value of usmDHKickstartSecurityName] + usmUserSecurityName [value of usmDHKickstartSecurityName] + usmUserCloneFrom ZeroDotZero + usmUserAuthProtocol usmHMACMD5AuthProtocol + usmUserAuthKeyChange -- derived from set value + usmUserOwnAuthKeyChange -- derived from set value + usmUserPrivProtocol usmDESPrivProtocol + usmUserPrivKeyChange -- derived from set value + usmUserOwnPrivKeyChange -- derived from set value + usmUserPublic '' + usmUserStorageType permanent + usmUserStatus active + + A shared secret 'sk' is calculated at the agent as sk = + mgrPublic^r mod p where r is the agents random number and p is the + DH prime from the common parameters. The underlying privacy key + for this row is derived from sk by applying the key derivation + function PBKDF2 defined in PKCS#5v2.0 with a salt of 0xd1310ba6, + and iterationCount of 500, a keyLength of 16 (for + usmDESPrivProtocol), and a prf (pseudo random function) of + 'id-hmacWithSHA1'. The underlying authentication key for this row + is derived from sk by applying the key derivation function PBKDF2 + with a salt of 0x98dfb5ac , an interation count of 500, a + keyLength of 16 (for usmHMAC5AuthProtocol), and a prf of + 'id-hmacWithSHA1'. Note: The salts are the first two words in the + ks0 [key schedule 0] of the BLOWFISH cipher from 'Applied + Cryptography' by Bruce Schnier - they could be any relatively + random string of bits. + + The manager can use its knowledge of its own random number and the + agent's public value to kickstart its access to the agent in a + secure manner. Note that the security of this approach is + directly related to the strength of the authorization security of + the out of band provisioning of the managers public value + (e.g. the configuration file), but is not dependent at all on the + strength of the confidentiality of the out of band provisioning + data." + REFERENCE + "-- Password-Based Cryptography Standard, PKCS#5v2.0; + RSA Laboratories, March 1999 + -- Applied Cryptography, 2nd Ed.; B. Schneier, + Counterpane Systems; John Wiley & Sons, 1996" + ::= { usmDHKickstartEntry 3 } + +usmDHKickstartSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The usmUserName and usmUserSecurityName in the usmUserTable + associated with this row. This is provided in the same manner and + at the same time as the usmDHKickstartMgrPublic value - + e.g. possibly manually, or via the device's configuration file." + ::= { usmDHKickstartEntry 4 } + +-- Conformance Information + +usmDHKeyMIBCompliances OBJECT IDENTIFIER ::= { usmDHKeyConformance 1 } +usmDHKeyMIBGroups OBJECT IDENTIFIER ::= { usmDHKeyConformance 2 } + +-- Compliance statements + +usmDHKeyMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for this module." + MODULE + GROUP usmDHKeyMIBBasicGroup + DESCRIPTION + "This group MAY be implemented by any agent which + implements the usmUserTable and which wishes to provide the + ability to change user and agent authentication and privacy + keys via Diffie-Hellman key exchanges." + + GROUP usmDHKeyParamGroup + DESCRIPTION + "This group MUST be implemented by any agent which + implements a MIB containing the DHKeyChange Textual + Convention defined in this module." + + GROUP usmDHKeyKickstartGroup + DESCRIPTION + "This group MAY be implemented by any agent which + implements the usmUserTable and which wishes the ability to + populate the USM table based on out-of-band provided DH + ignition values. + Any agent implementing this group is expected to provide + preinstalled entries in the vacm tables as follows: + + In the usmUserTable: This entry allows access to the + system and dhKickstart groups + + usmUserEngineID localEngineID + usmUserName 'dhKickstart' + usmUserSecurityName 'dhKickstart' + usmUserCloneFrom ZeroDotZero + usmUserAuthProtocol none + usmUserAuthKeyChange '' + usmUserOwnAuthKeyChange '' + usmUserPrivProtocol none + usmUserPrivKeyChange '' + usmUserOwnPrivKeyChange '' + usmUserPublic '' + usmUserStorageType permanent + usmUserStatus active + + In the vacmSecurityToGroupTable: This maps the initial + user into the accessible objects. + + vacmSecurityModel 3 (USM) + vacmSecurityName 'dhKickstart' + vacmGroupName 'dhKickstart' + vacmSecurityToGroupStorageType permanent + vacmSecurityToGroupStatus active + + In the vacmAccessTable: Group name to view name translation. + + vacmGroupName 'dhKickstart' + vacmAccessContextPrefix '' + vacmAccessSecurityModel 3 (USM) + vacmAccessSecurityLevel noAuthNoPriv + vacmAccessContextMatch exact + vacmAccessReadViewName 'dhKickRestricted' + vacmAccessWriteViewName '' + vacmAccessNotifyViewName 'dhKickRestricted' + vacmAccessStorageType permanent + vacmAccessStatus active + + In the vacmViewTreeFamilyTable: Two entries to allow the + initial entry to access the system and kickstart groups. + + vacmViewTreeFamilyViewName 'dhKickRestricted' + vacmViewTreeFamilySubtree 1.3.6.1.2.1.1 (system) + vacmViewTreeFamilyMask '' + vacmViewTreeFamilyType 1 + vacmViewTreeFamilyStorageType permanent + vacmViewTreeFamilyStatus active + + vacmViewTreeFamilyViewName 'dhKickRestricted' + vacmViewTreeFamilySubtree (usmDHKickstartTable OID) + vacmViewTreeFamilyMask '' + vacmViewTreeFamilyType 1 + vacmViewTreeFamilyStorageType permanent + vacmViewTreeFamilyStatus active + " + + OBJECT usmDHParameters + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only for + any device." + + ::= { usmDHKeyMIBCompliances 1 } + +-- Units of Compliance + +usmDHKeyMIBBasicGroup OBJECT-GROUP + OBJECTS { + usmDHUserAuthKeyChange, + usmDHUserOwnAuthKeyChange, + usmDHUserPrivKeyChange, + usmDHUserOwnPrivKeyChange + } + STATUS current + DESCRIPTION + "" + ::= { usmDHKeyMIBGroups 1 } + +usmDHKeyParamGroup OBJECT-GROUP + OBJECTS { + usmDHParameters + } + STATUS current + DESCRIPTION + "The mandatory object for all MIBs which use the DHKeyChange + textual convention." + ::= { usmDHKeyMIBGroups 2 } + +usmDHKeyKickstartGroup OBJECT-GROUP + OBJECTS { + usmDHKickstartMyPublic, + usmDHKickstartMgrPublic, + usmDHKickstartSecurityName + } + STATUS current + DESCRIPTION + "The objects used for kickstarting one or more SNMPv3 USM + associations via a configuration file or other out of band, + non-confidential access." + ::= { usmDHKeyMIBGroups 3 } + + +END diff --git a/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB b/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB new file mode 100644 index 0000000..c24bffd --- /dev/null +++ b/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB @@ -0,0 +1,870 @@ +SNMP-VIEW-BASED-ACM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + snmpModules FROM SNMPv2-SMI + TestAndIncr, + RowStatus, StorageType FROM SNMPv2-TC + SnmpAdminString, + SnmpSecurityLevel, + SnmpSecurityModel FROM SNMP-FRAMEWORK-MIB; + +snmpVacmMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" -- 16 Oct 2002, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + email: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + email: bwijnen@lucent.com + phone: +31-348-480-685 + + Co-editor: Randy Presuhn + BMC Software, Inc. + + + + postal: 2141 North First Street + San Jose, CA 95131 + USA + email: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Keith McCloghrie + Cisco Systems, Inc. + postal: 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + email: kzm@cisco.com + phone: +1-408-526-5260 + " + DESCRIPTION "The management information definitions for the + View-based Access Control Model for SNMP. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3415; + see the RFC itself for full legal notices. + " +-- Revision history + + REVISION "200210160000Z" -- 16 Oct 2002, midnight + DESCRIPTION "Clarifications, published as RFC3415" + + REVISION "199901200000Z" -- 20 Jan 1999, midnight + DESCRIPTION "Clarifications, published as RFC2575" + + REVISION "199711200000Z" -- 20 Nov 1997, midnight + DESCRIPTION "Initial version, published as RFC2275" + + ::= { snmpModules 16 } + +-- Administrative assignments **************************************** + +vacmMIBObjects OBJECT IDENTIFIER ::= { snmpVacmMIB 1 } +vacmMIBConformance OBJECT IDENTIFIER ::= { snmpVacmMIB 2 } + +-- Information about Local Contexts ********************************** + +vacmContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of locally available contexts. + + This table provides information to SNMP Command + + + + Generator applications so that they can properly + configure the vacmAccessTable to control access to + all contexts at the SNMP entity. + + This table may change dynamically if the SNMP entity + allows that contexts are added/deleted dynamically + (for instance when its configuration changes). Such + changes would happen only if the management + instrumentation at that SNMP entity recognizes more + (or fewer) contexts. + + The presence of entries in this table and of entries + in the vacmAccessTable are independent. That is, a + context identified by an entry in this table is not + necessarily referenced by any entries in the + vacmAccessTable; and the context(s) referenced by an + entry in the vacmAccessTable does not necessarily + currently exist and thus need not be identified by an + entry in this table. + + This table must be made accessible via the default + context so that Command Responder applications have + a standard way of retrieving the information. + + This table is read-only. It cannot be configured via + SNMP. + " + ::= { vacmMIBObjects 1 } + +vacmContextEntry OBJECT-TYPE + SYNTAX VacmContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about a particular context." + INDEX { + vacmContextName + } + ::= { vacmContextTable 1 } + +VacmContextEntry ::= SEQUENCE + { + vacmContextName SnmpAdminString + } + +vacmContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "A human readable name identifying a particular + context at a particular SNMP entity. + + The empty contextName (zero length) represents the + default context. + " + ::= { vacmContextEntry 1 } + +-- Information about Groups ****************************************** + +vacmSecurityToGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmSecurityToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table maps a combination of securityModel and + securityName into a groupName which is used to define + an access control policy for a group of principals. + " + ::= { vacmMIBObjects 2 } + +vacmSecurityToGroupEntry OBJECT-TYPE + SYNTAX VacmSecurityToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in this table maps the combination of a + securityModel and securityName into a groupName. + " + INDEX { + vacmSecurityModel, + vacmSecurityName + } + ::= { vacmSecurityToGroupTable 1 } + +VacmSecurityToGroupEntry ::= SEQUENCE + { + vacmSecurityModel SnmpSecurityModel, + vacmSecurityName SnmpAdminString, + vacmGroupName SnmpAdminString, + vacmSecurityToGroupStorageType StorageType, + vacmSecurityToGroupStatus RowStatus + } + +vacmSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The Security Model, by which the vacmSecurityName + referenced by this entry is provided. + + + + Note, this object may not take the 'any' (0) value. + " + ::= { vacmSecurityToGroupEntry 1 } + +vacmSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The securityName for the principal, represented in a + Security Model independent format, which is mapped by + this entry to a groupName. + " + ::= { vacmSecurityToGroupEntry 2 } + +vacmGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The name of the group to which this entry (e.g., the + combination of securityModel and securityName) + belongs. + + This groupName is used as index into the + vacmAccessTable to select an access control policy. + However, a value in this table does not imply that an + instance with the value exists in table vacmAccesTable. + " + ::= { vacmSecurityToGroupEntry 3 } + +vacmSecurityToGroupStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmSecurityToGroupEntry 4 } + +vacmSecurityToGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + + + + corresponding instance of the vacmSecurityToGroupStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until a value has been set for vacmGroupName. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmSecurityToGroupEntry 5 } + +-- Information about Access Rights *********************************** + +vacmAccessTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmAccessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of access rights for groups. + + Each entry is indexed by a groupName, a contextPrefix, + a securityModel and a securityLevel. To determine + whether access is allowed, one entry from this table + needs to be selected and the proper viewName from that + entry must be used for access control checking. + + To select the proper entry, follow these steps: + + 1) the set of possible matches is formed by the + intersection of the following sets of entries: + + the set of entries with identical vacmGroupName + the union of these two sets: + - the set with identical vacmAccessContextPrefix + - the set of entries with vacmAccessContextMatch + value of 'prefix' and matching + vacmAccessContextPrefix + intersected with the union of these two sets: + - the set of entries with identical + vacmSecurityModel + - the set of entries with vacmSecurityModel + value of 'any' + intersected with the set of entries with + vacmAccessSecurityLevel value less than or equal + to the requested securityLevel + + + + 2) if this set has only one member, we're done + otherwise, it comes down to deciding how to weight + the preferences between ContextPrefixes, + SecurityModels, and SecurityLevels as follows: + a) if the subset of entries with securityModel + matching the securityModel in the message is + not empty, then discard the rest. + b) if the subset of entries with + vacmAccessContextPrefix matching the contextName + in the message is not empty, + then discard the rest + c) discard all entries with ContextPrefixes shorter + than the longest one remaining in the set + d) select the entry with the highest securityLevel + + Please note that for securityLevel noAuthNoPriv, all + groups are really equivalent since the assumption that + the securityName has been authenticated does not hold. + " + ::= { vacmMIBObjects 4 } + +vacmAccessEntry OBJECT-TYPE + SYNTAX VacmAccessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An access right configured in the Local Configuration + Datastore (LCD) authorizing access to an SNMP context. + + Entries in this table can use an instance value for + object vacmGroupName even if no entry in table + vacmAccessSecurityToGroupTable has a corresponding + value for object vacmGroupName. + " + INDEX { vacmGroupName, + vacmAccessContextPrefix, + vacmAccessSecurityModel, + vacmAccessSecurityLevel + } + ::= { vacmAccessTable 1 } + +VacmAccessEntry ::= SEQUENCE + { + vacmAccessContextPrefix SnmpAdminString, + vacmAccessSecurityModel SnmpSecurityModel, + vacmAccessSecurityLevel SnmpSecurityLevel, + vacmAccessContextMatch INTEGER, + vacmAccessReadViewName SnmpAdminString, + vacmAccessWriteViewName SnmpAdminString, + + + + vacmAccessNotifyViewName SnmpAdminString, + vacmAccessStorageType StorageType, + vacmAccessStatus RowStatus + } + +vacmAccessContextPrefix OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "In order to gain the access rights allowed by this + conceptual row, a contextName must match exactly + (if the value of vacmAccessContextMatch is 'exact') + or partially (if the value of vacmAccessContextMatch + is 'prefix') to the value of the instance of this + object. + " + ::= { vacmAccessEntry 1 } + +vacmAccessSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "In order to gain the access rights allowed by this + conceptual row, this securityModel must be in use. + " + ::= { vacmAccessEntry 2 } + +vacmAccessSecurityLevel OBJECT-TYPE + SYNTAX SnmpSecurityLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The minimum level of security required in order to + gain the access rights allowed by this conceptual + row. A securityLevel of noAuthNoPriv is less than + authNoPriv which in turn is less than authPriv. + + If multiple entries are equally indexed except for + this vacmAccessSecurityLevel index, then the entry + which has the highest value for + vacmAccessSecurityLevel is selected. + " + ::= { vacmAccessEntry 3 } + +vacmAccessContextMatch OBJECT-TYPE + SYNTAX INTEGER + { exact (1), -- exact match of prefix and contextName + prefix (2) -- Only match to the prefix + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION "If the value of this object is exact(1), then all + rows where the contextName exactly matches + vacmAccessContextPrefix are selected. + + If the value of this object is prefix(2), then all + rows where the contextName whose starting octets + exactly match vacmAccessContextPrefix are selected. + This allows for a simple form of wildcarding. + " + DEFVAL { exact } + ::= { vacmAccessEntry 4 } + +vacmAccessReadViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes read access. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + ::= { vacmAccessEntry 5 } + +vacmAccessWriteViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes write access. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + + + + ::= { vacmAccessEntry 6 } + +vacmAccessNotifyViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes access for notifications. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + ::= { vacmAccessEntry 7 } + +vacmAccessStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmAccessEntry 8 } + +vacmAccessStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmAccessEntry 9 } + +-- Information about MIB views *************************************** + + + +-- Support for instance-level granularity is optional. +-- +-- In some implementations, instance-level access control +-- granularity may come at a high performance cost. Managers +-- should avoid requesting such configurations unnecessarily. + +vacmMIBViews OBJECT IDENTIFIER ::= { vacmMIBObjects 5 } + +vacmViewSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION "An advisory lock used to allow cooperating SNMP + Command Generator applications to coordinate their + use of the Set operation in creating or modifying + views. + + When creating a new view or altering an existing + view, it is important to understand the potential + interactions with other uses of the view. The + vacmViewSpinLock should be retrieved. The name of + the view to be created should be determined to be + unique by the SNMP Command Generator application by + consulting the vacmViewTreeFamilyTable. Finally, + the named view may be created (Set), including the + advisory lock. + If another SNMP Command Generator application has + altered the views in the meantime, then the spin + lock's value will have changed, and so this creation + will fail because it will specify the wrong value for + the spin lock. + + Since this is an advisory lock, the use of this lock + is not enforced. + " + ::= { vacmMIBViews 1 } + +vacmViewTreeFamilyTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmViewTreeFamilyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Locally held information about families of subtrees + within MIB views. + + Each MIB view is defined by two sets of view subtrees: + - the included view subtrees, and + - the excluded view subtrees. + Every such view subtree, both the included and the + + + + excluded ones, is defined in this table. + + To determine if a particular object instance is in + a particular MIB view, compare the object instance's + OBJECT IDENTIFIER with each of the MIB view's active + entries in this table. If none match, then the + object instance is not in the MIB view. If one or + more match, then the object instance is included in, + or excluded from, the MIB view according to the + value of vacmViewTreeFamilyType in the entry whose + value of vacmViewTreeFamilySubtree has the most + sub-identifiers. If multiple entries match and have + the same number of sub-identifiers (when wildcarding + is specified with the value of vacmViewTreeFamilyMask), + then the lexicographically greatest instance of + vacmViewTreeFamilyType determines the inclusion or + exclusion. + + An object instance's OBJECT IDENTIFIER X matches an + active entry in this table when the number of + sub-identifiers in X is at least as many as in the + value of vacmViewTreeFamilySubtree for the entry, + and each sub-identifier in the value of + vacmViewTreeFamilySubtree matches its corresponding + sub-identifier in X. Two sub-identifiers match + either if the corresponding bit of the value of + vacmViewTreeFamilyMask for the entry is zero (the + 'wild card' value), or if they are equal. + + A 'family' of subtrees is the set of subtrees defined + by a particular combination of values of + vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask. + + In the case where no 'wild card' is defined in the + vacmViewTreeFamilyMask, the family of subtrees reduces + to a single subtree. + + When creating or changing MIB views, an SNMP Command + Generator application should utilize the + vacmViewSpinLock to try to avoid collisions. See + DESCRIPTION clause of vacmViewSpinLock. + + When creating MIB views, it is strongly advised that + first the 'excluded' vacmViewTreeFamilyEntries are + created and then the 'included' entries. + + When deleting MIB views, it is strongly advised that + first the 'included' vacmViewTreeFamilyEntries are + + + + deleted and then the 'excluded' entries. + + If a create for an entry for instance-level access + control is received and the implementation does not + support instance-level granularity, then an + inconsistentName error must be returned. + " + ::= { vacmMIBViews 2 } + +vacmViewTreeFamilyEntry OBJECT-TYPE + SYNTAX VacmViewTreeFamilyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information on a particular family of view subtrees + included in or excluded from a particular SNMP + context's MIB view. + + Implementations must not restrict the number of + families of view subtrees for a given MIB view, + except as dictated by resource constraints on the + overall number of entries in the + vacmViewTreeFamilyTable. + + If no conceptual rows exist in this table for a given + MIB view (viewName), that view may be thought of as + consisting of the empty set of view subtrees. + " + INDEX { vacmViewTreeFamilyViewName, + vacmViewTreeFamilySubtree + } + ::= { vacmViewTreeFamilyTable 1 } + +VacmViewTreeFamilyEntry ::= SEQUENCE + { + vacmViewTreeFamilyViewName SnmpAdminString, + vacmViewTreeFamilySubtree OBJECT IDENTIFIER, + vacmViewTreeFamilyMask OCTET STRING, + vacmViewTreeFamilyType INTEGER, + vacmViewTreeFamilyStorageType StorageType, + vacmViewTreeFamilyStatus RowStatus + } + +vacmViewTreeFamilyViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The human readable name for a family of view subtrees. + " + + + + ::= { vacmViewTreeFamilyEntry 1 } + +vacmViewTreeFamilySubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The MIB subtree which when combined with the + corresponding instance of vacmViewTreeFamilyMask + defines a family of view subtrees. + " + ::= { vacmViewTreeFamilyEntry 2 } + +vacmViewTreeFamilyMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The bit mask which, in combination with the + corresponding instance of vacmViewTreeFamilySubtree, + defines a family of view subtrees. + + Each bit of this bit mask corresponds to a + sub-identifier of vacmViewTreeFamilySubtree, with the + most significant bit of the i-th octet of this octet + string value (extended if necessary, see below) + corresponding to the (8*i - 7)-th sub-identifier, and + the least significant bit of the i-th octet of this + octet string corresponding to the (8*i)-th + sub-identifier, where i is in the range 1 through 16. + + Each bit of this bit mask specifies whether or not + the corresponding sub-identifiers must match when + determining if an OBJECT IDENTIFIER is in this + family of view subtrees; a '1' indicates that an + exact match must occur; a '0' indicates 'wild card', + i.e., any sub-identifier value matches. + + Thus, the OBJECT IDENTIFIER X of an object instance + is contained in a family of view subtrees if, for + each sub-identifier of the value of + vacmViewTreeFamilySubtree, either: + + the i-th bit of vacmViewTreeFamilyMask is 0, or + + the i-th sub-identifier of X is equal to the i-th + sub-identifier of the value of + vacmViewTreeFamilySubtree. + + If the value of this bit mask is M bits long and + + + + there are more than M sub-identifiers in the + corresponding instance of vacmViewTreeFamilySubtree, + then the bit mask is extended with 1's to be the + required length. + + Note that when the value of this object is the + zero-length string, this extension rule results in + a mask of all-1's being used (i.e., no 'wild card'), + and the family of view subtrees is the one view + subtree uniquely identified by the corresponding + instance of vacmViewTreeFamilySubtree. + + Note that masks of length greater than zero length + do not need to be supported. In this case this + object is made read-only. + " + DEFVAL { ''H } + ::= { vacmViewTreeFamilyEntry 3 } + +vacmViewTreeFamilyType OBJECT-TYPE + SYNTAX INTEGER { included(1), excluded(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Indicates whether the corresponding instances of + vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask + define a family of view subtrees which is included in + or excluded from the MIB view. + " + DEFVAL { included } + ::= { vacmViewTreeFamilyEntry 4 } + +vacmViewTreeFamilyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmViewTreeFamilyEntry 5 } + +vacmViewTreeFamilyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmViewTreeFamilyEntry 6 } + +-- Conformance information ******************************************* + +vacmMIBCompliances OBJECT IDENTIFIER ::= { vacmMIBConformance 1 } +vacmMIBGroups OBJECT IDENTIFIER ::= { vacmMIBConformance 2 } + +-- Compliance statements ********************************************* + +vacmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP View-based Access Control Model + configuration MIB. + " + MODULE -- this module + MANDATORY-GROUPS { vacmBasicGroup } + + OBJECT vacmAccessContextMatch + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessReadViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessWriteViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessNotifyViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessStatus + MIN-ACCESS read-only + DESCRIPTION "Create/delete/modify access to the + + + + vacmAccessTable is not required. + " + + OBJECT vacmViewTreeFamilyMask + WRITE-SYNTAX OCTET STRING (SIZE (0)) + MIN-ACCESS read-only + DESCRIPTION "Support for configuration via SNMP of subtree + families using wild-cards is not required. + " + + OBJECT vacmViewTreeFamilyType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmViewTreeFamilyStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmViewTreeFamilyStatus + MIN-ACCESS read-only + DESCRIPTION "Create/delete/modify access to the + vacmViewTreeFamilyTable is not required. + " + ::= { vacmMIBCompliances 1 } + +-- Units of conformance ********************************************** + +vacmBasicGroup OBJECT-GROUP + OBJECTS { + vacmContextName, + vacmGroupName, + vacmSecurityToGroupStorageType, + vacmSecurityToGroupStatus, + vacmAccessContextMatch, + vacmAccessReadViewName, + vacmAccessWriteViewName, + vacmAccessNotifyViewName, + vacmAccessStorageType, + vacmAccessStatus, + vacmViewSpinLock, + vacmViewTreeFamilyMask, + vacmViewTreeFamilyType, + vacmViewTreeFamilyStorageType, + vacmViewTreeFamilyStatus + } + STATUS current + DESCRIPTION "A collection of objects providing for remote + configuration of an SNMP engine which implements + + + + the SNMP View-based Access Control Model. + " + ::= { vacmMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMPv2-CONF b/mibs/ietf/SNMPv2-CONF new file mode 100644 index 0000000..904dbbb --- /dev/null +++ b/mibs/ietf/SNMPv2-CONF @@ -0,0 +1,318 @@ +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 diff --git a/mibs/ietf/SNMPv2-MIB b/mibs/ietf/SNMPv2-MIB new file mode 100644 index 0000000..9494e42 --- /dev/null +++ b/mibs/ietf/SNMPv2-MIB @@ -0,0 +1,903 @@ +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 "200210160000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + " + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + + + + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.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 offer. 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 SNMP 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 SNMP application acting as a command + responder with respect to various MIB modules. + SNMP 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 SNMP application acting as a command + responder." + ::= { 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 instantiated." + ::= { 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 community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { 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 Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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 Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +-- information for notifications +-- +-- a collection of objects which allow the SNMP entity, when +-- supporting a notification originator application, +-- 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 an + SNMP 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 SNMP entity, + supporting a notification originator application, 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 SNMP entity, + supporting a notification originator application, + 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 2863 [RFC2863] + + + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +-- Note the egpNeighborLoss notification is defined +-- as { snmpTraps 6 } in RFC 1213 + +-- the set group +-- +-- a collection of objects which allow several cooperating +-- command generator applications to coordinate their use of the +-- 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 + command generator applications to coordinate their + use of the SNMP 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 deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + 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 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + MODULE -- this module + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +-- 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 SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, + snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the 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 basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +-- 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 was + `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 was + `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 was + `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 was `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 was `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 was `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 was `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 was `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 was `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 module." + ::= { snmpMIBGroups 10 } + +END diff --git a/mibs/ietf/SNMPv2-SMI b/mibs/ietf/SNMPv2-SMI new file mode 100644 index 0000000..2132646 --- /dev/null +++ b/mibs/ietf/SNMPv2-SMI @@ -0,0 +1,352 @@ +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 diff --git a/mibs/ietf/SNMPv2-TC b/mibs/ietf/SNMPv2-TC new file mode 100644 index 0000000..a68f969 --- /dev/null +++ b/mibs/ietf/SNMPv2-TC @@ -0,0 +1,786 @@ +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 diff --git a/mibs/ietf/SNMPv2-TM b/mibs/ietf/SNMPv2-TM new file mode 100644 index 0000000..dadbc4a --- /dev/null +++ b/mibs/ietf/SNMPv2-TM @@ -0,0 +1,194 @@ +SNMPv2-TM DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + snmpModules, snmpDomains, snmpProxys + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +snmpv2tm MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP transport mappings. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3417; + see the RFC itself for full legal notices. + " + REVISION "200210160000Z" + DESCRIPTION + "Clarifications, published as RFC 3417." + REVISION "199601010000Z" + DESCRIPTION + "Clarifications, published as RFC 1906." + REVISION "199304010000Z" + DESCRIPTION + "The initial version, published as RFC 1449." + ::= { snmpModules 19 } + +-- SNMP over UDP over IPv4 + +snmpUDPDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over UDP over IPv4 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 over IPv4 address: + + octets contents encoding + 1-4 IP-address network-byte order + 5-6 UDP-port network-byte order + " + SYNTAX OCTET STRING (SIZE (6)) + +-- SNMP over OSI + +snmpCLNSDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over CLNS transport domain. + The corresponding transport address is of type + SnmpOSIAddress." + ::= { snmpDomains 2 } + +snmpCONSDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP 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)) + + + + + + + + +-- SNMP over DDP + +snmpDDPDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP 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)) + +-- SNMP over IPX + +snmpIPXDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP 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 deprecated + DESCRIPTION + "The transport domain for SNMPv1 over UDP over IPv4. + The corresponding transport address is of type + SnmpUDPAddress." + ::= { rfc1157Proxy 1 } + +-- ::= { rfc1157Proxy 2 } this OID is obsolete + +END diff --git a/mibs/ietf/SNMPv2-USEC-MIB b/mibs/ietf/SNMPv2-USEC-MIB new file mode 100644 index 0000000..62e2563 --- /dev/null +++ b/mibs/ietf/SNMPv2-USEC-MIB @@ -0,0 +1,255 @@ +SNMPv2-USEC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Unsigned32, + snmpModules + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +usecMIB MODULE-IDENTITY + LAST-UPDATED "9601120000Z" + ORGANIZATION "IETF SNMPv2 Working Group" + CONTACT-INFO + " Glenn W. Waters + + Postal: Bell-Northern Research, Ltd. + P.O. Box 3511, Station C + Ottawa, ON, K1Y 4H7 + Canada + + Tel: +1 613 763 3933 + + E-mail: gwaters@bnr.ca" + DESCRIPTION + "The MIB module for SNMPv2 entities implementing the user- + based security model." + ::= { snmpModules 6 } + + +usecMIBObjects OBJECT IDENTIFIER ::= { usecMIB 1 } + + +-- Textual Conventions + +AgentID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An agent's administratively-unique identifier. + + The value for this object may not be all zeros or all 'ff'H. + + The initial value for this object may be configured via an + operator console entry or via an algorithmic function. In + + + the later case, the following guidelines are recommended: + + 1) The first four octets are set to the binary equivalent + of the agent's SNMP network management private + enterprise number as assigned by the Internet Assigned + Numbers Authority (IANA). For example, if Acme + Networks has been assigned { enterprises 696 }, the + first four octets would be assigned '000002b8'H. + + 2) The remaining eight octets are the cookie whose + contents are determined via one or more enterprise- + specific methods. Such methods must be designed so as + to maximize the possibility that the value of this + object will be unique in the agent's administrative + domain. For example, the cookie may be the IP address + of the agent, or the MAC address of one of the + interfaces, with each address suitably padded with + random octets. If multiple methods are defined, then + it is recommended that the cookie be further divided + into one octet that indicates the method being used and + seven octets which are a function of the method." + SYNTAX OCTET STRING (SIZE (12)) + + +-- the USEC Basic group +-- +-- a collection of objects providing basic instrumentation of +-- the SNMPv2 entity implementing the user-based security model + + +usecAgent OBJECT IDENTIFIER ::= { usecMIBObjects 1 } + +agentID OBJECT-TYPE + SYNTAX AgentID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The agent's administratively-unique identifier." + ::= { usecAgent 1 } + +agentBoots OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the agent has re-initialized + itself since its initial configuration." + ::= { usecAgent 2 } + + +agentTime OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds since the agent last incremented the + agentBoots object." + ::= { usecAgent 3 } + +agentSize OBJECT-TYPE + SYNTAX INTEGER (484..65507) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length in octets of an SNMPv2 message which + this agent will accept using any transport mapping." + ::= { usecAgent 4 } + + +-- USEC statistics +-- +-- a collection of objects providing basic instrumentation of +-- the SNMPv2 entity implementing the user-based security model + +usecStats OBJECT IDENTIFIER ::= { usecMIBObjects 2 } + + +usecStatsUnsupportedQoS OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they requested a quality-of- + service that was unknown to the agent or otherwise + unavailable." + ::= { usecStats 1 } + +usecStatsNotInWindows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they appeared outside of the + agent's window." + ::= { usecStats 2 } + + +usecStatsUnknownUserNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they referenced a user that was + not known to the agent." + ::= { usecStats 3 } + +usecStatsWrongDigestValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they didn't contain the expected + digest value." + ::= { usecStats 4 } + +usecStatsUnknownContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they referenced a context that + was not known to the agent." + ::= { usecStats 5 } + +usecStatsBadParameters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because the field was + improperly encoded or had invalid syntax." + ::= { usecStats 6 } + +usecStatsUnauthorizedOperations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because the PDU type referred to an + operation that is invalid or not authorized." + + + ::= { usecStats 7 } + + +-- conformance information + +usecMIBConformance + OBJECT IDENTIFIER ::= { usecMIB 2 } + +usecMIBCompliances + OBJECT IDENTIFIER ::= { usecMIBConformance 1 } +usecMIBGroups OBJECT IDENTIFIER ::= { usecMIBConformance 2 } + + +-- compliance statements + +usecMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 USEC model." + MODULE -- this module + MANDATORY-GROUPS { usecBasicGroup, + usecStatsGroup } + ::= { usecMIBCompliances 1 } + + +-- units of conformance + +usecBasicGroup OBJECT-GROUP + OBJECTS { agentID, + agentBoots, + agentTime, + agentSize } + STATUS current + DESCRIPTION + "A collection of objects providing identification, clocks, + and capabilities of an SNMPv2 entity which implements the + SNMPv2 USEC model." + ::= { usecMIBGroups 1 } + +usecStatsGroup OBJECT-GROUP + OBJECTS { usecStatsUnsupportedQoS, + usecStatsNotInWindows, + usecStatsUnknownUserNames, + usecStatsWrongDigestValues, + usecStatsUnknownContexts, + usecStatsBadParameters, + usecStatsUnauthorizedOperations } + + + STATUS current + DESCRIPTION + "A collection of objects providing basic error statistics of + an SNMPv2 entity which implements the SNMPv2 USEC model." + ::= { usecMIBGroups 2 } + +END diff --git a/mibs/ietf/SONET-MIB b/mibs/ietf/SONET-MIB new file mode 100644 index 0000000..a887604 --- /dev/null +++ b/mibs/ietf/SONET-MIB @@ -0,0 +1,2523 @@ +SONET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, transmission + FROM SNMPv2-SMI + DisplayString, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB + PerfCurrentCount, PerfIntervalCount + FROM PerfHist-TC-MIB; + +-- This is the MIB module for the SONET/SDH Interface objects. + +sonetMIB MODULE-IDENTITY + LAST-UPDATED "200308110000Z" + ORGANIZATION "IETF AToM MIB Working Group" + + + + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Kaj Tesink + Telcordia Technologies + Tel: (732) 758-5254 + Fax: (732) 758-2269 + E-mail: kaj@research.telcordia.com." + DESCRIPTION + "The MIB module to describe SONET/SDH interface objects. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3592; see the RFC + itself for full legal notices." + REVISION "200308110000Z" + DESCRIPTION + "The key changes made to this MIB module + since its publication in RFC 2558 + are as follows. + + (1) Corrected typographical error + (bellcore1991(2) in sonetSESthresholdSet) + + (2) Added support for sts192cSTM64(6) and + sts768cSTM256(7) in sonetPathCurrentWidth + + (3) Corrected description of the applicability + of VTs for SDH for improved accuracy + + (4) Added clarification in the SES description that + CV counts should be frozen during SESs + + (5) Corrected typographical errors: + - Line Alarm Indication Signal description of the + Terminology section (20.5 --> 2.5 seconds) + - In the Terminology section + sonetSESThresholdSet --> sonetSESthresholdSet + " + REVISION "199810190000Z" + DESCRIPTION + "The RFC 2558 version of this MIB module. + + + + + + The key changes made to this MIB module + since its initial publication in RFC 1595 + are as follows. + + (1) The MODULE-IDENTITY has been updated to reflect the + changes to the MIB. + + (2) Where applicable, the textual conventions + PerfCurrentCount and PerfIntervalCount from + PerfHist-TC-MIB have been used in place of Gauge32. + + (3) An agent now has the option to delay updates to + the various performance counts in lieu of performing + retroactive adjustments upon entering into or exiting + from unavailable time. This implementation option is + described in Appendix A of this memo. + + (4) In order to make the SONET-MIB more useful for + circuit provisioning, the formerly read-only objects + sonetMediumType, sonetMediumLineCoding, + sonetMediumLineType, and sonetMediumCircuitIdentifier + have been given a MAX-ACCESS of read-write. The + MIN-ACCESS remains read-only. + + (5) The DESCRIPTION clause for sonetMediumTimeElapsed has + been updated to describe its behaviour if the duration + of the current interval exceeds the maximum value. + + (6) The DESCRIPTION clause for sonetMediumValidIntervals + has been updated to describe its behaviour when some + intervals may be unavailable, and the object + sonetMediumInvalidIntervals has been added to keep + count of the number of missing intervals (if any). + + (7) The object sonetMediumLoopbackConfig has been added + to enable or disable loopback configurations. + + (8) Because the error count thresholds for declaring + severely errored seconds that are specified in ANSI + T1.231-1993, ITU-T G.826-1995, and ANSI T1.231-1997 + are all different from each other and from the thresholds + specified in RFC 1595, an enumerated INTEGER object + sonetSESthresholdSet has been added to allow an agent + to specify which threshold set is in use. Text has + been added to Section 3 stating that if this object is + not implemented the thresholds specified in RFC 1595 + should be assumed, and the table containing those + thresholds has been moved to Appendix B of this memo. + + + + (9) A column with SYNTAX TruthValue has been added to each + interval table. The purpose of the additional column + is to indicate, for each interval, whether the data + is valid in the sense intended by ANSI T1.231 clause + 9.1.2.2 [T1.231a][T1.231b]. The objects in question are: + + sonetSectionIntervalValidData + sonetLineIntervalValidData + sonetFarEndLineIntervalValidData + sonetPathIntervalValidData + sonetFarEndPathIntervalValidData + sonetVTIntervalValidData + sonetFarEndVTIntervalValidData + + (10) The ranges for sonetPathCurrentStatus and + sonetVTCurrentStatus have been made consistent + with the DESCRIPTION clauses. + + (11) The conformance information has been updated. Previous + conformance information from RFC 1595 has been + deprecated. Some typographical errors in the deprecated + section have been corrected in order to prevent + MIB compilation errors." + + REVISION "199401030000Z" + DESCRIPTION + "The RFC 1595 version of this MIB module." + + ::= { transmission 39 } + +-- This is the MIB module for the SONET/SDH objects + +sonetObjects OBJECT IDENTIFIER ::= { sonetMIB 1 } + +sonetObjectsPath OBJECT IDENTIFIER ::= { sonetMIB 2 } + +sonetObjectsVT OBJECT IDENTIFIER ::= { sonetMIB 3 } + +-- groups in the SONET/SDH MIB module + +sonetMedium OBJECT IDENTIFIER ::= { sonetObjects 1 } + +sonetSection OBJECT IDENTIFIER ::= { sonetObjects 2 } + +sonetLine OBJECT IDENTIFIER ::= { sonetObjects 3 } + +sonetFarEndLine OBJECT IDENTIFIER ::= { sonetObjects 4 } + + + + +sonetPath OBJECT IDENTIFIER ::= { sonetObjectsPath 1 } + +sonetFarEndPath OBJECT IDENTIFIER ::= { sonetObjectsPath 2 } + +sonetVT OBJECT IDENTIFIER ::= { sonetObjectsVT 1 } + +sonetFarEndVT OBJECT IDENTIFIER ::= { sonetObjectsVT 2 } + +-- the SONET/SDH Medium group + +-- SONET/SDH interfaces for some applications may be electrical +-- interfaces and not optical interfaces. This group handles +-- the configuration information for both optical SONET/SDH +-- interfaces and electrical SONET/SDH interfaces. + +sonetMediumTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetMediumEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Medium table." + ::= { sonetMedium 1 } + +sonetMediumEntry OBJECT-TYPE + SYNTAX SonetMediumEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Medium table." + INDEX { ifIndex } + ::= { sonetMediumTable 1 } + +SonetMediumEntry ::= + SEQUENCE { + sonetMediumType INTEGER, + sonetMediumTimeElapsed Integer32, + sonetMediumValidIntervals Integer32, + sonetMediumLineCoding INTEGER, + sonetMediumLineType INTEGER, + sonetMediumCircuitIdentifier DisplayString, + sonetMediumInvalidIntervals Integer32, + sonetMediumLoopbackConfig BITS + } + +sonetMediumType OBJECT-TYPE + SYNTAX INTEGER { + sonet(1), + sdh(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable identifies whether a SONET + or a SDH signal is used across this interface." + ::= { sonetMediumEntry 1 } + +sonetMediumTimeElapsed OBJECT-TYPE + SYNTAX Integer32 (1..900) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds, including partial seconds, + that have elapsed since the beginning of the current + measurement period. If, for some reason, such as an + adjustment in the system's time-of-day clock, the + current interval exceeds the maximum value, the + agent will return the maximum value." + ::= { sonetMediumEntry 2 } + +sonetMediumValidIntervals OBJECT-TYPE + SYNTAX Integer32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals + for which data was collected. + A SONET/SDH interface must be capable + of supporting at least n intervals. + The minimum value of n is 4. + The default of n is 32. + The maximum value of n is 96. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available. " + ::= { sonetMediumEntry 3 } + +sonetMediumLineCoding OBJECT-TYPE + SYNTAX INTEGER { + sonetMediumOther(1), + sonetMediumB3ZS(2), + + + + sonetMediumCMI(3), + sonetMediumNRZ(4), + sonetMediumRZ(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the line coding for + this interface. The B3ZS and CMI are used for + electrical SONET/SDH signals (STS-1 and STS-3). + The Non-Return to Zero (NRZ) and the Return + to Zero are used for optical SONET/SDH signals." + ::= { sonetMediumEntry 4 } + +sonetMediumLineType OBJECT-TYPE + SYNTAX INTEGER { + sonetOther(1), + sonetShortSingleMode(2), + sonetLongSingleMode(3), + sonetMultiMode(4), + sonetCoax(5), + sonetUTP(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the line type for + this interface. The line types are + Short and Long Range + Single Mode fiber or Multi-Mode fiber interfaces, + and coax and UTP for electrical interfaces. The + value sonetOther should be used when the Line Type is + not one of the listed values." + ::= { sonetMediumEntry 5 } + +sonetMediumCircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission + vendor's circuit identifier, for the + purpose of facilitating troubleshooting. + Note that the circuit identifier, if available, + is also represented by ifPhysAddress." + ::= { sonetMediumEntry 6 } + + + + + +sonetMediumInvalidIntervals OBJECT-TYPE + SYNTAX Integer32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to sonetMediumValidIntervals for which no + data is available. This object will typically + be zero except in cases where the data for some + intervals are not available (e.g., in proxy + situations)." + ::= { sonetMediumEntry 7 } + +sonetMediumLoopbackConfig OBJECT-TYPE + SYNTAX BITS { + sonetNoLoop(0), + sonetFacilityLoop(1), + sonetTerminalLoop(2), + sonetOtherLoop(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current loopback state of the SONET/SDH interface. The + values mean: + + sonetNoLoop + Not in the loopback state. A device that is not + capable of performing a loopback on this interface + shall always return this value. + + sonetFacilityLoop + The received signal at this interface is looped back + out through the corresponding transmitter in the return + direction. + + sonetTerminalLoop + The signal that is about to be transmitted is connected + to the associated incoming receiver. + + sonetOtherLoop + Loopbacks that are not defined here." + + ::= { sonetMediumEntry 8 } + +sonetSESthresholdSet OBJECT-TYPE + SYNTAX INTEGER { + other(1), + bellcore1991(2), + + + + ansi1993(3), + itu1995(4), + ansi1997(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An enumerated integer indicating which + recognized set of SES thresholds that + the agent uses for determining severely + errored seconds and unavailable time. + + other(1) + None of the following. + + bellcore1991(2) + Bellcore TR-NWT-000253, 1991 [TR253], or + ANSI T1M1.3/93-005R2, 1993 [T1M1.3]. + See also Appendix B. + + ansi1993(3) + ANSI T1.231, 1993 [T1.231a], or + Bellcore GR-253-CORE, Issue 2, 1995 [GR253] + + itu1995(4) + ITU Recommendation G.826, 1995 [G.826] + + ansi1997(5) + ANSI T1.231, 1997 [T1.231b] + + If a manager changes the value of this + object then the SES statistics collected + prior to this change must be invalidated." + ::= { sonetMedium 2 } + +-- the SONET/SDH Section group + +-- this group consists of 2 tables: +-- - the SONET/SDH Section Current Table +-- - the SONET/SDH Section Interval Table + +-- the SONET/SDH Section Current Table + +-- The SONET/SDH Section +-- current table contains various statistics +-- being collected for the current 15 minute interval. + + + + + +sonetSectionCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Section Current table." + ::= { sonetSection 1 } + +sonetSectionCurrentEntry OBJECT-TYPE + SYNTAX SonetSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Section Current table." + INDEX { ifIndex } + ::= { sonetSectionCurrentTable 1 } + +SonetSectionCurrentEntry ::= + SEQUENCE { + sonetSectionCurrentStatus Integer32, + sonetSectionCurrentESs PerfCurrentCount, + sonetSectionCurrentSESs PerfCurrentCount, + sonetSectionCurrentSEFSs PerfCurrentCount, + sonetSectionCurrentCVs PerfCurrentCount + } + +sonetSectionCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..6) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetSectionCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetSectionNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetSectionNoDefect + 2 sonetSectionLOS + 4 sonetSectionLOF" + ::= { sonetSectionCurrentEntry 1 } + + + + +sonetSectionCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Section in the current 15 minute interval." + ::= { sonetSectionCurrentEntry 2 } + +sonetSectionCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Section in the current 15 + minute interval." + ::= { sonetSectionCurrentEntry 3 } + +sonetSectionCurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds + encountered by a SONET/SDH Section in the current + 15 minute interval." + ::= { sonetSectionCurrentEntry 4 } + +sonetSectionCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Section in the current 15 minute interval." + ::= { sonetSectionCurrentEntry 5 } + +-- the SONET/SDH Section Interval Table + +-- The SONET/SDH Section Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of + + + +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetSectionIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetSectionIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Section Interval table." + ::= { sonetSection 2 } + +sonetSectionIntervalEntry OBJECT-TYPE + SYNTAX SonetSectionIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Section Interval table." + INDEX { ifIndex, + sonetSectionIntervalNumber } + ::= { sonetSectionIntervalTable 1 } + +SonetSectionIntervalEntry ::= + SEQUENCE { + sonetSectionIntervalNumber Integer32, + sonetSectionIntervalESs PerfIntervalCount, + sonetSectionIntervalSESs PerfIntervalCount, + sonetSectionIntervalSEFSs PerfIntervalCount, + sonetSectionIntervalCVs PerfIntervalCount, + sonetSectionIntervalValidData TruthValue + } + +sonetSectionIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetSectionIntervalEntry 1 } + + + +sonetSectionIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 2 } + +sonetSectionIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 3 } + +sonetSectionIntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds + encountered by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 4 } + +sonetSectionIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Section in a particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 5 } + + + + + +sonetSectionIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetSectionIntervalEntry 6 } + +-- the SONET/SDH Line group + +-- this group consists of 2 tables: +-- - the SONET/SDH Line Current Table +-- - the SONET/SDH Line Interval Table + +-- the SONET/SDH Line Current Table + +-- The SONET/SDH Line +-- current table contains various statistics +-- being collected for the current 15 minute interval. + +sonetLineCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Line Current table." + ::= { sonetLine 1 } + +sonetLineCurrentEntry OBJECT-TYPE + SYNTAX SonetLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Line Current table." + INDEX { ifIndex } + ::= { sonetLineCurrentTable 1 } + +SonetLineCurrentEntry ::= + SEQUENCE { + sonetLineCurrentStatus Integer32, + sonetLineCurrentESs PerfCurrentCount, + sonetLineCurrentSESs PerfCurrentCount, + sonetLineCurrentCVs PerfCurrentCount, + sonetLineCurrentUASs PerfCurrentCount + } + + + + + +sonetLineCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..6) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetLineCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetLineNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetLineNoDefect + 2 sonetLineAIS + 4 sonetLineRDI" + ::= { sonetLineCurrentEntry 1 } + +sonetLineCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Line in the current 15 minute interval." + ::= { sonetLineCurrentEntry 2 } + +sonetLineCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Line in the current 15 + minute + interval." + ::= { sonetLineCurrentEntry 3 } + +sonetLineCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Line in the current 15 minute interval." + ::= { sonetLineCurrentEntry 4 } + +sonetLineCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a SONET/SDH Line in the current 15 + minute + interval." + ::= { sonetLineCurrentEntry 5 } + +-- the SONET/SDH Line Interval Table + +-- The SONET/SDH Line Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetLineIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Line Interval table." + ::= { sonetLine 2 } + +sonetLineIntervalEntry OBJECT-TYPE + SYNTAX SonetLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Line Interval table." + INDEX { ifIndex, + sonetLineIntervalNumber } + ::= { sonetLineIntervalTable 1 } + + + + +SonetLineIntervalEntry ::= + SEQUENCE { + sonetLineIntervalNumber Integer32, + sonetLineIntervalESs PerfIntervalCount, + sonetLineIntervalSESs PerfIntervalCount, + sonetLineIntervalCVs PerfIntervalCount, + sonetLineIntervalUASs PerfIntervalCount, + sonetLineIntervalValidData TruthValue + } + +sonetLineIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetLineIntervalEntry 1 } + +sonetLineIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 2 } + +sonetLineIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 3 } + + + +sonetLineIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 4 } + +sonetLineIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the + number of Unavailable Seconds + encountered by a SONET/SDH Line in + a particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 5 } + +sonetLineIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetLineIntervalEntry 6 } + +-- The SONET/SDH Far End Line group. +-- This group may only be implemented by SONET/SDH (LTEs) +-- systems that provide for a far end block error (FEBE) +-- information at the SONET/SDH Line Layer. + +-- This group consists of two tables: +-- SONET/SDH Far End Line Current Table +-- SONET/SDH Far End Line Interval Table + +-- The SONET/SDH Far End Line Current Table + +-- The SONET/SDH Far End Line Current table contains +-- various statistics being +-- collected for the current 15 minute interval. +-- The statistics are collected from the far end + + + +-- block error code (FEBE) +-- within the third Z2 byte of the Line Overhead +-- in Broadband ISDN applications. +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndLineCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Line Current table." + ::= { sonetFarEndLine 1 } + +sonetFarEndLineCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End Line Current table." + INDEX { ifIndex } + ::= { sonetFarEndLineCurrentTable 1 } + +SonetFarEndLineCurrentEntry ::= + SEQUENCE { + sonetFarEndLineCurrentESs PerfCurrentCount, + sonetFarEndLineCurrentSESs PerfCurrentCount, + sonetFarEndLineCurrentCVs PerfCurrentCount, + sonetFarEndLineCurrentUASs PerfCurrentCount + } + +sonetFarEndLineCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 1 } + +sonetFarEndLineCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + + + + encountered by a SONET/SDH Medium/Section/Line + interface in the current 15 minute + interval." + ::= { sonetFarEndLineCurrentEntry 2 } + +sonetFarEndLineCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Medium/Section/Line + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 3 } + +sonetFarEndLineCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Medium/Section/Line + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 4 } + +-- The SONET/SDH Far End Line Interval Table + +-- The SONET/SDH Far End Line Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndLineIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Line Interval table." + + + + ::= { sonetFarEndLine 2 } + +sonetFarEndLineIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End Line Interval table." + INDEX { ifIndex, + sonetFarEndLineIntervalNumber } + ::= { sonetFarEndLineIntervalTable 1 } + +SonetFarEndLineIntervalEntry ::= + SEQUENCE { + sonetFarEndLineIntervalNumber Integer32, + sonetFarEndLineIntervalESs PerfIntervalCount, + sonetFarEndLineIntervalSESs PerfIntervalCount, + sonetFarEndLineIntervalCVs PerfIntervalCount, + sonetFarEndLineIntervalUASs PerfIntervalCount, + sonetFarEndLineIntervalValidData TruthValue + } + +sonetFarEndLineIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndLineIntervalEntry 1 } + +sonetFarEndLineIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + + + + ::= { sonetFarEndLineIntervalEntry 2 } + +sonetFarEndLineIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 3 } + +sonetFarEndLineIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 4 } + +sonetFarEndLineIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 5 } + +sonetFarEndLineIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + + + + ::= { sonetFarEndLineIntervalEntry 6 } + +-- the SONET/SDH Path group + +-- this group consists of 2 tables: +-- - the SONET/SDH Path Current Table +-- - the SONET/SDH Path Interval Table + +-- the SONET/SDH Path Current Table + +-- The SONET/SDH Path +-- current table contains various statistics +-- being collected for the current 15 minute interval. + +sonetPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Path Current table." +::= { sonetPath 1 } + +sonetPathCurrentEntry OBJECT-TYPE + SYNTAX SonetPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Path Current table." + INDEX { ifIndex } +::= { sonetPathCurrentTable 1 } + +SonetPathCurrentEntry ::= + SEQUENCE { + sonetPathCurrentWidth INTEGER, + sonetPathCurrentStatus Integer32, + sonetPathCurrentESs PerfCurrentCount, + sonetPathCurrentSESs PerfCurrentCount, + sonetPathCurrentCVs PerfCurrentCount, + sonetPathCurrentUASs PerfCurrentCount + } + +sonetPathCurrentWidth OBJECT-TYPE + SYNTAX INTEGER { + sts1(1), + sts3cSTM1(2), + sts12cSTM4(3), + sts24c(4), + sts48cSTM16(5), + + + + sts192cSTM64(6), + sts768cSTM256(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that indicates the type of the SONET/SDH + Path. For SONET, the assigned types are + the STS-Nc SPEs, where N = 1, 3, 12, 24, 48, 192 and 768. + STS-1 is equal to 51.84 Mbps. For SDH, the assigned + types are the STM-Nc VCs, where N = 1, 4, 16, 64 and 256." +::= { sonetPathCurrentEntry 1 } + +sonetPathCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..62) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetPathCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetPathNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetPathNoDefect + 2 sonetPathSTSLOP + 4 sonetPathSTSAIS + 8 sonetPathSTSRDI + 16 sonetPathUnequipped + 32 sonetPathSignalLabelMismatch" +::= { sonetPathCurrentEntry 2 } + +sonetPathCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Path in the current 15 minute interval." +::= { sonetPathCurrentEntry 3 } + + + + +sonetPathCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Path in the current 15 + minute + interval." +::= { sonetPathCurrentEntry 4 } + +sonetPathCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Path in the current 15 minute interval." +::= { sonetPathCurrentEntry 5 } + +sonetPathCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a Path in the current + 15 minute interval." +::= { sonetPathCurrentEntry 6 } + +-- the SONET/SDH Path Interval Table + +-- The SONET/SDH Path Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + + + + + + + +sonetPathIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Path Interval table." +::= { sonetPath 2 } + +sonetPathIntervalEntry OBJECT-TYPE + SYNTAX SonetPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Path Interval table." + INDEX { ifIndex, + sonetPathIntervalNumber } +::= { sonetPathIntervalTable 1 } + +SonetPathIntervalEntry ::= + SEQUENCE { + sonetPathIntervalNumber Integer32, + sonetPathIntervalESs PerfIntervalCount, + sonetPathIntervalSESs PerfIntervalCount, + sonetPathIntervalCVs PerfIntervalCount, + sonetPathIntervalUASs PerfIntervalCount, + sonetPathIntervalValidData TruthValue + } + +sonetPathIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." +::= { sonetPathIntervalEntry 1 } + +sonetPathIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Path in a + particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 2 } + +sonetPathIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Path in + a particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 3 } + +sonetPathIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Path in a particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 4 } + +sonetPathIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a Path in a + particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 5 } + +sonetPathIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + + + + interval is valid." + ::= { sonetPathIntervalEntry 6 } + +-- The SONET/SDH Far End Path group + +-- This group consists of two tables: +-- - SONET/SDH Far End Path Current Table +-- - SONET/SDH Far End Path Interval Table + +-- The SONET/SDH Far End Path Current Table + +-- The SONET/SDH Far End Path Current table +-- contains various statistics +-- being collected for the current 15 minute interval. +-- The statistics are collected from +-- the far end block error code +-- (FEBE) within the G1 byte of the Path Overhead. +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Path Current table." + ::= { sonetFarEndPath 1 } + +sonetFarEndPathCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End Path Current table." + INDEX { ifIndex } + ::= { sonetFarEndPathCurrentTable 1 } + +SonetFarEndPathCurrentEntry ::= + SEQUENCE { + sonetFarEndPathCurrentESs PerfCurrentCount, + sonetFarEndPathCurrentSESs PerfCurrentCount, + sonetFarEndPathCurrentCVs PerfCurrentCount, + sonetFarEndPathCurrentUASs PerfCurrentCount + } + + + + + + + +sonetFarEndPathCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 1 } + +sonetFarEndPathCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Path + interface in the current 15 minute + interval." + ::= { sonetFarEndPathCurrentEntry 2 } + +sonetFarEndPathCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Path interface in + the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 3 } + +sonetFarEndPathCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Path interface in + the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 4 } + + + + + +-- The SONET/SDH Far End Path Interval Table + +-- The SONET/SDH Far End Path Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndPathIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Path Interval table." + ::= { sonetFarEndPath 2 } + +sonetFarEndPathIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End Path Interval table." + INDEX { ifIndex, + sonetFarEndPathIntervalNumber } + ::= { sonetFarEndPathIntervalTable 1 } + +SonetFarEndPathIntervalEntry ::= + SEQUENCE { + sonetFarEndPathIntervalNumber Integer32, + sonetFarEndPathIntervalESs PerfIntervalCount, + sonetFarEndPathIntervalSESs PerfIntervalCount, + sonetFarEndPathIntervalCVs PerfIntervalCount, + sonetFarEndPathIntervalUASs PerfIntervalCount, + sonetFarEndPathIntervalValidData TruthValue + } + +sonetFarEndPathIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + + + + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndPathIntervalEntry 1 } + +sonetFarEndPathIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH Path interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 2 } + +sonetFarEndPathIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Path interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 3 } + +sonetFarEndPathIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Path interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 4 } + + + + + + +sonetFarEndPathIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Path interface in + a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 5 } + +sonetFarEndPathIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetFarEndPathIntervalEntry 6 } + +-- the SONET/SDH Virtual Tributary group + +-- this group consists of 2 tables: +-- - the SONET/SDH VT Current Table +-- - the SONET/SDH VT Interval Table + +-- Corresponding SDH signals for SONET VTs are +-- as follows: + +-- A VT1.5 = TU11 +-- A VT2 = TU12 +-- A VT3 = none +-- none = TU3 +-- A VT6 = TU2 + +-- the SONET/SDH VT Current Table + +-- The SONET/SDH VT current table +-- contains various statistics +-- being collected for the +-- current 15 minute interval. + + + + + + + + +sonetVTCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH VT Current table." +::= { sonetVT 1 } + +sonetVTCurrentEntry OBJECT-TYPE + SYNTAX SonetVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH VT Current table." + INDEX { ifIndex } +::= { sonetVTCurrentTable 1 } + +SonetVTCurrentEntry ::= + SEQUENCE { + sonetVTCurrentWidth INTEGER, + sonetVTCurrentStatus Integer32, + sonetVTCurrentESs PerfCurrentCount, + sonetVTCurrentSESs PerfCurrentCount, + sonetVTCurrentCVs PerfCurrentCount, + sonetVTCurrentUASs PerfCurrentCount + } + +sonetVTCurrentWidth OBJECT-TYPE + SYNTAX INTEGER { + vtWidth15VC11(1), + vtWidth2VC12(2), + vtWidth3(3), + vtWidth6VC2(4), + vtWidth6c(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that indicates the type of the SONET + VT and SDH VC. Assigned widths are + VT1.5/VC11, VT2/VC12, VT3, VT6/VC2, and VT6c." +::= { sonetVTCurrentEntry 1 } + + + + + + + + + +sonetVTCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..126) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetVTCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + and failures + simultaneously. + The sonetVTNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetVTNoDefect + 2 sonetVTLOP + 4 sonetVTPathAIS + 8 sonetVTPathRDI + 16 sonetVTPathRFI + 32 sonetVTUnequipped + 64 sonetVTSignalLabelMismatch" +::= { sonetVTCurrentEntry 2 } + +sonetVTCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + VT in the current 15 minute interval." +::= { sonetVTCurrentEntry 3 } + +sonetVTCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH VT in the current 15 minute + interval." +::= { sonetVTCurrentEntry 4 } + + + + +sonetVTCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH VT in the current 15 minute interval." +::= { sonetVTCurrentEntry 5 } + +sonetVTCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a VT in the current + 15 minute interval." +::= { sonetVTCurrentEntry 6 } + +-- the SONET/SDH VT Interval Table + +-- The SONET/SDH VT Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetVTIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH VT Interval table." +::= { sonetVT 2 } + +sonetVTIntervalEntry OBJECT-TYPE + SYNTAX SonetVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH VT Interval table." + INDEX { ifIndex, + + + + sonetVTIntervalNumber } +::= { sonetVTIntervalTable 1 } + +SonetVTIntervalEntry ::= + SEQUENCE { + sonetVTIntervalNumber Integer32, + sonetVTIntervalESs PerfIntervalCount, + sonetVTIntervalSESs PerfIntervalCount, + sonetVTIntervalCVs PerfIntervalCount, + sonetVTIntervalUASs PerfIntervalCount, + sonetVTIntervalValidData TruthValue + } + +sonetVTIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." +::= { sonetVTIntervalEntry 1 } + +sonetVTIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 2 } + +sonetVTIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH VT + in a particular 15-minute interval + + + + in the past 24 hours." +::= { sonetVTIntervalEntry 3 } + +sonetVTIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 4 } + +sonetVTIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 5 } + +sonetVTIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetVTIntervalEntry 6 } + +-- The SONET/SDH Far End VT group + +-- This group consists of two tables: +-- SONET/SDH Far End VT Current Table +-- SONET/SDH Far End VT Interval Table + +-- The SONET/SDH Far End VT Current + +-- The SONET/SDH Far End VT Current table +-- contains various statistics +-- being collected for the current 15 minute interval. +-- The statistics are collected from +-- the far end block error code +-- (FEBE) within the G1 byte of the VT Overhead. + + + +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndVTCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End VT Current table." + ::= { sonetFarEndVT 1 } + +sonetFarEndVTCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End VT Current table." + INDEX { ifIndex } + ::= { sonetFarEndVTCurrentTable 1 } + +SonetFarEndVTCurrentEntry ::= + SEQUENCE { + sonetFarEndVTCurrentESs PerfCurrentCount, + sonetFarEndVTCurrentSESs PerfCurrentCount, + sonetFarEndVTCurrentCVs PerfCurrentCount, + sonetFarEndVTCurrentUASs PerfCurrentCount + } + +sonetFarEndVTCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." +::= { sonetFarEndVTCurrentEntry 1 } + +sonetFarEndVTCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH VT interface + in the current 15 minute + interval." + + + + ::= { sonetFarEndVTCurrentEntry 2 } + +sonetFarEndVTCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH VT interface + in the current 15 minute interval." + ::= { sonetFarEndVTCurrentEntry 3 } + +sonetFarEndVTCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH VT interface + in the current 15 minute interval." + ::= { sonetFarEndVTCurrentEntry 4 } + +-- The SONET/SDH Far End VT Interval Table + +-- The SONET/SDH Far End VT Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndVTIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End VT Interval table." + ::= { sonetFarEndVT 2 } + + + + + +sonetFarEndVTIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End VT Interval table." + INDEX { ifIndex, + sonetFarEndVTIntervalNumber } + ::= { sonetFarEndVTIntervalTable 1 } + +SonetFarEndVTIntervalEntry ::= + SEQUENCE { + sonetFarEndVTIntervalNumber Integer32, + sonetFarEndVTIntervalESs PerfIntervalCount, + sonetFarEndVTIntervalSESs PerfIntervalCount, + sonetFarEndVTIntervalCVs PerfIntervalCount, + sonetFarEndVTIntervalUASs PerfIntervalCount, + sonetFarEndVTIntervalValidData TruthValue + } + +sonetFarEndVTIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndVTIntervalEntry 1 } + +sonetFarEndVTIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH VT interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 2 } + + + + +sonetFarEndVTIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH VT interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 3 } + +sonetFarEndVTIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH VT interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 4 } + +sonetFarEndVTIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH VT interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 5 } + +sonetFarEndVTIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetFarEndVTIntervalEntry 6 } + + + + +-- conformance information + +sonetConformance OBJECT IDENTIFIER ::= { sonetMIB 4 } + +sonetGroups OBJECT IDENTIFIER ::= { sonetConformance 1 } +sonetCompliances OBJECT IDENTIFIER ::= { sonetConformance 2 } + +-- deprecated compliance statement + +sonetCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SONET/SDH interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sonetMediumStuff, sonetSectionStuff } + + GROUP sonetLineStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries." + + GROUP sonetFarEndLineStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries, and that + provide for a far end block error (FEBE) + information at the SONET/SDH Line Layer." + + GROUP sonetPathStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries." + + OBJECT sonetPathCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndPathStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries, and that process + Far End information." + + + + GROUP sonetVTStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Virtual + Tributaries." + + OBJECT sonetVTCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndVTStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate the SONET/SDH + floating Virtual Tributaries, and that process + Far End information." + + ::= { sonetCompliances 1 } + +-- current compliance statements + +sonetCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SONET/SDH interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sonetMediumStuff2, sonetSectionStuff2 } + + OBJECT sonetMediumType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLineCoding + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLineType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT sonetMediumLoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetSESthresholdSet + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the enumerated values need be supported." + + GROUP sonetLineStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries." + + GROUP sonetFarEndLineStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries, and that + provide for a far end block error (FEBE) + information at the SONET/SDH Line Layer." + + GROUP sonetPathStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries." + + OBJECT sonetPathCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndPathStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries, and that process + Far End information." + + GROUP sonetVTStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + + + + SONET/SDH systems that terminate SONET/SDH Virtual + Tributaries." + + OBJECT sonetVTCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndVTStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate the SONET/SDH + floating Virtual Tributaries, and that process + Far End information." + + ::= { sonetCompliances 2 } + +-- units of conformance + +-- deprecated groups + +sonetMediumStuff OBJECT-GROUP + OBJECTS { sonetMediumType, + sonetMediumTimeElapsed, + sonetMediumValidIntervals, + sonetMediumLineCoding, + sonetMediumLineType, + sonetMediumCircuitIdentifier } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all SONET/SDH interfaces." + ::= { sonetGroups 1 } + +sonetSectionStuff OBJECT-GROUP + OBJECTS { sonetSectionCurrentStatus, + sonetSectionCurrentESs, + sonetSectionCurrentSESs, + sonetSectionCurrentSEFSs, + sonetSectionCurrentCVs, + sonetSectionIntervalESs, + sonetSectionIntervalSESs, + sonetSectionIntervalSEFSs, + sonetSectionIntervalCVs + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + + + + specific to SONET/SDH Section interfaces." + ::= { sonetGroups 2 } + +sonetLineStuff OBJECT-GROUP + OBJECTS { sonetLineCurrentStatus, + sonetLineCurrentESs, + sonetLineCurrentSESs, + sonetLineCurrentCVs, + sonetLineCurrentUASs, + sonetLineIntervalESs, + sonetLineIntervalSESs, + sonetLineIntervalCVs, + sonetLineIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces." + ::= { sonetGroups 3 } + +sonetFarEndLineStuff OBJECT-GROUP + OBJECTS { sonetFarEndLineCurrentESs, + sonetFarEndLineCurrentSESs, + sonetFarEndLineCurrentCVs, + sonetFarEndLineCurrentUASs, + sonetFarEndLineIntervalESs, + sonetFarEndLineIntervalSESs, + sonetFarEndLineIntervalCVs, + sonetFarEndLineIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces, + and maintaining Line Far End information." + ::= { sonetGroups 4 } + +sonetPathStuff OBJECT-GROUP + OBJECTS { sonetPathCurrentWidth, + sonetPathCurrentStatus, + sonetPathCurrentESs, + sonetPathCurrentSESs, + sonetPathCurrentCVs, + sonetPathCurrentUASs, + sonetPathIntervalESs, + sonetPathIntervalSESs, + sonetPathIntervalCVs, + sonetPathIntervalUASs } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing information + specific to SONET/SDH Path interfaces." + ::= { sonetGroups 5 } + +sonetFarEndPathStuff OBJECT-GROUP + OBJECTS { sonetFarEndPathCurrentESs, + sonetFarEndPathCurrentSESs, + sonetFarEndPathCurrentCVs, + sonetFarEndPathCurrentUASs, + sonetFarEndPathIntervalESs, + sonetFarEndPathIntervalSESs, + sonetFarEndPathIntervalCVs, + sonetFarEndPathIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces, + and maintaining Path Far End information." + ::= { sonetGroups 6 } + +sonetVTStuff OBJECT-GROUP + OBJECTS { sonetVTCurrentWidth, + sonetVTCurrentStatus, + sonetVTCurrentESs, + sonetVTCurrentSESs, + sonetVTCurrentCVs, + sonetVTCurrentUASs, + sonetVTIntervalESs, + sonetVTIntervalSESs, + sonetVTIntervalCVs, + sonetVTIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces." + ::= { sonetGroups 7 } + +sonetFarEndVTStuff OBJECT-GROUP + OBJECTS { sonetFarEndVTCurrentESs, + sonetFarEndVTCurrentSESs, + sonetFarEndVTCurrentCVs, + sonetFarEndVTCurrentUASs, + sonetFarEndVTIntervalESs, + sonetFarEndVTIntervalSESs, + sonetFarEndVTIntervalCVs, + sonetFarEndVTIntervalUASs } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing information + specific to SONET/SDH VT interfaces, + and maintaining VT Far End information." + ::= { sonetGroups 8 } + +-- current groups + +sonetMediumStuff2 OBJECT-GROUP + OBJECTS { sonetMediumType, + sonetMediumTimeElapsed, + sonetMediumValidIntervals, + sonetMediumLineCoding, + sonetMediumLineType, + sonetMediumCircuitIdentifier, + sonetMediumInvalidIntervals, + sonetMediumLoopbackConfig, + sonetSESthresholdSet } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all SONET/SDH interfaces." + ::= { sonetGroups 9 } + +sonetSectionStuff2 OBJECT-GROUP + OBJECTS { sonetSectionCurrentStatus, + sonetSectionCurrentESs, + sonetSectionCurrentSESs, + sonetSectionCurrentSEFSs, + sonetSectionCurrentCVs, + sonetSectionIntervalESs, + sonetSectionIntervalSESs, + sonetSectionIntervalSEFSs, + sonetSectionIntervalCVs, + sonetSectionIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Section interfaces." + ::= { sonetGroups 10 } + +sonetLineStuff2 OBJECT-GROUP + OBJECTS { sonetLineCurrentStatus, + sonetLineCurrentESs, + sonetLineCurrentSESs, + sonetLineCurrentCVs, + sonetLineCurrentUASs, + sonetLineIntervalESs, + sonetLineIntervalSESs, + + + + sonetLineIntervalCVs, + sonetLineIntervalUASs, + sonetLineIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces." + ::= { sonetGroups 11 } + +sonetPathStuff2 OBJECT-GROUP + OBJECTS { sonetPathCurrentWidth, + sonetPathCurrentStatus, + sonetPathCurrentESs, + sonetPathCurrentSESs, + sonetPathCurrentCVs, + sonetPathCurrentUASs, + sonetPathIntervalESs, + sonetPathIntervalSESs, + sonetPathIntervalCVs, + sonetPathIntervalUASs, + sonetPathIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces." + ::= { sonetGroups 12 } + +sonetVTStuff2 OBJECT-GROUP + OBJECTS { sonetVTCurrentWidth, + sonetVTCurrentStatus, + sonetVTCurrentESs, + sonetVTCurrentSESs, + sonetVTCurrentCVs, + sonetVTCurrentUASs, + sonetVTIntervalESs, + sonetVTIntervalSESs, + sonetVTIntervalCVs, + sonetVTIntervalUASs, + sonetVTIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces." + ::= { sonetGroups 13 } + +sonetFarEndLineStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndLineCurrentESs, + sonetFarEndLineCurrentSESs, + + + + sonetFarEndLineCurrentCVs, + sonetFarEndLineCurrentUASs, + sonetFarEndLineIntervalESs, + sonetFarEndLineIntervalSESs, + sonetFarEndLineIntervalCVs, + sonetFarEndLineIntervalUASs, + sonetFarEndLineIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces, + and maintaining Line Far End information." + ::= { sonetGroups 14 } + +sonetFarEndPathStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndPathCurrentESs, + sonetFarEndPathCurrentSESs, + sonetFarEndPathCurrentCVs, + sonetFarEndPathCurrentUASs, + sonetFarEndPathIntervalESs, + sonetFarEndPathIntervalSESs, + sonetFarEndPathIntervalCVs, + sonetFarEndPathIntervalUASs, + sonetFarEndPathIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces, + and maintaining Path Far End information." + ::= { sonetGroups 15 } + +sonetFarEndVTStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndVTCurrentESs, + sonetFarEndVTCurrentSESs, + sonetFarEndVTCurrentCVs, + sonetFarEndVTCurrentUASs, + sonetFarEndVTIntervalESs, + sonetFarEndVTIntervalSESs, + sonetFarEndVTIntervalCVs, + sonetFarEndVTIntervalUASs, + sonetFarEndVTIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces, + and maintaining VT Far End information." + ::= { sonetGroups 16 } + + + + +END diff --git a/mibs/ietf/SOURCE-ROUTING-MIB b/mibs/ietf/SOURCE-ROUTING-MIB new file mode 100644 index 0000000..b97a28b --- /dev/null +++ b/mibs/ietf/SOURCE-ROUTING-MIB @@ -0,0 +1,456 @@ +SOURCE-ROUTING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, Gauge + FROM RFC1155-SMI + dot1dBridge, dot1dSr + FROM BRIDGE-MIB + OBJECT-TYPE + FROM RFC-1212; + + + +-- groups in the SR MIB + +-- dot1dSr is imported from the Bridge MIB + +dot1dPortPair OBJECT IDENTIFIER ::= { dot1dBridge 10 } + +-- the dot1dSr group + +-- this group is implemented by those bridges that +-- support the source route bridging mode, including Source +-- Routing and SRT bridges. + + +dot1dSrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dSrPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table that contains information about every + port that is associated with this source route + bridge." + ::= { dot1dSr 1 } + +dot1dSrPortEntry OBJECT-TYPE + SYNTAX Dot1dSrPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information for each port of a source + route bridge." + INDEX { dot1dSrPort } + ::= { dot1dSrPortTable 1 } + +Dot1dSrPortEntry ::= + SEQUENCE { + dot1dSrPort + INTEGER, + dot1dSrPortHopCount + INTEGER, + dot1dSrPortLocalSegment + INTEGER, + dot1dSrPortBridgeNum + INTEGER, + dot1dSrPortTargetSegment + INTEGER, + dot1dSrPortLargestFrame + INTEGER, + dot1dSrPortSTESpanMode + INTEGER, + dot1dSrPortSpecInFrames + Counter, + dot1dSrPortSpecOutFrames + Counter, + dot1dSrPortApeInFrames + Counter, + dot1dSrPortApeOutFrames + Counter, + dot1dSrPortSteInFrames + Counter, + dot1dSrPortSteOutFrames + Counter, + dot1dSrPortSegmentMismatchDiscards + Counter, + dot1dSrPortDuplicateSegmentDiscards + Counter, + dot1dSrPortHopCountExceededDiscards + Counter, + dot1dSrPortDupLanIdOrTreeErrors + Counter, + dot1dSrPortLanIdMismatches + Counter + } + +dot1dSrPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port number of the port for which this entry + contains Source Route management information." + ::= { dot1dSrPortEntry 1 } + +dot1dSrPortHopCount OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of routing descriptors allowed + in an All Paths or Spanning Tree Explorer frames." + ::= { dot1dSrPortEntry 2 } + +dot1dSrPortLocalSegment OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The segment number that uniquely identifies the + segment to which this port is connected. Current + source routing protocols limit this value to the + range: 0 through 4095. (The value 0 is used by + some management applications for special test + cases.) A value of 65535 signifies that no segment + number is assigned to this port." + ::= { dot1dSrPortEntry 3 } + +dot1dSrPortBridgeNum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A bridge number uniquely identifies a bridge when + more than one bridge is used to span the same two + segments. Current source routing protocols limit + this value to the range: 0 through 15. A value of + 65535 signifies that no bridge number is assigned + to this bridge." + ::= { dot1dSrPortEntry 4 } + +dot1dSrPortTargetSegment OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The segment number that corresponds to the target + segment this port is considered to be connected to + by the bridge. Current source routing protocols + limit this value to the range: 0 through 4095. + (The value 0 is used by some management + applications for special test cases.) A value of + 65535 signifies that no target segment is assigned + to this port." + ::= { dot1dSrPortEntry 5 } + +-- It would be nice if we could use ifMtu as the size of the +-- largest frame, 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). + +dot1dSrPortLargestFrame OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum size of the INFO field (LLC and + above) that this port can send/receive. It does + not include any MAC level (framing) octets. The + value of this object is used by this bridge to + determine whether a modification of the + LargestFrame (LF, see [14]) field of the Routing + Control field of the Routing Information Field is + necessary. + + 64 valid values are defined by the IEEE 802.5M SRT + Addendum: 516, 635, 754, 873, 993, 1112, 1231, + 1350, 1470, 1542, 1615, 1688, 1761, 1833, 1906, + 1979, 2052, 2345, 2638, 2932, 3225, 3518, 3812, + 4105, 4399, 4865, 5331, 5798, 6264, 6730, 7197, + 7663, 8130, 8539, 8949, 9358, 9768, 10178, 10587, + 10997, 11407, 12199, 12992, 13785, 14578, 15370, + 16163, 16956, 17749, 20730, 23711, 26693, 29674, + 32655, 35637, 38618, 41600, 44591, 47583, 50575, + 53567, 56559, 59551, and 65535. + + An illegal value will not be accepted by the + bridge." + ::= { dot1dSrPortEntry 6 } + +dot1dSrPortSTESpanMode OBJECT-TYPE + SYNTAX INTEGER { + auto-span(1), + disabled(2), + forced(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Determines how this port behaves when presented + with a Spanning Tree Explorer frame. The value + 'disabled(2)' indicates that the port will not + accept or send Spanning Tree Explorer packets; any + STE packets received will be silently discarded. + The value 'forced(3)' indicates the port will + always accept and propagate Spanning Tree Explorer + frames. This allows a manually configured + Spanning Tree for this class of packet to be + configured. Note that unlike transparent + bridging, this is not catastrophic to the network + if there are loops. The value 'auto-span(1)' can + only be returned by a bridge that both implements + the Spanning Tree Protocol and has use of the + protocol enabled on this port. The behavior of the + port for Spanning Tree Explorer frames is + determined by the state of dot1dStpPortState. If + the port is in the 'forwarding' state, the frame + will be accepted or propagated. Otherwise, it + will be silently discarded." + ::= { dot1dSrPortEntry 7 } + +dot1dSrPortSpecInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Specifically Routed frames, also + referred to as Source Routed Frames, that have + been received from this port's segment." + ::= { dot1dSrPortEntry 8 } + +dot1dSrPortSpecOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Specifically Routed frames, also + referred to as Source Routed Frames, that this + port has transmitted on its segment." + ::= { dot1dSrPortEntry 9 } + +dot1dSrPortApeInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of All Paths Explorer frames, also + referred to as All Routes Explorer frames, that + have been received by this port from its segment." + ::= { dot1dSrPortEntry 10 } + +dot1dSrPortApeOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of all Paths Explorer Frames, also + referred to as All Routes Explorer frames, that + have been transmitted by this port on its + segment." + ::= { dot1dSrPortEntry 11 } + +dot1dSrPortSteInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of spanning tree explorer frames that + have been received by this port from its segment." + ::= { dot1dSrPortEntry 12 } + +dot1dSrPortSteOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of spanning tree explorer frames that + have been transmitted by this port on its + segment." + ::= { dot1dSrPortEntry 13 } + +dot1dSrPortSegmentMismatchDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of explorer frames that have been + discarded by this port because the routing + descriptor field contained an invalid adjacent + segment value." + ::= { dot1dSrPortEntry 14 } + +dot1dSrPortDuplicateSegmentDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames that have been discarded by + this port because the routing descriptor field + contained a duplicate segment identifier." + ::= { dot1dSrPortEntry 15 } + +dot1dSrPortHopCountExceededDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of explorer frames that have been + discarded by this port because the Routing + Information Field has exceeded the maximum route + descriptor length." + ::= { dot1dSrPortEntry 16 } + +dot1dSrPortDupLanIdOrTreeErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate LAN IDs or Tree errors. + This helps in detection of problems in networks + containing older IBM Source Routing Bridges." + ::= { dot1dSrPortEntry 17 } + +dot1dSrPortLanIdMismatches OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ARE and STE frames that were + discarded because the last LAN ID in the routing + information field did not equal the LAN-in ID. + This error can occur in implementations which do + only a LAN-in ID and Bridge Number check instead + of a LAN-in ID, Bridge Number, and LAN-out ID + check before they forward broadcast frames." + ::= { dot1dSrPortEntry 18 } + + +-- scalar object in dot1dSr + +dot1dSrBridgeLfMode OBJECT-TYPE + SYNTAX INTEGER { + mode3(1), + mode6(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the bridge operates using older + 3 bit length negotiation fields or the newer 6 bit + length field in its RIF." + ::= { dot1dSr 2 } + + +-- The Port-Pair Database + +-- Implementation of this group is optional. + +-- This group is implemented by those bridges that support +-- the direct multiport model of the source route bridging +-- mode as defined in the IEEE 802.5 SRT Addendum to +-- 802.1d. + +-- Bridges implementing this group may report 65535 for +-- dot1dSrPortBridgeNumber and dot1dSrPortTargetSegment, +-- indicating that those objects are not applicable. + +dot1dPortPairTableSize OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of entries in the Bridge Port + Pair Database." + ::= { dot1dPortPair 1 } + + +-- the Bridge Port-Pair table + +-- this table represents port pairs within a bridge forming +-- a unique bridge path, as defined in the IEEE 802.5M SRT +-- Addendum. + +dot1dPortPairTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortPairEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table that contains information about every + port pair database entity associated with this + source routing bridge." + ::= { dot1dPortPair 2 } + +dot1dPortPairEntry OBJECT-TYPE + SYNTAX Dot1dPortPairEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information for each port pair entity + of a bridge." + INDEX { dot1dPortPairLowPort, dot1dPortPairHighPort } + ::= { dot1dPortPairTable 1 } + +Dot1dPortPairEntry ::= + SEQUENCE { + dot1dPortPairLowPort + INTEGER, + dot1dPortPairHighPort + INTEGER, + dot1dPortPairBridgeNum + INTEGER, + dot1dPortPairBridgeState + INTEGER + } + +dot1dPortPairLowPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number of the lower numbered port for + which this entry contains port pair database + information." + ::= { dot1dPortPairEntry 1 } + +dot1dPortPairHighPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number of the higher numbered port for + which this entry contains port pair database + information." + ::= { dot1dPortPairEntry 2 } + +dot1dPortPairBridgeNum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A bridge number that uniquely identifies the path + provided by this source routing bridge between the + segments connected to dot1dPortPairLowPort and + dot1dPortPairHighPort. The purpose of bridge + number is to disambiguate between multiple paths + connecting the same two LANs." + ::= { dot1dPortPairEntry 3 } + +dot1dPortPairBridgeState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + invalid(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of dot1dPortPairBridgeNum. Writing + 'invalid(3)' to this object removes the + corresponding entry." + ::= { dot1dPortPairEntry 4 } + + + + +END diff --git a/mibs/ietf/SSPM-MIB b/mibs/ietf/SSPM-MIB new file mode 100644 index 0000000..7031185 --- /dev/null +++ b/mibs/ietf/SSPM-MIB @@ -0,0 +1,1090 @@ +SSPM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, Unsigned32 + FROM SNMPv2-SMI --[RFC2578] + + TEXTUAL-CONVENTION, StorageType, + TruthValue, RowStatus + FROM SNMPv2-TC --[RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF --[RFC2578, + -- RFC2579, + -- RFC2580] + OwnerString, rmon + FROM RMON-MIB --[RFC2819] + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB --[RFC3291] + + + + + InterfaceIndexOrZero + FROM IF-MIB --[RFC2863] + + AppLocalIndex + FROM APM-MIB --[RFC3729] + + Utf8String + FROM SYSAPPL-MIB; --[RFC2287] + + sspmMIB MODULE-IDENTITY + LAST-UPDATED "200507280000Z" -- July 28, 2005 + ORGANIZATION "IETF RMON MIB working group" + CONTACT-INFO + " Carl W. Kalbfleisch + Consultant + + E-mail: ietf@kalbfleisch.us + + Working group mailing list: rmonmib@ietf.org + To subscribe send email to rmonmib-request@ietf.org" + DESCRIPTION + "This SSPM MIB module is applicable to probes + implementing Synthetic Source for Performance + Monitoring functions. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4149; see the RFC + itself for full legal notices." + + -- revision history + + REVISION "200507280000Z" -- July 28, 2005 + DESCRIPTION + "The original version of this MIB module, + was published as RFC4149." + ::= { rmon 28 } + +-- +-- Object Identifier Assignments +-- +sspmMIBObjects OBJECT IDENTIFIER ::= { sspmMIB 1 } +sspmMIBNotifications OBJECT IDENTIFIER ::= { sspmMIB 2 } +sspmMIBConformance OBJECT IDENTIFIER ::= { sspmMIB 3 } + +-- +-- Textual Conventions +-- + + + + +SspmMicroSeconds ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unit of time with resolution of MicroSeconds." + SYNTAX Unsigned32 + +SspmClockSource ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An indication of the source of the clock as defined by the + NTP specification RFC1305 [RFC1305] definition of stratum: + + Stratum (sys.stratum, peer.stratum, pkt.stratum): This is + an integer indicating the stratum of the local clock, + with values defined as follows: + + 0 unspecified + + 1 primary reference (e.g., calibrated atomic clock, + radio clock) + + 2-255 secondary reference (via NTP)." + REFERENCE + "RFC1305." + SYNTAX Integer32 (0..255) + +SspmClockMaxSkew ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + -- UNITS "Seconds" + DESCRIPTION + "An indication of the accuracy of the clock as defined by + RFC1305. This variable indicates the maximum offset + error due to skew of the local clock over the + time interval 86400 seconds, in seconds." + REFERENCE + "RFC1305." + SYNTAX Integer32 (1..65535) + +-- +-- sspmGeneral +-- +sspmGeneral OBJECT IDENTIFIER ::= { sspmMIBObjects 1 } +sspmGeneralClockResolution OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-only + + + + STATUS current + -- UNITS Microseconds + DESCRIPTION + "A read-only variable indicating the resolution + of the measurements possible by this device." + ::= { sspmGeneral 1 } + +sspmGeneralClockMaxSkew OBJECT-TYPE + SYNTAX SspmClockMaxSkew + MAX-ACCESS read-only + STATUS current + -- UNITS Seconds + DESCRIPTION + "A read-only variable indicating the maximum offset + error due to skew of the local clock over the + time interval 86400 seconds, in seconds." + ::= { sspmGeneral 2 } + + +sspmGeneralClockSource OBJECT-TYPE + SYNTAX SspmClockSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read-only variable indicating the source of the clock. + This is provided to allow a user to determine how accurate + the timing mechanism is compared with other devices. This + is needed for the coordination of time values + between probes for one-way measurements." + ::= { sspmGeneral 3 } + +sspmGeneralMinFrequency OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-only + -- units MicroSeconds + STATUS current + DESCRIPTION + "A read-only variable that indicates the devices' + capability for the minimum supported + sspmSourceFrequency. If sspmSourceFrequency is + set to a value lower than the value reported + by this attribute, then the set of sspmSourceFrequency + will fail with an inconsistent value error." + ::= { sspmGeneral 4 } + +-- +-- sspmCapabilities +-- + + + +-- Describes the capabilities of the SSPM device. +-- +sspmCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM capabilities." + ::= { sspmGeneral 5 } + +sspmCapabilitiesEntry OBJECT-TYPE + SYNTAX SspmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM capability." + INDEX { sspmCapabilitiesInstance } + ::= { sspmCapabilitiesTable 1 } + +SspmCapabilitiesEntry ::= SEQUENCE { + sspmCapabilitiesInstance AppLocalIndex + } + +sspmCapabilitiesInstance OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether SSPM configuration of the corresponding + AppLocalIndex is supported by this device. Generally, + entries in this table are only made by the device when the + configuration of the measurement is available." + ::= { sspmCapabilitiesEntry 1 } + +-- +-- sspmSource +-- +-- Contains the details of the source of the +-- Synthetic Sources for Performance Monitoring algorithms. +-- This information is split into two tables. The first defines +-- profiles that can be applied to specific sources in the +-- control table. +-- +sspmSource OBJECT IDENTIFIER ::= { sspmMIBObjects 2 } + +-- +-- sspmSourceProfileTable +-- Defines template profiles for measurements. + + + +-- +sspmSourceProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSourceProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM Source Profiles configured." + ::= { sspmSource 1 } + +sspmSourceProfileEntry OBJECT-TYPE + SYNTAX SspmSourceProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM Source Profile + configuration. Entries must exist in this table + in order to be referenced by rows in the + sspmSourceControlTable." + INDEX { sspmSourceProfileInstance } + ::= { sspmSourceProfileTable 1 } + +SspmSourceProfileEntry ::= SEQUENCE { + sspmSourceProfileInstance Unsigned32, + sspmSourceProfileType AppLocalIndex, + sspmSourceProfilePacketSize Unsigned32, + sspmSourceProfilePacketFillType INTEGER, + sspmSourceProfilePacketFillValue OCTET STRING, + sspmSourceProfileTOS Integer32, + sspmSourceProfileFlowLabel Integer32, + sspmSourceProfileLooseSrcRteFill OCTET STRING, + sspmSourceProfileLooseSrcRteLen Integer32, + sspmSourceProfileTTL Integer32, + sspmSourceProfileNoFrag TruthValue, + sspmSourceProfile8021Tagging Integer32, + sspmSourceProfileUsername Utf8String, + sspmSourceProfilePassword Utf8String, + sspmSourceProfileParameter OCTET STRING, + sspmSourceProfileOwner OwnerString, + sspmSourceProfileStorageType StorageType, + sspmSourceProfileStatus RowStatus +} + +sspmSourceProfileInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index." + + + + ::= { sspmSourceProfileEntry 1 } + +sspmSourceProfileType OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AppLocalIndex value that uniquely identifies the + measurement per the APM-MIB. In order to create a row + in this table, there must be a corresponding row in the + sspmCapabilitiesTable. + + When attempting to set this object, if no + corresponding row exists in the sspmCapabilitiesTable, + then the agent should return a 'badValue' error." + ::= { sspmSourceProfileEntry 2} + +sspmSourceProfilePacketSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of packet to be transmitted in bytes. The + size accounts for all data within the IPv4 or IPv6 + payloads, excluding the IP headers, IP header options + and link-level protocol headers. + + If the size is set smaller than the minimum allowed + packet size or greater than the maximum allowed + packet size, then the set should fail, and the agent + should return a 'badValue' error." + ::= { sspmSourceProfileEntry 3 } + +sspmSourceProfilePacketFillType OBJECT-TYPE + SYNTAX INTEGER { + random (1), + pattern (2), + url(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates how the packet is filled. + + 'random' indicates that the packet contains random + data patterns. This is probe and implementation + dependent. + + + + + 'pattern' indicates that the pattern defined in the + sspmSourceProfilePacketFillValue attribute is used to + fill the packet. + + 'url' indicates that the value of + sspmSourceProfilePacketFillValue should + contain a URL. The contents of the document + at that URL are retrieved when sspmSourceStatus becomes + active and utilized in the packet. If the attempt to + access that URL fails, then the row status is set to + 'notReady', and the set should fail with + 'inconsistentValue'. This value must contain a + dereferencable URL of the type 'http:', 'https:', or + 'ftp:' only." + ::= { sspmSourceProfileEntry 4 } + +sspmSourceProfilePacketFillValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value with which to fill the packet. If + sspmSourceProfilePacketFillType is set to 'pattern', + then this pattern is repeated until the packet is + sspmSourcePacketSize in bytes. Note that if the + length of the octet string specified for this + value does not divide evenly into the packet + size, then an incomplete last copy of this data + may be copied into the packet. If the value of + sspmSourceProfilePacketFillType is set to 'random', then + this attribute is unused. If the value of the + sspmSourceProfilePacketFillType is set to 'url', then + the URL specified in this attribute is retrieved + and used by the probe. In the case of a URL, this value + must contain a dereferencable URL of the type + 'http:', 'https:', or 'ftp:' only." + ::= { sspmSourceProfileEntry 5 } + +sspmSourceProfileTOS OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Represents the TOS field in the IP packet header. The + value of this object defaults to zero if not set." + DEFVAL { 0 } + ::= { sspmSourceProfileEntry 6 } + + + + +sspmSourceProfileFlowLabel OBJECT-TYPE + SYNTAX Integer32 (0..1048575) -- 20-bit range (0 to 0xfffff) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to specify the Flow Label in a IPv6 + packet (RFC 2460) to force special handling by the IPv6 + routers; e.g., non-default quality-of-service handling. + + This object is meaningful only when the object + sspmSourceDestAddressType is IPv6(2). + The value of this object defaults to zero if not set." + DEFVAL { 0 } + ::= { sspmSourceProfileEntry 7 } + +sspmSourceProfileLooseSrcRteFill OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..240)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event that the test should run over a + specific route, the intent is to force the route using the + Loose Source Route option in IPv4 [RFC791] and + IPv6 [RFC2460]. This object contains a + series of IP addresses along the path that would be + put into the loose source route option in the IP header. + + The IPv4 addresses are to be listed as 32-bit + address values, and the IPv6 addresses are to be + listed as a string of 128-bit addresses. The + maximum length allowed within the IPv4 source route + option is 63 addresses. To simply account for + IPv6 addresses as well, the maximum length of the + octet string is 240. This allows up to 60 + IPv4 addresses or up to 15 IPv6 addresses in the + string." + ::= { sspmSourceProfileEntry 8 } + +sspmSourceProfileLooseSrcRteLen OBJECT-TYPE + SYNTAX Integer32(0..240) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event that the test should run over a + specific route, the intent is to force the route. + This attribute specifies the length of data to + be copied from the sspmSourceProfileLooseSrcRteFill + into the route data fields of the loose source route + + + + options in the IPv4 or IPv6 headers." + ::= { sspmSourceProfileEntry 9 } + +sspmSourceProfileTTL OBJECT-TYPE + SYNTAX Integer32(1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If non-zero, this specifies the value to place into + the TTL field on transmission." + ::= { sspmSourceProfileEntry 10 } + +sspmSourceProfileNoFrag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When true, the 'Don't Fragment Bit' should be set + on the packet header." + ::= { sspmSourceProfileEntry 11 } + +sspmSourceProfile8021Tagging OBJECT-TYPE + SYNTAX Integer32 (-1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IEEE 802.1Q tagging used in IEEE 802.1D bridged + environments. + + A value of -1 indicates that the packets are untagged. + + A value of 0 to 65535 is the value of the tag to be + inserted in the tagged packets. + + Note that according to IEEE 802.1Q, VLAN-ID tags with + a value of 4095 shall not be transmitted on the wire. + As the VLAN-ID is encoded in the 12 least significant + bits on the tag, values that translate in a binary + representation of all 1's in the last 12 bits + SHALL NOT be configured. In this case, the set should + fail, and return an error-status of 'inconsistentValue'." + ::= { sspmSourceProfileEntry 12 } + +sspmSourceProfileUsername OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "An optional username used by the application protocol." + ::= { sspmSourceProfileEntry 13 } + +sspmSourceProfilePassword OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An optional password used by the application protocol." + ::= { sspmSourceProfileEntry 14 } + +sspmSourceProfileParameter OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An optional parameter used by the application protocol. + For DNS, this would be the hostname or IP. For HTTP, + this would be the URL. For nntp, this would be the + news group. For TCP, this would be the port number. + For SMTP, this would be the recipient (and could + assume the message is predefined)." + ::= { sspmSourceProfileEntry 15 } + +sspmSourceProfileOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of the management station/application that + set up the profile." + ::= { sspmSourceProfileEntry 16 } + +sspmSourceProfileStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSourceProfileEntry. If the + value of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSourceProfileEntry 17 } + +sspmSourceProfileStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Status of this profile. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + Once this object is set to active(1), no objects in the + sspmSourceProfileTable can be changed." + ::= { sspmSourceProfileEntry 18 } + +-- +-- sspmSourceControlTable +-- Defines specific measurement instances based on template +-- profiles in the sspmSourceProfileTable which must be +-- pre-configured. +-- + +sspmSourceControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSourceControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM measurements configured." + ::= { sspmSource 2 } + +sspmSourceControlEntry OBJECT-TYPE + SYNTAX SspmSourceControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM configuration." + INDEX { sspmSourceControlInstance } + ::= { sspmSourceControlTable 1 } + +SspmSourceControlEntry ::= SEQUENCE { + sspmSourceControlInstance Unsigned32, + sspmSourceControlProfile Integer32, + sspmSourceControlSrc InterfaceIndexOrZero, + sspmSourceControlDestAddrType InetAddressType, + sspmSourceControlDestAddr InetAddress, + sspmSourceControlEnabled TruthValue, + sspmSourceControlTimeOut SspmMicroSeconds, + sspmSourceControlSamplingDist INTEGER, + sspmSourceControlFrequency SspmMicroSeconds, + sspmSourceControlFirstSeqNum Unsigned32, + sspmSourceControlLastSeqNum Unsigned32, + sspmSourceControlOwner OwnerString, + sspmSourceControlStorageType StorageType, + sspmSourceControlStatus RowStatus + + + +} + +sspmSourceControlInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index." + ::= { sspmSourceControlEntry 1 } + +sspmSourceControlProfile OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the profile (sspmSourceProfileEntry) that + this control entry uses to define the test being + performed." + ::= { sspmSourceControlEntry 2 } + +sspmSourceControlSrc OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex where the packet should originate from the + probe (if it matters). A value of zero indicates that + it does not matter and that the device decides." + ::= { sspmSourceControlEntry 3 } + +sspmSourceControlDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address by which the destination + is accessed." + ::= { sspmSourceControlEntry 4 } + +sspmSourceControlDestAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the destination. The formatting + of this object is controlled by the + sspmSourceControlDestAddrType object above. + + + + + When this object contains a DNS name, then the name is + resolved to an address each time measurement is to be made. + Further, the agent should not cache this address, + but instead should perform the resolution prior to each + measurement." + ::= { sspmSourceControlEntry 5 } + +sspmSourceControlEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When set to 'true', this test is enabled. When set to + 'false', it is disabled." + ::= { sspmSourceControlEntry 6 } + +sspmSourceControlTimeOut OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timeout value for the measurement response. If no + response is received in the time specified, then + the test fails." + ::= { sspmSourceControlEntry 7 } + +sspmSourceControlSamplingDist OBJECT-TYPE + SYNTAX INTEGER { + deterministic(1), + poisson(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this attribute is set to 'deterministic', then + packets are generated at with a fixed inter-packet + injection time specified by sspmSourceFrequency. + + When this attribute is set to 'Poisson', then packets + are generated with inter-packet injection times sampled + from an exponential distribution with the single + distributional parameter determined by the inverse + frequency)." + ::= { sspmSourceControlEntry 8 } + +sspmSourceControlFrequency OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The inverse of this value is the rate at which packets + are generated. Refer to sspmSourceSamplingDistribution. + If the value set is less than the value of + sspmGeneralMinFrequency, then the set will fail with an + error-status of 'inconsistentValue'." + ::= { sspmSourceControlEntry 9 } + +sspmSourceControlFirstSeqNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first sequence number of packets to be transmitted." + ::= { sspmSourceControlEntry 10 } + +sspmSourceControlLastSeqNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last sequence number transmitted. This value is updated + by the agent after packet generation." + ::= { sspmSourceControlEntry 11 } + +sspmSourceControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of the management station/application that set + up the test." + ::= { sspmSourceControlEntry 12 } + +sspmSourceControlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSourceControlEntry. If the + value of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSourceControlEntry 13 } + +sspmSourceControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Status of this source control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + When this attribute has the value of + 'active', none of the read-write or read-create attributes + in this table may be modified, with the exception of + sspmSourceControlEnabled." + ::= { sspmSourceControlEntry 14 } + +-- +-- sspmSinkTable +-- +-- Contains attributes for configuration of Synthetic +-- Sources for Performance Monitoring sinks, i.e., +-- sinks for receipt of one-way delay measurements. +-- +sspmSink OBJECT IDENTIFIER ::= { sspmMIBObjects 5 } + +sspmSinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table configuring the sink for measurements." + ::= { sspmSink 1 } + +sspmSinkEntry OBJECT-TYPE + SYNTAX SspmSinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The details of a particular sink entry. If the measurement + is a round-trip type, then the sink entry will be on the + same probe as the corresponding sspmSourceEntry. If the + measurement is a one-way, type then the sink entry will be + on a different probe." + INDEX { sspmSinkInstance } + ::= { sspmSinkTable 1} + +SspmSinkEntry ::= SEQUENCE { + sspmSinkInstance Unsigned32, + sspmSinkType AppLocalIndex, + sspmSinkSourceAddressType InetAddressType, + sspmSinkSourceAddress InetAddress, + + + + sspmSinkExpectedRate SspmMicroSeconds, + sspmSinkEnable TruthValue, + sspmSinkExpectedFirstSequenceNum Unsigned32, + sspmSinkLastSequenceNumber Unsigned32, + sspmSinkLastSequenceInvalid Counter32, + sspmSinkStorageType StorageType, + sspmSinkStatus RowStatus +} + +sspmSinkInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index. When the measurement is for a round-trip + measurement, then this table entry is on the same probe as + the corresponding sspmSourceEntry, and the value of this + attribute should correspond to the value of + sspmSourceInstance. Management applications configuring + sinks for one-way measurements could define some + scheme whereby the sspmSinkInstance is unique across + all probes. Note that the unique key to this entry is + also constructed with sspmSinkType, + sspmSinkSourceAddressType, and sspmSinkSourceAddress. + To make the implementation simpler, those other + attributes are not included in the index but uniqueness + is still needed to receive all the packets." + ::= { sspmSinkEntry 1 } + +sspmSinkType OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AppLocalIndex value that uniquely identifies the + measurement per the APM-MIB. In order to create a row + in this table, there must be a corresponding row in the + sspmCapabilitiesTable. If there is no corresponding + row in the sspmCapabilitiestable, then the agent will + return an error-status of 'inconsistentValue'." + ::= { sspmSinkEntry 2} + +sspmSinkSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address of the source." + + + + ::= { sspmSinkEntry 3 } + +sspmSinkSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address of the source. The formatting + of this object is controlled by the sspmSinkSourceAddressType + object above. + + This object should be set only to a valid device address + that has been administratively configured into the + device. If a set attempts to set this object to an + address that does not belong (i.e., is not administratively + configured into the device), the set should fail, and the + agent should return a error-status of 'inconsistentValue'." + ::= { sspmSinkEntry 4 } + +sspmSinkExpectedRate OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected rate at which packets will arrive." + ::= { sspmSinkEntry 5 } + +sspmSinkEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates if the sink is enabled or not." + ::= { sspmSinkEntry 6 } + +sspmSinkExpectedFirstSequenceNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected first sequence number of packets. + This is used by the sink to determine if packets + were lost at the initiation of the test." + ::= { sspmSinkEntry 7 } + +sspmSinkLastSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The last sequence number received." + ::= { sspmSinkEntry 8 } + +sspmSinkLastSequenceInvalid OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that arrived whose + sequence number was not one plus the value of + sspmSinkLastSequenceNumber." + ::= { sspmSinkEntry 9 } + +sspmSinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSinkEntry. If the value + of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSinkEntry 10 } + +sspmSinkStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Status of this conceptual row. + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + Once this object is set to active(1), no objects with + MAX-ACCESS of read-create in the sspmSinkTable can + be changed." + ::= { sspmSinkEntry 11 } + +-- +-- Notifications +-- + +-- +-- Conformance information +-- +sspmCompliances OBJECT IDENTIFIER ::= { sspmMIBConformance 1 } +sspmGroups OBJECT IDENTIFIER ::= { sspmMIBConformance 2 } + + + +-- Compliance Statements +sspmGeneralCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "A general compliance that allows all things to be optional." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup } + + GROUP sspmSourceGroup + DESCRIPTION + "The SSPM Source Group is optional." + + GROUP sspmSinkGroup + DESCRIPTION + "The SSPM Sink Group is optional." + + GROUP sspmUserPassGroup + DESCRIPTION + "The SSPM User Pass Group is optional." + + ::= { sspmCompliances 1 } + +-- +-- SSPM Source Compliance +-- +sspmSourceFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "A source compliance. Use this compliance when implementing + a traffic-source-only device. This is useful for implementing + devices that probe other devices for intrusive application + monitoring. It is also useful for implementing the source + of one-way tests used with a sink-only device." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup, sspmSourceGroup } + + GROUP sspmUserPassGroup + DESCRIPTION + "The SSPM User Pass Group is optional." + ::= { sspmCompliances 2 } + +-- +-- SSPM Sink Compliance +-- +sspmSinkFullCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "A sink-only compliance. Use this compliance when implementing a + sink-only device. This is useful for devices to receive one-way + measurements." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup, sspmSinkGroup } + + ::= { sspmCompliances 3 } + +-- +-- Groups +-- +sspmGeneralGroup OBJECT-GROUP + OBJECTS { + sspmGeneralClockResolution, + sspmGeneralClockMaxSkew, + sspmGeneralClockSource, + sspmGeneralMinFrequency, + sspmCapabilitiesInstance + } + STATUS current + DESCRIPTION + "The objects in the SSPM General Group." + ::= { sspmGroups 1 } + +sspmSourceGroup OBJECT-GROUP + OBJECTS { + sspmSourceProfileType, + sspmSourceProfilePacketSize, + sspmSourceProfilePacketFillType, + sspmSourceProfilePacketFillValue, + sspmSourceProfileTOS, + sspmSourceProfileFlowLabel, + sspmSourceProfileLooseSrcRteFill, + sspmSourceProfileLooseSrcRteLen, + sspmSourceProfileTTL, + sspmSourceProfileNoFrag, + sspmSourceProfile8021Tagging, + sspmSourceProfileUsername, + sspmSourceProfilePassword, + sspmSourceProfileParameter, + sspmSourceProfileOwner, + sspmSourceProfileStorageType, + sspmSourceProfileStatus, + sspmSourceControlProfile, + sspmSourceControlSrc, + sspmSourceControlDestAddrType, + + + + sspmSourceControlDestAddr, + sspmSourceControlEnabled, + sspmSourceControlTimeOut, + sspmSourceControlSamplingDist, + sspmSourceControlFrequency, + sspmSourceControlFirstSeqNum, + sspmSourceControlLastSeqNum, + sspmSourceControlOwner, + sspmSourceControlStorageType, + sspmSourceControlStatus + } + STATUS current + DESCRIPTION + "The objects in the SSPM Source Group." + ::= { sspmGroups 2 } + +sspmUserPassGroup OBJECT-GROUP + OBJECTS { + sspmSourceProfileUsername, + sspmSourceProfilePassword + } + STATUS current + DESCRIPTION + "The objects in the SSPM Username and password group." + ::= { sspmGroups 3 } + +sspmSinkGroup OBJECT-GROUP + OBJECTS { + sspmSinkType, + sspmSinkSourceAddressType, + sspmSinkSourceAddress, + sspmSinkExpectedRate, + sspmSinkEnable, + sspmSinkExpectedFirstSequenceNum, + sspmSinkLastSequenceNumber, + sspmSinkLastSequenceInvalid, + sspmSinkStorageType, + sspmSinkStatus + } + STATUS current + DESCRIPTION + "The objects in the SSPM Sink Group." + ::= { sspmGroups 4 } + +END diff --git a/mibs/ietf/SYSAPPL-MIB b/mibs/ietf/SYSAPPL-MIB new file mode 100644 index 0000000..65ce422 --- /dev/null +++ b/mibs/ietf/SYSAPPL-MIB @@ -0,0 +1,1543 @@ + SYSAPPL-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, TimeTicks, Counter32, Gauge32 + FROM SNMPv2-SMI + DateAndTime, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2 FROM SNMPv2-SMI; + + -- System Application MIB + + sysApplMIB MODULE-IDENTITY + LAST-UPDATED "9710200000Z" + ORGANIZATION "IETF Applications MIB Working Group" + CONTACT-INFO + "Cheryl Krupczak (Editor, WG Advisor) + Postal: Empire Technologies, Inc. + 541 Tenth Street NW + Suite 169 + Atlanta, GA 30318 + USA + Phone: (770) 384-0184 + Email: cheryl@empiretech.com + + Jon Saperia (WG Chair) + Postal: BGS Systems, Inc. + One First Avenue + Waltham, MA 02254-9111 + USA + Phone: (617) 891-0000 + Email: saperia@networks.bgs.com" + DESCRIPTION + "The MIB module defines management objects that model + applications as collections of executables and files + installed and executing on a host system. The MIB + presents a system-level view of applications; i.e., + objects in this MIB are limited to those attributes + that can typically be obtained from the system itself + without adding special instrumentation to the applications." + ::= { mib-2 54 } + + + sysApplOBJ OBJECT IDENTIFIER ::= { sysApplMIB 1 } + sysApplInstalled OBJECT IDENTIFIER ::= { sysApplOBJ 1 } + sysApplRun OBJECT IDENTIFIER ::= { sysApplOBJ 2 } + sysApplMap OBJECT IDENTIFIER ::= { sysApplOBJ 3 } + sysApplNotifications OBJECT IDENTIFIER ::= { sysApplMIB 2 } + sysApplConformance OBJECT IDENTIFIER ::= { sysApplMIB 3 } + + -- Textual Conventions + + RunState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the current execution state of + a running application or process. The possible + values are: + running(1), + runnable(2), - waiting for a resource (CPU, etc.) + waiting(3), - waiting for an event + exiting(4), + other(5) - other invalid state" + SYNTAX INTEGER { + running (1), + runnable (2), -- waiting for resource (CPU, etc.) + waiting (3), -- waiting for event + exiting (4), + other (5) -- other invalid state + } + +LongUtf8String ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044 [10]. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..1024)) + +Utf8String ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044 [10]. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..255)) + + + + -- sysApplInstalled Group + -- This group provides information about application packages + -- that have been installed on the host computer. The group + -- contains two tables. The first, the sysApplInstallPkgTable, + -- describes the application packages, the second, the + -- sysApplInstallElmtTable, describes the constituent elements + -- (files and executables) which compose an application package. + + -- + -- In order to appear in this group, an application and its + -- component files must be discoverable by the system itself, + -- possibly through some type of software installation mechanism + -- or registry. + + -- sysApplInstallPkgTable + -- The system installed application packages table provides + -- information on the software packages installed on a system. + -- These packages may consist of many different files including + -- executable and non-executable files. + + sysApplInstallPkgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table listing the software application packages + installed on a host computer. In order to appear in + this table, it may be necessary for the application + to be installed using some type of software + installation mechanism or global registry so that its + existence can be detected by the agent implementation." + + ::= { sysApplInstalled 1 } + + sysApplInstallPkgEntry OBJECT-TYPE + SYNTAX SysApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an installed application + package." + INDEX { sysApplInstallPkgIndex } + ::= { sysApplInstallPkgTable 1 } + + SysApplInstallPkgEntry ::= SEQUENCE { + sysApplInstallPkgIndex Unsigned32, + sysApplInstallPkgManufacturer Utf8String, + sysApplInstallPkgProductName Utf8String, + sysApplInstallPkgVersion Utf8String, + sysApplInstallPkgSerialNumber Utf8String, + sysApplInstallPkgDate DateAndTime, + sysApplInstallPkgLocation LongUtf8String + } + + sysApplInstallPkgIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer used only for indexing purposes. + Generally monotonically increasing from 1 as new + applications are installed. + + The value for each installed application must + remain constant at least from one re-initialization of + the network management entity which implements this + MIB module to the next re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A sysApplInstallPkgIndex value must not be re-used + until the next agent entity restart in the event the + installed application entry is deleted." + ::= { sysApplInstallPkgEntry 1 } + + sysApplInstallPkgManufacturer OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Manufacturer of the software application package." + ::= { sysApplInstallPkgEntry 2 } + + sysApplInstallPkgProductName OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name assigned to the software application package + by the Manufacturer." + ::= { sysApplInstallPkgEntry 3 } + + sysApplInstallPkgVersion OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number assigned to the application package + by the manufacturer of the software." + ::= { sysApplInstallPkgEntry 4 } + + sysApplInstallPkgSerialNumber OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number of the software assigned by the + manufacturer." + ::= { sysApplInstallPkgEntry 5 } + + sysApplInstallPkgDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time this software application was installed + on the host." + ::= { sysApplInstallPkgEntry 6 } + + sysApplInstallPkgLocation OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete path name where the application package + is installed. For example, the value would be + '/opt/MyapplDir' if the application package was installed + in the /opt/MyapplDir directory." + ::= { sysApplInstallPkgEntry 7 } + + + -- sysApplInstallElmtTable + -- The table describing the individual application package + -- elements (files and executables) installed on the host computer. + + sysApplInstallElmtTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplInstallElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table details the individual application package + elements (files and executables) which comprise the + applications defined in the sysApplInstallPkg Table. + Each entry in this table has an index to the + sysApplInstallPkg table to identify the application + package of which it is a part. As a result, there may + be many entries in this table for each instance in the + sysApplInstallPkg Table. + + Table entries are indexed by sysApplInstallPkgIndex, + sysApplInstallElmtIndex to facilitate retrieval of + all elements associated with a particular installed + application package." + ::= { sysApplInstalled 2 } + + sysApplInstallElmtEntry OBJECT-TYPE + SYNTAX SysApplInstallElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an element of an installed + application. The element may be an executable or + non-executable file." + INDEX {sysApplInstallPkgIndex, sysApplInstallElmtIndex} + ::= { sysApplInstallElmtTable 1 } + + SysApplInstallElmtEntry ::= SEQUENCE { + sysApplInstallElmtIndex Unsigned32, + sysApplInstallElmtName Utf8String, + sysApplInstallElmtType INTEGER, + sysApplInstallElmtDate DateAndTime, + sysApplInstallElmtPath LongUtf8String, + sysApplInstallElmtSizeHigh Unsigned32, + sysApplInstallElmtSizeLow Unsigned32, + sysApplInstallElmtRole BITS, + sysApplInstallElmtModifyDate DateAndTime, + sysApplInstallElmtCurSizeHigh Unsigned32, + sysApplInstallElmtCurSizeLow Unsigned32 + + } + + sysApplInstallElmtIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used for indexing. The value + of this index is unique among all rows in this table + that exist or have existed since the last agent restart." + ::= { sysApplInstallElmtEntry 1 } + + + sysApplInstallElmtName OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this element which is contained in the + application." + ::= { sysApplInstallElmtEntry 2 } + + sysApplInstallElmtType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + nonexecutable(2), + operatingSystem(3), -- executable + deviceDriver(4), -- executable + application(5) -- executable + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of element that is part of the installed + application." + ::= { sysApplInstallElmtEntry 3 } + + sysApplInstallElmtDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that this component was installed on + the system." + ::= { sysApplInstallElmtEntry 4 } + + sysApplInstallElmtPath OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full directory path where this element is installed. + For example, the value would be '/opt/EMPuma/bin' for an + element installed in the directory '/opt/EMPuma/bin'. + Most application packages include information about the + elements contained in the package. In addition, elements + are typically installed in sub-directories under the + package installation directory. In cases where the + element path names are not included in the package + information itself, the path can usually be determined + by a simple search of the sub-directories. If the + element is not installed in that location and there is + no other information available to the agent implementation, + then the path is unknown and null is returned." + ::= { sysApplInstallElmtEntry 5} + + sysApplInstallElmtSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The installed file size in 2^32 byte blocks. This is + the size of the file on disk immediately after installation. + + For example, for a file with a total size of 4,294,967,296 + bytes, this variable would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this variable + would be 0." + ::= { sysApplInstallElmtEntry 6 } + + sysApplInstallElmtSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The installed file size modulo 2^32 bytes. This is + the size of the file on disk immediately after installation. + + For example, for a file with a total size of 4,294,967,296 + bytes this variable would have a value of 0; for a file with + a total size of 4,294,967,295 bytes this variable would be + 4,294,967,295." + ::= { sysApplInstallElmtEntry 7 } + + sysApplInstallElmtRole OBJECT-TYPE + SYNTAX BITS { + executable(0), + -- An application may have one or + -- more executable elements. The rest of the + -- bits have no meaning if the element is not + -- executable. + exclusive(1), + -- Only one copy of an exclusive element may be + -- running per invocation of the running + -- application. + primary(2), + -- The primary executable. An application can + -- have one, and only one element that is designated + -- as the primary executable. The execution of + -- this element constitutes an invocation of + -- the application. This is used by the agent + -- implementation to determine the initiation of + -- an application. The primary executable must + -- remain running long enough for the agent + -- implementation to detect its presence. + required(3), + -- An application may have zero or more required + -- elements. All required elements must be running + + -- in order for the application to be judged to be + -- running and healthy. + dependent(4), + -- An application may have zero or more + -- dependent elements. Dependent elements may + -- not be running unless required elements are. + unknown(5) + -- Default value for the case when an operator + -- has not yet assigned one of the other values. + -- When set, bits 1, 2, 3, and 4 have no meaning. + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An operator assigned value used in the determination of + application status. This value is used by the agent to + determine both the mapping of started processes to the + initiation of an application, as well as to allow for a + determination of application health. The default value, + unknown(5), is used when an operator has not yet assigned + one of the other values. If unknown(5) is set, bits + 1 - 4 have no meaning. The possible values are: + + executable(0), + An application may have one or + more executable elements. The rest of the + bits have no meaning if the element is not + executable. + exclusive(1), + Only one copy of an exclusive element may be + running per invocation of the running + application. + primary(2), + The primary executable. An application can + have one, and only one element that is designated + as the primary executable. The execution of + this element constitutes an invocation of + the application. This is used by the agent + implementation to determine the initiation of + an application. The primary executable must + remain running long enough for the agent + implementation to detect its presence. + required(3), + An application may have zero or more required + elements. All required elements must be running + in order for the application to be judged to be + running and healthy. + dependent(4), + An application may have zero or more + dependent elements. Dependent elements may + not be running unless required elements are. + unknown(5) + Default value for the case when an operator + has not yet assigned one of the other values. + When set, bits 1, 2, 3, and 4 have no meaning. + + sysApplInstallElmtRole is used by the agent implementation + in determining the initiation of an application, the + current state of a running application (see + sysApplRunCurrentState), when an application invocation is + no longer running, and the exit status of a terminated + application invocation (see sysApplPastRunExitState)." + + DEFVAL { { unknown } } + ::= { sysApplInstallElmtEntry 8 } + + sysApplInstallElmtModifyDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that this element was last modified. + Modification of the sysApplInstallElmtRole columnar + object does NOT constitute a modification of the element + itself and should not affect the value of this object." + ::= { sysApplInstallElmtEntry 9 } + + sysApplInstallElmtCurSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current file size in 2^32 byte blocks. + For example, for a file with a total size of 4,294,967,296 + bytes, this variable would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this variable + would be 0." + ::= { sysApplInstallElmtEntry 10 } + + sysApplInstallElmtCurSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current file size modulo 2^32 bytes. + For example, for a file with a total size of 4,294,967,296 + bytes this variable would have a value of 0; for a file with + a total size of 4,294,967,295 bytes this variable would be + 4,294,967,295." + ::= { sysApplInstallElmtEntry 11 } + + + + -- sysApplRun Group + -- This group models activity information for applications + -- that have been invoked and are either currently running, + -- or have previously run on the host system. Likewise, + -- the individual elements of an invoked application are + -- also modeled to show currently running processes, and + -- processes that have run in the past. + + -- sysApplRunTable + -- The sysApplRunTable contains the application instances + -- which are currently running on the host. Since a single + -- application might be invoked multiple times, an entry is + -- added to this table for each INVOCATION of an application. + -- The table is indexed by sysApplInstallPkgIndex, sysApplRunIndex + -- to enable managers to easily locate all invocations of + -- a particular application package. + + sysApplRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the applications which are executing + on the host. Each time an application is invoked, + an entry is created in this table. When an application ends, + the entry is removed from this table and a corresponding + entry is created in the SysApplPastRunTable. + + A new entry is created in this table whenever the agent + implementation detects a new running process that is an + installed application element whose sysApplInstallElmtRole + designates it as being the application's primary executable + (sysApplInstallElmtRole = primary(2) ). + + The table is indexed by sysApplInstallPkgIndex, + sysApplRunIndex to enable managers to easily locate all + invocations of a particular application package." + ::= { sysApplRun 1 } + + sysApplRunEntry OBJECT-TYPE + SYNTAX SysApplRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an application which is + currently running on this host." + INDEX { sysApplInstallPkgIndex, sysApplRunIndex } + ::= { sysApplRunTable 1 } + + SysApplRunEntry ::= SEQUENCE { + sysApplRunIndex Unsigned32, + sysApplRunStarted DateAndTime, + sysApplRunCurrentState RunState + } + + sysApplRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An arbitrary + integer used only for indexing purposes. Generally + monotonically increasing from 1 as new applications are + started on the host, it uniquely identifies application + invocations. + + The numbering for this index increases by 1 for each + INVOCATION of an application, regardless of which + installed application package this entry represents a + running instance of. + + An example of the indexing for a couple of entries is + shown below. + + : + sysApplRunStarted.17.14 + sysApplRunStarted.17.63 + sysApplRunStarted.18.13 + : + + In this example, the agent has observed 12 application + invocations when the application represented by entry 18 + in the sysApplInstallPkgTable is invoked. The next + invocation detected by the agent is an invocation of + installed application package 17. Some time later, + installed application 17 is invoked a second time. + + NOTE: this index is not intended to reflect a real-time + (wall clock time) ordering of application invocations; + it is merely intended to uniquely identify running + instances of applications. Although the + sysApplInstallPkgIndex is included in the INDEX clause + for this table, it serves only to ease searching of + this table by installed application and does not + contribute to uniquely identifying table entries." + ::= { sysApplRunEntry 1 } + + sysApplRunStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the application was started." + ::= { sysApplRunEntry 2 } + + sysApplRunCurrentState OBJECT-TYPE + SYNTAX RunState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the running application instance. + The possible values are running(1), runnable(2) but waiting + for a resource such as CPU, waiting(3) for an event, + exiting(4), or other(5). This value is based on an evaluation + of the running elements of this application instance (see + sysApplElmRunState) and their Roles as defined by + sysApplInstallElmtRole. An agent implementation may + detect that an application instance is in the process of + exiting if one or more of its REQUIRED elements are no + longer running. Most agent implementations will wait until + a second internal poll has been completed to give the + system time to start REQUIRED elements before marking the + application instance as exiting." + ::= { sysApplRunEntry 3 } + + + -- sysApplPastRunTable + -- The sysApplPastRunTable provides a history of applications + -- previously run on the host computer. Entries are removed from + -- the sysApplRunTable and corresponding entries are added to this + -- table when an application becomes inactive. Entries remain in + -- this table until they are aged out when either the table size + -- reaches a maximum as determined by the sysApplPastRunMaxRows, + -- or when an entry has aged to exceed a time limit as set be + -- sysApplPastRunTblTimeLimit. + -- + -- When aging out entries, the oldest entry, as determined by + + -- the value of sysApplPastRunTimeEnded, will be removed first. + + sysApplPastRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A history of the applications that have previously run + on the host computer. An entry's information is moved to + this table from the sysApplRunTable when the invoked + application represented by the entry ceases to be running. + + An agent implementation can determine that an application + invocation is no longer running by evaluating the running + elements of the application instance and their Roles as + defined by sysApplInstallElmtRole. Obviously, if there + are no running elements for the application instance, + then the application invocation is no longer running. + If any one of the REQUIRED elements is not running, + the application instance may be in the process of exiting. + Most agent implementations will wait until a second internal + poll has been completed to give the system time to either + restart partial failures or to give all elements time to + exit. If, after the second poll, there are REQUIRED + elements that are not running, then the application + instance may be considered by the agent implementation + to no longer be running. + + Entries remain in the sysApplPastRunTable until they + are aged out when either the table size reaches a maximum + as determined by the sysApplPastRunMaxRows, or when an entry + has aged to exceed a time limit as set by + sysApplPastRunTblTimeLimit. + + Entries in this table are indexed by sysApplInstallPkgIndex, + sysApplPastRunIndex to facilitate retrieval of all past + run invocations of a particular installed application." + ::= { sysApplRun 2 } + + sysApplPastRunEntry OBJECT-TYPE + SYNTAX SysApplPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an invocation of an application + which was previously run and has terminated. The entry + is basically copied from the sysApplRunTable when the + application instance terminates. Hence, the entry's + value for sysApplPastRunIndex is the same as its value was + for sysApplRunIndex." + INDEX { sysApplInstallPkgIndex, sysApplPastRunIndex } + ::= { sysApplPastRunTable 1 } + + SysApplPastRunEntry ::= SEQUENCE { + sysApplPastRunIndex Unsigned32, + sysApplPastRunStarted DateAndTime, + sysApplPastRunExitState INTEGER, + sysApplPastRunTimeEnded DateAndTime + } + + sysApplPastRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An integer + matching the value of the removed sysApplRunIndex + corresponding to this row." + ::= { sysApplPastRunEntry 1 } + + sysApplPastRunStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the application was started." + ::= { sysApplPastRunEntry 2 } + + sysApplPastRunExitState OBJECT-TYPE + SYNTAX INTEGER { + complete (1), -- normal exit at sysApplRunTimeEnded + failed (2), -- abnormal exit + other (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the application instance when it terminated. + This value is based on an evaluation of the running elements + of an application and their Roles as defined by + sysApplInstallElmtRole. An application instance is said to + have exited in a COMPLETE state and its entry is removed + from the sysApplRunTable and added to the sysApplPastRunTable + when the agent detects that ALL elements of an application + invocation are no longer running. Most agent implementations + will wait until a second internal poll has been completed to + give the system time to either restart partial failures or + to give all elements time to exit. A failed state occurs if, + after the second poll, any elements continue to run but + one or more of the REQUIRED elements are no longer running. + All other combinations MUST be defined as OTHER." + ::= { sysApplPastRunEntry 3 } + + sysApplPastRunTimeEnded OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DateAndTime the application instance was determined + to be no longer running." + ::= { sysApplPastRunEntry 4 } + + -- sysApplElmtRunTable + -- The sysApplElmtRunTable contains an entry for each process that + -- is currently running on the host. An entry is created in + -- this table for each process at the time it is started, and will + -- remain in the table until the process terminates. + -- + -- The table is indexed by sysApplElmtRunInstallPkg, + -- sysApplElmtRunInvocID, and sysApplElmtRunIndex to make it easy + -- to locate all running elements of a particular invoked application + -- which has been installed on the system. + + + sysApplElmtRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplElmtRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the processes which are + currently executing on the host system. Each entry + represents a running process and is associated with + the invoked application of which that process is a part, if + possible. This table contains an entry for every process + currently running on the system, regardless of whether its + 'parent' application can be determined. So, for example, + processes like 'ps' and 'grep' will have entries though they + are not associated with an installed application package. + + Because a running application may involve + more than one executable, it is possible to have + multiple entries in this table for each application. + Entries are removed from this table when the process + terminates. + The table is indexed by sysApplElmtRunInstallPkg, + sysApplElmtRunInvocID, and sysApplElmtRunIndex to + facilitate the retrieval of all running elements of a + particular invoked application which has been installed on + the system." + ::= { sysApplRun 3 } + + sysApplElmtRunEntry OBJECT-TYPE + SYNTAX SysApplElmtRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing a process currently + running on this host. When possible, the entry is + associated with the invoked application of which it + is a part." + INDEX { sysApplElmtRunInstallPkg, sysApplElmtRunInvocID, + sysApplElmtRunIndex } + ::= { sysApplElmtRunTable 1 } + + SysApplElmtRunEntry ::= SEQUENCE { + sysApplElmtRunInstallPkg Unsigned32, + sysApplElmtRunInvocID Unsigned32, + sysApplElmtRunIndex Unsigned32, + sysApplElmtRunInstallID Unsigned32, + sysApplElmtRunTimeStarted DateAndTime, + sysApplElmtRunState RunState, + sysApplElmtRunName LongUtf8String, + sysApplElmtRunParameters Utf8String, + sysApplElmtRunCPU TimeTicks, + sysApplElmtRunMemory Gauge32, + sysApplElmtRunNumFiles Gauge32, + sysApplElmtRunUser Utf8String + } + + sysApplElmtRunInstallPkg OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the installed software package for + the application of which this process is a part. + Provided that the process's 'parent' application can be + determined, the value of this object is the same + value as the sysApplInstallPkgIndex for the + entry in the sysApplInstallPkgTable that corresponds + to the installed application of which this process + is a part. + + If, however, the 'parent' application cannot be + determined, (for example the process is not part + of a particular installed application), the value + for this object is then '0', signifying that this + process cannot be related back to an application, + and in turn, an installed software package." + ::= { sysApplElmtRunEntry 1 } + + sysApplElmtRunInvocID OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the invocation of an application of which + this process is a part. Provided that the 'parent' + application can be determined, the value of this object + is the same value as the sysApplRunIndex for the + corresponding application invocation in the + sysApplRunTable. + + If, however, the 'parent' application cannot be + determined, the value for this object is then '0', + signifying that this process cannot be related back + to an invocation of an application in the + sysApplRunTable." + ::= { sysApplElmtRunEntry 2 } + + sysApplElmtRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. A unique value + for each process running on the host. Wherever + possible, this should be the system's native, unique + identification number." + ::= { sysApplElmtRunEntry 3 } + + + sysApplElmtRunInstallID OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into the sysApplInstallElmtTable. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a running instance. + If this process cannot be associated with an installed + executable, the value should be '0'." + ::= { sysApplElmtRunEntry 4 } + + sysApplElmtRunTimeStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process was started." + ::= { sysApplElmtRunEntry 5 } + + sysApplElmtRunState OBJECT-TYPE + SYNTAX RunState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the running process. The + possible values are running(1), runnable(2) but waiting + for a resource such as CPU, waiting(3) for an event, + exiting(4), or other(5)." + ::= { sysApplElmtRunEntry 6 } + + sysApplElmtRunName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full path and filename of the process. + For example, '/opt/MYYpkg/bin/myyproc' would + be returned for process 'myyproc' whose execution + path is '/opt/MYYpkg/bin/myyproc'." + ::= { sysApplElmtRunEntry 7 } + + sysApplElmtRunParameters OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting parameters for the process." + ::= { sysApplElmtRunEntry 8 } + + sysApplElmtRunCPU OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centi-seconds of the total system's + CPU resources consumed by this process. Note that + on a multi-processor system, this value may + have been incremented by more than one centi-second + in one centi-second of real (wall clock) time." + ::= { sysApplElmtRunEntry 9 } + + sysApplElmtRunMemory OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kbytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of real system memory measured in + Kbytes currently allocated to this process." + + ::= { sysApplElmtRunEntry 10 } + + sysApplElmtRunNumFiles OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of regular files currently open by the + process. Transport connections (sockets) + should NOT be included in the calculation of + this value, nor should operating system specific + special file types." + ::= { sysApplElmtRunEntry 11 } + + sysApplElmtRunUser OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The process owner's login name (e.g. root)." + ::= { sysApplElmtRunEntry 12 } + + -- sysApplElmtPastRunTable + -- The sysApplElmtPastRunTable maintains a history of + -- processes which have previously executed on + -- the host as part of an application. Upon termination + -- of a process, the entry representing the process is removed from + -- the sysApplElmtRunTable and a corresponding entry is created in + -- this table provided that the process was part of an + -- identifiable application. If the process could not be associated + + -- with an invoked application, no corresponding entry is created. + -- Hence, whereas the sysApplElmtRunTable contains an entry for + -- every process currently executing on the system, the + -- sysApplElmtPastRunTable only contains entries for processes + -- that previously executed as part of an invoked application. + -- + -- Entries remain in this table until they are aged out when + -- either the number of entries in the table reaches a + -- maximum as determined by sysApplElmtPastRunMaxRows, or + -- when an entry has aged to exceed a time limit as set by + -- sysApplElmtPastRunTblTimeLimit. When aging out entries, + -- the oldest entry, as determined by the value of + -- sysApplElmtPastRunTimeEnded, will be removed first. + -- + -- The table is indexed by sysApplInstallPkgIndex (from the + -- sysApplInstallPkgTable), sysApplElmtPastRunInvocID, and + -- sysApplElmtPastRunIndex to make it easy to locate all + -- previously executed processes of a particular invoked application + -- that has been installed on the system. + + + sysApplElmtPastRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplElmtPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the processes which have previously + executed on the host system as part of an application. + Each entry represents a process which has previously + executed and is associated with the invoked application + of which it was a part. Because an invoked application + may involve more than one executable, it is possible + to have multiple entries in this table for + each application invocation. Entries are added + to this table when the corresponding process in the + sysApplElmtRun Table terminates. + + Entries remain in this table until they are aged out when + either the number of entries in the table reaches a + maximum as determined by sysApplElmtPastRunMaxRows, or + when an entry has aged to exceed a time limit as set by + sysApplElmtPastRunTblTimeLimit. When aging out entries, + the oldest entry, as determined by the value of + sysApplElmtPastRunTimeEnded, will be removed first. + + The table is indexed by sysApplInstallPkgIndex (from the + sysApplInstallPkgTable), sysApplElmtPastRunInvocID, + and sysApplElmtPastRunIndex to make it easy to locate all + previously executed processes of a particular invoked + application that has been installed on the system." + ::= { sysApplRun 4 } + + sysApplElmtPastRunEntry OBJECT-TYPE + SYNTAX SysApplElmtPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing a process which was + previously executed on this host as part of an + installed application. The entry is basically copied + from the sysApplElmtRunTable when the process + terminates. Hence, the entry's value for + sysApplElmtPastRunIndex is the same as its value + was for sysApplElmtRunIndex. Note carefully: only those + processes which could be associated with an + identified application are included in this table." + INDEX { sysApplInstallPkgIndex, sysApplElmtPastRunInvocID, + sysApplElmtPastRunIndex } + ::= { sysApplElmtPastRunTable 1 } + + SysApplElmtPastRunEntry ::= SEQUENCE { + sysApplElmtPastRunInvocID Unsigned32, + sysApplElmtPastRunIndex Unsigned32, + sysApplElmtPastRunInstallID Unsigned32, + sysApplElmtPastRunTimeStarted DateAndTime, + sysApplElmtPastRunTimeEnded DateAndTime, + sysApplElmtPastRunName LongUtf8String, + sysApplElmtPastRunParameters Utf8String, + sysApplElmtPastRunCPU TimeTicks, + sysApplElmtPastRunMemory Unsigned32, + sysApplElmtPastRunNumFiles Unsigned32, + sysApplElmtPastRunUser Utf8String + } + + sysApplElmtPastRunInvocID OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the invocation of an application of which + the process represented by this entry was a part. + The value of this object is the same value as the + sysApplRunIndex for the corresponding application + invocation in the sysApplRunTable. If the invoked + application as a whole has terminated, it will be the + same as the sysApplPastRunIndex." + ::= { sysApplElmtPastRunEntry 1 } + + sysApplElmtPastRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An integer + assigned by the agent equal to the corresponding + sysApplElmtRunIndex which was removed from the + sysApplElmtRunTable and moved to this table + when the element terminated. + + Note: entries in this table are indexed by + sysApplElmtPastRunInvocID, sysApplElmtPastRunIndex. + The possibility exists, though unlikely, of a + collision occurring by a new entry which was run + by the same invoked application (InvocID), and + was assigned the same process identification number + (ElmtRunIndex) as an element which was previously + run by the same invoked application. + + Should this situation occur, the new entry replaces + the old entry. + + See Section: 'Implementation Issues - + sysApplElmtPastRunTable Entry Collisions' for the + conditions that would have to occur in order for a + collision to occur." + ::= { sysApplElmtPastRunEntry 2 } + + + sysApplElmtPastRunInstallID OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into the installed element table. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a previously executed + process." + ::= { sysApplElmtPastRunEntry 3 } + + sysApplElmtPastRunTimeStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process was started." + ::= { sysApplElmtPastRunEntry 4 } + + sysApplElmtPastRunTimeEnded OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process ended." + ::= { sysApplElmtPastRunEntry 5 } + + sysApplElmtPastRunName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full path and filename of the process. + For example, '/opt/MYYpkg/bin/myyproc' would + be returned for process 'myyproc' whose execution + path was '/opt/MYYpkg/bin/myyproc'." + ::= { sysApplElmtPastRunEntry 6 } + + sysApplElmtPastRunParameters OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting parameters for the process." + ::= { sysApplElmtPastRunEntry 7 } + + sysApplElmtPastRunCPU OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known number of centi-seconds of the total + system's CPU resources consumed by this process. + Note that on a multi-processor system, this value may + increment by more than one centi-second in one + centi-second of real (wall clock) time." + ::= { sysApplElmtPastRunEntry 8 } + + sysApplElmtPastRunMemory OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "Kbytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known total amount of real system memory + measured in Kbytes allocated to this process before it + terminated." + ::= { sysApplElmtPastRunEntry 9 } + + sysApplElmtPastRunNumFiles OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known number of files open by the + process before it terminated. Transport + connections (sockets) should NOT be included in + the calculation of this value." + ::= { sysApplElmtPastRunEntry 10 } + + sysApplElmtPastRunUser OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The process owner's login name (e.g. root)." + ::= { sysApplElmtPastRunEntry 11 } + + + -- Additional Scalar objects to control table sizes + + sysApplPastRunMaxRows OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + sysApplPastRunTable. Once the number of rows in + the sysApplPastRunTable reaches this value, the + management subsystem will remove the oldest entry + in the table to make room for the new entry to be added. + Entries will be removed on the basis of oldest + sysApplPastRunTimeEnded value first. + + This object may be used to control the amount of + system resources that can used for sysApplPastRunTable + entries. A conforming implementation should attempt + to support the default value, however, a lesser value + may be necessary due to implementation-dependent issues + and resource availability." + DEFVAL { 500 } + ::= { sysApplRun 5 } + + sysApplPastRunTableRemItems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A counter of the number of entries removed from + the sysApplPastRunTable because of table size limitations + as set in sysApplPastRunMaxRows. This counter is the + number of entries the management subsystem has had to + remove in order to make room for new entries (so as not + to exceed the limit set by sysApplPastRunMaxRows) since + the last initialization of the management subsystem." + ::= { sysApplRun 6 } + + sysApplPastRunTblTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry in the + sysApplPastRunTable may exist before it is removed. + Any entry that is older than this value will be + removed (aged out) from the table. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the + table and must be removed to make space for a new + entry so as to not exceed sysApplPastRunMaxRows." + DEFVAL { 7200 } + ::= { sysApplRun 7 } + + sysApplElemPastRunMaxRows OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + sysApplElmtPastRunTable. Once the number of rows in + the sysApplElmtPastRunTable reaches this value, + the management subsystem will remove the oldest entry + to make room for the new entry to be added. Entries + will be removed on the basis of oldest + sysApplElmtPastRunTimeEnded value first. + This object may be used to control the amount of + system resources that can used for sysApplElemPastRunTable + entries. A conforming implementation should attempt + to support the default value, however, a lesser value + may be necessary due to implementation-dependent issues + and resource availability." + DEFVAL { 500 } + ::= { sysApplRun 8 } + + sysApplElemPastRunTableRemItems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A counter of the number of entries removed from the + sysApplElemPastRunTable because of table size limitations + as set in sysApplElemPastRunMaxRows. This counter is the + number of entries the management subsystem has had to + remove in order to make room for new entries (so as not + to exceed the limit set by sysApplElemPastRunMaxRows) since + the last initialization of the management subsystem." + ::= { sysApplRun 9 } + + sysApplElemPastRunTblTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry in the + sysApplElemPastRunTable may exist before it is removed. + Any entry that is older than this value will be + removed (aged out) from the table. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the + table and must be removed to make space for a new + entry so as to not exceed sysApplElemPastRunMaxRows." + DEFVAL { 7200 } + ::= { sysApplRun 10 } + + sysApplAgentPollInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval in seconds that the management + subsystem implementing this MIB will poll the status + of the managed resources. Because of the non-trivial + effort involved in polling the managed resources, + and because the method for obtaining the status of + the managed resources is implementation-dependent, + a conformant implementation may chose a lower bound + greater than 0. + + A value of 0 indicates that there is no delay + in the passing of information from the managed + resources to the agent." + DEFVAL { 60 } + ::= { sysApplRun 11 } + + + -- sysApplMap Group + -- This group contains a table, the sysApplMapTable, + -- whose sole purpose is to provide a 'backwards' + -- mapping so that, given a known sysApplElmtRunIndex + -- (process identification number), the corresponding invoked + -- application (sysApplRunIndex), installed element + -- (sysApplInstallElmtIndex), and installed application + -- package (sysApplInstallPkgIndex) can be quickly determined. + -- + -- The table will contain one entry for each process + -- currently running on the system. + -- + -- A backwards mapping is extremely useful since the tables + -- in this MIB module are typically indexed with the + -- installed application package (sysApplInstallPkgIndex) + -- as the primary key, and on down as required by the + -- specific table, with the process ID number (sysApplElmtRunIndex) + -- being the least significant key. + -- + -- It is expected that management applications will use + -- this mapping table by doing a 'GetNext' operation with + -- the known process ID number (sysApplElmtRunIndex) as the partial + -- instance identifier. Assuming that there is an entry for + -- the process, the result should return a single columnar value, + -- the sysApplMapInstallPkgIndex, with the sysApplElmtRunIndex, + -- sysApplRunIndex, and sysApplInstallElmtIndex contained in the + -- instance identifier for the returned MIB object value. + -- + -- NOTE: if the process can not be associated back to an + -- invoked application installed on the system, then the + -- value returned for the columnar value sysApplMapInstallPkgIndex + -- will be '0' and the instance portion of the object-identifier + -- will be the process ID number (sysApplElmtRunIndex) followed + + -- by 0.0. + + sysApplMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sole purpose of this table is to provide a + 'backwards' mapping so that, given a known + sysApplElmtRunIndex (process identification number), + the corresponding invoked application (sysApplRunIndex), + installed element (sysApplInstallElmtIndex), and + installed application package (sysApplInstallPkgIndex) + can be quickly determined. + + This table will contain one entry for each process + that is currently executing on the system. + + It is expected that management applications will use + this mapping table by doing a 'GetNext' operation with + the known process ID number (sysApplElmtRunIndex) as the + partial instance identifier. Assuming that there is an + entry for the process, the result should return a single + columnar value, the sysApplMapInstallPkgIndex, with the + sysApplElmtRunIndex, sysApplRunIndex, and + sysApplInstallElmtIndex contained in the instance identifier + for the returned MIB object value. + + NOTE: if the process can not be associated back to an + invoked application installed on the system, then the + value returned for the columnar value + sysApplMapInstallPkgIndex will be '0' and the instance + portion of the object-identifier will be the process ID + number (sysApplElmtRunIndex) followed by 0.0." + ::= { sysApplMap 1 } + + sysApplMapEntry OBJECT-TYPE + SYNTAX SysApplMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A logical row representing a process currently running + on the system. This entry provides the index mapping from + process identifier, back to the invoked application, + installed element, and finally, the installed application + package. The entry includes only one accessible columnar + object, the sysApplMapInstallPkgIndex, but the + invoked application and installed element can be + determined from the instance identifier since they form + part of the index clause." + INDEX { sysApplElmtRunIndex, sysApplElmtRunInvocID, + sysApplMapInstallElmtIndex } + ::= { sysApplMapTable 1 } + + SysApplMapEntry ::= SEQUENCE { + sysApplMapInstallElmtIndex Unsigned32, + sysApplMapInstallPkgIndex Unsigned32 + } + + sysApplMapInstallElmtIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the sysApplInstallElmtTable. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a running instance. + If this process cannot be associated to an installed + executable, the value should be '0'." + ::= { sysApplMapEntry 1 } + + sysApplMapInstallPkgIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the installed + software package for the application of which this + process is a part. Provided that the process's 'parent' + application can be determined, the value of this object + is the same value as the sysApplInstallPkgIndex for the + entry in the sysApplInstallPkgTable that corresponds + to the installed application of which this process + is a part. + + If, however, the 'parent' application cannot be + determined, (for example the process is not part + of a particular installed application), the value + for this object is then '0', signifying that this + process cannot be related back to an application, + and in turn, an installed software package." + ::= { sysApplMapEntry 2 } + + + -- Conformance Macros + sysApplMIBCompliances OBJECT IDENTIFIER ::= { sysApplConformance 1 } + sysApplMIBGroups OBJECT IDENTIFIER ::= { sysApplConformance 2 } + + sysApplMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the System Application MIB" + MODULE -- this module + MANDATORY-GROUPS { sysApplInstalledGroup, + sysApplRunGroup, sysApplMapGroup } + ::= { sysApplMIBCompliances 1 } + + sysApplInstalledGroup OBJECT-GROUP + OBJECTS { sysApplInstallPkgManufacturer, + sysApplInstallPkgProductName, + sysApplInstallPkgVersion, + sysApplInstallPkgSerialNumber, + sysApplInstallPkgDate, + sysApplInstallPkgLocation, + sysApplInstallElmtName, + sysApplInstallElmtType, + sysApplInstallElmtDate, + sysApplInstallElmtPath, + sysApplInstallElmtSizeHigh, + sysApplInstallElmtSizeLow, + sysApplInstallElmtRole, + sysApplInstallElmtModifyDate, + sysApplInstallElmtCurSizeHigh, + sysApplInstallElmtCurSizeLow } + STATUS current + DESCRIPTION + "The system application installed group contains + information about applications and their constituent + components which have been installed on the host system." + ::= { sysApplMIBGroups 1 } + + sysApplRunGroup OBJECT-GROUP + OBJECTS { sysApplRunStarted, + sysApplRunCurrentState, + sysApplPastRunStarted, + sysApplPastRunExitState, + sysApplPastRunTimeEnded, + sysApplElmtRunInstallID, + sysApplElmtRunTimeStarted, + sysApplElmtRunState, + sysApplElmtRunName, + sysApplElmtRunParameters, + sysApplElmtRunCPU, + sysApplElmtRunMemory, + sysApplElmtRunNumFiles, + sysApplElmtRunUser, + sysApplElmtPastRunInstallID, + sysApplElmtPastRunTimeStarted, + sysApplElmtPastRunTimeEnded, + sysApplElmtPastRunName, + sysApplElmtPastRunParameters, + sysApplElmtPastRunCPU, + sysApplElmtPastRunMemory, + sysApplElmtPastRunNumFiles, + sysApplElmtPastRunUser, + sysApplPastRunMaxRows, + sysApplPastRunTableRemItems, + sysApplPastRunTblTimeLimit, + sysApplElemPastRunMaxRows, + sysApplElemPastRunTableRemItems, + sysApplElemPastRunTblTimeLimit, + sysApplAgentPollInterval } + STATUS current + DESCRIPTION + "The system application run group contains information + about applications and associated elements which have + run or are currently running on the host system." + ::= { sysApplMIBGroups 2 } + + sysApplMapGroup OBJECT-GROUP + OBJECTS { sysApplMapInstallPkgIndex } + STATUS current + DESCRIPTION + "The Map Group contains a single table, sysApplMapTable, + that provides a backwards mapping for determining the + invoked application, installed element, and installed + application package given a known process identification + number." + ::= { sysApplMIBGroups 3 } + + END diff --git a/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB b/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB new file mode 100644 index 0000000..484f903 --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB @@ -0,0 +1,1322 @@ +T11-FC-FABRIC-ADDR-MGR-MIB DEFINITIONS ::= BEGIN + +-- the Fibre Channel Fabric Address Manager MIB +-- +-- for management of the functionality, in Fibre Channel switches, +-- which is used to manage fabric configuration, domains, and +-- addresses within a domain. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Gauge32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, + RowStatus FROM SNMPv2-TC -- [RFC2579] + ifIndex FROM IF-MIB -- [IF-MIB] + fcmInstanceIndex, fcmSwitchIndex, + FcDomainIdOrZero, FcNameIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB; + +t11FcFabricAddrMgrMIB MODULE-IDENTITY + + + + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the Fabric Address management + functionality defined by the Fibre Channel standards. For + the purposes of this MIB, Fabric Address Manager refers to + the functionality of acquiring DomainID(s) as specified in + FC-SW-3, and managing Fibre Channel Identifiers as specified + in FC-FS. An instance of 'Fabric Address Manager' software + functionality executes in the Principal Switch, and in each + other switch. + + After an agent reboot, the values of read-write objects + defined in this MIB module are implementation-dependent. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4439; see the RFC itself for + full legal notices." + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4439." + ::= { mib-2 137 } + +t11FamNotifications OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 0 } +t11FamMIBObjects OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 1 } +t11FamMIBConformance OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 2 } +t11FamConfiguration OBJECT IDENTIFIER ::= { t11FamMIBObjects 1 } +t11FamInfo OBJECT IDENTIFIER ::= { t11FamMIBObjects 2 } +t11FamNotifyControl OBJECT IDENTIFIER ::= { t11FamMIBObjects 3 } + + +-- Textual Conventions + +T11FamDomainPriority ::= TEXTUAL-CONVENTION + + + + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Priority of a switch. + + The Principal Switch selection is influenced by the + priority of the switches. + + Some values of importance are: + + 1 : The highest priority in Principal Switch + selection, which is used by the administrator + to establish which switch becomes the Principal + Switch. + 255 : Indicates that the switch is not capable of + acting as a Principal Switch." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 6.1.5." + SYNTAX Unsigned32 (1..255) + +T11FamDomainInterfaceRole ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The 'designated' state/role of the Inter-Switch Link (ISL) + to which an interface connects, or (if not connected) + the state of the interface: + + nonPrincipal (1) - non-Principal ISL + principalUpstream (2) - Upstream Principal ISL + principalDownsteam (3) - Downstream Principal ISL + isolated (4) - interface is isolated + down (5) - interface is down + unknown (6) - state/role is unknown + " + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, Sections 3.1, 5.7, + and Figure 9." + SYNTAX INTEGER { + nonPrincipal (1), + principalUpstream (2), + principalDownsteam (3), + isolated (4), + down (5), + unknown (6) + } + +T11FamState ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "The state of the Fabric Address Manager, as described in + Table 86 and Figure 15 of FC-SW-3. + + - 'other' represents a switch that is in a state not + represented by any of the below enumerations. + + - 'starting' represents a switch engaged in the process + represented by the first row in Table 86. + + - 'unconfigured' represents a switch that requires + operator input before it can begin the process + represented by the first row in Table 86. + + - 'principalSwitchSelection' represents a switch engaged + in the process represented by the second row in + Table 86, but not in states F0 or F1 of Figure 15. + + - 'domainIdDistribution' represents a switch engaged in + the process represented by the third row in Table 86. + + - 'buildFabricPhase' represents a switch that is in + state F0 of Figure 15. + + - 'reconfigureFabricPhase' represents a switch that is + in state F1 of Figure 15. + + - 'stable' represents a switch that has successfully + completed the process represented by the third row in + Table 86 and has at least one E_Port. + + - 'stableWithNoEports' represents a switch that has + successfully completed the process represented by the + third row in Table 86 but has no E_Ports. + + - 'noDomains' represents a switch that has completed + the process represented by the third row in Table 86 + but failed to obtain a Domain_ID. + + - 'disabled' represents any situation in which the + corresponding instance of t11FamEnable has the value + 'false'. + + - 'unknown' represents a switch that is confused about + what state it is in." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, Table 86 and Figure 15." + SYNTAX INTEGER { + + + + other(1), + starting(2), + unconfigured(3), + principalSwitchSelection(4), + domainIdDistribution(5), + buildFabricPhase(6), + reconfigureFabricPhase(7), + stable(8), + stableWithNoEports(9), + noDomains(10), + disabled(11), + unknown(12) + } + + +-- +-- t11FamTable +-- + +t11FamTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Fabric Address Manager related + parameters that are able to be configured and monitored + in a Fibre Channel switch. For each of the switches + (identified by fcmSwitchIndex) managed by a Fibre Channel + management instance (identified by fcmInstanceIndex), + there is any entry for each Fabric known to that switch. + Entries are implicitly created/removed if and when + additional Fabrics are created/deleted." + ::= { t11FamConfiguration 1 } + +t11FamEntry OBJECT-TYPE + SYNTAX T11FamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides information on the local Fabric Address + Manager functionality for a Fabric known to a + particular switch." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FamFabricIndex } + ::= { t11FamTable 1 } + +T11FamEntry ::= SEQUENCE { + t11FamFabricIndex T11FabricIndex, + t11FamConfigDomainId FcDomainIdOrZero, + + + + t11FamConfigDomainIdType INTEGER, + t11FamAutoReconfigure TruthValue, + t11FamContiguousAllocation TruthValue, + t11FamPriority T11FamDomainPriority, + t11FamPrincipalSwitchWwn FcNameIdOrZero, + t11FamLocalSwitchWwn FcNameIdOrZero, + t11FamAssignedAreaIdList OCTET STRING, + t11FamGrantedFcIds Counter32, + t11FamRecoveredFcIds Counter32, + t11FamFreeFcIds Gauge32, + t11FamAssignedFcIds Gauge32, + t11FamAvailableFcIds Gauge32, + t11FamRunningPriority T11FamDomainPriority, + t11FamPrincSwRunningPriority T11FamDomainPriority, + t11FamState T11FamState, + t11FamLocalPrincipalSwitchSlctns Counter32, + t11FamPrincipalSwitchSelections Counter32, + t11FamBuildFabrics Counter32, + t11FamFabricReconfigures Counter32, + t11FamDomainId FcDomainIdOrZero, + t11FamSticky TruthValue, + t11FamRestart INTEGER, + t11FamRcFabricNotifyEnable TruthValue, + t11FamEnable TruthValue, + t11FamFabricName FcNameIdOrZero +} + +t11FamFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric known to a particular switch. + + In a Fabric conformant to FC-SW-3, only a single Fabric + can operate within a physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) + physical infrastructures. When such multiple Fabrics + are in use, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure." + ::= { t11FamEntry 1 } + + + + +t11FamConfigDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The configured Domain_ID of the particular switch on this + Fabric, or zero if no Domain_ID has been configured. + The meaning of this object depends on + t11FamConfigDomainIdType object. + + If t11FamConfigDomainIdType is 'preferred', then the + configured Domain_ID is called the 'preferred Domain_ID'. + Valid values are between 0 and 239. In a situation where + this Domain_ID cannot be assigned, any other Domain_ID + will be acceptable. A value of zero means any Domain_ID. + + If t11FamConfigDomainIdType is 'insistent', then the + configured Domain_ID is called the 'insistent Domain_ID' and + valid values are between 1 and 239. In a situation where + this Domain_ID cannot be assigned, no other Domain_ID is + acceptable. + + In both of the above cases, the switch sends an RDI (Request + Domain_ID) to request this Domain_ID to the Principal + Switch. If no Domain_ID is able to be granted in the case + of 'preferred', or if an 'insistent' Domain_ID is configured + but not able to be granted, then it is an error condition. + When this error occurs, the switch will continue as if it + receives a SW_RJT with a reason/explanation of 'Unable to + perform command request'/'Domain_ID not available'. That + is, its E_Ports on that Fabric will be isolated and the + administrator informed via a 't11FamDomainIdNotAssigned' + notification. + + If t11FamConfigDomainIdType is 'static', then the configured + Domain_ID is called the 'static Domain_ID' and valid values + are between 1 and 239. In this situation, there is no + Principal Switch in the Fabric and the Domain_ID is simply + assigned by configuration, together with the Fabric_Name. + A switch configured with a static Domain_ID, on receiving + an EFP, BF, RCF, DIA, or RDI SW_ILS, shall reply with an + SW_RJT having Reason Code Explanation 'E_Port is Isolated' + and shall isolate the receiving E_Port. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 7." + + + + DEFVAL { 0 } + ::= { t11FamEntry 2 } + +t11FamConfigDomainIdType OBJECT-TYPE + SYNTAX INTEGER { + preferred(1), + insistent(2), + static(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Type of configured Domain_ID contained in + t11FamConfigDomainId. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + DEFVAL { preferred } + ::= { t11FamEntry 3 } + +t11FamAutoReconfigure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines how a particular switch + responds to certain error conditions. + + The condition that might cause these errors is + the merging of two disjoint Fabrics that have + overlapping Domain_ID lists. + + If value of this object is 'true', the switch will + send an RCF (ReConfigureFabric) to rebuild the + Fabric. + + If 'false', the switch will isolate the E_Ports on + which the errors happened. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + December 2003, sections 6.1.12 & 7.3. + Fibre Channel - Methodologies for Interconnects + (FC-MI), INCITS TR-30-2002, table 14, note g." + DEFVAL { false } + ::= { t11FamEntry 4 } + + + + +t11FamContiguousAllocation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Determines how a particular switch behaves when elected as + the Principal Switch. + + If true, the switch will only accept RDIs with a contiguous + allocation; specifically, it will reject RDIs with + non-contiguous Domain_IDs, and if an RDI for a contiguous + Domain_ID is not able to be fulfilled, it will try to + replace all the Domain_IDs in the list with contiguous + Domain_IDs, and if that fails, the RDI will be rejected. + + If false, then the switch acts normally in granting + the Domain_IDs even if they are not contiguous. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + ::= { t11FamEntry 5 } + +t11FamPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The initial or configured priority of a particular switch + to be used in Principal Switch selection process. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + ::= { t11FamEntry 6 } + +t11FamPrincipalSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN of the Principal Switch on this Fabric, + or zero-length string if the identity of the principal + switch is unknown." + DEFVAL { ''H } + ::= { t11FamEntry 7 } + +t11FamLocalSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The WWN of the particular switch on this Fabric." + ::= { t11FamEntry 8 } + +t11FamAssignedAreaIdList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of (zero or more) Area_IDs that have been + assigned by a particular switch in this Fabric, formatted + as an array of octets in ascending order. + + Each octet represents one Area_ID. So, the list containing + Area_IDs 23, 45, 235, and 56 would be formatted as the + 4-octet string x'172d38eb'. + + A particular area's Area_ID is used as the index into the + t11FamAreaTable to get the statistics on that area." + ::= { t11FamEntry 9 } + +t11FamGrantedFcIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Fibre Channel Address Identifiers + granted (for local use, i.e., with a particular switch's + Domain_ID) by the Fabric Address Manager on that switch. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 10 } + +t11FamRecoveredFcIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Fibre Channel Address Identifiers that + have been recovered by the Fabric Address Manager on a + particular switch since the switch has been initialized. + A recovered Fibre Channel Address Identifier is one that is + explicitly returned after previously being used. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + + + + ::= { t11FamEntry 11 } + +t11FamFreeFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + currently unassigned on this Fabric and could be available + for assignment either immediately or at some later time. + + The sum of the instances of FreeFcIds and AssignedFcIds + corresponding to a particular Fabric is the total number of + Fibre Channel Address Identifiers that the local Fabric + Address Management is capable of assigning on that Fabric." + ::= { t11FamEntry 12 } + +t11FamAssignedFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + currently assigned on this Fabric. + + The sum of the instances of FreeFcIds and AssignedFcIds + corresponding to a particular Fabric is the total number of + Fibre Channel Address Identifiers that the local Fabric + Address Management is capable of assigning on that Fabric." + ::= { t11FamEntry 13 } + +t11FamAvailableFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + unassigned and currently available for immediate assignment + on the Fabric, e.g., with the 'Clean Address' bit set to 1." + REFERENCE + "Fibre Channel - Framing and Signaling (FC-FS), + ANSI INCITS 373-2003, section 15.6.2.4.2." + ::= { t11FamEntry 14 } + +t11FamRunningPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The running priority of a particular switch on this Fabric. + This value is initialized to the value of t11FamPriority, + and subsequently altered as specified by the procedures + defined in FC-SW-3." + ::= { t11FamEntry 15 } + +t11FamPrincSwRunningPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The running priority of the Principal Switch on this + Fabric." + ::= { t11FamEntry 16 } + +t11FamState OBJECT-TYPE + SYNTAX T11FamState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Fabric Address Manager on a particular + switch on this Fabric." + ::= { t11FamEntry 17 } + +t11FamLocalPrincipalSwitchSlctns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a particular switch became the + Principal Switch on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 18 } + +t11FamPrincipalSwitchSelections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Principal Switch selections on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 19 } + + + + +t11FamBuildFabrics OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-disruptive fabric reconfigurations (BFs) + that have occurred on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 20 } + +t11FamFabricReconfigures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of disruptive fabric reconfigurations (RCFs) + that have occurred on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 21 } + +t11FamDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain_ID of a particular switch on this Fabric or + zero if no Domain_ID has been assigned." + ::= { t11FamEntry 22 } + +t11FamSticky OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether a particular switch is supporting + the concept of Preferred Domain_IDs via a best-effort + attempt to re-assign the same Fibre Channel Address + Identifier value to a port on the next occasion when a port + requests an assignment on this Fabric. + + If the value of this object is 'true', then the switch is + maintaining rows in the t11FamFcIdCacheTable for this + Fabric." + ::= { t11FamEntry 23 } + + + +t11FamRestart OBJECT-TYPE + SYNTAX INTEGER { + nonDisruptive(1), + disruptive(2), + noOp(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object tells the Fabric Address Manager to + request a Fabric reconfiguration. + + If this object is set to 'disruptive', then an RCF + (ReConfigure Fabric) is generated in the Fabric + in order for the Fabric to recover from the errors. + + If this object is set to 'nonDisruptive', then a + BF (Build Fabric) is generated in the Fabric. + + No action is taken if this object is set to 'noOp'. + The value of the object when read is always 'noOp'. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 7.3." + ::= { t11FamEntry 24 } + +t11FamRcFabricNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An indication of whether or not a particular switch + should issue a t11FamFabricChangeNotify notification on + sending or receiving ReConfigureFabric (RCF) on a Fabric. + + If the value of the object is 'true', then the + notification is generated. If the value is 'false', + notification is not generated. + + If an implementation requires all Fabrics to have the + same value, then setting one instance of this object + to a new object will result in all corresponding + instances being set to that same new value. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + + + + DEFVAL { false } + ::= { t11FamEntry 25 } + +t11FamEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Enables the Fabric Address Manager on this switch + on this Fabric. + + If enabled on a Fabric, the switch will participate in + Principal Switch selection, and Domain_IDs are assigned + dynamically. If disabled, the switch will not participate + in Principal Switch selection, and Domain_IDs are + assigned statically. Thus, the corresponding value of + t11FamConfigDomainIdType needs to be 'static'. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 7.1 and 7.3." + DEFVAL { true } + ::= { t11FamEntry 26 } + +t11FamFabricName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The WWN that is configured on this switch to be used as + the name of this Fabric when the value of t11FamEnable is + 'false'. + + If the value of t11FamEnable is 'true', this value is not + used. + + Fibre Channel requires that: + a) all switches in an operational Fabric be + configured with the same Fabric name; and + b) each Fabric have a unique Fabric name. + If either of these is violated, either by switches within a + single Fabric being configured with different Fabric names, + or by multiple Fabrics that share management applications + or interact in other ways having the same Fabric name, + then the behavior of the switches and associated management + functions is not specified by Fibre Channel or Internet + standards. + + + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 7.1." + ::= { t11FamEntry 27 } + + +-- +-- t11FamIfTable - Interface configuration +-- + +t11FamIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains those Fabric Address Manager parameters + and status values that are per-interface (identified + by an ifIndex value), per-Fabric (identified by a + t11FamFabricIndex value), and per-switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex). + + An entry in this table is automatically created when + an E_Port becomes non-isolated on a particular Fabric. + + An entry is deleted automatically from this table if: + a) the corresponding interface is no longer an E_Port (e.g., + a G_Port that is dynamically determined to be an F_Port), + and all configuration parameter(s) have default values; or + b) the interface identified by ifIndex no longer exists + (e.g., because a line-card is physically removed); or + c) the row in the t11FamTable corresponding the fabric + identified by t11FamFabricID no longer exists. + + Creating an entry in this table via t11FamIfRowStatus + provides the means to specify non-default parameter value(s) + for an interface at a time when the relevant row in this + table does not exist, i.e., because the interface is either + down or it is not an E_Port." + ::= { t11FamConfiguration 2 } + +t11FamIfEntry OBJECT-TYPE + SYNTAX T11FamIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information on the interface + configuration on the Fabric identified by + + + + t11FamFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, ifIndex} + ::= { t11FamIfTable 1 } + +T11FamIfEntry ::= SEQUENCE { + t11FamIfRcfReject TruthValue, + t11FamIfRole T11FamDomainInterfaceRole, + t11FamIfRowStatus RowStatus +} + +t11FamIfRcfReject OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines if the incoming ReConfigure + Fabric (RCF) messages on this interface on this + Fabric is accepted or not. If this object is 'true', then + the incoming RCF is rejected. If 'false', incoming RCF is + accepted. + + Note that this object does not apply to the outgoing + RCFs generated by this interface. + + Implementations that support write-access to this object + can do so under whatever conditions they choose." + DEFVAL {false} + ::= { t11FamIfEntry 1 } + +t11FamIfRole OBJECT-TYPE + SYNTAX T11FamDomainInterfaceRole + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role of this interface." + ::= { t11FamIfEntry 2 } + +t11FamIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row." + ::= { t11FamIfEntry 3 } + + +-- + + + +-- t11FamAreaTable +-- + +t11FamAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains area assignments per-Fabric by a + switch's Fabric Address Manager. Each octet in + t11FamAssignedAreaList is able to be used to index into + this table to find information on each area." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 4.8." + ::= { t11FamInfo 1 } + +t11FamAreaEntry OBJECT-TYPE + SYNTAX T11FamAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry gives information on the Area_ID and all + Port_IDs that have been assigned within an area for + the Fabric identified by t11FamFabricIndex, by the + Fabric Address Manager in the switch identified by + fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, t11FamAreaAreaId} + ::= { t11FamAreaTable 1 } + +T11FamAreaEntry ::= SEQUENCE { + t11FamAreaAreaId Unsigned32, + t11FamAreaAssignedPortIdList OCTET STRING +} + +t11FamAreaAreaId OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Area_ID of this area." + ::= { t11FamAreaEntry 1 } + +t11FamAreaAssignedPortIdList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The list of Port_IDs which have been assigned in + this area and Fabric, formatted as an array of + octets in ascending order. There could be zero or more + Port_IDs assigned on this area and Fabric. + + Each octet represents one Port_ID. So, the list containing + the Port_IDs 23, 45, 235, and 56 would be formatted as the + 4-octet string x'172d38eb'." + ::= { t11FamAreaEntry 2 } + + +-- +-- t11FamDatabaseTable +-- + +t11FamDatabaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamDatabaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all information known by + a switch about all the domains that have been + assigned in each Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 4.8." + ::= { t11FamInfo 2 } + +t11FamDatabaseEntry OBJECT-TYPE + SYNTAX T11FamDatabaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the t11FamDatabaseTable + containing information about one Domain_ID in the + Fabric identified by t11FamFabricIndex, and known by + the switch identified by t11FamFabricIndex and + t11FamDatabaseDomainId." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex , t11FamDatabaseDomainId} + ::= { t11FamDatabaseTable 1 } + +T11FamDatabaseEntry ::= SEQUENCE { + t11FamDatabaseDomainId FcDomainIdOrZero, + t11FamDatabaseSwitchWwn FcNameIdOrZero +} + +t11FamDatabaseDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero (1..239) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Domain_ID for which this row contains information. + The value must be non-zero." + ::= { t11FamDatabaseEntry 1 } + +t11FamDatabaseSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name (WWN) of the switch to which the + corresponding value of t11FamDatabaseDomainId is currently + assigned for the particular Fabric." + ::= { t11FamDatabaseEntry 2 } + + +-- +-- Fibre Channel Address Identifier cache information +-- +-- The cached information allows the Fabric Address Manager to +-- implement the concept of a Preferred Domain_ID, whereby after a port +-- releases a Fibre Channel Address Identifier value, a switch makes an +-- attempt to re-assign the same Fibre Channel Address Identifier value +-- on the next occasion when that port requests an assignment. +-- + +t11FamMaxFcIdCacheSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of Fibre Channel Address Identifiers + that are able to be cached in the t11FamFcIdCacheTable. + If the number is unknown, the value of this object is + zero." + ::= { t11FamInfo 3 } + + +-- +-- t11FamFcIdCacheTable +-- + +t11FamFcIdCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamFcIdCacheEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table contains all the Fibre Channel Address + Identifiers that have recently been released by the + Fabric Address Manager in a switch. So, it lists + all the Fibre Channel Address Identifiers that have valid + WWN-to-Fibre Channel Address Identifier mappings and are + currently not assigned to any ports. These Fibre Channel + Address Identifiers were assigned to ports but have since + been released. These cached Fibre Channel Address + Identifiers contain only Area_ID and Port_ID information. + This cache is kept to provide best-effort re-assignment of + same Fibre Channel Address Identifiers; i.e., when an + Nx_Port asks for a Fibre Channel Address Identifier, soon + after releasing one, the same value is re-assigned, if + possible." + ::= { t11FamInfo 4 } + +t11FamFcIdCacheEntry OBJECT-TYPE + SYNTAX T11FamFcIdCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the t11FamFcIdCacheTable + containing information about one Fibre Channel Address + Identifier that was released from a WWN, corresponding to a + range of one or more ports connected to the switch + (identified by t11FamFabricIndex and t11FamFcIdCacheWwn) in + the Fabric (identified by t11FamFabricIndex). An entry is + created when a Fibre Channel Address Identifier is released + by the last port in the range. The oldest entry is deleted + if the number of rows in this table reaches + t11FamMaxFcIdCacheSize, and its space is required for a new + entry. An entry is also deleted when its Fibre Channel + Address Identifier is assigned to a port." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, t11FamFcIdCacheWwn} + ::= { t11FamFcIdCacheTable 1 } + +T11FamFcIdCacheEntry ::= SEQUENCE { + t11FamFcIdCacheWwn FcNameIdOrZero, + t11FamFcIdCacheAreaIdPortId OCTET STRING, + t11FamFcIdCachePortIds Unsigned32 +} + +t11FamFcIdCacheWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The N_Port_Name (WWN) of the port associated with this + entry." + ::= { t11FamFcIdCacheEntry 1 } + +t11FamFcIdCacheAreaIdPortId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The combination of this object and t11FamFcIdCachePortIds + represent one range of Fibre Channel Address Identifiers, + which were assigned and later released. This object + contains the Area_ID and Port_ID of the first Fibre + Channel Address Identifier in the range. + + Note that this object is only 2 bytes." + ::= { t11FamFcIdCacheEntry 2 } + +t11FamFcIdCachePortIds OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The combination of t11FamFcIdCacheAreaIdPortId and this + object represent one range of Fibre Channel Address + Identifiers, which were assigned and later released. This + object contains the number of (consecutive) Fibre Channel + Address Identifiers in the range." + ::= { t11FamFcIdCacheEntry 3 } + + +-- Objects for use in notifications + +t11FamNotifyFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique index value that identifies a particular + Fabric for which a particular notification is generated. + + In a Fabric conformant to SW-3, only a single Fabric + can operate within a physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + + + + instrumentation, could operate within one (or more) + physical infrastructures. In order to accommodate this + scenario, this index value is used to uniquely identify a + particular Fabric within a physical infrastructure." + ::= { t11FamNotifyControl 1 } + + +-- Notifications + +t11FamDomainIdNotAssignedNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a Domain_ID has not + been configured or assigned for a particular Fabric, + identified by t11FamNotifyFabricIndex, on a particular + switch identified by t11FamLocalSwitchWwn. This could + happen under the following conditions, and results in the + switch isolating E_Ports on the Fabric: + + - if the switch's request for a configured static + Domain_ID is rejected or no other Domain_ID is + assigned, then the E_Ports are isolated." + ::= { t11FamNotifications 1 } + +t11FamNewPrincipalSwitchNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a particular switch, + identified by t11FamLocalSwitchWwn, has become the new + Principal Switch on the Fabric identified by + t11FamNotifyFabricIndex. + + This notification is sent soon after its election as + the new Principal Switch, i.e., upon expiration of a + Principal Switch selection timer that is equal to + twice the Fabric Stability Timeout value (F_S_TOV)." + ::= { t11FamNotifications 2 } + +t11FamFabricChangeNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification is sent whenever a particular switch, + identified by t11FamLocalSwitchWwn, sends or + receives a Build Fabric (BF) or a ReConfigure Fabric + (RCF) message on the Fabric identified by + + + + t11FamNotifyFabricIndex. + + This notification is not sent if a + 't11FamNewPrincipalSwitchNotify' notification is sent + for the same event." + ::= { t11FamNotifications 3 } + + +-- +-- Conformance +-- + +t11FamMIBCompliances OBJECT IDENTIFIER ::= { t11FamMIBConformance 1 } +t11FamMIBGroups OBJECT IDENTIFIER ::= { t11FamMIBConformance 2 } + +t11FamMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for Fibre Channel switches + that implement Fabric Address Manager functionality." + MODULE + MANDATORY-GROUPS { t11FamGroup, + t11FamDatabaseGroup, + t11FamAreaGroup, + t11FamNotificationGroup + } + + OBJECT t11FamConfigDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamConfigDomainIdType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamAutoReconfigure + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamContiguousAllocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamPriority + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamIfRcfReject + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamIfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamRcFabricNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP t11FamCacheGroup + DESCRIPTION + "This group is mandatory only for switches that + support the concept of Preferred Domain_ID via a best- + effort attempt for (short-term) re-assignment of the + same FC address identifiers." + + GROUP t11FamCommandGroup + DESCRIPTION + "This group is optional." + + ::= { t11FamMIBCompliances 1 } + + +-- Units of Conformance + +t11FamGroup OBJECT-GROUP + OBJECTS { t11FamConfigDomainId, + t11FamConfigDomainIdType, + t11FamAutoReconfigure, + t11FamContiguousAllocation, + t11FamPriority, + t11FamPrincipalSwitchWwn, + t11FamLocalSwitchWwn, + t11FamAssignedAreaIdList, + t11FamGrantedFcIds, + t11FamRecoveredFcIds, + t11FamFreeFcIds, + t11FamAssignedFcIds, + + + + t11FamAvailableFcIds, + t11FamRunningPriority, + t11FamPrincSwRunningPriority, + t11FamState, + t11FamLocalPrincipalSwitchSlctns, + t11FamPrincipalSwitchSelections, + t11FamBuildFabrics, + t11FamFabricReconfigures, + t11FamDomainId, + t11FamSticky, + t11FamRestart, + t11FamRcFabricNotifyEnable, + t11FamEnable, + t11FamFabricName, + t11FamIfRcfReject, + t11FamIfRole, + t11FamIfRowStatus, + t11FamNotifyFabricIndex + } + STATUS current + DESCRIPTION + "A collection of general objects for displaying and + configuring Fabric Address management." + ::= { t11FamMIBGroups 1 } + +t11FamCommandGroup OBJECT-GROUP + OBJECTS { t11FamRestart } + STATUS current + DESCRIPTION + "A collection of objects used for initiating an + operation on the Fabric." + ::= { t11FamMIBGroups 2 } + +t11FamDatabaseGroup OBJECT-GROUP + OBJECTS { t11FamDatabaseSwitchWwn } + STATUS current + DESCRIPTION + "A collection of objects containing information about + Domain-IDs assignments." + ::= { t11FamMIBGroups 3 } + +t11FamAreaGroup OBJECT-GROUP + OBJECTS { t11FamAreaAssignedPortIdList } + STATUS current + DESCRIPTION + "A collection of objects containing information about + currently assigned addresses within a domain." + ::= { t11FamMIBGroups 4 } + + + +t11FamCacheGroup OBJECT-GROUP + OBJECTS { t11FamMaxFcIdCacheSize, + t11FamFcIdCacheAreaIdPortId, + t11FamFcIdCachePortIds + } + STATUS current + DESCRIPTION + "A collection of objects containing information about + recently-released Fibre Channel Address Identifiers." + ::= { t11FamMIBGroups 5 } + +t11FamNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FamDomainIdNotAssignedNotify, + t11FamNewPrincipalSwitchNotify, + t11FamFabricChangeNotify } + STATUS current + DESCRIPTION + "A collection of notifications for status monitoring + and notification." + ::= { t11FamMIBGroups 6 } +END diff --git a/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB b/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB new file mode 100644 index 0000000..f711e01 --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB @@ -0,0 +1,1822 @@ +T11-FC-FABRIC-CONFIG-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + URLString + FROM NETWORK-SERVICES-MIB -- [RFC2788] + + FcPortType, FcNameIdOrZero, FcDomainIdOrZero, + fcmInstanceIndex, fcmSwitchIndex, FcAddressIdOrZero + FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode + FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex + FROM T11-TC-MIB -- [RFC4439] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + + +t11FcFabricConfigServerMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the management of a Fabric + Configuration Server (FCS) in a Fibre Channel (FC) + network. An FCS is defined by the FC-GS-5 standard. This + + + + MIB provides the capabilities to trigger a discovery of + the configuration of one or more Fabrics, to retrieve the + results of such a discovery, as well as to control and + monitor the operation of an FCS. The discovered + configuration contains information about: + + - Interconnect Elements (IEs), i.e., switches, hubs, + bridges, etc., + - Ports on IEs, and + - Platforms that consist of one or more FC nodes. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4935; see the RFC itself for + full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4935." + ::= { mib-2 162 } + +t11FcsMIBObjects OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 1 } +t11FcsMIBConformance OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 2 } +t11FcsNotifications OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 0 } + +t11FcsDiscovery OBJECT IDENTIFIER ::= { t11FcsMIBObjects 1 } +t11FcsDiscoveredConfig OBJECT IDENTIFIER ::= { t11FcsMIBObjects 2 } +t11FcsStats OBJECT IDENTIFIER ::= { t11FcsMIBObjects 3 } +t11FcsNotificationInfo OBJECT IDENTIFIER ::= { t11FcsMIBObjects 4 } + +-- +-- Textual Conventions +-- + +T11FcListIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An index that identifies a list of elements. + All elements that belong to the same list have the + same index value. This syntax is used for objects + which identify a list in the INDEX clause of a table + of elements of that type of list." + SYNTAX Unsigned32 (1..4294967295) + +T11FcListIndexPointerOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "Objects with this syntax point to a list of elements + contained in a table, by holding the same value as the + object with syntax T11FcListIndex defined in the table's + INDEX clause, or, zero to indicate an empty list. + Note that such a table could have one row per list, or + it could have one row per element of a list. + + The definition of an object with this syntax must + identify the table(s) into which it points." + SYNTAX Unsigned32 -- the default range of (0..4294967295) + +T11FcIeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of Interconnect Element (IE): + + unknown(1) - an unknown IE. + other(2) - some other type of IE. + switch(3) - the IE is a switch. + hub(4) - the IE is a hub. + bridge(5) - the IE is a bridge." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 96." + SYNTAX INTEGER { + unknown(1), + other(2), + switch(3), + hub(4), + bridge(5) + } + +T11FcPortState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The state of a port: + + unknown(1) - unknown state. + other(2) - some other state. + online(3) - port is in online state. + offline(4) - port is in offline state. + testing(5) - port is in testing state. + fault(6) - port is faulty." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 106." + + + + SYNTAX INTEGER { + unknown(1), + other(2), + online(3), + offline(4), + testing(5), + fault(6) + } + +T11FcPortTxType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The technology of the port transceiver: + + unknown(1) - unknown (includes the 'null' type) + other(2) - some other technology + shortwave850nm(3) - Short wave laser - SN (850 nm) + longwave1550nm(4) - Long wave laser - LL (1550 nm) + longwave1310nm(5) - Long wave laser cost + reduced - LC (1310 nm) + electrical(6) - Electrical - EL. + tenGbaseSr850(7) - 10GBASE-SR 850nm laser + tenGbaseLr1310(8) - 10GBASE-LR 1310nm laser + tenGbaseEr1550(9) - 10GBASE-ER 1550nm laser + tenGbaseLx1300(10) - 10GBASE-LX4 WWDM 1300nm laser + tenGbaseSw850(11) - 10GBASE-SW 850nm laser + tenGbaseLw1310(12) - 10GBASE-LW 1310nm laser + tenGbaseEw1550(13) - 10GBASE-EW 1550nm laser + " + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 101." + SYNTAX INTEGER { + unknown(1), + other(2), + shortwave850nm(3), + longwave1550nm(4), + longwave1310nm(5), + electrical(6), + tenGbaseSr850(7), + tenGbaseLr1310(8), + tenGbaseEr1550(9), + tenGbaseLx1300(10), + tenGbaseSw850(11), + tenGbaseLw1310(12), + tenGbaseEw1550(13) + } + + + + +T11FcsRejectReasonExplanation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reject reason code explanation: + + noAdditionalExplanation(1) + - no additional explanation. + invNameIdForIEOrPort(2) + - the format of IE or port name is invalid. + ieListNotAvailable(3) + - IE list is not available. + ieTypeNotAvailable(4) + - IE type is not available. + domainIdNotAvailable(5) + - Domain ID is not available. + mgmtIdNotAvailable(6) + - mgmt ID is not available. + fabNameNotAvailable(7) + - Fabric_Name is not available. + ielogNameNotAvailable(8) + - IE logical name is not available. + mgmtAddrListNotAvailable(9) + - mgmt address list is not available. + ieInfoListNotAvailable(10) + - IE info list is not available. + portListNotAvailable(11) + - port list is not available. + portTypeNotAvailable(12) + - port type is not available. + phyPortNumNotAvailable(13) + - physical port number is not available. + attPortNameListNotAvailable(14) + - attached port name list is not available. + portStateNotAvailable(15) + - port state is not available. + unableToRegIELogName(16) + - not able to register IE logical name. + platformNameNoExist(17) + - platform name does not exist. + platformNameAlreadyExists(18) + - platform name already exists. + platformNodeNameNoExists(19) + - platform node name does not exist. + platformNodeNameAlreadyExists(20) + - platform node name already exists. + resourceUnavailable(21) + - resource unavailable. + noEntriesInLunMap(22) + + + + - zero entries in OS LUN Map. + invalidDeviceNameLength(23) + - invalid OS device name length. + multipleAttributes(24) + - multiple attributes of same type in + platform attribute block. + invalidAttribBlockLength(25) + - invalid platform attribute block length. + attributesMissing(26) + - required platform attributes not present." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 124." + SYNTAX INTEGER { + noAdditionalExplanation(1), + invNameIdForIEOrPort(2), + ieListNotAvailable(3), + ieTypeNotAvailable(4), + domainIdNotAvailable(5), + mgmtIdNotAvailable(6), + fabNameNotAvailable(7), + ielogNameNotAvailable(8), + mgmtAddrListNotAvailable(9), + ieInfoListNotAvailable(10), + portListNotAvailable(11), + portTypeNotAvailable(12), + phyPortNumNotAvailable(13), + attPortNameListNotAvailable(14), + portStateNotAvailable(15), + unableToRegIELogName(16), + platformNameNoExist(17), + platformNameAlreadyExists(18), + platformNodeNameNoExists(19), + platformNodeNameAlreadyExists(20), + resourceUnavailable(21), + noEntriesInLunMap(22), + invalidDeviceNameLength(23), + multipleAttributes(24), + invalidAttribBlockLength(25), + attributesMissing(26) + } + +-- +-- Objects for Fabric Discovery +-- + +t11FcsFabricDiscoveryTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsFabricDiscoveryEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains control information for discovery + of Fabric configuration by switches. + + Values written to objects in this table are not + retained over agent reboots." + ::= { t11FcsDiscovery 1 } + +t11FcsFabricDiscoveryEntry OBJECT-TYPE + SYNTAX T11FcsFabricDiscoveryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Control information for discovery by the switch + identified by fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex } + ::= { t11FcsFabricDiscoveryTable 1 } + +T11FcsFabricDiscoveryEntry ::= SEQUENCE { + t11FcsFabricDiscoveryRangeLow T11FabricIndex, + t11FcsFabricDiscoveryRangeHigh T11FabricIndex, + t11FcsFabricDiscoveryStart INTEGER, + t11FcsFabricDiscoveryTimeOut Unsigned32 +} + +t11FcsFabricDiscoveryRangeLow OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The discovery by a particular switch operates + within all existing Fabrics that have a Fabric + Index within a specific inclusive range. This + object specifies the minimum Fabric Index value + within that range. This value just represents + the lower end of the range and does not necessarily + represent any existing Fabric." + ::= { t11FcsFabricDiscoveryEntry 1 } + +t11FcsFabricDiscoveryRangeHigh OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The discovery by a particular switch operates + within all existing Fabrics that have a Fabric + + + + Index within a specific inclusive range. This + object specifies the maximum Fabric Index value + within that range. This value just represents the + higher end of the range and does not necessarily + represent any existing Fabric." + ::= { t11FcsFabricDiscoveryEntry 2 } + +t11FcsFabricDiscoveryStart OBJECT-TYPE + SYNTAX INTEGER { + start(1), + noOp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the capability to trigger the start + of a discovery by a Fabric Configuration Server. If this + object is set to 'start', then the discovery is started on + those Fabrics that have their Fabric Index value in the + range specified by t11FcsFabricDiscoveryRangeLow and + t11FcsFabricDiscoveryRangeHigh. It is recommended that + whenever an instance of this object is set to 'start', + that the desired range be specified at the same time by + setting the corresponding instances of + t11FcsFabricDiscoveryRangeLow and + t11FcsFabricDiscoveryRangeHigh. + + Setting this object to 'start' will be rejected if a + discovery is already/still in progress on any Fabrics in + the specified range. + + No action is taken if this object is set to 'noOp'. + The value of this object when read is always 'noOp'." + ::= { t11FcsFabricDiscoveryEntry 3 } + +t11FcsFabricDiscoveryTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (300..86400) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval of time for which the discovered + Fabric information is cached by a Fabric Configuration + Server." + DEFVAL { 900 } + ::= { t11FcsFabricDiscoveryEntry 4 } + +-- + + + +-- Discovery State table +-- + +t11FcsDiscoveryStateTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsDiscoveryStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the status of discovery of + locally known Fabrics." + ::= { t11FcsDiscovery 2 } + +t11FcsDiscoveryStateEntry OBJECT-TYPE + SYNTAX T11FcsDiscoveryStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The discovery status for a particular Fabric on the + switch identified by fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } + ::= { t11FcsDiscoveryStateTable 1 } + +T11FcsDiscoveryStateEntry ::= SEQUENCE { + t11FcsFabricIndex T11FabricIndex, + t11FcsDiscoveryStatus INTEGER, + t11FcsDiscoveryCompleteTime TimeStamp +} + +t11FcsFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures, + and this index value is used to uniquely identify a + particular (physical or virtual) Fabric within a physical + infrastructure. + + In a Fabric conformant to versions earlier than FC-SW-4, + only a single Fabric could operate within a physical + infrastructure, and thus, the value of this Fabric Index + was defined to always be 1." + ::= { t11FcsDiscoveryStateEntry 1 } + + + + +t11FcsDiscoveryStatus OBJECT-TYPE + SYNTAX INTEGER { + inProgress(1), + completed(2), + localOnly(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of the discovery for the particular Fabric. + + Initially when the switch comes up, all instances of this + object have the value: 'localOnly', and the database + contains only local information, i.e., no information + discovered via the Fabric Configuration Server protocol + specified in FC-GS-5. + + If t11FcsFabricDiscoveryStart is set to 'start' for a + range of Fabrics that includes this Fabric, then the + value of this object transitions to 'inProgress'. When + the discovery completes, this object transitions to + 'completed', and the data is cached for the minimum + interval of time specified by + t11FcsFabricDiscoveryTimeOut. After this interval has + been exceeded, the data may be lost, in which case, the + value of this object changes to 'localOnly'. + + This object cannot be set via SNMP to any value other + than 'localOnly'. If this object is set (via SNMP) to + 'localOnly', the cached data for the Fabric is discarded + immediately, and if a discovery initiated from this + switch was in progress for this Fabric, then that + discovery is aborted." + ::= { t11FcsDiscoveryStateEntry 2 } + +t11FcsDiscoveryCompleteTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of sysUpTime at which + discovery was most recently completed or aborted on this + Fabric. This object contains the value of zero before + the first discovery on this Fabric." + ::= { t11FcsDiscoveryStateEntry 3 } + + + + + + +-- +-- The Database of Fabric Configuration Information + +-- +-- Interconnect Element table +-- + +t11FcsIeTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsIeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Interconnect Elements. Interconnect + Elements (IEs) are switches, hubs, bridges etc. + + By default, the Fabric Configuration Server will + maintain detailed information pertaining only to + local resources. As far as discovered topology is + concerned, only the IE name, type, and Domain ID + information will be maintained. If a discovery + cycle is triggered on a set of Fabrics, this table + along with the Port and Platform tables will be + populated with the discovered information. The + discovered data will be retained in this table for + at least t11FcsFabricDiscoveryTimeOut seconds after + the completion of its discovery or until the + discovered data is invalidated." + ::= { t11FcsDiscoveredConfig 1 } + +t11FcsIeEntry OBJECT-TYPE + SYNTAX T11FcsIeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an Interconnect Element that was + discovered on a Fabric (identified by t11FcsFabricIndex), + by a switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex, + t11FcsIeName } + ::= { t11FcsIeTable 1 } + +T11FcsIeEntry ::= SEQUENCE { + t11FcsIeName FcNameIdOrZero, + t11FcsIeType T11FcIeType, + + + + t11FcsIeDomainId FcDomainIdOrZero, + t11FcsIeMgmtId FcAddressIdOrZero, + t11FcsIeFabricName FcNameIdOrZero, + t11FcsIeLogicalName OCTET STRING, + t11FcsIeMgmtAddrListIndex T11FcListIndexPointerOrZero, + t11FcsIeInfoList OCTET STRING +} + +t11FcsIeName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The WWN of an Interconnect Element. This object + uniquely identifies an Interconnect Element on a + Fabric. If the IE is a switch, then this object + is the Switch_Name (WWN) of the switch." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.1." + ::= { t11FcsIeEntry 1 } + +t11FcsIeType OBJECT-TYPE + SYNTAX T11FcIeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this Interconnect Element." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.2" + ::= { t11FcsIeEntry 2 } + +t11FcsIeDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain ID of this Interconnect Element." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.3." + ::= { t11FcsIeEntry 3 } + +t11FcsIeMgmtId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The management identifier of this Interconnect Element. + If the Interconnect Element is a switch, this object will + be the Domain Controller identifier of the switch. When + the value of the identifier is unknown, this object + contains the all-zeros value: x'00 00 00'." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.4." + DEFVAL { '000000'h } + ::= { t11FcsIeEntry 4 } + +t11FcsIeFabricName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric_Name (WWN) of this Interconnect Element. + When the Fabric_Name is unknown, this object contains + the all-zeros value: x'00 00 00 00 00 00 00 00'." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.5." + DEFVAL { '0000000000000000'h } + ::= { t11FcsIeEntry 5 } + +t11FcsIeLogicalName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The logical name of this Interconnect Element. + When the logical name is unknown, this object contains + the zero-length string." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.6." + ::= { t11FcsIeEntry 6 } + +t11FcsIeMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The management address list for this Interconnect Element. + This object points to an entry in the + t11FcsMgmtAddrListTable." + REFERENCE + + + + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.7." + ::= { t11FcsIeEntry 7 } + +t11FcsIeInfoList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information list for this Interconnect Element. + + The value of this object is formatted as specified in + FC-GS-5, i.e., it has the following substrings in order: + vendor name, model name/number, and release code/level, + followed by zero or more substrings of vendor-specific + information. Each substring is terminated with a byte + containing a null value (x'00')." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.8" + ::= { t11FcsIeEntry 8 } + +-- +-- Management Address List table +-- + +t11FcsMgmtAddrListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsMgmtAddrListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of management address lists + that are currently referenced by any instance of the + t11FcsIeMgmtAddrListIndex or + t11FcsPlatformMgmtAddrListIndex objects." + ::= { t11FcsDiscoveredConfig 2 } + +t11FcsMgmtAddrListEntry OBJECT-TYPE + SYNTAX T11FcsMgmtAddrListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one management address in a + management address list, which is known to a + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsMgmtAddrListIndex, t11FcsMgmtAddrIndex } + + + + ::= { t11FcsMgmtAddrListTable 1 } + +T11FcsMgmtAddrListEntry ::= SEQUENCE { + t11FcsMgmtAddrListIndex T11FcListIndex, + t11FcsMgmtAddrIndex Unsigned32, + t11FcsMgmtAddr URLString +} + +t11FcsMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the management address list." + ::= { t11FcsMgmtAddrListEntry 1 } + +t11FcsMgmtAddrIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value to distinguish different + management addresses in the same list." + ::= { t11FcsMgmtAddrListEntry 2 } + +t11FcsMgmtAddr OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The management address of this entry. + + The format of this object is a Uniform Resource + Locator (URL), e.g., for SNMP, see RFC 4088." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.7" + ::= { t11FcsMgmtAddrListEntry 3 } + +-- +-- Ports +-- + +t11FcsPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table contains information about the ports of IEs." + ::= { t11FcsDiscoveredConfig 4 } + +t11FcsPortEntry OBJECT-TYPE + SYNTAX T11FcsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port of an Interconnect + Element (identified by t11FcsIeName). The port is + connected to a Fabric (identified by t11FcsFabricIndex) + and known to a switch (identified by fcmInstanceIndex + and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex, + t11FcsIeName, t11FcsPortName } + ::= { t11FcsPortTable 1 } + +T11FcsPortEntry ::= SEQUENCE { + t11FcsPortName FcNameIdOrZero, + t11FcsPortType FcPortType, + t11FcsPortTxType T11FcPortTxType, + t11FcsPortModuleType Unsigned32, + t11FcsPortPhyPortNum Unsigned32, + t11FcsPortAttachPortNameIndex T11FcListIndexPointerOrZero, + t11FcsPortState T11FcPortState, + t11FcsPortSpeedCapab OCTET STRING, + t11FcsPortOperSpeed OCTET STRING, + t11FcsPortZoningEnfStatus OCTET STRING +} + +t11FcsPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port_Name (WWN) of the port for which this row + contains information." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.1." + ::= { t11FcsPortEntry 1 } + +t11FcsPortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Type of this port." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.2." + ::= { t11FcsPortEntry 2 } + +t11FcsPortTxType OBJECT-TYPE + SYNTAX T11FcPortTxType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port TX Type of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.3." + ::= { t11FcsPortEntry 3 } + +t11FcsPortModuleType OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port module type of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.4." + ::= { t11FcsPortEntry 4 } + +t11FcsPortPhyPortNum OBJECT-TYPE + SYNTAX Unsigned32 -- the default range of (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical number for this port. FC-GS-5 says that + the contents of this field, which are carried in a field + with a size of 4 bytes, are not to be restricted due to + vendor-specific methods for numbering physical ports." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.5." + ::= { t11FcsPortEntry 5 } + +t11FcsPortAttachPortNameIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The attached port name list for this port. This object + points to an entry in the t11FcsAttachPortNameListTable." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6." + ::= { t11FcsPortEntry 6 } + +t11FcsPortState OBJECT-TYPE + SYNTAX T11FcPortState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.7." + ::= { t11FcsPortEntry 7 } + +t11FcsPortSpeedCapab OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port speed capabilities of this port. The two octets + of the value are formatted as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.8." + ::= { t11FcsPortEntry 8 } + +t11FcsPortOperSpeed OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operating speed of this port. The two octets + of the value are formatted as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.9." + ::= { t11FcsPortEntry 9 } + +t11FcsPortZoningEnfStatus OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zoning enforcement status of this port. The 12 + octets of the value are formatted as described in FC-GS-5." + REFERENCE + + + + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.10." + ::= { t11FcsPortEntry 10 } + +-- +-- Attached Port List table +-- + +t11FcsAttachPortNameListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsAttachPortNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the lists of attach port + names." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6" + ::= { t11FcsDiscoveredConfig 5 } + +t11FcsAttachPortNameListEntry OBJECT-TYPE + SYNTAX T11FcsAttachPortNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the name of a particular attached port, + which is known to a switch (identified by fcmInstanceIndex + and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsAttachPortNameListIndex, t11FcsAttachPortName } + ::= { t11FcsAttachPortNameListTable 1 } + +T11FcsAttachPortNameListEntry ::= SEQUENCE { + t11FcsAttachPortNameListIndex T11FcListIndex, + t11FcsAttachPortName OCTET STRING +} + +t11FcsAttachPortNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the attach port name list." + ::= { t11FcsAttachPortNameListEntry 1 } + +t11FcsAttachPortName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (12)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The attached port name. Zero or more of these names + may be associated with a port object. + The first 8 bytes of this object contain the WWN of + the port followed by 2 reserved bytes. Following + this is one byte of Port flags and one byte of + Port type, as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6" + ::= { t11FcsAttachPortNameListEntry 2 } + +-- +-- Platforms +-- + +t11FcsPlatformTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsPlatformEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on platforms. + + By default, this table only contains local (e.g., for a + local switch) information. If a discovery is triggered, + this table will also contain information gathered by the + discovery process. The discovered information is retained + in this table for at least t11FcsFabricDiscoveryTimeOut + seconds after the completion of its discovery or until + the discovered cache is invalidated." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4" + ::= { t11FcsDiscoveredConfig 6 } + +t11FcsPlatformEntry OBJECT-TYPE + SYNTAX T11FcsPlatformEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular platform, which is + known to a switch (identified by fcmInstanceIndex and + fcmSwitchIndex). + + A platform can contain multiple nodes. Information on + nodes is contained in the t11FcsNodeNameListTable. The + t11FcsPlatformNodeNameListIndex object in this table + + + + points to the list of nodes contained in this platform. + Similarly, the t11FcsPlatformMgmtAddrListIndex object in + this table points to the list of management addresses + associated with this platform." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsFabricIndex, t11FcsPlatformIndex } + ::= { t11FcsPlatformTable 1 } + +T11FcsPlatformEntry ::= SEQUENCE { + t11FcsPlatformIndex Unsigned32, + t11FcsPlatformName OCTET STRING, + t11FcsPlatformType OCTET STRING, + t11FcsPlatformNodeNameListIndex T11FcListIndexPointerOrZero, + t11FcsPlatformMgmtAddrListIndex T11FcListIndexPointerOrZero, + t11FcsPlatformVendorId SnmpAdminString, + t11FcsPlatformProductId SnmpAdminString, + t11FcsPlatformProductRevLevel SnmpAdminString, + t11FcsPlatformDescription SnmpAdminString, + t11FcsPlatformLabel SnmpAdminString, + t11FcsPlatformLocation SnmpAdminString, + t11FcsPlatformSystemID SnmpAdminString, + t11FcsPlatformSysMgmtAddr T11FcListIndexPointerOrZero, + t11FcsPlatformClusterId SnmpAdminString, + t11FcsPlatformClusterMgmtAddr T11FcListIndexPointerOrZero, + t11FcsPlatformFC4Types OCTET STRING +} + +t11FcsPlatformIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value to distinguish one platform from + other platforms in the same Fabric." + ::= { t11FcsPlatformEntry 1 } + +t11FcsPlatformName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this platform. The last byte of the value + indicates the format of the name (even if the name itself + is the zero-length string) as specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.2" + ::= { t11FcsPlatformEntry 2 } + + + +t11FcsPlatformType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type(s) of this platform, encoded in 4 bytes as + specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.3" + ::= { t11FcsPlatformEntry 3 } + +t11FcsPlatformNodeNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of nodes for this platform. This object points + to an entry in the t11FcsNodeNameListTable." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.6" + ::= { t11FcsPlatformEntry 4 } + +t11FcsPlatformMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of management addresses for this platform. This + object points to an entry in the t11FcsMgmtAddrListTable." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.7" + ::= { t11FcsPlatformEntry 5 } + +t11FcsPlatformVendorId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier of the vendor of this platform, in the + format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 6 } + + + + +t11FcsPlatformProductId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's product and/or model identifier for this + platform, in the format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 7 } + +t11FcsPlatformProductRevLevel OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product revision level for this platform, in the + format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 8 } + +t11FcsPlatformDescription OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this platform, in the + format specified in FC-GS-5. This value should + include the full name and version identification of the + platform's hardware type and software operating system." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.10" + ::= { t11FcsPlatformEntry 9 } + +t11FcsPlatformLabel OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An administratively assigned symbolic name for the + platform, in the format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.11" + + + + ::= { t11FcsPlatformEntry 10 } + +t11FcsPlatformLocation OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical location of the platform, in the format + specified in FC-GS-5 (e.g., 'telephone closet, 3rd floor')." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.12" + ::= { t11FcsPlatformEntry 11 } + +t11FcsPlatformSystemID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for a hosting system that this platform is + associated with. This identifier is used to associate + platforms of logical types (e.g., logical partitions) with + a physical system." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 12 } + +t11FcsPlatformSysMgmtAddr OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of management addresses for the platform." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." + ::= { t11FcsPlatformEntry 13 } + +t11FcsPlatformClusterId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for a cluster that this platform is + associated with, where a cluster is a set of independent + platforms that are managed together to provide increased + performance capabilities, failover, etc." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 14 } + +t11FcsPlatformClusterMgmtAddr OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of management addresses for the cluster identified + in the corresponding instance of t11FcsPlatformClusterId." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." + ::= { t11FcsPlatformEntry 15 } + +t11FcsPlatformFC4Types OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 types supported by this platform, formatted as + a bit mask as specified in FC-GS-5. If this object + contains the zero-length string, the types are unknown." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 16 } + +-- +-- Node Name List table +-- + +t11FcsNodeNameListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsNodeNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the lists of nodes." + ::= { t11FcsDiscoveredConfig 7 } + +t11FcsNodeNameListEntry OBJECT-TYPE + SYNTAX T11FcsNodeNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a node, which is known to a + + + + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsNodeNameListIndex, t11FcsNodeName } + ::= { t11FcsNodeNameListTable 1 } + +T11FcsNodeNameListEntry ::= SEQUENCE { + t11FcsNodeNameListIndex T11FcListIndex, + t11FcsNodeName FcNameIdOrZero +} + +t11FcsNodeNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the node name list." + ::= { t11FcsNodeNameListEntry 1 } + +t11FcsNodeName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this node." + ::= { t11FcsNodeNameListEntry 2 } + +-- +-- Statistics +-- + +t11FcsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the statistics related + to the Fabric Configuration Server." + ::= { t11FcsStats 1 } + +t11FcsStatsEntry OBJECT-TYPE + SYNTAX T11FcsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a particular Fabric (identified + by t11FcsFabricIndex) on a switch (identified by + fcmInstanceIndex and fcmSwitchIndex)." + + + + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } + ::= { t11FcsStatsTable 1 } + +T11FcsStatsEntry ::= SEQUENCE { + t11FcsInGetReqs Counter32, + t11FcsOutGetReqs Counter32, + t11FcsInRegReqs Counter32, + t11FcsOutRegReqs Counter32, + t11FcsInDeregReqs Counter32, + t11FcsOutDeregReqs Counter32, + t11FcsRejects Counter32 +} + +t11FcsInGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Get Requests received by the Fabric + Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 1 } + + +t11FcsOutGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Get Requests sent by the Fabric + Configuration Server on this Fabric to other + servers in the Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 2 } + + +t11FcsInRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registration Requests received by the + Fabric Configuration Server on this Fabric. + + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 3 } + +t11FcsOutRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registration Requests sent by the + Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 4 } + + +t11FcsInDeregReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Deregistration Requests received by + the Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 5 } + +t11FcsOutDeregReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Deregistration Requests sent by + the Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 6 } + +t11FcsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of requests rejected by the Fabric + Configuration Server on this Fabric. + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 7 } + +-- +-- Notification Control Table +-- + +t11FcsNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to Fabric Configuration Server events. + + Values written to objects in this table should be + persistent/retained over agent reboots." + ::= { t11FcsNotificationInfo 1 } + +t11FcsNotifyControlEntry OBJECT-TYPE + SYNTAX T11FcsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + for a Fabric Configuration Server on a particular Fabric + (identified by t11FcsFabricIndex) on a particular + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsFabricIndex } + ::= { t11FcsNotifyControlTable 1 } + +T11FcsNotifyControlEntry ::= SEQUENCE { + t11FcsReqRejectNotifyEnable TruthValue, + t11FcsDiscoveryCompNotifyEnable TruthValue, + t11FcsMgmtAddrChangeNotifyEnable TruthValue, + t11FcsRejectCtCommandString OCTET STRING, + t11FcsRejectRequestSource FcNameIdOrZero, + t11FcsRejectReasonCode T11NsGs4RejectReasonCode, + t11FcsRejectReasonCodeExp T11FcsRejectReasonExplanation, + t11FcsRejectReasonVendorCode OCTET STRING +} + +t11FcsReqRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsRqRejectNotification' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 1 } + +t11FcsDiscoveryCompNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsDiscoveryCompleteNotify' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 2 } + +t11FcsMgmtAddrChangeNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsMgmtAddrChangeNotify' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 3 } + +t11FcsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Fabric Configuration Server + + + + request, formatted as an octet string (in network byte + order) containing the Common Transport Information Unit + (CT_IU), as described in Table 2 of FC-GS-5 (including + the preamble), which was most recently rejected by the + Fabric Configuration Server for this Fabric. + + This object contains the zero-length string if and when the + CT-IU's content is unavailable. + + When the length of this object is 255 octets, it contains + the first 255 octets of the CT-IU (in network byte order)." + ::= { t11FcsNotifyControlEntry 4 } + +t11FcsRejectRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the CT_IU contained in + the corresponding instance of t11FcsRejectCtCommandString." + ::= { t11FcsNotifyControlEntry 5 } + +t11FcsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the reason code corresponding + to the latest Fabric Configuration Server request + rejected by the local system." + ::= { t11FcsNotifyControlEntry 6 } + +t11FcsRejectReasonCodeExp OBJECT-TYPE + SYNTAX T11FcsRejectReasonExplanation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of + t11FcsRejectReasonCode has the value: 'unable to + perform command request', this object contains the + corresponding reason code explanation." + ::= { t11FcsNotifyControlEntry 7 } + +t11FcsRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A registration reject vendor-specific code. This + object contains the vendor-specific code of the most + recently rejected Fabric Configuration Server + Registration request for the particular port on + the particular Fabric." + ::= { t11FcsNotifyControlEntry 8 } +-- +-- Notifications +-- + +t11FcsRqRejectNotification NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11FcsRejectReasonCode, + t11FcsRejectReasonCodeExp, + t11FcsRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever the Fabric + Configuration Server on a switch (indicated by the + value of t11FamLocalSwitchWwn) rejects a Fabric + Configuration Server request. + + The Fabric Configuration Server should update the + t11FcsRejectReasonCode, t11FcsRejectReasonCodeExp + and t11FcsRejectReasonVendorCode objects with the + corresponding reason code, explanation and vendor + specific code before sending the notification." + ::= { t11FcsNotifications 1 } + +t11FcsDiscoveryCompleteNotify NOTIFICATION-TYPE + OBJECTS {t11FcsFabricDiscoveryRangeLow} + STATUS current + DESCRIPTION + "This notification is generated by the Fabric + Configuration Server on the completion of the + discovery of Fabrics in the range that has + t11FcsFabricDiscoveryRangeLow at its low end." + ::= { t11FcsNotifications 2 } + +t11FcsMgmtAddrChangeNotify NOTIFICATION-TYPE + OBJECTS { t11FcsMgmtAddrChangeFabricIndex, + t11FcsMgmtAddrChangeIeName } + STATUS current + DESCRIPTION + "This notification is generated by the Fabric + Configuration Server whenever the management + address of an IE changes, i.e., whenever an + entry in the t11FcsMgmtAddrListTable changes." + + + + ::= { t11FcsNotifications 3 } + +t11FcsMgmtAddrChangeFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The index value that identifies the Fabric on which + a management address change has been detected." + ::= { t11FcsNotificationInfo 2 } + +t11FcsMgmtAddrChangeIeName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IE for which a management address change has been + detected." + ::= { t11FcsNotificationInfo 3 } + + +-- Conformance + +t11FcsMIBCompliances OBJECT IDENTIFIER ::= { t11FcsMIBConformance 1 } +t11FcsMIBGroups OBJECT IDENTIFIER ::= { t11FcsMIBConformance 2 } + +t11FcsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Fabric Configuration Server." + MODULE MANDATORY-GROUPS { t11FcsDiscoveredConfigGroup, + t11FcsDiscoveryStatusGroup, + t11FcsNotificationInfoGroup, + t11FcsNotificationGroup } + + GROUP t11FcsDiscoveryControlGroup + DESCRIPTION + "This group is mandatory only for those systems that + allow discovery of configuration by Fabric Configuration + Servers to be controlled via a MIB." + + GROUP t11FcsStatisticsGroup + DESCRIPTION + "These counters, containing Fabric Configuration + Server statistics, are mandatory only for those systems + that count such events." + + + + + OBJECT t11FcsDiscoveryStatus + WRITE-SYNTAX INTEGER { localOnly(3) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + However, if write access is supported, then the only + writable value is 'localOnly'." + + OBJECT t11FcsReqRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcsDiscoveryCompNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcsMgmtAddrChangeNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcsMIBCompliances 1 } + + +-- Units of Conformance + +t11FcsDiscoveryControlGroup OBJECT-GROUP + OBJECTS { t11FcsFabricDiscoveryRangeLow, + t11FcsFabricDiscoveryRangeHigh, + t11FcsFabricDiscoveryStart, + t11FcsFabricDiscoveryTimeOut } + STATUS current + DESCRIPTION + "A collection of objects for requesting a Fabric + Configuration Server to discover the configuration + of one or more Fabrics." + ::= { t11FcsMIBGroups 1 } + +t11FcsDiscoveryStatusGroup OBJECT-GROUP + OBJECTS { t11FcsDiscoveryStatus, + t11FcsDiscoveryCompleteTime } + STATUS current + DESCRIPTION + "A collection of objects with which to monitor the + status of discovery (of Fabric configurations) by + Fabric Configuration Servers." + + + + ::= { t11FcsMIBGroups 2 } + +t11FcsDiscoveredConfigGroup OBJECT-GROUP + OBJECTS { + t11FcsIeType, + t11FcsIeDomainId, + t11FcsIeMgmtId, + t11FcsIeFabricName, + t11FcsIeLogicalName, + t11FcsIeMgmtAddrListIndex, + t11FcsIeInfoList, + t11FcsMgmtAddr, + t11FcsPortType, + t11FcsPortTxType, + t11FcsPortModuleType, + t11FcsPortPhyPortNum, + t11FcsPortAttachPortNameIndex, + t11FcsPortState, + t11FcsPortSpeedCapab, + t11FcsPortOperSpeed, + t11FcsPortZoningEnfStatus, + t11FcsAttachPortName, + t11FcsPlatformName, + t11FcsPlatformType, + t11FcsPlatformNodeNameListIndex, + t11FcsPlatformMgmtAddrListIndex, + t11FcsPlatformVendorId, + t11FcsPlatformProductId, + t11FcsPlatformProductRevLevel, + t11FcsPlatformDescription, + t11FcsPlatformLabel, + t11FcsPlatformLocation, + t11FcsPlatformSystemID, + t11FcsPlatformSysMgmtAddr, + t11FcsPlatformClusterId, + t11FcsPlatformClusterMgmtAddr, + t11FcsPlatformFC4Types, + t11FcsNodeName } + STATUS current + DESCRIPTION + "A collection of objects to contain the Fabric configuration + information discovered by Fabric Configuration Servers." + ::= { t11FcsMIBGroups 3 } + +t11FcsStatisticsGroup OBJECT-GROUP + OBJECTS { t11FcsInGetReqs, + t11FcsOutGetReqs, + t11FcsInRegReqs, + + + + t11FcsOutRegReqs, + t11FcsInDeregReqs, + t11FcsOutDeregReqs, + t11FcsRejects } + STATUS current + DESCRIPTION + "A collection of objects for Fabric Configuration Server + statistics information." + ::= { t11FcsMIBGroups 4 } + +t11FcsNotificationInfoGroup OBJECT-GROUP + OBJECTS { t11FcsReqRejectNotifyEnable, + t11FcsDiscoveryCompNotifyEnable, + t11FcsMgmtAddrChangeNotifyEnable, + t11FcsRejectCtCommandString, + t11FcsRejectRequestSource, + t11FcsRejectReasonCode, + t11FcsRejectReasonCodeExp, + t11FcsRejectReasonVendorCode, + t11FcsMgmtAddrChangeFabricIndex, + t11FcsMgmtAddrChangeIeName } + STATUS current + DESCRIPTION + "A collection of notification control and notification + information objects for monitoring Fabric + Configuration Servers." + ::= { t11FcsMIBGroups 5 } + +t11FcsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FcsRqRejectNotification, + t11FcsDiscoveryCompleteNotify, + t11FcsMgmtAddrChangeNotify } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring Fabric + Configuration Servers." + ::= { t11FcsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-FC-FABRIC-LOCK-MIB b/mibs/ietf/T11-FC-FABRIC-LOCK-MIB new file mode 100644 index 0000000..c6c757f --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-LOCK-MIB @@ -0,0 +1,515 @@ +T11-FC-FABRIC-LOCK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2 FROM SNMPv2-SMI -- [RFC2578] + RowStatus FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, InetAddress FROM + INET-ADDRESS-MIB -- [RFC4001] + fcmInstanceIndex, fcmSwitchIndex FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode FROM + T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FabricLockMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + + + + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of locks on a Fibre + Channel Fabric. A Fibre Channel Fabric lock is used to + ensure serialized access to some types of management data + related to a Fabric, e.g., the Fabric's Zoning Database. + + Some (managing) applications generate Fabric locks by + initiating server sessions. Server sessions are + defined generically in FC-GS-5 to represent a collection of + one or more requests to the session's server, e.g., to the + Zone Server. Such a session is started by a Server Session + Begin (SSB) request, and terminated by a Server Session End + (SSE) request. The switch receiving the SSB is called the + 'managing' switch. Some applications require the + 'managing' switch to lock the Fabric for the particular + application, e.g., for Enhanced Zoning, before it can + respond successfully to the SSB. On receipt of the + subsequent SSE, the lock is released. For this usage, the + managing switch sends an Acquire Change Authorization (ACA) + request to other switches to lock the Fabric. + + For some other applications, a managing switch locks the + Fabric using an Enhanced Acquire Change Authorization (EACA) + request, which identifies the application on whose behalf + the Fabric is being locked with an Application_ID. + + Fabric locks can also be requested more directly, e.g., + through the use of this MIB. In these situations, the term + 'managing' switch is used to indicate the switch that + receives such a request and executes it by issuing either + ACA or EACA requests to other switches in the Fabric. + + This MIB module defines information about the 'managing' + switch for currently-active Fabric locks. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 4936; see the RFC + itself for full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4936." + ::= { mib-2 159 } + + + + +t11FLockMIBObjects OBJECT IDENTIFIER ::= { t11FabricLockMIB 1 } +t11FLockMIBConformance OBJECT IDENTIFIER ::= { t11FabricLockMIB 2 } +t11FLockMIBNotifications OBJECT IDENTIFIER ::= { t11FabricLockMIB 0 } +t11FLockConfiguration OBJECT IDENTIFIER ::= { t11FLockMIBObjects 1 } + +-- +-- The table of Managing Switches and their Fabric Locks +-- + +t11FLockTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FLockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the 'managing' + switch of each current Fabric lock, e.g., for the + types of Servers defined in FC-GS-5. + + Each entry in this table represents either: + + 1) a current Fabric lock, + 2) an in-progress attempt, requested via SNMP, to set up + a lock, or + 3) a failed attempt, requested via SNMP, to set up a lock. + + If an entry is created via t11FLockRowStatus, but the + attempt to obtain the lock fails, then the entry continues + to exist until it is deleted via t11FLockRowStatus, or + it is overwritten by the lock being established via + a means other than SNMP. However, rows created via + t11FLockRowStatus are not retained over restarts." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.9.5 and 6.4.10.2." + ::= { t11FLockConfiguration 1 } + +t11FLockEntry OBJECT-TYPE + SYNTAX T11FLockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information specific to a current + Fabric lock set up by a particular 'managing' switch on a + particular Fabric. The 'managing switch' is identified by + values of fcmInstanceIndex and fcmSwitchIndex. + + Server sessions for several different types of servers + are defined in FC-GS-5. The behavior of a server with + + + + respect to commands received within a server session is + specified for each type of server. For some types, + parameter changes can only be made within the context of a + session, and the setting up of a session requires that the + Fabric be locked. A Fabric is locked by one switch, called + the 'managing' switch, sending Acquire Change Authorization + (ACA) requests to all other switches in the Fabric. + + For other applications, a Fabric lock is established by the + 'managing' switch sending Enhanced Acquire Change + Authorization (EACA) requests to other switches in the + Fabric. Each EACA request includes an Application_ID + value to identify the application requesting the lock. + + For the benefit of this MIB module, a distinct value of + Application_ID has also been assigned/reserved (see + ANSI INCITS T11/06-679v0, titled 'FC-SW-5 Letter to + T11.5') as a means of distinguishing locks established via + Acquire Change Authorization (ACA) requests. This + additional assignment allows an Application_ID to be used to + uniquely identify any active lock amongst all those + established by either an EACA or an ACA. + + Whenever a Fabric is locked, by the sending of either an ACA + or an EACA, a row gets created in the representation of this + table for the 'managing' switch. + + In order to process SNMP SetRequests that make parameter + changes for the relevant types of servers (e.g., to the + Zoning Database), the SNMP agent must get serialized access + to the Fabric (for the relevant type of management data), + i.e., the Fabric must be locked by creating an entry in + this table via an SNMP SetRequest. Creating an entry in + this table via an SNMP SetRequest causes an ACA or an EACA + to be sent to all other switches in the Fabric. The value + of t11FLockApplicationID for such an entry determines + whether an ACA or an EACA is sent. + + If an entry in this table is created by an SNMP SetRequest, + the value of the t11FLockInitiatorType object in that entry + will normally be 'snmp'. A row for which the value of + t11FLockInitiatorType is not 'snmp' cannot be modified + via SNMP. In particular, it cannot be deleted via + t11FLockRowStatus. Note that it's possible for a row to be + created by an SNMP SetRequest, but for the setup of the lock + to fail, and immediately thereafter be replaced by a lock + successfully set up by some other means; in such a case, the + value of t11FLockInitiatorType would change as and when the + + + + lock was set up by the other means, and so the row could + not thereafter be deleted via t11FLockRowStatus. + + FC-GS-5 mentions various error situations in which a + Fabric lock is released so as to avoid a deadlock. In + such situations, the agent removes the corresponding row + in this table as and when the lock is released. This can + happen for all values of t11FLockInitiatorType." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.9.5.5 and 6.4.7.1. + + Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, sections 6.1.17, 10.6.6, and 13.2, + and table 116. + + 'FC-SW-5 Letter to T11.5' ANSI INCITS T11/06-679v0, + http://www.t11.org/ftp/t11/pub/fc/sw-5/06-679v0.pdf, + 21 September 2006." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FLockFabricIndex, + t11FLockApplicationID } + ::= { t11FLockTable 1 } + +T11FLockEntry ::= SEQUENCE { + t11FLockFabricIndex T11FabricIndex, + t11FLockApplicationID OCTET STRING, + t11FLockInitiatorType INTEGER, + t11FLockInitiator OCTET STRING, + t11FLockInitiatorIpAddrType InetAddressType, + t11FLockInitiatorIpAddr InetAddress, + t11FLockStatus INTEGER, + t11FLockRejectReasonCode T11NsGs4RejectReasonCode, + t11FLockRejectReasonCodeExp OCTET STRING, + t11FLockRejectReasonVendorCode OCTET STRING, + t11FLockRowStatus RowStatus +} + +t11FLockFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures, + and this index value is used to uniquely identify a + + + + particular (physical or virtual) Fabric within a physical + infrastructure. + + In a Fabric conformant to versions earlier than FC-SW-4, + only a single Fabric could operate within a physical + infrastructure, and thus, the value of this Fabric Index + was defined to always be 1." + ::= { t11FLockEntry 1 } + +t11FLockApplicationID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Application_ID value that identifies the type of + application for which the Fabric is locked. + + A lock established via Acquire Change Authorization (ACA) + does not, strictly speaking, have an Application_ID value. + However, the value 'FF'h (255 decimal) has been reserved + by T11 to be used as the value of this MIB object as and + when a lock is established by an ACA. This value was + initially documented in a letter from the FC-SW-5 Editor + to T11.5, which was approved by the T11 and T11.5 plenary + meetings on October 5, 2006." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, Table 116. + + 'FC-SW-5 Letter to T11.5' ANSI INCITS T11/06-679v0, + http://www.t11.org/ftp/t11/pub/fc/sw-5/06-679v0.pdf, + 21 September 2006." + ::= { t11FLockEntry 2 } + +t11FLockInitiatorType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ssb(2), + cli(3), + snmp(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies what type of initiator generated + the request that caused this lock to be established: + + other - none of the following. + + + + ssb - this lock was established due to the + receipt of an SSB, e.g., from a GS-5 + client. + cli - this lock was established in order + to process a Command Line Interface + (CLI) command. + snmp - this lock was established as a result + of an SNMP SetRequest. + " + ::= { t11FLockEntry 3 } + +t11FLockInitiator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the initiator whose request + caused this lock to be established. + + If the value of the corresponding instance + of t11FLockInitiatorType is 'ssb', this + object will contain the FC_ID of the client + that issued the Server Session Begin (SSB) + that required the lock to be established. + + If the value of the corresponding instance + of t11FLockInitiatorType object is 'cli', this + object will contain the user name of the CLI + (Command Line Interface) user on whose behalf + the lock was established. + + If the value of the corresponding instance of + t11FLockInitiatorType is 'snmp', this object + will contain the SNMP securityName used by the + SNMPv3 message containing the SetRequest that + created this row. (If the row was created via + SNMPv1 or SNMPv2c, then the appropriate value of + the snmpCommunitySecurityName is used.)" + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.9.5.2. + + SNMP securityName is defined in RFC 3411, 'An + Architecture for Describing Simple Network + Management Protocol (SNMP) Management Frameworks'. + + snmpCommunitySecurityName is defined in RFC 3584, + 'Coexistence between Version 1, Version 2, and + + + + Version 3 of the Internet-standard Network + Management Framework.'" + ::= { t11FLockEntry 4 } + +t11FLockInitiatorIpAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of IP address contained + in the corresponding instance of t11FLockInitiatorIpAddr. + If the IP address of the location of the initiator is + unknown or not applicable, this object has the value: + 'unknown'." + ::= { t11FLockEntry 5 } + +t11FLockInitiatorIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the IP address of the location + of the initiator that established this lock via a + request of the type given by the corresponding instance + of t11FLockInitiatorType. In cases where the + corresponding instance of t11FLockInitiatorIpAddrType has + the value: 'unknown', the value of this object is the + zero-length string." + ::= { t11FLockEntry 6 } + +t11FLockStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + settingUp(2), + rejectFailure(3), + otherFailure(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object gives the current status of the lock: + + 'active' -- the lock is currently established. + 'settingUp' -- the 'managing' switch is currently + attempting to set up the lock, e.g., + it is waiting to receive Accepts + for ACAs from every switch in the + Fabric. + + + + 'rejectFailure' -- the 'managing' switch's attempt to + set up the lock was rejected with + the reason codes given by: + t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp and + t11FLockRejectReasonVendorCode. + 'otherFailure' -- the 'managing' switch's attempt + to set up the lock failed (but no + reason codes are available). + + For values of t11FLockInitiatorType other than 'snmp', + a row is only required to be instantiated in this table + when the value of this object is 'active'. + + If the value of the corresponding instance of + t11FLockInitiatorType is 'snmp', the initial value of this + object when the row is first created is 'settingUp'. As + and when the setup succeeds, the value transitions to + 'active'. If the setup fails, the value transitions to + either 'rejectFailure' or 'otherFailure'. Note that such a + failure value is overwritten on the next attempt to obtain + the lock, which could be immediately after the failure, + e.g., by a GS-5 client. + + When the value of this object is 'rejectFailure', the + rejection's reason codes are given by the corresponding + values of t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp and + t11FLockRejectReasonVendorCode." + ::= { t11FLockEntry 7 } + +t11FLockRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's reason code." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.4.4 and table 10." + ::= { t11FLockEntry 8 } + +t11FLockRejectReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 1)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's reason code explanation." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.4.4 and 6.4.9, + tables 10 and 252." + ::= { t11FLockEntry 9 } + +t11FLockRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's vendor-specific code." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.4.4." + ::= { t11FLockEntry 10 } + +t11FLockRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + A row in this table can be modified or deleted via + this object only when the row's value of + t11FLockInitiatorType is 'snmp'." + ::= { t11FLockEntry 11 } + +-- Conformance + +t11FLockMIBCompliances + OBJECT IDENTIFIER ::= { t11FLockMIBConformance 1 } +t11FLockMIBGroups OBJECT IDENTIFIER ::= { t11FLockMIBConformance 2 } + +t11FLockMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that support + Fabric locks in support of GS-5 Server applications." + MODULE MANDATORY-GROUPS { t11FLockActiveGroup } + + + + + OBJECT t11FLockRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FLockMIBCompliances 1 } + +-- Units of Conformance + +t11FLockActiveGroup OBJECT-GROUP + OBJECTS { t11FLockInitiatorType, + t11FLockInitiator, + t11FLockInitiatorIpAddrType, + t11FLockInitiatorIpAddr, + t11FLockStatus, + t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp, + t11FLockRejectReasonVendorCode, + t11FLockRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects containing information + about current Fabric locks." + ::= { t11FLockMIBGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-FSPF-MIB b/mibs/ietf/T11-FC-FSPF-MIB new file mode 100644 index 0000000..4ff7db7 --- /dev/null +++ b/mibs/ietf/T11-FC-FSPF-MIB @@ -0,0 +1,1234 @@ +T11-FC-FSPF-MIB DEFINITIONS ::= BEGIN +-- +-- For management of FSPF, the Fibre Channel routing protocol. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, Unsigned32, TimeTicks, + Gauge32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, RowStatus, StorageType, + TruthValue FROM SNMPv2-TC -- [RFC2579] + ifIndex, InterfaceIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcDomainIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB -- [RFC4439] + t11FamConfigDomainId + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + +t11FcFspfMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" + ORGANIZATION "T11" + CONTACT-INFO + "Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing the Fabric Shortest Path + First (FSPF) protocol. FSPF is specified in FC-SW-4. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4626; see the RFC itself for + full legal notices." + REVISION "200608140000Z" + DESCRIPTION + "Initial version of this MIB module published as RFC4626." + + ::= { mib-2 143 } + +t11FspfNotifications OBJECT IDENTIFIER ::= { t11FcFspfMIB 0 } +t11FspfObjects OBJECT IDENTIFIER ::= { t11FcFspfMIB 1 } +t11FspfConformance OBJECT IDENTIFIER ::= { t11FcFspfMIB 2 } +t11FspfConfiguration OBJECT IDENTIFIER ::= { t11FspfObjects 1 } +t11FspfDatabase OBJECT IDENTIFIER ::= { t11FspfObjects 2 } + +-- +-- TEXTUAL CONVENTIONS + +T11FspfLsrType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Type of the Link State Record. + + FC-SW-4 defines two types of LSRs and allows for the + possibility for more will be defined in the future: + + 01 - Switch Link Record + 02 - Obsolete + 240 - 255 - Vendor Specific + others - Reserved. + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.3." + SYNTAX Integer32 (0..255) + +T11FspfLinkType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Type of an the FSPF Link. Presently defined values: + + 1 - Point-to-Point + 240-255 - Vendor Specific + all others - Reserved. + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.4." + SYNTAX Integer32 (0..255) + +T11FspfInterfaceState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The state of the FSPF Neighbor Finite State Machine + for the neighbor (switch) on a particular interface. + Possible values are : + + down(1) - Down + init(2) - Init + dbExchange(3) - Database Exchange + dbAckwait(4) - Database AckWait + dbWait(5) - Database Wait + full(6) - Full (Connected) + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.7." + SYNTAX INTEGER { + down(1), + init(2), + dbExchange(3), + dbAckwait(4), + dbWait(5), + full(6) + } + +T11FspfLastCreationTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the last time + it, and the row containing it, was created. + + This can be used by management applications to determine + that a row has been deleted and re-created between reads, + causing an otherwise undetectable discontinuity in the + data." + SYNTAX TimeTicks + + + +-- +-- t11FspfTable + +t11FspfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the users to configure and monitor FSPF's + per-Fabric parameters and statistics on all Fabrics known to + locally managed switches. + + Entries are created/removed by the agent if and when + (Virtual) Fabrics are created/deleted." + ::= { t11FspfConfiguration 1 } + +t11FspfEntry OBJECT-TYPE + SYNTAX T11FspfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing FSPF variables, parameters, and + statistics on a particular switch (identified by values + of fcmInstanceIndex and fcmSwitchIndex) for a particular + Fabric (identified by a t11FspfFabricIndex value). + + (Note that the local switch's per-fabric Domain-ID is + available in t11FamConfigDomainId, which is defined in + T11-FC-FABRIC-ADDR-MGR-MIB.)" + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex } + ::= { t11FspfTable 1 } + +T11FspfEntry ::= SEQUENCE { + t11FspfFabricIndex T11FabricIndex, + t11FspfMinLsArrival Unsigned32, + t11FspfMinLsInterval Unsigned32, + t11FspfLsRefreshTime Unsigned32, + t11FspfMaxAge Unsigned32, + t11FspfMaxAgeDiscards Counter32, + t11FspfPathComputations Counter32, + t11FspfChecksumErrors Counter32, + t11FspfLsrs Gauge32, + t11FspfCreateTime T11FspfLastCreationTime, + t11FspfAdminStatus INTEGER, + t11FspfOperStatus INTEGER, + t11FspfNbrStateChangNotifyEnable TruthValue, + t11FspfSetToDefault INTEGER, + t11FspfStorageType StorageType + + + +} + +t11FspfFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, index value is used to uniquely identify a + particular Fabric within a physical infrastructure. + + In a Fabric that has (can have) only a single Fabric + operating within the physical infrastructure, the + value of this Fabric Index will always be 1." + ::= { t11FspfEntry 1 } + +t11FspfMinLsArrival OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time after accepting a Link State Record + (LSR) on this Fabric before accepting another update of + the same LSR on the same Fabric. + + An LSR update that is not accepted because of this time + interval is discarded." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 8.6.4.5 & 15.1." + DEFVAL {1000} + ::= { t11FspfEntry 2 } + +t11FspfMinLsInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time after this switch sends an LSR on this + Fabric before it will send another update of the same LSR + on the same Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 15.1." + + + + DEFVAL {5000} + ::= { t11FspfEntry 3 } + +t11FspfLsRefreshTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interval between transmission of refresh LSRs on this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 8.5.1 & 15.1." + DEFVAL {30} + ::= { t11FspfEntry 4 } + +t11FspfMaxAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum age an LSR will be retained in the FSPF + database on this Fabric. An LSR is removed from the + database after MaxAge is reached." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 15.1." + DEFVAL {60} + ::= { t11FspfEntry 5 } + +t11FspfMaxAgeDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LSRs discarded due to their age reaching + t11FspfMaxAge in this Fabric. The last discontinuity of + this counter is indicated by t11FspfCreateTime." + ::= { t11FspfEntry 6 } + +t11FspfPathComputations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the path computation algorithm + has been invoked by this Switch on this Fabric to compute + a set of minimum cost paths for this Fabric. The last + + + + discontinuity of this counter is indicated by + t11FspfCreateTime." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.1.1." + ::= { t11FspfEntry 7 } + +t11FspfChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FSPF checksum errors that were detected + locally (and therefore discarded) on this Fabric. + The last discontinuity of this counter is indicated by + t11FspfCreateTime." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.5.4." + ::= { t11FspfEntry 8 } + +t11FspfLsrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this Fabric in the + t11FspfLsrTable." + ::= { t11FspfEntry 9 } + +t11FspfCreateTime OBJECT-TYPE + SYNTAX T11FspfLastCreationTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last created." + ::= { t11FspfEntry 10 } + +t11FspfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of FSPF in this Fabric. If value of + this object is set to 'up', then FSPF is enabled in + this Fabric. If set to 'down', then FSPF is disabled + in this Fabric -- when FSPF is disabled, FSPF provides + + + + no routes to be included in the T11-FC-ROUTE-MIB module. + (see the T11-FC-ROUTE-MIB)." + REFERENCE "T11-FC-ROUTE-MIB, The Fibre Channel Routing + Information MIB, RFC4625." + DEFVAL {up} + ::= { t11FspfEntry 11 } + +t11FspfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of FSPF in this Fabric. If 't11FspfAdminStatus' is + 'down', then the 't11FspfOperStatus' should be 'down'. + If 't11FspfAdminStatus' is changed to 'up', then + 't11FspfOperStatus' should change to 'up' as and when + FSPF is active in this Fabric." + ::= { t11FspfEntry 12 } + +t11FspfNbrStateChangNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether or not the local agent should + issue the notification 't11FspfNbrStateChangNotify' + when the local switch learns of a change of state + in the FSPF Neighbor Finite State Machine on an + interface in this Fabric. + If the value of the object is 'true, then the + notification is generated. If the value is 'false', + notification is not generated." + DEFVAL { false } + ::= { t11FspfEntry 13 } + +t11FspfSetToDefault OBJECT-TYPE + SYNTAX INTEGER { + default(1), + noOp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'default' changes the value of each + and every writable object in this row to its default + + + + value. + + No action is taken if this object is set to 'noOp'. + The value of the object, when read, is always 'noOp'." + ::= { t11FspfEntry 14 } + +t11FspfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for read-write objects in this + conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FspfEntry 15 } + +-- +-- t11FspfIfTable + +t11FspfIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the users to configure and monitor + the FSPF parameters that are per-interface (identified + by a t11FspfIfIndex value), per-Fabric (identified by a + t11FspfFabricIndex value), and per-switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex). + + Creating a row in this table via t11FspfIfRowStatus + provides the means to specify non-default parameter value(s) + for an interface at a time when the relevant row in this + table would not otherwise exist because the interface is + either down or it is not an E_Port, but the corresponding + row in the t11FspfTable must already exist. + + After the non-default values have been specified for a + port's parameters, they need to be retained in this table, + even when the port becomes 'isolated'. However, having + unnecessary rows in this table clutters it up and makes + those rows that are useful harder for an NMS to find. + Therefore, when an E_Port becomes isolated, its row gets + deleted if and only if all of its parameter values are the + default values; also, when an E_Port becomes non-isolated + + + + in a particular Fabric, a row in this table needs to exist + and is automatically created, if necessary. + + The specific conditions for an automated/implicit deletion + of a row are: + a) if the corresponding interface is no longer an E_Port + (e.g., a G_Port which is dynamically determined to be an + F_Port), and all configurable parameters have default + values; or + b) if the interface identified by t11FspfIfIndex no longer + exists (e.g., because a line-card is physically removed); + or + c) if the corresponding row in the t11FspfTable is deleted. + " + ::= { t11FspfConfiguration 2 } + +t11FspfIfEntry OBJECT-TYPE + SYNTAX T11FspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing FSPF information for the interface + identified by t11FspfIfIndex, on the fabric identified + by t11FspfFabricIndex, on the switch identified by + fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FspfFabricIndex, t11FspfIfIndex } + ::= { t11FspfIfTable 1 } + +T11FspfIfEntry ::= SEQUENCE { + t11FspfIfIndex InterfaceIndex, + t11FspfIfHelloInterval Unsigned32, + t11FspfIfDeadInterval Unsigned32, + t11FspfIfRetransmitInterval Unsigned32, + t11FspfIfInLsuPkts Counter32, + t11FspfIfInLsaPkts Counter32, + t11FspfIfOutLsuPkts Counter32, + t11FspfIfOutLsaPkts Counter32, + t11FspfIfOutHelloPkts Counter32, + t11FspfIfInHelloPkts Counter32, + t11FspfIfRetransmittedLsuPkts Counter32, + t11FspfIfInErrorPkts Counter32, + t11FspfIfNbrState T11FspfInterfaceState, + t11FspfIfNbrDomainId FcDomainIdOrZero, + t11FspfIfNbrPortIndex Unsigned32, + t11FspfIfAdminStatus INTEGER, + t11FspfIfCreateTime T11FspfLastCreationTime, + t11FspfIfSetToDefault INTEGER, + + + + t11FspfIfLinkCostFactor Unsigned32, + t11FspfIfStorageType StorageType, + t11FspfIfRowStatus RowStatus +} + +t11FspfIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex that identifies the local + Fibre Channel interface for which this entry + contains FSPF information." + ::= { t11FspfIfEntry 1 } + +t11FspfIfHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Interval between the periodic HELLO messages sent on this + interface in this Fabric to verify the link health. Note + that this value must be same at both ends of a link in + this Fabric." + DEFVAL {20} + ::= { t11FspfIfEntry 2 } + +t11FspfIfDeadInterval OBJECT-TYPE + SYNTAX Unsigned32 (2..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum time for which no HELLO messages can be received + on this interface in this Fabric. After this time, the + interface is assumed to be broken and removed from the + database. Note that this value must be greater than the + HELLO interval specified on this interface in this Fabric." + DEFVAL {80} + ::= { t11FspfIfEntry 3 } + +t11FspfIfRetransmitInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The time after which an unacknowledged LSR is + retransmitted on this interface in this Fabric." + DEFVAL {5} + ::= { t11FspfIfEntry 4 } + +t11FspfIfInLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Update (LSU) packets received on + this interface in this Fabric. The last discontinuity + of this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 5 } + +t11FspfIfInLsaPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Acknowledgement (LSA) packets + received on this interface in this Fabric. The last + discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 6 } + +t11FspfIfOutLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Update (LSU) packets transmitted + on this interface in this Fabric. The last + discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 7 } + +t11FspfIfOutLsaPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Acknowledgement (LSA) packets + transmitted on this interface in this Fabric. The + last discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 8 } + + + + +t11FspfIfOutHelloPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of HELLO packets transmitted on this interface in + this Fabric. The last discontinuity of this counter is + indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 9 } + +t11FspfIfInHelloPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of HELLO packets received on this interface in + this Fabric. The last discontinuity of this counter is + indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 10 } + +t11FspfIfRetransmittedLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LSU packets that contained one or more + retransmitted LSRs, and that were transmitted on this + interface in this Fabric. The last discontinuity of + this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 11 } + +t11FspfIfInErrorPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of invalid FSPF control packets received on this + interface in this Fabric. The last discontinuity of + this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 12 } + +t11FspfIfNbrState OBJECT-TYPE + SYNTAX T11FspfInterfaceState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of FSPF's 'neighbor state machine', which is + the operational state of the interaction with the + + + + neighbor's interface that is connected to this interface. + + If the 't11FspfIfAdminStatus' is 'down', then this object + should be 'down'. If the 't11FspfIfAdminStatus' is 'up', + then this object's value depends on the state of FSPF's + 'neighbor state machine' on this interface in this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.7" + ::= { t11FspfIfEntry 13 } + +t11FspfIfNbrDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain Id of the neighbor in this Fabric." + ::= { t11FspfIfEntry 14 } + +t11FspfIfNbrPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index, as known by the neighbor, of the neighbor's + interface that is connected to this interface in this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.4." + ::= { t11FspfIfEntry 15 } + +t11FspfIfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of FSPF on this interface in this + Fabric, whenever 't11FspfAdminStatus' is 'up'. + If the value of this object is set to 'up', then FSPF is + enabled on this interface in this Fabric. If set to + 'down', then FSPF is disabled on this interface in this + Fabric. Note that the operational state of FSPF on an + interface is given by t11FspfIfNbrState." + DEFVAL {up} + ::= { t11FspfIfEntry 16 } + + + +t11FspfIfCreateTime OBJECT-TYPE + SYNTAX T11FspfLastCreationTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last + created." + ::= { t11FspfIfEntry 17 } + +t11FspfIfSetToDefault OBJECT-TYPE + SYNTAX INTEGER { + default(1), + noOp(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this value to 'default' changes the value of each + and every writable object in this row to its default + value. + + If all the configuration parameters have their default + values, and if the interface is down, then the row is + deleted automatically. + + No action is taken if this object is set to 'noOp'. + The value of the object, when read, is always 'noOp'." + ::= { t11FspfIfEntry 18 } + +t11FspfIfLinkCostFactor OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative factor used in calculating the cost + of sending a frame on this interface in this Fabric. + + The formula used to calculate the link cost is: + + Link Cost = S * (1.0625e12 / ifSpeed) + where: + S = (the value of this object / 100) + ifSpeed = interface speed (as defined in the IF-MIB). + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.5.5; and + IF-MIB, RFC 2863." + + + + DEFVAL { 100 } + ::= { t11FspfIfEntry 19 } + +t11FspfIfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FspfIfEntry 20 } + +t11FspfIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the conceptual row. + + This object can be used to create an entry only if there + is an entry in the t11FspfTable for the corresponding + Fabric, and if the interface is either isolated or is a + non-E_port. + + Setting this object to 'destroy' will typically fail; + to reverse the creation process, set the corresponding + instance of t11FspfIfSetToDefault to 'default'." + ::= { t11FspfIfEntry 21 } + +-- +-- t11FspfLsrTable + +t11FspfLsrTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfLsrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the database of all the latest + incarnations of the Link State Records (LSRs) that + are currently contained in the topology database, + for all interfaces on all Fabrics known to + locally managed switches. + + A Fabric's topology database contains the LSRs that + have been either issued or received by a local switch on + that Fabric, and that have not reached t11FspfMaxAge." + + + + ::= { t11FspfDatabase 1 } + +t11FspfLsrEntry OBJECT-TYPE + SYNTAX T11FspfLsrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This gives information for the most recent update of an + LSR. There is one entry for every LSR issued or received + by a locally managed switch (identified by + fcmInstanceIndex and fcmSwitchIndex) in a Fabric + (identified by t11FspfFabricIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex, + t11FspfLsrDomainId, t11FspfLsrType } + ::= { t11FspfLsrTable 1 } + +T11FspfLsrEntry ::= SEQUENCE { + t11FspfLsrDomainId FcDomainIdOrZero, + t11FspfLsrType T11FspfLsrType, + t11FspfLsrAdvDomainId FcDomainIdOrZero, + t11FspfLsrAge Unsigned32, + t11FspfLsrIncarnationNumber Unsigned32, + t11FspfLsrCheckSum Unsigned32, + t11FspfLsrLinks Unsigned32 +} + +t11FspfLsrDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Domain Id of the LSR owner in this Fabric. It is the + Link State Id of this LSR." + ::= { t11FspfLsrEntry 1 } + +t11FspfLsrType OBJECT-TYPE + SYNTAX T11FspfLsrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Type of this LSR." + ::= { t11FspfLsrEntry 2 } + +t11FspfLsrAdvDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Domain Id of the switch that is advertising the LSR on + the behalf of the switch owning it." + ::= { t11FspfLsrEntry 3 } + +t11FspfLsrAge OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this LSR was inserted into the database." + ::= { t11FspfLsrEntry 4 } + +t11FspfLsrIncarnationNumber OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The link state incarnation number of this LSR. This is + used to identify most recent instance of an LSR while + updating the topology database when an LSR is received. + The updating of an LSR includes incrementing its + incarnation number prior to transmission of the updated + LSR. So, the most recent LSR is the one with the + largest incarnation number." + ::= { t11FspfLsrEntry 5 } + +t11FspfLsrCheckSum OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The checksum of the LSR." + ::= { t11FspfLsrEntry 6 } + +t11FspfLsrLinks OBJECT-TYPE + SYNTAX Unsigned32 (0..65355) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of entries in the t11FspfLinkTable associated with + this LSR." + ::= { t11FspfLsrEntry 7 } +-- +-- t11FspfLinkTable + +t11FspfLinkNumber OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the t11FspfLinkTable." + ::= { t11FspfDatabase 3 } + +t11FspfLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of Inter-Switch Links and + their information that is part of an LSR, either + received or transmitted." + ::= { t11FspfDatabase 4 } + +t11FspfLinkEntry OBJECT-TYPE + SYNTAX T11FspfLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry that contains information about a link + contained in an LSR in this Fabric. An entry is created + whenever a new link appears in an (issued or received) + LSR. An entry is deleted when a link no longer appears + in an (issued or received) LSR." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex, + t11FspfLsrDomainId, t11FspfLsrType, t11FspfLinkIndex} + ::= { t11FspfLinkTable 1 } + +T11FspfLinkEntry ::= SEQUENCE { + t11FspfLinkIndex Unsigned32, + t11FspfLinkNbrDomainId FcDomainIdOrZero, + t11FspfLinkPortIndex Unsigned32, + t11FspfLinkNbrPortIndex Unsigned32, + t11FspfLinkType T11FspfLinkType, + t11FspfLinkCost Integer32 +} + +t11FspfLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index of this link." + ::= { t11FspfLinkEntry 1 } + +t11FspfLinkNbrDomainId OBJECT-TYPE + + + + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain Id of the neighbor on the other end of this + link in this Fabric." + ::= { t11FspfLinkEntry 2 } + +t11FspfLinkPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source E_port of this link, as indicated by the index + value in the LSR received from the switch identified by + 't11FspfLsrDomainId'." + ::= { t11FspfLinkEntry 3 } + +t11FspfLinkNbrPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination E_port of this link, as indicated by the + index value in the LSR received from the switch identified + by 't11FspfLinkNbrDomainId'." + ::= { t11FspfLinkEntry 4 } + +t11FspfLinkType OBJECT-TYPE + SYNTAX T11FspfLinkType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this link." + ::= { t11FspfLinkEntry 5 } + +t11FspfLinkCost OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cost of sending a frame on this link in this Fabric. + Link cost is calculated using the formula: + + link cost = S * (1.0625e12 / Signalling Rate) + + For issued LSRs, S is determined by the value of + t11FspfIfLinkCostFactor for the corresponding interface + + + + and Fabric." + ::= { t11FspfLinkEntry 6 } + +-- +-- Notification-related object + +t11FspfIfPrevNbrState OBJECT-TYPE + SYNTAX T11FspfInterfaceState + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The previous state of FSPF's Neighbor Finite State + Machine on an interface. + + This object is only used in the + 't11FspfNbrStateChangNotify' notification." + ::= { t11FspfConfiguration 3 } + +-- +-- Notifications + +t11FspfNbrStateChangNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, + t11FamConfigDomainId, + t11FspfIfNbrDomainId, + t11FspfIfNbrState, + t11FspfIfPrevNbrState + } + STATUS current + DESCRIPTION + "This notification signifies that there has been a change in + the state of an FSPF neighbor. This is generated when the + FSPF state changes to a terminal state, through either + regression (i.e., goes from Full to Init or Down) or + progression (i.e., from any state to Full). The value of + 't11FspfIfNbrState' is the state of the neighbor after the + change." + ::= { t11FspfNotifications 1 } + +-- +-- Conformance + +t11FspfMIBCompliances + OBJECT IDENTIFIER ::= { t11FspfConformance 1 } + +t11FspfMIBGroups + OBJECT IDENTIFIER ::= { t11FspfConformance 2 } + + + + +t11FspfMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the FSPF." + MODULE -- this module + MANDATORY-GROUPS { t11FspfGeneralGroup, + t11FspfIfGroup, + t11FspfDatabaseGroup, + t11FspfNotificationGroup } + + GROUP t11FspfIfCounterGroup + DESCRIPTION + "These counters, for particular FSPF-packet + occurrences on an interface, are mandatory only + for those systems that count such events." + + OBJECT t11FspfIfRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, so only + one value needs to be supported." + + OBJECT t11FspfIfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfNbrStateChangNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfMinLsArrival + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfMinLsInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT t11FspfSetToDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfHelloInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfDeadInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfRetransmitInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfSetToDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfLinkCostFactor + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FspfMIBCompliances 1 } + +-- Units of Conformance + +t11FspfGeneralGroup OBJECT-GROUP + OBJECTS { t11FspfMinLsArrival, + t11FspfMinLsInterval, + t11FspfLsRefreshTime, + + + + t11FspfMaxAge, + t11FspfMaxAgeDiscards, + t11FspfPathComputations, + t11FspfChecksumErrors, + t11FspfLsrs, + t11FspfCreateTime, + t11FspfAdminStatus, + t11FspfOperStatus, + t11FspfNbrStateChangNotifyEnable, + t11FspfSetToDefault, + t11FspfStorageType } + STATUS current + DESCRIPTION + "A collection of objects for displaying and + configuring FSPF parameters." + ::= { t11FspfMIBGroups 1 } + +t11FspfIfGroup OBJECT-GROUP + OBJECTS { t11FspfIfHelloInterval, + t11FspfIfDeadInterval, + t11FspfIfRetransmitInterval, + t11FspfIfNbrState, + t11FspfIfNbrDomainId, + t11FspfIfNbrPortIndex, + t11FspfIfAdminStatus, + t11FspfIfCreateTime, + t11FspfIfSetToDefault, + t11FspfIfLinkCostFactor, + t11FspfIfRowStatus, + t11FspfIfStorageType, + t11FspfIfPrevNbrState } + STATUS current + DESCRIPTION + "A collection of objects for displaying the FSPF + interface information." + ::= { t11FspfMIBGroups 2 } + +t11FspfIfCounterGroup OBJECT-GROUP + OBJECTS { t11FspfIfInLsuPkts, + t11FspfIfInLsaPkts, + t11FspfIfOutLsuPkts, + t11FspfIfOutLsaPkts, + t11FspfIfOutHelloPkts, + t11FspfIfInHelloPkts, + t11FspfIfRetransmittedLsuPkts, + t11FspfIfInErrorPkts } + STATUS current + DESCRIPTION + + + + "A collection of objects for counting particular + FSPF-packet occurrences on an interface." + ::= { t11FspfMIBGroups 3 } + +t11FspfDatabaseGroup OBJECT-GROUP + OBJECTS { t11FspfLsrAdvDomainId, + t11FspfLsrAge, + t11FspfLsrIncarnationNumber, + t11FspfLsrCheckSum, + t11FspfLsrLinks, + t11FspfLinkNbrDomainId, + t11FspfLinkPortIndex, + t11FspfLinkNbrPortIndex, + t11FspfLinkType, + t11FspfLinkCost, + t11FspfLinkNumber } + STATUS current + DESCRIPTION + "A collection of objects for displaying the FSPF + topology database information." + ::= { t11FspfMIBGroups 4 } +t11FspfNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FspfNbrStateChangNotify } + STATUS current + DESCRIPTION + "A collection of notifications for FSPF." + ::= { t11FspfMIBGroups 5 } +END diff --git a/mibs/ietf/T11-FC-NAME-SERVER-MIB b/mibs/ietf/T11-FC-NAME-SERVER-MIB new file mode 100644 index 0000000..e814df2 --- /dev/null +++ b/mibs/ietf/T11-FC-NAME-SERVER-MIB @@ -0,0 +1,1192 @@ +T11-FC-NAME-SERVER-MIB DEFINITIONS ::= BEGIN + +-- The MIB for management of the Fibre Channel functionality which +-- implements the Name Server function. + +IMPORTS + MODULE-IDENTITY,OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Integer32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + TruthValue, TEXTUAL-CONVENTION, + TimeStamp FROM SNMPv2-TC -- [RFC2579] + fcmInstanceIndex, FcPortType, + FcAddressIdOrZero, FcClasses, + FcNameIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB -- [FC-FAM-MIB] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [FC-FAM-MIB] + +t11FcNameServerMIB MODULE-IDENTITY + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the management of the functionality, + which realizes the FC-GS-4 requirements for Name + Server (NS). + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4438; see the RFC itself for + full legal notices." + + + + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4438." + ::= { mib-2 135 } + +t11NsNotifications OBJECT IDENTIFIER ::= { t11FcNameServerMIB 0 } +t11NsMIBObjects OBJECT IDENTIFIER ::= { t11FcNameServerMIB 1 } +t11NsMIBConformance OBJECT IDENTIFIER ::= { t11FcNameServerMIB 2 } +t11NsStatus OBJECT IDENTIFIER ::= { t11NsMIBObjects 1 } +t11NsStatistics OBJECT IDENTIFIER ::= { t11NsMIBObjects 2 } + +-- Textual Conventions + +T11NsGs4RejectReasonCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The FC-GS-4 reject reason code for a request. + + none(1) + - no error. + invalidCmdCode(2) + - request contained an invalid command code. + invalidVerLevel(3) + - request contained an invalid version number. + logicalError(4) + - there was a logical error. + invalidIUSize(5) + - the CT_IU (Information Unit) size was invalid. + logicalBusy(6) + - the module is busy. + protocolError(7) + - there was a protocol error. + unableToPerformCmdReq(8) + - the command specified in the req could not be + executed. The details of exactly what failed + will be in the corresponding reason code + explanation. + cmdNotSupported(9) + - the command is not supported. + serverNotAvailable(10) + - the identified server was not available. + couldNotEstabSession(11) + - a server session could not be established. + vendorError(12) + - a vendor-specific error." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 4.4.3." + + + + SYNTAX INTEGER { + none(1), + invalidCmdCode(2), + invalidVerLevel(3), + logicalError(4), + invalidIUSize(5), + logicalBusy(6), + protocolError(7), + unableToPerformCmdReq(8), + cmdNotSupported(9), + serverNotAvailable(10), + couldNotEstabSession(11), + vendorError(12) + } + +T11NsRejReasonCodeExpl ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reject reason code explanation: + + noAdditionalExplanation(1) + - no additional explanation. + portIdentifierNotRegistered(2) + - Port Identifier not registered. + portNameNotRegistered(3) + - Port Name not registered. + nodeNameNotRegistered(4) + - Node Name not registered. + classOfServiceNotRegistered(5) + - Class of Service not registered. + nodeIpAddressNotRegistered(6) + - 'IP Address (Node)' value not registered. + ipaNotRegistered(7) + - Initial Process Associator (IPA) not registered. + fc4TypeNotRegistered(8) + - FC-4 TYPEs not registered. + symbolicPortNameNotRegistered(9) + - Symbolic Port Name not registered. + symbolicNodeNameNotRegistered(10) + - Symbolic Node Name not registered. + portTypeNotRegistered(11) + - 'Port Type' not registered. + portIpAddressNotRegistered(12) + - 'IP Address (Port)' value not registered. + fabricPortNameNotRegistered(13) + - Fabric Port Name not registered. + hardAddressNotRegistered(14) + - 'Hard Address' not registered. + + + + fc4DescriptorNotRegistered(15) + - FC-4 Descriptor not registered. + fc4FeaturesNotRegistered(16) + - FC-4 Features not registered. + accessDenied(17) + - Access denied. + unacceptablePortIdentifier(18) + - Unacceptable Port Identifier. + databaseEmpty(19) + - Database is empty. + noObjectRegInSpecifiedScope(20) + - no object has been registered in the specified + scope. + domainIdNotPresent(21) + - Domain ID not present. + portIdNotPresent(22) + - Port number not present. + noDeviceAttached(23) + - No device attached. + authorizationException(24) + - Authorization Exception. + authenticationException(25) + - Authentication Exception. + databaseFull(26) + - Database full." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), sections 4.4.4 and 5.2.4" + SYNTAX INTEGER { + noAdditionalExplanation(1), + portIdentifierNotRegistered(2), + portNameNotRegistered(3), + nodeNameNotRegistered(4), + classOfServiceNotRegistered(5), + nodeIpAddressNotRegistered(6), + ipaNotRegistered(7), + fc4TypeNotRegistered(8), + symbolicPortNameNotRegistered(9), + symbolicNodeNameNotRegistered(10), + portTypeNotRegistered(11), + portIpAddressNotRegistered(12), + fabricPortNameNotRegistered(13), + hardAddressNotRegistered(14), + fc4DescriptorNotRegistered(15), + fc4FeaturesNotRegistered(16), + accessDenied(17), + unacceptablePortIdentifier(18), + databaseEmpty(19), + + + + noObjectRegInSpecifiedScope(20), + domainIdNotPresent(21), + portIdNotPresent(22), + noDeviceAttached(23), + authorizationException(24), + authenticationException(25), + databaseFull(26) + } + +-- +-- Information about a Name Server Information Subset +-- + +t11NsInfoSubsetTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsInfoSubsetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each Name Server + Information Subset within each Fibre Channel + management instance." + ::= { t11NsStatus 1 } + +t11NsInfoSubsetEntry OBJECT-TYPE + SYNTAX T11NsInfoSubsetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information about operations + on a particular Name Server Information Subset + within the Fibre Channel management instance + identified by fcmInstanceIndex." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex } + ::= { t11NsInfoSubsetTable 1 } + +T11NsInfoSubsetEntry ::= SEQUENCE { + t11NsInfoSubsetIndex Unsigned32, + t11NsInfoSubsetSwitchIndex Unsigned32, + t11NsInfoSubsetTableLastChange TimeStamp, + t11NsInfoSubsetNumRows Integer32, + t11NsInfoSubsetTotalRejects Counter32, + t11NsInfoSubsetRejReqNotfyEnable TruthValue +} + +t11NsInfoSubsetIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An arbitrary integer value that uniquely identifies + this Name Server Information Subset amongst all others + within the same Fibre Channel management instance. + + It is mandatory to keep this value constant between + restarts of the agent and to make every possible + effort to keep it constant across such restarts." + ::= { t11NsInfoSubsetEntry 1 } + +t11NsInfoSubsetSwitchIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is zero when operations + upon this Name Server Information Subset do not occur + at a local Fibre Channel switch; otherwise, it is + non-zero and identifies the local switch. + + The switch identified by a non-zero value of this + object is the same switch as is identified by the + same value of fcmSwitchIndex." + REFERENCE + "fcmSwitchIndex is defined in the FC-MGMT-MIB module" + ::= { t11NsInfoSubsetEntry 2 } + +t11NsInfoSubsetTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last update + to any entry in the t11NsRegTable with the same values + of fcmInstanceIndex and t11NsInfoSubsetIndex. This + includes creation of an entry, deletion of an entry, or + modification of an existing entry. If no such update + has taken place since the last re-initialization of the + local network management subsystem, then this object + contains a zero value." + ::= { t11NsInfoSubsetEntry 3 } + +t11NsInfoSubsetNumRows OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Nx_Ports currently registered in this + + + + Name Server Information Subset, i.e., the number of + rows in the t11NsRegTable with the same values of + fcmInstanceIndex and t11NsInfoSubsetIndex." + ::= { t11NsInfoSubsetEntry 4 } + +t11NsInfoSubsetTotalRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Requests for Name Server + functions that were rejected for inclusion in this + Name Server Information Subset, across all Fabrics + for which it contains information. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsInfoSubsetEntry 5 } + +t11NsInfoSubsetRejReqNotfyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether 't11NsRejectRegNotify' + notifications are generated by rejections of requests + to register information in this Name Server Information + Subset. + + If value of this object is 'true', then the + notification is generated when a request is rejected. + If it is 'false', the notification is not generated. + + The persistence of values of this object across an + agent reboot is implementation-dependent." + DEFVAL { false } + ::= { t11NsInfoSubsetEntry 6 } + +-- +-- Registered Port Information +-- + +t11NsRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains entries for all Nx_Ports registered + + + + in the identified Name Server Information Subsets across + all Fabrics for which such subsets contain information." + ::= { t11NsStatus 2 } + +t11NsRegEntry OBJECT-TYPE + SYNTAX T11NsRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about an Nx_Port + represented by t11NsRegPortIdentifier that is registered + with a Name Server Information Subset (identified by + t11NsInfoSubsetIndex) within the Fibre Channel management + instance (identified by fcmInstanceIndex) on the Fabric + (identified by t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier } + ::= { t11NsRegTable 1 } + +T11NsRegEntry ::= SEQUENCE { + t11NsRegFabricIndex T11FabricIndex, + t11NsRegPortIdentifier FcAddressIdOrZero, + t11NsRegPortName FcNameIdOrZero, + t11NsRegNodeName FcNameIdOrZero, + t11NsRegClassOfSvc FcClasses, + t11NsRegNodeIpAddress OCTET STRING, + t11NsRegProcAssoc OCTET STRING, + t11NsRegFc4Type OCTET STRING, + t11NsRegPortType FcPortType, + t11NsRegPortIpAddress OCTET STRING, + t11NsRegFabricPortName FcNameIdOrZero, + t11NsRegHardAddress FcAddressIdOrZero, + t11NsRegSymbolicPortName SnmpAdminString, + t11NsRegSymbolicNodeName SnmpAdminString, + t11NsRegFc4Features OCTET STRING + } + +t11NsRegFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to SW-3, only a single Fabric can + operate within a single physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + + + However, it is possible that future standards will define + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) physical + infrastructures. To allow for this future possibility, this + index value is used to uniquely identify a particular + Fabric within a physical infrastructure." + ::= { t11NsRegEntry 1 } + +t11NsRegPortIdentifier OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Address Identifier of this Nx_Port. + If no Port Identifier has been registered, then the + value of this object is the zero-length string." + ::= { t11NsRegEntry 2 } + +t11NsRegPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port_Name (WWN) of this Nx_Port. + If this object has not been registered, then its value + is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 3 } + +t11NsRegNodeName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Node_Name (WWN) of this Nx_Port. + If this object has not been registered, then its value + is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 4 } + +t11NsRegClassOfSvc OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The class of service indicator. This object is an + array of bits that contain a bit map of the classes of + service supported by the associated port. If a bit in + + + + this object is 1, it indicates that the class of + service is supported by the associated port. When a + bit is set to 0, it indicates that no class of service + is supported by this Nx_Port. + + If this object has not been not registered for a port, + then the instance for that port is not instantiated." + ::= { t11NsRegEntry 5 } + +t11NsRegNodeIpAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the node of this Nx_Port, in + network-byte order, either as a 32-bit IPv4 address or + a 128-bit IPv6 address. For the former, the leftmost 96 bits + (12 bytes) should contain x'00 00 00 00 00 00 00 00 00 00 FF + FF', and the IPv4 address should be present in the rightmost + 32 bits. + + Note that the value of this object is the IP address value + that is received in the FC-GS-4 message Register IP address + (Node) RIP_NN. It is not validated against any IP address + format. + + If no 'IP address (Node)' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4)" + DEFVAL { ''H } + ::= { t11NsRegEntry 6 } + +t11NsRegProcAssoc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fibre Channel Initial Process Associator (IPA). + + If no 'Initial Process Associator' has been registered, + then the value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4)" + DEFVAL { ''H } + ::= { t11NsRegEntry 7 } + + + +t11NsRegFc4Type OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 protocol types supported by this Nx_Port. + This is an array of 256 bits. Each bit in the array + corresponds to a Type value as defined by Fibre Channel + standards and contained in the Type field of the frame + header. The order of the bits in the 256-bit (32-byte) + value is the same as defined in FC-GS-4, section 5.2.3.8, + and represented in network-byte order. + + If no 'FC-4 TYPEs' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.8." + DEFVAL { ''H } + ::= { t11NsRegEntry 8 } + +t11NsRegPortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type of this port. + + If no 'Port Type' has been registered, then the value + of this object is unidentified and is represented by + the value 'unknown'." + DEFVAL { 1 } -- 'unknown', see [FC-MGMT] + ::= { t11NsRegEntry 9 } + +t11NsRegPortIpAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that Fibre Channel calls an 'IP Address (Port)' + that represents the IP address of the associated port. + The value is either in 32-bit IPv4 format or 128-bit IPv6 + format, in network-byte order. When this object contains an + IPv4 address, the leftmost 96 bits (12 bytes) should contain + x'00 00 00 00 00 00 00 00 00 00 FF FF'. The IPv4 address + should be present in the rightmost 32 bits. + + Note that the value of this object is the IP address value + + + + that is received in the FC-GS-4 message Register IP address + (Port) RIPP_ID. It is not validated against any IP address + format. + + If no 'IP address (Port)' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4, (FC-GS-4)" + DEFVAL {''H} + ::= { t11NsRegEntry 10 } + +t11NsRegFabricPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric Port Name (WWN) of the Fx_Port to which + this Nx_Port is attached. + + If no 'Fabric Port Name' has been registered, then the + value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 11 } + +t11NsRegHardAddress OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The format of this object is identical to the format + of Hard Address defined in the Discover Address (ADISC) + Extended Link Service (FC-FS). + + Hard Address is the 24-bit NL_Port identifier that + consists of: + - the 8-bit Domain_ID in the most significant byte + - the 8-bit Area_ID in the next most significant + byte + - the 8-bit AL-PA (Arbitrated Loop Physical Address) + which an NL_Port attempts acquire during FC-AL + initialization in the least significant byte. + + If the port is not an NL_Port, or if it is an NL_Port + but does not have a hard address, then all bits are + reported as zeros. + + If no 'Hard Address' has been registered, then the + + + + value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 12 } + +t11NsRegSymbolicPortName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name of this port. + + If no 'Symbolic Port Name' has been registered, then + the value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 13 } + +t11NsRegSymbolicNodeName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name of the node of this port. + + If no 'Symbolic Node Name' has been registered, then + the value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 14 } + + +t11NsRegFc4Features OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 Features associated with FC-4 Types on this + port encoded as a 128-byte value in network-byte order, + or the zero-length string if no 'FC-4 Features' have been + registered. + + Section 5.2.3.15 of FC-GS-4 is the authoritative + definition of the format of the 128-byte value, + i.e., if different, FC-GS-4 takes precedence over the + following description: + + The 128-byte value is an array of 4-bit values, one for + each FC-4 Type value, positioned as follows: the 5 most + significant bits of a Type value identify where it appears + within the 128-byte value, specifically, within which word: + + + + - Word 0 (of the 128-byte value) contains information + related to Types '00' through '07'; + - Word 1 contains information related to Types + '08' through 0F'; + - and so forth, up to Word 31, which contains + information related to Types 'F8' through 'FF'. + + The least significant of the eight 4-bit values in each + Word represents an FC-4 Type with 000 as its 3 least + significant bits, and most significant 4-bit value in + each Word represents an FC-4 Type with 111 as its 3 least + significant bits." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.15." + DEFVAL {''H} + ::= { t11NsRegEntry 15 } + + +-- +-- Registered FC-4 Descriptors +-- + +t11NsRegFc4DescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRegFc4DescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains entries for all FC-4 Descriptors + registered in the identified Name Server Information + Subsets across all Fabrics for which such subsets + contain information." + ::= { t11NsStatus 3 } + +t11NsRegFc4DescriptorEntry OBJECT-TYPE + SYNTAX T11NsRegFc4DescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the t11NsRegFc4DescriptorTable, + containing information about an FC-4 Descriptor + that is associated with a particular FC-4 Type + value. The particular FC-4 Descriptor was + registered by an Nx_Port (identified by + t11NsRegPortIdentifier) in a Name Server Information + Subset (identified by t11NsInfoSubsetIndex) within + the Fibre Channel management instance (identified by + fcmInstanceIndex) on the Fabric (identified by + + + + t11NsRegFabricIndex). + + If no FC-4 Descriptors have been registered + for a particular port, then there will be no + entries in this table for that port." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier, + t11NsRegFc4TypeValue } + ::= { t11NsRegFc4DescriptorTable 1 } + +T11NsRegFc4DescriptorEntry ::= SEQUENCE { + t11NsRegFc4TypeValue Unsigned32, + t11NsRegFc4Descriptor OCTET STRING +} + +t11NsRegFc4TypeValue OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value that identifies an FC-4 Type value + (representing a particular protocol type, as specified + in FC-FS) for which an FC-4 Descriptor has been + registered. + + An instance of this object contains a 'Type value' + that corresponds to a '1' bit in the value of the + t11NsRegFc4Type registered for the same port; + this correspondence is as specified in FC-GS-4." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.8, and + ANSI INCITS 373-2003, Fibre Channel - Framing and + Signaling (FC-FS), section 9.6, Table 29." + ::= { t11NsRegFc4DescriptorEntry 1 } + +t11NsRegFc4Descriptor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 Descriptor value that has been registered + for the particular port on the particular Fabric, and + for the FC-4 Type represented by the corresponding + value of t11NsRegFc4TypeIndex. + + The format of an FC-4 Descriptor is dependent on the + corresponding FC-4 Type value, but is represented in + + + + network-byte order." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.5.42" + ::= { t11NsRegFc4DescriptorEntry 2 } + + +-- +-- Name Server per-Fabric Statistics +-- + +t11NsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains per-Fabric state and statistics + for operations upon the identified Name Server + Information Subsets." + ::= { t11NsStatistics 1 } + +t11NsStatsEntry OBJECT-TYPE + SYNTAX T11NsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains state and statistics + for operations upon a Name Server Information Subset + (identified by t11NsInfoSubsetIndex) within the Fibre + Channel management instance (identified by + fcmInstanceIndex) on the Fabric (identified by + t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex } + ::= { t11NsStatsTable 1 } + +T11NsStatsEntry ::= SEQUENCE { + t11NsInGetReqs Counter32, + t11NsOutGetReqs Counter32, + t11NsInRegReqs Counter32, + t11NsInDeRegReqs Counter32, + t11NsInRscns Counter32, + t11NsOutRscns Counter32, + t11NsRejects Counter32, + t11NsDatabaseFull TruthValue + } + +t11NsInGetReqs OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Get Requests + received requesting information from this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 1 } + +t11NsOutGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Get Requests sent in + order to obtain information needed in this Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 2 } + +t11NsInRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Registration Requests + received to register information in the Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 3 } + +t11NsInDeRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) De-registration Requests + received to de-register information from this Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + + + + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 4 } + +t11NsInRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received RSCNs, indicating + Name Server-related changes relating to this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 5 } + +t11NsOutRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transmitted RSCNs, indicating + Name Server-related changes relating to this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 6 } + +t11NsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of CT_IU Requests for Name + Server functions on this Name Server Information + Subset on this Fabric that were rejected. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 7 } + +t11NsDatabaseFull OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the database containing this + + + + Name Server Information Subset is full. This object is + set to 'true' only if the Name Server is unable to allocate + space for a new entry for the corresponding Fabric, and it is + set to 'false' whenever an existing entry is deleted for the + corresponding Fabric." + ::= { t11NsStatsEntry 8 } + +-- +-- Reject information objects +-- + +t11NsRejectTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRejectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the most recent + Name Server Registration Request failures for various + ports on various Fabrics. + + If no information is available about the most recent + rejection of a Registration Request on a particular port + on a particular Fabric, then there will no entry in this + table for that port and Fabric. + + When a t11NsRejectRegNotify notification is sent for + such a Registration Request failure, the values of the + objects in the relevant entry of this table are updated + immediately prior to generating the notification." + ::= { t11NsStatus 4 } + +t11NsRejectEntry OBJECT-TYPE + SYNTAX T11NsRejectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the most recent + rejection of a request to register information in the Name + Server Information Subset (identified by + t11NsInfoSubsetIndex) within the Fibre Channel management + instance (identified by fcmInstanceIndex) for a particular + port (identified by t11NsRegPortIdentifier) on a particular + Fabric (identified by t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier } + ::= { t11NsRejectTable 1 } + +T11NsRejectEntry ::= SEQUENCE { + + + + t11NsRejectCtCommandString OCTET STRING, + t11NsRejectReasonCode T11NsGs4RejectReasonCode, + t11NsRejReasonCodeExp T11NsRejReasonCodeExpl, + t11NsRejReasonVendorCode OCTET STRING +} + +t11NsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Registration Request, + formatted as an octet string (in network byte + order) containing the CT_IU, as described in + Table 2 of [FC-GS-4] (including the preamble), + which was most recently rejected for the particular + Name Server Information Subset on the particular port + on the particular Fabric. + + This object contains the zero-length string + if and when the CT-IU's content is unavailable. + + When the length of this object is 255 octets, it + contains the first 255 octets of the CT-IU (in + network-byte order)." + ::= { t11NsRejectEntry 1 } + +t11NsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject reason code. This object + contains the reason code of the most recent Name + Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 2 } + +t11NsRejReasonCodeExp OBJECT-TYPE + SYNTAX T11NsRejReasonCodeExpl + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject reason code explanation. This + object contains the reason code explanation of the most + recent Name Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 3 } + + + +t11NsRejReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject vendor-specific code. This + object contains the vendor-specific code of the most + recent Name Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 4 } + + +-- +-- Notifications +-- + +t11NsRejectRegNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11NsRegPortName, t11NsRejectCtCommandString, + t11NsRejectReasonCode, t11NsRejReasonCodeExp, + t11NsRejReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever a request to + register information in a Name Server Information + Subset (for which the corresponding instance of + t11NsInfoSubsetRejReqNotfyEnable is 'true') is + rejected on a particular Fabric for a particular Nx_Port. + + The value of t11FamLocalSwitchWwn indicates the + WWN of the switch that received the request. + (If the WWN is unavailable, the value is set to + the zero-length string.) + + The value of t11NsRejectCtCommandString indicates + the rejected request, and the values of + t11NsRejectReasonCode, t11NsRejReasonCodeExp, and + t11NsRejReasonVendorCode indicate the reason for + the rejection. + + The value of t11NsRegPortName represents the Port Name + if it is able to be extracted out of the Registration + Request, or otherwise the value as currently registered + on the port." + ::= { t11NsNotifications 1 } + +-- +-- Conformance + + + +-- + +t11NsMIBCompliances OBJECT IDENTIFIER ::= {t11NsMIBConformance 1} +t11NsMIBGroups OBJECT IDENTIFIER ::= {t11NsMIBConformance 2} + +t11NsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Fibre Channel Name Server." + MODULE MANDATORY-GROUPS {t11NsDBGroup, + t11NsNotifyControlGroup, + t11NsNotifyGroup} + + OBJECT t11NsInfoSubsetRejReqNotfyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP t11NsRequestStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name Server + requests." + + GROUP t11NsRscnStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name + Server-related RSCNs." + + GROUP t11NsRejectStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name Server + rejects." + + ::= { t11NsMIBCompliances 1 } + +-- Units of conformance + +t11NsDBGroup OBJECT-GROUP + OBJECTS { t11NsInfoSubsetSwitchIndex, + t11NsInfoSubsetTableLastChange, + t11NsInfoSubsetNumRows, + t11NsRegPortName, + t11NsRegNodeName, + t11NsRegClassOfSvc, + + + + t11NsRegNodeIpAddress, + t11NsRegProcAssoc, + t11NsRegFc4Type, + t11NsRegPortType, + t11NsRegPortIpAddress, + t11NsRegFabricPortName, + t11NsRegHardAddress, + t11NsRegSymbolicPortName, + t11NsRegSymbolicNodeName, + t11NsRegFc4Features, + t11NsRegFc4Descriptor } + STATUS current + DESCRIPTION + "A collection of objects for monitoring the information + registered in a Name Server Information Subset." + ::= { t11NsMIBGroups 1 } + +t11NsRequestStatsGroup OBJECT-GROUP + OBJECTS { t11NsInGetReqs, + t11NsOutGetReqs, + t11NsInRegReqs, + t11NsInDeRegReqs, + t11NsDatabaseFull} + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics and state for Name Server requests." + ::= { t11NsMIBGroups 2 } + +t11NsRscnStatsGroup OBJECT-GROUP + OBJECTS { t11NsInRscns, + t11NsOutRscns } + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics for Name Server-related RSCNs." + ::= { t11NsMIBGroups 3 } + +t11NsRejectStatsGroup OBJECT-GROUP + OBJECTS { t11NsInfoSubsetTotalRejects, + t11NsRejects } + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics for rejects." + ::= { t11NsMIBGroups 4 } + +t11NsNotifyControlGroup OBJECT-GROUP + + + + OBJECTS { t11NsRejectCtCommandString, + t11NsRejectReasonCode, + t11NsRejReasonCodeExp, + t11NsRejReasonVendorCode, + t11NsInfoSubsetRejReqNotfyEnable } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects for monitoring + rejections of Name Server registrations." + ::= { t11NsMIBGroups 5 } + +t11NsNotifyGroup NOTIFICATION-GROUP + NOTIFICATIONS {t11NsRejectRegNotify } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring + rejections of Name Server registrations." + ::= { t11NsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-FC-ROUTE-MIB b/mibs/ietf/T11-FC-ROUTE-MIB new file mode 100644 index 0000000..bf2ec05 --- /dev/null +++ b/mibs/ietf/T11-FC-ROUTE-MIB @@ -0,0 +1,475 @@ +T11-FC-ROUTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + RowStatus, TimeStamp, + StorageType FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex, InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcAddressIdOrZero, FcDomainIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcRouteMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for configuring and displaying Fibre + Channel Route Information. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4625; see the RFC + itself for full legal notices." + REVISION "200608140000Z" + + + + DESCRIPTION + "Initial version of this MIB module, published as RFC4625." + + ::= {mib-2 144 } + +t11FcRouteNotifications OBJECT IDENTIFIER ::= { t11FcRouteMIB 0 } +t11FcRouteObjects OBJECT IDENTIFIER ::= { t11FcRouteMIB 1 } +t11FcRouteConformance OBJECT IDENTIFIER ::= { t11FcRouteMIB 2 } + +-- +-- Per-Fabric routing information +-- +t11FcRouteFabricTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRouteFabricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing Fibre Channel Routing information + that is specific to a Fabric." + ::= { t11FcRouteObjects 1 } + +t11FcRouteFabricEntry OBJECT-TYPE + SYNTAX T11FcRouteFabricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains routing information specific to a + particular Fabric on a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcRouteFabricIndex } + ::= { t11FcRouteFabricTable 1 } + +T11FcRouteFabricEntry ::= + SEQUENCE { + t11FcRouteFabricIndex T11FabricIndex, + t11FcRouteFabricLastChange TimeStamp + } + +t11FcRouteFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-3, only a single Fabric + + + + can operate within a physical infrastructure, and thus + the value of this Fabric Index will always be 1. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, index value is used to uniquely identify a + particular Fabric within a physical infrastructure." + ::= { t11FcRouteFabricEntry 1 } + +t11FcRouteFabricLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent time when any + corresponding row in the t11FcRouteTable was created, + modified, or deleted. A corresponding row in the + t11FcRouteTable is for the same management instance, + the same switch, and same Fabric as the row in this table. + + If no change has occurred since the last restart of the + management system, then the value of this object is 0." + ::= { t11FcRouteFabricEntry 2 } + +-- +-- Fibre Channel Routing table +-- +t11FcRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Routing tables for the + locally managed switches. This table lists all the + routes that are configured in and/or computed by any + local switch for any Fabric. + + Such routes are used by a switch to forward frames (of user + data) on a Fabric. The conceptual process is based on + extracting the Destination Fibre Channel Address Identifier + (D_ID) out of a received frame (of user data) and comparing + it to each entry of this table that is applicable to the + given switch and Fabric. Such comparison consists of first + performing a logical-AND of the extracted D_ID with a mask + (the value of t11FcRouteDestMask) and second comparing the + result of that 'AND' operation to the value of + t11FcRouteDestAddrId. A similar comparison is made of the + Source Fibre Channel Address Identifier (S_ID) of a frame + + + + against the t11FcRouteSrcAddrId and t11FcRouteSrcMask values + of an entry. If an entry's value of t11FcRouteInInterface + is non-zero, then a further comparison determines if the + frame was received on the appropriate interface. If all of + these comparisons for a particular entry are successful, + then that entry represents a potential route for forwarding + the received frame. + + For entries configured by a user, t11FcRouteProto has + the value 'netmgmt'; only entries of this type can be + deleted by the user." + ::= { t11FcRouteObjects 2 } + +t11FcRouteEntry OBJECT-TYPE + SYNTAX T11FcRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a route to a particular destination, + possibly from a particular subset of source addresses, + on a particular Fabric via a particular output interface + and learned in a particular manner." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcRouteFabricIndex, + t11FcRouteDestAddrId, t11FcRouteDestMask, + t11FcRouteSrcAddrId, t11FcRouteSrcMask, + t11FcRouteInInterface, t11FcRouteProto, + t11FcRouteOutInterface } + ::= { t11FcRouteTable 1 } +T11FcRouteEntry ::= + SEQUENCE { + t11FcRouteDestAddrId FcAddressIdOrZero, + t11FcRouteDestMask FcAddressIdOrZero, + t11FcRouteSrcAddrId FcAddressIdOrZero, + t11FcRouteSrcMask FcAddressIdOrZero, + t11FcRouteInInterface InterfaceIndexOrZero, + t11FcRouteProto INTEGER, + t11FcRouteOutInterface InterfaceIndex, + t11FcRouteDomainId FcDomainIdOrZero, + t11FcRouteMetric Unsigned32, + t11FcRouteType INTEGER, + t11FcRouteIfDown INTEGER, + t11FcRouteStorageType StorageType, + t11FcRouteRowStatus RowStatus + } + +t11FcRouteDestAddrId OBJECT-TYPE + SYNTAX FcAddressIdOrZero (SIZE (3)) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination Fibre Channel Address Identifier of + this route. A zero-length string for this field is + not allowed." + ::= { t11FcRouteEntry 1 } + +t11FcRouteDestMask OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mask to be logical-ANDed with a destination + Fibre Channel Address Identifier before it is compared + to the value in the t11FcRouteDestAddrId field. + Allowed values are 255.255.255, 255.255.0, or 255.0.0. + FSPF's definition generates routes to a Domain_ID, + so the mask for all FSPF-generated routes is 255.0.0. + The zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 2 } + +t11FcRouteSrcAddrId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source Fibre Channel Address Identifier of this + route. Note that if this object and the corresponding + instance of t11FcRouteSrcMask both have a value of 0.0.0, + then this route matches all source addresses. The + zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 3 } + +t11FcRouteSrcMask OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mask to be logical-ANDed with a source + Fibre Channel Address Identifier before it is compared + to the value in the t11FcRouteSrcAddrId field. Allowed + values are 255.255.255, 255.255.0, 255.0.0, or 0.0.0. + The zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 4 } + +t11FcRouteInInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the value of this object is non-zero, it is the + value of ifIndex that identifies the local + Fibre Channel interface through which a frame + must have been received in order to match with + this entry. If the value of this object is zero, + the matching does not require that the frame be + received on any specific interface." + ::= { t11FcRouteEntry 5 } + +t11FcRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other(1), + local(2), + netmgmt(3), + fspf(4) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mechanism via which this route was learned: + other(1) - not specified + local(2) - local interface + netmgmt(3)- static route + fspf(4) - Fibre Shortest Path First + " + ::= { t11FcRouteEntry 6 } + +t11FcRouteOutInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex that identifies the local + Fibre Channel interface through which the next hop + of this route is to be reached." + ::= { t11FcRouteEntry 7 } + +t11FcRouteDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The domain_ID of next hop switch. + + This object can have a value of zero if the value + + + + of t11FcRouteProto is 'local'." + ::= { t11FcRouteEntry 8 } + +t11FcRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The routing metric for this route. + + The use of this object is dependent on t11FcRouteProto." + ::= { t11FcRouteEntry 9 } + +t11FcRouteType OBJECT-TYPE + SYNTAX INTEGER { + local(1), + remote(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. + + local(1) - a route for which the next Fibre Channel + port is the final destination; + remote(2) - a route for which the next Fibre Channel + port is not the final destination." + DEFVAL {local} + ::= { t11FcRouteEntry 10 } + +t11FcRouteIfDown OBJECT-TYPE + SYNTAX INTEGER { + remove(1), + retain(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates what happens to + this route when the output interface (given by the + corresponding value of t11FcRouteOutInterface) is + operationally 'down'. If this object's value is 'retain', + the route is to be retained in this table. If this + object's value is 'remove', the route is to be removed + from this table." + DEFVAL { retain } + ::= { t11FcRouteEntry 11 } + + + + +t11FcRouteStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FcRouteEntry 12 } + +t11FcRouteRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + The only rows that can be deleted by setting this object to + 'destroy' are those for which t11FcRouteProto has the value + 'netmgmt'." + ::= { t11FcRouteEntry 13 } + +-- +-- Conformance +-- +t11FcRouteCompliances OBJECT IDENTIFIER + ::= { t11FcRouteConformance 1 } +t11FcRouteGroups OBJECT IDENTIFIER + ::= { t11FcRouteConformance 2 } + + +t11FcRouteCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the T11-FC-ROUTE-MIB. +-- +-- Note: The next four OBJECT clauses are for auxiliary objects, and the +-- SMIv2 does not permit inclusion of objects that are not accessible +-- in an OBJECT clause (see Sections 3.1 & 5.4.3 in STD 58, RFC 2580). +-- Thus, these four clauses cannot be included below in the normal +-- location for OBJECT clauses. +-- +-- OBJECT t11FcRouteSrcAddrId +-- SYNTAX FcAddressIdOrZero (SIZE (0)) +-- DESCRIPTION +-- 'Support is not required for routes that +-- match only a subset of possible source + + + +-- addresses.' +-- +-- OBJECT t11FcRouteSrcMask +-- SYNTAX FcAddressIdOrZero (SIZE (0)) +-- DESCRIPTION +-- 'Support is not required for routes that +-- match only a subset of possible source +-- addresses.' +-- +-- OBJECT t11FcRouteDestMask +-- DESCRIPTION +-- 'Support is mandatory only for FSPF-generated +-- routes. Since FSPF's definition generates +-- routes to a Domain_ID, the mask for all +-- FSPF-generated routes is 255.0.0. Thus, +-- support is only required for 255.0.0.' +-- +-- OBJECT t11FcRouteInInterface +-- SYNTAX InterfaceIndexOrZero (0) +-- DESCRIPTION +-- 'Support for routes specific to particular +-- source interfaces is not required.' + " + + MODULE -- this module + MANDATORY-GROUPS { t11FcRouteGroup } + + OBJECT t11FcRouteIfDown + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteStorageType + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcRouteCompliances 1 } +t11FcRouteGroup OBJECT-GROUP + OBJECTS { t11FcRouteFabricLastChange, + t11FcRouteDomainId, + t11FcRouteMetric, + t11FcRouteType, + t11FcRouteIfDown, + t11FcRouteStorageType, + t11FcRouteRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects for displaying and configuring + routes." + ::= { t11FcRouteGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-RSCN-MIB b/mibs/ietf/T11-FC-RSCN-MIB new file mode 100644 index 0000000..0af280f --- /dev/null +++ b/mibs/ietf/T11-FC-RSCN-MIB @@ -0,0 +1,799 @@ +T11-FC-RSCN-MIB DEFINITIONS ::= BEGIN + +-- The Fibre Channel RSCN MIB +-- +-- for the monitoring of registrations by Nx_Ports to receive +-- Registered State Change Notifications (RSCNs), and the +-- monitoring of RSCN usage. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TruthValue FROM SNMPv2-TC -- [RFC2579] + fcmInstanceIndex, fcmSwitchIndex, + FcNameIdOrZero, FcAddressIdOrZero FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcRscnMIB MODULE-IDENTITY + LAST-UPDATED "200701080000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of registrations + + + + by Nx_Ports to receive RSCNs (Registered State Change + Notifications) on a Fibre Channel Fabric, as defined + in FC-LS, and for the monitoring of RSCNs sent/received + or rejected in a Fibre Channel Fabric. + + Copyright (C) The Internet Society (2007). This version of + this MIB module is part of RFC 4983; see the RFC itself for + full legal notices." + REVISION "200701080000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4983." + ::= { mib-2 161 } + +t11FcRscnNotifications OBJECT IDENTIFIER ::= { t11FcRscnMIB 0 } +t11FcRscnObjects OBJECT IDENTIFIER ::= { t11FcRscnMIB 1 } +t11FcRscnConformance OBJECT IDENTIFIER ::= { t11FcRscnMIB 2 } +t11FcRscnRegistrations OBJECT IDENTIFIER ::= { t11FcRscnObjects 1 } +t11FcRscnStats OBJECT IDENTIFIER ::= { t11FcRscnObjects 2 } +t11FcRscnInformation OBJECT IDENTIFIER ::= { t11FcRscnObjects 3 } + + +-- State Change Registration Table + +t11FcRscnRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Nx_Ports that have registered to receive + RSCNs on all Fabrics configured on one or more Fibre + Channel switches." + ::= { t11FcRscnRegistrations 1 } + +t11FcRscnRegEntry OBJECT-TYPE + SYNTAX T11FcRscnRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about one Nx_Port that + has registered with a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex) for a + particular Fabric (identified by a t11FcRscnFabricIndex + value)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex, + t11FcRscnRegFcId } + ::= { t11FcRscnRegTable 1 } + +T11FcRscnRegEntry ::= SEQUENCE { + + + + t11FcRscnFabricIndex T11FabricIndex, + t11FcRscnRegFcId FcAddressIdOrZero, + t11FcRscnRegType BITS +} + +t11FcRscnFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies a particular + Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure. + + In a Fabric that has (or can have) only a single Fabric + operating within the physical infrastructure, the + value of this Fabric Index will always be 1." + REFERENCE + "ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006." + ::= { t11FcRscnRegEntry 1 } + +t11FcRscnRegFcId OBJECT-TYPE + SYNTAX FcAddressIdOrZero (SIZE (3)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Address Identifier of the + registering Nx_Port." + ::= { t11FcRscnRegEntry 2 } + +t11FcRscnRegType OBJECT-TYPE + SYNTAX BITS { + fromFabricController(0), + fromNxPort(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of registration + desired by the registering Nx_Port, one bit per type: + + 'fromFabricController' -- RSCNs generated for events + + + + detected by the Fabric Controller. + + 'fromNxPorts' -- RSCNs generated for events + detected by the affected Nx_Port." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 40." + ::= { t11FcRscnRegEntry 3 } + + +-- Statistics + +t11FcRscnStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSCN-related statistics on all Fabrics configured + on one or more Fibre Channel switches. + + Two levels of statistics are included: + + 1) counters at the message-type level, for: + - the number of SCRs received/rejected, + - the number of RSCNs sent/received/rejected, + - the number of SW_RSCNs sent/received/rejected. + + 2) counters of sent/received RSCNs per 'Event + Qualifier' value. Note that if and when several + RSCN events are coalesced into a single RSCN + message, then that message may be counted in + more than one of these counters." + ::= { t11FcRscnStats 1 } + +t11FcRscnStatsEntry OBJECT-TYPE + SYNTAX T11FcRscnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing statistics for a particular Fabric + (identified by a t11FcRscnFabricIndex value) on a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex } + ::= { t11FcRscnStatsTable 1 } + +T11FcRscnStatsEntry ::= SEQUENCE { + t11FcRscnInScrs Counter32, + + + + t11FcRscnInRscns Counter32, + t11FcRscnOutRscns Counter32, + t11FcRscnInSwRscns Counter32, + t11FcRscnOutSwRscns Counter32, + t11FcRscnScrRejects Counter32, + t11FcRscnRscnRejects Counter32, + t11FcRscnSwRscnRejects Counter32, + t11FcRscnInUnspecifiedRscns Counter32, + t11FcRscnOutUnspecifiedRscns Counter32, + t11FcRscnInChangedAttribRscns Counter32, + t11FcRscnOutChangedAttribRscns Counter32, + t11FcRscnInChangedServiceRscns Counter32, + t11FcRscnOutChangedServiceRscns Counter32, + t11FcRscnInChangedSwitchRscns Counter32, + t11FcRscnOutChangedSwitchRscns Counter32, + t11FcRscnInRemovedRscns Counter32, + t11FcRscnOutRemovedRscns Counter32 +} + +t11FcRscnInScrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCRs received from Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 1 } + + +t11FcRscnInRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RSCNs received from Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 2 } + +t11FcRscnOutRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RSCNs transmitted to Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 3 } + + +t11FcRscnInSwRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCNs received by this switch from + other switches on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 4 } + +t11FcRscnOutSwRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCNs transmitted by this switch + from other switches on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 5 } + +t11FcRscnScrRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCRs rejected by this switch on + this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 6 } + +t11FcRscnRscnRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of RSCNs rejected by this switch on this + Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 7 } + +t11FcRscnSwRscnRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCN rejected by this switch on this + Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 8 } + +t11FcRscnInUnspecifiedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0000'b + meaning 'Event is not specified'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 9 } + +t11FcRscnOutUnspecifiedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0000'b + meaning 'Event is not specified'. + + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 10 } + +t11FcRscnInChangedAttribRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0002'b + meaning 'Changed Port Attribute'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 11 } + +t11FcRscnOutChangedAttribRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0002'b + meaning 'Changed Port Attribute'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 12 } + +t11FcRscnInChangedServiceRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + + + + contained an RSCN Event Qualifier value of '0003'b + meaning 'Changed Service Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 13 } + +t11FcRscnOutChangedServiceRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0003'b + meaning 'Changed Service Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 14 } + +t11FcRscnInChangedSwitchRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0004'b + meaning 'Changed Switch Configuration'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 15 } + +t11FcRscnOutChangedSwitchRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0004'b + meaning 'Changed Switch Configuration'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 16 } + +t11FcRscnInRemovedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0005'b + meaning 'Removed Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 17 } + +t11FcRscnOutRemovedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0005'b + meaning 'Removed Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 18 } + + + + + +-- +-- Notification Control Table +-- +t11FcRscnNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to the rejection of an SCR or RSCN." + ::= { t11FcRscnInformation 1 } + +t11FcRscnNotifyControlEntry OBJECT-TYPE + SYNTAX T11FcRscnNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + concerning the rejection of RSCN/SCRs for a particular + Fabric (identified by the value of t11FcRscnFabricIndex) + by a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex } + ::= { t11FcRscnNotifyControlTable 1 } + +T11FcRscnNotifyControlEntry ::= SEQUENCE { + t11FcRscnIlsRejectNotifyEnable TruthValue, + t11FcRscnElsRejectNotifyEnable TruthValue, + t11FcRscnRejectedRequestString OCTET STRING, + t11FcRscnRejectedRequestSource FcNameIdOrZero, + t11FcRscnRejectReasonCode T11NsGs4RejectReasonCode, + t11FcRscnRejectReasonCodeExp OCTET STRING, + t11FcRscnRejectReasonVendorCode OCTET STRING +} + +t11FcRscnIlsRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if a t11FcRscnIlsRejectReqNotify + notification should be generated when this switch + rejects an SW_RSCN on this Fabric. + + Values written to this object should be retained + over agent reboots." + DEFVAL { false } + ::= { t11FcRscnNotifyControlEntry 1 } + + + +t11FcRscnElsRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if a t11FcRscnElsRejectReqNotify + notification should be generated when this switch + rejects an RSCN or SCR on this Fabric. + + Values written to this object should be retained + over agent reboots." + DEFVAL { false } + ::= { t11FcRscnNotifyControlEntry 2 } + +t11FcRscnRejectedRequestString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the RSCN, SCR, or SW_RSCN that + was most recently rejected by this switch on this Fabric. + The value is formatted as an octet string (in network + byte order) as described in the relevant Fibre Channel + standard, containing the payload (which is typically a + list of affected ports and error codes) of the rejected + RSCN or SCR as described in FC-LS, or the rejected + SW_RSCN as described in FC-SW-4. + + This object contains the zero-length string if and when + the RSCN/SCR/SW_RSCN payload is unavailable. When the + length of this object is 255 octets, it contains the + first 255 octets of the payload (in network byte order)." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Tables 34 & 39. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 45." + ::= { t11FcRscnNotifyControlEntry 3 } + +t11FcRscnRejectedRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the RSCN, SCR, or + SW_RSCN that was most recently rejected by this switch + on this Fabric." + + + + ::= { t11FcRscnNotifyControlEntry 4 } + +t11FcRscnRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Code of the most recent + rejection by this switch of an RSCN, SCR or SW_RSCN on + this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 146. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 5." + ::= { t11FcRscnNotifyControlEntry 5 } + +t11FcRscnRejectReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Code Explanation + of the most recent rejection by this switch of an + RSCN, SCR or SW_RSCN on this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 147. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 6." + ::= { t11FcRscnNotifyControlEntry 6 } + +t11FcRscnRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Vendor Specific + Code of the most recent rejection by this switch + of an RSCN, SCR or SW_RSCN on this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 148. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Section 6.1.3." + + + + ::= { t11FcRscnNotifyControlEntry 7 } + + +-- Notifications + +t11FcRscnElsRejectReqNotify NOTIFICATION-TYPE + OBJECTS { t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated when a switch rejects + an SCR or RSCN. + + The value of t11FcRscnRejectedRequestString indicates the + binary content of the rejected request if available, or + the zero-length string otherwise. The source of the + rejected request is given by t11FcRscnRejectedRequestSource, + and the reason for rejection is given by the values of + t11FcRscnRejectReasonCode, t11FcRscnRejectReasonCodeExp + and t11FcRscnRejectReasonVendorCode." + ::= { t11FcRscnNotifications 1 } + +t11FcRscnIlsRejectReqNotify NOTIFICATION-TYPE + OBJECTS { t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated when a switch rejects + an SW_RSCN. + + The value of t11FcRscnRejectedRequestString indicates the + binary content of the rejected request if available, or + the zero-length string otherwise. The source of the + rejected request is given by t11FcRscnRejectedRequestSource, + and the reason for rejection is given by the values of + t11FcRscnRejectReasonCode, t11FcRscnRejectReasonCodeExp + and t11FcRscnRejectReasonVendorCode." + ::= { t11FcRscnNotifications 2 } + +-- Conformance +t11FcRscnCompliances OBJECT IDENTIFIER ::= { t11FcRscnConformance 1 } +t11FcRscnGroups OBJECT IDENTIFIER ::= { t11FcRscnConformance 2 } + + + +t11FcRscnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement + this MIB." + MODULE + MANDATORY-GROUPS { t11FcRscnRegistrationGroup, + t11FcRscnNotifyControlGroup, + t11FcRscnNotifyGroup } + + GROUP t11FcRscnStatsGroup + DESCRIPTION + "These counters, containing RSCN-related statistics, are + mandatory only for those systems that count such events." + + OBJECT t11FcRscnIlsRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRscnElsRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcRscnCompliances 1 } + + +-- Units of conformance + +t11FcRscnRegistrationGroup OBJECT-GROUP + OBJECTS { t11FcRscnRegType } + STATUS current + DESCRIPTION + "A collection of objects for monitoring RSCN + registrations." + ::= { t11FcRscnGroups 1 } + +t11FcRscnStatsGroup OBJECT-GROUP + OBJECTS { t11FcRscnInScrs, + t11FcRscnInRscns, + t11FcRscnOutRscns, + t11FcRscnInSwRscns, + t11FcRscnOutSwRscns, + t11FcRscnScrRejects, + t11FcRscnRscnRejects, + t11FcRscnSwRscnRejects, + t11FcRscnInUnspecifiedRscns, + + + + t11FcRscnOutUnspecifiedRscns, + t11FcRscnInChangedAttribRscns, + t11FcRscnOutChangedAttribRscns, + t11FcRscnInChangedServiceRscns, + t11FcRscnOutChangedServiceRscns, + t11FcRscnInChangedSwitchRscns, + t11FcRscnOutChangedSwitchRscns, + t11FcRscnInRemovedRscns, + t11FcRscnOutRemovedRscns + } + STATUS current + DESCRIPTION + "A collection of objects for collecting RSCN-related + statistics." + ::= { t11FcRscnGroups 2 } + +t11FcRscnNotifyControlGroup OBJECT-GROUP + OBJECTS { t11FcRscnIlsRejectNotifyEnable, + t11FcRscnElsRejectNotifyEnable, + t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode + } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects." + ::= { t11FcRscnGroups 3 } + +t11FcRscnNotifyGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FcRscnIlsRejectReqNotify, + t11FcRscnElsRejectReqNotify + } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring + ILS and ELS rejections by the RSCN module." + ::= { t11FcRscnGroups 4 } + +END diff --git a/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB b/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB new file mode 100644 index 0000000..55d47b8 --- /dev/null +++ b/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB @@ -0,0 +1,553 @@ +T11-FC-VIRTUAL-FABRIC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + RowStatus, StorageType FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, FcNameIdOrZero, + fcmPortEntry, fcmSwitchEntry + FROM FC-MGMT-MIB -- [RFC4044] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcVirtualFabricMIB MODULE-IDENTITY + LAST-UPDATED "200611100000Z" + ORGANIZATION "IETF IMSS (Internet and Management Support + for Storage) Working Group" + CONTACT-INFO + " + Scott Kipp + McDATA Corporation + Tel: +1 720 558-3452 + E-mail: scott.kipp@mcdata.com + Postal: 4 McDATA Parkway + Broomfield, CO USA 80021 + + G D Ramkumar + SnapTell, Inc. + Tel: +1 650-326-7627 + E-mail: gramkumar@stanfordalumni.org + Postal: 2741 Middlefield Rd, Suite 200 + Palo Alto, CA USA 94306 + + Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + " + + DESCRIPTION + "This module defines management information specific to + Fibre Channel Virtual Fabrics. A Virtual Fabric is a + + + + Fabric composed of partitions of switches, links and + N_Ports with a single Fabric management domain, Fabric + Services and independence from other Virtual Fabrics. + + Copyright (C) The IETF Trust (2006). This version of + this MIB module is part of RFC 4747; see the RFC itself for + full legal notices." + REVISION "200611100000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4747." + ::= { mib-2 147 } + +t11vfObjects OBJECT IDENTIFIER ::= { t11FcVirtualFabricMIB 1 } +t11vfConformance OBJECT IDENTIFIER ::= { t11FcVirtualFabricMIB 2 } + +--******************************** +-- MIB object definitions +-- + +t11vfCoreSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfCoreSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of core switches supported by the current + management entity." + ::= { t11vfObjects 1 } + +t11vfCoreSwitchEntry OBJECT-TYPE + SYNTAX T11vfCoreSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents one core switch." + INDEX { fcmInstanceIndex, t11vfCoreSwitchSwitchName } + ::= { t11vfCoreSwitchTable 1} + +T11vfCoreSwitchEntry ::= + SEQUENCE { + t11vfCoreSwitchSwitchName FcNameIdOrZero, + t11vfCoreSwitchMaxSupported Unsigned32, + t11vfCoreSwitchStorageType StorageType + } + +t11vfCoreSwitchSwitchName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The Core Switch_Name (WWN) of this Core Switch." + ::= { t11vfCoreSwitchEntry 1 } + +t11vfCoreSwitchMaxSupported OBJECT-TYPE + SYNTAX Unsigned32 (1..4095) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "In switches that do not support Virtual Fabrics, + this object has the value of 1. If Virtual Fabrics + are supported, this object is the maximum number of + Virtual Fabrics supported by the Core Switch. For + the purpose of this count, the Control VF_ID is + ignored." + ::= { t11vfCoreSwitchEntry 2 } + +t11vfCoreSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfCoreSwitchEntry 3 } + +-- Virtual Switch table + +t11vfVirtualSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfVirtualSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Virtual Switches. When one Core Switch + provides switching functions for multiple Virtual Fabrics, + that Core Switch is modeled as containing multiple + Virtual Switches, one for each Virtual Fabric. This table + contains one row for every Virtual Switch on every Core + Switch. This table augments the basic switch information in + the fcmSwitchTable Table in the FC-MGMT-MIB." + REFERENCE + "fcmSwitchTable is defined in the FC-MGMT-MIB [RFC4044]." + ::= { t11vfObjects 2 } + +t11vfVirtualSwitchEntry OBJECT-TYPE + SYNTAX T11vfVirtualSwitchEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry of the Virtual Switch table. Each row is for a + Virtual Switch. + + This table augments the fcmSwitchTable, i.e., every entry + in this table has a one-to-one correspondence with an + entry in the fcmSwitchTable. At the time when the + fcmSwitchTable was defined, it applied to physical + switches. With the definition and usage of virtual + switches, fcmSwitchTable now applies to virtual switches + as well as physical switches, and (in contrast to physical + switches) it is appropriate to provide the capability for + virtual switches to be created via remote management + applications, e.g., via SNMP. + + So, this entry contains a RowStatus object (to allow the + creation of a virtual switch), as well as a StorageType + object. Obviously, if a row is created/deleted in this + table, the corresponding row in the fcmSwitchTable will + be created/deleted." + REFERENCE + "fcmSwitchEntry is defined in the FC-MGMT-MIB module + [RFC4044]." + AUGMENTS { fcmSwitchEntry } + ::= { t11vfVirtualSwitchTable 1} + +T11vfVirtualSwitchEntry ::= + SEQUENCE { + t11vfVirtualSwitchVfId T11FabricIndex, + t11vfVirtualSwitchCoreSwitchName FcNameIdOrZero, + t11vfVirtualSwitchRowStatus RowStatus, + t11vfVirtualSwitchStorageType StorageType + } + +t11vfVirtualSwitchVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VF_ID of the Virtual Fabric for which this virtual + switch performs its switching function. The Control + VF_ID is implicitly enabled and is not set. + Communication with the Control VF_ID is required." + REFERENCE + "FC-SW-4, REV 7.5, section 12.2" + ::= { t11vfVirtualSwitchEntry 1 } + + + + +t11vfVirtualSwitchCoreSwitchName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Core Switch_Name (WWN) of the Core Switch that + contains this Virtual Switch." + REFERENCE + "FC-SW-4, REV 7.5, section 12.2." + ::= { t11vfVirtualSwitchEntry 2 } + +t11vfVirtualSwitchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row." + ::= { t11vfVirtualSwitchEntry 3 } + +t11vfVirtualSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfVirtualSwitchEntry 4 } + +-- Port table + +t11vfPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Port attributes related to Virtual Fabrics." + ::= { t11vfObjects 3 } + +t11vfPortEntry OBJECT-TYPE + SYNTAX T11vfPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a physical Port on a switch. + Switches that support Virtual Fabrics would add + + + + these four additional columns to the fcmPortEntry + row." + REFERENCE + "fcmPortEntry is defined in the FC-MGMT-MIB module." + AUGMENTS { fcmPortEntry } + ::= { t11vfPortTable 1} + +T11vfPortEntry ::= + SEQUENCE { + t11vfPortVfId T11FabricIndex, + t11vfPortTaggingAdminStatus INTEGER, + t11vfPortTaggingOperStatus INTEGER, + t11vfPortStorageType StorageType + } + +t11vfPortVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Port VF_ID assigned to this Port. The Port VF_ID is the + default Virtual Fabric that is assigned to untagged frames + arriving at this Port. The Control VF_ID is implicitly + enabled and is not set. Communication with the Control + VF_ID is required." + REFERENCE + "FC-SW-4, REV 7.5, section 12.1" + DEFVAL {1} + ::= { t11vfPortEntry 1 } + +t11vfPortTaggingAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2), + auto(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the administrative status + of Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) To disable Virtual Fabric tagging on this + Port. + + on(2) To enable Virtual Fabric tagging on this + + + + Port if the attached Port doesn't + prohibit it. + + auto(3) To enable Virtual Fabric tagging if the + peer requests it." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + ::= { t11vfPortEntry 2 } + + t11vfPortTaggingOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to report the operational status of + Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) Virtual Fabric tagging is disabled on this + Port. + + on(2) Virtual Fabric tagging is enabled on this + Port." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + ::= { t11vfPortEntry 3 } + +t11vfPortStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row, and for the + corresponding row in the augmented fcmPortTable. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfPortEntry 4 } + + +-- Locally Enabled Table + +t11vfLocallyEnabledTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF T11vfLocallyEnabledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table for assigning and reporting operational status of + locally-enabled Virtual Fabric IDs to Ports. The set of + Virtual Fabrics operational on the Port is the bit-wise + 'AND' of the set of locally-enabled VF_IDs of this Port + and the locally-enabled VF_IDs of the attached Port." + ::= { t11vfObjects 4 } + +t11vfLocallyEnabledEntry OBJECT-TYPE + SYNTAX T11vfLocallyEnabledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for each locally-enabled VF_ID on + each Port." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + INDEX { t11vfLocallyEnabledPortIfIndex, t11vfLocallyEnabledVfId } + + ::= { t11vfLocallyEnabledTable 1} + +T11vfLocallyEnabledEntry ::= + SEQUENCE { + t11vfLocallyEnabledPortIfIndex InterfaceIndex, + t11vfLocallyEnabledVfId T11FabricIndex, + t11vfLocallyEnabledOperStatus INTEGER, + t11vfLocallyEnabledRowStatus RowStatus, + t11vfLocallyEnabledStorageType StorageType + } + +t11vfLocallyEnabledPortIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the ifIndex that identifies the Port." + ::= { t11vfLocallyEnabledEntry 1 } + +t11vfLocallyEnabledVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-enabled VF_ID on this Port." + ::= { t11vfLocallyEnabledEntry 2 } + + + + +t11vfLocallyEnabledOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to report the operational status of + Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) Virtual Fabric tagging is disabled on this + Port. + + on(2) Virtual Fabric tagging is enabled on this + Port." + REFERENCE + "FC-SW-4, REV 7.3, section 12.4" + ::= { t11vfLocallyEnabledEntry 3 } + +t11vfLocallyEnabledRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + When a row in this table is in 'active(1)' state, + no object in that row can be modified except + t11vfLocallyEnabledRowStatus and + t11vfLocallyEnabledStorageType." + ::= { t11vfLocallyEnabledEntry 4 } + +t11vfLocallyEnabledStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfLocallyEnabledEntry 5 } + +--******************************** + + + +-- Conformance Section +-- + +t11vfMIBCompliances OBJECT IDENTIFIER ::= { t11vfConformance 1 } +t11vfMIBGroups OBJECT IDENTIFIER ::= { t11vfConformance 2 } + +t11vfMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for compliance to the + Fibre Channel Virtual Fabric MIB." + MODULE -- this module + MANDATORY-GROUPS { t11vfGeneralGroup } + + OBJECT t11vfCoreSwitchMaxSupported + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfCoreSwitchStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchVfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfPortVfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfPortTaggingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT t11vfPortStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfLocallyEnabledRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfLocallyEnabledStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11vfMIBCompliances 1 } + +-- Units of conformance + + t11vfGeneralGroup OBJECT-GROUP + OBJECTS { t11vfCoreSwitchMaxSupported, + t11vfVirtualSwitchVfId, + t11vfVirtualSwitchCoreSwitchName, + t11vfVirtualSwitchRowStatus, + t11vfPortVfId, + t11vfPortTaggingAdminStatus, + t11vfLocallyEnabledOperStatus, + t11vfPortTaggingOperStatus, + t11vfLocallyEnabledRowStatus, + t11vfCoreSwitchStorageType, + t11vfVirtualSwitchStorageType, + t11vfPortStorageType, + t11vfLocallyEnabledStorageType + + } + STATUS current + DESCRIPTION + "A collection of objects for monitoring and + configuring Virtual Fabrics in a Fibre Channel switch." + ::= { t11vfMIBGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-ZONE-SERVER-MIB b/mibs/ietf/T11-FC-ZONE-SERVER-MIB new file mode 100644 index 0000000..1e9c3ea --- /dev/null +++ b/mibs/ietf/T11-FC-ZONE-SERVER-MIB @@ -0,0 +1,2807 @@ +T11-FC-ZONE-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, + Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, RowStatus, + StorageType, + TruthValue, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcNameIdOrZero, + FcDomainIdOrZero FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode + FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB -- [RFC4439] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + +t11ZoneServerMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of Fibre Channel Zoning + Servers, both for Basic Zoning Management and for Enhanced + + + Zoning Management, as defined in the FC-GS-5 specification. + + FC-GS-5 defines (in-band) management operations for + manipulating the Zone Set Database, some for use in Basic + mode (e.g., 'Add Zone Set (AZS)', etc.), and some for use in + Enhanced mode (e.g., Create Zone Set (CZS)', etc.). When + Enhanced Zoning Management is in use, FC-GS-5 requires that + these in-band management operations be rejected unless they + are issued within the context of a GS-5 server session. The + use of a server session ensures serialized access to the + Zoning Database since the Fabric lock for the Zone Server + must be obtained as a part of establishing the server + session to the Zone Server. + + Thus, if and when this MIB is used for Enhanced Zoning + Management, SNMP SetRequests that request the modification + of zoning definitions must be serialized with respect to + the GS-5 requests to modify the Zoning Database. This is + achieved by requiring that an SNMP management application + must first obtain the Fabric lock for the Zone Server + before attempting to modify any zoning definitions. The + companion T11-FC-FABRIC-LOCK-MIB module is defined as a means + of obtaining the Fabric lock for the Zone Server (or any + other server). + + In Enhanced Zoning Management, a Zone Server keeps track of + changes requested in the zoning definitions, but does not + update its Zone Set Database unless there is (and until + there is) a 'commit' operation. To model this behavior, + this MIB module assumes that a Zone Server (in Enhanced + mode) takes a snapshot of its Zone Set Database as and when + the Fabric lock (for the Zone Server application) is + obtained; this snapshot is used to create what is herein + called the 'copy' database. It is this 'copy' database + that is then updated by SNMP SetRequests (while the Fabric + is locked). If and when a 'commit' operation is requested + (while the Fabric is still locked), the 'copy' database is + then used to overwrite the previously committed contents of + the Zone Set Database, and the new Zone Set Database is + distributed to all other switches in the Fabric. When the + lock is released, any changes made that were not + 'committed' are discarded. + + When this MIB is used for Basic Zoning Management, the same + set of MIB objects as used for Enhanced mode are used to + make changes to the Database of a Zone Server on a + particular switch, but the changes take immediate effect at + that switch without an explicit commit. The distribution of + + + + those changes to Zone Servers on other switches in the + Fabric is subsequently requested through the use of a + separate set of MIB objects. + + The management information specified in this MIB module + includes the Zoning Database for each of one or more Fibre + Channel Fabrics. A Zoning Database is a combination of the + Fabric's Zone Set Database and its Active Zone Set. The + Active Zone Set is the Zone Set currently enforced by the + Fabric; a Zone Set Database is a database of the Zone Sets + available to be activated within a Fabric. All the MIB + objects representing a Zone Set Database are modifiable at + any time (irrespective of the value of any RowStatus + object), whereas all objects representing the Active Zone + Set are always read-only (except to deactivate it and/or + activate a different one). + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 4936; see the RFC + itself for full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4936." + ::= { mib-2 160 } + +t11ZsMIBObjects OBJECT IDENTIFIER ::= { t11ZoneServerMIB 1 } +t11ZsMIBConformance OBJECT IDENTIFIER ::= { t11ZoneServerMIB 2 } +t11ZsMIBNotifications OBJECT IDENTIFIER ::= { t11ZoneServerMIB 0 } +t11ZsConfiguration OBJECT IDENTIFIER ::= { t11ZsMIBObjects 1 } +t11ZsStatistics OBJECT IDENTIFIER ::= { t11ZsMIBObjects 2 } + +-- Textual Conventions + +T11ZsZoneMemberType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "x" + STATUS current + DESCRIPTION + "Represents the addressing mechanism by + which a member is identified: + + 01 - N_Port_Name + 02 - Domain_ID and physical port + 03 - N_Port_ID + 04 - Node_Name + 05 - Alias Name + 06 - F_Port_Name + E0-FF (hex) - Vendor Specific. + " + + + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.6." + SYNTAX Unsigned32 (0..255) + +T11ZsRejectReasonExplanation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reason code explanation when rejecting a + Zone Server request: + + 'other' + - e.g., a reason code assigned too recently + to be included in this version of this MIB + 'noAdditionalExplanation' + - there is no additional explanation + 'zonesNotSupported' + - Zones are not supported + 'zoneSetNameUnknown' + - Zone Set name is not known + 'noZoneSetActive' + - no Zone Set is currently active + 'zoneNameUnknown' + - Zone name is unknown + 'zoneStateUnknown' + - state of the Zone is not known + 'incorrectPayloadLen' + - payload length is not correct + 'tooLargeZoneSet' + - Zone Set is larger than permitted size + 'deactivateZoneSetFailed' + - deactivation of Zone Set failed + 'reqNotSupported' + - request is not supported + 'capabilityNotSupported' + - capability is not supported + 'zoneMemberIDTypeNotSupp' + - Zone Member Identifier Type is not supported + 'invalidZoneSetDefinition' + - Zone Set definition is invalid + 'enhancedZoningCmdsNotSupported' + - Enhanced Zoning commands are not supported + 'zoneSetExists' + - Zone Set already exists + 'zoneExists' + - Zone already exists + 'aliasExists' + - Zone Alias already exists + + + 'zoneSetUnknown' + - Zone Set unknown + 'zoneUnknown' + - Zone unknown + 'aliasUnknown' + - Zone Alias unknown + 'zoneAliasTypeUnknown' + - unknown Zone attribute type + 'unableEnhancedMode' + - Fabric unable to work in Enhanced Mode + 'basicZoningCmdsNotSupported' + - Basic Zoning commands are not supported + 'zoneAttribObjectExists' + - Zone attribute object already exists + 'zoneAttribObjectUnknown' + - Zone attribute object unknown + 'requestInProcess' + - request in process + 'cmitInProcess' + - CMIT in process + 'hardEnforcementFailed' + - hard enforcement failed + 'unresolvedReferences' + - unresolved references in the Zone Set Database + 'consistencyChecksFailed' + - consistency checks failed." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.9." + SYNTAX INTEGER { + other(1), + noAdditionalExplanation(2), + zonesNotSupported(3), + zoneSetNameUnknown(4), + noZoneSetActive(5), + zoneNameUnknown(6), + zoneStateUnknown(7), + incorrectPayloadLen(8), + tooLargeZoneSet(9), + deactivateZoneSetFailed(10), + reqNotSupported(11), + capabilityNotSupported(12), + zoneMemberIDTypeNotSupp(13), + invalidZoneSetDefinition(14), + enhancedZoningCmdsNotSupported(15), + zoneSetExists(16), + zoneExists(17), + aliasExists(18), + + + zoneSetUnknown(19), + zoneUnknown(20), + aliasUnknown(21), + zoneAliasTypeUnknown(22), + unableEnhancedMode(23), + basicZoningCmdsNotSupported(24), + zoneAttribObjectExists(25), + zoneAttribObjectUnknown(26), + requestInProcess(27), + cmitInProcess(28), + hardEnforcementFailed(29), + unresolvedReferences(30), + consistencyChecksFailed(31) + } + +T11ZoningName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This datatype is a refinement of an SnmpAdminString, + and is used to represent a name stored in a Fibre + Channel Zoning Data Structure. + + The value begins with an ASCII letter (upper or lower + case) followed by zero or more characters from the set: + lower case letters, upper case letters, numbers, and + the symbols ($-^_). + + The value does not include fill bytes." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.1." + SYNTAX OCTET STRING (SIZE (1..64)) + +-- +-- The table of Zone Servers +-- + +t11ZsServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the Zone Servers + on each Fabric in one or more switches, and providing + the capability to perform operations on their Zone + Server databases." + ::= { t11ZsConfiguration 1 } + + + +t11ZsServerEntry OBJECT-TYPE + SYNTAX T11ZsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information specific to a + Zone Server for a particular Fabric (identified by + the value of t11ZsServerFabricIndex) on a particular + switch (identified by values of fcmInstanceIndex + and fcmSwitchIndex). + + The persistence across reboots of writable values in + a row of this table is given by the instance of + t11ZsServerDatabaseStorageType in that row." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsServerTable 1 } + +T11ZsServerEntry ::= SEQUENCE { + t11ZsServerFabricIndex T11FabricIndex, + t11ZsServerCapabilityObject BITS, + t11ZsServerDatabaseStorageType StorageType, + t11ZsServerDistribute INTEGER, + t11ZsServerCommit INTEGER, + t11ZsServerResult INTEGER, + t11ZsServerReasonCode T11NsGs4RejectReasonCode, + t11ZsServerReasonCodeExp OCTET STRING, + t11ZsServerReasonVendorCode OCTET STRING, + t11ZsServerLastChange TimeStamp, + t11ZsServerHardZoning TruthValue, + t11ZsServerReadFromDatabase INTEGER, + t11ZsServerOperationMode INTEGER, + t11ZsServerChangeModeResult INTEGER, + t11ZsServerDefaultZoneSetting INTEGER, + t11ZsServerMergeControlSetting INTEGER, + t11ZsServerDefZoneBroadcast TruthValue +} + +t11ZsServerFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric." + ::= { t11ZsServerEntry 1 } + +t11ZsServerCapabilityObject OBJECT-TYPE + + + + SYNTAX BITS { + enhancedMode(0), + zoneSetDb(1), + activateDirect(2), + hardZoning(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmap represents the capability of the switch + on this Fabric: + + 'enhancedMode' - able to support enhanced Zoning + mode of operation. + + 'zoneSetDb' - able to support maintaining of + a Zone Set Database. + + 'activateDirect' - able to support the Activate + Direct command. + + 'hardZoning' - able to support Hard Zoning." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.23.4.4" + ::= { t11ZsServerEntry 2 } + +t11ZsServerDatabaseStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the memory realization, on a + particular switch, of the Zone Set database for a + particular Fabric. Specifically, each row in the + following tables: + + t11ZsSetTable + t11ZsZoneTable + t11ZsSetZoneTable + t11ZsAliasTable + t11ZsZoneMemberTable + t11ZsAttribBlockTable + t11ZsAttribTable + + has a StorageType as specified by the instance of + this object that is INDEXed by the same values of + fcmInstanceIndex, fcmSwitchIndex, and + + + t11ZsServerFabricIndex. + + The value of this object is also used to indicate + the persistence across reboots of writable values in + its row of the t11ZsServerTable, as well as the + corresponding row in the t11ZsNotifyControlTable. + + If an instance of this object has the value + 'permanent(4)', the Zone Set database for the given + Fabric on the given switch is not required to be + writeable." + DEFVAL { nonVolatile } + ::= { t11ZsServerEntry 3 } + +t11ZsServerDistribute OBJECT-TYPE + SYNTAX INTEGER { + noop(1), + zoneSetDb(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object can be set only in Basic mode. When set + to the value 'zoneSetDb', it requests that the Zone Set + database of a particular switch for a particular Fabric + be distributed to every other switch in that Fabric, + e.g., by using Stage Fabric Configuration Update (SFC) + and Update Fabric Configuration (UFC) requests. + + Setting this object to 'noop' has no effect. + When read, the value of this object is always 'noop'. + + When the corresponding instance of t11ZsServerOperationMode + has the value 'enhanced', or when the corresponding instance + of t11ZsZoneSetResult has the value 'inProgress', it + is inconsistent to try to set the value of this object." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.19.1." + ::= { t11ZsServerEntry 4 } + +t11ZsServerCommit OBJECT-TYPE + SYNTAX INTEGER { + commitZoneChanges(1), + noop(2) + } + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "This object is only used in Enhanced mode. + + In Enhanced mode, it can only be modified when the Fabric + lock for the Zone Server on the particular Fabric has been + obtained for use by SNMP SetRequests, and even then, only + by the SNMP entity identified by the value of corresponding + instance of t11FLockInitiator. + + Setting the object requests an action: + + commitZoneChanges - requests that the changes made + within this session to the Zone + Set Database be committed. + noop - requests nothing. + + When read, the value is always 'noop'." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.2." + ::= { t11ZsServerEntry 5 } + +t11ZsServerResult OBJECT-TYPE + SYNTAX INTEGER { + none(1), + inProgress(2), + success(3), + rejectFailure(4), + otherFailure(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "In Basic mode, this object indicates the status/result + of the last distribution of the Zone Set database that + was invoked via the corresponding instance of + t11ZsZoneSetDistribute, e.g., the status/result of + Stage Fabric Configuration Update (SFC) request(s) used + to implement the setting of t11ZsZoneSetDistribute. + + In Enhanced mode, this object indicates the status/result + of the last commit of changes to the Zone Set database + that was invoked via the corresponding instance of + t11ZsServerCommit. + + 'none' - no distribution/commit invoked + via the corresponding instance of + t11ZsZoneSetDistribute (Basic mode) + + + or t11ZsServerCommit (Enhanced mode). + 'inProgress' - distribution/commit is still in + progress. + 'success' - distribution/commit completed + successfully. + 'rejectFailure' - distribution/commit failed due to + an SW_RJT. + 'otherFailure' - distribution/commit failed for some + other reason. + + When the value is 'rejectFailure', the corresponding + instances of t11ZsServerReasonCode, + t11ZsServerReasonCodeExp and t11ZsServerReasonVendorCode + contain the reason codes. " + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.2.3." + ::= { t11ZsServerEntry 6 } + +t11ZsServerReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason code. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + should contain the value 'none'." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 7 } + +t11ZsServerReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason code explanation. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + + + + should contain the zero-length string." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 8 } + +t11ZsServerReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason vendor-specific code. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + should contain the zero-length string." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 9 } + +t11ZsServerLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last change + (creation, modification, or deletion) to the Zone Set + database for the Zone Server for a particular Fabric. + If said Zone Set database has not changed since the + last re-initialization of the local network management + system, then this object will contain a zero value." + ::= { t11ZsServerEntry 10 } + +t11ZsServerHardZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether this switch, if and when it + is in Basic mode, enforces Hard Zoning on this Fabric." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.3.2." + + + + ::= { t11ZsServerEntry 11 } + +t11ZsServerReadFromDatabase OBJECT-TYPE + SYNTAX INTEGER { + committedDB(1), + copyDB(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "In Enhanced mode, this object specifies whether + subsequent SNMP Responses (generated by the local SNMP + agent) to operations that read the configuration of + Zone Sets, Zones, Members, Aliases and Attributes will + reflect the values stored in the current (committed) + Zone Set database, or those stored in the 'copy' + database. + + In Basic mode, the value of this object is always + 'committedDB' (since there is no 'copy' database in + Basic mode). In SNMP agents that don't support + write access to the Zone Set database, this object + is always 'committedDB' (since the copy database, + if it were to exist, would be identical)." + DEFVAL { committedDB } + ::= { t11ZsServerEntry 12 } + +t11ZsServerOperationMode OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + enhanced(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The operational mode of the Zone Server. + + Setting this object to 'enhanced' is a request that the mode + of operation of the Zone Server be Enhanced mode, which is + only possible if all devices in the Fibre Channel Fabric are + capable of working in Enhanced mode. If not, the request + will fail and the corresponding value of + t11ZsServerChangeModeResult will so indicate. + + Setting this object to 'basic' is a request that the mode + of operation of the Zone Server be Basic mode. However, + such a set may fail while operating in Enhanced mode, + since FC-GS-5 makes no provision for changing (back) + + + + to Basic mode. + + Note that setting this object does not cause or require + that the Fabric lock for the Zone Server be obtained. + However, when this object has the value 'enhanced', any SNMP + SetRequests that attempt to modify the copy database cannot + be successful if the Fabric lock has not been obtained + or has since been released." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 6.4.10.1.1 and 6.4.10.1.2." + DEFVAL { basic } + ::= { t11ZsServerEntry 13 } + +t11ZsServerChangeModeResult OBJECT-TYPE + SYNTAX INTEGER { + success(1), + failure(2), + inProgress(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When this object has the value of 'success' or + 'failure', the value indicates the outcome of the most + recent request, invoked via t11ZsServerOperationMode, + to change the mode of operation of the Zone Server. + When such a request is in progress, this object has the + value 'inProgress'. Prior to the first such request, + the value of this object is 'none'." + ::= { t11ZsServerEntry 14 } + +t11ZsServerDefaultZoneSetting OBJECT-TYPE + SYNTAX INTEGER { + permit(1), + deny(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the Enhanced Zoning flag that + governs the behavior of the Default Zone on this Fabric. + + If this object is set to 'permit', then the members of + the Default Zone on this Fabric can communicate with + each other. + + + + + If this object is set to 'deny', then the members of the + Default Zone on this Fabric cannot communicate with each + other." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.1.1." + DEFVAL { deny } + ::= { t11ZsServerEntry 15 } + +t11ZsServerMergeControlSetting OBJECT-TYPE + SYNTAX INTEGER { + allow(1), + restrict(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the Enhanced Zoning flag that + indicates the Merge Control Setting for this Fabric: + + 'allow' - a switch may join the Fabric only if + its Zoning Database is able to merge + with the Fabric's Zoning Database. + 'restrict' - a switch may join the Fabric only if + its Zoning Database is equal to the + Fabric's Zoning Database." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.1.1." + DEFVAL { allow } + ::= { t11ZsServerEntry 16 } + +t11ZsServerDefZoneBroadcast OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls an Enhanced Zoning capability: + it indicates whether Broadcast Zoning is enabled on + the Default Zone on this Fabric. If this object is + set to 'true', then it is enabled. If this object is + set to 'false', then it is disabled. + + If broadcast Zoning is enabled on a Default Zone, + then broadcast frames generated by a member in that + Default Zone will be restricted to members in that + Default Zone." + REFERENCE + + + + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.7.2.2." + ::= { t11ZsServerEntry 17 } + +-- +-- The table of Zone Sets +-- + +t11ZsSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on every Zone + Set in the Zone Set database of the Zone Servers + on each Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 2 } + +t11ZsSetEntry OBJECT-TYPE + SYNTAX T11ZsSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Set + in the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone Set can be created in an existing Zone Set + database, and can contain zero or more existing + Zones. As and when new Zones are created + (as rows in the t11ZsZoneTable), they can be added + to a Zone Set by creating an entry for each in the + t11ZsSetZoneTable. Deleting a row from this table + deletes the Zone Set from the Zone Set database + maintained by the Zone Server, but does not otherwise + affect the Zone Server. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + + + + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsSetIndex } + ::= { t11ZsSetTable 1 } + +T11ZsSetEntry ::= SEQUENCE { + t11ZsSetIndex Unsigned32, + t11ZsSetName T11ZoningName, + t11ZsSetRowStatus RowStatus +} + +t11ZsSetIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of a Zone Set. This object uniquely + identifies a Zone Set in the Zone Set database + for a particular Fabric on a particular switch." + ::= { t11ZsSetEntry 1 } + +t11ZsSetName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone Set. The t11ZsSetName should + be unique within a Fabric. + + The Zone Set can be renamed at any time (i.e., even + when the row in an active state) by setting this object + to a new value." + ::= { t11ZsSetEntry 2 } + +t11ZsSetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + corresponding value of t11ZsSetName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsSetEntry 3 } + + + + + +-- +-- The table of Zones +-- + +t11ZsZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on all the Zones in the + Zone Set database of the Zone Servers on each Fabric + in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 3 } + +t11ZsZoneEntry OBJECT-TYPE + SYNTAX T11ZsZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone + in the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone can be created in an existing Zone Set + database, by first creating an entry in this table, + and then adding members to it by creating entries in the + t11ZsZoneMemberTable. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsZoneIndex } + ::= { t11ZsZoneTable 1 } + +T11ZsZoneEntry ::= SEQUENCE { + t11ZsZoneIndex Unsigned32, + t11ZsZoneName T11ZoningName, + + + + t11ZsZoneAttribBlock Unsigned32, + t11ZsZoneRowStatus RowStatus +} + +t11ZsZoneIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + Zone within a particular Fabric's Zone Set database + on a particular switch." + ::= { t11ZsZoneEntry 1 } + +t11ZsZoneName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone. The t11ZsZoneName should be + unique within a Fabric. + + The Zone can be renamed by setting this object + to a new value." + ::= { t11ZsZoneEntry 2 } + +t11ZsZoneAttribBlock OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the index value of the + Zone Attribute Block that contains the Attributes + of this Zone. + + In Enhanced mode, a value of zero indicates this + Zone has no Zone Attributes. In Basic mode, this + object always has the value of zero." + ::= { t11ZsZoneEntry 3 } + +t11ZsZoneRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + + + + corresponding value of t11ZsZoneName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsZoneEntry 4 } + +-- +-- The table specifying the Zones that belong to each Zone Set +-- + +t11ZsSetZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsSetZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies which Zones belong to which Zone + Sets in the Zone Set database of the Zone Servers + on each Fabric in one or more switches." + ::= { t11ZsConfiguration 4 } + +t11ZsSetZoneEntry OBJECT-TYPE + SYNTAX T11ZsSetZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies that a particular Zone (identified + by the value of t11ZsZoneIndex) is one of the Zones + that form a particular Zone Set (identified by the + value of t11ZsSetIndex) in the Zone Set database of a + particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + When a row in this table exists, it references one row in + the t11ZsSetTable and one row in the t11ZsZoneTable. The + agent must ensure that both such rows when referenced by an + active row in this table, do exist and have a status of + 'active', either by refusing to create new rows in this + table, or by automatically deleting rows in this table. + + An 'active' row in this table references one row in the + t11ZsSetTable and one in the t11ZsZoneTable. The agent must + ensure that all such referenced rows exist with a status of + 'active', either by refusing to create new active rows in + this table, or by automatically deleting any rows in this + table that reference a deleted row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + + + + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsSetIndex, t11ZsZoneIndex } + ::= { t11ZsSetZoneTable 1 } + +T11ZsSetZoneEntry ::= SEQUENCE { + t11ZsSetZoneRowStatus RowStatus +} + +t11ZsSetZoneRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsSetZoneEntry 1 } + +-- +-- The table of Zone Aliases +-- + +t11ZsAliasTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAliasEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the Zone Aliases + in the Zone Set database of the Zone Servers on each + Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 5 } + +t11ZsAliasEntry OBJECT-TYPE + SYNTAX T11ZsAliasEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Alias in + the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) on + + + + a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone Member is added to a Zone Alias by creating + an entry in the t11ZsZoneMemberTable pointing to a + row of this table via t11ZsAliasIndex, i.e.,: + + - t11ZsZoneMemberParentType = 'alias', + - t11ZsZoneMemberParentIndex = Alias's t11ZsAliasIndex, + - t11ZsZoneMemberFormat != '05 - Alias Name', and + - t11ZsZoneMemberID = Member's identifier. + + A Zone Alias is added to a Zone by creating + an entry in the t11ZsZoneMemberTable pointing to a + row of this table via t11ZsAliasName, i.e.,: + + - t11ZsZoneMemberParentType = 'zone', and + - t11ZsZoneMemberParentIndex = Zone's t11ZsZoneIndex, + - t11ZsZoneMemberFormat = '05 - Alias Name', + - t11ZsZoneMemberID = Alias's t11ZsAliasName. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsAliasIndex } + ::= { t11ZsAliasTable 1 } + +T11ZsAliasEntry ::= SEQUENCE { + t11ZsAliasIndex Unsigned32, + t11ZsAliasName T11ZoningName, + t11ZsAliasRowStatus RowStatus +} + +t11ZsAliasIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value which uniquely identifies this Zone + Alias within the Zone Set database of a particular + Fabric on a particular switch." + ::= { t11ZsAliasEntry 1 } + +t11ZsAliasName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The name of this Zone Alias. The name of the Zone + Alias should be unique within a Fabric. + + The Zone Alias can be renamed by setting this object + to a new value if and when it is not in a Zone, i.e., + if and only if the current name is not the value of + any t11ZsZoneMemberID in the same Zone Set database." + ::= { t11ZsAliasEntry 2 } + +t11ZsAliasRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + corresponding value of t11ZsAliasName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsAliasEntry 3 } + +-- +-- The table of Zone Members +-- + +t11ZsZoneMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsZoneMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all members of a Zone/Zone Alias + and information about those members in the Zone Set + database of the Zone Servers on each Fabric in one or + more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 6 } + +t11ZsZoneMemberEntry OBJECT-TYPE + SYNTAX T11ZsZoneMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry represents the relationship between a + member and (one of) its 'parent(s)', i.e., a Zone + or Zone Alias to which the member belongs, within + a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + A Zone member (other than an alias) is added to a + Zone by creating an entry in this table having: + + - t11ZsZoneMemberParentType = 'zone', and + - t11ZsZoneMemberParentIndex = Zone's t11ZsZoneIndex, + - t11ZsZoneMemberFormat != '05 - Alias Name', + - t11ZsZoneMemberID = Member's identifier. + + An 'active' row in this table references rows in other + tables. The agent must ensure that all such referenced + rows exist with a status of 'active', either by refusing to + create new active rows in this table, or by automatically + deleting any rows in this table that reference a deleted + row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsZoneMemberParentType, + t11ZsZoneMemberParentIndex, t11ZsZoneMemberIndex } + ::= { t11ZsZoneMemberTable 1 } + +T11ZsZoneMemberEntry ::= SEQUENCE { + t11ZsZoneMemberParentType INTEGER, + t11ZsZoneMemberParentIndex Unsigned32, + t11ZsZoneMemberIndex Unsigned32, + t11ZsZoneMemberFormat T11ZsZoneMemberType, + t11ZsZoneMemberID OCTET STRING, + t11ZsZoneMemberRowStatus RowStatus +} + +t11ZsZoneMemberParentType OBJECT-TYPE + SYNTAX INTEGER { + zone(1), -- member belongs to a Zone + alias(2) -- member belongs to a Zone Alias + } + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object determines whether this member belongs + to a Zone or Zone Alias." + ::= { t11ZsZoneMemberEntry 1 } + +t11ZsZoneMemberParentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the index value of the Zone or + Zone Alias to which this member belongs. + + If the value of the corresponding instance of + t11ZsZoneMemberParentType is 'zone', then this object + will contain the value of the t11ZsZoneIndex object of + the Zone to which this member belongs. + + If the value of the corresponding instance of + t11ZsZoneMemberParentType is 'alias', then this object + will contain the value of the t11ZsAliasIndex object + of the Zone Alias to which this member belongs." + ::= { t11ZsZoneMemberEntry 2 } + +t11ZsZoneMemberIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + Member amongst all Zone Members in the Zone Set + database of a particular Fabric on a particular switch." + ::= { t11ZsZoneMemberEntry 3 } + +t11ZsZoneMemberFormat OBJECT-TYPE + SYNTAX T11ZsZoneMemberType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the format of the + Zone/Zone Alias member's identifier contained in + t11ZsZoneMemberID. + + This object cannot be modified while the corresponding + value of t11ZsZoneMemberRowStatus object is 'active'." + ::= { t11ZsZoneMemberEntry 4 } + + + +t11ZsZoneMemberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the Member Identifier of the + Zone or Alias. The interpretation of this object + depends on the value of the corresponding instance + of t11ZsZoneMemberFormat: + + - if t11ZsZoneMemberFormat is 'N_Port_Name', then + this object contains an N_Port_Name. + + - if t11ZsZoneMemberFormat is 'Domain_ID and physical + port', then this object contains a 4-octet value in + network byte order. The first octet is zero, + the second octet contains the Domain_ID, and the + last 2 octets contain the physical port number. + + - if t11ZsZoneMemberFormat is 'N_Port_ID', then this + object contains the 3-octet Nx_Port FC_ID. + + - if t11ZsZoneMemberFormat is 'Alias Name', then + this object contains the value of t11ZsAliasName + for some Alias in the same Zone Set database. + + - if t11ZsZoneMemberFormat is 'Node_Name', then + this object contains an 8-octet Node_Name. + + - if t11ZsZoneMemberFormat is 'F_Port_Name', then + this object contains an 8-octet F_Port_Name. + + - if t11ZsZoneMemberFormat is one of the 'Vendor + Specific' values, then this object contains a value + of 1 to 255 octets in a format defined by the relevant + vendor. + + This object cannot be modified while the corresponding + value of t11ZsZoneMemberRowStatus object is 'active'." + ::= { t11ZsZoneMemberEntry 5 } + +t11ZsZoneMemberRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + + + + The corresponding instances of t11ZsZoneMemberID and + t11ZsZoneMemberFormat objects must be set before or + concurrently with setting this object to 'active'." + ::= { t11ZsZoneMemberEntry 6 } + +-- +-- The table of Zone Attribute Blocks +-- + +t11ZsAttribBlockTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAttribBlockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on all the Zone + Attributes in the Zone Set database of the Zone + Servers on each Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 7 } + +t11ZsAttribBlockEntry OBJECT-TYPE + SYNTAX T11ZsAttribBlockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Attribute + Block (of Zone Attributes) in the Zone Set database + of a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + An 'active' row in this table references a row in the + t11ZsAttribBlockTable. The agent must ensure that the + referenced rows exists with a status of 'active', either by + refusing to create new active rows in this table, or by + automatically deleting any rows in this table that + reference a deleted row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + + + + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsAttribBlockIndex } + ::= { t11ZsAttribBlockTable 1 } + +T11ZsAttribBlockEntry ::= SEQUENCE { + t11ZsAttribBlockIndex Unsigned32, + t11ZsAttribBlockName T11ZoningName, + t11ZsAttribBlockRowStatus RowStatus +} + +t11ZsAttribBlockIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + Attribute within the Zone Set database of a particular + Fabric on a particular switch." + ::= { t11ZsAttribBlockEntry 1 } + +t11ZsAttribBlockName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone Attribute Block, which should + be unique within the Fabric." + ::= { t11ZsAttribBlockEntry 2 } + +t11ZsAttribBlockRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsAttribBlockEntry 3 } + + + + + + + + + + + + + + +-- +-- The table of Zone Attributes +-- + +t11ZsAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on the Zone Attributes + within the Zone Attribute Blocks in the Zone Set + database of the Zone Servers on each Fabric in one + or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 8 } + +t11ZsAttribEntry OBJECT-TYPE + SYNTAX T11ZsAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone + Attribute in a Zone Attribute Block (identified by + t11ZsAttribBlockIndex) in the Zone Set database of + a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + An entry in this table cannot be created prior to + its associated entry in the t11ZsAttribBlockTable. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsAttribBlockIndex, t11ZsAttribIndex } + ::= { t11ZsAttribTable 1 } + +T11ZsAttribEntry ::= SEQUENCE { + + + + t11ZsAttribIndex Unsigned32, + t11ZsAttribType Unsigned32, + t11ZsAttribValue OCTET STRING, + t11ZsAttribRowStatus RowStatus +} + +t11ZsAttribIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + Zone Attribute within its Zone Attribute Block in + the Zone Set database of a particular Fabric on a + particular switch." + ::= { t11ZsAttribEntry 1 } + +t11ZsAttribType OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of attribute: + + 0001 - Protocol + 0002 - Broadcast Zone + 0003 - Hard Zone + 00E0 (hex) - Vendor Specific." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8, Table 249." + ::= { t11ZsAttribEntry 2 } + +t11ZsAttribValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..252)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the attribute, formatted as specified + in FC-GS-5 for the type given by the corresponding + instance of t11ZsAttribType. + + Note that FC-GS-5 requires that the length of this + value is a multiple of 4 bytes." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8." + ::= { t11ZsAttribEntry 3 } + + + +t11ZsAttribRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsAttribEntry 4 } + +-- +-- Activating a Zone Set +-- + +t11ZsActivateTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActivateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a mechanism to allow a Zone Set + to be activated on a Fabric." + ::= { t11ZsConfiguration 9 } + +t11ZsActivateEntry OBJECT-TYPE + SYNTAX T11ZsActivateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry reflects the state of the activation of a + Zone Set by a particular switch (identified by values + of fcmInstanceIndex and fcmSwitchIndex) on a particular + Fabric (identified by the value of + t11ZsServerFabricIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsActivateTable 1 } + +T11ZsActivateEntry ::= SEQUENCE { + t11ZsActivateRequest Unsigned32, + t11ZsActivateDeactivate INTEGER, + t11ZsActivateResult INTEGER, + t11ZsActivateFailCause SnmpAdminString, + t11ZsActivateFailDomainId FcDomainIdOrZero +} + +t11ZsActivateRequest OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "Setting this object to a value is a request for a + Zone Set to be activated on the Fabric that is + represented by this row. The Zone Set to be + activated is the one for which t11ZsSetIndex has + the same value. + + If a Zone Set is already active on a Fabric when a + request is made to activate a different one on that + Fabric, then the existing Zone Set is automatically + deactivated and the specified Zone Set is activated + in its place. + + The value of this object when read is always 0." + ::= { t11ZsActivateEntry 1 } + +t11ZsActivateDeactivate OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + noop(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'deactivate' is a request + to deactivate the currently active Zone Set on + a Fabric. + + Note that the deactivation of the active Zone Set + allows all ports to communicate or no ports to + communicate, depending on the current Default Zone + behavior. + + No action is taken if this object is set to 'noop'. + When read, the value of this object is always 'noop'." + ::= { t11ZsActivateEntry 2 } + +t11ZsActivateResult OBJECT-TYPE + SYNTAX INTEGER { + activateSuccess(1), + activateFailure(2), + deactivateSuccess(3), + deactivateFailure(4), + inProgress(5), + none(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates the outcome of the most recent + activation/deactivation using this entry. + + When the value of this object is 'inProgress', the + values of the corresponding instances of + t11ZsActivateRequest and t11ZsActivateDeactivate + cannot be modified. + + The value 'none' indicates activation/deactivation + has not been attempted since the last restart of + the management system." + ::= { t11ZsActivateEntry 3 } + +t11ZsActivateFailCause OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual message indicating the reason for the + most recent failure of a Zone Set activation or + deactivation, or the zero-length string if no + information is available (e.g., because the + corresponding instance of t11ZsActivateResult + has the value 'none'). + + When the corresponding instance of + t11ZsActivateResult is either 'activateFailure' + or 'deactivateFailure', the value of this object + indicates the reason for that failure." + ::= { t11ZsActivateEntry 4 } + +t11ZsActivateFailDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the failure cause (as indicated by + t11ZsSetFailCause) was specific to a particular + device, this object contains the Domain_ID of that + device. Otherwise, this object contains zero." + ::= { t11ZsActivateEntry 5 } + + + + + + + + + + +-- +-- t11ZsActiveTable +-- + +t11ZsActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the currently + enforced/active Zone Set on each Fabric. + An active Zone Set cannot be modified. + This table will be empty when no Zone Set is + activated." + ::= { t11ZsConfiguration 10 } + +t11ZsActiveEntry OBJECT-TYPE + SYNTAX T11ZsActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an active Zone Set of a + particular Fabric (identified by the value of + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsActiveTable 1 } + +T11ZsActiveEntry ::= SEQUENCE { + t11ZsActiveZoneSetName T11ZoningName, + t11ZsActiveActivateTime TimeStamp +} + +t11ZsActiveZoneSetName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this Zone Set on this Fabric." + ::= { t11ZsActiveEntry 1 } + +t11ZsActiveActivateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of sysUpTime at which this entry was most + recently activated. If this row was activated prior to + the last re-initialization of the local network management + system, then this object will contain a zero value." + ::= { t11ZsActiveEntry 2 } + +-- +-- Zones in the Active/Enforced Zone Set +-- + +t11ZsActiveZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the Zones that are present in + the active Zone Sets on all Fabrics." + ::= { t11ZsConfiguration 11 } + +t11ZsActiveZoneEntry OBJECT-TYPE + SYNTAX T11ZsActiveZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a Zone in the active Zone Set + of a particular Fabric (identified by the value of + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsActiveZoneIndex } + ::= { t11ZsActiveZoneTable 1 } + +T11ZsActiveZoneEntry ::= SEQUENCE { + t11ZsActiveZoneIndex Unsigned32, + t11ZsActiveZoneName T11ZoningName, + t11ZsActiveZoneBroadcastZoning TruthValue, + t11ZsActiveZoneHardZoning TruthValue +} + +t11ZsActiveZoneIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + within the active Zone Set on a particular Fabric." + ::= { t11ZsActiveZoneEntry 1 } + + + +t11ZsActiveZoneName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this Zone." + ::= { t11ZsActiveZoneEntry 2 } + +t11ZsActiveZoneBroadcastZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether broadcast Zoning is + enabled on this Zone. If broadcast Zoning is enabled, + then broadcast frames generated by a member in this + Zone will be restricted to members in this Zone. + + This object is only instantiated in Enhanced mode." + ::= { t11ZsActiveZoneEntry 3 } + +t11ZsActiveZoneHardZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether hard Zoning is + enabled on this Zone. + + This object is only instantiated in Enhanced mode." + ::= { t11ZsActiveZoneEntry 4 } + +-- +-- Zone Members in the Active/Enforced Zone Set +-- + +t11ZsActiveZoneMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveZoneMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all members of all Zones + within the active Zone Set on any Fabric." + ::= { t11ZsConfiguration 12 } + +t11ZsActiveZoneMemberEntry OBJECT-TYPE + SYNTAX T11ZsActiveZoneMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry represents a member of a Zone in the active + Zone Set of a particular Fabric (identified by the value + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsActiveZoneIndex, t11ZsActiveZoneMemberIndex } + ::= { t11ZsActiveZoneMemberTable 1 } + +T11ZsActiveZoneMemberEntry ::= SEQUENCE { + t11ZsActiveZoneMemberIndex Unsigned32, + t11ZsActiveZoneMemberFormat T11ZsZoneMemberType, + t11ZsActiveZoneMemberID OCTET STRING +} + +t11ZsActiveZoneMemberIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + member amongst the members of a particular Zone + in the active Zone Set on a particular Fabric." + ::= { t11ZsActiveZoneMemberEntry 1 } + +t11ZsActiveZoneMemberFormat OBJECT-TYPE + SYNTAX T11ZsZoneMemberType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the identifier format of the + corresponding instance of t11ZsActiveZoneMemberID." + ::= { t11ZsActiveZoneMemberEntry 2 } + +t11ZsActiveZoneMemberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value of this object identifies the member + using the format specified in the corresponding + instance of t11ZsActiveZoneMemberFormat." + ::= { t11ZsActiveZoneMemberEntry 3 } + + + + + +-- +-- Zone Attributes in the Active/Enforced Zone Set +-- + +t11ZsActiveAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about some of the + Attributes of the Zones within the active Zone Set + on each Fabric. + + This table contains all the types of attributes + that might apply zero, one, or more times to a Zone. + Attributes that apply once and only to a Zone are + specified in the t11ZsActiveZoneTable. + + This table will always be empty in Basic mode. + It will also be empty if there are no Zones in + any active Zone Set having any of the applicable + types of attributes." + ::= { t11ZsConfiguration 13 } + +t11ZsActiveAttribEntry OBJECT-TYPE + SYNTAX T11ZsActiveAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains an Attribute of a particular + Zone in the active Zone Set of a particular Fabric + (identified by the value of t11ZsServerFabricIndex), + according to a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsActiveZoneIndex, t11ZsActiveAttribIndex } + ::= { t11ZsActiveAttribTable 1 } + +T11ZsActiveAttribEntry ::= SEQUENCE { + t11ZsActiveAttribIndex Unsigned32, + t11ZsActiveAttribType Unsigned32, + t11ZsActiveAttribValue OCTET STRING +} + +t11ZsActiveAttribIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + attribute amongst the other attributes for a + particular Zone in the active Zone Set on a + particular Fabric." + ::= { t11ZsActiveAttribEntry 1 } + +t11ZsActiveAttribType OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of attribute: + + 0001 - Protocol + 00E0 (hex) - Vendor Specific + + Note that type 2 (Hard) and type 3 (Broadcast) + do not need to be represented here, because they + are represented by t11ZsActiveZoneBroadcastZoning and + t11ZsActiveZoneHardZoning." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8, Table 249." + ::= { t11ZsActiveAttribEntry 2 } + +t11ZsActiveAttribValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the attribute, formatted according to + its type as indicated by the corresponding instance + of t11ZsActiveAttribType. + + As specified in FC-GS-5, the length of an attribute + value is at least 4 bytes, and if necessary, the value + is appended with zero bytes so that the length is a + multiple of 4. For a Vendor-Specific attribute + value, the first 8 bytes contain the T10 Vendor ID + as described in FC-GS-5." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8." + ::= { t11ZsActiveAttribEntry 3 } + + + + + +-- +-- Zone Server Statistics +-- + +t11ZsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of statistics maintained by Zone Servers." + ::= { t11ZsStatistics 1 } + +t11ZsStatsEntry OBJECT-TYPE + SYNTAX T11ZsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a Zone Server on a + particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsStatsTable 1 } + +T11ZsStatsEntry ::= SEQUENCE { + t11ZsOutMergeRequests Counter32, + t11ZsInMergeAccepts Counter32, + t11ZsInMergeRequests Counter32, + t11ZsOutMergeAccepts Counter32, + t11ZsOutChangeRequests Counter32, + t11ZsInChangeAccepts Counter32, + t11ZsInChangeRequests Counter32, + t11ZsOutChangeAccepts Counter32, + t11ZsInZsRequests Counter32, + t11ZsOutZsRejects Counter32 +} + +t11ZsOutMergeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Request Frames sent by this Zone + Server to other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + + + + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 1 } + +t11ZsInMergeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Accept Frames received by this Zone + Server from other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 2 } + +t11ZsInMergeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Request Frames received by this Zone + Server from other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 3 } + +t11ZsOutMergeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Accept Frames sent by this Zone + Server to other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 4 } + +t11ZsOutChangeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of change requests sent (via the Fabric + Management Session Protocol) by this Zone Server to + other Zone Servers in the same Fabric. + + + + + This includes Acquire Change Authorization requests, Stage + Fabric Config Update requests, Update Fabric Config requests + and Release Change Authorization requests. It also includes + the corresponding types of requests defined by the Enhanced + Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 5 } + +t11ZsInChangeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_ACC messages received from other Zone + Servers in the same Fabric (according to the Fabric + Management Session Protocol) in response to change + requests by this Zone Server. + + This includes SW_ACC messages received in response to + Acquire Change Authorization requests, to Stage Fabric + Config Update requests, to Update Fabric Config requests, + and to Release Change Authorization requests. It also + includes responses to the corresponding types of requests + defined for the Enhanced Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 6 } + +t11ZsInChangeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of change requests received (via the Fabric + Management Session Protocol) by this Zone Server from + other Zone Servers in the same Fabric. + + This includes Acquire Change Authorization requests, Stage + Fabric Config Update requests, Update Fabric Config requests + + + + and Release Change Authorization requests. It also includes + the corresponding types of requests defined by the Enhanced + Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 7 } + +t11ZsOutChangeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_ACC messages sent by this Zone Server + (according to the Fabric Management Session Protocol) in + response to change requests from other Zone Servers in + the same Fabric. + + This includes SW_ACC messages sent in response to + Acquire Change Authorization requests, to Stage Fabric + Config Update requests, to Update Fabric Config requests + and to Release Change Authorization requests. It also + includes responses to the corresponding types of requests + defined for the Enhanced Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 8 } + +t11ZsInZsRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Zone Server requests received by this + Zone Server on this Fabric, both those received in + Basic mode and in Enhanced mode. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 9 } + + + + +t11ZsOutZsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Zone Server requests rejected by this + Zone Server on this Fabric, both those rejected in + Basic mode and in Enhanced mode. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 10 } + +-- +-- Notification Control Table +-- + +t11ZsNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to Zone Server events." + ::= { t11ZsConfiguration 14 } + +t11ZsNotifyControlEntry OBJECT-TYPE + SYNTAX T11ZsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + specific to a Zone Server for a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + The persistence across reboots of writable values in + a row of this table is specified by the instance of + t11ZsServerDatabaseStorageType that is INDEXed by + the same values of fcmInstanceIndex, fcmSwitchIndex, + and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsNotifyControlTable 1 } + +T11ZsNotifyControlEntry ::= SEQUENCE { + t11ZsNotifyRequestRejectEnable TruthValue, + + + + t11ZsNotifyMergeFailureEnable TruthValue, + t11ZsNotifyMergeSuccessEnable TruthValue, + t11ZsNotifyDefZoneChangeEnable TruthValue, + t11ZsNotifyActivateEnable TruthValue, + t11ZsRejectCtCommandString OCTET STRING, + t11ZsRejectRequestSource FcNameIdOrZero, + t11ZsRejectReasonCode T11NsGs4RejectReasonCode, + t11ZsRejectReasonCodeExp T11ZsRejectReasonExplanation, + t11ZsRejectReasonVendorCode OCTET STRING +} + +t11ZsNotifyRequestRejectEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsRequestRejectNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 1 } + +t11ZsNotifyMergeFailureEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsMergeFailureNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 2 } + +t11ZsNotifyMergeSuccessEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsMergeSuccessNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 3 } + +t11ZsNotifyDefZoneChangeEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsDefZoneChangeNotify + notifications should be generated by the Zone Server + + + + for this Fabric." + ::= { t11ZsNotifyControlEntry 4 } + +t11ZsNotifyActivateEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsActivateNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 5 } + +t11ZsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Zone Server request, + formatted as an octet string (in network byte order) + containing the Common Transport Information Unit + (CT_IU), as described in Table 2 of FC-GS-5 (including + the preamble), which was most recently rejected by the + Fabric Configuration Server for this Fabric. + + This object contains the zero-length string + if and when the CT-IU's content is unavailable. + + When the length of this object is 255 octets, it + contains the first 255 octets of the CT-IU (in + network byte order)." + ::= { t11ZsNotifyControlEntry 6 } + +t11ZsRejectRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the CT_IU + contained in the corresponding instance of + t11ZsRejectCtCommandString." + ::= { t11ZsNotifyControlEntry 7 } + +t11ZsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The reason code corresponding to the most recent + rejection of a request by the Zone Server for + this Fabric." + ::= { t11ZsNotifyControlEntry 8 } + +t11ZsRejectReasonCodeExp OBJECT-TYPE + SYNTAX T11ZsRejectReasonExplanation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of t11ZsRejectReasonCode is + 'Unable to perform command request', this + object contains the corresponding reason code + explanation." + ::= { t11ZsNotifyControlEntry 9 } + +t11ZsRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of t11ZsRejectReasonCode is + 'Vendor Specific Error', this object contains + the corresponding vendor-specific reason code." + ::= { t11ZsNotifyControlEntry 10 } + +t11ZsFabricIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4096) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains either a value of + T11FabricIndex to identify the Fabric on which + some occurrence has caused a notification to be + generated, or it has the value 4096 to indicate + all applicable Fabrics." + ::= { t11ZsConfiguration 15 } + + + + + + + + + + + + + + +-- Notifications + +t11ZsRequestRejectNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11ZsRejectRequestSource, + t11ZsRejectCtCommandString, + t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp, + t11ZsRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever a Zone Server + (indicated by the value of t11FamLocalSwitchWwn) rejects + a request. + + The value of t11ZsRejectCtCommandString indicates the + rejected request, and the values of t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp and t11ZsRejectReasonVendorCode + indicate the reason for the rejection. The value of + t11ZsRequestClient indicates the source of the request." + ::= { t11ZsMIBNotifications 1 } + +t11ZsMergeFailureNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, t11ZsFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a Zone merge + failure has occurred on the Fabric indicated by the + value of t11ZsFabricIndex, on the interface + indicated by the value of ifIndex. + + If multiple Virtual Fabrics are configured on an + interface, and all have a Zone merge failure + at the same time, then just one notification is + generated and t11ZsFabricIndex has the value 4096." + ::= { t11ZsMIBNotifications 2 } + +t11ZsMergeSuccessNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, t11ZsFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a successful Zone + merge has occurred on the Fabric indicated by the + value of t11ZsFabricIndex, on the interface + indicated by the value of ifIndex. + + If multiple Virtual Fabrics are configured on an + interface, and all have a successful Zone Merge + + + + at the same time, then just one notification is + generated and t11ZsFabricIndex has the value 4096." + ::= { t11ZsMIBNotifications 3 } + +t11ZsDefZoneChangeNotify NOTIFICATION-TYPE + OBJECTS { t11ZsServerDefaultZoneSetting } + STATUS current + DESCRIPTION + "This notification indicates that the + value of a Default Zone Setting has changed. + The value of t11ZsServerDefaultZoneSetting + contains the value after the change." + ::= { t11ZsMIBNotifications 4 } + +t11ZsActivateNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11ZsActivateResult } + STATUS current + DESCRIPTION + "This notification is generated whenever a switch + (indicated by the value of t11FamLocalSwitchWwn) + activates/deactivates a Zone Set on a Fabric. + The t11ZsActivateResult object denotes the outcome + of the activation/deactivation." + ::= { t11ZsMIBNotifications 5 } + +-- Conformance + +t11ZsMIBCompliances OBJECT IDENTIFIER ::= { t11ZsMIBConformance 1 } +t11ZsMIBGroups OBJECT IDENTIFIER ::= { t11ZsMIBConformance 2 } + +t11ZsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Zone Server." + MODULE MANDATORY-GROUPS {t11ZsBasicGroup, + t11ZsNotificationControlGroup, + t11ZsNotificationGroup } + + GROUP t11ZsEnhancedModeGroup + DESCRIPTION + "This group is mandatory only for those systems + with Zone Servers that support Enhanced Mode." + + GROUP t11ZsActivateGroup + DESCRIPTION + "Only entities that provide write access for + activating a Zone Set support need to support + + + + this group." + + GROUP t11ZsStatisticsGroup + DESCRIPTION + "These counters, containing Zone Server statistics, + are mandatory only for those systems that count + such events." + + OBJECT t11ZsSetRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsSetZoneRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAliasRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribBlockRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT t11ZsServerDatabaseStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDistribute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerCommit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerReadFromDatabase + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerOperationMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDefaultZoneSetting + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerMergeControlSetting + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDefZoneBroadcast + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsSetName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneName + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneAttribBlock + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAliasName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberFormat + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribBlockName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribValue + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsActivateRequest + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsActivateDeactivate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT t11ZsNotifyRequestRejectEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyMergeFailureEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyMergeSuccessEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyDefZoneChangeEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyActivateEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11ZsMIBCompliances 1 } + +-- Units of Conformance + +t11ZsBasicGroup OBJECT-GROUP + OBJECTS { t11ZsServerCapabilityObject, + t11ZsServerDatabaseStorageType, + t11ZsServerDistribute, + t11ZsServerResult, + t11ZsServerReasonCode, + t11ZsServerReasonCodeExp, + t11ZsServerReasonVendorCode, + t11ZsServerLastChange, + t11ZsServerHardZoning, + t11ZsServerReadFromDatabase, + t11ZsServerOperationMode, + t11ZsSetName, + t11ZsSetRowStatus, + t11ZsZoneName, + t11ZsZoneAttribBlock, + t11ZsZoneRowStatus, + t11ZsSetZoneRowStatus, + t11ZsZoneMemberFormat, + + + + t11ZsZoneMemberID, + t11ZsZoneMemberRowStatus, + t11ZsActiveZoneSetName, + t11ZsActiveActivateTime, + t11ZsActiveZoneName, + t11ZsActiveZoneMemberFormat, + t11ZsActiveZoneMemberID + } + STATUS current + DESCRIPTION + "A collection of objects for displaying and updating + the Zone configuration of a Zone Server capable of + operating in Basic mode." + ::= { t11ZsMIBGroups 1 } + +t11ZsEnhancedModeGroup OBJECT-GROUP + OBJECTS { t11ZsServerCommit, + t11ZsServerChangeModeResult, + t11ZsServerDefaultZoneSetting, + t11ZsServerMergeControlSetting, + t11ZsServerDefZoneBroadcast, + t11ZsAliasName, + t11ZsAliasRowStatus, + t11ZsAttribBlockName, + t11ZsAttribBlockRowStatus, + t11ZsAttribType, + t11ZsAttribValue, + t11ZsAttribRowStatus, + t11ZsActiveZoneBroadcastZoning, + t11ZsActiveZoneHardZoning, + t11ZsActiveAttribType, + t11ZsActiveAttribValue + } + STATUS current + DESCRIPTION + "A collection of additional objects for displaying + and updating the Zone configuration of a Zone Server + capable of operating in Enhanced mode." + ::= { t11ZsMIBGroups 2 } + +t11ZsStatisticsGroup OBJECT-GROUP + OBJECTS { t11ZsOutMergeRequests, + t11ZsInMergeAccepts, + t11ZsInMergeRequests, + t11ZsOutMergeAccepts, + t11ZsOutChangeRequests, + t11ZsInChangeAccepts, + t11ZsInChangeRequests, + + + + t11ZsOutChangeAccepts, + t11ZsInZsRequests, + t11ZsOutZsRejects + } + STATUS current + DESCRIPTION + "A collection of objects for collecting Zone Server + statistics information." + ::= { t11ZsMIBGroups 3 } + +t11ZsNotificationControlGroup OBJECT-GROUP + OBJECTS { t11ZsNotifyRequestRejectEnable, + t11ZsNotifyMergeFailureEnable, + t11ZsNotifyMergeSuccessEnable, + t11ZsNotifyDefZoneChangeEnable, + t11ZsNotifyActivateEnable, + t11ZsRejectCtCommandString, + t11ZsRejectRequestSource, + t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp, + t11ZsRejectReasonVendorCode, + t11ZsFabricIndex + } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects for monitoring + Zone Server request rejection and Zone merge + failures." + ::= { t11ZsMIBGroups 4 } + +t11ZsActivateGroup OBJECT-GROUP + OBJECTS { t11ZsActivateRequest, + t11ZsActivateDeactivate, + t11ZsActivateResult, + t11ZsActivateFailCause, + t11ZsActivateFailDomainId + } + STATUS current + DESCRIPTION + "A collection of objects that allow a Zone Set to + be activated via SNMP SetRequests and provide the + status and result of such an activation." + ::= { t11ZsMIBGroups 5 } + +t11ZsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11ZsRequestRejectNotify, + t11ZsMergeFailureNotify, + + + + t11ZsMergeSuccessNotify, + t11ZsDefZoneChangeNotify, + t11ZsActivateNotify } + STATUS current + DESCRIPTION + "A collection of notification(s) for monitoring + Zone Server request rejection, Zone merge + failures and successes, and Default Zoning + behavioral changes." + ::= { t11ZsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-TC-MIB b/mibs/ietf/T11-TC-MIB new file mode 100644 index 0000000..375dac9 --- /dev/null +++ b/mibs/ietf/T11-TC-MIB @@ -0,0 +1,69 @@ +T11-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +t11TcMIB MODULE-IDENTITY + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "This module defines textual conventions used in T11 MIBs. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4439; see the RFC + itself for full legal notices." + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4439." + ::= { mib-2 136 } + +T11FabricIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Fabric Index that is used as a unique + index value to identify a particular Fabric within + one (or more) physical infrastructures. + + In an environment that is conformant to FC-SW-3, where + + + + there is always exactly one Fabric in a single physical + infrastructure, the value of this Fabric Index will + always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) + physical infrastructures. When such multiple Fabrics + are in use, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure. + + Note that the value of this textual convention has a + range of (0..4095) so as to be consistent with FC-SW-4, + which says that a 'VF_ID Bitmap' is 512 bytes long, with + the high-order bit representing VF_ID zero, and the + low-order bit representing 4095." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.27.2.4." + SYNTAX Unsigned32 (0..4095) + +END diff --git a/mibs/ietf/TCP-ESTATS-MIB b/mibs/ietf/TCP-ESTATS-MIB new file mode 100644 index 0000000..16452f0 --- /dev/null +++ b/mibs/ietf/TCP-ESTATS-MIB @@ -0,0 +1,3108 @@ +TCP-ESTATS-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, Counter32, Integer32, Unsigned32, + Gauge32, OBJECT-TYPE, mib-2, + NOTIFICATION-TYPE + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB -- [RFC4502] + ZeroBasedCounter64 + FROM HCNUM-TC -- [RFC2856] + TEXTUAL-CONVENTION, + DateAndTime, TruthValue, TimeStamp + + + + FROM SNMPv2-TC -- [RFC2579] + tcpListenerEntry, tcpConnectionEntry + FROM TCP-MIB; -- [RFC4022] + +tcpEStatsMIB MODULE-IDENTITY + LAST-UPDATED "200705180000Z" -- 18 May 2007 + ORGANIZATION "IETF TSV Working Group" + CONTACT-INFO + "Matt Mathis + John Heffner + Web100 Project + Pittsburgh Supercomputing Center + 300 S. Craig St. + Pittsburgh, PA 15213 + Email: mathis@psc.edu, jheffner@psc.edu + + Rajiv Raghunarayan + Cisco Systems Inc. + San Jose, CA 95134 + Phone: 408 853 9612 + Email: raraghun@cisco.com + + Jon Saperia + 84 Kettell Plain Road + Stow, MA 01775 + Phone: 617-201-2655 + Email: saperia@jdscons.com " + DESCRIPTION + "Documentation of TCP Extended Performance Instrumentation + variables from the Web100 project. [Web100] + + All of the objects in this MIB MUST have the same + persistence properties as the underlying TCP implementation. + On a reboot, all zero-based counters MUST be cleared, all + dynamically created table rows MUST be deleted, and all + read-write objects MUST be restored to their default values. + + It is assumed that all TCP implementation have some + initialization code (if nothing else to set IP addresses) + that has the opportunity to adjust tcpEStatsConnTableLatency + and other read-write scalars controlling the creation of the + various tables, before establishing the first TCP + connection. Implementations MAY also choose to make these + control scalars persist across reboots. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is a part of RFC 4898; see the RFC + itself for full legal notices." + + + + REVISION "200705180000Z" -- 18 May 2007 + DESCRIPTION + "Initial version, published as RFC 4898." + ::= { mib-2 156 } + +tcpEStatsNotifications OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 } +tcpEStatsMIBObjects OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 } +tcpEStatsConformance OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 } +tcpEStats OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 1 } +tcpEStatsControl OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 2 } +tcpEStatsScalar OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 3 } + +-- +-- Textual Conventions +-- + +TcpEStatsNegotiated ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates if some optional TCP feature was negotiated. + + Enabled(1) indicates that the feature was successfully + negotiated on, which generally requires both hosts to agree + to use the feature. + + selfDisabled(2) indicates that the local host refused the + feature because it is not implemented, configured off, or + refused for some other reason, such as the lack of + resources. + + peerDisabled(3) indicates that the local host was willing + to negotiate the feature, but the remote host did not + do so." + SYNTAX INTEGER { + enabled(1), + selfDisabled(2), + peerDisabled(3) + } + +-- +-- TCP Extended statistics scalars +-- + +tcpEStatsListenerTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + 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 tcpListenerTable. + 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." + ::= { tcpEStatsScalar 3 } + +-- ================================================================ +-- +-- The tcpEStatsControl Group +-- + +-- The scalar objects in this group are used to control the +-- activation and deactivation of the TCP Extended Statistics +-- tables and notifications in this module. +-- + +tcpEStatsControlPath OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Path Statistics + table. + + A value 'true' indicates that the TCP Path Statistics + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 1 } + +tcpEStatsControlStack OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Stack Statistics + table. + + A value 'true' indicates that the TCP Stack Statistics + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 2 } + +tcpEStatsControlApp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "Controls the activation of the TCP Application + Statistics table. + + A value 'true' indicates that the TCP Application + Statistics table is active, while 'false' indicates + that the table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 3 } + +tcpEStatsControlTune OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Tuning table. + + A value 'true' indicates that the TCP Tuning + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 4 } + +tcpEStatsControlNotify OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the generation of all notifications defined in + this MIB. + + A value 'true' indicates that the notifications + are active, while 'false' indicates that the + notifications are inactive." + DEFVAL { false } + ::= { tcpEStatsControl 5 } + +tcpEStatsConnTableLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the number of seconds that the entity will + retain entries in the TCP connection tables, after the + connection first enters the closed state. The entity + SHOULD provide a configuration option to enable + + + + customization of this value. A value of 0 + results in entries being removed from the tables as soon as + the connection enters the closed state. The value of + this object pertains to the following tables: + tcpEStatsConnectIdTable + tcpEStatsPerfTable + tcpEStatsPathTable + tcpEStatsStackTable + tcpEStatsAppTable + tcpEStatsTuneTable" + DEFVAL { 0 } + ::= { tcpEStatsControl 6 } + +-- ================================================================ +-- +-- Listener Table +-- + +tcpEStatsListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about TCP Listeners, + in addition to the information maintained by the + tcpListenerTable RFC 4022." + ::= { tcpEStats 1 } + +tcpEStatsListenerEntry OBJECT-TYPE + SYNTAX TcpEStatsListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the table contains information about + a specific TCP Listener." + AUGMENTS { tcpListenerEntry } + ::= { tcpEStatsListenerTable 1 } + +TcpEStatsListenerEntry ::= SEQUENCE { + tcpEStatsListenerStartTime TimeStamp, + tcpEStatsListenerSynRcvd ZeroBasedCounter32, + tcpEStatsListenerInitial ZeroBasedCounter32, + tcpEStatsListenerEstablished ZeroBasedCounter32, + tcpEStatsListenerAccepted ZeroBasedCounter32, + tcpEStatsListenerExceedBacklog ZeroBasedCounter32, + tcpEStatsListenerHCSynRcvd ZeroBasedCounter64, + tcpEStatsListenerHCInitial ZeroBasedCounter64, + tcpEStatsListenerHCEstablished ZeroBasedCounter64, + + + + tcpEStatsListenerHCAccepted ZeroBasedCounter64, + tcpEStatsListenerHCExceedBacklog ZeroBasedCounter64, + tcpEStatsListenerCurConns Gauge32, + tcpEStatsListenerMaxBacklog Unsigned32, + tcpEStatsListenerCurBacklog Gauge32, + tcpEStatsListenerCurEstabBacklog Gauge32 +} + +tcpEStatsListenerStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this listener was + established. 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." + ::= { tcpEStatsListenerEntry 1 } + +tcpEStatsListenerSynRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SYNs which have been received for this + listener. The total number of failed connections for + all reasons can be estimated to be tcpEStatsListenerSynRcvd + minus tcpEStatsListenerAccepted and + tcpEStatsListenerCurBacklog." + ::= { tcpEStatsListenerEntry 2 } + +tcpEStatsListenerInitial OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has allocated initial state and placed the + connection in the backlog. This may happen in the + SYN-RCVD or ESTABLISHED states, depending on the + implementation." + ::= { tcpEStatsListenerEntry 3 } + +tcpEStatsListenerEstablished OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of connections that have been established to + this endpoint (e.g., the number of first ACKs that have + been received for this listener)." + ::= { tcpEStatsListenerEntry 4 } + +tcpEStatsListenerAccepted OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has successfully issued an accept, removing the connection + from the backlog." + ::= { tcpEStatsListenerEntry 5 } + +tcpEStatsListenerExceedBacklog OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections dropped from the + backlog by this listener due to all reasons. This + includes all connections that are allocated initial + resources, but are not accepted for some reason." + ::= { tcpEStatsListenerEntry 6 } + +tcpEStatsListenerHCSynRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SYNs that have been received for this + listener on systems that can process (or reject) more + than 1 million connections per second. See + tcpEStatsListenerSynRcvd." + ::= { tcpEStatsListenerEntry 7 } + +tcpEStatsListenerHCInitial OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has allocated initial state and placed the connection + in the backlog on systems that can process (or reject) + more than 1 million connections per second. See + tcpEStatsListenerInitial." + ::= { tcpEStatsListenerEntry 8 } + + + +tcpEStatsListenerHCEstablished OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections that have been established to + this endpoint on systems that can process (or reject) more + than 1 million connections per second. See + tcpEStatsListenerEstablished." + ::= { tcpEStatsListenerEntry 9 } + +tcpEStatsListenerHCAccepted OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has successfully issued an accept, removing the connection + from the backlog on systems that can process (or reject) + more than 1 million connections per second. See + tcpEStatsListenerAccepted." + ::= { tcpEStatsListenerEntry 10 } + +tcpEStatsListenerHCExceedBacklog OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections dropped from the + backlog by this listener due to all reasons on + systems that can process (or reject) more than + 1 million connections per second. See + tcpEStatsListenerExceedBacklog." + ::= { tcpEStatsListenerEntry 11 } + +tcpEStatsListenerCurConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections in the ESTABLISHED + state, which have also been accepted. It excludes + connections that have been established but not accepted + because they are still subject to being discarded to + shed load without explicit action by either endpoint." + ::= { tcpEStatsListenerEntry 12 } + +tcpEStatsListenerMaxBacklog OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of connections allowed in the + backlog at one time." + ::= { tcpEStatsListenerEntry 13 } + +tcpEStatsListenerCurBacklog OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections that are in the backlog. + This gauge includes connections in ESTABLISHED or + SYN-RECEIVED states for which the Listener has not yet + issued an accept. + + If this listener is using some technique to implicitly + represent the SYN-RECEIVED states (e.g., by + cryptographically encoding the state information in the + initial sequence number, ISS), it MAY elect to exclude + connections in the SYN-RECEIVED state from the backlog." + ::= { tcpEStatsListenerEntry 14 } + +tcpEStatsListenerCurEstabBacklog OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections in the backlog that are + in the ESTABLISHED state, but for which the Listener has + not yet issued an accept." + ::= { tcpEStatsListenerEntry 15 } + + +-- ================================================================ +-- +-- TCP Connection ID Table +-- + +tcpEStatsConnectIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsConnectIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps information that uniquely identifies + each active TCP connection to the connection ID used by + + + + other tables in this MIB Module. It is an extension of + tcpConnectionTable in RFC 4022. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 2 } + +tcpEStatsConnectIdEntry OBJECT-TYPE + SYNTAX TcpEStatsConnectIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table maps a TCP connection + 4-tuple to a connection index." + AUGMENTS { tcpConnectionEntry } + ::= { tcpEStatsConnectIdTable 1 } + +TcpEStatsConnectIdEntry ::= SEQUENCE { + tcpEStatsConnectIndex Unsigned32 +} + +tcpEStatsConnectIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique integer value assigned to each TCP Connection + entry. + + The RECOMMENDED algorithm is to begin at 1 and increase to + some implementation-specific maximum value and then start + again at 1 skipping values already in use." + ::= { tcpEStatsConnectIdEntry 1 } + +-- ================================================================ +-- +-- Basic TCP Performance Statistics +-- + +tcpEStatsPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "This table contains objects that are useful for + + + + measuring TCP performance and first line problem + diagnosis. Most objects in this table directly expose + some TCP state variable or are easily implemented as + simple functions (e.g., the maximum value) of TCP + state variables. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 3 } + +tcpEStatsPerfEntry OBJECT-TYPE + SYNTAX TcpEStatsPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsPerfTable 1 } + +TcpEStatsPerfEntry ::= SEQUENCE { + + tcpEStatsPerfSegsOut ZeroBasedCounter32, + tcpEStatsPerfDataSegsOut ZeroBasedCounter32, + tcpEStatsPerfDataOctetsOut ZeroBasedCounter32, + tcpEStatsPerfHCDataOctetsOut ZeroBasedCounter64, + tcpEStatsPerfSegsRetrans ZeroBasedCounter32, + tcpEStatsPerfOctetsRetrans ZeroBasedCounter32, + tcpEStatsPerfSegsIn ZeroBasedCounter32, + tcpEStatsPerfDataSegsIn ZeroBasedCounter32, + tcpEStatsPerfDataOctetsIn ZeroBasedCounter32, + tcpEStatsPerfHCDataOctetsIn ZeroBasedCounter64, + tcpEStatsPerfElapsedSecs ZeroBasedCounter32, + tcpEStatsPerfElapsedMicroSecs ZeroBasedCounter32, + tcpEStatsPerfStartTimeStamp DateAndTime, + tcpEStatsPerfCurMSS Gauge32, + tcpEStatsPerfPipeSize Gauge32, + tcpEStatsPerfMaxPipeSize Gauge32, + tcpEStatsPerfSmoothedRTT Gauge32, + tcpEStatsPerfCurRTO Gauge32, + tcpEStatsPerfCongSignals ZeroBasedCounter32, + tcpEStatsPerfCurCwnd Gauge32, + tcpEStatsPerfCurSsthresh Gauge32, + tcpEStatsPerfTimeouts ZeroBasedCounter32, + tcpEStatsPerfCurRwinSent Gauge32, + + + + tcpEStatsPerfMaxRwinSent Gauge32, + tcpEStatsPerfZeroRwinSent ZeroBasedCounter32, + tcpEStatsPerfCurRwinRcvd Gauge32, + tcpEStatsPerfMaxRwinRcvd Gauge32, + tcpEStatsPerfZeroRwinRcvd ZeroBasedCounter32, + tcpEStatsPerfSndLimTransRwin ZeroBasedCounter32, + tcpEStatsPerfSndLimTransCwnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTransSnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeRwin ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeCwnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeSnd ZeroBasedCounter32 + } + +-- +-- The following objects provide statistics on aggregate +-- segments and data sent on a connection. These provide a +-- direct measure of the Internet capacity consumed by a +-- connection. +-- + +tcpEStatsPerfSegsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent." + ::= { tcpEStatsPerfEntry 1 } + +tcpEStatsPerfDataSegsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments sent containing a positive length + data segment." + ::= { tcpEStatsPerfEntry 2 } + +tcpEStatsPerfDataOctetsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of data contained in transmitted + segments, including retransmitted data. Note that this does + not include TCP headers." + ::= { tcpEStatsPerfEntry 3 } + + + + +tcpEStatsPerfHCDataOctetsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of data contained in transmitted + segments, including retransmitted data, on systems that can + transmit more than 10 million bits per second. Note that + this does not include TCP headers." + ::= { tcpEStatsPerfEntry 4 } + +tcpEStatsPerfSegsRetrans OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments transmitted containing at least some + retransmitted data." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 5 } + +tcpEStatsPerfOctetsRetrans OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets retransmitted." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 6 } + +tcpEStatsPerfSegsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received." + ::= { tcpEStatsPerfEntry 7 } + +tcpEStatsPerfDataSegsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments received containing a positive + + + + length data segment." + ::= { tcpEStatsPerfEntry 8 } + +tcpEStatsPerfDataOctetsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in received data segments, + including retransmitted data. Note that this does not + include TCP headers." + ::= { tcpEStatsPerfEntry 9 } + +tcpEStatsPerfHCDataOctetsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in received data segments, + including retransmitted data, on systems that can receive + more than 10 million bits per second. Note that this does + not include TCP headers." + ::= { tcpEStatsPerfEntry 10 } + +tcpEStatsPerfElapsedSecs OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The seconds part of the time elapsed between + tcpEStatsPerfStartTimeStamp and the most recent protocol + event (segment sent or received)." + ::= { tcpEStatsPerfEntry 11 } + +tcpEStatsPerfElapsedMicroSecs OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The micro-second part of time elapsed between + tcpEStatsPerfStartTimeStamp to the most recent protocol + event (segment sent or received). This may be updated in + whatever time granularity is the system supports." + ::= { tcpEStatsPerfEntry 12 } + + + +tcpEStatsPerfStartTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time at which this row was created and all + ZeroBasedCounters in the row were initialized to zero." + ::= { tcpEStatsPerfEntry 13 } + +-- +-- The following objects can be used to fit minimal +-- performance models to the TCP data rate. +-- + +tcpEStatsPerfCurMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current maximum segment size (MSS), in octets." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsPerfEntry 14 } + +tcpEStatsPerfPipeSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP senders current estimate of the number of + unacknowledged data octets in the network. + + While not in recovery (e.g., while the receiver is not + reporting missing data to the sender), this is precisely the + same as 'Flight size' as defined in RFC 2581, which can be + computed as SND.NXT minus SND.UNA. [RFC793] + + During recovery, the TCP sender has incomplete information + about the state of the network (e.g., which segments are + lost vs reordered, especially if the return path is also + dropping TCP acknowledgments). Current TCP standards do not + mandate any specific algorithm for estimating the number of + unacknowledged data octets in the network. + + RFC 3517 describes a conservative algorithm to use SACK + + + + information to estimate the number of unacknowledged data + octets in the network. tcpEStatsPerfPipeSize object SHOULD + be the same as 'pipe' as defined in RFC 3517 if it is + implemented. (Note that while not in recovery the pipe + algorithm yields the same values as flight size). + + If RFC 3517 is not implemented, the data octets in flight + SHOULD be estimated as SND.NXT minus SND.UNA adjusted by + some measure of the data that has left the network and + retransmitted data. For example, with Reno or NewReno style + TCP, the number of duplicate acknowledgment is used to + count the number of segments that have left the network. + That is, + PipeSize=SND.NXT-SND.UNA+(retransmits-dupacks)*CurMSS" + REFERENCE + "RFC 793, RFC 2581, RFC 3517" + ::= { tcpEStatsPerfEntry 15 } + +tcpEStatsPerfMaxPipeSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of tcpEStatsPerfPipeSize, for this + connection." + REFERENCE + "RFC 793, RFC 2581, RFC 3517" + ::= { tcpEStatsPerfEntry 16 } + +tcpEStatsPerfSmoothedRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The smoothed round trip time used in calculation of the + RTO. See SRTT in [RFC2988]." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 17 } + +tcpEStatsPerfCurRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The current value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 18 } + +tcpEStatsPerfCongSignals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multiplicative downward congestion window + adjustments due to all forms of congestion signals, + including Fast Retransmit, Explicit Congestion Notification + (ECN), and timeouts. This object summarizes all events that + invoke the MD portion of Additive Increase Multiplicative + Decrease (AIMD) congestion control, and as such is the best + indicator of how a cwnd is being affected by congestion. + + Note that retransmission timeouts multiplicatively reduce + the window implicitly by setting ssthresh, and SHOULD be + included in tcpEStatsPerfCongSignals. In order to minimize + spurious congestion indications due to out-of-order + segments, tcpEStatsPerfCongSignals SHOULD be incremented in + association with the Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 19 } + +tcpEStatsPerfCurCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current congestion window, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 20 } + +tcpEStatsPerfCurSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current slow start threshold in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + + + + ::= { tcpEStatsPerfEntry 21 } + +tcpEStatsPerfTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the retransmit timeout has expired when + the RTO backoff multiplier is equal to one." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 22 } + +-- +-- The following objects instrument receiver window updates +-- sent by the local receiver to the remote sender. These can +-- be used to determine if the local receiver is exerting flow +-- control back pressure on the remote sender. +-- + +tcpEStatsPerfCurRwinSent OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent window advertisement sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 23 } + +tcpEStatsPerfMaxRwinSent OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum window advertisement sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 24 } + +tcpEStatsPerfZeroRwinSent OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments sent announcing a zero + + + + receive window, when the previously announced window was + not zero." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 25 } + +-- +-- The following objects instrument receiver window updates +-- from the far end-system to determine if the remote receiver +-- has sufficient buffer space or is exerting flow-control +-- back pressure on the local sender. +-- + +tcpEStatsPerfCurRwinRcvd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent window advertisement received, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 26 } + +tcpEStatsPerfMaxRwinRcvd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum window advertisement received, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 27 } + +tcpEStatsPerfZeroRwinRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments received announcing a zero + receive window, when the previously announced window was + not zero." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 28 } + +-- + + + +-- The following optional objects can be used to quickly +-- identify which subsystems are limiting TCP performance. +-- There are three parallel pairs of instruments that measure +-- the extent to which TCP performance is limited by the +-- announced receiver window (indicating a receiver +-- bottleneck), the current congestion window or +-- retransmission timeout (indicating a path bottleneck) and +-- all others events (indicating a sender bottleneck). +-- +-- These instruments SHOULD be updated every time the TCP +-- output routine stops sending data. The elapsed time since +-- the previous stop is accumulated into the appropriate +-- object as determined by the previous stop reason (e.g., +-- stop state). The current stop reason determines which timer +-- will be updated the next time TCP output stops. +-- +-- Since there is no explicit stop at the beginning of a +-- timeout, it is necessary to retroactively reclassify the +-- previous stop as 'Congestion Limited'. +-- + +tcpEStatsPerfSndLimTransRwin OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Receiver Limited' state + from either the 'Congestion Limited' or 'Sender Limited' + states. This state is entered whenever TCP transmission + stops because the sender has filled the announced receiver + window, i.e., when SND.NXT has advanced to SND.UNA + + SND.WND - 1 as described in RFC 793." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 31 } + +tcpEStatsPerfSndLimTransCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Congestion Limited' + state from either the 'Receiver Limited' or 'Sender + Limited' states. This state is entered whenever TCP + transmission stops because the sender has reached some + limit defined by congestion control (e.g., cwnd) or other + algorithms (retransmission timeouts) designed to control + network traffic. See the definition of 'CONGESTION WINDOW' + + + + in RFC 2581." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 32 } + +tcpEStatsPerfSndLimTransSnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Sender Limited' state + from either the 'Receiver Limited' or 'Congestion Limited' + states. This state is entered whenever TCP transmission + stops due to some sender limit such as running out of + application data or other resources and the Karn algorithm. + When TCP stops sending data for any reason, which cannot be + classified as Receiver Limited or Congestion Limited, it + MUST be treated as Sender Limited." + ::= { tcpEStatsPerfEntry 33 } + +tcpEStatsPerfSndLimTimeRwin OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time spent in the 'Receiver Limited' state. + See tcpEStatsPerfSndLimTransRwin." + ::= { tcpEStatsPerfEntry 34 } + +tcpEStatsPerfSndLimTimeCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time spent in the 'Congestion Limited' + state. See tcpEStatsPerfSndLimTransCwnd. When there is a + retransmission timeout, it SHOULD be counted in + tcpEStatsPerfSndLimTimeCwnd (and not the cumulative time + for some other state.)" + ::= { tcpEStatsPerfEntry 35 } + +tcpEStatsPerfSndLimTimeSnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The cumulative time spent in the 'Sender Limited' state. + See tcpEStatsPerfSndLimTransSnd." + ::= { tcpEStatsPerfEntry 36 } + +-- ================================================================ +-- +-- Statistics for diagnosing path problems +-- + +tcpEStatsPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be used to infer + detailed behavior of the Internet path, such as the + extent that there is reordering, ECN bits, and if + RTT fluctuations are correlated to losses. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 4 } + +tcpEStatsPathEntry OBJECT-TYPE + SYNTAX TcpEStatsPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsPathTable 1 } + +TcpEStatsPathEntry ::= SEQUENCE { + + tcpEStatsPathRetranThresh Gauge32, + tcpEStatsPathNonRecovDAEpisodes ZeroBasedCounter32, + tcpEStatsPathSumOctetsReordered ZeroBasedCounter32, + tcpEStatsPathNonRecovDA ZeroBasedCounter32, + tcpEStatsPathSampleRTT Gauge32, + tcpEStatsPathRTTVar Gauge32, + tcpEStatsPathMaxRTT Gauge32, + tcpEStatsPathMinRTT Gauge32, + tcpEStatsPathSumRTT ZeroBasedCounter32, + + + + tcpEStatsPathHCSumRTT ZeroBasedCounter64, + tcpEStatsPathCountRTT ZeroBasedCounter32, + tcpEStatsPathMaxRTO Gauge32, + tcpEStatsPathMinRTO Gauge32, + tcpEStatsPathIpTtl Unsigned32, + tcpEStatsPathIpTosIn OCTET STRING, + tcpEStatsPathIpTosOut OCTET STRING, + tcpEStatsPathPreCongSumCwnd ZeroBasedCounter32, + tcpEStatsPathPreCongSumRTT ZeroBasedCounter32, + tcpEStatsPathPostCongSumRTT ZeroBasedCounter32, + tcpEStatsPathPostCongCountRTT ZeroBasedCounter32, + tcpEStatsPathECNsignals ZeroBasedCounter32, + tcpEStatsPathDupAckEpisodes ZeroBasedCounter32, + tcpEStatsPathRcvRTT Gauge32, + tcpEStatsPathDupAcksOut ZeroBasedCounter32, + tcpEStatsPathCERcvd ZeroBasedCounter32, + tcpEStatsPathECESent ZeroBasedCounter32 + } + +-- +-- The following optional objects can be used to infer segment +-- reordering on the path from the local sender to the remote +-- receiver. +-- + +tcpEStatsPathRetranThresh OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate acknowledgments required to trigger + Fast Retransmit. Note that although this is constant in + traditional Reno TCP implementations, it is adaptive in + many newer TCPs." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 1 } + +tcpEStatsPathNonRecovDAEpisodes OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate acknowledgment episodes that did + not trigger a Fast Retransmit because ACK advanced prior to + the number of duplicate acknowledgments reaching + RetranThresh. + + + + + In many implementations this is the number of times the + 'dupacks' counter is set to zero when it is non-zero but + less than RetranThresh. + + Note that the change in tcpEStatsPathNonRecovDAEpisodes + divided by the change in tcpEStatsPerfDataSegsOut is an + estimate of the frequency of data reordering on the forward + path over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 2 } + +tcpEStatsPathSumOctetsReordered OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the amounts SND.UNA advances on the + acknowledgment which ends a dup-ack episode without a + retransmission. + + Note the change in tcpEStatsPathSumOctetsReordered divided + by the change in tcpEStatsPathNonRecovDAEpisodes is an + estimates of the average reordering distance, over some + interval." + ::= { tcpEStatsPathEntry 3 } + +tcpEStatsPathNonRecovDA OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Duplicate acks (or SACKS) that did not trigger a Fast + Retransmit because ACK advanced prior to the number of + duplicate acknowledgments reaching RetranThresh. + + In many implementations, this is the sum of the 'dupacks' + counter, just before it is set to zero because ACK advanced + without a Fast Retransmit. + + Note that the change in tcpEStatsPathNonRecovDA divided by + the change in tcpEStatsPathNonRecovDAEpisodes is an + estimate of the average reordering distance in segments + over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 4 } + + + +-- +-- The following optional objects instrument the round trip +-- time estimator and the retransmission timeout timer. +-- + +tcpEStatsPathSampleRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent raw round trip time measurement used in + calculation of the RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 11 } + +tcpEStatsPathRTTVar OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round trip time variation used in calculation of the + RTO. See RTTVAR in [RFC2988]." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 12 } + +tcpEStatsPathMaxRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum sampled round trip time." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 13 } + +tcpEStatsPathMinRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum sampled round trip time." + REFERENCE + + + + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 14 } + +tcpEStatsPathSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of all sampled round trip times. + + Note that the change in tcpEStatsPathSumRTT divided by the + change in tcpEStatsPathCountRTT is the mean RTT, uniformly + averaged over an enter interval." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 15 } + +tcpEStatsPathHCSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of all sampled round trip times, on all systems + that implement multiple concurrent RTT measurements. + + Note that the change in tcpEStatsPathHCSumRTT divided by + the change in tcpEStatsPathCountRTT is the mean RTT, + uniformly averaged over an enter interval." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 16 } + +tcpEStatsPathCountRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of round trip time samples included in + tcpEStatsPathSumRTT and tcpEStatsPathHCSumRTT." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 17 } + +tcpEStatsPathMaxRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 18 } + +tcpEStatsPathMinRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 19 } + +-- +-- The following optional objects provide information about +-- how TCP is using the IP layer. +-- + +tcpEStatsPathIpTtl OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the TTL field carried in the most recently + received IP header. This is sometimes useful to detect + changing or unstable routes." + REFERENCE + "RFC 791, Internet Protocol" + ::= { tcpEStatsPathEntry 20 } + +tcpEStatsPathIpTosIn OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the IPv4 Type of Service octet, or the IPv6 + traffic class octet, carried in the most recently received + IP header. + + This is useful to diagnose interactions between TCP and any + IP layer packet scheduling and delivery policy, which might + be in effect to implement Diffserv." + + + + REFERENCE + "RFC 3260, New Terminology and Clarifications for Diffserv" + ::= { tcpEStatsPathEntry 21 } + +tcpEStatsPathIpTosOut OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the IPv4 Type Of Service octet, or the IPv6 + traffic class octet, carried in the most recently + transmitted IP header. + + This is useful to diagnose interactions between TCP and any + IP layer packet scheduling and delivery policy, which might + be in effect to implement Diffserv." + REFERENCE + "RFC 3260, New Terminology and Clarifications for Diffserv" + ::= { tcpEStatsPathEntry 22 } + +-- +-- The following optional objects characterize the congestion +-- feedback signals by collecting statistics on how the +-- congestion events are correlated to losses, changes in RTT +-- and other protocol events. +-- + +tcpEStatsPathPreCongSumCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the values of the congestion window, in octets, + captured each time a congestion signal is received. This + MUST be updated each time tcpEStatsPerfCongSignals is + incremented, such that the change in + tcpEStatsPathPreCongSumCwnd divided by the change in + tcpEStatsPerfCongSignals is the average window (over some + interval) just prior to a congestion signal." + ::= { tcpEStatsPathEntry 23 } + +tcpEStatsPathPreCongSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Sum of the last sample of the RTT (tcpEStatsPathSampleRTT) + prior to the received congestion signals. This MUST be + updated each time tcpEStatsPerfCongSignals is incremented, + such that the change in tcpEStatsPathPreCongSumRTT divided by + the change in tcpEStatsPerfCongSignals is the average RTT + (over some interval) just prior to a congestion signal." + ::= { tcpEStatsPathEntry 24 } + +tcpEStatsPathPostCongSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Sum of the first sample of the RTT (tcpEStatsPathSampleRTT) + following each congestion signal. Such that the change in + tcpEStatsPathPostCongSumRTT divided by the change in + tcpEStatsPathPostCongCountRTT is the average RTT (over some + interval) just after a congestion signal." + ::= { tcpEStatsPathEntry 25 } + +tcpEStatsPathPostCongCountRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RTT samples included in + tcpEStatsPathPostCongSumRTT such that the change in + tcpEStatsPathPostCongSumRTT divided by the change in + tcpEStatsPathPostCongCountRTT is the average RTT (over some + interval) just after a congestion signal." + ::= { tcpEStatsPathEntry 26 } + +-- +-- The following optional objects can be used to detect other +-- types of non-loss congestion signals such as source quench +-- or ECN. +-- + +tcpEStatsPathECNsignals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion signals delivered to the TCP + sender via explicit congestion notification (ECN). This is + typically the number of segments bearing Echo Congestion + + + + Experienced (ECE) bits, but + should also include segments failing the ECN nonce check or + other explicit congestion signals." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 27 } + +-- +-- The following optional objects are receiver side +-- instruments of the path from the sender to the receiver. In +-- general, the receiver has less information about the state +-- of the path because the receiver does not have a robust +-- mechanism to infer the sender's actions. +-- + +tcpEStatsPathDupAckEpisodes OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Duplicate Acks Sent when prior Ack was not + duplicate. This is the number of times that a contiguous + series of duplicate acknowledgments have been sent. + + This is an indication of the number of data segments lost + or reordered on the path from the remote TCP endpoint to + the near TCP endpoint." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 28 } + +tcpEStatsPathRcvRTT OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receiver's estimate of the Path RTT. + + Adaptive receiver window algorithms depend on the receiver + to having a good estimate of the path RTT." + ::= { tcpEStatsPathEntry 29 } + +tcpEStatsPathDupAcksOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of duplicate ACKs sent. The ratio of the change + in tcpEStatsPathDupAcksOut to the change in + tcpEStatsPathDupAckEpisodes is an indication of reorder or + recovery distance over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 30 } + +tcpEStatsPathCERcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments received with IP headers bearing + Congestion Experienced (CE) markings." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 31 } + +tcpEStatsPathECESent OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the Echo Congestion Experienced (ECE) bit + in the TCP header has been set (transitioned from 0 to 1), + due to a Congestion Experienced (CE) marking on an IP + header. Note that ECE can be set and reset only once per + RTT, while CE can be set on many segments per RTT." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 32 } + +-- ================================================================ +-- +-- Statistics for diagnosing stack algorithms +-- + +tcpEStatsStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that are most useful for + determining how well some of the TCP control + algorithms are coping with this particular + + + + path. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 5 } + +tcpEStatsStackEntry OBJECT-TYPE + SYNTAX TcpEStatsStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsStackTable 1 } + +TcpEStatsStackEntry ::= SEQUENCE { + + tcpEStatsStackActiveOpen TruthValue, + tcpEStatsStackMSSSent Unsigned32, + tcpEStatsStackMSSRcvd Unsigned32, + tcpEStatsStackWinScaleSent Integer32, + tcpEStatsStackWinScaleRcvd Integer32, + tcpEStatsStackTimeStamps TcpEStatsNegotiated, + tcpEStatsStackECN TcpEStatsNegotiated, + tcpEStatsStackWillSendSACK TcpEStatsNegotiated, + tcpEStatsStackWillUseSACK TcpEStatsNegotiated, + tcpEStatsStackState INTEGER, + tcpEStatsStackNagle TruthValue, + tcpEStatsStackMaxSsCwnd Gauge32, + tcpEStatsStackMaxCaCwnd Gauge32, + tcpEStatsStackMaxSsthresh Gauge32, + tcpEStatsStackMinSsthresh Gauge32, + tcpEStatsStackInRecovery INTEGER, + tcpEStatsStackDupAcksIn ZeroBasedCounter32, + tcpEStatsStackSpuriousFrDetected ZeroBasedCounter32, + tcpEStatsStackSpuriousRtoDetected ZeroBasedCounter32, + tcpEStatsStackSoftErrors ZeroBasedCounter32, + tcpEStatsStackSoftErrorReason INTEGER, + tcpEStatsStackSlowStart ZeroBasedCounter32, + tcpEStatsStackCongAvoid ZeroBasedCounter32, + tcpEStatsStackOtherReductions ZeroBasedCounter32, + tcpEStatsStackCongOverCount ZeroBasedCounter32, + tcpEStatsStackFastRetran ZeroBasedCounter32, + tcpEStatsStackSubsequentTimeouts ZeroBasedCounter32, + + + + tcpEStatsStackCurTimeoutCount Gauge32, + tcpEStatsStackAbruptTimeouts ZeroBasedCounter32, + tcpEStatsStackSACKsRcvd ZeroBasedCounter32, + tcpEStatsStackSACKBlocksRcvd ZeroBasedCounter32, + tcpEStatsStackSendStall ZeroBasedCounter32, + tcpEStatsStackDSACKDups ZeroBasedCounter32, + tcpEStatsStackMaxMSS Gauge32, + tcpEStatsStackMinMSS Gauge32, + tcpEStatsStackSndInitial Unsigned32, + tcpEStatsStackRecInitial Unsigned32, + tcpEStatsStackCurRetxQueue Gauge32, + tcpEStatsStackMaxRetxQueue Gauge32, + tcpEStatsStackCurReasmQueue Gauge32, + tcpEStatsStackMaxReasmQueue Gauge32 + } + +-- +-- The following objects reflect TCP options carried on the +-- SYN or SYN-ACK. These options are used to provide +-- additional protocol parameters or to enable various +-- optional TCP features or algorithms. +-- +-- Except as noted, the TCP protocol does not permit these +-- options to change after the SYN exchange. +-- + +tcpEStatsStackActiveOpen OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) if the local connection traversed the SYN-SENT + state, else false(2)." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 1 } + +tcpEStatsStackMSSSent OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value sent in an MSS option, or zero if none." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 2 } + + + + +tcpEStatsStackMSSRcvd OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value received in an MSS option, or zero if none." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 3 } + +tcpEStatsStackWinScaleSent OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the transmitted window scale option if one was + sent; otherwise, a value of -1. + + Note that if both tcpEStatsStackWinScaleSent and + tcpEStatsStackWinScaleRcvd are not -1, then Rcv.Wind.Scale + will be the same as this value and used to scale receiver + window announcements from the local host to the remote + host." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 4 } + +tcpEStatsStackWinScaleRcvd OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the received window scale option if one was + received; otherwise, a value of -1. + + Note that if both tcpEStatsStackWinScaleSent and + tcpEStatsStackWinScaleRcvd are not -1, then Snd.Wind.Scale + will be the same as this value and used to scale receiver + window announcements from the remote host to the local + host." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 5 } + +tcpEStatsStackTimeStamps OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Enabled(1) if TCP timestamps have been negotiated on, + selfDisabled(2) if they are disabled or not implemented on + the local host, or peerDisabled(3) if not negotiated by the + remote hosts." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 6 } + +tcpEStatsStackECN OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if Explicit Congestion Notification (ECN) has + been negotiated on, selfDisabled(2) if it is disabled or + not implemented on the local host, or peerDisabled(3) if + not negotiated by the remote hosts." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsStackEntry 7 } + +tcpEStatsStackWillSendSACK OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if the local host will send SACK options, + selfDisabled(2) if SACK is disabled or not implemented on + the local host, or peerDisabled(3) if the remote host did + not send the SACK-permitted option. + + Note that SACK negotiation is not symmetrical. SACK can + enabled on one side of the connection and not the other." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 8 } + +tcpEStatsStackWillUseSACK OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if the local host will process SACK options, + selfDisabled(2) if SACK is disabled or not implemented on + the local host, or peerDisabled(3) if the remote host sends + + + + duplicate ACKs without SACK options, or the local host + otherwise decides not to process received SACK options. + + Unlike other TCP options, the remote data receiver cannot + explicitly indicate if it is able to generate SACK options. + When sending data, the local host has to deduce if the + remote receiver is sending SACK options. This object can + transition from Enabled(1) to peerDisabled(3) after the SYN + exchange. + + Note that SACK negotiation is not symmetrical. SACK can + enabled on one side of the connection and not the other." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 9 } + +-- +-- The following two objects reflect the current state of the +-- connection. +-- + +tcpEStatsStackState OBJECT-TYPE + SYNTAX INTEGER { + tcpESStateClosed(1), + tcpESStateListen(2), + tcpESStateSynSent(3), + tcpESStateSynReceived(4), + tcpESStateEstablished(5), + tcpESStateFinWait1(6), + tcpESStateFinWait2(7), + tcpESStateCloseWait(8), + tcpESStateLastAck(9), + tcpESStateClosing(10), + tcpESStateTimeWait(11), + tcpESStateDeleteTcb(12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value representing the connection state from the + TCP State Transition Diagram. + + The value listen(2) is included only for parallelism to the + old tcpConnTable, and SHOULD NOT be used because the listen + state in managed by the tcpListenerTable. + + The value DeleteTcb(12) is included only for parallelism to + the tcpConnTable mechanism for terminating connections, + + + + although this table does not permit writing." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 10 } + +tcpEStatsStackNagle OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) if the Nagle algorithm is being used, else + false(2)." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 11 } + +-- +-- The following objects instrument the overall operation of +-- TCP congestion control and data retransmissions. These +-- instruments are sufficient to fit the actual performance to +-- an updated macroscopic performance model [RFC2581] [Mat97] +-- [Pad98]. +-- + +tcpEStatsStackMaxSsCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum congestion window used during Slow Start, in + octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 12 } + +tcpEStatsStackMaxCaCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum congestion window used during Congestion + Avoidance, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 13 } + + + +tcpEStatsStackMaxSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum slow start threshold, excluding the initial + value." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 14 } + +tcpEStatsStackMinSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum slow start threshold." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 15 } + +tcpEStatsStackInRecovery OBJECT-TYPE + SYNTAX INTEGER { + tcpESDataContiguous(1), + tcpESDataUnordered(2), + tcpESDataRecovery(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value representing the state of the loss + recovery for this connection. + + tcpESDataContiguous(1) indicates that the remote receiver + is reporting contiguous data (no duplicate acknowledgments + or SACK options) and that there are no unacknowledged + retransmissions. + + tcpESDataUnordered(2) indicates that the remote receiver is + reporting missing or out-of-order data (e.g., sending + duplicate acknowledgments or SACK options) and that there + are no unacknowledged retransmissions (because the missing + data has not yet been retransmitted). + + tcpESDataRecovery(3) indicates that the sender has + outstanding retransmitted data that is still + + + + unacknowledged." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 16 } + +tcpEStatsStackDupAcksIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate ACKs received." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 17 } + +tcpEStatsStackSpuriousFrDetected OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments reporting out-of-order + segments after the Fast Retransmit algorithm has already + retransmitted the segments. (For example as detected by the + Eifel algorithm).'" + REFERENCE + "RFC 3522, The Eifel Detection Algorithm for TCP" + ::= { tcpEStatsStackEntry 18 } + +tcpEStatsStackSpuriousRtoDetected OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments reporting segments that have + already been retransmitted due to a Retransmission Timeout." + ::= { tcpEStatsStackEntry 19 } + +-- +-- The following optional objects instrument unusual protocol +-- events that probably indicate implementation problems in +-- the protocol or path. +-- + +tcpEStatsStackSoftErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of segments that fail various consistency tests + during TCP input processing. Soft errors might cause the + segment to be discarded but some do not. Some of these soft + errors cause the generation of a TCP acknowledgment, while + others are silently discarded." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 21 } + +tcpEStatsStackSoftErrorReason OBJECT-TYPE + SYNTAX INTEGER { + belowDataWindow(1), + aboveDataWindow(2), + belowAckWindow(3), + aboveAckWindow(4), + belowTSWindow(5), + aboveTSWindow(6), + dataCheckSum(7), + otherSoftError(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies which consistency test most recently + failed during TCP input processing. This object SHOULD be + set every time tcpEStatsStackSoftErrors is incremented. The + codes are as follows: + + belowDataWindow(1) - All data in the segment is below + SND.UNA. (Normal for keep-alives and zero window probes). + + aboveDataWindow(2) - Some data in the segment is above + SND.WND. (Indicates an implementation bug or possible + attack). + + belowAckWindow(3) - ACK below SND.UNA. (Indicates that the + return path is reordering ACKs) + + aboveAckWindow(4) - An ACK for data that we have not sent. + (Indicates an implementation bug or possible attack). + + belowTSWindow(5) - TSecr on the segment is older than the + current TS.Recent (Normal for the rare case where PAWS + detects data reordered by the network). + + aboveTSWindow(6) - TSecr on the segment is newer than the + current TS.Recent. (Indicates an implementation bug or + possible attack). + + + + + dataCheckSum(7) - Incorrect checksum. Note that this value + is intrinsically fragile, because the header fields used to + identify the connection may have been corrupted. + + otherSoftError(8) - All other soft errors not listed + above." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 22 } + +-- +-- The following optional objects expose the detailed +-- operation of the congestion control algorithms. +-- + +tcpEStatsStackSlowStart OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the congestion window has been + increased by the Slow Start algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 23 } + +tcpEStatsStackCongAvoid OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the congestion window has been + increased by the Congestion Avoidance algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 24 } + +tcpEStatsStackOtherReductions OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion window reductions made as a result + of anything other than AIMD congestion control algorithms. + Examples of non-multiplicative window reductions include + Congestion Window Validation [RFC2861] and experimental + algorithms such as Vegas [Bra94]. + + + + + All window reductions MUST be counted as either + tcpEStatsPerfCongSignals or tcpEStatsStackOtherReductions." + REFERENCE + "RFC 2861, TCP Congestion Window Validation" + ::= { tcpEStatsStackEntry 25 } + +tcpEStatsStackCongOverCount OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion events that were 'backed out' of + the congestion control state machine such that the + congestion window was restored to a prior value. This can + happen due to the Eifel algorithm [RFC3522] or other + algorithms that can be used to detect and cancel spurious + invocations of the Fast Retransmit Algorithm. + + Although it may be feasible to undo the effects of spurious + invocation of the Fast Retransmit congestion events cannot + easily be backed out of tcpEStatsPerfCongSignals and + tcpEStatsPathPreCongSumCwnd, etc." + REFERENCE + "RFC 3522, The Eifel Detection Algorithm for TCP" + ::= { tcpEStatsStackEntry 26 } + +tcpEStatsStackFastRetran OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invocations of the Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 27 } + +tcpEStatsStackSubsequentTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the retransmit timeout has expired after + the RTO has been doubled. See Section 5.5 of RFC 2988." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsStackEntry 28 } + + + + +tcpEStatsStackCurTimeoutCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of times the retransmit timeout has + expired without receiving an acknowledgment for new data. + tcpEStatsStackCurTimeoutCount is reset to zero when new + data is acknowledged and incremented for each invocation of + Section 5.5 of RFC 2988." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsStackEntry 29 } + +tcpEStatsStackAbruptTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of timeouts that occurred without any + immediately preceding duplicate acknowledgments or other + indications of congestion. Abrupt Timeouts indicate that + the path lost an entire window of data or acknowledgments. + + Timeouts that are preceded by duplicate acknowledgments or + other congestion signals (e.g., ECN) are not counted as + abrupt, and might have been avoided by a more sophisticated + Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 30 } + +tcpEStatsStackSACKsRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SACK options received." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 31 } + +tcpEStatsStackSACKBlocksRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SACK blocks received (within SACK options)." + + + + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 32 } + +tcpEStatsStackSendStall OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of interface stalls or other sender local + resource limitations that are treated as congestion + signals." + ::= { tcpEStatsStackEntry 33 } + +tcpEStatsStackDSACKDups OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate segments reported to the local host + by D-SACK blocks." + REFERENCE + "RFC 2883, An Extension to the Selective Acknowledgement + (SACK) Option for TCP" + ::= { tcpEStatsStackEntry 34 } + +-- +-- The following optional objects instrument path MTU +-- discovery. +-- + +tcpEStatsStackMaxMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum MSS, in octets." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsStackEntry 35 } + +tcpEStatsStackMinMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The minimum MSS, in octets." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsStackEntry 36 } + +-- +-- The following optional initial value objects are useful for +-- conformance testing instruments on application progress and +-- consumed network resources. +-- + +tcpEStatsStackSndInitial OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial send sequence number. Note that by definition + tcpEStatsStackSndInitial never changes for a given + connection." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 37 } + +tcpEStatsStackRecInitial OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial receive sequence number. Note that by definition + tcpEStatsStackRecInitial never changes for a given + connection." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 38 } + +-- +-- The following optional objects instrument the senders +-- buffer usage, including any buffering in the application +-- interface to TCP and the retransmit queue. All 'buffer +-- memory' instruments are assumed to include OS data +-- structure overhead. +-- + +tcpEStatsStackCurRetxQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of octets of data occupying the + retransmit queue." + ::= { tcpEStatsStackEntry 39 } + +tcpEStatsStackMaxRetxQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets of data occupying the + retransmit queue." + ::= { tcpEStatsStackEntry 40 } + +tcpEStatsStackCurReasmQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of sequence space spanned by + the reassembly queue. This is generally the difference + between rcv.nxt and the sequence number of the right most + edge of the reassembly queue." + ::= { tcpEStatsStackEntry 41 } + +tcpEStatsStackMaxReasmQueue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of tcpEStatsStackCurReasmQueue" + ::= { tcpEStatsStackEntry 42 } + +-- ================================================================ +-- +-- Statistics for diagnosing interactions between +-- applications and TCP. +-- + +tcpEStatsAppTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that are useful for + determining if the application using TCP is + + + + limiting TCP performance. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 6 } + +tcpEStatsAppEntry OBJECT-TYPE + SYNTAX TcpEStatsAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsAppTable 1 } + +TcpEStatsAppEntry ::= SEQUENCE { + + tcpEStatsAppSndUna Counter32, + tcpEStatsAppSndNxt Unsigned32, + tcpEStatsAppSndMax Counter32, + tcpEStatsAppThruOctetsAcked ZeroBasedCounter32, + tcpEStatsAppHCThruOctetsAcked ZeroBasedCounter64, + tcpEStatsAppRcvNxt Counter32, + tcpEStatsAppThruOctetsReceived ZeroBasedCounter32, + tcpEStatsAppHCThruOctetsReceived ZeroBasedCounter64, + tcpEStatsAppCurAppWQueue Gauge32, + tcpEStatsAppMaxAppWQueue Gauge32, + tcpEStatsAppCurAppRQueue Gauge32, + tcpEStatsAppMaxAppRQueue Gauge32 + } + +-- +-- The following objects provide throughput statistics for the +-- connection including sequence numbers and elapsed +-- application data. These permit direct observation of the +-- applications progress, in terms of elapsed data delivery +-- and elapsed time. +-- + +tcpEStatsAppSndUna OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of SND.UNA, the oldest unacknowledged sequence + number. + + Note that SND.UNA is a TCP state variable that is congruent + to Counter32 semantics." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 1 } + +tcpEStatsAppSndNxt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SND.NXT, the next sequence number to be sent. + Note that tcpEStatsAppSndNxt is not monotonic (and thus not + a counter) because TCP sometimes retransmits lost data by + pulling tcpEStatsAppSndNxt back to the missing data." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 2 } + +tcpEStatsAppSndMax OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The farthest forward (right most or largest) SND.NXT value. + Note that this will be equal to tcpEStatsAppSndNxt except + when tcpEStatsAppSndNxt is pulled back during recovery." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 3 } + +tcpEStatsAppThruOctetsAcked OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been received. Note that this will be the sum of + changes to tcpEStatsAppSndUna." + ::= { tcpEStatsAppEntry 4 } + +tcpEStatsAppHCThruOctetsAcked OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been received, on systems that can receive more than + 10 million bits per second. Note that this will be the sum + of changes in tcpEStatsAppSndUna." + ::= { tcpEStatsAppEntry 5 } + +tcpEStatsAppRcvNxt OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of RCV.NXT. The next sequence number expected on + an incoming segment, and the left or lower edge of the + receive window. + + Note that RCV.NXT is a TCP state variable that is congruent + to Counter32 semantics." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 6 } + +tcpEStatsAppThruOctetsReceived OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been sent. Note that this will be the sum of changes + to tcpEStatsAppRcvNxt." + ::= { tcpEStatsAppEntry 7 } + +tcpEStatsAppHCThruOctetsReceived OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been sent, on systems that can transmit more than 10 + million bits per second. Note that this will be the sum of + changes in tcpEStatsAppRcvNxt." + ::= { tcpEStatsAppEntry 8 } + +tcpEStatsAppCurAppWQueue OBJECT-TYPE + + + + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of application data buffered + by TCP, pending first transmission, i.e., to the left of + SND.NXT or SndMax. This data will generally be transmitted + (and SND.NXT advanced to the left) as soon as there is an + available congestion window (cwnd) or receiver window + (rwin). This is the amount of data readily available for + transmission, without scheduling the application. TCP + performance may suffer if there is insufficient queued + write data." + ::= { tcpEStatsAppEntry 11 } + +tcpEStatsAppMaxAppWQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets of application data buffered + by TCP, pending first transmission. This is the maximum + value of tcpEStatsAppCurAppWQueue. This pair of objects can + be used to determine if insufficient queued data is steady + state (suggesting insufficient queue space) or transient + (suggesting insufficient application performance or + excessive CPU load or scheduler latency)." + ::= { tcpEStatsAppEntry 12 } + +tcpEStatsAppCurAppRQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of application data that has + been acknowledged by TCP but not yet delivered to the + application." + ::= { tcpEStatsAppEntry 13 } + +tcpEStatsAppMaxAppRQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum number of octets of application data that has + been acknowledged by TCP but not yet delivered to the + application." + ::= { tcpEStatsAppEntry 14 } + +-- ================================================================ +-- +-- Controls for Tuning TCP +-- + +tcpEStatsTuneTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsTuneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains per-connection controls that can + be used to work around a number of common problems that + plague TCP over some paths. All can be characterized as + limiting the growth of the congestion window so as to + prevent TCP from overwhelming some component in the + path. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 7 } + +tcpEStatsTuneEntry OBJECT-TYPE + SYNTAX TcpEStatsTuneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table is a control that can be used to + place limits on each active TCP connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsTuneTable 1 } + +TcpEStatsTuneEntry ::= SEQUENCE { + + tcpEStatsTuneLimCwnd Unsigned32, + tcpEStatsTuneLimSsthresh Unsigned32, + tcpEStatsTuneLimRwin Unsigned32, + tcpEStatsTuneLimMSS Unsigned32 + } + +tcpEStatsTuneLimCwnd OBJECT-TYPE + SYNTAX Unsigned32 + + + + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to set the maximum congestion window that may be + used, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsTuneEntry 1 } + +tcpEStatsTuneLimSsthresh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to limit the maximum queue space (in octets) that + this TCP connection is likely to occupy during slowstart. + + It can be implemented with the algorithm described in + RFC 3742 by setting the max_ssthresh parameter to twice + tcpEStatsTuneLimSsthresh. + + This algorithm can be used to overcome some TCP performance + problems over network paths that do not have sufficient + buffering to withstand the bursts normally present during + slowstart." + REFERENCE + "RFC 3742, Limited Slow-Start for TCP with Large Congestion + Windows" + ::= { tcpEStatsTuneEntry 2 } + +tcpEStatsTuneLimRwin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to set the maximum window advertisement that may + be sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsTuneEntry 3 } + +tcpEStatsTuneLimMSS OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "A control to limit the maximum segment size in octets, that + this TCP connection can use." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsTuneEntry 4 } + +-- ================================================================ +-- +-- TCP Extended Statistics Notifications Group +-- + +tcpEStatsEstablishNotification NOTIFICATION-TYPE + OBJECTS { + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The indicated connection has been accepted + (or alternatively entered the established state)." + ::= { tcpEStatsNotifications 1 } + +tcpEStatsCloseNotification NOTIFICATION-TYPE + OBJECTS { + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The indicated connection has left the + established state" + ::= { tcpEStatsNotifications 2 } + +-- ================================================================ +-- +-- Conformance Definitions +-- + + tcpEStatsCompliances OBJECT IDENTIFIER + ::= { tcpEStatsConformance 1 } + tcpEStatsGroups OBJECT IDENTIFIER + ::= { tcpEStatsConformance 2 } + +-- +-- Compliance Statements +-- + + tcpEStatsCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Compliance statement for all systems that implement TCP + extended statistics." + MODULE -- this module + MANDATORY-GROUPS { + tcpEStatsListenerGroup, + tcpEStatsConnectIdGroup, + tcpEStatsPerfGroup, + tcpEStatsPathGroup, + tcpEStatsStackGroup, + tcpEStatsAppGroup + } + GROUP tcpEStatsListenerHCGroup + DESCRIPTION + "This group is mandatory for all systems that can + wrap the values of the 32-bit counters in + tcpEStatsListenerGroup in less than one hour." + + GROUP tcpEStatsPerfOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsPerfHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsPerfGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsPathOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsPathHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsPathGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsStackOptionalGroup + + + + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsAppHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsStackGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsAppOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsTuneOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsNotificationsGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsNotificationsCtlGroup + DESCRIPTION + "This group is mandatory for systems that include the + tcpEStatsNotificationGroup." + + ::= { tcpEStatsCompliances 1 } + +-- ================================================================ +-- +-- Units of Conformance +-- + tcpEStatsListenerGroup OBJECT-GROUP + OBJECTS { + tcpEStatsListenerTableLastChange, + tcpEStatsListenerStartTime, + tcpEStatsListenerSynRcvd, + tcpEStatsListenerInitial, + tcpEStatsListenerEstablished, + tcpEStatsListenerAccepted, + tcpEStatsListenerExceedBacklog, + tcpEStatsListenerCurConns, + tcpEStatsListenerMaxBacklog, + tcpEStatsListenerCurBacklog, + + + + tcpEStatsListenerCurEstabBacklog + } + STATUS current + DESCRIPTION + "The tcpEStatsListener group includes objects that + provide valuable statistics and debugging + information for TCP Listeners." + ::= { tcpEStatsGroups 1 } + + tcpEStatsListenerHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsListenerHCSynRcvd, + tcpEStatsListenerHCInitial, + tcpEStatsListenerHCEstablished, + tcpEStatsListenerHCAccepted, + tcpEStatsListenerHCExceedBacklog + } + STATUS current + DESCRIPTION + "The tcpEStatsListenerHC group includes 64-bit + counters in tcpEStatsListenerTable." + ::= { tcpEStatsGroups 2 } + + tcpEStatsConnectIdGroup OBJECT-GROUP + OBJECTS { + tcpEStatsConnTableLatency, + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The tcpEStatsConnectId group includes objects that + identify TCP connections and control how long TCP + connection entries are retained in the tables." + ::= { tcpEStatsGroups 3 } + + tcpEStatsPerfGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfSegsOut, tcpEStatsPerfDataSegsOut, + tcpEStatsPerfDataOctetsOut, + tcpEStatsPerfSegsRetrans, + tcpEStatsPerfOctetsRetrans, tcpEStatsPerfSegsIn, + tcpEStatsPerfDataSegsIn, + tcpEStatsPerfDataOctetsIn, + tcpEStatsPerfElapsedSecs, + tcpEStatsPerfElapsedMicroSecs, + tcpEStatsPerfStartTimeStamp, tcpEStatsPerfCurMSS, + tcpEStatsPerfPipeSize, tcpEStatsPerfMaxPipeSize, + tcpEStatsPerfSmoothedRTT, tcpEStatsPerfCurRTO, + + + + tcpEStatsPerfCongSignals, tcpEStatsPerfCurCwnd, + tcpEStatsPerfCurSsthresh, tcpEStatsPerfTimeouts, + tcpEStatsPerfCurRwinSent, + tcpEStatsPerfMaxRwinSent, + tcpEStatsPerfZeroRwinSent, + tcpEStatsPerfCurRwinRcvd, + tcpEStatsPerfMaxRwinRcvd, + tcpEStatsPerfZeroRwinRcvd + } + STATUS current + DESCRIPTION + "The tcpEStatsPerf group includes those objects that + provide basic performance data for a TCP connection." + ::= { tcpEStatsGroups 4 } + + tcpEStatsPerfOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfSndLimTransRwin, + tcpEStatsPerfSndLimTransCwnd, + tcpEStatsPerfSndLimTransSnd, + tcpEStatsPerfSndLimTimeRwin, + tcpEStatsPerfSndLimTimeCwnd, + tcpEStatsPerfSndLimTimeSnd + } + STATUS current + DESCRIPTION + "The tcpEStatsPerf group includes those objects that + provide basic performance data for a TCP connection." + ::= { tcpEStatsGroups 5 } + + tcpEStatsPerfHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfHCDataOctetsOut, + tcpEStatsPerfHCDataOctetsIn + } + STATUS current + DESCRIPTION + "The tcpEStatsPerfHC group includes 64-bit + counters in the tcpEStatsPerfTable." + ::= { tcpEStatsGroups 6 } + + + tcpEStatsPathGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlPath, + tcpEStatsPathRetranThresh, + tcpEStatsPathNonRecovDAEpisodes, + tcpEStatsPathSumOctetsReordered, + + + + tcpEStatsPathNonRecovDA + } + STATUS current + DESCRIPTION + "The tcpEStatsPath group includes objects that + control the creation of the tcpEStatsPathTable, + and provide information about the path + for each TCP connection." + ::= { tcpEStatsGroups 7 } + + tcpEStatsPathOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPathSampleRTT, tcpEStatsPathRTTVar, + tcpEStatsPathMaxRTT, tcpEStatsPathMinRTT, + tcpEStatsPathSumRTT, tcpEStatsPathCountRTT, + tcpEStatsPathMaxRTO, tcpEStatsPathMinRTO, + tcpEStatsPathIpTtl, tcpEStatsPathIpTosIn, + tcpEStatsPathIpTosOut, + tcpEStatsPathPreCongSumCwnd, + tcpEStatsPathPreCongSumRTT, + tcpEStatsPathPostCongSumRTT, + tcpEStatsPathPostCongCountRTT, + tcpEStatsPathECNsignals, + tcpEStatsPathDupAckEpisodes, tcpEStatsPathRcvRTT, + tcpEStatsPathDupAcksOut, tcpEStatsPathCERcvd, + tcpEStatsPathECESent + } + STATUS current + DESCRIPTION + "The tcpEStatsPath group includes objects that + provide additional information about the path + for each TCP connection." + ::= { tcpEStatsGroups 8 } + + tcpEStatsPathHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPathHCSumRTT + } + STATUS current + DESCRIPTION + "The tcpEStatsPathHC group includes 64-bit + counters in the tcpEStatsPathTable." + ::= { tcpEStatsGroups 9 } + + tcpEStatsStackGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlStack, + tcpEStatsStackActiveOpen, tcpEStatsStackMSSSent, + + + + tcpEStatsStackMSSRcvd, tcpEStatsStackWinScaleSent, + tcpEStatsStackWinScaleRcvd, + tcpEStatsStackTimeStamps, tcpEStatsStackECN, + tcpEStatsStackWillSendSACK, + tcpEStatsStackWillUseSACK, tcpEStatsStackState, + tcpEStatsStackNagle, tcpEStatsStackMaxSsCwnd, + tcpEStatsStackMaxCaCwnd, + tcpEStatsStackMaxSsthresh, + tcpEStatsStackMinSsthresh, + tcpEStatsStackInRecovery, tcpEStatsStackDupAcksIn, + tcpEStatsStackSpuriousFrDetected, + tcpEStatsStackSpuriousRtoDetected + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsStackTable, + and provide information about the operation of + algorithms used within TCP." + ::= { tcpEStatsGroups 10 } + + tcpEStatsStackOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsStackSoftErrors, + tcpEStatsStackSoftErrorReason, + tcpEStatsStackSlowStart, tcpEStatsStackCongAvoid, + tcpEStatsStackOtherReductions, + tcpEStatsStackCongOverCount, + tcpEStatsStackFastRetran, + tcpEStatsStackSubsequentTimeouts, + tcpEStatsStackCurTimeoutCount, + tcpEStatsStackAbruptTimeouts, + tcpEStatsStackSACKsRcvd, + tcpEStatsStackSACKBlocksRcvd, + tcpEStatsStackSendStall, tcpEStatsStackDSACKDups, + tcpEStatsStackMaxMSS, tcpEStatsStackMinMSS, + tcpEStatsStackSndInitial, + tcpEStatsStackRecInitial, + tcpEStatsStackCurRetxQueue, + tcpEStatsStackMaxRetxQueue, + tcpEStatsStackCurReasmQueue, + tcpEStatsStackMaxReasmQueue + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + provide additional information about the operation of + algorithms used within TCP." + + + + ::= { tcpEStatsGroups 11 } + + tcpEStatsAppGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlApp, + tcpEStatsAppSndUna, tcpEStatsAppSndNxt, + tcpEStatsAppSndMax, tcpEStatsAppThruOctetsAcked, + tcpEStatsAppRcvNxt, + tcpEStatsAppThruOctetsReceived + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsAppTable, + and provide information about the operation of + algorithms used within TCP." + ::= { tcpEStatsGroups 12 } + + tcpEStatsAppHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsAppHCThruOctetsAcked, + tcpEStatsAppHCThruOctetsReceived + } + STATUS current + DESCRIPTION + "The tcpEStatsStackHC group includes 64-bit + counters in the tcpEStatsStackTable." + ::= { tcpEStatsGroups 13 } + + tcpEStatsAppOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsAppCurAppWQueue, + tcpEStatsAppMaxAppWQueue, + tcpEStatsAppCurAppRQueue, + tcpEStatsAppMaxAppRQueue + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + provide additional information about how applications + are interacting with each TCP connection." + ::= { tcpEStatsGroups 14 } + + tcpEStatsTuneOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlTune, + tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh, + tcpEStatsTuneLimRwin, tcpEStatsTuneLimMSS + + + + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsConnectionTable, + which can be used to set tuning parameters + for each TCP connection." + ::= { tcpEStatsGroups 15 } + + tcpEStatsNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + tcpEStatsEstablishNotification, + tcpEStatsCloseNotification + } + STATUS current + DESCRIPTION + "Notifications sent by a TCP extended statistics agent." + ::= { tcpEStatsGroups 16 } + + tcpEStatsNotificationsCtlGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlNotify + } + STATUS current + DESCRIPTION + "The tcpEStatsNotificationsCtl group includes the + object that controls the creation of the events + in the tcpEStatsNotificationsGroup." + ::= { tcpEStatsGroups 17 } + + END diff --git a/mibs/ietf/TCP-MIB b/mibs/ietf/TCP-MIB new file mode 100644 index 0000000..5b9e0bf --- /dev/null +++ b/mibs/ietf/TCP-MIB @@ -0,0 +1,829 @@ +TCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, + Gauge32, Counter32, Counter64, IpAddress, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; + +tcpMIB MODULE-IDENTITY + LAST-UPDATED "200502180000Z" -- 18 February 2005 + ORGANIZATION + "IETF IPv6 MIB Revision Team + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Rajiv Raghunarayan (editor) + + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + + Phone: +1 408 853 9612 + Email: + + Send comments to " + DESCRIPTION + "The MIB module for managing TCP implementations. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is a part of RFC 4022; see the RFC + itself for full legal notices." + REVISION "200502180000Z" -- 18 February 2005 + DESCRIPTION + "IP version neutral revision, published as RFC 4022." + REVISION "9411010000Z" + DESCRIPTION + "Initial SMIv2 version, published as RFC 2012." + REVISION "9103310000Z" + DESCRIPTION + "The initial revision of this MIB module was part of + MIB-II." + ::= { mib-2 49 } + +-- the TCP base variables group + + + + +tcp OBJECT IDENTIFIER ::= { mib-2 6 } + +-- Scalars + +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 + rfc2988(5) -- RFC 2988 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The algorithm used to determine the timeout value used for + retransmitting unacknowledged octets." + ::= { tcp 1 } + +tcpRtoMin OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + 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 + on the algorithm used to determine the retransmission + timeout; in particular, the IETF standard algorithm + rfc2988(5) provides a minimum value." + ::= { tcp 2 } + +tcpRtoMax OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + 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 + on the algorithm used to determine the retransmission + timeout; in particular, the IETF standard algorithm + rfc2988(5) provides an upper bound (as part of an + adaptive backoff algorithm)." + ::= { tcp 3 } + + + + +tcpMaxConn OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-only + STATUS current + 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 Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that TCP connections have made a direct + transition to the SYN-SENT state from the CLOSED state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 5 } + +tcpPassiveOpens OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times TCP connections have made a direct + transition to the SYN-RCVD state from the LISTEN state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 6 } + +tcpAttemptFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that 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 that + TCP connections have made a direct transition to the + LISTEN state from the SYN-RCVD state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + + + + ::= { tcp 7 } + +tcpEstabResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that TCP connections have made a direct + transition to the CLOSED state from either the ESTABLISHED + state or the CLOSE-WAIT state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 8 } + +tcpCurrEstab OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections for which the current state + is either ESTABLISHED or CLOSE-WAIT." + ::= { tcp 9 } + +tcpInSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received, including those + received in error. This count includes segments received + on currently established connections. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 10 } + +tcpOutSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent, including those on + current connections but excluding those containing only + retransmitted octets. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + + + + ::= { tcp 11 } + +tcpRetransSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments retransmitted; that is, the + number of TCP segments transmitted containing one or more + previously transmitted octets. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 12 } + +tcpInErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received in error (e.g., bad + TCP checksums). + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 14 } + +tcpOutRsts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP segments sent containing the RST flag. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 15 } + +-- { tcp 16 } was used to represent the ipv6TcpConnTable in RFC 2452, +-- which has since been obsoleted. It MUST not be used. + +tcpHCInSegs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received, including those + received in error. This count includes segments received + + + + on currently established connections. This object is + the 64-bit equivalent of tcpInSegs. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 17 } + +tcpHCOutSegs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent, including those on + current connections but excluding those containing only + retransmitted octets. This object is the 64-bit + equivalent of tcpOutSegs. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 18 } + + +-- The TCP Connection table + +tcpConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about existing TCP + connections. Note that unlike earlier TCP MIBs, there + is a separate table for connections in the LISTEN state." + ::= { tcp 19 } + +tcpConnectionEntry OBJECT-TYPE + SYNTAX TcpConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the tcpConnectionTable containing + information about a particular current TCP connection. + Each row of this table is transient in that it ceases to + exist when (or soon after) the connection makes the + transition to the CLOSED state." + INDEX { tcpConnectionLocalAddressType, + tcpConnectionLocalAddress, + tcpConnectionLocalPort, + tcpConnectionRemAddressType, + + + + tcpConnectionRemAddress, + tcpConnectionRemPort } + ::= { tcpConnectionTable 1 } + +TcpConnectionEntry ::= SEQUENCE { + tcpConnectionLocalAddressType InetAddressType, + tcpConnectionLocalAddress InetAddress, + tcpConnectionLocalPort InetPortNumber, + tcpConnectionRemAddressType InetAddressType, + tcpConnectionRemAddress InetAddress, + tcpConnectionRemPort InetPortNumber, + tcpConnectionState INTEGER, + tcpConnectionProcess Unsigned32 + } + +tcpConnectionLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of tcpConnectionLocalAddress." + ::= { tcpConnectionEntry 1 } + +tcpConnectionLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this TCP connection. The type + of this address is determined by the value of + tcpConnectionLocalAddressType. + + As this object is used in the index for the + tcpConnectionTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpConnectionEntry 2 } + +tcpConnectionLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpConnectionEntry 3 } + +tcpConnectionRemAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of tcpConnectionRemAddress." + ::= { tcpConnectionEntry 4 } + +tcpConnectionRemAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this TCP connection. The type + of this address is determined by the value of + tcpConnectionRemAddressType. + + As this object is used in the index for the + tcpConnectionTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpConnectionEntry 5 } + +tcpConnectionRemPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpConnectionEntry 6 } + +tcpConnectionState 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) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The state of this TCP connection. + + The value listen(2) is included only for parallelism to the + old tcpConnTable and should not be used. A connection in + LISTEN state should be present in the tcpListenerTable. + + The only value that 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 the TCB (as defined in [RFC793]) of + the corresponding connection on the managed node is + deleted, 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)." + ::= { tcpConnectionEntry 7 } + +tcpConnectionProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this connection, or zero if there is no such process. This + value is expected to be the same as HOST-RESOURCES-MIB:: + hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some + row in the appropriate tables." + ::= { tcpConnectionEntry 8 } + +-- The TCP Listener table + +tcpListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about TCP listeners. A + listening application can be represented in three + possible ways: + + 1. An application that is willing to accept both IPv4 and + IPv6 datagrams is represented by + + + + a tcpListenerLocalAddressType of unknown (0) and + a tcpListenerLocalAddress of ''h (a zero-length + octet-string). + + 2. An application that is willing to accept only IPv4 or + IPv6 datagrams is represented by a + tcpListenerLocalAddressType of the appropriate address + type and a tcpListenerLocalAddress of '0.0.0.0' or '::' + respectively. + + 3. An application that is listening for data destined + only to a specific IP address, but from any remote + system, is represented by a tcpListenerLocalAddressType + of an appropriate address type, with + tcpListenerLocalAddress as the specific local address. + + NOTE: The address type in this table represents the + address type used for the communication, irrespective + of the higher-layer abstraction. For example, an + application using IPv6 'sockets' to communicate via + IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would + use InetAddressType ipv4(1))." + ::= { tcp 20 } + +tcpListenerEntry OBJECT-TYPE + SYNTAX TcpListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the tcpListenerTable containing + information about a particular TCP listener." + INDEX { tcpListenerLocalAddressType, + tcpListenerLocalAddress, + tcpListenerLocalPort } + ::= { tcpListenerTable 1 } + +TcpListenerEntry ::= SEQUENCE { + tcpListenerLocalAddressType InetAddressType, + tcpListenerLocalAddress InetAddress, + tcpListenerLocalPort InetPortNumber, + tcpListenerProcess Unsigned32 + } + +tcpListenerLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The address type of tcpListenerLocalAddress. The value + should be unknown (0) if connection initiations to all + local IP addresses are accepted." + ::= { tcpListenerEntry 1 } + +tcpListenerLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this TCP connection. + + The value of this object can be represented in three + possible ways, depending on the characteristics of the + listening application: + + 1. For an application willing to accept both IPv4 and + IPv6 datagrams, the value of this object must be + ''h (a zero-length octet-string), with the value + of the corresponding tcpListenerLocalAddressType + object being unknown (0). + + 2. For an application willing to accept only IPv4 or + IPv6 datagrams, the value of this object must be + '0.0.0.0' or '::' respectively, with + tcpListenerLocalAddressType representing the + appropriate address type. + + 3. For an application which is listening for data + destined only to a specific IP address, the value + of this object is the specific local address, with + tcpListenerLocalAddressType representing the + appropriate address type. + + As this object is used in the index for the + tcpListenerTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed, using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpListenerEntry 2 } + +tcpListenerLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpListenerEntry 3 } + + + +tcpListenerProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this listener, or zero if there is no such process. This + value is expected to be the same as HOST-RESOURCES-MIB:: + hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some + row in the appropriate tables." + ::= { tcpListenerEntry 4 } + + +-- The deprecated TCP Connection table + +tcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table containing information about existing IPv4-specific + TCP connections or listeners. This table has been + deprecated in favor of the version neutral + tcpConnectionTable." + ::= { tcp 13 } + +tcpConnEntry OBJECT-TYPE + SYNTAX TcpConnEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A conceptual row of the tcpConnTable containing information + about a particular current IPv4 TCP connection. Each row + of this table 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 Integer32, + tcpConnRemAddress IpAddress, + tcpConnRemPort Integer32 + + + + } + +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) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The state of this TCP connection. + + The only value that 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 the TCB (as defined in [RFC793]) of + the corresponding connection on the managed node is + deleted, 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 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local IP address for this TCP connection. In the case + of a connection in the listen state 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 Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpConnEntry 3 } + +tcpConnRemAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The remote IP address for this TCP connection." + ::= { tcpConnEntry 4 } + +tcpConnRemPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpConnEntry 5 } + +-- conformance information + +tcpMIBConformance OBJECT IDENTIFIER ::= { tcpMIB 2 } + +tcpMIBCompliances OBJECT IDENTIFIER ::= { tcpMIBConformance 1 } +tcpMIBGroups OBJECT IDENTIFIER ::= { tcpMIBConformance 2 } + +-- compliance statements + +tcpMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement TCP. + + A number of INDEX objects cannot be + represented in the form of OBJECT clauses in SMIv2 but + have the following compliance requirements, + expressed in OBJECT clause form in this description + clause: + + -- OBJECT tcpConnectionLocalAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + + + + -- and IPv6 address types. + -- + -- OBJECT tcpConnectionRemAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + -- and IPv6 address types. + -- + -- OBJECT tcpListenerLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + -- and IPv6 address types. The type unknown also + -- needs to be supported to identify a special + -- case in the listener table: a listen using + -- both IPv4 and IPv6 addresses on the device. + -- + " + MODULE -- this module + MANDATORY-GROUPS { tcpBaseGroup, tcpConnectionGroup, + tcpListenerGroup } + GROUP tcpHCGroup + DESCRIPTION + "This group is mandatory for systems that are capable + of receiving or transmitting more than 1 million TCP + segments per second. 1 million segments per second will + cause a Counter32 to wrap in just over an hour." + OBJECT tcpConnectionState + SYNTAX INTEGER { closed(1), listen(2), synSent(3), + synReceived(4), established(5), + finWait1(6), finWait2(7), closeWait(8), + lastAck(9), closing(10), timeWait(11) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + deleteTCB (12)." + ::= { tcpMIBCompliances 2 } + +tcpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for IPv4-only systems that + implement TCP. In order to be IP version independent, this + compliance statement is deprecated in favor of + tcpMIBCompliance2. However, agents are still encouraged + to implement these objects in order to interoperate with + the deployed base of managers." + + + + MODULE -- this module + MANDATORY-GROUPS { tcpGroup } + OBJECT tcpConnState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tcpMIBCompliances 1 } + + +-- units of conformance + +tcpGroup OBJECT-GROUP + OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax, + tcpMaxConn, tcpActiveOpens, + tcpPassiveOpens, tcpAttemptFails, + tcpEstabResets, tcpCurrEstab, tcpInSegs, + tcpOutSegs, tcpRetransSegs, tcpConnState, + tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort, + tcpInErrs, tcpOutRsts } + STATUS deprecated + DESCRIPTION + "The tcp group of objects providing for management of TCP + entities." + ::= { tcpMIBGroups 1 } + +tcpBaseGroup OBJECT-GROUP + OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax, + tcpMaxConn, tcpActiveOpens, + tcpPassiveOpens, tcpAttemptFails, + tcpEstabResets, tcpCurrEstab, tcpInSegs, + tcpOutSegs, tcpRetransSegs, + tcpInErrs, tcpOutRsts } + STATUS current + DESCRIPTION + "The group of counters common to TCP entities." + ::= { tcpMIBGroups 2 } + +tcpConnectionGroup OBJECT-GROUP + OBJECTS { tcpConnectionState, tcpConnectionProcess } + STATUS current + DESCRIPTION + "The group provides general information about TCP + connections." + ::= { tcpMIBGroups 3 } + +tcpListenerGroup OBJECT-GROUP + OBJECTS { tcpListenerProcess } + + + + STATUS current + DESCRIPTION + "This group has objects providing general information about + TCP listeners." + ::= { tcpMIBGroups 4 } + +tcpHCGroup OBJECT-GROUP + OBJECTS { tcpHCInSegs, tcpHCOutSegs } + STATUS current + DESCRIPTION + "The group of objects providing for counters of high speed + TCP implementations." + ::= { tcpMIBGroups 5 } + +END diff --git a/mibs/ietf/TCPIPX-MIB b/mibs/ietf/TCPIPX-MIB new file mode 100644 index 0000000..976399f --- /dev/null +++ b/mibs/ietf/TCPIPX-MIB @@ -0,0 +1,337 @@ + TCPIPX-MIB DEFINITIONS ::= BEGIN + + IMPORTS + enterprises + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212; + + +-- IPX address type. +-- First 4 octests are the network numbers and the last 6 +-- octests are the node numbers. In ascii, it is represented + +-- as hex digits, as in: nnnnnnnn:mmmmmmmmmmmm + +IpxAddress ::= OCTET STRING (SIZE (10)) + + -- TCP/IPX MIB object idenfifiers + +novell OBJECT IDENTIFIER ::= { enterprises 23 } +mibDoc OBJECT IDENTIFIER ::= { novell 2 } +tcpx OBJECT IDENTIFIER ::= { mibDoc 29 } +tcpxTcp OBJECT IDENTIFIER ::= { tcpx 1 } +tcpxUdp OBJECT IDENTIFIER ::= { tcpx 2 } + + + + -- the TCP/IPX Connection table + + -- The TCP/IPX connection table contains information + -- about this entity's existing TCP connections over + -- IPX. + + tcpIpxConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing information specific on + TCP connection over IPX network layer." + + ::= { tcpxTcp 1 } + + tcpIpxConnEntry OBJECT-TYPE + SYNTAX TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current TCP + connection over IPX 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 { tcpIpxConnLocalAddress, + tcpIpxConnLocalPort, + tcpIpxConnRemAddress, + tcpIpxConnRemPort } + ::= { tcpIpxConnTable 1 } + + TcpIpxConnEntry ::= + SEQUENCE { + tcpIpxConnState + INTEGER, + tcpIpxConnLocalAddress + IpxAddress, + tcpIpxConnLocalPort + INTEGER (0..65535), + tcpIpxConnRemAddress + IpxAddress, + tcpIpxConnRemPort + INTEGER (0..65535) + } + + tcpIpxConnState 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)." + ::= { tcpIpxConnEntry 1 } + + tcpIpxConnLocalAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IPX address for this TCP connection. + In the case of a connection in the listen state + which is willing to accept connections for any + interface, the value 00000000:000000000000 is + used. See tcpUnspecConnTable for connections in + the listen state which is willing to accept + connects for any IP interface associated with + the node." + ::= { tcpIpxConnEntry 2 } + + -- NetworkAddress defined in SMI only include IP currently, + -- so we can't use it to represent both IP and IPX address. + + tcpIpxConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpIpxConnEntry 3 } + + tcpIpxConnRemAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote IPX address for this TCP connection." + ::= { tcpIpxConnEntry 4 } + + tcpIpxConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpIpxConnEntry 5 } + + -- 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. + + udpIpxTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpIpxEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing UDP listener information." + ::= { tcpxUdp 1 } + + udpIpxEntry OBJECT-TYPE + SYNTAX UdpIpxEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current UDP + listener." + INDEX { udpIpxLocalAddress, udpIpxLocalPort } + ::= { udpIpxTable 1 } + + UdpIpxEntry ::= + SEQUENCE { + udpIpxLocalAddress + IpxAddress, + udpIpxLocalPort + INTEGER (0..65535) + } + + udpIpxLocalAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IPX address for this UDP listener. In + the case of a UDP listener which is willing to + accept datagrams for any interface, the value + 00000000:000000000000 is used. See + udpUnspecTable for UDP listener which is + willing to accept datagrams from any network + layer." + ::= { udpIpxEntry 1 } + + udpIpxLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpIpxEntry 2 } + + + -- the TCP/UNSPEC Connection table + + -- The TCP/UPSPEC connection table contains information + -- about this entity's existing TCP connections over + -- unspecified network. + -- Since the network is unspecified, the network + -- address is also unspecified. Hence, this + -- connection table does not include any network + -- address. + + tcpUnspecConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing information specific on + TCP connection over unspecified network layer." + + ::= { tcpxTcp 2 } + + tcpUnspecConnEntry OBJECT-TYPE + SYNTAX TcpUnspecConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current TCP + connection over unspecified network layer. An + object of this type is transient, in that it + ceases to exist when the connection makes + transition beyond LISTEN state, or when (or + soon after) the connection makes transition + to the CLOSED state," + + INDEX { tcpUnspecConnLocalPort } + ::= { tcpUnspecConnTable 1 } + + TcpUnspecConnEntry ::= + SEQUENCE { + tcpUnspecConnState + INTEGER, + tcpUnspecConnLocalPort + INTEGER (0..65535) + } + + tcpUnspecConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + deleteTCB(12) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this TCP connection. + + Since the TCP connection can belong to this table + only when its state is less than SYN_SENT, only + closed and listen state apply. + + 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)." + ::= { tcpUnspecConnEntry 1 } + + tcpUnspecConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpUnspecConnEntry 2 } + + -- the UDP Listener table + + -- The UDP listener table contains information about this + -- entity's UDP end-points over unspecified network layer, + -- on which a local application is currently accepting + -- datagrams. If network layer is unspecified, the network + -- address is also unspecified. Hence, this table does not + -- include any network address. + + udpUnspecTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpUnspecEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing UDP listener information." + ::= { tcpxUdp 2 } + + udpUnspecEntry OBJECT-TYPE + SYNTAX UdpUnspecEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current UDP + listener." + INDEX { udpUnspecLocalPort } + ::= { udpUnspecTable 1 } + + UdpUnspecEntry ::= + SEQUENCE { + udpUnspecLocalPort + INTEGER (0..65535) + } + + udpUnspecLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpUnspecEntry 1 } + + END diff --git a/mibs/ietf/TE-LINK-STD-MIB b/mibs/ietf/TE-LINK-STD-MIB new file mode 100644 index 0000000..e53c95b --- /dev/null +++ b/mibs/ietf/TE-LINK-STD-MIB @@ -0,0 +1,1860 @@ +TE-LINK-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, transmission, Integer32, Unsigned32 + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + + InterfaceIndexOrZero, ifIndex + FROM IF-MIB + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; + + +teLinkStdMIB MODULE-IDENTITY + LAST-UPDATED "200510110000Z" -- 11 October 2005 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Martin Dubuc + Email: mdubuc@ncf.ca + + Thomas D. Nadeau + Email: tnadeau@cisco.com + + + + + Jonathan P. Lang + Email: jplang@ieee.org + + Comments about this document should be emailed directly to + the MPLS working group mailing list at mpls@uu.net." + + DESCRIPTION + "Copyright (C) 2005 The Internet Society. This version of + this MIB module is part of RFC 4220; see the RFC + itself for full legal notices. + + This MIB module contains managed object definitions for + MPLS traffic engineering links as defined in + 'Link Bundling in MPLS Traffic Engineering (TE)'." + + -- Revision history. + REVISION + "200510110000Z" -- 11 October 2005 + DESCRIPTION + "Initial version published as RFC 4220." + ::= { transmission 200 } + +-- Textual Conventions + +TeLinkBandwidth ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent link bandwidth in bps. This + value is represented using a 4 octet IEEE floating point + format [IEEE]. The floating point representation is not + used to represent fractional value but rather to allow + specification of large numbers that cannot be expressed + with 32-bit integers." + REFERENCE + "IEEE Standard for Binary Floating-Point Arithmetic, + Standard 754-1985" + SYNTAX OCTET STRING (SIZE(4)) + +TeLinkPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This type is used to represent a priority. Each connection + is assigned a priority. This priority is used when + accounting for bandwidth on TE links or component + links, for resource allocation and for rerouting purposes. + Value 0 is the highest priority. Value 7 is the lowest + priority." + + + + SYNTAX Unsigned32 (0..7) + +TeLinkProtection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Link protection." + SYNTAX INTEGER { + primary(1), + secondary(2) + } + +TeLinkSwitchingCapability ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Switching capability as specified in the 'OSPF Extensions in + Support of Generalized Multi-Protocol Label Switching + (GMPLS)' document. The values specified in this document + are not contiguous." + SYNTAX INTEGER { + packetSwitch1(1), + packetSwitch2(2), + packetSwitch3(3), + packetSwitch4(4), + layer2Switch(51), + tdm(100), + lambdaSwitch(150), + fiberSwitch(200) + } + +TeLinkEncodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Link encoding type as specified in 'Generalized + Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description' document. The values + specified in this document are not contiguous." + SYNTAX INTEGER { + packet(1), + ethernet(2), + ansiEtsiPdh(3), + sdhItuSonetAnsi(5), + digitalWrapper(7), + lambda(8), + fiber(9), + fiberChannel(11) + } + +TeLinkSonetSdhIndication ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This convention is used to indicate whether the interface + supports Standard or Arbitrary SONET/SDH. To simplify the + mapping process, the values used in this textual convention + match the values specified in the interface switching + capability specific information field, i.e., 0 for Standard + SONET/SDH and 1 for Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + SYNTAX INTEGER { + standard(0), + arbitrary(1) + } + +-- Top level components of this MIB module + +-- Notifications +teLinkNotifications OBJECT IDENTIFIER ::= { teLinkStdMIB 0 } +-- Tables, Scalars +teLinkObjects OBJECT IDENTIFIER ::= { teLinkStdMIB 1 } +-- Conformance +teLinkConformance OBJECT IDENTIFIER ::= { teLinkStdMIB 2 } + +-- TE Link Table + +teLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the grouping of component links into + TE links and the grouping of TE links into bundled links." + ::= { teLinkObjects 1 } + +teLinkEntry OBJECT-TYPE + SYNTAX TeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry with an + ifType of teLink(200), i.e., for every TE link. An ifEntry + in the ifTable must exist before a teLinkEntry is created + with the corresponding ifIndex. If a TE link entry in the + ifTable is destroyed, then so is the corresponding entry + in the teLinkTable. The administrative and operational + status values are controlled from the ifEntry." + + + + INDEX { ifIndex } + ::= { teLinkTable 1 } + +TeLinkEntry ::= SEQUENCE { + teLinkAddressType InetAddressType, + teLinkLocalIpAddr InetAddress, + teLinkRemoteIpAddr InetAddress, + teLinkMetric Unsigned32, + teLinkMaximumReservableBandwidth TeLinkBandwidth, + teLinkProtectionType INTEGER, + teLinkWorkingPriority TeLinkPriority, + teLinkResourceClass Unsigned32, + teLinkIncomingIfId Integer32, + teLinkOutgoingIfId InterfaceIndexOrZero, + teLinkRowStatus RowStatus, + teLinkStorageType StorageType +} + +teLinkAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address for the TE link." + ::= { teLinkEntry 1 } + +teLinkLocalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local Internet address for numbered links. The type of + this address is determined by the value of the + teLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents the + local IP address associated with the TE link. For an + unnumbered link, the local address is of type unknown, this + object is set to the zero length string, and the + teLinkOutgoingIfId object then identifies the unnumbered + address. + + If the TE link is a Forwarding Adjacency (FA), the local + IP address is set to the head-end address of the FA-LSP. + + If ipAddrTable is implemented, this object must have the + same value as the ipAdEntAddr object that belongs to the + row in ipAddrTable where ipAdEntIfIndex is equal to + + + + ifIndex." + ::= { teLinkEntry 2 } + +teLinkRemoteIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote Internet address for numbered links. The type of + this address is determined by the value of the + teLinkAddressType object. + + The remote IP address associated with the TE link (IPv4 and + IPv6 numbered links). For an unnumbered link, the remote + address is of type unknown, this object is set to the + zero length string, and the teLinkIncomingIfId object then + identifies the unnumbered address. + + If the TE link is a Forwarding Adjacency, the remote IP + address is set to the tail-end address of the FA-LSP." + ::= { teLinkEntry 3 } + +teLinkMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The traffic engineering metric for the TE link is + derived from its component links. All component links + within the TE link must have the same traffic + engineering metric." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 4 } + +teLinkMaximumReservableBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the maximum reservable bandwidth on + the TE link. This is the union of the maximum reservable + bandwidth of all the component links within the + TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + + + + ::= { teLinkEntry 5 } + +teLinkProtectionType OBJECT-TYPE + SYNTAX INTEGER { + extraTraffic(1), + unprotected(2), + shared(3), + dedicated1For1(4), + dedicated1Plus1(5), + enhanced(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the link protection type of the + TE link. Descriptions of the different protection types can + be found in the 'Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)' + document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Routing Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4202" + ::= { teLinkEntry 6 } + +teLinkWorkingPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents a priority value such that a new + connection with a higher priority, i.e., numerically lower + than this value, is guaranteed to be setup on a primary + link and not on a secondary link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkEntry 7 } + +teLinkResourceClass OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the TE link resource class. + The resource class is a 32 bit bitfield. The resource class + for a link bundle is derived from the resource class of its + + + + TE links. All TE links within a link bundle must have the + same resource class. Encoding of the resource class is + described in the 'Traffic Engineering (TE) Extensions to + OSPF Version 2' document." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201 + and Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { teLinkEntry 8 } + +teLinkIncomingIfId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For unnumbered links, the incoming interface is set to the + outgoing interface identifier chosen by the neighboring LSR + for the reverse link corresponding to this TE link. If the + link is numbered, the value of this object is 0 and the + address is stored in the teLinkRemoteIpAddr instead." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 9 } + +teLinkOutgoingIfId OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the link is unnumbered, the outgoing interface identifier + is set to the outgoing interface identifier chosen for the + TE link by the advertising LSR. If the link is numbered, the + value of this object is 0 and the address is stored in the + teLinkLocalIpAddr instead." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 10 } + +teLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects in + a row can be changed if status is active(1)." + ::= { teLinkEntry 11 } + + + + +teLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkEntry 12 } + +-- End of teLinkTable + + +-- TE Link Descriptor Table + +teLinkDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the interface switching capability + descriptors associated with the TE links." + ::= { teLinkObjects 2 } + +teLinkDescriptorEntry OBJECT-TYPE + SYNTAX TeLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created for every TE link interface + switching capability descriptor. An ifEntry in the ifTable + must exist before a teLinkDescriptorEntry using the same + ifIndex is created. ifType of ifEntry must be teLink(200). + If a TE link entry in the ifTable is destroyed, then so are + all of the entries in the teLinkDescriptorTable that use the + ifIndex of this TE link." + INDEX { ifIndex, teLinkDescriptorId } + ::= { teLinkDescriptorTable 1 } + +TeLinkDescriptorEntry ::= SEQUENCE { + teLinkDescriptorId Unsigned32, + teLinkDescrSwitchingCapability TeLinkSwitchingCapability, + teLinkDescrEncodingType TeLinkEncodingType, + teLinkDescrMinLspBandwidth TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio0 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio1 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio2 TeLinkBandwidth, + + + + teLinkDescrMaxLspBandwidthPrio3 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio4 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio5 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio6 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio7 TeLinkBandwidth, + teLinkDescrInterfaceMtu Unsigned32, + teLinkDescrIndication TeLinkSonetSdhIndication, + teLinkDescrRowStatus RowStatus, + teLinkDescrStorageType StorageType +} + +teLinkDescriptorId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the link descriptor identifier." + ::= { teLinkDescriptorEntry 1 } + +teLinkDescrSwitchingCapability OBJECT-TYPE + SYNTAX TeLinkSwitchingCapability + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies interface switching capability of + the TE link, which is derived from its component links." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 2 } + +teLinkDescrEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the TE link encoding type." + REFERENCE + "Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471" + ::= { teLinkDescriptorEntry 3 } + +teLinkDescrMinLspBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This attribute specifies the minimum LSP bandwidth on + the TE link. This is derived from the union of the + minimum LSP bandwidth of all the component links + associated with the TE link that can be used to carry + live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 4 } + +teLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 0 on the TE link. This is the union of the maximum + LSP bandwidth at priority 0 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 5 } + +teLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 1 on the TE link. This is the union of the maximum + LSP bandwidth at priority 1 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 6 } + +teLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 2 on the TE link. This is the union of the maximum + + + + LSP bandwidth at priority 2 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 7 } + +teLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 3 on the TE link. This is the union of the maximum + LSP bandwidth at priority 3 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 8 } + +teLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 4 on the TE link. This is the union of the maximum + LSP bandwidth at priority 4 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 9 } + +teLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 5 on the TE link. This is the union of the maximum + LSP bandwidth at priority 5 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + + + + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 10 } + +teLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 6 on the TE link. This is the union of the maximum + LSP bandwidth at priority 6 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 11 } + +teLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 7 on the TE link. This is the union of the maximum + LSP bandwidth at priority 7 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 12 } + +teLinkDescrInterfaceMtu OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the interface MTU for the TE + link descriptor." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 13 } + +teLinkDescrIndication OBJECT-TYPE + SYNTAX TeLinkSonetSdhIndication + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this interface supports + Standard or Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 14 } + +teLinkDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be changed if teLinkDescrRowStatus is in the active(1) + state." + ::= { teLinkDescriptorEntry 15 } + +teLinkDescrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkDescriptorTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkDescriptorEntry 16 } + +-- End of teLinkDescriptorTable + + +-- TE Link Shared Risk Link Group Table + +teLinkSrlgTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkSrlgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the SRLGs associated with TE links." + ::= { teLinkObjects 3 } + +teLinkSrlgEntry OBJECT-TYPE + SYNTAX TeLinkSrlgEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in this table contains information about an + SRLG associated with a TE link. + An ifEntry in the ifTable must exist before a + teLinkSrlgEntry using the same ifIndex is created. + The ifType of ifEntry must be teLink(200). + If a TE link entry in the ifTable is destroyed, then so + are all of the entries in the teLinkSrlgTable that use the + ifIndex of this TE link." + INDEX { ifIndex, teLinkSrlg } + ::= { teLinkSrlgTable 1 } + +TeLinkSrlgEntry ::= SEQUENCE { + teLinkSrlg Unsigned32, + teLinkSrlgRowStatus RowStatus, + teLinkSrlgStorageType StorageType +} + +teLinkSrlg OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This identifies an SRLG supported by the TE link. An SRLG is + identified with a 32-bit number that is unique within an IGP + domain. Zero is a valid SRLG number." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkSrlgEntry 1 } + +teLinkSrlgRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object can + be modified if teLinkSrlgRowStatus is active(1)." + ::= { teLinkSrlgEntry 2 } + +teLinkSrlgStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + + + + teLinkSrlgTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkSrlgEntry 3 } + +-- End of teLinkSrlgTable + + +-- TE Link Bandwidth Table + +teLinkBandwidthTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the priority-based bandwidth table + for TE links." + ::= { teLinkObjects 4 } + +teLinkBandwidthEntry OBJECT-TYPE + SYNTAX TeLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the priority-based bandwidth of TE links. An ifEntry in the + ifTable must exist before a teLinkBandwidthEntry using the + same ifIndex is created. The ifType of ifEntry must be + teLink(200). If a TE link entry in the ifTable is destroyed, + then so are all of the entries in the teLinkBandwidthTable + that use the ifIndex of this TE link." + INDEX { ifIndex, teLinkBandwidthPriority } + ::= { teLinkBandwidthTable 1 } + +TeLinkBandwidthEntry ::= SEQUENCE { + teLinkBandwidthPriority TeLinkPriority, + teLinkBandwidthUnreserved TeLinkBandwidth, + teLinkBandwidthRowStatus RowStatus, + teLinkBandwidthStorageType StorageType +} + +teLinkBandwidthPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute specifies the priority. A value of 0 is valid + as specified in the 'Traffic Engineering (TE) Extensions to + + + + OSPF Version 2' document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { teLinkBandwidthEntry 1 } + +teLinkBandwidthUnreserved OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the TE link unreserved + bandwidth at priority p. It is the sum of the unreserved + bandwidths at priority p of all component links associated + with the TE link (excluding all links that are strictly + used as protecting links)." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkBandwidthEntry 2 } + +teLinkBandwidthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when teLinkBandwidthRowStatus is active(1)." + ::= { teLinkBandwidthEntry 3 } + +teLinkBandwidthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkBandwidthTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkBandwidthEntry 4 } + +-- End of teLinkBandwidthTable + + +-- Component Link Table + + + +componentLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the component link parameters." + ::= { teLinkObjects 5 } + +componentLinkEntry OBJECT-TYPE + SYNTAX ComponentLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry that + represents a component link. An ifEntry must exist in + the ifTable before a componentLinkEntry is created with + the corresponding ifIndex. ifEntry's ifType can be + of any interface type that has been defined for TE Link + interworking. Examples include ATM, Frame Relay, Ethernet, + etc. If an entry representing a component link is destroyed + in the ifTable, then so is the corresponding entry in the + componentLinkTable. The administrative and operational + status values are controlled from the ifEntry." + INDEX { ifIndex } + ::= { componentLinkTable 1 } + +ComponentLinkEntry ::= SEQUENCE { + componentLinkMaxResBandwidth TeLinkBandwidth, + componentLinkPreferredProtection TeLinkProtection, + componentLinkCurrentProtection TeLinkProtection, + componentLinkRowStatus RowStatus, + componentLinkStorageType StorageType +} + +componentLinkMaxResBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum reservable bandwidth on + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkEntry 1 } + +componentLinkPreferredProtection OBJECT-TYPE + + + + SYNTAX TeLinkProtection + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this component link is + a primary or secondary entity." + ::= { componentLinkEntry 2 } + +componentLinkCurrentProtection OBJECT-TYPE + SYNTAX TeLinkProtection + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies whether this component link is + currently used as primary or secondary link." + ::= { componentLinkEntry 3 } + +componentLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when componentLinkRowStatus is active(1)." + ::= { componentLinkEntry 4 } + +componentLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { componentLinkEntry 5 } + +-- End of componentLinkTable + + +-- Component Link Descriptor Table + +componentLinkDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table specifies the interface switching capability + descriptors associated with the component links." + ::= { teLinkObjects 6 } + +componentLinkDescriptorEntry OBJECT-TYPE + SYNTAX ComponentLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created for every component link + descriptor. An ifEntry in the ifTable must exist before a + componentLinkDescriptorEntry using the same ifIndex is + created. ifEntry's ifType can be of any interface type that + has been defined for TE Link interworking. Examples include + ATM, Frame Relay, Ethernet, etc. If a component link entry + in the ifTable is destroyed, then so are all entries in the + componentLinkDescriptorTable that use the ifIndex of this + component link." + INDEX { ifIndex, componentLinkDescrId } + ::= { componentLinkDescriptorTable 1 } + +ComponentLinkDescriptorEntry ::= SEQUENCE { + componentLinkDescrId Unsigned32, + componentLinkDescrSwitchingCapability TeLinkSwitchingCapability, + componentLinkDescrEncodingType TeLinkEncodingType, + componentLinkDescrMinLspBandwidth TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio0 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio1 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio2 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio3 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio4 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio5 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio6 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio7 TeLinkBandwidth, + componentLinkDescrInterfaceMtu Unsigned32, + componentLinkDescrIndication TeLinkSonetSdhIndication, + componentLinkDescrRowStatus RowStatus, + componentLinkDescrStorageType StorageType +} + +componentLinkDescrId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the link descriptor identifier." + ::= { componentLinkDescriptorEntry 1 } + + + + +componentLinkDescrSwitchingCapability OBJECT-TYPE + SYNTAX TeLinkSwitchingCapability + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies link multiplexing capabilities of + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 2 } + +componentLinkDescrEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the component link encoding type." + REFERENCE + "Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471" + ::= { componentLinkDescriptorEntry 3 } + +componentLinkDescrMinLspBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the minimum LSP bandwidth on + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 4 } + +componentLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 0 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 5 } + + + +componentLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 1 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 6 } + +componentLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 2 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 7 } + +componentLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 3 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 8 } + +componentLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 4 on the component link." + REFERENCE + + + + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 9 } + +componentLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "thousand bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 5 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 10 } + +componentLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 6 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 11 } + +componentLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 7 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 12 } + +componentLinkDescrInterfaceMtu OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This attribute specifies the interface MTU for the component + link descriptor." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 13 } + +componentLinkDescrIndication OBJECT-TYPE + SYNTAX TeLinkSonetSdhIndication + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this interface supports + Standard or Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 14 } + +componentLinkDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when componentLinkDescrRowStatus + is active(1)." + ::= { componentLinkDescriptorEntry 15 } + +componentLinkDescrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkDescriptorTable. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar object in the row." + ::= { componentLinkDescriptorEntry 16 } + +-- End of componentLinkDescriptorTable + + +-- Component Link Bandwidth Table + +componentLinkBandwidthTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkBandwidthEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the priority-based bandwidth + for component links." + ::= { teLinkObjects 7 } + +componentLinkBandwidthEntry OBJECT-TYPE + SYNTAX ComponentLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the priority-based bandwidth on component links. + An ifEntry in the ifTable must exist before a + componentLinkBandwidthEntry using the same ifIndex is + created. ifEntry's ifType can be of any interface type that + has been defined for TE Link interworking. Examples + include ATM, Frame Relay, Ethernet, etc. If a component link + entry in the ifTable is destroyed, then so are all entries + in the componentLinkBandwidthTable that use the ifIndex of + this component link." + INDEX { ifIndex, componentLinkBandwidthPriority } + ::= { componentLinkBandwidthTable 1 } + +ComponentLinkBandwidthEntry ::= SEQUENCE { + componentLinkBandwidthPriority TeLinkPriority, + componentLinkBandwidthUnreserved TeLinkBandwidth, + componentLinkBandwidthRowStatus RowStatus, + componentLinkBandwidthStorageType StorageType +} + +componentLinkBandwidthPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute specifies the priority. A value of 0 is valid + as specified in the 'Traffic Engineering (TE) Extensions to + OSPF Version 2' document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { componentLinkBandwidthEntry 1 } + +componentLinkBandwidthUnreserved OBJECT-TYPE + + + + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the component link unreserved + bandwidth at priority p." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkBandwidthEntry 2 } + +componentLinkBandwidthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object can + be modified when componentLinkBandwidthRowStatus is + active(1)." + ::= { componentLinkBandwidthEntry 3 } + +componentLinkBandwidthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkBandwidthTable. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar object in the row." + ::= { componentLinkBandwidthEntry 4 } + +-- End of componentLinkBandwidthTable + + +-- Module compliance + +teLinkCompliances + OBJECT IDENTIFIER ::= { teLinkConformance 1 } + +teLinkGroups + OBJECT IDENTIFIER ::= { teLinkConformance 2 } + +teLinkModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "Compliance statement for agents that support read-create + so that both configuration and monitoring of TE links can + be accomplished via this MIB module." + MODULE -- this module + + MANDATORY-GROUPS { teLinkGroup, + teLinkBandwidthGroup, + componentLinkBandwidthGroup } + + GROUP teLinkSrlgGroup + DESCRIPTION + "This group is mandatory for GMPLS enabled devices." + + GROUP teLinkPscGroup + DESCRIPTION + "This group is mandatory for devices that support the + packet switching capability." + + GROUP teLinkTdmGroup + DESCRIPTION + "This group is mandatory for devices that support the TDM + switching capability." + + -- teLinkTable + + OBJECT teLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT teLinkLocalIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + + + + OBJECT teLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkDescriptorTable + + OBJECT teLinkDescrRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkSrlgTable + + OBJECT teLinkSrlgRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkBandwidthTable + + OBJECT teLinkBandwidthRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- componentLinkTable + + OBJECT componentLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + + + + -- componentLinkDescriptorTable + + OBJECT componentLinkDescrRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- componentLinkBandwidthTable + + OBJECT componentLinkBandwidthRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + ::= { teLinkCompliances 1 } + +teLinkModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + monitoring of the TE link MIB module." + MODULE -- this module + + MANDATORY-GROUPS { teLinkGroup, + teLinkBandwidthGroup, + componentLinkBandwidthGroup } + + GROUP teLinkSrlgGroup + DESCRIPTION + "This group is mandatory for GMPLS enabled devices." + + GROUP teLinkPscGroup + DESCRIPTION + "This group is mandatory for devices that support the + packet switching capability." + + GROUP teLinkTdmGroup + DESCRIPTION + "This group is mandatory for devices that support the TDM + switching capability." + + -- teLinkTable + + + + OBJECT teLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT teLinkLocalIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkProtectionType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkWorkingPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + -- teLinkDescriptorTable + + OBJECT teLinkDescrSwitchingCapability + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMinLspBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio0 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio6 + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio7 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkDescrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- teLinkSrlgTable + + OBJECT teLinkSrlgRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkSrlgStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- teLinkBandwidthTable + + OBJECT teLinkBandwidthRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkBandwidthStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + -- componentLinkTable + + OBJECT componentLinkMaxResBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkPreferredProtection + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT componentLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- componentLinkDescriptorTable + + OBJECT componentLinkDescrSwitchingCapability + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMinLspBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio0 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio1 + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio6 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio7 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrInterfaceMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrIndication + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + + + + only status that needs to be supported." + + OBJECT componentLinkDescrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- componentLinkBandwidthTable + + OBJECT componentLinkBandwidthRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT componentLinkBandwidthStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { teLinkCompliances 2 } + +-- Units of conformance + +teLinkGroup OBJECT-GROUP + OBJECTS { teLinkAddressType, + teLinkLocalIpAddr, + teLinkRemoteIpAddr, + teLinkMetric, + teLinkProtectionType, + teLinkWorkingPriority, + teLinkResourceClass, + teLinkIncomingIfId, + teLinkOutgoingIfId, + teLinkRowStatus, + teLinkStorageType, + teLinkDescrSwitchingCapability, + teLinkDescrEncodingType, + teLinkDescrRowStatus, + teLinkDescrStorageType, + componentLinkPreferredProtection, + componentLinkCurrentProtection, + componentLinkRowStatus, + componentLinkStorageType, + componentLinkDescrSwitchingCapability, + componentLinkDescrEncodingType, + componentLinkDescrRowStatus, + + + + componentLinkDescrStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + resources associated with TE links." + ::= { teLinkGroups 1 } + +teLinkSrlgGroup OBJECT-GROUP + OBJECTS { teLinkSrlgRowStatus, + teLinkSrlgStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + SRLG resources associated with TE links." + ::= { teLinkGroups 2 } + +teLinkBandwidthGroup OBJECT-GROUP + OBJECTS { teLinkMaximumReservableBandwidth, + teLinkDescrMaxLspBandwidthPrio0, + teLinkDescrMaxLspBandwidthPrio1, + teLinkDescrMaxLspBandwidthPrio2, + teLinkDescrMaxLspBandwidthPrio3, + teLinkDescrMaxLspBandwidthPrio4, + teLinkDescrMaxLspBandwidthPrio5, + teLinkDescrMaxLspBandwidthPrio6, + teLinkDescrMaxLspBandwidthPrio7, + teLinkBandwidthUnreserved, + teLinkBandwidthRowStatus, + teLinkBandwidthStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + the bandwidth resources associated with TE links and + component links." + ::= { teLinkGroups 3 } + +componentLinkBandwidthGroup OBJECT-GROUP + OBJECTS { componentLinkMaxResBandwidth, + componentLinkDescrMaxLspBandwidthPrio0, + componentLinkDescrMaxLspBandwidthPrio1, + componentLinkDescrMaxLspBandwidthPrio2, + componentLinkDescrMaxLspBandwidthPrio3, + + + + componentLinkDescrMaxLspBandwidthPrio4, + componentLinkDescrMaxLspBandwidthPrio5, + componentLinkDescrMaxLspBandwidthPrio6, + componentLinkDescrMaxLspBandwidthPrio7, + componentLinkBandwidthUnreserved, + componentLinkBandwidthRowStatus, + componentLinkBandwidthStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of the + bandwidth parameters associated with component links." + ::= { teLinkGroups 4 } + +teLinkPscGroup OBJECT-GROUP + OBJECTS { teLinkDescrMinLspBandwidth, + teLinkDescrInterfaceMtu, + componentLinkDescrMinLspBandwidth, + componentLinkDescrInterfaceMtu + } + + STATUS current + DESCRIPTION + "Collection of objects needed for devices that are + packet switch capable." + ::= { teLinkGroups 5 } + +teLinkTdmGroup OBJECT-GROUP + OBJECTS { teLinkDescrMinLspBandwidth, + teLinkDescrIndication, + componentLinkDescrMinLspBandwidth, + componentLinkDescrIndication + } + + STATUS current + DESCRIPTION + "Collection of objects needed for devices that are + TDM switching capable." + ::= { teLinkGroups 6 } + +-- End of TE-LINK-STD-MIB +END diff --git a/mibs/ietf/TE-MIB b/mibs/ietf/TE-MIB new file mode 100644 index 0000000..408ee93 --- /dev/null +++ b/mibs/ietf/TE-MIB @@ -0,0 +1,1773 @@ +TE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, + Integer32, Gauge32, Counter32, + Counter64, Unsigned32, TimeTicks FROM SNMPv2-SMI + + RowStatus, StorageType, TimeStamp, + TruthValue FROM SNMPv2-TC + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + + TeHopAddress, TeHopAddressType, + MplsBitRate FROM MPLS-TC-STD-MIB; + +teMIB MODULE-IDENTITY + LAST-UPDATED "200501040000Z" -- 01 January 2005 + ORGANIZATION "IETF Traffic Engineering Working Group" + CONTACT-INFO " + Editor: Kireeti Kompella + Postal: Juniper Networks, Inc. + 1194 Mathilda Ave + + + + Sunnyvale, CA 94089 + Tel: +1 408 745 2000 + E-mail: kireeti@juniper.net + + The IETF Traffic Engineering Working Group is + chaired by Jim Boyle and Ed Kern. + + WG Mailing List information: + + General Discussion: te-wg@ops.ietf.org + To Subscribe: te-wg-request@ops.ietf.org + In Body: subscribe + Archive: ftp://ops.ietf.org/pub/lists + + Comments on the MIB module should be sent to the + mailing list. The archives for this mailing list + should be consulted for previous discussion on + this MIB. + " + DESCRIPTION "The Traffic Engineering MIB module. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 3970; + see the RFC itself for full legal notices. + " + + -- revision history + + REVISION "200501040000Z" -- 01 January 2005 + DESCRIPTION "Initial version, published as RFC 3970." + ::= { mib-2 122 } + +-- Top level objects + +teMIBNotifications OBJECT IDENTIFIER ::= { teMIB 0 } +teMIBObjects OBJECT IDENTIFIER ::= { teMIB 1 } +teMIBConformance OBJECT IDENTIFIER ::= { teMIB 2 } + +-- **************************************************************** +-- +-- TE MIB Objects +-- + +-- TE Info + +teInfo OBJECT IDENTIFIER ::= { teMIBObjects 1 } + +teDistProtocol OBJECT-TYPE + + + + SYNTAX BITS { + other(0), + isis(1), + ospf(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IGP used to distribute Traffic Engineering + information and topology to each device for the + purpose of automatic path computation. More than + one IGP may be used to distribute TE information. + " + ::= { teInfo 1 } + +teSignalingProto OBJECT-TYPE + SYNTAX BITS { + other(0), + rsvpte(1), + crldp(2), + static(3) -- static configuration + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Traffic Engineering signaling protocols supported + by this device. More than one protocol may be + supported. + " + REFERENCE "For a description of RSVP-TE, see RFC 3209; + for CR-LDP, see RFC 3212. + " + ::= { teInfo 2 } + +teNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION "If this object is true, then it enables the + generation of notifications from this MIB module. + Otherwise notifications are not generated. + " + DEFVAL { false } + ::= { teInfo 3 } + +teNextTunnelIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index in the + + + + teTunnelTable. + + The special value of 0 indicates that no more new + entries can be created in that table. + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teInfo 4 } + +teNextPathHopIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index in the + tePathHopTable. + + The special value of 0 indicates that no more new + entries can be created in that table. + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + + + + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teInfo 5 } + +teConfiguredTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently configured Tunnels." + ::= { teInfo 6 } + +teActiveTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently active Tunnels." + ::= { teInfo 7 } + +tePrimaryTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently active Tunnels running on + their primary paths. + " + ::= { teInfo 8 } + +teAdminGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeAdminGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A mapping of configured administrative groups. Each + entry represents an Administrative Group and + provides a name and index for the group. + Administrative groups are used to label links in the + Traffic Engineering topology in order to place + constraints (include and exclude) on Tunnel paths. + + A groupName can only be linked to one group number. + The groupNumber is the number assigned to the + administrative group used in constraints, + such as tePathIncludeAny or tePathIncludeAll. + " + + + + ::= { teInfo 9 } + +teAdminGroupEntry OBJECT-TYPE + SYNTAX TeAdminGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A mapping between a configured group number and + its human-readable name. The group number should + be between 1 and 32, inclusive. Group number n + represents bit number (n-1) in the bit vector for + Include/Exclude constraints. + + All entries in this table MUST be kept in stable + storage so that they will re-appear in case of a + restart/reboot. + " + INDEX { teAdminGroupNumber } + ::= { teAdminGroupTable 1 } + +TeAdminGroupEntry ::= + SEQUENCE { + teAdminGroupNumber Integer32, + teAdminGroupName SnmpAdminString, + teAdminGroupRowStatus RowStatus + } + +teAdminGroupNumber OBJECT-TYPE + SYNTAX Integer32 (1..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index of the administrative group." + ::= { teAdminGroupEntry 1 } + +teAdminGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Name of the administrative group." + ::= { teAdminGroupEntry 2 } + +teAdminGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + The value of this object has no effect on whether + other objects in this conceptual row can be + + + + modified. + " + ::= { teAdminGroupEntry 3 } + +-- Tunnel Table + +teTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Configured Traffic Tunnels." + ::= { teMIBObjects 2 } + +teTunnelEntry OBJECT-TYPE + SYNTAX TeTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + Traffic Tunnel. + " + INDEX { teTunnelIndex } + ::= { teTunnelTable 1 } + +TeTunnelEntry ::= + SEQUENCE { + teTunnelIndex Unsigned32, + teTunnelName SnmpAdminString, + teTunnelNextPathIndex Unsigned32, + -- Conceptual row information: + teTunnelRowStatus RowStatus, + teTunnelStorageType StorageType, + -- Address information: + teTunnelSourceAddressType TeHopAddressType, + teTunnelSourceAddress TeHopAddress, + teTunnelDestinationAddressType TeHopAddressType, + teTunnelDestinationAddress TeHopAddress, + -- State/performance information: + teTunnelState INTEGER, + teTunnelDiscontinuityTimer TimeStamp, + teTunnelOctets Counter64, + teTunnelPackets Counter64, + teTunnelLPOctets Counter32, + teTunnelLPPackets Counter32, + teTunnelAge TimeTicks, + teTunnelTimeUp TimeTicks, + teTunnelPrimaryTimeUp TimeTicks, + teTunnelTransitions Counter32, + teTunnelLastTransition TimeTicks, + + + + teTunnelPathChanges Counter32, + teTunnelLastPathChange TimeTicks, + teTunnelConfiguredPaths Gauge32, + teTunnelStandbyPaths Gauge32, + teTunnelOperationalPaths Gauge32 + } + +teTunnelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A unique index that identifies a Tunnel. If the TE + Tunnel is considered an interface, then this index + must match the interface index of the corresponding + interface. Otherwise, this index must be at least + 2^24, so that it does not overlap with any existing + interface index. + " + ::= { teTunnelEntry 1 } + +teTunnelName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Name of the Traffic Tunnel. + + Note that the name of a Tunnel MUST be unique. + When a SET request contains a name that is already + in use for another entry, then the implementation + must return an inconsistentValue error. + + The value of this object cannot be changed if the + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 2 } + +teTunnelNextPathIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index for the + next Path in this Tunnel. + + The special value of 0 indicates that no more Paths + can be created for this Tunnel, or that no more new + entries can be created in tePathTable. + + + + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teTunnelEntry 3 } + +teTunnelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + When the value of this object is 'active', then + the values for the corresponding objects + teTunnelName, teTunnelSourceAddressType, + teTunnelSourceAddress, + teTunnelDestinationAddressType, and + teTunnelDestinationAddress cannot be changed. + " + ::= { teTunnelEntry 4 } + +teTunnelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + ::= { teTunnelEntry 5 } + + + + +teTunnelSourceAddressType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop address + for the source of this Tunnel. Typically, this + address type is IPv4 or IPv6, with a prefix length + of 32 or 128, respectively. If the TE Tunnel path + is being computed by a path computation server, + however, it is possible to use more flexible source + address types, such as AS numbers or prefix lengths + less than host address lengths. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 6 } + +teTunnelSourceAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Source Traffic Engineered Tunnel hop address of + this Tunnel. + + The type of this address is determined by the value + of the corresponding teTunnelSourceAddressType. + + Note that the source and destination addresses of a + Tunnel can be different address types. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 7 } + +teTunnelDestinationAddressType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop address + for the destination of this Tunnel. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + + + + " + ::= { teTunnelEntry 8 } + +teTunnelDestinationAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Destination Traffic Engineered Tunnel hop + address of this Tunnel. + + The type of this address is determined by the value + of the corresponding teTunnelDestinationAddressType. + + Note that source and destination addresses of a + Tunnel can be different address types. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 9 } + +teTunnelState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + up(2), + down(3), + testing(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The operational state of the Tunnel." + ::= { teTunnelEntry 10 } + +teTunnelDiscontinuityTimer 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 tunnel's counters + suffered a discontinuity. The relevant counters + are teTunnelOctets, teTunnelPackets, + teTunnelLPOctets, and teTunnelLPPackets. If no such + discontinuities have occurred since the last + re-initialization of the local management subsystem + then this object contains a zero value. + " + ::= { teTunnelEntry 11 } + + + +teTunnelOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets that have been forwarded over + the Tunnel. + + 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 + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 12 } + +teTunnelPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets that have been forwarded over + the Tunnel. + + 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 + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 13 } + +teTunnelLPOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets that have been forwarded over + the Tunnel. + + 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 + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 14 } + +teTunnelLPPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets that have been forwarded over + the Tunnel. + + + + 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 + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 15 } + +teTunnelAge OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The age (i.e., time from creation of this conceptual + row till now) of this Tunnel in hundredths of a + second. Note that because TimeTicks wrap in about + 16 months, this value is best used in interval + measurements. + " + ::= { teTunnelEntry 16 } + +teTunnelTimeUp OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time in hundredths of a second that this + Tunnel has been operational. Note that because + TimeTicks wrap in about 16 months, this value is + best used in interval measurements. + + An example of usage of this object would be to + compute the percentage up time over a period of time + by obtaining values of teTunnelAge and + teTunnelTimeUp at two points in time and computing + the following ratio: + ((teTunnelTimeUp2 - teTunnelTimeUp1)/ + (teTunnelAge2 - teTunnelAge1)) * 100 %. In doing + so, the management station must account for + wrapping of the values of teTunnelAge and + teTunnelTimeUp between the two measurements. + " + ::= { teTunnelEntry 17 } + +teTunnelPrimaryTimeUp OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time in hundredths of a second that this + Tunnel's primary path has been operational. Note + that because TimeTicks wrap in about 16 months, this + + + + value is best used in interval measurements. + + An example of usage of this field would be to + compute what percentage of time that a TE Tunnel was + on the primary path over a period of time by + computing + ((teTunnelPrimaryTimeUp2 - teTunnelPrimaryTimeUp1)/ + (teTunnelTimeUp2 - teTunnelTimeUp1))*100 %. In + doing so, the management station must account for + wrapping of the values of teTunnelPrimaryTimeUp and + teTunnelTimeUp between the two measurements. + " + ::= { teTunnelEntry 18 } + +teTunnelTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of operational state transitions + (up -> down and down -> up) this Tunnel has + undergone. + " + ::= { teTunnelEntry 19 } + +teTunnelLastTransition OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The time in hundredths of a second since the last + operational state transition occurred on this + Tunnel. + + Note that if the last transition was over 16 + months ago, this value will be inaccurate. + " + ::= { teTunnelEntry 20 } + +teTunnelPathChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of path changes this Tunnel has had." + ::= { teTunnelEntry 21 } + +teTunnelLastPathChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "The time in hundredths of a second since the last + path change occurred on this Tunnel. + + Note that if the last transition was over 16 + months ago, this value will be inaccurate. + + Path changes may be caused by network events or by + reconfiguration that affects the path. + " + ::= { teTunnelEntry 22 } + +teTunnelConfiguredPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of paths configured for this Tunnel." + ::= { teTunnelEntry 23 } + +teTunnelStandbyPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of standby paths configured for this + Tunnel. + " + ::= { teTunnelEntry 24 } + +teTunnelOperationalPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of operational paths for this Tunnel. + This includes the path currently active, as + well as operational standby paths. + " + ::= { teTunnelEntry 25 } + +-- **************************************************************** +-- +-- Tunnel Path Table +-- + +tePathTable OBJECT-TYPE + SYNTAX SEQUENCE OF TePathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Configured Traffic Tunnels." + ::= { teMIBObjects 3 } + + + +tePathEntry OBJECT-TYPE + SYNTAX TePathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + Traffic Tunnel. Each Traffic Tunnel can have zero + or more Traffic Paths. + + As a Traffic Path can only exist over an existing + Traffic Tunnel, all tePathEntries with + a value of n for teTunnelIndex MUST be removed by + the implementation when the corresponding + teTunnelEntry with a value of n for teTunnelIndex + is removed. + " + INDEX { teTunnelIndex, tePathIndex } + ::= { tePathTable 1 } + +TePathEntry ::= + SEQUENCE { + tePathIndex Unsigned32, + tePathName SnmpAdminString, + -- Conceptual row information + tePathRowStatus RowStatus, + tePathStorageType StorageType, + -- Path properties + tePathType INTEGER, + tePathConfiguredRoute Unsigned32, + tePathBandwidth MplsBitRate, + tePathIncludeAny Unsigned32, + tePathIncludeAll Unsigned32, + tePathExclude Unsigned32, + tePathSetupPriority Integer32, + tePathHoldPriority Integer32, + tePathProperties BITS, + -- Path status + tePathOperStatus INTEGER, + tePathAdminStatus INTEGER, + tePathComputedRoute Unsigned32, + tePathRecordedRoute Unsigned32 + } + +tePathIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that uniquely identifies a path within + a Tunnel. + + + + The combination of thus + uniquely identifies a path among all paths on this + router. + " + ::= { tePathEntry 1 } + +tePathName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The name of this path. + + A pathName must be unique within the set of paths + over a single tunnel. If a SET request is received + with a duplicate name, then the implementation MUST + return an inconsistentValue error. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { tePathEntry 2 } + +tePathRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + When the value of this object is 'active', then + the value of tePathName cannot be changed. All + other writable objects may be changed; however, + these changes may affect traffic going over the TE + tunnel or require the path to be computed and/or + re-signaled. + " + ::= { tePathEntry 3 } + +tePathStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + + + + ::= { tePathEntry 4 } + +tePathType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + primary(2), + standby(3), + secondary(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type for this PathEntry; i.e., whether this path + is a primary path, a standby path, or a secondary + path. + " + ::= { tePathEntry 5 } + +tePathConfiguredRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The route that this TE path is configured to follow; + i.e., an ordered list of hops. The value of this + object gives the primary index into the Hop Table. + The secondary index is the hop count in the path, so + to get the route, one could get the first hop with + index in the Hop Table + and do a getnext to get subsequent hops. + " + ::= { tePathEntry 6 } + +tePathBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "Kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The configured bandwidth for this Tunnel, + in units of thousands of bits per second (Kbps). + " + DEFVAL { 0 } + ::= { tePathEntry 7 } + +tePathIncludeAny OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + + + + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link must have + at least one of the groups specified in IncludeAny + to be acceptable. If IncludeAny is zero, all links + are acceptable. + " + DEFVAL { 0 } + ::= { tePathEntry 8 } + +tePathIncludeAll OBJECT-TYPE + + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link must have + all of the groups specified in IncludeAll to be + acceptable. If IncludeAll is zero, all links are + acceptable. + " + DEFVAL { 0 } + ::= { tePathEntry 9 } + +tePathExclude OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link MUST have + groups associated with it, and the intersection of + the link's groups and the 'exclude' set MUST be + null. + " + DEFVAL { 0 } + ::= { tePathEntry 10 } + +tePathSetupPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The setup priority configured for this path, with 0 + as the highest priority and 7 as the lowest. + " + DEFVAL { 7 } + + + + ::= { tePathEntry 11 } + +tePathHoldPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The hold priority configured for this path, with 0 + as the highest priority and 7 as the lowest. + " + DEFVAL { 0 } + ::= { tePathEntry 12 } + +tePathProperties OBJECT-TYPE + SYNTAX BITS { + recordRoute(0), + cspf(1), + makeBeforeBreak(2), + mergeable(3), + fastReroute(4), + protected(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The set of configured properties for this path, + expressed as a bit map. For example, if the path + supports 'make before break', then bit 2 is set. + " + ::= { tePathEntry 13 } + +tePathOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + down(1), + testing(2), + dormant(3), + ready(4), + operational(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The operational status of the path: + unknown: + down: Signaling failed. + testing: Administratively set aside for testing. + dormant: Not signaled (for a backup tunnel). + ready: Signaled but not yet carrying traffic. + operational: Signaled and carrying traffic. + " + + + + ::= { tePathEntry 14 } + +tePathAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + testing(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The operational status of the path: + normal: Used normally for forwarding. + testing: Administratively set aside for testing. + " + ::= { tePathEntry 15 } + +tePathComputedRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The route computed for this path, perhaps using + some form of Constraint-based Routing. The + algorithm is implementation dependent. + + This object returns the computed route as an ordered + list of hops. The value of this object gives the + primary index into the Hop Table. The secondary + index is the hop count in the path, so to get the + route, one could get the first hop with index + in the Hop Table and do a + getnext to get subsequent hops. + + A value of zero (0) means there is no computedRoute. + " + ::= { tePathEntry 16 } + +tePathRecordedRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The route actually used for this path, as recorded + by the signaling protocol. This is again an ordered + list of hops; each hop is expected to be strict. + + The value of this object gives the primary index + into the Hop Table. The secondary index is the hop + count in the path, so to get the route, one can get + the first hop with index + in the Hop Table and do a getnext to get subsequent + + + + hops. + + A value of zero (0) means there is no recordedRoute. + " + ::= { tePathEntry 17 } + +-- **************************************************************** +-- +-- Tunnel Path Hop Table +-- + +tePathHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF TePathHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Tunnel Path Hops." + ::= { teMIBObjects 4 } + +tePathHopEntry OBJECT-TYPE + SYNTAX TePathHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + hop. + " + INDEX { teHopListIndex, tePathHopIndex } + ::= { tePathHopTable 1 } + +TePathHopEntry ::= + SEQUENCE { + teHopListIndex Unsigned32, + tePathHopIndex Unsigned32, + -- Conceptual row information + tePathHopRowStatus RowStatus, + tePathHopStorageType StorageType, + tePathHopAddrType TeHopAddressType, + tePathHopAddress TeHopAddress, + tePathHopType INTEGER + } + +teHopListIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that identifies a list of hops. This is + the primary index to access hops. + " + ::= { tePathHopEntry 1 } + + + +tePathHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that identifies a particular hop among the + list of hops for a path. An index of i identifies + the ith hop. This is the secondary index for a hop + entry. + " + ::= { tePathHopEntry 2 } + +tePathHopRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Any field in this table can be changed, even if the + value of this object is 'active'. However, such a + change may cause traffic to be rerouted or even + disrupted. + " + ::= { tePathHopEntry 3 } + +tePathHopStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + ::= { tePathHopEntry 4 } + +tePathHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop Address + of this hop. + + The value of this object cannot be changed + if the value of the corresponding tePathRowStatus + object is 'active'. + " + ::= { tePathHopEntry 5 } + + + +tePathHopAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Traffic Engineered Tunnel hop Address of this + hop. + + The type of this address is determined by the value + of the corresponding tePathHopAddressType. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { tePathHopEntry 6 } + +tePathHopType OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + loose(1), + strict(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The type of hop: + unknown: + loose: This hop is a LOOSE hop. + strict: This hop is a STRICT hop. + " + ::= { tePathHopEntry 7 } + +-- **************************************************************** +-- +-- TE Notifications +-- + +teTunnelUp NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- TunnelPath + STATUS current + DESCRIPTION "A teTunnelUp notification is generated when the + Tunnel indexed by teTunnelName transitions to the + 'up' state. + + A tunnel is up when at least one of its paths is up. + The tePathName is the name of the path whose + transition to up made the tunnel go up. + + + + + This notification MUST be limited to at most one + every minute, in case the tunnel flaps up and down. + " + ::= { teMIBNotifications 1 } + +teTunnelDown NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- TunnelPath + STATUS current + DESCRIPTION "A teTunnelDown notification is generated when the + Tunnel indexed by teTunnelName transitions to the + 'down' state. + + A tunnel is up when at least one of its paths is up. + The tePathName is the name of the path whose + transition to down made the tunnel go down. + + This notification MUST be limited to at most one + every minute, in case the tunnel flaps up and down. + " + ::= { teMIBNotifications 2 } + +teTunnelChanged NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- toTunnelPath + STATUS current + DESCRIPTION "A teTunnelChanged notification is generated when an + active path on the Tunnel indexed by teTunnelName + changes or a new path becomes active. The value + of tePathName is the new active path. + + This notification MUST be limited to at most one + every minute, in case the tunnel changes quickly. + " + ::= { teMIBNotifications 3 } + +teTunnelRerouted NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- toTunnelPath + STATUS current + DESCRIPTION "A teTunnelRerouted notification is generated when + an active path for the Tunnel indexed by + teTunnelName stays the same, but its route changes. + + This notification MUST be limited to at most one + every minute, in case the tunnel reroutes quickly. + " + ::= { teMIBNotifications 4 } + + + +-- End of TE-MIB objects + +-- **************************************************************** +-- +-- TE Compliance Statements +-- + +teGroups + OBJECT IDENTIFIER ::= { teMIBConformance 1 } + +teModuleCompliance + OBJECT IDENTIFIER ::= { teMIBConformance 2 } + +-- **************************************************************** +-- +-- TE object groups +-- + +teTrafficEngineeringGroup OBJECT-GROUP + OBJECTS { + teTunnelName, + teTunnelNextPathIndex, + teTunnelRowStatus, + teTunnelStorageType, + teTunnelSourceAddressType, + teTunnelSourceAddress, + teTunnelDestinationAddressType, + teTunnelDestinationAddress, + teTunnelState, + teTunnelDiscontinuityTimer, + teTunnelOctets, + teTunnelPackets, + teTunnelLPOctets, + teTunnelLPPackets, + teTunnelAge, + teTunnelTimeUp, + teTunnelPrimaryTimeUp, + teTunnelTransitions, + teTunnelLastTransition, + teTunnelPathChanges, + teTunnelLastPathChange, + teTunnelConfiguredPaths, + teTunnelStandbyPaths, + teTunnelOperationalPaths, + tePathBandwidth, + tePathIncludeAny, + tePathIncludeAll, + tePathExclude, + + + + tePathSetupPriority, + tePathHoldPriority, + tePathProperties, + tePathOperStatus, + tePathAdminStatus, + tePathComputedRoute, + tePathRecordedRoute, + teDistProtocol, + teSignalingProto, + teNotificationEnable, + teNextTunnelIndex, + teNextPathHopIndex, + teAdminGroupName, + teAdminGroupRowStatus, + teConfiguredTunnels, + teActiveTunnels, + tePrimaryTunnels, + tePathName, + tePathType, + tePathRowStatus, + tePathStorageType, + tePathConfiguredRoute, + tePathHopRowStatus, + tePathHopStorageType, + tePathHopAddrType, + tePathHopAddress, + tePathHopType + } + STATUS current + DESCRIPTION "Objects for Traffic Engineering in this MIB module." + ::= { teGroups 1 } + +teNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + teTunnelUp, + teTunnelDown, + teTunnelChanged, + teTunnelRerouted + } + STATUS current + DESCRIPTION "Notifications specified in this MIB module." + ::= { teGroups 2 } + +-- **************************************************************** +-- +-- TE compliance statements +-- +-- There are four compliance statements: read-only and full + + + +-- compliance for regular TE devices, and read-only and full +-- compliance for path computation servers. +-- + +teModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented without support + for read-create (i.e., in read-only mode), then such + an implementation can claim read-only compliance. + Such a device can be monitored but cannot be + configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + OBJECT teNotificationEnable + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT teTunnelSourceAddressType + SYNTAX TeHopAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. An + implementation is only required to support + IPv4 and IPv6 host addresses." + + OBJECT teTunnelSourceAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathConfiguredRoute + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathBandwidth + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathIncludeAny + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT tePathIncludeAll + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathExclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathSetupPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHoldPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathProperties + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { teModuleCompliance 1 } + +teModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented with support for + read-create, then the implementation can claim + full compliance. Such devices can be both + + + + monitored and configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION "Support for notInService, createAndWait and + notReady is not required. + " + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT teTunnelSourceAddressType + SYNTAX TeHopAddressType { ipv4(1), ipv6(2) } + DESCRIPTION "Write access is required. An implementation is + only required to support IPv4 and IPv6 host + addresses. + " + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + + + + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + ::= { teModuleCompliance 2 } + +teModuleServerReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented by a path + computation server without support for read-create + (i.e., in read-only mode), then the implementation + can claim read-only compliance. Such + a device can be monitored but cannot be + configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + OBJECT teNotificationEnable + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT teTunnelStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelSourceAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. A path + computation server SHOULD implement all types + of tunnel source address types. + " + + OBJECT teTunnelSourceAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathConfiguredRoute + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathBandwidth + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT tePathIncludeAny + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathIncludeAll + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathExclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathSetupPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHoldPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathProperties + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { teModuleCompliance 3 } + +teModuleServerFullCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION "When this MIB module is implemented by a path + computation server with support for read-create, + then the implementation can claim full + compliance. + " + + MODULE -- enclosing module, i.e., TE-MIB + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION "Support for notInService, createAndWait, and + notReady is not required. + " + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT teTunnelSourceAddressType + DESCRIPTION "Write access is required. An implementation + of a path computation server SHOULD support all + types of tunnel source address types. + " + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT tePathHopRowStatus + + + + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + ::= { teModuleCompliance 4 } + +END diff --git a/mibs/ietf/TIME-AGGREGATE-MIB b/mibs/ietf/TIME-AGGREGATE-MIB new file mode 100644 index 0000000..5002bcf --- /dev/null +++ b/mibs/ietf/TIME-AGGREGATE-MIB @@ -0,0 +1,396 @@ + TIME-AGGREGATE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, experimental, + OBJECT-TYPE, Opaque, Integer32 + FROM SNMPv2-SMI + OwnerString + FROM RMON-MIB + RowStatus, StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + tAggrMIB MODULE-IDENTITY + LAST-UPDATED "200604270000Z" -- 27 April 2006 + ORGANIZATION "Cyber Solutions Inc. NetMan Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Support Group E-mail: mibsupport@cysols.com" + + DESCRIPTION + + + + "The MIB for servicing Time-Based aggregate + objects. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4498; + see the RFC itself for full legal notices. + " + REVISION "200604270000Z" -- 27th April, 2006 + DESCRIPTION "Initial version, published as RFC 4498." + ::= { experimental 124 } + + TAggrMOErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the error status of the + sampled MO instance. The error status for a sampled MO + instance is given in terms of two elements: + o The moIndex, which indicates the sample number of the MO + instance (starting at 1) in the value of the time- + aggregated MO instance. + o The moError, which indicates the error that was + encountered in sampling that MO instance. + The syntax in ASN.1 Notation will be + ErrorStatus :: = SEQUENCE { + moIndex Integer32, + moError SnmpPduErrorStatus + } + TAggrMOErrorStatus ::= SEQUENCE OF { + ErrorStatus + } + Note1: The command responder will supply values for all + the samples of the MO instance. If an error is + encountered for a sample, then the corresponding + value will have an ASN.1 value NULL, and an error + will be flagged in the corresponding + TAggrMOErrorStatus object. + Only MOs for which errors have been encountered will + the corresponding moIndex and moError values be set. + Note2: The error code for the component MO instances will be + in accordance with the SnmpPduErrorStatus TC defined + in the DISMAN-SCHEDULE-MIB[RFC3231]. + " + SYNTAX Opaque (SIZE (0..1024)) + + TimeAggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the time-aggregated MOs. It + + + will be a sequence of values. The syntax in ASN.1 Notation + will be + MOSampleValue :: = SEQUENCE { + value ObjectSyntax + } + TimeAggrMOValue ::= SEQUENCE OF { + MOSampleValue + } + where the first MOSampleValue, if any, will always be the + timestamp of the first sample in the aggregated object. The + subsequent values are the values of the MO instance sampled + at the specified intervals for the specified number of times. + Note: The command generator will need to know the + constituent MO instance and the sampling interval to + correctly interpret TimeAggrMOValue. + " + SYNTAX Opaque (SIZE (0..1024)) + + CompressedTimeAggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the compressed + TAgMOs." + SYNTAX Opaque (SIZE (0..1024)) + +-- +-- The Time-Based aggregation control table +-- + tAggrCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF TAggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time-Based aggregation control table. It controls + the aggregation of the samples of MO instances. There + will be a row for each TAgMO. + " + ::= {tAggrMIB 1} + + tAggrCtlEntry OBJECT-TYPE + SYNTAX TAggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of the control table that defines one Time-Based + aggregate MO (TAgMO)." + INDEX {tAggrCtlEntryID } + ::= {tAggrCtlTable 1 } + + + TAggrCtlEntry ::= SEQUENCE { + tAggrCtlEntryID + SnmpAdminString, + tAggrCtlMOInstance + OBJECT IDENTIFIER, + tAggrCtlAgMODescr + SnmpAdminString, + tAggrCtlInterval + Integer32, + tAggrCtlSamples + Integer32, + tAggrCtlCompressionAlgorithm + INTEGER, + tAggrCtlEntryOwner + OwnerString, + tAggrCtlEntryStorageType + StorageType, + tAggrCtlEntryStatus + RowStatus + } + + tAggrCtlEntryID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally unique, administratively assigned name + for this aggregated MO. It is used as an index to + uniquely identify this row in the table." + ::= { tAggrCtlEntry 1 } + + tAggrCtlMOInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The sampled values of this MO instance will be + aggregated by the TAgMO. + " + ::= { tAggrCtlEntry 2 } + + tAggrCtlAgMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the aggregate object." + ::= {tAggrCtlEntry 3} + + + tAggrCtlInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "micro seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval, in microseconds, at which the MO instance + pointed at by tAggrInstance will be sampled for + Time-Based aggregation. + " + ::= {tAggrCtlEntry 4} + + tAggrCtlSamples OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times at which the MO instance referred + to by tAggrInstance will be sampled for Time-Based + aggregation." + ::= {tAggrCtlEntry 5} + + -- only one compression algorithm is defined as of now. + tAggrCtlCompressionAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + none (1), + deflate (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The compression algorithm that will be used by + the agent to compress the value of the TAgMO. + The deflate algorithm and corresponding data format + specification is described in RFC 1951. It is + compatible with the widely used gzip utility. + " + REFERENCE + "RFC1951 : DEFLATE Compressed Data Format Specification + version 1.3 + " + DEFVAL { none } + ::= {tAggrCtlEntry 6} + + tAggrCtlEntryOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "A textual description of the entity that created + this entry. + " + ::= {tAggrCtlEntry 7} + + + tAggrCtlEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + ::= {tAggrCtlEntry 8} + + tAggrCtlEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The tAggrCtlEntryStatus may be changed to 'active' iff + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {tAggrCtlEntry 9} + + + -- + -- tAggrDataTable: The data table. + -- + tAggrDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF TAggrDataEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the data table. Each row of this table contains + information about a TAgMO indexed by tAggrCtlEntryID. + tAggrCtlEntryID is the key to the table. It is used to + identify instances of the TAgMO that are present in the + table. + " + ::= {tAggrMIB 2} + + tAggrDataEntry OBJECT-TYPE + SYNTAX TAggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information pertaining + to a TAgMO." + INDEX {tAggrCtlEntryID} + ::= {tAggrDataTable 1 } + + TAggrDataEntry ::= SEQUENCE { + tAggrDataRecord + TimeAggrMOValue, + tAggrDataRecordCompressed + CompressedTimeAggrMOValue, + tAggrDataErrorRecord + TAggrMOErrorStatus + } + + tAggrDataRecord OBJECT-TYPE + SYNTAX TimeAggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The snapshot value of the TAgMO." + ::= { tAggrDataEntry 1} + + tAggrDataRecordCompressed OBJECT-TYPE + SYNTAX CompressedTimeAggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The compressed value of the TAgMO. + The compression algorithm will depend on the + tAggrCtlCompressionAlgorithm given in the corresponding + tAggrCtlEntry. If the value of the corresponding + tAggrCtlCompressionAlgorithm is (1) 'none', then the + + + + value of all instances of this object will be a string + of zero length. + Note that the access privileges to this object will be + governed by the access privileges of the corresponding MO + instance. Thus, an entity attempting to access an + instance of this MO MUST have access rights to the + instance object pointed at by tAggrCtlMOInstance and this + MO instance. + " + ::= { tAggrDataEntry 2} + + tAggrDataErrorRecord OBJECT-TYPE + SYNTAX TAggrMOErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error status corresponding to the MO instance + samples aggregated in tAggrDataRecord (and + tAggrDataRecordCompressed)." + ::= { tAggrDataEntry 3} + + + -- Conformance information + tAggrConformance OBJECT IDENTIFIER ::= { tAggrMIB 3 } + tAggrGroups OBJECT IDENTIFIER ::= { tAggrConformance 1 } + tAggrCompliances OBJECT IDENTIFIER ::= { tAggrConformance 2 } + + -- Compliance statements + tAggrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the TIME-AGGREGATE-MIB." + MODULE -- this module + MANDATORY-GROUPS { tAggrMibBasicGroup } + ::= { tAggrCompliances 1 } + + -- Units of conformance + tAggrMibBasicGroup OBJECT-GROUP + OBJECTS { + tAggrCtlMOInstance, + tAggrCtlAgMODescr, + tAggrCtlInterval, + tAggrCtlSamples, + tAggrCtlCompressionAlgorithm, + tAggrCtlEntryOwner, + tAggrCtlEntryStorageType, + tAggrCtlEntryStatus, + + + + tAggrDataRecord, + tAggrDataRecordCompressed, + tAggrDataErrorRecord + } + STATUS current + DESCRIPTION + "A collection of objects for Time-Based aggregation + of MOs." + ::= { tAggrGroups 1 } + END diff --git a/mibs/ietf/TN3270E-MIB b/mibs/ietf/TN3270E-MIB new file mode 100644 index 0000000..221d33f --- /dev/null +++ b/mibs/ietf/TN3270E-MIB @@ -0,0 +1,1943 @@ +TN3270E-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, TimeTicks, + IpAddress, Counter32, Gauge32, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TestAndIncr, DateAndTime, + TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + snanauMIB + FROM SNA-NAU-MIB + Utf8String + FROM SYSAPPL-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + IANATn3270eAddrType, IANATn3270eAddress, + IANATn3270eClientType, IANATn3270Functions, + IANATn3270ResourceType, IANATn3270DeviceType, + IANATn3270eLogData + FROM IANATn3270eTC-MIB; + + tn3270eMIB MODULE-IDENTITY + LAST-UPDATED "9807270000Z" -- July 27, 1998 + ORGANIZATION "TN3270E Working Group" + CONTACT-INFO + "Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + USA + + Robert Moore (remoore@us.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + USA + +1-919-254-4436" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) for managing TN3270E servers." + REVISION "9807270000Z" -- July 27, 1998 + DESCRIPTION + "RFC nnnn (Proposed Standard)" -- RFC Editor to fill in + ::= { snanauMIB 8 } + +-- Textual Conventions + +SnaResourceName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining an SNA resource + name. A fully qualified SNA resource name, consisting + of a 1 to 8 character network identifier (NetId), a + period ('.'), and a 1 to 8 character resource name + (ResName). + + The NetId and ResName are constructed from the + uppercase letters 'A' - 'Z' and the numerics '0' - '9', + all encoded in ASCII, with the restriction that the + first character of each must be a letter. Blanks are + not allowed. + + Earlier versions of SNA permitted three additional + characters in NetIds and ResNames: '#', '@', and '$'. + While this use of these characters has been retired, + a Management Station should still accept them for + backward compatibility. + + Note: This Textual Convention is not subject to + internationalization, and does not use the character + encodings used by the Utf8String Textual Convention." + SYNTAX OCTET STRING (SIZE(0..17)) + +Tn3270eTraceData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string representing trace data from the + Telnet half of a TN3270E session, from the SNA half, + or from both. The octet string contains a sequence + of trace elements, with the trace elements in the + string ordered from earliest to latest. + + Each trace element has the following form: + + +---+---+----+----------------------+ + !length !type!data ! + +---+---+----+----------------------+ + where: + + length = two-octet length of the data portion of the + trace element, not including the length and + type octets + + type = one-octet code point characterizing the data; + defined values are: + + X'01' telnet PDU from the server to the client + X'02' telnet PDU from the client to the server + X'03' SNA data from the server to the SNA host + X'04' SNA data from the SNA host to the server + + data = initial part of a PDU. + + It is implementation-dependent where the 'initial part of + a PDU' starts. For SNA data, however, the starting point + SHOULD be the first byte of the TH. For IP data the + starting point SHOULD be the first byte of the IP header. + + It is left to implementations to determine how much of + each PDU to return in a trace element. + + The zero-length string indicates that no trace + data is available." + SYNTAX OCTET STRING (SIZE (0 | 3..4096)) + +-- Top-level structure of the MIB + +tn3270eNotifications OBJECT IDENTIFIER ::= { tn3270eMIB 0 } +tn3270eObjects OBJECT IDENTIFIER ::= { tn3270eMIB 1 } +tn3270eConformance OBJECT IDENTIFIER ::= { tn3270eMIB 3 } + +-- MIB Objects + +tn3270eSrvrConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the configuration elements for + TN3270E servers. The number of entries in this table + is expected to vary depending on the location of the + table. A particular TN3270E server is expected to + have a single entry. Modeling of the configuration + elements as a table allows multiple TN3270E + servers to be serviced by the same SNMP agent. + An implementation SHOULD NOT retain an SNMP-created + entry in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + + ::= { tn3270eObjects 1 } + +tn3270eSrvrConfEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of the configuration elements for a single + TN3270E server." + INDEX { tn3270eSrvrConfIndex } + ::= { tn3270eSrvrConfTable 1 } + +Tn3270eSrvrConfEntry ::= SEQUENCE { + tn3270eSrvrConfIndex Unsigned32, + tn3270eSrvrConfInactivityTimeout Unsigned32, + tn3270eSrvrConfConnectivityChk INTEGER, + tn3270eSrvrConfTmNopInactTime Unsigned32, + tn3270eSrvrConfTmNopInterval Unsigned32, + tn3270eSrvrFunctionsSupported IANATn3270Functions, + tn3270eSrvrConfAdminStatus INTEGER, + tn3270eSrvrConfOperStatus INTEGER, + tn3270eSrvrConfSessionTermState INTEGER, + tn3270eSrvrConfSrvrType INTEGER, + tn3270eSrvrConfContact SnmpAdminString, + tn3270eSrvrConfRowStatus RowStatus, + tn3270eSrvrConfLastActTime DateAndTime, + tn3270eSrvrConfTmTimeout Unsigned32 + } + +tn3270eSrvrConfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifier for a single TN3270E server. + + tn3270eSrvrConfIndex values need not be + contiguous." + ::= { tn3270eSrvrConfEntry 1 } + +tn3270eSrvrConfInactivityTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..99999999) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inactivity time-out specified in seconds. When a + connection has been inactive for the number of seconds + specified by this object it is closed. Only user traffic + is considered when determining whether there has been + activity on a connection. + + The default value 0 means that no inactivity time-out is + in effect." + DEFVAL { 0 } + ::= { tn3270eSrvrConfEntry 2 } + +tn3270eSrvrConfConnectivityChk OBJECT-TYPE + SYNTAX INTEGER { + timingMark(1), + nop(2), + noCheck(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables TIMING-MARK processing, NOP + processing, or neither for a TN3270E server." + DEFVAL { noCheck } + ::= { tn3270eSrvrConfEntry 3 } + +tn3270eSrvrConfTmNopInactTime OBJECT-TYPE + SYNTAX Unsigned32 (1..86400) -- 1 second to 24 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of time a connection must have had no + traffic on it in order for a TIMING-MARK or NOP request + to be sent on the connection. This value applies only + when connections are being examined for recent activity + on a scan interval controlled by the value of the + tn3270eSrvrConfTmNopInterval object." + DEFVAL { 600 } -- 10 minutes + ::= { tn3270eSrvrConfEntry 4 } + +tn3270eSrvrConfTmNopInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..86400) -- 1 second to 24 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The scan interval to be used by a TN3270E server when + it examines its Telnet connections for recent activity. + The server scans its Telnet connections on the interval + provided by this object, looking for ones that have been + idle for more than the value provided by the + tn3270eSrvrConfTmNopInactTime object. A TIMING-MARK or + NOP request is sent for each connection that has + exhibited no activity for this period of time." + DEFVAL { 120 } -- 2 minutes + ::= { tn3270eSrvrConfEntry 5 } + +tn3270eSrvrFunctionsSupported OBJECT-TYPE + SYNTAX IANATn3270Functions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the functions supported by a + TN3270E server." + DEFVAL { { scsCtlCodes, dataStreamCtl, + responses, bindImage, sysreq } } + ::= { tn3270eSrvrConfEntry 6 } + +tn3270eSrvrConfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + stopImmediate(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of the TN3270E server represented + by this entry in the table: + + up(1) - Activate this TN3270E server. + down(2) - Informs the associated TN3270E + server to gracefully terminate + its processing. + stopImmediate(3) - Informs the associated TN3270E + server to terminate itself + immediately. + + When a managed system creates an entry in this table, + tn3270eSrvrConfAdminStatus and tn3270eSrvrConfOperStatus + are initialized as up(1) by default. + + The exact behavior of a server in response to a down(2) + or stopImmediate(3) command is left implementation- + dependent. A TN3270E server that is capable of it + SHOULD close all of its TN3270 and TN3270E sessions + during a graceful termination. + + Often the function enabled via stopImmediate(3) is used + as a last resort by a system administrator, to attempt + to either bring down a hung TN3270E server or free up + its resources immediately to aid in general system + availability, or to shut down a TN3270E server that is + not recognizing a down(2) request. + + A TN3270E server that does not distinguish between + down(2) or stopImmediate(3) transitions should not + support stopImmediate(3)." + DEFVAL { up } + ::= { tn3270eSrvrConfEntry 7 } + +tn3270eSrvrConfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + busy(3), + shuttingDown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of a TN3270E server. + The following values are defined: + + up(1) - the server is active and accepting + new client connections + down(2) - the server is not active + busy(3) - the server is active, but is not + accepting new client connections + because it lacks the resources to + do so + shuttingDown(4) - the server is active, but is not + accepting new client connections + because it is in the process of + performing a graceful shutdown." + DEFVAL { up } + ::= { tn3270eSrvrConfEntry 8 } + +tn3270eSrvrConfSessionTermState OBJECT-TYPE + SYNTAX INTEGER { + terminate(1), + luSessionPend(2), + queueSession(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines what a TN3270E server + should do when a TN3270 Session terminates: + terminate(1) => Terminate the TCP connection. + luSessionPend(2) => Do not drop the TCP connection + associated with a client when its + TN3270 session ends. Processing + should redrive session initialization + as if the client were first connecting. + queueSession(3) => This value relates to the Close + Destination PASS (CLSDST PASS) operation + in VTAM. An example provides the + easiest explanation. Suppose a TN3270E + client is in session with APPL1, and + APPL1 does a CLSDST PASS of the client's + session to APPL2. queueSession(3) + specifies that the TN3270E server must + keep the TCP connection with the client + active after it receives the UNBIND from + APPL1, waiting for the BIND from APPL2." + DEFVAL { terminate } + ::= { tn3270eSrvrConfEntry 9 } + +tn3270eSrvrConfSrvrType OBJECT-TYPE + SYNTAX INTEGER { + host(1), + gateway(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of TN3270E server. + The existence of MIB tables and objects that will be + defined by follow-on MIBs may be predicated on whether + the TN3270E server can be local to the same host as a + target application (host(1)) or will always be remote + (gateway(2)). + + A host TN3270E server refers to an implementation where + the TN3270E server is collocated with the Systems + Network Architecture (SNA) System Services Control Point + (SSCP) for the dependent Secondary Logical Units (SLUs) + that the server makes available to its clients for + connecting into an SNA network. + A gateway TN3270E server resides on an SNA node other + than an SSCP, either an SNA type 2.0 node or an APPN node + acting in the role of a Dependent LU Requester (DLUR). + + Host and gateway TN3270E server implementations typically + differ greatly as to their internal implementation and + system definition (SYSDEF) requirements." + ::= { tn3270eSrvrConfEntry 10 } + +tn3270eSrvrConfContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object provides a scratch pad for a TN3270E + server administrator for storing information for + later retrieval." + DEFVAL { ''H } -- the empty string + ::= { tn3270eSrvrConfEntry 11 } + +tn3270eSrvrConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eSrvrConfTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + With the exception of tn3270eSrvrConfSrvrType, which + an implementation can easily fill in for itself, all + the columnar objects in this table have DEFVALs + associated with them. Consequently, a Management + Station can create a conceptual row via a SET + operation that specifies a value only for this object. + + When a tn3270eSrvrConfEntry is deleted (by setting + this object to destroy(6)), this has the side-effect + of removing all the associated entries (i.e., those + having the same tn3270eSrvrConfIndex) from the + tn3270eSrvrPortTable, the tn3270eSrvrStatsTable, the + tn3270eClientGroupTable, the tn3270eResPoolTable, + the tn3270eSnaMapTable, the tn3270eClientResMapTable, + and the tn3270eResMapTable. All entries in the + tn3270eTcpConnTable that belong to a TN3270E server + that has been deleted MUST also be removed. + In other words, a tn3270eSrvrConfEntry must exist for + a TN3270E server in order for it to have entries in + any of the other tables defined by this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eSrvrConfEntry 12 } + +tn3270eSrvrConfLastActTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the DateAndTime when a TN3270E + server was most recently activated. + + The special value of all '00'Hs indicates that the + server has never been active, i.e., that the value of + tn3270eSrvrOperStatus has never been anything other + than down(2)." + DEFVAL { '0000000000000000'H } + ::= { tn3270eSrvrConfEntry 13 } + +tn3270eSrvrConfTmTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) -- 1 second to 10 minutes + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TIMING-MARK time-out, specified in seconds." + DEFVAL { 5 } -- 5 seconds + ::= { tn3270eSrvrConfEntry 14 } + +tn3270eSrvrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the TCP ports associated with + TN3270E servers. No entry in this table shall exist + without a corresponding (same tn3270eSrvrConfIndex) + entry in the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 2 } + +tn3270eSrvrPortEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single TCP port assignment to a + TN3270E server. Assignment of a port on a local + address basis is enabled though use of + tn3270eSrvrPortAddrType and tn3270eSrvrPortAddress. + + A TCP port assignment that is not restricted to + a local address SHALL specify a tn3270eSrvrPortAddrType + of unknown(0), and SHALL use a zero-length octet string + for the tn3270eSrvrPortAddress." + INDEX { + tn3270eSrvrConfIndex, + tn3270eSrvrPort, + tn3270eSrvrPortAddrType, + tn3270eSrvrPortAddress + } + ::= { tn3270eSrvrPortTable 1 } + +Tn3270eSrvrPortEntry ::= SEQUENCE { + tn3270eSrvrPort Unsigned32, + tn3270eSrvrPortAddrType IANATn3270eAddrType, + tn3270eSrvrPortAddress IANATn3270eAddress, + tn3270eSrvrPortRowStatus RowStatus + } + +tn3270eSrvrPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates a port assigned to a server." + ::= { tn3270eSrvrPortEntry 1 } + +tn3270eSrvrPortAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of an address local to the host on + which the TN3270E server resides that is represented + in tn3270eSrvrPortAddress. A value of unknown(0) + SHALL be used for this object when the port is not + to be restricted to a local address." + ::= { tn3270eSrvrPortEntry 2 } + +tn3270eSrvrPortAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A local address on the host that a TN3270E server + resides on that is associated with a TCP port that + is to be used or is in use by a TN3270E server. + tn3270eClientGroupAddrType indicates the + address type (IPv4 or IPv6, for example). + + A zero-length octet string SHALL be used as the + value of this object when a local address isn't + being specified." + ::= { tn3270eSrvrPortEntry 3 } + +tn3270eSrvrPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eSrvrPortTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + Since this is the only accessible object in this table, + a Management Station can create a conceptual row via a SET + operation that specifies a value only for this object. + + An entry in this table is deleted by setting this object + to destroy(6). Deletion of a tn3270eSrvrPortEntry has + no effect on any other table entry defined by this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eSrvrPortEntry 4 } + +tn3270eSrvrStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a set of statistics concerning + TN3270E server performance. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 3 } + +tn3270eSrvrStatsEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistical and maximum usage objects + for a single TN3270 server. An entry can represent the total + activity of the server, or it can represent the activity + occurring at the server on either a port or a + port-and-local-address basis. + + Collection of the statistics represented by the objects + in this table is not mandatory. An implementation + of this table MUST use only one of the three levels of + refinement that this table supports for the entries + associated with each TN3270E server. + + The indexing for a row that represents total server + statistics is as follows: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort 0 + tn3270eSrvrPortAddrType unknown(0) + tn3270eSrvrPortAddress zero-length octet string. + + On a port basis: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort > 0 + tn3270eSrvrPortAddrType unknown(0) + tn3270eSrvrPortAddress zero-length octet string. + + On a port-and-local-address basis: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort > 0 + tn3270eSrvrPortAddrType valid value other than unknown(0) + tn3270eSrvrPortAddress non-zero-length octet string. + + " + INDEX { + tn3270eSrvrConfIndex, + tn3270eSrvrPort, + tn3270eSrvrPortAddrType, + tn3270eSrvrPortAddress + } + ::= { tn3270eSrvrStatsTable 1 } + +Tn3270eSrvrStatsEntry ::= SEQUENCE { + tn3270eSrvrStatsUpTime TimeStamp, + tn3270eSrvrStatsMaxTerms Unsigned32, + tn3270eSrvrStatsInUseTerms Gauge32, + tn3270eSrvrStatsSpareTerms Gauge32, + tn3270eSrvrStatsMaxPtrs Unsigned32, + tn3270eSrvrStatsInUsePtrs Gauge32, + tn3270eSrvrStatsSparePtrs Gauge32, + tn3270eSrvrStatsInConnects Counter32, + tn3270eSrvrStatsConnResrceRejs Counter32, + tn3270eSrvrStatsDisconnects Counter32, + tn3270eSrvrStatsHCInOctets Counter64, + tn3270eSrvrStatsInOctets Counter32, + tn3270eSrvrStatsHCOutOctets Counter64, + tn3270eSrvrStatsOutOctets Counter32, + tn3270eSrvrStatsConnErrorRejs Counter32 + } + +tn3270eSrvrStatsUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time + the TN3270E server was re-initialized. + + Server re-initialization is the only discontinuity + event for the counters in this table. Even if table + entries are on a port or port-and-local-address + basis, port deactivation and reactivation do not + result in counter discontinuities." + ::= { tn3270eSrvrStatsEntry 2 } + +tn3270eSrvrStatsMaxTerms OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum number of terminal LUs available + for use at a TN3270E server for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 3 } + +tn3270eSrvrStatsInUseTerms OBJECT-TYPE + SYNTAX Gauge32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of terminal LUs currently in + use at a TN3270E server for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 4 } + +tn3270eSrvrStatsSpareTerms OBJECT-TYPE + SYNTAX Gauge32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of free terminal LUs at a TN3270E + server for the granularity of this conceptual row + (server-wide, port, or port-and-local-address). + + It is possible that the difference between + tn3270eSrvrStatsMaxTerms and tn3270eSrvrStatsInUseTerms + in a conceptual row does not equal the value of + tn3270eSrvrStatsSpareTerms in that row: an LU may + exist but not be usable by a client connection. + + Alternatively, the administrative ceiling represented + by tn3270eSrvrStatsMaxTerms may have been lowered to + a point where it is less than the current value of + tn3270eSrvrStatsInUseTerms. In this case + tn3270eSrvrStatsSpareTerms returns the value 0." + + ::= { tn3270eSrvrStatsEntry 5 } + +tn3270eSrvrStatsMaxPtrs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum number of printer resources + available for use by a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 6 } + +tn3270eSrvrStatsInUsePtrs OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of printer resources + currently in use by a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 7 } + +tn3270eSrvrStatsSparePtrs OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Spare Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of free printer resources at + a TN3270E server for the granularity of this conceptual + row (server-wide, port, or port-and-local-address). + + It is possible that the difference between + tn3270eSrvrStatsMaxPtrs and tn3270eSrvrStatsInUsePtrs + in a conceptual row does not equal the value of + tn3270eSrvrStatsSparePtrs in that row: a printer + resource may exist but not be usable by a client + connection. + + Alternatively, the administrative ceiling represented + by tn3270eSrvrStatsMaxPtrs may have been lowered to + a point where it is less than the current value of + tn3270eSrvrStatsInUsePtrs. In this case + tn3270eSrvrStatsSparePtrs returns the value 0." + ::= { tn3270eSrvrStatsEntry 8 } + +tn3270eSrvrStatsInConnects OBJECT-TYPE + SYNTAX Counter32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of client (TCP) connections + that succeeded at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address). + + The tn3270eSrvrStatsConnResrceRejs and + tn3270eSrvrStatsConnErrorRejs objects provide a count + of failed connection attempts. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 9 } + +tn3270eSrvrStatsConnResrceRejs OBJECT-TYPE + SYNTAX Counter32 + UNITS "connection attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections rejected + during connection setup at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address) due to a lack of + resources at the server. An example of when this + counter would be incremented is when no terminal + or printer resource is available to associate with a + client's TCP connection. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 10 } + +tn3270eSrvrStatsDisconnects OBJECT-TYPE + SYNTAX Counter32 + UNITS "disconnections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections that were + disconnected at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 11 } + +tn3270eSrvrStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of octets received from TN3270 + and TN3270E clients for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 12 } + +tn3270eSrvrStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of tn3270eSrvrStatsHCInOctets for + this conceptual row. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 13 } + +tn3270eSrvrStatsHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of octets sent to TN3270 + and TN3270E clients for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 14 } + +tn3270eSrvrStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of tn3270eSrvrStatsHCOutOctets for + this conceptual row. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 15 } + +tn3270eSrvrStatsConnErrorRejs OBJECT-TYPE + SYNTAX Counter32 + UNITS "connection attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections rejected + during connection setup at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address) due to an error + of some type. An example of when this counter would + be incremented is when the client and the server + cannot agree on a common set of TN3270E functions for + the connection. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 16 } + +tn3270eClientGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eClientGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines client address groupings for use + by a TN3270E server. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 4 } + +tn3270eClientGroupEntry OBJECT-TYPE + SYNTAX Tn3270eClientGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single client address entry. All + entries with the same first two indexes, + tn3270eSrvrConfIndex and tn3270eClientGroupName, are + considered to be in the same client group." + INDEX { tn3270eSrvrConfIndex, + tn3270eClientGroupName, + tn3270eClientGroupAddrType, + tn3270eClientGroupAddress } + ::= { tn3270eClientGroupTable 1 } + +Tn3270eClientGroupEntry ::= SEQUENCE { + tn3270eClientGroupName Utf8String, + tn3270eClientGroupAddrType IANATn3270eAddrType, + tn3270eClientGroupAddress IANATn3270eAddress, + tn3270eClientGroupSubnetMask IpAddress, + tn3270eClientGroupPfxLength Unsigned32, + tn3270eClientGroupRowStatus RowStatus +} + +tn3270eClientGroupName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a client group. Note: client group + names are required to be unique only with respect + to a single TN3270E server." + ::= { tn3270eClientGroupEntry 1 } + +tn3270eClientGroupAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the address represented in + tn3270eClientGroupAddress." + ::= { tn3270eClientGroupEntry 2 } + +tn3270eClientGroupAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The client address of a member of a client group. + The value of tn3270eClientGroupAddrType indicates + the address type (IPv4 or IPv6, for example)." + ::= { tn3270eClientGroupEntry 3 } + +tn3270eClientGroupSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The corresponding subnet mask associated with + tn3270eClientGroupAddress. A single IP address is + represented by having this object contain the value + of 255.255.255.255. + + This object's value is meaningful only if + tn3270eClientGroupAddrType has a value of ipv4(1)." + DEFVAL { 'FFFFFFFF'H } + ::= { tn3270eClientGroupEntry 4 } + +tn3270eClientGroupPfxLength OBJECT-TYPE + SYNTAX Unsigned32 (0..128) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The corresponding IPv6 network prefix length. + + This object's value is meaningful only if + tn3270eClientGroupAddrType has a value of ipv6(2)." + DEFVAL { 0 } + ::= { tn3270eClientGroupEntry 5 } + +tn3270eClientGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eClientGroupTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). When the number of entries in this table + for a given client group becomes 0, this has the side- + effect of removing any entries for the group in the + tn3270eClientResMapTable." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eClientGroupEntry 6 } + +tn3270eResPoolTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eResPoolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines resource groupings; the term + 'pool' is used as it is defined by RFC 2355. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 5 } + +tn3270eResPoolEntry OBJECT-TYPE + SYNTAX Tn3270eResPoolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single resource pool member. All entries + with the same first two indexes, tn3270eSrvrConfIndex and + tn3270eResPoolName, are considered to be in the same pool." + INDEX { tn3270eSrvrConfIndex, + tn3270eResPoolName, + tn3270eResPoolElementName } + ::= { tn3270eResPoolTable 1 } + +Tn3270eResPoolEntry ::= SEQUENCE { + tn3270eResPoolName Utf8String, + tn3270eResPoolElementName SnaResourceName, + tn3270eResPoolElementType IANATn3270ResourceType, + tn3270eResPoolRowStatus RowStatus +} + +tn3270eResPoolName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource pool." + ::= { tn3270eResPoolEntry 1 } + +tn3270eResPoolElementName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a member of a resource pool." + ::= { tn3270eResPoolEntry 2 } + +tn3270eResPoolElementType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the entity in a resource pool." + ::= { tn3270eResPoolEntry 3 } + +tn3270eResPoolRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eResPoolTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). When all entries in this table associated + with the same tn3270eResPoolElementName have been removed, + then any associated (tn3270eResPoolElementName matching + tn3270eClientResMapPoolName with same tn3270eSrvrConfIndex + values) entries in the tn3270eClientResMapTable SHALL + also be removed." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eResPoolEntry 4 } + +tn3270eSnaMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSnaMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provide a mapping from the name by which + a secondary LU is known in the SNA network to the + name by which it is known locally at the TN3270e + server. This latter name serves as an index into + the tn3270eResPoolTable and the tn3270eResMapTable. + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 6 } + +tn3270eSnaMapEntry OBJECT-TYPE + SYNTAX Tn3270eSnaMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single mapping from an SSCP-supplied + SLU name to a local SLU name. + + Note: In certain pathological cases, it is possible + that an SSCP will send on an ACTLU for a local LU an + SLU name currently represented by an entry in this + table that associates it with a different local LU. + In these cases the association from the newer ACTLU + SHOULD be the one represented in this table." + INDEX { tn3270eSrvrConfIndex, + tn3270eSnaMapSscpSuppliedName } + ::= { tn3270eSnaMapTable 1 } + +Tn3270eSnaMapEntry ::= SEQUENCE { + tn3270eSnaMapSscpSuppliedName SnaResourceName, + tn3270eSnaMapLocalName SnaResourceName, + tn3270eSnaMapPrimaryLuName SnaResourceName +} + +tn3270eSnaMapSscpSuppliedName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the secondary LU (SLU) as it is known in + the SNA network. This name is sent by the SSCP on + the Activate Logical Unit (ACTLU) request." + ::= { tn3270eSnaMapEntry 1 } + +tn3270eSnaMapLocalName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local name of the secondary LU (SLU)." + ::= { tn3270eSnaMapEntry 2 } + +tn3270eSnaMapPrimaryLuName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When there is a currently active LU-LU session for + this connection, this object returns the primary LU + (PLU) name from the BIND. When there is no active + LU-LU session, or when the PLU name is unavailable + for some other reason, this object returns a + zero-length octet string." + ::= { tn3270eSnaMapEntry 3 } + +tn3270eClientResMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eClientResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines resource-pool to client-group + mappings. Since both the resource pool name and client + group name are included in the index clause of this + table, multiple resource pools can be assigned to the + same client group. This enables use of multiple + resource pools for use in client to resource mapping. + Assigning multiple client groups to the same resource + pool is also allowed, but is not the primary purpose + for how the indexing is structured. + + Assignment of a resource pool to client group can be + restricted based on TCP port. An index value of 0 for + tn3270eClientResMapClientPort disables restriction of + resource assignment based on client target port + selection. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 7 } + +tn3270eClientResMapEntry OBJECT-TYPE + SYNTAX Tn3270eClientResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single resource pool to client group + mapping." + INDEX { tn3270eSrvrConfIndex, + tn3270eClientResMapPoolName, + tn3270eClientResMapClientGroupName, + tn3270eClientResMapClientPort } + ::= { tn3270eClientResMapTable 1 } + +Tn3270eClientResMapEntry ::= SEQUENCE { + tn3270eClientResMapPoolName Utf8String, + tn3270eClientResMapClientGroupName Utf8String, + tn3270eClientResMapClientPort Unsigned32, + tn3270eClientResMapRowStatus RowStatus +} + +tn3270eClientResMapPoolName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource pool." + ::= { tn3270eClientResMapEntry 1 } + +tn3270eClientResMapClientGroupName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the client group that is mapped to a + resource pool." + ::= { tn3270eClientResMapEntry 2 } + +tn3270eClientResMapClientPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A port number restricting the scope of a mapping + from a resource pool to a client group. The + value 0 for this object indicates that the scope + of the mapping is not restricted." + ::= { tn3270eClientResMapEntry 3 } + +tn3270eClientResMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eClientResMapTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). Removing an entry from this table doesn't + affect any other table entry defined in this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eClientResMapEntry 4 } + +tn3270eResMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the actual mapping of a resource + to a client address. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 8 } + +tn3270eResMapEntry OBJECT-TYPE + SYNTAX Tn3270eResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of the mapping of a Resource Element to + a client address." + INDEX { tn3270eSrvrConfIndex, + tn3270eResMapElementName } + ::= { tn3270eResMapTable 1 } + +Tn3270eResMapEntry ::= SEQUENCE { + tn3270eResMapElementName SnaResourceName, + tn3270eResMapAddrType IANATn3270eAddrType, + tn3270eResMapAddress IANATn3270eAddress, + tn3270eResMapPort Unsigned32, + tn3270eResMapElementType IANATn3270ResourceType, + tn3270eResMapSscpSuppliedName SnaResourceName +} + +tn3270eResMapElementName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource element. This is the name by + which the server implementing this table knows the + resource. It may be different from the name by which + the resource is known in the SNA network. This latter + name is returned in the tn3270eResMapSscpSuppliedName + object." + ::= { tn3270eResMapEntry 1 } + +tn3270eResMapAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of the client address represented + in tn3270eResMapAddress." + ::= { tn3270eResMapEntry 2 } + +tn3270eResMapAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A client address." + ::= { tn3270eResMapEntry 3 } + +tn3270eResMapPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A client port." + ::= { tn3270eResMapEntry 4 } + +tn3270eResMapElementType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the associated resource element." + ::= { tn3270eResMapEntry 5 } + +tn3270eResMapSscpSuppliedName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the secondary LU (SLU) as it is known + in a SNA network. This name is sent by the SSCP on + the Activate Logical Unit (ACTLU) request. If this + name is not known, this object returns a zero-length + octet string." + ::= { tn3270eResMapEntry 6 } + +-- Define the set of objects to supplement the TCP Connection Table + +tn3270eTcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table has an entry for each TN3270(E) client + connection that is currently active at a TN3270E server. + An implementation MAY retain entries for connections + that have been terminated, but which entries are + retained, how many entries are retained, and how long + they are retained is entirely implementation-dependent. + + The indexing for this table is designed to support the + use of an SNMP GET-NEXT operation using only the remote + address type, remote address, and remote port, as a way + for a Management Station to retrieve the table entries + related to a particular TN3270(E) client." + ::= { tn3270eObjects 9 } + +tn3270eTcpConnEntry OBJECT-TYPE + SYNTAX Tn3270eTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides information about a single TN3270/TN3270E + session. Note: a tn3270eSrvrConfIndex is not needed + in this table, since the combination of remote and + local addresses and ports is sufficient to + guarantee uniqueness across the TN3270E servers + serviced by an SNMP agent. Because of this indexing + structure, however, this table does not support + view-based access control policies that provide + access to table rows on a per-server basis." + INDEX { tn3270eTcpConnRemAddrType, + tn3270eTcpConnRemAddress, + tn3270eTcpConnRemPort, + tn3270eTcpConnLocalAddrType, + tn3270eTcpConnLocalAddress, + tn3270eTcpConnLocalPort + } + ::= { tn3270eTcpConnTable 1 } + +Tn3270eTcpConnEntry ::= + SEQUENCE + { + tn3270eTcpConnRemAddrType IANATn3270eAddrType, + tn3270eTcpConnRemAddress IANATn3270eAddress, + tn3270eTcpConnRemPort Unsigned32, + tn3270eTcpConnLocalAddrType IANATn3270eAddrType, + tn3270eTcpConnLocalAddress IANATn3270eAddress, + tn3270eTcpConnLocalPort Unsigned32, + tn3270eTcpConnLastActivity TimeTicks, + tn3270eTcpConnBytesIn Counter32, + tn3270eTcpConnBytesOut Counter32, + tn3270eTcpConnResourceElement SnaResourceName, + tn3270eTcpConnResourceType IANATn3270ResourceType, + tn3270eTcpConnDeviceType IANATn3270DeviceType, + tn3270eTcpConnFunctions IANATn3270Functions, + tn3270eTcpConnId Unsigned32, + tn3270eTcpConnClientIdFormat IANATn3270eClientType, + tn3270eTcpConnClientId OCTET STRING, + tn3270eTcpConnTraceData Tn3270eTraceData, + tn3270eTcpConnLogInfo IANATn3270eLogData, + tn3270eTcpConnLuLuBindImage OCTET STRING, + tn3270eTcpConnSnaState INTEGER, + tn3270eTcpConnStateLastDiscReason INTEGER, + tn3270eTcpConnSrvrConfIndex Unsigned32, + tn3270eTcpConnActivationTime TimeStamp + } + +tn3270eTcpConnRemAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the value of the + tn3270eTcpConnRemAddress object. For example, + ipv4(1) or ipv6(2)." + ::= { tn3270eTcpConnEntry 1 } + +tn3270eTcpConnRemAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote address associated with a TN3270E client. + tn3270eTcpConnRemAddrType indicates the address type + (IPv4 or IPv6, for example). + + If a TN3270(E) client is connected to its + server via a proxy client the address represented by + the value of this object shall be the remote client's + address, not the proxy client's address." + ::= { tn3270eTcpConnEntry 2 } + +tn3270eTcpConnRemPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port associated with a TN3270E client. The value 0 + is used if the tn3270eTcpConnRemAddrType identifies an address + type that does not support ports. + + If a TN3270(E) client is connected to its server via a proxy + client, the port represented by the value of this object shall + be the remote client's port, not the proxy client's port." + ::= { tn3270eTcpConnEntry 3 } + +tn3270eTcpConnLocalAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the value of the + tn3270eTcpConnLocalAddress object. For example, + ipv4(1) or ipv6(2)." + ::= { tn3270eTcpConnEntry 4 } + +tn3270eTcpConnLocalAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local address associated with a TN3270E client. + tn3270eTcpConnRemAddrType indicates the address type + (IPv4 or IPv6, for example)." + ::= { tn3270eTcpConnEntry 5 } + +tn3270eTcpConnLocalPort OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port associated with a TN3270E client." + ::= { tn3270eTcpConnEntry 6 } + +tn3270eTcpConnLastActivity OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 100ths of seconds since any data was + transferred for the associated TCP Connection." + DEFVAL { 0 } + ::= { tn3270eTcpConnEntry 7 } + +tn3270eTcpConnBytesIn OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by the server from TCP + for this connection. + + A Management Station can detect discontinuities in + this counter by monitoring the + tn3270eTcpConnActivationTime object." + ::= { tn3270eTcpConnEntry 8 } + +tn3270eTcpConnBytesOut OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent to TCP for this connection. + + A Management Station can detect discontinuities in + this counter by monitoring the + tn3270eTcpConnActivationTime object." + ::= { tn3270eTcpConnEntry 9 } + +tn3270eTcpConnResourceElement OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "LU/Print secondary name for connecting an client + into an SNA network." + ::= { tn3270eTcpConnEntry 10 } + +tn3270eTcpConnResourceType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of resource identified by + tn3270eTcpConnResourceElement." + ::= { tn3270eTcpConnEntry 11 } + +tn3270eTcpConnDeviceType OBJECT-TYPE + SYNTAX IANATn3270DeviceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the device type if negotiated with the + client. A value of unknown(100) should be used as + the value of this object when a device type is not + negotiated. Refer to RFC 2355 for how device types + can be negotiated." + ::= { tn3270eTcpConnEntry 12 } + +tn3270eTcpConnFunctions OBJECT-TYPE + SYNTAX IANATn3270Functions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates which of the TN3270 and TN3270E + functions were negotiated by the server and the client + for this TCP connection. + + Refer to tn3270eSrvrFunctionsSupported for the list of + these functions supported by the server." + ::= { tn3270eTcpConnEntry 13 } + +tn3270eTcpConnId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The connection identifier associated with a TN3270 or + a TN3270E session's TCP connection. TCP implementations + often assign a unique (with respect to itself) unsigned + integer as an identifier for a TCP connection. + + The value 0 indicates that a connection does not have + a valid connection identifier." + ::= { tn3270eTcpConnEntry 14 } + +tn3270eTcpConnClientIdFormat OBJECT-TYPE + SYNTAX IANATn3270eClientType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The format of a corresponding tn3270eTcpConnClientId + object as defined by the IANSTn3270eClientType textual + convention imported from the IANATn3270eTC-MIB." + ::= { tn3270eTcpConnEntry 15 } + +tn3270eTcpConnClientId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..512)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional client identification information. The + type of this information is indicated by the value of + the corresponding tn3270eTcpConnClientIdFormat object. + All values are returned in network-byte order. + + The purpose of this object is to provide an alternate + means of identifying a client, other than though the + remote address returned in tn3270eTcpConnRemAddress." + ::= { tn3270eTcpConnEntry 16 } + +tn3270eTcpConnTraceData OBJECT-TYPE + SYNTAX Tn3270eTraceData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Trace data for this session." + ::= { tn3270eTcpConnEntry 17 } + +tn3270eTcpConnLogInfo OBJECT-TYPE + SYNTAX IANATn3270eLogData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Log information, encoded as specified in the + IANATn3270eLogData textual convention from the + IANAtn3270eTC-MIB." + ::= { tn3270eTcpConnEntry 18 } + +tn3270eTcpConnLuLuBindImage OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When there is a currently active LU-LU session for + this connection, this object returns the BIND Image + (defined to be bytes 1-p of the complete BIND Request + Unit -- see 'SNA Formats' for more information) + that was received from the PLU during session + activation. When there is no active LU-LU session, + or when a BIND image is unavailable for some other + reason, this object returns a zero-length octet + string." + REFERENCE + "'Systems Network Architecture Formats', IBM + Publication GA27-3136." + ::= { tn3270eTcpConnEntry 19 } + +tn3270eTcpConnSnaState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + noSluSession(2), + sscpLuSession(3), -- but no LU-LU session + luLuSession(4), -- but no SSCP-LU session + sscpLuSessionAndLuLuSession(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the SNA side of the end-to-end + TN3270 connection. The following states are defined: + + unknown(1) - The true state is not known. + noSluSession(2) - The SLU has neither an SSCP-LU + nor an LU-LU session active. + sscpLuSession(3) - The SSCP-LU session for the SLU + is active, but the SLU is not + currently in session with a PLU. + luLuSession(4) - The SLU is currently in session + with a PLU, but the SSCP-LU + session for the LU is not active. + sscpLuSessionAndLuLuSession(5) - The SLU currently has + an active session with a PLU, + and the SSCP-LU session for the + SLU is active." + + ::= { tn3270eTcpConnEntry 20 } + +tn3270eTcpConnStateLastDiscReason OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + hostSendsUnbind(2), + hostDontAcceptConnection(3), + outOfResource(4), + clientProtocolError(5), + invalidDeviceName(6), + deviceInUse(7), + inactivityTimeout(8), + hostNotResponding(9), + clientNotResponding(10), + serverClose(11), + sysreqLogoff(12), + serverSpecificHexCode(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last disconnect reason. A session that has not + experienced a disconnect shall use the value unknown(1) + for this object. Depending on when an implementation + removes entries from this table, certain states may + never be returned." + ::= { tn3270eTcpConnEntry 21 } + +tn3270eTcpConnSrvrConfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "tn3270eSrvrConfIndex of the tn3270eSrvrConfEntry + belonging to the TN3270E server to which this entry + belongs." + ::= { tn3270eTcpConnEntry 22 } + +tn3270eTcpConnActivationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time + this TCP connection became active." + ::= { tn3270eTcpConnEntry 23 } + +tn3270eConfSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating + TN3270E-MIB applications to coordinate their use + of the tn3270eSrvrConfTable, the tn3270eSrvrPortTable, + the tn3270eClientGroupTable, the tn3270eResPoolTable, + and the tn3270eClientResMapTable. + + When creating a new entry or altering an existing entry + in the any of the tables mentioned above, an application + should make use of tn3270eRtSpinLock to serialize + application changes or additions. + + Since this is an advisory lock, the use of this lock is + not enforced." + ::= { tn3270eObjects 10 } + +-- Conformance Definitions + +tn3270eGroups OBJECT IDENTIFIER ::= { tn3270eConformance 1 } + +tn3270eCompliances OBJECT IDENTIFIER ::= { tn3270eConformance 2 } + +-- compliance statements + +tn3270eCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + TN3270E-MIB." + MODULE -- this module + MANDATORY-GROUPS { tn3270eBasicGroup, + tn3270eSessionGroup + } + GROUP tn3270eResMapGroup + DESCRIPTION + "This group is optional and provides a method of + performing tn3270eClientGroup to tn3270eResPool + mapping." + + GROUP tn3270eHiCapacityGroup + DESCRIPTION + "This group is optional and provides for support + of high capacity counters." + + OBJECT tn3270eSrvrConfConnectivityChk + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the associated TN3270E server doesn't + support either TIMING-MARK or NOP processing. In + this case an agent should return noCheck on + retrieval." + + OBJECT tn3270eSrvrConfTmNopInactTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrConfTmNopInterval + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrConfAdminStatus + DESCRIPTION + "A TN3270E server is not required to support a + stopImmediate state transition." + + OBJECT tn3270eSrvrConfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eSrvrConfTmTimeout + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrPortRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eClientGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eResPoolRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eClientResMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { tn3270eCompliances 1 } + +-- units of conformance + +tn3270eBasicGroup OBJECT-GROUP + OBJECTS { + tn3270eSrvrConfInactivityTimeout, + tn3270eSrvrConfConnectivityChk, + tn3270eSrvrConfTmNopInactTime, + tn3270eSrvrConfTmNopInterval, + tn3270eSrvrFunctionsSupported, + tn3270eSrvrConfAdminStatus, + tn3270eSrvrConfOperStatus, + tn3270eSrvrConfSessionTermState, + tn3270eSrvrConfSrvrType, + tn3270eSrvrConfContact, + tn3270eSrvrConfRowStatus, + tn3270eSrvrConfLastActTime, + tn3270eSrvrConfTmTimeout, + tn3270eSrvrPortRowStatus, + tn3270eSrvrStatsUpTime, + tn3270eSrvrStatsMaxTerms, + tn3270eSrvrStatsInUseTerms, + tn3270eSrvrStatsSpareTerms, + tn3270eSrvrStatsMaxPtrs, + tn3270eSrvrStatsInUsePtrs, + tn3270eSrvrStatsSparePtrs, + tn3270eSrvrStatsInConnects, + tn3270eSrvrStatsConnResrceRejs, + tn3270eSrvrStatsDisconnects, + tn3270eSrvrStatsInOctets, + tn3270eSrvrStatsOutOctets, + tn3270eSrvrStatsConnErrorRejs, + tn3270eClientGroupSubnetMask, + tn3270eClientGroupPfxLength, + tn3270eClientGroupRowStatus, + tn3270eSnaMapLocalName, + tn3270eSnaMapPrimaryLuName, + tn3270eConfSpinLock + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 1 } + +tn3270eSessionGroup OBJECT-GROUP + OBJECTS { + tn3270eResMapAddrType, + tn3270eResMapAddress, + tn3270eResMapPort, + tn3270eResMapElementType, + tn3270eResMapSscpSuppliedName, + tn3270eTcpConnLastActivity, + tn3270eTcpConnBytesIn, + tn3270eTcpConnBytesOut, + tn3270eTcpConnResourceElement, + tn3270eTcpConnResourceType, + tn3270eTcpConnDeviceType, + tn3270eTcpConnFunctions, + tn3270eTcpConnSrvrConfIndex, + tn3270eTcpConnActivationTime + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 2 } + +tn3270eResMapGroup OBJECT-GROUP + OBJECTS { + tn3270eResPoolElementType, + tn3270eResPoolRowStatus, + tn3270eClientResMapRowStatus, + tn3270eTcpConnId, + tn3270eTcpConnClientIdFormat, + tn3270eTcpConnClientId, + tn3270eTcpConnTraceData, + tn3270eTcpConnLogInfo, + tn3270eTcpConnLuLuBindImage, + tn3270eTcpConnSnaState, + tn3270eTcpConnStateLastDiscReason + } + STATUS current + DESCRIPTION + "This group is optional for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 3 } + +tn3270eHiCapacityGroup OBJECT-GROUP + OBJECTS { + tn3270eSrvrStatsHCInOctets, + tn3270eSrvrStatsHCOutOctets + } + STATUS current + DESCRIPTION + "Support of these objects is REQUIRED when the + Counter32 versions can potentially wrap too + frequently. This group is optional for all other + hosts supporting the TN3270E-MIB. + + The IF-MIB (RFC 2233) requires that the 64-bit + versions of its counters be implemented when an + interface can support rates of around 20 million + bits per second or greater. This implies a minimum + wrap rate of just over 28 minutes. It is recommended + that this same guideline be used for determining + whether an implementation implements these objects. + + This group contains two objects with the syntax + Counter64. An implementation that doesn't support + these objects should return noSuchObject, since + returning a zero is misleading." + + ::= { tn3270eGroups 4 } + +END diff --git a/mibs/ietf/TN3270E-RT-MIB b/mibs/ietf/TN3270E-RT-MIB new file mode 100644 index 0000000..dfb6a59 --- /dev/null +++ b/mibs/ietf/TN3270E-RT-MIB @@ -0,0 +1,890 @@ +TN3270E-RT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Unsigned32, Gauge32 + FROM SNMPv2-SMI + RowStatus, DateAndTime, TimeStamp, TestAndIncr + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + tn3270eSrvrConfIndex, tn3270eClientGroupName, + tn3270eResMapElementType + FROM TN3270E-MIB + IANATn3270eAddrType, IANATn3270eAddress + FROM IANATn3270eTC-MIB + snanauMIB + FROM SNA-NAU-MIB; + + tn3270eRtMIB MODULE-IDENTITY + LAST-UPDATED "9807270000Z" -- July 27, 1998 + ORGANIZATION "TN3270E Working Group" + CONTACT-INFO + "Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + + Robert Moore (remoore@us.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + (919) 254-4436" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) that enables monitoring of + TN3270 and TN3270E clients' response times by a + TN3270E server." + REVISION "9807270000Z" -- July 27, 1998 + DESCRIPTION + "RFC nnnn (Proposed Standard)" -- RFC Editor to fill in +::= { snanauMIB 9 } +-- snanauMIB ::= { mib-2 34 } + +-- Top level structure of the MIB + +tn3270eRtNotifications OBJECT IDENTIFIER ::= { tn3270eRtMIB 0 } +tn3270eRtObjects OBJECT IDENTIFIER ::= { tn3270eRtMIB 1 } +tn3270eRtConformance OBJECT IDENTIFIER ::= { tn3270eRtMIB 3 } + +-- MIB Objects + +-- Response Time Control Table + +tn3270eRtCollCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eRtCollCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The response time monitoring collection control table, + which allows a management application to control the + types of response time data being collected, and the + clients for which it is being collected. + + This table is indexed by tn3270eSrvrConfIndex and + tn3270eClientGroupName imported from the + TN3270E-MIB. tn3270eSrvrConfIndex indicates within + a host which TN3270E server an entry applies to. + tn3270eClientGroupName it identifies the set of IP + clients for which response time data is being collected. + The particular IP clients making up the set are identified + in the tn3270eClientGroupTable in the TN3270E-MIB." + ::= { tn3270eRtObjects 1} + +tn3270eRtCollCtlEntry OBJECT-TYPE + SYNTAX Tn3270eRtCollCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the TN3270E response time monitoring collection + control table. To handle the case of multiple TN3270E + servers on the same host, the first index of this table is + the tn3270eSrvrConfIndex from the TN3270E-MIB." + INDEX { + tn3270eSrvrConfIndex, -- Server's index + tn3270eClientGroupName } -- What to collect on + ::= { tn3270eRtCollCtlTable 1 } + +Tn3270eRtCollCtlEntry ::= SEQUENCE { + tn3270eRtCollCtlType BITS, + tn3270eRtCollCtlSPeriod Unsigned32, + tn3270eRtCollCtlSPMult Unsigned32, + tn3270eRtCollCtlThreshHigh Unsigned32, + tn3270eRtCollCtlThreshLow Unsigned32, + tn3270eRtCollCtlIdleCount Unsigned32, + tn3270eRtCollCtlBucketBndry1 Unsigned32, + tn3270eRtCollCtlBucketBndry2 Unsigned32, + tn3270eRtCollCtlBucketBndry3 Unsigned32, + tn3270eRtCollCtlBucketBndry4 Unsigned32, + tn3270eRtCollCtlRowStatus RowStatus } + +-- The OID { tn3270eRtCollCtlEntry 1 } is not used + +tn3270eRtCollCtlType OBJECT-TYPE + SYNTAX BITS { + aggregate(0), + excludeIpComponent(1), + ddr(2), + average(3), + buckets(4), + traps(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls what types of response time data to + collect, whether to summarize the data across the members + of a client group or keep it individually, whether to + introduce dynamic definite responses, and whether to + generate traps. + aggregate(0) - Aggregate response time data for the + client group as a whole. If this bit + is set to 0, then maintain response + time data separately for each member + of the client group. + excludeIpComponent(1) - Do not include the IP-network + component in any response times. + ddr(2) - Enable dynamic definite response. + average(3) - Produce an average response time + based on a specified collection + interval. + buckets(4) - Maintain tn3270eRtDataBucket values in + a corresponding tn3270eRtDataEntry, + based on the bucket boundaries specified + in the tn3270eRtCollCtlBucketBndry + objects . + traps(5) - generate the notifications specified + in this MIB module. The + tn3270eRtExceeded and tn3270eRtOkay + notifications are generated only if + average(3) is also specified." + ::= { tn3270eRtCollCtlEntry 2 } + +tn3270eRtCollCtlSPeriod OBJECT-TYPE + SYNTAX Unsigned32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that defines the sample period. + The actual interval is defined as tn3270eRtCollCtlSPeriod + times tn3270eRtCollCtlSPMult. + + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has the average(3) setting." + DEFVAL {20} -- 20 seconds + ::= { tn3270eRtCollCtlEntry 3 } + +tn3270eRtCollCtlSPMult OBJECT-TYPE + SYNTAX Unsigned32 (1..5760) -- 5760 x SPeriod of 15 is 24 hours + UNITS "period" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The sample period multiplier; this value is multiplied by + the sample period, tn3270eRtCollCtlSPeriod, to determine + the collection interval. + Sliding-window average calculation can, if necessary, be + disabled, by setting the sample period multiplier, + tn3270eRtCollCtlSPMult, to 1, and setting the sample + period, tn3270eRtCollCtlSPeriod, to the required + collection interval. + + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has the average(3) setting." + DEFVAL { 30 } -- yields an interval of 10 minutes when + -- used with the default SPeriod value + ::= { tn3270eRtCollCtlEntry 4 } + +tn3270eRtCollCtlThreshHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a tn3270eRtExceeded + notification, signalling that a monitored total response + time has exceeded the specified limit. A value of zero + for this object suppresses generation of this notification. + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected. + + A tn3270eRtExceeded notification is not generated again for a + tn3270eRtDataEntry until an average response time falling below + the low threshold tn3270eRtCollCtlThreshLow specified for the + client group has occurred for the entry." + + DEFVAL { 0 } -- suppress notifications + ::= { tn3270eRtCollCtlEntry 5 } + +tn3270eRtCollCtlThreshLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a tn3270eRtOkay notification, + signalling that a monitored total response time has fallen + below the specified limit. A value of zero for this object + suppresses generation of this notification. The value of + this object is used only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected. + + A tn3270eRtOkay notification is not generated again for a + tn3270eRtDataEntry until an average response time + exceeding the high threshold tn3270eRtCollCtlThreshHigh + specified for the client group has occurred for the entry." + DEFVAL { 0 } -- suppress notifications + ::= { tn3270eRtCollCtlEntry 6 } + +tn3270eRtCollCtlIdleCount OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine whether a + sample that yields an average response time exceeding the + value of tn3270eRtCollCtlThreshHigh was a statistically + valid one. If the following statement is true, then the + sample was statistically valid, and so a tn3270eRtExceeded + notification should be generated: + + AvgCountTrans * ((AvgRt/ThreshHigh - 1) ** 2) >= IdleCount + + This comparison is done only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected." + DEFVAL { 1 } + ::= { tn3270eRtCollCtlEntry 7 } + +tn3270eRtCollCtlBucketBndry1 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object defines the range of transaction + response times counted in the Tn3270eRtDataBucket1Rts + object: those less than or equal to this value." + DEFVAL { 10 } + ::= { tn3270eRtCollCtlEntry 8 } + +tn3270eRtCollCtlBucketBndry2 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry1 object, defines the range + of transaction response times counted in the + Tn3270eRtDataBucket2Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry1 object, and + less than or equal to the value of this object." + DEFVAL { 20 } + ::= { tn3270eRtCollCtlEntry 9 } + +tn3270eRtCollCtlBucketBndry3 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry2 object, defines the range of + transaction response times counted in the + Tn3270eRtDataBucket3Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry2 object, and less + than or equal to the value of this object." + DEFVAL { 50 } + ::= { tn3270eRtCollCtlEntry 10 } + +tn3270eRtCollCtlBucketBndry4 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry3 object, defines the range + of transaction response times counted in the + Tn3270eRtDataBucket4Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry3 object, and + less than or equal to the value of this object. + + The value of this object also defines the range of + transaction response times counted in the + Tn3270eRtDataBucket5Rts object: those greater than the + value of this object." + DEFVAL { 100 } + ::= { tn3270eRtCollCtlEntry 11 } + +tn3270eRtCollCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eRtCollCtlTable. An entry in this table + is deleted by setting this object to destroy(6). + Deleting an entry in this table has the side-effect + of removing all entries from the tn3270eRtDataTable + that are associated with the entry being deleted." + ::= { tn3270eRtCollCtlEntry 12 } + + +-- TN3270E Response Time Data Table + +tn3270eRtDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eRtDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The response time data table. Entries in this table are + created based on entries in the tn3270eRtCollCtlTable." + ::= { tn3270eRtObjects 2 } + +tn3270eRtDataEntry OBJECT-TYPE + SYNTAX Tn3270eRtDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created based upon the + tn3270eRtCollCtlTable. When the corresponding + tn3270eRtCollCtlType has aggregate(0) specified, a single + entry is created in this table, with a tn3270eRtDataClientAddrType + of unknown(0), a zero-length octet string value for + tn3270eRtDataClientAddress, and a tn3270eRtDataClientPort value of + 0. When aggregate(0) is not specified, a separate entry is + created for each client in the group. + + Note that the following objects defined within an entry in this + table can wrap: + tn3270eRtDataTotalRts + tn3270eRtDataTotalIpRts + tn3270eRtDataCountTrans + tn3270eRtDataCountDrs + tn3270eRtDataElapsRnTrpSq + tn3270eRtDataElapsIpRtSq + tn3270eRtDataBucket1Rts + tn3270eRtDataBucket2Rts + tn3270eRtDataBucket3Rts + tn3270eRtDataBucket4Rts + tn3270eRtDataBucket5Rts" + INDEX { + tn3270eSrvrConfIndex, -- Server's local index + tn3270eClientGroupName, -- Collection target + tn3270eRtDataClientAddrType, + tn3270eRtDataClientAddress, + tn3270eRtDataClientPort } + ::= { tn3270eRtDataTable 1 } + +Tn3270eRtDataEntry ::= SEQUENCE { + tn3270eRtDataClientAddrType IANATn3270eAddrType, + tn3270eRtDataClientAddress IANATn3270eAddress, + tn3270eRtDataClientPort Unsigned32, + tn3270eRtDataAvgRt Gauge32, + tn3270eRtDataAvgIpRt Gauge32, + tn3270eRtDataAvgCountTrans Gauge32, + tn3270eRtDataIntTimeStamp DateAndTime, + tn3270eRtDataTotalRts Counter32, + tn3270eRtDataTotalIpRts Counter32, + tn3270eRtDataCountTrans Counter32, + tn3270eRtDataCountDrs Counter32, + tn3270eRtDataElapsRndTrpSq Unsigned32, + tn3270eRtDataElapsIpRtSq Unsigned32, + tn3270eRtDataBucket1Rts Counter32, + tn3270eRtDataBucket2Rts Counter32, + tn3270eRtDataBucket3Rts Counter32, + tn3270eRtDataBucket4Rts Counter32, + tn3270eRtDataBucket5Rts Counter32, + tn3270eRtDataRtMethod INTEGER, + tn3270eRtDataDiscontinuityTime TimeStamp + } + +tn3270eRtDataClientAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of address represented by the value + of tn3270eRtDataClientAddress. The value unknown(0) is + used if aggregate data is being collected for the client + group." + ::= { tn3270eRtDataEntry 1 } + +tn3270eRtDataClientAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the IP address of the TN3270 client being + monitored. A zero-length octet string is used if + aggregate data is being collected for the client group." + ::= { tn3270eRtDataEntry 2 } + +tn3270eRtDataClientPort OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the client port number of the TN3270 client being + monitored. The value 0 is used if aggregate data is being + collected for the client group, or if the + tn3270eRtDataClientAddrType identifies an address type that + does not support ports." + ::= { tn3270eRtDataEntry 3 } + +tn3270eRtDataAvgRt OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average total response time measured over the last + collection interval." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 4 } + +tn3270eRtDataAvgIpRt OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average IP response time measured over the last + collection interval." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 5 } + +tn3270eRtDataAvgCountTrans OBJECT-TYPE + SYNTAX Gauge32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sliding transaction count used for calculating the + values of the tn3270eRtDataAvgRt and tn3270eRtDataAvgIpRt + objects. The actual transaction count is available in + the tn3270eRtDataCountTrans object. + + The initial value of this object, before any averages have + been calculated, is 0." + ::= { tn3270eRtDataEntry 6 } + +tn3270eRtDataIntTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the last interval that + tn3270eRtDataAvgRt, tn3270eRtDataAvgIpRt, and + tn3270eRtDataAvgCountTrans were calculated. + + Prior to the calculation of the first interval + averages, this object returns the value + 0x0000000000000000000000. When this value is + returned, the remaining objects in the entry have + no significance." + ::= { tn3270eRtDataEntry 7 } + +tn3270eRtDataTotalRts OBJECT-TYPE + SYNTAX Counter32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total response times collected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 8 } + +tn3270eRtDataTotalIpRts OBJECT-TYPE + SYNTAX Counter32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total IP-network response times + collected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 9 } + +tn3270eRtDataCountTrans OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total number of transactions detected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 10 } + +tn3270eRtDataCountDrs OBJECT-TYPE + SYNTAX Counter32 + UNITS "definite responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total number of definite responses + detected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 11 } + +tn3270eRtDataElapsRndTrpSq OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds squared" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the elapsed round trip time squared. The sum + of the squares is kept in order to enable calculation of + a variance." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 12 } + +tn3270eRtDataElapsIpRtSq OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds squared" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the elapsed IP round trip time squared. + The sum of the squares is kept in order to enable + calculation of a variance." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 13 } + +tn3270eRtDataBucket1Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 1. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 14 } + +tn3270eRtDataBucket2Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 2. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 15 } + +tn3270eRtDataBucket3Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 3. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 16 } + +tn3270eRtDataBucket4Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 4. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 17 } + +tn3270eRtDataBucket5Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 5. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 18 } + +tn3270eRtDataRtMethod OBJECT-TYPE + SYNTAX INTEGER { + none(0), + responses(1), + timingMark(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the method that was + used in calculating the IP network time. + + The value 'none(0) indicates that response times were not + calculated for the IP network." + ::= { tn3270eRtDataEntry 19 } + +tn3270eRtDataDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this entry's counter objects + suffered a discontinuity. This may happen if a TN3270E + server is stopped and then restarted, and local methods + are used to set up collection policy + (tn3270eRtCollCtlTable entries)." + ::= { tn3270eRtDataEntry 20 } + + +tn3270eRtSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating TN3270E-RT-MIB + applications to coordinate their use of the + tn3270eRtCollCtlTable. + When creating a new entry or altering an existing entry + in the tn3270eRtCollCtlTable, an application should make + use of tn3270eRtSpinLock to serialize application changes + or additions. + + Since this is an advisory lock, the use of this lock is + not enforced." + ::= { tn3270eRtObjects 3 } + +-- Notifications + +tn3270eRtExceeded NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataIntTimeStamp, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when the average response + time, tn3270eRtDataAvgRt, exceeds + tn3270eRtCollCtlThresholdHigh at the end of a collection + interval specified by tn3270eCollCtlSPeriod + times tn3270eCollCtlSPMult. Note that the corresponding + tn3270eCollCtlType must have traps(5) and average(3) set + for this notification to be generated. In addition, + tn3270eRtDataAvgCountTrans, tn3270eRtCollCtlThreshHigh, and + tn3270eRtDataAvgRt are algorithmically compared to + tn3270eRtCollCtlIdleCount for determination if this + notification will be suppressed." + ::= { tn3270eRtNotifications 1 } + +tn3270eRtOkay NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataIntTimeStamp, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when the average response + time, tn3270eRtDataAvgRt, falls below + tn3270eRtCollCtlThresholdLow at the end of a collection + interval specified by tn3270eCollCtlSPeriod times + tn3270eCollCtlSPMult, after a tn3270eRtExceeded + notification was generated. Note that the corresponding + tn3270eCollCtlType must have traps(5) and average(3) + set for this notification to be generated." + ::= { tn3270eRtNotifications 2 } + +tn3270eRtCollStart NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataRtMethod, -- type of collection + tn3270eResMapElementType -- type of resource + } + STATUS current + DESCRIPTION + "This notification is generated when response time data + collection is enabled for a member of a client group. + In order for this notification to occur the corresponding + tn3270eRtCollCtlType must have traps(5) selected. + + tn3270eResMapElementType contains a valid value only if + tn3270eRtDataClientAddress contains a valid address + (rather than a zero-length octet string)." + ::= { tn3270eRtNotifications 3 } + +tn3270eRtCollEnd NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataDiscontinuityTime, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataIntTimeStamp, + tn3270eRtDataTotalRts, + tn3270eRtDataTotalIpRts, + tn3270eRtDataCountTrans, + tn3270eRtDataCountDrs, + tn3270eRtDataElapsRndTrpSq, + tn3270eRtDataElapsIpRtSq, + tn3270eRtDataBucket1Rts, + tn3270eRtDataBucket2Rts, + tn3270eRtDataBucket3Rts, + tn3270eRtDataBucket4Rts, + tn3270eRtDataBucket5Rts, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when an tn3270eRtDataEntry + is deleted after being active (actual data collected), in + order to enable a management application monitoring an + tn3270eRtDataEntry to get the entry's final values. Note + that the corresponding tn3270eCollCtlType must have traps(5) + set for this notification to be generated." + ::= { tn3270eRtNotifications 4 } + +-- Conformance Statement + +tn3270eRtGroups OBJECT IDENTIFIER ::= { tn3270eRtConformance 1 } +tn3270eRtCompliances OBJECT IDENTIFIER ::= { tn3270eRtConformance 2 } + +-- Compliance statements + +tn3270eRtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + TN327E-RT-MIB." + MODULE -- this module + MANDATORY-GROUPS { tn3270eRtGroup, tn3270eRtNotGroup } + + OBJECT tn3270eRtCollCtlType + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation to + this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlSPeriod + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user to change + the default value of this object, and is allowed to + use a different default." + + OBJECT tn3270eRtCollCtlSPMult + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlThreshHigh + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlThreshLow + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlIdleCount + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry1 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry2 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry3 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry4 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlRowStatus + 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)." + + ::= {tn3270eRtCompliances 1 } + +-- Group definitions + +tn3270eRtGroup OBJECT-GROUP + OBJECTS { + tn3270eRtCollCtlType, + tn3270eRtCollCtlSPeriod, + tn3270eRtCollCtlSPMult, + tn3270eRtCollCtlThreshHigh, + tn3270eRtCollCtlThreshLow, + tn3270eRtCollCtlIdleCount, + tn3270eRtCollCtlBucketBndry1, + tn3270eRtCollCtlBucketBndry2, + tn3270eRtCollCtlBucketBndry3, + tn3270eRtCollCtlBucketBndry4, + tn3270eRtCollCtlRowStatus, + tn3270eRtDataDiscontinuityTime, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataIntTimeStamp, + tn3270eRtDataTotalRts, + tn3270eRtDataTotalIpRts, + tn3270eRtDataCountTrans, + tn3270eRtDataCountDrs, + tn3270eRtDataElapsRndTrpSq, + tn3270eRtDataElapsIpRtSq, + tn3270eRtDataBucket1Rts, + tn3270eRtDataBucket2Rts, + tn3270eRtDataBucket3Rts, + tn3270eRtDataBucket4Rts, + tn3270eRtDataBucket5Rts, + tn3270eRtDataRtMethod, + tn3270eRtSpinLock } + STATUS current + DESCRIPTION + "This group is mandatory for all implementations that + support the TN3270E-RT-MIB. " + ::= { tn3270eRtGroups 1 } + +tn3270eRtNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + tn3270eRtExceeded, + tn3270eRtOkay, + tn3270eRtCollStart, + tn3270eRtCollEnd + } + STATUS current + DESCRIPTION + "The notifications that must be supported when the + TN3270E-RT-MIB is implemented. " + ::= { tn3270eRtGroups 2 } + +END diff --git a/mibs/ietf/TOKEN-RING-RMON-MIB b/mibs/ietf/TOKEN-RING-RMON-MIB new file mode 100644 index 0000000..75a8692 --- /dev/null +++ b/mibs/ietf/TOKEN-RING-RMON-MIB @@ -0,0 +1,2301 @@ +TOKEN-RING-RMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, TimeTicks FROM RFC1155-SMI + OBJECT-TYPE FROM RFC-1212 + OwnerString, EntryStatus, -- Textual Conventions + rmon, statistics, history + FROM RFC1271-MIB; + + + -- 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 802.x protocols) requires + -- MAC addresses to be transmitted most significant bit + -- first. + + TimeInterval ::= INTEGER + -- A period of time, measured in units of 0.01 seconds. + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [2]. + +-- Token Ring Remote Network Monitoring MIB + + tokenRing OBJECT IDENTIFIER ::= { rmon 10 } + + +-- The Token Ring Mac-Layer Statistics Group +-- +-- Implementation of this group is optional + +tokenRingMLStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Mac-Layer Token Ring statistics + entries." + ::= { statistics 2 } + +tokenRingMLStatsEntry OBJECT-TYPE + SYNTAX TokenRingMLStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of Mac-Layer statistics kept for a + particular Token Ring interface." + INDEX { tokenRingMLStatsIndex } + ::= { tokenRingMLStatsTable 1 } + +-- As an example, an instance of the +-- tokenRingMLStatsMacOctets object +-- might be named tokenRingMLStatsMacOctets.1 + +TokenRingMLStatsEntry ::= SEQUENCE { + tokenRingMLStatsIndex INTEGER, + tokenRingMLStatsDataSource OBJECT IDENTIFIER, + tokenRingMLStatsDropEvents Counter, + tokenRingMLStatsMacOctets Counter, + tokenRingMLStatsMacPkts Counter, + tokenRingMLStatsRingPurgeEvents Counter, + tokenRingMLStatsRingPurgePkts Counter, + tokenRingMLStatsBeaconEvents Counter, + tokenRingMLStatsBeaconTime TimeInterval, + tokenRingMLStatsBeaconPkts Counter, + tokenRingMLStatsClaimTokenEvents Counter, + tokenRingMLStatsClaimTokenPkts Counter, + tokenRingMLStatsNAUNChanges Counter, + tokenRingMLStatsLineErrors Counter, + tokenRingMLStatsInternalErrors Counter, + tokenRingMLStatsBurstErrors Counter, + tokenRingMLStatsACErrors Counter, + tokenRingMLStatsAbortErrors Counter, + tokenRingMLStatsLostFrameErrors Counter, + tokenRingMLStatsCongestionErrors Counter, + tokenRingMLStatsFrameCopiedErrors Counter, + tokenRingMLStatsFrequencyErrors Counter, + tokenRingMLStatsTokenErrors Counter, + tokenRingMLStatsSoftErrorReports Counter, + tokenRingMLStatsRingPollEvents Counter, + tokenRingMLStatsOwner OwnerString, + tokenRingMLStatsStatus EntryStatus +} + +tokenRingMLStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + tokenRingMLStats entry." + ::= { tokenRingMLStatsEntry 1 } + +tokenRingMLStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data + that this tokenRingMLStats entry is configured to + analyze. This source can be any tokenRing + interface on this device. In order to identify a + particular interface, this object shall identify + the instance of the ifIndex object, defined in + MIB-II [3], for the desired interface. For + example, if an entry were to receive data from + interface #1, this object would be set to + ifIndex.1. + + The statistics in this group reflect all error + reports on the local network segment attached to + the identified interface. + + This object may not be modified if the associated + tokenRingMLStatsStatus object is equal to + valid(1)." + ::= { tokenRingMLStatsEntry 2 } + +tokenRingMLStatsDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe due to lack of resources. + Note that this number is not necessarily the + number of packets dropped; it is just the number + of times this condition has been detected. This + value is the same as the corresponding + tokenRingPStatsDropEvents." + ::= { tokenRingMLStatsEntry 3 } + +tokenRingMLStatsMacOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in MAC packets + (excluding those that were not good frames) + received on the network (excluding framing bits + but including FCS octets)." + ::= { tokenRingMLStatsEntry 4 } + +tokenRingMLStatsMacPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC packets (excluding + packets that were not good frames) received." + ::= { tokenRingMLStatsEntry 5 } + +tokenRingMLStatsRingPurgeEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the ring purge state from normal ring state. The + ring purge state that comes in response to the + claim token or beacon state is not counted." + ::= { tokenRingMLStatsEntry 6 } + +tokenRingMLStatsRingPurgePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring purge MAC packets + detected by probe." + ::= { tokenRingMLStatsEntry 7 } + +tokenRingMLStatsBeaconEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters a + beaconing state (beaconFrameStreamingState, + beaconBitStreamingState, + beaconSetRecoveryModeState, or + beaconRingSignalLossState) from a non-beaconing + state. Note that a change of the source address + of the beacon packet does not constitute a new + beacon event." + ::= { tokenRingMLStatsEntry 8 } + +tokenRingMLStatsBeaconTime OBJECT-TYPE + SYNTAX TimeInterval + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total amount of time that the ring has been + in the beaconing state." + ::= { tokenRingMLStatsEntry 9 } + +tokenRingMLStatsBeaconPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon MAC packets detected + by the probe." + ::= { tokenRingMLStatsEntry 10 } + +tokenRingMLStatsClaimTokenEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the claim token state from normal ring state or + ring purge state. The claim token state that + comes in response to a beacon state is not + counted." + ::= { tokenRingMLStatsEntry 11 } + +tokenRingMLStatsClaimTokenPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of claim token MAC packets + detected by the probe." + ::= { tokenRingMLStatsEntry 12 } + +tokenRingMLStatsNAUNChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of NAUN changes detected by the + probe." + ::= { tokenRingMLStatsEntry 13 } + +tokenRingMLStatsLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 14 } + +tokenRingMLStatsInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 15 } + +tokenRingMLStatsBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 16 } + +tokenRingMLStatsACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 17 } + +tokenRingMLStatsAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 18 } + +tokenRingMLStatsLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of lost frame errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 19 } + +tokenRingMLStatsCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 20 } + +tokenRingMLStatsFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + in error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 21 } + +tokenRingMLStatsFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 22 } + +tokenRingMLStatsTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 23 } + +tokenRingMLStatsSoftErrorReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of soft error report frames + detected by the probe." + ::= { tokenRingMLStatsEntry 24 } + +tokenRingMLStatsRingPollEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring poll events detected by + the probe (i.e. the number of ring polls initiated + by the active monitor that were detected)." + ::= { tokenRingMLStatsEntry 25 } + +tokenRingMLStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { tokenRingMLStatsEntry 26 } + +tokenRingMLStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this tokenRingMLStats entry." + ::= { tokenRingMLStatsEntry 27 } + +-- The Token Ring Promiscuous Statistics Group +-- +-- Implementation of this group is optional + +tokenRingPStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of promiscuous Token Ring statistics + entries." + ::= { statistics 3 } + +tokenRingPStatsEntry OBJECT-TYPE + SYNTAX TokenRingPStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of promiscuous statistics kept for + non-MAC packets on a particular Token Ring + interface." + INDEX { tokenRingPStatsIndex } + ::= { tokenRingPStatsTable 1 } + +-- As an example, an instance of the +-- tokenRingPStatsDataOctets object +-- might be named tokenRingPStatsDataOctets.1 + +TokenRingPStatsEntry ::= SEQUENCE { + tokenRingPStatsIndex INTEGER, + tokenRingPStatsDataSource OBJECT IDENTIFIER, + tokenRingPStatsDropEvents Counter, + tokenRingPStatsDataOctets Counter, + tokenRingPStatsDataPkts Counter, + tokenRingPStatsDataBroadcastPkts Counter, + tokenRingPStatsDataMulticastPkts Counter, + tokenRingPStatsDataPkts18to63Octets Counter, + tokenRingPStatsDataPkts64to127Octets Counter, + tokenRingPStatsDataPkts128to255Octets Counter, + tokenRingPStatsDataPkts256to511Octets Counter, + tokenRingPStatsDataPkts512to1023Octets Counter, + tokenRingPStatsDataPkts1024to2047Octets Counter, + tokenRingPStatsDataPkts2048to4095Octets Counter, + tokenRingPStatsDataPkts4096to8191Octets Counter, + tokenRingPStatsDataPkts8192to18000Octets Counter, + tokenRingPStatsDataPktsGreaterThan18000Octets Counter, + tokenRingPStatsOwner OwnerString, + tokenRingPStatsStatus EntryStatus +} + +tokenRingPStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + tokenRingPStats entry." + ::= { tokenRingPStatsEntry 1 } + +tokenRingPStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data + that this tokenRingPStats entry is configured to + analyze. This source can be any tokenRing + interface on this device. In order to identify a + particular interface, this object shall identify + the instance of the ifIndex object, defined in + MIB-II [3], for the desired interface. For + example, if an entry were to receive data from + interface #1, this object would be set to + ifIndex.1. + + The statistics in this group reflect all non-MAC + packets on the local network segment attached to + the identified interface. + + This object may not be modified if the associated + tokenRingPStatsStatus object is equal to + valid(1)." + ::= { tokenRingPStatsEntry 2 } + +tokenRingPStatsDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe due to lack of resources. + Note that this number is not necessarily the + number of packets dropped; it is just the number + of times this condition has been detected. This + value is the same as the corresponding + tokenRingMLStatsDropEvents" + ::= { tokenRingPStatsEntry 3 } + +tokenRingPStatsDataOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in good frames + received on the network (excluding framing bits + but including FCS octets) in non-MAC packets." + ::= { tokenRingPStatsEntry 4 } + +tokenRingPStatsDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of non-MAC packets in good + frames. received." + ::= { tokenRingPStatsEntry 5 } + +tokenRingPStatsDataBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were directed to an LLC broadcast address + (0xFFFFFFFFFFFF or 0xC000FFFFFFFF)." + ::= { tokenRingPStatsEntry 6 } + +tokenRingPStatsDataMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were directed to a local or global multicast + or functional address. Note that this number does + not include packets directed to the broadcast + address." + ::= { tokenRingPStatsEntry 7 } + +tokenRingPStatsDataPkts18to63Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 18 and 63 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 8 } + +tokenRingPStatsDataPkts64to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 64 and 127 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 9 } + +tokenRingPStatsDataPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 128 and 255 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 10 } + +tokenRingPStatsDataPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 256 and 511 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 11 } + +tokenRingPStatsDataPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 512 and 1023 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 12 } + +tokenRingPStatsDataPkts1024to2047Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 1024 and 2047 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 13 } + +tokenRingPStatsDataPkts2048to4095Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 2048 and 4095 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 14 } + +tokenRingPStatsDataPkts4096to8191Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 4096 and 8191 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 15 } + +tokenRingPStatsDataPkts8192to18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 8192 and 18000 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 16 } + +tokenRingPStatsDataPktsGreaterThan18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were greater than 18000 octets in length, + excluding framing bits but including FCS octets." + ::= { tokenRingPStatsEntry 17 } + +tokenRingPStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { tokenRingPStatsEntry 18 } + +tokenRingPStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this tokenRingPStats entry." + ::= { tokenRingPStatsEntry 19 } + + +-- The Token Ring History Groups + +-- When an entry in the historyControlTable is created that +-- identifies a token ring interface as its +-- historyControlDataSource, the probe shall create +-- corresponding entries in the tokenRingMLHistoryTable +-- and/or the tokenRingPHistoryTable, depending on which +-- groups it supports. + + +-- The Token Ring Mac-Layer History Group +-- +-- Implementation of this group is optional. +-- Implementation of this group requires implementation of +-- the historyControl group from RFC1271. + +tokenRingMLHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Mac-Layer Token Ring statistics + entries." + ::= { history 3 } + +tokenRingMLHistoryEntry OBJECT-TYPE + SYNTAX TokenRingMLHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of Mac-Layer statistics kept for a + particular Token Ring interface." + INDEX { tokenRingMLHistoryIndex, + tokenRingMLHistorySampleIndex } + ::= { tokenRingMLHistoryTable 1 } + +-- As an example, an instance of the +-- tokenRingMLHistoryMacOctets +-- object might be named tokenRingMLHistoryMacOctets.1.27 + +TokenRingMLHistoryEntry ::= SEQUENCE { + tokenRingMLHistoryIndex INTEGER, + tokenRingMLHistorySampleIndex INTEGER, + tokenRingMLHistoryIntervalStart TimeTicks, + tokenRingMLHistoryDropEvents Counter, + tokenRingMLHistoryMacOctets Counter, + tokenRingMLHistoryMacPkts Counter, + tokenRingMLHistoryRingPurgeEvents Counter, + tokenRingMLHistoryRingPurgePkts Counter, + tokenRingMLHistoryBeaconEvents Counter, + tokenRingMLHistoryBeaconTime TimeInterval, + tokenRingMLHistoryBeaconPkts Counter, + tokenRingMLHistoryClaimTokenEvents Counter, + tokenRingMLHistoryClaimTokenPkts Counter, + tokenRingMLHistoryNAUNChanges Counter, + tokenRingMLHistoryLineErrors Counter, + tokenRingMLHistoryInternalErrors Counter, + tokenRingMLHistoryBurstErrors Counter, + tokenRingMLHistoryACErrors Counter, + tokenRingMLHistoryAbortErrors Counter, + tokenRingMLHistoryLostFrameErrors Counter, + tokenRingMLHistoryCongestionErrors Counter, + tokenRingMLHistoryFrameCopiedErrors Counter, + tokenRingMLHistoryFrequencyErrors Counter, + tokenRingMLHistoryTokenErrors Counter, + tokenRingMLHistorySoftErrorReports Counter, + tokenRingMLHistoryRingPollEvents Counter, + tokenRingMLHistoryActiveStations INTEGER +} + +tokenRingMLHistoryIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified by the + same value of historyControlIndex." + ::= { tokenRingMLHistoryEntry 1 } + +tokenRingMLHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular + Mac-Layer sample this entry represents among all + Mac-Layer samples associated with the same + historyControlEntry. This index starts at 1 and + increases by one as each new sample is taken." + ::= { tokenRingMLHistoryEntry 2 } + +tokenRingMLHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the + interval over which this sample was measured. If + the probe keeps track of the time of day, it + should start the first sample of the history at a + time such that when the next hour of the day + begins, a sample is started at that instant. Note + that following this rule may require the probe to + delay collecting the first sample of the history, + as each sample must be of the same interval. Also + note that the sample which is currently being + collected is not accessible in this table until + the end of its interval." + ::= { tokenRingMLHistoryEntry 3 } + +tokenRingMLHistoryDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe due to lack of resources + during this sampling interval. Note that this + number is not necessarily the number of packets + dropped, it is just the number of times this + condition has been detected." + ::= { tokenRingMLHistoryEntry 4 } + +tokenRingMLHistoryMacOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in MAC packets + (excluding those that were not good frames) + received on the network during this sampling + interval (excluding framing bits but including FCS + octets)." + ::= { tokenRingMLHistoryEntry 5 } + +tokenRingMLHistoryMacPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC packets (excluding those + that were not good frames) received during this + sampling interval." + ::= { tokenRingMLHistoryEntry 6 } + +tokenRingMLHistoryRingPurgeEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring entered + the ring purge state from normal ring state during + this sampling interval. The ring purge state that + comes from the claim token or beacon state is not + counted." + ::= { tokenRingMLHistoryEntry 7 } + +tokenRingMLHistoryRingPurgePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Ring Purge MAC packets + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 8 } + +tokenRingMLHistoryBeaconEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters a + beaconing state (beaconFrameStreamingState, + beaconBitStreamingState, + beaconSetRecoveryModeState, or + beaconRingSignalLossState) during this sampling + interval. Note that a change of the source + address of the beacon packet does not constitute a + new beacon event." + ::= { tokenRingMLHistoryEntry 9 } + +tokenRingMLHistoryBeaconTime OBJECT-TYPE + SYNTAX TimeInterval + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The amount of time that the ring has been in the + beaconing state during this sampling interval." + ::= { tokenRingMLHistoryEntry 10 } + +tokenRingMLHistoryBeaconPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon MAC packets detected + by the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 11 } + +tokenRingMLHistoryClaimTokenEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the claim token state from normal ring state or + ring purge state during this sampling interval. + The claim token state that comes from the beacon + state is not counted." + ::= { tokenRingMLHistoryEntry 12 } + +tokenRingMLHistoryClaimTokenPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of claim token MAC packets + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 13 } + +tokenRingMLHistoryNAUNChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of NAUN changes detected by the + probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 14 } + +tokenRingMLHistoryLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets detected by the probe during + this sampling interval." + ::= { tokenRingMLHistoryEntry 15 } + +tokenRingMLHistoryInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 16 } + +tokenRingMLHistoryBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 17 } + +tokenRingMLHistoryACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 18 } + +tokenRingMLHistoryAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 19 } + +tokenRingMLHistoryLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of lost frame errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 20 } + +tokenRingMLHistoryCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 21 } + +tokenRingMLHistoryFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + in error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 22 } + +tokenRingMLHistoryFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 23 } + +tokenRingMLHistoryTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 24 } + +tokenRingMLHistorySoftErrorReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of soft error report frames + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 25 } + +tokenRingMLHistoryRingPollEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring poll events detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 26 } + +tokenRingMLHistoryActiveStations OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of active stations on the ring + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 27} + + +-- The Token Ring Promiscuous History Group +-- +-- Implementation of this group is optional. +-- Implementation of this group requires the implementation +-- of the historyControl group from RFC1271. + +tokenRingPHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of promiscuous Token Ring statistics + entries." + ::= { history 4 } + +tokenRingPHistoryEntry OBJECT-TYPE + SYNTAX TokenRingPHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of promiscuous statistics kept for a + particular Token Ring interface." + INDEX { tokenRingPHistoryIndex, + tokenRingPHistorySampleIndex } + ::= { tokenRingPHistoryTable 1 } + +-- As an example, an instance of the +-- tokenRingPHistoryDataPkts object +-- might be named tokenRingPHistoryDataPkts.1.27 + +TokenRingPHistoryEntry ::= SEQUENCE { + tokenRingPHistoryIndex INTEGER, + tokenRingPHistorySampleIndex INTEGER, + tokenRingPHistoryIntervalStart TimeTicks, + tokenRingPHistoryDropEvents Counter, + tokenRingPHistoryDataOctets Counter, + tokenRingPHistoryDataPkts Counter, + tokenRingPHistoryDataBroadcastPkts Counter, + tokenRingPHistoryDataMulticastPkts Counter, + tokenRingPHistoryDataPkts18to63Octets Counter, + tokenRingPHistoryDataPkts64to127Octets Counter, + tokenRingPHistoryDataPkts128to255Octets Counter, + tokenRingPHistoryDataPkts256to511Octets Counter, + tokenRingPHistoryDataPkts512to1023Octets Counter, + tokenRingPHistoryDataPkts1024to2047Octets Counter, + tokenRingPHistoryDataPkts2048to4095Octets Counter, + tokenRingPHistoryDataPkts4096to8191Octets Counter, + tokenRingPHistoryDataPkts8192to18000Octets Counter, + tokenRingPHistoryDataPktsGreaterThan18000Octets Counter +} + +tokenRingPHistoryIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified by the + same value of historyControlIndex." + ::= { tokenRingPHistoryEntry 1 } + +tokenRingPHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular + sample this entry represents among all samples + associated with the same historyControlEntry. + This index starts at 1 and increases by one as + each new sample is taken." + ::= { tokenRingPHistoryEntry 2 } + +tokenRingPHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the + interval over which this sample was measured. If + the probe keeps track of the time of day, it + should start the first sample of the history at a + time such that when the next hour of the day + begins, a sample is started at that instant. Note + that following this rule may require the probe to + delay collecting the first sample of the history, + as each sample must be of the same interval. Also + note that the sample which is currently being + collected is not accessible in this table until + the end of its interval." + ::= { tokenRingPHistoryEntry 3 } + +tokenRingPHistoryDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe due to lack of resources + during this sampling interval. Note that this + number is not necessarily the number of packets + dropped, it is just the number of times this + condition has been detected." + ::= { tokenRingPHistoryEntry 4 } + +tokenRingPHistoryDataOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in good frames + received on the network (excluding framing bits + but including FCS octets) in non-MAC packets + during this sampling interval." + ::= { tokenRingPHistoryEntry 5 } + +tokenRingPHistoryDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval." + ::= { tokenRingPHistoryEntry 6 } + +tokenRingPHistoryDataBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were directed + to an LLC broadcast address (0xFFFFFFFFFFFF or + 0xC000FFFFFFFF)." + ::= { tokenRingPHistoryEntry 7 } + +tokenRingPHistoryDataMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were directed + to a local or global multicast or functional + address. Note that this number does not include + packets directed to the broadcast address." + ::= { tokenRingPHistoryEntry 8 } + +tokenRingPHistoryDataPkts18to63Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between 18 + and 63 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 9 } + +tokenRingPHistoryDataPkts64to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between 64 + and 127 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 10 } + +tokenRingPHistoryDataPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 128 and 255 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 11 } + +tokenRingPHistoryDataPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 256 and 511 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 12 } + +tokenRingPHistoryDataPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 512 and 1023 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 13 } + +tokenRingPHistoryDataPkts1024to2047Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 1024 and 2047 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 14 } + +tokenRingPHistoryDataPkts2048to4095Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 2048 and 4095 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 15 } + +tokenRingPHistoryDataPkts4096to8191Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 4096 and 8191 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 16 } + +tokenRingPHistoryDataPkts8192to18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 8192 and 18000 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 17 } + +tokenRingPHistoryDataPktsGreaterThan18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were greater + than 18000 octets in length, excluding framing + bits but including FCS octets." + ::= { tokenRingPHistoryEntry 18 } + + +-- The Token Ring Ring Station Group +-- +-- Implementation of this group is optional +-- +-- Although the ringStationTable stores entries only for +-- those stations physically attached to the local ring and +-- the number of stations attached to a ring is limited, a +-- probe may still need to free resources when resources +-- grow tight. In such a situation, it is suggested that +-- the probe free only inactive stations, and to +-- first free the stations that have been inactive for the +-- longest time. + +ringStationControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ringStation table control entries." + ::= { tokenRing 1 } + +ringStationControlEntry OBJECT-TYPE + SYNTAX RingStationControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up the discovery of + stations on a particular interface and the + collection of statistics about these stations." + INDEX { ringStationControlIfIndex } + ::= { ringStationControlTable 1 } + +-- As an example, an instance of the +-- ringStationControlIfIndex object +-- might be named ringStationControlIfIndex.1 + +RingStationControlEntry ::= SEQUENCE { + ringStationControlIfIndex INTEGER, + ringStationControlTableSize INTEGER, + ringStationControlActiveStations INTEGER, + ringStationControlRingState INTEGER, + ringStationControlBeaconSender MacAddress, + ringStationControlBeaconNAUN MacAddress, + ringStationControlActiveMonitor MacAddress, + ringStationControlOrderChanges Counter, + ringStationControlOwner OwnerString, + ringStationControlStatus EntryStatus +} + +ringStationControlIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + from which ringStation data is collected. The + interface identified by a particular value of this + object is the same interface as identified by the + same value of the ifIndex object, defined in MIB- + II [3]." + ::= { ringStationControlEntry 1 } + +ringStationControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ringStationEntries in the + ringStationTable associated with this + ringStationControlEntry." + ::= { ringStationControlEntry 2 } + +ringStationControlActiveStations OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active ringStationEntries in the + ringStationTable associated with this + ringStationControlEntry." + ::= { ringStationControlEntry 3 } + +ringStationControlRingState OBJECT-TYPE + SYNTAX INTEGER { + normalOperation(1), + ringPurgeState(2), + claimTokenState(3), + beaconFrameStreamingState(4), + beaconBitStreamingState(5), + beaconRingSignalLossState(6), + beaconSetRecoveryModeState(7) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current status of this ring." + ::= { ringStationControlEntry 4 } + +ringStationControlBeaconSender OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the sender of the last beacon + frame received by the probe on this ring. If no + beacon frames have been received, this object + shall be equal to six octets of zero." + ::= { ringStationControlEntry 5 } + +ringStationControlBeaconNAUN OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the NAUN in the last beacon frame + received by the probe on this ring. If no beacon + frames have been received, this object shall be + equal to six octets of zero." + ::= { ringStationControlEntry 6 } + +ringStationControlActiveMonitor OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the Active Monitor on this + segment. If this address is unknown, this object + shall be equal to six octets of zero." + ::= { ringStationControlEntry 7 } + +ringStationControlOrderChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of add and delete events in the + ringStationOrderTable optionally associated with + this ringStationControlEntry." + ::= { ringStationControlEntry 8 } + +ringStationControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { ringStationControlEntry 9 } + +ringStationControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this ringStationControl entry. + + If this object is not equal to valid(1), all + associated entries in the ringStationTable shall + be deleted by the agent." + ::= { ringStationControlEntry 10 } + +ringStationTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station entries. An entry will + exist for each station that is now or has + previously been detected as physically present on + this ring." + ::= { tokenRing 2 } + +ringStationEntry OBJECT-TYPE + SYNTAX RingStationEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + station that has been discovered on a ring + monitored by this device." + INDEX { ringStationIfIndex, ringStationMacAddress } + ::= { ringStationTable 1 } + +-- As an example, an instance of the +-- ringStationStationStatus object might be named +-- ringStationStationStatus.1.16.0.90.0.64.131 + +RingStationEntry ::= SEQUENCE { + ringStationIfIndex INTEGER, + ringStationMacAddress MacAddress, + ringStationLastNAUN MacAddress, + ringStationStationStatus INTEGER, + ringStationLastEnterTime TimeTicks, + ringStationLastExitTime TimeTicks, + ringStationDuplicateAddresses Counter, + ringStationInLineErrors Counter, + ringStationOutLineErrors Counter, + ringStationInternalErrors Counter, + ringStationInBurstErrors Counter, + ringStationOutBurstErrors Counter, + ringStationACErrors Counter, + ringStationAbortErrors Counter, + ringStationLostFrameErrors Counter, + ringStationCongestionErrors Counter, + ringStationFrameCopiedErrors Counter, + ringStationFrequencyErrors Counter, + ringStationTokenErrors Counter, + ringStationInBeaconErrors Counter, + ringStationOutBeaconErrors Counter, + ringStationInsertions Counter +} + +ringStationIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationEntry 1 } + +ringStationMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationEntry 2 } + +ringStationLastNAUN OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of last known NAUN of this + station." + ::= { ringStationEntry 3 } + +ringStationStationStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), -- actively participating in ring poll. + inactive(2), -- Not participating in ring poll + forcedRemoval(3) -- Forced off ring by network + -- management. + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The status of this station on the ring." + ::= { ringStationEntry 4 } + +ringStationLastEnterTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this station + last entered the ring. If the time is unknown, + this value shall be zero." + ::= { ringStationEntry 5 } + +ringStationLastExitTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the probe + detected that this station last exited the ring. + If the time is unknown, this value shall be zero." + ::= { ringStationEntry 6 } + +ringStationDuplicateAddresses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this station experienced a + duplicate address error." + ::= { ringStationEntry 7 } + +ringStationInLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported by this + station in error reporting packets detected by the + probe." + ::= { ringStationEntry 8 } + +ringStationOutLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets sent by the nearest active + downstream neighbor of this station and detected + by the probe." + ::= { ringStationEntry 9 } + +ringStationInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported by this station in error reporting + packets detected by the probe." + ::= { ringStationEntry 10 } + +ringStationInBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported by this + station in error reporting packets detected by the + probe." + ::= { ringStationEntry 11 } + +ringStationOutBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets sent by the nearest active + downstream neighbor of this station and detected + by the probe." + ::= { ringStationEntry 12 } + +ringStationACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets sent by the + nearest active downstream neighbor of this station + and detected by the probe." + ::= { ringStationEntry 13 } + +ringStationAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 14 } + +ringStationLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of lost frame errors reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 15 } + +ringStationCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported by this station in error reporting + packets detected by the probe." + ::= { ringStationEntry 16 } + +ringStationFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + by this station in error reporting packets + detected by the probe." + ::= { ringStationEntry 17 } + +ringStationFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 18 } + +ringStationTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported by this + station in error reporting frames detected by the + probe." + ::= { ringStationEntry 19 } + +ringStationInBeaconErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon frames sent by this + station and detected by the probe." + ::= { ringStationEntry 20 } + +ringStationOutBeaconErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon frames detected by the + probe that name this station as the NAUN." + ::= { ringStationEntry 21 } + +ringStationInsertions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the probe detected this + station inserting onto the ring." + ::= { ringStationEntry 22 } + + +-- The Token Ring Ring Station Order Group +-- +-- Implementation of this group is optional +-- + +-- The ringStationOrderTable + +ringStationOrderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationOrderEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station entries for stations in + the ring poll, ordered by their ring-order." + ::= { tokenRing 3 } + +ringStationOrderEntry OBJECT-TYPE + SYNTAX RingStationOrderEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + station that is active on a ring monitored by this + device. This table will contain information for + every interface that has a + ringStationControlStatus equal to valid." + INDEX { ringStationOrderIfIndex, + ringStationOrderOrderIndex } + ::= { ringStationOrderTable 1 } + +-- As an example, an instance of the +-- ringStationOrderMacAddress object might be named +-- ringStationOrderMacAddress.1.14 + +RingStationOrderEntry ::= SEQUENCE { + ringStationOrderIfIndex INTEGER, + ringStationOrderOrderIndex INTEGER, + ringStationOrderMacAddress MacAddress +} + +ringStationOrderIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationOrderEntry 1 } + +ringStationOrderOrderIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This index denotes the location of this station + with respect to other stations on the ring. This + index is one more than the number of hops + downstream that this station is from the rmon + probe. The rmon probe itself gets the value one." + ::= { ringStationOrderEntry 2 } + +ringStationOrderMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationOrderEntry 3 } + + +-- The Token Ring Ring Station Config Group +-- +-- Implementation of this group is optional. +-- The ring station config group manages token ring nodes +-- through active means. + +ringStationConfigControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationConfigControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station configuration control + entries." + ::= { tokenRing 4 } + +ringStationConfigControlEntry OBJECT-TYPE + SYNTAX RingStationConfigControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry controls active management of stations + by the probe. One entry exists in this table for + each active station in the ringStationTable." + INDEX { ringStationConfigControlIfIndex, + ringStationConfigControlMacAddress } + ::= { ringStationConfigControlTable 1 } + +-- As an example, an instance of the +-- ringStationConfigControlRemove object might be named +-- ringStationConfigControlRemove.1.16.0.90.0.64.131 + +RingStationConfigControlEntry ::= SEQUENCE { + ringStationConfigControlIfIndex INTEGER, + ringStationConfigControlMacAddress MacAddress, + ringStationConfigControlRemove INTEGER, + ringStationConfigControlUpdateStats INTEGER +} + +ringStationConfigControlIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationConfigControlEntry 1 } + +ringStationConfigControlMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationConfigControlEntry 2 } + +ringStationConfigControlRemove OBJECT-TYPE + SYNTAX INTEGER { + stable(1), + removing(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to `removing(2)' causes a + Remove Station MAC frame to be sent. The agent + will set this object to `stable(1)' after + processing the request." + ::= { ringStationConfigControlEntry 3 } + +ringStationConfigControlUpdateStats OBJECT-TYPE + SYNTAX INTEGER { + stable(1), + updating(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to `updating(2)' causes the + configuration information associate with this + entry to be updated. The agent will set this + object to `stable(1)' after processing the + request." + ::= { ringStationConfigControlEntry 4 } + +-- The ringStationConfig Table +-- +-- Entries exist in this table after an active +-- configuration query has completed successfully for +-- a station. This query is initiated by the associated +-- ringStationConfigControlUpdateStats variable. + +ringStationConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of configuration entries for stations on a + ring monitored by this probe." + ::= { tokenRing 5 } + +ringStationConfigEntry OBJECT-TYPE + SYNTAX RingStationConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + station that has been discovered on a ring + monitored by this probe." + INDEX { ringStationConfigIfIndex, + ringStationConfigMacAddress } + ::= { ringStationConfigTable 1 } + +-- As an example, an instance of the +-- ringStationConfigLocation object might be named +-- ringStationConfigLocation.1.16.0.90.0.64.131 + +RingStationConfigEntry ::= SEQUENCE { + ringStationConfigIfIndex INTEGER, + ringStationConfigMacAddress MacAddress, + ringStationConfigUpdateTime TimeTicks, + ringStationConfigLocation OCTET STRING, + ringStationConfigMicrocode OCTET STRING, + ringStationConfigGroupAddress OCTET STRING, + ringStationConfigFunctionalAddress OCTET STRING +} + +ringStationConfigIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationConfigEntry 1 } + +ringStationConfigMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationConfigEntry 2 } + +ringStationConfigUpdateTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this + configuration information was last updated + (completely)." + ::= { ringStationConfigEntry 3 } + +ringStationConfigLocation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The assigned physical location of this station." + ::= { ringStationConfigEntry 4 } + +ringStationConfigMicrocode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(10)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The microcode EC level of this station." + ::= { ringStationConfigEntry 5 } + +ringStationConfigGroupAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The low-order 4 octets of the group address + recognized by this station." + ::= { ringStationConfigEntry 6 } + +ringStationConfigFunctionalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "the functional addresses recognized by this + station." + ::= { ringStationConfigEntry 7 } + + +-- The Token Ring Source Routing group +-- +-- Implementation of this group is optional. +-- The data in this group is collected from the source +-- routing information potentially present in any token ring +-- packet. This information will be valid only in a pure +-- source route bridging environment. In a transparent +-- bridging or a mixed bridging environment, this +-- information may not be accurate. + +sourceRoutingStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of source routing statistics entries." + ::= { tokenRing 6 } + +sourceRoutingStatsEntry OBJECT-TYPE + SYNTAX SourceRoutingStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of source routing statistics kept + for a particular Token Ring interface." + INDEX { sourceRoutingStatsIfIndex } + ::= { sourceRoutingStatsTable 1 } + +-- As an example, an instance of the +-- sourceRoutingStatsInFrames object might be named +-- sourceRoutingStatsInFrames.1 + +SourceRoutingStatsEntry ::= SEQUENCE { + sourceRoutingStatsIfIndex INTEGER, + sourceRoutingStatsRingNumber INTEGER, + sourceRoutingStatsInFrames Counter, + + -- in to our net + + sourceRoutingStatsOutFrames Counter, + -- out from our net + + sourceRoutingStatsThroughFrames Counter, + -- through our net + + sourceRoutingStatsAllRoutesBroadcastFrames Counter, + sourceRoutingStatsSingleRouteBroadcastFrames Counter, + sourceRoutingStatsInOctets Counter, + sourceRoutingStatsOutOctets Counter, + sourceRoutingStatsThroughOctets Counter, + sourceRoutingStatsAllRoutesBroadcastOctets Counter, + sourceRoutingStatsSingleRoutesBroadcastOctets Counter, + sourceRoutingStatsLocalLLCFrames Counter, + sourceRoutingStats1HopFrames Counter, + sourceRoutingStats2HopsFrames Counter, + sourceRoutingStats3HopsFrames Counter, + sourceRoutingStats4HopsFrames Counter, + sourceRoutingStats5HopsFrames Counter, + sourceRoutingStats6HopsFrames Counter, + sourceRoutingStats7HopsFrames Counter, + sourceRoutingStats8HopsFrames Counter, + sourceRoutingStatsMoreThan8HopsFrames Counter, + sourceRoutingStatsOwner OwnerString, + sourceRoutingStatsStatus EntryStatus +} + +sourceRoutingStatsIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which source routing statistics will be + detected. The interface identified by a + particular value of this object is the same + interface as identified by the same value of the + ifIndex object, defined in MIB-II [3]." + ::= { sourceRoutingStatsEntry 1 } + +sourceRoutingStatsRingNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ring number of the ring monitored by this + entry. When any object in this entry is created, + the probe will attempt to discover the ring + number. Only after the ring number is discovered + will this object be created. After creating an + object in this entry, the management station + should poll this object to detect when it is + created. Only after this object is created can + the management station set the + sourceRoutingStatsStatus entry to valid(1)." + ::= { sourceRoutingStatsEntry 2 } + +sourceRoutingStatsInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent into this ring from + another ring." + ::= { sourceRoutingStatsEntry 3 } + +sourceRoutingStatsOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent from this ring to + another ring." + ::= { sourceRoutingStatsEntry 4 } + +sourceRoutingStatsThroughFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent from another ring, + through this ring, to another ring." + ::= { sourceRoutingStatsEntry 5 } + +sourceRoutingStatsAllRoutesBroadcastFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good frames received that + were All Routes Broadcast." + ::= { sourceRoutingStatsEntry 6 } + +sourceRoutingStatsSingleRouteBroadcastFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good frames received that + were Single Route Broadcast." + ::= { sourceRoutingStatsEntry 7 } + +sourceRoutingStatsInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent into this + ring from another ring." + ::= { sourceRoutingStatsEntry 8 } + +sourceRoutingStatsOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent from this + ring to another ring." + ::= { sourceRoutingStatsEntry 9 } + +sourceRoutingStatsThroughOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent another + ring, through this ring, to another ring." + ::= { sourceRoutingStatsEntry 10 } + +sourceRoutingStatsAllRoutesBroadcastOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets in good frames + received that were All Routes Broadcast." + ::= { sourceRoutingStatsEntry 11 } + +sourceRoutingStatsSingleRoutesBroadcastOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets in good frames + received that were Single Route Broadcast." + ::= { sourceRoutingStatsEntry 12 } + +sourceRoutingStatsLocalLLCFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received who had no + RIF field (or had a RIF field that only included + the local ring's number) and were not All Route + Broadcast Frames." + ::= { sourceRoutingStatsEntry 13 } + +sourceRoutingStats1HopFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 1 hop, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 14 } + +sourceRoutingStats2HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 2 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 15 } + +sourceRoutingStats3HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 3 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 16 } + +sourceRoutingStats4HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 4 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 17 } + +sourceRoutingStats5HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 5 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 18 } + +sourceRoutingStats6HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 6 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 19 } + +sourceRoutingStats7HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 7 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 20 } + +sourceRoutingStats8HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 8 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 21 } + +sourceRoutingStatsMoreThan8HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had more than 8 hops, were not All Route Broadcast + Frames, and whose source or destination were on + this ring (i.e. frames that had a RIF field and + had this ring number in the first or last entry of + the RIF field)." + ::= { sourceRoutingStatsEntry 22 } + +sourceRoutingStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { sourceRoutingStatsEntry 23 } + +sourceRoutingStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this sourceRoutingStats entry." + ::= { sourceRoutingStatsEntry 24 } + +END diff --git a/mibs/ietf/TOKENRING-MIB b/mibs/ietf/TOKENRING-MIB new file mode 100644 index 0000000..514cc7e --- /dev/null +++ b/mibs/ietf/TOKENRING-MIB @@ -0,0 +1,841 @@ +TOKENRING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32 FROM SNMPv2-SMI + transmission FROM RFC1213-MIB + MacAddress,TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +dot5 MODULE-IDENTITY + LAST-UPDATED "9410231150Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + + Postal: cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 + US + + Phone: +1 408 526 5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for IEEE Token Ring entities." + ::= { transmission 9 } + + +-- The 802.5 Interface Table + +-- This table contains state and parameter information which +-- is specific to 802.5 interfaces. It is mandatory that +-- systems having 802.5 interfaces implement this table in +-- addition to the ifTable (see RFCs 1213 and 1573). + +dot5Table OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Token Ring interface + parameters and state variables, one entry + per 802.5 interface." + ::= { dot5 1 } + +dot5Entry OBJECT-TYPE + SYNTAX Dot5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Token Ring status and parameter + values for an 802.5 interface." + INDEX { dot5IfIndex } + ::= { dot5Table 1 } + +Dot5Entry ::= SEQUENCE { + dot5IfIndex Integer32, + dot5Commands INTEGER, + dot5RingStatus INTEGER, + dot5RingState INTEGER, + dot5RingOpenStatus INTEGER, + dot5RingSpeed INTEGER, + dot5UpStream MacAddress, + dot5ActMonParticipate INTEGER, + dot5Functional MacAddress, + dot5LastBeaconSent TimeStamp +} + +dot5IfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains management information. The + value of this object for a particular + interface has the same value as the + ifIndex object, defined in MIB-II for + the same interface." + ::= { dot5Entry 1 } + +dot5Commands OBJECT-TYPE + SYNTAX INTEGER { + noop(1), + open(2), + reset(3), + close(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this object is set to the value of + open(2), the station should go into the + open state. The progress and success of + the open is given by the values of the + objects dot5RingState and + dot5RingOpenStatus. + When this object is set to the value + of reset(3), then the station should do + a reset. On a reset, all MIB counters + should retain their values, if possible. + Other side affects are dependent on the + hardware chip set. + When this object is set to the value + of close(4), the station should go into + the stopped state by removing itself + from the ring. + Setting this object to a value of + noop(1) has no effect. + When read, this object always has a + value of noop(1). + The open(2) and close(4) values + correspond to the up(1) and down(2) values + of MIB-II's ifAdminStatus and ifOperStatus, + i.e., the setting of ifAdminStatus and + dot5Commands affects the values of both + dot5Commands and ifOperStatus." + ::= { dot5Entry 2 } + +dot5RingStatus OBJECT-TYPE + SYNTAX INTEGER (0..262143) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface status which can + be used to diagnose fluctuating problems + that can occur on token rings, after a + station has successfully been added to + the ring. + Before an open is completed, this + object has the value for the 'no status' + condition. The dot5RingState and + dot5RingOpenStatus objects provide for + debugging problems when the station + can not even enter the ring. + The object's value is a sum of + values, one for each currently applicable + condition. The following values are + defined for various conditions: + + 0 = No Problems detected + 32 = Ring Recovery + 64 = Single Station + 256 = Remove Received + 512 = reserved + 1024 = Auto-Removal Error + 2048 = Lobe Wire Fault + 4096 = Transmit Beacon + 8192 = Soft Error + 16384 = Hard Error + 32768 = Signal Loss + 131072 = no status, open not completed." + ::= { dot5Entry 3 } + +dot5RingState OBJECT-TYPE + SYNTAX INTEGER { + opened(1), + closed(2), + opening(3), + closing(4), + openFailure(5), + ringFailure(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface state with respect + to entering or leaving the ring." + ::= { dot5Entry 4 } + +dot5RingOpenStatus OBJECT-TYPE + SYNTAX INTEGER { + noOpen(1), -- no open attempted + badParam(2), + lobeFailed(3), + signalLoss(4), + insertionTimeout(5), + ringFailed(6), + beaconing(7), + duplicateMAC(8), + requestFailed(9), + removeReceived(10), + open(11) -- last open successful + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the success, or the + reason for failure, of the station's most + recent attempt to enter the ring." + ::= { dot5Entry 5 } + +dot5RingSpeed OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + oneMegabit(2), + fourMegabit(3), + sixteenMegabit(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ring-speed at the next insertion into + the ring. Note that this may or may not be + different to the current ring-speed which is + given by MIB-II's ifSpeed. For interfaces + which do not support changing ring-speed, + dot5RingSpeed can only be set to its current + value. When dot5RingSpeed has the value + unknown(1), the ring's actual ring-speed is + to be used." + ::= { dot5Entry 6 } + +dot5UpStream OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC-address of the up stream neighbor + station in the ring." + ::= { dot5Entry 7 } + +dot5ActMonParticipate OBJECT-TYPE + SYNTAX INTEGER { + true(1), + false(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object has a value of true(1) then + this interface will participate in the + active monitor selection process. If the + value is false(2) then it will not. + Setting this object does not take effect + until the next Active Monitor election, and + might not take effect until the next time + the interface is opened." + ::= { dot5Entry 8 } + +dot5Functional OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit mask of all Token Ring functional + addresses for which this interface will + accept frames." + ::= { dot5Entry 9 } + +dot5LastBeaconSent OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB-II's sysUpTime object at which + the local system last transmitted a Beacon frame + on this interface." + ::= { dot5Entry 10 } + +-- The 802.5 Statistics Table + +-- This table contains statistics and error counter which are +-- specific to 802.5 interfaces. It is mandatory that systems +-- having 802.5 interfaces implement this table. + +dot5StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Token Ring statistics, + one entry per 802.5 interface. + All the statistics are defined using + the syntax Counter32 as 32-bit wrap around + counters. Thus, if an interface's + hardware maintains these statistics in + 16-bit counters, then the agent must read + the hardware's counters frequently enough + to prevent loss of significance, in order + to maintain 32-bit counters in software." + ::= { dot5 2 } + +dot5StatsEntry OBJECT-TYPE + SYNTAX Dot5StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains the 802.5 statistics + for a particular interface." + INDEX { dot5StatsIfIndex } + ::= { dot5StatsTable 1 } + + +Dot5StatsEntry ::= SEQUENCE { + dot5StatsIfIndex Integer32, + dot5StatsLineErrors Counter32, + dot5StatsBurstErrors Counter32, + dot5StatsACErrors Counter32, + dot5StatsAbortTransErrors Counter32, + dot5StatsInternalErrors Counter32, + dot5StatsLostFrameErrors Counter32, + dot5StatsReceiveCongestions Counter32, + dot5StatsFrameCopiedErrors Counter32, + dot5StatsTokenErrors Counter32, + dot5StatsSoftErrors Counter32, + dot5StatsHardErrors Counter32, + dot5StatsSignalLoss Counter32, + dot5StatsTransmitBeacons Counter32, + dot5StatsRecoverys Counter32, + dot5StatsLobeWires Counter32, + dot5StatsRemoves Counter32, + dot5StatsSingles Counter32, + dot5StatsFreqErrors Counter32 +} + + +dot5StatsIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains management information. The + value of this object for a particular + interface has the same value as MIB-II's + ifIndex object for the same interface." + ::= { dot5StatsEntry 1 } + +dot5StatsLineErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a frame + or token is copied or repeated by a + station, the E bit is zero in the frame + or token and one of the following + conditions exists: 1) there is a + non-data bit (J or K bit) between the SD + and the ED of the frame or token, or + 2) there is an FCS error in the frame." + ::= { dot5StatsEntry 2 } + +dot5StatsBurstErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + detects the absence of transitions for five + half-bit timers (burst-five error)." + ::= { dot5StatsEntry 3 } + +dot5StatsACErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + receives an AMP or SMP frame in which A is + equal to C is equal to 0, and then receives + another SMP frame with A is equal to C is + equal to 0 without first receiving an AMP + frame. It denotes a station that cannot set + the AC bits properly." + ::= { dot5StatsEntry 4 } + +dot5StatsAbortTransErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + transmits an abort delimiter while + transmitting." + ::= { dot5StatsEntry 5 } + +dot5StatsInternalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes an internal error." + ::= { dot5StatsEntry 6 } + +dot5StatsLostFrameErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + is transmitting and its TRR timer expires. + This condition denotes a condition where a + transmitting station in strip mode does not + receive the trailer of the frame before the + TRR timer goes off." + ::= { dot5StatsEntry 7 } + +dot5StatsReceiveCongestions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes a frame addressed to its + specific address, but has no available + buffer space indicating that the station + is congested." + ::= { dot5StatsEntry 8 } + +dot5StatsFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes a frame addressed to its + specific address and detects that the FS + field A bits are set to 1 indicating a + possible line hit or duplicate address." + ::= { dot5StatsEntry 9 } + +dot5StatsTokenErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + acting as the active monitor recognizes an + error condition that needs a token + transmitted." + ::= { dot5StatsEntry 10 } + +dot5StatsSoftErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Soft Errors the interface + has detected. It directly corresponds to + the number of Report Error MAC frames + that this interface has transmitted. + Soft Errors are those which are + recoverable by the MAC layer protocols." + ::= { dot5StatsEntry 11 } + +dot5StatsHardErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + detected an immediately recoverable + fatal error. It denotes the number of + times this interface is either + transmitting or receiving beacon MAC + frames." + ::= { dot5StatsEntry 12 } + +dot5StatsSignalLoss OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + detected the loss of signal condition from + the ring." + ::= { dot5StatsEntry 13 } + +dot5StatsTransmitBeacons OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + transmitted a beacon frame." + ::= { dot5StatsEntry 14 } + +dot5StatsRecoverys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Claim Token MAC frames + received or transmitted after the interface + has received a Ring Purge MAC frame. This + counter signifies the number of times the + ring has been purged and is being recovered + back into a normal operating state." + ::= { dot5StatsEntry 15 } + +dot5StatsLobeWires OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + detected an open or short circuit in the + lobe data path. The adapter will be closed + and dot5RingState will signify this + condition." + ::= { dot5StatsEntry 16 } + +dot5StatsRemoves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + received a Remove Ring Station MAC frame + request. When this frame is received + the interface will enter the close state + and dot5RingState will signify this + condition." + ::= { dot5StatsEntry 17 } + +dot5StatsSingles OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + sensed that it is the only station on the + ring. This will happen if the interface + is the first one up on a ring, or if + there is a hardware problem." + ::= { dot5StatsEntry 18 } + +dot5StatsFreqErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + detected that the frequency of the + incoming signal differs from the expected + frequency by more than that specified by + the IEEE 802.5 standard." + ::= { dot5StatsEntry 19 } + +-- The Timer Table + +-- This group contains the values of timers for 802.5 +-- interfaces. This table is obsolete, but its definition +-- is retained here for backwards compatibility. + +dot5TimerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5TimerEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "This table contains Token Ring interface + timer values, one entry per 802.5 + interface." + ::= { dot5 5 } + +dot5TimerEntry OBJECT-TYPE + SYNTAX Dot5TimerEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "A list of Token Ring timer values for an + 802.5 interface." + INDEX { dot5TimerIfIndex } + ::= { dot5TimerTable 1 } + +Dot5TimerEntry ::= SEQUENCE { + dot5TimerIfIndex Integer32, + dot5TimerReturnRepeat Integer32, + dot5TimerHolding Integer32, + dot5TimerQueuePDU Integer32, + dot5TimerValidTransmit Integer32, + dot5TimerNoToken Integer32, + dot5TimerActiveMon Integer32, + dot5TimerStandbyMon Integer32, + dot5TimerErrorReport Integer32, + dot5TimerBeaconTransmit Integer32, + dot5TimerBeaconReceive Integer32 +} + +dot5TimerIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains timer values. The value of + this object for a particular interface + has the same value as MIB-II's ifIndex + object for the same interface." + ::= { dot5TimerEntry 1 } + +dot5TimerReturnRepeat OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used to ensure the + interface will return to Repeat State, in + units of 100 micro-seconds. The value + should be greater than the maximum ring + latency." + ::= { dot5TimerEntry 2 } + +dot5TimerHolding OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "Maximum period of time a station is + permitted to transmit frames after capturing + a token, in units of 100 micro-seconds." + ::= { dot5TimerEntry 3 } + +dot5TimerQueuePDU OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value for enqueuing of an SMP + PDU after reception of an AMP or SMP + frame in which the A and C bits were + equal to 0, in units of 100 + micro-seconds." + ::= { dot5TimerEntry 4 } + +dot5TimerValidTransmit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the active + monitor to detect the absence of valid + transmissions, in units of 100 + micro-seconds." + ::= { dot5TimerEntry 5 } + +dot5TimerNoToken OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used to recover from + various-related error situations. + If N is the maximum number of stations on + the ring, the value of this timer is + normally: + dot5TimerReturnRepeat + N*dot5TimerHolding." + ::= { dot5TimerEntry 6 } + +dot5TimerActiveMon OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the active + monitor to stimulate the enqueuing of an + AMP PDU for transmission, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 7 } + +dot5TimerStandbyMon OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the stand-by + monitors to ensure that there is an active + monitor on the ring and to detect a + continuous stream of tokens, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 8 } + +dot5TimerErrorReport OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + often a station shall send a Report Error + MAC frame to report its error counters, + in units of 100 micro-seconds." + ::= { dot5TimerEntry 9 } + +dot5TimerBeaconTransmit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + long a station shall remain in the state + of transmitting Beacon frames before + entering the Bypass state, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 10 } + +dot5TimerBeaconReceive OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + long a station shall receive Beacon + frames from its downstream neighbor + before entering the Bypass state, in + units of 100 micro-seconds." + ::= { dot5TimerEntry 11 } + + +-- 802.5 Interface Tests + +dot5Tests OBJECT IDENTIFIER ::= { dot5 3 } + +-- RFC 1573 defines the ifTestTable, through which a +-- network manager can instruct an agent to test an interface +-- for various faults. A test to be performed is identified +-- as an OBJECT IDENTIFIER. + +-- The Insert Function test + +dot5TestInsertFunc OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Invoking this test causes the station to test the insert + ring logic of the hardware if the station's lobe media + cable is connected to a wiring concentrator. Note that + this command inserts the station into the network, and + thus, could cause problems if the station is connected + to a operational network." + ::= { dot5Tests 1 } + +-- The Full-Duplex Loop Back test + +dot5TestFullDuplexLoopBack OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Invoking this test on a 802.5 interface causes the + interface to check the path from memory through the + chip set's internal logic and back to memory, thus + checking the proper functioning of the system's + interface to the chip set." + ::= { dot5Tests 2 } + + +-- 802.5 Hardware Chip Sets + +-- RFC 1229 specified an object, ifExtnsChipSet, with the +-- syntax of OBJECT IDENTIFIER, to identify the hardware +-- chip set in use by an interface. RFC 1573 obsoletes +-- the use of ifExtnsChipSet. However, the following +-- definitions are retained for backwards compatibility. + +dot5ChipSets OBJECT IDENTIFIER ::= { dot5 4 } + +dot5ChipSetIBM16 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "IBM's 16/4 Mbs chip set." + ::= { dot5ChipSets 1 } + +dot5ChipSetTItms380 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Texas Instruments' TMS 380 4Mbs chip-set" + ::= { dot5ChipSets 2 } + +dot5ChipSetTItms380c16 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Texas Instruments' TMS 380C16 16/4 Mbs chip-set" + ::= { dot5ChipSets 3 } + +-- conformance information + +dot5Conformance OBJECT IDENTIFIER ::= { dot5 6 } + +dot5Groups OBJECT IDENTIFIER ::= { dot5Conformance 1 } +dot5Compliances OBJECT IDENTIFIER ::= { dot5Conformance 2 } + + +-- compliance statements + +dot5Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the IEEE 802.5 MIB." + + MODULE -- this module + MANDATORY-GROUPS { dot5StateGroup, dot5StatsGroup } + + OBJECT dot5ActMonParticipate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot5Functional + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dot5Compliances 1 } + + +-- units of conformance + +dot5StateGroup OBJECT-GROUP + OBJECTS { dot5Commands, dot5RingStatus, dot5RingState, + dot5RingOpenStatus, dot5RingSpeed, dot5UpStream, + dot5ActMonParticipate, dot5Functional, + dot5LastBeaconSent + } + STATUS current + DESCRIPTION + "A collection of objects providing state information + and parameters for IEEE 802.5 interfaces." + ::= { dot5Groups 1 } + +dot5StatsGroup OBJECT-GROUP + OBJECTS { dot5StatsLineErrors, dot5StatsBurstErrors, + dot5StatsACErrors, dot5StatsAbortTransErrors, + dot5StatsInternalErrors, dot5StatsLostFrameErrors, + dot5StatsReceiveCongestions, + dot5StatsFrameCopiedErrors, dot5StatsTokenErrors, + dot5StatsSoftErrors, dot5StatsHardErrors, + dot5StatsSignalLoss, dot5StatsTransmitBeacons, + dot5StatsRecoverys, dot5StatsLobeWires, + dot5StatsRemoves, dot5StatsSingles, + dot5StatsFreqErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for + IEEE 802.5 interfaces." + ::= { dot5Groups 2 } + +END diff --git a/mibs/ietf/TOKENRING-STATION-SR-MIB b/mibs/ietf/TOKENRING-STATION-SR-MIB new file mode 100644 index 0000000..f0980f0 --- /dev/null +++ b/mibs/ietf/TOKENRING-STATION-SR-MIB @@ -0,0 +1,177 @@ +TOKENRING-STATION-SR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, MacAddress + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2, ifIndex FROM RFC1213-MIB; + +dot5SrMIB MODULE-IDENTITY + LAST-UPDATED "9412161000Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing source routes in + end-stations on IEEE 802.5 Token Ring networks." + ::= { mib-2 42 } +dot5SrMIBObjects OBJECT IDENTIFIER ::= { dot5SrMIB 1 } + +SourceRoute ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents a Source Route, containing an + embedded sequence of bridge and ring ID's, + as used by 802.5 Source Routing." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + SYNTAX OCTET STRING (SIZE(0..30)) + + +-- The 802.5 Station Source Route Table +-- + +dot5SrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5SrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of source-routing routes. + This represents the 802.5 RIF database." + ::= { dot5SrMIBObjects 1 } + +dot5SrRouteEntry OBJECT-TYPE + SYNTAX Dot5SrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a specific route. + + An entry is created whenever a 'Single Path + Explorer' or an 'All Paths Explorer' discovers + a route to a neighbor not currently in the table, + or whenever an 'All Paths Explorer' discovers a + better (e.g., shorter) route than the route currently + stored in the table. This is done on behalf of + any network layer client. + + The ifIndex value in the INDEX clause refers to + the value of MIB-II's ifIndex object for the + interface on which the route is in effect." + INDEX { ifIndex, dot5SrRouteDestination } + ::= { dot5SrRouteTable 1 } + +Dot5SrRouteEntry ::= SEQUENCE { + dot5SrRouteDestination MacAddress, + dot5SrRouteControl OCTET STRING, + dot5SrRouteDescr SourceRoute, + dot5SrRouteStatus RowStatus +} + +dot5SrRouteDestination OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination of this route." + ::= { dot5SrRouteEntry 2 } + +dot5SrRouteControl OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of Routing Control field for this + route." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + ::= { dot5SrRouteEntry 3 } + +dot5SrRouteDescr OBJECT-TYPE + SYNTAX SourceRoute + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The embedded sequence of bridge and ring ID's + for this route. For destinations on the + local ring, the value of this object is + the zero-length string." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + ::= { dot5SrRouteEntry 4 } + +dot5SrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. Values of the instances + of dot5SrRouteControl and dot5SrRouteDescr can be + modified while the row's status is 'active." + ::= { dot5SrRouteEntry 5 } + +-- conformance information + +dot5SrConformance OBJECT IDENTIFIER ::= { dot5SrMIB 2 } + +dot5SrGroups OBJECT IDENTIFIER ::= { dot5SrConformance 1 } +dot5SrCompliances OBJECT IDENTIFIER ::= { dot5SrConformance 2 } + + +-- compliance statements + +dot5SrCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the IEEE 802.5 Station Source Route + MIB." + + MODULE -- this module + MANDATORY-GROUPS { dot5SrRouteGroup } + + OBJECT dot5SrRouteStatus + SYNTAX INTEGER { active(1) } -- subset of values + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only the 'active' + value need be supported." + + OBJECT dot5SrRouteControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot5SrRouteDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dot5SrCompliances 1 } + + +-- units of conformance + +dot5SrRouteGroup OBJECT-GROUP + OBJECTS { dot5SrRouteControl, + dot5SrRouteDescr, + dot5SrRouteStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing for the management of + source routes in stations on IEEE 802.5 source-routing + networks." + ::= { dot5SrGroups 1 } + +END diff --git a/mibs/ietf/TRANSPORT-ADDRESS-MIB b/mibs/ietf/TRANSPORT-ADDRESS-MIB new file mode 100644 index 0000000..2c7e54e --- /dev/null +++ b/mibs/ietf/TRANSPORT-ADDRESS-MIB @@ -0,0 +1,444 @@ +TRANSPORT-ADDRESS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +transportAddressMIB MODULE-IDENTITY + LAST-UPDATED "200211010000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Juergen Schoenwaelder (Editor) + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig, Germany + + + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + Send comments to ." + DESCRIPTION + "This MIB module provides commonly used transport + address definitions. + + Copyright (C) The Internet Society (2002). This version of + this MIB module is part of RFC 3419; see the RFC itself for + full legal notices." + + -- Revision log + + REVISION "200211010000Z" + DESCRIPTION + "Initial version, published as RFC 3419." + ::= { mib-2 100 } + + +transportDomains OBJECT IDENTIFIER ::= { transportAddressMIB 1 } + +transportDomainUdpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses." + ::= { transportDomains 1 } + +transportDomainUdpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses." + ::= { transportDomains 2 } + +transportDomainUdpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index." + ::= { transportDomains 3 } + +transportDomainUdpIpv6z OBJECT-IDENTITY + STATUS current + + + + DESCRIPTION + "The UDP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index." + ::= { transportDomains 4 } + +transportDomainTcpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses." + ::= { transportDomains 5 } + +transportDomainTcpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses." + ::= { transportDomains 6 } + +transportDomainTcpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index." + ::= { transportDomains 7 } + +transportDomainTcpIpv6z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index." + ::= { transportDomains 8 } + +transportDomainSctpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses. This transport domain usually + represents the primary address on multihomed SCTP + endpoints." + ::= { transportDomains 9 } + + + + +transportDomainSctpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses. This transport domain usually + represents the primary address on multihomed SCTP + endpoints." + ::= { transportDomains 10 } + +transportDomainSctpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index. This transport + domain usually represents the primary address on + multihomed SCTP endpoints." + ::= { transportDomains 11 } + +transportDomainSctpIpv6z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index. This transport + domain usually represents the primary address on + multihomed SCTP endpoints." + ::= { transportDomains 12 } + +transportDomainLocal OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Posix Local IPC transport domain. The corresponding + transport address is of type TransportAddressLocal. + + The Posix Local IPC transport domain incorporates the + well-known UNIX domain sockets." + ::= { transportDomains 13 } + +transportDomainUdpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 14 } + + + + +transportDomainTcpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 15 } + +transportDomainSctpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 16 } + +TransportDomain ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a transport domain. + + Some possible values, such as transportDomainUdpIpv4, are + defined in this module. Other possible values can be + defined in other MIB modules." + SYNTAX OBJECT IDENTIFIER + +-- +-- The enumerated values of the textual convention below should +-- be identical to the last sub-identifier of the OID registered +-- for the same domain. +-- + +TransportAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a transport domain. This is the + enumerated version of the transport domain registrations + in this MIB module. The enumerated values have the + following meaning: + + unknown(0) unknown transport address type + udpIpv4(1) transportDomainUdpIpv4 + udpIpv6(2) transportDomainUdpIpv6 + udpIpv4z(3) transportDomainUdpIpv4z + udpIpv6z(4) transportDomainUdpIpv6z + tcpIpv4(5) transportDomainTcpIpv4 + tcpIpv6(6) transportDomainTcpIpv6 + tcpIpv4z(7) transportDomainTcpIpv4z + + + + tcpIpv6z(8) transportDomainTcpIpv6z + sctpIpv4(9) transportDomainSctpIpv4 + sctpIpv6(10) transportDomainSctpIpv6 + sctpIpv4z(11) transportDomainSctpIpv4z + sctpIpv6z(12) transportDomainSctpIpv6z + local(13) transportDomainLocal + udpDns(14) transportDomainUdpDns + tcpDns(15) transportDomainTcpDns + sctpDns(16) transportDomainSctpDns + + This textual convention can be used to represent transport + domains in situations where a syntax of TransportDomain is + unwieldy (for example, when used as an index). + + The usage of this textual convention implies that additional + transport domains can only be supported by updating this MIB + module. This extensibility restriction does not apply for the + TransportDomain textual convention which allows MIB authors + to define additional transport domains independently in + other MIB modules." + SYNTAX INTEGER { + unknown(0), + udpIpv4(1), + udpIpv6(2), + udpIpv4z(3), + udpIpv6z(4), + tcpIpv4(5), + tcpIpv6(6), + tcpIpv4z(7), + tcpIpv6z(8), + sctpIpv4(9), + sctpIpv6(10), + sctpIpv4z(11), + sctpIpv6z(12), + local(13), + udpDns(14), + tcpDns(15), + sctpDns(16) + } + +TransportAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic transport address. + + A TransportAddress value is always interpreted within the + context of a TransportAddressType or TransportDomain value. + Every usage of the TransportAddress textual convention MUST + + + + specify the TransportAddressType or TransportDomain object + which provides the context. Furthermore, MIB authors SHOULD + define a separate TransportAddressType or TransportDomain + object for each TransportAddress object. It is suggested that + the TransportAddressType or TransportDomain is logically + registered before the object(s) which use the + TransportAddress textual convention if they appear in the + same logical row. + + The value of a TransportAddress object must always be + consistent with the value of the associated + TransportAddressType or TransportDomain object. Attempts + to set a TransportAddress object to a value which is + inconsistent with the associated TransportAddressType or + TransportDomain must fail with an inconsistentValue error. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (0..255)) + +TransportAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv4 + address and a port number (as used for example by UDP, + TCP and SCTP): + + octets contents encoding + 1-4 IPv4 address network-byte order + 5-6 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (6)) + +TransportAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv6 + address and a port number (as used for example by UDP, + + + + TCP and SCTP): + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-18 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (18)) + +TransportAddressIPv4z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d%4d:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv4 + address, a zone index and a port number (as used for + example by UDP, TCP and SCTP): + + octets contents encoding + 1-4 IPv4 address network-byte order + 5-8 zone index network-byte order + 9-10 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (10)) + +TransportAddressIPv6z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv6 + address, a zone index and a port number (as used for + example by UDP, TCP and SCTP): + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-20 zone index network-byte order + 21-22 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + + + + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (22)) + +TransportAddressLocal ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "Represents a POSIX Local IPC transport address: + + octets contents encoding + all POSIX Local IPC address string + + The Posix Local IPC transport domain subsumes UNIX domain + sockets. + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + REFERENCE + "Protocol Independent Interfaces (IEEE POSIX 1003.1g)" + SYNTAX OCTET STRING (SIZE (1..255)) + +TransportAddressDns ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "Represents a DNS domain name followed by a colon ':' + (ASCII character 0x3A) and a port number in ASCII. + The name SHOULD be fully qualified whenever possible. + + Values of this textual convention are not directly useable as + transport-layer addressing information, and require runtime + resolution. As such, applications that write them must be + prepared for handling errors if such values are not + supported, or cannot be resolved (if resolution occurs at the + time of the management operation). + + The DESCRIPTION clause of TransportAddress objects that may + + + + have TransportAddressDns values must fully describe how (and + when) such names are to be resolved to IP addresses and vice + versa. + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (1..255)) + +END diff --git a/mibs/ietf/TRIP-MIB b/mibs/ietf/TRIP-MIB new file mode 100644 index 0000000..a5369db --- /dev/null +++ b/mibs/ietf/TRIP-MIB @@ -0,0 +1,2117 @@ +TRIP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Unsigned32, + Integer32, + Counter32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + DateAndTime, + TimeInterval, + TruthValue, + TimeStamp, + StorageType, + RowStatus + FROM SNMPv2-TC -- [RFC2579] + + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + + applIndex, + applRFC2788Group + FROM NETWORK-SERVICES-MIB -- [RFC2788] + + TripItad, + TripId, + TripAppProtocol, + TripAddressFamily, + TripCommunityId, + TripProtocolVersion, + TripSendReceiveMode + FROM TRIP-TC-MIB; -- [RFC3872] + + tripMIB MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- Sep 02, 2004 + ORGANIZATION "IETF IPTel Working Group. + + + Mailing list: iptel@lists.bell-labs.com" + + CONTACT-INFO + "Co-editor David Zinman + postal: 265 Ridley Blvd. + Toronto ON, M5M 4N8 + Canada + email: dzinman@rogers.com + phone: +1 416 433 4298 + + Co-editor: David Walker + Sedna Wireless Inc. + postal: 495 March Road, Suite 500 + Ottawa, ON K2K 3G1 + Canada + email: david.walker@sedna-wireless.com + phone: +1 613 878 8142 + + Co-editor Jianping Jiang + Syndesis Limited + postal: 30 Fulton Way + Richmond Hill, ON L4B 1J5 + Canada + + email: jjiang@syndesis.com + phone: +1 905 886-7818 x2515 + " + DESCRIPTION + "The MIB module describing Telephony Routing over IP + (TRIP). TRIP is a policy driven inter-administrative + domain protocol for advertising the reachability of + telephony destinations between location servers (LS), and + for advertising attributes of the routes to those + destinations. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3872, see the RFC itself + for full legal notices." + REVISION "200409020000Z" -- Sep 02, 2004 + DESCRIPTION + "The initial version, Published as RFC 3872." + ::= { mib-2 116 } + + tripMIBNotifications OBJECT IDENTIFIER ::= { tripMIB 0 } + tripMIBObjects OBJECT IDENTIFIER ::= { tripMIB 1 } + tripMIBConformance OBJECT IDENTIFIER ::= { tripMIB 2 } + tripMIBNotifObjects OBJECT IDENTIFIER ::= { tripMIB 3 } + + + + tripMIBCompliances OBJECT IDENTIFIER ::= + { tripMIBConformance 1 } + tripMIBGroups OBJECT IDENTIFIER ::= + { tripMIBConformance 2 } + + -- + -- tripCfgTable + -- + tripCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the common configuration objects + applicable to all TRIP applications referenced by the + applIndex. Each row represents those objects for a + particular TRIP LS present in this system. The + instances of TRIP LS's are uniquely identified by the + applIndex. The objects in this table SHOULD be + nonVolatile and survive a reboot." + ::= { tripMIBObjects 1 } + + tripCfgEntry OBJECT-TYPE + SYNTAX TripCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common configuration." + INDEX { applIndex } + ::= { tripCfgTable 1 } + + TripCfgEntry ::= + SEQUENCE { + tripCfgProtocolVersion TripProtocolVersion, + tripCfgItad TripItad, + tripCfgIdentifier TripId, + tripCfgAdminStatus INTEGER, + tripCfgOperStatus INTEGER, + tripCfgAddrIAddrType InetAddressType, + tripCfgAddr InetAddress, + tripCfgPort InetPortNumber, + tripCfgMinItadOriginationInterval Unsigned32, + tripCfgMinRouteAdvertisementInterval Unsigned32, + tripCfgMaxPurgeTime Unsigned32, + tripCfgDisableTime Unsigned32, + tripCfgSendReceiveMode TripSendReceiveMode, + tripCfgStorage StorageType + } + + + + tripCfgProtocolVersion OBJECT-TYPE + SYNTAX TripProtocolVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will reflect the version of TRIP + supported by this system. It follows the same + format as TRIP version information contained + in the TRIP messages generated by this TRIP entity." + REFERENCE + "RFC 3219, section 4.2." + ::= { tripCfgEntry 1 } + + tripCfgItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Internet Telephony Administrative domain (ITAD) + of this LS." + ::= { tripCfgEntry 2 } + + tripCfgIdentifier OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The object that identifies this TRIP Client." + ::= { tripCfgEntry 3 } + + tripCfgAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired TRIP state. + + up(1) : Set the application to normal operation. + + down(2): Set the application to a state where it will + not process TRIP messages. + + Setting this object should be reflected in + tripCfgOperStatus. If an unknown error occurs + tripCfgOperStatus will return unknown(0)." + + + + ::= { tripCfgEntry 4 } + + tripCfgOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + up(1), + down(2), + faulty(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the TRIP protocol. + + unknown(0): The operating status of the application is + unknown. + + up(1): The application is operating normally, and + is ready to process (receive and issue) TRIP + requests and responses. + + down(2): The application is currently not processing + TRIP messages. This occurs if the TRIP + application is in an initialization state or + if tripCfgAdminStatus is set to down(2). + + faulty(3): The application is not operating normally due + to a fault in the system. + + If tripCfgAdminStatus is down(2) then tripOperStatus SHOULD + be down(2). If tripAdminStatus is changed to up(1) then + tripOperStatus SHOULD change to up(1) if there is no + fault that prevents the TRIP protocol from moving to the + up(1) state." + ::= { tripCfgEntry 5 } + + tripCfgAddrIAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet Address of the tripAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripCfgEntry 6 } + + tripCfgAddr OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network address of the local LS that the peer + connects to. The type of address depends on the object + tripCfgAddrIAddrType. The type of this address is + determined by the value of the + tripCfgAddrIAddrType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripCfgEntry 7 } + + tripCfgPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The local tcp/udp port on the local LS that the peer + connects to." + ::= { tripCfgEntry 8 } + + tripCfgMinItadOriginationInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum amount of time that MUST elapse between + advertisement of the update message that reports changes + within the LS's own ITAD." + DEFVAL { 30 } + ::= { tripCfgEntry 9 } + + tripCfgMinRouteAdvertisementInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies minimal interval between successive + advertisements to a particular destination from an LS." + DEFVAL { 30 } + ::= { tripCfgEntry 10 } + + tripCfgMaxPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "Indicates the interval that the LS MUST maintain routes + marked as withdrawn in its database." + DEFVAL { 10 } + ::= { tripCfgEntry 11 } + + tripCfgDisableTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the interval that the TRIP module of the + LS MUST be disabled while routes originated by this + LS with high sequence numbers can be removed." + DEFVAL { 180 } + ::= { tripCfgEntry 12 } + + tripCfgSendReceiveMode OBJECT-TYPE + SYNTAX TripSendReceiveMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational mode of the TRIP entity running on this + system." + ::= { tripCfgEntry 13 } + + tripCfgStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { tripCfgEntry 14 } + + -- + -- TripRouteTypeTable + -- + + tripRouteTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteTypeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The TRIP peer Route Type table contains one entry per + supported protocol - address family pair. The objects in + this table are volatile and are refreshed after a reboot." + ::= { tripMIBObjects 2 } + + tripRouteTypeEntry OBJECT-TYPE + SYNTAX TripRouteTypeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the route type + that a particular TRIP entity supports. Each entry + represents information about either the local or a remote + LS peer. The object tripRouteTypePeer is used to + distinguish this. In the case of a local LS, the + address/port information will reflect the values + configured in tripCfgTable. In the case of a remote + peer, the address/port information will reflect the + values of an entry in the tripPeerTable. + + Implementation need to be aware that if the size of + tripRouteTypeAddr exceeds 111 sub-IDs, then OIDs of column + instances in this table will have more than 128 sub-IDs + and cannot be accessed using SNMPv1, SNMPv2c, or snmpv3." + INDEX { applIndex, + tripRouteTypeAddrInetType, + tripRouteTypeAddr, + tripRouteTypePort, + tripRouteTypeProtocolId, + tripRouteTypeAddrFamilyId } + ::= { tripRouteTypeTable 1 } + + TripRouteTypeEntry ::= SEQUENCE { + tripRouteTypeAddrInetType InetAddressType, + tripRouteTypeAddr InetAddress, + tripRouteTypePort InetPortNumber, + tripRouteTypeProtocolId TripAppProtocol, + tripRouteTypeAddrFamilyId TripAddressFamily, + tripRouteTypePeer INTEGER + } + + tripRouteTypeAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of Inet Address of the tripRouteTypeAddr." + REFERENCE + + + + "RFC 3291, section 3." + ::= { tripRouteTypeEntry 1 } + + tripRouteTypeAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address of this entry's TRIP peer LS. The + type of this address is determined by the value of the + tripRouteTypeAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripRouteTypeEntry 2 } + + tripRouteTypePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The port for the TCP connection between this and + an associated TRIP peer." + ::= { tripRouteTypeEntry 3 } + + tripRouteTypeProtocolId OBJECT-TYPE + SYNTAX TripAppProtocol + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier of a protocol that the associated + peer is using." + ::= { tripRouteTypeEntry 4 } + + tripRouteTypeAddrFamilyId OBJECT-TYPE + SYNTAX TripAddressFamily + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier of an address family that the + associated peer belongs to." + ::= { tripRouteTypeEntry 5 } + + tripRouteTypePeer OBJECT-TYPE + SYNTAX INTEGER { local(1), remote(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether this entry is + + + + associated with a 'local' or 'remote' LS peer." + ::= { tripRouteTypeEntry 6 } + + -- + -- tripSupportedCommunityTable + -- + + tripSupportedCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripSupportedCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of TRIP communities that this LS supports. A + TRIP community is a group of destinations that share + common properties. + + The TRIP Supported Communities entry is used to group + destinations so that the routing decision can be based + on the identity of the group." + REFERENCE + "RFC 3219, section 5.9" + ::= { tripMIBObjects 3 } + + tripSupportedCommunityEntry OBJECT-TYPE + SYNTAX TripSupportedCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about a community. A TRIP + community is a group of destinations that share some + common property. This attribute is used so that routing + decisions can be based on the identity of the group." + INDEX { applIndex, tripSupportedCommunityId } + ::= { tripSupportedCommunityTable 1 } + + TripSupportedCommunityEntry ::= SEQUENCE { + tripSupportedCommunityId TripCommunityId, + tripSupportedCommunityItad TripItad, + tripSupportedCommunityStorage StorageType, + tripSupportedCommunityRowStatus RowStatus + } + + tripSupportedCommunityId OBJECT-TYPE + SYNTAX TripCommunityId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier of the supported Community." + + + + ::= { tripSupportedCommunityEntry 1 } + + tripSupportedCommunityItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ITAD of the community." + ::= { tripSupportedCommunityEntry 2 } + + tripSupportedCommunityStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual + rows having the value 'permanent' need not allow write- + access to any columnar objects in the row. It is not a + requirement that this storage be non volatile." + DEFVAL { nonVolatile } + ::= { tripSupportedCommunityEntry 3 } + + tripSupportedCommunityRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of the entry. This object is REQUIRED + to create or delete rows by a manager. A value for + tripSupportedCommunityItad MUST be set for row creation + to be successful. If the instance already exists for a + particular applIndex, the row create operation will + fail. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified." + ::= { tripSupportedCommunityEntry 4 } + + -- + -- TripPeerTable + -- + tripPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP peer table. This table contains one entry per + TRIP peer, and information about the connection with + + + + the peer." + ::= { tripMIBObjects 4 } + + tripPeerEntry OBJECT-TYPE + SYNTAX TripPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about the connection with + a TRIP peer. + + Implementation need to be aware that if the size of + tripPeerRemoteAddr exceeds 113 sub-IDs, then OIDs of + column instances in this table will have more than 128 + sub-IDs and cannot be accessed using SNMPv1, SNMPv2c, or + snmpv3." + INDEX { applIndex, + tripPeerRemoteAddrInetType, + tripPeerRemoteAddr, + tripPeerRemotePort } + ::= {tripPeerTable 1} + + TripPeerEntry ::= SEQUENCE { + tripPeerRemoteAddrInetType InetAddressType, + tripPeerRemoteAddr InetAddress, + tripPeerRemotePort InetPortNumber, + tripPeerIdentifier TripId, + tripPeerState INTEGER, + tripPeerAdminStatus INTEGER, + tripPeerNegotiatedVersion TripProtocolVersion, + tripPeerSendReceiveMode TripSendReceiveMode, + tripPeerRemoteItad TripItad, + tripPeerConnectRetryInterval Unsigned32, + tripPeerMaxRetryInterval Unsigned32, + tripPeerHoldTime Unsigned32, + tripPeerKeepAlive Unsigned32, + tripPeerHoldTimeConfigured Unsigned32, + tripPeerKeepAliveConfigured Unsigned32, + tripPeerMaxPurgeTime Unsigned32, + tripPeerDisableTime Unsigned32, + tripPeerLearned TruthValue, + tripPeerStorage StorageType, + tripPeerRowStatus RowStatus + } + + tripPeerRemoteAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The type of Inet Address of the tripPeerRemoteAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripPeerEntry 1 } + + tripPeerRemoteAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of this entry's TRIP peer LS. The type of + this address is determined by the value of the + tripPeerRemoteAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripPeerEntry 2 } + + tripPeerRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port for the TCP connection between the + TRIP peers." + ::= { tripPeerEntry 3 } + + tripPeerIdentifier OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "TRIP identifier of the peer." + ::= { tripPeerEntry 4 } + + tripPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + openSent(4), + openConfirm(5), + established(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "TRIP Peer Finite State Machine state. + + idle(1) : The initial state. Local LS refuses all + incoming connections. No application + resources are allocated to processing + information about the remote peer. + + connect(2) : Local LS waiting for a transport + protocol connection to be completed to + the peer, and is listening for inbound + transport connections from the peer. + + active(3) : Local LS is listening for an inbound + connection from the peer, but is not in + the process of initiating a connection + to the remote peer. + + openSent(4) : Local LS has sent an OPEN message to its + peer and is waiting for an OPEN message + from the remote peer. + + openConfirm(5): Local LS has sent an OPEN message to the + remote peer, received an OPEN message from + the remote peer, and sent a KEEPALIVE + message in response to the OPEN. The local + LS is now waiting for a KEEPALIVE message + or a NOTIFICATION message in response to + its OPEN message. + + established(6): LS can exchange UPDATE, NOTIFICATION, and + KEEPALIVE messages with its peer." + ::= { tripPeerEntry 5 } + + tripPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to affect the TRIP connection + state. + + up(1) : Allow a connection with the peer LS. + + down(2) : disconnect the connection from the peer LS and + do not allow any further connections to this + + + + peer. + + If this value is set to down(2) then tripPeerState will + have the value of idle(1)." + DEFVAL { up } + ::= { tripPeerEntry 6 } + + tripPeerNegotiatedVersion OBJECT-TYPE + SYNTAX TripProtocolVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated version of TRIP running between this + local entity and this peer." + ::= { tripPeerEntry 7 } + + tripPeerSendReceiveMode OBJECT-TYPE + SYNTAX TripSendReceiveMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational mode of this peer." + ::= { tripPeerEntry 8 } + + tripPeerRemoteItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Telephony Administrative domain of + this peer." + ::= { tripPeerEntry 9 } + + tripPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the initial amount of time that will elapse + between connection retry. This value SHOULD double + after each attempt up to the value of + tripPeerMaxRetryInterval. This value MUST always be less + than or equal to the value of tripPeerMaxRetryInterval. + Attempts to set this value higher than the max retry + will not be allowed." + DEFVAL { 120 } + ::= { tripPeerEntry 10 } + + + + tripPeerMaxRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum amount of time that will elapse + between connection retries. Once the value of + tripPeerConnectRetryInterval has reached this value, no + more retries will be attempted. Attempts to set this + value lower than the retry interval SHOULD not be + allowed." + DEFVAL { 360 } + ::= { tripPeerEntry 11 } + + tripPeerHoldTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval in seconds for the hold timer that + is established with the peer. The value of this object + is the smaller of the values in + tripPeerHoldTimeConfigured and the hold time received + in the open message." + ::= { tripPeerEntry 12 } + + tripPeerKeepAlive OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the amount of time that MUST elapse between + keep alive messages. This value is negotiated with the + remote when a connection is established." + ::= { tripPeerEntry 13 } + + tripPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Unsigned32 (0 | 3..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time that MAY elapse between the + receipt of successive keepalive or update message. A value + of 0 means that keepalive or update messages will not be + + + + sent." + DEFVAL { 240 } + ::= { tripPeerEntry 14 } + + tripPeerKeepAliveConfigured OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the amount of time that MUST elapse between + keep alive messages." + DEFVAL { 30 } + ::= { tripPeerEntry 15 } + + tripPeerMaxPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the interval that the LS MUST maintain routes + marked as withdrawn in its database." + DEFVAL { 10 } + ::= { tripPeerEntry 16 } + + tripPeerDisableTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicate the interval that the TRIP module of the remote + peer LS MUST be disabled while routes originated by the + local LS with high sequence numbers can be removed." + DEFVAL { 180 } + ::= { tripPeerEntry 17 } + + tripPeerLearned OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this entry was learned or + configured." + DEFVAL { false } + ::= { tripPeerEntry 18 } + + + + + tripPeerStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual + rows having the value 'permanent' need not allow write- + access to any columnar objects in the row. It is not a + requirement that this storage be non volatile." + DEFVAL { nonVolatile } + ::= { tripPeerEntry 19 } + + tripPeerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of the entry. This object is REQUIRED to + create or delete rows remotely by a manager. If the + instance already exists for a particular applIndex, the + row create operation will fail. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + + Entries in this table can be learned by the TRIP + application, or provisioned through this table." + ::= { tripPeerEntry 20 } + + -- + -- TripPeerStatisticsTable + -- + + tripPeerStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripPeerStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP peer stats table. This table contains one + entry per remote TRIP peer, and statistics related to the + connection with the remote peer. The objects in this + table are volatile." + ::= { tripMIBObjects 5 } + + tripPeerStatisticsEntry OBJECT-TYPE + SYNTAX TripPeerStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Entry containing information about the connection with + a TRIP peer." + AUGMENTS { tripPeerEntry } + ::= { tripPeerStatisticsTable 1 } + + TripPeerStatisticsEntry ::= SEQUENCE { + tripPeerInUpdates Counter32, + tripPeerOutUpdates Counter32, + tripPeerInTotalMessages Counter32, + tripPeerOutTotalMessages Counter32, + tripPeerFsmEstablishedTransitions Counter32, + tripPeerFsmEstablishedTime DateAndTime, + tripPeerInUpdateElapsedTime TimeInterval, + tripPeerStateChangeTime TimeStamp + } + + tripPeerInUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TRIP update messages received from this + remote peer since the last restart of this location + server." + ::= { tripPeerStatisticsEntry 1 } + + tripPeerOutUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TRIP update messages sent to this remote + peer since the last restart of this LS." + ::= { tripPeerStatisticsEntry 2 } + + tripPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of TRIP messages received from the + remote peer on this connection since the last restart + of this LS." + ::= { tripPeerStatisticsEntry 3 } + + tripPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of outgoing TRIP messages sent to the + remote peer since the last restart of this LS." + ::= { tripPeerStatisticsEntry 4 } + + tripPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the remote peer has transitioned + into the established state since the last restart of this + LS." + ::= { tripPeerStatisticsEntry 5 } + + tripPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the time and date that this remote peer entered + the 'established' state." + ::= { tripPeerStatisticsEntry 6 } + + tripPeerInUpdateElapsedTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in hundredths of seconds since the last + TRIP update message was received from this remote peer." + ::= { tripPeerStatisticsEntry 7 } + + tripPeerStateChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last state change of + tripPeerState took place." + ::= { tripPeerStatisticsEntry 8 } + + -- TRIP Received Route Table. This table contains + -- all routes from all sources. Each entry consists + -- of a route and its associated path attributes. + + + + + tripRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP route table containing information about + reachable routes that are to be added to service by the + receiving LS. The objects in this table are volatile + and are refreshed when this LS rediscovers its route + table." + ::= { tripMIBObjects 6 } + + tripRouteEntry OBJECT-TYPE + SYNTAX TripRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a route to a called destination." + INDEX { applIndex, + tripRouteAppProtocol, + tripRouteAddressFamily, + tripRouteAddress, + tripRoutePeer + } + ::= { tripRouteTable 1 } + + TripRouteEntry ::= SEQUENCE { + tripRouteAppProtocol TripAppProtocol, + tripRouteAddressFamily TripAddressFamily, + tripRouteAddress OCTET STRING, + tripRoutePeer TripId, + tripRouteTRIBMask BITS, + tripRouteAddressSequenceNumber Unsigned32, + tripRouteAddressOriginatorId TripId, + tripRouteNextHopServerIAddrType InetAddressType, + tripRouteNextHopServer InetAddress, + tripRouteNextHopServerPort InetPortNumber, + tripRouteNextHopServerItad TripItad, + tripRouteMultiExitDisc Unsigned32, + tripRouteLocalPref Unsigned32, + tripRouteAdvertisementPath OCTET STRING, + tripRouteRoutedPath OCTET STRING, + tripRouteAtomicAggregate TruthValue, + tripRouteUnknown OCTET STRING, + tripRouteWithdrawn TruthValue, + tripRouteConverted TruthValue, + tripRouteReceivedTime TimeStamp + } + + + + tripRouteAppProtocol OBJECT-TYPE + SYNTAX TripAppProtocol + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocol for which this entry of the routing table + is maintained." + ::= { tripRouteEntry 1 } + + tripRouteAddressFamily OBJECT-TYPE + SYNTAX TripAddressFamily + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the type of address for the destination + route." + ::= { tripRouteEntry 2 } + + tripRouteAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..105)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the address (prefix) of the family type given + by Address Family of the destination. It is the prefix + of addresses reachable from this gateway via the next + hop server. The SIZE value of 105 has been assigned due + to the sub identifier of object types length limitation + as defined in SMIv2." + REFERENCE + "RFC 3219, section 5.1.1.1." + ::= { tripRouteEntry 3 } + + tripRoutePeer OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier of the peer where the route information + was learned." + ::= { tripRouteEntry 4 } + + tripRouteTRIBMask OBJECT-TYPE + SYNTAX BITS { + adjTribIns(0), + extTrib(1), + locTrib(2), + adjTribOut(3) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which Telephony Routing Information Base (TRIB) + this entry belongs to. This is + a bit-map of possible types. If the bit has a value of + 1, then the entry is a member of the corresponding TRIB + type. If the bit has a value of 0 then the entry is not + a member of the TRIP type. The various bit positions + are: + + 0 adjTribIns The entry is of type adj-TRIBs-ins, + stores routing information that has + been learned from inbound UPDATE + messages. + 1 extTrib The entry is of type ext-TRIB, the + best route for a given destination. + 2 locTrib The entry is of type loc-TRIB contains + the local TRIP routing information + that the LS has selected. + 3 adjTribOut The entry is of type adj-TRIBs-out, + stores the information that the local + LS has selected for advertisement to + its external peers." + REFERENCE + "RFC 3291, section 3.5." + ::= { tripRouteEntry 5 } + + tripRouteAddressSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the version of the destination route + originated by the LS identified by + tripRouteAddressOriginatorId intra-domain attribute." + ::= { tripRouteEntry 6 } + + tripRouteAddressOriginatorId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is an intra-domain attribute indicating the + internal LS that originated the route into the ITAD." + ::= { tripRouteEntry 7 } + + + + + tripRouteNextHopServerIAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet Address of the tripRouteNextHopServer." + REFERENCE + "RFC 3291, section 3." + ::= { tripRouteEntry 8 } + + tripRouteNextHopServer OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the next hop that messages of a given protocol + destined for tripRouteAddress SHOULD be sent to. The type + of this address is determined by the value of the + tripRouteNextHopServerIAddrType object." + ::= { tripRouteEntry 9 } + + tripRouteNextHopServerPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port of the next hop server that this route + will use." + ::= { tripRouteEntry 10 } + + tripRouteNextHopServerItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the domain of the next hop." + ::= { tripRouteEntry 11 } + + tripRouteMultiExitDisc OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Multiple Exit Discriminator allows an LS to + discriminate between, and indicate preference for, + otherwise similar routes to a neighbouring domain. + A higher value represents a more preferred routing + object." + + + + REFERENCE + "RFC 3219, section 5.8" + ::= { tripRouteEntry 12 } + + tripRouteLocalPref OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicated the local LS's degree of preference for an + advertised route destination." + REFERENCE + "RFC 3219, section 4.3.4.7" + ::= { tripRouteEntry 13 } + + tripRouteAdvertisementPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the sequence of domains through which this + advertisement has passed. + + This object is probably best represented as sequence of + TripItads. For SMI compatibility, though, it is + represented as an OCTET STRING. This object is a sequence + of ITADs where each set of 4 octets corresponds to a TRIP + ITAD in network byte order." + REFERENCE + "RFC 3219, section 4.3.4.4" + ::= { tripRouteEntry 14 } + + tripRouteRoutedPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the ITADs through which messages sent using + this route would pass. These are a subset of + tripRouteAdvertisementPath. + + This object is probably best represented as sequence of + TripItads. For SMI compatibility, though, it is + represented as OCTET STRING. This object is a sequence + of ITADs where each set of 4 octets corresponds to a TRIP + ITAD in network byte order." + REFERENCE + "RFC 3219, section 4.3.4.5" + + + + ::= { tripRouteEntry 15 } + + tripRouteAtomicAggregate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates that a route MAY traverse domains not listed + in tripRouteRoutedPath. If an LS selects the less + specific route from a set of overlapping routes, then + this value returns TRUE." + REFERENCE + "RFC 3219, section 4.3.4.6" + ::= { tripRouteEntry 16 } + + tripRouteUnknown OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains one or more attributes that were not + understood, and because they were transitive, were dropped + during aggregation. They take the format of a triple + , of + variable length. If no attributes were dropped, this + returns an OCTET STRING of size 0." + REFERENCE + "RFC 3219, sections 4.3.1, 4.3.2.3" + ::= { tripRouteEntry 17 } + + tripRouteWithdrawn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if this route is to be removed from service + by the receiving LS." + ::= { tripRouteEntry 18 } + + tripRouteConverted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if this route has been converted to a + different application protocol than it had originally." + ::= { tripRouteEntry 19 } + + + + + tripRouteReceivedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this route was received." + ::= { tripRouteEntry 20 } + + -- + -- TRIP Received Route Community Table. + -- + + tripRouteCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a list of TRIP communities associated + with a route. Each instance of tripRouteTypeEntry that has + the tripRouteTypePeer object set to remote(2) has an + instance in the tripRouteTable as a parent. The objects + in this table are volatile and are refreshed after a + reboot." + REFERENCE + "RFC 3219, section 5.9." + ::= { tripMIBObjects 7 } + + tripRouteCommunityEntry OBJECT-TYPE + SYNTAX TripRouteCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about communities associated with a route. + An entry with a tripRouteAddress of 00 and a + tripRoutePeer of 0 refers to the local LS." + INDEX { applIndex, + tripRouteAppProtocol, + tripRouteAddressFamily, + tripRouteAddress, + tripRoutePeer, + tripRouteCommunityId + } + ::= { tripRouteCommunityTable 1 } + + TripRouteCommunityEntry ::= SEQUENCE { + tripRouteCommunityId TripCommunityId, + tripRouteCommunityItad TripItad + } + + + + tripRouteCommunityId OBJECT-TYPE + SYNTAX TripCommunityId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The community identifier." + ::= { tripRouteCommunityEntry 1 } + + tripRouteCommunityItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ITAD associated with this community." + ::= { tripRouteCommunityEntry 2 } + + -- + -- tripItadTopologyTable + -- + + tripItadTopologyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripItadTopologyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sequence of link connections between peers within an + ITAD. The objects in this table are volatile and are + refreshed after a reboot." + ::= { tripMIBObjects 8 } + + tripItadTopologyEntry OBJECT-TYPE + SYNTAX TripItadTopologyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a peer of the LS identified by + tripItadTopologyOrigId." + INDEX { applIndex, tripItadTopologyOrigId } + ::= { tripItadTopologyTable 1 } + + TripItadTopologyEntry ::= SEQUENCE { + tripItadTopologyOrigId TripId, + tripItadTopologySeqNum Unsigned32 + } + + tripItadTopologyOrigId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Indicates the internal LS that originated the ITAD + topology information into the ITAD." + ::= { tripItadTopologyEntry 1 } + + tripItadTopologySeqNum OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the version of the ITAD topology originated + by the LS identified by tripItadTopologyOrigId." + ::= { tripItadTopologyEntry 2 } + + -- + -- tripItadTopologyIdTable + -- + + tripItadTopologyIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripItadTopologyIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of other LS's within the ITAD domain that the + LS identified by tripItadTopologyOrigId is currently + peering. Each instance of tripItadTopologyIdEntry has an + instance in the tripItadTopologyTable as a parent. The + objects in this table are volatile and are refreshed + after a reboot." + ::= { tripMIBObjects 9 } + + tripItadTopologyIdEntry OBJECT-TYPE + SYNTAX TripItadTopologyIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a peer to the LS identified by + tripItadTopologyOrigId." + INDEX { applIndex, + tripItadTopologyOrigId, + tripItadTopologyId } + ::= { tripItadTopologyIdTable 1 } + + TripItadTopologyIdEntry ::= SEQUENCE { + tripItadTopologyId TripId + } + + + + + tripItadTopologyId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into this entry. Indicates the other location + servers within the ITAD domain that this LS identified + by tripItadTopologyOrigId is currently peering." + ::= { tripItadTopologyIdEntry 1 } + + -- + -- Notification objects + -- + + tripNotifApplIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the application Index. It is used + to bind this notification with a specific instance of + TRIP entity." + REFERENCE + "RFC 2788, section 3." + ::= { tripMIBNotifObjects 1 } + + tripNotifPeerAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type of Inet Address of the tripNotifPeerAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripMIBNotifObjects 2 } + + tripNotifPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IP address of this entry's TRIP peer LS. This object + contains the value of tripPeerRemoteAddr. The type of this + address is determined by the value of the + tripNotifPeerAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripMIBNotifObjects 3 } + + + + tripNotifPeerErrCode OBJECT-TYPE + SYNTAX INTEGER { + messageHeader(1), + openMessage(2), + updateMessage(3), + holdTimerExpired(4), + finiteStateMachine(5), + cease(6), + tripNotification(7) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Notification message of TRIP error. The meaning of this + value is applicable to the following functions: + + messageHeader(1) + - All errors detected while processing the TRIP message + header. + + openMessage(2) + - All errors detected while processing the OPEN message. + + updateMessage(3) + - All errors detected while processing the UPDATE + message. + + holdTimerExpired(4) + - A notification generated when the hold timer expires. + + finiteStateMachine(5) + - All errors detected by the TRIP Finite State Machine. + + cease(6) + - Any fatal error condition that the rest of the values + do not cover. + + tripNotification(7) + - Any error encountered while sending a notification + message." + ::= { tripMIBNotifObjects 4 } + + tripNotifPeerErrSubcode OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The sub error code associated with error code. The + + + + meaning of this value is dependent on the value of + tripNotifPeerErrCode. + + Message Header (1) Error Subcodes: + 1 - Bad Message Length. + 2 - Bad Message Type. + + OPEN Message (2) Error Subcodes: + 1 - Unsupported Version Number. + 2 - Bad Peer ITAD. + 3 - Bad TRIP Identifier. + 4 - Unsupported Optional Parameter. + 5 - Unacceptable Hold Time. + 6 - Unsupported Capability. + 7 - Capability Mismatch. + + UPDATE Message (3) Error Subcodes: + 1 - Malformed Attribute List. + 2 - Unrecognized Well-known Attribute. + 3 - Missing Well-known Mandatory Attribute. + 4 - Attribute Flags Error. + 5 - Attribute Length Error. + 6 - Invalid Attribute." + ::= { tripMIBNotifObjects 5 } + + -- + -- Notifications + -- + tripConnectionEstablished NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr + } + STATUS current + DESCRIPTION + "The TRIP Connection Established event is generated when + the TRIP finite state machine enters the ESTABLISHED + state." + ::= { tripMIBNotifications 1 } + + tripConnectionDropped NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr + } + STATUS current + DESCRIPTION + "The TRIP Connection Dropped event is generated when the + + + + TRIP finite state machine leaves the ESTABLISHED state." + ::= { tripMIBNotifications 2 } + + tripFSM NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "The trip FSM Event is generated when any error is + detected by the TRIP Finite State Machine." + ::= { tripMIBNotifications 3 } + + tripOpenMessageError NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "Errors detected while processing the OPEN message." + ::= { tripMIBNotifications 4 } + + tripUpdateMessageError NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "Errors detected while processing the UPDATE message." + ::= { tripMIBNotifications 5 } + + tripHoldTimerExpired NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + + + + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "The system does not receive successive messages within + the period specified by the negotiated Hold Time." + ::= { tripMIBNotifications 6 } + + tripConnectionCollision NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex } + STATUS current + DESCRIPTION + "A pair of LSs tried to simultaneously to establish a + transport connection to each other." + ::= { tripMIBNotifications 7 } + + tripCease NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "A TRIP peer MAY choose at any given time to close its TRIP + connection by sending this notification message. However, + the Cease notification message MUST NOT be used when a + fatal error occurs." + + ::= { tripMIBNotifications 8 } + + tripNotificationErr NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex } + STATUS current + DESCRIPTION + "Generated if there is an error detected in a TRIP + notification message sent with another cause. Note that + the TRIP notification referred to in this object is not + an SNMP notification, it is a specific message described + in the TRIP specification." + REFERENCE + "RFC 3219, section 6.4." + ::= { tripMIBNotifications 9 } + + -- + + + + -- Compliance Statements + -- + + tripMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for TRIP entities that + implement this MIB module in read-write mode, such + that it can be used for both monitoring and configuring + the TRIP entity. + + There is one INDEX object that cannot be represented in + the form of OBJECT clauses in SMIv2, but for which there + is a compliance requirement, expressed in OBJECT clause + form in this description: + + -- OBJECT tripRouteTypeAddrInetType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT tripRouteTypeAddr + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + -- + " + + MODULE -- this module + MANDATORY-GROUPS { tripConfigGroup, + tripPeerTableConfigGroup, + tripRouteGroup, + tripItadTopologyGroup, + tripPeerTableStatsGroup } + + GROUP tripNotificationGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotifObjectGroup MUST also be implemented." + + GROUP tripNotifObjectGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + + + + the tripNotificationGroup MUST also be implemented." + + OBJECT tripSupportedCommunityRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT tripPeerRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applRFC2788Group } + + ::= { tripMIBCompliances 1 } + tripMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for TRIP entities that + implement this MIB module in read only mode. Such TRIP + entities can then only be monitored, but not be + configured via this MIB module. + + In read-only mode, the manager will not be able to add, + remove or modify rows to any table, however the TRIP + application may modify, remove or add rows to a table. + + There is one INDEX object that cannot be represented in + the form of OBJECT clauses in SMIv2, but for which there + is a compliance requirement, expressed in OBJECT clause + form in this description: + + -- OBJECT tripRouteTypeAddrInetType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT tripRouteTypeAddr + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + + + + -- non-global IPv4 and IPv6 addresses. + -- + " + + MODULE -- this module + MANDATORY-GROUPS { tripConfigGroup, + tripPeerTableConfigGroup, + tripRouteGroup, + tripItadTopologyGroup, + tripPeerTableStatsGroup } + + GROUP tripNotificationGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotifObjectGroup MUST also be implemented." + + GROUP tripNotifObjectGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotificationGroup MUST also be implemented." + OBJECT tripCfgItad + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgAdminStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when implemented in read-only mode." + + OBJECT tripCfgPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMinItadOriginationInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMinRouteAdvertisementInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMaxPurgeTime + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgDisableTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityItad + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT tripPeerAdminStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when implemented in read-only mode." + + OBJECT tripPeerConnectRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerMaxRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerHoldTimeConfigured + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerKeepAliveConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerMaxPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerDisableTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applRFC2788Group } + + ::= { tripMIBCompliances 2 } + + -- + -- Object and event conformance groups + -- + + tripConfigGroup OBJECT-GROUP + OBJECTS { + tripCfgProtocolVersion, + tripCfgItad, + tripCfgIdentifier, + tripCfgOperStatus, + tripCfgAdminStatus, + tripCfgAddrIAddrType, + tripCfgAddr, + tripCfgPort, + + + + tripCfgMinItadOriginationInterval, + tripCfgMinRouteAdvertisementInterval, + tripCfgMaxPurgeTime, + tripCfgDisableTime, + tripCfgSendReceiveMode, + tripCfgStorage, + tripSupportedCommunityItad, + tripSupportedCommunityStorage, + tripRouteTypePeer, + tripSupportedCommunityRowStatus + } + STATUS current + DESCRIPTION + "The global objects for configuring trip." + ::= { tripMIBGroups 1 } + + tripPeerTableConfigGroup OBJECT-GROUP + OBJECTS { + tripPeerIdentifier, + tripPeerState, + tripPeerAdminStatus, + tripPeerNegotiatedVersion, + tripPeerSendReceiveMode, + tripPeerRemoteItad, + tripPeerConnectRetryInterval, + tripPeerMaxRetryInterval, + tripPeerHoldTime, + tripPeerKeepAlive, + tripPeerHoldTimeConfigured, + tripPeerKeepAliveConfigured, + tripPeerMaxPurgeTime, + tripPeerDisableTime, + tripPeerLearned, + tripPeerStorage, + tripPeerRowStatus + } + + STATUS current + DESCRIPTION + "The global objects for configuring the TRIP peer + table." + ::= { tripMIBGroups 2 } + + tripPeerTableStatsGroup OBJECT-GROUP + OBJECTS { + tripPeerInUpdates, + tripPeerOutUpdates, + tripPeerInTotalMessages, + + + + tripPeerOutTotalMessages, + tripPeerFsmEstablishedTransitions, + tripPeerFsmEstablishedTime, + tripPeerInUpdateElapsedTime, + tripPeerStateChangeTime + } + STATUS current + DESCRIPTION + "The global statistics the TRIP peer table." + ::= { tripMIBGroups 3 } + + tripRouteGroup OBJECT-GROUP + OBJECTS { + tripRouteTRIBMask, + tripRouteAddressSequenceNumber, + tripRouteAddressOriginatorId, + tripRouteNextHopServerIAddrType, + tripRouteNextHopServer, + tripRouteNextHopServerPort, + tripRouteNextHopServerItad, + tripRouteMultiExitDisc, + tripRouteLocalPref, + tripRouteAdvertisementPath, + tripRouteRoutedPath, + tripRouteAtomicAggregate, + tripRouteUnknown, + tripRouteWithdrawn, + tripRouteConverted, + tripRouteReceivedTime, + tripRouteCommunityItad + } + + STATUS current + DESCRIPTION + "The global objects for configuring route attribute." + ::= { tripMIBGroups 4 } + tripItadTopologyGroup OBJECT-GROUP + OBJECTS { + tripItadTopologySeqNum, + tripItadTopologyId + } + STATUS current + DESCRIPTION + "The objects that define the TRIP ITAD topology." + ::= { tripMIBGroups 5 } + + tripNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + + + + tripConnectionEstablished, + tripConnectionDropped, + tripFSM, + tripOpenMessageError, + tripUpdateMessageError, + tripHoldTimerExpired, + tripConnectionCollision, + tripCease, + tripNotificationErr + } + STATUS current + DESCRIPTION + "A collection of notifications defined for TRIP." + ::= { tripMIBGroups 6 } + + tripNotifObjectGroup OBJECT-GROUP + OBJECTS { + tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode + } + STATUS current + DESCRIPTION + "The collection of objects that specify information for + TRIP notifications." + ::= { tripMIBGroups 7 } + +END diff --git a/mibs/ietf/TRIP-TC-MIB b/mibs/ietf/TRIP-TC-MIB new file mode 100644 index 0000000..3790880 --- /dev/null +++ b/mibs/ietf/TRIP-TC-MIB @@ -0,0 +1,139 @@ +TRIP-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Unsigned32, + Integer32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +tripTC MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- Sep 02, 2004 + ORGANIZATION "IETF IPTel Working Group. + Mailing list: iptel@lists.bell-labs.com" + CONTACT-INFO + "Co-editor David Zinman + postal: 265 Ridley Blvd. + Toronto ON, M5M 4N8 + Canada + email: dzinman@rogers.com + phone: +1 416 433 4298 + + Co-editor: David Walker + Sedna Wireless Inc. + postal: 495 March Road, Suite 500 + Ottawa, ON K2K 3G1 + Canada + email: david.walker@sedna-wireless.com + phone: +1 613 878 8142 + + Co-editor Jianping Jiang + Syndesis Limited + postal: 30 Fulton Way + Richmond Hill, ON L4B 1J5 + Canada + + email: jjiang@syndesis.com + phone: +1 905 886-7818 x2515 + " + DESCRIPTION + "Initial version of TRIP (Telephony Routing Over IP) + MIB Textual Conventions module used by other + + + + TRIP-related MIB Modules. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3872, see the RFC itself + for full legal notices." + REVISION "200409020000Z" -- Sep 02, 2004 + DESCRIPTION + "The initial version, Published as RFC 3872." + ::= { mib-2 115 } + +-- +-- Textual Conventions +-- + +TripItad ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The values for identifying the IP Telephony + Administrative Domain (ITAD)." + SYNTAX Unsigned32 (0..4294967295) + +TripId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The TRIP Identifier uniquely identifies a LS within its + ITAD. It is a 4 octet unsigned integer that may, but not + necessarily, represent the IPv4 address of a Location + Server. Where bytes 1-4 of the Unsigned32 represent + 1-4 bytes of the IPv4 address in network-byte order. For + an IPv6 network, TripId will not represent the IPv6 + address." + SYNTAX Unsigned32 (0..4294967295) + +TripAddressFamily ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A type of address for a TRIP route. Address families + defined within this MIB module are: + + Code Address Family + 1 Decimal Routing Numbers + 2 PentaDecimal Routing Numbers + 3 E.164 Numbers + 255 An other type of address family" + + SYNTAX INTEGER + { decimal(1), pentadecimal(2), e164(3), other(255) } + + + + +TripAppProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The application protocol used for communication with TRIP + Location Servers. Protocols defined in this MIB Module + are: + + Code Protocol + 1 SIP + 2 H.323-H.225.0-Q.931 + 3 H.323-H.225.0-RAS + 4 H.323-H.225.0-Annex-G + 255 An other type of application protocol" + + SYNTAX INTEGER + { sip(1), q931(2), ras(3), annexG(4), other(255) } + +TripCommunityId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The range of legal values for a TRIP Community + Identifier." + SYNTAX Unsigned32 (0..4294967295) + +TripProtocolVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The version number of the TRIP protocol." + SYNTAX Integer32 (1..255) + +TripSendReceiveMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The operational mode of the TRIP application. Possible + values are: + 1 - Send Receive mode + 2 - Send only mode + 3 - Receive Only mode" + SYNTAX INTEGER { sendReceive(1), sendOnly(2), receiveOnly(3) } + +END diff --git a/mibs/ietf/TUNNEL-MIB b/mibs/ietf/TUNNEL-MIB new file mode 100644 index 0000000..615faa6 --- /dev/null +++ b/mibs/ietf/TUNNEL-MIB @@ -0,0 +1,774 @@ +TUNNEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, transmission, + Integer32, IpAddress FROM SNMPv2-SMI -- [RFC2578] + + RowStatus, StorageType FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + InetAddressType, + InetAddress FROM INET-ADDRESS-MIB -- [RFC4001] + + IPv6FlowLabelOrAny FROM IPV6-FLOW-LABEL-MIB -- [RFC3595] + + ifIndex, + InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + + IANAtunnelType FROM IANAifType-MIB; -- [IFTYPE] + +tunnelMIB MODULE-IDENTITY + LAST-UPDATED "200505160000Z" -- May 16, 2005 + ORGANIZATION "IETF IP Version 6 (IPv6) Working Group" + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of IP Tunnels, + independent of the specific encapsulation scheme in + use. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4087; see + the RFC itself for full legal notices." + + + + REVISION "200505160000Z" -- May 16, 2005 + DESCRIPTION + "IPv4-specific objects were deprecated, including + tunnelIfLocalAddress, tunnelIfRemoteAddress, the + tunnelConfigTable, and the tunnelMIBBasicGroup. + + Added IP version-agnostic objects that should be used + instead, including tunnelIfAddressType, + tunnelIfLocalInetAddress, tunnelIfRemoteInetAddress, + the tunnelInetConfigTable, and the + tunnelIMIBInetGroup. + + The new tunnelIfLocalInetAddress and + tunnelIfRemoteInetAddress objects are read-write, + rather than read-only. + + Updated DESCRIPTION clauses of existing version- + agnostic objects (e.g., tunnelIfTOS) that contained + IPv4-specific text to cover IPv6 as well. + + Added tunnelIfFlowLabel for tunnels over IPv6. + + The encapsulation method was previously an INTEGER + type, and is now an IANA-maintained textual + convention. + + Published as RFC 4087." + REVISION "199908241200Z" -- August 24, 1999 + DESCRIPTION + "Initial version, published as RFC 2667." + ::= { transmission 131 } + +tunnelMIBObjects OBJECT IDENTIFIER ::= { tunnelMIB 1 } + +tunnel OBJECT IDENTIFIER ::= { tunnelMIBObjects 1 } + +-- the IP Tunnel MIB-Group +-- +-- a collection of objects providing information about +-- IP Tunnels + +tunnelIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on + configured tunnels." + + + + ::= { tunnel 1 } + +tunnelIfEntry OBJECT-TYPE + SYNTAX TunnelIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel." + INDEX { ifIndex } + ::= { tunnelIfTable 1 } + +TunnelIfEntry ::= SEQUENCE { + tunnelIfLocalAddress IpAddress, -- deprecated + tunnelIfRemoteAddress IpAddress, -- deprecated + tunnelIfEncapsMethod IANAtunnelType, + tunnelIfHopLimit Integer32, + tunnelIfSecurity INTEGER, + tunnelIfTOS Integer32, + tunnelIfFlowLabel IPv6FlowLabelOrAny, + tunnelIfAddressType InetAddressType, + tunnelIfLocalInetAddress InetAddress, + tunnelIfRemoteInetAddress InetAddress, + tunnelIfEncapsLimit Integer32 +} + +tunnelIfLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The address of the local endpoint of the tunnel + (i.e., the source address used in the outer IP + header), or 0.0.0.0 if unknown or if the tunnel is + over IPv6. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelIfLocalInetAddress." + ::= { tunnelIfEntry 1 } + +tunnelIfRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The address of the remote endpoint of the tunnel + (i.e., the destination address used in the outer IP + header), or 0.0.0.0 if unknown, or an IPv6 address, or + + + + the tunnel is not a point-to-point link (e.g., if it + is a 6to4 tunnel). + + Since this object does not support IPv6, it is + deprecated in favor of tunnelIfRemoteInetAddress." + ::= { tunnelIfEntry 2 } + +tunnelIfEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encapsulation method used by the tunnel." + ::= { tunnelIfEntry 3 } + +tunnelIfHopLimit OBJECT-TYPE + SYNTAX Integer32 (0 | 1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IPv4 TTL or IPv6 Hop Limit to use in the outer IP + header. A value of 0 indicates that the value is + copied from the payload's header." + ::= { tunnelIfEntry 4 } + +tunnelIfSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), -- no security + ipsec(2), -- IPsec security + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The method used by the tunnel to secure the outer IP + header. The value ipsec indicates that IPsec is used + between the tunnel endpoints for authentication or + encryption or both. More specific security-related + information may be available in a MIB module for the + security protocol in use." + ::= { tunnelIfEntry 5 } + +tunnelIfTOS OBJECT-TYPE + SYNTAX Integer32 (-2..63) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to set the high 6 bits (the + + + + differentiated services codepoint) of the IPv4 TOS or + IPv6 Traffic Class in the outer IP header. A value of + -1 indicates that the bits are copied from the + payload's header. A value of -2 indicates that a + traffic conditioner is invoked and more information + may be available in a traffic conditioner MIB module. + A value between 0 and 63 inclusive indicates that the + bit field is set to the indicated value. + + Note: instead of the name tunnelIfTOS, a better name + would have been tunnelIfDSCPMethod, but the existing + name appeared in RFC 2667 and existing objects cannot + be renamed." + ::= { tunnelIfEntry 6 } + +tunnelIfFlowLabel OBJECT-TYPE + SYNTAX IPv6FlowLabelOrAny + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to set the IPv6 Flow Label value. + This object need not be present in rows where + tunnelIfAddressType indicates the tunnel is not over + IPv6. A value of -1 indicates that a traffic + conditioner is invoked and more information may be + available in a traffic conditioner MIB. Any other + value indicates that the Flow Label field is set to + the indicated value." + ::= { tunnelIfEntry 7 } + +tunnelIfAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address in the corresponding + tunnelIfLocalInetAddress and tunnelIfRemoteInetAddress + objects." + ::= { tunnelIfEntry 8 } + +tunnelIfLocalInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the local endpoint of the tunnel + (i.e., the source address used in the outer IP + header). If the address is unknown, the value is + + + + 0.0.0.0 for IPv4 or :: for IPv6. The type of this + object is given by tunnelIfAddressType." + ::= { tunnelIfEntry 9 } + +tunnelIfRemoteInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the remote endpoint of the tunnel + (i.e., the destination address used in the outer IP + header). If the address is unknown or the tunnel is + not a point-to-point link (e.g., if it is a 6to4 + tunnel), the value is 0.0.0.0 for tunnels over IPv4 or + :: for tunnels over IPv6. The type of this object is + given by tunnelIfAddressType." + ::= { tunnelIfEntry 10 } + +tunnelIfEncapsLimit OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of additional encapsulations + permitted for packets undergoing encapsulation at this + node. A value of -1 indicates that no limit is + present (except as a result of the packet size)." + REFERENCE "RFC 2473, section 4.1.1" + ::= { tunnelIfEntry 11 } + +tunnelConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table containing information on + configured tunnels. This table can be used to map a + set of tunnel endpoints to the associated ifIndex + value. It can also be used for row creation. Note + that every row in the tunnelIfTable with a fixed IPv4 + destination address should have a corresponding row in + the tunnelConfigTable, regardless of whether it was + created via SNMP. + + Since this table does not support IPv6, it is + deprecated in favor of tunnelInetConfigTable." + ::= { tunnel 2 } + + + + +tunnelConfigEntry OBJECT-TYPE + SYNTAX TunnelConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel. + + Since this entry does not support IPv6, it is + deprecated in favor of tunnelInetConfigEntry." + INDEX { tunnelConfigLocalAddress, + tunnelConfigRemoteAddress, + tunnelConfigEncapsMethod, + tunnelConfigID } + ::= { tunnelConfigTable 1 } + +TunnelConfigEntry ::= SEQUENCE { + tunnelConfigLocalAddress IpAddress, + tunnelConfigRemoteAddress IpAddress, + tunnelConfigEncapsMethod IANAtunnelType, + tunnelConfigID Integer32, + tunnelConfigIfIndex InterfaceIndexOrZero, + tunnelConfigStatus RowStatus +} + +tunnelConfigLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The address of the local endpoint of the tunnel, or + 0.0.0.0 if the device is free to choose any of its + addresses at tunnel establishment time. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigLocalAddress." + ::= { tunnelConfigEntry 1 } + +tunnelConfigRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The address of the remote endpoint of the tunnel. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigRemoteAddress." + ::= { tunnelConfigEntry 2 } + + + +tunnelConfigEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The encapsulation method used by the tunnel. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigEncapsMethod." + ::= { tunnelConfigEntry 3 } + +tunnelConfigID OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An identifier used to distinguish between multiple + tunnels of the same encapsulation method, with the + same endpoints. If the encapsulation protocol only + allows one tunnel per set of endpoint addresses (such + as for GRE or IP-in-IP), the value of this object is + 1. For encapsulation methods (such as L2F) which + allow multiple parallel tunnels, the manager is + responsible for choosing any ID which does not + conflict with an existing row, such as choosing a + random number. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigID." + ::= { tunnelConfigEntry 4 } + +tunnelConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "If the value of tunnelConfigStatus for this row is + active, then this object contains the value of ifIndex + corresponding to the tunnel interface. A value of 0 + is not legal in the active state, and means that the + interface index has not yet been assigned. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigIfIndex." + ::= { tunnelConfigEntry 5 } + +tunnelConfigStatus OBJECT-TYPE + SYNTAX RowStatus + + + + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. The + agent need not support setting this object to + createAndWait or notInService since there are no other + writable objects in this table, and writable objects + in rows of corresponding tables such as the + tunnelIfTable may be modified while this row is + active. + + To create a row in this table for an encapsulation + method which does not support multiple parallel + tunnels with the same endpoints, the management + station should simply use a tunnelConfigID of 1, and + set tunnelConfigStatus to createAndGo. For + encapsulation methods such as L2F which allow multiple + parallel tunnels, the management station may select a + pseudo-random number to use as the tunnelConfigID and + set tunnelConfigStatus to createAndGo. In the event + that this ID is already in use and an + inconsistentValue is returned in response to the set + operation, the management station should simply select + a new pseudo-random number and retry the operation. + + Creating a row in this table will cause an interface + index to be assigned by the agent in an + implementation-dependent manner, and corresponding + rows will be instantiated in the ifTable and the + tunnelIfTable. The status of this row will become + active as soon as the agent assigns the interface + index, regardless of whether the interface is + operationally up. + + Deleting a row in this table will likewise delete the + corresponding row in the ifTable and in the + tunnelIfTable. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigStatus." + ::= { tunnelConfigEntry 6 } + +tunnelInetConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelInetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The (conceptual) table containing information on + configured tunnels. This table can be used to map a + set of tunnel endpoints to the associated ifIndex + value. It can also be used for row creation. Note + that every row in the tunnelIfTable with a fixed + destination address should have a corresponding row in + the tunnelInetConfigTable, regardless of whether it + was created via SNMP." + ::= { tunnel 3 } + +tunnelInetConfigEntry OBJECT-TYPE + SYNTAX TunnelInetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel. Note that there is + a 128 subid maximum for object OIDs. Implementers + need to be aware that if the total number of octets in + tunnelInetConfigLocalAddress and + tunnelInetConfigRemoteAddress exceeds 110 then OIDs of + column instances in this table will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3. In practice this is not expected + to be a problem since IPv4 and IPv6 addresses will not + cause the limit to be reached, but if other types are + supported by an agent, care must be taken to ensure + that the sum of the lengths do not cause the limit to + be exceeded." + INDEX { tunnelInetConfigAddressType, + tunnelInetConfigLocalAddress, + tunnelInetConfigRemoteAddress, + tunnelInetConfigEncapsMethod, + tunnelInetConfigID } + ::= { tunnelInetConfigTable 1 } + +TunnelInetConfigEntry ::= SEQUENCE { + tunnelInetConfigAddressType InetAddressType, + tunnelInetConfigLocalAddress InetAddress, + tunnelInetConfigRemoteAddress InetAddress, + tunnelInetConfigEncapsMethod IANAtunnelType, + tunnelInetConfigID Integer32, + tunnelInetConfigIfIndex InterfaceIndexOrZero, + tunnelInetConfigStatus RowStatus, + tunnelInetConfigStorageType StorageType +} + +tunnelInetConfigAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type over which the tunnel encapsulates + packets." + ::= { tunnelInetConfigEntry 1 } + +tunnelInetConfigLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the local endpoint of the tunnel, or + 0.0.0.0 (for IPv4) or :: (for IPv6) if the device is + free to choose any of its addresses at tunnel + establishment time." + ::= { tunnelInetConfigEntry 2 } + +tunnelInetConfigRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the remote endpoint of the tunnel." + ::= { tunnelInetConfigEntry 3 } + +tunnelInetConfigEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The encapsulation method used by the tunnel." + ::= { tunnelInetConfigEntry 4 } + +tunnelInetConfigID OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier used to distinguish between multiple + tunnels of the same encapsulation method, with the + same endpoints. If the encapsulation protocol only + allows one tunnel per set of endpoint addresses (such + as for GRE or IP-in-IP), the value of this object is + 1. For encapsulation methods (such as L2F) which + allow multiple parallel tunnels, the manager is + responsible for choosing any ID which does not + + + + conflict with an existing row, such as choosing a + random number." + ::= { tunnelInetConfigEntry 5 } + +tunnelInetConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of tunnelInetConfigStatus for this row + is active, then this object contains the value of + ifIndex corresponding to the tunnel interface. A + value of 0 is not legal in the active state, and means + that the interface index has not yet been assigned." + ::= { tunnelInetConfigEntry 6 } + +tunnelInetConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. The + agent need not support setting this object to + createAndWait or notInService since there are no other + writable objects in this table, and writable objects + in rows of corresponding tables such as the + tunnelIfTable may be modified while this row is + active. + + To create a row in this table for an encapsulation + method which does not support multiple parallel + tunnels with the same endpoints, the management + station should simply use a tunnelInetConfigID of 1, + and set tunnelInetConfigStatus to createAndGo. For + encapsulation methods such as L2F which allow multiple + parallel tunnels, the management station may select a + pseudo-random number to use as the tunnelInetConfigID + and set tunnelInetConfigStatus to createAndGo. In the + event that this ID is already in use and an + inconsistentValue is returned in response to the set + operation, the management station should simply select + a new pseudo-random number and retry the operation. + + Creating a row in this table will cause an interface + index to be assigned by the agent in an + implementation-dependent manner, and corresponding + rows will be instantiated in the ifTable and the + + + + tunnelIfTable. The status of this row will become + active as soon as the agent assigns the interface + index, regardless of whether the interface is + operationally up. + + Deleting a row in this table will likewise delete the + corresponding row in the ifTable and in the + tunnelIfTable." + ::= { tunnelInetConfigEntry 7 } + +tunnelInetConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this row. If the row is + permanent(4), no objects in the row need be writable." + ::= { tunnelInetConfigEntry 8 } + +-- conformance information + +tunnelMIBConformance + OBJECT IDENTIFIER ::= { tunnelMIB 2 } +tunnelMIBCompliances + OBJECT IDENTIFIER ::= { tunnelMIBConformance 1 } +tunnelMIBGroups OBJECT IDENTIFIER ::= { tunnelMIBConformance 2 } + +-- compliance statements + +tunnelMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The (deprecated) IPv4-only compliance statement for + the IP Tunnel MIB. + + This is deprecated in favor of + tunnelMIBInetFullCompliance and + tunnelMIBInetReadOnlyCompliance." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBBasicGroup } + + OBJECT tunnelIfHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfTOS + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT tunnelConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tunnelMIBCompliances 1 } + +tunnelMIBInetFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance statement for the IP Tunnel MIB." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBInetGroup } + + OBJECT tunnelIfAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation only needs to + support the addresses it actually supports on the + device." + ::= { tunnelMIBCompliances 2 } + +tunnelMIBInetReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The read-only compliance statement for the IP Tunnel + MIB." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBInetGroup } + + OBJECT tunnelIfHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfTOS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfFlowLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT tunnelIfAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + + An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation only needs to + support the addresses it actually supports on the + device." + + OBJECT tunnelIfLocalInetAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfRemoteInetAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfEncapsLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelInetConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT tunnelInetConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tunnelMIBCompliances 3 } + +-- units of conformance + +tunnelMIBBasicGroup OBJECT-GROUP + OBJECTS { tunnelIfLocalAddress, tunnelIfRemoteAddress, + tunnelIfEncapsMethod, tunnelIfHopLimit, tunnelIfTOS, + tunnelIfSecurity, tunnelConfigIfIndex, tunnelConfigStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects to support basic management + + + + of IPv4 Tunnels. Since this group cannot support + IPv6, it is deprecated in favor of + tunnelMIBInetGroup." + ::= { tunnelMIBGroups 1 } + +tunnelMIBInetGroup OBJECT-GROUP + OBJECTS { tunnelIfAddressType, tunnelIfLocalInetAddress, + tunnelIfRemoteInetAddress, tunnelIfEncapsMethod, + tunnelIfEncapsLimit, + tunnelIfHopLimit, tunnelIfTOS, tunnelIfFlowLabel, + tunnelIfSecurity, tunnelInetConfigIfIndex, + tunnelInetConfigStatus, tunnelInetConfigStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support basic management + of IPv4 and IPv6 Tunnels." + ::= { tunnelMIBGroups 2 } + +END diff --git a/mibs/ietf/UDP-MIB b/mibs/ietf/UDP-MIB new file mode 100644 index 0000000..b947b81 --- /dev/null +++ b/mibs/ietf/UDP-MIB @@ -0,0 +1,579 @@ +UDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64, + Unsigned32, IpAddress, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; + +udpMIB MODULE-IDENTITY + LAST-UPDATED "200505200000Z" -- May 20, 2005 + ORGANIZATION + "IETF IPv6 Working Group + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Bill Fenner (editor) + + AT&T Labs -- Research + 75 Willow Rd. + Menlo Park, CA 94025 + + Phone: +1 650 330-7893 + Email: + + John Flick (editor) + + Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5557 + Roseville, CA 95747 + + Phone: +1 916 785 4018 + Email: + + Send comments to " + + + + DESCRIPTION + "The MIB module for managing UDP implementations. + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4113; + see the RFC itself for full legal notices." + REVISION "200505200000Z" -- May 20, 2005 + DESCRIPTION + "IP version neutral revision, incorporating the + following revisions: + + - Added udpHCInDatagrams and udpHCOutDatagrams in order + to provide high-capacity counters for fast networks. + - Added text to the descriptions of all counter objects + to indicate how discontinuities are detected. + - Deprecated the IPv4-specific udpTable and replaced it + with the version neutral udpEndpointTable. This + table includes support for connected UDP endpoints + and support for identification of the operating + system process associated with a UDP endpoint. + - Deprecated the udpGroup and replaced it with object + groups representing the current set of objects. + - Deprecated udpMIBCompliance and replaced it with + udpMIBCompliance2, which includes the compliance + information for the new object groups. + + This version published as RFC 4113." + REVISION "199411010000Z" -- November 1, 1994 + DESCRIPTION + "Initial SMIv2 version, published as RFC 2013." + REVISION "199103310000Z" -- March 31, 1991 + DESCRIPTION + "The initial revision of this MIB module was part of + MIB-II, published as RFC 1213." + ::= { mib-2 50 } + +-- the UDP group + +udp OBJECT IDENTIFIER ::= { mib-2 7 } + +udpInDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams delivered to UDP + users. + + + + + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 1 } + +udpNoPorts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received UDP datagrams for which + there was no application at the destination port. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 2 } + +udpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 3 } + +udpOutDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams sent from this + entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 4 } + + + +udpHCInDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams delivered to UDP + users, for devices that can receive more than 1 + million UDP datagrams per second. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 8 } + +udpHCOutDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams sent from this + entity, for devices that can transmit more than 1 + million UDP datagrams per second. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 9 } + +-- +-- { udp 6 } was defined as the ipv6UdpTable in RFC2454's +-- IPV6-UDP-MIB. This RFC obsoletes RFC 2454, so { udp 6 } is +-- obsoleted. +-- + +-- The UDP "Endpoint" table. + +udpEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about this entity's UDP + endpoints on which a local application is currently + accepting or sending datagrams. + + + + + + The address type in this table represents the address + type used for the communication, irrespective of the + higher-layer abstraction. For example, an application + using IPv6 'sockets' to communicate via IPv4 between + ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use + InetAddressType ipv4(1). + + Unlike the udpTable in RFC 2013, this table also allows + the representation of an application that completely + specifies both local and remote addresses and ports. A + listening application is represented in three possible + ways: + + 1) An application that is willing to accept both IPv4 + and IPv6 datagrams is represented by a + udpEndpointLocalAddressType of unknown(0) and a + udpEndpointLocalAddress of ''h (a zero-length + octet-string). + + 2) An application that is willing to accept only IPv4 + or only IPv6 datagrams is represented by a + udpEndpointLocalAddressType of the appropriate + address type and a udpEndpointLocalAddress of + '0.0.0.0' or '::' respectively. + + 3) An application that is listening for datagrams only + for a specific IP address but from any remote + system is represented by a + udpEndpointLocalAddressType of the appropriate + address type, with udpEndpointLocalAddress + specifying the local address. + + In all cases where the remote is a wildcard, the + udpEndpointRemoteAddressType is unknown(0), the + udpEndpointRemoteAddress is ''h (a zero-length + octet-string), and the udpEndpointRemotePort is 0. + + If the operating system is demultiplexing UDP packets + by remote address and port, or if the application has + 'connected' the socket specifying a default remote + address and port, the udpEndpointRemote* values should + be used to reflect this." + ::= { udp 7 } + +udpEndpointEntry OBJECT-TYPE + SYNTAX UdpEndpointEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Information about a particular current UDP endpoint. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + udpEndpointLocalAddress and udpEndpointRemoteAddress + exceeds 111, then OIDs of column instances in this table + will have more than 128 sub-identifiers and cannot be + accessed using SNMPv1, SNMPv2c, or SNMPv3." + INDEX { udpEndpointLocalAddressType, + udpEndpointLocalAddress, + udpEndpointLocalPort, + udpEndpointRemoteAddressType, + udpEndpointRemoteAddress, + udpEndpointRemotePort, + udpEndpointInstance } + ::= { udpEndpointTable 1 } + +UdpEndpointEntry ::= SEQUENCE { + udpEndpointLocalAddressType InetAddressType, + udpEndpointLocalAddress InetAddress, + udpEndpointLocalPort InetPortNumber, + udpEndpointRemoteAddressType InetAddressType, + udpEndpointRemoteAddress InetAddress, + udpEndpointRemotePort InetPortNumber, + udpEndpointInstance Unsigned32, + udpEndpointProcess Unsigned32 + } + +udpEndpointLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpEndpointLocalAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all local IP addresses are + accepted." + ::= { udpEndpointEntry 1 } + +udpEndpointLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this UDP endpoint. + + The value of this object can be represented in three + + + + possible ways, depending on the characteristics of the + listening application: + + 1. For an application that is willing to accept both + IPv4 and IPv6 datagrams, the value of this object + must be ''h (a zero-length octet-string), with + the value of the corresponding instance of the + udpEndpointLocalAddressType object being unknown(0). + + 2. For an application that is willing to accept only IPv4 + or only IPv6 datagrams, the value of this object + must be '0.0.0.0' or '::', respectively, while the + corresponding instance of the + udpEndpointLocalAddressType object represents the + appropriate address type. + + 3. For an application that is listening for data + destined only to a specific IP address, the value + of this object is the specific IP address for which + this node is receiving packets, with the + corresponding instance of the + udpEndpointLocalAddressType object representing the + appropriate address type. + + As this object is used in the index for the + udpEndpointTable, implementors of this table should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; else the information + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { udpEndpointEntry 2 } + +udpEndpointLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP endpoint." + ::= { udpEndpointEntry 3 } + +udpEndpointRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpEndpointRemoteAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all remote IP addresses are + accepted. Also, note that some combinations of + + + + udpEndpointLocalAdressType and + udpEndpointRemoteAddressType are not supported. In + particular, if the value of this object is not + unknown(0), it is expected to always refer to the + same IP version as udpEndpointLocalAddressType." + ::= { udpEndpointEntry 4 } + +udpEndpointRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this UDP endpoint. If + datagrams from any remote system are to be accepted, + this value is ''h (a zero-length octet-string). + Otherwise, it has the type described by + udpEndpointRemoteAddressType and is the address of the + remote system from which datagrams are to be accepted + (or to which all datagrams will be sent). + + As this object is used in the index for the + udpEndpointTable, implementors of this table should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; else the information + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { udpEndpointEntry 5 } + +udpEndpointRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this UDP endpoint. If + datagrams from any remote system are to be accepted, + this value is zero." + ::= { udpEndpointEntry 6 } + +udpEndpointInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The instance of this tuple. This object is used to + distinguish among multiple processes 'connected' to + the same UDP endpoint. For example, on a system + implementing the BSD sockets interface, this would be + used to support the SO_REUSEADDR and SO_REUSEPORT + socket options." + + + + ::= { udpEndpointEntry 7 } + +udpEndpointProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this endpoint, or zero if there is no such process. + This value is expected to be the same as + HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB:: + sysApplElmtRunIndex for some row in the appropriate + tables." + ::= { udpEndpointEntry 8 } + +-- The deprecated UDP Listener table + +-- The deprecated UDP listener table only contains information +-- about this entity's IPv4 UDP end-points on which a local +-- application is currently accepting datagrams. It does not +-- provide more detailed connection information, or information +-- about IPv6 endpoints. + +udpTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table containing IPv4-specific UDP listener + information. It contains information about all local + IPv4 UDP end-points on which an application is + currently accepting datagrams. This table has been + deprecated in favor of the version neutral + udpEndpointTable." + ::= { udp 5 } + +udpEntry OBJECT-TYPE + SYNTAX UdpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Information about a particular current UDP listener." + INDEX { udpLocalAddress, udpLocalPort } + ::= { udpTable 1 } + +UdpEntry ::= SEQUENCE { + udpLocalAddress IpAddress, + udpLocalPort Integer32 + + + +} + +udpLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local IP address for this UDP listener. In the + case of a UDP listener that 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 Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpEntry 2 } + +-- conformance information + +udpMIBConformance OBJECT IDENTIFIER ::= { udpMIB 2 } +udpMIBCompliances OBJECT IDENTIFIER ::= { udpMIBConformance 1 } +udpMIBGroups OBJECT IDENTIFIER ::= { udpMIBConformance 2 } + +-- compliance statements + +udpMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement + UDP. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, but + for which we have the following compliance + requirements, expressed in OBJECT clause form in this + description clause: + + -- OBJECT udpEndpointLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(5) is not required. + -- OBJECT udpEndpointLocalAddress + + + + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + -- OBJECT udpEndpointRemoteAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(5) is not required. + -- OBJECT udpEndpointRemoteAddress + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + " + MODULE -- this module + MANDATORY-GROUPS { udpBaseGroup, udpEndpointGroup } + GROUP udpHCGroup + DESCRIPTION + "This group is mandatory for systems that + are capable of receiving or transmitting more than + 1 million UDP datagrams per second. 1 million + datagrams per second will cause a Counter32 to + wrap in just over an hour." + ::= { udpMIBCompliances 2 } + +udpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for IPv4-only systems that + implement UDP. For IP version independence, this + compliance statement is deprecated in favor of + udpMIBCompliance2. However, agents are still + encouraged to implement these objects in order to + interoperate with the deployed base of managers." + MODULE -- this module + MANDATORY-GROUPS { udpGroup } + ::= { udpMIBCompliances 1 } + +-- units of conformance + +udpGroup OBJECT-GROUP + OBJECTS { udpInDatagrams, udpNoPorts, + udpInErrors, udpOutDatagrams, + udpLocalAddress, udpLocalPort } + + + + STATUS deprecated + DESCRIPTION + "The deprecated group of objects providing for + management of UDP over IPv4." + ::= { udpMIBGroups 1 } + +udpBaseGroup OBJECT-GROUP + OBJECTS { udpInDatagrams, udpNoPorts, udpInErrors, + udpOutDatagrams } + STATUS current + DESCRIPTION + "The group of objects providing for counters of UDP + statistics." + ::= { udpMIBGroups 2 } + +udpHCGroup OBJECT-GROUP + OBJECTS { udpHCInDatagrams, udpHCOutDatagrams } + STATUS current + DESCRIPTION + "The group of objects providing for counters of high + speed UDP implementations." + ::= { udpMIBGroups 3 } + +udpEndpointGroup OBJECT-GROUP + OBJECTS { udpEndpointProcess } + STATUS current + DESCRIPTION + "The group of objects providing for the IP version + independent management of UDP 'endpoints'." + ::= { udpMIBGroups 4 } + +END diff --git a/mibs/ietf/UDPLITE-MIB b/mibs/ietf/UDPLITE-MIB new file mode 100644 index 0000000..2217e93 --- /dev/null +++ b/mibs/ietf/UDPLITE-MIB @@ -0,0 +1,548 @@ +UDPLITE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + mib-2, Unsigned32, + Counter32, Counter64 FROM SNMPv2-SMI -- [RFC2578] + + TimeStamp FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + InetAddress, + InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; -- [RFC4001] + +udpliteMIB MODULE-IDENTITY + LAST-UPDATED "200712180000Z" -- 18 December 2007 + ORGANIZATION "IETF TSV Working Group (TSVWG)" + CONTACT-INFO + "IETF TSV Working Group + http://www.ietf.org/html.charters/tsvwg-charter.html + Mailing List: tsvwg@ietf.org + + + + + Gerrit Renker, Godred Fairhurst + Electronics Research Group + School of Engineering, University of Aberdeen + Fraser Noble Building, Aberdeen AB24 3UE, UK" + DESCRIPTION + "The MIB module for managing UDP-Lite implementations. + Copyright (C) The IETF Trust (2008). This version of + this MIB module is part of RFC 5097; see the RFC + itself for full legal notices." + + REVISION "200712180000Z" -- 18 December 2007 + DESCRIPTION + "Initial SMIv2 revision, based on the format of the UDP + MIB module (RFC 4113) and published as RFC 5097." + ::= { mib-2 170 } + +udplite OBJECT IDENTIFIER ::= { udpliteMIB 1 } + +udpliteInDatagrams OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP-Lite datagrams that were + delivered to UDP-Lite users. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 1 } + +udpliteInPartialCov OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP-Lite datagrams that were + delivered to UDP-Lite users (applications) and whose + checksum coverage was strictly less than the datagram + length. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 2 } + + + + + + +udpliteNoPorts OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received UDP-Lite datagrams for + which there was no listener at the destination port. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 3 } + +udpliteInErrors OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received UDP-Lite datagrams that could not + be delivered for reasons other than the lack of an + application at the destination port. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 4 } + +udpliteInBadChecksum OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received UDP-Lite datagrams whose checksum + could not be validated. This includes illegal checksum + coverage values, as their use would lead to incorrect + checksums. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + REFERENCE "RFC 3828, section 3.1" + ::= { udplite 5 } + +udpliteOutDatagrams OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of UDP-Lite datagrams sent from this + entity. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 6 } + +udpliteOutPartialCov OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of udpliteOutDatagrams whose + checksum coverage was strictly less than the + datagram length. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 7 } + +udpliteEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpLiteEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about this entity's + UDP-Lite endpoints on which a local application is + currently accepting or sending datagrams. + + The address type in this table represents the address + type used for the communication, irrespective of the + higher-layer abstraction. For example, an application + using IPv6 'sockets' to communicate via IPv4 between + ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use + InetAddressType ipv4(1). + + Like the udpTable in RFC 4113, this table also allows + the representation of an application that completely + specifies both local and remote addresses and ports. A + listening application is represented in three possible + ways: + + 1) An application that is willing to accept both IPv4 + and IPv6 datagrams is represented by a + udpliteEndpointLocalAddressType of unknown(0) and a + udpliteEndpointLocalAddress of ''h (a zero-length + + + + octet-string). + + 2) An application that is willing to accept only IPv4 + or only IPv6 datagrams is represented by a + udpliteEndpointLocalAddressType of the appropriate + address type and a udpliteEndpointLocalAddress of + '0.0.0.0' or '::' respectively. + + 3) An application that is listening for datagrams only + for a specific IP address but from any remote + system is represented by a + udpliteEndpointLocalAddressType of the appropriate + address type, with udpliteEndpointLocalAddress + specifying the local address. + + In all cases where the remote address is a wildcard, + the udpliteEndpointRemoteAddressType is unknown(0), + the udpliteEndpointRemoteAddress is ''h (a zero-length + octet-string), and the udpliteEndpointRemotePort is 0. + + If the operating system is demultiplexing UDP-Lite + packets by remote address/port, or if the application + has 'connected' the socket specifying a default remote + address/port, the udpliteEndpointRemote* values should + be used to reflect this." + ::= { udplite 8 } + +udpliteEndpointEntry OBJECT-TYPE + SYNTAX UdpLiteEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular current UDP-Lite endpoint. + Implementers need to pay attention to the sizes of + udpliteEndpointLocalAddress/RemoteAddress, as Object + Identifiers (OIDs) of column instances in this table must + have no more than 128 sub-identifiers in order to remain + accessible with SNMPv1, SNMPv2c, and SNMPv3." + INDEX { udpliteEndpointLocalAddressType, + udpliteEndpointLocalAddress, + udpliteEndpointLocalPort, + udpliteEndpointRemoteAddressType, + udpliteEndpointRemoteAddress, + udpliteEndpointRemotePort, + udpliteEndpointInstance } + ::= { udpliteEndpointTable 1 } + +UdpLiteEndpointEntry ::= SEQUENCE { + + + + udpliteEndpointLocalAddressType InetAddressType, + udpliteEndpointLocalAddress InetAddress, + udpliteEndpointLocalPort InetPortNumber, + udpliteEndpointRemoteAddressType InetAddressType, + udpliteEndpointRemoteAddress InetAddress, + udpliteEndpointRemotePort InetPortNumber, + udpliteEndpointInstance Unsigned32, + udpliteEndpointProcess Unsigned32, + udpliteEndpointMinCoverage Unsigned32, + udpliteEndpointViolCoverage Counter32 +} + +udpliteEndpointLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpliteEndpointLocalAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all local IP addresses are + accepted." + ::= { udpliteEndpointEntry 1 } + +udpliteEndpointLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this UDP-Lite endpoint. + + The value of this object can be represented in three + possible ways, depending on the characteristics of the + listening application: + + 1. For an application that is willing to accept both + IPv4 and IPv6 datagrams, the value of this object + must be ''h (a zero-length octet-string), with + the value of the corresponding instance of the + EndpointLocalAddressType object being unknown(0). + + 2. For an application that is willing to accept only + IPv4 or only IPv6 datagrams, the value of this + object must be '0.0.0.0' or '::', respectively, + while the corresponding instance of the + EndpointLocalAddressType object represents the + appropriate address type. + + 3. For an application that is listening for data + + + + destined only to a specific IP address, the value + of this object is the specific IP address for + which this node is receiving packets, with the + corresponding instance of the + EndpointLocalAddressType object representing the + appropriate address type. + + As this object is used in the index for the + udpliteEndpointTable, implementors should be careful + not to create entries that would result in OIDs with + more than 128 sub-identifiers; this is because of SNMP + and SMI limitations." + ::= { udpliteEndpointEntry 2 } + +udpliteEndpointLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP-Lite endpoint." + ::= { udpliteEndpointEntry 3 } + +udpliteEndpointRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpliteEndpointRemoteAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all remote IP addresses are + accepted. Also, note that some combinations of + udpliteEndpointLocalAdressType and + udpliteEndpointRemoteAddressType are not supported. In + particular, if the value of this object is not + unknown(0), it is expected to always refer to the + same IP version as udpliteEndpointLocalAddressType." + ::= { udpliteEndpointEntry 4 } + +udpliteEndpointRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this UDP-Lite endpoint. If + datagrams from any remote system are to be accepted, + this value is ''h (a zero-length octet-string). + Otherwise, it has the type described by + udpliteEndpointRemoteAddressType and is the address of + + + + the remote system from which datagrams are to be + accepted (or to which all datagrams will be sent). + + As this object is used in the index for the + udpliteEndpointTable, implementors should be careful + not to create entries that would result in OIDs with + more than 128 sub-identifiers; this is because of SNMP + and SMI limitations." + ::= { udpliteEndpointEntry 5 } + +udpliteEndpointRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this UDP-Lite endpoint. If + datagrams from any remote system are to be accepted, + this value is zero." + ::= { udpliteEndpointEntry 6 } + +udpliteEndpointInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The instance of this tuple. This object is used to + distinguish among multiple processes 'connected' to + the same UDP-Lite endpoint. For example, on a system + implementing the BSD sockets interface, this would be + used to support the SO_REUSEADDR and SO_REUSEPORT + socket options." + ::= { udpliteEndpointEntry 7 } + +udpliteEndpointProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value corresponding to a piece of software + running on this endpoint. + + If this endpoint is associated with more than one piece + of software, the agent should choose one of these. As + long as the representative piece of software + is running and still associated with the endpoint, + subsequent reads will consistently return the same + value. The implementation may use any algorithm + satisfying these constraints (e.g., choosing the entity + + + + with the oldest start time). + + This identifier is platform-specific. Wherever possible, + it should use the system's native, unique identification + number as the value. + + If the SYSAPPL-MIB module is available, the value should + be the same as sysApplElmtRunIndex. If not available, an + alternative should be used (e.g., the hrSWRunIndex of the + HOST-RESOURCES-MIB module). + + If it is not possible to uniquely identify the pieces of + software associated with this endpoint, then the value + zero should be used. (Note that zero is otherwise a + valid value for sysApplElmtRunIndex.)" + ::= { udpliteEndpointEntry 8 } + +udpliteEndpointMinCoverage OBJECT-TYPE -- new in UDP-Lite + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum checksum coverage expected by this endpoint. + A value of 0 indicates that only fully covered datagrams + are accepted." + REFERENCE "RFC 3828, section 3.1" + ::= { udpliteEndpointEntry 9 } + +udpliteEndpointViolCoverage OBJECT-TYPE -- new / optional in UDP-Lite + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams received by this endpoint whose + checksum coverage violated the minimum coverage threshold + set for this connection (i.e., all valid datagrams whose + checksum coverage was strictly smaller than the minimum, + as defined in RFC 3828). + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udpliteEndpointEntry 10 } + + + + + + + + +udpliteStatsDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent occasion at + which one or more of the UDP-Lite counters suffered a + discontinuity. + A value of zero indicates no such discontinuity has + occurred since the last re-initialisation of the local + management subsystem." + ::= { udplite 9 } + +-- Conformance Information + +udpliteMIBConformance OBJECT IDENTIFIER ::= { udpliteMIB 2 } + +udpliteMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement + UDP-Lite. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which we have the following compliance + requirements, expressed in OBJECT clause form in this + description clause: + + -- OBJECT udpliteEndpointLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(16) is not required. + -- OBJECT udpliteEndpointLocalAddress + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + -- OBJECT udpliteEndpointRemoteAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(16) is not required. + -- OBJECT udpliteEndpointRemoteAddress + + + + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + " + MODULE -- this module + MANDATORY-GROUPS { udpliteBaseGroup, + udplitePartialCsumGroup, + udpliteEndpointGroup } + GROUP udpliteAppGroup + DESCRIPTION + "This group is optional and provides supplementary + information about the effectiveness of using minimum + checksum coverage thresholds on endpoints." + ::= { udpliteMIBConformance 1 } + +udpliteMIBGroups OBJECT IDENTIFIER ::= { udpliteMIBConformance 2 } + +udpliteBaseGroup OBJECT-GROUP -- as in UDP + OBJECTS { udpliteInDatagrams, udpliteNoPorts, udpliteInErrors, + udpliteOutDatagrams, udpliteStatsDiscontinuityTime } + STATUS current + DESCRIPTION + "The group of objects providing for counters of + basic UDP-like statistics." + ::= { udpliteMIBGroups 1 } + +udplitePartialCsumGroup OBJECT-GROUP -- specific to UDP-Lite + OBJECTS { udpliteInPartialCov, + udpliteInBadChecksum, + udpliteOutPartialCov } + STATUS current + DESCRIPTION + "The group of objects providing for counters of + transport layer statistics exclusive to UDP-Lite." + ::= { udpliteMIBGroups 2 } + +udpliteEndpointGroup OBJECT-GROUP + OBJECTS { udpliteEndpointProcess, udpliteEndpointMinCoverage } + STATUS current + DESCRIPTION + "The group of objects providing for the IP version + independent management of UDP-Lite 'endpoints'." + ::= { udpliteMIBGroups 3 } + + + + + + +udpliteAppGroup OBJECT-GROUP + OBJECTS { udpliteEndpointViolCoverage } + STATUS current + DESCRIPTION + "The group of objects that provide application-level + information for the configuration management of + UDP-Lite 'endpoints'." + ::= { udpliteMIBGroups 4 } + +END diff --git a/mibs/ietf/UPS-MIB b/mibs/ietf/UPS-MIB new file mode 100644 index 0000000..b3344fa --- /dev/null +++ b/mibs/ietf/UPS-MIB @@ -0,0 +1,1913 @@ +UPS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Counter32, Gauge32, Integer32, mib-2 + FROM SNMPv2-SMI + DisplayString, TimeStamp, TimeInterval, TestAndIncr, + AutonomousType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +upsMIB MODULE-IDENTITY + LAST-UPDATED "9402230000Z" + ORGANIZATION "IETF UPS MIB Working Group" + CONTACT-INFO + " Jeffrey D. Case + + Postal: SNMP Research, Incorporated + 3001 Kimberlin Heights Road + Knoxville, TN 37920 + US + + Tel: +1 615 573 1434 + Fax: +1 615 573 9197 + + E-mail: case@snmp.com" + DESCRIPTION + "The MIB module to describe Uninterruptible Power + Supplies." + ::= { mib-2 33 } + +PositiveInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is a non-zero and non-negative value." + SYNTAX INTEGER (1..2147483647) + +NonNegativeInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is a non-negative value." + SYNTAX INTEGER (0..2147483647) +upsObjects OBJECT IDENTIFIER ::= { upsMIB 1 } + + +-- +-- The Device Identification group. +-- All objects in this group except for upsIdentName and +-- upsIdentAttachedDevices are set at device initialization +-- and remain static. +-- + +upsIdent OBJECT IDENTIFIER ::= { upsObjects 1 } + +upsIdentManufacturer OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the UPS manufacturer." + ::= { upsIdent 1 } + +upsIdentModel OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS Model designation." + ::= { upsIdent 2 } + +upsIdentUPSSoftwareVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS firmware/software version(s). This variable + may or may not have the same value as + upsIdentAgentSoftwareVersion in some implementations." + ::= { upsIdent 3 } + +upsIdentAgentSoftwareVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS agent software version. This variable may or + may not have the same value as + upsIdentUPSSoftwareVersion in some implementations." + ::= { upsIdent 4 } + +upsIdentName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string identifying the UPS. This object should be + set by the administrator." + ::= { upsIdent 5 } + +upsIdentAttachedDevices OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string identifying the devices attached to the + output(s) of the UPS. This object should be set by + the administrator." + ::= { upsIdent 6 } + + +-- +-- Battery Group +-- + +upsBattery OBJECT IDENTIFIER ::= { upsObjects 2 } + +upsBatteryStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + batteryNormal(2), + batteryLow(3), + batteryDepleted(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The indication of the capacity remaining in the UPS + system's batteries. A value of batteryNormal + indicates that the remaining run-time is greater than + upsConfigLowBattTime. A value of batteryLow indicates + that the remaining battery run-time is less than or + equal to upsConfigLowBattTime. A value of + batteryDepleted indicates that the UPS will be unable + to sustain the present load when and if the utility + power is lost (including the possibility that the + utility power is currently absent and the UPS is + unable to sustain the output)." + ::= { upsBattery 1 } + +upsSecondsOnBattery OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the unit is on battery power, the elapsed time + since the UPS last switched to battery power, or the + time since the network management subsystem was last + restarted, whichever is less. Zero shall be returned + if the unit is not on battery power." + ::= { upsBattery 2 } + +upsEstimatedMinutesRemaining OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the time to battery charge depletion + under the present load conditions if the utility power + is off and remains off, or if it were to be lost and + remain off." + ::= { upsBattery 3 } + +upsEstimatedChargeRemaining OBJECT-TYPE + SYNTAX INTEGER (0..100) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the battery charge remaining expressed + as a percent of full charge." + ::= { upsBattery 4 } + +upsBatteryVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Volt DC" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present battery voltage." + ::= { upsBattery 5 } + +upsBatteryCurrent OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 Amp DC" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present battery current." + ::= { upsBattery 6 } + +upsBatteryTemperature OBJECT-TYPE + SYNTAX Integer32 + UNITS "degrees Centigrade" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ambient temperature at or near the UPS Battery + casing." + ::= { upsBattery 7 } + + +-- +-- Input Group +-- + +upsInput OBJECT IDENTIFIER ::= { upsObjects 3 } + +upsInputLineBads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times the input entered an + out-of-tolerance condition as defined by the + manufacturer. This count is incremented by one each + time the input transitions from zero out-of-tolerance + lines to one or more input lines out-of-tolerance." + ::= { upsInput 1 } + + +upsInputNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input lines utilized in this device. + This variable indicates the number of rows in the + input table." + ::= { upsInput 2 } + +upsInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of input table entries. The number of entries + is given by the value of upsInputNumLines." + ::= { upsInput 3 } + +upsInputEntry OBJECT-TYPE + SYNTAX UpsInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular input line." + INDEX { upsInputLineIndex } + ::= { upsInputTable 1 } + +UpsInputEntry ::= SEQUENCE { + upsInputLineIndex PositiveInteger, + upsInputFrequency NonNegativeInteger, + upsInputVoltage NonNegativeInteger, + upsInputCurrent NonNegativeInteger, + upsInputTruePower NonNegativeInteger +} + +upsInputLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The input line identifier." + ::= { upsInputEntry 1 } + +upsInputFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present input frequency." + ::= { upsInputEntry 2 } + +upsInputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input voltage." + ::= { upsInputEntry 3 } + +upsInputCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input current." + ::= { upsInputEntry 4 } + +upsInputTruePower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input true power." + ::= { upsInputEntry 5 } + + +-- +-- The Output group. +-- + +upsOutput OBJECT IDENTIFIER ::= { upsObjects 4 } + +upsOutputSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + none(2), + normal(3), + bypass(4), + battery(5), + booster(6), + reducer(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present source of output power. The enumeration + none(2) indicates that there is no source of output + power (and therefore no output power), for example, + the system has opened the output breaker." + ::= { upsOutput 1 } + +upsOutputFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output frequency." + ::= { upsOutput 2 } + +upsOutputNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output lines utilized in this device. + This variable indicates the number of rows in the + output table." + ::= { upsOutput 3 } + +upsOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of output table entries. The number of + entries is given by the value of upsOutputNumLines." + ::= { upsOutput 4 } + +upsOutputEntry OBJECT-TYPE + SYNTAX UpsOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular output line." + INDEX { upsOutputLineIndex } + ::= { upsOutputTable 1 } + +UpsOutputEntry ::= SEQUENCE { + upsOutputLineIndex PositiveInteger, + upsOutputVoltage NonNegativeInteger, + upsOutputCurrent NonNegativeInteger, + upsOutputPower NonNegativeInteger, + upsOutputPercentLoad INTEGER +} + +upsOutputLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The output line identifier." + ::= { upsOutputEntry 1 } + +upsOutputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output voltage." + ::= { upsOutputEntry 2 } + +upsOutputCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output current." + ::= { upsOutputEntry 3 } + +upsOutputPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output true power." + ::= { upsOutputEntry 4 } + +upsOutputPercentLoad OBJECT-TYPE + SYNTAX INTEGER (0..200) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The percentage of the UPS power capacity presently + being used on this output line, i.e., the greater of + the percent load of true power capacity and the + percent load of VA." + ::= { upsOutputEntry 5 } + +-- +-- The Bypass group. +-- + +upsBypass OBJECT IDENTIFIER ::= { upsObjects 5 } + +upsBypassFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass frequency." + ::= { upsBypass 1 } + +upsBypassNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bypass lines utilized in this device. + This entry indicates the number of rows in the bypass + table." + ::= { upsBypass 2 } + +upsBypassTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsBypassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of bypass table entries. The number of + entries is given by the value of upsBypassNumLines." + ::= { upsBypass 3 } + +upsBypassEntry OBJECT-TYPE + SYNTAX UpsBypassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular bypass input." + INDEX { upsBypassLineIndex } + ::= { upsBypassTable 1 } + +UpsBypassEntry ::= SEQUENCE { + upsBypassLineIndex PositiveInteger, + upsBypassVoltage NonNegativeInteger, + upsBypassCurrent NonNegativeInteger, + upsBypassPower NonNegativeInteger +} + +upsBypassLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bypass line identifier." + ::= { upsBypassEntry 1 } + +upsBypassVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass voltage." + ::= { upsBypassEntry 2 } + +upsBypassCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass current." + ::= { upsBypassEntry 3 } + +upsBypassPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present true power conveyed by the bypass." + ::= { upsBypassEntry 4 } + + +-- +-- The Alarm group. +-- + +upsAlarm OBJECT IDENTIFIER ::= { upsObjects 6 } + +upsAlarmsPresent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present number of active alarm conditions." + ::= { upsAlarm 1 } + +upsAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of alarm table entries. The table contains + zero, one, or many rows at any moment, depending upon + the number of alarm conditions in effect. The table + is initially empty at agent startup. The agent + creates a row in the table each time a condition is + detected and deletes that row when that condition no + longer pertains. The agent creates the first row with + upsAlarmId equal to 1, and increments the value of + upsAlarmId each time a new row is created, wrapping to + the first free value greater than or equal to 1 when + the maximum value of upsAlarmId would otherwise be + exceeded. Consequently, after multiple operations, + the table may become sparse, e.g., containing entries + for rows 95, 100, 101, and 203 and the entries should + not be assumed to be in chronological order because + upsAlarmId might have wrapped. + + Alarms are named by an AutonomousType (OBJECT + IDENTIFIER), upsAlarmDescr, to allow a single table to + reflect well known alarms plus alarms defined by a + particular implementation, i.e., as documented in the + private enterprise MIB definition for the device. No + two rows will have the same value of upsAlarmDescr, + since alarms define conditions. In order to meet this + requirement, care should be taken in the definition of + alarm conditions to insure that a system cannot enter + the same condition multiple times simultaneously. + + The number of rows in the table at any given time is + reflected by the value of upsAlarmsPresent." + ::= { upsAlarm 2 } + +upsAlarmEntry OBJECT-TYPE + SYNTAX UpsAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular alarm." + INDEX { upsAlarmId } + ::= { upsAlarmTable 1 } + +UpsAlarmEntry ::= SEQUENCE { + upsAlarmId PositiveInteger, + upsAlarmDescr AutonomousType, + upsAlarmTime TimeStamp +} + +upsAlarmId OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for an alarm condition. This + value must remain constant." + ::= { upsAlarmEntry 1 } + +upsAlarmDescr OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to an alarm description object. The + object referenced should not be accessible, but rather + be used to provide a unique description of the alarm + condition." + ::= { upsAlarmEntry 2 } + +upsAlarmTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the alarm condition was + detected. If the alarm condition was detected at the + time of agent startup and presumably existed before + agent startup, the value of upsAlarmTime shall equal + 0." + ::= { upsAlarmEntry 3 } + + +-- +-- Well known alarm conditions. +-- + +upsWellKnownAlarms OBJECT IDENTIFIER ::= { upsAlarm 3 } + +upsAlarmBatteryBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "One or more batteries have been determined to require + replacement." + ::= { upsWellKnownAlarms 1 } + +upsAlarmOnBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS is drawing power from the batteries." + ::= { upsWellKnownAlarms 2 } + +upsAlarmLowBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The remaining battery run-time is less than or equal + to upsConfigLowBattTime." + ::= { upsWellKnownAlarms 3 } + + +upsAlarmDepletedBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS will be unable to sustain the present load + when and if the utility power is lost." + ::= { upsWellKnownAlarms 4 } + +upsAlarmTempBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A temperature is out of tolerance." + ::= { upsWellKnownAlarms 5 } + +upsAlarmInputBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An input condition is out of tolerance." + ::= { upsWellKnownAlarms 6 } + +upsAlarmOutputBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An output condition (other than OutputOverload) is + out of tolerance." + ::= { upsWellKnownAlarms 7 } + +upsAlarmOutputOverload OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The output load exceeds the UPS output capacity." + ::= { upsWellKnownAlarms 8 } + +upsAlarmOnBypass OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Bypass is presently engaged on the UPS." + ::= { upsWellKnownAlarms 9 } + +upsAlarmBypassBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Bypass is out of tolerance." + ::= { upsWellKnownAlarms 10 } + +upsAlarmOutputOffAsRequested OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS has shutdown as requested, i.e., the output + is off." + ::= { upsWellKnownAlarms 11 } + +upsAlarmUpsOffAsRequested OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The entire UPS has shutdown as commanded." + ::= { upsWellKnownAlarms 12 } + +upsAlarmChargerFailed OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An uncorrected problem has been detected within the + UPS charger subsystem." + ::= { upsWellKnownAlarms 13 } + +upsAlarmUpsOutputOff OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The output of the UPS is in the off state." + ::= { upsWellKnownAlarms 14 } + +upsAlarmUpsSystemOff OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS system is in the off state." + ::= { upsWellKnownAlarms 15 } + +upsAlarmFanFailure OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The failure of one or more fans in the UPS has been + detected." + ::= { upsWellKnownAlarms 16 } + +upsAlarmFuseFailure OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The failure of one or more fuses has been detected." + ::= { upsWellKnownAlarms 17 } + +upsAlarmGeneralFault OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A general fault in the UPS has been detected." + ::= { upsWellKnownAlarms 18 } + +upsAlarmDiagnosticTestFailed OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The result of the last diagnostic test indicates a + failure." + ::= { upsWellKnownAlarms 19 } + +upsAlarmCommunicationsLost OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A problem has been encountered in the communications + between the agent and the UPS." + ::= { upsWellKnownAlarms 20 } + +upsAlarmAwaitingPower OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS output is off and the UPS is awaiting the + return of input power." + ::= { upsWellKnownAlarms 21 } + +upsAlarmShutdownPending OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A upsShutdownAfterDelay countdown is underway." + ::= { upsWellKnownAlarms 22 } + +upsAlarmShutdownImminent OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS will turn off power to the load in less than + 5 seconds; this may be either a timed shutdown or a + low battery shutdown." + ::= { upsWellKnownAlarms 23 } + +upsAlarmTestInProgress OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A test is in progress, as initiated and indicated by + the Test Group. Tests initiated via other + implementation-specific mechanisms can indicate the + presence of the testing in the alarm table, if + desired, via a OBJECT-IDENTITY macro in the MIB + document specific to that implementation and are + outside the scope of this OBJECT-IDENTITY." + ::= { upsWellKnownAlarms 24 } + + +-- +-- The Test Group +-- + +upsTest OBJECT IDENTIFIER ::= { upsObjects 7 } + +upsTestId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The test is named by an OBJECT IDENTIFIER which + allows a standard mechanism for the initiation of + tests, including the well known tests identified in + this document as well as those introduced by a + particular implementation, i.e., as documented in the + private enterprise MIB definition for the device. + + Setting this variable initiates the named test. Sets + to this variable require the presence of + upsTestSpinLock in the same SNMP message. + + The set request will be rejected with an appropriate + error message if the requested test cannot be + performed, including attempts to start a test when + another test is already in progress. The status of + the current or last test is maintained in + upsTestResultsSummary. Tests in progress may be + aborted by setting the upsTestId variable to + upsTestAbortTestInProgress. + + Read operations return the value of the name of the + test in progress if a test is in progress or the name + of the last test performed if no test is in progress, + unless no test has been run, in which case the well + known value upsTestNoTestsInitiated is returned." + ::= { upsTest 1 } + +-- see [6] for more information on the semantics of objects with +-- syntax of TestAndIncr + +upsTestSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A spin lock on the test subsystem. The spinlock is + used as follows. + + Before starting a test, a manager-station should make + sure that a test is not in progress as follows: + + try_again: + get (upsTestSpinLock) + while (upsTestResultsSummary == inProgress) { + /* loop while a test is running for another + manager */ + short delay + get (upsTestSpinLock) + } + lock_value = upsTestSpinLock + /* no test in progress, start the test */ + set (upsTestSpinLock = lock_value, upsTestId = + requested_test) + if (error_index == 1) { /* (upsTestSpinLock + failed) */ + /* if problem is not access control, then + some other manager slipped in ahead of us + */ + goto try_again + } + if (error_index == 2) { /* (upsTestId) */ + /* cannot perform the test */ + give up + } + /* test started ok */ + /* wait for test completion by polling + upsTestResultsSummary */ + get (upsTestSpinLock, upsTestResultsSummary, + upsTestResultsDetail) + while (upsTestResultsSummary == inProgress) { + short delay + get (upsTestSpinLock, upsTestResultsSummary, + upsTestResultsDetail) + } + /* when test completes, retrieve any additional + test results */ + /* if upsTestSpinLock == lock_value + 1, then + these are our test */ + /* results (as opposed to another manager's */ + The initial value of upsTestSpinLock at agent + initialization shall + be 1." + ::= { upsTest 2 } + +upsTestResultsSummary OBJECT-TYPE + SYNTAX INTEGER { + donePass(1), + doneWarning(2), + doneError(3), + aborted(4), + inProgress(5), + noTestsInitiated(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The results of the current or last UPS diagnostics + test performed. The values for donePass(1), + doneWarning(2), and doneError(3) indicate that the + test completed either successfully, with a warning, or + with an error, respectively. The value aborted(4) is + returned for tests which are aborted by setting the + value of upsTestId to upsTestAbortTestInProgress. + Tests which have not yet concluded are indicated by + inProgress(5). The value noTestsInitiated(6) + indicates that no previous test results are available, + such as is the case when no tests have been run since + the last reinitialization of the network management + subsystem and the system has no provision for non- + volatile storage of test results." + ::= { upsTest 3 } + +upsTestResultsDetail OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional information about upsTestResultsSummary. + If no additional information available, a zero length + string is returned." + ::= { upsTest 4 } + +upsTestStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the test in + progress was initiated, or, if no test is in progress, + the time the previous test was initiated. If the + value of upsTestResultsSummary is noTestsInitiated(6), + upsTestStartTime has the value 0." + ::= { upsTest 5 } + +upsTestElapsedTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time, in TimeTicks, since the test in + progress was initiated, or, if no test is in progress, + the previous test took to complete. If the value of + upsTestResultsSummary is noTestsInitiated(6), + upsTestElapsedTime has the value 0." + ::= { upsTest 6 } + +-- +-- Well known tests. +-- + +upsWellKnownTests OBJECT IDENTIFIER ::= { upsTest 7 } + + +upsTestNoTestsInitiated OBJECT-IDENTITY + STATUS current + DESCRIPTION + "No tests have been initiated and no test is in + progress." + ::= { upsWellKnownTests 1 } + +upsTestAbortTestInProgress OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The test in progress is to be aborted / the test in + progress was aborted." + ::= { upsWellKnownTests 2 } + +upsTestGeneralSystemsTest OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The manufacturer's standard test of UPS device + systems." + ::= { upsWellKnownTests 3 } + +upsTestQuickBatteryTest OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A test that is sufficient to determine if the battery + needs replacement." + ::= { upsWellKnownTests 4 } + +upsTestDeepBatteryCalibration OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The system is placed on battery to a discharge level, + set by the manufacturer, sufficient to determine + battery replacement and battery run-time with a high + degree of confidence. WARNING: this test will leave + the battery in a low charge state and will require + time for recharging to a level sufficient to provide + normal battery duration for the protected load." + ::= { upsWellKnownTests 5 } + + +-- +-- The Control group. +-- + +upsControl OBJECT IDENTIFIER ::= { upsObjects 8 } + +upsShutdownType OBJECT-TYPE + SYNTAX INTEGER { + output(1), + system(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines the nature of the action to be + taken at the time when the countdown of the + upsShutdownAfterDelay and upsRebootWithDuration + objects reaches zero. + + Setting this object to output(1) indicates that + shutdown requests should cause only the output of the + UPS to turn off. Setting this object to system(2) + indicates that shutdown requests will cause the entire + UPS system to turn off." + ::= { upsControl 1 } + +upsShutdownAfterDelay OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will shutdown (i.e., turn off) + either the UPS output or the UPS system (as determined + by the value of upsShutdownType at the time of + shutdown) after the indicated number of seconds, or + less if the UPS batteries become depleted. Setting + this object to 0 will cause the shutdown to occur + immediately. Setting this object to -1 will abort the + countdown. If the system is already in the desired + state at the time the countdown reaches 0, then + nothing will happen. That is, there is no additional + action at that time if upsShutdownType = system and + the system is already off. Similarly, there is no + additional action at that time if upsShutdownType = + output and the output is already off. When read, + upsShutdownAfterDelay will return the number of + seconds remaining until shutdown, or -1 if no shutdown + countdown is in effect. On some systems, if the agent + is restarted while a shutdown countdown is in effect, + the countdown may be aborted. Sets to this object + override any upsShutdownAfterDelay already in effect." + ::= { upsControl 2 } + +upsStartupAfterDelay OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will start the output after the + indicated number of seconds, including starting the + UPS, if necessary. Setting this object to 0 will + cause the startup to occur immediately. Setting this + object to -1 will abort the countdown. If the output + is already on at the time the countdown reaches 0, + then nothing will happen. Sets to this object + override the effect of any upsStartupAfterDelay + countdown or upsRebootWithDuration countdown in + progress. When read, upsStartupAfterDelay will return + the number of seconds until startup, or -1 if no + startup countdown is in effect. If the countdown + expires during a utility failure, the startup shall + not occur until the utility power is restored. On + some systems, if the agent is restarted while a + startup countdown is in effect, the countdown is + aborted." + ::= { upsControl 3 } + +upsRebootWithDuration OBJECT-TYPE + SYNTAX INTEGER (-1..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will immediately shutdown (i.e., + turn off) either the UPS output or the UPS system (as + determined by the value of upsShutdownType at the time + of shutdown) for a period equal to the indicated + number of seconds, after which time the output will be + started, including starting the UPS, if necessary. If + the number of seconds required to perform the request + is greater than the requested duration, then the + requested shutdown and startup cycle shall be + performed in the minimum time possible, but in no case + shall this require more than the requested duration + plus 60 seconds. When read, upsRebootWithDuration + shall return the number of seconds remaining in the + countdown, or -1 if no countdown is in progress. If + the startup should occur during a utility failure, the + startup shall not occur until the utility power is + restored." + ::= { upsControl 4 } + +upsAutoRestart OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'on' will cause the UPS system + to restart after a shutdown if the shutdown occurred + during a power loss as a result of either a + upsShutdownAfterDelay or an internal battery depleted + condition. Setting this object to 'off' will prevent + the UPS system from restarting after a shutdown until + an operator manually or remotely explicitly restarts + it. If the UPS is in a startup or reboot countdown, + then the UPS will not restart until that delay has + been satisfied." + ::= { upsControl 5 } + + +-- +-- The Configuration group. +-- + +upsConfig OBJECT IDENTIFIER ::= { upsObjects 9 } + +upsConfigInputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The magnitude of the nominal input voltage. On those + systems which support read-write access to this + object, if there is an attempt to set this variable to + a value that is not supported, the request must be + rejected and the agent shall respond with an + appropriate error message, i.e., badValue for SNMPv1, + or inconsistentValue for SNMPv2." + ::= { upsConfig 1 } + +upsConfigInputFreq OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The nominal input frequency. On those systems which + support read-write access to this object, if there is + an attempt to set this variable to a value that is not + supported, the request must be rejected and the agent + shall respond with an appropriate error message, i.e., + badValue for SNMPv1, or inconsistentValue for SNMPv2." + ::= { upsConfig 2 } + +upsConfigOutputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The magnitude of the nominal output voltage. On + those systems which support read-write access to this + object, if there is an attempt to set this variable to + a value that is not supported, the request must be + rejected and the agent shall respond with an + appropriate error message, i.e., badValue for SNMPv1, + or inconsistentValue for SNMPv2." + ::= { upsConfig 3 } + +upsConfigOutputFreq OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The nominal output frequency. On those systems which + support read-write access to this object, if there is + an attempt to set this variable to a value that is not + supported, the request must be rejected and the agent + shall respond with an appropriate error message, i.e., + badValue for SNMPv1, or inconsistentValue for SNMPv2." + ::= { upsConfig 4 } + +upsConfigOutputVA OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Volt-Amps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the nominal Volt-Amp rating." + ::= { upsConfig 5 } + +upsConfigOutputPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the nominal true power rating." + ::= { upsConfig 6 } + +upsConfigLowBattTime OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of upsEstimatedMinutesRemaining at which a + lowBattery condition is declared. For agents which + support only discrete (discontinuous) values, then the + agent shall round up to the next supported value. If + the requested value is larger than the largest + supported value, then the largest supported value + shall be selected." + ::= { upsConfig 7 } + +upsConfigAudibleStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabled(2), + muted(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The requested state of the audible alarm. When in + the disabled state, the audible alarm should never + sound. The enabled state is self-describing. Setting + this object to muted(3) when the audible alarm is + sounding shall temporarily silence the alarm. It will + remain muted until it would normally stop sounding and + the value returned for read operations during this + period shall equal muted(3). At the end of this + period, the value shall revert to enabled(2). Writes + of the value muted(3) when the audible alarm is not + sounding shall be accepted but otherwise shall have no + effect." + ::= { upsConfig 8 } + +upsConfigLowVoltageTransferPoint OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum input line voltage allowed before the UPS + system transfers to battery backup." + ::= { upsConfig 9 } + +upsConfigHighVoltageTransferPoint OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum line voltage allowed before the UPS + system transfers to battery backup." + ::= { upsConfig 10 } + + +-- +-- notifications, i.e., traps +-- +upsTraps OBJECT IDENTIFIER ::= { upsMIB 2 } + +-- This section defines the well-known notifications sent by +-- UPS agents. +-- Care must be taken to insure that no particular notification +-- is sent to a single receiving entity more often than once +-- every five seconds. + +upsTrapOnBattery NOTIFICATION-TYPE + OBJECTS { upsEstimatedMinutesRemaining, upsSecondsOnBattery, + upsConfigLowBattTime } + STATUS current + DESCRIPTION + "The UPS is operating on battery power. This trap is + persistent and is resent at one minute intervals until + the UPS either turns off or is no longer running on + battery." + ::= { upsTraps 1 } + +upsTrapTestCompleted NOTIFICATION-TYPE + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "This trap is sent upon completion of a UPS diagnostic + test." + ::= { upsTraps 2 } + +upsTrapAlarmEntryAdded NOTIFICATION-TYPE + OBJECTS { upsAlarmId, upsAlarmDescr } + STATUS current + DESCRIPTION + "This trap is sent each time an alarm is inserted into + to the alarm table. It is sent on the insertion of + all alarms except for upsAlarmOnBattery and + upsAlarmTestInProgress." + ::= { upsTraps 3 } + +upsTrapAlarmEntryRemoved NOTIFICATION-TYPE + OBJECTS { upsAlarmId, upsAlarmDescr } + STATUS current + DESCRIPTION + "This trap is sent each time an alarm is removed from + the alarm table. It is sent on the removal of all + alarms except for upsAlarmTestInProgress." + ::= { upsTraps 4 } + + +-- +-- conformance information +-- +upsConformance OBJECT IDENTIFIER ::= { upsMIB 3 } + +upsCompliances OBJECT IDENTIFIER ::= { upsConformance 1 } + + +-- +-- compliance statements +-- + +upsSubsetCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + "The compliance statement for UPSs that only support + the two-contact communication protocol." + MODULE -- this module + MANDATORY-GROUPS { upsSubsetIdentGroup, + upsSubsetBatteryGroup, upsSubsetInputGroup, + upsSubsetOutputGroup, upsSubsetAlarmGroup, + upsSubsetControlGroup, upsSubsetConfigGroup } + + OBJECT upsBatteryStatus + SYNTAX INTEGER { + batteryNormal(2), + batteryLow(3) + } + DESCRIPTION + "Support of the values unknown(1) and + batteryDepleted(4) is not required." + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmOnBattery, upsAlarmLowBattery, + upsAlarmInputBad, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, and upsAlarmTestInProgress." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + ::= { upsCompliances 1 } + +upsBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + "The compliance statement for UPSs that support + full-featured functions, such as control." + MODULE -- this module + MANDATORY-GROUPS { upsBasicIdentGroup, + upsBasicBatteryGroup, upsBasicInputGroup, + upsBasicOutputGroup, upsBasicAlarmGroup, + upsBasicTestGroup, upsBasicControlGroup, + upsBasicConfigGroup } + + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmOnBattery, upsAlarmLowBattery, + upsAlarmDepletedBattery, upsAlarmTempBad, + upsAlarmInputBad, upsAlarmOutputOverload, + upsAlarmOnBypass, upsAlarmBypassBad, + upsAlarmOutputOffAsRequested, + upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, upsAlarmGeneralFault, + upsAlarmDiagnosticTestFailed, + upsAlarmCommunicationsLost, upsAlarmShutdownPending, + and upsAlarmTestInProgress." + + OBJECT upsTestId + DESCRIPTION + "Support of all `well known' test types is not + required. If no tests are supported, then the only + well known test type which must be supported is + upsTestNoTestsInitiated." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + GROUP upsBasicBypassGroup + DESCRIPTION + "The upsBasicBypassGroup is only required for UPSs + that have a Bypass present." + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigLowBattTime + DESCRIPTION + "Implementation of all possible values may be onerous + for some systems. Consequently, not all possible + values must be supported. However, at least two + different manufacturer-selected values must be + supported." + + ::= { upsCompliances 2 } + +upsFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for UPSs that support + advanced full-featured functions." + MODULE -- this module + MANDATORY-GROUPS { upsFullIdentGroup, upsFullBatteryGroup, + upsFullInputGroup, upsFullOutputGroup, + upsFullAlarmGroup, upsFullTestGroup, + upsFullControlGroup, upsFullConfigGroup } + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmBatteryBad, upsAlarmOnBattery, + upsAlarmLowBattery, upsAlarmDepletedBattery, + upsAlarmTempBad, upsAlarmInputBad, upsAlarmOnBypass, + upsAlarmBypassBad, upsAlarmOutputOffAsRequested, + upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, upsAlarmGeneralFault, + upsAlarmDiagnosticTestFailed, + upsAlarmCommunicationsLost, upsAlarmShutdownPending, + and upsAlarmTestInProgress." + + OBJECT upsTestId + DESCRIPTION + "Support of all `well known' test types is not + required. The well known test types which must be + supported are: upsTestNoTestsInitiated, + upsTestGeneralSystemsTest, and + upsTestQuickBatteryTest." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + GROUP upsFullBypassGroup + DESCRIPTION + "The upsFullBypassGroup is only required for UPSs that + have a Bypass present." + + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigLowBattTime + DESCRIPTION + "Implementation of all possible values may be onerous + for some systems. Consequently, not all possible + values must be supported. However, at least two + different manufacturer-selected values must be + supported." + + ::= { upsCompliances 3 } + + +-- +-- units of conformance +-- + +-- summary at a glance: + +-- subset basic adv +--upsIdentManufacturer x x x +--upsIdentModel x x x + +--upsIdentUPSSoftwareVersion x x +--upsIdentAgentSoftwareVersion x x x +--upsIdentName x x x +--upsIdentAttachedDevices x x +-- +--upsBatteryStatus x x x notes +--upsSecondsOnBattery x x x +--upsEstimatedMinutesRemaining x +--upsEstimatedChargeRemaining x +--upsBatteryVoltage +--upsBatteryCurrent +--upsBatteryTemperature +-- +--upsInputLineBads x x x +--upsInputNumLines x x +--upsInputFrequency x x +--upsInputVoltage x x +--upsInputCurrent +--upsInputTruePower +-- +--upsOutputSource x x x notes +--upsOutputFrequency x x +--upsOutputNumLines x x +--upsOutputVoltage x x +--upsOutputCurrent x +--upsOutputPower x +--upsOutputPercentLoad x +-- +-- +--upsBypassFrequency x x notes +--upsBypassNumLines x x +--upsBypassVoltage x x +--upsBypassCurrent +--upsBypassPower +-- +-- +--upsAlarmsPresent x x x +--upsAlarmDescr x x x notes +--upsAlarmTime x x x +-- +--upsTestId x x notes +--upsTestSpinLock x x +--upsTestResultsSummary x x +--upsTestResultsDetail x x +--upsTestStartTime x x +--upsTestElapsedTime x x +-- +--upsShutdownType x x x notes + +--upsShutdownAfterDelay x x x +--upsStartupAfterDelay x x +--upsRebootWithDuration x x +--upsAutoRestart x x x notes +-- +--upsConfigInputVoltage x x x notes +--upsConfigInputFreq x x x notes +--upsConfigOutputVoltage x x x notes +--upsConfigOutputFreq x x x notes +--upsConfigOutputVA x x x +--upsConfigOutputPower x x x +--upsConfigLowBattTime x x notes +--upsConfigAudibleStatus x x +--upsConfigLowVoltageTransferPoint +--upsConfigHighVoltageTransferPoint + + +-- units of conformance +upsGroups OBJECT IDENTIFIER ::= { upsConformance 2 } + +upsSubsetGroups OBJECT IDENTIFIER ::= { upsGroups 1 } + +upsSubsetIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentAgentSoftwareVersion, upsIdentName, + upsIdentAttachedDevices } + STATUS current + DESCRIPTION + "The upsSubsetIdentGroup defines objects which are + common across all UPSs which meet subset compliance. + Most devices which conform to the upsSubsetIdentGroup + will provide access to these objects via a proxy + agent. If the proxy agent is compatible with multiple + UPS types, configuration of the proxy agent will + require specifying some of these values, either + individually, or as a group (perhaps through a table + lookup mechanism based on the UPS model number)." + ::= { upsSubsetGroups 1 } + +upsSubsetBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery } + STATUS current + DESCRIPTION + "The upsSubsetBatteryGroup defines the objects that + are common to battery groups of two-contact UPSs." + ::= { upsSubsetGroups 2 } + +upsSubsetInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads } + STATUS current + DESCRIPTION + "The upsSubsetInputGroup defines the objects that are + common to the Input groups of two-contact UPSs." + ::= { upsSubsetGroups 3 } + +upsSubsetOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource } + STATUS current + DESCRIPTION + "The upsSubsetOutputGroup defines the objects that are + common to the Output groups of two-contact UPSs." + ::= { upsSubsetGroups 4 } + + +-- { upsSubsetGroups 5 } is reserved for +-- future use (upsSubsetBypassGroup) + +upsSubsetAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + "The upsSubsetAlarmGroup defines the objects that are + common to the Alarm groups of two-contact UPSs." + ::= { upsSubsetGroups 6 } + +-- { upsSubsetGroups 7 } is reserved for +-- future use (upsSubsetTestGroup) + +upsSubsetControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsAutoRestart } + STATUS current + DESCRIPTION + "The upsSubsetControlGroup defines the objects that + are common to the Control groups of two-contact UPSs." + ::= { upsSubsetGroups 8 } + +upsSubsetConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower } + STATUS current + DESCRIPTION + "The upsSubsetConfigGroup defines the objects that are + common to the Config groups of two-contact UPSs." + ::= { upsSubsetGroups 9 } +upsBasicGroups OBJECT IDENTIFIER ::= { upsGroups 2 } + +upsBasicIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentUPSSoftwareVersion, + upsIdentAgentSoftwareVersion, upsIdentName } + STATUS current + DESCRIPTION + "The upsBasicIdentGroup defines objects which are + common to the Ident group of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 1 } + +upsBasicBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery } + STATUS current + DESCRIPTION + "The upsBasicBatteryGroup defines the objects that are + common to the battery groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 2 } + +upsBasicInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads, upsInputNumLines, + upsInputFrequency, upsInputVoltage } + STATUS current + DESCRIPTION + "The upsBasicInputGroup defines the objects that are + common to the Input groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 3 } + +upsBasicOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource, upsOutputFrequency, + upsOutputNumLines, upsOutputVoltage } + STATUS current + DESCRIPTION + "The upsBasicOutputGroup defines the objects that are + common to the Output groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 4 } + +upsBasicBypassGroup OBJECT-GROUP + OBJECTS { upsBypassFrequency, upsBypassNumLines, + upsBypassVoltage } + STATUS current + DESCRIPTION + "The upsBasicBypassGroup defines the objects that are + common to the Bypass groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 5 } + +upsBasicAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + + "The upsBasicAlarmGroup defines the objects that are + common to the Alarm groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 6 } + +upsBasicTestGroup OBJECT-GROUP + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "The upsBasicTestGroup defines the objects that are + common to the Test groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 7 } + +upsBasicControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsStartupAfterDelay, upsRebootWithDuration, + upsAutoRestart } + STATUS current + DESCRIPTION + "The upsBasicControlGroup defines the objects that are + common to the Control groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 8 } + +upsBasicConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower, + upsConfigLowBattTime, upsConfigAudibleStatus } + STATUS current + DESCRIPTION + "The upsBasicConfigGroup defines the objects that are + common to the Config groups of UPSs which support + basic functions." + ::= { upsBasicGroups 9 } +upsFullGroups OBJECT IDENTIFIER ::= { upsGroups 3 } + +upsFullIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentUPSSoftwareVersion, + upsIdentAgentSoftwareVersion, upsIdentName, + upsIdentAttachedDevices } + STATUS current + DESCRIPTION + "The upsFullIdentGroup defines objects which are + common to the Ident group of fully compliant UPSs." + ::= { upsFullGroups 1 } + +upsFullBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery, + upsEstimatedMinutesRemaining, + upsEstimatedChargeRemaining } + STATUS current + DESCRIPTION + "The upsFullBatteryGroup defines the objects that are + common to the battery groups of fully compliant UPSs." + ::= { upsFullGroups 2 } + +upsFullInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads, upsInputNumLines, + upsInputFrequency, upsInputVoltage } + STATUS current + DESCRIPTION + "The upsFullInputGroup defines the objects that are + common to the Input groups of fully compliant UPSs." + ::= { upsFullGroups 3 } + +upsFullOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource, upsOutputFrequency, + upsOutputNumLines, upsOutputVoltage, + upsOutputCurrent, upsOutputPower, + upsOutputPercentLoad } + STATUS current + DESCRIPTION + "The upsFullOutputGroup defines the objects that are + common to the Output groups of fully compliant UPSs." + ::= { upsFullGroups 4 } + +upsFullBypassGroup OBJECT-GROUP + OBJECTS { upsBypassFrequency, upsBypassNumLines, + upsBypassVoltage } + STATUS current + DESCRIPTION + "The upsFullBypassGroup defines the objects that are + common to the Bypass groups of fully compliant UPSs." + ::= { upsFullGroups 5 } + +upsFullAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + + "The upsFullAlarmGroup defines the objects that are + common to the Alarm groups of fully compliant UPSs." + ::= { upsFullGroups 6 } + +upsFullTestGroup OBJECT-GROUP + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "The upsFullTestGroup defines the objects that are + common to the Test groups of fully compliant UPSs." + ::= { upsFullGroups 7 } + +upsFullControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsStartupAfterDelay, upsRebootWithDuration, + upsAutoRestart } + STATUS current + DESCRIPTION +"The upsFullControlGroup defines the objects that are +common to the Control groups of fully compliant UPSs." + ::= { upsFullGroups 8 } + +upsFullConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower, + upsConfigLowBattTime, upsConfigAudibleStatus } + STATUS current + DESCRIPTION + "The upsFullConfigGroup defines the objects that are + common to the Config groups of fully compliant UPSs." + ::= { upsFullGroups 9 } + +END diff --git a/mibs/ietf/URI-TC-MIB b/mibs/ietf/URI-TC-MIB new file mode 100644 index 0000000..744216e --- /dev/null +++ b/mibs/ietf/URI-TC-MIB @@ -0,0 +1,139 @@ +URI-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +uriTcMIB MODULE-IDENTITY + LAST-UPDATED "200709100000Z" -- 10 September 2007 + ORGANIZATION "IETF Operations and Management (OPS) Area" + CONTACT-INFO "EMail: ops-area@ietf.org + Home page: http://www.ops.ietf.org/" + DESCRIPTION + "This MIB module defines textual conventions for + representing URIs, as defined by RFC 3986 STD 66." + REVISION "200709100000Z" -- 10 September 2007 + DESCRIPTION + "Initial revision, published as RFC 5017. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5017; see the RFC itself for full + + + + legal notices." + ::= { mib-2 164 } + +Uri ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + Where this TEXTUAL-CONVENTION is used for an index field, + it MUST be subtyped to restrict its length. There is an + absolute limit of 128 subids for an OID, and it is not + efficient to have OIDs whose length approaches this + limit." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING + +Uri255 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + + + + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + STD 66 URIs are of unlimited length. Objects using this + TEXTUAL-CONVENTION impose a length limit on the URIs that + they can represent. Where no length restriction is + required, objects SHOULD use the 'Uri' TEXTUAL-CONVENTION + instead. Objects used as indices SHOULD subtype the 'Uri' + TEXTUAL-CONVENTION." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING (SIZE (0..255)) + +Uri1024 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + STD 66 URIs are of unlimited length. Objects using this + TEXTUAL-CONVENTION impose a length limit on the URIs that + they can represent. Where no length restriction is + required, objects SHOULD use the 'Uri' TEXTUAL-CONVENTION + instead. Objects used as indices SHOULD subtype the 'Uri' + TEXTUAL-CONVENTION." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING (SIZE (0..1024)) + +END diff --git a/mibs/ietf/VDSL-LINE-EXT-MCM-MIB b/mibs/ietf/VDSL-LINE-EXT-MCM-MIB new file mode 100644 index 0000000..c0eb9a9 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-EXT-MCM-MIB @@ -0,0 +1,705 @@ +VDSL-LINE-EXT-MCM-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, +OBJECT-TYPE, +transmission, +Unsigned32 FROM SNMPv2-SMI -- [RFC2578] +RowStatus FROM SNMPv2-TC -- [RFC2579] +MODULE-COMPLIANCE, +OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] +vdslLineConfProfileName FROM VDSL-LINE-MIB; -- [RFC3728] + +vdslExtMCMMIB MODULE-IDENTITY + LAST-UPDATED "200504280000Z" -- April 28, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair/Co-editor: + Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + + + + Co-editor: Menachem Dodge + ECI Telecom Ltd. + Postal: 30 hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + " + +DESCRIPTION + "The VDSL-LINE-MIB found in RFC 3728 defines objects for + the management of a pair of VDSL transceivers at each end of + the VDSL line. The VDSL-LINE-MIB configures and monitors the + line code independent parameters (TC layer) of the VDSL line. + This MIB module is an optional extension of the VDSL-LINE-MIB + and defines objects for configuration and monitoring of the + line code specific (LCS) elements (PMD layer) for VDSL lines + using MCM coding. The objects in this extension MIB MUST NOT + be used for VDSL lines using Single Carrier Modulation (SCM) + line coding. If an object in this extension MIB is referenced + by a line which does not use MCM, it has no effect on the + operation of that line. + + Naming Conventions: + Vtuc -- (VTUC) transceiver at near (Central) end of line + Vtur -- (VTUR) transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + LCS -- Line Code Specific + Max -- Maximum + PSD -- Power Spectral Density + Rx -- Receive + Tx -- Transmit + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4070: see the RFC + itself for full legal notices." + REVISION "200504280000Z" -- April 28, 2005 + DESCRIPTION "Initial version, published as RFC 4070." + ::= { transmission 229 } + +vdslLineExtMCMMib OBJECT IDENTIFIER ::= { vdslExtMCMMIB 1 } +vdslLineExtMCMMibObjects OBJECT IDENTIFIER ::= {vdslLineExtMCMMib 1} + +-- +-- Multiple carrier modulation (MCM) configuration profile tables +-- + + + + +vdslLineMCMConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains additional information on multiple + carrier VDSL lines. One entry in this table reflects a + profile defined by a manager which can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + + ::= { vdslLineExtMCMMibObjects 1 } + +vdslLineMCMConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a multiple carrier + modulation VDSL modem." + INDEX { vdslLineConfProfileName } + ::= { vdslLineMCMConfProfileTable 1 } + +VdslLineMCMConfProfileEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxWindowLength Unsigned32, + vdslLineMCMConfProfileRowStatus RowStatus + } + +vdslLineMCMConfProfileTxWindowLength OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + UNITS "samples" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the length of the transmit window, counted + in samples at the sampling rate corresponding to the + negotiated value of N." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileEntry 1 } + + + +vdslLineMCMConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must first be unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileEntry 2 } + +vdslLineMCMConfProfileTxBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileTxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + with a multiple carrier modulation (MCM) VDSL line. + These entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 2 } + +vdslLineMCMConfProfileTxBandEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileTxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit band descriptor, which + is defined by a start and a stop tone index." + INDEX { vdslLineConfProfileName, + + + + vdslLineMCMConfProfileTxBandNumber } + ::= { vdslLineMCMConfProfileTxBandTable 1 } + +VdslLineMCMConfProfileTxBandEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxBandNumber Unsigned32, + vdslLineMCMConfProfileTxBandStart Unsigned32, + vdslLineMCMConfProfileTxBandStop Unsigned32, + vdslLineMCMConfProfileTxBandRowStatus RowStatus + } + +vdslLineMCMConfProfileTxBandNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileTxBandEntry 1 } + +vdslLineMCMConfProfileTxBandStart OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Start tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxBandEntry 2 } + +vdslLineMCMConfProfileTxBandStop OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Stop tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxBandEntry 3 } + +vdslLineMCMConfProfileTxBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + + + + Each entry must be internally consistent, the Stop Tone must + be greater than the Start Tone. Each entry must also be + externally consistent, all entries indexed by a specific + profile must not overlap. Validation of the profile will + check both internal and external consistency. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileTxBandEntry 4 } + +vdslLineMCMConfProfileRxBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileRxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains receive band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + with a multiple carrier modulation (MCM) VDSL line. + These entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 3 } + +vdslLineMCMConfProfileRxBandEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileRxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit band descriptor, which + is defined by a start and a stop tone index." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileRxBandNumber } + ::= { vdslLineMCMConfProfileRxBandTable 1 } + +VdslLineMCMConfProfileRxBandEntry ::= + + + + SEQUENCE + { + vdslLineMCMConfProfileRxBandNumber Unsigned32, + vdslLineMCMConfProfileRxBandStart Unsigned32, + vdslLineMCMConfProfileRxBandStop Unsigned32, + vdslLineMCMConfProfileRxBandRowStatus RowStatus + } + +vdslLineMCMConfProfileRxBandNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileRxBandEntry 1 } + +vdslLineMCMConfProfileRxBandStart OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Start tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileRxBandEntry 2 } + + +vdslLineMCMConfProfileRxBandStop OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Stop tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileRxBandEntry 3 } + +vdslLineMCMConfProfileRxBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + Each entry must be internally consistent, the Stop Tone must + be greater than the Start Tone. Each entry must also be + externally consistent, all entries indexed by a specific + + + + profile must not overlap. Validation of the profile will + check both internal and external consistency. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileRxBandEntry 4 } + +vdslLineMCMConfProfileTxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL line. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 4 } + +vdslLineMCMConfProfileTxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the power spectral density (PSD) for a tone." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileTxPSDNumber } + ::= { vdslLineMCMConfProfileTxPSDTable 1 } + +VdslLineMCMConfProfileTxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxPSDNumber Unsigned32, + + + + vdslLineMCMConfProfileTxPSDTone Unsigned32, + vdslLineMCMConfProfileTxPSDPSD Unsigned32, + vdslLineMCMConfProfileTxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileTxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this mask descriptor entry." + ::= { vdslLineMCMConfProfileTxPSDEntry 1 } + +vdslLineMCMConfProfileTxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxPSDEntry 2 } + +vdslLineMCMConfProfileTxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxPSDEntry 3 } + + vdslLineMCMConfProfileTxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + + + + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileTxPSDEntry 4 } + +vdslLineMCMConfProfileMaxTxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileMaxTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit maximum PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL modem. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 5 } + +vdslLineMCMConfProfileMaxTxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileMaxTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the maximum power spectral density (PSD) + for a tone." + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileMaxTxPSDNumber } + ::= { vdslLineMCMConfProfileMaxTxPSDTable 1 } + +VdslLineMCMConfProfileMaxTxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileMaxTxPSDNumber Unsigned32, + vdslLineMCMConfProfileMaxTxPSDTone Unsigned32, + vdslLineMCMConfProfileMaxTxPSDPSD Unsigned32, + vdslLineMCMConfProfileMaxTxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileMaxTxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 1 } + +vdslLineMCMConfProfileMaxTxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified. + There must not be multiple rows defined, for a particular + profile, with the same value for this field." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 2 } + +vdslLineMCMConfProfileMaxTxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 3 } + +vdslLineMCMConfProfileMaxTxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + There must be only one entry in this table for each tone + associated with a specific profile. This will be checked + during the validation process. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + + + + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 4 } + +vdslLineMCMConfProfileMaxRxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileMaxRxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains maximum receive PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL modem. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 6 } + +vdslLineMCMConfProfileMaxRxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileMaxRxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the power spectral density (PSD) for a + tone." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileMaxRxPSDNumber } + ::= { vdslLineMCMConfProfileMaxRxPSDTable 1 } + +VdslLineMCMConfProfileMaxRxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileMaxRxPSDNumber Unsigned32, + vdslLineMCMConfProfileMaxRxPSDTone Unsigned32, + vdslLineMCMConfProfileMaxRxPSDPSD Unsigned32, + vdslLineMCMConfProfileMaxRxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileMaxRxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 1 } + +vdslLineMCMConfProfileMaxRxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified. + There must not be multiple rows defined, for a particular + profile, with the same value for this field." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 2 } + +vdslLineMCMConfProfileMaxRxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 3 } + +vdslLineMCMConfProfileMaxRxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + There must be only one entry in this table for each tone + associated with a specific profile. This will be checked + during the validation process. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 4 } + + + +-- conformance information + +vdslLineExtMCMConformance OBJECT IDENTIFIER ::= + { vdslLineExtMCMMib 2 } +vdslLineExtMCMGroups OBJECT IDENTIFIER ::= + { vdslLineExtMCMConformance 1 } +vdslLineExtMCMCompliances OBJECT IDENTIFIER ::= + { vdslLineExtMCMConformance 2 } + +vdslLineExtMCMMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + MODULE -- this module + MANDATORY-GROUPS + { + vdslLineExtMCMGroup + } + + ::= { vdslLineExtMCMCompliances 1 } + +-- units of conformance + + vdslLineExtMCMGroup OBJECT-GROUP + OBJECTS + { + vdslLineMCMConfProfileTxWindowLength, + vdslLineMCMConfProfileRowStatus, + vdslLineMCMConfProfileTxBandStart, + vdslLineMCMConfProfileTxBandStop, + vdslLineMCMConfProfileTxBandRowStatus, + vdslLineMCMConfProfileRxBandStart, + vdslLineMCMConfProfileRxBandStop, + vdslLineMCMConfProfileRxBandRowStatus, + vdslLineMCMConfProfileTxPSDTone, + vdslLineMCMConfProfileTxPSDPSD, + vdslLineMCMConfProfileTxPSDRowStatus, + vdslLineMCMConfProfileMaxTxPSDTone, + vdslLineMCMConfProfileMaxTxPSDPSD, + vdslLineMCMConfProfileMaxTxPSDRowStatus, + vdslLineMCMConfProfileMaxRxPSDTone, + vdslLineMCMConfProfileMaxRxPSDPSD, + vdslLineMCMConfProfileMaxRxPSDRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + + + + information for a VDSL line based upon multiple + carrier modulation modem." + ::= { vdslLineExtMCMGroups 1 } + +END diff --git a/mibs/ietf/VDSL-LINE-EXT-SCM-MIB b/mibs/ietf/VDSL-LINE-EXT-SCM-MIB new file mode 100644 index 0000000..2d8fa65 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-EXT-SCM-MIB @@ -0,0 +1,477 @@ +VDSL-LINE-EXT-SCM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, +OBJECT-TYPE, +Integer32, +transmission, +Unsigned32 FROM SNMPv2-SMI -- [RFC2578] +TEXTUAL-CONVENTION, +TruthValue, +RowStatus FROM SNMPv2-TC -- [RFC2579] +MODULE-COMPLIANCE, +OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] +ifIndex FROM IF-MIB -- [RFC2863] +vdslLineConfProfileName FROM VDSL-LINE-MIB; -- [RFC3728] + +vdslExtSCMMIB MODULE-IDENTITY + LAST-UPDATED "200504280000Z" -- April 28, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair/Co-editor: + Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + + + Co-editor: Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + " + +DESCRIPTION + "The VDSL-LINE-MIB found in RFC 3728 defines objects for the + management of a pair of VDSL transceivers at each end of the VDSL + line. The VDSL-LINE-MIB configures and monitors the line code + independent parameters (TC layer) of the VDSL line. This MIB + module is an optional extension of the VDSL-LINE-MIB and defines + objects for configuration and monitoring of the line code specific + (LCS) elements (PMD layer) for VDSL lines using SCM coding. The + objects in this extension MIB MUST NOT be used for VDSL lines + using Multiple Carrier Modulation (MCM) line coding. If an object + in this extension MIB is referenced by a line which does not use + SCM, it has no effect on the operation of that line. + + Naming Conventions: + + Vtuc -- VDSL transceiver at near (Central) end of line + Vtur -- VDSL transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + Atn -- Attenuation + LCS -- Line Code Specific + Max -- Maximum + Mgn -- Margin + PSD -- Power Spectral Density + Rx -- Receive + Snr -- Signal to Noise Ratio + Tx -- Transmit + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4069: see the RFC + itself for full legal notices." + REVISION "200504280000Z" -- April 28, 2005 + DESCRIPTION "Initial version, published as RFC 4069." + ::= { transmission 228 } + + vdslLineExtSCMMib OBJECT IDENTIFIER ::= { vdslExtSCMMIB 1 } + vdslLineExtSCMMibObjects OBJECT IDENTIFIER ::= + { vdslLineExtSCMMib 1 } +-- + + + +-- textual conventions used in this MIB +-- + +VdslSCMBandId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the VDSL SCM Band + Identity. Attributes with this syntax identify the SCM Band + referred to. Specified as an INTEGER, the possible values + are: + + optionalBand (1) -- the optional Band range [25kHz - 138kHz] + firstDownstreamBand (2) -- first Downstream Band + firstUpstreamBand (3) -- first Upstream Band + secondDownstreamBand (4) -- second Downstream Band + secondUpstreamBand (5) -- second Upstream Band + thirdDownstreamBand (6) -- third Downstream Band + thirdUpstreamBand (7) -- third Upstream Band" + + + SYNTAX INTEGER { optionalBand (1), + firstDownstreamBand (2), + firstUpstreamBand (3), + secondDownstreamBand (4), + secondUpstreamBand (5), + thirdDownstreamBand (6), + thirdUpstreamBand(7) } + +-- +-- Single carrier modulation (SCM) configuration profile tables +-- + +vdslLineSCMConfProfileBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineSCMConfProfileBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + of a single carrier modulation (SCM) VDSL line. For each + profile which is associated with a VDSL line using SCM + line coding, five entries in this table will exist, one for + each of the five bands. Bands which are not in use will be + marked as unused. These entries are defined by a manager + and can be used to configure the VDSL line. If an entry in + + + + + + this table is referenced by a line which does not use SCM, + it has no effect on the operation of that line." + ::= { vdslLineExtSCMMibObjects 1 } + +vdslLineSCMConfProfileBandEntry OBJECT-TYPE + SYNTAX VdslLineSCMConfProfileBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a single carrier + modulation VDSL modem transmit band. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document. + + All read-create objects defined in this MIB module SHOULD be + stored persistently." + + INDEX { vdslLineConfProfileName, + vdslLineSCMConfProfileBandId } + ::= { vdslLineSCMConfProfileBandTable 1 } + +VdslLineSCMConfProfileBandEntry ::= + SEQUENCE + { + vdslLineSCMConfProfileBandId VdslSCMBandId, + vdslLineSCMConfProfileBandInUse TruthValue, + vdslLineSCMConfProfileBandCenterFrequency Unsigned32, + vdslLineSCMConfProfileBandSymbolRate Unsigned32, + vdslLineSCMConfProfileBandConstellationSize Unsigned32, + vdslLineSCMConfProfileBandTransmitPSDLevel Unsigned32, + vdslLineSCMConfProfileBandRowStatus RowStatus + } + +vdslLineSCMConfProfileBandId OBJECT-TYPE + SYNTAX VdslSCMBandId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BandId for this entry, which specifies which band + is being referred to." + ::= { vdslLineSCMConfProfileBandEntry 1 } + + + + + + +vdslLineSCMConfProfileBandInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether this band is in use. + If set to True this band is in use." + ::= { vdslLineSCMConfProfileBandEntry 2 } + +vdslLineSCMConfProfileBandCenterFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the center frequency in Hz" + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 3 } + +vdslLineSCMConfProfileBandSymbolRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "baud" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested symbol rate in baud." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 4 } + +vdslLineSCMConfProfileBandConstellationSize OBJECT-TYPE + SYNTAX Unsigned32 (0..16) + UNITS "log2" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the constellation size." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 5 } + + + + + + + + + + + + + +vdslLineSCMConfProfileBandTransmitPSDLevel OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "-0.25 dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested transmit power spectral density for the VDSL + modem. The Actual value in -0.25 dBm/Hz." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 6 } + +vdslLineSCMConfProfileBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the `active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + + ::= { vdslLineSCMConfProfileBandEntry 7 } + +-- +-- SCM physical band +-- + +vdslLineSCMPhysBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineSCMPhysBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each SCM Vtu band. This + table is read only as it reflects the current physical + parameters of each band. For each ifIndex which is + associated with a VDSL line using SCM line coding, five + entries in this table will exist, one for each of the + five bands. Bands which are not in use will be marked + as unused." + + + + ::= { vdslLineExtSCMMibObjects 2 } + +vdslLineSCMPhysBandEntry OBJECT-TYPE + SYNTAX VdslLineSCMPhysBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslLineSCMPhysBandTable." + INDEX { ifIndex, + vdslLineSCMPhysBandId } + ::= { vdslLineSCMPhysBandTable 1 } + +VdslLineSCMPhysBandEntry ::= + SEQUENCE + { + vdslLineSCMPhysBandId VdslSCMBandId, + vdslLineSCMPhysBandInUse TruthValue, + vdslLineSCMPhysBandCurrCenterFrequency Unsigned32, + vdslLineSCMPhysBandCurrSymbolRate Unsigned32, + vdslLineSCMPhysBandCurrConstellationSize Unsigned32, + vdslLineSCMPhysBandCurrPSDLevel Unsigned32, + vdslLineSCMPhysBandCurrSnrMgn Integer32, + vdslLineSCMPhysBandCurrAtn Unsigned32 + } + +vdslLineSCMPhysBandId OBJECT-TYPE + SYNTAX VdslSCMBandId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BandId for this entry, which specifies which band + is being referred to." + ::= { vdslLineSCMPhysBandEntry 1 } + +vdslLineSCMPhysBandInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this band is in use. + If set to True this band is in use." + ::= { vdslLineSCMPhysBandEntry 2 } + + + + + + + + + +vdslLineSCMPhysBandCurrCenterFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Hz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current center frequency in Hz for this band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 3 } + +vdslLineSCMPhysBandCurrSymbolRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "baud" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the symbol rate in baud for this + band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 4 } + +vdslLineSCMPhysBandCurrConstellationSize OBJECT-TYPE + SYNTAX Unsigned32 (0..16) + UNITS "log2" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current constellation size on this band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 5 } + +vdslLineSCMPhysBandCurrPSDLevel OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "- 0.25 dBm/Hz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmit power spectral density for the + VDSL modem." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 6 } + + + + + + + + + + +vdslLineSCMPhysBandCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.25 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise margin as seen by this Vtu and band with respect + to its received signal in 0.25 dB." + ::= { vdslLineSCMPhysBandEntry 7 } + +vdslLineSCMPhysBandCurrAtn OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "0.25 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer Vtu on this band and the total power received + by this Vtu on this band in 0.25 dB." + ::= { vdslLineSCMPhysBandEntry 8 } + +-- conformance information + +vdslLineExtSCMConformance OBJECT IDENTIFIER ::= + { vdslLineExtSCMMib 2 } +vdslLineExtSCMGroups OBJECT IDENTIFIER ::= + { vdslLineExtSCMConformance 1 } +vdslLineExtSCMCompliances OBJECT IDENTIFIER ::= + { vdslLineExtSCMConformance 2 } + +vdslLineExtSCMMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + + MODULE -- this module + + MANDATORY-GROUPS + { + vdslLineExtSCMGroup + } + + ::= { vdslLineExtSCMCompliances 1 } + + + + + + + +-- units of conformance + +vdslLineExtSCMGroup OBJECT-GROUP + OBJECTS + { + vdslLineSCMConfProfileBandInUse, + vdslLineSCMConfProfileBandTransmitPSDLevel, + vdslLineSCMConfProfileBandSymbolRate, + vdslLineSCMConfProfileBandConstellationSize, + vdslLineSCMConfProfileBandCenterFrequency, + vdslLineSCMConfProfileBandRowStatus, + vdslLineSCMPhysBandInUse, + vdslLineSCMPhysBandCurrPSDLevel, + vdslLineSCMPhysBandCurrSymbolRate, + vdslLineSCMPhysBandCurrConstellationSize, + vdslLineSCMPhysBandCurrCenterFrequency, + vdslLineSCMPhysBandCurrSnrMgn, + vdslLineSCMPhysBandCurrAtn + + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information for a VDSL line based upon single carrier + modulation modem." + ::= { vdslLineExtSCMGroups 1 } + +END diff --git a/mibs/ietf/VDSL-LINE-MIB b/mibs/ietf/VDSL-LINE-MIB new file mode 100644 index 0000000..66f7522 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-MIB @@ -0,0 +1,3014 @@ +VDSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, +OBJECT-TYPE, +Gauge32, +Integer32, +Unsigned32, +NOTIFICATION-TYPE, +transmission FROM SNMPv2-SMI -- [RFC2578] +ZeroBasedCounter64 FROM HCNUM-TC -- [RFC2856] +TEXTUAL-CONVENTION, +RowStatus, +TruthValue FROM SNMPv2-TC -- [RFC2579] +HCPerfValidIntervals, +HCPerfInvalidIntervals, +HCPerfTimeElapsed, + + + +HCPerfIntervalThreshold, +HCPerfCurrentCount, +HCPerfIntervalCount FROM HC-PerfHist-TC-MIB -- [RFC3705] +MODULE-COMPLIANCE, +OBJECT-GROUP, +NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] +ifIndex FROM IF-MIB -- [RFC2863] +SnmpAdminString FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +vdslMIB MODULE-IDENTITY + LAST-UPDATED "200402190000Z" -- February 19, 2004 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh, NC 27627-7324 + USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 + USA + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194 + " +DESCRIPTION + "The MIB module defining objects for the management of a pair + of VDSL transceivers at each end of the VDSL line. Each such + line has an entry in an ifTable which may include multiple + transceiver lines. An agent may reside at either end of the + VDSL line. However, the MIB is designed to require no + management communication between them beyond that inherent in + the low-level VDSL line protocol. The agent may monitor and + control this protocol for its needs. + + + + VDSL lines may support optional Fast or Interleaved channels. + If these are supported, additional entries corresponding to the + supported channels must be created in the ifTable. Thus a VDSL + line that supports both channels will have three entries in the + ifTable, one for each physical, fast, and interleaved, whose + ifType values are equal to vdsl(97), fast(125), and + interleaved(124), respectively. The ifStackTable is used to + represent the relationship between the entries. + + Naming Conventions: + Vtuc -- (VTUC) transceiver at near (Central) end of line + Vtur -- (VTUR) transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + Prev -- Previous + Atn -- Attenuation + ES -- Errored Second. + SES -- Severely Errored Second + UAS -- Unavailable Second + LCS -- Line Code Specific + Lof -- Loss of Frame + Lol -- Loss of Link + Los -- Loss of Signal + Lpr -- Loss of Power + xxxs -- Sum of Seconds in which xxx has occured + (e.g., xxx = Lof, Los, Lpr, Lol) + Max -- Maximum + Mgn -- Margin + Min -- Minimum + Psd -- Power Spectral Density + Snr -- Signal to Noise Ratio + Tx -- Transmit + Blks -- Blocks + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3728: see the RFC + itself for full legal notices." + REVISION "200402190000Z" -- February 19, 2004 + DESCRIPTION "Initial version, published as RFC 3728." + ::= { transmission 97 } + +vdslLineMib OBJECT IDENTIFIER ::= { vdslMIB 1 } +vdslMibObjects OBJECT IDENTIFIER ::= { vdslLineMib 1 } + +-- +-- textual conventions used in this MIB +-- + + + + +VdslLineCodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the VDSL Line + Code. Attributes with this syntax identify the line coding + used. Specified as an INTEGER, the three values are: + + other(1) -- none of the following + mcm(2) -- Multiple Carrier Modulation + scm(3) -- Single Carrier Modulation" + SYNTAX INTEGER + { + other(1), + mcm(2), + scm(3) + } + +VdslLineEntity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a transceiver as being either Vtuc or Vtur. + A VDSL line consists of two transceivers, a Vtuc and a + Vtur. Attributes with this syntax reference the two sides + of a line. Specified as an INTEGER, the two values are: + + vtuc(1) -- central site transceiver + vtur(2) -- remote site transceiver" + SYNTAX INTEGER + { + vtuc(1), + vtur(2) + } + +-- +-- objects +-- + +vdslLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes common attributes describing + both ends of the line. It is required for all VDSL + physical interfaces. VDSL physical interfaces are + those ifEntries where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 1 } + + + + +vdslLineEntry OBJECT-TYPE + SYNTAX VdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the vdslLineTable." + INDEX { ifIndex } + ::= { vdslLineTable 1 } + +VdslLineEntry ::= + SEQUENCE + { + vdslLineCoding VdslLineCodingType, + vdslLineType INTEGER, + vdslLineConfProfile SnmpAdminString, + vdslLineAlarmConfProfile SnmpAdminString + } + +vdslLineCoding OBJECT-TYPE + SYNTAX VdslLineCodingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the VDSL coding type used on this line." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslLineEntry 1 } + +vdslLineType OBJECT-TYPE + SYNTAX INTEGER + { + noChannel(1), -- no channels exist + fastOnly(2), -- only fast channel exists + interleavedOnly(3), -- only interleaved channel exists + fastOrInterleaved(4), -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of VDSL physical line entity that exists, + by defining whether and how the line is channelized. If + + + + + + + + + + the line is channelized, the value will be other than + noChannel(1). This object defines which channel type(s) + are supported. Defined values are: + + noChannel(1) -- no channels exist + fastOnly(2) -- only fast channel exists + interleavedOnly(3) -- only interleaved channel exists + fastOrInterleaved(4) -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + + Note that 'slow' and 'interleaved' refer to the same + channel. In the case that the line is channelized, the + manager can use the ifStackTable to determine the ifIndex + for the associated channel(s)." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslLineEntry 2 } + +vdslLineConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the VDSL + Line Configuration Profile Table, vdslLineConfProfileTable, + which applies for this VDSL line, and channels if + applicable. + + This object MUST be maintained in a persistent manner." + DEFVAL { "DEFVAL" } + ::= { vdslLineEntry 3 } + +vdslLineAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the VDSL + Line Alarm Configuration Profile Table, + vdslLineAlarmConfProfileTable, which applies to this + VDSL line, and channels if applicable. + + This object MUST be maintained in a persistent manner." + DEFVAL { "DEFVAL" } + ::= { vdslLineEntry 4 } + +vdslPhysTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF VdslPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu. Each row + contains the Physical Layer Parameters table for that + Vtu. VDSL physical interfaces are those ifEntries where + ifType is equal to vdsl(97)." + ::= { vdslMibObjects 2 } + +vdslPhysEntry OBJECT-TYPE + SYNTAX VdslPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the vdslPhysTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslPhysTable 1 } + +VdslPhysEntry ::= + SEQUENCE + { + vdslPhysSide VdslLineEntity, + vdslPhysInvSerialNumber SnmpAdminString, + vdslPhysInvVendorID SnmpAdminString, + vdslPhysInvVersionNumber SnmpAdminString, + vdslPhysCurrSnrMgn Integer32, + vdslPhysCurrAtn Gauge32, + vdslPhysCurrStatus BITS, + vdslPhysCurrOutputPwr Integer32, + vdslPhysCurrAttainableRate Gauge32, + vdslPhysCurrLineRate Gauge32 + } + +vdslPhysSide OBJECT-TYPE + SYNTAX VdslLineEntity + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies whether the transceiver is the Vtuc or Vtur." + ::= { vdslPhysEntry 1 } + +vdslPhysInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString(SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + + + + vendor equipment." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 2 } + +vdslPhysInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary vendor + identification field expressed as readable characters + in hexadecimal notation." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 3 } + +vdslPhysInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this Vtu + as part of the initialization messages. It is a copy + of the binary version number field expressed as + readable characters in hexadecimal notation." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 4 } + +vdslPhysCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32 (-127..127) + UNITS "0.25dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this Vtu with respect to its + received signal in 0.25dB. The effective range is + -31.75 to +31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 5 } + +vdslPhysCurrAtn OBJECT-TYPE + SYNTAX Gauge32 (0..255) + UNITS "0.25dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer Vtu and the total power received by this Vtu. + The effective range is 0 to +63.75 dB." + + + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 6 } + +vdslPhysCurrStatus OBJECT-TYPE + SYNTAX BITS + { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4), + lossOfLink(5), + dataInitFailure(6), + configInitFailure(7), + protocolInitFailure(8), + noPeerVtuPresent(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the Vtu line. This is a + bit-map of possible conditions. The various bit + positions are: + + 0 noDefect There are no defects on the line. + + 1 lossOfFraming Vtu failure due to not receiving + a valid frame. + + 2 lossOfSignal Vtu failure due to not receiving + signal. + + 3 lossOfPower Vtu failure due to loss of power. + + 4 lossOfSignalQuality Loss of Signal Quality is declared + when the Noise Margin falls below + the Minimum Noise Margin, or the + bit-error-rate exceeds 10^-7. + + 5 lossOfLink Vtu failure due to inability to + link with peer Vtu. Set whenever + the transceiver is in the 'Warm + Start' state. + + 6 dataInitFailure Vtu failure during initialization + due to bit errors corrupting + startup exchange data. + + + + + 7 configInitFailure Vtu failure during initialization + due to peer Vtu not able to + support requested configuration. + + 8 protocolInitFailure Vtu failure during initialization + due to incompatible protocol used + by the peer Vtu. + + 9 noPeerVtuPresent Vtu failure during initialization + due to no activation sequence + detected from peer Vtu. + + This is intended to supplement ifOperStatus." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 7 } + +vdslPhysCurrOutputPwr OBJECT-TYPE + SYNTAX Integer32 (0..160) + UNITS "0.1dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this VTU. + This is the measurement that was reported during + the last activation sequence." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 8 } + +vdslPhysCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + in steps of 1000 bits/second by the Vtu. This value + will be equal to or greater than vdslPhysCurrLineRate. + Note that for SCM, the minimum and maximum data rates + are equal. Note: 1 kbps = 1000 bps." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 9 } + +vdslPhysCurrLineRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Indicates the current data rate in steps of 1000 + bits/second by the Vtu. This value will be less than + or equal to vdslPhysCurrAttainableRate. Note: 1 kbps = + 1000 bps." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 10 } + +vdslChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel. + VDSL channel interfaces are those ifEntries where + ifType is equal to interleave(124) or fast(125)." + ::= { vdslMibObjects 3 } + +vdslChanEntry OBJECT-TYPE + SYNTAX VdslChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslChanTable 1 } + +VdslChanEntry ::= + SEQUENCE + { + vdslChanInterleaveDelay Gauge32, + vdslChanCrcBlockLength Gauge32, + vdslChanCurrTxRate Gauge32, + vdslChanCurrTxSlowBurstProtect Gauge32, + vdslChanCurrTxFastFec Gauge32 + } + +vdslChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the interleave + (slow) channel and defines the mapping (relative + spacing) between subsequent input bytes at the + + + + interleaver input and their placement in the bit + stream at the interleaver output. Larger numbers + provide greater separation between consecutive + input bytes in the output bit stream allowing for + improved impulse noise immunity at the expense of + payload latency. + + In the case where the ifType is fast(125), return + a value of zero." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanEntry 1 } + +vdslChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanEntry 2 } + +vdslChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit data rate on this channel. Note: 1 + kbps = 1000 bps." + ::= { vdslChanEntry 3 } + +vdslChanCurrTxSlowBurstProtect OBJECT-TYPE + SYNTAX Gauge32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual level of impulse noise (burst) protection + for an interleaved (slow) channel. This parameter is + not applicable to fast channels. For fast channels, + a value of zero shall be returned." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + ::= { vdslChanEntry 4 } + +vdslChanCurrTxFastFec OBJECT-TYPE + SYNTAX Gauge32 (0..50) + + + + UNITS "%" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Forward Error Correction (FEC) redundancy + related overhead for a fast channel. This parameter + is not applicable to an interleaved (slow) channel. + For interleaved channels, a value of zero shall be + returned." + ::= { vdslChanEntry 5 } + +vdslPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL physical + interface. VDSL physical interfaces are those ifEntries + where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 4 } + +vdslPerfDataEntry OBJECT-TYPE + SYNTAX VdslPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerfDataTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslPerfDataTable 1 } + +VdslPerfDataEntry ::= + SEQUENCE + { + vdslPerfDataValidIntervals HCPerfValidIntervals, + vdslPerfDataInvalidIntervals HCPerfInvalidIntervals, + vdslPerfDataLofs Unsigned32, + vdslPerfDataLoss Unsigned32, + vdslPerfDataLprs Unsigned32, + vdslPerfDataLols Unsigned32, + vdslPerfDataESs Unsigned32, + vdslPerfDataSESs Unsigned32, + vdslPerfDataUASs Unsigned32, + vdslPerfDataInits Unsigned32, + vdslPerfDataCurr15MinTimeElapsed HCPerfTimeElapsed, + vdslPerfDataCurr15MinLofs HCPerfCurrentCount, + vdslPerfDataCurr15MinLoss HCPerfCurrentCount, + vdslPerfDataCurr15MinLprs HCPerfCurrentCount, + + + + vdslPerfDataCurr15MinLols HCPerfCurrentCount, + vdslPerfDataCurr15MinESs HCPerfCurrentCount, + vdslPerfDataCurr15MinSESs HCPerfCurrentCount, + vdslPerfDataCurr15MinUASs HCPerfCurrentCount, + vdslPerfDataCurr15MinInits HCPerfCurrentCount, + vdslPerfData1DayValidIntervals HCPerfValidIntervals, + vdslPerfData1DayInvalidIntervals HCPerfInvalidIntervals, + vdslPerfDataCurr1DayTimeElapsed HCPerfTimeElapsed, + vdslPerfDataCurr1DayLofs Unsigned32, + vdslPerfDataCurr1DayLoss Unsigned32, + vdslPerfDataCurr1DayLprs Unsigned32, + vdslPerfDataCurr1DayLols Unsigned32, + vdslPerfDataCurr1DayESs Unsigned32, + vdslPerfDataCurr1DaySESs Unsigned32, + vdslPerfDataCurr1DayUASs Unsigned32, + vdslPerfDataCurr1DayInits Unsigned32 + } + +vdslPerfDataValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 1 } + +vdslPerfDataInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 2 } + +vdslPerfDataLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 3 } + + + +vdslPerfDataLoss OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 4 } + +vdslPerfDataLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Power." + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 5 } + +vdslPerfDataLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Link." + ::= { vdslPerfDataEntry 6 } + +vdslPerfDataESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds since the unit was last reset. + An Errored Second is a one-second interval containing one + or more CRC anomalies, or one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 7 } + +vdslPerfDataSESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds since the unit was last + reset." + ::= { vdslPerfDataEntry 8 } + +vdslPerfDataUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds since the unit was last + reset." + ::= { vdslPerfDataEntry 9 } + +vdslPerfDataInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "occurrences" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since the unit + was last reset. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 10 } + +vdslPerfDataCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { vdslPerfDataEntry 11 } + +vdslPerfDataCurr15MinLofs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 12 } + + + +vdslPerfDataCurr15MinLoss OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 13 } + +vdslPerfDataCurr15MinLprs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Power." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 14 } + +vdslPerfDataCurr15MinLols OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Link." + ::= { vdslPerfDataEntry 15 } + +vdslPerfDataCurr15MinESs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during this interval. An Errored + Second is a one-second interval containing one or more CRC + anomalies, or one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 16 } + +vdslPerfDataCurr15MinSESs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds during this interval." + ::= { vdslPerfDataEntry 17 } + +vdslPerfDataCurr15MinUASs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds during this interval." + ::= { vdslPerfDataEntry 18 } + +vdslPerfDataCurr15MinInits OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "occurrences" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during this + interval. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 19 } + +vdslPerfData1DayValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 20 } + +vdslPerfData1DayInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 21 } + +vdslPerfDataCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 22 } + +vdslPerfDataCurr1DayLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Framing (LOF) Seconds since the + beginning of the current 1-day interval." + ::= { vdslPerfDataEntry 23 } + +vdslPerfDataCurr1DayLoss OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Signal (LOS) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 24 } + +vdslPerfDataCurr1DayLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Power (LPR) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 25 } + +vdslPerfDataCurr1DayLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Link (LOL) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 26 } + + + + +vdslPerfDataCurr1DayESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 27 } + +vdslPerfDataCurr1DaySESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) since the + beginning of the current 1-day interval." + ::= { vdslPerfDataEntry 28 } + +vdslPerfDataCurr1DayUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 29 } + +vdslPerfDataCurr1DayInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since the + beginning of the current 1-day interval. This count + includes both successful and failed attempts." + ::= { vdslPerfDataEntry 30 } + +vdslPerfIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerfIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu performance + data collection interval. VDSL physical interfaces are + + + + those ifEntries where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 5 } + +vdslPerfIntervalEntry OBJECT-TYPE + SYNTAX VdslPerfIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerfIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslPerfIntervalNumber } + ::= { vdslPerfIntervalTable 1 } + +VdslPerfIntervalEntry ::= + SEQUENCE + { + vdslPerfIntervalNumber Unsigned32, + vdslPerfIntervalLofs HCPerfIntervalCount, + vdslPerfIntervalLoss HCPerfIntervalCount, + vdslPerfIntervalLprs HCPerfIntervalCount, + vdslPerfIntervalLols HCPerfIntervalCount, + vdslPerfIntervalESs HCPerfIntervalCount, + vdslPerfIntervalSESs HCPerfIntervalCount, + vdslPerfIntervalUASs HCPerfIntervalCount, + vdslPerfIntervalInits HCPerfIntervalCount + } + +vdslPerfIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the most recent + previous interval; interval 96 is 24 hours ago. + Intervals 2 to 96 are optional." + ::= { vdslPerfIntervalEntry 1 } + +vdslPerfIntervalLofs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 2 } + + + +vdslPerfIntervalLoss OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 3 } + +vdslPerfIntervalLprs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Power." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 4 } + +vdslPerfIntervalLols OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Link." + ::= { vdslPerfIntervalEntry 5 } + +vdslPerfIntervalESs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) in the interval. An Errored + Second is a one-second interval containing one or more CRC + anomalies, one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 6 } + +vdslPerfIntervalSESs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds in the interval." + ::= { vdslPerfIntervalEntry 7 } + +vdslPerfIntervalUASs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds in the interval." + ::= { vdslPerfIntervalEntry 8 } + +vdslPerfIntervalInits OBJECT-TYPE + SYNTAX HCPerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during this + interval. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 9 } + +vdslPerf1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerf1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL performance + data collection interval. This table contains live data + from equipment. As such, it is NOT persistent." + ::= { vdslMibObjects 6 } + +vdslPerf1DayIntervalEntry OBJECT-TYPE + SYNTAX VdslPerf1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerf1DayIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslPerf1DayIntervalNumber } + ::= { vdslPerf1DayIntervalTable 1 } + +VdslPerf1DayIntervalEntry ::= + SEQUENCE + + + + { + vdslPerf1DayIntervalNumber Unsigned32, + vdslPerf1DayIntervalMoniSecs HCPerfTimeElapsed, + vdslPerf1DayIntervalLofs Unsigned32, + vdslPerf1DayIntervalLoss Unsigned32, + vdslPerf1DayIntervalLprs Unsigned32, + vdslPerf1DayIntervalLols Unsigned32, + vdslPerf1DayIntervalESs Unsigned32, + vdslPerf1DayIntervalSESs Unsigned32, + vdslPerf1DayIntervalUASs Unsigned32, + vdslPerf1DayIntervalInits Unsigned32 + } + +vdslPerf1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2 to 30 are optional." + ::= { vdslPerf1DayIntervalEntry 1 } + +vdslPerf1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { vdslPerf1DayIntervalEntry 2 } + +vdslPerf1DayIntervalLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Frame (LOF) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 3 } + +vdslPerf1DayIntervalLoss OBJECT-TYPE + + + + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Signal (LOS) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 4 } + +vdslPerf1DayIntervalLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Power (LPR) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 5 } + +vdslPerf1DayIntervalLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Link (LOL) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 6 } + +vdslPerf1DayIntervalESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 7 } + +vdslPerf1DayIntervalSESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Count of Severely Errored Seconds (SES) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 8 } + +vdslPerf1DayIntervalUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 9 } + +vdslPerf1DayIntervalInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during the + 1-day interval as measured by vdslPerf1DayIntervalMoniSecs. + This count includes both successful and failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 10 } + +vdslChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel. + VDSL channel interfaces are those ifEntries where + ifType is equal to interleave(124) or fast(125)." + ::= { vdslMibObjects 7 } + +vdslChanPerfDataEntry OBJECT-TYPE + SYNTAX VdslChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanPerfDataTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslChanPerfDataTable 1 } + +VdslChanPerfDataEntry ::= + SEQUENCE + + + + { + vdslChanValidIntervals HCPerfValidIntervals, + vdslChanInvalidIntervals HCPerfInvalidIntervals, + vdslChanFixedOctets ZeroBasedCounter64, + vdslChanBadBlks ZeroBasedCounter64, + vdslChanCurr15MinTimeElapsed HCPerfTimeElapsed, + vdslChanCurr15MinFixedOctets HCPerfCurrentCount, + vdslChanCurr15MinBadBlks HCPerfCurrentCount, + vdslChan1DayValidIntervals HCPerfValidIntervals, + vdslChan1DayInvalidIntervals HCPerfInvalidIntervals, + vdslChanCurr1DayTimeElapsed HCPerfTimeElapsed, + vdslChanCurr1DayFixedOctets HCPerfCurrentCount, + vdslChanCurr1DayBadBlks HCPerfCurrentCount + } + +vdslChanValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 1 } + +vdslChanInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 2 } + +vdslChanFixedOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets since the unit was last reset." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 3 } + +vdslChanBadBlks OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "blocks" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks since the unit was last + reset." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 4 } + +vdslChanCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { vdslChanPerfDataEntry 5 } + +vdslChanCurr15MinFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 6 } + +vdslChanCurr15MinBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 7 } + +vdslChan1DayValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 8 } + +vdslChan1DayInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 9 } + +vdslChanCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning + of the current 1-day interval." + ::= { vdslChanPerfDataEntry 10 } + +vdslChanCurr1DayFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets since the beginning of the + current 1-day interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 11 } + +vdslChanCurr1DayBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks since the beginning of the + current 1-day interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 12 } + +vdslChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel data + collection interval. VDSL channel interfaces are those + ifEntries where ifType is equal to interleave(124) or + fast(125)." + + + + ::= { vdslMibObjects 8 } + +vdslChanIntervalEntry OBJECT-TYPE + SYNTAX VdslChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslChanIntervalNumber } + ::= { vdslChanIntervalTable 1 } + +VdslChanIntervalEntry ::= + SEQUENCE + { + vdslChanIntervalNumber Unsigned32, + vdslChanIntervalFixedOctets HCPerfIntervalCount, + vdslChanIntervalBadBlks HCPerfIntervalCount + } + +vdslChanIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the most recent + previous interval; interval 96 is 24 hours ago. + Intervals 2 to 96 are optional." + ::= { vdslChanIntervalEntry 1 } + +vdslChanIntervalFixedOctets OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanIntervalEntry 2 } + +vdslChanIntervalBadBlks OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + + + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanIntervalEntry 3 } + +vdslChan1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChan1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL performance + data collection interval. This table contains live data + from equipment. As such, it is NOT persistent." + ::= { vdslMibObjects 9 } + +vdslChan1DayIntervalEntry OBJECT-TYPE + SYNTAX VdslChan1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChan1DayIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslChan1DayIntervalNumber } + ::= { vdslChan1DayIntervalTable 1 } + +VdslChan1DayIntervalEntry ::= + SEQUENCE + { + vdslChan1DayIntervalNumber Unsigned32, + vdslChan1DayIntervalMoniSecs HCPerfTimeElapsed, + vdslChan1DayIntervalFixedOctets HCPerfCurrentCount, + vdslChan1DayIntervalBadBlks HCPerfCurrentCount + } + +vdslChan1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2 to 30 are optional." + ::= { vdslChan1DayIntervalEntry 1 } + +vdslChan1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { vdslChan1DayIntervalEntry 2 } + +vdslChan1DayIntervalFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChan1DayIntervalEntry 3 } + +vdslChan1DayIntervalBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChan1DayIntervalEntry 4 } + +-- +-- profile tables +-- + +vdslLineConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the VDSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the VDSL line. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { vdslMibObjects 11 } + +vdslLineConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineConfProfileEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a VDSL line. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + INDEX { vdslLineConfProfileName } + ::= { vdslLineConfProfileTable 1 } + +VdslLineConfProfileEntry ::= + SEQUENCE + { + vdslLineConfProfileName SnmpAdminString, + vdslLineConfDownRateMode INTEGER, + vdslLineConfUpRateMode INTEGER, + vdslLineConfDownMaxPwr Unsigned32, + vdslLineConfUpMaxPwr Unsigned32, + vdslLineConfDownMaxSnrMgn Unsigned32, + vdslLineConfDownMinSnrMgn Unsigned32, + vdslLineConfDownTargetSnrMgn Unsigned32, + vdslLineConfUpMaxSnrMgn Unsigned32, + vdslLineConfUpMinSnrMgn Unsigned32, + vdslLineConfUpTargetSnrMgn Unsigned32, + vdslLineConfDownFastMaxDataRate Unsigned32, + vdslLineConfDownFastMinDataRate Unsigned32, + vdslLineConfDownSlowMaxDataRate Unsigned32, + vdslLineConfDownSlowMinDataRate Unsigned32, + vdslLineConfUpFastMaxDataRate Unsigned32, + vdslLineConfUpFastMinDataRate Unsigned32, + vdslLineConfUpSlowMaxDataRate Unsigned32, + vdslLineConfUpSlowMinDataRate Unsigned32, + vdslLineConfDownRateRatio Unsigned32, + vdslLineConfUpRateRatio Unsigned32, + vdslLineConfDownMaxInterDelay Unsigned32, + vdslLineConfUpMaxInterDelay Unsigned32, + vdslLineConfDownPboControl INTEGER, + vdslLineConfUpPboControl INTEGER, + vdslLineConfDownPboLevel Unsigned32, + vdslLineConfUpPboLevel Unsigned32, + vdslLineConfDeploymentScenario INTEGER, + vdslLineConfAdslPresence INTEGER, + vdslLineConfApplicableStandard INTEGER, + vdslLineConfBandPlan INTEGER, + vdslLineConfBandPlanFx Unsigned32, + + + + vdslLineConfBandOptUsage INTEGER, + vdslLineConfUpPsdTemplate INTEGER, + vdslLineConfDownPsdTemplate INTEGER, + vdslLineConfHamBandMask BITS, + vdslLineConfCustomNotch1Start Unsigned32, + vdslLineConfCustomNotch1Stop Unsigned32, + vdslLineConfCustomNotch2Start Unsigned32, + vdslLineConfCustomNotch2Stop Unsigned32, + vdslLineConfDownTargetSlowBurst Unsigned32, + vdslLineConfUpTargetSlowBurst Unsigned32, + vdslLineConfDownMaxFastFec Unsigned32, + vdslLineConfUpMaxFastFec Unsigned32, + vdslLineConfLineType INTEGER, + vdslLineConfProfRowStatus RowStatus + } + +vdslLineConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + ::= { vdslLineConfProfileEntry 1 } + +vdslLineConfDownRateMode OBJECT-TYPE + SYNTAX INTEGER + { + manual(1), + adaptAtInit(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the rate selection behavior for the line + in the downstream direction. + + manual(1) forces the rate to the configured rate + adaptAtInit(2) adapts the line based upon line quality." + DEFVAL { adaptAtInit } + ::= { vdslLineConfProfileEntry 2 } + +vdslLineConfUpRateMode OBJECT-TYPE + SYNTAX INTEGER + + + + { + manual(1), + adaptAtInit(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the rate selection behavior for the line + in the upstream direction. + + manual(1) forces the rate to the configured rate + adaptAtInit(2) adapts the line based upon line quality." + DEFVAL { adaptAtInit } + ::= { vdslLineConfProfileEntry 3 } + +vdslLineConfDownMaxPwr OBJECT-TYPE + SYNTAX Unsigned32 (0..58) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum aggregate downstream power + level in the range 0 to 14.5 dBm." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 4 } + +vdslLineConfUpMaxPwr OBJECT-TYPE + SYNTAX Unsigned32 (0..58) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum aggregate upstream power + level in the range 0 to 14.5 dBm." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 5 } + +vdslLineConfDownMaxSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + + + + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 6 } + +vdslLineConfDownMinSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 7 } + +vdslLineConfDownTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB. + This is the Noise Margin the transceivers must achieve + with a BER of 10^-7 or better to successfully complete + initialization." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 8 } + +vdslLineConfUpMaxSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 9 } + +vdslLineConfUpMinSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Specifies the minimum upstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 10 } + +vdslLineConfUpTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target upstream Signal/Noise Margin in + units of 0.25 dB, for a range of 0 to 31.75 dB. This + is the Noise Margin the transceivers must achieve with + a BER of 10^-7 or better to successfully complete + initialization." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 11 } + +vdslLineConfDownFastMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum downstream fast channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 12 } + +vdslLineConfDownFastMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream fast channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 13 } + +vdslLineConfDownSlowMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Specifies the maximum downstream slow channel + data rate in steps of 1000 bits/second. + + The maximum aggregate downstream transmit speed + of the line can be derived from the sum of maximum + downstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 14 } + +vdslLineConfDownSlowMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream slow channel + data rate in steps of 1000 bits/second. + + The minimum aggregate downstream transmit speed + of the line can be derived from the sum of minimum + downstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 15 } + +vdslLineConfUpFastMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream fast channel + data rate in steps of 1000 bits/second. + + The maximum aggregate upstream transmit speed + of the line can be derived from the sum of maximum + upstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 16 } + +vdslLineConfUpFastMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum upstream fast channel + data rate in steps of 1000 bits/second. + + + + The minimum aggregate upstream transmit speed + of the line can be derived from the sum of minimum + upstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 17 } + +vdslLineConfUpSlowMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream slow channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 18 } + +vdslLineConfUpSlowMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum upstream slow channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 19 } + +vdslLineConfDownRateRatio OBJECT-TYPE + SYNTAX Unsigned32 (0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For dynamic rate adaptation at startup, the allocation + of data rate in excess of the minimum data rate for each + channel is controlled by the object. This object specifies + the ratio of the allocation of the excess data rate between + the fast and the slow channels. This allocation represents + downstream Fast Channel Allocation / Slow Channel + Allocation." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 20 } + +vdslLineConfUpRateRatio OBJECT-TYPE + SYNTAX Unsigned32 (0..100) + UNITS "percent" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "For dynamic rate adaptation at startup, the allocation + of data rate in excess of the minimum data rate for each + channel is controlled by the object. This object specifies + the ratio of the allocation of the excess data rate between + the fast and the slow channels. This allocation represents + upstream Fast Channel Allocation/Slow Channel Allocation." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 21 } + +vdslLineConfDownMaxInterDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum interleave delay for the + downstream slow channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 22 } + +vdslLineConfUpMaxInterDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum interleave delay for the + upstream slow channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 23 } + +vdslLineConfDownPboControl OBJECT-TYPE + SYNTAX INTEGER + { + disabled(1), + auto(2), + manual(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Downstream power backoff (PBO) control for this + line. For transceivers which do not support downstream + PBO control, this object MUST be fixed at disabled(1). + If auto(2) is selected, the transceiver will automatically + adjust the power backoff. If manual(3) is selected, + + + + then the transceiver will use the value from + vdslLineConfDownPboLevel." + DEFVAL { disabled } + ::= { vdslLineConfProfileEntry 24 } + +vdslLineConfUpPboControl OBJECT-TYPE + SYNTAX INTEGER + { + disabled(1), + auto(2), + manual(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Upstream power backoff (PBO) control for this + line. For transceivers which do not support upstream + PBO control, this object MUST be fixed at disabled(1). + If auto(2) is selected, the transceiver will automatically + adjust the power backoff. If manual(3) is selected, + then the transceiver will use the value from + vdslLineConfUpPboLevel." + DEFVAL { disabled } + ::= { vdslLineConfProfileEntry 25 } + +vdslLineConfDownPboLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..160) + UNITS "0.25dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the downstream backoff level to be used + when vdslLineConfDownPboControl = manual(3)." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 26 } + +vdslLineConfUpPboLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..160) + UNITS "0.25dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the upstream backoff level to be used + when vdslLineConfUpPboControl = manual(3)." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 27 } + +vdslLineConfDeploymentScenario OBJECT-TYPE + + + + SYNTAX INTEGER + { + fttCab(1), + fttEx(2), + other(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VDSL line deployment scenario. When using + fttCab(1), the VTU-C is located in a street cabinet. + When using fttEx(2), the VTU-C is located at the + central office. Changes to this value will have + no effect on the transceiver." + REFERENCE "DSL Forum TR-057" + DEFVAL { fttCab } + ::= { vdslLineConfProfileEntry 28 } + +vdslLineConfAdslPresence OBJECT-TYPE + SYNTAX INTEGER + { + none(1), + adslOverPots(2), + adslOverISDN(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates presence of ADSL service in the associated + cable bundle/binder. + + none(1) indicates no ADSL service in the bundle + adslOverPots(2) indicates ADSL service over POTS is + present in the bundle + adslOverISDN(3) indicates ADSL service over ISDN is + present in the bundle" + DEFVAL { none } + ::= { vdslLineConfProfileEntry 29 } + +vdslLineConfApplicableStandard OBJECT-TYPE + SYNTAX INTEGER + { + ansi(1), + etsi(2), + itu(3), + other(4) + } + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The VDSL standard to be used for the line. + + ansi(1) indicates ANSI standard + etsi(2) indicates ETSI standard + itu(3) indicates ITU standard + other(4) indicates a standard other than the above." + DEFVAL { ansi } + ::= { vdslLineConfProfileEntry 30 } + +vdslLineConfBandPlan OBJECT-TYPE + SYNTAX INTEGER + { + bandPlan997(1), + bandPlan998(2), + bandPlanFx(3), + other(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VDSL band plan to be used for the line. + + bandPlan997(1) is to be used for + ITU-T G.993.1 Bandplan-B + ETSI Bandplan + ANSI Plan 997 + + bandPlan998(2) is to be used for + ITU-T G.993.1 Bandplan-A + ANSI Plan 998 + + bandPlanFx(3) is to be used for + ITU-T G.993.1 Bandplan-C. + + other(4) is to be used for + non-standard bandplans. + + If this object is set to bandPlanFx(3), then the + object vdslLineConfBandPlanFx MUST also be set." + DEFVAL { bandPlan997 } + ::= { vdslLineConfProfileEntry 31 } + +vdslLineConfBandPlanFx OBJECT-TYPE + SYNTAX Unsigned32 (3750..12000) + UNITS "kHz" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The frequency limit between bands D2 and U2 when + vdslLineConfBandPlan is set to bandPlanFx(3)." + DEFVAL { 3750 } + ::= { vdslLineConfProfileEntry 32 } + + vdslLineConfBandOptUsage OBJECT-TYPE + SYNTAX INTEGER + { + unused(1), + upstream(2), + downstream(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the VDSL link use of the optional frequency + range [25kHz - 138kHz] (Opt). + + unused(1) indicates Opt is unused + upstream(2) indicates Opt usage is for upstream + downstream(3) indicates Opt usage is for downstream." + REFERENCE "ITU-T G.993.1, section 6.1" + DEFVAL { unused } + ::= { vdslLineConfProfileEntry 33 } + +vdslLineConfUpPsdTemplate OBJECT-TYPE + SYNTAX INTEGER + { + templateMask1(1), + templateMask2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upstream PSD template to be used for the line. + Here, templateMask1(1) refers to a notched mask that + limits the transmitted PSD within the internationally + standardized HAM (Handheld Amateur Radio) radio bands, + while templateMask2(2) refers to an unnotched mask. + + The masks themselves depend upon the applicable + standard being used (vdslLineConfApplicableStandard)." + REFERENCE "DSL TR-057" + DEFVAL { templateMask1 } + ::= { vdslLineConfProfileEntry 34 } + + + + +vdslLineConfDownPsdTemplate OBJECT-TYPE + SYNTAX INTEGER + { + templateMask1(1), + templateMask2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The downstream PSD template to be used for the line. + Here, templateMask1(1) refers to a notched mask that + limits the transmitted PSD within the internationally + standardized HAM (Handheld Amateur Radio) radio bands, + while templateMask2(2) refers to an unnotched mask. + + The masks themselves depend upon the applicable + standard being used (vdslLineConfApplicableStandard)." + REFERENCE "DSL TR-057" + DEFVAL { templateMask1 } + ::= { vdslLineConfProfileEntry 35 } + +vdslLineConfHamBandMask OBJECT-TYPE + SYNTAX BITS + { + customNotch1(0), -- custom (region-specific) notch + customNotch2(1), -- custom (region-specific) notch + amateurBand30m(2), -- amateur radio band notch + amateurBand40m(3), -- amateur radio band notch + amateurBand80m(4), -- amateur radio band notch + amateurBand160m(5) -- amateur radio band notch + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transmit power spectral density mask code, used + to avoid interference with HAM (Handheld Amateur Radio) + radio bands by introducing power control (notching) in one + or more of these bands. + + Amateur radio band notching is defined in the VDSL + spectrum as follows: + + Band Start Frequency Stop Frequency + ---- ------------------ -------------------------------- + 30m 1810 kHz 2000 kHz + 40m 3500 kHz 3800 kHz (ETSI); 4000 kHz (ANSI) + 80m 7000 kHz 7100 kHz (ETSI); 7300 kHz (ANSI) + 160m 10100 kHz 10150 kHz + + + + Notching for each standard band can be enabled or disabled + via the bit mask. + + Two custom notches may be specified. If either of these + are enabled via the bit mask, then the following objects + MUST be specified: + + If customNotch1 is enabled, then both + vdslLineConfCustomNotch1Start + vdslLineConfCustomNotch1Stop + MUST be specified. + + If customNotch2 is enabled, then both + vdslLineConfCustomNotch2Start + vdslLineConfCustomNotch2Stop + MUST be specified." + REFERENCE "DSLF TR-057, section 2.6" + DEFVAL { { } } + ::= { vdslLineConfProfileEntry 36 } + +vdslLineConfCustomNotch1Start OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the start frequency of custom HAM (Handheld + Amateur Radio) notch 1. vdslLineConfCustomNotch1Start MUST + be less than or equal to vdslLineConfCustomNotch1Stop." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 37 } + +vdslLineConfCustomNotch1Stop OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the stop frequency of custom HAM (Handheld + Amateur Radio) notch 1. vdslLineConfCustomNotch1Stop MUST + be greater than or equal to vdslLineConfCustomNotch1Start." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 38 } + +vdslLineConfCustomNotch2Start OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Specifies the start frequency of custom HAM (Handheld + Amateur Radio) notch 2. vdslLineConfCustomNotch2Start MUST + be less than or equal to vdslLineConfCustomNotch2Stop." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 39 } + +vdslLineConfCustomNotch2Stop OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the stop frequency of custom HAM (Handheld + Amateur Radio) notch 2. vdslLineConfCustomNotch2Stop MUST + be greater than or equal to vdslLineConfCustomNotch2Start." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 40 } + +vdslLineConfDownTargetSlowBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target level of impulse noise (burst) + protection for an interleaved (slow) channel." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 41 } + +vdslLineConfUpTargetSlowBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target level of impulse noise (burst) + protection for an interleaved (slow) channel." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 42 } + +vdslLineConfDownMaxFastFec OBJECT-TYPE + SYNTAX Unsigned32 (0..50) + UNITS "%" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This parameter provisions the maximum level of Forward + Error Correction (FEC) redundancy related overhead to + be maintained for a fast channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 43 } + +vdslLineConfUpMaxFastFec OBJECT-TYPE + SYNTAX Unsigned32 (0..50) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter provisions the maximum level of Forward + Error Correction (FEC) redundancy related overhead to + be maintained for a fast channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 44 } + +vdslLineConfLineType OBJECT-TYPE + SYNTAX INTEGER + { + noChannel(1), -- no channels exist + fastOnly(2), -- only fast channel exists + interleavedOnly(3), -- only interleaved channel exists + fastOrInterleaved(4), -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter provisions the VDSL physical entity at + start-up by defining whether and how the line will be + channelized, i.e., which channel type(s) are supported. + If the line is to be channelized, the value will be other + than noChannel(1). + + This configuration can be activated only during start-up. + Afterwards, the value of vdslLineType coincides with the + value of vdslLineConfLineType. Depending on this value, + the corresponding entries in the ifTable for the + interleaved and the fast channels are enabled or disabled + according to the value of their ifOperStatus. + + Defined values are: + + + + noChannel(1) -- no channels exist + fastOnly(2) -- only fast channel exists + interleavedOnly(3) -- only interleaved channel exists + fastOrInterleaved(4) -- either fast or interleaved channel + -- exists, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + + Note that 'slow' and 'interleaved' refer to the same + channel." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { noChannel } + ::= { vdslLineConfProfileEntry 45 } + +vdslLineConfProfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to 'active'. + When 'active' is set, the system will validate the profile. + + Before a profile can be deleted or taken out of service + (by setting this object to 'destroy' or 'outOfService'), + it must be first unreferenced from all associated lines. + + An 'active' profile may be modified at any time. Note + that some changes may require that any referenced lines be + restarted (e.g., vdslLineConfLineType)." + ::= { vdslLineConfProfileEntry 46 } + +-- +-- Alarm configuration profile table +-- + +vdslLineAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the VDSL line alarm + configuration. One entry in this table reflects a profile + defined by a manager which can be used to configure the + VDSL line alarm thresholds. + + + + + Entries in this table MUST be maintained in a + persistent manner." + ::= { vdslMibObjects 20 } + +vdslLineAlarmConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a VDSL line alarm + profile. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + INDEX { vdslLineAlarmConfProfileName } + ::= { vdslLineAlarmConfProfileTable 1 } + +VdslLineAlarmConfProfileEntry ::= + SEQUENCE + { + vdslLineAlarmConfProfileName SnmpAdminString, + vdslLineAlarmConfThresh15MinLofs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLoss HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLprs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLols HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinESs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinSESs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinUASs HCPerfIntervalThreshold, + vdslLineAlarmConfInitFailure TruthValue, + vdslLineAlarmConfProfRowStatus RowStatus + } + +vdslLineAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name for this profile as specified by an + administrator." + ::= { vdslLineAlarmConfProfileEntry 1 } + +vdslLineAlarmConfThresh15MinLofs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of frame seconds (lofs) within any given 15-minute + performance data collection interval. If the value of + loss of frame seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLofsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 2 } + +vdslLineAlarmConfThresh15MinLoss OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of signal seconds (loss) within any given 15-minute + performance data collection interval. If the value of + loss of signal seconds in a particular 15-minute + collection interval reaches/exceeds this value, a + vdslPerfLossThreshNotification notification will be + generated. One notification will be sent per interval + per endpoint." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 3 } + +vdslLineAlarmConfThresh15MinLprs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of power seconds (lprs) within any given 15-minute + performance data collection interval. If the value of + loss of power seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLprsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 4 } + +vdslLineAlarmConfThresh15MinLols OBJECT-TYPE + + + + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of link seconds (lols) within any given 15-minute + performance data collection interval. If the value of + loss of power seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLolsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 5 } + +vdslLineAlarmConfThresh15MinESs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + errored seconds (ESs) within any given 15-minute + performance data collection interval. If the value of + errored seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfESsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 6 } + +vdslLineAlarmConfThresh15MinSESs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + severely errored seconds (SESs) within any given 15-minute + performance data collection interval. If the value of + severely errored seconds in a particular 15-minute + collection interval reaches/exceeds this value, a + vdslPerfSESsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + + + + ::= { vdslLineAlarmConfProfileEntry 7 } + +vdslLineAlarmConfThresh15MinUASs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + unavailable seconds (UASs) within any given 15-minute + performance data collection interval. If the value of + unavailable seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfUASsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 8 } + +vdslLineAlarmConfInitFailure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies if a vdslInitFailureNotification + notification will be generated if an initialization + failure occurs." + DEFVAL { false } + ::= { vdslLineAlarmConfProfileEntry 9 } + +vdslLineAlarmConfProfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to 'active'. + When 'active' is set, the system will validate the profile. + + Before a profile can be deleted or taken out of service, + (by setting this object to 'destroy' or 'outOfService') it + must be first unreferenced from all associated lines. + + An 'active' profile may be modified at any time." + ::= { vdslLineAlarmConfProfileEntry 10 } + + + + +-- Notification definitions + +vdslNotifications OBJECT IDENTIFIER ::= { vdslLineMib 0 } + +vdslPerfLofsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLofs + } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLofs) reached." + ::= { vdslNotifications 1 } + +vdslPerfLossThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLoss + } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLoss) reached." + ::= { vdslNotifications 2 } + +vdslPerfLprsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLprs + } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLprs) reached." + ::= { vdslNotifications 3 } + +vdslPerfLolsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLols + } + STATUS current + DESCRIPTION + "Loss of Link 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLols) reached." + ::= { vdslNotifications 4 } + +vdslPerfESsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinESs + } + + + + STATUS current + DESCRIPTION + "Errored Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinESs) reached." + ::= { vdslNotifications 5 } + +vdslPerfSESsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinSESs + } + STATUS current + DESCRIPTION + "Severely Errored Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinSESs) reached." + ::= { vdslNotifications 6 } + +vdslPerfUASsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinUASs + } + STATUS current + DESCRIPTION + "Unavailable Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinUASs) reached." + ::= { vdslNotifications 7 } + +vdslDownMaxSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The downstream Signal to Noise Margin exceeded + vdslLineConfDownMaxSnrMgn. The object + vdslPhysCurrSnrMgn will contain the Signal to Noise + margin as measured by the VTU-R." + ::= { vdslNotifications 8 } + +vdslDownMinSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The downstream Signal to Noise Margin fell below + vdslLineConfDownMinSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured by + the VTU-R." + + + + ::= { vdslNotifications 9 } + +vdslUpMaxSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The upstream Signal to Noise Margin exceeded + vdslLineConfUpMaxSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured + by the VTU-C." + ::= { vdslNotifications 10 } + +vdslUpMinSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The upstream Signal to Noise Margin fell below + vdslLineConfUpMinSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured + by the VTU-C." + ::= { vdslNotifications 11 } + +vdslInitFailureNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrStatus + } + STATUS current + DESCRIPTION + "Vtu initialization failed. See vdslPhysCurrStatus for + potential reasons." + ::= { vdslNotifications 12 } + +-- conformance information + +vdslConformance OBJECT IDENTIFIER ::= { vdslLineMib 3 } +vdslGroups OBJECT IDENTIFIER ::= { vdslConformance 1 } +vdslCompliances OBJECT IDENTIFIER ::= { vdslConformance 2 } + +vdslLineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + + + + + MODULE -- this module + MANDATORY-GROUPS + { + vdslGroup, + vdslNotificationGroup + } + ::= { vdslCompliances 1 } + +-- units of conformance + + vdslGroup OBJECT-GROUP + OBJECTS + { + vdslLineCoding, + vdslLineType, + vdslLineConfProfile, + vdslLineAlarmConfProfile, + vdslPhysInvSerialNumber, + vdslPhysInvVendorID, + vdslPhysInvVersionNumber, + vdslPhysCurrSnrMgn, + vdslPhysCurrAtn, + vdslPhysCurrStatus, + vdslPhysCurrOutputPwr, + vdslPhysCurrAttainableRate, + vdslPhysCurrLineRate, + vdslChanInterleaveDelay, + vdslChanCrcBlockLength, + vdslChanCurrTxRate, + vdslChanCurrTxSlowBurstProtect, + vdslChanCurrTxFastFec, + vdslPerfDataValidIntervals, + vdslPerfDataInvalidIntervals, + vdslPerfDataLofs, + vdslPerfDataLoss, + vdslPerfDataLprs, + vdslPerfDataLols, + vdslPerfDataESs, + vdslPerfDataSESs, + vdslPerfDataUASs, + vdslPerfDataInits, + vdslPerfDataCurr15MinTimeElapsed, + vdslPerfDataCurr15MinLofs, + vdslPerfDataCurr15MinLoss, + vdslPerfDataCurr15MinLprs, + vdslPerfDataCurr15MinLols, + vdslPerfDataCurr15MinESs, + vdslPerfDataCurr15MinSESs, + + + + vdslPerfDataCurr15MinUASs, + vdslPerfDataCurr15MinInits, + vdslPerfData1DayValidIntervals, + vdslPerfData1DayInvalidIntervals, + vdslPerfDataCurr1DayTimeElapsed, + vdslPerfDataCurr1DayLofs, + vdslPerfDataCurr1DayLoss, + vdslPerfDataCurr1DayLprs, + vdslPerfDataCurr1DayLols, + vdslPerfDataCurr1DayESs, + vdslPerfDataCurr1DaySESs, + vdslPerfDataCurr1DayUASs, + vdslPerfDataCurr1DayInits, + vdslPerfIntervalLofs, + vdslPerfIntervalLoss, + vdslPerfIntervalLprs, + vdslPerfIntervalLols, + vdslPerfIntervalESs, + vdslPerfIntervalSESs, + vdslPerfIntervalUASs, + vdslPerfIntervalInits, + vdslPerf1DayIntervalMoniSecs, + vdslPerf1DayIntervalLofs, + vdslPerf1DayIntervalLoss, + vdslPerf1DayIntervalLprs, + vdslPerf1DayIntervalLols, + vdslPerf1DayIntervalESs, + vdslPerf1DayIntervalSESs, + vdslPerf1DayIntervalUASs, + vdslPerf1DayIntervalInits, + vdslChanValidIntervals, + vdslChanInvalidIntervals, + vdslChanFixedOctets, + vdslChanBadBlks, + vdslChanCurr15MinTimeElapsed, + vdslChanCurr15MinFixedOctets, + vdslChanCurr15MinBadBlks, + vdslChan1DayValidIntervals, + vdslChan1DayInvalidIntervals, + vdslChanCurr1DayTimeElapsed, + vdslChanCurr1DayFixedOctets, + vdslChanCurr1DayBadBlks, + vdslChanIntervalFixedOctets, + vdslChanIntervalBadBlks, + vdslChan1DayIntervalMoniSecs, + vdslChan1DayIntervalFixedOctets, + vdslChan1DayIntervalBadBlks, + vdslLineConfDownRateMode, + + + + vdslLineConfUpRateMode, + vdslLineConfDownMaxPwr, + vdslLineConfUpMaxPwr, + vdslLineConfDownMaxSnrMgn, + vdslLineConfDownMinSnrMgn, + vdslLineConfDownTargetSnrMgn, + vdslLineConfUpMaxSnrMgn, + vdslLineConfUpMinSnrMgn, + vdslLineConfUpTargetSnrMgn, + vdslLineConfDownFastMaxDataRate, + vdslLineConfDownFastMinDataRate, + vdslLineConfDownSlowMaxDataRate, + vdslLineConfDownSlowMinDataRate, + vdslLineConfUpFastMaxDataRate, + vdslLineConfUpFastMinDataRate, + vdslLineConfUpSlowMaxDataRate, + vdslLineConfUpSlowMinDataRate, + vdslLineConfDownRateRatio, + vdslLineConfUpRateRatio, + vdslLineConfDownMaxInterDelay, + vdslLineConfUpMaxInterDelay, + vdslLineConfDownPboControl, + vdslLineConfUpPboControl, + vdslLineConfDownPboLevel, + vdslLineConfUpPboLevel, + vdslLineConfDeploymentScenario, + vdslLineConfAdslPresence, + vdslLineConfApplicableStandard, + vdslLineConfBandPlan, + vdslLineConfBandPlanFx, + vdslLineConfBandOptUsage, + vdslLineConfUpPsdTemplate, + vdslLineConfDownPsdTemplate, + vdslLineConfHamBandMask, + vdslLineConfCustomNotch1Start, + vdslLineConfCustomNotch1Stop, + vdslLineConfCustomNotch2Start, + vdslLineConfCustomNotch2Stop, + vdslLineConfDownTargetSlowBurst, + vdslLineConfUpTargetSlowBurst, + vdslLineConfDownMaxFastFec, + vdslLineConfUpMaxFastFec, + vdslLineConfLineType, + vdslLineConfProfRowStatus, + vdslLineAlarmConfThresh15MinLofs, + vdslLineAlarmConfThresh15MinLoss, + vdslLineAlarmConfThresh15MinLprs, + vdslLineAlarmConfThresh15MinLols, + + + + vdslLineAlarmConfThresh15MinESs, + vdslLineAlarmConfThresh15MinSESs, + vdslLineAlarmConfThresh15MinUASs, + vdslLineAlarmConfInitFailure, + vdslLineAlarmConfProfRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + a VDSL Line." + ::= { vdslGroups 1 } + + vdslNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + vdslPerfLofsThreshNotification, + vdslPerfLossThreshNotification, + vdslPerfLprsThreshNotification, + vdslPerfLolsThreshNotification, + vdslPerfESsThreshNotification, + vdslPerfSESsThreshNotification, + vdslPerfUASsThreshNotification, + vdslDownMaxSnrMgnNotification, + vdslDownMinSnrMgnNotification, + vdslUpMaxSnrMgnNotification, + vdslUpMinSnrMgnNotification, + vdslInitFailureNotification + } + STATUS current + DESCRIPTION + "This group supports notifications of significant + conditions associated with VDSL Lines." + ::= { vdslGroups 2 } + +END diff --git a/mibs/ietf/VPN-TC-STD-MIB b/mibs/ietf/VPN-TC-STD-MIB new file mode 100644 index 0000000..2944290 --- /dev/null +++ b/mibs/ietf/VPN-TC-STD-MIB @@ -0,0 +1,76 @@ +VPN-TC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +vpnTcMIB MODULE-IDENTITY + LAST-UPDATED "200511150000Z" -- 15 November 2005 + ORGANIZATION + "Layer 3 Virtual Private Networks (L3VPN) Working Group." + + + + CONTACT-INFO + "Benson Schliesser + bensons@savvis.net + + Thomas D. Nadeau + tnadeau@cisco.com + + This TC MIB is a product of the PPVPN + http://www.ietf.org/html.charters/ppvpn-charter.html + and subsequently the L3VPN + http://www.ietf.org/html.charters/l3vpn-charter.html + working groups. + + Comments and discussion should be directed to + l3vpn@ietf.org" + DESCRIPTION + "This MIB contains TCs for VPNs. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4265; see the RFC + itself for full legal notices." + -- Revision history. + REVISION "200511150000Z" -- 15 November 2005 + DESCRIPTION "Initial version, published as RFC 4265." + ::= { mib-2 129 } + +-- definition of textual conventions + +VPNId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The purpose of a VPN-ID is to uniquely identify a VPN. + The Global VPN Identifier format is: + 3 octet VPN Authority, Organizationally Unique Identifier + followed by 4 octet VPN index identifying VPN according + to OUI" + REFERENCE + "Fox, B. and Gleeson, B., 'Virtual Private Networks + Identifier', RFC 2685, September 1999." + SYNTAX OCTET STRING (SIZE (7)) + +VPNIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is an extension of the + VPNId textual convention that defines a non-zero-length + OCTET STRING to identify a physical entity. This extension + permits the additional value of a zero-length OCTET STRING. + + + + The semantics of the value zero-length OCTET STRING are + object-specific and must therefore be defined + as part of the description of any object that uses this + syntax. Examples of usage of this extension are + situations where none or all VPN IDs need to be + referenced." + SYNTAX OCTET STRING (SIZE (0 | 7)) + +END diff --git a/mibs/ietf/VRRP-MIB b/mibs/ietf/VRRP-MIB new file mode 100644 index 0000000..81a2f74 --- /dev/null +++ b/mibs/ietf/VRRP-MIB @@ -0,0 +1,792 @@ +VRRP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Counter32, + Integer32, IpAddress, mib-2 FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, + MacAddress, TruthValue, TimeStamp FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB; + + + vrrpMIB MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF VRRP Working Group" + CONTACT-INFO + "Brian R. Jewell + Postal: Copper Mountain Networks, Inc. + 2470 Embarcadero Way + Palo Alto, California 94303 + Tel: +1 650 687 3367 + E-Mail: bjewell@coppermountain.com" + + DESCRIPTION + "This MIB describes objects used for managing Virtual Router + Redundancy Protocol (VRRP) routers." + REVISION "200003030000Z" -- 03 Mar 2000 + DESCRIPTION "Initial version as published in RFC 2787." + ::= { mib-2 68 } + +-- ******************************************************************* +-- Textual Conventions +-- ******************************************************************* + + VrId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A number which, along with an interface index (ifIndex), + serves to uniquely identify a virtual router on a given VRRP + router. A set of one or more associated addresses is assigned + to a VRID." + SYNTAX Integer32 (1..255) + +-- ******************************************************************* +-- VRRP MIB Groups +-- ******************************************************************* + + vrrpOperations OBJECT IDENTIFIER ::= { vrrpMIB 1 } + vrrpStatistics OBJECT IDENTIFIER ::= { vrrpMIB 2 } + vrrpConformance OBJECT IDENTIFIER ::= { vrrpMIB 3 } + + +-- ******************************************************************* +-- Start of MIB objects +-- ******************************************************************* + + vrrpNodeVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular version of the VRRP + supported by this node." + ::= { vrrpOperations 1 } + + vrrpNotificationCntl OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the VRRP-enabled router will generate + SNMP traps for events defined in this MIB. 'Enabled' + results in SNMP traps; 'disabled', no traps are sent." + DEFVAL { enabled } + ::= { vrrpOperations 2 } + +-- ******************************************************************* +-- VRRP Operations Table +-- ******************************************************************* + + vrrpOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operations table for a VRRP router which consists of a + sequence (i.e., one or more conceptual rows) of + 'vrrpOperEntry' items." + ::= { vrrpOperations 3 } + + vrrpOperEntry OBJECT-TYPE + SYNTAX VrrpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vrrpOperTable containing the operational + characteristics of a virtual router. On a VRRP router, + a given virtual router is identified by a combination + of the IF index and VRID. + + Rows in the table cannot be modified unless the value + of `vrrpOperAdminState' is `disabled' and the + `vrrpOperState' has transitioned to `initialize'." + + INDEX { ifIndex, vrrpOperVrId } + ::= { vrrpOperTable 1 } + + VrrpOperEntry ::= + SEQUENCE { + vrrpOperVrId + VrId, + vrrpOperVirtualMacAddr + MacAddress, + vrrpOperState + INTEGER, + vrrpOperAdminState + INTEGER, + vrrpOperPriority + Integer32, + vrrpOperIpAddrCount + Integer32, + vrrpOperMasterIpAddr + IpAddress, + vrrpOperPrimaryIpAddr + IpAddress, + vrrpOperAuthType + INTEGER, + vrrpOperAuthKey + OCTET STRING, + vrrpOperAdvertisementInterval + Integer32, + vrrpOperPreemptMode + TruthValue, + vrrpOperVirtualRouterUpTime + TimeStamp, + vrrpOperProtocol + INTEGER, + vrrpOperRowStatus + RowStatus + } + + vrrpOperVrId OBJECT-TYPE + SYNTAX VrId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the Virtual Router Identifier (VRID)." + ::= { vrrpOperEntry 1 } + + vrrpOperVirtualMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The virtual MAC address of the virtual router. Although this + object can be derived from the 'vrrpOperVrId' object, it is + defined so that it is easily obtainable by a management + application and can be included in VRRP-related SNMP traps." + ::= { vrrpOperEntry 2 } + + vrrpOperState OBJECT-TYPE + SYNTAX INTEGER { + initialize(1), + backup(2), + master(3) + } + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The current state of the virtual router. This object has + three defined values: + + - `initialize', which indicates that all the + virtual router is waiting for a startup event. + + - `backup', which indicates the virtual router is + monitoring the availability of the master router. + + - `master', which indicates that the virtual router + is forwarding packets for IP addresses that are + associated with this router. + + Setting the `vrrpOperAdminState' object (below) initiates + transitions in the value of this object." + ::= { vrrpOperEntry 3 } + + vrrpOperAdminState OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object will enable/disable the virtual router + function. Setting the value to `up', will transition + the state of the virtual router from `initialize' to `backup' + or `master', depending on the value of `vrrpOperPriority'. + Setting the value to `down', will transition the + router from `master' or `backup' to `initialize'. State + transitions may not be immediate; they sometimes depend on + other factors, such as the interface (IF) state. + + The `vrrpOperAdminState' object must be set to `down' prior + to modifying the other read-create objects in the conceptual + row. The value of the `vrrpOperRowStatus' object (below) + must be `active', signifying that the conceptual row + is valid (i.e., the objects are correctly set), + in order for this object to be set to `up'." + DEFVAL { down } + ::= { vrrpOperEntry 4 } + + vrrpOperPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the priority to be used for the + virtual router master election process. Higher values imply + higher priority. + + A priority of '0', although not settable, is sent by + the master router to indicate that this router has ceased + to participate in VRRP and a backup virtual router should + transition to become a new master. + + A priority of 255 is used for the router that owns the + associated IP address(es)." + DEFVAL { 100 } + ::= { vrrpOperEntry 5 } + + vrrpOperIpAddrCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP addresses that are associated with this + virtual router. This number is equal to the number of rows + in the vrrpAssoIpAddrTable that correspond to a given IF + index/VRID pair." + ::= { vrrpOperEntry 6 } + + vrrpOperMasterIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The master router's real (primary) IP address. This is + the IP address listed as the source in VRRP advertisement + last received by this virtual router." + ::= { vrrpOperEntry 7 } + + vrrpOperPrimaryIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the case where there is more than one IP address for + a given `ifIndex', this object is used to specify the IP + address that will become the `vrrpOperMasterIpAddr', should + the virtual router transition from backup to master. If + this object is set to 0.0.0.0, the IP address which is + numerically lowest will be selected." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { vrrpOperEntry 8 } + + vrrpOperAuthType OBJECT-TYPE + SYNTAX INTEGER { + noAuthentication(1), -- VRRP protocol exchanges are not + -- authenticated. + simpleTextPassword(2), -- Exchanges are authenticated by a + -- clear text password. + ipAuthenticationHeader(3) -- Exchanges are authenticated using + -- the IP authentication header. + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Authentication type used for VRRP protocol exchanges between + virtual routers. This value of this object is the same for a + given ifIndex. + + New enumerations to this list can only be added via a new + RFC on the standards track." + DEFVAL { noAuthentication } + ::= { vrrpOperEntry 9 } + + vrrpOperAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Authentication Key. This object is set according to + the value of the 'vrrpOperAuthType' object + ('simpleTextPassword' or 'ipAuthenticationHeader'). If the + length of the value is less than 16 octets, the agent will + left adjust and zero fill to 16 octets. The value of this + object is the same for a given ifIndex. + + When read, vrrpOperAuthKey always returns an Octet String + of length zero." + ::= { vrrpOperEntry 10 } + + vrrpOperAdvertisementInterval OBJECT-TYPE + SYNTAX Integer32 (1..255) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time interval, in seconds, between sending + advertisement messages. Only the master router sends + VRRP advertisements." + DEFVAL { 1 } + ::= { vrrpOperEntry 11 } + + vrrpOperPreemptMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether a higher priority virtual router will + preempt a lower priority master." + DEFVAL { true } + ::= { vrrpOperEntry 12 } + + vrrpOperVirtualRouterUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the value of the `sysUpTime' object when this + virtual router (i.e., the `vrrpOperState') transitioned + out of `initialized'." + ::= { vrrpOperEntry 13 } + + vrrpOperProtocol OBJECT-TYPE + SYNTAX INTEGER { + ip (1), + bridge (2), + decnet (3), + other (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular protocol being controlled by this Virtual + Router. + + New enumerations to this list can only be added via a new + RFC on the standards track." + DEFVAL { ip } + ::= { vrrpOperEntry 14 } + + vrrpOperRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used in accordance to installation + and removal conventions for conceptual rows. The rowstatus of + a currently active row in the vrrpOperTable is constrained + by the operational state of the corresponding virtual router. + When `vrrpOperRowStatus' is set to active(1), no other + objects in the conceptual row, with the exception of + `vrrpOperAdminState', can be modified. Prior to setting the + `vrrpOperRowStatus' object from `active' to a different value, + the `vrrpOperAdminState' object must be set to `down' and the + `vrrpOperState' object be transitioned to `initialize'. + + To create a row in this table, a manager sets this object + to either createAndGo(4) or createAndWait(5). Until instances + of all corresponding columns are appropriately configured, + the value of the corresponding instance of the `vrrpOperRowStatus' + column will be read as notReady(3). + In particular, a newly created row cannot be made active(1) + until (minimally) the corresponding instance of + `vrrpOperVrId' has been set and there is at least one active + row in the `vrrpAssoIpAddrTable' defining an associated + IP address for the virtual router." + ::= { vrrpOperEntry 15 } + + +-- ******************************************************************* +-- VRRP Associated IP Address Table +-- ******************************************************************* + + vrrpAssoIpAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpAssoIpAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addresses associated with this virtual router." + ::= { vrrpOperations 4 } + + vrrpAssoIpAddrEntry OBJECT-TYPE + SYNTAX VrrpAssoIpAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table contains an IP address that is + associated with a virtual router. The number of rows for + a given ifIndex and VrId will equal the number of IP + addresses associated (e.g., backed up) by the virtual + router (equivalent to 'vrrpOperIpAddrCount'). + + Rows in the table cannot be modified unless the value + of `vrrpOperAdminState' is `disabled' and the + `vrrpOperState' has transitioned to `initialize'." + + INDEX { ifIndex, vrrpOperVrId, vrrpAssoIpAddr } + ::= { vrrpAssoIpAddrTable 1 } + + VrrpAssoIpAddrEntry ::= + SEQUENCE { + vrrpAssoIpAddr + IpAddress, + vrrpAssoIpAddrRowStatus + RowStatus + } + + vrrpAssoIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The assigned IP addresses that a virtual router is + responsible for backing up." + ::= { vrrpAssoIpAddrEntry 1 } + + vrrpAssoIpAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to installation + and removal conventions for conceptual rows. Setting this + object to active(1) or createAndGo(4) results in the + addition of an associated address for a virtual router. + Destroying the entry or setting it to notInService(2) + removes the associated address from the virtual router. + The use of other values is implementation-dependent." + ::= { vrrpAssoIpAddrEntry 2 } + + +-- ******************************************************************* +-- VRRP Router Statistics +-- ******************************************************************* + + vrrpRouterChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an invalid + VRRP checksum value." + ::= { vrrpStatistics 1 } + + vrrpRouterVersionErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an unknown + or unsupported version number." + ::= { vrrpStatistics 2 } + + vrrpRouterVrIdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an invalid + VRID for this virtual router." + ::= { vrrpStatistics 3 } + +-- ******************************************************************* +-- VRRP Router Statistics Table +-- ******************************************************************* + + vrrpRouterStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpRouterStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of virtual router statistics." + ::= { vrrpStatistics 4 } + + vrrpRouterStatsEntry OBJECT-TYPE + SYNTAX VrrpRouterStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing statistics information + about a given virtual router." + AUGMENTS { vrrpOperEntry } + ::= { vrrpRouterStatsTable 1 } + + VrrpRouterStatsEntry ::= + SEQUENCE { + vrrpStatsBecomeMaster + Counter32, + vrrpStatsAdvertiseRcvd + Counter32, + vrrpStatsAdvertiseIntervalErrors + Counter32, + vrrpStatsAuthFailures + Counter32, + vrrpStatsIpTtlErrors + Counter32, + vrrpStatsPriorityZeroPktsRcvd + Counter32, + vrrpStatsPriorityZeroPktsSent + Counter32, + vrrpStatsInvalidTypePktsRcvd + Counter32, + vrrpStatsAddressListErrors + Counter32, + vrrpStatsInvalidAuthType + Counter32, + vrrpStatsAuthTypeMismatch + Counter32, + vrrpStatsPacketLengthErrors + Counter32 + } + + vrrpStatsBecomeMaster OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that this virtual router's state + has transitioned to MASTER." + ::= { vrrpRouterStatsEntry 1 } + + vrrpStatsAdvertiseRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP advertisements received by this + virtual router." + ::= { vrrpRouterStatsEntry 2 } + + vrrpStatsAdvertiseIntervalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP advertisement packets received + for which the advertisement interval is different than the + one configured for the local virtual router." + ::= { vrrpRouterStatsEntry 3 } + + vrrpStatsAuthFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received that do not pass + the authentication check." + ::= { vrrpRouterStatsEntry 4 } + + vrrpStatsIpTtlErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received by the virtual + router with IP TTL (Time-To-Live) not equal to 255." + ::= { vrrpRouterStatsEntry 5 } + + vrrpStatsPriorityZeroPktsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received by the virtual + router with a priority of '0'." + ::= { vrrpRouterStatsEntry 6 } + + vrrpStatsPriorityZeroPktsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets sent by the virtual router + with a priority of '0'." + ::= { vrrpRouterStatsEntry 7 } + + vrrpStatsInvalidTypePktsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VRRP packets received by the virtual router + with an invalid value in the 'type' field." + ::= { vrrpRouterStatsEntry 8 } + + vrrpStatsAddressListErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received for which the address + list does not match the locally configured list for the + virtual router." + ::= { vrrpRouterStatsEntry 9 } + + vrrpStatsInvalidAuthType OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with an unknown + authentication type." + ::= { vrrpRouterStatsEntry 10 } + + vrrpStatsAuthTypeMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with 'Auth Type' not + equal to the locally configured authentication method + (`vrrpOperAuthType')." + ::= { vrrpRouterStatsEntry 11 } + + vrrpStatsPacketLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with a packet length + less than the length of the VRRP header." + ::= { vrrpRouterStatsEntry 12 } + +-- ******************************************************************* +-- Trap Definitions +-- ******************************************************************* + + vrrpNotifications OBJECT IDENTIFIER ::= { vrrpMIB 0 } + + vrrpTrapPacketSrc OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IP address of an inbound VRRP packet. Used by + vrrpTrapAuthFailure trap." + ::= { vrrpOperations 5 } + + vrrpTrapAuthErrorType OBJECT-TYPE + SYNTAX INTEGER { + invalidAuthType (1), + authTypeMismatch (2), + authFailure (3) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Potential types of configuration conflicts. + Used by vrrpAuthFailure trap." + ::= { vrrpOperations 6 } + + vrrpTrapNewMaster NOTIFICATION-TYPE + OBJECTS { vrrpOperMasterIpAddr + } + STATUS current + DESCRIPTION + "The newMaster trap indicates that the sending agent + has transitioned to 'Master' state." + ::= { vrrpNotifications 1 } + + vrrpTrapAuthFailure NOTIFICATION-TYPE + OBJECTS { vrrpTrapPacketSrc, + vrrpTrapAuthErrorType + } + STATUS current + DESCRIPTION + "A vrrpAuthFailure trap signifies that a packet has + been received from a router whose authentication key + or authentication type conflicts with this router's + authentication key or authentication type. Implementation + of this trap is optional." + ::= { vrrpNotifications 2 } + + +-- ******************************************************************* +-- Conformance Information +-- ******************************************************************* + + vrrpMIBCompliances OBJECT IDENTIFIER ::= { vrrpConformance 1 } + vrrpMIBGroups OBJECT IDENTIFIER ::= { vrrpConformance 2 } + +-- ................................................................... +-- Compliance Statements +-- ................................................................... + + vrrpMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all VRRP implementations." + MODULE -- this module + MANDATORY-GROUPS { + vrrpOperGroup, + vrrpStatsGroup + } + OBJECT vrrpOperPriority + WRITE-SYNTAX Integer32 (1..255) + DESCRIPTION "SETable values are from 1 to 255." + ::= { vrrpMIBCompliances 1 } + +-- ................................................................... +-- Conformance Groups +-- ................................................................... + + vrrpOperGroup OBJECT-GROUP + OBJECTS { + vrrpNodeVersion, + vrrpNotificationCntl, + vrrpOperVirtualMacAddr, + vrrpOperState, + vrrpOperAdminState, + vrrpOperPriority, + vrrpOperIpAddrCount, + vrrpOperMasterIpAddr, + vrrpOperPrimaryIpAddr, + vrrpOperAuthType, + vrrpOperAuthKey, + vrrpOperAdvertisementInterval, + vrrpOperPreemptMode, + vrrpOperVirtualRouterUpTime, + vrrpOperProtocol, + vrrpOperRowStatus, + vrrpAssoIpAddrRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for VRRP operations." + ::= { vrrpMIBGroups 1 } + + vrrpStatsGroup OBJECT-GROUP + OBJECTS { + vrrpRouterChecksumErrors, + vrrpRouterVersionErrors, + vrrpRouterVrIdErrors, + vrrpStatsBecomeMaster, + vrrpStatsAdvertiseRcvd, + vrrpStatsAdvertiseIntervalErrors, + vrrpStatsAuthFailures, + vrrpStatsIpTtlErrors, + vrrpStatsPriorityZeroPktsRcvd, + vrrpStatsPriorityZeroPktsSent, + vrrpStatsInvalidTypePktsRcvd, + vrrpStatsAddressListErrors, + vrrpStatsInvalidAuthType, + vrrpStatsAuthTypeMismatch, + vrrpStatsPacketLengthErrors + } + STATUS current + DESCRIPTION + "Conformance group for VRRP statistics." + ::= { vrrpMIBGroups 2 } + + vrrpTrapGroup OBJECT-GROUP + OBJECTS { + vrrpTrapPacketSrc, + vrrpTrapAuthErrorType + } + STATUS current + DESCRIPTION + "Conformance group for objects contained in VRRP notifications." + ::= { vrrpMIBGroups 3 } + + vrrpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + vrrpTrapNewMaster, + vrrpTrapAuthFailure + } + STATUS current + DESCRIPTION + "The VRRP MIB Notification Group." + ::= { vrrpMIBGroups 4 } + +END diff --git a/mibs/ietf/WWW-MIB b/mibs/ietf/WWW-MIB new file mode 100644 index 0000000..83f831e --- /dev/null +++ b/mibs/ietf/WWW-MIB @@ -0,0 +1,1276 @@ +WWW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + Counter32, Counter64, Integer32, Unsigned32, TimeTicks + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, DateAndTime, TimeInterval + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + Utf8String + FROM SYSAPPL-MIB; + +wwwMIB MODULE-IDENTITY + LAST-UPDATED "9902251400Z" + ORGANIZATION "IETF Application MIB Working Group" + CONTACT-INFO + " Harrie Hazewinkel + + Postal: Joint Research Centre of the E.C. + via Fermi - Ispra 21020 (VA) + Italy + + Tel: +39+(0)332 786322 + Fax: +39+(0)332 785641 + E-mail: harrie.hazewinkel@jrc.it + + Carl W. Kalbfleisch + + Postal: Verio, Inc. + 1950 Stemmons Freeway + Suite 2006 + Dallas, TX 75207 + US + + Tel: +1 214 290-8653 + Fax: +1 214 744-0742 + E-mail: cwk@verio.net + + Juergen Schoenwaelder + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391-3683 + Fax: +49 531 489-5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "This WWW service MIB module is applicable to services + realized by a family of 'Document Transfer Protocols' + (DTP). Examples of DTPs are HTTP and FTP." + + -- revision history + + REVISION "9902251400Z" + DESCRIPTION "Initial version, published as RFC2594." + + ::= { mib-2 65 } + +-- +-- Object Identifier Assignments +-- + +wwwMIBObjects OBJECT IDENTIFIER ::= { wwwMIB 1 } +wwwMIBConformance OBJECT IDENTIFIER ::= { wwwMIB 2 } + +-- +-- Textual Conventions +-- + +WwwRequestType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The WwwRequestType defines the textual identification of + request types used by a document transfer protocol. For + the proper values for a given DTP, refer to the protocol + mappings for that DTP." + SYNTAX OCTET STRING (SIZE (1..40)) + +WwwResponseType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The WwwResponseType defines the different response values + used by document transfer protocols. For the proper values + for a given DTP, refer to the protocol mappings for that + DTP." + SYNTAX Integer32 (0..2147483647) + +WwwOperStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The operational status of a WWW service. 'down' indicates + that the service is not available. 'running' indicates + that the service is operational and available. 'halted' + indicates that the service is operational but not + available. 'congested' indicates that the service is + operational but no additional inbound associations can be + accommodated. 'restarting' indicates that the service is + currently unavailable but is in the process of restarting + and will be available soon." + SYNTAX INTEGER { + down(1), + running(2), + halted(3), + congested(4), + restarting(5) + } + +WwwDocName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "The server relative name of a document. If the URL were + http://www.x.org/standards/search/search.cgi?string=test + then the value of this textual convention would resolve + to '/standards/search/search.cgi'. This textual convention + uses the character set for URIs as defined in RFC 2396 + section 2." + SYNTAX OCTET STRING (SIZE (0..255)) + + +-- The WWW Service Information Group +-- +-- The WWW service information group contains information about +-- the WWW services known by the SNMP agent. + +wwwService OBJECT IDENTIFIER ::= { wwwMIBObjects 1 } + +wwwServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the WWW services known by the SNMP agent." + ::= { wwwService 1 } + +wwwServiceEntry OBJECT-TYPE + SYNTAX WwwServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular WWW service." + INDEX { wwwServiceIndex } + ::= { wwwServiceTable 1 } + +WwwServiceEntry ::= SEQUENCE { + wwwServiceIndex Unsigned32, + wwwServiceDescription Utf8String, + wwwServiceContact Utf8String, + wwwServiceProtocol OBJECT IDENTIFIER, + wwwServiceName DisplayString, + wwwServiceType INTEGER, + wwwServiceStartTime DateAndTime, + wwwServiceOperStatus WwwOperStatus, + wwwServiceLastChange DateAndTime +} + +wwwServiceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer used to uniquely identify a WWW service. The + value must be the same as the corresponding value of the + applSrvIndex defined in the Application Management MIB + (APPLICATION-MIB) if the applSrvIndex object is available. + It might be necessary to manually configure sub-agents in + order to meet this requirement." + ::= { wwwServiceEntry 1 } + +wwwServiceDescription OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the WWW service. This shall include + at least the vendor and version number of the application + realizing the WWW service. In a minimal case, this might + be the Product Token (see RFC 2068) for the application." + ::= { wwwServiceEntry 2 } + +wwwServiceContact OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + service, together with information on how to contact this + person. For instance, this might be a string containing an + email address, e.g. ''." + ::= { wwwServiceEntry 3 } + +wwwServiceProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the primary protocol in use by this + service. For Internet applications, the IANA maintains + a registry of the OIDs which correspond to well-known + application protocols. If the application protocol is not + listed in the registry, an OID value of the form + {applTCPProtoID port} or {applUDPProtoID port} are used for + TCP-based and UDP-based protocols, respectively. In either + case 'port' corresponds to the primary port number being + used by the protocol." + REFERENCE + "The OID values applTCPProtoID and applUDPProtoID are + defined in the NETWORK-SERVICES-MIB (RFC 2248)." + ::= { wwwServiceEntry 4 } + +wwwServiceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The fully qualified domain name by which this service is + known. This object must contain the virtual host name if + the service is realized for a virtual host." + ::= { wwwServiceEntry 5 } + +wwwServiceType OBJECT-TYPE + SYNTAX INTEGER { + wwwOther(1), + wwwServer(2), + wwwClient(3), + wwwProxy(4), + wwwCachingProxy(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The application type using or realizing this WWW service." + ::= { wwwServiceEntry 6 } + +wwwServiceStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this WWW service was last started. + The value SHALL be '0000000000000000'H if the last start + time of this WWW service is not known." + ::= { wwwServiceEntry 7 } + +wwwServiceOperStatus OBJECT-TYPE + SYNTAX WwwOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the operational status of the WWW service." + ::= { wwwServiceEntry 8 } + +wwwServiceLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this WWW service entered its current + operational state. The value SHALL be '0000000000000000'H if + the time of the last state change is not known." + ::= { wwwServiceEntry 9 } + + +-- The WWW Protocol Statistics Group +-- +-- The WWW protocol statistics group contains statistics about +-- the DTP requests and responses sent or received. + +wwwProtocolStatistics OBJECT IDENTIFIER ::= { wwwMIBObjects 2 } + +wwwSummaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing overview statistics for the + WWW services on this system." + ::= { wwwProtocolStatistics 1 } + +wwwSummaryEntry OBJECT-TYPE + SYNTAX WwwSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Overview statistics for an individual service." + INDEX { wwwServiceIndex } + ::= { wwwSummaryTable 1 } + +WwwSummaryEntry ::= SEQUENCE { + wwwSummaryInRequests Counter32, + wwwSummaryOutRequests Counter32, + wwwSummaryInResponses Counter32, + wwwSummaryOutResponses Counter32, + wwwSummaryInBytes Counter64, + wwwSummaryInLowBytes Counter32, + wwwSummaryOutBytes Counter64, + wwwSummaryOutLowBytes Counter32 +} + +wwwSummaryInRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests successfully received." + ::= { wwwSummaryEntry 1 } + +wwwSummaryOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests generated." + ::= { wwwSummaryEntry 2 } + +wwwSummaryInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses successfully received." + ::= { wwwSummaryEntry 3 } + +wwwSummaryOutResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses generated." + ::= { wwwSummaryEntry 4 } + +wwwSummaryInBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes received." + ::= { wwwSummaryEntry 5 } + +wwwSummaryInLowBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest thirty-two bits of wwwSummaryInBytes." + ::= { wwwSummaryEntry 6 } + +wwwSummaryOutBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes transmitted." + ::= { wwwSummaryEntry 7 } + +wwwSummaryOutLowBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest thirty-two bits of wwwSummaryOutBytes." + ::= { wwwSummaryEntry 8 } + +-- The WWW request tables contain detailed information about +-- requests send or received by WWW services. + +wwwRequestInTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwRequestInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for requests + received by WWW services on this system." + ::= { wwwProtocolStatistics 2 } + +wwwRequestInEntry OBJECT-TYPE + SYNTAX WwwRequestInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Request statistics for an individual service." + INDEX { wwwServiceIndex, wwwRequestInIndex } + ::= { wwwRequestInTable 1 } + +WwwRequestInEntry ::= SEQUENCE { + wwwRequestInIndex WwwRequestType, + wwwRequestInRequests Counter32, + wwwRequestInBytes Counter32, + wwwRequestInLastTime DateAndTime +} + +wwwRequestInIndex OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular request type the statistics apply to." + ::= { wwwRequestInEntry 1 } + +wwwRequestInRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests of this type received by this + WWW service." + ::= { wwwRequestInEntry 2 } + +wwwRequestInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per request type received + by this WWW service." + ::= { wwwRequestInEntry 3 } + +wwwRequestInLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last byte of the last complete + request of this type was received by this WWW service. The + value SHALL be '0000000000000000'H if no request of this + type has been received yet." + ::= { wwwRequestInEntry 4 } + +wwwRequestOutTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwRequestOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for requests + generated by the services on this system." + ::= { wwwProtocolStatistics 3 } + +wwwRequestOutEntry OBJECT-TYPE + SYNTAX WwwRequestOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Request statistics for an individual service." + INDEX { wwwServiceIndex, wwwRequestOutIndex } + ::= { wwwRequestOutTable 1 } + +WwwRequestOutEntry ::= SEQUENCE { + wwwRequestOutIndex WwwRequestType, + wwwRequestOutRequests Counter32, + wwwRequestOutBytes Counter32, + wwwRequestOutLastTime DateAndTime +} + +wwwRequestOutIndex OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular request type the statistics apply to." + ::= { wwwRequestOutEntry 1 } + +wwwRequestOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests of this type generated by this + WWW service." + ::= { wwwRequestOutEntry 2 } + +wwwRequestOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per requests type generated + by this WWW service." + ::= { wwwRequestOutEntry 3 } + +wwwRequestOutLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the first byte of the last request + of this type was send by this WWW service. The value SHALL + be '0000000000000000'H if no request of this type has been + send yet." + ::= { wwwRequestOutEntry 4 } + +-- The WWW response tables contain detailed information about +-- responses sent or received by WWW services. + +wwwResponseInTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwResponseInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for responses + received by WWW services on this system." + ::= { wwwProtocolStatistics 4 } + +wwwResponseInEntry OBJECT-TYPE + SYNTAX WwwResponseInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Response statistics for an individual service." + INDEX { wwwServiceIndex, wwwResponseInIndex } + ::= { wwwResponseInTable 1 } + +WwwResponseInEntry ::= SEQUENCE { + wwwResponseInIndex WwwResponseType, + wwwResponseInResponses Counter32, + wwwResponseInBytes Counter32, + wwwResponseInLastTime DateAndTime +} + +wwwResponseInIndex OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular response type the statistics apply to." + ::= { wwwResponseInEntry 1 } + +wwwResponseInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses of this type received by this + WWW service." + ::= { wwwResponseInEntry 2 } + +wwwResponseInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per response type received + by this WWW service." + ::= { wwwResponseInEntry 3 } + +wwwResponseInLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last byte of the last complete + response of this type was received by this WWW service. The + value SHALL be '0000000000000000'H if no response of this + type has been received yet." + ::= { wwwResponseInEntry 4 } + +wwwResponseOutTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwResponseOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for responses + generated by services on this system." + ::= { wwwProtocolStatistics 5 } + +wwwResponseOutEntry OBJECT-TYPE + SYNTAX WwwResponseOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Response statistics for an individual service." + INDEX { wwwServiceIndex, wwwResponseOutIndex } + ::= { wwwResponseOutTable 1 } + +WwwResponseOutEntry ::= SEQUENCE { + wwwResponseOutIndex WwwResponseType, + wwwResponseOutResponses Counter32, + wwwResponseOutBytes Counter32, + wwwResponseOutLastTime DateAndTime +} + +wwwResponseOutIndex OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular response type the statistics apply to." + ::= { wwwResponseOutEntry 1 } + +wwwResponseOutResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses of this type generated by this + WWW service." + ::= { wwwResponseOutEntry 2 } + +wwwResponseOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per response type generated + by this WWW service." + ::= { wwwResponseOutEntry 3 } + +wwwResponseOutLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the first byte of the last response of + this type was sent by this WWW service. The value SHALL be + '0000000000000000'H if response of this type has been send + yet." + ::= { wwwResponseOutEntry 4 } + + +-- The WWW Document Statistics Group +-- +-- The WWW document statistics group contains statistics about +-- document read attempts. + +wwwDocumentStatistics OBJECT IDENTIFIER ::= { wwwMIBObjects 3 } + +wwwDocCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which controls how the MIB implementation + collects and maintains document statistics." + ::= { wwwDocumentStatistics 1 } + +wwwDocCtrlEntry OBJECT-TYPE + SYNTAX WwwDocCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry used to configure the wwwDocLastNTable, + the wwwDocBucketTable, the wwwDocAccessTopNTable, + and the wwwDocBytesTopNTable." + INDEX { wwwServiceIndex } + ::= { wwwDocCtrlTable 1 } + +WwwDocCtrlEntry ::= SEQUENCE { + wwwDocCtrlLastNSize Unsigned32, + wwwDocCtrlLastNLock TimeTicks, + wwwDocCtrlBuckets Unsigned32, + wwwDocCtrlBucketTimeInterval TimeInterval, + wwwDocCtrlTopNSize Unsigned32 +} + +wwwDocCtrlLastNSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries in the wwwDocLastNTable." + DEFVAL { 25 } + ::= { wwwDocCtrlEntry 1 } + +wwwDocCtrlLastNLock OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows a manager to lock the wwwDocLastNTable + in order to retrieve the wwwDocLastNTable in a consistent + state. The agent is expected to take a snapshot of the + wwwDocLastNTable when it is locked and to continue updating + the real wwwDocLastNTable table so that recent information is + available as soon as the wwwDocLastNTable is unlocked again. + + Setting this object to a value greater than 0 will lock + the table. The timer ticks backwards until it reaches 0. + The table unlocks automatically once the timer reaches 0 + and the timer stops ticking. + + A manager can increase the timer to request more time to + read the table. However, any attempt to decrease the timer + will fail with an inconsistentValue error. This rule ensures + that multiple managers can simultaneously lock and retrieve + the wwwDocLastNTable. Note that managers must cooperate in + using wwwDocCtrlLastNLock. In particular, a manager MUST not + keep the wwwDocLastNTable locked when it is not necessary to + finish a retrieval operation." + ::= { wwwDocCtrlEntry 2 } + +wwwDocCtrlBuckets OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of buckets maintained by the agent + before the oldest bucket is deleted. The buckets are + used to populate the wwwDocAccessTopNTable and the + wwwDocBytesTopNTable. The time interval captured in + each bucket can be configured by setting the + wwwDocCtrlBucketTimeInterval object." + DEFVAL { 4 } -- 4 buckets times 15 minutes = 1 hour + ::= { wwwDocCtrlEntry 3 } + +wwwDocCtrlBucketTimeInterval OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time interval after which a new bucket is created. + Changing this object has no effect on existing buckets." + DEFVAL { 90000 } -- 15 minutes (resolution .01 s) + ::= { wwwDocCtrlEntry 4 } + +wwwDocCtrlTopNSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries shown in the + wwwDocAccessTopNTable and the wwwDocBytesTopNTable. + Changing this object has no effect on existing buckets." + DEFVAL { 25 } + ::= { wwwDocCtrlEntry 5 } + + +wwwDocLastNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocLastNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table which logs the last N access attempts." + ::= { wwwDocumentStatistics 2 } + +wwwDocLastNEntry OBJECT-TYPE + SYNTAX WwwDocLastNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which describes a recent access attempt." + INDEX { wwwServiceIndex, wwwDocLastNIndex } + ::= { wwwDocLastNTable 1 } + +WwwDocLastNEntry ::= SEQUENCE { + wwwDocLastNIndex Unsigned32, + wwwDocLastNName WwwDocName, + wwwDocLastNTimeStamp DateAndTime, + wwwDocLastNRequestType WwwRequestType, + wwwDocLastNResponseType WwwResponseType, + wwwDocLastNStatusMsg Utf8String, + wwwDocLastNBytes Unsigned32 +} + +wwwDocLastNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number used + for indexing the wwwDocLastNTable. The first document + accessed appears in the table with this index value equal + to one. Each subsequent document is indexed with the next + sequential index value. The Nth document accessed will be + indexed by N. This table presents a sliding window of the + last wwwDocCtrlLastNSize documents accessed. Thus, entries + in this table will be indexed by N-wwwDocCtrlLastNSize + thru N if N > wwwDocCtrlLastNSize and 1 thru N if + N <= wwwDocCtrlLastNSize. + + The wwwDocCtrlLastNLock attribute can be used to lock + this table to allow the manager to read its contents." + ::= { wwwDocLastNEntry 1 } + +wwwDocLastNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocLastNEntry 2 } + +wwwDocLastNTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the last attempt to access this + document." + ::= { wwwDocLastNEntry 3 } + +wwwDocLastNRequestType OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol request type which was received by the + server when this document access was attempted." + ::= { wwwDocLastNEntry 4 } + +wwwDocLastNResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of this attempt to access a document. This + object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocLastNEntry 5 } + +wwwDocLastNStatusMsg OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a human readable description of the + reason why the wwwDocLastNResponseType was returned to the + client. This object defines the implementation-specific + reason if the value of wwwDocLastNResponseType indicates + an error. For example, this object can indicate that the + requested document could not be transferred due to a + timeout condition or the document could not be transferred + because a 'soft link' pointing to the document could not be + resolved." + ::= { wwwDocLastNEntry 6 } + +wwwDocLastNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes that were returned as a + result of this attempt to access a document." + ::= { wwwDocLastNEntry 7 } + + +wwwDocBucketTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocBucketEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides administrative summary information for + the buckets maintained per WWW service." + ::= { wwwDocumentStatistics 3 } + +wwwDocBucketEntry OBJECT-TYPE + SYNTAX WwwDocBucketEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which describes the parameters associated with a + particular bucket." + INDEX { wwwServiceIndex, wwwDocBucketIndex } + ::= { wwwDocBucketTable 1 } + +WwwDocBucketEntry ::= SEQUENCE { + wwwDocBucketIndex Unsigned32, + wwwDocBucketTimeStamp DateAndTime, + wwwDocBucketAccesses Unsigned32, + wwwDocBucketDocuments Unsigned32, + wwwDocBucketBytes Unsigned32 +} + +wwwDocBucketIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocBucketTable. The index number + wraps to 1 whenever the maximum value is reached." + ::= { wwwDocBucketEntry 1 } + +wwwDocBucketTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the bucket was made available." + ::= { wwwDocBucketEntry 2 } + +wwwDocBucketAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for any document + provided by this WWW service during the time interval + over which this bucket was created." + ::= { wwwDocBucketEntry 3 } + +wwwDocBucketDocuments OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of different documents for which access + was attempted this this WWW service during the time interval + over which this bucket was created." + ::= { wwwDocBucketEntry 4 } + +wwwDocBucketBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes which were transferred + from this WWW service during the time interval over which + this bucket was created." + ::= { wwwDocBucketEntry 5 } + + +wwwDocAccessTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocAccessTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the most frequently accessed documents in a + given bucket. This table is sorted by the column + wwwDocAccessTopNAccesses. Entries having the same number + of accesses are secondarily sorted by wwwDocAccessTopNBytes. + Entries with the same number of accesses and the same + number of bytes will have an arbitrary order." + ::= { wwwDocumentStatistics 4 } + +wwwDocAccessTopNEntry OBJECT-TYPE + SYNTAX WwwDocAccessTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the top N table sorted by document accesses." + INDEX { wwwServiceIndex, wwwDocBucketIndex, + wwwDocAccessTopNIndex } + ::= { wwwDocAccessTopNTable 1 } + +WwwDocAccessTopNEntry ::= SEQUENCE { + wwwDocAccessTopNIndex Unsigned32, + wwwDocAccessTopNName WwwDocName, + wwwDocAccessTopNAccesses Unsigned32, + wwwDocAccessTopNBytes Unsigned32, + wwwDocAccessTopNLastResponseType WwwResponseType +} + +wwwDocAccessTopNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocAccessTopNTable. The index is + inversely correlated to the sorting order of the table. The + document with the highest access count will get the index + value 1." + ::= { wwwDocAccessTopNEntry 1 } + +wwwDocAccessTopNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocAccessTopNEntry 2 } + +wwwDocAccessTopNAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for this document." + ::= { wwwDocAccessTopNEntry 3 } + +wwwDocAccessTopNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes that were transmitted + as a result of attempts to access this document." + ::= { wwwDocAccessTopNEntry 4 } + +wwwDocAccessTopNLastResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of the last attempt to access this document. + This object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocAccessTopNEntry 5 } + + +wwwDocBytesTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocBytesTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the documents which caused most network + traffic in a given bucket. This table is sorted by the + column wwwDocBytesTopNBytes. Entries having the same number + bytes are secondarily sorted by wwwDocBytesTopNAccesses. + Entries with the same number of accesses and the same + number of bytes will have an arbitrary order." + ::= { wwwDocumentStatistics 5 } + +wwwDocBytesTopNEntry OBJECT-TYPE + SYNTAX WwwDocBytesTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the top N table sorted by network traffic." + INDEX { wwwServiceIndex, wwwDocBucketIndex, + wwwDocBytesTopNIndex } + ::= { wwwDocBytesTopNTable 1 } + +WwwDocBytesTopNEntry ::= SEQUENCE { + wwwDocBytesTopNIndex Unsigned32, + wwwDocBytesTopNName WwwDocName, + wwwDocBytesTopNAccesses Unsigned32, + wwwDocBytesTopNBytes Unsigned32, + wwwDocBytesTopNLastResponseType WwwResponseType +} + +wwwDocBytesTopNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocBytesTopNTable. The index is + inversely correlated to the sorting order of the table. The + document with the highest byte count will get the index + value 1." + ::= { wwwDocBytesTopNEntry 1 } + +wwwDocBytesTopNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocBytesTopNEntry 2 } + +wwwDocBytesTopNAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for this document." + ::= { wwwDocBytesTopNEntry 3 } + +wwwDocBytesTopNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes that were transmitted + as a result of attempts to access this document." + ::= { wwwDocBytesTopNEntry 4 } + +wwwDocBytesTopNLastResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of the last attempt to access this document. + This object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocBytesTopNEntry 5 } + +-- +-- Conformance Definitions +-- + +wwwMIBCompliances OBJECT IDENTIFIER ::= { wwwMIBConformance 1 } +wwwMIBGroups OBJECT IDENTIFIER ::= { wwwMIBConformance 2 } + +wwwMinimalCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP agents which implement + the minimal subset of the WWW-MIB. Implementors might + choose this subset for high-performance server where + full compliance might be to expensive." + MODULE -- this module + MANDATORY-GROUPS { + wwwServiceGroup, + wwwSummaryGroup + } + OBJECT wwwSummaryOutRequests + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInResponses + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInRequests + DESCRIPTION + "Instances of wwwSummaryInRequests do not exist on pure + WWW client implementations." + OBJECT wwwSummaryOutResponses + DESCRIPTION + "Instances of wwwSummaryOutResponses do not exist on pure + WWW client implementations." + ::= { wwwMIBCompliances 1 } + +wwwFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP agents which implement + the full WWW-MIB." + MODULE -- this module + MANDATORY-GROUPS { + wwwServiceGroup, + wwwSummaryGroup + } + GROUP wwwRequestInGroup + DESCRIPTION + "The wwwRequestInGroup is mandatory only for WWW server + or proxy server implementations." + GROUP wwwResponseOutGroup + DESCRIPTION + "The wwwResponseOutGroup is mandatory only for WWW server + or proxy server implementations." + GROUP wwwRequestOutGroup + DESCRIPTION + "The wwwRequestOutGroup is mandatory only for WWW client + or proxy server implementations." + GROUP wwwResponseInGroup + DESCRIPTION + "The wwwRequestOutGroup is mandatory only for WWW client + or proxy server implementations." + GROUP wwwDocumentGroup + DESCRIPTION + "The wwwDocumentGroup is mandatory only for WWW server + or proxy server implementations." + OBJECT wwwSummaryOutRequests + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInResponses + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInRequests + DESCRIPTION + "Instances of wwwSummaryInRequests do not exist on pure + WWW client implementations." + OBJECT wwwSummaryOutResponses + DESCRIPTION + "Instances of wwwSummaryOutResponses do not exist on pure + WWW client implementations." + ::= { wwwMIBCompliances 2 } + +wwwServiceGroup OBJECT-GROUP + OBJECTS { + wwwServiceDescription, + wwwServiceContact, + wwwServiceProtocol, + wwwServiceName, + wwwServiceType, + wwwServiceStartTime, + wwwServiceOperStatus, + wwwServiceLastChange + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the WWW services known by the SNMP agent." + ::= { wwwMIBGroups 1 } + +wwwSummaryGroup OBJECT-GROUP + OBJECTS { + wwwSummaryInRequests, + wwwSummaryOutRequests, + wwwSummaryInResponses, + wwwSummaryOutResponses, + wwwSummaryInBytes, + wwwSummaryInLowBytes, + wwwSummaryOutBytes, + wwwSummaryOutLowBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing summary statistics + about requests and responses generated and received + by a WWW service." + ::= { wwwMIBGroups 2 } + +wwwRequestInGroup OBJECT-GROUP + OBJECTS { + wwwRequestInRequests, + wwwRequestInBytes, + wwwRequestInLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about requests received by a WWW service." + ::= { wwwMIBGroups 3 } + +wwwRequestOutGroup OBJECT-GROUP + OBJECTS { + wwwRequestOutRequests, + wwwRequestOutBytes, + wwwRequestOutLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about requests generated by a WWW service." + ::= { wwwMIBGroups 4 } + +wwwResponseInGroup OBJECT-GROUP + OBJECTS { + wwwResponseInResponses, + wwwResponseInBytes, + wwwResponseInLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about responses received by a WWW service." + ::= { wwwMIBGroups 5 } + +wwwResponseOutGroup OBJECT-GROUP + OBJECTS { + wwwResponseOutResponses, + wwwResponseOutBytes, + wwwResponseOutLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about responses generated by a WWW service." + ::= { wwwMIBGroups 6 } + +wwwDocumentGroup OBJECT-GROUP + OBJECTS { + wwwDocCtrlLastNSize, + wwwDocCtrlLastNLock, + wwwDocCtrlBuckets, + wwwDocCtrlBucketTimeInterval, + wwwDocCtrlTopNSize, + wwwDocLastNName, + wwwDocLastNTimeStamp, + wwwDocLastNRequestType, + wwwDocLastNResponseType, + wwwDocLastNStatusMsg, + wwwDocLastNBytes, + wwwDocBucketTimeStamp, + wwwDocBucketAccesses, + wwwDocBucketDocuments, + wwwDocBucketBytes, + wwwDocAccessTopNName, + wwwDocAccessTopNAccesses, + wwwDocAccessTopNBytes, + wwwDocAccessTopNLastResponseType, + wwwDocBytesTopNName, + wwwDocBytesTopNAccesses, + wwwDocBytesTopNBytes, + wwwDocBytesTopNLastResponseType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + accesses to documents." + ::= { wwwMIBGroups 7 } + +END diff --git a/mibs/irtf/IRTF-NMRG-SMING b/mibs/irtf/IRTF-NMRG-SMING new file mode 100644 index 0000000..d9383b4 --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING @@ -0,0 +1,61 @@ +module IRTF-NMRG-SMING { + +// +// $RCSfile: IRTF-NMRG-SMING.sming,v $ +// $Revision: 813 $ +// $Author: strauss $ +// $Date: 2000-02-13 23:08:34 +0100 (Sun, 13 Feb 2000) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core node definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + node ccitt { oid 0; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + }; + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + node directory { oid internet.1; }; + node mgmt { oid internet.2; }; + node mib-2 { oid mgmt.1; }; + node transmission { oid mib-2.10; }; + node experimental { oid internet.3; }; + node private { oid internet.4; }; + node enterprises { oid private.1; }; + node security { oid internet.5; }; + node snmpV2 { oid internet.6; }; + node snmpDomains { oid snmpV2.1; }; + node snmpProxys { oid snmpV2.2; }; + node snmpModules { oid snmpV2.3; }; + + node joint-iso-ccitt { oid 2; }; + +}; diff --git a/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS b/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS new file mode 100644 index 0000000..08349e7 --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS @@ -0,0 +1,76 @@ +module IRTF-NMRG-SMING-EXTENSIONS { + +// +// $RCSfile: IRTF-NMRG-SMING-EXTENSIONS.sming,v $ +// $Revision: 813 $ +// $Author: strauss $ +// $Date: 2000-02-13 23:08:34 +0100 (Sun, 13 Feb 2000) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core extension definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + extension agentcaps { + status current; + description + "The agentcaps extension statement is used to describe + an agent's deviation from the compliance statements + of the modules it implements. It is designed to be + compatible with the SMIv2 AGENT-CAPABILITIES macro. + + The agentcaps extension statement should only be used + in the statement body of a module that does not + contain any other type or node definitions that do not + correspond to an agent implementation."; + reference + "RFC 2580, Section 6 describes the SMIv2 + compatible AGENT-CAPABILITIES macro."; + abnf + "agentcapsStatement = 'agentcaps' sep lcIdentifier + optsep '{' stmtsep + oidStatement stmtsep + releaseStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *(includesStatement stmtsep) + '}' optsep ';' + + includesStatement = 'includes' sep qlcIdentifier + optsep '{' stmtsep + *(variationStatement stmtsep) + '}' optsep ';' + + variationStatement = 'variation' sep qlcIdentifier + optsep '{' stmtsep + typeStatement stmtsep + writetypeStatement stmtsep + accessStatement stmtsep + createStatement stmtsep + '}' optsep ';' + "; + }; + +}; diff --git a/mibs/irtf/IRTF-NMRG-SMING-TYPES b/mibs/irtf/IRTF-NMRG-SMING-TYPES new file mode 100644 index 0000000..4f5080f --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING-TYPES @@ -0,0 +1,952 @@ +module IRTF-NMRG-SMING-TYPES { + +// +// $RCSfile: IRTF-NMRG-SMING-TYPES,v $ +// $Revision: 7606 $ +// $Author: schoenw $ +// $Date: 2008-01-22 13:38:03 +0100 (Tue, 22 Jan 2008) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core type definitions for SMIng."; + + revision { + date "2000-10-19"; + description "Special semantics and default value of 8 or 11 + zero bytes for the DateAndTime type."; + }; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + typedef Gauge32 { + type Unsigned32; + description + "The Gauge32 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^32-1 (4294967295 decimal), and the minimum value + can not be smaller than 0. The value of a Gauge32 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge32 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + reference + "RFC 2578, Sections 2. and 7.1.7."; + }; + + typedef Counter32 { + type Unsigned32; + description + "The Counter32 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter32 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter32."; + reference + "RFC 2578, Sections 2. and 7.1.6."; + }; + + typedef Gauge64 { + type Unsigned64; + description + "The Gauge64 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^64-1 (18446744073709551615), and the minimum value + can not be smaller than 0. The value of a Gauge64 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge64 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + }; + + typedef Counter64 { + type Unsigned64; + description + "The Counter64 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615), when + it wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter64 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter64."; + reference + "RFC 2578, Sections 2. and 7.1.10."; + }; + + typedef Opaque { + type OctetString; + description + "The Opaque type is provided solely for + backward-compatibility, and shall not be used for + newly-defined object types. + + The Opaque type supports the capability to pass + arbitrary ASN.1 syntax. A value is encoded using + the ASN.1 Basic Encoding Rules into a string of + octets. This, in turn, is encoded as an + OctetString, in effect `double-wrapping' the + original ASN.1 value. + + Note that a conforming implementation need only be + able to accept and recognize opaquely-encoded data. + It need not be able to unwrap the data and then + interpret its contents. + + A requirement on `standard' MIB modules is that no + object may have a type value of Opaque."; + reference + "RFC 2578, Sections 2. and 7.1.9."; + }; + + typedef IpAddress { + type OctetString (4); + status deprecated; + description + "******* THIS TYPE DEFINITION IS DEPRECATED ******* + + The IpAddress type represents a 32-bit internet + IPv4 address. It is represented as an OctetString + of length 4, in network byte-order. + + Note that the IpAddress type is present for + historical reasons. IPv4 and IPv6 addresses should + be represented using the IpAddr type. Generic + Network addresses should be represented using a + pair of TDomain and TAddress types (all defined in + this module)."; + reference + "RFC 2578, Sections 2. and 7.1.5."; + }; + + typedef TimeTicks { + type Unsigned32; + description + "The TimeTicks type represents a non-negative + integer which represents the time, modulo 2^32 + (4294967296 decimal), in hundredths of a second + between two epochs. When objects are defined which + use this type, the description of the object + identifies both of the reference epochs. + + For example, the TimeStamp type (defined in this + module) is based on the TimeTicks type. + + With a TimeStamp, the first reference epoch is + defined as the time when SNMPv2-MIB::sysUpTime was + zero, and the second reference epoch is defined as + the current value of sysUpTime. + + The TimeTicks type should not be sub-typed."; + reference + "RFC 2578, Sections 2. and 7.1.8."; + }; + + // + // The following type definitions are + // conversions of the textual conventions from + // the SNMPv2-TC module (RFC 2579), except for + // TAddressOrZero, which is not present in + // SNMPv2-TC. + // + + typedef DisplayString { + type OctetString (0..255); + format "255a"; + 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."; + }; + + typedef PhysAddress { + type OctetString; + format "1x:"; + description + "Represents media- or physical-level addresses."; + }; + + typedef MacAddress { + type OctetString (6); + format "1x:"; + 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."; + }; + + typedef TruthValue { + type Enumeration (true(1), false(2)); + description + "Represents a boolean value."; + }; + + typedef TestAndIncr { + type Integer32 (0..2147483647); + 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."; + }; + + typedef AutonomousType { + type ObjectIdentifier; + 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."; + }; + + typedef InstancePointer { + type ObjectIdentifier; + 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."; + }; + + typedef VariablePointer { + type ObjectIdentifier; + description + "A pointer to a specific object instance. For example, + sysContact.0 or ifInOctets.3."; + }; + + typedef RowPointer { + type ObjectIdentifier; + 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)."; + }; + + typedef RowStatus { + type Enumeration (active(1), notInService(2), + notReady(3), createAndGo(4), + createAndWait(5), destroy(6)); + 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|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, 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. + + (6) the return value can indicate one of the following + errors: + + wrongValue: because the agent 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. + + 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 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."; + }; + + typedef TimeStamp { + type TimeTicks; + 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. When the specific occurrence occurred prior to the + last time sysUpTime was zero, then the TimeStamp value is + zero. Note that this requires all TimeStamp values to be + reset to zero when the value of sysUpTime reaches 497+ days + and wraps around to zero."; + }; + + typedef TimeInterval { + type Integer32 (0..2147483647); + description + "A period of time, measured in units of 0.01 seconds."; + }; + + typedef DateAndTime { + type OctetString (8 | 11); + default 0x0000000000000000000000; + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + 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 big-endian encoding + - 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. + + The two special values of 8 or 11 zero bytes denote an + unknown date-time specification."; + }; + + typedef StorageType { + type Enumeration (other(1), volatile(2), + nonVolatile(3), permanent(4), + readOnly(5)); + 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). (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."; + }; + + typedef TDomain { + type ObjectIdentifier; + 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."; + }; + + typedef TAddressOrZero { + type OctetString (0..255); + 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. + + A zero-length TAddress value denotes an unknown transport + service address."; + reference + "The SNMPv2-TM MIB module is defined in RFC 1906."; + }; + + typedef TAddress { + type TAddressOrZero (1..255); + description + "Denotes a transport service address. + + This type does not allow a zero-length TAddress value."; + }; + +}; diff --git a/mibs/irtf/Makefile.am b/mibs/irtf/Makefile.am new file mode 100644 index 0000000..20285b3 --- /dev/null +++ b/mibs/irtf/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/irtf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +irtfdir = $(mibdir)/irtf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +irtf_DATA = $(MIBS) diff --git a/mibs/irtf/Makefile.in b/mibs/irtf/Makefile.in new file mode 100644 index 0000000..258c0e0 --- /dev/null +++ b/mibs/irtf/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/irtf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/irtf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(irtfdir)" +irtfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(irtf_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +irtfdir = $(mibdir)/irtf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +irtf_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/irtf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/irtf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-irtfDATA: $(irtf_DATA) + @$(NORMAL_INSTALL) + test -z "$(irtfdir)" || $(MKDIR_P) "$(DESTDIR)$(irtfdir)" + @list='$(irtf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(irtfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(irtfdir)/$$f'"; \ + $(irtfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(irtfdir)/$$f"; \ + done + +uninstall-irtfDATA: + @$(NORMAL_UNINSTALL) + @list='$(irtf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(irtfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(irtfdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(irtfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-irtfDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-irtfDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-irtfDATA install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-irtfDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/site/Makefile.am b/mibs/site/Makefile.am new file mode 100644 index 0000000..3081292 --- /dev/null +++ b/mibs/site/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/site Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +sitedir = $(mibdir)/site +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +site_DATA = $(MIBS) diff --git a/mibs/site/Makefile.in b/mibs/site/Makefile.in new file mode 100644 index 0000000..6216a2a --- /dev/null +++ b/mibs/site/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/site Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/site +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(sitedir)" +siteDATA_INSTALL = $(INSTALL_DATA) +DATA = $(site_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +sitedir = $(mibdir)/site +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +site_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/site/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/site/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-siteDATA: $(site_DATA) + @$(NORMAL_INSTALL) + test -z "$(sitedir)" || $(MKDIR_P) "$(DESTDIR)$(sitedir)" + @list='$(site_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(siteDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sitedir)/$$f'"; \ + $(siteDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sitedir)/$$f"; \ + done + +uninstall-siteDATA: + @$(NORMAL_UNINSTALL) + @list='$(site_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sitedir)/$$f'"; \ + rm -f "$(DESTDIR)$(sitedir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(sitedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-siteDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-siteDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-siteDATA \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-siteDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/tubs/Makefile.am b/mibs/tubs/Makefile.am new file mode 100644 index 0000000..538ed32 --- /dev/null +++ b/mibs/tubs/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/tubs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +tubsdir = $(mibdir)/tubs +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +tubs_DATA = $(MIBS) diff --git a/mibs/tubs/Makefile.in b/mibs/tubs/Makefile.in new file mode 100644 index 0000000..778122e --- /dev/null +++ b/mibs/tubs/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/tubs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/tubs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(tubsdir)" +tubsDATA_INSTALL = $(INSTALL_DATA) +DATA = $(tubs_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +tubsdir = $(mibdir)/tubs +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +tubs_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/tubs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/tubs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-tubsDATA: $(tubs_DATA) + @$(NORMAL_INSTALL) + test -z "$(tubsdir)" || $(MKDIR_P) "$(DESTDIR)$(tubsdir)" + @list='$(tubs_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(tubsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(tubsdir)/$$f'"; \ + $(tubsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(tubsdir)/$$f"; \ + done + +uninstall-tubsDATA: + @$(NORMAL_UNINSTALL) + @list='$(tubs_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(tubsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(tubsdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(tubsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-tubsDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-tubsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-tubsDATA installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-tubsDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/tubs/POLICY-DEVICE-AUX-MIB b/mibs/tubs/POLICY-DEVICE-AUX-MIB new file mode 100644 index 0000000..da72f41 --- /dev/null +++ b/mibs/tubs/POLICY-DEVICE-AUX-MIB @@ -0,0 +1,233 @@ +POLICY-DEVICE-AUX-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndex FROM IF-MIB; + + +policyDeviceAuxMib MODULE-IDENTITY + LAST-UPDATED "200007121800Z" -- 12 July 2000 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO + "Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA USA 95054 + Phone: +1 408 495-2992 + Email: jseligso@nortelnetworks.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "This module defines an infrastructure used + for support of policy-based provisioning of + a network device." + ::= { experimental 999 } + + + +policyDeviceAuxObjects OBJECT IDENTIFIER ::= { policyDeviceAuxMib 1 } +policyDeviceAuxConformance OBJECT IDENTIFIER ::= { policyDeviceAuxMib 2 } + + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyDeviceAuxObjects 1 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone interface, Frame Relay + interface, BGP-capable router, web server, firewall, etc. + + Valid characters are a-z, A-Z, 0-9, period, hyphen and + underscore. A role must not start with an underscore." + REFERENCE + "Policy Core Information Model, + draft-ietf-policy-core-info-model-06.txt" + SYNTAX OCTET STRING (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum. + + For example, a+b and b+a are NOT different role-combinations; + rather, they are different formating of the same (one) role- + combination. + + Notice the roles within a role-combination are in lexicographic + order from minimum to maximum, hence, we declare: + a+b is the valid formating of the role-combination, + b+a is an invalid formating of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been assigned. + This role-combination is also known as the null role-combination. + (Note the deliberate use of lower case leters to avoid confusion + with the ASCII NULL character which has a value of zero but length + of one.)" + SYNTAX OCTET STRING (SIZE (0..255)) + +-- The Policy Interface Table supports +-- associating an interface with a specific role combination. + +-- This table satisfy the need to monitor the configuration of +-- roles on a per interface basis, and is no less scalable as +-- other required per interface parameters. +-- This does not preclude roles being associated with some less +-- granular entities, and should be addressed when such need arise. + +policyInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Policy information about a device's interfaces." + ::= { policyDeviceConfig 1 } + + +policyInterfaceEntry OBJECT-TYPE + SYNTAX PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the policyInterfaceTable. + Each row identifies policy infromation about a + particular interface." + INDEX { policyInterfaceIfIndex } + ::= { policyInterfaceTable 1 } + + +PolicyInterfaceEntry ::= SEQUENCE { + policyInterfaceIfIndex InterfaceIndex, + policyInterfaceRoleCombo RoleCombination, + policyInterfaceStorage StorageType, + policyInterfaceStatus RowStatus +} + + +policyInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for which this conceptual row provides + policy information." + + ::= { policyInterfaceEntry 1 } + + +policyInterfaceRoleCombo OBJECT-TYPE + SYNTAX RoleCombination + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role combination that is associated with this interface + for the purpose of assigning policies to this interface." + ::= { policyInterfaceEntry 2 } + + +policyInterfaceStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + Conceptual rows having the value permanent(4) need not + allow write-access to any columnar objects in the row. + + + This object may not be modified if the associated + policyInterfaceStatus object is equal to active(1)." + DEFVAL { volatile } + ::= { policyInterfaceEntry 3 } + + +policyInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. Row + creation using only default values is supported." + ::= { policyInterfaceEntry 4 } + +-- +-- Conformance Section +-- + + +policyDeviceCompliances + OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 1 } +policyDeviceGroups OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 2 } + + +policyDeviceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Policy Auxiliary MIB." + + + MODULE -- this module + MANDATORY-GROUPS { policyInterfaceGroup } + + + OBJECT policyInterfaceRoleCombo + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + OBJECT policyInterfaceStorage + MIN-ACCESS read-only + DESCRIPTION "Write access is not required, nor is + support for the nonVolatile(2) enumeration." + + + OBJECT policyInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { policyDeviceCompliances 1 } + + +policyInterfaceGroup OBJECT-GROUP + OBJECTS { + policyInterfaceRoleCombo, + policyInterfaceStorage, + policyInterfaceStatus + } + STATUS current + + DESCRIPTION + "Objects used to define interface to role combination + mappings." + ::= { policyDeviceGroups 1 } + + +END diff --git a/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig b/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig new file mode 100644 index 0000000..71c3cf1 --- /dev/null +++ b/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig @@ -0,0 +1,233 @@ +POLICY-DEVICE-AUX-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndex FROM IF-MIB; + + +policyDeviceAuxMib MODULE-IDENTITY + LAST-UPDATED "200007121800Z" -- 12 July 2000 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO + "Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA USA 95054 + Phone: +1 408 495-2992 + Email: jseligso@nortelnetworks.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "This module defines an infrastructure used + for support of policy-based provisioning of + a network device." + ::= { experimental 999 } + + + +policyDeviceAuxObjects OBJECT IDENTIFIER ::= { policyDeviceAuxMib 1 } +policyDeviceAuxConformance OBJECT IDENTIFIER ::= { policyDeviceAuxMib 2 } + + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyDeviceAuxObjects 1 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone interface, Frame Relay + interface, BGP-capable router, web server, firewall, etc. + + Valid characters are a-z, A-Z, 0-9, period, hyphen and + underscore. A role must not start with an underscore." + REFERENCE + "Policy Core Information Model, + draft-ietf-policy-core-info-model-06.txt" + SYNTAX SnmpAdminString (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum. + + For example, a+b and b+a are NOT different role-combinations; + rather, they are different formating of the same (one) role- + combination. + + Notice the roles within a role-combination are in lexicographic + order from minimum to maximum, hence, we declare: + a+b is the valid formating of the role-combination, + b+a is an invalid formating of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been assigned. + This role-combination is also known as the null role-combination. + (Note the deliberate use of lower case leters to avoid confusion + with the ASCII NULL character which has a value of zero but length + of one.)" + SYNTAX SnmpAdminString (SIZE (0..255)) + +-- The Policy Interface Table supports +-- associating an interface with a specific role combination. + +-- This table satisfy the need to monitor the configuration of +-- roles on a per interface basis, and is no less scalable as +-- other required per interface parameters. +-- This does not preclude roles being associated with some less +-- granular entities, and should be addressed when such need arise. + +policyInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Policy information about a device's interfaces." + ::= { policyDeviceConfig 1 } + + +policyInterfaceEntry OBJECT-TYPE + SYNTAX PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the policyInterfaceTable. + Each row identifies policy infromation about a + particular interface." + INDEX { policyInterfaceIfIndex } + ::= { policyInterfaceTable 1 } + + +PolicyInterfaceEntry ::= SEQUENCE { + policyInterfaceIfIndex InterfaceIndex, + policyInterfaceRoleCombo RoleCombination, + policyInterfaceStorage StorageType, + policyInterfaceStatus RowStatus +} + + +policyInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for which this conceptual row provides + policy information." + + ::= { policyInterfaceEntry 1 } + + +policyInterfaceRoleCombo OBJECT-TYPE + SYNTAX RoleCombination + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role combination that is associated with this interface + for the purpose of assigning policies to this interface." + ::= { policyInterfaceEntry 2 } + + +policyInterfaceStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + Conceptual rows having the value permanent(4) need not + allow write-access to any columnar objects in the row. + + + This object may not be modified if the associated + policyInterfaceStatus object is equal to active(1)." + DEFVAL { volatile } + ::= { policyInterfaceEntry 3 } + + +policyInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. Row + creation using only default values is supported." + ::= { policyInterfaceEntry 4 } + +-- +-- Conformance Section +-- + + +policyDeviceCompliances + OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 1 } +policyDeviceGroups OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 2 } + + +policyDeviceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Policy Auxiliary MIB." + + + MODULE -- this module + MANDATORY-GROUPS { policyInterfaceGroup } + + + OBJECT policyInterfaceRoleCombo + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + OBJECT policyInterfaceStorage + MIN-ACCESS read-only + DESCRIPTION "Write access is not required, nor is + support for the nonVolatile(2) enumeration." + + + OBJECT policyInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { policyDeviceCompliances 1 } + + +policyInterfaceGroup OBJECT-GROUP + OBJECTS { + policyInterfaceRoleCombo, + policyInterfaceStorage, + policyInterfaceStatus + } + STATUS current + + DESCRIPTION + "Objects used to define interface to role combination + mappings." + ::= { policyDeviceGroups 1 } + + +END diff --git a/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES b/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES new file mode 100644 index 0000000..a8ee855 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES @@ -0,0 +1,208 @@ +TUBS-IBR-AGENT-CAPABILITIES DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-AGENT-CAPABILITIES 814 2000-02-14 08:54:20Z strauss $ + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + AGENT-CAPABILITIES + FROM SNMPv2-CONF + ibr + FROM TUBS-SMI; + +ibrAgentCapabilities MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Agent capability statements." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9808051623Z" + DESCRIPTION + "Added agent capabilities for the WWW-MIB subagent version 1.0." + REVISION "9702141023Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 6 } + +linux OBJECT IDENTIFIER + ::= { ibrAgentCapabilities 1 } + +linuxAgent3dot3 AGENT-CAPABILITIES + PRODUCT-RELEASE "cmu-snmp-linux-3.3" + STATUS current + DESCRIPTION "CMU SNMP v1.1b + SNMPv2 USEC + LINUX" + + SUPPORTS SNMPv2-MIB + INCLUDES { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup, + snmpCommunityGroup } + + SUPPORTS SNMPv2-USEC-MIB + INCLUDES { usecBasicGroup, usecStatsGroup } + + SUPPORTS IF-MIB + INCLUDES { ifGeneralGroup, ifPacketGroup } + VARIATION ifLinkUpDownTrapEnable + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifConnectorPresent + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifName + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifHighSpeed + ACCESS not-implemented + DESCRIPTION "" + + VARIATION ifInMulticastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifInBroadcastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifOutMulticastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifOutBroadcastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifPromiscuousMode + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS IP-MIB + INCLUDES { ipGroup, + icmpGroup } + VARIATION ipAdEntReasmMaxSize + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaIfIndex + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaPhysAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaNetAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaType + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipRoutingDiscards + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS TCP-MIB + INCLUDES { tcpGroup } + VARIATION tcpInErrs + ACCESS not-implemented + DESCRIPTION "" + VARIATION tcpOutRsts + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS UDP-MIB + INCLUDES { udpGroup } + VARIATION udpLocalAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION udpLocalPort + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS HOST-RESOURCES-MIB + INCLUDES { hrSystemGroup, + hrStorageGroup, + hrDeviceGroup, + hrSWRunGroup, + hrSWRunPerfGroup, + hrSWInstalledGroup } + + VARIATION hrSWOSIndex + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrStorageAllocationFailures + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrDeviceErrors + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrProcessorFrwID + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrFSAccess + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrSWRunName + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrSWRunID + ACCESS not-implemented + DESCRIPTION "" + + ::= { ibrAgentCapabilities 2 } + +wwwSubagent1dot0 AGENT-CAPABILITIES + PRODUCT-RELEASE "TUBS Apache WWW-MIB sub-agent version 1.0" + STATUS current + DESCRIPTION "TUBS WWW-MIB sub-agent version 1.0 for Solaris." + + SUPPORTS WWW-MIB + INCLUDES { wwwServiceGroup, wwwSummaryGroup, + wwwRequestInGroup, wwwResponseOutGroup, + wwwDocumentGroup } + + VARIATION wwwServiceOperStatus + SYNTAX INTEGER { running(2) } + DESCRIPTION "The sub-agent toolkit does not allow to return + noSuchObject exceptions." + VARIATION wwwServiceLastChange + DESCRIPTION "Always zero. The sub-agent toolkit does not allow + to return noSuchObject exceptions." + + VARIATION wwwSummaryOutRequests + DESCRIPTION "Always zero. The implementation only supports + the server role." + VARIATION wwwSummaryInResponses + DESCRIPTION "Always zero. The implementation only supports + the server role." + VARIATION wwwSummaryInBytes + DESCRIPTION "Counter64 data-type does not exist in SNMPv1." + VARIATION wwwSummaryOutBytes + DESCRIPTION "Counter64 data-type does not exist in SNMPv1." + + VARIATION wwwRequestInRequests + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + VARIATION wwwRequestInBytes + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + VARIATION wwwRequestInLastTime + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + + ::= { ibrAgentCapabilities 3 } + +END diff --git a/mibs/tubs/TUBS-IBR-LINUX-MIB b/mibs/tubs/TUBS-IBR-LINUX-MIB new file mode 100644 index 0000000..9fe7be4 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-LINUX-MIB @@ -0,0 +1,131 @@ +TUBS-IBR-LINUX-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-LINUX-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ibr + FROM TUBS-SMI; + +linuxMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for the linux operating system." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9801070622Z" + DESCRIPTION + "Load average object-types added, clarification of linuxCPU." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 5 } + +-- The various groups defined within this MIB module: + +linuxObjects OBJECT IDENTIFIER ::= { linuxMIB 2 } + +linuxConformance OBJECT IDENTIFIER ::= { linuxMIB 3 } + +-- Textual Conventions: + +LoadValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-2" + STATUS current + DESCRIPTION + "This data type represents a systems load average over a + given time interval. Every usage of this textual convention + is required to specify the time interval. A value represents + the average number of processes ready to run times 100." + SYNTAX Integer32 (0..2147483647) + +-- Object definitions: + +linuxCPU OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the linux CPUs. This string contains + foreach CPU present in the system the CPU type, model and + vendor (if known by the operating system)." + ::= { linuxObjects 1 } + +linuxBogo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BOGO MIPS of the linux system." + ::= { linuxObjects 2 } + +linuxLoadAvg1 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 60 seconds." + ::= { linuxObjects 3 } + +linuxLoadAvg5 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 5 minutes." + ::= { linuxObjects 4 } + +linuxLoadAvg15 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 15 minutes." + ::= { linuxObjects 5 } + +-- Conformance statements: + +linuxCompliances OBJECT IDENTIFIER ::= { linuxConformance 1 } + +linuxGroups OBJECT IDENTIFIER ::= { linuxConformance 2 } + +linuxCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which implements + the linux MIB." + MODULE -- this module + MANDATORY-GROUPS { linuxGroup } + ::= { linuxCompliances 1 } + +linuxGroup OBJECT-GROUP + OBJECTS { + linuxCPU, linuxBogo, + linuxLoadAvg1, linuxLoadAvg5, linuxLoadAvg15 + } + STATUS current + DESCRIPTION + "A collection of linux specific objects." + ::= { linuxGroups 1 } + +END diff --git a/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB b/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB new file mode 100644 index 0000000..c1df6e0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB @@ -0,0 +1,636 @@ +TUBS-IBR-LINUX-NETFILTER-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-LINUX-NETFILTER-MIB,v 1.7 2002/08/26 16:46:14 wellnitz Exp $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, StorageType, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, InetAddressPrefixLength + FROM INET-ADDRESS-MIB + ibr + FROM TUBS-SMI; + +lnfMIB MODULE-IDENTITY + LAST-UPDATED "200207230000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss, Oliver Wellnitz + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: {strauss,wellnitz}@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for the Linux 2.4 netfilter + subsystem." + REVISION "200207260000Z" + DESCRIPTION + "The initial revision of this module. This revision does + not cover any match extensions and target extensions." + ::= { ibr 13 } + +-- +-- The various groups defined within this MIB module: +-- + +lnfObjects OBJECT IDENTIFIER ::= { lnfMIB 1 } + +lnfTraps OBJECT IDENTIFIER ::= { lnfMIB 2 } + +lnfConformance OBJECT IDENTIFIER ::= { lnfMIB 3 } + +-- +-- Textual Conventions: +-- + +LnfTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents an action that is about to + be applied to a packet. + + none(1): No action, except increasing counters. + + other(2): An unknown extension action which cannot + be described by the values specified below. + + drop(3): Drop the packet on the floor. + + accept(4): Let the packet through. + + queue(5): Pass the packet to userspace. + + return(6): Stop traversing this chain and resume at the + next rule in the previous (calling) chain. + + chain(7): Jump to the user chain specified by a + related object. + " + SYNTAX INTEGER { + none(1), + other(2), + drop(3), + accept(4), + queue(5), + return(6), + chain(7) + } + +-- +-- Object definitions: +-- + +lnfLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last netfilter configuration change of any kind, + including any creation, deletion or modification of any table of this + MIB." + ::= { lnfObjects 1 } + +lnfTableTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all tables installed on the netfilter subsystem." + ::= { lnfObjects 2 } + +lnfTableEntry OBJECT-TYPE + SYNTAX LnfTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter table." + INDEX { lnfTableAddressType, lnfTableName } + ::= { lnfTableTable 1 } + +LnfTableEntry ::= + SEQUENCE { + lnfTableAddressType InetAddressType, + lnfTableName SnmpAdminString, + lnfTableLastChange TimeStamp + } + +lnfTableAddressType OBJECT-TYPE + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for which the netfilter table works." + ::= { lnfTableEntry 1 } + +lnfTableName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the netfilter table." + ::= { lnfTableEntry 2 } + +lnfTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter + table, including the creation or deletion of a netfilter + chain that belongs to this table." + ::= { lnfTableEntry 3 } + +-- + +lnfChainTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfChainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all chains installed on the netfilter + subsystem." + ::= { lnfObjects 3 } + +lnfChainEntry OBJECT-TYPE + SYNTAX LnfChainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter chain." + INDEX { lnfTableAddressType, lnfTableName, lnfChainName } + ::= { lnfChainTable 1 } + +LnfChainEntry ::= + SEQUENCE { + lnfChainName SnmpAdminString, + lnfChainPackets Counter64, + lnfChainOctets Counter64, + lnfChainTarget LnfTarget, + lnfChainLastChange TimeStamp, + lnfChainStorage StorageType, + lnfChainStatus RowStatus + } + +lnfChainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The netfilter chain to which the rule belongs." + ::= { lnfChainEntry 1 } + +lnfChainPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that passed this chain since + the rule was installed or reset." + ::= { lnfChainEntry 2 } + +lnfChainOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that passed this chain since + the chain was installed or reset." + ::= { lnfChainEntry 3 } + +lnfChainTarget OBJECT-TYPE + SYNTAX LnfTarget { drop(3), accept(4), return(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The action that shall be applied to a packet if no rule + within the chain matches. Note that user-defined chains + only allow return(6)." + DEFVAL { return } + ::= { lnfChainEntry 4 } + +lnfChainLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter + chain, including the creation or deletion of a netfilter + rule that belongs to this chain." + ::= { lnfChainEntry 5 } + +lnfChainStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether it + is backed up by stable storage or builtin." + ::= { lnfChainEntry 6 } + +lnfChainStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + lnfChainTable." + ::= { lnfChainEntry 7 } + +-- + +lnfRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all rules installed on the netfilter + subsystem." + ::= { lnfObjects 4 } + +lnfRuleEntry OBJECT-TYPE + SYNTAX LnfRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter rule. Rules + of different netfilter tables and chains are + distinguished by the corresponding index objects." + INDEX { lnfTableAddressType, lnfTableName, + lnfChainName, lnfRuleIndex } + ::= { lnfRuleTable 1 } + +LnfRuleEntry ::= + SEQUENCE { + lnfRuleIndex Unsigned32, + lnfRuleProtocol Unsigned32, + lnfRuleProtocolInv TruthValue, + lnfRuleSourceAddress InetAddress, + lnfRuleSourceAddressPrefixLength InetAddressPrefixLength, + lnfRuleSourceAddressInv TruthValue, + lnfRuleDestinationAddress InetAddress, + lnfRuleDestinationAddressPrefixLength InetAddressPrefixLength, + lnfRuleDestinationAddressInv TruthValue, + lnfRuleInInterface SnmpAdminString, + lnfRuleInInterfaceInv TruthValue, + lnfRuleOutInterface SnmpAdminString, + lnfRuleOutInterfaceInv TruthValue, + lnfRuleFragment TruthValue, + lnfRuleFragmentInv TruthValue, + lnfRulePackets Counter64, + lnfRuleOctets Counter64, + lnfRuleTarget LnfTarget, + lnfRuleTargetChain SnmpAdminString, + lnfRuleTrapEnable TruthValue, + lnfRuleLastChange TimeStamp, + lnfRuleStorage StorageType, + lnfRuleStatus RowStatus + } + +lnfRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique number identifying the rule within a netfilter + chain." + ::= { lnfRuleEntry 1 } + +lnfRuleProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The protocol of the rule. The number zero matches all + protocols." + DEFVAL { 0 } + ::= { lnfRuleEntry 2 } + +lnfRuleProtocolInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleProtocol test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 3 } + +lnfRuleSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of a packet. The exact format depends + on the address type specified by lnfRuleAddressType. + This test is applied for an address prefix whose length + is specified by lnfRuleSourceAddressPrefixLength. + + If a new row is created this object should default to + an all-zeros value with a length approrpiate for the + corresponding lnfRuleAddressType object value." + ::= { lnfRuleEntry 4 } + +lnfRuleSourceAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The network prefix length associated with + lnfRuleSourceAddress." + DEFVAL { 0 } + ::= { lnfRuleEntry 5 } + +lnfRuleSourceAddressInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleSourceAddress + and lnfRuleSourceAddressPrefixLength test has to + be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 6 } + +lnfRuleDestinationAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address of a packet. The exact format + depends on the address type specified by + lnfRuleAddressType. This test is applied for an address + prefix whose length is specified by + lnfRuleDestinationAddressPrefixLength. + + If a new row is created this object should default to + an all-zeros value with a length approrpiate for the + corresponding lnfRuleAddressType object value." + ::= { lnfRuleEntry 7 } + +lnfRuleDestinationAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The network prefix length associated with + lnfRuleDestinationAddress." + DEFVAL { 0 } + ::= { lnfRuleEntry 8 } + +lnfRuleDestinationAddressInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleDestinationAddress + and lnfRuleDestinationAddressPrefixLength test has to + be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 9 } + +lnfRuleInInterface OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of an interface via which a packet is going to be + received (only for packets entering the INPUT, FORWARD and + PREROUTING chains). If the interface name ends in a '+', + then any interface which begins with this name will match. + If this is an empty string, any interface name will match." + DEFVAL { "" } + ::= { lnfRuleEntry 10 } + +lnfRuleInInterfaceInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleInInterface test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 11 } + +lnfRuleOutInterface OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of an interface via which a packet is going to be + sent (for packets entering the FORWARD, OUTPUT and + POSTROUTING chains). If the interface name ends in a '+', + then any interface which begins with this name will match. + If this is an empty string, any interface name will match." + DEFVAL { "" } + ::= { lnfRuleEntry 12 } + +lnfRuleOutInterfaceInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleOutInterface test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 13 } + +lnfRuleFragment OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this flag is true, the rule only refers to second and + further fragments of fragmented packets. Since there is + no way to tell the source or destination ports of such a + packet (or ICMP type), such a packet will not match any + rules which specify them." + DEFVAL { false } + ::= { lnfRuleEntry 14 } + +lnfRuleFragmentInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleFragmentInv test, + if true, has to be inverted. An inverted rule will only + match head fragments, or unfragmented packets." + DEFVAL { false } + ::= { lnfRuleEntry 15 } + +lnfRulePackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that matched this rule since + the rule was installed or reset." + ::= { lnfRuleEntry 16 } + +lnfRuleOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that matched this rule since the + rule was installed or reset." + ::= { lnfRuleEntry 17 } + +lnfRuleTarget OBJECT-TYPE + SYNTAX LnfTarget + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The action that shall be applied to a packet if the + rule matches. If the value is chain(7), then jump to + the user chain specified by lnfRuleTargetChain." + DEFVAL { none } + ::= { lnfRuleEntry 18 } + +lnfRuleTargetChain OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the target chain if the value of + lnfRuleTarget is chain(7)." + ::= { lnfRuleEntry 19 } + +lnfRuleTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether lnfRuleMatch traps should be + generated for packets matching this rule. Note + that it's up to the implementation to delay and + accumulate mutliple traps in order to reduce the + number of emitted traps." + DEFVAL { false } + ::= { lnfRuleEntry 20 } + +lnfRuleLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter rule. + If it has been unchanged since the last re-initialization + of the local network management subsystem, then this + object contains a zero value." + ::= { lnfRuleEntry 21 } + +lnfRuleStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether it + is backed up by stable storage or builtin." + ::= { lnfRuleEntry 22 } + +lnfRuleStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + lnfRuleTable." + ::= { lnfRuleEntry 23 } + +-- +-- Notifications: +-- + +lnfNotifications OBJECT IDENTIFIER ::= { lnfTraps 0 } + +lnfRuleMatch NOTIFICATION-TYPE + OBJECTS { lnfRulePackets, lnfRuleOctets } + STATUS current + DESCRIPTION + "A lnfRuleMatch trap signifies that the rule to which + the lnfRulePackets and lnfRuleOctets objects belong + was matched by at least one packets since the last + trap for the same rule was emitted. + + The agent may delay and accumulate mutliple traps in order + to reduce the number of emitted traps, but the time for + accumulation should be no more than 60 seconds. + + Note that detailed information on the packet(s) that + triggered a trap is not available from the trap's + objects. This would cause problems with the accumulation + of matches and/or increased trap traffic." + ::= { lnfNotifications 1 } + +-- +-- Conformance statements: +-- + +lnfCompliances OBJECT IDENTIFIER ::= { lnfConformance 1 } + +lnfGroups OBJECT IDENTIFIER ::= { lnfConformance 2 } + +lnfCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which + implements the Linux Netfilter MIB." + MODULE -- this module + MANDATORY-GROUPS { lnfGeneralGroup, lnfNotificationGroup } + +-- OBJECT lnfTableAddressType +-- SYNTAX InetAddressType { ipv4(1), ipv6(2) } +-- DESCRIPTION +-- "Other address types than IPv4 and IPv6 are not required." + + ::= { lnfCompliances 1 } + +lnfGeneralGroup OBJECT-GROUP + OBJECTS { + lnfLastChange, + + lnfTableLastChange, + + lnfChainPackets, lnfChainOctets, lnfChainTarget, + lnfChainLastChange, lnfChainStorage, lnfChainStatus, + + lnfRuleProtocol, lnfRuleProtocolInv, + lnfRuleSourceAddress, lnfRuleSourceAddressPrefixLength, + lnfRuleSourceAddressInv, lnfRuleDestinationAddress, + lnfRuleDestinationAddressPrefixLength, + lnfRuleDestinationAddressInv, lnfRuleInInterface, + lnfRuleInInterfaceInv, lnfRuleOutInterface, + lnfRuleOutInterfaceInv, lnfRuleFragment, + lnfRuleFragmentInv, lnfRulePackets, lnfRuleOctets, + lnfRuleTarget, lnfRuleTargetChain, lnfRuleTrapEnable, + lnfRuleLastChange, lnfRuleStorage, lnfRuleStatus + } + STATUS current + DESCRIPTION + "A collection of all Linux Netfilter objects of + the core table." + ::= { lnfGroups 1 } + +lnfNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + lnfRuleMatch + } + STATUS current + DESCRIPTION + "A collection of all Linux Netfilter notifications." + ::= { lnfGroups 2 } + +END diff --git a/mibs/tubs/TUBS-IBR-NFS-MIB b/mibs/tubs/TUBS-IBR-NFS-MIB new file mode 100644 index 0000000..83d07a0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-NFS-MIB @@ -0,0 +1,372 @@ +TUBS-IBR-NFS-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-NFS-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32 + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +nfsMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for NFS server and clients." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 2 } + +nfsServer OBJECT IDENTIFIER ::= { nfsMIB 1 } +nfsClient OBJECT IDENTIFIER ::= { nfsMIB 2 } + +-- server nfs statistics + +nfsServerCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs calls received by the server. + Every read access to this variable will cause the + agent to reload the statistics contained in this + group." + ::= { nfsServer 1 } + +nfsServerBad OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incorrect nfs calls received by the + server." + ::= { nfsServer 2 } + +nfsServerNull OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs null operations." + ::= { nfsServer 3 } + +nfsServerGetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs getattr operations." + ::= { nfsServer 4 } + +nfsServerSetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs setattr operations." + ::= { nfsServer 5 } + +nfsServerRoot OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs root operations." + ::= { nfsServer 6 } + +nfsServerLookup OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs lookup operations." + ::= { nfsServer 7 } + +nfsServerReadlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readlink operations." + ::= { nfsServer 8 } + +nfsServerRead OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs read operations." + ::= { nfsServer 9 } + +nfsServerWrcache OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs wrcache operations." + ::= { nfsServer 10 } + +nfsServerWrite OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs write operations." + ::= { nfsServer 11 } + +nfsServerCreate OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs create operations." + ::= { nfsServer 12 } + +nfsServerRemove OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs remove operations." + ::= { nfsServer 13 } + +nfsServerRename OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rename operations." + ::= { nfsServer 14 } + +nfsServerLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs link operations." + ::= { nfsServer 15 } + +nfsServerSymlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs symlink operations." + ::= { nfsServer 16 } + +nfsServerMkdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs mkdir operations." + ::= { nfsServer 17 } + +nfsServerRmdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rmdir operations." + ::= { nfsServer 18 } + +nfsServerReaddir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readdir operations." + ::= { nfsServer 19 } + +nfsServerFsstat OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs fsstat operations." + ::= { nfsServer 20 } + +-- client nfs statistics. + +nfsClientCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs calls send by the client + Every read access to this variable will cause the + agent to reload the statistics contained in this + group." + ::= { nfsClient 1 } + +nfsClientBad OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incorrect nfs calls send by the client." + ::= { nfsClient 2 } + +nfsClientNull OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs null operations." + ::= { nfsClient 3 } + +nfsClientGetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs getattr operations." + ::= { nfsClient 4 } + +nfsClientSetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs setattr operations." + ::= { nfsClient 5 } + +nfsClientRoot OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs root operations." + ::= { nfsClient 6 } + +nfsClientLookup OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs lookup operations." + ::= { nfsClient 7 } + +nfsClientReadlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readlink operations." + ::= { nfsClient 8 } + +nfsClientRead OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs read operations." + ::= { nfsClient 9 } + +nfsClientWrcache OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs wrcache operations." + ::= { nfsClient 10 } + +nfsClientWrite OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs write operations." + ::= { nfsClient 11 } + +nfsClientCreate OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs create operations." + ::= { nfsClient 12 } + +nfsClientRemove OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs remove operations." + ::= { nfsClient 13 } + +nfsClientRename OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rename operations." + ::= { nfsClient 14 } + +nfsClientLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs link operations." + ::= { nfsClient 15 } + +nfsClientSymlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs symlink operations." + ::= { nfsClient 16 } + +nfsClientMkdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs mkdir operations." + ::= { nfsClient 17 } + +nfsClientRmdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rmdir operations." + ::= { nfsClient 18 } + +nfsClientReaddir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readdir operations." + ::= { nfsClient 19 } + +nfsClientFsstat OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs fsstat operations." + ::= { nfsClient 20 } + +END diff --git a/mibs/tubs/TUBS-IBR-PING-MIB b/mibs/tubs/TUBS-IBR-PING-MIB new file mode 100644 index 0000000..439587c --- /dev/null +++ b/mibs/tubs/TUBS-IBR-PING-MIB @@ -0,0 +1,127 @@ +TUBS-IBR-PING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32 + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +pingMIB MODULE-IDENTITY + LAST-UPDATED "200007070000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3266 + Fax: +49 531 391 5936 + E-mail: strauss@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for JAX code generator tests." + REVISION "200007070000Z" + DESCRIPTION + "Added scalar group and notification." + REVISION "200003300000Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 8 } + + +pingNotifications OBJECT IDENTIFIER ::= { pingMIB 0 } + +pingObjects OBJECT IDENTIFIER ::= { pingMIB 1 } + +-- Object definitions. + +pingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of ping destinations and their round trip times." + ::= { pingObjects 1 } + +pingEntry OBJECT-TYPE + SYNTAX PingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing a ping destinations and its + round trip time." + INDEX { pingIndex } + ::= { pingTable 1 } + +PingEntry ::= + SEQUENCE { + pingIndex Unsigned32, + pingAddress IpAddress, + pingRtt Unsigned32 + } + +pingIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value identifying the ping entry." + ::= { pingEntry 1 } + +pingAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination IP address for the ping entry. + Writing to an instance of this object with an + unused pingIndex creates a new pingTable entry." + ::= { pingEntry 2 } + +pingRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured round trip time for the ping entry. + The value zero denotes a ping target that did + not respond (yet)." + ::= { pingEntry 3 } + + +pingStatistics OBJECT IDENTIFIER ::= { pingObjects 2 } + +pingTimeout OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum time to wait for a response." + ::= { pingStatistics 1 } + +pingAvgRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average round trip time for all ping entries." + ::= { pingStatistics 2 } + +-- Notification definitions. + +pingNoResponse NOTIFICATION-TYPE + OBJECTS { pingRtt, pingTimeout } + STATUS current + DESCRIPTION + "This notification is generated whenever a ping + target did not reply within the current timeout. + The pingAddress objects contains the target address + and the pingTimeout objects contains the timeout + value in milli seconds." + ::= { pingNotifications 1 } + +END diff --git a/mibs/tubs/TUBS-IBR-PROC-MIB b/mibs/tubs/TUBS-IBR-PROC-MIB new file mode 100644 index 0000000..2230cf0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-PROC-MIB @@ -0,0 +1,87 @@ +TUBS-IBR-PROC-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-PROC-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString, DateAndTime + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +procMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for listing processes." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 3 } + +procReload OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Any set operation will reload the process table. + It contains a time stamp when the proc table + was reloaded the last time." + ::= { procMIB 1 } + +procTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The process table." + ::= { procMIB 2 } + +procEntry OBJECT-TYPE + SYNTAX ProcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a process in the processes table." + INDEX { procID } + ::= { procTable 1 } + +ProcEntry ::= SEQUENCE { + procID Integer32, + procCmd DisplayString +} + +procID OBJECT-TYPE + SYNTAX Integer32 (1..'7fffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unique process ID." + ::= { procEntry 1 } + +procCmd OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The command name used to start this process." + ::= { procEntry 2 } + +END diff --git a/mibs/tubs/TUBS-IBR-TEST-MIB b/mibs/tubs/TUBS-IBR-TEST-MIB new file mode 100644 index 0000000..093390a --- /dev/null +++ b/mibs/tubs/TUBS-IBR-TEST-MIB @@ -0,0 +1,74 @@ +TUBS-IBR-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +testMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "A MIB module which is only used for testing purposes." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9810091711Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 7 } + +OctalValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "o" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +HexValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "x" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +BinaryValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "b" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +Dot3Value ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-3" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +NumValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d-1x-1o-1b" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX OCTET STRING + +END diff --git a/mibs/tubs/TUBS-IBR-TNM-MIB b/mibs/tubs/TUBS-IBR-TNM-MIB new file mode 100644 index 0000000..67d2209 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-TNM-MIB @@ -0,0 +1,330 @@ +TUBS-IBR-TNM-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-TNM-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, RowStatus, DateAndTime, + TruthValue, TimeStamp, TAddress + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +tnmMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB modules for tnm based agents." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9607152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 1 } + +-- the tnm group + +tnmStatus OBJECT IDENTIFIER ::= { tnmMIB 1 } + +tnmVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the tnm agent." + ::= { tnmStatus 1 } + +tnmTclVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the running Tcl interpreter." + ::= { tnmStatus 2 } + +tnmTclCmdCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nummber of Tcl statements evaluated so far." + ::= { tnmStatus 3 } + +tnmDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current date." + ::= { tnmStatus 4 } + +tnmTrapDst OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The host name of the trap sink host." + ::= { tnmStatus 5 } + +tnmTrapMsg OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of the last trap create by this entity." + ::= { tnmStatus 6 } + +-- the download mechanism + +tnmDownload OBJECT IDENTIFIER ::= { tnmMIB 2 } + +URL ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A uniform ressource locator as defined in RFC 1738." + SYNTAX OCTET STRING (SIZE (0..255)) + +tnmHttpProxy OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable specifies the proxy server. It must be of the + form [:] where is either a domain name + or an IP address and is the port number used to access + the proxy server. The default port number is 80." + ::= { tnmDownload 1 } + +tnmHttpSource OBJECT-TYPE + SYNTAX URL + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this variable will make tnm to download + and source the document with the given URL. The agent + will try to retrieve the document and sets the variable + to the URL if this operations was successfull. + Otherwise, the value will become an empty string." + ::= { tnmDownload 2 } + +tnmHttpError OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable contains an error string is an http + operation fails. An empty string signals that the + last operation completed successfully." + ::= { tnmDownload 3 } + +-- the peer table + +tnmPeers OBJECT IDENTIFIER ::= { tnmMIB 3 } + +tnmPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TnmPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) table storing known tnm peers." + ::= { tnmPeers 1 } + +tnmPeerEntry OBJECT-TYPE + SYNTAX TnmPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the peer table." + INDEX { tnmPeerTAddress } + ::= { tnmPeerTable 1 } + +TnmPeerEntry ::= SEQUENCE { + tnmPeerTAddress TAddress, + tnmPeerAuth OCTET STRING, + tnmPeerState INTEGER, + tnmPeerLastChecked TimeStamp, + tnmPeerStatus RowStatus +} + +tnmPeerTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address and port number of the peer agent." + ::= { tnmPeerEntry 1 } + +tnmPeerAuth OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication information for this peer. This will + usually be a community string until we get the final SNMPv2 + decisions about the security model." + ::= { tnmPeerEntry 2 } + +tnmPeerState OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current status of the peer as returned by the last + status probe message." + ::= { tnmPeerEntry 3 } + +tnmPeerLastChecked OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of sysUpTime when the status of the peer was + retrieved and written to tnmPeerState." + ::= { tnmPeerEntry 4 } + +tnmPeerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status column used for creating, modifying, + and deleting instances of the columnar objects in + the tnm peer table." + DEFVAL { active } + ::= { tnmPeerEntry 5 } + +-- election section + +tnmElection OBJECT IDENTIFIER ::= { tnmMIB 4 } + +tnmElectionIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (hopefully) unique index of this peer used by the + bully election algorithm." + ::= { tnmElection 1 } + +tnmElectionPanic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reading this variable will start the panic algorithm + on this peer. (We should use an inform request here.)" + ::= { tnmElection 2 } + +tnmElectionMaster OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable will be set by a new master appearing + on the scene. (We should use an inform request here.)" + ::= { tnmElection 3 } + +-- the tnmEvalTable example adopted from RFC 1442 + +tnmEval OBJECT IDENTIFIER ::= { tnmMIB 5 } + +tnmEvalSlot OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index number of the first unassigned entry in + the evaluation table. + + A management station should create new entries in + the evaluation table using this algorithm: first, + issue a management protocol retrieval operation to + determine the value of evalSlot; and, second, + issue a management protocol set operation to + create an instance of the evalStatus object + setting its value to underCreation(1). If this + latter operation succeeds, then the management + station may continue modifying the instances + corresponding to the newly created conceptual row, + without fear of collision with other management + stations." + ::= { tnmEval 1 } + +tnmEvalTable OBJECT-TYPE + SYNTAX SEQUENCE OF TnmEvalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) evaluation table." + ::= { tnmEval 2 } + +tnmEvalEntry OBJECT-TYPE + SYNTAX TnmEvalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the evaluation table." + INDEX { tnmEvalIndex } + ::= { tnmEvalTable 1 } + +TnmEvalEntry ::= SEQUENCE { + tnmEvalIndex Integer32, + tnmEvalString DisplayString, + tnmEvalValue DisplayString, + tnmEvalStatus RowStatus +} + +tnmEvalIndex OBJECT-TYPE + SYNTAX Integer32 (1..'7fffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The auxiliary variable used for identifying + instances of the columnar objects in the + evaluation table." + ::= { tnmEvalEntry 1 } + +tnmEvalString OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string to evaluate." + ::= { tnmEvalEntry 2 } + +tnmEvalValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value resturned by executing evalString." + ::= { tnmEvalEntry 3 } + +tnmEvalStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status column used for creating, modifying, + and deleting instances of the columnar objects in + the evaluation table." + DEFVAL { active } + ::= { tnmEvalEntry 4 } + +END diff --git a/mibs/tubs/TUBS-IBR-XEN-MIB b/mibs/tubs/TUBS-IBR-XEN-MIB new file mode 100644 index 0000000..b8c5236 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-XEN-MIB @@ -0,0 +1,387 @@ +TUBS-IBR-XEN-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id$ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Counter32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + ibr + FROM TUBS-SMI; + +xenMIB MODULE-IDENTITY + LAST-UPDATED "200602200000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss, Oliver Wellnitz + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: {strauss,wellnitz}@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for Xen Virtual Hosting." + REVISION "200602200000Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 14 } + +-- +-- The various groups defined within this MIB module: +-- + +xenObjects OBJECT IDENTIFIER ::= { xenMIB 1 } + +xenTraps OBJECT IDENTIFIER ::= { xenMIB 2 } + +xenConformance OBJECT IDENTIFIER ::= { xenMIB 3 } + +-- +-- Textual Conventions: +-- + +XenDomainState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the state of a Xen domain. + + unknown(1): No known/defined state. + + running(2): The domain is running on any CPU. + + blocked(3): The domain is blocked, e.g., waiting for I/O. + + paused(4): The domain has been paused. + + crashed(5): The domain exepectedly crashed. + + dying(6): The domain is in the process of going + down or dying to any other reason. + + shutdown(7): The domain has been shutdown. + " + SYNTAX INTEGER { + unknown(1), + running(2), + blocked(3), + paused(4), + crashed(5), + dying(6), + shutdown(7) + } + +-- +-- Object definitions: +-- + +-- +-- Host scalars: +-- + +xenHost OBJECT IDENTIFIER ::= { xenObjects 1 } + +xenHostXenVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version string of the Xen version running + on the physical host." + ::= { xenHost 1 } + +xenHostTotalMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of available memory in Kbytes + on the physical host." + ::= { xenHost 2 } + +xenHostCPUs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of CPUs on the physical host." + ::= { xenHost 3 } + +xenHostCPUMHz OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CPU frequency in MHz of the CPUs on the + physical host." + ::= { xenHost 4 } + +-- +-- Domain table: +-- + +xenDomainTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all Xen domains on the physical host." + ::= { xenObjects 2 } + +xenDomainEntry OBJECT-TYPE + SYNTAX XenDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular Xen domain." + INDEX { xenDomainName } + ::= { xenDomainTable 1 } + +XenDomainEntry ::= + SEQUENCE { + xenDomainName SnmpAdminString, + xenDomainState XenDomainState, + xenDomainMemKBytes Unsigned32, + xenDomainMaxMemKBytes Unsigned32 + } + +xenDomainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the Xen domain." + ::= { xenDomainEntry 1 } + +xenDomainState OBJECT-TYPE + SYNTAX XenDomainState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Xen domain." + ::= { xenDomainEntry 2 } + +xenDomainMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of memory in Kbytes currently occupied + by the Xen domain." + ::= { xenDomainEntry 3 } + +xenDomainMaxMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of memory in Kbytes assigned + to the Xen domain. A value of zero denotes that + there is no limit." + ::= { xenDomainEntry 4 } + +-- +-- VCPU table: +-- + +xenVCPUTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenVCPUEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all VCPUs per Xen domain." + ::= { xenObjects 3 } + +xenVCPUEntry OBJECT-TYPE + SYNTAX XenVCPUEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a VCPU of a Xen domain." + INDEX { xenDomainName, xenVCPUIndex } + ::= { xenVCPUTable 1 } + +XenVCPUEntry ::= + SEQUENCE { + xenVCPUIndex Unsigned32, + xenVCPUMilliseconds Counter32 + } + +xenVCPUIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the VCPU." + ::= { xenVCPUEntry 1 } + +xenVCPUMilliseconds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number milliseconds consumed by the VCPU since + the Xen domain has been set up." + ::= { xenVCPUEntry 2 } + +-- +-- Network table: +-- + +xenNetworkTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all networks per Xen domain." + ::= { xenObjects 4 } + +xenNetworkEntry OBJECT-TYPE + SYNTAX XenNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a network of a Xen domain." + INDEX { xenDomainName, xenNetworkIndex } + ::= { xenNetworkTable 1 } + +XenNetworkEntry ::= + SEQUENCE { + xenNetworkIndex Unsigned32, + xenNetworkInKBytes Counter32, + xenNetworkInPkts Counter32, + xenNetworkInErrors Counter32, + xenNetworkInDiscards Counter32, + xenNetworkOutKBytes Counter32, + xenNetworkOutPkts Counter32, + xenNetworkOutErrors Counter32, + xenNetworkOutDiscards Counter32 + } + +xenNetworkIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the network." + ::= { xenNetworkEntry 1 } + +xenNetworkInKBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Kbytes received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 2 } + +xenNetworkInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 3 } + +xenNetworkInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of erroneous packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 4 } + +xenNetworkInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of dropped packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 5 } + +xenNetworkOutKBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Kbytes sent on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 6 } + +xenNetworkOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets sent on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 7 } + +xenNetworkOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that could not be sent + on the network interface because of any errors + since the Xen domain has been set up." + ::= { xenNetworkEntry 8 } + +xenNetworkOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that have not been sent + on the network interface even though no errors + had been detected since the Xen domain has been + set up." + ::= { xenNetworkEntry 9 } + +-- +-- Conformance statements: +-- + +xenCompliances OBJECT IDENTIFIER ::= { xenConformance 1 } + +xenGroups OBJECT IDENTIFIER ::= { xenConformance 2 } + +xenCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which + implements the Xen MIB." + MODULE -- this module + MANDATORY-GROUPS { xenGeneralGroup } + + ::= { xenCompliances 1 } + +xenGeneralGroup OBJECT-GROUP + OBJECTS { + xenHostXenVersion, xenHostTotalMemKBytes, xenHostCPUs, + xenHostCPUMHz, + + xenDomainState, xenDomainMemKBytes, xenDomainMaxMemKBytes, + + xenVCPUMilliseconds, + + xenNetworkInKBytes, xenNetworkInPkts, xenNetworkInErrors, + xenNetworkInDiscards, xenNetworkOutKBytes, xenNetworkOutPkts, + xenNetworkOutErrors, xenNetworkOutDiscards + } + STATUS current + DESCRIPTION + "A collection of all Xen MIB objects." + ::= { xenGroups 1 } + +END diff --git a/mibs/tubs/TUBS-SMI b/mibs/tubs/TUBS-SMI new file mode 100644 index 0000000..2f10653 --- /dev/null +++ b/mibs/tubs/TUBS-SMI @@ -0,0 +1,101 @@ +TUBS-SMI DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-SMI 3211 2006-02-20 09:30:29Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, enterprises + FROM SNMPv2-SMI; + +tubs MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Muehlenpfordtstrasse 23, 1. OG + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "The toplevel OID registration for the Technical University + of Braunschweig, Germany." + REVISION "200207011500Z" + DESCRIPTION + "Added ibrpibtomib for automatic PIB to MIB conversion via + 'smidump -f smiv2'." + REVISION "200205161500Z" + DESCRIPTION + "Added ibrpib for all PIBs that are temporarily assigned + to the ibr tree until they get official assignments + from IANA. Fixed CONTACT-INFO to contain the current address." + REVISION "200002090000Z" + DESCRIPTION + "Changed the module name from TUBS-REGISTRATION to TUBS-SMI." + REVISION "9702141023Z" + DESCRIPTION + "The initial revision." + ::= { enterprises 1575 } + +ibr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The subtree delegated to the Department of Operating Systems + and Computer Networks (Institut fuer Betriebssysteme und + Rechnerverbund)." + ::= { tubs 1 } + +ibrpib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for PIBs that are temporarily assigned to the ibr tree until + they get official assignments from IANA." + ::= { ibr 10 } + +ibrpibtomib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for PIBs that are automatically converted to MIBs via + 'smidump -f smiv2'." + ::= { ibr 11 } + +ibrmibtopib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for MIBs that are automatically converted to PIBs via + 'smidump -f sppi'." + ::= { ibr 12 } + +IBRUnsigned64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A dummy type for automatic PIB to MIB conversion." + SYNTAX OCTET STRING (SIZE(8)) + +IBRInteger64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A dummy type for automatic PIB to MIB conversion." + SYNTAX OCTET STRING (SIZE(8)) + + +-- Allocations below TUBS-SMI::ibr: +-- +-- 1 TUBS-IBR-TNM-MIB::tnmMIB +-- 2 TUBS-IBR-NFS-MIB::nfsMIB +-- 3 TUBS-IBR-PROC-MIB::procMIB +-- 4 +-- 5 TUBS-IBR-LINUX-MIB::linuxMIB +-- 6 TUBS-IBR-AGENT-CAPABILITIES::ibrAgentCapabilities +-- 7 TUBS-IBR-TEST-MIB::testMIB +-- 8 +-- 9 LIBSMI-TEST-MIB::testMib +-- 10 TUBS-SMI::ibrpib +-- 11 TUBS-SMI::ibrpibtomib +-- 12 TUBS-SMI::ibrmibtopib +-- 13 TUBS-IBR-LINUX-NETFILTER-MIB::lnfMIB +-- 14 TUBS-IBR-XEN-MIB::xenMIB + +END diff --git a/missing b/missing new file mode 100755 index 0000000..1c8ff70 --- /dev/null +++ b/missing @@ -0,0 +1,367 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2006-05-10.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case $1 in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $1 in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/pibs/Makefile.am b/pibs/Makefile.am new file mode 100644 index 0000000..0f9dc7b --- /dev/null +++ b/pibs/Makefile.am @@ -0,0 +1,23 @@ +# +# Makefile.am -- +# +# Template to generate the pibs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1508 2002-12-22 16:14:01Z strauss $ +# + +PIBDIRS = ietf tubs site + +PIBS = $(shell ls -1d [a-z]*/* | egrep -v 'CVS|Makefile') +pib_DATA = $(PIBS) +SUBDIRS = $(PIBDIRS) + +install-exec-local: + for dir in $(PIBDIRS) ; do \ + $(mkinstalldirs) $(DESTDIR)$(pibdir)/$$dir ; \ + done diff --git a/pibs/Makefile.in b/pibs/Makefile.in new file mode 100644 index 0000000..9e3a1fc --- /dev/null +++ b/pibs/Makefile.in @@ -0,0 +1,552 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1508 2002-12-22 16:14:01Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pibdir)" +pibDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pib_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +PIBDIRS = ietf tubs site +PIBS = $(shell ls -1d [a-z]*/* | egrep -v 'CVS|Makefile') +pib_DATA = $(PIBS) +SUBDIRS = $(PIBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pibDATA: $(pib_DATA) + @$(NORMAL_INSTALL) + test -z "$(pibdir)" || $(MKDIR_P) "$(DESTDIR)$(pibdir)" + @list='$(pib_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pibdir)/$$f'"; \ + $(pibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pibdir)/$$f"; \ + done + +uninstall-pibDATA: + @$(NORMAL_UNINSTALL) + @list='$(pib_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pibdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pibdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-pibDATA + +install-dvi: install-dvi-recursive + +install-exec-am: install-exec-local + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pibDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-exec-local install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pibDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-pibDATA + + +install-exec-local: + for dir in $(PIBDIRS) ; do \ + $(mkinstalldirs) $(DESTDIR)$(pibdir)/$$dir ; \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/ietf/COPS-PR-SPPI b/pibs/ietf/COPS-PR-SPPI new file mode 100644 index 0000000..5b3a519 --- /dev/null +++ b/pibs/ietf/COPS-PR-SPPI @@ -0,0 +1,509 @@ +COPS-PR-SPPI DEFINITIONS ::= BEGIN + +IMPORTS ObjectName, SimpleSyntax, ExtUTCTime, mgmt + FROM SNMPv2-SMI; + +-- the root for PIB definitions + + pib OBJECT IDENTIFIER ::= { mgmt 2 } + +-- definitions for PIB modules + +MODULE-IDENTITY MACRO ::= +BEGIN + TYPE NOTATION ::= + SubjectPart -- new + "LAST-UPDATED" value(Update ExtUTCTime) + "ORGANIZATION" Text + "CONTACT-INFO" Text + "DESCRIPTION" Text + RevisionPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + SubjectPart ::= -- new + "SUBJECT-CATEGORIES" "{" Categories "}" + -- see IANA Considerations section + Categories ::= -- new + CategoryIDs + | "all" + CategoryIDs ::= -- new + CategoryID + | CategoryIDs "," CategoryID + CategoryID ::= -- new + identifier "(" number ")" -- number is positive + + RevisionPart ::= + Revisions + | empty + Revisions ::= + Revision + | Revisions Revision + Revision ::= + "REVISION" value(Update ExtUTCTime) + "DESCRIPTION" Text + + + + + -- a character string as defined in [SMI] + 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 [SMI] + Text ::= value(IA5String) +END + + +-- syntax of attributes + +-- the "base types" defined here are: +-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER +-- 7 application-defined types: Integer32, IpAddress, Unsigned32, +-- TimeTicks, Opaque, Integer64 and Unsigned64 + +ObjectSyntax ::= + CHOICE { + simple + SimpleSyntax, + + -- note that SEQUENCEs for table and row definitions + -- are not mentioned here... + + application-wide + ApplicationSyntax + } + + + +-- application-wide types + +ApplicationSyntax ::= + CHOICE { + ipAddress-value + IpAddress, + + timeticks-value + TimeTicks, + + arbitrary-value + Opaque, + + unsigned-integer-value + Unsigned32, + + large-integer-value -- new + Integer64, + + large-unsigned-integer-value -- new + Unsigned64 + } + + +-- the following 5 types are copied from the SMI + +-- indistinguishable from INTEGER, but never needs more than +-- 32-bits for a two's complement representation +Integer32 ::= + INTEGER (-2147483648..2147483647) + +-- (this is a tagged type for historical reasons) +IpAddress ::= + [APPLICATION 0] + IMPLICIT OCTET STRING (SIZE (4)) +-- ******* THIS TYPE DEFINITION IS DEPRECATED ******* +-- The IpAddress type represents a 32-bit internet +-- IPv4 address. It is represented as an OctetString +-- of length 4, in network byte-order. +-- Note that the IpAddress type is present for +-- historical reasons. IPv4 and IPv6 addresses should +-- be represented using the INET-ADDRESS-MIB +-- defined in [INETADDR]. + +-- an unsigned 32-bit quantity +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 + + +-- the following 2 types are not present in the SMI + +Integer64 ::= + [APPLICATION 10] + IMPLICIT INTEGER (-9223372036854775808..9223372036854775807) + +Unsigned64 ::= + [APPLICATION 11] + IMPLICIT INTEGER (0..18446744073709551615) + +-- definition for Provisioning Classes and their attributes +-- (differences from the SMI are noted in the ASN.1 comments) + +OBJECT-TYPE MACRO ::= +BEGIN + TYPE NOTATION ::= + "SYNTAX" Syntax + UnitsPart + "PIB-ACCESS" Access -- modified + PibReferencesPart -- new + PibTagPart -- new + "STATUS" Status + "DESCRIPTION" Text + ErrorsPart -- new + ReferPart + IndexPart -- modified + MibIndexPart -- modified + UniquePart -- new + 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 ::= -- modified + "install" + | "notify" + | "install-notify" + | "report-only" + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ErrorsPart ::= -- new + "INSTALL-ERRORS" "{" Errors "}" + | empty + + Errors ::= -- new + Error + | Errors "," Error + Error ::= -- new + identifier "(" number ")" -- number is positive + + ReferPart ::= + "REFERENCE" Text + | empty + + IndexPart ::= + "PIB-INDEX" "{" Index "}" -- new + | "AUGMENTS" "{" Entry "}" + | "EXTENDS" "{" Entry "}" -- new + | empty + Index ::= + -- the correspondent OBJECT-TYPE invocation + value(ObjectName) + Entry ::= + -- use the INDEX value of the + -- correspondent OBJECT-TYPE invocation + + + + value(ObjectName) + MibIndexPart ::= + "INDEX" "{" IndexTypePart "}" + | empty + IndexTypePart ::= + IndexTypes + | IndexTypes "," ImpliedIndex + | ImpliedIndex + IndexTypes ::= + Index + | IndexTypes "," Index + ImpliedIndex ::= + "IMPLIED" Index + + + PibReferencesPart ::= + -- for use with ReferenceId TC + "PIB-REFERENCES" "{" Entry "}" + | empty + + PibTagPart ::= + -- for use with TagReferenceId TC + "PIB-TAG" "{" Attr "}" + | empty + + Attr ::= -- specifies an attribute + value(ObjectName) + + UniquePart ::= -- new + "UNIQUENESS" "{" UniqueTypes "}" + | "UNIQUENESS" "{" "}" + | empty + UniqueTypes ::= + UniqueType + | UniqueTypes "," UniqueType + UniqueType ::= + -- 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 [SMI] + Text ::= value(IA5String) +END + + +-- 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 [SMI] + 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) + InstallSyntaxPart -- modified + AccessPart + "DESCRIPTION" Text + + -- must be a refinement for object's SYNTAX clause + InstallSyntaxPart ::= "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 ::= + "PIB-MIN-ACCESS" Access -- modified + | empty + Access ::= -- modified + "not-accessible" + | "install" + | "notify" + | "install-notify" + + + + | "report-only" + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + +-- 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 [SMI] + 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 + + + +END diff --git a/pibs/ietf/COPS-PR-SPPI-TC b/pibs/ietf/COPS-PR-SPPI-TC new file mode 100644 index 0000000..6147fe1 --- /dev/null +++ b/pibs/ietf/COPS-PR-SPPI-TC @@ -0,0 +1,95 @@ +COPS-PR-SPPI-TC PIB-DEFINITIONS ::= BEGIN + +IMPORTS Unsigned32, MODULE-IDENTITY, TEXTUAL-CONVENTION, pib + FROM COPS-PR-SPPI; + +copsPrSppiTc MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200108160000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + Ravi Sahita + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com " + DESCRIPTION + "The PIB module containing a set of Textual Conventions + which have general applicability to all PIB modules." + REVISION "200108160000Z" + DESCRIPTION + "Initial version, published in RFC 3159." + ::= { pib 1 } + +InstanceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for use by an attribute which is used + as the instance-identifying index of a PRC, i.e., an attribute + named in a PIB-INDEX clause. The value of an attribute with + this syntax is always greater than zero. PRIs of the same PRC + need not have contiguous values for their instance-identifying + attribute." + SYNTAX Unsigned32 (1..4294967295) + +ReferenceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A textual convention for use by an attribute which is used as + a pointer in order to reference an instance of a particular + + + PRC. An attribute with this syntax must not be used in a + PIB-INDEX clause , and its description must specify the + particular PRC to which the referenced PRI will belong. + For an attribute of this type, the referenced PRI must exist. + Furthermore, it is an error to try to delete a PRI that is + referenced by another instance without first deleting/modifying + the referencing instance. The definition of an attribute with + this syntax can permit the attribute to have a value of zero to + indicate that it is not currently pointing to a PRI." + SYNTAX Unsigned32 + +Prid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a pointer to a PRI, i.e,. to an instance of a + PRC. The value is the OID name of the PRC's row definition, + appended with one sub-identifier containing the value of the + InstanceId value for the referenced instance. The definition + of an attribute with this syntax can permit the attribute to + have a value of 0.0 to indicate that it is not currently + pointing to a PRI." + SYNTAX OBJECT IDENTIFIER + +TagId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a tag value, such that all instances of a + particular PRC having the same tag value form a tag list. + A tag list is identified by the tag value shared by all + instances in that tag list." + SYNTAX Unsigned32 (1..4294967295) + +TagReferenceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a reference to a tag list of instances of a + particular PRC. The particular PRC must have an attribute + with the syntax of TagId. The tag list consists of + all instances which have the same value of the TagId + attribute. Reference to the tag list is via the attribute + with the syntax of TagReferenceId containing the tag + value which identifies the tag list. + The definition of an attribute with this syntax can permit + the attribute to have a value of 0 to indicate that it is + not currently referencing a tag list." + SYNTAX Unsigned32 +END diff --git a/pibs/ietf/DIFFSERV-PIB b/pibs/ietf/DIFFSERV-PIB new file mode 100644 index 0000000..e9e0b2c --- /dev/null +++ b/pibs/ietf/DIFFSERV-PIB @@ -0,0 +1,3128 @@ +DIFFSERV-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + AutonomousType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + RoleCombination, PrcIdentifierOid, PrcIdentifierOidOrZero, + AttrIdentifier + FROM FRAMEWORK-TC-PIB + Dscp + FROM DIFFSERV-DSCP-TC + IfDirection + FROM DIFFSERV-MIB + BurstSize + FROM INTEGRATED-SERVICES-MIB; + + +dsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { diffServ (2) } -- DiffServ QoS COPS Client Type + LAST-UPDATED "200302180000Z" -- 18 Feb 2003 + ORGANIZATION "IETF DIFFSERV WG" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + Kwok Ho Chan + Nortel Networks, Inc. + + + + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Differentiated Services Working Group: + diffserv@ietf.org" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe quality of service (QoS) policies for + DiffServ. It includes general classes that may be extended + by other PIB specifications as well as a set of PIB + classes related to IP processing. + + Copyright (C) The Internet Society (2003). This version of + this PIB module is part of RFC 3317; see the RFC itself for + full legal notices." + + REVISION "200302180000Z" -- 18 Feb 2003 + DESCRIPTION + "Initial version, published as RFC 3317." + ::= { pib 4 } + +dsCapabilityClasses OBJECT IDENTIFIER ::= { dsPolicyPib 1 } +dsPolicyClasses OBJECT IDENTIFIER ::= { dsPolicyPib 2 } +dsPolicyPibConformance OBJECT IDENTIFIER ::= { dsPolicyPib 3 } + +-- +-- Interface Type Capabilities Group +-- + +-- +-- Interface Type Capability Tables +-- +-- The Interface type capability tables define capabilities that may +-- be associated with interfaces of a specific type. +-- This PIB defines capability tables for DiffServ Functionalities. +-- + +-- +-- The Base Capability Table +-- + +dsBaseIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsBaseIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + + + + "The Base Interface Type Capability class. This class + represents a generic capability supported by a device in the + ingress, egress, or both directions." + ::= { dsCapabilityClasses 1 } + +dsBaseIfCapsEntry OBJECT-TYPE + SYNTAX DsBaseIfCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the dsBaseIfCaps class." + + PIB-INDEX { dsBaseIfCapsPrid } +::= { dsBaseIfCapsTable 1 } + +DsBaseIfCapsEntry ::= SEQUENCE { + dsBaseIfCapsPrid InstanceId, + dsBaseIfCapsDirection INTEGER +} + +dsBaseIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsBaseIfCapsEntry 1 } + + +dsBaseIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound(1), + outbound(2), + inAndOut(3) + } + STATUS current + DESCRIPTION + "This object specifies the direction(s) for which the + capability applies. A value of 'inbound(1)' means the + capability applies only to the ingress direction. A value of + 'outbound(2)' means the capability applies only to the egress + direction. A value of 'inAndOut(3)' means the capability + applies to both directions." + ::= { dsBaseIfCapsEntry 2 } + +-- +-- The Classification Capability Table +-- + + + + +dsIfClassificationCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfClassificationCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the classification capabilities of + a Capability Set." + ::= { dsCapabilityClasses 2 } + + +dsIfClassificationCapsEntry OBJECT-TYPE + SYNTAX DsIfClassificationCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the classification + capabilities of a Capability Set." + + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfClassificationCapsSpec } + ::= { dsIfClassificationCapsTable 1 } + +DsIfClassificationCapsEntry ::= SEQUENCE { + dsIfClassificationCapsSpec BITS +} + +dsIfClassificationCapsSpec OBJECT-TYPE + SYNTAX BITS { + ipSrcAddrClassification(0), + -- indicates the ability to classify based on + -- IP source addresses + ipDstAddrClassification(1), + -- indicates the ability to classify based on + -- IP destination addresses + ipProtoClassification(2), + -- indicates the ability to classify based on + -- IP protocol numbers + ipDscpClassification(3), + -- indicates the ability to classify based on + -- IP DSCP + ipL4Classification(4), + -- indicates the ability to classify based on + -- IP layer 4 port numbers for UDP and TCP + ipV6FlowID(5) + -- indicates the ability to classify based on + -- IPv6 FlowIDs. + } + + + + STATUS current + DESCRIPTION + "Bit set of supported classification capabilities. In + addition to these capabilities, other PIBs may define other + capabilities that can then be specified in addition to the + ones specified here (or instead of the ones specified here if + none of these are specified)." + ::= { dsIfClassificationCapsEntry 1 } + +-- +-- Metering Capabilities +-- + +dsIfMeteringCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfMeteringCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the metering capabilities of a + Capability Set." + ::= { dsCapabilityClasses 3 } + +dsIfMeteringCapsEntry OBJECT-TYPE + SYNTAX DsIfMeteringCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the metering + capabilities of a Capability Set." + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfMeteringCapsSpec } + ::= { dsIfMeteringCapsTable 1 } + +DsIfMeteringCapsEntry ::= SEQUENCE { + dsIfMeteringCapsSpec BITS +} + +dsIfMeteringCapsSpec OBJECT-TYPE + SYNTAX BITS { + zeroNotUsed(0), + simpleTokenBucket(1), + avgRate(2), + srTCMBlind(3), + srTCMAware(4), + trTCMBlind(5), + trTCMAware(6), + tswTCM(7) + + + + } + STATUS current + DESCRIPTION + "Bit set of supported metering capabilities. As with + classification capabilities, these metering capabilities may + be augmented by capabilities specified in other PRCs (in other + PIBs)." + ::= { dsIfMeteringCapsEntry 1 } + +-- +-- Algorithmic Dropper Capabilities +-- + +dsIfAlgDropCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfAlgDropCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the algorithmic dropper + capabilities of a Capability Set. + + This capability table indicates the types of algorithmic + drop supported by a Capability Set for a specific flow + direction. + Additional capabilities affecting the drop functionalities + are determined based on queue capabilities associated with + specific instance of a dropper, hence not specified by + this class." + ::= { dsCapabilityClasses 4 } + +dsIfAlgDropCapsEntry OBJECT-TYPE + SYNTAX DsIfAlgDropCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the algorithmic dropper + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfAlgDropCapsType, + dsIfAlgDropCapsMQCount } + ::= { dsIfAlgDropCapsTable 1 } + +DsIfAlgDropCapsEntry ::= SEQUENCE { + dsIfAlgDropCapsType BITS, + dsIfAlgDropCapsMQCount Unsigned32 +} + +dsIfAlgDropCapsType OBJECT-TYPE + + + + SYNTAX BITS { + zeroNotUsed(0), + oneNotUsed(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5), + mQDrop(6) } + STATUS current + DESCRIPTION + "The type of algorithm that droppers associated with queues + may use. + + The tailDrop(2) algorithm means that packets are dropped from + the tail of the queue when the associated queue's MaxQueueSize + is exceeded. The headDrop(3) algorithm means that packets are + dropped from the head of the queue when the associated queue's + MaxQueueSize is exceeded. The randomDrop(4) algorithm means + that an algorithm is executed which may randomly + drop the packet, or drop other packet(s) from the queue + in its place. The specifics of the algorithm may be + proprietary. However, parameters would be specified in the + dsRandomDropTable. The alwaysDrop(5) will drop every packet + presented to it. The mQDrop(6) algorithm will drop packets + based on measurement from multiple queues." + ::= { dsIfAlgDropCapsEntry 1 } + +dsIfAlgDropCapsMQCount OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "Indicates the number of queues measured for the drop + algorithm. + This attribute is ignored when alwaysDrop(5) algorithm is + used. This attribute contains the value of 1 for all drop + algorithm types except for mQDrop(6), where this attribute + is used to indicate the maximum number of dsMQAlgDropEntry + that can be chained together." + ::= { dsIfAlgDropCapsEntry 2 } + +-- +-- Queue Capabilities +-- + +dsIfQueueCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfQueueCapsEntry + PIB-ACCESS notify + STATUS current + + + + DESCRIPTION + "This class specifies the queueing capabilities of a + Capability Set." + ::= { dsCapabilityClasses 5 } + +dsIfQueueCapsEntry OBJECT-TYPE + SYNTAX DsIfQueueCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the queue + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfQueueCapsMinQueueSize, + dsIfQueueCapsMaxQueueSize, + dsIfQueueCapsTotalQueueSize } + ::= { dsIfQueueCapsTable 1 } + +DsIfQueueCapsEntry ::= SEQUENCE { + dsIfQueueCapsMinQueueSize Unsigned32, + dsIfQueueCapsMaxQueueSize Unsigned32, + dsIfQueueCapsTotalQueueSize Unsigned32 +} + +dsIfQueueCapsMinQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may allow the size of a queue to be + configured. This attribute specifies the minimum size that + can be configured for a queue, specified in bytes. + dsIfQueueCapsMinQueueSize must be less than or equals to + dsIfQueueCapsMaxQueueSize when both are specified. + A zero value indicates not specified." + ::= { dsIfQueueCapsEntry 1 } + +dsIfQueueCapsMaxQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may allow the size of a queue to be + configured. This attribute specifies the maximum size that + can be configured for a queue, specified in bytes. + dsIfQueueCapsMinQueueSize must be less than or equals to + dsIfQueueCapsMaxQueueSize when both are specified. + A zero value indicates not specified." + + + + ::= { dsIfQueueCapsEntry 2 } + +dsIfQueueCapsTotalQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may have a limited buffer space to be + shared amongst all queues of that interface while also + allowing the size of each queue to be configurable. To + prevent the situation where the PDP configures the sizes of + the queues in excess of the total buffer available to the + interface, the PEP can report the total buffer space in + bytes available with this capability. + A zero value indicates not specified." + ::= { dsIfQueueCapsEntry 3 } + +-- +-- Scheduler Capabilities +-- + +dsIfSchedulerCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfSchedulerCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the scheduler capabilities of a + Capability Set." + ::= { dsCapabilityClasses 6 } + +dsIfSchedulerCapsEntry OBJECT-TYPE + SYNTAX DsIfSchedulerCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the scheduler + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfSchedulerCapsServiceDisc, + dsIfSchedulerCapsMaxInputs } + ::= { dsIfSchedulerCapsTable 1 } + +DsIfSchedulerCapsEntry ::= SEQUENCE { + dsIfSchedulerCapsServiceDisc AutonomousType, + dsIfSchedulerCapsMaxInputs Unsigned32, + dsIfSchedulerCapsMinMaxRate INTEGER +} + + + + +dsIfSchedulerCapsServiceDisc OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The scheduling discipline for which the set of capabilities + specified in this object apply. Object identifiers for several + general purpose and well-known scheduling disciplines are + shared with and defined in the DiffServ MIB. + + These include diffServSchedulerPriority, + diffServSchedulerWRR, diffServSchedulerWFQ." + ::= { dsIfSchedulerCapsEntry 1 } + +dsIfSchedulerCapsMaxInputs OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The maximum number of queues and/or schedulers that can + feed into a scheduler indicated by this capability entry. + A value of zero means there is no maximum." + ::= { dsIfSchedulerCapsEntry 2 } + +dsIfSchedulerCapsMinMaxRate OBJECT-TYPE + SYNTAX INTEGER { + minRate(1), + maxRate(2), + minAndMaxRates(3) + } + STATUS current + DESCRIPTION + "Scheduler capability indicating ability to handle inputs + with minimum rate, maximum rate, or both." + ::= { dsIfSchedulerCapsEntry 3 } + +-- +-- Maximum Rate Capabilities +-- + +dsIfMaxRateCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfMaxRateCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the maximum rate capabilities of a + Capability Set." + ::= { dsCapabilityClasses 7 } + +dsIfMaxRateCapsEntry OBJECT-TYPE + + + + SYNTAX DsIfMaxRateCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the maximum rate + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfMaxRateCapsMaxLevels } + ::= { dsIfMaxRateCapsTable 1 } + +DsIfMaxRateCapsEntry ::= SEQUENCE { + dsIfMaxRateCapsMaxLevels Unsigned32 +} + +dsIfMaxRateCapsMaxLevels OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The maximum number of levels a maximum rate specification + may have for this Capability Set and flow direction." + ::= { dsIfMaxRateCapsEntry 1 } + +-- +-- DataPath Element Linkage Capabilities +-- + +-- +-- DataPath Element Cascade Depth +-- + +dsIfElmDepthCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfElmDepthCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the number of elements of the same + type that can be cascaded together in a datapath." + ::= { dsCapabilityClasses 8 } + +dsIfElmDepthCapsEntry OBJECT-TYPE + SYNTAX DsIfElmDepthCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the cascade depth + for a particular functional datapath element PRC. A + functional datapath element not represented in this + class can be assumed to have no specific maximum + depth." + + + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfElmDepthCapsPrc } + ::= { dsIfElmDepthCapsTable 1 } + +DsIfElmDepthCapsEntry ::= SEQUENCE { + dsIfElmDepthCapsPrc PrcIdentifierOid, + dsIfElmDepthCapsCascadeMax Unsigned32 +} + +dsIfElmDepthCapsPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The object identifier of a PRC that represents a functional + datapath element. This may be one of: dsClfrElementEntry, + dsMeterEntry, dsActionEntry, dsAlgDropEntry, dsQEntry, or + dsSchedulerEntry. + There may not be more than one instance of this class with + the same value of dsIfElmDepthCapsPrc and same value of + dsBaseIfCapsDirection. Must not contain the value of + zeroDotZero." + ::= { dsIfElmDepthCapsEntry 1 } + +dsIfElmDepthCapsCascadeMax OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The maximum number of elements of type dsIfElmDepthCapsPrc + that can be linked consecutively in a data path. A value of + zero indicates there is no specific maximum." + ::= { dsIfElmDepthCapsEntry 2 } + +-- +-- DataPath Element Linkage Types +-- + +dsIfElmLinkCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfElmLinkCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies what types of datapath functional + elements may be used as the next downstream element for + a specific type of functional element." + ::= { dsCapabilityClasses 9 } + +dsIfElmLinkCapsEntry OBJECT-TYPE + + + + SYNTAX DsIfElmLinkCapsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies a PRC that may + be used as the next functional element after a specific + type of element in a data path." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfElmLinkCapsPrc, + dsIfElmLinkCapsAttr, + dsIfElmLinkCapsNextPrc } + ::= { dsIfElmLinkCapsTable 1 } + +DsIfElmLinkCapsEntry ::= SEQUENCE { + dsIfElmLinkCapsPrc PrcIdentifierOid, + dsIfElmLinkCapsAttr AttrIdentifier, + dsIfElmLinkCapsNextPrc PrcIdentifierOidOrZero +} + +dsIfElmLinkCapsPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + " The object identifier of a PRC that represents a functional + datapath element. This may be one of: dsClfrElementEntry, + dsMeterEntry, dsActionEntry, dsAlgDropEntry, dsQEntry, or + dsSchedulerEntry. + This must not have the value zeroDotZero." + ::= { dsIfElmLinkCapsEntry 1 } + +dsIfElmLinkCapsAttr OBJECT-TYPE + SYNTAX AttrIdentifier + STATUS current + DESCRIPTION + "The value represents the attribute in the PRC + indicated by dsIfElmLinkCapsPrc that is used to + specify the next functional element in the datapath." + ::= { dsIfElmLinkCapsEntry 2 } + +dsIfElmLinkCapsNextPrc OBJECT-TYPE + SYNTAX PrcIdentifierOidOrZero + STATUS current + DESCRIPTION + "The value is the OID of a PRC table entry from which + instances can be referenced by the attribute indicated + by dsIfElmLinkCapsPrc and dsIfElmLinkAttr. + + For example, suppose a meter's success output can be an + + + + action or another meter, and the fail output can only be + an action. This can be expressed as follows: + + Prid Prc Attr NextPrc + 1 dsMeterEntry dsMeterSucceedNext dsActionEntry + 2 dsMeterEntry dsMeterSucceedNext dsMeterEntry + 3 dsMeterEntry dsMeterFailNext dsActionEntry. + + zeroDotZero is a valid value for this attribute to + specify that the PRC specified in dsIfElmLinkCapsPrc + is the last functional data path element." + ::= { dsIfElmLinkCapsEntry 3 } + +-- +-- Policy Classes +-- + +-- +-- Data Path Table +-- + +dsDataPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsDataPathEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The data path table indicates the start of + functional data paths in this device. + + The Data Path Table enumerates the Differentiated + Services Functional Data Paths within this device. + Each entry specifies the first functional datapath + element to process data flow for each specific datapath. + Each datapath is defined by the interface set's capability + set name, role combination, and direction. This class can + therefore have up to two entries for each interface set, + ingress and egress." + ::= { dsPolicyClasses 1 } + +dsDataPathEntry OBJECT-TYPE + SYNTAX DsDataPathEntry + STATUS current + DESCRIPTION + "Each entry in this class indicates the start of a single + functional data path, defined by its capability set name, + role combination and traffic direction. The first + functional datapath element to handle traffic for each + data path is defined by the dsDataPathStart attribute + + + + of each table entry. + Notice for each entry: + 1. dsDataPathCapSetName must reference an existing capability + set name in frwkCapabilitySetTable [FR-PIB]. + 2. dsDataPathRoles must reference existing Role Combination + in frwkIfRoleComboTable [FR-PIB]. + 3. dsDataPathStart must reference an existing entry in a + functional data path element table. + If any one or more of these three requirements is not + satisfied, the dsDataPathEntry will not be installed." + PIB-INDEX { dsDataPathPrid } + UNIQUENESS { dsDataPathCapSetName, + dsDataPathRoles, + dsDataPathIfDirection } + ::= { dsDataPathTable 1 } + +DsDataPathEntry ::= SEQUENCE { + dsDataPathPrid InstanceId, + dsDataPathCapSetName SnmpAdminString, + dsDataPathRoles RoleCombination, + dsDataPathIfDirection IfDirection, + dsDataPathStart Prid +} + +dsDataPathPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsDataPathEntry 1 } + +dsDataPathCapSetName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The capability set associated with this data path entry. + The capability set name specified by this attribute + must exist in the frwkCapabilitySetTable [FR-PIB] + prior to association with an instance of this class." + ::= { dsDataPathEntry 2 } + +dsDataPathRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this data path entry applies, + specified in terms of roles. There must exist an entry + + + + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the capability + set specified by dsDataPathCapSetName, prior to + association with an instance of this class." + ::= { dsDataPathEntry 3 } + +dsDataPathIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "Specifies the direction for which this data path + entry applies." + ::= { dsDataPathEntry 4 } + +dsDataPathStart OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the first functional datapath element + to handle traffic for this data path. This + Prid should point to an instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry + + The PRI pointed to must exist prior to the installation of + this datapath start element." + ::= { dsDataPathEntry 5 } + +-- +-- Classifiers +-- +-- Classifier allows multiple classifier elements, of same or +-- different types, to be used together. +-- A classifier must completely classify all packets presented to +-- it. This means all traffic handled by a classifier must match +-- at least one classifier element within the classifier, +-- with the classifier element parameters specified by a filter. +-- It is the PDP's responsibility to create a _catch all_ classifier +-- element and filter that matches all packet. This _catch all_ +-- classifier element should have the lowest Precedence value. +-- +-- If there is ambiguity between classifier elements of different +-- classifier, classifier linkage order indicates their precedence; +-- the first classifier in the link is applied to the traffic first. +-- + + + +-- Each entry in the classifier table represents a classifier, with +-- classifier element table handling the fan-out functionality of a +-- classifier, and filter table defining the classification +-- patterns. +-- + +-- +-- Classifier Table +-- + +dsClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsClfrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table enumerates all the DiffServ classifier functional + data path elements of this device. The actual classification + definitions are detailed in dsClfrElementTable entries + belonging to each classifier. Each classifier is referenced + by its classifier elements using its classifier ID. + + An entry in this table, referenced by an upstream functional + data path element or a datapath table entry, is the entry + point to the classifier functional data path element. + + The dsClfrId of each entry is used to organize all + classifier elements belonging to the same classifier." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 4.1" + ::= { dsPolicyClasses 2 } + +dsClfrEntry OBJECT-TYPE + SYNTAX DsClfrEntry + STATUS current + DESCRIPTION + "An entry in the classifier table describes a single + classifier. Each classifier element belonging to this + classifier must have its dsClfrElementClfrId attribute equal + to dsClfrId." + PIB-INDEX { dsClfrPrid } + UNIQUENESS { dsClfrId } + ::= { dsClfrTable 1 } + +DsClfrEntry ::= SEQUENCE { + dsClfrPrid InstanceId, + dsClfrId TagReferenceId +} + + + + +dsClfrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsClfrEntry 1 } + +dsClfrId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { dsClfrElementClfrId } + STATUS current + DESCRIPTION + "Identifies a Classifier. A Classifier must be + complete, this means all traffic handled by a + Classifier must match at least one Classifier + Element within the Classifier." + ::= { dsClfrEntry 2 } + +-- +-- Classifier Element Table +-- + +dsClfrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsClfrElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Entries in the classifier element table serves as + the anchor for each classification pattern, defined + in filter table entries. Each classifier element + table entry also specifies the subsequent downstream + diffserv functional datapath element when the + classification pattern is satisfied. Hence + the classifier element table enumerates the relationship + between classification patterns and subsequent downstream + diffserv functional data path elements, describing one + branch of the fan-out characteristic of a classifier + indicated in [Model]. + + Classification parameters are defined by entries of filter + tables pointed to by dsClfrElementSpecific. There can be + filter tables of different types, and they can be inter-mixed + and used within a classifier. An example of a filter table is + the frwkIpFilterTable [FR-PIB], for IP Multi-Field + Classifiers (MFCs). + + + + + If there is ambiguity between classifier elements of the same + classifier, then dsClfrElementPrecedence needs to be used." + ::= { dsPolicyClasses 3 } + +dsClfrElementEntry OBJECT-TYPE + SYNTAX DsClfrElementEntry + STATUS current + DESCRIPTION + "An entry in the classifier element table describes a + single element of the classifier." + PIB-INDEX { dsClfrElementPrid } + UNIQUENESS { dsClfrElementClfrId, + dsClfrElementPrecedence, + dsClfrElementSpecific } + ::= { dsClfrElementTable 1 } + +DsClfrElementEntry ::= SEQUENCE { + dsClfrElementPrid InstanceId, + dsClfrElementClfrId TagId, + dsClfrElementPrecedence Unsigned32, + dsClfrElementNext Prid, + dsClfrElementSpecific Prid +} + +dsClfrElementPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsClfrElementEntry 1 } + +dsClfrElementClfrId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A classifier is composed of one or more classifier + elements. Each classifier element belonging to + the same classifier uses the same classifier ID. + + Hence, A classifier Id identifies which classifier + this classifier element is a part of. This must be + the value of dsClfrId attribute for an existing + instance of dsClfrEntry." + ::= { dsClfrElementEntry 2 } + +dsClfrElementPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + + + + STATUS current + DESCRIPTION + "The relative order in which classifier elements are + applied: higher numbers represent classifier elements + with higher precedence. Classifier elements with the + same precedence must be unambiguous i.e., they must + define non-overlapping patterns, and are considered to + be applied simultaneously to the traffic stream. + Classifier elements with different precedence may + overlap in their filters: the classifier element with + the highest precedence that matches is taken. + + On a given interface, there must be a complete + classifier in place at all times in the ingress + direction. This means that there will always be one + or more filters that match every possible pattern + that could be presented in an incoming packet. + There is no such requirement in the egress direction." + ::= { dsClfrElementEntry 3 } + +dsClfrElementNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute provides one branch of the fan-out + functionality of a classifier described in Diffserv + Model section 4.1. + + This selects the next diffserv functional datapath + element to handle traffic for this data path. + + A value of zeroDotZero marks the end of DiffServ processing + for this data path. Any other value must point to a + valid (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsClfrElementEntry 4 } + +dsClfrElementSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid entry in another table that + describes the applicable classification filter, e.g., + + + + an entry in frwkIpFilterTable (Framework PIB). + + The PRI pointed to must exist prior to the installation of + this classifier element. + + The value zeroDotZero is interpreted to match any- + thing not matched by another classifier element - only one + such entry may exist for each classifier." + ::= { dsClfrElementEntry 5 } + +-- +-- Meters +-- +-- This PIB supports a variety of Meters. It includes a +-- specific definition for Meters whose parameter set can +-- be modeled using Token Bucket parameters. +-- Other metering parameter sets can be defined by other PIBs. +-- +-- Multiple meter elements may be logically cascaded +-- using their dsMeterSucceedNext and dsMeterFailNext pointers if +-- required. +-- One example of this might be for an AF PHB implementation +-- that uses multiple level conformance meters. +-- +-- Cascading of individual meter elements in the PIB is intended +-- to be functionally equivalent to multiple level conformance +-- determination of a packet. The sequential nature of the +-- representation is merely a notational convenience for this PIB. +-- +-- srTCM meters (RFC 2697) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Information Rate and Committed Burst Size +-- token-bucket. Second set specifies the Excess Burst +-- Size token-bucket. +-- +-- trTCM meters (RFC 2698) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Information Rate and Committed Burst Size +-- token-bucket. Second set specifies the Peak Information +-- Rate and Peak Burst Size token-bucket. +-- +-- tswTCM meters (RFC 2859) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Target Rate token-bucket. Second set specifies the +-- Peak Target Rate token-bucket. dsTBParamInterval in each +-- token bucket reflects the Average Interval. + +dsMeterTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF DsMeterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class enumerates specific meters that a system + may use to police a stream of traffic. The traffic + stream to be metered is determined by the element(s) + upstream of the meter i.e., by the object(s) that + point to each entry in this class. This may include + all traffic on an interface. + + Specific meter details are to be found in table entry + referenced by dsMeterSpecific." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5" + ::= { dsPolicyClasses 4 } + +dsMeterEntry OBJECT-TYPE + SYNTAX DsMeterEntry + STATUS current + DESCRIPTION + "An entry in the meter table describes a single + conformance level of a meter." + PIB-INDEX { dsMeterPrid } + UNIQUENESS { dsMeterSucceedNext, + dsMeterFailNext, + dsMeterSpecific } + ::= { dsMeterTable 1 } + +DsMeterEntry ::= SEQUENCE { + dsMeterPrid InstanceId, + dsMeterSucceedNext Prid, + dsMeterFailNext Prid, + dsMeterSpecific Prid +} + +dsMeterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMeterEntry 1 } + +dsMeterSucceedNext OBJECT-TYPE + SYNTAX Prid + STATUS current + + + + DESCRIPTION + "If the traffic does conform, this selects the next + diffserv functional datapath element to handle + traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsMeterEntry 2 } + +dsMeterFailNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "If the traffic does not conform, this selects the + next diffserv functional datapath element to handle + traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsMeterEntry 3 } + +dsMeterSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This indicates the behaviour of the meter by point- + ing to an entry containing detailed parameters. Note + that entries in that specific table must be managed + explicitly. + + For example, dsMeterSpecific may point to an + entry in dsTBMeterTable, which contains an + + + + instance of a single set of Token Bucket parameters. + + The PRI pointed to must exist prior to installing this + Meter datapath element." + ::= { dsMeterEntry 4 } + +-- +-- Token-Bucket Parameter Table +-- +-- Each entry in the Token Bucket Parameter Table parameterizes +-- a single token bucket. Multiple token buckets can be +-- used together to parameterize multiple levels of +-- conformance. +-- +-- Note that an entry in the Token Bucket Parameter Table can +-- be shared, pointed to, by multiple dsMeterTable entries. +-- + +dsTBParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsTBParamEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table enumerates token-bucket meter parameter sets + that a system may use to police a stream of traffic. + Such parameter sets are modelled here as each having a single + rate and a single burst size. Multiple entries are used + when multiple rates/burst sizes are needed." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5.1" + ::= { dsPolicyClasses 5 } + +dsTBParamEntry OBJECT-TYPE + SYNTAX DsTBParamEntry + STATUS current + DESCRIPTION + "An entry that describes a single token-bucket + parameter set." + PIB-INDEX { dsTBParamPrid } + UNIQUENESS { dsTBParamType, + dsTBParamRate, + dsTBParamBurstSize, + dsTBParamInterval } + ::= { dsTBParamTable 1 } + +DsTBParamEntry ::= SEQUENCE { + dsTBParamPrid InstanceId, + + + + dsTBParamType AutonomousType, + dsTBParamRate Unsigned32, + dsTBParamBurstSize BurstSize, + dsTBParamInterval Unsigned32 +} + +dsTBParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsTBParamEntry 1 } + +dsTBParamType OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The Metering algorithm associated with the + Token-Bucket parameters. zeroDotZero indicates this + is unknown. + + Standard values for generic algorithms are as follows: + + diffServTBParamSimpleTokenBucket, diffServTBParamAvgRate, + diffServTBParamSrTCMBlind, diffServTBParamSrTCMAware, + diffServTBParamTrTCMBlind, diffServTBParamTrTCMAware, + diffServTBParamTswTCM + + These are specified in the DiffServ MIB." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5.1" + ::= { dsTBParamEntry 2 } + +dsTBParamRate OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The token-bucket rate, in kilobits per second + (kbps). This attribute is used for: + 1. CIR in RFC 2697 for srTCM + 2. CIR and PIR in RFC 2698 for trTCM + 3. CTR and PTR in RFC 2859 for TSWTCM + 4. AverageRate in RFC 3290, section 5.1.1" + ::= { dsTBParamEntry 3 } + + + + +dsTBParamBurstSize OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + STATUS current + DESCRIPTION + "The maximum number of bytes in a single transmission + burst. This attribute is used for: + 1. CBS and EBS in RFC 2697 for srTCM + 2. CBS and PBS in RFC 2698 for trTCM + 3. Burst Size in RFC 3290, section 5." + ::= { dsTBParamEntry 4 } + +dsTBParamInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "microseconds" + STATUS current + DESCRIPTION + "The time interval used with the token bucket. For: + 1. Average Rate Meter, RFC 3290, section 5.1.1, + -Delta. + 2. Simple Token Bucket Meter, RFC 3290, section + 5.1.3, - time interval t. + 3. RFC 2859 TSWTCM, - AVG_INTERVAL. + 4. RFC 2697 srTCM, RFC 2698 trTCM, - token + bucket update time interval." + ::= { dsTBParamEntry 5 } + +-- +-- Actions +-- + +-- +-- The Action Table allows enumeration of the different +-- types of actions to be applied to a traffic flow. +-- + +dsActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Action Table enumerates actions that can be per- + formed to a stream of traffic. Multiple actions can + be concatenated. + + Specific actions are indicated by dsAction- + Specific which points to an entry of a specific + action type parameterizing the action in detail." + + + + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 6." + ::= { dsPolicyClasses 6 } + +dsActionEntry OBJECT-TYPE + SYNTAX DsActionEntry + STATUS current + DESCRIPTION + "Each entry in the action table allows description of + one specific action to be applied to traffic." + PIB-INDEX { dsActionPrid } + UNIQUENESS { dsActionNext, + dsActionSpecific } + ::= { dsActionTable 1 } + +DsActionEntry ::= SEQUENCE { + dsActionPrid InstanceId, + dsActionNext Prid, + dsActionSpecific Prid +} + +dsActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsActionEntry 1 } + +dsActionNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsActionEntry 2 } + + + + +dsActionSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to an object instance providing additional + information for the type of action indicated by this + action table entry. + + For the standard actions defined by this PIB module, + this should point to an instance of dsDscpMarkActEntry. + For other actions, it may point to an instance of a + PRC defined in some other PIB. + + The PRI pointed to must exist prior to installing this + action datapath entry." + ::= { dsActionEntry 3 } + +-- DSCP Mark Action Table +-- +-- Rows of this class are pointed to by dsActionSpecific +-- to provide detailed parameters specific to the DSCP +-- Mark action. +-- This class should at most contain one entry for each supported +-- DSCP value. These entries should be reused by different +-- dsActionEntry in same or different data paths. +-- + +dsDscpMarkActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsDscpMarkActEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class enumerates specific DSCPs used for marking or + remarking the DSCP field of IP packets. The entries of this + table may be referenced by a dsActionSpecific attribute." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 6.1" + ::= { dsPolicyClasses 7 } + +dsDscpMarkActEntry OBJECT-TYPE + SYNTAX DsDscpMarkActEntry + STATUS current + DESCRIPTION + "An entry in the DSCP mark action table that describes a + single DSCP used for marking." + PIB-INDEX { dsDscpMarkActPrid } + + + + UNIQUENESS { dsDscpMarkActDscp } + ::= { dsDscpMarkActTable 1 } + +DsDscpMarkActEntry ::= SEQUENCE { + dsDscpMarkActPrid InstanceId, + dsDscpMarkActDscp Dscp +} + +dsDscpMarkActPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsDscpMarkActEntry 1 } + +dsDscpMarkActDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP that this Action uses for marking/remarking + traffic. Note that a DSCP value of -1 is not permit- + ted in this class. It is quite possible that the + only packets subject to this Action are already + marked with this DSCP. Note also that DiffServ may + result in packet remarking both on ingress to a net- + work and on egress from it and it is quite possible + that ingress and egress would occur in the same + router." + ::= { dsDscpMarkActEntry 2 } + +-- +-- Algorithmic Drop Table +-- + +-- Algorithmic Drop Table is the entry point for the Algorithmic +-- Dropper functional data path element. + +-- For a simple algorithmic dropper, a single algorithmic drop entry +-- will be sufficient to parameterize the dropper. + +-- For more complex algorithmic dropper, the dsAlgDropSpecific +-- attribute can be used to reference an entry in a parameter table, +-- e.g., dsRandomDropTable for random dropper. + +-- For yet more complex dropper, for example, dropper that measures +-- multiple queues, each queue with its own algorithm, can use a +-- dsAlgDropTable entry as the entry point for Algorithmic Dropper + + + +-- functional data path element, leaving the dropper parameters +-- for each queue be specified by entries of dsMQAlgDropTable. +-- In such usage, the anchoring dsAlgDropEntry's dsAlgDropType +-- should be mQDrop, and its dsAlgDropQMeasure should reference +-- the subsequent dsMQAlgDropEntry's, its dsAlgDropSpecific +-- should be used to reference parameters applicable to all the +-- queues being measured. +-- The subsequent dsMQAlgDropEntry's will provide the parameters, +-- one for each queue being measured. The dsMQAlgDropEntry's are +-- chained using their dsMQAlgDropNext attributes. +-- + +dsAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsAlgDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The algorithmic drop table contains entries describ- + ing a functional data path element that drops + packets according to some algorithm." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.3" + ::= { dsPolicyClasses 8 } + +dsAlgDropEntry OBJECT-TYPE + SYNTAX DsAlgDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to some algorithm. Further details of the + algorithm type are to be found in dsAlgDropType + and with more detail parameter entry pointed to by + dsAlgDropSpecific when necessary." + PIB-INDEX { dsAlgDropPrid } + UNIQUENESS { dsAlgDropType, + dsAlgDropNext, + dsAlgDropQMeasure, + dsAlgDropQThreshold, + dsAlgDropSpecific } + ::= { dsAlgDropTable 1 } + +DsAlgDropEntry ::= SEQUENCE { + dsAlgDropPrid InstanceId, + dsAlgDropType INTEGER, + dsAlgDropNext Prid, + dsAlgDropQMeasure Prid, + dsAlgDropQThreshold Unsigned32, + + + + dsAlgDropSpecific Prid +} + +dsAlgDropPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsAlgDropEntry 1 } + +dsAlgDropType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5), + mQDrop(6) + } + STATUS current + DESCRIPTION + "The type of algorithm used by this dropper. A value + of tailDrop(2), headDrop(3), or alwaysDrop(5) represents + an algorithm that is completely specified by this PIB. + + A value of other(1) indicates that the specifics of + the drop algorithm are specified in some other PIB + module, and that the dsAlgDropSpecific attribute + points to an instance of a PRC in that PIB that + specifies the information necessary to implement the + algorithm. + + The tailDrop(2) algorithm is described as follows: + dsAlgDropQThreshold represents the depth of the + queue, pointed to by dsAlgDropQMeasure, at + which all newly arriving packets will be dropped. + + The headDrop(3) algorithm is described as follows: if + a packet arrives when the current depth of the queue, + pointed to by dsAlgDropQMeasure, is at + dsAlgDropQThreshold, packets currently at the head of + the queue are dropped to make room for the new packet + to be enqueued at the tail of the queue. + + The randomDrop(4) algorithm is described as follows: + on packet arrival, an algorithm is executed which may + randomly drop the packet, or drop other packet(s) + + + + from the queue in its place. The specifics of the + algorithm may be proprietary. For this algorithm, + dsAlgDropSpecific points to a dsRandomDropEntry + that describes the algorithm. For this + algorithm, dsAlgQThreshold is understood to be + the absolute maximum size of the queue and additional + parameters are described in dsRandomDropTable. + + The alwaysDrop(5) algorithm always drops packets. In + this case, the other configuration values in this Entry + are not meaningful; The queue is not used, therefore, + dsAlgDropNext, dsAlgDropQMeasure, and + dsAlgDropSpecific should be all set to zeroDotZero. + + The mQDrop(6) algorithm measures multiple queues for + the drop algorithm. The queues measured are represented + by having dsAlgDropQMeasure referencing a dsMQAlgDropEntry. + Each of the chained dsMQAlgDropEntry is used to describe + the drop algorithm for one of the measured queues." + + ::= { dsAlgDropEntry 2 } + +dsAlgDropNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + The value zeroDotZero in this attribute indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry. + + When dsAlgDropType is alwaysDrop(5), this attribute is + Ignored." + DEFVAL { zeroDotZero } + ::= { dsAlgDropEntry 3 } + +dsAlgDropQMeasure OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + + + + "Points to a PRI to indicate the queues that a drop algorithm + is to monitor when deciding whether to drop a packet. + + For alwaysDrop(5), this attribute should be zeroDotZero. + For tailDrop(2), headDrop(3), randomDrop(4), this should + point to an entry in the dsQTable. + For mQDrop(6), this should point to a dsMQAlgDropEntry that + Describe one of the queues being measured for multiple + queue dropper. + + The PRI pointed to must exist prior to installing + this dropper element." + ::= { dsAlgDropEntry 4 } + +dsAlgDropQThreshold OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "A threshold on the depth in bytes of the queue being + measured at which a trigger is generated to the drop- + ping algorithm, unless dsAlgDropType is alwaysDrop(5) + where this attribute is ignored. + + For the tailDrop(2) or headDrop(3) algorithms, this + represents the depth of the queue, pointed to by + dsAlgDropQMeasure, at which the drop action + will take place. Other algorithms will need to define + their own semantics for this threshold." + ::= { dsAlgDropEntry 5 } + +dsAlgDropSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Points to a table entry that provides further detail + regarding a drop algorithm. The PRI pointed to + must exist prior to installing this dropper element. + + Entries with dsAlgDropType equal to other(1) must + have this point to an instance of a PRC defined + in another PIB module. + + Entries with dsAlgDropType equal to random- + Drop(4) must have this point to an entry in + dsRandomDropTable. + + Entries with dsAlgDropType equal to mQDrop(6) can use this + + + + attribute to reference parameters that is used by all the + queues of the multiple queues being measured. + + For all other algorithms, this should take the value + zeroDotZero." + ::= { dsAlgDropEntry 6 } + +-- +-- Multiple Queue Algorithmic Drop Table +-- +-- Entries of this table should be referenced by dsAlgDropQMeasure +-- when dsAlgDropType is mQDrop(6) for droppers measuring multiple +-- queues for its drop algorithm. +-- Each entry of the table is used to describe the drop algorithm +-- for a single queue within the multiple queues being measured. +-- +-- Entries of this table, dsMQAlgDropEntry, is extended from +-- dsAlgDropEntry, with usage of corresponding parameters the same +-- except: +-- dsAlgDropNext is used to point to the next diffserv +-- functional data path element when the packet is not dropped. +-- dsMQAlgDropExceedNext is used to point to the next +-- dsMQAlgDropEntry for chaining together the multiple +-- dsMQAlgDropEntry's for the multiple queues being measured. +-- + +dsMQAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMQAlgDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The multiple queue algorithmic drop table contains entries + describing each queue being measured for the multiple queue + algorithmic dropper." + ::= { dsPolicyClasses 9 } + +dsMQAlgDropEntry OBJECT-TYPE + SYNTAX DsMQAlgDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to some algorithm. Each entry is used for + each of the multiple queues being measured. Each entry + extends the basic dsAlgDropEntry with adding of a + dsMQAlgDropExceedNext attribute. + + Further details of the algorithm type are to be found in + dsAlgDropType and with more detail parameter entry pointed + + + + to by dsMQAlgDropSpecific when necessary." + EXTENDS { dsAlgDropEntry } + UNIQUENESS { dsMQAlgDropExceedNext } + ::= { dsMQAlgDropTable 1 } + +DsMQAlgDropEntry ::= SEQUENCE { + dsMQAlgDropExceedNext Prid +} + +dsMQAlgDropExceedNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Used for linking of multiple dsMQAlgDropEntry for mQDrop. + A value of zeroDotZero indicates this is the last of a + chain of dsMQAlgDropEntry." + DEFVAL { zeroDotZero } + ::= { dsMQAlgDropEntry 1 } + +-- +-- Random Drop Table +-- + +dsRandomDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsRandomDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The random drop table contains entries describing a + process that drops packets randomly. Entries in this + table is intended to be pointed to by dsAlgDropSpecific + when dsAlgDropType is randomDrop(4)." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.3" + ::= { dsPolicyClasses 10 } + +dsRandomDropEntry OBJECT-TYPE + SYNTAX DsRandomDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to a random algorithm." + PIB-INDEX { dsRandomDropPrid } + UNIQUENESS { dsRandomDropMinThreshBytes, + dsRandomDropMinThreshPkts, + dsRandomDropMaxThreshBytes, + dsRandomDropMaxThreshPkts, + + + + dsRandomDropProbMax, + dsRandomDropWeight, + dsRandomDropSamplingRate + } + ::= { dsRandomDropTable 1 } + +DsRandomDropEntry ::= SEQUENCE { + dsRandomDropPrid InstanceId, + dsRandomDropMinThreshBytes Unsigned32, + dsRandomDropMinThreshPkts Unsigned32, + dsRandomDropMaxThreshBytes Unsigned32, + dsRandomDropMaxThreshPkts Unsigned32, + dsRandomDropProbMax Unsigned32, + dsRandomDropWeight Unsigned32, + dsRandomDropSamplingRate Unsigned32 +} + +dsRandomDropPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsRandomDropEntry 1 } + +dsRandomDropMinThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + STATUS current + DESCRIPTION + "The average queue depth in bytes, beyond which traffic has a + non-zero probability of being dropped." + ::= { dsRandomDropEntry 2 } + +dsRandomDropMinThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + STATUS current + DESCRIPTION + "The average queue depth in packets, beyond which traffic has + a non-zero probability of being dropped." + ::= { dsRandomDropEntry 3 } + +dsRandomDropMaxThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + STATUS current + DESCRIPTION + + + + "The average queue depth beyond which traffic has a + probability indicated by dsRandomDropProbMax of being dropped + or marked. Note that this differs from the physical queue + limit, which is stored in dsAlgDropQThreshold." + ::= { dsRandomDropEntry 4 } + +dsRandomDropMaxThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a + probability indicated by dsRandomDropProbMax of being dropped + or marked. Note that this differs from the physical queue + limit, which is stored in dsAlgDropQThreshold." + ::= { dsRandomDropEntry 5 } + +dsRandomDropProbMax OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + STATUS current + DESCRIPTION + "The worst case random drop probability, expressed in drops + per thousand packets. + + For example, if every packet may be dropped in the worst case + (100%), this has the value 1000. Alternatively, if in the + worst case one percent (1%) of traffic may be dropped, it has + the value 10." + ::= { dsRandomDropEntry 6 } + +dsRandomDropWeight OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The weighting of past history in affecting the Exponentially + Weighted Moving Average function which calculates the current + average queue depth. The equation uses + dsRandomDropWeight/MaxValue as the coefficient for the new + sample in the equation, and + (MaxValue - dsRandomDropWeight)/MaxValue as the coefficient + of the old value, where, MaxValue is determined via capability + reported by the PEP. + + Implementations may further limit the values of + dsRandomDropWeight via the capability tables." + ::= { dsRandomDropEntry 7 } + +dsRandomDropSamplingRate OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..1000000) + STATUS current + DESCRIPTION + "The number of times per second the queue is sampled for queue + average calculation. A value of zero means the queue is + sampled approximately each time a packet is enqueued (or + dequeued)." + ::= { dsRandomDropEntry 8 } + +-- +-- Queue Table +-- + +-- +-- An entry of dsQTable represents a FIFO queue diffserv +-- functional data path element as described in [MODEL] section +-- 7.1.1. +-- Notice the specification of scheduling parameters for a queue +-- as part of the input to a scheduler functional data path +-- element as described in [MODEL] section 7.1.2. This allows +-- building of hierarchical queuing/scheduling. +-- A queue therefore is parameterized by: +-- 1. Which scheduler will service this queue, dsQNext. +-- 2. How the scheduler will service this queue, with respect +-- to all the other queues the same scheduler needs to service, +-- dsQMinRate and dsQMaxRate. +-- +-- Notice one or more upstream diffserv functional data path element +-- may share, point to, a dsQTable entry as described in [MODEL] +-- section 7.1.1. +-- + +dsQTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsQEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Queue Table enumerates the queues." + ::= { dsPolicyClasses 11 } + +dsQEntry OBJECT-TYPE + SYNTAX DsQEntry + STATUS current + DESCRIPTION + "An entry in the Queue Table describes a single queue + as a functional data path element." + PIB-INDEX { dsQPrid } + UNIQUENESS { dsQNext, + + + + dsQMinRate, + dsQMaxRate } + ::= { dsQTable 1 } + +DsQEntry ::= SEQUENCE { + dsQPrid InstanceId, + dsQNext Prid, + dsQMinRate Prid, + dsQMaxRate Prid +} + +dsQPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsQEntry 1 } + +dsQNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv scheduler. This must point + to a dsSchedulerEntry. + + A value of zeroDotZero in this attribute indicates an + incomplete dsQEntry instance. In such a case, the entry + has no operational effect, since it has no parameters to + give it meaning." + ::= { dsQEntry 2 } + +dsQMinRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMinRateTable + the scheduler, pointed to by dsQNext, should use to service + this queue. + If this value is zeroDotZero + then minimum rate and priority is unspecified. + If this value is not zeroDotZero then the instance pointed to + must exist prior to installing this entry." + ::= { dsQEntry 3 } + +dsQMaxRate OBJECT-TYPE + SYNTAX Prid + STATUS current + + + + DESCRIPTION + "This Prid indicates the entry in dsMaxRateTable + the scheduler, pointed to by dsQNext, should use to service + this queue. + If this value is zeroDotZero, then the maximum rate is the + line speed of the interface. + If this value is not zeroDotZero, then the instance pointed + to must exist prior to installing this entry." + ::= { dsQEntry 4 } + +-- +-- Scheduler Table +-- +-- +-- The Scheduler Table is used for representing packet schedulers: +-- it provides flexibility for multiple scheduling algorithms, each +-- servicing multiple queues, to be used on the same +-- logical/physical interface of a data path. +-- +-- Notice the servicing parameters the scheduler uses is +-- specified by each of its upstream functional data path elements, +-- queues or schedulers of this PIB. +-- The coordination and coherency between the servicing parameters +-- of the scheduler's upstream functional data path elements must +-- be maintained for the scheduler to function correctly. +-- +-- The dsSchedulerMinRate and dsSchedulerMaxRate attributes are +-- used for specifying the servicing parameters for output of a +-- scheduler when its downstream functional data path element +-- is another scheduler. +-- This is used for building hierarchical queue/scheduler. +-- +-- More discussion of the scheduler functional data path element +-- is in [MODEL] section 7.1.2. +-- + +dsSchedulerTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsSchedulerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Scheduler Table enumerates packet schedulers. + Multiple scheduling algorithms can be used on a given + datapath, with each algorithm described by one + dsSchedulerEntry." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.2" + + + + ::= { dsPolicyClasses 12 } + +dsSchedulerEntry OBJECT-TYPE + SYNTAX DsSchedulerEntry + STATUS current + DESCRIPTION + "An entry in the Scheduler Table describing a single + instance of a scheduling algorithm." + PIB-INDEX { dsSchedulerPrid } + UNIQUENESS { dsSchedulerNext, + dsSchedulerMethod, + dsSchedulerMinRate, + dsSchedulerMaxRate } + ::= { dsSchedulerTable 1 } + +DsSchedulerEntry ::= SEQUENCE { + dsSchedulerPrid InstanceId, + dsSchedulerNext Prid, + dsSchedulerMethod AutonomousType, + dsSchedulerMinRate Prid, + dsSchedulerMaxRate Prid +} + +dsSchedulerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsSchedulerEntry 1 } + +dsSchedulerNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + This attribute normally have a value of zeroDotZero to + indicate no further DiffServ treatment is performed on + traffic of this datapath. The use of zeroDotZero is the + normal usage for the last functional datapath element. + Any value other than zeroDotZero must point to a valid + (pre-existing) instance of one of: + dsSchedulerEntry + dsQEntry, + + or: + + + + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + + This points to another dsSchedulerEntry + for implementation of multiple scheduler methods for + the same data path, and for implementation of + hierarchical schedulers." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 2 } + +dsSchedulerMethod OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The scheduling algorithm used by this Scheduler. + Standard values for generic algorithms: + diffServSchedulerPriority, + diffServSchedulerWRR, + diffServSchedulerWFQ + are specified in the DiffServ MIB. + Additional values may be further specified in other PIBs. + A value of zeroDotZero indicates this is unknown." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.2" + ::= { dsSchedulerEntry 3 } + +dsSchedulerMinRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMinRateTable + which indicates the priority or minimum output rate from this + scheduler. This attribute is used only when there is more + than one level of scheduler. + + When it has the value zeroDotZero, it indicates that no + Minimum rate or priority is imposed." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 4 } + +dsSchedulerMaxRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMaxRateTable + + + + which indicates the maximum output rate from this scheduler. + When more than one maximum rate applies (e.g., a multi-rate + shaper is used), it points to the first of the rate entries. + This attribute is only used when there is more than one level + of scheduler. + + When it has the value zeroDotZero, it indicates that no + Maximum rate is imposed." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 5 } + +-- +-- Minimum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries +-- for reusability reasons and so that they may be used by both +-- queues and schedulers. This follows the approach for separation +-- of data path elements from parameterization that is used +-- throughout this PIB. +-- Use of these Minimum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling +-- systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a +-- second scheduler, might specify a minimum transfer rate by +-- pointing to a Minimum Rate Parameter Table entry. +-- +-- The dsMinRatePriority/Absolute/Relative attributes are used as +-- parameters to the work-conserving portion of a scheduler: +-- "work-conserving" implies that the scheduler can continue to emit +-- data as long as there is data available at its input(s). This +-- has the effect of guaranteeing a certain priority relative to +-- other scheduler inputs and/or a certain minimum proportion of the +-- available output bandwidth. Properly configured, this means a +-- certain minimum rate, which may be exceeded should traffic be +-- available should there be spare bandwidth after all other classes +-- have had opportunities to consume their own minimum rates. +-- + +dsMinRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMinRateEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Minimum Rate Table enumerates individual + sets of scheduling parameter that can be used/reused + + + + by Queues and Schedulers." + ::= { dsPolicyClasses 13 } + +dsMinRateEntry OBJECT-TYPE + SYNTAX DsMinRateEntry + STATUS current + DESCRIPTION + "An entry in the Minimum Rate Table describes + a single set of scheduling parameter for use by + queues and schedulers." + PIB-INDEX { dsMinRatePrid } + UNIQUENESS { dsMinRatePriority, + dsMinRateAbsolute, + dsMinRateRelative } + ::= { dsMinRateTable 1 } + +DsMinRateEntry ::= SEQUENCE { + dsMinRatePrid InstanceId, + dsMinRatePriority Unsigned32, + dsMinRateAbsolute Unsigned32, + dsMinRateRelative Unsigned32 +} + +dsMinRatePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMinRateEntry 1 } + +dsMinRatePriority OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The priority of this input to the associated scheduler, + relative to the scheduler's other inputs. Higher Priority + value indicates the associated queue/scheduler will get + service first before others with lower Priority values." + ::= { dsMinRateEntry 2 } + +dsMinRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The minimum absolute rate, in kilobits/sec, that a downstream + scheduler element should allocate to this queue. If the value + + + + is zero, then there is effectively no minimum rate guarantee. + If the value is non-zero, the scheduler will assure the + servicing of this queue to at least this rate. + + Note that this attribute's value is coupled to that + of dsMinRateRelative: changes to one will affect the value + of the other. + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMinRateEntry 3 } + +dsMinRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The minimum rate that a downstream scheduler element + should allocate to this queue, relative to the max- + imum rate of the interface as reported by ifSpeed or + ifHighSpeed, in units of 1/1,000 of 1. If the value + is zero, then there is effectively no minimum rate + guarantee. If the value is non-zero, the scheduler + will assure the servicing of this queue to at least + this rate. + + Note that this attribute's value is coupled to that + of dsMinRateAbsolute: changes to one will + affect the value of the other. + + + + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMinRateEntry 4 } + +-- +-- Maximum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries +-- for reusability reasons and so that they may be used by both +-- queues and schedulers. This follows the approach for separation +-- of data path elements from parameterization that is used +-- throughout this PIB. +-- +-- Use of these Maximum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling +-- systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a +-- second scheduler, might specify a maximum transfer rate by +-- pointing to a Maximum Rate Parameter Table entry. Multi-rate +-- shapers, such as a Dual Leaky Bucket algorithm, specify their +-- rates using multiple Maximum Rate Parameter Entries with the same +-- dsMaxRateId but different dsMaxRateLevels. +-- +-- The dsMaxRateLevel/Absolute/Relative attributes are used as + + + +-- parameters to the non-work-conserving portion of a scheduler: +-- non-work-conserving implies that the scheduler may sometimes not +-- emit a packet, even if there is data available at its input(s). +-- This has the effect of limiting the servicing of the +-- queue/scheduler input or output, in effect performing shaping of +-- the packet stream passing through the queue/scheduler, as +-- described in the Informal Differentiated Services Model +-- section 7.2. +-- + +dsMaxRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMaxRateEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Maximum Rate Table enumerates individual + sets of scheduling parameter that can be used/reused + by Queues and Schedulers." + ::= { dsPolicyClasses 14 } + +dsMaxRateEntry OBJECT-TYPE + SYNTAX DsMaxRateEntry + STATUS current + DESCRIPTION + "An entry in the Maximum Rate Table describes + a single set of scheduling parameter for use by + queues and schedulers." + PIB-INDEX { dsMaxRatePrid } + UNIQUENESS { dsMaxRateId, + dsMaxRateLevel, + dsMaxRateAbsolute, + dsMaxRateRelative, + dsMaxRateThreshold } + ::= { dsMaxRateTable 1 } + +DsMaxRateEntry ::= SEQUENCE { + dsMaxRatePrid InstanceId, + dsMaxRateId Unsigned32, + dsMaxRateLevel Unsigned32, + dsMaxRateAbsolute Unsigned32, + dsMaxRateRelative Unsigned32, + dsMaxRateThreshold BurstSize +} + +dsMaxRatePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + + + + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMaxRateEntry 1 } + +dsMaxRateId OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "An identifier used together with dsMaxRateLevel for + representing a multi-rate shaper. This attribute is used for + associating all the rate attributes of a multi-rate shaper. + Each dsMaxRateEntry of a multi-rate shaper must have the same + value in this attribute. The different rates of a multi-rate + shaper is identified using dsMaxRateLevel. + This attribute uses the value of zero to indicate this + attribute is not used, for single rate shaper." + DEFVAL { 0 } + ::= { dsMaxRateEntry 2 } + +dsMaxRateLevel OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + STATUS current + DESCRIPTION + "An index that indicates which level of a multi-rate shaper is + being given its parameters. A multi-rate shaper has some + number of rate levels. Frame Relay's dual rate specification + refers to a 'committed' and an 'excess' rate; ATM's dual rate + specification refers to a 'mean' and a 'peak' rate. This table + is generalized to support an arbitrary number of rates. The + committed or mean rate is level 1, the peak rate (if any) is + the highest level rate configured, and if there are other + rates they are distributed in monotonically increasing order + between them. + When the entry is used for a single rate shaper, this + attribute contains a value of one." + DEFVAL { 1 } + ::= { dsMaxRateEntry 3 } + +dsMaxRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The maximum rate in kilobits/sec that a downstream + scheduler element should allocate to this queue. If + the value is zero, then there is effectively no max- + imum rate limit and that the scheduler should attempt + to be work-conserving for this queue. If the value + + + + is non-zero, the scheduler will limit the servicing + of this queue to, at most, this rate in a non-work- + conserving manner. + + Note that this attribute's value is coupled to that + of dsMaxRateRelative: changes to one will + affect the value of the other. + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' + for RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + ::= { dsMaxRateEntry 4 } + +dsMaxRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The maximum rate that a downstream scheduler element + should allocate to this queue, relative to the max- + imum rate of the interface as reported by ifSpeed or + ifHighSpeed, in units of 1/1,000 of 1. If the value + is zero, then there is effectively no maximum rate + limit and the scheduler should attempt to be work- + conserving for this queue. If the value is non-zero, + the scheduler will limit the servicing of this queue + to, at most, this rate in a non-work-conserving + manner. + + Note that this attribute's value is coupled to that + of dsMaxRateAbsolute: changes to one will + affect the value of the other. + + + + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMaxRateEntry 5 } + +dsMaxRateThreshold OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + STATUS current + DESCRIPTION + "The number of bytes of queue depth at which the rate of a + multi-rate scheduler will increase to the next output rate. In + the last PRI for such a shaper, this threshold is + ignored and by convention is zero." + REFERENCE + "Adaptive Rate Shaper, RFC 2963" + ::= { dsMaxRateEntry 6 } + +-- +-- Conformance Section +-- + +dsPolicyPibCompliances + OBJECT IDENTIFIER ::= { dsPolicyPibConformance 1 } +dsPolicyPibGroups + OBJECT IDENTIFIER ::= { dsPolicyPibConformance 2 } + +dsPolicyPibCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + QoS Policy PIB." + + MODULE FRAMEWORK-PIB + MANDATORY-GROUPS { + frwkPrcSupportGroup, + frwkPibIncarnationGroup, + frwkDeviceIdGroup, + frwkCompLimitsGroup, + frwkCapabilitySetGroup, + frwkRoleComboGroup, + frwkIfRoleComboGroup, + frwkBaseFilterGroup, + frwkIpFilterGroup } + + OBJECT frwkPibIncarnationLongevity + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationTtl + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + MODULE DIFFSERV-PIB -- this module + MANDATORY-GROUPS { + dsPibBaseIfCapsGroup, + dsPibIfClassificationCapsGroup, + dsPibIfAlgDropCapsGroup, + dsPibIfQueueCapsGroup, + dsPibIfSchedulerCapsGroup, + dsPibIfMaxRateCapsGroup, + dsPibIfElmDepthCapsGroup, + dsPibIfElmLinkCapsGroup, + dsPibDataPathGroup, + dsPibClfrGroup, + dsPibClfrElementGroup, + dsPibActionGroup, + dsPibAlgDropGroup, + dsPibQGroup, + dsPibSchedulerGroup, + dsPibMinRateGroup, + dsPibMaxRateGroup } + + + + + GROUP dsPibIfMeteringCapsGroup + DESCRIPTION + "This group is mandatory for devices that implement + metering functions." + + GROUP dsPibMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement + metering functions." + + GROUP dsPibTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement + token-bucket metering functions." + + GROUP dsPibDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement + DSCP-Marking functions." + + GROUP dsPibMQAlgDropGroup + DESCRIPTION + "This group is mandatory for devices that implement + Multiple Queue Measured Algorithmic Drop functions." + + GROUP dsPibRandomDropGroup + DESCRIPTION + "This group is mandatory for devices that implement + Random Drop functions." + + OBJECT dsClfrId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementClfrId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementPrecedence + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementNext + PIB-MIN-ACCESS not-accessible + + + + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterSucceedNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterFailNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamBurstSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamInterval + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsActionNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + + + + OBJECT dsActionSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropQMeasure + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropQThreshold + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMinThreshBytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMinThreshPkts + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMaxThreshBytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMaxThreshPkts + PIB-MIN-ACCESS not-accessible + DESCRIPTION + + + + "Install support is not required." + + OBJECT dsRandomDropProbMax + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropWeight + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropSamplingRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQMinRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQMaxRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMethod + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMinRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMaxRate + + + + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRatePriority + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRateAbsolute + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRateRelative + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateLevel + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateAbsolute + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateRelative + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateThreshold + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + ::= { dsPolicyPibCompliances 1 } + +dsPibBaseIfCapsGroup OBJECT-GROUP + OBJECTS { + + + + dsBaseIfCapsPrid, dsBaseIfCapsDirection + } + STATUS current + DESCRIPTION + "The Base Interface Capability Group defines the PIB + Objects that describe the base for interface capabilities." + ::= { dsPolicyPibGroups 1 } + +dsPibIfClassificationCapsGroup OBJECT-GROUP + OBJECTS { + dsIfClassificationCapsSpec + } + STATUS current + DESCRIPTION + "The Classification Capability Group defines the PIB + Objects that describe the classification capabilities." + ::= { dsPolicyPibGroups 2 } + +dsPibIfMeteringCapsGroup OBJECT-GROUP + OBJECTS { + dsIfMeteringCapsSpec + } + STATUS current + DESCRIPTION + "The Metering Capability Group defines the PIB + Objects that describe the metering capabilities." + ::= { dsPolicyPibGroups 3 } + +dsPibIfAlgDropCapsGroup OBJECT-GROUP + OBJECTS { + dsIfAlgDropCapsType, dsIfAlgDropCapsMQCount + } + STATUS current + DESCRIPTION + "The Algorithmic Dropper Capability Group defines the + PIB Objects that describe the algorithmic dropper + capabilities." + ::= { dsPolicyPibGroups 4 } + +dsPibIfQueueCapsGroup OBJECT-GROUP + OBJECTS { + dsIfQueueCapsMinQueueSize, dsIfQueueCapsMaxQueueSize, + dsIfQueueCapsTotalQueueSize + } + STATUS current + DESCRIPTION + "The Queueing Capability Group defines the PIB + Objects that describe the queueing capabilities." + + + + ::= { dsPolicyPibGroups 5 } + +dsPibIfSchedulerCapsGroup OBJECT-GROUP + OBJECTS { + dsIfSchedulerCapsServiceDisc, dsIfSchedulerCapsMaxInputs, + dsIfSchedulerCapsMinMaxRate + } + STATUS current + DESCRIPTION + "The Scheduler Capability Group defines the PIB + Objects that describe the scheduler capabilities." + ::= { dsPolicyPibGroups 6 } + +dsPibIfMaxRateCapsGroup OBJECT-GROUP + OBJECTS { + dsIfMaxRateCapsMaxLevels + } + STATUS current + DESCRIPTION + "The Max Rate Capability Group defines the PIB + Objects that describe the max rate capabilities." + ::= { dsPolicyPibGroups 7 } + +dsPibIfElmDepthCapsGroup OBJECT-GROUP + OBJECTS { + dsIfElmDepthCapsPrc, dsIfElmDepthCapsCascadeMax + } + STATUS current + DESCRIPTION + "The DataPath Element Depth Capability Group defines the PIB + Objects that describe the datapath element depth + capabilities." + ::= { dsPolicyPibGroups 8 } + +dsPibIfElmLinkCapsGroup OBJECT-GROUP + OBJECTS { + dsIfElmLinkCapsPrc, dsIfElmLinkCapsAttr, + dsIfElmLinkCapsNextPrc + } + STATUS current + DESCRIPTION + "The DataPath Element Linkage Capability Group defines the + PIB Objects that describe the datapath element linkage + capabilities." + ::= { dsPolicyPibGroups 9 } + +dsPibDataPathGroup OBJECT-GROUP + OBJECTS { + + + + dsDataPathPrid, dsDataPathCapSetName, + dsDataPathRoles, dsDataPathIfDirection, + dsDataPathStart + } + STATUS current + DESCRIPTION + "The Data Path Group defines the PIB Objects that + describe a data path." + ::= { dsPolicyPibGroups 10 } + +dsPibClfrGroup OBJECT-GROUP + OBJECTS { + dsClfrPrid, dsClfrId + } + STATUS current + DESCRIPTION + "The Classifier Group defines the PIB Objects that + describe a generic classifier." + ::= { dsPolicyPibGroups 11 } + +dsPibClfrElementGroup OBJECT-GROUP + OBJECTS { + dsClfrElementPrid, dsClfrElementClfrId, + dsClfrElementPrecedence, dsClfrElementNext, + dsClfrElementSpecific + } + STATUS current + DESCRIPTION + "The Classifier Group defines the PIB Objects that + describe a generic classifier." + ::= { dsPolicyPibGroups 12 } + +dsPibMeterGroup OBJECT-GROUP + OBJECTS { + dsMeterPrid, dsMeterSucceedNext, + dsMeterFailNext, dsMeterSpecific + } + STATUS current + DESCRIPTION + "The Meter Group defines the objects used in describ- + ing a generic meter element." + ::= { dsPolicyPibGroups 13 } + +dsPibTBParamGroup OBJECT-GROUP + OBJECTS { + dsTBParamPrid, dsTBParamType, dsTBParamRate, + dsTBParamBurstSize, dsTBParamInterval + } + + + + STATUS current + DESCRIPTION + "The Token-Bucket Parameter Group defines the objects + used in describing a single-rate token bucket meter + element." + ::= { dsPolicyPibGroups 14 } + +dsPibActionGroup OBJECT-GROUP + OBJECTS { + dsActionPrid, dsActionNext, dsActionSpecific + } + STATUS current + DESCRIPTION + "The Action Group defines the objects used in + describing a generic action element." + ::= { dsPolicyPibGroups 15 } + +dsPibDscpMarkActGroup OBJECT-GROUP + OBJECTS { + dsDscpMarkActPrid, dsDscpMarkActDscp + } + STATUS current + DESCRIPTION + "The DSCP Mark Action Group defines the objects used + in describing a DSCP Marking Action element." + ::= { dsPolicyPibGroups 16 } + +dsPibAlgDropGroup OBJECT-GROUP + OBJECTS { + dsAlgDropPrid, dsAlgDropType, dsAlgDropNext, + dsAlgDropQMeasure, dsAlgDropQThreshold, + dsAlgDropSpecific + } + STATUS current + DESCRIPTION + "The Algorithmic Drop Group contains the objects that + describe algorithmic dropper operation and configura- + tion." + ::= { dsPolicyPibGroups 17 } + +dsPibMQAlgDropGroup OBJECT-GROUP + OBJECTS { + dsMQAlgDropExceedNext + } + STATUS current + DESCRIPTION + "The Multiple Queue Measured Algorithmic Drop Group + contains the objects that describe multiple queue + + + + measured algorithmic dropper operation and configuration." + ::= { dsPolicyPibGroups 18 } + +dsPibRandomDropGroup OBJECT-GROUP + OBJECTS { + dsRandomDropPrid, + dsRandomDropMinThreshBytes, + dsRandomDropMinThreshPkts, + dsRandomDropMaxThreshBytes, + dsRandomDropMaxThreshPkts, + dsRandomDropProbMax, + dsRandomDropWeight, + dsRandomDropSamplingRate + } + STATUS current + DESCRIPTION + "The Random Drop Group augments the Algorithmic Drop Group + for random dropper operation and configuration." + ::= { dsPolicyPibGroups 19 } + +dsPibQGroup OBJECT-GROUP + OBJECTS { + dsQPrid, dsQNext, dsQMinRate, dsQMaxRate + } + STATUS current + DESCRIPTION + "The Queue Group contains the objects that describe + an interface type's queues." + ::= { dsPolicyPibGroups 20 } + +dsPibSchedulerGroup OBJECT-GROUP + OBJECTS { + dsSchedulerPrid, dsSchedulerNext, dsSchedulerMethod, + dsSchedulerMinRate, dsSchedulerMaxRate + } + STATUS current + DESCRIPTION + "The Scheduler Group contains the objects that + describe packet schedulers on interface types." + ::= { dsPolicyPibGroups 21 } + +dsPibMinRateGroup OBJECT-GROUP + OBJECTS { + dsMinRatePrid, dsMinRatePriority, + dsMinRateAbsolute, dsMinRateRelative + } + STATUS current + DESCRIPTION + + + + "The Minimum Rate Group contains the objects + that describe packet schedulers' parameters on interface + types." + ::= { dsPolicyPibGroups 22 } + +dsPibMaxRateGroup OBJECT-GROUP + OBJECTS { + dsMaxRatePrid, dsMaxRateId, dsMaxRateLevel, + dsMaxRateAbsolute, dsMaxRateRelative, + dsMaxRateThreshold + } + STATUS current + DESCRIPTION + "The Maximum Rate Group contains the objects + that describe packet schedulers' parameters on interface + types." + ::= { dsPolicyPibGroups 23 } + +END diff --git a/pibs/ietf/FRAMEWORK-FEEDBACK-PIB b/pibs/ietf/FRAMEWORK-FEEDBACK-PIB new file mode 100644 index 0000000..2fdb990 --- /dev/null +++ b/pibs/ietf/FRAMEWORK-FEEDBACK-PIB @@ -0,0 +1,1013 @@ +FRAMEWORK-FEEDBACK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + pib, Unsigned32, Unsigned64, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, MODULE-COMPLIANCE, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, Prid, + TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + PrcIdentifierOid, PrcIdentifierOidOrZero + FROM FRAMEWORK-TC-PIB + frwkRoleComboEntry + FROM FRAMEWORK-PIB + InterfaceIndex + FROM IF-MIB; + + frwkFeedbackPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200307140000Z" -- 14 July 2003 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "IETF RAP WG + Email: rap@ops.ietf.org + + Diana Rawlins + MCI + 400 International Parkway + Richardson, Texas 75081 + Phone: 972-729-4071 + Email: Diana.Rawlins@mci.com + + + + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + + Martin Bokaemper + Juniper Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@juniper.net + + Dinesh G Dutt + Cisco Systems, Inc. + 170 Tasman Dr. + San Jose, CA 95134-1706 + Phone: 408-527-0955 + Email: ddutt@cisco.com" + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies. + + Copyright (C) The Internet Society (2003). This version + of this PIB module is part of RFC 3571; see the RFC + itself for full legal notices." + REVISION "200307140000Z" + DESCRIPTION + "Initial version, published in RFC 3571." + + ::= { pib 5 } + +-- +-- Textual Conventions +-- + +Usage32 ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "The Usage32 type represents a non-negative integer + which monotonically increases. + Usage32 initial value is 0 and the object-type using + Usage32 needs to specify when it is initialized. + + The Usage32 type is intended to reflect the absolute + number of counted events, so that even a new PDP + after a COPS reconnect can use the value directly. + + If there is the possibility that the maximum Usage32 + value of 2^32-1 is exceeded during the lifetime + of the Usage32 object, the larger Usage64 type + should be used. + + If conditions other than the reset of the COPS + subsystem exist that disrupt the monotonic + characteristics of Usage32, these conditions and a + method how to detect their presence should be + specified in the description of the object-type using + Usage32 or its enclosing object-types (e.g. the + Entry or Table object-type of the Usage32 + object-type). + + Whenever the monotonic increase of Usage32 is violated, + it should be reset to 0 and the fact that this occurred + should be indicated through an appropriate mechanism, + for example a corresponding object of type TimeStamp + or TimeAndDate." + SYNTAX Unsigned32 + +Usage64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Usage64 type represents a non-negative integer + which monotonically increases. + Usage64 initial value is 0 and the object-type using + Usage64 needs to specify when it is initialized. + + The Usage64 type is intended to reflect the absolute + number of counted events, so that even a new PDP + after a COPS reconnect can use the value directly. + + The lifetime of the Usage64 object should be defined + in a way that ensures the maximum Usage64 value of + 2^64-1 is never exceeded. + + If conditions other than the reset of the COPS + + + + subsystem exist that disrupt the monotonic + characteristics of Usage64, these conditions and a + method how to detect their presence should be + specified in the description of the object-type using + Usage64 or its enclosing object-types (e.g. the + Entry or Table object-type of the Usage64 + object-type). + + Whenever the monotonic increase of Usage64 is violated, + it should be reset to 0 and the fact that this occurred + should be indicated through an appropriate mechanism, + for example a corresponding object of type TimeStamp + or TimeAndDate." + SYNTAX Unsigned64 + +-- +-- The feedback report group +-- + +frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 1 } + +-- +-- Feedback Action Table +-- + +frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class represents commands that the PDP sends to + suspend, resume or solicit collection or reporting of + usage data." + + ::= { frwkFeedbackGroupClasses 1} + +frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "Each frwkFeedbackActionEntry represents a command from + the PDP. FrwkFeedbackActionIndicator specifies the + command itself while frwkFeedbackActionSpecificPri + indicates if all frwkFeedbackLink objects in the system + are affected by the command, or just the set that is + referenced by frwkFeedbackActionList." + + + + + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + +FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri TruthValue, + frwkFeedbackActionList TagReferenceId + } + +frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackAction class." + + ::= { frwkFeedbackActionEntry 1} + +frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + suspendMonitoringAndReports(1), + suspendReports(2), + resume(3), + solicitReport(4) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via COPS accounting type report + messages. + The enumeration values are: + (1) suspendMonitoringAndReports + (2) suspendReports + (3) resume + (4) solicitReport " + + ::= { frwkFeedbackActionEntry 2 } + +frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionList attribute should be ignored, + and the action applied to all policies. A value of + 1 indicates that the action entry has a specific + + + + list of policies to which it is to be applied." + ::= { frwkFeedbackActionEntry 3} + +frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { frwkFeedbackActionListTag } + STATUS current + DESCRIPTION + "Identifies a group of frwkFeedbackLink instances + that this action should affect. The group is + identified through a tag reference in the + frwkFeedbackList class." + ::= { frwkFeedbackActionEntry 4} + +-- +-- Feedback Action List Table +-- + +frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines groups of linkage instances. + Groups can be referenced by commands sent by the + PDP in a frwkFeedbackActionEntry -in this case the + command affects all linkage instances that are part + of the group. + A group can be referred to by its tag stored in + frwkFeedbackActionListTag." + ::= { frwkFeedbackGroupClasses 2} + +frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "Each instance associates a linkage instance with a + specific ActionListGroup." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListTag, + frwkFeedbackActionListRefID + } + ::= { frwkFeedbackActionListTable 1} + +FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceId, + frwkFeedbackActionListTag TagId, + + + + frwkFeedbackActionListRefID ReferenceId + } + +frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + +frwkFeedbackActionListTag OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Identifies a group of linkage instances that can + be referenced from the Action class." + + ::= { frwkFeedbackActionListEntry 2 } + +frwkFeedbackActionListRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "A frwkFeedbackLink instance that is referred to + by this ReferenceId becomes part of the group, + that is identified by the + frwkFeedbackActionListTag." + + ::= { frwkFeedbackActionListEntry 3 } + +-- +-- The Feedback Link Capability Table +-- + +frwkFeedbackLinkCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Instances of the frwkFeedbackLink class reference + instances of selection and threshold classes and a + usage class. + This class allows the PEP to communicate valid + combinations of these three classes to the PDP." + ::= { frwkFeedbackGroupClasses 3} + + + +frwkFeedbackLinkCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold classes for feedback." + PIB-INDEX { frwkFeedbackLinkCapsId } + UNIQUENESS { + frwkFeedbackLinkCapsSelection, + frwkFeedbackLinkCapsUsage, + frwkFeedbackLinkCapsThreshold + } + + ::= {frwkFeedbackLinkCapsTable 1} + +FrwkFeedbackLinkCapsEntry ::= SEQUENCE { + frwkFeedbackLinkCapsId InstanceId, + frwkFeedbackLinkCapsSelection PrcIdentifierOid, + frwkFeedbackLinkCapsUsage PrcIdentifierOid, + frwkFeedbackLinkCapsThreshold PrcIdentifierOidOrZero +} + +frwkFeedbackLinkCapsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkCaps class." + ::= { frwkFeedbackLinkCapsEntry 1} + +frwkFeedbackLinkCapsSelection OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of a class that is supported by the + device for feedback selection in combination with the + usage and threshold classes referenced in this + instance." + ::= { frwkFeedbackLinkCapsEntry 2} + +frwkFeedbackLinkCapsUsage OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of the usage class that is supported by + the PEP in combination with the selection and threshold + classes referenced in this instance." + + + + ::= { frwkFeedbackLinkCapsEntry 3} + + +frwkFeedbackLinkCapsThreshold OBJECT-TYPE + SYNTAX PrcIdentifierOidOrZero + STATUS current + DESCRIPTION + "The identifier of the threshold class that is + supported by the PEP in combination with the selection + and usage classes referenced in this instance. + 0.0 is used if this combination does not allow a + threshold." + ::= { frwkFeedbackLinkCapsEntry 4} + +-- +-- The Feedback Report Linkage Table +-- + +frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + +frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX { frwkFeedbackLinkId } + UNIQUENESS {frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + +FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceId, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage PrcIdentifierOid, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + + + +} + +frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + +frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Policy Class instance as the monitoring + point, or the PRID of the selection criteria instance that + defines the conditions for monitoring, to be use by the + PEP for usage reporting." + + ::= { frwkFeedbackLinkEntry 2} + +frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of the usage class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + +frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + +frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a threshold class instance. This instance + specifies the threshold values for the usage policy." + + + + ::= { frwkFeedbackLinkEntry 5} + +frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2) + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the 'periodic' flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the 'periodic' flag is not set, reports will only be + generated when solicited by the PDP. + The 'threshold' and 'changeOnly' flags make the + periodic reports conditional - these flags only make + sense in combination with the 'periodic' flag." + + ::= { frwkFeedbackLinkEntry 6} + +-- +-- The Threshold class that accompanies the above Usage PRCs +-- + +frwkFeedbackTrafficThresTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficTable, frwkFeedbackIfTrafficTable + and other similar usage classes. + + The usage object is considered to match the threshold + condition if at least one of the packet or byte + threshold conditions match. + + The byte and packet thresholds are considered to + match, if the threshold is present (not ASN1 NULL) + + + + and the corresponding usage value exceeds the + threshold." + + ::= { frwkFeedbackGroupClasses 5} + +frwkFeedbackTrafficThresEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresId} + + ::= {frwkFeedbackTrafficThresTable 1} + +FrwkFeedbackTrafficThresEntry ::= SEQUENCE { + frwkFeedbackTrafficThresId InstanceId, + frwkFeedbackTrafficThresPackets Unsigned64, + frwkFeedbackTrafficThresBytes Unsigned64 +} + +frwkFeedbackTrafficThresId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficThresEntry 1 } + +frwkFeedbackTrafficThresPackets OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + matched or exceeded to trigger a report in the + next reporting interval." + ::= { frwkFeedbackTrafficThresEntry 2 } + +frwkFeedbackTrafficThresBytes OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next reporting + interval." + ::= { frwkFeedbackTrafficThresEntry 3 } + + +-- + + + +-- All actual usage classes are in the separate +-- frwkFeedbackUsageClasses group +-- + +frwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 2 } + + +-- +-- The generic traffic (byte & packet count) usage class +-- + +frwkFeedbackTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + +frwkFeedbackTrafficEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficId} + UNIQUENESS { frwkFeedbackTrafficLinkRefID } + + ::= {frwkFeedbackTrafficTable 1} + +FrwkFeedbackTrafficEntry ::= SEQUENCE { + frwkFeedbackTrafficId InstanceId, + frwkFeedbackTrafficLinkRefID ReferenceId, + frwkFeedbackTrafficPacketCount Usage64, + frwkFeedbackTrafficByteCount Usage64 + +} + +frwkFeedbackTrafficId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + + + + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficEntry 1 } + +frwkFeedbackTrafficLinkRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the Linkage policy instance used + to base this usage policy instance upon." + + ::= { frwkFeedbackTrafficEntry 2 } + +frwkFeedbackTrafficPacketCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackTraffic instance is created, for example + triggered through the creation of a frwkFeedbackLink + instance." + + ::= {frwkFeedbackTrafficEntry 3} + +frwkFeedbackTrafficByteCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackTraffic instance is created." + ::= { frwkFeedbackTrafficEntry 4} + + + +-- +-- The traffic usage class, qualified for an interface +-- +frwkFeedbackIfTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage class similar to the basic Traffic class that + also contains a reference to an interface index. This + + + + class should be used with an underspecified selection + criteria entry from the frwkRoleComboTable that matches + an element that can be assigned to multiple interface + indices. The interface field can be used to associate + the instances of this class with the specific element's + assignment." + ::= { frwkFeedbackUsageClasses 2 } + +frwkFeedbackIfTrafficEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficId} + UNIQUENESS { frwkFeedbackIfTrafficLinkRefID, + frwkFeedbackIfTrafficIfIndex } + + ::= {frwkFeedbackIfTrafficTable 1} + +FrwkFeedbackIfTrafficEntry ::= SEQUENCE { + frwkFeedbackIfTrafficId InstanceId, + frwkFeedbackIfTrafficLinkRefID ReferenceId, + frwkFeedbackIfTrafficIfIndex InterfaceIndex, + frwkFeedbackIfTrafficPacketCount Usage64, + frwkFeedbackIfTrafficByteCount Usage64 + +} + +frwkFeedbackIfTrafficId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficEntry 1 } + +frwkFeedbackIfTrafficLinkRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the Linkage policy instance used + to base this usage policy instance upon." + ::= { frwkFeedbackIfTrafficEntry 2 } + +frwkFeedbackIfTrafficIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + STATUS current + DESCRIPTION + "The value of this attribute is the ifIndex which is + associated with the specified RoleCombination and + interface capability set name." + + ::= { frwkFeedbackIfTrafficEntry 3 } + +frwkFeedbackIfTrafficPacketCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackIfTraffic instance is created." + ::= { frwkFeedbackIfTrafficEntry 4 } + +frwkFeedbackIfTrafficByteCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackIfTraffic instance is created." + ::= { frwkFeedbackIfTrafficEntry 5 } + + +-- +-- All Selection classes are in the separate +-- FrwkFeedbackSelectionClasses group +-- + +frwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 3 } + +-- +-- The Role Combination Filter Selection Table +-- + +frwkFeedbackRoleFilterSelTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackRoleFilterSelEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A selection class that defines selection of objects + for monitoring based on the role combination, + capability set and a filter." + ::= { frwkFeedbackSelectionClasses 1 } + + + +frwkFeedbackRoleFilterSelEntry OBJECT-TYPE + SYNTAX FrwkFeedbackRoleFilterSelEntry + STATUS current + DESCRIPTION + "Each instance selects a filter on multiple interfaces + that share the same frwkRoleCombo instance." + PIB-INDEX { frwkFeedbackRoleFilterSelId} + UNIQUENESS { frwkFeedbackRoleFilterSelRCombo, + frwkFeedbackRoleFilterSelFilter + } + + ::= {frwkFeedbackRoleFilterSelTable 1} + +FrwkFeedbackRoleFilterSelEntry ::= SEQUENCE { + frwkFeedbackRoleFilterSelId InstanceId, + frwkFeedbackRoleFilterSelRCombo ReferenceId, + frwkFeedbackRoleFilterSelFilter Prid +} + +frwkFeedbackRoleFilterSelId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackRoleFilterSelEntry 1 } + +frwkFeedbackRoleFilterSelRCombo OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkRoleComboEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the frwkRoleComboTable policy + instance used for selection." + ::= { frwkFeedbackRoleFilterSelEntry 2 } + +frwkFeedbackRoleFilterSelFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The identifier of a filter instance. Valid classes + are the subclasses of frwkBaseFilter: + - frwkIpFilter + - frwk802Filter + - frwkILabelFilter" + ::= { frwkFeedbackRoleFilterSelEntry 3 } + + + + + +-- +-- Compliance Section +-- + +frwkFeedbackPibConformance + OBJECT IDENTIFIER ::= { frwkFeedbackPib 4 } + +frwkFeedbackPibCompliances + OBJECT IDENTIFIER ::= { frwkFeedbackPibConformance 1 } + +frwkFeedbackPibGroups + OBJECT IDENTIFIER ::= { frwkFeedbackPibConformance 2 } + + +frwkFeedbackPibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the feedback + framework PIB" + + MODULE -- this module + MANDATORY-GROUPS { frwkFeedbackLinkCapsGroup, + frwkFeedbackLinkGroup, + frwkFeedbackActionGroup } + + GROUP frwkFeedbackActionListGroup + DESCRIPTION + "The frwkFeedbackActionListGroup is mandatory if + actions on subsets linkEntries are to be + supported." + + GROUP frwkFeedbackTrafficGroup + DESCRIPTION + "The frwkFeedbackTrafficGroup is mandatory if + monitoring of traffic data is to be supported." + + GROUP frwkFeedbackTrafficThresGroup + DESCRIPTION + "The frwkFeedbackTrafficThresGroup is mandatory + if conditional reporting of traffic usage + thresholds is to be supported." + + GROUP frwkFeedbackIfTrafficGroup + DESCRIPTION + "The frwkFeedbackIfTrafficGroup is mandatory if + per-interface usage collection of traffic data is + to be supported." + + + + + GROUP frwkFeedbackRoleFilterSelGroup + DESCRIPTION + "The frwkFeedbackRoleFilterSelGroup is mandatory + if monitoring of filters referenced through the + frwkRoleCombo class is to be supported." + + ::= { frwkFeedbackPibCompliances 1 } + + frwkFeedbackLinkCapsGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackLinkCapsId, + frwkFeedbackLinkCapsSelection, + frwkFeedbackLinkCapsUsage, + frwkFeedbackLinkCapsThreshold } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackLinkCapsTable." + + ::= { frwkFeedbackPibGroups 1 } + + frwkFeedbackLinkGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage, + frwkFeedbackLinkInterval, + frwkFeedbackLinkThreshold, + frwkFeedbackLinkFlags } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackLinkTable." + + ::= { frwkFeedbackPibGroups 2 } + + frwkFeedbackActionGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackActionId, + frwkFeedbackActionIndicator, + frwkFeedbackActionSpecificPri, + frwkFeedbackActionList } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackActionTable." + + ::= { frwkFeedbackPibGroups 3 } + + frwkFeedbackActionListGroup OBJECT-GROUP + OBJECTS { + + + + frwkFeedbackActionListId, + frwkFeedbackActionListTag, + frwkFeedbackActionListRefID } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackActionListTable." + + ::= { frwkFeedbackPibGroups 4 } + + frwkFeedbackTrafficGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackTrafficId, + frwkFeedbackTrafficLinkRefID, + frwkFeedbackTrafficPacketCount, + frwkFeedbackTrafficByteCount } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackTrafficTable." + + ::= { frwkFeedbackPibGroups 5 } + + frwkFeedbackTrafficThresGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackTrafficThresId, + frwkFeedbackTrafficThresPackets, + frwkFeedbackTrafficThresBytes } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackTrafficThresTable." + + ::= { frwkFeedbackPibGroups 6 } + + frwkFeedbackIfTrafficGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackIfTrafficId, + frwkFeedbackIfTrafficLinkRefID, + frwkFeedbackIfTrafficIfIndex, + frwkFeedbackIfTrafficPacketCount, + frwkFeedbackIfTrafficByteCount } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackIfTrafficTable." + + ::= { frwkFeedbackPibGroups 7 } + + frwkFeedbackRoleFilterSelGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackRoleFilterSelId, + + + + frwkFeedbackRoleFilterSelRCombo, + frwkFeedbackRoleFilterSelFilter } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackRoleFilterSelTable." + + ::= { frwkFeedbackPibGroups 8 } + +END diff --git a/pibs/ietf/FRAMEWORK-PIB b/pibs/ietf/FRAMEWORK-PIB new file mode 100644 index 0000000..a1209a9 --- /dev/null +++ b/pibs/ietf/FRAMEWORK-PIB @@ -0,0 +1,2278 @@ + FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifierOid, AttrIdentifierOrZero, + ClientType, ClientHandle + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType, + InetAddressPrefixLength, InetPortNumber + FROM INET-ADDRESS-MIB + InterfaceIndex + FROM IF-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC + TruthValue, PhysAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + frameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200302130000Z" -- 13 Feb 2003 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + + + + Ravi Sahita + Intel Labs. + 2111 NE 25th Ave. + + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com + + RAP WG Mailing list: rap@ops.ietf.org" + + DESCRIPTION + "A PIB module containing the base set of PRCs that + provide support for management of multiple PIB contexts, + association of roles to device capabilities and other + reusable PRCs. PEPs are required for to implement this + PIB if the above features are desired. This PIB defines + PRCs applicable to 'all' subject-categories. + + Copyright (C) The Internet Society (2003). This version + of this PIB module is part of RFC 3318; see the RFC + itself for full legal notices." + REVISION "200302130000Z" -- 13 Feb 2003 + DESCRIPTION + "Initial version, published in RFC 3318." + + ::= { pib 2 } + + -- + -- The root OID for PRCs in the Framework PIB + -- + + frwkBasePibClasses + OBJECT IDENTIFIER ::= { frameworkPib 1 } + + -- + -- PRC Support Table + -- + + + + + + + + + + + + + + frwkPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkPrcSupportEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of + these PRCs, the device supports. + + All install and install-notify PRCs supported by the device + must be represented in this PRC. Notify PRCs may be + represented for informational purposes." + + ::= { frwkBasePibClasses 1 } + + frwkPrcSupportEntry OBJECT-TYPE + SYNTAX FrwkPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the frwkPrcSupport class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { frwkPrcSupportPrid } + UNIQUENESS { frwkPrcSupportSupportedPrc } + + ::= { frwkPrcSupportTable 1 } + + FrwkPrcSupportEntry ::= SEQUENCE { + frwkPrcSupportPrid InstanceId, + frwkPrcSupportSupportedPrc PrcIdentifierOid, + frwkPrcSupportSupportedAttrs OCTET STRING + } + + frwkPrcSupportPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkPrcSupport class." + + ::= { frwkPrcSupportEntry 1 } + + + + + + + frwkPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. The value is the + OID of the Entry object of the PRC definition. The Entry + Object definition of a PRC has an OID with value XxxTable.1 + Where, XxxTable is the OID assigned to the PRC Table + Object definition. There may not be more than one instance + of the frwkPrcSupport class with the same value of + frwkPrcSupportSupportedPrc." + + ::= { frwkPrcSupportEntry 2 } + + frwkPrcSupportSupportedAttrs OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the frwkPrcSupportSupportedPrc + object. + + Each bit of this bit string corresponds to a class + attribute, with the most significant bit of the i-th octet + of this octet string corresponding to the (8*i - 7)-th + attribute, and the least significant bit of the i-th octet + corresponding to the (8*i)-th class attribute. Each bit + specifies whether or not the corresponding class attribute + is currently supported, with a '1' indicating support and a + '0' indicating no support. + + If the value of this bit string is N bits long and there are + more than N class attributes then the bit string is + logically extended with 0's to the required length. + On the other hand, If the PDP receives a bit string of + length N and there are less that N class attributes then the + PDP should ignore the extra bits in the bit string, i.e., + assume those attributes are unsupported." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, section + 2.2.1." + + ::= { frwkPrcSupportEntry 3 } + + -- + -- PIB Incarnation Table + -- + + + + + frwkPibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkPibIncarnationEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This PRC contains a single PRovisioning Instance per + installed context that identifies the current incarnation + of the PIB and the PDP or network manager that installed + this incarnation. The instance of this PRC is reported to + the PDP in the REQ message so that the PDP can (attempt to) + ascertain the current state of the PIB. A network manager + may use the instance to determine the state of the device." + + ::= { frwkBasePibClasses 2 } + + frwkPibIncarnationEntry OBJECT-TYPE + SYNTAX FrwkPibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the frwkPibIncarnation class. Only + one instance of this PRC is ever instantiated per context" + + PIB-INDEX { frwkPibIncarnationPrid } + + ::= { frwkPibIncarnationTable 1 } + + FrwkPibIncarnationEntry ::= SEQUENCE { + frwkPibIncarnationPrid InstanceId, + frwkPibIncarnationName SnmpAdminString, + frwkPibIncarnationId OCTET STRING, + frwkPibIncarnationLongevity INTEGER, + frwkPibIncarnationTtl Unsigned32, + frwkPibIncarnationInCtxtSet TruthValue, + frwkPibIncarnationActive TruthValue, + frwkPibIncarnationFullState TruthValue + } + + frwkPibIncarnationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this PRC." + + ::= { frwkPibIncarnationEntry 1 } + + + + + + + + frwkPibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + STATUS current + DESCRIPTION + "The name of the PDP that installed the current incarnation + of the PIB into the device. A zero-length string value for + this type implies the PDP has not assigned this type any + value. By default, it is the zero length string." + + ::= { frwkPibIncarnationEntry 2 } + + frwkPibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. A zero-length string value for + this type implies the PDP has not assigned this type any + value. By default, it is the zero-length string." + + ::= { frwkPibIncarnationEntry 3 } + + frwkPibIncarnationLongevity OBJECT-TYPE + SYNTAX INTEGER { + expireNever(1), + expireImmediate(2), + expireOnTimeout(3) + } + STATUS current + DESCRIPTION + "This attribute controls what the PEP does with the + downloaded policy on a Client Close message or a loss of + connection to the PDP. + + If set to expireNever, the PEP continues to operate with the + installed policy indefinitely. If set to expireImmediate, + the PEP immediately expires the policy obtained from the PDP + and installs policy from local configuration. If set to + expireOnTimeout, the PEP continues to operate with the + policy installed by the PDP for a period of time specified + by frwkPibIncarnationTtl. After this time (and it has not + reconnected to the original or new PDP) the PEP expires this + policy and reverts to local configuration. + + For all cases, it is the responsibility of the PDP to check + the incarnation and download new policy, if necessary, on a + reconnect. On receiving a Remove-State for the active + + + + context, this attribute value MUST be ignored and the PEP + should expire the policy in that active context immediately. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + ::= { frwkPibIncarnationEntry 4 } + + frwkPibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + STATUS current + DESCRIPTION + "The number of seconds after a Client Close or TCP timeout + for which the PEP continues to enforce the policy in the + PIB. After this interval, the PIB is considered expired and + the device no longer enforces the policy installed in the + PIB. + + This attribute is only meaningful if + frwkPibIncarnationLongevity is set to expireOnTimeout." + + ::= { frwkPibIncarnationEntry 5 } + + frwkPibIncarnationInCtxtSet OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "When the PDP installs a PRI with this flag set to 'true' it + implies this context belongs to the set of contexts out of + which at the most one context can be active at a given time. + If this attribute is set to 'false' this context is one of + the outsourcing (simultaneous active) contexts on the PEP. + + This attribute is 'true' for all contexts belong to the set + of configuration contexts. Within the configuration context + set, one context can be active identified by the + frwkPibIncarnationActive attribute." + REFERENCE + "TruthValue Textual Convention, defined in RFC 2579." + ::= { frwkPibIncarnationEntry 6 } + + + + + + + + + + frwkPibIncarnationActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "When the PDP installs a PRI on the PEP with this attribute + set to 'true' and if this context belongs to the + 'configuration contexts' set, i.e., the + frwkPibIncarnationInCtxtSet is set to 'true', then the PIB + instance to which this PRI belongs must become the active + PIB instance. In this case, the previous active instance + from this set MUST become inactive and the + frwkPibIncarnationActive attribute in that PIB instance MUST + be set to 'false'. + + When the PDP installs an attribute frwkPibIncarnationActive + on the PEP that is 'true' in one PIB instance and if the + context belongs to the 'configuration contexts' set, the PEP + must ensure, re-setting the attribute if necessary, that the + frwkPibIncarnationActive attribute is 'false' in all other + contexts which belong to the 'configuration contexts' set." + + ::= { frwkPibIncarnationEntry 7 } + + frwkPibIncarnationFullState OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This attribute is interpreted only when sent in a COPS + request message from the PEP to the PDP. It does not have + any meaning when sent from the PDP to the PEP. + + If this attribute is set to 'true' by the PEP, then the + request that the PEP sends to the PDP must be interpreted as + the complete configuration request for the PEP. The PDP must + in this case refresh the request information for the + handle that the request containing this PRI was received on. + If this attribute is set to 'false', then the + request PRIs sent in the request must be interpreted as + updates to the previous request PRIs sent using that handle. + See section 3.3 for details on updating request state + information." + REFERENCE + "RFC 3318 Section 2.3" + + ::= { frwkPibIncarnationEntry 8 } + + -- + -- Device Identification Table + + + + -- + + frwkDeviceIdTable OBJECT-TYPE + + SYNTAX SEQUENCE OF FrwkDeviceIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This PRC contains a single PRovisioning Instance that + contains general purpose device-specific information that is + used to facilitate efficient policy communication by a PDP. + The instance of this PRC is reported to the PDP in a COPS + request message so that the PDP can take into account + certain device characteristics during policy installation." + + ::= { frwkBasePibClasses 3 } + + frwkDeviceIdEntry OBJECT-TYPE + SYNTAX FrwkDeviceIdEntry + STATUS current + DESCRIPTION + "An instance of the frwkDeviceId class. Only one instance of + this PRC is ever instantiated." + + PIB-INDEX { frwkDeviceIdPrid } + + ::= { frwkDeviceIdTable 1 } + + FrwkDeviceIdEntry ::= SEQUENCE { + frwkDeviceIdPrid InstanceId, + frwkDeviceIdDescr SnmpAdminString, + frwkDeviceIdMaxMsg Unsigned32, + frwkDeviceIdMaxContexts Unsigned32 + } + + frwkDeviceIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this PRC." + + ::= { frwkDeviceIdEntry 1 } + + + + + + + + + + frwkDeviceIdDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..255)) + STATUS current + DESCRIPTION + "A textual description of the PEP. This value should include + the name and version identification of the PEP's hardware + and software." + + ::= { frwkDeviceIdEntry 2 } + + frwkDeviceIdMaxMsg OBJECT-TYPE + SYNTAX Unsigned32 (64..4294967295) + UNITS "octets" + STATUS current + DESCRIPTION + "The maximum COPS-PR message size, in octets, that the + device is capable of processing. Received messages with a + size in excess of this value must cause the PEP to return an + error to the PDP containing the global error code + 'maxMsgSizeExceeded'. This is an additional error-avoidance + mechanism to allow the administrator to know the maximum + message size supported so that they have the ability to + control the message size of messages sent to the device. + This attribute must have a non-zero value. The device should + send the MAX value for Unsigned32 for this attribute if it + not defined." + DEFVAL { 4294967295 } + + ::= { frwkDeviceIdEntry 3 } + + frwkDeviceIdMaxContexts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "contexts" + STATUS current + DESCRIPTION + "The maximum number of unique contexts supported by + the device. This is an additional error-avoidance mechanism + to allow the administrators to have the ability to know the + maximum number of contexts supported so that they can + control the number of configuration contexts they install on + the device. This attribute must have a non-zero value. The + device should send the MAX value for Unsigned32 for this + attribute if it not defined." + DEFVAL { 4294967295 } + + ::= { frwkDeviceIdEntry 4 } + + -- + + + + -- Component Limitations Table + -- + + frwkCompLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkCompLimitsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This PRC supports the ability to export information + detailing PRC/attribute implementation limitations to the + policy management system. Instances of this PRC apply only + for PRCs with access type 'install' or 'install-notify'. + + Each instance of this PRC identifies a PRovisioning Class + or attribute and a limitation related to the implementation + of the class/attribute in the device. Additional information + providing guidance related to the limitation may also be + present. These PRIs are sent to the PDP to indicate which + PRCs or PRC attributes the device supports in a restricted + manner." + + ::= { frwkBasePibClasses 4 } + + frwkCompLimitsEntry OBJECT-TYPE + SYNTAX FrwkCompLimitsEntry + STATUS current + DESCRIPTION + "An instance of the frwkCompLimits class that identifies + a PRC or PRC attribute and a limitation related to the PRC + or PRC attribute implementation supported by the device. + COPS-PR lists the error codes that MUST be returned (if + applicable)for policy installation that don't abide by the + restrictions indicated by the limitations exported. [SPPI] + defines an INSTALL-ERRORS clause that allows PIB designers + to define PRC specific error codes that can be returned for + policy installation. This allows efficient debugging of PIB + implementations." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + PIB-INDEX { frwkCompLimitsPrid } + UNIQUENESS { frwkCompLimitsComponent, + frwkCompLimitsAttrPos, + frwkCompLimitsNegation, + frwkCompLimitsType, + frwkCompLimitsSubType, + frwkCompLimitsGuidance } + + + + + ::= { frwkCompLimitsTable 1 } + + FrwkCompLimitsEntry ::= SEQUENCE { + frwkCompLimitsPrid InstanceId, + frwkCompLimitsComponent PrcIdentifierOid, + frwkCompLimitsAttrPos AttrIdentifierOrZero, + frwkCompLimitsNegation TruthValue, + frwkCompLimitsType INTEGER, + frwkCompLimitsSubType INTEGER, + frwkCompLimitsGuidance OCTET STRING + } + + frwkCompLimitsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkCompLimits class." + + ::= { frwkCompLimitsEntry 1 } + + frwkCompLimitsComponent OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The value is the OID of a PRC (the table entry) which is + supported in some limited fashion or contains an attribute + that is supported in some limited fashion with regard to + it's definition in the associated PIB module. The same OID + may appear in the table several times, once for each + implementation limitation acknowledged by the device." + + ::= { frwkCompLimitsEntry 2 } + + frwkCompLimitsAttrPos OBJECT-TYPE + SYNTAX AttrIdentifierOrZero + STATUS current + DESCRIPTION + "The relative position of the attribute within the PRC + specified by the frwkCompLimitsComponent. A value of 1 would + represent the first columnar object in the PRC and a value + of N would represent the Nth columnar object in the PRC. A + value of zero (0) indicates that the limit applies to the + PRC itself and not to a specific attribute." + + ::= { frwkCompLimitsEntry 3 } + + + + + + frwkCompLimitsNegation OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A boolean value ,if 'true', negates the component limit + exported." + + ::= { frwkCompLimitsEntry 4 } + + frwkCompLimitsType OBJECT-TYPE + SYNTAX INTEGER { + priSpaceLimited(1), + attrValueSupLimited(2), + attrEnumSupLimited(3), + attrLengthLimited(4), + prcLimitedNotify(5) + } + STATUS current + DESCRIPTION + "A value describing an implementation limitation for the + device related to the PRC or PRC attribute identified by + the frwkCompLimitsComponent and the frwkCompLimitsAttrPos + attributes. + + Values for this object are one of the following: + + priSpaceLimited(1) - No more instances than that specified + by the guidance value may be installed in the given class. + The component identified MUST be a valid PRC. The SubType + used MUST be valueOnly(9). + + attrValueSupLimited(2) - Limited values are acceptable for + the identified component. The component identified MUST be a + valid PRC attribute. The guidance OCTET STRING will be + decoded according to the attribute type. + + attrEnumSupLimited(3) - Limited enumeration values are legal + for the identified component. The attribute identified MUST + be a valid enum type. + + attrLengthLimited(4) - The length of the specified + value for the identified component is limited. The component + identified MUST be a valid PRC attribute of base-type OCTET + STRING. + + prcLimitedNotify (5) - The component is currently limited + for use by request or report messages prohibiting decision + installation. The component identified must be a valid PRC." + + + + ::= { frwkCompLimitsEntry 5 } + + frwkCompLimitsSubType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lengthMin(2), + lengthMax(3), + rangeMin(4), + rangeMax(5), + enumMin(6), + enumMax(7), + enumOnly(8), + valueOnly(9), + bitMask(10) + } + STATUS current + DESCRIPTION + "This object indicates the type of guidance related + to the noted limitation (as indicated by the + frwkCompLimitsType attribute) that is provided + in the frwkCompLimitsGuidance attribute. + + A value of 'none(1)' means that no additional + guidance is provided for the noted limitation type. + + A value of 'lengthMin(2)' means that the guidance + attribute provides data related to the minimum + acceptable length for the value of the identified + component. A corresponding class instance + specifying the 'lengthMax(3)' value is required + in conjunction with this sub-type. + + A value of 'lengthMax(3)' means that the guidance + attribute provides data related to the maximum + acceptable length for the value of the identified + component. A corresponding class instance + specifying the 'lengthMin(2)' value is required + in conjunction with this sub-type. + + A value of 'rangeMin(4)' means that the guidance + attribute provides data related to the lower bound + of the range for the value of the identified + component. A corresponding class instance + specifying the 'rangeMax(5)' value is required + in conjunction with this sub-type. + + A value of 'rangeMax(5)' means that the guidance + attribute provides data related to the upper bound + + + + of the range for the value of the identified + component. A corresponding class instance + specifying the 'rangeMin(4)' value is required + in conjunction with this sub-type. + + A value of 'enumMin(6)' means that the guidance + attribute provides data related to the lowest + enumeration acceptable for the value of the + identified component. A corresponding + class instance specifying the 'enumMax(7)' + value is required in conjunction with this sub-type. + + A value of 'enumMax(7)' means that the guidance + attribute provides data related to the largest + enumeration acceptable for the value of the + identified component. A corresponding + class instance specifying the 'enumMin(6)' + value is required in conjunction with this sub-type. + + A value of 'enumOnly(8)' means that the guidance + attribute provides data related to a single + enumeration acceptable for the value of the + identified component. + + A value of 'valueOnly(9)' means that the guidance + attribute provides data related to a single + value that is acceptable for the identified + component. + + A value of 'bitMask(10)' means that the guidance + attribute is a bit mask such that all the combinations of + bits set in the bitmask are acceptable values for the + identified component which should be an attribute of type + + 'BITS'. + + For example, an implementation of the frwkIpFilter class may + be limited in several ways, such as address mask, protocol + and Layer 4 port options. These limitations could be + exported using this PRC with the following instances: + + Component Type Sub-Type Guidance + ------------------------------------------------------------ + DstPrefixLength attrValueSupLimited valueOnly 24 + SrcPrefixLength attrValueSupLimited valueOnly 24 + Protocol attrValueSupLimited rangeMin 10 + Protocol attrValueSupLimited rangeMax 20 + + + + + The above entries describe a number of limitations that + may be in effect for the frwkIpFilter class on a given + device. The limitations include restrictions on acceptable + values for certain attributes. + + Also, an implementation of a PRC may be limited in the ways + it can be accessed. For instance, for a fictitious PRC + dscpMapEntry, which has a PIB-ACCESS of 'install-notify': + + Component Type SubType Guidance + ------------------------------------------------------------ + dscpMapEntry prcLimitedNotify none zero-length string." + + ::= { frwkCompLimitsEntry 6 } + + frwkCompLimitsGuidance OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A value used to convey additional information related + to the implementation limitation. Note that a guidance + value will not necessarily be provided for all exported + limitations. If a guidance value is not provided, the + value must be a zero-length string. + + The format of the guidance value, if one is present as + indicated by the frwkCompLimitsSubType attribute, + is described by the following table. Note that the + format of guidance value is dictated by the base-type of + the component whose limitation is being exported, + interpreted in the context of the frwkCompLimitsType and + frwkCompLimitsSubType values. Any other restrictions + (such as size/range/enumerated value) on the guidance + value MUST be complied with according to the definition + of the component for which guidance is being specified. + + Note that numbers are encoded in network byte order. + + Base Type Value + --------- ----- + Unsigned32/Integer32/INTEGER 32-bit value. + Unsigned64/Integer64 64-bit Value. + OCTET STRING octets of data. + OID 32-bit OID components. + BITS Binary octets of length + same as Component specified." + + ::= { frwkCompLimitsEntry 7 } + + + + -- + -- Complete Reference specification table + -- + + frwkReferenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkReferenceEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a reference to a PRI + in a specific PIB context (handle) for a specific client- + type. This table gives the PDP the ability to set up + policies that span installed contexts and the PEP the + ability to reference instances in another, perhaps + configured context. The PEP must send a + 'attrReferenceUnknown' COPS-PR error to the PDP if it + encounters an invalid reference. " + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + + ::= { frwkBasePibClasses 5 } + + frwkReferenceEntry OBJECT-TYPE + SYNTAX FrwkReferenceEntry + STATUS current + DESCRIPTION + "Entry specification for the frwkReferenceTable." + + PIB-INDEX { frwkReferencePrid } + UNIQUENESS { } + + ::= { frwkReferenceTable 1 } + + FrwkReferenceEntry ::= SEQUENCE { + frwkReferencePrid InstanceId, + frwkReferenceClientType ClientType, + frwkReferenceClientHandle ClientHandle, + frwkReferenceInstance Prid + } + + frwkReferencePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkReference class." + + + + + ::= { frwkReferenceEntry 1 } + + frwkReferenceClientType OBJECT-TYPE + SYNTAX ClientType + STATUS current + DESCRIPTION + "Is unused if set to zero else specifies a client-type for + which the reference is to be interpreted. This non-zero + client-type must be activated explicitly via a separate + COPS client-open else this attribute is not valid." + + ::= { frwkReferenceEntry 2 } + + frwkReferenceClientHandle OBJECT-TYPE + SYNTAX ClientHandle + STATUS current + DESCRIPTION + "Must be set to specify a valid client-handle in the scope + of the client-type specified." + + ::= { frwkReferenceEntry 3 } + + frwkReferenceInstance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References a PRI in the context identified by + frwkReferenceClientHandle for client-type identified by + frwkReferenceClientType." + + ::= { frwkReferenceEntry 4 } + + -- + -- Error specification table + -- + + frwkErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkErrorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a class specific + error object. Instances of this PRC are transient, i.e., + instances received in a COPS decision message must not be + maintained by the PEP in its copy of the PIB instances. This + PRC allows a PDP to send error information to the PEP if the + PDP cannot process updates to a Request successfully." + + + + + ::= { frwkBasePibClasses 6 } + + frwkErrorEntry OBJECT-TYPE + SYNTAX FrwkErrorEntry + STATUS current + DESCRIPTION + "Entry specification for the frwkErrorTable." + + PIB-INDEX { frwkErrorPrid } + UNIQUENESS { + frwkErrorCode, + frwkErrorSubCode, + frwkErrorPrc, + frwkErrorInstance + } + + ::= { frwkErrorTable 1 } + + FrwkErrorEntry ::= SEQUENCE { + frwkErrorPrid InstanceId, + frwkErrorCode Unsigned32, + frwkErrorSubCode Unsigned32, + frwkErrorPrc PrcIdentifierOid, + frwkErrorInstance InstanceId + } + + frwkErrorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkError class." + + ::= { frwkErrorEntry 1 } + + frwkErrorCode OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "Error code defined in COPS-PR CPERR object." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + ::= { frwkErrorEntry 2 } + + frwkErrorSubCode OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + + + + DESCRIPTION + "The class-specific error object is used to communicate + errors relating to specific PRCs." + + ::= { frwkErrorEntry 3 } + + frwkErrorPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The PRC due to which the error specified by codes + (frwkErrorCode , frwkErrorSubCode) occurred." + + ::= { frwkErrorEntry 4 } + + frwkErrorInstance OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The PRI of the identified PRC (frwkErrorPrc) due to which + the error specified by codes (frwkErrorCode , + frwkErrorSubCode) occurred. Must be set to zero if unused." + + ::= { frwkErrorEntry 5 } + + -- + -- The device capabilities and role combo classes group + -- + + frwkDeviceCapClasses + OBJECT IDENTIFIER ::= { frameworkPib 2 } + -- + -- Capability Set Table + -- + + frwkCapabilitySetTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkCapabilitySetEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + + "This PRC describes the capability sets that exist on the + interfaces on the device. The capability set is given a + unique name that identifies a set. These capability set + names are used by the PDP to determine policy information to + be associated with interfaces that possess similar sets of + capabilities." + + + + + ::= { frwkDeviceCapClasses 1 } + + frwkCapabilitySetEntry OBJECT-TYPE + SYNTAX FrwkCapabilitySetEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes a particular set of + capabilities and associates a unique name with the set." + + PIB-INDEX { frwkCapabilitySetPrid } + UNIQUENESS { frwkCapabilitySetName, + frwkCapabilitySetCapability } + + ::= { frwkCapabilitySetTable 1 } + + FrwkCapabilitySetEntry ::= SEQUENCE { + frwkCapabilitySetPrid InstanceId, + frwkCapabilitySetName SnmpAdminString, + frwkCapabilitySetCapability Prid + } + + frwkCapabilitySetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the class." + + ::= { frwkCapabilitySetEntry 1 } + + frwkCapabilitySetName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..255)) + STATUS current + DESCRIPTION + "The name for the capability set. This name is the unique + identifier of a set of capabilities. This attribute must not + be assigned a zero-length string." + + ::= { frwkCapabilitySetEntry 2 } + + frwkCapabilitySetCapability OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + + "The complete PRC OID and instance identifier specifying the + capability PRC instance for the interface. This attribute + references a specific instance of a capability table. The + + + + capability table whose instance is referenced must be + defined in the client type specific PIB that this PIB is + used with. The referenced capability instance becomes a part + of the set of capabilities associated with the specified + frwkCapabilitySetName." + + ::= { frwkCapabilitySetEntry 3 } + + -- + -- Interface and Role Combination Tables + -- + + frwkRoleComboTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkRoleComboEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC that may be extended or referenced + to enumerate the role combinations, capability set names + assigned to any interface on a PEP. The identification of + the interface is to be defined by its extensions or + referencing PRCs." + + ::= { frwkDeviceCapClasses 2 } + + frwkRoleComboEntry OBJECT-TYPE + SYNTAX FrwkRoleComboEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes one association of an + interface to a role-combination and capability set name . + Note that an interface can have multiple associations. This + constraint is controlled by the extending or referencing + PRC's uniqueness clause." + + PIB-INDEX { frwkRoleComboPrid } + UNIQUENESS { } + + ::= { frwkRoleComboTable 1 } + + FrwkRoleComboEntry ::= SEQUENCE { + frwkRoleComboPrid InstanceId, + frwkRoleComboRoles RoleCombination, + frwkRoleComboCapSetName SnmpAdminString + } + + frwkRoleComboPrid OBJECT-TYPE + SYNTAX InstanceId + + + + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + + ::= { frwkRoleComboEntry 1 } + + frwkRoleComboRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination assigned to a specific interface." + + ::= { frwkRoleComboEntry 2 } + + frwkRoleComboCapSetName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + STATUS current + DESCRIPTION + "The name of the capability set associated with + the Role Combination specified in frwkRoleComboRoles. If + this is a zero length string it implies the PEP is not + exporting any capability set information for this + RoleCombination. The PDP must then use the RoleCombinations + provided as the only means of assigning policies + If a non-zero length string is specified, the name must + exist in frwkCapabilitySetTable." + + ::= { frwkRoleComboEntry 3 } + + -- + -- Interface, Role Combination association via IfIndex + -- + + frwkIfRoleComboTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkIfRoleComboEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This PRC enumerates the interface to role combination and + frwkRoleComboCapSetName mapping for all policy managed + interfaces of a device. Policy for an interface depends not + only on the capability set of an interface but also on its + roles. This table specifies all the tuples + currently on the device" + + ::= { frwkDeviceCapClasses 3 } + + + + frwkIfRoleComboEntry OBJECT-TYPE + SYNTAX FrwkIfRoleComboEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes the association of + a interface to an capability set name and a role + combination. + Note that a capability set name can have multiple role + combinations assigned to it, but an IfIndex can have only + one role combination associated." + + EXTENDS { frwkRoleComboEntry } + UNIQUENESS { frwkIfRoleComboIfIndex, + frwkRoleComboCapSetName } + + ::= { frwkIfRoleComboTable 1 } + + FrwkIfRoleComboEntry ::= SEQUENCE { + frwkIfRoleComboIfIndex InterfaceIndex + } + + frwkIfRoleComboIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + "The value of this attribute is the ifIndex which is + associated with the specified RoleCombination and interface + capability set name." + + ::= { frwkIfRoleComboEntry 1 } + + -- + -- The Classification classes group + -- + + frwkClassifierClasses + OBJECT IDENTIFIER ::= { frameworkPib 3 } + -- + -- The Base Filter Table + -- + + frwkBaseFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkBaseFilterEntry + PIB-ACCESS install + STATUS current + + + + + + + DESCRIPTION + "The Base Filter class. A packet has to match all + fields in an Filter. Wildcards may be specified for those + fields that are not relevant." + + ::= { frwkClassifierClasses 1 } + + frwkBaseFilterEntry OBJECT-TYPE + SYNTAX FrwkBaseFilterEntry + STATUS current + DESCRIPTION + "An instance of the frwkBaseFilter class." + + PIB-INDEX { frwkBaseFilterPrid } + + ::= { frwkBaseFilterTable 1 } + + FrwkBaseFilterEntry ::= SEQUENCE { + frwkBaseFilterPrid InstanceId, + frwkBaseFilterNegation TruthValue + } + + frwkBaseFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this Filter among all + the Filters." + + ::= { frwkBaseFilterEntry 1 } + + frwkBaseFilterNegation OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This attribute behaves like a logical NOT for the filter. + If the packet matches this filter and the value of this + attribute is 'true', the action associated with this filter + is not applied to the packet. If the value of this + attribute is 'false', then the action is applied to the + packet." + + ::= { frwkBaseFilterEntry 2 } + + -- + -- The IP Filter Table + -- + + + + + frwkIpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkIpFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Filter definitions. A packet has to match all fields in a + filter. Wildcards may be specified for those fields that + are not relevant." + + INSTALL-ERRORS { + invalidDstL4PortData(1), + invalidSrcL4PortData(2) + } + ::= { frwkClassifierClasses 2 } + + frwkIpFilterEntry OBJECT-TYPE + SYNTAX FrwkIpFilterEntry + STATUS current + DESCRIPTION + "An instance of the frwkIpFilter class." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwkIpFilterAddrType, + frwkIpFilterDstAddr, + frwkIpFilterDstPrefixLength, + frwkIpFilterSrcAddr, + frwkIpFilterSrcPrefixLength, + frwkIpFilterDscp, + frwkIpFilterFlowId, + frwkIpFilterProtocol, + frwkIpFilterDstL4PortMin, + frwkIpFilterDstL4PortMax, + frwkIpFilterSrcL4PortMin, + frwkIpFilterSrcL4PortMax } + + ::= { frwkIpFilterTable 1 } + + FrwkIpFilterEntry ::= SEQUENCE { + frwkIpFilterAddrType InetAddressType, + frwkIpFilterDstAddr InetAddress, + frwkIpFilterDstPrefixLength InetAddressPrefixLength, + frwkIpFilterSrcAddr InetAddress, + frwkIpFilterSrcPrefixLength InetAddressPrefixLength, + frwkIpFilterDscp DscpOrAny, + frwkIpFilterFlowId Integer32, + frwkIpFilterProtocol Unsigned32, + frwkIpFilterDstL4PortMin InetPortNumber, + + + + frwkIpFilterDstL4PortMax InetPortNumber, + frwkIpFilterSrcL4PortMin InetPortNumber, + frwkIpFilterSrcL4PortMax InetPortNumber + } + + frwkIpFilterAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value to specify the type of + the packet's IP address. + + While other types of addresses are defined in the + InetAddressType textual convention, an IP filter can only + use IPv4 and IPv6 addresses directly to classify traffic. + All other InetAddressTypes require mapping to the + corresponding Ipv4 or IPv6 address before being used to + classify traffic. Therefore, this object as such is not + limited to IPv4 and IPv6 addresses, i.e., it can be assigned + any of the valid values defined in the InetAddressType TC, + but the mapping of the address values to IPv4 or IPv6 + addresses for the address attributes (frwkIpFilterDstAddr + and frwkIpFilterSrcAddr) must be done by the PEP. For + example when dns (16) is used, the PEP must resolve + the address to IPv4 or IPv6 at install time." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 1 } + + frwkIpFilterDstAddr OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination IP address. If the address type is 'ipv4', + 'ipv6', 'ipv4z' or 'ipv6z' then, the attribute + frwkIpFilterDstPrefixLength indicates the number of bits + that are relevant. " + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 2 } + + + + + frwkIpFilterDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. This attribute is interpreted only if the + InetAddressType is 'ipv4', 'ipv4z', 'ipv6' or 'ipv6z'. + Masks are constructed by setting bits in sequence from the + most-significant bit downwards for + frwkIpFilterDstPrefixLength bits length. All other bits in + the mask, up to the number needed to fill the length of + the address frwkIpFilterDstAddr are cleared to zero. A zero + bit in the mask then means that the corresponding bit in + the address always matches. + + In IPv4 addresses, a length of 0 indicates a match of any + address; a length of 32 indicates a match of a single host + address, and a length between 0 and 32 indicates the use of + a CIDR Prefix. IPv6 is similar, except that prefix lengths + range from 0..128." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 3 } + + frwkIpFilterSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address. If the address type is 'ipv4', 'ipv6', 'ipv4z' or + 'ipv6z' then, the attribute frwkIpFilterSrcPrefixLength + indicates the number of bits that are relevant." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 4 } + + frwkIpFilterSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + STATUS current + DESCRIPTION + "The length of a mask for the matching of the source IP + address. This attribute is interpreted only if the + + + + InetAddressType is 'ipv4', 'ipv4z', 'ipv6' or 'ipv6z'. + Masks are constructed by setting bits in sequence from the + most-significant bit downwards for + frwkIpFilterSrcPrefixLength bits length. All other bits in + the mask, up to the number needed to fill the length of + the address frwkIpFilterSrcAddr are cleared to zero. A + zero bit in the mask then means that the corresponding bit + in the address always matches. + + In IPv4 addresses, a length of 0 indicates a match of any + address; a length of 32 indicates a match of a single host + address, and a length between 0 and 32 indicates the use of + a CIDR Prefix. IPv6 is similar, except that prefix lengths + range from 0..128." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 5 } + + frwkIpFilterDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this filter. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + REFERENCE + "Management Information Base for the Differentiated Services + Architecture. RFC 3289." + DEFVAL { -1 } + + ::= { frwkIpFilterEntry 6 } + + frwkIpFilterFlowId OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..1048575) + STATUS current + DESCRIPTION + "The flow label or flow identifier in an IPv6 header + that may be used to discriminate traffic flows. + The value of -1 for this attribute MUST imply that + any flow label value in the IPv6 header will match, + resulting in the flow label field of the IPv6 header + being ignored for matching this filter entry." + + ::= { frwkIpFilterEntry 7 } + + + + + frwkIpFilterProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The layer-4 protocol Id to match against the IPv4 protocol + number or the IPv6 Next-Header number in the packet. A value + of 255 means match all. Note the protocol number of 255 is + reserved by IANA, and Next-Header number of 0 is used in + IPv6." + DEFVAL { 255 } + + ::= { frwkIpFilterEntry 8 } + + frwkIpFilterDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this filter. This value must + be equal to or lesser that the value specified for this + filter in frwkIpFilterDstL4PortMax. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMin is greater than + frwkIpFilterSrcL4PortMax" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 9 } + + frwkIpFilterDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this filter. This value must + be equal to or greater that the value specified for this + filter in frwkIpFilterDstL4PortMin. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterDstL4PortMax is less than + frwkIpFilterDstL4PortMin" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + + + + DEFVAL { 65535 } + + ::= { frwkIpFilterEntry 10 } + + frwkIpFilterSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this filter. This value must + be equal to or lesser that the value specified for this + filter in frwkIpFilterSrcL4PortMax. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMin is greated than + frwkIpFilterSrcL4PortMax" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 11 } + + frwkIpFilterSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this filter. This value must be + equal to or greater that the value specified for this filter + in frwkIpFilterSrcL4PortMin. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMax is less than + frwkIpFilterSrcL4PortMin" + REFERENCE + "COPS Usage for Policy Provisioning. RFC error codes + section 4.5." + DEFVAL { 65535 } + + ::= { frwkIpFilterEntry 12 } + + -- + -- The IEEE 802 Filter Table + -- + + frwk802FilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Frwk802FilterEntry + + + + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based filter definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + filters that are used to perform traffic classification." + REFERENCE + "IEEE Standards for Local and Metropolitan Area Networks. + Overview and Architecture, ANSI/IEEE Std 802, 1990." + ::= { frwkClassifierClasses 3 } + + frwk802FilterEntry OBJECT-TYPE + SYNTAX Frwk802FilterEntry + STATUS current + DESCRIPTION + "IEEE 802-based filter definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwk802FilterDstAddr, + frwk802FilterDstAddrMask, + frwk802FilterSrcAddr, + frwk802FilterSrcAddrMask, + frwk802FilterVlanId, + frwk802FilterVlanTagRequired, + frwk802FilterEtherType, + frwk802FilterUserPriority } + + ::= { frwk802FilterTable 1 } + + Frwk802FilterEntry ::= SEQUENCE { + frwk802FilterDstAddr PhysAddress, + frwk802FilterDstAddrMask PhysAddress, + frwk802FilterSrcAddr PhysAddress, + frwk802FilterSrcAddrMask PhysAddress, + frwk802FilterVlanId Integer32, + frwk802FilterVlanTagRequired INTEGER, + frwk802FilterEtherType Integer32, + frwk802FilterUserPriority BITS + + + + } + + frwk802FilterDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming + traffic streams will be compared. Frames whose 802 DA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + frwk802FilterDstAddrMask object, are potentially subject to + the processing guidelines that are associated with this + entry through the related action class." + REFERENCE + "Textual Conventions for SMIv2, RFC 2579." + + ::= { frwk802FilterEntry 1 } + + frwk802FilterDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA + comparison against the address specified in the + frwk802FilterDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the + value to be compared against the frwk802FilterDstAddr + address. A zero bit in the mask thus means that the + corresponding bit in the address always matches. The + frwk802FilterDstAddr value must also be masked using this + value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the frwk802FilterDstAddr. Note that a mask with no + bits set (i.e., all zeroes) effectively wildcards the + frwk802FilterDstAddr object." + + ::= { frwk802FilterEntry 2 } + + frwk802FilterSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 MAC address against which the 802 MAC SA of + incoming traffic streams will be compared. Frames whose 802 + + + + MAC SA matches the physical address specified by this + object, taking into account address wildcarding as specified + by the frwk802FilterSrcAddrMask object, are potentially + subject to the processing guidelines that are associated + with this entry through the related action class." + + ::= { frwk802FilterEntry 3 } + + frwk802FilterSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + frwk802FilterSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the frwk802FilterSrcAddr + address. A zero bit in the mask thus means that the + corresponding bit in the address always matches. The + frwk802FilterSrcAddr value must also be masked using this + value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the frwk802FilterSrcAddr. Note that a mask with no + bits set (i.e., all zeroes) effectively wildcards the + frwk802FilterSrcAddr object." + + ::= { frwk802FilterEntry 4 } + + frwk802FilterVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the frwk802FilterVlanId object to -1 indicates that + VLAN data should not be considered during traffic + classification." + + ::= { frwk802FilterEntry 5 } + + + + + frwk802FilterVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 filter entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { frwk802FilterEntry 6 } + + frwk802FilterEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the frwk802FilterEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows + + + + the Organization Code field in the 802.2 SNAP header. The + value that is tested with regard to this filter component + therefore depends on the data link layer frame format being + used. If this 802 filter component is active when there is + no EtherType field in a frame (e.g., 802.2 LLC), a match is + implied." + + ::= { frwk802FilterEntry 7 } + +frwk802FilterUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 filter component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 filter + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { frwk802FilterEntry 8 } + +-- +-- The Internal label filter extension +-- + +frwkILabelFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkILabelFilterEntry + PIB-ACCESS install + STATUS current + + + + DESCRIPTION + "Internal label filter Table. This PRC is used to achieve + classification based on the internal flow label set by the + PEP possibly after ingress classification to avoid + re-classification at the egress interface on the same PEP." + + ::= { frwkClassifierClasses 4 } + +frwkILabelFilterEntry OBJECT-TYPE + SYNTAX FrwkILabelFilterEntry + STATUS current + DESCRIPTION + "Internal label filter entry definition." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwkILabelFilterILabel } + + ::= { frwkILabelFilterTable 1 } + +FrwkILabelFilterEntry ::= SEQUENCE { + frwkILabelFilterILabel OCTET STRING +} + +frwkILabelFilterILabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The Label that this flow uses for differentiating traffic + flows. The flow labeling is meant for network device + internal usage. A value of zero length string matches all + internal labels." + ::= { frwkILabelFilterEntry 1 } + +-- +-- The Marker classes group +-- + +frwkMarkerClasses + OBJECT IDENTIFIER ::= { frameworkPib 4 } +-- +-- The 802 Marker Table +-- + +frwk802MarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Frwk802MarkerEntry + PIB-ACCESS install + STATUS current + + + + DESCRIPTION + "The 802 Marker class. An 802 packet can be marked with the + specified VLAN id, priority level." + + ::= { frwkMarkerClasses 1 } + +frwk802MarkerEntry OBJECT-TYPE + SYNTAX Frwk802MarkerEntry + STATUS current + DESCRIPTION + "frwk802Marker entry definition." + + PIB-INDEX { frwk802MarkerPrid } + UNIQUENESS { frwk802MarkerVlanId, + frwk802MarkerPriority } + + ::= { frwk802MarkerTable 1 } + +Frwk802MarkerEntry::= SEQUENCE { + frwk802MarkerPrid InstanceId, + frwk802MarkerVlanId Unsigned32, + frwk802MarkerPriority Unsigned32 +} + +frwk802MarkerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this 802 Marker." + + ::= { frwk802MarkerEntry 1 } + +frwk802MarkerVlanId OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN within + the device." + + ::= { frwk802MarkerEntry 2 } + +frwk802MarkerPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The user priority field of a tagged 802.1 frame." + + ::= { frwk802MarkerEntry 3 } + + + + +-- +-- The Internal Label Marker Table +-- + +frwkILabelMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkILabelMarkerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Internal Label Marker class. A flow in a PEP can be + marked with an internal label using this PRC." + + ::= { frwkMarkerClasses 2 } + +frwkILabelMarkerEntry OBJECT-TYPE + SYNTAX FrwkILabelMarkerEntry + STATUS current + DESCRIPTION + "frwkILabelkMarker entry definition." + + PIB-INDEX { frwkILabelMarkerPrid } + UNIQUENESS { frwkILabelMarkerILabel } + + ::= { frwkILabelMarkerTable 1 } + +FrwkILabelMarkerEntry::= SEQUENCE { + frwkILabelMarkerPrid InstanceId, + frwkILabelMarkerILabel OCTET STRING +} + +frwkILabelMarkerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this Label Marker." + + ::= { frwkILabelMarkerEntry 1 } + +frwkILabelMarkerILabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This internal label is implementation specific and may be + used for other policy related functions like flow + accounting purposes and/or other data path treatments." + + ::= { frwkILabelMarkerEntry 2 } + + + + +-- +-- Conformance Section +-- + +frwkBasePibConformance + OBJECT IDENTIFIER ::= { frameworkPib 5 } + +frwkBasePibCompliances + OBJECT IDENTIFIER ::= { frwkBasePibConformance 1 } + +frwkBasePibGroups + OBJECT IDENTIFIER ::= { frwkBasePibConformance 2 } + +frwkBasePibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Framework PIB." + + MODULE -- this module + MANDATORY-GROUPS { frwkPrcSupportGroup, + frwkPibIncarnationGroup, + frwkDeviceIdGroup, + frwkCompLimitsGroup, + frwkCapabilitySetGroup, + frwkRoleComboGroup, + frwkIfRoleComboGroup } + + OBJECT frwkPibIncarnationLongevity + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationTtl + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationInCtxtSet + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if configuration contexts + and outsourcing contexts are both to be supported." + + OBJECT frwkPibIncarnationFullState + + + + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if incremental updates to + request states is to be supported." + + GROUP frwkReferenceGroup + DESCRIPTION + "The frwkReferenceGroup is mandatory if referencing + across PIB contexts for specific client-types is to be + supported." + + GROUP frwkErrorGroup + DESCRIPTION + "The frwkErrorGroup is mandatory sending errors in + decisions is to be supported." + + GROUP frwkBaseFilterGroup + DESCRIPTION + "The frwkBaseFilterGroup is mandatory if filtering + based on traffic components is to be supported." + + GROUP frwkIpFilterGroup + DESCRIPTION + "The frwkIpFilterGroup is mandatory if filtering + based on IP traffic components is to be supported." + + GROUP frwk802FilterGroup + DESCRIPTION + "The frwk802FilterGroup is mandatory if filtering + based on 802 traffic criteria is to be supported." + + GROUP frwkILabelFilterGroup + DESCRIPTION + "The frwkILabelFilterGroup is mandatory if filtering + based on PEP internal label is to be supported." + + GROUP frwk802MarkerGroup + DESCRIPTION + "The frwk802MarkerGroup is mandatory if marking a packet + with 802 traffic criteria is to be supported." + + GROUP frwkILabelMarkerGroup + DESCRIPTION + "The frwkILabelMarkerGroup is mandatory if marking a + flow with internal labels is to be supported." + + ::= { frwkBasePibCompliances 1 } + + + + +frwkPrcSupportGroup OBJECT-GROUP + OBJECTS { + frwkPrcSupportPrid, + frwkPrcSupportSupportedPrc, + frwkPrcSupportSupportedAttrs } + STATUS current + DESCRIPTION + "Objects from the frwkPrcSupportTable." + + ::= { frwkBasePibGroups 1 } + +frwkPibIncarnationGroup OBJECT-GROUP + OBJECTS { + frwkPibIncarnationPrid, + frwkPibIncarnationName, + frwkPibIncarnationId, + frwkPibIncarnationLongevity, + frwkPibIncarnationTtl, + frwkPibIncarnationInCtxtSet, + frwkPibIncarnationActive, + frwkPibIncarnationFullState + } + STATUS current + DESCRIPTION + "Objects from the frwkDevicePibIncarnationTable." + + ::= { frwkBasePibGroups 2 } + +frwkDeviceIdGroup OBJECT-GROUP + OBJECTS { + frwkDeviceIdPrid, + frwkDeviceIdDescr, + frwkDeviceIdMaxMsg, + frwkDeviceIdMaxContexts } + STATUS current + DESCRIPTION + "Objects from the frwkDeviceIdTable." + + ::= { frwkBasePibGroups 3 } + +frwkCompLimitsGroup OBJECT-GROUP + OBJECTS { + frwkCompLimitsPrid, + frwkCompLimitsComponent, + frwkCompLimitsAttrPos, + frwkCompLimitsNegation, + frwkCompLimitsType, + frwkCompLimitsSubType, + + + + frwkCompLimitsGuidance } + STATUS current + DESCRIPTION + "Objects from the frwkCompLimitsTable." + + ::= { frwkBasePibGroups 4 } + +frwkReferenceGroup OBJECT-GROUP + OBJECTS { + frwkReferencePrid, + frwkReferenceClientType, + frwkReferenceClientHandle, + frwkReferenceInstance } + STATUS current + DESCRIPTION + "Objects from the frwkReferenceTable." + + ::= { frwkBasePibGroups 5 } + +frwkErrorGroup OBJECT-GROUP + OBJECTS { + frwkErrorPrid, + frwkErrorCode, + frwkErrorSubCode, + frwkErrorPrc, + frwkErrorInstance } + STATUS current + DESCRIPTION + "Objects from the frwkErrorTable." + + ::= { frwkBasePibGroups 6 } + +frwkCapabilitySetGroup OBJECT-GROUP + OBJECTS { + frwkCapabilitySetPrid, + frwkCapabilitySetName, + frwkCapabilitySetCapability } + STATUS current + DESCRIPTION + "Objects from the frwkCapabilitySetTable." + + ::= { frwkBasePibGroups 7 } + +frwkRoleComboGroup OBJECT-GROUP + OBJECTS { + frwkRoleComboPrid, + frwkRoleComboRoles, + frwkRoleComboCapSetName } + + + + STATUS current + DESCRIPTION + "Objects from the frwkRoleComboTable." + + ::= { frwkBasePibGroups 8 } + +frwkIfRoleComboGroup OBJECT-GROUP + OBJECTS { frwkIfRoleComboIfIndex } + STATUS current + DESCRIPTION + "Objects from the frwkIfRoleComboTable." + + ::= { frwkBasePibGroups 9 } + +frwkBaseFilterGroup OBJECT-GROUP + OBJECTS { + frwkBaseFilterPrid, + frwkBaseFilterNegation } + STATUS current + DESCRIPTION + "Objects from the frwkBaseFilterTable." + + ::= { frwkBasePibGroups 10 } + +frwkIpFilterGroup OBJECT-GROUP + OBJECTS { + frwkIpFilterAddrType, + frwkIpFilterDstAddr, + frwkIpFilterDstPrefixLength, + frwkIpFilterSrcAddr, + frwkIpFilterSrcPrefixLength, + frwkIpFilterDscp, + frwkIpFilterFlowId, + frwkIpFilterProtocol, + frwkIpFilterDstL4PortMin, + frwkIpFilterDstL4PortMax, + frwkIpFilterSrcL4PortMin, + frwkIpFilterSrcL4PortMax } + STATUS current + DESCRIPTION + "Objects from the frwkIpFilterTable." + + ::= { frwkBasePibGroups 11 } + +frwk802FilterGroup OBJECT-GROUP + OBJECTS { + frwk802FilterDstAddr, + frwk802FilterDstAddrMask, + + + + frwk802FilterSrcAddr, + frwk802FilterSrcAddrMask, + frwk802FilterVlanId, + frwk802FilterVlanTagRequired, + frwk802FilterEtherType, + frwk802FilterUserPriority } + STATUS current + DESCRIPTION + "Objects from the frwk802FilterTable." + + ::= { frwkBasePibGroups 12 } + +frwkILabelFilterGroup OBJECT-GROUP + OBJECTS { frwkILabelFilterILabel } + STATUS current + DESCRIPTION + "Objects from the frwkILabelFilterTable." + + ::= { frwkBasePibGroups 13 } + +frwk802MarkerGroup OBJECT-GROUP + OBJECTS { + frwk802MarkerPrid, + frwk802MarkerVlanId, + frwk802MarkerPriority } + STATUS current + DESCRIPTION + "Objects from the frwk802MarkerTable." + + ::= { frwkBasePibGroups 14 } + +frwkILabelMarkerGroup OBJECT-GROUP + OBJECTS { + frwkILabelMarkerPrid, + frwkILabelMarkerILabel } + STATUS current + DESCRIPTION + "Objects from the frwkILabelMarkerTable." + + ::= { frwkBasePibGroups 15 } + +END diff --git a/pibs/ietf/FRAMEWORK-TC-PIB b/pibs/ietf/FRAMEWORK-TC-PIB new file mode 100644 index 0000000..2934bdb --- /dev/null +++ b/pibs/ietf/FRAMEWORK-TC-PIB @@ -0,0 +1,259 @@ +FRAMEWORK-TC-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS MODULE-IDENTITY, TEXTUAL-CONVENTION, + Unsigned32, pib FROM COPS-PR-SPPI; + +frwkTcPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200302130000Z" -- 13 Feb 2003 + ORGANIZATION "IETF RAP WG" + + + + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + Ravi Sahita + Intel Labs. + 2111 NE 25th Ave. + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com + + RAP WG Mailing list: rap@ops.ietf.org " + DESCRIPTION + "The PIB module containing the Role and RoleCombination + Textual Conventions and other generic TCs. + + Copyright (C) The Internet Society (2003). This version of + this PIB module is part of RFC 3318; see the RFC itself for + full legal notices." + + REVISION "200302130000Z" -- 13 Feb 2003 + DESCRIPTION "Initial version, published in RFC 3318." + ::= { pib 3 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone_interface, + Frame_Relay_interface, BGP-capable-router, web-server, + firewall, etc. + The only valid character set is US-ASCII. Valid characters + are a-z, A-Z, 0-9, period, hyphen and underscore. A role + must always start with a letter (a-z or A-Z). A role must + not contain the US-ASCII characters '*' or '+' since they + have special meaning associated with them, explained in the + RoleCombination TEXTUAL CONVENTION." + + + + SYNTAX OCTET STRING (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string containing concatenated Roles. For the + format specification of roles, refer to the 'Role' TEXTUAL- + CONVENTION. A valid Role Combination must be formed by a set + of valid Roles, concatenated by the US-ASCII character '+', + where the roles are in lexicographic order from minimum to + maximum. For example, 'a+b' and 'b+a' are NOT different + role-combinations; rather, they are different formatting of + the same (one) role-combination. + + Notice the roles within a role-combination are in + Lexicographic order from minimum to maximum, hence, we + declare: + 'a+b' is the valid formatting of the role-combination, + 'b+a' is an invalid formatting of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been + assigned. This role-combination is also known as the 'null' + role-combination. (Note the deliberate use of lower case + letters to avoid confusion with the US-ASCII NULL character + which has a value of zero but length of one.) + + The US-ASCII character '*' is used to specify a wild carded + Role Combination. '*' must not be used to wildcard Roles. + Hence, we declare: + '*+a+b' is a valid wild carded Role Combination. + 'eth*+a+b' is not a valid wild carded Role Combination. + Note that since Roles are lexicographically listed in a Role + Combination, the following is an invalid role combination, + since '*' is lexicographically before 'a': 'a+b+*'." + SYNTAX OCTET STRING (SIZE (0..255)) + +PrcIdentifierOid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies a PRC. The value MUST be an OID + assigned to a PRC's entry definition. The Entry definition + of a PRC has an OID value XxxTable.1 where XxxTable is the + OID assigned to the PRC table object. + + An attribute with this syntax MUST specify a PRC, which is + defined in the PIB module(s) registered in the context of + the client-type used. + + + + + An attribute with this syntax cannot have the value 0.0 + (zeroDotZero). If the attribute using this syntax can be set + to 0.0 use the PrcIdentifierOidOrZero TEXTUAL-CONVENTION + which makes such use explicit." + SYNTAX OBJECT IDENTIFIER + +PrcIdentifierOidOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies a PRC or zeroDotZero (0.0). The + value MUST be an OID assigned to a PRC's entry definition or + 0.0 (zeroDotZero). The Entry definition of a PRC has an OID + value XxxTable.1 where XxxTable is the OID assigned to the + PRC table object. + + An attribute with this syntax can have the value 0.0 + (zeroDotZero) to indicate that it currently does not + identify a PRC." + SYNTAX OBJECT IDENTIFIER + +AttrIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Unsigned32 value that identifies an attribute in a PRC by + its sub-id. The sub-id is the OID assigned to this attribute + in the PRC definition. + + A AttrIdentifier value is always interpreted within the + context of an attribute of type PrcIdentifierOid or + PrcIdentifierOidOrZero. The PrcIdentifierOid (or + PrcIdentifierOidOrZero) object which defines the context + must be registered immediately before the object which uses + the AttrIdentifier textual convention. If the context + defining attribute is of type PrcIdentifierOidOrZero and has + the value 0.0, then in that case this attribute value has no + meaning. + + An attribute with this syntax MUST specify a sub-id which + MUST be defined in the PRC identified (if any) in the + PrcIdentifierOid (or PrcIdentifierOidOrZero) attribute. The + PrcIdentifierOid (orZero) and the AttrIdentifier attributes + together identify a particular attribute in a particular + PRC. + + + + + + + + An attribute with this syntax cannot have the value 0 + (zero). If the attribute using this syntax can be set + to 0 use the AttrIdentifierOrZero TEXTUAL-CONVENTION which + makes that explicit." + SYNTAX Unsigned32 (1..4294967295) + +AttrIdentifierOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Unsigned32 value that identifies an attribute in a PRC by + its sub-id or has the value 0 (zero). The sub-id if non- + zero, is the OID assigned to this attribute in the PRC + definition. + + An AttrIdentifierOrZero value is always interpreted within + the context of an attribute of type PrcIdentifierOid or + PrcIdentifierOidOrZero. The PrcIdentifierOid (or + PrcIdentifierOidOrZero) object that defines the context must + be registered immediately before the object which uses the + AttrIdentifierOrZero textual convention. If the context + defining attribute is of type PrcIdentifierOidOrZero and has + the value 0.0, then in that case this attribute value has no + meaning. + + An attribute with this syntax can have the value 0 (zero) to + indicate that it currently does not identify a PRC + attribute. If it has a non-zero value, the + PrcIdentifierOid (orZero) and the AttrIdentifierOrZero + attributes together identify a particular attribute in a + particular PRC." + SYNTAX Unsigned32 + +AttrIdentifierOid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies an attribute in a PRC. The value + MUST be an OID assigned to a PRC's attribute definition. The + last sub-id is the sub-id of the attribute as it is + defined in the PRC entry definition. The prefix OID (after + dropping the last sub-id) is the OID assigned to the Entry + object of a defined PRC. The Entry definition of a PRC has + an OID value XxxTable.1 where XxxTable is the OID assigned + to the PRC Table object. + + An attribute with this syntax MUST not have the value 0.0 + (zeroDotZero). If 0.0 is a valid value, the TEXTUAL + CONVENTION AttrIdentifierOidOrZero must be used which makes + such use explicit." + + + + SYNTAX OBJECT IDENTIFIER + +AttrIdentifierOidOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies an attribute in a PRC or has a value + 0.0 (zeroDotZero). The value MUST be an OID assigned to a + PRC's attribute definition or the value 0.0. + + If not 0.0, the last sub-id MUST be the sub-id of the + attribute as it is defined in the PRC Entry object + definition. The prefix OID (after dropping the last sub-id) + is the OID assigned to the Entry object of a defined PRC. + The Entry definition of a PRC has an OID value XxxTable.1 + Where, XxxTable is the OID assigned to the PRC Table + object. + + An attribute with this syntax can have the value 0.0 + (zeroDotZero) to indicate that it currently does not + identify a PRC's attribute." + SYNTAX OBJECT IDENTIFIER + +ClientType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An Unsigned32 value that identifies a COPS Client-type. An + attribute with this syntax must be set to zero if it does + not specify a COPS client-type for the PRI." + REFERENCE + "The COPS (Common Open Policy Service) Protocol, RFC 2748." + SYNTAX Unsigned32 (0..65535) + +ClientHandle ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string that identifies a COPS Client handle. A + zero length value implies the attribute does not specify a + valid client handle." + REFERENCE + "The COPS (Common Open Policy Service) Protocol, RFC 2748." + SYNTAX OCTET STRING (SIZE(0..65535)) + +END diff --git a/pibs/ietf/Makefile.am b/pibs/ietf/Makefile.am new file mode 100644 index 0000000..6f11028 --- /dev/null +++ b/pibs/ietf/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/ietf Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/ietf/Makefile.in b/pibs/ietf/Makefile.in new file mode 100644 index 0000000..8a84023 --- /dev/null +++ b/pibs/ietf/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/ietf Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/ietf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/ietf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/ietf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/site/Makefile.am b/pibs/site/Makefile.am new file mode 100644 index 0000000..81b4bcc --- /dev/null +++ b/pibs/site/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/site Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/site/Makefile.in b/pibs/site/Makefile.in new file mode 100644 index 0000000..8bae13b --- /dev/null +++ b/pibs/site/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/site Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/site +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/site/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/site/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/tubs/ACCESSBIND-PIB b/pibs/tubs/ACCESSBIND-PIB new file mode 100644 index 0000000..b2ed8fe --- /dev/null +++ b/pibs/tubs/ACCESSBIND-PIB @@ -0,0 +1,2511 @@ +ACCESSBIND-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid, ReferenceId, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + frwkReferenceEntry + FROM FRAMEWORK-PIB + RoleCombination, PrcIdentifierOid + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC; + +accessBindPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200202202002Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Walter Weiss + Ellacoya Networks + 7 Henry Clay Drive + Merrimack, NH 03054 + Phone: 603-879-7364 + E-mail: wweiss@ellacoya.com + " + DESCRIPTION + "A PIB module containing the set of classes to + configure generic event handlers, and outsource + events as they occur. One application of this PIB is + to bind authorization and authentication to COPS + Provisioning." + + ::= { ibrpib 2 } -- xxx to be assigned by IANA + + +-- +-- The branch OIDs in the AccessBind PIB +-- + +capabilityClasses OBJECT IDENTIFIER ::= { accessBindPib 1 } +eventClasses OBJECT IDENTIFIER ::= { accessBindPib 2 } +eventHdlrClasses OBJECT IDENTIFIER ::= { accessBindPib 3 } +contextClasses OBJECT IDENTIFIER ::= { accessBindPib 4 } +authClasses OBJECT IDENTIFIER ::= { accessBindPib 5 } +filterClasses OBJECT IDENTIFIER ::= { accessBindPib 6 } + + + +-- +-- Event Table +-- +-- Instances of this table represent events that occurred at +-- the PEP. The events reference the event handler instance +-- and the specific event handler element that the event was +-- caught by. + +eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP. As a result of this event, The PDP may send + additional unsolicited decisions to the PEP after + sending the mandatory solicited decision for the event." + + ::= { eventClasses 1 } + +eventEntry OBJECT-TYPE + SYNTAX EventEntry + STATUS current + DESCRIPTION + "An instance of the eventTable PRC." + + PIB-INDEX { eventId } + UNIQUENESS { } + + ::= { eventTable 1 } + +EventEntry ::= SEQUENCE { + eventId InstanceId, + eventEventHdlr ReferenceId, + eventCause ReferenceId +} + +eventId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify this event." + + ::= { eventEntry 1 } + +eventEventHdlr OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkReferenceEntry } + STATUS current + DESCRIPTION + "This attribute allows a PEP to indicate to the PDP that + this event was generated due to the referenced Event + Handler. This attribute references an event handler via + the indirection PRC frwkReference, since the event + handler and event could potentially belong to a different + PIB contexts." + + + ::= { eventEntry 2 } + + +eventCause OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkReferenceEntry } + STATUS current + DESCRIPTION + "This attribute references the specific instance in a + group of event Handler elements belonging to an event + Handler that resulted in this event. This attribute + references a specific event handler element via the + indirection PRC frwkReference, since the event handler + element and event could potentially belong to a different + PIB contexts." + + + ::= { eventEntry 3 } + + +-- +-- EventHandler Table +-- +-- Instances of this PRC are provisioned by the PDP on the PEP +-- to catch specific events. The Event Handlers reference a +-- group of eventHdlrElement PRIs that contain the scope of +-- the event and specify the context data to send to the PDP +-- when an event is caught. + +eventHandlerTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHandlerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The eventHandlerTable specifies for what events the PEP + should send a request to the PDP. As a result of this + request, the PEP may send configuration changes to the + PEP. An instance of this class defines the circumstances + for generating a request, and provides the means for + specifying the contents of the PEP Request. Hence, the + eventHandlerTable can be said to create eventTable + entries. " + + ::= { eventHdlrClasses 1 } + +eventHandlerEntry OBJECT-TYPE + SYNTAX EventHandlerEntry + STATUS current + DESCRIPTION + "eventTable entry." + PIB-INDEX { eventHandlerId } + UNIQUENESS { eventHandlerElements, + eventHandlerNonMatchNext + } + + ::= { eventHandlerTable 1} + +EventHandlerEntry ::= SEQUENCE { + eventHandlerId InstanceId, + eventHandlerElements TagReferenceId, + eventHandlerNonMatchNext Prid +} + +eventHandlerId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the eventHandlerTable class." + + ::= { eventHandlerEntry 1} + + eventHandlerElements OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrElementGrpId } + STATUS current + DESCRIPTION + "A reference to a group of eventHdlrElement instances, + each of which determines the scope (criteria for + generating a new request) and what context information to + send in a request." + + ::= { eventHandlerEntry 2} + + eventHandlerNonMatchNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for 'out of scope' traffic." + + ::= { eventHandlerEntry 3} + + +-- +-- EventHdlrElement Table +-- +-- Each Instance of this PRC belongs to a group of +-- eventHdlrElement PRIs. The group is identified by the +-- eventHdlrElementGrpId attribute. These are provisioned by +-- the PDP on the PEP to catch specific events. This PRC +-- contain the scope of the event and specify the context data +-- type to send to the PDP when an event is caught. + +eventHdlrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The eventHdlrElementTable specifies a single eventHdlr + element's scope via a reference to a group of filters and + the context data type and encapsulation meta-information + that the PEP needs to send an event notification to the + PDP." + + ::= { eventHdlrClasses 2 } + +eventHdlrElementEntry OBJECT-TYPE + SYNTAX EventHdlrElementEntry + STATUS current + DESCRIPTION + "eventTable entry." + PIB-INDEX { eventHdlrElementId } + UNIQUENESS { eventHdlrElementEventCriteria, + eventHdlrElementGrpId, + eventHdlrElementEventScope, + eventHdlrElementHandleScope, + eventHdlrElementContext, + eventHdlrElementMatchNext + } + + ::= { eventHdlrElementTable 1} + +EventHdlrElementEntry ::= SEQUENCE { + eventHdlrElementId InstanceId, + eventHdlrElementEventCriteria INTEGER, + eventHdlrElementGrpId TagId, + eventHdlrElementEventScope TagReferenceId, + eventHdlrElementHandleScope TagReferenceId, + eventHdlrElementContext TagReferenceId, + eventHdlrElementMatchNext Prid +} + +eventHdlrElementId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the eventHdlrElementTable class." + + ::= { eventHdlrElementEntry 1} + +eventHdlrElementEventCriteria OBJECT-TYPE + SYNTAX INTEGER { + onetime(1), + everytime(2), + onchange(3) + } + STATUS current + DESCRIPTION + "Indicates when an event is generated. Valid options are + one_time, every_time and on_change. This attribute allows + event Handlers to distinguish one time events (ignore + after the first match) from recurring events (generate an + event every time a match occurs). A enum type was also + define to specify that a new event should be generated + when a specific set of fields change. This is important + for protocols like RSVP because messages are sent both to + demonstrate that the reservation is active and to notify + hops of changes to reservations. Since only changes need + to propagate to the PDP, the on_change option indicates + that that events should be generated selectively. + + This criteria controls behavior of both, the EventScope + and the HandleScope." + + ::= { eventHdlrElementEntry 2} + +eventHdlrElementGrpId OBJECT-TYPE + SYNTAX TagId -- corresponding Tag Reference in + -- eventHandlerEntry + STATUS current + DESCRIPTION + "Group identifier. All instances with the same group + identifier belong to one group and can be referenced + collectively from an eventHandler instance." + + ::= { eventHdlrElementEntry 3} + +eventHdlrElementEventScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrEventScopeGroup } + STATUS current + DESCRIPTION + "Identifies a group of eventHdlrEventScope entries + associated with this eventHdlrElement instance." + + ::= { eventHdlrElementEntry 4} + +eventHdlrElementHandleScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrHandleScopeGroup } + STATUS current + DESCRIPTION + "Identifies a group of eventHdlrHandleScope entries + associated with this eventHdlrElement instance. This is + an optional attribute. If it is not present the + semantics of the Handle processing is interpreted as + identical to the Event Scope handling specified in the + EventScope objects" + + ::= { eventHdlrElementEntry 5} + +eventHdlrElementContext OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { contextDataGroup } + STATUS current + DESCRIPTION + "Identifies a list of ContextDataTable entries + associated with this eventHdlrElement instance." + + ::= { eventHdlrElementEntry 6} + +eventHdlrElementMatchNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for traffic in scope." + + ::= { eventHdlrElementEntry 7} + + + -- + -- EventHdlrEventScope Table + -- + -- This PRC defines the scope of an event handler element using + -- references to filters defined in the Framework PIB or in some + -- other PIBs. These filters may describe specific protocol + -- properties for which events need to be generated. These filter + -- references are grouped using a TagId, and this group is then + -- referenced from the eventHdlrElement PRC. + +eventHdlrEventScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrEventScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + partitioning various portions of traffic." + + ::= { eventHdlrClasses 3 } + +eventHdlrEventScopeEntry OBJECT-TYPE + SYNTAX EventHdlrEventScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards generating an event." + PIB-INDEX { eventHdlrEventScopeId } + UNIQUENESS { eventHdlrEventScopeGroup, + eventHdlrEventScopeFilter + } + + ::= { eventHdlrEventScopeTable 1} + +EventHdlrEventScopeEntry::= SEQUENCE { + eventHdlrEventScopeId InstanceId, + eventHdlrEventScopeGroup TagId, + eventHdlrEventScopeFilter Prid, + eventHdlrEventScopePrecedence INTEGER, + eventHdlrEventScopeChangeFlag TruthValue +} + +eventHdlrEventScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the eventHdlrEventScopeTable class." + + ::= { eventHdlrEventScopeEntry 1} + +eventHdlrEventScopeGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- defined in eventHdlrElementEntry + STATUS current + DESCRIPTION + "Represents the binding between the eventHdlrElementEntry + and the eventHdlrEventScope entries. A group of + eventHdlrEventScope entries constitutes the criteria for + partitioning various portions of traffic." + + ::= { eventHdlrEventScopeEntry 2} + +eventHdlrEventScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { eventHdlrEventScopeEntry 3} + +eventHdlrEventScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + eventHdlrEventScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria with the following rules: + 1. If the filters are not of the same type, the filters + are ANDed as a whole eg (RSVP and IP) + 2. If the filter types are the same, the attribute values + are ORed and the attributes themselves are ANDed, + for example, two IP filters with src protocol values + 56 and 57 respectively and dst protocol values 20 and + 25 , would be treated as the condition (src port (56 + or 57) AND dst port (20 or 25)." + + ::= { eventHdlrEventScopeEntry 4} + +eventHdlrEventScopeChangeFlag OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean value, if set to 'true' indicates that a new + event should be generated if any of the assigned fields in + the associated filter change." + + ::= { eventHdlrEventScopeEntry 5} + + + +-- +-- EventHdlrHandleScope Table +-- +-- This PRC defines the scope of request handles generated by the +-- PEP due to events caught by the event handler element. Each +-- instance of this PRC references filters defined in the +-- Framework PIB or some other signaling-protocol specific filter +-- PRCs. These filters may describe specific protocol properties +-- to which this event handler is sensitive. Essentially this +-- table defines when a new COPS RequestHandle must be created by +-- the PEP based on protocol properties. The event handler may be +-- set up to be sensitive to specific field values and/or the +-- uniqueness of a set of values considered together. This +-- accommodates various behaviors of signaling protocols. These +-- filters references are grouped using a TagId, and this group +-- is then referenced from the eventHdlrElement PRC via the +-- eventHdlrElementHandleScope TagReference. + +eventHdlrHandleScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrHandleScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + deciding whether to create a new COPS RequestHandle for + an event or to use an existing Handle." + + ::= { eventHdlrClasses 4 } + +eventHdlrHandleScopeEntry OBJECT-TYPE + SYNTAX EventHdlrHandleScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards deciding when to create a new Handle." + PIB-INDEX { eventHdlrHandleScopeId } + UNIQUENESS { eventHdlrHandleScopeGroup, + eventHdlrHandleScopeFilter + } + + ::= { eventHdlrHandleScopeTable 1} + +EventHdlrHandleScopeEntry::= SEQUENCE { + eventHdlrHandleScopeId InstanceId, + eventHdlrHandleScopeGroup TagId, + eventHdlrHandleScopeFilter Prid, + eventHdlrHandleScopePrecedence INTEGER, + eventHdlrHandleScopeChangeFlag TruthValue +} + +eventHdlrHandleScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the eventHdlrHandleScopeTable class." + + ::= { eventHdlrHandleScopeEntry 1} + +eventHdlrHandleScopeGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- defined in eventHdlrElementEntry + STATUS current + DESCRIPTION + "Represents the binding between the eventHdlrElementEntry + and the eventHdlrHandleScope entries. A group of + eventHdlrHandleScope entries constitutes the criteria for + defining the scope of the Handles generated." + + ::= { eventHdlrHandleScopeEntry 2} + +eventHdlrHandleScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { eventHdlrHandleScopeEntry 3} + +eventHdlrHandleScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + eventHdlrHandleScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria." + + ::= { eventHdlrHandleScopeEntry 4} + + +eventHdlrHandleScopeChangeFlag OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean value, if set to 'true' indicates that a new + Handle should be generated to send the event request if + any of the assigned fields in the associated filter + change." + + ::= { eventHdlrHandleScopeEntry 5} + + + +-- +-- EventHdlrAuthProtocol Table +-- +-- This PRC specifies the Auth Mechanism to use in the Access +-- request when a data path Event Handler is configured to +-- catch access events. + + +eventHdlrAuthProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrAuthProtocolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class lists the authentication protocols that can + be used for an access request." + + ::= { eventHdlrClasses 5 } + +eventHdlrAuthProtocolEntry OBJECT-TYPE + SYNTAX EventHdlrAuthProtocolEntry + STATUS current + DESCRIPTION + "An instance of this class describes an authentication + protocol that may be used for an access request. Instances + of this class that share the same TagId value collectively + constitute a list of authentication protocols that may be + used for a given access request" + PIB-INDEX { eventHdlrAuthProtocolId } + UNIQUENESS { eventHdlrAuthProtocolGroup, + eventHdlrAuthProtocolAuthMechanism + } + + ::= { eventHdlrAuthProtocolTable 1} + +EventHdlrAuthProtocolEntry::= SEQUENCE { + eventHdlrAuthProtocolId InstanceId, + eventHdlrAuthProtocolGroup TagId, + eventHdlrAuthProtocolAuthMechanism INTEGER +} + +eventHdlrAuthProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the ContextDataTable class." + + ::= { eventHdlrAuthProtocolEntry 1} + +eventHdlrAuthProtocolGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- in datapathEventHdlrEntry + STATUS current + DESCRIPTION + "Represents a binding between an datapathEventHdlrTable + instance and a list of eventHdlrAuthProtocolTable + instances." + + ::= { eventHdlrAuthProtocolEntry 2} + +eventHdlrAuthProtocolAuthMechanism OBJECT-TYPE + SYNTAX INTEGER { + mPAP (0), + mCHAP (1), + mEAPMD5(2), + mEAPTLS(3) + } + STATUS current + DESCRIPTION + "The authentication protocol that may be used for an + access request." + ::= { eventHdlrAuthProtocolEntry 3} + + +-- +-- DataPath Event Handler Table +-- +-- This PRC is an extension of the EventHandler PRC. This +-- extension illustrates the use of the EventHandler PRC +-- concept for authentication usage. Instances of this PRC are +-- provisioned by the PDP on the PEP to catch specific access +-- events. This PRC references a group of +-- eventHdlrAuthProtocol instances which define a set of +-- Authentication mechanisms to use if an access event is +-- caught by this event Handler. From its base class (Event +-- Handler) this PRC also references a group of +-- eventHdlrElement PRIs that contain the scope of the +-- access event and specify the context data to send to the +-- PDP when an access event is caught. + +datapathEventHdlrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DatapathEventHdlrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The datapathEventHdlrTable specifies for what access + events the PEP should send an access request to the PDP. + As a result of this access request, the PEP may send + configuration changes to the PEP or specific policies for + specific users. An instance of this class defines the + circumstances for generating an access request, and + provides the means for specifying the authentication + mechanisms and contents of the PEP Request. Hence, the + datapathEventHdlrTable can be said to create eventTable + entries for user access. " + + ::= { eventHdlrClasses 6 } + +datapathEventHdlrEntry OBJECT-TYPE + SYNTAX DatapathEventHdlrEntry + STATUS current + DESCRIPTION + "dataPathEventHdlrTable entry." + EXTENDS { eventHandlerEntry } + UNIQUENESS { eventHandlerElements, + eventHandlerNonMatchNext, + datapathEventHdlrRequestAuth + } + + ::= { datapathEventHdlrTable 1} + +DatapathEventHdlrEntry ::= SEQUENCE { + datapathEventHdlrRequestAuth TruthValue, + datapathEventHdlrAuthProtocol TagReferenceId +} + +datapathEventHdlrRequestAuth OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean flag, if set to 'true' requires authentication + data to be sent in the request sent to the PDP with the + access event." + + ::= { datapathEventHdlrEntry 1} + + +datapathEventHdlrAuthProtocol OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrAuthProtocolGroup } + STATUS current + DESCRIPTION + "References a group of eventHdlrAuthProtocol instances, + each of which specifies an authentication mechanism." + + ::= { datapathEventHdlrEntry 2} + + + +-- +-- ContextData Table +-- +-- This PRC specifies the context information to send to the PDP +-- when an event is caught. The context information to send is +-- described in terms of the PRC data types to include in the +-- request, the level of encapsulated data and the interface +-- information for that request. + + +contextDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF ContextDataEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class points to the context information to be + included with a request." + + ::= { contextClasses 1 } + +contextDataEntry OBJECT-TYPE + SYNTAX ContextDataEntry + STATUS current + DESCRIPTION + "An instance of this class contains the type description + (the assigned OID) of the class which needs to be filled + in by the PEP and included with a PEP request." + PIB-INDEX { contextDataId } + UNIQUENESS { } + + ::= { contextDataTable 1} + +ContextDataEntry::= SEQUENCE { + contextDataId InstanceId, + contextDataGroup TagId, + contextDataIfElement PrcIdentifierOid, + contextDataEncapsulation INTEGER +} + +contextDataId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the contextDataTable class." + + ::= { contextDataEntry 1} + +contextDataGroup OBJECT-TYPE + SYNTAX TagId --corresponding TagReference + --defined in eventHdlrElement + STATUS current + DESCRIPTION + "Defines the grouping of contextData instances + that are applicable to a given eventHdlrElement. When + instances of this PRC are sent to the PEP without the + event Handler information, this attribute is unused." + + ::= { contextDataEntry 2} + + +contextDataIfElement OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The OID of a class whose instance is to be included with + the PEP request or event-specific ContextData Response." + + ::= { contextDataEntry 3} + +contextDataEncapsulation OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "This attribute allows one to distinguish between inner + and outer headers when there are multiple encapsulated + headers of the same type in a packet. + + A value of: + 0 means all headers, + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { contextDataEntry 4} + + + +-- +-- Layer 3 Header Data PRC +-- + +ctxtL3HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtL3HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and + sent to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + this PRC to make Authentication/Provisioning + decisions." + + ::= { contextClasses 2 } + +ctxtL3HdrEntry OBJECT-TYPE + SYNTAX CtxtL3HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxtL3HdrTable PRC." + + PIB-INDEX { ctxtL3HdrId } + UNIQUENESS { } + + ::= { ctxtL3HdrTable 1 } + +CtxtL3HdrEntry::= SEQUENCE { + ctxtL3HdrId InstanceId, + ctxtL3HdrSrcAddrType InetAddressType, + ctxtL3HdrSrcAddr InetAddress, + ctxtL3HdrDstAddrType InetAddressType, + ctxtL3HdrDstAddr InetAddress, + ctxtL3HdrProtocol Unsigned32, + ctxtL3HdrSrcPort Unsigned32, + ctxtL3HdrDstPort Unsigned32, + ctxtL3HdrDscp Unsigned32, + ctxtL3HdrEcn TruthValue, + ctxtL3HdrIpOpt OCTET STRING, + ctxtL3HdrEncap Integer32 +} + +ctxtL3HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtL3HdrEntry 1 } + +ctxtL3HdrSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's source L3 address)." + + ::= { ctxtL3HdrEntry 2 } + +ctxtL3HdrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + " The packet's source L3 address." + + ::= { ctxtL3HdrEntry 3 } + +ctxtL3HdrDstAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's destination L3 address." + + ::= { ctxtL3HdrEntry 4 } + + +ctxtL3HdrDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The packet's destination L3 address." + + ::= { ctxtL3HdrEntry 5 } + + +ctxtL3HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The packet's protocol field." + + ::= { ctxtL3HdrEntry 6 } + +ctxtL3HdrSrcPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 7 } + +ctxtL3HdrDstPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 8 } + +ctxtL3HdrDscp OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "DiffServ CodePoint." + + ::= { ctxtL3HdrEntry 9 } + +ctxtL3HdrEcn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "PEP sets this attribute to true(1) if ECN capable." + + ::= { ctxtL3HdrEntry 10 } + +ctxtL3HdrIpOpt OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "IP Options field in the packet." + + ::= { ctxtL3HdrEntry 11 } + +ctxtL3HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified a + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { ctxtL3HdrEntry 12 } + + +-- +-- 802.1 Header Data PRC +-- + +ctxt802HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ctxt802HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses this PRC + to make Authorization/Provisioning decisions." + + ::= { contextClasses 3 } + +ctxt802HdrEntry OBJECT-TYPE + SYNTAX Ctxt802HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxt802HdrTable PRC." + + PIB-INDEX { ctxt802HdrId } + UNIQUENESS { } + + ::= { ctxt802HdrTable 1 } + +Ctxt802HdrEntry::= SEQUENCE { + ctxt802HdrId InstanceId, + ctxt802HdrSrcAddr PhysAddress, + ctxt802HdrDstAddr PhysAddress, + ctxt802HdrProtocol Unsigned32, + ctxt802HdrPriority Unsigned32, + ctxt802HdrVlan Unsigned32, + ctxt802HdrEncap Integer32 +} + +ctxt802HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxt802HdrEntry 1 } + + +ctxt802HdrSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + " The packet's source MAC address." + + ::= { ctxt802HdrEntry 2 } + +ctxt802HdrDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The packet's destination MAC address." + + ::= { ctxt802HdrEntry 3 } + + +ctxt802HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffff'h) + STATUS current + DESCRIPTION + "The L2 packet's protocol field." + + ::= { ctxt802HdrEntry 4 } + + +ctxt802HdrPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The L2 packet's priority field. This attribute is only + valid for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 5 } + +ctxt802HdrVlan OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The L2 packet's VLAN field. This attribute is only valid + for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 6 } + +ctxt802HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified an + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { ctxt802HdrEntry 7 } + + +-- +-- CtxtDialupInterface Table +-- + +ctxtDialupInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupInterfaceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Dialup Interface context data." + + ::= { contextClasses 4 } + +ctxtDialupInterfaceEntry OBJECT-TYPE + SYNTAX CtxtDialupInterfaceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupInterfaceTable PRC." + + PIB-INDEX { ctxtDialupInterfaceId } + UNIQUENESS { } + + ::= { ctxtDialupInterfaceTable 1 } + +CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupInterfaceId InstanceId, + ctxtDialupInterfaceNASPort Integer32, + ctxtDialupInterfaceNASPortId OCTET STRING, + ctxtDialupInterfaceNASPortType INTEGER, + ctxtDialupInterfaceCalledStationId OCTET STRING, + ctxtDialupInterfaceCallingStationId OCTET STRING, + ctxtDialupInterfaceConnectInfo OCTET STRING +} + +ctxtDialupInterfaceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupInterfaceEntry 1 } + + +ctxtDialupInterfaceNASPort OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the physical port number of the + NAS which is authenticating the user. It is only used in + Access-Request packets. Note that this is using 'port' + in its sense of a physical connection on the NAS, not in + the sense of a TCP or UDP port number." + + ::= { ctxtDialupInterfaceEntry 2 } + + +ctxtDialupInterfaceNASPortId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute contains a text string which identifies + the port of the NAS which is authenticating the user. It + is only used in Access-Request and Accounting-Request + packets. Note that this is using 'port' in its sense of + a physical connection on the NAS, not in the sense of a + TCP or UDP port number. " + + ::= { ctxtDialupInterfaceEntry 3 } + +ctxtDialupInterfaceNASPortType OBJECT-TYPE + +SYNTAX INTEGER { + radAsync(0), + radSync(1), + radIsdnSync(2), + radIsdnAsyncV120(3), + radIsdnAsyncV110(4), + radVirtual(5), + radPIAFS(6), + radHdlcClearChannel(7), + radX25(8), + radX75(9), + radG3Fax(10), + radSDSL(11), + radAdslCAP(12), + radAdslDMT(13), + radIdsl(14), + radEthernet(15), + radXdsl(16), + radCable(17), + radWirelessOther(18), + radWirelessIEEE80211(19) + } + STATUS current + DESCRIPTION + "This Attribute indicates the type of the physical port + of the NAS which is authenticating the user. It can be + used instead of or in addition to the radNasPort (5) + attribute. It is only used in Access-Request packets. + Either radNasPort (5) or radNasPortType or both SHOULD be + present in an Access-Request packet, if the NAS + differentiates among its ports. + + A value of 'radAsync(0)' indicates Async. + + A value of 'radSync(1)' indicates Sync. + + A value of 'radIsdnSync(2)' indicates ISDN Sync. + + A value of 'radIsdnAsyncV120(3)' indicates ISDN + Async V.120. + + A value of 'radIsdnAsyncV110(4)' indicates ISDN + Async V.110. + + A value of 'radVirtual(5)' indicates Virtual. + Virtual refers to a connection to the NAS via some + transport protocol, instead of through a physical + port. For example, if a user telnetted into a NAS to + authenticate himself as an Outbound-User, the + Access-Request might include radNasPortType = + Virtual as a hint to the RADIUS server that the user + was not on a physical port. + + A value of 'radPIAFS(6)' indicates PIAFS. PIAFS is a + form of wireless ISDN commonly used in Japan, and + stands for PHS (Personal Handyphone System) Internet + Access Forum Standard (PIAFS). + + A value of 'radHdlcClearChannel(7)' indicates HDLC + Clear Channel. + + A value of 'radX25(8)' indicates X.25. + + A value of 'radX75(9)' indicates X.75. + + A value of 'radG3Fax(10)' indicates G.3 Fax. + + A value of 'radSDSL(11)' indicates SDSL Symmetric + DSL. + + A value of 'radAdslCAP(12)' indicates ADSL-CAP - + Asymmetric DSL, Carrierless Amplitude Phase + Modulation. + + A value of 'radAdslDMT(13)' indicates ADSL-DMT - + Asymmetric DSL, Discrete Multi-Tone. + + A value of 'radIdsl(14)' indicates IDSL ISDN + Digital Subscriber Line. + + A value of 'radEthernet(15)' indicates Ethernet. + + A value of 'radXdsl(16)' indicates xDSL - Digital + Subscriber Line of unknown type. + + A value of 'radCable(17)' indicates Cable. + + A value of 'radWirelessOther(18)' indicates Wireless + - Other. + + A value of 'radWirelessIEEE80211(19)' indicates + Wireless - IEEE 802.11." + ::= { ctxtDialupInterfaceEntry 4 } + + + ctxtDialupInterfaceCalledStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user called, + using Dialed Number Identification (DNIS) or similar + technology. Note that this may be different from the + phone number the call comes in on. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 5 } + + ctxtDialupInterfaceCallingStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user is calling + from, using Dialed Number Identification (DNIS) or + similar technology. Note that this may be different from + the phone number called. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 6 } + + ctxtDialupInterfaceConnectInfo OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the call came from, + using Automatic Number Identification (ANI) or similar + technology. It is only used in Access-Request packets." + ::= { ctxtDialupInterfaceEntry 7 } + + + + + --- + --- CtxtDialupInterfaceFramedProtocol Table + --- + + ctxtDialupIfFramedProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfFramedProtocolEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 5 } + + ctxtDialupIfFramedProtocolEntry OBJECT-TYPE + SYNTAX CtxtDialupIfFramedProtocolEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfFramedProtocolTable PRC." + + PIB-INDEX { ctxtDialupIfFramedProtocolId } + UNIQUENESS { } + + ::= { ctxtDialupIfFramedProtocolTable 1 } + + CtxtDialupIfFramedProtocolEntry ::= SEQUENCE { + ctxtDialupIfFramedProtocolId InstanceId, + ctxtDialupIfFramedProtocolProt INTEGER, + ctxtDialupIfFramedProtocolMTU Integer32, + ctxtDialupIfFramedProtocolCompression INTEGER, + ctxtDialupIfFramedProtocolPortLimit Unsigned32, + ctxtDialupIfFramedProtocolIpAddress InetAddress, + ctxtDialupIfFramedProtocolIpNetmask InetAddress + } + + ctxtDialupIfFramedProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfFramedProtocolEntry 1 } + + + ctxtDialupIfFramedProtocolProt OBJECT-TYPE + SYNTAX INTEGER { + radPPP(1), + radSLIP(2), + radARAP(3), + radGandalf(4), + radXylogics(5), + radX75Synchronous(6) + } + STATUS current + DESCRIPTION + "This Attribute indicates the framing to be used for + framed access. It MAY be used in both Access-Request and + Access-Accept packets. + + A value of 'radPPP(1)' represents PPP. + + A value of 'radSLIP(2)' represents SLIP. + + A value of 'radARAP(3)' represents AppleTalk Remote + Access Protocol (ARAP). + + A value of 'radGandalf(4)' represents Gandalf + proprietary SingleLink/MultiLink protocol. + + A value of 'radXylogics(5)' represents Xylogics + proprietary IPX/SLIP. + + A value of 'radX75Synchronous(6)' represents X.75 + Synchronous." + + ::= { ctxtDialupIfFramedProtocolEntry 2 } + + + ctxtDialupIfFramedProtocolMTU OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the Maximum Transmission Unit + to be configured for the user, when it is not negotiated + by some other means (such as PPP). It MAY be used in + Access-Accept packets. It MAY be used in an Access- + Request packet as a hint by the NAS to the server that it + would prefer that value, but the server is not required + to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 3 } + + ctxtDialupIfFramedProtocolCompression OBJECT-TYPE + SYNTAX INTEGER { + radNone(0), + radVJ(1), + radIPXheader(2), + radStacLZS(3) + } + STATUS current + DESCRIPTION + "This Attribute indicates a compression protocol to be + used for the link. It MAY be used in Access-Accept + packets. It MAY be used in an Access-Request packet as a + hint to the server that the NAS would prefer to use that + compression, but the server is not required to honor the + hint. + + More than one compression protocol Attribute MAY be sent. + It is the responsibility of the NAS to apply the proper + compression protocol to appropriate link traffic. + + A value of 'radNone(0)' indicates None. + + A value of 'radVJ(1)' indicates VJ TCP/IP header + compression. + + A value of 'radIPXheader(2)' indicates IPX header + compression. + + A value of 'radStacLZS(3)' indicates Stac-LZS + compression." + + ::= { ctxtDialupIfFramedProtocolEntry 4 } + + + ctxtDialupIfFramedProtocolPortLimit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This Attribute sets the maximum number of ports to be + provided to the user by the NAS. This Attribute MAY be + sent by the server to the client in an Access-Accept + packet. It is intended for use in conjunction with + Multilink PPP [10] or similar uses. It MAY also be sent + by the NAS to the server as a hint that that many ports + are desired for use, but the server is not required to + honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 5 } + + ctxtDialupIfFramedProtocolIpAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "This Attribute indicates the address to be configured + for the user. It MAY be used in Access-Accept packets. + It MAY be used in an Access-Request packet as a hint by + the NAS to the server that it would prefer that address, + but the server is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 6 } + + + ctxtDialupIfFramedProtocolIpNetmask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "This Attribute indicates the IP netmask to be configured + for the user when the user is a router to a network. It + MAY be used in Access-Accept packets. It MAY be used in + an Access-Request packet as a hint by the NAS to the + server that it would prefer that netmask, but the server + is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 7 } + + + + + --- + --- CtxtDialupIfLoginService Table + --- + + ctxtDialupIfLoginServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginServiceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Base class." + + ::= { contextClasses 6 } + + ctxtDialupIfLoginServiceEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginServiceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginServiceTable PRC." + + PIB-INDEX { ctxtDialupIfLoginServiceId } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginServiceTable 1 } + + + + CtxtDialupIfLoginServiceEntry::= SEQUENCE { + ctxtDialupIfLoginServiceId InstanceId, + ctxtDialupIfLoginServiceIpHost InetAddress + } + + ctxtDialupIfLoginServiceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfLoginServiceEntry 1 } + + + ctxtDialupIfLoginServiceIpHost OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginServiceEntry 2 } + + + + --- + --- CtxtDialupIfLoginLat Table (Extends + --- CtxtDialupIfLoginService) + --- + + ctxtDialupIfLoginLatTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginLatEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Extended class." + + ::= { contextClasses 7 } + + ctxtDialupIfLoginLatEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginLatEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginLatTable PRC." + EXTENDS { ctxtDialupIfLoginServiceEntry } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginLatTable 1 } + + + CtxtDialupIfLoginLatEntry::= SEQUENCE { + ctxtDialupIfLoginLatService OCTET STRING, + ctxtDialupIfLoginLatNode OCTET STRING, + ctxtDialupIfLoginLatGroup OCTET STRING, + ctxtDialupIfLoginLatPort OCTET STRING + } + + + ctxtDialupIfLoginLatService OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 1 } + + ctxtDialupIfLoginLatNode OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 2 } + + ctxtDialupIfLoginLatGroup OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 3 } + + ctxtDialupIfLoginLatPort OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 4 } + + + + +-- +-- The RSVP Filter table +-- +rsvpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "RSVP specific filter table." + + ::= { filterClasses 1 } + +rsvpFilterEntry OBJECT-TYPE + SYNTAX RsvpFilterEntry + STATUS current + DESCRIPTION + " RSVP specific filter table entry." + + PIB-INDEX { rsvpFilterId } + UNIQUENESS { } + + ::= { rsvpFilterTable 1 } + + +RsvpFilterEntry ::= SEQUENCE { + rsvpFilterId InstanceId, + rsvpFilterFlags OCTET STRING, + rsvpFilterSendTTL Unsigned32, + rsvpFilterDClassDscp Integer32, + rsvpFilterSessionDestAddrType InetAddressType, + rsvpFilterSessionDestAddr InetAddress, + rsvpFilterSessionDestAddrMask Unsigned32, + rsvpFilterSessionProtocol Integer32, + rsvpFilterSessionDestPort Unsigned32, + rsvpFilterSessionSrcAddrType InetAddressType, + rsvpFilterSessionSrcAddr InetAddress, + rsvpFilterSessionSrcAddrMask Unsigned32, + rsvpFilterSessionSrcPort Unsigned32, + rsvpFilterStyleValue OCTET STRING + } + +rsvpFilterId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { rsvpFilterEntry 1 } + +rsvpFilterFlags OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The Flags carried in the RSVP header. Currently all these + flags should be set to zero." + ::= { rsvpFilterEntry 2 } + +rsvpFilterSendTTL OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The IP TTL value with which the message was sent." + ::= { rsvpFilterEntry 3 } + +rsvpFilterDClassDscp OBJECT-TYPE + SYNTAX Integer32 (-1| 0..63) + STATUS current + DESCRIPTION + "The DClass dscp value." + ::= { rsvpFilterEntry 4 } + +rsvpFilterSessionDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the destination IP address." + ::= { rsvpFilterEntry 5 } + +rsvpFilterSessionDestAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address." + ::= { rsvpFilterEntry 6 } + +rsvpFilterSessionDestAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination IP + address.." + ::= { rsvpFilterEntry 7 } + +rsvpFilterSessionProtocol OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. A + value of -1 means match all." + ::= { rsvpFilterEntry 8 } + +rsvpFilterSessionDestPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 destination port." + ::= { rsvpFilterEntry 9 } + +rsvpFilterSessionSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the source IP address." + ::= { rsvpFilterEntry 10 } + +rsvpFilterSessionSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The source IP address." + ::= { rsvpFilterEntry 11 } + +rsvpFilterSessionSrcAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of a mask for the matching of the source IP + address." + ::= { rsvpFilterEntry 12 } + +rsvpFilterSessionSrcPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 source port." + ::= { rsvpFilterEntry 13 } + +rsvpFilterStyleValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The RSVP packet's Style value." + ::= { rsvpFilterEntry 14 } + + +-- +-- RSVP Common Context Data +-- + +ctxtRsvpTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 8 } + +ctxtRsvpEntry OBJECT-TYPE + SYNTAX CtxtRsvpEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpId } + UNIQUENESS { } + + ::= { ctxtRsvpTable 1 } + +CtxtRsvpEntry ::= SEQUENCE { + ctxtRsvpId InstanceId, + ctxtRsvpMsgType INTEGER, + ctxtRsvpFlags OCTET STRING, + ctxtRsvpSendTTL Unsigned32, + ctxtRsvpInIntfId Unsigned32, + ctxtRsvpInIntfAddrType InetAddressType, + ctxtRsvpInIntfAddr InetAddress, + ctxtRsvpOutIntfId Unsigned32, + ctxtRsvpOutIntfAddrType InetAddressType, + ctxtRsvpOutIntfAddr InetAddress +} + +ctxtRsvpId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpEntry 1 } + +ctxtRsvpMsgType OBJECT-TYPE + SYNTAX INTEGER { + path (1), + pathErr (2), + resv (3), + resvErr (4) + } + STATUS current + DESCRIPTION + "The RSVP message type." + ::= { ctxtRsvpEntry 2 } + +ctxtRsvpFlags OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The RSVP flags contained in the message header. They are + currently undefined and should be set to zero." + ::= { ctxtRsvpEntry 3 } + +ctxtRsvpSendTTL OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The IP TTL value." + ::= { ctxtRsvpEntry 4 } + +ctxtRsvpInIntfId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Interface Id." + ::= { ctxtRsvpEntry 5 } + +ctxtRsvpInIntfAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the In Interface IP address." + ::= { ctxtRsvpEntry 6 } + +ctxtRsvpInIntfAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The In Interface IP address." + ::= { ctxtRsvpEntry 7 } + +ctxtRsvpOutIntfId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Out Interface Id." + ::= { ctxtRsvpEntry 8 } + +ctxtRsvpOutIntfAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the Out Interface IP address." + ::= { ctxtRsvpEntry 9 } + +ctxtRsvpOutIntfAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Out Interface IP address." + ::= { ctxtRsvpEntry 10 } + + +-- +-- RSVP Path Context Data +-- +ctxtRsvpPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpPathEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 9 } + +ctxtRsvpPathEntry OBJECT-TYPE + SYNTAX CtxtRsvpPathEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpPathId } + UNIQUENESS { } + + ::= { ctxtRsvpPathTable 1 } + +CtxtRsvpPathEntry ::= SEQUENCE { + ctxtRsvpPathId InstanceId, + ctxtRsvpPathTokenRate Unsigned32 +} + +ctxtRsvpPathId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpPathEntry 1 } + +ctxtRsvpPathTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpPathEntry 2 } + +-- +-- RSVP PathErr Context Data +-- + +ctxtRsvpPathErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpPathErrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 10 } + +ctxtRsvpPathErrEntry OBJECT-TYPE + SYNTAX CtxtRsvpPathErrEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpPathErrId } + UNIQUENESS { } + + ::= { ctxtRsvpPathErrTable 1 } + +CtxtRsvpPathErrEntry ::= SEQUENCE { + ctxtRsvpPathErrId InstanceId, + ctxtRsvpPathErrTokenRate Unsigned32, + ctxtRsvpPathErrErrorAddrType InetAddressType, + ctxtRsvpPathErrErrorAddr InetAddress, + ctxtRsvpPathErrErrorCode Unsigned32, + ctxtRsvpPathErrErrorValue Unsigned32 +} + +ctxtRsvpPathErrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpPathErrEntry 1 } + +ctxtRsvpPathErrTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpPathErrEntry 2 } + +ctxtRsvpPathErrErrorAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type IP address in error." + ::= { ctxtRsvpPathErrEntry 3 } + +ctxtRsvpPathErrErrorAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Error IP address." + ::= { ctxtRsvpPathErrEntry 4 } + +ctxtRsvpPathErrErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error code." + ::= { ctxtRsvpPathErrEntry 5 } + +ctxtRsvpPathErrErrorValue OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error value." + ::= { ctxtRsvpPathErrEntry 6 } + +-- +-- RSVP Resv Context Data +-- + +ctxtRsvpResvTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpResvEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 11 } + +ctxtRsvpResvEntry OBJECT-TYPE + SYNTAX CtxtRsvpResvEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpResvId } + UNIQUENESS { } + + ::= { ctxtRsvpResvTable 1 } + +CtxtRsvpResvEntry ::= SEQUENCE { + ctxtRsvpResvId InstanceId, + ctxtRsvpResvFSpecGrp TagReferenceId, + ctxtRsvpResvSvcType INTEGER, + ctxtRsvpResvTokenRate Unsigned32 +} + +ctxtRsvpResvId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpResvEntry 1 } + +ctxtRsvpResvFSpecGrp OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ctxtRsvpFilterSpecTagId } + STATUS current + DESCRIPTION + "Identifies a group of Filter Spec entries." + ::= { ctxtRsvpResvEntry 2 } + +ctxtRsvpResvSvcType OBJECT-TYPE + SYNTAX INTEGER { + controlledLoad(1), + guaranteed(2) + } + STATUS current + DESCRIPTION + "An enum describing the type of service." + ::= { ctxtRsvpResvEntry 3 } + +ctxtRsvpResvTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpResvEntry 4 } + +-- +-- RSVP ResvErr Context Data +-- +ctxtRsvpResvErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpResvErrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 12 } + +ctxtRsvpResvErrEntry OBJECT-TYPE + SYNTAX CtxtRsvpResvErrEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpResvErrId } + UNIQUENESS { } + + ::= { ctxtRsvpResvErrTable 1 } + +CtxtRsvpResvErrEntry ::= SEQUENCE { + ctxtRsvpResvErrId InstanceId, + ctxtRsvpResvErrFSpecGrp TagReferenceId, + ctxtRsvpResvErrSvcType INTEGER, + ctxtRsvpResvErrTokenRate Unsigned32, + ctxtRsvpResvErrErrorAddrType InetAddressType, + ctxtRsvpResvErrErrorAddr InetAddress, + ctxtRsvpResvErrErrorCode Unsigned32, + ctxtRsvpResvErrErrorValue Unsigned32 +} + +ctxtRsvpResvErrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpResvErrEntry 1 } + +ctxtRsvpResvErrFSpecGrp OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ctxtRsvpFilterSpecTagId } + STATUS current + DESCRIPTION + "Identifies a group of Filter Spec entries." + ::= { ctxtRsvpResvErrEntry 2 } + +ctxtRsvpResvErrSvcType OBJECT-TYPE + SYNTAX INTEGER { + controlledLoad(1), + guaranteed(2) + } + STATUS current + DESCRIPTION + "An enum describing the type of service." + ::= { ctxtRsvpResvErrEntry 3 } + +ctxtRsvpResvErrTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpResvErrEntry 4 } + +ctxtRsvpResvErrErrorAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type IP address in error." + ::= { ctxtRsvpResvErrEntry 5 } + +ctxtRsvpResvErrErrorAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Error IP address." + ::= { ctxtRsvpResvErrEntry 6 } + +ctxtRsvpResvErrErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error code." + ::= { ctxtRsvpResvErrEntry 7 } + +ctxtRsvpResvErrErrorValue OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error value." + ::= { ctxtRsvpResvErrEntry 8 } + +-- +-- RSVP Filter Spec Context Data +-- + +ctxtRsvpFilterSpecTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpFilterSpecEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 13 } + +ctxtRsvpFilterSpecEntry OBJECT-TYPE + SYNTAX CtxtRsvpFilterSpecEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpFilterSpecId } + UNIQUENESS { } + + ::= { ctxtRsvpFilterSpecTable 1 } + +CtxtRsvpFilterSpecEntry::= SEQUENCE { + ctxtRsvpFilterSpecId InstanceId, + ctxtRsvpFilterSpecTagId TagId, + ctxtRsvpFilterSpecAddrType InetAddressType, + ctxtRsvpFilterSpecAddr InetAddress, + ctxtRsvpFilterSpecPort Unsigned32 +} + +ctxtRsvpFilterSpecId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpFilterSpecEntry 1 } + +ctxtRsvpFilterSpecTagId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Identifies the group of Filter Spec PRIs that this PRI + belongs to." + ::= { ctxtRsvpFilterSpecEntry 2 } + +ctxtRsvpFilterSpecAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the IP address." + ::= { ctxtRsvpFilterSpecEntry 3 } + +ctxtRsvpFilterSpecAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Filter Spec IP address." + ::= { ctxtRsvpFilterSpecEntry 4 } + +ctxtRsvpFilterSpecPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 destination port." + ::= { ctxtRsvpFilterSpecEntry 5 } + + +-- +-- Authentication Extension Tables +-- + +-- +-- AuthExtensions Base Table +-- + +authExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC. This PRC can be extended by + authentication PRCs that contain attributes specific to + that authentication protocol. An instance of the extended + class is created by the PEP and sent to the PDP. The PDP + may send information back to the PEP or may uses the + information to authenticate the PEP's access request. + This PRC itself should not be instantiated. + + This is a 'transient' class. Its instances are temporary + and are deleted by the PEP after a certain time/event. + Thus it must not be referred to by the server." + + ::= { authClasses 1 } + +authExtEntry OBJECT-TYPE + SYNTAX AuthExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthExtTable PRC." + + PIB-INDEX { authExtId } + UNIQUENESS { } + + ::= { authExtTable 1 } + +AuthExtEntry ::= SEQUENCE { + authExtId InstanceId +} + +authExtId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of the + entended provisioning class." + + ::= { authExtEntry 1 } + + + +-- +-- UserAuthExt Table +-- + +userAuthExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF UserAuthExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain user + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 2 } + +userAuthExtEntry OBJECT-TYPE + SYNTAX UserAuthExtEntry + STATUS current + DESCRIPTION + "Entry for the UserAuthExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC AuthExt + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { userAuthExtTable 1 } + +UserAuthExtEntry ::= SEQUENCE { + userAuthExtRealm OCTET STRING, + userAuthExtUsername OCTET STRING +} + + +userAuthExtRealm OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "user realm octet string." + + ::= { userAuthExtEntry 1 } + +userAuthExtUsername OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Username octet string." + + ::= { userAuthExtEntry 2 } + + + + +-- +-- AuthChapExt Table +-- + +authChapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthChapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain CHAP + authentication fields. This PRC extends the PRC + userAuthExtEntry." + + ::= { authClasses 3 } + +authChapExtEntry OBJECT-TYPE + SYNTAX AuthChapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthChapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { userAuthExtEntry } + UNIQUENESS { } + + ::= { authChapExtTable 1 } + +AuthChapExtEntry::= SEQUENCE { + authChapExtId Unsigned32, + authChapExtChal OCTET STRING, + authChapExtResp OCTET STRING +} + +authChapExtId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "CHAP Id field." + + ::= { authChapExtEntry 1 } + +authChapExtChal OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge octet string. The challenge is generated + by the PEP." + + ::= { authChapExtEntry 2 } + +authChapExtResp OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge Response octet string. The challenge + response is sent to the PDP along with the challenge." + + ::= { authChapExtEntry 3 } + + +-- +-- AuthPapExt Table +-- + +authPapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthPapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain PAP + authentication fields. This PRC extends the PRC + userAuthExtEntry." + + ::= { authClasses 4 } + +authPapExtEntry OBJECT-TYPE + SYNTAX AuthPapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthPapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { userAuthExtEntry } + UNIQUENESS { } + + ::= { authPapExtTable 1 } + +AuthPapExtEntry::= SEQUENCE { + authPapExtPwd OCTET STRING +} + +authPapExtPwd OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "PAP password octet string." + + ::= { authPapExtEntry 1 } + + + + + +-- +-- AuthExtResult Table +-- + +authExtResultTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtResultEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain authentication + results. This PRC extends the base PRC authExtEntry." + + ::= { authClasses 5 } + +authExtResultEntry OBJECT-TYPE + SYNTAX AuthExtResultEntry + STATUS current + DESCRIPTION + "Entry for the authExtResultTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC AuthExt + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authExtResultTable 1 } + +AuthExtResultEntry ::= SEQUENCE { + authExtResultSuccess TruthValue +} + + +authExtResultSuccess OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Set to 'true' if authentication was successful, else + false." + + ::= { authExtResultEntry 1 } + + +-- +-- AuthEapReqExt Table +-- + +authEapReqExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapReqExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PEP uses this PRC to send EAP messages + to the PDP." + + ::= { authClasses 6 } + +authEapReqExtEntry OBJECT-TYPE + SYNTAX AuthEapReqExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapReqExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapReqExtTable 1 } + +AuthEapReqExtEntry::= SEQUENCE { + authEapReqExtSpecific OCTET STRING +} + +authEapReqExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Request octet string." + + ::= { authEapReqExtEntry 1 } + + +-- +-- AuthEapRespExt Table +-- + +authEapRespExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapRespExtEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PDP responds using this PRC for EAP + exchanges." + + ::= { authClasses 7 } + +authEapRespExtEntry OBJECT-TYPE + SYNTAX AuthEapRespExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapRespExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapRespExtTable 1 } + +AuthEapRespExtEntry::= SEQUENCE { + authEapRespExtSpecific OCTET STRING +} + +authEapRespExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Response octet string." + + ::= { authEapRespExtEntry 1 } + + +-- +-- conformance section tbd +-- + +END diff --git a/pibs/tubs/ACCESSBIND-PIB-orig b/pibs/tubs/ACCESSBIND-PIB-orig new file mode 100644 index 0000000..c0d7f97 --- /dev/null +++ b/pibs/tubs/ACCESSBIND-PIB-orig @@ -0,0 +1,1626 @@ + ACCESSBIND-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC; + + accessBindPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200107101600Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + + Walter Weiss + Ellacoya Networks + 7 Henry Clay Drive + Merrimack, NH 03054 + Phone: 603-879-7364 + E-mail: wweiss@ellacoya.com + " + DESCRIPTION + "A PIB module containing the set of classes to bind + authorization and authentication to COPS + Provisioning " + + ::= { pib xxx } -- xxx to be assigned by IANA + + + -- + -- The branch OIDs in the AccessBind PIB + -- + + capabilityClasses OBJECT IDENTIFIER ::= { accessBindPib 1 } + sessionClasses OBJECT IDENTIFIER ::= { accessBindPib 2 } + accessorClasses OBJECT IDENTIFIER ::= { accessBindPib 3 } + contextClasses OBJECT IDENTIFIER ::= { accessBindPib 4 } + authClasses OBJECT IDENTIFIER ::= { accessBindPib 5 } + + + -- + -- Session Table + -- + + sessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SessionEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP. The PDP will fill in the sessionStatus field + and send the instance back when sending a decision." + + ::= { sessionClasses 1 } + + sessionEntry OBJECT-TYPE + SYNTAX SessionEntry + STATUS current + DESCRIPTION + "An instance of the sessionTable PRC." + + PIB-INDEX { sessionId } + UNIQUENESS { } + + ::= { sessionTable 1 } + + SessionEntry ::= SEQUENCE { + + sessionId InstanceId, + sessionStatus INTEGER, + sessionRealm OCTET STRING, + sessionUsername OCTET STRING, + sessionDataPath Prid, + sessionBinding ReferenceId, + sessionAccessor ReferenceId + } + + sessionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { sessionEntry 1 } + + + sessionStatus OBJECT-TYPE + SYNTAX INTEGER { + Pending(0), + Enabled(1), + Disabled(2) + } + STATUS current + DESCRIPTION + "This attribute is set by the PDP. Set to true(1) if the + PDP has authorized the session, else set to false(2)." + + ::= { sessionEntry 2 } + + sessionRealm OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Realm name in which the client is requesting + access (sometimes referred to as a domain name." + + ::= { sessionEntry 3 } + + sessionUsername OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Unique user name to identify the client requesting + access." + + ::= { sessionEntry 4 } + + sessionDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + + DESCRIPTION + "This attribute references the first functional data path + element to process data flow for this session. It is + first assigned by the PEP with the + accessorElementDefaultSessionDataPath in the + accessorElement and may optionally be reassigned by the + PDP." + + ::= { sessionEntry 5 } + + + sessionBinding OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute allows a PEP to indicate to the PDP that + this session was generated downstream on the data path + from a session for which an PEP has previously generated + an authorization request. This allows the PDP to + reference additional knowledge acquired from the previous + session such as the credentials or interface data. " + + ::= { sessionEntry 6 } + + + sessionAccessor OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { accessorEntry } + STATUS current + DESCRIPTION + "This attribute references the instance of the previously + provisioned Accessor that resulted in this PEP Access + Request." + + ::= { sessionEntry 7 } + + + -- + -- Accessor Table + -- + + accessorTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The AccessorTable identifies when the PEP should send an + access or authentication request to the PDP. As a + result of this request, a new session may be started. + Hence, the AccessorTable can be said to create or remove + SessionTable entries. " + + + ::= { accessorClasses 1 } + + accessorEntry OBJECT-TYPE + SYNTAX AccessorEntry + STATUS current + DESCRIPTION + " An instance of this class defines the circumstances for + generating an access request, and provides the means for + specifying the contents of the PEP Access Request." + PIB-INDEX { accessorId } + UNIQUENESS { accessorRequestAuth, + accessorAccElmRef, + accessorAuthProtocol, + accessorAuthContext, + accessorDefaultDataPath + } + + ::= { accessorTable 1} + + AccessorEntry::= SEQUENCE { + accessorId InstanceId, + accessorRequestAuth TruthValue, + accessorAccElmRef ReferenceId, + accessorAuthProtocol TagReferenceId, + accessorAuthContext TagReferenceId, + accessorDefaultDataPath Prid + } + + accessorId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies + an instance of the accessorTable class." + + ::= { accessorEntry 1} + + accessorRequestAuth OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether or not authentication is required for + this session. TRUE indicates that authorization is + required." + + ::= { accessorEntry 2} + + accessorAccElmRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { accessorElementEntry } + STATUS current + DESCRIPTION + "A reference to an AccessorElementTable instance which + + determines the scope (criteria for generating a new + request) and interim forwarding behavior." + + ::= { accessorEntry 3} + + accessorAuthProtocol OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { accessorAuthProtocolGroup } + STATUS current + DESCRIPTION + "Identifies a list of accessorAuthProtocolTable entries + associated with this accessor instance." + + ::= { accessorEntry 4} + + accessorAuthContext OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { contextDataGroup } + STATUS current + DESCRIPTION + "Identifies a list of ContextDataTable entries + associated with this accessor instance." + + ::= { accessorEntry 5} + + accessorDefaultDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for æout of scopeÆ traffic." + + ::= { accessorEntry 6} + + -- + -- AccessorElement Table + -- + + accessorElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the criteria to be used to generate + an access request. It also defines the interim forwarding + behavior pending a decision from the server." + ::= { accessorClasses 2 } + + accessorElementEntry OBJECT-TYPE + SYNTAX AccessorElementEntry + STATUS current + DESCRIPTION + "An instance of this class defines request trigger + criteria and interim forwarding behavior for packets." + + PIB-INDEX { accessorElementId } + UNIQUENESS { accessorElementScope } + + ::= { accessorElementTable 1} + + AccessorElementEntry::= SEQUENCE { + accessorElementId InstanceId, + accessorElementScope TagReferenceId, + accessorElementInterimFwdBehavior INTEGER, + accessorElementDefaultSessionDataPath Prid + } + + accessorElementId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the accessorElementTable class." + + ::= { accessorElementEntry 1} + + accessorElementScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { accessorSessionScopeGroup } + STATUS current + DESCRIPTION + "Identifies a list of AccessorSessionScopeTable instances + associated with an instance of this class. This list + defines the criteria for partitioning various portions of + traffic into distinct sessions." + + ::= { accessorElementEntry 2} + + accessorElementInterimFwdBehavior OBJECT-TYPE + SYNTAX INTEGER { + DROP (0), + FORWARD (1), + QUEUE (2) + } + STATUS current + DESCRIPTION + "The forwarding behavior to use while awaiting a PDP + Access Response message." + + ::= { accessorElementEntry 3} + + accessorElementDefaultSessionDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The default data path for each session while waiting for +a + PDP Access Response message." + + + ::= { accessorElementEntry 4} + +-- +-- AccessorSessionScope Table +-- + + accessorSessionScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorSessionScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + partitioning various portions of traffic into distinct + sessions." + + ::= { accessorClasses 3 } + + accessorSessionScopeEntry OBJECT-TYPE + SYNTAX AccessorSessionScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards generating an access request." + PIB-INDEX { accessorSessionScopeId } + UNIQUENESS { accessorSessionScopeGroup, + accessorSessionScopeScopeRef + } + + ::= { accessorSessionScopeTable 1} + + AccessorSessionScopeEntry::= SEQUENCE { + accessorSessionScopeId InstanceId, + accessorSessionScopeGroup TagId, + accessorSessionScopeFilter Prid, + accessorSessionScopePrecedence INTEGER + } + + accessorSessionScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the accessorSessionScopeTable class." + + ::= { accessorSessionScopeEntry 1} + + accessorSessionScopeGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the accessorElementTable + and the accessorSessionScope entries. A group of + + accessorSessionScope entries constitutes the criteria for + partitioning various portions of traffic into distinct + sessions." + + ::= { accessorSessionScopeEntry 2} + + accessorSessionScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { accessorSessionScopeEntry 3} + + accessorSessionScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + accessorSessionScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria." + + ::= { accessorSessionScopeEntry 4} + + + -- + -- AccessorAuthProtocol Table + -- + + + + + accessorAuthProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorAuthProtocolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class lists the authentication protocols that can + be used for an access request originating from a + particular instance of the accessorTable." + + ::= { accessorClasses 4 } + + accessorAuthProtocolEntry OBJECT-TYPE + SYNTAX AccessorAuthProtocolEntry + STATUS current + DESCRIPTION + "An instance of this class describes an authentication + protocol that may be used for an access request. Instances + + of this class that share the same TagId value collectively + constitute a list of authentication protocols that may be + used for a given access request" + PIB-INDEX { accessorAuthProtocolId } + UNIQUENESS { accessorAuthProtocolGroup, + accessorAuthProtocolAuthMechanism + } + + ::= { accessorAuthProtocolTable 1} + + AccessorAuthProtocolEntry::= SEQUENCE { + accessorAuthProtocolId InstanceId, + accessorAuthProtocolGroup TagId, + accessorAuthProtocolAuthMechanism INTEGER + } + + accessorAuthProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the ContextDataTable class." + + ::= { accessorAuthProtocolEntry 1} + + accessorAuthProtocolGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents a binding between an accessorTable instance + and a list of accessorAuthProtocolTable instances." + + ::= { accessorAuthProtocolEntry 2} + + accessorAuthProtocolAuthMechanism OBJECT-TYPE + SYNTAX INTEGER { + PAP (0), + CHAP (1), + EAP-MD5(2), + EAP-TLS(3) + } + STATUS current + DESCRIPTION + "The authentication protocol that may be used for an + access request." + ::= { accessorAuthProtocolEntry 3} + + + + + -- + -- ContextData Table + -- + + +contextDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF ContextDataEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class points to the context information to be + included with an access request." + + ::= { contextClasses 1 } + + contextDataEntry OBJECT-TYPE + SYNTAX ContextDataEntry + STATUS current + DESCRIPTION + "An instance of this class contains the type description + (COPS-PR OID) of the class which needs to be filled in by + the PEP and included with a PEP access request." + PIB-INDEX { contextDataId } + UNIQUENESS { } + + ::= { contextDataTable 1} + + ContextDataEntry::= SEQUENCE { + contextDataId InstanceId, + contextDataGroup TagId, + contextDataSessionRef ReferenceId, + contextDataIfElement PrcIdentifier, + contextDataEncapsulation INTEGER + } + + contextDataId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the contextDataTable class." + + ::= { contextDataEntry 1} + + contextDataGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Defines the grouping of contextData instances + that are applicable to a given Accessor. This attribute + MUST NOT be specified when the instance is used in + Session-specific contextData Request message." + + ::= { contextDataEntry 2} + + contextDataSessionRef OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute is used to specify the Session for which + the ContextData is being requested with a Session- + specific ContextData Request. This attribute MUST NOT be + specified when the instance of the ContextData class is + used in an Accessor Provisioning Decision message." + + ::= { contextDataEntry 3} + + contextDataIfElement OBJECT-TYPE + SYNTAX PrcIdentifier + STATUS current + DESCRIPTION + "The OID of a class whose instance is to be included with + the PEP access request or Session-specific ContextData + Response." + + ::= { contextDataEntry 4} + + contextDataEncapsulation OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "This attribute allows one to distinguish between inner + and outer headers when there are multiple encapsulated + headers of the same type in a packet. + + A value of: + 0 means all headers, + positive number ænÆ means the ænÆth header starting + from the outermost, + negative number ænÆ means the ænÆth header starting from + the innermost." + + ::= { contextDataEntry 5} + + + + -- + -- Layer 3 Header Data PRC + -- + + ctxtL3HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ctxtL3HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + this PRC to make Authentication/Provisioning decisions." + + + ::= { contextClasses 2 } + + ctxtL3HdrEntry OBJECT-TYPE + SYNTAX CtxtL3HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxtL3HdrTable PRC." + + PIB-INDEX { ctxtL3HdrId } + UNIQUENESS { } + + ::= { ctxtL3HdrTable 1 } + + CtxtL3HdrEntry::= SEQUENCE { + ctxtL3HdrId InstanceId, + ctxtL3HdrSrcAddrType InetAddressType, + ctxtL3HdrSrcAddr InetAddress, + ctxtL3HdrDstAddrType InetAddressType, + ctxtL3HdrDstAddr InetAddress, + ctxtL3HdrProtocol Unsigned32, + ctxtL3HdrSrcPort Unsigned32, + ctxtL3HdrDstPort Unsigned32, + ctxtL3HdrDscp Unsigned32, + ctxtL3HdrEcn TruthValue, + ctxtL3HdrIpOpt TruthValue, + ctxtL3HdrEncap Integer32 + } + + ctxtL3HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtL3HdrEntry 1 } + + ctxtL3HdrSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's source L3 address)." + + ::= { ctxtL3HdrEntry 2 } + + ctxtL3HdrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + " The packet's source L3 address." + + + ::= { ctxtL3HdrEntry 3 } + + ctxtL3HdrDstAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's destination L3 address." + + ::= { ctxtL3HdrEntry 4 } + + + ctxtL3HdrDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The packet's destination L3 address." + + ::= { ctxtL3HdrEntry 5 } + + + ctxtL3HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The packet's protocol field." + + ::= { ctxtL3HdrEntry 6 } + + ctxtL3HdrSrcPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 7 } + + ctxtL3HdrDstPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 8 } + + ctxtL3HdrDscp OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "." + + + ::= { ctxtL3HdrEntry 9 } + + ctxtL3HdrEcn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "PEP sets this attribute to true(1) if ECN capable." + + ::= { ctxtL3HdrEntry 10 } + + ctxtL3HdrIpOpt OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "IP Options field in the packet." + + ::= { ctxtL3HdrEntry 11 } + + ctxtL3HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified a + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + + positive number ænÆ means the ænÆth header starting + from the outermost, + negative number ænÆ means the ænÆth header starting from + the innermost." + + ::= { ctxtL3HdrEntry 12 } + + +-- +-- 802.1 Header Data PRC +-- + +ctxt802HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ctxt802HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + + this PRC to make Authorization/Provisioning decisions." + + ::= { contextClasses 3 } + + ctxt802HdrEntry OBJECT-TYPE + SYNTAX Ctxt802HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxt802HdrTable PRC." + + PIB-INDEX { ctxt802HdrId } + UNIQUENESS { } + + ::= { ctxt802HdrTable 1 } + + Ctxt802HdrEntry::= SEQUENCE { + ctxt802HdrId InstanceId, + ctxt802HdrSrcAddr PhysAddress, + ctxt802HdrDstAddr PhysAddress, + ctxt802HdrProtocol Unsigned32, + ctxt802HdrPriority BITS, + ctxt802HdrVlan Unsigned32, + ctxt802HdrEncap Integer32 + } + + ctxt802HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxt802HdrEntry 1 } + + + ctxt802HdrSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + " The packet's source MAC address." + + ::= { ctxt802HdrEntry 2 } + + ctxt802HdrDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The packet's destination MAC address." + + ::= { ctxt802HdrEntry 3 } + + + ctxt802HdrProtocol OBJECT-TYPE + + SYNTAX Unsigned32 (0..'ffff'h) + STATUS current + DESCRIPTION + "The L2 packet's protocol field." + + ::= { ctxt802HdrEntry 4 } + + + ctxt802HdrPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The L2 packet's priority field. This attribute is only + valid for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 5 } + + ctxt802HdrVlan OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The L2 packet's VLAN field. This attribute is only valid + for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 6 } + + ctxt802HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified an + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + positive number ænÆ means the ænÆth header starting + from the outermost, + negative number ænÆ means the ænÆth header starting from + the innermost." + + ::= { ctxt802HdrEntry 7 } + + + -- + -- CtxtDialupInterface Table + -- + + ctxtDialupInterfaceTable OBJECT-TYPE + + SYNTAX SEQUENCE OF CtxtDialupInterfaceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 4 } + + ctxtDialupInterfaceEntry OBJECT-TYPE + SYNTAX CtxtDialupInterfaceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupInterfaceTable PRC." + + PIB-INDEX { ctxtDialupInterfaceId } + UNIQUENESS { } + + ::= { ctxtDialupInterfaceTable 1 } + + CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupInterfaceId InstanceId, + ctxtDialupInterfaceNASPort Integer32, + ctxtDialupInterfaceNASPortId OCTET STRING, + ctxtDialupInterfaceNASPortType INTEGER, + ctxtDialupInterfaceCalledStationId OCTET STRING, + ctxtDialupInterfaceCallingStationId OCTET STRING, + ctxtDialupInterfaceConnectInfo OCTET STRING + } + + ctxtDialupInterfaceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupInterfaceEntry 1 } + + + ctxtDialupInterfaceNASPort OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the physical port number of the + NAS which is authenticating the user. It is only used in + Access-Request packets. Note that this is using 'port' + in its sense of a physical connection on the NAS, not in + the sense of a TCP or UDP port number." + + ::= { ctxtDialupInterfaceEntry 2 } + + + ctxtDialupInterfaceNASPortId OBJECT-TYPE + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute contains a text string which identifies + the port of the NAS which is authenticating the user. It + is only used in Access-Request and Accounting-Request + packets. Note that this is using 'port' in its sense of + a physical connection on the NAS, not in the sense of a + TCP or UDP port number. " + + ::= { ctxtDialupInterfaceEntry 2 } + + ctxtDialupInterfaceNASPortType OBJECT-TYPE + SYNTAX INTEGER { + radAsync(0), + radSync(1), + radIsdnSync(2), + radIsdnAsyncV120(3), + radIsdnAsyncV110(4), + radVirtual(5), + radPIAFS(6), + radHdlcClearChannel(7), + radX25(8), + radX75(9), + radG3Fax(10), + radSDSL(11), + radAdslCAP(12), + radAdslDMT(13), + radIdsl(14), + radEthernet(15), + radXdsl(16), + radCable(17), + radWirelessOther(18), + radWirelessIEEE80211(19) + } + STATUS current + DESCRIPTION + "This Attribute indicates the type of the physical port + of the NAS which is authenticating the user. It can be + used instead of or in addition to the radNasPort (5) + attribute. It is only used in Access-Request packets. + Either radNasPort (5) or radNasPortType or both SHOULD be + present in an Access-Request packet, if the NAS + differentiates among its ports. + + A value of 'radAsync(0)' indicates Async. + + A value of 'radSync(1)' indicates Sync. + + A value of 'radIsdnSync(2)' indicates ISDN Sync. + + A value of 'radIsdnAsyncV120(3)' indicates ISDN + Async V.120. + + + A value of 'radIsdnAsyncV110(4)' indicates ISDN + Async V.110. + + A value of 'radVirtual(5)' indicates Virtual. + Virtual refers to a connection to the NAS via some + transport protocol, instead of through a physical + port. For example, if a user telnetted into a NAS to + authenticate himself as an Outbound-User, the + Access-Request might include radNasPortType = + Virtual as a hint to the RADIUS server that the user + was not on a physical port. + + A value of 'radPIAFS(6)' indicates PIAFS. PIAFS is a + form of wireless ISDN commonly used in Japan, and + stands for PHS (Personal Handyphone System) Internet + Access Forum Standard (PIAFS). + + A value of 'radHdlcClearChannel(7)' indicates HDLC + Clear Channel. + + A value of 'radX25(8)' indicates X.25. + + A value of 'radX75(9)' indicates X.75. + + A value of 'radG3Fax(10)' indicates G.3 Fax. + + A value of 'radSDSL(11)' indicates SDSL û Symmetric + DSL. + + A value of 'radAdslCAP(12)' indicates ADSL-CAP - + Asymmetric DSL, Carrierless Amplitude Phase + Modulation. + + A value of 'radAdslDMT(13)' indicates ADSL-DMT - + Asymmetric DSL, Discrete Multi-Tone. + + A value of 'radIdsl(14)' indicates IDSL û ISDN + Digital Subscriber Line. + + A value of 'radEthernet(15)' indicates Ethernet. + + A value of 'radXdsl(16)' indicates xDSL - Digital + Subscriber Line of unknown type. + + A value of 'radCable(17)' indicates Cable. + + A value of 'radWirelessOther(18)' indicates Wireless + - Other. + + A value of 'radWirelessIEEE80211(19)' indicates + Wireless - IEEE 802.11." + ::= { ctxtDialupInterfaceEntry 2 } + + + ctxtDialupInterfaceCalledStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user called, + using Dialed Number Identification (DNIS) or similar + technology. Note that this may be different from the + phone number the call comes in on. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 2 } + + ctxtDialupInterfaceConnectInfo OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the call came from, + using Automatic Number Identification (ANI) or similar + technology. It is only used in Access-Request packets." + ::= { ctxtDialupInterfaceEntry 2 } + + + + + --- + --- CtxtDialupInterfaceFramedProtocol Table + --- + + ctxtDialupIfFramedProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfFramedProtocolEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 5 } + + ctxtDialupIfFramedProtocolEntry OBJECT-TYPE + SYNTAX CtxtDialupIfFramedProtocolEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfFramedProtocolTable PRC." + + PIB-INDEX { ctxtDialupIfFramedProtocolId } + UNIQUENESS { } + + ::= { ctxtDialupIfFramedProtocolTable 1 } + + CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupIfFramedProtocolId InstanceId, + ctxtDialupIfFramedProtocolProt INTEGER, + + ctxtDialupIfFramedProtocolMTU Integer32, + ctxtDialupIfFramedProtocolCompression INTEGER, + ctxtDialupIfFramedProtocolPortLimit Unsigned32, + ctxtDialupIfFramedProtocolIpAddress IpAddress, + ctxtDialupIfFramedProtocolIpNetmask IpAddress + } + + ctxtDialupIfFramedProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfFramedProtocolEntry 1 } + + + ctxtDialupIfFramedProtocolProt OBJECT-TYPE + SYNTAX INTEGER { + radPPP(1), + radSLIP(2), + radARAP(3), + radGandalf(4), + radXylogics(5), + radX75Synchronous(6) + } + STATUS current + DESCRIPTION + "This Attribute indicates the framing to be used for + framed access. It MAY be used in both Access-Request and + Access-Accept packets. + + A value of 'radPPP(1)' represents PPP. + + A value of 'radSLIP(2)' represents SLIP. + + A value of 'radARAP(3)' represents AppleTalk Remote + Access Protocol (ARAP). + + A value of 'radGandalf(4)' represents Gandalf + proprietary SingleLink/MultiLink protocol. + + A value of 'radXylogics(5)' represents Xylogics + proprietary IPX/SLIP. + + A value of 'radX75Synchronous(6)' represents X.75 + Synchronous." + + ::= { ctxtDialupIfFramedProtocolEntry 2 } + + + ctxtDialupIfFramedProtocolMTU OBJECT-TYPE + SYNTAX Integer32 + + STATUS current + DESCRIPTION + "This Attribute indicates the Maximum Transmission Unit + to be configured for the user, when it is not negotiated + by some other means (such as PPP). It MAY be used in + Access-Accept packets. It MAY be used in an Access- + Request packet as a hint by the NAS to the server that it + would prefer that value, but the server is not required + to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 3 } + + ctxtDialupIfFramedProtocolCompression OBJECT-TYPE + SYNTAX INTEGER { + radNone(0), + radVJ(1), + radIPXheader(2), + radStacLZS(3) + } + STATUS current + DESCRIPTION + "This Attribute indicates a compression protocol to be + used for the link. It MAY be used in Access-Accept + packets. It MAY be used in an Access-Request packet as a + hint to the server that the NAS would prefer to use that + compression, but the server is not required to honor the + hint. + + More than one compression protocol Attribute MAY be sent. + It is the responsibility of the NAS to apply the proper + compression protocol to appropriate link traffic. + + A value of 'radNone(0)' indicates None. + + A value of 'radVJ(1)' indicates VJ TCP/IP header + compression. + + A value of 'radIPXheader(2)' indicates IPX header + compression. + + A value of 'radStacLZS(3)' indicates Stac-LZS + compression." + + ::= { ctxtDialupIfFramedProtocolEntry 4 } + + + ctxtDialupIfFramedProtocolPortLimit OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute sets the maximum number of ports to be + provided to the user by the NAS. This Attribute MAY be + sent by the server to the client in an Access-Accept + + packet. It is intended for use in conjunction with + Multilink PPP [10] or similar uses. It MAY also be sent + by the NAS to the server as a hint that that many ports + are desired for use, but the server is not required to + honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 5 } + + ctxtDialupIfFramedProtocolIpAddress OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "This Attribute indicates the address to be configured + for the user. It MAY be used in Access-Accept packets. + It MAY be used in an Access-Request packet as a hint by + the NAS to the server that it would prefer that address, + but the server is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 6 } + + + ctxtDialupIfFramedProtocolIpNetmask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "This Attribute indicates the IP netmask to be configured + for the user when the user is a router to a network. It + MAY be used in Access-Accept packets. It MAY be used in + an Access-Request packet as a hint by the NAS to the + server that it would prefer that netmask, but the server + is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 7 } + + + + + --- + --- CtxtDialupIfLoginService Table + --- + + ctxtDialupIfLoginServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginServiceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Base class." + + ::= { contextClasses 6 } + + ctxtDialupIfLoginServiceEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginServiceEntry + STATUS current + + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginServiceTable PRC." + + PIB-INDEX { ctxtDialupIfLoginServiceId } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginServiceTable 1 } + + + + CtxtDialupIfLoginServiceEntry::= SEQUENCE { + ctxtDialupIfLoginServiceId InstanceId, + ctxtDialupIfLoginIpHost IpAddress + } + + ctxtDialupIfLoginServiceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfLoginServiceEntry 1 } + + + ctxtDialupIfLoginIpHost OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginServiceEntry 2 } + + + + --- + --- CtxtDialupIfLoginLat Table (Extends CtxtDialupIfLoginService) + --- + + ctxtDialupIfLoginLatTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginLatEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Extended class." + + ::= { contextClasses 7 } + + ctxtDialupIfLoginLatEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginLatEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginLatTable PRC." + + + EXTENDS { ctxtDialupIfLoginServiceEntry } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginLatTable 1 } + + + CtxtDialupIfLoginLatEntry::= SEQUENCE { + ctxtDialupIfLoginLatService OCTET STRING, + ctxtDialupIfLoginLatNode OCTET STRING, + ctxtDialupIfLoginLatGroup OCTET STRING, + ctxtDialupIfLoginLatPort OCTET STRING + } + + + ctxtDialupIfLoginLatService OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 1 } + + ctxtDialupIfLoginLatNode OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 2 } + + ctxtDialupIfLoginLatGroup OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 3 } + + ctxtDialupIfLoginLatPort OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 4 } + + + -- + -- Authentication Extension Tables + -- + + -- + + -- AuthExtensions Base Table + -- + + authExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC. This PRC can be extended by + authentication PRCs that contain attributes specific to + that authentication protocol. An instance of the extended + class is created by the PEP and sent to the PDP. The PDP + may send information back to the PEP or may uses the + information to authenticate the PEP's access request. This + PRC itself should not be instantiated. + + This is a ætransientÆ class. Its instances are temporary + and are deleted by the PEP after a certain time/event. + Thus it must not be referred to by the server." + + ::= { authClasses 1 } + + authExtEntry OBJECT-TYPE + SYNTAX AuthExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthExtTable PRC." + + PIB-INDEX { authExtId } + UNIQUENESS { } + + ::= { authExtTable 1 } + + AuthExtEntry ::= SEQUENCE { + authExtId InstanceId, + authExtSession ReferenceId + } + + authExtId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of the + entended provisioning class." + + ::= { authExtEntry 1 } + + authExtSession OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute is set by the PEP to reference the + + session for which authentication is being requested." + + ::= { authExtEntry 2 } + + + + + + + -- + -- AuthChapExt Table + -- + + authChapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthChapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain CHAP + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 2 } + + authChapExtEntry OBJECT-TYPE + SYNTAX AuthChapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthChapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authChapExtTable 1 } + + AuthChapExtEntry::= SEQUENCE { + authChapExtId Unsigned32, + authChapExtChal OCTET STRING, + authChapExtResp OCTET STRING + } + + authChapExtId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "CHAP Id field." + + ::= { authChapExtEntry 1 } + + authChapExtChal OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + + DESCRIPTION + "CHAP Challenge octet string. The challenge is generated + by the PEP." + + ::= { authChapExtEntry 2 } + + authChapExtResp OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge Response octet string. The challenge + response is sent to the PDP along with the challenge." + + ::= { authChapExtEntry 3 } + + + -- + -- AuthPapExt Table + -- + + authPapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthPapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain PAP + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 3 } + + authPapExtEntry OBJECT-TYPE + SYNTAX AuthPapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthPapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authPapExtTable 1 } + + AuthPapExtEntry::= SEQUENCE { + authPapExtPwd OCTET STRING + } + + authPapExtPwd OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "PAP password octet string." + + + ::= { authPapExtEntry 1 } + + + -- + -- AuthEapReqExt Table + -- + + authEapReqExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapReqExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PEP uses this PRC to send EAP messages + to the PDP." + + ::= { authClasses 4 } + + authEapReqExtEntry OBJECT-TYPE + SYNTAX AuthEapReqExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapReqExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapReqExtTable 1 } + + AuthEapReqExtEntry::= SEQUENCE { + authEapReqExtSpecific OCTET STRING + } + + authEapReqExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Request octet string." + + ::= { authEapReqExtEntry 1 } + + + -- + -- AuthEapRespExt Table + -- + + authEapRespExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapRespExtEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PDP responds using this PRC for EAP + exchanges." + + ::= { authClasses 5 } + + authEapRespExtEntry OBJECT-TYPE + SYNTAX AuthEapRespExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapRespExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapRespExtTable 1 } + + AuthEapRespExtEntry::= SEQUENCE { + authEapRespExtSpecific OCTET STRING + } + + authEapRespExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Response octet string." + + ::= { authEapRespExtEntry 1 } + + +-- +-- conformance section tbd +-- + +END diff --git a/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB new file mode 100644 index 0000000..b0ecd87 --- /dev/null +++ b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB @@ -0,0 +1,292 @@ +ACCOUNTING-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE, pib + FROM COPS-PR-SPPI + ExtUTCTime + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB; + + acctPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com " + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all accounting + and reporting policies" + + ::= { ibrpib 9 } -- to be assigned by IANA! +-- +-- The accounting type report group +-- + +frwkAtRptGroupClasses + OBJECT IDENTIFIER ::= { acctPolFrameworkPib 2 } + +-- +-- Textual Conventions +-- +Count ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A count represents a value used by attributes that + record policy usage. A count is of value zero or + greater and is incremented according to defined + + + policy usage. When the maximum value is reached, the + value sticks. The value is reset to zero upon + reporting the value to the PDP." + +SYNTAX Unsigned64 ( 0..18446744073709551615) + +-- +-- resume reporting indicator +-- + +frwkAtRptResumeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptResumeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + accounting type reports." + + ::= { frwkAtRptGroupClasses 1} + +frwkAtRptResumeEntry OBJECT-TYPE + SYNTAX FrwkAtRptResumeEntry + STATUS current + DESCRIPTION + "An instance of this class can indicate when to + resume sending accounting type reports + by the PEP." + PIB-INDEX { frwkAtRptResumeId} + + ::= { frwkAtRptResumeTable 1} + +FrwkAtRptResumeEntry ::= SEQUENCE { + frwkAtRptResumeId InstanceId, + frwkAtRptResumeIndicator INTEGER + } + +frwkAtRptResumeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptResumeTable class." + + ::= { frwkAtRptResumeEntry 1} + +frwkAtRptResumeIndicator OBJECT-TYPE + SYNTAX INTEGER { + noReports(0), + sendReports(1) + } + STATUS current + DESCRIPTION + + + "The value indicates if the PEP is to send cached + usage policies via accounting type report messages. + The enumeration values are: + (0) Don't send accounting type report messages + (1) Resume accounting type report messages. Send + cached usage policies now " + + ::= { frwkAtRptResumeEntry 2 } + +-- +-- The Accounting Type Report Linkage Table +-- + +frwkAtRptLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptLinkEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkAtRptGroupClasses 2} + +frwkAtRptLinkEntry OBJECT-TYPE + SYNTAX FrwkAtRptLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkAtRptLinkId} + UNIQUENESS { frwkAtRptLinkId, + frwkAtRptLinkSel, + frwkAtRptLinkUsage } + ::= {frwkAtRptLinkTable 1} + +FrwkAtRptLinkEntry ::= SEQUENCE { + frwkAtRptLinkId InstanceId, + frwkAtRptLinkSel Prid, + frwkAtRptLinkUsage OBJECT IDENTIFIER, + frwkAtRptLinkInterval Integer32 +} + +frwkAtRptLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptLinkTable class." + ::= { frwkAtRptLinkEntry 1} + +frwkAtRptLinkSel OBJECT-TYPE + + + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkAtRptLinkEntry 2} + +frwkAtRptLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor,record and report." + + ::= { frwkAtRptLinkEntry 3} + +frwkAtRptLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specificed by the PDP in the client + accept message. A frwkAtRptInterval of 1 is equal to + the value of the Accounting Timer. This value must be 1 + or greater. " + + ::= { frwkAtRptLinkEntry 4} + +-- +-- The filter statistics usage +-- + +frwkAtRptFilterStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptFilterStatsUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor, record and report. It contains the + of the PRID of the linkage instance associating + the selection criteria instance with the usage + instance." + + ::= { frwkAtRptGroupClasses 3} + +frwkAtRptFilterStatsUsageEntry OBJECT-TYPE + SYNTAX FrwkAtRptFilterStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + + + PIB-INDEX {frwkAtRptFilterStatsUsageId} + UNIQUENESS { frwkAtRptFilterStatsUsageLinkPRID } + + ::= {frwkAtRptFilterStatsUsageTable 1} + +FrwkAtRptFilterStatsUsageEntry ::= SEQUENCE { + frwkAtRptFilterStatsUsageId InstanceId, + frwkAtRptFilterStatsUsageLinkPRID Prid, + frwkAtRptFilterStatsUsagePacketCount Count, + frwkAtRptFilterStatsUsageByteCount Count, + frwkAtRptFilterStatsUsageTimeStamp ExtUTCTime + +} + +frwkAtRptFilterStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkAtRptFilterStatsUsageEntry 1 } + +frwkAtRptFilterStatsUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkAtRptFilterStatsUsageEntry 2 } + +frwkAtRptFilterStatsUsagePacketCount OBJECT-TYPE + SYNTAX Count + STATUS current + DESCRIPTION + "The count of packets matching the specified filter + during the reporting interval." + + ::= {frwkAtRptFilterStatsUsageEntry 3} + +frwkAtRptFilterStatsUsageByteCount OBJECT-TYPE + SYNTAX Count + STATUS current + DESCRIPTION + "The byte count of packets matching the + specified filter during the reporting interval." + + ::= { frwkAtRptFilterStatsUsageEntry 4} + +frwkAtRptFilterStatsUsageTimeStamp OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + + + "The last timestamp when a packet was received." + + ::= { frwkAtRptFilterStatsUsageEntry 5} + +END diff --git a/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..6bf1a24 --- /dev/null +++ b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig @@ -0,0 +1,291 @@ +ACCOUNTING-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ExtUTCTime, Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + PolicyInstanceId, PolicyReferenceId + + + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB; + + acctPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com " + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all accounting + and reporting policies" + + ::= { tbd } +-- +-- The accounting type report group +-- + +frwkAtRptGroupClasses + OBJECT IDENTIFIER ::= { acctPolFrameworkPib 2 } + +-- +-- Textual Conventions +-- +Count ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A count represents a value used by attributes that + record policy usage. A count is of value zero or + greater and is incremented according to defined + + + policy usage. When the maximum value is reached, the + value sticks. The value is reset to zero upon + reporting the value to the PDP." + +SYNTAX Unsigned64 ( 0..18446744073709551615) + +-- +-- resume reporting indicator +-- + +frwkAtRptResumeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptResumeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + accounting type reports." + + ::= { frwkAtRptGroupClasses 1} + +frwkAtRptResumeEntry OBJECT-TYPE + SYNTAX FrwkAtRptResumeEntry + STATUS current + DESCRIPTION + "An instance of this class can indicate when to + resume sending accounting type reports + by the PEP." + PIB-INDEX { frwkAtRptResumeId} + + ::= { frwkAtRptResumeTable 1} + +FrwkAtRptResumeEntry ::= SEQUENCE { + frwkAtRptResumeId InstanceId, + frwkAtRptResumeIndicator INTEGER + } + +frwkAtRptResumeId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptResumeTable class." + + ::= { frwkAtRptResumeEntry 1} + +frwkAtRptResumeIndicator OBJECT-TYPE + SYNTAX INTEGER { + NO_REPORTS(0), + SEND_REPORTS(1) + } + STATUS current + DESCRIPTION + + + "The value indicates if the PEP is to send cached + usage policies via accounting type report messages. + The enumeration values are: + (0) DonËt send accounting type report messages + (1) Resume accounting type report messages. Send + cached usage policies now " + + ::= { frwkAtRptResumeEntry 2 } + +-- +-- The Accounting Type Report Linkage Table +-- + +frwkAtRptLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptLinkEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkAtRptGroupClasses 2} + +frwkAtRptLinkEntry OBJECT-TYPE + SYNTAX FrwkAtRptLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkAtRptLinkId} + UNIQUENESS { frwkAtRptLinkId, + frwkAtRptLinkSel, + frwkAtRptLinkUsage } + ::= {frwkAtRptLinkTable 1} + +FrwkAtRptLinkEntry ::= SEQUENCE { + frwkAtRptLinkId InstanceID, + frwkAtRptLinkSel Prid, + frwkAtRptLinkUsage OBJECT IDENTIFIER, + frwkAtRptLinkInterval Integer32 +} + +frwkAtRptLinkId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptLinkTable class." + ::= { frwkAtRptLinkEntry 1} + +frwkAtRptLinkSel OBJECT-TYPE + + + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkAtRptLinkEntry 2} + +frwkAtRptLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor,record and report." + + ::= { frwkAtRptLinkEntry 3} + +frwkAtRptInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specificed by the PDP in the client + accept message. A frwkAtRptInterval of 1 is equal to + the value of the Accounting Timer. This value must be 1 + or greater. " + + ::= { frwkAtRptLinkEntry 4} + +-- +-- The filter statistics usage +-- + +frwkAtRptFilterStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptFilterStatsUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor, record and report. It contains the + of the PRID of the linkage instance associating + the selection criteria instance with the usage + instance." + + ::= { frwkAtRptGroupClasses 3} + +frwkAtRptFilterStatsUsageEntry OBJECT-TYPE + SYNTAX FrwkAtRptFilterStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + + + PIB-INDEX {frwkAtRptFilterStatsUsageId} + UNIQUENESS { frwkAtRptFilterStatsUsageLinkPRID } + + ::= {frwkAtRptFilterStatsUsageTable 1} + +FrwkAtRptFilterStatsUsageEntry ::= SEQUENCE { + frwkAtRptFilterStatsUsageId InstanceID, + frwkAtRptFilterStatsUsageLinkPRID Prid, + frwkAtRptFilterStatsUsagePacketCount Counts, + frwkAtRptFilterStatsUsageByteCount Counts, + fwkAtRptFilterStatsUsageTimeStamp ExtUTCTime + +} + +frwkAtRptFilterStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkAtRptFilterStatsUsageEntry 1 } + +frwkAtRptFilterStatsUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkAtRptFilterStatsUsageEntry 2 } + +frwkAtRptFilterStatsUsagePacketCount OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The count of packets matching the specified filter + during the reporting interval." + + ::= {frwkAtRptFilterStatsUsageEntry 3} + +frwkAtRptFilterStatsUsageByteCount OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The byte count of packets matching the + specified filter during the reporting interval." + + ::= { frwkAtRptFilterStatsUsageEntry 4} + +frwkAtRptFilterStatsSelectTimeStamp OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + + + "The last timestamp when a packet was received." + + ::= { frwkAtRptFilterStatsSelectEntry 5} + +END diff --git a/pibs/tubs/FEEDBACK-FRAMEWORK-PIB b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB new file mode 100644 index 0000000..8ca995d --- /dev/null +++ b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB @@ -0,0 +1,826 @@ + FEEDBACK-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Unsigned64, + Integer32, Integer64, MODULE-IDENTITY, OBJECT-TYPE, pib + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, TagReferenceId, TagId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB + Counter64, ExtUTCTime + FROM SNMPv2-SMI + IfDirection + FROM DIFFSERV-MIB; + + feedbackPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + Martin Bokaemper + Unisphere Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@unispherenetworks.com" + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies" + + ::= { ibrpib 7 } -- to be assigned by IANA + -- + -- The feedback report group + -- + + frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 1 } + + -- + -- Feedback Action Table + -- + + frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + feedback type reports." + + ::= { frwkFeedbackGroupClasses 1} + + frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "An instance of this class can indicates a action + the PEP is to take regarding the usage policies." + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + + FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri INTEGER, + frwkFeedbackActionList TagReferenceId + } + + frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackActionTable class." + + ::= { frwkFeedbackActionEntry 1} + + frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + suspendUsageMonitoringAndReports(0), + suspendReportsOnly(1), + resumeUsageAndReporting(2), + solicitUsageReportNow(3) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via feedback type report messages. + The enumeration values are: + (0) SUSPEND USAGE MONITORING_AND_REPORTS + (1) SUSPEND_REPORTS_ONLY + (2) RESUME_USAGE AND REPORTING + (3) SOLICIT USAGE REPORT NOW " + + ::= { frwkFeedbackActionEntry 2 } + + frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionListId attribute should be + ignored, and the action applied to all policies. A + value of 1 indicates that the action entry has a + specific list of policies to which it is to be + applied." + ::= { frwkFeedbackActionEntry 3} + + frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { frwkFeedbackActionListGroup } + STATUS current + DESCRIPTION + "Identifies a list of + frwkFeedbackActionListTable instances + associated with the action described by + this instance" + ::= { frwkFeedbackActionEntry 4} + + -- + -- Feedback Action List Table + + frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains the PRIDs of the + linkage instance which are to be impacted by + the frwkFeedbackActionIndicator for this + list." + ::= { frwkFeedbackGroupClasses 2} + + frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "This class identifies a set of linkage instances + for which the PDP is suspending, resuming or + soliciting usage feedback." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListGroup, + frwkFeedbackActionListPRID + } + ::= { frwkFeedbackActionListTable 1} + + FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceId, + frwkFeedbackActionListGroup TagId, + frwkFeedbackActionListPRID Prid + } + + frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + + frwkFeedbackActionListGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the Action + table entry and the Action List table entries" + ::= { frwkFeedbackActionListEntry 2 } + + frwkFeedbackActionListPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the linkage instance(s) belonging + to the list of instances identified by the + list id upon which the suspend, resume or + solicit action is directed." + + ::= { frwkFeedbackActionListEntry 3 } + + -- + -- The Feedback Selection Usage Combination Capability Table + -- + + frwkFeedbackSelUsageComboCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSelUsageComboCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table defines the valid combinations of the + selection criteria PRCs, the usage PRCs and the + threshold PRCs that the PEP supports." + ::= { frwkFeedbackGroupClasses 3} + + + frwkFeedbackSelUsageComboCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSelUsageComboCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold PRCs for feedback supported by the PEP + device." + PIB-INDEX {frwkFeedbackSelUsageComboCapId} + UNIQUENESS { frwkFeedbackSelUsageComboCapId, + frwkFeedbackSelUsageComboCapSelection, + frwkFeedbackSelUsageComboCapUsage, + frwkFeedbackSelUsageComboCapThreshold + } + ::= {frwkFeedbackSelUsageComboCapsTable 1} + + FrwkFeedbackSelUsageComboCapsEntry ::= SEQUENCE { + frwkFeedbackSelUsageComboCapId InstanceId, + frwkFeedbackSelUsageComboCapSelection OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapUsage OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapThreshold OBJECT IDENTIFIER + } + + frwkFeedbackSelUsageComboCapId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackSelUsageComboCapsEntry + class." + ::= { frwkFeedbackSelUsageComboCapsEntry 1} + + frwkFeedbackSelUsageComboCapSelection OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the selection class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + frwkFeedbackSelUsageComboCapUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that is supported by + the device in combination with the selection PRC and the + threshold PRC defined in this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 3} + + + frwkFeedbackSelUsageComboCapThreshold OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the threshold class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 4} + + -- + -- The Feedback Report Linkage Table + -- + + frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + + frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkFeedbackLinkId} + UNIQUENESS { frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + + FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceId, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage OBJECT IDENTIFIER, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + } + + frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + + frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkFeedbackLinkEntry 2} + + frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + + frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + + frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the threshold class instance. This + instance specifies the threshold values for the usage + policy." + ::= { frwkFeedbackLinkEntry 5} + + frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2) + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the 'periodic' flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the 'periodic' flag is not set, reports will only be + generated when solicited by the PDP. + The 'threshold' and 'changeOnly' flags make the + periodic reports conditional - these flags only make + sense in combination with the 'periodic' flag." + + ::= { frwkFeedbackLinkEntry 6} + + + -- + -- All actual usage classes are in the separate + -- FrwkFeedbackUsageClasses group + -- + + frwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 2 } + + + -- + -- The generic traffic (byte & packet count) usage class + -- + + frwkFeedbackTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + + frwkFeedbackTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficUsageId} + UNIQUENESS { frwkFeedbackTrafficUsageLinkPRID } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackTrafficUsageEntry ::= SEQUENCE { + frwkFeedbackTrafficUsageId InstanceId, + frwkFeedbackTrafficUsageLinkPRID Prid, + frwkFeedbackTrafficUsagePacketCount Counter64, + frwkFeedbackTrafficUsageByteCount Counter64 + + } + + frwkFeedbackTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficUsageEntry 1 } + + frwkFeedbackTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkFeedbackTrafficUsageEntry 2 } + + frwkFeedbackTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element during the reporting interval." + + ::= {frwkFeedbackTrafficUsageEntry 3} + + frwkFeedbackTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element." + ::= { frwkFeedbackTrafficUsageEntry 4} + + + + -- + -- The traffic usage class, qualified for an interface + -- + + frwkFeedbackIfTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage PRC similar to the basic TrafficUsage class + that also contains a reference to an interface. This + class should be used with a selection criteria that + matches an element that is assigned to multiple + interfaces. The interface field can be used to + associate the instances of this class with the specific + element's assignment." + ::= { frwkFeedbackUsageClasses 2 } + + frwkFeedbackIfTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficUsageId} + UNIQUENESS { frwkFeedbackIfTrafficUsageLinkPRID, + frwkFeedbackIfTrafficUsageInterface } + + ::= {frwkFeedbackIfTrafficUsageTable 1} + + FrwkFeedbackIfTrafficUsageEntry ::= SEQUENCE { + frwkFeedbackIfTrafficUsageId InstanceId, + frwkFeedbackIfTrafficUsageLinkPRID Prid, + frwkFeedbackIfTrafficUsageInterface Prid, + frwkFeedbackIfTrafficUsagePacketCount Counter64, + frwkFeedbackIfTrafficUsageByteCount Counter64 + + } + + frwkFeedbackIfTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficUsageEntry 1 } + + frwkFeedbackIfTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + ::= { frwkFeedbackIfTrafficUsageEntry 2 } + + frwkFeedbackIfTrafficUsageInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface." + ::= { frwkFeedbackIfTrafficUsageEntry 3 } + + frwkFeedbackIfTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated element + during the reporting interval." + ::= { frwkFeedbackIfTrafficUsageEntry 4 } + + frwkFeedbackIfTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets + handled by the associated element." + ::= { frwkFeedbackIfTrafficUsageEntry 5 } + + + + -- + -- The Threshold class that accompanies the above Usage PRCs + -- + + frwkFeedbackTrafficThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresholdEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficUsageTable, + frwkFeedbackIfTrafficUsageTable and other similar + usage classes. + The usage object is considered to match the threshold + condition if the following expression evaluates to + 'TRUE': + { + byteCond = (ByteThreshold != NULL) ? + (ByteThreshold > ByteCounter) : FALSE; + packetCond (PacketThreshold != NULL) ? + (PacketThreshold > PacketCounter) : FALSE; + return ( byteCond || packetCond ); + }" + + ::= { frwkFeedbackUsageClasses 3} + + frwkFeedbackTrafficThresholdEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresholdEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresholdId} + + ::= {frwkFeedbackTrafficThresholdTable 1} + + FrwkFeedbackTrafficThresholdEntry ::= SEQUENCE { + frwkFeedbackTrafficThresholdId InstanceId, + frwkFeedbackTrafficThresholdPacketThreshold Integer64, + frwkFeedbackTrafficThresholdByteThreshold Integer64 + } + + frwkFeedbackTrafficThresholdId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficThresholdEntry 1 } + + frwkFeedbackTrafficThresholdPacketThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackTrafficThresholdEntry 2 } + + frwkFeedbackTrafficThresholdByteThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackTrafficThresholdEntry 3 } + + + -- + -- All Selection classes are in the separate + -- FrwkFeedbackSelectionClasses group + -- + + frwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 3 } + + -- + -- The Set WatchPoint Table + -- + + frwkFeedbackSetWatchPointTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSetWatchPointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific processing point to watch + for the desired usage. This selection criteria + may be useful in PIBs that are designed using a + datapath approach where the policies are linked + and can be reused within the PIB." + + ::= { frwkFeedbackSelectionClasses 1} + + frwkFeedbackSetWatchPointEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSetWatchPointEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackSetWatchPointId } + + + ::= {frwkFeedbackSetWatchPointTable 1} + + FrwkFeedbackSetWatchPointEntry ::= SEQUENCE { + frwkFeedbackSetWatchPointId InstanceId, + frwkFeedbackSetWatchPointPolicyPRID Prid + + } + + frwkFeedbackSetWatchPointId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackSetWatchPointEntry 1 } + + frwkFeedbackSetWatchPointPolicyPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the enforcement policy instance where + the associated usage is to be monitored." + + ::= { frwkFeedbackSetWatchPointEntry 2 } + + + -- + -- DPE Selection Class + -- + + frwkFeedbackDPESelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackDPESelectionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific data path element to collect + usage information" + + ::= { frwkFeedbackSelectionClasses 2} + + frwkFeedbackDPESelectionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackDPESelectionEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionId } + UNIQUENESS { frwkFeedbackDPESelectionDataPathElement, + frwkFeedbackDPESelectionInterface, + frwkFeedbackDPESelectionIfDirection } + + ::= {frwkFeedbackDPESelectionTable 1} + + FrwkFeedbackDPESelectionEntry ::= SEQUENCE { + frwkFeedbackDPESelectionId InstanceId, + frwkFeedbackDPESelectionDataPathElement Prid, + frwkFeedbackDPESelectionInterface Prid, + frwkFeedbackDPESelectionIfDirection IfDirection + } + + frwkFeedbackDPESelectionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionEntry 1 } + + + frwkFeedbackDPESelectionDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path assigned to the + interface/direction combination referenced in this + object." + ::= { frwkFeedbackDPESelectionEntry 2 } + + frwkFeedbackDPESelectionInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface" + ::= { frwkFeedbackDPESelectionEntry 3 } + + frwkFeedbackDPESelectionIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "The direction (ingress/egress) that to which the DPE + is attached that we want to match." + ::= { frwkFeedbackDPESelectionEntry 4 } + + + -- + -- DPE Selection Query Class + -- + + frwkFeedbackDPESelectionQueryTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackDPESelectionQueryEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a set of assignments of a data path element + based on an entry in the Data Path Table + Each matched assignment will collect and report usage + independently, so this selection criteria should be + combined with a Usage PRC that includes an interface + reference." + + ::= { frwkFeedbackSelectionClasses 3} + + frwkFeedbackDPESelectionQueryEntry OBJECT-TYPE + SYNTAX FrwkFeedbackDPESelectionQueryEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionQueryId } + UNIQUENESS { frwkFeedbackDPESelectionQueryDataPath, + frwkFeedbackDPESelectionQueryDataPathElement } + + ::= {frwkFeedbackDPESelectionQueryTable 1} + + FrwkFeedbackDPESelectionQueryEntry ::= SEQUENCE { + frwkFeedbackDPESelectionQueryId InstanceId, + frwkFeedbackDPESelectionQueryDataPath Prid, + frwkFeedbackDPESelectionQueryDataPathElement Prid + } + + frwkFeedbackDPESelectionQueryId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionQueryEntry 1 } + + frwkFeedbackDPESelectionQueryDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a Data Path instance, identifying a + group of data path assignments." + ::= { frwkFeedbackDPESelectionQueryEntry 2 } + + frwkFeedbackDPESelectionQueryDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path referenced from the + frwkFeedbackDPESelectionQueryDataPath field." + ::= { frwkFeedbackDPESelectionQueryEntry 3 } + + END diff --git a/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..9cd0049 --- /dev/null +++ b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig @@ -0,0 +1,825 @@ + FEEDBACK-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ExtUTCTime, Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + PolicyInstanceId, PolicyReferenceId + FROM COPS-PR-SPPI-TC; + RoleCombination + FROM FRAMEWORK-ROLE-PIB; + Counter64 + FROM SNMPv2-SMI; + + feedbackPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + + Martin Bokaemper + Unisphere Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@unispherenetworks.com" + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies" + + ::= { tbd } + -- + -- The feedback report group + -- + + frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 1 } + + -- + -- Feedback Action Table + -- + + frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + feedback type reports." + + ::= { frwkFeedbackGroupClasses 1} + + frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "An instance of this class can indicates a action + the PEP is to take regarding the usage policies." + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + + FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri INTEGER, + frwkFeedbackActionList TagReference + } + + frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackActionTable class." + + ::= { frwkFeedbackActionEntry 1} + + frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + SUSPEND USAGE MONITORING_AND_REPORTS(0) + SUSPEND_REPORTS_ONLY(1) + RESUME_USAGE AND REPORTING(2) + SOLICIT USAGE REPORT NOW(3) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via feedback type report messages. + The enumeration values are: + (0) SUSPEND USAGE MONITORING_AND_REPORTS + (1) SUSPEND_REPORTS_ONLY + (2) RESUME_USAGE AND REPORTING + (3) SOLICIT USAGE REPORT NOW " + + ::= { frwkFeedbackActionEntry 2 } + + frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionListId attribute should be + ignored, and the action applied to all policies. A + value of 1 indicates that the action entry has a + specific list of policies to which it is to be + applied." + ::= { frwkFeedbackActionEntry 3} + + frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReference + STATUS current + DESCRIPTION + "Identifies a list of + frwkFeedbackActionListTable instances + associated with the action described by + this instance" + ::= { frwkFeedbackActionEntry 4} + + -- + -- Feedback Action List Table + -- + + frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains the PRIDs of the + linkage instance which are to be impacted by + the frwkFeedbackActionIndicator for this + list." + ::= { frwkFeedbackGroupClasses 2} + + frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "This class identifies a set of linkage instances + for which the PDP is suspending, resuming or + soliciting usage feedback." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListGroup, + frwkFeedbackActionListPRID + } + ::= { frwkFeedbackActionListTable 1} + + FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceID, + frwkFeedbackActionListGroup TagId, + frwkFeedbackActionListPRID Prid + } + + frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + + frwkFeedbackActionListListGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the Action + table entry and the Action List table entries" + ::= { frwkFeedbackActionListEntry 2 } + + frwkFeedbackActionListPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the linkage instance(s) belonging + to the list of instances identified by the + list id upon which the suspend, resume or + solicit action is directed." + + ::= { frwkFeedbackActionListEntry 3 } + + -- + -- The Feedback Selection Usage Combination Capability Table + -- + + frwkFeedbackSelUsageComboCapsTable OBJECT-TYPE + SYNTAX SEQENCE OF FrwkFeedbackSelUsageComboCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table defines the valid combinations of the + selection criteria PRCs, the usage PRCs and the + threshold PRCs that the PEP supports." + ::= { frwkFeedbackGroupClasses 3} + + + frwkFeedbackSelUsageComboCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSelUsageComboCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold PRCs for feedback supported by the PEP + device." + PIB-INDEX {frwkFeedbackActionLinkId} + UNIQUENESS { frwkFeedbacSelUsageComboCapId, + frwkFeedbackSelUsageComboCapSelection, + frwkFeedbackSelUsageComboCapUsage, + frwkFeedbackSelUsageComboCapThreshold + } + ::= {frwkFeedbackSelUsageComboTable 1} + + FrwkFeedbackSelUsageComboCapsEntry ::= SEQUENCE { + frwkFeedbackSelUsageComboCapId InstanceID, + frwkFeedbackSelUsageComboCapSelection OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapUsage OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapThreshold OBJECT IDENTIFIER + } + + frwkFeedbackSelUsageComboCapId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackSelUsageComboCapsEntry + class." + ::= { frwkFeedbackSelUsageComboCapsEntry 1} + + frwkFeedbackSelUsageComboCapSelection OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the selection class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + frwkFeedbackSelUsageComboCapUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that is supported by + the device in combination with the selection PRC and the + threshold PRC defined in this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 3} + + + frwkFeedbackSelUsageComboCapThreshold OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the threshold class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + -- + -- The Feedback Report Linkage Table + -- + + frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + + frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkFeedbackActionLinkId} + UNIQUENESS { frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + + FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceID, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage OBJECT IDENTIFIER, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + } + + frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + + frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkFeedbackLinkEntry 2} + + frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + + frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + + frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the threshold class instance. This + instance specifies the threshold values for the usage + policy." + ::= { frwkFeedbackLinkEntry 5} + + frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2), + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the ‘periodic’ flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the ‘periodic’ flag is not set, reports will only be + generated when solicited by the PDP. + The ‘threshold’ and ‘changeOnly’ flags make the + periodic reports conditional - these flags only make + sense in combination with the ‘periodic’ flag." + + ::= { frwkFeedbackLinkEntry 6} + + + -- + -- All actual usage classes are in the separate + -- FrwkFeedbackUsageClasses group + -- + + FrwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 2 } + + + -- + -- The generic traffic (byte & packet count) usage class + -- + + frwkFeedbackTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + + frwkFeedbackTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficUsageId} + UNIQUENESS { frwkFeedbackTrafficUsageLinkPRID } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackTrafficUsageEntry ::= SEQUENCE { + FrwkFeedbackTrafficUsageId InstanceID, + frwkFeedbackTrafficUsageLinkPRID Prid, + frwkFeedbackTrafficUsagePacketCount Counter64, + frwkFeedbackTrafficUsageByteCount Counter64 + + } + + frwkFeedbackTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficUsageEntry 1 } + + frwkFeedbackTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkFeedbackTrafficUsageEntry 2 } + + frwkFeedbackTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element during the reporting interval." + + ::= {frwkFeedbackTrafficUsageEntry 3} + + frwkFeedbackTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element." + ::= { frwkFeedbackTrafficUsageEntry 4} + + + + -- + -- The traffic usage class, qualified for an interface + -- + + frwkFeedbackIfTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage PRC similar to the basic TrafficUsage class + that also contains a reference to an interface. This + class should be used with a selection criteria that + matches an element that is assigned to multiple + interfaces. The interface field can be used to + associate the instances of this class with the specific + element’s assignment." + ::= { frwkFeedbackUsageClasses 2 } + + frwkFeedbackIfTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficUsageId} + UNIQUENESS { frwkFeedbackIfTrafficUsageLinkPRID, + frwkFeedbackIfTrafficUsageInterface } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackIfTrafficUsageEntry ::= SEQUENCE { + FrwkFeedbackIfTrafficUsageId InstanceID, + frwkFeedbackIfTrafficUsageLinkPRID Prid, + frwkFeedbackIfTrafficUsageInterface Prid, + frwkFeedbackIfTrafficUsagePacketCount Counter64, + frwkFeedbackIfTrafficUsageByteCount Counter64 + + } + + frwkFeedbackIfTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficUsageEntry 1 } + + frwkFeedbackIfTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + ::= { frwkFeedbackIfTrafficUsageEntry 2 } + + frwkFeedbackIfTrafficUsageInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface." + ::= { frwkFeedbackIfTrafficUsageEntry 3 } + + frwkFeedbackIfTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated element + during the reporting interval." + ::= { frwkFeedbackIfTrafficUsageEntry 4 } + + frwkFeedbackIfTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets + handled by the associated element." + ::= { frwkFeedbackIfTrafficUsageEntry 5 } + + + + -- + -- The Threshold class that accompanies the above Usage PRCs + -- + + frwkFeedbackTrafficThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresholdEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficUsageTable, + frwkFeedbackIfTrafficUsageTable and other similar + usage classes. + The usage object is considered to match the threshold + condition if the following expression evaluates to + ‘TRUE’: + { + byteCond = (ByteThreshold != NULL) ? + (ByteThreshold > ByteCounter) : FALSE; + packetCond (PacketThreshold != NULL) ? + (PacketThreshold > PacketCounter) : FALSE; + return ( byteCond || packetCond ); + }" + + ::= { frwkFeedbackUsageClasses 3} + + frwkFeedbackTrafficThresholdEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresholdEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresholdId} + + ::= {frwkFeedbackTrafficThresholdTable 1} + + FrwkFeedbackTrafficThresholdEntry ::= SEQUENCE { + FrwkFeedbackTrafficThresholdId InstanceID, + frwkFeedbackTrafficThresholdPacketThreshold Integer64, + frwkFeedbackTrafficThresholdByteThreshold Integer64 + } + + frwkFeedbackIfTrafficThresholdId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficThresholdEntry 1 } + + frwkFeedbackIfTrafficThresholdPacketThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackIfTrafficThresholdEntry 2 } + + frwkFeedbackIfTrafficThresholdByteThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackIfTrafficThresholdEntry 3 } + + + + -- + -- All Selection classes are in the separate + -- FrwkFeedbackSelectionClasses group + -- + + FrwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 3 } + + -- + -- The Set WatchPoint Table + -- + + frwkFeedbackSetWatchPointTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSetWatchPointEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific processing point to watch + for the desired usage. This selection criteria + may be useful in PIBs that are designed using a + datapath approach where the policies are linked + and can be reused within the PIB." + + ::= { frwkFeedbackSelectionClasses 1} + + frwkFeedbackSetWatchPointEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSetWatchPointEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackSetWatchPointId } + + + ::= {frwkFeedbackSetWatchPointTable 1} + + FrwkFeedbackSetWatchPointEntry ::= SEQUENCE { + frwkFeedbackSetWatchPointId InstanceID, + frwkFeedbackSetWatchPointPolicyPRID Prid, + + } + + frwkFeedbackSetWatchPointId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackSetWatchPointEntry 1 } + + frwkFeedbackSetWatchPointPolicyPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the enforcement policy instance where + the associated usage is to be monitored." + + ::= { frwkFeedbackSetWatchPointEntry 2 } + + + -- + -- DPE Selection Class + -- + + frwkFeedbackDPESelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF frwkFeedbackDPESelectionEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific data path element to collect + usage information" + + ::= { frwkFeedbackSelectionClasses 2} + + frwkFeedbackDPESelectionEntry OBJECT-TYPE + SYNTAX frwkFeedbackDPESelecyionEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionId } + UNIQUENESS { frwkFeedbackDPESelectionDataPathElement, + frwkFeedbackDPESelectionInterface, + frwkFeedbackDPESelectionIfDirection } + + ::= {frwkFeedbackDPESelectionTable 1} + + frwkFeedbackDPESelectionEntry ::= SEQUENCE { + frwkFeedbackDPESelectionId InstanceId, + frwkFeedbackDPESelectionDataPathElement Prid, + frwkFeedbackDPESelectionInterface Prid, + frwkFeedbackDPESelectionIfDirection IfDirection + } + + frwkFeedbackDPESelectionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionEntry 1 } + + + frwkFeedbackDPESelectionDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path assigned to the + interface/direction combination referenced in this + object." + ::= { frwkFeedbackDPESelectionEntry 2 } + + frwkFeedbackDPESelectionInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface" + ::= { frwkFeedbackDPESelectionEntry 3 } + + frwkFeedbackDPESelectionIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "The direction (ingress/egress) that to which the DPE + is attached that we want to match." + ::= { frwkFeedbackDPESelectionEntry 4 } + + + -- + -- DPE Selection Query Class + -- + + frwkFeedbackDPESelectionQueryTable OBJECT-TYPE + SYNTAX SEQUENCE OF frwkFeedbackDPESelectionQueryEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a set of assignments of a data path element + based on an entry in the Data Path Table + Each matched assignment will collect and report usage + independently, so this selection criteria should be + combined with a Usage PRC that includes an interface + reference." + + ::= { frwkFeedbackSelectionClasses 3} + + frwkFeedbackDPESelectionQueryEntry OBJECT-TYPE + SYNTAX frwkFeedbackDPESelectionQueryEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionQueryId } + UNIQUENESS { frwkFeedbackDPESelectionQueryDataPath, + FrwkFeedbackDPESelectionQueryDataPathElement } + + ::= {frwkFeedbackDPESelectionQueryTable 1} + + frwkFeedbackDPESelectionQueryEntry ::= SEQUENCE { + frwkFeedbackDPESelectionQueryId InstanceId, + frwkFeedbackDPESelectionQueryDataPath Prid, + frwkFeedbackDPESelectionQueryDataPathElement Prid + } + + frwkFeedbackDPESelectionQueryId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionQueryEntry 1 } + + frwkFeedbackDPESelectionQueryDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a Data Path instance, identifying a + group of data path assignments." + ::= { frwkFeedbackDPESelectionQueryEntry 2 } + + frwkFeedbackDPESelectionQueryDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path referenced from the + frwkFeedbackDPESelectionQueryDataPath field." + ::= { frwkFeedbackDPESelectionQueryEntry 3 } + + END diff --git a/pibs/tubs/IP-TE-PIB b/pibs/tubs/IP-TE-PIB new file mode 100644 index 0000000..8cbf6b1 --- /dev/null +++ b/pibs/tubs/IP-TE-PIB @@ -0,0 +1,847 @@ +IP-TE-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Count + FROM ACCOUNTING-FRAMEWORK-PIB + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM FRAMEWORK-TC-PIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +ipTePib MODULE-IDENTITY + + SUBJECT-CATEGORIES { all } -- IP TE client-type to be + -- assigned by IANA + LAST-UPDATED "200106180900Z" + ORGANIZATION "France Telecom" + CONTACT-INFO " + Christian Jacquenet + France Telecom R & D + 42, rue des Coutures + BP 6243 + 14066 CAEN CEDEX 04 + France + Phone: +33 2 31 75 94 28 + E-Mail: christian.jacquenet@francetelecom.com" + DESCRIPTION + "The PIB module containing a set of policy rule classes + that describe IP Traffic Engineering policies to be + enforced within and between domains." + REVISION "200111061600Z" + DESCRIPTION + "Initial version." + + ::= { ibrpib 23 } -- tbd to be assigned by IANA + +ipTeFwdClasses OBJECT IDENTIFIER ::= { ipTePib 1 } +ipTeMetricsClasses OBJECT IDENTIFIER ::= { ipTePib 2 } +ipTeStatsClasses OBJECT IDENTIFIER ::= { ipTePib 3 } + +-- +-- Forwarding classes. The information contained in these classes +-- is meant to provide a detailed description of the traffic +-- engineered routes. One table has been specified so far, but there +-- is room for depicting specific kinds of routes, like MPLS LSP +-- paths, for example. +-- +-- + + +-- + +-- The ipTeRouteTable +-- + +ipTeRouteTable OBJECT-TYPE + + SYNTAX SEQUENCE OF IpTeRouteEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table describes the traffic engineered routes + that are installed in the forwarding tables of the + routers." + + ::= { ipTeFwdClasses 1 } + +ipTeRouteEntry OBJECT-TYPE + + SYNTAX IpTeRouteEntry + STATUS current + DESCRIPTION + "A particular traffic engineered route to a particular + destination." + + PIB-INDEX { ipTeRoutePrid } + UNIQUENESS { ipTeRouteDest, + ipTeRouteMask, + ipTeRoutePhbId, + ipTeRouteNextHopAddress, + ipTeRouteNextHopMask } + + ::= { ipTeRouteTable 1 } + +IpTeRouteEntry ::= SEQUENCE { + ipTeRoutePrid InstanceId, + ipTeRouteDestAddrType InetAddressType, + ipTeRouteDest InetAddress, + ipTeRouteMask Unsigned32, + ipTeRouteNextHopAddrType InetAddressType, + ipTeRouteNextHopAddress InetAddress, + ipTeRouteNextHopMask Unsigned32, + ipTeRoutePhbId Integer32, + ipTeRouteOrigin Integer32, + ipTeRouteIfIndex Unsigned32 +} + +ipTeRoutePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this route + entry among all the route entries." + + + ::= { ipTeRouteEntry 1 } + +ipTeRouteDestAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([16]) used to + specify the type of a route's destination IP address." + + ::= { ipTeRouteEntry 2 } + +ipTeRouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination address." + + ::= { ipTeRouteEntry 3 } + +ipTeRouteMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + destination IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ipTeRouteMask bits length. All other bits + in the mask, up to the number needed to fill the length + of the address ipTeRouteDest are cleared to zero. A + zero bit in the mask then means that the corresponding + bit in the address always matches." + + ::= { ipTeRouteEntry 4 } + +ipTeRouteNextHopAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { ipTeRouteEntry 5 } + +ipTeRouteNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { ipTeRouteEntry 6 } + +ipTeRouteNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + next hop's IP address. Masks are constructed by setting + bits in sequence from the most-significant bit + downwards for ipTeRouteNextHopMask bits length. All + other bits in the mask, up to the number needed to fill + the length of the address ipTeRouteNextHop are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ipTeRouteEntry 7 } + +ipTeRoutePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB, [17]) or a set of PHBs associated to + the DiffServ Code Point (DSCP, [15]) marking of the IP + datagrams that will be conveyed along this traffic + engineered route. A value of -1 indicates that a + specific PHB ID value has not been defined, and thus, + all PHB ID values are considered a match." + + ::= { ipTeRouteEntry 8 } + +ipTeRouteOrigin OBJECT-TYPE + + SYNTAX INTEGER { + ospf (0), + is-is (1), + bgp (2), + static (3), + other (4) + } + STATUS current + DESCRIPTION + "The value indicates the origin of the route. Either + the route has been computed by OSPF, by IS-IS, + announced by BGP4, is static, or else." + + + ::= { ipTeRouteEntry 9 } + +ipTeRouteIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route is + accessible." + + ::= { ipTeRouteEntry 10 } + +-- +-- +-- Traffic engineering metrics classes. +-- +-- The information stored in the following tables is meant to provide +-- the description of the metric values that will be taken into +-- account by intra- and inter-domain routing protocols for the +-- computation and the selection of traffic-engineered routes. So +-- far, two tables have been identified: one which is based upon the +-- traffic engineering extensions of OSPF, the other which is based +-- upon the contents of a specific BGP4 attribute. Next versions of +-- the draft will include IS-IS specific information, as well as +-- extensions of the BGP4-specific provisioning information for the +-- "basic" enforcement of a BGP4 routing policy. +-- +-- + +-- +-- The ospfTeMetricsTable +-- + +ospfTeMetricsTable OBJECT-TYPE + + SYNTAX SEQUENCE OF OspfTeMetricsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the link and traffic engineering + metrics that will be used by OSPF for TE route + calculation purposes." + + ::= { ipTeMetricsClasses 1 } + +ospfTeMetricsEntry OBJECT-TYPE + + SYNTAX OspfTeMetricsEntry + STATUS current + DESCRIPTION + + "The collection of OSPF metrics assigned to the router + on a per interface and per DSCP basis." + + PIB-INDEX { ospfTeMetricsPrid } + UNIQUENESS { ospfTeMetricsIfMetricValue, + ospfTeMetricsDscpValue, + ospfTeMetricsSubTlvLinkType, + ospfTeMetricsSubTlvLinkId, + ospfTeMetricsSubTlvLocalIfAddress, + ospfTeMetricsSubTlvRemoteIfAddress, + ospfTeMetricsSubTlvTeMetric, + ospfTeMetricsSubTlvMaxBandwidth, + ospfTeMetricsSubTlvMaxRsvBandwidth, + ospfTeMetricsSubTlvUnrsvBandwidth, + ospfTeMetricsIfIndex } + + ::= { ospfTeMetricsTable 1 } + +OspfTeMetricsEntry ::= SEQUENCE { + + ospfTeMetricsPrid InstanceId, + ospfTeMetricsIfMetricValue Unsigned32, + ospfTeMetricsDscpValue Integer32, + ospfTeMetricsTopTlvAddressType InetAddressType, + ospfTeMetricsTopTlvRouterAddress InetAddress, + ospfTeMetricsTopTlvRouterAddrMask Unsigned32, + ospfTeMetricsSubTlvLinkType INTEGER, + ospfTeMetricsSubTlvLinkIdAddressType InetAddressType, + ospfTeMetricsSubTlvLinkId InetAddress, + ospfTeMetricsSubTlvLinkIdMask Unsigned32, + ospfTeMetricsSubTlvLocalIfAddressType InetAddressType, + ospfTeMetricsSubTlvLocalIfAddress InetAddress, + ospfTeMetricsSubTlvLocalIfAddrMask Unsigned32, + ospfTeMetricsSubTlvRemoteIfAddressType InetAddressType, + ospfTeMetricsSubTlvRemoteIfAddress InetAddress, + ospfTeMetricsSubTlvRemoteIfAddrMask Unsigned32, + ospfTeMetricsSubTlvTeMetric Unsigned32, + ospfTeMetricsSubTlvMaxBandwidth Unsigned32, + ospfTeMetricsSubTlvMaxRsvBandwidth Unsigned32, + ospfTeMetricsSubTlvUnrsvBandwidth Unsigned32, + ospfTeMetricsIfIndex Unsigned32 + } + +ospfTeMetricsPrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the ospfTeMetrics class." + + ::= { ospfTeMetricsEntry 1 } + + +ospfTeMetricsIfMetricValue OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric assigned on a per-DSCP and per-interface + basis, as defined in this instance of the + ospfTeMetricsTable." + + ::= { ospfTeMetricsEntry 2 } + +ospfTeMetricsDscpValue OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The DSCP value associated to the link metric value, as + defined in the ospfTeMetricsIfMetricValue object. A value of + -1 indicates that a specific DSCP value has not been defined + and thus all DSCP values are considered a match." + + ::= { ospfTeMetricsEntry 3 } + +ospfTeMetricsTopTlvAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the advertising router. This IP address is always + reachable, and is typically implemented as a 'loopback' + address." + + ::= { ospfTeMetricsEntry 4 } + +ospfTeMetricsTopTlvRouterAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address (typically a 'loopback' address) of the + advertising router." + + ::= { ospfTeMetricsEntry 5 } + +ospfTeMetricsTopTlvRouterAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + + + "Indicates the length of a mask for the matching of the + advertising router's IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ospfTeMetricsTopTlvRouterAddrMask bits length. + All other bits in the mask, up to the number needed to fill + the length of the address ospfTeMetricsTopTlvRouterAddress + are cleared to zero. A zero bit in the mask then means that + the corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 6 } + +ospfTeMetricsSubTlvLinkType OBJECT-TYPE + + SYNTAX INTEGER { + point-to-Point (1), + multiaccess (2) + } + STATUS current + DESCRIPTION + "The type of the link, either point-to-point or multi- + access, as defined in [8]." + + ::= { ospfTeMetricsEntry 7 } + +ospfTeMetricsSubTlvLinkIdAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to identify the + other end of the link, described as an IP address." + + ::= { ospfTeMetricsEntry 8 } + +ospfTeMetricsSubTlvLinkId OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The identification of the other end of the link, described + as an IP address." + + ::= { ospfTeMetricsEntry 9 } + +ospfTeMetricsSubTlvLinkIdMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + other end of the link, described as an IP address. Masks + are constructed by setting bits in sequence from the most- + + significant bit downwards for ospfTeMetricsSubTlvLinkMask + bits length. All other bits in the mask, up to the number + needed to fill the length of the address + ospfTeMetricsSubTlvLinkId are cleared to zero. A zero bit + in the mask then means that the corresponding bit in the + address always matches." + + ::= { ospfTeMetricsEntry 10 } + +ospfTeMetricsSubTlvLocalIfAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 11 } + +ospfTeMetricsSubTlvLocalIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the interface of the + advertising router which is connected to the link described + as an instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 12 } + +ospfTeMetricsSubTlvLocalIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object. Masks are + constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricsSubTlvLocalIfAddrMask bits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricsSubTlvLocalIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 13 } + + +ospfTeMetricsSubTlvRemoteIfAddressType OBJECT-TYPE + + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address(es) of the neighbour's interface corresponding to + this instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 14 } + +ospfTeMetricsSubTlvRemoteIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the neighbour's interface that + is attached to this instance of the + ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 15 } + +ospfTeMetricsSubTlvRemoteIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the neighbor's interface corresponding to this + instance of the ospfTeMetricsSubTlvLinkType object. Masks + are constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricSubTlvRemoteIfAddrMaskbits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricSubTlvRemoteIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 16 } + + +ospfTeMetricsSubTlvTeMetric OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric that has been assigned for traffic + engineering purposes. This metric may be different from the + ospfTeMetricsLinkMetricValue object of the ospfTeMetrics + class." + + ::= { ospfTeMetricsEntry 17 } + +ospfTeMetricsSubTlvMaxBandwidth OBJECT-TYPE + + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that can be used on this + instance of the ospfTeMetricsSubTlvLinkType object in this + direction (from the advertising router), expressed in bytes + per second." + + ::= { ospfTeMetricsEntry 18 } + +ospfTeMetricsSubTlvMaxRsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that may be reserved on + this instance of the ospfTeMetricsSubTlvLinkType object in + this direction (from the advertising router), expressed in + bytes per second." + + ::= { ospfTeMetricsEntry 19 } + +ospfTeMetricsSubTlvUnrsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the amount of bandwidth that has not been + reserved on this instance of the ospfTeMetricsSubTlvLinkType + object in this direction yet (from the advertising router), + expressed in bytes per second." + + ::= { ospfTeMetricsEntry 20 } + +ospfTeMetricsIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface that + has been assigned a (set of) metrics." + + ::= { ospfTeMetricsEntry 21 } + +-- +-- The bgpTeTable +-- + + +bgpTeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF BgpTeEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the QoS information that MAY be + conveyed in BGP4 UPDATE messages for the purpose of + enforcing an inter-domain traffic engineering policy." + + ::= { ipTeMetricsClasses 2 } + +bgpTeEntry OBJECT-TYPE + + SYNTAX BgpTeEntry + STATUS current + DESCRIPTION + "The collection of QoS information to be exchanged by + BGP peers, as far as the announcement of traffic + engineered routes between domains is concerned." + + PIB-INDEX { bgpTePrid } + UNIQUENESS { bgpTeNlriAddress, + bgpTeNextHopAddress, + bgpTeReservedRate, + bgpTeAvailableRate, + bgpTeLossRate, + bgpTePhbId, + bgpTeMinOneWayDelay, + bgpTeMaxOneWayDelay, + bgpTeAverageOneWayDelay, + bgpTeInterPacketDelay } + + ::= { bgpTeTable 1 } + +BgpTeEntry ::= SEQUENCE { + + bgpTePrid InstanceId, + bgpTeNlriAddressType InetAddressType, + bgpTeNlriAddress InetAddress, + bgpTeNlriAddressMask Unsigned32, + bgpTeNextHopAddressType InetAddressType, + bgpTeNextHopAddress InetAddress, + bgpTeNextHopMask Unsigned32, + bgpTeReservedRate Unsigned32, + bgpTeAvailableRate Unsigned32, + bgpTeLossRate Unsigned32, + bgpTePhbId Integer32, + bgpTeMinOneWayDelay Unsigned32, + bgpTeMaxOneWayDelay Unsigned32, + bgpTeAverageOneWayDelay Unsigned32, + bgpTeInterPacketDelay Unsigned32 + + } + +bgpTePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the bgpTe class." + + ::= { bgpTeEntry 1 } + +bgpTeNlriAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([18]) used to + specify the type of a route's destination IP address." + + ::= { bgpTeEntry 2 } + +bgpTeNlriAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the NLRI field of the + QOS_NLRI attribute of the BGP4 UPDATE message." + + ::= { bgpTeEntry 3 } + +bgpTeNlriAddressMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + NLRI field of the QOS_NLRI attribute of the BGP4 UPDATE + message. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNlriMask bits length. All other bits in the mask, + up to the number needed to fill the length of the + address bgpTeNlri are cleared to zero. A zero bit in + the mask then means that the corresponding bit in the + address always matches." + + ::= { bgpTeEntry 4 } + +bgpTeNextHopAddressType OBJECT-TYPE + + SYNTAX InetAddressType + + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { bgpTeEntry 5 } + +bgpTeNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { bgpTeEntry 6 } + +bgpTeNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the next + hop's IP address. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNextHopMask bits length. All other bits in the mask, up + to the number needed to fill the length of the address + bgpTeNextHopAddress are cleared to zero. A zero bit in the + mask then means that the corresponding bit in the address + always matches." + + ::= { bgpTeEntry 7 } + +bgpTeReservedRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "Specifies the reserved rate that cannot be used on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 8 } + +bgpTeAvailableRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + + "Specifies the available rate that may be reserved on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 9 } + +bgpTeLossRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "Specifies the packet loss ratio that has been observed on + this route instantiated by the bgpTeNlriAddress object." + + ::= { bgpTeEntry 10 } + +bgpTePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB) or a set of PHBs associated to the + DiffServ Code Point marking of the IP datagrams that + are to be conveyed along this traffic engineered route. + A value of -1 indicates that a specific PHB ID value + has not been defined, and thus, all PHB ID values are + considered a match." + + ::= { bgpTeEntry 11 } + +bgpTeMinOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the minimum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 12 } + +bgpTeMaxOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + + + + "Specifies the maximum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 13 } + +bgpTeAverageOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the average one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 14 } + +bgpTeInterPacketDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the inter-packet delay variation that has been + observed on this route instantiated by the bgpTeNlriAddress + object." + + ::= { bgpTeEntry 15 } + +-- +-- Traffic engineering statistics classes. The information contained +-- in the yet-to-be defined tables aim at reporting statistics about +-- COPS control traffic, engineered traffic and potential errors. The +-- next version of the draft will provide a first table that will be +-- based upon the use of the "count" clause. +-- +-- + +END diff --git a/pibs/tubs/IP-TE-PIB-orig b/pibs/tubs/IP-TE-PIB-orig new file mode 100644 index 0000000..cdd364c --- /dev/null +++ b/pibs/tubs/IP-TE-PIB-orig @@ -0,0 +1,844 @@ +IP-TE-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Count, TEXTUAL-CONVENTION + FROM ACCT-FR-PIB-TC + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +ipTePib MODULE-IDENTITY + + SUBJECT-CATEGORIES { tbd } -- IP TE client-type to be + -- assigned by IANA + LAST-UPDATED "200106180900Z" + ORGANIZATION "France Telecom" + CONTACT-INFO " + Christian Jacquenet + France Telecom R & D + 42, rue des Coutures + BP 6243 + 14066 CAEN CEDEX 04 + France + Phone: +33 2 31 75 94 28 + E-Mail: christian.jacquenet@francetelecom.com" + DESCRIPTION + "The PIB module containing a set of policy rule classes + that describe IP Traffic Engineering policies to be + enforced within and between domains." + REVISION "200111061600Z" + DESCRIPTION + "Initial version." + + ::= { pib tbd } -- tbd to be assigned by IANA + +ipTeFwdClasses OBJECT IDENTIFIER ::= { ipTePib 1 } +ipTeMetricsClasses OBJECT IDENTIFIER ::= { ipTePib 2 } +ipTeStatsClasses OBJECT IDENTIFIER ::= { ipTePib 3 } + +-- +-- Forwarding classes. The information contained in these classes +-- is meant to provide a detailed description of the traffic +-- engineered routes. One table has been specified so far, but there +-- is room for depicting specific kinds of routes, like MPLS LSP +-- paths, for example. +-- +-- + + +-- + +-- The ipTeRouteTable +-- + +ipTeRouteTable OBJECT-TYPE + + SYNTAX SEQUENCE OF ipTeRouteEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table describes the traffic engineered routes + that are installed in the forwarding tables of the + routers." + + ::= { ipTeFwdClasses 1 } + +ipTeRouteEntry OBJECT-TYPE + + SYNTAX ipTeRouteEntry + STATUS current + DESCRIPTION + "A particular traffic engineered route to a particular + destination." + + PIB-INDEX { ipTeRoutePrid } + UNIQUENESS { ipTeRouteDest, + ipTeRouteMask, + ipTeRoutePhbId, + ipTeRouteNextHopAddress + ipTeRouteNextHopMask } + + ::= { ipTeRouteTable 1 } + +ipTeRouteEntry ::= SEQUENCE { + ipTeRoutePrid InstanceId, + ipTeRouteDestAddrType InetAddressType, + ipTeRouteDest InetAddress, + ipTeRouteMask Unsigned32, + ipTeRouteNextHopAddrType InetAddressType, + ipTeRouteNextHopAddress InetAddress, + ipTeRouteNextHopMask Unsigned32, + ipTeRoutePhbId Integer32, + ipTeRouteOrigin Integer32, + ipTeRouteIfIndex Unsigned32 +} + +ipTeRoutePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this route + entry among all the route entries." + + + ::= { ipTeRouteEntry 1 } + +ipTeRouteDestAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([16]) used to + specify the type of a route's destination IP address." + + ::= { ipTeRouteEntry 2 } + +ipTeRouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination address." + + ::= { ipTeRouteEntry 3 } + +ipTeRouteMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + destination IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ipTeRouteMask bits length. All other bits + in the mask, up to the number needed to fill the length + of the address ipTeRouteDest are cleared to zero. A + zero bit in the mask then means that the corresponding + bit in the address always matches."" + + ::= { ipTeRouteEntry 4 } + +ipTeRouteNextHopAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { ipTeRouteEntry 5 } + +ipTeRouteNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { ipTeRouteEntry 6 } + +ipTeRouteNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + next hop's IP address. Masks are constructed by setting + bits in sequence from the most-significant bit + downwards for ipTeRouteNextHopMask bits length. All + other bits in the mask, up to the number needed to fill + the length of the address ipTeRouteNextHop are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ipTeRouteEntry 7 } + +ipTeRoutePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB, [17]) or a set of PHBs associated to + the DiffServ Code Point (DSCP, [15]) marking of the IP + datagrams that will be conveyed along this traffic + engineered route. A value of -1 indicates that a + specific PHB ID value has not been defined, and thus, + all PHB ID values are considered a match." + + ::= { ipTeRouteEntry 8 } + +ipTeRouteOrigin OBJECT-TYPE + + SYNTAX INTEGER { + OSPF (0) + IS-IS (1) + BGP (2) + STATIC (3) + OTHER (4) + } + STATUS current + DESCRIPTION + "The value indicates the origin of the route. Either + the route has been computed by OSPF, by IS-IS, + announced by BGP4, is static, or else." + + + ::= { ipTeRouteEntry 9 } + +ipTeRouteIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route is + accessible." + + ::= { ipTeRouteEntry 10 } + +-- +-- +-- Traffic engineering metrics classes. +-- +-- The information stored in the following tables is meant to provide +-- the description of the metric values that will be taken into +-- account by intra- and inter-domain routing protocols for the +-- computation and the selection of traffic-engineered routes. So +-- far, two tables have been identified: one which is based upon the +-- traffic engineering extensions of OSPF, the other which is based +-- upon the contents of a specific BGP4 attribute. Next versions of +-- the draft will include IS-IS specific information, as well as +-- extensions of the BGP4-specific provisioning information for the +-- "basic" enforcement of a BGP4 routing policy. +-- +-- + +-- +-- The ospfTeMetricsTable +-- + +ospfTeMetricsTable OBJECT-TYPE + + SYNTAX SEQUENCE OF ospfTeMetricsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the link and traffic engineering + metrics that will be used by OSPF for TE route + calculation purposes." + + ::= { ipTeMetricsClasses 1 } + +ospfTeMetricsEntry OBJECT-TYPE + + SYNTAX ospfTeMetricsEntry + STATUS current + DESCRIPTION + + "The collection of OSPF metrics assigned to the router + on a per interface and per DSCP basis." + + PIB-INDEX { ospfTeMetricsPrid } + UNIQUENESS { ospfTeMetricsLinkMetricValue, + ospfTeMetricsDscpValue, + ospfTeMetricSubTlvLinkType, + ospfTeMetricSubTlvLinkId, + ospfTeMetricSubTlvLocalIfAddress, + ospfTeMetricSubTlvRemoteIfAddress, + ospfTeMetricSubTlvTeMetric, + ospfTeMetricSubTlvMaxBandwidth, + ospfTeMetricSubTlvMaxRsvBandwidth, + ospfTeMetricSubTlvUnRsvBandwidth, + ospfTeMetricIfIndex } + + ::= { ospfTeMetricsTable 1 } + +ospfTeMetricsEntry ::= SEQUENCE { + + ospfTeMetricsPrid InstanceId, + ospfTeMetricsIfMetricValue Unsigned32, + ospfTeMetricsDscpValue Integer32, + ospfTeMetricsTopTlvAddressType InetAddressType, + ospfTeMetricsTopTlvRouterAddress InetAddress, + ospfTeMetricsTopTlvRouterAddrMask Unsigned32, + ospfTeMetricsSubTlvLinkType Unsigned32, + ospfTeMetricsSubTlvLinkIdAddressType InetAddressType, + ospfTeMetricsSubTlvLinkId InetAddress, + ospfTeMetricsSubTlvLinkIdMask Unsigned32, + ospfTeMetricsSubTlvLocalIfAddressType InetAddressType, + ospfTeMetricsSubTlvLocalIfAddress InetAddress, + ospfTeMetricsSubTlvLocalIfAddrMask Unsigned32, + ospfTeMetricsSubTlvRemoteIfAddressType InetAddressType, + ospfTeMetricsSubTlvRemoteIfAddress InetAddress, + ospfTeMetricsSubTlvRemoteIfAddrMask Unsigned32, + ospfTeMetricsSubTlvTeMetric Unsigned32, + ospfTeMetricsSubTlvMaxBandwidth Unsigned32, + ospfTeMetricsSubTlvMaxRsvBandwidth Unsigned32, + ospfTeMetricsSubTlvUnrsvBandwidth Unsigned32, + ospfTeMetricsIfIndex Unsigned32 + } + +ospfTeMetricsPrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the ospfTeMetrics class." + + ::= { ospfTeMetricsEntry 1 } + + +ospfTeMetricsIfMetricValue OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric assigned on a per-DSCP and per-interface + basis, as defined in this instance of the + ospfTeMetricsTable." + + ::= { ospfTeMetricsEntry 2 } + +ospfTeMetricsDscpValue OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The DSCP value associated to the link metric value, as + defined in the ospfTeMetricsIfMetricValue object. A value of + -1 indicates that a specific DSCP value has not been defined + and thus all DSCP values are considered a match." + + ::= { ospfTeMetricsEntry 3 } + +ospfTeMetricsTopTlvAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the advertising router. This IP address is always + reachable, and is typically implemented as a "loopback" + address." + + ::= { ospfTeMetricsEntry 4 } + +ospfTeMetricsTopTlvRouterAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address (typically a "loopback" address) of the + advertising router." + + ::= { ospfTeMetricsEntry 5 } + +ospfTeMetricsTopTlvRouterAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + + + "Indicates the length of a mask for the matching of the + advertising router's IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ospfTeMetricsTopTlvRouterAddrMask bits length. + All other bits in the mask, up to the number needed to fill + the length of the address ospfTeMetricsTopTlvRouterAddress + are cleared to zero. A zero bit in the mask then means that + the corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 6 } + +ospfTeMetricsSubTlvLinkType OBJECT-TYPE + + SYNTAX INTEGER { + Point-to-Point (1) + Multiaccess (2) + } + STATUS current + DESCRIPTION + "The type of the link, either point-to-point or multi- + access, as defined in [8]." + + ::= { ospfTeMetricsEntry 7 } + +ospfTeMetricsSubTlvLinkIdAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to identify the + other end of the link, described as an IP address." + + ::= { ospfTeMetricsEntry 8 } + +ospfTeMetricsSubTlvLinkId OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The identification of the other end of the link, described + as an IP address." + + ::= { ospfTeMetricsEntry 9 } + +ospfTeMetricsSubTlvLinkMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + other end of the link, described as an IP address. Masks + are constructed by setting bits in sequence from the most- + + significant bit downwards for ospfTeMetricsSubTlvLinkMask + bits length. All other bits in the mask, up to the number + needed to fill the length of the address + ospfTeMetricsSubTlvLinkId are cleared to zero. A zero bit + in the mask then means that the corresponding bit in the + address always matches." + + ::= { ospfTeMetricsEntry 10 } + +ospfTeMetricsSubTlvLocalIfAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 11 } + +ospfTeMetricsSubTlvLocalIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the interface of the + advertising router which is connected to the link described + as an instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 12 } + +ospfTeMetricsSubTlvLocalIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object. Masks are + constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricsSubTlvLocalIfAddrMask bits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricsSubTlvLocalIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 13 } + + +ospfTeMetricsSubTlvRemoteIfAddressType OBJECT-TYPE + + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address(es) of the neighbour's interface corresponding to + this instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 14 } + +ospfTeMetricSubTlvRemoteIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the neighbour's interface that + is attached to this instance of the + ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 15 } + +ospfTeMetricSubTlvRemoteIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the neighbor's interface corresponding to this + instance of the ospfTeMetricsSubTlvLinkType object. Masks + are constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricSubTlvRemoteIfAddrMaskbits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricSubTlvRemoteIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 16 } + + +ospfTeMetricSubTlvTeMetric OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric that has been assigned for traffic + engineering purposes. This metric may be different from the + ospfTeMetricsLinkMetricValue object of the ospfTeMetrics + class." + + ::= { ospfTeMetricsEntry 17 } + +ospfTeMetricSubTlvBandwidthType OBJECT-TYPE + + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that can be used on this + instance of the ospfTeMetricsSubTlvLinkType object in this + direction (from the advertising router), expressed in bytes + per second." + + ::= { ospfpTeMetricsEntry 18 } + +ospfTeMetricSubTlvMaxRsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that may be reserved on + this instance of the ospfTeMetricsSubTlvLinkType object in + this direction (from the advertising router), expressed in + bytes per second." + + ::= { ospfTeMetricsEntry 19 } + +ospfTeMetricSubTlvUnrsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the amount of bandwidth that has not been + reserved on this instance of the ospfTeMetricsSubTlvLinkType + object in this direction yet (from the advertising router), + expressed in bytes per second." + + ::= { ospfTeMetricsEntry 20 } + +ospfTeMetricIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface that + has been assigned a (set of) metrics." + + ::= { ospfTeMetricsEntry 21 } + +-- +-- The bgpTeTable +-- + + +bgpTeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF bgpTeEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the QoS information that MAY be + conveyed in BGP4 UPDATE messages for the purpose of + enforcing an inter-domain traffic engineering policy." + + ::= { ipTeMetricsClasses 2 } + +bgpTeEntry OBJECT-TYPE + + SYNTAX bgpTeEntry + STATUS current + DESCRIPTION + "The collection of QoS information to be exchanged by + BGP peers, as far as the announcement of traffic + engineered routes between domains is concerned." + + PIB-INDEX { bgpTePrid } + UNIQUENESS { bgpTeNlriAddress, + bgpTeNextHopAddress, + bgpTeReservedRate, + bgpTeAvailableRate, + bgpTeLossRate, + bgpTePhbId, + bgpTeMinOneWayDelay, + bgpTeMaxOneWayDelay, + bgpTeAverageOneWayDelay, + bgpTeInterPacketDelay } + + ::= { bgpTeTable 1 } + +bgpTeEntry ::= SEQUENCE { + + bgpTePrid InstanceId, + bgpTeNlriAddressType InetAddressType, + bgpTeNlriAddress InetAddress, + bgpTeNlriAddressMask Unsigned32, + bgpTeNextHopAddressType InetAddressType, + bgpTeNextHopAddress InetAddress, + bgpTeNextHopMask Unsigned32, + bgpTeReservedRate Unsigned32, + bgpTeAvailableRate Unsigned32, + bgpTeLossRate Unsigned32, + bgpTePhbId Integer32, + bgpTeMinOneWayDelay Unsigned32, + bgpTeMaxOneWayDelay Unsigned32, + bgpTeAverageOneWayDelay Unsigned32, + bgpTeInterPacketDelay Unsigned32 + + } + +bgpTePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the bgpTe class." + + ::= { bgpTeEntry 1 } + +bgpTeNlriAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([18]) used to + specify the type of a route's destination IP address." + + ::= { bgpTeEntry 2 } + +bgpTeNlriAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the NLRI field of the + QOS_NLRI attribute of the BGP4 UPDATE message." + + ::= { bgpTeEntry 3 } + +bgpTeNlriAddressMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + NLRI field of the QOS_NLRI attribute of the BGP4 UPDATE + message. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNlriMask bits length. All other bits in the mask, + up to the number needed to fill the length of the + address bgpTeNlri are cleared to zero. A zero bit in + the mask then means that the corresponding bit in the + address always matches."" + + ::= { bgpTeEntry 4 } + +bgpTeNextHopAddressType OBJECT-TYPE + + SYNTAX InetAddressType + + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { bgpTeEntry 5 } + +bgpTeNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { bgpTeEntry 6 } + +bgpTeNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the next + hop's IP address. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNextHopMask bits length. All other bits in the mask, up + to the number needed to fill the length of the address + bgpTeNextHopAddress are cleared to zero. A zero bit in the + mask then means that the corresponding bit in the address + always matches." + + ::= { bgpTeEntry 7 } + +bgpTeReservedRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "Specifies the reserved rate that cannot be used on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 8 } + +bgpTeAvailableRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + + "Specifies the available rate that may be reserved on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 9 } + +bgpTeLossRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "Specifies the packet loss ratio that has been observed on + this route instantiated by the bgpTeNlriAddress object." + + ::= { bgpTeEntry 10 } + +bgpTePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB) or a set of PHBs associated to the + DiffServ Code Point marking of the IP datagrams that + are to be conveyed along this traffic engineered route. + A value of -1 indicates that a specific PHB ID value + has not been defined, and thus, all PHB ID values are + considered a match." + + ::= { bgpTeEntry 11 } + +bgpTeMinOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the minimum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 12 } + +bgpTeMaxOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + + + + "Specifies the maximum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 13 } + +bgpTeAverageOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the average one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 14 } + +bgpTeInterPacketDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the inter-packet delay variation that has been + observed on this route instantiated by the bgpTeNlriAddress + object." + + ::= { bgpTeEntry 15 } + +-- +-- Traffic engineering statistics classes. The information contained +-- in the yet-to-be defined tables aim at reporting statistics about +-- COPS control traffic, engineered traffic and potential errors. The +-- next version of the draft will provide a first table that will be +-- based upon the use of the "count" clause. +-- +-- + +END diff --git a/pibs/tubs/IPSEC-POLICY-PIB b/pibs/tubs/IPSEC-POLICY-PIB new file mode 100644 index 0000000..9b82619 --- /dev/null +++ b/pibs/tubs/IPSEC-POLICY-PIB @@ -0,0 +1,4159 @@ +IPSEC-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + RoleCombination + FROM FRAMEWORK-TC-PIB; + + ipSecPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- IPsec Client Type -- + LAST-UPDATED "200202241800Z" + ORGANIZATION "IETF ipsp WG" + CONTACT-INFO " + Man Li + Nokia + 5 Wayside Road, + Burlington, MA 01803 + Phone: +1 781 993 3923 + Email: man.m.li@nokia.com + + Avri Doria + Div. of Computer Communications + Lulea University of Technology + SE-971 87 + Lulea, Sweden + Phone: +46 920 49 3030 + Email: avri@sm.luth.se + + Jamie Jason + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 9531 + Fax: +1 503 264 9428 + Email: jamie.jason@intel.com + + Cliff Wang + SmartPipes Inc. + Suite 300, 565 Metro Place South + Dublin, OH 43017 + Phone: +1 614 923 6241 + Email: CWang@smartpipes.com + + Markus Stenberg + SSH Communications Security Corp. + Fredrikinkatu 42 + FIN-00100 Helsinki, Finland + Phone: +358 20 500 7466 + Email: markus.stenberg@ssh.com" + + + DESCRIPTION + "This PIB module contains a set of policy rule classes that + describe IPsec policies." + ::= { ibrpib 6 } -- yyy to be assigned by IANA -- + + + Unsigned16 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An unsigned 16 bit integer." + SYNTAX Unsigned32 (0..65535) + + ipSecAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IPsec Security Associations." + ::= { ipSecPolicyPib 1 } + + ipSecAhTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies AH Transforms." + ::= { ipSecPolicyPib 2 } + + ipSecEspTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies ESP Transforms." + ::= { ipSecPolicyPib 3 } + + ipSecCompTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies Comp Transforms." + ::= { ipSecPolicyPib 4 } + + ipSecIkeAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IKE Security Associations." + ::= { ipSecPolicyPib 5 } + + ipSecCredential OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies credentials for IKE phase one negotiations." + ::= { ipSecPolicyPib 6 } + + ipSecSelector OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies selectors for IPsec associations." + ::= { ipSecPolicyPib 7 } + + ipSecPolicyTimePeriod OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies the time periods during which a policy rule + is valid." + ::= { ipSecPolicyPib 8 } + + ipSecIfCapability OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies capabilities associated with interface + types." + ::= { ipSecPolicyPib 9 } + + ipSecPolicyPibConformance OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies requirements for conformance to the IPsec + Policy PIB" + ::= { ipSecPolicyPib 10 } + + + -- + -- + -- The ipSecRuleTable + -- + + ipSecRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table is the starting point for specifying an IPsec policy. + It contains an ordered list of IPsec rules. " + ::= { ipSecAssociation 1 } + + ipSecRuleEntry OBJECT-TYPE + SYNTAX IpSecRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRulePrid } + UNIQUENESS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleOrder + } + ::= { ipSecRuleTable 1 } + + IpSecRuleEntry ::= SEQUENCE { + ipSecRulePrid InstanceId, + ipSecRuleIfName SnmpAdminString, + ipSecRuleRoles RoleCombination, + ipSecRuleDirection INTEGER, + ipSecRuleIpSecSelectorSetId TagReferenceId, + ipSecRuleipSecIpsoFilterSetId TagReferenceId, + ipSecRuleIpSecActionSetId TagReferenceId, + ipSecRuleActionExecutionStrategy INTEGER, + ipSecRuleOrder Unsigned16, + ipSecRuleLimitNegotiation INTEGER, + ipSecRuleAutoStart TruthValue, + ipSecRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecRuleEntry 1 } + + ipSecRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IPsec rule applies. + The interface capability name specified by this attribute MUST + exist in the frwkIfCapSetTable [FR-PIB] prior to association with + an instance of this class." + ::= { ipSecRuleEntry 2 } + + ipSecRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this + IPsec rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecRuleIfName, prior to association with an instance of this + class." + ::= { ipSecRuleEntry 3 } + + ipSecRuleDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction of traffic to which this rule should + apply." + ::= { ipSecRuleEntry 4 } + + ipSecRuleIpSecSelectorSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecSelectorSetSelectorSetId } + STATUS current + DESCRIPTION + "Identifies a set of selectors to be associated with this IPsec + rule. " + ::= { ipSecRuleEntry 5 } + + ipSecRuleipSecIpsoFilterSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIpsoFilterSetFilterSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPSO filters to be associated with this IPsec + rule. A value of zero indicates that there are no IPSO filters + associated with this rule. + + When the value of this attribute is not zero, the set of IPSO + filters is ANDed with the set of Selectors specified by + ipSecRuleIpSecSelectorSetId. In other words, a packet MUST match a + selector in the selector sets and a filter in the IPSO filter sets + before the actions associated with this rule can be applied." + ::= { ipSecRuleEntry 6 } + + ipSecRuleIpSecActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec actions to be associated with this + rule." + ::= { ipSecRuleEntry 7 } + + ipSecRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in the + ipSecActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in the ipSecActionSetTable." + ::= { ipSecRuleEntry 8 } + + ipSecRuleOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the rule within all the rules + associated with {IfName, Roles}. A smaller value indicates a + higher precedence order. " + ::= { ipSecRuleEntry 9 } + + ipSecRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 2 + negotiation, the LimitNegotiation property of the IPsecRule is + first checked to determine if the negotiation part indicated for + the rule matches that of the current negotiation (Initiator, + Responder, or Either). + + This attribute is ignored when an attempt is made to refresh an + expiring SA (either side can initiate a refresh operation). The + system can determine that the negotiation is a refresh operation + by checking to see if the selector information matches that of an + existing SA. If LimitNegotiation does not match and the selector + corresponds to a new SA, the negotiation is stopped. " + ::= { ipSecRuleEntry 10 } + + ipSecRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecRuleEntry 11 } + + ipSecRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies an IPsec rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this IPsec rule is always valid." + ::= { ipSecRuleEntry 12 } + + + -- + -- + -- The ipSecActionSetTable + -- + + ipSecActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec action sets." + ::= { ipSecAssociation 2 } + + ipSecActionSetEntry OBJECT-TYPE + SYNTAX IpSecActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecActionSetPrid } + UNIQUENESS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + ::= { ipSecActionSetTable 1 } + + IpSecActionSetEntry ::= SEQUENCE { + ipSecActionSetPrid InstanceId, + ipSecActionSetActionSetId TagId, + ipSecActionSetActionId Prid, + ipSecActionSetDoActionLogging TruthValue, + ipSecActionSetDoPacketLogging TruthValue, + ipSecActionSetOrder Unsigned16 + } + + ipSecActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecActionSetEntry 1 } + + ipSecActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec action set is composed of one or more IPsec actions. + Each action belonging to the same set has the same ActionSetId." + ::= { ipSecActionSetEntry 2 } + + ipSecActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + action to be taken. + + For IPsec static actions, it MUST point to an instance in the + ipSecStaticActionTable. + + For IPsec negotiation actions, it MUST point to an instance in the + ipSecNegotiationActionTable. For other actions, it may point to an + instance in a table specified by other PIB modules." + ::= { ipSecActionSetEntry 3 } + + ipSecActionSetDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + action is performed. This applies for ipSecNegotiationActions + with the meaning of logging a message when the negotiation is + attempted (with the success or failure result). This also applies + for ipSecStaticAction only for PreconfiguredTransport action or + PreconfiguredTunnel action with the meaning of logging a message + when the preconfigured SA is actually installed in the SADB." + ::= { ipSecActionSetEntry 4 } + + ipSecActionSetDoPacketLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to log when the resulting security association + is used to process a packet. For ipSecStaticActions, a log message + is to be generated when the IPsecBypass, IpsecDiscard or IKEReject + actions are executed." + ::= { ipSecActionSetEntry 5 } + + ipSecActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be applied + before one with a larger precedence order. " + ::= { ipSecActionSetEntry 6 } + + + -- + -- + -- The ipSecStaticActionTable + -- + + ipSecStaticActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecStaticActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec static actions." + ::= { ipSecAssociation 3 } + + ipSecStaticActionEntry OBJECT-TYPE + SYNTAX IpSecStaticActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecStaticActionPrid } + UNIQUENESS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + ::= { ipSecStaticActionTable 1 } + + IpSecStaticActionEntry ::= SEQUENCE { + ipSecStaticActionPrid InstanceId, + ipSecStaticActionAction INTEGER, + ipSecStaticActionTunnelEndpointId ReferenceId, + ipSecStaticActionDfHandling INTEGER, + ipSecStaticActionSpi Unsigned32, + ipSecStaticActionLifetimeSeconds Unsigned32, + ipSecStaticActionLifetimeKilobytes Unsigned32, + ipSecStaticActionSaTransformId Prid + } + + ipSecStaticActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecStaticActionEntry 1 } + + ipSecStaticActionAction OBJECT-TYPE + SYNTAX INTEGER { + byPass(1), + discard(2), + ikeRejection(3), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. byPass + (1) means that packets are to be allowed to pass in the clear. + discard (2) means that packets are to be discarded. ikeRejection + (3) means that that an IKE negotiation should not even be + attempted or continued. preConfiguredTransport (4) means that an + IPsec transport SA is pre-configured. preConfiguredTunnel (5) + means that an IPsec tunnel SA is pre-configured. " + ::= { ipSecStaticActionEntry 2 } + + ipSecStaticActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel (5), this + attribute indicates the peer gateway IP address. This address MUST + be a single endpoint address. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be zero." + ::= { ipSecStaticActionEntry 3 } + + ipSecStaticActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel, this + attribute specifies how the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be ignored. " + ::= { ipSecStaticActionEntry 4 } + + ipSecStaticActionSpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SPI to be used with the SA Transform identified by + ipSecStaticActionSaTransformId. + + When ipSecStaticActionAction is neither + preConfiguredTransportAction nor preConfiguredTunnelAction, this + attribute MUST be ignored." + ::= { ipSecStaticActionEntry 5 } + + ipSecStaticActionLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the amount of time (in seconds) that a security + association derived from this action should be used. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeSeconds property and of the value of + the MaxLifetimeSeconds property of the associated SA Transform. + Except if the value of this LifetimeSeconds property is zero, then + there will be no lifetime associated to this SA." + ::= { ipSecStaticActionEntry 6 } + + ipSecStaticActionLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SA lifetime in kilobytes. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeKilobytes property and of the value + of the MaxLifetimeKilobytes property of the associated SA + transform. Except if the value of this LifetimeKilobytes property + is zero, then there will be no lifetime associated with this + action. + " + ::= { ipSecStaticActionEntry 7 } + + ipSecStaticActionSaTransformId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + SA transform, e.g, ipSecEspTransformTable, ipSecAhTransformTable." + ::= { ipSecStaticActionEntry 8 } + + + -- + -- + -- The ipSecNegotiationActionTable + -- + + ipSecNegotiationActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecNegotiationActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec negotiation actions." + ::= { ipSecAssociation 4 } + + ipSecNegotiationActionEntry OBJECT-TYPE + SYNTAX IpSecNegotiationActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecNegotiationActionPrid } + UNIQUENESS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + ::= { ipSecNegotiationActionTable 1 } + + IpSecNegotiationActionEntry ::= SEQUENCE { + ipSecNegotiationActionPrid InstanceId, + ipSecNegotiationActionAction INTEGER, + ipSecNegotiationActionTunnelEndpointId ReferenceId, + ipSecNegotiationActionDfHandling INTEGER, + ipSecNegotiationActionIpSecSecurityAssociationId ReferenceId, + ipSecNegotiationActionKeyExchangeId Prid + } + + ipSecNegotiationActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecNegotiationActionEntry 1 } + + ipSecNegotiationActionAction OBJECT-TYPE + SYNTAX INTEGER { + transport(1), + tunnel(2) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. + transport(1) means that the packet should be protected with a + security association in transport mode. tunnel(2) means that the + packet should be protected with a security association in tunnel + mode. If tunnel (2) is specified, ipSecActionTunnelEndpointId + MUST also be specified." + ::= { ipSecNegotiationActionEntry 2 } + + ipSecNegotiationActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel (2), this attribute indicates + the peer gateway IP address. This address MUST be a single + endpoint address. + + When ipSecActionAction is not tunnel, this attribute MUST be + zero." + ::= { ipSecNegotiationActionEntry 3 } + + ipSecNegotiationActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel, this attribute specifies how + the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecActionAction is not tunnel, this attribute MUST be + ignored. " + ::= { ipSecNegotiationActionEntry 4 } + + ipSecNegotiationActionIpSecSecurityAssociationId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAssociationEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the + ipSecSecurityAssociationTable." + ::= { ipSecNegotiationActionEntry 5 } + + ipSecNegotiationActionKeyExchangeId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes key + exchange associations. If a single IKE phase one negotiation is + used for the key exchange, this attribute MUST point to an + instance in the ipSecIkeAssociationTable. If multiple IKE phase + one negotiations (e.g., with different modes) are to be tried + until success, this attribute SHOULD point to ipSecIkeRuleTable. + + For other key exchange methods, this attribute may point to an + instance of a PRC defined in some other PIB. + + A value of zero means that there is no key exchange procedure + associated." + ::= { ipSecNegotiationActionEntry 6 } + + + -- + -- + -- The ipSecAssociationTable + -- + + ipSecAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec associations." + ::= { ipSecAssociation 5 } + + ipSecAssociationEntry OBJECT-TYPE + SYNTAX IpSecAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAssociationPrid } + UNIQUENESS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + ::= { ipSecAssociationTable 1 } + + IpSecAssociationEntry ::= SEQUENCE { + ipSecAssociationPrid InstanceId, + ipSecAssociationMinLifetimeSeconds Unsigned32, + ipSecAssociationMinLifetimeKilobytes Unsigned32, + ipSecAssociationIdleDurationSeconds Unsigned32, + ipSecAssociationUsePfs TruthValue, + ipSecAssociationVendorId OCTET STRING, + ipSecAssociationUseKeyExchangeGroup TruthValue, + ipSecAssociationDhGroup Unsigned16, + ipSecAssociationGranularity INTEGER, + ipSecAssociationProposalSetId TagReferenceId + } + + ipSecAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAssociationEntry 1 } + + ipSecAssociationMinLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecAssociationEntry 2 } + + ipSecAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. A value of zero indicates that there is no minimum + lifetime enforced." + ::= { ipSecAssociationEntry 3 } + + ipSecAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecAssociationEntry 4 } + + ipSecAssociationUsePfs OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use PFS when refreshing keys." + ::= { ipSecAssociationEntry 5 } + + ipSecAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the IKE Vendor ID. This attribute is used together with + the property ipSecAssociationDhGroup (when it is in the vendor- + specific range) to identify the key exchange group. This + attribute is ignored unless ipSecAssociationUsePFS is true and + ipSecAssociationUseKeyExchangeGroup is false and + ipSecAssociationDhGroup is in the vendor-specific range (32768- + 65535)." + ::= { ipSecAssociationEntry 6 } + + ipSecAssociationUseKeyExchangeGroup OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use the same GroupId for phase 2 as + was used in phase 1. If UsePFS is false, then this attribute is + ignored. + + A value of true indicates that the phase 2 GroupId should be the + same as phase 1. A value of false indicates that the group number + specified by the ipSecSecurityAssociationDhGroup attribute SHALL + be used for phase 2. " + ::= { ipSecAssociationEntry 7 } + + ipSecAssociationDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the key exchange group to use for phase 2 when the + property ipSecSecurityAssociationUsePfs is true and the property + ipSecSecurityAssociationUseKeyExchangeGroup is false." + ::= { ipSecAssociationEntry 8 } + + ipSecAssociationGranularity OBJECT-TYPE + SYNTAX INTEGER { + subnet(1), + address(2), + protocol(3), + port(4) + } + STATUS current + DESCRIPTION + "Specifies how the proposed selector for the security association + will be created. + + A value of 1 (subnet) indicates that the source and destination + subnet masks of the filter entry are used. + + A value of 2 (address) indicates that only the source and + destination IP addresses of the triggering packet are used. + + A value of 3 (protocol) indicates that the source and destination + IP addresses and the IP protocol of the triggering packet are + used. + + A value of 4 (port) indicates that the source and destination IP + addresses and the IP protocol and the source and destination layer + 4 ports of the triggering packet are used. " + ::= { ipSecAssociationEntry 9 } + + ipSecAssociationProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec proposals that is associated with this + IPsec association." + ::= { ipSecAssociationEntry 10 } + + + -- + -- + -- The ipSecProposalSetTable + -- + + ipSecProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposal sets. Proposals within a set are ORed + with preference order. " + ::= { ipSecAssociation 6 } + + ipSecProposalSetEntry OBJECT-TYPE + SYNTAX IpSecProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalSetPrid } + UNIQUENESS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + ::= { ipSecProposalSetTable 1 } + + IpSecProposalSetEntry ::= SEQUENCE { + ipSecProposalSetPrid InstanceId, + ipSecProposalSetProposalSetId TagId, + ipSecProposalSetProposalId ReferenceId, + ipSecProposalSetOrder Unsigned16 + } + + ipSecProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalSetEntry 1 } + + ipSecProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + + "An IPsec proposal set is composed of one or more IPsec proposals. + Each proposal belonging to the same set has the same + ProposalSetId." + ::= { ipSecProposalSetEntry 2 } + + ipSecProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecProposalTable." + ::= { ipSecProposalSetEntry 3 } + + ipSecProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecProposalSetEntry 4 } + + + -- + -- + -- The ipSecProposalTable + -- + + ipSecProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposals. It has references to ESP, AH and + IPCOMP Transform sets. Within a proposal, different types of + transforms are ANDed. Multiple transforms of the same type are + ORed with preference order." + ::= { ipSecAssociation 7 } + + ipSecProposalEntry OBJECT-TYPE + SYNTAX IpSecProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalPrid } + UNIQUENESS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + ::= { ipSecProposalTable 1 } + + IpSecProposalEntry ::= SEQUENCE { + ipSecProposalPrid InstanceId, + ipSecProposalEspTransformSetId TagReferenceId, + ipSecProposalAhTransformSetId TagReferenceId, + ipSecProposalCompTransformSetId TagReferenceId + } + + ipSecProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalEntry 1 } + + ipSecProposalEspTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecEspTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of ESP transforms, specified in + ipSecEspTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 2 } + + ipSecProposalAhTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAhTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies an AH transform set, specified in + ipSecAhTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 3 } + + ipSecProposalCompTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCompTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of IPComp transforms, specified + in ipSecCompTransformSetTable, that is associated with this + proposal." + ::= { ipSecProposalEntry 4 } + + + -- + -- + -- The ipSecAhTransformSetTable + -- + + ipSecAhTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transform sets. Within a transform set, the + transforms are ORed with preference order. " + ::= { ipSecAhTransform 1 } + + ipSecAhTransformSetEntry OBJECT-TYPE + SYNTAX IpSecAhTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformSetPrid } + UNIQUENESS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + ::= { ipSecAhTransformSetTable 1 } + + IpSecAhTransformSetEntry ::= SEQUENCE { + ipSecAhTransformSetPrid InstanceId, + ipSecAhTransformSetTransformSetId TagId, + ipSecAhTransformSetTransformId ReferenceId, + ipSecAhTransformSetOrder Unsigned16 + } + + ipSecAhTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformSetEntry 1 } + + ipSecAhTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An AH transform set is composed of one or more AH transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecAhTransformSetEntry 2 } + + ipSecAhTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAhTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecAhTransformTable." + ::= { ipSecAhTransformSetEntry 3 } + + ipSecAhTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecAhTransformSetTransformId within a transform + set. The transform set is identified by + ipSecAhTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecAhTransformSetEntry 4 } + + + -- + -- + -- The ipSecAhTransformTable + -- + + ipSecAhTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transforms." + ::= { ipSecAhTransform 2 } + + ipSecAhTransformEntry OBJECT-TYPE + SYNTAX IpSecAhTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformPrid } + UNIQUENESS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + ::= { ipSecAhTransformTable 1 } + + IpSecAhTransformEntry ::= SEQUENCE { + ipSecAhTransformPrid InstanceId, + ipSecAhTransformTransformId INTEGER, + ipSecAhTransformIntegrityKey OCTET STRING, + ipSecAhTransformUseReplayPrevention TruthValue, + ipSecAhTransformReplayPreventionWindowSize Unsigned32, + ipSecAhTransformVendorId OCTET STRING, + ipSecAhTransformMaxLifetimeSeconds Unsigned32, + ipSecAhTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecAhTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformEntry 1 } + + ipSecAhTransformTransformId OBJECT-TYPE + SYNTAX INTEGER { + md5(2), + sha-1(3), + des(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the AH algorithm to propose." + ::= { ipSecAhTransformEntry 2 } + + ipSecAhTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this AH transform instance is used for a Static Action, this + attribute specifies the integrity key to be used. This attribute + MUST be ignored when this AH transform instance is used for a + Negotiation Action." + ::= { ipSecAhTransformEntry 3 } + + ipSecAhTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecAhTransformEntry 4 } + + ipSecAhTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecAhTransformEntry 5 } + + ipSecAhTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecAhTransformEntry 6 } + + ipSecAhTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecAhTransformEntry 7 } + + ipSecAhTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecAhTransformEntry 8 } + + + -- + -- + -- The ipSecEspTransformSetTable + -- + + ipSecEspTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transform sets. Within a transform set, the choices + are ORed with preference order. " + ::= { ipSecEspTransform 1 } + + ipSecEspTransformSetEntry OBJECT-TYPE + SYNTAX IpSecEspTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformSetPrid } + UNIQUENESS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + ::= { ipSecEspTransformSetTable 1 } + + IpSecEspTransformSetEntry ::= SEQUENCE { + ipSecEspTransformSetPrid InstanceId, + ipSecEspTransformSetTransformSetId TagId, + ipSecEspTransformSetTransformId ReferenceId, + ipSecEspTransformSetOrder Unsigned16 + } + + ipSecEspTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformSetEntry 1 } + + ipSecEspTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An ESP transform set is composed of one or more ESP transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecEspTransformSetEntry 2 } + + ipSecEspTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecEspTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecEspTransformTable." + ::= { ipSecEspTransformSetEntry 3 } + + ipSecEspTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecEspTransformSetTransformId within a transform + set. The transform set is identified by + ipSecEspTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecEspTransformSetEntry 4 } + + + -- + -- + -- The ipSecEspTransformTable + -- + + ipSecEspTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transforms." + ::= { ipSecEspTransform 2 } + + ipSecEspTransformEntry OBJECT-TYPE + SYNTAX IpSecEspTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformPrid } + UNIQUENESS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + ::= { ipSecEspTransformTable 1 } + + IpSecEspTransformEntry ::= SEQUENCE { + ipSecEspTransformPrid InstanceId, + ipSecEspTransformIntegrityTransformId INTEGER, + ipSecEspTransformCipherTransformId INTEGER, + ipSecEspTransformIntegrityKey OCTET STRING, + ipSecEspTransformCipherKey OCTET STRING, + ipSecEspTransformCipherKeyRounds Unsigned16, + ipSecEspTransformCipherKeyLength Unsigned16, + ipSecEspTransformUseReplayPrevention TruthValue, + ipSecEspTransformReplayPreventionWindowSize Unsigned32, + ipSecEspTransformVendorId OCTET STRING, + ipSecEspTransformMaxLifetimeSeconds Unsigned32, + ipSecEspTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecEspTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformEntry 1 } + + ipSecEspTransformIntegrityTransformId OBJECT-TYPE + SYNTAX INTEGER { + none(0), + hmacMd5(1), + hmacSha(2), + desMac(3), + kpdk(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP integrity algorithm to + propose." + ::= { ipSecEspTransformEntry 2 } + + ipSecEspTransformCipherTransformId OBJECT-TYPE + SYNTAX INTEGER { + desIV64(1), + des(2), + tripleDES(3), + rc5(4), + idea(5), + cast(6), + blowfish(7), + tripleIDEA(8), + desIV32(9), + rc4(10), + null(11) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP encryption algorithm to + propose." + ::= { ipSecEspTransformEntry 3 } + + ipSecEspTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the integrity key to be used. This + attribute MUST be ignored when this ESP transform instance is used + for a Negotiation Action." + ::= { ipSecEspTransformEntry 4 } + + ipSecEspTransformCipherKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the cipher key to be used. This attribute + MUST be ignored when this ESP transform instance is used for a + Negotiation Action." + ::= { ipSecEspTransformEntry 5 } + + ipSecEspTransformCipherKeyRounds OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + + "Specifies the number of key rounds for the ESP encryption + algorithm. For encryption algorithms that use fixed number of key + rounds, this value is ignored." + ::= { ipSecEspTransformEntry 6 } + + ipSecEspTransformCipherKeyLength OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies, in bits, the key length for the ESP encryption + algorithm. For encryption algorithms that use fixed-length keys, + this value is ignored." + ::= { ipSecEspTransformEntry 7 } + + ipSecEspTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecEspTransformEntry 8 } + + ipSecEspTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecEspTransformEntry 9 } + + ipSecEspTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecEspTransformEntry 10 } + + ipSecEspTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecEspTransformEntry 11 } + + ipSecEspTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecEspTransformEntry 12 } + + + -- + -- + -- The ipSecCompTransformSetTable + -- + + ipSecCompTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPComp transform sets. Within a transform set, the + choices are ORed with preference order." + ::= { ipSecCompTransform 1 } + + ipSecCompTransformSetEntry OBJECT-TYPE + SYNTAX IpSecCompTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformSetPrid } + UNIQUENESS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + ::= { ipSecCompTransformSetTable 1 } + + IpSecCompTransformSetEntry ::= SEQUENCE { + ipSecCompTransformSetPrid InstanceId, + ipSecCompTransformSetTransformSetId TagId, + ipSecCompTransformSetTransformId ReferenceId, + ipSecCompTransformSetOrder Unsigned16 + } + + ipSecCompTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformSetEntry 1 } + + ipSecCompTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPCOMP transform set is composed of one or more IPCOMP + transforms. Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecCompTransformSetEntry 2 } + + ipSecCompTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCompTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCompTransformTable." + ::= { ipSecCompTransformSetEntry 3 } + + ipSecCompTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecCompTransformSetTransformId within a transform + set. The transform set is identified by + ipSecCompTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecCompTransformSetEntry 4 } + + + -- + -- + -- The ipSecCompTransformTable + -- + + ipSecCompTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP compression (IPCOMP) algorithms." + ::= { ipSecCompTransform 2 } + + ipSecCompTransformEntry OBJECT-TYPE + SYNTAX IpSecCompTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformPrid } + UNIQUENESS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + ::= { ipSecCompTransformTable 1 } + + IpSecCompTransformEntry ::= SEQUENCE { + ipSecCompTransformPrid InstanceId, + ipSecCompTransformAlgorithm INTEGER, + ipSecCompTransformDictionarySize Unsigned16, + ipSecCompTransformPrivateAlgorithm Unsigned32, + ipSecCompTransformVendorId OCTET STRING, + ipSecCompTransformMaxLifetimeSeconds Unsigned32, + ipSecCompTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecCompTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformEntry 1 } + + ipSecCompTransformAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + oui(1), + deflate(2), + lzs(3) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the IPCOMP compression algorithm to + propose." + ::= { ipSecCompTransformEntry 2 } + + ipSecCompTransformDictionarySize OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the log2 maximum size of the dictionary for the + compression algorithm. For compression algorithms that have pre- + defined dictionary sizes, this value is ignored." + ::= { ipSecCompTransformEntry 3 } + + ipSecCompTransformPrivateAlgorithm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies a private vendor-specific compression algorithm." + ::= { ipSecCompTransformEntry 4 } + + ipSecCompTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecCompTransformEntry 5 } + + ipSecCompTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecCompTransformEntry 6 } + + ipSecCompTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecCompTransformEntry 7 } + + + -- + -- + -- The ipSecIkeRuleTable + -- + + ipSecIkeRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE rules. This table is required only when specifying: + + - Multiple IKE phase one actions (e.g., with different exchange + modes) that are associated with one IPsec association. These + actions are to be tried in sequence till one success. + + - IKE phase one actions that start automatically. + + Support of this table is optional." + ::= { ipSecIkeAssociation 1 } + + ipSecIkeRuleEntry OBJECT-TYPE + SYNTAX IpSecIkeRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeRulePrid } + UNIQUENESS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart + } + ::= { ipSecIkeRuleTable 1 } + + IpSecIkeRuleEntry ::= SEQUENCE { + ipSecIkeRulePrid InstanceId, + ipSecIkeRuleIfName SnmpAdminString, + ipSecIkeRuleRoles RoleCombination, + ipSecIkeRuleIkeActionSetId TagReferenceId, + ipSecIkeRuleActionExecutionStrategy INTEGER, + ipSecIkeRuleLimitNegotiation INTEGER, + ipSecIkeRuleAutoStart TruthValue, + ipSecIkeRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecIkeRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeRuleEntry 1 } + + ipSecIkeRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IKE rule applies. The + interface capability name specified by this attribute must exist + in the frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 2 } + + ipSecIkeRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this IKE + rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecIkeRuleIfName, prior to association with an instance of + this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 3 } + + ipSecIkeRuleIkeActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE actions to be associated with this rule." + ::= { ipSecIkeRuleEntry 4 } + + ipSecIkeRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in + ipSecIkeActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in ipSecIkeActionSetTable." + ::= { ipSecIkeRuleEntry 5 } + + ipSecIkeRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 1 + negotiation, this property is checked to determine if the + negotiation role of the rule matches that defined for the + negotiation being undertaken (e.g., Initiator, Responder, or + Both). If this check fails (e.g. the current role is IKE responder + while the rule specifies IKE initiator), then the IKE negotiation + is stopped. Note that this only applies to new IKE phase 1 + negotiations and has no effect on either renegotiation or refresh + operations with peers for which an established SA already exists." + ::= { ipSecIkeRuleEntry 6 } + + ipSecIkeRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecIkeRuleEntry 7 } + + ipSecIkeRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies a rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this rule is always valid." + ::= { ipSecIkeRuleEntry 8 } + + + -- + -- + -- The ipSecIkeActionSetTable + -- + + ipSecIkeActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE action sets." + ::= { ipSecIkeAssociation 2 } + + ipSecIkeActionSetEntry OBJECT-TYPE + SYNTAX IpSecIkeActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeActionSetPrid } + UNIQUENESS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + ::= { ipSecIkeActionSetTable 1 } + + IpSecIkeActionSetEntry ::= SEQUENCE { + ipSecIkeActionSetPrid InstanceId, + ipSecIkeActionSetActionSetId TagId, + ipSecIkeActionSetActionId Prid, + ipSecIkeActionSetOrder Unsigned16 + } + + ipSecIkeActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeActionSetEntry 1 } + + ipSecIkeActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE action set is composed of one or more IKE actions. Each + action belonging to the same set has the same ActionSetId." + ::= { ipSecIkeActionSetEntry 2 } + + ipSecIkeActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeAssociationTable." + ::= { ipSecIkeActionSetEntry 3 } + + ipSecIkeActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be tried + before one with a larger precedence order. " + ::= { ipSecIkeActionSetEntry 4 } + + + -- + -- + -- The ipSecIkeAssociationTable + -- + + ipSecIkeAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE associations." + ::= { ipSecIkeAssociation 3 } + + ipSecIkeAssociationEntry OBJECT-TYPE + SYNTAX IpSecIkeAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeAssociationPrid } + UNIQUENESS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + ::= { ipSecIkeAssociationTable 1 } + + IpSecIkeAssociationEntry ::= SEQUENCE { + ipSecIkeAssociationPrid InstanceId, + ipSecIkeAssociationMinLiftetimeSeconds Unsigned32, + ipSecIkeAssociationMinLifetimeKilobytes Unsigned32, + ipSecIkeAssociationIdleDurationSeconds Unsigned32, + ipSecIkeAssociationExchangeMode INTEGER, + ipSecIkeAssociationUseIkeIdentityType INTEGER, + ipSecIkeAssociationUseIkeIdentityValue OCTET STRING, + ipSecIkeAssociationIkePeerEndpoint ReferenceId, + ipSecIkeAssociationPresharedKey OCTET STRING, + ipSecIkeAssociationVendorId OCTET STRING, + ipSecIkeAssociationAggressiveModeGroupId Unsigned16, + ipSecIkeAssociationLocalCredentialId TagReferenceId, + ipSecIkeAssociationDoActionLogging TruthValue, + ipSecIkeAssociationIkeProposalSetId TagReferenceId + } + + ipSecIkeAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeAssociationEntry 1 } + + ipSecIkeAssociationMinLiftetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 2 } + + ipSecIkeAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 3 } + + ipSecIkeAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecIkeAssociationEntry 4 } + + ipSecIkeAssociationExchangeMode OBJECT-TYPE + SYNTAX INTEGER { + baseMode(1), + mainMode(2), + aggressiveMode(4) + } + STATUS current + DESCRIPTION + "Specifies the negotiation mode that the IKE server will use for + phase one." + ::= { ipSecIkeAssociationEntry 5 } + + ipSecIkeAssociationUseIkeIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of IKE identity to use during IKE phase one + negotiation." + ::= { ipSecIkeAssociationEntry 6 } + + ipSecIkeAssociationUseIkeIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the ID payload value to be provided to the peer during + IKE phase one negotiation." + ::= { ipSecIkeAssociationEntry 7 } + + ipSecIkeAssociationIkePeerEndpoint OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkePeerEndpointEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the ipSecIkePeerEndpointTable to + indicate an IKE peer endpoint." + ::= { ipSecIkeAssociationEntry 8 } + + ipSecIkeAssociationPresharedKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This attribute specifies the preshared key or secret to use for + IKE authentication. This is the key for all the IKE proposals of + this association that set ipSecIkeProposalAuthenticationMethod to + presharedKey(1)." + ::= { ipSecIkeAssociationEntry 9 } + + ipSecIkeAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be used in the Vendor ID payload. + + A value of NULL means that Vendor ID payload will be neither + generated nor accepted. A non-NULL value means that a Vendor ID + payload will be generated (when acting as an initiator) or is + expected (when acting as a responder). " + ::= { ipSecIkeAssociationEntry 10 } + + ipSecIkeAssociationAggressiveModeGroupId OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the group ID to be used for aggressive mode. This + attribute is ignored unless the attribute + ipSecIkeAssociationExchangeMode is set to 4 (aggressive mode). If + the value of this attribute is from the vendor-specific range + (32768-65535), this attribute qualifies the group number." + ::= { ipSecIkeAssociationEntry 11 } + + ipSecIkeAssociationLocalCredentialId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Indicates a group of credentials. One of the credentials in the + group MUST be used when establishing an IKE association with the + peer endpoint." + ::= { ipSecIkeAssociationEntry 12 } + + ipSecIkeAssociationDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + negotiation is attempted (with the success or failure result)." + ::= { ipSecIkeAssociationEntry 13 } + + ipSecIkeAssociationIkeProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE proposals that is associated with this + IKE association." + ::= { ipSecIkeAssociationEntry 14 } + + + -- + -- + -- The ipSecIkeProposalSetTable + -- + + ipSecIkeProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposal sets. Proposals within a set are ORed with + preference order. " + ::= { ipSecIkeAssociation 4 } + + ipSecIkeProposalSetEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalSetPrid } + UNIQUENESS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + ::= { ipSecIkeProposalSetTable 1 } + + IpSecIkeProposalSetEntry ::= SEQUENCE { + ipSecIkeProposalSetPrid InstanceId, + ipSecIkeProposalSetProposalSetId TagId, + ipSecIkeProposalSetProposalId ReferenceId, + ipSecIkeProposalSetOrder Unsigned16 + } + + ipSecIkeProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalSetEntry 1 } + + ipSecIkeProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE proposal set is composed of one or more IKE proposals. + Each proposal belonging to the same set has the same + ProposalSetId. " + ::= { ipSecIkeProposalSetEntry 2 } + + ipSecIkeProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkeProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeProposalTable." + ::= { ipSecIkeProposalSetEntry 3 } + + ipSecIkeProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecIkeProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecIkeProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecIkeProposalSetEntry 4 } + + + -- + -- + -- The ipSecIkeProposalTable + -- + + ipSecIkeProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposals." + ::= { ipSecIkeAssociation 5 } + + ipSecIkeProposalEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalPrid } + UNIQUENESS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + ::= { ipSecIkeProposalTable 1 } + + IpSecIkeProposalEntry ::= SEQUENCE { + ipSecIkeProposalPrid InstanceId, + ipSecIkeProposalMaxLifetimeSeconds Unsigned32, + ipSecIkeProposalMaxLifetimeKilobytes Unsigned32, + ipSecIkeProposalCipherAlgorithm INTEGER, + ipSecIkeProposalHashAlgorithm INTEGER, + ipSecIkeProposalAuthenticationMethod INTEGER, + ipSecIkeProposalPrfAlgorithm Unsigned16, + ipSecIkeProposalIkeDhGroup Unsigned16, + ipSecIkeProposalVendorId OCTET STRING + } + + ipSecIkeProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalEntry 1 } + + ipSecIkeProposalMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecIkeProposalEntry 2 } + + ipSecIkeProposalMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecIkeProposalEntry 3 } + + ipSecIkeProposalCipherAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + des-CBC(1), + idea-CBC(2), + blowfish-CBC(3), + rc5-R16-B64-CBC(4), + tripleDes-CBC(5), + cast-CBC(6) + } + STATUS current + DESCRIPTION + "Specifies the encryption algorithm to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 4 } + + ipSecIkeProposalHashAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + md5(1), + sha-1(2), + tiger(3) + } + STATUS current + DESCRIPTION + "Specifies the hash algorithm to propose for the IKE association." + ::= { ipSecIkeProposalEntry 5 } + + ipSecIkeProposalAuthenticationMethod OBJECT-TYPE + SYNTAX INTEGER { + presharedKey(1), + dssSignatures(2), + rsaSignatures(3), + rsaEncryption(4), + revisedRsaEncryption(5), + kerberos(6) + } + STATUS current + DESCRIPTION + "Specifies the authentication method to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 6 } + + ipSecIkeProposalPrfAlgorithm OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Psuedo-Random Function (PRF) to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 7 } + + ipSecIkeProposalIkeDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Diffie-Hellman group to propose for the IKE + association. The value of this property is to be ignored when + doing aggressive mode." + ::= { ipSecIkeProposalEntry 8 } + + ipSecIkeProposalVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Further qualifies the key exchange group. The property is + ignored unless the exchange is not in aggressive mode and the + property GroupID is in the vendor-specific range." + ::= { ipSecIkeProposalEntry 9 } + + + -- + -- + -- The ipSecIkePeerEndpointTable + -- + + ipSecIkePeerEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkePeerEndpointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE peer endpoints." + ::= { ipSecIkeAssociation 6 } + + ipSecIkePeerEndpointEntry OBJECT-TYPE + SYNTAX IpSecIkePeerEndpointEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkePeerEndpointPrid } + UNIQUENESS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + ::= { ipSecIkePeerEndpointTable 1 } + + IpSecIkePeerEndpointEntry ::= SEQUENCE { + ipSecIkePeerEndpointPrid InstanceId, + ipSecIkePeerEndpointIdentityType INTEGER, + ipSecIkePeerEndpointIdentityValue OCTET STRING, + ipSecIkePeerEndpointAddressType INTEGER, + ipSecIkePeerEndpointAddress OCTET STRING, + ipSecIkePeerEndpointCredentialSetId TagReferenceId + } + + ipSecIkePeerEndpointPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkePeerEndpointEntry 1 } + + ipSecIkePeerEndpointIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of identity that MUST be provided by the peer + in the ID payload during IKE phase one negotiation." + ::= { ipSecIkePeerEndpointEntry 2 } + + ipSecIkePeerEndpointIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be matched with the ID payload provided by + the peer during IKE phase one negotiation. + + Different Wildcards wildcard mechanisms can be used as well as the + prefix notation for IPv4 addresses depending on the ID payload: + + - an IdentityValue of '*@company.com' will match an user FQDN ID + payload of 'JDOE@COMPANY.COM' + + - an IdentityValue of '*.company.com' will match a FQDN ID payload + of 'WWW.COMPANY.COM' + + - an IdentityValue of 'cn=*,ou=engineering,o=company,c=us' will + match a DER DN ID payload of 'cn=John Doe, ou=engineering, + o=company, c=us' + + - an IdentityValue of '193.190.125.0/24' will match an IPv4 + address ID payload of 193.190.125.10. + + - an IdentityValue of '193.190.125.*' will also match an IPv4 + address ID payload of 193.190.125.10. + + The above wildcard mechanisms MUST be supported for all ID + payloads supported by the local IKE entity. The character '*' + replaces 0 or multiple instances of any character." + ::= { ipSecIkePeerEndpointEntry 3 } + + ipSecIkePeerEndpointAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4(1), + ipV6(2) + } + STATUS current + DESCRIPTION + "Specifies IKE peer endpoint address type. This attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 4 } + + ipSecIkePeerEndpointAddress OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an endpoint address with which this PEP establishes IKE + association. This attribute is used only when the IKE association + is to be started automatically. Hence, this attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 5 } + + ipSecIkePeerEndpointCredentialSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Identifies a set of credentials. Any one of the credentials in + the set is acceptable as the IKE peer credential." + ::= { ipSecIkePeerEndpointEntry 6 } + + + -- + -- + -- The ipSecCredentialSetTable + -- + + ipSecCredentialSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credential sets. + + For IKE peer credentials, any one of the credentials in the set is + acceptable as peer credential during IEK phase 1 negotiation. For + IKE local credentials, any one of the credentials in the set can + be used in IKE phase 1 negotiation." + ::= { ipSecCredential 1 } + + ipSecCredentialSetEntry OBJECT-TYPE + SYNTAX IpSecCredentialSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialSetPrid } + UNIQUENESS { + ipSecCredentialSetPrid, + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + ::= { ipSecCredentialSetTable 1 } + + IpSecCredentialSetEntry ::= SEQUENCE { + ipSecCredentialSetPrid InstanceId, + ipSecCredentialSetSetId TagId, + ipSecCredentialSetCredentialId ReferenceId + } + + ipSecCredentialSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialSetEntry 1 } + + ipSecCredentialSetSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A credential set is composed of one or more credentials. Each + credential belonging to the same set has the same + CredentialSetId." + ::= { ipSecCredentialSetEntry 2 } + + ipSecCredentialSetCredentialId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCredentialEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCredentialTable." + ::= { ipSecCredentialSetEntry 3 } + + + -- + -- + -- The ipSecCredentialTable + -- + + ipSecCredentialTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credentials." + ::= { ipSecCredential 2 } + + ipSecCredentialEntry OBJECT-TYPE + SYNTAX IpSecCredentialEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialPrid } + UNIQUENESS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + ::= { ipSecCredentialTable 1 } + + IpSecCredentialEntry ::= SEQUENCE { + ipSecCredentialPrid InstanceId, + ipSecCredentialCredentialType INTEGER, + ipSecCredentialFieldsId TagReferenceId, + ipSecCredentialCrlDistributionPoint OCTET STRING + } + + ipSecCredentialPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialEntry 1 } + + ipSecCredentialCredentialType OBJECT-TYPE + SYNTAX INTEGER { + certificateX509(1), + kerberos-ticket(2) + } + STATUS current + DESCRIPTION + "Specifies the type of credential to be matched." + ::= { ipSecCredentialEntry 2 } + + ipSecCredentialFieldsId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialFieldsSetId } + STATUS current + DESCRIPTION + "Identifies a group of matching criteria to be used for the peer + credential. The identified criteria MUST all be satisfied." + ::= { ipSecCredentialEntry 3 } + + ipSecCredentialCrlDistributionPoint OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When credential type is certificate X509, this attribute + identifies the Certificate Revocation List (CRL) distribution + point for this credential." + ::= { ipSecCredentialEntry 4 } + + + -- + -- + -- The ipSecCredentialFieldsTable + -- + + ipSecCredentialFieldsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialFieldsEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies sets of credential sub-fields and their values to be + matched against. " + ::= { ipSecCredential 3 } + + ipSecCredentialFieldsEntry OBJECT-TYPE + SYNTAX IpSecCredentialFieldsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialFieldsPrid } + UNIQUENESS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + ::= { ipSecCredentialFieldsTable 1 } + + IpSecCredentialFieldsEntry ::= SEQUENCE { + ipSecCredentialFieldsPrid InstanceId, + ipSecCredentialFieldsName OCTET STRING, + ipSecCredentialFieldsValue OCTET STRING, + ipSecCredentialFieldsSetId TagId + } + + ipSecCredentialFieldsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialFieldsEntry 1 } + + ipSecCredentialFieldsName OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the sub-field of the credential to match with. This is + the string representation of a X.509 certificate attribute, e.g.: + 'serialNumber', 'issuerName', 'subjectName', etc.." + ::= { ipSecCredentialFieldsEntry 2 } + + ipSecCredentialFieldsValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to match with for the sub-field identified by + ipSecCredentialFieldsName. A wildcard mechanism can be used in the + Value string. E.g., if the Name is 'subjectName' then a Value of + 'cn=*,ou=engineering,o=foo,c=be' will match successfully a + certificate whose subject attribute is 'cn=Jane Doe, + ou=engineering, o=foo, c=be'. The wildcard character '*' can be + used to represent 0 or several characters." + ::= { ipSecCredentialFieldsEntry 3 } + + ipSecCredentialFieldsSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the set this criteria belongs to. All criteria within a + set MUST all be satisfied." + ::= { ipSecCredentialFieldsEntry 4 } + + + -- + -- + -- The ipSecSelectorSetTable + -- + + ipSecSelectorSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selector sets." + ::= { ipSecSelector 1 } + + ipSecSelectorSetEntry OBJECT-TYPE + SYNTAX IpSecSelectorSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorSetPrid } + UNIQUENESS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + ::= { ipSecSelectorSetTable 1 } + + IpSecSelectorSetEntry ::= SEQUENCE { + ipSecSelectorSetPrid InstanceId, + ipSecSelectorSetSelectorSetId TagId, + ipSecSelectorSetSelectorId Prid, + ipSecSelectorSetOrder Unsigned16 + } + + ipSecSelectorSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorSetEntry 1 } + + ipSecSelectorSetSelectorSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec selector set is composed of one or more IPsec selectors. + Each selector belonging to the same set has the same + SelectorSetId." + ::= { ipSecSelectorSetEntry 2 } + + ipSecSelectorSetSelectorId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes + selectors. To use selectors defined in this IPsec PIB module, this + attribute MUST point to an instance in ipSecSelectorTable. This + attribute may also point to an instance in a selector or filter + table defined in other PIB modules." + ::= { ipSecSelectorSetEntry 3 } + + ipSecSelectorSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the selectors + identified by ipSecSelectorId within a selector set. The selector + set is identified by ipSecSelectorSetId. A smaller integer value + indicates a higher preference. All selectors constructed from the + instance pointed by ipSecSelectorId have the same order." + ::= { ipSecSelectorSetEntry 4 } + + + -- + -- + -- The ipSecSelectorTable + -- + + ipSecSelectorTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selectors. Each row in the selector table + represents multiple selectors. These selectors are obtained as + follows: + + 1. Substitute the ipSecSelectorSrcAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorSrcAddressGroupId. + + 2. Substitute the ipSecSelectorDstAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorDstAddressGroupId. + + 3. Substitute the ipSecSelectorSrcPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorSrcPortGroupId. + + 4. Substitute the ipSecSelectorDstPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorDstPortGroupId. + + 5. Construct all the possible combinations of the above four + fields. Then add to the combinations the ipSecSelectorProtocol, + ipSecSelectorDscp and ipSecSelectorFlowLabel attributes to form + all the selectors.el attributes to form the list of selectors. + + The relative order of the selectors constructed from a single row + is unspecified. " + ::= { ipSecSelector 2 } + + ipSecSelectorEntry OBJECT-TYPE + SYNTAX IpSecSelectorEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorPrid } + UNIQUENESS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + ::= { ipSecSelectorTable 1 } + + IpSecSelectorEntry ::= SEQUENCE { + ipSecSelectorPrid InstanceId, + ipSecSelectorSrcAddressGroupId TagReferenceId, + ipSecSelectorSrcPortGroupId TagReferenceId, + ipSecSelectorDstAddressGroupId TagReferenceId, + ipSecSelectorDstPortGroupId TagReferenceId, + ipSecSelectorProtocol INTEGER, + ipSecSelectorDscp INTEGER, + ipSecSelectorFlowLabel OCTET STRING + } + + ipSecSelectorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorEntry 1 } + + ipSecSelectorSrcAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates source addresses. All addresses in ipSecAddressTable + whose ipSecAddressGroupId matches this value are included as + source addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 2 } + + ipSecSelectorSrcPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates source layer 4 port numbers. All ports in ipSecL4Port + whose ipSecL4PortGroupId matches this value are included. + + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 3 } + + ipSecSelectorDstAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates destination addresses. All addresses in + ipSecAddressTable whose ipSecAddressGroupId matches this value are + included as destination addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 4 } + + ipSecSelectorDstPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates destination layer 4 port numbers. All ports in + ipSecL4Port whose ipSecL4PortGroupId matches this value are + included. + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 5 } + + ipSecSelectorProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "Specifies IP protocol to match against a packet's protocol. A + value of zero indicates wildcard protocol, i.e., any protocol + matches." + ::= { ipSecSelectorEntry 6 } + + ipSecSelectorDscp OBJECT-TYPE + SYNTAX INTEGER (-1..63) + STATUS current + DESCRIPTION + "Specifies the DSCP value to match against the DSCP in a packet + header. A value of -1 indicates match all." + ::= { ipSecSelectorEntry 7 } + + ipSecSelectorFlowLabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + + + "Specifies the Flow Label to match against the Flow Label field in + the IPv6 header of a packet. This attribute MUST be a zero length + OCTET STRING when specifying selectors for IPv4 packets." + ::= { ipSecSelectorEntry 8 } + + + -- + -- + -- The ipSecAddressTable + -- + + ipSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAddressEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP addresses. To specify a single IP address, + ipSecAddressAddrMin MUST be specified. To specify a range of + addresses, both ipSecAddressAddrMin and ipSecAddressAddrMax MUST + be specified. To specify a subnet, both ipSecAddressAddrMin and + ipSecAddressAddrMask MUST be specified. " + ::= { ipSecSelector 3 } + + ipSecAddressEntry OBJECT-TYPE + SYNTAX IpSecAddressEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAddressPrid } + UNIQUENESS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + ::= { ipSecAddressTable 1 } + + IpSecAddressEntry ::= SEQUENCE { + ipSecAddressPrid InstanceId, + ipSecAddressAddressType INTEGER, + ipSecAddressAddrMask OCTET STRING, + ipSecAddressAddrMin OCTET STRING, + ipSecAddressAddrMax OCTET STRING, + ipSecAddressGroupId TagId + } + + ipSecAddressPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAddressEntry 1 } + + ipSecAddressAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the address type. " + ::= { ipSecAddressEntry 2 } + + ipSecAddressAddrMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A mask for the matching of the IP address. A zero bit in the mask + means that the corresponding bit in the address always matches. + + This attribute MUST be ignored when ipSecAddressAddressType is not + of IPv4 or IPv6 type." + ::= { ipSecAddressEntry 3 } + + ipSecAddressAddrMin OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an IP address. " + ::= { ipSecAddressEntry 4 } + + ipSecAddressAddrMax OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "If a range of addresses is used then this specifies the ending + address. The type of this address must be the same as the + ipSecAddressAddrMin. + + If no range is specified then this attribute MUST be a zero length + OCTET STRING." + ::= { ipSecAddressEntry 5 } + + ipSecAddressGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this IP address, address range or subnet + address belongs to." + ::= { ipSecAddressEntry 6 } + + + -- + -- + -- The ipSecL4PortTable + -- + + ipSecL4PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecL4PortEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies layer four port numbers." + ::= { ipSecSelector 4 } + + ipSecL4PortEntry OBJECT-TYPE + SYNTAX IpSecL4PortEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecL4PortPrid } + UNIQUENESS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + ::= { ipSecL4PortTable 1 } + + IpSecL4PortEntry ::= SEQUENCE { + ipSecL4PortPrid InstanceId, + ipSecL4PortPortMin Unsigned16, + ipSecL4PortPortMax Unsigned16, + ipSecL4PortGroupId TagId + } + + ipSecL4PortPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecL4PortEntry 1 } + + ipSecL4PortPortMin OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + "Specifies a layer 4 port or the first layer 4 port number of a + range of ports. The value of this attribute must be equal or less + than that of ipSecL4PortPortMax. + + A value of zero indicates any port matches." + ::= { ipSecL4PortEntry 2 } + + ipSecL4PortPortMax OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the last layer 4 port in the range. If only a single + port is specified, the value of this attribute must be equal to + that of ipSecL4PortPortMin. Otherwise, the value of this attribute + MUST be greater than that specified by ipSecL4PortPortMin. + + If ipSecL4PortPortMin is zero, this attribute MUST be ignored." + ::= { ipSecL4PortEntry 3 } + + ipSecL4PortGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this port or port range belongs to." + ::= { ipSecL4PortEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterSetTable + -- + + ipSecIpsoFilterSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filter sets." + ::= { ipSecSelector 5 } + + ipSecIpsoFilterSetEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterSetPrid } + UNIQUENESS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + ::= { ipSecIpsoFilterSetTable 1 } + + IpSecIpsoFilterSetEntry ::= SEQUENCE { + ipSecIpsoFilterSetPrid InstanceId, + ipSecIpsoFilterSetFilterSetId TagId, + ipSecIpsoFilterSetFilterId ReferenceId, + ipSecIpsoFilterSetOrder Unsigned16 + } + + ipSecIpsoFilterSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterSetEntry 1 } + + ipSecIpsoFilterSetFilterSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPSO filter set is composed of one or more IPSO filters. Each + filter belonging to the same set has the same FilterSetId." + ::= { ipSecIpsoFilterSetEntry 2 } + + ipSecIpsoFilterSetFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIpsoFilterEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIpsoFilterTable." + ::= { ipSecIpsoFilterSetEntry 3 } + + ipSecIpsoFilterSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the filter + identified by ipSecIpsoFilterSetFilterId within a filter set. The + filter set is identified by ipSecIpsoFilterSetFilterSetId. A + smaller integer value indicates a higher preference." + ::= { ipSecIpsoFilterSetEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterTable + -- + + ipSecIpsoFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filters." + ::= { ipSecSelector 6 } + + ipSecIpsoFilterEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterPrid } + UNIQUENESS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + ::= { ipSecIpsoFilterTable 1 } + + IpSecIpsoFilterEntry ::= SEQUENCE { + ipSecIpsoFilterPrid InstanceId, + ipSecIpsoFilterMatchConditionType INTEGER, + ipSecIpsoFilterClassificationLevel INTEGER, + ipSecIpsoFilterProtectionAuthority INTEGER + } + + ipSecIpsoFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterEntry 1 } + + ipSecIpsoFilterMatchConditionType OBJECT-TYPE + SYNTAX INTEGER { + classificationLevel(1), + protectionAuthority(2) + } + STATUS current + DESCRIPTION + "Specifies the IPSO header field to be matched." + ::= { ipSecIpsoFilterEntry 2 } + + ipSecIpsoFilterClassificationLevel OBJECT-TYPE + SYNTAX INTEGER { + topSecret(61), + secret(90), + confidential(150), + unclassified(171) + } + STATUS current + DESCRIPTION + "Specifies the value for classification level to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 1 (classificationLevel)." + ::= { ipSecIpsoFilterEntry 3 } + + ipSecIpsoFilterProtectionAuthority OBJECT-TYPE + SYNTAX INTEGER { + genser(0), + siop-esi(1), + sci(2), + nsa(3), + doe(4) + } + STATUS current + DESCRIPTION + "Specifies the value for protection authority to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 2 (protectionAuthority). + " + ::= { ipSecIpsoFilterEntry 4 } + + + -- + -- + -- The ipSecRuleTimePeriodTable + -- + + ipSecRuleTimePeriodTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies the time periods during which a policy rule is valid. + The values of the first five attributes in a row are ANDed + together to determine the validity period(s). If any of the five + attributes is not present, it is treated as having value always + enabled. " + ::= { ipSecPolicyTimePeriod 1 } + + ipSecRuleTimePeriodEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodPrid } + UNIQUENESS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + ::= { ipSecRuleTimePeriodTable 1 } + + IpSecRuleTimePeriodEntry ::= SEQUENCE { + ipSecRuleTimePeriodPrid InstanceId, + ipSecRuleTimePeriodTimePeriod OCTET STRING, + ipSecRuleTimePeriodMonthOfYearMask OCTET STRING, + ipSecRuleTimePeriodDayOfMonthMask OCTET STRING, + ipSecRuleTimePeriodDayOfWeekMask OCTET STRING, + ipSecRuleTimePeriodTimeOfDayMask OCTET STRING, + ipSecRuleTimePeriodLocalOrUtcTime INTEGER + } + + ipSecRuleTimePeriodPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodEntry 1 } + + ipSecRuleTimePeriodTimePeriod OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that identifies an overall range of calendar + dates and times over which a policy rule is valid. It reuses the + format for an explicit time period defined in RFC 2445 : a string + representing a starting date and time, in which the character 'T' + indicates the beginning of the time portion, followed by the + solidus character '/', followed by a similar string representing + an end date and time. The first date indicates the beginning of + the range, while the second date indicates the end. Thus, the + second date and time must be later than the first. Date/times are + expressed as substrings of the form yyyymmddThhmmss. + + There are also two special cases: + + - If the first date/time is replaced with the string + THISANDPRIOR, then the property indicates that a policy rule is + valid [from now] until the date/time that appears after the '/'. + + - If the second date/time is replaced with the string + THISANDFUTURE, then the property indicates that a policy rule + becomes valid on the date/time that appears before the '/', and + remains valid from that point on. + " + ::= { ipSecRuleTimePeriodEntry 2 } + + ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which months the policy is valid + for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000006 for this + property; + + - a 2-octet field consisting of 12 bits identifying the 12 months + of the year, beginning with January and ending with December, + followed by 4 bits that are always set to '0'. For each month, + the value '1' indicates that the policy is valid for that month, + and the value '0' indicates that it is not valid. + + If this property is omitted, then the policy rule is treated as + valid for all twelve months." + ::= { ipSecRuleTimePeriodEntry 3 } + + ipSecRuleTimePeriodDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the month the policy + is valid for. The octet string is structured as follows: + + -a 4-octet length field, indicating the length of the entire octet + string; this field is always set to 0x0000000C for this property; + + -an 8-octet field consisting of 31 bits identifying the days of + the month counting from the beginning, followed by 31 more bits + identifying the days of the month counting from the end, followed + by 2 bits that are always set to '0'. For each day, the value '1' + indicates that the policy is valid for that day, and the value '0' + indicates that it is not valid. + + For months with fewer than 31 days, the digits corresponding to + days that the months do not have (counting in both directions) are + ignored. + " + ::= { ipSecRuleTimePeriodEntry 4 } + + ipSecRuleTimePeriodDayOfWeekMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the week the policy + is valid for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000005 for this + property; + + - a 1-octet field consisting of 7 bits identifying the 7 days of + the week, beginning with Sunday and ending with Saturday, followed + by 1 bit that is always set to '0'. For each day of the week, the + value '1' indicates that the policy is valid for that day, and the + value '0' indicates that it is not valid. + " + ::= { ipSecRuleTimePeriodEntry 5 } + + ipSecRuleTimePeriodTimeOfDayMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies a range of times in a day the + policy is valid for. It is formatted as follows: + + A time string beginning with the character 'T', followed by the + solidus character '/', followed by a second time string. The + first time indicates the beginning of the range, while the second + time indicates the end. Times are expressed as substrings of the + form Thhmmss. + + The second substring always identifies a later time than the first + substring. To allow for ranges that span midnight, however, the + value of the second string may be smaller than the value of the + first substring. Thus, T080000/T210000 identifies the range from + 0800 until 2100, while T210000/T080000 identifies the range from + 2100 until 0800 of the following day." + ::= { ipSecRuleTimePeriodEntry 6 } + + ipSecRuleTimePeriodLocalOrUtcTime OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + STATUS current + DESCRIPTION + "This property indicates whether the times represented in this + table represent local times or UTC times. There is no provision + for mixing of local times and UTC times: the value of this + property applies to all of the other time-related properties." + ::= { ipSecRuleTimePeriodEntry 7 } + + + -- + -- + -- The ipSecRuleTimePeriodSetTable + -- + + ipSecRuleTimePeriodSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies time period sets. The ipSecRuleTimePeriodTable can + specify only a single time period within a day. This table enables + the specification of multiple time periods within a day by + grouping them into one set. " + ::= { ipSecPolicyTimePeriod 2 } + + ipSecRuleTimePeriodSetEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodSetPrid } + UNIQUENESS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + ::= { ipSecRuleTimePeriodSetTable 1 } + + IpSecRuleTimePeriodSetEntry ::= SEQUENCE { + ipSecRuleTimePeriodSetPrid InstanceId, + ipSecRuleTimePeriodSetRuleTimePeriodSetId TagId, + ipSecRuleTimePeriodSetRuleTimePeriodId ReferenceId + } + + ipSecRuleTimePeriodSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodSetEntry 1 } + + ipSecRuleTimePeriodSetRuleTimePeriodSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An integer that uniquely identifies an ipSecRuleTimePeriod set. " + ::= { ipSecRuleTimePeriodSetEntry 2 } + + ipSecRuleTimePeriodSetRuleTimePeriodId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecRuleTimePeriodEntry } + STATUS current + DESCRIPTION + "An integer that identifies an ipSecRuleTimePeriod, specified by + ipSecRuleTimePeriodPrid in the ipSecRuleTimePeriodTable, that is + included in this set." + ::= { ipSecRuleTimePeriodSetEntry 3 } + + + -- + -- + -- The ipSecIfCapsTable + -- + + ipSecIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Specifies capabilities that may be associated with an interface + of a specific type. The instances of this table are referenced by + the frwkIfCapSetCapability attribute of the frwkIfCapSetTable [FR- + PIB]." + ::= { ipSecIfCapability 1 } + + ipSecIfCapsEntry OBJECT-TYPE + SYNTAX IpSecIfCapsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIfCapsPrid } + UNIQUENESS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + ::= { ipSecIfCapsTable 1 } + + IpSecIfCapsEntry ::= SEQUENCE { + ipSecIfCapsPrid InstanceId, + ipSecIfCapsDirection INTEGER, + ipSecIfCapsMaxIpSecActions Unsigned16, + ipSecIfCapsMaxIkeActions Unsigned16 + } + + ipSecIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIfCapsEntry 1 } + + ipSecIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction for which this capability applies." + ::= { ipSecIfCapsEntry 2 } + + ipSecIfCapsMaxIpSecActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IPsec action set may + contain. IPsec action sets are specified by the + ipSecActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 3 } + + ipSecIfCapsMaxIkeActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IKE action set may + contain. IKE action sets are specified by the + ipSecIkeActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 4 } + + + -- + -- + -- Conformance Section + -- + + ipSecPolicyPibConformanceCompliances + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 1 } + + ipSecPolicyPibConformanceGroups + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 2 } + + ipSecPibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " Compliance statement" + MODULE -- this module + MANDATORY-GROUPS { + ipSecRuleGroup, + ipSecActionSetGroup, + ipSecStaticActionGroup, + ipSecNegotiationActionGroup, + ipSecAssociationGroup, + ipSecProposalSetGroup, + ipSecProposalGroup, + ipSecAhTransformSetGroup, + ipSecAhTransformGroup, + ipSecEspTransformSetGroup, + ipSecEspTransformGroup, + ipSecCompTransformSetGroup, + ipSecCompTransformGroup, + ipSecIkeAssociationGroup, + ipSecIkeProposalSetGroup, + ipSecIkeProposalGroup, + ipSecIkePeerEndpointGroup, + ipSecCredentialSetGroup, + ipSecCredentialGroup, + ipSecCredentialFieldsGroup, + ipSecSelectorSetGroup, + ipSecSelectorGroup, + ipSecAddressGroup, + ipSecL4PortGroup, + ipSecIfCapsGroup + } + + GROUP ipSecIkeRuleGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIkeActionSetGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIpsoFilterSetGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecIpsoFilterGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecRuleTimePeriodGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + GROUP ipSecRuleTimePeriodSetGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + OBJECT ipSecRuleipSecIpsoFilterSetId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleLimitNegotiation + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleAutoStart + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleIpSecRuleTimePeriodGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoPacketLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationUseKeyExchangeGroup + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationGranularity + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyRounds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyLength + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformDictionarySize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformPrivateAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLiftetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationPresharedKey + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationAggressiveModeGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationLocalCredentialId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalPrfAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddressType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddress + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIfCapsMaxIkeActions + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleActionExecutionStrategy + SYNTAX INTEGER { + doAll(1) + } + DESCRIPTION + " Support of doUntilSuccess(2) is not required" + + OBJECT ipSecStaticActionAction + SYNTAX INTEGER { + byPass(1), + discard(2), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + DESCRIPTION + " Support of ikeRejection(3) is not required" + + ::= { ipSecPolicyPibConformanceCompliances 1 } + + ipSecRuleGroup OBJECT-GROUP + OBJECTS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleDirection, + ipSecRuleIpSecSelectorSetId, + ipSecRuleipSecIpsoFilterSetId, + ipSecRuleIpSecActionSetId, + ipSecRuleActionExecutionStrategy, + ipSecRuleOrder, + ipSecRuleLimitNegotiation, + ipSecRuleAutoStart, + ipSecRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTable." + ::= { ipSecPolicyPibConformanceGroups 1 } + + ipSecActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 2 } + + ipSecStaticActionGroup OBJECT-GROUP + OBJECTS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + STATUS current + DESCRIPTION + "Objects from the ipSecStaticActionTable." + ::= { ipSecPolicyPibConformanceGroups 3 } + + ipSecNegotiationActionGroup OBJECT-GROUP + OBJECTS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + STATUS current + DESCRIPTION + "Objects from the ipSecNegotiationActionTable." + ::= { ipSecPolicyPibConformanceGroups 4 } + + ipSecAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 5 } + + ipSecProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 6 } + + ipSecProposalGroup OBJECT-GROUP + OBJECTS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalTable." + ::= { ipSecPolicyPibConformanceGroups 7 } + + ipSecAhTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 8 } + + ipSecAhTransformGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformTable." + ::= { ipSecPolicyPibConformanceGroups 9 } + + ipSecEspTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 10 } + + ipSecEspTransformGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformTable." + ::= { ipSecPolicyPibConformanceGroups 11 } + + ipSecCompTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 12 } + + ipSecCompTransformGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformTable." + ::= { ipSecPolicyPibConformanceGroups 13 } + + ipSecIkeRuleGroup OBJECT-GROUP + OBJECTS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart, + ipSecIkeRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeRuleTable." + ::= { ipSecPolicyPibConformanceGroups 14 } + + ipSecIkeActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 15 } + + ipSecIkeAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 16 } + + ipSecIkeProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 17 } + + ipSecIkeProposalGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalTable." + ::= { ipSecPolicyPibConformanceGroups 18 } + + ipSecIkePeerEndpointGroup OBJECT-GROUP + OBJECTS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkePeerEndpointTable." + ::= { ipSecPolicyPibConformanceGroups 19 } + + ipSecCredentialSetGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialSetTable." + ::= { ipSecPolicyPibConformanceGroups 20 } + + ipSecCredentialGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialTable." + ::= { ipSecPolicyPibConformanceGroups 21 } + + ipSecCredentialFieldsGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialFieldsTable." + ::= { ipSecPolicyPibConformanceGroups 22 } + + ipSecSelectorSetGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorSetTable." + ::= { ipSecPolicyPibConformanceGroups 23 } + + ipSecSelectorGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorTable." + ::= { ipSecPolicyPibConformanceGroups 24 } + + ipSecAddressGroup OBJECT-GROUP + OBJECTS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAddressTable." + ::= { ipSecPolicyPibConformanceGroups 25 } + + ipSecL4PortGroup OBJECT-GROUP + OBJECTS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecL4PortTable." + ::= { ipSecPolicyPibConformanceGroups 26 } + + ipSecIpsoFilterSetGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterSetTable." + ::= { ipSecPolicyPibConformanceGroups 27 } + + ipSecIpsoFilterGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterTable." + ::= { ipSecPolicyPibConformanceGroups 28 } + + ipSecRuleTimePeriodGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodTable." + ::= { ipSecPolicyPibConformanceGroups 29 } + + ipSecRuleTimePeriodSetGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodSetTable." + ::= { ipSecPolicyPibConformanceGroups 30 } + + ipSecIfCapsGroup OBJECT-GROUP + OBJECTS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + STATUS current + DESCRIPTION + "Objects from the ipSecIfCapsTable." + ::= { ipSecPolicyPibConformanceGroups 31 } + +END diff --git a/pibs/tubs/IPSEC-POLICY-PIB-orig b/pibs/tubs/IPSEC-POLICY-PIB-orig new file mode 100644 index 0000000..c7c9a91 --- /dev/null +++ b/pibs/tubs/IPSEC-POLICY-PIB-orig @@ -0,0 +1,4157 @@ +IPSEC-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId + FROM COPS-PR-SPPI + RoleCombination + FROM FRAMEWORK-TC-PIB; + + ipSecPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORY { tbd } -- IPsec Client Type -- + LAST-UPDATED "200202241800Z" + ORGANIZATION "IETF ipsp WG" + CONTACT-INFO " + Man Li + Nokia + 5 Wayside Road, + Burlington, MA 01803 + Phone: +1 781 993 3923 + Email: man.m.li@nokia.com + + Avri Doria + Div. of Computer Communications + Lulea University of Technology + SE-971 87 + Lulea, Sweden + Phone: +46 920 49 3030 + Email: avri@sm.luth.se + + Jamie Jason + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 9531 + Fax: +1 503 264 9428 + Email: jamie.jason@intel.com + + Cliff Wang + SmartPipes Inc. + Suite 300, 565 Metro Place South + Dublin, OH 43017 + Phone: +1 614 923 6241 + Email: CWang@smartpipes.com + + Markus Stenberg + SSH Communications Security Corp. + Fredrikinkatu 42 + FIN-00100 Helsinki, Finland + Phone: +358 20 500 7466 + Email: markus.stenberg@ssh.com" + + + DESCRIPTION + "This PIB module contains a set of policy rule classes that + describe IPsec policies." + ::= { pib yyy } û- yyy to be assigned by IANA -- + + + Unsigned16 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An unsigned 16 bit integer." + SYNTAX Unsigned32 (0..65535) + + ipSecAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IPsec Security Associations." + ::= { ipSecPolicyPib 1 } + + ipSecAhTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies AH Transforms." + ::= { ipSecPolicyPib 2 } + + ipSecEspTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies ESP Transforms." + ::= { ipSecPolicyPib 3 } + + ipSecCompTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies Comp Transforms." + ::= { ipSecPolicyPib 4 } + + ipSecIkeAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IKE Security Associations." + ::= { ipSecPolicyPib 5 } + + ipSecCredential OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies credentials for IKE phase one negotiations." + ::= { ipSecPolicyPib 6 } + + ipSecSelector OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies selectors for IPsec associations." + ::= { ipSecPolicyPib 7 } + + ipSecPolicyTimePeriod OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies the time periods during which a policy rule + is valid." + ::= { ipSecPolicyPib 8 } + + ipSecIfCapability OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies capabilities associated with interface + types." + ::= { ipSecPolicyPib 9 } + + ipSecPolicyPibConformance OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies requirements for conformance to the IPsec + Policy PIB" + ::= { ipSecPolicyPib 10 } + + + -- + -- + -- The ipSecRuleTable + -- + + ipSecRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table is the starting point for specifying an IPsec policy. + It contains an ordered list of IPsec rules. " + ::= { ipSecAssociation 1 } + + ipSecRuleEntry OBJECT-TYPE + SYNTAX IpSecRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRulePrid } + UNIQUENESS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleOrder + } + ::= { ipSecRuleTable 1 } + + IpSecRuleEntry ::= SEQUENCE { + ipSecRulePrid InstanceId, + ipSecRuleIfName SnmpAdminString, + ipSecRuleRoles RoleCombination, + ipSecRuleDirection INTEGER, + ipSecRuleIpSecSelectorSetId TagReferenceId, + ipSecRuleipSecIpsoFilterSetId TagReferenceId, + ipSecRuleIpSecActionSetId TagReferenceId, + ipSecRuleActionExecutionStrategy INTEGER, + ipSecRuleOrder Unsigned16, + ipSecRuleLimitNegotiation INTEGER, + ipSecRuleAutoStart TruthValue, + ipSecRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecRuleEntry 1 } + + ipSecRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IPsec rule applies. + The interface capability name specified by this attribute MUST + exist in the frwkIfCapSetTable [FR-PIB] prior to association with + an instance of this class." + ::= { ipSecRuleEntry 2 } + + ipSecRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this + IPsec rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecRuleIfName, prior to association with an instance of this + class." + ::= { ipSecRuleEntry 3 } + + ipSecRuleDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction of traffic to which this rule should + apply." + ::= { ipSecRuleEntry 4 } + + ipSecRuleIpSecSelectorSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecSelectorSetSelectorSetId } + STATUS current + DESCRIPTION + "Identifies a set of selectors to be associated with this IPsec + rule. " + ::= { ipSecRuleEntry 5 } + + ipSecRuleipSecIpsoFilterSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIpsoFilterSetFilterSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPSO filters to be associated with this IPsec + rule. A value of zero indicates that there are no IPSO filters + associated with this rule. + + When the value of this attribute is not zero, the set of IPSO + filters is ANDed with the set of Selectors specified by + ipSecRuleIpSecSelectorSetId. In other words, a packet MUST match a + selector in the selector sets and a filter in the IPSO filter sets + before the actions associated with this rule can be applied." + ::= { ipSecRuleEntry 6 } + + ipSecRuleIpSecActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec actions to be associated with this + rule." + ::= { ipSecRuleEntry 7 } + + ipSecRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in the + ipSecActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in the ipSecActionSetTable." + ::= { ipSecRuleEntry 8 } + + ipSecRuleOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the rule within all the rules + associated with {IfName, Roles}. A smaller value indicates a + higher precedence order. " + ::= { ipSecRuleEntry 9 } + + ipSecRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 2 + negotiation, the LimitNegotiation property of the IPsecRule is + first checked to determine if the negotiation part indicated for + the rule matches that of the current negotiation (Initiator, + Responder, or Either). + + This attribute is ignored when an attempt is made to refresh an + expiring SA (either side can initiate a refresh operation). The + system can determine that the negotiation is a refresh operation + by checking to see if the selector information matches that of an + existing SA. If LimitNegotiation does not match and the selector + corresponds to a new SA, the negotiation is stopped. " + ::= { ipSecRuleEntry 10 } + + ipSecRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecRuleEntry 11 } + + ipSecRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies an IPsec rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this IPsec rule is always valid." + ::= { ipSecRuleEntry 12 } + + + -- + -- + -- The ipSecActionSetTable + -- + + ipSecActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec action sets." + ::= { ipSecAssociation 2 } + + ipSecActionSetEntry OBJECT-TYPE + SYNTAX IpSecActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecActionSetPrid } + UNIQUENESS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + ::= { ipSecActionSetTable 1 } + + IpSecActionSetEntry ::= SEQUENCE { + ipSecActionSetPrid InstanceId, + ipSecActionSetActionSetId TagId, + ipSecActionSetActionId Prid, + ipSecActionSetDoActionLogging TruthValue, + ipSecActionSetDoPacketLogging TruthValue, + ipSecActionSetOrder Unsigned16 + } + + ipSecActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecActionSetEntry 1 } + + ipSecActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec action set is composed of one or more IPsec actions. + Each action belonging to the same set has the same ActionSetId." + ::= { ipSecActionSetEntry 2 } + + ipSecActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + action to be taken. + + For IPsec static actions, it MUST point to an instance in the + ipSecStaticActionTable. + + For IPsec negotiation actions, it MUST point to an instance in the + ipSecNegotiationActionTable. For other actions, it may point to an + instance in a table specified by other PIB modules." + ::= { ipSecActionSetEntry 3 } + + ipSecActionSetDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + action is performed. This applies for ipSecNegotiationActions + with the meaning of logging a message when the negotiation is + attempted (with the success or failure result). This also applies + for ipSecStaticAction only for PreconfiguredTransport action or + PreconfiguredTunnel action with the meaning of logging a message + when the preconfigured SA is actually installed in the SADB." + ::= { ipSecActionSetEntry 4 } + + ipSecActionSetDoPacketLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to log when the resulting security association + is used to process a packet. For ipSecStaticActions, a log message + is to be generated when the IPsecBypass, IpsecDiscard or IKEReject + actions are executed." + ::= { ipSecActionSetEntry 5 } + + ipSecActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be applied + before one with a larger precedence order. " + ::= { ipSecActionSetEntry 6 } + + + -- + -- + -- The ipSecStaticActionTable + -- + + ipSecStaticActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecStaticActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec static actions." + ::= { ipSecAssociation 3 } + + ipSecStaticActionEntry OBJECT-TYPE + SYNTAX IpSecStaticActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecStaticActionPrid } + UNIQUENESS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + ::= { ipSecStaticActionTable 1 } + + IpSecStaticActionEntry ::= SEQUENCE { + ipSecStaticActionPrid InstanceId, + ipSecStaticActionAction INTEGER, + ipSecStaticActionTunnelEndpointId ReferenceId, + ipSecStaticActionDfHandling INTEGER, + ipSecStaticActionSpi Unsigned32, + ipSecStaticActionLifetimeSeconds Unsigned32, + ipSecStaticActionLifetimeKilobytes Unsigned32, + ipSecStaticActionSaTransformId Prid + } + + ipSecStaticActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecStaticActionEntry 1 } + + ipSecStaticActionAction OBJECT-TYPE + SYNTAX INTEGER { + byPass(1), + discard(2), + ikeRejection(3), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. byPass + (1) means that packets are to be allowed to pass in the clear. + discard (2) means that packets are to be discarded. ikeRejection + (3) means that that an IKE negotiation should not even be + attempted or continued. preConfiguredTransport (4) means that an + IPsec transport SA is pre-configured. preConfiguredTunnel (5) + means that an IPsec tunnel SA is pre-configured. " + ::= { ipSecStaticActionEntry 2 } + + ipSecStaticActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel (5), this + attribute indicates the peer gateway IP address. This address MUST + be a single endpoint address. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be zero." + ::= { ipSecStaticActionEntry 3 } + + ipSecStaticActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel, this + attribute specifies how the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be ignored. " + ::= { ipSecStaticActionEntry 4 } + + ipSecStaticActionSpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SPI to be used with the SA Transform identified by + ipSecStaticActionSaTransformId. + + When ipSecStaticActionAction is neither + preConfiguredTransportAction nor preConfiguredTunnelAction, this + attribute MUST be ignored." + ::= { ipSecStaticActionEntry 5 } + + ipSecStaticActionLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the amount of time (in seconds) that a security + association derived from this action should be used. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeSeconds property and of the value of + the MaxLifetimeSeconds property of the associated SA Transform. + Except if the value of this LifetimeSeconds property is zero, then + there will be no lifetime associated to this SA." + ::= { ipSecStaticActionEntry 6 } + + ipSecStaticActionLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SA lifetime in kilobytes. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeKilobytes property and of the value + of the MaxLifetimeKilobytes property of the associated SA + transform. Except if the value of this LifetimeKilobytes property + is zero, then there will be no lifetime associated with this + action. + " + ::= { ipSecStaticActionEntry 7 } + + ipSecStaticActionSaTransformId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + SA transform, e.g, ipSecEspTransformTable, ipSecAhTransformTable." + ::= { ipSecStaticActionEntry 8 } + + + -- + -- + -- The ipSecNegotiationActionTable + -- + + ipSecNegotiationActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecNegotiationActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec negotiation actions." + ::= { ipSecAssociation 4 } + + ipSecNegotiationActionEntry OBJECT-TYPE + SYNTAX IpSecNegotiationActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecNegotiationActionPrid } + UNIQUENESS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + ::= { ipSecNegotiationActionTable 1 } + + IpSecNegotiationActionEntry ::= SEQUENCE { + ipSecNegotiationActionPrid InstanceId, + ipSecNegotiationActionAction INTEGER, + ipSecNegotiationActionTunnelEndpointId ReferenceId, + ipSecNegotiationActionDfHandling INTEGER, + ipSecNegotiationActionIpSecSecurityAssociationId ReferenceId, + ipSecNegotiationActionKeyExchangeId Prid + } + + ipSecNegotiationActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecNegotiationActionEntry 1 } + + ipSecNegotiationActionAction OBJECT-TYPE + SYNTAX INTEGER { + transport(1), + tunnel(2) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. + transport(1) means that the packet should be protected with a + security association in transport mode. tunnel(2) means that the + packet should be protected with a security association in tunnel + mode. If tunnel (2) is specified, ipSecActionTunnelEndpointId + MUST also be specified." + ::= { ipSecNegotiationActionEntry 2 } + + ipSecNegotiationActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel (2), this attribute indicates + the peer gateway IP address. This address MUST be a single + endpoint address. + + When ipSecActionAction is not tunnel, this attribute MUST be + zero." + ::= { ipSecNegotiationActionEntry 3 } + + ipSecNegotiationActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel, this attribute specifies how + the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecActionAction is not tunnel, this attribute MUST be + ignored. " + ::= { ipSecNegotiationActionEntry 4 } + + ipSecNegotiationActionIpSecSecurityAssociationId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAssociationEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the + ipSecSecurityAssociationTable." + ::= { ipSecNegotiationActionEntry 5 } + + ipSecNegotiationActionKeyExchangeId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes key + exchange associations. If a single IKE phase one negotiation is + used for the key exchange, this attribute MUST point to an + instance in the ipSecIkeAssociationTable. If multiple IKE phase + one negotiations (e.g., with different modes) are to be tried + until success, this attribute SHOULD point to ipSecIkeRuleTable. + + For other key exchange methods, this attribute may point to an + instance of a PRC defined in some other PIB. + + A value of zero means that there is no key exchange procedure + associated." + ::= { ipSecNegotiationActionEntry 6 } + + + -- + -- + -- The ipSecAssociationTable + -- + + ipSecAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec associations." + ::= { ipSecAssociation 5 } + + ipSecAssociationEntry OBJECT-TYPE + SYNTAX IpSecAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAssociationPrid } + UNIQUENESS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + ::= { ipSecAssociationTable 1 } + + IpSecAssociationEntry ::= SEQUENCE { + ipSecAssociationPrid InstanceId, + ipSecAssociationMinLifetimeSeconds Unsigned32, + ipSecAssociationMinLifetimeKilobytes Unsigned32, + ipSecAssociationIdleDurationSeconds Unsigned32, + ipSecAssociationUsePfs TruthValue, + ipSecAssociationVendorId OCTET STRING, + ipSecAssociationUseKeyExchangeGroup TruthValue, + ipSecAssociationDhGroup Unsigned16, + ipSecAssociationGranularity INTEGER, + ipSecAssociationProposalSetId TagReferenceId + } + + ipSecAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAssociationEntry 1 } + + ipSecAssociationMinLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecAssociationEntry 2 } + + ipSecAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. A value of zero indicates that there is no minimum + lifetime enforced." + ::= { ipSecAssociationEntry 3 } + + ipSecAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecAssociationEntry 4 } + + ipSecAssociationUsePfs OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use PFS when refreshing keys." + ::= { ipSecAssociationEntry 5 } + + ipSecAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the IKE Vendor ID. This attribute is used together with + the property ipSecAssociationDhGroup (when it is in the vendor- + specific range) to identify the key exchange group. This + attribute is ignored unless ipSecAssociationUsePFS is true and + ipSecAssociationUseKeyExchangeGroup is false and + ipSecAssociationDhGroup is in the vendor-specific range (32768- + 65535)." + ::= { ipSecAssociationEntry 6 } + + ipSecAssociationUseKeyExchangeGroup OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use the same GroupId for phase 2 as + was used in phase 1. If UsePFS is false, then this attribute is + ignored. + + A value of true indicates that the phase 2 GroupId should be the + same as phase 1. A value of false indicates that the group number + specified by the ipSecSecurityAssociationDhGroup attribute SHALL + be used for phase 2. " + ::= { ipSecAssociationEntry 7 } + + ipSecAssociationDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the key exchange group to use for phase 2 when the + property ipSecSecurityAssociationUsePfs is true and the property + ipSecSecurityAssociationUseKeyExchangeGroup is false." + ::= { ipSecAssociationEntry 8 } + + ipSecAssociationGranularity OBJECT-TYPE + SYNTAX INTEGER { + subnet(1), + address(2), + protocol(3), + port(4) + } + STATUS current + DESCRIPTION + "Specifies how the proposed selector for the security association + will be created. + + A value of 1 (subnet) indicates that the source and destination + subnet masks of the filter entry are used. + + A value of 2 (address) indicates that only the source and + destination IP addresses of the triggering packet are used. + + A value of 3 (protocol) indicates that the source and destination + IP addresses and the IP protocol of the triggering packet are + used. + + A value of 4 (port) indicates that the source and destination IP + addresses and the IP protocol and the source and destination layer + 4 ports of the triggering packet are used. " + ::= { ipSecAssociationEntry 9 } + + ipSecAssociationProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec proposals that is associated with this + IPsec association." + ::= { ipSecAssociationEntry 10 } + + + -- + -- + -- The ipSecProposalSetTable + -- + + ipSecProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposal sets. Proposals within a set are ORed + with preference order. " + ::= { ipSecAssociation 6 } + + ipSecProposalSetEntry OBJECT-TYPE + SYNTAX IpSecProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalSetPrid } + UNIQUENESS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + ::= { ipSecProposalSetTable 1 } + + IpSecProposalSetEntry ::= SEQUENCE { + ipSecProposalSetPrid InstanceId, + ipSecProposalSetProposalSetId TagId, + ipSecProposalSetProposalId ReferenceId, + ipSecProposalSetOrder Unsigned16 + } + + ipSecProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalSetEntry 1 } + + ipSecProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + + "An IPsec proposal set is composed of one or more IPsec proposals. + Each proposal belonging to the same set has the same + ProposalSetId." + ::= { ipSecProposalSetEntry 2 } + + ipSecProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecProposalTable." + ::= { ipSecProposalSetEntry 3 } + + ipSecProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecProposalSetEntry 4 } + + + -- + -- + -- The ipSecProposalTable + -- + + ipSecProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposals. It has references to ESP, AH and + IPCOMP Transform sets. Within a proposal, different types of + transforms are ANDed. Multiple transforms of the same type are + ORed with preference order." + ::= { ipSecAssociation 7 } + + ipSecProposalEntry OBJECT-TYPE + SYNTAX IpSecProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalPrid } + UNIQUENESS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + ::= { ipSecProposalTable 1 } + + IpSecProposalEntry ::= SEQUENCE { + ipSecProposalPrid InstanceId, + ipSecProposalEspTransformSetId TagReferenceId, + ipSecProposalAhTransformSetId TagReferenceId, + ipSecProposalCompTransformSetId TagReferenceId + } + + ipSecProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalEntry 1 } + + ipSecProposalEspTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecEspTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of ESP transforms, specified in + ipSecEspTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 2 } + + ipSecProposalAhTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAhTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies an AH transform set, specified in + ipSecAhTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 3 } + + ipSecProposalCompTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCompTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of IPComp transforms, specified + in ipSecCompTransformSetTable, that is associated with this + proposal." + ::= { ipSecProposalEntry 4 } + + + -- + -- + -- The ipSecAhTransformSetTable + -- + + ipSecAhTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transform sets. Within a transform set, the + transforms are ORed with preference order. " + ::= { ipSecAhTransform 1 } + + ipSecAhTransformSetEntry OBJECT-TYPE + SYNTAX IpSecAhTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformSetPrid } + UNIQUENESS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + ::= { ipSecAhTransformSetTable 1 } + + IpSecAhTransformSetEntry ::= SEQUENCE { + ipSecAhTransformSetPrid InstanceId, + ipSecAhTransformSetTransformSetId TagId, + ipSecAhTransformSetTransformId ReferenceId, + ipSecAhTransformSetOrder Unsigned16 + } + + ipSecAhTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformSetEntry 1 } + + ipSecAhTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An AH transform set is composed of one or more AH transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecAhTransformSetEntry 2 } + + ipSecAhTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAhTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecAhTransformTable." + ::= { ipSecAhTransformSetEntry 3 } + + ipSecAhTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecAhTransformSetTransformId within a transform + set. The transform set is identified by + ipSecAhTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecAhTransformSetEntry 4 } + + + -- + -- + -- The ipSecAhTransformTable + -- + + ipSecAhTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transforms." + ::= { ipSecAhTransform 2 } + + ipSecAhTransformEntry OBJECT-TYPE + SYNTAX IpSecAhTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformPrid } + UNIQUENESS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + ::= { ipSecAhTransformTable 1 } + + IpSecAhTransformEntry ::= SEQUENCE { + ipSecAhTransformPrid InstanceId, + ipSecAhTransformTransformId INTEGER, + ipSecAhTransformIntegrityKey OCTET STRING, + ipSecAhTransformUseReplayPrevention TruthValue, + ipSecAhTransformReplayPreventionWindowSize Unsigned32, + ipSecAhTransformVendorId OCTET STRING, + ipSecAhTransformMaxLifetimeSeconds Unsigned32, + ipSecAhTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecAhTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformEntry 1 } + + ipSecAhTransformTransformId OBJECT-TYPE + SYNTAX INTEGER { + md5(2), + sha-1(3), + des(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the AH algorithm to propose." + ::= { ipSecAhTransformEntry 2 } + + ipSecAhTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this AH transform instance is used for a Static Action, this + attribute specifies the integrity key to be used. This attribute + MUST be ignored when this AH transform instance is used for a + Negotiation Action." + ::= { ipSecAhTransformEntry 3 } + + ipSecAhTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecAhTransformEntry 4 } + + ipSecAhTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecAhTransformEntry 5 } + + ipSecAhTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecAhTransformEntry 6 } + + ipSecAhTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecAhTransformEntry 7 } + + ipSecAhTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecAhTransformEntry 8 } + + + -- + -- + -- The ipSecEspTransformSetTable + -- + + ipSecEspTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transform sets. Within a transform set, the choices + are ORed with preference order. " + ::= { ipSecEspTransform 1 } + + ipSecEspTransformSetEntry OBJECT-TYPE + SYNTAX IpSecEspTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformSetPrid } + UNIQUENESS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + ::= { ipSecEspTransformSetTable 1 } + + IpSecEspTransformSetEntry ::= SEQUENCE { + ipSecEspTransformSetPrid InstanceId, + ipSecEspTransformSetTransformSetId TagId, + ipSecEspTransformSetTransformId ReferenceId, + ipSecEspTransformSetOrder Unsigned16 + } + + ipSecEspTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformSetEntry 1 } + + ipSecEspTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An ESP transform set is composed of one or more ESP transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecEspTransformSetEntry 2 } + + ipSecEspTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecEspTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecEspTransformTable." + ::= { ipSecEspTransformSetEntry 3 } + + ipSecEspTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecEspTransformSetTransformId within a transform + set. The transform set is identified by + ipSecEspTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecEspTransformSetEntry 4 } + + + -- + -- + -- The ipSecEspTransformTable + -- + + ipSecEspTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transforms." + ::= { ipSecEspTransform 2 } + + ipSecEspTransformEntry OBJECT-TYPE + SYNTAX IpSecEspTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformPrid } + UNIQUENESS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + ::= { ipSecEspTransformTable 1 } + + IpSecEspTransformEntry ::= SEQUENCE { + ipSecEspTransformPrid InstanceId, + ipSecEspTransformIntegrityTransformId INTEGER, + ipSecEspTransformCipherTransformId INTEGER, + ipSecEspTransformIntegrityKey OCTET STRING, + ipSecEspTransformCipherKey OCTET STRING, + ipSecEspTransformCipherKeyRounds Unsigned16, + ipSecEspTransformCipherKeyLength Unsigned16, + ipSecEspTransformUseReplayPrevention TruthValue, + ipSecEspTransformReplayPreventionWindowSize Unsigned32, + ipSecEspTransformVendorId OCTET STRING, + ipSecEspTransformMaxLifetimeSeconds Unsigned32, + ipSecEspTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecEspTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformEntry 1 } + + ipSecEspTransformIntegrityTransformId OBJECT-TYPE + SYNTAX INTEGER { + none(0), + hmacMd5(1), + hmacSha(2), + desMac(3), + kpdk(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP integrity algorithm to + propose." + ::= { ipSecEspTransformEntry 2 } + + ipSecEspTransformCipherTransformId OBJECT-TYPE + SYNTAX INTEGER { + desIV64(1), + des(2), + tripleDES(3), + rc5(4), + idea(5), + cast(6), + blowfish(7), + tripleIDEA(8), + desIV32(9), + rc4(10), + null(11) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP encryption algorithm to + propose." + ::= { ipSecEspTransformEntry 3 } + + ipSecEspTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the integrity key to be used. This + attribute MUST be ignored when this ESP transform instance is used + for a Negotiation Action." + ::= { ipSecEspTransformEntry 4 } + + ipSecEspTransformCipherKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the cipher key to be used. This attribute + MUST be ignored when this ESP transform instance is used for a + Negotiation Action." + ::= { ipSecEspTransformEntry 5 } + + ipSecEspTransformCipherKeyRounds OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + + "Specifies the number of key rounds for the ESP encryption + algorithm. For encryption algorithms that use fixed number of key + rounds, this value is ignored." + ::= { ipSecEspTransformEntry 6 } + + ipSecEspTransformCipherKeyLength OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies, in bits, the key length for the ESP encryption + algorithm. For encryption algorithms that use fixed-length keys, + this value is ignored." + ::= { ipSecEspTransformEntry 7 } + + ipSecEspTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecEspTransformEntry 8 } + + ipSecEspTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecEspTransformEntry 9 } + + ipSecEspTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecEspTransformEntry 10 } + + ipSecEspTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecEspTransformEntry 11 } + + ipSecEspTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecEspTransformEntry 12 } + + + -- + -- + -- The ipSecCompTransformSetTable + -- + + ipSecCompTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPComp transform sets. Within a transform set, the + choices are ORed with preference order." + ::= { ipSecCompTransform 1 } + + ipSecCompTransformSetEntry OBJECT-TYPE + SYNTAX IpSecCompTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformSetPrid } + UNIQUENESS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + ::= { ipSecCompTransformSetTable 1 } + + IpSecCompTransformSetEntry ::= SEQUENCE { + ipSecCompTransformSetPrid InstanceId, + ipSecCompTransformSetTransformSetId TagId, + ipSecCompTransformSetTransformId ReferenceId, + ipSecCompTransformSetOrder Unsigned16 + } + + ipSecCompTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformSetEntry 1 } + + ipSecCompTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPCOMP transform set is composed of one or more IPCOMP + transforms. Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecCompTransformSetEntry 2 } + + ipSecCompTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCompTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCompTransformTable." + ::= { ipSecCompTransformSetEntry 3 } + + ipSecCompTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecCompTransformSetTransformId within a transform + set. The transform set is identified by + ipSecCompTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecCompTransformSetEntry 4 } + + + -- + -- + -- The ipSecCompTransformTable + -- + + ipSecCompTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP compression (IPCOMP) algorithms." + ::= { ipSecCompTransform 2 } + + ipSecCompTransformEntry OBJECT-TYPE + SYNTAX IpSecCompTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformPrid } + UNIQUENESS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + ::= { ipSecCompTransformTable 1 } + + IpSecCompTransformEntry ::= SEQUENCE { + ipSecCompTransformPrid InstanceId, + ipSecCompTransformAlgorithm INTEGER, + ipSecCompTransformDictionarySize Unsigned16, + ipSecCompTransformPrivateAlgorithm Unsigned32, + ipSecCompTransformVendorId OCTET STRING, + ipSecCompTransformMaxLifetimeSeconds Unsigned32, + ipSecCompTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecCompTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformEntry 1 } + + ipSecCompTransformAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + oui(1), + deflate(2), + lzs(3) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the IPCOMP compression algorithm to + propose." + ::= { ipSecCompTransformEntry 2 } + + ipSecCompTransformDictionarySize OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the log2 maximum size of the dictionary for the + compression algorithm. For compression algorithms that have pre- + defined dictionary sizes, this value is ignored." + ::= { ipSecCompTransformEntry 3 } + + ipSecCompTransformPrivateAlgorithm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies a private vendor-specific compression algorithm." + ::= { ipSecCompTransformEntry 4 } + + ipSecCompTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecCompTransformEntry 5 } + + ipSecCompTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecCompTransformEntry 6 } + + ipSecCompTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecCompTransformEntry 7 } + + + -- + -- + -- The ipSecIkeRuleTable + -- + + ipSecIkeRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE rules. This table is required only when specifying: + + - Multiple IKE phase one actions (e.g., with different exchange + modes) that are associated with one IPsec association. These + actions are to be tried in sequence till one success. + + - IKE phase one actions that start automatically. + + Support of this table is optional." + ::= { ipSecIkeAssociation 1 } + + ipSecIkeRuleEntry OBJECT-TYPE + SYNTAX IpSecIkeRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeRulePrid } + UNIQUENESS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart + } + ::= { ipSecIkeRuleTable 1 } + + IpSecIkeRuleEntry ::= SEQUENCE { + ipSecIkeRulePrid InstanceId, + ipSecIkeRuleIfName SnmpAdminString, + ipSecIkeRuleRoles RoleCombination, + ipSecIkeRuleIkeActionSetId TagReferenceId, + ipSecIkeRuleActionExecutionStrategy INTEGER, + ipSecIkeRuleLimitNegotiation INTEGER, + ipSecIkeRuleAutoStart TruthValue, + ipSecIkeRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecIkeRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeRuleEntry 1 } + + ipSecIkeRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IKE rule applies. The + interface capability name specified by this attribute must exist + in the frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 2 } + + ipSecIkeRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this IKE + rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecIkeRuleIfName, prior to association with an instance of + this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 3 } + + ipSecIkeRuleIkeActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE actions to be associated with this rule." + ::= { ipSecIkeRuleEntry 4 } + + ipSecIkeRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in + ipSecIkeActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in ipSecIkeActionSetTable." + ::= { ipSecIkeRuleEntry 5 } + + ipSecIkeRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 1 + negotiation, this property is checked to determine if the + negotiation role of the rule matches that defined for the + negotiation being undertaken (e.g., Initiator, Responder, or + Both). If this check fails (e.g. the current role is IKE responder + while the rule specifies IKE initiator), then the IKE negotiation + is stopped. Note that this only applies to new IKE phase 1 + negotiations and has no effect on either renegotiation or refresh + operations with peers for which an established SA already exists." + ::= { ipSecIkeRuleEntry 6 } + + ipSecIkeRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecIkeRuleEntry 7 } + + ipSecIkeRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies a rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this rule is always valid." + ::= { ipSecIkeRuleEntry 8 } + + + -- + -- + -- The ipSecIkeActionSetTable + -- + + ipSecIkeActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE action sets." + ::= { ipSecIkeAssociation 2 } + + ipSecIkeActionSetEntry OBJECT-TYPE + SYNTAX IpSecIkeActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeActionSetPrid } + UNIQUENESS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + ::= { ipSecIkeActionSetTable 1 } + + IpSecIkeActionSetEntry ::= SEQUENCE { + ipSecIkeActionSetPrid InstanceId, + ipSecIkeActionSetActionSetId TagId, + ipSecIkeActionSetActionId Prid, + ipSecIkeActionSetOrder Unsigned16 + } + + ipSecIkeActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeActionSetEntry 1 } + + ipSecIkeActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE action set is composed of one or more IKE actions. Each + action belonging to the same set has the same ActionSetId." + ::= { ipSecIkeActionSetEntry 2 } + + ipSecIkeActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeAssociationTable." + ::= { ipSecIkeActionSetEntry 3 } + + ipSecIkeActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be tried + before one with a larger precedence order. " + ::= { ipSecIkeActionSetEntry 4 } + + + -- + -- + -- The ipSecIkeAssociationTable + -- + + ipSecIkeAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE associations." + ::= { ipSecIkeAssociation 3 } + + ipSecIkeAssociationEntry OBJECT-TYPE + SYNTAX IpSecIkeAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeAssociationPrid } + UNIQUENESS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + ::= { ipSecIkeAssociationTable 1 } + + IpSecIkeAssociationEntry ::= SEQUENCE { + ipSecIkeAssociationPrid InstanceId, + ipSecIkeAssociationMinLiftetimeSeconds Unsigned32, + ipSecIkeAssociationMinLifetimeKilobytes Unsigned32, + ipSecIkeAssociationIdleDurationSeconds Unsigned32, + ipSecIkeAssociationExchangeMode INTEGER, + ipSecIkeAssociationUseIkeIdentityType INTEGER, + ipSecIkeAssociationUseIkeIdentityValue OCTET STRING, + ipSecIkeAssociationIkePeerEndpoint ReferenceId, + ipSecIkeAssociationPresharedKey OCTET STRING, + ipSecIkeAssociationVendorId OCTET STRING, + ipSecIkeAssociationAggressiveModeGroupId Unsigned16, + ipSecIkeAssociationLocalCredentialId TagReferenceId, + ipSecIkeAssociationDoActionLogging TruthValue, + ipSecIkeAssociationIkeProposalSetId TagReferenceId + } + + ipSecIkeAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeAssociationEntry 1 } + + ipSecIkeAssociationMinLiftetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 2 } + + ipSecIkeAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 3 } + + ipSecIkeAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecIkeAssociationEntry 4 } + + ipSecIkeAssociationExchangeMode OBJECT-TYPE + SYNTAX INTEGER { + baseMode(1), + mainMode(2), + aggressiveMode(4) + } + STATUS current + DESCRIPTION + "Specifies the negotiation mode that the IKE server will use for + phase one." + ::= { ipSecIkeAssociationEntry 5 } + + ipSecIkeAssociationUseIkeIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of IKE identity to use during IKE phase one + negotiation." + ::= { ipSecIkeAssociationEntry 6 } + + ipSecIkeAssociationUseIkeIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the ID payload value to be provided to the peer during + IKE phase one negotiation." + ::= { ipSecIkeAssociationEntry 7 } + + ipSecIkeAssociationIkePeerEndpoint OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkePeerEndpointEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the ipSecIkePeerEndpointTable to + indicate an IKE peer endpoint." + ::= { ipSecIkeAssociationEntry 8 } + + ipSecIkeAssociationPresharedKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This attribute specifies the preshared key or secret to use for + IKE authentication. This is the key for all the IKE proposals of + this association that set ipSecIkeProposalAuthenticationMethod to + presharedKey(1)." + ::= { ipSecIkeAssociationEntry 9 } + + ipSecIkeAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be used in the Vendor ID payload. + + A value of NULL means that Vendor ID payload will be neither + generated nor accepted. A non-NULL value means that a Vendor ID + payload will be generated (when acting as an initiator) or is + expected (when acting as a responder). " + ::= { ipSecIkeAssociationEntry 10 } + + ipSecIkeAssociationAggressiveModeGroupId OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the group ID to be used for aggressive mode. This + attribute is ignored unless the attribute + ipSecIkeAssociationExchangeMode is set to 4 (aggressive mode). If + the value of this attribute is from the vendor-specific range + (32768-65535), this attribute qualifies the group number." + ::= { ipSecIkeAssociationEntry 11 } + + ipSecIkeAssociationLocalCredentialId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Indicates a group of credentials. One of the credentials in the + group MUST be used when establishing an IKE association with the + peer endpoint." + ::= { ipSecIkeAssociationEntry 12 } + + ipSecIkeAssociationDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + negotiation is attempted (with the success or failure result)." + ::= { ipSecIkeAssociationEntry 13 } + + ipSecIkeAssociationIkeProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE proposals that is associated with this + IKE association." + ::= { ipSecIkeAssociationEntry 14 } + + + -- + -- + -- The ipSecIkeProposalSetTable + -- + + ipSecIkeProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposal sets. Proposals within a set are ORed with + preference order. " + ::= { ipSecIkeAssociation 4 } + + ipSecIkeProposalSetEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalSetPrid } + UNIQUENESS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + ::= { ipSecIkeProposalSetTable 1 } + + IpSecIkeProposalSetEntry ::= SEQUENCE { + ipSecIkeProposalSetPrid InstanceId, + ipSecIkeProposalSetProposalSetId TagId, + ipSecIkeProposalSetProposalId ReferenceId, + ipSecIkeProposalSetOrder Unsigned16 + } + + ipSecIkeProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalSetEntry 1 } + + ipSecIkeProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE proposal set is composed of one or more IKE proposals. + Each proposal belonging to the same set has the same + ProposalSetId. " + ::= { ipSecIkeProposalSetEntry 2 } + + ipSecIkeProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkeProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeProposalTable." + ::= { ipSecIkeProposalSetEntry 3 } + + ipSecIkeProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecIkeProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecIkeProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecIkeProposalSetEntry 4 } + + + -- + -- + -- The ipSecIkeProposalTable + -- + + ipSecIkeProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposals." + ::= { ipSecIkeAssociation 5 } + + ipSecIkeProposalEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalPrid } + UNIQUENESS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + ::= { ipSecIkeProposalTable 1 } + + IpSecIkeProposalEntry ::= SEQUENCE { + ipSecIkeProposalPrid InstanceId, + ipSecIkeProposalMaxLifetimeSeconds Unsigned32, + ipSecIkeProposalMaxLifetimeKilobytes Unsigned32, + ipSecIkeProposalCipherAlgorithm INTEGER, + ipSecIkeProposalHashAlgorithm INTEGER, + ipSecIkeProposalAuthenticationMethod INTEGER, + ipSecIkeProposalPrfAlgorithm Unsigned16, + ipSecIkeProposalIkeDhGroup Unsigned16, + ipSecIkeProposalVendorId OCTET STRING + } + + ipSecIkeProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalEntry 1 } + + ipSecIkeProposalMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecIkeProposalEntry 2 } + + ipSecIkeProposalMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecIkeProposalEntry 3 } + + ipSecIkeProposalCipherAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + des-CBC(1), + idea-CBC(2), + blowfish-CBC(3), + rc5-R16-B64-CBC(4), + tripleDes-CBC(5), + cast-CBC(6) + } + STATUS current + DESCRIPTION + "Specifies the encryption algorithm to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 4 } + + ipSecIkeProposalHashAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + md5(1), + sha-1(2), + tiger(3) + } + STATUS current + DESCRIPTION + "Specifies the hash algorithm to propose for the IKE association." + ::= { ipSecIkeProposalEntry 5 } + + ipSecIkeProposalAuthenticationMethod OBJECT-TYPE + SYNTAX INTEGER { + presharedKey(1), + dssSignatures(2), + rsaSignatures(3), + rsaEncryption(4), + revisedRsaEncryption(5), + kerberos(6) + } + STATUS current + DESCRIPTION + "Specifies the authentication method to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 6 } + + ipSecIkeProposalPrfAlgorithm OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Psuedo-Random Function (PRF) to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 7 } + + ipSecIkeProposalIkeDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Diffie-Hellman group to propose for the IKE + association. The value of this property is to be ignored when + doing aggressive mode." + ::= { ipSecIkeProposalEntry 8 } + + ipSecIkeProposalVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Further qualifies the key exchange group. The property is + ignored unless the exchange is not in aggressive mode and the + property GroupID is in the vendor-specific range." + ::= { ipSecIkeProposalEntry 9 } + + + -- + -- + -- The ipSecIkePeerEndpointTable + -- + + ipSecIkePeerEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkePeerEndpointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE peer endpoints." + ::= { ipSecIkeAssociation 6 } + + ipSecIkePeerEndpointEntry OBJECT-TYPE + SYNTAX IpSecIkePeerEndpointEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkePeerEndpointPrid } + UNIQUENESS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + ::= { ipSecIkePeerEndpointTable 1 } + + IpSecIkePeerEndpointEntry ::= SEQUENCE { + ipSecIkePeerEndpointPrid InstanceId, + ipSecIkePeerEndpointIdentityType INTEGER, + ipSecIkePeerEndpointIdentityValue OCTET STRING, + ipSecIkePeerEndpointAddressType INTEGER, + ipSecIkePeerEndpointAddress OCTET STRING, + ipSecIkePeerEndpointCredentialSetId TagReferenceId + } + + ipSecIkePeerEndpointPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkePeerEndpointEntry 1 } + + ipSecIkePeerEndpointIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of identity that MUST be provided by the peer + in the ID payload during IKE phase one negotiation." + ::= { ipSecIkePeerEndpointEntry 2 } + + ipSecIkePeerEndpointIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be matched with the ID payload provided by + the peer during IKE phase one negotiation. + + Different Wildcards wildcard mechanisms can be used as well as the + prefix notation for IPv4 addresses depending on the ID payload: + + - an IdentityValue of "*@company.com" will match an user FQDN ID + payload of "JDOE@COMPANY.COM" + + - an IdentityValue of "*.company.com" will match a FQDN ID payload + of "WWW.COMPANY.COM" + + - an IdentityValue of "cn=*,ou=engineering,o=company,c=us" will + match a DER DN ID payload of "cn=John Doe, ou=engineering, + o=company, c=us" + + - an IdentityValue of "193.190.125.0/24" will match an IPv4 + address ID payload of 193.190.125.10. + + - an IdentityValue of "193.190.125.*" will also match an IPv4 + address ID payload of 193.190.125.10. + + The above wildcard mechanisms MUST be supported for all ID + payloads supported by the local IKE entity. The character "*" + replaces 0 or multiple instances of any character." + ::= { ipSecIkePeerEndpointEntry 3 } + + ipSecIkePeerEndpointAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4(1), + ipV6(2) + } + STATUS current + DESCRIPTION + "Specifies IKE peer endpoint address type. This attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 4 } + + ipSecIkePeerEndpointAddress OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an endpoint address with which this PEP establishes IKE + association. This attribute is used only when the IKE association + is to be started automatically. Hence, this attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 5 } + + ipSecIkePeerEndpointCredentialSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Identifies a set of credentials. Any one of the credentials in + the set is acceptable as the IKE peer credential." + ::= { ipSecIkePeerEndpointEntry 6 } + + + -- + -- + -- The ipSecCredentialSetTable + -- + + ipSecCredentialSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credential sets. + + For IKE peer credentials, any one of the credentials in the set is + acceptable as peer credential during IEK phase 1 negotiation. For + IKE local credentials, any one of the credentials in the set can + be used in IKE phase 1 negotiation." + ::= { ipSecCredential 1 } + + ipSecCredentialSetEntry OBJECT-TYPE + SYNTAX IpSecCredentialSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialSetPrid } + UNIQUENESS { + ipSecCredentialSetPrid, + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + ::= { ipSecCredentialSetTable 1 } + + IpSecCredentialSetEntry ::= SEQUENCE { + ipSecCredentialSetPrid InstanceId, + ipSecCredentialSetSetId TagId, + ipSecCredentialSetCredentialId ReferenceId + } + + ipSecCredentialSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialSetEntry 1 } + + ipSecCredentialSetSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A credential set is composed of one or more credentials. Each + credential belonging to the same set has the same + CredentialSetId." + ::= { ipSecCredentialSetEntry 2 } + + ipSecCredentialSetCredentialId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCredentialEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCredentialTable." + ::= { ipSecCredentialSetEntry 3 } + + + -- + -- + -- The ipSecCredentialTable + -- + + ipSecCredentialTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credentials." + ::= { ipSecCredential 2 } + + ipSecCredentialEntry OBJECT-TYPE + SYNTAX IpSecCredentialEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialPrid } + UNIQUENESS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + ::= { ipSecCredentialTable 1 } + + IpSecCredentialEntry ::= SEQUENCE { + ipSecCredentialPrid InstanceId, + ipSecCredentialCredentialType INTEGER, + ipSecCredentialFieldsId TagReferenceId, + ipSecCredentialCrlDistributionPoint OCTET STRING + } + + ipSecCredentialPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialEntry 1 } + + ipSecCredentialCredentialType OBJECT-TYPE + SYNTAX INTEGER { + certificateX509(1), + kerberos-ticket(2) + } + STATUS current + DESCRIPTION + "Specifies the type of credential to be matched." + ::= { ipSecCredentialEntry 2 } + + ipSecCredentialFieldsId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialFieldsSetId } + STATUS current + DESCRIPTION + "Identifies a group of matching criteria to be used for the peer + credential. The identified criteria MUST all be satisfied." + ::= { ipSecCredentialEntry 3 } + + ipSecCredentialCrlDistributionPoint OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When credential type is certificate X509, this attribute + identifies the Certificate Revocation List (CRL) distribution + point for this credential." + ::= { ipSecCredentialEntry 4 } + + + -- + -- + -- The ipSecCredentialFieldsTable + -- + + ipSecCredentialFieldsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialFieldsEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies sets of credential sub-fields and their values to be + matched against. " + ::= { ipSecCredential 3 } + + ipSecCredentialFieldsEntry OBJECT-TYPE + SYNTAX IpSecCredentialFieldsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialFieldsPrid } + UNIQUENESS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + ::= { ipSecCredentialFieldsTable 1 } + + IpSecCredentialFieldsEntry ::= SEQUENCE { + ipSecCredentialFieldsPrid InstanceId, + ipSecCredentialFieldsName OCTET STRING, + ipSecCredentialFieldsValue OCTET STRING, + ipSecCredentialFieldsSetId TagId + } + + ipSecCredentialFieldsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialFieldsEntry 1 } + + ipSecCredentialFieldsName OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the sub-field of the credential to match with. This is + the string representation of a X.509 certificate attribute, e.g.: + "serialNumber", "issuerName", "subjectName", etc.. + " + ::= { ipSecCredentialFieldsEntry 2 } + + ipSecCredentialFieldsValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to match with for the sub-field identified by + ipSecCredentialFieldsName. A wildcard mechanism can be used in the + Value string. E.g., if the Name is "subjectName" then a Value of + "cn=*,ou=engineering,o=foo,c=be" will match successfully a + certificate whose subject attribute is "cn=Jane Doe, + ou=engineering, o=foo, c=be". The wildcard character '*' can be + used to represent 0 or several characters." + ::= { ipSecCredentialFieldsEntry 3 } + + ipSecCredentialFieldsSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the set this criteria belongs to. All criteria within a + set MUST all be satisfied." + ::= { ipSecCredentialFieldsEntry 4 } + + + -- + -- + -- The ipSecSelectorSetTable + -- + + ipSecSelectorSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selector sets." + ::= { ipSecSelector 1 } + + ipSecSelectorSetEntry OBJECT-TYPE + SYNTAX IpSecSelectorSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorSetPrid } + UNIQUENESS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + ::= { ipSecSelectorSetTable 1 } + + IpSecSelectorSetEntry ::= SEQUENCE { + ipSecSelectorSetPrid InstanceId, + ipSecSelectorSetSelectorSetId TagId, + ipSecSelectorSetSelectorId Prid, + ipSecSelectorSetOrder Unsigned16 + } + + ipSecSelectorSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorSetEntry 1 } + + ipSecSelectorSetSelectorSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec selector set is composed of one or more IPsec selectors. + Each selector belonging to the same set has the same + SelectorSetId." + ::= { ipSecSelectorSetEntry 2 } + + ipSecSelectorSetSelectorId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes + selectors. To use selectors defined in this IPsec PIB module, this + attribute MUST point to an instance in ipSecSelectorTable. This + attribute may also point to an instance in a selector or filter + table defined in other PIB modules." + ::= { ipSecSelectorSetEntry 3 } + + ipSecSelectorSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the selectors + identified by ipSecSelectorId within a selector set. The selector + set is identified by ipSecSelectorSetId. A smaller integer value + indicates a higher preference. All selectors constructed from the + instance pointed by ipSecSelectorId have the same order." + ::= { ipSecSelectorSetEntry 4 } + + + -- + -- + -- The ipSecSelectorTable + -- + + ipSecSelectorTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selectors. Each row in the selector table + represents multiple selectors. These selectors are obtained as + follows: + + 1. Substitute the ipSecSelectorSrcAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorSrcAddressGroupId. + + 2. Substitute the ipSecSelectorDstAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorDstAddressGroupId. + + 3. Substitute the ipSecSelectorSrcPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorSrcPortGroupId. + + 4. Substitute the ipSecSelectorDstPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorDstPortGroupId. + + 5. Construct all the possible combinations of the above four + fields. Then add to the combinations the ipSecSelectorProtocol, + ipSecSelectorDscp and ipSecSelectorFlowLabel attributes to form + all the selectors.el attributes to form the list of selectors. + + The relative order of the selectors constructed from a single row + is unspecified. " + ::= { ipSecSelector 2 } + + ipSecSelectorEntry OBJECT-TYPE + SYNTAX IpSecSelectorEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorPrid } + UNIQUENESS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + ::= { ipSecSelectorTable 1 } + + IpSecSelectorEntry ::= SEQUENCE { + ipSecSelectorPrid InstanceId, + ipSecSelectorSrcAddressGroupId TagReferenceId, + ipSecSelectorSrcPortGroupId TagReferenceId, + ipSecSelectorDstAddressGroupId TagReferenceId, + ipSecSelectorDstPortGroupId TagReferenceId, + ipSecSelectorProtocol INTEGER, + ipSecSelectorDscp INTEGER, + ipSecSelectorFlowLabel OCTET STRING + } + + ipSecSelectorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorEntry 1 } + + ipSecSelectorSrcAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates source addresses. All addresses in ipSecAddressTable + whose ipSecAddressGroupId matches this value are included as + source addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 2 } + + ipSecSelectorSrcPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates source layer 4 port numbers. All ports in ipSecL4Port + whose ipSecL4PortGroupId matches this value are included. + + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 3 } + + ipSecSelectorDstAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates destination addresses. All addresses in + ipSecAddressTable whose ipSecAddressGroupId matches this value are + included as destination addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 4 } + + ipSecSelectorDstPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates destination layer 4 port numbers. All ports in + ipSecL4Port whose ipSecL4PortGroupId matches this value are + included. + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 5 } + + ipSecSelectorProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "Specifies IP protocol to match against a packet's protocol. A + value of zero indicates wildcard protocol, i.e., any protocol + matches." + ::= { ipSecSelectorEntry 6 } + + ipSecSelectorDscp OBJECT-TYPE + SYNTAX INTEGER (-1..63) + STATUS current + DESCRIPTION + "Specifies the DSCP value to match against the DSCP in a packet + header. A value of -1 indicates match all." + ::= { ipSecSelectorEntry 7 } + + ipSecSelectorFlowLabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + + + "Specifies the Flow Label to match against the Flow Label field in + the IPv6 header of a packet. This attribute MUST be a zero length + OCTET STRING when specifying selectors for IPv4 packets." + ::= { ipSecSelectorEntry 8 } + + + -- + -- + -- The ipSecAddressTable + -- + + ipSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAddressEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP addresses. To specify a single IP address, + ipSecAddressAddrMin MUST be specified. To specify a range of + addresses, both ipSecAddressAddrMin and ipSecAddressAddrMax MUST + be specified. To specify a subnet, both ipSecAddressAddrMin and + ipSecAddressAddrMask MUST be specified. " + ::= { ipSecSelector 3 } + + ipSecAddressEntry OBJECT-TYPE + SYNTAX IpSecAddressEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAddressPrid } + UNIQUENESS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + ::= { ipSecAddressTable 1 } + + IpSecAddressEntry ::= SEQUENCE { + ipSecAddressPrid InstanceId, + ipSecAddressAddressType INTEGER, + ipSecAddressAddrMask OCTET STRING, + ipSecAddressAddrMin OCTET STRING, + ipSecAddressAddrMax OCTET STRING, + ipSecAddressGroupId TagId + } + + ipSecAddressPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAddressEntry 1 } + + ipSecAddressAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the address type. " + ::= { ipSecAddressEntry 2 } + + ipSecAddressAddrMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A mask for the matching of the IP address. A zero bit in the mask + means that the corresponding bit in the address always matches. + + This attribute MUST be ignored when ipSecAddressAddressType is not + of IPv4 or IPv6 type." + ::= { ipSecAddressEntry 3 } + + ipSecAddressAddrMin OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an IP address. " + ::= { ipSecAddressEntry 4 } + + ipSecAddressAddrMax OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "If a range of addresses is used then this specifies the ending + address. The type of this address must be the same as the + ipSecAddressAddrMin. + + If no range is specified then this attribute MUST be a zero length + OCTET STRING." + ::= { ipSecAddressEntry 5 } + + ipSecAddressGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this IP address, address range or subnet + address belongs to." + ::= { ipSecAddressEntry 6 } + + + -- + -- + -- The ipSecL4PortTable + -- + + ipSecL4PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecL4PortEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies layer four port numbers." + ::= { ipSecSelector 4 } + + ipSecL4PortEntry OBJECT-TYPE + SYNTAX IpSecL4PortEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecL4PortPrid } + UNIQUENESS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + ::= { ipSecL4PortTable 1 } + + IpSecL4PortEntry ::= SEQUENCE { + ipSecL4PortPrid InstanceId, + ipSecL4PortPortMin Unsigned16, + ipSecL4PortPortMax Unsigned16, + ipSecL4PortGroupId TagId + } + + ipSecL4PortPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecL4PortEntry 1 } + + ipSecL4PortPortMin OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + "Specifies a layer 4 port or the first layer 4 port number of a + range of ports. The value of this attribute must be equal or less + than that of ipSecL4PortPortMax. + + A value of zero indicates any port matches." + ::= { ipSecL4PortEntry 2 } + + ipSecL4PortPortMax OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the last layer 4 port in the range. If only a single + port is specified, the value of this attribute must be equal to + that of ipSecL4PortPortMin. Otherwise, the value of this attribute + MUST be greater than that specified by ipSecL4PortPortMin. + + If ipSecL4PortPortMin is zero, this attribute MUST be ignored." + ::= { ipSecL4PortEntry 3 } + + ipSecL4PortGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this port or port range belongs to." + ::= { ipSecL4PortEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterSetTable + -- + + ipSecIpsoFilterSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filter sets." + ::= { ipSecSelector 5 } + + ipSecIpsoFilterSetEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterSetPrid } + UNIQUENESS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + ::= { ipSecIpsoFilterSetTable 1 } + + IpSecIpsoFilterSetEntry ::= SEQUENCE { + ipSecIpsoFilterSetPrid InstanceId, + ipSecIpsoFilterSetFilterSetId TagId, + ipSecIpsoFilterSetFilterId ReferenceId, + ipSecIpsoFilterSetOrder Unsigned16 + } + + ipSecIpsoFilterSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterSetEntry 1 } + + ipSecIpsoFilterSetFilterSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPSO filter set is composed of one or more IPSO filters. Each + filter belonging to the same set has the same FilterSetId." + ::= { ipSecIpsoFilterSetEntry 2 } + + ipSecIpsoFilterSetFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIpsoFilterEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIpsoFilterTable." + ::= { ipSecIpsoFilterSetEntry 3 } + + ipSecIpsoFilterSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the filter + identified by ipSecIpsoFilterSetFilterId within a filter set. The + filter set is identified by ipSecIpsoFilterSetFilterSetId. A + smaller integer value indicates a higher preference." + ::= { ipSecIpsoFilterSetEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterTable + -- + + ipSecIpsoFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filters." + ::= { ipSecSelector 6 } + + ipSecIpsoFilterEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterPrid } + UNIQUENESS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + ::= { ipSecIpsoFilterTable 1 } + + IpSecIpsoFilterEntry ::= SEQUENCE { + ipSecIpsoFilterPrid InstanceId, + ipSecIpsoFilterMatchConditionType INTEGER, + ipSecIpsoFilterClassificationLevel INTEGER, + ipSecIpsoFilterProtectionAuthority INTEGER + } + + ipSecIpsoFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterEntry 1 } + + ipSecIpsoFilterMatchConditionType OBJECT-TYPE + SYNTAX INTEGER { + classificationLevel(1), + protectionAuthority(2) + } + STATUS current + DESCRIPTION + "Specifies the IPSO header field to be matched." + ::= { ipSecIpsoFilterEntry 2 } + + ipSecIpsoFilterClassificationLevel OBJECT-TYPE + SYNTAX INTEGER { + topSecret(61), + secret(90), + confidential(150), + unclassified(171) + } + STATUS current + DESCRIPTION + "Specifies the value for classification level to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 1 (classificationLevel)." + ::= { ipSecIpsoFilterEntry 3 } + + ipSecIpsoFilterProtectionAuthority OBJECT-TYPE + SYNTAX INTEGER { + genser(0), + siop-esi(1), + sci(2), + nsa(3), + doe(4) + } + STATUS current + DESCRIPTION + "Specifies the value for protection authority to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 2 (protectionAuthority). + " + ::= { ipSecIpsoFilterEntry 4 } + + + -- + -- + -- The ipSecRuleTimePeriodTable + -- + + ipSecRuleTimePeriodTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies the time periods during which a policy rule is valid. + The values of the first five attributes in a row are ANDed + together to determine the validity period(s). If any of the five + attributes is not present, it is treated as having value always + enabled. " + ::= { ipSecPolicyTimePeriod 1 } + + ipSecRuleTimePeriodEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodPrid } + UNIQUENESS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + ::= { ipSecRuleTimePeriodTable 1 } + + IpSecRuleTimePeriodEntry ::= SEQUENCE { + ipSecRuleTimePeriodPrid InstanceId, + ipSecRuleTimePeriodTimePeriod OCTET STRING, + ipSecRuleTimePeriodMonthOfYearMask OCTET STRING, + ipSecRuleTimePeriodDayOfMonthMask OCTET STRING, + ipSecRuleTimePeriodDayOfWeekMask OCTET STRING, + ipSecRuleTimePeriodTimeOfDayMask OCTET STRING, + ipSecRuleTimePeriodLocalOrUtcTime INTEGER + } + + ipSecRuleTimePeriodPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodEntry 1 } + + ipSecRuleTimePeriodTimePeriod OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that identifies an overall range of calendar + dates and times over which a policy rule is valid. It reuses the + format for an explicit time period defined in RFC 2445 : a string + representing a starting date and time, in which the character 'T' + indicates the beginning of the time portion, followed by the + solidus character '/', followed by a similar string representing + an end date and time. The first date indicates the beginning of + the range, while the second date indicates the end. Thus, the + second date and time must be later than the first. Date/times are + expressed as substrings of the form yyyymmddThhmmss. + + There are also two special cases: + + - If the first date/time is replaced with the string + THISANDPRIOR, then the property indicates that a policy rule is + valid [from now] until the date/time that appears after the '/'. + + - If the second date/time is replaced with the string + THISANDFUTURE, then the property indicates that a policy rule + becomes valid on the date/time that appears before the '/', and + remains valid from that point on. + " + ::= { ipSecRuleTimePeriodEntry 2 } + + ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which months the policy is valid + for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000006 for this + property; + + - a 2-octet field consisting of 12 bits identifying the 12 months + of the year, beginning with January and ending with December, + followed by 4 bits that are always set to '0'. For each month, + the value '1' indicates that the policy is valid for that month, + and the value '0' indicates that it is not valid. + + If this property is omitted, then the policy rule is treated as + valid for all twelve months." + ::= { ipSecRuleTimePeriodEntry 3 } + + ipSecRuleTimePeriodDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the month the policy + is valid for. The octet string is structured as follows: + + -a 4-octet length field, indicating the length of the entire octet + string; this field is always set to 0x0000000C for this property; + + -an 8-octet field consisting of 31 bits identifying the days of + the month counting from the beginning, followed by 31 more bits + identifying the days of the month counting from the end, followed + by 2 bits that are always set to '0'. For each day, the value '1' + indicates that the policy is valid for that day, and the value '0' + indicates that it is not valid. + + For months with fewer than 31 days, the digits corresponding to + days that the months do not have (counting in both directions) are + ignored. + " + ::= { ipSecRuleTimePeriodEntry 4 } + + ipSecRuleTimePeriodDayOfWeekMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the week the policy + is valid for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000005 for this + property; + + - a 1-octet field consisting of 7 bits identifying the 7 days of + the week, beginning with Sunday and ending with Saturday, followed + by 1 bit that is always set to '0'. For each day of the week, the + value '1' indicates that the policy is valid for that day, and the + value '0' indicates that it is not valid. + " + ::= { ipSecRuleTimePeriodEntry 5 } + + ipSecRuleTimePeriodTimeOfDayMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies a range of times in a day the + policy is valid for. It is formatted as follows: + + A time string beginning with the character 'T', followed by the + solidus character '/', followed by a second time string. The + first time indicates the beginning of the range, while the second + time indicates the end. Times are expressed as substrings of the + form Thhmmss. + + The second substring always identifies a later time than the first + substring. To allow for ranges that span midnight, however, the + value of the second string may be smaller than the value of the + first substring. Thus, T080000/T210000 identifies the range from + 0800 until 2100, while T210000/T080000 identifies the range from + 2100 until 0800 of the following day." + ::= { ipSecRuleTimePeriodEntry 6 } + + ipSecRuleTimePeriodLocalOrUtcTime OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + STATUS current + DESCRIPTION + "This property indicates whether the times represented in this + table represent local times or UTC times. There is no provision + for mixing of local times and UTC times: the value of this + property applies to all of the other time-related properties." + ::= { ipSecRuleTimePeriodEntry 7 } + + + -- + -- + -- The ipSecRuleTimePeriodSetTable + -- + + ipSecRuleTimePeriodSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies time period sets. The ipSecRuleTimePeriodTable can + specify only a single time period within a day. This table enables + the specification of multiple time periods within a day by + grouping them into one set. " + ::= { ipSecPolicyTimePeriod 2 } + + ipSecRuleTimePeriodSetEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodSetPrid } + UNIQUENESS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + ::= { ipSecRuleTimePeriodSetTable 1 } + + IpSecRuleTimePeriodSetEntry ::= SEQUENCE { + ipSecRuleTimePeriodSetPrid InstanceId, + ipSecRuleTimePeriodSetRuleTimePeriodSetId TagId, + ipSecRuleTimePeriodSetRuleTimePeriodId ReferenceId + } + + ipSecRuleTimePeriodSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodSetEntry 1 } + + ipSecRuleTimePeriodSetRuleTimePeriodSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An integer that uniquely identifies an ipSecRuleTimePeriod set. " + ::= { ipSecRuleTimePeriodSetEntry 2 } + + ipSecRuleTimePeriodSetRuleTimePeriodId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecRuleTimePeriodEntry } + STATUS current + DESCRIPTION + "An integer that identifies an ipSecRuleTimePeriod, specified by + ipSecRuleTimePeriodPrid in the ipSecRuleTimePeriodTable, that is + included in this set." + ::= { ipSecRuleTimePeriodSetEntry 3 } + + + -- + -- + -- The ipSecIfCapsTable + -- + + ipSecIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Specifies capabilities that may be associated with an interface + of a specific type. The instances of this table are referenced by + the frwkIfCapSetCapability attribute of the frwkIfCapSetTable [FR- + PIB]." + ::= { ipSecIfCapability 1 } + + ipSecIfCapsEntry OBJECT-TYPE + SYNTAX IpSecIfCapsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIfCapsPrid } + UNIQUENESS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + ::= { ipSecIfCapsTable 1 } + + IpSecIfCapsEntry ::= SEQUENCE { + ipSecIfCapsPrid InstanceId, + ipSecIfCapsDirection INTEGER, + ipSecIfCapsMaxIpSecActions Unsigned16, + ipSecIfCapsMaxIkeActions Unsigned16 + } + + ipSecIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIfCapsEntry 1 } + + ipSecIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction for which this capability applies." + ::= { ipSecIfCapsEntry 2 } + + ipSecIfCapsMaxIpSecActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IPsec action set may + contain. IPsec action sets are specified by the + ipSecActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 3 } + + ipSecIfCapsMaxIkeActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IKE action set may + contain. IKE action sets are specified by the + ipSecIkeActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 4 } + + + -- + -- + -- Conformance Section + -- + + ipSecPolicyPibConformanceCompliances + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 1 } + + ipSecPolicyPibConformanceGroups + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 2 } + + IPsecPibCompilance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " Compliance statement" + MODULE û- this module + MANDATORY-GROUPS { + ipSecRuleGroup, + ipSecActionSetGroup, + ipSecStaticActionGroup, + ipSecNegotiationActionGroup, + ipSecAssociationGroup, + ipSecProposalSetGroup, + ipSecProposalGroup, + ipSecAhTransformSetGroup, + ipSecAhTransformGroup, + ipSecEspTransformSetGroup, + ipSecEspTransformGroup, + ipSecCompTransformSetGroup, + ipSecCompTransformGroup, + ipSecIkeAssociationGroup, + ipSecIkeProposalSetGroup, + ipSecIkeProposalGroup, + ipSecIkePeerEndpointGroup, + ipSecCredentialSetGroup, + ipSecCredentialGroup, + ipSecCredentialFieldsGroup, + ipSecSelectorSetGroup, + ipSecSelectorGroup, + ipSecAddressGroup, + ipSecL4PortGroup, + ipSecIfCapsGroup + } + + GROUP ipSecIkeRuleGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIkeActionSetGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIpsoFilterSetGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecIpsoFilterGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecRuleTimePeriodGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + GROUP ipSecRuleTimePeriodSetGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + OBJECT ipSecRuleipSecIpsoFilterSetId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleLimitNegotiation + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleAutoStart + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleIpSecRuleTimePeriodGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoPacketLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationUseKeyExchangeGroup + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationGranularity + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyRounds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyLength + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformDictionarySize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformPrivateAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLiftetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationPresharedKey + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationAggressiveModeGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationLocalCredentialId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalPrfAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddressType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddress + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIfCapsMaxIkeActions + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleActionExecutionStrategy + SYNTAX INTEGER { + doAll(1) + } + DESCRIPTION + " Support of doUntilSuccess(2) is not required" + + OBJECT ipSecStaticActionAction + SYNTAX INTEGER { + byPass(1), + discard(2), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + DESCRIPTION + " Support of ikeRejection(3) is not required" + + ::= { ipSecPolicyPibConformanceCompliances 1 } + + ipSecRuleGroup OBJECT-GROUP + OBJECTS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleDirection, + ipSecRuleIpSecSelectorSetId, + ipSecRuleipSecIpsoFilterSetId, + ipSecRuleIpSecActionSetId, + ipSecRuleActionExecutionStrategy, + ipSecRuleOrder, + ipSecRuleLimitNegotiation, + ipSecRuleAutoStart, + ipSecRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTable." + ::= { ipSecPolicyPibConformanceGroups 1 } + + ipSecActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 2 } + + ipSecStaticActionGroup OBJECT-GROUP + OBJECTS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + STATUS current + DESCRIPTION + "Objects from the ipSecStaticActionTable." + ::= { ipSecPolicyPibConformanceGroups 3 } + + ipSecNegotiationActionGroup OBJECT-GROUP + OBJECTS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + STATUS current + DESCRIPTION + "Objects from the ipSecNegotiationActionTable." + ::= { ipSecPolicyPibConformanceGroups 4 } + + ipSecAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 5 } + + ipSecProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 6 } + + ipSecProposalGroup OBJECT-GROUP + OBJECTS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalTable." + ::= { ipSecPolicyPibConformanceGroups 7 } + + ipSecAhTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 8 } + + ipSecAhTransformGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformTable." + ::= { ipSecPolicyPibConformanceGroups 9 } + + ipSecEspTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 10 } + + ipSecEspTransformGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformTable." + ::= { ipSecPolicyPibConformanceGroups 11 } + + ipSecCompTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 12 } + + ipSecCompTransformGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformTable." + ::= { ipSecPolicyPibConformanceGroups 13 } + + ipSecIkeRuleGroup OBJECT-GROUP + OBJECTS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart, + ipSecIkeRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeRuleTable." + ::= { ipSecPolicyPibConformanceGroups 14 } + + ipSecIkeActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 15 } + + ipSecIkeAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 16 } + + ipSecIkeProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 17 } + + ipSecIkeProposalGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalTable." + ::= { ipSecPolicyPibConformanceGroups 18 } + + ipSecIkePeerEndpointGroup OBJECT-GROUP + OBJECTS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkePeerEndpointTable." + ::= { ipSecPolicyPibConformanceGroups 19 } + + ipSecCredentialSetGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialSetTable." + ::= { ipSecPolicyPibConformanceGroups 20 } + + ipSecCredentialGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialTable." + ::= { ipSecPolicyPibConformanceGroups 21 } + + ipSecCredentialFieldsGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialFieldsTable." + ::= { ipSecPolicyPibConformanceGroups 22 } + + ipSecSelectorSetGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorSetTable." + ::= { ipSecPolicyPibConformanceGroups 23 } + + ipSecSelectorGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorTable." + ::= { ipSecPolicyPibConformanceGroups 24 } + + ipSecAddressGroup OBJECT-GROUP + OBJECTS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAddressTable." + ::= { ipSecPolicyPibConformanceGroups 25 } + + ipSecL4PortGroup OBJECT-GROUP + OBJECTS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecL4PortTable." + ::= { ipSecPolicyPibConformanceGroups 26 } + + ipSecIpsoFilterSetGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterSetTable." + ::= { ipSecPolicyPibConformanceGroups 27 } + + ipSecIpsoFilterGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterTable." + ::= { ipSecPolicyPibConformanceGroups 28 } + + ipSecRuleTimePeriodGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodTable." + ::= { ipSecPolicyPibConformanceGroups 29 } + + ipSecRuleTimePeriodSetGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodSetTable." + ::= { ipSecPolicyPibConformanceGroups 30 } + + ipSecIfCapsGroup OBJECT-GROUP + OBJECTS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + STATUS current + DESCRIPTION + "Objects from the ipSecIfCapsTable." + ::= { ipSecPolicyPibConformanceGroups 31 } + +END diff --git a/pibs/tubs/LOAD-BALANCING-PIB b/pibs/tubs/LOAD-BALANCING-PIB new file mode 100644 index 0000000..9b8c241 --- /dev/null +++ b/pibs/tubs/LOAD-BALANCING-PIB @@ -0,0 +1,572 @@ +LOAD-BALANCING-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP, Unsigned32 + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, + TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + frwkIpFilterEntry + FROM FRAMEWORK-PIB; + +lbPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- Load Balancing Client Type + LAST-UPDATED "200102231000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Brad Stone + Resonate, Inc. + 385 Moffett Park Drive + Sunnyvale, CA 94089 + Phone: +1 408 548 5929 + Fax: +1 408 nnn nnnn + Email: bstone@resonate.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + that describe load balancing policies." + ::= { ibrpib 22 } + + +-- +-- Classifier Classes +-- + +lbClassifierClasses OBJECT IDENTIFIER ::= { lbPolicyPib 1 } + +-- +-- Filter Table +-- + +lbFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of additional filters. The filters in + this table extend the filters in frwkBaseFilterTable. A + packet must match all the fields in a filter. Wildcards may + be specified for those fields that are not relevant." + + ::= { lbClassifierClasses 1 } + +lbFilterEntry OBJECT-TYPE + SYNTAX LbFilterEntry + STATUS current + DESCRIPTION + "An instance of this class describes a filter. " + + EXTENDS { frwkIpFilterEntry } + + ::= { lbFilterTable 1 } + +LbFilterEntry ::= SEQUENCE { + lbFilterUrlPrefix OCTET STRING, + lbFilterUrlDomain OCTET STRING, + lbFilterUrlSuffix OCTET STRING } + +lbFilterUrlPrefix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the protocol. for + example, http,ftp. A `*' character is used to match any + string." + + ::= { lbFilterEntry 1 } + +lbFilterUrlDomain OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the domain. for + example, www.company.com. A `*' character is used to match + any string." + + ::= { lbFilterEntry 2 } + +lbFilterUrlSuffix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the file name. for + example, index.html, mypic.jpg. A `*.*' string matches any + file, a `*.jpg' string matches all files with jpg extension, + and a `index.*' matches all `index' files with any + extension." + + ::= { lbFilterEntry 3 } + +-- +-- Filter Group Table +-- + +lbFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Filter Groups. Each Group being an + ordered list of filters. Each instance of this class + identifies one filter of a group and the precedence order of + that filter with respect to other filters in the same + group." + + ::= { lbClassifierClasses 2 } + +lbFilterGroupEntry OBJECT-TYPE + SYNTAX LbFilterGroupEntry + STATUS current + DESCRIPTION + "An instance of filter group." + + PIB-INDEX { lbFilterGroupPrid } + + ::= { lbFilterGroupTable 1 } + +LbFilterGroupEntry ::= SEQUENCE { + lbFilterGroupPrid InstanceId, + lbFilterGroupId TagId, + lbFilterGroupFilterId ReferenceId, + lbFilterGroupPriority Unsigned32 } + +lbFilterGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbFilterGroupEntry class." + + ::= { lbFilterGroupEntry 1 } + +lbFilterGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of filters. + The same lbFilterGroupId is used in all lbFilterGroupEntry + instances that belong to a group." + + ::= { lbFilterGroupEntry 2 } + +lbFilterGroupFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbFilterEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of filter. The filter with the same + Id must be present." + + ::= { lbFilterGroupEntry 3 } + +lbFilterGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this filter in the filter group. A filter with a given + priority order is positioned in the filter group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbFilterGroupEntry 4 } + + +-- +-- Capabilities Classes +-- + +lbCapabilitiesClasses OBJECT IDENTIFIER ::= { lbPolicyPib 2 } + +-- +-- Capabilities Table +-- + +lbCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbCapabilitiesEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table consists of load balancer capabilities. + Instances of this class are used by the PEP to notify PEP + capabilities and by the PDP to install policies. The PDP + must not install a capability not reported by the PEP " + + ::= { lbCapabilitiesClasses 1 } + +lbCapabilitiesEntry OBJECT-TYPE + SYNTAX LbCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of this class describes a set of capabilities + of the load balancer or the capabilities applied to a + service policy." + PIB-INDEX { lbCapPrid } + + ::= { lbCapabilitiesTable 1 } + +LbCapabilitiesEntry ::= SEQUENCE { + lbCapPrid InstanceId, + lbCapStickyMode BITS, + lbCapHttpReturnCodes BITS, + lbCapBalanceAlgorithm BITS, + lbCapAlgorithmParams Prid, + lbCapPreserveSrcAddr TruthValue, + lbCapDirectReturn TruthValue } + +lbCapPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbCapabilitiesEntry class." + + ::= { lbCapabilitiesEntry 1 } + +lbCapStickyMode OBJECT-TYPE + SYNTAX BITS { + cookieBased (1), + sourceAddressBased (2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of Sticky Mode in this + capabilities set. When PEP notifies PDP, the bits indicate + the support of these mechanisms. When PDP installs policies, + the bits indicate what mechanism must be used." + + ::= { lbCapabilitiesEntry 2 } + +lbCapHttpReturnCodes OBJECT-TYPE + SYNTAX BITS { + http404(1), + http505(2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of HTTP return codes that + the load balancer can interpret and redirect the request to + another server. When PEP notifies PDP, the bits indicate + the ability to interpret the HTTP return codes. When PDP + installs policies, the bits indicate enabling redirection on + any of those HTTP return codes." + + ::= { lbCapabilitiesEntry 3 } + +lbCapBalanceAlgorithm OBJECT-TYPE + SYNTAX BITS { + roundRobin(1), + weightedRoundRobin(2), + leastConnections(3), + weightedLeastConnections(4), + fastestServerResponse(5), + serverCpuUtilizaiton(6), + priorityToUser(7) } + STATUS current + DESCRIPTION + "Set of values indicating the type of server balance + algorithm. When PEP notifies PDP, the bits indicate all the + algorithms supported. When PDP installs policies the bits + indicate only one algorithm that must be used. Additional + parameters needed for the algorithm may be specified in + another PRC instance identified by the lbCapAlgorithmParams + attribute." + + ::= { lbCapabilitiesEntry 4 } + +lbCapAlgorithmParams OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to PRI that contains parameters needed for a + specific algorithm. The PRI pointed to must exist prior to + the installation of this class. + + TBD: define parameters classes for all existing algorithms." + + ::= { lbCapabilitiesEntry 5 } + +lbCapPreserveSrcAddr OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether Source Address must be preserved when + forwarding a request to server." + + ::= { lbCapabilitiesEntry 6 } + +lbCapDirectReturn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether a response from data center server could + go directly to client bypassing the load balancer." + + ::= { lbCapabilitiesEntry 7 } + + +-- +-- Server Classes +-- + +lbServerClasses OBJECT IDENTIFIER ::= { lbPolicyPib 3 } + +-- +-- Server Table +-- + +lbServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of data center servers." + + ::= { lbCapabilitiesClasses 2 } + +lbServerEntry OBJECT-TYPE + SYNTAX LbServerEntry + STATUS current + DESCRIPTION + "An instance of this class describes a data center server." + + PIB-INDEX { lbServerPrid } + + ::= { lbServerTable 1 } + +LbServerEntry ::= SEQUENCE { + lbServerPrid InstanceId, + lbServerName SnmpAdminString, + lbServerAddressType InetAddressType, + lbServerAddress InetAddress, + lbServerMode INTEGER } + +lbServerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerEntry class." + + ::= { lbServerEntry 1 } + +lbServerName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A name for server." + + ::= { lbServerEntry 2 } + +lbServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Type of address for server." + + ::= { lbServerEntry 3 } + +lbServerAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Address (IP address or DNS Name) for server." + + ::= { lbServerEntry 4 } + +lbServerMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(0), + primary(1), + backup(2) } + STATUS current + DESCRIPTION + "Indicates the mode of the server. Enumeration values are + primary server (1) + backup server (2) + disabled (0)." + + ::= { lbServerEntry 5 } + +-- +-- Server Group Table +-- + +lbServerGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Server Groups. Each Group being an + ordered list of data center servers. Each instance of this + class identifies one server of a group and the precedence + order of that server with respect to other servers in the + same group." + + ::= { lbServerClasses 2 } + +lbServerGroupEntry OBJECT-TYPE + SYNTAX LbServerGroupEntry + STATUS current + DESCRIPTION + "An instance of server group." + + PIB-INDEX { lbServerGroupPrid } + + ::= { lbServerGroupTable 1 } + +LbServerGroupEntry ::= SEQUENCE { + lbServerGroupPrid InstanceId, + lbServerGroupId TagId, + lbServerGroupServerId ReferenceId, + lbServerGroupPriority Unsigned32 } + +lbServerGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerGroupEntry class." + + ::= { lbServerGroupEntry 1 } + +lbServerGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of servers. + The same lbServerGroupId is used in all lbServerGroupEntry + instances that belong to a group." + + ::= { lbServerGroupEntry 2 } + +lbServerGroupServerId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbServerEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of server. The server with the same + Id must be present." + + ::= { lbServerGroupEntry 3 } + +lbServerGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this server in the server group. A server with a given + priority order is positioned in the server group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbServerGroupEntry 4 } + + +-- +-- Service Classes +-- + +lbServiceClasses OBJECT IDENTIFIER ::= { lbPolicyPib 4 } + +-- +-- Service Table +-- + +lbServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServiceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of entries that combine filter groups, + capabilities and server groups to form services." + + ::= { lbServiceClasses 1 } + +lbServiceEntry OBJECT-TYPE + SYNTAX LbServiceEntry + STATUS current + DESCRIPTION + "An instance of this class describes a service." + + PIB-INDEX { lbServicePrid } + + ::= { lbServiceTable 1 } + +LbServiceEntry ::= SEQUENCE { + lbServicePrid InstanceId, + lbServiceName SnmpAdminString, + lbServiceFilterGroupId TagReferenceId, + lbServiceServerGroupId TagReferenceId, + lbServiceCapabilitiesId ReferenceId } + +lbServicePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServiceEntry class." + + ::= { lbServiceEntry 1 } + +lbServiceName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "Name to identify a service." + + ::= { lbServiceEntry 2 } + +lbServiceFilterGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { lbFilterGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Filters. An instance of + lbFilterGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 3 } + +lbServiceServerGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { lbServerGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Servers. An instance of + lbServerGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 4 } + +lbServiceCapabilitiesId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbCapabilitiesEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of capabilities class. An instance + of lbCapabilitiesEntry with the same tag id must be + present." + + ::= { lbServiceEntry 5 } + + + +-- Compliance section +-- TBD +END diff --git a/pibs/tubs/LOAD-BALANCING-PIB-orig b/pibs/tubs/LOAD-BALANCING-PIB-orig new file mode 100644 index 0000000..2733e09 --- /dev/null +++ b/pibs/tubs/LOAD-BALANCING-PIB-orig @@ -0,0 +1,568 @@ +LOAD-BALANCING-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, + TagId, TagReference + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + +lbPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES SUBJECT-CATEGORY { tbd û Load Balancing Client +Type } + LAST-UPDATED "200102231000Z" + ORGANIZATION " WG" + CONTACT-INFO ö + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Brad Stone + Resonate, Inc. + 385 Moffett Park Drive + Sunnyvale, CA 94089 + Phone: +1 408 548 5929 + Fax: +1 408 nnn nnnn + Email: bstone@resonate.com + ô + DESCRIPTION + "This PIB module contains a set of provisioning classes + that describe load balancing policies." + ::= { tbd } + + +-- +-- Classifier Classes +-- + +lbClassifierClasses OBJECT IDENTIFIER ::= { lbPolicyPib 1 } + +-- +-- Filter Table +-- + +lbFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of additional filters. The filters in + this table extend the filters in frwkBaseFilterTable. A + packet must match all the fields in a filter. Wildcards may + be specified for those fields that are not relevant." + + ::= { lbClassifierClasses 1 } + +lbFilterEntry OBJECT-TYPE + SYNTAX LbFilterEntry + STATUS current + DESCRIPTION + "An instance of this class describes a filter. " + + EXTENDS { frwkIpFilterEntry } + + ::= { lbFilterTable 1 } + +LbFilterEntry ::= SEQUENCE { + lbFilterUrlPrefix OCTET_STRING, + lbFilterUrlDomain OCTET_STRING, + lbFilterUrlSuffix OCTET_STRING } + +lbFilterUrlPrefix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the protocol. for + example, http,ftp. A æ*Æ character is used to match any + string." + + ::= { lbFilterEntry 1 } + +lbFilterUrDomain OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the domain. for + example, www.company.com. A æ*Æ character is used to match + any string." + + ::= { lbFilterEntry 2 } + +lbFilterUrlSuffix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the file name. for + example, index.html, mypic.jpg. A æ*.*Æ string matches any + file, a æ*.jpgÆ string matches all files with jpg extension, + and a æindex.*Æ matches all æindexÆ files with any + extension." + + ::= { lbFilterEntry 3 } + +-- +-- Filter Group Table +-- + +lbFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Filter Groups. Each Group being an + ordered list of filters. Each instance of this class + identifies one filter of a group and the precedence order of + that filter with respect to other filters in the same + group." + + ::= { lbClassifierClasses 2 } + +lbFilterGroupEntry OBJECT-TYPE + SYNTAX LbFilterGroupEntry + STATUS current + DESCRIPTION + "An instance of filter group." + + PIB-INDEX { lbFilterGroupPrid } + + ::= { lbFilterGroupTable 1 } + +LbFilterGroupEntry ::= SEQUENCE { + lbFilterGroupPrid InstanceId, + lbFilterGroupId TagId, + lbFilterGroupFilterId ReferenceId, + lbFilterGroupPriority Unsigned32 } + +lbFilterGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbFilterGroupEntry class." + + ::= { lbFilterGroupEntry 1 } + +lbFilterGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of filters. + The same lbFilterGroupId is used in all lbFilterGroupEntry + instances that belong to a group." + + ::= { lbFilterGroupEntry 2 } + +lbFilterGroupFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbFilterEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of filter. The filter with the same + Id must be present." + + ::= { lbFilterGroupEntry 3 } + +lbFilterGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this filter in the filter group. A filter with a given + priority order is positioned in the filter group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbFilterGroupEntry 4 } + + +-- +-- Capabilities Classes +-- + +lbCapabilitiesClasses OBJECT IDENTIFIER ::= { lbPolicyPib 2 } + +-- +-- Capabilities Table +-- + +lbCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbCapabilitiesEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table consists of load balancer capabilities. + Instances of this class are used by the PEP to notify PEP + capabilities and by the PDP to install policies. The PDP + must not install a capability not reported by the PEP " + + ::= { lbCapabilitiesClasses 1 } + +lbCapabilitiesEntry OBJECT-TYPE + SYNTAX LbCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of this class describes a set of capabilities + of the load balancer or the capabilities applied to a + service policy." + + ::= { lbCapabilitiesTable 1 } + +LbCapabilitiesEntry ::= SEQUENCE { + lbCapPrid InstanceId, + lbCapStickyMode BITS, + lbCapHttpReturnCodes BITS, + lbCapBalanceAlgorithm BITS, + lbCapAlgorithmParams Prid, + lbCapPreserveSrcAddr TruthValue, + lbCapDirectReturn TruthValue } + +lbCapPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbCapabilitiesEntry class." + + ::= { lbCapabilitiesEntry 1 } + +lbCapStickyMode OBJECT-TYPE + SYNTAX BITS { + cookieBased (1), + sourceAddressBased (2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of Sticky Mode in this + capabilities set. When PEP notifies PDP, the bits indicate + the support of these mechanisms. When PDP installs policies, + the bits indicate what mechanism must be used." + + ::= { lbCapabilitiesEntry 2 } + +lbCapReturnCodes OBJECT-TYPE + SYNTAX BITS { + http404(1), + http505(2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of HTTP return codes that + the load balancer can interpret and redirect the request to + another server. When PEP notifies PDP, the bits indicate + the ability to interpret the HTTP return codes. When PDP + installs policies, the bits indicate enabling redirection on + any of those HTTP return codes." + + ::= { lbCapabilitiesEntry 3 } + +lbCapBalanceAlgorithm OBJECT-TYPE + SYNTAX BITS { + roundRobin(1), + weightedRoundRobin(2), + leastConnections(3), + weightedLeastConnections(4), + fastestServerResponse(5), + serverCpuUtilizaiton(6), + priorityToUser(7) } + STATUS current + DESCRIPTION + "Set of values indicating the type of server balance + algorithm. When PEP notifies PDP, the bits indicate all the + algorithms supported. When PDP installs policies the bits + indicate only one algorithm that must be used. Additional + parameters needed for the algorithm may be specified in + another PRC instance identified by the lbCapAlgorithmParams + attribute." + + ::= { lbCapabilitiesEntry 4 } + +lbCapAlgorithmParams OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to PRI that contains parameters needed for a + specific algorithm. The PRI pointed to must exist prior to + the installation of this class. + + TBD: define parameters classes for all existing algorithms.ö + + ::= { lbCapabilitiesEntry 5 } + +lbCapPreserveSrcAddr OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether Source Address must be preserved when + forwarding a request to server.ö + + ::= { lbCapabilitiesEntry 6 } + +lbCapDirectReturn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether a response from data center server could + go directly to client bypassing the load balancer.ö + + ::= { lbCapabilitiesEntry 7 } + + +-- +-- Server Classes +-- + +lbServerClasses OBJECT IDENTIFIER ::= { lbPolicyPib 3 } + +-- +-- Server Table +-- + +lbServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of data center servers." + + ::= { lbCapabilitiesClasses 1 } + +lbServerEntry OBJECT-TYPE + SYNTAX LbServerEntry + STATUS current + DESCRIPTION + "An instance of this class describes a data center server." + + PIB-INDEX { lbServerPrid } + + ::= { lbServerTable 1 } + +LbServerEntry ::= SEQUENCE { + lbServerPrid InstanceId, + lbServerName SnmpAdminString, + lbServerAddressType InetAddressType, + lbServerAddress InetAddress, + lbServerMode INTEGER } + +lbServerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerEntry class." + + ::= { lbServerEntry 1 } + +lbServerName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A name for server." + + ::= { lbServerEntry 2 } + +lbServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Type of address for server." + + ::= { lbServerEntry 3 } + +lbServerAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Address (IP address or DNS Name) for server." + + ::= { lbServerEntry 4 } + +lbServerMode OBJECT-TYPE + SYNTAX INTEGER { + Disabled(0), + Primary(1), + Backup(2) } + STATUS current + DESCRIPTION + "Indicates the mode of the server. Enumeration values are + primary server (1) + backup server (2) + disabled (0)." + + ::= { lbServerEntry 5 } + +-- +-- Server Group Table +-- + +lbServerGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Server Groups. Each Group being an + ordered list of data center servers. Each instance of this + class identifies one server of a group and the precedence + order of that server with respect to other servers in the + same group." + + ::= { lbServerClasses 2 } + +lbServerGroupEntry OBJECT-TYPE + SYNTAX LbServerGroupEntry + STATUS current + DESCRIPTION + "An instance of server group." + + PIB-INDEX { lbServerGroupPrid } + + ::= { lbServerGroupTable 1 } + +LbServerGroupEntry ::= SEQUENCE { + lbServerGroupPrid InstanceId, + lbServerGroupId TagId, + lbServerGroupServerId ReferenceId, + lbServerGroupPriority Unsigned32 } + +lbServerGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerGroupEntry class." + + ::= { lbServerGroupEntry 1 } + +lbServerGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of servers. + The same lbServerGroupId is used in all lbServerGroupEntry + instances that belong to a group." + + ::= { lbServerGroupEntry 2 } + +lbServerGroupServerId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbServerEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of server. The server with the same + Id must be present." + + ::= { lbServerGroupEntry 3 } + +lbServerGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this server in the server group. A server with a given + priority order is positioned in the server group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbServerGroupEntry 4 } + + +-- +-- Service Classes +-- + +lbServiceClasses OBJECT IDENTIFIER ::= { lbPolicyPib 4 } + +-- +-- Service Table +-- + +lbServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServiceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of entries that combine filter groups, + capabilities and server groups to form services." + + ::= { lbServiceClasses 1 } + +lbServiceEntry OBJECT-TYPE + SYNTAX LbServiceEntry + STATUS current + DESCRIPTION + "An instance of this class describes a service." + + PIB-INDEX { lbServicePrid } + + ::= { lbServiceTable 1 } + +LbServiceEntry ::= SEQUENCE { + lbServicePrid InstanceId, + lbServiceName SnmpAdminString, + lbServiceFilterGroupId TagReference, + lbServiceServerGroupId TagReference, + lbServiceCapabilitiesId ReferenceId } + +lbServicePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServiceEntry class." + + ::= { lbServiceEntry 1 } + +lbServiceName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "Name to identify a service." + + ::= { lbServiceEntry 2 } + +lbServiceFilterGroupId OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { lbFilterGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Filters. An instance of + lbFilterGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 3 } + +lbServiceServerGroupId OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { lbServerGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Servers. An instance of + lbServerGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 4 } + +lbServiceCapabilitiesId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbCapabilitiesEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of capabilities class. An instance + of lbCapabilitiesEntry with the same tag id must be + present." + + ::= { lbServiceEntry 5 } + + + +-- Compliance section +-- TBD +END diff --git a/pibs/tubs/META-POLICY-PIB b/pibs/tubs/META-POLICY-PIB new file mode 100644 index 0000000..da78c00 --- /dev/null +++ b/pibs/tubs/META-POLICY-PIB @@ -0,0 +1,938 @@ +META-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, TimeTicks, + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + TruthValue + FROM SNMPv2-TC; + +metaPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200104010000Z" + ORGANIZATION "IETF" + CONTACT-INFO " Andreas Polyrakis + Dept. of Computer Science, + University of Toronto, + 10 King's College Road, + Toronto, Ontario,M5S 3G4, Canada. + e-mail: apolyr@cs.toronto.edu + Phone: ++1 (416) 978-4837 + Fax: ++1 (416) 978 1931 + + Raouf Boutaba + Dept. of Computer Science, + University of Waterloo, + 200 University Avenue West, + Waterloo, Ontario N2L 3G1, Canada + e-mail: rboutaba@bbcr.uwaterloo.ca + Phone: ++1 (519) 888 4567 ext.4820 + Fax: ++1 (519) 885 1208" + DESCRIPTION + "The meta-policy PIB module. It contains the classes + that are necessary for the provisioning of meta-policy + related information. This module is applicable, + but not current, to all subject-categories" + + ::= { ibrpib 21 } +-- The root OID for PRCs in the Meta-Policy PIB + + +--- +--- Textual Conventions +--- +BERValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A sequence of octets that encodes a value using BER. + The suppoted BER types are (borrowed by SNMPv2): + Type | BER identifier + --------------------|---------------- + + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40 + COUNTER32 | 41 + GAUGE32 | 42 + TIMETICKS | 43 + OPAQUE | 44 + + + By using this type, the PEP can store values for different + types of parameters in the same class (PRC)." + + SYNTAX OCTET STRING (SIZE (0..16)) + +XMLString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A string that contains a logical expression encoded using + XML. The semantics of the XML tags are defined in special + DTDs, which the PEP declares that supports." + SYNTAX OCTET STRING (SIZE (0..1024)) +--- +--- End of Textual Conventions +--- + +----------------------------------------------- +----------------------------------------------- + + +-- Meta-Policy Capabilities Group +metaPolicyCapabilitiesClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 1 } + + +--- +--- Meta-Policy Capabilities Table +--- +xmlDTDTable OBJECT-TYPE + SYNTAX SEQUENCE OF XmlDTDEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + identifies an XML DTD supported by the PEP for encoding + logical expressions. If this class has no instances, + then the PEP supports only expressions that are formed + with boolean predicates and operators, and in this case + the PDP MUST not attempt to install any XML-encoded + expressions in the generalConditionTable." + ::= { metaPolicyCapabilitiesClasses 1 } + +xmlDTDEntry OBJECT-TYPE + SYNTAX XmlDTDEntry + STATUS current + DESCRIPTION + "An instance of the xmlDTDTable class that determines an + XML DTD that can be used to encode a logical expression" + PIB-INDEX { xmlDTDPrid } + ::= { xmlDTDTable 1 } + +XmlDTDEntry ::= + SEQUENCE { + + xmlDTDPrid InstanceId, + xmlDTDURL SnmpAdminString + } + +xmlDTDPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the xmlDTD class." + ::= { xmlDTDEntry 1 } + +xmlDTDURL OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The XML DTD URL. A string that indicates the URL of an + XML DTD that can be used for encoding expressions. + These DTDs can be defined either by standardization + organizations, such as IETF, or be vendor specific. + + When the PDP receives a URL that uniquely identifies + such a DTD, it knows that it may encode expressions + according to this DTD that the PEP will be able to + evaluate." + ::= { xmlDTDEntry 2 } + +--End of xmlDTDTable + +----------------------------------------------- +----------------------------------------------- + +-- Base Meta-Policy Group +metaPolicyClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 2 } + + +--- +--- Meta-Policy Table +--- +metaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + represents a meta-policy. Each meta-policy, apart + from a unique identifier and an optional name, it + constists of a condition and a group of actions." + ::= { metaPolicyClasses 1 } + +metaPolicyEntry OBJECT-TYPE + SYNTAX MetaPolicyEntry + STATUS current + + DESCRIPTION + "An instance of the metaPolicy Class that represents + a meta-policy." + PIB-INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +MetaPolicyEntry ::= + SEQUENCE { + metaPolicyPrid InstanceId, + metaPolicyName SnmpAdminString, + metaPolicyCondition ReferenceId, + metaPolicyActions TagId + } + +metaPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicy class." + ::= { metaPolicyEntry 1 } + +metaPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A display string that represents the name of the + meta-policy. It is reccomented that different + meta-policies have different names. However, similar + meta-policies may have the same name. + Also, an empty string can be used as a name." + ::= { metaPolicyEntry 2 } + +metaPolicyCondition OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + DESCRIPTION + "This attribute associates the specific meta-policy with + a condition in the condition Class. The condition MUST + + exist when the meta-policy is installed. The meta-policy + MUST always be assosiated with one condition (which means + that the attribute can never be null/invalid." + ::= { metaPolicyEntry 3 } + +metaPolicyActions OBJECT-TYPE + SYNTAX TagId +-- PIB-REFERENCES { actionEntry } + STATUS current + DESCRIPTION + "A tag that maps this instance (meta-policy) to a group + of actions in the actions Class. Although the tag should + map to at least one action, there might be cases where a + + meta-policy is associated to no actions. However such + cases should be avoided and only be temporal." + ::= { metaPolicyEntry 4 } +--End of metaPolicyTable + +-- +-- Meta-Policy Status Table +-- +metaPolicyStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyStatusEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class augments the metaPolicy class. + Each instance of this class defines a PRC that is used + in order to report to the PDP the status of the + meta-policies. + + Also, information form this table can be used as a + parameter to another meta-policy, as an alternative + way to ensure that two priorities cannot be + activated at the same time." + ::= { metaPolicyClasses 2 } + +metaPolicyStatusEntry OBJECT-TYPE + SYNTAX MetaPolicyStatusEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyStatus class that reports + the status of the corresponding meta-policy in the + metaPolicy class." + AUGMENTS { metaPolicyEntry } + ::= { metaPolicyStatusTable 1 } + +MetaPolicyStatusEntry ::= + SEQUENCE { + metaPolicyActive TruthValue, + metaPolicySuppressed TruthValue + } + +metaPolicyActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "True while the meta-policy is active" + ::= { metaPolicyStatusEntry 1 } + +metaPolicySuppressed OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If this meta-policy is prevented from being active by + an other meta-policy (but its conditions are met), this + attribute is set to true. + + + If this meta-policy prevents another meta-policy from + being active, then this attribute is true. + + In other words: + Active | Suppr.| + -------------------------------- + true | true | meta-policy active, + | it suppresses another one + true | false | meta-policy active, + | does not suppress another one + false | true | meta-policy inactive + | because it is suppressed by another one + false | false | meta-policy inactive because + | the conditions are not met + " + ::= { metaPolicyStatusEntry 2 } +--End of metaPolicyStatusTable + + +--- +--- Meta-Policy Priority Table +--- +metaPolicyPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyPriorityEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table reports conflicting meta-policies. + When a meta-policy needs to be activated, the PEP + MUST check if it is conflicting with another meta-policy, + which is already active or needs to be activated at the + same time. If so, the one that is referenced in the + higherPriority attribute is activated and the other one + is deactivated or remains deactivated. Similarly, when a + meta-policy is deactivated, the PEP must check if a + lower-priority meta-policy must now be activated." + ::= { metaPolicyClasses 3 } + +metaPolicyPriorityEntry OBJECT-TYPE + SYNTAX MetaPolicyPriorityEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyPriority Class that + identifies the relative priority between two + meta-policies." + PIB-INDEX { metaPolicyPriorityPrid } + ::= { metaPolicyPriorityTable 1 } + +MetaPolicyPriorityEntry ::= + SEQUENCE { + metaPolicyPriorityPrid InstanceId, + higherPriority ReferenceId, + lowerPriority ReferenceId + + } + +metaPolicyPriorityPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicyPriority class." + ::= { metaPolicyPriorityEntry 1 } + +higherPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { metaPolicyEntry } + STATUS current + DESCRIPTION + "This attribute references to the meta-policy that + has higher priority than the one referenced by the + lowerPriority attribute" + ::= { metaPolicyPriorityEntry 2 } + +lowerPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { metaPolicyEntry } + STATUS current + DESCRIPTION + + "This attribute references to the meta-policy that + has lower priority than the one referenced by the + higherPriority attribute" + ::= { metaPolicyPriorityEntry 3 } + +--End of metaPolicyPriorityTable +----------------------------------------------- +---------------------------------------------- + + +-- Condition Group +conditionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 3 } + + +-- +-- Condition Table +-- +conditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC represents a boolean + expression. The conditionss of the meta-policies are + instances of this class. However, if the condition of + a meta-policy contains more than one predicate, the + predicates are also instances of this PRC. + + + For instance, Suppose that we want to encode a condition + A, which is evaluated as ( B OR C ), where B and C some + other boolean expressions. + In this case, A, B and C are instances of this PRC. + + All instances of this PRC MUST be extended by an instance + of one of the rest PRCs of this group, in order to denote + if this condition should be evaluated based on simpler + conditions, if it is a boolean operand or an other + logical expression." + ::= { conditionClasses 1 } + +conditionEntry OBJECT-TYPE + SYNTAX ConditionEntry + STATUS current + DESCRIPTION + "An instance of the condition Class that defines a + boolean condition" + PIB-INDEX { conditionPrid } + ::= { conditionTable 1 } + +ConditionEntry ::= + SEQUENCE { + conditionPrid InstanceId, + conditionReverse TruthValue + } + +conditionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the condition class." + ::= { conditionEntry 1 } + +conditionReverse OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "if true, the negation of the logical expression + is evaluated, instead." + ::= { conditionEntry 2 } +-- END OF conditionTable + +-- +-- Complex Condition Table +-- +complexConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComplexConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC represents a complex + + condition. It consists of two simplier conditions, + and a logical operator that determines how the two + terms are assosiated to compose the more + complicated condition" + ::= { conditionClasses 2 } + +complexConditionEntry OBJECT-TYPE + SYNTAX ComplexConditionEntry + STATUS current + DESCRIPTION + "An instance of the complexCondition class that breaks a + complex condition into two simpler ones." + EXTENDS { conditionEntry } + + ::= { complexConditionTable 1 } + +ComplexConditionEntry ::= + SEQUENCE { + operator INTEGER, + leftTerm ReferenceId, + rightTerm ReferenceId + } + +operator OBJECT-TYPE + SYNTAX INTEGER { + and (0), + or (1) + } + STATUS current + DESCRIPTION + "The logical operator in the complex condition" + ::= { complexConditionEntry 1 } + +leftTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + DESCRIPTION + "A reference to the first simpler condition." + ::= { complexConditionEntry 2 } + +rightTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + + DESCRIPTION + "A reference to the second simpler condition." + ::= { complexConditionEntry 3 } +-- END OF complexConditionTable + +-- +-- Boolean Condition Expression Table +-- + +booleanConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF BooleanConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and represents a boolean parameter from which the + condition is evaluated." + ::= { metaPolicyCapabilitiesClasses 2 } + +booleanConditionEntry OBJECT-TYPE + SYNTAX BooleanConditionEntry + STATUS current + DESCRIPTION + "An instance of the booleanCondition class that defines + the boolean parameter that gives values to the + corresponding condition." + EXTENDS { conditionEntry } + ::= { booleanConditionTable 1 } + +BooleanConditionEntry ::= + SEQUENCE { + parameterReference ReferenceId + } + +parameterReference OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { parameterEntry } + STATUS current + DESCRIPTION + "A reference to a parameter from where the condition is + evaluated. This condition MUST be of type boolean + (TruthValue)." + ::= { booleanConditionEntry 1 } +-- End of booleanConditionTable + +-- +-- Generic Condition Table +-- +genericConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF GenericConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and assosiates the corresponding condition with a complex + logical expression, from where the condition is + evaluated." + ::= { conditionClasses 3 } + +genericConditionEntry OBJECT-TYPE + SYNTAX GenericConditionEntry + STATUS current + DESCRIPTION + + "An instance of the generalCondition class that defines + the logical expression for the corresponding condition + of the condition class." + PIB-INDEX { xmlDTDID } + ::= { genericConditionTable 1 } + +GenericConditionEntry ::= + SEQUENCE { + xmlDTDID InstanceId, + xmlDTDRef ReferenceId, + xmlCondition XMLString + } + +xmlDTDID OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "unique ID" + ::= { genericConditionEntry 1 } + +xmlDTDRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { xmlDTDEntry } + STATUS current + DESCRIPTION + "A reference to the xmlDTD class that deternies which + of the XML DTDs that this PEP supports is used in + order to encode the expression." + ::= { genericConditionEntry 2 } + +xmlCondition OBJECT-TYPE + SYNTAX XMLString + STATUS current + DESCRIPTION + "The XML-encoded expression." + ::={ genericConditionEntry 3 } +-- End of genericConditionTable + +----------------------------------------------- +----------------------------------------------- + + +-- Actions Group +actionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 4 } + + +-- +-- Actions Table +-- +actionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class stores an action of + a meta-policy." + ::= { actionClasses 1 } + +actionEntry OBJECT-TYPE + SYNTAX ActionEntry + STATUS current + + DESCRIPTION + "An instance of the action class that stores an action + of a meta-policy." + PIB-INDEX { actionPrid } + ::= { actionTable 1 } + +ActionEntry ::= + SEQUENCE { + actionPrid InstanceId, + actionRefTag TagReferenceId, + actionTargetPrid Prid + } + +actionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the action class." + ::= { actionEntry 1 } + +actionRefTag OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { metaPolicyActions } + STATUS current + DESCRIPTION + "An attribute that defines a Tag Group of actions. + All actions with the same tag are grouped as the actions + of a single meta-policy." + ::={ actionEntry 2 } + +actionTargetPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the PRI to be installed/updated. + The PRID must point to a single PRI." + ::={ actionEntry 3 } +-- END OF actionTable + +-- +-- Action Value table +-- +actionValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionValueEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the corresponding + instance of the action class. It provides the BER-encoded +value + that will be installed at the corresponding PRI." + ::= { actionClasses 2 } + + + + +actionValueEntry OBJECT-TYPE + SYNTAX ActionValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides + the value (encoded with BER) that will be installed at + the PRI denoted by the corresponding instance of the + action class." + EXTENDS { actionEntry } + ::= { actionValueTable 1 } + +ActionValueEntry ::= + SEQUENCE { + actionValueEpd BERValue + } + +actionValueEpd OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "This attribute contains the BER-encoded value of the + PRI to be installed/updated." + ::={ actionValueEntry 1 } +-- END OF actionValueTable + +-- +-- Action Parametric Value Table +-- +actionParametricValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionParametricValueEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class that extends the + corresponding instance of the action class. It provides +with the + parametric value that will be installed at the +corresponding PRI." + ::= { actionClasses 3 } + +actionParametricValueEntry OBJECT-TYPE + SYNTAX ActionParametricValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides with + the parametric value that will be installed at the PRI + denoted by the corresponding instance of the action + class." + EXTENDS { actionEntry } + + ::= { actionParametricValueTable 1 } + + +ActionParametricValueEntry ::= + SEQUENCE { + parameterRef ReferenceId + } + +parameterRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { parameterEntry } + STATUS current + DESCRIPTION + "A reference to a the parameter, from where the value + of the installed PRI should be obtained. Whenever the + value of the parameter changes, the installed PRI + MUST be updated." + ::={ actionParametricValueEntry 1 } +-- END OF actionParametricValueTable + +----------------------------------------------- +----------------------------------------------- + + +-- Parameter Group +parameterClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 5 } + + +-- +-- Parameter Table +-- +parameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class defines a parameter + that has been installed on the PEP. This class + MUST be extended by a class that defines how + the value of the parameter will be evaluated." + ::= { parameterClasses 1} + +parameterEntry OBJECT-TYPE + SYNTAX ParameterEntry + STATUS current + DESCRIPTION + "An instance of the parameter class that installs + a parameter into the PEP." + PIB-INDEX { parameterPrid } + ::= { parameterTable 1 } + +ParameterEntry ::= + SEQUENCE { + parameterPrid InstanceId, + parameterName SnmpAdminString, + parameterType INTEGER + + } + +parameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the parameter class." + ::= { parameterEntry 1 } + +parameterName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A string that represents the name of the parameter. + It is reccomented that different parameter have different + names. However, similar parameter may have the same name. + Also, an empty string can be used as a name." + ::= { parameterEntry 2 } + +parameterType OBJECT-TYPE + SYNTAX INTEGER { + integer(2), + bitstring (3), + octetstring (4), + null (5), + objectidentifier (6), + ipaddress (40) + } + STATUS current + DESCRIPTION + "The BER type of the parameter. + The suppoted BER types are: + Type | BER identifier + --------------------|---------------- + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40" + ::= { parameterEntry 3 } +-- END OF parameterTable + +-- +-- MIBPIB Parameter Table +-- +mibPibParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF MibPibParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class extends the parameter class. + Each instance of this class assosiates to the + + corresponding parameter a MIB or PIB variable, from + where the parameter is evaluated" + ::= { parameterClasses 2 } + +mibPibParameterEntry OBJECT-TYPE + SYNTAX MibPibParameterEntry + STATUS current + DESCRIPTION + "An instance of the mibPibParameter class that provides + the identifier of the MIB/PIB variable from where the + corresponding parameter is evaluated." + EXTENDS { parameterEntry } + ::= { mibPibParameterTable 1 } + +MibPibParameterEntry ::= + SEQUENCE { + targetOID OBJECT IDENTIFIER, + evaluationFrequency TimeTicks + } + +targetOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + PIB-ACCESS install + STATUS current + DESCRIPTION + "The object identifier of the MIB/PIB variable. + The MIB/PIB variable MUST exist in the MIB/PIB of the + device. Also, the type of the target variable MUST be + compatible with the type of the corresponding PRI of the + parameter Class." + ::={ mibPibParameterEntry 1 } + +evaluationFrequency OBJECT-TYPE + SYNTAX TimeTicks + STATUS current + DESCRIPTION + "The frequency of updating the parameter in milliseconds" + ::={ mibPibParameterEntry 2 } +-- END of mibPibParameterTable + +-- +-- PDP Parameter Table +-- +pdpParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PdpParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class extends the parameter class. Each instance + of this class contains the value of the corresponding + paramter. This value is send by the PDP and updated + whenever necessary." + ::= { parameterClasses 3 } + + +pdpParameterEntry OBJECT-TYPE + SYNTAX PdpParameterEntry + STATUS current + DESCRIPTION + "An instance of the pdpParameter class that stores the + value, sent by the PDP, for the corresponding parameter." + PIB-INDEX { pdpParameterPrid } + ::= { pdpParameterTable 1 } + +PdpParameterEntry ::= + SEQUENCE { + pdpParameterPrid InstanceId, + lastValue BERValue + } + +lastValue OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "The latest value of the parameter, encoded with BER. + The BER-encoded value must be of the same type as the + corresponding PRI of the parameter class." + ::={ pdpParameterEntry 1 } + +pdpParameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify this parameter." + + ::= { pdpParameterEntry 2 } + +-- END OF pdpParameterTable + + +END diff --git a/pibs/tubs/META-POLICY-PIB-orig b/pibs/tubs/META-POLICY-PIB-orig new file mode 100644 index 0000000..902d749 --- /dev/null +++ b/pibs/tubs/META-POLICY-PIB-orig @@ -0,0 +1,915 @@ +META-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, timeticks, + MODULE-IDENTITY, OBJECT-TYPE, + InstanceId, ReferenceId + FROM COPS-PR-SPPI + TEXTUAL-CONVENTION + + FROM SNMPv2-TC; + +metaPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORY { all } + LAST-UPDATED "200104010000" + ORGANIZATION "IETF" + CONTACT-INFO " Andreas Polyrakis + Dept. of Computer Science, + University of Toronto, + 10 King's College Road, + Toronto, Ontario,M5S 3G4, Canada. + e-mail: apolyr@cs.toronto.edu + Phone: ++1 (416) 978-4837 + Fax: ++1 (416) 978 1931 + + Raouf Boutaba + Dept. of Computer Science, + University of Waterloo, + 200 University Avenue West, + Waterloo, Ontario N2L 3G1, Canada + e-mail: rboutaba@bbcr.uwaterloo.ca + Phone: ++1 (519) 888 4567 ext.4820 + Fax: ++1 (519) 885 1208" + DESCRIPTION + "The meta-policy PIB module. It contains the classes + that are necessary for the provisioning of meta-policy + related information. This module is applicable, + but not mandatory, to all subject-categories" + + ::= { tbd } +-- The root OID for PRCs in the Meta-Policy PIB + + +--- +--- Textual Conventions +--- +BERValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A sequence of octets that encodes a value using BER. + The suppoted BER types are (borrowed by SNMPv2): + Type | BER identifier + --------------------|---------------- + + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40 + COUNTER32 | 41 + GAUGE32 | 42 + TIMETICKS | 43 + OPAQUE | 44 + + + By using this type, the PEP can store values for different + types of parameters in the same class (PRC)." + + SYNTAX OCTET STRING (SIZE (0..16)) + +XMLString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A string that contains a logical expression encoded using + XML. The semantics of the XML tags are defined in special + DTDs, which the PEP declares that supports." + SYNTAX OCTET STRING (SIZE (0..1024)) +--- +--- End of Textual Conventions +--- + +----------------------------------------------- +----------------------------------------------- + + +-- Meta-Policy Capabilities Group +metaPolicyCapabilitiesClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 1 } + + +--- +--- Meta-Policy Capabilities Table +--- +xmlDTDTable OBJECT-TYPE + SYNTAX SEQUENCE OF xmlDTDEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + identifies an XML DTD supported by the PEP for encoding + logical expressions. If this class has no instances, + then the PEP supports only expressions that are formed + with boolean predicates and operators, and in this case + the PDP MUST not attempt to install any XML-encoded + expressions in the generalConditionTable." + ::= { metaPolicyCapabilitiesClasses 1 } + +xmlDTDEntry OBJECT-TYPE + SYNTAX MetaPolicyCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of the xmlDTDTable class that determines an + XML DTD that can be used to encode a logical expression" + INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +XmlDTDEntry ::= + SEQUENCE { + + xmlDTDPrid InstanceId, + xmlDTDURL SnmpAdminString + } + +xmlDTDPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the xmlDTD class." + ::= { xmlDTDEntry 1 } + +xmlDTDURL OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The XML DTD URL. A string that indicates the URL of an + XML DTD that can be used for encoding expressions. + These DTDs can be defined either by standardization + organizations, such as IETF, or be vendor specific. + + When the PDP receives a URL that uniquely identifies + such a DTD, it knows that it may encode expressions + according to this DTD that the PEP will be able to + evaluate." + ::= { xmlDTDEntry 2 } + +--End of xmlDTDTable + +----------------------------------------------- +----------------------------------------------- + +-- Base Meta-Policy Group +metaPolicyClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 2 } + + +--- +--- Meta-Policy Table +--- +metaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + represents a meta-policy. Each meta-policy, apart + from a unique identifier and an optional name, it + constists of a condition and a group of actions." + ::= { metaPolicyClasses 1 } + +metaPolicyEntry OBJECT-TYPE + SYNTAX MetaPolicyEntry + STATUS current + + DESCRIPTION + "An instance of the metaPolicy Class that represents + a meta-policy." + INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +MetaPolicyEntry ::= + SEQUENCE { + metaPolicyPrid InstanceId, + metaPolicyName SnmpAdminString, + metaPolicyCondition ReferenceId, + metaPolicyActions TagId + } + +metaPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicy class." + ::= { metaPolicyEntry 1 } + +metaPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A display string that represents the name of the + meta-policy. It is reccomented that different + meta-policies have different names. However, similar + meta-policies may have the same name. + Also, an empty string can be used as a name." + ::= { metaPolicyEntry 2 } + +metaPolicyCondition OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES contitionTable + STATUS current + DESCRIPTION + "This attribute associates the specific meta-policy with + a condition in the condition Class. The condition MUST + + exist when the meta-policy is installed. The meta-policy + MUST always be assosiated with one condition (which means + that the attribute can never be null/invalid." + ::= { metaPolicyEntry 3 } + +metaPolicyActions OBJECT-TYPE + SYNTAX TagId + PIB-REFERENCES actionsTable + STATUS current + DESCRIPTION + "A tag that maps this instance (meta-policy) to a group + of actions in the actions Class. Although the tag should + map to at least one action, there might be cases where a + + meta-policy is associated to no actions. However such + cases should be avoided and only be temporal." + ::= { metaPolicyEntry 4 } +--End of metaPolicyTable + +-- +-- Meta-Policy Status Table +-- +metaPolicyStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyStatusEntry + PIB-ACCESS REPORT-ONLY + STATUS current + DESCRIPTION + "This class augments the metaPolicy class. + Each instance of this class defines a PRC that is used + in order to report to the PDP the status of the + meta-policies. + + Also, information form this table can be used as a + parameter to another meta-policy, as an alternative + way to ensure that two priorities cannot be + activated at the same time." + ::= { metaPolicyClasses 2 } + +metaPolicyStatusEntry OBJECT-TYPE + SYNTAX MetaPolicyStatusEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyStatus class that reports + the status of the corresponding meta-policy in the + metaPolicy class." + AUGMENTS { metaPolicyEntry } + ::= { metaPolicyStatusTable 1 } + +metaPolicyStatusEntry ::= + SEQUENCE { + metaPolicyActive TruthValue, + metaPolicySuppressed TruthValue + } + +metaPolicyActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "True while the meta-policy is active" + ::= { metaPolicyStatusEntry 1 } + +metaPolicySuppress OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If this meta-policy is prevented from being active by + an other meta-policy (but its conditions are met), this + attribute is set to true. + + + If this meta-policy prevents another meta-policy from + being active, then this attribute is true. + + In other words: + Active | Suppr.| + -------------------------------- + true | true | meta-policy active, + | it suppresses another one + true | false | meta-policy active, + | does not suppress another one + false | true | meta-policy inactive + | because it is suppressed by another one + false | false | meta-policy inactive because + | the conditions are not met + " + ::= { metaPolicyStatusEntry 2 } +--End of metaPolicyStatusTable + + +--- +--- Meta-Policy Priority Table +--- +metaPolicyPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyPriorityEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This table reports conflicting meta-policies. + When a meta-policy needs to be activated, the PEP + MUST check if it is conflicting with another meta-policy, + which is already active or needs to be activated at the + same time. If so, the one that is referenced in the + higherPriority attribute is activated and the other one + is deactivated or remains deactivated. Similarly, when a + meta-policy is deactivated, the PEP must check if a + lower-priority meta-policy must now be activated." + ::= { metaPolicyClasses 3 } + +metaPolicyPriorityEntry OBJECT-TYPE + SYNTAX MetaPolicyPriorityEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyPriority Class that + identifies the relative priority between two + meta-policies." + INDEX { metaPolicyPrid } + ::= { metaPolicyPriorityTable 1 } + +MetaPolicyPriorityEntry ::= + SEQUENCE { + metaPolicyPriorityPrid InstanceId, + higherPriority ReferenceId, + lowerPriority ReferenceId, + + } + +metaPolicyPriorityPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicyPriority class." + ::= { metaPolicyPriorityEntry 1 } + +higherPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES metaPolicyTable + STATUS current + DESCRIPTION + "This attribute references to the meta-policy that + has higher priority than the one referenced by the + lowerPriority attribute" + ::= { metaPolicyPriorityEntry 2 } + +lowerPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES metaPolicyTable + STATUS current + DESCRIPTION + + "This attribute references to the meta-policy that + has lower priority than the one referenced by the + higherPriority attribute" + ::= { metaPolicyPriorityEntry 3 } + +--End of metaPolicyPriorityTable +----------------------------------------------- +---------------------------------------------- + + +-- Condition Group +conditionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 3 } + + +-- +-- Condition Table +-- +conditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF conditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this PRC represents a boolean + expression. The conditionss of the meta-policies are + instances of this class. However, if the condition of + a meta-policy contains more than one predicate, the + predicates are also instances of this PRC. + + + For instance, Suppose that we want to encode a condition + A, which is evaluated as ( B OR C ), where B and C some + other boolean expressions. + In this case, A, B and C are instances of this PRC. + + All instances of this PRC MUST be extended by an instance + of one of the rest PRCs of this group, in order to denote + if this condition should be evaluated based on simpler + conditions, if it is a boolean operand or an other + logical expression." + ::= { conditionClasses 1 } + +conditionEntry OBJECT-TYPE + SYNTAX ConditionEntry + STATUS current + DESCRIPTION + "An instance of the condition Class that defines a + boolean condition" + INDEX { conditionIndex } + ::= { conditionTable 1 } + +ConditionEntry ::= + SEQUENCE { + conditionPrid InstanceId, + conditionReverse Truevalue + } + +conditionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the condition class." + ::= { conditionEntry 1 } + +conditionReverse OBJECT-TYPE + SYNTAX Truevalue + STATUS current + DESCRIPTION + "if true, the negation of the logical expression + is evaluated, instead." + ::= { conditionEntry 2 } +-- END OF conditionTable + +-- +-- Complex Condition Table +-- +complexConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF complexConditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this PRC represents a complex + + condition. It consists of two simplier conditions, + and a logical operator that determines how the two + terms are assosiated to compose the more + complicated condition" + ::= { conditionClasses 2 } + +complexConditionEntry OBJECT-TYPE + SYNTAX ComplexConditionEntry + STATUS current + DESCRIPTION + "An instance of the complexCondition class that breaks a + complex condition into two simpler ones." + EXTENDS { conditionTable } + + ::= { complexConditionTable } + +ComplexConditionEntry ::= + SEQUENCE { + operator Unsigned32, + leftTerm ReferenceId, + rightTerm ReferenceId + } + +operator OBJECT-TYPE + SYNTAX Unsigned32 { + AND (0), + OR (1) + } + STATUS current + DESCRIPTION + "The logical operator in the complex condition" + ::= { complexConditionEntry 1 } + +leftTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES conditionTable + STATUS current + DESCRIPTION + "A reference to the first simpler condition." + ::= { complexConditionEntry 2 } + +rightTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES conditionTable + STATUS current + + DESCRIPTION + "A reference to the second simpler condition." + ::= { complexConditionEntry 3 } +-- END OF complexConditionTable + +-- +-- Boolean Condition Expression Table +-- + +booleanConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF booleanConditionEntry + PIB-ACCESS INSTALL + STATUS mandatory + DESCRIPTION + "Each instance of this class extends the condition class + and represents a boolean parameter from which the + condition is evaluated." + ::= { metaPolicyPibClasses 2 } + +booleanConditionEntry OBJECT-TYPE + SYNTAX BooleanConditionEntry + STATUS mandatory + DESCRIPTION + "An instance of the booleanCondition class that defines + the boolean parameter that gives values to the + corresponding condition." + EXTENDS { conditionTable } + ::= { booleanConditionTable 1 } + +BooleanConditionEntry ::= + SEQUENCE { + parameterReference ReferenceId + } + +parameterReference OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES parameterTable + STATUS current + DESCRIPTION + "A reference to a parameter from where the condition is + evaluated. This condition MUST be of type boolean + (Truthvalue)." + ::= { booleanConditionEntry 1 } +-- End of booleanConditionTable + +-- +-- Generic Condition Table +-- +genericConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF genericConditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and assosiates the corresponding condition with a complex + logical expression, from where the condition is + evaluated." + ::= { conditionClasses 2 } + +genericConditionEntry OBJECT-TYPE + SYNTAX GenericConditionEntry + STATUS current + DESCRIPTION + + "An instance of the generalCondition class that defines + the logical expression for the corresponding condition + of the condition class." + EXTENDS { generalConditionTable } + ::= { conditionNumericalExpressionTable } + +GenericConditionEntry ::= + SEQUENCE { + xmlDTDRef ReferenceId, + xmlCondition XMLString + } + +xmlDTDRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES xmlDTDTable + STATUS current + DESCRIPTION + "A reference to the xmlDTD class that deternies which + of the XML DTDs that this PEP supports is used in + order to encode the expression." + ::= { genericConditionEntry 1 } + +xmlCondition OBJECT-TYPE + SYNTAX XMLString + STATUS mandatory + DESCRIPTION + "The XML-encoded expression." + ::={ genericConditionEntry 2 } +-- End of genericConditionTable + +----------------------------------------------- +----------------------------------------------- + + +-- Actions Group +actionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 4 } + + +-- +-- Actions Table +-- +actionTable OBJECT-TYPE + SYNTAX SEQUENCE of actionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class stores an action of + a meta-policy." + ::= { actionClasses 1 } + +actionEntry OBJECT-TYPE + SYNTAX ActionEntry + STATUS current + + DESCRIPTION + "An instance of the action class that stores an action + of a meta-policy." + INDEX { actionPrid } + ::= { actionTable 1 } + +ActionEntry ::= + SEQUENCE { + actionPrid InstanceId, + actionRefTag TagReferenceId, + actionTargetPrid Prid + } + +actionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the action class." + ::= { actionEntry 1 } + +actionRefTag OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG metaPolicyActions + STATUS current + DESCRIPTION + "An attribute that defines a Tag Group of actions. + All actions with the same tag are grouped as the actions + of a single meta-policy." + ::={ actionEntry 2 } + +actionTargetPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the PRI to be installed/updated. + The PRID must point to a single PRI." + ::={ actionEntry 3 } +-- END OF actionsTable + +-- +-- Action Value table +-- +actionValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF actionValueEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class extends the corresponding + instance of the action class. It provides the BER-encoded +value + that will be installed at the corresponding PRI." + ::= { actionClasses 2 } + + + + +actionValueEntry OBJECT-TYPE + SYNTAX ActionsValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides + the value (encoded with BER) that will be installed at + the PRI denoted by the corresponding instance of the + action class." + EXTENDS { actionEntry } + ::= { actionValueTable 1 } + +ActionValueEntry ::= + SEQUENCE { + ActionValueEpd BERValue + } + +actionValueEpd OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "This attribute contains the BER-encoded value of the + PRI to be installed/updated." + ::={ actionValueEntry 1 } +-- END OF actionValueTable + +-- +-- Action Parametric Value Table +-- +actionParametricValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF actionParametricValueEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class that extends the + corresponding instance of the action class. It provides +with the + parametric value that will be installed at the +corresponding PRI." + ::= { actionClasses 3 } + +actionParametricValueEntry OBJECT-TYPE + SYNTAX ActionParametricValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides with + the parametric value that will be installed at the PRI + denoted by the corresponding instance of the action + class." + EXTENDS { actionEntry } + + ::= { actionParametricValueTable 1 } + + +ActionParametricValueEntry ::= + SEQUENCE { + ParameterRef ReferenceId + } + +ParameterRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES parameterTable + STATUS current + DESCRIPTION + "A reference to a the parameter, from where the value + of the installed PRI should be obtained. Whenever the + value of the parameter changes, the installed PRI + MUST be updated." + ::={ actionParametricValueEntry 1 } +-- END OF actionParametricValueTable + +----------------------------------------------- +----------------------------------------------- + + +-- Parameter Group +parameterClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 5 } + + +- +- Parameter Table +- +parameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF parameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class defines a parameter + that has been installed on the PEP. This class + MUST be extended by a class that defines how + the value of the parameter will be evaluated." + ::= { parameterClasses 1} + +parameterEntry OBJECT-TYPE + SYNTAX ParameterEntry + STATUS current + DESCRIPTION + "An instance of the parameter class that installs + a parameter into the PEP." + INDEX { parameterPrid } + ::= { parameterTable 1 } + +ParameterEntry ::= + SEQUENCE { + parameterPrid InstanceId, + parameterName SNMPAdminString, + parameterType Unsigned32 + + } + +parameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the parameter class." + ::= { parameterEntry 1 } + +parameterNameOBJECT-TYPE + SYNTAX SNMPAdminString + STATUS current + DESCRIPTION + "A string that represents the name of the parameter. + It is reccomented that different parameter have different + names. However, similar parameter may have the same name. + Also, an empty string can be used as a name." + ::= { parameterEntry 2 } + +parameterType + SYNTAX Unsigned32 { + INTEGER (02) + BIT STRING (03) + OCTET STRING (04) + NULL (05) + OBJECT IDENTIFIER (06) + IP ADDRESS (40) + } + STATUS current + DESCRIPTION + "The BER type of the parameter. + The suppoted BER types are: + Type | BER identifier + --------------------|---------------- + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40" + ::= { parameterEntry 3 } +-- END OF parameterTable + +-- +-- MIBPIB Parameter Table +-- +mibPibParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF mibPibParameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This class extends the parameter class. + Each instance of this class assosiates to the + + corresponding parameter a MIB or PIB variable, from + where the parameter is evaluated" + ::= { parameterClasses 2 } + +mibPibParameterEntry OBJECT-TYPE + SYNTAX MibPibParameterEntry + STATUS current + DESCRIPTION + "An instance of the mibPibParameter class that provides + the identifier of the MIB/PIB variable from where the + corresponding parameter is evaluated." + EXTENDS { parameterEntry } + ::= { mibPibParameterTable 1 } + +MibPibParameterEntry ::= + SEQUENCE { + targetOID OBJECT-IDENTIFIER, + EvaluationFrequency timeticks + } + +targetOID OBJECT-TYPE + SYNTAX OBJECT-IDENTIFIER + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "The object identifier of the MIB/PIB variable. + The MIB/PIB variable MUST exist in the MIB/PIB of the + device. Also, the type of the target variable MUST be + compatible with the type of the corresponding PRI of the + parameter Class." + ::={ mibPibParameterEntry 1 } + +EvaluationFrequency OBJECT-TYPE + SYNTAX timeticks + STATUS current + DESCRIPTION + "The frequency of updating the parameter in milliseconds" + ::={ mibPibParameterEntry 2 } +-- END of mibPibParameterTable + +-- +-- PDP Parameter Table +-- +pdpParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF pdpParameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This class extends the parameter class. Each instance + of this class contains the value of the corresponding + paramter. This value is send by the PDP and updated + whenever necessary." + ::= { parameterClasses 3 } + + +pdpParameterEntry OBJECT-TYPE + SYNTAX PdpParameterEntry + STATUS current + DESCRIPTION + "An instance of the pdpParameter class that stores the + value, sent by the PDP, for the corresponding parameter." + INDEX { parameterIndex } + ::= { pdpParametersTable 1 } + +PdpParameterEntry ::= + SEQUENCE { + lastValue BERValue + } + +lastValue OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "The latest value of the parameter, encoded with BER. + The BER-encoded value must be of the same type as the + corresponding PRI of the parameter class." + ::={ pdpParameterEntry 1 } +-- END OF pdpParameterTable + + +END diff --git a/pibs/tubs/MPLS-SETUP-PIB b/pibs/tubs/MPLS-SETUP-PIB new file mode 100644 index 0000000..7551b13 --- /dev/null +++ b/pibs/tubs/MPLS-SETUP-PIB @@ -0,0 +1,1300 @@ +MPLS-SETUP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP, Unsigned32 + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressIPv4, InetAddressIPv6 + FROM INET-ADDRESS-MIB; + +mplsSetupPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- tbd; MPLS Setup Client type + LAST-UPDATED "200107131000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Ravi Sahita + Intel Corporation + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + Email: ravi.sahita@intel.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + + that are used to setup MPLS LSPs on MPLS Routers." + ::= { ibrpib 20 } + + +-- +-- Forward Equivalence Class (FEC) Classes +-- + +mplsFecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 1 } + +-- +-- IPv4 Host Address FEC Table +-- + +mplsFecIPv4HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 FEC Entrees." + + ::= { mplsFecClasses 1 } + +mplsFecIPv4HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv4HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS IPv4 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv4HostAddrPrid } + + ::= { mplsFecIPv4HostAddrTable 1 } + +MplsFecIPv4HostAddrEntry ::= SEQUENCE { + mplsFecIPv4HostAddrPrid InstanceId, + mplsFecIPv4HostAddrIpAddr InetAddressIPv4 } + +mplsFecIPv4HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4HostAddrEntry class." + + ::= { mplsFecIPv4HostAddrEntry 1 } + +mplsFecIPv4HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Host Address in a FEC." + + + ::= { mplsFecIPv4HostAddrEntry 2 } + + +-- +-- IPv6 Host Address FEC Table +-- + +mplsFecIPv6HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 FEC entrees." + + ::= { mplsFecClasses 2 } + +mplsFecIPv6HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv6HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes an IPv6 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv6HostAddrPrid } + + ::= { mplsFecIPv6HostAddrTable 1 } + +MplsFecIPv6HostAddrEntry ::= SEQUENCE { + mplsFecIPv6HostAddrPrid InstanceId, + mplsFecIPv6HostAddrIpAddr InetAddressIPv6 } + +mplsFecIPv6HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6HostAddrEntry class." + + ::= { mplsFecIPv6HostAddrEntry 1 } + +mplsFecIPv6HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Host Address in a FEC." + + ::= { mplsFecIPv6HostAddrEntry 2 } + + +-- +-- IPv4 Prefix FEC Table +-- + + +mplsFecIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix FEC entrees." + + ::= { mplsFecClasses 3 } + +mplsFecIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv4 Prefix FEC." + + PIB-INDEX { mplsFecIPv4PrefixPrid } + + ::= { mplsFecIPv4PrefixTable 1 } + +MplsFecIPv4PrefixEntry ::= SEQUENCE { + mplsFecIPv4PrefixPrid InstanceId, + mplsFecIPv4PrefixLength Unsigned32, + mplsFecIPv4PrefixIpPrefix InetAddressIPv4 } + +mplsFecIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4PrefixEntry class." + + ::= { mplsFecIPv4PrefixEntry 1 } + +mplsFecIPv4PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 2 } + +mplsFecIPv4PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 3 } + + +-- +-- IPv6 Prefix FEC Table +-- + + +mplsFecIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 Prefix FEC entrees." + + ::= { mplsFecClasses 4 } + +mplsFecIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv6 Prefix FEC." + + PIB-INDEX { mplsFecIPv6PrefixPrid } + + ::= { mplsFecIPv6PrefixTable 1 } + +MplsFecIPv6PrefixEntry ::= SEQUENCE { + mplsFecIPv6PrefixPrid InstanceId, + mplsFecIPv6PrefixLength Unsigned32, + mplsFecIPv6PrefixIpPrefix InetAddressIPv6 } + +mplsFecIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6PrefixEntry class." + + ::= { mplsFecIPv6PrefixEntry 1 } + +mplsFecIPv6PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 2 } + +mplsFecIPv6PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number FEC Table + +-- + +mplsFecASTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecASEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number FEC + entrees." + + ::= { mplsFecClasses 5 } + +mplsFecASEntry OBJECT-TYPE + SYNTAX MplsFecASEntry + STATUS current + DESCRIPTION + "An instance of this class describes an Autonomous System + Number FEC. " + + PIB-INDEX { mplsFecASPrid } + + ::= { mplsFecASTable 1 } + +MplsFecASEntry ::= SEQUENCE { + mplsFecASPrid InstanceId, + mplsFecASNumber Unsigned32 } + +mplsFecASPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecASEntry class." + + ::= { mplsFecASEntry 1 } + +mplsFecASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in a FEC." + + ::= { mplsFecASEntry 2 } + + +-- +-- Label Request Classes +-- + +mplsLabReqClasses OBJECT IDENTIFIER ::= { mplsSetupPib 2 } + +-- +-- Generic Label Request Table + +-- + +mplsLabReqGenericTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqGenericEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Generic Label Request Object + entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqGenericEntry OBJECT-TYPE + SYNTAX MplsLabReqGenericEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Generic Label + Request Object. " + + PIB-INDEX { mplsLabReqGenericPrid } + + ::= { mplsLabReqGenericTable 1 } + +MplsLabReqGenericEntry ::= SEQUENCE { + mplsLabReqGenericPrid InstanceId, + mplsLabReqGenericL3Pid Unsigned32 } + +mplsLabReqGenericPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqGenericEntry class." + + ::= { mplsLabReqGenericEntry 1 } + +mplsLabReqGenericL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Generic Label Request + Object." + + ::= { mplsLabReqGenericEntry 2 } + + +-- +-- ATM Label Request Table +-- + +mplsLabReqATMTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqATMEntry + PIB-ACCESS install + + STATUS current + DESCRIPTION + "This table consists of MPLS ATM Label Request Object + entrees." + + ::= { mplsLabReqClasses 2 } + +mplsLabReqATMEntry OBJECT-TYPE + SYNTAX MplsLabReqATMEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS ATM Label + Request Object. " + + PIB-INDEX { mplsLabReqATMPrid } + + ::= { mplsLabReqATMTable 1 } + +MplsLabReqATMEntry ::= SEQUENCE { + mplsLabReqATMPrid InstanceId, + mplsLabReqATML3Pid Unsigned32, + mplsLabReqATMMbit Unsigned32, + mplsLabReqATMMinVpi Unsigned32, + mplsLabReqATMMaxVpi Unsigned32, + mplsLabReqATMMinVci Unsigned32, + mplsLabReqATMMaxVci Unsigned32 } + +mplsLabReqATMPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqATMEntry class." + + ::= { mplsLabReqATMEntry 1 } + +mplsLabReqATML3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS ATM Label Request + Object." + + ::= { mplsLabReqATMEntry 2 } + +mplsLabReqATMMbit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Merging Capable Bit in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 3 } + + +mplsLabReqATMMinVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 4 } + +mplsLabReqATMMaxVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 5 } + +mplsLabReqATMMinVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 6 } + +mplsLabReqATMMaxVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 7 } + + +-- +-- Frame Relay Label Request Table +-- + +mplsLabReqFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqFREntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Frame Relay Label Request + Object entrees." + + ::= { mplsLabReqClasses 3 } + +mplsLabReqFREntry OBJECT-TYPE + SYNTAX MplsLabReqFREntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Frame Relay + Label Request Object. " + + + PIB-INDEX { mplsLabReqFRPrid } + + ::= { mplsLabReqFRTable 1 } + +MplsLabReqFREntry ::= SEQUENCE { + mplsLabReqFRPrid InstanceId, + mplsLabReqFRL3Pid Unsigned32, + mplsLabReqFRDlciLen Unsigned32, + mplsLabReqFRMinDlci Unsigned32, + mplsLabReqFRMaxDlci Unsigned32} + +mplsLabReqFRPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqFREntry class." + + ::= { mplsLabReqFREntry 1 } + +mplsLabReqFRL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 2 } + +mplsLabReqFRDlciLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of DLCI in MPLS Frame Relay Label Request Object." + + ::= { mplsLabReqFREntry 3 } + +mplsLabReqFRMinDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value DLCI in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 4 } + +mplsLabReqFRMaxDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value DLCI in MPLS Frame Relay Label Request + Object." + + + ::= { mplsLabReqFREntry 5 } + + +-- +-- Flow (Traffic) Specification Classes +-- + +mplsFlowSpecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 3 } + +-- +-- CRLDP Flow Spec Table +-- + +mplsFlowSpecCRLDPTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCRLDPEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of CR-LDP Traffic (Flow) Specification + entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsFlowSpecCRLDPEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCRLDPEntry + STATUS current + DESCRIPTION + "An instance of this class describes a CR-LDP Flow + Specification. " + + PIB-INDEX { mplsFlowSpecCRLDPPrid } + + ::= { mplsFlowSpecCRLDPTable 1 } + +MplsFlowSpecCRLDPEntry ::= SEQUENCE { + mplsFlowSpecCRLDPPrid InstanceId, + mplsFlowSpecCRLDPPDR Unsigned32, + mplsFlowSpecCRLDPPBS Unsigned32, + mplsFlowSpecCRLDPCDR Unsigned32, + mplsFlowSpecCRLDPCBS Unsigned32, + mplsFlowSpecCRLDPEBS Unsigned32, + mplsFlowSpecCRLDPWeight Unsigned32 } + +mplsFlowSpecCRLDPPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCRLDPEntry class." + + ::= { mplsFlowSpecCRLDPEntry 1 } + + +mplsFlowSpecCRLDPPDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 2 } + +mplsFlowSpecCRLDPPBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 3 } + +mplsFlowSpecCRLDPCDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 4 } + +mplsFlowSpecCRLDPCBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Burst Size in CR-LDP Flow Specification." + + + ::= { mplsFlowSpecCRLDPEntry 5 } + +mplsFlowSpecCRLDPEBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Excess Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 6 } + +mplsFlowSpecCRLDPWeight OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Weight parameter in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 7 } + + +-- +-- RSVP Controlled Load Service Flow Spec Table +-- + + +mplsFlowSpecCLSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCLSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Controlled Load Service Flow Specification + entrees." + + ::= { mplsFlowSpecClasses 2 } + +mplsFlowSpecCLSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCLSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + Controlled Load Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecCLSPrid } + + ::= { mplsFlowSpecCLSTable 1 } + +MplsFlowSpecCLSEntry ::= SEQUENCE { + mplsFlowSpecCLSPrid InstanceId, + mplsFlowSpecCLSTokenRate Unsigned32, + mplsFlowSpecCLSBucketSize Unsigned32, + mplsFlowSpecCLSPeakRate Unsigned32, + mplsFlowSpecCLSMinPoliced Unsigned32, + mplsFlowSpecCLSMaxPktSize Unsigned32 } + +mplsFlowSpecCLSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCLSEntry class." + + ::= { mplsFlowSpecCLSEntry 1 } + +mplsFlowSpecCLSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 2 } + +mplsFlowSpecCLSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + + "Token Bucket Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 3 } + +mplsFlowSpecCLSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 4 } + +mplsFlowSpecCLSMinPoliced OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Controlled + Load Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 5 } + +mplsFlowSpecCLSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 6 } + + + +-- +-- RSVP Guaranteed Service Flow Spec Table +-- + +mplsFlowSpecGSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecGSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Guaranteed Service Flow Specification entrees." + + ::= { mplsFlowSpecClasses 3 } + +mplsFlowSpecGSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecGSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + + Guaranteed Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecGSPrid } + + ::= { mplsFlowSpecGSTable 1 } + +MplsFlowSpecGSEntry ::= SEQUENCE { + mplsFlowSpecGSPrid InstanceId, + mplsFlowSpecGSTokenRate Unsigned32, + mplsFlowSpecGSBucketSize Unsigned32, + mplsFlowSpecGSPeakRate Unsigned32, + mplsFlowSpecGSMinPoliced Unsigned32, + mplsFlowSpecGSMaxPktSize Unsigned32, + mplsFlowSpecGSRspecRate Unsigned32, + mplsFlowSpecGSSlackTerm Unsigned32 } + +mplsFlowSpecGSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecGSEntry class." + + ::= { mplsFlowSpecGSEntry 1 } + +mplsFlowSpecGSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 2 } + +mplsFlowSpecGSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Bucket Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 3 } + +mplsFlowSpecGSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 4 } + +mplsFlowSpecGSMinPoliced OBJECT-TYPE + + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 5 } + +mplsFlowSpecGSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 6 } + +mplsFlowSpecGSRspecRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Required Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 7 } + +mplsFlowSpecGSSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Slack Term (Delay) in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 8 } + + +-- +-- Explicit Route Object (ERO) Classes +-- + +mplsEroClasses OBJECT IDENTIFIER ::= { mplsSetupPib 4 } + +-- +-- IPv4 Address Prefix Subobject Table +-- + +mplsEroIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix ERO Subobject + Entrees." + + + ::= { mplsEroClasses 1 } + +mplsEroIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv4 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv4PrefixPrid } + + ::= { mplsEroIPv4PrefixTable 1 } + +MplsEroIPv4PrefixEntry ::= SEQUENCE { + mplsEroIPv4PrefixPrid InstanceId, + mplsEroIPv4PrefixLen Unsigned32, + mplsEroIPv4PrefixIPv4Addr InetAddressIPv4 } + +mplsEroIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv4PrefixEntry class." + + ::= { mplsEroIPv4PrefixEntry 1 } + +mplsEroIPv4PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 2 } + +mplsEroIPv4PrefixIPv4Addr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 3 } + + +-- +-- IPv6 Address Prefix Subobject Table +-- + +mplsEroIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv6PrefixEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table consists of MPLS IPv6 Prefix ERO Subobject + Entrees." + + ::= { mplsEroClasses 2 } + +mplsEroIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv6 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv6PrefixPrid } + + ::= { mplsEroIPv6PrefixTable 1 } + +MplsEroIPv6PrefixEntry ::= SEQUENCE { + mplsEroIPv6PrefixPrid InstanceId, + mplsEroIPv6PrefixLen Unsigned32, + mplsEroIPv6PrefixIPv6Addr InetAddressIPv6 } + +mplsEroIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv6PrefixEntry class." + + ::= { mplsEroIPv6PrefixEntry 1 } + +mplsEroIPv6PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 2 } + +mplsEroIPv6PrefixIPv6Addr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number Subobject Table +-- + +mplsEroASNumberTable OBJECT-TYPE + + SYNTAX SEQUENCE OF MplsEroASNumberEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number ERO + Subobject Entrees." + + ::= { mplsEroClasses 3 } + +mplsEroASNumberEntry OBJECT-TYPE + SYNTAX MplsEroASNumberEntry + STATUS current + DESCRIPTION + "An instance of this class describes Autonomous System + Number ERO Subobject. " + + PIB-INDEX { mplsEroASNumberPrid } + + ::= { mplsEroASNumberTable 1 } + +MplsEroASNumberEntry ::= SEQUENCE { + mplsEroASNumberPrid InstanceId, + mplsEroASNumberASNumber Unsigned32} + +mplsEroASNumberPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroASNumberEntry class." + + ::= { mplsEroASNumberEntry 1 } + +mplsEroASNumberASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in Autonomous System Number + Subobject." + + ::= { mplsEroASNumberEntry 2 } + +-- +-- ERO Table +-- + +mplsEroTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS ERO Subobject Entrees." + + + ::= { mplsEroClasses 4 } + +mplsEroEntry OBJECT-TYPE + SYNTAX MplsEroEntry + STATUS current + DESCRIPTION + "An instance of this class describes ERO Subobject." + + PIB-INDEX { mplsEroPrid } + + ::= { mplsEroTable 1 } + +MplsEroEntry ::= SEQUENCE { + mplsEroPrid InstanceId, + mplsEroLoose Unsigned32, + mplsEroSubObject Prid } + +mplsEroPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroEntry class." + + ::= { mplsEroEntry 1 } + +mplsEroLoose OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Loose Bit in ERO Subobject." + + ::= { mplsEroEntry 2 } + +mplsEroSubObject OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of ERO subobject. It + could be an instance of mplsEroIpv4PrefixEntry, + mplsEroIpv6PrefixEntry or mplsEroASNumberEntry." + + ::= { mplsEroEntry 3 } + + +-- +-- Ero Group Table +-- + +mplsEroGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroGroupEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table defines ERO Subobject groups. Each group then is + used in an LSP definition. Grouping is done using a TagId + and order of Subobject in a group is provided by using a + precedence number." + + ::= { mplsEroClasses 5 } + +mplsEroGroupEntry OBJECT-TYPE + SYNTAX MplsEroGroupEntry + STATUS current + DESCRIPTION + "An instance of ERO Subobject group." + + PIB-INDEX { mplsEroGroupPrid } + + ::= { mplsEroGroupTable 1 } + +MplsEroGroupEntry ::= SEQUENCE { + mplsEroGroupPrid InstanceId, + mplsEroGroupId TagId, + mplsEroGroupIdPrecedence Unsigned32, + mplsEroGroupEroId ReferenceId } + +mplsEroGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroGroupEntry class." + + ::= { mplsEroGroupEntry 1 } + +mplsEroGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Tag Id (number) used to group multiple entries in this + table." + + ::= { mplsEroGroupEntry 2 } + +mplsEroGroupIdPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is used to provide ordering for entries with the same + Tag Id." + + ::= { mplsEroGroupEntry 3 } + +mplsEroGroupEroId OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { mplsEroEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of ERO Subobject. The ERO Subobject + with the same Id must be present." + + ::= { mplsEroGroupEntry 4 } + + +-- +-- Preemption Classes +-- + +mplsPreemptionClasses OBJECT IDENTIFIER ::= { mplsSetupPib 5 } + +-- +-- Preemption Table +-- + +mplsPreemptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsPreemptionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of LSP Preemption Entrees." + + ::= { mplsFlowSpecClasses 4 } + +mplsPreemptionEntry OBJECT-TYPE + SYNTAX MplsPreemptionEntry + STATUS current + DESCRIPTION + "An instance of this class describes a LSP Preemption + object. " + + PIB-INDEX { mplsPreemptionPrid } + + ::= { mplsPreemptionTable 1 } + +MplsPreemptionEntry ::= SEQUENCE { + mplsPreemptionPrid InstanceId, + mplsPreemptionSetupPrio Unsigned32, + mplsPreemptionHoldPrio Unsigned32 } + +mplsPreemptionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsPreemptionEntry class." + + ::= { mplsPreemptionEntry 1 } + + +mplsPreemptionSetupPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Setup Priority." + + ::= { mplsPreemptionEntry 2 } + +mplsPreemptionHoldPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Holding Priority." + + ::= { mplsPreemptionEntry 3 } + + + +-- +-- LSP Setup Classes +-- + +mplsLspClasses OBJECT IDENTIFIER ::= { mplsSetupPib 6 } + + +-- +-- LSP Table +-- + +mplsLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLspEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS LSP Entrees. Entries in this + table essentially point to instances of other PRCs such as + FEC, Label Request, ERO, Flow Spec and Preemption to form + complete LSPs." + + ::= { mplsLspClasses 1 } + +mplsLspEntry OBJECT-TYPE + SYNTAX MplsLspEntry + STATUS current + DESCRIPTION + "An instance of MPLS LSP. " + + PIB-INDEX { mplsLspPrid } + + ::= { mplsLspTable 1 } + +MplsLspEntry ::= SEQUENCE { + mplsLspPrid InstanceId, + + mplsLspFec Prid, + mplsLspLabReq Prid, + mplsLspFlowSpec Prid, + mplsLspPreemption ReferenceId, + mplsLspEroList TagReferenceId } + +mplsLspPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLspEntry class." + + ::= { mplsLspEntry 1 } + +mplsLspFec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FEC. It could be + an instance of mplsFecIPv4HostAddrEntry, + mplsFecIPv6HostAddrEntry, mplsFecIPv4PrefixEntry, + mplsFecIPv6PrefixEntry, mplsFecASEntry." + + ::= { mplsLspEntry 2 } + +mplsLspLabReq OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of Label Request + Object. It could be an instance of mplsLabReqGenericEntry, + mplsLabReqATMEntry, mplsLabReqFREntry." + + ::= { mplsLspEntry 3 } + +mplsLspFlowSpec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FlowSpec. It + could be an instance of mplsFlowSpecCRLDPEntry, + mplsFlowSpecCLSEntry, mplsFlowSpecGSEntry." + + ::= { mplsLspEntry 4 } + +mplsLspPreemption OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { mplsPreemptionEntry } + STATUS current + DESCRIPTION + "This points to an instance of mplsPreemptionEntry." + + + ::= { mplsLspEntry 5 } + +mplsLspEroList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { mplsEroGroupId } + STATUS current + DESCRIPTION + "This references a Tag Id attribute in mplsEroGroup table. + All the entries in mplsEroGroup table that have this Tag Id + form the ERO List that is used for this LSP entry." + + ::= { mplsLspEntry 6 } + +END diff --git a/pibs/tubs/MPLS-SETUP-PIB-orig b/pibs/tubs/MPLS-SETUP-PIB-orig new file mode 100644 index 0000000..e32d994 --- /dev/null +++ b/pibs/tubs/MPLS-SETUP-PIB-orig @@ -0,0 +1,1299 @@ +MPLS-SETUP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReference + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressIPv4, InetAddressIPv6 + FROM INET-ADDRESS-MIB + +mplsSetupPib MODULE-IDENTITY + SUBJECT-CATEGORIES SUBJECT-CATEGORY { tbd “ MPLS Setup Client +Type } + LAST-UPDATED "200107131000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Ravi Sahita + Intel Corporation + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + Email: ravi.sahita@intel.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + + that are used to setup MPLS LSPs on MPLS Routers." + ::= { tbd } + + +-- +-- Forward Equivalence Class (FEC) Classes +-- + +mplsFecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 1 } + +-- +-- IPv4 Host Address FEC Table +-- + +mplsFecIPv4HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 FEC Entrees." + + ::= { mplsFecClasses 1 } + +mplsFecIPv4HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv4HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS IPv4 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv4HostAddrPrid } + + ::= { mplsFecIPv4HostAddrTable 1 } + +MplsFecIPv4HostAddrEntry ::= SEQUENCE { + mplsFecIPv4HostAddrPrid InstanceId, + mplsFecIPv4HostAddrIpAddr InetAddressIPv4 } + +mplsFecIPv4HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4HostAddrEntry class." + + ::= { mplsFecIPv4HostAddrEntry 1 } + +mplsFecIPv4HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Host Address in a FEC." + + + ::= { mplsFecIPv4HostAddrEntry 2 } + + +-- +-- IPv6 Host Address FEC Table +-- + +mplsFecIPv6HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 FEC entrees." + + ::= { mplsFecClasses 2 } + +mplsFecIPv6HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv6HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes an IPv6 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv6HostAddrPrid } + + ::= { mplsFecIPv6HostAddrTable 1 } + +MplsFecIPv6HostAddrEntry ::= SEQUENCE { + mplsFecIPv6HostAddrPrid InstanceId, + mplsFecIPv6HostAddrIpAddr InetAddressIPv6 } + +mplsFecIPv6HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6HostAddrEntry class." + + ::= { mplsFecIPv6HostAddrEntry 1 } + +mplsFecIPv6HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Host Address in a FEC." + + ::= { mplsFecIPv6HostAddrEntry 2 } + + +-- +-- IPv4 Prefix FEC Table +-- + + +mplsFecIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix FEC entrees." + + ::= { mplsFecClasses 3 } + +mplsFecIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv4 Prefix FEC." + + PIB-INDEX { mplsFecIPv4PrefixPrid } + + ::= { mplsFecIPv4PrefixTable 1 } + +MplsFecIPv4PrefixEntry ::= SEQUENCE { + mplsFecIPv4PrefixPrid InstanceId, + mplsFecIPv4PrefixLength Unsigned32, + mplsFecIPv4PrefixIpPrefix InetAddressIPv4 } + +mplsFecIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4PrefixEntry class." + + ::= { mplsFecIPv4PrefixEntry 1 } + +mplsFecIPv4PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 2 } + +mplsFecIPv4PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 3 } + + +-- +-- IPv6 Prefix FEC Table +-- + + +mplsFecIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 Prefix FEC entrees." + + ::= { mplsFecClasses 4 } + +mplsFecIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv6 Prefix FEC." + + PIB-INDEX { mplsFecIPv6PrefixPrid } + + ::= { mplsFecIPv6PrefixTable 1 } + +MplsFecIPv6PrefixEntry ::= SEQUENCE { + mplsFecIPv6PrefixPrid InstanceId, + mplsFecIPv6PrefixLength Unsigned32, + mplsFecIPv6PrefixIpPrefix InetAddressIPv6 } + +mplsFecIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6PrefixEntry class." + + ::= { mplsFecIPv6PrefixEntry 1 } + +mplsFecIPv6PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 2 } + +mplsFecIPv6PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number FEC Table + +-- + +mplsFecASTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecASEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number FEC + entrees." + + ::= { mplsFecClasses 5 } + +mplsFecASEntry OBJECT-TYPE + SYNTAX MplsFecASEntry + STATUS current + DESCRIPTION + "An instance of this class describes an Autonomous System + Number FEC. " + + PIB-INDEX { mplsFecASPrid } + + ::= { mplsFecASTable 1 } + +MplsFecASEntry ::= SEQUENCE { + mplsFecASPrid InstanceId, + mplsFecASNumber Unsigned32 } + +mplsFecASPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecASEntry class." + + ::= { mplsFecASEntry 1 } + +mplsFecASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in a FEC." + + ::= { mplsFecASEntry 2 } + + +-- +-- Label Request Classes +-- + +mplsLabReqClasses OBJECT IDENTIFIER ::= { mplsSetupPib 2 } + +-- +-- Generic Label Request Table + +-- + +mplsLabReqGenericTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqGenericEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Generic Label Request Object + entrees." + + ::= { mplsLRClasses 1 } + +mplsLabReqGenericEntry OBJECT-TYPE + SYNTAX MplsLabReqGenericEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Generic Label + Request Object. " + + PIB-INDEX { mplsLabReqGenericPrid } + + ::= { mplsLabReqGenericTable 1 } + +MplsLabReqGenericEntry ::= SEQUENCE { + mplsLabReqGenericPrid InstanceId, + mplsLabReqGenericL3Pid Unsigned32 } + +mplsLabReqGenericPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqGenericEntry class." + + ::= { mplsLabReqGenericEntry 1 } + +mplsLabReqGenericL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Generic Label Request + Object." + + ::= { mplsLabReqGenericEntry 2 } + + +-- +-- ATM Label Request Table +-- + +mplsLabReqATMTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqATMEntry + PIB-ACCESS install + + STATUS current + DESCRIPTION + "This table consists of MPLS ATM Label Request Object + entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqATMEntry OBJECT-TYPE + SYNTAX MplsLabReqATMEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS ATM Label + Request Object. " + + PIB-INDEX { mplsLabReqATMPrid } + + ::= { mplsLabReqATMTable 1 } + +MplsLabReqATMEntry ::= SEQUENCE { + mplsLabReqATMPrid InstanceId, + mplsLabReqATML3Pid Unsigned32, + mplsLabReqATMMbit Unsigned32, + mplsLabReqATMMinVpi Unsigned32, + mplsLabReqATMMaxVpi Unsigned32, + mplsLabReqATMMinVci Unsigned32, + mplsLabReqATMMaxVci Unsigned32 } + +mplsLabReqATMPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqATMEntry class." + + ::= { mplsLabReqATMEntry 1 } + +mplsLabReqATML3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS ATM Label Request + Object." + + ::= { mplsLabReqATMEntry 2 } + +mplsLabReqATMMbit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Merging Capable Bit in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 3 } + + +mplsLabReqATMMinVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 4 } + +mplsLabReqATMMaxVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 5 } + +mplsLabReqATMMinVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 6 } + +mplsLabReqATMMaxVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 7 } + + +-- +-- Frame Relay Label Request Table +-- + +mplsLabReqFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqFREntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Frame Relay Label Request + Object entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqFREntry OBJECT-TYPE + SYNTAX MplsLabReqFREntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Frame Relay + Label Request Object. " + + + PIB-INDEX { mplsLabReqFRPrid } + + ::= { mplsLabReqFRTable 1 } + +MplsLabReqFREntry ::= SEQUENCE { + mplsLabReqFRPrid InstanceId, + mplsLabReqFRL3Pid Unsigned32, + mplsLabReqFRDlciLen Unsigned32, + mplsLabReqFRMinDlci Unsigned32, + mplsLabReqFRMaxDlci Unsigned32} + +mplsLabReqFRPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqFREntry class." + + ::= { mplsLabReqFREntry 1 } + +mplsLabReqFRL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 2 } + +mplsLabReqFRDlciLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of DLCI in MPLS Frame Relay Label Request Object." + + ::= { mplsLabReqFREntry 3 } + +mplsLabReqFRMinDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value DLCI in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 4 } + +mplsLabReqFRMaxDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value DLCI in MPLS Frame Relay Label Request + Object." + + + ::= { mplsLabReqFREntry 5 } + + +-- +-- Flow (Traffic) Specification Classes +-- + +mplsFlowSpecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 3 } + +-- +-- CRLDP Flow Spec Table +-- + +mplsFlowSpecCRLDPTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCRLDPEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of CR-LDP Traffic (Flow) Specification + entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsFlowSpecCRLDPEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCRLDPEntry + STATUS current + DESCRIPTION + "An instance of this class describes a CR-LDP Flow + Specification. " + + PIB-INDEX { mplsFlowSpecCRLDPPrid } + + ::= { mplsFlowSpecCRLDPTable 1 } + +MplsFlowSpecCRLDPEntry ::= SEQUENCE { + mplsFlowSpecCRLDPPrid InstanceId, + mplsFlowSpecCRLDPPDR Unsigned32, + mplsFlowSpecCRLDPPBS Unsigned32, + mplsFlowSpecCRLDPCDR Unsigned32, + mplsFlowSpecCRLDPCBS Unsigned32, + mplsFlowSpecCRLDPEBS Unsigned32, + mplsFlowSpecCRLDPWeight Unsigned32 } + +mplsFlowSpecCRLDPPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCRLDPEntry class." + + ::= { mplsFlowSpecCRLDPEntry 1 } + + +mplsFlowSpecCRLDPPDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 2 } + +mplsFlowSpecCRLDPPBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 3 } + +mplsFlowSpecCRLDPCDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 4 } + +mplsFlowSpecCRLDPCBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Burst Size in CR-LDP Flow Specification." + + + ::= { mplsFlowSpecCRLDPEntry 5 } + +mplsFlowSpecCRLDPEBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Excess Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 6 } + +mplsFlowSpecCRLDPWeight OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Weight parameter in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 7 } + + +-- +-- RSVP Controlled Load Service Flow Spec Table +-- + + +mplsFlowSpecCLSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCLSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Controlled Load Service Flow Specification + entrees." + + ::= { mplsFlowSpecClasses 2 } + +mplsFlowSpecCLSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCLSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + Controlled Load Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecCLSPrid } + + ::= { mplsFlowSpecCLSTable 1 } + +MplsFlowSpecCLSEntry ::= SEQUENCE { + mplsFlowSpecCLSPrid InstanceId, + mplsFlowSpecCLSTokenRate Unsigned32, + mplsFlowSpecCLSBucketSize Unsigned32, + mplsFlowSpecCLSPeakRate Unsigned32, + mplsFlowSpecCLSMinPoliced Unsigned32, + mplsFlowSpecCLSMaxPktSize Unsigned32 } + +mplsFlowSpecCLSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCLSEntry class." + + ::= { mplsFlowSpecCLSEntry 1 } + +mplsFlowSpecCLSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 2 } + +mplsFlowSpecCLSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + + "Token Bucket Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 3 } + +mplsFlowSpecCLSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 4 } + +mplsFlowSpecCLSMinPoliced OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Controlled + Load Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 5 } + +mplsFlowSpecCLSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 6 } + + + +-- +-- RSVP Guaranteed Service Flow Spec Table +-- + +mplsFlowSpecGSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecGSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Guaranteed Service Flow Specification entrees." + + ::= { mplsFlowSpecClasses 3 } + +mplsFlowSpecGSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecGSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + + Guaranteed Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecGSPrid } + + ::= { mplsFlowSpecGSTable 1 } + +MplsFlowSpecGSEntry ::= SEQUENCE { + mplsFlowSpecGSPrid InstanceId, + mplsFlowSpecGSTokenRate Unsigned32, + mplsFlowSpecGSBucketSize Unsigned32, + mplsFlowSpecGSPeakRate Unsigned32, + mplsFlowSpecGSMinPoliced Unsigned32, + mplsFlowSpecGSMaxPktSize Unsigned32, + mplsFlowSpecGSRspecRate Unsigned32, + mplsFlowSpecGSSlackTerm Unsigned32 } + +mplsFlowSpecGSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecGSEntry class." + + ::= { mplsFlowSpecGSEntry 1 } + +mplsFlowSpecGSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 2 } + +mplsFlowSpecGSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Bucket Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 3 } + +mplsFlowSpecGSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 4 } + +mplsFlowSpecGSMinPoliced OBJECT-TYPE + + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 5 } + +mplsFlowSpecGSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 6 } + +mplsFlowSpecGSRspecRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Required Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 7 } + +mplsFlowSpecGSSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Slack Term (Delay) in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 8 } + + +-- +-- Explicit Route Object (ERO) Classes +-- + +mplsEroClasses OBJECT IDENTIFIER ::= { mplsSetupPib 4 } + +-- +-- IPv4 Address Prefix Subobject Table +-- + +mplsEroIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix ERO Subobject + Entrees." + + + ::= { mplsEroClasses 1 } + +mplsEroIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv4 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv4PrefixPrid } + + ::= { mplsEroIPv4PrefixTable 1 } + +MplsEroIPv4PrefixEntry ::= SEQUENCE { + mplsEroIPv4PrefixPrid InstanceId, + mplsEroIPv4PrefixLen Unsigned32, + mplsEroIPv4PrefixIPv4Addr InetAddressIPv4 } + +mplsEroIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv4PrefixEntry class." + + ::= { mplsEroIPv4PrefixEntry 1 } + +mplsEroIPv4PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 2 } + +mplsEroIPv4PrefixIPv4Addr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "IPv4 Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 3 } + + +-- +-- IPv6 Address Prefix Subobject Table +-- + +mplsEroIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv6PrefixEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table consists of MPLS IPv6 Prefix ERO Subobject + Entrees." + + ::= { mplsEroClasses 2 } + +mplsEroIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv6 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv6PrefixPrid } + + ::= { mplsEroIPv6PrefixTable 1 } + +MplsEroIPv6PrefixEntry ::= SEQUENCE { + mplsEroIPv6PrefixPrid InstanceId, + mplsEroIPv6PrefixLen Unsigned32, + mplsEroIPv6PrefixIPv6Addr InetAddressIPv6 } + +mplsEroIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv6PrefixEntry class." + + ::= { mplsEroIPv6PrefixEntry 1 } + +mplsEroIPv6PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 2 } + +mplsEroIPv6PrefixIPv6Addr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "IPv6 Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number Subobject Table +-- + +mplsEroASNumberTable OBJECT-TYPE + + SYNTAX SEQUENCE OF MplsEroASNumberEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number ERO + Subobject Entrees." + + ::= { mplsEroClasses 3 } + +mplsEroASNumberEntry OBJECT-TYPE + SYNTAX MplsEroASNumberEntry + STATUS current + DESCRIPTION + "An instance of this class describes Autonomous System + Number ERO Subobject. " + + PIB-INDEX { mplsEroASNumberPrid } + + ::= { mplsEroASNumberTable 1 } + +MplsEroASNumberEntry ::= SEQUENCE { + mplsEroASNumberPrid InstanceId, + mplsEroASNumberASNumber Unsigned32} + +mplsEroASNumberPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroASNumberEntry class." + + ::= { mplsEroASNumberEntry 1 } + +mplsEroASNumberASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in Autonomous System Number + Subobject." + + ::= { mplsEroASNumberEntry 2 } + +-- +-- ERO Table +-- + +mplsEroTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS ERO Subobject Entrees." + + + ::= { mplsEroClasses 4 } + +mplsEroEntry OBJECT-TYPE + SYNTAX MplsEroEntry + STATUS current + DESCRIPTION + "An instance of this class describes ERO Subobject." + + PIB-INDEX { mplsEroPrid } + + ::= { mplsEroTable 1 } + +MplsEroEntry ::= SEQUENCE { + mplsEroPrid InstanceId, + mplsEroLoose Unsigned32, + mplsEroSubObject Prid } + +mplsEroPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroEntry class." + + ::= { mplsEroEntry 1 } + +mplsEroLoose OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Loose Bit in ERO Subobject." + + ::= { mplsEroEntry 2 } + +mplsEroSubObject OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of ERO subobject. It + could be an instance of mplsEroIpv4PrefixEntry, + mplsEroIpv6PrefixEntry or mplsEroASNumberEntry." + + ::= { mplsEroEntry 3 } + + +-- +-- Ero Group Table +-- + +mplsEroGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroGroupEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table defines ERO Subobject groups. Each group then is + used in an LSP definition. Grouping is done using a TagId + and order of Subobject in a group is provided by using a + precedence number." + + ::= { mplsEroClasses 5 } + +mplsEroGroupEntry OBJECT-TYPE + SYNTAX MplsEroGroupEntry + STATUS current + DESCRIPTION + "An instance of ERO Subobject group." + + PIB-INDEX { mplsEroGroupPrid } + + ::= { mplsEroGroupTable 1 } + +MplsEroGroupEntry ::= SEQUENCE { + mplsEroGroupPrid InstanceId, + mplsEroGroupId TagId, + mplsEroGroupIdPrecedence Unsigned32, + mplsEroGroupEroId ReferenceId } + +mplsEroGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroGroupEntry class." + + ::= { mplsEroGroupEntry 1 } + +mplsEroGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Tag Id (number) used to group multiple entries in this + table." + + ::= { mplsEroGroupEntry 2 } + +mplsEroGroupIdPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is used to provide ordering for entries with the same + Tag Id." + + ::= { mplsEroGroupEntry 3 } + +mplsEroGroupEroId OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { mplsEroEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of ERO Subobject. The ERO Subobject + with the same Id must be present." + + ::= { mplsEroGroupEntry 4 } + + +-- +-- Preemption Classes +-- + +mplsPreemptionClasses OBJECT IDENTIFIER ::= { mplsSetupPib 5 } + +-- +-- Preemption Table +-- + +mplsPreemptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsPreemptionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of LSP Preemption Entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsPreemptionEntry OBJECT-TYPE + SYNTAX MplsPreemptionEntry + STATUS current + DESCRIPTION + "An instance of this class describes a LSP Preemption + object. " + + PIB-INDEX { mplsPreemptionPrid } + + ::= { mplsPreemptionTable 1 } + +MplsPreemptionEntry ::= SEQUENCE { + mplsPreemptionPrid InstanceId, + mplsPreemptionSetupPrio Unsigned32, + mplsPreemptionHoldPrio Unsigned32 } + +mplsPreemptionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsPreemptionEntry class." + + ::= { mplsPreemptionEntry 1 } + + +mplsPreemptionSetupPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Setup Priority." + + ::= { mplsPreemptionEntry 2 } + +mplsPreemptionHoldPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Holding Priority." + + ::= { mplsPreemptionEntry 3 } + + + +-- +-- LSP Setup Classes +-- + +mplsLspClasses OBJECT IDENTIFIER ::= { mplsSetupPib 6 } + + +-- +-- LSP Table +-- + +mplsLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLspEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS LSP Entrees. Entries in this + table essentially point to instances of other PRCs such as + FEC, Label Request, ERO, Flow Spec and Preemption to form + complete LSPs." + + ::= { mplsLspClasses 1 } + +mplsLspEntry OBJECT-TYPE + SYNTAX MplsLspEntry + STATUS current + DESCRIPTION + "An instance of MPLS LSP. " + + PIB-INDEX { mplsLspPrid } + + ::= { mplsLspTable 1 } + +MplsLspEntry ::= SEQUENCE { + mplsLspPrid InstanceId, + + mplsLspFec Prid, + mplsLspLabReq Prid, + mplsLspFlowSpec Prid, + mplsLspPreemption ReferenceId, + mplsLspEroList TagReference } + +mplsLspPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLspEntry class." + + ::= { mplsLspEntry 1 } + +mplsLspFec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FEC. It could be + an instance of mplsFecIPv4HostAddrEntry, + mplsFecIPv6HostAddrEntry, mplsFecIPv4PrefixEntry, + mplsFecIPv6PrefixEntry, mplsFecASEntry." + + ::= { mplsLspEntry 2 } + +mplsLspLabReq OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of Label Request + Object. It could be an instance of mplsLabReqGenericEntry, + mplsLabReqATMEntry, mplsLabReqFREntry." + + ::= { mplsLspEntry 3 } + +mplsLspFlowSpec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FlowSpec. It + could be an instance of mplsFlowSpecCRLDPEntry, + mplsFlowSpecCLSEntry, mplsFlowSpecGSEntry." + + ::= { mplsLspEntry 4 } + +mplsLspPreemption OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { mplsPreemptionEntry } + STATUS current + DESCRIPTION + "This points to an instance of mplsPreemptionEntry." + + + ::= { mplsLspEntry 5 } + +mplsLspEroList OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { mplsEroGroupId } + STATUS current + DESCRIPTION + "This references a Tag Id attribute in mplsEroGroup table. + All the entries in mplsEroGroup table that have this Tag Id + form the ERO List that is used for this LSP entry." + + ::= { mplsLspEntry 6 } + +END diff --git a/pibs/tubs/Makefile.am b/pibs/tubs/Makefile.am new file mode 100644 index 0000000..9fac639 --- /dev/null +++ b/pibs/tubs/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/tubs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/tubs/Makefile.in b/pibs/tubs/Makefile.in new file mode 100644 index 0000000..c889564 --- /dev/null +++ b/pibs/tubs/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/tubs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/tubs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/tubs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/tubs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/tubs/PARTITION-PIB b/pibs/tubs/PARTITION-PIB new file mode 100644 index 0000000..4b85ccb --- /dev/null +++ b/pibs/tubs/PARTITION-PIB @@ -0,0 +1,917 @@ +PARTITION-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC + TruthValue + FROM SNMPv2-TC + InetAddress + FROM INET-ADDRESS-MIB; + +switchPartitionPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200201010000Z" -- modified + ORGANIZATION "IETF" + CONTACT-INFO " + Todd A. Anderson + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1760 + Email: todd.a.anderson@intel.com + + Avri Doria + Nortel Networks + 600 Technology Park Drive + Billerica MA 01821 + Phone: +1 401 663 5024 + Email: avri@nortelnetworks.com + + Jiang Yong + Telia Research AB + 123 86 Farsta + Sweden + Phone: +46 (0) 8 713 81 25 + Email: yong.b.jiang@telia.se + + Jerry Sydir + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + Phone: +1(650) 938-8066 x102 + sydir@cplane.com + + Balaji Srinivasan + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + phone: +1(650) 938-8066 x103 + balaji@cplane.com" + DESCRIPTION +"The PIB module specifies a set of policy rule classes +for partitioning a single switch into a set of virtual +switches." + ::= { ibrpib 19 } + +vSConfig OBJECT IDENTIFIER ::= { switchPartitionPib 1 } + +PortDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The following type is used to specify the direction of the + label ranges and the bandwidth in the physical port of the + switch as well as the virtual port of the virtual switch." + SYNTAX INTEGER { + incoming(1), + outgoing(2) + } + +RatioString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a floating number, + specifically here the cell loss ratio and a + probability number. It is required to be of the form + m:n, where m and n are both integers and represent a + floating number m divided by n." + SYNTAX OCTET STRING (SIZE(3)) + +VectorString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a 2-dimentional + number (x,y). Here it is used to specify the vpi/vci + range for an ATM interface. 2 vectors, (minVpi, + minVci) and (maxVpi, maxVci), make up a label range. + It is required to have the format x:y" + SYNTAX OCTET STRING (SIZE(3..8)) + +PortType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the port type of the + switch" + SYNTAX INTEGER { + atm(1), + frameRelay(2), + ethernetSwitch(3), + mpls(4), + ipRouting(5) + } + +-- +--================================================================ +--This table performParamTable is used to represent the +--performance targets associated with the equivalent bandwidths +--for each port. This table allows the bandwidth, buffer space, +--and queue schedulers assigned to a VS to be simply abstracted +--using a single parameter: the Equivalent bandwidth per port +--assigned to the VS. Each entry in the VS interface bandwidth +--table uses its serviceParamIndex to point to a row in this +--table. Then the equivalent bandwidth points to a performance +--target set by the service descriptor parameters. The performance +--target is most common in the form of a loss target but also a +--delay target can be used. +--================================================================ +performParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF PerformParamEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured performance targets + for this switch" + ::= { switchPartitionPib 2 } + +performParamEntry OBJECT-TYPE + SYNTAX PerformParamEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives each performance target + parameters" + PIB-INDEX { performParamIndex } + ::= { performParamTable 1 } + +PerformParamEntry ::= + SEQUENCE { + performParamIndex InstanceId, + performPLR RatioString, + performMaxDelay INTEGER, + performDelayOverProb RatioString + } + +performParamIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies each performance target" + ::= { performParamEntry 1 } + +performPLR OBJECT-TYPE + SYNTAX RatioString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This indicates the packet loss ratio " + ::= { performParamEntry 2 } + +performMaxDelay OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " This indicates the maximum packet delay " + ::= { performParamEntry 3 } + +performDelayOverProb OBJECT-TYPE + SYNTAX RatioString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " This indicates the possibility that the packet + delay is bigger than the maximum delay allowed" + ::= { performParamEntry 4 } + +--=================================== +--End of performParamTable +--=================================== + +vSConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Each row in this table describes a virtual switch + that has been created on this switch" + ::= { vSConfig 1 } + +vSConfigEntry OBJECT-TYPE + SYNTAX VSConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "Describes a virtual switch" + PIB-INDEX { vSConfigVSID } + ::= { vSConfigTable 1 } + +VSConfigEntry ::= + SEQUENCE { + vSConfigVSID InstanceId, + vSAdminStatus INTEGER, + vSOperStatus INTEGER, + vSNumPorts INTEGER, + vSNumRoutingEntries INTEGER +} + +vSConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { vSConfigEntry 1 } + +vSAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + testing(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The administrative state of the virtual switch. A + virtual switch's administrative status can not be + 'up' until all the necessary parameters for this + virtual switch have been specified" + ::={ vSConfigEntry 2 } + +vSOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + PIB-ACCESS notify + STATUS current -- war vorher: mandatory + DESCRIPTION "The current operational state of the virtual + switch" + ::={ vSConfigEntry 3 } + +vSNumPorts OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The number of virtual ports in this virtual + switch" + ::= {vSConfigEntry 4 } + +vSNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION + "The number of routing table entries allocated to + this virtual switch. This value is ignored if the + switch has only per port routing tables (i.e., no + switch-wide routing table)" + ::= {vSConfigEntry 5 } + +--=============================== +-- END OF VSConfigTable +--=============================== + +vSCtrlConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSCtrlConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per controller configured for + the VS" + ::={vSConfig 2} + +vSCtrlConfigEntry OBJECT-TYPE + SYNTAX VSCtrlConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "Configuration for each controller for the VS" + PIB-INDEX { vSCtrlConfigVSID } + ::= {vSCtrlConfigTable 1} + +VSCtrlConfigEntry ::= + SEQUENCE { + vSCtrlConfigVSID InstanceId, + vSCtrlID INTEGER, + vSSciType INTEGER, + vSSciTransportType INTEGER, + vSSciTCPPortNumber INTEGER, + vSSciPortInterfaceNum INTEGER, + vSSciVpiNumber INTEGER, + vSSciVciNumber INTEGER +} + +vSCtrlConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { vSCtrlConfigEntry 1 } + +vSCtrlID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch controller across + the SCI" + ::= { vSCtrlConfigEntry 2 } + +vSSciType OBJECT-TYPE + SYNTAX INTEGER { + gsmp(1), + megacop(2), + cops-pr(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The switch control protocol used to control this + virtual switch" + ::= { vSCtrlConfigEntry 3 } + +vSSciTransportType OBJECT-TYPE + SYNTAX INTEGER { + ethernet(1), + tcp(2), + atm(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Transport protocol used to transport SCI PDUs" + ::= { vSCtrlConfigEntry 4 } + +vSSciTCPPortNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The local port number used to access the virtual + switch. Meaningful only when the transport type is + TCP" + ::= { vSCtrlConfigEntry 5 } + +vSSciPortInterfaceNum OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the physical interface over which control + messages are exchanged. " + ::= { vSCtrlConfigEntry 6 } + +vSSciVpiNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The VPI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { vSCtrlConfigEntry 7 } + +vSSciVciNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The VCI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { vSCtrlConfigEntry 8 } + +--=============================== +--END OF VSCtrlConfigTable +--=============================== + +vSPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Resource configuration for the virtual ports" + ::= { vSConfig 3 } + +vSPortConfigEntry OBJECT-TYPE + SYNTAX VSPortConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port resource configured + for the virtual switch" + PIB-INDEX { vSPortConfigVSID } + UNIQUENESS { vSPortConfigVSID, vSPortConfigPortID } + ::= { vSPortConfigTable 1 } + +VSPortConfigEntry ::= + SEQUENCE { + vSPortConfigVSID InstanceId, + vSPortConfigPortID INTEGER, + vSPhysicalPortNumber INTEGER, + vSPortConfigPortNumBWs INTEGER, + vSPortConfigNumLabelRanges INTEGER, + vSPortNumRoutingEntries INTEGER +} + +vSPortConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { vSPortConfigEntry 1 } + +vSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { vSPortConfigEntry 2 } + +vSPhysicalPortNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The physical port number that is mapped to virtual + port" + ::= { vSPortConfigEntry 3 } + +vSPortConfigPortNumBWs OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Number of equivalent bandwidth pointing to + different performance targets (packet loss ratio + and delay) in both incoming and outgoing directions + for this port." + ::= { vSPortConfigEntry 4 } + +vSPortConfigNumLabelRanges OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Number of label ranges for this port. The label + can be of different types depending on the + interface service type." + ::= { vSPortConfigEntry 5} + +vSPortNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The number of routing table entries allocated to + this virtual port from the physical port. This + value is used only if the switch has per port + routing tables" + ::= {vSPortConfigEntry 6 } + +--================================ +-- END OF VSPortConfigTable +--================================ + + +-- +--================================================================ +-- The table VSConfigBWTable gives the equivalent bandwidth +--pointing to different service category for input and output at +--the virtual ports. The table has 3 indices; virtual switch ID, +--port ID and Bandwidth ID +--================================================================ + +vSPortConfigBWTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigBWEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured bandwidth information + for the various virtual ports" + ::= { vSConfig 4 } + +vSPortConfigBWEntry OBJECT-TYPE + SYNTAX VSPortConfigBWEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the configured bandwidth + information for the various virtual ports" + PIB-INDEX { vSPortConfigBWVSID } + UNIQUENESS { vSPortConfigBWVSID, + vSPortConfigBWPortID, + vSPortConfigBWID } + ::= { vSPortConfigBWTable 1 } + +VSPortConfigBWEntry ::= + SEQUENCE { + vSPortConfigBWVSID InstanceId, + vSPortConfigBWPortID INTEGER, + vSPortConfigBWID INTEGER, + vSPortConfigEqiBW INTEGER, + vSPortConfigIndex OBJECT IDENTIFIER, + vSPortConfigBWPortDirection PortDirection +} + +vSPortConfigBWVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { vSPortConfigBWEntry 1 } + +vSPortConfigBWPortID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { vSPortConfigBWEntry 2 } + +vSPortConfigBWID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the equivalent bandwidth ID in the current + virtual switch" + ::= { vSPortConfigBWEntry 3 } + +vSPortConfigEqiBW OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the equivalent bandwidth assigned + to this VS " + ::= { vSPortConfigBWEntry 4 } + +vSPortConfigIndex OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " Indicates an entry in the performParamTable + which represents the performance target + associated to by this equivalent bandwidth " + ::= { vSPortConfigBWEntry 5 } + +vSPortConfigBWPortDirection OBJECT-TYPE + SYNTAX PortDirection + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the direction for which this equivalent + bandwidth is valid" + ::= { vSPortConfigBWEntry 6 } + +--================================== +-- END OF VSPortConfigBWTable +--================================== + + +-- +--================================================================ +-- The VSLabelRangeConfigTable gives the label ranges for input +-- and output at the virtual ports. +-- The tables have 3 indices; virtual switch ID, port ID and Range +-- ID +--================================================================ + +vSPortConfigLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the various virtual ports" + ::= { vSConfig 5 } + +vSPortConfigLabelRangeEntry OBJECT-TYPE + SYNTAX VSPortConfigLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port label ranges + configured for the virtual switch." + PIB-INDEX { vSPortConfigLabelRangeID } + UNIQUENESS { + vSPortConfigLabelRangeID } + ::= { vSPortConfigLabelRangeTable 1 } + +VSPortConfigLabelRangeEntry ::= + SEQUENCE { + vSPortConfigLabelRangeID InstanceId, + vSPortConfigPortDirection PortDirection, + vSPortConfigLabelRangeType INTEGER, + vSPortConfigLabelRangeIndex INTEGER +} + +vSPortConfigLabelRangeID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the label range" + ::= { vSPortConfigLabelRangeEntry 1 } + +vSPortConfigPortDirection OBJECT-TYPE + SYNTAX PortDirection + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the direction for which this range is + valid" + ::= { vSPortConfigLabelRangeEntry 2 } + +vSPortConfigLabelRangeType OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the type of protocol for this label + range." + ::= { vSPortConfigLabelRangeEntry 3 } + +vSPortConfigLabelRangeIndex OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The index into the protocol-dependent label + range table for this virtual switch." + ::= { vSPortConfigLabelRangeEntry 4 } + +--==================================== +-- END OF VSPortConfigLabelRangeTable +--==================================== + + +-- +--================================================================ +-- The table VSAtmLabelRangeTable is used to give the VPI/VCI +-- label ranges at the ATM virtual switch level. +--================================================================ + +vSAtmLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSAtmLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured ATM label range + information for the various switch ports on this + virtual switch." + ::= { vSConfig 6 } + +vSAtmLabelRangeEntry OBJECT-TYPE + SYNTAX VSAtmLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port ATM label ranges and + capabilities." + PIB-INDEX { vSAtmLabelRangeIndex } + ::= { vSAtmLabelRangeTable 1 } + +VSAtmLabelRangeEntry ::= + SEQUENCE { + vSAtmLabelRangeIndex InstanceId, + vSAtmLabelRangeMinVpiVci VectorString, + vSAtmLabelRangeMaxVpiVci VectorString, + vSAtmLabelRangeAllowsVP TruthValue, + vSAtmLabelRangeAllowsP2MP TruthValue, + vSAtmLabelRangeAllowsMP2P TruthValue, + vSAtmLabelRangeMaxMulticast INTEGER +} + +vSAtmLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSAtmLabelRangeEntry 1 } + +vSAtmLabelRangeMinVpiVci OBJECT-TYPE + SYNTAX VectorString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the vpi and vci range." + ::= { vSAtmLabelRangeEntry 2 } + +vSAtmLabelRangeMaxVpiVci OBJECT-TYPE + SYNTAX VectorString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the vpi and vci range." + ::= { vSAtmLabelRangeEntry 3 } + +vSAtmLabelRangeAllowsVP OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used for + VP connections." + ::= { vSAtmLabelRangeEntry 4 } + +vSAtmLabelRangeAllowsP2MP OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used to + create point-to-multipoint connections." + ::= { vSAtmLabelRangeEntry 5 } + +vSAtmLabelRangeAllowsMP2P OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used to + create multipoint-to-point connections." + ::= { vSAtmLabelRangeEntry 6 } + +vSAtmLabelRangeMaxMulticast OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the maximum number of multicast + connections that can be created within this range." + ::= { vSAtmLabelRangeEntry 7 } + +--==================================== +-- END OF VSAtmLabelRangeTable +--==================================== + + +-- +--================================================================ +-- The table VSFrLabelRangeTable is used to give the DLCI label +-- ranges on a Frame Relay interface for a virtual switch. +--================================================================ + +vSFrLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSFrLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the various frame relay ports." + ::= { vSConfig 7 } + +vSFrLabelRangeEntry OBJECT-TYPE + SYNTAX VSFrLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port label ranges" + PIB-INDEX { vSFrLabelRangeIndex } + ::= { vSFrLabelRangeTable 1 } + +VSFrLabelRangeEntry ::= + SEQUENCE { + vSFrLabelRangeIndex InstanceId, + vSFrLabelRangeMinDLCI INTEGER, + vSFrLabelRangeMaxDLCI INTEGER +} + +vSFrLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSFrLabelRangeEntry 1 } + + +vSFrLabelRangeMinDLCI OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the DLCI range for this Frame Relay + interface." + ::= { vSFrLabelRangeEntry 2 } + +vSFrLabelRangeMaxDLCI OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the DLCI range for this Frame Relay + interface." + ::= { vSFrLabelRangeEntry 3 } + + +--==================================== +-- END OF VSFrLabelRangeTable +--==================================== + +-- +--================================================================ +-- The table VSVlanLabelRangeTable is used to give the VLAN ID +-- label ranges on a VLAN-aware Ethernet interface for a virtual +-- switch. +--================================================================ + +vSVlanLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSVlanLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the VLAN-aware Ethernet ports." + ::= { vSConfig 8 } + +vSVlanLabelRangeEntry OBJECT-TYPE + SYNTAX VSVlanLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port VLAN ID ranges" + PIB-INDEX { vSVlanLabelRangeIndex } + ::= { vSVlanLabelRangeTable 1 } + +VSVlanLabelRangeEntry ::= + SEQUENCE { + vSVlanLabelRangeIndex InstanceId, + vSVlanLabelRangeMinID INTEGER, + vSVlanLabelRangeMaxID INTEGER +} + +vSVlanLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSVlanLabelRangeEntry 1 } + +vSVlanLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { vSVlanLabelRangeEntry 2 } + +vSVlanLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { vSVlanLabelRangeEntry 3 } + +--==================================== +-- END OF VSVlanLabelRangeTable +--==================================== + +-- +--================================================================ +-- The table mplsLabelRangeTable is used to give the label ranges +-- on a MPLS interface. +--================================================================ + +vSMplsLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSMplsLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for MPLS ports." + ::= { vSConfig 9 } + +vSMplsLabelRangeEntry OBJECT-TYPE + SYNTAX VSMplsLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port MPLS ranges." + PIB-INDEX { vSMplsLabelRangeIndex } + ::= { vSMplsLabelRangeTable 1 } + +VSMplsLabelRangeEntry ::= + SEQUENCE { + vSMplsLabelRangeIndex InstanceId, + vSMplsLabelRangeMinID INTEGER, + vSMplsLabelRangeMaxID INTEGER +} + +vSMplsLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSMplsLabelRangeEntry 1 } + + +vSMplsLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the MPLS label range." + ::= { vSMplsLabelRangeEntry 2 } + +vSMplsLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the MPLS label range." + ::= { vSMplsLabelRangeEntry 3 } + +--==================================== +-- END OF VSMplsLabelRangeTable +--==================================== + +--================================================================ +-- The table VSIpLabelRangeTable is used to give the IP ranges on +-- an IP interface for a virtual switch. +--================================================================ + +vSIpLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSIpLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured IP ranges for IP + ports." + ::= { vSConfig 10 } + +vSIpLabelRangeEntry OBJECT-TYPE + SYNTAX VSIpLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port IP ranges." + PIB-INDEX { vSIpLabelRangeIndex } + ::= { vSIpLabelRangeTable 1 } + +VSIpLabelRangeEntry ::= + SEQUENCE { + vSIpLabelRangeIndex InstanceId, + vSIpLabelRangeIP InetAddress, + vSIpLabelRangeIPMask InetAddress +} + +vSIpLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSIpLabelRangeEntry 1 } + +vSIpLabelRangeIP OBJECT-TYPE + SYNTAX InetAddress + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the IP address for a particular network." + ::= { vSIpLabelRangeEntry 2 } + +vSIpLabelRangeIPMask OBJECT-TYPE + SYNTAX InetAddress + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the subnet's mask address." + ::= { vSIpLabelRangeEntry 3 } + +--==================================== +-- END OF VSIpLabelRangeTable +--==================================== + +END diff --git a/pibs/tubs/PARTITION-PIB-orig b/pibs/tubs/PARTITION-PIB-orig new file mode 100644 index 0000000..1de7854 --- /dev/null +++ b/pibs/tubs/PARTITION-PIB-orig @@ -0,0 +1,924 @@ +PARTITION-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, IpAddress, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, + PolicyInstanceId + FROM COPS-PR-SPPI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +switchPartitionPib MODULE-IDENTITY + CLIENT-TYPE { TBD } + LAST-UPDATED "TBS" + ORGANIZATION "IETF" + CONTACT-INFO " + Todd A. Anderson + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1760 + Email: todd.a.anderson@intel.com + + Avri Doria + Nortel Networks + 600 Technology Park Drive + Billerica MA 01821 + Phone: +1 401 663 5024 + Email: avri@nortelnetworks.com + + Jiang Yong + Telia Research AB + 123 86 Farsta + Sweden + Phone: +46 (0) 8 713 81 25 + Email: yong.b.jiang@telia.se + + Jerry Sydir + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + Phone: +1(650) 938-8066 x102 + sydir@cplane.com + + Balaji Srinivasan + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + phone: +1(650) 938-8066 x103 + balaji@cplane.com" + DESCRIPTION +"The PIB module specifies a set of policy rule classes +for partitioning a single switch into a set of virtual +switches." + ::= { tbd } + +VSConfig OBJECT IDENTIFIER ::= { switchPartitionPib 1 } + +PortDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The following type is used to specify the direction of the + label ranges and the bandwidth in the physical port of the + switch as well as the virtual port of the virtual switch." + SYNTAX INTEGER { + incoming(1), + outgoing(2) + } + +RatioString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a floating number, + specifically here the cell loss ratio and a + probability number. It is required to be of the form + m:n, where m and n are both integers and represent a + floating number m divided by n." + SYNTAX OCTET STRING (SIZE(3)) + +VectorString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a 2-dimentional + number (x,y). Here it is used to specify the vpi/vci + range for an ATM interface. 2 vectors, (minVpi, + minVci) and (maxVpi, maxVci), make up a label range. + It is required to have the format x:y" + SYNTAX OCTET STRING (SIZE(3..8)) + +PortType := TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the port type of the + switch" + SYNTAX INTEGER { + atm(1), + frameRelay(2), + ethernetSwitch(3), + mpls(4), + ipRouting(5) + } + +-- +================================================================== +--This table performParamTable is used to represent the +--performance targets associated with the equivalent bandwidths +--for each port. This table allows the bandwidth, buffer space, +--and queue schedulers assigned to a VS to be simply abstracted +--using a single parameter: the Equivalent bandwidth per port +--assigned to the VS. Each entry in the VS interface bandwidth +--table uses its serviceParamIndex to point to a row in this +--table. Then the equivalent bandwidth points to a performance +--target set by the service descriptor parameters. The performance +--target is most common in the form of a loss target but also a +--delay target can be used. +================================================================== +performParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF PerformParamEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured performance targets + for this switch" + ::= { switchPartitionPib 2 } + +performParamEntry OBJECT-TYPE + SYNTAX PerformParamEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives each performance target + parameters" + INDEX { performParamIndex } + ::= { performParamTable 1 } + +PerformParamEntry ::= + SEQUENCE { + performParamIndex PolicyInstanceId, + performPLR RatioString, + performMaxDelay INTEGER, + performDelayOverProb RatioString + } + +performParamIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies each performance target" + ::= { performParamEntry 1 } + +performPLR OBJECT-TYPE + SYNTAX RatioString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This indicates the packet loss ratio " + ::= { performParamEntry 2 } + +performMaxDelay OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " This indicates the maximum packet delay " + ::= { performParamEntry 3 } + +performDelayOverProb OBJECT-TYPE + SYNTAX RatioString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " This indicates the possibility that the packet + delay is bigger than the maximum delay allowed" + ::= { performParamEntry 4 } + +--=================================== +--End of performParamTable +--=================================== + +VSConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Each row in this table describes a virtual switch + that has been created on this switch" + ::= { VSConfig 1 } + +VSConfigEntry OBJECT-TYPE + SYNTAX VSConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Describes a virtual switch" + INDEX { VSConfigVSID } + ::= { VSConfigTable 1 } + +VSConfigEntry ::= + SEQUENCE { + VSConfigVSID PolicyInstanceId, + VSAdminStatus INTEGER, + VSOperStatus INTEGER, + VSNumPorts INTEGER, + VSNumRoutingEntries INTEGER +} + +VSConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { VSConfigEntry 1 } + +VSAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + testing(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The administrative state of the virtual switch. A + virtual switch's administrative status can not be + "up" until all the necessary parameters for this + virtual switch have been specified" + ::={ VSConfigEntry 2 } + +VSOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + POLICY-ACCESS NOTIFY + STATUS mandatory + DESCRIPTION "The current operational state of the virtual + switch" + ::={ VSConfigEntry 3 } + +VSNumPorts OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The number of virtual ports in this virtual + switch" + ::= {VSConfigEntry 4 } + +VSNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION + "The number of routing table entries allocated to + this virtual switch. This value is ignored if the + switch has only per port routing tables (i.e., no + switch-wide routing table)" + ::= {VSConfigEntry 5 } + +--=============================== +-- END OF VSConfigTable +--=============================== + +VSCtrlConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSCtrlConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per controller configured for + the VS" + ::={VSConfig 2} + +VSCtrlConfigEntry OBJECT-TYPE + SYNTAX VSCtrlConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Configuration for each controller for the VS" + INDEX { VSConfigVSID } + ::= {VSCtrlConfigTable 1} + +VSCtrlConfigEntry ::= + SEQUENCE { + VSConfigVSID PolicyInstanceId, + VSCtrlID INTEGER, + VSSciType INTEGER, + VSSciTransportType INTEGER, + VSSciTCPPortNumber INTEGER, + VSSciPortInterfaceNum INTEGER, + VSSciVpiNumber INTEGER, + VSSciVciNumber INTEGER +} + +VSConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { VSCtrlConfigEntry 1 } + +VSCtrlID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch controller across + the SCI" + ::= { VSCtrlConfigEntry 2 } + +VSSciType OBJECT-TYPE + SYNTAX INTEGER { + gsmp(1), + megacop(2), + cops-pr(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The switch control protocol used to control this + virtual switch" + ::= { VSCtrlConfigEntry 3 } + +VSSciTransportType OBJECT-TYPE + SYNTAX INTEGER { + ethernet(1), + tcp(2), + atm(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Transport protocol used to transport SCI PDUs" + ::= { VSCtrlConfigEntry 4 } + +VSSciTCPPortNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The local port number used to access the virtual + switch. Meaningful only when the transport type is + TCP" + ::= { VSCtrlConfigEntry 5 } + +VSSciPortInterfaceNum OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the physical interface over which control + messages are exchanged. " + ::= { VSCtrlConfigEntry 6 } + +VSSciVpiNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The VPI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { VSCtrlConfigEntry 7 } + +VSSciVciNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The VCI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { VSCtrlConfigEntry 8 } + +--=============================== +--END OF VSCtrlConfigTable +--=============================== + +VSPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Resource configuration for the virtual ports" + ::= { VSConfig 3 } + +VSPortConfigEntry OBJECT-TYPE + SYNTAX VSPortConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port resource configured + for the virtual switch" + INDEX { VSConfigVSID } + UNIQUENESS { VSConfigVSID, VSPortConfigPortID } + ::= { VSPortConfigTable 1 } + +VSPortConfigEntry ::= + SEQUENCE { + VSPortConfigVSID PolicyInstanceId, + VSPortConfigPortID INTEGER, + VSPhysicalPortNumber INTEGER, + VSPortConfigPortNumBWs INTEGER, + VSPortConfigNumLabelRanges INTEGER, + VSPortNumRoutingEntries INTEGER +} + +VSPortConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { VSPortConfigEntry 1 } + +VSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { VSPortConfigEntry 2 } + +VSPhysicalPortNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The physical port number that is mapped to virtual + port" + ::= { VSPortConfigEntry 3 } + +VSPortConfigPortNumBWs OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Number of equivalent bandwidth pointing to + different performance targets (packet loss ratio + and delay) in both incoming and outgoing directions + for this port." + ::= { VSPortConfigEntry 4 } + +VSPortConfigNumLabelRanges OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Number of label ranges for this port. The label + can be of different types depending on the + interface service type." + ::= { VSPortConfigEntry 5} + +VSPortNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The number of routing table entries allocated to + this virtual port from the physical port. This + value is used only if the switch has per port + routing tables" + ::= {VSPortConfigEntry 6 } + +--================================ +-- END OF VSPortConfigTable +--================================ + + +-- +================================================================== +-- The table VSConfigBWTable gives the equivalent bandwidth +--pointing to different service category for input and output at +--the virtual ports. The table has 3 indices; virtual switch ID, +--port ID and Bandwidth ID +================================================================== + +VSPortConfigBWTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigBWEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured bandwidth information + for the various virtual ports" + ::= { VSConfig 4 } + +VSPortConfigBWEntry OBJECT-TYPE + SYNTAX VSPortConfigBWEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the configured bandwidth + information for the various virtual ports" + INDEX { VSPortConfigVSID } + UNIQUENESS { VSPortConfigVSID, + VSPortConfigPortID, + VSPortConfigBWID } + ::= { VSPortConfigBWTable 1 } + +VSPortConfigBWConfigEntry ::= + SEQUENCE { + VSPortConfigVSID PolicyInstanceId, + VSPortConfigPortID INTEGER, + VSPortConfigBWID INTEGER, + VSPortConfigEqiBW INTEGER, + performParamIndex OBJECT IDENTIFIER, + VSPortConfigBWPortDirection PortDirection +} + +VSPortConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { VSPortConfigBWEntry 1 } + +VSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { VSPortConfigBWEntry 2 } + +VSPortConfigBWID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the equivalent bandwidth ID in the current + virtual switch" + ::= { VSPortConfigBWEntry 3 } + +VSPortConfigEqiBW OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the equivalent bandwidth assigned + to this VS " + ::= { VSPortConfigBWEntry 4 } + +performParamIndex OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " Indicates an entry in the performParamTable + which represents the performance target + associated to by this equivalent bandwidth " + ::= { VSPortConfigBWEntry 5 } + +VSPortConfigBWPortDirection OBJECT-TYPE + SYNTAX PortDirection + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the direction for which this equivalent + bandwidth is valid" + ::= { VSPortConfigBWEntry 6 } + +--================================== +-- END OF VSPortConfigBWTable +--================================== + + +-- +================================================================== +-- The VSLabelRangeConfigTable gives the label ranges for input +-- and output at the virtual ports. +-- The tables have 3 indices; virtual switch ID, port ID and Range +-- ID +================================================================== + +VSPortConfigLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the various virtual ports" + ::= { VSConfig 5 } + +VSPortConfigLabelRangeEntry OBJECT-TYPE + SYNTAX VSPortConfigLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port label ranges + configured for the virtual switch." + INDEX { VSPortConfigVSID } + UNIQUENESS { VSPortConfigVSID, + VSPortConfigPortID, + VSPortConfigLabelRangeID } + ::= { VSPortConfigLabelRangeTable 1 } + +VSPortConfigLabelRangeEntry ::= + SEQUENCE { + VSPortConfigLabelRangeID PolicyInstanceId, + VSPortConfigPortDirection PortDirection, + VSPortConfigRangeType INTEGER, + VSPortConfigRangeIndex INTEGER +} + +VSPortConfigLabelRangeID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the label range" + ::= { VSPortConfigLabelRangeEntry 1 } + +VSPortConfigPortDirection OBJECT-TYPE + SYNTAX PortDirection + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the direction for which this range is + valid" + ::= { VSPortConfigLabelRangeEntry 2 } + +VSPortConfigLabelRangeType OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + DESCRIPTION "Indicates the type of protocol for this label + range." + STATUS mandatory + ::= { VSPortConfigLabelRangeEntry 3 } + +VSPortConfigLabelRangeIndex OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + DESCRIPTION "The index into the protocol-dependent label + range table for this virtual switch." + STATUS mandatory + ::= { VSPortConfigLabelRangeEntry 4 } + +--==================================== +-- END OF VSPortConfigLabelRangeTable +--==================================== + + +-- +================================================================== +-- The table VSAtmLabelRangeTable is used to give the VPI/VCI +-- label ranges at the ATM virtual switch level. +================================================================== + +VSAtmLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSAtmLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured ATM label range + information for the various switch ports on this + virtual switch." + ::= { VSConfig 6 } + +VSAtmLabelRangeEntry OBJECT-TYPE + SYNTAX VSAtmLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port ATM label ranges and + capabilities." + INDEX { VSAtmLabelRangeIndex } + ::= { VSAtmLabelRangeTable 1 } + +VSAtmLabelRangeEntry ::= + SEQUENCE { + VSAtmLabelRangeIndex PolicyInstanceId, + VSAtmLabelRangeMinVpiVci VectorString, + VSAtmLabelRangeMaxVpiVci VectorString, + VSAtmLabelRangeAllowsVP BOOLEAN, + VSAtmLabelRangeAllowsP2MP BOOLEAN, + VSAtmLabelRangeAllowsMP2P BOOLEAN, + VSAtmLabelRangeMaxMulticast INTEGER +} + +VSAtmLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSAtmLabelRangeEntry 1 } + +VSAtmLabelRangeMinVpiVci OBJECT-TYPE + SYNTAX VectorString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the vpi and vci range." + ::= { VSAtmLabelRangeEntry 2 } + +VSAtmLabelRangeMaxVpiVci OBJECT-TYPE + SYNTAX VectorString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the vpi and vci range." + ::= { VSAtmLabelRangeEntry 3 } + +VSAtmLabelRangeAllowsVP OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used for + VP connections." + ::= { VSAtmLabelRangeEntry 4 } + +VSAtmLabelRangeAllowsP2MP OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used to + create point-to-multipoint connections." + ::= { VSAtmLabelRangeEntry 5 } + +VSAtmLabelRangeAllowsMP2P OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used to + create multipoint-to-point connections." + ::= { VSAtmLabelRangeEntry 6 } + +VSAtmLabelRangeMaxMulticast OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the maximum number of multicast + connections that can be created within this range." + ::= { VSAtmLabelRangeEntry 7 } + +--==================================== +-- END OF VSAtmLabelRangeTable +--==================================== + + +-- +================================================================== +-- The table VSFrLabelRangeTable is used to give the DLCI label +-- ranges on a Frame Relay interface for a virtual switch. +================================================================== + +VSFrLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSFrLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the various frame relay ports." + ::= { VSConfig 7 } + +VSFrLabelRangeEntry OBJECT-TYPE + SYNTAX VSFrLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port label ranges" + INDEX { VSFrLabelRangeIndex } + ::= { VSFrLabelRangeTable 1 } + +VSFrLabelRangeEntry ::= + SEQUENCE { + VSFrLabelRangeIndex PolicyInstanceId, + VSFrLabelRangeMinDLCI INTEGER, + VSFrLabelRangeMaxDLCI INTEGER +} + +VSFrLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSFrLabelRangeEntry 1 } + + +VSFrLabelRangeMinDLCI OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the DLCI range for this Frame Relay + interface." + ::= { VSFrLabelRangeEntry 2 } + +VSFrLabelRangeMaxDLCI OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the DLCI range for this Frame Relay + interface." + ::= { VSFrLabelRangeEntry 3 } + + +--==================================== +-- END OF VSFrLabelRangeTable +--==================================== + +-- +================================================================== +-- The table VSVlanLabelRangeTable is used to give the VLAN ID +-- label ranges on a VLAN-aware Ethernet interface for a virtual +-- switch. +================================================================== + +VSVlanLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSVlanLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the VLAN-aware Ethernet ports." + ::= { VSConfig 8 } + +VSVlanLabelRangeEntry OBJECT-TYPE + SYNTAX VSVlanLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port VLAN ID ranges" + INDEX { VSVlanLabelRangeIndex } + ::= { VSVlanLabelRangeTable 1 } + +VSVlanLabelRangeEntry ::= + SEQUENCE { + VSVlanLabelRangeIndex PolicyInstanceId, + VSVlanLabelRangeMinID INTEGER, + VSVlanLabelRangeMaxID INTEGER +} + +VSVlanLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSVlanLabelRangeEntry 1 } + +VSVlanLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { VSVlanLabelRangeEntry 2 } + +VSVlanLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { VSVlanLabelRangeEntry 3 } + +--==================================== +-- END OF VSVlanLabelRangeTable +--==================================== + +-- +================================================================== +-- The table mplsLabelRangeTable is used to give the label ranges +-- on a MPLS interface. +================================================================== + +VSMplsLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSMplsLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for MPLS ports." + ::= { VSConfig 9 } + +VSMplsLabelRangeEntry OBJECT-TYPE + SYNTAX VSMplsLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port MPLS ranges." + INDEX { VSMplsLabelRangeIndex } + ::= { VSMplsLabelRangeTable 1 } + +VSMplsLabelRangeEntry ::= + SEQUENCE { + VSMplsLabelRangeIndex PolicyInstanceId, + VSMplsLabelRangeMinID INTEGER, + VSMplsLabelRangeMaxID INTEGER +} + +VSMplsLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSMplsLabelRangeEntry 1 } + + +VSMplsLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the MPLS label range." + ::= { VSMplsLabelRangeEntry 2 } + +VSMplsLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the MPLS label range." + ::= { VSMplsLabelRangeEntry 3 } + +--==================================== +-- END OF VSMplsLabelRangeTable +--==================================== + +================================================================== +-- The table VSIpLabelRangeTable is used to give the IP ranges on +-- an IP interface for a virtual switch. +================================================================== + +VSIpLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSIpLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured IP ranges for IP + ports." + ::= { VSConfig 10 } + +VSIpLabelRangeEntry OBJECT-TYPE + SYNTAX VSIpLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port IP ranges." + INDEX { VSIpLabelRangeIndex } + ::= { VSIpLabelRangeTable 1 } + +VSIpLabelRangeEntry ::= + SEQUENCE { + VSIpLabelRangeIndex PolicyInstanceId, + VSIpLabelRangeIP IpAddress, + VSIpLabelRangeIPMask IpAddress +} + +VSIpLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSIpLabelRangeEntry 1 } + +VSIpLabelRangeIP OBJECT-TYPE + SYNTAX IpAddress + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the IP address for a particular network. + ::= { VSIpLabelRangeEntry 2 } + +VSIpLabelRangeIPMask OBJECT-TYPE + SYNTAX IpAddress + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the subnet's mask address." + ::= { VSIpLabelRangeEntry 3 } + +--==================================== +-- END OF VSIpLabelRangeTable +--==================================== + +END diff --git a/pibs/tubs/POLICY-FRAMEWORK-PIB b/pibs/tubs/POLICY-FRAMEWORK-PIB new file mode 100644 index 0000000..f92373f --- /dev/null +++ b/pibs/tubs/POLICY-FRAMEWORK-PIB @@ -0,0 +1,263 @@ +POLICY-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +policyFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be done + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "A PIB module containing the base set of policy + rule classes that are required for support of + all policies." + + ::= { ibrpib 15 } + +policyBasePibClasses + OBJECT IDENTIFIER ::= { policyFrameworkPib 1 } + +-- +-- Textual Conventions +-- + +-- +-- Interface Role +-- + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A display string but where the characters '+', ' ' (space), + NULL, LF, CR, BELL, BS, HT (tab) VT and FF are illegal." + + SYNTAX OCTET STRING (SIZE (0..31)) + +-- +-- Interface Role Combination +-- + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum." + + SYNTAX OCTET STRING (SIZE (0..255)) + +-- +-- Device Configuration Group +-- + +-- This group contains device configuration information. This +-- configuration is either set by management or reflects the physical +-- configuration of the device. This configuration is generally +-- reported to the PDP (i.e., the policy server) when configuration +-- is performed by the policy server so that the PDP can determine +-- what policies to download to the PEP (i.e., the device). Class +-- instances may also be downloaded by a network manager prior to +-- static configuration. +-- + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyBasePibClasses 1 } + +-- +-- PRC Support Table +-- + +policyPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyPrcSupportEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of these + + + PRCs, the device supports. This table can also be downloaded + by a network manager when static configuration is used. + + All install and install-notify PRCs supported by the device + must be represented in this table." + + ::= { policyDeviceConfig 1 } + +policyPrcSupportEntry OBJECT-TYPE + SYNTAX PolicyPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the policyPrcSupport class that identifies a + specific policy class and associated attributes as supported + by the device." + + PIB-INDEX { policyPrcSupportId } + ::= { policyPrcSupportTable 1 } + +PolicyPrcSupportEntry ::= SEQUENCE { + policyPrcSupportId InstanceId, + policyPrcSupportSupportedPrc OBJECT IDENTIFIER, + policyPrcSupportSupportedAttrs OCTET STRING +} + +policyPrcSupportId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the policyPrcSupport class." + + ::= { policyPrcSupportEntry 1 } + +policyPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. There may not + be more than one instance of the policyPrcSupport class with + the same value of policyPrcSupportSupportedPrc." + + ::= { policyPrcSupportEntry 2 } + +policyPrcSupportSupportedAttrs OBJECT-TYPE + + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the policyPrcSupportSupportedPrc + object. + + Each bit of this bit mask corresponds to a class attribute, + with the most significant bit of the i-th octet of this octet + string corresponding to the (8*i - 7)-th attribute, and the + least significant bit of the i-th octet corresponding to the + (8*i)-th class attribute. Each bit of this bit mask specifies + whether or not the corresponding class attribute is currently + supported, with a '1' indicating support and a '0' indicating + no support. If the value of this bit mask is N bits long and + there are more than N class attributes then the bit mask is + logically extended with 0's to the required length." + + ::= { policyPrcSupportEntry 3 } + +-- +-- PIB Incarnation Table +-- + +policyDevicePibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyDevicePibIncarnationEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class contains a single policy rule instance that + identifies the current incarnation of the PIB and the PDP + or network manager that installed this incarnation. The + instance of this class is reported to the PDP at client + connect time so that the PDP can (attempt to) ascertain the + current state of the PIB. A network manager may use the + instance to determine the state of the device with regard + to existing NMS interactions." + + ::= { policyDeviceConfig 2 } + +policyDevicePibIncarnationEntry OBJECT-TYPE + SYNTAX PolicyDevicePibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the policyDevicePibIncarnation class. Only + + + one instance of this policy class is ever instantiated." + + PIB-INDEX { policyDevicePibIncarnationPrid } + ::= { policyDevicePibIncarnationTable 1 } + +PolicyDevicePibIncarnationEntry ::= SEQUENCE { + policyDevicePibIncarnationPrid InstanceId, + policyDevicePibIncarnationName SnmpAdminString, + policyDevicePibIncarnationId OCTET STRING, + policyDevicePibIncarnationTtl Unsigned32 +} + +policyDevicePibIncarnationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + policy class." + + ::= { policyDevicePibIncarnationEntry 1 } + +policyDevicePibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The name of the entity that installed the current + incarnation of the PIB into the device. The name may + reference a PDP when dynamic configuration is being + used or a network manager when static configuration + is being used. By default, it is the zero length + string." + + ::= { policyDevicePibIncarnationEntry 2 } + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. By default, it is the zero-length + string." + + ::= { policyDevicePibIncarnationEntry 3 } + + +policyDevicePibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The number of seconds after a client close or TCP timeout + for which the PEP continues to enforce the policy in the PIB. + After this interval, the PIB is considered expired and the + device no longer enforces the policy installed in the PIB. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + + ::= { policyDevicePibIncarnationEntry 4 } + +END diff --git a/pibs/tubs/POLICY-FRAMEWORK-PIB-orig b/pibs/tubs/POLICY-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..83ba5ed --- /dev/null +++ b/pibs/tubs/POLICY-FRAMEWORK-PIB-orig @@ -0,0 +1,283 @@ +POLICY-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +policyFrameworkPib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "A PIB module containing the base set of policy + rule classes that are required for support of + all policies." + + ::= { tbd } + +policyBasePibClasses + OBJECT IDENTIFIER ::= { policyFrameworkPib 1 } + +-- +-- Textual Conventions +-- + +-- +-- Interface Role +-- + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A display string but where the characters '+', ' ' (space), + NULL, LF, CR, BELL, BS, HT (tab) VT and FF are illegal." + + SYNTAX SnmpAdminString (SIZE (0..31)) + +-- +-- Interface Role Combination +-- + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum." + + SYNTAX SnmpAdminString (SIZE (0..255)) + +-- +-- Policy Instance Index +-- + +PolicyInstanceId ::= TEXTUAL-CONVENTION + STATUS current + + + DESCRIPTION + "A textual convention for an attribute that is an integer + index of a class. It is used for attributes that exist + for the purpose of providing a policy rule instance with + a unique instance identifier. + + For any instance identifier that refers to another policy + rule instance, that other policy instance must exist. + Furthermore, it is an error to try to delete a policy rule + instance that is referred to by another instance without + first deleting the referencing instance. + + Class instances of this type need not be contiguous." + + SYNTAX Unsigned32 + +-- +-- Device Configuration Group +-- + +-- This group contains device configuration information. This +-- configuration is either set by management or reflects the physical +-- configuration of the device. This configuration is generally +-- reported to the PDP (i.e., the policy server) when configuration +-- is performed by the policy server so that the PDP can determine +-- what policies to download to the PEP (i.e., the device). Class +-- instances may also be downloaded by a network manager prior to +-- static configuration. +-- + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyBasePibClasses 1 } + +-- +-- PRC Support Table +-- + +policyPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyPrcSupportEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of these + + + PRCs, the device supports. This table can also be downloaded + by a network manager when static configuration is used. + + All install and install-notify PRCs supported by the device + must be represented in this table." + + ::= { policyDeviceConfig 1 } + +policyPrcSupportEntry OBJECT-TYPE + SYNTAX PolicyPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the policyPrcSupport class that identifies a + specific policy class and associated attributes as supported + by the device." + + INDEX { policyPrcSupportId } + ::= { policyPrcSupportTable 1 } + +PolicyPrcSupportEntry ::= SEQUENCE { + policyPrcSupportId PolicyInstanceId, + policyPrcSupportSupportedPrc OBJECT IDENTIFIER, + policyPrcSupportSupportedAttrs OCTET STRING +} + +policyPrcSupportId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the policyPrcSupport class." + + ::= { policyPrcSupportEntry 1 } + +policyPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. There may not + be more than one instance of the policyPrcSupport class with + the same value of policyPrcSupportSupportedPrc." + + ::= { policyPrcSupportEntry 2 } + +policyPrcSupportSupportedAttrs OBJECT-TYPE + + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the policyPrcSupportSupportedPrc + object. + + Each bit of this bit mask corresponds to a class attribute, + with the most significant bit of the i-th octet of this octet + string corresponding to the (8*i - 7)-th attribute, and the + least significant bit of the i-th octet corresponding to the + (8*i)-th class attribute. Each bit of this bit mask specifies + whether or not the corresponding class attribute is currently + supported, with a '1' indicating support and a '0' indicating + no support. If the value of this bit mask is N bits long and + there are more than N class attributes then the bit mask is + logically extended with 0's to the required length." + + ::= { policyPrcSupportEntry 3 } + +-- +-- PIB Incarnation Table +-- + +policyDevicePibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyDevicePibIncarnationEntry + POLICY-ACCESS install-notify + STATUS current + DESCRIPTION + "This class contains a single policy rule instance that + identifies the current incarnation of the PIB and the PDP + or network manager that installed this incarnation. The + instance of this class is reported to the PDP at client + connect time so that the PDP can (attempt to) ascertain the + current state of the PIB. A network manager may use the + instance to determine the state of the device with regard + to existing NMS interactions." + + ::= { policyDeviceConfig 2 } + +policyDevicePibIncarnationEntry OBJECT-TYPE + SYNTAX PolicyDevicePibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the policyDevicePibIncarnation class. Only + + + one instance of this policy class is ever instantiated." + + INDEX { policyDevicePibIncarnationId } + ::= { policyDevicePibIncarnationTable 1 } + +PolicyDevicePibIncarnationEntry ::= SEQUENCE { + policyDevicePibIncarnationId PolicyInstanceId, + policyDevicePibIncarnationName SnmpAdminString, + policyDevicePibIncarnationId OCTET STRING, + policyDevicePibIncarnationTtl Unsigned32 +} + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + policy class." + + ::= { policyDevicePibIncarnationEntry 1 } + +policyDevicePibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The name of the entity that installed the current + incarnation of the PIB into the device. The name may + reference a PDP when dynamic configuration is being + used or a network manager when static configuration + is being used. By default, it is the zero length + string." + + ::= { policyDevicePibIncarnationEntry 2 } + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. By default, it is the zero-length + string." + + ::= { policyDevicePibIncarnationEntry 3 } + + +policyDevicePibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The number of seconds after a client close or TCP timeout + for which the PEP continues to enforce the policy in the PIB. + After this interval, the PIB is considered expired and the + device no longer enforces the policy installed in the PIB. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + + ::= { policyDevicePibIncarnationEntry 4 } + +END diff --git a/pibs/tubs/PPVPN-PIB b/pibs/tubs/PPVPN-PIB new file mode 100644 index 0000000..c857851 --- /dev/null +++ b/pibs/tubs/PPVPN-PIB @@ -0,0 +1,993 @@ + PPVPN-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + TruthValue, DisplayString + FROM SNMPv2-TC + RoleCombination, AttrIdentifier + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndexOrZero + FROM IF-MIB; + + + ppvpn2547PolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- PPVPN COPS Client Type + -- to be assigned by IANA + LAST-UPDATED "200203081800Z" + ORGANIZATION "IETF PPVPN WG" + CONTACT-INFO " + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe provider provisioned virtual private networks + (PPVPN) policies for BGP/MPLS VPN. It includes general + classes that may be extended by other PIB specifications as + well as a set of PIB classes related to PPVPNs." + REVISION "200203081800Z" + DESCRIPTION + "Initial version, published as RFC xxxx." + ::= { ibrpib 18 } -- xxx to be assigned by IANA + + +-- BGP/MPLS VPN specific Textual Conventions. + + Ppvpn2547RouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher." + SYNTAX OCTET STRING(SIZE (0..256)) + + Ppvpn2547RouteTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route target." + SYNTAX OCTET STRING(SIZE (0..256)) + + +-- BGP/MPLS VPN PIB module + + ppvpn2547CapabilityClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 1 } + ppvpn2547PolicyClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 2 } + ppvpn2547PibConformance + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 3 } + + +-- Capabilities Group + +-- +-- BGP/MPLS VPN PE Routing Capabilities +-- + + ppvpn2547RoutingCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RoutingCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class represents routing capabilities of a device + (PE)." + ::= { ppvpn2547CapabilityClasses 1 } + + ppvpn2547RoutingCapsEntry OBJECT-TYPE + SYNTAX Ppvpn2547RoutingCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547RoutingCaps class." + PIB-INDEX { ppvpn2547RoutingCapsPrid } + ::= { ppvpn2547RoutingCapsTable 1 } + + Ppvpn2547RoutingCapsEntry ::= SEQUENCE { + ppvpn2547RoutingCapsPrid InstanceId, + ppvpn2547RoutingCapsDistProtocol BITS, + ppvpn2547RoutingCapsMaxRoutes Unsigned32, + + ppvpn2547RoutingCapsMaxVrfs Unsigned32 + } + + ppvpn2547RoutingCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RoutingCapsEntry 1 } + + ppvpn2547RoutingCapsDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + DESCRIPTION + "Denotes the route distribution protocol supported by the PE + across the PE-CE links. Note that more than one routing + protocol may be enabled at the same time." + ::= { ppvpn2547RoutingCapsEntry 2 } + + ppvpn2547RoutingCapsMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 3 } + + ppvpn2547RoutingCapsMaxVrfs OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of VRF which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 4 } + + +-- +-- PE Interface Capabilities +-- + + ppvpn2547IfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547IfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " This class represents interfaces capabilities of a device + + (PE) in terms of MPLS support." + ::= { ppvpn2547CapabilityClasses 2 } + + ppvpn2547IfCapsEntry OBJECT-TYPE + SYNTAX Ppvpn2547IfCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547IfCaps class." + PIB-INDEX { ppvpn2547IfCapsPrid } + UNIQUENESS {} + ::= { ppvpn2547IfCapsTable 1 } + + Ppvpn2547IfCapsEntry ::= SEQUENCE { + ppvpn2547IfCapsPrid InstanceId, + ppvpn2547IfCapsMplsSupport INTEGER, + ppvpn2547IfCapsLabelEdgeType INTEGER + } + + ppvpn2547IfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfCapsEntry 1 } + + ppvpn2547IfCapsMplsSupport OBJECT-TYPE + SYNTAX INTEGER { nonMpls (0), + mpls (1), + mplsTunnel (2) + } + STATUS current + DESCRIPTION + " Denotes the interface type in accordance with [IFMIB] which + states that the interfaces tables contains information on + the managed resource's interfaces and each sub-layer bellow + the internetwork layer interface is considered as an + interface." + ::= { ppvpn2547IfCapsEntry 2 } + + ppvpn2547IfCapsLabelEdgeType OBJECT-TYPE + SYNTAX INTEGER { providerEdge (1), + customerEdge (2) + } + STATUS current + DESCRIPTION + " Either the providerEdge(0) or customerEdge(1) bit MUST be + set. Denotes if the interface is an exterior interface + (customerEdge) or a interior interface (providerEdge), + regarding to the provider network." + ::= { ppvpn2547IfCapsEntry 3 } + + + +-- BGP/MPLS VPN Policy Classes + +-- +-- BGP/MPLS VPN VRF Table +-- + + ppvpn2547VrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547VrfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class specifies BGP/MPLS VPN VRF Table associated + information. Entries in this table define VRF instances + associated with MPLS/VPN interfaces. Note that multiple + interfaces can belong to the same VRF instance." + ::= { ppvpn2547PolicyClasses 1 } + + ppvpn2547VrfEntry OBJECT-TYPE + SYNTAX Ppvpn2547VrfEntry + STATUS current + DESCRIPTION + "An entry in this table is created by the provider for + every VRF capable of supporting MPLS/BGP VPN." + PIB-INDEX { ppvpn2547VrfPrid } + UNIQUENESS { ppvpn2547VrfId, + ppvpn2547VrfRoles, + ppvpn2547VrfIfName, + ppvpn2547VrfRD } + ::= { ppvpn2547VrfTable 1 } + + Ppvpn2547VrfEntry ::= SEQUENCE { + ppvpn2547VrfPrid InstanceId, + ppvpn2547VrfRoles RoleCombination, + ppvpn2547VrfIfName SnmpAdminString, + ppvpn2547VrfId TagReferenceId, + ppvpn2547VrfDescription SnmpAdminString, + ppvpn2547VrfRD Ppvpn2547RouteDistinguisher, + ppvpn2547VrfMaxRoutes Unsigned32 + } + + ppvpn2547VrfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547VrfEntry 1 } + + ppvpn2547VrfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + + + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 2 } + + ppvpn2547VrfIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which the VRF is attached to. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable [FR-PIB] prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 3 } + + ppvpn2547VrfId OBJECT-TYPE + SYNTAX TagReferenceId + STATUS current + DESCRIPTION + "Identifies a VRF instance." + ::= { ppvpn2547VrfEntry 4 } + + ppvpn2547VrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + ::= { ppvpn2547VrfEntry 5 } + + ppvpn2547VrfRD OBJECT-TYPE + SYNTAX Ppvpn2547RouteDistinguisher + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + ::= { ppvpn2547VrfEntry 6 } + + ppvpn2547VrfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this VRF is + configured to hold." + ::= { ppvpn2547VrfEntry 7 } + + +-- +-- BGP/MPLS VPN Route Target Table +-- + + ppvpn2547RouteTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RouteTargetEntry + + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. Each + entry identifies a connectivity policy supported as part of a + VPN." + ::= { ppvpn2547PolicyClasses 2 } + + ppvpn2547RouteTargetEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteTargetEntry + STATUS current + DESCRIPTION + "An entry in this table is created for each route target + configured for a VRF supporting a MPLS/BGP VPN instance. The + precedence attribute provides an ordering per-VRF instance." + PIB-INDEX { ppvpn2547RouteTargetPrid} + UNIQUENESS { ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetType, +-- ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT + } + ::= { ppvpn2547RouteTargetTable 1 } + +Ppvpn2547RouteTargetEntry ::= SEQUENCE { + ppvpn2547RouteTargetPrid InstanceId, + ppvpn2547RouteTargetType INTEGER, + ppvpn2547RouteTargetVrfId TagId, +-- ppvpn2547RouteTargetPrecedence Unsigned32, + ppvpn2547RouteTargetRT Ppvpn2547RouteTarget, + ppvpn2547RouteTargetDescr DisplayString + } + + ppvpn2547RouteTargetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteTargetEntry 1 } + + ppvpn2547RouteTargetType OBJECT-TYPE + SYNTAX INTEGER { import(1), + export(2), + both(3) } + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547RouteTargetVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + " A VRF is composed of an import RT list and a export RT + list. Each RT belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which this RT is a part of. This + needs to be the value of ppvpn2547VrfId attribute for an + existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 3 } + + ppvpn2547RouteTargetRT OBJECT-TYPE + SYNTAX Ppvpn2547RouteTarget + STATUS current + DESCRIPTION + "The route target value." + ::= { ppvpn2547RouteTargetEntry 4 } + + ppvpn2547RouteTargetDescr OBJECT-TYPE + SYNTAX DisplayString + STATUS current + DESCRIPTION + "Description of the route target." + ::= { ppvpn2547RouteTargetEntry 5 } + + +-- +-- BGP/MPLS VPN Interface Table +-- + + ppvpn2547IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547IfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-interface configuration information + related to PE-CE links." + ::= { ppvpn2547PolicyClasses 3 } + + ppvpn2547IfEntry OBJECT-TYPE + SYNTAX Ppvpn2547IfEntry + STATUS current + DESCRIPTION + "An entry in this table is created for every interface type + supporting MPLS/BGP VPN. Each entry in this table is meant to + correspond to an entry in the Interfaces Table." + PIB-INDEX { ppvpn2547IfPrid } + UNIQUENESS { ppvpn2547IfRoles, + ppvpn2547IfName } + ::= { ppvpn2547IfTable 1 } + + Ppvpn2547IfEntry ::= SEQUENCE { + ppvpn2547IfPrid InstanceId, + ppvpn2547IfRoles RoleCombination, + ppvpn2547IfName SnmpAdminString, + ppvpn2547IfVpnClassification INTEGER, + ppvpn2547IfRouteDistProtocol BITS + + } + + ppvpn2547IfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfEntry 1 } + + ppvpn2547IfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to configure. The interface + capability name specified by this attribute must exist in the + frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class." + ::= { ppvpn2547IfEntry 2 } + + + ppvpn2547IfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547IfEntry 3 } + + ppvpn2547IfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + STATUS current + DESCRIPTION + "Denotes whether this link participates in a carrier-of- + carrier's, enterprise, or inter-provider scenario." + ::= { ppvpn2547IfEntry 4 } + + ppvpn2547IfRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + + DESCRIPTION + "Denotes the route distribution protocol across the PE-CE + link. Note that more than one routing protocol may be enabled + at the same time." + ::= { ppvpn2547IfEntry 5 } + + +-- +-- BGP/MPLS VPN BGP Peer Address Table +-- + + ppvpn2547BgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547BgpPeerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each entry in this table specifies a per-interface + MPLS/BGP neighbor." + ::= { ppvpn2547PolicyClasses 5 } + + ppvpn2547BgpPeerEntry OBJECT-TYPE + SYNTAX Ppvpn2547BgpPeerEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS/BGP VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547BgpPeerPrid } + UNIQUENESS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + ::= { ppvpn2547BgpPeerTable 1 } + + Ppvpn2547BgpPeerEntry ::= SEQUENCE { + ppvpn2547BgpPeerPrid InstanceId, + ppvpn2547BgpPeerVrfId TagId, + ppvpn2547BgpPeerRole INTEGER, + ppvpn2547BgpPeerAddrType InetAddressType, + ppvpn2547BgpPeerAddr InetAddress + } + + ppvpn2547BgpPeerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547BgpPeerEntry 1 } + + ppvpn2547BgpPeerVrfId OBJECT-TYPE + SYNTAX TagId + + STATUS current + DESCRIPTION + "Each BGP neighbor to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which VRF this device is the + neighbor. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547BgpPeerEntry 2 } + + ppvpn2547BgpPeerRole OBJECT-TYPE + SYNTAX INTEGER { ce(1), + pe(2) + } + STATUS current + DESCRIPTION + "Denotes the role played by this BGP neighbor + with respect to this VRF." + ::= { ppvpn2547BgpPeerEntry 3 } + + ppvpn2547BgpPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Denotes the address family of the PE address." + ::= { ppvpn2547BgpPeerEntry 4 } + + ppvpn2547BgpPeerAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Denotes the EBGP neighbor address." + ::= { ppvpn2547BgpPeerEntry 5 } + + +-- +-- VRF Routing Table +-- + + ppvpn2547RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RouteEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF MPLS/BGP VPN routing + information. Entries in this table define VRF routing entries + associated with the specified MPLS/VPN interfaces. Note + that this table contains both BGP and IGP routes, as both may + appear in the same VRF." + ::= { ppvpn2547PolicyClasses 4 } + + ppvpn2547RouteEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547RoutePrid } + UNIQUENESS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteMask, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop } + ::= { ppvpn2547RouteTable 1 } + + Ppvpn2547RouteEntry ::= SEQUENCE { + ppvpn2547RoutePrid InstanceId, + ppvpn2547RouteVrfId TagId, + ppvpn2547RouteDest InetAddress, + ppvpn2547RouteDestAddrType InetAddressType, + ppvpn2547RouteMask InetAddress, + ppvpn2547RouteMaskAddrType InetAddressType, + ppvpn2547RouteTos Unsigned32, + ppvpn2547RouteNextHop InetAddress, + ppvpn2547RouteNextHopAddrType InetAddressType, + ppvpn2547RouteIfIndex InterfaceIndexOrZero, + ppvpn2547RouteType INTEGER, + ppvpn2547RouteProto INTEGER, + ppvpn2547RouteInfo OBJECT IDENTIFIER, + ppvpn2547RouteNextHopAS Unsigned32, + ppvpn2547RouteMetric1 Integer32, + ppvpn2547RouteMetric2 Integer32, + ppvpn2547RouteMetric3 Integer32, + ppvpn2547RouteMetric4 Integer32, + ppvpn2547RouteMetric5 Integer32 + } + + ppvpn2547RoutePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteEntry 1 } + + ppvpn2547RouteVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Each route belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which routing table this route is + a part of. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteEntry 2 } + + ppvpn2547RouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address of this route. + This object may not take a Multicast (Class D) + address value. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteMask object is not equal to x." + ::= { ppvpn2547RouteEntry 3 } + + ppvpn2547RouteDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteDest + entry." + ::= { ppvpn2547RouteEntry 4 } + + ppvpn2547RouteMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to + the value in the ppvpn2547RouteDest field. + For those systems that do not support + arbitrary subnet masks, an agent constructs the + value of the ppvpn2547RouteMask by reference + to the IP Address Class. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteDest object is not equal to + ppvpn2547RouteDest." + ::= { ppvpn2547RouteEntry 5 } + + ppvpn2547RouteMaskAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of ppvpn2547RouteMask." + ::= { ppvpn2547RouteEntry 6 } + + ppvpn2547RouteTos OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The IP TOS Field is used to specify the policy to + be applied to this route. The encoding of IP TOS + + + is as specified by the following convention. + Zero indicates the default path if no more + specific policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30." + ::= { ppvpn2547RouteEntry 7 } + + ppvpn2547RouteNextHop OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; Otherwise, 0.0.0.0. ." + ::= { ppvpn2547RouteEntry 8 } + + ppvpn2547RouteNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteNextHopAddrType + object." + ::= { ppvpn2547RouteEntry 9 } + + ppvpn2547RouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local + interface through which the next hop of this + route should be reached. If this value is set to 0, + this indicates that no interface is associated with + this route." + ::= { ppvpn2547RouteEntry 10 } + + ppvpn2547RouteType OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + reject (2), -- route to discard traffic + + local (3), -- local interface + remote (4) -- remote destination + } + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers + to a route for which the next hop is the final + destination; remote(4) refers to a route for + that the next hop is not the final destination. + Routes which do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + Reject (2) refers to a route which, if matched, + discards the message as unreachable. This is used + in some protocols as a means of correctly aggregating + routes." + ::= { ppvpn2547RouteEntry 11 } + + ppvpn2547RouteProto OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway rout- + ing protocols is not intended to imply that + hosts should support those protocols." + ::= { ppvpn2547RouteEntry 12 } + + ppvpn2547RouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "A reference to MIB definitions specific to the + + particular routing protocol which is responsi- + ble for this route, as determined by the value + specified in the route's ppvpn2547RouteProto + value. If this information is not present, its + value SHOULD be set to the OBJECT IDENTIFIER + { 0 0 }, which is a syntactically valid object + identif-ier, and any implementation conforming + to ASN.1 and the Basic Encoding Rules must be + able to generate and recognize this value." + ::= { ppvpn2547RouteEntry 13 } + + ppvpn2547RouteNextHopAS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ppvpn2547RouteEntry 14 } + + ppvpn2547RouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The primary routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 15 } + + ppvpn2547RouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 16 } + + ppvpn2547RouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 17 } + + ppvpn2547RouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 18 } + + ppvpn2547RouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 19 } + + + -- + -- Conformance Section + -- + + + + ppvpn2547PibCompliances + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 1 } + ppvpn2547PibGroups + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 2 } + + ppvpn2547PibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + PPVPN BGP/MPLS VPN Policy PIB." + + MODULE -- this module + MANDATORY-GROUPS { + ppvpn2547PibVrfGroup, + ppvpn2547PibRouteTargetGroup, + ppvpn2547PibIfGroup, + ppvpn2547PibBgpPeerGroup, + ppvpn2547PibRouteGroup + } + ::= { ppvpn2547PibCompliances 1 } + + ppvpn2547PibVrfGroup OBJECT-GROUP + OBJECTS { ppvpn2547VrfRoles, + + ppvpn2547VrfIfName, + ppvpn2547VrfId, + ppvpn2547VrfDescription, + ppvpn2547VrfRD, + ppvpn2547VrfMaxRoutes + } + STATUS current + DESCRIPTION + "The VRF Group defines the PIB Objects that describe a VRF." + ::= { ppvpn2547PibGroups 1 } + + ppvpn2547PibRouteTargetGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteTargetType, + ppvpn2547RouteTargetVrfId, +-- ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT, + ppvpn2547RouteTargetDescr + } + STATUS current + DESCRIPTION + "The Route Target Group defines the PIB Objects that describe + a Route Target." + ::= { ppvpn2547PibGroups 2 } + + ppvpn2547PibIfGroup OBJECT-GROUP + OBJECTS { ppvpn2547IfRoles, + ppvpn2547IfName, + ppvpn2547IfVpnClassification, + ppvpn2547IfRouteDistProtocol + } + STATUS current + DESCRIPTION + "The Interface Group defines the PIB Objects that + describe a Interface." + ::= { ppvpn2547PibGroups 3 } + + ppvpn2547PibBgpPeerGroup OBJECT-GROUP + OBJECTS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerRole, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + STATUS current + DESCRIPTION + "The BGP Peer Group defines the PIB Objects that + describe a BGP Peer." + ::= { ppvpn2547PibGroups 4 } + + ppvpn2547PibRouteGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteDestAddrType, + + ppvpn2547RouteMask, + ppvpn2547RouteMaskAddrType, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop, + ppvpn2547RouteNextHopAddrType, + ppvpn2547RouteIfIndex, + + ppvpn2547RouteType, + ppvpn2547RouteProto, + ppvpn2547RouteInfo, + ppvpn2547RouteNextHopAS, + ppvpn2547RouteMetric1, + ppvpn2547RouteMetric2, + ppvpn2547RouteMetric3, + ppvpn2547RouteMetric4, + ppvpn2547RouteMetric5 + } + STATUS current + DESCRIPTION + "The Route Group defines the PIB Objects that + describe a Route." + ::= { ppvpn2547PibGroups 5 } + +END diff --git a/pibs/tubs/PPVPN-PIB-orig b/pibs/tubs/PPVPN-PIB-orig new file mode 100644 index 0000000..eda13b6 --- /dev/null +++ b/pibs/tubs/PPVPN-PIB-orig @@ -0,0 +1,987 @@ + PPVPN-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + RoleCombination, PrcIdentifier, AttrIdentifier + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + + + ppvpn2547PolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { tbd } -- PPVPN COPS Client Type + -- to be assigned by IANA + LAST-UPDATED "200203081800Z" + ORGANIZATION "IETF PPVPN WG" + CONTACT-INFO " + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe provider provisioned virtual private networks + (PPVPN) policies for BGP/MPLS VPN. It includes general + classes that may be extended by other PIB specifications as + well as a set of PIB classes related to PPVPNs." + REVISION "200203081800Z" + DESCRIPTION + "Initial version, published as RFC xxxx." + ::= { pib xxx } -- xxx to be assigned by IANA + + +-- BGP/MPLS VPN specific Textual Conventions. + + ppvpn2547RouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher." + SYNTAX OCTET STRING(SIZE (0..256)) + + ppvpn2547RouteTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route target." + SYNTAX OCTET STRING(SIZE (0..256)) + + +-- BGP/MPLS VPN PIB module + + ppvpn2547CapabilityClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 1 } + ppvpn2547PolicyClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 2 } + ppvpn2547PibConformance + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 3 } + + +-- Capabilities Group + +-- +-- BGP/MPLS VPN PE Routing Capabilities +-- + + ppvpn2547RoutingCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RoutingCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class represents routing capabilities of a device + (PE)." + ::= { ppvpn2547CapabilitiesClasses 1 } + + ppvpn2547RoutingCapsEntry OBJECT-TYPE + SYNTAX ppvpn2547RoutingCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547RoutingCaps class." + PIB-INDEX { ppvpn2547RoutingCapsPrid } + ::= { ppvpn2547RoutingCapsTable 1 } + + ppvpn2547RoutingCapsEntry ::= SEQUENCE { + ppvpn2547RoutingCapsPrid InstanceId, + ppvpn2547RoutingCapsDistProtocol BITS, + ppvpn2547RoutingCapsMaxRoutes unsigned32, + + ppvpn2547RoutingCapsMaxVrfs unsigned32 + } + + ppvpn2547RoutingCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RoutingCapsEntry 1 } + + ppvpn2547RoutingCapsDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + DESCRIPTION + "Denotes the route distribution protocol supported by the PE + across the PE-CE links. Note that more than one routing + protocol may be enabled at the same time." + ::= { ppvpn2547RoutingCapsEntry 2 } + + ppvpn2547RoutingCapsMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 3 } + + ppvpn2547RoutingCapsMaxVrfs OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of VRF which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 4 } + + +-- +-- PE Interface Capabilities +-- + + ppvpn2547IfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547IfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " This class represents interfaces capabilities of a device + + (PE) in terms of MPLS support." + ::= { ppvpn2547CapabilitiesClasses 2 } + + ppvpn2547IfCapsEntry OBJECT-TYPE + SYNTAX ppvpn2547IfCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547IfCaps class." + PIB-INDEX { ppvpn2547IfCapsPrid } + UNIQUENESS {} + ::= { ppvpn2547IfCapsTable 1 } + + ppvpn2547IfCapsEntry ::= SEQUENCE { + ppvpn2547IfCapsPrid InstanceId, + ppvpn2547IfCapsMplsSupport INTEGER, + ppvpn2547IfCapsLabelEdgeType INTEGER + } + + ppvpn2547IfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfCapsEntry 1 } + + ppvpn2547IfCapsMplsSupport OBJECT-TYPE + SYNTAX INTEGER { nonMpls (0), + mpls (1), + mplsTunnel (2) + } + STATUS current + DESCRIPTION + " Denotes the interface type in accordance with [IFMIB] which + states that the interfaces tables contains information on + the managed resource's interfaces and each sub-layer bellow + the internetwork layer interface is considered as an + interface." + ::= { ppvpn2547IfCapsEntry 2 } + + ppvpn2547IfCapsLabelEdgeType OBJECT-TYPE + SYNTAX INTEGER { providerEdge (1), + customerEdge (2) + } + STATUS current + DESCRIPTION + " Either the providerEdge(0) or customerEdge(1) bit MUST be + set. Denotes if the interface is an exterior interface + (customerEdge) or a interior interface (providerEdge), + regarding to the provider network." + ::= { ppvpn2547IfCapsEntry 3 } + + + +-- BGP/MPLS VPN Policy Classes + +-- +-- BGP/MPLS VPN VRF Table +-- + + ppvpn2547VrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547VrfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class specifies BGP/MPLS VPN VRF Table associated + information. Entries in this table define VRF instances + associated with MPLS/VPN interfaces. Note that multiple + interfaces can belong to the same VRF instance." + ::= { ppvpnPolicyClasses 1 } + + ppvpn2547VrfEntry OBJECT-TYPE + SYNTAX ppvpn2547VrfEntry + STATUS current + DESCRIPTION + "An entry in this table is created by the provider for + every VRF capable of supporting MPLS/BGP VPN." + PIB-INDEX { ppvpn2547VrfPrid } + UNIQUENESS { ppvpn2547VrfId, + ppvpn2547VrfRoles, + ppvpn2547IfName, + ppvpn2547VrfRD } + ::= { ppvpn2547VrfTable 1 } + + ppvpn2547VrfEntry ::= SEQUENCE { + ppvpn2547VrfPrid InstanceId, + ppvpn2547VrfRoles RoleCombination, + ppvpn2547VrfIfName SnmpAdminString, + ppvpn2547VrfId TagReferenceId, + ppvpn2547VrfDescription SnmpAdminString, + ppvpn2547VrfRD ppvpn2547RouteDistinguisher, + ppvpn2547VrfMaxRoutes Unsigned32, + } + + ppvpn2547VrfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547VrfEntry 1 } + + ppvpn2547VrfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + + + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 2 } + + ppvpn2547VrfIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which the VRF is attached to. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable [FR-PIB] prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 3 } + + ppvpn2547VrfId OBJECT-TYPE + SYNTAX TagReferenceId + STATUS current + DESCRIPTION + "Identifies a VRF instance." + ::= { ppvpn2547VrfEntry 4 } + + ppvpn2547VrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + ::= { ppvpn2547VrfEntry 5 } + + ppvpn2547VrfRD OBJECT-TYPE + SYNTAX Ppvpn2547RouteDistinguisher + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + ::= { ppvpn2547VrfEntry 6 } + + ppvpn2547VrfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this VRF is + configured to hold." + ::= { ppvpn2547VrfEntry 7 } + + +-- +-- BGP/MPLS VPN Route Target Table +-- + + ppvpn2547RouteTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RouteTargetEntry + + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. Each + entry identifies a connectivity policy supported as part of a + VPN." + ::= { ppvpn2547PolicyClasses 2 } + + ppvpn2547RouteTargetEntry OBJECT-TYPE + SYNTAX ppvpn2547RouteTargetEntry + STATUS current + DESCRIPTION + "An entry in this table is created for each route target + configured for a VRF supporting a MPLS/BGP VPN instance. The + precedence attribute provides an ordering per-VRF instance." + PIB-INDEX { ppvpn2547RouteTargetPrid} + UNIQUENESS { ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetType, + ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT + } + ::= { ppvpn2547RouteTargetTable 1 } + +ppvpn2547RouteTargetEntry ::= SEQUENCE { + ppvpn2547RouteTargetPrid InstanceId, + ppvpn2547RouteTargetType INTEGER, + ppvpn2547RouteTargetVrfId TagId, + ppvpn2547RouteTargetPrecedence unsigned32, + ppvpn2547RouteTargetRT ppvpn2547RouteTarget, + ppvpn2547RouteTargetDescr DisplayString, + } + + ppvpn2547RouteTargetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteTargetEntry 1 } + + ppvpn2547RouteTargetType OBJECT-TYPE + SYNTAX INTEGER { import(1), + export(2), + both(3) } + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547RouteTargetVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + " A VRF is composed of an import RT list and a export RT + list. Each RT belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which this RT is a part of. This + needs to be the value of ppvpn2547VrfId attribute for an + existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 3 } + + ppvpn2547RouteTargetRT OBJECT-TYPE + SYNTAX ppvpn2547RouteTarget + STATUS current + DESCRIPTION + "The route target value." + ::= { ppvpn2547RouteTargetEntry 4 } + + ppvpn2547RouteTargetDescr OBJECT-TYPE + SYNTAX DisplayString + STATUS current + DESCRIPTION + "Description of the route target." + ::= { ppvpn2547RouteTargetEntry 5 } + + +-- +-- BGP/MPLS VPN Interface Table +-- + + ppvpn2547IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547IfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-interface configuration information + related to PE-CE links." + ::= { ppvpn2547PolicyClasses 3 } + + ppvpn2547IfEntry OBJECT-TYPE + SYNTAX ppvpn2547IfEntry + STATUS current + DESCRIPTION + "An entry in this table is created for every interface type + supporting MPLS/BGP VPN. Each entry in this table is meant to + correspond to an entry in the Interfaces Table." + PIB-INDEX { ppvpn2547IfPrid } + UNIQUENESS { ppvpn2547IfRoles, + Ppvpn2547IfName } + ::= { ppvpn2547IfTable 1 } + + ppvpn2547IfEntry ::= SEQUENCE { + ppvpn2547IfPrid InstanceId, + ppvpn2547IfRoles RoleCombination, + ppvpn2547IfName SnmpAdminString, + ppvpn2547IfVpnClassification INTEGER, + ppvpn2547IfRouteDistProtocol BITS + + } + + ppvpn2547IfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfEntry 1 } + + ppvpn2547IfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to configure. The interface + capability name specified by this attribute must exist in the + frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class." + ::= { ppvpn2547IfEntry 2 } + + + ppvpn2547IfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current 7 + DESCRIPTION + "The interfaces to which the VRF is attached to, + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547IfEntry 3 } + + ppvpn2547IfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + STATUS current + DESCRIPTION + "Denotes whether this link participates in a carrier-of- + carrier's, enterprise, or inter-provider scenario." + ::= { ppvpn2547IfEntry 4 } + + ppvpn2547IfRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + + DESCRIPTION + "Denotes the route distribution protocol across the PE-CE + link. Note that more than one routing protocol may be enabled + at the same time." + ::= { ppvpn2547IfEntry 5 } + + +-- +-- BGP/MPLS VPN BGP Peer Address Table +-- + + ppvpn2547BgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547BgpPeerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each entry in this table specifies a per-interface + MPLS/BGP neighbor." + ::= { ppvpnPolicyClasses 4 } + + ppvpn2547BgpPeerEntry OBJECT-TYPE + SYNTAX ppvpn2547BgpPeerEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS/BGP VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547BgpPeerPrid } + UNIQUENESS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + ::= { ppvpn2547BgpPeerTable 1 } + + ppvpn2547BgpPeerEntry ::= SEQUENCE { + ppvpn2547BgpPeerPrid InstanceId, + ppvpn2547BgpPeerVrfId TagId, + ppvpn2547BgpPeerRole INTEGER, + ppvpn2547BgpPeerAddrType InetAddressType, + ppvpn2547BgpPeerAddr InetAddress + } + + ppvpn2547BgpPeerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547BgpPeerEntry 1 } + + ppvpn2547BgpPeerVrfId OBJECT-TYPE + SYNTAX TagId + + STATUS current + DESCRIPTION + "Each BGP neighbor to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which VRF this device is the + neighbor. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547BgpPeerRole OBJECT-TYPE + SYNTAX INTEGER { ce(1), + pe(2) + } + STATUS current + DESCRIPTION + "Denotes the role played by this BGP neighbor + with respect to this VRF." + ::= { ppvpn2547BgpPeerEntry 3 } + + ppvpn2547BgpPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Denotes the address family of the PE address." + ::= { ppvpn2547BgpPeerEntry 4 } + + ppvpn2547BgpPeerAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Denotes the EBGP neighbor address." + ::= { ppvpn2547BgpPeerEntry 5 } + + +-- +-- VRF Routing Table +-- + + ppvpn2547RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "This table specifies per-VRF MPLS/BGP VPN routing + information. Entries in this table define VRF routing entries + associated with the specified MPLS/VPN interfaces. Note + that this table contains both BGP and IGP routes, as both may + appear in the same VRF." + ::= { ppvpn2547PolicyClasses 1 } + + ppvpn2547RouteEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547RoutePrid } + UNIQUENESS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteMask, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop } + ::= { ppvpn2547RouteTable 1 } + + ppvpn2547RouteEntry ::= SEQUENCE { + ppvpn2547RoutePrid InstanceId, + ppvpn2547RouteVrfId TagId, + ppvpn2547RouteDest InetAddress, + ppvpn2547RouteDestAddrType InetAddressType, + ppvpn2547RouteMask InetAddress, + ppvpn2547RouteMaskAddrType InetAddressType, + ppvpn2547RouteTos Unsigned32, + ppvpn2547RouteNextHop InetAddress, + ppvpn2547RouteNextHopAddrType InetAddressType, + ppvpn2547RouteIfIndex InterfaceIndexOrZero, + ppvpn2547RouteType INTEGER, + ppvpn2547RouteProto INTEGER, + ppvpn2547RouteInfo OBJECT IDENTIFIER, + ppvpn2547RouteNextHopAS Unsigned32, + ppvpn2547RouteMetric1 Integer32, + ppvpn2547RouteMetric2 Integer32, + ppvpn2547RouteMetric3 Integer32, + ppvpn2547RouteMetric4 Integer32, + ppvpn2547RouteMetric5 Integer32 + } + + ppvpn2547RoutePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteEntry 1 } + + ppvpn2547RouteVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Each route belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which routing table this route is + a part of. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteEntry 2 } + + ppvpn2547RouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address of this route. + This object may not take a Multicast (Class D) + address value. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteMask object is not equal to x." + ::= { ppvpn2547RouteEntry 3 } + + ppvpn2547RouteDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteDest + entry." + ::= { ppvpn2547RouteEntry 4 } + + ppvpn2547RouteMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to + the value in the ppvpn2547RouteDest field. + For those systems that do not support + arbitrary subnet masks, an agent constructs the + value of the ppvpn2547RouteMask by reference + to the IP Address Class. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteDest object is not equal to + ppvpn2547RouteDest." + ::= { ppvpn2547RouteEntry 5 } + + ppvpn2547RouteMaskAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of ppvpn2547RouteMask." + ::= { ppvpn2547RouteEntry 6 } + + ppvpn2547RouteTos OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The IP TOS Field is used to specify the policy to + be applied to this route. The encoding of IP TOS + + + is as specified by the following convention. + Zero indicates the default path if no more + specific policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30." + ::= { ppvpn2547RouteEntry 7 } + + ppvpn2547RouteNextHop OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; Otherwise, 0.0.0.0. ." + ::= { ppvpn2547RouteEntry 8 } + + ppvpn2547RouteNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteNextHopAddrType + object." + ::= { ppvpn2547RouteEntry 9 } + + ppvpn2547RouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local + interface through which the next hop of this + route should be reached. If this value is set to 0, + this indicates that no interface is associated with + this route." + ::= { ppvpn2547RouteEntry 10 } + + ppvpn2547RouteType OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + reject (2), -- route to discard traffic + + local (3), -- local interface + remote (4) -- remote destination + } + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers + to a route for which the next hop is the final + destination; remote(4) refers to a route for + that the next hop is not the final destination. + Routes which do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + Reject (2) refers to a route which, if matched, + discards the message as unreachable. This is used + in some protocols as a means of correctly aggregating + routes." + ::= { ppvpn2547RouteEntry 11 } + + ppvpn2547RouteProto OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway rout- + ing protocols is not intended to imply that + hosts should support those protocols." + ::= { ppvpn2547RouteEntry 12 } + + ppvpn2547RouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "A reference to MIB definitions specific to the + + particular routing protocol which is responsi- + ble for this route, as determined by the value + specified in the route's ppvpn2547RouteProto + value. If this information is not present, its + value SHOULD be set to the OBJECT IDENTIFIER + { 0 0 }, which is a syntactically valid object + identif-ier, and any implementation conforming + to ASN.1 and the Basic Encoding Rules must be + able to generate and recognize this value." + ::= { ppvpn2547RouteEntry 13 } + + ppvpn2547RouteNextHopAS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ppvpn2547RouteEntry 14 } + + ppvpn2547RouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The primary routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 15 } + + ppvpn2547RouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 16 } + + ppvpn2547RouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 17 } + + ppvpn2547RouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 18 } + + ppvpn2547RouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 19 } + + + -- + -- Conformance Section + -- + + + + ppvpn2547PibCompliances + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 1 } + ppvpn2547PibGroups + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 2 } + + ppvpn2547PibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + PPVPN BGP/MPLS VPN Policy PIB." + + MODULE -- this module + MANDATORY-GROUPS { + ppvpn2547PibVrfGroup, + ppvpn2547PibRouteTargetGroup, + ppvpn2547PibIfGroup, + ppvpn2547PibBgpPeerGroup, + ppvpn2547PibRouteGroup + ::= { ppvpn2547PibCompliances 1 } + + ppvpn2547PibVrfGroup OBJECT-GROUP + OBJECTS { ppvpn2547VrfRoles, + + ppvpn2547VrfIfName, + ppvpn2547VrfId, + ppvpn2547VrfDescription, + ppvpn2547VrfRD, + ppvpn2547VrfMaxRoutes + } + STATUS current + DESCRIPTION + "The VRF Group defines the PIB Objects that describe a VRF." + ::= { ppvpn2547PibGroups 1 } + + ppvpn2547PibRouteTargetGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteTargetType, + ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT, + ppvpn2547RouteTargetDescr + } + STATUS current + DESCRIPTION + "The Route Target Group defines the PIB Objects that describe + a Route Target." + ::= { ppvpn2547PibGroups 2 } + + ppvpn2547PibIfGroup OBJECT-GROUP + OBJECTS { ppvpn2547IfRoles, + ppvpn2547IfName, + ppvpn2547IfVrfId, + ppvpn2547IfVpnClassification, + ppvpn2547IfRouteDistProtocol + } + STATUS current + DESCRIPTION + "The Interface Group defines the PIB Objects that + describe a Interface." + ::= { ppvpn2547PibGroups 3 } + + ppvpn2547PibBgpPeerGroup OBJECT-GROUP + OBJECTS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerRole, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + STATUS current + DESCRIPTION + "The BGP Peer Group defines the PIB Objects that + describe a BGP Peer." + ::= { ppvpn2547PibGroups 4 } + + ppvpn2547PibRouteGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteDestAddrType, + + ppvpn2547RouteMask, + ppvpn2547RouteMaskAddrType, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop, + ppvpn2547RouteNextHopAddrType, + ppvpn2547RouteIfIndex, + + ppvpn2547RouteType, + ppvpn2547RouteProto, + ppvpn2547RouteAge, + ppvpn2547RouteInfo, + ppvpn2547RouteNextHopAS, + ppvpn2547RouteMetric1, + ppvpn2547RouteMetric2, + ppvpn2547RouteMetric3, + ppvpn2547RouteMetric4, + ppvpn2547RouteMetric5 + } + STATUS current + DESCRIPTION + "The Route Group defines the PIB Objects that + describe a Route." + ::= { ppvpn2547PibGroups 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-802-PIB b/pibs/tubs/QOS-POLICY-802-PIB new file mode 100644 index 0000000..4534327 --- /dev/null +++ b/pibs/tubs/QOS-POLICY-802-PIB @@ -0,0 +1,608 @@ +QOS-POLICY-802-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, PhysAddress, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM POLICY-FRAMEWORK-PIB + Dscp + FROM QOS-POLICY-IP-PIB + pib + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC; + +qosPolicy802Pib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be assigned + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies supported by devices for IEEE 802- + based traffic." + + ::= { ibrpib 5 } -- to be assigned ! + +qosPolicy802PibClasses OBJECT IDENTIFIER ::= { qosPolicy802Pib 1 } + +-- +-- Textual Conventions +-- + +-- +-- IEEE 802 CoS +-- + +QosIeee802Cos ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the IEEE 802 CoS + values. This corresponds to the 802.1p priority values." + + SYNTAX INTEGER (0..7) + +-- +-- General configuration information for the entire domain +-- + +qos802DomainConfig OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 1 } + +-- +-- Differentiated Services Code Point Mapping Table +-- +-- Supports the mapping of DSCP values to IEEE CoS values. +-- + +qos802DscpMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802DscpMappingEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Maps each DSCP to an QosIeee802Cos. When configured + for the first time, all 64 entries of the table must + be specified. Thereafter, instances may be modified but + not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 1 } + +qos802DscpMappingEntry OBJECT-TYPE + SYNTAX Qos802DscpMappingEntry + STATUS current + DESCRIPTION + "An instance of the qos802DscpMapping class. A total of 64 + class instances are constantly maintained after initial device + configuration." + + PIB-INDEX { qos802DscpMappingId } + ::= { qos802DscpMappingTable 1 } + +Qos802DscpMappingEntry ::= SEQUENCE { + qos802DscpMappingId InstanceId, + qos802DscpMappingDscp Dscp, + qos802DscpMapping802Cos QosIeee802Cos +} + +qos802DscpMappingId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "A unique ID for this policy rule instance." + + ::= { qos802DscpMappingEntry 1 } + +qos802DscpMappingDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP class instance attribute that is used to + determine the appropriate layer 2 CoS mappings. DSCP + values 0 through 63 (inclusive) are maintained in + the table." + + ::= { qos802DscpMappingEntry 2 } + +qos802DscpMapping802Cos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The IEEE 802 CoS value to use when mapping the DSCP + value specified by the qos802DscpMappingDscp attribute + to a IEEE 802 CoS." + + ::= { qos802DscpMappingEntry 3 } + +-- +-- Layer 2 CoS-to-DSCP Mapping Table +-- +-- Supports the mapping of IEEE CoS values to DSCP values +-- for generic QoS traffic classification +-- + +qos802CosToDscpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802CosToDscpEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Maps each of eight layer 2 CoS values to a DSCP. When + configured for the first time, all 8 entries of the table + must be specified. Thereafter, instances may be modified + but not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 2 } + +qos802CosToDscpEntry OBJECT-TYPE + SYNTAX Qos802CosToDscpEntry + STATUS current + DESCRIPTION + "An instance of the qosCosToDscp class. A total of 8 + class instances are constantly maintained after initial + device configuration." + + PIB-INDEX { qos802CosToDscpId } + ::= { qos802CosToDscpTable 1 } + +Qos802CosToDscpEntry ::= SEQUENCE { + qos802CosToDscpId InstanceId, + qos802CosToDscpCos QosIeee802Cos, + qos802CosToDscpDscp Dscp +} + +qos802CosToDscpId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + + DESCRIPTION + "A unique index for this policy rule instance." + + ::= { qos802CosToDscpEntry 1 } + +qos802CosToDscpCos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The layer 2 CoS class instance attribute that is used to + determine the appropriate DSCP mappings. CoS values 0 + through 7 (inclusive) are maintained in the table." + + ::= { qos802CosToDscpEntry 2 } + +qos802CosToDscpDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP value to use when mapping the layer 2 CoS value + specified by the qosCosToDscp attribute to a DSCP." + + ::= { qos802CosToDscpEntry 3 } + +-- +-- The IEEE 802 Classification and Policing Group +-- + +qos802Qos OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 2 } + +-- +-- The IEEE 802 ACE Table +-- +-- The IEEE 802 ACE Table supports the specification of IEEE +-- 802-based (e.g., 802.3) information that is used to perform +-- traffic classification. +-- + +qos802AceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + + an association that is used to perform traffic + classification." + + ::= { qos802Qos 1 } + +qos802AceEntry OBJECT-TYPE + SYNTAX Qos802AceEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + PIB-INDEX { qos802AceId } + ::= { qos802AceTable 1 } + +Qos802AceEntry ::= SEQUENCE { + qos802AceId InstanceId, + qos802AceDstAddr PhysAddress, + qos802AceDstAddrMask PhysAddress, + qos802AceSrcAddr PhysAddress, + qos802AceSrcAddrMask PhysAddress, + qos802AceVlanId Integer32, + qos802AceVlanTagRequired INTEGER, + qos802AceEtherType Integer32, + qos802AceUserPriority BITS, + qos802AcePermit TruthValue +} + +qos802AceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE among all of the 802 ACEs. Note that this identifier + is used in instances of the qos802Acl class to associate a + 802 ACE with a 802 ACL. An active ACE/ACL association + prohibits the deletion of the 802 ACE until the ACE/ACL + + association is terminated. Class instances may not be + contiguous." + + ::= { qos802AceEntry 1 } + +qos802AceDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming traffic + streams will be compared. Frames whose 802 DA matches the + physical address specified by this object, taking into account + address wildcarding as specified by the qos802AceDstAddrMask + object, are potentially subject to the processing guidelines + that are associated with this entry through the related + action class." + + ::= { qos802AceEntry 2 } + +qos802AceDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA comparison + against the address specified in the qos802AceDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the value + to be compared against the qos802AceDstAddr address. A zero + bit in the mask thus means that the corresponding bit in the + address always matches. The qos802AceDstAddr value must also + be masked using this value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceDstAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceDstAddr object." + + ::= { qos802AceEntry 3 } + +qos802AceSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + + "The 802 MAC address against which the 802 MAC SA of incoming + traffic streams will be compared. Frames whose 802 MAC SA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + qos802AceSrcAddrMask object, are potentially subject to the + processing guidelines that are associated with this entry + through the related action class." + + ::= { qos802AceEntry 4 } + +qos802AceSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + qos802AceSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the qos802AceSrcAddr address. A + zero bit in the mask thus means that the corresponding bit + in the address always matches. The qos802AceSrcAddr value + must also be masked using this value prior to any + comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceSrcAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceSrcAddr object." + + ::= { qos802AceEntry 5 } + +qos802AceVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the qos802AceVlanId object to -1 indicates that + + VLAN data should not be considered during traffic + classification." + + ::= { qos802AceEntry 6 } + +qos802AceVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 ACE entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { qos802AceEntry 7 } + +qos802AceEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the qos802AceEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows the + Organization Code field in the 802.2 SNAP header. The value + that is tested with regard to this filter component therefore + depends on the data link layer frame format being used. If + this 802 ACE component is active when there is no EtherType + field in a frame (e.g., 802.2 LLC), a match is implied." + + ::= { qos802AceEntry 8 } + +qos802AceUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 ACE component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 ACE + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { qos802AceEntry 9 } + +qos802AcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the frame matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this 802-based ACE (indirectly + through the 802 ACL) is applied to the packet. If the + value of this attribute is false, then no more 802 ACEs in + this 802 ACL are compared to this packet and matching + continues with the first 802-based ACE of the next 802 ACL." + + ::= { qos802AceEntry 10 } + +-- +-- The IEEE 802 ACL Definition Table +-- +-- The IEEE 802 ACL Definition Table supports the association of +-- distinct IEEE 802-based (e.g., 802.3) traffic classification +-- specifications into an ordered list. +-- + +qos802AclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AclDefinitionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. A class that defines a + set of 802 ACLs, each of which is comprised of an ordered + list of 802 ACEs." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qos802Qos 2 } + +qos802AclDefinitionEntry OBJECT-TYPE + SYNTAX Qos802AclDefinitionEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. An entry specifies an + instance of this class that associates an 802 ACE with + + a given 802 ACL. The evaluation order of distinct 802 + ACEs that are associated with a specific 802 ACL is + specified as well." + + PIB-INDEX { qos802AclDefinitionId } + ::= { qos802AclDefinitionTable 1 } + +Qos802AclDefinitionEntry ::= SEQUENCE { + qos802AclDefinitionId InstanceId, + qos802AclDefinitionAclId InstanceId, + qos802AclDefinitionAceId InstanceId, + qos802AclDefinitionAceOrder Unsigned32 +} + +qos802AclDefinitionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE / 802 ACL association." + + ::= { qos802AclDefinitionEntry 1 } + +qos802AclDefinitionAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index for this 802 ACL. Each 802 ACL in the device is + assigned a unique integer index. There will (potentially) be + multiple instances of the qos802AclDefinition class with this + identifier, one for each 802 ACE that is associated with the + specified 802 ACL. + + For example, assume that 2 802 ACLs, each comprised of 4 802 + ACEs, have been installed. The instances of this class may + appear as follows: + + Index AclId AceId AceOrder + 10 6 4 1 + 11 6 5 2 + 12 6 9 23 + 13 6 11 24 + 65 18 5 8 + 66 18 9 12 + 67 18 13 15 + + 70 18 14 16 + + Note that this identifier is used in instances of the + qosAclTarget class to associate an 802 ACL with an interface + set and action. An active ACL Target association prohibits + the deletion of all of the qos802AclDefinition instances + with a given qos802AclDefinitionAclId (i.e., at least one + entry for the specific qos802AclDefinitionAclId must be + present in this table) until the ACL Target association is + terminated." + + ::= { qos802AclDefinitionEntry 2 } + +qos802AclDefinitionAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the 802 ACE in the qos802AceTable + that is associated with the 802 ACL specified by + qos802AclDefinitionAclId object. The corresponding instance + in the qos802Ace class must exist prior to being associated + with a 802 ACL. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qos802AclDefinitionEntry 3 } + +qos802AclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The precedence of the 802 ACE, identified via the + qos802AclDefinitionAceId object, with regard to evaluation + order. The precedence determines the order of evaluation of + this ACE in relation to related 802 ACEs that are associated + with an ACL. An ACE with a given precedence order in the + access control list is evaluated before one with a higher- + valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + + value will be returned. + + Note that qos802AclDefinitionAceOrder values within a given + ACL need not be contiguous." + + ::= { qos802AclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-802-PIB-orig b/pibs/tubs/QOS-POLICY-802-PIB-orig new file mode 100644 index 0000000..487b2c9 --- /dev/null +++ b/pibs/tubs/QOS-POLICY-802-PIB-orig @@ -0,0 +1,602 @@ +QOS-POLICY-802-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, PhysAddress, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PolicyInstanceId + FROM POLICY-FRAMEWORK-PIB + Dscp + FROM QOS-POLICY-IP-PIB; + +qosPolicy802Pib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies supported by devices for IEEE 802- + based traffic." + + ::= { tbd } + +qosPolicy802PibClasses OBJECT IDENTIFIER ::= { qosPolicy802Pib 1 } + +-- +-- Textual Conventions +-- + +-- +-- IEEE 802 CoS +-- + +QosIeee802Cos ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the IEEE 802 CoS + values. This corresponds to the 802.1p priority values." + + SYNTAX INTEGER (0..7) + +-- +-- General configuration information for the entire domain +-- + +qos802DomainConfig OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 1 } + +-- +-- Differentiated Services Code Point Mapping Table +-- +-- Supports the mapping of DSCP values to IEEE CoS values. +-- + +qos802DscpMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802DscpMappingEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Maps each DSCP to an QosIeee802Cos. When configured + for the first time, all 64 entries of the table must + be specified. Thereafter, instances may be modified but + not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 1 } + +qos802DscpMappingEntry OBJECT-TYPE + SYNTAX Qos802DscpMappingEntry + STATUS current + DESCRIPTION + "An instance of the qos802DscpMapping class. A total of 64 + class instances are constantly maintained after initial device + configuration." + + INDEX { qos802DscpMappingId } + ::= { qos802DscpMappingTable 1 } + +Qos802DscpMappingEntry ::= SEQUENCE { + qos802DscpMappingId PolicyInstanceId, + qos802DscpMappingDscp Dscp, + qos802DscpMapping802Cos QosIeee802Cos +} + +qos802DscpMappingId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "A unique ID for this policy rule instance." + + ::= { qos802DscpMappingEntry 1 } + +qos802DscpMappingDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP class instance attribute that is used to + determine the appropriate layer 2 CoS mappings. DSCP + values 0 through 63 (inclusive) are maintained in + the table." + + ::= { qos802DscpMappingEntry 2 } + +qos802DscpMapping802Cos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The IEEE 802 CoS value to use when mapping the DSCP + value specified by the qos802DscpMappingDscp attribute + to a IEEE 802 CoS." + + ::= { qos802DscpMappingEntry 3 } + +-- +-- Layer 2 CoS-to-DSCP Mapping Table +-- +-- Supports the mapping of IEEE CoS values to DSCP values +-- for generic QoS traffic classification +-- + +qos802CosToDscpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802CosToDscpEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Maps each of eight layer 2 CoS values to a DSCP. When + configured for the first time, all 8 entries of the table + must be specified. Thereafter, instances may be modified + but not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 2 } + +qos802CosToDscpEntry OBJECT-TYPE + SYNTAX Qos802CosToDscpEntry + STATUS current + DESCRIPTION + "An instance of the qosCosToDscp class. A total of 8 + class instances are constantly maintained after initial + device configuration." + + INDEX { qos802CosToDscpId } + ::= { qos802CosToDscpTable 1 } + +Qos802CosToDscpEntry ::= SEQUENCE { + qos802CosToDscpId PolicyInstanceId, + qos802CosToDscpCos QosIeee802Cos, + qos802CosToDscpDscp Dscp +} + +qos802CosToDscpId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + + DESCRIPTION + "A unique index for this policy rule instance." + + ::= { qos802CosToDscpEntry 1 } + +qos802CosToDscpCos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The layer 2 CoS class instance attribute that is used to + determine the appropriate DSCP mappings. CoS values 0 + through 7 (inclusive) are maintained in the table." + + ::= { qos802CosToDscpEntry 2 } + +qos802CosToDscpDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP value to use when mapping the layer 2 CoS value + specified by the qosCosToDscp attribute to a DSCP." + + ::= { qos802CosToDscpEntry 3 } + +-- +-- The IEEE 802 Classification and Policing Group +-- + +qos802Qos OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 2 } + +-- +-- The IEEE 802 ACE Table +-- +-- The IEEE 802 ACE Table supports the specification of IEEE +-- 802-based (e.g., 802.3) information that is used to perform +-- traffic classification. +-- + +qos802AceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AceEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + + an association that is used to perform traffic + classification." + + ::= { qos802Qos 1 } + +qos802AceEntry OBJECT-TYPE + SYNTAX Qos802AceEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + INDEX { qos802AceId } + ::= { qos802AceTable 1 } + +Qos802AceEntry ::= SEQUENCE { + qos802AceId PolicyInstanceId, + qos802AceDstAddr PhysAddress, + qos802AceDstAddrMask PhysAddress, + qos802AceSrcAddr PhysAddress, + qos802AceSrcAddrMask PhysAddress, + qos802AceVlanId Integer32, + qos802AceVlanTagRequired INTEGER, + qos802AceEtherType Integer32, + qos802AceUserPriority BITS, + qos802AcePermit TruthValue +} + +qos802AceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE among all of the 802 ACEs. Note that this identifier + is used in instances of the qos802Acl class to associate a + 802 ACE with a 802 ACL. An active ACE/ACL association + prohibits the deletion of the 802 ACE until the ACE/ACL + + association is terminated. Class instances may not be + contiguous." + + ::= { qos802AceEntry 1 } + +qos802AceDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming traffic + streams will be compared. Frames whose 802 DA matches the + physical address specified by this object, taking into account + address wildcarding as specified by the qos802AceDstAddrMask + object, are potentially subject to the processing guidelines + that are associated with this entry through the related + action class." + + ::= { qos802AceEntry 2 } + +qos802AceDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA comparison + against the address specified in the qos802AceDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the value + to be compared against the qos802AceDstAddr address. A zero + bit in the mask thus means that the corresponding bit in the + address always matches. The qos802AceDstAddr value must also + be masked using this value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceDstAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceDstAddr object." + + ::= { qos802AceEntry 3 } + +qos802AceSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + + "The 802 MAC address against which the 802 MAC SA of incoming + traffic streams will be compared. Frames whose 802 MAC SA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + qos802AceSrcAddrMask object, are potentially subject to the + processing guidelines that are associated with this entry + through the related action class." + + ::= { qos802AceEntry 4 } + +qos802AceSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + qos802AceSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the qos802AceSrcAddr address. A + zero bit in the mask thus means that the corresponding bit + in the address always matches. The qos802AceSrcAddr value + must also be masked using this value prior to any + comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceSrcAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceSrcAddr object." + + ::= { qos802AceEntry 5 } + +qos802AceVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the qos802AceVlanId object to -1 indicates that + + VLAN data should not be considered during traffic + classification." + + ::= { qos802AceEntry 6 } + +qos802AceVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 ACE entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { qos802AceEntry 7 } + +qos802AceEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the qos802AceEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows the + Organization Code field in the 802.2 SNAP header. The value + that is tested with regard to this filter component therefore + depends on the data link layer frame format being used. If + this 802 ACE component is active when there is no EtherType + field in a frame (e.g., 802.2 LLC), a match is implied." + + ::= { qos802AceEntry 8 } + +qos802AceUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 ACE component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 ACE + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { qos802AceEntry 9 } + +qos802AcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the frame matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this 802-based ACE (indirectly + through the 802 ACL) is applied to the packet. If the + value of this attribute is false, then no more 802 ACEs in + this 802 ACL are compared to this packet and matching + continues with the first 802-based ACE of the next 802 ACL." + + ::= { qos802AceEntry 10 } + +-- +-- The IEEE 802 ACL Definition Table +-- +-- The IEEE 802 ACL Definition Table supports the association of +-- distinct IEEE 802-based (e.g., 802.3) traffic classification +-- specifications into an ordered list. +-- + +qos802AclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AclDefinitionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. A class that defines a + set of 802 ACLs, each of which is comprised of an ordered + list of 802 ACEs." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qos802Qos 2 } + +qos802AclDefinitionEntry OBJECT-TYPE + SYNTAX Qos802AclDefinitionEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. An entry specifies an + instance of this class that associates an 802 ACE with + + a given 802 ACL. The evaluation order of distinct 802 + ACEs that are associated with a specific 802 ACL is + specified as well." + + INDEX { qos802AclDefinitionId } + ::= { qos802AclDefinitionTable 1 } + +Qos802AclDefinitionEntry ::= SEQUENCE { + qos802AclDefinitionId PolicyInstanceId, + qos802AclDefinitionAclId PolicyInstanceId, + qos802AclDefinitionAceId PolicyInstanceId, + qos802AclDefinitionAceOrder Unsigned32 +} + +qos802AclDefinitionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE / 802 ACL association." + + ::= { qos802AclDefinitionEntry 1 } + +qos802AclDefinitionAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An index for this 802 ACL. Each 802 ACL in the device is + assigned a unique integer index. There will (potentially) be + multiple instances of the qos802AclDefinition class with this + identifier, one for each 802 ACE that is associated with the + specified 802 ACL. + + For example, assume that 2 802 ACLs, each comprised of 4 802 + ACEs, have been installed. The instances of this class may + appear as follows: + + Index AclId AceId AceOrder + 10 6 4 1 + 11 6 5 2 + 12 6 9 23 + 13 6 11 24 + 65 18 5 8 + 66 18 9 12 + 67 18 13 15 + + 70 18 14 16 + + Note that this identifier is used in instances of the + qosAclTarget class to associate an 802 ACL with an interface + set and action. An active ACL Target association prohibits + the deletion of all of the qos802AclDefinition instances + with a given qos802AclDefinitionAclId (i.e., at least one + entry for the specific qos802AclDefinitionAclId must be + present in this table) until the ACL Target association is + terminated." + + ::= { qos802AclDefinitionEntry 2 } + +qos802AclDefinitionAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the 802 ACE in the qos802AceTable + that is associated with the 802 ACL specified by + qos802AclDefinitionAclId object. The corresponding instance + in the qos802Ace class must exist prior to being associated + with a 802 ACL. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qos802AclDefinitionEntry 3 } + +qos802AclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The precedence of the 802 ACE, identified via the + qos802AclDefinitionAceId object, with regard to evaluation + order. The precedence determines the order of evaluation of + this ACE in relation to related 802 ACEs that are associated + with an ACL. An ACE with a given precedence order in the + access control list is evaluated before one with a higher- + valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + + value will be returned. + + Note that qos802AclDefinitionAceOrder values within a given + ACL need not be contiguous." + + ::= { qos802AclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-IP-PIB b/pibs/tubs/QOS-POLICY-IP-PIB new file mode 100644 index 0000000..5f47d6a --- /dev/null +++ b/pibs/tubs/QOS-POLICY-IP-PIB @@ -0,0 +1,1341 @@ +QOS-POLICY-IP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM POLICY-FRAMEWORK-PIB + InetAddress + FROM INET-ADDRESS-MIB + InstanceId + FROM COPS-PR-SPPI-TC; + +qosPolicyIpPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be assigned + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies. It includes general classes that may + be extended by other PIB specifications as well as + an initial set of PIB classes related to IP processing." + + ::= { ibrpib 4 } -- to be assigned! + +qosPolicyGenPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 1 } +qosPolicyIpPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 2 } + +-- +-- Textual Conventions +-- + +-- +-- Diffserv Codepoint +-- + +Dscp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the diffserv codepoint + values." + + SYNTAX INTEGER (0..63) + +-- +-- Interface types +-- + +QosInterfaceQueueCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that describes the number of queues an interface + supports. It is limited to the number of DSCP values." + + SYNTAX INTEGER (1..64) + +-- +-- QoS Interface Group +-- +-- +-- This group specifies the configuration of the various interface +-- types including the setting of queueing parameters and the +-- mapping of DSCPs and 802.1 CoS to queues. +-- + +qosIfParameters OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 1 } + +-- +-- Interface Type Table + +-- + +qosInterfaceTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosInterfaceTypeEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Interface type definitions. This class describes the types + of interfaces that exist on the device. An interface type + is denoted by its designated role identifier as well as + by the queue set and queue capabilities it supports." + + ::= { qosIfParameters 1 } + +qosInterfaceTypeEntry OBJECT-TYPE + SYNTAX QosInterfaceTypeEntry + STATUS current + DESCRIPTION + "An instance of this class describes the characteristics + of a type of an interface. Interface type characteristics + include a role combination identifier, a queue set + identifier and a queue capabilities attribute. An + instance is required for each different unique role + combination identifier which represents the different + interface types that are operational in the device at + any given time. The PEP does not report which specific + interfaces have which characteristics." + + PIB-INDEX { qosInterfaceTypeId } + ::= { qosInterfaceTypeTable 1 } + +QosInterfaceTypeEntry ::= SEQUENCE { + qosInterfaceTypeId InstanceId, + qosInterfaceTypeRoles RoleCombination, + qosInterfaceTypeQueueSet InstanceId, + qosInterfaceTypeCapabilities BITS +} + +qosInterfaceTypeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the qosInterfaceType class. Class instances + may not be contiguous." + + ::= { qosInterfaceTypeEntry 1 } + +qosInterfaceTypeRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination that is used to identify interfaces + with the characteristics specified by the attributes + of this class instance. Interface role combination + identifiers are used within a number of classes to + logically identify a physical set of interfaces to which + policy rules and actions are applied. Role combination + identifiers must exist in this table prior to being + referenced in other class instances." + + ::= { qosInterfaceTypeEntry 2 } + +qosInterfaceTypeQueueSet OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The index of the queue set that is associated with + interfaces that are identified with the role combination + identifier that is associated with this class instance." + + ::= { qosInterfaceTypeEntry 3 } + +qosInterfaceTypeCapabilities OBJECT-TYPE + SYNTAX BITS { + other(0), + + -- Classification support + inputIpClassification(1), + outputIpClassification(2), + input802Classification(3), + output802Classification(4), + + -- Queuing discipline support + singleQueuingDiscipline(5), + hybridQueuingDiscipline(6) + } + STATUS current + DESCRIPTION + "An enumeration of interface capabilities. Used by the + PDP or network manager to select which policies and + + configuration it should push to the PEP." + + ::= { qosInterfaceTypeEntry 4 } + +-- +-- Interface Queue Table +-- +-- The Interface Queue Table enumerates the individual queues that +-- comprise a given queue set. Information specific to each queue +-- is exported by this table. +-- + +qosIfQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfQueueEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Contains information about the individual queues that + comprise a queue set implemented on the device." + + ::= { qosIfParameters 2 } + +qosIfQueueEntry OBJECT-TYPE + SYNTAX QosIfQueueEntry + STATUS current + DESCRIPTION + "A conceptual row in the qosIfQueueTable. + + Each row identifies a specific queue within a given queue + set and contains detailed information about the queue. Queues + are associated with a given set through this table and + a queue set is associated with an interface set through + the qosInterfaceTypeTable." + + PIB-INDEX { qosIfQueueId } + ::= { qosIfQueueTable 1 } + +QosIfQueueEntry ::= SEQUENCE { + qosIfQueueId InstanceId, + qosIfQueueSetId INTEGER, + qosIfQueueIndex QosInterfaceQueueCount, + qosIfQueueGenDiscipline INTEGER, + qosIfQueueExtDiscipline OBJECT IDENTIFIER, + qosIfQueueDrainSize Unsigned32, + qosIfQueueAbsBandwidth Unsigned32, + + qosIfQueueBandwidthAllocation INTEGER, + qosIfQueueServiceOrder QosInterfaceQueueCount, + qosIfQueueSize Unsigned32 +} + +qosIfQueueId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The index that uniquely identifies this row in the table, + i.e., this PRI." + + ::= { qosIfQueueEntry 1 } + +qosIfQueueSetId OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "An index that uniquely identifies a specific queue set. The + queue set that is identified with this value is associated + with an interface set through the qosInterfaceTypeQueueSet + object in the qosInterfaceTypeTable. The individual queues + that are members of this set all have the same value for + this attribute (i.e., they have the same set ID)." + + ::= { qosIfQueueEntry 2 } + +qosIfQueueIndex OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "An arbitrary index that uniquely identifies a specific + queue within a set of queues that is identified by the + qosIfQueueSetId value." + + ::= { qosIfQueueEntry 3 } + +qosIfQueueGenDiscipline OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Use qosIfQueueExtDiscipline + fifo(2), -- First In First Out queuing + pq(3), -- Priority Queuing + fq(4), -- Fair Queuing + wfq(5) -- Weighted Fair Queuing + } + + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. Several general + purpose and well-known queuing disciplines are supported + by this attribute. Queuing disciplines that differ from + those that are supported by this object are specified + by setting this attribute to other(1) and providing + the object identifier that represents the different + queuing paradigm in the qosIfQueueExtDiscipline object. + + A value of fifo(2) indicates that the queue is serviced + on a first-in-first-out (FIFO) basis. This discipline is + generally employed when only a single queue is available + for a given interface. + + A value of pq(3) indicates that the queue is serviced + using a priority queuing discipline. This technique is + used when several queues are available for a given + interface. Each queue is assigned a priority and queues + are serviced in order of priority. Higher priority queues + are completely drained before lower priority queues are + serviced. + + A value of fq(4) indicates that the queue is serviced + using a fair queuing discipline. This technique is used + when several queues are available for a given interface. + Each queue is treated equally and is serviced in a + round-robin fashion. + + A value of wfq(5) indicates that the queue is serviced + using a weighted fair queuing discipline. This technique is + used when several queues are available for a given interface. + Each queue is serviced based on queue weights which determine + the scheduling and frequency of queue servicing. Queues that + are assigned a greater weight are implicitly provided with + more bandwidth. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 4 } + +qosIfQueueExtDiscipline OBJECT-TYPE + + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. This attribute + provides a means through which additional queuing mechanisms + can be identified should the general queuing disciplines + be inadequate for a given device. As such. this attribute is + consulted only when the value of the qosIfQueueGenDiscipline + object is other(1). It contains an object identifier that + uniquely identifies a queuing paradigm. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 5 } + +qosIfQueueDrainSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of bytes that may be drained from the + queue in one cycle. The percentage of the interface + bandwidth allocated to this queue can be calculated from + this attribute and the sum of the drain sizes of all the + queues in a specific queue cluster in a queue set. + + This attribute represents the relative bandwidth that is + available to a given queue with respect to other queues with + which it is associated. The absolute bandwidth that is + available to a given queue is specified by the attribute + qosIfQueueAbsBandwidth. Which of these two applies is + specified by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 6 } + +qosIfQueueAbsBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interface bandwidth that is available for + consumption when servicing this queue. This bandwidth is + specified in terms of kilobits per second. + + This attribute represents the absolute bandwidth that is + available to a given queue. The relative bandwidth that is + available to a given queue, with respect to other queues with + which it is associated, is specified by the attribute + qosIfQueueDrainSize. Which of these two applies is specified + by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 7 } + +qosIfQueueBandwidthAllocation OBJECT-TYPE + SYNTAX INTEGER { + absolute(1), --use qosIfQueueAbsBandwidth + relative(2) --use qosIfQueueDrainSize + } + STATUS current + DESCRIPTION + "This attribute specifies whether to configure the queue for + an absolute bandwidth limit or one that is relative to other + queues of the interface. i.e., whether to configure the queue + using qosIfQueueAbsBandwidth or qosIfQueueDrainSize." + + ::= { qosIfQueueEntry 8 } + +qosIfQueueServiceOrder OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "This object is used to provide an additional level of + priority that is required for certain queuing disciplines + and when the different queues that comprise a queue set + are serviced using a mix of queuing disciplines. This + object can be used to specify, for example, the order in + which queues will be serviced when priority queuing is + used. It also supports the ability to describe the + servicing hierarchy when a hybrid queuing scheme, such + as priority queuing coupled with weighted fair queuing, + is used. + + Queue service priority is assigned such that a lower + service order value indicates a higher priority. For + example, a priority queue with a value of 1 will be + serviced (i.e., drained) before another priority queue + with a service order value of 2. + + Note that multiple queues that are logically associated, + + based on the queuing discipline that is being employed, + will be assigned the same service order value. Under + this scenario, other parameters that are related to the + queuing discipline determine the order of queue servicing + (e.g., queue drain size is used for 'wfq'). + + For example, an interface that is associated with a queue + set supporting two priority queues and three queues that + are serviced using WFQ would be modeled as follows: + + Q Index Q Discipline Q Drain Size Q Service Order + 22 pq(1) - 1 + 23 pq(1) - 2 + 24 wfq(3) 500 3 + 25 wfq(3) 350 3 + 26 wfq(3) 150 3 + + The queue set presented in this example would service + all queued traffic in queue 22 first, followed by all of + the queued traffic in queue 23. Next the queued traffic + in queues 24 through 26 would be serviced in a round + robin fashion with queue 24 receiving 50% of the available + bandwidth, queue 25 receiving 35% of the available + bandwidth and queue 26 receiving 15% of the available + bandwidth. This example is presented for expository + purposes and has been simplified accordingly. + + Note that, in this example, queues 24, 25 and 26 form a + queue cluster. Members of a queue cluster are all assigned + the same qosIfQueueServiceOrder as there are tightly + coupled. The qosIfQueueDrainSize attribute is used to + determine the additional processing characteristics of + the individual queues in a cluster." + + ::= { qosIfQueueEntry 9 } + +qosIfQueueSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The size of the queue in bytes. Some devices set queue size + in terms of packets. These devices must calculate the queue + size in packets by assuming an average packet size suitable + for the particular interface. + + Some devices have a fixed size buffer to be shared among all + queues. These devices must allocate a fraction of the + total buffer space to this queue calculated as the the ratio + of the queue size to the sum of the queue sizes for the + interface." + + ::= { qosIfQueueEntry 10 } + +-- +-- DSCP Assignment Table +-- +-- Supports the assignment of DSCPs to queues for each +-- interface type. +-- + +qosIfDscpAssignmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfDscpAssignmentEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Supports the assignment of DSCP values to a queue for + each interface with a specific queue count. There will be + 64 instances of this class for each supported combination + of queue count and role combination." + + ::= { qosIfParameters 3 } + +qosIfDscpAssignmentEntry OBJECT-TYPE + SYNTAX QosIfDscpAssignmentEntry + STATUS current + DESCRIPTION + "An instance of the qosIfDscpAssignment class." + + PIB-INDEX { qosIfDscpAssignmentId } + ::= { qosIfDscpAssignmentTable 1 } + +QosIfDscpAssignmentEntry ::= SEQUENCE { + qosIfDscpAssignmentId InstanceId, + qosIfDscpAssignmentRoles RoleCombination, + qosIfDscpAssignmentDscp Dscp, + qosIfDscpAssignmentQueue QosInterfaceQueueCount +} + +qosIfDscpAssignmentId OBJECT-TYPE + SYNTAX InstanceId + + STATUS current + DESCRIPTION + "An index that is used to uniquely identify the + instance of the qosIfDscpAssignment class." + + ::= { qosIfDscpAssignmentEntry 1 } + +qosIfDscpAssignmentRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination with which an interface must be + configured to support the DSCP-to-queue assignment + described by this instance. The specified role + combination must be defined in the qosInterfaceType + table prior to being referenced by this entry. + Otherwise a 'priAssociationUnknown(3)' error code + will be returned." + + ::= { qosIfDscpAssignmentEntry 2 } + +qosIfDscpAssignmentDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP to which this class instance applies." + + ::= { qosIfDscpAssignmentEntry 3 } + +qosIfDscpAssignmentQueue OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "The specific queue, within the queue set that is + associated with the interface set identified by the + qosIfDscpAssignmentRoles tag, on which traffic with + the specified DSCP, dictated by the + qosIfDscpAssignmentDscp value, is placed. Failure to + specify an appropriate queue results in a + 'priAssociationConflict(4)' error indication being + returned." + + ::= { qosIfDscpAssignmentEntry 4 } + +-- +-- QoS Meter Table +-- +-- The QoS Meter Table contains metering specifications that +-- can be used to provide an acceptable flow bandwidth +-- dimension to the Target table. +-- + +qosMeter OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 2 } + +qosMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosMeterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured meters. The + meters are associated with a classifier during + operation through the QoS Target Table." + + ::= { qosMeter 1 } + +qosMeterEntry OBJECT-TYPE + SYNTAX QosMeterEntry + STATUS current + DESCRIPTION + "General metering definitions. Each entry specifies + an instance of the qosMeter class which specifies + metering information in terms of traffic stream + bandwidth parameters. An entry can thus be used to + support traffic metering based on the specified + service level specification." + + PIB-INDEX { qosMeterId } + ::= { qosMeterTable 1 } + +QosMeterEntry ::= SEQUENCE { + qosMeterId InstanceId, + qosMeterDataSpecification INTEGER, + qosMeterCommittedRate Unsigned32, + qosMeterCommittedBurst Unsigned32, + qosMeterPeakRate Unsigned32, + qosMeterPeakBurst Unsigned32, + qosMeterHighConfAction InstanceId, + qosMeterMedConfAction InstanceId, + + qosMeterLowConfAction InstanceId +} + +qosMeterId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the qosMeter class. Meters are + associated with specific flows using this attribute + through the qosTargetMeter attribute in the QoS + Target class." + + ::= { qosMeterEntry 1 } + +qosMeterDataSpecification OBJECT-TYPE + SYNTAX INTEGER { + noMeterData(1), -- no metering reqd + committedData(2), -- committed rate only + peakData(3) -- committed and peak + } + STATUS current + DESCRIPTION + "Specifies the metering data, and thus the actions, that + are defined in a given entry. + + A value of noMeterData(1) indicates that no flow metering + is necessary. All flows associated with this meter entry + are considered to be at a high level of conformance. + + A value of committedData(2) indicates that committed rate + and committed burst information has been specified and will + be applied to associated flows. No peak rate and burst + information has been specified meaning that two levels + of conformance (high, medium) are supported. + + A value of peakData(3) indicates that peak rate and peak + burst information has been provided in addition to the + committed rate and committed burst information. All provided + information will be applied to associated flows meaning that + three levels of conformance (high, medium, low) are + supported." + + ::= { qosMeterEntry 2 } + +qosMeterCommittedRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed information rate + (CIR) against which associated traffic streams will be + metered. The CIR specifies the rate at which incoming + traffic can arrive to be considered to be at a high + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Committed rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + be specified." + + ::= { qosMeterEntry 3 } + +qosMeterCommittedBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed burst size + (CBS) against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a high level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Committed burst (and rate) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + + be specified." + + ::= { qosMeterEntry 4 } + +qosMeterPeakRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak information rate (PIR) + against which associated traffic streams will be + metered. The PIR specifies the rate at which incoming + traffic can arrive to be considered to be at a medium + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Peak rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 5 } + +qosMeterPeakBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak burst size (PBS) + against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a medium level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Peak burst (and rate) information must be present + + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 6 } + +qosMeterHighConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a high + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must always be provided." + + ::= { qosMeterEntry 7 } + +qosMeterMedConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a medium + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + committedRate(2) or peakRate(3)." + + ::= { qosMeterEntry 8 } + +qosMeterLowConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a low + level of conformance with regard to metering criteria + + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + peakRate(3)." + + ::= { qosMeterEntry 9 } + +-- +-- The Generic QoS ACL Action Group +-- + +qosAction OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 3 } + +-- +-- The QoS Action Table +-- +-- The QoS Action Table describes actions that are associated with +-- specific IP, IEEE 802 and other ACLs through the QoS Target +-- Table. An action specification may be simple (i.e., a single +-- action) or complex (i.e., multiple actions that are performed +-- in "parallel"). +-- + +qosActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured actions. The actions + are associated with IP, IEEE 802 and other ACLs and + interfaces during operation." + + ::= { qosAction 1 } + +qosActionEntry OBJECT-TYPE + SYNTAX QosActionEntry + STATUS current + DESCRIPTION + "General action definitions. Each entry specifies an instance + of the qosAction class which describes (potentially) + + several distinct action attributes. Each action is taken + individually regarding the data in question. Several actions + can be taken for a single frame. + + An instance of this class can not be deleted while it is being + referenced in a target instance in another class. This + class may be extended with actions that apply to specific QoS + policies (e.g., IP, IEEE 802, security) using augmentation." + + PIB-INDEX { qosActionId } + ::= { qosActionTable 1 } + +QosActionEntry ::= SEQUENCE { + qosActionId InstanceId, + qosActionDrop TruthValue, + qosActionUpdateDSCP Integer32, + qosActionMeter InstanceId +} + +qosActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Action class. Class instances + may not be contiguous. Actions are associated with + Target instances in other classes (e.g., the QoS + Target class) using this attribute." + + ::= { qosActionEntry 1 } + +qosActionDrop OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This action attribute, when specified, will cause the + frame being evaluated to be dropped if the value is + 'true(1)'. A value of 'false(2)' indicates that this + action will not be initiated (i.e., the frame will not + be dropped) based on this attribute. + + Prior to discarding a packet, other actions that have + been specified should be performed if they make protocol + sense. For example, requests for traffic mirroring (if + such an action is supported by a device) should be + + honored. However, updating protocol header values will + typically not be necessary." + + ::= { qosActionEntry 2 } + +qosActionUpdateDSCP OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "This action component, when specified, will cause the + value contained in the Differentiated Services (DS) + field of an associated IP datagram to be updated with + the value of this object. + + A value of -1 indicates that this action component has not + been set to an appropriate value and should not be used for + action initiation. The DSCP should remain unchanged." + + ::= { qosActionEntry 3 } + +qosActionMeter OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This action component, when specified, will identify + another level of metering that should be applied to + the given flow. This action is only taken if it is + not in conflict with other specified actions, i.e., + qosActionDrop. + + A value of 0 indicates that an additional metering + component has not been specified. No additional metering + is thus required." + + ::= { qosActionEntry 4 } + +-- +-- The QoS Target Table +-- +-- The QoS Target Table supports the association of ACLs, +-- interfaces and actions. It allows ACL class instances, as +-- defined in various ACL Defintion classes, to be associated +-- with specific interfaces/flow direction (based on interface +-- role combination and traffic direction) and actions to be + +-- performed based on traffic classification. Furthermore, it +-- allows heterogeneous ACL Definition class instances (e.g., +-- IP, IEEE 802, security) to be applied to the same interface +-- group in a prescribed order of precedence. +-- + +qosTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosTargetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that applies a set of ACLs to interfaces specifying, + for each interface, the precedence order of the ACL with + respect to other ACLs applied to the same interface and, for + each ACL, the action to take for a packet that matches a + permit ACE in that ACL. Interfaces are specified abstractly + in terms of interface roles. + + This class may contain ACLs that specify different types + of traffic classification (e.g., IP ACLs and IEEE 802 ACLs + defined in their respective definition tables). An ACL is + identified by its class and instance within that class. An + ACL association is formed when ACLs apply to the same + interfaces, as determined by the specified interface role + and direction. ACL evaluation precedence within an + association is determined by the precedence attribute." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosAction 2 } + +qosTargetEntry OBJECT-TYPE + SYNTAX QosTargetEntry + STATUS current + DESCRIPTION + "An instance of the qosTarget class. Instance creation + may be prohibited based on the status of certain class + attributes which must exist prior to class instantiation." + + PIB-INDEX { qosTargetId } + ::= { qosTargetTable 1 } + +QosTargetEntry ::= SEQUENCE { + + qosTargetId InstanceId, + qosTargetAclId InstanceId, + qosTargetAclType OBJECT IDENTIFIER, + qosTargetInterfaceRoles RoleCombination, + qosTargetInterfaceDirection INTEGER, + qosTargetOrder Unsigned32, + qosTargetMeter InstanceId +} + +qosTargetId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Target class." + + ::= { qosTargetEntry 1 } + +qosTargetAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the ACL that is associated + with this target. It identifies (potentially many) ACL + class instances in a specific ACL Definition table + where ACLs, and their associated ACEs, are defined. + For example, instances in the qosIpAclDefinitionTable + are identified by setting the value of this object + equal to the qosIpAclDefinitionAclId of the instances + being targeted. This value, together with the value of + the corresponding qosTargetAclType attribute, + uniquely identifies one or more instances of a specific + ACL Definition class. + + Attempting to specify an unknown ACL class instance will + result in an appropriate error indication being returned + to the entity that is attempting to install the conflicting + entry. For example, a 'priUnknown(2)' error indication is + returned to the policy server in this situation." + + ::= { qosTargetEntry 2 } + +qosTargetAclType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + + DESCRIPTION + "The ACL Definition class that is being referenced by + this instance of the ACL Target class. This policy + class identifier, together with the corresponding + qosTargetAclId attribute, uniquely identifies + instances of a specific ACL Definition class. + + The object identifier value of this attribute must + exist in the policyPrcSupportTable." + + ::= { qosTargetEntry 3 } + +qosTargetInterfaceRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this ACL applies specified + in terms of a set of roles. The role combination + specified by this attribute must exist in the + qosInterfaceTypeTable prior to being association + with an instance of this class." + + ::= { qosTargetEntry 4 } + +qosTargetInterfaceDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2) + } + STATUS current + DESCRIPTION + "The direction of packet flow at the interface in + question to which this ACL applies." + + ::= { qosTargetEntry 5 } + +qosTargetOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An integer that determines the precedence order of + this ACL in the list of ACLs applied to interfaces of + the specified role combination. An ACL with a given + precedence order is positioned in the list before one + with a higher-valued precedence order. + + As an example, consider the following ACL Target association: + + Index IfRoleCombo IfDirection AclId AclType Order + 14 'eth1000+L2+L3' 'in' 8 '802' 1 + 15 'eth1000+L2+L3' 'in' 3 '802' 2 + 16 'eth1000+L2+L3' 'in' 12 'IP' 3 + 17 'eth1000+L2+L3' 'in' 6 'IP' 4 + 18 'eth1000+L2+L3' 'in' 21 'IP' 5 + + Five distinct ACL specifications, 3 from an IP ACL + Definition class and 2 from an IEEE 802 ACL Definition class, + form an Acl Target association (e.g., based on the specified + interface role combination and direction attributes) with a + prescribed order of evaluation. The AclType and AclId + attributes identify the ACL Definition instances in their + respective classes. + + Precedence values within an association must be unique + otherwise instance installation will be prohibited and an + error value will be returned." + + ::= { qosTargetEntry 6 } + +qosTargetMeter OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the meter that is associated + with this QoS Target instance. Meters are defined + in the qosMeterTable. The corresponding instance in + the qosMeter class (i.e., the class instance where + the qosMeterId is equal to the value of this object) + must exist prior to being associated with a Target + entry." + + ::= { qosTargetEntry 7 } + +-- +-- The IP Classification and Policing Group +-- + +qosIpQos OBJECT IDENTIFIER ::= { qosPolicyIpPibClasses 1 } + +-- The IP ACE Table + +qosIpAceTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "ACE definitions. A packet has to match all fields in an + ACE. Wildcards may be specified for those fields that are + not relevant." + + ::= { qosIpQos 1 } + +qosIpAceEntry OBJECT-TYPE + SYNTAX QosIpAceEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAce class." + + PIB-INDEX { qosIpAceId } + ::= { qosIpAceTable 1 } + +QosIpAceEntry ::= SEQUENCE { + qosIpAceId InstanceId, + qosIpAceDstAddr InetAddress, + qosIpAceDstAddrMask InetAddress, + qosIpAceSrcAddr InetAddress, + qosIpAceSrcAddrMask InetAddress, + qosIpAceDscp Integer32, + qosIpAceProtocol INTEGER, + qosIpAceDstL4PortMin INTEGER, + qosIpAceDstL4PortMax INTEGER, + qosIpAceSrcL4PortMin INTEGER, + qosIpAceSrcL4PortMax INTEGER, + qosIpAcePermit TruthValue +} + +qosIpAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this ACE among all the + ACEs." + + ::= { qosIpAceEntry 1 } + +qosIpAceDstAddr OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address." + + ::= { qosIpAceEntry 2 } + +qosIpAceDstAddrMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "A mask for the matching of the destination IP address. + A zero bit in the mask means that the corresponding bit in + the address always matches." + + ::= { qosIpAceEntry 3 } + +qosIpAceSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address." + + ::= { qosIpAceEntry 4 } + +qosIpAceSrcAddrMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "A mask for the matching of the source IP address." + + ::= { qosIpAceEntry 5 } + +qosIpAceDscp OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this ACE. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + + ::= { qosIpAceEntry 6 } + +qosIpAceProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. + A value of zero means match all." + + ::= { qosIpAceEntry 7 } + +qosIpAceDstL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this ACE." + + ::= { qosIpAceEntry 8 } + +qosIpAceDstL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this ACE. This value must be + equal to or greater that the value specified for this ACE in + qosIpAceDstL4PortMin." + + ::= { qosIpAceEntry 9 } + +qosIpAceSrcL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this ACE." + + ::= { qosIpAceEntry 10 } + +qosIpAceSrcL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this ACE. This value must be equal + to or greater that the value specified for this ACE in + + qosIpAceSrcL4PortMin." + + ::= { qosIpAceEntry 11 } + +qosIpAcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the packet matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this ACE (indirectly through + the ACL) is applied to the packet. If the value of this + attribute is false, then no more ACEs in this ACL are + compared to this packet and matching continues with the + first ACE of the next ACL." + + ::= { qosIpAceEntry 12 } + +-- +-- The IP ACL Definition Table +-- + +qosIpAclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAclDefinitionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines a set of ACLs each being an ordered list + of ACEs. Each instance of this class identifies one ACE of + an ACL and the precedence order of that ACE with respect to + other ACEs in the same ACL." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosIpQos 2 } + +qosIpAclDefinitionEntry OBJECT-TYPE + SYNTAX QosIpAclDefinitionEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAclDefinition class." + + PIB-INDEX { qosIpAclDefinitionId } + + ::= { qosIpAclDefinitionTable 1 } + +QosIpAclDefinitionEntry ::= SEQUENCE { + qosIpAclDefinitionId InstanceId, + qosIpAclDefinitionAclId InstanceId, + qosIpAclDefinitionAceId InstanceId, + qosIpAclDefinitionAceOrder Unsigned32 +} + +qosIpAclDefinitionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Unique index of this policy rule instance." + + ::= { qosIpAclDefinitionEntry 1 } + +qosIpAclDefinitionAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An ID for this ACL. There will be one instance of + the class qosIpAclDefinition with this ID for each ACE in + the ACL per role combination." + + ::= { qosIpAclDefinitionEntry 2 } + +qosIpAclDefinitionAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute specifies the ACE in the qosIpAceTable that + is in the ACL specified by qosIpAclDefinitionAclId at the + position specified by qosIpAceOrder. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qosIpAclDefinitionEntry 3 } + +qosIpAclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + + STATUS current + DESCRIPTION + "The precedence order of this ACE. The precedence order + determines the position of this ACE in the ACL. An ACE with + a given precedence order is positioned in the access control + list before one with a higher-valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + value will be returned." + + ::= { qosIpAclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-IP-PIB-orig b/pibs/tubs/QOS-POLICY-IP-PIB-orig new file mode 100644 index 0000000..313f26f --- /dev/null +++ b/pibs/tubs/QOS-POLICY-IP-PIB-orig @@ -0,0 +1,1335 @@ +QOS-POLICY-IP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, IpAddress, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PolicyInstanceId + FROM POLICY-FRAMEWORK-PIB; + +qosPolicyIpPib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies. It includes general classes that may + be extended by other PIB specifications as well as + an initial set of PIB classes related to IP processing." + + ::= { tbd } + +qosPolicyGenPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 1 } +qosPolicyIpPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 2 } + +-- +-- Textual Conventions +-- + +-- +-- Diffserv Codepoint +-- + +Dscp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the diffserv codepoint + values." + + SYNTAX INTEGER (0..63) + +-- +-- Interface types +-- + +QosInterfaceQueueCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that describes the number of queues an interface + supports. It is limited to the number of DSCP values." + + SYNTAX INTEGER (1..64) + +-- +-- QoS Interface Group +-- +-- +-- This group specifies the configuration of the various interface +-- types including the setting of queueing parameters and the +-- mapping of DSCPs and 802.1 CoS to queues. +-- + +qosIfParameters OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 1 } + +-- +-- Interface Type Table + +-- + +qosInterfaceTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosInterfaceTypeEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Interface type definitions. This class describes the types + of interfaces that exist on the device. An interface type + is denoted by its designated role identifier as well as + by the queue set and queue capabilities it supports." + + ::= { qosIfParameters 1 } + +qosInterfaceTypeEntry OBJECT-TYPE + SYNTAX QosInterfaceTypeEntry + STATUS current + DESCRIPTION + "An instance of this class describes the characteristics + of a type of an interface. Interface type characteristics + include a role combination identifier, a queue set + identifier and a queue capabilities attribute. An + instance is required for each different unique role + combination identifier which represents the different + interface types that are operational in the device at + any given time. The PEP does not report which specific + interfaces have which characteristics." + + INDEX { qosInterfaceTypeId } + ::= { qosInterfaceTypeTable 1 } + +QosInterfaceTypeEntry ::= SEQUENCE { + qosInterfaceTypeId PolicyInstanceId, + qosInterfaceTypeRoles RoleCombination, + qosInterfaceTypeQueueSet PolicyInstanceId, + qosInterfaceTypeCapabilities BITS +} + +qosInterfaceTypeId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the qosInterfaceType class. Class instances + may not be contiguous." + + ::= { qosInterfaceTypeEntry 1 } + +qosInterfaceTypeRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination that is used to identify interfaces + with the characteristics specified by the attributes + of this class instance. Interface role combination + identifiers are used within a number of classes to + logically identify a physical set of interfaces to which + policy rules and actions are applied. Role combination + identifiers must exist in this table prior to being + referenced in other class instances." + + ::= { qosInterfaceTypeEntry 2 } + +qosInterfaceTypeQueueSet OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "The index of the queue set that is associated with + interfaces that are identified with the role combination + identifier that is associated with this class instance." + + ::= { qosInterfaceTypeEntry 3 } + +qosInterfaceTypeCapabilities OBJECT-TYPE + SYNTAX BITS { + other(0), + + -- Classification support + inputIpClassification(1), + outputIpClassification(2), + input802Classification(3), + output802Classification(4), + + -- Queuing discipline support + singleQueuingDiscipline(5), + hybridQueuingDiscipline(6) + } + STATUS current + DESCRIPTION + "An enumeration of interface capabilities. Used by the + PDP or network manager to select which policies and + + configuration it should push to the PEP." + + ::= { qosInterfaceTypeEntry 4 } + +-- +-- Interface Queue Table +-- +-- The Interface Queue Table enumerates the individual queues that +-- comprise a given queue set. Information specific to each queue +-- is exported by this table. +-- + +qosIfQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfQueueEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Contains information about the individual queues that + comprise a queue set implemented on the device." + + ::= { qosIfParameters 2 } + +qosIfQueueEntry OBJECT-TYPE + SYNTAX QosIfQueueEntry + STATUS current + DESCRIPTION + "A conceptual row in the qosIfQueueTable. + + Each row identifies a specific queue within a given queue + set and contains detailed information about the queue. Queues + are associated with a given set through this table and + a queue set is associated with an interface set through + the qosInterfaceTypeTable." + + INDEX { qosIfQueueId } + ::= { qosIfQueueTable 1 } + +QosIfQueueEntry ::= SEQUENCE { + qosIfQueueId PolicyInstanceId, + qosIfQueueSetId INTEGER, + qosIfQueueIndex QosInterfaceQueueCount, + qosIfQueueGenDiscipline INTEGER, + qosIfQueueExtDiscipline OBJECT IDENTIFIER, + qosIfQueueDrainSize Unsigned32, + qosIfQueueAbsBandwidth Unsigned32, + + qosIfQueueBandwidthAllocation INTEGER, + qosIfQueueServiceOrder QosInterfaceQueueCount, + qosIfQueueSize Unsigned32 +} + +qosIfQueueId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "The index that uniquely identifies this row in the table, + i.e., this PRI." + + ::= { qosIfQueueEntry 1 } + +qosIfQueueSetId OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "An index that uniquely identifies a specific queue set. The + queue set that is identified with this value is associated + with an interface set through the qosInterfaceTypeQueueSet + object in the qosInterfaceTypeTable. The individual queues + that are members of this set all have the same value for + this attribute (i.e., they have the same set ID)." + + ::= { qosIfQueueEntry 2 } + +qosIfQueueIndex OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "An arbitrary index that uniquely identifies a specific + queue within a set of queues that is identified by the + qosIfQueueSetId value." + + ::= { qosIfQueueEntry 3 } + +qosIfQueueGenDiscipline OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Use qosIfQueueExtDiscipline + fifo(2), -- First In First Out queuing + pq(3), -- Priority Queuing + fq(4), -- Fair Queuing + wfq(5) -- Weighted Fair Queuing + } + + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. Several general + purpose and well-known queuing disciplines are supported + by this attribute. Queuing disciplines that differ from + those that are supported by this object are specified + by setting this attribute to other(1) and providing + the object identifier that represents the different + queuing paradigm in the qosIfQueueExtDiscipline object. + + A value of fifo(2) indicates that the queue is serviced + on a first-in-first-out (FIFO) basis. This discipline is + generally employed when only a single queue is available + for a given interface. + + A value of pq(3) indicates that the queue is serviced + using a priority queuing discipline. This technique is + used when several queues are available for a given + interface. Each queue is assigned a priority and queues + are serviced in order of priority. Higher priority queues + are completely drained before lower priority queues are + serviced. + + A value of fq(4) indicates that the queue is serviced + using a fair queuing discipline. This technique is used + when several queues are available for a given interface. + Each queue is treated equally and is serviced in a + round-robin fashion. + + A value of wfq(5) indicates that the queue is serviced + using a weighted fair queuing discipline. This technique is + used when several queues are available for a given interface. + Each queue is serviced based on queue weights which determine + the scheduling and frequency of queue servicing. Queues that + are assigned a greater weight are implicitly provided with + more bandwidth. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 4 } + +qosIfQueueExtDiscipline OBJECT-TYPE + + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. This attribute + provides a means through which additional queuing mechanisms + can be identified should the general queuing disciplines + be inadequate for a given device. As such. this attribute is + consulted only when the value of the qosIfQueueGenDiscipline + object is other(1). It contains an object identifier that + uniquely identifies a queuing paradigm. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 5 } + +qosIfQueueDrainSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of bytes that may be drained from the + queue in one cycle. The percentage of the interface + bandwidth allocated to this queue can be calculated from + this attribute and the sum of the drain sizes of all the + queues in a specific queue cluster in a queue set. + + This attribute represents the relative bandwidth that is + available to a given queue with respect to other queues with + which it is associated. The absolute bandwidth that is + available to a given queue is specified by the attribute + qosIfQueueAbsBandwidth. Which of these two applies is + specified by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 6 } + +qosIfQueueAbsBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interface bandwidth that is available for + consumption when servicing this queue. This bandwidth is + specified in terms of kilobits per second. + + This attribute represents the absolute bandwidth that is + available to a given queue. The relative bandwidth that is + available to a given queue, with respect to other queues with + which it is associated, is specified by the attribute + qosIfQueueDrainSize. Which of these two applies is specified + by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 7 } + +qosIfQueueBandwidthAllocation OBJECT-TYPE + SYNTAX INTEGER { + absolute(1), --use qosIfQueueAbsBandwidth + relative(2) --use qosIfQueueDrainSize + } + STATUS current + DESCRIPTION + "This attribute specifies whether to configure the queue for + an absolute bandwidth limit or one that is relative to other + queues of the interface. i.e., whether to configure the queue + using qosIfQueueAbsBandwidth or qosIfQueueDrainSize." + + ::= { qosIfQueueEntry 8 } + +qosIfQueueServiceOrder OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "This object is used to provide an additional level of + priority that is required for certain queuing disciplines + and when the different queues that comprise a queue set + are serviced using a mix of queuing disciplines. This + object can be used to specify, for example, the order in + which queues will be serviced when priority queuing is + used. It also supports the ability to describe the + servicing hierarchy when a hybrid queuing scheme, such + as priority queuing coupled with weighted fair queuing, + is used. + + Queue service priority is assigned such that a lower + service order value indicates a higher priority. For + example, a priority queue with a value of 1 will be + serviced (i.e., drained) before another priority queue + with a service order value of 2. + + Note that multiple queues that are logically associated, + + based on the queuing discipline that is being employed, + will be assigned the same service order value. Under + this scenario, other parameters that are related to the + queuing discipline determine the order of queue servicing + (e.g., queue drain size is used for 'wfq'). + + For example, an interface that is associated with a queue + set supporting two priority queues and three queues that + are serviced using WFQ would be modeled as follows: + + Q Index Q Discipline Q Drain Size Q Service Order + 22 pq(1) - 1 + 23 pq(1) - 2 + 24 wfq(3) 500 3 + 25 wfq(3) 350 3 + 26 wfq(3) 150 3 + + The queue set presented in this example would service + all queued traffic in queue 22 first, followed by all of + the queued traffic in queue 23. Next the queued traffic + in queues 24 through 26 would be serviced in a round + robin fashion with queue 24 receiving 50% of the available + bandwidth, queue 25 receiving 35% of the available + bandwidth and queue 26 receiving 15% of the available + bandwidth. This example is presented for expository + purposes and has been simplified accordingly. + + Note that, in this example, queues 24, 25 and 26 form a + queue cluster. Members of a queue cluster are all assigned + the same qosIfQueueServiceOrder as there are tightly + coupled. The qosIfQueueDrainSize attribute is used to + determine the additional processing characteristics of + the individual queues in a cluster." + + ::= { qosIfQueueEntry 9 } + +qosIfQueueSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The size of the queue in bytes. Some devices set queue size + in terms of packets. These devices must calculate the queue + size in packets by assuming an average packet size suitable + for the particular interface. + + Some devices have a fixed size buffer to be shared among all + queues. These devices must allocate a fraction of the + total buffer space to this queue calculated as the the ratio + of the queue size to the sum of the queue sizes for the + interface." + + ::= { qosIfQueueEntry 10 } + +-- +-- DSCP Assignment Table +-- +-- Supports the assignment of DSCPs to queues for each +-- interface type. +-- + +qosIfDscpAssignmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfDscpAssignmentEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Supports the assignment of DSCP values to a queue for + each interface with a specific queue count. There will be + 64 instances of this class for each supported combination + of queue count and role combination." + + ::= { qosIfParameters 3 } + +qosIfDscpAssignmentEntry OBJECT-TYPE + SYNTAX QosIfDscpAssignmentEntry + STATUS current + DESCRIPTION + "An instance of the qosIfDscpAssignment class." + + INDEX { qosIfDscpAssignmentId } + ::= { qosIfDscpAssignmentTable 1 } + +QosIfDscpAssignmentEntry ::= SEQUENCE { + qosIfDscpAssignmentId PolicyInstanceId, + qosIfDscpAssignmentRoles RoleCombination, + qosIfDscpAssignmentDscp Dscp, + qosIfDscpAssignmentQueue QosInterfaceQueueCount +} + +qosIfDscpAssignmentId OBJECT-TYPE + SYNTAX PolicyInstanceId + + STATUS current + DESCRIPTION + "An index that is used to uniquely identify the + instance of the qosIfDscpAssignment class." + + ::= { qosIfDscpAssignmentEntry 1 } + +qosIfDscpAssignmentRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination with which an interface must be + configured to support the DSCP-to-queue assignment + described by this instance. The specified role + combination must be defined in the qosInterfaceType + table prior to being referenced by this entry. + Otherwise a 'priAssociationUnknown(3)' error code + will be returned." + + ::= { qosIfDscpAssignmentEntry 2 } + +qosIfDscpAssignmentDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP to which this class instance applies." + + ::= { qosIfDscpAssignmentEntry 3 } + +qosIfDscpAssignmentQueue OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "The specific queue, within the queue set that is + associated with the interface set identified by the + qosIfDscpAssignmentRoles tag, on which traffic with + the specified DSCP, dictated by the + qosIfDscpAssignmentDscp value, is placed. Failure to + specify an appropriate queue results in a + 'priAssociationConflict(4)' error indication being + returned." + + ::= { qosIfDscpAssignmentEntry 4 } + +-- +-- QoS Meter Table +-- +-- The QoS Meter Table contains metering specifications that +-- can be used to provide an acceptable flow bandwidth +-- dimension to the Target table. +-- + +qosMeter OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 2 } + +qosMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosMeterEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured meters. The + meters are associated with a classifier during + operation through the QoS Target Table." + + ::= { qosMeter 1 } + +qosMeterEntry OBJECT-TYPE + SYNTAX QosMeterEntry + STATUS current + DESCRIPTION + "General metering definitions. Each entry specifies + an instance of the qosMeter class which specifies + metering information in terms of traffic stream + bandwidth parameters. An entry can thus be used to + support traffic metering based on the specified + service level specification." + + INDEX { qosMeterId } + ::= { qosMeterTable 1 } + +QosMeterEntry ::= SEQUENCE { + qosMeterId PolicyInstanceId, + qosMeterDataSpecification INTEGER, + qosMeterCommittedRate Unsigned32, + qosMeterCommittedBurst Unsigned32, + qosMeterPeakRate Unsigned32, + qosMeterPeakBurst Unsigned32, + qosMeterHighConfAction PolicyInstanceId, + qosMeterMedConfAction PolicyInstanceId, + + qosMeterLowConfAction PolicyInstanceId +} + +qosMeterId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the qosMeter class. Meters are + associated with specific flows using this attribute + through the qosTargetMeter attribute in the QoS + Target class." + + ::= { qosMeterEntry 1 } + +qosMeterDataSpecification OBJECT-TYPE + SYNTAX INTEGER { + noMeterData(1), -- no metering reqd + committedData(2), -- committed rate only + peakData(3) -- committed and peak + } + STATUS current + DESCRIPTION + "Specifies the metering data, and thus the actions, that + are defined in a given entry. + + A value of noMeterData(1) indicates that no flow metering + is necessary. All flows associated with this meter entry + are considered to be at a high level of conformance. + + A value of committedData(2) indicates that committed rate + and committed burst information has been specified and will + be applied to associated flows. No peak rate and burst + information has been specified meaning that two levels + of conformance (high, medium) are supported. + + A value of peakData(3) indicates that peak rate and peak + burst information has been provided in addition to the + committed rate and committed burst information. All provided + information will be applied to associated flows meaning that + three levels of conformance (high, medium, low) are + supported." + + ::= { qosMeterEntry 2 } + +qosMeterCommittedRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed information rate + (CIR) against which associated traffic streams will be + metered. The CIR specifies the rate at which incoming + traffic can arrive to be considered to be at a high + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Committed rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + be specified." + + ::= { qosMeterEntry 3 } + +qosMeterCommittedBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed burst size + (CBS) against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a high level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Committed burst (and rate) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + + be specified." + + ::= { qosMeterEntry 4 } + +qosMeterPeakRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak information rate (PIR) + against which associated traffic streams will be + metered. The PIR specifies the rate at which incoming + traffic can arrive to be considered to be at a medium + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Peak rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 5 } + +qosMeterPeakBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak burst size (PBS) + against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a medium level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Peak burst (and rate) information must be present + + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 6 } + +qosMeterHighConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a high + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must always be provided." + + ::= { qosMeterEntry 7 } + +qosMeterMedConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a medium + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + committedRate(2) or peakRate(3)." + + ::= { qosMeterEntry 8 } + +qosMeterLowConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a low + level of conformance with regard to metering criteria + + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + peakRate(3)." + + ::= { qosMeterEntry 9 } + +-- +-- The Generic QoS ACL Action Group +-- + +qosAction OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 3 } + +-- +-- The QoS Action Table +-- +-- The QoS Action Table describes actions that are associated with +-- specific IP, IEEE 802 and other ACLs through the QoS Target +-- Table. An action specification may be simple (i.e., a single +-- action) or complex (i.e., multiple actions that are performed +-- in "parallel"). +-- + +qosActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosActionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured actions. The actions + are associated with IP, IEEE 802 and other ACLs and + interfaces during operation." + + ::= { qosAction 1 } + +qosActionEntry OBJECT-TYPE + SYNTAX QosActionEntry + STATUS current + DESCRIPTION + "General action definitions. Each entry specifies an instance + of the qosAction class which describes (potentially) + + several distinct action attributes. Each action is taken + individually regarding the data in question. Several actions + can be taken for a single frame. + + An instance of this class can not be deleted while it is being + referenced in a target instance in another class. This + class may be extended with actions that apply to specific QoS + policies (e.g., IP, IEEE 802, security) using augmentation." + + INDEX { qosActionId } + ::= { qosActionTable 1 } + +QosActionEntry ::= SEQUENCE { + qosActionId PolicyInstanceId, + qosActionDrop TruthValue, + qosActionUpdateDSCP Integer32, + qosActionMeter PolicyInstanceId +} + +qosActionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Action class. Class instances + may not be contiguous. Actions are associated with + Target instances in other classes (e.g., the QoS + Target class) using this attribute." + + ::= { qosActionEntry 1 } + +qosActionDrop OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This action attribute, when specified, will cause the + frame being evaluated to be dropped if the value is + 'true(1)'. A value of 'false(2)' indicates that this + action will not be initiated (i.e., the frame will not + be dropped) based on this attribute. + + Prior to discarding a packet, other actions that have + been specified should be performed if they make protocol + sense. For example, requests for traffic mirroring (if + such an action is supported by a device) should be + + honored. However, updating protocol header values will + typically not be necessary." + + ::= { qosActionEntry 2 } + +qosActionUpdateDSCP OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "This action component, when specified, will cause the + value contained in the Differentiated Services (DS) + field of an associated IP datagram to be updated with + the value of this object. + + A value of -1 indicates that this action component has not + been set to an appropriate value and should not be used for + action initiation. The DSCP should remain unchanged." + + ::= { qosActionEntry 3 } + +qosActionMeter OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This action component, when specified, will identify + another level of metering that should be applied to + the given flow. This action is only taken if it is + not in conflict with other specified actions, i.e., + qosActionDrop. + + A value of 0 indicates that an additional metering + component has not been specified. No additional metering + is thus required." + + ::= { qosActionEntry 4 } + +-- +-- The QoS Target Table +-- +-- The QoS Target Table supports the association of ACLs, +-- interfaces and actions. It allows ACL class instances, as +-- defined in various ACL Defintion classes, to be associated +-- with specific interfaces/flow direction (based on interface +-- role combination and traffic direction) and actions to be + +-- performed based on traffic classification. Furthermore, it +-- allows heterogeneous ACL Definition class instances (e.g., +-- IP, IEEE 802, security) to be applied to the same interface +-- group in a prescribed order of precedence. +-- + +qosTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosTargetEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "A class that applies a set of ACLs to interfaces specifying, + for each interface, the precedence order of the ACL with + respect to other ACLs applied to the same interface and, for + each ACL, the action to take for a packet that matches a + permit ACE in that ACL. Interfaces are specified abstractly + in terms of interface roles. + + This class may contain ACLs that specify different types + of traffic classification (e.g., IP ACLs and IEEE 802 ACLs + defined in their respective definition tables). An ACL is + identified by its class and instance within that class. An + ACL association is formed when ACLs apply to the same + interfaces, as determined by the specified interface role + and direction. ACL evaluation precedence within an + association is determined by the precedence attribute." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosAction 2 } + +qosTargetEntry OBJECT-TYPE + SYNTAX QosTargetEntry + STATUS current + DESCRIPTION + "An instance of the qosTarget class. Instance creation + may be prohibited based on the status of certain class + attributes which must exist prior to class instantiation." + + INDEX { qosTargetId } + ::= { qosTargetTable 1 } + +QosTargetEntry ::= SEQUENCE { + + qosTargetId PolicyInstanceId, + qosTargetAclId PolicyInstanceId, + qosTargetAclType OBJECT IDENTIFIER, + qosTargetInterfaceRoles RoleCombination, + qosTargetInterfaceDirection INTEGER, + qosTargetOrder Unsigned32, + qosTargetMeter PolicyInstanceId +} + +qosTargetId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Target class." + + ::= { qosTargetEntry 1 } + +qosTargetAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the ACL that is associated + with this target. It identifies (potentially many) ACL + class instances in a specific ACL Definition table + where ACLs, and their associated ACEs, are defined. + For example, instances in the qosIpAclDefinitionTable + are identified by setting the value of this object + equal to the qosIpAclDefinitionAclId of the instances + being targeted. This value, together with the value of + the corresponding qosTargetAclType attribute, + uniquely identifies one or more instances of a specific + ACL Definition class. + + Attempting to specify an unknown ACL class instance will + result in an appropriate error indication being returned + to the entity that is attempting to install the conflicting + entry. For example, a 'priUnknown(2)' error indication is + returned to the policy server in this situation." + + ::= { qosTargetEntry 2 } + +qosTargetAclType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + + DESCRIPTION + "The ACL Definition class that is being referenced by + this instance of the ACL Target class. This policy + class identifier, together with the corresponding + qosTargetAclId attribute, uniquely identifies + instances of a specific ACL Definition class. + + The object identifier value of this attribute must + exist in the policyPrcSupportTable." + + ::= { qosTargetEntry 3 } + +qosTargetInterfaceRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this ACL applies specified + in terms of a set of roles. The role combination + specified by this attribute must exist in the + qosInterfaceTypeTable prior to being association + with an instance of this class." + + ::= { qosTargetEntry 4 } + +qosTargetInterfaceDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2) + } + STATUS current + DESCRIPTION + "The direction of packet flow at the interface in + question to which this ACL applies." + + ::= { qosTargetEntry 5 } + +qosTargetOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An integer that determines the precedence order of + this ACL in the list of ACLs applied to interfaces of + the specified role combination. An ACL with a given + precedence order is positioned in the list before one + with a higher-valued precedence order. + + As an example, consider the following ACL Target association: + + Index IfRoleCombo IfDirection AclId AclType Order + 14 'eth1000+L2+L3' 'in' 8 '802' 1 + 15 'eth1000+L2+L3' 'in' 3 '802' 2 + 16 'eth1000+L2+L3' 'in' 12 'IP' 3 + 17 'eth1000+L2+L3' 'in' 6 'IP' 4 + 18 'eth1000+L2+L3' 'in' 21 'IP' 5 + + Five distinct ACL specifications, 3 from an IP ACL + Definition class and 2 from an IEEE 802 ACL Definition class, + form an Acl Target association (e.g., based on the specified + interface role combination and direction attributes) with a + prescribed order of evaluation. The AclType and AclId + attributes identify the ACL Definition instances in their + respective classes. + + Precedence values within an association must be unique + otherwise instance installation will be prohibited and an + error value will be returned." + + ::= { qosTargetEntry 6 } + +qosTargetMeter OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the meter that is associated + with this QoS Target instance. Meters are defined + in the qosMeterTable. The corresponding instance in + the qosMeter class (i.e., the class instance where + the qosMeterId is equal to the value of this object) + must exist prior to being associated with a Target + entry." + + ::= { qosTargetEntry 7 } + +-- +-- The IP Classification and Policing Group +-- + +qosIpQos OBJECT IDENTIFIER ::= { qosPolicyIpPibClasses 1 } + +-- The IP ACE Table + +qosIpAceTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAceEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "ACE definitions. A packet has to match all fields in an + ACE. Wildcards may be specified for those fields that are + not relevant." + + ::= { qosIpQos 1 } + +qosIpAceEntry OBJECT-TYPE + SYNTAX QosIpAceEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAce class." + + INDEX { qosIpAceId } + ::= { qosIpAceTable 1 } + +QosIpAceEntry ::= SEQUENCE { + qosIpAceId PolicyInstanceId, + qosIpAceDstAddr IpAddress, + qosIpAceDstAddrMask IpAddress, + qosIpAceSrcAddr IpAddress, + qosIpAceSrcAddrMask IpAddress, + qosIpAceDscp Integer32, + qosIpAceProtocol INTEGER, + qosIpAceDstL4PortMin INTEGER, + qosIpAceDstL4PortMax INTEGER, + qosIpAceSrcL4PortMin INTEGER, + qosIpAceSrcL4PortMax INTEGER, + qosIpAcePermit TruthValue +} + +qosIpAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this ACE among all the + ACEs." + + ::= { qosIpAceEntry 1 } + +qosIpAceDstAddr OBJECT-TYPE + + SYNTAX IpAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address." + + ::= { qosIpAceEntry 2 } + +qosIpAceDstAddrMask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "A mask for the matching of the destination IP address. + A zero bit in the mask means that the corresponding bit in + the address always matches." + + ::= { qosIpAceEntry 3 } + +qosIpAceSrcAddr OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address." + + ::= { qosIpAceEntry 4 } + +qosIpAceSrcAddrMask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "A mask for the matching of the source IP address." + + ::= { qosIpAceEntry 5 } + +qosIpAceDscp OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this ACE. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + + ::= { qosIpAceEntry 6 } + +qosIpAceProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. + A value of zero means match all." + + ::= { qosIpAceEntry 7 } + +qosIpAceDstL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this ACE." + + ::= { qosIpAceEntry 8 } + +qosIpAceDstL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this ACE. This value must be + equal to or greater that the value specified for this ACE in + qosIpAceDstL4PortMin." + + ::= { qosIpAceEntry 9 } + +qosIpAceSrcL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this ACE." + + ::= { qosIpAceEntry 10 } + +qosIpAceSrcL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this ACE. This value must be equal + to or greater that the value specified for this ACE in + + qosIpAceSrcL4PortMin." + + ::= { qosIpAceEntry 11 } + +qosIpAcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the packet matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this ACE (indirectly through + the ACL) is applied to the packet. If the value of this + attribute is false, then no more ACEs in this ACL are + compared to this packet and matching continues with the + first ACE of the next ACL." + + ::= { qosIpAceEntry 12 } + +-- +-- The IP ACL Definition Table +-- + +qosIpAclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAclDefinitionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "A class that defines a set of ACLs each being an ordered list + of ACEs. Each instance of this class identifies one ACE of + an ACL and the precedence order of that ACE with respect to + other ACEs in the same ACL." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosIpQos 2 } + +qosIpAclDefinitionEntry OBJECT-TYPE + SYNTAX QosIpAclDefinitionEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAclDefinition class." + + INDEX { qosIpAclDefinitionId } + + ::= { qosIpAclDefinitionTable 1 } + +QosIpAclDefinitionEntry ::= SEQUENCE { + qosIpAclDefinitionId PolicyInstanceId, + qosIpAclDefinitionAclId PolicyInstanceId, + qosIpAclDefinitionAceId PolicyInstanceId, + qosIpAclDefinitionAceOrder Unsigned32 +} + +qosIpAclDefinitionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "Unique index of this policy rule instance." + + ::= { qosIpAclDefinitionEntry 1 } + +qosIpAclDefinitionAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An ID for this ACL. There will be one instance of + the class qosIpAclDefinition with this ID for each ACE in + the ACL per role combination." + + ::= { qosIpAclDefinitionEntry 2 } + +qosIpAclDefinitionAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute specifies the ACE in the qosIpAceTable that + is in the ACL specified by qosIpAclDefinitionAclId at the + position specified by qosIpAceOrder. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qosIpAclDefinitionEntry 3 } + +qosIpAclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + + STATUS current + DESCRIPTION + "The precedence order of this ACE. The precedence order + determines the position of this ACE in the ACL. An ACE with + a given precedence order is positioned in the access control + list before one with a higher-valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + value will be returned." + + ::= { qosIpAclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/RSVP-PCC-PIB b/pibs/tubs/RSVP-PCC-PIB new file mode 100644 index 0000000..a43b241 --- /dev/null +++ b/pibs/tubs/RSVP-PCC-PIB @@ -0,0 +1,1179 @@ + RSVP-PCC-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Unsigned64, Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Role, RoleCombination + FROM POLICY-DEVICE-AUX-MIB + OBJECT-GROUP + FROM SNMPv2-CONF + ExtUTCTime + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + frwkIpFilterTable, frwkIpFilterEntry + FROM FRAMEWORK-PIB; + +rsvpPccPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- war: RSVP-PCC(tbd) + LAST-UPDATED "200011131600Z" + ORGANIZATION "IETF-RAP-WG" + CONTACT-INFO " + Diana Rawlins + 901 International Parkway + Richardson, TX 75081 + Email: Diana.Rawlins@wcom.com + Phone +1 972 729 1044 + + Lei Yao + 22001 Loudoun County Parkway + Ashburn, VA 20147 + Email: Lei.yao@wcom.com + Phone: +1 703 886 1830 + + Richard McClain + 901 International Parkway + Richardson, TX 75081 + Email: Richard.McClain@wcom.com + Phone: +1 972 729 1094 + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Email: amol.kulkarni@intel.com + Phone: +1 503 712 1168 " + + DESCRIPTION + "A PIB module containing the policy control + classes that are required for support of + pushing policy control from the PDP to PEPs." + + ::= { ibrpib 12 } + + -- + -- The root OID for PRCs in the RSVP Policy Control Criteria PIB + -- + + rsvpPccBaseClasses + OBJECT IDENTIFIER ::= { rsvpPccPib 1 } + + -- + -- Textual Conventions + -- + + -- + -- Policy Control Capabilities Table + -- + + policyControlCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyControlCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " The policy control capability in terms of the policy + control mode supported by the device." + + ::= { rsvpPccBaseClasses 1 } + + policyControlCapsEntry OBJECT-TYPE + SYNTAX PolicyControlCapsEntry + STATUS current + DESCRIPTION + " The instance defining the policy control mode." + + PIB-INDEX { policyControlCapsPccId } + + ::= { policyControlCapsTable 1 } + + + PolicyControlCapsEntry ::= SEQUENCE { + policyControlCapsPccId InstanceId, + policyControlCapsMode BITS + } + + policyControlCapsPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PolicyControlCaps class." + + ::= { policyControlCapsEntry 1 } + + policyControlCapsMode OBJECT-TYPE + SYNTAX BITS { + confirmAll(0), + localIfAvailable(1), + localOnly(2) + } + STATUS current + DESCRIPTION + "The policy control criteria mode of the device. The + device may support any combination of modes. + The valid bit values are: + (0)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (1)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (2)local policy control only." + + ::= { policyControlCapsEntry 2} + + -- + -- Policy Control Criteria Mode Table + -- + + pccModeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF PccModeEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " The policy control mode designated by the PDP." + + + ::= { rsvpPccBaseClasses 2 } + + pccModeEntry OBJECT-TYPE + SYNTAX PccModeEntry + STATUS current + DESCRIPTION + " The instance defining the PDP designated mode of + policy control." + + PIB-INDEX { pccModeId } + + ::= { pccModeTable 1 } + + + PccModeEntry ::= SEQUENCE { + pccModeId InstanceId, + pccModeMode INTEGER + } + + pccModeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the pccModeTable class." + + ::= { pccModeEntry 1 } + + pccModeMode OBJECT-TYPE + SYNTAX INTEGER { + confirmAll(1), + localIfAvailable(2), + localOnly(3) + } + STATUS current + DESCRIPTION + "The policy criteria control mode to be used by the + device. + The valid enumeration values are: + (1)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (2)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (3)local policy control only." + + ::= { pccModeEntry 2} + + -- + -- Policy Control Criteria Linkage Table + -- + + pccLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccLinkEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + " This table defines the association between + the filter, frwkIpFilterTable instance and + the authorization policy instance" + + ::= { rsvpPccBaseClasses 3 } + + pccLinkEntry OBJECT-TYPE + SYNTAX PccLinkEntry + STATUS current + DESCRIPTION + " An entry links the filter and the authorization + policy." + + PIB-INDEX { pccLinkPccId } + UNIQUENESS { + pccLinkFilterRefId, + pccLinkPolicyPrid } + + ::= { pccLinkTable 1 } + + + PccLinkEntry::= SEQUENCE { + pccLinkPccId InstanceId, + pccLinkFilterRefId ReferenceId, + pccLinkPolicyPrid Prid + } + + pccLinkPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely + identifies an instance of the PccLink class. " + + ::= { pccLinkEntry 1 } + + + pccLinkFilterRefId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkIpFilterEntry } + STATUS current + DESCRIPTION + " References an instance of frwkIPFilterTable. " + ::= { pccLinkEntry 2 } + + + pccLinkPolicyPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " Specifies the specific Prid of the PRC and instance of + authorization policy associated with this filter." + + ::= { pccLinkEntry 3 } + + -- + -- Traffic Specifier Policies Table + -- + + trafficSpecifierPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrafficSpecifierPolicyEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines the Traffic specifier policy control + characteristics that can be used to determine + SENDER_TSPEC, Controlled-Load or Guaranteed Services + policies." + + ::= { rsvpPccBaseClasses 4 } + + trafficSpecifierPolicyEntry OBJECT-TYPE + SYNTAX TrafficSpecifierPolicyEntry + STATUS current + DESCRIPTION + " An entry describes a specific limits for a T-SPEC + policy. " + + PIB-INDEX { trafficSpecifierPolicyId } + UNIQUENESS {trafficSpecifierPolicyIntService, + trafficSpecifierPolicyBucketRate, + trafficSpecifierPolicyBucketSize, + trafficSpecifierPolicyPeakRate, + trafficSpecifierPolicyMinPolicedUnit, + trafficSpecifierPolicyMaxPacketSize } + + ::= { trafficSpecifierPolicyTable 1 } + + + TrafficSpecifierPolicyEntry ::= SEQUENCE { + trafficSpecifierPolicyId InstanceId, + trafficSpecifierPolicyIntService Integer32, + trafficSpecifierPolicyBucketRate BitRate, + trafficSpecifierPolicyBucketSize Unsigned32, + trafficSpecifierPolicyPeakRate BurstSize, + trafficSpecifierPolicyMinPolicedUnit MessageSize, + trafficSpecifierPolicyMaxPacketSize MessageSize + + } + + + + trafficSpecifierPolicyId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the TrafficSpecifierPolicy class." + + ::= { trafficSpecifierPolicyEntry 1 } + + + trafficSpecifierPolicyIntService OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + " The traffic specifier policy is applied + to the flow of this Integrated Service type." + ::= { trafficSpecifierPolicyEntry 2 } + + trafficSpecifierPolicyBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { trafficSpecifierPolicyEntry 3 } + + + trafficSpecifierPolicyBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { trafficSpecifierPolicyEntry 4 } + + + trafficSpecifierPolicyPeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { trafficSpecifierPolicyEntry 5 } + + + trafficSpecifierPolicyMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit: size in bytes + of application data and all IP and greater + level (UDP, RTP, TCP, etc.) headers. " + + ::= { trafficSpecifierPolicyEntry 6 } + + + trafficSpecifierPolicyMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size: biggest packet + that conforms to traffic specification. " + + ::= { trafficSpecifierPolicyEntry 7 } + + -- + -- RSPEC Limits Table + -- + + rspecLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF RspecLimitsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines the RSPEC policy control + characteristics that are applied to Integrated + Services Guaranteed Service." + + ::= { rsvpPccBaseClasses 5 } + + rspecLimitsEntry OBJECT-TYPE + SYNTAX RspecLimitsEntry + STATUS current + DESCRIPTION + " An entry that defines specific Rate and Slack + limits for a Guaranteed Service resource request " + + EXTENDS { trafficSpecifierPolicyEntry } + UNIQUENESS { rspecLimitsRate, + rspecLimitsSlackTerm } + + ::= { rspecLimitsTable 1 } + + + RspecLimitsEntry ::= SEQUENCE { + rspecLimitsId InstanceId, + rspecLimitsRate BitRate, + rspecLimitsSlackTerm Unsigned32 + } + + + rspecLimitsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the rspecLimits class." + + ::= { rspecLimitsEntry 1 } + + rspecLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'R' - Rate. Must be greater than or equal to 'r', rate + for the flow " + + ::= { rspecLimitsEntry 2 } + + rspecLimitsSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + ::= { rspecLimitsEntry 3 } + + -- + -- Authentication Data Policy Element Table + -- + + authDataPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthDataPolicyElementEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table specifies policy control to identify and + authenticate the owner making resource request." + + ::= { rsvpPccBaseClasses 6 } + + authDataPolicyElementEntry OBJECT-TYPE + SYNTAX AuthDataPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific authentication + identify used to grant permission for the + reservation request." + + PIB-INDEX { authDataPolicyElementPccId } + UNIQUENESS { + authDataPolicyElementPolicySetId, + authDataPolicyElementPolicyIdentity, + authDataPolicyElementPolicyAuthAttrType, + authDataPolicyElementPolicyAuthAttrSubType + } + + ::= { authDataPolicyElementTable 1 } + + + AuthDataPolicyElementEntry::= SEQUENCE { + authDataPolicyElementPccId InstanceId, + authDataPolicyElementPolicySetId TagId, + authDataPolicyElementPolicyIdentity INTEGER, + authDataPolicyElementPolicyAuthAttrType INTEGER, + authDataPolicyElementPolicyAuthAttrSubType INTEGER + } + + authDataPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the AuthDataPolicyElement class." + + ::= { authDataPolicyElementEntry 1 } + + + authDataPolicyElementPolicySetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + " This associates a set of authentication attributes." + + ::= { authDataPolicyElementEntry 2 } + + + + authDataPolicyElementPolicyIdentity OBJECT-TYPE + SYNTAX INTEGER{ + authUser(1), + authApp(2) + } + STATUS current + DESCRIPTION + " Identifies the Policy Set Element via enumeration + values: + (2) AUTH_USER + (3) AUTH_APP " + + ::= { authDataPolicyElementEntry 3 } + + + authDataPolicyElementPolicyAuthAttrType OBJECT-TYPE + SYNTAX INTEGER { + policyLocaltor(1), + credential(2), + digitalSignature(3), + policyErrorObject(4) + } + STATUS current + DESCRIPTION + " Enumeration values: + (1) POLICY_LOCATOR (valid for both AUTH_USER and + AUTH_APP) + (2) CREDENTIAL (valid for both AUTH_USER and + AUTH_APP) + (3) DIGITAL_SIGNATURE + (4) POLICY_ERROR_OBJECT " + + ::= { authDataPolicyElementEntry 4 } + + authDataPolicyElementPolicyAuthAttrSubType OBJECT-TYPE + SYNTAX INTEGER { + noType(0), + asciiDN(1), + unicodeDN(2), + asciiDNEncrypt(3), + unicodeDNEncrypt(4), + asciiID(5), + unicodeID(6), + kerberorTKT(7), + x509Cert(8), + pgpCert(9), + noMoreInfo(10), + unsupportedCredType(11), + insufficientPrivs(12), + expiredCredential(13), + identityChanged(14) + } + STATUS current + DESCRIPTION + " For POLICY_LOCATOR valid enumeration values are: + (1) ASCII_DN (valid for both AUTH_USER and + AUTH_APP) + (2) UNICODE_DN (valid for both AUTH_USER and + AUTH_APP) + (3) ASCII_DN_ENCRYPT + (4) UNICODE_DN_ENCRYPT + + For CREDENTIAL valid enumeration values are: + (5) ASCII_ID (valid for both AUTH_USER and + AUTH_APP) + (6) UNICODE_ID (valid for both AUTH_USER and + AUTH_APP) + (7) KERBEROS_TKT + (8) X509_V3_CERT + (9) PGP_CERT + + For DIGITAL_SIGNATURE: + Sub-Type set to 0 + + For POLICY_ERROR_OBJECT valid enumeration values are: + (10) ERROR_NO_MORE_INFO + (11) UNSUPPORTED_CREDENTIAL_TYPE + (12) INSUFFICIENT_PRIVILEGES + (13) EXPIRED_CREDENTIAL + (14) IDENTITY_CHANGED " + + ::= { authDataPolicyElementEntry 5 } + + + -- + -- Priority Preemption Policy Element Table + -- + + priorityPreemptionPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF PriorityPreemptionPolicyElementEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines policy control for priority + preemption." + + ::= { rsvpPccBaseClasses 7 } + + + priorityPreemptionPolicyElementEntry OBJECT-TYPE + SYNTAX PriorityPreemptionPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific preemption priority to + admit the flow and the defending priority. " + + PIB-INDEX { priorityPreemptionPolicyElementPccId } + UNIQUENESS { + priorityPreemptionPolicyElementMergeStrategy, + priorityPreemptionPolicyElementPreemptionPriority, + priorityPreemptionPolicyElementDefendingPriority + } + + ::= { priorityPreemptionPolicyElementTable 1 } + + + PriorityPreemptionPolicyElementEntry ::= SEQUENCE { + priorityPreemptionPolicyElementPccId InstanceId, + priorityPreemptionPolicyElementMergeStrategy INTEGER, + priorityPreemptionPolicyElementPreemptionPriority INTEGER, + priorityPreemptionPolicyElementDefendingPriority INTEGER + } + + priorityPreemptionPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PriorityPreemptionPolicyElement + class." + + ::= { priorityPreemptionPolicyElementEntry 1 } + + + priorityPreemptionPolicyElementMergeStrategy OBJECT-TYPE + SYNTAX INTEGER { + highestQOS(1), + highestPriority(2), + errorOnMerge(3) + } + STATUS current + DESCRIPTION + " Defines the merging strategy for the flow. The + Enum values are: + (1) take priority of highest QoS + (2) take highest priority + (3) force an error on heterogeneous merge" + + ::= { priorityPreemptionPolicyElementEntry 2 } + + + priorityPreemptionPolicyElementPreemptionPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " Defines the value of the new reservation that is + compared against the defending priorities of existing + flows. A higher value represents a higher priority." + + ::= { priorityPreemptionPolicyElementEntry 3 } + + + priorityPreemptionPolicyElementDefendingPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " The value defined for an existing flow to defend its + priority against a new reservation seeking admission. + The higher value represents higher priority." + + ::= { priorityPreemptionPolicyElementEntry 4 } + + -- + --Intsrv to Diffserv Interworking Function Table + -- + + pccIwfTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccIwfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the attributes used for the + interworking between the RSVP process in the + control plane and Differentiated Services in the + data plane." + + ::= {rsvpPccBaseClasses 8} + + pccIwfEntry OBJECT-TYPE + SYNTAX PccIwfEntry + STATUS current + DESCRIPTION + "Defines the attributes for Intsrv and Diffserv + interworking." + PIB-INDEX {pccIwfId} + + ::= {pccIwfTable 1} + + PccIwfEntry ::= SEQUENCE { + pccIwfId InstanceId, + pccIwfIntSrvClass Integer32, + pccIwfDSCP Integer32, + pccIwfOutOfProfile Integer32, + pccIwfRemarkvalue Integer32, + pccIwfScheduler Integer32 + } + + pccIwfId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the iwfTable + entry." + ::= { pccIwfEntry 1} + + pccIwfIntSrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Intsrv Class associated with + the attributes of this specific interworking function + entry. It must have a corresponding bit set in + pccACPoolISClass." + ::= { pccIwfEntry 2} + + pccIwfDSCP OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The Value of the DSCP to assign the data stream + for the session with the IntSrv class type + matching the value of the pccIwfIntSrvClass. + Value range is 0 .. 63." + ::= { pccIwfEntry 3} + + pccIwfOutOfProfile OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This indicates the behavior when the data stream + is out of profile. This value overrides any other + configured profile such as that defined in the + MeterTableEntry. The value of 0 indicates that + this attribute is ignored for this entry. A value + of 1 indications the out of profile packet is + dropped. A value of 2 indicates the out of profile + packet DSCP is remarked with the value + pccIwfRemarkValue." + ::= {pccIwfEntry 4} + + pccIwfRemarkvalue OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This is the value of the DSCP to remark an out of + profile packet. This value is only used if the + pccIwfOutOfProfile has a value of 2." + ::= {pccIwfEntry 5} + + pccIwfScheduler OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This is the value that identifies the scheduler + to be used by the data streams of sessions with an + IntSrv class matching the value of the attribute + pccIwfIntSrClass." + ::= {pccIwfEntry 6} + + + -- + --Admission Control Virtual Pool Table + -- + + pccACVirPoolTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccACVirPoolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the virtual pool used by the RSVP + process during admission contro." + + ::= {rsvpPccBaseClasses 9} + + pccACVirPoolEntry OBJECT-TYPE + SYNTAX PccACVirPoolEntry + STATUS current + DESCRIPTION + "Defines the attributes for the Intsrv virtual pool." + PIB-INDEX {pccACVirPoolId} + + ::= {pccACVirPoolTable 1} + + PccACVirPoolEntry ::= SEQUENCE { + pccACVirPoolId InstanceId, + pccACVirPoolInterface SnmpAdminString, + pccACVirPoolDirection Integer32, + pccACVirPoolIntSrvClass BITS, + pccACVirPoolMaxAbsRate Unsigned32, + pccACVirPoolAcceptResv Integer32 + } + + pccACVirPoolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the pccACVirPool + entry." + ::= { pccACVirPoolEntry 1} + + pccACVirPoolInterface OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The SNMP string identifies the logical interface + associated with the Admission Control Virtual + Pool entry." + ::= { pccACVirPoolEntry 2} + + pccACVirPoolDirection OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute indicates the relationship of the + traffic stream to the interface. The traffic + stream is either inbound (1) or outbound (2). An + upstream virtual pool has an inbound Direction + and a downstream virtual pool has a Direction of + outbound." + ::= { pccACVirPoolEntry 3} + + pccACVirPoolIntSrvClass OBJECT-TYPE + SYNTAX BITS -- which ones !? + { dummy(0) } + STATUS current + DESCRIPTION + "The bit string indicates the IntSrv class or + classes that have resources allocated from this + virtual pool by admission control. + Value range is 0 .. 63." + ::= { pccACVirPoolEntry 4} + + pccACVirPoolMaxAbsRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is the maximum absolute rate in kilobits + that this pool may allocate to the IntSrv + sessions defined by the + pccACVirtPoolIntSrvClass." + ::= {pccACVirPoolEntry 5} + + pccACVirPoolAcceptResv OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This value indicates whether the RSVP admission + control is to accept RSVP RESV request for the + IntSrv flows belonging to the IntSrv classes + defined by pccACVirPoolIntSrvClass." + ::= {pccACVirPoolEntry 6} + + + -- + --Edge Point Identification Table + -- + + pccEdgeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccEdgeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the attributes used to identify + the receiver domain. Admission control performs the + upstream resource check when the RSVP Session Object + matches one of the entries in this table." + + ::= {rsvpPccBaseClasses 10} + + pccEdgeEntry OBJECT-TYPE + SYNTAX PccEdgeEntry + STATUS current + DESCRIPTION + "Defines the attributes for identifying the + receiver domain edge that invokes upstream + Admission control in addition to downstream + Admission control." + PIB-INDEX {pccEdgeId} + + ::= {pccEdgeTable 1} + + PccEdgeEntry ::= SEQUENCE { + pccEdgeId InstanceId, + pccEdgeAddrType InetAddressType, + pccEdgeAddr InetAddress, + pccEdgeAddrMask Unsigned32 + } + + pccEdgeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the pccEdgeTable + entry." + ::= { pccEdgeEntry 1} + + pccEdgeAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "This is the enumerated value specifying the type + of address (IPv4 or Ipv6) as defined in RFC 2851." + ::= { pccEdgeEntry 2} + + pccEdgeAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "When the value of this address matches the RSVP + Session Object Destination Address, it indicates + a that the session receiver is downstream and that + the upstream admission control should be performed." + ::= { pccEdgeEntry 3} + + pccEdgeAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of the mask for matching th eaddress." + ::= { pccEdgeEntry 4} + + + -- + -- The Policy Control Criteria Session Statistics usage + -- + + pccSessionStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccSessionStatsUsageEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class defines the session statistics. It contains + the Prid of the linkage instance associating the + selection criteria instance with the usage instance." + + ::= {rsvpPccBaseClasses 11} + + pccSessionStatsUsageEntry OBJECT-TYPE + SYNTAX PccSessionStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {pccSessionStatsUsageId} + + + ::= {pccSessionStatsUsageTable 1} + + PccSessionStatsUsageEntry ::= SEQUENCE { + pccSessionStatsUsageId InstanceId, + pccSessionStatsUsageStart ExtUTCTime, + pccSessionStatsUsageEnd ExtUTCTime + } + + pccSessionStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the pccSessionStatsUsage class." + + ::= { pccSessionStatsUsageEntry 1 } + + pccSessionStatsUsageStart OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was successfully + allocated." + + ::= { pccSessionStatsUsageEntry 2} + + pccSessionStatsUsageEnd OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was ended. This + could be due to reservation tear down, an error or + time out condition" + + ::= { pccSessionStatsUsageEntry 3} + + + -- The Policy Control Criteria Allocated Usage Table + -- + + pccAllocatedUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccAllocatedUsageEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class records the traffic specification allocated + to a session. It contains the Prid of the linkage + instance associating the selection criteria instance + with the usage instance." + + ::= {rsvpPccBaseClasses 12} + + pccAllocatedUsageEntry OBJECT-TYPE + SYNTAX PccAllocatedUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, record + and report." + PIB-INDEX {pccAllocatedUsageId} + + ::= { pccAllocatedUsageTable 1} + + PccAllocatedUsageEntry ::= SEQUENCE { + pccAllocatedUsageId InstanceId, + pccAllocatedIntsrvClass Integer32, + pccAllocatedUsageBucketRate BitRate, + pccAllocatedUsageBucketSize Unsigned32, + pccAllocatedUsagePeakRate BurstSize, + pccAllocatedUsageMinPolicedUnit MessageSize, + pccAllocatedUsageMaxPacketSize MessageSize, + pccAllocatedUsageLimitsRate BitRate, + pccAllocatedUsageSlackTerm Unsigned32 + } + + + pccAllocatedUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the PpcAllocatedUsage class." + + ::= { pccAllocatedUsageEntry 1 } + + pccAllocatedIntsrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The Intsrv Class associated with the session." + ::= { pccAllocatedUsageEntry 2 } + + pccAllocatedUsageBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { pccAllocatedUsageEntry 3 } + + + pccAllocatedUsageBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { pccAllocatedUsageEntry 4 } + + + pccAllocatedUsagePeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { pccAllocatedUsageEntry 5 } + + + pccAllocatedUsageMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit - size in bytes of + application data and all IP and greater level (UDP, + RTP, TCP, etc.) headers. " + + ::= { pccAllocatedUsageEntry 6 } + + + pccAllocatedUsageMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size - biggest packet that conforms + to traffic specification. " + ::= { pccAllocatedUsageEntry 7 } + + + + pccAllocatedUsageLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " Limit Rate. Must be greater than or equal to rate for + the flow " + + ::= { pccAllocatedUsageEntry 8 } + + + + pccAllocatedUsageSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + + + ::= { pccAllocatedUsageEntry 9 } + + -- + --Virtual Pool Usage Table + -- + + pccPoolUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccPoolUsageEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table tracks and reports the current total + of resources consumed by Intsrv flows for a + specific virtual pool." + + ::= {rsvpPccBaseClasses 13} + + pccPoolUsageEntry OBJECT-TYPE + SYNTAX PccPoolUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes for tracking the current + total of resources used by Intsrv flows for a + virtual pool." + PIB-INDEX {pccPoolUsageId} + + ::= {pccPoolUsageTable 1} + + PccPoolUsageEntry ::= SEQUENCE { + pccPoolUsageId InstanceId, + pccPoolUsagePoolId Prid, + pccPoolUsageAbsRateInUse Unsigned32, + pccPoolUsageAbsRateInUseThreshold Unsigned32 + } + + pccPoolUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the + pccPoolUsage Table entry." + ::= { pccPoolUsageEntry 1} + + pccPoolUsagePoolId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This is the prid of the pccACVirPoolTable entry + that is being tracked." + ::= { pccPoolUsageEntry 2} + + pccPoolUsageAbsRateInUse OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is the current total of resources used + by Intsrv flows for the virtual pool identified + by the pccPoolUsagePoolId." + ::= { pccPoolUsageEntry 3} + + pccPoolUsageAbsRateInUseThreshold OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " This value is associated with the + pccPoolUsageAbsRateInUse and defines the feedback + threshold for this usage that results in the + instance being reported to the PDP. This value is + only used if the linkage entry is set to threshold" + ::= { pccPoolUsageEntry 4 } + + END diff --git a/pibs/tubs/RSVP-PCC-PIB-orig b/pibs/tubs/RSVP-PCC-PIB-orig new file mode 100644 index 0000000..45553ef --- /dev/null +++ b/pibs/tubs/RSVP-PCC-PIB-orig @@ -0,0 +1,1167 @@ + RSVP-PCC-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Unsigned64, Integer32, MODULE-IDENTITY + FROM COPS-PR-SPPI + InstanceID, ReferenceID, Prid, TagID + FROM COPS-PR-SPPI-TC + InetAddress, InetAddressType + FROM SNMPv2-TC + Role, RoleCombination + FROM POLICY-DEVICE-AUX-MIB + OBJECT-GROUP + FROM SNMPv2-CONF + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + FrwkIpFilterTable + FROM FRAMEWORK-PIB; + +RsvpPccPib MODULE-IDENTITY SUBJECT-CATEGORY { RSVP-PCC(tbd) } + LAST-UPDATED "200011131600Z" + ORGANIZATION "IETF-RAP-WG" + CONTACT-INFO " + Diana Rawlins + 901 International Parkway + Richardson, TX 75081 + Email: Diana.Rawlins@wcom.com + Phone +1 972 729 1044 + + Lei Yao + 22001 Loudoun County Parkway + Ashburn, VA 20147 + Email: Lei.yao@wcom.com + Phone: +1 703 886 1830 + + Richard McClain + 901 International Parkway + Richardson, TX 75081 + Email: Richard.McClain@wcom.com + Phone: +1 972 729 1094 + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Email: amol.kulkarni@intel.com + Phone: +1 503 712 1168 " + + DESCRIPTION + "A PIB module containing the policy control + classes that are required for support of + pushing policy control from the PDP to PEPs." + + ::= { tbd } + + -- + -- The root OID for PRCs in the RSVP Policy Control Criteria PIB + -- + + rsvpPccBaseClasses + OBJECT IDENTIFIER ::= { RsvpPccPib 1 } + + -- + -- Textual Conventions + -- + + -- + -- Policy Control Capabilities Table + -- + + policyControlCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyControlCapsEntry + PIB-ACCESS notify, 3 + STATUS current + DESCRIPTION + " The policy control capability in terms of the policy + control mode supported by the device." + + ::= { rsvpPccBaseClasses 1 } + + policyControlCapsEntry OBJECT-TYPE + SYNTAX PolicyControlCapsEntry + STATUS current + DESCRIPTION + " The instance defining the policy control mode." + + PIB-INDEX { policyControlCapsPccId } + + ::= { policyControlCapsTable 1 } + + + PolicyControlCapsEntry ::= SEQUENCE { + policyControlCapsPccId InstanceId, + policyControlCapsMode BITS + } + + policyControlCapsPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PolicyControlCaps class." + + ::= { policyControlCapsEntry 1 } + + policyControlCapsMode OBJECT-TYPE + SYNTAX BITS { + CONFIRM_ALL(0), + LOCAL_IF_AVAILABLE(1), + LOCAL_ONLY(2) + } + STATUS current + DESCRIPTION + "The policy control criteria mode of the device. The + device may support any combination of modes. + The valid bit values are: + (0)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (1)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (2)local policy control only." + + ::= { policyControlCapsEntry 2} + + -- + -- Policy Control Criteria Mode Table + -- + + pccModeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF PccModeEntry + PIB-ACCESS notify,3 + STATUS current + DESCRIPTION + " The policy control mode designated by the PDP." + + + ::= { rsvpPccBaseClasses 2 } + + pccModeEntry OBJECT-TYPE + SYNTAX PccModeEntry + STATUS current + DESCRIPTION + " The instance defining the PDP designated mode of + policy control." + + PIB-INDEX { pccModeId } + + ::= { pccModeTable 1 } + + + PccModeEntry ::= SEQUENCE { + pccModeId InstanceId, + pccModeMode INTEGER + } + + pccModeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the pccModeTable class." + + ::= { pccModeEntry 1 } + + pccModeMode OBJECT-TYPE + SYNTAX INTEGER { + CONFIRM_ALL(1), + LOCAL_IF_AVAILABLE(2), + LOCAL_ONLY(3) + } + STATUS current + DESCRIPTION + "The policy criteria control mode to be used by the + device. + The valid enumeration values are: + (1)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (2)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (3)local policy control only." + + ::= { pccModeEntry 2} + + -- + -- Policy Control Criteria Linkage Table + -- + + pccLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccLinkEntry + PIB-ACCESS install-notify, 4 + STATUS current + DESCRIPTION + " This table defines the association between + the filter, frwkIpFilterTable instance and + the authorization policy instance" + + ::= { rsvpPccBaseClasses 3 } + + pccLinkEntry OBJECT-TYPE + SYNTAX PccLinkEntry + STATUS current + DESCRIPTION + " An entry links the filter and the authorization + policy." + + PIB-INDEX { pccLinkPccId } + UNIQUENESS { + pccLinkFilterRefId, + pccLinkPolicyPrid } + + ::= { pccLinkTable 1 } + + + PccLinkEntry::= SEQUENCE { + pccLinkPccId InstanceId, + pccLinkFilterRefId ReferenceId, + pccLinkPolicyPrid Prid + } + + pccLinkPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely + identifies an instance of the PccLink class. " + + ::= { pccLinkEntry 1 } + + + pccLinkFilterRefId OBJECT-TYPE + SYNTAX ReferenceId + STATUS current + DESCRIPTION + " References an instance of FrwkIPFilterTable. " + ::= { pccLinkEntry 2 } + + + pccLinkPolicy OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " Specifies the specific PRID of the PRC and instance of + authorization policy associated with this filter." + + ::= { pccLinkEntry 3 } + + -- + -- Traffic Specifier Policies Table + -- + + trafficSpecifierPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrafficSpecifierPolicyEntry + PIB-ACCESS install-notify, 7 + STATUS current + DESCRIPTION + "This table defines the Traffic specifier policy control + characteristics that can be used to determine + SENDER_TSPEC, Controlled-Load or Guaranteed Services + policies." + + ::= { rsvpPccBaseClasses 4 } + + trafficSpecifierPolicyEntry OBJECT-TYPE + SYNTAX TrafficSpecifierPolicyEntry + STATUS current + DESCRIPTION + " An entry describes a specific limits for a T-SPEC + policy. " + + PIB-INDEX { trafficSpecifierPolicyId } + UNIQUENESS {trafficSpecifierPolicyIntService, + trafficSpecifierPolicyBucketRate, + trafficSpecifierPolicyBucketSize, + trafficSpecifierPolicyPeakRate, + trafficSpecifierPolicyMinPolicedUnit, + trafficSpecifierPolicyMaxPacketSize } + + ::= { trafficSpecifierPoliciesTable 1 } + + + TrafficSpecifierPolicyEntry ::= SEQUENCE { + trafficSpecifierPolicyId InstanceId, + trafficSpecifierPolicyIntService Integer32, + trafficSpecifierPolicyBucketRate BitRate, + trafficSpecifierPolicyBucketSize Unsigned32, + trafficSpecifierPolicyPeakRate BurstRate, + trafficSpecifierPolicyMinPolicedUnit MessageSize, + trafficSpecifierPolicyMaxPacketSize MessageSize + + } + + + + trafficSpecifierPolicyId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the TrafficSpecifierPolicy class." + + ::= { trafficSpecifierPolicyEntry 1 } + + + trafficSpecifierPolicyIntService OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + " The traffic specifier policy is applied + to the flow of this Integrated Service type.ö + ::= { pccDiffservMarkerEntry 2 } + + trafficSpecifierPolicyBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { trafficSpecifierPolicyEntry 3 } + + + trafficSpecifierPolicyBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { trafficSpecifierPolicyEntry 4 } + + + trafficSpecifierPolicyPeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { trafficSpecifierPolicyEntry 5 } + + + trafficSpecifierPolicyMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit: size in bytes + of application data and all IP and greater + level (UDP, RTP, TCP, etc.) headers. " + + ::= { trafficSpecifierPolicyEntry 6 } + + + trafficSpecifierPolicyMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size: biggest packet + that conforms to traffic specification. " + + ::= { trafficSpecifierPolicyEntry 7 } + + -- + -- RSPEC Limits Table + -- + + rspecLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF RspecLimitsEntry + PIB-ACCESS install-notify, 4 + STATUS current + DESCRIPTION + "This table defines the RSPEC policy control + characteristics that are applied to Integrated + Services Guaranteed Service." + + ::= { rsvpPccBaseClasses 5 } + + rspecLimitsEntry OBJECT-TYPE + SYNTAX RspecLimitsEntry + STATUS current + DESCRIPTION + " An entry that defines specific Rate and Slack + limits for a Guaranteed Service resource request " + + EXTENDS { trafficSpecifierPolicyTable } + UNIQUENESS { rspecLimitRate, + rspecLimitsSlackTerm } + + ::= { rspecLimitsTable 1 } + + + RspecLimitsEntry ::= SEQUENCE { + RspecLimitsId InstanceId, + rspecLimitsRate BitRate, + rspecLimitsSlackTerm Unsigned32 + } + + + rspecLimitsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the rspecLimits class." + + ::= { rspecLimitsEntry 1 } + + rspecLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'R' - Rate. Must be greater than or equal to 'r', rate + for the flow " + + ::= { rspecLimitsEntry 2 } + + rspecLimitsSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + ::= { rspecLimitsEntry 3 } + + -- + -- Authentication Data Policy Element Table + -- + + authDataPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthDataPolicyElementEntry + PIB-ACCESS install-notify, 6 + STATUS current + DESCRIPTION + "This table specifies policy control to identify and + authenticate the owner making resource request." + + ::= { rsvpPccBaseClasses 6 } + + authDataPolicyElementEntry OBJECT-TYPE + SYNTAX AuthDataPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific authentication + identify used to grant permission for the + reservation request." + + PIB-INDEX { authDataPolicyElementPccId } + UNIQUENESS { + authDataPolicyElementPolicySetId, + authDataPolicyElementPolicyIdentity, + authDataPolicyElementPolicyAuthAttrType, + authDataPolicyElementPolicyAuthAttrSubType + } + + ::= { authDataPolicyElementTable 1 } + + + AuthDataPolicyElementEntry::= SEQUENCE { + AuthDataPolicyElementPccId InstanceID, + AuthDataPolicyElementPolicySetId TagID, + authDataPolicyElementPolicyIdentity INTEGER, + authDataPolicyElementPolicyAuthAttrType INTEGER, + authDataPolicyElementPolicyAuthAttrSubType INTEGER + } + + authDataPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the AuthDataPolicyElement class." + + ::= { authDataPolicyElementEntry 1 } + + + authDataPolicyElementPolicySetId OBJECT-TYPE + SYNTAX TagID + STATUS current + DESCRIPTION + " This associates a set of authentication attributes." + + ::= { authDataPolicyElementEntry 2 } + + + + authDataPolicyElementPolicyIdentity OBJECT-TYPE + SYNTAX INTEGER{ + AUTH_USER(1), + AUTH_APP(2) + } + STATUS current + DESCRIPTION + " Identifies the Policy Set Element via enumeration + values: + (2) AUTH_USER + (3) AUTH_APP " + + ::= { authDataPolicyElementEntry 3 } + + + authDataPolicyElementPolicyAuthAttrType OBJECT-TYPE + SYNTAX INTEGER { + POLICY_LOCATOR(1), + CREDENTIAL(2), + DIGITAL_SIGNATURE(3), + POLICY_ERROR_object(4) + } + STATUS current + DESCRIPTION + " Enumeration values: + (1) POLICY_LOCATOR (valid for both AUTH_USER and + AUTH_APP) + (2) CREDENTIAL (valid for both AUTH_USER and + AUTH_APP) + (3) DIGITAL_SIGNATURE + (4) POLICY_ERROR_OBJECT " + + ::= { authDataPolicyElementEntry 4 } + + authDataPolicyElementPolicyAuthAttrSubType OBJECT-TYPE + SYNTAX INTEGER { + NO_TYPE(0), + ASCII_DN(1), + UNICODE_DN(2), + ASCII_DN_ENCRYPT(3), + UNICODE_DN_ENCRYPT(4), + ASCII_ID(5), + UNICODE_ID(6), + KERBEROS_TKT(7), + X509_CERT(8), + PGP_CERT(9), + NO_MORE_INFO(10), + UNSUPPORTED_CRED_TYPE(11), + INSUFFICIENT_PRIVS(12), + EXPIRED_CREDENTIAL(13), + IDENTITY_CHANGED(14) + } + STATUS current + DESCRIPTION + " For POLICY_LOCATOR valid enumeration values are: + (1) ASCII_DN (valid for both AUTH_USER and + AUTH_APP) + (2) UNICODE_DN (valid for both AUTH_USER and + AUTH_APP) + (3) ASCII_DN_ENCRYPT + (4) UNICODE_DN_ENCRYPT + + For CREDENTIAL valid enumeration values are: + (5) ASCII_ID (valid for both AUTH_USER and + AUTH_APP) + (6) UNICODE_ID (valid for both AUTH_USER and + AUTH_APP) + (7) KERBEROS_TKT + (8) X509_V3_CERT + (9) PGP_CERT + + For DIGITAL_SIGNATURE: + Sub-Type set to 0 + + For POLICY_ERROR_OBJECT valid enumeration values are: + (10) ERROR_NO_MORE_INFO + (11) UNSUPPORTED_CREDENTIAL_TYPE + (12) INSUFFICIENT_PRIVILEGES + (13) EXPIRED_CREDENTIAL + (14) IDENTITY_CHANGED " + + ::= { authDataPolicyElementEntry 5 } + + + -- + -- Priority Preemption Policy Element Table + -- + + priorityPreemptionPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF PriorityPreemptionPolicyElementEntry + PIB-ACCESS install-notify,5 + STATUS current + DESCRIPTION + "This table defines policy control for priority + preemption." + + ::= { rsvpPccBaseClasses 7 } + + + priorityPreemptionPolicyElementEntry OBJECT-TYPE + SYNTAX PriorityPreemptionPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific preemption priority to + admit the flow and the defending priority. " + + PIB-INDEX { priorityPreemptionPolicyElementPccId } + UNIQUENESS { + priorityPreemptionPolicyElementMergeStrategy, + priorityPreemptionPolicyElementPreemptionPriority, + priorityPreemptionPolicyElementDefendingPriority + } + + ::= { priorityPreemptionPolicyElementTable 1 } + + + PriorityPreemptionPolicyElementEntry ::= SEQUENCE { + priorityPreemptionPolicyElementPccId InstanceId, + priorityPreemptionPolicyElementMergeStrategy INTEGER, + priorityPreemptionPolicyElementPreemptionPriority INTEGER, + priorityPreemptionPolicyElementDefendingPriority INTEGER + } + + priorityPreemptionPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PriorityPreemptionPolicyElement + class." + + ::= { priorityPreemptionPolicyElementEntry 1 } + + + priorityPreemptionPolicyElementMergeStrategy OBJECT-TYPE + SYNTAX INTEGER { + HIGHEST_QOS(1), + HIGHEST_PRIORITY(2), + ERROR_ON_MERGE(3) + } + STATUS current + DESCRIPTION + " Defines the merging strategy for the flow. The + Enum values are: + (1) take priority of highest QoS + (2) take highest priority + (3) force an error on heterogeneous merge" + + ::= { priorityPreemptionPolicyElementEntry 2 } + + + priorityPreemptionPolicyElementPreemptionPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " Defines the value of the new reservation that is + compared against the defending priorities of existing + flows. A higher value represents a higher priority." + + ::= { priorityPreemptionPolicyElementEntry 3 } + + + priorityPreemptionPolicyElementDefendingPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " The value defined for an existing flow to defend its + priority against a new reservation seeking admission. + The higher value represents higher priority." + + ::= { priorityPreemptionPolicyElementEntry 4 } + + -- + --Intsrv to Diffserv Interworking Function Table + -- + + pccIwfTable OBJECT TYPE + SYNTAX SEQUENCE OF PccIwfEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + ôThis table defines the attributes used for the + interworking between the RSVP process in the + control plane and Differentiated Services in the + data plane.ö + + ::= {rsvpPccBaseClasses 8} + + pccIwfEntry OBJECT TYPE + SYNTAX PccIwfEntry + STATUS current + DESCRIPTION + ôDefines the attributes for Intsrv and Diffserv + interworking.ö + PIB-INDEX {pccIwfId} + + ::= {pccIwfTable 1} + + PccIwfEntry ::= SEQUENCE { + pccIwfId InstanceID, + pccIwfIntSrvClass Integer 32, + pccIwfDSCP Integer 32, + pccIwfOutOfProfile Integer 32, + pccIwfRemarkvalue Integer 32, + pccIwfScheduler Integer 32 + } + + pccIwfId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + ôThis is the unique identifier of the iwfTable + entry.ö + ::= { pccIwfEntry 1} + + pccIwfIntSrvClass OBJECT-TYPE + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThe value of the Intsrv Class associated with + the attributes of this specific interworking function + entry. It must have a corresponding bit set in + pccACPoolISClass.ö + ::= { pccIwfEntry 2} + + pccIwfDSCP OBJECT-TYPE + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThe Value of the DSCP to assign the data stream + for the session with the IntSrv class type + matching the value of the pccIwfIntSrvClass. + Value range is 0 û 63.ö + ::= { pccIwfEntry 3} + + pccIwfOutOfProfile + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThis indicates the behavior when the data stream + is out of profile. This value overrides any other + configured profile such as that defined in the + MeterTableEntry. The value of 0 indicates that + this attribute is ignored for this entry. A value + of 1 indications the out of profile packet is + dropped. A value of 2 indicates the out of profile + packet DSCP is remarked with the value + pccIwfRemarkValue.ö + ::= {pccIwfEntry 4} + pccIwfRemark + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThis is the value of the DSCP to remark an out of + profile packet. This value is only used if the + pccIwfOutOfProfile has a value of 2.ö + ::= {pccIwfEntry 5} + pccIwfScheduler + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThis is the value that identifies the scheduler + to be used by the data streams of sessions with an + IntSrv class matching the value of the attribute + pccIwfIntSrClass.ö + ::= {pccIwfEntry 5} + + + -- + --Admission Control Virtual Pool Table + -- + + pccACVirPoolTable OBJECT TYPE + SYNTAX SEQUENCE OF PccACVirPoolEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + ôThis table defines the virtual pool used by the RSVP + process during admission contro. ö + + ::= {rsvpPccBaseClasses 9} + + pccACVirPoolEntry OBJECT TYPE + SYNTAX PccACVirPoolEntry + STATUS current + DESCRIPTION + ôDefines the attributes for the Intsrv virtual pool.ö + PIB-INDEX {pccACVirPoolId} + + ::= {pccACVirPoolTable 1} + + PccACVirPoolEntry ::= SEQUENCE { + pccACVirPoolId InstanceID, + pccACVirPoolInterface SNMP string, + pccACVirPoolDirection Integer32, + pccACVirPoolIntSrvClass BITS, + pccACVirPoolMaxAbsRate Unsigned32, + pccACVirPoolAcceptResv Integer32 + } + + pccACVirPoolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + ôThis is the unique identifier of the pccACVirPool + entry.ö + ::= { pccACVirPoolEntry 1} + + pccACVirPoolInterface OBJECT-TYPE + SYNTAX SNMP string + STATUS current + DESCRIPTION + ôThe SNMP string identifies the logical interface + associated with the Admission Control Virtual + Pool entry.ö + ::= { pccACVirPoolEntry 2} + + pccACVirPoolDirection OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + ôThis attribute indicates the relationship of the + traffic stream to the interface. The traffic + stream is either inbound (1) or outbound (2). An + upstream virtual pool has an inbound Direction + and a downstream virtual pool has a Direction of + outbound.ö + ::= { pccACVirPoolEntry 3} + + pccACVirPoolIntSrvClass OBJECT-TYPE + SYNTAX BITS + STATUS current + DESCRIPTION + ôThe bit string indicates the IntSrv class or + classes that have resources allocated from this + virtual pool by admission control. + Value range is 0 û 63.ö + ::= { pccACVirPoolEntry 4} + + pccACVirPoolMaxAbsRate + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + ôThis is the maximum absolute rate in kilobits + that this pool may allocate to the IntSrv + sessions defined by the + pccACVirtPoolIntSrvClass.ö + ::= {pccACVirPoolEntry 5} + + pccACVirPoolAcceptResv + SYNTAX Integer 32 + STATUS current + DESCRIPTION + ôThis value indicates whether the RSVP admission + control is to accept RSVP RESV request for the + IntSrv flows belonging to the IntSrv classes + defined by pccACVirPoolIntSrvClass.ö + ::= {pccACVirPoolEntry 6} + + + -- + --Edge Point Identification Table + -- + + pccEdgeTable OBJECT TYPE + SYNTAX SEQUENCE OF PccEdgeEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + ôThis table defines the attributes used to identify + the receiver domain. Admission control performs the + upstream resource check when the RSVP Session Object + matches one of the entries in this table.ö + + ::= {rsvpPccBaseClasses 10} + + pccEdgeEntry OBJECT TYPE + SYNTAX PccEdgeEntry + STATUS current + DESCRIPTION + ôDefines the attributes for identifying the + receiver domain edge that invokes upstream + Admission control in addition to downstream + Admission control.ö + PIB-INDEX {pccEdgeId} + + ::= {pccEdgeTable 1} + + PccEdgeEntry ::= SEQUENCE { + pccEdgeId InstanceID, + pccAddrType INET Address Type, + pccEdgeAddr INET Address, + pccEdgeMask Unsigned 32, + } + + pccEdgeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + ôThis is the unique identifier of the pccEdgeTable + entry.ö + ::= { pccEdgeEntry 1} + + pccEdgeAddrType OBJECT-TYPE + SYNTAX INET Address + STATUS current + DESCRIPTION + ôThis is the enumerated value specifying the type + of address (IPv4 or Ipv6) as defined in RFC 2851.ö + ::= { pccEdgeEntry 2} + + pccEdgeAddr OBJECT-TYPE + SYNTAX INET Address + STATUS current + DESCRIPTION + ôWhen the value of this address matches the RSVP + Session Object Destination Address, it indicates + a that the session receiver is downstream and that + the upstream admission control should be performed.ö + ::= { pccEdgeEntry 3} + + pccEdgeAddrMask OBJECT-TYPE + SYNTAX unsigned 32 + STATUS current + DESCRIPTION + ôThe length of the mask for matching th eaddress.ö + ::= { pccEdgeEntry 4} + + + -- + -- The Policy Control Criteria Session Statistics usage + -- + + pccSessionStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccSessionStatsUsageEntry + PIB-ACCESS report + STATUS current + DESCRIPTION + "This class defines the session statistics. It contains + the PRID of the linkage instance associating the + selection criteria instance with the usage instance." + + ::= {rsvpPccBaseClasses 11} + + pccSessionStatsUsageEntry OBJECT-TYPE + SYNTAX PccSessionStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {pccSessionStatsUsageId} + + + ::= {pccSessionStatsUsageTable 1} + + PccSessionStatsUsageEntry ::= SEQUENCE { + pccSessionStatsUsageId InstanceID, + pccSessionStatsUsageStart ExtUTCTime, + pccSessionStatsUsageEnd ExtUTCTime + } + + pccSessionStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the pccSessionStatsUsage class." + + ::= { pccSessionStatsUsageEntry 1 } + + pccSessionStatsUsageStart OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was successfully + allocated." + + ::= { pccSessionStatsUsageEntry 2} + + pccSessionStatsUsageEnd OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was ended. This + could be due to reservation tear down, an error or + time out condition" + + ::= { pccSessionSatsUsageEntry 3} + + + -- The Policy Control Criteria Allocated Usage Table + -- + + pccAllocatedUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccAllocatedUsageEntry + PIB-ACCESS report + STATUS current + DESCRIPTION + "This class records the traffic specification allocated + to a session. It contains the PRID of the linkage + instance associating the selection criteria instance + with the usage instance." + + ::= {rsvpPccBaseClasses 12} + + pccAllocatedUsageEntry OBJECT-TYPE + SYNTAX PccAllocatedUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, record + and report." + PIB-INDEX {pccAllocatedUsageId} + + ::= { pccAllocatedUsageTable 1} + + PccAllocatedUsageEntry ::= SEQUENCE { + pccAllocatedUsageId InstanceId, + pccAllocatedIntsrvClass Integer32, + pccAllocatedUsageBucketRate BitRate, + pccAllocatedUsageBucketSize Unsigned32, + pccAllocatedUsagePeakRate BurstRate, + pccAllocatedUsageMinPolicedUnit MessageSize, + pccAllocatedUsageMaxPacketSize MessageSize + pccAllocatedUsageLimitsRate BitRate, + pccAllocatedUsageSlackTerm Unsigned32 + } + + + pccAllocatedUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the PpcAllocatedUsage class." + + ::= { pccAllocatedUsageEntry 1 } + + pccAllocatedIntsrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + ôThe Intsrv Class associated with the session.ö + ::= { pccAllocatedUsageEntry 2 } + + pccAllocatedUsageBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { pccAllocatedUsageEntry 3 } + + + pccAllocatedUsageBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { pccAllocatedUsageEntry 4 } + + + pccAllocatedUsagePeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { pccAllocatedUsageEntry 5 } + + + pccAllocatedUsageMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit - size in bytes of + application data and all IP and greater level (UDP, + RTP, TCP, etc.) headers. " + + ::= { pccAllocatedUsageEntry 6 } + + + pccAllocatedUsageMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size - biggest packet that conforms + to traffic specification. " + ::= { pccAllocatedUsageEntry 7 } + + + + pccAllocatedUsageLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " Limit Rate. Must be greater than or equal to rate for + the flow " + + ::= { pccAllocatedUsageEntry 8 } + + + + pccAllocatedUsageSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + + + ::= { pccAllocatedUsageEntry 9 } + + -- + --Virtual Pool Usage Table + -- + + pccPoolUsageTable OBJECT TYPE + SYNTAX SEQUENCE OF PccPoolUsageEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + ôThis table tracks and reports the current total + of resources consumed by Intsrv flows for a + specific virtual pool.ö + + ::= {rsvpPccBaseClasses 13} + + pccPoolUsageEntry OBJECT TYPE + SYNTAX PcPoolUsageEntry + STATUS current + DESCRIPTION + ôDefines the attributes for tracking the current + total of resources used by Intsrv flows for a + virtual pool.ö + PIB-INDEX {pccPoolUsageId} + + ::= {pccPoolUsageTable 1} + + PccPoolUsageEntry ::= SEQUENCE { + pccPoolUsageId InstanceID, + pccPoolUsagePoolId PRID, + pccPoolUsageAbsRateInUse Unsigned32 + } + + pccPoolUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + ôThis is the unique identifier of the + pccPoolUsage Table entry.ö + ::= { pcPoolUsageEntry 1} + + pccPoolUsagePoolId OBJECT-TYPE + SYNTAX PRID + STATUS current + DESCRIPTION + ôThis is the prid of the pccACVirPoolTable entry + that is being tracked.ö + ::= { pcPoolUsageEntry 2} + + pccPoolUsageAbsRateInUse OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + ôThis is the current total of resources used + by Intsrv flows for the virtual pool identified + by the pccPoolUsagePoolId.ö + ::= { pccPoolUsageEntry 3} + + pccPoolUsgeAbsRateInUseThreshold OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + ô This value is associated with the + pccPoolUsageAbsRateInUse and defines the feedback + threshold for this usage that results in the + instance being reported to the PDP. This value is + only used if the linkage entry is set to thresholdö + ::= { pccPoolUsageEntry 4 } + + END diff --git a/pibs/tubs/SLS-NEGOTIATION-PIB b/pibs/tubs/SLS-NEGOTIATION-PIB new file mode 100644 index 0000000..258ec76 --- /dev/null +++ b/pibs/tubs/SLS-NEGOTIATION-PIB @@ -0,0 +1,686 @@ +SLS-NEGOTIATION-PIB PIB-DEFINITIONS ::= BEGIN + IMPORTS + ibrpib + FROM TUBS-SMI + Integer32, Unsigned32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + InstanceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + ExtUTCTime + FROM SNMPv2-SMI + InetAddressType, InetAddress, + InetAddressPrefixLength, InetPortNumber + FROM INET-ADDRESS-MIB + InterfaceIndex + FROM IF-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC; + slsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- COPS-SLS Client Type, to be done + LAST-UPDATED "200202281200Z" + ORGANIZATION "Alcatel, ENST Paris and University of Paris 6" + CONTACT-INFO " + Thi Mai Trang Nguyen + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 74 61 + Email: trnguyen@enst.fr + Nadia Boukhatem + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 82 16 + Email: Nadia.BouKhatem@enst.fr + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr + Nathalie Charton + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 14 85 + Email: Nathalie.Charton@ms.alcatel.fr + Guy Pujolle + RP-LIP6-UPMC + 8 Rue du Capitaine Scott + 75015 Paris - France + Phone: +33 1 44 27 75 14 + Email: Guy.Pujolle@lip6.fr" + DESCRIPTION + "The PIB module contains a set of classes + describing the policies in SLS negotiation" + ::= { ibrpib 11 } + + slsCapabilityClasses OBJECT IDENTIFIER ::= { slsPolicyPib 1 } + slsPolicyClasses OBJECT IDENTIFIER ::= { slsPolicyPib 2 } + slsParamClasses OBJECT IDENTIFIER ::= { slsPolicyPib 3 } + slsReportClasses OBJECT IDENTIFIER ::= { slsPolicyPib 4} + + slsNegoCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "SLS negotiation capabilities supported by the client" + ::= { slsCapabilityClasses 1} + slsNegoCapsEntry OBJECT-TYPE + SYNTAX SlsNegoCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the SLS negotiation + capabilities of a client" + PIB-INDEX { slsNegoCapsPrid } + ::= { slsNegoCapsTable 1 } + SlsNegoCapsEntry ::= SEQUENCE { + slsNegoCapsPrid InstanceId, + slsNegoCapsNegoMode BITS, + slsNegoCapsNegoInt Unsigned32, + slsNegoCapsMaxPredefSls Unsigned32 + } + slsNegoCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoCapsEntry 1 } + slsNegoCapsNegoMode OBJECT-TYPE + SYNTAX BITS { + predefSls(1), + -- the ability to support predefined SLS mode + non-predefinedSls (2) + -- the ability to support non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The SLS negotiation mode supported by the PEP + (1) - predefined SLS mode + (2) - non-predefined SLS mode" + ::= { slsNegoCapsEntry 2 } + slsNegoCapsNegoInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The desired interval before which the client could + send another REQ message to modify a + negotiated SLS" + ::= { slsNegoCapsEntry 3 } + slsNegoCapsMaxPredefSls OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of predefined SLSs that the PDP can + install at the client device. If the client does not + support the predefined SLS negotiation mode, this value + MUST be 0" + ::= { slsNegoCapsEntry 4 } + slsNegoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "SLS negotiation policies to be installed by the PDP" + ::= { slsPolicyClasses 1 } + slsNegoEntry OBJECT-TYPE + SYNTAX SlsNegoEntry + STATUS current + DESCRIPTION + "An instance of this class describes the policies about + SLS negotiation that the PDP installs at the PEP" + PIB-INDEX { slsNegoPrid } + ::= { slsNegoTable 1 } + SlsNegoEntry ::= SEQUENCE { + slsNegoPrid InstanceId, + slsNegoMode BITS, + slsNegoMaxInt Unsigned32 + } + slsNegoPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoEntry 1 } + slsNegoMode OBJECT-TYPE + SYNTAX BITS{ + predefSls(1), + -- predefined SLS mode + non-predefinedSls (2) + -- non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The negotiation mode used by the client. +- indicates the predefined SLS mode. +- indicates the non-predefined SLS mode" + ::= { slsNegoEntry 2 } + slsNegoMaxInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interval during which the client cannot issue + a REQ message to change a negotiated SLS" + ::= { slsNegoEntry 3 } + slsSlsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsSlsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Represent an SLS" + ::= { slsPolicyClasses 2 } + + slsSlsEntry OBJECT-TYPE + SYNTAX SlsSlsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies an SLS" + PIB-INDEX { slsSlsPrid } + ::= { slsSlsTable 1 } + SlsSlsEntry ::= SEQUENCE { + slsSlsPrid InstanceId, + slsSlsScope Prid, + slsSlsFlowId Prid, + slsSlsTrafficConformance Prid, + slsSlsExcessTreatment Prid, + slsSlsPerformance Prid, + slsSlsServiceSchedule Prid + } + slsSlsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsSlsEntry 1} + slsSlsScope OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute uniquely indicates where the QoS policy + for that specific service is to be enforced. The value + must point to a valid instance of one of these classes: + slsScopeParamEntry" + ::= { slsSlsEntry 2 } + slsSlsFlowId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the identification of a flow. It + indentifies a stream of IP packets sharing at least one + common characteristic. The value must point to a valid + instance of one of these classes: + slsFlowIdParamEntry" + ::= { slsSlsEntry 3 } + slsSlsTrafficConformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the traffic conformance of the + flow identified in slsSlsFlowId. The traffic conformance + parameters describes how the packet stream should look + like to get the guarantees indicated by the perfomance + parameters. The value must point to + a valid instance of one of these classes: + slsConformParamEntry" + ::= { slsSlsEntry 4 } + slsSlsExcessTreatment OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the excess treatment applied to + the flow identified by slsSlsFlowId if it does not conform + to parameters specified in slsSlsTrafficConformance. + Excess traffic may be dropped, shaped and/or remarked. + The value must point to a valid instance of one of these + classes: + slsExcTreatParamEntry" + ::= { slsSlsEntry 5 } + slsSlsPerformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the performance guarantees the + network offers to the customer for the flow identified by + slsSlsFlowId. The value must point to an instance of one of + these classes: + slsPerformanceParamEntry " + ::= { slsSlsEntry 6 } + slsSlsServiceSchedule OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute indicates the start time and end time of + the service, i.e. when the service is available. The value + must point to an valid instance of one of these classes: + slsScheduleParamEntry + zeroDotZero (non specified)" + ::= { slsSlsEntry 7 } + slsScopeParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScopeParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies the scope parameters" + ::= { slsParamClasses 1} + + slsScopeParamEntry OBJECT-TYPE + SYNTAX SlsScopeParamEntry + STATUS current + DESCRIPTION + "This PRC uniquely identifies the geographical/topological + region over which the QoS is to be enforced by indicating + the boundaries of that region." + PIB-INDEX { slsScopeParamPrid } + ::= { slsScopeParamTable 1 } + SlsScopeParamEntry ::= SEQUENCE { + slsScopeParamPrid InstanceId, + slsScopeParamId TagReferenceId + } + slsScopeParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeParamEntry 1 } + slsScopeParamId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG {slsScopeIfParamId} + STATUS current + DESCRIPTION + "Identifies an SLS Scope." + ::= { slsScopeParamEntry 2 } + slsScopeIfParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScopeIfParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "The entry points (interfaces) of the IP packets relative + to the region (network)." + ::= { slsParamClasses 2 } + slsScopeIfParamEntry OBJECT-TYPE + SYNTAX SlsScopeIfParamEntry + STATUS current + DESCRIPTION + "An entry in the scope interface table describes a single + interface of the scope." + PIB-INDEX { slsScopeIfParamPrid } + ::= { slsScopeIfParamTable 1 } + SlsScopeIfParamEntry ::= SEQUENCE { + slsScopeIfParamPrid InstanceId, + slsScopeIfParamId TagId, + slsScopeIfParamIfIndex InterfaceIndex, + slsScopeIfParamDirection BITS + } + slsScopeIfParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeIfParamEntry 1 } + slsScopeIfParamId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An SLS Scope is composed of one or more entry/exit + points. Each interface belonging to the same scope uses the + same Scope ID. Hence, A scope Id identifies which scope + this interface is a part of. This needs to be the value of + slsScopeParamId attribute for an existing instance of + slsScopeParamEntry." + ::= { slsScopeIfParamEntry 2 } + slsScopeIfParamIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + " This value contains the interface index of the entry/exit + interface." + ::= { slsScopeIfParamEntry 3 } + slsScopeIfParamDirection OBJECT-TYPE + SYNTAX BITS{ + ingress (0), + egress (1) + } + STATUS current + DESCRIPTION + " This attribute specifies whether the interface is an + entry point (ingress) or an exit point (egress) of thez SLS + scope." + ::= { slsScopeIfParamEntry 4 } + slsFlowIdParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsFlowIdParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters identifying a traffic + stream" + ::= { slsParamClasses 3 } + slsFlowIdParamEntry OBJECT-TYPE + SYNTAX SlsFlowIdParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + PIB-INDEX { slsFlowIdParamPrid } + ::= { slsFlowIdParamTable 1 } + SlsFlowIdParamEntry ::= SEQUENCE{ + slsFlowIdParamPrid InstanceId, + slsFlowIdParamAddrType InetAddressType, + slsFlowIdParamDstAddr InetAddress, + slsFlowIdParamDstPrefixLength InetAddressPrefixLength, + slsFlowIdParamSrcAddr InetAddress, + slsFlowIdParamSrcPrefixLength InetAddressPrefixLength, + slsFlowIdParamDscp DscpOrAny, + slsFlowIdParamFlowLable Unsigned32, + slsFlowIdParamProtocol Integer32, + slsFlowIdParamDstL4PortMin InetPortNumber, + slsFlowIdParamDstL4PortMax InetPortNumber, + slsFlowIdParamSrcL4PortMin InetPortNumber, + slsFlowIdParamSrcL4PortMax InetPortNumber + } + slsFlowIdParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsFlowIdParamEntry 1 } + slsFlowIdParamAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Specify the type of packet's IP address." + ::= { slsFlowIdParamEntry 2 } + slsFlowIdParamDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's destination." + ::= { slsFlowIdParamEntry 3 } + slsFlowIdParamDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. The value of 0 indicates that the address + always matches." + ::= { slsFlowIdParamEntry 4 } + slsFlowIdParamSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's source." + ::= { slsFlowIdParamEntry 5 } + slsFlowIdParamSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. A value of 0 indicates that the address always + matches." + ::= { slsFlowIdParamEntry 6 } + slsFlowIdParamDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The DSCP value of the packet. A value of 1 indicates that + DSCP value has not been defined." + ::= { slsFlowIdParamEntry 7 } + slsFlowIdParamFlowLable OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The value of the Flow Label field in IPv6 header." + ::= { slsFlowIdParamEntry 8 } + slsFlowIdParamProtocol OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Protocol field in IP header." + ::= { slsFlowIdParamEntry 9 } + slsFlowIdParamDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 10 } + slsFlowIdParamDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 11 } + slsFlowIdParamSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 12 } + slsFlowIdParamSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 13 } + slsConformParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsConformParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class defines the traffic conformance of a traffic + stream." + ::= { slsParamClasses 4 } + slsConformParamEntry OBJECT-TYPE + SYNTAX SlsConformParamEntry + STATUS current + DESCRIPTION + "The instance of this class specifies algorithm and profile + to verify the conformance of a traffic stream" + PIB-INDEX { slsConformParamPrid } + ::= { slsConformParamTable 1 } + SlsConformParamEntry ::= SEQUENCE { + slsConformParamPrid InstanceId, + slsConformParamAlgo Unsigned32, + slsConformParamRate Unsigned32, + slsConformParamBurstSize Unsigned32 + } + slsConformParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsConformParamEntry 1 } + slsConformParamAlgo OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specify the algorithm used to verify the conformance of + the traffic stream. + 1 = Simple Token Bucket" + ::= { slsConformParamEntry 2 } + slsConformParamRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The rate value used in Simple Token Bucket algorithm." + ::= { slsConformParamEntry 3 } + slsConformParamBurstSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The burst size value used in Simple Token Bucket + algorithm." + ::= { slsConformParamEntry 4 } + slsExcTreatParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsExcTreatParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 5 } + slsExcTreatParamEntry OBJECT-TYPE + SYNTAX SlsExcTreatParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + PIB-INDEX { slsExcTreatParamPrid } + ::= { slsExcTreatParamTable 1 } + SlsExcTreatParamEntry ::= SEQUENCE { + slsExcTreatParamPrid InstanceId, + slsExcTreatParamAction BITS + } + slsExcTreatParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsExcTreatParamEntry 1 } + slsExcTreatParamAction OBJECT-TYPE + SYNTAX BITS{ + shapping(1), + -- traffic exceeding the conformance parameters + -- negotiated will be shaped. + dropping (2) + -- traffic exceeding the conformance parameters + -- negotiated will be dropped + } + STATUS current + DESCRIPTION + "Specify the treatment applied to the packet out of the + data stream's conformance negotiated + (1) shapping exceeding traffic + (2) dropping exceeding traffic" + ::= { slsExcTreatParamEntry 2 } + slsPerformanceParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsPerformanceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of performance of a flow" + ::= { slsParamClasses 6 } + slsPerformanceParamEntry OBJECT-TYPE + SYNTAX SlsPerformanceParamEntry + STATUS current + DESCRIPTION + "Describes performance parameters of a flow" + PIB-INDEX { slsPerformanceParamPrid } + ::= { slsPerformanceParamTable 1 } + SlsPerformanceParamEntry ::= SEQUENCE { + slsPerformanceParamPrid InstanceId, + slsPerformanceParamDelay Unsigned32, + slsPerformanceParamJitter Unsigned32, + slsPerformanceParamPacketLoss Unsigned32 + } + slsPerformanceParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsPerformanceParamEntry 1 } + slsPerformanceParamDelay OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the delay value in milisecond" + ::= { slsPerformanceParamEntry 2 } + slsPerformanceParamJitter OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the jitter value in milisecond" + ::= { slsPerformanceParamEntry 3 } + slsPerformanceParamPacketLoss OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the packet loss ratio in %" + ::= { slsPerformanceParamEntry 4 } +slsScheduleParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScheduleParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 7} + slsScheduleParamEntry OBJECT-TYPE + SYNTAX SlsScheduleParamEntry + STATUS current + DESCRIPTION + "Specifies a service schedule" + PIB-INDEX { slsScheduleParamPrid } + ::= { slsScheduleParamTable 1 } + SlsScheduleParamEntry ::= SEQUENCE { + slsScheduleParamPrid InstanceId, + slsScheduleParamStartTime ExtUTCTime, + slsScheduleParamStopTime ExtUTCTime + } + slsScheduleParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsScheduleParamEntry 1 } + slsScheduleParamStartTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service starts" + ::= { slsScheduleParamEntry 2 } + slsScheduleParamStopTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service terminate" + ::= { slsScheduleParamEntry 3 } + slsNegoRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoRptEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class is used by the PEP to convey negotiation + information in RPT message" + ::= { slsReportClasses 1 } + slsNegoRptEntry OBJECT-TYPE + SYNTAX SlsNegoRptEntry + STATUS current + DESCRIPTION + "An instance of this class reports on the SLS negotiation" + PIB-INDEX { slsNegoRptPrid } + ::= { slsNegoRptTable 1 } + SlsNegoRptEntry ::= SEQUENCE { + slsNegoRptPrid InstanceId, + slsNegoRptFailRea BITS + } + slsNegoRptPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsNegoRptEntry 1 } + slsNegoRptFailRea OBJECT-TYPE + SYNTAX BITS { + slsNonAccepted (1) + } + STATUS current + DESCRIPTION + "This attribute specifies the reason by which the PEP sends + a 'failure' report + (1) the PEP does not accept the SLS suggested" + ::= { slsNegoRptEntry 2 } + + END diff --git a/pibs/tubs/SLS-NEGOTIATION-PIB-orig b/pibs/tubs/SLS-NEGOTIATION-PIB-orig new file mode 100644 index 0000000..0e0df8d --- /dev/null +++ b/pibs/tubs/SLS-NEGOTIATION-PIB-orig @@ -0,0 +1,669 @@ +SLS-NEGOTIATION-PIB PIB-DEFINITIONS ::= BEGIN + IMPORTS + Unsigned32, InstanceId, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + ZerroDotZero + FROM SNMPv2-SMI + ExtUTCTime + FROM SNMPv2-SMI + InetAddressType, InetAddress, InetAddressPrefixLength, + InetPortNumber + FROM INET-ADDRESS-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC + slsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { tbd - COPS-SLS Client Type } + LAST-UPDATED "200202281200Z" + ORGANIZATION "Alcatel, ENST Paris and University of Paris 6" + CONTACT-INFO " + Thi Mai Trang Nguyen + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 74 61 + Email: trnguyen@enst.fr + Nadia Boukhatem + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 82 16 + Email: Nadia.BouKhatem@enst.fr + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr + Nathalie Charton + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 14 85 + Email: Nathalie.Charton@ms.alcatel.fr + Guy Pujolle + RP-LIP6-UPMC + 8 Rue du Capitaine Scott + 75015 Paris - France + Phone: +33 1 44 27 75 14 + Email: Guy.Pujolle@lip6.fr" + DESCRIPTION + "The PIB module contains a set of classes + describing the policies in SLS negotiation" + ::= { tbd } + + slsCapabilityClasses OBJECT IDENTIFIER ::= { slsPolicyPib 1 } + slsPolicyClasses OBJECT IDENTIFIER ::= { slsPolicyPib 2 } + slsParamClasses OBJECT IDENTIFIER ::= { slsPolicyPib 3 } + slsReportClasses OBJECT IDENTIFIER ::= { slsPolicyPib 4} + + slsNegoCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "SLS negotiation capabilities supported by the client" + ::= { slsCapabilityClasses 1} + slsNegoCapsEntry OBJECT-TYPE + SYNTAX SlsNegoCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the SLS negotiation + capabilities of a client" + ::= { slsNegoCapsTable 1 } + PIB-INDEX { slsNegoCapsPrid } + SlsNegoCapsEntry ::= SEQUENCE { + slsNegoCapsPrid InstanceId + slsNegoCapsNegoMode BITS + slsNegoCapsNegoInt Unsigned32 + slsNegoCapsMaxPredefSls Unsigned32 + } + slsNegoCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoCapsEntry 1 } + slsNegoCapsNegoMode OBJECT-TYPE + SYNTAX BITS { + predefSls(1) + -- the ability to support predefined SLS mode + non-predefinedSls (2) + -- the ability to support non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The SLS negotiation mode supported by the PEP + (1) - predefined SLS mode + (2) - non-predefined SLS mode" + ::= { slsNegoCapsEntry 2 } + slsNegoCapsNegoInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The desired interval before which the client could + send another REQ message to modify a + negotiated SLS" + ::= { slsNegoCapsEntry 3 } + slsNegoCapsMaxPredefSls OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of predefined SLSs that the PDP can + install at the client device. If the client does not + support the predefined SLS negotiation mode, this value + MUST be 0" + ::= { slsNegoCapsEntry 4 } + slsNegoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "SLS negotiation policies to be installed by the PDP" + ::= { slsPolicyClasses 1 } + slsNegoEntry OBJECT-TYPE + SYNTAX SlsNegoEntry + STATUS current + DESCRIPTION + "An instance of this class describes the policies about + SLS negotiation that the PDP installs at the PEP" + PIB-INDEX { slsNegoPrid } + ::= { slsNegoTable 1 } + SlsNegoEntry ::= SEQUENCE { + slsNegoPrid InstanceId + slsNegoMode BITS + slsNegoMaxInt Unsigned32 + } + slsNegoPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoEntry 1 } + slsNegoMode OBJECT-TYPE + SYNTAX BITS{ + predefSls(1) + -- predefined SLS mode + non-predefinedSls (2) + -- non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The negotiation mode used by the client. +- indicates the predefined SLS mode. +- indicates the non-predefined SLS mode" + ::= { slsNegoEntry 2 } + slsNegoMaxInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interval during which the client cannot issue + a REQ message to change a negotiated SLS" + ::= { slsNegoEntry 3 } + slsSlsTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsSlsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Represent an SLS" + ::= { slsPolicyClasses 2 } + slsSlsEntry OBJECT-TYPE + SYNTAX SEQUENCE OF SlsSlsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies an SLS" + ::= { slsSlsTable 1 } + SlsSlsEntry ::= SEQUENCE { + slsSlsPrid InstanceId + slsSlsScope Prid + slsSlsFlowId Prid + slsSlsTrafficConformance Prid + slsSlsExcessTreatment Prid + slsSlsPerformance Prid + slsSlsServiceSchedule Prid + } + slsSlsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsSlsEntry 1} + slsSlsScope OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute uniquely indicates where the QoS policy + for that specific service is to be enforced. The value + must point to a valid instance of one of these classes: + slsScopeParamEntryö + ::= { slsSlsEntry 2 } + slsSlsFlowId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the identification of a flow. It + indentifies a stream of IP packets sharing at least one + common characteristic. The value must point to a valid + instance of one of these classes: + slsFlowIdParamEntry" + ::= { slsSlsEntry 3 } + slsSlsTrafficConformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the traffic conformance of the + flow identified in slsSlsFlowId. The traffic conformance + parameters describes how the packet stream should look + like to get the guarantees indicated by the perfomance + parameters. The value must point to + a valid instance of one of these classes: + slsConformParamEntry" + ::= { slsSlsEntry 4 } + slsSlsExcessTreatment OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the excess treatment applied to + the flow identified by slsSlsFlowId if it does not conform + to parameters specified in slsSlsTrafficConformance. + Excess traffic may be dropped, shaped and/or remarked. + The value must point to a valid instance of one of these + classes: + slsExcTreatParamEntry" + ::= { slsSlsEntry 5 } + slsSlsPerformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the performance guarantees the + network offers to the customer for the flow identified by + slsSlsFlowId. The value must point to an instance of one of + these classes: + slsPerformanceParamEntry " + ::= { slsSlsEntry 6 } + slsSlsServiceSchedule OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute indicates the start time and end time of + the service, i.e. when the service is available. The value + must point to an valid instance of one of these classes: + slsScheduleParamEntry + zeroDotZero (non specified)" + ::= { slsSlsEntry 7 } + slsScopeParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScopeParamEntry + PIB-ACESS install-notify + STATUS current + DESCRIPTION + "This class specifies the scope parameters" + ::= { slsParamClasses 1} + slsScopeParamEntry OBJECT-TYPE + SYNTAX SlsScopeParamEntry + STATUS current + DESCRIPTION + "This PRC uniquely identifies the geographical/topological + region over which the QoS is to be enforced by indicating + the boundaries of that region." + ::= { slsScopeParamTable 1 } + slsScopeParamEntry ::= SEQUENCE { + SlsScopeParamPrid Prid + slsScopeParamId TagReferenceId + } + slsScopeParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeParamEntry 1 } + slsScopeParamId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG {slsScopeIfParamId} + STATUS current + DESCRIPTION + "Identifies an SLS Scope." + ::= { slsScopeParamEntry 2 } + slsScopeIfParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScopeInterfaceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "The entry points (interfaces) of the IP packets relative + to the region (network)." + ::= { slsParamClasses 2 } + slsScopeIfParamEntry OBJECT-TYPE + SYNTAX SlsScopeIfParamEntry + STATUS current + DESCRIPTION + ôAn entry in the scope interface table describes a single + interface of the scope.ö + ::= { slsScopeIfParamTable 1 } + slsScopeIfParamEntry ::= SEQUENCE { + SlsScopeIfParamPrid Prid + slsScopeIfParamId TagId + slsScopeIfParamIfIndex InterfaceIndex + slsScopeIfParamDirection BITS + } + slsScopeIfParamPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeIfParamEntry 1 } + slsScopeIfParamId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An SLS Scope is composed of one or more entry/exit + points. Each interface belonging to the same scope uses the + same Scope ID. Hence, A scope Id identifies which scope + this interface is a part of. This needs to be the value of + slsScopeParamId attribute for an existing instance of + slsScopeParamEntry." + ::= { slsScopeIfParamEntry 2 } + slsScopeIfParamIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + " This value contains the interface index of the entry/exit + interface." + ::= { slsScopeIfParamEntry 3 } + slsScopeIfParamDirection OBJECT-TYPE + SYNTAX BITS{ + ingress (0) + egress (1) + } + STATUS current + DESCRIPTION + " This attribute specifies whether the interface is an + entry point (ingress) or an exit point (egress) of thez SLS + scope." + ::= { slsScopeIfParamEntry 4 } + slsFlowIdParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsFlowIdParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters identifying a traffic + stream" + ::= { slsParamClasses 3 } + slsFlowIdParamEntry OBJECT-TYPE + SYNTAX SlsFlowIdParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + ::= { slsFlowIdParamTable 1 } + SlsFlowIdParamEntry ::= SEQUENCE{ + slsFlowIdParamPrid InstanceId + slsFlowIdParamAddrType InetAddressType, + slsFlowIdParamDstAddr InetAddress, + slsFlowIdParamDstPrefixLength InetAddressPrefixLength + slsFlowIdParamSrcAddr InetAddress, + slsFlowIdParamSrcPrefixLength InetAddressPrefixLength, + slsFlowIdParamDscp DscpOrAny, + slsFlowIdParamFlowLable Unsigned32, + slsFlowIdParamProtocol Integer32, + slsFlowIdParamDstL4PortMin InetPortNumber, + slsFlowIdParamDstL4PortMax InetPortNumber, + slsFlowIdParamSrcL4PortMin InetPortNumber, + slsFlowIdParamSrcL4PortMax InetPortNumber + } + slsFlowIdParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsFlowIdParamEntry 1 } + slsFlowIdParamAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Specify the type of packet's IP address." + ::= { slsFlowIdParamEntry 2 } + slsFlowIdParamDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's destination." + ::= { slsFlowIdParamEntry 3 } + slsFlowIdParamDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. The value of 0 indicates that the address + always matches." + ::= { slsFlowIdParamEntry 4 } + slsFlowIdParamSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's source." + ::= { slsFlowIdParamEntry 5 } + slsFlowIdParamSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. A value of 0 indicates that the address always + matches." + ::= { slsFlowIdParamEntry 6 } + slsFlowIdParamDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The DSCP value of the packet. A value of û1 indicates that + DSCP value has not been defined." + ::= { slsFlowIdParamEntry 7 } + slsFlowIdParamFlowLable OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The value of the Flow Label field in IPv6 header." + ::= { slsFlowIdParamEntry 8 } + slsFlowIdParamProtocol OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Protocol field in IP header." + ::= { slsFlowIdParamEntry 9 } + slsFlowIdParamDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 10 } + slsFlowIdParamDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 11 } + slsFlowIdParamSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 12 } + slsFlowIdParamSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 13 } + slsConformParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsConformParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class defines the traffic conformance of a traffic + stream." + ::= { slsParamClasses 4 } + slsConformParamEntry OBJECT-TYPE + SYNTAX SlsConformParamEntry + STATUS current + DESCRIPTION + "The instance of this class specifies algorithm and profile + to verify the conformance of a traffic stream" + ::= { slsConformParamTable 1 } + SlsConformParamEntry ::= SEQUENCE { + slsConformParamPrid InstanceId + slsConformParamAlgo Unsigned32 + slsConformParamRate Unsigned32 + slsConformParamBurstSize Unsigned32 + } + slsConformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsConformParamEntry 1 } + slsConformParamAlgo OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specify the algorithm used to verify the conformance of + the traffic stream. + 1 û Simple Token Bucket" + ::= { slsConformParamEntry 2 } + slsConformParamRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The rate value used in Simple Token Bucket algorithm." + ::= { slsConformParamEntry 3 } + slsConformParamBurstSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The burst size value used in Simple Token Bucket + algorithm." + ::= { slsConformParamEntry 4 } + slsExcTreatParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsExcTreatParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 5 } + slsExcTreatParamEntry OBJECT-TYPE + SYNTAX SlsExctreatParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + ::= { slsExcTreatParamTable 1 } + SlsExcTreatParamEntry ::= SEQUENCE { + slsExcTreatParamPrid InstanceId + slsExcTreatParamAction BITS + } + slsExcTreatParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsExcTreatParamEntry 1 } + slsExcTreatParamAction OBJECT-TYPE + SYNTAX BITS{ + shapping(1) + -- traffic exceeding the conformance parameters + negotiated will be shaped. + dropping (2) + -- traffic exceeding the conformance parameters + negotiated will be dropped + } + STATUS current + DESCRIPTION + "Specify the treatment applied to the packet out of the + data stream's conformance negotiated + (1) û shapping exceeding traffic + (2) û dropping exceeding traffic" + ::= { slsExcTreatParamEntry 2 } + slsPerformanceParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsPerformanceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of performance of a flow" + ::= { slsParamClasses 6 } + slsPerformanceParamEntry OBJECT-TYPE + SYNTAX SlsPerformanceParamEntry + STATUS current + DESCRIPTION + "Describes performance parameters of a flow" + ::= { sls PerformanceParamTable 1 } + SlsPerformanceParamEntry ::= SEQUENCE { + slsPerformanceParamPrid InstanceId + slsPerformanceParamDelay Unsigned32 + slsPerformanceParamJitter Unsigned32 + slsPerformanceParamPacketLoss Unsigned32 + } + slsPerformanceParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsPerformanceParamEntry 1 } + slsPerformanceParamDelay OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the delay value in milisecond" + ::= { slsPerformanceParamEntry 2 } + slsPerformanceParamJitter OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the jitter value in milisecond" + ::= { slsPerformanceParamEntry 3 } + slsPerformanceParamPacketLoss OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the packet loss ratio in %" + ::= { slsPerformanceParamEntry 4 } +slsScheduleParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScheduleParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 7} + slsScheduleParamEntry OBJECT-TYPE + SYNTAX SlsScheduleParamEntry + STATUS current + DESCRIPTION + "Specifies a service schedule" + ::= { slsScheduleParamTable 1 } + SlsScheduleParamEntry ::= SEQUENCE { + slsScheduleParamPrid InstanceId + slsScheduleParamStartTime ExtUTCTime + slsScheduleParamStopTime ExtUTCTime + } + slsScheduleParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsScheduleParamEntry 1 } + slsScheduleParamStartTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service starts" + ::= { slsScheduleParamEntry 2 } + slsScheduleParamStopTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service terminate" + ::= { slsScheduleParamEntry 3 } + slsNegoRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoRptEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class is used by the PEP to convey negotiation + information in RPT message" + ::= { slsReportClasses 1 } + slsNegoRptEntry OBJECT-TYPE + SYNTAX SlsNegoRptEntry + STATUS current + DESCRIPTION + "An instance of this class reports on the SLS negotiation" + ::= { slsNegoRptTable 1 } + SlsNegoRptEntry ::= SEQUENCE { + slsNegoRptPrid InstanceId + slsNegoRptFailRea BITS + } + slsNegoRptPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsNEgoRptEntry 1 } + slsNegoRptFailRea OBJECT-TYPE + SYNTAX BITS { + slsNonAccepted (1) + } + STATUS current + DESCRIPTION + "This attribute specifies the reason by which the PEP sends + a 'failure' report + (1) û the PEP does not accept the SLS suggested" + ::= { slsNEgoRptEntry 1 } + + END. diff --git a/pibs/tubs/UMTS-PIB b/pibs/tubs/UMTS-PIB new file mode 100644 index 0000000..8ec4e9f --- /dev/null +++ b/pibs/tubs/UMTS-PIB @@ -0,0 +1,399 @@ +UMTS-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC + zeroDotZero + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +uMTSPib MODULE-IDENTITY + SUBJECT-CATEGORIES { umts(1) } + LAST-UPDATED "200111010800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Louis-Nicolas Hamer + Nortel Networks + 100 Constellation Crescent + Ottawa, Ontario + Canada, K2G 6J8 + Phone: +1 613 768 3409 + Email: nhamer@nortelnetworks.com" + DESCRIPTION + "A PIB module containing the set of provisioning + classes that are required for support of policies for + UMTS subject-categories." + + ::= { ibrpib 3 } + + +-- +-- The root OID for PRCs in the UMTS PIB +-- + +uMTSCapabilityClasses OBJECT IDENTIFIER ::= { uMTSPib 1 } +uMTSEventPolicyClasses OBJECT IDENTIFIER ::= { uMTSPib 2 } +uMTSEventClasses OBJECT IDENTIFIER ::= { uMTSPib 3 } +uMTSConformance OBJECT IDENTIFIER ::= { uMTSPib 4 } + +-- +-- Capability and Limitation Policy Rule Classes +-- + +-- +-- UMTS Capability Base Table +-- + +uMTSBaseCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSCapabilityClasses 1 } + + + +uMTSBaseCapsEntry OBJECT-TYPE + SYNTAX UMTSBaseCapsEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseCapsPrid } + UNIQUENESS { uMTSBaseCapsX } + + ::= { uMTSBaseCapsTable 1 } + + +UMTSBaseCapsEntry ::= SEQUENCE { + uMTSBaseCapsPrid InstanceId, + uMTSBaseCapsX Unsigned32 +} + + +uMTSBaseCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseCapsEntry 1 } + + +uMTSBaseCapsX OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "" + + ::= { uMTSBaseCapsEntry 2 } + + +-- +-- Component Limitations Table +-- + +-- This table supports the ability to export information +-- detailing provisioning class/attribute implementation limitations +-- to the policy management system. + +-- +-- UMTS Event Policy Classes +-- + +-- +-- UMTS Event Policy Base Table +-- + +uMTSBaseEventPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseEventPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 1 } + + +uMTSBaseEventPolicyEntry OBJECT-TYPE + SYNTAX UMTSBaseEventPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseEventPolicyPrid } + UNIQUENESS { uMTSBaseEventPolicyPrid } + + ::= { uMTSBaseEventPolicyTable 1 } + + +UMTSBaseEventPolicyEntry ::= SEQUENCE { + uMTSBaseEventPolicyPrid InstanceId, + uMTSBaseEventPolicyIfName SnmpAdminString, + uMTSBaseEventPolicyRoles RoleCombination +} + + +uMTSBaseEventPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseEventPolicyEntry 1 } + + +uMTSBaseEventPolicyIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this event handler + provisioning entry applies. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable (of the Framework PIB) + prior to association with an instance of this class." + ::= { uMTSBaseEventPolicyEntry 2 } + + +uMTSBaseEventPolicyRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this entry applies, specified in + terms of roles. + There must exist an entry in the frwkIfCapSetRoleComboTable + (of the Framework PIB) specifying this role combination, + together with the interface capability set specified by + uMTSBaseEventPolicyIfName, prior to association with an + instance of this class." + ::= { uMTSBaseEventPolicyEntry 3 } + + + +-- +-- UMTS PDP Context Event Handler Provisioning Table +-- + +uMTSPdpContextPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 2 } + + +uMTSPdpContextPolicyEntry OBJECT-TYPE + SYNTAX UMTSPdpContextPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + EXTENDS { uMTSBaseEventPolicyEntry } + UNIQUENESS { uMTSPdpContextPolicyEnable, + uMTSPdpContextPolicyFlowIds + } + ::= { uMTSPdpContextPolicyTable 1 } + + +UMTSPdpContextPolicyEntry ::= SEQUENCE { + uMTSPdpContextPolicyEnable Integer32, + uMTSPdpContextPolicyFlowIds Unsigned32 +} + + +uMTSPdpContextPolicyEnable OBJECT-TYPE + SYNTAX INTEGER { + disable(1), + enable(2) + } + STATUS current + DESCRIPTION + "Controls the usage of UMTS PDP Context Events to trigger + requests to PCF on the go interface." + DEFVAL { disable } + ::= { uMTSPdpContextPolicyEntry 1 } + + +uMTSPdpContextPolicyFlowIds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indication of the maximum number of FlowIds a Token can + be associated with + The value of zero indicates policy control does not impose + any limit. The limitation is based on GGSN capabilities." + DEFVAL { 0 } + ::= { uMTSPdpContextPolicyEntry 2 } + + + +-- +-- RSVP Event Handler Provisioning Table +-- + +-- +-- UMTS Event Classes +-- + + +-- +-- UMTS PDP Context Event Table +-- + +uMTSPdpContextEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextEventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 1 } + + +uMTSPdpContextEventEntry OBJECT-TYPE + SYNTAX UMTSPdpContextEventEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextEventPrid } + UNIQUENESS { uMTSPdpContextEventToken } + ::= { uMTSPdpContextEventTable 1 } + + +UMTSPdpContextEventEntry ::= SEQUENCE { + uMTSPdpContextEventPrid InstanceId, + uMTSPdpContextEventToken OCTET STRING, + uMTSPdpContextEventFlowIds Prid +} + + +uMTSPdpContextEventPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextEvent class." + + ::= { uMTSPdpContextEventEntry 1 } + + +uMTSPdpContextEventToken OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The token associated with this PDP Context event." + ::= { uMTSPdpContextEventEntry 2 } + + +uMTSPdpContextEventFlowIds OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the FlowIds associated with the Token indicated + in this PDP Context event. + This is the anchor of a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates an empty list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextEventEntry 3 } + + + +-- +-- UMTS PDP Context FlowID Table +-- + +uMTSPdpContextFlowIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextFlowIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 2 } + + +uMTSPdpContextFlowIdEntry OBJECT-TYPE + SYNTAX UMTSPdpContextFlowIdEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextFlowIdPrid } + UNIQUENESS { uMTSPdpContextFlowIdId } + ::= { uMTSPdpContextFlowIdTable 1 } + + +UMTSPdpContextFlowIdEntry ::= SEQUENCE { + uMTSPdpContextFlowIdPrid InstanceId, + uMTSPdpContextFlowIdId OCTET STRING, + uMTSPdpContextFlowIdNext Prid +} + + +uMTSPdpContextFlowIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextFlowId class." + + ::= { uMTSPdpContextFlowIdEntry 1 } + + +uMTSPdpContextFlowIdId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The FlowId itself." + ::= { uMTSPdpContextFlowIdEntry 2 } + + +uMTSPdpContextFlowIdNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the next FlowId in the list associated with the + same Token of a PDP Context event. + This points to a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates end of the list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextFlowIdEntry 3 } + +-- +-- Conformance Section +-- + +uMTSCompliances OBJECT IDENTIFIER ::= { uMTSConformance 1 } +uMTSGroups OBJECT IDENTIFIER ::= { uMTSConformance 2 } + + + +END diff --git a/pibs/tubs/UMTS-PIB-orig b/pibs/tubs/UMTS-PIB-orig new file mode 100644 index 0000000..09f0dbf --- /dev/null +++ b/pibs/tubs/UMTS-PIB-orig @@ -0,0 +1,396 @@ +UMTS-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +uMTSPib MODULE-IDENTITY + SUBJECT-CATEGORIES { umts } + LAST-UPDATED "200111010800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Louis-Nicolas Hamer + Nortel Networks + 100 Constellation Crescent + Ottawa, Ontario + Canada, K2G 6J8 + Phone: +1 613 768 3409 + Email: nhamer@nortelnetworks.com" + DESCRIPTION + "A PIB module containing the set of provisioning + classes that are required for support of policies for + UMTS subject-categories." + + ::= { tbd } + + +-- +-- The root OID for PRCs in the UMTS PIB +-- + +uMTSCapabilityClasses OBJECT IDENTIFIER ::= { uMTSPib 1 } +uMTSEventPolicyClasses OBJECT IDENTIFIER ::= { uMTSPib 2 } +uMTSEventClasses OBJECT IDENTIFIER ::= { uMTSPib 3 } +uMTSConformance OBJECT IDENTIFIER ::= { uMTSPib 4 } + +-- +-- Capability and Limitation Policy Rule Classes +-- + +-- +-- UMTS Capability Base Table +-- + +uMTSBaseCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSCapabilityClasses 1 } + + + +uMTSBaseCapsEntry OBJECT-TYPE + SYNTAX UMTSBaseCapsEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseCapsPrid } + UNIQUENESS { uMTSBaseCaps } + + ::= { uMTSBaseCapsTable 1 } + + +UMTSBaseCapsEntry ::= SEQUENCE { + uMTSBaseCapsPrid InstanceId, + uMTSBaseCapsX Unsigned32 +} + + +uMTSBaseCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseCapsEntry 1 } + + +uMTSBaseCapsX OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "" + + ::= { uMTSBaseCapsEntry 2 } + + +-- +-- Component Limitations Table +-- + +-- This table supports the ability to export information +-- detailing provisioning class/attribute implementation limitations +-- to the policy management system. + +-- +-- UMTS Event Policy Classes +-- + +-- +-- UMTS Event Policy Base Table +-- + +uMTSBaseEventPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseEventPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 1 } + + +uMTSBaseEventPolicyEntry OBJECT-TYPE + SYNTAX UMTSBaseEventPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseEventPolicyPrid } + UNIQUENESS { uMTSBaseEventPolicyPrc } + + ::= { uMTSBaseEventPolicyTable 1 } + + +UMTSBaseEventPolicyEntry ::= SEQUENCE { + uMTSBaseEventPolicyPrid InstanceId, + uMTSBaseEventPolicyIfName SnmpAdminString, + uMTSBaseEventPolicyRoles RoleCombination +} + + +uMTSBaseEventPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseEventPolicyEntry 1 } + + +uMTSBaseEventPolicyIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this event handler + provisioning entry applies. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable (of the Framework PIB) + prior to association with an instance of this class." + ::= { uMTSBaseEventPolicyEntry 2 } + + +uMTSBaseEventPolicyRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this entry applies, specified in + terms of roles. + There must exist an entry in the frwkIfCapSetRoleComboTable + (of the Framework PIB) specifying this role combination, + together with the interface capability set specified by + uMTSBaseEventPolicyIfName, prior to association with an + instance of this class." + ::= { uMTSBaseEventPolicyEntry 3 } + + + +-- +-- UMTS PDP Context Event Handler Provisioning Table +-- + +uMTSPdpContextPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 2 } + + +uMTSPdpContextPolicyEntry OBJECT-TYPE + SYNTAX UMTSPdpContextPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + EXTENDS { uMTBaseEventPolicyEntry } + UNIQUENESS { uMTSPdpContextPolicyEnable, + uMTSPdpContextPolicyFlowIds + } + ::= { uMTSPdpContextPolicyTable 1 } + + +UMTSPdpContextPolicyEntry ::= SEQUENCE { + uMTSPdpContextPolicyEnable Integer32, + uMTSPdpContextPolicyFlowIds Unsigned32 +} + + +uMTSPdpContextPolicyEnable OBJECT-TYPE + SYNTAX Integer32 { + disable(1), + enable(2) + } + STATUS current + DESCRIPTION + "Controls the usage of UMTS PDP Context Events to trigger + requests to PCF on the go interface." + DEFVAL { disable } + ::= { uMTSPdpContextPolicyEntry 1 } + + +uMTSPdpContextPolicyFlowIds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indication of the maximum number of FlowIds a Token can + be associated with + The value of zero indicates policy control does not impose + any limit. The limitation is based on GGSN capabilities." + DEFVAL { 0 } + ::= { uMTSPdpContextPolicyEntry 2 } + + + +-- +-- RSVP Event Handler Provisioning Table +-- + +-- +-- UMTS Event Classes +-- + + +-- +-- UMTS PDP Context Event Table +-- + +uMTSPdpContextEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextEventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 1 } + + +uMTSPdpContextEventEntry OBJECT-TYPE + SYNTAX UMTSPdpContextEventEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextEventPrid } + UNIQUENESS { uMTSPdpContextEventToken } + ::= { uMTSPdpContextEventTable 1 } + + +UMTSPdpContextEventEntry ::= SEQUENCE { + uMTSPdpContextEventPrid InstanceId, + uMTSPdpContextEventToken OctetString, + uMTSPdpContextEventFlowIds Prid +} + + +uMTSPdpContextEventPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextEvent class." + + ::= { uMTSPdpContextEventEntry 1 } + + +uMTSPdpContextEventToken OBJECT-TYPE + SYNTAX OctetString + STATUS current + DESCRIPTION + "The token associated with this PDP Context event." + ::= { uMTSPdpContextEventEntry 2 } + + +uMTSPdpContextEventFlowIds OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the FlowIds associated with the Token indicated + in this PDP Context event. + This is the anchor of a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates an empty list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextEventEntry 3 } + + + +-- +-- UMTS PDP Context FlowID Table +-- + +uMTSPdpContextFlowIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextFlowIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 2 } + + +uMTSPdpContextFlowIdEntry OBJECT-TYPE + SYNTAX UMTSPdpContextFlowIdEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextFlowIdPrid } + UNIQUENESS { uMTPdpContextFlowIdX } + ::= { uMTSPdpContextFlowIdTable 1 } + + +UMTSPdpContextFlowIdEntry ::= SEQUENCE { + uMTSPdpContextFlowIdPrid InstanceId, + uMTSPdpContextFlowIdId OctetString, + uMTSPdpContextFlowIdNext Prid +} + + +uMTSPdpContextFlowIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextFlowId class." + + ::= { uMTSPdpContextFlowIdEntry 1 } + + +uMTSPdpContextFlowIdId OBJECT-TYPE + SYNTAX OctetString + STATUS current + DESCRIPTION + "The FlowId itself." + ::= { uMTSPdpContextFlowIdEntry 2 } + + +uMTSPdpContextFlowIdsNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the next FlowId in the list associated with the + same Token of a PDP Context event. + This points to a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates end of the list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextFlowIdEntry 3 } + +-- +-- Conformance Section +-- + +uMTSCompliances OBJECT IDENTIFIER ::= { uMTSConformance 1 } +uMTSGroups OBJECT IDENTIFIER ::= { uMTSConformance 2 } + + + +END diff --git a/smi.conf-example b/smi.conf-example new file mode 100644 index 0000000..2272fc8 --- /dev/null +++ b/smi.conf-example @@ -0,0 +1,50 @@ +# +# smi.conf - Global/User SMI configuration file. (EXAMPLE) +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: smi.conf-example 1134 2001-06-11 09:59:13Z strauss $ +# +# +# See smi_config(3) for detailed information on configuration files. +# + +# Extend (note the semicolon) the libsmi default module search path. +# (On Windows systems, use `;' instead of `:', and `\' instead of `/'.) +path :/usr/local/share/mibs/sun +path :/usr/local/share/mibs/cisco + +# Add a private directory. +path :/home/strauss/lib/mibs + +# EXPERIMENTAL: Add a caching method (works only on UNIX systems). +# NOTE: the cache directory must exist and permissions must be +# handled appropriately. A simple but insecure way is to apply +# a tmp flag to the directory (chmod 1777 /usr/local/share/mibs/cache). +#cache /usr/local/share/mibs/cache /usr/local/bin/smicache -d /usr/local/share/mibs/cache -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +# Don't show any errors by default. +level 0 + +# Preload some basic SMIv2 modules. +load SNMPv2-SMI +load SNMPv2-TC +load SNMPv2-CONF + +# Make smilint shout loud to report all errors and warnings. +smilint: level 9 + +# But please don't claim about any names longer than 32 chars. +# (note: this is the prefix of errors `namelength-32-module, +# -type, -object, -enumeration, and -bit) +smilint: hide namelength-32 + +# Preloading some more modules for special applications. +tcpdump: load DISMAN-SCRIPT-MIB +tcpdump: load IF-MIB + +smiquery: load IF-MIB + diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..fcaf9e7 --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,52 @@ +# +# Makefile.am -- +# +# Template to generate test Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# + +TESTMIBTOPDIR = ../../mibs +TESTMIBDIR = $(TESTMIBTOPDIR)/ietf:$(TESTMIBTOPDIR)/iana:$(TESTMIBTOPDIR)/irtf:$(TESTMIBTOPDIR)/site:$(TESTMIBTOPDIR)/tubs +TESTMIBS = SNMPv2-MIB IF-MIB MAU-MIB RMON2-MIB + +# smilint-smiv2.test has to be the first test. It initializes the +# sync-dumps script that is extended by subsequent tests. +TESTS = smilint-smiv2.test \ + smidump-smiv1.test \ + smidump-smiv2.test \ + smidump-sming.test \ + smidump-yang.test \ + smidump-mosy.test \ + smidump-tree.test \ + smidump-types.test \ + smidump-imports.test \ + smidump-identifiers.test \ + smidump-metrics.test \ + smidump-xml.test \ + smidump-python.test \ + smidump-cm.test \ + smidump-corba.test \ + smidump-jax.test \ + smidump-netsnmp.test \ + smidump-orig-smiv2.test \ + smidump-smiv2-smiv2.test \ + parser.test \ + smidiff.test + +TESTS_ENVIRONMENT = SMIPATH="$(TESTMIBDIR)" TESTMIBS="$(TESTMIBS)" + +EXTRA_DIST = $(TESTS) + +SMIDIFFTESTS = $(shell ls -1d smidiff/* | egrep -v 'CVS|Makefile') + +SUBDIRS = mibs dumps smidiff + +clean-local: + rm -rf *.out smidiff/*.diffdiff smidiff/*.result sync-dumps + diff --git a/test/Makefile.in b/test/Makefile.in new file mode 100644 index 0000000..94825c9 --- /dev/null +++ b/test/Makefile.in @@ -0,0 +1,685 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/parser.test.in $(srcdir)/smidiff.test.in \ + $(srcdir)/smidump-cm.test.in $(srcdir)/smidump-corba.test.in \ + $(srcdir)/smidump-identifiers.test.in \ + $(srcdir)/smidump-imports.test.in \ + $(srcdir)/smidump-jax.test.in \ + $(srcdir)/smidump-metrics.test.in \ + $(srcdir)/smidump-mosy.test.in \ + $(srcdir)/smidump-netsnmp.test.in \ + $(srcdir)/smidump-orig-smiv2.test.in \ + $(srcdir)/smidump-python.test.in \ + $(srcdir)/smidump-sming.test.in \ + $(srcdir)/smidump-smiv1.test.in \ + $(srcdir)/smidump-smiv2-smiv2.test.in \ + $(srcdir)/smidump-smiv2.test.in $(srcdir)/smidump-tree.test.in \ + $(srcdir)/smidump-types.test.in $(srcdir)/smidump-xml.test.in \ + $(srcdir)/smidump-yang.test.in $(srcdir)/smilint-smiv2.test.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = parser.test smidump-corba.test smidump-jax.test \ + smidump-netsnmp.test smidump-imports.test smidump-mosy.test \ + smidump-orig-smiv2.test smidump-sming.test smidump-yang.test \ + smidump-smiv1.test smidump-smiv2-smiv2.test smidump-smiv2.test \ + smidump-tree.test smidump-types.test smidump-identifiers.test \ + smidump-metrics.test smidump-xml.test smidump-cm.test \ + smidump-python.test smilint-smiv2.test smidiff.test +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTMIBTOPDIR = ../../mibs +TESTMIBDIR = $(TESTMIBTOPDIR)/ietf:$(TESTMIBTOPDIR)/iana:$(TESTMIBTOPDIR)/irtf:$(TESTMIBTOPDIR)/site:$(TESTMIBTOPDIR)/tubs +TESTMIBS = SNMPv2-MIB IF-MIB MAU-MIB RMON2-MIB + +# smilint-smiv2.test has to be the first test. It initializes the +# sync-dumps script that is extended by subsequent tests. +TESTS = smilint-smiv2.test \ + smidump-smiv1.test \ + smidump-smiv2.test \ + smidump-sming.test \ + smidump-yang.test \ + smidump-mosy.test \ + smidump-tree.test \ + smidump-types.test \ + smidump-imports.test \ + smidump-identifiers.test \ + smidump-metrics.test \ + smidump-xml.test \ + smidump-python.test \ + smidump-cm.test \ + smidump-corba.test \ + smidump-jax.test \ + smidump-netsnmp.test \ + smidump-orig-smiv2.test \ + smidump-smiv2-smiv2.test \ + parser.test \ + smidiff.test + +TESTS_ENVIRONMENT = SMIPATH="$(TESTMIBDIR)" TESTMIBS="$(TESTMIBS)" +EXTRA_DIST = $(TESTS) +SMIDIFFTESTS = $(shell ls -1d smidiff/* | egrep -v 'CVS|Makefile') +SUBDIRS = mibs dumps smidiff +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +parser.test: $(top_builddir)/config.status $(srcdir)/parser.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-corba.test: $(top_builddir)/config.status $(srcdir)/smidump-corba.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-jax.test: $(top_builddir)/config.status $(srcdir)/smidump-jax.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-netsnmp.test: $(top_builddir)/config.status $(srcdir)/smidump-netsnmp.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-imports.test: $(top_builddir)/config.status $(srcdir)/smidump-imports.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-mosy.test: $(top_builddir)/config.status $(srcdir)/smidump-mosy.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-orig-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-orig-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-sming.test: $(top_builddir)/config.status $(srcdir)/smidump-sming.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-yang.test: $(top_builddir)/config.status $(srcdir)/smidump-yang.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv1.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv1.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv2-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv2-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-tree.test: $(top_builddir)/config.status $(srcdir)/smidump-tree.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-types.test: $(top_builddir)/config.status $(srcdir)/smidump-types.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-identifiers.test: $(top_builddir)/config.status $(srcdir)/smidump-identifiers.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-metrics.test: $(top_builddir)/config.status $(srcdir)/smidump-metrics.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-xml.test: $(top_builddir)/config.status $(srcdir)/smidump-xml.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-cm.test: $(top_builddir)/config.status $(srcdir)/smidump-cm.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-python.test: $(top_builddir)/config.status $(srcdir)/smidump-python.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smilint-smiv2.test: $(top_builddir)/config.status $(srcdir)/smilint-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidiff.test: $(top_builddir)/config.status $(srcdir)/smidiff.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-TESTS check-am clean clean-generic \ + clean-libtool clean-local ctags ctags-recursive distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am + + +clean-local: + rm -rf *.out smidiff/*.diffdiff smidiff/*.result sync-dumps +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/Makefile.am b/test/dumps/Makefile.am new file mode 100644 index 0000000..3d5a0c9 --- /dev/null +++ b/test/dumps/Makefile.am @@ -0,0 +1,16 @@ +# +# Makefile.am -- +# +# Template to generate test/dumps Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# + +SUBDIRS = corba imports jax mosy orig-smiv2 smilint-smiv2 \ + sming smiv1 smiv2 smiv2-smiv2 tree types yang \ + identifiers metrics xml cm python netsnmp diff --git a/test/dumps/Makefile.in b/test/dumps/Makefile.in new file mode 100644 index 0000000..d2ac2eb --- /dev/null +++ b/test/dumps/Makefile.in @@ -0,0 +1,516 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test/dumps Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = corba imports jax mosy orig-smiv2 smilint-smiv2 \ + sming smiv1 smiv2 smiv2-smiv2 tree types yang \ + identifiers metrics xml cm python netsnmp + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/cm/IF-MIB b/test/dumps/cm/IF-MIB new file mode 100644 index 0000000..d7dd821 --- /dev/null +++ b/test/dumps/cm/IF-MIB @@ -0,0 +1,1631 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of IF-MIB - generated by smidump 0.4.3# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifTableLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex# + + + + + + + + + + + + + + + + + #ifDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #ifType# + + + #IANAifType# + + + + + + + + + + + + + + + + + #ifMtu# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifSpeed# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifPhysAddress# + + + #PhysAddress# + + + + + + + + + + + + + + + + + #ifAdminStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifOperStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifInOctets# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInNUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInDiscards# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInErrors# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInUnknownProtos# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutOctets# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutNUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutDiscards# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutErrors# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutQLen# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifSpecific# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifXEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #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# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifHighSpeed# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifPromiscuousMode# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifConnectorPresent# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifAlias# + + + #DisplayString# + + + + + + + + + + + + + + + + + #ifCounterDiscontinuityTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #augments# + + + + + + + + + + + #1# + + + + + + + + + + + + + + #1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifRcvAddressEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifRcvAddressAddress# + + + #PhysAddress {index}# + + + + + + + + + + + + + + + + + #ifRcvAddressAddress# + + + #PhysAddress# + + + + + + + + + + + + + + + + + #ifRcvAddressStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + #ifRcvAddressType# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifStackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifStackLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifStackHigherLayer# + + + #InterfaceIndexOrZero {index}# + + + + + + + + + + + + + + + + + #ifStackLowerLayer# + + + #InterfaceIndexOrZero {index}# + + + + + + + + + + + + + + + + + #ifStackHigherLayer# + + + #InterfaceIndexOrZero# + + + + + + + + + + + + + + + + + #ifStackLowerLayer# + + + #InterfaceIndexOrZero# + + + + + + + + + + + + + + + + + #ifStackStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #interfaces# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifNumber# + + + #Integer32# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/MAU-MIB b/test/dumps/cm/MAU-MIB new file mode 100644 index 0000000..0d97284 --- /dev/null +++ b/test/dumps/cm/MAU-MIB @@ -0,0 +1,1795 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of MAU-MIB - generated by smidump 0.4.5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #rpMauEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #rpMauStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #rpMauMediaAvailable# + + + #IANAifMauMediaAvailable# + + + + + + + + + + + + + + + + + #rpMauMediaAvailableStateExits# + + + #Counter32# + + + + + + + + + + + + + + + + + #rpMauJabberState# + + + #Enumeration# + + + + + + + + + + + + + + + + + #rpMauJabberingStateEnters# + + + #Counter32# + + + + + + + + + + + + + + + + + #rpMauFalseCarriers# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #rpJackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpJackIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpJackIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpJackType# + + + #IANAifJackType# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifMauEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #ifMauStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauMediaAvailable# + + + #IANAifMauMediaAvailable# + + + + + + + + + + + + + + + + + #ifMauMediaAvailableStateExits# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauJabberState# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauJabberingStateEnters# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauFalseCarriers# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauTypeList# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauDefaultType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #ifMauAutoNegSupported# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifMauTypeListBits# + + + #IANAifMauTypeListBits# + + + + + + + + + + + + + + + + + #ifMauHCFalseCarriers# + + + #Counter64# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifJackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifJackIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifJackIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifJackType# + + + #IANAifJackType# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifMauAutoNegEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifMauAutoNegAdminStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteSignaling# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapability# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapAdvertised# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapReceived# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegRestart# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapabilityBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapAdvertisedBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapReceivedBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteFaultAdvertised# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteFaultReceived# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #sparses# + + + + + + + + + + + #1# + + + + + + + + + + + + + + #0..1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/Makefile.am b/test/dumps/cm/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/cm/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/cm/Makefile.in b/test/dumps/cm/Makefile.in new file mode 100644 index 0000000..d40dbd0 --- /dev/null +++ b/test/dumps/cm/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/cm +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/cm/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/cm/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/cm/RMON2-MIB b/test/dumps/cm/RMON2-MIB new file mode 100644 index 0000000..30ae8dd --- /dev/null +++ b/test/dumps/cm/RMON2-MIB @@ -0,0 +1,7067 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of RMON2-MIB - generated by smidump 0.4.5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hlHostControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #hlHostControlNlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlAlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #hlHostControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlHostEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlHostTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlHostInPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostInOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutMacNonUnicastPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alHostEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alHostTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alHostTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alHostInPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostOutPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostInOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostOutOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #addressMapEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #addressMapTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #addressMapNetworkAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #addressMapSource# + + + #ObjectIdentifier {index}# + + + + + + + + + + + + + + + + + #addressMapTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #addressMapNetworkAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #addressMapSource# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #addressMapPhysicalAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #addressMapLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hlMatrixControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #hlMatrixControlNlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #hlMatrixControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixSDEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixSDPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixSDOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixSDCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixDSEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixDSPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixDSOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixDSCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixSDEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixSDTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixSDTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alMatrixSDPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixSDOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixSDCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixDSEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixDSTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixDSTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alMatrixDSPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixDSOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixDSCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlMatrixIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlRateBase# + + + #Enumeration# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlTimeRemaining# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlGeneratedReports# + + + #Counter32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlDuration# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlRequestedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlGrantedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlStartTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixTopNDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixTopNPktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNReversePktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNReverseOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlMatrixIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlRateBase# + + + #Enumeration# + + + + + + + + + + + + + + + + + #alMatrixTopNControlTimeRemaining# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlGeneratedReports# + + + #Counter32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlDuration# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlRequestedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlGrantedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlStartTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #alMatrixTopNControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #alMatrixTopNControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixTopNEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #alMatrixTopNDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #alMatrixTopNAppProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNPktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNReversePktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNReverseOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlObjects# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlBucketsRequested# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlBucketsGranted# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlInterval# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #usrHistoryControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryObjectEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryObjectVariable# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #usrHistoryObjectSampleType# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistorySampleIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistorySampleIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryIntervalStart# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #usrHistoryIntervalEnd# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #usrHistoryAbsValue# + + + #Gauge32# + + + + + + + + + + + + + + + + + #usrHistoryValStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDirEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDirLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #protocolDirID# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirParameters# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirID# + + + #OctetString# + + + + + + + + + + + + + + + + + #protocolDirParameters# + + + #OctetString# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #protocolDirDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #protocolDirType# + + + #Bits# + + + + + + + + + + + + + + + + + #protocolDirAddressMapConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirHostConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirMatrixConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #protocolDirStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDistControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #protocolDistControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #protocolDistControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #protocolDistControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + #protocolDistControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #protocolDistControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDistStatsEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDistStatsPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #protocolDistStatsOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #addressMapControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #addressMapInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #addressMapControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #addressMapControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #addressMapControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #addressMapControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #addressMapControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #etherStats2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #etherStatsDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #etherStatsCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #historyControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #historyControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hostControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hostControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hostControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #matrixControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #matrixControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #matrixControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #channel2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #channelDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #channelCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #filter2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #filterProtocolDirDataLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #filterProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #probeConfig# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #probeCapabilities# + + + #Bits# + + + + + + + + + + + + + + + + + #probeSoftwareRev# + + + #DisplayString# + + + + + + + + + + + + + + + + + #probeHardwareRev# + + + #DisplayString# + + + + + + + + + + + + + + + + + #probeDateTime# + + + #OctetString# + + + + + + + + + + + + + + + + + #probeResetControl# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/SNMPv2-MIB b/test/dumps/cm/SNMPv2-MIB new file mode 100644 index 0000000..a24e15b --- /dev/null +++ b/test/dumps/cm/SNMPv2-MIB @@ -0,0 +1,841 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of SNMPv2-MIB - generated by smidump 0.4.3# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #sysOREntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #sysORIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #sysORIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #sysORID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #sysORDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysORUpTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #system# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #sysDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysObjectID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #sysUpTime# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #sysContact# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysName# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysLocation# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysServices# + + + #Integer32# + + + + + + + + + + + + + + + + + #sysORLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmp# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpInPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadVersions# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadCommunityNames# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadCommunityUses# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInASNParseErrs# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpEnableAuthenTraps# + + + #Enumeration# + + + + + + + + + + + + + + + + + #snmpSilentDrops# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpProxyDrops# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmpTrap# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpTrapOID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #snmpTrapEnterprise# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmpSet# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpSetSerialNo# + + + #TestAndIncr# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/corba/IF_MIB.idl b/test/dumps/corba/IF_MIB.idl new file mode 100644 index 0000000..7affd74 --- /dev/null +++ b/test/dumps/corba/IF_MIB.idl @@ -0,0 +1,999 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba IF-MIB + * + * Derived from IF-MIB: + * 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 2000-06-14 00:00: + * Clarifications agreed upon by the Interfaces MIB WG, and + * published as RFC 2863. + * + * Revision 1996-02-28 21:55: + * Revisions made by the Interfaces MIB WG, and published in + * RFC 2233. + * + * Revision 1993-11-08 21:55: + * Initial revision, published as part of RFC 1573. + * + * $Id: IF_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _IF_MIB_IDL_ +#define _IF_MIB_IDL_ + +#include +#include +#include +#include +#include + +module IF_MIB { + + typedef IANAifType_MIB::IANAifTypeType IANAifTypeType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Counter64Type Counter64Type; + typedef SNMPv2_SMI::Gauge32Type Gauge32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::TimeTicksType TimeTicksType; + typedef SNMPv2_TC::AutonomousTypeType AutonomousTypeType; + typedef SNMPv2_TC::DisplayStringType DisplayStringType; + typedef SNMPv2_TC::PhysAddressType PhysAddressType; + typedef SNMPv2_TC::RowStatusType RowStatusType; + typedef SNMPv2_TC::TestAndIncrType TestAndIncrType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + typedef SNMPv2_TC::TruthValueType TruthValueType; + + const string moduleIdentity = "ifMIB"; + const ASN1_ObjectIdentifier ifMIB = "::IF_MIB::ifMIB"; + + /* + 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. + + LAST-UPDATED: 200006140000Z + + 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" + + REVISION: "200006140000Z" + REVISION-DESCRIPTION: + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + + REVISION: "199602282155Z" + REVISION-DESCRIPTION: + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + + REVISION: "199311082155Z" + REVISION-DESCRIPTION: + "Initial revision, published as part of RFC 1573." + + */ + + /* + 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. + DISPLAY-HINT: d + + + */ + typedef ASN1_Integer InterfaceIndexType; + + /* + 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. + DISPLAY-HINT: d + + + */ + typedef ASN1_Integer InterfaceIndexOrZeroType; + + typedef ASN1_OctetString IfDescrType; + + typedef ASN1_Integer IfAdminStatusType; + const IfAdminStatusType IfAdminStatusType_up = 1; + const IfAdminStatusType IfAdminStatusType_down = 2; + const IfAdminStatusType IfAdminStatusType_testing = 3; + const string IfAdminStatusType_NameNumberList = "up (1) , down (2) , testing (3)"; + + typedef ASN1_Integer IfOperStatusType; + const IfOperStatusType IfOperStatusType_up = 1; + const IfOperStatusType IfOperStatusType_down = 2; + const IfOperStatusType IfOperStatusType_testing = 3; + const IfOperStatusType IfOperStatusType_unknown = 4; + const IfOperStatusType IfOperStatusType_dormant = 5; + const IfOperStatusType IfOperStatusType_notPresent = 6; + const IfOperStatusType IfOperStatusType_lowerLayerDown = 7; + const string IfOperStatusType_NameNumberList = "up (1) , down (2) , testing (3) , unknown (4) , dormant (5) , notPresent (6) , lowerLayerDown (7)"; + + typedef ASN1_Integer IfLinkUpDownTrapEnableType; + const IfLinkUpDownTrapEnableType IfLinkUpDownTrapEnableType_enabled = 1; + const IfLinkUpDownTrapEnableType IfLinkUpDownTrapEnableType_disabled = 2; + const string IfLinkUpDownTrapEnableType_NameNumberList = "enabled (1) , disabled (2)"; + + typedef ASN1_OctetString IfAliasType; + + typedef ASN1_Integer IfRcvAddressTypeType; + const IfRcvAddressTypeType IfRcvAddressTypeType_other = 1; + const IfRcvAddressTypeType IfRcvAddressTypeType_volatile = 2; + const IfRcvAddressTypeType IfRcvAddressTypeType_nonVolatile = 3; + const string IfRcvAddressTypeType_NameNumberList = "other (1) , volatile (2) , nonVolatile (3)"; + + interface interfaces : SNMPMgmt::SmiEntry { + + /* + The number of network interfaces (regardless of their + current state) present on this system. + */ + readonly attribute ASN1_Integer ifNumber; + + /* + A list of interface entries. The number of entries is + given by the value of ifNumber. + */ + SNMPMgmt::SmiTableIterator get_ifTable(); + }; + + + /* + An entry containing management information applicable to a + particular interface. + */ + interface ifEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifIndex"; + + /* + 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. + */ + readonly attribute InterfaceIndexType ifIndex; + + /* + 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. + */ + readonly attribute IfDescrType ifDescr; + + /* + 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. + */ + readonly attribute IANAifTypeType ifType; + + /* + 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. + */ + readonly attribute ASN1_Integer ifMtu; + + /* + 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. + */ + readonly attribute Gauge32Type ifSpeed; + + /* + 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. + */ + readonly attribute PhysAddressType ifPhysAddress; + + /* + 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). + */ + attribute IfAdminStatusType ifAdminStatus; + + /* + 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. + */ + readonly attribute IfOperStatusType ifOperStatus; + + /* + 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. + */ + readonly attribute TimeTicksType ifLastChange; + + /* + 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. + */ + readonly attribute Counter32Type ifInOctets; + + /* + 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. + */ + readonly attribute Counter32Type ifInUcastPkts; + + /* + 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. + */ + readonly attribute Counter32Type ifInDiscards; + + /* + 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. + */ + readonly attribute Counter32Type ifInErrors; + + /* + 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. + */ + readonly attribute Counter32Type ifInUnknownProtos; + + /* + 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. + */ + readonly attribute Counter32Type ifOutOctets; + + /* + 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. + */ + readonly attribute Counter32Type ifOutUcastPkts; + + /* + 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. + */ + readonly attribute Counter32Type ifOutDiscards; + + /* + 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. + */ + readonly attribute Counter32Type ifOutErrors; + }; + + interface ifMIBObjects : SNMPMgmt::SmiEntry { + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_ifXTable(); + + /* + 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 + */ + SNMPMgmt::SmiTableIterator get_ifStackTable(); + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_ifRcvAddressTable(); + + /* + 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. + */ + readonly attribute TimeTicksType ifTableLastChange; + + /* + 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. + */ + readonly attribute TimeTicksType ifStackLastChange; + }; + + + /* + An entry containing additional management information + applicable to a particular interface. + */ + interface ifXEntry : IF_MIB::ifEntry { + + /* + 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. + */ + readonly attribute DisplayStringType ifName; + + /* + 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. + */ + readonly attribute Counter32Type ifInMulticastPkts; + + /* + 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. + */ + readonly attribute Counter32Type ifInBroadcastPkts; + + /* + 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. + */ + readonly attribute Counter32Type ifOutMulticastPkts; + + /* + 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. + */ + readonly attribute Counter32Type ifOutBroadcastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCInOctets; + + /* + 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. + */ + readonly attribute Counter64Type ifHCInUcastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCInMulticastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCInBroadcastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCOutOctets; + + /* + 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. + */ + readonly attribute Counter64Type ifHCOutUcastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCOutMulticastPkts; + + /* + 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. + */ + readonly attribute Counter64Type ifHCOutBroadcastPkts; + + /* + 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. + */ + attribute IfLinkUpDownTrapEnableType ifLinkUpDownTrapEnable; + + /* + 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. + */ + readonly attribute Gauge32Type ifHighSpeed; + + /* + 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. + */ + attribute TruthValueType ifPromiscuousMode; + + /* + This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise. + */ + readonly attribute TruthValueType ifConnectorPresent; + + /* + 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. + */ + attribute IfAliasType ifAlias; + + /* + 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. + */ + readonly attribute TimeStampType ifCounterDiscontinuityTime; + }; + + + /* + 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. + */ + interface ifStackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifStackHigherLayer ifStackLowerLayer"; + + /* + 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. + */ + attribute RowStatusType ifStackStatus; + }; + + + /* + 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. + */ + interface ifRcvAddressEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifIndex ifRcvAddressAddress"; + + /* + This object is used to create and delete rows in the + ifRcvAddressTable. + */ + attribute RowStatusType ifRcvAddressStatus; + + /* + 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. + */ + attribute IfRcvAddressTypeType ifRcvAddressType; + }; + + struct IfIndexVBType { + string var_name; + string var_index; + InterfaceIndexType ifIndex; + }; + + struct IfAdminStatusVBType { + string var_name; + string var_index; + IfAdminStatusType ifAdminStatus; + }; + + struct IfOperStatusVBType { + string var_name; + string var_index; + IfOperStatusType ifOperStatus; + }; + + struct LinkDownType { + IfIndexVBType ifIndex; + IfAdminStatusVBType ifAdminStatus; + IfOperStatusVBType ifOperStatus; + }; + + struct LinkUpType { + IfIndexVBType ifIndex; + IfAdminStatusVBType ifAdminStatus; + IfOperStatusVBType ifOperStatus; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + A linkDown trap signifies that the SNMP 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. + */ + void linkDown ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in LinkDownType notification_info + ); + + /* + A linkUp trap signifies that the SNMP 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. + */ + void linkUp ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in LinkUpType notification_info + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + A linkDown trap signifies that the SNMP 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. + */ + void pull_linkDown ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkDownType notification_info + ); + boolean try_linkDown ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkDownType notification_info + ); + + /* + A linkUp trap signifies that the SNMP 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. + */ + void pull_linkUp ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkUpType notification_info + ); + boolean try_linkUp ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkUpType notification_info + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + ifEntry create_ifEntry ( + in InterfaceIndexType ifIndex, + in IfAdminStatusType ifAdminStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifXEntry create_ifXEntry ( + in IfLinkUpDownTrapEnableType ifLinkUpDownTrapEnable, + in TruthValueType ifPromiscuousMode, + in IfAliasType ifAlias + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifStackEntry create_ifStackEntry ( + in InterfaceIndexOrZeroType ifStackHigherLayer, + in InterfaceIndexOrZeroType ifStackLowerLayer, + in RowStatusType ifStackStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifRcvAddressEntry create_ifRcvAddressEntry ( + in InterfaceIndexType ifIndex, + in PhysAddressType ifRcvAddressAddress, + in RowStatusType ifRcvAddressStatus, + in IfRcvAddressTypeType ifRcvAddressType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + + /* pseudo */ + interface DefaultValues { + /* DEFVAL: volatile */ + IfRcvAddressTypeType ifRcvAddressType(); + + }; + + /* pseudo */ + interface TextualConventions { + + /* + 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. + DISPLAY-HINT: d + */ + string InterfaceIndexToString (in InterfaceIndexType Value); + InterfaceIndexType InterfaceIndexFromString (in string str); + + /* + 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. + DISPLAY-HINT: d + */ + string InterfaceIndexOrZeroToString (in InterfaceIndexOrZeroType Value); + InterfaceIndexOrZeroType InterfaceIndexOrZeroFromString (in string str); + }; + +}; + +#endif /* !_IF_MIB_IDL_ */ diff --git a/test/dumps/corba/IF_MIB.oid b/test/dumps/corba/IF_MIB.oid new file mode 100644 index 0000000..c23da51 --- /dev/null +++ b/test/dumps/corba/IF_MIB.oid @@ -0,0 +1,62 @@ +::IF_MIB::interfaces 1.3.6.1.2.1.2 Group not-accessible +::IF_MIB::interfaces::ifNumber 1.3.6.1.2.1.2.1 ASN1_Integer read-only +::IF_MIB::ifTable 1.3.6.1.2.1.2.2 Table not-accessible +::IF_MIB::ifEntry 1.3.6.1.2.1.2.2.1 TableEntry not-accessible +::IF_MIB::ifEntry::ifIndex 1.3.6.1.2.1.2.2.1.1 ASN1_Integer read-only +::IF_MIB::ifEntry::ifDescr 1.3.6.1.2.1.2.2.1.2 ASN1_OctetString read-only +::IF_MIB::ifEntry::ifType 1.3.6.1.2.1.2.2.1.3 ASN1_Integer read-only +::IF_MIB::ifEntry::ifMtu 1.3.6.1.2.1.2.2.1.4 ASN1_Integer read-only +::IF_MIB::ifEntry::ifSpeed 1.3.6.1.2.1.2.2.1.5 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifPhysAddress 1.3.6.1.2.1.2.2.1.6 ASN1_OctetString read-only +::IF_MIB::ifEntry::ifAdminStatus 1.3.6.1.2.1.2.2.1.7 ASN1_Integer read-write +::IF_MIB::ifEntry::ifOperStatus 1.3.6.1.2.1.2.2.1.8 ASN1_Integer read-only +::IF_MIB::ifEntry::ifLastChange 1.3.6.1.2.1.2.2.1.9 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInOctets 1.3.6.1.2.1.2.2.1.10 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInUcastPkts 1.3.6.1.2.1.2.2.1.11 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInDiscards 1.3.6.1.2.1.2.2.1.13 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInErrors 1.3.6.1.2.1.2.2.1.14 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutOctets 1.3.6.1.2.1.2.2.1.16 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutDiscards 1.3.6.1.2.1.2.2.1.19 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutErrors 1.3.6.1.2.1.2.2.1.20 ASN1_Unsigned read-only +::IF_MIB::ifMIB 1.3.6.1.2.1.31 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifMIBObjects 1.3.6.1.2.1.31.1 Group not-accessible +::IF_MIB::ifXTable 1.3.6.1.2.1.31.1.1 Table not-accessible +::IF_MIB::ifXEntry 1.3.6.1.2.1.31.1.1.1 TableEntry not-accessible +::IF_MIB::ifXEntry::ifName 1.3.6.1.2.1.31.1.1.1.1 ASN1_OctetString read-only +::IF_MIB::ifXEntry::ifInMulticastPkts 1.3.6.1.2.1.31.1.1.1.2 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifInBroadcastPkts 1.3.6.1.2.1.31.1.1.1.3 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifOutMulticastPkts 1.3.6.1.2.1.31.1.1.1.4 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifOutBroadcastPkts 1.3.6.1.2.1.31.1.1.1.5 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifHCInOctets 1.3.6.1.2.1.31.1.1.1.6 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInUcastPkts 1.3.6.1.2.1.31.1.1.1.7 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInMulticastPkts 1.3.6.1.2.1.31.1.1.1.8 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInBroadcastPkts 1.3.6.1.2.1.31.1.1.1.9 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutOctets 1.3.6.1.2.1.31.1.1.1.10 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutUcastPkts 1.3.6.1.2.1.31.1.1.1.11 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutMulticastPkts 1.3.6.1.2.1.31.1.1.1.12 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutBroadcastPkts 1.3.6.1.2.1.31.1.1.1.13 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifLinkUpDownTrapEnable 1.3.6.1.2.1.31.1.1.1.14 ASN1_Integer read-write +::IF_MIB::ifXEntry::ifHighSpeed 1.3.6.1.2.1.31.1.1.1.15 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifPromiscuousMode 1.3.6.1.2.1.31.1.1.1.16 ASN1_Integer read-write +::IF_MIB::ifXEntry::ifConnectorPresent 1.3.6.1.2.1.31.1.1.1.17 ASN1_Integer read-only +::IF_MIB::ifXEntry::ifAlias 1.3.6.1.2.1.31.1.1.1.18 ASN1_OctetString read-write +::IF_MIB::ifXEntry::ifCounterDiscontinuityTime 1.3.6.1.2.1.31.1.1.1.19 ASN1_Unsigned read-only +::IF_MIB::ifStackTable 1.3.6.1.2.1.31.1.2 Table not-accessible +::IF_MIB::ifStackEntry 1.3.6.1.2.1.31.1.2.1 TableEntry not-accessible +::IF_MIB::ifStackEntry::ifStackHigherLayer 1.3.6.1.2.1.31.1.2.1.1 ASN1_Integer not-accessible +::IF_MIB::ifStackEntry::ifStackLowerLayer 1.3.6.1.2.1.31.1.2.1.2 ASN1_Integer not-accessible +::IF_MIB::ifStackEntry::ifStackStatus 1.3.6.1.2.1.31.1.2.1.3 ASN1_Integer read-create +::IF_MIB::ifRcvAddressTable 1.3.6.1.2.1.31.1.4 Table not-accessible +::IF_MIB::ifRcvAddressEntry 1.3.6.1.2.1.31.1.4.1 TableEntry not-accessible +::IF_MIB::ifRcvAddressEntry::ifRcvAddressAddress 1.3.6.1.2.1.31.1.4.1.1 ASN1_OctetString not-accessible +::IF_MIB::ifRcvAddressEntry::ifRcvAddressStatus 1.3.6.1.2.1.31.1.4.1.2 ASN1_Integer read-create +::IF_MIB::ifRcvAddressEntry::ifRcvAddressType 1.3.6.1.2.1.31.1.4.1.3 ASN1_Integer read-create +::IF_MIB::ifMIBObjects::ifTableLastChange 1.3.6.1.2.1.31.1.5 ASN1_Unsigned read-only +::IF_MIB::ifMIBObjects::ifStackLastChange 1.3.6.1.2.1.31.1.6 ASN1_Unsigned read-only +::IF_MIB::ifConformance 1.3.6.1.2.1.31.2 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifGroups 1.3.6.1.2.1.31.2.1 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifCompliances 1.3.6.1.2.1.31.2.2 ASN1_ObjectIdentifier not-accessible +::IF_MIB::snmpTraps::linkDown 1.3.6.1.6.3.1.1.5.3 Notification not-accessible +::IF_MIB::snmpTraps::linkUp 1.3.6.1.6.3.1.1.5.4 Notification not-accessible diff --git a/test/dumps/corba/MAU_MIB.idl b/test/dumps/corba/MAU_MIB.idl new file mode 100644 index 0000000..5d2e4b3 --- /dev/null +++ b/test/dumps/corba/MAU_MIB.idl @@ -0,0 +1,1195 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba MAU-MIB + * + * Derived from MAU-MIB: + * Management information for 802.3 MAUs. + * + * The following reference is used throughout this MIB module: + * + * [IEEE802.3] refers to: + * IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + * technology - Telecommunications and information exchange + * between systems - Local and metropolitan area networks - + * Specific requirements - Part 3: Carrier sense multiple + * access with collision detection (CSMA/CD) access method and + * physical layer specifications'. + * + * Of particular interest is Clause 30, 'Management'. + * + * Copyright (C) The IETF Trust (2007). + * This version of this MIB module is part of RFC 4836; + * see the RFC itself for full legal notices. + * + * Revision 2007-04-21 00:00: + * Updated to reference IANA maintaned textual + * conventions for MAU types, Media Availability state, + * Auto Negotiation capabilities, and jack types, + * instead of using internally defined values. + * + * This version is published as RFC 4836. + * + * Revision 2003-09-19 00:00: + * Updated to include support for 10 Gb/s MAUs. + * This resulted in the following revisions: + * - Added OBJECT-IDENTITY definitions for + * 10 gigabit MAU types + * + * + * + * - Added fiberLC jack type to JackType TC + * - Extended ifMauTypeListBits with bits for + * the 10 gigabit MAU types + * - Added enumerations to ifMauMediaAvailable, + * and updated its DESCRIPTION to reflect + * behaviour at 10 Gb/s + * - Added 64-bit version of ifMauFalseCarriers + * and added mauIfGrpHCStats object group to + * contain the new object + * - Deprecated mauModIfCompl2 and replaced it + * with mauModIfCompl3, which includes the new + * object group + * + * This version published as RFC 3636. + * + * Revision 1999-08-24 04:00: + * This version published as RFC 2668. Updated + * to include support for 1000 Mb/sec + * MAUs and flow control negotiation. + * + * Revision 1997-10-31 00:00: + * Version published as RFC 2239. + * + * Revision 1993-09-30 00:00: + * Initial version, published as RFC 1515. + * + * $Id: MAU_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _MAU_MIB_IDL_ +#define _MAU_MIB_IDL_ + +#include +#include +#include +#include +#include +#include + +module MAU_MIB { + + typedef IANA_MAU_MIB::IANAifJackTypeType IANAifJackTypeType; + typedef IANA_MAU_MIB::IANAifMauAutoNegCapBitsType IANAifMauAutoNegCapBitsType; + typedef IANA_MAU_MIB::IANAifMauMediaAvailableType IANAifMauMediaAvailableType; + typedef IANA_MAU_MIB::IANAifMauTypeListBitsType IANAifMauTypeListBitsType; + typedef IF_MIB::InterfaceIndexType InterfaceIndexType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Counter64Type Counter64Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_TC::AutonomousTypeType AutonomousTypeType; + typedef SNMPv2_TC::TruthValueType TruthValueType; + + const string moduleIdentity = "mauMod"; + const ASN1_ObjectIdentifier mauMod = "::MAU_MIB::mauMod"; + + /* + Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices. + + LAST-UPDATED: 200704210000Z + + ORGANIZATION: + "IETF Ethernet Interfaces and Hub MIB Working Group" + + CONTACT-INFO: + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + REVISION: "200704210000Z" + REVISION-DESCRIPTION: + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + + REVISION: "200309190000Z" + REVISION-DESCRIPTION: + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + + REVISION: "199908240400Z" + REVISION-DESCRIPTION: + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + + REVISION: "199710310000Z" + REVISION-DESCRIPTION: + "Version published as RFC 2239." + + REVISION: "199309300000Z" + REVISION-DESCRIPTION: + "Initial version, published as RFC 1515." + + */ + + typedef ASN1_Integer RpMauGroupIndexType; + + typedef ASN1_Integer RpMauPortIndexType; + + typedef ASN1_Integer RpMauIndexType; + + typedef ASN1_Integer RpMauStatusType; + const RpMauStatusType RpMauStatusType_other = 1; + const RpMauStatusType RpMauStatusType_unknown = 2; + const RpMauStatusType RpMauStatusType_operational = 3; + const RpMauStatusType RpMauStatusType_standby = 4; + const RpMauStatusType RpMauStatusType_shutdown = 5; + const RpMauStatusType RpMauStatusType_reset = 6; + const string RpMauStatusType_NameNumberList = "other (1) , unknown (2) , operational (3) , standby (4) , shutdown (5) , reset (6)"; + + typedef ASN1_Integer RpMauJabberStateType; + const RpMauJabberStateType RpMauJabberStateType_other = 1; + const RpMauJabberStateType RpMauJabberStateType_unknown = 2; + const RpMauJabberStateType RpMauJabberStateType_noJabber = 3; + const RpMauJabberStateType RpMauJabberStateType_jabbering = 4; + const string RpMauJabberStateType_NameNumberList = "other (1) , unknown (2) , noJabber (3) , jabbering (4)"; + + typedef ASN1_Integer RpJackIndexType; + + typedef ASN1_Integer IfMauIndexType; + + typedef ASN1_Integer IfMauStatusType; + const IfMauStatusType IfMauStatusType_other = 1; + const IfMauStatusType IfMauStatusType_unknown = 2; + const IfMauStatusType IfMauStatusType_operational = 3; + const IfMauStatusType IfMauStatusType_standby = 4; + const IfMauStatusType IfMauStatusType_shutdown = 5; + const IfMauStatusType IfMauStatusType_reset = 6; + const string IfMauStatusType_NameNumberList = "other (1) , unknown (2) , operational (3) , standby (4) , shutdown (5) , reset (6)"; + + typedef ASN1_Integer IfMauJabberStateType; + const IfMauJabberStateType IfMauJabberStateType_other = 1; + const IfMauJabberStateType IfMauJabberStateType_unknown = 2; + const IfMauJabberStateType IfMauJabberStateType_noJabber = 3; + const IfMauJabberStateType IfMauJabberStateType_jabbering = 4; + const string IfMauJabberStateType_NameNumberList = "other (1) , unknown (2) , noJabber (3) , jabbering (4)"; + + typedef ASN1_Integer IfJackIndexType; + + typedef ASN1_Integer IfMauAutoNegAdminStatusType; + const IfMauAutoNegAdminStatusType IfMauAutoNegAdminStatusType_enabled = 1; + const IfMauAutoNegAdminStatusType IfMauAutoNegAdminStatusType_disabled = 2; + const string IfMauAutoNegAdminStatusType_NameNumberList = "enabled (1) , disabled (2)"; + + typedef ASN1_Integer IfMauAutoNegRemoteSignalingType; + const IfMauAutoNegRemoteSignalingType IfMauAutoNegRemoteSignalingType_detected = 1; + const IfMauAutoNegRemoteSignalingType IfMauAutoNegRemoteSignalingType_notdetected = 2; + const string IfMauAutoNegRemoteSignalingType_NameNumberList = "detected (1) , notdetected (2)"; + + typedef ASN1_Integer IfMauAutoNegConfigType; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_other = 1; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_configuring = 2; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_complete = 3; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_disabled = 4; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_parallelDetectFail = 5; + const string IfMauAutoNegConfigType_NameNumberList = "other (1) , configuring (2) , complete (3) , disabled (4) , parallelDetectFail (5)"; + + typedef ASN1_Integer IfMauAutoNegRestartType; + const IfMauAutoNegRestartType IfMauAutoNegRestartType_restart = 1; + const IfMauAutoNegRestartType IfMauAutoNegRestartType_norestart = 2; + const string IfMauAutoNegRestartType_NameNumberList = "restart (1) , norestart (2)"; + + typedef ASN1_Integer IfMauAutoNegRemoteFaultAdvertisedType; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_noError = 1; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_offline = 2; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_linkFailure = 3; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_autoNegError = 4; + const string IfMauAutoNegRemoteFaultAdvertisedType_NameNumberList = "noError (1) , offline (2) , linkFailure (3) , autoNegError (4)"; + + typedef ASN1_Integer IfMauAutoNegRemoteFaultReceivedType; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_noError = 1; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_offline = 2; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_linkFailure = 3; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_autoNegError = 4; + const string IfMauAutoNegRemoteFaultReceivedType_NameNumberList = "noError (1) , offline (2) , linkFailure (3) , autoNegError (4)"; + + interface dot3RpMauBasicGroup : SNMPMgmt::SmiEntry { + + /* + Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater. + */ + SNMPMgmt::SmiTableIterator get_rpMauTable(); + + /* + Information about the external jacks attached + to MAUs attached to the ports of a repeater. + */ + SNMPMgmt::SmiTableIterator get_rpJackTable(); + }; + + + /* + An entry in the table, containing information + about a single MAU. + */ + interface rpMauEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "rpMauGroupIndex rpMauPortIndex rpMauIndex"; + + /* + This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex. + REFERENCE: + "RFC 2108, rptrGroupIndex." + + */ + readonly attribute RpMauGroupIndexType rpMauGroupIndex; + + /* + This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected. + REFERENCE: + "RFC 2108, rptrPortIndex." + + */ + readonly attribute RpMauPortIndexType rpMauPortIndex; + + /* + This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex). + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID." + + */ + readonly attribute RpMauIndexType rpMauIndex; + + /* + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + REFERENCE: + "[IEEE802.3], 30.5.1.1.2, aMAUType." + + */ + readonly attribute AutonomousTypeType rpMauType; + + /* + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + REFERENCE: + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + + */ + attribute RpMauStatusType rpMauStatus; + + /* + This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC. + REFERENCE: + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + + */ + readonly attribute IANAifMauMediaAvailableType rpMauMediaAvailable; + + /* + A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauMediaAvailableStateExits; + + /* + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + + */ + readonly attribute RpMauJabberStateType rpMauJabberState; + + /* + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauJabberingStateEnters; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauFalseCarriers; + }; + + + /* + An entry in the table, containing information + about a particular jack. + */ + interface rpJackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex"; + + /* + The jack connector type, as it appears on the + outside of the system. + */ + readonly attribute IANAifJackTypeType rpJackType; + }; + + interface dot3IfMauBasicGroup : SNMPMgmt::SmiEntry { + + /* + Table of descriptive and status information + about MAU(s) attached to an interface. + */ + SNMPMgmt::SmiTableIterator get_ifMauTable(); + + /* + Information about the external jacks attached + to MAUs attached to an interface. + */ + SNMPMgmt::SmiTableIterator get_ifJackTable(); + }; + + + /* + An entry in the table, containing information + about a single MAU. + */ + interface ifMauEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex"; + + /* + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + REFERENCE: + "RFC 2863, ifIndex" + + */ + readonly attribute InterfaceIndexType ifMauIfIndex; + + /* + This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex). + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID." + + */ + readonly attribute IfMauIndexType ifMauIndex; + + /* + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode. + REFERENCE: + "[IEEE802.3], 30.5.1.1.2, aMAUType." + + */ + readonly attribute AutonomousTypeType ifMauType; + + /* + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + REFERENCE: + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + + */ + attribute IfMauStatusType ifMauStatus; + + /* + This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC. + REFERENCE: + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + + */ + readonly attribute IANAifMauMediaAvailableType ifMauMediaAvailable; + + /* + A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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. + REFERENCE: + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauMediaAvailableStateExits; + + /* + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + + */ + readonly attribute IfMauJabberStateType ifMauJabberState; + + /* + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauJabberingStateEnters; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauFalseCarriers; + + /* + This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function. + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + + */ + attribute AutonomousTypeType ifMauDefaultType; + + /* + This object indicates whether or not + auto-negotiation is supported on this MAU. + */ + readonly attribute TruthValueType ifMauAutoNegSupported; + + /* + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC. + */ + readonly attribute IANAifMauTypeListBitsType ifMauTypeListBits; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter64Type ifMauHCFalseCarriers; + }; + + + /* + An entry in the table, containing information + about a particular jack. + */ + interface ifJackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex ifJackIndex"; + + /* + The jack connector type, as it appears on the + outside of the system. + */ + readonly attribute IANAifJackTypeType ifJackType; + }; + + interface dot3IfMauAutoNegGroup : SNMPMgmt::SmiEntry { + + /* + Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function. + */ + SNMPMgmt::SmiTableIterator get_ifMauAutoNegTable(); + }; + + + /* + An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU. + */ + interface ifMauAutoNegEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex"; + + /* + Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function. + REFERENCE: + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + + */ + attribute IfMauAutoNegAdminStatusType ifMauAutoNegAdminStatus; + + /* + A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received. + REFERENCE: + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + + */ + readonly attribute IfMauAutoNegRemoteSignalingType ifMauAutoNegRemoteSignaling; + + /* + A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]. + REFERENCE: + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + + */ + readonly attribute IfMauAutoNegConfigType ifMauAutoNegConfig; + + /* + If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect. + REFERENCE: + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + + */ + attribute IfMauAutoNegRestartType ifMauAutoNegRestart; + + /* + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + + */ + readonly attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapabilityBits; + + /* + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + + */ + attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapAdvertisedBits; + + /* + A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + + */ + readonly attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapReceivedBits; + + /* + A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs. + REFERENCE: + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + + */ + attribute IfMauAutoNegRemoteFaultAdvertisedType ifMauAutoNegRemoteFaultAdvertised; + + /* + A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs. + REFERENCE: + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + + */ + readonly attribute IfMauAutoNegRemoteFaultReceivedType ifMauAutoNegRemoteFaultReceived; + }; + + struct RpMauJabberStateVBType { + string var_name; + string var_index; + RpMauJabberStateType rpMauJabberState; + }; + + struct IfMauJabberStateVBType { + string var_name; + string var_index; + IfMauJabberStateType ifMauJabberState; + }; + + struct RpMauJabberTrapType { + RpMauJabberStateVBType rpMauJabberState; + }; + + struct IfMauJabberTrapType { + IfMauJabberStateVBType ifMauJabberState; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void rpMauJabberTrap ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in RpMauJabberTrapType notification_info + ); + + /* + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void ifMauJabberTrap ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in IfMauJabberTrapType notification_info + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void pull_rpMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out RpMauJabberTrapType notification_info + ); + boolean try_rpMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out RpMauJabberTrapType notification_info + ); + + /* + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void pull_ifMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out IfMauJabberTrapType notification_info + ); + boolean try_ifMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out IfMauJabberTrapType notification_info + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + rpMauEntry create_rpMauEntry ( + in RpMauGroupIndexType rpMauGroupIndex, + in RpMauPortIndexType rpMauPortIndex, + in RpMauIndexType rpMauIndex, + in RpMauStatusType rpMauStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifMauEntry create_ifMauEntry ( + in InterfaceIndexType ifMauIfIndex, + in IfMauIndexType ifMauIndex, + in IfMauStatusType ifMauStatus, + in AutonomousTypeType ifMauDefaultType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifMauAutoNegEntry create_ifMauAutoNegEntry ( + in InterfaceIndexType ifMauIfIndex, + in IfMauIndexType ifMauIndex, + in IfMauAutoNegAdminStatusType ifMauAutoNegAdminStatus, + in IfMauAutoNegRestartType ifMauAutoNegRestart, + in IANAifMauAutoNegCapBitsType ifMauAutoNegCapAdvertisedBits, + in IfMauAutoNegRemoteFaultAdvertisedType ifMauAutoNegRemoteFaultAdvertised + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + +}; + +#endif /* !_MAU_MIB_IDL_ */ diff --git a/test/dumps/corba/MAU_MIB.oid b/test/dumps/corba/MAU_MIB.oid new file mode 100644 index 0000000..5504f13 --- /dev/null +++ b/test/dumps/corba/MAU_MIB.oid @@ -0,0 +1,59 @@ +::MAU_MIB::snmpDot3MauMgt 1.3.6.1.2.1.26 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::snmpDot3MauTraps 1.3.6.1.2.1.26.0 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::snmpDot3MauTraps::rpMauJabberTrap 1.3.6.1.2.1.26.0.1 Notification not-accessible +::MAU_MIB::snmpDot3MauTraps::ifMauJabberTrap 1.3.6.1.2.1.26.0.2 Notification not-accessible +::MAU_MIB::dot3RpMauBasicGroup 1.3.6.1.2.1.26.1 Group not-accessible +::MAU_MIB::rpMauTable 1.3.6.1.2.1.26.1.1 Table not-accessible +::MAU_MIB::rpMauEntry 1.3.6.1.2.1.26.1.1.1 TableEntry not-accessible +::MAU_MIB::rpMauEntry::rpMauGroupIndex 1.3.6.1.2.1.26.1.1.1.1 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauPortIndex 1.3.6.1.2.1.26.1.1.1.2 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauIndex 1.3.6.1.2.1.26.1.1.1.3 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauType 1.3.6.1.2.1.26.1.1.1.4 ASN1_ObjectIdentifier read-only +::MAU_MIB::rpMauEntry::rpMauStatus 1.3.6.1.2.1.26.1.1.1.5 ASN1_Integer read-write +::MAU_MIB::rpMauEntry::rpMauMediaAvailable 1.3.6.1.2.1.26.1.1.1.6 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauMediaAvailableStateExits 1.3.6.1.2.1.26.1.1.1.7 ASN1_Unsigned read-only +::MAU_MIB::rpMauEntry::rpMauJabberState 1.3.6.1.2.1.26.1.1.1.8 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauJabberingStateEnters 1.3.6.1.2.1.26.1.1.1.9 ASN1_Unsigned read-only +::MAU_MIB::rpMauEntry::rpMauFalseCarriers 1.3.6.1.2.1.26.1.1.1.10 ASN1_Unsigned read-only +::MAU_MIB::rpJackTable 1.3.6.1.2.1.26.1.2 Table not-accessible +::MAU_MIB::rpJackEntry 1.3.6.1.2.1.26.1.2.1 TableEntry not-accessible +::MAU_MIB::rpJackEntry::rpJackIndex 1.3.6.1.2.1.26.1.2.1.1 ASN1_Integer not-accessible +::MAU_MIB::rpJackEntry::rpJackType 1.3.6.1.2.1.26.1.2.1.2 ASN1_Integer read-only +::MAU_MIB::dot3IfMauBasicGroup 1.3.6.1.2.1.26.2 Group not-accessible +::MAU_MIB::ifMauTable 1.3.6.1.2.1.26.2.1 Table not-accessible +::MAU_MIB::ifMauEntry 1.3.6.1.2.1.26.2.1.1 TableEntry not-accessible +::MAU_MIB::ifMauEntry::ifMauIfIndex 1.3.6.1.2.1.26.2.1.1.1 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauIndex 1.3.6.1.2.1.26.2.1.1.2 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauType 1.3.6.1.2.1.26.2.1.1.3 ASN1_ObjectIdentifier read-only +::MAU_MIB::ifMauEntry::ifMauStatus 1.3.6.1.2.1.26.2.1.1.4 ASN1_Integer read-write +::MAU_MIB::ifMauEntry::ifMauMediaAvailable 1.3.6.1.2.1.26.2.1.1.5 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauMediaAvailableStateExits 1.3.6.1.2.1.26.2.1.1.6 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauJabberState 1.3.6.1.2.1.26.2.1.1.7 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauJabberingStateEnters 1.3.6.1.2.1.26.2.1.1.8 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauFalseCarriers 1.3.6.1.2.1.26.2.1.1.9 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauDefaultType 1.3.6.1.2.1.26.2.1.1.11 ASN1_ObjectIdentifier read-write +::MAU_MIB::ifMauEntry::ifMauAutoNegSupported 1.3.6.1.2.1.26.2.1.1.12 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauTypeListBits 1.3.6.1.2.1.26.2.1.1.13 ASN1_OctetString read-only +::MAU_MIB::ifMauEntry::ifMauHCFalseCarriers 1.3.6.1.2.1.26.2.1.1.14 ASN1_Unsigned64 read-only +::MAU_MIB::ifJackTable 1.3.6.1.2.1.26.2.2 Table not-accessible +::MAU_MIB::ifJackEntry 1.3.6.1.2.1.26.2.2.1 TableEntry not-accessible +::MAU_MIB::ifJackEntry::ifJackIndex 1.3.6.1.2.1.26.2.2.1.1 ASN1_Integer not-accessible +::MAU_MIB::ifJackEntry::ifJackType 1.3.6.1.2.1.26.2.2.1.2 ASN1_Integer read-only +::MAU_MIB::dot3BroadMauBasicGroup 1.3.6.1.2.1.26.3 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::dot3IfMauAutoNegGroup 1.3.6.1.2.1.26.5 Group not-accessible +::MAU_MIB::ifMauAutoNegTable 1.3.6.1.2.1.26.5.1 Table not-accessible +::MAU_MIB::ifMauAutoNegEntry 1.3.6.1.2.1.26.5.1.1 TableEntry not-accessible +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegAdminStatus 1.3.6.1.2.1.26.5.1.1.1 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteSignaling 1.3.6.1.2.1.26.5.1.1.2 ASN1_Integer read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegConfig 1.3.6.1.2.1.26.5.1.1.4 ASN1_Integer read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRestart 1.3.6.1.2.1.26.5.1.1.8 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapabilityBits 1.3.6.1.2.1.26.5.1.1.9 ASN1_OctetString read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapAdvertisedBits 1.3.6.1.2.1.26.5.1.1.10 ASN1_OctetString read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapReceivedBits 1.3.6.1.2.1.26.5.1.1.11 ASN1_OctetString read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteFaultAdvertised 1.3.6.1.2.1.26.5.1.1.12 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteFaultReceived 1.3.6.1.2.1.26.5.1.1.13 ASN1_Integer read-only +::MAU_MIB::mauMod 1.3.6.1.2.1.26.6 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModConf 1.3.6.1.2.1.26.6.1 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModCompls 1.3.6.1.2.1.26.6.1.1 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModObjGrps 1.3.6.1.2.1.26.6.1.2 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModNotGrps 1.3.6.1.2.1.26.6.1.3 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/corba/Makefile.am b/test/dumps/corba/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/corba/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/corba/Makefile.in b/test/dumps/corba/Makefile.in new file mode 100644 index 0000000..58e9e83 --- /dev/null +++ b/test/dumps/corba/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/corba +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/corba/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/corba/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/corba/RMON2_MIB.idl b/test/dumps/corba/RMON2_MIB.idl new file mode 100644 index 0000000..6f34a04 --- /dev/null +++ b/test/dumps/corba/RMON2_MIB.idl @@ -0,0 +1,3707 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba RMON2-MIB + * + * Derived from RMON2-MIB: + * The MIB module for managing remote monitoring + * device implementations. This MIB module + * extends the architecture introduced in the original + * RMON MIB as specified in RFC 2819. + * + * Copyright (C) The Internet Society (2006). This version of + * this MIB module is part of RFC 4502; see the RFC itself for + * full legal notices. + * + * Revision 2006-05-02 00:00: + * This version updates the proposed-standard version of the + * RMON2 MIB (published as RFC 2021) by adding 2 new + * enumerations to the nlMatrixTopNControlRateBase object and + * 4 new enumerations to the alMatrixTopNControlRateBase object. + * These new enumerations support the creation of high-capacity + * topN reports in the High Capacity RMON MIB [RFC3273]. + * + * Additionally, the following objects have been deprecated, as + * they have not had enough independent implementations to + * demonstrate interoperability to meet the requirements of a + * Draft Standard: + * + * probeDownloadFile + * probeDownloadTFTPServer + * probeDownloadAction + * probeDownloadStatus + * + * + * + * serialMode + * serialProtocol + * serialTimeout + * serialModemInitString + * serialModemHangUpString + * serialModemConnectResp + * serialModemNoConnectResp + * serialDialoutTimeout + * serialStatus + * serialConnectDestIpAddress + * serialConnectType + * serialConnectDialString + * serialConnectSwitchConnectSeq + * serialConnectSwitchDisconnectSeq + * serialConnectSwitchResetSeq + * serialConnectOwner + * serialConnectStatus + * netConfigIPAddress + * netConfigSubnetMask + * netConfigStatus + * netDefaultGateway + * tokenRingMLStats2DroppedFrames + * tokenRingMLStats2CreateTime + * tokenRingPStats2DroppedFrames + * tokenRingPStats2CreateTime + * ringStationControl2DroppedFrames + * ringStationControl2CreateTime + * sourceRoutingStats2DroppedFrames + * sourceRoutingStats2CreateTime + * trapDestIndex + * trapDestCommunity + * trapDestProtocol + * trapDestAddress + * trapDestOwner + * trapDestStatus + * + * In addition, two corrections were made. The LastCreateTime + * Textual Convention had been defined with a base type of + * another textual convention, which isn't allowed in SMIv2. The + * definition has been modified to use TimeTicks as the base + * type. + * + * Further, the SerialConfigEntry SEQUENCE definition included + * sub-typing information that is not allowed in SMIv2. This + * information has been deleted. Ranges were added to a number of + * objects and textual-conventions to constrain their maximum + * (and sometimes minimum) sizes. The addition of these ranges + * documents existing practice for these objects. These objects + * + * + * + * are: + * ControlString + * protocolDirID + * protocolDirParameters + * addressMapNetworkAddress + * nlHostAddress + * nlMatrixSDSourceAddress + * nlMatrixSDDestAddress + * nlMatrixDSSourceAddress + * nlMatrixDSDestAddress + * nlMatrixTopNSourceAddress + * nlMatrixTopNDestAddress + * alHostEntry + * alMatrixSDEntry + * alMatrixDSEntry + * alMatrixTopNSourceAddress + * alMatrixTopNDestAddress + * + * Finally, the TimeFilter TC has been updated to encourage agent + * implementations that allow a MIB walk to behave well even when + * performed by an application that is not aware of the special + * TimeFilter semantics. + * + * Revision 2002-07-08 00:00: + * Added new enumerations to support the High-Capacity RMON + * MIB as defined in RFC 3273. Also fixed some typos and + * added clarifications. + * + * Revision 1996-05-27 00:00: + * Original version. Published as RFC 2021. + * + * $Id: RMON2_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _RMON2_MIB_IDL_ +#define _RMON2_MIB_IDL_ + +#include +#include +#include +#include +#include +#include + +module RMON2_MIB { + + typedef IF_MIB::InterfaceIndexType InterfaceIndexType; + typedef RMON_MIB::OwnerStringType OwnerStringType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Gauge32Type Gauge32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::IpAddressType IpAddressType; + typedef SNMPv2_TC::RowStatusType RowStatusType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + + const string moduleIdentity = "rmon"; + const ASN1_ObjectIdentifier rmon = "::RMON2_MIB::rmon"; + + /* + The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices. + + LAST-UPDATED: 200605020000Z + + ORGANIZATION: + "IETF RMON MIB Working Group" + + CONTACT-INFO: + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + + REVISION: "200605020000Z" + REVISION-DESCRIPTION: + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + + REVISION: "200207080000Z" + REVISION-DESCRIPTION: + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + + REVISION: "199605270000Z" + REVISION-DESCRIPTION: + "Original version. Published as RFC 2021." + + */ + + /* + This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use. + */ + typedef ASN1_Unsigned ZeroBasedCounter32Type; + + /* + This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects. + */ + typedef ASN1_Unsigned LastCreateTimeType; + + /* + To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk. + */ + typedef ASN1_Unsigned TimeFilterType; + + /* + Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + */ + typedef ASN1_ObjectIdentifier DataSourceType; + + /* + This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed. + */ + typedef ASN1_OctetString ControlStringType; + + typedef ASN1_Integer FilterProtocolDirDataLocalIndexType; + + typedef ASN1_Integer FilterProtocolDirLocalIndexType; + + typedef ASN1_OctetString ProtocolDirIDType; + + typedef ASN1_OctetString ProtocolDirParametersType; + + typedef ASN1_Integer ProtocolDirLocalIndexType; + + typedef ASN1_OctetString ProtocolDirDescrType; + + typedef ASN1_OctetString ProtocolDirTypeType; + + typedef ASN1_Integer ProtocolDirAddressMapConfigType; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_notSupported = 1; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_supportedOff = 2; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_supportedOn = 3; + const string ProtocolDirAddressMapConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDirHostConfigType; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_notSupported = 1; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_supportedOff = 2; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_supportedOn = 3; + const string ProtocolDirHostConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDirMatrixConfigType; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_notSupported = 1; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_supportedOff = 2; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_supportedOn = 3; + const string ProtocolDirMatrixConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDistControlIndexType; + + typedef ASN1_Integer AddressMapMaxDesiredEntriesType; + + typedef ASN1_Integer AddressMapControlIndexType; + + typedef ASN1_OctetString AddressMapNetworkAddressType; + + typedef ASN1_Integer HlHostControlIndexType; + + typedef ASN1_Integer HlHostControlNlMaxDesiredEntriesType; + + typedef ASN1_Integer HlHostControlAlMaxDesiredEntriesType; + + typedef ASN1_OctetString NlHostAddressType; + + typedef ASN1_Integer HlMatrixControlIndexType; + + typedef ASN1_Integer HlMatrixControlNlMaxDesiredEntriesType; + + typedef ASN1_Integer HlMatrixControlAlMaxDesiredEntriesType; + + typedef ASN1_OctetString NlMatrixSDSourceAddressType; + + typedef ASN1_OctetString NlMatrixSDDestAddressType; + + typedef ASN1_OctetString NlMatrixDSSourceAddressType; + + typedef ASN1_OctetString NlMatrixDSDestAddressType; + + typedef ASN1_Integer NlMatrixTopNControlIndexType; + + typedef ASN1_Integer NlMatrixTopNControlMatrixIndexType; + + typedef ASN1_Integer NlMatrixTopNControlRateBaseType; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNPkts = 1; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNOctets = 2; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNHighCapacityPkts = 3; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNHighCapacityOctets = 4; + const string NlMatrixTopNControlRateBaseType_NameNumberList = "nlMatrixTopNPkts (1) , nlMatrixTopNOctets (2) , nlMatrixTopNHighCapacityPkts (3) , nlMatrixTopNHighCapacityOctets (4)"; + + typedef ASN1_Integer NlMatrixTopNControlTimeRemainingType; + + typedef ASN1_Integer NlMatrixTopNControlRequestedSizeType; + + typedef ASN1_Integer NlMatrixTopNControlGrantedSizeType; + + typedef ASN1_Integer NlMatrixTopNIndexType; + + typedef ASN1_Integer NlMatrixTopNProtocolDirLocalIndexType; + + typedef ASN1_OctetString NlMatrixTopNSourceAddressType; + + typedef ASN1_OctetString NlMatrixTopNDestAddressType; + + typedef ASN1_Integer AlMatrixTopNControlIndexType; + + typedef ASN1_Integer AlMatrixTopNControlMatrixIndexType; + + typedef ASN1_Integer AlMatrixTopNControlRateBaseType; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsPkts = 1; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsOctets = 2; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllPkts = 3; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllOctets = 4; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsHighCapacityPkts = 5; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsHighCapacityOctets = 6; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllHighCapacityPkts = 7; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllHighCapacityOctets = 8; + const string AlMatrixTopNControlRateBaseType_NameNumberList = "alMatrixTopNTerminalsPkts (1) , alMatrixTopNTerminalsOctets (2) , alMatrixTopNAllPkts (3) , alMatrixTopNAllOctets (4) , alMatrixTopNTerminalsHighCapacityPkts (5) , alMatrixTopNTerminalsHighCapacityOctets (6) , alMatrixTopNAllHighCapacityPkts (7) , alMatrixTopNAllHighCapacityOctets (8)"; + + typedef ASN1_Integer AlMatrixTopNControlTimeRemainingType; + + typedef ASN1_Integer AlMatrixTopNControlRequestedSizeType; + + typedef ASN1_Integer AlMatrixTopNControlGrantedSizeType; + + typedef ASN1_Integer AlMatrixTopNIndexType; + + typedef ASN1_Integer AlMatrixTopNProtocolDirLocalIndexType; + + typedef ASN1_OctetString AlMatrixTopNSourceAddressType; + + typedef ASN1_OctetString AlMatrixTopNDestAddressType; + + typedef ASN1_Integer AlMatrixTopNAppProtocolDirLocalIndexType; + + typedef ASN1_Integer UsrHistoryControlIndexType; + + typedef ASN1_Integer UsrHistoryControlObjectsType; + + typedef ASN1_Integer UsrHistoryControlBucketsRequestedType; + + typedef ASN1_Integer UsrHistoryControlBucketsGrantedType; + + typedef ASN1_Integer UsrHistoryControlIntervalType; + + typedef ASN1_Integer UsrHistoryObjectIndexType; + + typedef ASN1_Integer UsrHistoryObjectSampleTypeType; + const UsrHistoryObjectSampleTypeType UsrHistoryObjectSampleTypeType_absoluteValue = 1; + const UsrHistoryObjectSampleTypeType UsrHistoryObjectSampleTypeType_deltaValue = 2; + const string UsrHistoryObjectSampleTypeType_NameNumberList = "absoluteValue (1) , deltaValue (2)"; + + typedef ASN1_Integer UsrHistorySampleIndexType; + + typedef ASN1_Integer UsrHistoryValStatusType; + const UsrHistoryValStatusType UsrHistoryValStatusType_valueNotAvailable = 1; + const UsrHistoryValStatusType UsrHistoryValStatusType_valuePositive = 2; + const UsrHistoryValStatusType UsrHistoryValStatusType_valueNegative = 3; + const string UsrHistoryValStatusType_NameNumberList = "valueNotAvailable (1) , valuePositive (2) , valueNegative (3)"; + + typedef ASN1_OctetString ProbeCapabilitiesType; + + typedef ASN1_OctetString ProbeSoftwareRevType; + + typedef ASN1_OctetString ProbeHardwareRevType; + + typedef ASN1_OctetString ProbeDateTimeType; + + typedef ASN1_Integer ProbeResetControlType; + const ProbeResetControlType ProbeResetControlType_running = 1; + const ProbeResetControlType ProbeResetControlType_warmBoot = 2; + const ProbeResetControlType ProbeResetControlType_coldBoot = 3; + const string ProbeResetControlType_NameNumberList = "running (1) , warmBoot (2) , coldBoot (3)"; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface etherStats2Entry : RMON_MIB::etherStatsEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type etherStatsDroppedFrames; + + /* + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + */ + readonly attribute LastCreateTimeType etherStatsCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface historyControl2Entry : RMON_MIB::historyControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type historyControlDroppedFrames; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface hostControl2Entry : RMON_MIB::hostControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type hostControlDroppedFrames; + + /* + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + */ + readonly attribute LastCreateTimeType hostControlCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface matrixControl2Entry : RMON_MIB::matrixControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type matrixControlDroppedFrames; + + /* + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + */ + readonly attribute LastCreateTimeType matrixControlCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface channel2Entry : RMON_MIB::channelEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type channelDroppedFrames; + + /* + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + */ + readonly attribute LastCreateTimeType channelCreateTime; + }; + + + /* + Provides a variable-length packet filter feature to the + RMON-1 filter table. + */ + interface filter2Entry : RMON_MIB::filterEntry { + + /* + When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet. + */ + attribute FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex; + + /* + When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry. + */ + attribute FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex; + }; + + interface protocolDir : SNMPMgmt::SmiEntry { + + /* + The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig. + */ + readonly attribute TimeStampType protocolDirLastChange; + + /* + This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups. + */ + SNMPMgmt::SmiTableIterator get_protocolDirTable(); + }; + + + /* + A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface protocolDirEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDirID protocolDirParameters"; + + /* + The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted. + */ + readonly attribute ProtocolDirLocalIndexType protocolDirLocalIndex; + + /* + A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1). + */ + attribute ProtocolDirDescrType protocolDirDescr; + + /* + This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero. + */ + readonly attribute ProtocolDirTypeType protocolDirType; + + /* + This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable. + */ + attribute ProtocolDirAddressMapConfigType protocolDirAddressMapConfig; + + /* + This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + */ + attribute ProtocolDirHostConfigType protocolDirHostConfig; + + /* + This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + */ + attribute ProtocolDirMatrixConfigType protocolDirMatrixConfig; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType protocolDirOwner; + + /* + The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted. + */ + attribute RowStatusType protocolDirStatus; + }; + + interface protocolDist : SNMPMgmt::SmiEntry { + + /* + Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface. + */ + SNMPMgmt::SmiTableIterator get_protocolDistControlTable(); + + /* + An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed. + */ + SNMPMgmt::SmiTableIterator get_protocolDistStatsTable(); + }; + + + /* + A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7 + */ + interface protocolDistControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDistControlIndex"; + + /* + The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1). + */ + attribute DataSourceType protocolDistControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type protocolDistControlDroppedFrames; + + /* + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + */ + readonly attribute LastCreateTimeType protocolDistControlCreateTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType protocolDistControlOwner; + + /* + The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted. + */ + attribute RowStatusType protocolDistControlStatus; + }; + + + /* + A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18 + */ + interface protocolDistStatsEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDistControlIndex protocolDirLocalIndex"; + + /* + The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times. + */ + readonly attribute ZeroBasedCounter32Type protocolDistStatsPkts; + + /* + The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol. + */ + readonly attribute ZeroBasedCounter32Type protocolDistStatsOctets; + }; + + interface addressMap : SNMPMgmt::SmiEntry { + + /* + The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts. + */ + readonly attribute Counter32Type addressMapInserts; + + /* + The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts. + */ + readonly attribute Counter32Type addressMapDeletes; + + /* + The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + */ + attribute AddressMapMaxDesiredEntriesType addressMapMaxDesiredEntries; + + /* + A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available. + */ + SNMPMgmt::SmiTableIterator get_addressMapControlTable(); + + /* + A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2). + */ + SNMPMgmt::SmiTableIterator get_addressMapTable(); + }; + + + /* + A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1 + */ + interface addressMapControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "addressMapControlIndex"; + + /* + The source of data for this addressMapControlEntry. + */ + attribute DataSourceType addressMapControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type addressMapControlDroppedFrames; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType addressMapControlOwner; + + /* + The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted. + */ + attribute RowStatusType addressMapControlStatus; + }; + + + /* + A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface addressMapEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "addressMapTimeMark protocolDirLocalIndex addressMapNetworkAddress addressMapSource"; + + /* + The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol. + */ + readonly attribute ASN1_OctetString addressMapPhysicalAddress; + + /* + The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently. + */ + readonly attribute TimeStampType addressMapLastChange; + }; + + interface nlHost : SNMPMgmt::SmiEntry { + + /* + A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available. + */ + SNMPMgmt::SmiTableIterator get_hlHostControlTable(); + + /* + A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors. + */ + SNMPMgmt::SmiTableIterator get_nlHostTable(); + }; + + + /* + A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1 + */ + interface hlHostControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex"; + + /* + The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1). + */ + attribute DataSourceType hlHostControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type hlHostControlNlDroppedFrames; + + /* + The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts. + */ + readonly attribute Counter32Type hlHostControlNlInserts; + + /* + The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts. + */ + readonly attribute Counter32Type hlHostControlNlDeletes; + + /* + The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + */ + attribute HlHostControlNlMaxDesiredEntriesType hlHostControlNlMaxDesiredEntries; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type hlHostControlAlDroppedFrames; + + /* + The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts. + */ + readonly attribute Counter32Type hlHostControlAlInserts; + + /* + The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts. + */ + readonly attribute Counter32Type hlHostControlAlDeletes; + + /* + The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + */ + attribute HlHostControlAlMaxDesiredEntriesType hlHostControlAlMaxDesiredEntries; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType hlHostControlOwner; + + /* + The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted. + */ + attribute RowStatusType hlHostControlStatus; + }; + + + /* + A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations. + */ + interface nlHostEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex nlHostTimeMark protocolDirLocalIndex nlHostAddress"; + + /* + The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + */ + readonly attribute ZeroBasedCounter32Type nlHostInPkts; + + /* + The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutPkts; + + /* + The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlHostInOctets; + + /* + The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutOctets; + + /* + The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutMacNonUnicastPkts; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType nlHostCreateTime; + }; + + interface nlMatrix : SNMPMgmt::SmiEntry { + + /* + A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table. + */ + SNMPMgmt::SmiTableIterator get_hlMatrixControlTable(); + + /* + A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixSDTable(); + + /* + A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixDSTable(); + + /* + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixTopNControlTable(); + + /* + A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixTopNTable(); + }; + + + /* + A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1 + */ + interface hlMatrixControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex"; + + /* + The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1). + */ + attribute DataSourceType hlMatrixControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type hlMatrixControlNlDroppedFrames; + + /* + The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts. + */ + readonly attribute Counter32Type hlMatrixControlNlInserts; + + /* + The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts. + */ + readonly attribute Counter32Type hlMatrixControlNlDeletes; + + /* + The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + */ + attribute HlMatrixControlNlMaxDesiredEntriesType hlMatrixControlNlMaxDesiredEntries; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + */ + readonly attribute Counter32Type hlMatrixControlAlDroppedFrames; + + /* + The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts. + */ + readonly attribute Counter32Type hlMatrixControlAlInserts; + + /* + The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts. + */ + readonly attribute Counter32Type hlMatrixControlAlDeletes; + + /* + The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + */ + attribute HlMatrixControlAlMaxDesiredEntriesType hlMatrixControlAlMaxDesiredEntries; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType hlMatrixControlOwner; + + /* + The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent. + */ + attribute RowStatusType hlMatrixControlStatus; + }; + + + /* + A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface nlMatrixSDEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex nlMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress"; + + /* + The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixSDPkts; + + /* + The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixSDOctets; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType nlMatrixSDCreateTime; + }; + + + /* + A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface nlMatrixDSEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex nlMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress"; + + /* + The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixDSPkts; + + /* + The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixDSOctets; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType nlMatrixDSCreateTime; + }; + + + /* + A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3 + */ + interface nlMatrixTopNControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "nlMatrixTopNControlIndex"; + + /* + The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + */ + attribute NlMatrixTopNControlMatrixIndexType nlMatrixTopNControlMatrixIndex; + + /* + The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object. + */ + attribute NlMatrixTopNControlRateBaseType nlMatrixTopNControlRateBase; + + /* + The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable). + */ + attribute NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining; + + /* + The number of reports that have been generated by this entry. + */ + readonly attribute Counter32Type nlMatrixTopNControlGeneratedReports; + + /* + The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry. + */ + readonly attribute ASN1_Integer nlMatrixTopNControlDuration; + + /* + The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources. + */ + attribute NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize; + + /* + The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available. + */ + readonly attribute NlMatrixTopNControlGrantedSizeType nlMatrixTopNControlGrantedSize; + + /* + The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed. + */ + readonly attribute TimeStampType nlMatrixTopNControlStartTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType nlMatrixTopNControlOwner; + + /* + The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent. + */ + attribute RowStatusType nlMatrixTopNControlStatus; + }; + + + /* + A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10 + */ + interface nlMatrixTopNEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "nlMatrixTopNControlIndex nlMatrixTopNIndex"; + + /* + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + */ + readonly attribute NlMatrixTopNProtocolDirLocalIndexType nlMatrixTopNProtocolDirLocalIndex; + + /* + The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + */ + readonly attribute NlMatrixTopNSourceAddressType nlMatrixTopNSourceAddress; + + /* + The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + */ + readonly attribute NlMatrixTopNDestAddressType nlMatrixTopNDestAddress; + + /* + The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report. + */ + readonly attribute Gauge32Type nlMatrixTopNPktRate; + + /* + The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object. + */ + readonly attribute Gauge32Type nlMatrixTopNReversePktRate; + + /* + The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report. + */ + readonly attribute Gauge32Type nlMatrixTopNOctetRate; + + /* + The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object. + */ + readonly attribute Gauge32Type nlMatrixTopNReverseOctetRate; + }; + + interface alHost : SNMPMgmt::SmiEntry { + + /* + A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable. + */ + SNMPMgmt::SmiTableIterator get_alHostTable(); + }; + + + /* + A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alHostEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex alHostTimeMark protocolDirLocalIndex nlHostAddress protocolDirLocalIndex"; + + /* + The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times. + */ + readonly attribute ZeroBasedCounter32Type alHostInPkts; + + /* + The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times. + */ + readonly attribute ZeroBasedCounter32Type alHostOutPkts; + + /* + The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alHostInOctets; + + /* + The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alHostOutOctets; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType alHostCreateTime; + }; + + interface alMatrix : SNMPMgmt::SmiEntry { + + /* + A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable. + */ + SNMPMgmt::SmiTableIterator get_alMatrixSDTable(); + + /* + A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable. + */ + SNMPMgmt::SmiTableIterator get_alMatrixDSTable(); + + /* + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + */ + SNMPMgmt::SmiTableIterator get_alMatrixTopNControlTable(); + + /* + A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets. + */ + SNMPMgmt::SmiTableIterator get_alMatrixTopNTable(); + }; + + + /* + A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alMatrixSDEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex alMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress protocolDirLocalIndex"; + + /* + The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + */ + readonly attribute ZeroBasedCounter32Type alMatrixSDPkts; + + /* + The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alMatrixSDOctets; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType alMatrixSDCreateTime; + }; + + + /* + A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alMatrixDSEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex alMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress protocolDirLocalIndex"; + + /* + The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + */ + readonly attribute ZeroBasedCounter32Type alMatrixDSPkts; + + /* + The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alMatrixDSOctets; + + /* + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + */ + readonly attribute LastCreateTimeType alMatrixDSCreateTime; + }; + + + /* + A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3 + */ + interface alMatrixTopNControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "alMatrixTopNControlIndex"; + + /* + The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + */ + attribute AlMatrixTopNControlMatrixIndexType alMatrixTopNControlMatrixIndex; + + /* + This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + */ + attribute AlMatrixTopNControlRateBaseType alMatrixTopNControlRateBase; + + /* + The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable). + */ + attribute AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining; + + /* + The number of reports that have been generated by this entry. + */ + readonly attribute Counter32Type alMatrixTopNControlGeneratedReports; + + /* + The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry. + */ + readonly attribute ASN1_Integer alMatrixTopNControlDuration; + + /* + The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources. + */ + attribute AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize; + + /* + The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available. + */ + readonly attribute AlMatrixTopNControlGrantedSizeType alMatrixTopNControlGrantedSize; + + /* + The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed. + */ + readonly attribute TimeStampType alMatrixTopNControlStartTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType alMatrixTopNControlOwner; + + /* + The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent. + */ + attribute RowStatusType alMatrixTopNControlStatus; + }; + + + /* + A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10 + */ + interface alMatrixTopNEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "alMatrixTopNControlIndex alMatrixTopNIndex"; + + /* + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + */ + readonly attribute AlMatrixTopNProtocolDirLocalIndexType alMatrixTopNProtocolDirLocalIndex; + + /* + The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + */ + readonly attribute AlMatrixTopNSourceAddressType alMatrixTopNSourceAddress; + + /* + The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + */ + readonly attribute AlMatrixTopNDestAddressType alMatrixTopNDestAddress; + + /* + The type of the protocol counted by this matrix entry. + */ + readonly attribute AlMatrixTopNAppProtocolDirLocalIndexType alMatrixTopNAppProtocolDirLocalIndex; + + /* + The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report. + */ + readonly attribute Gauge32Type alMatrixTopNPktRate; + + /* + The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object. + */ + readonly attribute Gauge32Type alMatrixTopNReversePktRate; + + /* + The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report. + */ + readonly attribute Gauge32Type alMatrixTopNOctetRate; + + /* + The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object. + */ + readonly attribute Gauge32Type alMatrixTopNReverseOctetRate; + }; + + interface usrHistory : SNMPMgmt::SmiEntry { + + /* + A list of data-collection configuration entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryControlTable(); + + /* + A list of data-collection configuration entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryObjectTable(); + + /* + A list of user-defined history entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryTable(); + }; + + + /* + A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1 + */ + interface usrHistoryControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex"; + + /* + The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1). + */ + attribute UsrHistoryControlObjectsType usrHistoryControlObjects; + + /* + The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources. + */ + attribute UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested; + + /* + The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow. + */ + readonly attribute UsrHistoryControlBucketsGrantedType usrHistoryControlBucketsGranted; + + /* + The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + */ + attribute UsrHistoryControlIntervalType usrHistoryControlInterval; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType usrHistoryControlOwner; + + /* + The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted. + */ + attribute RowStatusType usrHistoryControlStatus; + }; + + + /* + A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3 + */ + interface usrHistoryObjectEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex usrHistoryObjectIndex"; + + /* + The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + */ + attribute ASN1_ObjectIdentifier usrHistoryObjectVariable; + + /* + The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + */ + attribute UsrHistoryObjectSampleTypeType usrHistoryObjectSampleType; + }; + + + /* + A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5 + */ + interface usrHistoryEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex usrHistorySampleIndex usrHistoryObjectIndex"; + + /* + The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval. + */ + readonly attribute TimeStampType usrHistoryIntervalStart; + + /* + The value of sysUpTime at the end of the interval over which + this sample was measured. + */ + readonly attribute TimeStampType usrHistoryIntervalEnd; + + /* + The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + */ + readonly attribute Gauge32Type usrHistoryAbsValue; + + /* + This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value. + */ + readonly attribute UsrHistoryValStatusType usrHistoryValStatus; + }; + + interface probeConfig : SNMPMgmt::SmiEntry { + + /* + An indication of the RMON MIB groups supported + on at least one interface by this probe. + */ + readonly attribute ProbeCapabilitiesType probeCapabilities; + + /* + The software revision of this device. This string will have + a zero length if the revision is unknown. + */ + readonly attribute ProbeSoftwareRevType probeSoftwareRev; + + /* + The hardware revision of this device. This string will have + a zero length if the revision is unknown. + */ + readonly attribute ProbeHardwareRevType probeHardwareRev; + + /* + Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned. + */ + attribute ProbeDateTimeType probeDateTime; + + /* + Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1). + */ + attribute ProbeResetControlType probeResetControl; + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + filter2Entry create_filter2Entry ( + in FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex, + in FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + protocolDirEntry create_protocolDirEntry ( + in ProtocolDirIDType protocolDirID, + in ProtocolDirParametersType protocolDirParameters, + in ProtocolDirDescrType protocolDirDescr, + in ProtocolDirAddressMapConfigType protocolDirAddressMapConfig, + in ProtocolDirHostConfigType protocolDirHostConfig, + in ProtocolDirMatrixConfigType protocolDirMatrixConfig, + in OwnerStringType protocolDirOwner, + in RowStatusType protocolDirStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + protocolDistControlEntry create_protocolDistControlEntry ( + in ProtocolDistControlIndexType protocolDistControlIndex, + in DataSourceType protocolDistControlDataSource, + in OwnerStringType protocolDistControlOwner, + in RowStatusType protocolDistControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + addressMap create_addressMap ( + in AddressMapMaxDesiredEntriesType addressMapMaxDesiredEntries + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + addressMapControlEntry create_addressMapControlEntry ( + in AddressMapControlIndexType addressMapControlIndex, + in DataSourceType addressMapControlDataSource, + in OwnerStringType addressMapControlOwner, + in RowStatusType addressMapControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + hlHostControlEntry create_hlHostControlEntry ( + in HlHostControlIndexType hlHostControlIndex, + in DataSourceType hlHostControlDataSource, + in HlHostControlNlMaxDesiredEntriesType hlHostControlNlMaxDesiredEntries, + in HlHostControlAlMaxDesiredEntriesType hlHostControlAlMaxDesiredEntries, + in OwnerStringType hlHostControlOwner, + in RowStatusType hlHostControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + hlMatrixControlEntry create_hlMatrixControlEntry ( + in HlMatrixControlIndexType hlMatrixControlIndex, + in DataSourceType hlMatrixControlDataSource, + in HlMatrixControlNlMaxDesiredEntriesType hlMatrixControlNlMaxDesiredEntries, + in HlMatrixControlAlMaxDesiredEntriesType hlMatrixControlAlMaxDesiredEntries, + in OwnerStringType hlMatrixControlOwner, + in RowStatusType hlMatrixControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + nlMatrixTopNControlEntry create_nlMatrixTopNControlEntry ( + in NlMatrixTopNControlIndexType nlMatrixTopNControlIndex, + in NlMatrixTopNControlMatrixIndexType nlMatrixTopNControlMatrixIndex, + in NlMatrixTopNControlRateBaseType nlMatrixTopNControlRateBase, + in NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining, + in NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize, + in OwnerStringType nlMatrixTopNControlOwner, + in RowStatusType nlMatrixTopNControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + alMatrixTopNControlEntry create_alMatrixTopNControlEntry ( + in AlMatrixTopNControlIndexType alMatrixTopNControlIndex, + in AlMatrixTopNControlMatrixIndexType alMatrixTopNControlMatrixIndex, + in AlMatrixTopNControlRateBaseType alMatrixTopNControlRateBase, + in AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining, + in AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize, + in OwnerStringType alMatrixTopNControlOwner, + in RowStatusType alMatrixTopNControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + usrHistoryControlEntry create_usrHistoryControlEntry ( + in UsrHistoryControlIndexType usrHistoryControlIndex, + in UsrHistoryControlObjectsType usrHistoryControlObjects, + in UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested, + in UsrHistoryControlIntervalType usrHistoryControlInterval, + in OwnerStringType usrHistoryControlOwner, + in RowStatusType usrHistoryControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + usrHistoryObjectEntry create_usrHistoryObjectEntry ( + in UsrHistoryControlIndexType usrHistoryControlIndex, + in UsrHistoryObjectIndexType usrHistoryObjectIndex, + in ASN1_ObjectIdentifier usrHistoryObjectVariable, + in UsrHistoryObjectSampleTypeType usrHistoryObjectSampleType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + probeConfig create_probeConfig ( + in ProbeDateTimeType probeDateTime, + in ProbeResetControlType probeResetControl + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + + /* pseudo */ + interface DefaultValues { + /* DEFVAL: 0 */ + FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex(); + + /* DEFVAL: 0 */ + FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex(); + + /* DEFVAL: 1800 */ + NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining(); + + /* DEFVAL: 150 */ + NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize(); + + /* DEFVAL: 1800 */ + AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining(); + + /* DEFVAL: 150 */ + AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize(); + + /* DEFVAL: 50 */ + UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested(); + + /* DEFVAL: 1800 */ + UsrHistoryControlIntervalType usrHistoryControlInterval(); + + /* DEFVAL: direct */ + SerialModeType serialMode(); + + /* DEFVAL: slip */ + SerialProtocolType serialProtocol(); + + /* DEFVAL: 300 */ + SerialTimeoutType serialTimeout(); + + /* DEFVAL: 20 */ + SerialDialoutTimeoutType serialDialoutTimeout(); + + /* DEFVAL: direct */ + SerialConnectTypeType serialConnectType(); + + }; + +}; + +#endif /* !_RMON2_MIB_IDL_ */ diff --git a/test/dumps/corba/RMON2_MIB.oid b/test/dumps/corba/RMON2_MIB.oid new file mode 100644 index 0000000..e4aaab0 --- /dev/null +++ b/test/dumps/corba/RMON2_MIB.oid @@ -0,0 +1,225 @@ +::RMON2_MIB::rmon 1.3.6.1.2.1.16 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::etherStats2Table 1.3.6.1.2.1.16.1.4 Table not-accessible +::RMON2_MIB::etherStats2Entry 1.3.6.1.2.1.16.1.4.1 TableEntry not-accessible +::RMON2_MIB::etherStats2Entry::etherStatsDroppedFrames 1.3.6.1.2.1.16.1.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::etherStats2Entry::etherStatsCreateTime 1.3.6.1.2.1.16.1.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::historyControl2Table 1.3.6.1.2.1.16.2.5 Table not-accessible +::RMON2_MIB::historyControl2Entry 1.3.6.1.2.1.16.2.5.1 TableEntry not-accessible +::RMON2_MIB::historyControl2Entry::historyControlDroppedFrames 1.3.6.1.2.1.16.2.5.1.1 ASN1_Unsigned read-only +::RMON2_MIB::hostControl2Table 1.3.6.1.2.1.16.4.4 Table not-accessible +::RMON2_MIB::hostControl2Entry 1.3.6.1.2.1.16.4.4.1 TableEntry not-accessible +::RMON2_MIB::hostControl2Entry::hostControlDroppedFrames 1.3.6.1.2.1.16.4.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::hostControl2Entry::hostControlCreateTime 1.3.6.1.2.1.16.4.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::matrixControl2Table 1.3.6.1.2.1.16.6.4 Table not-accessible +::RMON2_MIB::matrixControl2Entry 1.3.6.1.2.1.16.6.4.1 TableEntry not-accessible +::RMON2_MIB::matrixControl2Entry::matrixControlDroppedFrames 1.3.6.1.2.1.16.6.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::matrixControl2Entry::matrixControlCreateTime 1.3.6.1.2.1.16.6.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::channel2Table 1.3.6.1.2.1.16.7.3 Table not-accessible +::RMON2_MIB::channel2Entry 1.3.6.1.2.1.16.7.3.1 TableEntry not-accessible +::RMON2_MIB::channel2Entry::channelDroppedFrames 1.3.6.1.2.1.16.7.3.1.1 ASN1_Unsigned read-only +::RMON2_MIB::channel2Entry::channelCreateTime 1.3.6.1.2.1.16.7.3.1.2 ASN1_Unsigned read-only +::RMON2_MIB::filter2Table 1.3.6.1.2.1.16.7.4 Table not-accessible +::RMON2_MIB::filter2Entry 1.3.6.1.2.1.16.7.4.1 TableEntry not-accessible +::RMON2_MIB::filter2Entry::filterProtocolDirDataLocalIndex 1.3.6.1.2.1.16.7.4.1.1 ASN1_Integer read-create +::RMON2_MIB::filter2Entry::filterProtocolDirLocalIndex 1.3.6.1.2.1.16.7.4.1.2 ASN1_Integer read-create +::RMON2_MIB::protocolDir 1.3.6.1.2.1.16.11 Group not-accessible +::RMON2_MIB::protocolDir::protocolDirLastChange 1.3.6.1.2.1.16.11.1 ASN1_Unsigned read-only +::RMON2_MIB::protocolDirTable 1.3.6.1.2.1.16.11.2 Table not-accessible +::RMON2_MIB::protocolDirEntry 1.3.6.1.2.1.16.11.2.1 TableEntry not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirID 1.3.6.1.2.1.16.11.2.1.1 ASN1_OctetString not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirParameters 1.3.6.1.2.1.16.11.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirLocalIndex 1.3.6.1.2.1.16.11.2.1.3 ASN1_Integer read-only +::RMON2_MIB::protocolDirEntry::protocolDirDescr 1.3.6.1.2.1.16.11.2.1.4 ASN1_OctetString read-create +::RMON2_MIB::protocolDirEntry::protocolDirType 1.3.6.1.2.1.16.11.2.1.5 ASN1_OctetString read-only +::RMON2_MIB::protocolDirEntry::protocolDirAddressMapConfig 1.3.6.1.2.1.16.11.2.1.6 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirHostConfig 1.3.6.1.2.1.16.11.2.1.7 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirMatrixConfig 1.3.6.1.2.1.16.11.2.1.8 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirOwner 1.3.6.1.2.1.16.11.2.1.9 ASN1_OctetString read-create +::RMON2_MIB::protocolDirEntry::protocolDirStatus 1.3.6.1.2.1.16.11.2.1.10 ASN1_Integer read-create +::RMON2_MIB::protocolDist 1.3.6.1.2.1.16.12 Group not-accessible +::RMON2_MIB::protocolDistControlTable 1.3.6.1.2.1.16.12.1 Table not-accessible +::RMON2_MIB::protocolDistControlEntry 1.3.6.1.2.1.16.12.1.1 TableEntry not-accessible +::RMON2_MIB::protocolDistControlEntry::protocolDistControlIndex 1.3.6.1.2.1.16.12.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::protocolDistControlEntry::protocolDistControlDataSource 1.3.6.1.2.1.16.12.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::protocolDistControlEntry::protocolDistControlDroppedFrames 1.3.6.1.2.1.16.12.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistControlEntry::protocolDistControlCreateTime 1.3.6.1.2.1.16.12.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistControlEntry::protocolDistControlOwner 1.3.6.1.2.1.16.12.1.1.5 ASN1_OctetString read-create +::RMON2_MIB::protocolDistControlEntry::protocolDistControlStatus 1.3.6.1.2.1.16.12.1.1.6 ASN1_Integer read-create +::RMON2_MIB::protocolDistStatsTable 1.3.6.1.2.1.16.12.2 Table not-accessible +::RMON2_MIB::protocolDistStatsEntry 1.3.6.1.2.1.16.12.2.1 TableEntry not-accessible +::RMON2_MIB::protocolDistStatsEntry::protocolDistStatsPkts 1.3.6.1.2.1.16.12.2.1.1 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistStatsEntry::protocolDistStatsOctets 1.3.6.1.2.1.16.12.2.1.2 ASN1_Unsigned read-only +::RMON2_MIB::addressMap 1.3.6.1.2.1.16.13 Group not-accessible +::RMON2_MIB::addressMap::addressMapInserts 1.3.6.1.2.1.16.13.1 ASN1_Unsigned read-only +::RMON2_MIB::addressMap::addressMapDeletes 1.3.6.1.2.1.16.13.2 ASN1_Unsigned read-only +::RMON2_MIB::addressMap::addressMapMaxDesiredEntries 1.3.6.1.2.1.16.13.3 ASN1_Integer read-write +::RMON2_MIB::addressMapControlTable 1.3.6.1.2.1.16.13.4 Table not-accessible +::RMON2_MIB::addressMapControlEntry 1.3.6.1.2.1.16.13.4.1 TableEntry not-accessible +::RMON2_MIB::addressMapControlEntry::addressMapControlIndex 1.3.6.1.2.1.16.13.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::addressMapControlEntry::addressMapControlDataSource 1.3.6.1.2.1.16.13.4.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::addressMapControlEntry::addressMapControlDroppedFrames 1.3.6.1.2.1.16.13.4.1.3 ASN1_Unsigned read-only +::RMON2_MIB::addressMapControlEntry::addressMapControlOwner 1.3.6.1.2.1.16.13.4.1.4 ASN1_OctetString read-create +::RMON2_MIB::addressMapControlEntry::addressMapControlStatus 1.3.6.1.2.1.16.13.4.1.5 ASN1_Integer read-create +::RMON2_MIB::addressMapTable 1.3.6.1.2.1.16.13.5 Table not-accessible +::RMON2_MIB::addressMapEntry 1.3.6.1.2.1.16.13.5.1 TableEntry not-accessible +::RMON2_MIB::addressMapEntry::addressMapTimeMark 1.3.6.1.2.1.16.13.5.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::addressMapEntry::addressMapNetworkAddress 1.3.6.1.2.1.16.13.5.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::addressMapEntry::addressMapSource 1.3.6.1.2.1.16.13.5.1.3 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::addressMapEntry::addressMapPhysicalAddress 1.3.6.1.2.1.16.13.5.1.4 ASN1_OctetString read-only +::RMON2_MIB::addressMapEntry::addressMapLastChange 1.3.6.1.2.1.16.13.5.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlHost 1.3.6.1.2.1.16.14 Group not-accessible +::RMON2_MIB::hlHostControlTable 1.3.6.1.2.1.16.14.1 Table not-accessible +::RMON2_MIB::hlHostControlEntry 1.3.6.1.2.1.16.14.1.1 TableEntry not-accessible +::RMON2_MIB::hlHostControlEntry::hlHostControlIndex 1.3.6.1.2.1.16.14.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::hlHostControlEntry::hlHostControlDataSource 1.3.6.1.2.1.16.14.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlNlDroppedFrames 1.3.6.1.2.1.16.14.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlInserts 1.3.6.1.2.1.16.14.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlDeletes 1.3.6.1.2.1.16.14.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlMaxDesiredEntries 1.3.6.1.2.1.16.14.1.1.6 ASN1_Integer read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlAlDroppedFrames 1.3.6.1.2.1.16.14.1.1.7 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlInserts 1.3.6.1.2.1.16.14.1.1.8 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlDeletes 1.3.6.1.2.1.16.14.1.1.9 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlMaxDesiredEntries 1.3.6.1.2.1.16.14.1.1.10 ASN1_Integer read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlOwner 1.3.6.1.2.1.16.14.1.1.11 ASN1_OctetString read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlStatus 1.3.6.1.2.1.16.14.1.1.12 ASN1_Integer read-create +::RMON2_MIB::nlHostTable 1.3.6.1.2.1.16.14.2 Table not-accessible +::RMON2_MIB::nlHostEntry 1.3.6.1.2.1.16.14.2.1 TableEntry not-accessible +::RMON2_MIB::nlHostEntry::nlHostTimeMark 1.3.6.1.2.1.16.14.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlHostEntry::nlHostAddress 1.3.6.1.2.1.16.14.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlHostEntry::nlHostInPkts 1.3.6.1.2.1.16.14.2.1.3 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutPkts 1.3.6.1.2.1.16.14.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostInOctets 1.3.6.1.2.1.16.14.2.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutOctets 1.3.6.1.2.1.16.14.2.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutMacNonUnicastPkts 1.3.6.1.2.1.16.14.2.1.7 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostCreateTime 1.3.6.1.2.1.16.14.2.1.8 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrix 1.3.6.1.2.1.16.15 Group not-accessible +::RMON2_MIB::hlMatrixControlTable 1.3.6.1.2.1.16.15.1 Table not-accessible +::RMON2_MIB::hlMatrixControlEntry 1.3.6.1.2.1.16.15.1.1 TableEntry not-accessible +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlIndex 1.3.6.1.2.1.16.15.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlDataSource 1.3.6.1.2.1.16.15.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlDroppedFrames 1.3.6.1.2.1.16.15.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlInserts 1.3.6.1.2.1.16.15.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlDeletes 1.3.6.1.2.1.16.15.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlMaxDesiredEntries 1.3.6.1.2.1.16.15.1.1.6 ASN1_Integer read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlDroppedFrames 1.3.6.1.2.1.16.15.1.1.7 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlInserts 1.3.6.1.2.1.16.15.1.1.8 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlDeletes 1.3.6.1.2.1.16.15.1.1.9 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlMaxDesiredEntries 1.3.6.1.2.1.16.15.1.1.10 ASN1_Integer read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlOwner 1.3.6.1.2.1.16.15.1.1.11 ASN1_OctetString read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlStatus 1.3.6.1.2.1.16.15.1.1.12 ASN1_Integer read-create +::RMON2_MIB::nlMatrixSDTable 1.3.6.1.2.1.16.15.2 Table not-accessible +::RMON2_MIB::nlMatrixSDEntry 1.3.6.1.2.1.16.15.2.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDTimeMark 1.3.6.1.2.1.16.15.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDSourceAddress 1.3.6.1.2.1.16.15.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDDestAddress 1.3.6.1.2.1.16.15.2.1.3 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDPkts 1.3.6.1.2.1.16.15.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDOctets 1.3.6.1.2.1.16.15.2.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDCreateTime 1.3.6.1.2.1.16.15.2.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSTable 1.3.6.1.2.1.16.15.3 Table not-accessible +::RMON2_MIB::nlMatrixDSEntry 1.3.6.1.2.1.16.15.3.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSTimeMark 1.3.6.1.2.1.16.15.3.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSSourceAddress 1.3.6.1.2.1.16.15.3.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSDestAddress 1.3.6.1.2.1.16.15.3.1.3 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSPkts 1.3.6.1.2.1.16.15.3.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSOctets 1.3.6.1.2.1.16.15.3.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSCreateTime 1.3.6.1.2.1.16.15.3.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlTable 1.3.6.1.2.1.16.15.4 Table not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry 1.3.6.1.2.1.16.15.4.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlIndex 1.3.6.1.2.1.16.15.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlMatrixIndex 1.3.6.1.2.1.16.15.4.1.2 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlRateBase 1.3.6.1.2.1.16.15.4.1.3 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlTimeRemaining 1.3.6.1.2.1.16.15.4.1.4 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlGeneratedReports 1.3.6.1.2.1.16.15.4.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlDuration 1.3.6.1.2.1.16.15.4.1.6 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlRequestedSize 1.3.6.1.2.1.16.15.4.1.7 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlGrantedSize 1.3.6.1.2.1.16.15.4.1.8 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlStartTime 1.3.6.1.2.1.16.15.4.1.9 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlOwner 1.3.6.1.2.1.16.15.4.1.10 ASN1_OctetString read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlStatus 1.3.6.1.2.1.16.15.4.1.11 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNTable 1.3.6.1.2.1.16.15.5 Table not-accessible +::RMON2_MIB::nlMatrixTopNEntry 1.3.6.1.2.1.16.15.5.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNIndex 1.3.6.1.2.1.16.15.5.1.1 ASN1_Integer not-accessible +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNProtocolDirLocalIndex 1.3.6.1.2.1.16.15.5.1.2 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNSourceAddress 1.3.6.1.2.1.16.15.5.1.3 ASN1_OctetString read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNDestAddress 1.3.6.1.2.1.16.15.5.1.4 ASN1_OctetString read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNPktRate 1.3.6.1.2.1.16.15.5.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNReversePktRate 1.3.6.1.2.1.16.15.5.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNOctetRate 1.3.6.1.2.1.16.15.5.1.7 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNReverseOctetRate 1.3.6.1.2.1.16.15.5.1.8 ASN1_Unsigned read-only +::RMON2_MIB::alHost 1.3.6.1.2.1.16.16 Group not-accessible +::RMON2_MIB::alHostTable 1.3.6.1.2.1.16.16.1 Table not-accessible +::RMON2_MIB::alHostEntry 1.3.6.1.2.1.16.16.1.1 TableEntry not-accessible +::RMON2_MIB::alHostEntry::alHostTimeMark 1.3.6.1.2.1.16.16.1.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alHostEntry::alHostInPkts 1.3.6.1.2.1.16.16.1.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostOutPkts 1.3.6.1.2.1.16.16.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostInOctets 1.3.6.1.2.1.16.16.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostOutOctets 1.3.6.1.2.1.16.16.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostCreateTime 1.3.6.1.2.1.16.16.1.1.6 ASN1_Unsigned read-only +::RMON2_MIB::alMatrix 1.3.6.1.2.1.16.17 Group not-accessible +::RMON2_MIB::alMatrixSDTable 1.3.6.1.2.1.16.17.1 Table not-accessible +::RMON2_MIB::alMatrixSDEntry 1.3.6.1.2.1.16.17.1.1 TableEntry not-accessible +::RMON2_MIB::alMatrixSDEntry::alMatrixSDTimeMark 1.3.6.1.2.1.16.17.1.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alMatrixSDEntry::alMatrixSDPkts 1.3.6.1.2.1.16.17.1.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixSDEntry::alMatrixSDOctets 1.3.6.1.2.1.16.17.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixSDEntry::alMatrixSDCreateTime 1.3.6.1.2.1.16.17.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSTable 1.3.6.1.2.1.16.17.2 Table not-accessible +::RMON2_MIB::alMatrixDSEntry 1.3.6.1.2.1.16.17.2.1 TableEntry not-accessible +::RMON2_MIB::alMatrixDSEntry::alMatrixDSTimeMark 1.3.6.1.2.1.16.17.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alMatrixDSEntry::alMatrixDSPkts 1.3.6.1.2.1.16.17.2.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSEntry::alMatrixDSOctets 1.3.6.1.2.1.16.17.2.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSEntry::alMatrixDSCreateTime 1.3.6.1.2.1.16.17.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlTable 1.3.6.1.2.1.16.17.3 Table not-accessible +::RMON2_MIB::alMatrixTopNControlEntry 1.3.6.1.2.1.16.17.3.1 TableEntry not-accessible +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlIndex 1.3.6.1.2.1.16.17.3.1.1 ASN1_Integer not-accessible +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlMatrixIndex 1.3.6.1.2.1.16.17.3.1.2 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlRateBase 1.3.6.1.2.1.16.17.3.1.3 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlTimeRemaining 1.3.6.1.2.1.16.17.3.1.4 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlGeneratedReports 1.3.6.1.2.1.16.17.3.1.5 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlDuration 1.3.6.1.2.1.16.17.3.1.6 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlRequestedSize 1.3.6.1.2.1.16.17.3.1.7 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlGrantedSize 1.3.6.1.2.1.16.17.3.1.8 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlStartTime 1.3.6.1.2.1.16.17.3.1.9 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlOwner 1.3.6.1.2.1.16.17.3.1.10 ASN1_OctetString read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlStatus 1.3.6.1.2.1.16.17.3.1.11 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNTable 1.3.6.1.2.1.16.17.4 Table not-accessible +::RMON2_MIB::alMatrixTopNEntry 1.3.6.1.2.1.16.17.4.1 TableEntry not-accessible +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNIndex 1.3.6.1.2.1.16.17.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNProtocolDirLocalIndex 1.3.6.1.2.1.16.17.4.1.2 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNSourceAddress 1.3.6.1.2.1.16.17.4.1.3 ASN1_OctetString read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNDestAddress 1.3.6.1.2.1.16.17.4.1.4 ASN1_OctetString read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNAppProtocolDirLocalIndex 1.3.6.1.2.1.16.17.4.1.5 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNPktRate 1.3.6.1.2.1.16.17.4.1.6 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNReversePktRate 1.3.6.1.2.1.16.17.4.1.7 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNOctetRate 1.3.6.1.2.1.16.17.4.1.8 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNReverseOctetRate 1.3.6.1.2.1.16.17.4.1.9 ASN1_Unsigned read-only +::RMON2_MIB::usrHistory 1.3.6.1.2.1.16.18 Group not-accessible +::RMON2_MIB::usrHistoryControlTable 1.3.6.1.2.1.16.18.1 Table not-accessible +::RMON2_MIB::usrHistoryControlEntry 1.3.6.1.2.1.16.18.1.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlIndex 1.3.6.1.2.1.16.18.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlObjects 1.3.6.1.2.1.16.18.1.1.2 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlBucketsRequested 1.3.6.1.2.1.16.18.1.1.3 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlBucketsGranted 1.3.6.1.2.1.16.18.1.1.4 ASN1_Integer read-only +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlInterval 1.3.6.1.2.1.16.18.1.1.5 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlOwner 1.3.6.1.2.1.16.18.1.1.6 ASN1_OctetString read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlStatus 1.3.6.1.2.1.16.18.1.1.7 ASN1_Integer read-create +::RMON2_MIB::usrHistoryObjectTable 1.3.6.1.2.1.16.18.2 Table not-accessible +::RMON2_MIB::usrHistoryObjectEntry 1.3.6.1.2.1.16.18.2.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectIndex 1.3.6.1.2.1.16.18.2.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectVariable 1.3.6.1.2.1.16.18.2.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectSampleType 1.3.6.1.2.1.16.18.2.1.3 ASN1_Integer read-create +::RMON2_MIB::usrHistoryTable 1.3.6.1.2.1.16.18.3 Table not-accessible +::RMON2_MIB::usrHistoryEntry 1.3.6.1.2.1.16.18.3.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryEntry::usrHistorySampleIndex 1.3.6.1.2.1.16.18.3.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryEntry::usrHistoryIntervalStart 1.3.6.1.2.1.16.18.3.1.2 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryIntervalEnd 1.3.6.1.2.1.16.18.3.1.3 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryAbsValue 1.3.6.1.2.1.16.18.3.1.4 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryValStatus 1.3.6.1.2.1.16.18.3.1.5 ASN1_Integer read-only +::RMON2_MIB::probeConfig 1.3.6.1.2.1.16.19 Group not-accessible +::RMON2_MIB::probeConfig::probeCapabilities 1.3.6.1.2.1.16.19.1 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeSoftwareRev 1.3.6.1.2.1.16.19.2 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeHardwareRev 1.3.6.1.2.1.16.19.3 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeDateTime 1.3.6.1.2.1.16.19.4 ASN1_OctetString read-write +::RMON2_MIB::probeConfig::probeResetControl 1.3.6.1.2.1.16.19.5 ASN1_Integer read-write +::RMON2_MIB::rmonConformance 1.3.6.1.2.1.16.20 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::rmon2MIBCompliances 1.3.6.1.2.1.16.20.1 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::rmon2MIBGroups 1.3.6.1.2.1.16.20.2 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/corba/SNMPv2_MIB.idl b/test/dumps/corba/SNMPv2_MIB.idl new file mode 100644 index 0000000..97fa41f --- /dev/null +++ b/test/dumps/corba/SNMPv2_MIB.idl @@ -0,0 +1,496 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba SNMPv2-MIB + * + * Derived from SNMPv2-MIB: + * The MIB module for SNMP entities. + * + * Copyright (C) The Internet Society (2002). This + * version of this MIB module is part of RFC 3418; + * see the RFC itself for full legal notices. + * + * Revision 2002-10-16 00:00: + * This revision of this MIB module was published as + * RFC 3418. + * + * Revision 1995-11-09 00:00: + * This revision of this MIB module was published as + * RFC 1907. + * + * Revision 1993-04-01 00:00: + * The initial revision of this MIB module was published + * as RFC 1450. + * + * $Id: SNMPv2_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SNMPv2_MIB_IDL_ +#define _SNMPv2_MIB_IDL_ + +#include +#include +#include +#include + +module SNMPv2_MIB { + + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::TimeTicksType TimeTicksType; + typedef SNMPv2_TC::DisplayStringType DisplayStringType; + typedef SNMPv2_TC::TestAndIncrType TestAndIncrType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + + const string moduleIdentity = "snmpMIB"; + const ASN1_ObjectIdentifier snmpMIB = "::SNMPv2_MIB::snmpMIB"; + + /* + The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + + LAST-UPDATED: 200210160000Z + + ORGANIZATION: + "IETF SNMPv3 Working Group" + + CONTACT-INFO: + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + + REVISION: "200210160000Z" + REVISION-DESCRIPTION: + "This revision of this MIB module was published as + RFC 3418." + + REVISION: "199511090000Z" + REVISION-DESCRIPTION: + "This revision of this MIB module was published as + RFC 1907." + + REVISION: "199304010000Z" + REVISION-DESCRIPTION: + "The initial revision of this MIB module was published + as RFC 1450." + + */ + + typedef ASN1_OctetString SysDescrType; + + typedef ASN1_OctetString SysContactType; + + typedef ASN1_OctetString SysNameType; + + typedef ASN1_OctetString SysLocationType; + + typedef ASN1_Integer SysServicesType; + + typedef ASN1_Integer SysORIndexType; + + typedef ASN1_Integer SnmpEnableAuthenTrapsType; + const SnmpEnableAuthenTrapsType SnmpEnableAuthenTrapsType_enabled = 1; + const SnmpEnableAuthenTrapsType SnmpEnableAuthenTrapsType_disabled = 2; + const string SnmpEnableAuthenTrapsType_NameNumberList = "enabled (1) , disabled (2)"; + + interface system : SNMPMgmt::SmiEntry { + + /* + 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. + */ + readonly attribute SysDescrType sysDescr; + + /* + 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'. + */ + readonly attribute ASN1_ObjectIdentifier sysObjectID; + + /* + The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized. + */ + readonly attribute TimeTicksType sysUpTime; + + /* + 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. + */ + attribute SysContactType sysContact; + + /* + 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. + */ + attribute SysNameType sysName; + + /* + The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string. + */ + attribute SysLocationType sysLocation; + + /* + A value which indicates the set of services that this + entity may potentially offer. 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. + */ + readonly attribute SysServicesType sysServices; + + /* + The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID. + */ + readonly attribute TimeStampType sysORLastChange; + + /* + The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows. + */ + SNMPMgmt::SmiTableIterator get_sysORTable(); + }; + + + /* + An entry (conceptual row) in the sysORTable. + */ + interface sysOREntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "sysORIndex"; + + /* + An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder. + */ + readonly attribute ASN1_ObjectIdentifier sysORID; + + /* + A textual description of the capabilities identified + by the corresponding instance of sysORID. + */ + readonly attribute DisplayStringType sysORDescr; + + /* + The value of sysUpTime at the time this conceptual + row was last instantiated. + */ + readonly attribute TimeStampType sysORUpTime; + }; + + interface snmp : SNMPMgmt::SmiEntry { + + /* + The total number of messages delivered to the SNMP + entity from the transport service. + */ + readonly attribute Counter32Type snmpInPkts; + + /* + The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version. + */ + readonly attribute Counter32Type snmpInBadVersions; + + /* + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value. + */ + readonly attribute Counter32Type snmpInBadCommunityNames; + + /* + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value. + */ + readonly attribute Counter32Type snmpInBadCommunityUses; + + /* + The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages. + */ + readonly attribute Counter32Type snmpInASNParseErrs; + + /* + 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. + */ + attribute SnmpEnableAuthenTrapsType snmpEnableAuthenTraps; + + /* + The total number of Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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. + */ + readonly attribute Counter32Type snmpSilentDrops; + + /* + The total number of Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned. + */ + readonly attribute Counter32Type snmpProxyDrops; + }; + + interface snmpTrap : SNMPMgmt::SmiEntry { + }; + + interface snmpSet : SNMPMgmt::SmiEntry { + + /* + An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP 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. + */ + attribute TestAndIncrType snmpSetSerialNo; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + */ + void coldStart ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + + /* + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + */ + void warmStart ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + + /* + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + */ + void authenticationFailure ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + */ + void pull_coldStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_coldStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + + /* + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + */ + void pull_warmStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_warmStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + + /* + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + */ + void pull_authenticationFailure ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_authenticationFailure ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + system create_system ( + in SysContactType sysContact, + in SysNameType sysName, + in SysLocationType sysLocation + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + snmp create_snmp ( + in SnmpEnableAuthenTrapsType snmpEnableAuthenTraps + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + snmpSet create_snmpSet ( + in TestAndIncrType snmpSetSerialNo + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + +}; + +#endif /* !_SNMPv2_MIB_IDL_ */ diff --git a/test/dumps/corba/SNMPv2_MIB.oid b/test/dumps/corba/SNMPv2_MIB.oid new file mode 100644 index 0000000..d2ad786 --- /dev/null +++ b/test/dumps/corba/SNMPv2_MIB.oid @@ -0,0 +1,38 @@ +::SNMPv2_MIB::system 1.3.6.1.2.1.1 Group not-accessible +::SNMPv2_MIB::system::sysDescr 1.3.6.1.2.1.1.1 ASN1_OctetString read-only +::SNMPv2_MIB::system::sysObjectID 1.3.6.1.2.1.1.2 ASN1_ObjectIdentifier read-only +::SNMPv2_MIB::system::sysUpTime 1.3.6.1.2.1.1.3 ASN1_Unsigned read-only +::SNMPv2_MIB::system::sysContact 1.3.6.1.2.1.1.4 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysName 1.3.6.1.2.1.1.5 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysLocation 1.3.6.1.2.1.1.6 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysServices 1.3.6.1.2.1.1.7 ASN1_Integer read-only +::SNMPv2_MIB::system::sysORLastChange 1.3.6.1.2.1.1.8 ASN1_Unsigned read-only +::SNMPv2_MIB::sysORTable 1.3.6.1.2.1.1.9 Table not-accessible +::SNMPv2_MIB::sysOREntry 1.3.6.1.2.1.1.9.1 TableEntry not-accessible +::SNMPv2_MIB::sysOREntry::sysORIndex 1.3.6.1.2.1.1.9.1.1 ASN1_Integer not-accessible +::SNMPv2_MIB::sysOREntry::sysORID 1.3.6.1.2.1.1.9.1.2 ASN1_ObjectIdentifier read-only +::SNMPv2_MIB::sysOREntry::sysORDescr 1.3.6.1.2.1.1.9.1.3 ASN1_OctetString read-only +::SNMPv2_MIB::sysOREntry::sysORUpTime 1.3.6.1.2.1.1.9.1.4 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp 1.3.6.1.2.1.11 Group not-accessible +::SNMPv2_MIB::snmp::snmpInPkts 1.3.6.1.2.1.11.1 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadVersions 1.3.6.1.2.1.11.3 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadCommunityNames 1.3.6.1.2.1.11.4 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadCommunityUses 1.3.6.1.2.1.11.5 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInASNParseErrs 1.3.6.1.2.1.11.6 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpEnableAuthenTraps 1.3.6.1.2.1.11.30 ASN1_Integer read-write +::SNMPv2_MIB::snmp::snmpSilentDrops 1.3.6.1.2.1.11.31 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpProxyDrops 1.3.6.1.2.1.11.32 ASN1_Unsigned read-only +::SNMPv2_MIB::snmpMIB 1.3.6.1.6.3.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBObjects 1.3.6.1.6.3.1.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpTrap 1.3.6.1.6.3.1.1.4 Group not-accessible +::SNMPv2_MIB::snmpTrap::snmpTrapOID 1.3.6.1.6.3.1.1.4.1 ASN1_ObjectIdentifier accessible-for-notify +::SNMPv2_MIB::snmpTrap::snmpTrapEnterprise 1.3.6.1.6.3.1.1.4.3 ASN1_ObjectIdentifier accessible-for-notify +::SNMPv2_MIB::snmpTraps 1.3.6.1.6.3.1.1.5 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpTraps::coldStart 1.3.6.1.6.3.1.1.5.1 Notification not-accessible +::SNMPv2_MIB::snmpTraps::warmStart 1.3.6.1.6.3.1.1.5.2 Notification not-accessible +::SNMPv2_MIB::snmpTraps::authenticationFailure 1.3.6.1.6.3.1.1.5.5 Notification not-accessible +::SNMPv2_MIB::snmpSet 1.3.6.1.6.3.1.1.6 Group not-accessible +::SNMPv2_MIB::snmpSet::snmpSetSerialNo 1.3.6.1.6.3.1.1.6.1 ASN1_Integer read-write +::SNMPv2_MIB::snmpMIBConformance 1.3.6.1.6.3.1.2 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBCompliances 1.3.6.1.6.3.1.2.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBGroups 1.3.6.1.6.3.1.2.2 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/identifiers/IF-MIB b/test/dumps/identifiers/IF-MIB new file mode 100644 index 0000000..cffd98c --- /dev/null +++ b/test/dumps/identifiers/IF-MIB @@ -0,0 +1,96 @@ +# IF-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +IF-MIB OwnerString type +IF-MIB InterfaceIndex type +IF-MIB InterfaceIndexOrZero type +IF-MIB interfaces node 1.3.6.1.2.1.2 +IF-MIB ifNumber scalar 1.3.6.1.2.1.2.1 +IF-MIB ifTable table 1.3.6.1.2.1.2.2 +IF-MIB ifEntry row 1.3.6.1.2.1.2.2.1 +IF-MIB ifIndex column 1.3.6.1.2.1.2.2.1.1 +IF-MIB ifDescr column 1.3.6.1.2.1.2.2.1.2 +IF-MIB ifType column 1.3.6.1.2.1.2.2.1.3 +IF-MIB ifMtu column 1.3.6.1.2.1.2.2.1.4 +IF-MIB ifSpeed column 1.3.6.1.2.1.2.2.1.5 +IF-MIB ifPhysAddress column 1.3.6.1.2.1.2.2.1.6 +IF-MIB ifAdminStatus column 1.3.6.1.2.1.2.2.1.7 +IF-MIB ifOperStatus column 1.3.6.1.2.1.2.2.1.8 +IF-MIB ifLastChange column 1.3.6.1.2.1.2.2.1.9 +IF-MIB ifInOctets column 1.3.6.1.2.1.2.2.1.10 +IF-MIB ifInUcastPkts column 1.3.6.1.2.1.2.2.1.11 +IF-MIB ifInNUcastPkts column 1.3.6.1.2.1.2.2.1.12 +IF-MIB ifInDiscards column 1.3.6.1.2.1.2.2.1.13 +IF-MIB ifInErrors column 1.3.6.1.2.1.2.2.1.14 +IF-MIB ifInUnknownProtos column 1.3.6.1.2.1.2.2.1.15 +IF-MIB ifOutOctets column 1.3.6.1.2.1.2.2.1.16 +IF-MIB ifOutUcastPkts column 1.3.6.1.2.1.2.2.1.17 +IF-MIB ifOutNUcastPkts column 1.3.6.1.2.1.2.2.1.18 +IF-MIB ifOutDiscards column 1.3.6.1.2.1.2.2.1.19 +IF-MIB ifOutErrors column 1.3.6.1.2.1.2.2.1.20 +IF-MIB ifOutQLen column 1.3.6.1.2.1.2.2.1.21 +IF-MIB ifSpecific column 1.3.6.1.2.1.2.2.1.22 +IF-MIB ifMIB node 1.3.6.1.2.1.31 +IF-MIB ifMIBObjects node 1.3.6.1.2.1.31.1 +IF-MIB ifXTable table 1.3.6.1.2.1.31.1.1 +IF-MIB ifXEntry row 1.3.6.1.2.1.31.1.1.1 +IF-MIB ifName column 1.3.6.1.2.1.31.1.1.1.1 +IF-MIB ifInMulticastPkts column 1.3.6.1.2.1.31.1.1.1.2 +IF-MIB ifInBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.3 +IF-MIB ifOutMulticastPkts column 1.3.6.1.2.1.31.1.1.1.4 +IF-MIB ifOutBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.5 +IF-MIB ifHCInOctets column 1.3.6.1.2.1.31.1.1.1.6 +IF-MIB ifHCInUcastPkts column 1.3.6.1.2.1.31.1.1.1.7 +IF-MIB ifHCInMulticastPkts column 1.3.6.1.2.1.31.1.1.1.8 +IF-MIB ifHCInBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.9 +IF-MIB ifHCOutOctets column 1.3.6.1.2.1.31.1.1.1.10 +IF-MIB ifHCOutUcastPkts column 1.3.6.1.2.1.31.1.1.1.11 +IF-MIB ifHCOutMulticastPkts column 1.3.6.1.2.1.31.1.1.1.12 +IF-MIB ifHCOutBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.13 +IF-MIB ifLinkUpDownTrapEnable column 1.3.6.1.2.1.31.1.1.1.14 +IF-MIB ifHighSpeed column 1.3.6.1.2.1.31.1.1.1.15 +IF-MIB ifPromiscuousMode column 1.3.6.1.2.1.31.1.1.1.16 +IF-MIB ifConnectorPresent column 1.3.6.1.2.1.31.1.1.1.17 +IF-MIB ifAlias column 1.3.6.1.2.1.31.1.1.1.18 +IF-MIB ifCounterDiscontinuityTime column 1.3.6.1.2.1.31.1.1.1.19 +IF-MIB ifStackTable table 1.3.6.1.2.1.31.1.2 +IF-MIB ifStackEntry row 1.3.6.1.2.1.31.1.2.1 +IF-MIB ifStackHigherLayer column 1.3.6.1.2.1.31.1.2.1.1 +IF-MIB ifStackLowerLayer column 1.3.6.1.2.1.31.1.2.1.2 +IF-MIB ifStackStatus column 1.3.6.1.2.1.31.1.2.1.3 +IF-MIB ifTestTable table 1.3.6.1.2.1.31.1.3 +IF-MIB ifTestEntry row 1.3.6.1.2.1.31.1.3.1 +IF-MIB ifTestId column 1.3.6.1.2.1.31.1.3.1.1 +IF-MIB ifTestStatus column 1.3.6.1.2.1.31.1.3.1.2 +IF-MIB ifTestType column 1.3.6.1.2.1.31.1.3.1.3 +IF-MIB ifTestResult column 1.3.6.1.2.1.31.1.3.1.4 +IF-MIB ifTestCode column 1.3.6.1.2.1.31.1.3.1.5 +IF-MIB ifTestOwner column 1.3.6.1.2.1.31.1.3.1.6 +IF-MIB ifRcvAddressTable table 1.3.6.1.2.1.31.1.4 +IF-MIB ifRcvAddressEntry row 1.3.6.1.2.1.31.1.4.1 +IF-MIB ifRcvAddressAddress column 1.3.6.1.2.1.31.1.4.1.1 +IF-MIB ifRcvAddressStatus column 1.3.6.1.2.1.31.1.4.1.2 +IF-MIB ifRcvAddressType column 1.3.6.1.2.1.31.1.4.1.3 +IF-MIB ifTableLastChange scalar 1.3.6.1.2.1.31.1.5 +IF-MIB ifStackLastChange scalar 1.3.6.1.2.1.31.1.6 +IF-MIB ifConformance node 1.3.6.1.2.1.31.2 +IF-MIB ifGroups node 1.3.6.1.2.1.31.2.1 +IF-MIB ifGeneralGroup group 1.3.6.1.2.1.31.2.1.1 +IF-MIB ifFixedLengthGroup group 1.3.6.1.2.1.31.2.1.2 +IF-MIB ifHCFixedLengthGroup group 1.3.6.1.2.1.31.2.1.3 +IF-MIB ifPacketGroup group 1.3.6.1.2.1.31.2.1.4 +IF-MIB ifHCPacketGroup group 1.3.6.1.2.1.31.2.1.5 +IF-MIB ifVHCPacketGroup group 1.3.6.1.2.1.31.2.1.6 +IF-MIB ifRcvAddressGroup group 1.3.6.1.2.1.31.2.1.7 +IF-MIB ifTestGroup group 1.3.6.1.2.1.31.2.1.8 +IF-MIB ifStackGroup group 1.3.6.1.2.1.31.2.1.9 +IF-MIB ifGeneralInformationGroup group 1.3.6.1.2.1.31.2.1.10 +IF-MIB ifStackGroup2 group 1.3.6.1.2.1.31.2.1.11 +IF-MIB ifOldObjectsGroup group 1.3.6.1.2.1.31.2.1.12 +IF-MIB ifCounterDiscontinuityGroup group 1.3.6.1.2.1.31.2.1.13 +IF-MIB linkUpDownNotificationsGroup group 1.3.6.1.2.1.31.2.1.14 +IF-MIB ifCompliances node 1.3.6.1.2.1.31.2.2 +IF-MIB ifCompliance compliance 1.3.6.1.2.1.31.2.2.1 +IF-MIB ifCompliance2 compliance 1.3.6.1.2.1.31.2.2.2 +IF-MIB ifCompliance3 compliance 1.3.6.1.2.1.31.2.2.3 +IF-MIB linkDown notification 1.3.6.1.6.3.1.1.5.3 +IF-MIB linkUp notification 1.3.6.1.6.3.1.1.5.4 diff --git a/test/dumps/identifiers/MAU-MIB b/test/dumps/identifiers/MAU-MIB new file mode 100644 index 0000000..df68803 --- /dev/null +++ b/test/dumps/identifiers/MAU-MIB @@ -0,0 +1,92 @@ +# MAU-MIB list of identifiers (generated by smidump 0.4.5) + +MAU-MIB JackType type +MAU-MIB snmpDot3MauMgt node 1.3.6.1.2.1.26 +MAU-MIB snmpDot3MauTraps node 1.3.6.1.2.1.26.0 +MAU-MIB rpMauJabberTrap notification 1.3.6.1.2.1.26.0.1 +MAU-MIB ifMauJabberTrap notification 1.3.6.1.2.1.26.0.2 +MAU-MIB dot3RpMauBasicGroup node 1.3.6.1.2.1.26.1 +MAU-MIB rpMauTable table 1.3.6.1.2.1.26.1.1 +MAU-MIB rpMauEntry row 1.3.6.1.2.1.26.1.1.1 +MAU-MIB rpMauGroupIndex column 1.3.6.1.2.1.26.1.1.1.1 +MAU-MIB rpMauPortIndex column 1.3.6.1.2.1.26.1.1.1.2 +MAU-MIB rpMauIndex column 1.3.6.1.2.1.26.1.1.1.3 +MAU-MIB rpMauType column 1.3.6.1.2.1.26.1.1.1.4 +MAU-MIB rpMauStatus column 1.3.6.1.2.1.26.1.1.1.5 +MAU-MIB rpMauMediaAvailable column 1.3.6.1.2.1.26.1.1.1.6 +MAU-MIB rpMauMediaAvailableStateExits column 1.3.6.1.2.1.26.1.1.1.7 +MAU-MIB rpMauJabberState column 1.3.6.1.2.1.26.1.1.1.8 +MAU-MIB rpMauJabberingStateEnters column 1.3.6.1.2.1.26.1.1.1.9 +MAU-MIB rpMauFalseCarriers column 1.3.6.1.2.1.26.1.1.1.10 +MAU-MIB rpJackTable table 1.3.6.1.2.1.26.1.2 +MAU-MIB rpJackEntry row 1.3.6.1.2.1.26.1.2.1 +MAU-MIB rpJackIndex column 1.3.6.1.2.1.26.1.2.1.1 +MAU-MIB rpJackType column 1.3.6.1.2.1.26.1.2.1.2 +MAU-MIB dot3IfMauBasicGroup node 1.3.6.1.2.1.26.2 +MAU-MIB ifMauTable table 1.3.6.1.2.1.26.2.1 +MAU-MIB ifMauEntry row 1.3.6.1.2.1.26.2.1.1 +MAU-MIB ifMauIfIndex column 1.3.6.1.2.1.26.2.1.1.1 +MAU-MIB ifMauIndex column 1.3.6.1.2.1.26.2.1.1.2 +MAU-MIB ifMauType column 1.3.6.1.2.1.26.2.1.1.3 +MAU-MIB ifMauStatus column 1.3.6.1.2.1.26.2.1.1.4 +MAU-MIB ifMauMediaAvailable column 1.3.6.1.2.1.26.2.1.1.5 +MAU-MIB ifMauMediaAvailableStateExits column 1.3.6.1.2.1.26.2.1.1.6 +MAU-MIB ifMauJabberState column 1.3.6.1.2.1.26.2.1.1.7 +MAU-MIB ifMauJabberingStateEnters column 1.3.6.1.2.1.26.2.1.1.8 +MAU-MIB ifMauFalseCarriers column 1.3.6.1.2.1.26.2.1.1.9 +MAU-MIB ifMauTypeList column 1.3.6.1.2.1.26.2.1.1.10 +MAU-MIB ifMauDefaultType column 1.3.6.1.2.1.26.2.1.1.11 +MAU-MIB ifMauAutoNegSupported column 1.3.6.1.2.1.26.2.1.1.12 +MAU-MIB ifMauTypeListBits column 1.3.6.1.2.1.26.2.1.1.13 +MAU-MIB ifMauHCFalseCarriers column 1.3.6.1.2.1.26.2.1.1.14 +MAU-MIB ifJackTable table 1.3.6.1.2.1.26.2.2 +MAU-MIB ifJackEntry row 1.3.6.1.2.1.26.2.2.1 +MAU-MIB ifJackIndex column 1.3.6.1.2.1.26.2.2.1.1 +MAU-MIB ifJackType column 1.3.6.1.2.1.26.2.2.1.2 +MAU-MIB dot3BroadMauBasicGroup node 1.3.6.1.2.1.26.3 +MAU-MIB broadMauBasicTable table 1.3.6.1.2.1.26.3.1 +MAU-MIB broadMauBasicEntry row 1.3.6.1.2.1.26.3.1.1 +MAU-MIB broadMauIfIndex column 1.3.6.1.2.1.26.3.1.1.1 +MAU-MIB broadMauIndex column 1.3.6.1.2.1.26.3.1.1.2 +MAU-MIB broadMauXmtRcvSplitType column 1.3.6.1.2.1.26.3.1.1.3 +MAU-MIB broadMauXmtCarrierFreq column 1.3.6.1.2.1.26.3.1.1.4 +MAU-MIB broadMauTranslationFreq column 1.3.6.1.2.1.26.3.1.1.5 +MAU-MIB dot3IfMauAutoNegGroup node 1.3.6.1.2.1.26.5 +MAU-MIB ifMauAutoNegTable table 1.3.6.1.2.1.26.5.1 +MAU-MIB ifMauAutoNegEntry row 1.3.6.1.2.1.26.5.1.1 +MAU-MIB ifMauAutoNegAdminStatus column 1.3.6.1.2.1.26.5.1.1.1 +MAU-MIB ifMauAutoNegRemoteSignaling column 1.3.6.1.2.1.26.5.1.1.2 +MAU-MIB ifMauAutoNegConfig column 1.3.6.1.2.1.26.5.1.1.4 +MAU-MIB ifMauAutoNegCapability column 1.3.6.1.2.1.26.5.1.1.5 +MAU-MIB ifMauAutoNegCapAdvertised column 1.3.6.1.2.1.26.5.1.1.6 +MAU-MIB ifMauAutoNegCapReceived column 1.3.6.1.2.1.26.5.1.1.7 +MAU-MIB ifMauAutoNegRestart column 1.3.6.1.2.1.26.5.1.1.8 +MAU-MIB ifMauAutoNegCapabilityBits column 1.3.6.1.2.1.26.5.1.1.9 +MAU-MIB ifMauAutoNegCapAdvertisedBits column 1.3.6.1.2.1.26.5.1.1.10 +MAU-MIB ifMauAutoNegCapReceivedBits column 1.3.6.1.2.1.26.5.1.1.11 +MAU-MIB ifMauAutoNegRemoteFaultAdvertised column 1.3.6.1.2.1.26.5.1.1.12 +MAU-MIB ifMauAutoNegRemoteFaultReceived column 1.3.6.1.2.1.26.5.1.1.13 +MAU-MIB mauMod node 1.3.6.1.2.1.26.6 +MAU-MIB mauModConf node 1.3.6.1.2.1.26.6.1 +MAU-MIB mauModCompls node 1.3.6.1.2.1.26.6.1.1 +MAU-MIB mauModRpCompl compliance 1.3.6.1.2.1.26.6.1.1.1 +MAU-MIB mauModIfCompl compliance 1.3.6.1.2.1.26.6.1.1.2 +MAU-MIB mauModIfCompl2 compliance 1.3.6.1.2.1.26.6.1.1.3 +MAU-MIB mauModRpCompl2 compliance 1.3.6.1.2.1.26.6.1.1.4 +MAU-MIB mauModIfCompl3 compliance 1.3.6.1.2.1.26.6.1.1.5 +MAU-MIB mauModObjGrps node 1.3.6.1.2.1.26.6.1.2 +MAU-MIB mauRpGrpBasic group 1.3.6.1.2.1.26.6.1.2.1 +MAU-MIB mauRpGrp100Mbs group 1.3.6.1.2.1.26.6.1.2.2 +MAU-MIB mauRpGrpJack group 1.3.6.1.2.1.26.6.1.2.3 +MAU-MIB mauIfGrpBasic group 1.3.6.1.2.1.26.6.1.2.4 +MAU-MIB mauIfGrp100Mbs group 1.3.6.1.2.1.26.6.1.2.5 +MAU-MIB mauIfGrpJack group 1.3.6.1.2.1.26.6.1.2.6 +MAU-MIB mauIfGrpAutoNeg group 1.3.6.1.2.1.26.6.1.2.7 +MAU-MIB mauBroadBasic group 1.3.6.1.2.1.26.6.1.2.8 +MAU-MIB mauIfGrpHighCapacity group 1.3.6.1.2.1.26.6.1.2.9 +MAU-MIB mauIfGrpAutoNeg2 group 1.3.6.1.2.1.26.6.1.2.10 +MAU-MIB mauIfGrpAutoNeg1000Mbps group 1.3.6.1.2.1.26.6.1.2.11 +MAU-MIB mauIfGrpHCStats group 1.3.6.1.2.1.26.6.1.2.12 +MAU-MIB mauModNotGrps node 1.3.6.1.2.1.26.6.1.3 +MAU-MIB rpMauNotifications group 1.3.6.1.2.1.26.6.1.3.1 +MAU-MIB ifMauNotifications group 1.3.6.1.2.1.26.6.1.3.2 diff --git a/test/dumps/identifiers/Makefile.am b/test/dumps/identifiers/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/identifiers/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/identifiers/Makefile.in b/test/dumps/identifiers/Makefile.in new file mode 100644 index 0000000..abc8c74 --- /dev/null +++ b/test/dumps/identifiers/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/identifiers +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/identifiers/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/identifiers/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/identifiers/RMON2-MIB b/test/dumps/identifiers/RMON2-MIB new file mode 100644 index 0000000..1fdb8ad --- /dev/null +++ b/test/dumps/identifiers/RMON2-MIB @@ -0,0 +1,303 @@ +# RMON2-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +RMON2-MIB ZeroBasedCounter32 type +RMON2-MIB LastCreateTime type +RMON2-MIB TimeFilter type +RMON2-MIB DataSource type +RMON2-MIB ControlString type +RMON2-MIB rmon node 1.3.6.1.2.1.16 +RMON2-MIB etherStats2Table table 1.3.6.1.2.1.16.1.4 +RMON2-MIB etherStats2Entry row 1.3.6.1.2.1.16.1.4.1 +RMON2-MIB etherStatsDroppedFrames column 1.3.6.1.2.1.16.1.4.1.1 +RMON2-MIB etherStatsCreateTime column 1.3.6.1.2.1.16.1.4.1.2 +RMON2-MIB tokenRingMLStats2Table table 1.3.6.1.2.1.16.1.5 +RMON2-MIB tokenRingMLStats2Entry row 1.3.6.1.2.1.16.1.5.1 +RMON2-MIB tokenRingMLStatsDroppedFrames column 1.3.6.1.2.1.16.1.5.1.1 +RMON2-MIB tokenRingMLStatsCreateTime column 1.3.6.1.2.1.16.1.5.1.2 +RMON2-MIB tokenRingPStats2Table table 1.3.6.1.2.1.16.1.6 +RMON2-MIB tokenRingPStats2Entry row 1.3.6.1.2.1.16.1.6.1 +RMON2-MIB tokenRingPStatsDroppedFrames column 1.3.6.1.2.1.16.1.6.1.1 +RMON2-MIB tokenRingPStatsCreateTime column 1.3.6.1.2.1.16.1.6.1.2 +RMON2-MIB historyControl2Table table 1.3.6.1.2.1.16.2.5 +RMON2-MIB historyControl2Entry row 1.3.6.1.2.1.16.2.5.1 +RMON2-MIB historyControlDroppedFrames column 1.3.6.1.2.1.16.2.5.1.1 +RMON2-MIB hostControl2Table table 1.3.6.1.2.1.16.4.4 +RMON2-MIB hostControl2Entry row 1.3.6.1.2.1.16.4.4.1 +RMON2-MIB hostControlDroppedFrames column 1.3.6.1.2.1.16.4.4.1.1 +RMON2-MIB hostControlCreateTime column 1.3.6.1.2.1.16.4.4.1.2 +RMON2-MIB matrixControl2Table table 1.3.6.1.2.1.16.6.4 +RMON2-MIB matrixControl2Entry row 1.3.6.1.2.1.16.6.4.1 +RMON2-MIB matrixControlDroppedFrames column 1.3.6.1.2.1.16.6.4.1.1 +RMON2-MIB matrixControlCreateTime column 1.3.6.1.2.1.16.6.4.1.2 +RMON2-MIB channel2Table table 1.3.6.1.2.1.16.7.3 +RMON2-MIB channel2Entry row 1.3.6.1.2.1.16.7.3.1 +RMON2-MIB channelDroppedFrames column 1.3.6.1.2.1.16.7.3.1.1 +RMON2-MIB channelCreateTime column 1.3.6.1.2.1.16.7.3.1.2 +RMON2-MIB filter2Table table 1.3.6.1.2.1.16.7.4 +RMON2-MIB filter2Entry row 1.3.6.1.2.1.16.7.4.1 +RMON2-MIB filterProtocolDirDataLocalIndex column 1.3.6.1.2.1.16.7.4.1.1 +RMON2-MIB filterProtocolDirLocalIndex column 1.3.6.1.2.1.16.7.4.1.2 +RMON2-MIB ringStationControl2Table table 1.3.6.1.2.1.16.10.7 +RMON2-MIB ringStationControl2Entry row 1.3.6.1.2.1.16.10.7.1 +RMON2-MIB ringStationControlDroppedFrames column 1.3.6.1.2.1.16.10.7.1.1 +RMON2-MIB ringStationControlCreateTime column 1.3.6.1.2.1.16.10.7.1.2 +RMON2-MIB sourceRoutingStats2Table table 1.3.6.1.2.1.16.10.8 +RMON2-MIB sourceRoutingStats2Entry row 1.3.6.1.2.1.16.10.8.1 +RMON2-MIB sourceRoutingStatsDroppedFrames column 1.3.6.1.2.1.16.10.8.1.1 +RMON2-MIB sourceRoutingStatsCreateTime column 1.3.6.1.2.1.16.10.8.1.2 +RMON2-MIB protocolDir node 1.3.6.1.2.1.16.11 +RMON2-MIB protocolDirLastChange scalar 1.3.6.1.2.1.16.11.1 +RMON2-MIB protocolDirTable table 1.3.6.1.2.1.16.11.2 +RMON2-MIB protocolDirEntry row 1.3.6.1.2.1.16.11.2.1 +RMON2-MIB protocolDirID column 1.3.6.1.2.1.16.11.2.1.1 +RMON2-MIB protocolDirParameters column 1.3.6.1.2.1.16.11.2.1.2 +RMON2-MIB protocolDirLocalIndex column 1.3.6.1.2.1.16.11.2.1.3 +RMON2-MIB protocolDirDescr column 1.3.6.1.2.1.16.11.2.1.4 +RMON2-MIB protocolDirType column 1.3.6.1.2.1.16.11.2.1.5 +RMON2-MIB protocolDirAddressMapConfig column 1.3.6.1.2.1.16.11.2.1.6 +RMON2-MIB protocolDirHostConfig column 1.3.6.1.2.1.16.11.2.1.7 +RMON2-MIB protocolDirMatrixConfig column 1.3.6.1.2.1.16.11.2.1.8 +RMON2-MIB protocolDirOwner column 1.3.6.1.2.1.16.11.2.1.9 +RMON2-MIB protocolDirStatus column 1.3.6.1.2.1.16.11.2.1.10 +RMON2-MIB protocolDist node 1.3.6.1.2.1.16.12 +RMON2-MIB protocolDistControlTable table 1.3.6.1.2.1.16.12.1 +RMON2-MIB protocolDistControlEntry row 1.3.6.1.2.1.16.12.1.1 +RMON2-MIB protocolDistControlIndex column 1.3.6.1.2.1.16.12.1.1.1 +RMON2-MIB protocolDistControlDataSource column 1.3.6.1.2.1.16.12.1.1.2 +RMON2-MIB protocolDistControlDroppedFrames column 1.3.6.1.2.1.16.12.1.1.3 +RMON2-MIB protocolDistControlCreateTime column 1.3.6.1.2.1.16.12.1.1.4 +RMON2-MIB protocolDistControlOwner column 1.3.6.1.2.1.16.12.1.1.5 +RMON2-MIB protocolDistControlStatus column 1.3.6.1.2.1.16.12.1.1.6 +RMON2-MIB protocolDistStatsTable table 1.3.6.1.2.1.16.12.2 +RMON2-MIB protocolDistStatsEntry row 1.3.6.1.2.1.16.12.2.1 +RMON2-MIB protocolDistStatsPkts column 1.3.6.1.2.1.16.12.2.1.1 +RMON2-MIB protocolDistStatsOctets column 1.3.6.1.2.1.16.12.2.1.2 +RMON2-MIB addressMap node 1.3.6.1.2.1.16.13 +RMON2-MIB addressMapInserts scalar 1.3.6.1.2.1.16.13.1 +RMON2-MIB addressMapDeletes scalar 1.3.6.1.2.1.16.13.2 +RMON2-MIB addressMapMaxDesiredEntries scalar 1.3.6.1.2.1.16.13.3 +RMON2-MIB addressMapControlTable table 1.3.6.1.2.1.16.13.4 +RMON2-MIB addressMapControlEntry row 1.3.6.1.2.1.16.13.4.1 +RMON2-MIB addressMapControlIndex column 1.3.6.1.2.1.16.13.4.1.1 +RMON2-MIB addressMapControlDataSource column 1.3.6.1.2.1.16.13.4.1.2 +RMON2-MIB addressMapControlDroppedFrames column 1.3.6.1.2.1.16.13.4.1.3 +RMON2-MIB addressMapControlOwner column 1.3.6.1.2.1.16.13.4.1.4 +RMON2-MIB addressMapControlStatus column 1.3.6.1.2.1.16.13.4.1.5 +RMON2-MIB addressMapTable table 1.3.6.1.2.1.16.13.5 +RMON2-MIB addressMapEntry row 1.3.6.1.2.1.16.13.5.1 +RMON2-MIB addressMapTimeMark column 1.3.6.1.2.1.16.13.5.1.1 +RMON2-MIB addressMapNetworkAddress column 1.3.6.1.2.1.16.13.5.1.2 +RMON2-MIB addressMapSource column 1.3.6.1.2.1.16.13.5.1.3 +RMON2-MIB addressMapPhysicalAddress column 1.3.6.1.2.1.16.13.5.1.4 +RMON2-MIB addressMapLastChange column 1.3.6.1.2.1.16.13.5.1.5 +RMON2-MIB nlHost node 1.3.6.1.2.1.16.14 +RMON2-MIB hlHostControlTable table 1.3.6.1.2.1.16.14.1 +RMON2-MIB hlHostControlEntry row 1.3.6.1.2.1.16.14.1.1 +RMON2-MIB hlHostControlIndex column 1.3.6.1.2.1.16.14.1.1.1 +RMON2-MIB hlHostControlDataSource column 1.3.6.1.2.1.16.14.1.1.2 +RMON2-MIB hlHostControlNlDroppedFrames column 1.3.6.1.2.1.16.14.1.1.3 +RMON2-MIB hlHostControlNlInserts column 1.3.6.1.2.1.16.14.1.1.4 +RMON2-MIB hlHostControlNlDeletes column 1.3.6.1.2.1.16.14.1.1.5 +RMON2-MIB hlHostControlNlMaxDesiredEntries column 1.3.6.1.2.1.16.14.1.1.6 +RMON2-MIB hlHostControlAlDroppedFrames column 1.3.6.1.2.1.16.14.1.1.7 +RMON2-MIB hlHostControlAlInserts column 1.3.6.1.2.1.16.14.1.1.8 +RMON2-MIB hlHostControlAlDeletes column 1.3.6.1.2.1.16.14.1.1.9 +RMON2-MIB hlHostControlAlMaxDesiredEntries column 1.3.6.1.2.1.16.14.1.1.10 +RMON2-MIB hlHostControlOwner column 1.3.6.1.2.1.16.14.1.1.11 +RMON2-MIB hlHostControlStatus column 1.3.6.1.2.1.16.14.1.1.12 +RMON2-MIB nlHostTable table 1.3.6.1.2.1.16.14.2 +RMON2-MIB nlHostEntry row 1.3.6.1.2.1.16.14.2.1 +RMON2-MIB nlHostTimeMark column 1.3.6.1.2.1.16.14.2.1.1 +RMON2-MIB nlHostAddress column 1.3.6.1.2.1.16.14.2.1.2 +RMON2-MIB nlHostInPkts column 1.3.6.1.2.1.16.14.2.1.3 +RMON2-MIB nlHostOutPkts column 1.3.6.1.2.1.16.14.2.1.4 +RMON2-MIB nlHostInOctets column 1.3.6.1.2.1.16.14.2.1.5 +RMON2-MIB nlHostOutOctets column 1.3.6.1.2.1.16.14.2.1.6 +RMON2-MIB nlHostOutMacNonUnicastPkts column 1.3.6.1.2.1.16.14.2.1.7 +RMON2-MIB nlHostCreateTime column 1.3.6.1.2.1.16.14.2.1.8 +RMON2-MIB nlMatrix node 1.3.6.1.2.1.16.15 +RMON2-MIB hlMatrixControlTable table 1.3.6.1.2.1.16.15.1 +RMON2-MIB hlMatrixControlEntry row 1.3.6.1.2.1.16.15.1.1 +RMON2-MIB hlMatrixControlIndex column 1.3.6.1.2.1.16.15.1.1.1 +RMON2-MIB hlMatrixControlDataSource column 1.3.6.1.2.1.16.15.1.1.2 +RMON2-MIB hlMatrixControlNlDroppedFrames column 1.3.6.1.2.1.16.15.1.1.3 +RMON2-MIB hlMatrixControlNlInserts column 1.3.6.1.2.1.16.15.1.1.4 +RMON2-MIB hlMatrixControlNlDeletes column 1.3.6.1.2.1.16.15.1.1.5 +RMON2-MIB hlMatrixControlNlMaxDesiredEntries column 1.3.6.1.2.1.16.15.1.1.6 +RMON2-MIB hlMatrixControlAlDroppedFrames column 1.3.6.1.2.1.16.15.1.1.7 +RMON2-MIB hlMatrixControlAlInserts column 1.3.6.1.2.1.16.15.1.1.8 +RMON2-MIB hlMatrixControlAlDeletes column 1.3.6.1.2.1.16.15.1.1.9 +RMON2-MIB hlMatrixControlAlMaxDesiredEntries column 1.3.6.1.2.1.16.15.1.1.10 +RMON2-MIB hlMatrixControlOwner column 1.3.6.1.2.1.16.15.1.1.11 +RMON2-MIB hlMatrixControlStatus column 1.3.6.1.2.1.16.15.1.1.12 +RMON2-MIB nlMatrixSDTable table 1.3.6.1.2.1.16.15.2 +RMON2-MIB nlMatrixSDEntry row 1.3.6.1.2.1.16.15.2.1 +RMON2-MIB nlMatrixSDTimeMark column 1.3.6.1.2.1.16.15.2.1.1 +RMON2-MIB nlMatrixSDSourceAddress column 1.3.6.1.2.1.16.15.2.1.2 +RMON2-MIB nlMatrixSDDestAddress column 1.3.6.1.2.1.16.15.2.1.3 +RMON2-MIB nlMatrixSDPkts column 1.3.6.1.2.1.16.15.2.1.4 +RMON2-MIB nlMatrixSDOctets column 1.3.6.1.2.1.16.15.2.1.5 +RMON2-MIB nlMatrixSDCreateTime column 1.3.6.1.2.1.16.15.2.1.6 +RMON2-MIB nlMatrixDSTable table 1.3.6.1.2.1.16.15.3 +RMON2-MIB nlMatrixDSEntry row 1.3.6.1.2.1.16.15.3.1 +RMON2-MIB nlMatrixDSTimeMark column 1.3.6.1.2.1.16.15.3.1.1 +RMON2-MIB nlMatrixDSSourceAddress column 1.3.6.1.2.1.16.15.3.1.2 +RMON2-MIB nlMatrixDSDestAddress column 1.3.6.1.2.1.16.15.3.1.3 +RMON2-MIB nlMatrixDSPkts column 1.3.6.1.2.1.16.15.3.1.4 +RMON2-MIB nlMatrixDSOctets column 1.3.6.1.2.1.16.15.3.1.5 +RMON2-MIB nlMatrixDSCreateTime column 1.3.6.1.2.1.16.15.3.1.6 +RMON2-MIB nlMatrixTopNControlTable table 1.3.6.1.2.1.16.15.4 +RMON2-MIB nlMatrixTopNControlEntry row 1.3.6.1.2.1.16.15.4.1 +RMON2-MIB nlMatrixTopNControlIndex column 1.3.6.1.2.1.16.15.4.1.1 +RMON2-MIB nlMatrixTopNControlMatrixIndex column 1.3.6.1.2.1.16.15.4.1.2 +RMON2-MIB nlMatrixTopNControlRateBase column 1.3.6.1.2.1.16.15.4.1.3 +RMON2-MIB nlMatrixTopNControlTimeRemaining column 1.3.6.1.2.1.16.15.4.1.4 +RMON2-MIB nlMatrixTopNControlGeneratedReports column 1.3.6.1.2.1.16.15.4.1.5 +RMON2-MIB nlMatrixTopNControlDuration column 1.3.6.1.2.1.16.15.4.1.6 +RMON2-MIB nlMatrixTopNControlRequestedSize column 1.3.6.1.2.1.16.15.4.1.7 +RMON2-MIB nlMatrixTopNControlGrantedSize column 1.3.6.1.2.1.16.15.4.1.8 +RMON2-MIB nlMatrixTopNControlStartTime column 1.3.6.1.2.1.16.15.4.1.9 +RMON2-MIB nlMatrixTopNControlOwner column 1.3.6.1.2.1.16.15.4.1.10 +RMON2-MIB nlMatrixTopNControlStatus column 1.3.6.1.2.1.16.15.4.1.11 +RMON2-MIB nlMatrixTopNTable table 1.3.6.1.2.1.16.15.5 +RMON2-MIB nlMatrixTopNEntry row 1.3.6.1.2.1.16.15.5.1 +RMON2-MIB nlMatrixTopNIndex column 1.3.6.1.2.1.16.15.5.1.1 +RMON2-MIB nlMatrixTopNProtocolDirLocalIndex column 1.3.6.1.2.1.16.15.5.1.2 +RMON2-MIB nlMatrixTopNSourceAddress column 1.3.6.1.2.1.16.15.5.1.3 +RMON2-MIB nlMatrixTopNDestAddress column 1.3.6.1.2.1.16.15.5.1.4 +RMON2-MIB nlMatrixTopNPktRate column 1.3.6.1.2.1.16.15.5.1.5 +RMON2-MIB nlMatrixTopNReversePktRate column 1.3.6.1.2.1.16.15.5.1.6 +RMON2-MIB nlMatrixTopNOctetRate column 1.3.6.1.2.1.16.15.5.1.7 +RMON2-MIB nlMatrixTopNReverseOctetRate column 1.3.6.1.2.1.16.15.5.1.8 +RMON2-MIB alHost node 1.3.6.1.2.1.16.16 +RMON2-MIB alHostTable table 1.3.6.1.2.1.16.16.1 +RMON2-MIB alHostEntry row 1.3.6.1.2.1.16.16.1.1 +RMON2-MIB alHostTimeMark column 1.3.6.1.2.1.16.16.1.1.1 +RMON2-MIB alHostInPkts column 1.3.6.1.2.1.16.16.1.1.2 +RMON2-MIB alHostOutPkts column 1.3.6.1.2.1.16.16.1.1.3 +RMON2-MIB alHostInOctets column 1.3.6.1.2.1.16.16.1.1.4 +RMON2-MIB alHostOutOctets column 1.3.6.1.2.1.16.16.1.1.5 +RMON2-MIB alHostCreateTime column 1.3.6.1.2.1.16.16.1.1.6 +RMON2-MIB alMatrix node 1.3.6.1.2.1.16.17 +RMON2-MIB alMatrixSDTable table 1.3.6.1.2.1.16.17.1 +RMON2-MIB alMatrixSDEntry row 1.3.6.1.2.1.16.17.1.1 +RMON2-MIB alMatrixSDTimeMark column 1.3.6.1.2.1.16.17.1.1.1 +RMON2-MIB alMatrixSDPkts column 1.3.6.1.2.1.16.17.1.1.2 +RMON2-MIB alMatrixSDOctets column 1.3.6.1.2.1.16.17.1.1.3 +RMON2-MIB alMatrixSDCreateTime column 1.3.6.1.2.1.16.17.1.1.4 +RMON2-MIB alMatrixDSTable table 1.3.6.1.2.1.16.17.2 +RMON2-MIB alMatrixDSEntry row 1.3.6.1.2.1.16.17.2.1 +RMON2-MIB alMatrixDSTimeMark column 1.3.6.1.2.1.16.17.2.1.1 +RMON2-MIB alMatrixDSPkts column 1.3.6.1.2.1.16.17.2.1.2 +RMON2-MIB alMatrixDSOctets column 1.3.6.1.2.1.16.17.2.1.3 +RMON2-MIB alMatrixDSCreateTime column 1.3.6.1.2.1.16.17.2.1.4 +RMON2-MIB alMatrixTopNControlTable table 1.3.6.1.2.1.16.17.3 +RMON2-MIB alMatrixTopNControlEntry row 1.3.6.1.2.1.16.17.3.1 +RMON2-MIB alMatrixTopNControlIndex column 1.3.6.1.2.1.16.17.3.1.1 +RMON2-MIB alMatrixTopNControlMatrixIndex column 1.3.6.1.2.1.16.17.3.1.2 +RMON2-MIB alMatrixTopNControlRateBase column 1.3.6.1.2.1.16.17.3.1.3 +RMON2-MIB alMatrixTopNControlTimeRemaining column 1.3.6.1.2.1.16.17.3.1.4 +RMON2-MIB alMatrixTopNControlGeneratedReports column 1.3.6.1.2.1.16.17.3.1.5 +RMON2-MIB alMatrixTopNControlDuration column 1.3.6.1.2.1.16.17.3.1.6 +RMON2-MIB alMatrixTopNControlRequestedSize column 1.3.6.1.2.1.16.17.3.1.7 +RMON2-MIB alMatrixTopNControlGrantedSize column 1.3.6.1.2.1.16.17.3.1.8 +RMON2-MIB alMatrixTopNControlStartTime column 1.3.6.1.2.1.16.17.3.1.9 +RMON2-MIB alMatrixTopNControlOwner column 1.3.6.1.2.1.16.17.3.1.10 +RMON2-MIB alMatrixTopNControlStatus column 1.3.6.1.2.1.16.17.3.1.11 +RMON2-MIB alMatrixTopNTable table 1.3.6.1.2.1.16.17.4 +RMON2-MIB alMatrixTopNEntry row 1.3.6.1.2.1.16.17.4.1 +RMON2-MIB alMatrixTopNIndex column 1.3.6.1.2.1.16.17.4.1.1 +RMON2-MIB alMatrixTopNProtocolDirLocalIndex column 1.3.6.1.2.1.16.17.4.1.2 +RMON2-MIB alMatrixTopNSourceAddress column 1.3.6.1.2.1.16.17.4.1.3 +RMON2-MIB alMatrixTopNDestAddress column 1.3.6.1.2.1.16.17.4.1.4 +RMON2-MIB alMatrixTopNAppProtocolDirLocalIndex column 1.3.6.1.2.1.16.17.4.1.5 +RMON2-MIB alMatrixTopNPktRate column 1.3.6.1.2.1.16.17.4.1.6 +RMON2-MIB alMatrixTopNReversePktRate column 1.3.6.1.2.1.16.17.4.1.7 +RMON2-MIB alMatrixTopNOctetRate column 1.3.6.1.2.1.16.17.4.1.8 +RMON2-MIB alMatrixTopNReverseOctetRate column 1.3.6.1.2.1.16.17.4.1.9 +RMON2-MIB usrHistory node 1.3.6.1.2.1.16.18 +RMON2-MIB usrHistoryControlTable table 1.3.6.1.2.1.16.18.1 +RMON2-MIB usrHistoryControlEntry row 1.3.6.1.2.1.16.18.1.1 +RMON2-MIB usrHistoryControlIndex column 1.3.6.1.2.1.16.18.1.1.1 +RMON2-MIB usrHistoryControlObjects column 1.3.6.1.2.1.16.18.1.1.2 +RMON2-MIB usrHistoryControlBucketsRequested column 1.3.6.1.2.1.16.18.1.1.3 +RMON2-MIB usrHistoryControlBucketsGranted column 1.3.6.1.2.1.16.18.1.1.4 +RMON2-MIB usrHistoryControlInterval column 1.3.6.1.2.1.16.18.1.1.5 +RMON2-MIB usrHistoryControlOwner column 1.3.6.1.2.1.16.18.1.1.6 +RMON2-MIB usrHistoryControlStatus column 1.3.6.1.2.1.16.18.1.1.7 +RMON2-MIB usrHistoryObjectTable table 1.3.6.1.2.1.16.18.2 +RMON2-MIB usrHistoryObjectEntry row 1.3.6.1.2.1.16.18.2.1 +RMON2-MIB usrHistoryObjectIndex column 1.3.6.1.2.1.16.18.2.1.1 +RMON2-MIB usrHistoryObjectVariable column 1.3.6.1.2.1.16.18.2.1.2 +RMON2-MIB usrHistoryObjectSampleType column 1.3.6.1.2.1.16.18.2.1.3 +RMON2-MIB usrHistoryTable table 1.3.6.1.2.1.16.18.3 +RMON2-MIB usrHistoryEntry row 1.3.6.1.2.1.16.18.3.1 +RMON2-MIB usrHistorySampleIndex column 1.3.6.1.2.1.16.18.3.1.1 +RMON2-MIB usrHistoryIntervalStart column 1.3.6.1.2.1.16.18.3.1.2 +RMON2-MIB usrHistoryIntervalEnd column 1.3.6.1.2.1.16.18.3.1.3 +RMON2-MIB usrHistoryAbsValue column 1.3.6.1.2.1.16.18.3.1.4 +RMON2-MIB usrHistoryValStatus column 1.3.6.1.2.1.16.18.3.1.5 +RMON2-MIB probeConfig node 1.3.6.1.2.1.16.19 +RMON2-MIB probeCapabilities scalar 1.3.6.1.2.1.16.19.1 +RMON2-MIB probeSoftwareRev scalar 1.3.6.1.2.1.16.19.2 +RMON2-MIB probeHardwareRev scalar 1.3.6.1.2.1.16.19.3 +RMON2-MIB probeDateTime scalar 1.3.6.1.2.1.16.19.4 +RMON2-MIB probeResetControl scalar 1.3.6.1.2.1.16.19.5 +RMON2-MIB probeDownloadFile scalar 1.3.6.1.2.1.16.19.6 +RMON2-MIB probeDownloadTFTPServer scalar 1.3.6.1.2.1.16.19.7 +RMON2-MIB probeDownloadAction scalar 1.3.6.1.2.1.16.19.8 +RMON2-MIB probeDownloadStatus scalar 1.3.6.1.2.1.16.19.9 +RMON2-MIB serialConfigTable table 1.3.6.1.2.1.16.19.10 +RMON2-MIB serialConfigEntry row 1.3.6.1.2.1.16.19.10.1 +RMON2-MIB serialMode column 1.3.6.1.2.1.16.19.10.1.1 +RMON2-MIB serialProtocol column 1.3.6.1.2.1.16.19.10.1.2 +RMON2-MIB serialTimeout column 1.3.6.1.2.1.16.19.10.1.3 +RMON2-MIB serialModemInitString column 1.3.6.1.2.1.16.19.10.1.4 +RMON2-MIB serialModemHangUpString column 1.3.6.1.2.1.16.19.10.1.5 +RMON2-MIB serialModemConnectResp column 1.3.6.1.2.1.16.19.10.1.6 +RMON2-MIB serialModemNoConnectResp column 1.3.6.1.2.1.16.19.10.1.7 +RMON2-MIB serialDialoutTimeout column 1.3.6.1.2.1.16.19.10.1.8 +RMON2-MIB serialStatus column 1.3.6.1.2.1.16.19.10.1.9 +RMON2-MIB netConfigTable table 1.3.6.1.2.1.16.19.11 +RMON2-MIB netConfigEntry row 1.3.6.1.2.1.16.19.11.1 +RMON2-MIB netConfigIPAddress column 1.3.6.1.2.1.16.19.11.1.1 +RMON2-MIB netConfigSubnetMask column 1.3.6.1.2.1.16.19.11.1.2 +RMON2-MIB netConfigStatus column 1.3.6.1.2.1.16.19.11.1.3 +RMON2-MIB netDefaultGateway scalar 1.3.6.1.2.1.16.19.12 +RMON2-MIB trapDestTable table 1.3.6.1.2.1.16.19.13 +RMON2-MIB trapDestEntry row 1.3.6.1.2.1.16.19.13.1 +RMON2-MIB trapDestIndex column 1.3.6.1.2.1.16.19.13.1.1 +RMON2-MIB trapDestCommunity column 1.3.6.1.2.1.16.19.13.1.2 +RMON2-MIB trapDestProtocol column 1.3.6.1.2.1.16.19.13.1.3 +RMON2-MIB trapDestAddress column 1.3.6.1.2.1.16.19.13.1.4 +RMON2-MIB trapDestOwner column 1.3.6.1.2.1.16.19.13.1.5 +RMON2-MIB trapDestStatus column 1.3.6.1.2.1.16.19.13.1.6 +RMON2-MIB serialConnectionTable table 1.3.6.1.2.1.16.19.14 +RMON2-MIB serialConnectionEntry row 1.3.6.1.2.1.16.19.14.1 +RMON2-MIB serialConnectIndex column 1.3.6.1.2.1.16.19.14.1.1 +RMON2-MIB serialConnectDestIpAddress column 1.3.6.1.2.1.16.19.14.1.2 +RMON2-MIB serialConnectType column 1.3.6.1.2.1.16.19.14.1.3 +RMON2-MIB serialConnectDialString column 1.3.6.1.2.1.16.19.14.1.4 +RMON2-MIB serialConnectSwitchConnectSeq column 1.3.6.1.2.1.16.19.14.1.5 +RMON2-MIB serialConnectSwitchDisconnectSeq column 1.3.6.1.2.1.16.19.14.1.6 +RMON2-MIB serialConnectSwitchResetSeq column 1.3.6.1.2.1.16.19.14.1.7 +RMON2-MIB serialConnectOwner column 1.3.6.1.2.1.16.19.14.1.8 +RMON2-MIB serialConnectStatus column 1.3.6.1.2.1.16.19.14.1.9 +RMON2-MIB rmonConformance node 1.3.6.1.2.1.16.20 +RMON2-MIB rmon2MIBCompliances node 1.3.6.1.2.1.16.20.1 +RMON2-MIB rmon2MIBCompliance compliance 1.3.6.1.2.1.16.20.1.1 +RMON2-MIB rmon2MIBApplicationLayerCompliance compliance 1.3.6.1.2.1.16.20.1.2 +RMON2-MIB rmon2MIBGroups node 1.3.6.1.2.1.16.20.2 +RMON2-MIB protocolDirectoryGroup group 1.3.6.1.2.1.16.20.2.1 +RMON2-MIB protocolDistributionGroup group 1.3.6.1.2.1.16.20.2.2 +RMON2-MIB addressMapGroup group 1.3.6.1.2.1.16.20.2.3 +RMON2-MIB nlHostGroup group 1.3.6.1.2.1.16.20.2.4 +RMON2-MIB nlMatrixGroup group 1.3.6.1.2.1.16.20.2.5 +RMON2-MIB alHostGroup group 1.3.6.1.2.1.16.20.2.6 +RMON2-MIB alMatrixGroup group 1.3.6.1.2.1.16.20.2.7 +RMON2-MIB usrHistoryGroup group 1.3.6.1.2.1.16.20.2.8 +RMON2-MIB probeInformationGroup group 1.3.6.1.2.1.16.20.2.9 +RMON2-MIB probeConfigurationGroup group 1.3.6.1.2.1.16.20.2.10 +RMON2-MIB rmon1EnhancementGroup group 1.3.6.1.2.1.16.20.2.11 +RMON2-MIB rmon1EthernetEnhancementGroup group 1.3.6.1.2.1.16.20.2.12 +RMON2-MIB rmon1TokenRingEnhancementGroup group 1.3.6.1.2.1.16.20.2.13 diff --git a/test/dumps/identifiers/SNMPv2-MIB b/test/dumps/identifiers/SNMPv2-MIB new file mode 100644 index 0000000..99f2a61 --- /dev/null +++ b/test/dumps/identifiers/SNMPv2-MIB @@ -0,0 +1,72 @@ +# SNMPv2-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +SNMPv2-MIB system node 1.3.6.1.2.1.1 +SNMPv2-MIB sysDescr scalar 1.3.6.1.2.1.1.1 +SNMPv2-MIB sysObjectID scalar 1.3.6.1.2.1.1.2 +SNMPv2-MIB sysUpTime scalar 1.3.6.1.2.1.1.3 +SNMPv2-MIB sysContact scalar 1.3.6.1.2.1.1.4 +SNMPv2-MIB sysName scalar 1.3.6.1.2.1.1.5 +SNMPv2-MIB sysLocation scalar 1.3.6.1.2.1.1.6 +SNMPv2-MIB sysServices scalar 1.3.6.1.2.1.1.7 +SNMPv2-MIB sysORLastChange scalar 1.3.6.1.2.1.1.8 +SNMPv2-MIB sysORTable table 1.3.6.1.2.1.1.9 +SNMPv2-MIB sysOREntry row 1.3.6.1.2.1.1.9.1 +SNMPv2-MIB sysORIndex column 1.3.6.1.2.1.1.9.1.1 +SNMPv2-MIB sysORID column 1.3.6.1.2.1.1.9.1.2 +SNMPv2-MIB sysORDescr column 1.3.6.1.2.1.1.9.1.3 +SNMPv2-MIB sysORUpTime column 1.3.6.1.2.1.1.9.1.4 +SNMPv2-MIB snmp node 1.3.6.1.2.1.11 +SNMPv2-MIB snmpInPkts scalar 1.3.6.1.2.1.11.1 +SNMPv2-MIB snmpOutPkts scalar 1.3.6.1.2.1.11.2 +SNMPv2-MIB snmpInBadVersions scalar 1.3.6.1.2.1.11.3 +SNMPv2-MIB snmpInBadCommunityNames scalar 1.3.6.1.2.1.11.4 +SNMPv2-MIB snmpInBadCommunityUses scalar 1.3.6.1.2.1.11.5 +SNMPv2-MIB snmpInASNParseErrs scalar 1.3.6.1.2.1.11.6 +SNMPv2-MIB snmpInTooBigs scalar 1.3.6.1.2.1.11.8 +SNMPv2-MIB snmpInNoSuchNames scalar 1.3.6.1.2.1.11.9 +SNMPv2-MIB snmpInBadValues scalar 1.3.6.1.2.1.11.10 +SNMPv2-MIB snmpInReadOnlys scalar 1.3.6.1.2.1.11.11 +SNMPv2-MIB snmpInGenErrs scalar 1.3.6.1.2.1.11.12 +SNMPv2-MIB snmpInTotalReqVars scalar 1.3.6.1.2.1.11.13 +SNMPv2-MIB snmpInTotalSetVars scalar 1.3.6.1.2.1.11.14 +SNMPv2-MIB snmpInGetRequests scalar 1.3.6.1.2.1.11.15 +SNMPv2-MIB snmpInGetNexts scalar 1.3.6.1.2.1.11.16 +SNMPv2-MIB snmpInSetRequests scalar 1.3.6.1.2.1.11.17 +SNMPv2-MIB snmpInGetResponses scalar 1.3.6.1.2.1.11.18 +SNMPv2-MIB snmpInTraps scalar 1.3.6.1.2.1.11.19 +SNMPv2-MIB snmpOutTooBigs scalar 1.3.6.1.2.1.11.20 +SNMPv2-MIB snmpOutNoSuchNames scalar 1.3.6.1.2.1.11.21 +SNMPv2-MIB snmpOutBadValues scalar 1.3.6.1.2.1.11.22 +SNMPv2-MIB snmpOutGenErrs scalar 1.3.6.1.2.1.11.24 +SNMPv2-MIB snmpOutGetRequests scalar 1.3.6.1.2.1.11.25 +SNMPv2-MIB snmpOutGetNexts scalar 1.3.6.1.2.1.11.26 +SNMPv2-MIB snmpOutSetRequests scalar 1.3.6.1.2.1.11.27 +SNMPv2-MIB snmpOutGetResponses scalar 1.3.6.1.2.1.11.28 +SNMPv2-MIB snmpOutTraps scalar 1.3.6.1.2.1.11.29 +SNMPv2-MIB snmpEnableAuthenTraps scalar 1.3.6.1.2.1.11.30 +SNMPv2-MIB snmpSilentDrops scalar 1.3.6.1.2.1.11.31 +SNMPv2-MIB snmpProxyDrops scalar 1.3.6.1.2.1.11.32 +SNMPv2-MIB snmpMIB node 1.3.6.1.6.3.1 +SNMPv2-MIB snmpMIBObjects node 1.3.6.1.6.3.1.1 +SNMPv2-MIB snmpTrap node 1.3.6.1.6.3.1.1.4 +SNMPv2-MIB snmpTrapOID scalar 1.3.6.1.6.3.1.1.4.1 +SNMPv2-MIB snmpTrapEnterprise scalar 1.3.6.1.6.3.1.1.4.3 +SNMPv2-MIB snmpTraps node 1.3.6.1.6.3.1.1.5 +SNMPv2-MIB coldStart notification 1.3.6.1.6.3.1.1.5.1 +SNMPv2-MIB warmStart notification 1.3.6.1.6.3.1.1.5.2 +SNMPv2-MIB authenticationFailure notification 1.3.6.1.6.3.1.1.5.5 +SNMPv2-MIB snmpSet node 1.3.6.1.6.3.1.1.6 +SNMPv2-MIB snmpSetSerialNo scalar 1.3.6.1.6.3.1.1.6.1 +SNMPv2-MIB snmpMIBConformance node 1.3.6.1.6.3.1.2 +SNMPv2-MIB snmpMIBCompliances node 1.3.6.1.6.3.1.2.1 +SNMPv2-MIB snmpBasicCompliance compliance 1.3.6.1.6.3.1.2.1.2 +SNMPv2-MIB snmpBasicComplianceRev2 compliance 1.3.6.1.6.3.1.2.1.3 +SNMPv2-MIB snmpMIBGroups node 1.3.6.1.6.3.1.2.2 +SNMPv2-MIB snmpSetGroup group 1.3.6.1.6.3.1.2.2.5 +SNMPv2-MIB systemGroup group 1.3.6.1.6.3.1.2.2.6 +SNMPv2-MIB snmpBasicNotificationsGroup group 1.3.6.1.6.3.1.2.2.7 +SNMPv2-MIB snmpGroup group 1.3.6.1.6.3.1.2.2.8 +SNMPv2-MIB snmpCommunityGroup group 1.3.6.1.6.3.1.2.2.9 +SNMPv2-MIB snmpObsoleteGroup group 1.3.6.1.6.3.1.2.2.10 +SNMPv2-MIB snmpWarmStartNotificationGroup group 1.3.6.1.6.3.1.2.2.11 +SNMPv2-MIB snmpNotificationGroup group 1.3.6.1.6.3.1.2.2.12 diff --git a/test/dumps/imports/IF-MIB b/test/dumps/imports/IF-MIB new file mode 100644 index 0000000..e0529cc --- /dev/null +++ b/test/dumps/imports/IF-MIB @@ -0,0 +1,31 @@ +# IF-MIB imports tree (generated by smidump 0.4.5) + +IF-MIB + | + +--SNMPv2-SMI [9 identifiers] + +--SNMPv2-TC [8 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--SNMPv2-MIB [1 identifier] + | | + | +--SNMPv2-SMI [7 identifiers] + | +--SNMPv2-TC [3 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IANAifType-MIB [1 identifier] + | + +--SNMPv2-SMI [2 identifiers] + +--SNMPv2-TC [1 identifier] + | + +--SNMPv2-SMI [1 identifier] + diff --git a/test/dumps/imports/MAU-MIB b/test/dumps/imports/MAU-MIB new file mode 100644 index 0000000..1497556 --- /dev/null +++ b/test/dumps/imports/MAU-MIB @@ -0,0 +1,49 @@ +# MAU-MIB imports tree (generated by smidump 0.4.5) + +MAU-MIB + | + +--SNMPv2-SMI [7 identifiers] + +--SNMPv2-TC [3 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IF-MIB [1 identifier] + | | + | +--SNMPv2-SMI [9 identifiers] + | +--SNMPv2-TC [8 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--SNMPv2-MIB [1 identifier] + | | | + | | +--SNMPv2-SMI [7 identifiers] + | | +--SNMPv2-TC [3 identifiers] + | | | | + | | | +--SNMPv2-SMI [1 identifier] + | | | + | | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--IANAifType-MIB [1 identifier] + | | + | +--SNMPv2-SMI [2 identifiers] + | +--SNMPv2-TC [1 identifier] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--IANA-MAU-MIB [4 identifiers] + | + +--SNMPv2-SMI [3 identifiers] + +--SNMPv2-TC [1 identifier] + | + +--SNMPv2-SMI [1 identifier] + diff --git a/test/dumps/imports/Makefile.am b/test/dumps/imports/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/imports/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/imports/Makefile.in b/test/dumps/imports/Makefile.in new file mode 100644 index 0000000..5034f49 --- /dev/null +++ b/test/dumps/imports/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/imports +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/imports/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/imports/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/imports/RMON2-MIB b/test/dumps/imports/RMON2-MIB new file mode 100644 index 0000000..f9a0233 --- /dev/null +++ b/test/dumps/imports/RMON2-MIB @@ -0,0 +1,74 @@ +# RMON2-MIB imports tree (generated by smidump 0.4.5) + +RMON2-MIB + | + +--SNMPv2-SMI [8 identifiers] + +--SNMPv2-TC [4 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [2 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IF-MIB [1 identifier] + | | + | +--SNMPv2-SMI [9 identifiers] + | +--SNMPv2-TC [8 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--SNMPv2-MIB [1 identifier] + | | | + | | +--SNMPv2-SMI [7 identifiers] + | | +--SNMPv2-TC [3 identifiers] + | | | | + | | | +--SNMPv2-SMI [1 identifier] + | | | + | | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--IANAifType-MIB [1 identifier] + | | + | +--SNMPv2-SMI [2 identifiers] + | +--SNMPv2-TC [1 identifier] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--RMON-MIB [12 identifiers] + | | + | +--SNMPv2-SMI [8 identifiers] + | +--SNMPv2-TC [2 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--TOKEN-RING-RMON-MIB [5 identifiers] + | + +--RFC1155-SMI [2 identifiers] + +--RFC-1212 [1 identifier] + | | + | +--RFC1155-SMI [1 identifier] + | + +--RFC1271-MIB [5 identifiers] + | + +--RFC1155-SMI [1 identifier] + +--RFC1213-MIB [2 identifiers] + | | + | +--RFC1155-SMI [6 identifiers] + | +--RFC-1212 [1 identifier] + | | + | +--RFC1155-SMI [1 identifier] + | + +--RFC-1212 [1 identifier] + | + +--RFC1155-SMI [1 identifier] + diff --git a/test/dumps/imports/SNMPv2-MIB b/test/dumps/imports/SNMPv2-MIB new file mode 100644 index 0000000..0766c7e --- /dev/null +++ b/test/dumps/imports/SNMPv2-MIB @@ -0,0 +1,13 @@ +# SNMPv2-MIB imports tree (generated by smidump 0.4.5) + +SNMPv2-MIB + | + +--SNMPv2-SMI [7 identifiers] + +--SNMPv2-TC [3 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | + +--SNMPv2-SMI [3 identifiers] + diff --git a/test/dumps/jax/AddressMap.java b/test/dumps/jax/AddressMap.java new file mode 100644 index 0000000..18830aa --- /dev/null +++ b/test/dumps/jax/AddressMap.java @@ -0,0 +1,135 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group addressMap defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class AddressMap extends AgentXScalars +{ + + private final static long[] AddressMapOID = {1, 3, 6, 1, 2, 1, 16, 13}; + + protected AgentXOID AddressMapInsertsOID; + protected final static long[] AddressMapInsertsName = {1, 3, 6, 1, 2, 1, 16, 13, 1, 0}; + protected long addressMapInserts = 0; + protected AgentXOID AddressMapDeletesOID; + protected final static long[] AddressMapDeletesName = {1, 3, 6, 1, 2, 1, 16, 13, 2, 0}; + protected long addressMapDeletes = 0; + protected AgentXOID AddressMapMaxDesiredEntriesOID; + protected final static long[] AddressMapMaxDesiredEntriesName = {1, 3, 6, 1, 2, 1, 16, 13, 3, 0}; + protected int addressMapMaxDesiredEntries = 0; + protected int undo_addressMapMaxDesiredEntries = 0; + public AddressMap() + { + oid = new AgentXOID(AddressMapOID); + data = new Vector(); + AddressMapInsertsOID = new AgentXOID(AddressMapInsertsName); + data.addElement(AddressMapInsertsOID); + AddressMapDeletesOID = new AgentXOID(AddressMapDeletesName); + data.addElement(AddressMapDeletesOID); + AddressMapMaxDesiredEntriesOID = new AgentXOID(AddressMapMaxDesiredEntriesName); + data.addElement(AddressMapMaxDesiredEntriesOID); + } + + public long get_addressMapInserts() + { + return addressMapInserts; + } + + public long get_addressMapDeletes() + { + return addressMapDeletes; + } + + public int get_addressMapMaxDesiredEntries() + { + return addressMapMaxDesiredEntries; + } + + public int set_addressMapMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapMaxDesiredEntries = addressMapMaxDesiredEntries; + addressMapMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + addressMapMaxDesiredEntries = undo_addressMapMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == AddressMapInsertsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_addressMapInserts()); + if (pos == AddressMapDeletesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_addressMapDeletes()); + if (pos == AddressMapMaxDesiredEntriesOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_addressMapMaxDesiredEntries()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == AddressMapMaxDesiredEntriesOID) + return set_addressMapMaxDesiredEntries(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == AddressMapInsertsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_addressMapInserts()); + if (pos == AddressMapDeletesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_addressMapDeletes()); + if (pos == AddressMapMaxDesiredEntriesOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_addressMapMaxDesiredEntries()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/AddressMapControlEntry.java b/test/dumps/jax/AddressMapControlEntry.java new file mode 100644 index 0000000..20dc79e --- /dev/null +++ b/test/dumps/jax/AddressMapControlEntry.java @@ -0,0 +1,127 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row addressMapControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapControlEntry extends AgentXEntry +{ + + protected int addressMapControlIndex = 0; + protected AgentXOID addressMapControlDataSource = new AgentXOID(); + protected AgentXOID undo_addressMapControlDataSource = new AgentXOID(); + protected long addressMapControlDroppedFrames = 0; + protected byte[] addressMapControlOwner = new byte[0]; + protected byte[] undo_addressMapControlOwner = new byte[0]; + protected int addressMapControlStatus = 0; + protected int undo_addressMapControlStatus = 0; + + public AddressMapControlEntry(int addressMapControlIndex) + { + this.addressMapControlIndex = addressMapControlIndex; + + instance.append(addressMapControlIndex); + } + + public int get_addressMapControlIndex() + { + return addressMapControlIndex; + } + + public AgentXOID get_addressMapControlDataSource() + { + return addressMapControlDataSource; + } + + public int set_addressMapControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlDataSource = addressMapControlDataSource; + addressMapControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlDataSource = undo_addressMapControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_addressMapControlDroppedFrames() + { + return addressMapControlDroppedFrames; + } + + public byte[] get_addressMapControlOwner() + { + return addressMapControlOwner; + } + + public int set_addressMapControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlOwner = addressMapControlOwner; + addressMapControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + addressMapControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + addressMapControlOwner = undo_addressMapControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_addressMapControlStatus() + { + return addressMapControlStatus; + } + + public int set_addressMapControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlStatus = addressMapControlStatus; + addressMapControlStatus = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlStatus = undo_addressMapControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AddressMapControlEntryImpl.java b/test/dumps/jax/AddressMapControlEntryImpl.java new file mode 100644 index 0000000..4e75c5e --- /dev/null +++ b/test/dumps/jax/AddressMapControlEntryImpl.java @@ -0,0 +1,109 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row addressMapControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapControlEntryImpl extends AddressMapControlEntry +{ + + // constructor + public AddressMapControlEntryImpl(int addressMapControlIndex) + { + super(addressMapControlIndex); + } + + public AgentXOID get_addressMapControlDataSource() + { + return addressMapControlDataSource; + } + + public int set_addressMapControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlDataSource = addressMapControlDataSource; + addressMapControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlDataSource = undo_addressMapControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_addressMapControlDroppedFrames() + { + return addressMapControlDroppedFrames; + } + + public byte[] get_addressMapControlOwner() + { + return addressMapControlOwner; + } + + public int set_addressMapControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlOwner = addressMapControlOwner; + addressMapControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + addressMapControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + addressMapControlOwner = undo_addressMapControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_addressMapControlStatus() + { + return addressMapControlStatus; + } + + public int set_addressMapControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlStatus = addressMapControlStatus; + addressMapControlStatus = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlStatus = undo_addressMapControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AddressMapControlTable.java b/test/dumps/jax/AddressMapControlTable.java new file mode 100644 index 0000000..b292bd4 --- /dev/null +++ b/test/dumps/jax/AddressMapControlTable.java @@ -0,0 +1,121 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table addressMapControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AddressMapControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1}; + + // constructors + public AddressMapControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AddressMapControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // addressMapControlDataSource + { + AgentXOID value = ((AddressMapControlEntry)entry).get_addressMapControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // addressMapControlDroppedFrames + { + long value = ((AddressMapControlEntry)entry).get_addressMapControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // addressMapControlOwner + { + byte[] value = ((AddressMapControlEntry)entry).get_addressMapControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // addressMapControlStatus + { + int value = ((AddressMapControlEntry)entry).get_addressMapControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // addressMapControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlDataSource(phase, vb.AgentXOIDValue()); + } + case 4: // addressMapControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlOwner(phase, vb.bytesValue()); + } + case 5: // addressMapControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AddressMapEntry.java b/test/dumps/jax/AddressMapEntry.java new file mode 100644 index 0000000..bae2b56 --- /dev/null +++ b/test/dumps/jax/AddressMapEntry.java @@ -0,0 +1,80 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row addressMapEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapEntry extends AgentXEntry +{ + + protected long addressMapTimeMark = 0; + protected byte[] addressMapNetworkAddress = new byte[0]; + protected AgentXOID addressMapSource = new AgentXOID(); + protected byte[] addressMapPhysicalAddress = new byte[0]; + protected long addressMapLastChange = 0; + // foreign indices + protected int protocolDirLocalIndex; + + public AddressMapEntry(long addressMapTimeMark, + int protocolDirLocalIndex, + byte[] addressMapNetworkAddress, + AgentXOID addressMapSource) + { + this.addressMapTimeMark = addressMapTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.addressMapNetworkAddress = addressMapNetworkAddress; + this.addressMapSource = addressMapSource; + + instance.append(addressMapTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(addressMapNetworkAddress); + instance.append(addressMapSource); + } + + public long get_addressMapTimeMark() + { + return addressMapTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_addressMapNetworkAddress() + { + return addressMapNetworkAddress; + } + + public AgentXOID get_addressMapSource() + { + return addressMapSource; + } + + public byte[] get_addressMapPhysicalAddress() + { + return addressMapPhysicalAddress; + } + + public long get_addressMapLastChange() + { + return addressMapLastChange; + } + +} + diff --git a/test/dumps/jax/AddressMapEntryImpl.java b/test/dumps/jax/AddressMapEntryImpl.java new file mode 100644 index 0000000..8969f76 --- /dev/null +++ b/test/dumps/jax/AddressMapEntryImpl.java @@ -0,0 +1,45 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row addressMapEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapEntryImpl extends AddressMapEntry +{ + + // constructor + public AddressMapEntryImpl(long addressMapTimeMark, + int protocolDirLocalIndex, + byte[] addressMapNetworkAddress, + AgentXOID addressMapSource) + { + super(addressMapTimeMark, + protocolDirLocalIndex, + addressMapNetworkAddress, + addressMapSource); + } + + public byte[] get_addressMapPhysicalAddress() + { + return addressMapPhysicalAddress; + } + + public long get_addressMapLastChange() + { + return addressMapLastChange; + } + +} + diff --git a/test/dumps/jax/AddressMapImpl.java b/test/dumps/jax/AddressMapImpl.java new file mode 100644 index 0000000..e8af614 --- /dev/null +++ b/test/dumps/jax/AddressMapImpl.java @@ -0,0 +1,60 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group addressMap defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class AddressMapImpl extends AddressMap +{ + + public long get_addressMapInserts() + { + return addressMapInserts; + } + + public long get_addressMapDeletes() + { + return addressMapDeletes; + } + + public int get_addressMapMaxDesiredEntries() + { + return addressMapMaxDesiredEntries; + } + + public int set_addressMapMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapMaxDesiredEntries = addressMapMaxDesiredEntries; + addressMapMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + addressMapMaxDesiredEntries = undo_addressMapMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapMaxDesiredEntries = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + +} + diff --git a/test/dumps/jax/AddressMapTable.java b/test/dumps/jax/AddressMapTable.java new file mode 100644 index 0000000..abdaca8 --- /dev/null +++ b/test/dumps/jax/AddressMapTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table addressMapTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AddressMapTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1}; + + // constructors + public AddressMapTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AddressMapTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // addressMapPhysicalAddress + { + byte[] value = ((AddressMapEntry)entry).get_addressMapPhysicalAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // addressMapLastChange + { + long value = ((AddressMapEntry)entry).get_addressMapLastChange(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlHostEntry.java b/test/dumps/jax/AlHostEntry.java new file mode 100644 index 0000000..bc989ac --- /dev/null +++ b/test/dumps/jax/AlHostEntry.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alHostEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlHostEntry extends AgentXEntry +{ + + protected long alHostTimeMark = 0; + protected long alHostInPkts = 0; + protected long alHostOutPkts = 0; + protected long alHostInOctets = 0; + protected long alHostOutOctets = 0; + protected long alHostCreateTime = 0; + // foreign indices + protected int hlHostControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlHostAddress; + protected int protocolDirLocalIndex; + + public AlHostEntry(int hlHostControlIndex, + long alHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress, + int protocolDirLocalIndex) + { + this.hlHostControlIndex = hlHostControlIndex; + this.alHostTimeMark = alHostTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlHostAddress = nlHostAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlHostControlIndex); + instance.append(alHostTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlHostAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public long get_alHostTimeMark() + { + return alHostTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlHostAddress() + { + return nlHostAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alHostInPkts() + { + return alHostInPkts; + } + + public long get_alHostOutPkts() + { + return alHostOutPkts; + } + + public long get_alHostInOctets() + { + return alHostInOctets; + } + + public long get_alHostOutOctets() + { + return alHostOutOctets; + } + + public long get_alHostCreateTime() + { + return alHostCreateTime; + } + +} + diff --git a/test/dumps/jax/AlHostEntryImpl.java b/test/dumps/jax/AlHostEntryImpl.java new file mode 100644 index 0000000..ef19fb0 --- /dev/null +++ b/test/dumps/jax/AlHostEntryImpl.java @@ -0,0 +1,62 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alHostEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlHostEntryImpl extends AlHostEntry +{ + + // constructor + public AlHostEntryImpl(int hlHostControlIndex, + long alHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress, + int protocolDirLocalIndex) + { + super(hlHostControlIndex, + alHostTimeMark, + protocolDirLocalIndex, + nlHostAddress, + protocolDirLocalIndex); + } + + public long get_alHostInPkts() + { + return alHostInPkts; + } + + public long get_alHostOutPkts() + { + return alHostOutPkts; + } + + public long get_alHostInOctets() + { + return alHostInOctets; + } + + public long get_alHostOutOctets() + { + return alHostOutOctets; + } + + public long get_alHostCreateTime() + { + return alHostCreateTime; + } + +} + diff --git a/test/dumps/jax/AlHostTable.java b/test/dumps/jax/AlHostTable.java new file mode 100644 index 0000000..8995abe --- /dev/null +++ b/test/dumps/jax/AlHostTable.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alHostTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlHostTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1}; + + // constructors + public AlHostTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AlHostTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alHostInPkts + { + long value = ((AlHostEntry)entry).get_alHostInPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alHostOutPkts + { + long value = ((AlHostEntry)entry).get_alHostOutPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alHostInOctets + { + long value = ((AlHostEntry)entry).get_alHostInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // alHostOutOctets + { + long value = ((AlHostEntry)entry).get_alHostOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // alHostCreateTime + { + long value = ((AlHostEntry)entry).get_alHostCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSEntry.java b/test/dumps/jax/AlMatrixDSEntry.java new file mode 100644 index 0000000..8ff954f --- /dev/null +++ b/test/dumps/jax/AlMatrixDSEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixDSEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixDSEntry extends AgentXEntry +{ + + protected long alMatrixDSTimeMark = 0; + protected long alMatrixDSPkts = 0; + protected long alMatrixDSOctets = 0; + protected long alMatrixDSCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlMatrixDSDestAddress; + protected byte[] nlMatrixDSSourceAddress; + protected int protocolDirLocalIndex; + + public AlMatrixDSEntry(int hlMatrixControlIndex, + long alMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress, + int protocolDirLocalIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.alMatrixDSTimeMark = alMatrixDSTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixDSDestAddress = nlMatrixDSDestAddress; + this.nlMatrixDSSourceAddress = nlMatrixDSSourceAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlMatrixControlIndex); + instance.append(alMatrixDSTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixDSDestAddress); + instance.append(nlMatrixDSSourceAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_alMatrixDSTimeMark() + { + return alMatrixDSTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixDSDestAddress() + { + return nlMatrixDSDestAddress; + } + + public byte[] get_nlMatrixDSSourceAddress() + { + return nlMatrixDSSourceAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alMatrixDSPkts() + { + return alMatrixDSPkts; + } + + public long get_alMatrixDSOctets() + { + return alMatrixDSOctets; + } + + public long get_alMatrixDSCreateTime() + { + return alMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSEntryImpl.java b/test/dumps/jax/AlMatrixDSEntryImpl.java new file mode 100644 index 0000000..063eeff --- /dev/null +++ b/test/dumps/jax/AlMatrixDSEntryImpl.java @@ -0,0 +1,54 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixDSEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixDSEntryImpl extends AlMatrixDSEntry +{ + + // constructor + public AlMatrixDSEntryImpl(int hlMatrixControlIndex, + long alMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress, + int protocolDirLocalIndex) + { + super(hlMatrixControlIndex, + alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, + protocolDirLocalIndex); + } + + public long get_alMatrixDSPkts() + { + return alMatrixDSPkts; + } + + public long get_alMatrixDSOctets() + { + return alMatrixDSOctets; + } + + public long get_alMatrixDSCreateTime() + { + return alMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSTable.java b/test/dumps/jax/AlMatrixDSTable.java new file mode 100644 index 0000000..5305b0c --- /dev/null +++ b/test/dumps/jax/AlMatrixDSTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixDSTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixDSTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1}; + + // constructors + public AlMatrixDSTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AlMatrixDSTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixDSPkts + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alMatrixDSOctets + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alMatrixDSCreateTime + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDEntry.java b/test/dumps/jax/AlMatrixSDEntry.java new file mode 100644 index 0000000..c638e6d --- /dev/null +++ b/test/dumps/jax/AlMatrixSDEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixSDEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixSDEntry extends AgentXEntry +{ + + protected long alMatrixSDTimeMark = 0; + protected long alMatrixSDPkts = 0; + protected long alMatrixSDOctets = 0; + protected long alMatrixSDCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlMatrixSDSourceAddress; + protected byte[] nlMatrixSDDestAddress; + protected int protocolDirLocalIndex; + + public AlMatrixSDEntry(int hlMatrixControlIndex, + long alMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress, + int protocolDirLocalIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.alMatrixSDTimeMark = alMatrixSDTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixSDSourceAddress = nlMatrixSDSourceAddress; + this.nlMatrixSDDestAddress = nlMatrixSDDestAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlMatrixControlIndex); + instance.append(alMatrixSDTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixSDSourceAddress); + instance.append(nlMatrixSDDestAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_alMatrixSDTimeMark() + { + return alMatrixSDTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixSDSourceAddress() + { + return nlMatrixSDSourceAddress; + } + + public byte[] get_nlMatrixSDDestAddress() + { + return nlMatrixSDDestAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alMatrixSDPkts() + { + return alMatrixSDPkts; + } + + public long get_alMatrixSDOctets() + { + return alMatrixSDOctets; + } + + public long get_alMatrixSDCreateTime() + { + return alMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDEntryImpl.java b/test/dumps/jax/AlMatrixSDEntryImpl.java new file mode 100644 index 0000000..dbc6899 --- /dev/null +++ b/test/dumps/jax/AlMatrixSDEntryImpl.java @@ -0,0 +1,54 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixSDEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixSDEntryImpl extends AlMatrixSDEntry +{ + + // constructor + public AlMatrixSDEntryImpl(int hlMatrixControlIndex, + long alMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress, + int protocolDirLocalIndex) + { + super(hlMatrixControlIndex, + alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, + protocolDirLocalIndex); + } + + public long get_alMatrixSDPkts() + { + return alMatrixSDPkts; + } + + public long get_alMatrixSDOctets() + { + return alMatrixSDOctets; + } + + public long get_alMatrixSDCreateTime() + { + return alMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDTable.java b/test/dumps/jax/AlMatrixSDTable.java new file mode 100644 index 0000000..9dee24d --- /dev/null +++ b/test/dumps/jax/AlMatrixSDTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixSDTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixSDTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1}; + + // constructors + public AlMatrixSDTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AlMatrixSDTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixSDPkts + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alMatrixSDOctets + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alMatrixSDCreateTime + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNControlEntry.java b/test/dumps/jax/AlMatrixTopNControlEntry.java new file mode 100644 index 0000000..8b8e6b2 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixTopNControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNControlEntry extends AgentXEntry +{ + + protected int alMatrixTopNControlIndex = 0; + protected int alMatrixTopNControlMatrixIndex = 0; + protected int undo_alMatrixTopNControlMatrixIndex = 0; + protected int alMatrixTopNControlRateBase = 0; + protected int undo_alMatrixTopNControlRateBase = 0; + protected int alMatrixTopNControlTimeRemaining = 0; + protected int undo_alMatrixTopNControlTimeRemaining = 0; + protected long alMatrixTopNControlGeneratedReports = 0; + protected int alMatrixTopNControlDuration = 0; + protected int alMatrixTopNControlRequestedSize = 0; + protected int undo_alMatrixTopNControlRequestedSize = 0; + protected int alMatrixTopNControlGrantedSize = 0; + protected long alMatrixTopNControlStartTime = 0; + protected byte[] alMatrixTopNControlOwner = new byte[0]; + protected byte[] undo_alMatrixTopNControlOwner = new byte[0]; + protected int alMatrixTopNControlStatus = 0; + protected int undo_alMatrixTopNControlStatus = 0; + + public AlMatrixTopNControlEntry(int alMatrixTopNControlIndex) + { + this.alMatrixTopNControlIndex = alMatrixTopNControlIndex; + + instance.append(alMatrixTopNControlIndex); + } + + public int get_alMatrixTopNControlIndex() + { + return alMatrixTopNControlIndex; + } + + public int get_alMatrixTopNControlMatrixIndex() + { + return alMatrixTopNControlMatrixIndex; + } + + public int set_alMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlMatrixIndex = alMatrixTopNControlMatrixIndex; + alMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlMatrixIndex = undo_alMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlRateBase() + { + return alMatrixTopNControlRateBase; + } + + public int set_alMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRateBase = alMatrixTopNControlRateBase; + alMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRateBase = undo_alMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlTimeRemaining() + { + return alMatrixTopNControlTimeRemaining; + } + + public int set_alMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlTimeRemaining = alMatrixTopNControlTimeRemaining; + alMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlTimeRemaining = undo_alMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_alMatrixTopNControlGeneratedReports() + { + return alMatrixTopNControlGeneratedReports; + } + + public int get_alMatrixTopNControlDuration() + { + return alMatrixTopNControlDuration; + } + + public int get_alMatrixTopNControlRequestedSize() + { + return alMatrixTopNControlRequestedSize; + } + + public int set_alMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRequestedSize = alMatrixTopNControlRequestedSize; + alMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRequestedSize = undo_alMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlGrantedSize() + { + return alMatrixTopNControlGrantedSize; + } + + public long get_alMatrixTopNControlStartTime() + { + return alMatrixTopNControlStartTime; + } + + public byte[] get_alMatrixTopNControlOwner() + { + return alMatrixTopNControlOwner; + } + + public int set_alMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlOwner = alMatrixTopNControlOwner; + alMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + alMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlOwner = undo_alMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_alMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlStatus() + { + return alMatrixTopNControlStatus; + } + + public int set_alMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlStatus = alMatrixTopNControlStatus; + alMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlStatus = undo_alMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AlMatrixTopNControlEntryImpl.java b/test/dumps/jax/AlMatrixTopNControlEntryImpl.java new file mode 100644 index 0000000..9539380 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlEntryImpl.java @@ -0,0 +1,196 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixTopNControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNControlEntryImpl extends AlMatrixTopNControlEntry +{ + + // constructor + public AlMatrixTopNControlEntryImpl(int alMatrixTopNControlIndex) + { + super(alMatrixTopNControlIndex); + } + + public int get_alMatrixTopNControlMatrixIndex() + { + return alMatrixTopNControlMatrixIndex; + } + + public int set_alMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlMatrixIndex = alMatrixTopNControlMatrixIndex; + alMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlMatrixIndex = undo_alMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlRateBase() + { + return alMatrixTopNControlRateBase; + } + + public int set_alMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRateBase = alMatrixTopNControlRateBase; + alMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRateBase = undo_alMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlTimeRemaining() + { + return alMatrixTopNControlTimeRemaining; + } + + public int set_alMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlTimeRemaining = alMatrixTopNControlTimeRemaining; + alMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlTimeRemaining = undo_alMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_alMatrixTopNControlGeneratedReports() + { + return alMatrixTopNControlGeneratedReports; + } + + public int get_alMatrixTopNControlDuration() + { + return alMatrixTopNControlDuration; + } + + public int get_alMatrixTopNControlRequestedSize() + { + return alMatrixTopNControlRequestedSize; + } + + public int set_alMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRequestedSize = alMatrixTopNControlRequestedSize; + alMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRequestedSize = undo_alMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlGrantedSize() + { + return alMatrixTopNControlGrantedSize; + } + + public long get_alMatrixTopNControlStartTime() + { + return alMatrixTopNControlStartTime; + } + + public byte[] get_alMatrixTopNControlOwner() + { + return alMatrixTopNControlOwner; + } + + public int set_alMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlOwner = alMatrixTopNControlOwner; + alMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + alMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlOwner = undo_alMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_alMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlStatus() + { + return alMatrixTopNControlStatus; + } + + public int set_alMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlStatus = alMatrixTopNControlStatus; + alMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlStatus = undo_alMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AlMatrixTopNControlTable.java b/test/dumps/jax/AlMatrixTopNControlTable.java new file mode 100644 index 0000000..cf0192a --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixTopNControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixTopNControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1}; + + // constructors + public AlMatrixTopNControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AlMatrixTopNControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixTopNControlMatrixIndex + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlMatrixIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // alMatrixTopNControlRateBase + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlRateBase(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // alMatrixTopNControlTimeRemaining + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlTimeRemaining(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // alMatrixTopNControlGeneratedReports + { + long value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlGeneratedReports(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // alMatrixTopNControlDuration + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlDuration(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // alMatrixTopNControlRequestedSize + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlRequestedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // alMatrixTopNControlGrantedSize + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlGrantedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // alMatrixTopNControlStartTime + { + long value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlStartTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // alMatrixTopNControlOwner + { + byte[] value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // alMatrixTopNControlStatus + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // alMatrixTopNControlMatrixIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlMatrixIndex(phase, vb.intValue()); + } + case 3: // alMatrixTopNControlRateBase + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlRateBase(phase, vb.intValue()); + } + case 4: // alMatrixTopNControlTimeRemaining + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlTimeRemaining(phase, vb.intValue()); + } + case 7: // alMatrixTopNControlRequestedSize + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlRequestedSize(phase, vb.intValue()); + } + case 10: // alMatrixTopNControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlOwner(phase, vb.bytesValue()); + } + case 11: // alMatrixTopNControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNEntry.java b/test/dumps/jax/AlMatrixTopNEntry.java new file mode 100644 index 0000000..e59da54 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNEntry.java @@ -0,0 +1,98 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixTopNEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNEntry extends AgentXEntry +{ + + protected int alMatrixTopNIndex = 0; + protected int alMatrixTopNProtocolDirLocalIndex = 0; + protected byte[] alMatrixTopNSourceAddress = new byte[0]; + protected byte[] alMatrixTopNDestAddress = new byte[0]; + protected int alMatrixTopNAppProtocolDirLocalIndex = 0; + protected long alMatrixTopNPktRate = 0; + protected long alMatrixTopNReversePktRate = 0; + protected long alMatrixTopNOctetRate = 0; + protected long alMatrixTopNReverseOctetRate = 0; + // foreign indices + protected int alMatrixTopNControlIndex; + + public AlMatrixTopNEntry(int alMatrixTopNControlIndex, + int alMatrixTopNIndex) + { + this.alMatrixTopNControlIndex = alMatrixTopNControlIndex; + this.alMatrixTopNIndex = alMatrixTopNIndex; + + instance.append(alMatrixTopNControlIndex); + instance.append(alMatrixTopNIndex); + } + + public int get_alMatrixTopNControlIndex() + { + return alMatrixTopNControlIndex; + } + + public int get_alMatrixTopNIndex() + { + return alMatrixTopNIndex; + } + + public int get_alMatrixTopNProtocolDirLocalIndex() + { + return alMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_alMatrixTopNSourceAddress() + { + return alMatrixTopNSourceAddress; + } + + public byte[] get_alMatrixTopNDestAddress() + { + return alMatrixTopNDestAddress; + } + + public int get_alMatrixTopNAppProtocolDirLocalIndex() + { + return alMatrixTopNAppProtocolDirLocalIndex; + } + + public long get_alMatrixTopNPktRate() + { + return alMatrixTopNPktRate; + } + + public long get_alMatrixTopNReversePktRate() + { + return alMatrixTopNReversePktRate; + } + + public long get_alMatrixTopNOctetRate() + { + return alMatrixTopNOctetRate; + } + + public long get_alMatrixTopNReverseOctetRate() + { + return alMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNEntryImpl.java b/test/dumps/jax/AlMatrixTopNEntryImpl.java new file mode 100644 index 0000000..1ffff96 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNEntryImpl.java @@ -0,0 +1,71 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixTopNEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNEntryImpl extends AlMatrixTopNEntry +{ + + // constructor + public AlMatrixTopNEntryImpl(int alMatrixTopNControlIndex, + int alMatrixTopNIndex) + { + super(alMatrixTopNControlIndex, + alMatrixTopNIndex); + } + + public int get_alMatrixTopNProtocolDirLocalIndex() + { + return alMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_alMatrixTopNSourceAddress() + { + return alMatrixTopNSourceAddress; + } + + public byte[] get_alMatrixTopNDestAddress() + { + return alMatrixTopNDestAddress; + } + + public int get_alMatrixTopNAppProtocolDirLocalIndex() + { + return alMatrixTopNAppProtocolDirLocalIndex; + } + + public long get_alMatrixTopNPktRate() + { + return alMatrixTopNPktRate; + } + + public long get_alMatrixTopNReversePktRate() + { + return alMatrixTopNReversePktRate; + } + + public long get_alMatrixTopNOctetRate() + { + return alMatrixTopNOctetRate; + } + + public long get_alMatrixTopNReverseOctetRate() + { + return alMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNTable.java b/test/dumps/jax/AlMatrixTopNTable.java new file mode 100644 index 0000000..01c3ab9 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNTable.java @@ -0,0 +1,128 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixTopNTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixTopNTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1}; + + // constructors + public AlMatrixTopNTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AlMatrixTopNTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixTopNProtocolDirLocalIndex + { + int value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // alMatrixTopNSourceAddress + { + byte[] value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNSourceAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // alMatrixTopNDestAddress + { + byte[] value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // alMatrixTopNAppProtocolDirLocalIndex + { + int value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNAppProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // alMatrixTopNPktRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNPktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // alMatrixTopNReversePktRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNReversePktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // alMatrixTopNOctetRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 9: // alMatrixTopNReverseOctetRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNReverseOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AuthenticationFailure.java b/test/dumps/jax/AuthenticationFailure.java new file mode 100644 index 0000000..3b530d8 --- /dev/null +++ b/test/dumps/jax/AuthenticationFailure.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AuthenticationFailure.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class AuthenticationFailure extends AgentXNotification +{ + + private final static long[] authenticationFailure_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 5}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(authenticationFailure_OID)); + + + + public AuthenticationFailure() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicEntry.java b/test/dumps/jax/BroadMauBasicEntry.java new file mode 100644 index 0000000..8a7fbf4 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicEntry.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row broadMauBasicEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class BroadMauBasicEntry extends AgentXEntry +{ + + protected int broadMauIfIndex = 0; + protected int broadMauIndex = 0; + protected int broadMauXmtRcvSplitType = 0; + protected int broadMauXmtCarrierFreq = 0; + protected int broadMauTranslationFreq = 0; + + public BroadMauBasicEntry(int broadMauIfIndex, + int broadMauIndex) + { + this.broadMauIfIndex = broadMauIfIndex; + this.broadMauIndex = broadMauIndex; + + instance.append(broadMauIfIndex); + instance.append(broadMauIndex); + } + + public int get_broadMauIfIndex() + { + return broadMauIfIndex; + } + + public int get_broadMauIndex() + { + return broadMauIndex; + } + + public int get_broadMauXmtRcvSplitType() + { + return broadMauXmtRcvSplitType; + } + + public int get_broadMauXmtCarrierFreq() + { + return broadMauXmtCarrierFreq; + } + + public int get_broadMauTranslationFreq() + { + return broadMauTranslationFreq; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicEntryImpl.java b/test/dumps/jax/BroadMauBasicEntryImpl.java new file mode 100644 index 0000000..14fc329 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicEntryImpl.java @@ -0,0 +1,56 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row broadMauBasicEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class BroadMauBasicEntryImpl extends BroadMauBasicEntry +{ + + // constructor + public BroadMauBasicEntryImpl(int broadMauIfIndex, + int broadMauIndex) + { + super(broadMauIfIndex, + broadMauIndex); + } + + public int get_broadMauIfIndex() + { + return broadMauIfIndex; + } + + public int get_broadMauIndex() + { + return broadMauIndex; + } + + public int get_broadMauXmtRcvSplitType() + { + return broadMauXmtRcvSplitType; + } + + public int get_broadMauXmtCarrierFreq() + { + return broadMauXmtCarrierFreq; + } + + public int get_broadMauTranslationFreq() + { + return broadMauTranslationFreq; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicTable.java b/test/dumps/jax/BroadMauBasicTable.java new file mode 100644 index 0000000..76d01a4 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicTable.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table broadMauBasicTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class BroadMauBasicTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1}; + + // constructors + public BroadMauBasicTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public BroadMauBasicTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // broadMauIfIndex + { + int value = ((BroadMauBasicEntry)entry).get_broadMauIfIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // broadMauIndex + { + int value = ((BroadMauBasicEntry)entry).get_broadMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // broadMauXmtRcvSplitType + { + int value = ((BroadMauBasicEntry)entry).get_broadMauXmtRcvSplitType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // broadMauXmtCarrierFreq + { + int value = ((BroadMauBasicEntry)entry).get_broadMauXmtCarrierFreq(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // broadMauTranslationFreq + { + int value = ((BroadMauBasicEntry)entry).get_broadMauTranslationFreq(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Channel2Entry.java b/test/dumps/jax/Channel2Entry.java new file mode 100644 index 0000000..2641c85 --- /dev/null +++ b/test/dumps/jax/Channel2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row channel2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Channel2Entry extends AgentXEntry +{ + + protected long channelDroppedFrames = 0; + protected long channelCreateTime = 0; + + public Channel2Entry() + { + + } + + public long get_channelDroppedFrames() + { + return channelDroppedFrames; + } + + public long get_channelCreateTime() + { + return channelCreateTime; + } + +} + diff --git a/test/dumps/jax/Channel2EntryImpl.java b/test/dumps/jax/Channel2EntryImpl.java new file mode 100644 index 0000000..ee40b84 --- /dev/null +++ b/test/dumps/jax/Channel2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row channel2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Channel2EntryImpl extends Channel2Entry +{ + + // constructor + public Channel2EntryImpl() + { + super(); + } + + public long get_channelDroppedFrames() + { + return channelDroppedFrames; + } + + public long get_channelCreateTime() + { + return channelCreateTime; + } + +} + diff --git a/test/dumps/jax/Channel2Table.java b/test/dumps/jax/Channel2Table.java new file mode 100644 index 0000000..22f4374 --- /dev/null +++ b/test/dumps/jax/Channel2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table channel2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class Channel2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1}; + + // constructors + public Channel2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public Channel2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // channelDroppedFrames + { + long value = ((Channel2Entry)entry).get_channelDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // channelCreateTime + { + long value = ((Channel2Entry)entry).get_channelCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ColdStart.java b/test/dumps/jax/ColdStart.java new file mode 100644 index 0000000..89fd67c --- /dev/null +++ b/test/dumps/jax/ColdStart.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ColdStart.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class ColdStart extends AgentXNotification +{ + + private final static long[] coldStart_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 1}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(coldStart_OID)); + + + + public ColdStart() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/EtherStats2Entry.java b/test/dumps/jax/EtherStats2Entry.java new file mode 100644 index 0000000..a30c38c --- /dev/null +++ b/test/dumps/jax/EtherStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row etherStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class EtherStats2Entry extends AgentXEntry +{ + + protected long etherStatsDroppedFrames = 0; + protected long etherStatsCreateTime = 0; + + public EtherStats2Entry() + { + + } + + public long get_etherStatsDroppedFrames() + { + return etherStatsDroppedFrames; + } + + public long get_etherStatsCreateTime() + { + return etherStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/EtherStats2EntryImpl.java b/test/dumps/jax/EtherStats2EntryImpl.java new file mode 100644 index 0000000..cee2b50 --- /dev/null +++ b/test/dumps/jax/EtherStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row etherStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class EtherStats2EntryImpl extends EtherStats2Entry +{ + + // constructor + public EtherStats2EntryImpl() + { + super(); + } + + public long get_etherStatsDroppedFrames() + { + return etherStatsDroppedFrames; + } + + public long get_etherStatsCreateTime() + { + return etherStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/EtherStats2Table.java b/test/dumps/jax/EtherStats2Table.java new file mode 100644 index 0000000..13edd46 --- /dev/null +++ b/test/dumps/jax/EtherStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table etherStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class EtherStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1}; + + // constructors + public EtherStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public EtherStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // etherStatsDroppedFrames + { + long value = ((EtherStats2Entry)entry).get_etherStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // etherStatsCreateTime + { + long value = ((EtherStats2Entry)entry).get_etherStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Filter2Entry.java b/test/dumps/jax/Filter2Entry.java new file mode 100644 index 0000000..d5c8227 --- /dev/null +++ b/test/dumps/jax/Filter2Entry.java @@ -0,0 +1,84 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row filter2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Filter2Entry extends AgentXEntry +{ + + protected int filterProtocolDirDataLocalIndex = 0; + protected int undo_filterProtocolDirDataLocalIndex = 0; + protected int filterProtocolDirLocalIndex = 0; + protected int undo_filterProtocolDirLocalIndex = 0; + + public Filter2Entry() + { + + } + + public int get_filterProtocolDirDataLocalIndex() + { + return filterProtocolDirDataLocalIndex; + } + + public int set_filterProtocolDirDataLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirDataLocalIndex = filterProtocolDirDataLocalIndex; + filterProtocolDirDataLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirDataLocalIndex = undo_filterProtocolDirDataLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_filterProtocolDirLocalIndex() + { + return filterProtocolDirLocalIndex; + } + + public int set_filterProtocolDirLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirLocalIndex = filterProtocolDirLocalIndex; + filterProtocolDirLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirLocalIndex = undo_filterProtocolDirLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/Filter2EntryImpl.java b/test/dumps/jax/Filter2EntryImpl.java new file mode 100644 index 0000000..b6be7d7 --- /dev/null +++ b/test/dumps/jax/Filter2EntryImpl.java @@ -0,0 +1,77 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row filter2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Filter2EntryImpl extends Filter2Entry +{ + + // constructor + public Filter2EntryImpl() + { + super(); + } + + public int get_filterProtocolDirDataLocalIndex() + { + return filterProtocolDirDataLocalIndex; + } + + public int set_filterProtocolDirDataLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirDataLocalIndex = filterProtocolDirDataLocalIndex; + filterProtocolDirDataLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirDataLocalIndex = undo_filterProtocolDirDataLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_filterProtocolDirLocalIndex() + { + return filterProtocolDirLocalIndex; + } + + public int set_filterProtocolDirLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirLocalIndex = filterProtocolDirLocalIndex; + filterProtocolDirLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirLocalIndex = undo_filterProtocolDirLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/Filter2Table.java b/test/dumps/jax/Filter2Table.java new file mode 100644 index 0000000..d6ebdf4 --- /dev/null +++ b/test/dumps/jax/Filter2Table.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table filter2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class Filter2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1}; + + // constructors + public Filter2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public Filter2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // filterProtocolDirDataLocalIndex + { + int value = ((Filter2Entry)entry).get_filterProtocolDirDataLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // filterProtocolDirLocalIndex + { + int value = ((Filter2Entry)entry).get_filterProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // filterProtocolDirDataLocalIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((Filter2Entry)entry).set_filterProtocolDirDataLocalIndex(phase, vb.intValue()); + } + case 2: // filterProtocolDirLocalIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((Filter2Entry)entry).set_filterProtocolDirLocalIndex(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HistoryControl2Entry.java b/test/dumps/jax/HistoryControl2Entry.java new file mode 100644 index 0000000..328b6ef --- /dev/null +++ b/test/dumps/jax/HistoryControl2Entry.java @@ -0,0 +1,38 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row historyControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HistoryControl2Entry extends AgentXEntry +{ + + protected long historyControlDroppedFrames = 0; + + public HistoryControl2Entry() + { + + } + + public long get_historyControlDroppedFrames() + { + return historyControlDroppedFrames; + } + +} + diff --git a/test/dumps/jax/HistoryControl2EntryImpl.java b/test/dumps/jax/HistoryControl2EntryImpl.java new file mode 100644 index 0000000..35d6198 --- /dev/null +++ b/test/dumps/jax/HistoryControl2EntryImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row historyControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HistoryControl2EntryImpl extends HistoryControl2Entry +{ + + // constructor + public HistoryControl2EntryImpl() + { + super(); + } + + public long get_historyControlDroppedFrames() + { + return historyControlDroppedFrames; + } + +} + diff --git a/test/dumps/jax/HistoryControl2Table.java b/test/dumps/jax/HistoryControl2Table.java new file mode 100644 index 0000000..41e27f0 --- /dev/null +++ b/test/dumps/jax/HistoryControl2Table.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table historyControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HistoryControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1}; + + // constructors + public HistoryControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + } + + public HistoryControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // historyControlDroppedFrames + { + long value = ((HistoryControl2Entry)entry).get_historyControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HlHostControlEntry.java b/test/dumps/jax/HlHostControlEntry.java new file mode 100644 index 0000000..b34fc76 --- /dev/null +++ b/test/dumps/jax/HlHostControlEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hlHostControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlHostControlEntry extends AgentXEntry +{ + + protected int hlHostControlIndex = 0; + protected AgentXOID hlHostControlDataSource = new AgentXOID(); + protected AgentXOID undo_hlHostControlDataSource = new AgentXOID(); + protected long hlHostControlNlDroppedFrames = 0; + protected long hlHostControlNlInserts = 0; + protected long hlHostControlNlDeletes = 0; + protected int hlHostControlNlMaxDesiredEntries = 0; + protected int undo_hlHostControlNlMaxDesiredEntries = 0; + protected long hlHostControlAlDroppedFrames = 0; + protected long hlHostControlAlInserts = 0; + protected long hlHostControlAlDeletes = 0; + protected int hlHostControlAlMaxDesiredEntries = 0; + protected int undo_hlHostControlAlMaxDesiredEntries = 0; + protected byte[] hlHostControlOwner = new byte[0]; + protected byte[] undo_hlHostControlOwner = new byte[0]; + protected int hlHostControlStatus = 0; + protected int undo_hlHostControlStatus = 0; + + public HlHostControlEntry(int hlHostControlIndex) + { + this.hlHostControlIndex = hlHostControlIndex; + + instance.append(hlHostControlIndex); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public AgentXOID get_hlHostControlDataSource() + { + return hlHostControlDataSource; + } + + public int set_hlHostControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlDataSource = hlHostControlDataSource; + hlHostControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlDataSource = undo_hlHostControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlNlDroppedFrames() + { + return hlHostControlNlDroppedFrames; + } + + public long get_hlHostControlNlInserts() + { + return hlHostControlNlInserts; + } + + public long get_hlHostControlNlDeletes() + { + return hlHostControlNlDeletes; + } + + public int get_hlHostControlNlMaxDesiredEntries() + { + return hlHostControlNlMaxDesiredEntries; + } + + public int set_hlHostControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlNlMaxDesiredEntries = hlHostControlNlMaxDesiredEntries; + hlHostControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlNlMaxDesiredEntries = undo_hlHostControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlAlDroppedFrames() + { + return hlHostControlAlDroppedFrames; + } + + public long get_hlHostControlAlInserts() + { + return hlHostControlAlInserts; + } + + public long get_hlHostControlAlDeletes() + { + return hlHostControlAlDeletes; + } + + public int get_hlHostControlAlMaxDesiredEntries() + { + return hlHostControlAlMaxDesiredEntries; + } + + public int set_hlHostControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlAlMaxDesiredEntries = hlHostControlAlMaxDesiredEntries; + hlHostControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlAlMaxDesiredEntries = undo_hlHostControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlHostControlOwner() + { + return hlHostControlOwner; + } + + public int set_hlHostControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlOwner = hlHostControlOwner; + hlHostControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlHostControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlHostControlOwner = undo_hlHostControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlHostControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlHostControlStatus() + { + return hlHostControlStatus; + } + + public int set_hlHostControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlStatus = hlHostControlStatus; + hlHostControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlStatus = undo_hlHostControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlHostControlEntryImpl.java b/test/dumps/jax/HlHostControlEntryImpl.java new file mode 100644 index 0000000..656d271 --- /dev/null +++ b/test/dumps/jax/HlHostControlEntryImpl.java @@ -0,0 +1,182 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hlHostControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlHostControlEntryImpl extends HlHostControlEntry +{ + + // constructor + public HlHostControlEntryImpl(int hlHostControlIndex) + { + super(hlHostControlIndex); + } + + public AgentXOID get_hlHostControlDataSource() + { + return hlHostControlDataSource; + } + + public int set_hlHostControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlDataSource = hlHostControlDataSource; + hlHostControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlDataSource = undo_hlHostControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlNlDroppedFrames() + { + return hlHostControlNlDroppedFrames; + } + + public long get_hlHostControlNlInserts() + { + return hlHostControlNlInserts; + } + + public long get_hlHostControlNlDeletes() + { + return hlHostControlNlDeletes; + } + + public int get_hlHostControlNlMaxDesiredEntries() + { + return hlHostControlNlMaxDesiredEntries; + } + + public int set_hlHostControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlNlMaxDesiredEntries = hlHostControlNlMaxDesiredEntries; + hlHostControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlNlMaxDesiredEntries = undo_hlHostControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlAlDroppedFrames() + { + return hlHostControlAlDroppedFrames; + } + + public long get_hlHostControlAlInserts() + { + return hlHostControlAlInserts; + } + + public long get_hlHostControlAlDeletes() + { + return hlHostControlAlDeletes; + } + + public int get_hlHostControlAlMaxDesiredEntries() + { + return hlHostControlAlMaxDesiredEntries; + } + + public int set_hlHostControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlAlMaxDesiredEntries = hlHostControlAlMaxDesiredEntries; + hlHostControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlAlMaxDesiredEntries = undo_hlHostControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlHostControlOwner() + { + return hlHostControlOwner; + } + + public int set_hlHostControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlOwner = hlHostControlOwner; + hlHostControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlHostControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlHostControlOwner = undo_hlHostControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlHostControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlHostControlStatus() + { + return hlHostControlStatus; + } + + public int set_hlHostControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlStatus = hlHostControlStatus; + hlHostControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlStatus = undo_hlHostControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlHostControlTable.java b/test/dumps/jax/HlHostControlTable.java new file mode 100644 index 0000000..175850c --- /dev/null +++ b/test/dumps/jax/HlHostControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hlHostControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HlHostControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1}; + + // constructors + public HlHostControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public HlHostControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // hlHostControlDataSource + { + AgentXOID value = ((HlHostControlEntry)entry).get_hlHostControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // hlHostControlNlDroppedFrames + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // hlHostControlNlInserts + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // hlHostControlNlDeletes + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // hlHostControlNlMaxDesiredEntries + { + int value = ((HlHostControlEntry)entry).get_hlHostControlNlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // hlHostControlAlDroppedFrames + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // hlHostControlAlInserts + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // hlHostControlAlDeletes + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // hlHostControlAlMaxDesiredEntries + { + int value = ((HlHostControlEntry)entry).get_hlHostControlAlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // hlHostControlOwner + { + byte[] value = ((HlHostControlEntry)entry).get_hlHostControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // hlHostControlStatus + { + int value = ((HlHostControlEntry)entry).get_hlHostControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // hlHostControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlDataSource(phase, vb.AgentXOIDValue()); + } + case 6: // hlHostControlNlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlNlMaxDesiredEntries(phase, vb.intValue()); + } + case 10: // hlHostControlAlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlAlMaxDesiredEntries(phase, vb.intValue()); + } + case 11: // hlHostControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlOwner(phase, vb.bytesValue()); + } + case 12: // hlHostControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HlMatrixControlEntry.java b/test/dumps/jax/HlMatrixControlEntry.java new file mode 100644 index 0000000..feb65ff --- /dev/null +++ b/test/dumps/jax/HlMatrixControlEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hlMatrixControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlMatrixControlEntry extends AgentXEntry +{ + + protected int hlMatrixControlIndex = 0; + protected AgentXOID hlMatrixControlDataSource = new AgentXOID(); + protected AgentXOID undo_hlMatrixControlDataSource = new AgentXOID(); + protected long hlMatrixControlNlDroppedFrames = 0; + protected long hlMatrixControlNlInserts = 0; + protected long hlMatrixControlNlDeletes = 0; + protected int hlMatrixControlNlMaxDesiredEntries = 0; + protected int undo_hlMatrixControlNlMaxDesiredEntries = 0; + protected long hlMatrixControlAlDroppedFrames = 0; + protected long hlMatrixControlAlInserts = 0; + protected long hlMatrixControlAlDeletes = 0; + protected int hlMatrixControlAlMaxDesiredEntries = 0; + protected int undo_hlMatrixControlAlMaxDesiredEntries = 0; + protected byte[] hlMatrixControlOwner = new byte[0]; + protected byte[] undo_hlMatrixControlOwner = new byte[0]; + protected int hlMatrixControlStatus = 0; + protected int undo_hlMatrixControlStatus = 0; + + public HlMatrixControlEntry(int hlMatrixControlIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + + instance.append(hlMatrixControlIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public AgentXOID get_hlMatrixControlDataSource() + { + return hlMatrixControlDataSource; + } + + public int set_hlMatrixControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlDataSource = hlMatrixControlDataSource; + hlMatrixControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlDataSource = undo_hlMatrixControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlNlDroppedFrames() + { + return hlMatrixControlNlDroppedFrames; + } + + public long get_hlMatrixControlNlInserts() + { + return hlMatrixControlNlInserts; + } + + public long get_hlMatrixControlNlDeletes() + { + return hlMatrixControlNlDeletes; + } + + public int get_hlMatrixControlNlMaxDesiredEntries() + { + return hlMatrixControlNlMaxDesiredEntries; + } + + public int set_hlMatrixControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlNlMaxDesiredEntries = hlMatrixControlNlMaxDesiredEntries; + hlMatrixControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlNlMaxDesiredEntries = undo_hlMatrixControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlAlDroppedFrames() + { + return hlMatrixControlAlDroppedFrames; + } + + public long get_hlMatrixControlAlInserts() + { + return hlMatrixControlAlInserts; + } + + public long get_hlMatrixControlAlDeletes() + { + return hlMatrixControlAlDeletes; + } + + public int get_hlMatrixControlAlMaxDesiredEntries() + { + return hlMatrixControlAlMaxDesiredEntries; + } + + public int set_hlMatrixControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlAlMaxDesiredEntries = hlMatrixControlAlMaxDesiredEntries; + hlMatrixControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlAlMaxDesiredEntries = undo_hlMatrixControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlMatrixControlOwner() + { + return hlMatrixControlOwner; + } + + public int set_hlMatrixControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlOwner = hlMatrixControlOwner; + hlMatrixControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlMatrixControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlOwner = undo_hlMatrixControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlMatrixControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlMatrixControlStatus() + { + return hlMatrixControlStatus; + } + + public int set_hlMatrixControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlStatus = hlMatrixControlStatus; + hlMatrixControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlStatus = undo_hlMatrixControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlMatrixControlEntryImpl.java b/test/dumps/jax/HlMatrixControlEntryImpl.java new file mode 100644 index 0000000..8956dd4 --- /dev/null +++ b/test/dumps/jax/HlMatrixControlEntryImpl.java @@ -0,0 +1,182 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hlMatrixControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlMatrixControlEntryImpl extends HlMatrixControlEntry +{ + + // constructor + public HlMatrixControlEntryImpl(int hlMatrixControlIndex) + { + super(hlMatrixControlIndex); + } + + public AgentXOID get_hlMatrixControlDataSource() + { + return hlMatrixControlDataSource; + } + + public int set_hlMatrixControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlDataSource = hlMatrixControlDataSource; + hlMatrixControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlDataSource = undo_hlMatrixControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlNlDroppedFrames() + { + return hlMatrixControlNlDroppedFrames; + } + + public long get_hlMatrixControlNlInserts() + { + return hlMatrixControlNlInserts; + } + + public long get_hlMatrixControlNlDeletes() + { + return hlMatrixControlNlDeletes; + } + + public int get_hlMatrixControlNlMaxDesiredEntries() + { + return hlMatrixControlNlMaxDesiredEntries; + } + + public int set_hlMatrixControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlNlMaxDesiredEntries = hlMatrixControlNlMaxDesiredEntries; + hlMatrixControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlNlMaxDesiredEntries = undo_hlMatrixControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlAlDroppedFrames() + { + return hlMatrixControlAlDroppedFrames; + } + + public long get_hlMatrixControlAlInserts() + { + return hlMatrixControlAlInserts; + } + + public long get_hlMatrixControlAlDeletes() + { + return hlMatrixControlAlDeletes; + } + + public int get_hlMatrixControlAlMaxDesiredEntries() + { + return hlMatrixControlAlMaxDesiredEntries; + } + + public int set_hlMatrixControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlAlMaxDesiredEntries = hlMatrixControlAlMaxDesiredEntries; + hlMatrixControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlAlMaxDesiredEntries = undo_hlMatrixControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlMatrixControlOwner() + { + return hlMatrixControlOwner; + } + + public int set_hlMatrixControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlOwner = hlMatrixControlOwner; + hlMatrixControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlMatrixControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlOwner = undo_hlMatrixControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlMatrixControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlMatrixControlStatus() + { + return hlMatrixControlStatus; + } + + public int set_hlMatrixControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlStatus = hlMatrixControlStatus; + hlMatrixControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlStatus = undo_hlMatrixControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlMatrixControlTable.java b/test/dumps/jax/HlMatrixControlTable.java new file mode 100644 index 0000000..7d293d4 --- /dev/null +++ b/test/dumps/jax/HlMatrixControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hlMatrixControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HlMatrixControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1}; + + // constructors + public HlMatrixControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public HlMatrixControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // hlMatrixControlDataSource + { + AgentXOID value = ((HlMatrixControlEntry)entry).get_hlMatrixControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // hlMatrixControlNlDroppedFrames + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // hlMatrixControlNlInserts + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // hlMatrixControlNlDeletes + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // hlMatrixControlNlMaxDesiredEntries + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // hlMatrixControlAlDroppedFrames + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // hlMatrixControlAlInserts + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // hlMatrixControlAlDeletes + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // hlMatrixControlAlMaxDesiredEntries + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // hlMatrixControlOwner + { + byte[] value = ((HlMatrixControlEntry)entry).get_hlMatrixControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // hlMatrixControlStatus + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // hlMatrixControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlDataSource(phase, vb.AgentXOIDValue()); + } + case 6: // hlMatrixControlNlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlNlMaxDesiredEntries(phase, vb.intValue()); + } + case 10: // hlMatrixControlAlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlAlMaxDesiredEntries(phase, vb.intValue()); + } + case 11: // hlMatrixControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlOwner(phase, vb.bytesValue()); + } + case 12: // hlMatrixControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HostControl2Entry.java b/test/dumps/jax/HostControl2Entry.java new file mode 100644 index 0000000..0550269 --- /dev/null +++ b/test/dumps/jax/HostControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hostControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HostControl2Entry extends AgentXEntry +{ + + protected long hostControlDroppedFrames = 0; + protected long hostControlCreateTime = 0; + + public HostControl2Entry() + { + + } + + public long get_hostControlDroppedFrames() + { + return hostControlDroppedFrames; + } + + public long get_hostControlCreateTime() + { + return hostControlCreateTime; + } + +} + diff --git a/test/dumps/jax/HostControl2EntryImpl.java b/test/dumps/jax/HostControl2EntryImpl.java new file mode 100644 index 0000000..f26e49b --- /dev/null +++ b/test/dumps/jax/HostControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hostControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HostControl2EntryImpl extends HostControl2Entry +{ + + // constructor + public HostControl2EntryImpl() + { + super(); + } + + public long get_hostControlDroppedFrames() + { + return hostControlDroppedFrames; + } + + public long get_hostControlCreateTime() + { + return hostControlCreateTime; + } + +} + diff --git a/test/dumps/jax/HostControl2Table.java b/test/dumps/jax/HostControl2Table.java new file mode 100644 index 0000000..ebd962f --- /dev/null +++ b/test/dumps/jax/HostControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hostControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HostControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1}; + + // constructors + public HostControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public HostControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // hostControlDroppedFrames + { + long value = ((HostControl2Entry)entry).get_hostControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // hostControlCreateTime + { + long value = ((HostControl2Entry)entry).get_hostControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfEntry.java b/test/dumps/jax/IfEntry.java new file mode 100644 index 0000000..e85ce77 --- /dev/null +++ b/test/dumps/jax/IfEntry.java @@ -0,0 +1,186 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfEntry extends AgentXEntry +{ + + protected int ifIndex = 0; + protected byte[] ifDescr = new byte[0]; + protected int ifType = 0; + protected int ifMtu = 0; + protected long ifSpeed = 0; + protected byte[] ifPhysAddress = new byte[0]; + protected int ifAdminStatus = 0; + protected int undo_ifAdminStatus = 0; + protected int ifOperStatus = 0; + protected long ifLastChange = 0; + protected long ifInOctets = 0; + protected long ifInUcastPkts = 0; + protected long ifInNUcastPkts = 0; + protected long ifInDiscards = 0; + protected long ifInErrors = 0; + protected long ifInUnknownProtos = 0; + protected long ifOutOctets = 0; + protected long ifOutUcastPkts = 0; + protected long ifOutNUcastPkts = 0; + protected long ifOutDiscards = 0; + protected long ifOutErrors = 0; + protected long ifOutQLen = 0; + protected AgentXOID ifSpecific = new AgentXOID(); + + public IfEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifDescr() + { + return ifDescr; + } + + public int get_ifType() + { + return ifType; + } + + public int get_ifMtu() + { + return ifMtu; + } + + public long get_ifSpeed() + { + return ifSpeed; + } + + public byte[] get_ifPhysAddress() + { + return ifPhysAddress; + } + + public int get_ifAdminStatus() + { + return ifAdminStatus; + } + + public int set_ifAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAdminStatus = ifAdminStatus; + ifAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifAdminStatus = undo_ifAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifOperStatus() + { + return ifOperStatus; + } + + public long get_ifLastChange() + { + return ifLastChange; + } + + public long get_ifInOctets() + { + return ifInOctets; + } + + public long get_ifInUcastPkts() + { + return ifInUcastPkts; + } + + public long get_ifInNUcastPkts() + { + return ifInNUcastPkts; + } + + public long get_ifInDiscards() + { + return ifInDiscards; + } + + public long get_ifInErrors() + { + return ifInErrors; + } + + public long get_ifInUnknownProtos() + { + return ifInUnknownProtos; + } + + public long get_ifOutOctets() + { + return ifOutOctets; + } + + public long get_ifOutUcastPkts() + { + return ifOutUcastPkts; + } + + public long get_ifOutNUcastPkts() + { + return ifOutNUcastPkts; + } + + public long get_ifOutDiscards() + { + return ifOutDiscards; + } + + public long get_ifOutErrors() + { + return ifOutErrors; + } + + public long get_ifOutQLen() + { + return ifOutQLen; + } + + public AgentXOID get_ifSpecific() + { + return ifSpecific; + } + +} + diff --git a/test/dumps/jax/IfEntryImpl.java b/test/dumps/jax/IfEntryImpl.java new file mode 100644 index 0000000..4ec89a2 --- /dev/null +++ b/test/dumps/jax/IfEntryImpl.java @@ -0,0 +1,158 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfEntryImpl extends IfEntry +{ + + // constructor + public IfEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifDescr() + { + return ifDescr; + } + + public int get_ifType() + { + return ifType; + } + + public int get_ifMtu() + { + return ifMtu; + } + + public long get_ifSpeed() + { + return ifSpeed; + } + + public byte[] get_ifPhysAddress() + { + return ifPhysAddress; + } + + public int get_ifAdminStatus() + { + return ifAdminStatus; + } + + public int set_ifAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAdminStatus = ifAdminStatus; + ifAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifAdminStatus = undo_ifAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifOperStatus() + { + return ifOperStatus; + } + + public long get_ifLastChange() + { + return ifLastChange; + } + + public long get_ifInOctets() + { + return ifInOctets; + } + + public long get_ifInUcastPkts() + { + return ifInUcastPkts; + } + + public long get_ifInNUcastPkts() + { + return ifInNUcastPkts; + } + + public long get_ifInDiscards() + { + return ifInDiscards; + } + + public long get_ifInErrors() + { + return ifInErrors; + } + + public long get_ifInUnknownProtos() + { + return ifInUnknownProtos; + } + + public long get_ifOutOctets() + { + return ifOutOctets; + } + + public long get_ifOutUcastPkts() + { + return ifOutUcastPkts; + } + + public long get_ifOutNUcastPkts() + { + return ifOutNUcastPkts; + } + + public long get_ifOutDiscards() + { + return ifOutDiscards; + } + + public long get_ifOutErrors() + { + return ifOutErrors; + } + + public long get_ifOutQLen() + { + return ifOutQLen; + } + + public AgentXOID get_ifSpecific() + { + return ifSpecific; + } + +} + diff --git a/test/dumps/jax/IfJackEntry.java b/test/dumps/jax/IfJackEntry.java new file mode 100644 index 0000000..1422f0c --- /dev/null +++ b/test/dumps/jax/IfJackEntry.java @@ -0,0 +1,65 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifJackEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfJackEntry extends AgentXEntry +{ + + protected int ifJackIndex = 0; + protected int ifJackType = 0; + // foreign indices + protected int ifMauIfIndex; + protected int ifMauIndex; + + public IfJackEntry(int ifMauIfIndex, + int ifMauIndex, + int ifJackIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + this.ifJackIndex = ifJackIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + instance.append(ifJackIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public int get_ifJackIndex() + { + return ifJackIndex; + } + + public int get_ifJackType() + { + return ifJackType; + } + +} + diff --git a/test/dumps/jax/IfJackEntryImpl.java b/test/dumps/jax/IfJackEntryImpl.java new file mode 100644 index 0000000..eb5f6ec --- /dev/null +++ b/test/dumps/jax/IfJackEntryImpl.java @@ -0,0 +1,38 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifJackEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfJackEntryImpl extends IfJackEntry +{ + + // constructor + public IfJackEntryImpl(int ifMauIfIndex, + int ifMauIndex, + int ifJackIndex) + { + super(ifMauIfIndex, + ifMauIndex, + ifJackIndex); + } + + public int get_ifJackType() + { + return ifJackType; + } + +} + diff --git a/test/dumps/jax/IfJackTable.java b/test/dumps/jax/IfJackTable.java new file mode 100644 index 0000000..12cdd20 --- /dev/null +++ b/test/dumps/jax/IfJackTable.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifJackTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfJackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1}; + + // constructors + public IfJackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public IfJackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // ifJackType + { + int value = ((IfJackEntry)entry).get_ifJackType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfMIBObjects.java b/test/dumps/jax/IfMIBObjects.java new file mode 100644 index 0000000..d46cf56 --- /dev/null +++ b/test/dumps/jax/IfMIBObjects.java @@ -0,0 +1,97 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMIBObjects.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group ifMIBObjects defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class IfMIBObjects extends AgentXScalars +{ + + private final static long[] IfMIBObjectsOID = {1, 3, 6, 1, 2, 1, 31, 1}; + + protected AgentXOID IfTableLastChangeOID; + protected final static long[] IfTableLastChangeName = {1, 3, 6, 1, 2, 1, 31, 1, 5, 0}; + protected long ifTableLastChange = 0; + protected AgentXOID IfStackLastChangeOID; + protected final static long[] IfStackLastChangeName = {1, 3, 6, 1, 2, 1, 31, 1, 6, 0}; + protected long ifStackLastChange = 0; + public IfMIBObjects() + { + oid = new AgentXOID(IfMIBObjectsOID); + data = new Vector(); + IfTableLastChangeOID = new AgentXOID(IfTableLastChangeName); + data.addElement(IfTableLastChangeOID); + IfStackLastChangeOID = new AgentXOID(IfStackLastChangeName); + data.addElement(IfStackLastChangeOID); + } + + public long get_ifTableLastChange() + { + return ifTableLastChange; + } + + public long get_ifStackLastChange() + { + return ifStackLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == IfTableLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_ifTableLastChange()); + if (pos == IfStackLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_ifStackLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == IfTableLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_ifTableLastChange()); + if (pos == IfStackLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_ifStackLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/IfMIBObjectsImpl.java b/test/dumps/jax/IfMIBObjectsImpl.java new file mode 100644 index 0000000..4d32180 --- /dev/null +++ b/test/dumps/jax/IfMIBObjectsImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMIBObjectsImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group ifMIBObjects defined in IF-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class IfMIBObjectsImpl extends IfMIBObjects +{ + + public long get_ifTableLastChange() + { + return ifTableLastChange; + } + + public long get_ifStackLastChange() + { + return ifStackLastChange; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegEntry.java b/test/dumps/jax/IfMauAutoNegEntry.java new file mode 100644 index 0000000..4a1e574 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegEntry.java @@ -0,0 +1,225 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifMauAutoNegEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauAutoNegEntry extends AgentXEntry +{ + + protected int ifMauAutoNegAdminStatus = 0; + protected int undo_ifMauAutoNegAdminStatus = 0; + protected int ifMauAutoNegRemoteSignaling = 0; + protected int ifMauAutoNegConfig = 0; + protected int ifMauAutoNegCapability = 0; + protected int ifMauAutoNegCapAdvertised = 0; + protected int undo_ifMauAutoNegCapAdvertised = 0; + protected int ifMauAutoNegCapReceived = 0; + protected int ifMauAutoNegRestart = 0; + protected int undo_ifMauAutoNegRestart = 0; + protected byte[] ifMauAutoNegCapabilityBits = new byte[0]; + protected byte[] ifMauAutoNegCapAdvertisedBits = new byte[0]; + protected byte[] undo_ifMauAutoNegCapAdvertisedBits = new byte[0]; + protected byte[] ifMauAutoNegCapReceivedBits = new byte[0]; + protected int ifMauAutoNegRemoteFaultAdvertised = 0; + protected int undo_ifMauAutoNegRemoteFaultAdvertised = 0; + protected int ifMauAutoNegRemoteFaultReceived = 0; + // foreign indices + protected int ifMauIfIndex; + protected int ifMauIndex; + + public IfMauAutoNegEntry(int ifMauIfIndex, + int ifMauIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public int get_ifMauAutoNegAdminStatus() + { + return ifMauAutoNegAdminStatus; + } + + public int set_ifMauAutoNegAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegAdminStatus = ifMauAutoNegAdminStatus; + ifMauAutoNegAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegAdminStatus = undo_ifMauAutoNegAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteSignaling() + { + return ifMauAutoNegRemoteSignaling; + } + + public int get_ifMauAutoNegConfig() + { + return ifMauAutoNegConfig; + } + + public int get_ifMauAutoNegCapability() + { + return ifMauAutoNegCapability; + } + + public int get_ifMauAutoNegCapAdvertised() + { + return ifMauAutoNegCapAdvertised; + } + + public int set_ifMauAutoNegCapAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertised = ifMauAutoNegCapAdvertised; + ifMauAutoNegCapAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertised = undo_ifMauAutoNegCapAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegCapReceived() + { + return ifMauAutoNegCapReceived; + } + + public int get_ifMauAutoNegRestart() + { + return ifMauAutoNegRestart; + } + + public int set_ifMauAutoNegRestart(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRestart = ifMauAutoNegRestart; + ifMauAutoNegRestart = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRestart = undo_ifMauAutoNegRestart; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapabilityBits() + { + return ifMauAutoNegCapabilityBits; + } + + public byte[] get_ifMauAutoNegCapAdvertisedBits() + { + return ifMauAutoNegCapAdvertisedBits; + } + + public int set_ifMauAutoNegCapAdvertisedBits(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertisedBits = ifMauAutoNegCapAdvertisedBits; + ifMauAutoNegCapAdvertisedBits = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifMauAutoNegCapAdvertisedBits[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertisedBits = undo_ifMauAutoNegCapAdvertisedBits; + break; + case AgentXSetPhase.CLEANUP: + undo_ifMauAutoNegCapAdvertisedBits = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapReceivedBits() + { + return ifMauAutoNegCapReceivedBits; + } + + public int get_ifMauAutoNegRemoteFaultAdvertised() + { + return ifMauAutoNegRemoteFaultAdvertised; + } + + public int set_ifMauAutoNegRemoteFaultAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRemoteFaultAdvertised = ifMauAutoNegRemoteFaultAdvertised; + ifMauAutoNegRemoteFaultAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRemoteFaultAdvertised = undo_ifMauAutoNegRemoteFaultAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteFaultReceived() + { + return ifMauAutoNegRemoteFaultReceived; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegEntryImpl.java b/test/dumps/jax/IfMauAutoNegEntryImpl.java new file mode 100644 index 0000000..d913ec3 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegEntryImpl.java @@ -0,0 +1,189 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifMauAutoNegEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauAutoNegEntryImpl extends IfMauAutoNegEntry +{ + + // constructor + public IfMauAutoNegEntryImpl(int ifMauIfIndex, + int ifMauIndex) + { + super(ifMauIfIndex, + ifMauIndex); + } + + public int get_ifMauAutoNegAdminStatus() + { + return ifMauAutoNegAdminStatus; + } + + public int set_ifMauAutoNegAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegAdminStatus = ifMauAutoNegAdminStatus; + ifMauAutoNegAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegAdminStatus = undo_ifMauAutoNegAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteSignaling() + { + return ifMauAutoNegRemoteSignaling; + } + + public int get_ifMauAutoNegConfig() + { + return ifMauAutoNegConfig; + } + + public int get_ifMauAutoNegCapability() + { + return ifMauAutoNegCapability; + } + + public int get_ifMauAutoNegCapAdvertised() + { + return ifMauAutoNegCapAdvertised; + } + + public int set_ifMauAutoNegCapAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertised = ifMauAutoNegCapAdvertised; + ifMauAutoNegCapAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertised = undo_ifMauAutoNegCapAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegCapReceived() + { + return ifMauAutoNegCapReceived; + } + + public int get_ifMauAutoNegRestart() + { + return ifMauAutoNegRestart; + } + + public int set_ifMauAutoNegRestart(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRestart = ifMauAutoNegRestart; + ifMauAutoNegRestart = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRestart = undo_ifMauAutoNegRestart; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapabilityBits() + { + return ifMauAutoNegCapabilityBits; + } + + public byte[] get_ifMauAutoNegCapAdvertisedBits() + { + return ifMauAutoNegCapAdvertisedBits; + } + + public int set_ifMauAutoNegCapAdvertisedBits(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertisedBits = ifMauAutoNegCapAdvertisedBits; + ifMauAutoNegCapAdvertisedBits = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifMauAutoNegCapAdvertisedBits[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertisedBits = undo_ifMauAutoNegCapAdvertisedBits; + break; + case AgentXSetPhase.CLEANUP: + undo_ifMauAutoNegCapAdvertisedBits = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapReceivedBits() + { + return ifMauAutoNegCapReceivedBits; + } + + public int get_ifMauAutoNegRemoteFaultAdvertised() + { + return ifMauAutoNegRemoteFaultAdvertised; + } + + public int set_ifMauAutoNegRemoteFaultAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRemoteFaultAdvertised = ifMauAutoNegRemoteFaultAdvertised; + ifMauAutoNegRemoteFaultAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRemoteFaultAdvertised = undo_ifMauAutoNegRemoteFaultAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteFaultReceived() + { + return ifMauAutoNegRemoteFaultReceived; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegTable.java b/test/dumps/jax/IfMauAutoNegTable.java new file mode 100644 index 0000000..b909e12 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegTable.java @@ -0,0 +1,191 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifMauAutoNegTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfMauAutoNegTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1}; + + // constructors + public IfMauAutoNegTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + } + + public IfMauAutoNegTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifMauAutoNegAdminStatus + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegAdminStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifMauAutoNegRemoteSignaling + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteSignaling(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // ifMauAutoNegConfig + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifMauAutoNegCapability + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapability(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // ifMauAutoNegCapAdvertised + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapAdvertised(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // ifMauAutoNegCapReceived + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapReceived(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifMauAutoNegRestart + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRestart(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // ifMauAutoNegCapabilityBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapabilityBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 10: // ifMauAutoNegCapAdvertisedBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapAdvertisedBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // ifMauAutoNegCapReceivedBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapReceivedBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // ifMauAutoNegRemoteFaultAdvertised + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteFaultAdvertised(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 13: // ifMauAutoNegRemoteFaultReceived + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteFaultReceived(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // ifMauAutoNegAdminStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegAdminStatus(phase, vb.intValue()); + } + case 6: // ifMauAutoNegCapAdvertised + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegCapAdvertised(phase, vb.intValue()); + } + case 8: // ifMauAutoNegRestart + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegRestart(phase, vb.intValue()); + } + case 10: // ifMauAutoNegCapAdvertisedBits + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegCapAdvertisedBits(phase, vb.bytesValue()); + } + case 12: // ifMauAutoNegRemoteFaultAdvertised + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegRemoteFaultAdvertised(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfMauEntry.java b/test/dumps/jax/IfMauEntry.java new file mode 100644 index 0000000..236e485 --- /dev/null +++ b/test/dumps/jax/IfMauEntry.java @@ -0,0 +1,161 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifMauEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauEntry extends AgentXEntry +{ + + protected int ifMauIfIndex = 0; + protected int ifMauIndex = 0; + protected AgentXOID ifMauType = new AgentXOID(); + protected int ifMauStatus = 0; + protected int undo_ifMauStatus = 0; + protected int ifMauMediaAvailable = 0; + protected long ifMauMediaAvailableStateExits = 0; + protected int ifMauJabberState = 0; + protected long ifMauJabberingStateEnters = 0; + protected long ifMauFalseCarriers = 0; + protected int ifMauTypeList = 0; + protected AgentXOID ifMauDefaultType = new AgentXOID(); + protected AgentXOID undo_ifMauDefaultType = new AgentXOID(); + protected int ifMauAutoNegSupported = 0; + protected byte[] ifMauTypeListBits = new byte[0]; + protected long ifMauHCFalseCarriers = 0; + + public IfMauEntry(int ifMauIfIndex, + int ifMauIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public AgentXOID get_ifMauType() + { + return ifMauType; + } + + public int get_ifMauStatus() + { + return ifMauStatus; + } + + public int set_ifMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauStatus = ifMauStatus; + ifMauStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauStatus = undo_ifMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauMediaAvailable() + { + return ifMauMediaAvailable; + } + + public long get_ifMauMediaAvailableStateExits() + { + return ifMauMediaAvailableStateExits; + } + + public int get_ifMauJabberState() + { + return ifMauJabberState; + } + + public long get_ifMauJabberingStateEnters() + { + return ifMauJabberingStateEnters; + } + + public long get_ifMauFalseCarriers() + { + return ifMauFalseCarriers; + } + + public int get_ifMauTypeList() + { + return ifMauTypeList; + } + + public AgentXOID get_ifMauDefaultType() + { + return ifMauDefaultType; + } + + public int set_ifMauDefaultType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauDefaultType = ifMauDefaultType; + ifMauDefaultType = value; + break; + case AgentXSetPhase.UNDO: + ifMauDefaultType = undo_ifMauDefaultType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegSupported() + { + return ifMauAutoNegSupported; + } + + public byte[] get_ifMauTypeListBits() + { + return ifMauTypeListBits; + } + + public long get_ifMauHCFalseCarriers() + { + return ifMauHCFalseCarriers; + } + +} + diff --git a/test/dumps/jax/IfMauEntryImpl.java b/test/dumps/jax/IfMauEntryImpl.java new file mode 100644 index 0000000..170f40b --- /dev/null +++ b/test/dumps/jax/IfMauEntryImpl.java @@ -0,0 +1,139 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifMauEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauEntryImpl extends IfMauEntry +{ + + // constructor + public IfMauEntryImpl(int ifMauIfIndex, + int ifMauIndex) + { + super(ifMauIfIndex, + ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public AgentXOID get_ifMauType() + { + return ifMauType; + } + + public int get_ifMauStatus() + { + return ifMauStatus; + } + + public int set_ifMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauStatus = ifMauStatus; + ifMauStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauStatus = undo_ifMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauMediaAvailable() + { + return ifMauMediaAvailable; + } + + public long get_ifMauMediaAvailableStateExits() + { + return ifMauMediaAvailableStateExits; + } + + public int get_ifMauJabberState() + { + return ifMauJabberState; + } + + public long get_ifMauJabberingStateEnters() + { + return ifMauJabberingStateEnters; + } + + public long get_ifMauFalseCarriers() + { + return ifMauFalseCarriers; + } + + public int get_ifMauTypeList() + { + return ifMauTypeList; + } + + public AgentXOID get_ifMauDefaultType() + { + return ifMauDefaultType; + } + + public int set_ifMauDefaultType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauDefaultType = ifMauDefaultType; + ifMauDefaultType = value; + break; + case AgentXSetPhase.UNDO: + ifMauDefaultType = undo_ifMauDefaultType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegSupported() + { + return ifMauAutoNegSupported; + } + + public byte[] get_ifMauTypeListBits() + { + return ifMauTypeListBits; + } + + public long get_ifMauHCFalseCarriers() + { + return ifMauHCFalseCarriers; + } + +} + diff --git a/test/dumps/jax/IfMauJabberTrap.java b/test/dumps/jax/IfMauJabberTrap.java new file mode 100644 index 0000000..402c637 --- /dev/null +++ b/test/dumps/jax/IfMauJabberTrap.java @@ -0,0 +1,47 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauJabberTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class IfMauJabberTrap extends AgentXNotification +{ + + private final static long[] ifMauJabberTrap_OID = {1, 3, 6, 1, 2, 1, 26, 0, 2}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(ifMauJabberTrap_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 7}; + private final AgentXOID ifMauJabberState_OID = new AgentXOID(OID1); + + + public IfMauJabberTrap(IfMauEntry ifMauEntry_1) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifMauJabberState columnar object of ifMauEntry_1 + oid = ifMauJabberState_OID; + oid.appendImplied(ifMauEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifMauEntry_1.get_ifMauJabberState()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/IfMauTable.java b/test/dumps/jax/IfMauTable.java new file mode 100644 index 0000000..6eb0c66 --- /dev/null +++ b/test/dumps/jax/IfMauTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifMauTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfMauTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1}; + + // constructors + public IfMauTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + } + + public IfMauTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifMauIfIndex + { + int value = ((IfMauEntry)entry).get_ifMauIfIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifMauIndex + { + int value = ((IfMauEntry)entry).get_ifMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifMauType + { + AgentXOID value = ((IfMauEntry)entry).get_ifMauType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 4: // ifMauStatus + { + int value = ((IfMauEntry)entry).get_ifMauStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifMauMediaAvailable + { + int value = ((IfMauEntry)entry).get_ifMauMediaAvailable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // ifMauMediaAvailableStateExits + { + long value = ((IfMauEntry)entry).get_ifMauMediaAvailableStateExits(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 7: // ifMauJabberState + { + int value = ((IfMauEntry)entry).get_ifMauJabberState(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifMauJabberingStateEnters + { + long value = ((IfMauEntry)entry).get_ifMauJabberingStateEnters(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // ifMauFalseCarriers + { + long value = ((IfMauEntry)entry).get_ifMauFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // ifMauTypeList + { + int value = ((IfMauEntry)entry).get_ifMauTypeList(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // ifMauDefaultType + { + AgentXOID value = ((IfMauEntry)entry).get_ifMauDefaultType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 12: // ifMauAutoNegSupported + { + int value = ((IfMauEntry)entry).get_ifMauAutoNegSupported(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 13: // ifMauTypeListBits + { + byte[] value = ((IfMauEntry)entry).get_ifMauTypeListBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 14: // ifMauHCFalseCarriers + { + long value = ((IfMauEntry)entry).get_ifMauHCFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 4: // ifMauStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauEntry)entry).set_ifMauStatus(phase, vb.intValue()); + } + case 11: // ifMauDefaultType + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauEntry)entry).set_ifMauDefaultType(phase, vb.AgentXOIDValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfRcvAddressEntry.java b/test/dumps/jax/IfRcvAddressEntry.java new file mode 100644 index 0000000..d475c0c --- /dev/null +++ b/test/dumps/jax/IfRcvAddressEntry.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifRcvAddressEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfRcvAddressEntry extends AgentXEntry +{ + + protected byte[] ifRcvAddressAddress = new byte[0]; + protected int ifRcvAddressStatus = 0; + protected int undo_ifRcvAddressStatus = 0; + protected int ifRcvAddressType = 0; + protected int undo_ifRcvAddressType = 0; + // foreign indices + protected int ifIndex; + + public IfRcvAddressEntry(int ifIndex, + byte[] ifRcvAddressAddress) + { + this.ifIndex = ifIndex; + this.ifRcvAddressAddress = ifRcvAddressAddress; + + instance.append(ifIndex); + instance.append(ifRcvAddressAddress); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifRcvAddressAddress() + { + return ifRcvAddressAddress; + } + + public int get_ifRcvAddressStatus() + { + return ifRcvAddressStatus; + } + + public int set_ifRcvAddressStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressStatus = ifRcvAddressStatus; + ifRcvAddressStatus = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressStatus = undo_ifRcvAddressStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifRcvAddressType() + { + return ifRcvAddressType; + } + + public int set_ifRcvAddressType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressType = ifRcvAddressType; + ifRcvAddressType = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressType = undo_ifRcvAddressType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfRcvAddressEntryImpl.java b/test/dumps/jax/IfRcvAddressEntryImpl.java new file mode 100644 index 0000000..a74e744 --- /dev/null +++ b/test/dumps/jax/IfRcvAddressEntryImpl.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifRcvAddressEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfRcvAddressEntryImpl extends IfRcvAddressEntry +{ + + // constructor + public IfRcvAddressEntryImpl(int ifIndex, + byte[] ifRcvAddressAddress) + { + super(ifIndex, + ifRcvAddressAddress); + } + + public int get_ifRcvAddressStatus() + { + return ifRcvAddressStatus; + } + + public int set_ifRcvAddressStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressStatus = ifRcvAddressStatus; + ifRcvAddressStatus = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressStatus = undo_ifRcvAddressStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifRcvAddressType() + { + return ifRcvAddressType; + } + + public int set_ifRcvAddressType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressType = ifRcvAddressType; + ifRcvAddressType = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressType = undo_ifRcvAddressType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfRcvAddressTable.java b/test/dumps/jax/IfRcvAddressTable.java new file mode 100644 index 0000000..7b6b1f4 --- /dev/null +++ b/test/dumps/jax/IfRcvAddressTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifRcvAddressTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfRcvAddressTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1}; + + // constructors + public IfRcvAddressTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public IfRcvAddressTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // ifRcvAddressStatus + { + int value = ((IfRcvAddressEntry)entry).get_ifRcvAddressStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifRcvAddressType + { + int value = ((IfRcvAddressEntry)entry).get_ifRcvAddressType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // ifRcvAddressStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfRcvAddressEntry)entry).set_ifRcvAddressStatus(phase, vb.intValue()); + } + case 3: // ifRcvAddressType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfRcvAddressEntry)entry).set_ifRcvAddressType(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfStackEntry.java b/test/dumps/jax/IfStackEntry.java new file mode 100644 index 0000000..9c09028 --- /dev/null +++ b/test/dumps/jax/IfStackEntry.java @@ -0,0 +1,75 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifStackEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfStackEntry extends AgentXEntry +{ + + protected int ifStackHigherLayer = 0; + protected int ifStackLowerLayer = 0; + protected int ifStackStatus = 0; + protected int undo_ifStackStatus = 0; + + public IfStackEntry(int ifStackHigherLayer, + int ifStackLowerLayer) + { + this.ifStackHigherLayer = ifStackHigherLayer; + this.ifStackLowerLayer = ifStackLowerLayer; + + instance.append(ifStackHigherLayer); + instance.append(ifStackLowerLayer); + } + + public int get_ifStackHigherLayer() + { + return ifStackHigherLayer; + } + + public int get_ifStackLowerLayer() + { + return ifStackLowerLayer; + } + + public int get_ifStackStatus() + { + return ifStackStatus; + } + + public int set_ifStackStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifStackStatus = ifStackStatus; + ifStackStatus = value; + break; + case AgentXSetPhase.UNDO: + ifStackStatus = undo_ifStackStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfStackEntryImpl.java b/test/dumps/jax/IfStackEntryImpl.java new file mode 100644 index 0000000..d1ae86d --- /dev/null +++ b/test/dumps/jax/IfStackEntryImpl.java @@ -0,0 +1,55 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifStackEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfStackEntryImpl extends IfStackEntry +{ + + // constructor + public IfStackEntryImpl(int ifStackHigherLayer, + int ifStackLowerLayer) + { + super(ifStackHigherLayer, + ifStackLowerLayer); + } + + public int get_ifStackStatus() + { + return ifStackStatus; + } + + public int set_ifStackStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifStackStatus = ifStackStatus; + ifStackStatus = value; + break; + case AgentXSetPhase.UNDO: + ifStackStatus = undo_ifStackStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfStackTable.java b/test/dumps/jax/IfStackTable.java new file mode 100644 index 0000000..17796a8 --- /dev/null +++ b/test/dumps/jax/IfStackTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifStackTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfStackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1}; + + // constructors + public IfStackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + } + + public IfStackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // ifStackStatus + { + int value = ((IfStackEntry)entry).get_ifStackStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 3: // ifStackStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfStackEntry)entry).set_ifStackStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfTable.java b/test/dumps/jax/IfTable.java new file mode 100644 index 0000000..c8820e5 --- /dev/null +++ b/test/dumps/jax/IfTable.java @@ -0,0 +1,233 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 2, 2, 1}; + + // constructors + public IfTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + columns.addElement(new Long(20)); + columns.addElement(new Long(21)); + columns.addElement(new Long(22)); + } + + public IfTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + columns.addElement(new Long(20)); + columns.addElement(new Long(21)); + columns.addElement(new Long(22)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifIndex + { + int value = ((IfEntry)entry).get_ifIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifDescr + { + byte[] value = ((IfEntry)entry).get_ifDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 3: // ifType + { + int value = ((IfEntry)entry).get_ifType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // ifMtu + { + int value = ((IfEntry)entry).get_ifMtu(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifSpeed + { + long value = ((IfEntry)entry).get_ifSpeed(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // ifPhysAddress + { + byte[] value = ((IfEntry)entry).get_ifPhysAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // ifAdminStatus + { + int value = ((IfEntry)entry).get_ifAdminStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifOperStatus + { + int value = ((IfEntry)entry).get_ifOperStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // ifLastChange + { + long value = ((IfEntry)entry).get_ifLastChange(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // ifInOctets + { + long value = ((IfEntry)entry).get_ifInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 11: // ifInUcastPkts + { + long value = ((IfEntry)entry).get_ifInUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 12: // ifInNUcastPkts + { + long value = ((IfEntry)entry).get_ifInNUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 13: // ifInDiscards + { + long value = ((IfEntry)entry).get_ifInDiscards(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 14: // ifInErrors + { + long value = ((IfEntry)entry).get_ifInErrors(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 15: // ifInUnknownProtos + { + long value = ((IfEntry)entry).get_ifInUnknownProtos(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 16: // ifOutOctets + { + long value = ((IfEntry)entry).get_ifOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 17: // ifOutUcastPkts + { + long value = ((IfEntry)entry).get_ifOutUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 18: // ifOutNUcastPkts + { + long value = ((IfEntry)entry).get_ifOutNUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 19: // ifOutDiscards + { + long value = ((IfEntry)entry).get_ifOutDiscards(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 20: // ifOutErrors + { + long value = ((IfEntry)entry).get_ifOutErrors(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 21: // ifOutQLen + { + long value = ((IfEntry)entry).get_ifOutQLen(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 22: // ifSpecific + { + AgentXOID value = ((IfEntry)entry).get_ifSpecific(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 7: // ifAdminStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfEntry)entry).set_ifAdminStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfTestEntry.java b/test/dumps/jax/IfTestEntry.java new file mode 100644 index 0000000..0d6ebc3 --- /dev/null +++ b/test/dumps/jax/IfTestEntry.java @@ -0,0 +1,151 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifTestEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfTestEntry extends AgentXEntry +{ + + protected int ifTestId = 0; + protected int undo_ifTestId = 0; + protected int ifTestStatus = 0; + protected int undo_ifTestStatus = 0; + protected AgentXOID ifTestType = new AgentXOID(); + protected AgentXOID undo_ifTestType = new AgentXOID(); + protected int ifTestResult = 0; + protected AgentXOID ifTestCode = new AgentXOID(); + protected byte[] ifTestOwner = new byte[0]; + protected byte[] undo_ifTestOwner = new byte[0]; + + public IfTestEntry() + { + + } + + public int get_ifTestId() + { + return ifTestId; + } + + public int set_ifTestId(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestId = ifTestId; + ifTestId = value; + break; + case AgentXSetPhase.UNDO: + ifTestId = undo_ifTestId; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestStatus() + { + return ifTestStatus; + } + + public int set_ifTestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestStatus = ifTestStatus; + ifTestStatus = value; + break; + case AgentXSetPhase.UNDO: + ifTestStatus = undo_ifTestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXOID get_ifTestType() + { + return ifTestType; + } + + public int set_ifTestType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestType = ifTestType; + ifTestType = value; + break; + case AgentXSetPhase.UNDO: + ifTestType = undo_ifTestType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestResult() + { + return ifTestResult; + } + + public AgentXOID get_ifTestCode() + { + return ifTestCode; + } + + public byte[] get_ifTestOwner() + { + return ifTestOwner; + } + + public int set_ifTestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestOwner = ifTestOwner; + ifTestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifTestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifTestOwner = undo_ifTestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_ifTestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfTestEntryImpl.java b/test/dumps/jax/IfTestEntryImpl.java new file mode 100644 index 0000000..019e413 --- /dev/null +++ b/test/dumps/jax/IfTestEntryImpl.java @@ -0,0 +1,138 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifTestEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfTestEntryImpl extends IfTestEntry +{ + + // constructor + public IfTestEntryImpl() + { + super(); + } + + public int get_ifTestId() + { + return ifTestId; + } + + public int set_ifTestId(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestId = ifTestId; + ifTestId = value; + break; + case AgentXSetPhase.UNDO: + ifTestId = undo_ifTestId; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestStatus() + { + return ifTestStatus; + } + + public int set_ifTestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestStatus = ifTestStatus; + ifTestStatus = value; + break; + case AgentXSetPhase.UNDO: + ifTestStatus = undo_ifTestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXOID get_ifTestType() + { + return ifTestType; + } + + public int set_ifTestType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestType = ifTestType; + ifTestType = value; + break; + case AgentXSetPhase.UNDO: + ifTestType = undo_ifTestType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestResult() + { + return ifTestResult; + } + + public AgentXOID get_ifTestCode() + { + return ifTestCode; + } + + public byte[] get_ifTestOwner() + { + return ifTestOwner; + } + + public int set_ifTestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestOwner = ifTestOwner; + ifTestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifTestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifTestOwner = undo_ifTestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_ifTestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfTestTable.java b/test/dumps/jax/IfTestTable.java new file mode 100644 index 0000000..d92971e --- /dev/null +++ b/test/dumps/jax/IfTestTable.java @@ -0,0 +1,142 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifTestTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfTestTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1}; + + // constructors + public IfTestTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public IfTestTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifTestId + { + int value = ((IfTestEntry)entry).get_ifTestId(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifTestStatus + { + int value = ((IfTestEntry)entry).get_ifTestStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifTestType + { + AgentXOID value = ((IfTestEntry)entry).get_ifTestType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 4: // ifTestResult + { + int value = ((IfTestEntry)entry).get_ifTestResult(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifTestCode + { + AgentXOID value = ((IfTestEntry)entry).get_ifTestCode(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 6: // ifTestOwner + { + byte[] value = ((IfTestEntry)entry).get_ifTestOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // ifTestId + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestId(phase, vb.intValue()); + } + case 2: // ifTestStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestStatus(phase, vb.intValue()); + } + case 3: // ifTestType + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestType(phase, vb.AgentXOIDValue()); + } + case 6: // ifTestOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestOwner(phase, vb.bytesValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfXEntry.java b/test/dumps/jax/IfXEntry.java new file mode 100644 index 0000000..73a1f6e --- /dev/null +++ b/test/dumps/jax/IfXEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifXEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfXEntry extends AgentXEntry +{ + + protected byte[] ifName = new byte[0]; + protected long ifInMulticastPkts = 0; + protected long ifInBroadcastPkts = 0; + protected long ifOutMulticastPkts = 0; + protected long ifOutBroadcastPkts = 0; + protected long ifHCInOctets = 0; + protected long ifHCInUcastPkts = 0; + protected long ifHCInMulticastPkts = 0; + protected long ifHCInBroadcastPkts = 0; + protected long ifHCOutOctets = 0; + protected long ifHCOutUcastPkts = 0; + protected long ifHCOutMulticastPkts = 0; + protected long ifHCOutBroadcastPkts = 0; + protected int ifLinkUpDownTrapEnable = 0; + protected int undo_ifLinkUpDownTrapEnable = 0; + protected long ifHighSpeed = 0; + protected int ifPromiscuousMode = 0; + protected int undo_ifPromiscuousMode = 0; + protected int ifConnectorPresent = 0; + protected byte[] ifAlias = new byte[0]; + protected byte[] undo_ifAlias = new byte[0]; + protected long ifCounterDiscontinuityTime = 0; + + public IfXEntry() + { + + } + + public byte[] get_ifName() + { + return ifName; + } + + public long get_ifInMulticastPkts() + { + return ifInMulticastPkts; + } + + public long get_ifInBroadcastPkts() + { + return ifInBroadcastPkts; + } + + public long get_ifOutMulticastPkts() + { + return ifOutMulticastPkts; + } + + public long get_ifOutBroadcastPkts() + { + return ifOutBroadcastPkts; + } + + public long get_ifHCInOctets() + { + return ifHCInOctets; + } + + public long get_ifHCInUcastPkts() + { + return ifHCInUcastPkts; + } + + public long get_ifHCInMulticastPkts() + { + return ifHCInMulticastPkts; + } + + public long get_ifHCInBroadcastPkts() + { + return ifHCInBroadcastPkts; + } + + public long get_ifHCOutOctets() + { + return ifHCOutOctets; + } + + public long get_ifHCOutUcastPkts() + { + return ifHCOutUcastPkts; + } + + public long get_ifHCOutMulticastPkts() + { + return ifHCOutMulticastPkts; + } + + public long get_ifHCOutBroadcastPkts() + { + return ifHCOutBroadcastPkts; + } + + public int get_ifLinkUpDownTrapEnable() + { + return ifLinkUpDownTrapEnable; + } + + public int set_ifLinkUpDownTrapEnable(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifLinkUpDownTrapEnable = ifLinkUpDownTrapEnable; + ifLinkUpDownTrapEnable = value; + break; + case AgentXSetPhase.UNDO: + ifLinkUpDownTrapEnable = undo_ifLinkUpDownTrapEnable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifHighSpeed() + { + return ifHighSpeed; + } + + public int get_ifPromiscuousMode() + { + return ifPromiscuousMode; + } + + public int set_ifPromiscuousMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifPromiscuousMode = ifPromiscuousMode; + ifPromiscuousMode = value; + break; + case AgentXSetPhase.UNDO: + ifPromiscuousMode = undo_ifPromiscuousMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifConnectorPresent() + { + return ifConnectorPresent; + } + + public byte[] get_ifAlias() + { + return ifAlias; + } + + public int set_ifAlias(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAlias = ifAlias; + ifAlias = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifAlias[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifAlias = undo_ifAlias; + break; + case AgentXSetPhase.CLEANUP: + undo_ifAlias = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifCounterDiscontinuityTime() + { + return ifCounterDiscontinuityTime; + } + +} + diff --git a/test/dumps/jax/IfXEntryImpl.java b/test/dumps/jax/IfXEntryImpl.java new file mode 100644 index 0000000..bb72df0 --- /dev/null +++ b/test/dumps/jax/IfXEntryImpl.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifXEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfXEntryImpl extends IfXEntry +{ + + // constructor + public IfXEntryImpl() + { + super(); + } + + public byte[] get_ifName() + { + return ifName; + } + + public long get_ifInMulticastPkts() + { + return ifInMulticastPkts; + } + + public long get_ifInBroadcastPkts() + { + return ifInBroadcastPkts; + } + + public long get_ifOutMulticastPkts() + { + return ifOutMulticastPkts; + } + + public long get_ifOutBroadcastPkts() + { + return ifOutBroadcastPkts; + } + + public long get_ifHCInOctets() + { + return ifHCInOctets; + } + + public long get_ifHCInUcastPkts() + { + return ifHCInUcastPkts; + } + + public long get_ifHCInMulticastPkts() + { + return ifHCInMulticastPkts; + } + + public long get_ifHCInBroadcastPkts() + { + return ifHCInBroadcastPkts; + } + + public long get_ifHCOutOctets() + { + return ifHCOutOctets; + } + + public long get_ifHCOutUcastPkts() + { + return ifHCOutUcastPkts; + } + + public long get_ifHCOutMulticastPkts() + { + return ifHCOutMulticastPkts; + } + + public long get_ifHCOutBroadcastPkts() + { + return ifHCOutBroadcastPkts; + } + + public int get_ifLinkUpDownTrapEnable() + { + return ifLinkUpDownTrapEnable; + } + + public int set_ifLinkUpDownTrapEnable(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifLinkUpDownTrapEnable = ifLinkUpDownTrapEnable; + ifLinkUpDownTrapEnable = value; + break; + case AgentXSetPhase.UNDO: + ifLinkUpDownTrapEnable = undo_ifLinkUpDownTrapEnable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifHighSpeed() + { + return ifHighSpeed; + } + + public int get_ifPromiscuousMode() + { + return ifPromiscuousMode; + } + + public int set_ifPromiscuousMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifPromiscuousMode = ifPromiscuousMode; + ifPromiscuousMode = value; + break; + case AgentXSetPhase.UNDO: + ifPromiscuousMode = undo_ifPromiscuousMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifConnectorPresent() + { + return ifConnectorPresent; + } + + public byte[] get_ifAlias() + { + return ifAlias; + } + + public int set_ifAlias(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAlias = ifAlias; + ifAlias = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifAlias[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifAlias = undo_ifAlias; + break; + case AgentXSetPhase.CLEANUP: + undo_ifAlias = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifCounterDiscontinuityTime() + { + return ifCounterDiscontinuityTime; + } + +} + diff --git a/test/dumps/jax/IfXTable.java b/test/dumps/jax/IfXTable.java new file mode 100644 index 0000000..981e957 --- /dev/null +++ b/test/dumps/jax/IfXTable.java @@ -0,0 +1,226 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifXTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfXTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1}; + + // constructors + public IfXTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + } + + public IfXTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifName + { + byte[] value = ((IfXEntry)entry).get_ifName(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 2: // ifInMulticastPkts + { + long value = ((IfXEntry)entry).get_ifInMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 3: // ifInBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifInBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // ifOutMulticastPkts + { + long value = ((IfXEntry)entry).get_ifOutMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // ifOutBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifOutBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // ifHCInOctets + { + long value = ((IfXEntry)entry).get_ifHCInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 7: // ifHCInUcastPkts + { + long value = ((IfXEntry)entry).get_ifHCInUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 8: // ifHCInMulticastPkts + { + long value = ((IfXEntry)entry).get_ifHCInMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 9: // ifHCInBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifHCInBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 10: // ifHCOutOctets + { + long value = ((IfXEntry)entry).get_ifHCOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 11: // ifHCOutUcastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 12: // ifHCOutMulticastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 13: // ifHCOutBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 14: // ifLinkUpDownTrapEnable + { + int value = ((IfXEntry)entry).get_ifLinkUpDownTrapEnable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 15: // ifHighSpeed + { + long value = ((IfXEntry)entry).get_ifHighSpeed(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 16: // ifPromiscuousMode + { + int value = ((IfXEntry)entry).get_ifPromiscuousMode(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 17: // ifConnectorPresent + { + int value = ((IfXEntry)entry).get_ifConnectorPresent(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 18: // ifAlias + { + byte[] value = ((IfXEntry)entry).get_ifAlias(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 19: // ifCounterDiscontinuityTime + { + long value = ((IfXEntry)entry).get_ifCounterDiscontinuityTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 14: // ifLinkUpDownTrapEnable + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifLinkUpDownTrapEnable(phase, vb.intValue()); + } + case 16: // ifPromiscuousMode + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifPromiscuousMode(phase, vb.intValue()); + } + case 18: // ifAlias + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifAlias(phase, vb.bytesValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Interfaces.java b/test/dumps/jax/Interfaces.java new file mode 100644 index 0000000..965f0c6 --- /dev/null +++ b/test/dumps/jax/Interfaces.java @@ -0,0 +1,81 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Interfaces.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group interfaces defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class Interfaces extends AgentXScalars +{ + + private final static long[] InterfacesOID = {1, 3, 6, 1, 2, 1, 2}; + + protected AgentXOID IfNumberOID; + protected final static long[] IfNumberName = {1, 3, 6, 1, 2, 1, 2, 1, 0}; + protected int ifNumber = 0; + public Interfaces() + { + oid = new AgentXOID(InterfacesOID); + data = new Vector(); + IfNumberOID = new AgentXOID(IfNumberName); + data.addElement(IfNumberOID); + } + + public int get_ifNumber() + { + return ifNumber; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == IfNumberOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_ifNumber()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == IfNumberOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_ifNumber()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/InterfacesImpl.java b/test/dumps/jax/InterfacesImpl.java new file mode 100644 index 0000000..043f963 --- /dev/null +++ b/test/dumps/jax/InterfacesImpl.java @@ -0,0 +1,29 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: InterfacesImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group interfaces defined in IF-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class InterfacesImpl extends Interfaces +{ + + public int get_ifNumber() + { + return ifNumber; + } + +} + diff --git a/test/dumps/jax/LinkDown.java b/test/dumps/jax/LinkDown.java new file mode 100644 index 0000000..04bc61a --- /dev/null +++ b/test/dumps/jax/LinkDown.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: LinkDown.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class LinkDown extends AgentXNotification +{ + + private final static long[] linkDown_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 3}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(linkDown_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; + private final AgentXOID ifIndex_OID = new AgentXOID(OID1); + private final static long[] OID2 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; + private final AgentXOID ifAdminStatus_OID = new AgentXOID(OID2); + private final static long[] OID3 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; + private final AgentXOID ifOperStatus_OID = new AgentXOID(OID3); + + + public LinkDown(IfEntry ifEntry_1, IfEntry ifEntry_2, IfEntry ifEntry_3) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifIndex columnar object of ifEntry_1 + oid = ifIndex_OID; + oid.appendImplied(ifEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_1.get_ifIndex()); + varBindList.addElement(varBind); + + // add the ifAdminStatus columnar object of ifEntry_2 + oid = ifAdminStatus_OID; + oid.appendImplied(ifEntry_2.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_2.get_ifAdminStatus()); + varBindList.addElement(varBind); + + // add the ifOperStatus columnar object of ifEntry_3 + oid = ifOperStatus_OID; + oid.appendImplied(ifEntry_3.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_3.get_ifOperStatus()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/LinkUp.java b/test/dumps/jax/LinkUp.java new file mode 100644 index 0000000..f5b44f5 --- /dev/null +++ b/test/dumps/jax/LinkUp.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: LinkUp.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class LinkUp extends AgentXNotification +{ + + private final static long[] linkUp_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 4}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(linkUp_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; + private final AgentXOID ifIndex_OID = new AgentXOID(OID1); + private final static long[] OID2 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; + private final AgentXOID ifAdminStatus_OID = new AgentXOID(OID2); + private final static long[] OID3 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; + private final AgentXOID ifOperStatus_OID = new AgentXOID(OID3); + + + public LinkUp(IfEntry ifEntry_1, IfEntry ifEntry_2, IfEntry ifEntry_3) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifIndex columnar object of ifEntry_1 + oid = ifIndex_OID; + oid.appendImplied(ifEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_1.get_ifIndex()); + varBindList.addElement(varBind); + + // add the ifAdminStatus columnar object of ifEntry_2 + oid = ifAdminStatus_OID; + oid.appendImplied(ifEntry_2.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_2.get_ifAdminStatus()); + varBindList.addElement(varBind); + + // add the ifOperStatus columnar object of ifEntry_3 + oid = ifOperStatus_OID; + oid.appendImplied(ifEntry_3.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_3.get_ifOperStatus()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/Makefile.am b/test/dumps/jax/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/jax/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/jax/Makefile.in b/test/dumps/jax/Makefile.in new file mode 100644 index 0000000..8054965 --- /dev/null +++ b/test/dumps/jax/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/jax +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/jax/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/jax/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/jax/MatrixControl2Entry.java b/test/dumps/jax/MatrixControl2Entry.java new file mode 100644 index 0000000..9633c5b --- /dev/null +++ b/test/dumps/jax/MatrixControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row matrixControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class MatrixControl2Entry extends AgentXEntry +{ + + protected long matrixControlDroppedFrames = 0; + protected long matrixControlCreateTime = 0; + + public MatrixControl2Entry() + { + + } + + public long get_matrixControlDroppedFrames() + { + return matrixControlDroppedFrames; + } + + public long get_matrixControlCreateTime() + { + return matrixControlCreateTime; + } + +} + diff --git a/test/dumps/jax/MatrixControl2EntryImpl.java b/test/dumps/jax/MatrixControl2EntryImpl.java new file mode 100644 index 0000000..2bb6482 --- /dev/null +++ b/test/dumps/jax/MatrixControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row matrixControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class MatrixControl2EntryImpl extends MatrixControl2Entry +{ + + // constructor + public MatrixControl2EntryImpl() + { + super(); + } + + public long get_matrixControlDroppedFrames() + { + return matrixControlDroppedFrames; + } + + public long get_matrixControlCreateTime() + { + return matrixControlCreateTime; + } + +} + diff --git a/test/dumps/jax/MatrixControl2Table.java b/test/dumps/jax/MatrixControl2Table.java new file mode 100644 index 0000000..ad5417b --- /dev/null +++ b/test/dumps/jax/MatrixControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table matrixControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class MatrixControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1}; + + // constructors + public MatrixControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public MatrixControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // matrixControlDroppedFrames + { + long value = ((MatrixControl2Entry)entry).get_matrixControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // matrixControlCreateTime + { + long value = ((MatrixControl2Entry)entry).get_matrixControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NetConfigEntry.java b/test/dumps/jax/NetConfigEntry.java new file mode 100644 index 0000000..caf6c5b --- /dev/null +++ b/test/dumps/jax/NetConfigEntry.java @@ -0,0 +1,125 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row netConfigEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NetConfigEntry extends AgentXEntry +{ + + protected byte[] netConfigIPAddress = new byte[4]; + protected byte[] undo_netConfigIPAddress = new byte[4]; + protected byte[] netConfigSubnetMask = new byte[4]; + protected byte[] undo_netConfigSubnetMask = new byte[4]; + protected int netConfigStatus = 0; + protected int undo_netConfigStatus = 0; + // foreign indices + protected int ifIndex; + + public NetConfigEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_netConfigIPAddress() + { + return netConfigIPAddress; + } + + public int set_netConfigIPAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigIPAddress = netConfigIPAddress; + netConfigIPAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigIPAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigIPAddress = undo_netConfigIPAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigIPAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_netConfigSubnetMask() + { + return netConfigSubnetMask; + } + + public int set_netConfigSubnetMask(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigSubnetMask = netConfigSubnetMask; + netConfigSubnetMask = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigSubnetMask[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigSubnetMask = undo_netConfigSubnetMask; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigSubnetMask = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_netConfigStatus() + { + return netConfigStatus; + } + + public int set_netConfigStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigStatus = netConfigStatus; + netConfigStatus = value; + break; + case AgentXSetPhase.UNDO: + netConfigStatus = undo_netConfigStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NetConfigEntryImpl.java b/test/dumps/jax/NetConfigEntryImpl.java new file mode 100644 index 0000000..7fb94b2 --- /dev/null +++ b/test/dumps/jax/NetConfigEntryImpl.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row netConfigEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NetConfigEntryImpl extends NetConfigEntry +{ + + // constructor + public NetConfigEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public byte[] get_netConfigIPAddress() + { + return netConfigIPAddress; + } + + public int set_netConfigIPAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigIPAddress = netConfigIPAddress; + netConfigIPAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigIPAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigIPAddress = undo_netConfigIPAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigIPAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_netConfigSubnetMask() + { + return netConfigSubnetMask; + } + + public int set_netConfigSubnetMask(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigSubnetMask = netConfigSubnetMask; + netConfigSubnetMask = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigSubnetMask[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigSubnetMask = undo_netConfigSubnetMask; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigSubnetMask = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_netConfigStatus() + { + return netConfigStatus; + } + + public int set_netConfigStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigStatus = netConfigStatus; + netConfigStatus = value; + break; + case AgentXSetPhase.UNDO: + netConfigStatus = undo_netConfigStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NetConfigTable.java b/test/dumps/jax/NetConfigTable.java new file mode 100644 index 0000000..f5eb2b1 --- /dev/null +++ b/test/dumps/jax/NetConfigTable.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table netConfigTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NetConfigTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1}; + + // constructors + public NetConfigTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public NetConfigTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // netConfigIPAddress + { + byte[] value = ((NetConfigEntry)entry).get_netConfigIPAddress(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 2: // netConfigSubnetMask + { + byte[] value = ((NetConfigEntry)entry).get_netConfigSubnetMask(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 3: // netConfigStatus + { + int value = ((NetConfigEntry)entry).get_netConfigStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // netConfigIPAddress + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigIPAddress(phase, vb.bytesValue()); + } + case 2: // netConfigSubnetMask + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigSubnetMask(phase, vb.bytesValue()); + } + case 3: // netConfigStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlHostEntry.java b/test/dumps/jax/NlHostEntry.java new file mode 100644 index 0000000..d830fc4 --- /dev/null +++ b/test/dumps/jax/NlHostEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlHostEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlHostEntry extends AgentXEntry +{ + + protected long nlHostTimeMark = 0; + protected byte[] nlHostAddress = new byte[0]; + protected long nlHostInPkts = 0; + protected long nlHostOutPkts = 0; + protected long nlHostInOctets = 0; + protected long nlHostOutOctets = 0; + protected long nlHostOutMacNonUnicastPkts = 0; + protected long nlHostCreateTime = 0; + // foreign indices + protected int hlHostControlIndex; + protected int protocolDirLocalIndex; + + public NlHostEntry(int hlHostControlIndex, + long nlHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress) + { + this.hlHostControlIndex = hlHostControlIndex; + this.nlHostTimeMark = nlHostTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlHostAddress = nlHostAddress; + + instance.append(hlHostControlIndex); + instance.append(nlHostTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlHostAddress); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public long get_nlHostTimeMark() + { + return nlHostTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlHostAddress() + { + return nlHostAddress; + } + + public long get_nlHostInPkts() + { + return nlHostInPkts; + } + + public long get_nlHostOutPkts() + { + return nlHostOutPkts; + } + + public long get_nlHostInOctets() + { + return nlHostInOctets; + } + + public long get_nlHostOutOctets() + { + return nlHostOutOctets; + } + + public long get_nlHostOutMacNonUnicastPkts() + { + return nlHostOutMacNonUnicastPkts; + } + + public long get_nlHostCreateTime() + { + return nlHostCreateTime; + } + +} + diff --git a/test/dumps/jax/NlHostEntryImpl.java b/test/dumps/jax/NlHostEntryImpl.java new file mode 100644 index 0000000..d0a6ae3 --- /dev/null +++ b/test/dumps/jax/NlHostEntryImpl.java @@ -0,0 +1,65 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlHostEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlHostEntryImpl extends NlHostEntry +{ + + // constructor + public NlHostEntryImpl(int hlHostControlIndex, + long nlHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress) + { + super(hlHostControlIndex, + nlHostTimeMark, + protocolDirLocalIndex, + nlHostAddress); + } + + public long get_nlHostInPkts() + { + return nlHostInPkts; + } + + public long get_nlHostOutPkts() + { + return nlHostOutPkts; + } + + public long get_nlHostInOctets() + { + return nlHostInOctets; + } + + public long get_nlHostOutOctets() + { + return nlHostOutOctets; + } + + public long get_nlHostOutMacNonUnicastPkts() + { + return nlHostOutMacNonUnicastPkts; + } + + public long get_nlHostCreateTime() + { + return nlHostCreateTime; + } + +} + diff --git a/test/dumps/jax/NlHostTable.java b/test/dumps/jax/NlHostTable.java new file mode 100644 index 0000000..7b5c64c --- /dev/null +++ b/test/dumps/jax/NlHostTable.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlHostTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlHostTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1}; + + // constructors + public NlHostTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public NlHostTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // nlHostInPkts + { + long value = ((NlHostEntry)entry).get_nlHostInPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // nlHostOutPkts + { + long value = ((NlHostEntry)entry).get_nlHostOutPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlHostInOctets + { + long value = ((NlHostEntry)entry).get_nlHostInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlHostOutOctets + { + long value = ((NlHostEntry)entry).get_nlHostOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // nlHostOutMacNonUnicastPkts + { + long value = ((NlHostEntry)entry).get_nlHostOutMacNonUnicastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // nlHostCreateTime + { + long value = ((NlHostEntry)entry).get_nlHostCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSEntry.java b/test/dumps/jax/NlMatrixDSEntry.java new file mode 100644 index 0000000..4b80126 --- /dev/null +++ b/test/dumps/jax/NlMatrixDSEntry.java @@ -0,0 +1,95 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixDSEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixDSEntry extends AgentXEntry +{ + + protected long nlMatrixDSTimeMark = 0; + protected byte[] nlMatrixDSSourceAddress = new byte[0]; + protected byte[] nlMatrixDSDestAddress = new byte[0]; + protected long nlMatrixDSPkts = 0; + protected long nlMatrixDSOctets = 0; + protected long nlMatrixDSCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + + public NlMatrixDSEntry(int hlMatrixControlIndex, + long nlMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.nlMatrixDSTimeMark = nlMatrixDSTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixDSDestAddress = nlMatrixDSDestAddress; + this.nlMatrixDSSourceAddress = nlMatrixDSSourceAddress; + + instance.append(hlMatrixControlIndex); + instance.append(nlMatrixDSTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixDSDestAddress); + instance.append(nlMatrixDSSourceAddress); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_nlMatrixDSTimeMark() + { + return nlMatrixDSTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixDSDestAddress() + { + return nlMatrixDSDestAddress; + } + + public byte[] get_nlMatrixDSSourceAddress() + { + return nlMatrixDSSourceAddress; + } + + public long get_nlMatrixDSPkts() + { + return nlMatrixDSPkts; + } + + public long get_nlMatrixDSOctets() + { + return nlMatrixDSOctets; + } + + public long get_nlMatrixDSCreateTime() + { + return nlMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSEntryImpl.java b/test/dumps/jax/NlMatrixDSEntryImpl.java new file mode 100644 index 0000000..3198cbf --- /dev/null +++ b/test/dumps/jax/NlMatrixDSEntryImpl.java @@ -0,0 +1,52 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixDSEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixDSEntryImpl extends NlMatrixDSEntry +{ + + // constructor + public NlMatrixDSEntryImpl(int hlMatrixControlIndex, + long nlMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress) + { + super(hlMatrixControlIndex, + nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress); + } + + public long get_nlMatrixDSPkts() + { + return nlMatrixDSPkts; + } + + public long get_nlMatrixDSOctets() + { + return nlMatrixDSOctets; + } + + public long get_nlMatrixDSCreateTime() + { + return nlMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSTable.java b/test/dumps/jax/NlMatrixDSTable.java new file mode 100644 index 0000000..2b89496 --- /dev/null +++ b/test/dumps/jax/NlMatrixDSTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixDSTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixDSTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1}; + + // constructors + public NlMatrixDSTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public NlMatrixDSTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // nlMatrixDSPkts + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlMatrixDSOctets + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixDSCreateTime + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDEntry.java b/test/dumps/jax/NlMatrixSDEntry.java new file mode 100644 index 0000000..2c70fe4 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDEntry.java @@ -0,0 +1,95 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixSDEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixSDEntry extends AgentXEntry +{ + + protected long nlMatrixSDTimeMark = 0; + protected byte[] nlMatrixSDSourceAddress = new byte[0]; + protected byte[] nlMatrixSDDestAddress = new byte[0]; + protected long nlMatrixSDPkts = 0; + protected long nlMatrixSDOctets = 0; + protected long nlMatrixSDCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + + public NlMatrixSDEntry(int hlMatrixControlIndex, + long nlMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.nlMatrixSDTimeMark = nlMatrixSDTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixSDSourceAddress = nlMatrixSDSourceAddress; + this.nlMatrixSDDestAddress = nlMatrixSDDestAddress; + + instance.append(hlMatrixControlIndex); + instance.append(nlMatrixSDTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixSDSourceAddress); + instance.append(nlMatrixSDDestAddress); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_nlMatrixSDTimeMark() + { + return nlMatrixSDTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixSDSourceAddress() + { + return nlMatrixSDSourceAddress; + } + + public byte[] get_nlMatrixSDDestAddress() + { + return nlMatrixSDDestAddress; + } + + public long get_nlMatrixSDPkts() + { + return nlMatrixSDPkts; + } + + public long get_nlMatrixSDOctets() + { + return nlMatrixSDOctets; + } + + public long get_nlMatrixSDCreateTime() + { + return nlMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDEntryImpl.java b/test/dumps/jax/NlMatrixSDEntryImpl.java new file mode 100644 index 0000000..9a49368 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDEntryImpl.java @@ -0,0 +1,52 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixSDEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixSDEntryImpl extends NlMatrixSDEntry +{ + + // constructor + public NlMatrixSDEntryImpl(int hlMatrixControlIndex, + long nlMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress) + { + super(hlMatrixControlIndex, + nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress); + } + + public long get_nlMatrixSDPkts() + { + return nlMatrixSDPkts; + } + + public long get_nlMatrixSDOctets() + { + return nlMatrixSDOctets; + } + + public long get_nlMatrixSDCreateTime() + { + return nlMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDTable.java b/test/dumps/jax/NlMatrixSDTable.java new file mode 100644 index 0000000..5889989 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixSDTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixSDTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1}; + + // constructors + public NlMatrixSDTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public NlMatrixSDTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // nlMatrixSDPkts + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlMatrixSDOctets + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixSDCreateTime + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNControlEntry.java b/test/dumps/jax/NlMatrixTopNControlEntry.java new file mode 100644 index 0000000..e2af8a2 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixTopNControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNControlEntry extends AgentXEntry +{ + + protected int nlMatrixTopNControlIndex = 0; + protected int nlMatrixTopNControlMatrixIndex = 0; + protected int undo_nlMatrixTopNControlMatrixIndex = 0; + protected int nlMatrixTopNControlRateBase = 0; + protected int undo_nlMatrixTopNControlRateBase = 0; + protected int nlMatrixTopNControlTimeRemaining = 0; + protected int undo_nlMatrixTopNControlTimeRemaining = 0; + protected long nlMatrixTopNControlGeneratedReports = 0; + protected int nlMatrixTopNControlDuration = 0; + protected int nlMatrixTopNControlRequestedSize = 0; + protected int undo_nlMatrixTopNControlRequestedSize = 0; + protected int nlMatrixTopNControlGrantedSize = 0; + protected long nlMatrixTopNControlStartTime = 0; + protected byte[] nlMatrixTopNControlOwner = new byte[0]; + protected byte[] undo_nlMatrixTopNControlOwner = new byte[0]; + protected int nlMatrixTopNControlStatus = 0; + protected int undo_nlMatrixTopNControlStatus = 0; + + public NlMatrixTopNControlEntry(int nlMatrixTopNControlIndex) + { + this.nlMatrixTopNControlIndex = nlMatrixTopNControlIndex; + + instance.append(nlMatrixTopNControlIndex); + } + + public int get_nlMatrixTopNControlIndex() + { + return nlMatrixTopNControlIndex; + } + + public int get_nlMatrixTopNControlMatrixIndex() + { + return nlMatrixTopNControlMatrixIndex; + } + + public int set_nlMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlMatrixIndex = nlMatrixTopNControlMatrixIndex; + nlMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlMatrixIndex = undo_nlMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlRateBase() + { + return nlMatrixTopNControlRateBase; + } + + public int set_nlMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRateBase = nlMatrixTopNControlRateBase; + nlMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRateBase = undo_nlMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlTimeRemaining() + { + return nlMatrixTopNControlTimeRemaining; + } + + public int set_nlMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlTimeRemaining = nlMatrixTopNControlTimeRemaining; + nlMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlTimeRemaining = undo_nlMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_nlMatrixTopNControlGeneratedReports() + { + return nlMatrixTopNControlGeneratedReports; + } + + public int get_nlMatrixTopNControlDuration() + { + return nlMatrixTopNControlDuration; + } + + public int get_nlMatrixTopNControlRequestedSize() + { + return nlMatrixTopNControlRequestedSize; + } + + public int set_nlMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRequestedSize = nlMatrixTopNControlRequestedSize; + nlMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRequestedSize = undo_nlMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlGrantedSize() + { + return nlMatrixTopNControlGrantedSize; + } + + public long get_nlMatrixTopNControlStartTime() + { + return nlMatrixTopNControlStartTime; + } + + public byte[] get_nlMatrixTopNControlOwner() + { + return nlMatrixTopNControlOwner; + } + + public int set_nlMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlOwner = nlMatrixTopNControlOwner; + nlMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + nlMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlOwner = undo_nlMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_nlMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlStatus() + { + return nlMatrixTopNControlStatus; + } + + public int set_nlMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlStatus = nlMatrixTopNControlStatus; + nlMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlStatus = undo_nlMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NlMatrixTopNControlEntryImpl.java b/test/dumps/jax/NlMatrixTopNControlEntryImpl.java new file mode 100644 index 0000000..6085328 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlEntryImpl.java @@ -0,0 +1,196 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixTopNControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNControlEntryImpl extends NlMatrixTopNControlEntry +{ + + // constructor + public NlMatrixTopNControlEntryImpl(int nlMatrixTopNControlIndex) + { + super(nlMatrixTopNControlIndex); + } + + public int get_nlMatrixTopNControlMatrixIndex() + { + return nlMatrixTopNControlMatrixIndex; + } + + public int set_nlMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlMatrixIndex = nlMatrixTopNControlMatrixIndex; + nlMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlMatrixIndex = undo_nlMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlRateBase() + { + return nlMatrixTopNControlRateBase; + } + + public int set_nlMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRateBase = nlMatrixTopNControlRateBase; + nlMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRateBase = undo_nlMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlTimeRemaining() + { + return nlMatrixTopNControlTimeRemaining; + } + + public int set_nlMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlTimeRemaining = nlMatrixTopNControlTimeRemaining; + nlMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlTimeRemaining = undo_nlMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_nlMatrixTopNControlGeneratedReports() + { + return nlMatrixTopNControlGeneratedReports; + } + + public int get_nlMatrixTopNControlDuration() + { + return nlMatrixTopNControlDuration; + } + + public int get_nlMatrixTopNControlRequestedSize() + { + return nlMatrixTopNControlRequestedSize; + } + + public int set_nlMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRequestedSize = nlMatrixTopNControlRequestedSize; + nlMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRequestedSize = undo_nlMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlGrantedSize() + { + return nlMatrixTopNControlGrantedSize; + } + + public long get_nlMatrixTopNControlStartTime() + { + return nlMatrixTopNControlStartTime; + } + + public byte[] get_nlMatrixTopNControlOwner() + { + return nlMatrixTopNControlOwner; + } + + public int set_nlMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlOwner = nlMatrixTopNControlOwner; + nlMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + nlMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlOwner = undo_nlMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_nlMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlStatus() + { + return nlMatrixTopNControlStatus; + } + + public int set_nlMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlStatus = nlMatrixTopNControlStatus; + nlMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlStatus = undo_nlMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NlMatrixTopNControlTable.java b/test/dumps/jax/NlMatrixTopNControlTable.java new file mode 100644 index 0000000..51112d7 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixTopNControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixTopNControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1}; + + // constructors + public NlMatrixTopNControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public NlMatrixTopNControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // nlMatrixTopNControlMatrixIndex + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlMatrixIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // nlMatrixTopNControlRateBase + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlRateBase(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // nlMatrixTopNControlTimeRemaining + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlTimeRemaining(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // nlMatrixTopNControlGeneratedReports + { + long value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlGeneratedReports(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // nlMatrixTopNControlDuration + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlDuration(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // nlMatrixTopNControlRequestedSize + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlRequestedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // nlMatrixTopNControlGrantedSize + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlGrantedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // nlMatrixTopNControlStartTime + { + long value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlStartTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // nlMatrixTopNControlOwner + { + byte[] value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // nlMatrixTopNControlStatus + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // nlMatrixTopNControlMatrixIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlMatrixIndex(phase, vb.intValue()); + } + case 3: // nlMatrixTopNControlRateBase + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlRateBase(phase, vb.intValue()); + } + case 4: // nlMatrixTopNControlTimeRemaining + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlTimeRemaining(phase, vb.intValue()); + } + case 7: // nlMatrixTopNControlRequestedSize + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlRequestedSize(phase, vb.intValue()); + } + case 10: // nlMatrixTopNControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlOwner(phase, vb.bytesValue()); + } + case 11: // nlMatrixTopNControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNEntry.java b/test/dumps/jax/NlMatrixTopNEntry.java new file mode 100644 index 0000000..4838575 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNEntry.java @@ -0,0 +1,92 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixTopNEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNEntry extends AgentXEntry +{ + + protected int nlMatrixTopNIndex = 0; + protected int nlMatrixTopNProtocolDirLocalIndex = 0; + protected byte[] nlMatrixTopNSourceAddress = new byte[0]; + protected byte[] nlMatrixTopNDestAddress = new byte[0]; + protected long nlMatrixTopNPktRate = 0; + protected long nlMatrixTopNReversePktRate = 0; + protected long nlMatrixTopNOctetRate = 0; + protected long nlMatrixTopNReverseOctetRate = 0; + // foreign indices + protected int nlMatrixTopNControlIndex; + + public NlMatrixTopNEntry(int nlMatrixTopNControlIndex, + int nlMatrixTopNIndex) + { + this.nlMatrixTopNControlIndex = nlMatrixTopNControlIndex; + this.nlMatrixTopNIndex = nlMatrixTopNIndex; + + instance.append(nlMatrixTopNControlIndex); + instance.append(nlMatrixTopNIndex); + } + + public int get_nlMatrixTopNControlIndex() + { + return nlMatrixTopNControlIndex; + } + + public int get_nlMatrixTopNIndex() + { + return nlMatrixTopNIndex; + } + + public int get_nlMatrixTopNProtocolDirLocalIndex() + { + return nlMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_nlMatrixTopNSourceAddress() + { + return nlMatrixTopNSourceAddress; + } + + public byte[] get_nlMatrixTopNDestAddress() + { + return nlMatrixTopNDestAddress; + } + + public long get_nlMatrixTopNPktRate() + { + return nlMatrixTopNPktRate; + } + + public long get_nlMatrixTopNReversePktRate() + { + return nlMatrixTopNReversePktRate; + } + + public long get_nlMatrixTopNOctetRate() + { + return nlMatrixTopNOctetRate; + } + + public long get_nlMatrixTopNReverseOctetRate() + { + return nlMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNEntryImpl.java b/test/dumps/jax/NlMatrixTopNEntryImpl.java new file mode 100644 index 0000000..1279be6 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNEntryImpl.java @@ -0,0 +1,66 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixTopNEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNEntryImpl extends NlMatrixTopNEntry +{ + + // constructor + public NlMatrixTopNEntryImpl(int nlMatrixTopNControlIndex, + int nlMatrixTopNIndex) + { + super(nlMatrixTopNControlIndex, + nlMatrixTopNIndex); + } + + public int get_nlMatrixTopNProtocolDirLocalIndex() + { + return nlMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_nlMatrixTopNSourceAddress() + { + return nlMatrixTopNSourceAddress; + } + + public byte[] get_nlMatrixTopNDestAddress() + { + return nlMatrixTopNDestAddress; + } + + public long get_nlMatrixTopNPktRate() + { + return nlMatrixTopNPktRate; + } + + public long get_nlMatrixTopNReversePktRate() + { + return nlMatrixTopNReversePktRate; + } + + public long get_nlMatrixTopNOctetRate() + { + return nlMatrixTopNOctetRate; + } + + public long get_nlMatrixTopNReverseOctetRate() + { + return nlMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNTable.java b/test/dumps/jax/NlMatrixTopNTable.java new file mode 100644 index 0000000..9eab50a --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNTable.java @@ -0,0 +1,121 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixTopNTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixTopNTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1}; + + // constructors + public NlMatrixTopNTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public NlMatrixTopNTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // nlMatrixTopNProtocolDirLocalIndex + { + int value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // nlMatrixTopNSourceAddress + { + byte[] value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNSourceAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // nlMatrixTopNDestAddress + { + byte[] value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // nlMatrixTopNPktRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNPktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixTopNReversePktRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNReversePktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // nlMatrixTopNOctetRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // nlMatrixTopNReverseOctetRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNReverseOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProbeConfig.java b/test/dumps/jax/ProbeConfig.java new file mode 100644 index 0000000..863228a --- /dev/null +++ b/test/dumps/jax/ProbeConfig.java @@ -0,0 +1,328 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProbeConfig.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group probeConfig defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class ProbeConfig extends AgentXScalars +{ + + private final static long[] ProbeConfigOID = {1, 3, 6, 1, 2, 1, 16, 19}; + + protected AgentXOID ProbeCapabilitiesOID; + protected final static long[] ProbeCapabilitiesName = {1, 3, 6, 1, 2, 1, 16, 19, 1, 0}; + protected byte[] probeCapabilities = new byte[0]; + protected AgentXOID ProbeSoftwareRevOID; + protected final static long[] ProbeSoftwareRevName = {1, 3, 6, 1, 2, 1, 16, 19, 2, 0}; + protected byte[] probeSoftwareRev = new byte[0]; + protected AgentXOID ProbeHardwareRevOID; + protected final static long[] ProbeHardwareRevName = {1, 3, 6, 1, 2, 1, 16, 19, 3, 0}; + protected byte[] probeHardwareRev = new byte[0]; + protected AgentXOID ProbeDateTimeOID; + protected final static long[] ProbeDateTimeName = {1, 3, 6, 1, 2, 1, 16, 19, 4, 0}; + protected byte[] probeDateTime = new byte[0]; + protected byte[] undo_probeDateTime = new byte[0]; + protected AgentXOID ProbeResetControlOID; + protected final static long[] ProbeResetControlName = {1, 3, 6, 1, 2, 1, 16, 19, 5, 0}; + protected int probeResetControl = 0; + protected int undo_probeResetControl = 0; + protected AgentXOID ProbeDownloadFileOID; + protected final static long[] ProbeDownloadFileName = {1, 3, 6, 1, 2, 1, 16, 19, 6, 0}; + protected byte[] probeDownloadFile = new byte[0]; + protected byte[] undo_probeDownloadFile = new byte[0]; + protected AgentXOID ProbeDownloadTFTPServerOID; + protected final static long[] ProbeDownloadTFTPServerName = {1, 3, 6, 1, 2, 1, 16, 19, 7, 0}; + protected byte[] probeDownloadTFTPServer = new byte[4]; + protected byte[] undo_probeDownloadTFTPServer = new byte[4]; + protected AgentXOID ProbeDownloadActionOID; + protected final static long[] ProbeDownloadActionName = {1, 3, 6, 1, 2, 1, 16, 19, 8, 0}; + protected int probeDownloadAction = 0; + protected int undo_probeDownloadAction = 0; + protected AgentXOID ProbeDownloadStatusOID; + protected final static long[] ProbeDownloadStatusName = {1, 3, 6, 1, 2, 1, 16, 19, 9, 0}; + protected int probeDownloadStatus = 0; + public ProbeConfig() + { + oid = new AgentXOID(ProbeConfigOID); + data = new Vector(); + ProbeCapabilitiesOID = new AgentXOID(ProbeCapabilitiesName); + data.addElement(ProbeCapabilitiesOID); + ProbeSoftwareRevOID = new AgentXOID(ProbeSoftwareRevName); + data.addElement(ProbeSoftwareRevOID); + ProbeHardwareRevOID = new AgentXOID(ProbeHardwareRevName); + data.addElement(ProbeHardwareRevOID); + ProbeDateTimeOID = new AgentXOID(ProbeDateTimeName); + data.addElement(ProbeDateTimeOID); + ProbeResetControlOID = new AgentXOID(ProbeResetControlName); + data.addElement(ProbeResetControlOID); + ProbeDownloadFileOID = new AgentXOID(ProbeDownloadFileName); + data.addElement(ProbeDownloadFileOID); + ProbeDownloadTFTPServerOID = new AgentXOID(ProbeDownloadTFTPServerName); + data.addElement(ProbeDownloadTFTPServerOID); + ProbeDownloadActionOID = new AgentXOID(ProbeDownloadActionName); + data.addElement(ProbeDownloadActionOID); + ProbeDownloadStatusOID = new AgentXOID(ProbeDownloadStatusName); + data.addElement(ProbeDownloadStatusOID); + } + + public byte[] get_probeCapabilities() + { + return probeCapabilities; + } + + public byte[] get_probeSoftwareRev() + { + return probeSoftwareRev; + } + + public byte[] get_probeHardwareRev() + { + return probeHardwareRev; + } + + public byte[] get_probeDateTime() + { + return probeDateTime; + } + + public int set_probeDateTime(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDateTime = probeDateTime; + probeDateTime = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDateTime[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDateTime = undo_probeDateTime; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDateTime = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeResetControl() + { + return probeResetControl; + } + + public int set_probeResetControl(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeResetControl = probeResetControl; + probeResetControl = value; + break; + case AgentXSetPhase.UNDO: + probeResetControl = undo_probeResetControl; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_probeDownloadFile() + { + return probeDownloadFile; + } + + public int set_probeDownloadFile(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadFile = probeDownloadFile; + probeDownloadFile = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadFile[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadFile = undo_probeDownloadFile; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadFile = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_probeDownloadTFTPServer() + { + return probeDownloadTFTPServer; + } + + public int set_probeDownloadTFTPServer(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadTFTPServer = probeDownloadTFTPServer; + probeDownloadTFTPServer = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadTFTPServer[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadTFTPServer = undo_probeDownloadTFTPServer; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadTFTPServer = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeDownloadAction() + { + return probeDownloadAction; + } + + public int set_probeDownloadAction(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadAction = probeDownloadAction; + probeDownloadAction = value; + break; + case AgentXSetPhase.UNDO: + probeDownloadAction = undo_probeDownloadAction; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeDownloadStatus() + { + return probeDownloadStatus; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == ProbeCapabilitiesOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeCapabilities()); + if (pos == ProbeSoftwareRevOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeSoftwareRev()); + if (pos == ProbeHardwareRevOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeHardwareRev()); + if (pos == ProbeDateTimeOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeDateTime()); + if (pos == ProbeResetControlOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeResetControl()); + if (pos == ProbeDownloadFileOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeDownloadFile()); + if (pos == ProbeDownloadTFTPServerOID) + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, + get_probeDownloadTFTPServer()); + if (pos == ProbeDownloadActionOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeDownloadAction()); + if (pos == ProbeDownloadStatusOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeDownloadStatus()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == ProbeDateTimeOID) + return set_probeDateTime(phase, inVb.bytesValue()); + if (pos == ProbeResetControlOID) + return set_probeResetControl(phase, inVb.intValue()); + if (pos == ProbeDownloadFileOID) + return set_probeDownloadFile(phase, inVb.bytesValue()); + if (pos == ProbeDownloadTFTPServerOID) + return set_probeDownloadTFTPServer(phase, inVb.bytesValue()); + if (pos == ProbeDownloadActionOID) + return set_probeDownloadAction(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == ProbeCapabilitiesOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeCapabilities()); + if (pos == ProbeSoftwareRevOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeSoftwareRev()); + if (pos == ProbeHardwareRevOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeHardwareRev()); + if (pos == ProbeDateTimeOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeDateTime()); + if (pos == ProbeResetControlOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeResetControl()); + if (pos == ProbeDownloadFileOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeDownloadFile()); + if (pos == ProbeDownloadTFTPServerOID) + return new AgentXVarBind(pos, AgentXVarBind.IPADDRESS, + get_probeDownloadTFTPServer()); + if (pos == ProbeDownloadActionOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeDownloadAction()); + if (pos == ProbeDownloadStatusOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeDownloadStatus()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/ProbeConfigImpl.java b/test/dumps/jax/ProbeConfigImpl.java new file mode 100644 index 0000000..9f3ee71 --- /dev/null +++ b/test/dumps/jax/ProbeConfigImpl.java @@ -0,0 +1,180 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProbeConfigImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group probeConfig defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class ProbeConfigImpl extends ProbeConfig +{ + + public byte[] get_probeCapabilities() + { + return probeCapabilities; + } + + public byte[] get_probeSoftwareRev() + { + return probeSoftwareRev; + } + + public byte[] get_probeHardwareRev() + { + return probeHardwareRev; + } + + public byte[] get_probeDateTime() + { + return probeDateTime; + } + + public int set_probeDateTime(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDateTime = probeDateTime; + probeDateTime = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDateTime[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDateTime = undo_probeDateTime; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDateTime = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeResetControl() + { + return probeResetControl; + } + + public int set_probeResetControl(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeResetControl = probeResetControl; + probeResetControl = value; + break; + case AgentXSetPhase.UNDO: + probeResetControl = undo_probeResetControl; + break; + case AgentXSetPhase.CLEANUP: + undo_probeResetControl = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_probeDownloadFile() + { + return probeDownloadFile; + } + + public int set_probeDownloadFile(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadFile = probeDownloadFile; + probeDownloadFile = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadFile[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadFile = undo_probeDownloadFile; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadFile = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_probeDownloadTFTPServer() + { + return probeDownloadTFTPServer; + } + + public int set_probeDownloadTFTPServer(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadTFTPServer = probeDownloadTFTPServer; + probeDownloadTFTPServer = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadTFTPServer[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadTFTPServer = undo_probeDownloadTFTPServer; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadTFTPServer = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeDownloadAction() + { + return probeDownloadAction; + } + + public int set_probeDownloadAction(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadAction = probeDownloadAction; + probeDownloadAction = value; + break; + case AgentXSetPhase.UNDO: + probeDownloadAction = undo_probeDownloadAction; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadAction = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeDownloadStatus() + { + return probeDownloadStatus; + } + +} + diff --git a/test/dumps/jax/ProtocolDir.java b/test/dumps/jax/ProtocolDir.java new file mode 100644 index 0000000..480fd28 --- /dev/null +++ b/test/dumps/jax/ProtocolDir.java @@ -0,0 +1,81 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDir.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group protocolDir defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class ProtocolDir extends AgentXScalars +{ + + private final static long[] ProtocolDirOID = {1, 3, 6, 1, 2, 1, 16, 11}; + + protected AgentXOID ProtocolDirLastChangeOID; + protected final static long[] ProtocolDirLastChangeName = {1, 3, 6, 1, 2, 1, 16, 11, 1, 0}; + protected long protocolDirLastChange = 0; + public ProtocolDir() + { + oid = new AgentXOID(ProtocolDirOID); + data = new Vector(); + ProtocolDirLastChangeOID = new AgentXOID(ProtocolDirLastChangeName); + data.addElement(ProtocolDirLastChangeOID); + } + + public long get_protocolDirLastChange() + { + return protocolDirLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == ProtocolDirLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_protocolDirLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == ProtocolDirLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_protocolDirLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/ProtocolDirEntry.java b/test/dumps/jax/ProtocolDirEntry.java new file mode 100644 index 0000000..b7b2cf5 --- /dev/null +++ b/test/dumps/jax/ProtocolDirEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDirEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDirEntry extends AgentXEntry +{ + + protected byte[] protocolDirID = new byte[0]; + protected byte[] protocolDirParameters = new byte[0]; + protected int protocolDirLocalIndex = 0; + protected byte[] protocolDirDescr = new byte[0]; + protected byte[] undo_protocolDirDescr = new byte[0]; + protected byte[] protocolDirType = new byte[0]; + protected int protocolDirAddressMapConfig = 0; + protected int undo_protocolDirAddressMapConfig = 0; + protected int protocolDirHostConfig = 0; + protected int undo_protocolDirHostConfig = 0; + protected int protocolDirMatrixConfig = 0; + protected int undo_protocolDirMatrixConfig = 0; + protected byte[] protocolDirOwner = new byte[0]; + protected byte[] undo_protocolDirOwner = new byte[0]; + protected int protocolDirStatus = 0; + protected int undo_protocolDirStatus = 0; + + public ProtocolDirEntry(byte[] protocolDirID, + byte[] protocolDirParameters) + { + this.protocolDirID = protocolDirID; + this.protocolDirParameters = protocolDirParameters; + + instance.append(protocolDirID); + instance.append(protocolDirParameters); + } + + public byte[] get_protocolDirID() + { + return protocolDirID; + } + + public byte[] get_protocolDirParameters() + { + return protocolDirParameters; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_protocolDirDescr() + { + return protocolDirDescr; + } + + public int set_protocolDirDescr(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirDescr = protocolDirDescr; + protocolDirDescr = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirDescr[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirDescr = undo_protocolDirDescr; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirDescr = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirType() + { + return protocolDirType; + } + + public int get_protocolDirAddressMapConfig() + { + return protocolDirAddressMapConfig; + } + + public int set_protocolDirAddressMapConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirAddressMapConfig = protocolDirAddressMapConfig; + protocolDirAddressMapConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirAddressMapConfig = undo_protocolDirAddressMapConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirHostConfig() + { + return protocolDirHostConfig; + } + + public int set_protocolDirHostConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirHostConfig = protocolDirHostConfig; + protocolDirHostConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirHostConfig = undo_protocolDirHostConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirMatrixConfig() + { + return protocolDirMatrixConfig; + } + + public int set_protocolDirMatrixConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirMatrixConfig = protocolDirMatrixConfig; + protocolDirMatrixConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirMatrixConfig = undo_protocolDirMatrixConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirOwner() + { + return protocolDirOwner; + } + + public int set_protocolDirOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirOwner = protocolDirOwner; + protocolDirOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirOwner = undo_protocolDirOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirStatus() + { + return protocolDirStatus; + } + + public int set_protocolDirStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirStatus = protocolDirStatus; + protocolDirStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDirStatus = undo_protocolDirStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDirEntryImpl.java b/test/dumps/jax/ProtocolDirEntryImpl.java new file mode 100644 index 0000000..eb324a4 --- /dev/null +++ b/test/dumps/jax/ProtocolDirEntryImpl.java @@ -0,0 +1,191 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDirEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDirEntryImpl extends ProtocolDirEntry +{ + + // constructor + public ProtocolDirEntryImpl(byte[] protocolDirID, + byte[] protocolDirParameters) + { + super(protocolDirID, + protocolDirParameters); + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_protocolDirDescr() + { + return protocolDirDescr; + } + + public int set_protocolDirDescr(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirDescr = protocolDirDescr; + protocolDirDescr = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirDescr[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirDescr = undo_protocolDirDescr; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirDescr = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirType() + { + return protocolDirType; + } + + public int get_protocolDirAddressMapConfig() + { + return protocolDirAddressMapConfig; + } + + public int set_protocolDirAddressMapConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirAddressMapConfig = protocolDirAddressMapConfig; + protocolDirAddressMapConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirAddressMapConfig = undo_protocolDirAddressMapConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirHostConfig() + { + return protocolDirHostConfig; + } + + public int set_protocolDirHostConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirHostConfig = protocolDirHostConfig; + protocolDirHostConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirHostConfig = undo_protocolDirHostConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirMatrixConfig() + { + return protocolDirMatrixConfig; + } + + public int set_protocolDirMatrixConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirMatrixConfig = protocolDirMatrixConfig; + protocolDirMatrixConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirMatrixConfig = undo_protocolDirMatrixConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirOwner() + { + return protocolDirOwner; + } + + public int set_protocolDirOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirOwner = protocolDirOwner; + protocolDirOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirOwner = undo_protocolDirOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirStatus() + { + return protocolDirStatus; + } + + public int set_protocolDirStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirStatus = protocolDirStatus; + protocolDirStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDirStatus = undo_protocolDirStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDirImpl.java b/test/dumps/jax/ProtocolDirImpl.java new file mode 100644 index 0000000..d93a2a8 --- /dev/null +++ b/test/dumps/jax/ProtocolDirImpl.java @@ -0,0 +1,29 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group protocolDir defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class ProtocolDirImpl extends ProtocolDir +{ + + public long get_protocolDirLastChange() + { + return protocolDirLastChange; + } + +} + diff --git a/test/dumps/jax/ProtocolDirTable.java b/test/dumps/jax/ProtocolDirTable.java new file mode 100644 index 0000000..f28cc82 --- /dev/null +++ b/test/dumps/jax/ProtocolDirTable.java @@ -0,0 +1,170 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDirTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDirTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1}; + + // constructors + public ProtocolDirTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public ProtocolDirTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // protocolDirLocalIndex + { + int value = ((ProtocolDirEntry)entry).get_protocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // protocolDirDescr + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // protocolDirType + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirType(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // protocolDirAddressMapConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirAddressMapConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // protocolDirHostConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirHostConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // protocolDirMatrixConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirMatrixConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // protocolDirOwner + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 10: // protocolDirStatus + { + int value = ((ProtocolDirEntry)entry).get_protocolDirStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 4: // protocolDirDescr + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirDescr(phase, vb.bytesValue()); + } + case 6: // protocolDirAddressMapConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirAddressMapConfig(phase, vb.intValue()); + } + case 7: // protocolDirHostConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirHostConfig(phase, vb.intValue()); + } + case 8: // protocolDirMatrixConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirMatrixConfig(phase, vb.intValue()); + } + case 9: // protocolDirOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirOwner(phase, vb.bytesValue()); + } + case 10: // protocolDirStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProtocolDistControlEntry.java b/test/dumps/jax/ProtocolDistControlEntry.java new file mode 100644 index 0000000..8c24706 --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlEntry.java @@ -0,0 +1,133 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDistControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistControlEntry extends AgentXEntry +{ + + protected int protocolDistControlIndex = 0; + protected AgentXOID protocolDistControlDataSource = new AgentXOID(); + protected AgentXOID undo_protocolDistControlDataSource = new AgentXOID(); + protected long protocolDistControlDroppedFrames = 0; + protected long protocolDistControlCreateTime = 0; + protected byte[] protocolDistControlOwner = new byte[0]; + protected byte[] undo_protocolDistControlOwner = new byte[0]; + protected int protocolDistControlStatus = 0; + protected int undo_protocolDistControlStatus = 0; + + public ProtocolDistControlEntry(int protocolDistControlIndex) + { + this.protocolDistControlIndex = protocolDistControlIndex; + + instance.append(protocolDistControlIndex); + } + + public int get_protocolDistControlIndex() + { + return protocolDistControlIndex; + } + + public AgentXOID get_protocolDistControlDataSource() + { + return protocolDistControlDataSource; + } + + public int set_protocolDistControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlDataSource = protocolDistControlDataSource; + protocolDistControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlDataSource = undo_protocolDistControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_protocolDistControlDroppedFrames() + { + return protocolDistControlDroppedFrames; + } + + public long get_protocolDistControlCreateTime() + { + return protocolDistControlCreateTime; + } + + public byte[] get_protocolDistControlOwner() + { + return protocolDistControlOwner; + } + + public int set_protocolDistControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlOwner = protocolDistControlOwner; + protocolDistControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDistControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDistControlOwner = undo_protocolDistControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDistControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDistControlStatus() + { + return protocolDistControlStatus; + } + + public int set_protocolDistControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlStatus = protocolDistControlStatus; + protocolDistControlStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlStatus = undo_protocolDistControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDistControlEntryImpl.java b/test/dumps/jax/ProtocolDistControlEntryImpl.java new file mode 100644 index 0000000..97eaec4 --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlEntryImpl.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDistControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistControlEntryImpl extends ProtocolDistControlEntry +{ + + // constructor + public ProtocolDistControlEntryImpl(int protocolDistControlIndex) + { + super(protocolDistControlIndex); + } + + public AgentXOID get_protocolDistControlDataSource() + { + return protocolDistControlDataSource; + } + + public int set_protocolDistControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlDataSource = protocolDistControlDataSource; + protocolDistControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlDataSource = undo_protocolDistControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_protocolDistControlDroppedFrames() + { + return protocolDistControlDroppedFrames; + } + + public long get_protocolDistControlCreateTime() + { + return protocolDistControlCreateTime; + } + + public byte[] get_protocolDistControlOwner() + { + return protocolDistControlOwner; + } + + public int set_protocolDistControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlOwner = protocolDistControlOwner; + protocolDistControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDistControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDistControlOwner = undo_protocolDistControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDistControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDistControlStatus() + { + return protocolDistControlStatus; + } + + public int set_protocolDistControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlStatus = protocolDistControlStatus; + protocolDistControlStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlStatus = undo_protocolDistControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDistControlTable.java b/test/dumps/jax/ProtocolDistControlTable.java new file mode 100644 index 0000000..aeca05f --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlTable.java @@ -0,0 +1,128 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDistControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDistControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1}; + + // constructors + public ProtocolDistControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public ProtocolDistControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // protocolDistControlDataSource + { + AgentXOID value = ((ProtocolDistControlEntry)entry).get_protocolDistControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // protocolDistControlDroppedFrames + { + long value = ((ProtocolDistControlEntry)entry).get_protocolDistControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // protocolDistControlCreateTime + { + long value = ((ProtocolDistControlEntry)entry).get_protocolDistControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 5: // protocolDistControlOwner + { + byte[] value = ((ProtocolDistControlEntry)entry).get_protocolDistControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // protocolDistControlStatus + { + int value = ((ProtocolDistControlEntry)entry).get_protocolDistControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // protocolDistControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlDataSource(phase, vb.AgentXOIDValue()); + } + case 5: // protocolDistControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlOwner(phase, vb.bytesValue()); + } + case 6: // protocolDistControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsEntry.java b/test/dumps/jax/ProtocolDistStatsEntry.java new file mode 100644 index 0000000..6e3a3a7 --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsEntry.java @@ -0,0 +1,62 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDistStatsEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistStatsEntry extends AgentXEntry +{ + + protected long protocolDistStatsPkts = 0; + protected long protocolDistStatsOctets = 0; + // foreign indices + protected int protocolDistControlIndex; + protected int protocolDirLocalIndex; + + public ProtocolDistStatsEntry(int protocolDistControlIndex, + int protocolDirLocalIndex) + { + this.protocolDistControlIndex = protocolDistControlIndex; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(protocolDistControlIndex); + instance.append(protocolDirLocalIndex); + } + + public int get_protocolDistControlIndex() + { + return protocolDistControlIndex; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_protocolDistStatsPkts() + { + return protocolDistStatsPkts; + } + + public long get_protocolDistStatsOctets() + { + return protocolDistStatsOctets; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsEntryImpl.java b/test/dumps/jax/ProtocolDistStatsEntryImpl.java new file mode 100644 index 0000000..3d2b7e3 --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsEntryImpl.java @@ -0,0 +1,41 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDistStatsEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistStatsEntryImpl extends ProtocolDistStatsEntry +{ + + // constructor + public ProtocolDistStatsEntryImpl(int protocolDistControlIndex, + int protocolDirLocalIndex) + { + super(protocolDistControlIndex, + protocolDirLocalIndex); + } + + public long get_protocolDistStatsPkts() + { + return protocolDistStatsPkts; + } + + public long get_protocolDistStatsOctets() + { + return protocolDistStatsOctets; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsTable.java b/test/dumps/jax/ProtocolDistStatsTable.java new file mode 100644 index 0000000..b51429c --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDistStatsTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDistStatsTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1}; + + // constructors + public ProtocolDistStatsTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public ProtocolDistStatsTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // protocolDistStatsPkts + { + long value = ((ProtocolDistStatsEntry)entry).get_protocolDistStatsPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 2: // protocolDistStatsOctets + { + long value = ((ProtocolDistStatsEntry)entry).get_protocolDistStatsOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RingStationControl2Entry.java b/test/dumps/jax/RingStationControl2Entry.java new file mode 100644 index 0000000..f92e4b3 --- /dev/null +++ b/test/dumps/jax/RingStationControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ringStationControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RingStationControl2Entry extends AgentXEntry +{ + + protected long ringStationControlDroppedFrames = 0; + protected long ringStationControlCreateTime = 0; + + public RingStationControl2Entry() + { + + } + + public long get_ringStationControlDroppedFrames() + { + return ringStationControlDroppedFrames; + } + + public long get_ringStationControlCreateTime() + { + return ringStationControlCreateTime; + } + +} + diff --git a/test/dumps/jax/RingStationControl2EntryImpl.java b/test/dumps/jax/RingStationControl2EntryImpl.java new file mode 100644 index 0000000..acd6be9 --- /dev/null +++ b/test/dumps/jax/RingStationControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ringStationControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RingStationControl2EntryImpl extends RingStationControl2Entry +{ + + // constructor + public RingStationControl2EntryImpl() + { + super(); + } + + public long get_ringStationControlDroppedFrames() + { + return ringStationControlDroppedFrames; + } + + public long get_ringStationControlCreateTime() + { + return ringStationControlCreateTime; + } + +} + diff --git a/test/dumps/jax/RingStationControl2Table.java b/test/dumps/jax/RingStationControl2Table.java new file mode 100644 index 0000000..570c923 --- /dev/null +++ b/test/dumps/jax/RingStationControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ringStationControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RingStationControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1}; + + // constructors + public RingStationControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public RingStationControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ringStationControlDroppedFrames + { + long value = ((RingStationControl2Entry)entry).get_ringStationControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // ringStationControlCreateTime + { + long value = ((RingStationControl2Entry)entry).get_ringStationControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RpJackEntry.java b/test/dumps/jax/RpJackEntry.java new file mode 100644 index 0000000..2a605f4 --- /dev/null +++ b/test/dumps/jax/RpJackEntry.java @@ -0,0 +1,74 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row rpJackEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpJackEntry extends AgentXEntry +{ + + protected int rpJackIndex = 0; + protected int rpJackType = 0; + // foreign indices + protected int rpMauGroupIndex; + protected int rpMauPortIndex; + protected int rpMauIndex; + + public RpJackEntry(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex, + int rpJackIndex) + { + this.rpMauGroupIndex = rpMauGroupIndex; + this.rpMauPortIndex = rpMauPortIndex; + this.rpMauIndex = rpMauIndex; + this.rpJackIndex = rpJackIndex; + + instance.append(rpMauGroupIndex); + instance.append(rpMauPortIndex); + instance.append(rpMauIndex); + instance.append(rpJackIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public int get_rpJackIndex() + { + return rpJackIndex; + } + + public int get_rpJackType() + { + return rpJackType; + } + +} + diff --git a/test/dumps/jax/RpJackEntryImpl.java b/test/dumps/jax/RpJackEntryImpl.java new file mode 100644 index 0000000..d7b6a9c --- /dev/null +++ b/test/dumps/jax/RpJackEntryImpl.java @@ -0,0 +1,40 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row rpJackEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpJackEntryImpl extends RpJackEntry +{ + + // constructor + public RpJackEntryImpl(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex, + int rpJackIndex) + { + super(rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpJackIndex); + } + + public int get_rpJackType() + { + return rpJackType; + } + +} + diff --git a/test/dumps/jax/RpJackTable.java b/test/dumps/jax/RpJackTable.java new file mode 100644 index 0000000..a8cf9d4 --- /dev/null +++ b/test/dumps/jax/RpJackTable.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table rpJackTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RpJackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1}; + + // constructors + public RpJackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public RpJackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // rpJackType + { + int value = ((RpJackEntry)entry).get_rpJackType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RpMauEntry.java b/test/dumps/jax/RpMauEntry.java new file mode 100644 index 0000000..6640173 --- /dev/null +++ b/test/dumps/jax/RpMauEntry.java @@ -0,0 +1,120 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row rpMauEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpMauEntry extends AgentXEntry +{ + + protected int rpMauGroupIndex = 0; + protected int rpMauPortIndex = 0; + protected int rpMauIndex = 0; + protected AgentXOID rpMauType = new AgentXOID(); + protected int rpMauStatus = 0; + protected int undo_rpMauStatus = 0; + protected int rpMauMediaAvailable = 0; + protected long rpMauMediaAvailableStateExits = 0; + protected int rpMauJabberState = 0; + protected long rpMauJabberingStateEnters = 0; + protected long rpMauFalseCarriers = 0; + + public RpMauEntry(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex) + { + this.rpMauGroupIndex = rpMauGroupIndex; + this.rpMauPortIndex = rpMauPortIndex; + this.rpMauIndex = rpMauIndex; + + instance.append(rpMauGroupIndex); + instance.append(rpMauPortIndex); + instance.append(rpMauIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public AgentXOID get_rpMauType() + { + return rpMauType; + } + + public int get_rpMauStatus() + { + return rpMauStatus; + } + + public int set_rpMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_rpMauStatus = rpMauStatus; + rpMauStatus = value; + break; + case AgentXSetPhase.UNDO: + rpMauStatus = undo_rpMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_rpMauMediaAvailable() + { + return rpMauMediaAvailable; + } + + public long get_rpMauMediaAvailableStateExits() + { + return rpMauMediaAvailableStateExits; + } + + public int get_rpMauJabberState() + { + return rpMauJabberState; + } + + public long get_rpMauJabberingStateEnters() + { + return rpMauJabberingStateEnters; + } + + public long get_rpMauFalseCarriers() + { + return rpMauFalseCarriers; + } + +} + diff --git a/test/dumps/jax/RpMauEntryImpl.java b/test/dumps/jax/RpMauEntryImpl.java new file mode 100644 index 0000000..23e9480 --- /dev/null +++ b/test/dumps/jax/RpMauEntryImpl.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row rpMauEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpMauEntryImpl extends RpMauEntry +{ + + // constructor + public RpMauEntryImpl(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex) + { + super(rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public AgentXOID get_rpMauType() + { + return rpMauType; + } + + public int get_rpMauStatus() + { + return rpMauStatus; + } + + public int set_rpMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_rpMauStatus = rpMauStatus; + rpMauStatus = value; + break; + case AgentXSetPhase.UNDO: + rpMauStatus = undo_rpMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_rpMauMediaAvailable() + { + return rpMauMediaAvailable; + } + + public long get_rpMauMediaAvailableStateExits() + { + return rpMauMediaAvailableStateExits; + } + + public int get_rpMauJabberState() + { + return rpMauJabberState; + } + + public long get_rpMauJabberingStateEnters() + { + return rpMauJabberingStateEnters; + } + + public long get_rpMauFalseCarriers() + { + return rpMauFalseCarriers; + } + +} + diff --git a/test/dumps/jax/RpMauJabberTrap.java b/test/dumps/jax/RpMauJabberTrap.java new file mode 100644 index 0000000..2adccd1 --- /dev/null +++ b/test/dumps/jax/RpMauJabberTrap.java @@ -0,0 +1,47 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauJabberTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class RpMauJabberTrap extends AgentXNotification +{ + + private final static long[] rpMauJabberTrap_OID = {1, 3, 6, 1, 2, 1, 26, 0, 1}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(rpMauJabberTrap_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 8}; + private final AgentXOID rpMauJabberState_OID = new AgentXOID(OID1); + + + public RpMauJabberTrap(RpMauEntry rpMauEntry_1) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the rpMauJabberState columnar object of rpMauEntry_1 + oid = rpMauJabberState_OID; + oid.appendImplied(rpMauEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + rpMauEntry_1.get_rpMauJabberState()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/RpMauTable.java b/test/dumps/jax/RpMauTable.java new file mode 100644 index 0000000..ae3554b --- /dev/null +++ b/test/dumps/jax/RpMauTable.java @@ -0,0 +1,149 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table rpMauTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RpMauTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1}; + + // constructors + public RpMauTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public RpMauTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // rpMauGroupIndex + { + int value = ((RpMauEntry)entry).get_rpMauGroupIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // rpMauPortIndex + { + int value = ((RpMauEntry)entry).get_rpMauPortIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // rpMauIndex + { + int value = ((RpMauEntry)entry).get_rpMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // rpMauType + { + AgentXOID value = ((RpMauEntry)entry).get_rpMauType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 5: // rpMauStatus + { + int value = ((RpMauEntry)entry).get_rpMauStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // rpMauMediaAvailable + { + int value = ((RpMauEntry)entry).get_rpMauMediaAvailable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // rpMauMediaAvailableStateExits + { + long value = ((RpMauEntry)entry).get_rpMauMediaAvailableStateExits(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // rpMauJabberState + { + int value = ((RpMauEntry)entry).get_rpMauJabberState(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // rpMauJabberingStateEnters + { + long value = ((RpMauEntry)entry).get_rpMauJabberingStateEnters(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // rpMauFalseCarriers + { + long value = ((RpMauEntry)entry).get_rpMauFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 5: // rpMauStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((RpMauEntry)entry).set_rpMauStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SerialConfigEntry.java b/test/dumps/jax/SerialConfigEntry.java new file mode 100644 index 0000000..0b519c2 --- /dev/null +++ b/test/dumps/jax/SerialConfigEntry.java @@ -0,0 +1,287 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row serialConfigEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConfigEntry extends AgentXEntry +{ + + protected int serialMode = 0; + protected int undo_serialMode = 0; + protected int serialProtocol = 0; + protected int undo_serialProtocol = 0; + protected int serialTimeout = 0; + protected int undo_serialTimeout = 0; + protected byte[] serialModemInitString = new byte[0]; + protected byte[] undo_serialModemInitString = new byte[0]; + protected byte[] serialModemHangUpString = new byte[0]; + protected byte[] undo_serialModemHangUpString = new byte[0]; + protected byte[] serialModemConnectResp = new byte[0]; + protected byte[] undo_serialModemConnectResp = new byte[0]; + protected byte[] serialModemNoConnectResp = new byte[0]; + protected byte[] undo_serialModemNoConnectResp = new byte[0]; + protected int serialDialoutTimeout = 0; + protected int undo_serialDialoutTimeout = 0; + protected int serialStatus = 0; + protected int undo_serialStatus = 0; + // foreign indices + protected int ifIndex; + + public SerialConfigEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public int get_serialMode() + { + return serialMode; + } + + public int set_serialMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialMode = serialMode; + serialMode = value; + break; + case AgentXSetPhase.UNDO: + serialMode = undo_serialMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialProtocol() + { + return serialProtocol; + } + + public int set_serialProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialProtocol = serialProtocol; + serialProtocol = value; + break; + case AgentXSetPhase.UNDO: + serialProtocol = undo_serialProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialTimeout() + { + return serialTimeout; + } + + public int set_serialTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialTimeout = serialTimeout; + serialTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialTimeout = undo_serialTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemInitString() + { + return serialModemInitString; + } + + public int set_serialModemInitString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemInitString = serialModemInitString; + serialModemInitString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemInitString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemInitString = undo_serialModemInitString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemInitString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemHangUpString() + { + return serialModemHangUpString; + } + + public int set_serialModemHangUpString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemHangUpString = serialModemHangUpString; + serialModemHangUpString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemHangUpString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemHangUpString = undo_serialModemHangUpString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemHangUpString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemConnectResp() + { + return serialModemConnectResp; + } + + public int set_serialModemConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemConnectResp = serialModemConnectResp; + serialModemConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemConnectResp = undo_serialModemConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemNoConnectResp() + { + return serialModemNoConnectResp; + } + + public int set_serialModemNoConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemNoConnectResp = serialModemNoConnectResp; + serialModemNoConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemNoConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemNoConnectResp = undo_serialModemNoConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemNoConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialDialoutTimeout() + { + return serialDialoutTimeout; + } + + public int set_serialDialoutTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialDialoutTimeout = serialDialoutTimeout; + serialDialoutTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialDialoutTimeout = undo_serialDialoutTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialStatus() + { + return serialStatus; + } + + public int set_serialStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialStatus = serialStatus; + serialStatus = value; + break; + case AgentXSetPhase.UNDO: + serialStatus = undo_serialStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConfigEntryImpl.java b/test/dumps/jax/SerialConfigEntryImpl.java new file mode 100644 index 0000000..c860f1a --- /dev/null +++ b/test/dumps/jax/SerialConfigEntryImpl.java @@ -0,0 +1,257 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row serialConfigEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConfigEntryImpl extends SerialConfigEntry +{ + + // constructor + public SerialConfigEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public int get_serialMode() + { + return serialMode; + } + + public int set_serialMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialMode = serialMode; + serialMode = value; + break; + case AgentXSetPhase.UNDO: + serialMode = undo_serialMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialProtocol() + { + return serialProtocol; + } + + public int set_serialProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialProtocol = serialProtocol; + serialProtocol = value; + break; + case AgentXSetPhase.UNDO: + serialProtocol = undo_serialProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialTimeout() + { + return serialTimeout; + } + + public int set_serialTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialTimeout = serialTimeout; + serialTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialTimeout = undo_serialTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemInitString() + { + return serialModemInitString; + } + + public int set_serialModemInitString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemInitString = serialModemInitString; + serialModemInitString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemInitString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemInitString = undo_serialModemInitString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemInitString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemHangUpString() + { + return serialModemHangUpString; + } + + public int set_serialModemHangUpString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemHangUpString = serialModemHangUpString; + serialModemHangUpString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemHangUpString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemHangUpString = undo_serialModemHangUpString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemHangUpString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemConnectResp() + { + return serialModemConnectResp; + } + + public int set_serialModemConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemConnectResp = serialModemConnectResp; + serialModemConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemConnectResp = undo_serialModemConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemNoConnectResp() + { + return serialModemNoConnectResp; + } + + public int set_serialModemNoConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemNoConnectResp = serialModemNoConnectResp; + serialModemNoConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemNoConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemNoConnectResp = undo_serialModemNoConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemNoConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialDialoutTimeout() + { + return serialDialoutTimeout; + } + + public int set_serialDialoutTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialDialoutTimeout = serialDialoutTimeout; + serialDialoutTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialDialoutTimeout = undo_serialDialoutTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialStatus() + { + return serialStatus; + } + + public int set_serialStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialStatus = serialStatus; + serialStatus = value; + break; + case AgentXSetPhase.UNDO: + serialStatus = undo_serialStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConfigTable.java b/test/dumps/jax/SerialConfigTable.java new file mode 100644 index 0000000..b7d7bbf --- /dev/null +++ b/test/dumps/jax/SerialConfigTable.java @@ -0,0 +1,198 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table serialConfigTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SerialConfigTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1}; + + // constructors + public SerialConfigTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public SerialConfigTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // serialMode + { + int value = ((SerialConfigEntry)entry).get_serialMode(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // serialProtocol + { + int value = ((SerialConfigEntry)entry).get_serialProtocol(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // serialTimeout + { + int value = ((SerialConfigEntry)entry).get_serialTimeout(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // serialModemInitString + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemInitString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // serialModemHangUpString + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemHangUpString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // serialModemConnectResp + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemConnectResp(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // serialModemNoConnectResp + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemNoConnectResp(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 8: // serialDialoutTimeout + { + int value = ((SerialConfigEntry)entry).get_serialDialoutTimeout(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // serialStatus + { + int value = ((SerialConfigEntry)entry).get_serialStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // serialMode + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialMode(phase, vb.intValue()); + } + case 2: // serialProtocol + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialProtocol(phase, vb.intValue()); + } + case 3: // serialTimeout + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialTimeout(phase, vb.intValue()); + } + case 4: // serialModemInitString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemInitString(phase, vb.bytesValue()); + } + case 5: // serialModemHangUpString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemHangUpString(phase, vb.bytesValue()); + } + case 6: // serialModemConnectResp + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemConnectResp(phase, vb.bytesValue()); + } + case 7: // serialModemNoConnectResp + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemNoConnectResp(phase, vb.bytesValue()); + } + case 8: // serialDialoutTimeout + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialDialoutTimeout(phase, vb.intValue()); + } + case 9: // serialStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SerialConnectionEntry.java b/test/dumps/jax/SerialConnectionEntry.java new file mode 100644 index 0000000..b21e529 --- /dev/null +++ b/test/dumps/jax/SerialConnectionEntry.java @@ -0,0 +1,266 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row serialConnectionEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConnectionEntry extends AgentXEntry +{ + + protected int serialConnectIndex = 0; + protected byte[] serialConnectDestIpAddress = new byte[4]; + protected byte[] undo_serialConnectDestIpAddress = new byte[4]; + protected int serialConnectType = 0; + protected int undo_serialConnectType = 0; + protected byte[] serialConnectDialString = new byte[0]; + protected byte[] undo_serialConnectDialString = new byte[0]; + protected byte[] serialConnectSwitchConnectSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchConnectSeq = new byte[0]; + protected byte[] serialConnectSwitchDisconnectSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchDisconnectSeq = new byte[0]; + protected byte[] serialConnectSwitchResetSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchResetSeq = new byte[0]; + protected byte[] serialConnectOwner = new byte[0]; + protected byte[] undo_serialConnectOwner = new byte[0]; + protected int serialConnectStatus = 0; + protected int undo_serialConnectStatus = 0; + + public SerialConnectionEntry(int serialConnectIndex) + { + this.serialConnectIndex = serialConnectIndex; + + instance.append(serialConnectIndex); + } + + public int get_serialConnectIndex() + { + return serialConnectIndex; + } + + public byte[] get_serialConnectDestIpAddress() + { + return serialConnectDestIpAddress; + } + + public int set_serialConnectDestIpAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDestIpAddress = serialConnectDestIpAddress; + serialConnectDestIpAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDestIpAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDestIpAddress = undo_serialConnectDestIpAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDestIpAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectType() + { + return serialConnectType; + } + + public int set_serialConnectType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectType = serialConnectType; + serialConnectType = value; + break; + case AgentXSetPhase.UNDO: + serialConnectType = undo_serialConnectType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectDialString() + { + return serialConnectDialString; + } + + public int set_serialConnectDialString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDialString = serialConnectDialString; + serialConnectDialString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDialString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDialString = undo_serialConnectDialString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDialString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchConnectSeq() + { + return serialConnectSwitchConnectSeq; + } + + public int set_serialConnectSwitchConnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchConnectSeq = serialConnectSwitchConnectSeq; + serialConnectSwitchConnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchConnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchConnectSeq = undo_serialConnectSwitchConnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchConnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchDisconnectSeq() + { + return serialConnectSwitchDisconnectSeq; + } + + public int set_serialConnectSwitchDisconnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchDisconnectSeq = serialConnectSwitchDisconnectSeq; + serialConnectSwitchDisconnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchDisconnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchDisconnectSeq = undo_serialConnectSwitchDisconnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchDisconnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchResetSeq() + { + return serialConnectSwitchResetSeq; + } + + public int set_serialConnectSwitchResetSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchResetSeq = serialConnectSwitchResetSeq; + serialConnectSwitchResetSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchResetSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchResetSeq = undo_serialConnectSwitchResetSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchResetSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectOwner() + { + return serialConnectOwner; + } + + public int set_serialConnectOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectOwner = serialConnectOwner; + serialConnectOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectOwner = undo_serialConnectOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectStatus() + { + return serialConnectStatus; + } + + public int set_serialConnectStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectStatus = serialConnectStatus; + serialConnectStatus = value; + break; + case AgentXSetPhase.UNDO: + serialConnectStatus = undo_serialConnectStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConnectionEntryImpl.java b/test/dumps/jax/SerialConnectionEntryImpl.java new file mode 100644 index 0000000..92d7450 --- /dev/null +++ b/test/dumps/jax/SerialConnectionEntryImpl.java @@ -0,0 +1,239 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row serialConnectionEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConnectionEntryImpl extends SerialConnectionEntry +{ + + // constructor + public SerialConnectionEntryImpl(int serialConnectIndex) + { + super(serialConnectIndex); + } + + public byte[] get_serialConnectDestIpAddress() + { + return serialConnectDestIpAddress; + } + + public int set_serialConnectDestIpAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDestIpAddress = serialConnectDestIpAddress; + serialConnectDestIpAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDestIpAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDestIpAddress = undo_serialConnectDestIpAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDestIpAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectType() + { + return serialConnectType; + } + + public int set_serialConnectType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectType = serialConnectType; + serialConnectType = value; + break; + case AgentXSetPhase.UNDO: + serialConnectType = undo_serialConnectType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectDialString() + { + return serialConnectDialString; + } + + public int set_serialConnectDialString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDialString = serialConnectDialString; + serialConnectDialString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDialString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDialString = undo_serialConnectDialString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDialString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchConnectSeq() + { + return serialConnectSwitchConnectSeq; + } + + public int set_serialConnectSwitchConnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchConnectSeq = serialConnectSwitchConnectSeq; + serialConnectSwitchConnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchConnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchConnectSeq = undo_serialConnectSwitchConnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchConnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchDisconnectSeq() + { + return serialConnectSwitchDisconnectSeq; + } + + public int set_serialConnectSwitchDisconnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchDisconnectSeq = serialConnectSwitchDisconnectSeq; + serialConnectSwitchDisconnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchDisconnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchDisconnectSeq = undo_serialConnectSwitchDisconnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchDisconnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchResetSeq() + { + return serialConnectSwitchResetSeq; + } + + public int set_serialConnectSwitchResetSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchResetSeq = serialConnectSwitchResetSeq; + serialConnectSwitchResetSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchResetSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchResetSeq = undo_serialConnectSwitchResetSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchResetSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectOwner() + { + return serialConnectOwner; + } + + public int set_serialConnectOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectOwner = serialConnectOwner; + serialConnectOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectOwner = undo_serialConnectOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectStatus() + { + return serialConnectStatus; + } + + public int set_serialConnectStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectStatus = serialConnectStatus; + serialConnectStatus = value; + break; + case AgentXSetPhase.UNDO: + serialConnectStatus = undo_serialConnectStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConnectionTable.java b/test/dumps/jax/SerialConnectionTable.java new file mode 100644 index 0000000..5c65a2f --- /dev/null +++ b/test/dumps/jax/SerialConnectionTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table serialConnectionTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SerialConnectionTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1}; + + // constructors + public SerialConnectionTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public SerialConnectionTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // serialConnectDestIpAddress + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectDestIpAddress(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 3: // serialConnectType + { + int value = ((SerialConnectionEntry)entry).get_serialConnectType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // serialConnectDialString + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectDialString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // serialConnectSwitchConnectSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchConnectSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // serialConnectSwitchDisconnectSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchDisconnectSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // serialConnectSwitchResetSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchResetSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 8: // serialConnectOwner + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 9: // serialConnectStatus + { + int value = ((SerialConnectionEntry)entry).get_serialConnectStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // serialConnectDestIpAddress + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectDestIpAddress(phase, vb.bytesValue()); + } + case 3: // serialConnectType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectType(phase, vb.intValue()); + } + case 4: // serialConnectDialString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectDialString(phase, vb.bytesValue()); + } + case 5: // serialConnectSwitchConnectSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchConnectSeq(phase, vb.bytesValue()); + } + case 6: // serialConnectSwitchDisconnectSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchDisconnectSeq(phase, vb.bytesValue()); + } + case 7: // serialConnectSwitchResetSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchResetSeq(phase, vb.bytesValue()); + } + case 8: // serialConnectOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectOwner(phase, vb.bytesValue()); + } + case 9: // serialConnectStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Snmp.java b/test/dumps/jax/Snmp.java new file mode 100644 index 0000000..6f73634 --- /dev/null +++ b/test/dumps/jax/Snmp.java @@ -0,0 +1,567 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Snmp.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmp defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class Snmp extends AgentXScalars +{ + + private final static long[] SnmpOID = {1, 3, 6, 1, 2, 1, 11}; + + protected AgentXOID SnmpInPktsOID; + protected final static long[] SnmpInPktsName = {1, 3, 6, 1, 2, 1, 11, 1, 0}; + protected long snmpInPkts = 0; + protected AgentXOID SnmpOutPktsOID; + protected final static long[] SnmpOutPktsName = {1, 3, 6, 1, 2, 1, 11, 2, 0}; + protected long snmpOutPkts = 0; + protected AgentXOID SnmpInBadVersionsOID; + protected final static long[] SnmpInBadVersionsName = {1, 3, 6, 1, 2, 1, 11, 3, 0}; + protected long snmpInBadVersions = 0; + protected AgentXOID SnmpInBadCommunityNamesOID; + protected final static long[] SnmpInBadCommunityNamesName = {1, 3, 6, 1, 2, 1, 11, 4, 0}; + protected long snmpInBadCommunityNames = 0; + protected AgentXOID SnmpInBadCommunityUsesOID; + protected final static long[] SnmpInBadCommunityUsesName = {1, 3, 6, 1, 2, 1, 11, 5, 0}; + protected long snmpInBadCommunityUses = 0; + protected AgentXOID SnmpInASNParseErrsOID; + protected final static long[] SnmpInASNParseErrsName = {1, 3, 6, 1, 2, 1, 11, 6, 0}; + protected long snmpInASNParseErrs = 0; + protected AgentXOID SnmpInTooBigsOID; + protected final static long[] SnmpInTooBigsName = {1, 3, 6, 1, 2, 1, 11, 8, 0}; + protected long snmpInTooBigs = 0; + protected AgentXOID SnmpInNoSuchNamesOID; + protected final static long[] SnmpInNoSuchNamesName = {1, 3, 6, 1, 2, 1, 11, 9, 0}; + protected long snmpInNoSuchNames = 0; + protected AgentXOID SnmpInBadValuesOID; + protected final static long[] SnmpInBadValuesName = {1, 3, 6, 1, 2, 1, 11, 10, 0}; + protected long snmpInBadValues = 0; + protected AgentXOID SnmpInReadOnlysOID; + protected final static long[] SnmpInReadOnlysName = {1, 3, 6, 1, 2, 1, 11, 11, 0}; + protected long snmpInReadOnlys = 0; + protected AgentXOID SnmpInGenErrsOID; + protected final static long[] SnmpInGenErrsName = {1, 3, 6, 1, 2, 1, 11, 12, 0}; + protected long snmpInGenErrs = 0; + protected AgentXOID SnmpInTotalReqVarsOID; + protected final static long[] SnmpInTotalReqVarsName = {1, 3, 6, 1, 2, 1, 11, 13, 0}; + protected long snmpInTotalReqVars = 0; + protected AgentXOID SnmpInTotalSetVarsOID; + protected final static long[] SnmpInTotalSetVarsName = {1, 3, 6, 1, 2, 1, 11, 14, 0}; + protected long snmpInTotalSetVars = 0; + protected AgentXOID SnmpInGetRequestsOID; + protected final static long[] SnmpInGetRequestsName = {1, 3, 6, 1, 2, 1, 11, 15, 0}; + protected long snmpInGetRequests = 0; + protected AgentXOID SnmpInGetNextsOID; + protected final static long[] SnmpInGetNextsName = {1, 3, 6, 1, 2, 1, 11, 16, 0}; + protected long snmpInGetNexts = 0; + protected AgentXOID SnmpInSetRequestsOID; + protected final static long[] SnmpInSetRequestsName = {1, 3, 6, 1, 2, 1, 11, 17, 0}; + protected long snmpInSetRequests = 0; + protected AgentXOID SnmpInGetResponsesOID; + protected final static long[] SnmpInGetResponsesName = {1, 3, 6, 1, 2, 1, 11, 18, 0}; + protected long snmpInGetResponses = 0; + protected AgentXOID SnmpInTrapsOID; + protected final static long[] SnmpInTrapsName = {1, 3, 6, 1, 2, 1, 11, 19, 0}; + protected long snmpInTraps = 0; + protected AgentXOID SnmpOutTooBigsOID; + protected final static long[] SnmpOutTooBigsName = {1, 3, 6, 1, 2, 1, 11, 20, 0}; + protected long snmpOutTooBigs = 0; + protected AgentXOID SnmpOutNoSuchNamesOID; + protected final static long[] SnmpOutNoSuchNamesName = {1, 3, 6, 1, 2, 1, 11, 21, 0}; + protected long snmpOutNoSuchNames = 0; + protected AgentXOID SnmpOutBadValuesOID; + protected final static long[] SnmpOutBadValuesName = {1, 3, 6, 1, 2, 1, 11, 22, 0}; + protected long snmpOutBadValues = 0; + protected AgentXOID SnmpOutGenErrsOID; + protected final static long[] SnmpOutGenErrsName = {1, 3, 6, 1, 2, 1, 11, 24, 0}; + protected long snmpOutGenErrs = 0; + protected AgentXOID SnmpOutGetRequestsOID; + protected final static long[] SnmpOutGetRequestsName = {1, 3, 6, 1, 2, 1, 11, 25, 0}; + protected long snmpOutGetRequests = 0; + protected AgentXOID SnmpOutGetNextsOID; + protected final static long[] SnmpOutGetNextsName = {1, 3, 6, 1, 2, 1, 11, 26, 0}; + protected long snmpOutGetNexts = 0; + protected AgentXOID SnmpOutSetRequestsOID; + protected final static long[] SnmpOutSetRequestsName = {1, 3, 6, 1, 2, 1, 11, 27, 0}; + protected long snmpOutSetRequests = 0; + protected AgentXOID SnmpOutGetResponsesOID; + protected final static long[] SnmpOutGetResponsesName = {1, 3, 6, 1, 2, 1, 11, 28, 0}; + protected long snmpOutGetResponses = 0; + protected AgentXOID SnmpOutTrapsOID; + protected final static long[] SnmpOutTrapsName = {1, 3, 6, 1, 2, 1, 11, 29, 0}; + protected long snmpOutTraps = 0; + protected AgentXOID SnmpEnableAuthenTrapsOID; + protected final static long[] SnmpEnableAuthenTrapsName = {1, 3, 6, 1, 2, 1, 11, 30, 0}; + protected int snmpEnableAuthenTraps = 0; + protected int undo_snmpEnableAuthenTraps = 0; + protected AgentXOID SnmpSilentDropsOID; + protected final static long[] SnmpSilentDropsName = {1, 3, 6, 1, 2, 1, 11, 31, 0}; + protected long snmpSilentDrops = 0; + protected AgentXOID SnmpProxyDropsOID; + protected final static long[] SnmpProxyDropsName = {1, 3, 6, 1, 2, 1, 11, 32, 0}; + protected long snmpProxyDrops = 0; + public Snmp() + { + oid = new AgentXOID(SnmpOID); + data = new Vector(); + SnmpInPktsOID = new AgentXOID(SnmpInPktsName); + data.addElement(SnmpInPktsOID); + SnmpOutPktsOID = new AgentXOID(SnmpOutPktsName); + data.addElement(SnmpOutPktsOID); + SnmpInBadVersionsOID = new AgentXOID(SnmpInBadVersionsName); + data.addElement(SnmpInBadVersionsOID); + SnmpInBadCommunityNamesOID = new AgentXOID(SnmpInBadCommunityNamesName); + data.addElement(SnmpInBadCommunityNamesOID); + SnmpInBadCommunityUsesOID = new AgentXOID(SnmpInBadCommunityUsesName); + data.addElement(SnmpInBadCommunityUsesOID); + SnmpInASNParseErrsOID = new AgentXOID(SnmpInASNParseErrsName); + data.addElement(SnmpInASNParseErrsOID); + SnmpInTooBigsOID = new AgentXOID(SnmpInTooBigsName); + data.addElement(SnmpInTooBigsOID); + SnmpInNoSuchNamesOID = new AgentXOID(SnmpInNoSuchNamesName); + data.addElement(SnmpInNoSuchNamesOID); + SnmpInBadValuesOID = new AgentXOID(SnmpInBadValuesName); + data.addElement(SnmpInBadValuesOID); + SnmpInReadOnlysOID = new AgentXOID(SnmpInReadOnlysName); + data.addElement(SnmpInReadOnlysOID); + SnmpInGenErrsOID = new AgentXOID(SnmpInGenErrsName); + data.addElement(SnmpInGenErrsOID); + SnmpInTotalReqVarsOID = new AgentXOID(SnmpInTotalReqVarsName); + data.addElement(SnmpInTotalReqVarsOID); + SnmpInTotalSetVarsOID = new AgentXOID(SnmpInTotalSetVarsName); + data.addElement(SnmpInTotalSetVarsOID); + SnmpInGetRequestsOID = new AgentXOID(SnmpInGetRequestsName); + data.addElement(SnmpInGetRequestsOID); + SnmpInGetNextsOID = new AgentXOID(SnmpInGetNextsName); + data.addElement(SnmpInGetNextsOID); + SnmpInSetRequestsOID = new AgentXOID(SnmpInSetRequestsName); + data.addElement(SnmpInSetRequestsOID); + SnmpInGetResponsesOID = new AgentXOID(SnmpInGetResponsesName); + data.addElement(SnmpInGetResponsesOID); + SnmpInTrapsOID = new AgentXOID(SnmpInTrapsName); + data.addElement(SnmpInTrapsOID); + SnmpOutTooBigsOID = new AgentXOID(SnmpOutTooBigsName); + data.addElement(SnmpOutTooBigsOID); + SnmpOutNoSuchNamesOID = new AgentXOID(SnmpOutNoSuchNamesName); + data.addElement(SnmpOutNoSuchNamesOID); + SnmpOutBadValuesOID = new AgentXOID(SnmpOutBadValuesName); + data.addElement(SnmpOutBadValuesOID); + SnmpOutGenErrsOID = new AgentXOID(SnmpOutGenErrsName); + data.addElement(SnmpOutGenErrsOID); + SnmpOutGetRequestsOID = new AgentXOID(SnmpOutGetRequestsName); + data.addElement(SnmpOutGetRequestsOID); + SnmpOutGetNextsOID = new AgentXOID(SnmpOutGetNextsName); + data.addElement(SnmpOutGetNextsOID); + SnmpOutSetRequestsOID = new AgentXOID(SnmpOutSetRequestsName); + data.addElement(SnmpOutSetRequestsOID); + SnmpOutGetResponsesOID = new AgentXOID(SnmpOutGetResponsesName); + data.addElement(SnmpOutGetResponsesOID); + SnmpOutTrapsOID = new AgentXOID(SnmpOutTrapsName); + data.addElement(SnmpOutTrapsOID); + SnmpEnableAuthenTrapsOID = new AgentXOID(SnmpEnableAuthenTrapsName); + data.addElement(SnmpEnableAuthenTrapsOID); + SnmpSilentDropsOID = new AgentXOID(SnmpSilentDropsName); + data.addElement(SnmpSilentDropsOID); + SnmpProxyDropsOID = new AgentXOID(SnmpProxyDropsName); + data.addElement(SnmpProxyDropsOID); + } + + public long get_snmpInPkts() + { + return snmpInPkts; + } + + public long get_snmpOutPkts() + { + return snmpOutPkts; + } + + public long get_snmpInBadVersions() + { + return snmpInBadVersions; + } + + public long get_snmpInBadCommunityNames() + { + return snmpInBadCommunityNames; + } + + public long get_snmpInBadCommunityUses() + { + return snmpInBadCommunityUses; + } + + public long get_snmpInASNParseErrs() + { + return snmpInASNParseErrs; + } + + public long get_snmpInTooBigs() + { + return snmpInTooBigs; + } + + public long get_snmpInNoSuchNames() + { + return snmpInNoSuchNames; + } + + public long get_snmpInBadValues() + { + return snmpInBadValues; + } + + public long get_snmpInReadOnlys() + { + return snmpInReadOnlys; + } + + public long get_snmpInGenErrs() + { + return snmpInGenErrs; + } + + public long get_snmpInTotalReqVars() + { + return snmpInTotalReqVars; + } + + public long get_snmpInTotalSetVars() + { + return snmpInTotalSetVars; + } + + public long get_snmpInGetRequests() + { + return snmpInGetRequests; + } + + public long get_snmpInGetNexts() + { + return snmpInGetNexts; + } + + public long get_snmpInSetRequests() + { + return snmpInSetRequests; + } + + public long get_snmpInGetResponses() + { + return snmpInGetResponses; + } + + public long get_snmpInTraps() + { + return snmpInTraps; + } + + public long get_snmpOutTooBigs() + { + return snmpOutTooBigs; + } + + public long get_snmpOutNoSuchNames() + { + return snmpOutNoSuchNames; + } + + public long get_snmpOutBadValues() + { + return snmpOutBadValues; + } + + public long get_snmpOutGenErrs() + { + return snmpOutGenErrs; + } + + public long get_snmpOutGetRequests() + { + return snmpOutGetRequests; + } + + public long get_snmpOutGetNexts() + { + return snmpOutGetNexts; + } + + public long get_snmpOutSetRequests() + { + return snmpOutSetRequests; + } + + public long get_snmpOutGetResponses() + { + return snmpOutGetResponses; + } + + public long get_snmpOutTraps() + { + return snmpOutTraps; + } + + public int get_snmpEnableAuthenTraps() + { + return snmpEnableAuthenTraps; + } + + public int set_snmpEnableAuthenTraps(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpEnableAuthenTraps = snmpEnableAuthenTraps; + snmpEnableAuthenTraps = value; + break; + case AgentXSetPhase.UNDO: + snmpEnableAuthenTraps = undo_snmpEnableAuthenTraps; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_snmpSilentDrops() + { + return snmpSilentDrops; + } + + public long get_snmpProxyDrops() + { + return snmpProxyDrops; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpInPktsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInPkts()); + if (pos == SnmpOutPktsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutPkts()); + if (pos == SnmpInBadVersionsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadVersions()); + if (pos == SnmpInBadCommunityNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityNames()); + if (pos == SnmpInBadCommunityUsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityUses()); + if (pos == SnmpInASNParseErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInASNParseErrs()); + if (pos == SnmpInTooBigsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTooBigs()); + if (pos == SnmpInNoSuchNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInNoSuchNames()); + if (pos == SnmpInBadValuesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadValues()); + if (pos == SnmpInReadOnlysOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInReadOnlys()); + if (pos == SnmpInGenErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGenErrs()); + if (pos == SnmpInTotalReqVarsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTotalReqVars()); + if (pos == SnmpInTotalSetVarsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTotalSetVars()); + if (pos == SnmpInGetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetRequests()); + if (pos == SnmpInGetNextsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetNexts()); + if (pos == SnmpInSetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInSetRequests()); + if (pos == SnmpInGetResponsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetResponses()); + if (pos == SnmpInTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTraps()); + if (pos == SnmpOutTooBigsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutTooBigs()); + if (pos == SnmpOutNoSuchNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutNoSuchNames()); + if (pos == SnmpOutBadValuesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutBadValues()); + if (pos == SnmpOutGenErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGenErrs()); + if (pos == SnmpOutGetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetRequests()); + if (pos == SnmpOutGetNextsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetNexts()); + if (pos == SnmpOutSetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutSetRequests()); + if (pos == SnmpOutGetResponsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetResponses()); + if (pos == SnmpOutTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutTraps()); + if (pos == SnmpEnableAuthenTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_snmpEnableAuthenTraps()); + if (pos == SnmpSilentDropsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpSilentDrops()); + if (pos == SnmpProxyDropsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpProxyDrops()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SnmpEnableAuthenTrapsOID) + return set_snmpEnableAuthenTraps(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpInPktsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInPkts()); + if (pos == SnmpOutPktsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutPkts()); + if (pos == SnmpInBadVersionsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadVersions()); + if (pos == SnmpInBadCommunityNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityNames()); + if (pos == SnmpInBadCommunityUsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityUses()); + if (pos == SnmpInASNParseErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInASNParseErrs()); + if (pos == SnmpInTooBigsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTooBigs()); + if (pos == SnmpInNoSuchNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInNoSuchNames()); + if (pos == SnmpInBadValuesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadValues()); + if (pos == SnmpInReadOnlysOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInReadOnlys()); + if (pos == SnmpInGenErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGenErrs()); + if (pos == SnmpInTotalReqVarsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTotalReqVars()); + if (pos == SnmpInTotalSetVarsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTotalSetVars()); + if (pos == SnmpInGetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetRequests()); + if (pos == SnmpInGetNextsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetNexts()); + if (pos == SnmpInSetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInSetRequests()); + if (pos == SnmpInGetResponsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetResponses()); + if (pos == SnmpInTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTraps()); + if (pos == SnmpOutTooBigsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutTooBigs()); + if (pos == SnmpOutNoSuchNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutNoSuchNames()); + if (pos == SnmpOutBadValuesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutBadValues()); + if (pos == SnmpOutGenErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGenErrs()); + if (pos == SnmpOutGetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetRequests()); + if (pos == SnmpOutGetNextsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetNexts()); + if (pos == SnmpOutSetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutSetRequests()); + if (pos == SnmpOutGetResponsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetResponses()); + if (pos == SnmpOutTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutTraps()); + if (pos == SnmpEnableAuthenTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_snmpEnableAuthenTraps()); + if (pos == SnmpSilentDropsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpSilentDrops()); + if (pos == SnmpProxyDropsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpProxyDrops()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpImpl.java b/test/dumps/jax/SnmpImpl.java new file mode 100644 index 0000000..66c753a --- /dev/null +++ b/test/dumps/jax/SnmpImpl.java @@ -0,0 +1,195 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmp defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpImpl extends Snmp +{ + + public long get_snmpInPkts() + { + return snmpInPkts; + } + + public long get_snmpOutPkts() + { + return snmpOutPkts; + } + + public long get_snmpInBadVersions() + { + return snmpInBadVersions; + } + + public long get_snmpInBadCommunityNames() + { + return snmpInBadCommunityNames; + } + + public long get_snmpInBadCommunityUses() + { + return snmpInBadCommunityUses; + } + + public long get_snmpInASNParseErrs() + { + return snmpInASNParseErrs; + } + + public long get_snmpInTooBigs() + { + return snmpInTooBigs; + } + + public long get_snmpInNoSuchNames() + { + return snmpInNoSuchNames; + } + + public long get_snmpInBadValues() + { + return snmpInBadValues; + } + + public long get_snmpInReadOnlys() + { + return snmpInReadOnlys; + } + + public long get_snmpInGenErrs() + { + return snmpInGenErrs; + } + + public long get_snmpInTotalReqVars() + { + return snmpInTotalReqVars; + } + + public long get_snmpInTotalSetVars() + { + return snmpInTotalSetVars; + } + + public long get_snmpInGetRequests() + { + return snmpInGetRequests; + } + + public long get_snmpInGetNexts() + { + return snmpInGetNexts; + } + + public long get_snmpInSetRequests() + { + return snmpInSetRequests; + } + + public long get_snmpInGetResponses() + { + return snmpInGetResponses; + } + + public long get_snmpInTraps() + { + return snmpInTraps; + } + + public long get_snmpOutTooBigs() + { + return snmpOutTooBigs; + } + + public long get_snmpOutNoSuchNames() + { + return snmpOutNoSuchNames; + } + + public long get_snmpOutBadValues() + { + return snmpOutBadValues; + } + + public long get_snmpOutGenErrs() + { + return snmpOutGenErrs; + } + + public long get_snmpOutGetRequests() + { + return snmpOutGetRequests; + } + + public long get_snmpOutGetNexts() + { + return snmpOutGetNexts; + } + + public long get_snmpOutSetRequests() + { + return snmpOutSetRequests; + } + + public long get_snmpOutGetResponses() + { + return snmpOutGetResponses; + } + + public long get_snmpOutTraps() + { + return snmpOutTraps; + } + + public int get_snmpEnableAuthenTraps() + { + return snmpEnableAuthenTraps; + } + + public int set_snmpEnableAuthenTraps(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpEnableAuthenTraps = snmpEnableAuthenTraps; + snmpEnableAuthenTraps = value; + break; + case AgentXSetPhase.UNDO: + snmpEnableAuthenTraps = undo_snmpEnableAuthenTraps; + break; + case AgentXSetPhase.CLEANUP: + undo_snmpEnableAuthenTraps = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public long get_snmpSilentDrops() + { + return snmpSilentDrops; + } + + public long get_snmpProxyDrops() + { + return snmpProxyDrops; + } + +} + diff --git a/test/dumps/jax/SnmpSet.java b/test/dumps/jax/SnmpSet.java new file mode 100644 index 0000000..4858a4b --- /dev/null +++ b/test/dumps/jax/SnmpSet.java @@ -0,0 +1,103 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpSet.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmpSet defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class SnmpSet extends AgentXScalars +{ + + private final static long[] SnmpSetOID = {1, 3, 6, 1, 6, 3, 1, 1, 6}; + + protected AgentXOID SnmpSetSerialNoOID; + protected final static long[] SnmpSetSerialNoName = {1, 3, 6, 1, 6, 3, 1, 1, 6, 1, 0}; + protected int snmpSetSerialNo = 0; + protected int undo_snmpSetSerialNo = 0; + public SnmpSet() + { + oid = new AgentXOID(SnmpSetOID); + data = new Vector(); + SnmpSetSerialNoOID = new AgentXOID(SnmpSetSerialNoName); + data.addElement(SnmpSetSerialNoOID); + } + + public int get_snmpSetSerialNo() + { + return snmpSetSerialNo; + } + + public int set_snmpSetSerialNo(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpSetSerialNo = snmpSetSerialNo; + snmpSetSerialNo = value; + break; + case AgentXSetPhase.UNDO: + snmpSetSerialNo = undo_snmpSetSerialNo; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpSetSerialNoOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_snmpSetSerialNo()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SnmpSetSerialNoOID) + return set_snmpSetSerialNo(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpSetSerialNoOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_snmpSetSerialNo()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpSetImpl.java b/test/dumps/jax/SnmpSetImpl.java new file mode 100644 index 0000000..5152a14 --- /dev/null +++ b/test/dumps/jax/SnmpSetImpl.java @@ -0,0 +1,50 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpSetImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmpSet defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpSetImpl extends SnmpSet +{ + + public int get_snmpSetSerialNo() + { + return snmpSetSerialNo; + } + + public int set_snmpSetSerialNo(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpSetSerialNo = snmpSetSerialNo; + snmpSetSerialNo = value; + break; + case AgentXSetPhase.UNDO: + snmpSetSerialNo = undo_snmpSetSerialNo; + break; + case AgentXSetPhase.CLEANUP: + undo_snmpSetSerialNo = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + +} + diff --git a/test/dumps/jax/SnmpTrap.java b/test/dumps/jax/SnmpTrap.java new file mode 100644 index 0000000..7f376e1 --- /dev/null +++ b/test/dumps/jax/SnmpTrap.java @@ -0,0 +1,97 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmpTrap defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class SnmpTrap extends AgentXScalars +{ + + private final static long[] SnmpTrapOID = {1, 3, 6, 1, 6, 3, 1, 1, 4}; + + protected AgentXOID SnmpTrapOIDOID; + protected final static long[] SnmpTrapOIDName = {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0}; + protected AgentXOID snmpTrapOID = new AgentXOID(); + protected AgentXOID SnmpTrapEnterpriseOID; + protected final static long[] SnmpTrapEnterpriseName = {1, 3, 6, 1, 6, 3, 1, 1, 4, 3, 0}; + protected AgentXOID snmpTrapEnterprise = new AgentXOID(); + public SnmpTrap() + { + oid = new AgentXOID(SnmpTrapOID); + data = new Vector(); + SnmpTrapOIDOID = new AgentXOID(SnmpTrapOIDName); + data.addElement(SnmpTrapOIDOID); + SnmpTrapEnterpriseOID = new AgentXOID(SnmpTrapEnterpriseName); + data.addElement(SnmpTrapEnterpriseOID); + } + + public AgentXOID get_snmpTrapOID() + { + return snmpTrapOID; + } + + public AgentXOID get_snmpTrapEnterprise() + { + return snmpTrapEnterprise; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpTrapOIDOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapOID()); + if (pos == SnmpTrapEnterpriseOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapEnterprise()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpTrapOIDOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapOID()); + if (pos == SnmpTrapEnterpriseOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapEnterprise()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpTrapImpl.java b/test/dumps/jax/SnmpTrapImpl.java new file mode 100644 index 0000000..008fcc4 --- /dev/null +++ b/test/dumps/jax/SnmpTrapImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpTrapImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmpTrap defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpTrapImpl extends SnmpTrap +{ + + public AgentXOID get_snmpTrapOID() + { + return snmpTrapOID; + } + + public AgentXOID get_snmpTrapEnterprise() + { + return snmpTrapEnterprise; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2Entry.java b/test/dumps/jax/SourceRoutingStats2Entry.java new file mode 100644 index 0000000..8941cf0 --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row sourceRoutingStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SourceRoutingStats2Entry extends AgentXEntry +{ + + protected long sourceRoutingStatsDroppedFrames = 0; + protected long sourceRoutingStatsCreateTime = 0; + + public SourceRoutingStats2Entry() + { + + } + + public long get_sourceRoutingStatsDroppedFrames() + { + return sourceRoutingStatsDroppedFrames; + } + + public long get_sourceRoutingStatsCreateTime() + { + return sourceRoutingStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2EntryImpl.java b/test/dumps/jax/SourceRoutingStats2EntryImpl.java new file mode 100644 index 0000000..a620cec --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row sourceRoutingStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SourceRoutingStats2EntryImpl extends SourceRoutingStats2Entry +{ + + // constructor + public SourceRoutingStats2EntryImpl() + { + super(); + } + + public long get_sourceRoutingStatsDroppedFrames() + { + return sourceRoutingStatsDroppedFrames; + } + + public long get_sourceRoutingStatsCreateTime() + { + return sourceRoutingStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2Table.java b/test/dumps/jax/SourceRoutingStats2Table.java new file mode 100644 index 0000000..572b913 --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table sourceRoutingStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SourceRoutingStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1}; + + // constructors + public SourceRoutingStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public SourceRoutingStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // sourceRoutingStatsDroppedFrames + { + long value = ((SourceRoutingStats2Entry)entry).get_sourceRoutingStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // sourceRoutingStatsCreateTime + { + long value = ((SourceRoutingStats2Entry)entry).get_sourceRoutingStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SysOREntry.java b/test/dumps/jax/SysOREntry.java new file mode 100644 index 0000000..133b30c --- /dev/null +++ b/test/dumps/jax/SysOREntry.java @@ -0,0 +1,58 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SysOREntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row sysOREntry defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SysOREntry extends AgentXEntry +{ + + protected int sysORIndex = 0; + protected AgentXOID sysORID = new AgentXOID(); + protected byte[] sysORDescr = new byte[0]; + protected long sysORUpTime = 0; + + public SysOREntry(int sysORIndex) + { + this.sysORIndex = sysORIndex; + + instance.append(sysORIndex); + } + + public int get_sysORIndex() + { + return sysORIndex; + } + + public AgentXOID get_sysORID() + { + return sysORID; + } + + public byte[] get_sysORDescr() + { + return sysORDescr; + } + + public long get_sysORUpTime() + { + return sysORUpTime; + } + +} + diff --git a/test/dumps/jax/SysOREntryImpl.java b/test/dumps/jax/SysOREntryImpl.java new file mode 100644 index 0000000..fbd9dd8 --- /dev/null +++ b/test/dumps/jax/SysOREntryImpl.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SysOREntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row sysOREntry defined in SNMPv2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SysOREntryImpl extends SysOREntry +{ + + // constructor + public SysOREntryImpl(int sysORIndex) + { + super(sysORIndex); + } + + public AgentXOID get_sysORID() + { + return sysORID; + } + + public byte[] get_sysORDescr() + { + return sysORDescr; + } + + public long get_sysORUpTime() + { + return sysORUpTime; + } + +} + diff --git a/test/dumps/jax/SysORTable.java b/test/dumps/jax/SysORTable.java new file mode 100644 index 0000000..0cc789c --- /dev/null +++ b/test/dumps/jax/SysORTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SysORTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table sysORTable defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SysORTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 1, 9, 1}; + + // constructors + public SysORTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public SysORTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // sysORID + { + AgentXOID value = ((SysOREntry)entry).get_sysORID(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // sysORDescr + { + byte[] value = ((SysOREntry)entry).get_sysORDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // sysORUpTime + { + long value = ((SysOREntry)entry).get_sysORUpTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/System.java b/test/dumps/jax/System.java new file mode 100644 index 0000000..48a1ee3 --- /dev/null +++ b/test/dumps/jax/System.java @@ -0,0 +1,268 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: System.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group system defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class System extends AgentXScalars +{ + + private final static long[] SystemOID = {1, 3, 6, 1, 2, 1, 1}; + + protected AgentXOID SysDescrOID; + protected final static long[] SysDescrName = {1, 3, 6, 1, 2, 1, 1, 1, 0}; + protected byte[] sysDescr = new byte[0]; + protected AgentXOID SysObjectIDOID; + protected final static long[] SysObjectIDName = {1, 3, 6, 1, 2, 1, 1, 2, 0}; + protected AgentXOID sysObjectID = new AgentXOID(); + protected AgentXOID SysUpTimeOID; + protected final static long[] SysUpTimeName = {1, 3, 6, 1, 2, 1, 1, 3, 0}; + protected long sysUpTime = 0; + protected AgentXOID SysContactOID; + protected final static long[] SysContactName = {1, 3, 6, 1, 2, 1, 1, 4, 0}; + protected byte[] sysContact = new byte[0]; + protected byte[] undo_sysContact = new byte[0]; + protected AgentXOID SysNameOID; + protected final static long[] SysNameName = {1, 3, 6, 1, 2, 1, 1, 5, 0}; + protected byte[] sysName = new byte[0]; + protected byte[] undo_sysName = new byte[0]; + protected AgentXOID SysLocationOID; + protected final static long[] SysLocationName = {1, 3, 6, 1, 2, 1, 1, 6, 0}; + protected byte[] sysLocation = new byte[0]; + protected byte[] undo_sysLocation = new byte[0]; + protected AgentXOID SysServicesOID; + protected final static long[] SysServicesName = {1, 3, 6, 1, 2, 1, 1, 7, 0}; + protected int sysServices = 0; + protected AgentXOID SysORLastChangeOID; + protected final static long[] SysORLastChangeName = {1, 3, 6, 1, 2, 1, 1, 8, 0}; + protected long sysORLastChange = 0; + public System() + { + oid = new AgentXOID(SystemOID); + data = new Vector(); + SysDescrOID = new AgentXOID(SysDescrName); + data.addElement(SysDescrOID); + SysObjectIDOID = new AgentXOID(SysObjectIDName); + data.addElement(SysObjectIDOID); + SysUpTimeOID = new AgentXOID(SysUpTimeName); + data.addElement(SysUpTimeOID); + SysContactOID = new AgentXOID(SysContactName); + data.addElement(SysContactOID); + SysNameOID = new AgentXOID(SysNameName); + data.addElement(SysNameOID); + SysLocationOID = new AgentXOID(SysLocationName); + data.addElement(SysLocationOID); + SysServicesOID = new AgentXOID(SysServicesName); + data.addElement(SysServicesOID); + SysORLastChangeOID = new AgentXOID(SysORLastChangeName); + data.addElement(SysORLastChangeOID); + } + + public byte[] get_sysDescr() + { + return sysDescr; + } + + public AgentXOID get_sysObjectID() + { + return sysObjectID; + } + + public long get_sysUpTime() + { + return sysUpTime; + } + + public byte[] get_sysContact() + { + return sysContact; + } + + public int set_sysContact(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysContact = sysContact; + sysContact = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysContact[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysContact = undo_sysContact; + break; + case AgentXSetPhase.CLEANUP: + undo_sysContact = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_sysName() + { + return sysName; + } + + public int set_sysName(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysName = sysName; + sysName = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysName[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysName = undo_sysName; + break; + case AgentXSetPhase.CLEANUP: + undo_sysName = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_sysLocation() + { + return sysLocation; + } + + public int set_sysLocation(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysLocation = sysLocation; + sysLocation = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysLocation[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysLocation = undo_sysLocation; + break; + case AgentXSetPhase.CLEANUP: + undo_sysLocation = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_sysServices() + { + return sysServices; + } + + public long get_sysORLastChange() + { + return sysORLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SysDescrOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysDescr()); + if (pos == SysObjectIDOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_sysObjectID()); + if (pos == SysUpTimeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_sysUpTime()); + if (pos == SysContactOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysContact()); + if (pos == SysNameOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysName()); + if (pos == SysLocationOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysLocation()); + if (pos == SysServicesOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_sysServices()); + if (pos == SysORLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_sysORLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SysContactOID) + return set_sysContact(phase, inVb.bytesValue()); + if (pos == SysNameOID) + return set_sysName(phase, inVb.bytesValue()); + if (pos == SysLocationOID) + return set_sysLocation(phase, inVb.bytesValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SysDescrOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysDescr()); + if (pos == SysObjectIDOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_sysObjectID()); + if (pos == SysUpTimeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_sysUpTime()); + if (pos == SysContactOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysContact()); + if (pos == SysNameOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysName()); + if (pos == SysLocationOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysLocation()); + if (pos == SysServicesOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_sysServices()); + if (pos == SysORLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_sysORLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SystemImpl.java b/test/dumps/jax/SystemImpl.java new file mode 100644 index 0000000..bf7881e --- /dev/null +++ b/test/dumps/jax/SystemImpl.java @@ -0,0 +1,133 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SystemImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group system defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SystemImpl extends System +{ + + public byte[] get_sysDescr() + { + return sysDescr; + } + + public AgentXOID get_sysObjectID() + { + return sysObjectID; + } + + public long get_sysUpTime() + { + return sysUpTime; + } + + public byte[] get_sysContact() + { + return sysContact; + } + + public int set_sysContact(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysContact = sysContact; + sysContact = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysContact[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysContact = undo_sysContact; + break; + case AgentXSetPhase.CLEANUP: + undo_sysContact = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_sysName() + { + return sysName; + } + + public int set_sysName(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysName = sysName; + sysName = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysName[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysName = undo_sysName; + break; + case AgentXSetPhase.CLEANUP: + undo_sysName = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_sysLocation() + { + return sysLocation; + } + + public int set_sysLocation(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysLocation = sysLocation; + sysLocation = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysLocation[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysLocation = undo_sysLocation; + break; + case AgentXSetPhase.CLEANUP: + undo_sysLocation = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_sysServices() + { + return sysServices; + } + + public long get_sysORLastChange() + { + return sysORLastChange; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2Entry.java b/test/dumps/jax/TokenRingMLStats2Entry.java new file mode 100644 index 0000000..3b6761b --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row tokenRingMLStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingMLStats2Entry extends AgentXEntry +{ + + protected long tokenRingMLStatsDroppedFrames = 0; + protected long tokenRingMLStatsCreateTime = 0; + + public TokenRingMLStats2Entry() + { + + } + + public long get_tokenRingMLStatsDroppedFrames() + { + return tokenRingMLStatsDroppedFrames; + } + + public long get_tokenRingMLStatsCreateTime() + { + return tokenRingMLStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2EntryImpl.java b/test/dumps/jax/TokenRingMLStats2EntryImpl.java new file mode 100644 index 0000000..a22d136 --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row tokenRingMLStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingMLStats2EntryImpl extends TokenRingMLStats2Entry +{ + + // constructor + public TokenRingMLStats2EntryImpl() + { + super(); + } + + public long get_tokenRingMLStatsDroppedFrames() + { + return tokenRingMLStatsDroppedFrames; + } + + public long get_tokenRingMLStatsCreateTime() + { + return tokenRingMLStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2Table.java b/test/dumps/jax/TokenRingMLStats2Table.java new file mode 100644 index 0000000..b1a5154 --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table tokenRingMLStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TokenRingMLStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1}; + + // constructors + public TokenRingMLStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public TokenRingMLStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // tokenRingMLStatsDroppedFrames + { + long value = ((TokenRingMLStats2Entry)entry).get_tokenRingMLStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // tokenRingMLStatsCreateTime + { + long value = ((TokenRingMLStats2Entry)entry).get_tokenRingMLStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2Entry.java b/test/dumps/jax/TokenRingPStats2Entry.java new file mode 100644 index 0000000..0d28b75 --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row tokenRingPStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingPStats2Entry extends AgentXEntry +{ + + protected long tokenRingPStatsDroppedFrames = 0; + protected long tokenRingPStatsCreateTime = 0; + + public TokenRingPStats2Entry() + { + + } + + public long get_tokenRingPStatsDroppedFrames() + { + return tokenRingPStatsDroppedFrames; + } + + public long get_tokenRingPStatsCreateTime() + { + return tokenRingPStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2EntryImpl.java b/test/dumps/jax/TokenRingPStats2EntryImpl.java new file mode 100644 index 0000000..a0f78fc --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row tokenRingPStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingPStats2EntryImpl extends TokenRingPStats2Entry +{ + + // constructor + public TokenRingPStats2EntryImpl() + { + super(); + } + + public long get_tokenRingPStatsDroppedFrames() + { + return tokenRingPStatsDroppedFrames; + } + + public long get_tokenRingPStatsCreateTime() + { + return tokenRingPStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2Table.java b/test/dumps/jax/TokenRingPStats2Table.java new file mode 100644 index 0000000..f86aafd --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table tokenRingPStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TokenRingPStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1}; + + // constructors + public TokenRingPStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public TokenRingPStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // tokenRingPStatsDroppedFrames + { + long value = ((TokenRingPStats2Entry)entry).get_tokenRingPStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // tokenRingPStatsCreateTime + { + long value = ((TokenRingPStats2Entry)entry).get_tokenRingPStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/TrapDestEntry.java b/test/dumps/jax/TrapDestEntry.java new file mode 100644 index 0000000..29e28a9 --- /dev/null +++ b/test/dumps/jax/TrapDestEntry.java @@ -0,0 +1,179 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row trapDestEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TrapDestEntry extends AgentXEntry +{ + + protected int trapDestIndex = 0; + protected byte[] trapDestCommunity = new byte[0]; + protected byte[] undo_trapDestCommunity = new byte[0]; + protected int trapDestProtocol = 0; + protected int undo_trapDestProtocol = 0; + protected byte[] trapDestAddress = new byte[0]; + protected byte[] undo_trapDestAddress = new byte[0]; + protected byte[] trapDestOwner = new byte[0]; + protected byte[] undo_trapDestOwner = new byte[0]; + protected int trapDestStatus = 0; + protected int undo_trapDestStatus = 0; + + public TrapDestEntry(int trapDestIndex) + { + this.trapDestIndex = trapDestIndex; + + instance.append(trapDestIndex); + } + + public int get_trapDestIndex() + { + return trapDestIndex; + } + + public byte[] get_trapDestCommunity() + { + return trapDestCommunity; + } + + public int set_trapDestCommunity(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestCommunity = trapDestCommunity; + trapDestCommunity = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestCommunity[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestCommunity = undo_trapDestCommunity; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestCommunity = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestProtocol() + { + return trapDestProtocol; + } + + public int set_trapDestProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestProtocol = trapDestProtocol; + trapDestProtocol = value; + break; + case AgentXSetPhase.UNDO: + trapDestProtocol = undo_trapDestProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestAddress() + { + return trapDestAddress; + } + + public int set_trapDestAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestAddress = trapDestAddress; + trapDestAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestAddress = undo_trapDestAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestOwner() + { + return trapDestOwner; + } + + public int set_trapDestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestOwner = trapDestOwner; + trapDestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestOwner = undo_trapDestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestStatus() + { + return trapDestStatus; + } + + public int set_trapDestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestStatus = trapDestStatus; + trapDestStatus = value; + break; + case AgentXSetPhase.UNDO: + trapDestStatus = undo_trapDestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/TrapDestEntryImpl.java b/test/dumps/jax/TrapDestEntryImpl.java new file mode 100644 index 0000000..d9de871 --- /dev/null +++ b/test/dumps/jax/TrapDestEntryImpl.java @@ -0,0 +1,158 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row trapDestEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TrapDestEntryImpl extends TrapDestEntry +{ + + // constructor + public TrapDestEntryImpl(int trapDestIndex) + { + super(trapDestIndex); + } + + public byte[] get_trapDestCommunity() + { + return trapDestCommunity; + } + + public int set_trapDestCommunity(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestCommunity = trapDestCommunity; + trapDestCommunity = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestCommunity[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestCommunity = undo_trapDestCommunity; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestCommunity = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestProtocol() + { + return trapDestProtocol; + } + + public int set_trapDestProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestProtocol = trapDestProtocol; + trapDestProtocol = value; + break; + case AgentXSetPhase.UNDO: + trapDestProtocol = undo_trapDestProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestAddress() + { + return trapDestAddress; + } + + public int set_trapDestAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestAddress = trapDestAddress; + trapDestAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestAddress = undo_trapDestAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestOwner() + { + return trapDestOwner; + } + + public int set_trapDestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestOwner = trapDestOwner; + trapDestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestOwner = undo_trapDestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestStatus() + { + return trapDestStatus; + } + + public int set_trapDestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestStatus = trapDestStatus; + trapDestStatus = value; + break; + case AgentXSetPhase.UNDO: + trapDestStatus = undo_trapDestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/TrapDestTable.java b/test/dumps/jax/TrapDestTable.java new file mode 100644 index 0000000..ef27f51 --- /dev/null +++ b/test/dumps/jax/TrapDestTable.java @@ -0,0 +1,142 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table trapDestTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TrapDestTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1}; + + // constructors + public TrapDestTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public TrapDestTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // trapDestCommunity + { + byte[] value = ((TrapDestEntry)entry).get_trapDestCommunity(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 3: // trapDestProtocol + { + int value = ((TrapDestEntry)entry).get_trapDestProtocol(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // trapDestAddress + { + byte[] value = ((TrapDestEntry)entry).get_trapDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // trapDestOwner + { + byte[] value = ((TrapDestEntry)entry).get_trapDestOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // trapDestStatus + { + int value = ((TrapDestEntry)entry).get_trapDestStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // trapDestCommunity + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestCommunity(phase, vb.bytesValue()); + } + case 3: // trapDestProtocol + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestProtocol(phase, vb.intValue()); + } + case 4: // trapDestAddress + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestAddress(phase, vb.bytesValue()); + } + case 5: // trapDestOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestOwner(phase, vb.bytesValue()); + } + case 6: // trapDestStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryControlEntry.java b/test/dumps/jax/UsrHistoryControlEntry.java new file mode 100644 index 0000000..8e0bd0b --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlEntry.java @@ -0,0 +1,179 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryControlEntry extends AgentXEntry +{ + + protected int usrHistoryControlIndex = 0; + protected int usrHistoryControlObjects = 0; + protected int undo_usrHistoryControlObjects = 0; + protected int usrHistoryControlBucketsRequested = 0; + protected int undo_usrHistoryControlBucketsRequested = 0; + protected int usrHistoryControlBucketsGranted = 0; + protected int usrHistoryControlInterval = 0; + protected int undo_usrHistoryControlInterval = 0; + protected byte[] usrHistoryControlOwner = new byte[0]; + protected byte[] undo_usrHistoryControlOwner = new byte[0]; + protected int usrHistoryControlStatus = 0; + protected int undo_usrHistoryControlStatus = 0; + + public UsrHistoryControlEntry(int usrHistoryControlIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + + instance.append(usrHistoryControlIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistoryControlObjects() + { + return usrHistoryControlObjects; + } + + public int set_usrHistoryControlObjects(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlObjects = usrHistoryControlObjects; + usrHistoryControlObjects = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlObjects = undo_usrHistoryControlObjects; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsRequested() + { + return usrHistoryControlBucketsRequested; + } + + public int set_usrHistoryControlBucketsRequested(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlBucketsRequested = usrHistoryControlBucketsRequested; + usrHistoryControlBucketsRequested = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlBucketsRequested = undo_usrHistoryControlBucketsRequested; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsGranted() + { + return usrHistoryControlBucketsGranted; + } + + public int get_usrHistoryControlInterval() + { + return usrHistoryControlInterval; + } + + public int set_usrHistoryControlInterval(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlInterval = usrHistoryControlInterval; + usrHistoryControlInterval = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlInterval = undo_usrHistoryControlInterval; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_usrHistoryControlOwner() + { + return usrHistoryControlOwner; + } + + public int set_usrHistoryControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlOwner = usrHistoryControlOwner; + usrHistoryControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + usrHistoryControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlOwner = undo_usrHistoryControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_usrHistoryControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlStatus() + { + return usrHistoryControlStatus; + } + + public int set_usrHistoryControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlStatus = usrHistoryControlStatus; + usrHistoryControlStatus = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlStatus = undo_usrHistoryControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryControlEntryImpl.java b/test/dumps/jax/UsrHistoryControlEntryImpl.java new file mode 100644 index 0000000..81c922b --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlEntryImpl.java @@ -0,0 +1,157 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryControlEntryImpl extends UsrHistoryControlEntry +{ + + // constructor + public UsrHistoryControlEntryImpl(int usrHistoryControlIndex) + { + super(usrHistoryControlIndex); + } + + public int get_usrHistoryControlObjects() + { + return usrHistoryControlObjects; + } + + public int set_usrHistoryControlObjects(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlObjects = usrHistoryControlObjects; + usrHistoryControlObjects = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlObjects = undo_usrHistoryControlObjects; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsRequested() + { + return usrHistoryControlBucketsRequested; + } + + public int set_usrHistoryControlBucketsRequested(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlBucketsRequested = usrHistoryControlBucketsRequested; + usrHistoryControlBucketsRequested = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlBucketsRequested = undo_usrHistoryControlBucketsRequested; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsGranted() + { + return usrHistoryControlBucketsGranted; + } + + public int get_usrHistoryControlInterval() + { + return usrHistoryControlInterval; + } + + public int set_usrHistoryControlInterval(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlInterval = usrHistoryControlInterval; + usrHistoryControlInterval = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlInterval = undo_usrHistoryControlInterval; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_usrHistoryControlOwner() + { + return usrHistoryControlOwner; + } + + public int set_usrHistoryControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlOwner = usrHistoryControlOwner; + usrHistoryControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + usrHistoryControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlOwner = undo_usrHistoryControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_usrHistoryControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlStatus() + { + return usrHistoryControlStatus; + } + + public int set_usrHistoryControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlStatus = usrHistoryControlStatus; + usrHistoryControlStatus = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlStatus = undo_usrHistoryControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryControlTable.java b/test/dumps/jax/UsrHistoryControlTable.java new file mode 100644 index 0000000..2818a42 --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlTable.java @@ -0,0 +1,149 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1}; + + // constructors + public UsrHistoryControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + } + + public UsrHistoryControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryControlObjects + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlObjects(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // usrHistoryControlBucketsRequested + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlBucketsRequested(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // usrHistoryControlBucketsGranted + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlBucketsGranted(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // usrHistoryControlInterval + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlInterval(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // usrHistoryControlOwner + { + byte[] value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // usrHistoryControlStatus + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // usrHistoryControlObjects + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlObjects(phase, vb.intValue()); + } + case 3: // usrHistoryControlBucketsRequested + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlBucketsRequested(phase, vb.intValue()); + } + case 5: // usrHistoryControlInterval + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlInterval(phase, vb.intValue()); + } + case 6: // usrHistoryControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlOwner(phase, vb.bytesValue()); + } + case 7: // usrHistoryControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryEntry.java b/test/dumps/jax/UsrHistoryEntry.java new file mode 100644 index 0000000..de6bb7c --- /dev/null +++ b/test/dumps/jax/UsrHistoryEntry.java @@ -0,0 +1,83 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryEntry extends AgentXEntry +{ + + protected int usrHistorySampleIndex = 0; + protected long usrHistoryIntervalStart = 0; + protected long usrHistoryIntervalEnd = 0; + protected long usrHistoryAbsValue = 0; + protected int usrHistoryValStatus = 0; + // foreign indices + protected int usrHistoryControlIndex; + protected int usrHistoryObjectIndex; + + public UsrHistoryEntry(int usrHistoryControlIndex, + int usrHistorySampleIndex, + int usrHistoryObjectIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + this.usrHistorySampleIndex = usrHistorySampleIndex; + this.usrHistoryObjectIndex = usrHistoryObjectIndex; + + instance.append(usrHistoryControlIndex); + instance.append(usrHistorySampleIndex); + instance.append(usrHistoryObjectIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistorySampleIndex() + { + return usrHistorySampleIndex; + } + + public int get_usrHistoryObjectIndex() + { + return usrHistoryObjectIndex; + } + + public long get_usrHistoryIntervalStart() + { + return usrHistoryIntervalStart; + } + + public long get_usrHistoryIntervalEnd() + { + return usrHistoryIntervalEnd; + } + + public long get_usrHistoryAbsValue() + { + return usrHistoryAbsValue; + } + + public int get_usrHistoryValStatus() + { + return usrHistoryValStatus; + } + +} + diff --git a/test/dumps/jax/UsrHistoryEntryImpl.java b/test/dumps/jax/UsrHistoryEntryImpl.java new file mode 100644 index 0000000..23169bc --- /dev/null +++ b/test/dumps/jax/UsrHistoryEntryImpl.java @@ -0,0 +1,53 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryEntryImpl extends UsrHistoryEntry +{ + + // constructor + public UsrHistoryEntryImpl(int usrHistoryControlIndex, + int usrHistorySampleIndex, + int usrHistoryObjectIndex) + { + super(usrHistoryControlIndex, + usrHistorySampleIndex, + usrHistoryObjectIndex); + } + + public long get_usrHistoryIntervalStart() + { + return usrHistoryIntervalStart; + } + + public long get_usrHistoryIntervalEnd() + { + return usrHistoryIntervalEnd; + } + + public long get_usrHistoryAbsValue() + { + return usrHistoryAbsValue; + } + + public int get_usrHistoryValStatus() + { + return usrHistoryValStatus; + } + +} + diff --git a/test/dumps/jax/UsrHistoryObjectEntry.java b/test/dumps/jax/UsrHistoryObjectEntry.java new file mode 100644 index 0000000..0ebba2b --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectEntry.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryObjectEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryObjectEntry extends AgentXEntry +{ + + protected int usrHistoryObjectIndex = 0; + protected AgentXOID usrHistoryObjectVariable = new AgentXOID(); + protected AgentXOID undo_usrHistoryObjectVariable = new AgentXOID(); + protected int usrHistoryObjectSampleType = 0; + protected int undo_usrHistoryObjectSampleType = 0; + // foreign indices + protected int usrHistoryControlIndex; + + public UsrHistoryObjectEntry(int usrHistoryControlIndex, + int usrHistoryObjectIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + this.usrHistoryObjectIndex = usrHistoryObjectIndex; + + instance.append(usrHistoryControlIndex); + instance.append(usrHistoryObjectIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistoryObjectIndex() + { + return usrHistoryObjectIndex; + } + + public AgentXOID get_usrHistoryObjectVariable() + { + return usrHistoryObjectVariable; + } + + public int set_usrHistoryObjectVariable(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectVariable = usrHistoryObjectVariable; + usrHistoryObjectVariable = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectVariable = undo_usrHistoryObjectVariable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryObjectSampleType() + { + return usrHistoryObjectSampleType; + } + + public int set_usrHistoryObjectSampleType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectSampleType = usrHistoryObjectSampleType; + usrHistoryObjectSampleType = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectSampleType = undo_usrHistoryObjectSampleType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryObjectEntryImpl.java b/test/dumps/jax/UsrHistoryObjectEntryImpl.java new file mode 100644 index 0000000..5066083 --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectEntryImpl.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryObjectEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryObjectEntryImpl extends UsrHistoryObjectEntry +{ + + // constructor + public UsrHistoryObjectEntryImpl(int usrHistoryControlIndex, + int usrHistoryObjectIndex) + { + super(usrHistoryControlIndex, + usrHistoryObjectIndex); + } + + public AgentXOID get_usrHistoryObjectVariable() + { + return usrHistoryObjectVariable; + } + + public int set_usrHistoryObjectVariable(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectVariable = usrHistoryObjectVariable; + usrHistoryObjectVariable = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectVariable = undo_usrHistoryObjectVariable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryObjectSampleType() + { + return usrHistoryObjectSampleType; + } + + public int set_usrHistoryObjectSampleType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectSampleType = usrHistoryObjectSampleType; + usrHistoryObjectSampleType = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectSampleType = undo_usrHistoryObjectSampleType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryObjectTable.java b/test/dumps/jax/UsrHistoryObjectTable.java new file mode 100644 index 0000000..278843e --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryObjectTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryObjectTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1}; + + // constructors + public UsrHistoryObjectTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public UsrHistoryObjectTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryObjectVariable + { + AgentXOID value = ((UsrHistoryObjectEntry)entry).get_usrHistoryObjectVariable(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // usrHistoryObjectSampleType + { + int value = ((UsrHistoryObjectEntry)entry).get_usrHistoryObjectSampleType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // usrHistoryObjectVariable + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryObjectEntry)entry).set_usrHistoryObjectVariable(phase, vb.AgentXOIDValue()); + } + case 3: // usrHistoryObjectSampleType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryObjectEntry)entry).set_usrHistoryObjectSampleType(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryTable.java b/test/dumps/jax/UsrHistoryTable.java new file mode 100644 index 0000000..7449bf0 --- /dev/null +++ b/test/dumps/jax/UsrHistoryTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1}; + + // constructors + public UsrHistoryTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public UsrHistoryTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryIntervalStart + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryIntervalStart(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 3: // usrHistoryIntervalEnd + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryIntervalEnd(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 4: // usrHistoryAbsValue + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryAbsValue(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // usrHistoryValStatus + { + int value = ((UsrHistoryEntry)entry).get_usrHistoryValStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/WarmStart.java b/test/dumps/jax/WarmStart.java new file mode 100644 index 0000000..e9b348d --- /dev/null +++ b/test/dumps/jax/WarmStart.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: WarmStart.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class WarmStart extends AgentXNotification +{ + + private final static long[] warmStart_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 2}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(warmStart_OID)); + + + + public WarmStart() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/metrics/IF-MIB b/test/dumps/metrics/IF-MIB new file mode 100644 index 0000000..1c3eb74 --- /dev/null +++ b/test/dumps/metrics/IF-MIB @@ -0,0 +1,149 @@ +# IF-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +IF-MIB - - 0 1993-11-08 +IF-MIB - - 1 1996-02-28 +IF-MIB SMIv2 61 2 2000-06-14 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 3 66.7% 33.3% 0.0% +Tables: 5 80.0% 20.0% 0.0% +Columns: 53 81.1% 18.9% 0.0% +Scalars: 3 100.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% +Groups: 14 71.4% 28.6% 0.0% +Compliances: 3 33.3% 66.7% 0.0% +Summary: 83 78.3% 21.7% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 53 20.8% 73.6% 0.0% 5.7% +Scalars: 3 0.0% 100.0% 0.0% 0.0% +Summary: 56 19.6% 75.0% 0.0% 5.4% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 5 60.0% 40.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 5 60.0% 40.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 5 0.0% 0.0% 40.0% 0.0% 0.0% 20.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 20.0% 0.0% 0.0% 20.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 3 100.0% 0.0% 0.0% 100.0% +Tables: 5 100.0% 0.0% 0.0% 0.0% +Columns: 53 100.0% 0.0% 0.0% 0.0% +Scalars: 3 100.0% 0.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% 0.0% +Summary: 71 100.0% 0.0% 0.0% 4.2% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 3 463.0 0.0 0.0 2.0 +Tables: 5 1346.0 0.0 0.0 0.0 +Columns: 53 389.1 0.0 0.0 0.0 +Scalars: 3 239.7 0.0 0.0 0.0 +Notifications: 2 312.0 0.0 0.0 0.0 +Summary: 71 432.0 0.0 0.0 2.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 9.4% 37.7% 0.0% 15.1% 11.3% 5.7% 20.8% 0.0% 0.0% 0.0% 0.0% +Scalars: 33.3% 66.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Summary: 10.7% 39.3% 0.0% 14.3% 10.7% 5.4% 19.6% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 3 3 +Scalars (rw): 0 0 +Columns (ro): 39 78 +Columns (rw): 11 33 +Indexes: 5 27 +Summary: 53 114 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE +SNMPv2-SMI Counter32 23.8% +SNMPv2-SMI Counter64 12.7% + Enumeration 9.5% +IF-MIB InterfaceIndex 7.9% +IF-MIB InterfaceIndexOrZero 6.3% +SNMPv2-SMI Gauge32 4.8% +SNMPv2-SMI TimeTicks 4.8% +SNMPv2-TC DisplayString 4.8% +SNMPv2-TC PhysAddress 4.8% + Integer32 3.2% + ObjectIdentifier 3.2% +SNMPv2-TC RowStatus 3.2% +SNMPv2-TC TruthValue 3.2% +IANAifType-MIB IANAifType 1.6% +IF-MIB OwnerString 1.6% +SNMPv2-TC AutonomousType 1.6% +SNMPv2-TC TestAndIncr 1.6% +SNMPv2-TC TimeStamp 1.6% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 36.6% +SNMPv2-SMI Counter64 19.5% +SNMPv2-SMI Gauge32 7.3% +SNMPv2-SMI TimeTicks 7.3% +SNMPv2-TC PhysAddress 7.3% +SNMPv2-TC RowStatus 4.9% +SNMPv2-TC TruthValue 4.9% +IANAifType-MIB IANAifType 2.4% +SNMPv2-TC AutonomousType 2.4% +SNMPv2-TC DisplayString 2.4% +SNMPv2-TC TestAndIncr 2.4% +SNMPv2-TC TimeStamp 2.4% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 70.7% +SNMPv2-TC 26.8% +IANAifType-MIB 2.4% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +IF-MIB ifRcvAddressEntry 4.0% +IF-MIB ifStackEntry 2.0% +IF-MIB ifEntry 1.0% +IF-MIB ifTestEntry 1.0% +IF-MIB ifXEntry 1.0% + diff --git a/test/dumps/metrics/MAU-MIB b/test/dumps/metrics/MAU-MIB new file mode 100644 index 0000000..6c7cb6f --- /dev/null +++ b/test/dumps/metrics/MAU-MIB @@ -0,0 +1,143 @@ +# MAU-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +MAU-MIB - - 0 1993-09-30 +MAU-MIB - - 1 1997-10-31 +MAU-MIB - - 2 1999-08-24 +MAU-MIB - - 3 2003-09-19 +MAU-MIB SMIv2 48 4 2007-04-21 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 1 0.0% 100.0% 0.0% +Tables: 6 83.3% 16.7% 0.0% +Columns: 45 80.0% 20.0% 0.0% +Scalars: 0 0.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% +Groups: 14 78.6% 21.4% 0.0% +Compliances: 5 40.0% 60.0% 0.0% +Summary: 73 76.7% 23.3% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 45 17.8% 77.8% 0.0% 4.4% +Scalars: 0 0.0% 0.0% 0.0% 0.0% +Summary: 45 17.8% 77.8% 0.0% 4.4% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 6 100.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 6 0.0% 50.0% 33.3% 16.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 6 0.0% 33.3% 0.0% 0.0% 16.7% 0.0% 0.0% 0.0% 0.0% 16.7% 0.0% 16.7% 0.0% 16.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 1 100.0% 0.0% 0.0% 0.0% +Tables: 6 100.0% 0.0% 0.0% 0.0% +Columns: 45 100.0% 84.4% 0.0% 0.0% +Scalars: 0 0.0% 0.0% 0.0% 0.0% +Notifications: 2 100.0% 100.0% 0.0% 0.0% +Summary: 60 100.0% 66.7% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 1 170.0 0.0 0.0 0.0 +Tables: 6 178.8 0.0 0.0 0.0 +Columns: 45 434.9 55.7 0.0 0.0 +Scalars: 0 0.0 0.0 0.0 0.0 +Notifications: 2 204.5 46.0 0.0 0.0 +Summary: 60 362.4 55.2 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 33.3% 13.3% 0.0% 2.2% 0.0% 6.7% 35.6% 8.9% 0.0% 0.0% 0.0% +Scalars: 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Summary: 33.3% 13.3% 0.0% 2.2% 0.0% 6.7% 35.6% 8.9% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 0 0 +Scalars (rw): 0 0 +Columns (ro): 35 70 +Columns (rw): 8 24 +Indexes: 6 48 +Summary: 43 94 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE + Integer32 41.0% + Enumeration 18.0% +IF-MIB InterfaceIndex 9.8% +SNMPv2-SMI Counter32 9.8% +IANA-MAU-MIB IANAifMauAutoNegCapBits 4.9% +SNMPv2-TC AutonomousType 4.9% +IANA-MAU-MIB IANAifJackType 3.3% +IANA-MAU-MIB IANAifMauMediaAvailable 3.3% +IANA-MAU-MIB IANAifMauTypeListBits 1.6% +SNMPv2-SMI Counter64 1.6% +SNMPv2-TC TruthValue 1.6% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 28.6% +IANA-MAU-MIB IANAifMauAutoNegCapBits 14.3% +SNMPv2-TC AutonomousType 14.3% +IANA-MAU-MIB IANAifJackType 9.5% +IANA-MAU-MIB IANAifMauMediaAvailable 9.5% +IF-MIB InterfaceIndex 9.5% +IANA-MAU-MIB IANAifMauTypeListBits 4.8% +SNMPv2-SMI Counter64 4.8% +SNMPv2-TC TruthValue 4.8% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +IANA-MAU-MIB 38.1% +SNMPv2-SMI 33.3% +SNMPv2-TC 19.0% +IF-MIB 9.5% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +MAU-MIB rpJackEntry 4.0% +MAU-MIB ifJackEntry 3.0% +MAU-MIB rpMauEntry 3.0% +MAU-MIB broadMauBasicEntry 2.0% +MAU-MIB ifMauAutoNegEntry 2.0% +MAU-MIB ifMauEntry 2.0% + diff --git a/test/dumps/metrics/Makefile.am b/test/dumps/metrics/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/metrics/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/metrics/Makefile.in b/test/dumps/metrics/Makefile.in new file mode 100644 index 0000000..fdd7bed --- /dev/null +++ b/test/dumps/metrics/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/metrics +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/metrics/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/metrics/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/metrics/RMON2-MIB b/test/dumps/metrics/RMON2-MIB new file mode 100644 index 0000000..e347910 --- /dev/null +++ b/test/dumps/metrics/RMON2-MIB @@ -0,0 +1,188 @@ +# RMON2-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +RMON2-MIB - - 0 1996-05-27 +RMON2-MIB - - 1 2002-07-08 +RMON2-MIB SMIv2 205 2 2006-05-02 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 5 100.0% 0.0% 0.0% +Tables: 34 76.5% 23.5% 0.0% +Columns: 186 81.2% 18.8% 0.0% +Scalars: 14 64.3% 35.7% 0.0% +Notifications: 0 0.0% 0.0% 0.0% +Groups: 13 84.6% 15.4% 0.0% +Compliances: 2 100.0% 0.0% 0.0% +Summary: 254 80.3% 19.7% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 186 36.6% 47.8% 0.0% 15.6% +Scalars: 14 50.0% 50.0% 0.0% 0.0% +Summary: 200 37.5% 48.0% 0.0% 14.5% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 34 70.6% 29.4% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 34 61.8% 14.7% 2.9% 5.9% 8.8% 5.9% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 34 2.9% 29.4% 5.9% 5.9% 8.8% 14.7% 2.9% 5.9% 8.8% 2.9% 5.9% 5.9% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 5 100.0% 0.0% 0.0% 0.0% +Tables: 34 100.0% 0.0% 0.0% 0.0% +Columns: 186 100.0% 0.0% 0.0% 0.0% +Scalars: 14 100.0% 0.0% 0.0% 0.0% +Notifications: 0 0.0% 0.0% 0.0% 0.0% +Summary: 273 100.0% 0.0% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 5 2295.2 0.0 0.0 0.0 +Tables: 34 355.8 0.0 0.0 0.0 +Columns: 186 424.1 0.0 0.0 0.0 +Scalars: 14 365.9 0.0 0.0 0.0 +Notifications: 0 0.0 0.0 0.0 0.0 +Summary: 273 428.8 0.0 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 21.0% 43.0% 0.0% 0.0% 19.9% 3.2% 12.4% 0.5% 0.0% 0.0% 0.0% +Scalars: 7.1% 21.4% 0.0% 0.0% 42.9% 0.0% 21.4% 7.1% 0.0% 0.0% 0.0% +Summary: 20.0% 41.5% 0.0% 0.0% 21.5% 3.0% 13.0% 1.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 7 7 +Scalars (rw): 7 14 +Columns (ro): 89 178 +Columns (rw): 68 204 +Indexes: 34 291 +Summary: 171 403 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE + Integer32 29.6% + OctetString 11.3% +SNMPv2-SMI Counter32 10.5% +RMON2-MIB ZeroBasedCounter32 7.4% +RMON2-MIB LastCreateTime 5.8% + Enumeration 5.4% +RMON2-MIB TimeFilter 5.4% +SNMPv2-TC RowStatus 4.7% +RMON-MIB OwnerString 3.9% +SNMPv2-SMI Gauge32 3.5% +RMON2-MIB ControlString 2.3% +SNMPv2-TC DisplayString 2.3% +SNMPv2-TC TimeStamp 2.3% +SNMPv2-SMI IpAddress 1.9% +RMON2-MIB DataSource 1.6% + ObjectIdentifier 1.2% + Bits 0.8% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 39.1% +SNMPv2-TC RowStatus 17.4% +RMON-MIB OwnerString 14.5% +SNMPv2-SMI Gauge32 13.0% +SNMPv2-TC TimeStamp 8.7% +SNMPv2-SMI IpAddress 7.2% + +# The following table shows the distribution of the number of references +# to externally defined nodes in the set of loaded MIB modules. + +MODULE NODE EXT-USAGE +IF-MIB ifIndex 16.7% +RMON-MIB channelIndex 8.3% +RMON-MIB etherStatsIndex 8.3% +RMON-MIB filterIndex 8.3% +RMON-MIB historyControlIndex 8.3% +RMON-MIB hostControlIndex 8.3% +RMON-MIB matrixControlIndex 8.3% +TOKEN-RING-RMON-MIB ringStationControlIfIndex 8.3% +TOKEN-RING-RMON-MIB sourceRoutingStatsIfIndex 8.3% +TOKEN-RING-RMON-MIB tokenRingMLStatsIndex 8.3% +TOKEN-RING-RMON-MIB tokenRingPStatsIndex 8.3% + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 50.6% +SNMPv2-TC 22.2% +RMON-MIB 19.8% +TOKEN-RING-RMON-MIB 4.9% +IF-MIB 2.5% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +RMON2-MIB alMatrixDSEntry 10.0% +RMON2-MIB alMatrixSDEntry 10.0% +RMON2-MIB nlMatrixDSEntry 9.0% +RMON2-MIB nlMatrixSDEntry 9.0% +RMON2-MIB addressMapEntry 8.0% +RMON2-MIB alHostEntry 7.0% +RMON2-MIB nlHostEntry 6.0% +RMON2-MIB protocolDirEntry 6.0% +RMON2-MIB usrHistoryEntry 3.0% +RMON2-MIB alMatrixTopNEntry 2.0% +RMON2-MIB nlMatrixTopNEntry 2.0% +RMON2-MIB protocolDistStatsEntry 2.0% +RMON2-MIB usrHistoryObjectEntry 2.0% +RMON2-MIB addressMapControlEntry 1.0% +RMON2-MIB alMatrixTopNControlEntry 1.0% +RMON2-MIB channel2Entry 1.0% +RMON2-MIB etherStats2Entry 1.0% +RMON2-MIB filter2Entry 1.0% +RMON2-MIB historyControl2Entry 1.0% +RMON2-MIB hlHostControlEntry 1.0% +RMON2-MIB hlMatrixControlEntry 1.0% +RMON2-MIB hostControl2Entry 1.0% +RMON2-MIB matrixControl2Entry 1.0% +RMON2-MIB netConfigEntry 1.0% +RMON2-MIB nlMatrixTopNControlEntry 1.0% +RMON2-MIB protocolDistControlEntry 1.0% +RMON2-MIB ringStationControl2Entry 1.0% +RMON2-MIB serialConfigEntry 1.0% +RMON2-MIB serialConnectionEntry 1.0% +RMON2-MIB sourceRoutingStats2Entry 1.0% +RMON2-MIB tokenRingMLStats2Entry 1.0% +RMON2-MIB tokenRingPStats2Entry 1.0% +RMON2-MIB trapDestEntry 1.0% +RMON2-MIB usrHistoryControlEntry 1.0% + diff --git a/test/dumps/metrics/SNMPv2-MIB b/test/dumps/metrics/SNMPv2-MIB new file mode 100644 index 0000000..405364f --- /dev/null +++ b/test/dumps/metrics/SNMPv2-MIB @@ -0,0 +1,127 @@ +# SNMPv2-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +SNMPv2-MIB - - 0 1993-04-01 +SNMPv2-MIB - - 1 1995-11-09 +SNMPv2-MIB SMIv2 48 2 2002-10-16 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 0 0.0% 0.0% 0.0% +Tables: 1 100.0% 0.0% 0.0% +Columns: 4 100.0% 0.0% 0.0% +Scalars: 41 46.3% 0.0% 53.7% +Notifications: 3 100.0% 0.0% 0.0% +Groups: 8 87.5% 0.0% 12.5% +Compliances: 2 50.0% 50.0% 0.0% +Summary: 59 59.3% 1.7% 39.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 4 0.0% 75.0% 0.0% 25.0% +Scalars: 41 12.2% 82.9% 4.9% 0.0% +Summary: 45 11.1% 82.2% 4.4% 2.2% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 1 100.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 1 100.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 1 0.0% 0.0% 0.0% 100.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 0 0.0% 0.0% 0.0% 0.0% +Tables: 1 100.0% 0.0% 0.0% 0.0% +Columns: 4 100.0% 0.0% 0.0% 0.0% +Scalars: 41 100.0% 0.0% 0.0% 0.0% +Notifications: 3 100.0% 0.0% 0.0% 0.0% +Summary: 50 100.0% 0.0% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 0 0.0 0.0 0.0 0.0 +Tables: 1 272.0 0.0 0.0 0.0 +Columns: 4 108.2 0.0 0.0 0.0 +Scalars: 41 216.7 0.0 0.0 0.0 +Notifications: 3 210.0 0.0 0.0 0.0 +Summary: 50 205.2 0.0 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 25.0% 25.0% 0.0% 0.0% 25.0% 25.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Scalars: 4.9% 75.6% 0.0% 0.0% 9.8% 7.3% 2.4% 0.0% 0.0% 0.0% 0.0% +Summary: 6.7% 71.1% 0.0% 0.0% 11.1% 8.9% 2.2% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 34 34 +Scalars (rw): 5 10 +Columns (ro): 3 6 +Columns (rw): 0 0 +Indexes: 1 3 +Summary: 42 50 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE +SNMPv2-SMI Counter32 63.0% +SNMPv2-TC DisplayString 10.9% + ObjectIdentifier 8.7% + Integer32 6.5% +SNMPv2-TC TimeStamp 4.3% + Enumeration 2.2% +SNMPv2-SMI TimeTicks 2.2% +SNMPv2-TC TestAndIncr 2.2% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 85.3% +SNMPv2-TC TimeStamp 5.9% +SNMPv2-SMI TimeTicks 2.9% +SNMPv2-TC DisplayString 2.9% +SNMPv2-TC TestAndIncr 2.9% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 88.2% +SNMPv2-TC 11.8% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +SNMPv2-MIB sysOREntry 1.0% + diff --git a/test/dumps/mosy/IF-MIB b/test/dumps/mosy/IF-MIB new file mode 100644 index 0000000..c7b9aea --- /dev/null +++ b/test/dumps/mosy/IF-MIB @@ -0,0 +1,160 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from IF-MIB + +ifMIB mib-2.31 +%n0 ifMIB module-identity + +interfaces mib-2.2 +%n0 interfaces object-id +ifMIBObjects ifMIB.1 +%n0 ifMIBObjects object-id +ifConformance ifMIB.2 +%n0 ifConformance object-id +ifGroups ifConformance.1 +%n0 ifGroups object-id +ifCompliances ifConformance.2 +%n0 ifCompliances object-id + +%tc OwnerString OctetString "255a" +%tc InterfaceIndex Integer32 "d" +%tc InterfaceIndexOrZero Integer32 "d" +ifNumber interfaces.1 Integer32 read-only current +ifTable interfaces.2 Aggregate not-accessible current +ifEntry ifTable.1 Aggregate not-accessible current +%ei ifEntry "ifIndex" +ifIndex ifEntry.1 InterfaceIndex read-only current +ifDescr ifEntry.2 DisplayString read-only current +%er ifDescr 0 255 +ifType ifEntry.3 IANAifType read-only current +ifMtu ifEntry.4 Integer32 read-only current +ifSpeed ifEntry.5 Gauge32 read-only current +ifPhysAddress ifEntry.6 PhysAddress read-only current +ifAdminStatus ifEntry.7 INTEGER read-write current +%ev ifAdminStatus up 1 +%ev ifAdminStatus down 2 +%ev ifAdminStatus testing 3 +ifOperStatus ifEntry.8 INTEGER read-only current +%ev ifOperStatus up 1 +%ev ifOperStatus down 2 +%ev ifOperStatus testing 3 +%ev ifOperStatus unknown 4 +%ev ifOperStatus dormant 5 +%ev ifOperStatus notPresent 6 +%ev ifOperStatus lowerLayerDown 7 +ifLastChange ifEntry.9 TimeTicks read-only current +ifInOctets ifEntry.10 Counter32 read-only current +ifInUcastPkts ifEntry.11 Counter32 read-only current +ifInNUcastPkts ifEntry.12 Counter32 read-only deprecated +ifInDiscards ifEntry.13 Counter32 read-only current +ifInErrors ifEntry.14 Counter32 read-only current +ifInUnknownProtos ifEntry.15 Counter32 read-only current +ifOutOctets ifEntry.16 Counter32 read-only current +ifOutUcastPkts ifEntry.17 Counter32 read-only current +ifOutNUcastPkts ifEntry.18 Counter32 read-only deprecated +ifOutDiscards ifEntry.19 Counter32 read-only current +ifOutErrors ifEntry.20 Counter32 read-only current +ifOutQLen ifEntry.21 Gauge32 read-only deprecated +ifSpecific ifEntry.22 ObjectID read-only deprecated +ifXTable ifMIBObjects.1 Aggregate not-accessible current +ifXEntry ifXTable.1 Aggregate not-accessible current +%ea ifXEntry ifEntry +ifName ifXEntry.1 DisplayString read-only current +ifInMulticastPkts ifXEntry.2 Counter32 read-only current +ifInBroadcastPkts ifXEntry.3 Counter32 read-only current +ifOutMulticastPkts ifXEntry.4 Counter32 read-only current +ifOutBroadcastPkts ifXEntry.5 Counter32 read-only current +ifHCInOctets ifXEntry.6 Counter64 read-only current +ifHCInUcastPkts ifXEntry.7 Counter64 read-only current +ifHCInMulticastPkts ifXEntry.8 Counter64 read-only current +ifHCInBroadcastPkts ifXEntry.9 Counter64 read-only current +ifHCOutOctets ifXEntry.10 Counter64 read-only current +ifHCOutUcastPkts ifXEntry.11 Counter64 read-only current +ifHCOutMulticastPkts ifXEntry.12 Counter64 read-only current +ifHCOutBroadcastPkts ifXEntry.13 Counter64 read-only current +ifLinkUpDownTrapEnable ifXEntry.14 INTEGER read-write current +%ev ifLinkUpDownTrapEnable enabled 1 +%ev ifLinkUpDownTrapEnable disabled 2 +ifHighSpeed ifXEntry.15 Gauge32 read-only current +ifPromiscuousMode ifXEntry.16 TruthValue read-write current +ifConnectorPresent ifXEntry.17 TruthValue read-only current +ifAlias ifXEntry.18 DisplayString read-write current +%er ifAlias 0 64 +ifCounterDiscontinuityTime ifXEntry.19 TimeStamp read-only current +ifStackTable ifMIBObjects.2 Aggregate not-accessible current +ifStackEntry ifStackTable.1 Aggregate not-accessible current +%ei ifStackEntry "ifStackHigherLayer ifStackLowerLayer" +ifStackHigherLayer ifStackEntry.1 InterfaceIndexOrZero not-accessible current +ifStackLowerLayer ifStackEntry.2 InterfaceIndexOrZero not-accessible current +ifStackStatus ifStackEntry.3 RowStatus read-create current +ifTestTable ifMIBObjects.3 Aggregate not-accessible deprecated +ifTestEntry ifTestTable.1 Aggregate not-accessible deprecated +%ea ifTestEntry ifEntry +ifTestId ifTestEntry.1 TestAndIncr read-write deprecated +ifTestStatus ifTestEntry.2 INTEGER read-write deprecated +%ev ifTestStatus notInUse 1 +%ev ifTestStatus inUse 2 +ifTestType ifTestEntry.3 AutonomousType read-write deprecated +ifTestResult ifTestEntry.4 INTEGER read-only deprecated +%ev ifTestResult none 1 +%ev ifTestResult success 2 +%ev ifTestResult inProgress 3 +%ev ifTestResult notSupported 4 +%ev ifTestResult unAbleToRun 5 +%ev ifTestResult aborted 6 +%ev ifTestResult failed 7 +ifTestCode ifTestEntry.5 ObjectID read-only deprecated +ifTestOwner ifTestEntry.6 OwnerString read-write deprecated +ifRcvAddressTable ifMIBObjects.4 Aggregate not-accessible current +ifRcvAddressEntry ifRcvAddressTable.1 Aggregate not-accessible current +%ei ifRcvAddressEntry "ifIndex ifRcvAddressAddress" +ifRcvAddressAddress ifRcvAddressEntry.1 PhysAddress not-accessible current +ifRcvAddressStatus ifRcvAddressEntry.2 RowStatus read-create current +ifRcvAddressType ifRcvAddressEntry.3 INTEGER read-create current +%ev ifRcvAddressType other 1 +%ev ifRcvAddressType volatile 2 +%ev ifRcvAddressType nonVolatile 3 +ifTableLastChange ifMIBObjects.5 TimeTicks read-only current +ifStackLastChange ifMIBObjects.6 TimeTicks read-only current + +linkDown snmpTraps.3 +%n0 linkDown notification +linkUp snmpTraps.4 +%n0 linkUp notification + +ifGeneralGroup ifGroups.1 +%n0 ifGeneralGroup object-group +ifFixedLengthGroup ifGroups.2 +%n0 ifFixedLengthGroup object-group +ifHCFixedLengthGroup ifGroups.3 +%n0 ifHCFixedLengthGroup object-group +ifPacketGroup ifGroups.4 +%n0 ifPacketGroup object-group +ifHCPacketGroup ifGroups.5 +%n0 ifHCPacketGroup object-group +ifVHCPacketGroup ifGroups.6 +%n0 ifVHCPacketGroup object-group +ifRcvAddressGroup ifGroups.7 +%n0 ifRcvAddressGroup object-group +ifTestGroup ifGroups.8 +%n0 ifTestGroup object-group +ifStackGroup ifGroups.9 +%n0 ifStackGroup object-group +ifGeneralInformationGroup ifGroups.10 +%n0 ifGeneralInformationGroup object-group +ifStackGroup2 ifGroups.11 +%n0 ifStackGroup2 object-group +ifOldObjectsGroup ifGroups.12 +%n0 ifOldObjectsGroup object-group +ifCounterDiscontinuityGroup ifGroups.13 +%n0 ifCounterDiscontinuityGroup object-group +linkUpDownNotificationsGroup ifGroups.14 +%n0 linkUpDownNotificationsGroup notification-group + +ifCompliance ifCompliances.1 +%n0 ifCompliance module-compliance +ifCompliance2 ifCompliances.2 +%n0 ifCompliance2 module-compliance +ifCompliance3 ifCompliances.3 +%n0 ifCompliance3 module-compliance + diff --git a/test/dumps/mosy/MAU-MIB b/test/dumps/mosy/MAU-MIB new file mode 100644 index 0000000..bec0a7e --- /dev/null +++ b/test/dumps/mosy/MAU-MIB @@ -0,0 +1,201 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from MAU-MIB + +mauMod snmpDot3MauMgt.6 +%n0 mauMod module-identity + +snmpDot3MauMgt mib-2.26 +%n0 snmpDot3MauMgt object-id +snmpDot3MauTraps snmpDot3MauMgt.0 +%n0 snmpDot3MauTraps object-id +dot3RpMauBasicGroup snmpDot3MauMgt.1 +%n0 dot3RpMauBasicGroup object-id +dot3IfMauBasicGroup snmpDot3MauMgt.2 +%n0 dot3IfMauBasicGroup object-id +dot3BroadMauBasicGroup snmpDot3MauMgt.3 +%n0 dot3BroadMauBasicGroup object-id +dot3IfMauAutoNegGroup snmpDot3MauMgt.5 +%n0 dot3IfMauAutoNegGroup object-id +mauModConf mauMod.1 +%n0 mauModConf object-id +mauModCompls mauModConf.1 +%n0 mauModCompls object-id +mauModObjGrps mauModConf.2 +%n0 mauModObjGrps object-id +mauModNotGrps mauModConf.3 +%n0 mauModNotGrps object-id + +%tc JackType INTEGER "" +%es JackType other 1 +%es JackType rj45 2 +%es JackType rj45S 3 +%es JackType db9 4 +%es JackType bnc 5 +%es JackType fAUI 6 +%es JackType mAUI 7 +%es JackType fiberSC 8 +%es JackType fiberMIC 9 +%es JackType fiberST 10 +%es JackType telco 11 +%es JackType mtrj 12 +%es JackType hssdc 13 +%es JackType fiberLC 14 +rpMauTable dot3RpMauBasicGroup.1 Aggregate not-accessible current +rpMauEntry rpMauTable.1 Aggregate not-accessible current +%ei rpMauEntry "rpMauGroupIndex rpMauPortIndex rpMauIndex" +rpMauGroupIndex rpMauEntry.1 Integer32 read-only current +%er rpMauGroupIndex 1 2147483647 +rpMauPortIndex rpMauEntry.2 Integer32 read-only current +%er rpMauPortIndex 1 2147483647 +rpMauIndex rpMauEntry.3 Integer32 read-only current +%er rpMauIndex 1 2147483647 +rpMauType rpMauEntry.4 AutonomousType read-only current +rpMauStatus rpMauEntry.5 INTEGER read-write current +%ev rpMauStatus other 1 +%ev rpMauStatus unknown 2 +%ev rpMauStatus operational 3 +%ev rpMauStatus standby 4 +%ev rpMauStatus shutdown 5 +%ev rpMauStatus reset 6 +rpMauMediaAvailable rpMauEntry.6 IANAifMauMediaAvailable read-only current +rpMauMediaAvailableStateExits rpMauEntry.7 Counter32 read-only current +rpMauJabberState rpMauEntry.8 INTEGER read-only current +%ev rpMauJabberState other 1 +%ev rpMauJabberState unknown 2 +%ev rpMauJabberState noJabber 3 +%ev rpMauJabberState jabbering 4 +rpMauJabberingStateEnters rpMauEntry.9 Counter32 read-only current +rpMauFalseCarriers rpMauEntry.10 Counter32 read-only current +rpJackTable dot3RpMauBasicGroup.2 Aggregate not-accessible current +rpJackEntry rpJackTable.1 Aggregate not-accessible current +%ei rpJackEntry "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex" +rpJackIndex rpJackEntry.1 Integer32 not-accessible current +%er rpJackIndex 1 2147483647 +rpJackType rpJackEntry.2 IANAifJackType read-only current +ifMauTable dot3IfMauBasicGroup.1 Aggregate not-accessible current +ifMauEntry ifMauTable.1 Aggregate not-accessible current +%ei ifMauEntry "ifMauIfIndex ifMauIndex" +ifMauIfIndex ifMauEntry.1 InterfaceIndex read-only current +ifMauIndex ifMauEntry.2 Integer32 read-only current +%er ifMauIndex 1 2147483647 +ifMauType ifMauEntry.3 AutonomousType read-only current +ifMauStatus ifMauEntry.4 INTEGER read-write current +%ev ifMauStatus other 1 +%ev ifMauStatus unknown 2 +%ev ifMauStatus operational 3 +%ev ifMauStatus standby 4 +%ev ifMauStatus shutdown 5 +%ev ifMauStatus reset 6 +ifMauMediaAvailable ifMauEntry.5 IANAifMauMediaAvailable read-only current +ifMauMediaAvailableStateExits ifMauEntry.6 Counter32 read-only current +ifMauJabberState ifMauEntry.7 INTEGER read-only current +%ev ifMauJabberState other 1 +%ev ifMauJabberState unknown 2 +%ev ifMauJabberState noJabber 3 +%ev ifMauJabberState jabbering 4 +ifMauJabberingStateEnters ifMauEntry.8 Counter32 read-only current +ifMauFalseCarriers ifMauEntry.9 Counter32 read-only current +ifMauTypeList ifMauEntry.10 Integer32 read-only deprecated +ifMauDefaultType ifMauEntry.11 AutonomousType read-write current +ifMauAutoNegSupported ifMauEntry.12 TruthValue read-only current +ifMauTypeListBits ifMauEntry.13 IANAifMauTypeListBits read-only current +ifMauHCFalseCarriers ifMauEntry.14 Counter64 read-only current +ifJackTable dot3IfMauBasicGroup.2 Aggregate not-accessible current +ifJackEntry ifJackTable.1 Aggregate not-accessible current +%ei ifJackEntry "ifMauIfIndex ifMauIndex ifJackIndex" +ifJackIndex ifJackEntry.1 Integer32 not-accessible current +%er ifJackIndex 1 2147483647 +ifJackType ifJackEntry.2 IANAifJackType read-only current +broadMauBasicTable dot3BroadMauBasicGroup.1 Aggregate not-accessible deprecated +broadMauBasicEntry broadMauBasicTable.1 Aggregate not-accessible deprecated +%ei broadMauBasicEntry "broadMauIfIndex broadMauIndex" +broadMauIfIndex broadMauBasicEntry.1 InterfaceIndex read-only deprecated +broadMauIndex broadMauBasicEntry.2 Integer32 read-only deprecated +%er broadMauIndex 1 2147483647 +broadMauXmtRcvSplitType broadMauBasicEntry.3 INTEGER read-only deprecated +%ev broadMauXmtRcvSplitType other 1 +%ev broadMauXmtRcvSplitType single 2 +%ev broadMauXmtRcvSplitType dual 3 +broadMauXmtCarrierFreq broadMauBasicEntry.4 Integer32 read-only deprecated +broadMauTranslationFreq broadMauBasicEntry.5 Integer32 read-only deprecated +ifMauAutoNegTable dot3IfMauAutoNegGroup.1 Aggregate not-accessible current +ifMauAutoNegEntry ifMauAutoNegTable.1 Aggregate not-accessible current +%ei ifMauAutoNegEntry "ifMauIfIndex ifMauIndex" +ifMauAutoNegAdminStatus ifMauAutoNegEntry.1 INTEGER read-write current +%ev ifMauAutoNegAdminStatus enabled 1 +%ev ifMauAutoNegAdminStatus disabled 2 +ifMauAutoNegRemoteSignaling ifMauAutoNegEntry.2 INTEGER read-only current +%ev ifMauAutoNegRemoteSignaling detected 1 +%ev ifMauAutoNegRemoteSignaling notdetected 2 +ifMauAutoNegConfig ifMauAutoNegEntry.4 INTEGER read-only current +%ev ifMauAutoNegConfig other 1 +%ev ifMauAutoNegConfig configuring 2 +%ev ifMauAutoNegConfig complete 3 +%ev ifMauAutoNegConfig disabled 4 +%ev ifMauAutoNegConfig parallelDetectFail 5 +ifMauAutoNegCapability ifMauAutoNegEntry.5 Integer32 read-only deprecated +ifMauAutoNegCapAdvertised ifMauAutoNegEntry.6 Integer32 read-write deprecated +ifMauAutoNegCapReceived ifMauAutoNegEntry.7 Integer32 read-only deprecated +ifMauAutoNegRestart ifMauAutoNegEntry.8 INTEGER read-write current +%ev ifMauAutoNegRestart restart 1 +%ev ifMauAutoNegRestart norestart 2 +ifMauAutoNegCapabilityBits ifMauAutoNegEntry.9 IANAifMauAutoNegCapBits read-only current +ifMauAutoNegCapAdvertisedBits ifMauAutoNegEntry.10 IANAifMauAutoNegCapBits read-write current +ifMauAutoNegCapReceivedBits ifMauAutoNegEntry.11 IANAifMauAutoNegCapBits read-only current +ifMauAutoNegRemoteFaultAdvertised ifMauAutoNegEntry.12 INTEGER read-write current +%ev ifMauAutoNegRemoteFaultAdvertised noError 1 +%ev ifMauAutoNegRemoteFaultAdvertised offline 2 +%ev ifMauAutoNegRemoteFaultAdvertised linkFailure 3 +%ev ifMauAutoNegRemoteFaultAdvertised autoNegError 4 +ifMauAutoNegRemoteFaultReceived ifMauAutoNegEntry.13 INTEGER read-only current +%ev ifMauAutoNegRemoteFaultReceived noError 1 +%ev ifMauAutoNegRemoteFaultReceived offline 2 +%ev ifMauAutoNegRemoteFaultReceived linkFailure 3 +%ev ifMauAutoNegRemoteFaultReceived autoNegError 4 + +rpMauJabberTrap snmpDot3MauTraps.1 +%n0 rpMauJabberTrap notification +ifMauJabberTrap snmpDot3MauTraps.2 +%n0 ifMauJabberTrap notification + +mauRpGrpBasic mauModObjGrps.1 +%n0 mauRpGrpBasic object-group +mauRpGrp100Mbs mauModObjGrps.2 +%n0 mauRpGrp100Mbs object-group +mauRpGrpJack mauModObjGrps.3 +%n0 mauRpGrpJack object-group +mauIfGrpBasic mauModObjGrps.4 +%n0 mauIfGrpBasic object-group +mauIfGrp100Mbs mauModObjGrps.5 +%n0 mauIfGrp100Mbs object-group +mauIfGrpJack mauModObjGrps.6 +%n0 mauIfGrpJack object-group +mauIfGrpAutoNeg mauModObjGrps.7 +%n0 mauIfGrpAutoNeg object-group +mauBroadBasic mauModObjGrps.8 +%n0 mauBroadBasic object-group +mauIfGrpHighCapacity mauModObjGrps.9 +%n0 mauIfGrpHighCapacity object-group +mauIfGrpAutoNeg2 mauModObjGrps.10 +%n0 mauIfGrpAutoNeg2 object-group +mauIfGrpAutoNeg1000Mbps mauModObjGrps.11 +%n0 mauIfGrpAutoNeg1000Mbps object-group +mauIfGrpHCStats mauModObjGrps.12 +%n0 mauIfGrpHCStats object-group +rpMauNotifications mauModNotGrps.1 +%n0 rpMauNotifications notification-group +ifMauNotifications mauModNotGrps.2 +%n0 ifMauNotifications notification-group + +mauModRpCompl mauModCompls.1 +%n0 mauModRpCompl module-compliance +mauModIfCompl mauModCompls.2 +%n0 mauModIfCompl module-compliance +mauModIfCompl2 mauModCompls.3 +%n0 mauModIfCompl2 module-compliance +mauModRpCompl2 mauModCompls.4 +%n0 mauModRpCompl2 module-compliance +mauModIfCompl3 mauModCompls.5 +%n0 mauModIfCompl3 module-compliance + diff --git a/test/dumps/mosy/Makefile.am b/test/dumps/mosy/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/mosy/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/mosy/Makefile.in b/test/dumps/mosy/Makefile.in new file mode 100644 index 0000000..2aba55d --- /dev/null +++ b/test/dumps/mosy/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/mosy +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/mosy/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/mosy/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/mosy/RMON2-MIB b/test/dumps/mosy/RMON2-MIB new file mode 100644 index 0000000..36de3ef --- /dev/null +++ b/test/dumps/mosy/RMON2-MIB @@ -0,0 +1,518 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from RMON2-MIB + +rmon mib-2.16 +%n0 rmon module-identity + +protocolDir rmon.11 +%n0 protocolDir object-id +protocolDist rmon.12 +%n0 protocolDist object-id +addressMap rmon.13 +%n0 addressMap object-id +nlHost rmon.14 +%n0 nlHost object-id +nlMatrix rmon.15 +%n0 nlMatrix object-id +alHost rmon.16 +%n0 alHost object-id +alMatrix rmon.17 +%n0 alMatrix object-id +usrHistory rmon.18 +%n0 usrHistory object-id +probeConfig rmon.19 +%n0 probeConfig object-id +rmonConformance rmon.20 +%n0 rmonConformance object-id +rmon2MIBCompliances rmonConformance.1 +%n0 rmon2MIBCompliances object-id +rmon2MIBGroups rmonConformance.2 +%n0 rmon2MIBGroups object-id + +%tc ZeroBasedCounter32 Gauge32 "" +%tc LastCreateTime TimeTicks "" +%tc TimeFilter TimeTicks "" +%tc DataSource ObjectID "" +%tc ControlString OctetString "" +etherStats2Table statistics.4 Aggregate not-accessible current +etherStats2Entry etherStats2Table.1 Aggregate not-accessible current +%ea etherStats2Entry etherStatsEntry +etherStatsDroppedFrames etherStats2Entry.1 Counter32 read-only current +etherStatsCreateTime etherStats2Entry.2 LastCreateTime read-only current +tokenRingMLStats2Table statistics.5 Aggregate not-accessible deprecated +tokenRingMLStats2Entry tokenRingMLStats2Table.1 Aggregate not-accessible deprecated +%ea tokenRingMLStats2Entry tokenRingMLStatsEntry +tokenRingMLStatsDroppedFrames tokenRingMLStats2Entry.1 Counter32 read-only deprecated +tokenRingMLStatsCreateTime tokenRingMLStats2Entry.2 LastCreateTime read-only deprecated +tokenRingPStats2Table statistics.6 Aggregate not-accessible deprecated +tokenRingPStats2Entry tokenRingPStats2Table.1 Aggregate not-accessible deprecated +%ea tokenRingPStats2Entry tokenRingPStatsEntry +tokenRingPStatsDroppedFrames tokenRingPStats2Entry.1 Counter32 read-only deprecated +tokenRingPStatsCreateTime tokenRingPStats2Entry.2 LastCreateTime read-only deprecated +historyControl2Table history.5 Aggregate not-accessible current +historyControl2Entry historyControl2Table.1 Aggregate not-accessible current +%ea historyControl2Entry historyControlEntry +historyControlDroppedFrames historyControl2Entry.1 Counter32 read-only current +hostControl2Table hosts.4 Aggregate not-accessible current +hostControl2Entry hostControl2Table.1 Aggregate not-accessible current +%ea hostControl2Entry hostControlEntry +hostControlDroppedFrames hostControl2Entry.1 Counter32 read-only current +hostControlCreateTime hostControl2Entry.2 LastCreateTime read-only current +matrixControl2Table matrix.4 Aggregate not-accessible current +matrixControl2Entry matrixControl2Table.1 Aggregate not-accessible current +%ea matrixControl2Entry matrixControlEntry +matrixControlDroppedFrames matrixControl2Entry.1 Counter32 read-only current +matrixControlCreateTime matrixControl2Entry.2 LastCreateTime read-only current +channel2Table filter.3 Aggregate not-accessible current +channel2Entry channel2Table.1 Aggregate not-accessible current +%ea channel2Entry channelEntry +channelDroppedFrames channel2Entry.1 Counter32 read-only current +channelCreateTime channel2Entry.2 LastCreateTime read-only current +filter2Table filter.4 Aggregate not-accessible current +filter2Entry filter2Table.1 Aggregate not-accessible current +%ea filter2Entry filterEntry +filterProtocolDirDataLocalIndex filter2Entry.1 Integer32 read-create current +%er filterProtocolDirDataLocalIndex 0 2147483647 +filterProtocolDirLocalIndex filter2Entry.2 Integer32 read-create current +%er filterProtocolDirLocalIndex 0 2147483647 +ringStationControl2Table tokenRing.7 Aggregate not-accessible deprecated +ringStationControl2Entry ringStationControl2Table.1 Aggregate not-accessible deprecated +%ea ringStationControl2Entry ringStationControlEntry +ringStationControlDroppedFrames ringStationControl2Entry.1 Counter32 read-only deprecated +ringStationControlCreateTime ringStationControl2Entry.2 LastCreateTime read-only deprecated +sourceRoutingStats2Table tokenRing.8 Aggregate not-accessible deprecated +sourceRoutingStats2Entry sourceRoutingStats2Table.1 Aggregate not-accessible deprecated +%ea sourceRoutingStats2Entry sourceRoutingStatsEntry +sourceRoutingStatsDroppedFrames sourceRoutingStats2Entry.1 Counter32 read-only deprecated +sourceRoutingStatsCreateTime sourceRoutingStats2Entry.2 LastCreateTime read-only deprecated +protocolDirLastChange protocolDir.1 TimeStamp read-only current +protocolDirTable protocolDir.2 Aggregate not-accessible current +protocolDirEntry protocolDirTable.1 Aggregate not-accessible current +%ei protocolDirEntry "protocolDirID protocolDirParameters" +protocolDirID protocolDirEntry.1 OctetString not-accessible current +%er protocolDirID 4 128 +protocolDirParameters protocolDirEntry.2 OctetString not-accessible current +%er protocolDirParameters 1 32 +protocolDirLocalIndex protocolDirEntry.3 Integer32 read-only current +%er protocolDirLocalIndex 1 2147483647 +protocolDirDescr protocolDirEntry.4 DisplayString read-create current +%er protocolDirDescr 1 64 +protocolDirType protocolDirEntry.5 Bits read-only current +%ev protocolDirType extensible 0 +%ev protocolDirType addressRecognitionCapable 1 +protocolDirAddressMapConfig protocolDirEntry.6 INTEGER read-create current +%ev protocolDirAddressMapConfig notSupported 1 +%ev protocolDirAddressMapConfig supportedOff 2 +%ev protocolDirAddressMapConfig supportedOn 3 +protocolDirHostConfig protocolDirEntry.7 INTEGER read-create current +%ev protocolDirHostConfig notSupported 1 +%ev protocolDirHostConfig supportedOff 2 +%ev protocolDirHostConfig supportedOn 3 +protocolDirMatrixConfig protocolDirEntry.8 INTEGER read-create current +%ev protocolDirMatrixConfig notSupported 1 +%ev protocolDirMatrixConfig supportedOff 2 +%ev protocolDirMatrixConfig supportedOn 3 +protocolDirOwner protocolDirEntry.9 OwnerString read-create current +protocolDirStatus protocolDirEntry.10 RowStatus read-create current +protocolDistControlTable protocolDist.1 Aggregate not-accessible current +protocolDistControlEntry protocolDistControlTable.1 Aggregate not-accessible current +%ei protocolDistControlEntry "protocolDistControlIndex" +protocolDistControlIndex protocolDistControlEntry.1 Integer32 not-accessible current +%er protocolDistControlIndex 1 65535 +protocolDistControlDataSource protocolDistControlEntry.2 DataSource read-create current +protocolDistControlDroppedFrames protocolDistControlEntry.3 Counter32 read-only current +protocolDistControlCreateTime protocolDistControlEntry.4 LastCreateTime read-only current +protocolDistControlOwner protocolDistControlEntry.5 OwnerString read-create current +protocolDistControlStatus protocolDistControlEntry.6 RowStatus read-create current +protocolDistStatsTable protocolDist.2 Aggregate not-accessible current +protocolDistStatsEntry protocolDistStatsTable.1 Aggregate not-accessible current +%ei protocolDistStatsEntry "protocolDistControlIndex protocolDirLocalIndex" +protocolDistStatsPkts protocolDistStatsEntry.1 ZeroBasedCounter32 read-only current +protocolDistStatsOctets protocolDistStatsEntry.2 ZeroBasedCounter32 read-only current +addressMapInserts addressMap.1 Counter32 read-only current +addressMapDeletes addressMap.2 Counter32 read-only current +addressMapMaxDesiredEntries addressMap.3 Integer32 read-write current +%er addressMapMaxDesiredEntries -1 2147483647 +addressMapControlTable addressMap.4 Aggregate not-accessible current +addressMapControlEntry addressMapControlTable.1 Aggregate not-accessible current +%ei addressMapControlEntry "addressMapControlIndex" +addressMapControlIndex addressMapControlEntry.1 Integer32 not-accessible current +%er addressMapControlIndex 1 65535 +addressMapControlDataSource addressMapControlEntry.2 DataSource read-create current +addressMapControlDroppedFrames addressMapControlEntry.3 Counter32 read-only current +addressMapControlOwner addressMapControlEntry.4 OwnerString read-create current +addressMapControlStatus addressMapControlEntry.5 RowStatus read-create current +addressMapTable addressMap.5 Aggregate not-accessible current +addressMapEntry addressMapTable.1 Aggregate not-accessible current +%ei addressMapEntry "addressMapTimeMark protocolDirLocalIndex addressMapNetworkAddress addressMapSource" +addressMapTimeMark addressMapEntry.1 TimeFilter not-accessible current +addressMapNetworkAddress addressMapEntry.2 OctetString not-accessible current +%er addressMapNetworkAddress 1 255 +addressMapSource addressMapEntry.3 ObjectID not-accessible current +addressMapPhysicalAddress addressMapEntry.4 OctetString read-only current +addressMapLastChange addressMapEntry.5 TimeStamp read-only current +hlHostControlTable nlHost.1 Aggregate not-accessible current +hlHostControlEntry hlHostControlTable.1 Aggregate not-accessible current +%ei hlHostControlEntry "hlHostControlIndex" +hlHostControlIndex hlHostControlEntry.1 Integer32 not-accessible current +%er hlHostControlIndex 1 65535 +hlHostControlDataSource hlHostControlEntry.2 DataSource read-create current +hlHostControlNlDroppedFrames hlHostControlEntry.3 Counter32 read-only current +hlHostControlNlInserts hlHostControlEntry.4 Counter32 read-only current +hlHostControlNlDeletes hlHostControlEntry.5 Counter32 read-only current +hlHostControlNlMaxDesiredEntries hlHostControlEntry.6 Integer32 read-create current +%er hlHostControlNlMaxDesiredEntries -1 2147483647 +hlHostControlAlDroppedFrames hlHostControlEntry.7 Counter32 read-only current +hlHostControlAlInserts hlHostControlEntry.8 Counter32 read-only current +hlHostControlAlDeletes hlHostControlEntry.9 Counter32 read-only current +hlHostControlAlMaxDesiredEntries hlHostControlEntry.10 Integer32 read-create current +%er hlHostControlAlMaxDesiredEntries -1 2147483647 +hlHostControlOwner hlHostControlEntry.11 OwnerString read-create current +hlHostControlStatus hlHostControlEntry.12 RowStatus read-create current +nlHostTable nlHost.2 Aggregate not-accessible current +nlHostEntry nlHostTable.1 Aggregate not-accessible current +%ei nlHostEntry "hlHostControlIndex nlHostTimeMark protocolDirLocalIndex nlHostAddress" +nlHostTimeMark nlHostEntry.1 TimeFilter not-accessible current +nlHostAddress nlHostEntry.2 OctetString not-accessible current +%er nlHostAddress 1 255 +nlHostInPkts nlHostEntry.3 ZeroBasedCounter32 read-only current +nlHostOutPkts nlHostEntry.4 ZeroBasedCounter32 read-only current +nlHostInOctets nlHostEntry.5 ZeroBasedCounter32 read-only current +nlHostOutOctets nlHostEntry.6 ZeroBasedCounter32 read-only current +nlHostOutMacNonUnicastPkts nlHostEntry.7 ZeroBasedCounter32 read-only current +nlHostCreateTime nlHostEntry.8 LastCreateTime read-only current +hlMatrixControlTable nlMatrix.1 Aggregate not-accessible current +hlMatrixControlEntry hlMatrixControlTable.1 Aggregate not-accessible current +%ei hlMatrixControlEntry "hlMatrixControlIndex" +hlMatrixControlIndex hlMatrixControlEntry.1 Integer32 not-accessible current +%er hlMatrixControlIndex 1 65535 +hlMatrixControlDataSource hlMatrixControlEntry.2 DataSource read-create current +hlMatrixControlNlDroppedFrames hlMatrixControlEntry.3 Counter32 read-only current +hlMatrixControlNlInserts hlMatrixControlEntry.4 Counter32 read-only current +hlMatrixControlNlDeletes hlMatrixControlEntry.5 Counter32 read-only current +hlMatrixControlNlMaxDesiredEntries hlMatrixControlEntry.6 Integer32 read-create current +%er hlMatrixControlNlMaxDesiredEntries -1 2147483647 +hlMatrixControlAlDroppedFrames hlMatrixControlEntry.7 Counter32 read-only current +hlMatrixControlAlInserts hlMatrixControlEntry.8 Counter32 read-only current +hlMatrixControlAlDeletes hlMatrixControlEntry.9 Counter32 read-only current +hlMatrixControlAlMaxDesiredEntries hlMatrixControlEntry.10 Integer32 read-create current +%er hlMatrixControlAlMaxDesiredEntries -1 2147483647 +hlMatrixControlOwner hlMatrixControlEntry.11 OwnerString read-create current +hlMatrixControlStatus hlMatrixControlEntry.12 RowStatus read-create current +nlMatrixSDTable nlMatrix.2 Aggregate not-accessible current +nlMatrixSDEntry nlMatrixSDTable.1 Aggregate not-accessible current +%ei nlMatrixSDEntry "hlMatrixControlIndex nlMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress" +nlMatrixSDTimeMark nlMatrixSDEntry.1 TimeFilter not-accessible current +nlMatrixSDSourceAddress nlMatrixSDEntry.2 OctetString not-accessible current +%er nlMatrixSDSourceAddress 1 255 +nlMatrixSDDestAddress nlMatrixSDEntry.3 OctetString not-accessible current +%er nlMatrixSDDestAddress 1 255 +nlMatrixSDPkts nlMatrixSDEntry.4 ZeroBasedCounter32 read-only current +nlMatrixSDOctets nlMatrixSDEntry.5 ZeroBasedCounter32 read-only current +nlMatrixSDCreateTime nlMatrixSDEntry.6 LastCreateTime read-only current +nlMatrixDSTable nlMatrix.3 Aggregate not-accessible current +nlMatrixDSEntry nlMatrixDSTable.1 Aggregate not-accessible current +%ei nlMatrixDSEntry "hlMatrixControlIndex nlMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress" +nlMatrixDSTimeMark nlMatrixDSEntry.1 TimeFilter not-accessible current +nlMatrixDSSourceAddress nlMatrixDSEntry.2 OctetString not-accessible current +%er nlMatrixDSSourceAddress 1 255 +nlMatrixDSDestAddress nlMatrixDSEntry.3 OctetString not-accessible current +%er nlMatrixDSDestAddress 1 255 +nlMatrixDSPkts nlMatrixDSEntry.4 ZeroBasedCounter32 read-only current +nlMatrixDSOctets nlMatrixDSEntry.5 ZeroBasedCounter32 read-only current +nlMatrixDSCreateTime nlMatrixDSEntry.6 LastCreateTime read-only current +nlMatrixTopNControlTable nlMatrix.4 Aggregate not-accessible current +nlMatrixTopNControlEntry nlMatrixTopNControlTable.1 Aggregate not-accessible current +%ei nlMatrixTopNControlEntry "nlMatrixTopNControlIndex" +nlMatrixTopNControlIndex nlMatrixTopNControlEntry.1 Integer32 not-accessible current +%er nlMatrixTopNControlIndex 1 65535 +nlMatrixTopNControlMatrixIndex nlMatrixTopNControlEntry.2 Integer32 read-create current +%er nlMatrixTopNControlMatrixIndex 1 65535 +nlMatrixTopNControlRateBase nlMatrixTopNControlEntry.3 INTEGER read-create current +%ev nlMatrixTopNControlRateBase nlMatrixTopNPkts 1 +%ev nlMatrixTopNControlRateBase nlMatrixTopNOctets 2 +%ev nlMatrixTopNControlRateBase nlMatrixTopNHighCapacityPkts 3 +%ev nlMatrixTopNControlRateBase nlMatrixTopNHighCapacityOctets 4 +nlMatrixTopNControlTimeRemaining nlMatrixTopNControlEntry.4 Integer32 read-create current +%er nlMatrixTopNControlTimeRemaining 0 2147483647 +nlMatrixTopNControlGeneratedReports nlMatrixTopNControlEntry.5 Counter32 read-only current +nlMatrixTopNControlDuration nlMatrixTopNControlEntry.6 Integer32 read-only current +nlMatrixTopNControlRequestedSize nlMatrixTopNControlEntry.7 Integer32 read-create current +%er nlMatrixTopNControlRequestedSize 0 2147483647 +nlMatrixTopNControlGrantedSize nlMatrixTopNControlEntry.8 Integer32 read-only current +%er nlMatrixTopNControlGrantedSize 0 2147483647 +nlMatrixTopNControlStartTime nlMatrixTopNControlEntry.9 TimeStamp read-only current +nlMatrixTopNControlOwner nlMatrixTopNControlEntry.10 OwnerString read-create current +nlMatrixTopNControlStatus nlMatrixTopNControlEntry.11 RowStatus read-create current +nlMatrixTopNTable nlMatrix.5 Aggregate not-accessible current +nlMatrixTopNEntry nlMatrixTopNTable.1 Aggregate not-accessible current +%ei nlMatrixTopNEntry "nlMatrixTopNControlIndex nlMatrixTopNIndex" +nlMatrixTopNIndex nlMatrixTopNEntry.1 Integer32 not-accessible current +%er nlMatrixTopNIndex 1 65535 +nlMatrixTopNProtocolDirLocalIndex nlMatrixTopNEntry.2 Integer32 read-only current +%er nlMatrixTopNProtocolDirLocalIndex 1 2147483647 +nlMatrixTopNSourceAddress nlMatrixTopNEntry.3 OctetString read-only current +%er nlMatrixTopNSourceAddress 1 255 +nlMatrixTopNDestAddress nlMatrixTopNEntry.4 OctetString read-only current +%er nlMatrixTopNDestAddress 1 255 +nlMatrixTopNPktRate nlMatrixTopNEntry.5 Gauge32 read-only current +nlMatrixTopNReversePktRate nlMatrixTopNEntry.6 Gauge32 read-only current +nlMatrixTopNOctetRate nlMatrixTopNEntry.7 Gauge32 read-only current +nlMatrixTopNReverseOctetRate nlMatrixTopNEntry.8 Gauge32 read-only current +alHostTable alHost.1 Aggregate not-accessible current +alHostEntry alHostTable.1 Aggregate not-accessible current +%ei alHostEntry "hlHostControlIndex alHostTimeMark protocolDirLocalIndex nlHostAddress protocolDirLocalIndex" +alHostTimeMark alHostEntry.1 TimeFilter not-accessible current +alHostInPkts alHostEntry.2 ZeroBasedCounter32 read-only current +alHostOutPkts alHostEntry.3 ZeroBasedCounter32 read-only current +alHostInOctets alHostEntry.4 ZeroBasedCounter32 read-only current +alHostOutOctets alHostEntry.5 ZeroBasedCounter32 read-only current +alHostCreateTime alHostEntry.6 LastCreateTime read-only current +alMatrixSDTable alMatrix.1 Aggregate not-accessible current +alMatrixSDEntry alMatrixSDTable.1 Aggregate not-accessible current +%ei alMatrixSDEntry "hlMatrixControlIndex alMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress protocolDirLocalIndex" +alMatrixSDTimeMark alMatrixSDEntry.1 TimeFilter not-accessible current +alMatrixSDPkts alMatrixSDEntry.2 ZeroBasedCounter32 read-only current +alMatrixSDOctets alMatrixSDEntry.3 ZeroBasedCounter32 read-only current +alMatrixSDCreateTime alMatrixSDEntry.4 LastCreateTime read-only current +alMatrixDSTable alMatrix.2 Aggregate not-accessible current +alMatrixDSEntry alMatrixDSTable.1 Aggregate not-accessible current +%ei alMatrixDSEntry "hlMatrixControlIndex alMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress protocolDirLocalIndex" +alMatrixDSTimeMark alMatrixDSEntry.1 TimeFilter not-accessible current +alMatrixDSPkts alMatrixDSEntry.2 ZeroBasedCounter32 read-only current +alMatrixDSOctets alMatrixDSEntry.3 ZeroBasedCounter32 read-only current +alMatrixDSCreateTime alMatrixDSEntry.4 LastCreateTime read-only current +alMatrixTopNControlTable alMatrix.3 Aggregate not-accessible current +alMatrixTopNControlEntry alMatrixTopNControlTable.1 Aggregate not-accessible current +%ei alMatrixTopNControlEntry "alMatrixTopNControlIndex" +alMatrixTopNControlIndex alMatrixTopNControlEntry.1 Integer32 not-accessible current +%er alMatrixTopNControlIndex 1 65535 +alMatrixTopNControlMatrixIndex alMatrixTopNControlEntry.2 Integer32 read-create current +%er alMatrixTopNControlMatrixIndex 1 65535 +alMatrixTopNControlRateBase alMatrixTopNControlEntry.3 INTEGER read-create current +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsPkts 1 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsOctets 2 +%ev alMatrixTopNControlRateBase alMatrixTopNAllPkts 3 +%ev alMatrixTopNControlRateBase alMatrixTopNAllOctets 4 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsHighCapacityPkts 5 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsHighCapacityOctets 6 +%ev alMatrixTopNControlRateBase alMatrixTopNAllHighCapacityPkts 7 +%ev alMatrixTopNControlRateBase alMatrixTopNAllHighCapacityOctets 8 +alMatrixTopNControlTimeRemaining alMatrixTopNControlEntry.4 Integer32 read-create current +%er alMatrixTopNControlTimeRemaining 0 2147483647 +alMatrixTopNControlGeneratedReports alMatrixTopNControlEntry.5 Counter32 read-only current +alMatrixTopNControlDuration alMatrixTopNControlEntry.6 Integer32 read-only current +alMatrixTopNControlRequestedSize alMatrixTopNControlEntry.7 Integer32 read-create current +%er alMatrixTopNControlRequestedSize 0 2147483647 +alMatrixTopNControlGrantedSize alMatrixTopNControlEntry.8 Integer32 read-only current +%er alMatrixTopNControlGrantedSize 0 2147483647 +alMatrixTopNControlStartTime alMatrixTopNControlEntry.9 TimeStamp read-only current +alMatrixTopNControlOwner alMatrixTopNControlEntry.10 OwnerString read-create current +alMatrixTopNControlStatus alMatrixTopNControlEntry.11 RowStatus read-create current +alMatrixTopNTable alMatrix.4 Aggregate not-accessible current +alMatrixTopNEntry alMatrixTopNTable.1 Aggregate not-accessible current +%ei alMatrixTopNEntry "alMatrixTopNControlIndex alMatrixTopNIndex" +alMatrixTopNIndex alMatrixTopNEntry.1 Integer32 not-accessible current +%er alMatrixTopNIndex 1 65535 +alMatrixTopNProtocolDirLocalIndex alMatrixTopNEntry.2 Integer32 read-only current +%er alMatrixTopNProtocolDirLocalIndex 1 2147483647 +alMatrixTopNSourceAddress alMatrixTopNEntry.3 OctetString read-only current +%er alMatrixTopNSourceAddress 1 255 +alMatrixTopNDestAddress alMatrixTopNEntry.4 OctetString read-only current +%er alMatrixTopNDestAddress 1 255 +alMatrixTopNAppProtocolDirLocalIndex alMatrixTopNEntry.5 Integer32 read-only current +%er alMatrixTopNAppProtocolDirLocalIndex 1 2147483647 +alMatrixTopNPktRate alMatrixTopNEntry.6 Gauge32 read-only current +alMatrixTopNReversePktRate alMatrixTopNEntry.7 Gauge32 read-only current +alMatrixTopNOctetRate alMatrixTopNEntry.8 Gauge32 read-only current +alMatrixTopNReverseOctetRate alMatrixTopNEntry.9 Gauge32 read-only current +usrHistoryControlTable usrHistory.1 Aggregate not-accessible current +usrHistoryControlEntry usrHistoryControlTable.1 Aggregate not-accessible current +%ei usrHistoryControlEntry "usrHistoryControlIndex" +usrHistoryControlIndex usrHistoryControlEntry.1 Integer32 not-accessible current +%er usrHistoryControlIndex 1 65535 +usrHistoryControlObjects usrHistoryControlEntry.2 Integer32 read-create current +%er usrHistoryControlObjects 1 65535 +usrHistoryControlBucketsRequested usrHistoryControlEntry.3 Integer32 read-create current +%er usrHistoryControlBucketsRequested 1 65535 +usrHistoryControlBucketsGranted usrHistoryControlEntry.4 Integer32 read-only current +%er usrHistoryControlBucketsGranted 1 65535 +usrHistoryControlInterval usrHistoryControlEntry.5 Integer32 read-create current +%er usrHistoryControlInterval 1 2147483647 +usrHistoryControlOwner usrHistoryControlEntry.6 OwnerString read-create current +usrHistoryControlStatus usrHistoryControlEntry.7 RowStatus read-create current +usrHistoryObjectTable usrHistory.2 Aggregate not-accessible current +usrHistoryObjectEntry usrHistoryObjectTable.1 Aggregate not-accessible current +%ei usrHistoryObjectEntry "usrHistoryControlIndex usrHistoryObjectIndex" +usrHistoryObjectIndex usrHistoryObjectEntry.1 Integer32 not-accessible current +%er usrHistoryObjectIndex 1 65535 +usrHistoryObjectVariable usrHistoryObjectEntry.2 ObjectID read-create current +usrHistoryObjectSampleType usrHistoryObjectEntry.3 INTEGER read-create current +%ev usrHistoryObjectSampleType absoluteValue 1 +%ev usrHistoryObjectSampleType deltaValue 2 +usrHistoryTable usrHistory.3 Aggregate not-accessible current +usrHistoryEntry usrHistoryTable.1 Aggregate not-accessible current +%ei usrHistoryEntry "usrHistoryControlIndex usrHistorySampleIndex usrHistoryObjectIndex" +usrHistorySampleIndex usrHistoryEntry.1 Integer32 not-accessible current +%er usrHistorySampleIndex 1 2147483647 +usrHistoryIntervalStart usrHistoryEntry.2 TimeStamp read-only current +usrHistoryIntervalEnd usrHistoryEntry.3 TimeStamp read-only current +usrHistoryAbsValue usrHistoryEntry.4 Gauge32 read-only current +usrHistoryValStatus usrHistoryEntry.5 INTEGER read-only current +%ev usrHistoryValStatus valueNotAvailable 1 +%ev usrHistoryValStatus valuePositive 2 +%ev usrHistoryValStatus valueNegative 3 +probeCapabilities probeConfig.1 Bits read-only current +%ev probeCapabilities etherStats 0 +%ev probeCapabilities historyControl 1 +%ev probeCapabilities etherHistory 2 +%ev probeCapabilities alarm 3 +%ev probeCapabilities hosts 4 +%ev probeCapabilities hostTopN 5 +%ev probeCapabilities matrix 6 +%ev probeCapabilities filter 7 +%ev probeCapabilities capture 8 +%ev probeCapabilities event 9 +%ev probeCapabilities tokenRingMLStats 10 +%ev probeCapabilities tokenRingPStats 11 +%ev probeCapabilities tokenRingMLHistory 12 +%ev probeCapabilities tokenRingPHistory 13 +%ev probeCapabilities ringStation 14 +%ev probeCapabilities ringStationOrder 15 +%ev probeCapabilities ringStationConfig 16 +%ev probeCapabilities sourceRouting 17 +%ev probeCapabilities protocolDirectory 18 +%ev probeCapabilities protocolDistribution 19 +%ev probeCapabilities addressMapping 20 +%ev probeCapabilities nlHost 21 +%ev probeCapabilities nlMatrix 22 +%ev probeCapabilities alHost 23 +%ev probeCapabilities alMatrix 24 +%ev probeCapabilities usrHistory 25 +%ev probeCapabilities probeConfig 26 +probeSoftwareRev probeConfig.2 DisplayString read-only current +%er probeSoftwareRev 0 15 +probeHardwareRev probeConfig.3 DisplayString read-only current +%er probeHardwareRev 0 31 +probeDateTime probeConfig.4 OctetString read-write current +%er probeDateTime 0 0 +%er probeDateTime 8 8 +%er probeDateTime 11 11 +probeResetControl probeConfig.5 INTEGER read-write current +%ev probeResetControl running 1 +%ev probeResetControl warmBoot 2 +%ev probeResetControl coldBoot 3 +probeDownloadFile probeConfig.6 DisplayString read-write deprecated +%er probeDownloadFile 0 127 +probeDownloadTFTPServer probeConfig.7 IpAddress read-write deprecated +probeDownloadAction probeConfig.8 INTEGER read-write deprecated +%ev probeDownloadAction notDownloading 1 +%ev probeDownloadAction downloadToPROM 2 +%ev probeDownloadAction downloadToRAM 3 +probeDownloadStatus probeConfig.9 INTEGER read-only deprecated +%ev probeDownloadStatus downloadSuccess 1 +%ev probeDownloadStatus downloadStatusUnknown 2 +%ev probeDownloadStatus downloadGeneralError 3 +%ev probeDownloadStatus downloadNoResponseFromServer 4 +%ev probeDownloadStatus downloadChecksumError 5 +%ev probeDownloadStatus downloadIncompatibleImage 6 +%ev probeDownloadStatus downloadTftpFileNotFound 7 +%ev probeDownloadStatus downloadTftpAccessViolation 8 +serialConfigTable probeConfig.10 Aggregate not-accessible deprecated +serialConfigEntry serialConfigTable.1 Aggregate not-accessible deprecated +%ei serialConfigEntry "ifIndex" +serialMode serialConfigEntry.1 INTEGER read-create deprecated +%ev serialMode direct 1 +%ev serialMode modem 2 +serialProtocol serialConfigEntry.2 INTEGER read-create deprecated +%ev serialProtocol other 1 +%ev serialProtocol slip 2 +%ev serialProtocol ppp 3 +serialTimeout serialConfigEntry.3 Integer32 read-create deprecated +%er serialTimeout 1 65535 +serialModemInitString serialConfigEntry.4 ControlString read-create deprecated +%er serialModemInitString 0 255 +serialModemHangUpString serialConfigEntry.5 ControlString read-create deprecated +%er serialModemHangUpString 0 255 +serialModemConnectResp serialConfigEntry.6 DisplayString read-create deprecated +%er serialModemConnectResp 0 255 +serialModemNoConnectResp serialConfigEntry.7 DisplayString read-create deprecated +%er serialModemNoConnectResp 0 255 +serialDialoutTimeout serialConfigEntry.8 Integer32 read-create deprecated +%er serialDialoutTimeout 1 65535 +serialStatus serialConfigEntry.9 RowStatus read-create deprecated +netConfigTable probeConfig.11 Aggregate not-accessible deprecated +netConfigEntry netConfigTable.1 Aggregate not-accessible deprecated +%ei netConfigEntry "ifIndex" +netConfigIPAddress netConfigEntry.1 IpAddress read-create deprecated +netConfigSubnetMask netConfigEntry.2 IpAddress read-create deprecated +netConfigStatus netConfigEntry.3 RowStatus read-create deprecated +netDefaultGateway probeConfig.12 IpAddress read-write deprecated +trapDestTable probeConfig.13 Aggregate not-accessible deprecated +trapDestEntry trapDestTable.1 Aggregate not-accessible deprecated +%ei trapDestEntry "trapDestIndex" +trapDestIndex trapDestEntry.1 Integer32 not-accessible deprecated +%er trapDestIndex 1 65535 +trapDestCommunity trapDestEntry.2 OctetString read-create deprecated +%er trapDestCommunity 0 127 +trapDestProtocol trapDestEntry.3 INTEGER read-create deprecated +%ev trapDestProtocol ip 1 +%ev trapDestProtocol ipx 2 +trapDestAddress trapDestEntry.4 OctetString read-create deprecated +trapDestOwner trapDestEntry.5 OwnerString read-create deprecated +trapDestStatus trapDestEntry.6 RowStatus read-create deprecated +serialConnectionTable probeConfig.14 Aggregate not-accessible deprecated +serialConnectionEntry serialConnectionTable.1 Aggregate not-accessible deprecated +%ei serialConnectionEntry "serialConnectIndex" +serialConnectIndex serialConnectionEntry.1 Integer32 not-accessible deprecated +%er serialConnectIndex 1 65535 +serialConnectDestIpAddress serialConnectionEntry.2 IpAddress read-create deprecated +serialConnectType serialConnectionEntry.3 INTEGER read-create deprecated +%ev serialConnectType direct 1 +%ev serialConnectType modem 2 +%ev serialConnectType switch 3 +%ev serialConnectType modemSwitch 4 +serialConnectDialString serialConnectionEntry.4 ControlString read-create deprecated +%er serialConnectDialString 0 255 +serialConnectSwitchConnectSeq serialConnectionEntry.5 ControlString read-create deprecated +%er serialConnectSwitchConnectSeq 0 255 +serialConnectSwitchDisconnectSeq serialConnectionEntry.6 ControlString read-create deprecated +%er serialConnectSwitchDisconnectSeq 0 255 +serialConnectSwitchResetSeq serialConnectionEntry.7 ControlString read-create deprecated +%er serialConnectSwitchResetSeq 0 255 +serialConnectOwner serialConnectionEntry.8 OwnerString read-create deprecated +serialConnectStatus serialConnectionEntry.9 RowStatus read-create deprecated + +protocolDirectoryGroup rmon2MIBGroups.1 +%n0 protocolDirectoryGroup object-group +protocolDistributionGroup rmon2MIBGroups.2 +%n0 protocolDistributionGroup object-group +addressMapGroup rmon2MIBGroups.3 +%n0 addressMapGroup object-group +nlHostGroup rmon2MIBGroups.4 +%n0 nlHostGroup object-group +nlMatrixGroup rmon2MIBGroups.5 +%n0 nlMatrixGroup object-group +alHostGroup rmon2MIBGroups.6 +%n0 alHostGroup object-group +alMatrixGroup rmon2MIBGroups.7 +%n0 alMatrixGroup object-group +usrHistoryGroup rmon2MIBGroups.8 +%n0 usrHistoryGroup object-group +probeInformationGroup rmon2MIBGroups.9 +%n0 probeInformationGroup object-group +probeConfigurationGroup rmon2MIBGroups.10 +%n0 probeConfigurationGroup object-group +rmon1EnhancementGroup rmon2MIBGroups.11 +%n0 rmon1EnhancementGroup object-group +rmon1EthernetEnhancementGroup rmon2MIBGroups.12 +%n0 rmon1EthernetEnhancementGroup object-group +rmon1TokenRingEnhancementGroup rmon2MIBGroups.13 +%n0 rmon1TokenRingEnhancementGroup object-group + +rmon2MIBCompliance rmon2MIBCompliances.1 +%n0 rmon2MIBCompliance module-compliance +rmon2MIBApplicationLayerCompliance rmon2MIBCompliances.2 +%n0 rmon2MIBApplicationLayerCompliance module-compliance + diff --git a/test/dumps/mosy/SNMPv2-MIB b/test/dumps/mosy/SNMPv2-MIB new file mode 100644 index 0000000..5ef4cb8 --- /dev/null +++ b/test/dumps/mosy/SNMPv2-MIB @@ -0,0 +1,112 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from SNMPv2-MIB + +snmpMIB snmpModules.1 +%n0 snmpMIB module-identity + +system mib-2.1 +%n0 system object-id +snmp mib-2.11 +%n0 snmp object-id +snmpMIBObjects snmpMIB.1 +%n0 snmpMIBObjects object-id +snmpTrap snmpMIBObjects.4 +%n0 snmpTrap object-id +snmpTraps snmpMIBObjects.5 +%n0 snmpTraps object-id +snmpSet snmpMIBObjects.6 +%n0 snmpSet object-id +snmpMIBConformance snmpMIB.2 +%n0 snmpMIBConformance object-id +snmpMIBCompliances snmpMIBConformance.1 +%n0 snmpMIBCompliances object-id +snmpMIBGroups snmpMIBConformance.2 +%n0 snmpMIBGroups object-id + +sysDescr system.1 DisplayString read-only current +%er sysDescr 0 255 +sysObjectID system.2 ObjectID read-only current +sysUpTime system.3 TimeTicks read-only current +sysContact system.4 DisplayString read-write current +%er sysContact 0 255 +sysName system.5 DisplayString read-write current +%er sysName 0 255 +sysLocation system.6 DisplayString read-write current +%er sysLocation 0 255 +sysServices system.7 Integer32 read-only current +%er sysServices 0 127 +sysORLastChange system.8 TimeStamp read-only current +sysORTable system.9 Aggregate not-accessible current +sysOREntry sysORTable.1 Aggregate not-accessible current +%ei sysOREntry "sysORIndex" +sysORIndex sysOREntry.1 Integer32 not-accessible current +%er sysORIndex 1 2147483647 +sysORID sysOREntry.2 ObjectID read-only current +sysORDescr sysOREntry.3 DisplayString read-only current +sysORUpTime sysOREntry.4 TimeStamp read-only current +snmpInPkts snmp.1 Counter32 read-only current +snmpOutPkts snmp.2 Counter32 read-only obsolete +snmpInBadVersions snmp.3 Counter32 read-only current +snmpInBadCommunityNames snmp.4 Counter32 read-only current +snmpInBadCommunityUses snmp.5 Counter32 read-only current +snmpInASNParseErrs snmp.6 Counter32 read-only current +snmpInTooBigs snmp.8 Counter32 read-only obsolete +snmpInNoSuchNames snmp.9 Counter32 read-only obsolete +snmpInBadValues snmp.10 Counter32 read-only obsolete +snmpInReadOnlys snmp.11 Counter32 read-only obsolete +snmpInGenErrs snmp.12 Counter32 read-only obsolete +snmpInTotalReqVars snmp.13 Counter32 read-only obsolete +snmpInTotalSetVars snmp.14 Counter32 read-only obsolete +snmpInGetRequests snmp.15 Counter32 read-only obsolete +snmpInGetNexts snmp.16 Counter32 read-only obsolete +snmpInSetRequests snmp.17 Counter32 read-only obsolete +snmpInGetResponses snmp.18 Counter32 read-only obsolete +snmpInTraps snmp.19 Counter32 read-only obsolete +snmpOutTooBigs snmp.20 Counter32 read-only obsolete +snmpOutNoSuchNames snmp.21 Counter32 read-only obsolete +snmpOutBadValues snmp.22 Counter32 read-only obsolete +snmpOutGenErrs snmp.24 Counter32 read-only obsolete +snmpOutGetRequests snmp.25 Counter32 read-only obsolete +snmpOutGetNexts snmp.26 Counter32 read-only obsolete +snmpOutSetRequests snmp.27 Counter32 read-only obsolete +snmpOutGetResponses snmp.28 Counter32 read-only obsolete +snmpOutTraps snmp.29 Counter32 read-only obsolete +snmpEnableAuthenTraps snmp.30 INTEGER read-write current +%ev snmpEnableAuthenTraps enabled 1 +%ev snmpEnableAuthenTraps disabled 2 +snmpSilentDrops snmp.31 Counter32 read-only current +snmpProxyDrops snmp.32 Counter32 read-only current +snmpTrapOID snmpTrap.1 ObjectID accessible-for-notify current +snmpTrapEnterprise snmpTrap.3 ObjectID accessible-for-notify current +snmpSetSerialNo snmpSet.1 TestAndIncr read-write current + +coldStart snmpTraps.1 +%n0 coldStart notification +warmStart snmpTraps.2 +%n0 warmStart notification +authenticationFailure snmpTraps.5 +%n0 authenticationFailure notification + +snmpSetGroup snmpMIBGroups.5 +%n0 snmpSetGroup object-group +systemGroup snmpMIBGroups.6 +%n0 systemGroup object-group +snmpBasicNotificationsGroup snmpMIBGroups.7 +%n0 snmpBasicNotificationsGroup notification-group +snmpGroup snmpMIBGroups.8 +%n0 snmpGroup object-group +snmpCommunityGroup snmpMIBGroups.9 +%n0 snmpCommunityGroup object-group +snmpObsoleteGroup snmpMIBGroups.10 +%n0 snmpObsoleteGroup object-group +snmpWarmStartNotificationGroup snmpMIBGroups.11 +%n0 snmpWarmStartNotificationGroup notification-group +snmpNotificationGroup snmpMIBGroups.12 +%n0 snmpNotificationGroup object-group + +snmpBasicCompliance snmpMIBCompliances.2 +%n0 snmpBasicCompliance module-compliance +snmpBasicComplianceRev2 snmpMIBCompliances.3 +%n0 snmpBasicComplianceRev2 module-compliance + diff --git a/test/dumps/netsnmp/Makefile.am b/test/dumps/netsnmp/Makefile.am new file mode 100644 index 0000000..45a9060 --- /dev/null +++ b/test/dumps/netsnmp/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1038 2000-11-13 11:39:43Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/netsnmp/Makefile.in b/test/dumps/netsnmp/Makefile.in new file mode 100644 index 0000000..c68628c --- /dev/null +++ b/test/dumps/netsnmp/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1038 2000-11-13 11:39:43Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/netsnmp +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/netsnmp/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/netsnmp/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/netsnmp/if-mib-agt-stub.c b/test/dumps/netsnmp/if-mib-agt-stub.c new file mode 100644 index 0000000..50c0172 --- /dev/null +++ b/test/dumps/netsnmp/if-mib-agt-stub.c @@ -0,0 +1,794 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "if-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_interfaces_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMIBObjects_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifXEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifStackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifTestEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifRcvAddressEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_ifAdminStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifLinkUpDownTrapEnable_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifPromiscuousMode_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifAlias_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifStackStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestId_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifRcvAddressStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifRcvAddressType_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define IFNUMBER 1 + +static oid interfaces_base[] = {1, 3, 6, 1, 2, 1, 2}; + +struct variable interfaces_variables[] = { + { IFNUMBER, ASN_INTEGER, RONLY, read_interfaces_stub, 1, {1} }, +}; + +#define IFINDEX 1 +#define IFDESCR 2 +#define IFTYPE 3 +#define IFMTU 4 +#define IFSPEED 5 +#define IFPHYSADDRESS 6 +#define IFADMINSTATUS 7 +#define IFOPERSTATUS 8 +#define IFLASTCHANGE 9 +#define IFINOCTETS 10 +#define IFINUCASTPKTS 11 +#define IFINNUCASTPKTS 12 +#define IFINDISCARDS 13 +#define IFINERRORS 14 +#define IFINUNKNOWNPROTOS 15 +#define IFOUTOCTETS 16 +#define IFOUTUCASTPKTS 17 +#define IFOUTNUCASTPKTS 18 +#define IFOUTDISCARDS 19 +#define IFOUTERRORS 20 +#define IFOUTQLEN 21 +#define IFSPECIFIC 22 + +static oid ifEntry_base[] = {1, 3, 6, 1, 2, 1, 2, 2, 1}; + +struct variable ifEntry_variables[] = { + { IFINDEX, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {1} }, + { IFDESCR, ASN_OCTET_STR, RONLY, read_ifEntry_stub, 1, {2} }, + { IFTYPE, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {3} }, + { IFMTU, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {4} }, + { IFSPEED, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {5} }, + { IFPHYSADDRESS, ASN_OCTET_STR, RONLY, read_ifEntry_stub, 1, {6} }, + { IFADMINSTATUS, ASN_INTEGER, RWRITE, read_ifEntry_stub, 1, {7} }, + { IFOPERSTATUS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {8} }, + { IFLASTCHANGE, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {9} }, + { IFINOCTETS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {10} }, + { IFINUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {11} }, + { IFINNUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {12} }, + { IFINDISCARDS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {13} }, + { IFINERRORS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {14} }, + { IFINUNKNOWNPROTOS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {15} }, + { IFOUTOCTETS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {16} }, + { IFOUTUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {17} }, + { IFOUTNUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {18} }, + { IFOUTDISCARDS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {19} }, + { IFOUTERRORS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {20} }, + { IFOUTQLEN, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {21} }, + { IFSPECIFIC, ASN_OBJECT_ID, RONLY, read_ifEntry_stub, 1, {22} }, +}; + +#define IFTABLELASTCHANGE 5 +#define IFSTACKLASTCHANGE 6 + +static oid ifMIBObjects_base[] = {1, 3, 6, 1, 2, 1, 31, 1}; + +struct variable ifMIBObjects_variables[] = { + { IFTABLELASTCHANGE, ASN_INTEGER, RONLY, read_ifMIBObjects_stub, 1, {5} }, + { IFSTACKLASTCHANGE, ASN_INTEGER, RONLY, read_ifMIBObjects_stub, 1, {6} }, +}; + +#define IFNAME 1 +#define IFINMULTICASTPKTS 2 +#define IFINBROADCASTPKTS 3 +#define IFOUTMULTICASTPKTS 4 +#define IFOUTBROADCASTPKTS 5 +#define IFHCINOCTETS 6 +#define IFHCINUCASTPKTS 7 +#define IFHCINMULTICASTPKTS 8 +#define IFHCINBROADCASTPKTS 9 +#define IFHCOUTOCTETS 10 +#define IFHCOUTUCASTPKTS 11 +#define IFHCOUTMULTICASTPKTS 12 +#define IFHCOUTBROADCASTPKTS 13 +#define IFLINKUPDOWNTRAPENABLE 14 +#define IFHIGHSPEED 15 +#define IFPROMISCUOUSMODE 16 +#define IFCONNECTORPRESENT 17 +#define IFALIAS 18 +#define IFCOUNTERDISCONTINUITYTIME 19 + +static oid ifXEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1}; + +struct variable ifXEntry_variables[] = { + { IFNAME, ASN_OCTET_STR, RONLY, read_ifXEntry_stub, 1, {1} }, + { IFINMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {2} }, + { IFINBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {3} }, + { IFOUTMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {4} }, + { IFOUTBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {5} }, + { IFHCINOCTETS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {6} }, + { IFHCINUCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {7} }, + { IFHCINMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {8} }, + { IFHCINBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {9} }, + { IFHCOUTOCTETS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {10} }, + { IFHCOUTUCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {11} }, + { IFHCOUTMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {12} }, + { IFHCOUTBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {13} }, + { IFLINKUPDOWNTRAPENABLE, ASN_INTEGER, RWRITE, read_ifXEntry_stub, 1, {14} }, + { IFHIGHSPEED, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {15} }, + { IFPROMISCUOUSMODE, ASN_INTEGER, RWRITE, read_ifXEntry_stub, 1, {16} }, + { IFCONNECTORPRESENT, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {17} }, + { IFALIAS, ASN_OCTET_STR, RWRITE, read_ifXEntry_stub, 1, {18} }, + { IFCOUNTERDISCONTINUITYTIME, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {19} }, +}; + +#define IFSTACKSTATUS 3 + +static oid ifStackEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1}; + +struct variable ifStackEntry_variables[] = { + { IFSTACKSTATUS, ASN_INTEGER, RWRITE, read_ifStackEntry_stub, 1, {3} }, +}; + +#define IFTESTID 1 +#define IFTESTSTATUS 2 +#define IFTESTTYPE 3 +#define IFTESTRESULT 4 +#define IFTESTCODE 5 +#define IFTESTOWNER 6 + +static oid ifTestEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1}; + +struct variable ifTestEntry_variables[] = { + { IFTESTID, ASN_INTEGER, RWRITE, read_ifTestEntry_stub, 1, {1} }, + { IFTESTSTATUS, ASN_INTEGER, RWRITE, read_ifTestEntry_stub, 1, {2} }, + { IFTESTTYPE, ASN_OBJECT_ID, RWRITE, read_ifTestEntry_stub, 1, {3} }, + { IFTESTRESULT, ASN_INTEGER, RONLY, read_ifTestEntry_stub, 1, {4} }, + { IFTESTCODE, ASN_OBJECT_ID, RONLY, read_ifTestEntry_stub, 1, {5} }, + { IFTESTOWNER, ASN_OCTET_STR, RWRITE, read_ifTestEntry_stub, 1, {6} }, +}; + +#define IFRCVADDRESSSTATUS 2 +#define IFRCVADDRESSTYPE 3 + +static oid ifRcvAddressEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1}; + +struct variable ifRcvAddressEntry_variables[] = { + { IFRCVADDRESSSTATUS, ASN_INTEGER, RWRITE, read_ifRcvAddressEntry_stub, 1, {2} }, + { IFRCVADDRESSTYPE, ASN_INTEGER, RWRITE, read_ifRcvAddressEntry_stub, 1, {3} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_interfaces() +{ + return register_mib("interfaces", + interfaces_variables, + sizeof(struct variable), + sizeof(interfaces_variables)/sizeof(struct variable), + interfaces_base, + sizeof(interfaces_base)/sizeof(oid)); +}; + + +int register_ifEntry() +{ + return register_mib("ifEntry", + ifEntry_variables, + sizeof(struct variable), + sizeof(ifEntry_variables)/sizeof(struct variable), + ifEntry_base, + sizeof(ifEntry_base)/sizeof(oid)); +}; + + +int register_ifMIBObjects() +{ + return register_mib("ifMIBObjects", + ifMIBObjects_variables, + sizeof(struct variable), + sizeof(ifMIBObjects_variables)/sizeof(struct variable), + ifMIBObjects_base, + sizeof(ifMIBObjects_base)/sizeof(oid)); +}; + + +int register_ifXEntry() +{ + return register_mib("ifXEntry", + ifXEntry_variables, + sizeof(struct variable), + sizeof(ifXEntry_variables)/sizeof(struct variable), + ifXEntry_base, + sizeof(ifXEntry_base)/sizeof(oid)); +}; + + +int register_ifStackEntry() +{ + return register_mib("ifStackEntry", + ifStackEntry_variables, + sizeof(struct variable), + sizeof(ifStackEntry_variables)/sizeof(struct variable), + ifStackEntry_base, + sizeof(ifStackEntry_base)/sizeof(oid)); +}; + + +int register_ifTestEntry() +{ + return register_mib("ifTestEntry", + ifTestEntry_variables, + sizeof(struct variable), + sizeof(ifTestEntry_variables)/sizeof(struct variable), + ifTestEntry_base, + sizeof(ifTestEntry_base)/sizeof(oid)); +}; + + +int register_ifRcvAddressEntry() +{ + return register_mib("ifRcvAddressEntry", + ifRcvAddressEntry_variables, + sizeof(struct variable), + sizeof(ifRcvAddressEntry_variables)/sizeof(struct variable), + ifRcvAddressEntry_base, + sizeof(ifRcvAddressEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_interfaces_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static interfaces_t interfaces; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_interfaces(&interfaces); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFNUMBER: + return (unsigned char *) &interfaces.ifNumber; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifEntry_t ifEntry; + + /* call the user supplied function to retrieve values */ + + read_ifEntry(&ifEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFINDEX: + return (unsigned char *) &ifEntry.ifIndex; + + case IFDESCR: + *var_len = ifEntry._ifDescrLength; + return (unsigned char *) ifEntry.ifDescr; + + case IFTYPE: + return (unsigned char *) &ifEntry.ifType; + + case IFMTU: + return (unsigned char *) &ifEntry.ifMtu; + + case IFSPEED: + return (unsigned char *) &ifEntry.ifSpeed; + + case IFPHYSADDRESS: + *var_len = ifEntry._ifPhysAddressLength; + return (unsigned char *) ifEntry.ifPhysAddress; + + case IFADMINSTATUS: + return (unsigned char *) &ifEntry.ifAdminStatus; + + case IFOPERSTATUS: + return (unsigned char *) &ifEntry.ifOperStatus; + + case IFLASTCHANGE: + return (unsigned char *) &ifEntry.ifLastChange; + + case IFINOCTETS: + return (unsigned char *) &ifEntry.ifInOctets; + + case IFINUCASTPKTS: + return (unsigned char *) &ifEntry.ifInUcastPkts; + + case IFINNUCASTPKTS: + return (unsigned char *) &ifEntry.ifInNUcastPkts; + + case IFINDISCARDS: + return (unsigned char *) &ifEntry.ifInDiscards; + + case IFINERRORS: + return (unsigned char *) &ifEntry.ifInErrors; + + case IFINUNKNOWNPROTOS: + return (unsigned char *) &ifEntry.ifInUnknownProtos; + + case IFOUTOCTETS: + return (unsigned char *) &ifEntry.ifOutOctets; + + case IFOUTUCASTPKTS: + return (unsigned char *) &ifEntry.ifOutUcastPkts; + + case IFOUTNUCASTPKTS: + return (unsigned char *) &ifEntry.ifOutNUcastPkts; + + case IFOUTDISCARDS: + return (unsigned char *) &ifEntry.ifOutDiscards; + + case IFOUTERRORS: + return (unsigned char *) &ifEntry.ifOutErrors; + + case IFOUTQLEN: + return (unsigned char *) &ifEntry.ifOutQLen; + + case IFSPECIFIC: + *var_len = ifEntry._ifSpecificLength; + return (unsigned char *) ifEntry.ifSpecific; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMIBObjects_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMIBObjects_t ifMIBObjects; + + /* call the user supplied function to retrieve values */ + + read_ifMIBObjects(&ifMIBObjects); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFTABLELASTCHANGE: + return (unsigned char *) &ifMIBObjects.ifTableLastChange; + + case IFSTACKLASTCHANGE: + return (unsigned char *) &ifMIBObjects.ifStackLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifXEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifXEntry_t ifXEntry; + + /* call the user supplied function to retrieve values */ + + read_ifXEntry(&ifXEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFNAME: + *var_len = ifXEntry._ifNameLength; + return (unsigned char *) ifXEntry.ifName; + + case IFINMULTICASTPKTS: + return (unsigned char *) &ifXEntry.ifInMulticastPkts; + + case IFINBROADCASTPKTS: + return (unsigned char *) &ifXEntry.ifInBroadcastPkts; + + case IFOUTMULTICASTPKTS: + return (unsigned char *) &ifXEntry.ifOutMulticastPkts; + + case IFOUTBROADCASTPKTS: + return (unsigned char *) &ifXEntry.ifOutBroadcastPkts; + + case IFHCINOCTETS: + /* add code to return the value here */ + + case IFHCINUCASTPKTS: + /* add code to return the value here */ + + case IFHCINMULTICASTPKTS: + /* add code to return the value here */ + + case IFHCINBROADCASTPKTS: + /* add code to return the value here */ + + case IFHCOUTOCTETS: + /* add code to return the value here */ + + case IFHCOUTUCASTPKTS: + /* add code to return the value here */ + + case IFHCOUTMULTICASTPKTS: + /* add code to return the value here */ + + case IFHCOUTBROADCASTPKTS: + /* add code to return the value here */ + + case IFLINKUPDOWNTRAPENABLE: + return (unsigned char *) &ifXEntry.ifLinkUpDownTrapEnable; + + case IFHIGHSPEED: + return (unsigned char *) &ifXEntry.ifHighSpeed; + + case IFPROMISCUOUSMODE: + return (unsigned char *) &ifXEntry.ifPromiscuousMode; + + case IFCONNECTORPRESENT: + return (unsigned char *) &ifXEntry.ifConnectorPresent; + + case IFALIAS: + *var_len = ifXEntry._ifAliasLength; + return (unsigned char *) ifXEntry.ifAlias; + + case IFCOUNTERDISCONTINUITYTIME: + return (unsigned char *) &ifXEntry.ifCounterDiscontinuityTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifStackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifStackEntry_t ifStackEntry; + + /* call the user supplied function to retrieve values */ + + read_ifStackEntry(&ifStackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFSTACKSTATUS: + return (unsigned char *) &ifStackEntry.ifStackStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifTestEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifTestEntry_t ifTestEntry; + + /* call the user supplied function to retrieve values */ + + read_ifTestEntry(&ifTestEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFTESTID: + return (unsigned char *) &ifTestEntry.ifTestId; + + case IFTESTSTATUS: + return (unsigned char *) &ifTestEntry.ifTestStatus; + + case IFTESTTYPE: + *var_len = ifTestEntry._ifTestTypeLength; + return (unsigned char *) ifTestEntry.ifTestType; + + case IFTESTRESULT: + return (unsigned char *) &ifTestEntry.ifTestResult; + + case IFTESTCODE: + *var_len = ifTestEntry._ifTestCodeLength; + return (unsigned char *) ifTestEntry.ifTestCode; + + case IFTESTOWNER: + *var_len = ifTestEntry._ifTestOwnerLength; + return (unsigned char *) ifTestEntry.ifTestOwner; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifRcvAddressEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifRcvAddressEntry_t ifRcvAddressEntry; + + /* call the user supplied function to retrieve values */ + + read_ifRcvAddressEntry(&ifRcvAddressEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFRCVADDRESSSTATUS: + return (unsigned char *) &ifRcvAddressEntry.ifRcvAddressStatus; + + case IFRCVADDRESSTYPE: + return (unsigned char *) &ifRcvAddressEntry.ifRcvAddressType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_ifAdminStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifLinkUpDownTrapEnable_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifPromiscuousMode_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifAlias_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifStackStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestId_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifRcvAddressStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifRcvAddressType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/if-mib-agt.c b/test/dumps/netsnmp/if-mib-agt.c new file mode 100644 index 0000000..b74b1fc --- /dev/null +++ b/test/dumps/netsnmp/if-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "if-mib.h" + +#include +#include +#include +#include +#include + +static oid if_mib_caps[] = {0,0}; + +void init_if_mib(void) +{ +} + +void deinit_if_mib() +{ + unregister_sysORTable(if_mib_caps, sizeof(if_mib_caps)); +} + +int term_if_mib() +{ + deinit_if_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/if-mib-mgr-stub.c b/test/dumps/netsnmp/if-mib-mgr-stub.c new file mode 100644 index 0000000..d6f8152 --- /dev/null +++ b/test/dumps/netsnmp/if-mib-mgr-stub.c @@ -0,0 +1,664 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "if-mib.h" + +static oid ifNumber[] = {1, 3, 6, 1, 2, 1, 2, 1}; +static oid ifIndex[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; +static oid ifDescr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 2}; +static oid ifType[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 3}; +static oid ifMtu[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 4}; +static oid ifSpeed[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 5}; +static oid ifPhysAddress[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6}; +static oid ifAdminStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; +static oid ifOperStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; +static oid ifLastChange[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 9}; +static oid ifInOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 10}; +static oid ifInUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 11}; +static oid ifInNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 12}; +static oid ifInDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 13}; +static oid ifInErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 14}; +static oid ifInUnknownProtos[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 15}; +static oid ifOutOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 16}; +static oid ifOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 17}; +static oid ifOutNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 18}; +static oid ifOutDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 19}; +static oid ifOutErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 20}; +static oid ifOutQLen[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 21}; +static oid ifSpecific[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 22}; +static oid ifName[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1}; +static oid ifInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 2}; +static oid ifInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 3}; +static oid ifOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 4}; +static oid ifOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 5}; +static oid ifHCInOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 6}; +static oid ifHCInUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 7}; +static oid ifHCInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 8}; +static oid ifHCInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 9}; +static oid ifHCOutOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 10}; +static oid ifHCOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 11}; +static oid ifHCOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 12}; +static oid ifHCOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 13}; +static oid ifLinkUpDownTrapEnable[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 14}; +static oid ifHighSpeed[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 15}; +static oid ifPromiscuousMode[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 16}; +static oid ifConnectorPresent[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 17}; +static oid ifAlias[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 18}; +static oid ifCounterDiscontinuityTime[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 19}; +static oid ifStackHigherLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 1}; +static oid ifStackLowerLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 2}; +static oid ifStackStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 3}; +static oid ifTestId[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 1}; +static oid ifTestStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 2}; +static oid ifTestType[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 3}; +static oid ifTestResult[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 4}; +static oid ifTestCode[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 5}; +static oid ifTestOwner[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 6}; +static oid ifRcvAddressAddress[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 1}; +static oid ifRcvAddressStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 2}; +static oid ifRcvAddressType[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 3}; +static oid ifTableLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 5}; +static oid ifStackLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 6}; + +int if_mib_mgr_get_interfaces(struct snmp_session *s, interfaces_t **interfaces) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifNumber, sizeof(ifNumber)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *interfaces = (interfaces_t *) malloc(sizeof(interfaces_t)); + if (! *interfaces) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifNumber)/sizeof(oid) + && memcmp(vars->name, ifNumber, sizeof(ifNumber)) == 0) { + (*interfaces)->__ifNumber = *vars->val.integer; + (*interfaces)->ifNumber = &((*interfaces)->__ifNumber); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifEntry(struct snmp_session *s, ifEntry_t **ifEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifIndex, sizeof(ifIndex)/sizeof(oid)); + snmp_add_null_var(request, ifDescr, sizeof(ifDescr)/sizeof(oid)); + snmp_add_null_var(request, ifType, sizeof(ifType)/sizeof(oid)); + snmp_add_null_var(request, ifMtu, sizeof(ifMtu)/sizeof(oid)); + snmp_add_null_var(request, ifSpeed, sizeof(ifSpeed)/sizeof(oid)); + snmp_add_null_var(request, ifPhysAddress, sizeof(ifPhysAddress)/sizeof(oid)); + snmp_add_null_var(request, ifAdminStatus, sizeof(ifAdminStatus)/sizeof(oid)); + snmp_add_null_var(request, ifOperStatus, sizeof(ifOperStatus)/sizeof(oid)); + snmp_add_null_var(request, ifLastChange, sizeof(ifLastChange)/sizeof(oid)); + snmp_add_null_var(request, ifInOctets, sizeof(ifInOctets)/sizeof(oid)); + snmp_add_null_var(request, ifInUcastPkts, sizeof(ifInUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInNUcastPkts, sizeof(ifInNUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInDiscards, sizeof(ifInDiscards)/sizeof(oid)); + snmp_add_null_var(request, ifInErrors, sizeof(ifInErrors)/sizeof(oid)); + snmp_add_null_var(request, ifInUnknownProtos, sizeof(ifInUnknownProtos)/sizeof(oid)); + snmp_add_null_var(request, ifOutOctets, sizeof(ifOutOctets)/sizeof(oid)); + snmp_add_null_var(request, ifOutUcastPkts, sizeof(ifOutUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutDiscards, sizeof(ifOutDiscards)/sizeof(oid)); + snmp_add_null_var(request, ifOutErrors, sizeof(ifOutErrors)/sizeof(oid)); + snmp_add_null_var(request, ifOutQLen, sizeof(ifOutQLen)/sizeof(oid)); + snmp_add_null_var(request, ifSpecific, sizeof(ifSpecific)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifEntry = (ifEntry_t *) malloc(sizeof(ifEntry_t)); + if (! *ifEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifIndex)/sizeof(oid) + && memcmp(vars->name, ifIndex, sizeof(ifIndex)) == 0) { + (*ifEntry)->__ifIndex = *vars->val.integer; + (*ifEntry)->ifIndex = &((*ifEntry)->__ifIndex); + } + if (vars->name_length > sizeof(ifDescr)/sizeof(oid) + && memcmp(vars->name, ifDescr, sizeof(ifDescr)) == 0) { + memcpy((*ifEntry)->__ifDescr, vars->val.string, vars->val_len); + (*ifEntry)->_ifDescrLength = vars->val_len; + (*ifEntry)->ifDescr = (*ifEntry)->__ifDescr; + } + if (vars->name_length > sizeof(ifType)/sizeof(oid) + && memcmp(vars->name, ifType, sizeof(ifType)) == 0) { + (*ifEntry)->__ifType = *vars->val.integer; + (*ifEntry)->ifType = &((*ifEntry)->__ifType); + } + if (vars->name_length > sizeof(ifMtu)/sizeof(oid) + && memcmp(vars->name, ifMtu, sizeof(ifMtu)) == 0) { + (*ifEntry)->__ifMtu = *vars->val.integer; + (*ifEntry)->ifMtu = &((*ifEntry)->__ifMtu); + } + if (vars->name_length > sizeof(ifSpeed)/sizeof(oid) + && memcmp(vars->name, ifSpeed, sizeof(ifSpeed)) == 0) { + (*ifEntry)->__ifSpeed = *vars->val.integer; + (*ifEntry)->ifSpeed = &((*ifEntry)->__ifSpeed); + } + if (vars->name_length > sizeof(ifPhysAddress)/sizeof(oid) + && memcmp(vars->name, ifPhysAddress, sizeof(ifPhysAddress)) == 0) { + memcpy((*ifEntry)->__ifPhysAddress, vars->val.string, vars->val_len); + (*ifEntry)->_ifPhysAddressLength = vars->val_len; + (*ifEntry)->ifPhysAddress = (*ifEntry)->__ifPhysAddress; + } + if (vars->name_length > sizeof(ifAdminStatus)/sizeof(oid) + && memcmp(vars->name, ifAdminStatus, sizeof(ifAdminStatus)) == 0) { + (*ifEntry)->__ifAdminStatus = *vars->val.integer; + (*ifEntry)->ifAdminStatus = &((*ifEntry)->__ifAdminStatus); + } + if (vars->name_length > sizeof(ifOperStatus)/sizeof(oid) + && memcmp(vars->name, ifOperStatus, sizeof(ifOperStatus)) == 0) { + (*ifEntry)->__ifOperStatus = *vars->val.integer; + (*ifEntry)->ifOperStatus = &((*ifEntry)->__ifOperStatus); + } + if (vars->name_length > sizeof(ifLastChange)/sizeof(oid) + && memcmp(vars->name, ifLastChange, sizeof(ifLastChange)) == 0) { + (*ifEntry)->__ifLastChange = *vars->val.integer; + (*ifEntry)->ifLastChange = &((*ifEntry)->__ifLastChange); + } + if (vars->name_length > sizeof(ifInOctets)/sizeof(oid) + && memcmp(vars->name, ifInOctets, sizeof(ifInOctets)) == 0) { + (*ifEntry)->__ifInOctets = *vars->val.integer; + (*ifEntry)->ifInOctets = &((*ifEntry)->__ifInOctets); + } + if (vars->name_length > sizeof(ifInUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInUcastPkts, sizeof(ifInUcastPkts)) == 0) { + (*ifEntry)->__ifInUcastPkts = *vars->val.integer; + (*ifEntry)->ifInUcastPkts = &((*ifEntry)->__ifInUcastPkts); + } + if (vars->name_length > sizeof(ifInNUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInNUcastPkts, sizeof(ifInNUcastPkts)) == 0) { + (*ifEntry)->__ifInNUcastPkts = *vars->val.integer; + (*ifEntry)->ifInNUcastPkts = &((*ifEntry)->__ifInNUcastPkts); + } + if (vars->name_length > sizeof(ifInDiscards)/sizeof(oid) + && memcmp(vars->name, ifInDiscards, sizeof(ifInDiscards)) == 0) { + (*ifEntry)->__ifInDiscards = *vars->val.integer; + (*ifEntry)->ifInDiscards = &((*ifEntry)->__ifInDiscards); + } + if (vars->name_length > sizeof(ifInErrors)/sizeof(oid) + && memcmp(vars->name, ifInErrors, sizeof(ifInErrors)) == 0) { + (*ifEntry)->__ifInErrors = *vars->val.integer; + (*ifEntry)->ifInErrors = &((*ifEntry)->__ifInErrors); + } + if (vars->name_length > sizeof(ifInUnknownProtos)/sizeof(oid) + && memcmp(vars->name, ifInUnknownProtos, sizeof(ifInUnknownProtos)) == 0) { + (*ifEntry)->__ifInUnknownProtos = *vars->val.integer; + (*ifEntry)->ifInUnknownProtos = &((*ifEntry)->__ifInUnknownProtos); + } + if (vars->name_length > sizeof(ifOutOctets)/sizeof(oid) + && memcmp(vars->name, ifOutOctets, sizeof(ifOutOctets)) == 0) { + (*ifEntry)->__ifOutOctets = *vars->val.integer; + (*ifEntry)->ifOutOctets = &((*ifEntry)->__ifOutOctets); + } + if (vars->name_length > sizeof(ifOutUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutUcastPkts, sizeof(ifOutUcastPkts)) == 0) { + (*ifEntry)->__ifOutUcastPkts = *vars->val.integer; + (*ifEntry)->ifOutUcastPkts = &((*ifEntry)->__ifOutUcastPkts); + } + if (vars->name_length > sizeof(ifOutNUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)) == 0) { + (*ifEntry)->__ifOutNUcastPkts = *vars->val.integer; + (*ifEntry)->ifOutNUcastPkts = &((*ifEntry)->__ifOutNUcastPkts); + } + if (vars->name_length > sizeof(ifOutDiscards)/sizeof(oid) + && memcmp(vars->name, ifOutDiscards, sizeof(ifOutDiscards)) == 0) { + (*ifEntry)->__ifOutDiscards = *vars->val.integer; + (*ifEntry)->ifOutDiscards = &((*ifEntry)->__ifOutDiscards); + } + if (vars->name_length > sizeof(ifOutErrors)/sizeof(oid) + && memcmp(vars->name, ifOutErrors, sizeof(ifOutErrors)) == 0) { + (*ifEntry)->__ifOutErrors = *vars->val.integer; + (*ifEntry)->ifOutErrors = &((*ifEntry)->__ifOutErrors); + } + if (vars->name_length > sizeof(ifOutQLen)/sizeof(oid) + && memcmp(vars->name, ifOutQLen, sizeof(ifOutQLen)) == 0) { + (*ifEntry)->__ifOutQLen = *vars->val.integer; + (*ifEntry)->ifOutQLen = &((*ifEntry)->__ifOutQLen); + } + if (vars->name_length > sizeof(ifSpecific)/sizeof(oid) + && memcmp(vars->name, ifSpecific, sizeof(ifSpecific)) == 0) { + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifMIBObjects(struct snmp_session *s, ifMIBObjects_t **ifMIBObjects) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifTableLastChange, sizeof(ifTableLastChange)/sizeof(oid)); + snmp_add_null_var(request, ifStackLastChange, sizeof(ifStackLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMIBObjects = (ifMIBObjects_t *) malloc(sizeof(ifMIBObjects_t)); + if (! *ifMIBObjects) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifTableLastChange)/sizeof(oid) + && memcmp(vars->name, ifTableLastChange, sizeof(ifTableLastChange)) == 0) { + (*ifMIBObjects)->__ifTableLastChange = *vars->val.integer; + (*ifMIBObjects)->ifTableLastChange = &((*ifMIBObjects)->__ifTableLastChange); + } + if (vars->name_length > sizeof(ifStackLastChange)/sizeof(oid) + && memcmp(vars->name, ifStackLastChange, sizeof(ifStackLastChange)) == 0) { + (*ifMIBObjects)->__ifStackLastChange = *vars->val.integer; + (*ifMIBObjects)->ifStackLastChange = &((*ifMIBObjects)->__ifStackLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifXEntry(struct snmp_session *s, ifXEntry_t **ifXEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifName, sizeof(ifName)/sizeof(oid)); + snmp_add_null_var(request, ifInMulticastPkts, sizeof(ifInMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInOctets, sizeof(ifHCInOctets)/sizeof(oid)); + snmp_add_null_var(request, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutOctets, sizeof(ifHCOutOctets)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)/sizeof(oid)); + snmp_add_null_var(request, ifHighSpeed, sizeof(ifHighSpeed)/sizeof(oid)); + snmp_add_null_var(request, ifPromiscuousMode, sizeof(ifPromiscuousMode)/sizeof(oid)); + snmp_add_null_var(request, ifConnectorPresent, sizeof(ifConnectorPresent)/sizeof(oid)); + snmp_add_null_var(request, ifAlias, sizeof(ifAlias)/sizeof(oid)); + snmp_add_null_var(request, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifXEntry = (ifXEntry_t *) malloc(sizeof(ifXEntry_t)); + if (! *ifXEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifName)/sizeof(oid) + && memcmp(vars->name, ifName, sizeof(ifName)) == 0) { + memcpy((*ifXEntry)->__ifName, vars->val.string, vars->val_len); + (*ifXEntry)->_ifNameLength = vars->val_len; + (*ifXEntry)->ifName = (*ifXEntry)->__ifName; + } + if (vars->name_length > sizeof(ifInMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifInMulticastPkts, sizeof(ifInMulticastPkts)) == 0) { + (*ifXEntry)->__ifInMulticastPkts = *vars->val.integer; + (*ifXEntry)->ifInMulticastPkts = &((*ifXEntry)->__ifInMulticastPkts); + } + if (vars->name_length > sizeof(ifInBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)) == 0) { + (*ifXEntry)->__ifInBroadcastPkts = *vars->val.integer; + (*ifXEntry)->ifInBroadcastPkts = &((*ifXEntry)->__ifInBroadcastPkts); + } + if (vars->name_length > sizeof(ifOutMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)) == 0) { + (*ifXEntry)->__ifOutMulticastPkts = *vars->val.integer; + (*ifXEntry)->ifOutMulticastPkts = &((*ifXEntry)->__ifOutMulticastPkts); + } + if (vars->name_length > sizeof(ifOutBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)) == 0) { + (*ifXEntry)->__ifOutBroadcastPkts = *vars->val.integer; + (*ifXEntry)->ifOutBroadcastPkts = &((*ifXEntry)->__ifOutBroadcastPkts); + } + if (vars->name_length > sizeof(ifHCInOctets)/sizeof(oid) + && memcmp(vars->name, ifHCInOctets, sizeof(ifHCInOctets)) == 0) { + } + if (vars->name_length > sizeof(ifHCInUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCInMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCInBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutOctets)/sizeof(oid) + && memcmp(vars->name, ifHCOutOctets, sizeof(ifHCOutOctets)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifLinkUpDownTrapEnable)/sizeof(oid) + && memcmp(vars->name, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)) == 0) { + (*ifXEntry)->__ifLinkUpDownTrapEnable = *vars->val.integer; + (*ifXEntry)->ifLinkUpDownTrapEnable = &((*ifXEntry)->__ifLinkUpDownTrapEnable); + } + if (vars->name_length > sizeof(ifHighSpeed)/sizeof(oid) + && memcmp(vars->name, ifHighSpeed, sizeof(ifHighSpeed)) == 0) { + (*ifXEntry)->__ifHighSpeed = *vars->val.integer; + (*ifXEntry)->ifHighSpeed = &((*ifXEntry)->__ifHighSpeed); + } + if (vars->name_length > sizeof(ifPromiscuousMode)/sizeof(oid) + && memcmp(vars->name, ifPromiscuousMode, sizeof(ifPromiscuousMode)) == 0) { + (*ifXEntry)->__ifPromiscuousMode = *vars->val.integer; + (*ifXEntry)->ifPromiscuousMode = &((*ifXEntry)->__ifPromiscuousMode); + } + if (vars->name_length > sizeof(ifConnectorPresent)/sizeof(oid) + && memcmp(vars->name, ifConnectorPresent, sizeof(ifConnectorPresent)) == 0) { + (*ifXEntry)->__ifConnectorPresent = *vars->val.integer; + (*ifXEntry)->ifConnectorPresent = &((*ifXEntry)->__ifConnectorPresent); + } + if (vars->name_length > sizeof(ifAlias)/sizeof(oid) + && memcmp(vars->name, ifAlias, sizeof(ifAlias)) == 0) { + memcpy((*ifXEntry)->__ifAlias, vars->val.string, vars->val_len); + (*ifXEntry)->_ifAliasLength = vars->val_len; + (*ifXEntry)->ifAlias = (*ifXEntry)->__ifAlias; + } + if (vars->name_length > sizeof(ifCounterDiscontinuityTime)/sizeof(oid) + && memcmp(vars->name, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)) == 0) { + (*ifXEntry)->__ifCounterDiscontinuityTime = *vars->val.integer; + (*ifXEntry)->ifCounterDiscontinuityTime = &((*ifXEntry)->__ifCounterDiscontinuityTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifStackEntry(struct snmp_session *s, ifStackEntry_t **ifStackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifStackStatus, sizeof(ifStackStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifStackEntry = (ifStackEntry_t *) malloc(sizeof(ifStackEntry_t)); + if (! *ifStackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifStackStatus)/sizeof(oid) + && memcmp(vars->name, ifStackStatus, sizeof(ifStackStatus)) == 0) { + (*ifStackEntry)->__ifStackStatus = *vars->val.integer; + (*ifStackEntry)->ifStackStatus = &((*ifStackEntry)->__ifStackStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifTestEntry(struct snmp_session *s, ifTestEntry_t **ifTestEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifTestId, sizeof(ifTestId)/sizeof(oid)); + snmp_add_null_var(request, ifTestStatus, sizeof(ifTestStatus)/sizeof(oid)); + snmp_add_null_var(request, ifTestType, sizeof(ifTestType)/sizeof(oid)); + snmp_add_null_var(request, ifTestResult, sizeof(ifTestResult)/sizeof(oid)); + snmp_add_null_var(request, ifTestCode, sizeof(ifTestCode)/sizeof(oid)); + snmp_add_null_var(request, ifTestOwner, sizeof(ifTestOwner)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifTestEntry = (ifTestEntry_t *) malloc(sizeof(ifTestEntry_t)); + if (! *ifTestEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifTestId)/sizeof(oid) + && memcmp(vars->name, ifTestId, sizeof(ifTestId)) == 0) { + (*ifTestEntry)->__ifTestId = *vars->val.integer; + (*ifTestEntry)->ifTestId = &((*ifTestEntry)->__ifTestId); + } + if (vars->name_length > sizeof(ifTestStatus)/sizeof(oid) + && memcmp(vars->name, ifTestStatus, sizeof(ifTestStatus)) == 0) { + (*ifTestEntry)->__ifTestStatus = *vars->val.integer; + (*ifTestEntry)->ifTestStatus = &((*ifTestEntry)->__ifTestStatus); + } + if (vars->name_length > sizeof(ifTestType)/sizeof(oid) + && memcmp(vars->name, ifTestType, sizeof(ifTestType)) == 0) { + } + if (vars->name_length > sizeof(ifTestResult)/sizeof(oid) + && memcmp(vars->name, ifTestResult, sizeof(ifTestResult)) == 0) { + (*ifTestEntry)->__ifTestResult = *vars->val.integer; + (*ifTestEntry)->ifTestResult = &((*ifTestEntry)->__ifTestResult); + } + if (vars->name_length > sizeof(ifTestCode)/sizeof(oid) + && memcmp(vars->name, ifTestCode, sizeof(ifTestCode)) == 0) { + } + if (vars->name_length > sizeof(ifTestOwner)/sizeof(oid) + && memcmp(vars->name, ifTestOwner, sizeof(ifTestOwner)) == 0) { + memcpy((*ifTestEntry)->__ifTestOwner, vars->val.string, vars->val_len); + (*ifTestEntry)->_ifTestOwnerLength = vars->val_len; + (*ifTestEntry)->ifTestOwner = (*ifTestEntry)->__ifTestOwner; + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifRcvAddressEntry(struct snmp_session *s, ifRcvAddressEntry_t **ifRcvAddressEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)/sizeof(oid)); + snmp_add_null_var(request, ifRcvAddressType, sizeof(ifRcvAddressType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifRcvAddressEntry = (ifRcvAddressEntry_t *) malloc(sizeof(ifRcvAddressEntry_t)); + if (! *ifRcvAddressEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifRcvAddressStatus)/sizeof(oid) + && memcmp(vars->name, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)) == 0) { + (*ifRcvAddressEntry)->__ifRcvAddressStatus = *vars->val.integer; + (*ifRcvAddressEntry)->ifRcvAddressStatus = &((*ifRcvAddressEntry)->__ifRcvAddressStatus); + } + if (vars->name_length > sizeof(ifRcvAddressType)/sizeof(oid) + && memcmp(vars->name, ifRcvAddressType, sizeof(ifRcvAddressType)) == 0) { + (*ifRcvAddressEntry)->__ifRcvAddressType = *vars->val.integer; + (*ifRcvAddressEntry)->ifRcvAddressType = &((*ifRcvAddressEntry)->__ifRcvAddressType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/if-mib.h b/test/dumps/netsnmp/if-mib.h new file mode 100644 index 0000000..b04a7c5 --- /dev/null +++ b/test/dumps/netsnmp/if-mib.h @@ -0,0 +1,351 @@ +/* + * This C header file has been generated by smidump 0.2.17. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the IF-MIB module. + * + * $Id: if-mib.h 1154 2001-08-24 10:09:18Z strauss $ + */ + +#ifndef _IF_MIB_H_ +#define _IF_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for IF-MIB::interfaces. + */ + +typedef struct interfaces { + int32_t *ifNumber; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + int32_t __ifNumber; +} interfaces_t; + +/* + * C manager interface stubs for IF-MIB::interfaces. + */ + +extern int +if_mib_mgr_get_interfaces(struct snmp_session *s, interfaces_t **interfaces); + +/* + * C agent interface stubs for IF-MIB::interfaces. + */ + +extern int +if_mib_agt_read_interfaces(interfaces_t *interfaces); +extern int +if_mib_agt_register_interfaces(); + +/* + * C type definitions for IF-MIB::ifEntry. + */ + +typedef struct ifEntry { + int32_t *ifIndex; + u_char *ifDescr; + size_t _ifDescrLength; + int32_t *ifType; + int32_t *ifMtu; + uint32_t *ifSpeed; + u_char *ifPhysAddress; + size_t _ifPhysAddressLength; + int32_t *ifAdminStatus; + int32_t *ifOperStatus; + uint32_t *ifLastChange; + uint32_t *ifInOctets; + uint32_t *ifInUcastPkts; + uint32_t *ifInNUcastPkts; + uint32_t *ifInDiscards; + uint32_t *ifInErrors; + uint32_t *ifInUnknownProtos; + uint32_t *ifOutOctets; + uint32_t *ifOutUcastPkts; + uint32_t *ifOutNUcastPkts; + uint32_t *ifOutDiscards; + uint32_t *ifOutErrors; + uint32_t *ifOutQLen; + uint32_t *ifSpecific; + size_t _ifSpecificLength; + void *_clientData; /* pointer to client data structure */ + struct ifEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifIndex; + u_char __ifDescr[255]; + int32_t __ifType; + int32_t __ifMtu; + uint32_t __ifSpeed; + u_char __ifPhysAddress[65535]; + int32_t __ifAdminStatus; + int32_t __ifOperStatus; + uint32_t __ifLastChange; + uint32_t __ifInOctets; + uint32_t __ifInUcastPkts; + uint32_t __ifInNUcastPkts; + uint32_t __ifInDiscards; + uint32_t __ifInErrors; + uint32_t __ifInUnknownProtos; + uint32_t __ifOutOctets; + uint32_t __ifOutUcastPkts; + uint32_t __ifOutNUcastPkts; + uint32_t __ifOutDiscards; + uint32_t __ifOutErrors; + uint32_t __ifOutQLen; + uint32_t __ifSpecific[128]; +} ifEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifEntry. + */ + +extern int +if_mib_mgr_get_ifEntry(struct snmp_session *s, ifEntry_t **ifEntry); + +/* + * C agent interface stubs for IF-MIB::ifEntry. + */ + +extern int +if_mib_agt_read_ifEntry(ifEntry_t *ifEntry); +extern int +if_mib_agt_register_ifEntry(); + +/* + * C type definitions for IF-MIB::ifMIBObjects. + */ + +typedef struct ifMIBObjects { + uint32_t *ifTableLastChange; + uint32_t *ifStackLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __ifTableLastChange; + uint32_t __ifStackLastChange; +} ifMIBObjects_t; + +/* + * C manager interface stubs for IF-MIB::ifMIBObjects. + */ + +extern int +if_mib_mgr_get_ifMIBObjects(struct snmp_session *s, ifMIBObjects_t **ifMIBObjects); + +/* + * C agent interface stubs for IF-MIB::ifMIBObjects. + */ + +extern int +if_mib_agt_read_ifMIBObjects(ifMIBObjects_t *ifMIBObjects); +extern int +if_mib_agt_register_ifMIBObjects(); + +/* + * C type definitions for IF-MIB::ifXEntry. + */ + +typedef struct ifXEntry { + u_char *ifName; + size_t _ifNameLength; + uint32_t *ifInMulticastPkts; + uint32_t *ifInBroadcastPkts; + uint32_t *ifOutMulticastPkts; + uint32_t *ifOutBroadcastPkts; + uint64_t *ifHCInOctets; + uint64_t *ifHCInUcastPkts; + uint64_t *ifHCInMulticastPkts; + uint64_t *ifHCInBroadcastPkts; + uint64_t *ifHCOutOctets; + uint64_t *ifHCOutUcastPkts; + uint64_t *ifHCOutMulticastPkts; + uint64_t *ifHCOutBroadcastPkts; + int32_t *ifLinkUpDownTrapEnable; + uint32_t *ifHighSpeed; + int32_t *ifPromiscuousMode; + int32_t *ifConnectorPresent; + u_char *ifAlias; + size_t _ifAliasLength; + uint32_t *ifCounterDiscontinuityTime; + void *_clientData; /* pointer to client data structure */ + struct ifXEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __ifName[255]; + uint32_t __ifInMulticastPkts; + uint32_t __ifInBroadcastPkts; + uint32_t __ifOutMulticastPkts; + uint32_t __ifOutBroadcastPkts; + uint64_t __ifHCInOctets; + uint64_t __ifHCInUcastPkts; + uint64_t __ifHCInMulticastPkts; + uint64_t __ifHCInBroadcastPkts; + uint64_t __ifHCOutOctets; + uint64_t __ifHCOutUcastPkts; + uint64_t __ifHCOutMulticastPkts; + uint64_t __ifHCOutBroadcastPkts; + int32_t __ifLinkUpDownTrapEnable; + uint32_t __ifHighSpeed; + int32_t __ifPromiscuousMode; + int32_t __ifConnectorPresent; + u_char __ifAlias[64]; + uint32_t __ifCounterDiscontinuityTime; +} ifXEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifXEntry. + */ + +extern int +if_mib_mgr_get_ifXEntry(struct snmp_session *s, ifXEntry_t **ifXEntry); + +/* + * C agent interface stubs for IF-MIB::ifXEntry. + */ + +extern int +if_mib_agt_read_ifXEntry(ifXEntry_t *ifXEntry); +extern int +if_mib_agt_register_ifXEntry(); + +/* + * C type definitions for IF-MIB::ifStackEntry. + */ + +typedef struct ifStackEntry { + int32_t *ifStackHigherLayer; + int32_t *ifStackLowerLayer; + int32_t *ifStackStatus; + void *_clientData; /* pointer to client data structure */ + struct ifStackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifStackHigherLayer; + int32_t __ifStackLowerLayer; + int32_t __ifStackStatus; +} ifStackEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifStackEntry. + */ + +extern int +if_mib_mgr_get_ifStackEntry(struct snmp_session *s, ifStackEntry_t **ifStackEntry); + +/* + * C agent interface stubs for IF-MIB::ifStackEntry. + */ + +extern int +if_mib_agt_read_ifStackEntry(ifStackEntry_t *ifStackEntry); +extern int +if_mib_agt_register_ifStackEntry(); + +/* + * C type definitions for IF-MIB::ifTestEntry. + */ + +typedef struct ifTestEntry { + int32_t *ifTestId; + int32_t *ifTestStatus; + uint32_t *ifTestType; + size_t _ifTestTypeLength; + int32_t *ifTestResult; + uint32_t *ifTestCode; + size_t _ifTestCodeLength; + u_char *ifTestOwner; + size_t _ifTestOwnerLength; + void *_clientData; /* pointer to client data structure */ + struct ifTestEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifTestId; + int32_t __ifTestStatus; + uint32_t __ifTestType[128]; + int32_t __ifTestResult; + uint32_t __ifTestCode[128]; + u_char __ifTestOwner[255]; +} ifTestEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifTestEntry. + */ + +extern int +if_mib_mgr_get_ifTestEntry(struct snmp_session *s, ifTestEntry_t **ifTestEntry); + +/* + * C agent interface stubs for IF-MIB::ifTestEntry. + */ + +extern int +if_mib_agt_read_ifTestEntry(ifTestEntry_t *ifTestEntry); +extern int +if_mib_agt_register_ifTestEntry(); + +/* + * C type definitions for IF-MIB::ifRcvAddressEntry. + */ + +typedef struct ifRcvAddressEntry { + u_char *ifRcvAddressAddress; + size_t _ifRcvAddressAddressLength; + int32_t *ifRcvAddressStatus; + int32_t *ifRcvAddressType; + void *_clientData; /* pointer to client data structure */ + struct ifRcvAddressEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __ifRcvAddressAddress[65535]; + int32_t __ifRcvAddressStatus; + int32_t __ifRcvAddressType; +} ifRcvAddressEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifRcvAddressEntry. + */ + +extern int +if_mib_mgr_get_ifRcvAddressEntry(struct snmp_session *s, ifRcvAddressEntry_t **ifRcvAddressEntry); + +/* + * C agent interface stubs for IF-MIB::ifRcvAddressEntry. + */ + +extern int +if_mib_agt_read_ifRcvAddressEntry(ifRcvAddressEntry_t *ifRcvAddressEntry); +extern int +if_mib_agt_register_ifRcvAddressEntry(); + + +typedef struct if_mib { + interfaces_t interfaces; + ifEntry_t *ifEntry; + ifMIBObjects_t ifMIBObjects; + ifXEntry_t *ifXEntry; + ifStackEntry_t *ifStackEntry; + ifTestEntry_t *ifTestEntry; + ifRcvAddressEntry_t *ifRcvAddressEntry; +} if_mib_t; + +/* + * Initialization function: + */ + +void if_mib_agt_init(void); + +#endif /* _IF_MIB_H_ */ diff --git a/test/dumps/netsnmp/mau-mib-agt-stub.c b/test/dumps/netsnmp/mau-mib-agt-stub.c new file mode 100644 index 0000000..80bed75 --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-agt-stub.c @@ -0,0 +1,650 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "mau-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_rpMauEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_rpJackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMauEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifJackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_broadMauBasicEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMauAutoNegEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_rpMauStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauDefaultType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegAdminStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegCapAdvertised_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegRestart_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegCapAdvertisedBits_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegRemoteFaultAdvertised_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define RPMAUGROUPINDEX 1 +#define RPMAUPORTINDEX 2 +#define RPMAUINDEX 3 +#define RPMAUTYPE 4 +#define RPMAUSTATUS 5 +#define RPMAUMEDIAAVAILABLE 6 +#define RPMAUMEDIAAVAILABLESTATEEXITS 7 +#define RPMAUJABBERSTATE 8 +#define RPMAUJABBERINGSTATEENTERS 9 +#define RPMAUFALSECARRIERS 10 + +static oid rpMauEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1}; + +struct variable rpMauEntry_variables[] = { + { RPMAUGROUPINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {1} }, + { RPMAUPORTINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {2} }, + { RPMAUINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {3} }, + { RPMAUTYPE, ASN_OBJECT_ID, RONLY, read_rpMauEntry_stub, 1, {4} }, + { RPMAUSTATUS, ASN_INTEGER, RWRITE, read_rpMauEntry_stub, 1, {5} }, + { RPMAUMEDIAAVAILABLE, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {6} }, + { RPMAUMEDIAAVAILABLESTATEEXITS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {7} }, + { RPMAUJABBERSTATE, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {8} }, + { RPMAUJABBERINGSTATEENTERS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {9} }, + { RPMAUFALSECARRIERS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {10} }, +}; + +#define RPJACKTYPE 2 + +static oid rpJackEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1}; + +struct variable rpJackEntry_variables[] = { + { RPJACKTYPE, ASN_INTEGER, RONLY, read_rpJackEntry_stub, 1, {2} }, +}; + +#define IFMAUIFINDEX 1 +#define IFMAUINDEX 2 +#define IFMAUTYPE 3 +#define IFMAUSTATUS 4 +#define IFMAUMEDIAAVAILABLE 5 +#define IFMAUMEDIAAVAILABLESTATEEXITS 6 +#define IFMAUJABBERSTATE 7 +#define IFMAUJABBERINGSTATEENTERS 8 +#define IFMAUFALSECARRIERS 9 +#define IFMAUTYPELIST 10 +#define IFMAUDEFAULTTYPE 11 +#define IFMAUAUTONEGSUPPORTED 12 +#define IFMAUTYPELISTBITS 13 +#define IFMAUHCFALSECARRIERS 14 + +static oid ifMauEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1}; + +struct variable ifMauEntry_variables[] = { + { IFMAUIFINDEX, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {1} }, + { IFMAUINDEX, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {2} }, + { IFMAUTYPE, ASN_OBJECT_ID, RONLY, read_ifMauEntry_stub, 1, {3} }, + { IFMAUSTATUS, ASN_INTEGER, RWRITE, read_ifMauEntry_stub, 1, {4} }, + { IFMAUMEDIAAVAILABLE, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {5} }, + { IFMAUMEDIAAVAILABLESTATEEXITS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {6} }, + { IFMAUJABBERSTATE, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {7} }, + { IFMAUJABBERINGSTATEENTERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {8} }, + { IFMAUFALSECARRIERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {9} }, + { IFMAUTYPELIST, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {10} }, + { IFMAUDEFAULTTYPE, ASN_OBJECT_ID, RWRITE, read_ifMauEntry_stub, 1, {11} }, + { IFMAUAUTONEGSUPPORTED, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {12} }, + { IFMAUTYPELISTBITS, ASN_OCTET_STR, RONLY, read_ifMauEntry_stub, 1, {13} }, + { IFMAUHCFALSECARRIERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {14} }, +}; + +#define IFJACKTYPE 2 + +static oid ifJackEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1}; + +struct variable ifJackEntry_variables[] = { + { IFJACKTYPE, ASN_INTEGER, RONLY, read_ifJackEntry_stub, 1, {2} }, +}; + +#define BROADMAUIFINDEX 1 +#define BROADMAUINDEX 2 +#define BROADMAUXMTRCVSPLITTYPE 3 +#define BROADMAUXMTCARRIERFREQ 4 +#define BROADMAUTRANSLATIONFREQ 5 + +static oid broadMauBasicEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1}; + +struct variable broadMauBasicEntry_variables[] = { + { BROADMAUIFINDEX, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {1} }, + { BROADMAUINDEX, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {2} }, + { BROADMAUXMTRCVSPLITTYPE, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {3} }, + { BROADMAUXMTCARRIERFREQ, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {4} }, + { BROADMAUTRANSLATIONFREQ, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {5} }, +}; + +#define IFMAUAUTONEGADMINSTATUS 1 +#define IFMAUAUTONEGREMOTESIGNALING 2 +#define IFMAUAUTONEGCONFIG 4 +#define IFMAUAUTONEGCAPABILITY 5 +#define IFMAUAUTONEGCAPADVERTISED 6 +#define IFMAUAUTONEGCAPRECEIVED 7 +#define IFMAUAUTONEGRESTART 8 +#define IFMAUAUTONEGCAPABILITYBITS 9 +#define IFMAUAUTONEGCAPADVERTISEDBITS 10 +#define IFMAUAUTONEGCAPRECEIVEDBITS 11 +#define IFMAUAUTONEGREMOTEFAULTADVERTISED 12 +#define IFMAUAUTONEGREMOTEFAULTRECEIVED 13 + +static oid ifMauAutoNegEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1}; + +struct variable ifMauAutoNegEntry_variables[] = { + { IFMAUAUTONEGADMINSTATUS, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {1} }, + { IFMAUAUTONEGREMOTESIGNALING, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {2} }, + { IFMAUAUTONEGCONFIG, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {4} }, + { IFMAUAUTONEGCAPABILITY, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {5} }, + { IFMAUAUTONEGCAPADVERTISED, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {6} }, + { IFMAUAUTONEGCAPRECEIVED, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {7} }, + { IFMAUAUTONEGRESTART, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {8} }, + { IFMAUAUTONEGCAPABILITYBITS, ASN_OCTET_STR, RONLY, read_ifMauAutoNegEntry_stub, 1, {9} }, + { IFMAUAUTONEGCAPADVERTISEDBITS, ASN_OCTET_STR, RWRITE, read_ifMauAutoNegEntry_stub, 1, {10} }, + { IFMAUAUTONEGCAPRECEIVEDBITS, ASN_OCTET_STR, RONLY, read_ifMauAutoNegEntry_stub, 1, {11} }, + { IFMAUAUTONEGREMOTEFAULTADVERTISED, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {12} }, + { IFMAUAUTONEGREMOTEFAULTRECEIVED, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {13} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_rpMauEntry() +{ + return register_mib("rpMauEntry", + rpMauEntry_variables, + sizeof(struct variable), + sizeof(rpMauEntry_variables)/sizeof(struct variable), + rpMauEntry_base, + sizeof(rpMauEntry_base)/sizeof(oid)); +}; + + +int register_rpJackEntry() +{ + return register_mib("rpJackEntry", + rpJackEntry_variables, + sizeof(struct variable), + sizeof(rpJackEntry_variables)/sizeof(struct variable), + rpJackEntry_base, + sizeof(rpJackEntry_base)/sizeof(oid)); +}; + + +int register_ifMauEntry() +{ + return register_mib("ifMauEntry", + ifMauEntry_variables, + sizeof(struct variable), + sizeof(ifMauEntry_variables)/sizeof(struct variable), + ifMauEntry_base, + sizeof(ifMauEntry_base)/sizeof(oid)); +}; + + +int register_ifJackEntry() +{ + return register_mib("ifJackEntry", + ifJackEntry_variables, + sizeof(struct variable), + sizeof(ifJackEntry_variables)/sizeof(struct variable), + ifJackEntry_base, + sizeof(ifJackEntry_base)/sizeof(oid)); +}; + + +int register_broadMauBasicEntry() +{ + return register_mib("broadMauBasicEntry", + broadMauBasicEntry_variables, + sizeof(struct variable), + sizeof(broadMauBasicEntry_variables)/sizeof(struct variable), + broadMauBasicEntry_base, + sizeof(broadMauBasicEntry_base)/sizeof(oid)); +}; + + +int register_ifMauAutoNegEntry() +{ + return register_mib("ifMauAutoNegEntry", + ifMauAutoNegEntry_variables, + sizeof(struct variable), + sizeof(ifMauAutoNegEntry_variables)/sizeof(struct variable), + ifMauAutoNegEntry_base, + sizeof(ifMauAutoNegEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_rpMauEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static rpMauEntry_t rpMauEntry; + + /* call the user supplied function to retrieve values */ + + read_rpMauEntry(&rpMauEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RPMAUGROUPINDEX: + return (unsigned char *) &rpMauEntry.rpMauGroupIndex; + + case RPMAUPORTINDEX: + return (unsigned char *) &rpMauEntry.rpMauPortIndex; + + case RPMAUINDEX: + return (unsigned char *) &rpMauEntry.rpMauIndex; + + case RPMAUTYPE: + *var_len = rpMauEntry._rpMauTypeLength; + return (unsigned char *) rpMauEntry.rpMauType; + + case RPMAUSTATUS: + return (unsigned char *) &rpMauEntry.rpMauStatus; + + case RPMAUMEDIAAVAILABLE: + return (unsigned char *) &rpMauEntry.rpMauMediaAvailable; + + case RPMAUMEDIAAVAILABLESTATEEXITS: + return (unsigned char *) &rpMauEntry.rpMauMediaAvailableStateExits; + + case RPMAUJABBERSTATE: + return (unsigned char *) &rpMauEntry.rpMauJabberState; + + case RPMAUJABBERINGSTATEENTERS: + return (unsigned char *) &rpMauEntry.rpMauJabberingStateEnters; + + case RPMAUFALSECARRIERS: + return (unsigned char *) &rpMauEntry.rpMauFalseCarriers; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_rpJackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static rpJackEntry_t rpJackEntry; + + /* call the user supplied function to retrieve values */ + + read_rpJackEntry(&rpJackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RPJACKTYPE: + return (unsigned char *) &rpJackEntry.rpJackType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMauEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMauEntry_t ifMauEntry; + + /* call the user supplied function to retrieve values */ + + read_ifMauEntry(&ifMauEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFMAUIFINDEX: + return (unsigned char *) &ifMauEntry.ifMauIfIndex; + + case IFMAUINDEX: + return (unsigned char *) &ifMauEntry.ifMauIndex; + + case IFMAUTYPE: + *var_len = ifMauEntry._ifMauTypeLength; + return (unsigned char *) ifMauEntry.ifMauType; + + case IFMAUSTATUS: + return (unsigned char *) &ifMauEntry.ifMauStatus; + + case IFMAUMEDIAAVAILABLE: + return (unsigned char *) &ifMauEntry.ifMauMediaAvailable; + + case IFMAUMEDIAAVAILABLESTATEEXITS: + return (unsigned char *) &ifMauEntry.ifMauMediaAvailableStateExits; + + case IFMAUJABBERSTATE: + return (unsigned char *) &ifMauEntry.ifMauJabberState; + + case IFMAUJABBERINGSTATEENTERS: + return (unsigned char *) &ifMauEntry.ifMauJabberingStateEnters; + + case IFMAUFALSECARRIERS: + return (unsigned char *) &ifMauEntry.ifMauFalseCarriers; + + case IFMAUTYPELIST: + return (unsigned char *) &ifMauEntry.ifMauTypeList; + + case IFMAUDEFAULTTYPE: + *var_len = ifMauEntry._ifMauDefaultTypeLength; + return (unsigned char *) ifMauEntry.ifMauDefaultType; + + case IFMAUAUTONEGSUPPORTED: + return (unsigned char *) &ifMauEntry.ifMauAutoNegSupported; + + case IFMAUTYPELISTBITS: + *var_len = ifMauEntry._ifMauTypeListBitsLength; + return (unsigned char *) ifMauEntry.ifMauTypeListBits; + + case IFMAUHCFALSECARRIERS: + /* add code to return the value here */ + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifJackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifJackEntry_t ifJackEntry; + + /* call the user supplied function to retrieve values */ + + read_ifJackEntry(&ifJackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFJACKTYPE: + return (unsigned char *) &ifJackEntry.ifJackType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_broadMauBasicEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static broadMauBasicEntry_t broadMauBasicEntry; + + /* call the user supplied function to retrieve values */ + + read_broadMauBasicEntry(&broadMauBasicEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case BROADMAUIFINDEX: + return (unsigned char *) &broadMauBasicEntry.broadMauIfIndex; + + case BROADMAUINDEX: + return (unsigned char *) &broadMauBasicEntry.broadMauIndex; + + case BROADMAUXMTRCVSPLITTYPE: + return (unsigned char *) &broadMauBasicEntry.broadMauXmtRcvSplitType; + + case BROADMAUXMTCARRIERFREQ: + return (unsigned char *) &broadMauBasicEntry.broadMauXmtCarrierFreq; + + case BROADMAUTRANSLATIONFREQ: + return (unsigned char *) &broadMauBasicEntry.broadMauTranslationFreq; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMauAutoNegEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMauAutoNegEntry_t ifMauAutoNegEntry; + + /* call the user supplied function to retrieve values */ + + read_ifMauAutoNegEntry(&ifMauAutoNegEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFMAUAUTONEGADMINSTATUS: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegAdminStatus; + + case IFMAUAUTONEGREMOTESIGNALING: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteSignaling; + + case IFMAUAUTONEGCONFIG: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegConfig; + + case IFMAUAUTONEGCAPABILITY: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapability; + + case IFMAUAUTONEGCAPADVERTISED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapAdvertised; + + case IFMAUAUTONEGCAPRECEIVED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapReceived; + + case IFMAUAUTONEGRESTART: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRestart; + + case IFMAUAUTONEGCAPABILITYBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapabilityBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapabilityBits; + + case IFMAUAUTONEGCAPADVERTISEDBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapAdvertisedBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapAdvertisedBits; + + case IFMAUAUTONEGCAPRECEIVEDBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapReceivedBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapReceivedBits; + + case IFMAUAUTONEGREMOTEFAULTADVERTISED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteFaultAdvertised; + + case IFMAUAUTONEGREMOTEFAULTRECEIVED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteFaultReceived; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_rpMauStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauDefaultType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegAdminStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegCapAdvertised_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegRestart_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegCapAdvertisedBits_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegRemoteFaultAdvertised_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/mau-mib-agt.c b/test/dumps/netsnmp/mau-mib-agt.c new file mode 100644 index 0000000..92e3ace --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "mau-mib.h" + +#include +#include +#include +#include +#include + +static oid mau_mib_caps[] = {0,0}; + +void init_mau_mib(void) +{ +} + +void deinit_mau_mib() +{ + unregister_sysORTable(mau_mib_caps, sizeof(mau_mib_caps)); +} + +int term_mau_mib() +{ + deinit_mau_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/mau-mib-mgr-stub.c b/test/dumps/netsnmp/mau-mib-mgr-stub.c new file mode 100644 index 0000000..45a9e4f --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-mgr-stub.c @@ -0,0 +1,565 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "mau-mib.h" + +static oid rpMauGroupIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 1}; +static oid rpMauPortIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 2}; +static oid rpMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 3}; +static oid rpMauType[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 4}; +static oid rpMauStatus[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 5}; +static oid rpMauMediaAvailable[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 6}; +static oid rpMauMediaAvailableStateExits[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 7}; +static oid rpMauJabberState[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 8}; +static oid rpMauJabberingStateEnters[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 9}; +static oid rpMauFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 10}; +static oid rpJackIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1, 1}; +static oid rpJackType[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1, 2}; +static oid ifMauIfIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 1}; +static oid ifMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 2}; +static oid ifMauType[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 3}; +static oid ifMauStatus[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 4}; +static oid ifMauMediaAvailable[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 5}; +static oid ifMauMediaAvailableStateExits[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 6}; +static oid ifMauJabberState[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 7}; +static oid ifMauJabberingStateEnters[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 8}; +static oid ifMauFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 9}; +static oid ifMauTypeList[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 10}; +static oid ifMauDefaultType[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 11}; +static oid ifMauAutoNegSupported[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 12}; +static oid ifMauTypeListBits[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 13}; +static oid ifMauHCFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 14}; +static oid ifJackIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1, 1}; +static oid ifJackType[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1, 2}; +static oid broadMauIfIndex[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 1}; +static oid broadMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 2}; +static oid broadMauXmtRcvSplitType[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 3}; +static oid broadMauXmtCarrierFreq[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 4}; +static oid broadMauTranslationFreq[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 5}; +static oid ifMauAutoNegAdminStatus[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 1}; +static oid ifMauAutoNegRemoteSignaling[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 2}; +static oid ifMauAutoNegConfig[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 4}; +static oid ifMauAutoNegCapability[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 5}; +static oid ifMauAutoNegCapAdvertised[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 6}; +static oid ifMauAutoNegCapReceived[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 7}; +static oid ifMauAutoNegRestart[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 8}; +static oid ifMauAutoNegCapabilityBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 9}; +static oid ifMauAutoNegCapAdvertisedBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 10}; +static oid ifMauAutoNegCapReceivedBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 11}; +static oid ifMauAutoNegRemoteFaultAdvertised[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 12}; +static oid ifMauAutoNegRemoteFaultReceived[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 13}; + +int mau_mib_mgr_get_rpMauEntry(struct snmp_session *s, rpMauEntry_t **rpMauEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, rpMauGroupIndex, sizeof(rpMauGroupIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauPortIndex, sizeof(rpMauPortIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauIndex, sizeof(rpMauIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauType, sizeof(rpMauType)/sizeof(oid)); + snmp_add_null_var(request, rpMauStatus, sizeof(rpMauStatus)/sizeof(oid)); + snmp_add_null_var(request, rpMauMediaAvailable, sizeof(rpMauMediaAvailable)/sizeof(oid)); + snmp_add_null_var(request, rpMauMediaAvailableStateExits, sizeof(rpMauMediaAvailableStateExits)/sizeof(oid)); + snmp_add_null_var(request, rpMauJabberState, sizeof(rpMauJabberState)/sizeof(oid)); + snmp_add_null_var(request, rpMauJabberingStateEnters, sizeof(rpMauJabberingStateEnters)/sizeof(oid)); + snmp_add_null_var(request, rpMauFalseCarriers, sizeof(rpMauFalseCarriers)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *rpMauEntry = (rpMauEntry_t *) malloc(sizeof(rpMauEntry_t)); + if (! *rpMauEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(rpMauGroupIndex)/sizeof(oid) + && memcmp(vars->name, rpMauGroupIndex, sizeof(rpMauGroupIndex)) == 0) { + (*rpMauEntry)->__rpMauGroupIndex = *vars->val.integer; + (*rpMauEntry)->rpMauGroupIndex = &((*rpMauEntry)->__rpMauGroupIndex); + } + if (vars->name_length > sizeof(rpMauPortIndex)/sizeof(oid) + && memcmp(vars->name, rpMauPortIndex, sizeof(rpMauPortIndex)) == 0) { + (*rpMauEntry)->__rpMauPortIndex = *vars->val.integer; + (*rpMauEntry)->rpMauPortIndex = &((*rpMauEntry)->__rpMauPortIndex); + } + if (vars->name_length > sizeof(rpMauIndex)/sizeof(oid) + && memcmp(vars->name, rpMauIndex, sizeof(rpMauIndex)) == 0) { + (*rpMauEntry)->__rpMauIndex = *vars->val.integer; + (*rpMauEntry)->rpMauIndex = &((*rpMauEntry)->__rpMauIndex); + } + if (vars->name_length > sizeof(rpMauType)/sizeof(oid) + && memcmp(vars->name, rpMauType, sizeof(rpMauType)) == 0) { + } + if (vars->name_length > sizeof(rpMauStatus)/sizeof(oid) + && memcmp(vars->name, rpMauStatus, sizeof(rpMauStatus)) == 0) { + (*rpMauEntry)->__rpMauStatus = *vars->val.integer; + (*rpMauEntry)->rpMauStatus = &((*rpMauEntry)->__rpMauStatus); + } + if (vars->name_length > sizeof(rpMauMediaAvailable)/sizeof(oid) + && memcmp(vars->name, rpMauMediaAvailable, sizeof(rpMauMediaAvailable)) == 0) { + (*rpMauEntry)->__rpMauMediaAvailable = *vars->val.integer; + (*rpMauEntry)->rpMauMediaAvailable = &((*rpMauEntry)->__rpMauMediaAvailable); + } + if (vars->name_length > sizeof(rpMauMediaAvailableStateExits)/sizeof(oid) + && memcmp(vars->name, rpMauMediaAvailableStateExits, sizeof(rpMauMediaAvailableStateExits)) == 0) { + (*rpMauEntry)->__rpMauMediaAvailableStateExits = *vars->val.integer; + (*rpMauEntry)->rpMauMediaAvailableStateExits = &((*rpMauEntry)->__rpMauMediaAvailableStateExits); + } + if (vars->name_length > sizeof(rpMauJabberState)/sizeof(oid) + && memcmp(vars->name, rpMauJabberState, sizeof(rpMauJabberState)) == 0) { + (*rpMauEntry)->__rpMauJabberState = *vars->val.integer; + (*rpMauEntry)->rpMauJabberState = &((*rpMauEntry)->__rpMauJabberState); + } + if (vars->name_length > sizeof(rpMauJabberingStateEnters)/sizeof(oid) + && memcmp(vars->name, rpMauJabberingStateEnters, sizeof(rpMauJabberingStateEnters)) == 0) { + (*rpMauEntry)->__rpMauJabberingStateEnters = *vars->val.integer; + (*rpMauEntry)->rpMauJabberingStateEnters = &((*rpMauEntry)->__rpMauJabberingStateEnters); + } + if (vars->name_length > sizeof(rpMauFalseCarriers)/sizeof(oid) + && memcmp(vars->name, rpMauFalseCarriers, sizeof(rpMauFalseCarriers)) == 0) { + (*rpMauEntry)->__rpMauFalseCarriers = *vars->val.integer; + (*rpMauEntry)->rpMauFalseCarriers = &((*rpMauEntry)->__rpMauFalseCarriers); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_rpJackEntry(struct snmp_session *s, rpJackEntry_t **rpJackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, rpJackType, sizeof(rpJackType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *rpJackEntry = (rpJackEntry_t *) malloc(sizeof(rpJackEntry_t)); + if (! *rpJackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(rpJackType)/sizeof(oid) + && memcmp(vars->name, rpJackType, sizeof(rpJackType)) == 0) { + (*rpJackEntry)->__rpJackType = *vars->val.integer; + (*rpJackEntry)->rpJackType = &((*rpJackEntry)->__rpJackType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifMauEntry(struct snmp_session *s, ifMauEntry_t **ifMauEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifMauIfIndex, sizeof(ifMauIfIndex)/sizeof(oid)); + snmp_add_null_var(request, ifMauIndex, sizeof(ifMauIndex)/sizeof(oid)); + snmp_add_null_var(request, ifMauType, sizeof(ifMauType)/sizeof(oid)); + snmp_add_null_var(request, ifMauStatus, sizeof(ifMauStatus)/sizeof(oid)); + snmp_add_null_var(request, ifMauMediaAvailable, sizeof(ifMauMediaAvailable)/sizeof(oid)); + snmp_add_null_var(request, ifMauMediaAvailableStateExits, sizeof(ifMauMediaAvailableStateExits)/sizeof(oid)); + snmp_add_null_var(request, ifMauJabberState, sizeof(ifMauJabberState)/sizeof(oid)); + snmp_add_null_var(request, ifMauJabberingStateEnters, sizeof(ifMauJabberingStateEnters)/sizeof(oid)); + snmp_add_null_var(request, ifMauFalseCarriers, sizeof(ifMauFalseCarriers)/sizeof(oid)); + snmp_add_null_var(request, ifMauTypeList, sizeof(ifMauTypeList)/sizeof(oid)); + snmp_add_null_var(request, ifMauDefaultType, sizeof(ifMauDefaultType)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegSupported, sizeof(ifMauAutoNegSupported)/sizeof(oid)); + snmp_add_null_var(request, ifMauTypeListBits, sizeof(ifMauTypeListBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauHCFalseCarriers, sizeof(ifMauHCFalseCarriers)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMauEntry = (ifMauEntry_t *) malloc(sizeof(ifMauEntry_t)); + if (! *ifMauEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifMauIfIndex)/sizeof(oid) + && memcmp(vars->name, ifMauIfIndex, sizeof(ifMauIfIndex)) == 0) { + (*ifMauEntry)->__ifMauIfIndex = *vars->val.integer; + (*ifMauEntry)->ifMauIfIndex = &((*ifMauEntry)->__ifMauIfIndex); + } + if (vars->name_length > sizeof(ifMauIndex)/sizeof(oid) + && memcmp(vars->name, ifMauIndex, sizeof(ifMauIndex)) == 0) { + (*ifMauEntry)->__ifMauIndex = *vars->val.integer; + (*ifMauEntry)->ifMauIndex = &((*ifMauEntry)->__ifMauIndex); + } + if (vars->name_length > sizeof(ifMauType)/sizeof(oid) + && memcmp(vars->name, ifMauType, sizeof(ifMauType)) == 0) { + } + if (vars->name_length > sizeof(ifMauStatus)/sizeof(oid) + && memcmp(vars->name, ifMauStatus, sizeof(ifMauStatus)) == 0) { + (*ifMauEntry)->__ifMauStatus = *vars->val.integer; + (*ifMauEntry)->ifMauStatus = &((*ifMauEntry)->__ifMauStatus); + } + if (vars->name_length > sizeof(ifMauMediaAvailable)/sizeof(oid) + && memcmp(vars->name, ifMauMediaAvailable, sizeof(ifMauMediaAvailable)) == 0) { + (*ifMauEntry)->__ifMauMediaAvailable = *vars->val.integer; + (*ifMauEntry)->ifMauMediaAvailable = &((*ifMauEntry)->__ifMauMediaAvailable); + } + if (vars->name_length > sizeof(ifMauMediaAvailableStateExits)/sizeof(oid) + && memcmp(vars->name, ifMauMediaAvailableStateExits, sizeof(ifMauMediaAvailableStateExits)) == 0) { + (*ifMauEntry)->__ifMauMediaAvailableStateExits = *vars->val.integer; + (*ifMauEntry)->ifMauMediaAvailableStateExits = &((*ifMauEntry)->__ifMauMediaAvailableStateExits); + } + if (vars->name_length > sizeof(ifMauJabberState)/sizeof(oid) + && memcmp(vars->name, ifMauJabberState, sizeof(ifMauJabberState)) == 0) { + (*ifMauEntry)->__ifMauJabberState = *vars->val.integer; + (*ifMauEntry)->ifMauJabberState = &((*ifMauEntry)->__ifMauJabberState); + } + if (vars->name_length > sizeof(ifMauJabberingStateEnters)/sizeof(oid) + && memcmp(vars->name, ifMauJabberingStateEnters, sizeof(ifMauJabberingStateEnters)) == 0) { + (*ifMauEntry)->__ifMauJabberingStateEnters = *vars->val.integer; + (*ifMauEntry)->ifMauJabberingStateEnters = &((*ifMauEntry)->__ifMauJabberingStateEnters); + } + if (vars->name_length > sizeof(ifMauFalseCarriers)/sizeof(oid) + && memcmp(vars->name, ifMauFalseCarriers, sizeof(ifMauFalseCarriers)) == 0) { + (*ifMauEntry)->__ifMauFalseCarriers = *vars->val.integer; + (*ifMauEntry)->ifMauFalseCarriers = &((*ifMauEntry)->__ifMauFalseCarriers); + } + if (vars->name_length > sizeof(ifMauTypeList)/sizeof(oid) + && memcmp(vars->name, ifMauTypeList, sizeof(ifMauTypeList)) == 0) { + (*ifMauEntry)->__ifMauTypeList = *vars->val.integer; + (*ifMauEntry)->ifMauTypeList = &((*ifMauEntry)->__ifMauTypeList); + } + if (vars->name_length > sizeof(ifMauDefaultType)/sizeof(oid) + && memcmp(vars->name, ifMauDefaultType, sizeof(ifMauDefaultType)) == 0) { + } + if (vars->name_length > sizeof(ifMauAutoNegSupported)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegSupported, sizeof(ifMauAutoNegSupported)) == 0) { + (*ifMauEntry)->__ifMauAutoNegSupported = *vars->val.integer; + (*ifMauEntry)->ifMauAutoNegSupported = &((*ifMauEntry)->__ifMauAutoNegSupported); + } + if (vars->name_length > sizeof(ifMauTypeListBits)/sizeof(oid) + && memcmp(vars->name, ifMauTypeListBits, sizeof(ifMauTypeListBits)) == 0) { + memcpy((*ifMauEntry)->__ifMauTypeListBits, vars->val.string, vars->val_len); + (*ifMauEntry)->_ifMauTypeListBitsLength = vars->val_len; + (*ifMauEntry)->ifMauTypeListBits = (*ifMauEntry)->__ifMauTypeListBits; + } + if (vars->name_length > sizeof(ifMauHCFalseCarriers)/sizeof(oid) + && memcmp(vars->name, ifMauHCFalseCarriers, sizeof(ifMauHCFalseCarriers)) == 0) { + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifJackEntry(struct snmp_session *s, ifJackEntry_t **ifJackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifJackType, sizeof(ifJackType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifJackEntry = (ifJackEntry_t *) malloc(sizeof(ifJackEntry_t)); + if (! *ifJackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifJackType)/sizeof(oid) + && memcmp(vars->name, ifJackType, sizeof(ifJackType)) == 0) { + (*ifJackEntry)->__ifJackType = *vars->val.integer; + (*ifJackEntry)->ifJackType = &((*ifJackEntry)->__ifJackType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_broadMauBasicEntry(struct snmp_session *s, broadMauBasicEntry_t **broadMauBasicEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, broadMauIfIndex, sizeof(broadMauIfIndex)/sizeof(oid)); + snmp_add_null_var(request, broadMauIndex, sizeof(broadMauIndex)/sizeof(oid)); + snmp_add_null_var(request, broadMauXmtRcvSplitType, sizeof(broadMauXmtRcvSplitType)/sizeof(oid)); + snmp_add_null_var(request, broadMauXmtCarrierFreq, sizeof(broadMauXmtCarrierFreq)/sizeof(oid)); + snmp_add_null_var(request, broadMauTranslationFreq, sizeof(broadMauTranslationFreq)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *broadMauBasicEntry = (broadMauBasicEntry_t *) malloc(sizeof(broadMauBasicEntry_t)); + if (! *broadMauBasicEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(broadMauIfIndex)/sizeof(oid) + && memcmp(vars->name, broadMauIfIndex, sizeof(broadMauIfIndex)) == 0) { + (*broadMauBasicEntry)->__broadMauIfIndex = *vars->val.integer; + (*broadMauBasicEntry)->broadMauIfIndex = &((*broadMauBasicEntry)->__broadMauIfIndex); + } + if (vars->name_length > sizeof(broadMauIndex)/sizeof(oid) + && memcmp(vars->name, broadMauIndex, sizeof(broadMauIndex)) == 0) { + (*broadMauBasicEntry)->__broadMauIndex = *vars->val.integer; + (*broadMauBasicEntry)->broadMauIndex = &((*broadMauBasicEntry)->__broadMauIndex); + } + if (vars->name_length > sizeof(broadMauXmtRcvSplitType)/sizeof(oid) + && memcmp(vars->name, broadMauXmtRcvSplitType, sizeof(broadMauXmtRcvSplitType)) == 0) { + (*broadMauBasicEntry)->__broadMauXmtRcvSplitType = *vars->val.integer; + (*broadMauBasicEntry)->broadMauXmtRcvSplitType = &((*broadMauBasicEntry)->__broadMauXmtRcvSplitType); + } + if (vars->name_length > sizeof(broadMauXmtCarrierFreq)/sizeof(oid) + && memcmp(vars->name, broadMauXmtCarrierFreq, sizeof(broadMauXmtCarrierFreq)) == 0) { + (*broadMauBasicEntry)->__broadMauXmtCarrierFreq = *vars->val.integer; + (*broadMauBasicEntry)->broadMauXmtCarrierFreq = &((*broadMauBasicEntry)->__broadMauXmtCarrierFreq); + } + if (vars->name_length > sizeof(broadMauTranslationFreq)/sizeof(oid) + && memcmp(vars->name, broadMauTranslationFreq, sizeof(broadMauTranslationFreq)) == 0) { + (*broadMauBasicEntry)->__broadMauTranslationFreq = *vars->val.integer; + (*broadMauBasicEntry)->broadMauTranslationFreq = &((*broadMauBasicEntry)->__broadMauTranslationFreq); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifMauAutoNegEntry(struct snmp_session *s, ifMauAutoNegEntry_t **ifMauAutoNegEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifMauAutoNegAdminStatus, sizeof(ifMauAutoNegAdminStatus)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteSignaling, sizeof(ifMauAutoNegRemoteSignaling)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegConfig, sizeof(ifMauAutoNegConfig)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapability, sizeof(ifMauAutoNegCapability)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapAdvertised, sizeof(ifMauAutoNegCapAdvertised)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapReceived, sizeof(ifMauAutoNegCapReceived)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRestart, sizeof(ifMauAutoNegRestart)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapabilityBits, sizeof(ifMauAutoNegCapabilityBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapAdvertisedBits, sizeof(ifMauAutoNegCapAdvertisedBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapReceivedBits, sizeof(ifMauAutoNegCapReceivedBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteFaultAdvertised, sizeof(ifMauAutoNegRemoteFaultAdvertised)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteFaultReceived, sizeof(ifMauAutoNegRemoteFaultReceived)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMauAutoNegEntry = (ifMauAutoNegEntry_t *) malloc(sizeof(ifMauAutoNegEntry_t)); + if (! *ifMauAutoNegEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifMauAutoNegAdminStatus)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegAdminStatus, sizeof(ifMauAutoNegAdminStatus)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegAdminStatus = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegAdminStatus = &((*ifMauAutoNegEntry)->__ifMauAutoNegAdminStatus); + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteSignaling)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteSignaling, sizeof(ifMauAutoNegRemoteSignaling)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteSignaling = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteSignaling = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteSignaling); + } + if (vars->name_length > sizeof(ifMauAutoNegConfig)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegConfig, sizeof(ifMauAutoNegConfig)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegConfig = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegConfig = &((*ifMauAutoNegEntry)->__ifMauAutoNegConfig); + } + if (vars->name_length > sizeof(ifMauAutoNegCapability)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapability, sizeof(ifMauAutoNegCapability)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapability = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapability = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapability); + } + if (vars->name_length > sizeof(ifMauAutoNegCapAdvertised)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapAdvertised, sizeof(ifMauAutoNegCapAdvertised)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertised = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapAdvertised = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertised); + } + if (vars->name_length > sizeof(ifMauAutoNegCapReceived)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapReceived, sizeof(ifMauAutoNegCapReceived)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapReceived = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapReceived = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapReceived); + } + if (vars->name_length > sizeof(ifMauAutoNegRestart)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRestart, sizeof(ifMauAutoNegRestart)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRestart = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRestart = &((*ifMauAutoNegEntry)->__ifMauAutoNegRestart); + } + if (vars->name_length > sizeof(ifMauAutoNegCapabilityBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapabilityBits, sizeof(ifMauAutoNegCapabilityBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapabilityBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapabilityBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapabilityBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapabilityBits; + } + if (vars->name_length > sizeof(ifMauAutoNegCapAdvertisedBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapAdvertisedBits, sizeof(ifMauAutoNegCapAdvertisedBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertisedBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapAdvertisedBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapAdvertisedBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertisedBits; + } + if (vars->name_length > sizeof(ifMauAutoNegCapReceivedBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapReceivedBits, sizeof(ifMauAutoNegCapReceivedBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapReceivedBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapReceivedBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapReceivedBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapReceivedBits; + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteFaultAdvertised)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteFaultAdvertised, sizeof(ifMauAutoNegRemoteFaultAdvertised)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultAdvertised = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteFaultAdvertised = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultAdvertised); + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteFaultReceived)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteFaultReceived, sizeof(ifMauAutoNegRemoteFaultReceived)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultReceived = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteFaultReceived = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultReceived); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/mau-mib.h b/test/dumps/netsnmp/mau-mib.h new file mode 100644 index 0000000..77d6e77 --- /dev/null +++ b/test/dumps/netsnmp/mau-mib.h @@ -0,0 +1,300 @@ +/* + * This C header file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the MAU-MIB module. + * + * $Id: mau-mib.h 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#ifndef _MAU_MIB_H_ +#define _MAU_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for MAU-MIB::rpMauEntry. + */ + +typedef struct rpMauEntry { + int32_t *rpMauGroupIndex; + int32_t *rpMauPortIndex; + int32_t *rpMauIndex; + uint32_t *rpMauType; + size_t _rpMauTypeLength; + int32_t *rpMauStatus; + int32_t *rpMauMediaAvailable; + uint32_t *rpMauMediaAvailableStateExits; + int32_t *rpMauJabberState; + uint32_t *rpMauJabberingStateEnters; + uint32_t *rpMauFalseCarriers; + void *_clientData; /* pointer to client data structure */ + struct rpMauEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __rpMauGroupIndex; + int32_t __rpMauPortIndex; + int32_t __rpMauIndex; + uint32_t __rpMauType[128]; + int32_t __rpMauStatus; + int32_t __rpMauMediaAvailable; + uint32_t __rpMauMediaAvailableStateExits; + int32_t __rpMauJabberState; + uint32_t __rpMauJabberingStateEnters; + uint32_t __rpMauFalseCarriers; +} rpMauEntry_t; + +/* + * C manager interface stubs for MAU-MIB::rpMauEntry. + */ + +extern int +mau_mib_mgr_get_rpMauEntry(struct snmp_session *s, rpMauEntry_t **rpMauEntry); + +/* + * C agent interface stubs for MAU-MIB::rpMauEntry. + */ + +extern int +mau_mib_agt_read_rpMauEntry(rpMauEntry_t *rpMauEntry); +extern int +mau_mib_agt_register_rpMauEntry(); + +/* + * C type definitions for MAU-MIB::rpJackEntry. + */ + +typedef struct rpJackEntry { + int32_t *rpJackIndex; + int32_t *rpJackType; + void *_clientData; /* pointer to client data structure */ + struct rpJackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __rpJackIndex; + int32_t __rpJackType; +} rpJackEntry_t; + +/* + * C manager interface stubs for MAU-MIB::rpJackEntry. + */ + +extern int +mau_mib_mgr_get_rpJackEntry(struct snmp_session *s, rpJackEntry_t **rpJackEntry); + +/* + * C agent interface stubs for MAU-MIB::rpJackEntry. + */ + +extern int +mau_mib_agt_read_rpJackEntry(rpJackEntry_t *rpJackEntry); +extern int +mau_mib_agt_register_rpJackEntry(); + +/* + * C type definitions for MAU-MIB::ifMauEntry. + */ + +typedef struct ifMauEntry { + int32_t *ifMauIfIndex; + int32_t *ifMauIndex; + uint32_t *ifMauType; + size_t _ifMauTypeLength; + int32_t *ifMauStatus; + int32_t *ifMauMediaAvailable; + uint32_t *ifMauMediaAvailableStateExits; + int32_t *ifMauJabberState; + uint32_t *ifMauJabberingStateEnters; + uint32_t *ifMauFalseCarriers; + int32_t *ifMauTypeList; + uint32_t *ifMauDefaultType; + size_t _ifMauDefaultTypeLength; + int32_t *ifMauAutoNegSupported; + u_char *ifMauTypeListBits; + size_t _ifMauTypeListBitsLength; + uint64_t *ifMauHCFalseCarriers; + void *_clientData; /* pointer to client data structure */ + struct ifMauEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifMauIfIndex; + int32_t __ifMauIndex; + uint32_t __ifMauType[128]; + int32_t __ifMauStatus; + int32_t __ifMauMediaAvailable; + uint32_t __ifMauMediaAvailableStateExits; + int32_t __ifMauJabberState; + uint32_t __ifMauJabberingStateEnters; + uint32_t __ifMauFalseCarriers; + int32_t __ifMauTypeList; + uint32_t __ifMauDefaultType[128]; + int32_t __ifMauAutoNegSupported; + u_char __ifMauTypeListBits[7]; + uint64_t __ifMauHCFalseCarriers; +} ifMauEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifMauEntry. + */ + +extern int +mau_mib_mgr_get_ifMauEntry(struct snmp_session *s, ifMauEntry_t **ifMauEntry); + +/* + * C agent interface stubs for MAU-MIB::ifMauEntry. + */ + +extern int +mau_mib_agt_read_ifMauEntry(ifMauEntry_t *ifMauEntry); +extern int +mau_mib_agt_register_ifMauEntry(); + +/* + * C type definitions for MAU-MIB::ifJackEntry. + */ + +typedef struct ifJackEntry { + int32_t *ifJackIndex; + int32_t *ifJackType; + void *_clientData; /* pointer to client data structure */ + struct ifJackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifJackIndex; + int32_t __ifJackType; +} ifJackEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifJackEntry. + */ + +extern int +mau_mib_mgr_get_ifJackEntry(struct snmp_session *s, ifJackEntry_t **ifJackEntry); + +/* + * C agent interface stubs for MAU-MIB::ifJackEntry. + */ + +extern int +mau_mib_agt_read_ifJackEntry(ifJackEntry_t *ifJackEntry); +extern int +mau_mib_agt_register_ifJackEntry(); + +/* + * C type definitions for MAU-MIB::broadMauBasicEntry. + */ + +typedef struct broadMauBasicEntry { + int32_t *broadMauIfIndex; + int32_t *broadMauIndex; + int32_t *broadMauXmtRcvSplitType; + int32_t *broadMauXmtCarrierFreq; + int32_t *broadMauTranslationFreq; + void *_clientData; /* pointer to client data structure */ + struct broadMauBasicEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __broadMauIfIndex; + int32_t __broadMauIndex; + int32_t __broadMauXmtRcvSplitType; + int32_t __broadMauXmtCarrierFreq; + int32_t __broadMauTranslationFreq; +} broadMauBasicEntry_t; + +/* + * C manager interface stubs for MAU-MIB::broadMauBasicEntry. + */ + +extern int +mau_mib_mgr_get_broadMauBasicEntry(struct snmp_session *s, broadMauBasicEntry_t **broadMauBasicEntry); + +/* + * C agent interface stubs for MAU-MIB::broadMauBasicEntry. + */ + +extern int +mau_mib_agt_read_broadMauBasicEntry(broadMauBasicEntry_t *broadMauBasicEntry); +extern int +mau_mib_agt_register_broadMauBasicEntry(); + +/* + * C type definitions for MAU-MIB::ifMauAutoNegEntry. + */ + +typedef struct ifMauAutoNegEntry { + int32_t *ifMauAutoNegAdminStatus; + int32_t *ifMauAutoNegRemoteSignaling; + int32_t *ifMauAutoNegConfig; + int32_t *ifMauAutoNegCapability; + int32_t *ifMauAutoNegCapAdvertised; + int32_t *ifMauAutoNegCapReceived; + int32_t *ifMauAutoNegRestart; + u_char *ifMauAutoNegCapabilityBits; + size_t _ifMauAutoNegCapabilityBitsLength; + u_char *ifMauAutoNegCapAdvertisedBits; + size_t _ifMauAutoNegCapAdvertisedBitsLength; + u_char *ifMauAutoNegCapReceivedBits; + size_t _ifMauAutoNegCapReceivedBitsLength; + int32_t *ifMauAutoNegRemoteFaultAdvertised; + int32_t *ifMauAutoNegRemoteFaultReceived; + void *_clientData; /* pointer to client data structure */ + struct ifMauAutoNegEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifMauAutoNegAdminStatus; + int32_t __ifMauAutoNegRemoteSignaling; + int32_t __ifMauAutoNegConfig; + int32_t __ifMauAutoNegCapability; + int32_t __ifMauAutoNegCapAdvertised; + int32_t __ifMauAutoNegCapReceived; + int32_t __ifMauAutoNegRestart; + u_char __ifMauAutoNegCapabilityBits[2]; + u_char __ifMauAutoNegCapAdvertisedBits[2]; + u_char __ifMauAutoNegCapReceivedBits[2]; + int32_t __ifMauAutoNegRemoteFaultAdvertised; + int32_t __ifMauAutoNegRemoteFaultReceived; +} ifMauAutoNegEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifMauAutoNegEntry. + */ + +extern int +mau_mib_mgr_get_ifMauAutoNegEntry(struct snmp_session *s, ifMauAutoNegEntry_t **ifMauAutoNegEntry); + +/* + * C agent interface stubs for MAU-MIB::ifMauAutoNegEntry. + */ + +extern int +mau_mib_agt_read_ifMauAutoNegEntry(ifMauAutoNegEntry_t *ifMauAutoNegEntry); +extern int +mau_mib_agt_register_ifMauAutoNegEntry(); + + +typedef struct mau_mib { + rpMauEntry_t *rpMauEntry; + rpJackEntry_t *rpJackEntry; + ifMauEntry_t *ifMauEntry; + ifJackEntry_t *ifJackEntry; + broadMauBasicEntry_t *broadMauBasicEntry; + ifMauAutoNegEntry_t *ifMauAutoNegEntry; +} mau_mib_t; + +/* + * Initialization function: + */ + +void mau_mib_agt_init(void); + +#endif /* _MAU_MIB_H_ */ diff --git a/test/dumps/netsnmp/rmon2-mib-agt-stub.c b/test/dumps/netsnmp/rmon2-mib-agt-stub.c new file mode 100644 index 0000000..2e66a8e --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-agt-stub.c @@ -0,0 +1,3648 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "rmon2-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_etherStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_tokenRingMLStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_tokenRingPStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_historyControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hostControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_matrixControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_channel2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_filter2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ringStationControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_sourceRoutingStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDir_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDirEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDistControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDistStatsEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMap_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMapControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMapEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hlHostControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlHostEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hlMatrixControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixSDEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixDSEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixTopNControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixTopNEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alHostEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixSDEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixDSEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixTopNControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixTopNEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryObjectEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_probeConfig_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_serialConfigEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_netConfigEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_trapDestEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_serialConnectionEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_filterProtocolDirDataLocalIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_filterProtocolDirLocalIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirDescr_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirAddressMapConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirHostConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirMatrixConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlNlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlAlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlNlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlAlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlMatrixIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlRateBase_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlTimeRemaining_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlRequestedSize_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlMatrixIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlRateBase_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlTimeRemaining_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlRequestedSize_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlObjects_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlBucketsRequested_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlInterval_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryObjectVariable_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryObjectSampleType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDateTime_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeResetControl_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadFile_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadTFTPServer_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadAction_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialMode_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialProtocol_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialTimeout_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemInitString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemHangUpString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemConnectResp_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemNoConnectResp_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialDialoutTimeout_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigIPAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigSubnetMask_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netDefaultGateway_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestCommunity_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestProtocol_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectDestIpAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectDialString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchConnectSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchDisconnectSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchResetSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define ETHERSTATSDROPPEDFRAMES 1 +#define ETHERSTATSCREATETIME 2 + +static oid etherStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1}; + +struct variable etherStats2Entry_variables[] = { + { ETHERSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_etherStats2Entry_stub, 1, {1} }, + { ETHERSTATSCREATETIME, ASN_INTEGER, RONLY, read_etherStats2Entry_stub, 1, {2} }, +}; + +#define TOKENRINGMLSTATSDROPPEDFRAMES 1 +#define TOKENRINGMLSTATSCREATETIME 2 + +static oid tokenRingMLStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1}; + +struct variable tokenRingMLStats2Entry_variables[] = { + { TOKENRINGMLSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_tokenRingMLStats2Entry_stub, 1, {1} }, + { TOKENRINGMLSTATSCREATETIME, ASN_INTEGER, RONLY, read_tokenRingMLStats2Entry_stub, 1, {2} }, +}; + +#define TOKENRINGPSTATSDROPPEDFRAMES 1 +#define TOKENRINGPSTATSCREATETIME 2 + +static oid tokenRingPStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1}; + +struct variable tokenRingPStats2Entry_variables[] = { + { TOKENRINGPSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_tokenRingPStats2Entry_stub, 1, {1} }, + { TOKENRINGPSTATSCREATETIME, ASN_INTEGER, RONLY, read_tokenRingPStats2Entry_stub, 1, {2} }, +}; + +#define HISTORYCONTROLDROPPEDFRAMES 1 + +static oid historyControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1}; + +struct variable historyControl2Entry_variables[] = { + { HISTORYCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_historyControl2Entry_stub, 1, {1} }, +}; + +#define HOSTCONTROLDROPPEDFRAMES 1 +#define HOSTCONTROLCREATETIME 2 + +static oid hostControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1}; + +struct variable hostControl2Entry_variables[] = { + { HOSTCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hostControl2Entry_stub, 1, {1} }, + { HOSTCONTROLCREATETIME, ASN_INTEGER, RONLY, read_hostControl2Entry_stub, 1, {2} }, +}; + +#define MATRIXCONTROLDROPPEDFRAMES 1 +#define MATRIXCONTROLCREATETIME 2 + +static oid matrixControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1}; + +struct variable matrixControl2Entry_variables[] = { + { MATRIXCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_matrixControl2Entry_stub, 1, {1} }, + { MATRIXCONTROLCREATETIME, ASN_INTEGER, RONLY, read_matrixControl2Entry_stub, 1, {2} }, +}; + +#define CHANNELDROPPEDFRAMES 1 +#define CHANNELCREATETIME 2 + +static oid channel2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1}; + +struct variable channel2Entry_variables[] = { + { CHANNELDROPPEDFRAMES, ASN_INTEGER, RONLY, read_channel2Entry_stub, 1, {1} }, + { CHANNELCREATETIME, ASN_INTEGER, RONLY, read_channel2Entry_stub, 1, {2} }, +}; + +#define FILTERPROTOCOLDIRDATALOCALINDEX 1 +#define FILTERPROTOCOLDIRLOCALINDEX 2 + +static oid filter2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1}; + +struct variable filter2Entry_variables[] = { + { FILTERPROTOCOLDIRDATALOCALINDEX, ASN_INTEGER, RWRITE, read_filter2Entry_stub, 1, {1} }, + { FILTERPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RWRITE, read_filter2Entry_stub, 1, {2} }, +}; + +#define RINGSTATIONCONTROLDROPPEDFRAMES 1 +#define RINGSTATIONCONTROLCREATETIME 2 + +static oid ringStationControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1}; + +struct variable ringStationControl2Entry_variables[] = { + { RINGSTATIONCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_ringStationControl2Entry_stub, 1, {1} }, + { RINGSTATIONCONTROLCREATETIME, ASN_INTEGER, RONLY, read_ringStationControl2Entry_stub, 1, {2} }, +}; + +#define SOURCEROUTINGSTATSDROPPEDFRAMES 1 +#define SOURCEROUTINGSTATSCREATETIME 2 + +static oid sourceRoutingStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1}; + +struct variable sourceRoutingStats2Entry_variables[] = { + { SOURCEROUTINGSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_sourceRoutingStats2Entry_stub, 1, {1} }, + { SOURCEROUTINGSTATSCREATETIME, ASN_INTEGER, RONLY, read_sourceRoutingStats2Entry_stub, 1, {2} }, +}; + +#define PROTOCOLDIRLASTCHANGE 1 + +static oid protocolDir_base[] = {1, 3, 6, 1, 2, 1, 16, 11}; + +struct variable protocolDir_variables[] = { + { PROTOCOLDIRLASTCHANGE, ASN_INTEGER, RONLY, read_protocolDir_stub, 1, {1} }, +}; + +#define PROTOCOLDIRLOCALINDEX 3 +#define PROTOCOLDIRDESCR 4 +#define PROTOCOLDIRTYPE 5 +#define PROTOCOLDIRADDRESSMAPCONFIG 6 +#define PROTOCOLDIRHOSTCONFIG 7 +#define PROTOCOLDIRMATRIXCONFIG 8 +#define PROTOCOLDIROWNER 9 +#define PROTOCOLDIRSTATUS 10 + +static oid protocolDirEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1}; + +struct variable protocolDirEntry_variables[] = { + { PROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_protocolDirEntry_stub, 1, {3} }, + { PROTOCOLDIRDESCR, ASN_OCTET_STR, RWRITE, read_protocolDirEntry_stub, 1, {4} }, + { PROTOCOLDIRTYPE, ASN_OCTET_STR, RONLY, read_protocolDirEntry_stub, 1, {5} }, + { PROTOCOLDIRADDRESSMAPCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {6} }, + { PROTOCOLDIRHOSTCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {7} }, + { PROTOCOLDIRMATRIXCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {8} }, + { PROTOCOLDIROWNER, ASN_OCTET_STR, RWRITE, read_protocolDirEntry_stub, 1, {9} }, + { PROTOCOLDIRSTATUS, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {10} }, +}; + +#define PROTOCOLDISTCONTROLDATASOURCE 2 +#define PROTOCOLDISTCONTROLDROPPEDFRAMES 3 +#define PROTOCOLDISTCONTROLCREATETIME 4 +#define PROTOCOLDISTCONTROLOWNER 5 +#define PROTOCOLDISTCONTROLSTATUS 6 + +static oid protocolDistControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1}; + +struct variable protocolDistControlEntry_variables[] = { + { PROTOCOLDISTCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_protocolDistControlEntry_stub, 1, {2} }, + { PROTOCOLDISTCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_protocolDistControlEntry_stub, 1, {3} }, + { PROTOCOLDISTCONTROLCREATETIME, ASN_INTEGER, RONLY, read_protocolDistControlEntry_stub, 1, {4} }, + { PROTOCOLDISTCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_protocolDistControlEntry_stub, 1, {5} }, + { PROTOCOLDISTCONTROLSTATUS, ASN_INTEGER, RWRITE, read_protocolDistControlEntry_stub, 1, {6} }, +}; + +#define PROTOCOLDISTSTATSPKTS 1 +#define PROTOCOLDISTSTATSOCTETS 2 + +static oid protocolDistStatsEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1}; + +struct variable protocolDistStatsEntry_variables[] = { + { PROTOCOLDISTSTATSPKTS, ASN_INTEGER, RONLY, read_protocolDistStatsEntry_stub, 1, {1} }, + { PROTOCOLDISTSTATSOCTETS, ASN_INTEGER, RONLY, read_protocolDistStatsEntry_stub, 1, {2} }, +}; + +#define ADDRESSMAPINSERTS 1 +#define ADDRESSMAPDELETES 2 +#define ADDRESSMAPMAXDESIREDENTRIES 3 + +static oid addressMap_base[] = {1, 3, 6, 1, 2, 1, 16, 13}; + +struct variable addressMap_variables[] = { + { ADDRESSMAPINSERTS, ASN_INTEGER, RONLY, read_addressMap_stub, 1, {1} }, + { ADDRESSMAPDELETES, ASN_INTEGER, RONLY, read_addressMap_stub, 1, {2} }, + { ADDRESSMAPMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_addressMap_stub, 1, {3} }, +}; + +#define ADDRESSMAPCONTROLDATASOURCE 2 +#define ADDRESSMAPCONTROLDROPPEDFRAMES 3 +#define ADDRESSMAPCONTROLOWNER 4 +#define ADDRESSMAPCONTROLSTATUS 5 + +static oid addressMapControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1}; + +struct variable addressMapControlEntry_variables[] = { + { ADDRESSMAPCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_addressMapControlEntry_stub, 1, {2} }, + { ADDRESSMAPCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_addressMapControlEntry_stub, 1, {3} }, + { ADDRESSMAPCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_addressMapControlEntry_stub, 1, {4} }, + { ADDRESSMAPCONTROLSTATUS, ASN_INTEGER, RWRITE, read_addressMapControlEntry_stub, 1, {5} }, +}; + +#define ADDRESSMAPPHYSICALADDRESS 4 +#define ADDRESSMAPLASTCHANGE 5 + +static oid addressMapEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1}; + +struct variable addressMapEntry_variables[] = { + { ADDRESSMAPPHYSICALADDRESS, ASN_OCTET_STR, RONLY, read_addressMapEntry_stub, 1, {4} }, + { ADDRESSMAPLASTCHANGE, ASN_INTEGER, RONLY, read_addressMapEntry_stub, 1, {5} }, +}; + +#define HLHOSTCONTROLDATASOURCE 2 +#define HLHOSTCONTROLNLDROPPEDFRAMES 3 +#define HLHOSTCONTROLNLINSERTS 4 +#define HLHOSTCONTROLNLDELETES 5 +#define HLHOSTCONTROLNLMAXDESIREDENTRIES 6 +#define HLHOSTCONTROLALDROPPEDFRAMES 7 +#define HLHOSTCONTROLALINSERTS 8 +#define HLHOSTCONTROLALDELETES 9 +#define HLHOSTCONTROLALMAXDESIREDENTRIES 10 +#define HLHOSTCONTROLOWNER 11 +#define HLHOSTCONTROLSTATUS 12 + +static oid hlHostControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1}; + +struct variable hlHostControlEntry_variables[] = { + { HLHOSTCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_hlHostControlEntry_stub, 1, {2} }, + { HLHOSTCONTROLNLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {3} }, + { HLHOSTCONTROLNLINSERTS, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {4} }, + { HLHOSTCONTROLNLDELETES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {5} }, + { HLHOSTCONTROLNLMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {6} }, + { HLHOSTCONTROLALDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {7} }, + { HLHOSTCONTROLALINSERTS, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {8} }, + { HLHOSTCONTROLALDELETES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {9} }, + { HLHOSTCONTROLALMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {10} }, + { HLHOSTCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_hlHostControlEntry_stub, 1, {11} }, + { HLHOSTCONTROLSTATUS, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {12} }, +}; + +#define NLHOSTINPKTS 3 +#define NLHOSTOUTPKTS 4 +#define NLHOSTINOCTETS 5 +#define NLHOSTOUTOCTETS 6 +#define NLHOSTOUTMACNONUNICASTPKTS 7 +#define NLHOSTCREATETIME 8 + +static oid nlHostEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1}; + +struct variable nlHostEntry_variables[] = { + { NLHOSTINPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {3} }, + { NLHOSTOUTPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {4} }, + { NLHOSTINOCTETS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {5} }, + { NLHOSTOUTOCTETS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {6} }, + { NLHOSTOUTMACNONUNICASTPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {7} }, + { NLHOSTCREATETIME, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {8} }, +}; + +#define HLMATRIXCONTROLDATASOURCE 2 +#define HLMATRIXCONTROLNLDROPPEDFRAMES 3 +#define HLMATRIXCONTROLNLINSERTS 4 +#define HLMATRIXCONTROLNLDELETES 5 +#define HLMATRIXCONTROLNLMAXDESIREDENTRIES 6 +#define HLMATRIXCONTROLALDROPPEDFRAMES 7 +#define HLMATRIXCONTROLALINSERTS 8 +#define HLMATRIXCONTROLALDELETES 9 +#define HLMATRIXCONTROLALMAXDESIREDENTRIES 10 +#define HLMATRIXCONTROLOWNER 11 +#define HLMATRIXCONTROLSTATUS 12 + +static oid hlMatrixControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1}; + +struct variable hlMatrixControlEntry_variables[] = { + { HLMATRIXCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_hlMatrixControlEntry_stub, 1, {2} }, + { HLMATRIXCONTROLNLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {3} }, + { HLMATRIXCONTROLNLINSERTS, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {4} }, + { HLMATRIXCONTROLNLDELETES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {5} }, + { HLMATRIXCONTROLNLMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {6} }, + { HLMATRIXCONTROLALDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {7} }, + { HLMATRIXCONTROLALINSERTS, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {8} }, + { HLMATRIXCONTROLALDELETES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {9} }, + { HLMATRIXCONTROLALMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {10} }, + { HLMATRIXCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_hlMatrixControlEntry_stub, 1, {11} }, + { HLMATRIXCONTROLSTATUS, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {12} }, +}; + +#define NLMATRIXSDPKTS 4 +#define NLMATRIXSDOCTETS 5 +#define NLMATRIXSDCREATETIME 6 + +static oid nlMatrixSDEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1}; + +struct variable nlMatrixSDEntry_variables[] = { + { NLMATRIXSDPKTS, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {4} }, + { NLMATRIXSDOCTETS, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {5} }, + { NLMATRIXSDCREATETIME, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {6} }, +}; + +#define NLMATRIXDSPKTS 4 +#define NLMATRIXDSOCTETS 5 +#define NLMATRIXDSCREATETIME 6 + +static oid nlMatrixDSEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1}; + +struct variable nlMatrixDSEntry_variables[] = { + { NLMATRIXDSPKTS, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {4} }, + { NLMATRIXDSOCTETS, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {5} }, + { NLMATRIXDSCREATETIME, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {6} }, +}; + +#define NLMATRIXTOPNCONTROLMATRIXINDEX 2 +#define NLMATRIXTOPNCONTROLRATEBASE 3 +#define NLMATRIXTOPNCONTROLTIMEREMAINING 4 +#define NLMATRIXTOPNCONTROLGENERATEDREPORTS 5 +#define NLMATRIXTOPNCONTROLDURATION 6 +#define NLMATRIXTOPNCONTROLREQUESTEDSIZE 7 +#define NLMATRIXTOPNCONTROLGRANTEDSIZE 8 +#define NLMATRIXTOPNCONTROLSTARTTIME 9 +#define NLMATRIXTOPNCONTROLOWNER 10 +#define NLMATRIXTOPNCONTROLSTATUS 11 + +static oid nlMatrixTopNControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1}; + +struct variable nlMatrixTopNControlEntry_variables[] = { + { NLMATRIXTOPNCONTROLMATRIXINDEX, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {2} }, + { NLMATRIXTOPNCONTROLRATEBASE, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {3} }, + { NLMATRIXTOPNCONTROLTIMEREMAINING, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {4} }, + { NLMATRIXTOPNCONTROLGENERATEDREPORTS, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {5} }, + { NLMATRIXTOPNCONTROLDURATION, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {6} }, + { NLMATRIXTOPNCONTROLREQUESTEDSIZE, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {7} }, + { NLMATRIXTOPNCONTROLGRANTEDSIZE, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {8} }, + { NLMATRIXTOPNCONTROLSTARTTIME, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {9} }, + { NLMATRIXTOPNCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {10} }, + { NLMATRIXTOPNCONTROLSTATUS, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {11} }, +}; + +#define NLMATRIXTOPNPROTOCOLDIRLOCALINDEX 2 +#define NLMATRIXTOPNSOURCEADDRESS 3 +#define NLMATRIXTOPNDESTADDRESS 4 +#define NLMATRIXTOPNPKTRATE 5 +#define NLMATRIXTOPNREVERSEPKTRATE 6 +#define NLMATRIXTOPNOCTETRATE 7 +#define NLMATRIXTOPNREVERSEOCTETRATE 8 + +static oid nlMatrixTopNEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1}; + +struct variable nlMatrixTopNEntry_variables[] = { + { NLMATRIXTOPNPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {2} }, + { NLMATRIXTOPNSOURCEADDRESS, ASN_OCTET_STR, RONLY, read_nlMatrixTopNEntry_stub, 1, {3} }, + { NLMATRIXTOPNDESTADDRESS, ASN_OCTET_STR, RONLY, read_nlMatrixTopNEntry_stub, 1, {4} }, + { NLMATRIXTOPNPKTRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {5} }, + { NLMATRIXTOPNREVERSEPKTRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {6} }, + { NLMATRIXTOPNOCTETRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {7} }, + { NLMATRIXTOPNREVERSEOCTETRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {8} }, +}; + +#define ALHOSTINPKTS 2 +#define ALHOSTOUTPKTS 3 +#define ALHOSTINOCTETS 4 +#define ALHOSTOUTOCTETS 5 +#define ALHOSTCREATETIME 6 + +static oid alHostEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1}; + +struct variable alHostEntry_variables[] = { + { ALHOSTINPKTS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {2} }, + { ALHOSTOUTPKTS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {3} }, + { ALHOSTINOCTETS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {4} }, + { ALHOSTOUTOCTETS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {5} }, + { ALHOSTCREATETIME, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {6} }, +}; + +#define ALMATRIXSDPKTS 2 +#define ALMATRIXSDOCTETS 3 +#define ALMATRIXSDCREATETIME 4 + +static oid alMatrixSDEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1}; + +struct variable alMatrixSDEntry_variables[] = { + { ALMATRIXSDPKTS, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {2} }, + { ALMATRIXSDOCTETS, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {3} }, + { ALMATRIXSDCREATETIME, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {4} }, +}; + +#define ALMATRIXDSPKTS 2 +#define ALMATRIXDSOCTETS 3 +#define ALMATRIXDSCREATETIME 4 + +static oid alMatrixDSEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1}; + +struct variable alMatrixDSEntry_variables[] = { + { ALMATRIXDSPKTS, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {2} }, + { ALMATRIXDSOCTETS, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {3} }, + { ALMATRIXDSCREATETIME, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {4} }, +}; + +#define ALMATRIXTOPNCONTROLMATRIXINDEX 2 +#define ALMATRIXTOPNCONTROLRATEBASE 3 +#define ALMATRIXTOPNCONTROLTIMEREMAINING 4 +#define ALMATRIXTOPNCONTROLGENERATEDREPORTS 5 +#define ALMATRIXTOPNCONTROLDURATION 6 +#define ALMATRIXTOPNCONTROLREQUESTEDSIZE 7 +#define ALMATRIXTOPNCONTROLGRANTEDSIZE 8 +#define ALMATRIXTOPNCONTROLSTARTTIME 9 +#define ALMATRIXTOPNCONTROLOWNER 10 +#define ALMATRIXTOPNCONTROLSTATUS 11 + +static oid alMatrixTopNControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1}; + +struct variable alMatrixTopNControlEntry_variables[] = { + { ALMATRIXTOPNCONTROLMATRIXINDEX, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {2} }, + { ALMATRIXTOPNCONTROLRATEBASE, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {3} }, + { ALMATRIXTOPNCONTROLTIMEREMAINING, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {4} }, + { ALMATRIXTOPNCONTROLGENERATEDREPORTS, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {5} }, + { ALMATRIXTOPNCONTROLDURATION, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {6} }, + { ALMATRIXTOPNCONTROLREQUESTEDSIZE, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {7} }, + { ALMATRIXTOPNCONTROLGRANTEDSIZE, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {8} }, + { ALMATRIXTOPNCONTROLSTARTTIME, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {9} }, + { ALMATRIXTOPNCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {10} }, + { ALMATRIXTOPNCONTROLSTATUS, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {11} }, +}; + +#define ALMATRIXTOPNPROTOCOLDIRLOCALINDEX 2 +#define ALMATRIXTOPNSOURCEADDRESS 3 +#define ALMATRIXTOPNDESTADDRESS 4 +#define ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX 5 +#define ALMATRIXTOPNPKTRATE 6 +#define ALMATRIXTOPNREVERSEPKTRATE 7 +#define ALMATRIXTOPNOCTETRATE 8 +#define ALMATRIXTOPNREVERSEOCTETRATE 9 + +static oid alMatrixTopNEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1}; + +struct variable alMatrixTopNEntry_variables[] = { + { ALMATRIXTOPNPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {2} }, + { ALMATRIXTOPNSOURCEADDRESS, ASN_OCTET_STR, RONLY, read_alMatrixTopNEntry_stub, 1, {3} }, + { ALMATRIXTOPNDESTADDRESS, ASN_OCTET_STR, RONLY, read_alMatrixTopNEntry_stub, 1, {4} }, + { ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {5} }, + { ALMATRIXTOPNPKTRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {6} }, + { ALMATRIXTOPNREVERSEPKTRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {7} }, + { ALMATRIXTOPNOCTETRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {8} }, + { ALMATRIXTOPNREVERSEOCTETRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {9} }, +}; + +#define USRHISTORYCONTROLOBJECTS 2 +#define USRHISTORYCONTROLBUCKETSREQUESTED 3 +#define USRHISTORYCONTROLBUCKETSGRANTED 4 +#define USRHISTORYCONTROLINTERVAL 5 +#define USRHISTORYCONTROLOWNER 6 +#define USRHISTORYCONTROLSTATUS 7 + +static oid usrHistoryControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1}; + +struct variable usrHistoryControlEntry_variables[] = { + { USRHISTORYCONTROLOBJECTS, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {2} }, + { USRHISTORYCONTROLBUCKETSREQUESTED, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {3} }, + { USRHISTORYCONTROLBUCKETSGRANTED, ASN_INTEGER, RONLY, read_usrHistoryControlEntry_stub, 1, {4} }, + { USRHISTORYCONTROLINTERVAL, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {5} }, + { USRHISTORYCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_usrHistoryControlEntry_stub, 1, {6} }, + { USRHISTORYCONTROLSTATUS, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {7} }, +}; + +#define USRHISTORYOBJECTVARIABLE 2 +#define USRHISTORYOBJECTSAMPLETYPE 3 + +static oid usrHistoryObjectEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1}; + +struct variable usrHistoryObjectEntry_variables[] = { + { USRHISTORYOBJECTVARIABLE, ASN_OBJECT_ID, RWRITE, read_usrHistoryObjectEntry_stub, 1, {2} }, + { USRHISTORYOBJECTSAMPLETYPE, ASN_INTEGER, RWRITE, read_usrHistoryObjectEntry_stub, 1, {3} }, +}; + +#define USRHISTORYINTERVALSTART 2 +#define USRHISTORYINTERVALEND 3 +#define USRHISTORYABSVALUE 4 +#define USRHISTORYVALSTATUS 5 + +static oid usrHistoryEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1}; + +struct variable usrHistoryEntry_variables[] = { + { USRHISTORYINTERVALSTART, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {2} }, + { USRHISTORYINTERVALEND, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {3} }, + { USRHISTORYABSVALUE, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {4} }, + { USRHISTORYVALSTATUS, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {5} }, +}; + +#define PROBECAPABILITIES 1 +#define PROBESOFTWAREREV 2 +#define PROBEHARDWAREREV 3 +#define PROBEDATETIME 4 +#define PROBERESETCONTROL 5 +#define PROBEDOWNLOADFILE 6 +#define PROBEDOWNLOADTFTPSERVER 7 +#define PROBEDOWNLOADACTION 8 +#define PROBEDOWNLOADSTATUS 9 +#define NETDEFAULTGATEWAY 12 + +static oid probeConfig_base[] = {1, 3, 6, 1, 2, 1, 16, 19}; + +struct variable probeConfig_variables[] = { + { PROBECAPABILITIES, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {1} }, + { PROBESOFTWAREREV, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {2} }, + { PROBEHARDWAREREV, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {3} }, + { PROBEDATETIME, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {4} }, + { PROBERESETCONTROL, ASN_INTEGER, RWRITE, read_probeConfig_stub, 1, {5} }, + { PROBEDOWNLOADFILE, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {6} }, + { PROBEDOWNLOADTFTPSERVER, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {7} }, + { PROBEDOWNLOADACTION, ASN_INTEGER, RWRITE, read_probeConfig_stub, 1, {8} }, + { PROBEDOWNLOADSTATUS, ASN_INTEGER, RONLY, read_probeConfig_stub, 1, {9} }, + { NETDEFAULTGATEWAY, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {12} }, +}; + +#define SERIALMODE 1 +#define SERIALPROTOCOL 2 +#define SERIALTIMEOUT 3 +#define SERIALMODEMINITSTRING 4 +#define SERIALMODEMHANGUPSTRING 5 +#define SERIALMODEMCONNECTRESP 6 +#define SERIALMODEMNOCONNECTRESP 7 +#define SERIALDIALOUTTIMEOUT 8 +#define SERIALSTATUS 9 + +static oid serialConfigEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1}; + +struct variable serialConfigEntry_variables[] = { + { SERIALMODE, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {1} }, + { SERIALPROTOCOL, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {2} }, + { SERIALTIMEOUT, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {3} }, + { SERIALMODEMINITSTRING, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {4} }, + { SERIALMODEMHANGUPSTRING, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {5} }, + { SERIALMODEMCONNECTRESP, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {6} }, + { SERIALMODEMNOCONNECTRESP, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {7} }, + { SERIALDIALOUTTIMEOUT, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {8} }, + { SERIALSTATUS, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {9} }, +}; + +#define NETCONFIGIPADDRESS 1 +#define NETCONFIGSUBNETMASK 2 +#define NETCONFIGSTATUS 3 + +static oid netConfigEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1}; + +struct variable netConfigEntry_variables[] = { + { NETCONFIGIPADDRESS, ASN_OCTET_STR, RWRITE, read_netConfigEntry_stub, 1, {1} }, + { NETCONFIGSUBNETMASK, ASN_OCTET_STR, RWRITE, read_netConfigEntry_stub, 1, {2} }, + { NETCONFIGSTATUS, ASN_INTEGER, RWRITE, read_netConfigEntry_stub, 1, {3} }, +}; + +#define TRAPDESTCOMMUNITY 2 +#define TRAPDESTPROTOCOL 3 +#define TRAPDESTADDRESS 4 +#define TRAPDESTOWNER 5 +#define TRAPDESTSTATUS 6 + +static oid trapDestEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1}; + +struct variable trapDestEntry_variables[] = { + { TRAPDESTCOMMUNITY, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {2} }, + { TRAPDESTPROTOCOL, ASN_INTEGER, RWRITE, read_trapDestEntry_stub, 1, {3} }, + { TRAPDESTADDRESS, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {4} }, + { TRAPDESTOWNER, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {5} }, + { TRAPDESTSTATUS, ASN_INTEGER, RWRITE, read_trapDestEntry_stub, 1, {6} }, +}; + +#define SERIALCONNECTDESTIPADDRESS 2 +#define SERIALCONNECTTYPE 3 +#define SERIALCONNECTDIALSTRING 4 +#define SERIALCONNECTSWITCHCONNECTSEQ 5 +#define SERIALCONNECTSWITCHDISCONNECTSEQ 6 +#define SERIALCONNECTSWITCHRESETSEQ 7 +#define SERIALCONNECTOWNER 8 +#define SERIALCONNECTSTATUS 9 + +static oid serialConnectionEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1}; + +struct variable serialConnectionEntry_variables[] = { + { SERIALCONNECTDESTIPADDRESS, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {2} }, + { SERIALCONNECTTYPE, ASN_INTEGER, RWRITE, read_serialConnectionEntry_stub, 1, {3} }, + { SERIALCONNECTDIALSTRING, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {4} }, + { SERIALCONNECTSWITCHCONNECTSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {5} }, + { SERIALCONNECTSWITCHDISCONNECTSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {6} }, + { SERIALCONNECTSWITCHRESETSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {7} }, + { SERIALCONNECTOWNER, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {8} }, + { SERIALCONNECTSTATUS, ASN_INTEGER, RWRITE, read_serialConnectionEntry_stub, 1, {9} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_etherStats2Entry() +{ + return register_mib("etherStats2Entry", + etherStats2Entry_variables, + sizeof(struct variable), + sizeof(etherStats2Entry_variables)/sizeof(struct variable), + etherStats2Entry_base, + sizeof(etherStats2Entry_base)/sizeof(oid)); +}; + + +int register_tokenRingMLStats2Entry() +{ + return register_mib("tokenRingMLStats2Entry", + tokenRingMLStats2Entry_variables, + sizeof(struct variable), + sizeof(tokenRingMLStats2Entry_variables)/sizeof(struct variable), + tokenRingMLStats2Entry_base, + sizeof(tokenRingMLStats2Entry_base)/sizeof(oid)); +}; + + +int register_tokenRingPStats2Entry() +{ + return register_mib("tokenRingPStats2Entry", + tokenRingPStats2Entry_variables, + sizeof(struct variable), + sizeof(tokenRingPStats2Entry_variables)/sizeof(struct variable), + tokenRingPStats2Entry_base, + sizeof(tokenRingPStats2Entry_base)/sizeof(oid)); +}; + + +int register_historyControl2Entry() +{ + return register_mib("historyControl2Entry", + historyControl2Entry_variables, + sizeof(struct variable), + sizeof(historyControl2Entry_variables)/sizeof(struct variable), + historyControl2Entry_base, + sizeof(historyControl2Entry_base)/sizeof(oid)); +}; + + +int register_hostControl2Entry() +{ + return register_mib("hostControl2Entry", + hostControl2Entry_variables, + sizeof(struct variable), + sizeof(hostControl2Entry_variables)/sizeof(struct variable), + hostControl2Entry_base, + sizeof(hostControl2Entry_base)/sizeof(oid)); +}; + + +int register_matrixControl2Entry() +{ + return register_mib("matrixControl2Entry", + matrixControl2Entry_variables, + sizeof(struct variable), + sizeof(matrixControl2Entry_variables)/sizeof(struct variable), + matrixControl2Entry_base, + sizeof(matrixControl2Entry_base)/sizeof(oid)); +}; + + +int register_channel2Entry() +{ + return register_mib("channel2Entry", + channel2Entry_variables, + sizeof(struct variable), + sizeof(channel2Entry_variables)/sizeof(struct variable), + channel2Entry_base, + sizeof(channel2Entry_base)/sizeof(oid)); +}; + + +int register_filter2Entry() +{ + return register_mib("filter2Entry", + filter2Entry_variables, + sizeof(struct variable), + sizeof(filter2Entry_variables)/sizeof(struct variable), + filter2Entry_base, + sizeof(filter2Entry_base)/sizeof(oid)); +}; + + +int register_ringStationControl2Entry() +{ + return register_mib("ringStationControl2Entry", + ringStationControl2Entry_variables, + sizeof(struct variable), + sizeof(ringStationControl2Entry_variables)/sizeof(struct variable), + ringStationControl2Entry_base, + sizeof(ringStationControl2Entry_base)/sizeof(oid)); +}; + + +int register_sourceRoutingStats2Entry() +{ + return register_mib("sourceRoutingStats2Entry", + sourceRoutingStats2Entry_variables, + sizeof(struct variable), + sizeof(sourceRoutingStats2Entry_variables)/sizeof(struct variable), + sourceRoutingStats2Entry_base, + sizeof(sourceRoutingStats2Entry_base)/sizeof(oid)); +}; + + +int register_protocolDir() +{ + return register_mib("protocolDir", + protocolDir_variables, + sizeof(struct variable), + sizeof(protocolDir_variables)/sizeof(struct variable), + protocolDir_base, + sizeof(protocolDir_base)/sizeof(oid)); +}; + + +int register_protocolDirEntry() +{ + return register_mib("protocolDirEntry", + protocolDirEntry_variables, + sizeof(struct variable), + sizeof(protocolDirEntry_variables)/sizeof(struct variable), + protocolDirEntry_base, + sizeof(protocolDirEntry_base)/sizeof(oid)); +}; + + +int register_protocolDistControlEntry() +{ + return register_mib("protocolDistControlEntry", + protocolDistControlEntry_variables, + sizeof(struct variable), + sizeof(protocolDistControlEntry_variables)/sizeof(struct variable), + protocolDistControlEntry_base, + sizeof(protocolDistControlEntry_base)/sizeof(oid)); +}; + + +int register_protocolDistStatsEntry() +{ + return register_mib("protocolDistStatsEntry", + protocolDistStatsEntry_variables, + sizeof(struct variable), + sizeof(protocolDistStatsEntry_variables)/sizeof(struct variable), + protocolDistStatsEntry_base, + sizeof(protocolDistStatsEntry_base)/sizeof(oid)); +}; + + +int register_addressMap() +{ + return register_mib("addressMap", + addressMap_variables, + sizeof(struct variable), + sizeof(addressMap_variables)/sizeof(struct variable), + addressMap_base, + sizeof(addressMap_base)/sizeof(oid)); +}; + + +int register_addressMapControlEntry() +{ + return register_mib("addressMapControlEntry", + addressMapControlEntry_variables, + sizeof(struct variable), + sizeof(addressMapControlEntry_variables)/sizeof(struct variable), + addressMapControlEntry_base, + sizeof(addressMapControlEntry_base)/sizeof(oid)); +}; + + +int register_addressMapEntry() +{ + return register_mib("addressMapEntry", + addressMapEntry_variables, + sizeof(struct variable), + sizeof(addressMapEntry_variables)/sizeof(struct variable), + addressMapEntry_base, + sizeof(addressMapEntry_base)/sizeof(oid)); +}; + + +int register_hlHostControlEntry() +{ + return register_mib("hlHostControlEntry", + hlHostControlEntry_variables, + sizeof(struct variable), + sizeof(hlHostControlEntry_variables)/sizeof(struct variable), + hlHostControlEntry_base, + sizeof(hlHostControlEntry_base)/sizeof(oid)); +}; + + +int register_nlHostEntry() +{ + return register_mib("nlHostEntry", + nlHostEntry_variables, + sizeof(struct variable), + sizeof(nlHostEntry_variables)/sizeof(struct variable), + nlHostEntry_base, + sizeof(nlHostEntry_base)/sizeof(oid)); +}; + + +int register_hlMatrixControlEntry() +{ + return register_mib("hlMatrixControlEntry", + hlMatrixControlEntry_variables, + sizeof(struct variable), + sizeof(hlMatrixControlEntry_variables)/sizeof(struct variable), + hlMatrixControlEntry_base, + sizeof(hlMatrixControlEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixSDEntry() +{ + return register_mib("nlMatrixSDEntry", + nlMatrixSDEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixSDEntry_variables)/sizeof(struct variable), + nlMatrixSDEntry_base, + sizeof(nlMatrixSDEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixDSEntry() +{ + return register_mib("nlMatrixDSEntry", + nlMatrixDSEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixDSEntry_variables)/sizeof(struct variable), + nlMatrixDSEntry_base, + sizeof(nlMatrixDSEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixTopNControlEntry() +{ + return register_mib("nlMatrixTopNControlEntry", + nlMatrixTopNControlEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixTopNControlEntry_variables)/sizeof(struct variable), + nlMatrixTopNControlEntry_base, + sizeof(nlMatrixTopNControlEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixTopNEntry() +{ + return register_mib("nlMatrixTopNEntry", + nlMatrixTopNEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixTopNEntry_variables)/sizeof(struct variable), + nlMatrixTopNEntry_base, + sizeof(nlMatrixTopNEntry_base)/sizeof(oid)); +}; + + +int register_alHostEntry() +{ + return register_mib("alHostEntry", + alHostEntry_variables, + sizeof(struct variable), + sizeof(alHostEntry_variables)/sizeof(struct variable), + alHostEntry_base, + sizeof(alHostEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixSDEntry() +{ + return register_mib("alMatrixSDEntry", + alMatrixSDEntry_variables, + sizeof(struct variable), + sizeof(alMatrixSDEntry_variables)/sizeof(struct variable), + alMatrixSDEntry_base, + sizeof(alMatrixSDEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixDSEntry() +{ + return register_mib("alMatrixDSEntry", + alMatrixDSEntry_variables, + sizeof(struct variable), + sizeof(alMatrixDSEntry_variables)/sizeof(struct variable), + alMatrixDSEntry_base, + sizeof(alMatrixDSEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixTopNControlEntry() +{ + return register_mib("alMatrixTopNControlEntry", + alMatrixTopNControlEntry_variables, + sizeof(struct variable), + sizeof(alMatrixTopNControlEntry_variables)/sizeof(struct variable), + alMatrixTopNControlEntry_base, + sizeof(alMatrixTopNControlEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixTopNEntry() +{ + return register_mib("alMatrixTopNEntry", + alMatrixTopNEntry_variables, + sizeof(struct variable), + sizeof(alMatrixTopNEntry_variables)/sizeof(struct variable), + alMatrixTopNEntry_base, + sizeof(alMatrixTopNEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryControlEntry() +{ + return register_mib("usrHistoryControlEntry", + usrHistoryControlEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryControlEntry_variables)/sizeof(struct variable), + usrHistoryControlEntry_base, + sizeof(usrHistoryControlEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryObjectEntry() +{ + return register_mib("usrHistoryObjectEntry", + usrHistoryObjectEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryObjectEntry_variables)/sizeof(struct variable), + usrHistoryObjectEntry_base, + sizeof(usrHistoryObjectEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryEntry() +{ + return register_mib("usrHistoryEntry", + usrHistoryEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryEntry_variables)/sizeof(struct variable), + usrHistoryEntry_base, + sizeof(usrHistoryEntry_base)/sizeof(oid)); +}; + + +int register_probeConfig() +{ + return register_mib("probeConfig", + probeConfig_variables, + sizeof(struct variable), + sizeof(probeConfig_variables)/sizeof(struct variable), + probeConfig_base, + sizeof(probeConfig_base)/sizeof(oid)); +}; + + +int register_serialConfigEntry() +{ + return register_mib("serialConfigEntry", + serialConfigEntry_variables, + sizeof(struct variable), + sizeof(serialConfigEntry_variables)/sizeof(struct variable), + serialConfigEntry_base, + sizeof(serialConfigEntry_base)/sizeof(oid)); +}; + + +int register_netConfigEntry() +{ + return register_mib("netConfigEntry", + netConfigEntry_variables, + sizeof(struct variable), + sizeof(netConfigEntry_variables)/sizeof(struct variable), + netConfigEntry_base, + sizeof(netConfigEntry_base)/sizeof(oid)); +}; + + +int register_trapDestEntry() +{ + return register_mib("trapDestEntry", + trapDestEntry_variables, + sizeof(struct variable), + sizeof(trapDestEntry_variables)/sizeof(struct variable), + trapDestEntry_base, + sizeof(trapDestEntry_base)/sizeof(oid)); +}; + + +int register_serialConnectionEntry() +{ + return register_mib("serialConnectionEntry", + serialConnectionEntry_variables, + sizeof(struct variable), + sizeof(serialConnectionEntry_variables)/sizeof(struct variable), + serialConnectionEntry_base, + sizeof(serialConnectionEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_etherStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static etherStats2Entry_t etherStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_etherStats2Entry(ðerStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ETHERSTATSDROPPEDFRAMES: + return (unsigned char *) ðerStats2Entry.etherStatsDroppedFrames; + + case ETHERSTATSCREATETIME: + return (unsigned char *) ðerStats2Entry.etherStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_tokenRingMLStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static tokenRingMLStats2Entry_t tokenRingMLStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_tokenRingMLStats2Entry(&tokenRingMLStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TOKENRINGMLSTATSDROPPEDFRAMES: + return (unsigned char *) &tokenRingMLStats2Entry.tokenRingMLStatsDroppedFrames; + + case TOKENRINGMLSTATSCREATETIME: + return (unsigned char *) &tokenRingMLStats2Entry.tokenRingMLStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_tokenRingPStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static tokenRingPStats2Entry_t tokenRingPStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_tokenRingPStats2Entry(&tokenRingPStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TOKENRINGPSTATSDROPPEDFRAMES: + return (unsigned char *) &tokenRingPStats2Entry.tokenRingPStatsDroppedFrames; + + case TOKENRINGPSTATSCREATETIME: + return (unsigned char *) &tokenRingPStats2Entry.tokenRingPStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_historyControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static historyControl2Entry_t historyControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_historyControl2Entry(&historyControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HISTORYCONTROLDROPPEDFRAMES: + return (unsigned char *) &historyControl2Entry.historyControlDroppedFrames; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hostControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hostControl2Entry_t hostControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_hostControl2Entry(&hostControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HOSTCONTROLDROPPEDFRAMES: + return (unsigned char *) &hostControl2Entry.hostControlDroppedFrames; + + case HOSTCONTROLCREATETIME: + return (unsigned char *) &hostControl2Entry.hostControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_matrixControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static matrixControl2Entry_t matrixControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_matrixControl2Entry(&matrixControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case MATRIXCONTROLDROPPEDFRAMES: + return (unsigned char *) &matrixControl2Entry.matrixControlDroppedFrames; + + case MATRIXCONTROLCREATETIME: + return (unsigned char *) &matrixControl2Entry.matrixControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_channel2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static channel2Entry_t channel2Entry; + + /* call the user supplied function to retrieve values */ + + read_channel2Entry(&channel2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case CHANNELDROPPEDFRAMES: + return (unsigned char *) &channel2Entry.channelDroppedFrames; + + case CHANNELCREATETIME: + return (unsigned char *) &channel2Entry.channelCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_filter2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static filter2Entry_t filter2Entry; + + /* call the user supplied function to retrieve values */ + + read_filter2Entry(&filter2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case FILTERPROTOCOLDIRDATALOCALINDEX: + return (unsigned char *) &filter2Entry.filterProtocolDirDataLocalIndex; + + case FILTERPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &filter2Entry.filterProtocolDirLocalIndex; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ringStationControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ringStationControl2Entry_t ringStationControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_ringStationControl2Entry(&ringStationControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RINGSTATIONCONTROLDROPPEDFRAMES: + return (unsigned char *) &ringStationControl2Entry.ringStationControlDroppedFrames; + + case RINGSTATIONCONTROLCREATETIME: + return (unsigned char *) &ringStationControl2Entry.ringStationControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_sourceRoutingStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static sourceRoutingStats2Entry_t sourceRoutingStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_sourceRoutingStats2Entry(&sourceRoutingStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SOURCEROUTINGSTATSDROPPEDFRAMES: + return (unsigned char *) &sourceRoutingStats2Entry.sourceRoutingStatsDroppedFrames; + + case SOURCEROUTINGSTATSCREATETIME: + return (unsigned char *) &sourceRoutingStats2Entry.sourceRoutingStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDir_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDir_t protocolDir; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_protocolDir(&protocolDir); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDIRLASTCHANGE: + return (unsigned char *) &protocolDir.protocolDirLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDirEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDirEntry_t protocolDirEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDirEntry(&protocolDirEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDIRLOCALINDEX: + return (unsigned char *) &protocolDirEntry.protocolDirLocalIndex; + + case PROTOCOLDIRDESCR: + *var_len = protocolDirEntry._protocolDirDescrLength; + return (unsigned char *) protocolDirEntry.protocolDirDescr; + + case PROTOCOLDIRTYPE: + *var_len = protocolDirEntry._protocolDirTypeLength; + return (unsigned char *) protocolDirEntry.protocolDirType; + + case PROTOCOLDIRADDRESSMAPCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirAddressMapConfig; + + case PROTOCOLDIRHOSTCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirHostConfig; + + case PROTOCOLDIRMATRIXCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirMatrixConfig; + + case PROTOCOLDIROWNER: + *var_len = protocolDirEntry._protocolDirOwnerLength; + return (unsigned char *) protocolDirEntry.protocolDirOwner; + + case PROTOCOLDIRSTATUS: + return (unsigned char *) &protocolDirEntry.protocolDirStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDistControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDistControlEntry_t protocolDistControlEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDistControlEntry(&protocolDistControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDISTCONTROLDATASOURCE: + *var_len = protocolDistControlEntry._protocolDistControlDataSourceLength; + return (unsigned char *) protocolDistControlEntry.protocolDistControlDataSource; + + case PROTOCOLDISTCONTROLDROPPEDFRAMES: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlDroppedFrames; + + case PROTOCOLDISTCONTROLCREATETIME: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlCreateTime; + + case PROTOCOLDISTCONTROLOWNER: + *var_len = protocolDistControlEntry._protocolDistControlOwnerLength; + return (unsigned char *) protocolDistControlEntry.protocolDistControlOwner; + + case PROTOCOLDISTCONTROLSTATUS: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDistStatsEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDistStatsEntry_t protocolDistStatsEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDistStatsEntry(&protocolDistStatsEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDISTSTATSPKTS: + return (unsigned char *) &protocolDistStatsEntry.protocolDistStatsPkts; + + case PROTOCOLDISTSTATSOCTETS: + return (unsigned char *) &protocolDistStatsEntry.protocolDistStatsOctets; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMap_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMap_t addressMap; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_addressMap(&addressMap); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPINSERTS: + return (unsigned char *) &addressMap.addressMapInserts; + + case ADDRESSMAPDELETES: + return (unsigned char *) &addressMap.addressMapDeletes; + + case ADDRESSMAPMAXDESIREDENTRIES: + return (unsigned char *) &addressMap.addressMapMaxDesiredEntries; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMapControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMapControlEntry_t addressMapControlEntry; + + /* call the user supplied function to retrieve values */ + + read_addressMapControlEntry(&addressMapControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPCONTROLDATASOURCE: + *var_len = addressMapControlEntry._addressMapControlDataSourceLength; + return (unsigned char *) addressMapControlEntry.addressMapControlDataSource; + + case ADDRESSMAPCONTROLDROPPEDFRAMES: + return (unsigned char *) &addressMapControlEntry.addressMapControlDroppedFrames; + + case ADDRESSMAPCONTROLOWNER: + *var_len = addressMapControlEntry._addressMapControlOwnerLength; + return (unsigned char *) addressMapControlEntry.addressMapControlOwner; + + case ADDRESSMAPCONTROLSTATUS: + return (unsigned char *) &addressMapControlEntry.addressMapControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMapEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMapEntry_t addressMapEntry; + + /* call the user supplied function to retrieve values */ + + read_addressMapEntry(&addressMapEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPPHYSICALADDRESS: + *var_len = addressMapEntry._addressMapPhysicalAddressLength; + return (unsigned char *) addressMapEntry.addressMapPhysicalAddress; + + case ADDRESSMAPLASTCHANGE: + return (unsigned char *) &addressMapEntry.addressMapLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hlHostControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hlHostControlEntry_t hlHostControlEntry; + + /* call the user supplied function to retrieve values */ + + read_hlHostControlEntry(&hlHostControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HLHOSTCONTROLDATASOURCE: + *var_len = hlHostControlEntry._hlHostControlDataSourceLength; + return (unsigned char *) hlHostControlEntry.hlHostControlDataSource; + + case HLHOSTCONTROLNLDROPPEDFRAMES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlDroppedFrames; + + case HLHOSTCONTROLNLINSERTS: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlInserts; + + case HLHOSTCONTROLNLDELETES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlDeletes; + + case HLHOSTCONTROLNLMAXDESIREDENTRIES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlMaxDesiredEntries; + + case HLHOSTCONTROLALDROPPEDFRAMES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlDroppedFrames; + + case HLHOSTCONTROLALINSERTS: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlInserts; + + case HLHOSTCONTROLALDELETES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlDeletes; + + case HLHOSTCONTROLALMAXDESIREDENTRIES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlMaxDesiredEntries; + + case HLHOSTCONTROLOWNER: + *var_len = hlHostControlEntry._hlHostControlOwnerLength; + return (unsigned char *) hlHostControlEntry.hlHostControlOwner; + + case HLHOSTCONTROLSTATUS: + return (unsigned char *) &hlHostControlEntry.hlHostControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlHostEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlHostEntry_t nlHostEntry; + + /* call the user supplied function to retrieve values */ + + read_nlHostEntry(&nlHostEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLHOSTINPKTS: + return (unsigned char *) &nlHostEntry.nlHostInPkts; + + case NLHOSTOUTPKTS: + return (unsigned char *) &nlHostEntry.nlHostOutPkts; + + case NLHOSTINOCTETS: + return (unsigned char *) &nlHostEntry.nlHostInOctets; + + case NLHOSTOUTOCTETS: + return (unsigned char *) &nlHostEntry.nlHostOutOctets; + + case NLHOSTOUTMACNONUNICASTPKTS: + return (unsigned char *) &nlHostEntry.nlHostOutMacNonUnicastPkts; + + case NLHOSTCREATETIME: + return (unsigned char *) &nlHostEntry.nlHostCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hlMatrixControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hlMatrixControlEntry_t hlMatrixControlEntry; + + /* call the user supplied function to retrieve values */ + + read_hlMatrixControlEntry(&hlMatrixControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HLMATRIXCONTROLDATASOURCE: + *var_len = hlMatrixControlEntry._hlMatrixControlDataSourceLength; + return (unsigned char *) hlMatrixControlEntry.hlMatrixControlDataSource; + + case HLMATRIXCONTROLNLDROPPEDFRAMES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlDroppedFrames; + + case HLMATRIXCONTROLNLINSERTS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlInserts; + + case HLMATRIXCONTROLNLDELETES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlDeletes; + + case HLMATRIXCONTROLNLMAXDESIREDENTRIES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlMaxDesiredEntries; + + case HLMATRIXCONTROLALDROPPEDFRAMES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlDroppedFrames; + + case HLMATRIXCONTROLALINSERTS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlInserts; + + case HLMATRIXCONTROLALDELETES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlDeletes; + + case HLMATRIXCONTROLALMAXDESIREDENTRIES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlMaxDesiredEntries; + + case HLMATRIXCONTROLOWNER: + *var_len = hlMatrixControlEntry._hlMatrixControlOwnerLength; + return (unsigned char *) hlMatrixControlEntry.hlMatrixControlOwner; + + case HLMATRIXCONTROLSTATUS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixSDEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixSDEntry_t nlMatrixSDEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixSDEntry(&nlMatrixSDEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXSDPKTS: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDPkts; + + case NLMATRIXSDOCTETS: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDOctets; + + case NLMATRIXSDCREATETIME: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixDSEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixDSEntry_t nlMatrixDSEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixDSEntry(&nlMatrixDSEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXDSPKTS: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSPkts; + + case NLMATRIXDSOCTETS: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSOctets; + + case NLMATRIXDSCREATETIME: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixTopNControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixTopNControlEntry_t nlMatrixTopNControlEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixTopNControlEntry(&nlMatrixTopNControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXTOPNCONTROLMATRIXINDEX: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlMatrixIndex; + + case NLMATRIXTOPNCONTROLRATEBASE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlRateBase; + + case NLMATRIXTOPNCONTROLTIMEREMAINING: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlTimeRemaining; + + case NLMATRIXTOPNCONTROLGENERATEDREPORTS: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlGeneratedReports; + + case NLMATRIXTOPNCONTROLDURATION: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlDuration; + + case NLMATRIXTOPNCONTROLREQUESTEDSIZE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlRequestedSize; + + case NLMATRIXTOPNCONTROLGRANTEDSIZE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlGrantedSize; + + case NLMATRIXTOPNCONTROLSTARTTIME: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlStartTime; + + case NLMATRIXTOPNCONTROLOWNER: + *var_len = nlMatrixTopNControlEntry._nlMatrixTopNControlOwnerLength; + return (unsigned char *) nlMatrixTopNControlEntry.nlMatrixTopNControlOwner; + + case NLMATRIXTOPNCONTROLSTATUS: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixTopNEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixTopNEntry_t nlMatrixTopNEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixTopNEntry(&nlMatrixTopNEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXTOPNPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNProtocolDirLocalIndex; + + case NLMATRIXTOPNSOURCEADDRESS: + *var_len = nlMatrixTopNEntry._nlMatrixTopNSourceAddressLength; + return (unsigned char *) nlMatrixTopNEntry.nlMatrixTopNSourceAddress; + + case NLMATRIXTOPNDESTADDRESS: + *var_len = nlMatrixTopNEntry._nlMatrixTopNDestAddressLength; + return (unsigned char *) nlMatrixTopNEntry.nlMatrixTopNDestAddress; + + case NLMATRIXTOPNPKTRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNPktRate; + + case NLMATRIXTOPNREVERSEPKTRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNReversePktRate; + + case NLMATRIXTOPNOCTETRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNOctetRate; + + case NLMATRIXTOPNREVERSEOCTETRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNReverseOctetRate; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alHostEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alHostEntry_t alHostEntry; + + /* call the user supplied function to retrieve values */ + + read_alHostEntry(&alHostEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALHOSTINPKTS: + return (unsigned char *) &alHostEntry.alHostInPkts; + + case ALHOSTOUTPKTS: + return (unsigned char *) &alHostEntry.alHostOutPkts; + + case ALHOSTINOCTETS: + return (unsigned char *) &alHostEntry.alHostInOctets; + + case ALHOSTOUTOCTETS: + return (unsigned char *) &alHostEntry.alHostOutOctets; + + case ALHOSTCREATETIME: + return (unsigned char *) &alHostEntry.alHostCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixSDEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixSDEntry_t alMatrixSDEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixSDEntry(&alMatrixSDEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXSDPKTS: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDPkts; + + case ALMATRIXSDOCTETS: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDOctets; + + case ALMATRIXSDCREATETIME: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixDSEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixDSEntry_t alMatrixDSEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixDSEntry(&alMatrixDSEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXDSPKTS: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSPkts; + + case ALMATRIXDSOCTETS: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSOctets; + + case ALMATRIXDSCREATETIME: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixTopNControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixTopNControlEntry_t alMatrixTopNControlEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixTopNControlEntry(&alMatrixTopNControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXTOPNCONTROLMATRIXINDEX: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlMatrixIndex; + + case ALMATRIXTOPNCONTROLRATEBASE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlRateBase; + + case ALMATRIXTOPNCONTROLTIMEREMAINING: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlTimeRemaining; + + case ALMATRIXTOPNCONTROLGENERATEDREPORTS: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlGeneratedReports; + + case ALMATRIXTOPNCONTROLDURATION: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlDuration; + + case ALMATRIXTOPNCONTROLREQUESTEDSIZE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlRequestedSize; + + case ALMATRIXTOPNCONTROLGRANTEDSIZE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlGrantedSize; + + case ALMATRIXTOPNCONTROLSTARTTIME: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlStartTime; + + case ALMATRIXTOPNCONTROLOWNER: + *var_len = alMatrixTopNControlEntry._alMatrixTopNControlOwnerLength; + return (unsigned char *) alMatrixTopNControlEntry.alMatrixTopNControlOwner; + + case ALMATRIXTOPNCONTROLSTATUS: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixTopNEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixTopNEntry_t alMatrixTopNEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixTopNEntry(&alMatrixTopNEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXTOPNPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNProtocolDirLocalIndex; + + case ALMATRIXTOPNSOURCEADDRESS: + *var_len = alMatrixTopNEntry._alMatrixTopNSourceAddressLength; + return (unsigned char *) alMatrixTopNEntry.alMatrixTopNSourceAddress; + + case ALMATRIXTOPNDESTADDRESS: + *var_len = alMatrixTopNEntry._alMatrixTopNDestAddressLength; + return (unsigned char *) alMatrixTopNEntry.alMatrixTopNDestAddress; + + case ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNAppProtocolDirLocalIndex; + + case ALMATRIXTOPNPKTRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNPktRate; + + case ALMATRIXTOPNREVERSEPKTRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNReversePktRate; + + case ALMATRIXTOPNOCTETRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNOctetRate; + + case ALMATRIXTOPNREVERSEOCTETRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNReverseOctetRate; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryControlEntry_t usrHistoryControlEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryControlEntry(&usrHistoryControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYCONTROLOBJECTS: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlObjects; + + case USRHISTORYCONTROLBUCKETSREQUESTED: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlBucketsRequested; + + case USRHISTORYCONTROLBUCKETSGRANTED: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlBucketsGranted; + + case USRHISTORYCONTROLINTERVAL: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlInterval; + + case USRHISTORYCONTROLOWNER: + *var_len = usrHistoryControlEntry._usrHistoryControlOwnerLength; + return (unsigned char *) usrHistoryControlEntry.usrHistoryControlOwner; + + case USRHISTORYCONTROLSTATUS: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryObjectEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryObjectEntry_t usrHistoryObjectEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryObjectEntry(&usrHistoryObjectEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYOBJECTVARIABLE: + *var_len = usrHistoryObjectEntry._usrHistoryObjectVariableLength; + return (unsigned char *) usrHistoryObjectEntry.usrHistoryObjectVariable; + + case USRHISTORYOBJECTSAMPLETYPE: + return (unsigned char *) &usrHistoryObjectEntry.usrHistoryObjectSampleType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryEntry_t usrHistoryEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryEntry(&usrHistoryEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYINTERVALSTART: + return (unsigned char *) &usrHistoryEntry.usrHistoryIntervalStart; + + case USRHISTORYINTERVALEND: + return (unsigned char *) &usrHistoryEntry.usrHistoryIntervalEnd; + + case USRHISTORYABSVALUE: + return (unsigned char *) &usrHistoryEntry.usrHistoryAbsValue; + + case USRHISTORYVALSTATUS: + return (unsigned char *) &usrHistoryEntry.usrHistoryValStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_probeConfig_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static probeConfig_t probeConfig; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_probeConfig(&probeConfig); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROBECAPABILITIES: + *var_len = probeConfig._probeCapabilitiesLength; + return (unsigned char *) probeConfig.probeCapabilities; + + case PROBESOFTWAREREV: + *var_len = probeConfig._probeSoftwareRevLength; + return (unsigned char *) probeConfig.probeSoftwareRev; + + case PROBEHARDWAREREV: + *var_len = probeConfig._probeHardwareRevLength; + return (unsigned char *) probeConfig.probeHardwareRev; + + case PROBEDATETIME: + *var_len = probeConfig._probeDateTimeLength; + return (unsigned char *) probeConfig.probeDateTime; + + case PROBERESETCONTROL: + return (unsigned char *) &probeConfig.probeResetControl; + + case PROBEDOWNLOADFILE: + *var_len = probeConfig._probeDownloadFileLength; + return (unsigned char *) probeConfig.probeDownloadFile; + + case PROBEDOWNLOADTFTPSERVER: + *var_len = probeConfig._probeDownloadTFTPServerLength; + return (unsigned char *) probeConfig.probeDownloadTFTPServer; + + case PROBEDOWNLOADACTION: + return (unsigned char *) &probeConfig.probeDownloadAction; + + case PROBEDOWNLOADSTATUS: + return (unsigned char *) &probeConfig.probeDownloadStatus; + + case NETDEFAULTGATEWAY: + *var_len = probeConfig._netDefaultGatewayLength; + return (unsigned char *) probeConfig.netDefaultGateway; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_serialConfigEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static serialConfigEntry_t serialConfigEntry; + + /* call the user supplied function to retrieve values */ + + read_serialConfigEntry(&serialConfigEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SERIALMODE: + return (unsigned char *) &serialConfigEntry.serialMode; + + case SERIALPROTOCOL: + return (unsigned char *) &serialConfigEntry.serialProtocol; + + case SERIALTIMEOUT: + return (unsigned char *) &serialConfigEntry.serialTimeout; + + case SERIALMODEMINITSTRING: + *var_len = serialConfigEntry._serialModemInitStringLength; + return (unsigned char *) serialConfigEntry.serialModemInitString; + + case SERIALMODEMHANGUPSTRING: + *var_len = serialConfigEntry._serialModemHangUpStringLength; + return (unsigned char *) serialConfigEntry.serialModemHangUpString; + + case SERIALMODEMCONNECTRESP: + *var_len = serialConfigEntry._serialModemConnectRespLength; + return (unsigned char *) serialConfigEntry.serialModemConnectResp; + + case SERIALMODEMNOCONNECTRESP: + *var_len = serialConfigEntry._serialModemNoConnectRespLength; + return (unsigned char *) serialConfigEntry.serialModemNoConnectResp; + + case SERIALDIALOUTTIMEOUT: + return (unsigned char *) &serialConfigEntry.serialDialoutTimeout; + + case SERIALSTATUS: + return (unsigned char *) &serialConfigEntry.serialStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_netConfigEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static netConfigEntry_t netConfigEntry; + + /* call the user supplied function to retrieve values */ + + read_netConfigEntry(&netConfigEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NETCONFIGIPADDRESS: + *var_len = netConfigEntry._netConfigIPAddressLength; + return (unsigned char *) netConfigEntry.netConfigIPAddress; + + case NETCONFIGSUBNETMASK: + *var_len = netConfigEntry._netConfigSubnetMaskLength; + return (unsigned char *) netConfigEntry.netConfigSubnetMask; + + case NETCONFIGSTATUS: + return (unsigned char *) &netConfigEntry.netConfigStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_trapDestEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static trapDestEntry_t trapDestEntry; + + /* call the user supplied function to retrieve values */ + + read_trapDestEntry(&trapDestEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TRAPDESTCOMMUNITY: + *var_len = trapDestEntry._trapDestCommunityLength; + return (unsigned char *) trapDestEntry.trapDestCommunity; + + case TRAPDESTPROTOCOL: + return (unsigned char *) &trapDestEntry.trapDestProtocol; + + case TRAPDESTADDRESS: + *var_len = trapDestEntry._trapDestAddressLength; + return (unsigned char *) trapDestEntry.trapDestAddress; + + case TRAPDESTOWNER: + *var_len = trapDestEntry._trapDestOwnerLength; + return (unsigned char *) trapDestEntry.trapDestOwner; + + case TRAPDESTSTATUS: + return (unsigned char *) &trapDestEntry.trapDestStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_serialConnectionEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static serialConnectionEntry_t serialConnectionEntry; + + /* call the user supplied function to retrieve values */ + + read_serialConnectionEntry(&serialConnectionEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SERIALCONNECTDESTIPADDRESS: + *var_len = serialConnectionEntry._serialConnectDestIpAddressLength; + return (unsigned char *) serialConnectionEntry.serialConnectDestIpAddress; + + case SERIALCONNECTTYPE: + return (unsigned char *) &serialConnectionEntry.serialConnectType; + + case SERIALCONNECTDIALSTRING: + *var_len = serialConnectionEntry._serialConnectDialStringLength; + return (unsigned char *) serialConnectionEntry.serialConnectDialString; + + case SERIALCONNECTSWITCHCONNECTSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchConnectSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchConnectSeq; + + case SERIALCONNECTSWITCHDISCONNECTSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchDisconnectSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchDisconnectSeq; + + case SERIALCONNECTSWITCHRESETSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchResetSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchResetSeq; + + case SERIALCONNECTOWNER: + *var_len = serialConnectionEntry._serialConnectOwnerLength; + return (unsigned char *) serialConnectionEntry.serialConnectOwner; + + case SERIALCONNECTSTATUS: + return (unsigned char *) &serialConnectionEntry.serialConnectStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_filterProtocolDirDataLocalIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_filterProtocolDirLocalIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirDescr_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirAddressMapConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirHostConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirMatrixConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlNlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlAlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlNlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlAlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlMatrixIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlRateBase_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlTimeRemaining_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlRequestedSize_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlMatrixIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlRateBase_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlTimeRemaining_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlRequestedSize_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlObjects_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlBucketsRequested_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlInterval_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryObjectVariable_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryObjectSampleType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDateTime_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeResetControl_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadFile_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadTFTPServer_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadAction_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialMode_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialProtocol_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialTimeout_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemInitString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemHangUpString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemConnectResp_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemNoConnectResp_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialDialoutTimeout_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigIPAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigSubnetMask_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netDefaultGateway_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestCommunity_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestProtocol_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectDestIpAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectDialString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchConnectSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchDisconnectSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchResetSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/rmon2-mib-agt.c b/test/dumps/netsnmp/rmon2-mib-agt.c new file mode 100644 index 0000000..f995097 --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "rmon2-mib.h" + +#include +#include +#include +#include +#include + +static oid rmon2_mib_caps[] = {0,0}; + +void init_rmon2_mib(void) +{ +} + +void deinit_rmon2_mib() +{ + unregister_sysORTable(rmon2_mib_caps, sizeof(rmon2_mib_caps)); +} + +int term_rmon2_mib() +{ + deinit_rmon2_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/rmon2-mib-mgr-stub.c b/test/dumps/netsnmp/rmon2-mib-mgr-stub.c new file mode 100644 index 0000000..0a8dd7c --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-mgr-stub.c @@ -0,0 +1,2785 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "rmon2-mib.h" + +static oid etherStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1, 1}; +static oid etherStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1, 2}; +static oid tokenRingMLStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1, 1}; +static oid tokenRingMLStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1, 2}; +static oid tokenRingPStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1, 1}; +static oid tokenRingPStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1, 2}; +static oid historyControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1, 1}; +static oid hostControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1, 1}; +static oid hostControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1, 2}; +static oid matrixControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1, 1}; +static oid matrixControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1, 2}; +static oid channelDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1, 1}; +static oid channelCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1, 2}; +static oid filterProtocolDirDataLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1, 1}; +static oid filterProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1, 2}; +static oid ringStationControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1, 1}; +static oid ringStationControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1, 2}; +static oid sourceRoutingStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1, 1}; +static oid sourceRoutingStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1, 2}; +static oid protocolDirLastChange[] = {1, 3, 6, 1, 2, 1, 16, 11, 1}; +static oid protocolDirID[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 1}; +static oid protocolDirParameters[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 2}; +static oid protocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 3}; +static oid protocolDirDescr[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 4}; +static oid protocolDirType[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 5}; +static oid protocolDirAddressMapConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 6}; +static oid protocolDirHostConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 7}; +static oid protocolDirMatrixConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 8}; +static oid protocolDirOwner[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 9}; +static oid protocolDirStatus[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 10}; +static oid protocolDistControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 1}; +static oid protocolDistControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 2}; +static oid protocolDistControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 3}; +static oid protocolDistControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 4}; +static oid protocolDistControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 5}; +static oid protocolDistControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 6}; +static oid protocolDistStatsPkts[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1, 1}; +static oid protocolDistStatsOctets[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1, 2}; +static oid addressMapInserts[] = {1, 3, 6, 1, 2, 1, 16, 13, 1}; +static oid addressMapDeletes[] = {1, 3, 6, 1, 2, 1, 16, 13, 2}; +static oid addressMapMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 13, 3}; +static oid addressMapControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 1}; +static oid addressMapControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 2}; +static oid addressMapControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 3}; +static oid addressMapControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 4}; +static oid addressMapControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 5}; +static oid addressMapTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 1}; +static oid addressMapNetworkAddress[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 2}; +static oid addressMapSource[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 3}; +static oid addressMapPhysicalAddress[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 4}; +static oid addressMapLastChange[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 5}; +static oid hlHostControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 1}; +static oid hlHostControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 2}; +static oid hlHostControlNlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 3}; +static oid hlHostControlNlInserts[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 4}; +static oid hlHostControlNlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 5}; +static oid hlHostControlNlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 6}; +static oid hlHostControlAlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 7}; +static oid hlHostControlAlInserts[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 8}; +static oid hlHostControlAlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 9}; +static oid hlHostControlAlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 10}; +static oid hlHostControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 11}; +static oid hlHostControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 12}; +static oid nlHostTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 1}; +static oid nlHostAddress[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 2}; +static oid nlHostInPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 3}; +static oid nlHostOutPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 4}; +static oid nlHostInOctets[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 5}; +static oid nlHostOutOctets[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 6}; +static oid nlHostOutMacNonUnicastPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 7}; +static oid nlHostCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 8}; +static oid hlMatrixControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 1}; +static oid hlMatrixControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 2}; +static oid hlMatrixControlNlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 3}; +static oid hlMatrixControlNlInserts[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 4}; +static oid hlMatrixControlNlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 5}; +static oid hlMatrixControlNlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 6}; +static oid hlMatrixControlAlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 7}; +static oid hlMatrixControlAlInserts[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 8}; +static oid hlMatrixControlAlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 9}; +static oid hlMatrixControlAlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 10}; +static oid hlMatrixControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 11}; +static oid hlMatrixControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 12}; +static oid nlMatrixSDTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 1}; +static oid nlMatrixSDSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 2}; +static oid nlMatrixSDDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 3}; +static oid nlMatrixSDPkts[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 4}; +static oid nlMatrixSDOctets[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 5}; +static oid nlMatrixSDCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 6}; +static oid nlMatrixDSTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 1}; +static oid nlMatrixDSSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 2}; +static oid nlMatrixDSDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 3}; +static oid nlMatrixDSPkts[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 4}; +static oid nlMatrixDSOctets[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 5}; +static oid nlMatrixDSCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 6}; +static oid nlMatrixTopNControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 1}; +static oid nlMatrixTopNControlMatrixIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 2}; +static oid nlMatrixTopNControlRateBase[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 3}; +static oid nlMatrixTopNControlTimeRemaining[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 4}; +static oid nlMatrixTopNControlGeneratedReports[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 5}; +static oid nlMatrixTopNControlDuration[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 6}; +static oid nlMatrixTopNControlRequestedSize[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 7}; +static oid nlMatrixTopNControlGrantedSize[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 8}; +static oid nlMatrixTopNControlStartTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 9}; +static oid nlMatrixTopNControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 10}; +static oid nlMatrixTopNControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 11}; +static oid nlMatrixTopNIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 1}; +static oid nlMatrixTopNProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 2}; +static oid nlMatrixTopNSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 3}; +static oid nlMatrixTopNDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 4}; +static oid nlMatrixTopNPktRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 5}; +static oid nlMatrixTopNReversePktRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 6}; +static oid nlMatrixTopNOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 7}; +static oid nlMatrixTopNReverseOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 8}; +static oid alHostTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 1}; +static oid alHostInPkts[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 2}; +static oid alHostOutPkts[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 3}; +static oid alHostInOctets[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 4}; +static oid alHostOutOctets[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 5}; +static oid alHostCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 6}; +static oid alMatrixSDTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 1}; +static oid alMatrixSDPkts[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 2}; +static oid alMatrixSDOctets[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 3}; +static oid alMatrixSDCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 4}; +static oid alMatrixDSTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 1}; +static oid alMatrixDSPkts[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 2}; +static oid alMatrixDSOctets[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 3}; +static oid alMatrixDSCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 4}; +static oid alMatrixTopNControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 1}; +static oid alMatrixTopNControlMatrixIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 2}; +static oid alMatrixTopNControlRateBase[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 3}; +static oid alMatrixTopNControlTimeRemaining[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 4}; +static oid alMatrixTopNControlGeneratedReports[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 5}; +static oid alMatrixTopNControlDuration[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 6}; +static oid alMatrixTopNControlRequestedSize[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 7}; +static oid alMatrixTopNControlGrantedSize[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 8}; +static oid alMatrixTopNControlStartTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 9}; +static oid alMatrixTopNControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 10}; +static oid alMatrixTopNControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 11}; +static oid alMatrixTopNIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 1}; +static oid alMatrixTopNProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 2}; +static oid alMatrixTopNSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 3}; +static oid alMatrixTopNDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 4}; +static oid alMatrixTopNAppProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 5}; +static oid alMatrixTopNPktRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 6}; +static oid alMatrixTopNReversePktRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 7}; +static oid alMatrixTopNOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 8}; +static oid alMatrixTopNReverseOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 9}; +static oid usrHistoryControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 1}; +static oid usrHistoryControlObjects[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 2}; +static oid usrHistoryControlBucketsRequested[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 3}; +static oid usrHistoryControlBucketsGranted[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 4}; +static oid usrHistoryControlInterval[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 5}; +static oid usrHistoryControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 6}; +static oid usrHistoryControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 7}; +static oid usrHistoryObjectIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 1}; +static oid usrHistoryObjectVariable[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 2}; +static oid usrHistoryObjectSampleType[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 3}; +static oid usrHistorySampleIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 1}; +static oid usrHistoryIntervalStart[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 2}; +static oid usrHistoryIntervalEnd[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 3}; +static oid usrHistoryAbsValue[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 4}; +static oid usrHistoryValStatus[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 5}; +static oid probeCapabilities[] = {1, 3, 6, 1, 2, 1, 16, 19, 1}; +static oid probeSoftwareRev[] = {1, 3, 6, 1, 2, 1, 16, 19, 2}; +static oid probeHardwareRev[] = {1, 3, 6, 1, 2, 1, 16, 19, 3}; +static oid probeDateTime[] = {1, 3, 6, 1, 2, 1, 16, 19, 4}; +static oid probeResetControl[] = {1, 3, 6, 1, 2, 1, 16, 19, 5}; +static oid probeDownloadFile[] = {1, 3, 6, 1, 2, 1, 16, 19, 6}; +static oid probeDownloadTFTPServer[] = {1, 3, 6, 1, 2, 1, 16, 19, 7}; +static oid probeDownloadAction[] = {1, 3, 6, 1, 2, 1, 16, 19, 8}; +static oid probeDownloadStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 9}; +static oid serialMode[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 1}; +static oid serialProtocol[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 2}; +static oid serialTimeout[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 3}; +static oid serialModemInitString[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 4}; +static oid serialModemHangUpString[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 5}; +static oid serialModemConnectResp[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 6}; +static oid serialModemNoConnectResp[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 7}; +static oid serialDialoutTimeout[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 8}; +static oid serialStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 9}; +static oid netConfigIPAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 1}; +static oid netConfigSubnetMask[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 2}; +static oid netConfigStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 3}; +static oid netDefaultGateway[] = {1, 3, 6, 1, 2, 1, 16, 19, 12}; +static oid trapDestIndex[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 1}; +static oid trapDestCommunity[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 2}; +static oid trapDestProtocol[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 3}; +static oid trapDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 4}; +static oid trapDestOwner[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 5}; +static oid trapDestStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 6}; +static oid serialConnectIndex[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 1}; +static oid serialConnectDestIpAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 2}; +static oid serialConnectType[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 3}; +static oid serialConnectDialString[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 4}; +static oid serialConnectSwitchConnectSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 5}; +static oid serialConnectSwitchDisconnectSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 6}; +static oid serialConnectSwitchResetSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 7}; +static oid serialConnectOwner[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 8}; +static oid serialConnectStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 9}; + +int rmon2_mib_mgr_get_etherStats2Entry(struct snmp_session *s, etherStats2Entry_t **etherStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, etherStatsDroppedFrames, sizeof(etherStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, etherStatsCreateTime, sizeof(etherStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *etherStats2Entry = (etherStats2Entry_t *) malloc(sizeof(etherStats2Entry_t)); + if (! *etherStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(etherStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, etherStatsDroppedFrames, sizeof(etherStatsDroppedFrames)) == 0) { + (*etherStats2Entry)->__etherStatsDroppedFrames = *vars->val.integer; + (*etherStats2Entry)->etherStatsDroppedFrames = &((*etherStats2Entry)->__etherStatsDroppedFrames); + } + if (vars->name_length > sizeof(etherStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, etherStatsCreateTime, sizeof(etherStatsCreateTime)) == 0) { + (*etherStats2Entry)->__etherStatsCreateTime = *vars->val.integer; + (*etherStats2Entry)->etherStatsCreateTime = &((*etherStats2Entry)->__etherStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_tokenRingMLStats2Entry(struct snmp_session *s, tokenRingMLStats2Entry_t **tokenRingMLStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, tokenRingMLStatsDroppedFrames, sizeof(tokenRingMLStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, tokenRingMLStatsCreateTime, sizeof(tokenRingMLStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *tokenRingMLStats2Entry = (tokenRingMLStats2Entry_t *) malloc(sizeof(tokenRingMLStats2Entry_t)); + if (! *tokenRingMLStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(tokenRingMLStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, tokenRingMLStatsDroppedFrames, sizeof(tokenRingMLStatsDroppedFrames)) == 0) { + (*tokenRingMLStats2Entry)->__tokenRingMLStatsDroppedFrames = *vars->val.integer; + (*tokenRingMLStats2Entry)->tokenRingMLStatsDroppedFrames = &((*tokenRingMLStats2Entry)->__tokenRingMLStatsDroppedFrames); + } + if (vars->name_length > sizeof(tokenRingMLStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, tokenRingMLStatsCreateTime, sizeof(tokenRingMLStatsCreateTime)) == 0) { + (*tokenRingMLStats2Entry)->__tokenRingMLStatsCreateTime = *vars->val.integer; + (*tokenRingMLStats2Entry)->tokenRingMLStatsCreateTime = &((*tokenRingMLStats2Entry)->__tokenRingMLStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_tokenRingPStats2Entry(struct snmp_session *s, tokenRingPStats2Entry_t **tokenRingPStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, tokenRingPStatsDroppedFrames, sizeof(tokenRingPStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, tokenRingPStatsCreateTime, sizeof(tokenRingPStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *tokenRingPStats2Entry = (tokenRingPStats2Entry_t *) malloc(sizeof(tokenRingPStats2Entry_t)); + if (! *tokenRingPStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(tokenRingPStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, tokenRingPStatsDroppedFrames, sizeof(tokenRingPStatsDroppedFrames)) == 0) { + (*tokenRingPStats2Entry)->__tokenRingPStatsDroppedFrames = *vars->val.integer; + (*tokenRingPStats2Entry)->tokenRingPStatsDroppedFrames = &((*tokenRingPStats2Entry)->__tokenRingPStatsDroppedFrames); + } + if (vars->name_length > sizeof(tokenRingPStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, tokenRingPStatsCreateTime, sizeof(tokenRingPStatsCreateTime)) == 0) { + (*tokenRingPStats2Entry)->__tokenRingPStatsCreateTime = *vars->val.integer; + (*tokenRingPStats2Entry)->tokenRingPStatsCreateTime = &((*tokenRingPStats2Entry)->__tokenRingPStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_historyControl2Entry(struct snmp_session *s, historyControl2Entry_t **historyControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, historyControlDroppedFrames, sizeof(historyControlDroppedFrames)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *historyControl2Entry = (historyControl2Entry_t *) malloc(sizeof(historyControl2Entry_t)); + if (! *historyControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(historyControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, historyControlDroppedFrames, sizeof(historyControlDroppedFrames)) == 0) { + (*historyControl2Entry)->__historyControlDroppedFrames = *vars->val.integer; + (*historyControl2Entry)->historyControlDroppedFrames = &((*historyControl2Entry)->__historyControlDroppedFrames); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hostControl2Entry(struct snmp_session *s, hostControl2Entry_t **hostControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hostControlDroppedFrames, sizeof(hostControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hostControlCreateTime, sizeof(hostControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hostControl2Entry = (hostControl2Entry_t *) malloc(sizeof(hostControl2Entry_t)); + if (! *hostControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hostControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hostControlDroppedFrames, sizeof(hostControlDroppedFrames)) == 0) { + (*hostControl2Entry)->__hostControlDroppedFrames = *vars->val.integer; + (*hostControl2Entry)->hostControlDroppedFrames = &((*hostControl2Entry)->__hostControlDroppedFrames); + } + if (vars->name_length > sizeof(hostControlCreateTime)/sizeof(oid) + && memcmp(vars->name, hostControlCreateTime, sizeof(hostControlCreateTime)) == 0) { + (*hostControl2Entry)->__hostControlCreateTime = *vars->val.integer; + (*hostControl2Entry)->hostControlCreateTime = &((*hostControl2Entry)->__hostControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_matrixControl2Entry(struct snmp_session *s, matrixControl2Entry_t **matrixControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, matrixControlDroppedFrames, sizeof(matrixControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, matrixControlCreateTime, sizeof(matrixControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *matrixControl2Entry = (matrixControl2Entry_t *) malloc(sizeof(matrixControl2Entry_t)); + if (! *matrixControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(matrixControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, matrixControlDroppedFrames, sizeof(matrixControlDroppedFrames)) == 0) { + (*matrixControl2Entry)->__matrixControlDroppedFrames = *vars->val.integer; + (*matrixControl2Entry)->matrixControlDroppedFrames = &((*matrixControl2Entry)->__matrixControlDroppedFrames); + } + if (vars->name_length > sizeof(matrixControlCreateTime)/sizeof(oid) + && memcmp(vars->name, matrixControlCreateTime, sizeof(matrixControlCreateTime)) == 0) { + (*matrixControl2Entry)->__matrixControlCreateTime = *vars->val.integer; + (*matrixControl2Entry)->matrixControlCreateTime = &((*matrixControl2Entry)->__matrixControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_channel2Entry(struct snmp_session *s, channel2Entry_t **channel2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, channelDroppedFrames, sizeof(channelDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, channelCreateTime, sizeof(channelCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *channel2Entry = (channel2Entry_t *) malloc(sizeof(channel2Entry_t)); + if (! *channel2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(channelDroppedFrames)/sizeof(oid) + && memcmp(vars->name, channelDroppedFrames, sizeof(channelDroppedFrames)) == 0) { + (*channel2Entry)->__channelDroppedFrames = *vars->val.integer; + (*channel2Entry)->channelDroppedFrames = &((*channel2Entry)->__channelDroppedFrames); + } + if (vars->name_length > sizeof(channelCreateTime)/sizeof(oid) + && memcmp(vars->name, channelCreateTime, sizeof(channelCreateTime)) == 0) { + (*channel2Entry)->__channelCreateTime = *vars->val.integer; + (*channel2Entry)->channelCreateTime = &((*channel2Entry)->__channelCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_filter2Entry(struct snmp_session *s, filter2Entry_t **filter2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, filterProtocolDirDataLocalIndex, sizeof(filterProtocolDirDataLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, filterProtocolDirLocalIndex, sizeof(filterProtocolDirLocalIndex)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *filter2Entry = (filter2Entry_t *) malloc(sizeof(filter2Entry_t)); + if (! *filter2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(filterProtocolDirDataLocalIndex)/sizeof(oid) + && memcmp(vars->name, filterProtocolDirDataLocalIndex, sizeof(filterProtocolDirDataLocalIndex)) == 0) { + (*filter2Entry)->__filterProtocolDirDataLocalIndex = *vars->val.integer; + (*filter2Entry)->filterProtocolDirDataLocalIndex = &((*filter2Entry)->__filterProtocolDirDataLocalIndex); + } + if (vars->name_length > sizeof(filterProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, filterProtocolDirLocalIndex, sizeof(filterProtocolDirLocalIndex)) == 0) { + (*filter2Entry)->__filterProtocolDirLocalIndex = *vars->val.integer; + (*filter2Entry)->filterProtocolDirLocalIndex = &((*filter2Entry)->__filterProtocolDirLocalIndex); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_ringStationControl2Entry(struct snmp_session *s, ringStationControl2Entry_t **ringStationControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ringStationControlDroppedFrames, sizeof(ringStationControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, ringStationControlCreateTime, sizeof(ringStationControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ringStationControl2Entry = (ringStationControl2Entry_t *) malloc(sizeof(ringStationControl2Entry_t)); + if (! *ringStationControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ringStationControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, ringStationControlDroppedFrames, sizeof(ringStationControlDroppedFrames)) == 0) { + (*ringStationControl2Entry)->__ringStationControlDroppedFrames = *vars->val.integer; + (*ringStationControl2Entry)->ringStationControlDroppedFrames = &((*ringStationControl2Entry)->__ringStationControlDroppedFrames); + } + if (vars->name_length > sizeof(ringStationControlCreateTime)/sizeof(oid) + && memcmp(vars->name, ringStationControlCreateTime, sizeof(ringStationControlCreateTime)) == 0) { + (*ringStationControl2Entry)->__ringStationControlCreateTime = *vars->val.integer; + (*ringStationControl2Entry)->ringStationControlCreateTime = &((*ringStationControl2Entry)->__ringStationControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_sourceRoutingStats2Entry(struct snmp_session *s, sourceRoutingStats2Entry_t **sourceRoutingStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sourceRoutingStatsDroppedFrames, sizeof(sourceRoutingStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, sourceRoutingStatsCreateTime, sizeof(sourceRoutingStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *sourceRoutingStats2Entry = (sourceRoutingStats2Entry_t *) malloc(sizeof(sourceRoutingStats2Entry_t)); + if (! *sourceRoutingStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sourceRoutingStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, sourceRoutingStatsDroppedFrames, sizeof(sourceRoutingStatsDroppedFrames)) == 0) { + (*sourceRoutingStats2Entry)->__sourceRoutingStatsDroppedFrames = *vars->val.integer; + (*sourceRoutingStats2Entry)->sourceRoutingStatsDroppedFrames = &((*sourceRoutingStats2Entry)->__sourceRoutingStatsDroppedFrames); + } + if (vars->name_length > sizeof(sourceRoutingStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, sourceRoutingStatsCreateTime, sizeof(sourceRoutingStatsCreateTime)) == 0) { + (*sourceRoutingStats2Entry)->__sourceRoutingStatsCreateTime = *vars->val.integer; + (*sourceRoutingStats2Entry)->sourceRoutingStatsCreateTime = &((*sourceRoutingStats2Entry)->__sourceRoutingStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDir(struct snmp_session *s, protocolDir_t **protocolDir) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDirLastChange, sizeof(protocolDirLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDir = (protocolDir_t *) malloc(sizeof(protocolDir_t)); + if (! *protocolDir) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDirLastChange)/sizeof(oid) + && memcmp(vars->name, protocolDirLastChange, sizeof(protocolDirLastChange)) == 0) { + (*protocolDir)->__protocolDirLastChange = *vars->val.integer; + (*protocolDir)->protocolDirLastChange = &((*protocolDir)->__protocolDirLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDirEntry(struct snmp_session *s, protocolDirEntry_t **protocolDirEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDirLocalIndex, sizeof(protocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, protocolDirDescr, sizeof(protocolDirDescr)/sizeof(oid)); + snmp_add_null_var(request, protocolDirType, sizeof(protocolDirType)/sizeof(oid)); + snmp_add_null_var(request, protocolDirAddressMapConfig, sizeof(protocolDirAddressMapConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirHostConfig, sizeof(protocolDirHostConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirMatrixConfig, sizeof(protocolDirMatrixConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirOwner, sizeof(protocolDirOwner)/sizeof(oid)); + snmp_add_null_var(request, protocolDirStatus, sizeof(protocolDirStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDirEntry = (protocolDirEntry_t *) malloc(sizeof(protocolDirEntry_t)); + if (! *protocolDirEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, protocolDirLocalIndex, sizeof(protocolDirLocalIndex)) == 0) { + (*protocolDirEntry)->__protocolDirLocalIndex = *vars->val.integer; + (*protocolDirEntry)->protocolDirLocalIndex = &((*protocolDirEntry)->__protocolDirLocalIndex); + } + if (vars->name_length > sizeof(protocolDirDescr)/sizeof(oid) + && memcmp(vars->name, protocolDirDescr, sizeof(protocolDirDescr)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirDescr, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirDescrLength = vars->val_len; + (*protocolDirEntry)->protocolDirDescr = (*protocolDirEntry)->__protocolDirDescr; + } + if (vars->name_length > sizeof(protocolDirType)/sizeof(oid) + && memcmp(vars->name, protocolDirType, sizeof(protocolDirType)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirType, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirTypeLength = vars->val_len; + (*protocolDirEntry)->protocolDirType = (*protocolDirEntry)->__protocolDirType; + } + if (vars->name_length > sizeof(protocolDirAddressMapConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirAddressMapConfig, sizeof(protocolDirAddressMapConfig)) == 0) { + (*protocolDirEntry)->__protocolDirAddressMapConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirAddressMapConfig = &((*protocolDirEntry)->__protocolDirAddressMapConfig); + } + if (vars->name_length > sizeof(protocolDirHostConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirHostConfig, sizeof(protocolDirHostConfig)) == 0) { + (*protocolDirEntry)->__protocolDirHostConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirHostConfig = &((*protocolDirEntry)->__protocolDirHostConfig); + } + if (vars->name_length > sizeof(protocolDirMatrixConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirMatrixConfig, sizeof(protocolDirMatrixConfig)) == 0) { + (*protocolDirEntry)->__protocolDirMatrixConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirMatrixConfig = &((*protocolDirEntry)->__protocolDirMatrixConfig); + } + if (vars->name_length > sizeof(protocolDirOwner)/sizeof(oid) + && memcmp(vars->name, protocolDirOwner, sizeof(protocolDirOwner)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirOwner, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirOwnerLength = vars->val_len; + (*protocolDirEntry)->protocolDirOwner = (*protocolDirEntry)->__protocolDirOwner; + } + if (vars->name_length > sizeof(protocolDirStatus)/sizeof(oid) + && memcmp(vars->name, protocolDirStatus, sizeof(protocolDirStatus)) == 0) { + (*protocolDirEntry)->__protocolDirStatus = *vars->val.integer; + (*protocolDirEntry)->protocolDirStatus = &((*protocolDirEntry)->__protocolDirStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDistControlEntry(struct snmp_session *s, protocolDistControlEntry_t **protocolDistControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDistControlDataSource, sizeof(protocolDistControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlDroppedFrames, sizeof(protocolDistControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlCreateTime, sizeof(protocolDistControlCreateTime)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlOwner, sizeof(protocolDistControlOwner)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlStatus, sizeof(protocolDistControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDistControlEntry = (protocolDistControlEntry_t *) malloc(sizeof(protocolDistControlEntry_t)); + if (! *protocolDistControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDistControlDataSource)/sizeof(oid) + && memcmp(vars->name, protocolDistControlDataSource, sizeof(protocolDistControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(protocolDistControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, protocolDistControlDroppedFrames, sizeof(protocolDistControlDroppedFrames)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlDroppedFrames = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlDroppedFrames = &((*protocolDistControlEntry)->__protocolDistControlDroppedFrames); + } + if (vars->name_length > sizeof(protocolDistControlCreateTime)/sizeof(oid) + && memcmp(vars->name, protocolDistControlCreateTime, sizeof(protocolDistControlCreateTime)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlCreateTime = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlCreateTime = &((*protocolDistControlEntry)->__protocolDistControlCreateTime); + } + if (vars->name_length > sizeof(protocolDistControlOwner)/sizeof(oid) + && memcmp(vars->name, protocolDistControlOwner, sizeof(protocolDistControlOwner)) == 0) { + memcpy((*protocolDistControlEntry)->__protocolDistControlOwner, vars->val.string, vars->val_len); + (*protocolDistControlEntry)->_protocolDistControlOwnerLength = vars->val_len; + (*protocolDistControlEntry)->protocolDistControlOwner = (*protocolDistControlEntry)->__protocolDistControlOwner; + } + if (vars->name_length > sizeof(protocolDistControlStatus)/sizeof(oid) + && memcmp(vars->name, protocolDistControlStatus, sizeof(protocolDistControlStatus)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlStatus = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlStatus = &((*protocolDistControlEntry)->__protocolDistControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDistStatsEntry(struct snmp_session *s, protocolDistStatsEntry_t **protocolDistStatsEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDistStatsPkts, sizeof(protocolDistStatsPkts)/sizeof(oid)); + snmp_add_null_var(request, protocolDistStatsOctets, sizeof(protocolDistStatsOctets)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDistStatsEntry = (protocolDistStatsEntry_t *) malloc(sizeof(protocolDistStatsEntry_t)); + if (! *protocolDistStatsEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDistStatsPkts)/sizeof(oid) + && memcmp(vars->name, protocolDistStatsPkts, sizeof(protocolDistStatsPkts)) == 0) { + (*protocolDistStatsEntry)->__protocolDistStatsPkts = *vars->val.integer; + (*protocolDistStatsEntry)->protocolDistStatsPkts = &((*protocolDistStatsEntry)->__protocolDistStatsPkts); + } + if (vars->name_length > sizeof(protocolDistStatsOctets)/sizeof(oid) + && memcmp(vars->name, protocolDistStatsOctets, sizeof(protocolDistStatsOctets)) == 0) { + (*protocolDistStatsEntry)->__protocolDistStatsOctets = *vars->val.integer; + (*protocolDistStatsEntry)->protocolDistStatsOctets = &((*protocolDistStatsEntry)->__protocolDistStatsOctets); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMap(struct snmp_session *s, addressMap_t **addressMap) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapInserts, sizeof(addressMapInserts)/sizeof(oid)); + snmp_add_null_var(request, addressMapDeletes, sizeof(addressMapDeletes)/sizeof(oid)); + snmp_add_null_var(request, addressMapMaxDesiredEntries, sizeof(addressMapMaxDesiredEntries)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMap = (addressMap_t *) malloc(sizeof(addressMap_t)); + if (! *addressMap) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapInserts)/sizeof(oid) + && memcmp(vars->name, addressMapInserts, sizeof(addressMapInserts)) == 0) { + (*addressMap)->__addressMapInserts = *vars->val.integer; + (*addressMap)->addressMapInserts = &((*addressMap)->__addressMapInserts); + } + if (vars->name_length > sizeof(addressMapDeletes)/sizeof(oid) + && memcmp(vars->name, addressMapDeletes, sizeof(addressMapDeletes)) == 0) { + (*addressMap)->__addressMapDeletes = *vars->val.integer; + (*addressMap)->addressMapDeletes = &((*addressMap)->__addressMapDeletes); + } + if (vars->name_length > sizeof(addressMapMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, addressMapMaxDesiredEntries, sizeof(addressMapMaxDesiredEntries)) == 0) { + (*addressMap)->__addressMapMaxDesiredEntries = *vars->val.integer; + (*addressMap)->addressMapMaxDesiredEntries = &((*addressMap)->__addressMapMaxDesiredEntries); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMapControlEntry(struct snmp_session *s, addressMapControlEntry_t **addressMapControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapControlDataSource, sizeof(addressMapControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlDroppedFrames, sizeof(addressMapControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlOwner, sizeof(addressMapControlOwner)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlStatus, sizeof(addressMapControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMapControlEntry = (addressMapControlEntry_t *) malloc(sizeof(addressMapControlEntry_t)); + if (! *addressMapControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapControlDataSource)/sizeof(oid) + && memcmp(vars->name, addressMapControlDataSource, sizeof(addressMapControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(addressMapControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, addressMapControlDroppedFrames, sizeof(addressMapControlDroppedFrames)) == 0) { + (*addressMapControlEntry)->__addressMapControlDroppedFrames = *vars->val.integer; + (*addressMapControlEntry)->addressMapControlDroppedFrames = &((*addressMapControlEntry)->__addressMapControlDroppedFrames); + } + if (vars->name_length > sizeof(addressMapControlOwner)/sizeof(oid) + && memcmp(vars->name, addressMapControlOwner, sizeof(addressMapControlOwner)) == 0) { + memcpy((*addressMapControlEntry)->__addressMapControlOwner, vars->val.string, vars->val_len); + (*addressMapControlEntry)->_addressMapControlOwnerLength = vars->val_len; + (*addressMapControlEntry)->addressMapControlOwner = (*addressMapControlEntry)->__addressMapControlOwner; + } + if (vars->name_length > sizeof(addressMapControlStatus)/sizeof(oid) + && memcmp(vars->name, addressMapControlStatus, sizeof(addressMapControlStatus)) == 0) { + (*addressMapControlEntry)->__addressMapControlStatus = *vars->val.integer; + (*addressMapControlEntry)->addressMapControlStatus = &((*addressMapControlEntry)->__addressMapControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMapEntry(struct snmp_session *s, addressMapEntry_t **addressMapEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapPhysicalAddress, sizeof(addressMapPhysicalAddress)/sizeof(oid)); + snmp_add_null_var(request, addressMapLastChange, sizeof(addressMapLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMapEntry = (addressMapEntry_t *) malloc(sizeof(addressMapEntry_t)); + if (! *addressMapEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapPhysicalAddress)/sizeof(oid) + && memcmp(vars->name, addressMapPhysicalAddress, sizeof(addressMapPhysicalAddress)) == 0) { + memcpy((*addressMapEntry)->__addressMapPhysicalAddress, vars->val.string, vars->val_len); + (*addressMapEntry)->_addressMapPhysicalAddressLength = vars->val_len; + (*addressMapEntry)->addressMapPhysicalAddress = (*addressMapEntry)->__addressMapPhysicalAddress; + } + if (vars->name_length > sizeof(addressMapLastChange)/sizeof(oid) + && memcmp(vars->name, addressMapLastChange, sizeof(addressMapLastChange)) == 0) { + (*addressMapEntry)->__addressMapLastChange = *vars->val.integer; + (*addressMapEntry)->addressMapLastChange = &((*addressMapEntry)->__addressMapLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hlHostControlEntry(struct snmp_session *s, hlHostControlEntry_t **hlHostControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hlHostControlDataSource, sizeof(hlHostControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlDroppedFrames, sizeof(hlHostControlNlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlInserts, sizeof(hlHostControlNlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlDeletes, sizeof(hlHostControlNlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlMaxDesiredEntries, sizeof(hlHostControlNlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlDroppedFrames, sizeof(hlHostControlAlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlInserts, sizeof(hlHostControlAlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlDeletes, sizeof(hlHostControlAlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlMaxDesiredEntries, sizeof(hlHostControlAlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlOwner, sizeof(hlHostControlOwner)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlStatus, sizeof(hlHostControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hlHostControlEntry = (hlHostControlEntry_t *) malloc(sizeof(hlHostControlEntry_t)); + if (! *hlHostControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hlHostControlDataSource)/sizeof(oid) + && memcmp(vars->name, hlHostControlDataSource, sizeof(hlHostControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(hlHostControlNlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlDroppedFrames, sizeof(hlHostControlNlDroppedFrames)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlDroppedFrames = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlDroppedFrames = &((*hlHostControlEntry)->__hlHostControlNlDroppedFrames); + } + if (vars->name_length > sizeof(hlHostControlNlInserts)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlInserts, sizeof(hlHostControlNlInserts)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlInserts = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlInserts = &((*hlHostControlEntry)->__hlHostControlNlInserts); + } + if (vars->name_length > sizeof(hlHostControlNlDeletes)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlDeletes, sizeof(hlHostControlNlDeletes)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlDeletes = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlDeletes = &((*hlHostControlEntry)->__hlHostControlNlDeletes); + } + if (vars->name_length > sizeof(hlHostControlNlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlMaxDesiredEntries, sizeof(hlHostControlNlMaxDesiredEntries)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlMaxDesiredEntries = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlMaxDesiredEntries = &((*hlHostControlEntry)->__hlHostControlNlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlHostControlAlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlDroppedFrames, sizeof(hlHostControlAlDroppedFrames)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlDroppedFrames = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlDroppedFrames = &((*hlHostControlEntry)->__hlHostControlAlDroppedFrames); + } + if (vars->name_length > sizeof(hlHostControlAlInserts)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlInserts, sizeof(hlHostControlAlInserts)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlInserts = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlInserts = &((*hlHostControlEntry)->__hlHostControlAlInserts); + } + if (vars->name_length > sizeof(hlHostControlAlDeletes)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlDeletes, sizeof(hlHostControlAlDeletes)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlDeletes = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlDeletes = &((*hlHostControlEntry)->__hlHostControlAlDeletes); + } + if (vars->name_length > sizeof(hlHostControlAlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlMaxDesiredEntries, sizeof(hlHostControlAlMaxDesiredEntries)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlMaxDesiredEntries = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlMaxDesiredEntries = &((*hlHostControlEntry)->__hlHostControlAlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlHostControlOwner)/sizeof(oid) + && memcmp(vars->name, hlHostControlOwner, sizeof(hlHostControlOwner)) == 0) { + memcpy((*hlHostControlEntry)->__hlHostControlOwner, vars->val.string, vars->val_len); + (*hlHostControlEntry)->_hlHostControlOwnerLength = vars->val_len; + (*hlHostControlEntry)->hlHostControlOwner = (*hlHostControlEntry)->__hlHostControlOwner; + } + if (vars->name_length > sizeof(hlHostControlStatus)/sizeof(oid) + && memcmp(vars->name, hlHostControlStatus, sizeof(hlHostControlStatus)) == 0) { + (*hlHostControlEntry)->__hlHostControlStatus = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlStatus = &((*hlHostControlEntry)->__hlHostControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlHostEntry(struct snmp_session *s, nlHostEntry_t **nlHostEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlHostInPkts, sizeof(nlHostInPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutPkts, sizeof(nlHostOutPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostInOctets, sizeof(nlHostInOctets)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutOctets, sizeof(nlHostOutOctets)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutMacNonUnicastPkts, sizeof(nlHostOutMacNonUnicastPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostCreateTime, sizeof(nlHostCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlHostEntry = (nlHostEntry_t *) malloc(sizeof(nlHostEntry_t)); + if (! *nlHostEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlHostInPkts)/sizeof(oid) + && memcmp(vars->name, nlHostInPkts, sizeof(nlHostInPkts)) == 0) { + (*nlHostEntry)->__nlHostInPkts = *vars->val.integer; + (*nlHostEntry)->nlHostInPkts = &((*nlHostEntry)->__nlHostInPkts); + } + if (vars->name_length > sizeof(nlHostOutPkts)/sizeof(oid) + && memcmp(vars->name, nlHostOutPkts, sizeof(nlHostOutPkts)) == 0) { + (*nlHostEntry)->__nlHostOutPkts = *vars->val.integer; + (*nlHostEntry)->nlHostOutPkts = &((*nlHostEntry)->__nlHostOutPkts); + } + if (vars->name_length > sizeof(nlHostInOctets)/sizeof(oid) + && memcmp(vars->name, nlHostInOctets, sizeof(nlHostInOctets)) == 0) { + (*nlHostEntry)->__nlHostInOctets = *vars->val.integer; + (*nlHostEntry)->nlHostInOctets = &((*nlHostEntry)->__nlHostInOctets); + } + if (vars->name_length > sizeof(nlHostOutOctets)/sizeof(oid) + && memcmp(vars->name, nlHostOutOctets, sizeof(nlHostOutOctets)) == 0) { + (*nlHostEntry)->__nlHostOutOctets = *vars->val.integer; + (*nlHostEntry)->nlHostOutOctets = &((*nlHostEntry)->__nlHostOutOctets); + } + if (vars->name_length > sizeof(nlHostOutMacNonUnicastPkts)/sizeof(oid) + && memcmp(vars->name, nlHostOutMacNonUnicastPkts, sizeof(nlHostOutMacNonUnicastPkts)) == 0) { + (*nlHostEntry)->__nlHostOutMacNonUnicastPkts = *vars->val.integer; + (*nlHostEntry)->nlHostOutMacNonUnicastPkts = &((*nlHostEntry)->__nlHostOutMacNonUnicastPkts); + } + if (vars->name_length > sizeof(nlHostCreateTime)/sizeof(oid) + && memcmp(vars->name, nlHostCreateTime, sizeof(nlHostCreateTime)) == 0) { + (*nlHostEntry)->__nlHostCreateTime = *vars->val.integer; + (*nlHostEntry)->nlHostCreateTime = &((*nlHostEntry)->__nlHostCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hlMatrixControlEntry(struct snmp_session *s, hlMatrixControlEntry_t **hlMatrixControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hlMatrixControlDataSource, sizeof(hlMatrixControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlDroppedFrames, sizeof(hlMatrixControlNlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlInserts, sizeof(hlMatrixControlNlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlDeletes, sizeof(hlMatrixControlNlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlMaxDesiredEntries, sizeof(hlMatrixControlNlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlDroppedFrames, sizeof(hlMatrixControlAlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlInserts, sizeof(hlMatrixControlAlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlDeletes, sizeof(hlMatrixControlAlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlMaxDesiredEntries, sizeof(hlMatrixControlAlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlOwner, sizeof(hlMatrixControlOwner)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlStatus, sizeof(hlMatrixControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hlMatrixControlEntry = (hlMatrixControlEntry_t *) malloc(sizeof(hlMatrixControlEntry_t)); + if (! *hlMatrixControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hlMatrixControlDataSource)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlDataSource, sizeof(hlMatrixControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(hlMatrixControlNlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlDroppedFrames, sizeof(hlMatrixControlNlDroppedFrames)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlDroppedFrames = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlDroppedFrames = &((*hlMatrixControlEntry)->__hlMatrixControlNlDroppedFrames); + } + if (vars->name_length > sizeof(hlMatrixControlNlInserts)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlInserts, sizeof(hlMatrixControlNlInserts)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlInserts = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlInserts = &((*hlMatrixControlEntry)->__hlMatrixControlNlInserts); + } + if (vars->name_length > sizeof(hlMatrixControlNlDeletes)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlDeletes, sizeof(hlMatrixControlNlDeletes)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlDeletes = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlDeletes = &((*hlMatrixControlEntry)->__hlMatrixControlNlDeletes); + } + if (vars->name_length > sizeof(hlMatrixControlNlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlMaxDesiredEntries, sizeof(hlMatrixControlNlMaxDesiredEntries)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlMaxDesiredEntries = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlMaxDesiredEntries = &((*hlMatrixControlEntry)->__hlMatrixControlNlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlMatrixControlAlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlDroppedFrames, sizeof(hlMatrixControlAlDroppedFrames)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlDroppedFrames = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlDroppedFrames = &((*hlMatrixControlEntry)->__hlMatrixControlAlDroppedFrames); + } + if (vars->name_length > sizeof(hlMatrixControlAlInserts)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlInserts, sizeof(hlMatrixControlAlInserts)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlInserts = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlInserts = &((*hlMatrixControlEntry)->__hlMatrixControlAlInserts); + } + if (vars->name_length > sizeof(hlMatrixControlAlDeletes)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlDeletes, sizeof(hlMatrixControlAlDeletes)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlDeletes = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlDeletes = &((*hlMatrixControlEntry)->__hlMatrixControlAlDeletes); + } + if (vars->name_length > sizeof(hlMatrixControlAlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlMaxDesiredEntries, sizeof(hlMatrixControlAlMaxDesiredEntries)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlMaxDesiredEntries = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlMaxDesiredEntries = &((*hlMatrixControlEntry)->__hlMatrixControlAlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlMatrixControlOwner)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlOwner, sizeof(hlMatrixControlOwner)) == 0) { + memcpy((*hlMatrixControlEntry)->__hlMatrixControlOwner, vars->val.string, vars->val_len); + (*hlMatrixControlEntry)->_hlMatrixControlOwnerLength = vars->val_len; + (*hlMatrixControlEntry)->hlMatrixControlOwner = (*hlMatrixControlEntry)->__hlMatrixControlOwner; + } + if (vars->name_length > sizeof(hlMatrixControlStatus)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlStatus, sizeof(hlMatrixControlStatus)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlStatus = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlStatus = &((*hlMatrixControlEntry)->__hlMatrixControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixSDEntry(struct snmp_session *s, nlMatrixSDEntry_t **nlMatrixSDEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixSDPkts, sizeof(nlMatrixSDPkts)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixSDOctets, sizeof(nlMatrixSDOctets)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixSDCreateTime, sizeof(nlMatrixSDCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixSDEntry = (nlMatrixSDEntry_t *) malloc(sizeof(nlMatrixSDEntry_t)); + if (! *nlMatrixSDEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixSDPkts)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDPkts, sizeof(nlMatrixSDPkts)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDPkts = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDPkts = &((*nlMatrixSDEntry)->__nlMatrixSDPkts); + } + if (vars->name_length > sizeof(nlMatrixSDOctets)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDOctets, sizeof(nlMatrixSDOctets)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDOctets = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDOctets = &((*nlMatrixSDEntry)->__nlMatrixSDOctets); + } + if (vars->name_length > sizeof(nlMatrixSDCreateTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDCreateTime, sizeof(nlMatrixSDCreateTime)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDCreateTime = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDCreateTime = &((*nlMatrixSDEntry)->__nlMatrixSDCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixDSEntry(struct snmp_session *s, nlMatrixDSEntry_t **nlMatrixDSEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixDSPkts, sizeof(nlMatrixDSPkts)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixDSOctets, sizeof(nlMatrixDSOctets)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixDSCreateTime, sizeof(nlMatrixDSCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixDSEntry = (nlMatrixDSEntry_t *) malloc(sizeof(nlMatrixDSEntry_t)); + if (! *nlMatrixDSEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixDSPkts)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSPkts, sizeof(nlMatrixDSPkts)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSPkts = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSPkts = &((*nlMatrixDSEntry)->__nlMatrixDSPkts); + } + if (vars->name_length > sizeof(nlMatrixDSOctets)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSOctets, sizeof(nlMatrixDSOctets)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSOctets = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSOctets = &((*nlMatrixDSEntry)->__nlMatrixDSOctets); + } + if (vars->name_length > sizeof(nlMatrixDSCreateTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSCreateTime, sizeof(nlMatrixDSCreateTime)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSCreateTime = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSCreateTime = &((*nlMatrixDSEntry)->__nlMatrixDSCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixTopNControlEntry(struct snmp_session *s, nlMatrixTopNControlEntry_t **nlMatrixTopNControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixTopNControlMatrixIndex, sizeof(nlMatrixTopNControlMatrixIndex)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlRateBase, sizeof(nlMatrixTopNControlRateBase)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlTimeRemaining, sizeof(nlMatrixTopNControlTimeRemaining)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlGeneratedReports, sizeof(nlMatrixTopNControlGeneratedReports)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlDuration, sizeof(nlMatrixTopNControlDuration)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlRequestedSize, sizeof(nlMatrixTopNControlRequestedSize)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlGrantedSize, sizeof(nlMatrixTopNControlGrantedSize)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlStartTime, sizeof(nlMatrixTopNControlStartTime)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlOwner, sizeof(nlMatrixTopNControlOwner)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlStatus, sizeof(nlMatrixTopNControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixTopNControlEntry = (nlMatrixTopNControlEntry_t *) malloc(sizeof(nlMatrixTopNControlEntry_t)); + if (! *nlMatrixTopNControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixTopNControlMatrixIndex)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlMatrixIndex, sizeof(nlMatrixTopNControlMatrixIndex)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlMatrixIndex = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlMatrixIndex = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlMatrixIndex); + } + if (vars->name_length > sizeof(nlMatrixTopNControlRateBase)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlRateBase, sizeof(nlMatrixTopNControlRateBase)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRateBase = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlRateBase = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRateBase); + } + if (vars->name_length > sizeof(nlMatrixTopNControlTimeRemaining)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlTimeRemaining, sizeof(nlMatrixTopNControlTimeRemaining)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlTimeRemaining = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlTimeRemaining = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlTimeRemaining); + } + if (vars->name_length > sizeof(nlMatrixTopNControlGeneratedReports)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlGeneratedReports, sizeof(nlMatrixTopNControlGeneratedReports)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGeneratedReports = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlGeneratedReports = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGeneratedReports); + } + if (vars->name_length > sizeof(nlMatrixTopNControlDuration)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlDuration, sizeof(nlMatrixTopNControlDuration)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlDuration = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlDuration = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlDuration); + } + if (vars->name_length > sizeof(nlMatrixTopNControlRequestedSize)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlRequestedSize, sizeof(nlMatrixTopNControlRequestedSize)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRequestedSize = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlRequestedSize = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRequestedSize); + } + if (vars->name_length > sizeof(nlMatrixTopNControlGrantedSize)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlGrantedSize, sizeof(nlMatrixTopNControlGrantedSize)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGrantedSize = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlGrantedSize = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGrantedSize); + } + if (vars->name_length > sizeof(nlMatrixTopNControlStartTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlStartTime, sizeof(nlMatrixTopNControlStartTime)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStartTime = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlStartTime = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStartTime); + } + if (vars->name_length > sizeof(nlMatrixTopNControlOwner)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlOwner, sizeof(nlMatrixTopNControlOwner)) == 0) { + memcpy((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlOwner, vars->val.string, vars->val_len); + (*nlMatrixTopNControlEntry)->_nlMatrixTopNControlOwnerLength = vars->val_len; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlOwner = (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlOwner; + } + if (vars->name_length > sizeof(nlMatrixTopNControlStatus)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlStatus, sizeof(nlMatrixTopNControlStatus)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStatus = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlStatus = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixTopNEntry(struct snmp_session *s, nlMatrixTopNEntry_t **nlMatrixTopNEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixTopNProtocolDirLocalIndex, sizeof(nlMatrixTopNProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNSourceAddress, sizeof(nlMatrixTopNSourceAddress)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNDestAddress, sizeof(nlMatrixTopNDestAddress)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNPktRate, sizeof(nlMatrixTopNPktRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNReversePktRate, sizeof(nlMatrixTopNReversePktRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNOctetRate, sizeof(nlMatrixTopNOctetRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNReverseOctetRate, sizeof(nlMatrixTopNReverseOctetRate)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixTopNEntry = (nlMatrixTopNEntry_t *) malloc(sizeof(nlMatrixTopNEntry_t)); + if (! *nlMatrixTopNEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixTopNProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNProtocolDirLocalIndex, sizeof(nlMatrixTopNProtocolDirLocalIndex)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNProtocolDirLocalIndex = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNProtocolDirLocalIndex = &((*nlMatrixTopNEntry)->__nlMatrixTopNProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(nlMatrixTopNSourceAddress)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNSourceAddress, sizeof(nlMatrixTopNSourceAddress)) == 0) { + memcpy((*nlMatrixTopNEntry)->__nlMatrixTopNSourceAddress, vars->val.string, vars->val_len); + (*nlMatrixTopNEntry)->_nlMatrixTopNSourceAddressLength = vars->val_len; + (*nlMatrixTopNEntry)->nlMatrixTopNSourceAddress = (*nlMatrixTopNEntry)->__nlMatrixTopNSourceAddress; + } + if (vars->name_length > sizeof(nlMatrixTopNDestAddress)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNDestAddress, sizeof(nlMatrixTopNDestAddress)) == 0) { + memcpy((*nlMatrixTopNEntry)->__nlMatrixTopNDestAddress, vars->val.string, vars->val_len); + (*nlMatrixTopNEntry)->_nlMatrixTopNDestAddressLength = vars->val_len; + (*nlMatrixTopNEntry)->nlMatrixTopNDestAddress = (*nlMatrixTopNEntry)->__nlMatrixTopNDestAddress; + } + if (vars->name_length > sizeof(nlMatrixTopNPktRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNPktRate, sizeof(nlMatrixTopNPktRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNPktRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNPktRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNPktRate); + } + if (vars->name_length > sizeof(nlMatrixTopNReversePktRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNReversePktRate, sizeof(nlMatrixTopNReversePktRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNReversePktRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNReversePktRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNReversePktRate); + } + if (vars->name_length > sizeof(nlMatrixTopNOctetRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNOctetRate, sizeof(nlMatrixTopNOctetRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNOctetRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNOctetRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNOctetRate); + } + if (vars->name_length > sizeof(nlMatrixTopNReverseOctetRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNReverseOctetRate, sizeof(nlMatrixTopNReverseOctetRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNReverseOctetRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNReverseOctetRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNReverseOctetRate); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alHostEntry(struct snmp_session *s, alHostEntry_t **alHostEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alHostInPkts, sizeof(alHostInPkts)/sizeof(oid)); + snmp_add_null_var(request, alHostOutPkts, sizeof(alHostOutPkts)/sizeof(oid)); + snmp_add_null_var(request, alHostInOctets, sizeof(alHostInOctets)/sizeof(oid)); + snmp_add_null_var(request, alHostOutOctets, sizeof(alHostOutOctets)/sizeof(oid)); + snmp_add_null_var(request, alHostCreateTime, sizeof(alHostCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alHostEntry = (alHostEntry_t *) malloc(sizeof(alHostEntry_t)); + if (! *alHostEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alHostInPkts)/sizeof(oid) + && memcmp(vars->name, alHostInPkts, sizeof(alHostInPkts)) == 0) { + (*alHostEntry)->__alHostInPkts = *vars->val.integer; + (*alHostEntry)->alHostInPkts = &((*alHostEntry)->__alHostInPkts); + } + if (vars->name_length > sizeof(alHostOutPkts)/sizeof(oid) + && memcmp(vars->name, alHostOutPkts, sizeof(alHostOutPkts)) == 0) { + (*alHostEntry)->__alHostOutPkts = *vars->val.integer; + (*alHostEntry)->alHostOutPkts = &((*alHostEntry)->__alHostOutPkts); + } + if (vars->name_length > sizeof(alHostInOctets)/sizeof(oid) + && memcmp(vars->name, alHostInOctets, sizeof(alHostInOctets)) == 0) { + (*alHostEntry)->__alHostInOctets = *vars->val.integer; + (*alHostEntry)->alHostInOctets = &((*alHostEntry)->__alHostInOctets); + } + if (vars->name_length > sizeof(alHostOutOctets)/sizeof(oid) + && memcmp(vars->name, alHostOutOctets, sizeof(alHostOutOctets)) == 0) { + (*alHostEntry)->__alHostOutOctets = *vars->val.integer; + (*alHostEntry)->alHostOutOctets = &((*alHostEntry)->__alHostOutOctets); + } + if (vars->name_length > sizeof(alHostCreateTime)/sizeof(oid) + && memcmp(vars->name, alHostCreateTime, sizeof(alHostCreateTime)) == 0) { + (*alHostEntry)->__alHostCreateTime = *vars->val.integer; + (*alHostEntry)->alHostCreateTime = &((*alHostEntry)->__alHostCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixSDEntry(struct snmp_session *s, alMatrixSDEntry_t **alMatrixSDEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixSDPkts, sizeof(alMatrixSDPkts)/sizeof(oid)); + snmp_add_null_var(request, alMatrixSDOctets, sizeof(alMatrixSDOctets)/sizeof(oid)); + snmp_add_null_var(request, alMatrixSDCreateTime, sizeof(alMatrixSDCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixSDEntry = (alMatrixSDEntry_t *) malloc(sizeof(alMatrixSDEntry_t)); + if (! *alMatrixSDEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixSDPkts)/sizeof(oid) + && memcmp(vars->name, alMatrixSDPkts, sizeof(alMatrixSDPkts)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDPkts = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDPkts = &((*alMatrixSDEntry)->__alMatrixSDPkts); + } + if (vars->name_length > sizeof(alMatrixSDOctets)/sizeof(oid) + && memcmp(vars->name, alMatrixSDOctets, sizeof(alMatrixSDOctets)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDOctets = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDOctets = &((*alMatrixSDEntry)->__alMatrixSDOctets); + } + if (vars->name_length > sizeof(alMatrixSDCreateTime)/sizeof(oid) + && memcmp(vars->name, alMatrixSDCreateTime, sizeof(alMatrixSDCreateTime)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDCreateTime = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDCreateTime = &((*alMatrixSDEntry)->__alMatrixSDCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixDSEntry(struct snmp_session *s, alMatrixDSEntry_t **alMatrixDSEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixDSPkts, sizeof(alMatrixDSPkts)/sizeof(oid)); + snmp_add_null_var(request, alMatrixDSOctets, sizeof(alMatrixDSOctets)/sizeof(oid)); + snmp_add_null_var(request, alMatrixDSCreateTime, sizeof(alMatrixDSCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixDSEntry = (alMatrixDSEntry_t *) malloc(sizeof(alMatrixDSEntry_t)); + if (! *alMatrixDSEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixDSPkts)/sizeof(oid) + && memcmp(vars->name, alMatrixDSPkts, sizeof(alMatrixDSPkts)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSPkts = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSPkts = &((*alMatrixDSEntry)->__alMatrixDSPkts); + } + if (vars->name_length > sizeof(alMatrixDSOctets)/sizeof(oid) + && memcmp(vars->name, alMatrixDSOctets, sizeof(alMatrixDSOctets)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSOctets = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSOctets = &((*alMatrixDSEntry)->__alMatrixDSOctets); + } + if (vars->name_length > sizeof(alMatrixDSCreateTime)/sizeof(oid) + && memcmp(vars->name, alMatrixDSCreateTime, sizeof(alMatrixDSCreateTime)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSCreateTime = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSCreateTime = &((*alMatrixDSEntry)->__alMatrixDSCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixTopNControlEntry(struct snmp_session *s, alMatrixTopNControlEntry_t **alMatrixTopNControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixTopNControlMatrixIndex, sizeof(alMatrixTopNControlMatrixIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlRateBase, sizeof(alMatrixTopNControlRateBase)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlTimeRemaining, sizeof(alMatrixTopNControlTimeRemaining)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlGeneratedReports, sizeof(alMatrixTopNControlGeneratedReports)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlDuration, sizeof(alMatrixTopNControlDuration)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlRequestedSize, sizeof(alMatrixTopNControlRequestedSize)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlGrantedSize, sizeof(alMatrixTopNControlGrantedSize)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlStartTime, sizeof(alMatrixTopNControlStartTime)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlOwner, sizeof(alMatrixTopNControlOwner)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlStatus, sizeof(alMatrixTopNControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixTopNControlEntry = (alMatrixTopNControlEntry_t *) malloc(sizeof(alMatrixTopNControlEntry_t)); + if (! *alMatrixTopNControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixTopNControlMatrixIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlMatrixIndex, sizeof(alMatrixTopNControlMatrixIndex)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlMatrixIndex = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlMatrixIndex = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlMatrixIndex); + } + if (vars->name_length > sizeof(alMatrixTopNControlRateBase)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlRateBase, sizeof(alMatrixTopNControlRateBase)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlRateBase = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlRateBase = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlRateBase); + } + if (vars->name_length > sizeof(alMatrixTopNControlTimeRemaining)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlTimeRemaining, sizeof(alMatrixTopNControlTimeRemaining)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlTimeRemaining = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlTimeRemaining = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlTimeRemaining); + } + if (vars->name_length > sizeof(alMatrixTopNControlGeneratedReports)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlGeneratedReports, sizeof(alMatrixTopNControlGeneratedReports)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlGeneratedReports = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlGeneratedReports = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlGeneratedReports); + } + if (vars->name_length > sizeof(alMatrixTopNControlDuration)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlDuration, sizeof(alMatrixTopNControlDuration)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlDuration = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlDuration = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlDuration); + } + if (vars->name_length > sizeof(alMatrixTopNControlRequestedSize)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlRequestedSize, sizeof(alMatrixTopNControlRequestedSize)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlRequestedSize = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlRequestedSize = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlRequestedSize); + } + if (vars->name_length > sizeof(alMatrixTopNControlGrantedSize)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlGrantedSize, sizeof(alMatrixTopNControlGrantedSize)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlGrantedSize = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlGrantedSize = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlGrantedSize); + } + if (vars->name_length > sizeof(alMatrixTopNControlStartTime)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlStartTime, sizeof(alMatrixTopNControlStartTime)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlStartTime = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlStartTime = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlStartTime); + } + if (vars->name_length > sizeof(alMatrixTopNControlOwner)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlOwner, sizeof(alMatrixTopNControlOwner)) == 0) { + memcpy((*alMatrixTopNControlEntry)->__alMatrixTopNControlOwner, vars->val.string, vars->val_len); + (*alMatrixTopNControlEntry)->_alMatrixTopNControlOwnerLength = vars->val_len; + (*alMatrixTopNControlEntry)->alMatrixTopNControlOwner = (*alMatrixTopNControlEntry)->__alMatrixTopNControlOwner; + } + if (vars->name_length > sizeof(alMatrixTopNControlStatus)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlStatus, sizeof(alMatrixTopNControlStatus)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlStatus = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlStatus = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixTopNEntry(struct snmp_session *s, alMatrixTopNEntry_t **alMatrixTopNEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixTopNProtocolDirLocalIndex, sizeof(alMatrixTopNProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNSourceAddress, sizeof(alMatrixTopNSourceAddress)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNDestAddress, sizeof(alMatrixTopNDestAddress)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNAppProtocolDirLocalIndex, sizeof(alMatrixTopNAppProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNPktRate, sizeof(alMatrixTopNPktRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNReversePktRate, sizeof(alMatrixTopNReversePktRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNOctetRate, sizeof(alMatrixTopNOctetRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNReverseOctetRate, sizeof(alMatrixTopNReverseOctetRate)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixTopNEntry = (alMatrixTopNEntry_t *) malloc(sizeof(alMatrixTopNEntry_t)); + if (! *alMatrixTopNEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixTopNProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNProtocolDirLocalIndex, sizeof(alMatrixTopNProtocolDirLocalIndex)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNProtocolDirLocalIndex = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNProtocolDirLocalIndex = &((*alMatrixTopNEntry)->__alMatrixTopNProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(alMatrixTopNSourceAddress)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNSourceAddress, sizeof(alMatrixTopNSourceAddress)) == 0) { + memcpy((*alMatrixTopNEntry)->__alMatrixTopNSourceAddress, vars->val.string, vars->val_len); + (*alMatrixTopNEntry)->_alMatrixTopNSourceAddressLength = vars->val_len; + (*alMatrixTopNEntry)->alMatrixTopNSourceAddress = (*alMatrixTopNEntry)->__alMatrixTopNSourceAddress; + } + if (vars->name_length > sizeof(alMatrixTopNDestAddress)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNDestAddress, sizeof(alMatrixTopNDestAddress)) == 0) { + memcpy((*alMatrixTopNEntry)->__alMatrixTopNDestAddress, vars->val.string, vars->val_len); + (*alMatrixTopNEntry)->_alMatrixTopNDestAddressLength = vars->val_len; + (*alMatrixTopNEntry)->alMatrixTopNDestAddress = (*alMatrixTopNEntry)->__alMatrixTopNDestAddress; + } + if (vars->name_length > sizeof(alMatrixTopNAppProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNAppProtocolDirLocalIndex, sizeof(alMatrixTopNAppProtocolDirLocalIndex)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNAppProtocolDirLocalIndex = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNAppProtocolDirLocalIndex = &((*alMatrixTopNEntry)->__alMatrixTopNAppProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(alMatrixTopNPktRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNPktRate, sizeof(alMatrixTopNPktRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNPktRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNPktRate = &((*alMatrixTopNEntry)->__alMatrixTopNPktRate); + } + if (vars->name_length > sizeof(alMatrixTopNReversePktRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNReversePktRate, sizeof(alMatrixTopNReversePktRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNReversePktRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNReversePktRate = &((*alMatrixTopNEntry)->__alMatrixTopNReversePktRate); + } + if (vars->name_length > sizeof(alMatrixTopNOctetRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNOctetRate, sizeof(alMatrixTopNOctetRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNOctetRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNOctetRate = &((*alMatrixTopNEntry)->__alMatrixTopNOctetRate); + } + if (vars->name_length > sizeof(alMatrixTopNReverseOctetRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNReverseOctetRate, sizeof(alMatrixTopNReverseOctetRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNReverseOctetRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNReverseOctetRate = &((*alMatrixTopNEntry)->__alMatrixTopNReverseOctetRate); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryControlEntry(struct snmp_session *s, usrHistoryControlEntry_t **usrHistoryControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryControlObjects, sizeof(usrHistoryControlObjects)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlBucketsRequested, sizeof(usrHistoryControlBucketsRequested)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlBucketsGranted, sizeof(usrHistoryControlBucketsGranted)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlInterval, sizeof(usrHistoryControlInterval)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlOwner, sizeof(usrHistoryControlOwner)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlStatus, sizeof(usrHistoryControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryControlEntry = (usrHistoryControlEntry_t *) malloc(sizeof(usrHistoryControlEntry_t)); + if (! *usrHistoryControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryControlObjects)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlObjects, sizeof(usrHistoryControlObjects)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlObjects = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlObjects = &((*usrHistoryControlEntry)->__usrHistoryControlObjects); + } + if (vars->name_length > sizeof(usrHistoryControlBucketsRequested)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlBucketsRequested, sizeof(usrHistoryControlBucketsRequested)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlBucketsRequested = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlBucketsRequested = &((*usrHistoryControlEntry)->__usrHistoryControlBucketsRequested); + } + if (vars->name_length > sizeof(usrHistoryControlBucketsGranted)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlBucketsGranted, sizeof(usrHistoryControlBucketsGranted)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlBucketsGranted = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlBucketsGranted = &((*usrHistoryControlEntry)->__usrHistoryControlBucketsGranted); + } + if (vars->name_length > sizeof(usrHistoryControlInterval)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlInterval, sizeof(usrHistoryControlInterval)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlInterval = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlInterval = &((*usrHistoryControlEntry)->__usrHistoryControlInterval); + } + if (vars->name_length > sizeof(usrHistoryControlOwner)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlOwner, sizeof(usrHistoryControlOwner)) == 0) { + memcpy((*usrHistoryControlEntry)->__usrHistoryControlOwner, vars->val.string, vars->val_len); + (*usrHistoryControlEntry)->_usrHistoryControlOwnerLength = vars->val_len; + (*usrHistoryControlEntry)->usrHistoryControlOwner = (*usrHistoryControlEntry)->__usrHistoryControlOwner; + } + if (vars->name_length > sizeof(usrHistoryControlStatus)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlStatus, sizeof(usrHistoryControlStatus)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlStatus = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlStatus = &((*usrHistoryControlEntry)->__usrHistoryControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryObjectEntry(struct snmp_session *s, usrHistoryObjectEntry_t **usrHistoryObjectEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryObjectVariable, sizeof(usrHistoryObjectVariable)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryObjectSampleType, sizeof(usrHistoryObjectSampleType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryObjectEntry = (usrHistoryObjectEntry_t *) malloc(sizeof(usrHistoryObjectEntry_t)); + if (! *usrHistoryObjectEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryObjectVariable)/sizeof(oid) + && memcmp(vars->name, usrHistoryObjectVariable, sizeof(usrHistoryObjectVariable)) == 0) { + } + if (vars->name_length > sizeof(usrHistoryObjectSampleType)/sizeof(oid) + && memcmp(vars->name, usrHistoryObjectSampleType, sizeof(usrHistoryObjectSampleType)) == 0) { + (*usrHistoryObjectEntry)->__usrHistoryObjectSampleType = *vars->val.integer; + (*usrHistoryObjectEntry)->usrHistoryObjectSampleType = &((*usrHistoryObjectEntry)->__usrHistoryObjectSampleType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryEntry(struct snmp_session *s, usrHistoryEntry_t **usrHistoryEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryIntervalStart, sizeof(usrHistoryIntervalStart)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryIntervalEnd, sizeof(usrHistoryIntervalEnd)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryAbsValue, sizeof(usrHistoryAbsValue)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryValStatus, sizeof(usrHistoryValStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryEntry = (usrHistoryEntry_t *) malloc(sizeof(usrHistoryEntry_t)); + if (! *usrHistoryEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryIntervalStart)/sizeof(oid) + && memcmp(vars->name, usrHistoryIntervalStart, sizeof(usrHistoryIntervalStart)) == 0) { + (*usrHistoryEntry)->__usrHistoryIntervalStart = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryIntervalStart = &((*usrHistoryEntry)->__usrHistoryIntervalStart); + } + if (vars->name_length > sizeof(usrHistoryIntervalEnd)/sizeof(oid) + && memcmp(vars->name, usrHistoryIntervalEnd, sizeof(usrHistoryIntervalEnd)) == 0) { + (*usrHistoryEntry)->__usrHistoryIntervalEnd = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryIntervalEnd = &((*usrHistoryEntry)->__usrHistoryIntervalEnd); + } + if (vars->name_length > sizeof(usrHistoryAbsValue)/sizeof(oid) + && memcmp(vars->name, usrHistoryAbsValue, sizeof(usrHistoryAbsValue)) == 0) { + (*usrHistoryEntry)->__usrHistoryAbsValue = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryAbsValue = &((*usrHistoryEntry)->__usrHistoryAbsValue); + } + if (vars->name_length > sizeof(usrHistoryValStatus)/sizeof(oid) + && memcmp(vars->name, usrHistoryValStatus, sizeof(usrHistoryValStatus)) == 0) { + (*usrHistoryEntry)->__usrHistoryValStatus = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryValStatus = &((*usrHistoryEntry)->__usrHistoryValStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_probeConfig(struct snmp_session *s, probeConfig_t **probeConfig) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, probeCapabilities, sizeof(probeCapabilities)/sizeof(oid)); + snmp_add_null_var(request, probeSoftwareRev, sizeof(probeSoftwareRev)/sizeof(oid)); + snmp_add_null_var(request, probeHardwareRev, sizeof(probeHardwareRev)/sizeof(oid)); + snmp_add_null_var(request, probeDateTime, sizeof(probeDateTime)/sizeof(oid)); + snmp_add_null_var(request, probeResetControl, sizeof(probeResetControl)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadFile, sizeof(probeDownloadFile)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadTFTPServer, sizeof(probeDownloadTFTPServer)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadAction, sizeof(probeDownloadAction)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadStatus, sizeof(probeDownloadStatus)/sizeof(oid)); + snmp_add_null_var(request, netDefaultGateway, sizeof(netDefaultGateway)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *probeConfig = (probeConfig_t *) malloc(sizeof(probeConfig_t)); + if (! *probeConfig) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(probeCapabilities)/sizeof(oid) + && memcmp(vars->name, probeCapabilities, sizeof(probeCapabilities)) == 0) { + memcpy((*probeConfig)->__probeCapabilities, vars->val.string, vars->val_len); + (*probeConfig)->_probeCapabilitiesLength = vars->val_len; + (*probeConfig)->probeCapabilities = (*probeConfig)->__probeCapabilities; + } + if (vars->name_length > sizeof(probeSoftwareRev)/sizeof(oid) + && memcmp(vars->name, probeSoftwareRev, sizeof(probeSoftwareRev)) == 0) { + memcpy((*probeConfig)->__probeSoftwareRev, vars->val.string, vars->val_len); + (*probeConfig)->_probeSoftwareRevLength = vars->val_len; + (*probeConfig)->probeSoftwareRev = (*probeConfig)->__probeSoftwareRev; + } + if (vars->name_length > sizeof(probeHardwareRev)/sizeof(oid) + && memcmp(vars->name, probeHardwareRev, sizeof(probeHardwareRev)) == 0) { + memcpy((*probeConfig)->__probeHardwareRev, vars->val.string, vars->val_len); + (*probeConfig)->_probeHardwareRevLength = vars->val_len; + (*probeConfig)->probeHardwareRev = (*probeConfig)->__probeHardwareRev; + } + if (vars->name_length > sizeof(probeDateTime)/sizeof(oid) + && memcmp(vars->name, probeDateTime, sizeof(probeDateTime)) == 0) { + memcpy((*probeConfig)->__probeDateTime, vars->val.string, vars->val_len); + (*probeConfig)->_probeDateTimeLength = vars->val_len; + (*probeConfig)->probeDateTime = (*probeConfig)->__probeDateTime; + } + if (vars->name_length > sizeof(probeResetControl)/sizeof(oid) + && memcmp(vars->name, probeResetControl, sizeof(probeResetControl)) == 0) { + (*probeConfig)->__probeResetControl = *vars->val.integer; + (*probeConfig)->probeResetControl = &((*probeConfig)->__probeResetControl); + } + if (vars->name_length > sizeof(probeDownloadFile)/sizeof(oid) + && memcmp(vars->name, probeDownloadFile, sizeof(probeDownloadFile)) == 0) { + memcpy((*probeConfig)->__probeDownloadFile, vars->val.string, vars->val_len); + (*probeConfig)->_probeDownloadFileLength = vars->val_len; + (*probeConfig)->probeDownloadFile = (*probeConfig)->__probeDownloadFile; + } + if (vars->name_length > sizeof(probeDownloadTFTPServer)/sizeof(oid) + && memcmp(vars->name, probeDownloadTFTPServer, sizeof(probeDownloadTFTPServer)) == 0) { + memcpy((*probeConfig)->__probeDownloadTFTPServer, vars->val.string, vars->val_len); + (*probeConfig)->probeDownloadTFTPServer = (*probeConfig)->__probeDownloadTFTPServer; + } + if (vars->name_length > sizeof(probeDownloadAction)/sizeof(oid) + && memcmp(vars->name, probeDownloadAction, sizeof(probeDownloadAction)) == 0) { + (*probeConfig)->__probeDownloadAction = *vars->val.integer; + (*probeConfig)->probeDownloadAction = &((*probeConfig)->__probeDownloadAction); + } + if (vars->name_length > sizeof(probeDownloadStatus)/sizeof(oid) + && memcmp(vars->name, probeDownloadStatus, sizeof(probeDownloadStatus)) == 0) { + (*probeConfig)->__probeDownloadStatus = *vars->val.integer; + (*probeConfig)->probeDownloadStatus = &((*probeConfig)->__probeDownloadStatus); + } + if (vars->name_length > sizeof(netDefaultGateway)/sizeof(oid) + && memcmp(vars->name, netDefaultGateway, sizeof(netDefaultGateway)) == 0) { + memcpy((*probeConfig)->__netDefaultGateway, vars->val.string, vars->val_len); + (*probeConfig)->netDefaultGateway = (*probeConfig)->__netDefaultGateway; + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_serialConfigEntry(struct snmp_session *s, serialConfigEntry_t **serialConfigEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, serialMode, sizeof(serialMode)/sizeof(oid)); + snmp_add_null_var(request, serialProtocol, sizeof(serialProtocol)/sizeof(oid)); + snmp_add_null_var(request, serialTimeout, sizeof(serialTimeout)/sizeof(oid)); + snmp_add_null_var(request, serialModemInitString, sizeof(serialModemInitString)/sizeof(oid)); + snmp_add_null_var(request, serialModemHangUpString, sizeof(serialModemHangUpString)/sizeof(oid)); + snmp_add_null_var(request, serialModemConnectResp, sizeof(serialModemConnectResp)/sizeof(oid)); + snmp_add_null_var(request, serialModemNoConnectResp, sizeof(serialModemNoConnectResp)/sizeof(oid)); + snmp_add_null_var(request, serialDialoutTimeout, sizeof(serialDialoutTimeout)/sizeof(oid)); + snmp_add_null_var(request, serialStatus, sizeof(serialStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *serialConfigEntry = (serialConfigEntry_t *) malloc(sizeof(serialConfigEntry_t)); + if (! *serialConfigEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(serialMode)/sizeof(oid) + && memcmp(vars->name, serialMode, sizeof(serialMode)) == 0) { + (*serialConfigEntry)->__serialMode = *vars->val.integer; + (*serialConfigEntry)->serialMode = &((*serialConfigEntry)->__serialMode); + } + if (vars->name_length > sizeof(serialProtocol)/sizeof(oid) + && memcmp(vars->name, serialProtocol, sizeof(serialProtocol)) == 0) { + (*serialConfigEntry)->__serialProtocol = *vars->val.integer; + (*serialConfigEntry)->serialProtocol = &((*serialConfigEntry)->__serialProtocol); + } + if (vars->name_length > sizeof(serialTimeout)/sizeof(oid) + && memcmp(vars->name, serialTimeout, sizeof(serialTimeout)) == 0) { + (*serialConfigEntry)->__serialTimeout = *vars->val.integer; + (*serialConfigEntry)->serialTimeout = &((*serialConfigEntry)->__serialTimeout); + } + if (vars->name_length > sizeof(serialModemInitString)/sizeof(oid) + && memcmp(vars->name, serialModemInitString, sizeof(serialModemInitString)) == 0) { + memcpy((*serialConfigEntry)->__serialModemInitString, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemInitStringLength = vars->val_len; + (*serialConfigEntry)->serialModemInitString = (*serialConfigEntry)->__serialModemInitString; + } + if (vars->name_length > sizeof(serialModemHangUpString)/sizeof(oid) + && memcmp(vars->name, serialModemHangUpString, sizeof(serialModemHangUpString)) == 0) { + memcpy((*serialConfigEntry)->__serialModemHangUpString, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemHangUpStringLength = vars->val_len; + (*serialConfigEntry)->serialModemHangUpString = (*serialConfigEntry)->__serialModemHangUpString; + } + if (vars->name_length > sizeof(serialModemConnectResp)/sizeof(oid) + && memcmp(vars->name, serialModemConnectResp, sizeof(serialModemConnectResp)) == 0) { + memcpy((*serialConfigEntry)->__serialModemConnectResp, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemConnectRespLength = vars->val_len; + (*serialConfigEntry)->serialModemConnectResp = (*serialConfigEntry)->__serialModemConnectResp; + } + if (vars->name_length > sizeof(serialModemNoConnectResp)/sizeof(oid) + && memcmp(vars->name, serialModemNoConnectResp, sizeof(serialModemNoConnectResp)) == 0) { + memcpy((*serialConfigEntry)->__serialModemNoConnectResp, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemNoConnectRespLength = vars->val_len; + (*serialConfigEntry)->serialModemNoConnectResp = (*serialConfigEntry)->__serialModemNoConnectResp; + } + if (vars->name_length > sizeof(serialDialoutTimeout)/sizeof(oid) + && memcmp(vars->name, serialDialoutTimeout, sizeof(serialDialoutTimeout)) == 0) { + (*serialConfigEntry)->__serialDialoutTimeout = *vars->val.integer; + (*serialConfigEntry)->serialDialoutTimeout = &((*serialConfigEntry)->__serialDialoutTimeout); + } + if (vars->name_length > sizeof(serialStatus)/sizeof(oid) + && memcmp(vars->name, serialStatus, sizeof(serialStatus)) == 0) { + (*serialConfigEntry)->__serialStatus = *vars->val.integer; + (*serialConfigEntry)->serialStatus = &((*serialConfigEntry)->__serialStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_netConfigEntry(struct snmp_session *s, netConfigEntry_t **netConfigEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, netConfigIPAddress, sizeof(netConfigIPAddress)/sizeof(oid)); + snmp_add_null_var(request, netConfigSubnetMask, sizeof(netConfigSubnetMask)/sizeof(oid)); + snmp_add_null_var(request, netConfigStatus, sizeof(netConfigStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *netConfigEntry = (netConfigEntry_t *) malloc(sizeof(netConfigEntry_t)); + if (! *netConfigEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(netConfigIPAddress)/sizeof(oid) + && memcmp(vars->name, netConfigIPAddress, sizeof(netConfigIPAddress)) == 0) { + memcpy((*netConfigEntry)->__netConfigIPAddress, vars->val.string, vars->val_len); + (*netConfigEntry)->netConfigIPAddress = (*netConfigEntry)->__netConfigIPAddress; + } + if (vars->name_length > sizeof(netConfigSubnetMask)/sizeof(oid) + && memcmp(vars->name, netConfigSubnetMask, sizeof(netConfigSubnetMask)) == 0) { + memcpy((*netConfigEntry)->__netConfigSubnetMask, vars->val.string, vars->val_len); + (*netConfigEntry)->netConfigSubnetMask = (*netConfigEntry)->__netConfigSubnetMask; + } + if (vars->name_length > sizeof(netConfigStatus)/sizeof(oid) + && memcmp(vars->name, netConfigStatus, sizeof(netConfigStatus)) == 0) { + (*netConfigEntry)->__netConfigStatus = *vars->val.integer; + (*netConfigEntry)->netConfigStatus = &((*netConfigEntry)->__netConfigStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_trapDestEntry(struct snmp_session *s, trapDestEntry_t **trapDestEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, trapDestCommunity, sizeof(trapDestCommunity)/sizeof(oid)); + snmp_add_null_var(request, trapDestProtocol, sizeof(trapDestProtocol)/sizeof(oid)); + snmp_add_null_var(request, trapDestAddress, sizeof(trapDestAddress)/sizeof(oid)); + snmp_add_null_var(request, trapDestOwner, sizeof(trapDestOwner)/sizeof(oid)); + snmp_add_null_var(request, trapDestStatus, sizeof(trapDestStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *trapDestEntry = (trapDestEntry_t *) malloc(sizeof(trapDestEntry_t)); + if (! *trapDestEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(trapDestCommunity)/sizeof(oid) + && memcmp(vars->name, trapDestCommunity, sizeof(trapDestCommunity)) == 0) { + memcpy((*trapDestEntry)->__trapDestCommunity, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestCommunityLength = vars->val_len; + (*trapDestEntry)->trapDestCommunity = (*trapDestEntry)->__trapDestCommunity; + } + if (vars->name_length > sizeof(trapDestProtocol)/sizeof(oid) + && memcmp(vars->name, trapDestProtocol, sizeof(trapDestProtocol)) == 0) { + (*trapDestEntry)->__trapDestProtocol = *vars->val.integer; + (*trapDestEntry)->trapDestProtocol = &((*trapDestEntry)->__trapDestProtocol); + } + if (vars->name_length > sizeof(trapDestAddress)/sizeof(oid) + && memcmp(vars->name, trapDestAddress, sizeof(trapDestAddress)) == 0) { + memcpy((*trapDestEntry)->__trapDestAddress, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestAddressLength = vars->val_len; + (*trapDestEntry)->trapDestAddress = (*trapDestEntry)->__trapDestAddress; + } + if (vars->name_length > sizeof(trapDestOwner)/sizeof(oid) + && memcmp(vars->name, trapDestOwner, sizeof(trapDestOwner)) == 0) { + memcpy((*trapDestEntry)->__trapDestOwner, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestOwnerLength = vars->val_len; + (*trapDestEntry)->trapDestOwner = (*trapDestEntry)->__trapDestOwner; + } + if (vars->name_length > sizeof(trapDestStatus)/sizeof(oid) + && memcmp(vars->name, trapDestStatus, sizeof(trapDestStatus)) == 0) { + (*trapDestEntry)->__trapDestStatus = *vars->val.integer; + (*trapDestEntry)->trapDestStatus = &((*trapDestEntry)->__trapDestStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_serialConnectionEntry(struct snmp_session *s, serialConnectionEntry_t **serialConnectionEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, serialConnectDestIpAddress, sizeof(serialConnectDestIpAddress)/sizeof(oid)); + snmp_add_null_var(request, serialConnectType, sizeof(serialConnectType)/sizeof(oid)); + snmp_add_null_var(request, serialConnectDialString, sizeof(serialConnectDialString)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchConnectSeq, sizeof(serialConnectSwitchConnectSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchDisconnectSeq, sizeof(serialConnectSwitchDisconnectSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchResetSeq, sizeof(serialConnectSwitchResetSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectOwner, sizeof(serialConnectOwner)/sizeof(oid)); + snmp_add_null_var(request, serialConnectStatus, sizeof(serialConnectStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *serialConnectionEntry = (serialConnectionEntry_t *) malloc(sizeof(serialConnectionEntry_t)); + if (! *serialConnectionEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(serialConnectDestIpAddress)/sizeof(oid) + && memcmp(vars->name, serialConnectDestIpAddress, sizeof(serialConnectDestIpAddress)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectDestIpAddress, vars->val.string, vars->val_len); + (*serialConnectionEntry)->serialConnectDestIpAddress = (*serialConnectionEntry)->__serialConnectDestIpAddress; + } + if (vars->name_length > sizeof(serialConnectType)/sizeof(oid) + && memcmp(vars->name, serialConnectType, sizeof(serialConnectType)) == 0) { + (*serialConnectionEntry)->__serialConnectType = *vars->val.integer; + (*serialConnectionEntry)->serialConnectType = &((*serialConnectionEntry)->__serialConnectType); + } + if (vars->name_length > sizeof(serialConnectDialString)/sizeof(oid) + && memcmp(vars->name, serialConnectDialString, sizeof(serialConnectDialString)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectDialString, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectDialStringLength = vars->val_len; + (*serialConnectionEntry)->serialConnectDialString = (*serialConnectionEntry)->__serialConnectDialString; + } + if (vars->name_length > sizeof(serialConnectSwitchConnectSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchConnectSeq, sizeof(serialConnectSwitchConnectSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchConnectSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchConnectSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchConnectSeq = (*serialConnectionEntry)->__serialConnectSwitchConnectSeq; + } + if (vars->name_length > sizeof(serialConnectSwitchDisconnectSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchDisconnectSeq, sizeof(serialConnectSwitchDisconnectSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchDisconnectSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchDisconnectSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchDisconnectSeq = (*serialConnectionEntry)->__serialConnectSwitchDisconnectSeq; + } + if (vars->name_length > sizeof(serialConnectSwitchResetSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchResetSeq, sizeof(serialConnectSwitchResetSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchResetSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchResetSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchResetSeq = (*serialConnectionEntry)->__serialConnectSwitchResetSeq; + } + if (vars->name_length > sizeof(serialConnectOwner)/sizeof(oid) + && memcmp(vars->name, serialConnectOwner, sizeof(serialConnectOwner)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectOwner, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectOwnerLength = vars->val_len; + (*serialConnectionEntry)->serialConnectOwner = (*serialConnectionEntry)->__serialConnectOwner; + } + if (vars->name_length > sizeof(serialConnectStatus)/sizeof(oid) + && memcmp(vars->name, serialConnectStatus, sizeof(serialConnectStatus)) == 0) { + (*serialConnectionEntry)->__serialConnectStatus = *vars->val.integer; + (*serialConnectionEntry)->serialConnectStatus = &((*serialConnectionEntry)->__serialConnectStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/rmon2-mib.h b/test/dumps/netsnmp/rmon2-mib.h new file mode 100644 index 0000000..46518bd --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib.h @@ -0,0 +1,1545 @@ +/* + * This C header file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib.h 4432 2006-05-29 16:21:11Z strauss $ + */ + +#ifndef _RMON2_MIB_H_ +#define _RMON2_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for RMON2-MIB::etherStats2Entry. + */ + +typedef struct etherStats2Entry { + uint32_t *etherStatsDroppedFrames; + uint32_t *etherStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct etherStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __etherStatsDroppedFrames; + uint32_t __etherStatsCreateTime; +} etherStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::etherStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_etherStats2Entry(struct snmp_session *s, etherStats2Entry_t **etherStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::etherStats2Entry. + */ + +extern int +rmon2_mib_agt_read_etherStats2Entry(etherStats2Entry_t *etherStats2Entry); +extern int +rmon2_mib_agt_register_etherStats2Entry(); + +/* + * C type definitions for RMON2-MIB::tokenRingMLStats2Entry. + */ + +typedef struct tokenRingMLStats2Entry { + uint32_t *tokenRingMLStatsDroppedFrames; + uint32_t *tokenRingMLStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct tokenRingMLStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __tokenRingMLStatsDroppedFrames; + uint32_t __tokenRingMLStatsCreateTime; +} tokenRingMLStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::tokenRingMLStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_tokenRingMLStats2Entry(struct snmp_session *s, tokenRingMLStats2Entry_t **tokenRingMLStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::tokenRingMLStats2Entry. + */ + +extern int +rmon2_mib_agt_read_tokenRingMLStats2Entry(tokenRingMLStats2Entry_t *tokenRingMLStats2Entry); +extern int +rmon2_mib_agt_register_tokenRingMLStats2Entry(); + +/* + * C type definitions for RMON2-MIB::tokenRingPStats2Entry. + */ + +typedef struct tokenRingPStats2Entry { + uint32_t *tokenRingPStatsDroppedFrames; + uint32_t *tokenRingPStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct tokenRingPStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __tokenRingPStatsDroppedFrames; + uint32_t __tokenRingPStatsCreateTime; +} tokenRingPStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::tokenRingPStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_tokenRingPStats2Entry(struct snmp_session *s, tokenRingPStats2Entry_t **tokenRingPStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::tokenRingPStats2Entry. + */ + +extern int +rmon2_mib_agt_read_tokenRingPStats2Entry(tokenRingPStats2Entry_t *tokenRingPStats2Entry); +extern int +rmon2_mib_agt_register_tokenRingPStats2Entry(); + +/* + * C type definitions for RMON2-MIB::historyControl2Entry. + */ + +typedef struct historyControl2Entry { + uint32_t *historyControlDroppedFrames; + void *_clientData; /* pointer to client data structure */ + struct historyControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __historyControlDroppedFrames; +} historyControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::historyControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_historyControl2Entry(struct snmp_session *s, historyControl2Entry_t **historyControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::historyControl2Entry. + */ + +extern int +rmon2_mib_agt_read_historyControl2Entry(historyControl2Entry_t *historyControl2Entry); +extern int +rmon2_mib_agt_register_historyControl2Entry(); + +/* + * C type definitions for RMON2-MIB::hostControl2Entry. + */ + +typedef struct hostControl2Entry { + uint32_t *hostControlDroppedFrames; + uint32_t *hostControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct hostControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __hostControlDroppedFrames; + uint32_t __hostControlCreateTime; +} hostControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::hostControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_hostControl2Entry(struct snmp_session *s, hostControl2Entry_t **hostControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::hostControl2Entry. + */ + +extern int +rmon2_mib_agt_read_hostControl2Entry(hostControl2Entry_t *hostControl2Entry); +extern int +rmon2_mib_agt_register_hostControl2Entry(); + +/* + * C type definitions for RMON2-MIB::matrixControl2Entry. + */ + +typedef struct matrixControl2Entry { + uint32_t *matrixControlDroppedFrames; + uint32_t *matrixControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct matrixControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __matrixControlDroppedFrames; + uint32_t __matrixControlCreateTime; +} matrixControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::matrixControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_matrixControl2Entry(struct snmp_session *s, matrixControl2Entry_t **matrixControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::matrixControl2Entry. + */ + +extern int +rmon2_mib_agt_read_matrixControl2Entry(matrixControl2Entry_t *matrixControl2Entry); +extern int +rmon2_mib_agt_register_matrixControl2Entry(); + +/* + * C type definitions for RMON2-MIB::channel2Entry. + */ + +typedef struct channel2Entry { + uint32_t *channelDroppedFrames; + uint32_t *channelCreateTime; + void *_clientData; /* pointer to client data structure */ + struct channel2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __channelDroppedFrames; + uint32_t __channelCreateTime; +} channel2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::channel2Entry. + */ + +extern int +rmon2_mib_mgr_get_channel2Entry(struct snmp_session *s, channel2Entry_t **channel2Entry); + +/* + * C agent interface stubs for RMON2-MIB::channel2Entry. + */ + +extern int +rmon2_mib_agt_read_channel2Entry(channel2Entry_t *channel2Entry); +extern int +rmon2_mib_agt_register_channel2Entry(); + +/* + * C type definitions for RMON2-MIB::filter2Entry. + */ + +typedef struct filter2Entry { + int32_t *filterProtocolDirDataLocalIndex; + int32_t *filterProtocolDirLocalIndex; + void *_clientData; /* pointer to client data structure */ + struct filter2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __filterProtocolDirDataLocalIndex; + int32_t __filterProtocolDirLocalIndex; +} filter2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::filter2Entry. + */ + +extern int +rmon2_mib_mgr_get_filter2Entry(struct snmp_session *s, filter2Entry_t **filter2Entry); + +/* + * C agent interface stubs for RMON2-MIB::filter2Entry. + */ + +extern int +rmon2_mib_agt_read_filter2Entry(filter2Entry_t *filter2Entry); +extern int +rmon2_mib_agt_register_filter2Entry(); + +/* + * C type definitions for RMON2-MIB::ringStationControl2Entry. + */ + +typedef struct ringStationControl2Entry { + uint32_t *ringStationControlDroppedFrames; + uint32_t *ringStationControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct ringStationControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __ringStationControlDroppedFrames; + uint32_t __ringStationControlCreateTime; +} ringStationControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::ringStationControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_ringStationControl2Entry(struct snmp_session *s, ringStationControl2Entry_t **ringStationControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::ringStationControl2Entry. + */ + +extern int +rmon2_mib_agt_read_ringStationControl2Entry(ringStationControl2Entry_t *ringStationControl2Entry); +extern int +rmon2_mib_agt_register_ringStationControl2Entry(); + +/* + * C type definitions for RMON2-MIB::sourceRoutingStats2Entry. + */ + +typedef struct sourceRoutingStats2Entry { + uint32_t *sourceRoutingStatsDroppedFrames; + uint32_t *sourceRoutingStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct sourceRoutingStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __sourceRoutingStatsDroppedFrames; + uint32_t __sourceRoutingStatsCreateTime; +} sourceRoutingStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::sourceRoutingStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_sourceRoutingStats2Entry(struct snmp_session *s, sourceRoutingStats2Entry_t **sourceRoutingStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::sourceRoutingStats2Entry. + */ + +extern int +rmon2_mib_agt_read_sourceRoutingStats2Entry(sourceRoutingStats2Entry_t *sourceRoutingStats2Entry); +extern int +rmon2_mib_agt_register_sourceRoutingStats2Entry(); + +/* + * C type definitions for RMON2-MIB::protocolDir. + */ + +typedef struct protocolDir { + uint32_t *protocolDirLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __protocolDirLastChange; +} protocolDir_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDir. + */ + +extern int +rmon2_mib_mgr_get_protocolDir(struct snmp_session *s, protocolDir_t **protocolDir); + +/* + * C agent interface stubs for RMON2-MIB::protocolDir. + */ + +extern int +rmon2_mib_agt_read_protocolDir(protocolDir_t *protocolDir); +extern int +rmon2_mib_agt_register_protocolDir(); + +/* + * C type definitions for RMON2-MIB::protocolDirEntry. + */ + +typedef struct protocolDirEntry { + u_char *protocolDirID; + size_t _protocolDirIDLength; + u_char *protocolDirParameters; + size_t _protocolDirParametersLength; + int32_t *protocolDirLocalIndex; + u_char *protocolDirDescr; + size_t _protocolDirDescrLength; + u_char *protocolDirType; + size_t _protocolDirTypeLength; + int32_t *protocolDirAddressMapConfig; + int32_t *protocolDirHostConfig; + int32_t *protocolDirMatrixConfig; + u_char *protocolDirOwner; + size_t _protocolDirOwnerLength; + int32_t *protocolDirStatus; + void *_clientData; /* pointer to client data structure */ + struct protocolDirEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __protocolDirID[128]; + u_char __protocolDirParameters[32]; + int32_t __protocolDirLocalIndex; + u_char __protocolDirDescr[64]; + u_char __protocolDirType[1]; + int32_t __protocolDirAddressMapConfig; + int32_t __protocolDirHostConfig; + int32_t __protocolDirMatrixConfig; + u_char __protocolDirOwner[127]; + int32_t __protocolDirStatus; +} protocolDirEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDirEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDirEntry(struct snmp_session *s, protocolDirEntry_t **protocolDirEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDirEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDirEntry(protocolDirEntry_t *protocolDirEntry); +extern int +rmon2_mib_agt_register_protocolDirEntry(); + +/* + * C type definitions for RMON2-MIB::protocolDistControlEntry. + */ + +typedef struct protocolDistControlEntry { + int32_t *protocolDistControlIndex; + uint32_t *protocolDistControlDataSource; + size_t _protocolDistControlDataSourceLength; + uint32_t *protocolDistControlDroppedFrames; + uint32_t *protocolDistControlCreateTime; + u_char *protocolDistControlOwner; + size_t _protocolDistControlOwnerLength; + int32_t *protocolDistControlStatus; + void *_clientData; /* pointer to client data structure */ + struct protocolDistControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __protocolDistControlIndex; + uint32_t __protocolDistControlDataSource[128]; + uint32_t __protocolDistControlDroppedFrames; + uint32_t __protocolDistControlCreateTime; + u_char __protocolDistControlOwner[127]; + int32_t __protocolDistControlStatus; +} protocolDistControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDistControlEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDistControlEntry(struct snmp_session *s, protocolDistControlEntry_t **protocolDistControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDistControlEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDistControlEntry(protocolDistControlEntry_t *protocolDistControlEntry); +extern int +rmon2_mib_agt_register_protocolDistControlEntry(); + +/* + * C type definitions for RMON2-MIB::protocolDistStatsEntry. + */ + +typedef struct protocolDistStatsEntry { + uint32_t *protocolDistStatsPkts; + uint32_t *protocolDistStatsOctets; + void *_clientData; /* pointer to client data structure */ + struct protocolDistStatsEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __protocolDistStatsPkts; + uint32_t __protocolDistStatsOctets; +} protocolDistStatsEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDistStatsEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDistStatsEntry(struct snmp_session *s, protocolDistStatsEntry_t **protocolDistStatsEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDistStatsEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDistStatsEntry(protocolDistStatsEntry_t *protocolDistStatsEntry); +extern int +rmon2_mib_agt_register_protocolDistStatsEntry(); + +/* + * C type definitions for RMON2-MIB::addressMap. + */ + +typedef struct addressMap { + uint32_t *addressMapInserts; + uint32_t *addressMapDeletes; + int32_t *addressMapMaxDesiredEntries; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __addressMapInserts; + uint32_t __addressMapDeletes; + int32_t __addressMapMaxDesiredEntries; +} addressMap_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMap. + */ + +extern int +rmon2_mib_mgr_get_addressMap(struct snmp_session *s, addressMap_t **addressMap); + +/* + * C agent interface stubs for RMON2-MIB::addressMap. + */ + +extern int +rmon2_mib_agt_read_addressMap(addressMap_t *addressMap); +extern int +rmon2_mib_agt_register_addressMap(); + +/* + * C type definitions for RMON2-MIB::addressMapControlEntry. + */ + +typedef struct addressMapControlEntry { + int32_t *addressMapControlIndex; + uint32_t *addressMapControlDataSource; + size_t _addressMapControlDataSourceLength; + uint32_t *addressMapControlDroppedFrames; + u_char *addressMapControlOwner; + size_t _addressMapControlOwnerLength; + int32_t *addressMapControlStatus; + void *_clientData; /* pointer to client data structure */ + struct addressMapControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __addressMapControlIndex; + uint32_t __addressMapControlDataSource[128]; + uint32_t __addressMapControlDroppedFrames; + u_char __addressMapControlOwner[127]; + int32_t __addressMapControlStatus; +} addressMapControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMapControlEntry. + */ + +extern int +rmon2_mib_mgr_get_addressMapControlEntry(struct snmp_session *s, addressMapControlEntry_t **addressMapControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::addressMapControlEntry. + */ + +extern int +rmon2_mib_agt_read_addressMapControlEntry(addressMapControlEntry_t *addressMapControlEntry); +extern int +rmon2_mib_agt_register_addressMapControlEntry(); + +/* + * C type definitions for RMON2-MIB::addressMapEntry. + */ + +typedef struct addressMapEntry { + uint32_t *addressMapTimeMark; + u_char *addressMapNetworkAddress; + size_t _addressMapNetworkAddressLength; + uint32_t *addressMapSource; + size_t _addressMapSourceLength; + u_char *addressMapPhysicalAddress; + size_t _addressMapPhysicalAddressLength; + uint32_t *addressMapLastChange; + void *_clientData; /* pointer to client data structure */ + struct addressMapEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __addressMapTimeMark; + u_char __addressMapNetworkAddress[255]; + uint32_t __addressMapSource[128]; + u_char __addressMapPhysicalAddress[65535]; + uint32_t __addressMapLastChange; +} addressMapEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMapEntry. + */ + +extern int +rmon2_mib_mgr_get_addressMapEntry(struct snmp_session *s, addressMapEntry_t **addressMapEntry); + +/* + * C agent interface stubs for RMON2-MIB::addressMapEntry. + */ + +extern int +rmon2_mib_agt_read_addressMapEntry(addressMapEntry_t *addressMapEntry); +extern int +rmon2_mib_agt_register_addressMapEntry(); + +/* + * C type definitions for RMON2-MIB::hlHostControlEntry. + */ + +typedef struct hlHostControlEntry { + int32_t *hlHostControlIndex; + uint32_t *hlHostControlDataSource; + size_t _hlHostControlDataSourceLength; + uint32_t *hlHostControlNlDroppedFrames; + uint32_t *hlHostControlNlInserts; + uint32_t *hlHostControlNlDeletes; + int32_t *hlHostControlNlMaxDesiredEntries; + uint32_t *hlHostControlAlDroppedFrames; + uint32_t *hlHostControlAlInserts; + uint32_t *hlHostControlAlDeletes; + int32_t *hlHostControlAlMaxDesiredEntries; + u_char *hlHostControlOwner; + size_t _hlHostControlOwnerLength; + int32_t *hlHostControlStatus; + void *_clientData; /* pointer to client data structure */ + struct hlHostControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __hlHostControlIndex; + uint32_t __hlHostControlDataSource[128]; + uint32_t __hlHostControlNlDroppedFrames; + uint32_t __hlHostControlNlInserts; + uint32_t __hlHostControlNlDeletes; + int32_t __hlHostControlNlMaxDesiredEntries; + uint32_t __hlHostControlAlDroppedFrames; + uint32_t __hlHostControlAlInserts; + uint32_t __hlHostControlAlDeletes; + int32_t __hlHostControlAlMaxDesiredEntries; + u_char __hlHostControlOwner[127]; + int32_t __hlHostControlStatus; +} hlHostControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::hlHostControlEntry. + */ + +extern int +rmon2_mib_mgr_get_hlHostControlEntry(struct snmp_session *s, hlHostControlEntry_t **hlHostControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::hlHostControlEntry. + */ + +extern int +rmon2_mib_agt_read_hlHostControlEntry(hlHostControlEntry_t *hlHostControlEntry); +extern int +rmon2_mib_agt_register_hlHostControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlHostEntry. + */ + +typedef struct nlHostEntry { + uint32_t *nlHostTimeMark; + u_char *nlHostAddress; + size_t _nlHostAddressLength; + uint32_t *nlHostInPkts; + uint32_t *nlHostOutPkts; + uint32_t *nlHostInOctets; + uint32_t *nlHostOutOctets; + uint32_t *nlHostOutMacNonUnicastPkts; + uint32_t *nlHostCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlHostEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlHostTimeMark; + u_char __nlHostAddress[255]; + uint32_t __nlHostInPkts; + uint32_t __nlHostOutPkts; + uint32_t __nlHostInOctets; + uint32_t __nlHostOutOctets; + uint32_t __nlHostOutMacNonUnicastPkts; + uint32_t __nlHostCreateTime; +} nlHostEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlHostEntry. + */ + +extern int +rmon2_mib_mgr_get_nlHostEntry(struct snmp_session *s, nlHostEntry_t **nlHostEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlHostEntry. + */ + +extern int +rmon2_mib_agt_read_nlHostEntry(nlHostEntry_t *nlHostEntry); +extern int +rmon2_mib_agt_register_nlHostEntry(); + +/* + * C type definitions for RMON2-MIB::hlMatrixControlEntry. + */ + +typedef struct hlMatrixControlEntry { + int32_t *hlMatrixControlIndex; + uint32_t *hlMatrixControlDataSource; + size_t _hlMatrixControlDataSourceLength; + uint32_t *hlMatrixControlNlDroppedFrames; + uint32_t *hlMatrixControlNlInserts; + uint32_t *hlMatrixControlNlDeletes; + int32_t *hlMatrixControlNlMaxDesiredEntries; + uint32_t *hlMatrixControlAlDroppedFrames; + uint32_t *hlMatrixControlAlInserts; + uint32_t *hlMatrixControlAlDeletes; + int32_t *hlMatrixControlAlMaxDesiredEntries; + u_char *hlMatrixControlOwner; + size_t _hlMatrixControlOwnerLength; + int32_t *hlMatrixControlStatus; + void *_clientData; /* pointer to client data structure */ + struct hlMatrixControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __hlMatrixControlIndex; + uint32_t __hlMatrixControlDataSource[128]; + uint32_t __hlMatrixControlNlDroppedFrames; + uint32_t __hlMatrixControlNlInserts; + uint32_t __hlMatrixControlNlDeletes; + int32_t __hlMatrixControlNlMaxDesiredEntries; + uint32_t __hlMatrixControlAlDroppedFrames; + uint32_t __hlMatrixControlAlInserts; + uint32_t __hlMatrixControlAlDeletes; + int32_t __hlMatrixControlAlMaxDesiredEntries; + u_char __hlMatrixControlOwner[127]; + int32_t __hlMatrixControlStatus; +} hlMatrixControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::hlMatrixControlEntry. + */ + +extern int +rmon2_mib_mgr_get_hlMatrixControlEntry(struct snmp_session *s, hlMatrixControlEntry_t **hlMatrixControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::hlMatrixControlEntry. + */ + +extern int +rmon2_mib_agt_read_hlMatrixControlEntry(hlMatrixControlEntry_t *hlMatrixControlEntry); +extern int +rmon2_mib_agt_register_hlMatrixControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixSDEntry. + */ + +typedef struct nlMatrixSDEntry { + uint32_t *nlMatrixSDTimeMark; + u_char *nlMatrixSDSourceAddress; + size_t _nlMatrixSDSourceAddressLength; + u_char *nlMatrixSDDestAddress; + size_t _nlMatrixSDDestAddressLength; + uint32_t *nlMatrixSDPkts; + uint32_t *nlMatrixSDOctets; + uint32_t *nlMatrixSDCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixSDEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlMatrixSDTimeMark; + u_char __nlMatrixSDSourceAddress[255]; + u_char __nlMatrixSDDestAddress[255]; + uint32_t __nlMatrixSDPkts; + uint32_t __nlMatrixSDOctets; + uint32_t __nlMatrixSDCreateTime; +} nlMatrixSDEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixSDEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixSDEntry(struct snmp_session *s, nlMatrixSDEntry_t **nlMatrixSDEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixSDEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixSDEntry(nlMatrixSDEntry_t *nlMatrixSDEntry); +extern int +rmon2_mib_agt_register_nlMatrixSDEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixDSEntry. + */ + +typedef struct nlMatrixDSEntry { + uint32_t *nlMatrixDSTimeMark; + u_char *nlMatrixDSSourceAddress; + size_t _nlMatrixDSSourceAddressLength; + u_char *nlMatrixDSDestAddress; + size_t _nlMatrixDSDestAddressLength; + uint32_t *nlMatrixDSPkts; + uint32_t *nlMatrixDSOctets; + uint32_t *nlMatrixDSCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixDSEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlMatrixDSTimeMark; + u_char __nlMatrixDSSourceAddress[255]; + u_char __nlMatrixDSDestAddress[255]; + uint32_t __nlMatrixDSPkts; + uint32_t __nlMatrixDSOctets; + uint32_t __nlMatrixDSCreateTime; +} nlMatrixDSEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixDSEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixDSEntry(struct snmp_session *s, nlMatrixDSEntry_t **nlMatrixDSEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixDSEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixDSEntry(nlMatrixDSEntry_t *nlMatrixDSEntry); +extern int +rmon2_mib_agt_register_nlMatrixDSEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +typedef struct nlMatrixTopNControlEntry { + int32_t *nlMatrixTopNControlIndex; + int32_t *nlMatrixTopNControlMatrixIndex; + int32_t *nlMatrixTopNControlRateBase; + int32_t *nlMatrixTopNControlTimeRemaining; + uint32_t *nlMatrixTopNControlGeneratedReports; + int32_t *nlMatrixTopNControlDuration; + int32_t *nlMatrixTopNControlRequestedSize; + int32_t *nlMatrixTopNControlGrantedSize; + uint32_t *nlMatrixTopNControlStartTime; + u_char *nlMatrixTopNControlOwner; + size_t _nlMatrixTopNControlOwnerLength; + int32_t *nlMatrixTopNControlStatus; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixTopNControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __nlMatrixTopNControlIndex; + int32_t __nlMatrixTopNControlMatrixIndex; + int32_t __nlMatrixTopNControlRateBase; + int32_t __nlMatrixTopNControlTimeRemaining; + uint32_t __nlMatrixTopNControlGeneratedReports; + int32_t __nlMatrixTopNControlDuration; + int32_t __nlMatrixTopNControlRequestedSize; + int32_t __nlMatrixTopNControlGrantedSize; + uint32_t __nlMatrixTopNControlStartTime; + u_char __nlMatrixTopNControlOwner[127]; + int32_t __nlMatrixTopNControlStatus; +} nlMatrixTopNControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixTopNControlEntry(struct snmp_session *s, nlMatrixTopNControlEntry_t **nlMatrixTopNControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixTopNControlEntry(nlMatrixTopNControlEntry_t *nlMatrixTopNControlEntry); +extern int +rmon2_mib_agt_register_nlMatrixTopNControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixTopNEntry. + */ + +typedef struct nlMatrixTopNEntry { + int32_t *nlMatrixTopNIndex; + int32_t *nlMatrixTopNProtocolDirLocalIndex; + u_char *nlMatrixTopNSourceAddress; + size_t _nlMatrixTopNSourceAddressLength; + u_char *nlMatrixTopNDestAddress; + size_t _nlMatrixTopNDestAddressLength; + uint32_t *nlMatrixTopNPktRate; + uint32_t *nlMatrixTopNReversePktRate; + uint32_t *nlMatrixTopNOctetRate; + uint32_t *nlMatrixTopNReverseOctetRate; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixTopNEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __nlMatrixTopNIndex; + int32_t __nlMatrixTopNProtocolDirLocalIndex; + u_char __nlMatrixTopNSourceAddress[255]; + u_char __nlMatrixTopNDestAddress[255]; + uint32_t __nlMatrixTopNPktRate; + uint32_t __nlMatrixTopNReversePktRate; + uint32_t __nlMatrixTopNOctetRate; + uint32_t __nlMatrixTopNReverseOctetRate; +} nlMatrixTopNEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixTopNEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixTopNEntry(struct snmp_session *s, nlMatrixTopNEntry_t **nlMatrixTopNEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixTopNEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixTopNEntry(nlMatrixTopNEntry_t *nlMatrixTopNEntry); +extern int +rmon2_mib_agt_register_nlMatrixTopNEntry(); + +/* + * C type definitions for RMON2-MIB::alHostEntry. + */ + +typedef struct alHostEntry { + uint32_t *alHostTimeMark; + uint32_t *alHostInPkts; + uint32_t *alHostOutPkts; + uint32_t *alHostInOctets; + uint32_t *alHostOutOctets; + uint32_t *alHostCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alHostEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alHostTimeMark; + uint32_t __alHostInPkts; + uint32_t __alHostOutPkts; + uint32_t __alHostInOctets; + uint32_t __alHostOutOctets; + uint32_t __alHostCreateTime; +} alHostEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alHostEntry. + */ + +extern int +rmon2_mib_mgr_get_alHostEntry(struct snmp_session *s, alHostEntry_t **alHostEntry); + +/* + * C agent interface stubs for RMON2-MIB::alHostEntry. + */ + +extern int +rmon2_mib_agt_read_alHostEntry(alHostEntry_t *alHostEntry); +extern int +rmon2_mib_agt_register_alHostEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixSDEntry. + */ + +typedef struct alMatrixSDEntry { + uint32_t *alMatrixSDTimeMark; + uint32_t *alMatrixSDPkts; + uint32_t *alMatrixSDOctets; + uint32_t *alMatrixSDCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alMatrixSDEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alMatrixSDTimeMark; + uint32_t __alMatrixSDPkts; + uint32_t __alMatrixSDOctets; + uint32_t __alMatrixSDCreateTime; +} alMatrixSDEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixSDEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixSDEntry(struct snmp_session *s, alMatrixSDEntry_t **alMatrixSDEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixSDEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixSDEntry(alMatrixSDEntry_t *alMatrixSDEntry); +extern int +rmon2_mib_agt_register_alMatrixSDEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixDSEntry. + */ + +typedef struct alMatrixDSEntry { + uint32_t *alMatrixDSTimeMark; + uint32_t *alMatrixDSPkts; + uint32_t *alMatrixDSOctets; + uint32_t *alMatrixDSCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alMatrixDSEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alMatrixDSTimeMark; + uint32_t __alMatrixDSPkts; + uint32_t __alMatrixDSOctets; + uint32_t __alMatrixDSCreateTime; +} alMatrixDSEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixDSEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixDSEntry(struct snmp_session *s, alMatrixDSEntry_t **alMatrixDSEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixDSEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixDSEntry(alMatrixDSEntry_t *alMatrixDSEntry); +extern int +rmon2_mib_agt_register_alMatrixDSEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixTopNControlEntry. + */ + +typedef struct alMatrixTopNControlEntry { + int32_t *alMatrixTopNControlIndex; + int32_t *alMatrixTopNControlMatrixIndex; + int32_t *alMatrixTopNControlRateBase; + int32_t *alMatrixTopNControlTimeRemaining; + uint32_t *alMatrixTopNControlGeneratedReports; + int32_t *alMatrixTopNControlDuration; + int32_t *alMatrixTopNControlRequestedSize; + int32_t *alMatrixTopNControlGrantedSize; + uint32_t *alMatrixTopNControlStartTime; + u_char *alMatrixTopNControlOwner; + size_t _alMatrixTopNControlOwnerLength; + int32_t *alMatrixTopNControlStatus; + void *_clientData; /* pointer to client data structure */ + struct alMatrixTopNControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __alMatrixTopNControlIndex; + int32_t __alMatrixTopNControlMatrixIndex; + int32_t __alMatrixTopNControlRateBase; + int32_t __alMatrixTopNControlTimeRemaining; + uint32_t __alMatrixTopNControlGeneratedReports; + int32_t __alMatrixTopNControlDuration; + int32_t __alMatrixTopNControlRequestedSize; + int32_t __alMatrixTopNControlGrantedSize; + uint32_t __alMatrixTopNControlStartTime; + u_char __alMatrixTopNControlOwner[127]; + int32_t __alMatrixTopNControlStatus; +} alMatrixTopNControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixTopNControlEntry(struct snmp_session *s, alMatrixTopNControlEntry_t **alMatrixTopNControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixTopNControlEntry(alMatrixTopNControlEntry_t *alMatrixTopNControlEntry); +extern int +rmon2_mib_agt_register_alMatrixTopNControlEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixTopNEntry. + */ + +typedef struct alMatrixTopNEntry { + int32_t *alMatrixTopNIndex; + int32_t *alMatrixTopNProtocolDirLocalIndex; + u_char *alMatrixTopNSourceAddress; + size_t _alMatrixTopNSourceAddressLength; + u_char *alMatrixTopNDestAddress; + size_t _alMatrixTopNDestAddressLength; + int32_t *alMatrixTopNAppProtocolDirLocalIndex; + uint32_t *alMatrixTopNPktRate; + uint32_t *alMatrixTopNReversePktRate; + uint32_t *alMatrixTopNOctetRate; + uint32_t *alMatrixTopNReverseOctetRate; + void *_clientData; /* pointer to client data structure */ + struct alMatrixTopNEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __alMatrixTopNIndex; + int32_t __alMatrixTopNProtocolDirLocalIndex; + u_char __alMatrixTopNSourceAddress[255]; + u_char __alMatrixTopNDestAddress[255]; + int32_t __alMatrixTopNAppProtocolDirLocalIndex; + uint32_t __alMatrixTopNPktRate; + uint32_t __alMatrixTopNReversePktRate; + uint32_t __alMatrixTopNOctetRate; + uint32_t __alMatrixTopNReverseOctetRate; +} alMatrixTopNEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixTopNEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixTopNEntry(struct snmp_session *s, alMatrixTopNEntry_t **alMatrixTopNEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixTopNEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixTopNEntry(alMatrixTopNEntry_t *alMatrixTopNEntry); +extern int +rmon2_mib_agt_register_alMatrixTopNEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryControlEntry. + */ + +typedef struct usrHistoryControlEntry { + int32_t *usrHistoryControlIndex; + int32_t *usrHistoryControlObjects; + int32_t *usrHistoryControlBucketsRequested; + int32_t *usrHistoryControlBucketsGranted; + int32_t *usrHistoryControlInterval; + u_char *usrHistoryControlOwner; + size_t _usrHistoryControlOwnerLength; + int32_t *usrHistoryControlStatus; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistoryControlIndex; + int32_t __usrHistoryControlObjects; + int32_t __usrHistoryControlBucketsRequested; + int32_t __usrHistoryControlBucketsGranted; + int32_t __usrHistoryControlInterval; + u_char __usrHistoryControlOwner[127]; + int32_t __usrHistoryControlStatus; +} usrHistoryControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryControlEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryControlEntry(struct snmp_session *s, usrHistoryControlEntry_t **usrHistoryControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryControlEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryControlEntry(usrHistoryControlEntry_t *usrHistoryControlEntry); +extern int +rmon2_mib_agt_register_usrHistoryControlEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryObjectEntry. + */ + +typedef struct usrHistoryObjectEntry { + int32_t *usrHistoryObjectIndex; + uint32_t *usrHistoryObjectVariable; + size_t _usrHistoryObjectVariableLength; + int32_t *usrHistoryObjectSampleType; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryObjectEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistoryObjectIndex; + uint32_t __usrHistoryObjectVariable[128]; + int32_t __usrHistoryObjectSampleType; +} usrHistoryObjectEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryObjectEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryObjectEntry(struct snmp_session *s, usrHistoryObjectEntry_t **usrHistoryObjectEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryObjectEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryObjectEntry(usrHistoryObjectEntry_t *usrHistoryObjectEntry); +extern int +rmon2_mib_agt_register_usrHistoryObjectEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryEntry. + */ + +typedef struct usrHistoryEntry { + int32_t *usrHistorySampleIndex; + uint32_t *usrHistoryIntervalStart; + uint32_t *usrHistoryIntervalEnd; + uint32_t *usrHistoryAbsValue; + int32_t *usrHistoryValStatus; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistorySampleIndex; + uint32_t __usrHistoryIntervalStart; + uint32_t __usrHistoryIntervalEnd; + uint32_t __usrHistoryAbsValue; + int32_t __usrHistoryValStatus; +} usrHistoryEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryEntry(struct snmp_session *s, usrHistoryEntry_t **usrHistoryEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryEntry(usrHistoryEntry_t *usrHistoryEntry); +extern int +rmon2_mib_agt_register_usrHistoryEntry(); + +/* + * C type definitions for RMON2-MIB::probeConfig. + */ + +typedef struct probeConfig { + u_char *probeCapabilities; + size_t _probeCapabilitiesLength; + u_char *probeSoftwareRev; + size_t _probeSoftwareRevLength; + u_char *probeHardwareRev; + size_t _probeHardwareRevLength; + u_char *probeDateTime; + size_t _probeDateTimeLength; + int32_t *probeResetControl; + u_char *probeDownloadFile; + size_t _probeDownloadFileLength; + u_char *probeDownloadTFTPServer; + int32_t *probeDownloadAction; + int32_t *probeDownloadStatus; + u_char *netDefaultGateway; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + u_char __probeCapabilities[4]; + u_char __probeSoftwareRev[15]; + u_char __probeHardwareRev[31]; + u_char __probeDateTime[11]; + int32_t __probeResetControl; + u_char __probeDownloadFile[127]; + u_char __probeDownloadTFTPServer[4]; + int32_t __probeDownloadAction; + int32_t __probeDownloadStatus; + u_char __netDefaultGateway[4]; +} probeConfig_t; + +/* + * C manager interface stubs for RMON2-MIB::probeConfig. + */ + +extern int +rmon2_mib_mgr_get_probeConfig(struct snmp_session *s, probeConfig_t **probeConfig); + +/* + * C agent interface stubs for RMON2-MIB::probeConfig. + */ + +extern int +rmon2_mib_agt_read_probeConfig(probeConfig_t *probeConfig); +extern int +rmon2_mib_agt_register_probeConfig(); + +/* + * C type definitions for RMON2-MIB::serialConfigEntry. + */ + +typedef struct serialConfigEntry { + int32_t *serialMode; + int32_t *serialProtocol; + int32_t *serialTimeout; + u_char *serialModemInitString; + size_t _serialModemInitStringLength; + u_char *serialModemHangUpString; + size_t _serialModemHangUpStringLength; + u_char *serialModemConnectResp; + size_t _serialModemConnectRespLength; + u_char *serialModemNoConnectResp; + size_t _serialModemNoConnectRespLength; + int32_t *serialDialoutTimeout; + int32_t *serialStatus; + void *_clientData; /* pointer to client data structure */ + struct serialConfigEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __serialMode; + int32_t __serialProtocol; + int32_t __serialTimeout; + u_char __serialModemInitString[255]; + u_char __serialModemHangUpString[255]; + u_char __serialModemConnectResp[255]; + u_char __serialModemNoConnectResp[255]; + int32_t __serialDialoutTimeout; + int32_t __serialStatus; +} serialConfigEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::serialConfigEntry. + */ + +extern int +rmon2_mib_mgr_get_serialConfigEntry(struct snmp_session *s, serialConfigEntry_t **serialConfigEntry); + +/* + * C agent interface stubs for RMON2-MIB::serialConfigEntry. + */ + +extern int +rmon2_mib_agt_read_serialConfigEntry(serialConfigEntry_t *serialConfigEntry); +extern int +rmon2_mib_agt_register_serialConfigEntry(); + +/* + * C type definitions for RMON2-MIB::netConfigEntry. + */ + +typedef struct netConfigEntry { + u_char *netConfigIPAddress; + u_char *netConfigSubnetMask; + int32_t *netConfigStatus; + void *_clientData; /* pointer to client data structure */ + struct netConfigEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __netConfigIPAddress[4]; + u_char __netConfigSubnetMask[4]; + int32_t __netConfigStatus; +} netConfigEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::netConfigEntry. + */ + +extern int +rmon2_mib_mgr_get_netConfigEntry(struct snmp_session *s, netConfigEntry_t **netConfigEntry); + +/* + * C agent interface stubs for RMON2-MIB::netConfigEntry. + */ + +extern int +rmon2_mib_agt_read_netConfigEntry(netConfigEntry_t *netConfigEntry); +extern int +rmon2_mib_agt_register_netConfigEntry(); + +/* + * C type definitions for RMON2-MIB::trapDestEntry. + */ + +typedef struct trapDestEntry { + int32_t *trapDestIndex; + u_char *trapDestCommunity; + size_t _trapDestCommunityLength; + int32_t *trapDestProtocol; + u_char *trapDestAddress; + size_t _trapDestAddressLength; + u_char *trapDestOwner; + size_t _trapDestOwnerLength; + int32_t *trapDestStatus; + void *_clientData; /* pointer to client data structure */ + struct trapDestEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __trapDestIndex; + u_char __trapDestCommunity[127]; + int32_t __trapDestProtocol; + u_char __trapDestAddress[65535]; + u_char __trapDestOwner[127]; + int32_t __trapDestStatus; +} trapDestEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::trapDestEntry. + */ + +extern int +rmon2_mib_mgr_get_trapDestEntry(struct snmp_session *s, trapDestEntry_t **trapDestEntry); + +/* + * C agent interface stubs for RMON2-MIB::trapDestEntry. + */ + +extern int +rmon2_mib_agt_read_trapDestEntry(trapDestEntry_t *trapDestEntry); +extern int +rmon2_mib_agt_register_trapDestEntry(); + +/* + * C type definitions for RMON2-MIB::serialConnectionEntry. + */ + +typedef struct serialConnectionEntry { + int32_t *serialConnectIndex; + u_char *serialConnectDestIpAddress; + int32_t *serialConnectType; + u_char *serialConnectDialString; + size_t _serialConnectDialStringLength; + u_char *serialConnectSwitchConnectSeq; + size_t _serialConnectSwitchConnectSeqLength; + u_char *serialConnectSwitchDisconnectSeq; + size_t _serialConnectSwitchDisconnectSeqLength; + u_char *serialConnectSwitchResetSeq; + size_t _serialConnectSwitchResetSeqLength; + u_char *serialConnectOwner; + size_t _serialConnectOwnerLength; + int32_t *serialConnectStatus; + void *_clientData; /* pointer to client data structure */ + struct serialConnectionEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __serialConnectIndex; + u_char __serialConnectDestIpAddress[4]; + int32_t __serialConnectType; + u_char __serialConnectDialString[255]; + u_char __serialConnectSwitchConnectSeq[255]; + u_char __serialConnectSwitchDisconnectSeq[255]; + u_char __serialConnectSwitchResetSeq[255]; + u_char __serialConnectOwner[127]; + int32_t __serialConnectStatus; +} serialConnectionEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::serialConnectionEntry. + */ + +extern int +rmon2_mib_mgr_get_serialConnectionEntry(struct snmp_session *s, serialConnectionEntry_t **serialConnectionEntry); + +/* + * C agent interface stubs for RMON2-MIB::serialConnectionEntry. + */ + +extern int +rmon2_mib_agt_read_serialConnectionEntry(serialConnectionEntry_t *serialConnectionEntry); +extern int +rmon2_mib_agt_register_serialConnectionEntry(); + + +typedef struct rmon2_mib { + etherStats2Entry_t *etherStats2Entry; + tokenRingMLStats2Entry_t *tokenRingMLStats2Entry; + tokenRingPStats2Entry_t *tokenRingPStats2Entry; + historyControl2Entry_t *historyControl2Entry; + hostControl2Entry_t *hostControl2Entry; + matrixControl2Entry_t *matrixControl2Entry; + channel2Entry_t *channel2Entry; + filter2Entry_t *filter2Entry; + ringStationControl2Entry_t *ringStationControl2Entry; + sourceRoutingStats2Entry_t *sourceRoutingStats2Entry; + protocolDir_t protocolDir; + protocolDirEntry_t *protocolDirEntry; + protocolDistControlEntry_t *protocolDistControlEntry; + protocolDistStatsEntry_t *protocolDistStatsEntry; + addressMap_t addressMap; + addressMapControlEntry_t *addressMapControlEntry; + addressMapEntry_t *addressMapEntry; + hlHostControlEntry_t *hlHostControlEntry; + nlHostEntry_t *nlHostEntry; + hlMatrixControlEntry_t *hlMatrixControlEntry; + nlMatrixSDEntry_t *nlMatrixSDEntry; + nlMatrixDSEntry_t *nlMatrixDSEntry; + nlMatrixTopNControlEntry_t *nlMatrixTopNControlEntry; + nlMatrixTopNEntry_t *nlMatrixTopNEntry; + alHostEntry_t *alHostEntry; + alMatrixSDEntry_t *alMatrixSDEntry; + alMatrixDSEntry_t *alMatrixDSEntry; + alMatrixTopNControlEntry_t *alMatrixTopNControlEntry; + alMatrixTopNEntry_t *alMatrixTopNEntry; + usrHistoryControlEntry_t *usrHistoryControlEntry; + usrHistoryObjectEntry_t *usrHistoryObjectEntry; + usrHistoryEntry_t *usrHistoryEntry; + probeConfig_t probeConfig; + serialConfigEntry_t *serialConfigEntry; + netConfigEntry_t *netConfigEntry; + trapDestEntry_t *trapDestEntry; + serialConnectionEntry_t *serialConnectionEntry; +} rmon2_mib_t; + +/* + * Initialization function: + */ + +void rmon2_mib_agt_init(void); + +#endif /* _RMON2_MIB_H_ */ diff --git a/test/dumps/netsnmp/snmpv2-mib-agt-stub.c b/test/dumps/netsnmp/snmpv2-mib-agt-stub.c new file mode 100644 index 0000000..23008bd --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-agt-stub.c @@ -0,0 +1,548 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "snmpv2-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_system_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_sysOREntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_snmp_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_snmpSet_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_sysContact_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_sysName_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_sysLocation_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_snmpEnableAuthenTraps_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_snmpSetSerialNo_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define SYSDESCR 1 +#define SYSOBJECTID 2 +#define SYSUPTIME 3 +#define SYSCONTACT 4 +#define SYSNAME 5 +#define SYSLOCATION 6 +#define SYSSERVICES 7 +#define SYSORLASTCHANGE 8 + +static oid system_base[] = {1, 3, 6, 1, 2, 1, 1}; + +struct variable system_variables[] = { + { SYSDESCR, ASN_OCTET_STR, RONLY, read_system_stub, 1, {1} }, + { SYSOBJECTID, ASN_OBJECT_ID, RONLY, read_system_stub, 1, {2} }, + { SYSUPTIME, ASN_INTEGER, RONLY, read_system_stub, 1, {3} }, + { SYSCONTACT, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {4} }, + { SYSNAME, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {5} }, + { SYSLOCATION, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {6} }, + { SYSSERVICES, ASN_INTEGER, RONLY, read_system_stub, 1, {7} }, + { SYSORLASTCHANGE, ASN_INTEGER, RONLY, read_system_stub, 1, {8} }, +}; + +#define SYSORID 2 +#define SYSORDESCR 3 +#define SYSORUPTIME 4 + +static oid sysOREntry_base[] = {1, 3, 6, 1, 2, 1, 1, 9, 1}; + +struct variable sysOREntry_variables[] = { + { SYSORID, ASN_OBJECT_ID, RONLY, read_sysOREntry_stub, 1, {2} }, + { SYSORDESCR, ASN_OCTET_STR, RONLY, read_sysOREntry_stub, 1, {3} }, + { SYSORUPTIME, ASN_INTEGER, RONLY, read_sysOREntry_stub, 1, {4} }, +}; + +#define SNMPINPKTS 1 +#define SNMPOUTPKTS 2 +#define SNMPINBADVERSIONS 3 +#define SNMPINBADCOMMUNITYNAMES 4 +#define SNMPINBADCOMMUNITYUSES 5 +#define SNMPINASNPARSEERRS 6 +#define SNMPINTOOBIGS 8 +#define SNMPINNOSUCHNAMES 9 +#define SNMPINBADVALUES 10 +#define SNMPINREADONLYS 11 +#define SNMPINGENERRS 12 +#define SNMPINTOTALREQVARS 13 +#define SNMPINTOTALSETVARS 14 +#define SNMPINGETREQUESTS 15 +#define SNMPINGETNEXTS 16 +#define SNMPINSETREQUESTS 17 +#define SNMPINGETRESPONSES 18 +#define SNMPINTRAPS 19 +#define SNMPOUTTOOBIGS 20 +#define SNMPOUTNOSUCHNAMES 21 +#define SNMPOUTBADVALUES 22 +#define SNMPOUTGENERRS 24 +#define SNMPOUTGETREQUESTS 25 +#define SNMPOUTGETNEXTS 26 +#define SNMPOUTSETREQUESTS 27 +#define SNMPOUTGETRESPONSES 28 +#define SNMPOUTTRAPS 29 +#define SNMPENABLEAUTHENTRAPS 30 +#define SNMPSILENTDROPS 31 +#define SNMPPROXYDROPS 32 + +static oid snmp_base[] = {1, 3, 6, 1, 2, 1, 11}; + +struct variable snmp_variables[] = { + { SNMPINPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {1} }, + { SNMPOUTPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {2} }, + { SNMPINBADVERSIONS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {3} }, + { SNMPINBADCOMMUNITYNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {4} }, + { SNMPINBADCOMMUNITYUSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {5} }, + { SNMPINASNPARSEERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {6} }, + { SNMPINTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {8} }, + { SNMPINNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {9} }, + { SNMPINBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {10} }, + { SNMPINREADONLYS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {11} }, + { SNMPINGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {12} }, + { SNMPINTOTALREQVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {13} }, + { SNMPINTOTALSETVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {14} }, + { SNMPINGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {15} }, + { SNMPINGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {16} }, + { SNMPINSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {17} }, + { SNMPINGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {18} }, + { SNMPINTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {19} }, + { SNMPOUTTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {20} }, + { SNMPOUTNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {21} }, + { SNMPOUTBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {22} }, + { SNMPOUTGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {24} }, + { SNMPOUTGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {25} }, + { SNMPOUTGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {26} }, + { SNMPOUTSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {27} }, + { SNMPOUTGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {28} }, + { SNMPOUTTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {29} }, + { SNMPENABLEAUTHENTRAPS, ASN_INTEGER, RWRITE, read_snmp_stub, 1, {30} }, + { SNMPSILENTDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {31} }, + { SNMPPROXYDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {32} }, +}; + + +#define SNMPSETSERIALNO 1 + +static oid snmpSet_base[] = {1, 3, 6, 1, 6, 3, 1, 1, 6}; + +struct variable snmpSet_variables[] = { + { SNMPSETSERIALNO, ASN_INTEGER, RWRITE, read_snmpSet_stub, 1, {1} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_system() +{ + return register_mib("system", + system_variables, + sizeof(struct variable), + sizeof(system_variables)/sizeof(struct variable), + system_base, + sizeof(system_base)/sizeof(oid)); +}; + + +int register_sysOREntry() +{ + return register_mib("sysOREntry", + sysOREntry_variables, + sizeof(struct variable), + sizeof(sysOREntry_variables)/sizeof(struct variable), + sysOREntry_base, + sizeof(sysOREntry_base)/sizeof(oid)); +}; + + +int register_snmp() +{ + return register_mib("snmp", + snmp_variables, + sizeof(struct variable), + sizeof(snmp_variables)/sizeof(struct variable), + snmp_base, + sizeof(snmp_base)/sizeof(oid)); +}; + + +int register_snmpTrap() +{ + return register_mib("snmpTrap", + snmpTrap_variables, + sizeof(struct variable), + sizeof(snmpTrap_variables)/sizeof(struct variable), + snmpTrap_base, + sizeof(snmpTrap_base)/sizeof(oid)); +}; + + +int register_snmpSet() +{ + return register_mib("snmpSet", + snmpSet_variables, + sizeof(struct variable), + sizeof(snmpSet_variables)/sizeof(struct variable), + snmpSet_base, + sizeof(snmpSet_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_system_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static system_t system; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_system(&system); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SYSDESCR: + *var_len = system._sysDescrLength; + return (unsigned char *) system.sysDescr; + + case SYSOBJECTID: + *var_len = system._sysObjectIDLength; + return (unsigned char *) system.sysObjectID; + + case SYSUPTIME: + return (unsigned char *) &system.sysUpTime; + + case SYSCONTACT: + *var_len = system._sysContactLength; + return (unsigned char *) system.sysContact; + + case SYSNAME: + *var_len = system._sysNameLength; + return (unsigned char *) system.sysName; + + case SYSLOCATION: + *var_len = system._sysLocationLength; + return (unsigned char *) system.sysLocation; + + case SYSSERVICES: + return (unsigned char *) &system.sysServices; + + case SYSORLASTCHANGE: + return (unsigned char *) &system.sysORLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_sysOREntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static sysOREntry_t sysOREntry; + + /* call the user supplied function to retrieve values */ + + read_sysOREntry(&sysOREntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SYSORID: + *var_len = sysOREntry._sysORIDLength; + return (unsigned char *) sysOREntry.sysORID; + + case SYSORDESCR: + *var_len = sysOREntry._sysORDescrLength; + return (unsigned char *) sysOREntry.sysORDescr; + + case SYSORUPTIME: + return (unsigned char *) &sysOREntry.sysORUpTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_snmp_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static snmp_t snmp; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_snmp(&snmp); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SNMPINPKTS: + return (unsigned char *) &snmp.snmpInPkts; + + case SNMPOUTPKTS: + return (unsigned char *) &snmp.snmpOutPkts; + + case SNMPINBADVERSIONS: + return (unsigned char *) &snmp.snmpInBadVersions; + + case SNMPINBADCOMMUNITYNAMES: + return (unsigned char *) &snmp.snmpInBadCommunityNames; + + case SNMPINBADCOMMUNITYUSES: + return (unsigned char *) &snmp.snmpInBadCommunityUses; + + case SNMPINASNPARSEERRS: + return (unsigned char *) &snmp.snmpInASNParseErrs; + + case SNMPINTOOBIGS: + return (unsigned char *) &snmp.snmpInTooBigs; + + case SNMPINNOSUCHNAMES: + return (unsigned char *) &snmp.snmpInNoSuchNames; + + case SNMPINBADVALUES: + return (unsigned char *) &snmp.snmpInBadValues; + + case SNMPINREADONLYS: + return (unsigned char *) &snmp.snmpInReadOnlys; + + case SNMPINGENERRS: + return (unsigned char *) &snmp.snmpInGenErrs; + + case SNMPINTOTALREQVARS: + return (unsigned char *) &snmp.snmpInTotalReqVars; + + case SNMPINTOTALSETVARS: + return (unsigned char *) &snmp.snmpInTotalSetVars; + + case SNMPINGETREQUESTS: + return (unsigned char *) &snmp.snmpInGetRequests; + + case SNMPINGETNEXTS: + return (unsigned char *) &snmp.snmpInGetNexts; + + case SNMPINSETREQUESTS: + return (unsigned char *) &snmp.snmpInSetRequests; + + case SNMPINGETRESPONSES: + return (unsigned char *) &snmp.snmpInGetResponses; + + case SNMPINTRAPS: + return (unsigned char *) &snmp.snmpInTraps; + + case SNMPOUTTOOBIGS: + return (unsigned char *) &snmp.snmpOutTooBigs; + + case SNMPOUTNOSUCHNAMES: + return (unsigned char *) &snmp.snmpOutNoSuchNames; + + case SNMPOUTBADVALUES: + return (unsigned char *) &snmp.snmpOutBadValues; + + case SNMPOUTGENERRS: + return (unsigned char *) &snmp.snmpOutGenErrs; + + case SNMPOUTGETREQUESTS: + return (unsigned char *) &snmp.snmpOutGetRequests; + + case SNMPOUTGETNEXTS: + return (unsigned char *) &snmp.snmpOutGetNexts; + + case SNMPOUTSETREQUESTS: + return (unsigned char *) &snmp.snmpOutSetRequests; + + case SNMPOUTGETRESPONSES: + return (unsigned char *) &snmp.snmpOutGetResponses; + + case SNMPOUTTRAPS: + return (unsigned char *) &snmp.snmpOutTraps; + + case SNMPENABLEAUTHENTRAPS: + return (unsigned char *) &snmp.snmpEnableAuthenTraps; + + case SNMPSILENTDROPS: + return (unsigned char *) &snmp.snmpSilentDrops; + + case SNMPPROXYDROPS: + return (unsigned char *) &snmp.snmpProxyDrops; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_snmpSet_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static snmpSet_t snmpSet; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_snmpSet(&snmpSet); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SNMPSETSERIALNO: + return (unsigned char *) &snmpSet.snmpSetSerialNo; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_sysContact_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_sysName_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_sysLocation_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_snmpEnableAuthenTraps_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_snmpSetSerialNo_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/snmpv2-mib-agt.c b/test/dumps/netsnmp/snmpv2-mib-agt.c new file mode 100644 index 0000000..5cd9464 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "snmpv2-mib.h" + +#include +#include +#include +#include +#include + +static oid snmpv2_mib_caps[] = {0,0}; + +void init_snmpv2_mib(void) +{ +} + +void deinit_snmpv2_mib() +{ + unregister_sysORTable(snmpv2_mib_caps, sizeof(snmpv2_mib_caps)); +} + +int term_snmpv2_mib() +{ + deinit_snmpv2_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c b/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c new file mode 100644 index 0000000..487de74 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c @@ -0,0 +1,480 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "snmpv2-mib.h" + +static oid sysDescr[] = {1, 3, 6, 1, 2, 1, 1, 1}; +static oid sysObjectID[] = {1, 3, 6, 1, 2, 1, 1, 2}; +static oid sysUpTime[] = {1, 3, 6, 1, 2, 1, 1, 3}; +static oid sysContact[] = {1, 3, 6, 1, 2, 1, 1, 4}; +static oid sysName[] = {1, 3, 6, 1, 2, 1, 1, 5}; +static oid sysLocation[] = {1, 3, 6, 1, 2, 1, 1, 6}; +static oid sysServices[] = {1, 3, 6, 1, 2, 1, 1, 7}; +static oid sysORLastChange[] = {1, 3, 6, 1, 2, 1, 1, 8}; +static oid sysORIndex[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 1}; +static oid sysORID[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 2}; +static oid sysORDescr[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 3}; +static oid sysORUpTime[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 4}; +static oid snmpInPkts[] = {1, 3, 6, 1, 2, 1, 11, 1}; +static oid snmpOutPkts[] = {1, 3, 6, 1, 2, 1, 11, 2}; +static oid snmpInBadVersions[] = {1, 3, 6, 1, 2, 1, 11, 3}; +static oid snmpInBadCommunityNames[] = {1, 3, 6, 1, 2, 1, 11, 4}; +static oid snmpInBadCommunityUses[] = {1, 3, 6, 1, 2, 1, 11, 5}; +static oid snmpInASNParseErrs[] = {1, 3, 6, 1, 2, 1, 11, 6}; +static oid snmpInTooBigs[] = {1, 3, 6, 1, 2, 1, 11, 8}; +static oid snmpInNoSuchNames[] = {1, 3, 6, 1, 2, 1, 11, 9}; +static oid snmpInBadValues[] = {1, 3, 6, 1, 2, 1, 11, 10}; +static oid snmpInReadOnlys[] = {1, 3, 6, 1, 2, 1, 11, 11}; +static oid snmpInGenErrs[] = {1, 3, 6, 1, 2, 1, 11, 12}; +static oid snmpInTotalReqVars[] = {1, 3, 6, 1, 2, 1, 11, 13}; +static oid snmpInTotalSetVars[] = {1, 3, 6, 1, 2, 1, 11, 14}; +static oid snmpInGetRequests[] = {1, 3, 6, 1, 2, 1, 11, 15}; +static oid snmpInGetNexts[] = {1, 3, 6, 1, 2, 1, 11, 16}; +static oid snmpInSetRequests[] = {1, 3, 6, 1, 2, 1, 11, 17}; +static oid snmpInGetResponses[] = {1, 3, 6, 1, 2, 1, 11, 18}; +static oid snmpInTraps[] = {1, 3, 6, 1, 2, 1, 11, 19}; +static oid snmpOutTooBigs[] = {1, 3, 6, 1, 2, 1, 11, 20}; +static oid snmpOutNoSuchNames[] = {1, 3, 6, 1, 2, 1, 11, 21}; +static oid snmpOutBadValues[] = {1, 3, 6, 1, 2, 1, 11, 22}; +static oid snmpOutGenErrs[] = {1, 3, 6, 1, 2, 1, 11, 24}; +static oid snmpOutGetRequests[] = {1, 3, 6, 1, 2, 1, 11, 25}; +static oid snmpOutGetNexts[] = {1, 3, 6, 1, 2, 1, 11, 26}; +static oid snmpOutSetRequests[] = {1, 3, 6, 1, 2, 1, 11, 27}; +static oid snmpOutGetResponses[] = {1, 3, 6, 1, 2, 1, 11, 28}; +static oid snmpOutTraps[] = {1, 3, 6, 1, 2, 1, 11, 29}; +static oid snmpEnableAuthenTraps[] = {1, 3, 6, 1, 2, 1, 11, 30}; +static oid snmpSilentDrops[] = {1, 3, 6, 1, 2, 1, 11, 31}; +static oid snmpProxyDrops[] = {1, 3, 6, 1, 2, 1, 11, 32}; +static oid snmpSetSerialNo[] = {1, 3, 6, 1, 6, 3, 1, 1, 6, 1}; + +int snmpv2_mib_mgr_get_system(struct snmp_session *s, system_t **system) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sysDescr, sizeof(sysDescr)/sizeof(oid)); + snmp_add_null_var(request, sysObjectID, sizeof(sysObjectID)/sizeof(oid)); + snmp_add_null_var(request, sysUpTime, sizeof(sysUpTime)/sizeof(oid)); + snmp_add_null_var(request, sysContact, sizeof(sysContact)/sizeof(oid)); + snmp_add_null_var(request, sysName, sizeof(sysName)/sizeof(oid)); + snmp_add_null_var(request, sysLocation, sizeof(sysLocation)/sizeof(oid)); + snmp_add_null_var(request, sysServices, sizeof(sysServices)/sizeof(oid)); + snmp_add_null_var(request, sysORLastChange, sizeof(sysORLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *system = (system_t *) malloc(sizeof(system_t)); + if (! *system) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sysDescr)/sizeof(oid) + && memcmp(vars->name, sysDescr, sizeof(sysDescr)) == 0) { + memcpy((*system)->__sysDescr, vars->val.string, vars->val_len); + (*system)->_sysDescrLength = vars->val_len; + (*system)->sysDescr = (*system)->__sysDescr; + } + if (vars->name_length > sizeof(sysObjectID)/sizeof(oid) + && memcmp(vars->name, sysObjectID, sizeof(sysObjectID)) == 0) { + } + if (vars->name_length > sizeof(sysUpTime)/sizeof(oid) + && memcmp(vars->name, sysUpTime, sizeof(sysUpTime)) == 0) { + (*system)->__sysUpTime = *vars->val.integer; + (*system)->sysUpTime = &((*system)->__sysUpTime); + } + if (vars->name_length > sizeof(sysContact)/sizeof(oid) + && memcmp(vars->name, sysContact, sizeof(sysContact)) == 0) { + memcpy((*system)->__sysContact, vars->val.string, vars->val_len); + (*system)->_sysContactLength = vars->val_len; + (*system)->sysContact = (*system)->__sysContact; + } + if (vars->name_length > sizeof(sysName)/sizeof(oid) + && memcmp(vars->name, sysName, sizeof(sysName)) == 0) { + memcpy((*system)->__sysName, vars->val.string, vars->val_len); + (*system)->_sysNameLength = vars->val_len; + (*system)->sysName = (*system)->__sysName; + } + if (vars->name_length > sizeof(sysLocation)/sizeof(oid) + && memcmp(vars->name, sysLocation, sizeof(sysLocation)) == 0) { + memcpy((*system)->__sysLocation, vars->val.string, vars->val_len); + (*system)->_sysLocationLength = vars->val_len; + (*system)->sysLocation = (*system)->__sysLocation; + } + if (vars->name_length > sizeof(sysServices)/sizeof(oid) + && memcmp(vars->name, sysServices, sizeof(sysServices)) == 0) { + (*system)->__sysServices = *vars->val.integer; + (*system)->sysServices = &((*system)->__sysServices); + } + if (vars->name_length > sizeof(sysORLastChange)/sizeof(oid) + && memcmp(vars->name, sysORLastChange, sizeof(sysORLastChange)) == 0) { + (*system)->__sysORLastChange = *vars->val.integer; + (*system)->sysORLastChange = &((*system)->__sysORLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_sysOREntry(struct snmp_session *s, sysOREntry_t **sysOREntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sysORID, sizeof(sysORID)/sizeof(oid)); + snmp_add_null_var(request, sysORDescr, sizeof(sysORDescr)/sizeof(oid)); + snmp_add_null_var(request, sysORUpTime, sizeof(sysORUpTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *sysOREntry = (sysOREntry_t *) malloc(sizeof(sysOREntry_t)); + if (! *sysOREntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sysORID)/sizeof(oid) + && memcmp(vars->name, sysORID, sizeof(sysORID)) == 0) { + } + if (vars->name_length > sizeof(sysORDescr)/sizeof(oid) + && memcmp(vars->name, sysORDescr, sizeof(sysORDescr)) == 0) { + memcpy((*sysOREntry)->__sysORDescr, vars->val.string, vars->val_len); + (*sysOREntry)->_sysORDescrLength = vars->val_len; + (*sysOREntry)->sysORDescr = (*sysOREntry)->__sysORDescr; + } + if (vars->name_length > sizeof(sysORUpTime)/sizeof(oid) + && memcmp(vars->name, sysORUpTime, sizeof(sysORUpTime)) == 0) { + (*sysOREntry)->__sysORUpTime = *vars->val.integer; + (*sysOREntry)->sysORUpTime = &((*sysOREntry)->__sysORUpTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_snmp(struct snmp_session *s, snmp_t **snmp) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, snmpInPkts, sizeof(snmpInPkts)/sizeof(oid)); + snmp_add_null_var(request, snmpOutPkts, sizeof(snmpOutPkts)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadVersions, sizeof(snmpInBadVersions)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadCommunityNames, sizeof(snmpInBadCommunityNames)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadCommunityUses, sizeof(snmpInBadCommunityUses)/sizeof(oid)); + snmp_add_null_var(request, snmpInASNParseErrs, sizeof(snmpInASNParseErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpInTooBigs, sizeof(snmpInTooBigs)/sizeof(oid)); + snmp_add_null_var(request, snmpInNoSuchNames, sizeof(snmpInNoSuchNames)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadValues, sizeof(snmpInBadValues)/sizeof(oid)); + snmp_add_null_var(request, snmpInReadOnlys, sizeof(snmpInReadOnlys)/sizeof(oid)); + snmp_add_null_var(request, snmpInGenErrs, sizeof(snmpInGenErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpInTotalReqVars, sizeof(snmpInTotalReqVars)/sizeof(oid)); + snmp_add_null_var(request, snmpInTotalSetVars, sizeof(snmpInTotalSetVars)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetRequests, sizeof(snmpInGetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetNexts, sizeof(snmpInGetNexts)/sizeof(oid)); + snmp_add_null_var(request, snmpInSetRequests, sizeof(snmpInSetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetResponses, sizeof(snmpInGetResponses)/sizeof(oid)); + snmp_add_null_var(request, snmpInTraps, sizeof(snmpInTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpOutTooBigs, sizeof(snmpOutTooBigs)/sizeof(oid)); + snmp_add_null_var(request, snmpOutNoSuchNames, sizeof(snmpOutNoSuchNames)/sizeof(oid)); + snmp_add_null_var(request, snmpOutBadValues, sizeof(snmpOutBadValues)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGenErrs, sizeof(snmpOutGenErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetRequests, sizeof(snmpOutGetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetNexts, sizeof(snmpOutGetNexts)/sizeof(oid)); + snmp_add_null_var(request, snmpOutSetRequests, sizeof(snmpOutSetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetResponses, sizeof(snmpOutGetResponses)/sizeof(oid)); + snmp_add_null_var(request, snmpOutTraps, sizeof(snmpOutTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpEnableAuthenTraps, sizeof(snmpEnableAuthenTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpSilentDrops, sizeof(snmpSilentDrops)/sizeof(oid)); + snmp_add_null_var(request, snmpProxyDrops, sizeof(snmpProxyDrops)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *snmp = (snmp_t *) malloc(sizeof(snmp_t)); + if (! *snmp) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(snmpInPkts)/sizeof(oid) + && memcmp(vars->name, snmpInPkts, sizeof(snmpInPkts)) == 0) { + (*snmp)->__snmpInPkts = *vars->val.integer; + (*snmp)->snmpInPkts = &((*snmp)->__snmpInPkts); + } + if (vars->name_length > sizeof(snmpOutPkts)/sizeof(oid) + && memcmp(vars->name, snmpOutPkts, sizeof(snmpOutPkts)) == 0) { + (*snmp)->__snmpOutPkts = *vars->val.integer; + (*snmp)->snmpOutPkts = &((*snmp)->__snmpOutPkts); + } + if (vars->name_length > sizeof(snmpInBadVersions)/sizeof(oid) + && memcmp(vars->name, snmpInBadVersions, sizeof(snmpInBadVersions)) == 0) { + (*snmp)->__snmpInBadVersions = *vars->val.integer; + (*snmp)->snmpInBadVersions = &((*snmp)->__snmpInBadVersions); + } + if (vars->name_length > sizeof(snmpInBadCommunityNames)/sizeof(oid) + && memcmp(vars->name, snmpInBadCommunityNames, sizeof(snmpInBadCommunityNames)) == 0) { + (*snmp)->__snmpInBadCommunityNames = *vars->val.integer; + (*snmp)->snmpInBadCommunityNames = &((*snmp)->__snmpInBadCommunityNames); + } + if (vars->name_length > sizeof(snmpInBadCommunityUses)/sizeof(oid) + && memcmp(vars->name, snmpInBadCommunityUses, sizeof(snmpInBadCommunityUses)) == 0) { + (*snmp)->__snmpInBadCommunityUses = *vars->val.integer; + (*snmp)->snmpInBadCommunityUses = &((*snmp)->__snmpInBadCommunityUses); + } + if (vars->name_length > sizeof(snmpInASNParseErrs)/sizeof(oid) + && memcmp(vars->name, snmpInASNParseErrs, sizeof(snmpInASNParseErrs)) == 0) { + (*snmp)->__snmpInASNParseErrs = *vars->val.integer; + (*snmp)->snmpInASNParseErrs = &((*snmp)->__snmpInASNParseErrs); + } + if (vars->name_length > sizeof(snmpInTooBigs)/sizeof(oid) + && memcmp(vars->name, snmpInTooBigs, sizeof(snmpInTooBigs)) == 0) { + (*snmp)->__snmpInTooBigs = *vars->val.integer; + (*snmp)->snmpInTooBigs = &((*snmp)->__snmpInTooBigs); + } + if (vars->name_length > sizeof(snmpInNoSuchNames)/sizeof(oid) + && memcmp(vars->name, snmpInNoSuchNames, sizeof(snmpInNoSuchNames)) == 0) { + (*snmp)->__snmpInNoSuchNames = *vars->val.integer; + (*snmp)->snmpInNoSuchNames = &((*snmp)->__snmpInNoSuchNames); + } + if (vars->name_length > sizeof(snmpInBadValues)/sizeof(oid) + && memcmp(vars->name, snmpInBadValues, sizeof(snmpInBadValues)) == 0) { + (*snmp)->__snmpInBadValues = *vars->val.integer; + (*snmp)->snmpInBadValues = &((*snmp)->__snmpInBadValues); + } + if (vars->name_length > sizeof(snmpInReadOnlys)/sizeof(oid) + && memcmp(vars->name, snmpInReadOnlys, sizeof(snmpInReadOnlys)) == 0) { + (*snmp)->__snmpInReadOnlys = *vars->val.integer; + (*snmp)->snmpInReadOnlys = &((*snmp)->__snmpInReadOnlys); + } + if (vars->name_length > sizeof(snmpInGenErrs)/sizeof(oid) + && memcmp(vars->name, snmpInGenErrs, sizeof(snmpInGenErrs)) == 0) { + (*snmp)->__snmpInGenErrs = *vars->val.integer; + (*snmp)->snmpInGenErrs = &((*snmp)->__snmpInGenErrs); + } + if (vars->name_length > sizeof(snmpInTotalReqVars)/sizeof(oid) + && memcmp(vars->name, snmpInTotalReqVars, sizeof(snmpInTotalReqVars)) == 0) { + (*snmp)->__snmpInTotalReqVars = *vars->val.integer; + (*snmp)->snmpInTotalReqVars = &((*snmp)->__snmpInTotalReqVars); + } + if (vars->name_length > sizeof(snmpInTotalSetVars)/sizeof(oid) + && memcmp(vars->name, snmpInTotalSetVars, sizeof(snmpInTotalSetVars)) == 0) { + (*snmp)->__snmpInTotalSetVars = *vars->val.integer; + (*snmp)->snmpInTotalSetVars = &((*snmp)->__snmpInTotalSetVars); + } + if (vars->name_length > sizeof(snmpInGetRequests)/sizeof(oid) + && memcmp(vars->name, snmpInGetRequests, sizeof(snmpInGetRequests)) == 0) { + (*snmp)->__snmpInGetRequests = *vars->val.integer; + (*snmp)->snmpInGetRequests = &((*snmp)->__snmpInGetRequests); + } + if (vars->name_length > sizeof(snmpInGetNexts)/sizeof(oid) + && memcmp(vars->name, snmpInGetNexts, sizeof(snmpInGetNexts)) == 0) { + (*snmp)->__snmpInGetNexts = *vars->val.integer; + (*snmp)->snmpInGetNexts = &((*snmp)->__snmpInGetNexts); + } + if (vars->name_length > sizeof(snmpInSetRequests)/sizeof(oid) + && memcmp(vars->name, snmpInSetRequests, sizeof(snmpInSetRequests)) == 0) { + (*snmp)->__snmpInSetRequests = *vars->val.integer; + (*snmp)->snmpInSetRequests = &((*snmp)->__snmpInSetRequests); + } + if (vars->name_length > sizeof(snmpInGetResponses)/sizeof(oid) + && memcmp(vars->name, snmpInGetResponses, sizeof(snmpInGetResponses)) == 0) { + (*snmp)->__snmpInGetResponses = *vars->val.integer; + (*snmp)->snmpInGetResponses = &((*snmp)->__snmpInGetResponses); + } + if (vars->name_length > sizeof(snmpInTraps)/sizeof(oid) + && memcmp(vars->name, snmpInTraps, sizeof(snmpInTraps)) == 0) { + (*snmp)->__snmpInTraps = *vars->val.integer; + (*snmp)->snmpInTraps = &((*snmp)->__snmpInTraps); + } + if (vars->name_length > sizeof(snmpOutTooBigs)/sizeof(oid) + && memcmp(vars->name, snmpOutTooBigs, sizeof(snmpOutTooBigs)) == 0) { + (*snmp)->__snmpOutTooBigs = *vars->val.integer; + (*snmp)->snmpOutTooBigs = &((*snmp)->__snmpOutTooBigs); + } + if (vars->name_length > sizeof(snmpOutNoSuchNames)/sizeof(oid) + && memcmp(vars->name, snmpOutNoSuchNames, sizeof(snmpOutNoSuchNames)) == 0) { + (*snmp)->__snmpOutNoSuchNames = *vars->val.integer; + (*snmp)->snmpOutNoSuchNames = &((*snmp)->__snmpOutNoSuchNames); + } + if (vars->name_length > sizeof(snmpOutBadValues)/sizeof(oid) + && memcmp(vars->name, snmpOutBadValues, sizeof(snmpOutBadValues)) == 0) { + (*snmp)->__snmpOutBadValues = *vars->val.integer; + (*snmp)->snmpOutBadValues = &((*snmp)->__snmpOutBadValues); + } + if (vars->name_length > sizeof(snmpOutGenErrs)/sizeof(oid) + && memcmp(vars->name, snmpOutGenErrs, sizeof(snmpOutGenErrs)) == 0) { + (*snmp)->__snmpOutGenErrs = *vars->val.integer; + (*snmp)->snmpOutGenErrs = &((*snmp)->__snmpOutGenErrs); + } + if (vars->name_length > sizeof(snmpOutGetRequests)/sizeof(oid) + && memcmp(vars->name, snmpOutGetRequests, sizeof(snmpOutGetRequests)) == 0) { + (*snmp)->__snmpOutGetRequests = *vars->val.integer; + (*snmp)->snmpOutGetRequests = &((*snmp)->__snmpOutGetRequests); + } + if (vars->name_length > sizeof(snmpOutGetNexts)/sizeof(oid) + && memcmp(vars->name, snmpOutGetNexts, sizeof(snmpOutGetNexts)) == 0) { + (*snmp)->__snmpOutGetNexts = *vars->val.integer; + (*snmp)->snmpOutGetNexts = &((*snmp)->__snmpOutGetNexts); + } + if (vars->name_length > sizeof(snmpOutSetRequests)/sizeof(oid) + && memcmp(vars->name, snmpOutSetRequests, sizeof(snmpOutSetRequests)) == 0) { + (*snmp)->__snmpOutSetRequests = *vars->val.integer; + (*snmp)->snmpOutSetRequests = &((*snmp)->__snmpOutSetRequests); + } + if (vars->name_length > sizeof(snmpOutGetResponses)/sizeof(oid) + && memcmp(vars->name, snmpOutGetResponses, sizeof(snmpOutGetResponses)) == 0) { + (*snmp)->__snmpOutGetResponses = *vars->val.integer; + (*snmp)->snmpOutGetResponses = &((*snmp)->__snmpOutGetResponses); + } + if (vars->name_length > sizeof(snmpOutTraps)/sizeof(oid) + && memcmp(vars->name, snmpOutTraps, sizeof(snmpOutTraps)) == 0) { + (*snmp)->__snmpOutTraps = *vars->val.integer; + (*snmp)->snmpOutTraps = &((*snmp)->__snmpOutTraps); + } + if (vars->name_length > sizeof(snmpEnableAuthenTraps)/sizeof(oid) + && memcmp(vars->name, snmpEnableAuthenTraps, sizeof(snmpEnableAuthenTraps)) == 0) { + (*snmp)->__snmpEnableAuthenTraps = *vars->val.integer; + (*snmp)->snmpEnableAuthenTraps = &((*snmp)->__snmpEnableAuthenTraps); + } + if (vars->name_length > sizeof(snmpSilentDrops)/sizeof(oid) + && memcmp(vars->name, snmpSilentDrops, sizeof(snmpSilentDrops)) == 0) { + (*snmp)->__snmpSilentDrops = *vars->val.integer; + (*snmp)->snmpSilentDrops = &((*snmp)->__snmpSilentDrops); + } + if (vars->name_length > sizeof(snmpProxyDrops)/sizeof(oid) + && memcmp(vars->name, snmpProxyDrops, sizeof(snmpProxyDrops)) == 0) { + (*snmp)->__snmpProxyDrops = *vars->val.integer; + (*snmp)->snmpProxyDrops = &((*snmp)->__snmpProxyDrops); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_snmpSet(struct snmp_session *s, snmpSet_t **snmpSet) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, snmpSetSerialNo, sizeof(snmpSetSerialNo)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *snmpSet = (snmpSet_t *) malloc(sizeof(snmpSet_t)); + if (! *snmpSet) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(snmpSetSerialNo)/sizeof(oid) + && memcmp(vars->name, snmpSetSerialNo, sizeof(snmpSetSerialNo)) == 0) { + (*snmpSet)->__snmpSetSerialNo = *vars->val.integer; + (*snmpSet)->snmpSetSerialNo = &((*snmpSet)->__snmpSetSerialNo); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/snmpv2-mib.h b/test/dumps/netsnmp/snmpv2-mib.h new file mode 100644 index 0000000..cd8b404 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib.h @@ -0,0 +1,235 @@ +/* + * This C header file has been generated by smidump 0.2.17. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib.h 1154 2001-08-24 10:09:18Z strauss $ + */ + +#ifndef _SNMPV2_MIB_H_ +#define _SNMPV2_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for SNMPv2-MIB::system. + */ + +typedef struct system { + u_char *sysDescr; + size_t _sysDescrLength; + uint32_t *sysObjectID; + size_t _sysObjectIDLength; + uint32_t *sysUpTime; + u_char *sysContact; + size_t _sysContactLength; + u_char *sysName; + size_t _sysNameLength; + u_char *sysLocation; + size_t _sysLocationLength; + int32_t *sysServices; + uint32_t *sysORLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + u_char __sysDescr[255]; + uint32_t __sysObjectID[128]; + uint32_t __sysUpTime; + u_char __sysContact[255]; + u_char __sysName[255]; + u_char __sysLocation[255]; + int32_t __sysServices; + uint32_t __sysORLastChange; +} system_t; + +/* + * C manager interface stubs for SNMPv2-MIB::system. + */ + +extern int +snmpv2_mib_mgr_get_system(struct snmp_session *s, system_t **system); + +/* + * C agent interface stubs for SNMPv2-MIB::system. + */ + +extern int +snmpv2_mib_agt_read_system(system_t *system); +extern int +snmpv2_mib_agt_register_system(); + +/* + * C type definitions for SNMPv2-MIB::sysOREntry. + */ + +typedef struct sysOREntry { + int32_t *sysORIndex; + uint32_t *sysORID; + size_t _sysORIDLength; + u_char *sysORDescr; + size_t _sysORDescrLength; + uint32_t *sysORUpTime; + void *_clientData; /* pointer to client data structure */ + struct sysOREntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __sysORIndex; + uint32_t __sysORID[128]; + u_char __sysORDescr[255]; + uint32_t __sysORUpTime; +} sysOREntry_t; + +/* + * C manager interface stubs for SNMPv2-MIB::sysOREntry. + */ + +extern int +snmpv2_mib_mgr_get_sysOREntry(struct snmp_session *s, sysOREntry_t **sysOREntry); + +/* + * C agent interface stubs for SNMPv2-MIB::sysOREntry. + */ + +extern int +snmpv2_mib_agt_read_sysOREntry(sysOREntry_t *sysOREntry); +extern int +snmpv2_mib_agt_register_sysOREntry(); + +/* + * C type definitions for SNMPv2-MIB::snmp. + */ + +typedef struct snmp { + uint32_t *snmpInPkts; + uint32_t *snmpOutPkts; + uint32_t *snmpInBadVersions; + uint32_t *snmpInBadCommunityNames; + uint32_t *snmpInBadCommunityUses; + uint32_t *snmpInASNParseErrs; + uint32_t *snmpInTooBigs; + uint32_t *snmpInNoSuchNames; + uint32_t *snmpInBadValues; + uint32_t *snmpInReadOnlys; + uint32_t *snmpInGenErrs; + uint32_t *snmpInTotalReqVars; + uint32_t *snmpInTotalSetVars; + uint32_t *snmpInGetRequests; + uint32_t *snmpInGetNexts; + uint32_t *snmpInSetRequests; + uint32_t *snmpInGetResponses; + uint32_t *snmpInTraps; + uint32_t *snmpOutTooBigs; + uint32_t *snmpOutNoSuchNames; + uint32_t *snmpOutBadValues; + uint32_t *snmpOutGenErrs; + uint32_t *snmpOutGetRequests; + uint32_t *snmpOutGetNexts; + uint32_t *snmpOutSetRequests; + uint32_t *snmpOutGetResponses; + uint32_t *snmpOutTraps; + int32_t *snmpEnableAuthenTraps; + uint32_t *snmpSilentDrops; + uint32_t *snmpProxyDrops; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __snmpInPkts; + uint32_t __snmpOutPkts; + uint32_t __snmpInBadVersions; + uint32_t __snmpInBadCommunityNames; + uint32_t __snmpInBadCommunityUses; + uint32_t __snmpInASNParseErrs; + uint32_t __snmpInTooBigs; + uint32_t __snmpInNoSuchNames; + uint32_t __snmpInBadValues; + uint32_t __snmpInReadOnlys; + uint32_t __snmpInGenErrs; + uint32_t __snmpInTotalReqVars; + uint32_t __snmpInTotalSetVars; + uint32_t __snmpInGetRequests; + uint32_t __snmpInGetNexts; + uint32_t __snmpInSetRequests; + uint32_t __snmpInGetResponses; + uint32_t __snmpInTraps; + uint32_t __snmpOutTooBigs; + uint32_t __snmpOutNoSuchNames; + uint32_t __snmpOutBadValues; + uint32_t __snmpOutGenErrs; + uint32_t __snmpOutGetRequests; + uint32_t __snmpOutGetNexts; + uint32_t __snmpOutSetRequests; + uint32_t __snmpOutGetResponses; + uint32_t __snmpOutTraps; + int32_t __snmpEnableAuthenTraps; + uint32_t __snmpSilentDrops; + uint32_t __snmpProxyDrops; +} snmp_t; + +/* + * C manager interface stubs for SNMPv2-MIB::snmp. + */ + +extern int +snmpv2_mib_mgr_get_snmp(struct snmp_session *s, snmp_t **snmp); + +/* + * C agent interface stubs for SNMPv2-MIB::snmp. + */ + +extern int +snmpv2_mib_agt_read_snmp(snmp_t *snmp); +extern int +snmpv2_mib_agt_register_snmp(); + +/* + * C type definitions for SNMPv2-MIB::snmpSet. + */ + +typedef struct snmpSet { + int32_t *snmpSetSerialNo; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + int32_t __snmpSetSerialNo; +} snmpSet_t; + +/* + * C manager interface stubs for SNMPv2-MIB::snmpSet. + */ + +extern int +snmpv2_mib_mgr_get_snmpSet(struct snmp_session *s, snmpSet_t **snmpSet); + +/* + * C agent interface stubs for SNMPv2-MIB::snmpSet. + */ + +extern int +snmpv2_mib_agt_read_snmpSet(snmpSet_t *snmpSet); +extern int +snmpv2_mib_agt_register_snmpSet(); + + +typedef struct snmpv2_mib { + system_t system; + sysOREntry_t *sysOREntry; + snmp_t snmp; + snmpSet_t snmpSet; +} snmpv2_mib_t; + +/* + * Initialization function: + */ + +void snmpv2_mib_agt_init(void); + +#endif /* _SNMPV2_MIB_H_ */ diff --git a/test/dumps/orig-smiv2/IF-MIB b/test/dumps/orig-smiv2/IF-MIB new file mode 100644 index 0000000..567964a --- /dev/null +++ b/test/dumps/orig-smiv2/IF-MIB @@ -0,0 +1,39 @@ +0a1 +> +551c552 +< IANAifType-MIB; +--- +> IANAifType-MIB +575,576d575 +< INTEGER +< INTEGER +705,706c704 +< NOTIFICATION-GROUP +< NOTIFICATION-TYPE +--- +> NOTIFICATION-GROUP, +708a707 +> NOTIFICATION-TYPE, +745c744 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +847a847,848 +> RowStatus +> RowStatus +864c865 +< SNMPv2-TC +--- +> SNMPv2-TC; +1033c1034 +< TestAndIncr +--- +> TestAndIncr, +1045c1046 +< TruthValue, +--- +> TruthValue +1546c1547 +< mib-2, +--- +> mib-2 diff --git a/test/dumps/orig-smiv2/MAU-MIB b/test/dumps/orig-smiv2/MAU-MIB new file mode 100644 index 0000000..ee549f5 --- /dev/null +++ b/test/dumps/orig-smiv2/MAU-MIB @@ -0,0 +1,31 @@ +0a1 +> +352d352 +< ; +523c523 +< IANAifJackType +--- +> IANAifJackType, +539c539 +< IANAifMauTypeListBits, +--- +> IANAifMauTypeListBits +706c706 +< NOTIFICATION-GROUP +--- +> NOTIFICATION-GROUP, +737c737 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +882c882 +< SNMPv2-TC +--- +> SNMPv2-TC; +1021c1021,1022 +< TEXTUAL-CONVENTION +--- +> TEXTUAL-CONVENTION, +> TruthValue +1023d1023 +< TruthValue, diff --git a/test/dumps/orig-smiv2/Makefile.am b/test/dumps/orig-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/orig-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/orig-smiv2/Makefile.in b/test/dumps/orig-smiv2/Makefile.in new file mode 100644 index 0000000..587449f --- /dev/null +++ b/test/dumps/orig-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/orig-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/orig-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/orig-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/orig-smiv2/RMON2-MIB b/test/dumps/orig-smiv2/RMON2-MIB new file mode 100644 index 0000000..2996e43 --- /dev/null +++ b/test/dumps/orig-smiv2/RMON2-MIB @@ -0,0 +1,18 @@ +0a1 +> +3462c3463 +< channelEntry +--- +> channelEntry, +4756c4757 +< sourceRoutingStatsEntry +--- +> sourceRoutingStatsEntry, +4761c4762 +< statistics, +--- +> statistics +4800c4801 +< tokenRingPStatsEntry, +--- +> tokenRingPStatsEntry diff --git a/test/dumps/orig-smiv2/SNMPv2-MIB b/test/dumps/orig-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..14c4922 --- /dev/null +++ b/test/dumps/orig-smiv2/SNMPv2-MIB @@ -0,0 +1,35 @@ +0a1 +> +353,355c354,357 +< INTEGER +< INTEGER +< INTEGER, +--- +> Integer32 +> Integer32 +> Integer32, +> Integer32, +415c417 +< NOTIFICATION-GROUP +--- +> NOTIFICATION-GROUP, +442c444 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +504c506 +< SNMPv2-CONF; +--- +> SNMPv2-CONF +507c509 +< SNMPv2-TC +--- +> SNMPv2-TC; +673c675 +< mib-2 +--- +> mib-2, +843c845 +< snmpModules, +--- +> snmpModules diff --git a/test/dumps/python/IF-MIB b/test/dumps/python/IF-MIB new file mode 100644 index 0000000..d3890ed --- /dev/null +++ b/test/dumps/python/IF-MIB @@ -0,0 +1,2753 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python IF-MIB + +FILENAME = "../../mibs/ietf/IF-MIB" + +MIB = { + "moduleName" : "IF-MIB", + + "IF-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF Interfaces MIB Working Group""", + "contact" : + """ 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.""", + "revisions" : ( + { + "date" : "2000-06-14 00:00", + "description" : + """Clarifications agreed upon by the Interfaces MIB WG, and +published as RFC 2863.""", + }, + { + "date" : "1996-02-28 21:55", + "description" : + """Revisions made by the Interfaces MIB WG, and published in +RFC 2233.""", + }, + { + "date" : "1993-11-08 21:55", + "description" : + """Initial revision, published as part of RFC 1573.""", + }, + ), + "identity node" : "ifMIB", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Gauge32"}, + {"module" : "SNMPv2-SMI", "name" : "Counter64"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "PhysAddress"}, + {"module" : "SNMPv2-TC", "name" : "TruthValue"}, + {"module" : "SNMPv2-TC", "name" : "RowStatus"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-TC", "name" : "AutonomousType"}, + {"module" : "SNMPv2-TC", "name" : "TestAndIncr"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + {"module" : "SNMPv2-MIB", "name" : "snmpTraps"}, + {"module" : "IANAifType-MIB", "name" : "IANAifType"}, + ), + + "typedefs" : { + "OwnerString" : { + "basetype" : "OctetString", + "status" : "deprecated", + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + "format" : "255a", + "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'.""", + }, + "InterfaceIndex" : { + "basetype" : "Integer32", + "status" : "current", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + "format" : "d", + "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.""", + }, + "InterfaceIndexOrZero" : { + "basetype" : "Integer32", + "status" : "current", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + "format" : "d", + "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.""", + }, + }, # typedefs + + "nodes" : { + "interfaces" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2", + }, # node + "ifNumber" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """The number of network interfaces (regardless of their +current state) present on this system.""", + }, # scalar + "ifTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2", + "status" : "current", + "description" : + """A list of interface entries. The number of entries is +given by the value of ifNumber.""", + }, # table + "ifEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1", + "status" : "current", + "linkage" : [ + "ifIndex", + ], + "description" : + """An entry containing management information applicable to a +particular interface.""", + }, # row + "ifIndex" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifDescr" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "ifType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANAifType-MIB", "name" : "IANAifType"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifMtu" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifSpeed" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifPhysAddress" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "PhysAddress"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifAdminStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "testing" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "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).""", + }, # column + "ifOperStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "testing" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "dormant" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "notPresent" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "lowerLayerDown" : { + "nodetype" : "namednumber", + "number" : "7" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "ifLastChange" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInNUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.12", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInDiscards" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInErrors" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.14", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInUnknownProtos" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.15", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.16", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.17", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutNUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.18", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutDiscards" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.19", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutErrors" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.20", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutQLen" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.21", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The length of the output packet queue (in packets).""", + }, # column + "ifSpecific" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.22", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "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 2579. 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 }.""", + }, # column + "ifMIB" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31", + "status" : "current", + }, # node + "ifMIBObjects" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1", + }, # node + "ifXTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1", + "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.""", + }, # table + "ifXEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1", + "status" : "current", + "linkage" : [ + { "IF-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ifEntry", + }}, + ], + "description" : + """An entry containing additional management information +applicable to a particular interface.""", + }, # row + "ifName" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "DisplayString"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifInBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifOutBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCInOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCInUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCInMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCInBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCOutOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCOutUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCOutMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifHCOutBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifLinkUpDownTrapEnable" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.14", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "ifHighSpeed" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.15", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifPromiscuousMode" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.16", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "ifConnectorPresent" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.17", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readonly", + "description" : + """This object has the value 'true(1)' if the interface +sublayer has a physical connector and the value 'false(2)' +otherwise.""", + }, # column + "ifAlias" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.18", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "64" + }, + ], + "range" : { + "min" : "0", + "max" : "64" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "ifCounterDiscontinuityTime" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.19", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "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.""", + }, # column + "ifStackTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2", + "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 """, + }, # table + "ifStackEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "ifStackHigherLayer", + "ifStackLowerLayer", + ], + "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.""", + }, # row + "ifStackHigherLayer" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndexOrZero"}, + }, + "access" : "noaccess", + "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.""", + }, # column + "ifStackLowerLayer" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndexOrZero"}, + }, + "access" : "noaccess", + "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.""", + }, # column + "ifStackStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "ifTestTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3", + "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.""", + }, # table + "ifTestEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1", + "status" : "deprecated", + "linkage" : [ + { "IF-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ifEntry", + }}, + ], + "description" : + """An entry containing objects for invoking tests on an +interface.""", + }, # row + "ifTestId" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TestAndIncr"}, + }, + "access" : "readwrite", + "description" : + """This object identifies the current invocation of the +interface's test.""", + }, # column + "ifTestStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notInUse" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "inUse" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "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)'.""", + }, # column + "ifTestType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "ifTestResult" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "none" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "success" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "inProgress" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "notSupported" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "unAbleToRun" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "aborted" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "failed" : { + "nodetype" : "namednumber", + "number" : "7" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "ifTestCode" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "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 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + +is defined for use if no additional result code is +available.""", + }, # column + "ifTestOwner" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity which currently has the 'ownership' required to +invoke a test on this interface.""", + }, # column + "ifRcvAddressTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4", + "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.""", + }, # table + "ifRcvAddressEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "ifIndex", + "ifRcvAddressAddress", + ], + "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.""", + }, # row + "ifRcvAddressAddress" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "PhysAddress"}, + }, + "access" : "noaccess", + "description" : + """An address for which the system will accept packets/frames +on this entry's interface.""", + }, # column + "ifRcvAddressStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """This object is used to create and delete rows in the +ifRcvAddressTable.""", + }, # column + "ifRcvAddressType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "volatile" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "nonVolatile" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "default" : "volatile", + "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.""", + }, # column + "ifTableLastChange" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "ifStackLastChange" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "ifConformance" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2", + }, # node + "ifGroups" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1", + }, # node + "ifCompliances" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2", + }, # node + }, # nodes + + "notifications" : { + "linkDown" : { + "nodetype" : "notification", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.3", + "status" : "current", + "objects" : { + "ifIndex" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + }, + "description" : + """A linkDown trap signifies that the SNMP 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.""", + }, # notification + "linkUp" : { + "nodetype" : "notification", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.4", + "status" : "current", + "objects" : { + "ifIndex" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + }, + "description" : + """A linkUp trap signifies that the SNMP 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.""", + }, # notification + }, # notifications + + "groups" : { + "ifGeneralGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.1", + "status" : "deprecated", + "members" : { + "ifDescr" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPhysAddress" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLinkUpDownTrapEnable" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifConnectorPresent" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHighSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifName" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects deprecated in favour of +ifGeneralInformationGroup.""", + }, # group + "ifFixedLengthGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.2", + "status" : "current", + "members" : { + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "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.""", + }, # group + "ifHCFixedLengthGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.3", + "status" : "current", + "members" : { + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "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.""", + }, # group + "ifPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.4", + "status" : "current", + "members" : { + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "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.""", + }, # group + "ifHCPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.5", + "status" : "current", + "members" : { + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "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.""", + }, # group + "ifVHCPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.6", + "status" : "current", + "members" : { + "ifHCInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +higher speed (greater than 650,000,000 bits/second) packet- +oriented network interfaces.""", + }, # group + "ifRcvAddressGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.7", + "status" : "current", + "members" : { + "ifRcvAddressStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifRcvAddressType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information on the +multiple addresses which an interface receives.""", + }, # group + "ifTestGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.8", + "status" : "deprecated", + "members" : { + "ifTestId" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestResult" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestCode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestOwner" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing the ability to invoke +tests on an interface.""", + }, # group + "ifStackGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.9", + "status" : "deprecated", + "members" : { + "ifStackStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The previous collection of objects providing information on +the layering of MIB-II interfaces.""", + }, # group + "ifGeneralInformationGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.10", + "status" : "current", + "members" : { + "ifIndex" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifDescr" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPhysAddress" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLinkUpDownTrapEnable" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifConnectorPresent" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHighSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifName" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifNumber" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAlias" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTableLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information applicable to +all network interfaces.""", + }, # group + "ifStackGroup2" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.11", + "status" : "current", + "members" : { + "ifStackStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifStackLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information on the +layering of MIB-II interfaces.""", + }, # group + "ifOldObjectsGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.12", + "status" : "deprecated", + "members" : { + "ifInNUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutNUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutQLen" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpecific" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The collection of objects deprecated from the original MIB- +II interfaces group.""", + }, # group + "ifCounterDiscontinuityGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.13", + "status" : "current", + "members" : { + "ifCounterDiscontinuityTime" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +interface counter discontinuities.""", + }, # group + "linkUpDownNotificationsGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.14", + "status" : "current", + "members" : { + "linkUp" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "linkDown" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The notifications which indicate specific changes in the +value of ifOperStatus.""", + }, # group + }, # groups + + "compliances" : { + "ifCompliance" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.1", + "status" : "deprecated", + "description" : + """A compliance statement defined in a previous version of +this MIB module, for SNMP entities which have network +interfaces.""", + "requires" : { + "ifGeneralGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifStackGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are character-oriented or transmit data in fixed-length +transmission units.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are packet-oriented.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifTestGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifStackStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "RowStatus", + }, + "active" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, # syntax + "access" : "readonly", + "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).""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + }, # refinements + + }, # compliance + "ifCompliance2" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.2", + "status" : "deprecated", + "description" : + """A compliance statement defined in a previous version of +this MIB module, for SNMP entities which have network +interfaces.""", + "requires" : { + "ifGeneralInformationGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifStackGroup2" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifCounterDiscontinuityGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are character-oriented or transmit data in fixed-length +transmission units.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are packet-oriented.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifStackStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "RowStatus", + }, + "active" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, # syntax + "access" : "readonly", + "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).""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + "ifAlias" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "ifCompliance3" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.3", + "status" : "current", + "description" : + """The compliance statement for SNMP entities which have +network interfaces.""", + "requires" : { + "ifGeneralInformationGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "linkUpDownNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory 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 less than or equal to +20,000,000 bits/second.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory 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.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces which +are packet-oriented, and for which the value of the +corresponding instance of ifSpeed is less than or equal to +20,000,000 bits/second.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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 20,000,000 +bits/second but less than or equal to 650,000,000 +bits/second.""", + }, + "ifVHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + "ifCounterDiscontinuityGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces that +are required to maintain counters (i.e., those for which one +of the ifFixedLengthGroup, ifHCFixedLengthGroup, +ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is +mandatory).""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "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.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + "ifAlias" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/MAU-MIB b/test/dumps/python/MAU-MIB new file mode 100644 index 0000000..a1234d2 --- /dev/null +++ b/test/dumps/python/MAU-MIB @@ -0,0 +1,2619 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python MAU-MIB + +FILENAME = "../../mibs/ietf/MAU-MIB" + +MIB = { + "moduleName" : "MAU-MIB", + + "MAU-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF Ethernet Interfaces and Hub MIB Working Group""", + "contact" : + """WG charter: +http://www.ietf.org/html.charters/hubmib-charter.html + +Mailing Lists: +General Discussion: hubmib@ietf.org +To Subscribe: hubmib-request@ietf.org +In Body: subscribe your_email_address + + + +Chair: Bert Wijnen +Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands +Phone: +31-348-407-775 +EMail: bwijnen@alcatel-lucent.com + +Editor: Edward Beili +Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 +EMail: edward.beili@actelis.com""", + "description" : + """Management information for 802.3 MAUs. + +The following reference is used throughout this MIB module: + +[IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + +Copyright (C) The IETF Trust (2007). +This version of this MIB module is part of RFC 4836; +see the RFC itself for full legal notices.""", + "revisions" : ( + { + "date" : "2007-04-21 00:00", + "description" : + """Updated to reference IANA maintaned textual +conventions for MAU types, Media Availability state, +Auto Negotiation capabilities, and jack types, +instead of using internally defined values. + +This version is published as RFC 4836.""", + }, + { + "date" : "2003-09-19 00:00", + "description" : + """Updated to include support for 10 Gb/s MAUs. +This resulted in the following revisions: +- Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + +- Added fiberLC jack type to JackType TC +- Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types +- Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s +- Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object +- Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636.""", + }, + { + "date" : "1999-08-24 04:00", + "description" : + """This version published as RFC 2668. Updated +to include support for 1000 Mb/sec +MAUs and flow control negotiation.""", + }, + { + "date" : "1997-10-31 00:00", + "description" : + """Version published as RFC 2239.""", + }, + { + "date" : "1993-09-30 00:00", + "description" : + """Initial version, published as RFC 1515.""", + }, + ), + "identity node" : "mauMod", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "Counter64"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "TruthValue"}, + {"module" : "SNMPv2-TC", "name" : "AutonomousType"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + {"module" : "IF-MIB", "name" : "InterfaceIndex"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauTypeListBits"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifJackType"}, + ), + + "typedefs" : { + "JackType" : { + "basetype" : "Enumeration", + "status" : "deprecated", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "rj45" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "rj45S" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "db9" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "bnc" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "fAUI" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "mAUI" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "fiberSC" : { + "nodetype" : "namednumber", + "number" : "8" + }, + "fiberMIC" : { + "nodetype" : "namednumber", + "number" : "9" + }, + "fiberST" : { + "nodetype" : "namednumber", + "number" : "10" + }, + "telco" : { + "nodetype" : "namednumber", + "number" : "11" + }, + "mtrj" : { + "nodetype" : "namednumber", + "number" : "12" + }, + "hssdc" : { + "nodetype" : "namednumber", + "number" : "13" + }, + "fiberLC" : { + "nodetype" : "namednumber", + "number" : "14" + }, + "description" : + """********* THIS TC IS DEPRECATED ********** + +This TC has been deprecated in favour of +IANAifJackType. + +Common enumeration values for repeater +and interface MAU jack types.""", + }, + }, # typedefs + + "nodes" : { + "snmpDot3MauMgt" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26", + }, # node + "snmpDot3MauTraps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0", + }, # node + "dot3RpMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1", + }, # node + "rpMauTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1", + "status" : "current", + "description" : + """Table of descriptive and status information +about the MAU(s) attached to the ports of a +repeater.""", + }, # table + "rpMauEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1", + "status" : "current", + "linkage" : [ + "rpMauGroupIndex", + "rpMauPortIndex", + "rpMauIndex", + ], + "description" : + """An entry in the table, containing information +about a single MAU.""", + }, # row + "rpMauGroupIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the group +containing the port to which the MAU described +by this entry is connected. + +Note: In practice, a group will generally be +a field-replaceable unit (i.e., module, card, +or board) that can fit in the physical system +enclosure, and the group number will correspond +to a number marked on the physical enclosure. + +The group denoted by a particular value of this +object is the same as the group denoted by the +same value of rptrGroupIndex.""", + "reference>" : + """RFC 2108, rptrGroupIndex.""", + }, # column + "rpMauPortIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the repeater +port within group rpMauGroupIndex to which the +MAU described by this entry is connected.""", + "reference>" : + """RFC 2108, rptrPortIndex.""", + }, # column + "rpMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the MAU +described by this entry from among other +MAUs connected to the same port +(rpMauPortIndex).""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "rpMauType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readonly", + "description" : + """This object identifies the MAU type. Values for +standard IEEE 802.3 MAU types are defined in the +IANA maintained IANA-MAU-MIB module, as +OBJECT-IDENTITIES of dot3MauType. +If the MAU type is unknown, the object identifier +zeroDotZero is returned.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.2, aMAUType.""", + }, # column + "rpMauStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "operational" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "standby" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "shutdown" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "reset" : { + "nodetype" : "namednumber", + "number" : "6" + }, + }, + }, + "access" : "readwrite", + "description" : + """The current state of the MAU. This object MAY +be implemented as a read-only object by those +agents and MAUs that do not implement software +control of the MAU state. Some agents may not +support setting the value of this object to some +of the enumerated values. + +The value other(1) is returned if the MAU is in +a state other than one of the states 2 through +6. + + + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +A MAU in the operational(3) state is fully +functional; it operates, and passes signals to its +attached DTE or repeater port in accordance to +its specification. + +A MAU in standby(4) state forces DI and CI to +idle, and the media transmitter to idle or fault, +if supported. Standby(4) mode only applies to +link type MAUs. The state of +rpMauMediaAvailable is unaffected. + +A MAU in shutdown(5) state assumes the same +condition on DI, CI, and the media transmitter, +as though it were powered down or not connected. +The MAU MAY return other(1) value for the +rpMauJabberState and rpMauMediaAvailable objects +when it is in this state. For an AUI, this +state will remove power from the AUI. + +Setting this variable to the value reset(6) +resets the MAU in the same manner as a +power-off, power-on cycle of at least one-half +second would. The agent is not required to +return the value reset(6). + +Setting this variable to the value +operational(3), standby(4), or shutdown(5) +causes the MAU to assume the respective state, +except that setting a mixing-type MAU or an AUI +to standby(4) will cause the MAU to enter the +shutdown state.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +acResetMAU.""", + }, # column + "rpMauMediaAvailable" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + }, + "access" : "readonly", + "description" : + """This object identifies Media Available state of +the MAU, complementary to the rpMauStatus. Values +for the standard IEEE 802.3 Media Available states +are defined in the IANA maintained IANA-MAU-MIB + + + +module, as IANAifMauMediaAvailable TC.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.4, aMediaAvailable.""", + }, # column + "rpMauMediaAvailableStateExits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +rpMauMediaAvailable for this MAU instance leaves +the state available(3). + +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 rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpMauJabberState" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "noJabber" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "jabbering" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """The value other(1) is returned if the jabber +state is not 2, 3, or 4. The agent MUST always +return other(1) for MAU type dot3MauTypeAUI. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +If the MAU is not jabbering the agent returns +noJabber(3). This is the 'normal' state. + +If the MAU is in jabber state the agent returns +the jabbering(4) value.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag.""", + }, # column + "rpMauJabberingStateEnters" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +mauJabberState for this MAU instance enters the +state jabbering(4). For MAUs of type +dot3MauTypeAUI, dot3MauType100BaseT4, +dot3MauType100BaseTX, dot3MauType100BaseFX, and +all 1000Mbps types, this counter will always +indicate zero. + +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 rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpMauFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X links. This counter +does not increment at the symbol rate. It can +increment after a valid carrier completion at a +maximum rate of once per 100 ms until the next +carrier event. + +This counter increments only for MAUs of type +dot3MauType100BaseT4, dot3MauType100BaseTX, +dot3MauType100BaseFX, and all 1000Mbps types. + +For all other MAU types, this counter will +always indicate zero. + +The approximate minimum time for rollover of +this counter is 7.4 hours. + +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 rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpJackTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2", + "status" : "current", + "description" : + """Information about the external jacks attached +to MAUs attached to the ports of a repeater.""", + }, # table + "rpJackEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1", + "status" : "current", + "linkage" : [ + "rpMauGroupIndex", + "rpMauPortIndex", + "rpMauIndex", + "rpJackIndex", + ], + "description" : + """An entry in the table, containing information +about a particular jack.""", + }, # row + "rpJackIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """This variable uniquely identifies the jack +described by this entry from among other jacks +attached to the same MAU (rpMauIndex).""", + }, # column + "rpJackType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifJackType"}, + }, + "access" : "readonly", + "description" : + """The jack connector type, as it appears on the +outside of the system.""", + }, # column + "dot3IfMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2", + }, # node + "ifMauTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1", + "status" : "current", + "description" : + """Table of descriptive and status information +about MAU(s) attached to an interface.""", + }, # table + "ifMauEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + ], + "description" : + """An entry in the table, containing information +about a single MAU.""", + }, # row + "ifMauIfIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the interface +to which the MAU described by this entry is +connected.""", + "reference>" : + """RFC 2863, ifIndex""", + }, # column + "ifMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the MAU +described by this entry from among other MAUs +connected to the same interface (ifMauIfIndex).""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "ifMauType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readonly", + "description" : + """This object identifies the MAU type. Values for +standard IEEE 802.3 MAU types are defined in the +IANA maintained IANA-MAU-MIB module, as +OBJECT-IDENTITIES of dot3MauType. +If the MAU type is unknown, the object identifier +zeroDotZero is returned. + +This object represents the operational type of +the MAU, as determined by either 1) the result +of the auto-negotiation function or 2) if +auto-negotiation is not enabled or is not +implemented for this MAU, by the value of the +object ifMauDefaultType. In case 2), a set to +the object ifMauDefaultType will force the MAU +into the new operating mode.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.2, aMAUType.""", + }, # column + "ifMauStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "operational" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "standby" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "shutdown" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "reset" : { + "nodetype" : "namednumber", + "number" : "6" + }, + }, + }, + "access" : "readwrite", + "description" : + """The current state of the MAU. This object MAY +be implemented as a read-only object by those +agents and MAUs that do not implement software +control of the MAU state. Some agents may not + + + +support setting the value of this object to some +of the enumerated values. + +The value other(1) is returned if the MAU is in +a state other than one of the states 2 through +6. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +A MAU in the operational(3) state is fully +functional; it operates, and passes signals to its +attached DTE or repeater port in accordance to +its specification. + +A MAU in standby(4) state forces DI and CI to +idle and the media transmitter to idle or fault, +if supported. Standby(4) mode only applies to +link type MAUs. The state of +ifMauMediaAvailable is unaffected. + +A MAU in shutdown(5) state assumes the same +condition on DI, CI, and the media transmitter, +as though it were powered down or not connected. +The MAU MAY return other(1) value for the +ifMauJabberState and ifMauMediaAvailable objects +when it is in this state. For an AUI, this +state will remove power from the AUI. + +Setting this variable to the value reset(6) +resets the MAU in the same manner as a +power-off, power-on cycle of at least one-half +second would. The agent is not required to +return the value reset(6). + +Setting this variable to the value +operational(3), standby(4), or shutdown(5) +causes the MAU to assume the respective state, +except that setting a mixing-type MAU or an AUI +to standby(4) will cause the MAU to enter the +shutdown state.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +acResetMAU.""", + }, # column + "ifMauMediaAvailable" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + }, + "access" : "readonly", + "description" : + """This object identifies Media Available state of +the MAU, complementary to the ifMauStatus. Values +for the standard IEEE 802.3 Media Available states +are defined in the IANA maintained IANA-MAU-MIB +module, as IANAifMauMediaAvailable TC.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.4, aMediaAvailable.""", + }, # column + "ifMauMediaAvailableStateExits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +ifMauMediaAvailable for this MAU instance leaves +the state available(3). + +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.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauJabberState" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "noJabber" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "jabbering" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """The value other(1) is returned if the jabber +state is not 2, 3, or 4. The agent MUST always +return other(1) for MAU type dot3MauTypeAUI. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +If the MAU is not jabbering the agent returns +noJabber(3). This is the 'normal' state. + +If the MAU is in jabber state the agent returns + + + +the jabbering(4) value.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag.""", + }, # column + "ifMauJabberingStateEnters" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +mauJabberState for this MAU instance enters the +state jabbering(4). This counter will always +indicate zero for MAUs of type dot3MauTypeAUI +and those of speeds above 10Mbps. + +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.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X and 1000BASE-X links. + +For all other MAU types, this counter will +always indicate zero. This counter does not +increment at the symbol rate. + +It can increment after a valid carrier +completion at a maximum rate of once per 100 ms +for 100BASE-X and once per 10us for 1000BASE-X +until the next CarrierEvent. + +This counter can roll over very quickly. A +management station is advised to poll the +ifMauHCFalseCarriers instead of this counter in +order to avoid loss of information. + +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.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauTypeList" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.10", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauTypeListBits. + +A value that uniquely identifies the set of +possible IEEE 802.3 types that the MAU could be. +The value is a sum that initially takes the +value zero. Then, for each type capability of +this MAU, 2 raised to the power noted below is +added to the sum. For example, a MAU that has +the capability to be only 10BASE-T would have a +value of 512 (2**9). In contrast, a MAU that +supports both 10Base-T (full duplex) and +100BASE-TX (full duplex) would have a value of +((2**11) + (2**16)), or 67584. + +The powers of 2 assigned to the capabilities are +these: + +Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + +If auto-negotiation is present on this MAU, this +object will map to ifMauAutoNegCapability.""", + }, # column + "ifMauDefaultType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readwrite", + "description" : + """This object identifies the default +administrative baseband MAU type to be used in +conjunction with the operational MAU type +denoted by ifMauType. + +The set of possible values for this object is +the same as the set defined for the ifMauType +object. + +This object represents the +administratively-configured type of the MAU. If +auto-negotiation is not enabled or is not +implemented for this MAU, the value of this +object determines the operational type of the +MAU. In this case, a set to this object will +force the MAU into the specified operating mode. + +If auto-negotiation is implemented and enabled +for this MAU, the operational type of the MAU +is determined by auto-negotiation, and the value +of this object denotes the type to which the MAU +will automatically revert if/when +auto-negotiation is later disabled. + +NOTE TO IMPLEMENTORS: It may be necessary to +provide for underlying hardware implementations +which do not follow the exact behavior specified +above. In particular, when +ifMauAutoNegAdminStatus transitions from enabled +to disabled, the agent implementation MUST +ensure that the operational type of the MAU (as +reported by ifMauType) correctly transitions to +the value specified by this object, rather than +continuing to operate at the value earlier +determined by the auto-negotiation function.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4.""", + }, # column + "ifMauAutoNegSupported" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readonly", + "description" : + """This object indicates whether or not +auto-negotiation is supported on this MAU.""", + }, # column + "ifMauTypeListBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauTypeListBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +possible IEEE 802.3 types that the MAU could be. +If auto-negotiation is present on this MAU, this +object will map to ifMauAutoNegCapabilityBits. + +Note that this MAU may be capable of operating +as a MAU type that is beyond the scope of this +MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauTypeListBits TC.""", + }, # column + "ifMauHCFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.14", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X and 1000BASE-X links. + +For all other MAU types, this counter will +always indicate zero. This counter does not +increment at the symbol rate. + +This counter is a 64-bit version of +ifMauFalseCarriers. Since the 32-bit version of +this counter can roll over very quickly, +management stations are advised to poll the +64-bit version instead, in order to avoid loss +of information. + +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.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifJackTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2", + "status" : "current", + "description" : + """Information about the external jacks attached +to MAUs attached to an interface.""", + }, # table + "ifJackEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + "ifJackIndex", + ], + "description" : + """An entry in the table, containing information +about a particular jack.""", + }, # row + "ifJackIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """This variable uniquely identifies the jack +described by this entry from among other jacks +attached to the same MAU.""", + }, # column + "ifJackType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifJackType"}, + }, + "access" : "readonly", + "description" : + """The jack connector type, as it appears on the +outside of the system.""", + }, # column + "dot3BroadMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3", + }, # node + "broadMauBasicTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1", + "status" : "deprecated", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This entire table has been deprecated. There +have been no reported implementations of this +table, and it is unlikely that there ever will +be. IEEE recommends that broadband MAU types +should not be used for new installations. + +Table of descriptive and status information + + + +about the broadband MAUs connected to +interfaces.""", + }, # table + "broadMauBasicEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1", + "status" : "deprecated", + "linkage" : [ + "broadMauIfIndex", + "broadMauIndex", + ], + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +An entry in the table, containing information +about a single broadband MAU.""", + }, # row + "broadMauIfIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable uniquely identifies the interface +to which the MAU described by this entry is +connected.""", + "reference>" : + """RFC 2863, ifIndex.""", + }, # column + "broadMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable uniquely identifies the MAU +connected to interface broadMauIfIndex that is + + + +described by this entry.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "broadMauXmtRcvSplitType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "single" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "dual" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object indicates the type of frequency +multiplexing/cabling system used to separate the +transmit and receive paths for the 10BROAD36 +MAU. + +The value other(1) is returned if the split type +is not either single or dual. + +The value single(2) indicates a single cable +system. The value dual(3) indicates a dual +cable system, offset normally zero.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType.""", + }, # column + "broadMauXmtCarrierFreq" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable indicates the transmit carrier +frequency of the 10BROAD36 MAU in MHz/4; that +is, in units of 250 kHz.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.9, +aBroadbandFrequencies.xmitCarrierFrequency.""", + }, # column + "broadMauTranslationFreq" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable indicates the translation offset + + + +frequency of the 10BROAD36 MAU in MHz/4; that +is, in units of 250 kHz.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.9, +aBroadbandFrequencies.translationFrequency.""", + }, # column + "dot3IfMauAutoNegGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5", + }, # node + "ifMauAutoNegTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1", + "status" : "current", + "description" : + """Configuration and status objects for the +auto-negotiation function of MAUs attached to +interfaces. + +The ifMauAutoNegTable applies to systems in +which auto-negotiation is supported on one or +more MAUs attached to interfaces. Note that if +auto-negotiation is present and enabled, the +ifMauType object reflects the result of the +auto-negotiation function.""", + }, # table + "ifMauAutoNegEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + ], + "description" : + """An entry in the table, containing configuration +and status information for the auto-negotiation +function of a particular MAU.""", + }, # row + "ifMauAutoNegAdminStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """Setting this object to enabled(1) will cause +the interface that has the auto-negotiation +signaling ability to be enabled. + +If the value of this object is disabled(2) then +the interface will act as it would if it had no +auto-negotiation signaling. Under these +conditions, an IEEE 802.3 MAU will immediately +be forced to the state indicated by the value of +the object ifMauDefaultType. + +NOTE TO IMPLEMENTORS: When +ifMauAutoNegAdminStatus transitions from enabled +to disabled, the agent implementation MUST +ensure that the operational type of the MAU (as +reported by ifMauType) correctly transitions to +the value specified by the ifMauDefaultType +object, rather than continuing to operate at the +value earlier determined by the auto-negotiation +function.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, +and 30.6.1.2.2, acAutoNegAdminControl.""", + }, # column + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "detected" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "notdetected" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readonly", + "description" : + """A value indicating whether the remote end of +the link is using auto-negotiation signaling. It +takes the value detected(1) if and only if, +during the previous link negotiation, FLP Bursts +were received.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.3, +aAutoNegRemoteSignaling.""", + }, # column + "ifMauAutoNegConfig" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "configuring" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "complete" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "parallelDetectFail" : { + "nodetype" : "namednumber", + "number" : "5" + }, + }, + }, + "access" : "readonly", + "description" : + """A value indicating the current status of the +auto-negotiation process. The enumeration +parallelDetectFail(5) maps to a failure in +parallel detection as defined in 28.2.3.1 of +[IEEE802.3].""", + "reference>" : + """[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig.""", + }, # column + "ifMauAutoNegCapability" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapabilityBits. + +A value that uniquely identifies the set of +capabilities of the local auto-negotiation +entity. The value is a sum that initially +takes the value zero. Then, for each capability +of this interface, 2 raised to the power noted +below is added to the sum. For example, an +interface that has the capability to support +only 100Base-TX half duplex would have a value +of 32768 (2**15). In contrast, an interface +that supports both 100Base-TX half duplex and +100Base-TX full duplex would have a value of +98304 ((2**15) + (2**16)). + +The powers of 2 assigned to the capabilities are +these: + +Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + +Note that interfaces that support this MIB may +have capabilities that extend beyond the scope +of this MIB.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.5, +aAutoNegLocalTechnologyAbility.""", + }, # column + "ifMauAutoNegCapAdvertised" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readwrite", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapAdvertisedBits. + +A value that uniquely identifies the set of +capabilities advertised by the local +auto-negotiation entity. Refer to +ifMauAutoNegCapability for a description of the +possible values of this object. + +Capabilities in this object that are not +available in ifMauAutoNegCapability cannot be +enabled.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegCapReceived" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapReceivedBits. + +A value that uniquely identifies the set of + + + +capabilities received from the remote +auto-negotiation entity. Refer to +ifMauAutoNegCapability for a description of the +possible values of this object. + +Note that interfaces that support this MIB may +be attached to remote auto-negotiation entities +that have capabilities beyond the scope of this +MIB.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "ifMauAutoNegRestart" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "restart" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "norestart" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """If the value of this object is set to +restart(1) then this will force auto-negotiation +to begin link renegotiation. If auto-negotiation +signaling is disabled, a write to this object +has no effect. +Setting the value of this object to norestart(2) +has no effect.""", + "reference>" : + """[IEEE802.3], 30.6.1.2.1, +acAutoNegRestartAutoConfig.""", + }, # column + "ifMauAutoNegCapabilityBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +capabilities of the local auto-negotiation +entity. Note that interfaces that support this +MIB may have capabilities that extend beyond the +scope of this MIB. + +Note that the local auto-negotiation entity may +support some capabilities beyond the scope of +this MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.5, +aAutoNegLocalTechnologyAbility.""", + }, # column + "ifMauAutoNegCapAdvertisedBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readwrite", + "description" : + """A value that uniquely identifies the set of +capabilities advertised by the local +auto-negotiation entity. + +Capabilities in this object that are not +available in ifMauAutoNegCapabilityBits cannot +be enabled. + +Note that the local auto-negotiation entity may +advertise some capabilities beyond the scope of +this MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegCapReceivedBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +capabilities received from the remote +auto-negotiation entity. +Note that interfaces that support this MIB may +be attached to remote auto-negotiation entities +that have capabilities beyond the scope of this +MIB. This is indicated by returning the bit +value bOther in addition to any bit values for +standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "ifMauAutoNegRemoteFaultAdvertised" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.12", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "noError" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "offline" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "linkFailure" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "autoNegError" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "description" : + """A value that identifies any local fault +indications that this MAU has detected and will +advertise at the next auto-negotiation +interaction for 1000Mbps MAUs.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegRemoteFaultReceived" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.13", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "noError" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "offline" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "linkFailure" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "autoNegError" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """A value that identifies any fault indications +received from the far end of a link by the +local auto-negotiation entity for 1000Mbps +MAUs.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "mauMod" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6", + "status" : "current", + }, # node + "mauModConf" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1", + }, # node + "mauModCompls" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1", + }, # node + "mauModObjGrps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2", + }, # node + "mauModNotGrps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3", + }, # node + }, # nodes + + "notifications" : { + "rpMauJabberTrap" : { + "nodetype" : "notification", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0.1", + "status" : "current", + "objects" : { + "rpMauJabberState" : { + "nodetype" : "object", + "module" : "MAU-MIB" + }, + }, + "description" : + """This trap is sent whenever a managed repeater +MAU enters the jabber state. + +The agent MUST throttle the generation of +consecutive rpMauJabberTraps so that there is at +least a five-second gap between them.""", + "reference>" : + """[IEEE802.3], 30.5.1.3.1, nJabber notification.""", + }, # notification + "ifMauJabberTrap" : { + "nodetype" : "notification", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0.2", + "status" : "current", + "objects" : { + "ifMauJabberState" : { + "nodetype" : "object", + "module" : "MAU-MIB" + }, + }, + "description" : + """This trap is sent whenever a managed interface +MAU enters the jabber state. + +The agent MUST throttle the generation of +consecutive ifMauJabberTraps so that there is at +least a five-second gap between them.""", + "reference>" : + """[IEEE802.3], 30.5.1.3.1, nJabber notification.""", + }, # notification + }, # notifications + + "groups" : { + "mauRpGrpBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.1", + "status" : "current", + "members" : { + "rpMauGroupIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauPortIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauMediaAvailable" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauMediaAvailableStateExits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauJabberState" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauJabberingStateEnters" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Basic conformance group for MAUs attached to +repeater ports. This group is also the +conformance specification for RFC 1515 +implementations.""", + }, # group + "mauRpGrp100Mbs" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.2", + "status" : "current", + "members" : { + "rpMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +repeater ports with 100 Mb/s or greater +capability.""", + }, # group + "mauRpGrpJack" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.3", + "status" : "current", + "members" : { + "rpJackType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +repeater ports with managed jacks.""", + }, # group + "mauIfGrpBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.4", + "status" : "current", + "members" : { + "ifMauIfIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauMediaAvailable" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauMediaAvailableStateExits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauJabberState" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauJabberingStateEnters" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Basic conformance group for MAUs attached to +interfaces. This group also provides a +conformance specification for RFC 1515 +implementations.""", + }, # group + "mauIfGrp100Mbs" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.5", + "status" : "deprecated", + "members" : { + "ifMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauTypeList" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauDefaultType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegSupported" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** + +Conformance group for MAUs attached to +interfaces with 100 Mb/s capability. + +This object group has been deprecated in favor +of mauIfGrpHighCapacity.""", + }, # group + "mauIfGrpJack" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.6", + "status" : "current", + "members" : { + "ifJackType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with managed jacks.""", + }, # group + "mauIfGrpAutoNeg" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.7", + "status" : "deprecated", + "members" : { + "ifMauAutoNegAdminStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegConfig" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapability" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapAdvertised" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapReceived" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRestart" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** + +Conformance group for MAUs attached to +interfaces with managed auto-negotiation. + +This object group has been deprecated in favor +of mauIfGrpAutoNeg2.""", + }, # group + "mauBroadBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.8", + "status" : "deprecated", + "members" : { + "broadMauIfIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauXmtRcvSplitType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauXmtCarrierFreq" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauTranslationFreq" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** +Conformance group for broadband MAUs attached +to interfaces. + +This object group is deprecated. There have +been no reported implementations of this group, +and it was felt to be unlikely that there will +be any future implementations.""", + }, # group + "mauIfGrpHighCapacity" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.9", + "status" : "current", + "members" : { + "ifMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauTypeListBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauDefaultType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegSupported" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with 100 Mb/s or greater capability.""", + }, # group + "mauIfGrpAutoNeg2" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.10", + "status" : "current", + "members" : { + "ifMauAutoNegAdminStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegConfig" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapabilityBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapAdvertisedBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapReceivedBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRestart" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with managed auto-negotiation.""", + }, # group + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.11", + "status" : "current", + "members" : { + "ifMauAutoNegRemoteFaultAdvertised" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteFaultReceived" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for 1000Mbps MAUs attached to +interfaces with managed auto-negotiation.""", + }, # group + "mauIfGrpHCStats" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.12", + "status" : "current", + "members" : { + "ifMauHCFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance for high capacity statistics for +MAUs attached to interfaces.""", + }, # group + "rpMauNotifications" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3.1", + "status" : "current", + "members" : { + "rpMauJabberTrap" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Notifications for repeater MAUs.""", + }, # group + "ifMauNotifications" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3.2", + "status" : "current", + "members" : { + "ifMauJabberTrap" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Notifications for interface MAUs.""", + }, # group + }, # groups + + "compliances" : { + "mauModRpCompl" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.1", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** +Compliance for MAUs attached to repeater +ports. + +This compliance is deprecated and replaced by +mauModRpCompl2, which corrects an oversight by +allowing rpMauStatus to be implemented +read-only.""", + "requires" : { + "mauRpGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauRpGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s or +greater capability.""", + }, + "mauRpGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "rpMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to repeater ports.""", + }, + }, # requires + }, # compliance + "mauModIfCompl" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.2", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** + +Compliance for MAUs attached to interfaces. +This compliance is deprecated and replaced by +mauModIfCompl2.""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +capability.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauBroadBasic" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for broadband MAUs.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + }, # compliance + "mauModIfCompl2" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.3", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** + +Compliance for MAUs attached to interfaces. + +This compliance is deprecated and replaced by +mauModIfCompl3.""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrpHighCapacity" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +or greater capability.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg2" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s or greater +capability and support managed +auto-negotiation.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + "refinements" : { + "ifMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "mauModRpCompl2" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.4", + "status" : "current", + "description" : + """Compliance for MAUs attached to repeater +ports. + +Note that compliance with this compliance +statement requires compliance with the +snmpRptrModCompl MODULE-COMPLIANCE statement of +the SNMP-REPEATER-MIB (RFC 2108).""", + "requires" : { + "mauRpGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauRpGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s or +greater capability.""", + }, + "mauRpGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "rpMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to repeater ports.""", + }, + }, # requires + "refinements" : { + "rpMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "mauModIfCompl3" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.5", + "status" : "current", + "description" : + """Compliance for MAUs attached to interfaces. + +Note that compliance with this compliance +statement requires compliance with the +ifCompliance3 MODULE-COMPLIANCE statement of the +IF-MIB (RFC 2863) and the dot3Compliance2 +MODULE-COMPLIANCE statement of the +EtherLike-MIB (RFC3635).""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrpHighCapacity" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +or greater capability.""", + }, + "mauIfGrpHCStats" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s capacity, and +is recommended for MAUs that have 100Mb/s +capacity.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg2" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s or greater +capability and support managed +auto-negotiation.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + "refinements" : { + "ifMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/Makefile.am b/test/dumps/python/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/python/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/python/Makefile.in b/test/dumps/python/Makefile.in new file mode 100644 index 0000000..b866e0a --- /dev/null +++ b/test/dumps/python/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/python +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/python/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/python/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/python/RMON2-MIB b/test/dumps/python/RMON2-MIB new file mode 100644 index 0000000..3c5af14 --- /dev/null +++ b/test/dumps/python/RMON2-MIB @@ -0,0 +1,8224 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python RMON2-MIB + +FILENAME = "../../mibs/ietf/RMON2-MIB" + +MIB = { + "moduleName" : "RMON2-MIB", + + "RMON2-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF RMON MIB Working Group""", + "contact" : + """Author: +Steve Waldbusser +Phone: +1-650-948-6500 +Fax : +1-650-745-0671 +Email: waldbusser@nextbeacon.com + +Working Group Chair: +Andy Bierman +E-mail: ietf@andybierman.com + +Working Group Mailing List: +To subscribe send email to: """, + "description" : + """The MIB module for managing remote monitoring +device implementations. This MIB module +extends the architecture introduced in the original +RMON MIB as specified in RFC 2819. + +Copyright (C) The Internet Society (2006). This version of +this MIB module is part of RFC 4502; see the RFC itself for +full legal notices.""", + "revisions" : ( + { + "date" : "2006-05-02 00:00", + "description" : + """This version updates the proposed-standard version of the +RMON2 MIB (published as RFC 2021) by adding 2 new +enumerations to the nlMatrixTopNControlRateBase object and +4 new enumerations to the alMatrixTopNControlRateBase object. +These new enumerations support the creation of high-capacity +topN reports in the High Capacity RMON MIB [RFC3273]. + +Additionally, the following objects have been deprecated, as +they have not had enough independent implementations to +demonstrate interoperability to meet the requirements of a +Draft Standard: + +probeDownloadFile +probeDownloadTFTPServer +probeDownloadAction +probeDownloadStatus + + + +serialMode +serialProtocol +serialTimeout +serialModemInitString +serialModemHangUpString +serialModemConnectResp +serialModemNoConnectResp +serialDialoutTimeout +serialStatus +serialConnectDestIpAddress +serialConnectType +serialConnectDialString +serialConnectSwitchConnectSeq +serialConnectSwitchDisconnectSeq +serialConnectSwitchResetSeq +serialConnectOwner +serialConnectStatus +netConfigIPAddress +netConfigSubnetMask +netConfigStatus +netDefaultGateway +tokenRingMLStats2DroppedFrames +tokenRingMLStats2CreateTime +tokenRingPStats2DroppedFrames +tokenRingPStats2CreateTime +ringStationControl2DroppedFrames +ringStationControl2CreateTime +sourceRoutingStats2DroppedFrames +sourceRoutingStats2CreateTime +trapDestIndex +trapDestCommunity +trapDestProtocol +trapDestAddress +trapDestOwner +trapDestStatus + +In addition, two corrections were made. The LastCreateTime +Textual Convention had been defined with a base type of +another textual convention, which isn't allowed in SMIv2. The +definition has been modified to use TimeTicks as the base +type. + +Further, the SerialConfigEntry SEQUENCE definition included +sub-typing information that is not allowed in SMIv2. This +information has been deleted. Ranges were added to a number of +objects and textual-conventions to constrain their maximum +(and sometimes minimum) sizes. The addition of these ranges +documents existing practice for these objects. These objects + + + +are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + +Finally, the TimeFilter TC has been updated to encourage agent +implementations that allow a MIB walk to behave well even when +performed by an application that is not aware of the special +TimeFilter semantics.""", + }, + { + "date" : "2002-07-08 00:00", + "description" : + """Added new enumerations to support the High-Capacity RMON +MIB as defined in RFC 3273. Also fixed some typos and +added clarifications.""", + }, + { + "date" : "1996-05-27 00:00", + "description" : + """Original version. Published as RFC 2021.""", + }, + ), + "identity node" : "rmon", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "Gauge32"}, + {"module" : "SNMPv2-SMI", "name" : "IpAddress"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-TC", "name" : "RowStatus"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "IF-MIB", "name" : "ifIndex"}, + {"module" : "RMON-MIB", "name" : "OwnerString"}, + {"module" : "RMON-MIB", "name" : "statistics"}, + {"module" : "RMON-MIB", "name" : "history"}, + {"module" : "RMON-MIB", "name" : "hosts"}, + {"module" : "RMON-MIB", "name" : "matrix"}, + {"module" : "RMON-MIB", "name" : "filter"}, + {"module" : "RMON-MIB", "name" : "etherStatsEntry"}, + {"module" : "RMON-MIB", "name" : "historyControlEntry"}, + {"module" : "RMON-MIB", "name" : "hostControlEntry"}, + {"module" : "RMON-MIB", "name" : "matrixControlEntry"}, + {"module" : "RMON-MIB", "name" : "filterEntry"}, + {"module" : "RMON-MIB", "name" : "channelEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRing"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRingMLStatsEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRingPStatsEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "ringStationControlEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "sourceRoutingStatsEntry"}, + ), + + "typedefs" : { + "ZeroBasedCounter32" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "Gauge32", + }, + "description" : + """This TC describes an object that counts events with the +following semantics: objects of this type will be set to +zero(0) on creation and will thereafter count appropriate +events, wrapping back to zero(0) when the value 2^32 is +reached. + +Provided that an application discovers the new object within +the minimum time to wrap, it can use the initial value as a +delta since it last polled the table of which this object is +part. It is important for a management station to be aware of +this minimum time and the actual time between polls, and to +discard data if the actual time is too long or there is no +defined minimum time. + +Typically, this TC is used in tables where the INDEX space is +constantly changing and/or the TimeFilter mechanism is in use.""", + }, + "LastCreateTime" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "TimeTicks", + }, + "description" : + """This TC describes an object that stores the value of the +sysUpTime object at the last time its entry was created. + +This can be used for polling applications to determine that an +entry has been deleted and re-created between polls, causing +an otherwise undetectable discontinuity in the data. + +If sysUpTime is reset to zero as a result of a re- +initialization of the network management (sub)system, then +the values of all LastCreateTime objects are also reset. +However, after approximately 497 days without a re- +initialization, the sysUpTime object will reach 2^^32-1 and +then increment to zero; in this case, existing values +of TimeStamp objects do not change. This can lead to +ambiguities in the value of TimeStamp objects.""", + }, + "TimeFilter" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "TimeTicks", + }, + "description" : + """To be used for the index to a table. Allows an application +to download only those rows changed since a particular time. + + + +Note that this is not a history mechanism. Only current values +of underlying objects are returned; saved instance values +associated with particular values of sysUpTime are not. + +An entry is considered changed if the value of any object in the +entry changes, if the row is created, or if any object in the +entry is created or deleted. Note that deleted entries cannot +be detected or downloaded. + +A time-filtered conceptual table is created by inserting a +single object of SYNTAX TimeFilter as the first INDEX component +in a copy of an existing basic conceptual table (i.e., any +SEQUENCE without a TimeFilter INDEX component). Thus, for +each conceptual entry 'I' in the basic table, there exists N +conceptual entries in the time-filtered version, indexed N.I, +where 'N' is equal to the value of sysUpTime. + +When an application retrieves conceptual instances from a +time-filtered table, and an INDEX value is provided for the +TimeFilter INDEX component 'N', the agent will only consider +returning basic conceptual entries (e.g., 'fooColumn.N.I') if +any column within the basic conceptual entry has changed since +sysUpTime 'N'. If not, the basic conceptual entry will +be ignored for the particular retrieval operation. + +When sysUpTime is equal to zero, this table shall be empty. + +One conceptual entry exists for each past value of sysUpTime, +except that the whole table is purged should sysUpTime wrap. + +As an entry in a time-filtered table is updated (i.e., one of +the columns in the basic conceptual table is changed), new +conceptual entries are also created in the time-filtered version +(which still shares the now updated object values with all other +instances). The number of unique time-filtered instances that +are created is determined by the value of sysUpTime at which the +basic entry was last updated. One unique instance will exist +for each value of sysUpTime at the last update time for the row. +However, a new TimeFilter index instance is created for each new +sysUpTime value. The TimeFilter index values not associated +with entry updates are called duplicate time-filtered instances. + +After some deployment experience, it has been determined that +a time-filtered table is more efficient if the agent +stops a MIB walk operation by skipping over rows with a +TimeFilter index value higher than the value in the received +GetNext/GetBulk request. That is, instead of incrementing a +TimeFilter index value, the agent will continue to the next + + + +object or table. As a consequence, GetNext or GetBulk +operations will provide only one pass through a time-filtered +table. + +It is suggested that an agent implement a time-filtered table +in this manner to improve performance and avoid a MIB walk +getting stuck in time-filtered tables. It is, however, still +acceptable for an agent to implement a time-filtered table in +the traditional manner (i.e., every conceptual time-filtered +instance is returned in GetNext and GetBulk PDU responses), and +management applications must be able to deal with such +traditional implementations. + +See the appendix for further discussion of this textual +convention. + +The following example is provided to demonstrate TimeFilter +behavior: + +Consider the following basic conceptual table, basicFooTable. +(Note that the basic version of a time-filtered table may not +actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + +For this example, the basicFooTable contains two static +conceptual entries (fooIndex equals '1' and '2'), created at +time zero. It also contains one dynamic conceptual entry +(fooIndex equals '3'), which is created at time '3' and deleted +at time '7'. + +The time-filtered version of the basicFooTable could be defined +as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + +Note that entries exist in the time-filtered conceptual table +only if they actually exist in the underlying (basic) table. + +For this example, the fooTable will have three underlying +basic entries (fooIndex == 1, 2, and 3), with the following +activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + +The following tables show the values that would be returned for +MIB walk operations with various TimeFilter values, done at +different times. An application issues a retrieval request at +time 'T', with a TimeFilter value, 'N' (typically set to a lower +value, such as the value of sysUpTime at the last polling cycle). + +The following values would be returned in a MIB walk of +fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + +The following values would be returned in a full (traditional) MIB +walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + +The following values would be returned in a full (traditional) +MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + +The following values would be returned in a full (traditional) +MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk.""", + }, + "DataSource" : { + "basetype" : "ObjectIdentifier", + "status" : "current", + "description" : + """Identifies the source of the data that the associated +function is configured to analyze. This source can be any +interface on this device. + +In order to identify a particular interface, this +object shall identify the instance of the ifIndex +object, defined in [RFC2863], for the desired interface. + +For example, if an entry were to receive data from +interface #1, this object would be set to ifIndex.1.""", + }, + "ControlString" : { + "basetype" : "OctetString", + "status" : "current", + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + "description" : + """This data type is used to communicate with a modem or a + + + +serial data switch. A ControlString contains embedded +commands to control how the device will interact with the +remote device through the serial interface. Commands are +represented as two-character sequences beginning with +the '^' character. + +The following commands are recognized by the device (note +that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + +The following ASCII control characters may be inserted into +the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + +Binary data may also be inserted into the data stream. The +control sequence for each byte of binary data is ^0x##, where +## is the hexadecimal representation of the data byte. Two +ASCII characters (0-9, a-f, A-F) must follow the '^0x' +control prefix. For example, '^0x0D^0x0A' is interpreted as a +carriage return followed by a line feed.""", + }, + }, # typedefs + + "nodes" : { + "rmon" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16", + "status" : "current", + }, # node + "etherStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "etherStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "etherStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "etherStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "etherStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "tokenRingMLStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "tokenRingMLStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "tokenRingMLStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "tokenRingMLStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "tokenRingMLStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "tokenRingPStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "tokenRingPStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "tokenRingPStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "tokenRingPStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "tokenRingPStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "historyControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "historyControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "historyControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "historyControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hostControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "hostControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "hostControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "hostControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the + + + +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hostControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "matrixControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "matrixControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "matrixControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "matrixControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "matrixControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "channel2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "channel2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "channelEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "channelDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "channelCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "filter2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4", + "status" : "current", + "description" : + """Provides a variable-length packet filter feature to the +RMON-1 filter table.""", + }, # table + "filter2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "filterEntry", + }}, + ], + "description" : + """Provides a variable-length packet filter feature to the +RMON-1 filter table.""", + }, # row + "filterProtocolDirDataLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "0", + "description" : + """When this object is set to a non-zero value, the filter that +it is associated with performs the following operations on +every packet: + +1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + +2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. +3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet.""", + }, # column + "filterProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "0", + "description" : + """When this object is set to a non-zero value, the filter that +it is associated with will discard the packet if the packet +doesn't match this protocol directory entry.""", + }, # column + "ringStationControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "ringStationControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ringStationControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "ringStationControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "ringStationControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to + + + +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "sourceRoutingStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "sourceRoutingStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "sourceRoutingStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "sourceRoutingStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the +probe is out of some resources and decides to shed load from +this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "sourceRoutingStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "protocolDir" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11", + }, # node + "protocolDirLastChange" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time the protocol directory +was last modified, either through insertions or deletions, +or through modifications of the +protocolDirAddressMapConfig, protocolDirHostConfig, or +protocolDirMatrixConfig.""", + }, # scalar + "protocolDirTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2", + "status" : "current", + "description" : + """This table lists the protocols that this agent has the +capability to decode and count. There is one entry in this +table for each such protocol. These protocols represent +different network-layer, transport-layer, and higher-layer + + + +protocols. The agent should boot up with this table +preconfigured with those protocols that it knows about and +wishes to monitor. Implementations are strongly encouraged to +support protocols higher than the network layer (at least for +the protocol distribution group), even for implementations +that don't support the application-layer groups.""", + }, # table + "protocolDirEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "protocolDirID", + "protocolDirParameters", + ], + "description" : + """A conceptual row in the protocolDirTable. + +An example of the indexing of this entry is +protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the +encoding of a length of 8, followed by 8 subids encoding the +protocolDirID of 1.2048, followed by a length of 2 and the +2 subids encoding zero-valued parameters. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "protocolDirID" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "4", + "max" : "128" + }, + ], + "range" : { + "min" : "4", + "max" : "128" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique identifier for a particular protocol. Standard +identifiers will be defined in such a manner that they + + + +can often be used as specifications for new protocols - i.e., +a tree-structured assignment mechanism that matches the +protocol encapsulation 'tree' and that has algorithmic +assignment mechanisms for certain subtrees. See RFC 2074 for +more details. + +Despite the algorithmic mechanism, the probe will only place +entries in here for those protocols it chooses to collect. In +other words, it need not populate this table with all +possible ethernet protocol types, nor need it create them on +the fly when it sees them. Whether it does these +things is a matter of product definition (cost/benefit, +usability) and is up to the designer of the product. + +If an entry is written to this table with a protocolDirID that +the agent doesn't understand, either directly or +algorithmically, the SET request will be rejected with an +inconsistentName or badValue (for SNMPv1) error.""", + }, # column + "protocolDirParameters" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "32" + }, + ], + "range" : { + "min" : "1", + "max" : "32" + }, + }, + }, + "access" : "noaccess", + "description" : + """A set of parameters for the associated protocolDirID. +See the associated RMON2 Protocol Identifiers document +for a description of the possible parameters. There +will be one octet in this string for each sub-identifier in +the protocolDirID, and the parameters will appear here in the +same order as the associated sub-identifiers appear in the +protocolDirID. + +Every node in the protocolDirID tree has a different, optional +set of parameters defined (that is, the definition of +parameters for a node is optional). The proper parameter +value for each node is included in this string. Note that the +inclusion of a parameter value in this string for each node is +not optional. What is optional is that a node may have no +parameters defined, in which case the parameter field for that +node will be zero.""", + }, # column + "protocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The locally arbitrary but unique identifier associated +with this protocolDir entry. + +The value for each supported protocol must remain constant at +least from one re-initialization of the entity's network +management system to the next re-initialization, except that +if a protocol is deleted and re-created, it must be re-created +with a new value that has not been used since the last +re-initialization. + +The specific value is meaningful only within a given SNMP +entity. A protocolDirLocalIndex must not be re-used until the +next agent restart in the event that the protocol directory +entry is deleted.""", + }, # column + "protocolDirDescr" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "1", + "max" : "64" + }, + ], + "range" : { + "min" : "1", + "max" : "64" + }, + }, + }, + "access" : "readwrite", + "description" : + """A textual description of the protocol encapsulation. +A probe may choose to describe only a subset of the +entire encapsulation (e.g., only the highest layer). + +This object is intended for human consumption only. + +This object may not be modified if the associated +protocolDirStatus object is equal to active(1).""", + }, # column + "protocolDirType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Bits", + "extensible" : { + "nodetype" : "namednumber", + "number" : "0" + }, + "addressRecognitionCapable" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, + "access" : "readonly", + "description" : + """This object describes 2 attributes of this protocol +directory entry. + +The presence or absence of the 'extensible' bit describes +whether this protocol directory entry can be extended +by the user by creating protocol directory entries that are +children of this protocol. + +An example of an entry that will often allow extensibility is + + + +'ip.udp'. The probe may automatically populate some children +of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. +A probe administrator or user may also populate additional +children via remote SNMP requests that create entries in this +table. When a child node is added for a protocol for which the +probe has no built-in support extending a parent node (for +which the probe does have built-in support), +that child node is not extendable. This is termed 'limited +extensibility'. + +When a child node is added through this extensibility +mechanism, the values of protocolDirLocalIndex and +protocolDirType shall be assigned by the agent. + +The other objects in the entry will be assigned by the +manager who is creating the new entry. + +This object also describes whether this agent can +recognize addresses for this protocol, should it be a +network-level protocol. That is, while a probe may be able +to recognize packets of a particular network-layer protocol +and count them, it takes additional logic to be able to +recognize the addresses in this protocol and to populate +network-layer or application-layer tables with the addresses +in this protocol. If this bit is set, the agent will +recognize network-layer addresses for this protocol and +populate the network- and application-layer host and matrix +tables with these protocols. + +Note that when an entry is created, the agent will supply +values for the bits that match the capabilities of the agent +with respect to this protocol. Note that since row creations +usually exercise the limited extensibility feature, these +bits will usually be set to zero.""", + }, # column + "protocolDirAddressMapConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object describes and configures the probe's support for +address mapping for this protocol. When the probe creates +entries in this table for all protocols that it understands, + + + +it will set the entry to notSupported(1) if it doesn't have +the capability to perform address mapping for the protocol or +if this protocol is not a network-layer protocol. When +an entry is created in this table by a management operation as +part of the limited extensibility feature, the probe must set +this value to notSupported(1), because limited extensibility +of the protocolDirTable does not extend to interpreting +addresses of the extended protocols. + +If the value of this object is notSupported(1), the probe +will not perform address mapping for this protocol and +shall not allow this object to be changed to any other value. +If the value of this object is supportedOn(3), the probe +supports address mapping for this protocol and is configured +to perform address mapping for this protocol for all +addressMappingControlEntries and all interfaces. +If the value of this object is supportedOff(2), the probe +supports address mapping for this protocol but is configured +to not perform address mapping for this protocol for any +addressMappingControlEntries and all interfaces. +Whenever this value changes from supportedOn(3) to +supportedOff(2), the probe shall delete all related entries in +the addressMappingTable.""", + }, # column + "protocolDirHostConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object describes and configures the probe's support for +the network-layer and application-layer host tables for this +protocol. When the probe creates entries in this table for +all protocols that it understands, it will set the entry to +notSupported(1) if it doesn't have the capability to track the +nlHostTable for this protocol or if the alHostTable is +implemented but doesn't have the capability to track this +protocol. Note that if the alHostTable is implemented, the +probe may only support a protocol if it is supported in both +the nlHostTable and the alHostTable. + +If the associated protocolDirType object has the +addressRecognitionCapable bit set, then this is a network- +layer protocol for which the probe recognizes addresses, and + + + +thus the probe will populate the nlHostTable and alHostTable +with addresses it discovers for this protocol. + +If the value of this object is notSupported(1), the probe +will not track the nlHostTable or alHostTable for this +protocol and shall not allow this object to be changed to any +other value. If the value of this object is supportedOn(3), +the probe supports tracking of the nlHostTable and alHostTable +for this protocol and is configured to track both tables +for this protocol for all control entries and all interfaces. +If the value of this object is supportedOff(2), the probe +supports tracking of the nlHostTable and alHostTable for this +protocol but is configured to not track these tables +for any control entries or interfaces. +Whenever this value changes from supportedOn(3) to +supportedOff(2), the probe shall delete all related entries in +the nlHostTable and alHostTable. + +Note that since each alHostEntry references 2 protocol +directory entries, one for the network address and one for the +type of the highest protocol recognized, an entry will +only be created in that table if this value is supportedOn(3) +for both protocols.""", + }, # column + "protocolDirMatrixConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object describes and configures the probe's support for +the network-layer and application-layer matrix tables for this +protocol. When the probe creates entries in this table for +all protocols that it understands, it will set the entry to +notSupported(1) if it doesn't have the capability to track the +nlMatrixTables for this protocol or if the alMatrixTables are +implemented but don't have the capability to track this +protocol. Note that if the alMatrix tables are implemented, +the probe may only support a protocol if it is supported in +both of the nlMatrixTables and both of the +alMatrixTables. + +If the associated protocolDirType object has the +addressRecognitionCapable bit set, then this is a network- + + + +layer protocol for which the probe recognizes addresses, and +thus the probe will populate both of the nlMatrixTables and +both of the alMatrixTables with addresses it discovers for +this protocol. + +If the value of this object is notSupported(1), the probe +will not track either of the nlMatrixTables or the +alMatrixTables for this protocol and shall not allow this +object to be changed to any other value. If the value of this +object is supportedOn(3), the probe supports tracking of both +of the nlMatrixTables and (if implemented) both of the +alMatrixTables for this protocol and is configured to track +these tables for this protocol for all control entries and all +interfaces. If the value of this object is supportedOff(2), +the probe supports tracking of both of the nlMatrixTables and +(if implemented) both of the alMatrixTables for this protocol +but is configured to not track these tables for this +protocol for any control entries or interfaces. +Whenever this value changes from supportedOn(3) to +supportedOff(2), the probe shall delete all related entries in +the nlMatrixTables and the alMatrixTables. + +Note that since each alMatrixEntry references 2 protocol +directory entries, one for the network address and one for the +type of the highest protocol recognized, an entry will +only be created in that table if this value is supportedOn(3) +for both protocols.""", + }, # column + "protocolDirOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "protocolDirStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this protocol directory entry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + + + + +If this object is not equal to active(1), all associated +entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, +alHostTable, alMatrixSDTable, and alMatrixDSTable shall be +deleted.""", + }, # column + "protocolDist" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12", + }, # node + "protocolDistControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1", + "status" : "current", + "description" : + """Controls the setup of protocol type distribution statistics +tables. + +Implementations are encouraged to add an entry per monitored +interface upon initialization so that a default collection +of protocol statistics is available. + +Rationale: +This table controls collection of very basic statistics +for any or all of the protocols detected on a given interface. +An NMS can use this table to quickly determine bandwidth +allocation utilized by different protocols. + +A media-specific statistics collection could also +be configured (e.g., etherStats, trPStats) to easily obtain +total frame, octet, and droppedEvents for the same +interface.""", + }, # table + "protocolDistControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "protocolDistControlIndex", + ], + "description" : + """A conceptual row in the protocolDistControlTable. + +An example of the indexing of this entry is +protocolDistControlDroppedFrames.7""", + }, # row + "protocolDistControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique index for this protocolDistControlEntry.""", + }, # column + "protocolDistControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "description" : + """The source of data for the this protocol distribution. + +The statistics in this group reflect all packets +on the local network segment attached to the +identified interface. + +This object may not be modified if the associated +protocolDistControlStatus object is equal to active(1).""", + }, # column + "protocolDistControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the probe +is out of some resources and decides to shed load from this +collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + + + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "protocolDistControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this control entry was last +activated. This can be used by the management station to +ensure that the table has not been deleted and recreated +between polls.""", + }, # column + "protocolDistControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "protocolDistControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this row. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all associated +entries in the protocolDistStatsTable shall be deleted.""", + }, # column + "protocolDistStatsTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2", + "status" : "current", + "description" : + """An entry is made in this table for every protocol in the +protocolDirTable that has been seen in at least one packet. +Counters are updated in this table for every protocol type +that is encountered when parsing a packet, but no counters are + + + +updated for packets with MAC-layer errors. + +Note that if a protocolDirEntry is deleted, all associated +entries in this table are removed.""", + }, # table + "protocolDistStatsEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1", + "status" : "current", + "linkage" : [ + "protocolDistControlIndex", + "protocolDirLocalIndex", + ], + "description" : + """A conceptual row in the protocolDistStatsTable. + +The index is composed of the protocolDistControlIndex of the +associated protocolDistControlEntry, followed by the +protocolDirLocalIndex of the associated protocol that this +entry represents. In other words, the index identifies the +protocol distribution an entry is a part of and the +particular protocol that it represents. + +An example of the indexing of this entry is +protocolDistStatsPkts.1.18""", + }, # row + "protocolDistStatsPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type received +without errors. Note that this is the number of +link-layer packets, so if a single network-layer packet +is fragmented into several link-layer frames, this counter +is incremented several times.""", + }, # column + "protocolDistStatsOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets in packets of this protocol type + + + +received since it was added to the protocolDistStatsTable +(excluding framing bits, but including FCS octets), except for +those octets in packets that contained errors. + +Note that this doesn't count just those octets in the +particular protocol frames but includes the entire packet +that contained the protocol.""", + }, # column + "addressMap" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13", + }, # node + "addressMapInserts" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an address mapping entry has been +inserted into the addressMapTable. If an entry is inserted, +then deleted, and then inserted, this counter will be +incremented by 2. + +Note that the table size can be determined by subtracting +addressMapDeletes from addressMapInserts.""", + }, # scalar + "addressMapDeletes" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an address mapping entry has been +deleted from the addressMapTable (for any reason). If +an entry is deleted, then inserted, and then deleted, this +counter will be incremented by 2. + +Note that the table size can be determined by subtracting +addressMapDeletes from addressMapInserts.""", + }, # scalar + "addressMapMaxDesiredEntries" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "description" : + """The maximum number of entries that are desired in the +addressMapTable. The probe will not create more than +this number of entries in the table but may choose to create +fewer entries in this table for any reason, including the lack +of resources. + +If this object is set to a value less than the current number +of entries, enough entries are chosen in an +implementation-dependent manner and deleted so that the number +of entries in the table equals the value of this object. + +If this value is set to -1, the probe may create any number +of entries in this table. + +This object may be used to control how resources are allocated +on the probe for the various RMON functions.""", + }, # scalar + "addressMapControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4", + "status" : "current", + "description" : + """A table to control the collection of mappings from network +layer address to physical address to interface. + +Note that this is not like the typical RMON +controlTable and dataTable in which each entry creates +its own data table. Each entry in this table enables the +discovery of addresses on a new interface and the placement +of address mappings into the central addressMapTable. + +Implementations are encouraged to add an entry per monitored +interface upon initialization so that a default collection +of address mappings is available.""", + }, # table + "addressMapControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "addressMapControlIndex", + ], + "description" : + """A conceptual row in the addressMapControlTable. + +An example of the indexing of this entry is +addressMapControlDroppedFrames.1""", + }, # row + "addressMapControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique index for this entry in the addressMapControlTable.""", + }, # column + "addressMapControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "description" : + """The source of data for this addressMapControlEntry.""", + }, # column + "addressMapControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the probe +is out of some resources and decides to shed load from this +collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "addressMapControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "addressMapControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this addressMap control entry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all associated +entries in the addressMapTable shall be deleted.""", + }, # column + "addressMapTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5", + "status" : "current", + "description" : + """A table of mappings from network layer address to physical +address to interface. + +The probe will add entries to this table based on the source +MAC and network addresses seen in packets without MAC-level +errors. The probe will populate this table for all protocols +in the protocol directory table whose value of +protocolDirAddressMapConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirAddressMapConfig value of supportedOff(2).""", + }, # table + "addressMapEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1", + "status" : "current", + "linkage" : [ + "addressMapTimeMark", + "protocolDirLocalIndex", + "addressMapNetworkAddress", + "addressMapSource", + ], + "description" : + """A conceptual row in the addressMapTable. + +The protocolDirLocalIndex in the index identifies the network +layer protocol of the addressMapNetworkAddress. + + + + +An example of the indexing of this entry is +addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "addressMapTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "addressMapNetworkAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network address for this relation. + +This is represented as an octet string with +specific semantics and length as identified +by the protocolDirLocalIndex component of the +index. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of ip, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "addressMapSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "noaccess", + "description" : + """The interface or port on which the associated network +address was most recently seen. + +If this address mapping was discovered on an interface, this +object shall identify the instance of the ifIndex +object, defined in [RFC2863], for the desired interface. +For example, if an entry were to receive data from +interface #1, this object would be set to ifIndex.1. + +If this address mapping was discovered on a port, this +object shall identify the instance of the rptrGroupPortIndex +object, defined in [RFC2108], for the desired port. +For example, if an entry were to receive data from +group #1, port #1, this object would be set to +rptrGroupPortIndex.1.1. + +Note that while the dataSource associated with this entry +may only point to index objects, this object may at times +point to repeater port objects. This situation occurs when +the dataSource points to an interface that is a locally +attached repeater and the agent has additional information +about the source port of traffic seen on that repeater.""", + }, # column + "addressMapPhysicalAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "OctetString"}, + }, + "access" : "readonly", + "description" : + """The last source physical address on which the associated +network address was seen. If the protocol of the associated +network address was encapsulated inside of a network-level or +higher protocol, this will be the address of the next-lower +protocol with the addressRecognitionCapable bit enabled and +will be formatted as specified for that protocol.""", + }, # column + "addressMapLastChange" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time this entry was last +created or the values of the physical address changed. + + + + +This can be used to help detect duplicate address problems, in +which case this object will be updated frequently.""", + }, # column + "nlHost" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14", + }, # node + "hlHostControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1", + "status" : "current", + "description" : + """A list of higher-layer (i.e., non-MAC) host table control +entries. + +These entries will enable the collection of the network- and +application-level host tables indexed by network addresses. +Both the network- and application-level host tables are +controlled by this table so that they will both be created +and deleted at the same time, further increasing the ease with +which they can be implemented as a single datastore. (Note that +if an implementation stores application-layer host records in +memory, it can derive network-layer host records from them.) + +Entries in the nlHostTable will be created on behalf of each +entry in this table. Additionally, if this probe implements +the alHostTable, entries in the alHostTable will be created on +behalf of each entry in this table. + +Implementations are encouraged to add an entry per monitored +interface upon initialization so that a default collection +of host statistics is available.""", + }, # table + "hlHostControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + ], + "description" : + """A conceptual row in the hlHostControlTable. + +An example of the indexing of this entry is + + + +hlHostControlNlDroppedFrames.1""", + }, # row + "hlHostControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry in the +hlHostControlTable. Each such entry defines +a function that discovers hosts on a particular +interface and places statistics about them in the +nlHostTable, and optionally in the alHostTable, on +behalf of this hlHostControlEntry.""", + }, # column + "hlHostControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "description" : + """The source of data for the associated host tables. + +The statistics in this group reflect all packets +on the local network segment attached to the +identified interface. + +This object may not be modified if the associated +hlHostControlStatus object is equal to active(1).""", + }, # column + "hlHostControlNlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for the associated +nlHost entries for whatever reason. Most often, this event +occurs when the probe is out of some resources and decides to +shed load from this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that if the nlHostTable is inactive because no protocols +are enabled in the protocol directory, this value should be 0. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hlHostControlNlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an nlHost entry has been +inserted into the nlHost table. If an entry is inserted, then +deleted, and then inserted, this counter will be incremented +by 2. + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlHostControlNlDeletes from hlHostControlNlInserts.""", + }, # column + "hlHostControlNlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an nlHost entry has been + + + +deleted from the nlHost table (for any reason). If an entry +is deleted, then inserted, and then deleted, this counter will +be incremented by 2. + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlHostControlNlDeletes from hlHostControlNlInserts.""", + }, # column + "hlHostControlNlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "description" : + """The maximum number of entries that are desired in the +nlHostTable on behalf of this control entry. The probe will +not create more than this number of associated entries in the +table but may choose to create fewer entries in this table +for any reason, including the lack of resources. + +If this object is set to a value less than the current number +of entries, enough entries are chosen in an +implementation-dependent manner and deleted so that the number +of entries in the table equals the value of this object. + +If this value is set to -1, the probe may create any number +of entries in this table. If the associated +hlHostControlStatus object is equal to 'active', this +object may not be modified. + +This object may be used to control how resources are allocated +on the probe for the various RMON functions.""", + }, # column + "hlHostControlAlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for the associated + + + +alHost entries for whatever reason. Most often, this event +occurs when the probe is out of some resources and decides to +shed load from this collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that if the alHostTable is not implemented or is inactive +because no protocols are enabled in the protocol directory, +this value should be 0. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hlHostControlAlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an alHost entry has been +inserted into the alHost table. If an entry is inserted, then +deleted, and then inserted, this counter will be incremented +by 2. + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlHostControlAlDeletes from hlHostControlAlInserts.""", + }, # column + "hlHostControlAlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an alHost entry has been +deleted from the alHost table (for any reason). If an entry +is deleted, then inserted, and then deleted, this counter will +be incremented by 2. + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For + + + +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlHostControlAlDeletes from hlHostControlAlInserts.""", + }, # column + "hlHostControlAlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.10", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "description" : + """The maximum number of entries that are desired in the alHost +table on behalf of this control entry. The probe will not +create more than this number of associated entries in the +table but may choose to create fewer entries in this table +for any reason, including the lack of resources. + +If this object is set to a value less than the current number +of entries, enough entries are chosen in an +implementation-dependent manner and deleted so that the number +of entries in the table equals the value of this object. + +If this value is set to -1, the probe may create any number +of entries in this table. If the associated +hlHostControlStatus object is equal to 'active', this +object may not be modified. + +This object may be used to control how resources are allocated +on the probe for the various RMON functions.""", + }, # column + "hlHostControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "hlHostControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this hlHostControlEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all associated +entries in the nlHostTable and alHostTable shall be deleted.""", + }, # column + "nlHostTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2", + "status" : "current", + "description" : + """A collection of statistics for a particular network layer +address that has been discovered on an interface of this +device. + +The probe will populate this table for all network layer +protocols in the protocol directory table whose value of +protocolDirHostConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirHostConfig value of supportedOff(2). + +The probe will add to this table all addresses seen +as the source or destination address in all packets with no +MAC errors, and will increment octet and packet counts in the +table for all packets with no MAC errors.""", + }, # table + "nlHostEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + "nlHostTimeMark", + "protocolDirLocalIndex", + "nlHostAddress", + ], + "description" : + """A conceptual row in the nlHostTable. + +The hlHostControlIndex value in the index identifies the +hlHostControlEntry on whose behalf this entry was created. +The protocolDirLocalIndex value in the index identifies the +network layer protocol of the nlHostAddress. + +An example of the indexing of this entry is +nlHostOutPkts.1.783495.18.4.128.2.6.6. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take + + + +care to avoid such combinations.""", + }, # row + "nlHostTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlHostAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network address for this nlHostEntry. + +This is represented as an octet string with +specific semantics and length as identified +by the protocolDirLocalIndex component of the index. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlHostInPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets without errors transmitted to + + + +this address since it was added to the nlHostTable. Note that +this is the number of link-layer packets, so if a single +network-layer packet is fragmented into several link-layer +frames, this counter is incremented several times.""", + }, # column + "nlHostOutPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets without errors transmitted by +this address since it was added to the nlHostTable. Note that +this is the number of link-layer packets, so if a single +network-layer packet is fragmented into several link-layer +frames, this counter is incremented several times.""", + }, # column + "nlHostInOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted to this address +since it was added to the nlHostTable (excluding +framing bits, but including FCS octets), excluding +octets in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlHostOutOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted by this address +since it was added to the nlHostTable (excluding +framing bits, but including FCS octets), excluding +octets in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlHostOutMacNonUnicastPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets without errors transmitted by this +address that were directed to any MAC broadcast addresses +or to any MAC multicast addresses since this host was +added to the nlHostTable. Note that this is the number of +link-layer packets, so if a single network-layer packet is +fragmented into several link-layer frames, this counter is +incremented several times.""", + }, # column + "nlHostCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "nlMatrix" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15", + }, # node + "hlMatrixControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1", + "status" : "current", + "description" : + """A list of higher-layer (i.e., non-MAC) matrix control entries. + +These entries will enable the collection of the network- and +application-level matrix tables containing conversation +statistics indexed by pairs of network addresses. +Both the network- and application-level matrix tables are +controlled by this table so that they will both be created +and deleted at the same time, further increasing the ease with +which they can be implemented as a single datastore. (Note that +if an implementation stores application-layer matrix records + + + +in memory, it can derive network-layer matrix records from +them.) + +Entries in the nlMatrixSDTable and nlMatrixDSTable will be +created on behalf of each entry in this table. Additionally, +if this probe implements the alMatrix tables, entries in the +alMatrix tables will be created on behalf of each entry in +this table.""", + }, # table + "hlMatrixControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + ], + "description" : + """A conceptual row in the hlMatrixControlTable. + +An example of indexing of this entry is +hlMatrixControlNlDroppedFrames.1""", + }, # row + "hlMatrixControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry in the +hlMatrixControlTable. Each such entry defines +a function that discovers conversations on a particular +interface and places statistics about them in the +nlMatrixSDTable and the nlMatrixDSTable, and optionally the +alMatrixSDTable and alMatrixDSTable, on behalf of this + + + +hlMatrixControlEntry.""", + }, # column + "hlMatrixControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "description" : + """The source of the data for the associated matrix tables. + +The statistics in this group reflect all packets +on the local network segment attached to the +identified interface. + +This object may not be modified if the associated +hlMatrixControlStatus object is equal to active(1).""", + }, # column + "hlMatrixControlNlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the probe +is out of some resources and decides to shed load from this +collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that if the nlMatrixTables are inactive because no +protocols are enabled in the protocol directory, this value +should be 0. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hlMatrixControlNlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an nlMatrix entry has been +inserted into the nlMatrix tables. If an entry is inserted, + + + +then deleted, and then inserted, this counter will be +incremented by 2. The addition of a conversation into both +the nlMatrixSDTable and nlMatrixDSTable shall be counted as +two insertions (even though every addition into one table must +be accompanied by an insertion into the other). + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the sum of then nlMatrixSDTable and nlMatrixDSTable +sizes can be determined by subtracting +hlMatrixControlNlDeletes from hlMatrixControlNlInserts.""", + }, # column + "hlMatrixControlNlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an nlMatrix entry has been +deleted from the nlMatrix tables (for any reason). If an +entry is deleted, then inserted, and then deleted, this +counter will be incremented by 2. The deletion of a +conversation from both the nlMatrixSDTable and nlMatrixDSTable +shall be counted as two deletions (even though every deletion +from one table must be accompanied by a deletion from the +other). + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlMatrixControlNlDeletes from hlMatrixControlNlInserts.""", + }, # column + "hlMatrixControlNlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "description" : + """The maximum number of entries that are desired in the +nlMatrix tables on behalf of this control entry. The probe +will not create more than this number of associated entries in +the table but may choose to create fewer entries in this +table for any reason, including the lack of resources. + +If this object is set to a value less than the current number +of entries, enough entries are chosen in an +implementation-dependent manner and deleted so that the number +of entries in the table equals the value of this object. + +If this value is set to -1, the probe may create any number +of entries in this table. If the associated +hlMatrixControlStatus object is equal to 'active', this +object may not be modified. + +This object may be used to control how resources are allocated +on the probe for the various RMON functions.""", + }, # column + "hlMatrixControlAlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that the probe chose not to count for this entry for +whatever reason. Most often, this event occurs when the probe +is out of some resources and decides to shed load from this +collection. + +This count does not include packets that were not counted +because they had MAC-layer errors. + +Note that if the alMatrixTables are not implemented or are +inactive because no protocols are enabled in the protocol +directory, this value should be 0. + +Note that, unlike the dropEvents counter, this number is the +exact number of frames dropped.""", + }, # column + "hlMatrixControlAlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an alMatrix entry has been +inserted into the alMatrix tables. If an entry is inserted, +then deleted, and then inserted, this counter will be +incremented by 2. The addition of a conversation into both +the alMatrixSDTable and alMatrixDSTable shall be counted as +two insertions (even though every addition into one table must +be accompanied by an insertion into the other). + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlMatrixControlAlDeletes from hlMatrixControlAlInserts.""", + }, # column + "hlMatrixControlAlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of times an alMatrix entry has been +deleted from the alMatrix tables. If an entry is deleted, +then inserted, and then deleted, this counter will be +incremented by 2. The deletion of a conversation from both +the alMatrixSDTable and alMatrixDSTable shall be counted as +two deletions (even though every deletion from one table must +be accompanied by a deletion from the other). + +To allow for efficient implementation strategies, agents may +delay updating this object for short periods of time. For +example, an implementation strategy may allow internal +data structures to differ from those visible via SNMP for +short periods of time. This counter may reflect the internal +data structures for those short periods of time. + +Note that the table size can be determined by subtracting +hlMatrixControlAlDeletes from hlMatrixControlAlInserts.""", + }, # column + "hlMatrixControlAlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.10", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "description" : + """The maximum number of entries that are desired in the +alMatrix tables on behalf of this control entry. The probe +will not create more than this number of associated entries in +the table but may choose to create fewer entries in this +table for any reason, including the lack of resources. + +If this object is set to a value less than the current number +of entries, enough entries are chosen in an +implementation-dependent manner and deleted so that the number +of entries in the table equals the value of this object. + +If this value is set to -1, the probe may create any number +of entries in this table. If the associated +hlMatrixControlStatus object is equal to 'active', this +object may not be modified. + +This object may be used to control how resources are allocated +on the probe for the various RMON functions.""", + }, # column + "hlMatrixControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "hlMatrixControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this hlMatrixControlEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all +associated entries in the nlMatrixSDTable, +nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable +shall be deleted by the agent.""", + }, # column + "nlMatrixSDTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2", + "status" : "current", + "description" : + """A list of traffic matrix entries that collect statistics for +conversations between two network-level addresses. This table +is indexed first by the source address and then by the +destination address to make it convenient to collect all +conversations from a particular address. + +The probe will populate this table for all network layer +protocols in the protocol directory table whose value of +protocolDirMatrixConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirMatrixConfig value of supportedOff(2). + +The probe will add to this table all pairs of addresses +seen in all packets with no MAC errors and will increment +octet and packet counts in the table for all packets with no +MAC errors. + +Further, this table will only contain entries that have a +corresponding entry in the nlMatrixDSTable with the same +source address and destination address.""", + }, # table + "nlMatrixSDEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "nlMatrixSDTimeMark", + "protocolDirLocalIndex", + "nlMatrixSDSourceAddress", + "nlMatrixSDDestAddress", + ], + "description" : + """A conceptual row in the nlMatrixSDTable. + +The hlMatrixControlIndex value in the index identifies the +hlMatrixControlEntry on whose behalf this entry was created. +The protocolDirLocalIndex value in the index identifies the +network-layer protocol of the nlMatrixSDSourceAddress and +nlMatrixSDDestAddress. + +An example of the indexing of this table is +nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "nlMatrixSDTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlMatrixSDSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network source address for this nlMatrixSDEntry. + +This is represented as an octet string with +specific semantics and length as identified +by the protocolDirLocalIndex component of the index. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixSDDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network destination address for this +nlMatrixSDEntry. + +This is represented as an octet string with +specific semantics and length as identified +by the protocolDirLocalIndex component of the index. + +For example, if the protocolDirLocalIndex indicates an + + + +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixSDPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets without errors transmitted from the +source address to the destination address since this entry was +added to the nlMatrixSDTable. Note that this is the number of +link-layer packets, so if a single network-layer packet is +fragmented into several link-layer frames, this counter is +incremented several times.""", + }, # column + "nlMatrixSDOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted from the source address to +the destination address since this entry was added to the +nlMatrixSDTable (excluding framing bits, but +including FCS octets), excluding octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlMatrixSDCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "nlMatrixDSTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3", + "status" : "current", + "description" : + """A list of traffic matrix entries that collect statistics for +conversations between two network-level addresses. This table +is indexed first by the destination address and then by the +source address to make it convenient to collect all +conversations to a particular address. + +The probe will populate this table for all network layer +protocols in the protocol directory table whose value of +protocolDirMatrixConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirMatrixConfig value of supportedOff(2). + +The probe will add to this table all pairs of addresses +seen in all packets with no MAC errors and will increment +octet and packet counts in the table for all packets with no +MAC errors. + +Further, this table will only contain entries that have a +corresponding entry in the nlMatrixSDTable with the same +source address and destination address.""", + }, # table + "nlMatrixDSEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "nlMatrixDSTimeMark", + "protocolDirLocalIndex", + "nlMatrixDSDestAddress", + "nlMatrixDSSourceAddress", + ], + "description" : + """A conceptual row in the nlMatrixDSTable. + +The hlMatrixControlIndex value in the index identifies the +hlMatrixControlEntry on whose behalf this entry was created. +The protocolDirLocalIndex value in the index identifies the +network-layer protocol of the nlMatrixDSSourceAddress and +nlMatrixDSDestAddress. + +An example of the indexing of this table is +nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "nlMatrixDSTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlMatrixDSSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network source address for this nlMatrixDSEntry. + +This is represented as an octet string with +specific semantics and length as identified +by the protocolDirLocalIndex component of the index. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixDSDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "description" : + """The network destination address for this +nlMatrixDSEntry. + +This is represented as an octet string with +specific semantics and length as identified + + + +by the protocolDirLocalIndex component of the index. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixDSPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets without errors transmitted from the +source address to the destination address since this entry was +added to the nlMatrixDSTable. Note that this is the number of +link-layer packets, so if a single network-layer packet is +fragmented into several link-layer frames, this counter is +incremented several times.""", + }, # column + "nlMatrixDSOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted from the source address +to the destination address since this entry was added to the +nlMatrixDSTable (excluding framing bits, but +including FCS octets), excluding octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlMatrixDSCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "nlMatrixTopNControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4", + "status" : "current", + "description" : + """A set of parameters that control the creation of a +report of the top N matrix entries according to +a selected metric.""", + }, # table + "nlMatrixTopNControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "nlMatrixTopNControlIndex", + ], + "description" : + """A conceptual row in the nlMatrixTopNControlTable. + +An example of the indexing of this table is +nlMatrixTopNControlDuration.3""", + }, # row + "nlMatrixTopNControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry +in the nlMatrixTopNControlTable. Each such +entry defines one topN report prepared for +one interface.""", + }, # column + "nlMatrixTopNControlMatrixIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "description" : + """The nlMatrix[SD/DS] table for which a topN report will be +prepared on behalf of this entry. The nlMatrix[SD/DS] table +is identified by the value of the hlMatrixControlIndex +for that table - that value is used here to identify the +particular table. + +This object may not be modified if the associated +nlMatrixTopNControlStatus object is equal to active(1).""", + }, # column + "nlMatrixTopNControlRateBase" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "nlMatrixTopNHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "nlMatrixTopNHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "description" : + """The variable for each nlMatrix[SD/DS] entry that the +nlMatrixTopNEntries are sorted by, as well as a control +for the table that the results will be reported in. + +This object may not be modified if the associated +nlMatrixTopNControlStatus object is equal to active(1). + +If this value is less than or equal to 2, when the report +is prepared, entries are created in the nlMatrixTopNTable +associated with this object. +If this value is greater than or equal to 3, when the report +is prepared, entries are created in the +nlMatrixTopNHighCapacityTable associated with this object.""", + }, # column + "nlMatrixTopNControlTimeRemaining" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "description" : + """The number of seconds left in the report currently +being collected. When this object is modified by +the management station, a new collection is started, +possibly aborting a currently running report. The +new value is used as the requested duration of this + + + +report and is immediately loaded into the associated +nlMatrixTopNControlDuration object. + +When the report finishes, the probe will automatically +start another collection with the same initial value +of nlMatrixTopNControlTimeRemaining. Thus, the management +station may simply read the resulting reports repeatedly, +checking the startTime and duration each time to ensure that a +report was not missed or that the report parameters were not +changed. + +While the value of this object is non-zero, it decrements +by one per second until it reaches zero. At the time +that this object decrements to zero, the report is made +accessible in the nlMatrixTopNTable, overwriting any report +that may be there. + +When this object is modified by the management station, any +associated entries in the nlMatrixTopNTable shall be deleted. + +(Note that this is a different algorithm than the one used +in the hostTopNTable).""", + }, # column + "nlMatrixTopNControlGeneratedReports" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of reports that have been generated by this entry.""", + }, # column + "nlMatrixTopNControlDuration" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """The number of seconds that this report has collected +during the last sampling interval. + +When the associated nlMatrixTopNControlTimeRemaining object is +set, this object shall be set by the probe to the +same value and shall not be modified until the next +time the nlMatrixTopNControlTimeRemaining is set. + +This value shall be zero if no reports have been +requested for this nlMatrixTopNControlEntry.""", + }, # column + "nlMatrixTopNControlRequestedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "150", + "description" : + """The maximum number of matrix entries requested for this report. + +When this object is created or modified, the probe +should set nlMatrixTopNControlGrantedSize as closely to this +object as possible for the particular probe +implementation and available resources.""", + }, # column + "nlMatrixTopNControlGrantedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The maximum number of matrix entries in this report. + +When the associated nlMatrixTopNControlRequestedSize object is +created or modified, the probe should set this +object as closely to the requested value as +possible for the particular implementation and +available resources. The probe must not lower this +value except as a side-effect of a set to the associated +nlMatrixTopNControlRequestedSize object. + +If the value of nlMatrixTopNControlRateBase is equal to +nlMatrixTopNPkts, when the next topN report is generated, +matrix entries with the highest value of nlMatrixTopNPktRate +shall be placed in this table in decreasing order of this rate +until there is no more room or until there are no more +matrix entries. + +If the value of nlMatrixTopNControlRateBase is equal to +nlMatrixTopNOctets, when the next topN report is generated, +matrix entries with the highest value of nlMatrixTopNOctetRate +shall be placed in this table in decreasing order of this rate +until there is no more room or until there are no more +matrix entries. + +It is an implementation-specific matter how entries with the +same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are +sorted. It is also an implementation-specific matter as to + + + +whether zero-valued entries are available.""", + }, # column + "nlMatrixTopNControlStartTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this topN report was +last started. In other words, this is the time that +the associated nlMatrixTopNControlTimeRemaining object was +modified to start the requested report or the time +the report was last automatically (re)started. + +This object may be used by the management station to +determine whether a report was missed.""", + }, # column + "nlMatrixTopNControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "nlMatrixTopNControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this nlMatrixTopNControlEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all +associated entries in the nlMatrixTopNTable shall be deleted +by the agent.""", + }, # column + "nlMatrixTopNTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5", + "status" : "current", + "description" : + """A set of statistics for those network-layer matrix entries + + + +that have counted the highest number of octets or packets.""", + }, # table + "nlMatrixTopNEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1", + "status" : "current", + "linkage" : [ + "nlMatrixTopNControlIndex", + "nlMatrixTopNIndex", + ], + "description" : + """A conceptual row in the nlMatrixTopNTable. + +The nlMatrixTopNControlIndex value in the index identifies the +nlMatrixTopNControlEntry on whose behalf this entry was +created. + +An example of the indexing of this table is +nlMatrixTopNPktRate.3.10""", + }, # row + "nlMatrixTopNIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry in +the nlMatrixTopNTable among those in the same report. +This index is between 1 and N, where N is the +number of entries in this report. + +If the value of nlMatrixTopNControlRateBase is equal to +nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall +be assigned to entries with decreasing values of +nlMatrixTopNPktRate until index N is assigned or there are no +more nlMatrixTopNEntries. + +If the value of nlMatrixTopNControlRateBase is equal to +nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + +shall be assigned to entries with decreasing values of +nlMatrixTopNOctetRate until index N is assigned or there are +no more nlMatrixTopNEntries.""", + }, # column + "nlMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The protocolDirLocalIndex of the network-layer protocol of +this entry's network address.""", + }, # column + "nlMatrixTopNSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """The network-layer address of the source host in this +conversation. + +This is represented as an octet string with +specific semantics and length as identified +by the associated nlMatrixTopNProtocolDirLocalIndex. + +For example, if the protocolDirLocalIndex indicates an +encapsulation of IP, this object is encoded as a length +octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixTopNDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """The network-layer address of the destination host in this +conversation. + +This is represented as an octet string with +specific semantics and length as identified +by the associated nlMatrixTopNProtocolDirLocalIndex. + +For example, if the nlMatrixTopNProtocolDirLocalIndex +indicates an encapsulation of IP, this object is encoded as a +length octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "nlMatrixTopNPktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of packets seen from the source host +to the destination host during this sampling interval, counted +using the rules for counting the nlMatrixSDPkts object. +If the value of nlMatrixTopNControlRateBase is +nlMatrixTopNPkts, this variable will be used to sort this +report.""", + }, # column + "nlMatrixTopNReversePktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of packets seen from the destination host to the +source host during this sampling interval, counted +using the rules for counting the nlMatrixSDPkts object. (Note +that the corresponding nlMatrixSDPkts object selected is the +one whose source address is equal to nlMatrixTopNDestAddress +and whose destination address is equal to +nlMatrixTopNSourceAddress.) + +Note that if the value of nlMatrixTopNControlRateBase is equal +to nlMatrixTopNPkts, the sort of topN entries is based +entirely on nlMatrixTopNPktRate, and not on the value of this +object.""", + }, # column + "nlMatrixTopNOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of octets seen from the source host +to the destination host during this sampling interval, counted +using the rules for counting the nlMatrixSDOctets object. If +the value of nlMatrixTopNControlRateBase is +nlMatrixTopNOctets, this variable will be used to sort this +report.""", + }, # column + "nlMatrixTopNReverseOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of octets seen from the destination host to the +source host during this sampling interval, counted +using the rules for counting the nlMatrixDSOctets object. (Note +that the corresponding nlMatrixSDOctets object selected is the +one whose source address is equal to nlMatrixTopNDestAddress +and whose destination address is equal to +nlMatrixTopNSourceAddress.) + +Note that if the value of nlMatrixTopNControlRateBase is equal +to nlMatrixTopNOctets, the sort of topN entries is based +entirely on nlMatrixTopNOctetRate, and not on the value of +this object.""", + }, # column + "alHost" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16", + }, # node + "alHostTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1", + "status" : "current", + "description" : + """A collection of statistics for a particular protocol from a +particular network address that has been discovered on an +interface of this device. + +The probe will populate this table for all protocols in the +protocol directory table whose value of +protocolDirHostConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirHostConfig value of supportedOff(2). + + + +The probe will add to this table all addresses +seen as the source or destination address in all packets with +no MAC errors and will increment octet and packet counts in +the table for all packets with no MAC errors. Further, +entries will only be added to this table if their address +exists in the nlHostTable and will be deleted from this table +if their address is deleted from the nlHostTable.""", + }, # table + "alHostEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + "alHostTimeMark", + "protocolDirLocalIndex", + "nlHostAddress", + "protocolDirLocalIndex", + ], + "description" : + """A conceptual row in the alHostTable. + +The hlHostControlIndex value in the index identifies the +hlHostControlEntry on whose behalf this entry was created. +The first protocolDirLocalIndex value in the index identifies +the network-layer protocol of the address. +The nlHostAddress value in the index identifies the network- +layer address of this entry. +The second protocolDirLocalIndex value in the index identifies +the protocol that is counted by this entry. + +An example of the indexing in this entry is +alHostOutPkts.1.783495.18.4.128.2.6.6.34. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alHostTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alHostInPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type without errors +transmitted to this address since it was added to the +alHostTable. Note that this is the number of link-layer +packets, so if a single network-layer packet is fragmented +into several link-layer frames, this counter is incremented +several times.""", + }, # column + "alHostOutPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type without errors +transmitted by this address since it was added to the +alHostTable. Note that this is the number of link-layer +packets, so if a single network-layer packet is fragmented +into several link-layer frames, this counter is incremented +several times.""", + }, # column + "alHostInOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted to this address +of this protocol type since it was added to the +alHostTable (excluding framing bits, but including +FCS octets), excluding octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alHostOutOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted by this address +of this protocol type since it was added to the +alHostTable (excluding framing bits, but including +FCS octets), excluding octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alHostCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "alMatrix" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17", + }, # node + "alMatrixSDTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1", + "status" : "current", + "description" : + """A list of application traffic matrix entries that collect +statistics for conversations of a particular protocol between +two network-level addresses. This table is indexed first by +the source address and then by the destination address to make +it convenient to collect all statistics from a particular +address. + +The probe will populate this table for all protocols in the +protocol directory table whose value of + + + +protocolDirMatrixConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirMatrixConfig value of supportedOff(2). + +The probe will add to this table all pairs of addresses for +all protocols seen in all packets with no MAC errors and will +increment octet and packet counts in the table for all packets +with no MAC errors. Further, entries will only be added to +this table if their address pair exists in the nlMatrixSDTable +and will be deleted from this table if the address pair is +deleted from the nlMatrixSDTable.""", + }, # table + "alMatrixSDEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "alMatrixSDTimeMark", + "protocolDirLocalIndex", + "nlMatrixSDSourceAddress", + "nlMatrixSDDestAddress", + "protocolDirLocalIndex", + ], + "description" : + """A conceptual row in the alMatrixSDTable. + +The hlMatrixControlIndex value in the index identifies the +hlMatrixControlEntry on whose behalf this entry was created. +The first protocolDirLocalIndex value in the index identifies +the network-layer protocol of the nlMatrixSDSourceAddress and +nlMatrixSDDestAddress. +The nlMatrixSDSourceAddress value in the index identifies the +network-layer address of the source host in this conversation. +The nlMatrixSDDestAddress value in the index identifies the +network-layer address of the destination host in this +conversation. +The second protocolDirLocalIndex value in the index identifies +the protocol that is counted by this entry. + +An example of the indexing of this entry is +alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alMatrixSDTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alMatrixSDPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type without errors +transmitted from the source address to the destination address +since this entry was added to the alMatrixSDTable. Note that +this is the number of link-layer packets, so if a single +network-layer packet is fragmented into several link-layer +frames, this counter is incremented several times.""", + }, # column + "alMatrixSDOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets in packets of this protocol type +transmitted from the source address to the destination address +since this entry was added to the alMatrixSDTable (excluding +framing bits, but including FCS octets), excluding octets +in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alMatrixSDCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "alMatrixDSTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2", + "status" : "current", + "description" : + """A list of application traffic matrix entries that collect +statistics for conversations of a particular protocol between +two network-level addresses. This table is indexed first by +the destination address and then by the source address to make +it convenient to collect all statistics to a particular +address. + +The probe will populate this table for all protocols in the +protocol directory table whose value of +protocolDirMatrixConfig is equal to supportedOn(3), and +will delete any entries whose protocolDirEntry is deleted or +has a protocolDirMatrixConfig value of supportedOff(2). + +The probe will add to this table all pairs of addresses for +all protocols seen in all packets with no MAC errors and will +increment octet and packet counts in the table for all packets +with no MAC errors. Further, entries will only be added to +this table if their address pair exists in the nlMatrixDSTable +and will be deleted from this table if the address pair is +deleted from the nlMatrixDSTable.""", + }, # table + "alMatrixDSEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "alMatrixDSTimeMark", + "protocolDirLocalIndex", + "nlMatrixDSDestAddress", + "nlMatrixDSSourceAddress", + "protocolDirLocalIndex", + ], + "description" : + """A conceptual row in the alMatrixDSTable. + +The hlMatrixControlIndex value in the index identifies the +hlMatrixControlEntry on whose behalf this entry was created. +The first protocolDirLocalIndex value in the index identifies +the network-layer protocol of the alMatrixDSSourceAddress and +alMatrixDSDestAddress. +The nlMatrixDSDestAddress value in the index identifies the +network-layer address of the destination host in this + + + +conversation. +The nlMatrixDSSourceAddress value in the index identifies the +network-layer address of the source host in this conversation. +The second protocolDirLocalIndex value in the index identifies +the protocol that is counted by this entry. + +An example of the indexing of this entry is +alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alMatrixDSTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alMatrixDSPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type without errors +transmitted from the source address to the destination address +since this entry was added to the alMatrixDSTable. Note that +this is the number of link-layer packets, so if a single +network-layer packet is fragmented into several link-layer +frames, this counter is incremented several times.""", + }, # column + "alMatrixDSOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets in packets of this protocol type +transmitted from the source address to the destination address +since this entry was added to the alMatrixDSTable (excluding +framing bits, but including FCS octets), excluding octets +in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alMatrixDSCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this entry was last activated. +This can be used by the management station to ensure that the +entry has not been deleted and recreated between polls.""", + }, # column + "alMatrixTopNControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3", + "status" : "current", + "description" : + """A set of parameters that control the creation of a +report of the top N matrix entries according to +a selected metric.""", + }, # table + "alMatrixTopNControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "alMatrixTopNControlIndex", + ], + "description" : + """A conceptual row in the alMatrixTopNControlTable. + +An example of the indexing of this table is +alMatrixTopNControlDuration.3""", + }, # row + "alMatrixTopNControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry +in the alMatrixTopNControlTable. Each such +entry defines one topN report prepared for +one interface.""", + }, # column + "alMatrixTopNControlMatrixIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "description" : + """The alMatrix[SD/DS] table for which a topN report will be +prepared on behalf of this entry. The alMatrix[SD/DS] table +is identified by the value of the hlMatrixControlIndex +for that table - that value is used here to identify the +particular table. + +This object may not be modified if the associated +alMatrixTopNControlStatus object is equal to active(1).""", + }, # column + "alMatrixTopNControlRateBase" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "alMatrixTopNTerminalsPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "alMatrixTopNTerminalsOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alMatrixTopNAllPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "alMatrixTopNAllOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "alMatrixTopNTerminalsHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "alMatrixTopNTerminalsHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "alMatrixTopNAllHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "alMatrixTopNAllHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "8" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object controls which alMatrix[SD/DS] entry that the +alMatrixTopNEntries are sorted by, which view of the matrix +table that will be used, as well as which table the results +will be reported in. + +The values alMatrixTopNTerminalsPkts, +alMatrixTopNTerminalsOctets, +alMatrixTopNTerminalsHighCapacityPkts, and +alMatrixTopNTerminalsHighCapacityOctets cause collection +only from protocols that have no child protocols that are +counted. The values alMatrixTopNAllPkts, +alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and +alMatrixTopNAllHighCapacityOctets cause collection from all +alMatrix entries. + +This object may not be modified if the associated +alMatrixTopNControlStatus object is equal to active(1).""", + }, # column + "alMatrixTopNControlTimeRemaining" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "description" : + """The number of seconds left in the report currently +being collected. When this object is modified by +the management station, a new collection is started, +possibly aborting a currently running report. The +new value is used as the requested duration of this +report and is immediately loaded into the associated +alMatrixTopNControlDuration object. + +When the report finishes, the probe will automatically +start another collection with the same initial value +of alMatrixTopNControlTimeRemaining. Thus, the management +station may simply read the resulting reports repeatedly, +checking the startTime and duration each time to ensure that a +report was not missed or that the report parameters were not +changed. + +While the value of this object is non-zero, it decrements +by one per second until it reaches zero. At the time + + + +that this object decrements to zero, the report is made +accessible in the alMatrixTopNTable, overwriting any report +that may be there. + +When this object is modified by the management station, any +associated entries in the alMatrixTopNTable shall be deleted. + +(Note that this is a different algorithm than the one used +in the hostTopNTable).""", + }, # column + "alMatrixTopNControlGeneratedReports" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of reports that have been generated by this entry.""", + }, # column + "alMatrixTopNControlDuration" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """The number of seconds that this report has collected +during the last sampling interval. + +When the associated alMatrixTopNControlTimeRemaining object +is set, this object shall be set by the probe to the +same value and shall not be modified until the next +time the alMatrixTopNControlTimeRemaining is set. + +This value shall be zero if no reports have been +requested for this alMatrixTopNControlEntry.""", + }, # column + "alMatrixTopNControlRequestedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "150", + "description" : + """The maximum number of matrix entries requested for this report. + +When this object is created or modified, the probe +should set alMatrixTopNControlGrantedSize as closely to this +object as possible for the particular probe +implementation and available resources.""", + }, # column + "alMatrixTopNControlGrantedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The maximum number of matrix entries in this report. + +When the associated alMatrixTopNControlRequestedSize object +is created or modified, the probe should set this +object as closely to the requested value as +possible for the particular implementation and +available resources. The probe must not lower this +value except as a side-effect of a set to the associated +alMatrixTopNControlRequestedSize object. + +If the value of alMatrixTopNControlRateBase is equal to +alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the +next topN report is generated, matrix entries with the highest +value of alMatrixTopNPktRate shall be placed in this table in +decreasing order of this rate until there is no more room or +until there are no more matrix entries. + +If the value of alMatrixTopNControlRateBase is equal to +alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the +next topN report is generated, matrix entries with the highest +value of alMatrixTopNOctetRate shall be placed in this table +in decreasing order of this rate until there is no more room +or until there are no more matrix entries. + +It is an implementation-specific matter how entries with the +same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are +sorted. It is also an implementation-specific matter as to +whether zero-valued entries are available.""", + }, # column + "alMatrixTopNControlStartTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this topN report was +last started. In other words, this is the time that +the associated alMatrixTopNControlTimeRemaining object +was modified to start the requested report or the time +the report was last automatically (re)started. + + + +This object may be used by the management station to +determine whether a report was missed.""", + }, # column + "alMatrixTopNControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "alMatrixTopNControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this alMatrixTopNControlEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all +associated entries in the alMatrixTopNTable shall be +deleted by the agent.""", + }, # column + "alMatrixTopNTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4", + "status" : "current", + "description" : + """A set of statistics for those application-layer matrix +entries that have counted the highest number of octets or +packets.""", + }, # table + "alMatrixTopNEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1", + "status" : "current", + "linkage" : [ + "alMatrixTopNControlIndex", + "alMatrixTopNIndex", + ], + "description" : + """A conceptual row in the alMatrixTopNTable. + +The alMatrixTopNControlIndex value in the index identifies +the alMatrixTopNControlEntry on whose behalf this entry was +created. + + + +An example of the indexing of this table is +alMatrixTopNPktRate.3.10""", + }, # row + "alMatrixTopNIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry in +the alMatrixTopNTable among those in the same report. + +This index is between 1 and N, where N is the +number of entries in this report. + +If the value of alMatrixTopNControlRateBase is equal to +alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing +values of alMatrixTopNIndex shall be assigned to entries with +decreasing values of alMatrixTopNPktRate until index N is +assigned or there are no more alMatrixTopNEntries. + +If the value of alMatrixTopNControlRateBase is equal to +alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, +increasing values of alMatrixTopNIndex shall be assigned to +entries with decreasing values of alMatrixTopNOctetRate until +index N is assigned or there are no more alMatrixTopNEntries.""", + }, # column + "alMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The protocolDirLocalIndex of the network-layer protocol of +this entry's network address.""", + }, # column + "alMatrixTopNSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """The network-layer address of the source host in this +conversation. + +This is represented as an octet string with +specific semantics and length as identified +by the associated alMatrixTopNProtocolDirLocalIndex. + +For example, if the alMatrixTopNProtocolDirLocalIndex +indicates an encapsulation of IP, this object is encoded as a +length octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "alMatrixTopNDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """The network-layer address of the destination host in this +conversation. + +This is represented as an octet string with +specific semantics and length as identified +by the associated alMatrixTopNProtocolDirLocalIndex. + +For example, if the alMatrixTopNProtocolDirLocalIndex +indicates an encapsulation of IP, this object is encoded as a +length octet of 4, followed by the 4 octets of the IP address, +in network byte order.""", + }, # column + "alMatrixTopNAppProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The type of the protocol counted by this matrix entry.""", + }, # column + "alMatrixTopNPktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of packets seen of this protocol from the source +host to the destination host during this sampling interval, +counted using the rules for counting the alMatrixSDPkts +object. + +If the value of alMatrixTopNControlRateBase is +alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this +variable will be used to sort this report.""", + }, # column + "alMatrixTopNReversePktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of packets seen of this protocol from the +destination host to the source host during this sampling +interval, counted using the rules for counting the +alMatrixDSPkts object. (Note that the corresponding +alMatrixSDPkts object selected is the one whose source address +is equal to alMatrixTopNDestAddress and whose destination +address is equal to alMatrixTopNSourceAddress.) + +Note that if the value of alMatrixTopNControlRateBase is equal +to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort +of topN entries is based entirely on alMatrixTopNPktRate, and +not on the value of this object.""", + }, # column + "alMatrixTopNOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of octets seen of this protocol from the source +host to the destination host during this sampling interval, +counted using the rules for counting the alMatrixSDOctets +object. + +If the value of alMatrixTopNControlRateBase is +alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this +variable will be used to sort this report.""", + }, # column + "alMatrixTopNReverseOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The number of octets seen of this protocol from the +destination host to the source host during this sampling +interval, counted using the rules for counting the +alMatrixDSOctets object. (Note that the corresponding +alMatrixSDOctets object selected is the one whose source +address is equal to alMatrixTopNDestAddress and whose +destination address is equal to alMatrixTopNSourceAddress.) + +Note that if the value of alMatrixTopNControlRateBase is equal +to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the +sort of topN entries is based entirely on +alMatrixTopNOctetRate, and not on the value of this object.""", + }, # column + "usrHistory" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18", + }, # node + "usrHistoryControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1", + "status" : "current", + "description" : + """A list of data-collection configuration entries.""", + }, # table + "usrHistoryControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + ], + "description" : + """A list of parameters that set up a group of user-defined +MIB objects to be sampled periodically (called a +bucket-group). + +For example, an instance of usrHistoryControlInterval +might be named usrHistoryControlInterval.1""", + }, # row + "usrHistoryControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry in the +usrHistoryControlTable. Each such entry defines a +set of samples at a particular interval for a specified +set of MIB instances available from the managed system.""", + }, # column + "usrHistoryControlObjects" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "description" : + """The number of MIB objects to be collected +in the portion of usrHistoryTable associated with this +usrHistoryControlEntry. + +This object may not be modified if the associated instance +of usrHistoryControlStatus is equal to active(1).""", + }, # column + "usrHistoryControlBucketsRequested" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "50", + "description" : + """The requested number of discrete time intervals +over which data is to be saved in the part of the +usrHistoryTable associated with this usrHistoryControlEntry. + +When this object is created or modified, the probe +should set usrHistoryControlBucketsGranted as closely to +this object as possible for the particular probe +implementation and available resources.""", + }, # column + "usrHistoryControlBucketsGranted" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readonly", + "description" : + """The number of discrete sampling intervals +over which data shall be saved in the part of +the usrHistoryTable associated with this +usrHistoryControlEntry. + +When the associated usrHistoryControlBucketsRequested +object is created or modified, the probe should set +this object as closely to the requested value as +possible for the particular probe implementation and +available resources. The probe must not lower this +value except as a result of a modification to the associated +usrHistoryControlBucketsRequested object. + +The associated usrHistoryControlBucketsRequested object +should be set before or at the same time as this object +to allow the probe to accurately estimate the resources +required for this usrHistoryControlEntry. + +There will be times when the actual number of buckets +associated with this entry is less than the value of +this object. In this case, at the end of each sampling +interval, a new bucket will be added to the usrHistoryTable. + +When the number of buckets reaches the value of this object +and a new bucket is to be added to the usrHistoryTable, +the oldest bucket associated with this usrHistoryControlEntry +shall be deleted by the agent so that the new bucket can be +added. + +When the value of this object changes to a value less than +the current value, entries are deleted from the +usrHistoryTable associated with this usrHistoryControlEntry. +Enough of the oldest of these entries shall be deleted by the +agent so that their number remains less than or equal to the +new value of this object. + +When the value of this object changes to a value greater +than the current value, the number of associated usrHistory +entries may be allowed to grow.""", + }, # column + "usrHistoryControlInterval" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "description" : + """The interval in seconds over which the data is +sampled for each bucket in the part of the usrHistory +table associated with this usrHistoryControlEntry. + +Because the counters in a bucket may overflow at their +maximum value with no indication, a prudent manager will +take into account the possibility of overflow in any of +the associated counters. It is important to consider the +minimum time in which any counter could overflow on a +particular media type and to set the usrHistoryControlInterval +object to a value less than this interval. + +This object may not be modified if the associated +usrHistoryControlStatus object is equal to active(1).""", + }, # column + "usrHistoryControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "usrHistoryControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this variable history control entry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value. + +If this object is not equal to active(1), all associated +entries in the usrHistoryTable shall be deleted.""", + }, # column + "usrHistoryObjectTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2", + "status" : "current", + "description" : + """A list of data-collection configuration entries.""", + }, # table + "usrHistoryObjectEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + "usrHistoryObjectIndex", + ], + "description" : + """A list of MIB instances to be sampled periodically. + +Entries in this table are created when an associated +usrHistoryControlObjects object is created. + +The usrHistoryControlIndex value in the index is +that of the associated usrHistoryControlEntry. + +For example, an instance of usrHistoryObjectVariable might be +usrHistoryObjectVariable.1.3""", + }, # row + "usrHistoryObjectIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index used to uniquely identify an entry in the +usrHistoryObject table. Each such entry defines a +MIB instance to be collected periodically.""", + }, # column + "usrHistoryObjectVariable" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readwrite", + "description" : + """The object identifier of the particular variable to be + + + +sampled. + +Only variables that resolve to an ASN.1 primitive type of +Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be +sampled. + +Because SNMP access control is articulated entirely in terms +of the contents of MIB views, no access control mechanism +exists that can restrict the value of this object to identify +only those objects that exist in a particular MIB view. +Because there is thus no acceptable means of restricting the +read access that could be obtained through the user history +mechanism, the probe must only grant write access to this +object in those views that have read access to all objects on +the probe. See USM [RFC3414] and VACM [RFC3415] for more +information. + +During a set operation, if the supplied variable name is not +available in the selected MIB view, a badValue error must be +returned. + +This object may not be modified if the associated +usrHistoryControlStatus object is equal to active(1).""", + }, # column + "usrHistoryObjectSampleType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "absoluteValue" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "deltaValue" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """The method of sampling the selected variable for storage in +the usrHistoryTable. + +If the value of this object is absoluteValue(1), the value of +the selected variable will be copied directly into the history +bucket. + +If the value of this object is deltaValue(2), the value of the +selected variable at the last sample will be subtracted from +the current value, and the difference will be stored in the +history bucket. If the associated usrHistoryObjectVariable +instance could not be obtained at the previous sample +interval, then a delta sample is not possible, and the value +of the associated usrHistoryValStatus object for this interval +will be valueNotAvailable(1). + + + +This object may not be modified if the associated +usrHistoryControlStatus object is equal to active(1).""", + }, # column + "usrHistoryTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3", + "status" : "current", + "description" : + """A list of user-defined history entries.""", + }, # table + "usrHistoryEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + "usrHistorySampleIndex", + "usrHistoryObjectIndex", + ], + "description" : + """A historical sample of user-defined variables. This sample +is associated with the usrHistoryControlEntry that set up the +parameters for a regular collection of these samples. + +The usrHistoryControlIndex value in the index identifies the +usrHistoryControlEntry on whose behalf this entry was created. +The usrHistoryObjectIndex value in the index identifies the +usrHistoryObjectEntry on whose behalf this entry was created. + +For example, an instance of usrHistoryAbsValue, which represents +the 14th sample of a variable collected as specified by +usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, +would be named usrHistoryAbsValue.1.14.5""", + }, # row + "usrHistorySampleIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies the particular sample this +entry represents among all samples associated with the same +usrHistoryControlEntry. This index starts at 1 and increases +by one as each new sample is taken.""", + }, # column + "usrHistoryIntervalStart" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the start of the interval over +which this sample was measured. If the probe keeps track of +the time of day, it should start the first sample of the +history at a time such that when the next hour of the day +begins, a sample is started at that instant. + +Note that following this rule may require that the probe delay +collecting the first sample of the history, as each sample +must be of the same interval. Also note that the sample that +is currently being collected is not accessible in this table +until the end of its interval.""", + }, # column + "usrHistoryIntervalEnd" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the end of the interval over which +this sample was measured.""", + }, # column + "usrHistoryAbsValue" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The absolute value (i.e., unsigned value) of the +user-specified statistic during the last sampling period. The +value during the current sampling period is not made available +until the period is completed. + +To obtain the true value for this sampling interval, the +associated instance of usrHistoryValStatus must be checked, +and usrHistoryAbsValue adjusted as necessary. + + + + +If the MIB instance could not be accessed during the sampling +interval, then this object will have a value of zero, and the +associated instance of usrHistoryValStatus will be set to +'valueNotAvailable(1)'. + +The access control check prescribed in the definition of +usrHistoryObjectVariable SHOULD be checked for each sampling +interval. If this check determines that access should not be +allowed, then this object will have a value of zero, and the +associated instance of usrHistoryValStatus will be set to +'valueNotAvailable(1)'.""", + }, # column + "usrHistoryValStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "valueNotAvailable" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "valuePositive" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "valueNegative" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readonly", + "description" : + """This object indicates the validity and sign of the data in +the associated instance of usrHistoryAbsValue. + +If the MIB instance could not be accessed during the sampling +interval, then 'valueNotAvailable(1)' will be returned. + +If the sample is valid and the actual value of the sample is +greater than or equal to zero, then 'valuePositive(2)' is +returned. + +If the sample is valid and the actual value of the sample is +less than zero, 'valueNegative(3)' will be returned. The +associated instance of usrHistoryAbsValue should be multiplied +by -1 to obtain the true sample value.""", + }, # column + "probeConfig" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19", + }, # node + "probeCapabilities" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Bits", + "etherStats" : { + "nodetype" : "namednumber", + "number" : "0" + }, + "historyControl" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "etherHistory" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alarm" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "hosts" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "hostTopN" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "matrix" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "filter" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "capture" : { + "nodetype" : "namednumber", + "number" : "8" + }, + "event" : { + "nodetype" : "namednumber", + "number" : "9" + }, + "tokenRingMLStats" : { + "nodetype" : "namednumber", + "number" : "10" + }, + "tokenRingPStats" : { + "nodetype" : "namednumber", + "number" : "11" + }, + "tokenRingMLHistory" : { + "nodetype" : "namednumber", + "number" : "12" + }, + "tokenRingPHistory" : { + "nodetype" : "namednumber", + "number" : "13" + }, + "ringStation" : { + "nodetype" : "namednumber", + "number" : "14" + }, + "ringStationOrder" : { + "nodetype" : "namednumber", + "number" : "15" + }, + "ringStationConfig" : { + "nodetype" : "namednumber", + "number" : "16" + }, + "sourceRouting" : { + "nodetype" : "namednumber", + "number" : "17" + }, + "protocolDirectory" : { + "nodetype" : "namednumber", + "number" : "18" + }, + "protocolDistribution" : { + "nodetype" : "namednumber", + "number" : "19" + }, + "addressMapping" : { + "nodetype" : "namednumber", + "number" : "20" + }, + "nlHost" : { + "nodetype" : "namednumber", + "number" : "21" + }, + "nlMatrix" : { + "nodetype" : "namednumber", + "number" : "22" + }, + "alHost" : { + "nodetype" : "namednumber", + "number" : "23" + }, + "alMatrix" : { + "nodetype" : "namednumber", + "number" : "24" + }, + "usrHistory" : { + "nodetype" : "namednumber", + "number" : "25" + }, + "probeConfig" : { + "nodetype" : "namednumber", + "number" : "26" + }, + }, + }, + "access" : "readonly", + "description" : + """An indication of the RMON MIB groups supported +on at least one interface by this probe.""", + }, # scalar + "probeSoftwareRev" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "15" + }, + ], + "range" : { + "min" : "0", + "max" : "15" + }, + }, + }, + "access" : "readonly", + "description" : + """The software revision of this device. This string will have +a zero length if the revision is unknown.""", + }, # scalar + "probeHardwareRev" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "31" + }, + ], + "range" : { + "min" : "0", + "max" : "31" + }, + }, + }, + "access" : "readonly", + "description" : + """The hardware revision of this device. This string will have +a zero length if the revision is unknown.""", + }, # scalar + "probeDateTime" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "0", + "max" : "0" + }, + { + "min" : "8", + "max" : "8" + }, + { + "min" : "11", + "max" : "11" + }, + ], + "range" : { + "min" : "0", + "max" : "11" + }, + }, + }, + "access" : "readwrite", + "description" : + """Probe's current date and time. + +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 +time zone information (fields 8-10) is not +present, and that if no time information is known, the +null string is returned.""", + }, # scalar + "probeResetControl" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "running" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "warmBoot" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "coldBoot" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """Setting this object to warmBoot(2) causes the device to +restart the application software with current configuration +parameters saved in non-volatile memory. Setting this +object to coldBoot(3) causes the device to reinitialize +configuration parameters in non-volatile memory to default +values and to restart the application software. When the device +is running normally, this variable has a value of +running(1).""", + }, # scalar + "probeDownloadFile" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readwrite", + "description" : + """The file name to be downloaded from the TFTP server when a +download is next requested via this MIB. This value is set to +the zero-length string when no file name has been specified. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadTFTPServer" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.7", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The IP address of the TFTP server that contains the boot +image to load when a download is next requested via this MIB. +This value is set to '0.0.0.0' when no IP address has been + + + +specified. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadAction" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.8", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notDownloading" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "downloadToPROM" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "downloadToRAM" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """When this object is set to downloadToRAM(3) or +downloadToPROM(2), the device will discontinue its +normal operation and begin download of the image specified +by probeDownloadFile from the server specified by +probeDownloadTFTPServer using the TFTP protocol. If +downloadToRAM(3) is specified, the new image is copied +to RAM only (the old image remains unaltered in the flash +EPROM). If downloadToPROM(2) is specified, +the new image is written to the flash EPROM +memory after its checksum has been verified to be correct. +When the download process is completed, the device will +warm boot to restart the newly loaded application. +When the device is not downloading, this object will have +a value of notDownloading(1). + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadStatus" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.9", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "downloadSuccess" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "downloadStatusUnknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "downloadGeneralError" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "downloadNoResponseFromServer" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "downloadChecksumError" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "downloadIncompatibleImage" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "downloadTftpFileNotFound" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "downloadTftpAccessViolation" : { + "nodetype" : "namednumber", + "number" : "8" + }, + }, + }, + "access" : "readonly", + "description" : + """The status of the last download procedure, if any. This +object will have a value of downloadStatusUnknown(2) if no +download process has been performed. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "serialConfigTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10", + "status" : "deprecated", + "description" : + """A table of serial interface configuration entries. This data +will be stored in non-volatile memory and preserved across +probe resets or power loss. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # table + "serialConfigEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "ifIndex", + ], + "description" : + """A set of configuration parameters for a particular +serial interface on this device. If the device has no serial +interfaces, this table is empty. + +The index is composed of the ifIndex assigned to this serial +line interface.""", + }, # row + "serialMode" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "direct" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "modem" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "default" : "direct", + "description" : + """The type of incoming connection to be expected on this +serial interface.""", + }, # column + "serialProtocol" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "slip" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "ppp" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "default" : "slip", + "description" : + """The type of data link encapsulation to be used on this +serial interface.""", + }, # column + "serialTimeout" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "300", + "description" : + """This timeout value is used when the Management Station has +initiated the conversation over the serial link. This variable +represents the number of seconds of inactivity allowed before +terminating the connection on this serial interface. Use the +serialDialoutTimeout in the case where the probe has initiated +the connection for the purpose of sending a trap.""", + }, # column + "serialModemInitString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that controls how a modem attached to this +serial interface should be initialized. The initialization +is performed once during startup and again after each +connection is terminated if the associated serialMode has the +value of modem(2). + +A control string that is appropriate for a wide variety of +modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'.""", + }, # column + "serialModemHangUpString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to disconnect a modem +connection on this serial interface. This object is only +meaningful if the associated serialMode has the value +of modem(2). + +A control string that is appropriate for a wide variety of +modems is: '^d2^s+++^d2^sATH0^M^d2'.""", + }, # column + "serialModemConnectResp" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """An ASCII string containing substrings that describe the +expected modem connection response code and associated bps +rate. The substrings are delimited by the first character +in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 +will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 +The agent will use the information in this string to adjust +the bps rate of this serial interface once a modem connection +is established. + +A value that is appropriate for a wide variety of modems is: + + + +'/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ +CONNECT 19200/19200/CONNECT 38400/38400/'.""", + }, # column + "serialModemNoConnectResp" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """An ASCII string containing response codes that may be +generated by a modem to report the reason why a connection +attempt has failed. The response codes are delimited by +the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + +If one of these response codes is received via this serial +interface while attempting to make a modem connection, +the agent will issue the hang up command as specified by +serialModemHangUpString. + +A value that is appropriate for a wide variety of modems is: +'/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'.""", + }, # column + "serialDialoutTimeout" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.8", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "20", + "description" : + """This timeout value is used when the probe initiates the +serial connection with the intention of contacting a +management station. This variable represents the number +of seconds of inactivity allowed before terminating the +connection on this serial interface.""", + }, # column + "serialStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.9", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this serialConfigEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value.""", + }, # column + "netConfigTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11", + "status" : "deprecated", + "description" : + """A table of netConfigEntries. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # table + "netConfigEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "ifIndex", + ], + "description" : + """A set of configuration parameters for a particular +network interface on this device. If the device has no network +interface, this table is empty. + +The index is composed of the ifIndex assigned to the +corresponding interface.""", + }, # row + "netConfigIPAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The IP address of this Net interface. The default value +for this object is 0.0.0.0. If either the netConfigIPAddress +or netConfigSubnetMask is 0.0.0.0, then when the device +boots, it may use BOOTP to try to figure out what these +values should be. If BOOTP fails before the device +can talk on the network, this value must be configured +(e.g., through a terminal attached to the device). If BOOTP is +used, care should be taken to not send BOOTP broadcasts too +frequently and to eventually send them very infrequently if no +replies are received.""", + }, # column + "netConfigSubnetMask" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The subnet mask of this Net interface. The default value +for this object is 0.0.0.0. If either the netConfigIPAddress +or netConfigSubnetMask is 0.0.0.0, then when the device +boots, it may use BOOTP to try to figure out what these +values should be. If BOOTP fails before the device +can talk on the network, this value must be configured +(e.g., through a terminal attached to the device). If BOOTP is +used, care should be taken to not send BOOTP broadcasts too +frequently and to eventually send them very infrequently if no +replies are received.""", + }, # column + "netConfigStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this netConfigEntry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value.""", + }, # column + "netDefaultGateway" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.12", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The IP Address of the default gateway. If this value is +undefined or unknown, it shall have the value 0.0.0.0.""", + }, # scalar + "trapDestTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13", + "status" : "deprecated", + "description" : + """A list of trap destination entries.""", + }, # table + "trapDestEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "trapDestIndex", + ], + "description" : + """This entry includes a destination IP address to which +traps are sent for this community.""", + }, # row + "trapDestIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A value that uniquely identifies this trapDestEntry.""", + }, # column + "trapDestCommunity" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readwrite", + "description" : + """A community to which this destination address belongs. +This entry is associated with any eventEntries in the RMON +MIB whose value of eventCommunity is equal to the value of +this object. Every time an associated event entry sends a +trap due to an event, that trap will be sent to each + + + +address in the trapDestTable with a trapDestCommunity equal +to eventCommunity, as long as no access control mechanism +precludes it (e.g., VACM). + +This object may not be modified if the associated +trapDestStatus object is equal to active(1).""", + }, # column + "trapDestProtocol" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "ip" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "ipx" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """The protocol with which this trap is to be sent.""", + }, # column + "trapDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "OctetString"}, + }, + "access" : "readwrite", + "description" : + """The destination address for traps on behalf of this entry. + +If the associated trapDestProtocol object is equal to ip(1), +the encoding of this object is the same as the snmpUDPAddress +textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + +If the associated trapDestProtocol object is equal to ipx(2), +the encoding of this object is the same as the snmpIPXAddress +textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + +This object may not be modified if the associated + + + +trapDestStatus object is equal to active(1).""", + }, # column + "trapDestOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "trapDestStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this trap destination entry. + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value.""", + }, # column + "serialConnectionTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14", + "status" : "deprecated", + "description" : + """A list of serialConnectionEntries. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "serialConnectionEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "serialConnectIndex", + ], + "description" : + """Configuration for a SLIP link over a serial line.""", + }, # row + "serialConnectIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A value that uniquely identifies this serialConnection +entry.""", + }, # column + "serialConnectDestIpAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The IP Address that can be reached at the other end of this +serial connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "direct" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "modem" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "switch" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "modemSwitch" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "default" : "direct", + "description" : + """The type of outgoing connection to be made. If this object +has the value direct(1), then a direct serial connection +is assumed. If this object has the value modem(2), +then serialConnectDialString will be used to make a modem +connection. If this object has the value switch(3), +then serialConnectSwitchConnectSeq will be used to establish +the connection over a serial data switch, and +serialConnectSwitchDisconnectSeq will be used to terminate +the connection. If this object has the value +modem-switch(4), then a modem connection will be made first, +followed by the switch connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectDialString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to dial the phone +number in order to establish a modem connection. The +string should include the dialing prefix and suffix. For +example: '^s^MATD9,888-1234^M' will instruct the Probe +to send a carriage return, followed by the dialing prefix +'ATD', the phone number '9,888-1234', and a carriage +return as the dialing suffix. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectSwitchConnectSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to establish a +data switch connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectSwitchDisconnectSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to terminate a +data switch connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectSwitchResetSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to reset a data +switch in the event of a timeout. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.8", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "serialConnectStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.9", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of this serialConnectionEntry. + +If the manager attempts to set this object to active(1) when +the serialConnectType is set to modem(2) or modem-switch(4) +and the serialConnectDialString is a zero-length string or +cannot be correctly parsed as a ConnectString, the set +request will be rejected with badValue(3). + +If the manager attempts to set this object to active(1) when +the serialConnectType is set to switch(3) or modem-switch(4) +and the serialConnectSwitchConnectSeq, +the serialConnectSwitchDisconnectSeq, or + + + +the serialConnectSwitchResetSeq is a zero-length string +or cannot be correctly parsed as a ConnectString, the set +request will be rejected with badValue(3). + +An entry may not exist in the active state unless all +objects in the entry have an appropriate value.""", + }, # column + "rmonConformance" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20", + }, # node + "rmon2MIBCompliances" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1", + }, # node + "rmon2MIBGroups" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2", + }, # node + }, # nodes + + "groups" : { + "protocolDirectoryGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.1", + "status" : "current", + "members" : { + "protocolDirLastChange" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirDescr" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirAddressMapConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirHostConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirMatrixConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Lists the inventory of protocols the probe has the +capability of monitoring and allows the addition, deletion, +and configuration of entries in this list.""", + }, # group + "protocolDistributionGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.2", + "status" : "current", + "members" : { + "protocolDistControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistStatsPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistStatsOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Collects the relative amounts of octets and packets for the +different protocols detected on a network segment.""", + }, # group + "addressMapGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.3", + "status" : "current", + "members" : { + "addressMapInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapPhysicalAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapLastChange" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Lists MAC address to network address bindings discovered by +the probe and what interface they were last seen on.""", + }, # group + "nlHostGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.4", + "status" : "current", + "members" : { + "hlHostControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostInPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostInOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutMacNonUnicastPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Counts the amount of traffic sent from and to each network +address discovered by the probe. Note that while the +hlHostControlTable also has objects that control an optional +alHostTable, implementation of the alHostTable is not +required to fully implement this group.""", + }, # group + "nlMatrixGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.5", + "status" : "current", + "members" : { + "hlMatrixControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlMatrixIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlRateBase" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlTimeRemaining" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlGeneratedReports" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlDuration" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlRequestedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlGrantedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlStartTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNSourceAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNPktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNReversePktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNReverseOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Counts the amount of traffic sent between each pair of +network addresses discovered by the probe. Note that while +the hlMatrixControlTable also has objects that control +optional alMatrixTables, implementation of the +alMatrixTables is not required to fully implement this +group.""", + }, # group + "alHostGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.6", + "status" : "current", + "members" : { + "alHostInPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostOutPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostInOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostOutOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Counts the amount of traffic, by protocol, sent from and to +each network address discovered by the probe. Implementation +of this group requires implementation of the Network-Layer +Host Group.""", + }, # group + "alMatrixGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.7", + "status" : "current", + "members" : { + "alMatrixSDPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixSDOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixSDCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlMatrixIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlRateBase" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlTimeRemaining" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlGeneratedReports" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlDuration" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlRequestedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlGrantedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlStartTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNSourceAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNAppProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNPktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNReversePktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNReverseOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Counts the amount of traffic, by protocol, sent between each +pair of network addresses discovered by the +probe. Implementation of this group requires implementation +of the Network-Layer Matrix Group.""", + }, # group + "usrHistoryGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.8", + "status" : "current", + "members" : { + "usrHistoryControlObjects" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlBucketsRequested" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlBucketsGranted" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlInterval" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryObjectVariable" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryObjectSampleType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryIntervalStart" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryIntervalEnd" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryAbsValue" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryValStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """The usrHistoryGroup provides user-defined collection of +historical information from MIB objects on the probe.""", + }, # group + "probeInformationGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.9", + "status" : "current", + "members" : { + "probeCapabilities" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeSoftwareRev" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeHardwareRev" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group describes various operating parameters of the +probe and controls the local time of the probe.""", + }, # group + "probeConfigurationGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.10", + "status" : "deprecated", + "members" : { + "probeResetControl" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadFile" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadTFTPServer" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadAction" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialMode" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialProtocol" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialTimeout" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemInitString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemHangUpString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemConnectResp" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemNoConnectResp" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialDialoutTimeout" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigIPAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigSubnetMask" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netDefaultGateway" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestCommunity" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestProtocol" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectDestIpAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectDialString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchConnectSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchDisconnectSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchResetSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group controls the configuration of various operating +parameters of the probe. This group is not referenced by any +MODULE-COMPLIANCE macro because it is 'grandfathered' from +more recent MIB review rules that would require it.""", + }, # group + "rmon1EnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.11", + "status" : "current", + "members" : { + "historyControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hostControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hostControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "matrixControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "matrixControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "channelDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "channelCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "filterProtocolDirDataLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "filterProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations.""", + }, # group + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.12", + "status" : "current", + "members" : { + "etherStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "etherStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations.""", + }, # group + "rmon1TokenRingEnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.13", + "status" : "deprecated", + "members" : { + "tokenRingMLStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingMLStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingPStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingPStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "ringStationControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "ringStationControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "sourceRoutingStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "sourceRoutingStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations. This group is not referenced by any +MODULE-COMPLIANCE macro because it is 'grandfathered' from +more recent MIB review rules that would require it.""", + }, # group + }, # groups + + "compliances" : { + "rmon2MIBCompliance" : { + "nodetype" : "compliance", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1.1", + "status" : "current", + "description" : + """Describes the requirements for conformance to +the RMON2 MIB""", + "requires" : { + "protocolDirectoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "protocolDistributionGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "addressMapGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "usrHistoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "probeInformationGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "rmon1EnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EnhancementGroup is mandatory for systems +that implement RMON [RFC2819].""", + }, + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EthernetEnhancementGroup is optional and is +appropriate for systems that implement the Ethernet +group of RMON [RFC2819].""", + }, + }, # requires + "refinements" : { + "nlMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these +values of nlMatrixTopNControlRateBase.""", + }, + }, # refinements + + }, # compliance + "rmon2MIBApplicationLayerCompliance" : { + "nodetype" : "compliance", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1.2", + "status" : "current", + "description" : + """Describes the requirements for conformance to +the RMON2 MIB with Application-Layer Enhancements.""", + "requires" : { + "protocolDirectoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "protocolDistributionGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "addressMapGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "alHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "alMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "usrHistoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "probeInformationGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "rmon1EnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EnhancementGroup is mandatory for systems +that implement RMON [RFC2819].""", + }, + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EthernetEnhancementGroup is optional and is +appropriate for systems that implement the Ethernet +group of RMON [RFC2819].""", + }, + }, # requires + "refinements" : { + "nlMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these +values of nlMatrixTopNControlRateBase.""", + }, + "alMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "alMatrixTopNTerminalsPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "alMatrixTopNTerminalsOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alMatrixTopNAllPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "alMatrixTopNAllOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these + + + +values of alMatrixTopNControlRateBase.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/SNMPv2-MIB b/test/dumps/python/SNMPv2-MIB new file mode 100644 index 0000000..9fa5820 --- /dev/null +++ b/test/dumps/python/SNMPv2-MIB @@ -0,0 +1,1382 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python SNMPv2-MIB + +FILENAME = "../../mibs/ietf/SNMPv2-MIB" + +MIB = { + "moduleName" : "SNMPv2-MIB", + + "SNMPv2-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF SNMPv3 Working Group""", + "contact" : + """WG-EMail: snmpv3@lists.tislabs.com +Subscribe: snmpv3-request@lists.tislabs.com + +Co-Chair: Russ Mundy + Network Associates Laboratories +postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA +EMail: mundy@tislabs.com +phone: +1 301 947-7107 + +Co-Chair: David Harrington + Enterasys Networks +postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA +EMail: dbh@enterasys.com +phone: +1 603 337-2614 + +Editor: Randy Presuhn + BMC Software, Inc. +postal: 2141 North First Street + San Jose, CA 95131 + USA +EMail: randy_presuhn@bmc.com +phone: +1 408 546-1006""", + "description" : + """The MIB module for SNMP entities. + +Copyright (C) The Internet Society (2002). This +version of this MIB module is part of RFC 3418; +see the RFC itself for full legal notices.""", + "revisions" : ( + { + "date" : "2002-10-16 00:00", + "description" : + """This revision of this MIB module was published as +RFC 3418.""", + }, + { + "date" : "1995-11-09 00:00", + "description" : + """This revision of this MIB module was published as +RFC 1907.""", + }, + { + "date" : "1993-04-01 00:00", + "description" : + """The initial revision of this MIB module was published +as RFC 1450.""", + }, + ), + "identity node" : "snmpMIB", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "snmpModules"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "TestAndIncr"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + ), + + "nodes" : { + "system" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1", + }, # node + "sysDescr" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # scalar + "sysObjectID" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "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.424242, +it could assign the identifier 1.3.6.1.4.1.424242.1.1 +to its `Fred Router'.""", + }, # scalar + "sysUpTime" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "description" : + """The time (in hundredths of a second) since the +network management portion of the system was last +re-initialized.""", + }, # scalar + "sysContact" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # scalar + "sysName" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # scalar + "sysLocation" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # scalar + "sysServices" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readonly", + "description" : + """A value which indicates the set of services that this +entity may potentially offer. 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.""", + }, # scalar + "sysORLastChange" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time of the most recent +change in state or value of any instance of sysORID.""", + }, # scalar + "sysORTable" : { + "nodetype" : "table", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9", + "status" : "current", + "description" : + """The (conceptual) table listing the capabilities of +the local SNMP application acting as a command +responder with respect to various MIB modules. +SNMP entities having dynamically-configurable support +of MIB modules will have a dynamically-varying number +of conceptual rows.""", + }, # table + "sysOREntry" : { + "nodetype" : "row", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1", + "status" : "current", + "linkage" : [ + "sysORIndex", + ], + "description" : + """An entry (conceptual row) in the sysORTable.""", + }, # row + "sysORIndex" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """The auxiliary variable used for identifying instances +of the columnar objects in the sysORTable.""", + }, # column + "sysORID" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "description" : + """An authoritative identification of a capabilities +statement with respect to various MIB modules supported +by the local SNMP application acting as a command +responder.""", + }, # column + "sysORDescr" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "DisplayString"}, + }, + "access" : "readonly", + "description" : + """A textual description of the capabilities identified +by the corresponding instance of sysORID.""", + }, # column + "sysORUpTime" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time this conceptual +row was last instantiated.""", + }, # column + "snmp" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11", + }, # node + "snmpInPkts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of messages delivered to the SNMP +entity from the transport service.""", + }, # scalar + "snmpOutPkts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.2", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Messages which were +passed from the SNMP protocol entity to the +transport service.""", + }, # scalar + "snmpInBadVersions" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP messages which were delivered +to the SNMP entity and were for an unsupported SNMP +version.""", + }, # scalar + "snmpInBadCommunityNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of community-based SNMP messages (for +example, SNMPv1) delivered to the SNMP entity which +used an SNMP community name not known to said entity. +Also, implementations which authenticate community-based +SNMP messages using check(s) in addition to matching +the community name (for example, by also checking +whether the message originated from a transport address +allowed to use a specified community name) MAY include +in this value the number of messages which failed the +additional check(s). It is strongly RECOMMENDED that + + + +the documentation for any security model which is used +to authenticate community-based SNMP messages specify +the precise conditions that contribute to this value.""", + }, # scalar + "snmpInBadCommunityUses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of community-based SNMP messages (for +example, SNMPv1) delivered to the SNMP entity which +represented an SNMP operation that was not allowed for +the SNMP community named in the message. The precise +conditions under which this counter is incremented +(if at all) depend on how the SNMP entity implements +its access control mechanism and how its applications +interact with that access control mechanism. It is +strongly RECOMMENDED that the documentation for any +access control mechanism which is used to control access +to and visibility of MIB instrumentation specify the +precise conditions that contribute to this value.""", + }, # scalar + "snmpInASNParseErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of ASN.1 or BER errors encountered by +the SNMP entity when decoding received SNMP messages.""", + }, # scalar + "snmpInTooBigs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.8", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was +`tooBig'.""", + }, # scalar + "snmpInNoSuchNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.9", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was +`noSuchName'.""", + }, # scalar + "snmpInBadValues" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.10", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was +`badValue'.""", + }, # scalar + "snmpInReadOnlys" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.11", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was `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.""", + }, # scalar + "snmpInGenErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.12", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was `genErr'.""", + }, # scalar + "snmpInTotalReqVars" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.13", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "snmpInTotalSetVars" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.14", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "snmpInGetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.15", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Request PDUs which +have been accepted and processed by the SNMP +protocol entity.""", + }, # scalar + "snmpInGetNexts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.16", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Next PDUs which have been +accepted and processed by the SNMP protocol entity.""", + }, # scalar + "snmpInSetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.17", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Set-Request PDUs which +have been accepted and processed by the SNMP protocol +entity.""", + }, # scalar + "snmpInGetResponses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.18", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Response PDUs which +have been accepted and processed by the SNMP protocol +entity.""", + }, # scalar + "snmpInTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.19", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Trap PDUs which have been +accepted and processed by the SNMP protocol entity.""", + }, # scalar + "snmpOutTooBigs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.20", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was `tooBig.'""", + }, # scalar + "snmpOutNoSuchNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.21", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were generated +by the SNMP protocol entity and for which the value +of the error-status was `noSuchName'.""", + }, # scalar + "snmpOutBadValues" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.22", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was `badValue'.""", + }, # scalar + "snmpOutGenErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.24", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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 was `genErr'.""", + }, # scalar + "snmpOutGetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.25", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Request PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutGetNexts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.26", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Next PDUs which have +been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutSetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.27", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Set-Request PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutGetResponses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.28", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Response PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.29", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Trap PDUs which have +been generated by the SNMP protocol entity.""", + }, # scalar + "snmpEnableAuthenTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.30", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # scalar + "snmpSilentDrops" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.31", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of Confirmed Class PDUs (such as +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 Class PDU (such as a +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.""", + }, # scalar + "snmpProxyDrops" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.32", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of Confirmed Class PDUs +(such as 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 Class PDU (such as a Response-PDU) could +be returned.""", + }, # scalar + "snmpMIB" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1", + "status" : "current", + }, # node + "snmpMIBObjects" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1", + }, # node + "snmpTrap" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4", + }, # node + "snmpTrapOID" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "notifyonly", + "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.""", + }, # scalar + "snmpTrapEnterprise" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "notifyonly", + "description" : + """The authoritative identification of the enterprise +associated with the trap currently being sent. When an +SNMP proxy agent is mapping an RFC1157 Trap-PDU +into a SNMPv2-Trap-PDU, this variable occurs as the +last varbind.""", + }, # scalar + "snmpTraps" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5", + }, # node + "snmpSet" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.6", + }, # node + "snmpSetSerialNo" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.6.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TestAndIncr"}, + }, + "access" : "readwrite", + "description" : + """An advisory lock used to allow several cooperating +command generator applications to coordinate their +use of the SNMP 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.""", + }, # scalar + "snmpMIBConformance" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2", + }, # node + "snmpMIBCompliances" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1", + }, # node + "snmpMIBGroups" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2", + }, # node + }, # nodes + + "notifications" : { + "coldStart" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.1", + "status" : "current", + "objects" : { + }, + "description" : + """A coldStart trap signifies that the SNMP entity, +supporting a notification originator application, is +reinitializing itself and that its configuration may +have been altered.""", + }, # notification + "warmStart" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.2", + "status" : "current", + "objects" : { + }, + "description" : + """A warmStart trap signifies that the SNMP entity, +supporting a notification originator application, +is reinitializing itself such that its configuration +is unaltered.""", + }, # notification + "authenticationFailure" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.5", + "status" : "current", + "objects" : { + }, + "description" : + """An authenticationFailure trap signifies that the SNMP +entity has received a protocol message that is not +properly authenticated. While all implementations +of SNMP entities MAY be capable of generating this +trap, the snmpEnableAuthenTraps object indicates +whether this trap will be generated.""", + }, # notification + }, # notifications + + "groups" : { + "snmpSetGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.5", + "status" : "current", + "members" : { + "snmpSetSerialNo" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects which allow several cooperating +command generator applications to coordinate their +use of the set operation.""", + }, # group + "systemGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.6", + "status" : "current", + "members" : { + "sysDescr" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysObjectID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysUpTime" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysContact" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysName" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysLocation" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysServices" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORLastChange" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORUpTime" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORDescr" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """The system group defines objects which are common to all +managed systems.""", + }, # group + "snmpBasicNotificationsGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.7", + "status" : "current", + "members" : { + "coldStart" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "authenticationFailure" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """The basic notifications implemented by an SNMP entity +supporting command responder applications.""", + }, # group + "snmpGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.8", + "status" : "current", + "members" : { + "snmpInPkts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadVersions" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInASNParseErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpSilentDrops" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpProxyDrops" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpEnableAuthenTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects providing basic instrumentation +and control of an SNMP entity.""", + }, # group + "snmpCommunityGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.9", + "status" : "current", + "members" : { + "snmpInBadCommunityNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadCommunityUses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects providing basic instrumentation +of a SNMP entity which supports community-based +authentication.""", + }, # group + "snmpObsoleteGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.10", + "status" : "obsolete", + "members" : { + "snmpOutPkts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTooBigs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInNoSuchNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadValues" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInReadOnlys" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGenErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTotalReqVars" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTotalSetVars" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetNexts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInSetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetResponses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutTooBigs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutNoSuchNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutBadValues" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGenErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetNexts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutSetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetResponses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects from RFC 1213 made obsolete +by this MIB module.""", + }, # group + "snmpWarmStartNotificationGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.11", + "status" : "current", + "members" : { + "warmStart" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """An additional notification for an SNMP entity supporting +command responder applications, if it is able to reinitialize +itself such that its configuration is unaltered.""", + }, # group + "snmpNotificationGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.12", + "status" : "current", + "members" : { + "snmpTrapOID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpTrapEnterprise" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """These objects are required for entities +which support notification originator applications.""", + }, # group + }, # groups + + "compliances" : { + "snmpBasicCompliance" : { + "nodetype" : "compliance", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1.2", + "status" : "deprecated", + "description" : + """The compliance statement for SNMPv2 entities which +implement the SNMPv2 MIB. + +This compliance statement is replaced by +snmpBasicComplianceRev2.""", + "requires" : { + "snmpGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpSetGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "systemGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpBasicNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpCommunityGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for SNMPv2 entities which +support community-based authentication.""", + }, + }, # requires + }, # compliance + "snmpBasicComplianceRev2" : { + "nodetype" : "compliance", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1.3", + "status" : "current", + "description" : + """The compliance statement for SNMP entities which +implement this MIB module.""", + "requires" : { + "snmpGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpSetGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "systemGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpBasicNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpCommunityGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for SNMP entities which +support community-based authentication.""", + }, + "snmpWarmStartNotificationGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for an SNMP entity which +supports command responder applications, and is +able to reinitialize itself such that its +configuration is unaltered.""", + }, + }, # requires + }, # compliance + }, # compliances + +} diff --git a/test/dumps/smilint-smiv2/IF-MIB b/test/dumps/smilint-smiv2/IF-MIB new file mode 100644 index 0000000..2bf7653 --- /dev/null +++ b/test/dumps/smilint-smiv2/IF-MIB @@ -0,0 +1,4 @@ +../dumps/smiv2/IF-MIB:117: warning: index element `ifIndex' of row `ifEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/IF-MIB:1237: index element `ifRcvAddressAddress' of row `ifRcvAddressEntry' must have a size restriction +../dumps/smiv2/IF-MIB:1220: warning: index of row `ifRcvAddressEntry' can exceed OID size limit by 65420 subidentifier(s) +../dumps/smiv2/IF-MIB:1451: warning: deprecated group `ifOldObjectsGroup' is not referenced in this module diff --git a/test/dumps/smilint-smiv2/MAU-MIB b/test/dumps/smilint-smiv2/MAU-MIB new file mode 100644 index 0000000..bb284c2 --- /dev/null +++ b/test/dumps/smilint-smiv2/MAU-MIB @@ -0,0 +1,10 @@ +../dumps/smiv2/MAU-MIB:129: warning: redefinition of identifier `IANA-MAU-MIB::snmpDot3MauMgt' +../../mibs/iana/IANA-MAU-MIB:422: info: previous definition of `snmpDot3MauMgt' +../dumps/smiv2/MAU-MIB:21: warning: uncontrolled MODULE-IDENTITY registration +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauGroupIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauPortIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:460: warning: index element `ifMauIfIndex' of row `ifMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:460: warning: index element `ifMauIndex' of row `ifMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:932: warning: index element `broadMauIfIndex' of row `broadMauBasicEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:932: warning: index element `broadMauIndex' of row `broadMauBasicEntry' should be not-accessible in SMIv2 MIB diff --git a/test/dumps/smilint-smiv2/Makefile.am b/test/dumps/smilint-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smilint-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smilint-smiv2/Makefile.in b/test/dumps/smilint-smiv2/Makefile.in new file mode 100644 index 0000000..71f33b3 --- /dev/null +++ b/test/dumps/smilint-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smilint-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smilint-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smilint-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smilint-smiv2/RMON2-MIB b/test/dumps/smilint-smiv2/RMON2-MIB new file mode 100644 index 0000000..f970c39 --- /dev/null +++ b/test/dumps/smilint-smiv2/RMON2-MIB @@ -0,0 +1,21 @@ +../dumps/smiv2/RMON2-MIB:25: warning: redefinition of identifier `RMON-MIB::rmon' +../../mibs/ietf/RMON-MIB:88: info: previous definition of `rmon' +../dumps/smiv2/RMON2-MIB:25: warning: redefinition of identifier `RFC1271-MIB::rmon' +../../mibs/ietf/RFC1271-MIB:14: info: previous definition of `rmon' +../dumps/smiv2/RMON2-MIB:5294: warning: redefinition of identifier `RMON-MIB::rmonConformance' +../../mibs/ietf/RMON-MIB:211: info: previous definition of `rmonConformance' +../dumps/smiv2/RMON2-MIB:1069: warning: index of row `protocolDirEntry' can exceed OID size limit by 45 subidentifier(s) +../dumps/smiv2/RMON2-MIB:1834: index element `addressMapSource' of row `addressMapEntry' should but cannot have a size restriction +../dumps/smiv2/RMON2-MIB:1775: warning: index of row `addressMapEntry' can exceed OID size limit by 270 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2211: warning: index of row `nlHostEntry' can exceed OID size limit by 142 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2694: warning: index of row `nlMatrixSDEntry' can exceed OID size limit by 398 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2841: warning: index of row `nlMatrixDSEntry' can exceed OID size limit by 398 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3402: warning: index of row `alHostEntry' can exceed OID size limit by 143 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3549: warning: index of row `alMatrixSDEntry' can exceed OID size limit by 399 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3663: warning: index of row `alMatrixDSEntry' can exceed OID size limit by 399 subidentifier(s) +../dumps/smiv2/RMON2-MIB:5454: warning: deprecated group `probeConfigurationGroup' is not referenced in this module +../dumps/smiv2/RMON2-MIB:5498: warning: deprecated group `rmon1TokenRingEnhancementGroup' is not referenced in this module +../dumps/smiv2/RMON2-MIB:156: warning: type `ZeroBasedCounter32' has no format specification +../dumps/smiv2/RMON2-MIB:177: warning: type `LastCreateTime' has no format specification +../dumps/smiv2/RMON2-MIB:197: warning: type `TimeFilter' has no format specification +../dumps/smiv2/RMON2-MIB:428: warning: type `ControlString' has no format specification diff --git a/test/dumps/smilint-smiv2/SNMPv2-MIB b/test/dumps/smilint-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..fb05db4 --- /dev/null +++ b/test/dumps/smilint-smiv2/SNMPv2-MIB @@ -0,0 +1 @@ +../dumps/smiv2/SNMPv2-MIB:750: warning: current group `snmpNotificationGroup' is not referenced in this module diff --git a/test/dumps/sming/IF-MIB b/test/dumps/sming/IF-MIB new file mode 100644 index 0000000..21432cb --- /dev/null +++ b/test/dumps/sming/IF-MIB @@ -0,0 +1,1697 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module IF-MIB { + + import IANAifType-MIB (IANAifType); + import IRTF-NMRG-SMING (Counter32, Counter64, + DisplayString255, Gauge32, + PhysAddress, TimeStamp, TimeTicks, + TruthValue); + import IRTF-NMRG-SMING-SNMP (AutonomousType, RowStatus, + TestAndIncr, mib-2); + import SNMPv2-MIB (snmpTraps); + +// +// MODULE META INFORMATION +// + + organization + "IETF Interfaces MIB Working Group"; + + contact + " 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 { + date "2000-06-14 00:00"; + description + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863."; + }; + revision { + date "1996-02-28 21:55"; + description + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233."; + }; + revision { + date "1993-11-08 21:55"; + description + "Initial revision, published as part of RFC 1573."; + }; + + identity ifMIB; + +// +// TYPE DEFINITIONS +// + + typedef OwnerString { + type OctetString (0..255); + format "255a"; + status deprecated; + 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'."; + }; + + typedef InterfaceIndex { + type Integer32 (1..2147483647); + format "d"; + 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."; + }; + + typedef InterfaceIndexOrZero { + type Integer32 (0..2147483647); + format "d"; + 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."; + }; + +// +// OBJECT DEFINITIONS +// + + + node interfaces { + oid mib-2.2; + }; + + scalar ifNumber { + oid interfaces.1; + type Integer32; + access readonly; + description + "The number of network interfaces (regardless of their + current state) present on this system."; + }; + + table ifTable { + oid interfaces.2; + description + "A list of interface entries. The number of entries is + given by the value of ifNumber."; + + row ifEntry { + oid ifTable.1; + index (ifIndex); + description + "An entry containing management information applicable to a + particular interface."; + + column ifIndex { + oid ifEntry.1; + type InterfaceIndex; + access readonly; + 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."; + }; + + column ifDescr { + oid ifEntry.2; + type DisplayString (0..255); + access readonly; + 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."; + }; + + column ifType { + oid ifEntry.3; + type IANAifType; + access readonly; + 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."; + }; + + column ifMtu { + oid ifEntry.4; + type Integer32; + access readonly; + 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."; + }; + + column ifSpeed { + oid ifEntry.5; + type Gauge32; + access readonly; + 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."; + }; + + column ifPhysAddress { + oid ifEntry.6; + type PhysAddress; + access readonly; + 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."; + }; + + column ifAdminStatus { + oid ifEntry.7; + type Enumeration (up(1), down(2), testing(3)); + access readwrite; + 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)."; + }; + + column ifOperStatus { + oid ifEntry.8; + type Enumeration (up(1), down(2), testing(3), + unknown(4), dormant(5), notPresent(6), + lowerLayerDown(7)); + access readonly; + 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."; + }; + + column ifLastChange { + oid ifEntry.9; + type TimeTicks; + access readonly; + 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."; + }; + + column ifInOctets { + oid ifEntry.10; + type Counter32; + access readonly; + 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."; + }; + + column ifInUcastPkts { + oid ifEntry.11; + type Counter32; + access readonly; + 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."; + }; + + column ifInNUcastPkts { + oid ifEntry.12; + type Counter32; + access readonly; + 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."; + }; + + column ifInDiscards { + oid ifEntry.13; + type Counter32; + access readonly; + 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."; + }; + + column ifInErrors { + oid ifEntry.14; + type Counter32; + access readonly; + 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."; + }; + + column ifInUnknownProtos { + oid ifEntry.15; + type Counter32; + access readonly; + 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."; + }; + + column ifOutOctets { + oid ifEntry.16; + type Counter32; + access readonly; + 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."; + }; + + column ifOutUcastPkts { + oid ifEntry.17; + type Counter32; + access readonly; + 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."; + }; + + column ifOutNUcastPkts { + oid ifEntry.18; + type Counter32; + access readonly; + 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."; + }; + + column ifOutDiscards { + oid ifEntry.19; + type Counter32; + access readonly; + 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."; + }; + + column ifOutErrors { + oid ifEntry.20; + type Counter32; + access readonly; + 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."; + }; + + column ifOutQLen { + oid ifEntry.21; + type Gauge32; + access readonly; + status deprecated; + description + "The length of the output packet queue (in packets)."; + }; + + column ifSpecific { + oid ifEntry.22; + type ObjectIdentifier; + access readonly; + 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 2579. 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 }."; + }; + }; + }; + + node ifMIB { + oid mib-2.31; + }; + + node ifMIBObjects { + oid ifMIB.1; + }; + + table ifXTable { + oid ifMIBObjects.1; + 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."; + + row ifXEntry { + oid ifXTable.1; + augments ifEntry; + description + "An entry containing additional management information + applicable to a particular interface."; + + column ifName { + oid ifXEntry.1; + type DisplayString; + access readonly; + 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."; + }; + + column ifInMulticastPkts { + oid ifXEntry.2; + type Counter32; + access readonly; + 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."; + }; + + column ifInBroadcastPkts { + oid ifXEntry.3; + type Counter32; + access readonly; + 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."; + }; + + column ifOutMulticastPkts { + oid ifXEntry.4; + type Counter32; + access readonly; + 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."; + }; + + column ifOutBroadcastPkts { + oid ifXEntry.5; + type Counter32; + access readonly; + 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."; + }; + + column ifHCInOctets { + oid ifXEntry.6; + type Counter64; + access readonly; + 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."; + }; + + column ifHCInUcastPkts { + oid ifXEntry.7; + type Counter64; + access readonly; + 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."; + }; + + column ifHCInMulticastPkts { + oid ifXEntry.8; + type Counter64; + access readonly; + 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."; + }; + + column ifHCInBroadcastPkts { + oid ifXEntry.9; + type Counter64; + access readonly; + 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."; + }; + + column ifHCOutOctets { + oid ifXEntry.10; + type Counter64; + access readonly; + 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."; + }; + + column ifHCOutUcastPkts { + oid ifXEntry.11; + type Counter64; + access readonly; + 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."; + }; + + column ifHCOutMulticastPkts { + oid ifXEntry.12; + type Counter64; + access readonly; + 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."; + }; + + column ifHCOutBroadcastPkts { + oid ifXEntry.13; + type Counter64; + access readonly; + 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."; + }; + + column ifLinkUpDownTrapEnable { + oid ifXEntry.14; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + 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."; + }; + + column ifHighSpeed { + oid ifXEntry.15; + type Gauge32; + access readonly; + 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."; + }; + + column ifPromiscuousMode { + oid ifXEntry.16; + type TruthValue; + access readwrite; + 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."; + }; + + column ifConnectorPresent { + oid ifXEntry.17; + type TruthValue; + access readonly; + description + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise."; + }; + + column ifAlias { + oid ifXEntry.18; + type DisplayString (0..64); + access readwrite; + 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."; + }; + + column ifCounterDiscontinuityTime { + oid ifXEntry.19; + type TimeStamp; + access readonly; + 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."; + }; + }; + }; + + table ifStackTable { + oid ifMIBObjects.2; + 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 "; + + row ifStackEntry { + oid ifStackTable.1; + index (ifStackHigherLayer, ifStackLowerLayer); + create ; + 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."; + + column ifStackHigherLayer { + oid ifStackEntry.1; + type InterfaceIndexOrZero; + access noaccess; + 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."; + }; + + column ifStackLowerLayer { + oid ifStackEntry.2; + type InterfaceIndexOrZero; + access noaccess; + 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."; + }; + + column ifStackStatus { + oid ifStackEntry.3; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table ifTestTable { + oid ifMIBObjects.3; + 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."; + + row ifTestEntry { + oid ifTestTable.1; + augments ifEntry; + status deprecated; + description + "An entry containing objects for invoking tests on an + interface."; + + column ifTestId { + oid ifTestEntry.1; + type TestAndIncr; + access readwrite; + status deprecated; + description + "This object identifies the current invocation of the + interface's test."; + }; + + column ifTestStatus { + oid ifTestEntry.2; + type Enumeration (notInUse(1), inUse(2)); + access readwrite; + 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)'."; + }; + + column ifTestType { + oid ifTestEntry.3; + type AutonomousType; + access readwrite; + 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."; + }; + + column ifTestResult { + oid ifTestEntry.4; + type Enumeration (none(1), success(2), + inProgress(3), notSupported(4), + unAbleToRun(5), aborted(6), failed(7)); + access readonly; + 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."; + }; + + column ifTestCode { + oid ifTestEntry.5; + type ObjectIdentifier; + access readonly; + 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 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available."; + }; + + column ifTestOwner { + oid ifTestEntry.6; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity which currently has the 'ownership' required to + invoke a test on this interface."; + }; + }; + }; + + table ifRcvAddressTable { + oid ifMIBObjects.4; + 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."; + + row ifRcvAddressEntry { + oid ifRcvAddressTable.1; + index (ifIndex, ifRcvAddressAddress); + create ; + 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."; + + column ifRcvAddressAddress { + oid ifRcvAddressEntry.1; + type PhysAddress; + access noaccess; + description + "An address for which the system will accept packets/frames + on this entry's interface."; + }; + + column ifRcvAddressStatus { + oid ifRcvAddressEntry.2; + type RowStatus; + access readwrite; + description + "This object is used to create and delete rows in the + ifRcvAddressTable."; + }; + + column ifRcvAddressType { + oid ifRcvAddressEntry.3; + type Enumeration (other(1), volatile(2), + nonVolatile(3)); + access readwrite; + default volatile; + 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."; + }; + }; + }; + + scalar ifTableLastChange { + oid ifMIBObjects.5; + type TimeTicks; + access readonly; + 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."; + }; + + scalar ifStackLastChange { + oid ifMIBObjects.6; + type TimeTicks; + access readonly; + 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."; + }; + + node ifConformance { + oid ifMIB.2; + }; + + node ifGroups { + oid ifConformance.1; + }; + + node ifCompliances { + oid ifConformance.2; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification linkDown { + oid snmpTraps.3; + objects (ifIndex, ifAdminStatus, ifOperStatus); + description + "A linkDown trap signifies that the SNMP 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."; + }; + + notification linkUp { + oid snmpTraps.4; + objects (ifIndex, ifAdminStatus, ifOperStatus); + description + "A linkUp trap signifies that the SNMP 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."; + }; + +// +// GROUP DEFINITIONS +// + + group ifGeneralGroup { + oid ifGroups.1; + members (ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName); + status deprecated; + description + "A collection of objects deprecated in favour of + ifGeneralInformationGroup."; + }; + + group ifFixedLengthGroup { + oid ifGroups.2; + members (ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors); + 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."; + }; + + group ifHCFixedLengthGroup { + oid ifGroups.3; + members (ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors); + 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."; + }; + + group ifPacketGroup { + oid ifGroups.4; + members (ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode); + 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."; + }; + + group ifHCPacketGroup { + oid ifGroups.5; + members (ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, + ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, + ifOutDiscards, ifPromiscuousMode); + 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."; + }; + + group ifVHCPacketGroup { + oid ifGroups.6; + members (ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, + ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, + ifOutDiscards, ifPromiscuousMode); + description + "A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces."; + }; + + group ifRcvAddressGroup { + oid ifGroups.7; + members (ifRcvAddressStatus, ifRcvAddressType); + description + "A collection of objects providing information on the + multiple addresses which an interface receives."; + }; + + group ifTestGroup { + oid ifGroups.8; + members (ifTestId, ifTestStatus, ifTestType, + ifTestResult, ifTestCode, ifTestOwner); + status deprecated; + description + "A collection of objects providing the ability to invoke + tests on an interface."; + }; + + group ifStackGroup { + oid ifGroups.9; + members (ifStackStatus); + status deprecated; + description + "The previous collection of objects providing information on + the layering of MIB-II interfaces."; + }; + + group ifGeneralInformationGroup { + oid ifGroups.10; + members (ifIndex, ifDescr, ifType, ifSpeed, + ifPhysAddress, ifAdminStatus, ifOperStatus, + ifLastChange, ifLinkUpDownTrapEnable, + ifConnectorPresent, ifHighSpeed, ifName, + ifNumber, ifAlias, ifTableLastChange); + description + "A collection of objects providing information applicable to + all network interfaces."; + }; + + group ifStackGroup2 { + oid ifGroups.11; + members (ifStackStatus, ifStackLastChange); + description + "A collection of objects providing information on the + layering of MIB-II interfaces."; + }; + + group ifOldObjectsGroup { + oid ifGroups.12; + members (ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, + ifSpecific); + status deprecated; + description + "The collection of objects deprecated from the original MIB- + II interfaces group."; + }; + + group ifCounterDiscontinuityGroup { + oid ifGroups.13; + members (ifCounterDiscontinuityTime); + description + "A collection of objects providing information specific to + interface counter discontinuities."; + }; + + group linkUpDownNotificationsGroup { + oid ifGroups.14; + members (linkUp, linkDown); + description + "The notifications which indicate specific changes in the + value of ifOperStatus."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance ifCompliance { + oid ifCompliances.1; + status deprecated; + description + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces."; + + mandatory (ifGeneralGroup, ifStackGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units."; + }; + optional 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."; + }; + optional ifPacketGroup { + description + "This group is mandatory for all network interfaces which + are packet-oriented."; + }; + optional 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."; + }; + optional 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."; + }; + optional 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."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifStackStatus { + type RowStatus (active(1)); + access readonly; + 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)."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + }; + + compliance ifCompliance2 { + oid ifCompliances.2; + status deprecated; + description + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces."; + + mandatory (ifGeneralInformationGroup, ifStackGroup2, + ifCounterDiscontinuityGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units."; + }; + optional 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."; + }; + optional ifPacketGroup { + description + "This group is mandatory for all network interfaces which + are packet-oriented."; + }; + optional 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."; + }; + optional 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."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifStackStatus { + type RowStatus (active(1)); + access readonly; + 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)."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + refine ifAlias { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance ifCompliance3 { + oid ifCompliances.3; + description + "The compliance statement for SNMP entities which have + network interfaces."; + + mandatory (ifGeneralInformationGroup, + linkUpDownNotificationsGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory 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 less than or equal to + 20,000,000 bits/second."; + }; + optional ifHCFixedLengthGroup { + description + "This group is mandatory 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."; + }; + optional ifPacketGroup { + description + "This group is mandatory for those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second."; + }; + optional 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 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second."; + }; + optional ifVHCPacketGroup { + 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."; + }; + optional ifCounterDiscontinuityGroup { + description + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + mandatory)."; + }; + optional 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."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + refine ifAlias { + access readonly; + description + "Write access is not required."; + }; + }; + +}; // end of module IF-MIB. diff --git a/test/dumps/sming/MAU-MIB b/test/dumps/sming/MAU-MIB new file mode 100644 index 0000000..2cffd99 --- /dev/null +++ b/test/dumps/sming/MAU-MIB @@ -0,0 +1,1754 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module MAU-MIB { + + import IANA-MAU-MIB (IANAifJackType, + IANAifMauAutoNegCapBits, + IANAifMauMediaAvailable, + IANAifMauTypeListBits); + import IF-MIB (InterfaceIndex); + import IRTF-NMRG-SMING (Counter32, Counter64, TruthValue); + import IRTF-NMRG-SMING-SNMP (AutonomousType, mib-2); + +// +// MODULE META INFORMATION +// + + organization + "IETF Ethernet Interfaces and Hub MIB Working Group"; + + contact + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com"; + + description + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices."; + + revision { + date "2007-04-21 00:00"; + description + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836."; + }; + revision { + date "2003-09-19 00:00"; + description + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636."; + }; + revision { + date "1999-08-24 04:00"; + description + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation."; + }; + revision { + date "1997-10-31 00:00"; + description + "Version published as RFC 2239."; + }; + revision { + date "1993-09-30 00:00"; + description + "Initial version, published as RFC 1515."; + }; + + identity mauMod; + +// +// TYPE DEFINITIONS +// + + typedef JackType { + type Enumeration (other(1), rj45(2), rj45S(3), + db9(4), bnc(5), fAUI(6), mAUI(7), + fiberSC(8), fiberMIC(9), fiberST(10), + telco(11), mtrj(12), hssdc(13), + fiberLC(14)); + status deprecated; + description + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types."; + }; + +// +// OBJECT DEFINITIONS +// + + + node snmpDot3MauMgt { + oid mib-2.26; + }; + + node snmpDot3MauTraps { + oid snmpDot3MauMgt.0; + }; + + node dot3RpMauBasicGroup { + oid snmpDot3MauMgt.1; + }; + + table rpMauTable { + oid dot3RpMauBasicGroup.1; + description + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater."; + + row rpMauEntry { + oid rpMauTable.1; + index (rpMauGroupIndex, rpMauPortIndex, rpMauIndex); + description + "An entry in the table, containing information + about a single MAU."; + + column rpMauGroupIndex { + oid rpMauEntry.1; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex."; + reference + "RFC 2108, rptrGroupIndex."; + }; + + column rpMauPortIndex { + oid rpMauEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected."; + reference + "RFC 2108, rptrPortIndex."; + }; + + column rpMauIndex { + oid rpMauEntry.3; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column rpMauType { + oid rpMauEntry.4; + type AutonomousType; + access readonly; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + }; + + column rpMauStatus { + oid rpMauEntry.5; + type Enumeration (other(1), unknown(2), + operational(3), standby(4), shutdown(5), + reset(6)); + access readwrite; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + }; + + column rpMauMediaAvailable { + oid rpMauEntry.6; + type IANAifMauMediaAvailable; + access readonly; + description + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + }; + + column rpMauMediaAvailableStateExits { + oid rpMauEntry.7; + type Counter32; + access readonly; + description + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange"; + }; + + column rpMauJabberState { + oid rpMauEntry.8; + type Enumeration (other(1), unknown(2), + noJabber(3), jabbering(4)); + access readonly; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + }; + + column rpMauJabberingStateEnters { + oid rpMauEntry.9; + type Counter32; + access readonly; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange"; + }; + + column rpMauFalseCarriers { + oid rpMauEntry.10; + type Counter32; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange"; + }; + }; + }; + + table rpJackTable { + oid dot3RpMauBasicGroup.2; + description + "Information about the external jacks attached + to MAUs attached to the ports of a repeater."; + + row rpJackEntry { + oid rpJackTable.1; + index (rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex); + description + "An entry in the table, containing information + about a particular jack."; + + column rpJackIndex { + oid rpJackEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)."; + }; + + column rpJackType { + oid rpJackEntry.2; + type IANAifJackType; + access readonly; + description + "The jack connector type, as it appears on the + outside of the system."; + }; + }; + }; + + node dot3IfMauBasicGroup { + oid snmpDot3MauMgt.2; + }; + + table ifMauTable { + oid dot3IfMauBasicGroup.1; + description + "Table of descriptive and status information + about MAU(s) attached to an interface."; + + row ifMauEntry { + oid ifMauTable.1; + index (ifMauIfIndex, ifMauIndex); + description + "An entry in the table, containing information + about a single MAU."; + + column ifMauIfIndex { + oid ifMauEntry.1; + type InterfaceIndex; + access readonly; + description + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex"; + }; + + column ifMauIndex { + oid ifMauEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column ifMauType { + oid ifMauEntry.3; + type AutonomousType; + access readonly; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + }; + + column ifMauStatus { + oid ifMauEntry.4; + type Enumeration (other(1), unknown(2), + operational(3), standby(4), shutdown(5), + reset(6)); + access readwrite; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + }; + + column ifMauMediaAvailable { + oid ifMauEntry.5; + type IANAifMauMediaAvailable; + access readonly; + description + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + }; + + column ifMauMediaAvailableStateExits { + oid ifMauEntry.6; + type Counter32; + access readonly; + description + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauJabberState { + oid ifMauEntry.7; + type Enumeration (other(1), unknown(2), + noJabber(3), jabbering(4)); + access readonly; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + }; + + column ifMauJabberingStateEnters { + oid ifMauEntry.8; + type Counter32; + access readonly; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauFalseCarriers { + oid ifMauEntry.9; + type Counter32; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauTypeList { + oid ifMauEntry.10; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability."; + }; + + column ifMauDefaultType { + oid ifMauEntry.11; + type AutonomousType; + access readwrite; + description + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4."; + }; + + column ifMauAutoNegSupported { + oid ifMauEntry.12; + type TruthValue; + access readonly; + description + "This object indicates whether or not + auto-negotiation is supported on this MAU."; + }; + + column ifMauTypeListBits { + oid ifMauEntry.13; + type IANAifMauTypeListBits; + access readonly; + description + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC."; + }; + + column ifMauHCFalseCarriers { + oid ifMauEntry.14; + type Counter64; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + }; + }; + }; + + table ifJackTable { + oid dot3IfMauBasicGroup.2; + description + "Information about the external jacks attached + to MAUs attached to an interface."; + + row ifJackEntry { + oid ifJackTable.1; + index (ifMauIfIndex, ifMauIndex, ifJackIndex); + description + "An entry in the table, containing information + about a particular jack."; + + column ifJackIndex { + oid ifJackEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU."; + }; + + column ifJackType { + oid ifJackEntry.2; + type IANAifJackType; + access readonly; + description + "The jack connector type, as it appears on the + outside of the system."; + }; + }; + }; + + node dot3BroadMauBasicGroup { + oid snmpDot3MauMgt.3; + }; + + table broadMauBasicTable { + oid dot3BroadMauBasicGroup.1; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces."; + + row broadMauBasicEntry { + oid broadMauBasicTable.1; + index (broadMauIfIndex, broadMauIndex); + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU."; + + column broadMauIfIndex { + oid broadMauBasicEntry.1; + type InterfaceIndex; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex."; + }; + + column broadMauIndex { + oid broadMauBasicEntry.2; + type Integer32 (1..2147483647); + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column broadMauXmtRcvSplitType { + oid broadMauBasicEntry.3; + type Enumeration (other(1), single(2), dual(3)); + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero."; + reference + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType."; + }; + + column broadMauXmtCarrierFreq { + oid broadMauBasicEntry.4; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz."; + reference + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency."; + }; + + column broadMauTranslationFreq { + oid broadMauBasicEntry.5; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz."; + reference + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency."; + }; + }; + }; + + node dot3IfMauAutoNegGroup { + oid snmpDot3MauMgt.5; + }; + + table ifMauAutoNegTable { + oid dot3IfMauAutoNegGroup.1; + description + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function."; + + row ifMauAutoNegEntry { + oid ifMauAutoNegTable.1; + index (ifMauIfIndex, ifMauIndex); + description + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU."; + + column ifMauAutoNegAdminStatus { + oid ifMauAutoNegEntry.1; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + description + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function."; + reference + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl."; + }; + + column ifMauAutoNegRemoteSignaling { + oid ifMauAutoNegEntry.2; + type Enumeration (detected(1), notdetected(2)); + access readonly; + description + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received."; + reference + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling."; + }; + + column ifMauAutoNegConfig { + oid ifMauAutoNegEntry.4; + type Enumeration (other(1), configuring(2), + complete(3), disabled(4), + parallelDetectFail(5)); + access readonly; + description + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]."; + reference + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig."; + }; + + column ifMauAutoNegCapability { + oid ifMauAutoNegEntry.5; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + }; + + column ifMauAutoNegCapAdvertised { + oid ifMauAutoNegEntry.6; + type Integer32; + access readwrite; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegCapReceived { + oid ifMauAutoNegEntry.7; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + + column ifMauAutoNegRestart { + oid ifMauAutoNegEntry.8; + type Enumeration (restart(1), norestart(2)); + access readwrite; + description + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect."; + reference + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig."; + }; + + column ifMauAutoNegCapabilityBits { + oid ifMauAutoNegEntry.9; + type IANAifMauAutoNegCapBits; + access readonly; + description + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + }; + + column ifMauAutoNegCapAdvertisedBits { + oid ifMauAutoNegEntry.10; + type IANAifMauAutoNegCapBits; + access readwrite; + description + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegCapReceivedBits { + oid ifMauAutoNegEntry.11; + type IANAifMauAutoNegCapBits; + access readonly; + description + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + + column ifMauAutoNegRemoteFaultAdvertised { + oid ifMauAutoNegEntry.12; + type Enumeration (noError(1), offline(2), + linkFailure(3), autoNegError(4)); + access readwrite; + description + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegRemoteFaultReceived { + oid ifMauAutoNegEntry.13; + type Enumeration (noError(1), offline(2), + linkFailure(3), autoNegError(4)); + access readonly; + description + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + }; + }; + + node mauMod { + oid snmpDot3MauMgt.6; + }; + + node mauModConf { + oid mauMod.1; + }; + + node mauModCompls { + oid mauModConf.1; + }; + + node mauModObjGrps { + oid mauModConf.2; + }; + + node mauModNotGrps { + oid mauModConf.3; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification rpMauJabberTrap { + oid snmpDot3MauTraps.1; + objects (rpMauJabberState); + description + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + }; + + notification ifMauJabberTrap { + oid snmpDot3MauTraps.2; + objects (ifMauJabberState); + description + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + }; + +// +// GROUP DEFINITIONS +// + + group mauRpGrpBasic { + oid mauModObjGrps.1; + members (rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpMauType, rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, + rpMauJabberState, rpMauJabberingStateEnters); + description + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations."; + }; + + group mauRpGrp100Mbs { + oid mauModObjGrps.2; + members (rpMauFalseCarriers); + description + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability."; + }; + + group mauRpGrpJack { + oid mauModObjGrps.3; + members (rpJackType); + description + "Conformance group for MAUs attached to + repeater ports with managed jacks."; + }; + + group mauIfGrpBasic { + oid mauModObjGrps.4; + members (ifMauIfIndex, ifMauIndex, ifMauType, + ifMauStatus, ifMauMediaAvailable, + ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters); + description + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations."; + }; + + group mauIfGrp100Mbs { + oid mauModObjGrps.5; + members (ifMauFalseCarriers, ifMauTypeList, + ifMauDefaultType, ifMauAutoNegSupported); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity."; + }; + + group mauIfGrpJack { + oid mauModObjGrps.6; + members (ifJackType); + description + "Conformance group for MAUs attached to + interfaces with managed jacks."; + }; + + group mauIfGrpAutoNeg { + oid mauModObjGrps.7; + members (ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, + ifMauAutoNegCapReceived, + ifMauAutoNegRestart); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2."; + }; + + group mauBroadBasic { + oid mauModObjGrps.8; + members (broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, + broadMauXmtCarrierFreq, + broadMauTranslationFreq); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations."; + }; + + group mauIfGrpHighCapacity { + oid mauModObjGrps.9; + members (ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported); + description + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability."; + }; + + group mauIfGrpAutoNeg2 { + oid mauModObjGrps.10; + members (ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, + ifMauAutoNegRestart); + description + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation."; + }; + + group mauIfGrpAutoNeg1000Mbps { + oid mauModObjGrps.11; + members (ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived); + description + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation."; + }; + + group mauIfGrpHCStats { + oid mauModObjGrps.12; + members (ifMauHCFalseCarriers); + description + "Conformance for high capacity statistics for + MAUs attached to interfaces."; + }; + + group rpMauNotifications { + oid mauModNotGrps.1; + members (rpMauJabberTrap); + description + "Notifications for repeater MAUs."; + }; + + group ifMauNotifications { + oid mauModNotGrps.2; + members (ifMauJabberTrap); + description + "Notifications for interface MAUs."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance mauModRpCompl { + oid mauModCompls.1; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only."; + + mandatory (mauRpGrpBasic); + + optional mauRpGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability."; + }; + optional mauRpGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional rpMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to repeater ports."; + }; + }; + + compliance mauModIfCompl { + oid mauModCompls.2; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauBroadBasic { + description + "Implementation of this group is mandatory + for broadband MAUs."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + }; + + compliance mauModIfCompl2 { + oid mauModCompls.3; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrpHighCapacity { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg2 { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauIfGrpAutoNeg1000Mbps { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + + refine ifMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance mauModRpCompl2 { + oid mauModCompls.4; + description + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)."; + + mandatory (mauRpGrpBasic); + + optional mauRpGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability."; + }; + optional mauRpGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional rpMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to repeater ports."; + }; + + refine rpMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance mauModIfCompl3 { + oid mauModCompls.5; + description + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrpHighCapacity { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability."; + }; + optional mauIfGrpHCStats { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg2 { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauIfGrpAutoNeg1000Mbps { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + + refine ifMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + +}; // end of module MAU-MIB. diff --git a/test/dumps/sming/Makefile.am b/test/dumps/sming/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/sming/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/sming/Makefile.in b/test/dumps/sming/Makefile.in new file mode 100644 index 0000000..bab7577 --- /dev/null +++ b/test/dumps/sming/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/sming +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/sming/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/sming/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/sming/RMON2-MIB b/test/dumps/sming/RMON2-MIB new file mode 100644 index 0000000..423b9bc --- /dev/null +++ b/test/dumps/sming/RMON2-MIB @@ -0,0 +1,5332 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module RMON2-MIB { + + import IF-MIB (ifIndex); + import IRTF-NMRG-SMING (Counter32, DisplayString255, + Gauge32, IpAddress, TimeStamp, + TimeTicks); + import IRTF-NMRG-SMING-SNMP (RowStatus, mib-2); + import RMON-MIB (OwnerString, channelEntry, + etherStatsEntry, filter, + filterEntry, history, + historyControlEntry, + hostControlEntry, hosts, matrix, + matrixControlEntry, statistics); + import TOKEN-RING-RMON-MIB (ringStationControlEntry, + sourceRoutingStatsEntry, + tokenRing, tokenRingMLStatsEntry, + tokenRingPStatsEntry); + +// +// MODULE META INFORMATION +// + + organization + "IETF RMON MIB Working Group"; + + contact + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: "; + + description + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices."; + + revision { + date "2006-05-02 00:00"; + description + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics."; + }; + revision { + date "2002-07-08 00:00"; + description + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications."; + }; + revision { + date "1996-05-27 00:00"; + description + "Original version. Published as RFC 2021."; + }; + + identity rmon; + +// +// TYPE DEFINITIONS +// + + typedef ZeroBasedCounter32 { + type Gauge32; + description + "This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use."; + }; + + typedef LastCreateTime { + type TimeTicks; + description + "This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects."; + }; + + typedef TimeFilter { + type TimeTicks; + description + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk."; + }; + + typedef DataSource { + type ObjectIdentifier; + description + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1."; + }; + + typedef ControlString { + type OctetString (0..255); + description + "This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed."; + }; + +// +// OBJECT DEFINITIONS +// + + + node rmon { + oid mib-2.16; + }; + + table etherStats2Table { + oid statistics.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row etherStats2Entry { + oid etherStats2Table.1; + augments etherStatsEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column etherStatsDroppedFrames { + oid etherStats2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column etherStatsCreateTime { + oid etherStats2Entry.2; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table tokenRingMLStats2Table { + oid statistics.5; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row tokenRingMLStats2Entry { + oid tokenRingMLStats2Table.1; + augments tokenRingMLStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column tokenRingMLStatsDroppedFrames { + oid tokenRingMLStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column tokenRingMLStatsCreateTime { + oid tokenRingMLStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table tokenRingPStats2Table { + oid statistics.6; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row tokenRingPStats2Entry { + oid tokenRingPStats2Table.1; + augments tokenRingPStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column tokenRingPStatsDroppedFrames { + oid tokenRingPStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column tokenRingPStatsCreateTime { + oid tokenRingPStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table historyControl2Table { + oid history.5; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row historyControl2Entry { + oid historyControl2Table.1; + augments historyControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column historyControlDroppedFrames { + oid historyControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + }; + }; + + table hostControl2Table { + oid hosts.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row hostControl2Entry { + oid hostControl2Table.1; + augments hostControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column hostControlDroppedFrames { + oid hostControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column hostControlCreateTime { + oid hostControl2Entry.2; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table matrixControl2Table { + oid matrix.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row matrixControl2Entry { + oid matrixControl2Table.1; + augments matrixControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column matrixControlDroppedFrames { + oid matrixControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column matrixControlCreateTime { + oid matrixControl2Entry.2; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table channel2Table { + oid filter.3; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row channel2Entry { + oid channel2Table.1; + augments channelEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column channelDroppedFrames { + oid channel2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column channelCreateTime { + oid channel2Entry.2; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table filter2Table { + oid filter.4; + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + row filter2Entry { + oid filter2Table.1; + augments filterEntry; + create ; + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + column filterProtocolDirDataLocalIndex { + oid filter2Entry.1; + type Integer32 (0..2147483647); + access readwrite; + default 0; + description + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet."; + }; + + column filterProtocolDirLocalIndex { + oid filter2Entry.2; + type Integer32 (0..2147483647); + access readwrite; + default 0; + description + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry."; + }; + }; + }; + + table ringStationControl2Table { + oid tokenRing.7; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row ringStationControl2Entry { + oid ringStationControl2Table.1; + augments ringStationControlEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column ringStationControlDroppedFrames { + oid ringStationControl2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column ringStationControlCreateTime { + oid ringStationControl2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + table sourceRoutingStats2Table { + oid tokenRing.8; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row sourceRoutingStats2Entry { + oid sourceRoutingStats2Table.1; + augments sourceRoutingStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column sourceRoutingStatsDroppedFrames { + oid sourceRoutingStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column sourceRoutingStatsCreateTime { + oid sourceRoutingStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + }; + }; + + node protocolDir { + oid rmon.11; + }; + + scalar protocolDirLastChange { + oid protocolDir.1; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig."; + }; + + table protocolDirTable { + oid protocolDir.2; + description + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups."; + + row protocolDirEntry { + oid protocolDirTable.1; + index (protocolDirID, protocolDirParameters); + create ; + description + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column protocolDirID { + oid protocolDirEntry.1; + type OctetString (4..128); + access noaccess; + description + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error."; + }; + + column protocolDirParameters { + oid protocolDirEntry.2; + type OctetString (1..32); + access noaccess; + description + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero."; + }; + + column protocolDirLocalIndex { + oid protocolDirEntry.3; + type Integer32 (1..2147483647); + access readonly; + description + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted."; + }; + + column protocolDirDescr { + oid protocolDirEntry.4; + type DisplayString (1..64); + access readwrite; + description + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)."; + }; + + column protocolDirType { + oid protocolDirEntry.5; + type Bits (extensible(0), + addressRecognitionCapable(1)); + access readonly; + description + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero."; + }; + + column protocolDirAddressMapConfig { + oid protocolDirEntry.6; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + description + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable."; + }; + + column protocolDirHostConfig { + oid protocolDirEntry.7; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + description + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + }; + + column protocolDirMatrixConfig { + oid protocolDirEntry.8; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + description + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + }; + + column protocolDirOwner { + oid protocolDirEntry.9; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column protocolDirStatus { + oid protocolDirEntry.10; + type RowStatus; + access readwrite; + description + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted."; + }; + }; + }; + + node protocolDist { + oid rmon.12; + }; + + table protocolDistControlTable { + oid protocolDist.1; + description + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface."; + + row protocolDistControlEntry { + oid protocolDistControlTable.1; + index (protocolDistControlIndex); + create ; + description + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7"; + + column protocolDistControlIndex { + oid protocolDistControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "A unique index for this protocolDistControlEntry."; + }; + + column protocolDistControlDataSource { + oid protocolDistControlEntry.2; + type DataSource; + access readwrite; + description + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)."; + }; + + column protocolDistControlDroppedFrames { + oid protocolDistControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column protocolDistControlCreateTime { + oid protocolDistControlEntry.4; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + }; + + column protocolDistControlOwner { + oid protocolDistControlEntry.5; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column protocolDistControlStatus { + oid protocolDistControlEntry.6; + type RowStatus; + access readwrite; + description + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted."; + }; + }; + }; + + table protocolDistStatsTable { + oid protocolDist.2; + description + "An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed."; + + row protocolDistStatsEntry { + oid protocolDistStatsTable.1; + index (protocolDistControlIndex, + protocolDirLocalIndex); + description + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18"; + + column protocolDistStatsPkts { + oid protocolDistStatsEntry.1; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times."; + }; + + column protocolDistStatsOctets { + oid protocolDistStatsEntry.2; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol."; + }; + }; + }; + + node addressMap { + oid rmon.13; + }; + + scalar addressMapInserts { + oid addressMap.1; + type Counter32; + access readonly; + description + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts."; + }; + + scalar addressMapDeletes { + oid addressMap.2; + type Counter32; + access readonly; + description + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts."; + }; + + scalar addressMapMaxDesiredEntries { + oid addressMap.3; + type Integer32 (-1..2147483647); + access readwrite; + description + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + }; + + table addressMapControlTable { + oid addressMap.4; + description + "A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available."; + + row addressMapControlEntry { + oid addressMapControlTable.1; + index (addressMapControlIndex); + create ; + description + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1"; + + column addressMapControlIndex { + oid addressMapControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "A unique index for this entry in the addressMapControlTable."; + }; + + column addressMapControlDataSource { + oid addressMapControlEntry.2; + type DataSource; + access readwrite; + description + "The source of data for this addressMapControlEntry."; + }; + + column addressMapControlDroppedFrames { + oid addressMapControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column addressMapControlOwner { + oid addressMapControlEntry.4; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column addressMapControlStatus { + oid addressMapControlEntry.5; + type RowStatus; + access readwrite; + description + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted."; + }; + }; + }; + + table addressMapTable { + oid addressMap.5; + description + "A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)."; + + row addressMapEntry { + oid addressMapTable.1; + index (addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource); + description + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column addressMapTimeMark { + oid addressMapEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column addressMapNetworkAddress { + oid addressMapEntry.2; + type OctetString (1..255); + access noaccess; + description + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column addressMapSource { + oid addressMapEntry.3; + type ObjectIdentifier; + access noaccess; + description + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater."; + }; + + column addressMapPhysicalAddress { + oid addressMapEntry.4; + type OctetString; + access readonly; + description + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol."; + }; + + column addressMapLastChange { + oid addressMapEntry.5; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently."; + }; + }; + }; + + node nlHost { + oid rmon.14; + }; + + table hlHostControlTable { + oid nlHost.1; + description + "A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available."; + + row hlHostControlEntry { + oid hlHostControlTable.1; + index (hlHostControlIndex); + create ; + description + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1"; + + column hlHostControlIndex { + oid hlHostControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry."; + }; + + column hlHostControlDataSource { + oid hlHostControlEntry.2; + type DataSource; + access readwrite; + description + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)."; + }; + + column hlHostControlNlDroppedFrames { + oid hlHostControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column hlHostControlNlInserts { + oid hlHostControlEntry.4; + type Counter32; + access readonly; + description + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts."; + }; + + column hlHostControlNlDeletes { + oid hlHostControlEntry.5; + type Counter32; + access readonly; + description + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts."; + }; + + column hlHostControlNlMaxDesiredEntries { + oid hlHostControlEntry.6; + type Integer32 (-1..2147483647); + access readwrite; + description + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + }; + + column hlHostControlAlDroppedFrames { + oid hlHostControlEntry.7; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column hlHostControlAlInserts { + oid hlHostControlEntry.8; + type Counter32; + access readonly; + description + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts."; + }; + + column hlHostControlAlDeletes { + oid hlHostControlEntry.9; + type Counter32; + access readonly; + description + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts."; + }; + + column hlHostControlAlMaxDesiredEntries { + oid hlHostControlEntry.10; + type Integer32 (-1..2147483647); + access readwrite; + description + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + }; + + column hlHostControlOwner { + oid hlHostControlEntry.11; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column hlHostControlStatus { + oid hlHostControlEntry.12; + type RowStatus; + access readwrite; + description + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted."; + }; + }; + }; + + table nlHostTable { + oid nlHost.2; + description + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors."; + + row nlHostEntry { + oid nlHostTable.1; + index (hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress); + description + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations."; + + column nlHostTimeMark { + oid nlHostEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlHostAddress { + oid nlHostEntry.2; + type OctetString (1..255); + access noaccess; + description + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlHostInPkts { + oid nlHostEntry.3; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + }; + + column nlHostOutPkts { + oid nlHostEntry.4; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + }; + + column nlHostInOctets { + oid nlHostEntry.5; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlHostOutOctets { + oid nlHostEntry.6; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlHostOutMacNonUnicastPkts { + oid nlHostEntry.7; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + }; + + column nlHostCreateTime { + oid nlHostEntry.8; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + node nlMatrix { + oid rmon.15; + }; + + table hlMatrixControlTable { + oid nlMatrix.1; + description + "A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table."; + + row hlMatrixControlEntry { + oid hlMatrixControlTable.1; + index (hlMatrixControlIndex); + create ; + description + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1"; + + column hlMatrixControlIndex { + oid hlMatrixControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry."; + }; + + column hlMatrixControlDataSource { + oid hlMatrixControlEntry.2; + type DataSource; + access readwrite; + description + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)."; + }; + + column hlMatrixControlNlDroppedFrames { + oid hlMatrixControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column hlMatrixControlNlInserts { + oid hlMatrixControlEntry.4; + type Counter32; + access readonly; + description + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts."; + }; + + column hlMatrixControlNlDeletes { + oid hlMatrixControlEntry.5; + type Counter32; + access readonly; + description + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts."; + }; + + column hlMatrixControlNlMaxDesiredEntries { + oid hlMatrixControlEntry.6; + type Integer32 (-1..2147483647); + access readwrite; + description + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + }; + + column hlMatrixControlAlDroppedFrames { + oid hlMatrixControlEntry.7; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + }; + + column hlMatrixControlAlInserts { + oid hlMatrixControlEntry.8; + type Counter32; + access readonly; + description + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts."; + }; + + column hlMatrixControlAlDeletes { + oid hlMatrixControlEntry.9; + type Counter32; + access readonly; + description + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts."; + }; + + column hlMatrixControlAlMaxDesiredEntries { + oid hlMatrixControlEntry.10; + type Integer32 (-1..2147483647); + access readwrite; + description + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + }; + + column hlMatrixControlOwner { + oid hlMatrixControlEntry.11; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column hlMatrixControlStatus { + oid hlMatrixControlEntry.12; + type RowStatus; + access readwrite; + description + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent."; + }; + }; + }; + + table nlMatrixSDTable { + oid nlMatrix.2; + description + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address."; + + row nlMatrixSDEntry { + oid nlMatrixSDTable.1; + index (hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress); + description + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column nlMatrixSDTimeMark { + oid nlMatrixSDEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlMatrixSDSourceAddress { + oid nlMatrixSDEntry.2; + type OctetString (1..255); + access noaccess; + description + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixSDDestAddress { + oid nlMatrixSDEntry.3; + type OctetString (1..255); + access noaccess; + description + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixSDPkts { + oid nlMatrixSDEntry.4; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + }; + + column nlMatrixSDOctets { + oid nlMatrixSDEntry.5; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlMatrixSDCreateTime { + oid nlMatrixSDEntry.6; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + table nlMatrixDSTable { + oid nlMatrix.3; + description + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address."; + + row nlMatrixDSEntry { + oid nlMatrixDSTable.1; + index (hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress); + description + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column nlMatrixDSTimeMark { + oid nlMatrixDSEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlMatrixDSSourceAddress { + oid nlMatrixDSEntry.2; + type OctetString (1..255); + access noaccess; + description + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixDSDestAddress { + oid nlMatrixDSEntry.3; + type OctetString (1..255); + access noaccess; + description + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixDSPkts { + oid nlMatrixDSEntry.4; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + }; + + column nlMatrixDSOctets { + oid nlMatrixDSEntry.5; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlMatrixDSCreateTime { + oid nlMatrixDSEntry.6; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + table nlMatrixTopNControlTable { + oid nlMatrix.4; + description + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric."; + + row nlMatrixTopNControlEntry { + oid nlMatrixTopNControlTable.1; + index (nlMatrixTopNControlIndex); + create ; + description + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3"; + + column nlMatrixTopNControlIndex { + oid nlMatrixTopNControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + }; + + column nlMatrixTopNControlMatrixIndex { + oid nlMatrixTopNControlEntry.2; + type Integer32 (1..65535); + access readwrite; + description + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)."; + }; + + column nlMatrixTopNControlRateBase { + oid nlMatrixTopNControlEntry.3; + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4)); + access readwrite; + description + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object."; + }; + + column nlMatrixTopNControlTimeRemaining { + oid nlMatrixTopNControlEntry.4; + type Integer32 (0..2147483647); + access readwrite; + default 1800; + description + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)."; + }; + + column nlMatrixTopNControlGeneratedReports { + oid nlMatrixTopNControlEntry.5; + type Counter32; + access readonly; + description + "The number of reports that have been generated by this entry."; + }; + + column nlMatrixTopNControlDuration { + oid nlMatrixTopNControlEntry.6; + type Integer32; + access readonly; + description + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry."; + }; + + column nlMatrixTopNControlRequestedSize { + oid nlMatrixTopNControlEntry.7; + type Integer32 (0..2147483647); + access readwrite; + default 150; + description + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources."; + }; + + column nlMatrixTopNControlGrantedSize { + oid nlMatrixTopNControlEntry.8; + type Integer32 (0..2147483647); + access readonly; + description + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available."; + }; + + column nlMatrixTopNControlStartTime { + oid nlMatrixTopNControlEntry.9; + type TimeStamp; + access readonly; + description + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed."; + }; + + column nlMatrixTopNControlOwner { + oid nlMatrixTopNControlEntry.10; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column nlMatrixTopNControlStatus { + oid nlMatrixTopNControlEntry.11; + type RowStatus; + access readwrite; + description + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent."; + }; + }; + }; + + table nlMatrixTopNTable { + oid nlMatrix.5; + description + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets."; + + row nlMatrixTopNEntry { + oid nlMatrixTopNTable.1; + index (nlMatrixTopNControlIndex, nlMatrixTopNIndex); + description + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10"; + + column nlMatrixTopNIndex { + oid nlMatrixTopNEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries."; + }; + + column nlMatrixTopNProtocolDirLocalIndex { + oid nlMatrixTopNEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + }; + + column nlMatrixTopNSourceAddress { + oid nlMatrixTopNEntry.3; + type OctetString (1..255); + access readonly; + description + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixTopNDestAddress { + oid nlMatrixTopNEntry.4; + type OctetString (1..255); + access readonly; + description + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column nlMatrixTopNPktRate { + oid nlMatrixTopNEntry.5; + type Gauge32; + access readonly; + description + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report."; + }; + + column nlMatrixTopNReversePktRate { + oid nlMatrixTopNEntry.6; + type Gauge32; + access readonly; + description + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object."; + }; + + column nlMatrixTopNOctetRate { + oid nlMatrixTopNEntry.7; + type Gauge32; + access readonly; + description + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report."; + }; + + column nlMatrixTopNReverseOctetRate { + oid nlMatrixTopNEntry.8; + type Gauge32; + access readonly; + description + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object."; + }; + }; + }; + + node alHost { + oid rmon.16; + }; + + table alHostTable { + oid alHost.1; + description + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable."; + + row alHostEntry { + oid alHostTable.1; + index (hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex); + description + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alHostTimeMark { + oid alHostEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alHostInPkts { + oid alHostEntry.2; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times."; + }; + + column alHostOutPkts { + oid alHostEntry.3; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times."; + }; + + column alHostInOctets { + oid alHostEntry.4; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alHostOutOctets { + oid alHostEntry.5; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alHostCreateTime { + oid alHostEntry.6; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + node alMatrix { + oid rmon.17; + }; + + table alMatrixSDTable { + oid alMatrix.1; + description + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable."; + + row alMatrixSDEntry { + oid alMatrixSDTable.1; + index (hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, + protocolDirLocalIndex); + description + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alMatrixSDTimeMark { + oid alMatrixSDEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alMatrixSDPkts { + oid alMatrixSDEntry.2; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + }; + + column alMatrixSDOctets { + oid alMatrixSDEntry.3; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alMatrixSDCreateTime { + oid alMatrixSDEntry.4; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + table alMatrixDSTable { + oid alMatrix.2; + description + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable."; + + row alMatrixDSEntry { + oid alMatrixDSTable.1; + index (hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, + protocolDirLocalIndex); + description + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alMatrixDSTimeMark { + oid alMatrixDSEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alMatrixDSPkts { + oid alMatrixDSEntry.2; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + }; + + column alMatrixDSOctets { + oid alMatrixDSEntry.3; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alMatrixDSCreateTime { + oid alMatrixDSEntry.4; + type LastCreateTime; + access readonly; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + }; + }; + }; + + table alMatrixTopNControlTable { + oid alMatrix.3; + description + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric."; + + row alMatrixTopNControlEntry { + oid alMatrixTopNControlTable.1; + index (alMatrixTopNControlIndex); + create ; + description + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3"; + + column alMatrixTopNControlIndex { + oid alMatrixTopNControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + }; + + column alMatrixTopNControlMatrixIndex { + oid alMatrixTopNControlEntry.2; + type Integer32 (1..65535); + access readwrite; + description + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + }; + + column alMatrixTopNControlRateBase { + oid alMatrixTopNControlEntry.3; + type Enumeration (alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8)); + access readwrite; + description + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + }; + + column alMatrixTopNControlTimeRemaining { + oid alMatrixTopNControlEntry.4; + type Integer32 (0..2147483647); + access readwrite; + default 1800; + description + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)."; + }; + + column alMatrixTopNControlGeneratedReports { + oid alMatrixTopNControlEntry.5; + type Counter32; + access readonly; + description + "The number of reports that have been generated by this entry."; + }; + + column alMatrixTopNControlDuration { + oid alMatrixTopNControlEntry.6; + type Integer32; + access readonly; + description + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry."; + }; + + column alMatrixTopNControlRequestedSize { + oid alMatrixTopNControlEntry.7; + type Integer32 (0..2147483647); + access readwrite; + default 150; + description + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources."; + }; + + column alMatrixTopNControlGrantedSize { + oid alMatrixTopNControlEntry.8; + type Integer32 (0..2147483647); + access readonly; + description + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available."; + }; + + column alMatrixTopNControlStartTime { + oid alMatrixTopNControlEntry.9; + type TimeStamp; + access readonly; + description + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed."; + }; + + column alMatrixTopNControlOwner { + oid alMatrixTopNControlEntry.10; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column alMatrixTopNControlStatus { + oid alMatrixTopNControlEntry.11; + type RowStatus; + access readwrite; + description + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent."; + }; + }; + }; + + table alMatrixTopNTable { + oid alMatrix.4; + description + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets."; + + row alMatrixTopNEntry { + oid alMatrixTopNTable.1; + index (alMatrixTopNControlIndex, alMatrixTopNIndex); + description + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10"; + + column alMatrixTopNIndex { + oid alMatrixTopNEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries."; + }; + + column alMatrixTopNProtocolDirLocalIndex { + oid alMatrixTopNEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + }; + + column alMatrixTopNSourceAddress { + oid alMatrixTopNEntry.3; + type OctetString (1..255); + access readonly; + description + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column alMatrixTopNDestAddress { + oid alMatrixTopNEntry.4; + type OctetString (1..255); + access readonly; + description + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + }; + + column alMatrixTopNAppProtocolDirLocalIndex { + oid alMatrixTopNEntry.5; + type Integer32 (1..2147483647); + access readonly; + description + "The type of the protocol counted by this matrix entry."; + }; + + column alMatrixTopNPktRate { + oid alMatrixTopNEntry.6; + type Gauge32; + access readonly; + description + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report."; + }; + + column alMatrixTopNReversePktRate { + oid alMatrixTopNEntry.7; + type Gauge32; + access readonly; + description + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object."; + }; + + column alMatrixTopNOctetRate { + oid alMatrixTopNEntry.8; + type Gauge32; + access readonly; + description + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report."; + }; + + column alMatrixTopNReverseOctetRate { + oid alMatrixTopNEntry.9; + type Gauge32; + access readonly; + description + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object."; + }; + }; + }; + + node usrHistory { + oid rmon.18; + }; + + table usrHistoryControlTable { + oid usrHistory.1; + description + "A list of data-collection configuration entries."; + + row usrHistoryControlEntry { + oid usrHistoryControlTable.1; + index (usrHistoryControlIndex); + create ; + description + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1"; + + column usrHistoryControlIndex { + oid usrHistoryControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system."; + }; + + column usrHistoryControlObjects { + oid usrHistoryControlEntry.2; + type Integer32 (1..65535); + access readwrite; + description + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)."; + }; + + column usrHistoryControlBucketsRequested { + oid usrHistoryControlEntry.3; + type Integer32 (1..65535); + access readwrite; + default 50; + description + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources."; + }; + + column usrHistoryControlBucketsGranted { + oid usrHistoryControlEntry.4; + type Integer32 (1..65535); + access readonly; + description + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow."; + }; + + column usrHistoryControlInterval { + oid usrHistoryControlEntry.5; + type Integer32 (1..2147483647); + access readwrite; + default 1800; + description + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + }; + + column usrHistoryControlOwner { + oid usrHistoryControlEntry.6; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column usrHistoryControlStatus { + oid usrHistoryControlEntry.7; + type RowStatus; + access readwrite; + description + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted."; + }; + }; + }; + + table usrHistoryObjectTable { + oid usrHistory.2; + description + "A list of data-collection configuration entries."; + + row usrHistoryObjectEntry { + oid usrHistoryObjectTable.1; + index (usrHistoryControlIndex, + usrHistoryObjectIndex); + create ; + description + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3"; + + column usrHistoryObjectIndex { + oid usrHistoryObjectEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically."; + }; + + column usrHistoryObjectVariable { + oid usrHistoryObjectEntry.2; + type ObjectIdentifier; + access readwrite; + description + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + }; + + column usrHistoryObjectSampleType { + oid usrHistoryObjectEntry.3; + type Enumeration (absoluteValue(1), deltaValue(2)); + access readwrite; + description + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + }; + }; + }; + + table usrHistoryTable { + oid usrHistory.3; + description + "A list of user-defined history entries."; + + row usrHistoryEntry { + oid usrHistoryTable.1; + index (usrHistoryControlIndex, + usrHistorySampleIndex, + usrHistoryObjectIndex); + description + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5"; + + column usrHistorySampleIndex { + oid usrHistoryEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken."; + }; + + column usrHistoryIntervalStart { + oid usrHistoryEntry.2; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval."; + }; + + column usrHistoryIntervalEnd { + oid usrHistoryEntry.3; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the end of the interval over which + this sample was measured."; + }; + + column usrHistoryAbsValue { + oid usrHistoryEntry.4; + type Gauge32; + access readonly; + description + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'."; + }; + + column usrHistoryValStatus { + oid usrHistoryEntry.5; + type Enumeration (valueNotAvailable(1), + valuePositive(2), valueNegative(3)); + access readonly; + description + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value."; + }; + }; + }; + + node probeConfig { + oid rmon.19; + }; + + scalar probeCapabilities { + oid probeConfig.1; + type Bits (etherStats(0), historyControl(1), + etherHistory(2), alarm(3), hosts(4), + hostTopN(5), matrix(6), filter(7), + capture(8), event(9), tokenRingMLStats(10), + tokenRingPStats(11), + tokenRingMLHistory(12), + tokenRingPHistory(13), ringStation(14), + ringStationOrder(15), + ringStationConfig(16), sourceRouting(17), + protocolDirectory(18), + protocolDistribution(19), + addressMapping(20), nlHost(21), + nlMatrix(22), alHost(23), alMatrix(24), + usrHistory(25), probeConfig(26)); + access readonly; + description + "An indication of the RMON MIB groups supported + on at least one interface by this probe."; + }; + + scalar probeSoftwareRev { + oid probeConfig.2; + type DisplayString (0..15); + access readonly; + description + "The software revision of this device. This string will have + a zero length if the revision is unknown."; + }; + + scalar probeHardwareRev { + oid probeConfig.3; + type DisplayString (0..31); + access readonly; + description + "The hardware revision of this device. This string will have + a zero length if the revision is unknown."; + }; + + scalar probeDateTime { + oid probeConfig.4; + type OctetString (0 | 8 | 11); + access readwrite; + description + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned."; + }; + + scalar probeResetControl { + oid probeConfig.5; + type Enumeration (running(1), warmBoot(2), + coldBoot(3)); + access readwrite; + description + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)."; + }; + + scalar probeDownloadFile { + oid probeConfig.6; + type DisplayString (0..127); + access readwrite; + status deprecated; + description + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadTFTPServer { + oid probeConfig.7; + type IpAddress; + access readwrite; + status deprecated; + description + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadAction { + oid probeConfig.8; + type Enumeration (notDownloading(1), + downloadToPROM(2), downloadToRAM(3)); + access readwrite; + status deprecated; + description + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadStatus { + oid probeConfig.9; + type Enumeration (downloadSuccess(1), + downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8)); + access readonly; + status deprecated; + description + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + table serialConfigTable { + oid probeConfig.10; + status deprecated; + description + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + + row serialConfigEntry { + oid serialConfigTable.1; + index (ifIndex); + create ; + status deprecated; + description + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface."; + + column serialMode { + oid serialConfigEntry.1; + type Enumeration (direct(1), modem(2)); + access readwrite; + default direct; + status deprecated; + description + "The type of incoming connection to be expected on this + serial interface."; + }; + + column serialProtocol { + oid serialConfigEntry.2; + type Enumeration (other(1), slip(2), ppp(3)); + access readwrite; + default slip; + status deprecated; + description + "The type of data link encapsulation to be used on this + serial interface."; + }; + + column serialTimeout { + oid serialConfigEntry.3; + type Integer32 (1..65535); + access readwrite; + default 300; + status deprecated; + description + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap."; + }; + + column serialModemInitString { + oid serialConfigEntry.4; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'."; + }; + + column serialModemHangUpString { + oid serialConfigEntry.5; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'."; + }; + + column serialModemConnectResp { + oid serialConfigEntry.6; + type DisplayString (0..255); + access readwrite; + status deprecated; + description + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'."; + }; + + column serialModemNoConnectResp { + oid serialConfigEntry.7; + type DisplayString (0..255); + access readwrite; + status deprecated; + description + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'."; + }; + + column serialDialoutTimeout { + oid serialConfigEntry.8; + type Integer32 (1..65535); + access readwrite; + default 20; + status deprecated; + description + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface."; + }; + + column serialStatus { + oid serialConfigEntry.9; + type RowStatus; + access readwrite; + status deprecated; + description + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + }; + }; + }; + + table netConfigTable { + oid probeConfig.11; + status deprecated; + description + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + + row netConfigEntry { + oid netConfigTable.1; + index (ifIndex); + create ; + status deprecated; + description + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface."; + + column netConfigIPAddress { + oid netConfigEntry.1; + type IpAddress; + access readwrite; + status deprecated; + description + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received."; + }; + + column netConfigSubnetMask { + oid netConfigEntry.2; + type IpAddress; + access readwrite; + status deprecated; + description + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received."; + }; + + column netConfigStatus { + oid netConfigEntry.3; + type RowStatus; + access readwrite; + status deprecated; + description + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + }; + }; + }; + + scalar netDefaultGateway { + oid probeConfig.12; + type IpAddress; + access readwrite; + status deprecated; + description + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0."; + }; + + table trapDestTable { + oid probeConfig.13; + status deprecated; + description + "A list of trap destination entries."; + + row trapDestEntry { + oid trapDestTable.1; + index (trapDestIndex); + create ; + status deprecated; + description + "This entry includes a destination IP address to which + traps are sent for this community."; + + column trapDestIndex { + oid trapDestEntry.1; + type Integer32 (1..65535); + access noaccess; + status deprecated; + description + "A value that uniquely identifies this trapDestEntry."; + }; + + column trapDestCommunity { + oid trapDestEntry.2; + type OctetString (0..127); + access readwrite; + status deprecated; + description + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)."; + }; + + column trapDestProtocol { + oid trapDestEntry.3; + type Enumeration (ip(1), ipx(2)); + access readwrite; + status deprecated; + description + "The protocol with which this trap is to be sent."; + }; + + column trapDestAddress { + oid trapDestEntry.4; + type OctetString; + access readwrite; + status deprecated; + description + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)."; + }; + + column trapDestOwner { + oid trapDestEntry.5; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column trapDestStatus { + oid trapDestEntry.6; + type RowStatus; + access readwrite; + status deprecated; + description + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + }; + }; + }; + + table serialConnectionTable { + oid probeConfig.14; + status deprecated; + description + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row serialConnectionEntry { + oid serialConnectionTable.1; + index (serialConnectIndex); + create ; + status deprecated; + description + "Configuration for a SLIP link over a serial line."; + + column serialConnectIndex { + oid serialConnectionEntry.1; + type Integer32 (1..65535); + access noaccess; + status deprecated; + description + "A value that uniquely identifies this serialConnection + entry."; + }; + + column serialConnectDestIpAddress { + oid serialConnectionEntry.2; + type IpAddress; + access readwrite; + status deprecated; + description + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectType { + oid serialConnectionEntry.3; + type Enumeration (direct(1), modem(2), switch(3), + modemSwitch(4)); + access readwrite; + default direct; + status deprecated; + description + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectDialString { + oid serialConnectionEntry.4; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectSwitchConnectSeq { + oid serialConnectionEntry.5; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectSwitchDisconnectSeq { + oid serialConnectionEntry.6; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectSwitchResetSeq { + oid serialConnectionEntry.7; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectOwner { + oid serialConnectionEntry.8; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column serialConnectStatus { + oid serialConnectionEntry.9; + type RowStatus; + access readwrite; + status deprecated; + description + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + }; + }; + }; + + node rmonConformance { + oid rmon.20; + }; + + node rmon2MIBCompliances { + oid rmonConformance.1; + }; + + node rmon2MIBGroups { + oid rmonConformance.2; + }; + +// +// GROUP DEFINITIONS +// + + group protocolDirectoryGroup { + oid rmon2MIBGroups.1; + members (protocolDirLastChange, + protocolDirLocalIndex, protocolDirDescr, + protocolDirType, + protocolDirAddressMapConfig, + protocolDirHostConfig, + protocolDirMatrixConfig, protocolDirOwner, + protocolDirStatus); + description + "Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list."; + }; + + group protocolDistributionGroup { + oid rmon2MIBGroups.2; + members (protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, + protocolDistControlStatus, + protocolDistStatsPkts, + protocolDistStatsOctets); + description + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment."; + }; + + group addressMapGroup { + oid rmon2MIBGroups.3; + members (addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, + addressMapControlOwner, + addressMapControlStatus, + addressMapPhysicalAddress, + addressMapLastChange); + description + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on."; + }; + + group nlHostGroup { + oid rmon2MIBGroups.4; + members (hlHostControlDataSource, + hlHostControlNlDroppedFrames, + hlHostControlNlInserts, + hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, + hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, + hlHostControlOwner, hlHostControlStatus, + nlHostInPkts, nlHostOutPkts, nlHostInOctets, + nlHostOutOctets, nlHostOutMacNonUnicastPkts, + nlHostCreateTime); + description + "Counts the amount of traffic sent from and to each network + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not + required to fully implement this group."; + }; + + group nlMatrixGroup { + oid rmon2MIBGroups.5; + members (hlMatrixControlDataSource, + hlMatrixControlNlDroppedFrames, + hlMatrixControlNlInserts, + hlMatrixControlNlDeletes, + hlMatrixControlNlMaxDesiredEntries, + hlMatrixControlAlDroppedFrames, + hlMatrixControlAlInserts, + hlMatrixControlAlDeletes, + hlMatrixControlAlMaxDesiredEntries, + hlMatrixControlOwner, hlMatrixControlStatus, + nlMatrixSDPkts, nlMatrixSDOctets, + nlMatrixSDCreateTime, nlMatrixDSPkts, + nlMatrixDSOctets, nlMatrixDSCreateTime, + nlMatrixTopNControlMatrixIndex, + nlMatrixTopNControlRateBase, + nlMatrixTopNControlTimeRemaining, + nlMatrixTopNControlGeneratedReports, + nlMatrixTopNControlDuration, + nlMatrixTopNControlRequestedSize, + nlMatrixTopNControlGrantedSize, + nlMatrixTopNControlStartTime, + nlMatrixTopNControlOwner, + nlMatrixTopNControlStatus, + nlMatrixTopNProtocolDirLocalIndex, + nlMatrixTopNSourceAddress, + nlMatrixTopNDestAddress, + nlMatrixTopNPktRate, + nlMatrixTopNReversePktRate, + nlMatrixTopNOctetRate, + nlMatrixTopNReverseOctetRate); + description + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while + the hlMatrixControlTable also has objects that control + optional alMatrixTables, implementation of the + alMatrixTables is not required to fully implement this + group."; + }; + + group alHostGroup { + oid rmon2MIBGroups.6; + members (alHostInPkts, alHostOutPkts, alHostInOctets, + alHostOutOctets, alHostCreateTime); + description + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network-Layer + Host Group."; + }; + + group alMatrixGroup { + oid rmon2MIBGroups.7; + members (alMatrixSDPkts, alMatrixSDOctets, + alMatrixSDCreateTime, alMatrixDSPkts, + alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, + alMatrixTopNControlOwner, + alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, + alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, + alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, + alMatrixTopNReverseOctetRate); + description + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation + of the Network-Layer Matrix Group."; + }; + + group usrHistoryGroup { + oid rmon2MIBGroups.8; + members (usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, + usrHistoryControlOwner, + usrHistoryControlStatus, + usrHistoryObjectVariable, + usrHistoryObjectSampleType, + usrHistoryIntervalStart, + usrHistoryIntervalEnd, usrHistoryAbsValue, + usrHistoryValStatus); + description + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe."; + }; + + group probeInformationGroup { + oid rmon2MIBGroups.9; + members (probeCapabilities, probeSoftwareRev, + probeHardwareRev, probeDateTime); + description + "This group describes various operating parameters of the + probe and controls the local time of the probe."; + }; + + group probeConfigurationGroup { + oid rmon2MIBGroups.10; + members (probeResetControl, probeDownloadFile, + probeDownloadTFTPServer, + probeDownloadAction, probeDownloadStatus, + serialMode, serialProtocol, serialTimeout, + serialModemInitString, + serialModemHangUpString, + serialModemConnectResp, + serialModemNoConnectResp, + serialDialoutTimeout, serialStatus, + netConfigIPAddress, netConfigSubnetMask, + netConfigStatus, netDefaultGateway, + trapDestCommunity, trapDestProtocol, + trapDestAddress, trapDestOwner, + trapDestStatus, serialConnectDestIpAddress, + serialConnectType, serialConnectDialString, + serialConnectSwitchConnectSeq, + serialConnectSwitchDisconnectSeq, + serialConnectSwitchResetSeq, + serialConnectOwner, serialConnectStatus); + status deprecated; + description + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it."; + }; + + group rmon1EnhancementGroup { + oid rmon2MIBGroups.11; + members (historyControlDroppedFrames, + hostControlDroppedFrames, + hostControlCreateTime, + matrixControlDroppedFrames, + matrixControlCreateTime, + channelDroppedFrames, channelCreateTime, + filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex); + description + "This group adds some enhancements to RMON-1 that help + management stations."; + }; + + group rmon1EthernetEnhancementGroup { + oid rmon2MIBGroups.12; + members (etherStatsDroppedFrames, + etherStatsCreateTime); + description + "This group adds some enhancements to RMON-1 that help + management stations."; + }; + + group rmon1TokenRingEnhancementGroup { + oid rmon2MIBGroups.13; + members (tokenRingMLStatsDroppedFrames, + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, + tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime); + status deprecated; + description + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance rmon2MIBCompliance { + oid rmon2MIBCompliances.1; + description + "Describes the requirements for conformance to + the RMON2 MIB"; + + mandatory (protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, usrHistoryGroup, + probeInformationGroup); + + optional rmon1EnhancementGroup { + description + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]."; + }; + optional rmon1EthernetEnhancementGroup { + description + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]."; + }; + + refine nlMatrixTopNControlRateBase { + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2)); + description + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase."; + }; + }; + + compliance rmon2MIBApplicationLayerCompliance { + oid rmon2MIBCompliances.2; + description + "Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements."; + + mandatory (protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, alHostGroup, + alMatrixGroup, usrHistoryGroup, + probeInformationGroup); + + optional rmon1EnhancementGroup { + description + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]."; + }; + optional rmon1EthernetEnhancementGroup { + description + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]."; + }; + + refine nlMatrixTopNControlRateBase { + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2)); + description + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase."; + }; + refine alMatrixTopNControlRateBase { + type Enumeration (alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4)); + description + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase."; + }; + }; + +}; // end of module RMON2-MIB. diff --git a/test/dumps/sming/SNMPv2-MIB b/test/dumps/sming/SNMPv2-MIB new file mode 100644 index 0000000..ca355c8 --- /dev/null +++ b/test/dumps/sming/SNMPv2-MIB @@ -0,0 +1,854 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module SNMPv2-MIB { + + import IRTF-NMRG-SMING (Counter32, DisplayString255, + TimeStamp, TimeTicks, snmpModules); + import IRTF-NMRG-SMING-SNMP (TestAndIncr, mib-2); + +// +// MODULE META INFORMATION +// + + organization + "IETF SNMPv3 Working Group"; + + contact + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006"; + + description + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices."; + + revision { + date "2002-10-16 00:00"; + description + "This revision of this MIB module was published as + RFC 3418."; + }; + revision { + date "1995-11-09 00:00"; + description + "This revision of this MIB module was published as + RFC 1907."; + }; + revision { + date "1993-04-01 00:00"; + description + "The initial revision of this MIB module was published + as RFC 1450."; + }; + + identity snmpMIB; + +// +// OBJECT DEFINITIONS +// + + + node system { + oid mib-2.1; + }; + + scalar sysDescr { + oid system.1; + type DisplayString (0..255); + access readonly; + 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."; + }; + + scalar sysObjectID { + oid system.2; + type ObjectIdentifier; + access readonly; + 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'."; + }; + + scalar sysUpTime { + oid system.3; + type TimeTicks; + access readonly; + description + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized."; + }; + + scalar sysContact { + oid system.4; + type DisplayString (0..255); + access readwrite; + 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."; + }; + + scalar sysName { + oid system.5; + type DisplayString (0..255); + access readwrite; + 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."; + }; + + scalar sysLocation { + oid system.6; + type DisplayString (0..255); + access readwrite; + 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."; + }; + + scalar sysServices { + oid system.7; + type Integer32 (0..127); + access readonly; + description + "A value which indicates the set of services that this + entity may potentially offer. 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."; + }; + + scalar sysORLastChange { + oid system.8; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID."; + }; + + table sysORTable { + oid system.9; + description + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows."; + + row sysOREntry { + oid sysORTable.1; + index (sysORIndex); + description + "An entry (conceptual row) in the sysORTable."; + + column sysORIndex { + oid sysOREntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable."; + }; + + column sysORID { + oid sysOREntry.2; + type ObjectIdentifier; + access readonly; + description + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder."; + }; + + column sysORDescr { + oid sysOREntry.3; + type DisplayString; + access readonly; + description + "A textual description of the capabilities identified + by the corresponding instance of sysORID."; + }; + + column sysORUpTime { + oid sysOREntry.4; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time this conceptual + row was last instantiated."; + }; + }; + }; + + node snmp { + oid mib-2.11; + }; + + scalar snmpInPkts { + oid snmp.1; + type Counter32; + access readonly; + description + "The total number of messages delivered to the SNMP + entity from the transport service."; + }; + + scalar snmpOutPkts { + oid snmp.2; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service."; + }; + + scalar snmpInBadVersions { + oid snmp.3; + type Counter32; + access readonly; + description + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version."; + }; + + scalar snmpInBadCommunityNames { + oid snmp.4; + type Counter32; + access readonly; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value."; + }; + + scalar snmpInBadCommunityUses { + oid snmp.5; + type Counter32; + access readonly; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value."; + }; + + scalar snmpInASNParseErrs { + oid snmp.6; + type Counter32; + access readonly; + description + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages."; + }; + + scalar snmpInTooBigs { + oid snmp.8; + type Counter32; + access readonly; + 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 was + `tooBig'."; + }; + + scalar snmpInNoSuchNames { + oid snmp.9; + type Counter32; + access readonly; + 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 was + `noSuchName'."; + }; + + scalar snmpInBadValues { + oid snmp.10; + type Counter32; + access readonly; + 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 was + `badValue'."; + }; + + scalar snmpInReadOnlys { + oid snmp.11; + type Counter32; + access readonly; + 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 was `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."; + }; + + scalar snmpInGenErrs { + oid snmp.12; + type Counter32; + access readonly; + 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 was `genErr'."; + }; + + scalar snmpInTotalReqVars { + oid snmp.13; + type Counter32; + access readonly; + 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."; + }; + + scalar snmpInTotalSetVars { + oid snmp.14; + type Counter32; + access readonly; + 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."; + }; + + scalar snmpInGetRequests { + oid snmp.15; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity."; + }; + + scalar snmpInGetNexts { + oid snmp.16; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity."; + }; + + scalar snmpInSetRequests { + oid snmp.17; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity."; + }; + + scalar snmpInGetResponses { + oid snmp.18; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity."; + }; + + scalar snmpInTraps { + oid snmp.19; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity."; + }; + + scalar snmpOutTooBigs { + oid snmp.20; + type Counter32; + access readonly; + 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 was `tooBig.'"; + }; + + scalar snmpOutNoSuchNames { + oid snmp.21; + type Counter32; + access readonly; + 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 was `noSuchName'."; + }; + + scalar snmpOutBadValues { + oid snmp.22; + type Counter32; + access readonly; + 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 was `badValue'."; + }; + + scalar snmpOutGenErrs { + oid snmp.24; + type Counter32; + access readonly; + 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 was `genErr'."; + }; + + scalar snmpOutGetRequests { + oid snmp.25; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutGetNexts { + oid snmp.26; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity."; + }; + + scalar snmpOutSetRequests { + oid snmp.27; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutGetResponses { + oid snmp.28; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutTraps { + oid snmp.29; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity."; + }; + + scalar snmpEnableAuthenTraps { + oid snmp.30; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + 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."; + }; + + scalar snmpSilentDrops { + oid snmp.31; + type Counter32; + access readonly; + description + "The total number of Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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."; + }; + + scalar snmpProxyDrops { + oid snmp.32; + type Counter32; + access readonly; + description + "The total number of Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned."; + }; + + node snmpMIB { + oid snmpModules.1; + }; + + node snmpMIBObjects { + oid snmpMIB.1; + }; + + node snmpTrap { + oid snmpMIBObjects.4; + }; + + scalar snmpTrapOID { + oid snmpTrap.1; + type ObjectIdentifier; + access notifyonly; + 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."; + }; + + scalar snmpTrapEnterprise { + oid snmpTrap.3; + type ObjectIdentifier; + access notifyonly; + description + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind."; + }; + + node snmpTraps { + oid snmpMIBObjects.5; + }; + + node snmpSet { + oid snmpMIBObjects.6; + }; + + scalar snmpSetSerialNo { + oid snmpSet.1; + type TestAndIncr; + access readwrite; + description + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP 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."; + }; + + node snmpMIBConformance { + oid snmpMIB.2; + }; + + node snmpMIBCompliances { + oid snmpMIBConformance.1; + }; + + node snmpMIBGroups { + oid snmpMIBConformance.2; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification coldStart { + oid snmpTraps.1; + description + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered."; + }; + + notification warmStart { + oid snmpTraps.2; + description + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered."; + }; + + notification authenticationFailure { + oid snmpTraps.5; + description + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated."; + }; + +// +// GROUP DEFINITIONS +// + + group snmpSetGroup { + oid snmpMIBGroups.5; + members (snmpSetSerialNo); + description + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation."; + }; + + group systemGroup { + oid snmpMIBGroups.6; + members (sysDescr, sysObjectID, sysUpTime, + sysContact, sysName, sysLocation, + sysServices, sysORLastChange, sysORID, + sysORUpTime, sysORDescr); + description + "The system group defines objects which are common to all + managed systems."; + }; + + group snmpBasicNotificationsGroup { + oid snmpMIBGroups.7; + members (coldStart, authenticationFailure); + description + "The basic notifications implemented by an SNMP entity + supporting command responder applications."; + }; + + group snmpGroup { + oid snmpMIBGroups.8; + members (snmpInPkts, snmpInBadVersions, + snmpInASNParseErrs, snmpSilentDrops, + snmpProxyDrops, snmpEnableAuthenTraps); + description + "A collection of objects providing basic instrumentation + and control of an SNMP entity."; + }; + + group snmpCommunityGroup { + oid snmpMIBGroups.9; + members (snmpInBadCommunityNames, + snmpInBadCommunityUses); + description + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication."; + }; + + group snmpObsoleteGroup { + oid snmpMIBGroups.10; + members (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 module."; + }; + + group snmpWarmStartNotificationGroup { + oid snmpMIBGroups.11; + members (warmStart); + description + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered."; + }; + + group snmpNotificationGroup { + oid snmpMIBGroups.12; + members (snmpTrapOID, snmpTrapEnterprise); + description + "These objects are required for entities + which support notification originator applications."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance snmpBasicCompliance { + oid snmpMIBCompliances.2; + status deprecated; + description + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMPv2 entities which + support community-based authentication."; + }; + }; + + compliance snmpBasicComplianceRev2 { + oid snmpMIBCompliances.3; + description + "The compliance statement for SNMP entities which + implement this MIB module."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMP entities which + support community-based authentication."; + }; + optional snmpWarmStartNotificationGroup { + description + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered."; + }; + }; + +}; // end of module SNMPv2-MIB. diff --git a/test/dumps/smiv1/IF-MIB b/test/dumps/smiv1/IF-MIB new file mode 100644 index 0000000..70b7f55 --- /dev/null +++ b/test/dumps/smiv1/IF-MIB @@ -0,0 +1,1804 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter, Gauge, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + snmpTraps + FROM SNMPv2-MIB + AutonomousType, DisplayString, PhysAddress, RowStatus, TestAndIncr, + TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB OBJECT IDENTIFIER + ::= { mib-2 31 } + +-- ifMIB MODULE-IDENTITY +-- LAST-UPDATED "200006140000Z" +-- 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 "200006140000Z" +-- DESCRIPTION +-- "Clarifications agreed upon by the Interfaces MIB WG, and +-- published as RFC 2863." +-- REVISION "199602282155Z" +-- DESCRIPTION +-- "Revisions made by the Interfaces MIB WG, and published in +-- RFC 2233." +-- REVISION "199311082155Z" +-- DESCRIPTION +-- "Initial revision, published as part of RFC 1573." +-- ::= { mib-2 31 } + + +OwnerString ::= + OCTET STRING (SIZE(0..255)) + +-- OwnerString ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "255a" +-- STATUS deprecated +-- 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 ::= + INTEGER (1..2147483647) + +-- InterfaceIndex ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "d" +-- STATUS mandatory +-- 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 INTEGER (1..2147483647) + +InterfaceIndexOrZero ::= + INTEGER (0..2147483647) + +-- InterfaceIndexOrZero ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "d" +-- STATUS mandatory +-- 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 INTEGER (0..2147483647) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +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 } + +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 entry containing management information applicable to a + particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + 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 InterfaceIndex + ACCESS read-only + STATUS mandatory + 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)) + 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 + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + ACCESS read-only + STATUS mandatory + 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 INTEGER + ACCESS read-only + STATUS mandatory + 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 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. 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 + ACCESS read-only + STATUS mandatory + 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), down(2), testing(3) } + ACCESS read-write + STATUS mandatory + 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), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + 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. 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 + 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. + + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + 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 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. + + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + 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 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. + + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + 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 2579. 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 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + INDEX { ifIndex } +-- AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter, + ifInBroadcastPkts Counter, + ifOutMulticastPkts Counter, + ifOutBroadcastPkts Counter, +-- ifHCInOctets Counter64, +-- ifHCInUcastPkts Counter64, +-- ifHCInMulticastPkts Counter64, +-- ifHCInBroadcastPkts Counter64, +-- ifHCOutOctets Counter64, +-- ifHCOutUcastPkts Counter64, +-- ifHCOutMulticastPkts Counter64, +-- ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue, + ifAlias DisplayString, + ifCounterDiscontinuityTime TimeStamp +} + +ifName OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 } + +-- ifHCInOctets OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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 +-- ACCESS read-only +-- STATUS mandatory +-- 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) } + ACCESS read-write + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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)) + ACCESS read-write + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 } + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + ACCESS not-accessible + STATUS mandatory + 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 InterfaceIndexOrZero + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + 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 } + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + 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 + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + INDEX { ifIndex } +-- AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString +} + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + 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) } + 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 + 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), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), aborted(6), + failed(7) } + 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 + 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 2579. 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 + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity which currently has the 'ownership' required to + invoke a test on this interface." + ::= { ifTestEntry 6 } + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An address for which the system will accept packets/frames + on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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) } + ACCESS read-write + STATUS mandatory + 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 } + +ifTableLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + 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 } + +ifStackLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + 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 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown TRAP-TYPE + ENTERPRISE snmpTraps + VARIABLES { ifIndex, ifAdminStatus, ifOperStatus } +-- STATUS mandatory + DESCRIPTION + "A linkDown trap signifies that the SNMP 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." + ::= 3 + +linkUp TRAP-TYPE + ENTERPRISE snmpTraps + VARIABLES { ifIndex, ifAdminStatus, ifOperStatus } +-- STATUS mandatory + DESCRIPTION + "A linkUp trap signifies that the SNMP 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." + ::= 4 + +ifGeneralGroup OBJECT IDENTIFIER + ::= { ifGroups 1 } + +-- 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 } + +ifFixedLengthGroup OBJECT IDENTIFIER + ::= { ifGroups 2 } + +-- ifFixedLengthGroup OBJECT-GROUP +-- OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, +-- ifInErrors, ifOutErrors } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { ifGroups 3 } + +-- ifHCFixedLengthGroup OBJECT-GROUP +-- OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, +-- ifOutOctets, ifInUnknownProtos, ifInErrors, +-- ifOutErrors } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { ifGroups 4 } + +-- ifPacketGroup OBJECT-GROUP +-- OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, +-- ifInErrors, ifOutErrors, ifMtu, ifInUcastPkts, +-- ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, +-- ifOutUcastPkts, ifOutMulticastPkts, +-- ifOutBroadcastPkts, ifOutDiscards, +-- ifPromiscuousMode } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { ifGroups 5 } + +-- ifHCPacketGroup OBJECT-GROUP +-- OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, +-- ifOutOctets, ifInUnknownProtos, ifInErrors, +-- ifOutErrors, ifMtu, ifInUcastPkts, +-- ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, +-- ifOutUcastPkts, ifOutMulticastPkts, +-- ifOutBroadcastPkts, ifOutDiscards, +-- ifPromiscuousMode } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { ifGroups 6 } + +-- 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 mandatory +-- 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 IDENTIFIER + ::= { ifGroups 7 } + +-- ifRcvAddressGroup OBJECT-GROUP +-- OBJECTS { ifRcvAddressStatus, ifRcvAddressType } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information on the +-- multiple addresses which an interface receives." +-- ::= { ifGroups 7 } + +ifTestGroup OBJECT IDENTIFIER + ::= { ifGroups 8 } + +-- 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 IDENTIFIER + ::= { ifGroups 9 } + +-- ifStackGroup OBJECT-GROUP +-- OBJECTS { ifStackStatus } +-- STATUS deprecated +-- DESCRIPTION +-- "The previous collection of objects providing information on +-- the layering of MIB-II interfaces." +-- ::= { ifGroups 9 } + +ifGeneralInformationGroup OBJECT IDENTIFIER + ::= { ifGroups 10 } + +-- ifGeneralInformationGroup OBJECT-GROUP +-- OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, +-- ifAdminStatus, ifOperStatus, ifLastChange, +-- ifLinkUpDownTrapEnable, ifConnectorPresent, +-- ifHighSpeed, ifName, ifNumber, ifAlias, +-- ifTableLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information applicable to +-- all network interfaces." +-- ::= { ifGroups 10 } + +ifStackGroup2 OBJECT IDENTIFIER + ::= { ifGroups 11 } + +-- ifStackGroup2 OBJECT-GROUP +-- OBJECTS { ifStackStatus, ifStackLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information on the +-- layering of MIB-II interfaces." +-- ::= { ifGroups 11 } + +ifOldObjectsGroup OBJECT IDENTIFIER + ::= { ifGroups 12 } + +-- 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 } + +ifCounterDiscontinuityGroup OBJECT IDENTIFIER + ::= { ifGroups 13 } + +-- ifCounterDiscontinuityGroup OBJECT-GROUP +-- OBJECTS { ifCounterDiscontinuityTime } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- interface counter discontinuities." +-- ::= { ifGroups 13 } + +linkUpDownNotificationsGroup OBJECT IDENTIFIER + ::= { ifGroups 14 } + +-- linkUpDownNotificationsGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { linkUp, linkDown } +-- STATUS mandatory +-- DESCRIPTION +-- "The notifications which indicate specific changes in the +-- value of ifOperStatus." +-- ::= { ifGroups 14 } + +ifCompliance OBJECT IDENTIFIER + ::= { ifCompliances 1 } + +-- ifCompliance MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "A compliance statement defined in a previous version of +-- this MIB module, for SNMP 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 RowStatus +-- { active(1) } +-- 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 } + +ifCompliance2 OBJECT IDENTIFIER + ::= { ifCompliances 2 } + +-- ifCompliance2 MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "A compliance statement defined in a previous version of +-- this MIB module, for SNMP 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 RowStatus +-- { active(1) } +-- 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 } + +ifCompliance3 OBJECT IDENTIFIER + ::= { ifCompliances 3 } + +-- ifCompliance3 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "The compliance statement for SNMP entities which have +-- network interfaces." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { ifGeneralInformationGroup, +-- linkUpDownNotificationsGroup } + +-- GROUP ifFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory 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 less than or equal to +-- 20,000,000 bits/second." + +-- GROUP ifHCFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory 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 those network interfaces which +-- are packet-oriented, and for which the value of the +-- corresponding instance of ifSpeed is less than or equal to +-- 20,000,000 bits/second." + +-- 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 20,000,000 +-- bits/second but less than or equal to 650,000,000 +-- bits/second." + +-- GROUP ifVHCPacketGroup +-- 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 ifCounterDiscontinuityGroup +-- DESCRIPTION +-- "This group is mandatory for those network interfaces that +-- are required to maintain counters (i.e., those for which one +-- of the ifFixedLengthGroup, ifHCFixedLengthGroup, +-- ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is +-- 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 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 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv1/MAU-MIB b/test/dumps/smiv1/MAU-MIB new file mode 100644 index 0000000..9103420 --- /dev/null +++ b/test/dumps/smiv1/MAU-MIB @@ -0,0 +1,1848 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + AutonomousType, TruthValue + FROM SNMPv2-TC; + +mauMod OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 6 } + +-- mauMod MODULE-IDENTITY +-- LAST-UPDATED "200704210000Z" +-- ORGANIZATION +-- "IETF Ethernet Interfaces and Hub MIB Working Group" +-- CONTACT-INFO +-- "WG charter: +-- http://www.ietf.org/html.charters/hubmib-charter.html +-- +-- Mailing Lists: +-- General Discussion: hubmib@ietf.org +-- To Subscribe: hubmib-request@ietf.org +-- In Body: subscribe your_email_address +-- +-- +-- +-- Chair: Bert Wijnen +-- Postal: Alcatel-Lucent +-- Schagen 33 +-- 3461 GL Linschoten +-- Netherlands +-- Phone: +31-348-407-775 +-- EMail: bwijnen@alcatel-lucent.com +-- +-- Editor: Edward Beili +-- Postal: Actelis Networks Inc. +-- 25 Bazel St., P.O.B. 10173 +-- Petach-Tikva 10173 +-- Israel +-- Tel: +972-3-924-3491 +-- EMail: edward.beili@actelis.com" +-- DESCRIPTION +-- "Management information for 802.3 MAUs. +-- +-- The following reference is used throughout this MIB module: +-- +-- [IEEE802.3] refers to: +-- IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information +-- technology - Telecommunications and information exchange +-- between systems - Local and metropolitan area networks - +-- Specific requirements - Part 3: Carrier sense multiple +-- access with collision detection (CSMA/CD) access method and +-- physical layer specifications'. +-- +-- Of particular interest is Clause 30, 'Management'. +-- +-- Copyright (C) The IETF Trust (2007). +-- This version of this MIB module is part of RFC 4836; +-- see the RFC itself for full legal notices." +-- REVISION "200704210000Z" +-- DESCRIPTION +-- "Updated to reference IANA maintaned textual +-- conventions for MAU types, Media Availability state, +-- Auto Negotiation capabilities, and jack types, +-- instead of using internally defined values. +-- +-- This version is published as RFC 4836." +-- REVISION "200309190000Z" +-- DESCRIPTION +-- "Updated to include support for 10 Gb/s MAUs. +-- This resulted in the following revisions: +-- - Added OBJECT-IDENTITY definitions for +-- 10 gigabit MAU types +-- +-- +-- +-- - Added fiberLC jack type to JackType TC +-- - Extended ifMauTypeListBits with bits for +-- the 10 gigabit MAU types +-- - Added enumerations to ifMauMediaAvailable, +-- and updated its DESCRIPTION to reflect +-- behaviour at 10 Gb/s +-- - Added 64-bit version of ifMauFalseCarriers +-- and added mauIfGrpHCStats object group to +-- contain the new object +-- - Deprecated mauModIfCompl2 and replaced it +-- with mauModIfCompl3, which includes the new +-- object group +-- +-- This version published as RFC 3636." +-- REVISION "199908240400Z" +-- DESCRIPTION +-- "This version published as RFC 2668. Updated +-- to include support for 1000 Mb/sec +-- MAUs and flow control negotiation." +-- REVISION "199710310000Z" +-- DESCRIPTION +-- "Version published as RFC 2239." +-- REVISION "199309300000Z" +-- DESCRIPTION +-- "Initial version, published as RFC 1515." +-- ::= { snmpDot3MauMgt 6 } + + +JackType ::= + INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), fAUI(6), + mAUI(7), fiberSC(8), fiberMIC(9), fiberST(10), + telco(11), mtrj(12), hssdc(13), fiberLC(14) } + +-- JackType ::= TEXTUAL-CONVENTION +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS TC IS DEPRECATED ********** +-- +-- This TC has been deprecated in favour of +-- IANAifJackType. +-- +-- Common enumeration values for repeater +-- and interface MAU jack types." +-- SYNTAX INTEGER +-- { other(1), rj45(2), rj45S(3), db9(4), bnc(5), +-- fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), +-- fiberST(10), telco(11), mtrj(12), hssdc(13), +-- fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex INTEGER, + rpMauPortIndex INTEGER, + rpMauIndex INTEGER, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter, + rpMauFalseCarriers Counter +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." +-- REFERENCE +-- "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." +-- REFERENCE +-- "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +-- 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +-- acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex INTEGER, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex INTEGER, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter, + ifMauFalseCarriers Counter, + ifMauTypeList INTEGER, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits +-- ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." +-- REFERENCE +-- "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +-- 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +-- acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- +-- +-- +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +-- ifMauHCFalseCarriers OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "A count of the number of false carrier events +-- during IDLE in 100BASE-X and 1000BASE-X links. +-- +-- For all other MAU types, this counter will +-- always indicate zero. This counter does not +-- increment at the symbol rate. +-- +-- This counter is a 64-bit version of +-- ifMauFalseCarriers. Since the 32-bit version of +-- this counter can roll over very quickly, +-- management stations are advised to poll the +-- 64-bit version instead, in order to avoid loss +-- of information. +-- +-- 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." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- +-- +-- +-- RFC 2863, ifCounterDiscontinuityTime." +-- ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex INTEGER, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex INTEGER, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq INTEGER, + broadMauTranslationFreq INTEGER +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." +-- REFERENCE +-- "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.9, +-- aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.9, +-- aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability INTEGER, + ifMauAutoNegCapAdvertised INTEGER, + ifMauAutoNegCapReceived INTEGER, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, +-- and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.3, +-- aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.5, +-- aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.2.1, +-- acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.5, +-- aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap TRAP-TYPE + ENTERPRISE snmpDot3MauMgt + VARIABLES { rpMauJabberState } +-- STATUS mandatory + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= 1 + +ifMauJabberTrap TRAP-TYPE + ENTERPRISE snmpDot3MauMgt + VARIABLES { ifMauJabberState } +-- STATUS mandatory + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= 2 + +mauRpGrpBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 1 } + +-- mauRpGrpBasic OBJECT-GROUP +-- OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, +-- rpMauType, rpMauStatus, rpMauMediaAvailable, +-- rpMauMediaAvailableStateExits, rpMauJabberState, +-- rpMauJabberingStateEnters } +-- STATUS mandatory +-- DESCRIPTION +-- "Basic conformance group for MAUs attached to +-- repeater ports. This group is also the +-- conformance specification for RFC 1515 +-- implementations." +-- ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT IDENTIFIER + ::= { mauModObjGrps 2 } + +-- mauRpGrp100Mbs OBJECT-GROUP +-- OBJECTS { rpMauFalseCarriers } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- repeater ports with 100 Mb/s or greater +-- capability." +-- ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT IDENTIFIER + ::= { mauModObjGrps 3 } + +-- mauRpGrpJack OBJECT-GROUP +-- OBJECTS { rpJackType } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- repeater ports with managed jacks." +-- ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 4 } + +-- mauIfGrpBasic OBJECT-GROUP +-- OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, +-- ifMauMediaAvailable, ifMauMediaAvailableStateExits, +-- ifMauJabberState, ifMauJabberingStateEnters } +-- STATUS mandatory +-- DESCRIPTION +-- "Basic conformance group for MAUs attached to +-- interfaces. This group also provides a +-- conformance specification for RFC 1515 +-- implementations." +-- ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT IDENTIFIER + ::= { mauModObjGrps 5 } + +-- mauIfGrp100Mbs OBJECT-GROUP +-- OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, +-- ifMauAutoNegSupported } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- +-- Conformance group for MAUs attached to +-- interfaces with 100 Mb/s capability. +-- +-- This object group has been deprecated in favor +-- of mauIfGrpHighCapacity." +-- ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT IDENTIFIER + ::= { mauModObjGrps 6 } + +-- mauIfGrpJack OBJECT-GROUP +-- OBJECTS { ifJackType } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with managed jacks." +-- ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT IDENTIFIER + ::= { mauModObjGrps 7 } + +-- mauIfGrpAutoNeg OBJECT-GROUP +-- OBJECTS { ifMauAutoNegAdminStatus, +-- ifMauAutoNegRemoteSignaling, ifMauAutoNegConfig, +-- ifMauAutoNegCapability, ifMauAutoNegCapAdvertised, +-- ifMauAutoNegCapReceived, ifMauAutoNegRestart } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- +-- Conformance group for MAUs attached to +-- interfaces with managed auto-negotiation. +-- +-- This object group has been deprecated in favor +-- of mauIfGrpAutoNeg2." +-- ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 8 } + +-- mauBroadBasic OBJECT-GROUP +-- OBJECTS { broadMauIfIndex, broadMauIndex, +-- broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, +-- broadMauTranslationFreq } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- Conformance group for broadband MAUs attached +-- to interfaces. +-- +-- This object group is deprecated. There have +-- been no reported implementations of this group, +-- and it was felt to be unlikely that there will +-- be any future implementations." +-- ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT IDENTIFIER + ::= { mauModObjGrps 9 } + +-- mauIfGrpHighCapacity OBJECT-GROUP +-- OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, +-- ifMauDefaultType, ifMauAutoNegSupported } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with 100 Mb/s or greater capability." +-- ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT IDENTIFIER + ::= { mauModObjGrps 10 } + +-- mauIfGrpAutoNeg2 OBJECT-GROUP +-- OBJECTS { ifMauAutoNegAdminStatus, +-- ifMauAutoNegRemoteSignaling, ifMauAutoNegConfig, +-- ifMauAutoNegCapabilityBits, +-- ifMauAutoNegCapAdvertisedBits, +-- ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with managed auto-negotiation." +-- ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT IDENTIFIER + ::= { mauModObjGrps 11 } + +-- mauIfGrpAutoNeg1000Mbps OBJECT-GROUP +-- OBJECTS { ifMauAutoNegRemoteFaultAdvertised, +-- ifMauAutoNegRemoteFaultReceived } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for 1000Mbps MAUs attached to +-- interfaces with managed auto-negotiation." +-- ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT IDENTIFIER + ::= { mauModObjGrps 12 } + +-- mauIfGrpHCStats OBJECT-GROUP +-- OBJECTS { ifMauHCFalseCarriers } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance for high capacity statistics for +-- MAUs attached to interfaces." +-- ::= { mauModObjGrps 12 } + +rpMauNotifications OBJECT IDENTIFIER + ::= { mauModNotGrps 1 } + +-- rpMauNotifications NOTIFICATION-GROUP +-- NOTIFICATIONS { rpMauJabberTrap } +-- STATUS mandatory +-- DESCRIPTION +-- "Notifications for repeater MAUs." +-- ::= { mauModNotGrps 1 } + +ifMauNotifications OBJECT IDENTIFIER + ::= { mauModNotGrps 2 } + +-- ifMauNotifications NOTIFICATION-GROUP +-- NOTIFICATIONS { ifMauJabberTrap } +-- STATUS mandatory +-- DESCRIPTION +-- "Notifications for interface MAUs." +-- ::= { mauModNotGrps 2 } + +mauModRpCompl OBJECT IDENTIFIER + ::= { mauModCompls 1 } + +-- mauModRpCompl MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- Compliance for MAUs attached to repeater +-- ports. +-- +-- This compliance is deprecated and replaced by +-- mauModRpCompl2, which corrects an oversight by +-- allowing rpMauStatus to be implemented +-- read-only." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauRpGrpBasic } + +-- GROUP mauRpGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s or +-- greater capability." + +-- GROUP mauRpGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP rpMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to repeater ports." + +-- ::= { mauModCompls 1 } + +mauModIfCompl OBJECT IDENTIFIER + ::= { mauModCompls 2 } + +-- mauModIfCompl MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- +-- Compliance for MAUs attached to interfaces. +-- This compliance is deprecated and replaced by +-- mauModIfCompl2." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- capability." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauBroadBasic +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for broadband MAUs." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- ::= { mauModCompls 2 } + +mauModIfCompl2 OBJECT IDENTIFIER + ::= { mauModCompls 3 } + +-- mauModIfCompl2 MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- +-- Compliance for MAUs attached to interfaces. +-- +-- This compliance is deprecated and replaced by +-- mauModIfCompl3." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrpHighCapacity +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- or greater capability." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg2 +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauIfGrpAutoNeg1000Mbps +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s or greater +-- capability and support managed +-- auto-negotiation." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- OBJECT ifMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 3 } + +mauModRpCompl2 OBJECT IDENTIFIER + ::= { mauModCompls 4 } + +-- mauModRpCompl2 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Compliance for MAUs attached to repeater +-- ports. +-- +-- Note that compliance with this compliance +-- statement requires compliance with the +-- snmpRptrModCompl MODULE-COMPLIANCE statement of +-- the SNMP-REPEATER-MIB (RFC 2108)." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauRpGrpBasic } + +-- GROUP mauRpGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s or +-- greater capability." + +-- GROUP mauRpGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP rpMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to repeater ports." + +-- OBJECT rpMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 4 } + +mauModIfCompl3 OBJECT IDENTIFIER + ::= { mauModCompls 5 } + +-- mauModIfCompl3 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Compliance for MAUs attached to interfaces. +-- +-- Note that compliance with this compliance +-- statement requires compliance with the +-- ifCompliance3 MODULE-COMPLIANCE statement of the +-- IF-MIB (RFC 2863) and the dot3Compliance2 +-- MODULE-COMPLIANCE statement of the +-- EtherLike-MIB (RFC3635)." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrpHighCapacity +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- or greater capability." + +-- GROUP mauIfGrpHCStats +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s capacity, and +-- is recommended for MAUs that have 100Mb/s +-- capacity." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg2 +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauIfGrpAutoNeg1000Mbps +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s or greater +-- capability and support managed +-- auto-negotiation." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- OBJECT ifMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv1/Makefile.am b/test/dumps/smiv1/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv1/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv1/Makefile.in b/test/dumps/smiv1/Makefile.in new file mode 100644 index 0000000..7a50c8b --- /dev/null +++ b/test/dumps/smiv1/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv1 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv1/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv1/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv1/RMON2-MIB b/test/dumps/smiv1/RMON2-MIB new file mode 100644 index 0000000..5bfbefa --- /dev/null +++ b/test/dumps/smiv1/RMON2-MIB @@ -0,0 +1,5676 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OBJECT-TYPE + FROM RFC-1212 + Counter, Gauge, IpAddress, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + DisplayString, RowStatus, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon OBJECT IDENTIFIER + ::= { mib-2 16 } + +-- rmon MODULE-IDENTITY +-- LAST-UPDATED "200605020000Z" +-- ORGANIZATION +-- "IETF RMON MIB Working Group" +-- CONTACT-INFO +-- "Author: +-- Steve Waldbusser +-- Phone: +1-650-948-6500 +-- Fax : +1-650-745-0671 +-- Email: waldbusser@nextbeacon.com +-- +-- Working Group Chair: +-- Andy Bierman +-- E-mail: ietf@andybierman.com +-- +-- Working Group Mailing List: +-- To subscribe send email to: " +-- DESCRIPTION +-- "The MIB module for managing remote monitoring +-- device implementations. This MIB module +-- extends the architecture introduced in the original +-- RMON MIB as specified in RFC 2819. +-- +-- Copyright (C) The Internet Society (2006). This version of +-- this MIB module is part of RFC 4502; see the RFC itself for +-- full legal notices." +-- REVISION "200605020000Z" +-- DESCRIPTION +-- "This version updates the proposed-standard version of the +-- RMON2 MIB (published as RFC 2021) by adding 2 new +-- enumerations to the nlMatrixTopNControlRateBase object and +-- 4 new enumerations to the alMatrixTopNControlRateBase object. +-- These new enumerations support the creation of high-capacity +-- topN reports in the High Capacity RMON MIB [RFC3273]. +-- +-- Additionally, the following objects have been deprecated, as +-- they have not had enough independent implementations to +-- demonstrate interoperability to meet the requirements of a +-- Draft Standard: +-- +-- probeDownloadFile +-- probeDownloadTFTPServer +-- probeDownloadAction +-- probeDownloadStatus +-- +-- +-- +-- serialMode +-- serialProtocol +-- serialTimeout +-- serialModemInitString +-- serialModemHangUpString +-- serialModemConnectResp +-- serialModemNoConnectResp +-- serialDialoutTimeout +-- serialStatus +-- serialConnectDestIpAddress +-- serialConnectType +-- serialConnectDialString +-- serialConnectSwitchConnectSeq +-- serialConnectSwitchDisconnectSeq +-- serialConnectSwitchResetSeq +-- serialConnectOwner +-- serialConnectStatus +-- netConfigIPAddress +-- netConfigSubnetMask +-- netConfigStatus +-- netDefaultGateway +-- tokenRingMLStats2DroppedFrames +-- tokenRingMLStats2CreateTime +-- tokenRingPStats2DroppedFrames +-- tokenRingPStats2CreateTime +-- ringStationControl2DroppedFrames +-- ringStationControl2CreateTime +-- sourceRoutingStats2DroppedFrames +-- sourceRoutingStats2CreateTime +-- trapDestIndex +-- trapDestCommunity +-- trapDestProtocol +-- trapDestAddress +-- trapDestOwner +-- trapDestStatus +-- +-- In addition, two corrections were made. The LastCreateTime +-- Textual Convention had been defined with a base type of +-- another textual convention, which isn't allowed in SMIv2. The +-- definition has been modified to use TimeTicks as the base +-- type. +-- +-- Further, the SerialConfigEntry SEQUENCE definition included +-- sub-typing information that is not allowed in SMIv2. This +-- information has been deleted. Ranges were added to a number of +-- objects and textual-conventions to constrain their maximum +-- (and sometimes minimum) sizes. The addition of these ranges +-- documents existing practice for these objects. These objects +-- +-- +-- +-- are: +-- ControlString +-- protocolDirID +-- protocolDirParameters +-- addressMapNetworkAddress +-- nlHostAddress +-- nlMatrixSDSourceAddress +-- nlMatrixSDDestAddress +-- nlMatrixDSSourceAddress +-- nlMatrixDSDestAddress +-- nlMatrixTopNSourceAddress +-- nlMatrixTopNDestAddress +-- alHostEntry +-- alMatrixSDEntry +-- alMatrixDSEntry +-- alMatrixTopNSourceAddress +-- alMatrixTopNDestAddress +-- +-- Finally, the TimeFilter TC has been updated to encourage agent +-- implementations that allow a MIB walk to behave well even when +-- performed by an application that is not aware of the special +-- TimeFilter semantics." +-- REVISION "200207080000Z" +-- DESCRIPTION +-- "Added new enumerations to support the High-Capacity RMON +-- MIB as defined in RFC 3273. Also fixed some typos and +-- added clarifications." +-- REVISION "199605270000Z" +-- DESCRIPTION +-- "Original version. Published as RFC 2021." +-- ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= + Gauge + +-- ZeroBasedCounter32 ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "This TC describes an object that counts events with the +-- following semantics: objects of this type will be set to +-- zero(0) on creation and will thereafter count appropriate +-- events, wrapping back to zero(0) when the value 2^32 is +-- reached. +-- +-- Provided that an application discovers the new object within +-- the minimum time to wrap, it can use the initial value as a +-- delta since it last polled the table of which this object is +-- part. It is important for a management station to be aware of +-- this minimum time and the actual time between polls, and to +-- discard data if the actual time is too long or there is no +-- defined minimum time. +-- +-- Typically, this TC is used in tables where the INDEX space is +-- constantly changing and/or the TimeFilter mechanism is in use." +-- SYNTAX Gauge + +LastCreateTime ::= + TimeTicks + +-- LastCreateTime ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "This TC describes an object that stores the value of the +-- sysUpTime object at the last time its entry was created. +-- +-- This can be used for polling applications to determine that an +-- entry has been deleted and re-created between polls, causing +-- an otherwise undetectable discontinuity in the data. +-- +-- If sysUpTime is reset to zero as a result of a re- +-- initialization of the network management (sub)system, then +-- the values of all LastCreateTime objects are also reset. +-- However, after approximately 497 days without a re- +-- initialization, the sysUpTime object will reach 2^^32-1 and +-- then increment 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 + +TimeFilter ::= + TimeTicks + +-- TimeFilter ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "To be used for the index to a table. Allows an application +-- to download only those rows changed since a particular time. +-- +-- +-- +-- Note that this is not a history mechanism. Only current values +-- of underlying objects are returned; saved instance values +-- associated with particular values of sysUpTime are not. +-- +-- An entry is considered changed if the value of any object in the +-- entry changes, if the row is created, or if any object in the +-- entry is created or deleted. Note that deleted entries cannot +-- be detected or downloaded. +-- +-- A time-filtered conceptual table is created by inserting a +-- single object of SYNTAX TimeFilter as the first INDEX component +-- in a copy of an existing basic conceptual table (i.e., any +-- SEQUENCE without a TimeFilter INDEX component). Thus, for +-- each conceptual entry 'I' in the basic table, there exists N +-- conceptual entries in the time-filtered version, indexed N.I, +-- where 'N' is equal to the value of sysUpTime. +-- +-- When an application retrieves conceptual instances from a +-- time-filtered table, and an INDEX value is provided for the +-- TimeFilter INDEX component 'N', the agent will only consider +-- returning basic conceptual entries (e.g., 'fooColumn.N.I') if +-- any column within the basic conceptual entry has changed since +-- sysUpTime 'N'. If not, the basic conceptual entry will +-- be ignored for the particular retrieval operation. +-- +-- When sysUpTime is equal to zero, this table shall be empty. +-- +-- One conceptual entry exists for each past value of sysUpTime, +-- except that the whole table is purged should sysUpTime wrap. +-- +-- As an entry in a time-filtered table is updated (i.e., one of +-- the columns in the basic conceptual table is changed), new +-- conceptual entries are also created in the time-filtered version +-- (which still shares the now updated object values with all other +-- instances). The number of unique time-filtered instances that +-- are created is determined by the value of sysUpTime at which the +-- basic entry was last updated. One unique instance will exist +-- for each value of sysUpTime at the last update time for the row. +-- However, a new TimeFilter index instance is created for each new +-- sysUpTime value. The TimeFilter index values not associated +-- with entry updates are called duplicate time-filtered instances. +-- +-- After some deployment experience, it has been determined that +-- a time-filtered table is more efficient if the agent +-- stops a MIB walk operation by skipping over rows with a +-- TimeFilter index value higher than the value in the received +-- GetNext/GetBulk request. That is, instead of incrementing a +-- TimeFilter index value, the agent will continue to the next +-- +-- +-- +-- object or table. As a consequence, GetNext or GetBulk +-- operations will provide only one pass through a time-filtered +-- table. +-- +-- It is suggested that an agent implement a time-filtered table +-- in this manner to improve performance and avoid a MIB walk +-- getting stuck in time-filtered tables. It is, however, still +-- acceptable for an agent to implement a time-filtered table in +-- the traditional manner (i.e., every conceptual time-filtered +-- instance is returned in GetNext and GetBulk PDU responses), and +-- management applications must be able to deal with such +-- traditional implementations. +-- +-- See the appendix for further discussion of this textual +-- convention. +-- +-- The following example is provided to demonstrate TimeFilter +-- behavior: +-- +-- Consider the following basic conceptual table, basicFooTable. +-- (Note that the basic version of a time-filtered table may not +-- actually be defined.) +-- +-- basicFooTable: +-- +-- basicFooTable ... +-- INDEX { fooIndex } +-- +-- BasicFooEntry { +-- fooIndex Integer32, +-- fooCounts Counter32 +-- } +-- +-- For this example, the basicFooTable contains two static +-- conceptual entries (fooIndex equals '1' and '2'), created at +-- time zero. It also contains one dynamic conceptual entry +-- (fooIndex equals '3'), which is created at time '3' and deleted +-- at time '7'. +-- +-- The time-filtered version of the basicFooTable could be defined +-- as follows: +-- +-- FooTable: +-- +-- fooTable ... +-- INDEX { fooTimeMark, fooIndex } +-- +-- FooEntry { +-- +-- +-- +-- fooTimeMark TimeFilter, +-- fooIndex Integer32, +-- fooCounts Counter32 +-- } +-- +-- +-- Note that entries exist in the time-filtered conceptual table +-- only if they actually exist in the underlying (basic) table. +-- +-- For this example, the fooTable will have three underlying +-- basic entries (fooIndex == 1, 2, and 3), with the following +-- activity (for sysUpTime equal 0 to 9): +-- +-- - fooEntry.N.1 is created at time '0' and most recently +-- updated at time '6' to the value '5'. +-- - fooEntry.N.2 is created at time '0' and most recently +-- updated at time '8' to the value '9'. +-- - fooEntry.N.3 is created at time '3', updated at time '5' +-- to the value '17', and deleted at time '7'. +-- +-- The following tables show the values that would be returned for +-- MIB walk operations with various TimeFilter values, done at +-- different times. An application issues a retrieval request at +-- time 'T', with a TimeFilter value, 'N' (typically set to a lower +-- value, such as the value of sysUpTime at the last polling cycle). +-- +-- The following values would be returned in a MIB walk of +-- fooCounts.N if T equals '0' and N equals '0': +-- +-- fooCounts.N.I Value +-- ========================== +-- fooCounts.0.1 0 +-- fooCounts.0.2 0 +-- +-- Note that nothing is returned for fooCounts.0.3, since that +-- entry does not exist at sysUpTime equals '0'. +-- +-- The following values would be returned in a full (traditional) MIB +-- walk of fooCounts.N if T equals '3' and N equals '0': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.0.1 0 +-- fooCounts.0.2 0 +-- fooCounts.0.3 0 +-- fooCounts.1.3 0 +-- fooCounts.2.3 0 +-- fooCounts.3.3 0 +-- +-- +-- +-- Note that there are no instances for T equals 1 or 2 for the +-- first two values of N, as these entries did not change +-- since they were created at time '0'. +-- +-- Note that the current value for 'fooCounts.N.3' is returned +-- here, even for values of N less than '3' (when the entry was +-- created). The agent only considers the current existence of an +-- entry in the TimeFilter algorithm, not the time when the entry +-- was created. +-- +-- Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', +-- and 'fooCounts.2.3' are duplicates and can be suppressed by the +-- agent in a MIB walk. +-- +-- The following values would be returned in a full (traditional) +-- MIB walk of fooCounts.N if T equals '6' and N equals '3': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.3.1 5 +-- fooCounts.3.3 17 +-- fooCounts.4.1 5 +-- fooCounts.4.3 17 +-- fooCounts.5.1 5 +-- fooCounts.5.3 17 +-- fooCounts.6.1 5 +-- +-- Note that no instances for entry 'fooCounts.N.2' are returned, +-- since it has not changed since time '3'. +-- +-- Note that all instances except 'fooCounts.5.3' and +-- 'fooCounts.6.1' are duplicates and can be suppressed by the +-- agent in a MIB walk. +-- +-- The following values would be returned in a full (traditional) +-- MIB walk of fooCounts.N if T equals '9' and N equals '6': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.6.1 5 +-- fooCounts.6.2 9 +-- fooCounts.7.2 9 +-- fooCounts.8.2 9 +-- +-- Note that no instances for entry 'fooCounts.N.3' are returned, +-- since it was deleted at time '7'. +-- +-- Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' +-- +-- +-- +-- are duplicates and can be suppressed by the agent in a MIB +-- walk." +-- SYNTAX TimeTicks + +DataSource ::= + OBJECT IDENTIFIER + +-- DataSource ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "Identifies the source of the data that the associated +-- function is configured to analyze. This source can be any +-- interface on this device. +-- +-- In order to identify a particular interface, this +-- object shall identify the instance of the ifIndex +-- object, defined in [RFC2863], for the desired interface. +-- +-- For example, if an entry were to receive data from +-- interface #1, this object would be set to ifIndex.1." +-- SYNTAX OBJECT IDENTIFIER + +ControlString ::= + OCTET STRING (SIZE(0..255)) + +-- ControlString ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "This data type is used to communicate with a modem or a +-- +-- +-- +-- serial data switch. A ControlString contains embedded +-- commands to control how the device will interact with the +-- remote device through the serial interface. Commands are +-- represented as two-character sequences beginning with +-- the '^' character. +-- +-- The following commands are recognized by the device (note +-- that command characters are case sensitive): +-- +-- ^s Send string that follows, which is terminated by the +-- next command or the end of string. +-- ^c Delay for the number of seconds that follows. Toss +-- out any data received rather than store it in a +-- buffer for parsing. +-- ^t Set timeout to the value represented by the decimal +-- digits that follow. The default timeout is 20 +-- seconds. Note that this timeout may be overridden +-- by a smaller serialTimeout configured for the +-- associated serial interface (see serialConfigTable). +-- ^w Wait for the reply string that follows, which is +-- terminated by the next command or the end of string. +-- Partial and case-insensitive matching is applied, i.e., +-- if the reply string (any case combination) is found +-- anywhere in the received string, then the a match is +-- found. If the current timeout elapses without a match, +-- then the remaining control string is ignored. +-- ^! The ^ character. +-- ^d Delay the number of seconds specified by the decimal +-- digits that follow. +-- ^b Send break for the number of milliseconds specified by +-- the decimal digits that follow. If no digits follow, +-- break will be enforced for 250 milliseconds by default. +-- +-- The following ASCII control characters may be inserted into +-- the '^s' send string or the '^w' reply string: +-- +-- ^@ 0x00 +-- ^A 0x01 +-- .. +-- ^M 0x0D +-- .. +-- ^Z 0x1A +-- ^[ 0x1B +-- ^ 0x1C +-- ^] 0x1D +-- ^^ 0x1E +-- ^_ 0x1F +-- +-- +-- +-- +-- Binary data may also be inserted into the data stream. The +-- control sequence for each byte of binary data is ^0x##, where +-- ## is the hexadecimal representation of the data byte. Two +-- ASCII characters (0-9, a-f, A-F) must follow the '^0x' +-- control prefix. For example, '^0x0D^0x0A' is interpreted as a +-- carriage return followed by a line feed." +-- SYNTAX OCTET STRING (SIZE(0..255)) + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { etherStatsIndex } +-- AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { etherStats2Entry 1 } + +etherStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { etherStats2Entry 2 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { tokenRingMLStatsIndex } +-- AUGMENTS { tokenRingMLStatsEntry } + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingMLStats2Entry 1 } + +tokenRingMLStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingMLStats2Entry 2 } + +tokenRingPStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { tokenRingPStatsIndex } +-- AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingPStats2Entry 1 } + +tokenRingPStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingPStats2Entry 2 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { historyControlIndex } +-- AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { historyControl2Entry 1 } + +hostControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HostControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { hostControlIndex } +-- AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hostControl2Entry 1 } + +hostControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { hostControl2Entry 2 } + +matrixControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { matrixControlIndex } +-- AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { matrixControl2Entry 1 } + +matrixControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { matrixControl2Entry 2 } + +channel2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Channel2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { channelIndex } +-- AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { channel2Entry 1 } + +channelCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { channel2Entry 2 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + INDEX { filterIndex } +-- AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex INTEGER, + filterProtocolDirLocalIndex INTEGER +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet." + DEFVAL { 0 } + ::= { filter2Entry 1 } + +filterProtocolDirLocalIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry." + DEFVAL { 0 } + ::= { filter2Entry 2 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { ringStationControlIfIndex } +-- AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter, + ringStationControlCreateTime LastCreateTime +} + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { ringStationControl2Entry 1 } + +ringStationControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls." + ::= { ringStationControl2Entry 2 } + +sourceRoutingStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { sourceRoutingStatsIfIndex } +-- AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter, + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { sourceRoutingStats2Entry 1 } + +sourceRoutingStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { sourceRoutingStats2Entry 2 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups." + ::= { protocolDir 2 } + +protocolDirEntry OBJECT-TYPE + SYNTAX ProtocolDirEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex INTEGER, + protocolDirDescr DisplayString, + protocolDirType OCTET STRING, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error." + ::= { protocolDirEntry 1 } + +protocolDirParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..32)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero." + ::= { protocolDirEntry 2 } + +protocolDirLocalIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)." + ::= { protocolDirEntry 4 } + +protocolDirType OBJECT-TYPE + SYNTAX OCTET STRING +-- { extensible(0), addressRecognitionCapable(1) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero." + ::= { protocolDirEntry 5 } + +protocolDirAddressMapConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable." + ::= { protocolDirEntry 6 } + +protocolDirHostConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 7 } + +protocolDirMatrixConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 8 } + +protocolDirOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted." + ::= { protocolDirEntry 10 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface." + ::= { protocolDist 1 } + +protocolDistControlEntry OBJECT-TYPE + SYNTAX ProtocolDistControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7" + INDEX { protocolDistControlIndex } + ::= { protocolDistControlTable 1 } + +ProtocolDistControlEntry ::= SEQUENCE { + protocolDistControlIndex INTEGER, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)." + ::= { protocolDistControlEntry 2 } + +protocolDistControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { protocolDistControlEntry 3 } + +protocolDistControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { protocolDistControlEntry 4 } + +protocolDistControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted." + ::= { protocolDistControlEntry 6 } + +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed." + ::= { protocolDist 2 } + +protocolDistStatsEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsTable 1 } + +ProtocolDistStatsEntry ::= SEQUENCE { + protocolDistStatsPkts ZeroBasedCounter32, + protocolDistStatsOctets ZeroBasedCounter32 +} + +protocolDistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { protocolDistStatsEntry 1 } + +protocolDistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +addressMapInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 1 } + +addressMapDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 2 } + +addressMapMaxDesiredEntries OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { addressMap 3 } + +addressMapControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available." + ::= { addressMap 4 } + +addressMapControlEntry OBJECT-TYPE + SYNTAX AddressMapControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1" + INDEX { addressMapControlIndex } + ::= { addressMapControlTable 1 } + +AddressMapControlEntry ::= SEQUENCE { + addressMapControlIndex INTEGER, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { addressMapControlEntry 3 } + +addressMapControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted." + ::= { addressMapControlEntry 5 } + +addressMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)." + ::= { addressMap 5 } + +addressMapEntry OBJECT-TYPE + SYNTAX AddressMapEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource } + ::= { addressMapTable 1 } + +AddressMapEntry ::= SEQUENCE { + addressMapTimeMark TimeFilter, + addressMapNetworkAddress OCTET STRING, + addressMapSource OBJECT IDENTIFIER, + addressMapPhysicalAddress OCTET STRING, + addressMapLastChange TimeStamp +} + +addressMapTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { addressMapEntry 2 } + +addressMapSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater." + ::= { addressMapEntry 3 } + +addressMapPhysicalAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol." + ::= { addressMapEntry 4 } + +addressMapLastChange OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently." + ::= { addressMapEntry 5 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available." + ::= { nlHost 1 } + +hlHostControlEntry OBJECT-TYPE + SYNTAX HlHostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1" + INDEX { hlHostControlIndex } + ::= { hlHostControlTable 1 } + +HlHostControlEntry ::= SEQUENCE { + hlHostControlIndex INTEGER, + hlHostControlDataSource DataSource, + hlHostControlNlDroppedFrames Counter, + hlHostControlNlInserts Counter, + hlHostControlNlDeletes Counter, + hlHostControlNlMaxDesiredEntries INTEGER, + hlHostControlAlDroppedFrames Counter, + hlHostControlAlInserts Counter, + hlHostControlAlDeletes Counter, + hlHostControlAlMaxDesiredEntries INTEGER, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry." + ::= { hlHostControlEntry 1 } + +hlHostControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)." + ::= { hlHostControlEntry 2 } + +hlHostControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 3 } + +hlHostControlNlInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 4 } + +hlHostControlNlDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 5 } + +hlHostControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 6 } + +hlHostControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 7 } + +hlHostControlAlInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 8 } + +hlHostControlAlDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 9 } + +hlHostControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 10 } + +hlHostControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted." + ::= { hlHostControlEntry 12 } + +nlHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors." + ::= { nlHost 2 } + +nlHostEntry OBJECT-TYPE + SYNTAX NlHostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostTable 1 } + +NlHostEntry ::= SEQUENCE { + nlHostTimeMark TimeFilter, + nlHostAddress OCTET STRING, + nlHostInPkts ZeroBasedCounter32, + nlHostOutPkts ZeroBasedCounter32, + nlHostInOctets ZeroBasedCounter32, + nlHostOutOctets ZeroBasedCounter32, + nlHostOutMacNonUnicastPkts ZeroBasedCounter32, + nlHostCreateTime LastCreateTime +} + +nlHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlHostEntry 2 } + +nlHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 3 } + +nlHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 4 } + +nlHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 5 } + +nlHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 6 } + +nlHostOutMacNonUnicastPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlHostEntry 7 } + +nlHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlHostEntry 8 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table." + ::= { nlMatrix 1 } + +hlMatrixControlEntry OBJECT-TYPE + SYNTAX HlMatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex INTEGER, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter, + hlMatrixControlNlInserts Counter, + hlMatrixControlNlDeletes Counter, + hlMatrixControlNlMaxDesiredEntries INTEGER, + hlMatrixControlAlDroppedFrames Counter, + hlMatrixControlAlInserts Counter, + hlMatrixControlAlDeletes Counter, + hlMatrixControlAlMaxDesiredEntries INTEGER, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry." + ::= { hlMatrixControlEntry 1 } + +hlMatrixControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)." + ::= { hlMatrixControlEntry 2 } + +hlMatrixControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 3 } + +hlMatrixControlNlInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 4 } + +hlMatrixControlNlDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 5 } + +hlMatrixControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 6 } + +hlMatrixControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 7 } + +hlMatrixControlAlInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 8 } + +hlMatrixControlAlDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 9 } + +hlMatrixControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 10 } + +hlMatrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address." + ::= { nlMatrix 2 } + +nlMatrixSDEntry OBJECT-TYPE + SYNTAX NlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress } + ::= { nlMatrixSDTable 1 } + +NlMatrixSDEntry ::= SEQUENCE { + nlMatrixSDTimeMark TimeFilter, + nlMatrixSDSourceAddress OCTET STRING, + nlMatrixSDDestAddress OCTET STRING, + nlMatrixSDPkts ZeroBasedCounter32, + nlMatrixSDOctets ZeroBasedCounter32, + nlMatrixSDCreateTime LastCreateTime +} + +nlMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 2 } + +nlMatrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 3 } + +nlMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixSDEntry 4 } + +nlMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDEntry 5 } + +nlMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixSDEntry 6 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address." + ::= { nlMatrix 3 } + +nlMatrixDSEntry OBJECT-TYPE + SYNTAX NlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress } + ::= { nlMatrixDSTable 1 } + +NlMatrixDSEntry ::= SEQUENCE { + nlMatrixDSTimeMark TimeFilter, + nlMatrixDSSourceAddress OCTET STRING, + nlMatrixDSDestAddress OCTET STRING, + nlMatrixDSPkts ZeroBasedCounter32, + nlMatrixDSOctets ZeroBasedCounter32, + nlMatrixDSCreateTime LastCreateTime +} + +nlMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 2 } + +nlMatrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 3 } + +nlMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixDSEntry 4 } + +nlMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSEntry 5 } + +nlMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixDSEntry 6 } + +nlMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { nlMatrix 4 } + +nlMatrixTopNControlEntry OBJECT-TYPE + SYNTAX NlMatrixTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3" + INDEX { nlMatrixTopNControlIndex } + ::= { nlMatrixTopNControlTable 1 } + +NlMatrixTopNControlEntry ::= SEQUENCE { + nlMatrixTopNControlIndex INTEGER, + nlMatrixTopNControlMatrixIndex INTEGER, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining INTEGER, + nlMatrixTopNControlGeneratedReports Counter, + nlMatrixTopNControlDuration INTEGER, + nlMatrixTopNControlRequestedSize INTEGER, + nlMatrixTopNControlGrantedSize INTEGER, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 2 } + +nlMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { nlMatrixTopNControlEntry 4 } + +nlMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry." + ::= { nlMatrixTopNControlEntry 6 } + +nlMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent." + ::= { nlMatrixTopNControlEntry 11 } + +nlMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets." + ::= { nlMatrix 5 } + +nlMatrixTopNEntry OBJECT-TYPE + SYNTAX NlMatrixTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10" + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNTable 1 } + +NlMatrixTopNEntry ::= SEQUENCE { + nlMatrixTopNIndex INTEGER, + nlMatrixTopNProtocolDirLocalIndex INTEGER, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge, + nlMatrixTopNReversePktRate Gauge, + nlMatrixTopNOctetRate Gauge, + nlMatrixTopNReverseOctetRate Gauge +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries." + ::= { nlMatrixTopNEntry 1 } + +nlMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 3 } + +nlMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 4 } + +nlMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 5 } + +nlMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object." + ::= { nlMatrixTopNEntry 6 } + +nlMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 7 } + +nlMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object." + ::= { nlMatrixTopNEntry 8 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable." + ::= { alHost 1 } + +alHostEntry OBJECT-TYPE + SYNTAX AlHostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostTable 1 } + +AlHostEntry ::= SEQUENCE { + alHostTimeMark TimeFilter, + alHostInPkts ZeroBasedCounter32, + alHostOutPkts ZeroBasedCounter32, + alHostInOctets ZeroBasedCounter32, + alHostOutOctets ZeroBasedCounter32, + alHostCreateTime LastCreateTime +} + +alHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 2 } + +alHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 3 } + +alHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 4 } + +alHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 5 } + +alHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alHostEntry 6 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable." + ::= { alMatrix 1 } + +alMatrixSDEntry OBJECT-TYPE + SYNTAX AlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixSDEntry 2 } + +alMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixSDEntry 3 } + +alMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixSDEntry 4 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable." + ::= { alMatrix 2 } + +alMatrixDSEntry OBJECT-TYPE + SYNTAX AlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixDSEntry 2 } + +alMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixDSEntry 3 } + +alMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixDSEntry 4 } + +alMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { alMatrix 3 } + +alMatrixTopNControlEntry OBJECT-TYPE + SYNTAX AlMatrixTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3" + INDEX { alMatrixTopNControlIndex } + ::= { alMatrixTopNControlTable 1 } + +AlMatrixTopNControlEntry ::= SEQUENCE { + alMatrixTopNControlIndex INTEGER, + alMatrixTopNControlMatrixIndex INTEGER, + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining INTEGER, + alMatrixTopNControlGeneratedReports Counter, + alMatrixTopNControlDuration INTEGER, + alMatrixTopNControlRequestedSize INTEGER, + alMatrixTopNControlGrantedSize INTEGER, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 2 } + +alMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 3 } + +alMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { alMatrixTopNControlEntry 4 } + +alMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry." + ::= { alMatrixTopNControlEntry 6 } + +alMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent." + ::= { alMatrixTopNControlEntry 11 } + +alMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets." + ::= { alMatrix 4 } + +alMatrixTopNEntry OBJECT-TYPE + SYNTAX AlMatrixTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10" + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNTable 1 } + +AlMatrixTopNEntry ::= SEQUENCE { + alMatrixTopNIndex INTEGER, + alMatrixTopNProtocolDirLocalIndex INTEGER, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + alMatrixTopNAppProtocolDirLocalIndex INTEGER, + alMatrixTopNPktRate Gauge, + alMatrixTopNReversePktRate Gauge, + alMatrixTopNOctetRate Gauge, + alMatrixTopNReverseOctetRate Gauge +} + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries." + ::= { alMatrixTopNEntry 1 } + +alMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 3 } + +alMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 4 } + +alMatrixTopNAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 6 } + +alMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object." + ::= { alMatrixTopNEntry 7 } + +alMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 8 } + +alMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object." + ::= { alMatrixTopNEntry 9 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1" + INDEX { usrHistoryControlIndex } + ::= { usrHistoryControlTable 1 } + +UsrHistoryControlEntry ::= SEQUENCE { + usrHistoryControlIndex INTEGER, + usrHistoryControlObjects INTEGER, + usrHistoryControlBucketsRequested INTEGER, + usrHistoryControlBucketsGranted INTEGER, + usrHistoryControlInterval INTEGER, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system." + ::= { usrHistoryControlEntry 1 } + +usrHistoryControlObjects OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)." + ::= { usrHistoryControlEntry 2 } + +usrHistoryControlBucketsRequested OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow." + ::= { usrHistoryControlEntry 4 } + +usrHistoryControlInterval OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + DEFVAL { 1800 } + ::= { usrHistoryControlEntry 5 } + +usrHistoryControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted." + ::= { usrHistoryControlEntry 7 } + +usrHistoryObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3" + INDEX { usrHistoryControlIndex, usrHistoryObjectIndex } + ::= { usrHistoryObjectTable 1 } + +UsrHistoryObjectEntry ::= SEQUENCE { + usrHistoryObjectIndex INTEGER, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically." + ::= { usrHistoryObjectEntry 1 } + +usrHistoryObjectVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 2 } + +usrHistoryObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 3 } + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of user-defined history entries." + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryTable 1 } + +UsrHistoryEntry ::= SEQUENCE { + usrHistorySampleIndex INTEGER, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken." + ::= { usrHistoryEntry 1 } + +usrHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryEntry 4 } + +usrHistoryValStatus OBJECT-TYPE + SYNTAX INTEGER { valueNotAvailable(1), valuePositive(2), + valueNegative(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value." + ::= { usrHistoryEntry 5 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + SYNTAX OCTET STRING +-- { etherStats(0), historyControl(1), etherHistory(2), +-- alarm(3), hosts(4), hostTopN(5), matrix(6), +-- filter(7), capture(8), event(9), +-- tokenRingMLStats(10), tokenRingPStats(11), +-- tokenRingMLHistory(12), tokenRingPHistory(13), +-- ringStation(14), ringStationOrder(15), +-- ringStationConfig(16), sourceRouting(17), +-- protocolDirectory(18), protocolDistribution(19), +-- addressMapping(20), nlHost(21), nlMatrix(22), +-- alHost(23), alMatrix(24), usrHistory(25), +-- probeConfig(26) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of the RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 1 } + +probeSoftwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..15)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The software revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 2 } + +probeHardwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..31)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The hardware revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 3 } + +probeDateTime OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 8 | 11)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + SYNTAX INTEGER { running(1), warmBoot(2), coldBoot(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { downloadSuccess(1), downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) } + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface." + INDEX { ifIndex } + ::= { serialConfigTable 1 } + +SerialConfigEntry ::= SEQUENCE { + serialMode INTEGER, + serialProtocol INTEGER, + serialTimeout INTEGER, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout INTEGER, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap." + DEFVAL { 300 } + ::= { serialConfigEntry 3 } + +serialModemInitString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'." + ::= { serialConfigEntry 4 } + +serialModemHangUpString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'." + ::= { serialConfigEntry 5 } + +serialModemConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'." + ::= { serialConfigEntry 6 } + +serialModemNoConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'." + ::= { serialConfigEntry 7 } + +serialDialoutTimeout OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface." + DEFVAL { 20 } + ::= { serialConfigEntry 8 } + +serialStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConfigEntry 9 } + +netConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF NetConfigEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface." + INDEX { ifIndex } + ::= { netConfigTable 1 } + +NetConfigEntry ::= SEQUENCE { + netConfigIPAddress IpAddress, + netConfigSubnetMask IpAddress, + netConfigStatus RowStatus +} + +netConfigIPAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { netConfigEntry 3 } + +netDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { probeConfig 12 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex INTEGER, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 2 } + +trapDestProtocol OBJECT-TYPE + SYNTAX INTEGER { ip(1), ipx(2) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 4 } + +trapDestOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { trapDestEntry 6 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex INTEGER, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 2 } + +serialConnectType OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2), switch(3), modemSwitch(4) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + DEFVAL { direct } + ::= { serialConnectionEntry 3 } + +serialConnectDialString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 4 } + +serialConnectSwitchConnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 5 } + +serialConnectSwitchDisconnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 6 } + +serialConnectSwitchResetSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 7 } + +serialConnectOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConnectionEntry 9 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 2 } + +protocolDirectoryGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 1 } + +-- protocolDirectoryGroup OBJECT-GROUP +-- OBJECTS { protocolDirLastChange, protocolDirLocalIndex, +-- protocolDirDescr, protocolDirType, +-- protocolDirAddressMapConfig, protocolDirHostConfig, +-- protocolDirMatrixConfig, protocolDirOwner, +-- protocolDirStatus } +-- STATUS mandatory +-- DESCRIPTION +-- "Lists the inventory of protocols the probe has the +-- capability of monitoring and allows the addition, deletion, +-- and configuration of entries in this list." +-- ::= { rmon2MIBGroups 1 } + +protocolDistributionGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 2 } + +-- protocolDistributionGroup OBJECT-GROUP +-- OBJECTS { protocolDistControlDataSource, +-- protocolDistControlDroppedFrames, +-- protocolDistControlCreateTime, +-- protocolDistControlOwner, protocolDistControlStatus, +-- protocolDistStatsPkts, protocolDistStatsOctets } +-- STATUS mandatory +-- DESCRIPTION +-- "Collects the relative amounts of octets and packets for the +-- different protocols detected on a network segment." +-- ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 3 } + +-- addressMapGroup OBJECT-GROUP +-- OBJECTS { addressMapInserts, addressMapDeletes, +-- addressMapMaxDesiredEntries, +-- addressMapControlDataSource, +-- addressMapControlDroppedFrames, +-- addressMapControlOwner, addressMapControlStatus, +-- addressMapPhysicalAddress, addressMapLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "Lists MAC address to network address bindings discovered by +-- the probe and what interface they were last seen on." +-- ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 4 } + +-- nlHostGroup OBJECT-GROUP +-- OBJECTS { hlHostControlDataSource, +-- hlHostControlNlDroppedFrames, +-- hlHostControlNlInserts, hlHostControlNlDeletes, +-- hlHostControlNlMaxDesiredEntries, +-- hlHostControlAlDroppedFrames, +-- hlHostControlAlInserts, hlHostControlAlDeletes, +-- hlHostControlAlMaxDesiredEntries, +-- hlHostControlOwner, hlHostControlStatus, +-- nlHostInPkts, nlHostOutPkts, nlHostInOctets, +-- nlHostOutOctets, nlHostOutMacNonUnicastPkts, +-- nlHostCreateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "Counts the amount of traffic sent from and to each network +-- address discovered by the probe. Note that while the +-- hlHostControlTable also has objects that control an optional +-- alHostTable, implementation of the alHostTable is not +-- required to fully implement this group." +-- ::= { rmon2MIBGroups 4 } + +nlMatrixGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 5 } + +-- nlMatrixGroup OBJECT-GROUP +-- OBJECTS { hlMatrixControlDataSource, +-- hlMatrixControlNlDroppedFrames, +-- hlMatrixControlNlInserts, hlMatrixControlNlDeletes, +-- hlMatrixControlNlMaxDesiredEntries, +-- hlMatrixControlAlDroppedFrames, +-- hlMatrixControlAlInserts, hlMatrixControlAlDeletes, +-- hlMatrixControlAlMaxDesiredEntries, +-- hlMatrixControlOwner, hlMatrixControlStatus, +-- nlMatrixSDPkts, nlMatrixSDOctets, +-- nlMatrixSDCreateTime, nlMatrixDSPkts, +-- nlMatrixDSOctets, nlMatrixDSCreateTime, +-- nlMatrixTopNControlMatrixIndex, +-- nlMatrixTopNControlRateBase, +-- nlMatrixTopNControlTimeRemaining, +-- nlMatrixTopNControlGeneratedReports, +-- nlMatrixTopNControlDuration, +-- nlMatrixTopNControlRequestedSize, +-- nlMatrixTopNControlGrantedSize, +-- nlMatrixTopNControlStartTime, +-- nlMatrixTopNControlOwner, nlMatrixTopNControlStatus, +-- nlMatrixTopNProtocolDirLocalIndex, +-- nlMatrixTopNSourceAddress, nlMatrixTopNDestAddress, +-- nlMatrixTopNPktRate, nlMatrixTopNReversePktRate, +-- nlMatrixTopNOctetRate, nlMatrixTopNReverseOctetRate } +-- STATUS mandatory +-- DESCRIPTION +-- "Counts the amount of traffic sent between each pair of +-- network addresses discovered by the probe. Note that while +-- the hlMatrixControlTable also has objects that control +-- optional alMatrixTables, implementation of the +-- alMatrixTables is not required to fully implement this +-- group." +-- ::= { rmon2MIBGroups 5 } + +alHostGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 6 } + +-- alHostGroup OBJECT-GROUP +-- OBJECTS { alHostInPkts, alHostOutPkts, alHostInOctets, +-- alHostOutOctets, alHostCreateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "Counts the amount of traffic, by protocol, sent from and to +-- each network address discovered by the probe. Implementation +-- of this group requires implementation of the Network-Layer +-- Host Group." +-- ::= { rmon2MIBGroups 6 } + +alMatrixGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 7 } + +-- alMatrixGroup OBJECT-GROUP +-- OBJECTS { alMatrixSDPkts, alMatrixSDOctets, +-- alMatrixSDCreateTime, alMatrixDSPkts, +-- alMatrixDSOctets, alMatrixDSCreateTime, +-- alMatrixTopNControlMatrixIndex, +-- alMatrixTopNControlRateBase, +-- alMatrixTopNControlTimeRemaining, +-- alMatrixTopNControlGeneratedReports, +-- alMatrixTopNControlDuration, +-- alMatrixTopNControlRequestedSize, +-- alMatrixTopNControlGrantedSize, +-- alMatrixTopNControlStartTime, +-- alMatrixTopNControlOwner, alMatrixTopNControlStatus, +-- alMatrixTopNProtocolDirLocalIndex, +-- alMatrixTopNSourceAddress, alMatrixTopNDestAddress, +-- alMatrixTopNAppProtocolDirLocalIndex, +-- alMatrixTopNPktRate, alMatrixTopNReversePktRate, +-- alMatrixTopNOctetRate, alMatrixTopNReverseOctetRate } +-- STATUS mandatory +-- DESCRIPTION +-- "Counts the amount of traffic, by protocol, sent between each +-- pair of network addresses discovered by the +-- probe. Implementation of this group requires implementation +-- of the Network-Layer Matrix Group." +-- ::= { rmon2MIBGroups 7 } + +usrHistoryGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 8 } + +-- usrHistoryGroup OBJECT-GROUP +-- OBJECTS { usrHistoryControlObjects, +-- usrHistoryControlBucketsRequested, +-- usrHistoryControlBucketsGranted, +-- usrHistoryControlInterval, usrHistoryControlOwner, +-- usrHistoryControlStatus, usrHistoryObjectVariable, +-- usrHistoryObjectSampleType, usrHistoryIntervalStart, +-- usrHistoryIntervalEnd, usrHistoryAbsValue, +-- usrHistoryValStatus } +-- STATUS mandatory +-- DESCRIPTION +-- "The usrHistoryGroup provides user-defined collection of +-- historical information from MIB objects on the probe." +-- ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 9 } + +-- probeInformationGroup OBJECT-GROUP +-- OBJECTS { probeCapabilities, probeSoftwareRev, +-- probeHardwareRev, probeDateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "This group describes various operating parameters of the +-- probe and controls the local time of the probe." +-- ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 10 } + +-- probeConfigurationGroup OBJECT-GROUP +-- OBJECTS { probeResetControl, probeDownloadFile, +-- probeDownloadTFTPServer, probeDownloadAction, +-- probeDownloadStatus, serialMode, serialProtocol, +-- serialTimeout, serialModemInitString, +-- serialModemHangUpString, serialModemConnectResp, +-- serialModemNoConnectResp, serialDialoutTimeout, +-- serialStatus, netConfigIPAddress, +-- netConfigSubnetMask, netConfigStatus, +-- netDefaultGateway, trapDestCommunity, +-- trapDestProtocol, trapDestAddress, trapDestOwner, +-- trapDestStatus, serialConnectDestIpAddress, +-- serialConnectType, serialConnectDialString, +-- serialConnectSwitchConnectSeq, +-- serialConnectSwitchDisconnectSeq, +-- serialConnectSwitchResetSeq, serialConnectOwner, +-- serialConnectStatus } +-- STATUS deprecated +-- DESCRIPTION +-- "This group controls the configuration of various operating +-- parameters of the probe. This group is not referenced by any +-- MODULE-COMPLIANCE macro because it is 'grandfathered' from +-- more recent MIB review rules that would require it." +-- ::= { rmon2MIBGroups 10 } + +rmon1EnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 11 } + +-- rmon1EnhancementGroup OBJECT-GROUP +-- OBJECTS { historyControlDroppedFrames, +-- hostControlDroppedFrames, hostControlCreateTime, +-- matrixControlDroppedFrames, matrixControlCreateTime, +-- channelDroppedFrames, channelCreateTime, +-- filterProtocolDirDataLocalIndex, +-- filterProtocolDirLocalIndex } +-- STATUS mandatory +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations." +-- ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 12 } + +-- rmon1EthernetEnhancementGroup OBJECT-GROUP +-- OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations." +-- ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 13 } + +-- rmon1TokenRingEnhancementGroup OBJECT-GROUP +-- OBJECTS { tokenRingMLStatsDroppedFrames, +-- tokenRingMLStatsCreateTime, +-- tokenRingPStatsDroppedFrames, +-- tokenRingPStatsCreateTime, +-- ringStationControlDroppedFrames, +-- ringStationControlCreateTime, +-- sourceRoutingStatsDroppedFrames, +-- sourceRoutingStatsCreateTime } +-- STATUS deprecated +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations. This group is not referenced by any +-- MODULE-COMPLIANCE macro because it is 'grandfathered' from +-- more recent MIB review rules that would require it." +-- ::= { rmon2MIBGroups 13 } + +rmon2MIBCompliance OBJECT IDENTIFIER + ::= { rmon2MIBCompliances 1 } + +-- rmon2MIBCompliance MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Describes the requirements for conformance to +-- the RMON2 MIB" + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { protocolDirectoryGroup, +-- protocolDistributionGroup, addressMapGroup, +-- nlHostGroup, nlMatrixGroup, usrHistoryGroup, +-- probeInformationGroup } + +-- GROUP rmon1EnhancementGroup +-- DESCRIPTION +-- "The rmon1EnhancementGroup is mandatory for systems +-- that implement RMON [RFC2819]." + +-- GROUP rmon1EthernetEnhancementGroup +-- DESCRIPTION +-- "The rmon1EthernetEnhancementGroup is optional and is +-- appropriate for systems that implement the Ethernet +-- group of RMON [RFC2819]." + +-- OBJECT nlMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- values of nlMatrixTopNControlRateBase." + +-- ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance OBJECT IDENTIFIER + ::= { rmon2MIBCompliances 2 } + +-- rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Describes the requirements for conformance to +-- the RMON2 MIB with Application-Layer Enhancements." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { protocolDirectoryGroup, +-- protocolDistributionGroup, addressMapGroup, +-- nlHostGroup, nlMatrixGroup, alHostGroup, +-- alMatrixGroup, usrHistoryGroup, +-- probeInformationGroup } + +-- GROUP rmon1EnhancementGroup +-- DESCRIPTION +-- "The rmon1EnhancementGroup is mandatory for systems +-- that implement RMON [RFC2819]." + +-- GROUP rmon1EthernetEnhancementGroup +-- DESCRIPTION +-- "The rmon1EthernetEnhancementGroup is optional and is +-- appropriate for systems that implement the Ethernet +-- group of RMON [RFC2819]." + +-- OBJECT nlMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- values of nlMatrixTopNControlRateBase." + +-- OBJECT alMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { alMatrixTopNTerminalsPkts(1), +-- alMatrixTopNTerminalsOctets(2), +-- alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- +-- +-- +-- values of alMatrixTopNControlRateBase." + +-- ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv1/SNMPv2-MIB b/test/dumps/smiv1/SNMPv2-MIB new file mode 100644 index 0000000..353271d --- /dev/null +++ b/test/dumps/smiv1/SNMPv2-MIB @@ -0,0 +1,848 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB OBJECT IDENTIFIER + ::= { snmpModules 1 } + +-- snmpMIB MODULE-IDENTITY +-- LAST-UPDATED "200210160000Z" +-- ORGANIZATION +-- "IETF SNMPv3 Working Group" +-- CONTACT-INFO +-- "WG-EMail: snmpv3@lists.tislabs.com +-- Subscribe: snmpv3-request@lists.tislabs.com +-- +-- Co-Chair: Russ Mundy +-- Network Associates Laboratories +-- postal: 15204 Omega Drive, Suite 300 +-- Rockville, MD 20850-4601 +-- USA +-- EMail: mundy@tislabs.com +-- phone: +1 301 947-7107 +-- +-- Co-Chair: David Harrington +-- Enterasys Networks +-- postal: 35 Industrial Way +-- P. O. Box 5005 +-- Rochester, NH 03866-5005 +-- USA +-- EMail: dbh@enterasys.com +-- phone: +1 603 337-2614 +-- +-- Editor: Randy Presuhn +-- BMC Software, Inc. +-- postal: 2141 North First Street +-- San Jose, CA 95131 +-- USA +-- EMail: randy_presuhn@bmc.com +-- phone: +1 408 546-1006" +-- DESCRIPTION +-- "The MIB module for SNMP entities. +-- +-- Copyright (C) The Internet Society (2002). This +-- version of this MIB module is part of RFC 3418; +-- see the RFC itself for full legal notices." +-- REVISION "200210160000Z" +-- DESCRIPTION +-- "This revision of this MIB module was published as +-- RFC 3418." +-- REVISION "199511090000Z" +-- DESCRIPTION +-- "This revision of this MIB module was published as +-- RFC 1907." +-- REVISION "199304010000Z" +-- DESCRIPTION +-- "The initial revision of this MIB module was published +-- as RFC 1450." +-- ::= { snmpModules 1 } + + +system OBJECT IDENTIFIER + ::= { mib-2 1 } + +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." + ::= { 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.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. If no contact information is + known, the value is the zero-length string." + ::= { 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. If the name is unknown, the value is + the zero-length string." + ::= { 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'). If the location is unknown, the + value is the zero-length string." + ::= { 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 may potentially offer. 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 } + +sysORLastChange OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows." + ::= { system 9 } + +sysOREntry OBJECT-TYPE + SYNTAX SysOREntry + ACCESS not-accessible + STATUS mandatory + 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) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable." + ::= { sysOREntry 1 } + +sysORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder." + ::= { sysOREntry 2 } + +sysORDescr OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of the capabilities identified + by the corresponding instance of sysORID." + ::= { sysOREntry 3 } + +sysORUpTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this conceptual + row was last instantiated." + ::= { sysOREntry 4 } + +snmp OBJECT IDENTIFIER + ::= { mib-2 11 } + +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 obsolete + 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 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 community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { 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 entity when decoding received SNMP messages." + ::= { snmp 6 } + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter + 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 was + `tooBig'." + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter + 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 was + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter + 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 was + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter + 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 was `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 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 was `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter + 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 Counter + 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 Counter + 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 Counter + 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 Counter + 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 Counter + 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 Counter + 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 Counter + 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 was `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter + 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 was `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter + 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 was `badValue'." + ::= { snmp 22 } + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter + 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 was `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter + 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 Counter + 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 Counter + 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 Counter + 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 Counter + ACCESS read-only + STATUS obsolete + 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 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +snmpTrap OBJECT IDENTIFIER + ::= { snmpMIBObjects 4 } + +snmpTrapOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + 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 } + +snmpTrapEnterprise OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +snmpSet OBJECT IDENTIFIER + ::= { snmpMIBObjects 6 } + +snmpSetSerialNo OBJECT-TYPE + SYNTAX TestAndIncr + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP 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 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered." + ::= 1 + +warmStart TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= 2 + +authenticationFailure TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= 5 + +snmpSetGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 5 } + +-- snmpSetGroup OBJECT-GROUP +-- OBJECTS { snmpSetSerialNo } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects which allow several cooperating +-- command generator applications to coordinate their +-- use of the set operation." +-- ::= { snmpMIBGroups 5 } + +systemGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 6 } + +-- systemGroup OBJECT-GROUP +-- OBJECTS { sysDescr, sysObjectID, sysUpTime, sysContact, +-- sysName, sysLocation, sysServices, sysORLastChange, +-- sysORID, sysORUpTime, sysORDescr } +-- STATUS mandatory +-- DESCRIPTION +-- "The system group defines objects which are common to all +-- managed systems." +-- ::= { snmpMIBGroups 6 } + +snmpBasicNotificationsGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 7 } + +-- snmpBasicNotificationsGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { coldStart, authenticationFailure } +-- STATUS mandatory +-- DESCRIPTION +-- "The basic notifications implemented by an SNMP entity +-- supporting command responder applications." +-- ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 8 } + +-- snmpGroup OBJECT-GROUP +-- OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, +-- snmpSilentDrops, snmpProxyDrops, +-- snmpEnableAuthenTraps } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing basic instrumentation +-- and control of an SNMP entity." +-- ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 9 } + +-- snmpCommunityGroup OBJECT-GROUP +-- OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing basic instrumentation +-- of a SNMP entity which supports community-based +-- authentication." +-- ::= { snmpMIBGroups 9 } + +snmpObsoleteGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 10 } + +-- 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 module." +-- ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 11 } + +-- snmpWarmStartNotificationGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { warmStart } +-- STATUS mandatory +-- DESCRIPTION +-- "An additional notification for an SNMP entity supporting +-- command responder applications, if it is able to reinitialize +-- itself such that its configuration is unaltered." +-- ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 12 } + +-- snmpNotificationGroup OBJECT-GROUP +-- OBJECTS { snmpTrapOID, snmpTrapEnterprise } +-- STATUS mandatory +-- DESCRIPTION +-- "These objects are required for entities +-- which support notification originator applications." +-- ::= { snmpMIBGroups 12 } + +snmpBasicCompliance OBJECT IDENTIFIER + ::= { snmpMIBCompliances 2 } + +-- snmpBasicCompliance MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "The compliance statement for SNMPv2 entities which +-- implement the SNMPv2 MIB. +-- +-- This compliance statement is replaced by +-- snmpBasicComplianceRev2." + +-- 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 } + +snmpBasicComplianceRev2 OBJECT IDENTIFIER + ::= { snmpMIBCompliances 3 } + +-- snmpBasicComplianceRev2 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "The compliance statement for SNMP entities which +-- implement this MIB module." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { snmpGroup, snmpSetGroup, +-- systemGroup, snmpBasicNotificationsGroup } + +-- GROUP snmpCommunityGroup +-- DESCRIPTION +-- "This group is mandatory for SNMP entities which +-- support community-based authentication." + +-- GROUP snmpWarmStartNotificationGroup +-- DESCRIPTION +-- "This group is mandatory for an SNMP entity which +-- supports command responder applications, and is +-- able to reinitialize itself such that its +-- configuration is unaltered." + +-- ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/smiv2-smiv2/IF-MIB b/test/dumps/smiv2-smiv2/IF-MIB new file mode 100644 index 0000000..928af3d --- /dev/null +++ b/test/dumps/smiv2-smiv2/IF-MIB @@ -0,0 +1,1721 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpTraps + FROM SNMPv2-MIB + Counter32, Counter64, Gauge32, Integer32, MODULE-IDENTITY, + NOTIFICATION-TYPE, OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + AutonomousType, DisplayString, PhysAddress, RowStatus, + TEXTUAL-CONVENTION, TestAndIncr, TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + 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 "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 ::= 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) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +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 } + +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, + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, + ifSpecific OBJECT IDENTIFIER +} + +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), down(2), testing(3) } + 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), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + 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 2579. 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 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +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 } + +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 } + +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 InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + 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 InterfaceIndexOrZero + 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 } + +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), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), 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 2579. 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 } + +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 } + +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 } + +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 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMP 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 linkUp trap signifies that the SNMP 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 } + +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 } + +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 } + +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 } + +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 } + +ifStackGroup2 OBJECT-GROUP + OBJECTS { ifStackStatus, ifStackLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 11 } + +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 } + +ifCounterDiscontinuityGroup OBJECT-GROUP + OBJECTS { ifCounterDiscontinuityTime } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + interface counter discontinuities." + ::= { ifGroups 13 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +ifCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 RowStatus { active(1) } + 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 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 RowStatus { active(1) } + 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 } + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + 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 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + 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 ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + 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 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 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv2-smiv2/MAU-MIB b/test/dumps/smiv2-smiv2/MAU-MIB new file mode 100644 index 0000000..7ef0922 --- /dev/null +++ b/test/dumps/smiv2-smiv2/MAU-MIB @@ -0,0 +1,1776 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Counter64, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI + AutonomousType, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC; + +mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + REVISION "200704210000Z" + DESCRIPTION + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + REVISION "200309190000Z" + DESCRIPTION + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + REVISION "199908240400Z" + DESCRIPTION + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + REVISION "199710310000Z" + DESCRIPTION + "Version published as RFC 2239." + REVISION "199309300000Z" + DESCRIPTION + "Initial version, published as RFC 1515." + ::= { snmpDot3MauMgt 6 } + + +JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), + fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), + fiberST(10), telco(11), mtrj(12), hssdc(13), + fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE + "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE + "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + +ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + +mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, rpMauType, + rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, rpMauJabberState, + rpMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, + ifMauMediaAvailable, ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, + ifMauAutoNegSupported } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, ifMauAutoNegCapReceived, + ifMauAutoNegRestart } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, + broadMauTranslationFreq } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived } + STATUS current + DESCRIPTION + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION + "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + +rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + +ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + +mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + ::= { mauModCompls 1 } + +mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION + "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + ::= { mauModCompls 2 } + +mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 3 } + +mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 4 } + +mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv2-smiv2/Makefile.am b/test/dumps/smiv2-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv2-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv2-smiv2/Makefile.in b/test/dumps/smiv2-smiv2/Makefile.in new file mode 100644 index 0000000..26d959a --- /dev/null +++ b/test/dumps/smiv2-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv2-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv2-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv2-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv2-smiv2/RMON2-MIB b/test/dumps/smiv2-smiv2/RMON2-MIB new file mode 100644 index 0000000..8937060 --- /dev/null +++ b/test/dumps/smiv2-smiv2/RMON2-MIB @@ -0,0 +1,5590 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Gauge32, Integer32, IpAddress, MODULE-IDENTITY, + OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon MODULE-IDENTITY + LAST-UPDATED "200605020000Z" + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + REVISION "200605020000Z" + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + REVISION "200207080000Z" + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + REVISION "199605270000Z" + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use." + SYNTAX Gauge32 + +LastCreateTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment 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 + +TimeFilter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + SYNTAX TimeTicks + +DataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1." + SYNTAX OBJECT IDENTIFIER + +ControlString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed." + SYNTAX OCTET STRING (SIZE(0..255)) + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter32, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { etherStats2Entry 1 } + +etherStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { etherStats2Entry 2 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingMLStatsEntry } + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter32, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingMLStats2Entry 1 } + +tokenRingMLStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingMLStats2Entry 2 } + +tokenRingPStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter32, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingPStats2Entry 1 } + +tokenRingPStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingPStats2Entry 2 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter32 +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { historyControl2Entry 1 } + +hostControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter32, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hostControl2Entry 1 } + +hostControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { hostControl2Entry 2 } + +matrixControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter32, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { matrixControl2Entry 1 } + +matrixControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { matrixControl2Entry 2 } + +channel2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter32, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { channel2Entry 1 } + +channelCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { channel2Entry 2 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex Integer32, + filterProtocolDirLocalIndex Integer32 +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet." + DEFVAL { 0 } + ::= { filter2Entry 1 } + +filterProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry." + DEFVAL { 0 } + ::= { filter2Entry 2 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter32, + ringStationControlCreateTime LastCreateTime +} + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { ringStationControl2Entry 1 } + +ringStationControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls." + ::= { ringStationControl2Entry 2 } + +sourceRoutingStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter32, + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { sourceRoutingStats2Entry 1 } + +sourceRoutingStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { sourceRoutingStats2Entry 2 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups." + ::= { protocolDir 2 } + +protocolDirEntry OBJECT-TYPE + SYNTAX ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error." + ::= { protocolDirEntry 1 } + +protocolDirParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero." + ::= { protocolDirEntry 2 } + +protocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)." + ::= { protocolDirEntry 4 } + +protocolDirType OBJECT-TYPE + SYNTAX BITS { extensible(0), addressRecognitionCapable(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero." + ::= { protocolDirEntry 5 } + +protocolDirAddressMapConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable." + ::= { protocolDirEntry 6 } + +protocolDirHostConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 7 } + +protocolDirMatrixConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 8 } + +protocolDirOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted." + ::= { protocolDirEntry 10 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface." + ::= { protocolDist 1 } + +protocolDistControlEntry OBJECT-TYPE + SYNTAX ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7" + INDEX { protocolDistControlIndex } + ::= { protocolDistControlTable 1 } + +ProtocolDistControlEntry ::= SEQUENCE { + protocolDistControlIndex Integer32, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter32, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)." + ::= { protocolDistControlEntry 2 } + +protocolDistControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { protocolDistControlEntry 3 } + +protocolDistControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { protocolDistControlEntry 4 } + +protocolDistControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted." + ::= { protocolDistControlEntry 6 } + +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed." + ::= { protocolDist 2 } + +protocolDistStatsEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsTable 1 } + +ProtocolDistStatsEntry ::= SEQUENCE { + protocolDistStatsPkts ZeroBasedCounter32, + protocolDistStatsOctets ZeroBasedCounter32 +} + +protocolDistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { protocolDistStatsEntry 1 } + +protocolDistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +addressMapInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 1 } + +addressMapDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 2 } + +addressMapMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { addressMap 3 } + +addressMapControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available." + ::= { addressMap 4 } + +addressMapControlEntry OBJECT-TYPE + SYNTAX AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1" + INDEX { addressMapControlIndex } + ::= { addressMapControlTable 1 } + +AddressMapControlEntry ::= SEQUENCE { + addressMapControlIndex Integer32, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter32, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { addressMapControlEntry 3 } + +addressMapControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted." + ::= { addressMapControlEntry 5 } + +addressMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)." + ::= { addressMap 5 } + +addressMapEntry OBJECT-TYPE + SYNTAX AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource } + ::= { addressMapTable 1 } + +AddressMapEntry ::= SEQUENCE { + addressMapTimeMark TimeFilter, + addressMapNetworkAddress OCTET STRING, + addressMapSource OBJECT IDENTIFIER, + addressMapPhysicalAddress OCTET STRING, + addressMapLastChange TimeStamp +} + +addressMapTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { addressMapEntry 2 } + +addressMapSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater." + ::= { addressMapEntry 3 } + +addressMapPhysicalAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol." + ::= { addressMapEntry 4 } + +addressMapLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently." + ::= { addressMapEntry 5 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available." + ::= { nlHost 1 } + +hlHostControlEntry OBJECT-TYPE + SYNTAX HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1" + INDEX { hlHostControlIndex } + ::= { hlHostControlTable 1 } + +HlHostControlEntry ::= SEQUENCE { + hlHostControlIndex Integer32, + hlHostControlDataSource DataSource, + hlHostControlNlDroppedFrames Counter32, + hlHostControlNlInserts Counter32, + hlHostControlNlDeletes Counter32, + hlHostControlNlMaxDesiredEntries Integer32, + hlHostControlAlDroppedFrames Counter32, + hlHostControlAlInserts Counter32, + hlHostControlAlDeletes Counter32, + hlHostControlAlMaxDesiredEntries Integer32, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry." + ::= { hlHostControlEntry 1 } + +hlHostControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)." + ::= { hlHostControlEntry 2 } + +hlHostControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 3 } + +hlHostControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 4 } + +hlHostControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 5 } + +hlHostControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 6 } + +hlHostControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 7 } + +hlHostControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 8 } + +hlHostControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 9 } + +hlHostControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 10 } + +hlHostControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted." + ::= { hlHostControlEntry 12 } + +nlHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors." + ::= { nlHost 2 } + +nlHostEntry OBJECT-TYPE + SYNTAX NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostTable 1 } + +NlHostEntry ::= SEQUENCE { + nlHostTimeMark TimeFilter, + nlHostAddress OCTET STRING, + nlHostInPkts ZeroBasedCounter32, + nlHostOutPkts ZeroBasedCounter32, + nlHostInOctets ZeroBasedCounter32, + nlHostOutOctets ZeroBasedCounter32, + nlHostOutMacNonUnicastPkts ZeroBasedCounter32, + nlHostCreateTime LastCreateTime +} + +nlHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlHostEntry 2 } + +nlHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 3 } + +nlHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 4 } + +nlHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 5 } + +nlHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 6 } + +nlHostOutMacNonUnicastPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlHostEntry 7 } + +nlHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlHostEntry 8 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table." + ::= { nlMatrix 1 } + +hlMatrixControlEntry OBJECT-TYPE + SYNTAX HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex Integer32, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter32, + hlMatrixControlNlInserts Counter32, + hlMatrixControlNlDeletes Counter32, + hlMatrixControlNlMaxDesiredEntries Integer32, + hlMatrixControlAlDroppedFrames Counter32, + hlMatrixControlAlInserts Counter32, + hlMatrixControlAlDeletes Counter32, + hlMatrixControlAlMaxDesiredEntries Integer32, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry." + ::= { hlMatrixControlEntry 1 } + +hlMatrixControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)." + ::= { hlMatrixControlEntry 2 } + +hlMatrixControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 3 } + +hlMatrixControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 4 } + +hlMatrixControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 5 } + +hlMatrixControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 6 } + +hlMatrixControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 7 } + +hlMatrixControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 8 } + +hlMatrixControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 9 } + +hlMatrixControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 10 } + +hlMatrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address." + ::= { nlMatrix 2 } + +nlMatrixSDEntry OBJECT-TYPE + SYNTAX NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress } + ::= { nlMatrixSDTable 1 } + +NlMatrixSDEntry ::= SEQUENCE { + nlMatrixSDTimeMark TimeFilter, + nlMatrixSDSourceAddress OCTET STRING, + nlMatrixSDDestAddress OCTET STRING, + nlMatrixSDPkts ZeroBasedCounter32, + nlMatrixSDOctets ZeroBasedCounter32, + nlMatrixSDCreateTime LastCreateTime +} + +nlMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 2 } + +nlMatrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 3 } + +nlMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixSDEntry 4 } + +nlMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDEntry 5 } + +nlMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixSDEntry 6 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address." + ::= { nlMatrix 3 } + +nlMatrixDSEntry OBJECT-TYPE + SYNTAX NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress } + ::= { nlMatrixDSTable 1 } + +NlMatrixDSEntry ::= SEQUENCE { + nlMatrixDSTimeMark TimeFilter, + nlMatrixDSSourceAddress OCTET STRING, + nlMatrixDSDestAddress OCTET STRING, + nlMatrixDSPkts ZeroBasedCounter32, + nlMatrixDSOctets ZeroBasedCounter32, + nlMatrixDSCreateTime LastCreateTime +} + +nlMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 2 } + +nlMatrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 3 } + +nlMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixDSEntry 4 } + +nlMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSEntry 5 } + +nlMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixDSEntry 6 } + +nlMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { nlMatrix 4 } + +nlMatrixTopNControlEntry OBJECT-TYPE + SYNTAX NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3" + INDEX { nlMatrixTopNControlIndex } + ::= { nlMatrixTopNControlTable 1 } + +NlMatrixTopNControlEntry ::= SEQUENCE { + nlMatrixTopNControlIndex Integer32, + nlMatrixTopNControlMatrixIndex Integer32, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining Integer32, + nlMatrixTopNControlGeneratedReports Counter32, + nlMatrixTopNControlDuration Integer32, + nlMatrixTopNControlRequestedSize Integer32, + nlMatrixTopNControlGrantedSize Integer32, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 2 } + +nlMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { nlMatrixTopNControlEntry 4 } + +nlMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry." + ::= { nlMatrixTopNControlEntry 6 } + +nlMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent." + ::= { nlMatrixTopNControlEntry 11 } + +nlMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets." + ::= { nlMatrix 5 } + +nlMatrixTopNEntry OBJECT-TYPE + SYNTAX NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10" + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNTable 1 } + +NlMatrixTopNEntry ::= SEQUENCE { + nlMatrixTopNIndex Integer32, + nlMatrixTopNProtocolDirLocalIndex Integer32, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge32, + nlMatrixTopNReversePktRate Gauge32, + nlMatrixTopNOctetRate Gauge32, + nlMatrixTopNReverseOctetRate Gauge32 +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries." + ::= { nlMatrixTopNEntry 1 } + +nlMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 3 } + +nlMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 4 } + +nlMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 5 } + +nlMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object." + ::= { nlMatrixTopNEntry 6 } + +nlMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 7 } + +nlMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object." + ::= { nlMatrixTopNEntry 8 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable." + ::= { alHost 1 } + +alHostEntry OBJECT-TYPE + SYNTAX AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostTable 1 } + +AlHostEntry ::= SEQUENCE { + alHostTimeMark TimeFilter, + alHostInPkts ZeroBasedCounter32, + alHostOutPkts ZeroBasedCounter32, + alHostInOctets ZeroBasedCounter32, + alHostOutOctets ZeroBasedCounter32, + alHostCreateTime LastCreateTime +} + +alHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 2 } + +alHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 3 } + +alHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 4 } + +alHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 5 } + +alHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alHostEntry 6 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable." + ::= { alMatrix 1 } + +alMatrixSDEntry OBJECT-TYPE + SYNTAX AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixSDEntry 2 } + +alMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixSDEntry 3 } + +alMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixSDEntry 4 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable." + ::= { alMatrix 2 } + +alMatrixDSEntry OBJECT-TYPE + SYNTAX AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixDSEntry 2 } + +alMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixDSEntry 3 } + +alMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixDSEntry 4 } + +alMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { alMatrix 3 } + +alMatrixTopNControlEntry OBJECT-TYPE + SYNTAX AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3" + INDEX { alMatrixTopNControlIndex } + ::= { alMatrixTopNControlTable 1 } + +AlMatrixTopNControlEntry ::= SEQUENCE { + alMatrixTopNControlIndex Integer32, + alMatrixTopNControlMatrixIndex Integer32, + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining Integer32, + alMatrixTopNControlGeneratedReports Counter32, + alMatrixTopNControlDuration Integer32, + alMatrixTopNControlRequestedSize Integer32, + alMatrixTopNControlGrantedSize Integer32, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 2 } + +alMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 3 } + +alMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { alMatrixTopNControlEntry 4 } + +alMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry." + ::= { alMatrixTopNControlEntry 6 } + +alMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent." + ::= { alMatrixTopNControlEntry 11 } + +alMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets." + ::= { alMatrix 4 } + +alMatrixTopNEntry OBJECT-TYPE + SYNTAX AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10" + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNTable 1 } + +AlMatrixTopNEntry ::= SEQUENCE { + alMatrixTopNIndex Integer32, + alMatrixTopNProtocolDirLocalIndex Integer32, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + alMatrixTopNAppProtocolDirLocalIndex Integer32, + alMatrixTopNPktRate Gauge32, + alMatrixTopNReversePktRate Gauge32, + alMatrixTopNOctetRate Gauge32, + alMatrixTopNReverseOctetRate Gauge32 +} + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries." + ::= { alMatrixTopNEntry 1 } + +alMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 3 } + +alMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 4 } + +alMatrixTopNAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 6 } + +alMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object." + ::= { alMatrixTopNEntry 7 } + +alMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 8 } + +alMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object." + ::= { alMatrixTopNEntry 9 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1" + INDEX { usrHistoryControlIndex } + ::= { usrHistoryControlTable 1 } + +UsrHistoryControlEntry ::= SEQUENCE { + usrHistoryControlIndex Integer32, + usrHistoryControlObjects Integer32, + usrHistoryControlBucketsRequested Integer32, + usrHistoryControlBucketsGranted Integer32, + usrHistoryControlInterval Integer32, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system." + ::= { usrHistoryControlEntry 1 } + +usrHistoryControlObjects OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)." + ::= { usrHistoryControlEntry 2 } + +usrHistoryControlBucketsRequested OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow." + ::= { usrHistoryControlEntry 4 } + +usrHistoryControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + DEFVAL { 1800 } + ::= { usrHistoryControlEntry 5 } + +usrHistoryControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted." + ::= { usrHistoryControlEntry 7 } + +usrHistoryObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3" + INDEX { usrHistoryControlIndex, usrHistoryObjectIndex } + ::= { usrHistoryObjectTable 1 } + +UsrHistoryObjectEntry ::= SEQUENCE { + usrHistoryObjectIndex Integer32, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically." + ::= { usrHistoryObjectEntry 1 } + +usrHistoryObjectVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 2 } + +usrHistoryObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 3 } + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of user-defined history entries." + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryTable 1 } + +UsrHistoryEntry ::= SEQUENCE { + usrHistorySampleIndex Integer32, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge32, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken." + ::= { usrHistoryEntry 1 } + +usrHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryEntry 4 } + +usrHistoryValStatus OBJECT-TYPE + SYNTAX INTEGER { valueNotAvailable(1), valuePositive(2), + valueNegative(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value." + ::= { usrHistoryEntry 5 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + SYNTAX BITS { etherStats(0), historyControl(1), etherHistory(2), + alarm(3), hosts(4), hostTopN(5), matrix(6), + filter(7), capture(8), event(9), + tokenRingMLStats(10), tokenRingPStats(11), + tokenRingMLHistory(12), tokenRingPHistory(13), + ringStation(14), ringStationOrder(15), + ringStationConfig(16), sourceRouting(17), + protocolDirectory(18), protocolDistribution(19), + addressMapping(20), nlHost(21), nlMatrix(22), + alHost(23), alMatrix(24), usrHistory(25), + probeConfig(26) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 1 } + +probeSoftwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 2 } + +probeHardwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hardware revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 3 } + +probeDateTime OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 8 | 11)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + SYNTAX INTEGER { running(1), warmBoot(2), coldBoot(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { downloadSuccess(1), downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface." + INDEX { ifIndex } + ::= { serialConfigTable 1 } + +SerialConfigEntry ::= SEQUENCE { + serialMode INTEGER, + serialProtocol INTEGER, + serialTimeout Integer32, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap." + DEFVAL { 300 } + ::= { serialConfigEntry 3 } + +serialModemInitString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'." + ::= { serialConfigEntry 4 } + +serialModemHangUpString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'." + ::= { serialConfigEntry 5 } + +serialModemConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'." + ::= { serialConfigEntry 6 } + +serialModemNoConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'." + ::= { serialConfigEntry 7 } + +serialDialoutTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface." + DEFVAL { 20 } + ::= { serialConfigEntry 8 } + +serialStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConfigEntry 9 } + +netConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface." + INDEX { ifIndex } + ::= { netConfigTable 1 } + +NetConfigEntry ::= SEQUENCE { + netConfigIPAddress IpAddress, + netConfigSubnetMask IpAddress, + netConfigStatus RowStatus +} + +netConfigIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { netConfigEntry 3 } + +netDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { probeConfig 12 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex Integer32, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 2 } + +trapDestProtocol OBJECT-TYPE + SYNTAX INTEGER { ip(1), ipx(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 4 } + +trapDestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { trapDestEntry 6 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex Integer32, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 2 } + +serialConnectType OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2), switch(3), modemSwitch(4) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + DEFVAL { direct } + ::= { serialConnectionEntry 3 } + +serialConnectDialString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 4 } + +serialConnectSwitchConnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 5 } + +serialConnectSwitchDisconnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 6 } + +serialConnectSwitchResetSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 7 } + +serialConnectOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConnectionEntry 9 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 2 } + +protocolDirectoryGroup OBJECT-GROUP + OBJECTS { protocolDirLastChange, protocolDirLocalIndex, + protocolDirDescr, protocolDirType, + protocolDirAddressMapConfig, protocolDirHostConfig, + protocolDirMatrixConfig, protocolDirOwner, + protocolDirStatus } + STATUS current + DESCRIPTION + "Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list." + ::= { rmon2MIBGroups 1 } + +protocolDistributionGroup OBJECT-GROUP + OBJECTS { protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, protocolDistControlStatus, + protocolDistStatsPkts, protocolDistStatsOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT-GROUP + OBJECTS { addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, addressMapControlOwner, + addressMapControlStatus, addressMapPhysicalAddress, + addressMapLastChange } + STATUS current + DESCRIPTION + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on." + ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT-GROUP + OBJECTS { hlHostControlDataSource, hlHostControlNlDroppedFrames, + hlHostControlNlInserts, hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, hlHostControlOwner, + hlHostControlStatus, nlHostInPkts, nlHostOutPkts, + nlHostInOctets, nlHostOutOctets, + nlHostOutMacNonUnicastPkts, nlHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not + required to fully implement this group." + ::= { rmon2MIBGroups 4 } + +nlMatrixGroup OBJECT-GROUP + OBJECTS { hlMatrixControlDataSource, + hlMatrixControlNlDroppedFrames, + hlMatrixControlNlInserts, hlMatrixControlNlDeletes, + hlMatrixControlNlMaxDesiredEntries, + hlMatrixControlAlDroppedFrames, + hlMatrixControlAlInserts, hlMatrixControlAlDeletes, + hlMatrixControlAlMaxDesiredEntries, + hlMatrixControlOwner, hlMatrixControlStatus, + nlMatrixSDPkts, nlMatrixSDOctets, nlMatrixSDCreateTime, + nlMatrixDSPkts, nlMatrixDSOctets, nlMatrixDSCreateTime, + nlMatrixTopNControlMatrixIndex, + nlMatrixTopNControlRateBase, + nlMatrixTopNControlTimeRemaining, + nlMatrixTopNControlGeneratedReports, + nlMatrixTopNControlDuration, + nlMatrixTopNControlRequestedSize, + nlMatrixTopNControlGrantedSize, + nlMatrixTopNControlStartTime, nlMatrixTopNControlOwner, + nlMatrixTopNControlStatus, + nlMatrixTopNProtocolDirLocalIndex, + nlMatrixTopNSourceAddress, nlMatrixTopNDestAddress, + nlMatrixTopNPktRate, nlMatrixTopNReversePktRate, + nlMatrixTopNOctetRate, nlMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while + the hlMatrixControlTable also has objects that control + optional alMatrixTables, implementation of the + alMatrixTables is not required to fully implement this + group." + ::= { rmon2MIBGroups 5 } + +alHostGroup OBJECT-GROUP + OBJECTS { alHostInPkts, alHostOutPkts, alHostInOctets, + alHostOutOctets, alHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network-Layer + Host Group." + ::= { rmon2MIBGroups 6 } + +alMatrixGroup OBJECT-GROUP + OBJECTS { alMatrixSDPkts, alMatrixSDOctets, alMatrixSDCreateTime, + alMatrixDSPkts, alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, alMatrixTopNControlOwner, + alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, alMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation + of the Network-Layer Matrix Group." + ::= { rmon2MIBGroups 7 } + +usrHistoryGroup OBJECT-GROUP + OBJECTS { usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, usrHistoryControlOwner, + usrHistoryControlStatus, usrHistoryObjectVariable, + usrHistoryObjectSampleType, usrHistoryIntervalStart, + usrHistoryIntervalEnd, usrHistoryAbsValue, + usrHistoryValStatus } + STATUS current + DESCRIPTION + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe." + ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT-GROUP + OBJECTS { probeCapabilities, probeSoftwareRev, probeHardwareRev, + probeDateTime } + STATUS current + DESCRIPTION + "This group describes various operating parameters of the + probe and controls the local time of the probe." + ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT-GROUP + OBJECTS { probeResetControl, probeDownloadFile, + probeDownloadTFTPServer, probeDownloadAction, + probeDownloadStatus, serialMode, serialProtocol, + serialTimeout, serialModemInitString, + serialModemHangUpString, serialModemConnectResp, + serialModemNoConnectResp, serialDialoutTimeout, + serialStatus, netConfigIPAddress, netConfigSubnetMask, + netConfigStatus, netDefaultGateway, trapDestCommunity, + trapDestProtocol, trapDestAddress, trapDestOwner, + trapDestStatus, serialConnectDestIpAddress, + serialConnectType, serialConnectDialString, + serialConnectSwitchConnectSeq, + serialConnectSwitchDisconnectSeq, + serialConnectSwitchResetSeq, serialConnectOwner, + serialConnectStatus } + STATUS deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 10 } + +rmon1EnhancementGroup OBJECT-GROUP + OBJECTS { historyControlDroppedFrames, hostControlDroppedFrames, + hostControlCreateTime, matrixControlDroppedFrames, + matrixControlCreateTime, channelDroppedFrames, + channelCreateTime, filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT-GROUP + OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT-GROUP + OBJECTS { tokenRingMLStatsDroppedFrames, + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, + tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime } + STATUS deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } + +rmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB" + + MODULE -- this module + + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements." + + MODULE -- this module + + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, alHostGroup, alMatrixGroup, + usrHistoryGroup, probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv2-smiv2/SNMPv2-MIB b/test/dumps/smiv2-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..ba45569 --- /dev/null +++ b/test/dumps/smiv2-smiv2/SNMPv2-MIB @@ -0,0 +1,804 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, TimeTicks, mib-2, snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION + "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices." + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + DESCRIPTION + "The initial revision of this MIB module was published + as RFC 1450." + ::= { snmpModules 1 } + + +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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.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 Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. 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 } + +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 SNMP application acting as a command + responder with respect to various MIB modules. + SNMP 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 Integer32, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX Integer32 (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 SNMP application acting as a command + responder." + ::= { 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 instantiated." + ::= { sysOREntry 4 } + +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 } + +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 } + +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 community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { 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 } + +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 was + `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 was + `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 was + `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 was `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 was `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 was `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 was `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 was `badValue'." + ::= { snmp 22 } + +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 was `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 } + +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 Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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 Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +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 } + +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 an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +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 + command generator applications to coordinate their + use of the SNMP 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 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, 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 SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= { snmpTraps 2 } + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the 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 basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT-GROUP + OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, snmpEnableAuthenTraps } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + and control of an SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +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 module." + ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +snmpBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + + 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 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/smiv2/IF-MIB b/test/dumps/smiv2/IF-MIB new file mode 100644 index 0000000..928af3d --- /dev/null +++ b/test/dumps/smiv2/IF-MIB @@ -0,0 +1,1721 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpTraps + FROM SNMPv2-MIB + Counter32, Counter64, Gauge32, Integer32, MODULE-IDENTITY, + NOTIFICATION-TYPE, OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + AutonomousType, DisplayString, PhysAddress, RowStatus, + TEXTUAL-CONVENTION, TestAndIncr, TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + 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 "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 ::= 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) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +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 } + +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, + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, + ifSpecific OBJECT IDENTIFIER +} + +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), down(2), testing(3) } + 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), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + 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 2579. 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 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +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 } + +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 } + +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 InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + 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 InterfaceIndexOrZero + 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 } + +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), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), 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 2579. 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 } + +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 } + +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 } + +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 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMP 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 linkUp trap signifies that the SNMP 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 } + +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 } + +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 } + +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 } + +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 } + +ifStackGroup2 OBJECT-GROUP + OBJECTS { ifStackStatus, ifStackLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 11 } + +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 } + +ifCounterDiscontinuityGroup OBJECT-GROUP + OBJECTS { ifCounterDiscontinuityTime } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + interface counter discontinuities." + ::= { ifGroups 13 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +ifCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 RowStatus { active(1) } + 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 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP 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 RowStatus { active(1) } + 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 } + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory 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 those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + 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 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + 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 ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + 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 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 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv2/MAU-MIB b/test/dumps/smiv2/MAU-MIB new file mode 100644 index 0000000..7ef0922 --- /dev/null +++ b/test/dumps/smiv2/MAU-MIB @@ -0,0 +1,1776 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Counter64, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI + AutonomousType, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC; + +mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + REVISION "200704210000Z" + DESCRIPTION + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + REVISION "200309190000Z" + DESCRIPTION + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + REVISION "199908240400Z" + DESCRIPTION + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + REVISION "199710310000Z" + DESCRIPTION + "Version published as RFC 2239." + REVISION "199309300000Z" + DESCRIPTION + "Initial version, published as RFC 1515." + ::= { snmpDot3MauMgt 6 } + + +JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), + fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), + fiberST(10), telco(11), mtrj(12), hssdc(13), + fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE + "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE + "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + +ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + +mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, rpMauType, + rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, rpMauJabberState, + rpMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, + ifMauMediaAvailable, ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, + ifMauAutoNegSupported } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, ifMauAutoNegCapReceived, + ifMauAutoNegRestart } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, + broadMauTranslationFreq } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived } + STATUS current + DESCRIPTION + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION + "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + +rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + +ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + +mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + ::= { mauModCompls 1 } + +mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION + "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + ::= { mauModCompls 2 } + +mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 3 } + +mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 4 } + +mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv2/Makefile.am b/test/dumps/smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv2/Makefile.in b/test/dumps/smiv2/Makefile.in new file mode 100644 index 0000000..e78d096 --- /dev/null +++ b/test/dumps/smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv2/RMON2-MIB b/test/dumps/smiv2/RMON2-MIB new file mode 100644 index 0000000..8937060 --- /dev/null +++ b/test/dumps/smiv2/RMON2-MIB @@ -0,0 +1,5590 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Gauge32, Integer32, IpAddress, MODULE-IDENTITY, + OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon MODULE-IDENTITY + LAST-UPDATED "200605020000Z" + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + REVISION "200605020000Z" + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + REVISION "200207080000Z" + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + REVISION "199605270000Z" + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use." + SYNTAX Gauge32 + +LastCreateTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment 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 + +TimeFilter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + SYNTAX TimeTicks + +DataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1." + SYNTAX OBJECT IDENTIFIER + +ControlString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed." + SYNTAX OCTET STRING (SIZE(0..255)) + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter32, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { etherStats2Entry 1 } + +etherStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { etherStats2Entry 2 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingMLStatsEntry } + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter32, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingMLStats2Entry 1 } + +tokenRingMLStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingMLStats2Entry 2 } + +tokenRingPStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter32, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingPStats2Entry 1 } + +tokenRingPStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { tokenRingPStats2Entry 2 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter32 +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { historyControl2Entry 1 } + +hostControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter32, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hostControl2Entry 1 } + +hostControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { hostControl2Entry 2 } + +matrixControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter32, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { matrixControl2Entry 1 } + +matrixControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { matrixControl2Entry 2 } + +channel2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter32, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { channel2Entry 1 } + +channelCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { channel2Entry 2 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex Integer32, + filterProtocolDirLocalIndex Integer32 +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet." + DEFVAL { 0 } + ::= { filter2Entry 1 } + +filterProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry." + DEFVAL { 0 } + ::= { filter2Entry 2 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter32, + ringStationControlCreateTime LastCreateTime +} + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { ringStationControl2Entry 1 } + +ringStationControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls." + ::= { ringStationControl2Entry 2 } + +sourceRoutingStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter32, + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { sourceRoutingStats2Entry 1 } + +sourceRoutingStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { sourceRoutingStats2Entry 2 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups." + ::= { protocolDir 2 } + +protocolDirEntry OBJECT-TYPE + SYNTAX ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error." + ::= { protocolDirEntry 1 } + +protocolDirParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero." + ::= { protocolDirEntry 2 } + +protocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)." + ::= { protocolDirEntry 4 } + +protocolDirType OBJECT-TYPE + SYNTAX BITS { extensible(0), addressRecognitionCapable(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero." + ::= { protocolDirEntry 5 } + +protocolDirAddressMapConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable." + ::= { protocolDirEntry 6 } + +protocolDirHostConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 7 } + +protocolDirMatrixConfig OBJECT-TYPE + SYNTAX INTEGER { notSupported(1), supportedOff(2), + supportedOn(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 8 } + +protocolDirOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted." + ::= { protocolDirEntry 10 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface." + ::= { protocolDist 1 } + +protocolDistControlEntry OBJECT-TYPE + SYNTAX ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7" + INDEX { protocolDistControlIndex } + ::= { protocolDistControlTable 1 } + +ProtocolDistControlEntry ::= SEQUENCE { + protocolDistControlIndex Integer32, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter32, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)." + ::= { protocolDistControlEntry 2 } + +protocolDistControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { protocolDistControlEntry 3 } + +protocolDistControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { protocolDistControlEntry 4 } + +protocolDistControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted." + ::= { protocolDistControlEntry 6 } + +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed." + ::= { protocolDist 2 } + +protocolDistStatsEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsTable 1 } + +ProtocolDistStatsEntry ::= SEQUENCE { + protocolDistStatsPkts ZeroBasedCounter32, + protocolDistStatsOctets ZeroBasedCounter32 +} + +protocolDistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times." + ::= { protocolDistStatsEntry 1 } + +protocolDistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +addressMapInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 1 } + +addressMapDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 2 } + +addressMapMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { addressMap 3 } + +addressMapControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available." + ::= { addressMap 4 } + +addressMapControlEntry OBJECT-TYPE + SYNTAX AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1" + INDEX { addressMapControlIndex } + ::= { addressMapControlTable 1 } + +AddressMapControlEntry ::= SEQUENCE { + addressMapControlIndex Integer32, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter32, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { addressMapControlEntry 3 } + +addressMapControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted." + ::= { addressMapControlEntry 5 } + +addressMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)." + ::= { addressMap 5 } + +addressMapEntry OBJECT-TYPE + SYNTAX AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource } + ::= { addressMapTable 1 } + +AddressMapEntry ::= SEQUENCE { + addressMapTimeMark TimeFilter, + addressMapNetworkAddress OCTET STRING, + addressMapSource OBJECT IDENTIFIER, + addressMapPhysicalAddress OCTET STRING, + addressMapLastChange TimeStamp +} + +addressMapTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { addressMapEntry 2 } + +addressMapSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater." + ::= { addressMapEntry 3 } + +addressMapPhysicalAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol." + ::= { addressMapEntry 4 } + +addressMapLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently." + ::= { addressMapEntry 5 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available." + ::= { nlHost 1 } + +hlHostControlEntry OBJECT-TYPE + SYNTAX HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1" + INDEX { hlHostControlIndex } + ::= { hlHostControlTable 1 } + +HlHostControlEntry ::= SEQUENCE { + hlHostControlIndex Integer32, + hlHostControlDataSource DataSource, + hlHostControlNlDroppedFrames Counter32, + hlHostControlNlInserts Counter32, + hlHostControlNlDeletes Counter32, + hlHostControlNlMaxDesiredEntries Integer32, + hlHostControlAlDroppedFrames Counter32, + hlHostControlAlInserts Counter32, + hlHostControlAlDeletes Counter32, + hlHostControlAlMaxDesiredEntries Integer32, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry." + ::= { hlHostControlEntry 1 } + +hlHostControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)." + ::= { hlHostControlEntry 2 } + +hlHostControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 3 } + +hlHostControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 4 } + +hlHostControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 5 } + +hlHostControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 6 } + +hlHostControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 7 } + +hlHostControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 8 } + +hlHostControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 9 } + +hlHostControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 10 } + +hlHostControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted." + ::= { hlHostControlEntry 12 } + +nlHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors." + ::= { nlHost 2 } + +nlHostEntry OBJECT-TYPE + SYNTAX NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostTable 1 } + +NlHostEntry ::= SEQUENCE { + nlHostTimeMark TimeFilter, + nlHostAddress OCTET STRING, + nlHostInPkts ZeroBasedCounter32, + nlHostOutPkts ZeroBasedCounter32, + nlHostInOctets ZeroBasedCounter32, + nlHostOutOctets ZeroBasedCounter32, + nlHostOutMacNonUnicastPkts ZeroBasedCounter32, + nlHostCreateTime LastCreateTime +} + +nlHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlHostEntry 2 } + +nlHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 3 } + +nlHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 4 } + +nlHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 5 } + +nlHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 6 } + +nlHostOutMacNonUnicastPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlHostEntry 7 } + +nlHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlHostEntry 8 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table." + ::= { nlMatrix 1 } + +hlMatrixControlEntry OBJECT-TYPE + SYNTAX HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex Integer32, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter32, + hlMatrixControlNlInserts Counter32, + hlMatrixControlNlDeletes Counter32, + hlMatrixControlNlMaxDesiredEntries Integer32, + hlMatrixControlAlDroppedFrames Counter32, + hlMatrixControlAlInserts Counter32, + hlMatrixControlAlDeletes Counter32, + hlMatrixControlAlMaxDesiredEntries Integer32, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry." + ::= { hlMatrixControlEntry 1 } + +hlMatrixControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)." + ::= { hlMatrixControlEntry 2 } + +hlMatrixControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 3 } + +hlMatrixControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 4 } + +hlMatrixControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 5 } + +hlMatrixControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 6 } + +hlMatrixControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 7 } + +hlMatrixControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 8 } + +hlMatrixControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 9 } + +hlMatrixControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 10 } + +hlMatrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address." + ::= { nlMatrix 2 } + +nlMatrixSDEntry OBJECT-TYPE + SYNTAX NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress } + ::= { nlMatrixSDTable 1 } + +NlMatrixSDEntry ::= SEQUENCE { + nlMatrixSDTimeMark TimeFilter, + nlMatrixSDSourceAddress OCTET STRING, + nlMatrixSDDestAddress OCTET STRING, + nlMatrixSDPkts ZeroBasedCounter32, + nlMatrixSDOctets ZeroBasedCounter32, + nlMatrixSDCreateTime LastCreateTime +} + +nlMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 2 } + +nlMatrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixSDEntry 3 } + +nlMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixSDEntry 4 } + +nlMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDEntry 5 } + +nlMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixSDEntry 6 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address." + ::= { nlMatrix 3 } + +nlMatrixDSEntry OBJECT-TYPE + SYNTAX NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress } + ::= { nlMatrixDSTable 1 } + +NlMatrixDSEntry ::= SEQUENCE { + nlMatrixDSTimeMark TimeFilter, + nlMatrixDSSourceAddress OCTET STRING, + nlMatrixDSDestAddress OCTET STRING, + nlMatrixDSPkts ZeroBasedCounter32, + nlMatrixDSOctets ZeroBasedCounter32, + nlMatrixDSCreateTime LastCreateTime +} + +nlMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 2 } + +nlMatrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixDSEntry 3 } + +nlMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixDSEntry 4 } + +nlMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSEntry 5 } + +nlMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixDSEntry 6 } + +nlMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { nlMatrix 4 } + +nlMatrixTopNControlEntry OBJECT-TYPE + SYNTAX NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3" + INDEX { nlMatrixTopNControlIndex } + ::= { nlMatrixTopNControlTable 1 } + +NlMatrixTopNControlEntry ::= SEQUENCE { + nlMatrixTopNControlIndex Integer32, + nlMatrixTopNControlMatrixIndex Integer32, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining Integer32, + nlMatrixTopNControlGeneratedReports Counter32, + nlMatrixTopNControlDuration Integer32, + nlMatrixTopNControlRequestedSize Integer32, + nlMatrixTopNControlGrantedSize Integer32, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 2 } + +nlMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { nlMatrixTopNControlEntry 4 } + +nlMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry." + ::= { nlMatrixTopNControlEntry 6 } + +nlMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent." + ::= { nlMatrixTopNControlEntry 11 } + +nlMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets." + ::= { nlMatrix 5 } + +nlMatrixTopNEntry OBJECT-TYPE + SYNTAX NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10" + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNTable 1 } + +NlMatrixTopNEntry ::= SEQUENCE { + nlMatrixTopNIndex Integer32, + nlMatrixTopNProtocolDirLocalIndex Integer32, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge32, + nlMatrixTopNReversePktRate Gauge32, + nlMatrixTopNOctetRate Gauge32, + nlMatrixTopNReverseOctetRate Gauge32 +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries." + ::= { nlMatrixTopNEntry 1 } + +nlMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 3 } + +nlMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { nlMatrixTopNEntry 4 } + +nlMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 5 } + +nlMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object." + ::= { nlMatrixTopNEntry 6 } + +nlMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 7 } + +nlMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object." + ::= { nlMatrixTopNEntry 8 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable." + ::= { alHost 1 } + +alHostEntry OBJECT-TYPE + SYNTAX AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostTable 1 } + +AlHostEntry ::= SEQUENCE { + alHostTimeMark TimeFilter, + alHostInPkts ZeroBasedCounter32, + alHostOutPkts ZeroBasedCounter32, + alHostInOctets ZeroBasedCounter32, + alHostOutOctets ZeroBasedCounter32, + alHostCreateTime LastCreateTime +} + +alHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 2 } + +alHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 3 } + +alHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 4 } + +alHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alHostEntry 5 } + +alHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alHostEntry 6 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable." + ::= { alMatrix 1 } + +alMatrixSDEntry OBJECT-TYPE + SYNTAX AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixSDEntry 2 } + +alMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixSDEntry 3 } + +alMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixSDEntry 4 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable." + ::= { alMatrix 2 } + +alMatrixDSEntry OBJECT-TYPE + SYNTAX AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixDSEntry 2 } + +alMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol." + ::= { alMatrixDSEntry 3 } + +alMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixDSEntry 4 } + +alMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { alMatrix 3 } + +alMatrixTopNControlEntry OBJECT-TYPE + SYNTAX AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3" + INDEX { alMatrixTopNControlIndex } + ::= { alMatrixTopNControlTable 1 } + +AlMatrixTopNControlEntry ::= SEQUENCE { + alMatrixTopNControlIndex Integer32, + alMatrixTopNControlMatrixIndex Integer32, + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining Integer32, + alMatrixTopNControlGeneratedReports Counter32, + alMatrixTopNControlDuration Integer32, + alMatrixTopNControlRequestedSize Integer32, + alMatrixTopNControlGrantedSize Integer32, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 2 } + +alMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 3 } + +alMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)." + DEFVAL { 1800 } + ::= { alMatrixTopNControlEntry 4 } + +alMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry." + ::= { alMatrixTopNControlEntry 6 } + +alMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent." + ::= { alMatrixTopNControlEntry 11 } + +alMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets." + ::= { alMatrix 4 } + +alMatrixTopNEntry OBJECT-TYPE + SYNTAX AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10" + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNTable 1 } + +AlMatrixTopNEntry ::= SEQUENCE { + alMatrixTopNIndex Integer32, + alMatrixTopNProtocolDirLocalIndex Integer32, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + alMatrixTopNAppProtocolDirLocalIndex Integer32, + alMatrixTopNPktRate Gauge32, + alMatrixTopNReversePktRate Gauge32, + alMatrixTopNOctetRate Gauge32, + alMatrixTopNReverseOctetRate Gauge32 +} + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries." + ::= { alMatrixTopNEntry 1 } + +alMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 3 } + +alMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order." + ::= { alMatrixTopNEntry 4 } + +alMatrixTopNAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 6 } + +alMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object." + ::= { alMatrixTopNEntry 7 } + +alMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 8 } + +alMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object." + ::= { alMatrixTopNEntry 9 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1" + INDEX { usrHistoryControlIndex } + ::= { usrHistoryControlTable 1 } + +UsrHistoryControlEntry ::= SEQUENCE { + usrHistoryControlIndex Integer32, + usrHistoryControlObjects Integer32, + usrHistoryControlBucketsRequested Integer32, + usrHistoryControlBucketsGranted Integer32, + usrHistoryControlInterval Integer32, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system." + ::= { usrHistoryControlEntry 1 } + +usrHistoryControlObjects OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)." + ::= { usrHistoryControlEntry 2 } + +usrHistoryControlBucketsRequested OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow." + ::= { usrHistoryControlEntry 4 } + +usrHistoryControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + DEFVAL { 1800 } + ::= { usrHistoryControlEntry 5 } + +usrHistoryControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted." + ::= { usrHistoryControlEntry 7 } + +usrHistoryObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3" + INDEX { usrHistoryControlIndex, usrHistoryObjectIndex } + ::= { usrHistoryObjectTable 1 } + +UsrHistoryObjectEntry ::= SEQUENCE { + usrHistoryObjectIndex Integer32, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically." + ::= { usrHistoryObjectEntry 1 } + +usrHistoryObjectVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 2 } + +usrHistoryObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 3 } + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of user-defined history entries." + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryTable 1 } + +UsrHistoryEntry ::= SEQUENCE { + usrHistorySampleIndex Integer32, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge32, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken." + ::= { usrHistoryEntry 1 } + +usrHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryEntry 4 } + +usrHistoryValStatus OBJECT-TYPE + SYNTAX INTEGER { valueNotAvailable(1), valuePositive(2), + valueNegative(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value." + ::= { usrHistoryEntry 5 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + SYNTAX BITS { etherStats(0), historyControl(1), etherHistory(2), + alarm(3), hosts(4), hostTopN(5), matrix(6), + filter(7), capture(8), event(9), + tokenRingMLStats(10), tokenRingPStats(11), + tokenRingMLHistory(12), tokenRingPHistory(13), + ringStation(14), ringStationOrder(15), + ringStationConfig(16), sourceRouting(17), + protocolDirectory(18), protocolDistribution(19), + addressMapping(20), nlHost(21), nlMatrix(22), + alHost(23), alMatrix(24), usrHistory(25), + probeConfig(26) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 1 } + +probeSoftwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 2 } + +probeHardwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hardware revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 3 } + +probeDateTime OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 8 | 11)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + SYNTAX INTEGER { running(1), warmBoot(2), coldBoot(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { downloadSuccess(1), downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface." + INDEX { ifIndex } + ::= { serialConfigTable 1 } + +SerialConfigEntry ::= SEQUENCE { + serialMode INTEGER, + serialProtocol INTEGER, + serialTimeout Integer32, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap." + DEFVAL { 300 } + ::= { serialConfigEntry 3 } + +serialModemInitString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'." + ::= { serialConfigEntry 4 } + +serialModemHangUpString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'." + ::= { serialConfigEntry 5 } + +serialModemConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'." + ::= { serialConfigEntry 6 } + +serialModemNoConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'." + ::= { serialConfigEntry 7 } + +serialDialoutTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface." + DEFVAL { 20 } + ::= { serialConfigEntry 8 } + +serialStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConfigEntry 9 } + +netConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface." + INDEX { ifIndex } + ::= { netConfigTable 1 } + +NetConfigEntry ::= SEQUENCE { + netConfigIPAddress IpAddress, + netConfigSubnetMask IpAddress, + netConfigStatus RowStatus +} + +netConfigIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { netConfigEntry 3 } + +netDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { probeConfig 12 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex Integer32, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 2 } + +trapDestProtocol OBJECT-TYPE + SYNTAX INTEGER { ip(1), ipx(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 4 } + +trapDestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { trapDestEntry 6 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex Integer32, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 2 } + +serialConnectType OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2), switch(3), modemSwitch(4) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + DEFVAL { direct } + ::= { serialConnectionEntry 3 } + +serialConnectDialString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 4 } + +serialConnectSwitchConnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 5 } + +serialConnectSwitchDisconnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 6 } + +serialConnectSwitchResetSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 7 } + +serialConnectOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConnectionEntry 9 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 2 } + +protocolDirectoryGroup OBJECT-GROUP + OBJECTS { protocolDirLastChange, protocolDirLocalIndex, + protocolDirDescr, protocolDirType, + protocolDirAddressMapConfig, protocolDirHostConfig, + protocolDirMatrixConfig, protocolDirOwner, + protocolDirStatus } + STATUS current + DESCRIPTION + "Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list." + ::= { rmon2MIBGroups 1 } + +protocolDistributionGroup OBJECT-GROUP + OBJECTS { protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, protocolDistControlStatus, + protocolDistStatsPkts, protocolDistStatsOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT-GROUP + OBJECTS { addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, addressMapControlOwner, + addressMapControlStatus, addressMapPhysicalAddress, + addressMapLastChange } + STATUS current + DESCRIPTION + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on." + ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT-GROUP + OBJECTS { hlHostControlDataSource, hlHostControlNlDroppedFrames, + hlHostControlNlInserts, hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, hlHostControlOwner, + hlHostControlStatus, nlHostInPkts, nlHostOutPkts, + nlHostInOctets, nlHostOutOctets, + nlHostOutMacNonUnicastPkts, nlHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not + required to fully implement this group." + ::= { rmon2MIBGroups 4 } + +nlMatrixGroup OBJECT-GROUP + OBJECTS { hlMatrixControlDataSource, + hlMatrixControlNlDroppedFrames, + hlMatrixControlNlInserts, hlMatrixControlNlDeletes, + hlMatrixControlNlMaxDesiredEntries, + hlMatrixControlAlDroppedFrames, + hlMatrixControlAlInserts, hlMatrixControlAlDeletes, + hlMatrixControlAlMaxDesiredEntries, + hlMatrixControlOwner, hlMatrixControlStatus, + nlMatrixSDPkts, nlMatrixSDOctets, nlMatrixSDCreateTime, + nlMatrixDSPkts, nlMatrixDSOctets, nlMatrixDSCreateTime, + nlMatrixTopNControlMatrixIndex, + nlMatrixTopNControlRateBase, + nlMatrixTopNControlTimeRemaining, + nlMatrixTopNControlGeneratedReports, + nlMatrixTopNControlDuration, + nlMatrixTopNControlRequestedSize, + nlMatrixTopNControlGrantedSize, + nlMatrixTopNControlStartTime, nlMatrixTopNControlOwner, + nlMatrixTopNControlStatus, + nlMatrixTopNProtocolDirLocalIndex, + nlMatrixTopNSourceAddress, nlMatrixTopNDestAddress, + nlMatrixTopNPktRate, nlMatrixTopNReversePktRate, + nlMatrixTopNOctetRate, nlMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while + the hlMatrixControlTable also has objects that control + optional alMatrixTables, implementation of the + alMatrixTables is not required to fully implement this + group." + ::= { rmon2MIBGroups 5 } + +alHostGroup OBJECT-GROUP + OBJECTS { alHostInPkts, alHostOutPkts, alHostInOctets, + alHostOutOctets, alHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network-Layer + Host Group." + ::= { rmon2MIBGroups 6 } + +alMatrixGroup OBJECT-GROUP + OBJECTS { alMatrixSDPkts, alMatrixSDOctets, alMatrixSDCreateTime, + alMatrixDSPkts, alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, alMatrixTopNControlOwner, + alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, alMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation + of the Network-Layer Matrix Group." + ::= { rmon2MIBGroups 7 } + +usrHistoryGroup OBJECT-GROUP + OBJECTS { usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, usrHistoryControlOwner, + usrHistoryControlStatus, usrHistoryObjectVariable, + usrHistoryObjectSampleType, usrHistoryIntervalStart, + usrHistoryIntervalEnd, usrHistoryAbsValue, + usrHistoryValStatus } + STATUS current + DESCRIPTION + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe." + ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT-GROUP + OBJECTS { probeCapabilities, probeSoftwareRev, probeHardwareRev, + probeDateTime } + STATUS current + DESCRIPTION + "This group describes various operating parameters of the + probe and controls the local time of the probe." + ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT-GROUP + OBJECTS { probeResetControl, probeDownloadFile, + probeDownloadTFTPServer, probeDownloadAction, + probeDownloadStatus, serialMode, serialProtocol, + serialTimeout, serialModemInitString, + serialModemHangUpString, serialModemConnectResp, + serialModemNoConnectResp, serialDialoutTimeout, + serialStatus, netConfigIPAddress, netConfigSubnetMask, + netConfigStatus, netDefaultGateway, trapDestCommunity, + trapDestProtocol, trapDestAddress, trapDestOwner, + trapDestStatus, serialConnectDestIpAddress, + serialConnectType, serialConnectDialString, + serialConnectSwitchConnectSeq, + serialConnectSwitchDisconnectSeq, + serialConnectSwitchResetSeq, serialConnectOwner, + serialConnectStatus } + STATUS deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 10 } + +rmon1EnhancementGroup OBJECT-GROUP + OBJECTS { historyControlDroppedFrames, hostControlDroppedFrames, + hostControlCreateTime, matrixControlDroppedFrames, + matrixControlCreateTime, channelDroppedFrames, + channelCreateTime, filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT-GROUP + OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT-GROUP + OBJECTS { tokenRingMLStatsDroppedFrames, + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, + tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime } + STATUS deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } + +rmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB" + + MODULE -- this module + + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements." + + MODULE -- this module + + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, alHostGroup, alMatrixGroup, + usrHistoryGroup, probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv2/SNMPv2-MIB b/test/dumps/smiv2/SNMPv2-MIB new file mode 100644 index 0000000..ba45569 --- /dev/null +++ b/test/dumps/smiv2/SNMPv2-MIB @@ -0,0 +1,804 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, TimeTicks, mib-2, snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION + "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices." + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + DESCRIPTION + "The initial revision of this MIB module was published + as RFC 1450." + ::= { snmpModules 1 } + + +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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.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 Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. 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 } + +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 SNMP application acting as a command + responder with respect to various MIB modules. + SNMP 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 Integer32, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX Integer32 (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 SNMP application acting as a command + responder." + ::= { 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 instantiated." + ::= { sysOREntry 4 } + +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 } + +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 } + +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 community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { 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 } + +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 was + `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 was + `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 was + `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 was `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 was `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 was `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 was `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 was `badValue'." + ::= { snmp 22 } + +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 was `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 } + +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 Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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 Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +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 } + +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 an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +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 + command generator applications to coordinate their + use of the SNMP 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 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, 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 SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= { snmpTraps 2 } + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the 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 basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT-GROUP + OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, snmpEnableAuthenTraps } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + and control of an SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +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 module." + ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +snmpBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + + 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 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/tree/IF-MIB b/test/dumps/tree/IF-MIB new file mode 100644 index 0000000..c57959d --- /dev/null +++ b/test/dumps/tree/IF-MIB @@ -0,0 +1,150 @@ +# IF-MIB registration tree (generated by smidump 0.4.5) + +--internet(1.3.6.1) + | + +--mgmt(2) + | | + | +--mib-2(1) + | | + | +--interfaces(2) + | | | + | | +-- r-n Integer32 ifNumber(1) + | | | + | | +--ifTable(2) + | | | + | | +--ifEntry(1) [ifIndex] + | | | + | | +-- r-n InterfaceIndex ifIndex(1) + | | +-- r-n DisplayString ifDescr(2) + | | +-- r-n IANAifType ifType(3) + | | +-- r-n Integer32 ifMtu(4) + | | +-- r-n Gauge32 ifSpeed(5) + | | +-- r-n PhysAddress ifPhysAddress(6) + | | +-- rwn Enumeration ifAdminStatus(7) + | | +-- r-n Enumeration ifOperStatus(8) + | | +-- r-n TimeTicks ifLastChange(9) + | | +-- r-n Counter32 ifInOctets(10) + | | +-- r-n Counter32 ifInUcastPkts(11) + | | x-- r-n Counter32 ifInNUcastPkts(12) + | | +-- r-n Counter32 ifInDiscards(13) + | | +-- r-n Counter32 ifInErrors(14) + | | +-- r-n Counter32 ifInUnknownProtos(15) + | | +-- r-n Counter32 ifOutOctets(16) + | | +-- r-n Counter32 ifOutUcastPkts(17) + | | x-- r-n Counter32 ifOutNUcastPkts(18) + | | +-- r-n Counter32 ifOutDiscards(19) + | | +-- r-n Counter32 ifOutErrors(20) + | | x-- r-n Gauge32 ifOutQLen(21) + | | x-- r-n ObjectIdentifier ifSpecific(22) + | | + | +--ifMIB(31) + | | + | +--ifMIBObjects(1) + | | | + | | +--ifXTable(1) + | | | | + | | | +--ifXEntry(1) [ifIndex] + | | | | + | | | +-- r-n DisplayString ifName(1) + | | | +-- r-n Counter32 ifInMulticastPkts(2) + | | | +-- r-n Counter32 ifInBroadcastPkts(3) + | | | +-- r-n Counter32 ifOutMulticastPkts(4) + | | | +-- r-n Counter32 ifOutBroadcastPkts(5) + | | | +-- r-n Counter64 ifHCInOctets(6) + | | | +-- r-n Counter64 ifHCInUcastPkts(7) + | | | +-- r-n Counter64 ifHCInMulticastPkts(8) + | | | +-- r-n Counter64 ifHCInBroadcastPkts(9) + | | | +-- r-n Counter64 ifHCOutOctets(10) + | | | +-- r-n Counter64 ifHCOutUcastPkts(11) + | | | +-- r-n Counter64 ifHCOutMulticastPkts(12) + | | | +-- r-n Counter64 ifHCOutBroadcastPkts(13) + | | | +-- rwn Enumeration ifLinkUpDownTrapEnable(14) + | | | +-- r-n Gauge32 ifHighSpeed(15) + | | | +-- rwn TruthValue ifPromiscuousMode(16) + | | | +-- r-n TruthValue ifConnectorPresent(17) + | | | +-- rwn DisplayString ifAlias(18) + | | | +-- r-n TimeStamp ifCounterDiscontinuityTime(19) + | | | + | | +--ifStackTable(2) + | | | | + | | | +--ifStackEntry(1) [ifStackHigherLayer,ifStackLowerLayer] + | | | | + | | | +-- --- InterfaceIndexOrZero ifStackHigherLayer(1) + | | | +-- --- InterfaceIndexOrZero ifStackLowerLayer(2) + | | | +-- rwn RowStatus ifStackStatus(3) + | | | + | | x--ifTestTable(3) + | | | | + | | | x--ifTestEntry(1) [ifIndex] + | | | | + | | | x-- rwn TestAndIncr ifTestId(1) + | | | x-- rwn Enumeration ifTestStatus(2) + | | | x-- rwn AutonomousType ifTestType(3) + | | | x-- r-n Enumeration ifTestResult(4) + | | | x-- r-n ObjectIdentifier ifTestCode(5) + | | | x-- rwn OwnerString ifTestOwner(6) + | | | + | | +--ifRcvAddressTable(4) + | | | | + | | | +--ifRcvAddressEntry(1) [ifIndex,ifRcvAddressAddress] + | | | | + | | | +-- --- PhysAddress ifRcvAddressAddress(1) + | | | +-- rwn RowStatus ifRcvAddressStatus(2) + | | | +-- rwn Enumeration ifRcvAddressType(3) + | | | + | | +-- r-n TimeTicks ifTableLastChange(5) + | | +-- r-n TimeTicks ifStackLastChange(6) + | | + | +--ifConformance(2) + | | + | +--ifGroups(1) + | | | + | | x--ifGeneralGroup(1) + | | | + | | +--ifFixedLengthGroup(2) + | | | + | | +--ifHCFixedLengthGroup(3) + | | | + | | +--ifPacketGroup(4) + | | | + | | +--ifHCPacketGroup(5) + | | | + | | +--ifVHCPacketGroup(6) + | | | + | | +--ifRcvAddressGroup(7) + | | | + | | x--ifTestGroup(8) + | | | + | | x--ifStackGroup(9) + | | | + | | +--ifGeneralInformationGroup(10) + | | | + | | +--ifStackGroup2(11) + | | | + | | x--ifOldObjectsGroup(12) + | | | + | | +--ifCounterDiscontinuityGroup(13) + | | | + | | +--linkUpDownNotificationsGroup(14) + | | + | +--ifCompliances(2) + | | + | x--ifCompliance(1) + | | + | x--ifCompliance2(2) + | | + | +--ifCompliance3(3) + | + +--snmpV2(6) + | + +--snmpModules(3) + | + +--snmpMIB(1) + | + +--snmpMIBObjects(1) + | + +--snmpTraps(5) + | + +--linkDown(3) [ifIndex,ifAdminStatus,ifOperStatus] + | + +--linkUp(4) [ifIndex,ifAdminStatus,ifOperStatus] diff --git a/test/dumps/tree/MAU-MIB b/test/dumps/tree/MAU-MIB new file mode 100644 index 0000000..dd2ec6f --- /dev/null +++ b/test/dumps/tree/MAU-MIB @@ -0,0 +1,140 @@ +# MAU-MIB registration tree (generated by smidump 0.4.5) + +--snmpDot3MauMgt(1.3.6.1.2.1.26) + | + +--snmpDot3MauTraps(0) + | | + | +--rpMauJabberTrap(1) [rpMauJabberState] + | | + | +--ifMauJabberTrap(2) [ifMauJabberState] + | + +--dot3RpMauBasicGroup(1) + | | + | +--rpMauTable(1) + | | | + | | +--rpMauEntry(1) [rpMauGroupIndex,rpMauPortIndex,rpMauIndex] + | | | + | | +-- r-n Integer32 rpMauGroupIndex(1) + | | +-- r-n Integer32 rpMauPortIndex(2) + | | +-- r-n Integer32 rpMauIndex(3) + | | +-- r-n AutonomousType rpMauType(4) + | | +-- rwn Enumeration rpMauStatus(5) + | | +-- r-n IANAifMauMediaAvailable rpMauMediaAvailable(6) + | | +-- r-n Counter32 rpMauMediaAvailableStateExits(7) + | | +-- r-n Enumeration rpMauJabberState(8) + | | +-- r-n Counter32 rpMauJabberingStateEnters(9) + | | +-- r-n Counter32 rpMauFalseCarriers(10) + | | + | +--rpJackTable(2) + | | + | +--rpJackEntry(1) [rpMauGroupIndex,rpMauPortIndex,rpMauIndex,rpJackIndex] + | | + | +-- --- Integer32 rpJackIndex(1) + | +-- r-n IANAifJackType rpJackType(2) + | + +--dot3IfMauBasicGroup(2) + | | + | +--ifMauTable(1) + | | | + | | +--ifMauEntry(1) [ifMauIfIndex,ifMauIndex] + | | | + | | +-- r-n InterfaceIndex ifMauIfIndex(1) + | | +-- r-n Integer32 ifMauIndex(2) + | | +-- r-n AutonomousType ifMauType(3) + | | +-- rwn Enumeration ifMauStatus(4) + | | +-- r-n IANAifMauMediaAvailable ifMauMediaAvailable(5) + | | +-- r-n Counter32 ifMauMediaAvailableStateExits(6) + | | +-- r-n Enumeration ifMauJabberState(7) + | | +-- r-n Counter32 ifMauJabberingStateEnters(8) + | | +-- r-n Counter32 ifMauFalseCarriers(9) + | | x-- r-n Integer32 ifMauTypeList(10) + | | +-- rwn AutonomousType ifMauDefaultType(11) + | | +-- r-n TruthValue ifMauAutoNegSupported(12) + | | +-- r-n IANAifMauTypeListBits ifMauTypeListBits(13) + | | +-- r-n Counter64 ifMauHCFalseCarriers(14) + | | + | +--ifJackTable(2) + | | + | +--ifJackEntry(1) [ifMauIfIndex,ifMauIndex,ifJackIndex] + | | + | +-- --- Integer32 ifJackIndex(1) + | +-- r-n IANAifJackType ifJackType(2) + | + +--dot3BroadMauBasicGroup(3) + | | + | x--broadMauBasicTable(1) + | | + | x--broadMauBasicEntry(1) [broadMauIfIndex,broadMauIndex] + | | + | x-- r-n InterfaceIndex broadMauIfIndex(1) + | x-- r-n Integer32 broadMauIndex(2) + | x-- r-n Enumeration broadMauXmtRcvSplitType(3) + | x-- r-n Integer32 broadMauXmtCarrierFreq(4) + | x-- r-n Integer32 broadMauTranslationFreq(5) + | + +--dot3IfMauAutoNegGroup(5) + | | + | +--ifMauAutoNegTable(1) + | | + | +--ifMauAutoNegEntry(1) [ifMauIfIndex,ifMauIndex] + | | + | +-- rwn Enumeration ifMauAutoNegAdminStatus(1) + | +-- r-n Enumeration ifMauAutoNegRemoteSignaling(2) + | +-- r-n Enumeration ifMauAutoNegConfig(4) + | x-- r-n Integer32 ifMauAutoNegCapability(5) + | x-- rwn Integer32 ifMauAutoNegCapAdvertised(6) + | x-- r-n Integer32 ifMauAutoNegCapReceived(7) + | +-- rwn Enumeration ifMauAutoNegRestart(8) + | +-- r-n IANAifMauAutoNegCapBits ifMauAutoNegCapabilityBits(9) + | +-- rwn IANAifMauAutoNegCapBits ifMauAutoNegCapAdvertisedBits(10) + | +-- r-n IANAifMauAutoNegCapBits ifMauAutoNegCapReceivedBits(11) + | +-- rwn Enumeration ifMauAutoNegRemoteFaultAdvertised(12) + | +-- r-n Enumeration ifMauAutoNegRemoteFaultReceived(13) + | + +--mauMod(6) + | + +--mauModConf(1) + | + +--mauModCompls(1) + | | + | x--mauModRpCompl(1) + | | + | x--mauModIfCompl(2) + | | + | x--mauModIfCompl2(3) + | | + | +--mauModRpCompl2(4) + | | + | +--mauModIfCompl3(5) + | + +--mauModObjGrps(2) + | | + | +--mauRpGrpBasic(1) + | | + | +--mauRpGrp100Mbs(2) + | | + | +--mauRpGrpJack(3) + | | + | +--mauIfGrpBasic(4) + | | + | x--mauIfGrp100Mbs(5) + | | + | +--mauIfGrpJack(6) + | | + | x--mauIfGrpAutoNeg(7) + | | + | x--mauBroadBasic(8) + | | + | +--mauIfGrpHighCapacity(9) + | | + | +--mauIfGrpAutoNeg2(10) + | | + | +--mauIfGrpAutoNeg1000Mbps(11) + | | + | +--mauIfGrpHCStats(12) + | + +--mauModNotGrps(3) + | + +--rpMauNotifications(1) + | + +--ifMauNotifications(2) diff --git a/test/dumps/tree/Makefile.am b/test/dumps/tree/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/tree/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/tree/Makefile.in b/test/dumps/tree/Makefile.in new file mode 100644 index 0000000..368692f --- /dev/null +++ b/test/dumps/tree/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/tree +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/tree/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/tree/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/tree/RMON2-MIB b/test/dumps/tree/RMON2-MIB new file mode 100644 index 0000000..e16659e --- /dev/null +++ b/test/dumps/tree/RMON2-MIB @@ -0,0 +1,443 @@ +# RMON2-MIB registration tree (generated by smidump 0.4.5) + +--rmon(1.3.6.1.2.1.16) + | + +--statistics(1) + | | + | +--etherStats2Table(4) + | | | + | | +--etherStats2Entry(1) [etherStatsIndex] + | | | + | | +-- r-n Counter32 etherStatsDroppedFrames(1) + | | +-- r-n LastCreateTime etherStatsCreateTime(2) + | | + | x--tokenRingMLStats2Table(5) + | | | + | | x--tokenRingMLStats2Entry(1) [tokenRingMLStatsIndex] + | | | + | | x-- r-n Counter32 tokenRingMLStatsDroppedFrames(1) + | | x-- r-n LastCreateTime tokenRingMLStatsCreateTime(2) + | | + | x--tokenRingPStats2Table(6) + | | + | x--tokenRingPStats2Entry(1) [tokenRingPStatsIndex] + | | + | x-- r-n Counter32 tokenRingPStatsDroppedFrames(1) + | x-- r-n LastCreateTime tokenRingPStatsCreateTime(2) + | + +--history(2) + | | + | +--historyControl2Table(5) + | | + | +--historyControl2Entry(1) [historyControlIndex] + | | + | +-- r-n Counter32 historyControlDroppedFrames(1) + | + +--hosts(4) + | | + | +--hostControl2Table(4) + | | + | +--hostControl2Entry(1) [hostControlIndex] + | | + | +-- r-n Counter32 hostControlDroppedFrames(1) + | +-- r-n LastCreateTime hostControlCreateTime(2) + | + +--matrix(6) + | | + | +--matrixControl2Table(4) + | | + | +--matrixControl2Entry(1) [matrixControlIndex] + | | + | +-- r-n Counter32 matrixControlDroppedFrames(1) + | +-- r-n LastCreateTime matrixControlCreateTime(2) + | + +--filter(7) + | | + | +--channel2Table(3) + | | | + | | +--channel2Entry(1) [channelIndex] + | | | + | | +-- r-n Counter32 channelDroppedFrames(1) + | | +-- r-n LastCreateTime channelCreateTime(2) + | | + | +--filter2Table(4) + | | + | +--filter2Entry(1) [filterIndex] + | | + | +-- rwn Integer32 filterProtocolDirDataLocalIndex(1) + | +-- rwn Integer32 filterProtocolDirLocalIndex(2) + | + +--tokenRing(10) + | | + | x--ringStationControl2Table(7) + | | | + | | x--ringStationControl2Entry(1) [ringStationControlIfIndex] + | | | + | | x-- r-n Counter32 ringStationControlDroppedFrames(1) + | | x-- r-n LastCreateTime ringStationControlCreateTime(2) + | | + | x--sourceRoutingStats2Table(8) + | | + | x--sourceRoutingStats2Entry(1) [sourceRoutingStatsIfIndex] + | | + | x-- r-n Counter32 sourceRoutingStatsDroppedFrames(1) + | x-- r-n LastCreateTime sourceRoutingStatsCreateTime(2) + | + +--protocolDir(11) + | | + | +-- r-n TimeStamp protocolDirLastChange(1) + | | + | +--protocolDirTable(2) + | | + | +--protocolDirEntry(1) [protocolDirID,protocolDirParameters] + | | + | +-- --- OctetString protocolDirID(1) + | +-- --- OctetString protocolDirParameters(2) + | +-- r-n Integer32 protocolDirLocalIndex(3) + | +-- rwn DisplayString protocolDirDescr(4) + | +-- r-n Bits protocolDirType(5) + | +-- rwn Enumeration protocolDirAddressMapConfig(6) + | +-- rwn Enumeration protocolDirHostConfig(7) + | +-- rwn Enumeration protocolDirMatrixConfig(8) + | +-- rwn OwnerString protocolDirOwner(9) + | +-- rwn RowStatus protocolDirStatus(10) + | + +--protocolDist(12) + | | + | +--protocolDistControlTable(1) + | | | + | | +--protocolDistControlEntry(1) [protocolDistControlIndex] + | | | + | | +-- --- Integer32 protocolDistControlIndex(1) + | | +-- rwn DataSource protocolDistControlDataSource(2) + | | +-- r-n Counter32 protocolDistControlDroppedFrames(3) + | | +-- r-n LastCreateTime protocolDistControlCreateTime(4) + | | +-- rwn OwnerString protocolDistControlOwner(5) + | | +-- rwn RowStatus protocolDistControlStatus(6) + | | + | +--protocolDistStatsTable(2) + | | + | +--protocolDistStatsEntry(1) [protocolDistControlIndex,protocolDirLocalIndex] + | | + | +-- r-n ZeroBasedCounter32 protocolDistStatsPkts(1) + | +-- r-n ZeroBasedCounter32 protocolDistStatsOctets(2) + | + +--addressMap(13) + | | + | +-- r-n Counter32 addressMapInserts(1) + | +-- r-n Counter32 addressMapDeletes(2) + | +-- rwn Integer32 addressMapMaxDesiredEntries(3) + | | + | +--addressMapControlTable(4) + | | | + | | +--addressMapControlEntry(1) [addressMapControlIndex] + | | | + | | +-- --- Integer32 addressMapControlIndex(1) + | | +-- rwn DataSource addressMapControlDataSource(2) + | | +-- r-n Counter32 addressMapControlDroppedFrames(3) + | | +-- rwn OwnerString addressMapControlOwner(4) + | | +-- rwn RowStatus addressMapControlStatus(5) + | | + | +--addressMapTable(5) + | | + | +--addressMapEntry(1) [addressMapTimeMark,protocolDirLocalIndex,addressMapNetworkAddress,addressMapSource] + | | + | +-- --- TimeFilter addressMapTimeMark(1) + | +-- --- OctetString addressMapNetworkAddress(2) + | +-- --- ObjectIdentifier addressMapSource(3) + | +-- r-n OctetString addressMapPhysicalAddress(4) + | +-- r-n TimeStamp addressMapLastChange(5) + | + +--nlHost(14) + | | + | +--hlHostControlTable(1) + | | | + | | +--hlHostControlEntry(1) [hlHostControlIndex] + | | | + | | +-- --- Integer32 hlHostControlIndex(1) + | | +-- rwn DataSource hlHostControlDataSource(2) + | | +-- r-n Counter32 hlHostControlNlDroppedFrames(3) + | | +-- r-n Counter32 hlHostControlNlInserts(4) + | | +-- r-n Counter32 hlHostControlNlDeletes(5) + | | +-- rwn Integer32 hlHostControlNlMaxDesiredEntries(6) + | | +-- r-n Counter32 hlHostControlAlDroppedFrames(7) + | | +-- r-n Counter32 hlHostControlAlInserts(8) + | | +-- r-n Counter32 hlHostControlAlDeletes(9) + | | +-- rwn Integer32 hlHostControlAlMaxDesiredEntries(10) + | | +-- rwn OwnerString hlHostControlOwner(11) + | | +-- rwn RowStatus hlHostControlStatus(12) + | | + | +--nlHostTable(2) + | | + | +--nlHostEntry(1) [hlHostControlIndex,nlHostTimeMark,protocolDirLocalIndex,nlHostAddress] + | | + | +-- --- TimeFilter nlHostTimeMark(1) + | +-- --- OctetString nlHostAddress(2) + | +-- r-n ZeroBasedCounter32 nlHostInPkts(3) + | +-- r-n ZeroBasedCounter32 nlHostOutPkts(4) + | +-- r-n ZeroBasedCounter32 nlHostInOctets(5) + | +-- r-n ZeroBasedCounter32 nlHostOutOctets(6) + | +-- r-n ZeroBasedCounter32 nlHostOutMacNonUnicastPkts(7) + | +-- r-n LastCreateTime nlHostCreateTime(8) + | + +--nlMatrix(15) + | | + | +--hlMatrixControlTable(1) + | | | + | | +--hlMatrixControlEntry(1) [hlMatrixControlIndex] + | | | + | | +-- --- Integer32 hlMatrixControlIndex(1) + | | +-- rwn DataSource hlMatrixControlDataSource(2) + | | +-- r-n Counter32 hlMatrixControlNlDroppedFrames(3) + | | +-- r-n Counter32 hlMatrixControlNlInserts(4) + | | +-- r-n Counter32 hlMatrixControlNlDeletes(5) + | | +-- rwn Integer32 hlMatrixControlNlMaxDesiredEntries(6) + | | +-- r-n Counter32 hlMatrixControlAlDroppedFrames(7) + | | +-- r-n Counter32 hlMatrixControlAlInserts(8) + | | +-- r-n Counter32 hlMatrixControlAlDeletes(9) + | | +-- rwn Integer32 hlMatrixControlAlMaxDesiredEntries(10) + | | +-- rwn OwnerString hlMatrixControlOwner(11) + | | +-- rwn RowStatus hlMatrixControlStatus(12) + | | + | +--nlMatrixSDTable(2) + | | | + | | +--nlMatrixSDEntry(1) [hlMatrixControlIndex,nlMatrixSDTimeMark,protocolDirLocalIndex,nlMatrixSDSourceAddress,nlMatrixSDDestAddress] + | | | + | | +-- --- TimeFilter nlMatrixSDTimeMark(1) + | | +-- --- OctetString nlMatrixSDSourceAddress(2) + | | +-- --- OctetString nlMatrixSDDestAddress(3) + | | +-- r-n ZeroBasedCounter32 nlMatrixSDPkts(4) + | | +-- r-n ZeroBasedCounter32 nlMatrixSDOctets(5) + | | +-- r-n LastCreateTime nlMatrixSDCreateTime(6) + | | + | +--nlMatrixDSTable(3) + | | | + | | +--nlMatrixDSEntry(1) [hlMatrixControlIndex,nlMatrixDSTimeMark,protocolDirLocalIndex,nlMatrixDSDestAddress,nlMatrixDSSourceAddress] + | | | + | | +-- --- TimeFilter nlMatrixDSTimeMark(1) + | | +-- --- OctetString nlMatrixDSSourceAddress(2) + | | +-- --- OctetString nlMatrixDSDestAddress(3) + | | +-- r-n ZeroBasedCounter32 nlMatrixDSPkts(4) + | | +-- r-n ZeroBasedCounter32 nlMatrixDSOctets(5) + | | +-- r-n LastCreateTime nlMatrixDSCreateTime(6) + | | + | +--nlMatrixTopNControlTable(4) + | | | + | | +--nlMatrixTopNControlEntry(1) [nlMatrixTopNControlIndex] + | | | + | | +-- --- Integer32 nlMatrixTopNControlIndex(1) + | | +-- rwn Integer32 nlMatrixTopNControlMatrixIndex(2) + | | +-- rwn Enumeration nlMatrixTopNControlRateBase(3) + | | +-- rwn Integer32 nlMatrixTopNControlTimeRemaining(4) + | | +-- r-n Counter32 nlMatrixTopNControlGeneratedReports(5) + | | +-- r-n Integer32 nlMatrixTopNControlDuration(6) + | | +-- rwn Integer32 nlMatrixTopNControlRequestedSize(7) + | | +-- r-n Integer32 nlMatrixTopNControlGrantedSize(8) + | | +-- r-n TimeStamp nlMatrixTopNControlStartTime(9) + | | +-- rwn OwnerString nlMatrixTopNControlOwner(10) + | | +-- rwn RowStatus nlMatrixTopNControlStatus(11) + | | + | +--nlMatrixTopNTable(5) + | | + | +--nlMatrixTopNEntry(1) [nlMatrixTopNControlIndex,nlMatrixTopNIndex] + | | + | +-- --- Integer32 nlMatrixTopNIndex(1) + | +-- r-n Integer32 nlMatrixTopNProtocolDirLocalIndex(2) + | +-- r-n OctetString nlMatrixTopNSourceAddress(3) + | +-- r-n OctetString nlMatrixTopNDestAddress(4) + | +-- r-n Gauge32 nlMatrixTopNPktRate(5) + | +-- r-n Gauge32 nlMatrixTopNReversePktRate(6) + | +-- r-n Gauge32 nlMatrixTopNOctetRate(7) + | +-- r-n Gauge32 nlMatrixTopNReverseOctetRate(8) + | + +--alHost(16) + | | + | +--alHostTable(1) + | | + | +--alHostEntry(1) [hlHostControlIndex,alHostTimeMark,protocolDirLocalIndex,nlHostAddress,protocolDirLocalIndex] + | | + | +-- --- TimeFilter alHostTimeMark(1) + | +-- r-n ZeroBasedCounter32 alHostInPkts(2) + | +-- r-n ZeroBasedCounter32 alHostOutPkts(3) + | +-- r-n ZeroBasedCounter32 alHostInOctets(4) + | +-- r-n ZeroBasedCounter32 alHostOutOctets(5) + | +-- r-n LastCreateTime alHostCreateTime(6) + | + +--alMatrix(17) + | | + | +--alMatrixSDTable(1) + | | | + | | +--alMatrixSDEntry(1) [hlMatrixControlIndex,alMatrixSDTimeMark,protocolDirLocalIndex,nlMatrixSDSourceAddress,nlMatrixSDDestAddress,protocolDirLocalIndex] + | | | + | | +-- --- TimeFilter alMatrixSDTimeMark(1) + | | +-- r-n ZeroBasedCounter32 alMatrixSDPkts(2) + | | +-- r-n ZeroBasedCounter32 alMatrixSDOctets(3) + | | +-- r-n LastCreateTime alMatrixSDCreateTime(4) + | | + | +--alMatrixDSTable(2) + | | | + | | +--alMatrixDSEntry(1) [hlMatrixControlIndex,alMatrixDSTimeMark,protocolDirLocalIndex,nlMatrixDSDestAddress,nlMatrixDSSourceAddress,protocolDirLocalIndex] + | | | + | | +-- --- TimeFilter alMatrixDSTimeMark(1) + | | +-- r-n ZeroBasedCounter32 alMatrixDSPkts(2) + | | +-- r-n ZeroBasedCounter32 alMatrixDSOctets(3) + | | +-- r-n LastCreateTime alMatrixDSCreateTime(4) + | | + | +--alMatrixTopNControlTable(3) + | | | + | | +--alMatrixTopNControlEntry(1) [alMatrixTopNControlIndex] + | | | + | | +-- --- Integer32 alMatrixTopNControlIndex(1) + | | +-- rwn Integer32 alMatrixTopNControlMatrixIndex(2) + | | +-- rwn Enumeration alMatrixTopNControlRateBase(3) + | | +-- rwn Integer32 alMatrixTopNControlTimeRemaining(4) + | | +-- r-n Counter32 alMatrixTopNControlGeneratedReports(5) + | | +-- r-n Integer32 alMatrixTopNControlDuration(6) + | | +-- rwn Integer32 alMatrixTopNControlRequestedSize(7) + | | +-- r-n Integer32 alMatrixTopNControlGrantedSize(8) + | | +-- r-n TimeStamp alMatrixTopNControlStartTime(9) + | | +-- rwn OwnerString alMatrixTopNControlOwner(10) + | | +-- rwn RowStatus alMatrixTopNControlStatus(11) + | | + | +--alMatrixTopNTable(4) + | | + | +--alMatrixTopNEntry(1) [alMatrixTopNControlIndex,alMatrixTopNIndex] + | | + | +-- --- Integer32 alMatrixTopNIndex(1) + | +-- r-n Integer32 alMatrixTopNProtocolDirLocalIndex(2) + | +-- r-n OctetString alMatrixTopNSourceAddress(3) + | +-- r-n OctetString alMatrixTopNDestAddress(4) + | +-- r-n Integer32 alMatrixTopNAppProtocolDirLocalIndex(5) + | +-- r-n Gauge32 alMatrixTopNPktRate(6) + | +-- r-n Gauge32 alMatrixTopNReversePktRate(7) + | +-- r-n Gauge32 alMatrixTopNOctetRate(8) + | +-- r-n Gauge32 alMatrixTopNReverseOctetRate(9) + | + +--usrHistory(18) + | | + | +--usrHistoryControlTable(1) + | | | + | | +--usrHistoryControlEntry(1) [usrHistoryControlIndex] + | | | + | | +-- --- Integer32 usrHistoryControlIndex(1) + | | +-- rwn Integer32 usrHistoryControlObjects(2) + | | +-- rwn Integer32 usrHistoryControlBucketsRequested(3) + | | +-- r-n Integer32 usrHistoryControlBucketsGranted(4) + | | +-- rwn Integer32 usrHistoryControlInterval(5) + | | +-- rwn OwnerString usrHistoryControlOwner(6) + | | +-- rwn RowStatus usrHistoryControlStatus(7) + | | + | +--usrHistoryObjectTable(2) + | | | + | | +--usrHistoryObjectEntry(1) [usrHistoryControlIndex,usrHistoryObjectIndex] + | | | + | | +-- --- Integer32 usrHistoryObjectIndex(1) + | | +-- rwn ObjectIdentifier usrHistoryObjectVariable(2) + | | +-- rwn Enumeration usrHistoryObjectSampleType(3) + | | + | +--usrHistoryTable(3) + | | + | +--usrHistoryEntry(1) [usrHistoryControlIndex,usrHistorySampleIndex,usrHistoryObjectIndex] + | | + | +-- --- Integer32 usrHistorySampleIndex(1) + | +-- r-n TimeStamp usrHistoryIntervalStart(2) + | +-- r-n TimeStamp usrHistoryIntervalEnd(3) + | +-- r-n Gauge32 usrHistoryAbsValue(4) + | +-- r-n Enumeration usrHistoryValStatus(5) + | + +--probeConfig(19) + | | + | +-- r-n Bits probeCapabilities(1) + | +-- r-n DisplayString probeSoftwareRev(2) + | +-- r-n DisplayString probeHardwareRev(3) + | +-- rwn OctetString probeDateTime(4) + | +-- rwn Enumeration probeResetControl(5) + | x-- rwn DisplayString probeDownloadFile(6) + | x-- rwn IpAddress probeDownloadTFTPServer(7) + | x-- rwn Enumeration probeDownloadAction(8) + | x-- r-n Enumeration probeDownloadStatus(9) + | | + | x--serialConfigTable(10) + | | | + | | x--serialConfigEntry(1) [ifIndex] + | | | + | | x-- rwn Enumeration serialMode(1) + | | x-- rwn Enumeration serialProtocol(2) + | | x-- rwn Integer32 serialTimeout(3) + | | x-- rwn ControlString serialModemInitString(4) + | | x-- rwn ControlString serialModemHangUpString(5) + | | x-- rwn DisplayString serialModemConnectResp(6) + | | x-- rwn DisplayString serialModemNoConnectResp(7) + | | x-- rwn Integer32 serialDialoutTimeout(8) + | | x-- rwn RowStatus serialStatus(9) + | | + | x--netConfigTable(11) + | | | + | | x--netConfigEntry(1) [ifIndex] + | | | + | | x-- rwn IpAddress netConfigIPAddress(1) + | | x-- rwn IpAddress netConfigSubnetMask(2) + | | x-- rwn RowStatus netConfigStatus(3) + | | + | x-- rwn IpAddress netDefaultGateway(12) + | | + | x--trapDestTable(13) + | | | + | | x--trapDestEntry(1) [trapDestIndex] + | | | + | | x-- --- Integer32 trapDestIndex(1) + | | x-- rwn OctetString trapDestCommunity(2) + | | x-- rwn Enumeration trapDestProtocol(3) + | | x-- rwn OctetString trapDestAddress(4) + | | x-- rwn OwnerString trapDestOwner(5) + | | x-- rwn RowStatus trapDestStatus(6) + | | + | x--serialConnectionTable(14) + | | + | x--serialConnectionEntry(1) [serialConnectIndex] + | | + | x-- --- Integer32 serialConnectIndex(1) + | x-- rwn IpAddress serialConnectDestIpAddress(2) + | x-- rwn Enumeration serialConnectType(3) + | x-- rwn ControlString serialConnectDialString(4) + | x-- rwn ControlString serialConnectSwitchConnectSeq(5) + | x-- rwn ControlString serialConnectSwitchDisconnectSeq(6) + | x-- rwn ControlString serialConnectSwitchResetSeq(7) + | x-- rwn OwnerString serialConnectOwner(8) + | x-- rwn RowStatus serialConnectStatus(9) + | + +--rmonConformance(20) + | + +--rmon2MIBCompliances(1) + | | + | +--rmon2MIBCompliance(1) + | | + | +--rmon2MIBApplicationLayerCompliance(2) + | + +--rmon2MIBGroups(2) + | + +--protocolDirectoryGroup(1) + | + +--protocolDistributionGroup(2) + | + +--addressMapGroup(3) + | + +--nlHostGroup(4) + | + +--nlMatrixGroup(5) + | + +--alHostGroup(6) + | + +--alMatrixGroup(7) + | + +--usrHistoryGroup(8) + | + +--probeInformationGroup(9) + | + x--probeConfigurationGroup(10) + | + +--rmon1EnhancementGroup(11) + | + +--rmon1EthernetEnhancementGroup(12) + | + x--rmon1TokenRingEnhancementGroup(13) diff --git a/test/dumps/tree/SNMPv2-MIB b/test/dumps/tree/SNMPv2-MIB new file mode 100644 index 0000000..4014666 --- /dev/null +++ b/test/dumps/tree/SNMPv2-MIB @@ -0,0 +1,111 @@ +# SNMPv2-MIB registration tree (generated by smidump 0.4.5) + +--internet(1.3.6.1) + | + +--mgmt(2) + | | + | +--mib-2(1) + | | + | +--system(1) + | | | + | | +-- r-n DisplayString sysDescr(1) + | | +-- r-n ObjectIdentifier sysObjectID(2) + | | +-- r-n TimeTicks sysUpTime(3) + | | +-- rwn DisplayString sysContact(4) + | | +-- rwn DisplayString sysName(5) + | | +-- rwn DisplayString sysLocation(6) + | | +-- r-n Integer32 sysServices(7) + | | +-- r-n TimeStamp sysORLastChange(8) + | | | + | | +--sysORTable(9) + | | | + | | +--sysOREntry(1) [sysORIndex] + | | | + | | +-- --- Integer32 sysORIndex(1) + | | +-- r-n ObjectIdentifier sysORID(2) + | | +-- r-n DisplayString sysORDescr(3) + | | +-- r-n TimeStamp sysORUpTime(4) + | | + | +--snmp(11) + | | + | +-- r-n Counter32 snmpInPkts(1) + | o-- r-n Counter32 snmpOutPkts(2) + | +-- r-n Counter32 snmpInBadVersions(3) + | +-- r-n Counter32 snmpInBadCommunityNames(4) + | +-- r-n Counter32 snmpInBadCommunityUses(5) + | +-- r-n Counter32 snmpInASNParseErrs(6) + | o-- r-n Counter32 snmpInTooBigs(8) + | o-- r-n Counter32 snmpInNoSuchNames(9) + | o-- r-n Counter32 snmpInBadValues(10) + | o-- r-n Counter32 snmpInReadOnlys(11) + | o-- r-n Counter32 snmpInGenErrs(12) + | o-- r-n Counter32 snmpInTotalReqVars(13) + | o-- r-n Counter32 snmpInTotalSetVars(14) + | o-- r-n Counter32 snmpInGetRequests(15) + | o-- r-n Counter32 snmpInGetNexts(16) + | o-- r-n Counter32 snmpInSetRequests(17) + | o-- r-n Counter32 snmpInGetResponses(18) + | o-- r-n Counter32 snmpInTraps(19) + | o-- r-n Counter32 snmpOutTooBigs(20) + | o-- r-n Counter32 snmpOutNoSuchNames(21) + | o-- r-n Counter32 snmpOutBadValues(22) + | o-- r-n Counter32 snmpOutGenErrs(24) + | o-- r-n Counter32 snmpOutGetRequests(25) + | o-- r-n Counter32 snmpOutGetNexts(26) + | o-- r-n Counter32 snmpOutSetRequests(27) + | o-- r-n Counter32 snmpOutGetResponses(28) + | o-- r-n Counter32 snmpOutTraps(29) + | +-- rwn Enumeration snmpEnableAuthenTraps(30) + | +-- r-n Counter32 snmpSilentDrops(31) + | +-- r-n Counter32 snmpProxyDrops(32) + | + +--snmpV2(6) + | + +--snmpModules(3) + | + +--snmpMIB(1) + | + +--snmpMIBObjects(1) + | | + | +--snmpTrap(4) + | | | + | | +-- --n ObjectIdentifier snmpTrapOID(1) + | | +-- --n ObjectIdentifier snmpTrapEnterprise(3) + | | + | +--snmpTraps(5) + | | | + | | +--coldStart(1) [] + | | | + | | +--warmStart(2) [] + | | | + | | +--authenticationFailure(5) [] + | | + | +--snmpSet(6) + | | + | +-- rwn TestAndIncr snmpSetSerialNo(1) + | + +--snmpMIBConformance(2) + | + +--snmpMIBCompliances(1) + | | + | x--snmpBasicCompliance(2) + | | + | +--snmpBasicComplianceRev2(3) + | + +--snmpMIBGroups(2) + | + +--snmpSetGroup(5) + | + +--systemGroup(6) + | + +--snmpBasicNotificationsGroup(7) + | + +--snmpGroup(8) + | + +--snmpCommunityGroup(9) + | + o--snmpObsoleteGroup(10) + | + +--snmpWarmStartNotificationGroup(11) + | + +--snmpNotificationGroup(12) diff --git a/test/dumps/types/IF-MIB b/test/dumps/types/IF-MIB new file mode 100644 index 0000000..bf7c8cc --- /dev/null +++ b/test/dumps/types/IF-MIB @@ -0,0 +1,33 @@ +# IF-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b OctetString + | | + | x-- t-i OwnerString [0..255] "255a" + | +-- t-i DisplayString [0..255] "255a" + | | + | +-- i-i (ifDescr) [0..255] + | +-- i-i (ifAlias) [0..64] + | + +-- --b Integer32 + | | + | +-- t-i InterfaceIndex [1..2147483647] "d" + | +-- t-i InterfaceIndexOrZero [0..2147483647] "d" + | + +-- --b Enumeration + | + +-- i-i (ifAdminStatus) {up(1), down(2), testing(3)} + | | + | x-- i-i (ifAdminStatus) {up(1), down(2)} + | x-- i-i (ifAdminStatus) {up(1), down(2)} + | +-- i-i (ifAdminStatus) {up(1), down(2)} + | + +-- i-i (ifOperStatus) {up(1), down(2), testing(3), unknown(4), dormant(5), notPresent(6), lowerLayerDown(7)} + +-- i-i (ifLinkUpDownTrapEnable) {enabled(1), disabled(2)} + x-- i-i (ifTestStatus) {notInUse(1), inUse(2)} + x-- i-i (ifTestResult) {none(1), success(2), inProgress(3), notSupported(4), unAbleToRun(5), aborted(6), failed(7)} + +-- i-i (ifRcvAddressType) {other(1), volatile(2), nonVolatile(3)} + +-- t-i RowStatus {active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6)} + | + x-- i-i (ifStackStatus) {active(1)} + x-- i-i (ifStackStatus) {active(1)} diff --git a/test/dumps/types/MAU-MIB b/test/dumps/types/MAU-MIB new file mode 100644 index 0000000..6771cf3 --- /dev/null +++ b/test/dumps/types/MAU-MIB @@ -0,0 +1,27 @@ +# MAU-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b Enumeration + | | + | x-- t-i JackType {other(1), rj45(2), rj45S(3), db9(4), bnc(5), fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), fiberST(10), telco(11), mtrj(12), hssdc(13), fiberLC(14)} + | +-- i-i (rpMauStatus) {other(1), unknown(2), operational(3), standby(4), shutdown(5), reset(6)} + | +-- i-i (rpMauJabberState) {other(1), unknown(2), noJabber(3), jabbering(4)} + | +-- i-i (ifMauStatus) {other(1), unknown(2), operational(3), standby(4), shutdown(5), reset(6)} + | +-- i-i (ifMauJabberState) {other(1), unknown(2), noJabber(3), jabbering(4)} + | x-- i-i (broadMauXmtRcvSplitType) {other(1), single(2), dual(3)} + | +-- i-i (ifMauAutoNegAdminStatus) {enabled(1), disabled(2)} + | +-- i-i (ifMauAutoNegRemoteSignaling) {detected(1), notdetected(2)} + | +-- i-i (ifMauAutoNegConfig) {other(1), configuring(2), complete(3), disabled(4), parallelDetectFail(5)} + | +-- i-i (ifMauAutoNegRestart) {restart(1), norestart(2)} + | +-- i-i (ifMauAutoNegRemoteFaultAdvertised) {noError(1), offline(2), linkFailure(3), autoNegError(4)} + | +-- i-i (ifMauAutoNegRemoteFaultReceived) {noError(1), offline(2), linkFailure(3), autoNegError(4)} + | + +-- --b Integer32 + | + +-- i-i (rpMauGroupIndex) [1..2147483647] + +-- i-i (rpMauPortIndex) [1..2147483647] + +-- i-i (rpMauIndex) [1..2147483647] + +-- i-i (rpJackIndex) [1..2147483647] + +-- i-i (ifMauIndex) [1..2147483647] + +-- i-i (ifJackIndex) [1..2147483647] + x-- i-i (broadMauIndex) [1..2147483647] diff --git a/test/dumps/types/Makefile.am b/test/dumps/types/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/types/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/types/Makefile.in b/test/dumps/types/Makefile.in new file mode 100644 index 0000000..20b6751 --- /dev/null +++ b/test/dumps/types/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/types +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/types/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/types/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/types/RMON2-MIB b/test/dumps/types/RMON2-MIB new file mode 100644 index 0000000..4b552e5 --- /dev/null +++ b/test/dumps/types/RMON2-MIB @@ -0,0 +1,122 @@ +# RMON2-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b Unsigned32 + | | + | +-- a-i Gauge32 [0..4294967295] + | | | + | | +-- t-i ZeroBasedCounter32 + | | + | +-- a-i TimeTicks [0..4294967295] + | | + | +-- t-i LastCreateTime + | +-- t-i TimeFilter + | + +-- --b ObjectIdentifier + | | + | +-- t-i DataSource + | + +-- --b OctetString + | | + | +-- t-i ControlString [0..255] + | | | + | | +-- i-i (serialModemInitString) [0..255] + | | +-- i-i (serialModemHangUpString) [0..255] + | | +-- i-i (serialConnectDialString) [0..255] + | | +-- i-i (serialConnectSwitchConnectSeq) [0..255] + | | +-- i-i (serialConnectSwitchDisconnectSeq) [0..255] + | | +-- i-i (serialConnectSwitchResetSeq) [0..255] + | | + | +-- i-i (protocolDirID) [4..128] + | +-- i-i (protocolDirParameters) [1..32] + | +-- t-i DisplayString [0..255] "255a" + | | | + | | +-- i-i (protocolDirDescr) [1..64] + | | +-- i-i (probeSoftwareRev) [0..15] + | | +-- i-i (probeHardwareRev) [0..31] + | | +-- i-i (probeDownloadFile) [0..127] + | | +-- i-i (serialModemConnectResp) [0..255] + | | +-- i-i (serialModemNoConnectResp) [0..255] + | | + | +-- i-i (addressMapNetworkAddress) [1..255] + | +-- i-i (nlHostAddress) [1..255] + | +-- i-i (nlMatrixSDSourceAddress) [1..255] + | +-- i-i (nlMatrixSDDestAddress) [1..255] + | +-- i-i (nlMatrixDSSourceAddress) [1..255] + | +-- i-i (nlMatrixDSDestAddress) [1..255] + | +-- i-i (nlMatrixTopNSourceAddress) [1..255] + | +-- i-i (nlMatrixTopNDestAddress) [1..255] + | +-- i-i (alMatrixTopNSourceAddress) [1..255] + | +-- i-i (alMatrixTopNDestAddress) [1..255] + | +-- i-i (probeDateTime) [0, 8, 11] + | x-- i-i (trapDestCommunity) [0..127] + | + +-- --b Integer32 + | | + | +-- i-i (filterProtocolDirDataLocalIndex) [0..2147483647] + | +-- i-i (filterProtocolDirLocalIndex) [0..2147483647] + | +-- i-i (protocolDirLocalIndex) [1..2147483647] + | +-- i-i (protocolDistControlIndex) [1..65535] + | +-- i-i (addressMapMaxDesiredEntries) [-1..2147483647] + | +-- i-i (addressMapControlIndex) [1..65535] + | +-- i-i (hlHostControlIndex) [1..65535] + | +-- i-i (hlHostControlNlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlHostControlAlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlMatrixControlIndex) [1..65535] + | +-- i-i (hlMatrixControlNlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlMatrixControlAlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (nlMatrixTopNControlIndex) [1..65535] + | +-- i-i (nlMatrixTopNControlMatrixIndex) [1..65535] + | +-- i-i (nlMatrixTopNControlTimeRemaining) [0..2147483647] + | +-- i-i (nlMatrixTopNControlRequestedSize) [0..2147483647] + | +-- i-i (nlMatrixTopNControlGrantedSize) [0..2147483647] + | +-- i-i (nlMatrixTopNIndex) [1..65535] + | +-- i-i (nlMatrixTopNProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (alMatrixTopNControlIndex) [1..65535] + | +-- i-i (alMatrixTopNControlMatrixIndex) [1..65535] + | +-- i-i (alMatrixTopNControlTimeRemaining) [0..2147483647] + | +-- i-i (alMatrixTopNControlRequestedSize) [0..2147483647] + | +-- i-i (alMatrixTopNControlGrantedSize) [0..2147483647] + | +-- i-i (alMatrixTopNIndex) [1..65535] + | +-- i-i (alMatrixTopNProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (alMatrixTopNAppProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (usrHistoryControlIndex) [1..65535] + | +-- i-i (usrHistoryControlObjects) [1..65535] + | +-- i-i (usrHistoryControlBucketsRequested) [1..65535] + | +-- i-i (usrHistoryControlBucketsGranted) [1..65535] + | +-- i-i (usrHistoryControlInterval) [1..2147483647] + | +-- i-i (usrHistoryObjectIndex) [1..65535] + | +-- i-i (usrHistorySampleIndex) [1..2147483647] + | x-- i-i (serialTimeout) [1..65535] + | x-- i-i (serialDialoutTimeout) [1..65535] + | x-- i-i (trapDestIndex) [1..65535] + | x-- i-i (serialConnectIndex) [1..65535] + | + +-- --b Bits + | | + | +-- i-i (protocolDirType) {extensible(0), addressRecognitionCapable(1)} + | +-- i-i (probeCapabilities) {etherStats(0), historyControl(1), etherHistory(2), alarm(3), hosts(4), hostTopN(5), matrix(6), filter(7), capture(8), event(9), tokenRingMLStats(10), tokenRingPStats(11), tokenRingMLHistory(12), tokenRingPHistory(13), ringStation(14), ringStationOrder(15), ringStationConfig(16), sourceRouting(17), protocolDirectory(18), protocolDistribution(19), addressMapping(20), nlHost(21), nlMatrix(22), alHost(23), alMatrix(24), usrHistory(25), probeConfig(26)} + | + +-- --b Enumeration + | + +-- i-i (protocolDirAddressMapConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (protocolDirHostConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (protocolDirMatrixConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2), nlMatrixTopNHighCapacityPkts(3), nlMatrixTopNHighCapacityOctets(4)} + | | + | +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2)} + | +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2)} + | + +-- i-i (alMatrixTopNControlRateBase) {alMatrixTopNTerminalsPkts(1), alMatrixTopNTerminalsOctets(2), alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4), alMatrixTopNTerminalsHighCapacityPkts(5), alMatrixTopNTerminalsHighCapacityOctets(6), alMatrixTopNAllHighCapacityPkts(7), alMatrixTopNAllHighCapacityOctets(8)} + | | + | +-- i-i (alMatrixTopNControlRateBase) {alMatrixTopNTerminalsPkts(1), alMatrixTopNTerminalsOctets(2), alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4)} + | + +-- i-i (usrHistoryObjectSampleType) {absoluteValue(1), deltaValue(2)} + +-- i-i (usrHistoryValStatus) {valueNotAvailable(1), valuePositive(2), valueNegative(3)} + +-- i-i (probeResetControl) {running(1), warmBoot(2), coldBoot(3)} + x-- i-i (probeDownloadAction) {notDownloading(1), downloadToPROM(2), downloadToRAM(3)} + x-- i-i (probeDownloadStatus) {downloadSuccess(1), downloadStatusUnknown(2), downloadGeneralError(3), downloadNoResponseFromServer(4), downloadChecksumError(5), downloadIncompatibleImage(6), downloadTftpFileNotFound(7), downloadTftpAccessViolation(8)} + x-- i-i (serialMode) {direct(1), modem(2)} + x-- i-i (serialProtocol) {other(1), slip(2), ppp(3)} + x-- i-i (trapDestProtocol) {ip(1), ipx(2)} + x-- i-i (serialConnectType) {direct(1), modem(2), switch(3), modemSwitch(4)} diff --git a/test/dumps/types/SNMPv2-MIB b/test/dumps/types/SNMPv2-MIB new file mode 100644 index 0000000..322d830 --- /dev/null +++ b/test/dumps/types/SNMPv2-MIB @@ -0,0 +1,20 @@ +# SNMPv2-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b OctetString + | | + | +-- t-i DisplayString [0..255] "255a" + | | + | +-- i-i (sysDescr) [0..255] + | +-- i-i (sysContact) [0..255] + | +-- i-i (sysName) [0..255] + | +-- i-i (sysLocation) [0..255] + | + +-- --b Integer32 + | | + | +-- i-i (sysServices) [0..127] + | +-- i-i (sysORIndex) [1..2147483647] + | + +-- --b Enumeration + | + +-- i-i (snmpEnableAuthenTraps) {enabled(1), disabled(2)} diff --git a/test/dumps/xml/IF-MIB b/test/dumps/xml/IF-MIB new file mode 100644 index 0000000..b6895d4 --- /dev/null +++ b/test/dumps/xml/IF-MIB @@ -0,0 +1,1907 @@ + + + + + + + + + IETF Interfaces MIB Working Group + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com + + + 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. + + + + Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863. + + + + + Revisions made by the Interfaces MIB WG, and published in + RFC 2233. + + + + + Initial revision, published as part of RFC 1573. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 255a + + 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'. + + + + + d + + 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. + + + + + d + + 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. + + + + + + + + + + + + readonly + + The number of network interfaces (regardless of their + current state) present on this system. + + + + + A list of interface entries. The number of entries is + given by the value of ifNumber. + + + + + + + An entry containing management information applicable to a + particular interface. + + + + + + readonly + + 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. + + + + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + + + readwrite + + 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). + + + + + + + + + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + The length of the output packet queue (in packets). + + + + + + + readonly + + 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 2579. 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 }. + + + +
+ + + + + + + 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. + + + + + + + An entry containing additional management information + applicable to a particular interface. + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + + readwrite + + 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. + + + + + + + readonly + + 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. + + + + + + + readwrite + + 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. + + + + + + + readonly + + This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise. + + + + + + + + + + readwrite + + 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. + + + + + + + readonly + + 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. + + + +
+ + + 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 + + + + + + + + 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. + + + + + + noaccess + + 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. + + + + + + + noaccess + + 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. + + + + + + + readwrite + + 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. + + + +
+ + + 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. + + + + + + + An entry containing objects for invoking tests on an + interface. + + + + + + readwrite + + This object identifies the current invocation of the + interface's test. + + + + + + + + + + readwrite + + 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)'. + + + + + + + readwrite + + 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. + + + + + + + + + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available. + + + + + + + readwrite + + The entity which currently has the 'ownership' required to + invoke a test on this interface. + + + +
+ + + 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. + + + + + + + + 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. + + + + + + noaccess + + An address for which the system will accept packets/frames + on this entry's interface. + + + + + + + readwrite + + This object is used to create and delete rows in the + ifRcvAddressTable. + + + + + + + + + + + readwrite + volatile + + 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. + + + +
+ + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + +
+ + + + + + + + + + A linkDown trap signifies that the SNMP 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. + + + + + + + + + + A linkUp trap signifies that the SNMP 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. + + + + + + + + + + + + + + + + + + + + + A collection of objects deprecated in favour of + ifGeneralInformationGroup. + + + + + + + + + + + + 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. + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces. + + + + + + + + + A collection of objects providing information on the + multiple addresses which an interface receives. + + + + + + + + + + + + + A collection of objects providing the ability to invoke + tests on an interface. + + + + + + + + The previous collection of objects providing information on + the layering of MIB-II interfaces. + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information applicable to + all network interfaces. + + + + + + + + + A collection of objects providing information on the + layering of MIB-II interfaces. + + + + + + + + + + + The collection of objects deprecated from the original MIB- + II interfaces group. + + + + + + + + A collection of objects providing information specific to + interface counter discontinuities. + + + + + + + + + The notifications which indicate specific changes in the + value of ifOperStatus. + + + + + + + + A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces. + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1). + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + + + + + A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces. + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1). + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + readonly + + Write access is not required. + + + + + + + + The compliance statement for SNMP entities which have + network interfaces. + + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + readonly + + Write access is not required. + + + + + + + + diff --git a/test/dumps/xml/MAU-MIB b/test/dumps/xml/MAU-MIB new file mode 100644 index 0000000..ce5e5a2 --- /dev/null +++ b/test/dumps/xml/MAU-MIB @@ -0,0 +1,1937 @@ + + + + + + + + + IETF Ethernet Interfaces and Hub MIB Working Group + + + WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com + + + Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices. + + + + Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836. + + + + + Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636. + + + + + This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation. + + + + + Version published as RFC 2239. + + + + + Initial version, published as RFC 1515. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types. + + + + + + + + + + + + + + Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater. + + + + + + + + + An entry in the table, containing information + about a single MAU. + + + + + + + + readonly + + This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex. + + + RFC 2108, rptrGroupIndex. + + + + + + + + + readonly + + This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected. + + + RFC 2108, rptrPortIndex. + + + + + + + + + readonly + + This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex). + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + readonly + + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + + [IEEE802.3], 30.5.1.1.2, aMAUType. + + + + + + + + + + + + + + readwrite + + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + + + [IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU. + + + + + + + readonly + + This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC. + + + [IEEE802.3], 30.5.1.1.4, aMediaAvailable. + + + + + + + readonly + + A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange + + + + + + + + + + + + readonly + + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag. + + + + + + + readonly + + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange + + + +
+ + + Information about the external jacks attached + to MAUs attached to the ports of a repeater. + + + + + + + + + + An entry in the table, containing information + about a particular jack. + + + + + + + + noaccess + + This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex). + + + + + + + readonly + + The jack connector type, as it appears on the + outside of the system. + + + +
+ + + + + Table of descriptive and status information + about MAU(s) attached to an interface. + + + + + + + + An entry in the table, containing information + about a single MAU. + + + + + + readonly + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + + + RFC 2863, ifIndex + + + + + + + + + readonly + + This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex). + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + readonly + + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode. + + + [IEEE802.3], 30.5.1.1.2, aMAUType. + + + + + + + + + + + + + + readwrite + + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + + + [IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU. + + + + + + + readonly + + This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC. + + + [IEEE802.3], 30.5.1.1.4, aMediaAvailable. + + + + + + + readonly + + A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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. + + + [IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + + + + + + readonly + + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag. + + + + + + + readonly + + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability. + + + + + + + readwrite + + This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function. + + + [IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4. + + + + + + + readonly + + This object indicates whether or not + auto-negotiation is supported on this MAU. + + + + + + + readonly + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC. + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime. + + + +
+ + + Information about the external jacks attached + to MAUs attached to an interface. + + + + + + + + + An entry in the table, containing information + about a particular jack. + + + + + + + + noaccess + + This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU. + + + + + + + readonly + + The jack connector type, as it appears on the + outside of the system. + + + +
+ + + + + ********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces. + + + + + + + + ********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU. + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + + + RFC 2863, ifIndex. + + + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry. + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero. + + + [IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz. + + + [IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz. + + + [IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency. + + + +
+ + + + + Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function. + + + + + + + + An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU. + + + + + + + + + readwrite + + Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function. + + + [IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl. + + + + + + + + + + readonly + + A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received. + + + [IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling. + + + + + + + + + + + + + readonly + + A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]. + + + [IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB. + + + [IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility. + + + + + + + readwrite + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + + + + + + + + readwrite + + If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect. + + + [IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig. + + + + + + + readonly + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility. + + + + + + + readwrite + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + readonly + + A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + + + + + + + + + + readwrite + + A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + + + + + + readonly + + A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + +
+ + + + + + + + + + +
+ + + + + + + + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + + + [IEEE802.3], 30.5.1.3.1, nJabber notification. + + + + + + + + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + + + [IEEE802.3], 30.5.1.3.1, nJabber notification. + + + + + + + + + + + + + + + + + + + Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations. + + + + + + + + Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability. + + + + + + + + Conformance group for MAUs attached to + repeater ports with managed jacks. + + + + + + + + + + + + + + + Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations. + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity. + + + + + + + + Conformance group for MAUs attached to + interfaces with managed jacks. + + + + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2. + + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations. + + + + + + + + + + + Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability. + + + + + + + + + + + + + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + + + + + + + + Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation. + + + + + + + + Conformance for high capacity statistics for + MAUs attached to interfaces. + + + + + + + + Notifications for repeater MAUs. + + + + + + + + Notifications for interface MAUs. + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only. + + + + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2. + + + + + + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3. + + + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108). + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635). + + + + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + diff --git a/test/dumps/xml/Makefile.am b/test/dumps/xml/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/xml/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/xml/Makefile.in b/test/dumps/xml/Makefile.in new file mode 100644 index 0000000..b86b6ef --- /dev/null +++ b/test/dumps/xml/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/xml +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/xml/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/xml/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/xml/RMON2-MIB b/test/dumps/xml/RMON2-MIB new file mode 100644 index 0000000..9628d55 --- /dev/null +++ b/test/dumps/xml/RMON2-MIB @@ -0,0 +1,5733 @@ + + + + + + + + + IETF RMON MIB Working Group + + + Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: <rmonmib@ietf.org> + To subscribe send email to: <rmonmib-request@ietf.org> + + + The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices. + + + + This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics. + + + + + Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications. + + + + + Original version. Published as RFC 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use. + + + + + + This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects. + + + + + + To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk. + + + + + Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + + + + + This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed. + + + + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Provides a variable-length packet filter feature to the + RMON-1 filter table. + + + + + + + Provides a variable-length packet filter feature to the + RMON-1 filter table. + + + + + + + + readwrite + 0 + + When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet. + + + + + + + + + readwrite + 0 + + When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + +
+ + + + + + + readonly + + The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig. + + + + + This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network-layer, transport-layer, and higher-layer + + + + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application-layer groups. + + + + + + + + A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + + + noaccess + + A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error. + + + + + + + + + noaccess + + A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero. + + + + + + + + + readonly + + The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted. + + + + + + + + + + readwrite + + A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1). + + + + + + + + + + readonly + + This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero. + + + + + + + + + + + readwrite + + This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable. + + + + + + + + + + + readwrite + + This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + + + + + + + + + + + readwrite + + This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted. + + + +
+ + + + + Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g., etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface. + + + + + + + A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7 + + + + + + + + noaccess + + A unique index for this protocolDistControlEntry. + + + + + + + readwrite + + The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted. + + + +
+ + + An entry is made in this table for every protocol in the + protocolDirTable that has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + + + + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed. + + + + + + + + A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18 + + + + + + readonly + + The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times. + + + + + + + readonly + + The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol. + + + +
+ + + + + + + readonly + + The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts. + + + + + + + readonly + + The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts. + + + + + + + + + readwrite + + The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + + + + + A table to control the collection of mappings from network + layer address to physical address to interface. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available. + + + + + + + A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1 + + + + + + + + noaccess + + A unique index for this entry in the addressMapControlTable. + + + + + + + readwrite + + The source of data for this addressMapControlEntry. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted. + + + +
+ + + A table of mappings from network layer address to physical + address to interface. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2). + + + + + + + + + + A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + noaccess + + The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater. + + + + + + + readonly + + The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol. + + + + + + + readonly + + The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently. + + + +
+ + + + + A list of higher-layer (i.e., non-MAC) host table control + entries. + + These entries will enable the collection of the network- and + application-level host tables indexed by network addresses. + Both the network- and application-level host tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer host records in + memory, it can derive network-layer host records from them.) + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available. + + + + + + + A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1 + + + + + + + + noaccess + + An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry. + + + + + + + readwrite + + The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts. + + + + + + + readonly + + The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts. + + + + + + + + + readwrite + + The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts. + + + + + + + readonly + + The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts. + + + + + + + + + readwrite + + The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted. + + + +
+ + + A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors. + + + + + + + + + + A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + readonly + + The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + + + + + + + readonly + + The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + + + + + + + readonly + + The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + + + A list of higher-layer (i.e., non-MAC) matrix control entries. + + These entries will enable the collection of the network- and + application-level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network- and application-level matrix tables are + controlled by this table so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore. (Note that + if an implementation stores application-layer matrix records + + + + in memory, it can derive network-layer matrix records from + them.) + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table. + + + + + + + A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1 + + + + + + + + noaccess + + An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry. + + + + + + + readwrite + + The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts. + + + + + + + readonly + + The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts. + + + + + + + + + readwrite + + The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped. + + + + + + + readonly + + The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts. + + + + + + + readonly + + The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts. + + + + + + + + + readwrite + + The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent. + + + +
+ + + A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address. + + + + + + + + + + + A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + + + noaccess + + The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + readonly + + The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + + + + + + + readonly + + The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + A list of traffic matrix entries that collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address. + + + + + + + + + + + A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + + + noaccess + + The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + readonly + + The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times. + + + + + + + readonly + + The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + + + + + + + A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3 + + + + + + + + noaccess + + An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface. + + + + + + + + + readwrite + + The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + + + + + + + + + + + readwrite + + The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object. + + + + + + + + + readwrite + 1800 + + The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable). + + + + + + + readonly + + The number of reports that have been generated by this entry. + + + + + + + readonly + + The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry. + + + + + + + + + readwrite + 150 + + The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available. + + + + + + + readonly + + The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent. + + + +
+ + + A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets. + + + + + + + + A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10 + + + + + + + + noaccess + + An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries. + + + + + + + + + readonly + + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + + + + + + + + + readonly + + The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + + + readonly + + The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + readonly + + The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report. + + + + + + + readonly + + The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object. + + + + + + + readonly + + The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report. + + + + + + + readonly + + The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object. + + + +
+ + + + + A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable. + + + + + + + + + + + A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times. + + + + + + + readonly + + The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times. + + + + + + + readonly + + The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + + + A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + + + + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable. + + + + + + + + + + + + A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + + + + + + + readonly + + The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + A list of application traffic matrix entries that collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable. + + + + + + + + + + + + A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times. + + + + + + + readonly + + The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls. + + + +
+ + + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + + + + + + + A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3 + + + + + + + + noaccess + + An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface. + + + + + + + + + readwrite + + The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + + + + + + + + + + + + + + + + readwrite + + This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + + + + + + + + + readwrite + 1800 + + The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable). + + + + + + + readonly + + The number of reports that have been generated by this entry. + + + + + + + readonly + + The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry. + + + + + + + + + readwrite + 150 + + The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available. + + + + + + + readonly + + The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent. + + + +
+ + + A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets. + + + + + + + + A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10 + + + + + + + + noaccess + + An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries. + + + + + + + + + readonly + + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + + + + + + + + + readonly + + The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + + + readonly + + The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order. + + + + + + + + + readonly + + The type of the protocol counted by this matrix entry. + + + + + + + readonly + + The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report. + + + + + + + readonly + + The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object. + + + + + + + readonly + + The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report. + + + + + + + readonly + + The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object. + + + +
+ + + + + A list of data-collection configuration entries. + + + + + + + A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1 + + + + + + + + noaccess + + An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system. + + + + + + + + + readwrite + + The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1). + + + + + + + + + readwrite + 50 + + The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow. + + + + + + + + + readwrite + 1800 + + The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted. + + + +
+ + + A list of data-collection configuration entries. + + + + + + + + A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3 + + + + + + + + noaccess + + An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically. + + + + + + + readwrite + + The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + + + + + + + + + + readwrite + + The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1). + + + +
+ + + A list of user-defined history entries. + + + + + + + + + A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5 + + + + + + + + noaccess + + An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken. + + + + + + + readonly + + The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval. + + + + + + + readonly + + The value of sysUpTime at the end of the interval over which + this sample was measured. + + + + + + + readonly + + The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + + + + + + + + + + readonly + + This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + readonly + + An indication of the RMON MIB groups supported + on at least one interface by this probe. + + + + + + + + + + readonly + + The software revision of this device. This string will have + a zero length if the revision is unknown. + + + + + + + + + + readonly + + The hardware revision of this device. This string will have + a zero length if the revision is unknown. + + + + + + + + + + + readwrite + + Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned. + + + + + + + + + + + readwrite + + Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1). + + + + + + + + + + readwrite + + The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + readwrite + + The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + + + + + readwrite + + When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + + + + + + + + + + readonly + + The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface. + + + + + + + + + readwrite + direct + + The type of incoming connection to be expected on this + serial interface. + + + + + + + + + + + readwrite + slip + + The type of data link encapsulation to be used on this + serial interface. + + + + + + + + + readwrite + 300 + + This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap. + + + + + + + + + + readwrite + + A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'. + + + + + + + + + + readwrite + + A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'. + + + + + + + + + + readwrite + + An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'. + + + + + + + + + + readwrite + + An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'. + + + + + + + + + readwrite + 20 + + This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface. + + + + + + + readwrite + + The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface. + + + + + + readwrite + + The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received. + + + + + + + readwrite + + The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received. + + + + + + + readwrite + + The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + + + readwrite + + The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0. + + + + + A list of trap destination entries. + + + + + + + This entry includes a destination IP address to which + traps are sent for this community. + + + + + + + + noaccess + + A value that uniquely identifies this trapDestEntry. + + + + + + + + + readwrite + + A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1). + + + + + + + + + + readwrite + + The protocol with which this trap is to be sent. + + + + + + + readwrite + + The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Configuration for a SLIP link over a serial line. + + + + + + + + noaccess + + A value that uniquely identifies this serialConnection + entry. + + + + + + + readwrite + + The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + + + readwrite + direct + + The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list. + + + + + + + + + + + + + + Collects the relative amounts of octets and packets for the + different protocols detected on a network segment. + + + + + + + + + + + + + + + + Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on. + + + + + + + + + + + + + + + + + + + + + + + + Counts the amount of traffic sent from and to each network + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not + required to fully implement this group. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while + the hlMatrixControlTable also has objects that control + optional alMatrixTables, implementation of the + alMatrixTables is not required to fully implement this + group. + + + + + + + + + + + + Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network-Layer + Host Group. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation + of the Network-Layer Matrix Group. + + + + + + + + + + + + + + + + + + + The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe. + + + + + + + + + + + This group describes various operating parameters of the + probe and controls the local time of the probe. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it. + + + + + + + + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. + + + + + + + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it. + + + + + + + + Describes the requirements for conformance to + the RMON2 MIB + + + + + + + + + + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase. + + + + + + + + Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements. + + + + + + + + + + + + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase. + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase. + + + + + + + +
diff --git a/test/dumps/xml/SNMPv2-MIB b/test/dumps/xml/SNMPv2-MIB new file mode 100644 index 0000000..8a3cee0 --- /dev/null +++ b/test/dumps/xml/SNMPv2-MIB @@ -0,0 +1,919 @@ + + + + + + + + + IETF SNMPv3 Working Group + + + WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006 + + + The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + + + + This revision of this MIB module was published as + RFC 3418. + + + + + This revision of this MIB module was published as + RFC 1907. + + + + + The initial revision of this MIB module was published + as RFC 1450. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + readonly + + 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. + + + + + + + readonly + + 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'. + + + + + + + readonly + + The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized. + + + + + + + + + + readwrite + + 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. + + + + + + + + + + readwrite + + 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. + + + + + + + + + + readwrite + + The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string. + + + + + + + + + readonly + + A value which indicates the set of services that this + entity may potentially offer. 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. + + + + + + + readonly + + The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID. + + + + + The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows. + + + + + + + An entry (conceptual row) in the sysORTable. + + + + + + + + noaccess + + The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable. + + + + + + + readonly + + An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder. + + + + + + + readonly + + A textual description of the capabilities identified + by the corresponding instance of sysORID. + + + + + + + readonly + + The value of sysUpTime at the time this conceptual + row was last instantiated. + + + +
+ + + + + + + readonly + + The total number of messages delivered to the SNMP + entity from the transport service. + + + + + + + readonly + + The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service. + + + + + + + readonly + + The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version. + + + + + + + readonly + + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value. + + + + + + + readonly + + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value. + + + + + + + readonly + + The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'. + + + + + + + readonly + + The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `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. + + + + + + + readonly + + The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity. + + + + + + + readonly + + The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity. + + + + + + + readonly + + The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.' + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'. + + + + + + + readonly + + The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity. + + + + + + + + + + readwrite + + 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. + + + + + + + readonly + + The total number of Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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. + + + + + + + readonly + + The total number of Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned. + + + + + + + + + + + + + notifyonly + + The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU. + + + + + + + notifyonly + + The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind. + + + + + + + + + + + readwrite + + An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP 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. + + + + + + + + +
+ + + + + + + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + + + + + + + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + + + + + + + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + + + + + + + + + + + A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation. + + + + + + + + + + + + + + + + + + The system group defines objects which are common to all + managed systems. + + + + + + + + + The basic notifications implemented by an SNMP entity + supporting command responder applications. + + + + + + + + + + + + + A collection of objects providing basic instrumentation + and control of an SNMP entity. + + + + + + + + + A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of objects from RFC 1213 made obsolete + by this MIB module. + + + + + + + + An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered. + + + + + + + + + These objects are required for entities + which support notification originator applications. + + + + + + + + The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2. + + + + + + + + + + + + The compliance statement for SNMP entities which + implement this MIB module. + + + + + + + + + + + + +
diff --git a/test/dumps/yang/IF-MIB b/test/dumps/yang/IF-MIB new file mode 100644 index 0000000..b434671 --- /dev/null +++ b/test/dumps/yang/IF-MIB @@ -0,0 +1,1206 @@ +/* + * This module has been generated by smidump 0.4.8: + * + * smidump -f yang IF-MIB + * + * Do not edit. Edit the source file instead! + */ + +module IF-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:IF-MIB"; + prefix "if-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IANAifType-MIB { prefix "ianaiftype-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF Interfaces MIB Working Group"; + + contact + " 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 "2000-06-14" { + description + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863."; + } + revision "1996-02-28" { + description + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233."; + } + revision "1993-11-08" { + description + "Initial revision, published as part of RFC 1573."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef OwnerString { + type string { + length "0..255"; + pattern "\p{IsBasicLatin}{0,255}"; + } + status deprecated; + 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'."; + } + + typedef InterfaceIndex { + type int32 { + range "1..2147483647"; + } + 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."; + } + + typedef InterfaceIndexOrZero { + type int32 { + range "0..2147483647"; + } + 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."; + } + + container interfaces { + + leaf ifNumber { + type int32; + config false; + description + "The number of network interfaces (regardless of their + current state) present on this system."; + } + + + /* XXX table comments here XXX */ + + list ifEntry { + + key "ifIndex"; + description + "An entry containing management information applicable to a + particular interface."; + + + leaf ifIndex { + type if-mib:InterfaceIndex; + config false; + 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."; + } + + leaf ifDescr { + type smiv2:DisplayString { + length "0..255"; + } + config false; + 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."; + } + + leaf ifType { + type ianaiftype-mib:IANAifType; + config false; + 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."; + } + + leaf ifMtu { + type int32; + config false; + 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."; + } + + leaf ifSpeed { + type yang:gauge32; + config false; + 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."; + } + + leaf ifPhysAddress { + type yang:phys-address; + config false; + 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."; + } + + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config true; + 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)."; + } + + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + 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."; + } + + leaf ifLastChange { + type yang:timeticks; + config false; + 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."; + } + + leaf ifInOctets { + type yang:counter32; + config false; + 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."; + } + + leaf ifInUcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifInNUcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifInDiscards { + type yang:counter32; + config false; + 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."; + } + + leaf ifInErrors { + type yang:counter32; + config false; + 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."; + } + + leaf ifInUnknownProtos { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutOctets { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutUcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutNUcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutDiscards { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutErrors { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutQLen { + type yang:gauge32; + config false; + status deprecated; + description + "The length of the output packet queue (in packets)."; + } + + leaf ifSpecific { + type yang:object-identifier; + config false; + 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 2579. 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 }."; + } + } + } + + container ifMIBObjects { + + + /* XXX table comments here XXX */ + + list ifStackEntry { + + key "ifStackHigherLayer ifStackLowerLayer"; + 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."; + + + leaf ifStackHigherLayer { + type if-mib:InterfaceIndexOrZero; + config false; + 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."; + } + + leaf ifStackLowerLayer { + type if-mib:InterfaceIndexOrZero; + config false; + 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."; + } + + leaf ifStackStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + + /* XXX table comments here XXX */ + + list ifRcvAddressEntry { + + key "ifIndex ifRcvAddressAddress"; + 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."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifRcvAddressAddress { + type yang:phys-address; + config false; + description + "An address for which the system will accept packets/frames + on this entry's interface."; + } + + leaf ifRcvAddressStatus { + type smiv2:RowStatus; + config true; + description + "This object is used to create and delete rows in the + ifRcvAddressTable."; + } + + leaf ifRcvAddressType { + type enumeration { + enum other { value 1; } + enum volatile { value 2; } + enum nonVolatile { value 3; } + } + config true; + 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."; + } + } + + leaf ifTableLastChange { + type yang:timeticks; + config false; + 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."; + } + + leaf ifStackLastChange { + type yang:timeticks; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/if-mib:interfaces/if-mib:ifEntry" { + description + "An entry containing additional management information + applicable to a particular interface."; + + leaf ifName { + type smiv2:DisplayString; + config false; + 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."; + } + + leaf ifInMulticastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifInBroadcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutMulticastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifOutBroadcastPkts { + type yang:counter32; + config false; + 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."; + } + + leaf ifHCInOctets { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCInUcastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCInMulticastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCInBroadcastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCOutOctets { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCOutUcastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCOutMulticastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifHCOutBroadcastPkts { + type yang:counter64; + config false; + 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."; + } + + leaf ifLinkUpDownTrapEnable { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + 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."; + } + + leaf ifHighSpeed { + type yang:gauge32; + config false; + 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."; + } + + leaf ifPromiscuousMode { + type smiv2:TruthValue; + config true; + 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."; + } + + leaf ifConnectorPresent { + type smiv2:TruthValue; + config false; + description + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise."; + } + + leaf ifAlias { + type smiv2:DisplayString { + length "0..64"; + } + config true; + 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."; + } + + leaf ifCounterDiscontinuityTime { + type yang:timestamp; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/if-mib:interfaces/if-mib:ifEntry" { + status deprecated; + description + "An entry containing objects for invoking tests on an + interface."; + + leaf ifTestId { + type smiv2:TestAndIncr; + config true; + status deprecated; + description + "This object identifies the current invocation of the + interface's test."; + } + + leaf ifTestStatus { + type enumeration { + enum notInUse { value 1; } + enum inUse { value 2; } + } + config true; + 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)'."; + } + + leaf ifTestType { + type smiv2:AutonomousType; + config true; + 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."; + } + + leaf ifTestResult { + type enumeration { + enum none { value 1; } + enum success { value 2; } + enum inProgress { value 3; } + enum notSupported { value 4; } + enum unAbleToRun { value 5; } + enum aborted { value 6; } + enum failed { value 7; } + } + config false; + 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."; + } + + leaf ifTestCode { + type yang:object-identifier; + config false; + 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 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available."; + } + + leaf ifTestOwner { + type if-mib:OwnerString; + config true; + status deprecated; + description + "The entity which currently has the 'ownership' required to + invoke a test on this interface."; + } + } + + notification linkDown { + description + "A linkDown trap signifies that the SNMP 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."; + + container linkDown-ifIndex { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + } + + container linkDown-ifAdminStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config false; + 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)."; + } + } + + container linkDown-ifOperStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + 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."; + } + } + + } + + notification linkUp { + description + "A linkUp trap signifies that the SNMP 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."; + + container linkUp-ifIndex { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + } + + container linkUp-ifAdminStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config false; + 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)."; + } + } + + container linkUp-ifOperStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + 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."; + } + } + + } +} /* end of module IF-MIB */ diff --git a/test/dumps/yang/MAU-MIB b/test/dumps/yang/MAU-MIB new file mode 100644 index 0000000..9ef3d2d --- /dev/null +++ b/test/dumps/yang/MAU-MIB @@ -0,0 +1,1346 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang MAU-MIB + * + * Do not edit. Edit the source file instead! + */ + +module MAU-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:MAU-MIB"; + prefix "mau-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IANA-MAU-MIB { prefix "iana-mau"; } + import IF-MIB { prefix "if-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF Ethernet Interfaces and Hub MIB Working Group"; + + contact + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com"; + + description + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices."; + + revision "2007-04-21" { + description + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836."; + } + revision "2003-09-19" { + description + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636."; + } + revision "1999-08-24" { + description + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation."; + } + revision "1997-10-31" { + description + "Version published as RFC 2239."; + } + revision "1993-09-30" { + description + "Initial version, published as RFC 1515."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef JackType { + type enumeration { + enum other { value 1; } + enum rj45 { value 2; } + enum rj45S { value 3; } + enum db9 { value 4; } + enum bnc { value 5; } + enum fAUI { value 6; } + enum mAUI { value 7; } + enum fiberSC { value 8; } + enum fiberMIC { value 9; } + enum fiberST { value 10; } + enum telco { value 11; } + enum mtrj { value 12; } + enum hssdc { value 13; } + enum fiberLC { value 14; } + } + status deprecated; + description + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types."; + } + + container dot3RpMauBasicGroup { + + + /* XXX table comments here XXX */ + + list rpMauEntry { + + key "rpMauGroupIndex rpMauPortIndex rpMauIndex"; + description + "An entry in the table, containing information + about a single MAU."; + + + leaf rpMauGroupIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex."; + reference + "RFC 2108, rptrGroupIndex."; + } + + leaf rpMauPortIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected."; + reference + "RFC 2108, rptrPortIndex."; + } + + leaf rpMauIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + } + + leaf rpMauType { + type smiv2:AutonomousType; + config false; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + } + + leaf rpMauStatus { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum operational { value 3; } + enum standby { value 4; } + enum shutdown { value 5; } + enum reset { value 6; } + } + config true; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + } + + leaf rpMauMediaAvailable { + type iana-mau:IANAifMauMediaAvailable; + config false; + description + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + } + + leaf rpMauMediaAvailableStateExits { + type yang:counter32; + config false; + description + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange"; + } + + leaf rpMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + + leaf rpMauJabberingStateEnters { + type yang:counter32; + config false; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange"; + } + + leaf rpMauFalseCarriers { + type yang:counter32; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + 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 rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange"; + } + } + + + /* XXX table comments here XXX */ + + list rpJackEntry { + + key "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex"; + description + "An entry in the table, containing information + about a particular jack."; + + leaf rpMauGroupIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauGroupIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauPortIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauPortIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf rpJackIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)."; + } + + leaf rpJackType { + type iana-mau:IANAifJackType; + config false; + description + "The jack connector type, as it appears on the + outside of the system."; + } + } + } + + container dot3IfMauBasicGroup { + + + /* XXX table comments here XXX */ + + list ifMauEntry { + + key "ifMauIfIndex ifMauIndex"; + description + "An entry in the table, containing information + about a single MAU."; + + + leaf ifMauIfIndex { + type if-mib:InterfaceIndex; + config false; + description + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex"; + } + + leaf ifMauIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + } + + leaf ifMauType { + type smiv2:AutonomousType; + config false; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + } + + leaf ifMauStatus { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum operational { value 3; } + enum standby { value 4; } + enum shutdown { value 5; } + enum reset { value 6; } + } + config true; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + } + + leaf ifMauMediaAvailable { + type iana-mau:IANAifMauMediaAvailable; + config false; + description + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + } + + leaf ifMauMediaAvailableStateExits { + type yang:counter32; + config false; + description + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + 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."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + + leaf ifMauJabberingStateEnters { + type yang:counter32; + config false; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauFalseCarriers { + type yang:counter32; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauTypeList { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability."; + } + + leaf ifMauDefaultType { + type smiv2:AutonomousType; + config true; + description + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4."; + } + + leaf ifMauAutoNegSupported { + type smiv2:TruthValue; + config false; + description + "This object indicates whether or not + auto-negotiation is supported on this MAU."; + } + + leaf ifMauTypeListBits { + type iana-mau:IANAifMauTypeListBits; + config false; + description + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC."; + } + + leaf ifMauHCFalseCarriers { + type yang:counter64; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + 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."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + } + } + + + /* XXX table comments here XXX */ + + list ifJackEntry { + + key "ifMauIfIndex ifMauIndex ifJackIndex"; + description + "An entry in the table, containing information + about a particular jack."; + + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifJackIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU."; + } + + leaf ifJackType { + type iana-mau:IANAifJackType; + config false; + description + "The jack connector type, as it appears on the + outside of the system."; + } + } + } + + container dot3IfMauAutoNegGroup { + + + /* XXX table comments here XXX */ + + list ifMauAutoNegEntry { + + key "ifMauIfIndex ifMauIndex"; + description + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU."; + + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifMauAutoNegAdminStatus { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + description + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function."; + reference + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl."; + } + + leaf ifMauAutoNegRemoteSignaling { + type enumeration { + enum detected { value 1; } + enum notdetected { value 2; } + } + config false; + description + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received."; + reference + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling."; + } + + leaf ifMauAutoNegConfig { + type enumeration { + enum other { value 1; } + enum configuring { value 2; } + enum complete { value 3; } + enum disabled { value 4; } + enum parallelDetectFail { value 5; } + } + config false; + description + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]."; + reference + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig."; + } + + leaf ifMauAutoNegCapability { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + } + + leaf ifMauAutoNegCapAdvertised { + type int32; + config true; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegCapReceived { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + + leaf ifMauAutoNegRestart { + type enumeration { + enum restart { value 1; } + enum norestart { value 2; } + } + config true; + description + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect."; + reference + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig."; + } + + leaf ifMauAutoNegCapabilityBits { + type iana-mau:IANAifMauAutoNegCapBits; + config false; + description + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + } + + leaf ifMauAutoNegCapAdvertisedBits { + type iana-mau:IANAifMauAutoNegCapBits; + config true; + description + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegCapReceivedBits { + type iana-mau:IANAifMauAutoNegCapBits; + config false; + description + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + + leaf ifMauAutoNegRemoteFaultAdvertised { + type enumeration { + enum noError { value 1; } + enum offline { value 2; } + enum linkFailure { value 3; } + enum autoNegError { value 4; } + } + config true; + description + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegRemoteFaultReceived { + type enumeration { + enum noError { value 1; } + enum offline { value 2; } + enum linkFailure { value 3; } + enum autoNegError { value 4; } + } + config false; + description + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + } + } + + notification rpMauJabberTrap { + description + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + + container rpMauJabberTrap-rpMauJabberState { + leaf rpMauGroupIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauGroupIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauPortIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauPortIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + } + + } + + notification ifMauJabberTrap { + description + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + + container ifMauJabberTrap-ifMauJabberState { + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + } + + } +} /* end of module MAU-MIB */ diff --git a/test/dumps/yang/Makefile.am b/test/dumps/yang/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/yang/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/yang/Makefile.in b/test/dumps/yang/Makefile.in new file mode 100644 index 0000000..88c790e --- /dev/null +++ b/test/dumps/yang/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/yang +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/yang/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/yang/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/yang/RMON2-MIB b/test/dumps/yang/RMON2-MIB new file mode 100644 index 0000000..587251d --- /dev/null +++ b/test/dumps/yang/RMON2-MIB @@ -0,0 +1,4802 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang RMON2-MIB + * + * Do not edit. Edit the source file instead! + */ + +module RMON2-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:RMON2-MIB"; + prefix "rmon2-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IF-MIB { prefix "if-mib"; } + import RMON-MIB { prefix "rmon-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import TOKEN-RING-RMON-MIB { prefix "token-ring"; } + import inet-types { prefix "inet"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF RMON MIB Working Group"; + + contact + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: "; + + description + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices."; + + revision "2006-05-02" { + description + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics."; + } + revision "2002-07-08" { + description + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications."; + } + revision "1996-05-27" { + description + "Original version. Published as RFC 2021."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef ZeroBasedCounter32 { + type yang:gauge32; + description + "This TC describes an object that counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap, it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically, this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use."; + } + + typedef LastCreateTime { + type yang:timeticks; + description + "This TC describes an object that stores the value of the + sysUpTime object at the last time its entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects."; + } + + typedef TimeFilter { + type yang:timeticks; + description + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk."; + } + + typedef DataSource { + type yang:object-identifier; + description + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1."; + } + + typedef ControlString { + type binary { + length "0..255"; + } + description + "This data type is used to communicate with a modem or a + + + + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two-character sequences beginning with + the '^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows, which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than store it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows, which is + terminated by the next command or the end of string. + Partial and case-insensitive matching is applied, i.e., + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the '^s' send string or the '^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + + + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the '^0x' + control prefix. For example, '^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed."; + } + + container protocolDir { + + leaf protocolDirLastChange { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig."; + } + + + /* XXX table comments here XXX */ + + list protocolDirEntry { + + key "protocolDirID protocolDirParameters"; + description + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + + leaf protocolDirID { + type binary { + length "4..128"; + } + config false; + description + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner that they + + + + can often be used as specifications for new protocols - i.e., + a tree-structured assignment mechanism that matches the + protocol encapsulation 'tree' and that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether it does these + things is a matter of product definition (cost/benefit, + usability) and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error."; + } + + leaf protocolDirParameters { + type binary { + length "1..32"; + } + config false; + description + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional. What is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero."; + } + + leaf protocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The locally arbitrary but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent restart in the event that the protocol directory + entry is deleted."; + } + + leaf protocolDirDescr { + type smiv2:DisplayString { + length "1..64"; + } + config true; + description + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g., only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)."; + } + + leaf protocolDirType { + type bits { + bit extensible { position 0; } + bit addressRecognitionCapable { position 1; } + } + config false; + description + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that are + children of this protocol. + + An example of an entry that will often allow extensibility is + + + + 'ip.udp'. The probe may automatically populate some children + of this node, such as 'ip.udp.snmp' and 'ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built-in support extending a parent node (for + which the probe does have built-in support), + that child node is not extendable. This is termed 'limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether this agent can + recognize addresses for this protocol, should it be a + network-level protocol. That is, while a probe may be able + to recognize packets of a particular network-layer protocol + and count them, it takes additional logic to be able to + recognize the addresses in this protocol and to populate + network-layer or application-layer tables with the addresses + in this protocol. If this bit is set, the agent will + recognize network-layer addresses for this protocol and + populate the network- and application-layer host and matrix + tables with these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero."; + } + + leaf protocolDirAddressMapConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + description + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + + + + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable."; + } + + leaf protocolDirHostConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + description + "This object describes and configures the probe's support for + the network-layer and application-layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + layer protocol for which the probe recognizes addresses, and + + + + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + } + + leaf protocolDirMatrixConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + description + "This object describes and configures the probe's support for + the network-layer and application-layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + both of the nlMatrixTables and both of the + alMatrixTables. + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network- + + + + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + } + + leaf protocolDirOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf protocolDirStatus { + type smiv2:RowStatus; + config true; + description + "The status of this protocol directory entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + + + If this object is not equal to active(1), all associated + entries in the nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted."; + } + } + } + + container protocolDist { + + + /* XXX table comments here XXX */ + + list protocolDistControlEntry { + + key "protocolDistControlIndex"; + description + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7"; + + + leaf protocolDistControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "A unique index for this protocolDistControlEntry."; + } + + leaf protocolDistControlDataSource { + type rmon2-mib:DataSource; + config true; + description + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)."; + } + + leaf protocolDistControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf protocolDistControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + + leaf protocolDistControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf protocolDistControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this row. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the protocolDistStatsTable shall be deleted."; + } + } + + + /* XXX table comments here XXX */ + + list protocolDistStatsEntry { + + key "protocolDistControlIndex protocolDirLocalIndex"; + description + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry, followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18"; + + leaf protocolDistControlIndex { + type keyref { + path "/rmon2-mib:protocolDist/rmon2-mib:protocolDistControlEntry/rmon2-mib:protocolDistControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf protocolDistStatsPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type received + without errors. Note that this is the number of + link-layer packets, so if a single network-layer packet + is fragmented into several link-layer frames, this counter + is incremented several times."; + } + + leaf protocolDistStatsOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol."; + } + } + } + + container addressMap { + + leaf addressMapInserts { + type yang:counter32; + config false; + description + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts."; + } + + leaf addressMapDeletes { + type yang:counter32; + config false; + description + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts."; + } + + leaf addressMapMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + description + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table but may choose to create + fewer entries in this table for any reason, including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + } + + + /* XXX table comments here XXX */ + + list addressMapControlEntry { + + key "addressMapControlIndex"; + description + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1"; + + + leaf addressMapControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "A unique index for this entry in the addressMapControlTable."; + } + + leaf addressMapControlDataSource { + type rmon2-mib:DataSource; + config true; + description + "The source of data for this addressMapControlEntry."; + } + + leaf addressMapControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf addressMapControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf addressMapControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this addressMap control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the addressMapTable shall be deleted."; + } + } + + + /* XXX table comments here XXX */ + + list addressMapEntry { + + key "addressMapTimeMark protocolDirLocalIndex + addressMapNetworkAddress addressMapSource"; + description + "A conceptual row in the addressMapTable. + + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf addressMapTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf addressMapNetworkAddress { + type binary { + length "1..255"; + } + config false; + description + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf addressMapSource { + type yang:object-identifier; + config false; + description + "The interface or port on which the associated network + address was most recently seen. + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [RFC2863], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC2108], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater."; + } + + leaf addressMapPhysicalAddress { + type binary; + config false; + description + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol."; + } + + leaf addressMapLastChange { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + + + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently."; + } + } + } + + container nlHost { + + + /* XXX table comments here XXX */ + + list hlHostControlEntry { + + key "hlHostControlIndex"; + description + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1"; + + + leaf hlHostControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry."; + } + + leaf hlHostControlDataSource { + type rmon2-mib:DataSource; + config true; + description + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)."; + } + + leaf hlHostControlNlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf hlHostControlNlInserts { + type yang:counter32; + config false; + description + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts."; + } + + leaf hlHostControlNlDeletes { + type yang:counter32; + config false; + description + "The number of times an nlHost entry has been + + + + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts."; + } + + leaf hlHostControlNlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + description + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + } + + leaf hlHostControlAlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for the associated + + + + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf hlHostControlAlInserts { + type yang:counter32; + config false; + description + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts."; + } + + leaf hlHostControlAlDeletes { + type yang:counter32; + config false; + description + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + + + + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts."; + } + + leaf hlHostControlAlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + description + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table but may choose to create fewer entries in this table + for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + } + + leaf hlHostControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf hlHostControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this hlHostControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the nlHostTable and alHostTable shall be deleted."; + } + } + + + /* XXX table comments here XXX */ + + list nlHostEntry { + + key "hlHostControlIndex nlHostTimeMark + protocolDirLocalIndex nlHostAddress"; + description + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations."; + + leaf hlHostControlIndex { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:hlHostControlEntry/rmon2-mib:hlHostControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlHostTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlHostAddress { + type binary { + length "1..255"; + } + config false; + description + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlHostInPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets without errors transmitted to + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + } + + leaf nlHostOutPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets without errors transmitted by + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + } + + leaf nlHostInOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlHostOutOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlHostOutMacNonUnicastPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + } + + leaf nlHostCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + } + + container nlMatrix { + + + /* XXX table comments here XXX */ + + list hlMatrixControlEntry { + + key "hlMatrixControlIndex"; + description + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1"; + + + leaf hlMatrixControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + + + + hlMatrixControlEntry."; + } + + leaf hlMatrixControlDataSource { + type rmon2-mib:DataSource; + config true; + description + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)."; + } + + leaf hlMatrixControlNlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf hlMatrixControlNlInserts { + type yang:counter32; + config false; + description + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + + + + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts."; + } + + leaf hlMatrixControlNlDeletes { + type yang:counter32; + config false; + description + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts."; + } + + leaf hlMatrixControlNlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + description + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + } + + leaf hlMatrixControlAlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf hlMatrixControlAlInserts { + type yang:counter32; + config false; + description + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts."; + } + + leaf hlMatrixControlAlDeletes { + type yang:counter32; + config false; + description + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts."; + } + + leaf hlMatrixControlAlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + description + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table but may choose to create fewer entries in this + table for any reason, including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlMatrixControlStatus object is equal to 'active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions."; + } + + leaf hlMatrixControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf hlMatrixControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this hlMatrixControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and alMatrixDSTable + shall be deleted by the agent."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixSDEntry { + + key "hlMatrixControlIndex nlMatrixSDTimeMark + protocolDirLocalIndex nlMatrixSDSourceAddress + nlMatrixSDDestAddress"; + description + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixSDTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlMatrixSDSourceAddress { + type binary { + length "1..255"; + } + config false; + description + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixSDDestAddress { + type binary { + length "1..255"; + } + config false; + description + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + + + + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixSDPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + } + + leaf nlMatrixSDOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlMatrixSDCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixDSEntry { + + key "hlMatrixControlIndex nlMatrixDSTimeMark + protocolDirLocalIndex nlMatrixDSDestAddress + nlMatrixDSSourceAddress"; + description + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network-layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixDSTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlMatrixDSSourceAddress { + type binary { + length "1..255"; + } + config false; + description + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixDSDestAddress { + type binary { + length "1..255"; + } + config false; + description + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + + + + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixDSPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times."; + } + + leaf nlMatrixDSOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits, but + including FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlMatrixDSCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixTopNControlEntry { + + key "nlMatrixTopNControlIndex"; + description + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3"; + + + leaf nlMatrixTopNControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + } + + leaf nlMatrixTopNControlMatrixIndex { + type int32 { + range "1..65535"; + } + config true; + description + "The nlMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)."; + } + + leaf nlMatrixTopNControlRateBase { + type enumeration { + enum nlMatrixTopNPkts { value 1; } + enum nlMatrixTopNOctets { value 2; } + enum nlMatrixTopNHighCapacityPkts { value 3; } + enum nlMatrixTopNHighCapacityOctets { value 4; } + } + config true; + description + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object."; + } + + leaf nlMatrixTopNControlTimeRemaining { + type int32 { + range "0..2147483647"; + } + config true; + description + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + + + + report and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)."; + } + + leaf nlMatrixTopNControlGeneratedReports { + type yang:counter32; + config false; + description + "The number of reports that have been generated by this entry."; + } + + leaf nlMatrixTopNControlDuration { + type int32; + config false; + description + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry."; + } + + leaf nlMatrixTopNControlRequestedSize { + type int32 { + range "0..2147483647"; + } + config true; + description + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources."; + } + + leaf nlMatrixTopNControlGrantedSize { + type int32 { + range "0..2147483647"; + } + config false; + description + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + + + + whether zero-valued entries are available."; + } + + leaf nlMatrixTopNControlStartTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine whether a report was missed."; + } + + leaf nlMatrixTopNControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf nlMatrixTopNControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this nlMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the nlMatrixTopNTable shall be deleted + by the agent."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixTopNEntry { + + key "nlMatrixTopNControlIndex nlMatrixTopNIndex"; + description + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10"; + + leaf nlMatrixTopNControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixTopNControlEntry/rmon2-mib:nlMatrixTopNControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixTopNIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + + + + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries."; + } + + leaf nlMatrixTopNProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + } + + leaf nlMatrixTopNSourceAddress { + type binary { + length "1..255"; + } + config false; + description + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of IP, this object is encoded as a length + octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixTopNDestAddress { + type binary { + length "1..255"; + } + config false; + description + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf nlMatrixTopNPktRate { + type yang:gauge32; + config false; + description + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report."; + } + + leaf nlMatrixTopNReversePktRate { + type yang:gauge32; + config false; + description + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. (Note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object."; + } + + leaf nlMatrixTopNOctetRate { + type yang:gauge32; + config false; + description + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report."; + } + + leaf nlMatrixTopNReverseOctetRate { + type yang:gauge32; + config false; + description + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object. (Note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object."; + } + } + } + + container alHost { + + + /* XXX table comments here XXX */ + + list alHostEntry { + + key "hlHostControlIndex alHostTimeMark + protocolDirLocalIndex nlHostAddress + protocolDirLocalIndex"; + description + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the address. + The nlHostAddress value in the index identifies the network- + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlHostControlIndex { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:hlHostControlEntry/rmon2-mib:hlHostControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlHostAddress { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:nlHostEntry/rmon2-mib:nlHostAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alHostTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alHostInPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times."; + } + + leaf alHostOutPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times."; + } + + leaf alHostInOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alHostOutOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits, but including + FCS octets), excluding octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alHostCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + } + + container alMatrix { + + + /* XXX table comments here XXX */ + + list alMatrixSDEntry { + + key "hlMatrixControlIndex alMatrixSDTimeMark + protocolDirLocalIndex nlMatrixSDSourceAddress + nlMatrixSDDestAddress protocolDirLocalIndex"; + description + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network-layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixSDSourceAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixSDEntry/rmon2-mib:nlMatrixSDSourceAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixSDDestAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixSDEntry/rmon2-mib:nlMatrixSDDestAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixSDTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alMatrixSDPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + } + + leaf alMatrixSDOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alMatrixSDCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixDSEntry { + + key "hlMatrixControlIndex alMatrixDSTimeMark + protocolDirLocalIndex nlMatrixDSDestAddress + nlMatrixDSSourceAddress protocolDirLocalIndex"; + description + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network-layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + The nlMatrixDSDestAddress value in the index identifies the + network-layer address of the destination host in this + + + + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network-layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixDSDestAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixDSEntry/rmon2-mib:nlMatrixDSDestAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixDSSourceAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixDSEntry/rmon2-mib:nlMatrixDSSourceAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixDSTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alMatrixDSPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times."; + } + + leaf alMatrixDSOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits, but including FCS octets), excluding octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alMatrixDSCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixTopNControlEntry { + + key "alMatrixTopNControlIndex"; + description + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3"; + + + leaf alMatrixTopNControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + } + + leaf alMatrixTopNControlMatrixIndex { + type int32 { + range "1..65535"; + } + config true; + description + "The alMatrix[SD/DS] table for which a topN report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + } + + leaf alMatrixTopNControlRateBase { + type enumeration { + enum alMatrixTopNTerminalsPkts { value 1; } + enum alMatrixTopNTerminalsOctets { value 2; } + enum alMatrixTopNAllPkts { value 3; } + enum alMatrixTopNAllOctets { value 4; } + enum alMatrixTopNTerminalsHighCapacityPkts { value 5; } + enum alMatrixTopNTerminalsHighCapacityOctets { value 6; } + enum alMatrixTopNAllHighCapacityPkts { value 7; } + enum alMatrixTopNAllHighCapacityOctets { value 8; } + } + config true; + description + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + } + + leaf alMatrixTopNControlTimeRemaining { + type int32 { + range "0..2147483647"; + } + config true; + description + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report and is immediately loaded into the associated + alMatrixTopNControlDuration object. + + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus, the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + + + + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used + in the hostTopNTable)."; + } + + leaf alMatrixTopNControlGeneratedReports { + type yang:counter32; + config false; + description + "The number of reports that have been generated by this entry."; + } + + leaf alMatrixTopNControlDuration { + type int32; + config false; + description + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry."; + } + + leaf alMatrixTopNControlRequestedSize { + type int32 { + range "0..2147483647"; + } + config true; + description + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as possible for the particular probe + implementation and available resources."; + } + + leaf alMatrixTopNControlGrantedSize { + type int32 { + range "0..2147483647"; + } + config false; + description + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + object as closely to the requested value as + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether zero-valued entries are available."; + } + + leaf alMatrixTopNControlStartTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime when this topN report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + + + This object may be used by the management station to + determine whether a report was missed."; + } + + leaf alMatrixTopNControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf alMatrixTopNControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this alMatrixTopNControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all + associated entries in the alMatrixTopNTable shall be + deleted by the agent."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixTopNEntry { + + key "alMatrixTopNControlIndex alMatrixTopNIndex"; + description + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10"; + + leaf alMatrixTopNControlIndex { + type keyref { + path "/rmon2-mib:alMatrix/rmon2-mib:alMatrixTopNControlEntry/rmon2-mib:alMatrixTopNControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixTopNIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries."; + } + + leaf alMatrixTopNProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + } + + leaf alMatrixTopNSourceAddress { + type binary { + length "1..255"; + } + config false; + description + "The network-layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf alMatrixTopNDestAddress { + type binary { + length "1..255"; + } + config false; + description + "The network-layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of IP, this object is encoded as a + length octet of 4, followed by the 4 octets of the IP address, + in network byte order."; + } + + leaf alMatrixTopNAppProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The type of the protocol counted by this matrix entry."; + } + + leaf alMatrixTopNPktRate { + type yang:gauge32; + config false; + description + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report."; + } + + leaf alMatrixTopNReversePktRate { + type yang:gauge32; + config false; + description + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object. (Note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object."; + } + + leaf alMatrixTopNOctetRate { + type yang:gauge32; + config false; + description + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report."; + } + + leaf alMatrixTopNReverseOctetRate { + type yang:gauge32; + config false; + description + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object. (Note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object."; + } + } + } + + container usrHistory { + + + /* XXX table comments here XXX */ + + list usrHistoryControlEntry { + + key "usrHistoryControlIndex"; + description + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1"; + + + leaf usrHistoryControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system."; + } + + leaf usrHistoryControlObjects { + type int32 { + range "1..65535"; + } + config true; + description + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)."; + } + + leaf usrHistoryControlBucketsRequested { + type int32 { + range "1..65535"; + } + config true; + description + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as possible for the particular probe + implementation and available resources."; + } + + leaf usrHistoryControlBucketsGranted { + type int32 { + range "1..65535"; + } + config false; + description + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + object is created or modified, the probe should set + this object as closely to the requested value as + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow."; + } + + leaf usrHistoryControlInterval { + type int32 { + range "1..2147483647"; + } + config true; + description + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and to set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + } + + leaf usrHistoryControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf usrHistoryControlStatus { + type smiv2:RowStatus; + config true; + description + "The status of this variable history control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the usrHistoryTable shall be deleted."; + } + } + + + /* XXX table comments here XXX */ + + list usrHistoryObjectEntry { + + key "usrHistoryControlIndex usrHistoryObjectIndex"; + description + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3"; + + leaf usrHistoryControlIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryControlEntry/rmon2-mib:usrHistoryControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf usrHistoryObjectIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically."; + } + + leaf usrHistoryObjectVariable { + type yang:object-identifier; + config true; + description + "The object identifier of the particular variable to be + + + + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. See USM [RFC3414] and VACM [RFC3415] for more + information. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + } + + leaf usrHistoryObjectSampleType { + type enumeration { + enum absoluteValue { value 1; } + enum deltaValue { value 2; } + } + config true; + description + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)."; + } + } + + + /* XXX table comments here XXX */ + + list usrHistoryEntry { + + key "usrHistoryControlIndex usrHistorySampleIndex + usrHistoryObjectIndex"; + description + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5"; + + leaf usrHistoryControlIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryControlEntry/rmon2-mib:usrHistoryControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf usrHistoryObjectIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryObjectEntry/rmon2-mib:usrHistoryObjectIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf usrHistorySampleIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken."; + } + + leaf usrHistoryIntervalStart { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval."; + } + + leaf usrHistoryIntervalEnd { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the end of the interval over which + this sample was measured."; + } + + leaf usrHistoryAbsValue { + type yang:gauge32; + config false; + description + "The absolute value (i.e., unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + + + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'."; + } + + leaf usrHistoryValStatus { + type enumeration { + enum valueNotAvailable { value 1; } + enum valuePositive { value 2; } + enum valueNegative { value 3; } + } + config false; + description + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and the actual value of the sample is + greater than or equal to zero, then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value."; + } + } + } + + container probeConfig { + + leaf probeCapabilities { + type bits { + bit etherStats { position 0; } + bit historyControl { position 1; } + bit etherHistory { position 2; } + bit alarm { position 3; } + bit hosts { position 4; } + bit hostTopN { position 5; } + bit matrix { position 6; } + bit filter { position 7; } + bit capture { position 8; } + bit event { position 9; } + bit tokenRingMLStats { position 10; } + bit tokenRingPStats { position 11; } + bit tokenRingMLHistory { position 12; } + bit tokenRingPHistory { position 13; } + bit ringStation { position 14; } + bit ringStationOrder { position 15; } + bit ringStationConfig { position 16; } + bit sourceRouting { position 17; } + bit protocolDirectory { position 18; } + bit protocolDistribution { position 19; } + bit addressMapping { position 20; } + bit nlHost { position 21; } + bit nlMatrix { position 22; } + bit alHost { position 23; } + bit alMatrix { position 24; } + bit usrHistory { position 25; } + bit probeConfig { position 26; } + } + config false; + description + "An indication of the RMON MIB groups supported + on at least one interface by this probe."; + } + + leaf probeSoftwareRev { + type smiv2:DisplayString { + length "0..15"; + } + config false; + description + "The software revision of this device. This string will have + a zero length if the revision is unknown."; + } + + leaf probeHardwareRev { + type smiv2:DisplayString { + length "0..31"; + } + config false; + description + "The hardware revision of this device. This string will have + a zero length if the revision is unknown."; + } + + leaf probeDateTime { + type binary { + length "0 | 8 | 11"; + } + config true; + description + "Probe's current date and time. + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned."; + } + + leaf probeResetControl { + type enumeration { + enum running { value 1; } + enum warmBoot { value 2; } + enum coldBoot { value 3; } + } + config true; + description + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and to restart the application software. When the device + is running normally, this variable has a value of + running(1)."; + } + + leaf probeDownloadFile { + type smiv2:DisplayString { + length "0..127"; + } + config true; + status deprecated; + description + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero-length string when no file name has been specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadTFTPServer { + type inet:ipv4-address; + config true; + status deprecated; + description + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to '0.0.0.0' when no IP address has been + + + + specified. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadAction { + type enumeration { + enum notDownloading { value 1; } + enum downloadToPROM { value 2; } + enum downloadToRAM { value 3; } + } + config true; + status deprecated; + description + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) is specified, + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadStatus { + type enumeration { + enum downloadSuccess { value 1; } + enum downloadStatusUnknown { value 2; } + enum downloadGeneralError { value 3; } + enum downloadNoResponseFromServer { value 4; } + enum downloadChecksumError { value 5; } + enum downloadIncompatibleImage { value 6; } + enum downloadTftpFileNotFound { value 7; } + enum downloadTftpAccessViolation { value 8; } + } + config false; + status deprecated; + description + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + + /* XXX table comments here XXX */ + + list serialConfigEntry { + + key "ifIndex"; + status deprecated; + description + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf serialMode { + type enumeration { + enum direct { value 1; } + enum modem { value 2; } + } + config true; + status deprecated; + description + "The type of incoming connection to be expected on this + serial interface."; + } + + leaf serialProtocol { + type enumeration { + enum other { value 1; } + enum slip { value 2; } + enum ppp { value 3; } + } + config true; + status deprecated; + description + "The type of data link encapsulation to be used on this + serial interface."; + } + + leaf serialTimeout { + type int32 { + range "1..65535"; + } + config true; + status deprecated; + description + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap."; + } + + leaf serialModemInitString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'."; + } + + leaf serialModemHangUpString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'."; + } + + leaf serialModemConnectResp { + type smiv2:DisplayString { + length "0..255"; + } + config true; + status deprecated; + description + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + + + + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'."; + } + + leaf serialModemNoConnectResp { + type smiv2:DisplayString { + length "0..255"; + } + config true; + status deprecated; + description + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'."; + } + + leaf serialDialoutTimeout { + type int32 { + range "1..65535"; + } + config true; + status deprecated; + description + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface."; + } + + leaf serialStatus { + type smiv2:RowStatus; + config true; + status deprecated; + description + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + } + } + + + /* XXX table comments here XXX */ + + list netConfigEntry { + + key "ifIndex"; + status deprecated; + description + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf netConfigIPAddress { + type inet:ipv4-address; + config true; + status deprecated; + description + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received."; + } + + leaf netConfigSubnetMask { + type inet:ipv4-address; + config true; + status deprecated; + description + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send them very infrequently if no + replies are received."; + } + + leaf netConfigStatus { + type smiv2:RowStatus; + config true; + status deprecated; + description + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + } + } + + leaf netDefaultGateway { + type inet:ipv4-address; + config true; + status deprecated; + description + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0."; + } + + + /* XXX table comments here XXX */ + + list trapDestEntry { + + key "trapDestIndex"; + status deprecated; + description + "This entry includes a destination IP address to which + traps are sent for this community."; + + + leaf trapDestIndex { + type int32 { + range "1..65535"; + } + config false; + status deprecated; + description + "A value that uniquely identifies this trapDestEntry."; + } + + leaf trapDestCommunity { + type binary { + length "0..127"; + } + config true; + status deprecated; + description + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + + + + address in the trapDestTable with a trapDestCommunity equal + to eventCommunity, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)."; + } + + leaf trapDestProtocol { + type enumeration { + enum ip { value 1; } + enum ipx { value 2; } + } + config true; + status deprecated; + description + "The protocol with which this trap is to be sent."; + } + + leaf trapDestAddress { + type binary; + config true; + status deprecated; + description + "The destination address for traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + trapDestStatus object is equal to active(1)."; + } + + leaf trapDestOwner { + type rmon-mib:OwnerString; + config true; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf trapDestStatus { + type smiv2:RowStatus; + config true; + status deprecated; + description + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + } + } + + + /* XXX table comments here XXX */ + + list serialConnectionEntry { + + key "serialConnectIndex"; + status deprecated; + description + "Configuration for a SLIP link over a serial line."; + + + leaf serialConnectIndex { + type int32 { + range "1..65535"; + } + config false; + status deprecated; + description + "A value that uniquely identifies this serialConnection + entry."; + } + + leaf serialConnectDestIpAddress { + type inet:ipv4-address; + config true; + status deprecated; + description + "The IP Address that can be reached at the other end of this + serial connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectType { + type enumeration { + enum direct { value 1; } + enum modem { value 2; } + enum switch { value 3; } + enum modemSwitch { value 4; } + } + config true; + status deprecated; + description + "The type of outgoing connection to be made. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first, + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectDialString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the dialing prefix and suffix. For + example: '^s^MATD9,888-1234^M' will instruct the Probe + to send a carriage return, followed by the dialing prefix + 'ATD', the phone number '9,888-1234', and a carriage + return as the dialing suffix. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectSwitchConnectSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectSwitchDisconnectSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectSwitchResetSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to reset a data + switch in the event of a timeout. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectOwner { + type rmon-mib:OwnerString; + config true; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf serialConnectStatus { + type smiv2:RowStatus; + config true; + status deprecated; + description + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + + + + the serialConnectSwitchResetSeq is a zero-length string + or cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value."; + } + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/rmon-mib:etherStatsEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf etherStatsDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf etherStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/token-ring:tokenRingMLStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf tokenRingMLStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf tokenRingMLStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/token-ring:tokenRingPStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf tokenRingPStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf tokenRingPStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:history/rmon-mib:historyControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf historyControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:hosts/rmon-mib:hostControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf hostControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + + + + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf hostControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:matrix/rmon-mib:matrixControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf matrixControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf matrixControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:filter/rmon-mib:channelEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf channelDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf channelCreateTime { + type rmon2-mib:LastCreateTime; + config false; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:filter/rmon-mib:filterEntry" { + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + leaf filterProtocolDirDataLocalIndex { + type int32 { + range "0..2147483647"; + } + config true; + description + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + + + + 2) If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit. + 3) If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet."; + } + + leaf filterProtocolDirLocalIndex { + type int32 { + range "0..2147483647"; + } + config true; + description + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry."; + } + } + + + /* XXX table comments here XXX */ + + augment "/token-ring:tokenRing/token-ring:ringStationControlEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf ringStationControlDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf ringStationControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + + + + ensure that the table has not been deleted and recreated + between polls."; + } + } + + + /* XXX table comments here XXX */ + + augment "/token-ring:tokenRing/token-ring:sourceRoutingStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf sourceRoutingStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the + probe is out of some resources and decides to shed load from + this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped."; + } + + leaf sourceRoutingStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + description + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls."; + } + } + +} /* end of module RMON2-MIB */ diff --git a/test/dumps/yang/SNMPv2-MIB b/test/dumps/yang/SNMPv2-MIB new file mode 100644 index 0000000..96e6ade --- /dev/null +++ b/test/dumps/yang/SNMPv2-MIB @@ -0,0 +1,648 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang SNMPv2-MIB + * + * Do not edit. Edit the source file instead! + */ + +module SNMPv2-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:SNMPv2-MIB"; + prefix "snmpv2-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF SNMPv3 Working Group"; + + contact + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006"; + + description + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices."; + + revision "2002-10-16" { + description + "This revision of this MIB module was published as + RFC 3418."; + } + revision "1995-11-09" { + description + "This revision of this MIB module was published as + RFC 1907."; + } + revision "1993-04-01" { + description + "The initial revision of this MIB module was published + as RFC 1450."; + } + + container system { + + leaf sysDescr { + type smiv2:DisplayString { + length "0..255"; + } + config false; + 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."; + } + + leaf sysObjectID { + type yang:object-identifier; + config false; + 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.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'."; + } + + leaf sysUpTime { + type yang:timeticks; + config false; + description + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized."; + } + + leaf sysContact { + type smiv2:DisplayString { + length "0..255"; + } + config true; + 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."; + } + + leaf sysName { + type smiv2:DisplayString { + length "0..255"; + } + config true; + 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."; + } + + leaf sysLocation { + type smiv2:DisplayString { + length "0..255"; + } + config true; + 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."; + } + + leaf sysServices { + type int32 { + range "0..127"; + } + config false; + description + "A value which indicates the set of services that this + entity may potentially offer. 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."; + } + + leaf sysORLastChange { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID."; + } + + + /* XXX table comments here XXX */ + + list sysOREntry { + + key "sysORIndex"; + description + "An entry (conceptual row) in the sysORTable."; + + + leaf sysORIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable."; + } + + leaf sysORID { + type yang:object-identifier; + config false; + description + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder."; + } + + leaf sysORDescr { + type smiv2:DisplayString; + config false; + description + "A textual description of the capabilities identified + by the corresponding instance of sysORID."; + } + + leaf sysORUpTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time this conceptual + row was last instantiated."; + } + } + } + + container snmp { + + leaf snmpInPkts { + type yang:counter32; + config false; + description + "The total number of messages delivered to the SNMP + entity from the transport service."; + } + + leaf snmpOutPkts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service."; + } + + leaf snmpInBadVersions { + type yang:counter32; + config false; + description + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version."; + } + + leaf snmpInBadCommunityNames { + type yang:counter32; + config false; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value."; + } + + leaf snmpInBadCommunityUses { + type yang:counter32; + config false; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value."; + } + + leaf snmpInASNParseErrs { + type yang:counter32; + config false; + description + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages."; + } + + leaf snmpInTooBigs { + type yang:counter32; + config false; + 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 was + `tooBig'."; + } + + leaf snmpInNoSuchNames { + type yang:counter32; + config false; + 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 was + `noSuchName'."; + } + + leaf snmpInBadValues { + type yang:counter32; + config false; + 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 was + `badValue'."; + } + + leaf snmpInReadOnlys { + type yang:counter32; + config false; + 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 was `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."; + } + + leaf snmpInGenErrs { + type yang:counter32; + config false; + 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 was `genErr'."; + } + + leaf snmpInTotalReqVars { + type yang:counter32; + config false; + 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."; + } + + leaf snmpInTotalSetVars { + type yang:counter32; + config false; + 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."; + } + + leaf snmpInGetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity."; + } + + leaf snmpInGetNexts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity."; + } + + leaf snmpInSetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity."; + } + + leaf snmpInGetResponses { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity."; + } + + leaf snmpInTraps { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity."; + } + + leaf snmpOutTooBigs { + type yang:counter32; + config false; + 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 was `tooBig.'"; + } + + leaf snmpOutNoSuchNames { + type yang:counter32; + config false; + 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 was `noSuchName'."; + } + + leaf snmpOutBadValues { + type yang:counter32; + config false; + 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 was `badValue'."; + } + + leaf snmpOutGenErrs { + type yang:counter32; + config false; + 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 was `genErr'."; + } + + leaf snmpOutGetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutGetNexts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity."; + } + + leaf snmpOutSetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutGetResponses { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutTraps { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity."; + } + + leaf snmpEnableAuthenTraps { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + 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."; + } + + leaf snmpSilentDrops { + type yang:counter32; + config false; + description + "The total number of Confirmed Class PDUs (such as + 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 Class PDU (such as a + 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."; + } + + leaf snmpProxyDrops { + type yang:counter32; + config false; + description + "The total number of Confirmed Class PDUs + (such as 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 Class PDU (such as a Response-PDU) could + be returned."; + } + } + + container snmpTrap { + + leaf snmpTrapOID { + type yang:object-identifier; + config false; + 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."; + } + + leaf snmpTrapEnterprise { + type yang:object-identifier; + config false; + description + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind."; + } + } + + container snmpSet { + + leaf snmpSetSerialNo { + type smiv2:TestAndIncr; + config true; + description + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP 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."; + } + } + + notification coldStart { + description + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered."; + + } + + notification warmStart { + description + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered."; + + } + + notification authenticationFailure { + description + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated."; + + } +} /* end of module SNMPv2-MIB */ diff --git a/test/mibs/LIBSMI-TEST-001-MIB b/test/mibs/LIBSMI-TEST-001-MIB new file mode 100644 index 0000000..0b4102a --- /dev/null +++ b/test/mibs/LIBSMI-TEST-001-MIB @@ -0,0 +1,42 @@ +LIBSMI-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser might complain about the fact, that this + module contains no definitions besides this MODULE-IDENTITY + construct. + + The libsmi parser is expected to report: + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-002-MIB b/test/mibs/LIBSMI-TEST-002-MIB new file mode 100644 index 0000000..16a1e69 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-002-MIB @@ -0,0 +1,45 @@ +LIBSMI-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest002MibJunk OBJECT IDENTIFIER ::= { testMib 2 1 } + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that the + MODULE-IDENTITY construct in this module is not the first + definition. + + The libsmi parser is expected to report: +LIBSMI-TEST-002-MIB:11: MODULE-IDENTITY clause must be the first declaration in a module + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 2 } + +END diff --git a/test/mibs/LIBSMI-TEST-003-MIB b/test/mibs/LIBSMI-TEST-003-MIB new file mode 100644 index 0000000..7f316f4 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-003-MIB @@ -0,0 +1,58 @@ +LIBSMI-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that this + module contains more than exactly one MODULE-IDENTITY + construct. + + The libsmi parser is expected to report: +LIBSMI-TEST-003-MIB:45: more than one MODULE-IDENTITY clause in SMIv2 MIB +LIBSMI-TEST-003-MIB:45: MODULE-IDENTITY clause must be the first declaration in a module +LIBSMI-TEST-003-MIB:53: revision not in reverse chronological order + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 3 } + +libsmiTest003MibJunk MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "junk" + CONTACT-INFO + "junk" + DESCRIPTION + "junk" + REVISION "199906101500Z" + DESCRIPTION + "junk" + ::= { testMib 3 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-004-MIB b/test/mibs/LIBSMI-TEST-004-MIB new file mode 100644 index 0000000..6efd670 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-004-MIB @@ -0,0 +1,45 @@ +LIBSMI-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest004Mib OBJECT-IDENTITY +-- LAST-UPDATED "199906101500Z" +-- ORGANIZATION +-- "TU Braunschweig" +-- CONTACT-INFO +-- " Frank Strauss +-- +-- Postal: TU Braunschweig +-- Bueltenweg 74/75 +-- 38106 Braunschweig +-- Germany +-- +-- Phone: +49 531 391-3283 +-- EMail: strauss@ibr.cs.tu-bs.de +-- http://www.ibr.cs.tu-bs.de/~strauss/" + STATUS current + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that this + module contains no MODULE-IDENTITY construct. Note, that + this information is therefore stored in an OBJECT-IDENTITY + DESCRIPTION clause. + + The libsmi parser is expected to report: +LIBSMI-TEST-004-MIB:45: missing MODULE-IDENTITY clause in SMIv2 MIB + " +-- REVISION "199906101500Z" +-- DESCRIPTION +-- "Initial Revision." + ::= { testMib 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-005-MIB b/test/mibs/LIBSMI-TEST-005-MIB new file mode 100644 index 0000000..ae7bbdd --- /dev/null +++ b/test/mibs/LIBSMI-TEST-005-MIB @@ -0,0 +1,43 @@ +LIBSMI-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "199906221500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser might complain about the fact, that the + OBJECT-TYPE macro is imported though it's not used. + + The libsmi parser is expected to report: + +LIBSMI-TEST-005-MIB:4: warning: identifier `OBJECT-TYPE' imported from module `SNMPv2-SMI' is never used + " + REVISION "199906221500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 5 } + +END diff --git a/test/mibs/LIBSMI-TEST-006-MIB b/test/mibs/LIBSMI-TEST-006-MIB new file mode 100644 index 0000000..7b41892 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-006-MIB @@ -0,0 +1,40 @@ +LIBSMI-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "199906171500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that the + MODULE-IDENTITY macro is not imported though it's used. + + The libsmi parser is expected to report: +LIBSMI-TEST-006-MIB:7: macro `MODULE-IDENTITY' has not been imported from module `SNMPv2-SMI' + " + REVISION "199906171500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 6 } + +END diff --git a/test/mibs/LIBSMI-TEST-007-MIB b/test/mibs/LIBSMI-TEST-007-MIB new file mode 100644 index 0000000..626514f --- /dev/null +++ b/test/mibs/LIBSMI-TEST-007-MIB @@ -0,0 +1,46 @@ +LIBSMI-TEST-007-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "199906221500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that `mib-2' + is used in the definition of `libsmiTest007Junk', but not + known (neither imported, nor defined). + + The libsmi parser is expected to report: +LIBSMI-TEST-007-MIB:44: unknown object identifier label `mib-2' + " + REVISION "199906221500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 7 } + +libsmiTest007Junk OBJECT IDENTIFIER + ::= { mib-2 42 } + +END diff --git a/test/mibs/LIBSMI-TEST-008-MIB b/test/mibs/LIBSMI-TEST-008-MIB new file mode 100644 index 0000000..8ff90a7 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-008-MIB @@ -0,0 +1,204 @@ +LIBSMI-TEST-008-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest008Mib MODULE-IDENTITY + LAST-UPDATED "200005291500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper sub-typing by + checking the rules in RFC 2578 Appendix A and 'oral rules' + that are not specified in the SMIv2. + + The libsmi parser is expected to report: +LIBSMI-TEST-008-MIB:86: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:94: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:133: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:139: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:144: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:144: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:152: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:152: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:160: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:168: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:176: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:77: warning: current type `Red' is not referenced in this module +LIBSMI-TEST-008-MIB:77: textual convention `Red' can not be derived from the textual convention `Color' +LIBSMI-TEST-008-MIB:102: named number `yellow(4)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:110: named number `red(2)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:118: named number `rot(1)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:135: warning: current type `FileAccess' is not referenced in this module +LIBSMI-TEST-008-MIB:135: textual convention `FileAccess' can not be derived from the textual convention `Access' +LIBSMI-TEST-008-MIB:160: named number `create' illegal in sub-type of `Access' +LIBSMI-TEST-008-MIB:168: named number `read' illegal in sub-type of `Access' +LIBSMI-TEST-008-MIB:176: named number `lesen' illegal in sub-type of `Access' + " + REVISION "200005291500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 8 } + +-- +-- Test cases for enumeration sub-typing: +-- + +Color ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +Red ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "." + SYNTAX Color { red(1) } + +enumTests OBJECT IDENTIFIER ::= { libsmiTest008Mib 1 } + +enumTest1 OBJECT-TYPE + SYNTAX Color { blue(3), red(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid sub-typing with different order." + ::= { enumTests 1 } + +enumTest2 OBJECT-TYPE + SYNTAX Color { red(1), blue(3), green(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid, although equivalent to the original type." + ::= { enumTests 2 } + +enumTest3 OBJECT-TYPE + SYNTAX Color { red(1), yellow(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since yellow(4) is not defined in the base type." + ::= { enumTests 3 } + +enumTest4 OBJECT-TYPE + SYNTAX Color { red(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since red is defined as 1 and not 2." + ::= { enumTests 4 } + +enumTest5 OBJECT-TYPE + SYNTAX Color { rot(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since rot is defined as red(1)." + ::= { enumTests 5 } + +-- +-- Test cases for bits sub-typing: +-- + +Access ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX BITS { read(1), write(2), execute(3) } + +FileAccess ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX Access { read(1), write(2) } + +bitsTests OBJECT IDENTIFIER ::= { libsmiTest008Mib 2 } + +bitsTest1 OBJECT-TYPE + SYNTAX Access { write(2), read(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid sub-typing with different order." + ::= { bitsTests 1 } + +bitsTest2 OBJECT-TYPE + SYNTAX Access { write(2), execute(3), read(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid, although equivalent to the original type." + ::= { bitsTests 2 } + +bitsTest3 OBJECT-TYPE + SYNTAX Access { read(1), create(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since create(4) is not defined in the base type." + ::= { bitsTests 3 } + +bitsTest4 OBJECT-TYPE + SYNTAX Access { read(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since read is defined as 1 and not 2." + ::= { bitsTests 4 } + +bitsTest5 OBJECT-TYPE + SYNTAX Access { lesen(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since lesen is defined as red(1)." + ::= { bitsTests 5 } + +-- +-- Conformance statements. +-- + +libsmiTest008Group OBJECT-GROUP + OBJECTS + { enumTest1, enumTest2, enumTest3, enumTest4, enumTest5, + bitsTest1, bitsTest2, bitsTest3, bitsTest4, bitsTest5 } + STATUS current + DESCRIPTION + "All object types." + ::= { libsmiTest008Mib 3 } + +libsmiTest008Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest008Group } + ::= { libsmiTest008Mib 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-009-MIB b/test/mibs/LIBSMI-TEST-009-MIB new file mode 100644 index 0000000..39fd6ab --- /dev/null +++ b/test/mibs/LIBSMI-TEST-009-MIB @@ -0,0 +1,134 @@ +LIBSMI-TEST-009-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest009Mib MODULE-IDENTITY + LAST-UPDATED "200005300900Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper number and + bits enumerations. + + The libsmi parser is expected to report: +LIBSMI-TEST-009-MIB:92: warning: named numbers not in ascending order +LIBSMI-TEST-009-MIB:102: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:114: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:120: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:120: warning: named numbers not in ascending order +LIBSMI-TEST-009-MIB:126: warning: named bit `yellow(128)' may cause interoperability or implementation problems +LIBSMI-TEST-009-MIB:126: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:132: named bit `yellow(524280)' exceeds maximum bit position +LIBSMI-TEST-009-MIB:132: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:70: warning: current type `EnumTcTest1' is not referenced in this module +LIBSMI-TEST-009-MIB:76: warning: current type `EnumTcTest2' is not referenced in this module +LIBSMI-TEST-009-MIB:82: warning: current type `EnumTcTest3' is not referenced in this module +LIBSMI-TEST-009-MIB:82: redefinition of name `red' in number enumeration +LIBSMI-TEST-009-MIB:88: warning: current type `EnumTcTest4' is not referenced in this module +LIBSMI-TEST-009-MIB:88: redefinition of number `3' in number enumeration +LIBSMI-TEST-009-MIB:98: warning: current type `BitsTcTest1' is not referenced in this module +LIBSMI-TEST-009-MIB:104: warning: current type `BitsTcTest2' is not referenced in this module +LIBSMI-TEST-009-MIB:110: warning: current type `BitsTcTest3' is not referenced in this module +LIBSMI-TEST-009-MIB:110: redefinition of name `red' in named bits list +LIBSMI-TEST-009-MIB:116: warning: current type `BitsTcTest4' is not referenced in this module +LIBSMI-TEST-009-MIB:116: redefinition of number `3' in named bits list +LIBSMI-TEST-009-MIB:122: warning: current type `BitsTcTest5' is not referenced in this module +LIBSMI-TEST-009-MIB:128: warning: current type `BitsTcTest6' is not referenced in this module + " + REVISION "200005300900Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 9 } + +-- +-- Test cases for number enumerations: +-- + +EnumTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +EnumTcTest2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3) } + +EnumTcTest3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid enumeration: redefinition of a name." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3), red(4) } + +EnumTcTest4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid enumeration: redefinition of a number." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3), yellow(3) } + +-- +-- Test cases for named bits lists: +-- + +BitsTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { red(1), green(2), blue(3) } + +BitsTcTest2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { none(0), red(1), green(2), blue(3) } + +BitsTcTest3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: redefinition of a name." + SYNTAX BITS { red(1), green(2), blue(3), red(4) } + +BitsTcTest4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: redefinition of a number." + SYNTAX BITS { red(1), green(2), blue(3), yellow(3) } + +BitsTcTest5 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: number may cause interoperability problems." + SYNTAX BITS { red(1), green(2), blue(3), yellow(128) } + +BitsTcTest6 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: number too large to represent." + SYNTAX BITS { red(1), green(2), blue(3), yellow(524280) } + +END diff --git a/test/mibs/LIBSMI-TEST-010-MIB b/test/mibs/LIBSMI-TEST-010-MIB new file mode 100644 index 0000000..a22efe7 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-010-MIB @@ -0,0 +1,140 @@ +LIBSMI-TEST-010-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest010Mib MODULE-IDENTITY + LAST-UPDATED "200011081000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper subtyping. + + The libsmi parser is expected to report: +LIBSMI-TEST-010-MIB:68: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-010-MIB:81: illegal size restriction for non-octet-string parent type `EnumTcTest1' +LIBSMI-TEST-010-MIB:89: illegal range restriction for non-numerical parent type `EnumTcTest1' +LIBSMI-TEST-010-MIB:97: illegal size restriction for non-octet-string parent type `BitsTcTest1' +LIBSMI-TEST-010-MIB:105: illegal range restriction for non-numerical parent type `BitsTcTest1' +LIBSMI-TEST-010-MIB:113: illegal enumeration or bits restriction for non-enumeration-or-bits parent type `OctetsStringTcTest1' +LIBSMI-TEST-010-MIB:58: warning: current type `EnumTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:64: warning: current type `BitsTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:70: warning: current type `OctetsStringTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:70: warning: type `OctetsStringTcTest1' has no format specification + " + REVISION "200011081000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 10 } + +-- +-- Some valid TC definitions: +-- + +EnumTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +BitsTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { red(1), green(2), blue(3) } + +OctetsStringTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid octet string size restriction." + SYNTAX OCTET STRING (SIZE (16)) + +-- +-- Test cases for improper subtyping of TCs: +-- + +test1 OBJECT-TYPE + SYNTAX EnumTcTest1 (SIZE (15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { libsmiTest010Mib 1 } + +test2 OBJECT-TYPE + SYNTAX EnumTcTest1 (0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { libsmiTest010Mib 2 } + +test3 OBJECT-TYPE + SYNTAX BitsTcTest1 (SIZE (15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on a bits enumeration." + ::= { libsmiTest010Mib 3 } + +test4 OBJECT-TYPE + SYNTAX BitsTcTest1 (0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on a bits enumeration." + ::= { libsmiTest010Mib 4 } + +test5 OBJECT-TYPE + SYNTAX OctetsStringTcTest1 { red(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid enumeration restriction on an octet string." + ::= { libsmiTest010Mib 5 } + +-- +-- Conformance statements. +-- + +libsmiTest010Group OBJECT-GROUP + OBJECTS + { test1, test2, test3, test4, test5 } + STATUS current + DESCRIPTION + "All object types." + ::= { libsmiTest010Mib 6 } + +libsmiTest010Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest010Group } + ::= { libsmiTest010Mib 7 } + +END diff --git a/test/mibs/LIBSMI-TEST-011-MIB b/test/mibs/LIBSMI-TEST-011-MIB new file mode 100644 index 0000000..a51ab37 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-011-MIB @@ -0,0 +1,131 @@ +LIBSMI-TEST-011-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest011Mib MODULE-IDENTITY + LAST-UPDATED "200007051000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks the proper handling of forward references. + + The libsmi parser is expected to report: +LIBSMI-TEST-011-MIB:91: warning: exactly one index element of row `testEntry' must be accessible +LIBSMI-TEST-011-MIB:54: warning: current group `group1' is not referenced in this module +LIBSMI-TEST-011-MIB:61: warning: current group `group2' is not referenced in this module + " + REVISION "200007051000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 11 } + +-- +-- The following definitions are just written down in reverse order +-- than usual. The parser should not have any problems to deal with +-- them. +-- + +group1 OBJECT-GROUP + OBJECTS { testScalar1 } + STATUS current + DESCRIPTION + "junk" + ::= { testGroups 1 } + +group2 NOTIFICATION-GROUP + NOTIFICATIONS { testNotification1 } + STATUS current + DESCRIPTION + "junk" + ::= { testGroups 2 } + +testNotification1 NOTIFICATION-TYPE + OBJECTS { testScalar1 } + STATUS current + DESCRIPTION + "junk" + ::= { testNotifications 1 } + +testScalar1 OBJECT-TYPE + SYNTAX TestTc1 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { testObjects 1 } + +testColumn1 OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + ::= { testEntry 1 } + +testEntry OBJECT-TYPE + SYNTAX TestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + INDEX { testColumn1 } + ::= { testTable 1 } + +testTable OBJECT-TYPE + SYNTAX SEQUENCE OF TestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + ::= { testObjects 2 } + +TestEntry ::= SEQUENCE { + testColumn1 Integer32 +} + +TestTc1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +textConst1 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "junk" + ::= { testConstants 1 } + +testConstants OBJECT IDENTIFIER ::= { testDefinitions 3 } +testGroups OBJECT IDENTIFIER ::= { testDefinitions 2 } +testObjects OBJECT IDENTIFIER ::= { testDefinitions 1 } +testNotifications OBJECT IDENTIFIER ::= { testDefinitions 0 } + +testDefinitions OBJECT IDENTIFIER ::= { libsmiTest011Mib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-012-MIB b/test/mibs/LIBSMI-TEST-012-MIB new file mode 100644 index 0000000..c7b7daf --- /dev/null +++ b/test/mibs/LIBSMI-TEST-012-MIB @@ -0,0 +1,71 @@ +LIBSMI-TEST-012-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest012Mib MODULE-IDENTITY + LAST-UPDATED "200011080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for illegal underscore characters in + identifiers. + + The libsmi parser is expected to report: +LIBSMI-TEST-012-MIB:50: identifier `Foo_Bar' must not contain an underscore +LIBSMI-TEST-012-MIB:56: identifier `bar_foo' must not contain an underscore +LIBSMI-TEST-012-MIB:65: identifier `bar_foo' must not contain an underscore +LIBSMI-TEST-012-MIB:64: warning: current group `barFooGroup' is not referenced in this module +LIBSMI-TEST-012-MIB:50: warning: current type `Foo_Bar' is not referenced in this module + " + REVISION "200011080000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 12 } + +Foo_Bar ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX OBJECT IDENTIFIER + +bar_foo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest012Mib 1 } + +barFooGroup OBJECT-GROUP + OBJECTS { bar_foo } + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest012Mib 2 } + +END diff --git a/test/mibs/LIBSMI-TEST-013-MIB b/test/mibs/LIBSMI-TEST-013-MIB new file mode 100644 index 0000000..bbb6cf0 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-013-MIB @@ -0,0 +1,93 @@ +LIBSMI-TEST-013-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest013Mib MODULE-IDENTITY + LAST-UPDATED "200109270000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for range normalization, thus there are + no errors expected for this module. However the parser might + complain about ranges not being in ascending order. + + The libsmi parser is expected to report: +LIBSMI-TEST-013-MIB:70: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:70: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:84: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:91: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:58: warning: current type `RangeType1' is not referenced in this module +LIBSMI-TEST-013-MIB:58: warning: type `RangeType1' has no format specification +LIBSMI-TEST-013-MIB:65: warning: current type `RangeType2' is not referenced in this module +LIBSMI-TEST-013-MIB:65: warning: type `RangeType2' has no format specification +LIBSMI-TEST-013-MIB:72: warning: current type `RangeType3' is not referenced in this module +LIBSMI-TEST-013-MIB:72: warning: type `RangeType3' has no format specification +LIBSMI-TEST-013-MIB:79: warning: current type `RangeType4' is not referenced in this module +LIBSMI-TEST-013-MIB:79: warning: type `RangeType4' has no format specification +LIBSMI-TEST-013-MIB:86: warning: current type `RangeType5' is not referenced in this module +LIBSMI-TEST-013-MIB:86: warning: type `RangeType5' has no format specification + " + REVISION "200109270000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 13 } + +RangeType1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3|5..6)." + SYNTAX Integer32 (1|2|3|5|6) + +RangeType2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3)." + SYNTAX Integer32 (3|2|1) + +RangeType3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..5)." + SYNTAX Integer32 (1..3|4..5) + +RangeType4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..5)." + SYNTAX Integer32 (4..5|1..3) + +RangeType5 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3|5..6)." + SYNTAX Integer32 (5..6|1..3) + +END diff --git a/test/mibs/LIBSMI-TEST-014-MIB b/test/mibs/LIBSMI-TEST-014-MIB new file mode 100644 index 0000000..edc2de4 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-014-MIB @@ -0,0 +1,317 @@ +LIBSMI-TEST-014-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + MacAddress + FROM SNMPv2-TC + OBJECT-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest014Mib MODULE-IDENTITY + LAST-UPDATED "200109270000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for range normalization, thus there are + no errors expected for this module. However the parser might + complain about ranges not being in ascending order. + + The libsmi parser is expected to report: +LIBSMI-TEST-014-MIB:102: warning: index of row `barEntry' can exceed OID size limit by 1 subidentifier(s) +LIBSMI-TEST-014-MIB:186: warning: index of row `barImpliedEntry' can exceed OID size limit by 1 subidentifier(s) +LIBSMI-TEST-014-MIB:251: index element `fooStringName' of row `fooStringEntry' must have a size restriction +LIBSMI-TEST-014-MIB:230: warning: index of row `fooStringEntry' can exceed OID size limit by 65427 subidentifier(s) +LIBSMI-TEST-014-MIB:294: index element `fooOidName' of row `fooOidEntry' should but cannot have a size restriction +LIBSMI-TEST-014-MIB:273: warning: index of row `fooOidEntry' can exceed OID size limit by 20 subidentifier(s) +LIBSMI-TEST-014-MIB:309: warning: current group `fooOidBarGroup' is not referenced in this module + " + REVISION "200109270000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 14 } + +fooTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 1 } + +fooEntry OBJECT-TYPE + SYNTAX FooEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooAddr, fooName } + ::= { fooTable 1 } + +FooEntry ::= SEQUENCE { + fooAddr MacAddress, + fooName OCTET STRING, + fooData Integer32 +} + +fooAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooEntry 1 } + +fooName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..108)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooEntry 2 } + +fooData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooEntry 3 } + +barTable OBJECT-TYPE + SYNTAX SEQUENCE OF BarEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 2 } + +barEntry OBJECT-TYPE + SYNTAX BarEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { barAddr, barName } + ::= { barTable 1 } + +BarEntry ::= SEQUENCE { + barAddr MacAddress, + barName OCTET STRING, + barData Integer32 +} + +barAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barEntry 1 } + +barName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..109)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barEntry 2 } + +barData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { barEntry 3 } + +fooImpliedTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 3 } + +fooImpliedEntry OBJECT-TYPE + SYNTAX FooImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooImpliedAddr, IMPLIED fooImpliedName } + ::= { fooImpliedTable 1 } + +FooImpliedEntry ::= SEQUENCE { + fooImpliedAddr MacAddress, + fooImpliedName OCTET STRING, + fooImpliedData Integer32 +} + +fooImpliedAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 1 } + +fooImpliedName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..109)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 2 } + +fooImpliedData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 3 } + +barImpliedTable OBJECT-TYPE + SYNTAX SEQUENCE OF BarImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 4 } + +barImpliedEntry OBJECT-TYPE + SYNTAX BarImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { barImpliedAddr, IMPLIED barImpliedName } + ::= { barImpliedTable 1 } + +BarImpliedEntry ::= SEQUENCE { + barImpliedAddr MacAddress, + barImpliedName OCTET STRING, + barImpliedData Integer32 +} + +barImpliedAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 1 } + +barImpliedName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..110)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 2 } + +barImpliedData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 3 } + + + +fooStringTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 5 } + +fooStringEntry OBJECT-TYPE + SYNTAX FooStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooStringAddr, fooStringName } + ::= { fooStringTable 1 } + +FooStringEntry ::= SEQUENCE { + fooStringAddr MacAddress, + fooStringName OCTET STRING, + fooStringData Integer32 +} + +fooStringAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 1 } + +fooStringName OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 2 } + +fooStringData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 3 } + + +fooOidTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooOidEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 6 } + +fooOidEntry OBJECT-TYPE + SYNTAX FooOidEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooOidAddr, fooOidName } + ::= { fooOidTable 1 } + +FooOidEntry ::= SEQUENCE { + fooOidAddr MacAddress, + fooOidName OBJECT IDENTIFIER, + fooOidData Integer32 +} + +fooOidAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 1 } + +fooOidName OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 2 } + +fooOidData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 3 } + + +fooOidBarGroup OBJECT-GROUP + OBJECTS { fooData, barData, fooImpliedData, barImpliedData, + fooStringData, fooOidData } + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest014Mib 7 } + +END diff --git a/test/mibs/LIBSMI-TEST-015-MIB b/test/mibs/LIBSMI-TEST-015-MIB new file mode 100644 index 0000000..830de7c --- /dev/null +++ b/test/mibs/LIBSMI-TEST-015-MIB @@ -0,0 +1,91 @@ +LIBSMI-TEST-015-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + AGENT-CAPABILITIES + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest015Mib MODULE-IDENTITY + LAST-UPDATED "200206210000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for basic agent capabilities statement + support. There are no errors expected for this module. + + The libsmi parser is expected to report: + " + REVISION "200206210000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 15 } + + +agentcaps AGENT-CAPABILITIES + PRODUCT-RELEASE + "1.0" + STATUS current + DESCRIPTION + "This fictional system was deployed with these conditions." + + SUPPORTS + IF-MIB + INCLUDES { + ifGeneralInformationGroup, + ifFixedLengthGroup, + ifPacketGroup, + ifGeneralGroup, + ifStackGroup, + ifRcvAddressGroup, + linkUpDownNotificationsGroup + } + + VARIATION ifAdminStatus + SYNTAX + INTEGER { up(1), down(2) } + WRITE-SYNTAX + INTEGER { up(1), down(2) } + DESCRIPTION + "No ifAdminStatus support for testing(3)." + + VARIATION ifPromiscuousMode + ACCESS read-only + DESCRIPTION + "No support to set ifPromiscuousMode." + + VARIATION ifRcvAddressEntry + CREATION-REQUIRES + { ifRcvAddressType } + DESCRIPTION + "ifRcvAddressType is required in row creation operations. + We don't support the default value `volatile'." + + VARIATION ifRcvAddressType + DEFVAL { other } + DESCRIPTION + "Although in contradiction with the previous variation, this + sets the default value of ifRcvAddressType to `other'." + + ::= { libsmiTest015Mib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-016-MIB b/test/mibs/LIBSMI-TEST-016-MIB new file mode 100644 index 0000000..fb5c388 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-016-MIB @@ -0,0 +1,221 @@ +LIBSMI-TEST-016-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + InetAddress, InetAddressType, InetAddressIPv6z + FROM INET-ADDRESS-MIB + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest016Mib MODULE-IDENTITY + LAST-UPDATED "200211190000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Internet Address + TC as defined in RFC 3291. + + The libsmi parser is expected to report: +LIBSMI-TEST-016-MIB:186: warning: SEQUENCE element #2 `t4AddrType' does not match order of columnar objects under `t4Entry' +LIBSMI-TEST-016-MIB:90: warning: node `t1Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:126: warning: node `t2Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:162: warning: node `t3Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:207: warning: node `t4AddrType' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:200: warning: node `t4Addr' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:214: warning: node `t4AddrIPv6z' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:207: warning: `InetAddressType' should not be subtyped +LIBSMI-TEST-016-MIB:200: warning: `InetAddress' object should have an accompanied preceding `InetAdressType' object +LIBSMI-TEST-016-MIB:214: warning: `InetAddress' should be used instead of `InetAddressIPv6z' + " + REVISION "200211190000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 16 } + +-- test case 1 + +t1Table OBJECT-TYPE + SYNTAX SEQUENCE OF T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 1 } + +t1Entry OBJECT-TYPE + SYNTAX T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType } + ::= { t1Table 1 } + +T1Entry ::= SEQUENCE { + t1AddrType InetAddressType, + t1Addr InetAddress, + t1Data Integer32 +} + +t1AddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 1 } + +t1Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 2 } + +t1Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t1Entry 3 } + +-- test case 2 + +t2Table OBJECT-TYPE + SYNTAX SEQUENCE OF T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 2 } + +t2Entry OBJECT-TYPE + SYNTAX T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType, t2Addr } + ::= { t2Table 1 } + +T2Entry ::= SEQUENCE { + t2Addr InetAddress, + t2Data Integer32 +} + +t2Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t2Entry 2 } + +t2Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t2Entry 3 } + +-- test case 3 + +t3Table OBJECT-TYPE + SYNTAX SEQUENCE OF T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 3 } + +t3Entry OBJECT-TYPE + SYNTAX T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + AUGMENTS { t1Entry } + ::= { t3Table 1 } + +T3Entry ::= SEQUENCE { + t3Addr InetAddress, + t3Data Integer32 +} + +t3Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t3Entry 2 } + +t3Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t3Entry 3 } + +-- test case 4 + +t4Table OBJECT-TYPE + SYNTAX SEQUENCE OF T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 4 } + +t4Entry OBJECT-TYPE + SYNTAX T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t4Index } + ::= { t4Table 1 } + +T4Entry ::= SEQUENCE { + t4Index Integer32, + t4AddrType InetAddressType, + t4Addr InetAddress, + t4AddrIPv6z InetAddressIPv6z +} + +t4Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t4Entry 1 } + +t4Addr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 2 } + +t4AddrType OBJECT-TYPE + SYNTAX InetAddressType { ipv4(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 3 } + +t4AddrIPv6z OBJECT-TYPE + SYNTAX InetAddressIPv6z + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-017-MIB b/test/mibs/LIBSMI-TEST-017-MIB new file mode 100644 index 0000000..a5b2023 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-017-MIB @@ -0,0 +1,268 @@ +LIBSMI-TEST-017-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TransportAddress, TransportAddressIPv6z, + TransportAddressType, TransportDomain + FROM TRANSPORT-ADDRESS-MIB + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest017Mib MODULE-IDENTITY + LAST-UPDATED "200211190000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Internet Address + TC as defined in RFC 3291. + + The libsmi parser is expected to report: +LIBSMI-TEST-017-MIB:189: warning: SEQUENCE element #2 `t4AddrType' does not match order of columnar objects under `t4Entry' +LIBSMI-TEST-017-MIB:93: warning: node `t1Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:129: warning: node `t2Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:165: warning: node `t3Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:210: warning: node `t4AddrType' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:203: warning: node `t4Addr' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:217: warning: node `t4AddrIPv6z' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:254: warning: node `t5Domain' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:261: warning: node `t5Addr' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:210: warning: `TransportAddressType' should not be subtyped +LIBSMI-TEST-017-MIB:203: warning: `TransportAddress' object should have an accompanied preceding `TransportAdressType' or `TransportDomain' object +LIBSMI-TEST-017-MIB:217: warning: `TransportAddress' should be used instead of `TransportAddressIPv6z' + " + REVISION "200211190000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 17 } + +-- test case 1 + +t1Table OBJECT-TYPE + SYNTAX SEQUENCE OF T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 1 } + +t1Entry OBJECT-TYPE + SYNTAX T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType } + ::= { t1Table 1 } + +T1Entry ::= SEQUENCE { + t1AddrType TransportAddressType, + t1Addr TransportAddress, + t1Data Integer32 +} + +t1AddrType OBJECT-TYPE + SYNTAX TransportAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 1 } + +t1Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 2 } + +t1Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t1Entry 3 } + +-- test case 2 + +t2Table OBJECT-TYPE + SYNTAX SEQUENCE OF T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 2 } + +t2Entry OBJECT-TYPE + SYNTAX T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType, t2Addr } + ::= { t2Table 1 } + +T2Entry ::= SEQUENCE { + t2Addr TransportAddress, + t2Data Integer32 +} + +t2Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t2Entry 2 } + +t2Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t2Entry 3 } + +-- test case 3 + +t3Table OBJECT-TYPE + SYNTAX SEQUENCE OF T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 3 } + +t3Entry OBJECT-TYPE + SYNTAX T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + AUGMENTS { t1Entry } + ::= { t3Table 1 } + +T3Entry ::= SEQUENCE { + t3Addr TransportAddress, + t3Data Integer32 +} + +t3Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t3Entry 2 } + +t3Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t3Entry 3 } + +-- test case 4 + +t4Table OBJECT-TYPE + SYNTAX SEQUENCE OF T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 4 } + +t4Entry OBJECT-TYPE + SYNTAX T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t4Index } + ::= { t4Table 1 } + +T4Entry ::= SEQUENCE { + t4Index Integer32, + t4AddrType TransportAddressType, + t4Addr TransportAddress, + t4AddrIPv6z TransportAddressIPv6z +} + +t4Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t4Entry 1 } + +t4Addr OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 2 } + +t4AddrType OBJECT-TYPE + SYNTAX TransportAddressType { udpIpv4(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 3 } + +t4AddrIPv6z OBJECT-TYPE + SYNTAX TransportAddressIPv6z + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 4 } + +-- test case 5 + +t5Table OBJECT-TYPE + SYNTAX SEQUENCE OF T5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 5 } + +t5Entry OBJECT-TYPE + SYNTAX T5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t5Index } + ::= { t5Table 1 } + +T5Entry ::= SEQUENCE { + t5Index Integer32, + t5Domain TransportDomain, + t5Addr TransportAddress +} + +t5Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t5Entry 1 } + +t5Domain OBJECT-TYPE + SYNTAX TransportDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t5Entry 2 } + +t5Addr OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t5Entry 3 } + +END diff --git a/test/mibs/LIBSMI-TEST-018-MIB b/test/mibs/LIBSMI-TEST-018-MIB new file mode 100644 index 0000000..83e6a8b --- /dev/null +++ b/test/mibs/LIBSMI-TEST-018-MIB @@ -0,0 +1,67 @@ +LIBSMI-TEST-018-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter64 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF + testMib FROM LIBSMI-TEST-MIB; + +libsmiTest018Mib MODULE-IDENTITY + LAST-UPDATED "200605040000Z" + ORGANIZATION + "International University Bremen" + CONTACT-INFO + " Juergen Schoenwaelder + + Postal: International University Bremen + Campus Ring 1 + 28759 Bremen + Germany + + Phone: +49 421 200-3587 + EMail: j.schoenwaelder@iu-bremen.de" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Unsigned64 which + is a base type in SPPI but not in SMIv2. + + The libsmi parser is expected to report: +LIBSMI-TEST-018-MIB:41: warning: definition of identifier `Unsigned64' which is already a SMI or SPPI basetype + " + REVISION "200605040000Z" + DESCRIPTION + "Initial Revision" + ::= { testMib 18 } + +Unsigned64 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "A fake unsigned 64 bit integer." + SYNTAX Counter64 + +t1 OBJECT-TYPE + SYNTAX Unsigned64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "junk" + ::= { libsmiTest018Mib 1 } + +libsmiTest018Group OBJECT-GROUP + OBJECTS { t1 } + STATUS current + DESCRIPTION "junk" + ::= { libsmiTest018Mib 2 } + +libsmiTest018Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest018Group } + ::= { libsmiTest018Mib 3 } + +END diff --git a/test/mibs/LIBSMI-TEST-MIB b/test/mibs/LIBSMI-TEST-MIB new file mode 100644 index 0000000..affdb3c --- /dev/null +++ b/test/mibs/LIBSMI-TEST-MIB @@ -0,0 +1,41 @@ +LIBSMI-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +testMib MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module represents the toplevel module of + a collection of MIB modules to check the capabilities + of MIB parsers. + + Each test module is named LIBSMI-TEST-???-MIB, where ??? + is the test number. Each module's MODULE-IDENTITY + DESCRIPTION describes the expected or suggested behaviour + of MIB parsers when reading that module." + REVISION "200002090000Z" + DESCRIPTION + "Changed the module registration to resolve a conflict." + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { ibr 9 } + +END diff --git a/test/mibs/Makefile.am b/test/mibs/Makefile.am new file mode 100644 index 0000000..1eebf04 --- /dev/null +++ b/test/mibs/Makefile.am @@ -0,0 +1,24 @@ +# +# Makefile.am -- +# +# Template to generate test/mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 3836 2006-05-04 08:29:12Z schoenw $ +# + +EXTRA_DIST = LIBSMI-TEST-MIB \ + LIBSMI-TEST-001-MIB LIBSMI-TEST-002-MIB \ + LIBSMI-TEST-003-MIB LIBSMI-TEST-004-MIB \ + LIBSMI-TEST-005-MIB LIBSMI-TEST-006-MIB \ + LIBSMI-TEST-007-MIB LIBSMI-TEST-008-MIB \ + LIBSMI-TEST-009-MIB LIBSMI-TEST-010-MIB \ + LIBSMI-TEST-011-MIB LIBSMI-TEST-012-MIB \ + LIBSMI-TEST-013-MIB LIBSMI-TEST-014-MIB \ + LIBSMI-TEST-015-MIB LIBSMI-TEST-016-MIB \ + LIBSMI-TEST-017-MIB LIBSMI-TEST-018-MIB + diff --git a/test/mibs/Makefile.in b/test/mibs/Makefile.in new file mode 100644 index 0000000..a5944f3 --- /dev/null +++ b/test/mibs/Makefile.in @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test/mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 3836 2006-05-04 08:29:12Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/mibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = LIBSMI-TEST-MIB \ + LIBSMI-TEST-001-MIB LIBSMI-TEST-002-MIB \ + LIBSMI-TEST-003-MIB LIBSMI-TEST-004-MIB \ + LIBSMI-TEST-005-MIB LIBSMI-TEST-006-MIB \ + LIBSMI-TEST-007-MIB LIBSMI-TEST-008-MIB \ + LIBSMI-TEST-009-MIB LIBSMI-TEST-010-MIB \ + LIBSMI-TEST-011-MIB LIBSMI-TEST-012-MIB \ + LIBSMI-TEST-013-MIB LIBSMI-TEST-014-MIB \ + LIBSMI-TEST-015-MIB LIBSMI-TEST-016-MIB \ + LIBSMI-TEST-017-MIB LIBSMI-TEST-018-MIB + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/mibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/mibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/parser.test b/test/parser.test new file mode 100755 index 0000000..d62ce37 --- /dev/null +++ b/test/parser.test @@ -0,0 +1,29 @@ +#!/bin/sh + +rm -rf parser.out +mkdir parser.out + +abssrcdir=`cd .; pwd` + +RC=0 +SMIPATH=$SMIPATH:$abssrcdir/../mibs/ietf:$abssrcdir/mibs +export SMIPATH + +for n in $abssrcdir/mibs/LIBSMI-TEST-???-MIB ; do + mib=`basename $n` + echo -n "Checking $mib. " + cd parser.out + ../../tools/smilint -c/dev/null -l9 $n 2>&1 | sed -e "s/^.*\/$mib\(.*\)/$mib\1/" > $mib.err + cd .. + cat $abssrcdir/mibs/$mib | grep "^$mib:[0-9]*: " > parser.out/$mib.expect + cmp -s parser.out/$mib.err parser.out/$mib.expect + if [ $? -ne 0 ] ; then + RC=1 + echo "unexpected output. see parser.out directory." + else + WC=`cat parser.out/$mib.err | wc -l` + echo $WC " errors/warnings, ok." + fi +done + +exit ${RC} diff --git a/test/parser.test.in b/test/parser.test.in new file mode 100644 index 0000000..080e6dc --- /dev/null +++ b/test/parser.test.in @@ -0,0 +1,29 @@ +#!@BASH@ + +rm -rf parser.out +mkdir parser.out + +abssrcdir=`cd @srcdir@; pwd` + +RC=0 +SMIPATH=$SMIPATH:$abssrcdir/../mibs/ietf:$abssrcdir/mibs +export SMIPATH + +for n in $abssrcdir/mibs/LIBSMI-TEST-???-MIB ; do + mib=`basename $n` + echo -n "Checking $mib. " + cd parser.out + ../../tools/smilint -c/dev/null -l9 $n 2>&1 | sed -e "s/^.*\/$mib\(.*\)/$mib\1/" > $mib.err + cd .. + cat $abssrcdir/mibs/$mib | grep "^$mib:[0-9]*: " > parser.out/$mib.expect + cmp -s parser.out/$mib.err parser.out/$mib.expect + if [ $? -ne 0 ] ; then + RC=1 + echo "unexpected output. see parser.out directory." + else + WC=`cat parser.out/$mib.err | wc -l` + echo $WC " errors/warnings, ok." + fi +done + +exit ${RC} diff --git a/test/smidiff.test b/test/smidiff.test new file mode 100755 index 0000000..b0c1914 --- /dev/null +++ b/test/smidiff.test @@ -0,0 +1,44 @@ +#!/bin/sh +# +# smidiff.test -- +# +# smidiff test suite. For each file smidiff/.diff file +# an old version smidiff/.old and a new version smidiff/.new +# are compared. If one of the MIB versions is not found in the +# smidiff/ subdirectory it is looked up in the ../mibs/ repository. +# + +SMIPATH=.:../../mibs/ietf:../../mibs/iana:../../mibs/irtf:../../mibs/tubs +export SMIPATH + +RC=0 +FAILED="" +cd smidiff +for diff in *.diff ; do + basename=`echo $diff | sed -e 's/.diff//'` + if [ -f $basename.old ] ; then + oldmib=./$basename.old + else + oldmib=$basename + fi + if [ -f $basename.new ] ; then + newmib=./$basename.new + else + newmib=$basename + fi + echo "checking smidiff results for $basename." + ../../tools/smidiff $oldmib $newmib > $basename.result 2>/dev/null + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' $diff $basename.result > $basename.diffdiff + if [ ! -s $basename.diffdiff ] ; then + rm $basename.diffdiff $basename.result + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smidiff output differs, see smidiff/*.diffdiff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidiff.test.in b/test/smidiff.test.in new file mode 100644 index 0000000..f0afa57 --- /dev/null +++ b/test/smidiff.test.in @@ -0,0 +1,44 @@ +#!/bin/sh +# +# smidiff.test -- +# +# smidiff test suite. For each file smidiff/.diff file +# an old version smidiff/.old and a new version smidiff/.new +# are compared. If one of the MIB versions is not found in the +# smidiff/ subdirectory it is looked up in the ../mibs/ repository. +# + +SMIPATH=.:../../mibs/ietf:../../mibs/iana:../../mibs/irtf:../../mibs/tubs +export SMIPATH + +RC=0 +FAILED="" +cd smidiff +for diff in *.diff ; do + basename=`echo $diff | sed -e 's/.diff//'` + if [ -f $basename.old ] ; then + oldmib=./$basename.old + else + oldmib=$basename + fi + if [ -f $basename.new ] ; then + newmib=./$basename.new + else + newmib=$basename + fi + echo "checking smidiff results for $basename." + ../../tools/smidiff $oldmib $newmib > $basename.result 2>/dev/null + @DIFF@ $diff $basename.result > $basename.diffdiff + if [ ! -s $basename.diffdiff ] ; then + rm $basename.diffdiff $basename.result + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smidiff output differs, see smidiff/*.diffdiff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidiff/DISMAN-SCRIPT-MIB.diff b/test/smidiff/DISMAN-SCRIPT-MIB.diff new file mode 100644 index 0000000..1cb88e3 --- /dev/null +++ b/test/smidiff/DISMAN-SCRIPT-MIB.diff @@ -0,0 +1,79 @@ +../../mibs/ietf/DISMAN-SCRIPT-MIB:17 warning: contact of `DISMAN-SCRIPT-MIB' changed +../../mibs/ietf/DISMAN-SCRIPT-MIB:53 warning: revision `2001-08-21 00:00' added +./DISMAN-SCRIPT-MIB.old:17 info: previous definition of `DISMAN-SCRIPT-MIB' +../../mibs/ietf/DISMAN-SCRIPT-MIB:125 warning: description of object definition `smLangIndex' changed +./DISMAN-SCRIPT-MIB.old:87 info: previous definition of `smLangIndex' +../../mibs/ietf/DISMAN-SCRIPT-MIB:165 warning: description of object definition `smLangVendor' changed +./DISMAN-SCRIPT-MIB.old:126 info: previous definition of `smLangVendor' +../../mibs/ietf/DISMAN-SCRIPT-MIB:264 warning: description of object definition `smExtsnVendor' changed +./DISMAN-SCRIPT-MIB.old:226 info: previous definition of `smExtsnVendor' +../../mibs/ietf/DISMAN-SCRIPT-MIB:353 implicit type for `smScriptName' replaces type `SnmpAdminString' +./DISMAN-SCRIPT-MIB.old:311 info: previous definition of `smScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:354 size of type used in `smScriptName' changed from `(0..255)' to `(1..32)' +../../mibs/ietf/DISMAN-SCRIPT-MIB:381 warning: description of object definition `smScriptLanguage' changed +./DISMAN-SCRIPT-MIB.old:338 info: previous definition of `smScriptLanguage' +../../mibs/ietf/DISMAN-SCRIPT-MIB:400 warning: description of object definition `smScriptSource' changed +./DISMAN-SCRIPT-MIB.old:353 info: previous definition of `smScriptSource' +../../mibs/ietf/DISMAN-SCRIPT-MIB:542 warning: description of object definition `smScriptStorageType' changed +./DISMAN-SCRIPT-MIB.old:492 info: previous definition of `smScriptStorageType' +../../mibs/ietf/DISMAN-SCRIPT-MIB:585 warning: description of object definition `smScriptRowStatus' changed +./DISMAN-SCRIPT-MIB.old:530 info: previous definition of `smScriptRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:700 warning: description of object definition `smCodeRowStatus' changed +./DISMAN-SCRIPT-MIB.old:613 info: previous definition of `smCodeRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:808 default value added to `smLaunchScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:808 warning: description of object definition `smLaunchScriptName' changed +./DISMAN-SCRIPT-MIB.old:716 info: previous definition of `smLaunchScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:898 warning: description of object definition `smLaunchStart' changed +./DISMAN-SCRIPT-MIB.old:802 info: previous definition of `smLaunchStart' +../../mibs/ietf/DISMAN-SCRIPT-MIB:982 warning: description of object definition `smLaunchControl' changed +./DISMAN-SCRIPT-MIB.old:885 info: previous definition of `smLaunchControl' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1014 warning: named number `autostart' added to type used in `smLaunchAdminStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1014 warning: description of object definition `smLaunchAdminStatus' changed +./DISMAN-SCRIPT-MIB.old:911 info: previous definition of `smLaunchAdminStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1040 warning: named number `expired' added to type used in `smLaunchOperStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1040 warning: description of object definition `smLaunchOperStatus' changed +./DISMAN-SCRIPT-MIB.old:926 info: previous definition of `smLaunchOperStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1071 warning: description of object definition `smLaunchRunIndexNext' changed +./DISMAN-SCRIPT-MIB.old:945 info: previous definition of `smLaunchRunIndexNext' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1114 warning: description of object definition `smLaunchRowStatus' changed +./DISMAN-SCRIPT-MIB.old:988 info: previous definition of `smLaunchRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1242 warning: description of object definition `smRunIndex' changed +./DISMAN-SCRIPT-MIB.old:1042 info: previous definition of `smRunIndex' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1289 warning: description of object definition `smRunLifeTime' changed +./DISMAN-SCRIPT-MIB.old:1090 info: previous definition of `smRunLifeTime' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1328 warning: description of object definition `smRunExpireTime' changed +./DISMAN-SCRIPT-MIB.old:1121 info: previous definition of `smRunExpireTime' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1412 warning: description of object definition `smRunControl' changed +./DISMAN-SCRIPT-MIB.old:1205 info: previous definition of `smRunControl' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1453 warning: description of object definition `smRunState' changed +./DISMAN-SCRIPT-MIB.old:1241 info: previous definition of `smRunState' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1494 warning: description of object definition `smRunError' changed +./DISMAN-SCRIPT-MIB.old:1271 info: previous definition of `smRunError' +../../mibs/ietf/DISMAN-SCRIPT-MIB:620 warning: column `smScriptError' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:635 warning: column `smScriptLastChange' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1137 warning: column `smLaunchError' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1149 warning: column `smLaunchLastChange' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1165 warning: column `smLaunchRowExpireTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1507 warning: column `smRunResultTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1519 warning: column `smRunErrorTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1548 warning: description of notification definition `smScriptResult' changed +./DISMAN-SCRIPT-MIB.old:1301 info: previous definition of `smScriptResult' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1562 warning: notification `smScriptException' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1765 warning: legal status change from `current' to `deprecated' for `smScriptGroup' +./DISMAN-SCRIPT-MIB.old:1384 info: previous definition of `smScriptGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1780 warning: legal status change from `current' to `deprecated' for `smLaunchGroup' +./DISMAN-SCRIPT-MIB.old:1411 info: previous definition of `smLaunchGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1796 warning: legal status change from `current' to `deprecated' for `smRunGroup' +./DISMAN-SCRIPT-MIB.old:1436 info: previous definition of `smRunGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1810 warning: legal status change from `current' to `deprecated' for `smNotificationsGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1810 warning: description of notification group definition `smNotificationsGroup' changed +./DISMAN-SCRIPT-MIB.old:1455 info: previous definition of `smNotificationsGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1644 warning: group `smScriptGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1668 warning: group `smLaunchGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1688 warning: group `smRunGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1703 warning: group `smNotificationsGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1719 warning: legal status change from `current' to `deprecated' for `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1719 warning: description of module compliance definition `smCompliance' changed +./DISMAN-SCRIPT-MIB.old:1323 info: previous definition of `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1739 warning: object refinement for `smCodeText' added to `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1583 warning: compliance `smCompliance2' has been added diff --git a/test/smidiff/DISMAN-SCRIPT-MIB.old b/test/smidiff/DISMAN-SCRIPT-MIB.old new file mode 100644 index 0000000..1d6c85b --- /dev/null +++ b/test/smidiff/DISMAN-SCRIPT-MIB.old @@ -0,0 +1,1465 @@ +DISMAN-SCRIPT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + + RowStatus, TimeInterval, DateAndTime, StorageType, DisplayString + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +scriptMIB MODULE-IDENTITY + LAST-UPDATED "9902221800Z" + + + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "David B. Levi + Nortel Networks + 4401 Great America Parkway + Santa Clara, CA 95052-8185 + U.S.A. + Tel: +1 423 686 0432 + E-mail: dlevi@nortelnetworks.com + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + Tel: +49 531 391-3283 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "This MIB module defines a set of objects that allow to + delegate management scripts to distributed managers." + ::= { mib-2 64 } + +-- +-- The groups defined within this MIB module: +-- + +smObjects OBJECT IDENTIFIER ::= { scriptMIB 1 } +smNotifications OBJECT IDENTIFIER ::= { scriptMIB 2 } +smConformance OBJECT IDENTIFIER ::= { scriptMIB 3 } + +-- +-- Script language and language extensions. +-- +-- This group defines tables which list the languages and the +-- language extensions supported by a script MIB implementation. +-- Languages are uniquely identified by object identifier values. +-- + +smLangTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported script languages." + ::= { smObjects 1 } + +smLangEntry OBJECT-TYPE + SYNTAX SmLangEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language." + INDEX { smLangIndex } + ::= { smLangTable 1 } + +SmLangEntry ::= SEQUENCE { + smLangIndex Integer32, + smLangLanguage OBJECT IDENTIFIER, + smLangVersion SnmpAdminString, + smLangVendor OBJECT IDENTIFIER, + smLangRevision SnmpAdminString, + smLangDescr SnmpAdminString +} + +smLangIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. + + Note, the data type and the range of this object must be + consistent with the definition of smScriptLanguage." + ::= { smLangEntry 1 } + +smLangLanguage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language." + ::= { smLangEntry 2 } + +smLangVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language. The zero-length string + shall be used if the language does not have a version + number. + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 3 } + +smLangVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifer which identifies the vendor who + provides the implementation of the language. This object + identifer SHALL point to the object identifier directly + below the enterprise object identifier {1 3 6 1 4 1} + allocated for the vendor. The value must be the object + identifier {0 0} if the vendor is not known." + ::= { smLangEntry 4 } + +smLangRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 5 } + +smLangDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language." + ::= { smLangEntry 6 } + + +smExtsnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported language extensions." + ::= { smObjects 2 } + + +smExtsnEntry OBJECT-TYPE + SYNTAX SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language extension." + INDEX { smLangIndex, smExtsnIndex } + ::= { smExtsnTable 1 } + +SmExtsnEntry ::= SEQUENCE { + smExtsnIndex Integer32, + smExtsnExtension OBJECT IDENTIFIER, + smExtsnVersion SnmpAdminString, + smExtsnVendor OBJECT IDENTIFIER, + smExtsnRevision SnmpAdminString, + smExtsnDescr SnmpAdminString +} + +smExtsnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language extension entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + ::= { smExtsnEntry 1} + +smExtsnExtension OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language + extension." + ::= { smExtsnEntry 2 } + +smExtsnVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language extension. + + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 3 } + +smExtsnVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifer which identifies the vendor who + provides the implementation of the extension. The + object identifer value should point to the OID node + directly below the enterprise OID {1 3 6 1 4 1} + allocated for the vendor. The value must by the object + identifier {0 0} if the vendor is not known." + ::= { smExtsnEntry 4 } + +smExtsnRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the extension implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 5 } + +smExtsnDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language extension." + ::= { smExtsnEntry 6 } + + +-- +-- Scripts known by the Script MIB implementation. +-- +-- This group defines a table which lists all known scripts. +-- Scripts can be added and removed through manipulation of the +-- smScriptTable. +-- + + +smScriptObjects OBJECT IDENTIFIER ::= { smObjects 3 } + +smScriptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes locally known scripts." + ::= { smScriptObjects 1 } + +smScriptEntry OBJECT-TYPE + SYNTAX SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + this script table." + INDEX { smScriptOwner, smScriptName } + ::= { smScriptTable 1 } +SmScriptEntry ::= SEQUENCE { + smScriptOwner SnmpAdminString, + smScriptName SnmpAdminString, + smScriptDescr SnmpAdminString, + smScriptLanguage Integer32, + smScriptSource DisplayString, + smScriptAdminStatus INTEGER, + smScriptOperStatus INTEGER, + smScriptStorageType StorageType, + smScriptRowStatus RowStatus +} + +smScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smScriptTable." + ::= { smScriptEntry 1 } + +smScriptName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + script. This object allows an smScriptOwner to have multiple + entries in the smScriptTable. + + + This value of this object may be used to derive the name + (e.g. a file name) which is used by the Script MIB + implementation to access the script in non-volatile + storage. The details of this mapping are implementation + specific. However, the mapping needs to ensure that scripts + created by different owners with the same script name do not + map to the same name in non-volatile storage." + ::= { smScriptEntry 2 } + +smScriptDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the purpose of the script." + ::= { smScriptEntry 3 } + +smScriptLanguage OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object type identifies an entry in the + smLangTable which is used to execute this script. + The special value 0 may be used by hard-wired scripts + that can not be modified and that are executed by + internal functions. + + Note, the data type and the range of this object must be + consistent with the definition of smLangIndex." + ::= { smScriptEntry 4 } + +smScriptSource OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object either contains a reference to the script + source or an empty string. A reference must be given + in the form of a Uniform Resource Locator (URL) as + defined in RFC 2396. The allowed character sets and the + encoding rules defined in RFC 2396 section 2 apply. + + When the smScriptAdminStatus object is set to `enabled', + the Script MIB implementation will `pull' the script + source from the URL contained in this object if the URL + is not empty. + + + + An empty URL indicates that the script source is loaded + from local storage. The script is read from the smCodeTable + if the value of smScriptStorageType is volatile. Otherwise, + the script is read from non-volatile storage. + + Note: This document does not mandate implementation of any + specific URL scheme. A attempt to load a script from a + nonsupported URL scheme will cause the smScriptOperStatus + to report an `unknownProtocol' error. + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled', `editing', + `retrieving' or `compiling' and will result in an + inconsistentValue error." + DEFVAL { ''H } + ::= { smScriptEntry 5 } +smScriptAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the script. See the definition of smScriptOperStatus for + a description of the values. + + When the smScriptAdminStatus object is set to `enabled' and + the smScriptOperStatus is `disabled' or one of the error + states, the Script MIB implementation will `pull' the script + source from the URL contained in the smScriptSource object + if the URL is not empty." + DEFVAL { disabled } + ::= { smScriptEntry 6 } + +smScriptOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3), + retrieving(4), + compiling(5), + noSuchScript(6), + accessDenied(7), + wrongLanguage(8), + wrongVersion(9), + + + compilationFailed(10), + noResourcesLeft(11), + unknownProtocol(12), + protocolFailure(13), + genericError(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual status of the script in the runtime system. The + value of this object is only meaningful when the value of the + smScriptRowStatus object is `active'. + + The smScriptOperStatus object may have the following values: + - `enabled' indicates that the script is available and can + be started by a launch table entry. + + - `disabled' indicates that the script can not be used. + + - `editing' indicates that the script can be modified in the + smCodeTable. + + - `retrieving' indicates that the script is currently being + loaded from non-volatile storage or a remote system. + + - `compiling' indicates that the script is currently being + compiled by the runtime system. + + - `noSuchScript' indicates that the script does not exist + at the smScriptSource. + + - `accessDenied' indicates that the script can not be loaded + from the smScriptSource due to a lack of permissions. + + - `wrongLanguage' indicates that the script can not be loaded + from the smScriptSource because of a language mismatch. + + - `wrongVersion' indicates that the script can not be loaded + from the smScriptSource because of a language version + mismatch. + + - `compilationFailed' indicates that the compilation failed. + + - `noResourcesLeft' indicates that the runtime system does + not have enough resources to load the script. + + - `unknownProtocol' indicates that the script could not be + loaded from the smScriptSource because the requested + + + protocol is not supported. + + - `protocolFailure' indicates that the script could not be + loaded from the smScriptSource because of a protocol + failure. + + - `genericError' indicates that the script could not be + loaded due to an error condition not listed above. + + The `retrieving' and `compiling' states are transient states + which will either lead to one of the error states or the + `enabled' state. The `disabled' and `editing' states are + administrative states which are only reached by explicit + management operations. + + All launch table entries that refer to this script table + entry shall have an smLaunchOperStatus value of `disabled' + when the value of this object is not `enabled'." + DEFVAL { disabled } + ::= { smScriptEntry 7 } + +smScriptStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row and the script + controlled by this row are kept in volatile storage and + lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + The script controlled by this row is written into local + non-volatile storage if the following condition becomes + true: + + (a) the URL contained in the smScriptSource object is empty + and + (b) the smScriptStorageType is `nonVolatile' + and + (c) the smScriptOperStatus is `enabled' + + Setting this object to `volatile' removes a script from + non-volatile storage if the script controlled by this row + has been in non-volatile storage before. Attempts to set + this object to permanent will always fail with an + inconsistentValue error. + + The value of smScriptStorageType is only meaningful if the + + + value of the corresponding RowStatus object is `active'. + + If smScriptStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smScriptStorageType and + smScriptRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smScriptEntry 8 } + +smScriptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Changing the smScriptRowStatus from `active' to `notInService' + will remove the associated script from the runtime system. + The value of smScriptOperStatus will be reset to `disabled'. + + Deleting conceptual rows from this table includes the + deletion of all resources associated with this row. This + implies that a script stored in non-volatile storage is + removed from non-volatile storage. + + An entry may not exist in the `active' state unless all + required objects in the entry have appropriate values. Rows + that are not complete or not in service are not known by the + script runtime system. + + Attempts to `destroy' a row or to set a row `notInService' + while the script is executing will result in an + inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smScriptStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error." + ::= { smScriptEntry 9 } + + +-- +-- Access to script code via SNMP +-- +-- The smCodeTable allows script code to be read and modified +-- via SNMP. +-- + + +smCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the script code for scripts that are + written via SNMP write operations." + ::= { smScriptObjects 2 } + +smCodeEntry OBJECT-TYPE + SYNTAX SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular fragment of a script." + INDEX { smScriptOwner, smScriptName, smCodeIndex } + ::= { smCodeTable 1 } + +SmCodeEntry ::= SEQUENCE { + smCodeIndex Unsigned32, + smCodeText OCTET STRING, + smCodeRowStatus RowStatus +} + +smCodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value identifying this code fragment." + ::= { smCodeEntry 1 } + +smCodeText OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The code that makes up a fragment of a script. The format + of this code fragment depends on the script language which + is identified by the associated smScriptLanguage object." + ::= { smCodeEntry 2 } + +smCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + + + this table." + ::= { smCodeEntry 3 } + +-- +-- Script execution. +-- +-- This group defines tables which allow script execution to be +-- initiated, suspended, resumed, and terminated. It also provides +-- a mechanism for keeping a history of recent script executions +-- and their results. +-- + +smRunObjects OBJECT IDENTIFIER ::= { smObjects 4 } + +smLaunchTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are ready + to be executed together with their parameters." + ::= { smRunObjects 1 } + +smLaunchEntry OBJECT-TYPE + SYNTAX SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular executable script." + INDEX { smLaunchOwner, smLaunchName } + ::= { smLaunchTable 1 } + +SmLaunchEntry ::= SEQUENCE { + smLaunchOwner SnmpAdminString, + smLaunchName SnmpAdminString, + smLaunchScriptOwner SnmpAdminString, + smLaunchScriptName SnmpAdminString, + smLaunchArgument OCTET STRING, + smLaunchMaxRunning Unsigned32, + smLaunchMaxCompleted Unsigned32, + smLaunchLifeTime TimeInterval, + smLaunchExpireTime TimeInterval, + smLaunchStart Integer32, + smLaunchControl INTEGER, + smLaunchAdminStatus INTEGER, + smLaunchOperStatus INTEGER, + smLaunchRunIndexNext Integer32, + smLaunchStorageType StorageType, + + + smLaunchRowStatus RowStatus +} + +smLaunchOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "The manager who owns this row in the smLaunchTable. Every + instance of a running script started from a particular entry + in the smLaunchTable (i.e. entries in the smRunTable) will be + owned by the same smLaunchOwner used to index the entry in + the smLaunchTable. This owner is not necessarily the same as + the owner of the script itself (smLaunchScriptOwner)." + ::= { smLaunchEntry 1 } + +smLaunchName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + launch table entry. This object allows an smLaunchOwner to + have multiple entries in the smLaunchTable. The smLaunchName + is an arbitrary name that must be different from any other + smLaunchTable entries with the same smLaunchOwner but can be + the same as other entries in the smLaunchTable with different + smLaunchOwner values. Note that the value of smLaunchName + is not related in any way to the name of the script being + launched." + ::= { smLaunchEntry 2 } + +smLaunchScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + smLaunchScriptName identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this object will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 3 } + +smLaunchScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + the smLaunchScriptOwner identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this objects will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 4 } + +smLaunchArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The argument supplied to the script. When a script is + invoked, the value of this object is used to initialize + the smRunArgument object." + DEFVAL { ''H } + ::= { smLaunchEntry 5 } + +smLaunchMaxRunning OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of concurrently running scripts that may + be invoked from this entry in the smLaunchTable. Lowering the + current value of this object does not affect any scripts that + are already executing." + DEFVAL { 1 } + ::= { smLaunchEntry 6 } + +smLaunchMaxCompleted OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of finished scripts invoked from this + entry in the smLaunchTable allowed to be retained in the + smRunTable. Whenever the value of this object is changed + and whenever a script terminates, entries in the smRunTable + are deleted if necessary until the number of completed + scripts is smaller than the value of this object. Scripts + whose smRunEndTime value indicates the oldest completion + time are deleted first." + DEFVAL { 1 } + ::= { smLaunchEntry 7 } + + + +smLaunchLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time a script launched + from this entry may run. The value of this object is used + to initialize the smRunLifeTime object when a script is + launched. Changing the value of an smLaunchLifeTime + instance does not affect scripts previously launched from + this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 8 } + +smLaunchExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time information about a + script launched from this entry is kept in the smRunTable + after the script has completed execution. The value of + this object is used to initialize the smRunExpireTime + object when a script is launched. Changing the value of an + smLaunchExpireTime instance does not affect scripts + previously launched from this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 9 } + +smLaunchStart OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to start the execution of scripts. + When retrieved, the value will be the value of smRunIndex + for the last script that started execution by manipulating + this object. The value will be zero if no script started + execution yet. + + A script is started by setting this object to an unused + smRunIndex value. A new row in the smRunTable will be + created which is indexed by the value supplied by the + set-request in addition to the value of smLaunchOwner and + smLaunchName. An unused value can be obtained by reading + the smLaunchRunIndexNext object. + + + Setting this object to the special value 0 will start + the script with a self-generated smRunIndex value. The + consequence is that the script invoker has no reliable + way to determine the smRunIndex value for this script + invocation and that the invoker has therefore no way + to obtain the results from this script invocation. The + special value 0 is however useful for scheduled script + invocations. + + If this object is set, the following checks must be + performed: + + 1) The value of the smLaunchOperStatus object in this + entry of the smLaunchTable must be `enabled'. + 2) The values of smLaunchScriptOwner and + smLaunchScriptName of this row must identify an + existing entry in the smScriptTable. + 3) The value of smScriptOperStatus of this entry must + be `enabled'. + 4) The principal performing the set operation must have + read access to the script. This must be checked by + calling the isAccessAllowed abstract service interface + defined in RFC 2271 on the row in the smScriptTable + identified by smLaunchScriptOwner and smLaunchScriptName. + The isAccessAllowed abstract service interface must be + called on all columnar objects in the smScriptTable with + a MAX-ACCESS value different than `not-accessible'. The + test fails as soon as a call indicates that access is + not allowed. + 5) If the value provided by the set operation is not 0, + a check must be made that the value is currently not + in use. Otherwise, if the value provided by the set + operation is 0, a suitable unused value must be + generated. + 6) The number of currently executing scripts invoked + from this smLaunchTable entry must be less than + smLaunchMaxRunning. + + Attempts to start a script will fail with an + inconsistentValue error if one of the checks described + above fails. + + Otherwise, if all checks have been passed, a new entry + in the smRunTable will be created indexed by smLaunchOwner, + smLaunchName and the new value for smRunIndex. The value + of smLaunchArgument will be copied into smRunArgument, + the value of smLaunchLifeTime will be copied to + smRunLifeTime, and the value of smLaunchExpireTime + + + will be copied to smRunExpireTime. + + The smRunStartTime will be set to the current time and + the smRunState will be set to `initializing' before the + script execution is initiated in the appropriate runtime + system. + + Note, the data type and the range of this object must + be consistent with the smRunIndex object. Since this + object might be written from the scheduling MIB, the + data type Integer32 rather than Unsigned32 is used." + DEFVAL { 0 } + ::= { smLaunchEntry 10 } + +smLaunchControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to request a state change for all + running scripts in the smRunTable that were started from + this row in the smLaunchTable. + + Setting this object to abort(1), suspend(2) or resume(3) + will set the smRunControl object of all applicable rows + in the smRunTable to abort(1), suspend(2) or resume(3) + respectively. The phrase `applicable rows' means the set of + rows which were created from this entry in the smLaunchTable + and whose value of smRunState allows the corresponding + state change as described in the definition of the + smRunControl object. Setting this object to nop(4) has no + effect." + DEFVAL { nop } + ::= { smLaunchEntry 11 } + +smLaunchAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The value of this object indicates the desired status of + this launch table entry." + DEFVAL { disabled } + ::= { smLaunchEntry 12 } + +smLaunchOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the actual status of + this launch table entry. An `enabled' launch table + entry can be used to start scripts while a `disabled' + launch table entry will refuse any attempts to start + scripts. The value `enabled' requires that the + smLaunchRowStatus object is active. The value + `disabled' requires that there are no entries in the + smRunTable associated with this smLaunchTable entry." + DEFVAL { disabled } + ::= { smLaunchEntry 13 } + +smLaunchRunIndexNext OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable is used for creating rows in the smRunTable. + The value of this variable is a currently unused value + for smRunIndex, which can be written into the smLaunchStart + object associated with this row to launch a script. + + The value returned when reading this variable must be unique + for the smLaunchOwner and smLauchName associated with this + row. Subsequent attempts to read this variable must return + different values. + + This variable will return the special value 0 if no new rows + can be created. + + Note, the data type and the range of this object must be + consistent with the definition of smRunIndex." + ::= { smLaunchEntry 14 } + +smLaunchStorageType OBJECT-TYPE + SYNTAX StorageType + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines if this row is kept in volatile storage + and lost upon reboot or if this row is backed up by stable + storage. + + The value of smLaunchStorageType is only meaningful if the + value of the corresponding RowStatus object is active. + + If smLaunchStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smLaunchStorageType and + smLaunchRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smLaunchEntry 15 } + +smLaunchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Attempts to `destroy' a row or to set a row `notInService' + while scripts started from this launch table entry are + running will result in an inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smLaunchStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error." + ::= { smLaunchEntry 16 } + + +smRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are currently + running or have been running in the past." + ::= { smRunObjects 2 } + +smRunEntry OBJECT-TYPE + SYNTAX SmRunEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry describing a particular running or finished + script." + INDEX { smLaunchOwner, smLaunchName, smRunIndex } + ::= { smRunTable 1 } + +SmRunEntry ::= SEQUENCE { + smRunIndex Integer32, + smRunArgument OCTET STRING, + smRunStartTime DateAndTime, + smRunEndTime DateAndTime, + smRunLifeTime TimeInterval, + smRunExpireTime TimeInterval, + smRunExitCode INTEGER, + smRunResult OCTET STRING, + smRunControl INTEGER, + smRunState INTEGER, + smRunError SnmpAdminString +} + +smRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this running or finished script. This value must be + unique for all rows in the smRunTable with the same + smLaunchOwner and smLaunchName. + + Note, the data type and the range of this object must be + consistent with the definition of smLaunchRunIndexNext + and smLaunchStart." + ::= { smRunEntry 1 } + +smRunArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The argument supplied to the script when it started." + DEFVAL { ''H } + ::= { smRunEntry 2 } + +smRunStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The date and time when the execution started. The value + '0000000000000000'H is returned if the script has not + started yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 3 } + +smRunEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution terminated. The value + '0000000000000000'H is returned if the script has not + terminated yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 4 } + +smRunLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies how long the script can execute. + This object returns the remaining time that the script + may run. The object is initialized with the value of the + associated smLaunchLifeTime object and ticks backwards. + The script is aborted immediately when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the script may run. Setting + this value to 0 will abort script execution immediately, + and, if the value of smRunExpireTime is also 0, will remove + this entry from the smRunTable once it has terminated. + + The value of smRunLifeTime reflects the real-time execution + time as seen by the outside world. The value of this object + will always be 0 for a script that finished execution, that + is smRunState has the value `terminated'. + + The value of smRunLifeTime does not change while a script + is suspended, that is smRunState has the value `suspended'. + Note, this does not affect set operations. It is legal to + modify smRunLifeTime via set operations while a script is + suspended." + ::= { smRunEntry 5 } + + +smRunExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value specifies how long this row can exist in the + smRunTable after the script has terminated. This object + returns the remaining time that the row may exist before it + is aged out. The object is initialized with the value of the + associated smLaunchExpireTime object and ticks backwards. The + entry in the smRunTable is destroyed when the value reaches 0 + and the smRunState has the value `terminated'. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + smRunState has the value `terminated'." + ::= { smRunEntry 6 } + +smRunExitCode OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + halted(2), + lifeTimeExceeded(3), + noResourcesLeft(4), + languageError(5), + runtimeError(6), + invalidArgument(7), + securityViolation(8), + genericError(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the reason why a + script finished execution. The smRunExitCode code may have + one of the following values: + + - `noError', which indicates that the script completed + successfully without errors; + + - `halted', which indicates that the script was halted + by a request from an authorized manager; + + - `lifeTimeExceeded', which indicates that the script + exited because a time limit was exceeded; + + + + - `noResourcesLeft', which indicates that the script + exited because it ran out of resources (e.g. memory); + + - `languageError', which indicates that the script exited + because of a language error (e.g. a syntax error in an + interpreted language); + + - `runtimeError', which indicates that the script exited + due to a runtime error (e.g. a division by zero); + + - `invalidArgument', which indicates that the script could + not be run because of invalid script arguments; + + - `securityViolation', which indicates that the script + exited due to a security violation; + + - `genericError', which indicates that the script exited + for an unspecified reason. + + If the script has not yet begun running, or is currently + running, the value will be `noError'." + DEFVAL { noError } + ::= { smRunEntry 7 } + +smRunResult OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result value produced by the running script. Note that + the result may change while the script is executing." + DEFVAL { ''H } + ::= { smRunEntry 8 } + +smRunControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of the + script execution defined by this row. + + Setting this object to `abort' will abort execution if the + + + value of smRunState is `initializing', `executing', + `suspending', `suspended' or `resuming'. Setting this object + to `abort' when the value of smRunState is `aborting' or + `terminated' will result in an inconsistentValue error. + + Setting this object to `suspend' will suspend execution + if the value of smRunState is `executing'. Setting this + object to `suspend' will cause an inconsistentValue error + if the value of smRunState is not `executing'. + + Setting this object to `resume' will resume execution + if the value of smRunState is `suspending' or + `suspended'. Setting this object to `resume' will cause an + inconsistentValue error if the value of smRunState is + not `suspending' or `suspended'. + + Setting this object to nop(4) has no effect." + DEFVAL { nop } + ::= { smRunEntry 9 } + +smRunState OBJECT-TYPE + SYNTAX INTEGER { + initializing(1), + executing(2), + suspending(3), + suspended(4), + resuming(5), + aborting(6), + terminated(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the script's execution + status. If the script has been invoked but has not yet + begun execution, the value will be `initializing'. If the + script is running, the value will be `executing'. A script + which received a request to suspend execution but which + did not actually suspend execution will be `suspending'. + A script which has suspended execution will be `suspended'. + A script which received a request to resume execution but + which is not yet running is `resuming'. The resuming state + will finally lead to the `executing' state. A script which + received a request to abort execution but which is still + running is `aborting'. A script which stopped execution + is `terminated'." + ::= { smRunEntry 10 } + + + +smRunError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This contains a descriptive error message if the script + terminates in an abnormally. An implementation must store a + descriptive error message in this object if the script exits + with the smRunExitCode `genericError'. + + The value of this object is the zero-length string as long + as the smRunExitCode has the value `noError'" + DEFVAL { ''H } + ::= { smRunEntry 11 } + +-- +-- Notifications. The definition of smTraps makes notification +-- registrations reversible (see STD 58, RFC 2578). +-- + +smTraps OBJECT IDENTIFIER ::= { smNotifications 0 } + +smScriptAbort NOTIFICATION-TYPE + OBJECTS { smRunExitCode, smRunEndTime, smRunError } + STATUS current + DESCRIPTION + "This notification is generated whenever a running script + terminates with an smRunExitCode unequal to `noError'." + ::= { smTraps 1 } + +smScriptResult NOTIFICATION-TYPE + OBJECTS { smRunResult } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about script results. It can be + used to notify managers about a script result. + + This notification is not automatically generated by the + script MIB implementation. It is the responsibility of + the executing script to emit this notification where it + is appropriate to do so." + ::= { smTraps 2 } + +-- conformance information +smCompliances OBJECT IDENTIFIER ::= { smConformance 1 } +smGroups OBJECT IDENTIFIER ::= { smConformance 2 } + + + +-- compliance statements + +smCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the script MIB." + MODULE -- this module + MANDATORY-GROUPS { + smLanguageGroup, smScriptGroup, smLaunchGroup, smRunGroup + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + ::= { smCompliances 1 } + +smLanguageGroup OBJECT-GROUP + OBJECTS { + smLangLanguage, + smLangVersion, + smLangVendor, + smLangRevision, + + + smLangDescr, + smExtsnExtension, + smExtsnVersion, + smExtsnVendor, + smExtsnRevision, + smExtsnDescr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + capabilities of the scripting engine." + ::= { smGroups 1 } + +smScriptGroup OBJECT-GROUP + OBJECTS { + smScriptDescr, + smScriptLanguage, + smScriptSource, + smScriptAdminStatus, + smScriptOperStatus, + smScriptStorageType, + smScriptRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + installed scripts." + ::= { smGroups 2 } + +smCodeGroup OBJECT-GROUP + OBJECTS { + smCodeText, + smCodeRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to download or modify scripts + by using SNMP set requests." + ::= { smGroups 3 } + +smLaunchGroup OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, + smLaunchScriptName, + smLaunchArgument, + smLaunchMaxRunning, + smLaunchMaxCompleted, + smLaunchLifeTime, + + + smLaunchExpireTime, + smLaunchStart, + smLaunchControl, + smLaunchAdminStatus, + smLaunchOperStatus, + smLaunchRunIndexNext, + smLaunchStorageType, + smLaunchRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 4 } + +smRunGroup OBJECT-GROUP + OBJECTS { + smRunArgument, + smRunStartTime, + smRunEndTime, + smRunLifeTime, + smRunExpireTime, + smRunExitCode, + smRunResult, + smRunState, + smRunControl, + smRunError + } + STATUS current + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 5 } + +smNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult + } + STATUS current + DESCRIPTION + "The notifications emitted by the script MIB." + ::= { smGroups 6 } + +END diff --git a/test/smidiff/IF-MIB.diff b/test/smidiff/IF-MIB.diff new file mode 100644 index 0000000..8ca1472 --- /dev/null +++ b/test/smidiff/IF-MIB.diff @@ -0,0 +1,120 @@ +../../mibs/ietf/IF-MIB:16 warning: contact of `IF-MIB' changed +../../mibs/ietf/IF-MIB:35 warning: revision `2000-06-14 00:00' added +../../mibs/ietf/IF-MIB:39 warning: revision `1996-02-28 21:55' added +./IF-MIB.old:18 info: previous definition of `IF-MIB' +../../mibs/ietf/IF-MIB:60 warning: legal status change from `current' to `deprecated' for `OwnerString' +./IF-MIB.old:52 info: previous definition of `OwnerString' +../../mibs/ietf/IF-MIB:79 range `(1..2147483647)' added to type `InterfaceIndex' +../../mibs/ietf/IF-MIB:93 warning: type `InterfaceIndexOrZero' has been added +../../mibs/ietf/IF-MIB:185 range `(1..2147483647)' added to type used in `ifIndex' +../../mibs/ietf/IF-MIB:250 warning: description of object definition `ifPhysAddress' changed +./IF-MIB.old:220 info: previous definition of `ifPhysAddress' +../../mibs/ietf/IF-MIB:285 warning: named number `notPresent' added to type used in `ifOperStatus' +../../mibs/ietf/IF-MIB:285 warning: named number `lowerLayerDown' added to type used in `ifOperStatus' +../../mibs/ietf/IF-MIB:285 warning: description of object definition `ifOperStatus' changed +./IF-MIB.old:253 info: previous definition of `ifOperStatus' +../../mibs/ietf/IF-MIB:327 warning: description of object definition `ifInOctets' changed +./IF-MIB.old:293 info: previous definition of `ifInOctets' +../../mibs/ietf/IF-MIB:343 warning: description of object definition `ifInUcastPkts' changed +./IF-MIB.old:302 info: previous definition of `ifInUcastPkts' +../../mibs/ietf/IF-MIB:358 warning: description of object definition `ifInNUcastPkts' changed +./IF-MIB.old:312 info: previous definition of `ifInNUcastPkts' +../../mibs/ietf/IF-MIB:376 warning: description of object definition `ifInDiscards' changed +./IF-MIB.old:326 info: previous definition of `ifInDiscards' +../../mibs/ietf/IF-MIB:395 warning: description of object definition `ifInErrors' changed +./IF-MIB.old:338 info: previous definition of `ifInErrors' +../../mibs/ietf/IF-MIB:413 warning: description of object definition `ifInUnknownProtos' changed +./IF-MIB.old:352 info: previous definition of `ifInUnknownProtos' +../../mibs/ietf/IF-MIB:435 warning: description of object definition `ifOutOctets' changed +./IF-MIB.old:370 info: previous definition of `ifOutOctets' +../../mibs/ietf/IF-MIB:449 warning: description of object definition `ifOutUcastPkts' changed +./IF-MIB.old:379 info: previous definition of `ifOutUcastPkts' +../../mibs/ietf/IF-MIB:465 warning: description of object definition `ifOutNUcastPkts' changed +./IF-MIB.old:392 info: previous definition of `ifOutNUcastPkts' +../../mibs/ietf/IF-MIB:485 warning: description of object definition `ifOutDiscards' changed +./IF-MIB.old:407 info: previous definition of `ifOutDiscards' +../../mibs/ietf/IF-MIB:501 warning: description of object definition `ifOutErrors' changed +./IF-MIB.old:420 info: previous definition of `ifOutErrors' +../../mibs/ietf/IF-MIB:526 warning: description of object definition `ifSpecific' changed +./IF-MIB.old:440 info: previous definition of `ifSpecific' +../../mibs/ietf/IF-MIB:599 warning: description of object definition `ifName' changed +./IF-MIB.old:509 info: previous definition of `ifName' +../../mibs/ietf/IF-MIB:621 warning: description of object definition `ifInMulticastPkts' changed +./IF-MIB.old:530 info: previous definition of `ifInMulticastPkts' +../../mibs/ietf/IF-MIB:639 warning: description of object definition `ifInBroadcastPkts' changed +./IF-MIB.old:542 info: previous definition of `ifInBroadcastPkts' +../../mibs/ietf/IF-MIB:654 warning: description of object definition `ifOutMulticastPkts' changed +./IF-MIB.old:552 info: previous definition of `ifOutMulticastPkts' +../../mibs/ietf/IF-MIB:671 warning: description of object definition `ifOutBroadcastPkts' changed +./IF-MIB.old:565 info: previous definition of `ifOutBroadcastPkts' +../../mibs/ietf/IF-MIB:697 warning: description of object definition `ifHCInOctets' changed +./IF-MIB.old:587 info: previous definition of `ifHCInOctets' +../../mibs/ietf/IF-MIB:712 warning: description of object definition `ifHCInUcastPkts' changed +./IF-MIB.old:597 info: previous definition of `ifHCInUcastPkts' +../../mibs/ietf/IF-MIB:728 warning: description of object definition `ifHCInMulticastPkts' changed +./IF-MIB.old:608 info: previous definition of `ifHCInMulticastPkts' +../../mibs/ietf/IF-MIB:747 warning: description of object definition `ifHCInBroadcastPkts' changed +./IF-MIB.old:623 info: previous definition of `ifHCInBroadcastPkts' +../../mibs/ietf/IF-MIB:763 warning: description of object definition `ifHCOutOctets' changed +./IF-MIB.old:634 info: previous definition of `ifHCOutOctets' +../../mibs/ietf/IF-MIB:778 warning: description of object definition `ifHCOutUcastPkts' changed +./IF-MIB.old:644 info: previous definition of `ifHCOutUcastPkts' +../../mibs/ietf/IF-MIB:797 warning: description of object definition `ifHCOutMulticastPkts' changed +./IF-MIB.old:657 info: previous definition of `ifHCOutMulticastPkts' +../../mibs/ietf/IF-MIB:815 warning: description of object definition `ifHCOutBroadcastPkts' changed +./IF-MIB.old:673 info: previous definition of `ifHCOutBroadcastPkts' +../../mibs/ietf/IF-MIB:947 warning: description of object definition `ifStackTable' changed +./IF-MIB.old:752 info: previous definition of `ifStackTable' +../../mibs/ietf/IF-MIB:1002 range `(0..2147483647)' added to type used in `ifStackHigherLayer' +../../mibs/ietf/IF-MIB:1015 range `(0..2147483647)' added to type used in `ifStackLowerLayer' +../../mibs/ietf/IF-MIB:1440 warning: legal status change from `current' to `deprecated' for `ifTestTable' +./IF-MIB.old:846 info: previous definition of `ifTestTable' +../../mibs/ietf/IF-MIB:1572 warning: legal status change from `current' to `deprecated' for `ifTestEntry' +./IF-MIB.old:984 info: previous definition of `ifTestEntry' +../../mibs/ietf/IF-MIB:1594 warning: legal status change from `current' to `deprecated' for `ifTestId' +./IF-MIB.old:1004 info: previous definition of `ifTestId' +../../mibs/ietf/IF-MIB:1603 warning: legal status change from `current' to `deprecated' for `ifTestStatus' +./IF-MIB.old:1013 info: previous definition of `ifTestStatus' +../../mibs/ietf/IF-MIB:1616 warning: legal status change from `current' to `deprecated' for `ifTestType' +./IF-MIB.old:1029 info: previous definition of `ifTestType' +../../mibs/ietf/IF-MIB:1644 warning: legal status change from `current' to `deprecated' for `ifTestResult' +./IF-MIB.old:1058 info: previous definition of `ifTestResult' +../../mibs/ietf/IF-MIB:1665 warning: legal status change from `current' to `deprecated' for `ifTestCode' +../../mibs/ietf/IF-MIB:1665 warning: description of object definition `ifTestCode' changed +./IF-MIB.old:1081 info: previous definition of `ifTestCode' +../../mibs/ietf/IF-MIB:1685 warning: legal status change from `current' to `deprecated' for `ifTestOwner' +./IF-MIB.old:1101 info: previous definition of `ifTestOwner' +../../mibs/ietf/IF-MIB:1070 warning: description of object definition `ifRcvAddressTable' changed +./IF-MIB.old:1123 info: previous definition of `ifRcvAddressTable' +../../mibs/ietf/IF-MIB:1112 warning: access of `ifRcvAddressAddress' changed from `read-write' to `not-accessible' +./IF-MIB.old:1163 info: previous definition of `ifRcvAddressAddress' +../../mibs/ietf/IF-MIB:892 warning: column `ifAlias' has been added +../../mibs/ietf/IF-MIB:924 warning: column `ifCounterDiscontinuityTime' has been added +../../mibs/ietf/IF-MIB:117 warning: scalar `ifTableLastChange' has been added +../../mibs/ietf/IF-MIB:1045 warning: scalar `ifStackLastChange' has been added +../../mibs/ietf/IF-MIB:1157 warning: description of notification definition `linkDown' changed +./IF-MIB.old:1211 info: previous definition of `linkDown' +../../mibs/ietf/IF-MIB:1169 warning: description of notification definition `linkUp' changed +./IF-MIB.old:1223 info: previous definition of `linkUp' +../../mibs/ietf/IF-MIB:1697 warning: legal status change from `current' to `deprecated' for `ifGeneralGroup' +../../mibs/ietf/IF-MIB:1697 warning: description of object group definition `ifGeneralGroup' changed +./IF-MIB.old:1326 info: previous definition of `ifGeneralGroup' +../../mibs/ietf/IF-MIB:1315 warning: description of object group definition `ifFixedLengthGroup' changed +./IF-MIB.old:1340 info: previous definition of `ifFixedLengthGroup' +../../mibs/ietf/IF-MIB:1340 warning: description of object group definition `ifPacketGroup' changed +./IF-MIB.old:1364 info: previous definition of `ifPacketGroup' +../../mibs/ietf/IF-MIB:1709 warning: legal status change from `current' to `deprecated' for `ifTestGroup' +./IF-MIB.old:1428 info: previous definition of `ifTestGroup' +../../mibs/ietf/IF-MIB:1719 warning: legal status change from `current' to `deprecated' for `ifStackGroup' +../../mibs/ietf/IF-MIB:1719 warning: description of object group definition `ifStackGroup' changed +./IF-MIB.old:1437 info: previous definition of `ifStackGroup' +../../mibs/ietf/IF-MIB:1300 warning: group `ifGeneralInformationGroup' has been added +../../mibs/ietf/IF-MIB:1402 warning: group `ifStackGroup2' has been added +../../mibs/ietf/IF-MIB:1728 warning: group `ifOldObjectsGroup' has been added +../../mibs/ietf/IF-MIB:1410 warning: group `ifCounterDiscontinuityGroup' has been added +../../mibs/ietf/IF-MIB:1418 warning: group `linkUpDownNotificationsGroup' has been added +../../mibs/ietf/IF-MIB:1741 warning: legal status change from `current' to `deprecated' for `ifCompliance' +../../mibs/ietf/IF-MIB:1741 warning: description of module compliance definition `ifCompliance' changed +./IF-MIB.old:1244 info: previous definition of `ifCompliance' +../../mibs/ietf/IF-MIB:1820 warning: compliance `ifCompliance2' has been added +../../mibs/ietf/IF-MIB:1193 warning: compliance `ifCompliance3' has been added diff --git a/test/smidiff/IF-MIB.old b/test/smidiff/IF-MIB.old new file mode 100644 index 0000000..1f4b734 --- /dev/null +++ b/test/smidiff/IF-MIB.old @@ -0,0 +1,1445 @@ +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Integer32, TimeTicks, + Counter64, mib-2, -- added for libsmi use. + NOTIFICATION-TYPE FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, + PhysAddress, TruthValue, RowStatus, + AutonomousType, TestAndIncr FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + IANAifType FROM IANAifType-MIB + -- interfaces FROM RFC1213-MIB; + -- changed to local node definition for libsmi use. + snmpTraps FROM SNMPv2-MIB; + -- added for libsmi use. + +ifMIB MODULE-IDENTITY + LAST-UPDATED "9311082155Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + + " Keith McCloghrie + + Postal: Hughes LAN Systems + 1225 Charleston Road, Mountain View, CA 94043 + + Tel: +1 415 966 7934 + E-Mail: kzm@hls.com + + + Frank Kastenholz + + Postal: FTP Software + 2 High Street, North Andover, MA 01845 + + Tel: +1 508 685 4000 + E-Mail: kasten@ftp.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." + ::= { mib-2 31 } + +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } + +ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 } + +-- OwnerString has the same semantics as used in RFC 1271 + +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 + +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 } + + +-- 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. + The interface's media-specific MIB must define the bit + and byte ordering and format of the value contained by + 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) + } + 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 + incomming connection); it should remain in the down(2) + state if and only if there is a fault that prevents if + from going to the up(1) state." + ::= { 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." + ::= { 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." + ::= { 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. + 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." + ::= { 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." + ::= { 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 which + 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 which does not support + protocol multiplexing, this counter will always be 0." + ::= { 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." + ::= { 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." + ::= { 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. + + 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." + ::= { 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." + ::= { 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 + 1443. 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 + } + + +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. If there is no local name, or this object is + otherwise not applicable, then this object contains a + 0-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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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." + ::= { 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 } + + +-- 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. Each + sub-layer corresponds to a conceptual row in the + ifTable." + ::= { 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-write + 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 } + + +-- +-- 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 current + 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 current + 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 current + 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 current + 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 current + 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 current + 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 current + 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 + 1443. 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 current + DESCRIPTION + "The entity which currently has the 'ownership' + required to invoke a test on this interface." + ::= { ifTestEntry 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." + ::= { 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 read-create + 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-write + 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 transition into the down state." + ::= { snmpTraps 3 } + +linkUp NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkUp trap signifies that the SNMPv2 entity, + acting in an agent role, has detected that the + ifOperStatus object for one of its communication links + has transitioned out of the down state." + ::= { snmpTraps 4 } + + +-- conformance information + +ifConformance OBJECT IDENTIFIER ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER ::= { ifConformance 1 } +ifCompliances OBJECT IDENTIFIER ::= { ifConformance 2 } + + +-- compliance statements + +ifCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The 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 } + + +-- units of conformance + +ifGeneralGroup OBJECT-GROUP + OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all network interfaces." + ::= { ifGroups 1 } + +-- 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, character-oriented or + fixed-length-transmission network interfaces. (Non- + high speed interfaces transmit and receive at speeds + less than or equal to 20,000,000 bits/second.)" + ::= { 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, packet-oriented network + interfaces. (Non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second.)" + ::= { 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 } + +ifTestGroup OBJECT-GROUP + OBJECTS { ifTestId, ifTestStatus, ifTestType, + ifTestResult, ifTestCode, ifTestOwner } + STATUS current + DESCRIPTION + "A collection of objects providing the ability to + invoke tests on an interface." + ::= { ifGroups 8 } + +ifStackGroup OBJECT-GROUP + OBJECTS { ifStackStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 9 } + +END diff --git a/test/smidiff/INET-ADDRESS-MIB.diff b/test/smidiff/INET-ADDRESS-MIB.diff new file mode 100644 index 0000000..dda0437 --- /dev/null +++ b/test/smidiff/INET-ADDRESS-MIB.diff @@ -0,0 +1,27 @@ +../../mibs/ietf/INET-ADDRESS-MIB:7 warning: contact of `INET-ADDRESS-MIB' changed +../../mibs/ietf/INET-ADDRESS-MIB:7 warning: description of module identity definition `INET-ADDRESS-MIB' changed +../../mibs/ietf/INET-ADDRESS-MIB:33 warning: revision `2005-02-04 00:00' added +../../mibs/ietf/INET-ADDRESS-MIB:38 warning: revision `2002-05-09 00:00' added +./INET-ADDRESS-MIB.old:9 info: previous definition of `INET-ADDRESS-MIB' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: named number `ipv4z' added to type `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: named number `ipv6z' added to type `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: description of textual convention definition `InetAddressType' changed +./INET-ADDRESS-MIB.old:61 info: previous definition of `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:113 warning: description of textual convention definition `InetAddress' changed +./INET-ADDRESS-MIB.old:101 info: previous definition of `InetAddress' +../../mibs/ietf/INET-ADDRESS-MIB:143 warning: description of textual convention definition `InetAddressIPv4' changed +./INET-ADDRESS-MIB.old:123 info: previous definition of `InetAddressIPv4' +../../mibs/ietf/INET-ADDRESS-MIB:163 size of type `InetAddressIPv6' changed from `(16|20)' to `(16)' +../../mibs/ietf/INET-ADDRESS-MIB:163 warning: format of `InetAddressIPv6' changed +../../mibs/ietf/INET-ADDRESS-MIB:163 warning: description of textual convention definition `InetAddressIPv6' changed +./INET-ADDRESS-MIB.old:135 info: previous definition of `InetAddressIPv6' +../../mibs/ietf/INET-ADDRESS-MIB:233 warning: description of textual convention definition `InetAddressDNS' changed +./INET-ADDRESS-MIB.old:173 info: previous definition of `InetAddressDNS' +../../mibs/ietf/INET-ADDRESS-MIB:180 warning: type `InetAddressIPv4z' has been added +../../mibs/ietf/INET-ADDRESS-MIB:208 warning: type `InetAddressIPv6z' has been added +../../mibs/ietf/INET-ADDRESS-MIB:260 warning: type `InetAddressPrefixLength' has been added +../../mibs/ietf/INET-ADDRESS-MIB:297 warning: type `InetPortNumber' has been added +../../mibs/ietf/INET-ADDRESS-MIB:317 warning: type `InetAutonomousSystemNumber' has been added +../../mibs/ietf/INET-ADDRESS-MIB:338 warning: type `InetScopeType' has been added +../../mibs/ietf/INET-ADDRESS-MIB:374 warning: type `InetZoneIndex' has been added +../../mibs/ietf/INET-ADDRESS-MIB:397 warning: type `InetVersion' has been added diff --git a/test/smidiff/INET-ADDRESS-MIB.old b/test/smidiff/INET-ADDRESS-MIB.old new file mode 100644 index 0000000..d347d18 --- /dev/null +++ b/test/smidiff/INET-ADDRESS-MIB.old @@ -0,0 +1,188 @@ +INET-ADDRESS-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + +inetAddressMIB MODULE-IDENTITY + LAST-UPDATED "200006080000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Mike Daniele + Compaq Computer Corporation + 110 Spit Brook Rd + Nashua, NH 03062, USA + + Phone: +1 603 884-1423 + EMail: daniele@zk3.dec.com + + Brian Haberman + Nortel Networks + 4039 Emperor Blvd., Suite 200 + Durham, NC 27703, USA + + Phone: +1 919 992-4439 + EMail: haberman@nortelnetworks.com + + Shawn A. Routhier + Wind River Systems, Inc. + 1 Tara Blvd, Suite 403 + Nashua, NH 03062, USA + + Phone: +1 603 897-2000 + EMail: sar@epilogue.com + + + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig, Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + Send comments to mibs@ops.ietf.org." + +DESCRIPTION + "This MIB module defines textual conventions for + representing Internet addresses. An Internet + address can be an IPv4 address, an IPv6 address + or a DNS domain name." + +REVISION "200006080000Z" +DESCRIPTION + "Initial version, published as RFC 2851." +::= { mib-2 76 } + +InetAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of Internet address. + + unknown(0) An unknown address type. This value MUST + be used if the value of the corresponding + InetAddress object is a zero-length string. + It may also be used to indicate an IP address + which is not in one of the formats defined + below. + + ipv4(1) An IPv4 address as defined by the + InetAddressIPv4 textual convention. + + ipv6(2) An IPv6 address as defined by the + InetAddressIPv6 textual convention. + + dns(16) A DNS domain name as defined by the + InetAddressDNS textual convention. + + Each definition of a concrete InetAddressType value must be + accompanied by a definition of a textual convention for use + with that InetAddressType. + + The InetAddressType textual convention SHOULD NOT be subtyped + in object type definitions to support future extensions. It + + + + MAY be subtyped in compliance statements in order to require + only a subset of these address types for a compliant + implementation." + SYNTAX INTEGER { + unknown(0), + ipv4(1), -- these named numbers are aligned + ipv6(2), -- with AddressFamilyNumbers from + dns(16) -- IANA-ADDRESS-FAMILY-NUMBERS-MIB + } + +InetAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Internet address. + + An InetAddress value is always interpreted within the + context of an InetAddressType value. The InetAddressType + object which defines the context must be registered + immediately before the object which uses the InetAddress + textual convention. In other words, the object identifiers + for the InetAddressType object and the InetAddress object + MUST have the same length and the last sub-identifier of + the InetAddressType object MUST be 1 less than the last + sub-identifier of the InetAddress object. + + When this textual convention is used as the syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (0..255)) + +InetAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents an IPv4 network address: + + octets contents encoding + 1-4 IP address network-byte order + + The corresponding InetAddressType value is ipv4(1)." + SYNTAX OCTET STRING (SIZE (4)) + +InetAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x%4d" + STATUS current + DESCRIPTION + + + + "Represents an IPv6 network address: + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-20 scope identifier network-byte order + + The corresponding InetAddressType value is ipv6(2). + + The scope identifier (bytes 17-20) MUST NOT be present + for global IPv6 addresses. For non-global IPv6 addresses + (e.g. link-local or site-local addresses), the scope + identifier MUST always be present. It contains a link + identifier for link-local and a site identifier for + site-local IPv6 addresses. + + The scope identifier MUST disambiguate identical address + values. For link-local addresses, the scope identifier will + typically be the interface index (ifIndex as defined in the + IF-MIB, RFC 2233) of the interface on which the address is + configured. + + The scope identifier may contain the special value 0 + which refers to the default scope. The default scope + may be used in cases where the valid scope identifier + is not known (e.g., a management application needs to + write a site-local InetAddressIPv6 address without + knowing the site identifier value). The default scope + SHOULD NOT be used as an easy way out in cases where + the scope identifier for a non-global IPv6 is known." + SYNTAX OCTET STRING (SIZE (16|20)) + +InetAddressDNS ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "Represents a DNS domain name. The name SHOULD be + fully qualified whenever possible. + + The corresponding InetAddressType is dns(16). + + The DESCRIPTION clause of InetAddress objects that + may have InetAddressDNS values must fully describe + how (and when) such names are to be resolved to IP + addresses." + SYNTAX OCTET STRING (SIZE (1..255)) + +END diff --git a/test/smidiff/Makefile.am b/test/smidiff/Makefile.am new file mode 100644 index 0000000..d51d200 --- /dev/null +++ b/test/smidiff/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1433 2002-07-24 11:54:24Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/smidiff/Makefile.in b/test/smidiff/Makefile.in new file mode 100644 index 0000000..0d6cf9c --- /dev/null +++ b/test/smidiff/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1433 2002-07-24 11:54:24Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/smidiff +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/smidiff/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/smidiff/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/smidiff/Printer-MIB.diff b/test/smidiff/Printer-MIB.diff new file mode 100644 index 0000000..c23c064 --- /dev/null +++ b/test/smidiff/Printer-MIB.diff @@ -0,0 +1,1236 @@ +./Printer-MIB.new:11 warning: organization of `Printer-MIB' changed +./Printer-MIB.new:11 warning: contact of `Printer-MIB' changed +./Printer-MIB.new:11 warning: description of module identity definition `Printer-MIB' changed +../../mibs/ietf/Printer-MIB:47 revision `2004-06-02 00:00' removed +./Printer-MIB.new:22 warning: revision `2001-08-30 00:00' added +../../mibs/ietf/Printer-MIB:20 info: previous definition of `Printer-MIB' +../../mibs/ietf/Printer-MIB:140 type `MediaUnit' has been deleted +../../mibs/ietf/Printer-MIB:168 type `CapacityUnit' has been deleted +../../mibs/ietf/Printer-MIB:239 type `SubUnitStatus' has been deleted +../../mibs/ietf/Printer-MIB:291 type `PrtLocalizedDescriptionStringTC' has been deleted +../../mibs/ietf/Printer-MIB:300 type `PrtConsoleDescriptionStringTC' has been deleted +./Printer-MIB.new:159 status change from `deprecated' to `current' for `CodedCharSet' +./Printer-MIB.new:159 warning: description of textual convention definition `CodedCharSet' changed +../../mibs/ietf/Printer-MIB:309 info: previous definition of `CodedCharSet' +./Printer-MIB.new:90 warning: type `PrtCoverStatusTC' has been added +./Printer-MIB.new:201 warning: type `LocalizedDescriptionStringTC' has been added +./Printer-MIB.new:209 warning: type `ConsoleDescriptionStringTC' has been added +./Printer-MIB.new:221 warning: type `PrtGeneralResetTC' has been added +./Printer-MIB.new:259 warning: type `PrtChannelTypeTC' has been added +./Printer-MIB.new:683 warning: type `PrtInterpreterLangFamilyTC' has been added +./Printer-MIB.new:941 warning: type `PrtInputTypeTC' has been added +./Printer-MIB.new:958 warning: type `PrtOutputTypeTC' has been added +./Printer-MIB.new:1009 warning: type `PrtMarkerMarkTechTC' has been added +./Printer-MIB.new:1070 warning: type `PrtMarkerSuppliesTypeTC' has been added +./Printer-MIB.new:1196 warning: type `PrtMediaPathTypeTC' has been added +./Printer-MIB.new:1229 warning: type `PrtConsoleColorTC' has been added +./Printer-MIB.new:1247 warning: type `PrtConsoleDisableTC' has been added +./Printer-MIB.new:1288 warning: type `PrtAlertTrainingLevelTC' has been added +./Printer-MIB.new:1333 warning: type `PrtAlertGroupTC' has been added +./Printer-MIB.new:1380 warning: type `PrtAlertCodeTC' has been added +../../mibs/ietf/Printer-MIB:4586 node `prtMIB2Groups' has been deleted +./Printer-MIB.new:1616 warning: description of object definition `prtGeneralEntry' changed +../../mibs/ietf/Printer-MIB:552 info: previous definition of `prtGeneralEntry' +./Printer-MIB.new:1662 warning: description of object definition `prtGeneralConfigChanges' changed +../../mibs/ietf/Printer-MIB:604 info: previous definition of `prtGeneralConfigChanges' +./Printer-MIB.new:1697 warning: description of object definition `prtGeneralCurrentLocalization' changed +../../mibs/ietf/Printer-MIB:645 info: previous definition of `prtGeneralCurrentLocalization' +./Printer-MIB.new:1735 warning: description of object definition `prtGeneralCurrentOperator' changed +../../mibs/ietf/Printer-MIB:686 info: previous definition of `prtGeneralCurrentOperator' +./Printer-MIB.new:1757 warning: description of object definition `prtGeneralServicePerson' changed +../../mibs/ietf/Printer-MIB:711 info: previous definition of `prtGeneralServicePerson' +./Printer-MIB.new:1785 warning: type `Integer32' replaces implicit type for `prtInputDefaultIndex' +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1785 range `(1..65535)' removed from type used in `prtInputDefaultIndex' +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1785 warning: description of object definition `prtInputDefaultIndex' changed +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1802 warning: type `Integer32' replaces implicit type for `prtOutputDefaultIndex' +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1802 range `(1..65535)' removed from type used in `prtOutputDefaultIndex' +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1802 warning: description of object definition `prtOutputDefaultIndex' changed +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1845 warning: description of object definition `prtConsoleLocalization' changed +../../mibs/ietf/Printer-MIB:795 info: previous definition of `prtConsoleLocalization' +./Printer-MIB.new:1880 warning: named number `enabled' changed to `operatorConsoleEnabled' at type used in `prtConsoleDisable' +./Printer-MIB.new:1880 warning: named number `disabled' changed to `operatorConsoleDisabled' at type used in `prtConsoleDisable' +./Printer-MIB.new:1880 warning: description of object definition `prtConsoleDisable' changed +../../mibs/ietf/Printer-MIB:835 info: previous definition of `prtConsoleDisable' +./Printer-MIB.new:2129 warning: description of object definition `prtStorageRefTable' changed +../../mibs/ietf/Printer-MIB:1117 info: previous definition of `prtStorageRefTable' +./Printer-MIB.new:2137 warning: description of object definition `prtStorageRefEntry' changed +../../mibs/ietf/Printer-MIB:1129 info: previous definition of `prtStorageRefEntry' +./Printer-MIB.new:2154 range of type used in `prtStorageRefSeqNumber' changed from `(1..65535)' to `(0..65535)' +./Printer-MIB.new:2165 range of type used in `prtStorageRefIndex' changed from `(0..2147483647)' to `(0..65535)' +./Printer-MIB.new:2174 warning: description of object definition `prtDeviceRefTable' changed +../../mibs/ietf/Printer-MIB:1176 info: previous definition of `prtDeviceRefTable' +./Printer-MIB.new:2182 warning: description of object definition `prtDeviceRefEntry' changed +../../mibs/ietf/Printer-MIB:1191 info: previous definition of `prtDeviceRefEntry' +./Printer-MIB.new:2199 range of type used in `prtDeviceRefSeqNumber' changed from `(1..65535)' to `(0..65535)' +./Printer-MIB.new:2210 range of type used in `prtDeviceRefIndex' changed from `(0..2147483647)' to `(0..65535)' +./Printer-MIB.new:1993 warning: description of object definition `prtCoverEntry' changed +../../mibs/ietf/Printer-MIB:955 info: previous definition of `prtCoverEntry' +./Printer-MIB.new:2010 warning: description of object definition `prtCoverIndex' changed +../../mibs/ietf/Printer-MIB:975 info: previous definition of `prtCoverIndex' +./Printer-MIB.new:2031 named number `unknown' removed from type used in `prtCoverStatus' +./Printer-MIB.new:2060 warning: description of object definition `prtLocalizationEntry' changed +../../mibs/ietf/Printer-MIB:1042 info: previous definition of `prtLocalizationEntry' +./Printer-MIB.new:2078 warning: description of object definition `prtLocalizationIndex' changed +../../mibs/ietf/Printer-MIB:1063 info: previous definition of `prtLocalizationIndex' +./Printer-MIB.new:2092 size of type used in `prtLocalizationLanguage' changed from `(2)' to `(0..2)' +./Printer-MIB.new:2091 warning: description of object definition `prtLocalizationLanguage' changed +../../mibs/ietf/Printer-MIB:1078 info: previous definition of `prtLocalizationLanguage' +./Printer-MIB.new:2101 size of type used in `prtLocalizationCountry' changed from `(2)' to `(0..2)' +./Printer-MIB.new:2110 named number `unknown' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csASCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin3' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin4' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinCyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinArabic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinGreek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinHebrew' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin6' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOTextComm' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHalfWidthKatakana' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csJISEncoding' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csShiftJIS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCPkdFmtJapanese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCFixWidJapanese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO4UnitedKingdom' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO11SwedishForNames' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO15Italian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO17Spanish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO21German' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO60DanishNorwegian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO69French' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10646UTF1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO646basic1983' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csINVARIANT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2IntlRefVersion' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSSEFI' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSSEFIADD' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSDANO' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSDANOADD' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10Swedish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKSC56011987' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022KR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCKR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022JP' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022JP2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO13JISC6220jp' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO14JISC6220ro' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO16Portuguese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO18Greek7Old' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO19LatinGreek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO25French' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO27LatinGreek1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO5427Cyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO42JISC62261978' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO47BSViewdata' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO49INIS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO50INIS8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO51INISCyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO54271981' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO5428Greek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO57GB1988' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO58GB231280' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO61Norwegian2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO70VideotexSupp1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO84Portuguese2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO85Spanish2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO86Hungarian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO87JISX0208' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88Greek7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO89ASMO449' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO90' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO91JISC62291984a' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO92JISC62991984b' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO93JIS62291984badd' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO94JIS62291984hand' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO95JIS62291984handadd' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO96JISC62291984kana' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2033' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO99NAPLPS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO102T617bit' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO103T618bit' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO111ECMACyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csa71' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csa72' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO123CSAZ24341985gr' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88596E' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88596I' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO128T101G2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88598E' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88598I' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO139CSN369103' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO141JUSIB1002' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO143IECP271' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO146Serbian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO147Macedonian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO150' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO151Cuba' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO6937Add' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO153GOST1976874' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO8859Supp' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10367Box' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO158Lap' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO159JISX02121990' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO646Danish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUSDK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csDKUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKSC5636' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode11UTF7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022CN' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022CNEXT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885913' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885914' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885915' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885916' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGBK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGB18030' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF0415' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF03IRV' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF041' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO115481' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKZ1048' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUCS4' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeASCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeLatin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1261' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1268' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1276' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1264' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1265' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode11' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csSCSU' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16BE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16LE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csCESU8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32BE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32LE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBOCU1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows30Latin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPRoman8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csAdobeStandardEncoding' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaInternational' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csDECMCS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC850Multilingual' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPCp852' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8CodePage437' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8DanishNorwegian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC862LatinHebrew' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8Turkish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMSymbols' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMThai' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPLegal' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPPiFont' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPMath8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPPSMath' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPDesktop' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaMath' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMicrosoftPublishing' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31J' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGB2312' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBig5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMacintosh' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM037' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM038' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM273' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM274' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM275' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM277' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM278' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM280' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM281' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM284' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM285' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM290' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM297' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM420' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM423' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM424' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM500' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM851' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM855' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM857' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM860' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM861' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM863' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM864' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM865' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM868' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM869' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM870' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM871' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM880' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM891' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM903' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBBM904' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM905' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM918' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM1026' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMEBCDICATDE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICATDEA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICCAFR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICDKNO' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICDKNOA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFISE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFISEA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICIT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICPT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICES' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICESA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICESS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICUK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnknown8BiT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMnemonic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMnem' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVISCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVIQR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI8R' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHZGB2312' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM866' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC775Baltic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI8U' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM00858' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM00924' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01140' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01141' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01142' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01143' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01144' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01145' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01146' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01147' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01148' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01149' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBig5HKSCS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM1047' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPTCP154' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csAmiga1251' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI7switched' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBRF' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csTSCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1250' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1251' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1252' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1253' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1254' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1255' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1256' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1257' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1258' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csTIS620' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `reserved' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2243 warning: description of object definition `prtInputEntry' changed +../../mibs/ietf/Printer-MIB:1260 info: previous definition of `prtInputEntry' +./Printer-MIB.new:2283 warning: description of object definition `prtInputIndex' changed +../../mibs/ietf/Printer-MIB:1305 info: previous definition of `prtInputIndex' +./Printer-MIB.new:2295 warning: description of object definition `prtInputType' changed +../../mibs/ietf/Printer-MIB:1320 info: previous definition of `prtInputType' +./Printer-MIB.new:2316 warning: type `Integer32' replaces implicit type for `prtInputMediaDimFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1345 info: previous definition of `prtInputMediaDimFeedDirDeclared' +./Printer-MIB.new:2316 range `(-2..2147483647)' removed from type used in `prtInputMediaDimFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1345 info: previous definition of `prtInputMediaDimFeedDirDeclared' +./Printer-MIB.new:2335 warning: type `Integer32' replaces implicit type for `prtInputMediaDimXFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1365 info: previous definition of `prtInputMediaDimXFeedDirDeclared' +./Printer-MIB.new:2335 range `(-2..2147483647)' removed from type used in `prtInputMediaDimXFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1365 info: previous definition of `prtInputMediaDimXFeedDirDeclared' +./Printer-MIB.new:2354 warning: type `Integer32' replaces implicit type for `prtInputMediaDimFeedDirChosen' +../../mibs/ietf/Printer-MIB:1385 info: previous definition of `prtInputMediaDimFeedDirChosen' +./Printer-MIB.new:2354 range `(-2..2147483647)' removed from type used in `prtInputMediaDimFeedDirChosen' +../../mibs/ietf/Printer-MIB:1385 info: previous definition of `prtInputMediaDimFeedDirChosen' +./Printer-MIB.new:2375 warning: type `Integer32' replaces implicit type for `prtInputMediaDimXFeedDirChosen' +../../mibs/ietf/Printer-MIB:1409 info: previous definition of `prtInputMediaDimXFeedDirChosen' +./Printer-MIB.new:2375 range `(-2..2147483647)' removed from type used in `prtInputMediaDimXFeedDirChosen' +../../mibs/ietf/Printer-MIB:1409 info: previous definition of `prtInputMediaDimXFeedDirChosen' +./Printer-MIB.new:2405 warning: type `Integer32' replaces implicit type for `prtInputMaxCapacity' +../../mibs/ietf/Printer-MIB:1443 info: previous definition of `prtInputMaxCapacity' +./Printer-MIB.new:2405 range `(-2..2147483647)' removed from type used in `prtInputMaxCapacity' +../../mibs/ietf/Printer-MIB:1443 info: previous definition of `prtInputMaxCapacity' +./Printer-MIB.new:2422 warning: type `Integer32' replaces implicit type for `prtInputCurrentLevel' +../../mibs/ietf/Printer-MIB:1461 info: previous definition of `prtInputCurrentLevel' +./Printer-MIB.new:2422 range `(-3..2147483647)' removed from type used in `prtInputCurrentLevel' +../../mibs/ietf/Printer-MIB:1461 info: previous definition of `prtInputCurrentLevel' +./Printer-MIB.new:2447 warning: description of object definition `prtInputMediaName' changed +./Printer-MIB.new:2447 warning: reference of `prtInputMediaName' changed +../../mibs/ietf/Printer-MIB:1487 info: previous definition of `prtInputMediaName' +./Printer-MIB.new:2558 warning: type `Integer32' replaces implicit type for `prtInputMediaWeight' +../../mibs/ietf/Printer-MIB:1604 info: previous definition of `prtInputMediaWeight' +./Printer-MIB.new:2558 range `(-2..2147483647)' removed from type used in `prtInputMediaWeight' +../../mibs/ietf/Printer-MIB:1604 info: previous definition of `prtInputMediaWeight' +./Printer-MIB.new:2567 warning: description of object definition `prtInputMediaType' changed +../../mibs/ietf/Printer-MIB:1614 reference removed from `prtInputMediaType' +../../mibs/ietf/Printer-MIB:1614 info: previous definition of `prtInputMediaType' +./Printer-MIB.new:2609 warning: description of object definition `prtInputMediaColor' changed +../../mibs/ietf/Printer-MIB:1633 reference removed from `prtInputMediaColor' +../../mibs/ietf/Printer-MIB:1633 info: previous definition of `prtInputMediaColor' +./Printer-MIB.new:2635 warning: type `Integer32' replaces implicit type for `prtInputMediaFormParts' +../../mibs/ietf/Printer-MIB:1654 info: previous definition of `prtInputMediaFormParts' +./Printer-MIB.new:2635 range `(-2..2147483647)' removed from type used in `prtInputMediaFormParts' +../../mibs/ietf/Printer-MIB:1654 info: previous definition of `prtInputMediaFormParts' +./Printer-MIB.new:2658 warning: type `Integer32' replaces implicit type for `prtInputMediaLoadTimeout' +../../mibs/ietf/Printer-MIB:1675 info: previous definition of `prtInputMediaLoadTimeout' +./Printer-MIB.new:2658 range `(-2..2147483647)' removed from type used in `prtInputMediaLoadTimeout' +../../mibs/ietf/Printer-MIB:1675 info: previous definition of `prtInputMediaLoadTimeout' +./Printer-MIB.new:2680 warning: type `Integer32' replaces implicit type for `prtInputNextIndex' +../../mibs/ietf/Printer-MIB:1698 info: previous definition of `prtInputNextIndex' +./Printer-MIB.new:2680 range `(-3..2147483647)' removed from type used in `prtInputNextIndex' +../../mibs/ietf/Printer-MIB:1698 info: previous definition of `prtInputNextIndex' +./Printer-MIB.new:2721 warning: description of object definition `prtOutputEntry' changed +../../mibs/ietf/Printer-MIB:1737 info: previous definition of `prtOutputEntry' +./Printer-MIB.new:2761 warning: description of object definition `prtOutputIndex' changed +../../mibs/ietf/Printer-MIB:1782 info: previous definition of `prtOutputIndex' +./Printer-MIB.new:2793 warning: type `Integer32' replaces implicit type for `prtOutputMaxCapacity' +../../mibs/ietf/Printer-MIB:1819 info: previous definition of `prtOutputMaxCapacity' +./Printer-MIB.new:2793 range `(-2..2147483647)' removed from type used in `prtOutputMaxCapacity' +../../mibs/ietf/Printer-MIB:1819 info: previous definition of `prtOutputMaxCapacity' +./Printer-MIB.new:2810 warning: type `Integer32' replaces implicit type for `prtOutputRemainingCapacity' +../../mibs/ietf/Printer-MIB:1837 info: previous definition of `prtOutputRemainingCapacity' +./Printer-MIB.new:2810 range `(-3..2147483647)' removed from type used in `prtOutputRemainingCapacity' +../../mibs/ietf/Printer-MIB:1837 info: previous definition of `prtOutputRemainingCapacity' +./Printer-MIB.new:2872 warning: description of object definition `prtOutputModel' changed +../../mibs/ietf/Printer-MIB:1902 info: previous definition of `prtOutputModel' +./Printer-MIB.new:2929 warning: type `Integer32' replaces implicit type for `prtOutputMaxDimFeedDir' +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2929 range `(-2..2147483647)' removed from type used in `prtOutputMaxDimFeedDir' +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2929 warning: description of object definition `prtOutputMaxDimFeedDir' changed +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2943 warning: type `Integer32' replaces implicit type for `prtOutputMaxDimXFeedDir' +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2943 range `(-2..2147483647)' removed from type used in `prtOutputMaxDimXFeedDir' +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2943 warning: description of object definition `prtOutputMaxDimXFeedDir' changed +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2958 warning: type `Integer32' replaces implicit type for `prtOutputMinDimFeedDir' +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2958 range `(-2..2147483647)' removed from type used in `prtOutputMinDimFeedDir' +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2958 warning: description of object definition `prtOutputMinDimFeedDir' changed +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2972 warning: type `Integer32' replaces implicit type for `prtOutputMinDimXFeedDir' +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:2972 range `(-2..2147483647)' removed from type used in `prtOutputMinDimXFeedDir' +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:2972 warning: description of object definition `prtOutputMinDimXFeedDir' changed +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:3044 warning: description of object definition `prtOutputPageCollated' changed +../../mibs/ietf/Printer-MIB:2114 info: previous definition of `prtOutputPageCollated' +./Printer-MIB.new:3055 warning: description of object definition `prtOutputOffsetStacking' changed +../../mibs/ietf/Printer-MIB:2128 info: previous definition of `prtOutputOffsetStacking' +./Printer-MIB.new:3087 warning: description of object definition `prtMarkerTable' changed +../../mibs/ietf/Printer-MIB:2164 info: previous definition of `prtMarkerTable' +./Printer-MIB.new:3096 warning: description of object definition `prtMarkerEntry' changed +../../mibs/ietf/Printer-MIB:2176 info: previous definition of `prtMarkerEntry' +./Printer-MIB.new:3124 warning: description of object definition `prtMarkerIndex' changed +../../mibs/ietf/Printer-MIB:2210 info: previous definition of `prtMarkerIndex' +./Printer-MIB.new:3159 warning: description of object definition `prtMarkerLifeCount' changed +../../mibs/ietf/Printer-MIB:2250 info: previous definition of `prtMarkerLifeCount' +./Printer-MIB.new:3179 warning: description of object definition `prtMarkerProcessColorants' changed +../../mibs/ietf/Printer-MIB:2276 info: previous definition of `prtMarkerProcessColorants' +./Printer-MIB.new:3191 warning: description of object definition `prtMarkerSpotColorants' changed +../../mibs/ietf/Printer-MIB:2290 info: previous definition of `prtMarkerSpotColorants' +./Printer-MIB.new:3201 warning: description of object definition `prtMarkerAddressabilityUnit' changed +../../mibs/ietf/Printer-MIB:2303 info: previous definition of `prtMarkerAddressabilityUnit' +./Printer-MIB.new:3211 warning: type `Integer32' replaces implicit type for `prtMarkerAddressabilityFeedDir' +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3211 range `(-2..2147483647)' removed from type used in `prtMarkerAddressabilityFeedDir' +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3211 warning: description of object definition `prtMarkerAddressabilityFeedDir' changed +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3222 warning: type `Integer32' replaces implicit type for `prtMarkerAddressabilityXFeedDir' +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3222 range `(-2..2147483647)' removed from type used in `prtMarkerAddressabilityXFeedDir' +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3222 warning: description of object definition `prtMarkerAddressabilityXFeedDir' changed +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3234 warning: type `Integer32' replaces implicit type for `prtMarkerNorthMargin' +../../mibs/ietf/Printer-MIB:2350 info: previous definition of `prtMarkerNorthMargin' +./Printer-MIB.new:3234 range `(-2..2147483647)' removed from type used in `prtMarkerNorthMargin' +../../mibs/ietf/Printer-MIB:2350 info: previous definition of `prtMarkerNorthMargin' +./Printer-MIB.new:3249 warning: type `Integer32' replaces implicit type for `prtMarkerSouthMargin' +../../mibs/ietf/Printer-MIB:2369 info: previous definition of `prtMarkerSouthMargin' +./Printer-MIB.new:3249 range `(-2..2147483647)' removed from type used in `prtMarkerSouthMargin' +../../mibs/ietf/Printer-MIB:2369 info: previous definition of `prtMarkerSouthMargin' +./Printer-MIB.new:3260 warning: type `Integer32' replaces implicit type for `prtMarkerWestMargin' +../../mibs/ietf/Printer-MIB:2381 info: previous definition of `prtMarkerWestMargin' +./Printer-MIB.new:3260 range `(-2..2147483647)' removed from type used in `prtMarkerWestMargin' +../../mibs/ietf/Printer-MIB:2381 info: previous definition of `prtMarkerWestMargin' +./Printer-MIB.new:3271 warning: type `Integer32' replaces implicit type for `prtMarkerEastMargin' +../../mibs/ietf/Printer-MIB:2393 info: previous definition of `prtMarkerEastMargin' +./Printer-MIB.new:3271 range `(-2..2147483647)' removed from type used in `prtMarkerEastMargin' +../../mibs/ietf/Printer-MIB:2393 info: previous definition of `prtMarkerEastMargin' +./Printer-MIB.new:3306 warning: description of object definition `prtMarkerSuppliesEntry' changed +../../mibs/ietf/Printer-MIB:2428 info: previous definition of `prtMarkerSuppliesEntry' +./Printer-MIB.new:3329 warning: description of object definition `prtMarkerSuppliesIndex' changed +../../mibs/ietf/Printer-MIB:2452 info: previous definition of `prtMarkerSuppliesIndex' +./Printer-MIB.new:3350 warning: description of object definition `prtMarkerSuppliesColorantIndex' changed +../../mibs/ietf/Printer-MIB:2479 info: previous definition of `prtMarkerSuppliesColorantIndex' +./Printer-MIB.new:3361 warning: description of object definition `prtMarkerSuppliesClass' changed +../../mibs/ietf/Printer-MIB:2492 info: previous definition of `prtMarkerSuppliesClass' +./Printer-MIB.new:3390 warning: description of object definition `prtMarkerSuppliesSupplyUnit' changed +../../mibs/ietf/Printer-MIB:2530 info: previous definition of `prtMarkerSuppliesSupplyUnit' +./Printer-MIB.new:3399 warning: type `Integer32' replaces implicit type for `prtMarkerSuppliesMaxCapacity' +../../mibs/ietf/Printer-MIB:2543 info: previous definition of `prtMarkerSuppliesMaxCapacity' +./Printer-MIB.new:3399 range `(-2..2147483647)' removed from type used in `prtMarkerSuppliesMaxCapacity' +../../mibs/ietf/Printer-MIB:2543 info: previous definition of `prtMarkerSuppliesMaxCapacity' +./Printer-MIB.new:3415 warning: type `Integer32' replaces implicit type for `prtMarkerSuppliesLevel' +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3415 range `(-3..2147483647)' removed from type used in `prtMarkerSuppliesLevel' +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3415 warning: description of object definition `prtMarkerSuppliesLevel' changed +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3447 warning: description of object definition `prtMarkerColorantEntry' changed +../../mibs/ietf/Printer-MIB:2592 info: previous definition of `prtMarkerColorantEntry' +./Printer-MIB.new:3467 warning: description of object definition `prtMarkerColorantIndex' changed +../../mibs/ietf/Printer-MIB:2616 info: previous definition of `prtMarkerColorantIndex' +./Printer-MIB.new:3520 warning: type `Integer32' replaces implicit type for `prtMarkerColorantTonality' +../../mibs/ietf/Printer-MIB:2676 info: previous definition of `prtMarkerColorantTonality' +./Printer-MIB.new:3520 range `(2..2147483647)' removed from type used in `prtMarkerColorantTonality' +../../mibs/ietf/Printer-MIB:2676 info: previous definition of `prtMarkerColorantTonality' +./Printer-MIB.new:3544 warning: description of object definition `prtMediaPathTable' changed +../../mibs/ietf/Printer-MIB:2699 info: previous definition of `prtMediaPathTable' +./Printer-MIB.new:3553 warning: description of object definition `prtMediaPathEntry' changed +../../mibs/ietf/Printer-MIB:2711 info: previous definition of `prtMediaPathEntry' +./Printer-MIB.new:3578 warning: description of object definition `prtMediaPathIndex' changed +../../mibs/ietf/Printer-MIB:2744 info: previous definition of `prtMediaPathIndex' +./Printer-MIB.new:3610 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxSpeed' +../../mibs/ietf/Printer-MIB:2783 info: previous definition of `prtMediaPathMaxSpeed' +./Printer-MIB.new:3610 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxSpeed' +../../mibs/ietf/Printer-MIB:2783 info: previous definition of `prtMediaPathMaxSpeed' +./Printer-MIB.new:3619 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxMediaFeedDir' +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3619 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxMediaFeedDir' +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3619 warning: description of object definition `prtMediaPathMaxMediaFeedDir' changed +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3630 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3630 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3630 warning: description of object definition `prtMediaPathMaxMediaXFeedDir' changed +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3640 warning: type `Integer32' replaces implicit type for `prtMediaPathMinMediaFeedDir' +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3640 range `(-2..2147483647)' removed from type used in `prtMediaPathMinMediaFeedDir' +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3640 warning: description of object definition `prtMediaPathMinMediaFeedDir' changed +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3651 warning: type `Integer32' replaces implicit type for `prtMediaPathMinMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3651 range `(-2..2147483647)' removed from type used in `prtMediaPathMinMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3651 warning: description of object definition `prtMediaPathMinMediaXFeedDir' changed +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3778 warning: description of object definition `prtChannelTable' changed +../../mibs/ietf/Printer-MIB:2977 info: previous definition of `prtChannelTable' +./Printer-MIB.new:3787 warning: description of object definition `prtChannelEntry' changed +../../mibs/ietf/Printer-MIB:2990 info: previous definition of `prtChannelEntry' +./Printer-MIB.new:3810 range of type used in `prtChannelIndex' changed from `(1..65535)' to `(1..2147483647)' +./Printer-MIB.new:3809 warning: description of object definition `prtChannelIndex' changed +../../mibs/ietf/Printer-MIB:3018 info: previous definition of `prtChannelIndex' +./Printer-MIB.new:3821 named number `unknown' removed from type used in `prtChannelType' +./Printer-MIB.new:3821 warning: named number `chDPMF' changed to `chPSM' at type used in `prtChannelType' +./Printer-MIB.new:3821 named number `chSMTP' removed from type used in `prtChannelType' +./Printer-MIB.new:3842 warning: type `Integer32' replaces implicit type for `prtChannelCurrentJobCntlLangIndex' +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3842 range `(0..65535)' removed from type used in `prtChannelCurrentJobCntlLangIndex' +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3842 warning: description of object definition `prtChannelCurrentJobCntlLangIndex' changed +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3856 warning: type `Integer32' replaces implicit type for `prtChannelDefaultPageDescLangIndex' +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3856 range `(0..65535)' removed from type used in `prtChannelDefaultPageDescLangIndex' +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3856 warning: description of object definition `prtChannelDefaultPageDescLangIndex' changed +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3883 range `(0..2147483647)' removed from type used in `prtChannelIfIndex' +../../mibs/ietf/Printer-MIB:3110 info: previous definition of `prtChannelIfIndex' +./Printer-MIB.new:3883 warning: description of object definition `prtChannelIfIndex' changed +../../mibs/ietf/Printer-MIB:3110 info: previous definition of `prtChannelIfIndex' +./Printer-MIB.new:3904 warning: description of object definition `prtChannelInformation' changed +../../mibs/ietf/Printer-MIB:3137 info: previous definition of `prtChannelInformation' +./Printer-MIB.new:4047 warning: description of object definition `prtInterpreterTable' changed +../../mibs/ietf/Printer-MIB:3281 info: previous definition of `prtInterpreterTable' +./Printer-MIB.new:4055 warning: description of object definition `prtInterpreterEntry' changed +../../mibs/ietf/Printer-MIB:3294 info: previous definition of `prtInterpreterEntry' +./Printer-MIB.new:4081 warning: description of object definition `prtInterpreterIndex' changed +../../mibs/ietf/Printer-MIB:3325 info: previous definition of `prtInterpreterIndex' +./Printer-MIB.new:4095 named number `langCGM' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langJPEG' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langCALS1' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langCALS2' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langNIRS' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langC4' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 warning: description of object definition `prtInterpreterLangFamily' changed +../../mibs/ietf/Printer-MIB:3345 info: previous definition of `prtInterpreterLangFamily' +./Printer-MIB.new:4165 warning: type `Integer32' replaces implicit type for `prtInterpreterFeedAddressability' +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4165 range `(-2..2147483647)' removed from type used in `prtInterpreterFeedAddressability' +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4165 warning: description of object definition `prtInterpreterFeedAddressability' changed +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4177 warning: type `Integer32' replaces implicit type for `prtInterpreterXFeedAddressability' +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4177 range `(-2..2147483647)' removed from type used in `prtInterpreterXFeedAddressability' +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4177 warning: description of object definition `prtInterpreterXFeedAddressability' changed +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4189 named number `unknown' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csASCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin3' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin4' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinCyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinArabic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinGreek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinHebrew' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin6' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOTextComm' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHalfWidthKatakana' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csJISEncoding' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csShiftJIS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCPkdFmtJapanese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCFixWidJapanese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO4UnitedKingdom' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO11SwedishForNames' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO15Italian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO17Spanish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO21German' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO60DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO69French' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10646UTF1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO646basic1983' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csINVARIANT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2IntlRefVersion' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSSEFI' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSSEFIADD' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSDANO' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSDANOADD' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10Swedish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKSC56011987' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022KR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCKR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022JP' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022JP2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO13JISC6220jp' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO14JISC6220ro' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO16Portuguese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO18Greek7Old' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO19LatinGreek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO25French' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO27LatinGreek1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO5427Cyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO42JISC62261978' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO47BSViewdata' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO49INIS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO50INIS8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO51INISCyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO54271981' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO5428Greek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO57GB1988' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO58GB231280' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO61Norwegian2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO70VideotexSupp1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO84Portuguese2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO85Spanish2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO86Hungarian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO87JISX0208' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88Greek7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO89ASMO449' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO90' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO91JISC62291984a' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO92JISC62991984b' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO93JIS62291984badd' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO94JIS62291984hand' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO95JIS62291984handadd' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO96JISC62291984kana' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2033' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO99NAPLPS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO102T617bit' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO103T618bit' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO111ECMACyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csa71' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csa72' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO123CSAZ24341985gr' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88596E' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88596I' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO128T101G2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88598E' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88598I' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO139CSN369103' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO141JUSIB1002' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO143IECP271' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO146Serbian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO147Macedonian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO150' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO151Cuba' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO6937Add' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO153GOST1976874' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO8859Supp' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10367Box' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO158Lap' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO159JISX02121990' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO646Danish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUSDK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csDKUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKSC5636' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode11UTF7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022CN' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022CNEXT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885913' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885914' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885915' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885916' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGBK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGB18030' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF0415' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF03IRV' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF041' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO115481' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKZ1048' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUCS4' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeASCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeLatin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1261' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1268' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1276' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1264' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1265' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode11' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csSCSU' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16BE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16LE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csCESU8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32BE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32LE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBOCU1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows30Latin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPRoman8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csAdobeStandardEncoding' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaInternational' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csDECMCS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC850Multilingual' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPCp852' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8CodePage437' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC862LatinHebrew' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8Turkish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMSymbols' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMThai' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPLegal' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPPiFont' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPMath8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPPSMath' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPDesktop' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaMath' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMicrosoftPublishing' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31J' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGB2312' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBig5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMacintosh' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM037' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM038' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM273' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM274' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM275' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM277' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM278' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM280' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM281' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM284' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM285' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM290' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM297' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM420' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM423' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM424' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM500' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM851' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM855' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM857' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM860' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM861' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM863' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM864' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM865' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM868' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM869' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM870' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM871' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM880' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM891' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM903' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBBM904' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM905' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM918' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM1026' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMEBCDICATDE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICATDEA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICCAFR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICDKNO' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICDKNOA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFISE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFISEA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICIT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICPT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICES' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICESA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICESS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICUK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnknown8BiT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMnemonic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMnem' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVISCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVIQR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI8R' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHZGB2312' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM866' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC775Baltic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI8U' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM00858' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM00924' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01140' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01141' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01142' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01143' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01144' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01145' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01146' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01147' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01148' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01149' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBig5HKSCS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM1047' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPTCP154' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csAmiga1251' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI7switched' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBRF' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csTSCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1250' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1251' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1252' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1253' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1254' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1255' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1256' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1257' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1258' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csTIS620' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `reserved' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 warning: description of object definition `prtInterpreterDefaultCharSetIn' changed +../../mibs/ietf/Printer-MIB:3460 info: previous definition of `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4202 named number `unknown' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csASCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin3' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin4' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinCyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinArabic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinGreek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinHebrew' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin6' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOTextComm' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHalfWidthKatakana' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csJISEncoding' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csShiftJIS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCPkdFmtJapanese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCFixWidJapanese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO4UnitedKingdom' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO11SwedishForNames' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO15Italian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO17Spanish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO21German' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO60DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO69French' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10646UTF1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO646basic1983' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csINVARIANT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2IntlRefVersion' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSSEFI' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSSEFIADD' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSDANO' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSDANOADD' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10Swedish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKSC56011987' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022KR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCKR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022JP' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022JP2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO13JISC6220jp' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO14JISC6220ro' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO16Portuguese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO18Greek7Old' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO19LatinGreek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO25French' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO27LatinGreek1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO5427Cyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO42JISC62261978' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO47BSViewdata' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO49INIS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO50INIS8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO51INISCyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO54271981' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO5428Greek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO57GB1988' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO58GB231280' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO61Norwegian2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO70VideotexSupp1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO84Portuguese2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO85Spanish2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO86Hungarian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO87JISX0208' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88Greek7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO89ASMO449' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO90' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO91JISC62291984a' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO92JISC62991984b' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO93JIS62291984badd' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO94JIS62291984hand' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO95JIS62291984handadd' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO96JISC62291984kana' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2033' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO99NAPLPS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO102T617bit' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO103T618bit' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO111ECMACyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csa71' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csa72' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO123CSAZ24341985gr' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88596E' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88596I' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO128T101G2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88598E' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88598I' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO139CSN369103' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO141JUSIB1002' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO143IECP271' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO146Serbian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO147Macedonian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO150' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO151Cuba' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO6937Add' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO153GOST1976874' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO8859Supp' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10367Box' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO158Lap' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO159JISX02121990' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO646Danish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUSDK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csDKUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKSC5636' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode11UTF7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022CN' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022CNEXT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885913' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885914' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885915' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885916' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGBK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGB18030' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF0415' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF03IRV' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF041' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO115481' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKZ1048' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUCS4' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeASCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeLatin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1261' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1268' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1276' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1264' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1265' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode11' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csSCSU' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16BE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16LE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csCESU8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32BE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32LE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBOCU1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows30Latin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPRoman8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csAdobeStandardEncoding' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaInternational' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csDECMCS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC850Multilingual' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPCp852' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8CodePage437' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC862LatinHebrew' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8Turkish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMSymbols' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMThai' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPLegal' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPPiFont' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPMath8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPPSMath' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPDesktop' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaMath' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMicrosoftPublishing' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31J' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGB2312' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBig5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMacintosh' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM037' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM038' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM273' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM274' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM275' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM277' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM278' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM280' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM281' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM284' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM285' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM290' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM297' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM420' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM423' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM424' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM500' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM851' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM855' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM857' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM860' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM861' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM863' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM864' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM865' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM868' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM869' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM870' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM871' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM880' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM891' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM903' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBBM904' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM905' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM918' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM1026' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMEBCDICATDE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICATDEA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICCAFR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICDKNO' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICDKNOA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFISE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFISEA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICIT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICPT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICES' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICESA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICESS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICUK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnknown8BiT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMnemonic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMnem' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVISCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVIQR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI8R' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHZGB2312' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM866' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC775Baltic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI8U' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM00858' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM00924' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01140' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01141' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01142' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01143' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01144' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01145' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01146' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01147' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01148' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01149' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBig5HKSCS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM1047' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPTCP154' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csAmiga1251' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI7switched' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBRF' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csTSCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1250' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1251' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1252' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1253' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1254' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1255' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1256' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1257' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1258' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csTIS620' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `reserved' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 warning: description of object definition `prtInterpreterDefaultCharSetOut' changed +../../mibs/ietf/Printer-MIB:3472 info: previous definition of `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4236 warning: description of object definition `prtConsoleDisplayBufferTable' changed +../../mibs/ietf/Printer-MIB:3508 info: previous definition of `prtConsoleDisplayBufferTable' +./Printer-MIB.new:4246 warning: description of object definition `prtConsoleDisplayBufferEntry' changed +../../mibs/ietf/Printer-MIB:3520 info: previous definition of `prtConsoleDisplayBufferEntry' +./Printer-MIB.new:4263 warning: description of object definition `prtConsoleDisplayBufferIndex' changed +../../mibs/ietf/Printer-MIB:3543 info: previous definition of `prtConsoleDisplayBufferIndex' +./Printer-MIB.new:4299 warning: description of object definition `prtConsoleLightTable' changed +../../mibs/ietf/Printer-MIB:3585 info: previous definition of `prtConsoleLightTable' +./Printer-MIB.new:4307 warning: description of object definition `prtConsoleLightEntry' changed +../../mibs/ietf/Printer-MIB:3597 info: previous definition of `prtConsoleLightEntry' +./Printer-MIB.new:4325 warning: description of object definition `prtConsoleLightIndex' changed +../../mibs/ietf/Printer-MIB:3618 info: previous definition of `prtConsoleLightIndex' +./Printer-MIB.new:4338 warning: type `Integer32' replaces implicit type for `prtConsoleOnTime' +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4338 range `(0..2147483647)' removed from type used in `prtConsoleOnTime' +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4338 warning: description of object definition `prtConsoleOnTime' changed +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4353 warning: type `Integer32' replaces implicit type for `prtConsoleOffTime' +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4353 range `(0..2147483647)' removed from type used in `prtConsoleOffTime' +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4353 warning: description of object definition `prtConsoleOffTime' changed +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4413 warning: description of object definition `prtAlertTable' changed +../../mibs/ietf/Printer-MIB:3716 info: previous definition of `prtAlertTable' +./Printer-MIB.new:4421 warning: description of object definition `prtAlertEntry' changed +../../mibs/ietf/Printer-MIB:3732 info: previous definition of `prtAlertEntry' +./Printer-MIB.new:4444 warning: access of `prtAlertIndex' changed from `read-only' to `not-accessible' +./Printer-MIB.new:4444 warning: description of object definition `prtAlertIndex' changed +../../mibs/ietf/Printer-MIB:3760 info: previous definition of `prtAlertIndex' +./Printer-MIB.new:4488 warning: description of object definition `prtAlertTrainingLevel' changed +../../mibs/ietf/Printer-MIB:3815 info: previous definition of `prtAlertTrainingLevel' +./Printer-MIB.new:4497 named number `unknown' removed from type used in `prtAlertGroup' +./Printer-MIB.new:4497 warning: named number `finAttribute' changed to `finAttributeTable' at type used in `prtAlertGroup' +./Printer-MIB.new:4510 warning: type `Integer32' replaces implicit type for `prtAlertGroupIndex' +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4510 range `(-1..2147483647)' removed from type used in `prtAlertGroupIndex' +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4510 warning: description of object definition `prtAlertGroupIndex' changed +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4528 warning: type `Integer32' replaces implicit type for `prtAlertLocation' +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4528 range `(-2..2147483647)' removed from type used in `prtAlertLocation' +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4528 warning: description of object definition `prtAlertLocation' changed +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4541 warning: named number `mediaPathCannotDuplexMediaSelected' changed to `mediaPathcannotDuplexMediaSelected' at type used in `prtAlertCode' +./Printer-MIB.new:4541 warning: description of object definition `prtAlertCode' changed +../../mibs/ietf/Printer-MIB:3883 info: previous definition of `prtAlertCode' +./Printer-MIB.new:4565 warning: description of object definition `prtAlertTime' changed +../../mibs/ietf/Printer-MIB:3915 info: previous definition of `prtAlertTime' +./Printer-MIB.new:4584 warning: description of notification definition `printerV2Alert' changed +../../mibs/ietf/Printer-MIB:3933 info: previous definition of `printerV2Alert' +./Printer-MIB.new:5139 warning: description of object group definition `prtAlertTableGroup' changed +../../mibs/ietf/Printer-MIB:4569 info: previous definition of `prtAlertTableGroup' +./Printer-MIB.new:5149 warning: description of object group definition `prtAlertTimeGroup' changed +../../mibs/ietf/Printer-MIB:4578 info: previous definition of `prtAlertTimeGroup' +./Printer-MIB.new:5179 warning: description of object group definition `prtAlertTableV2Group' changed +../../mibs/ietf/Printer-MIB:4614 member `prtAlertIndex' removed from group `prtAlertTableV2Group' +../../mibs/ietf/Printer-MIB:4614 info: previous definition of `prtAlertTableV2Group' +./Printer-MIB.new:4614 warning: description of module compliance definition `prtMIBCompliance' changed +../../mibs/ietf/Printer-MIB:3971 info: previous definition of `prtMIBCompliance' +./Printer-MIB.new:4874 optional group `prtResponsiblePartyGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4878 optional group `prtExtendedInputGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4882 optional group `prtInputMediaGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4887 optional group `prtExtendedOutputGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4891 optional group `prtOutputDimensionsGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4895 optional group `prtOutputFeaturesGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4899 optional group `prtMarkerSuppliesGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4903 optional group `prtMarkerColorantGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4907 optional group `prtAlertTimeGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4939 optional group `prtAuxiliarySheetGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4943 optional group `prtInputSwitchingGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4947 optional group `prtGeneralV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4951 optional group `prtAlertTableV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4955 optional group `prtChannelV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4959 optional group `prtAlertTrapGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4634 warning: object refinement for `prtGeneralCurrentLocalization' added to `prtMIBCompliance' +./Printer-MIB.new:4639 warning: object refinement for `prtGeneralCurrentOperator' added to `prtMIBCompliance' +./Printer-MIB.new:4644 warning: object refinement for `prtGeneralServicePerson' added to `prtMIBCompliance' +./Printer-MIB.new:4649 warning: object refinement for `prtGeneralPrinterName' added to `prtMIBCompliance' +./Printer-MIB.new:4654 warning: object refinement for `prtGeneralSerialNumber' added to `prtMIBCompliance' +./Printer-MIB.new:4660 warning: object refinement for `prtInputDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4665 warning: object refinement for `prtInputMediaDimFeedDirDeclared' added to `prtMIBCompliance' +./Printer-MIB.new:4670 warning: object refinement for `prtInputMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4675 warning: object refinement for `prtInputCurrentLevel' added to `prtMIBCompliance' +./Printer-MIB.new:4680 warning: object refinement for `prtInputMediaName' added to `prtMIBCompliance' +./Printer-MIB.new:4685 warning: object refinement for `prtInputName' added to `prtMIBCompliance' +./Printer-MIB.new:4690 warning: object refinement for `prtInputSecurity' added to `prtMIBCompliance' +./Printer-MIB.new:4695 warning: object refinement for `prtInputMediaWeight' added to `prtMIBCompliance' +./Printer-MIB.new:4700 warning: object refinement for `prtInputMediaType' added to `prtMIBCompliance' +./Printer-MIB.new:4706 warning: object refinement for `prtInputMediaColor' added to `prtMIBCompliance' +./Printer-MIB.new:4711 warning: object refinement for `prtInputMediaFormParts' added to `prtMIBCompliance' +./Printer-MIB.new:4716 warning: object refinement for `prtOutputDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4721 warning: object refinement for `prtOutputMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4726 warning: object refinement for `prtOutputRemainingCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4731 warning: object refinement for `prtOutputName' added to `prtMIBCompliance' +./Printer-MIB.new:4736 warning: object refinement for `prtOutputSecurity' added to `prtMIBCompliance' +./Printer-MIB.new:4741 warning: object refinement for `prtOutputMaxDimFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4746 warning: object refinement for `prtOutputMaxDimXFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4752 warning: object refinement for `prtOutputMinDimFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4757 warning: object refinement for `prtOutputMinDimXFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4762 warning: object refinement for `prtOutputStackingOrder' added to `prtMIBCompliance' +./Printer-MIB.new:4767 warning: object refinement for `prtOutputPageDeliveryOrientation' added to `prtMIBCompliance' +./Printer-MIB.new:4772 warning: object refinement for `prtOutputBursting' added to `prtMIBCompliance' +./Printer-MIB.new:4777 warning: object refinement for `prtOutputDecollating' added to `prtMIBCompliance' +./Printer-MIB.new:4782 warning: object refinement for `prtOutputPageCollated' added to `prtMIBCompliance' +./Printer-MIB.new:4787 warning: object refinement for `prtOutputOffsetStacking' added to `prtMIBCompliance' +./Printer-MIB.new:4792 warning: object refinement for `prtMarkerDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4798 warning: object refinement for `prtMarkerSuppliesMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4803 warning: object refinement for `prtMarkerSuppliesLevel' added to `prtMIBCompliance' +./Printer-MIB.new:4808 warning: object refinement for `prtMediaPathDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4813 warning: object refinement for `prtChannelCurrentJobCntlLangIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4818 warning: object refinement for `prtChannelDefaultPageDescLangIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4823 warning: object refinement for `prtChannelState' added to `prtMIBCompliance' +./Printer-MIB.new:4828 warning: object refinement for `prtChannelIfIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4833 warning: object refinement for `prtInterpreterDefaultOrientation' added to `prtMIBCompliance' +./Printer-MIB.new:4838 warning: object refinement for `prtInterpreterDefaultCharSetIn' added to `prtMIBCompliance' +./Printer-MIB.new:4844 warning: object refinement for `prtInterpreterDefaultCharSetOut' added to `prtMIBCompliance' +./Printer-MIB.new:4849 warning: object refinement for `prtConsoleLocalization' added to `prtMIBCompliance' +./Printer-MIB.new:4854 warning: object refinement for `prtConsoleDisable' added to `prtMIBCompliance' +./Printer-MIB.new:4859 warning: object refinement for `prtConsoleDisplayBufferText' added to `prtMIBCompliance' +./Printer-MIB.new:4918 warning: object refinement for `prtAuxiliarySheetStartupPage' added to `prtMIBCompliance' +./Printer-MIB.new:4923 warning: object refinement for `prtAuxiliarySheetBannerPage' added to `prtMIBCompliance' +./Printer-MIB.new:4928 warning: object refinement for `prtInputMediaLoadTimeout' added to `prtMIBCompliance' +./Printer-MIB.new:4934 warning: object refinement for `prtInputNextIndex' added to `prtMIBCompliance' +../../mibs/ietf/Printer-MIB:4006 compliance `prtMIB2Compliance' has been deleted diff --git a/test/smidiff/Printer-MIB.new b/test/smidiff/Printer-MIB.new new file mode 100644 index 0000000..10f4109 --- /dev/null +++ b/test/smidiff/Printer-MIB.new @@ -0,0 +1,5200 @@ +Printer-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, TimeTicks, + NOTIFICATION-TYPE, OBJECT-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF + hrDeviceIndex, hrStorageIndex FROM HOST-RESOURCES-MIB; + + +printmib MODULE-IDENTITY + LAST-UPDATED "200108300000Z" + ORGANIZATION "IETF Printer MIB Working Group" + CONTACT-INFO + "Harry Lewis + IBM Corporation. + 6300 Diagonal Hwy + Boulder, CO 80301 + harryl@us.ibm.com" + DESCRIPTION + "The MIB module for management of printers." + REVISION "200108300000Z" + DESCRIPTION + "Printer MIB v2. + Five new OBJECT-GROUPs: prtAuxilliarySheetGroup, + prtInputSwitchingGroup, prtGeneralV2Group, + prtAlertTableV2Group, prtChannelV2Group. + Nine new objects added to those groups: + prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, + prtGeneralPrinterName, prtGeneralSerialNumber, + prtAlertCriticalEvents, prtAlertAllEvents, + prtInputMediaLoadTimeout, prtInputNextIndex, + prtChannelInformation. + One new NOTIFICATION-GROUP: prtAlertTrapGroup which contains + printerV2Alert. + In MODULE-COMPLIANCE prtMIBCompliance, new OBJECT-GROUPs and + the NOTIFICATION_GROUP, all in GROUP (not MANDATORY-GROUP) + clauses. The nine new objects are optional, i.e., this draft + is backward compatible with RFC 1759." + REVISION "199411250000Z" + DESCRIPTION + "The original version of this MIB, published as RFC1759." + ::= { mib-2 43 } + +-- Textual conventions for this MIB module +-- +-- Generic unspecific textual conventions +-- + +PrtMediaUnitTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +PrtCapacityUnitTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Units of measure for media capacity." + SYNTAX INTEGER { + other(1), + unknown(2), + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), + percent(19) + } + +PrtPrintOrientationTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "A generic representation for printing orientation on a 'page'." + SYNTAX INTEGER { + other(1), + portrait(3), + landscape(4) + } + +PrtCoverStatusTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "Values for encoding the state of a particular cover or access + panel on the printer case or enclosure." + SYNTAX INTEGER { + other(1), + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6) + + } + +PrtSubUnitStatusTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +PresentOnOff ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + + STATUS current + DESCRIPTION + "Presence and configuration of a device or feature." + SYNTAX INTEGER { + other(1), + on(3), + off(4), + notPresent(5) + } + +CodedCharSet ::= TEXTUAL-CONVENTION + -- This is a type 3 enumeration. + STATUS current + DESCRIPTION + "A coded character set value that specifies both a set of + characters that may be used and an encoding (as one or more + octets) that is used to represent the characters in the set. + These values are to be used to identify the encoding employed + for strings in the MIB where this is not fixed by the MIB. + + Some objects that allow a choice of coded character set are: the + prtLocalizationCharacterSet object in the LocalizationTable and + prtInterpreterDefaultCharSetIn. The + prtGeneralCurrentLocalization and prtConsoleLocalization objects + in turn contain the index in the LocalizationTable of the + current localization (country, language, and coded character + set) of the 'description' objects and the console, respectively. + + The current list of character sets and their enumerated values + used to reference them are contained in the IANA Character Set + registry. The enum value is indicated by the MIBenum entry in + the registry. The enum symbol is indicated by the Alias that + starts with 'cs' for character set. + + The IANA character sets registry is [4]. To add a new character + set to the IANA Registry, see RFC 2278 or BCP 19 [20]. + + The textual conventions LocalizedDescriptionStringTC and + ConsoleDescriptionStringTC are required for use with objects + that are controlled by prtGeneralCurrentLocalization and + prtConsoleLocalization, respectively." + + SYNTAX INTEGER { + other(1) -- used if the designated coded + -- character set is not currently + + -- registered by IANA + + -- See [4] for registered character sets and + -- use the MIBenum integer value. + } + +LocalizedDescriptionStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object MUST use this textual convention when its + 'charset' is controlled by the value of + prtGeneralCurrentLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +ConsoleDescriptionStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object MUST use this textual convention when its + 'charset' is controlled by the value of + prtConsoleLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +-- +-- General Group textual-conventions +-- + +PrtGeneralResetTC ::= TEXTUAL-CONVENTION + -- This value is a type 3 enumeration. + STATUS current + DESCRIPTION + "Values for reading and writing the prtGeneralReset object. + + If a device does not have NVRAM, the device shall none the less + respond to a SET with the value resetToNVRAM(5) with some sort of + warm reset that resets the device to some implementation-defined + state that is preferably under control of the system administrator + by some means outside the scope of this MIB specification." + + SYNTAX INTEGER { + notResetting(3), + powerCycleReset(4), -- Cold Start + resetToNVRAM(5), -- Warm Start + resetToFactoryDefaults(6) -- Reset contents of + -- NVRAM to factory + -- defaults + + } + +-- +-- Channel Group textual-conventions +-- + +PrtChannelStateTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The state of this print job delivery channel. The value + determines whether print data is allowed through this channel." + SYNTAX INTEGER { + other(1), + printDataAccepted(3), + noDataAccepted(4) + } + +PrtChannelTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "This enumeration indicates the type of channel that is + receiving jobs." + SYNTAX INTEGER { + other(1), + chSerialPort(3), + chParallelPort(4), + chIEEE1284Port(5), + chSCSIPort(6), + chAppleTalkPAP(7), + -- AppleTalk Printer + -- Access Protocol (PAP) + -- + -- prtChannelInformation entry: + -- + -- Printer Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The name of the printer within + -- the AppleTalk naming scope + chLPDServer(8), + -- prtChannelInformation entry: + + -- + -- Printer queue name + -- Keyword: Queue + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: queue name as + -- defined in RFC 1179 [12]. + chNetwareRPrinter(9), + -- Novell, Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair of + -- keywords. For Netware 3.x channels this must + -- be a (PServer, Printer) pair. For Netware 4.x + -- channels and for IntranetWare channels this + -- must be a (NDSTree, NDSPrinter) pair. + -- + -- prtChannelInformation entries: + + -- Print Server Name + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The Pserver's SAP name + -- + -- Printer Number + -- Keyword: Printer + -- Syntax: Integer + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The printer number + -- + -- NDSTree + -- Keyword: NDSTree + -- Syntax: Name + -- Multiplicity: Single + -- Description: The tree's SAP name + -- + -- NDS Printer object + -- Keyword: NDSPrinter + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + + -- name of the Printer + -- + -- In the Netware 3.x environment, the + -- client checks the Bindery object + -- representing the named PServer. The + -- client then checks for queues which + -- are associated with the numbered + -- printer. In the 4.x and IntraNetware + -- environment, the client looks up the + -- queues which are associated with the + -- NDS Printer Object in the named Tree. + -- Depending on client access rights to + -- those queues, the client submits jobs + -- to the appropriate queue. + chNetwarePServer(10), + -- Novell,Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair + -- of keywords. For Netware 3.x channels + -- this must be a (Server, PServer) pair. + -- For Netware 4.x and IntranetWare + -- channels, this must be a + -- (NDSTree, NDSPServer) pair. + -- + -- prtChannelInformation entries: + -- + -- Server Name + -- Keyword: Server + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SAP name of the + -- server for which the PServer is defined. + -- + -- PServer + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The bindery name of + -- the PServer + -- + -- NDS Tree + -- Keyword: NDSTree + -- Syntax: Name + + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDS Tree name + -- + -- PServer + -- Keyword: NDSPServer + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the PServer object in the tree. + -- + -- In the 3.x environment, the client + -- checks the bindery object + -- representing the named PServer on the + -- named Server. In the 4.x and + -- IntranetWare environment, + -- the client checks the NDS object + -- representing the named PServer in the + -- named Tree. In either case, the + -- client then checks for all queues + -- associated with the Pserver object. + -- Depending on client access rights + -- to those queues, the client submits + -- jobs to the appropriate queue. + chPort9100(11), + -- DEPRECATED + -- (see chPortTCP . 37; chBidirPortTCP . 38) + chAppSocket(12), + -- A bi-directional, LPD-like, + -- protocol using 9101 for + -- control and 9100 for data. + -- Adobe Systems, Inc. + chFTP(13), -- RFC 959 [11] + chTFTP(14), -- RFC 1350 [13] + chDLCLLCPort(15), + chIBM3270(16), -- IBM Coax + chIBM5250(17), -- IBM Twinax + chFax(18), + chIEEE1394(19), + chTransport1(20), + -- TCP port 35, see reserved TCP port list + -- in RFC 1700 [15] or current "Assigned + -- Numbers" files. This RFC should also be + -- referenced for other channel + + -- enumerations utilizing TCP port + -- numbers 0 through 1024. + chCPAP(21), -- TCP port 170 + -- Digital Equipment Corp. + chDCERemoteProcCall(22), -- OSF + -- DEPRECATED + chONCRemoteProcCall(23), -- SUN Microsystems + -- DEPRECATED + chOLE(24), -- Microsoft + -- DEPRECATED + chNamedPipe(25), + chPCPrint(26), -- Banyan + chServerMessageBlock(27), + -- File/Print sharing protocol used by + -- various network operating systems + -- from IBM 3Com, Microsoft and others + -- + -- prtChannelInformation entry: + -- + -- Service Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The service name of + -- the printer + chPSM(28), -- Printing Systems + -- Manager, IBM + chDLLAPI(29), -- Microsoft + -- DEPRECATED + chVxDAPI(30), -- Microsoft + -- DEPRECATED + chSystemObjectManager(31), -- IBM + chDECLAT(32), + -- Digital Equipment Corp. + -- + -- prtChannelInformation entries: + -- + -- Port Name + -- Keyword: Port + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- (see note below) + -- Multiplicity: Single + + -- Description: LAT port name + -- + -- Service Name + -- Keyword: Service + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- Multiplicity: Single + -- Description: LAT service name + -- + -- The LAT channel may be + -- identified by either a port or + -- service, so either a + -- Port or Service entry must be + -- specified, but not both. + chNPAP(33), + chUSB(34), -- Universal Serial Bus + chIRDA(35), -- Infrared Data Assoc. Prot. + chPrintXChange(36), -- PrintXChange Protocol + chPortTCP(37), + -- A unidirectional "raw" TCP + -- channel that uses an administratively + -- assigned TCP port address. + -- + -- prtChannelInformation entry: + -- + -- Port Number + -- Keyword: Port + -- Syntax: decimal number + -- Status: Mandatory + -- Multiplicity: Single + -- Description: TCP port number + chBidirPortTCP(38), + -- A bi-directional version of chPortTCP + -- + -- prtChannelInformation entries: + -- (See chPortTCP) + chUNPP(39), + -- Universal Network Printing + -- Protocol(UNPP). A bi-directional, + -- multiport network printing + -- application protocol available on + -- multiple transport protocols. + -- Underscore, Inc. + -- Contact: info@underscore.com + + chAppleTalkADSP(40), + -- AppleTalk Data Stream Protocol. + -- ADSP is part of the AppleTalk + -- suite of protocols. + -- It is a symmetric, connection- + -- oriented protocol that makes + -- possible the establishment + -- and maintenance of full-duplex + -- streams of data bytes between + -- two sockets in an AppleTalk + -- internet. + -- See [5]. + chPortSPX(41), + -- Sequenced Packet Exchange (SPX) + -- socket. + -- Novell, Inc. Similar to TCP, a + -- bi-directional data pipe using + -- Novell SPX as a transport. + -- + -- prtChannelInformation entries: + -- + -- Network Number + -- Keyword: Net + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The network number + -- + -- Node Number + -- Keyword: Node + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The node number + -- + -- Socket Number + -- Keyword: Socket + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SPX socket number + -- + -- There must be exactly one "Net" and + -- one "Node" and one "Socket" entry. A + -- HexString is a binary value + + -- represented as a string of + -- ASCII characters using hexadecimal + -- notation. + chPortHTTP(42), + -- Hypertext Transfer Protocol. See RFC 1945 [16] + -- and RFC 2616 [27]. + chNDPS(43), + -- Novell, Inc. + -- + -- prtChannelInformation entry: + -- + -- Printer Agent Name + -- Keyword: PA + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDPS Printer + -- Agent Name + chIPP(44) + -- Internet Printing Protocol (IPP), + -- (IPP/1.0 - see RFC 2910 [3] and RFC 2911 + -- [2]), also applies to all future versions + -- of IPP. + -- + -- IPP Printer URI + -- Keyword: URI + -- Syntax: URI (Unicode UTF-8 per + -- RFC 2396 [22]) + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: URI of this IPP Printer within + -- the Internet naming scope. Unicode + -- UTF-8 RFC 2279 [21] string with + -- hexadecimal escapes for any non-ASCII + -- characters (per RFC 2396 [22]). + -- Conformance: An IPP Printer shall list all + -- IPP URI it supports (one per IPP Channel + -- entry). If a URI contains the 'http:' + -- scheme it MUST have an explicit port. + -- See: RFC 2279 [21], RFC 2396 [22], RFC 2910 + -- [3], RFC 2911 [2]. + -- + -- IPP Printer Client Authentication + -- Keyword: Auth + + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A client authentication + -- mechanism supported for this IPP Printer + -- URI: + -- 'none' + -- no client authentication mechanism + -- 'requesting-user-name' + -- authenticated user in 'requesting- + -- user-name' + -- 'basic' + -- authenticated user via HTTP Basic + -- mechanism + -- 'digest' + -- authenticated user via HTTP Digest + -- mechanism + -- 'certificate' + -- authenticated user via certificate + -- mechanism + -- Conformance: An IPP Printer should list all + -- IPP client authentication mechanisms it + -- supports (one per IPP Channel entry). + -- See: [2] and [3]. + -- + -- IPP Printer Security + -- Keyword: Security + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A security mechanism supported + -- for this IPP Printer URI: + -- 'none' + -- no security mechanism + -- 'ssl3' + -- SSL3 secure communications channel + -- protocol + -- 'tls' + -- TLS secure communications channel + -- protocol + -- Conformance: An IPP Printer should list all + -- IPP security mechanisms it supports + -- (one per IPP Channel entry). + + -- See: RFC 2246 [18], RFC 2911 [2]. + -- + -- IPP Printer Protocol Version + -- Keyword: Version + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Multiple + -- Default: '1.0' + -- Description: All of the IPP protocol + -- versions (major.minor) supported for this + -- IPP Printer URI: + -- '1.0' + -- IPP/1.0 conforming Printer + -- '1.1' + -- IPP/1.1 conforming Printer + -- Conformance: An IPP Printer should list all + -- IPP versions it supports (all listed in + -- each IPP Channel entry). An IPP Client + -- should select the highest numbered + -- version that the client supports for use + -- in all IPP Requests (for optimum + -- interworking). + -- See: RFC 2911 [2]. +} +-- +-- Interpreter Group textual conventions +-- + +PrtInterpreterLangFamilyTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "This enumeration indicates the type of interpreter that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), + langPCL(3), -- PCL. Starting with PCL version 5, + -- HP-GL/2 is included as part of the + -- PCL language. + -- PCL and HP-GL/2 are registered + -- trademarks of Hewlett-Packard + -- Company. + langHPGL(4), -- Hewlett-Packard Graphics Language. + -- HP-GL is a registered trademark of + + -- Hewlett-Packard Company. + langPJL(5), -- Peripheral Job Language. Appears in + -- the data stream between data intended + -- for a page description language. + -- Hewlett-Packard Co. + langPS(6), -- PostScript (tm) Language + -- Postscript - a trademark of Adobe + -- Systems Incorporated which may be + -- registered in certain jurisdictions + langIPDS(7), -- Intelligent Printer Data Stream + -- Bi-directional print data stream for + -- documents consisting of data objects + -- (text, image, graphics, bar codes), + -- resources (fonts, overlays) and page, + -- form and finishing instructions. + -- Facilitates system level device + -- control, document tracking and error + -- recovery throughout the print + -- process. + -- IBM Corporation. + langPPDS(8), -- IBM Personal Printer Data Stream. + -- Originally called IBM ASCII, the name + -- was changed to PPDS when the Laser + -- Printer was introduced in 1989. + -- Lexmark International, Inc. + langEscapeP(9), -- Epson Corp. + langEpson(10), + langDDIF(11), -- Digital Document Interchange Format + -- Digital Equipment Corp., Maynard MA + langInterpress(12), + -- Xerox Corp. + langISO6429(13), -- ISO 6429. Control functions for + -- Coded Character Sets (has ASCII + -- control characters, plus additional + -- controls for + -- character imaging devices.) + langLineData(14), -- line-data: Lines of data as + -- separate ASCII or EBCDIC records + -- and containing no control functions + -- (no CR, LF, HT, FF, etc.) + -- For use with traditional line + -- printers. May use CR and/or LF to + -- delimit lines, instead of records. + -- See ISO 10175 Document Printing + -- Application (DPA) [7]. + + langMODCA(15), -- Mixed Object Document Content + -- Architecture + -- Definitions that allow the + -- composition, interchange, and + -- presentation of final form + -- documents as a collection of data + -- objects (text, image, graphics, bar + -- codes), resources (fonts, overlays) + -- and page, form and finishing + -- instructions. + -- IBM Corporation. + langREGIS(16), -- Remote Graphics Instruction Set, + -- Digital Equipment Corp., Maynard MA + langSCS(17), -- SNA Character String + -- Bi-directional print data stream for + -- SNA LU-1 mode of communication. + -- IBM + langSPDL(18), -- ISO 10180 Standard Page Description + -- Language + -- ISO Standard + langTEK4014(19), -- Tektronix Corp. + langPDS(20), + langIGP(21), -- Printronix Corp. + langCodeV(22), -- Magnum Code-V, Image and printer + -- control language used to control + -- impact/dot-matrix printers. + -- QMS, Inc., Mobile AL + langDSCDSE(23), -- DSC-DSE: Data Stream Compatible and + -- Emulation Bi-directional print data + -- stream for non-SNA (DSC) and SNA LU-3 + -- 3270 controller (DSE) communications + -- IBM + langWPS(24), -- Windows Printing System, Resource + -- based command/data stream used by + -- Microsoft At Work Peripherals. + -- Developed by the Microsoft + -- Corporation. + langLN03(25), -- Early DEC-PPL3, Digital Equipment + -- Corp. + langCCITT(26), + langQUIC(27), -- QUIC (Quality Information Code), Page + -- Description Language for laser + -- printers. Included graphics, printer + -- control capability and emulation of + -- other well-known printer. + + -- QMS, Inc. + langCPAP(28), -- Common Printer Access Protocol + -- Digital Equipment Corp. + langDecPPL(29), -- Digital ANSI-Compliant Printing + -- Protocol + -- (DEC-PPL) + -- Digital Equipment Corp. + langSimpleText(30), + -- simple-text: character coded data, + -- including NUL, CR , LF, HT, and FF + -- control characters. See ISO 10175 + -- Document Printing Application (DPA) [7]. + langNPAP(31), -- Network Printer Alliance Protocol + -- (NPAP). This protocol has been + -- superseded by the IEEE 1284.1 TIPSI + -- Std (ref. LangTIPSI(49)). + langDOC(32), -- Document Option Commands, Appears in + -- the data stream between data + -- intended for a page description. + -- QMS, Inc. + langimPress(33), -- imPRESS, Page description language + -- originally developed for the + -- ImageServer product line. A binary + -- language providing representations + -- of text, simple graphics, and some + -- large forms (simple + -- bit-map and CCITT group 3/4 + -- encoded).The + -- language was intended to be sent over + -- an 8-bit channel and supported early + -- document preparation languages (e.g., + -- TeX and TROFF). + -- QMS, Inc. + langPinwriter(34), + -- 24 wire dot matrix printer for + -- USA, Europe, and Asia except + -- Japan. + -- More widely used in Germany, and + -- some Asian countries than in US. + -- NEC + langNPDL(35), -- Page printer for Japanese market. + -- NEC + langNEC201PL(36), -- Serial printer language used in + -- the Japanese market. + -- NEC + + langAutomatic(37), + -- Automatic PDL sensing. Automatic + -- sensing of the interpreter + -- language family by the printer + -- examining the document content. + -- Which actual interpreter language + -- families are sensed depends on + -- the printer implementation. + langPages(38), -- Page printer Advanced Graphic + -- Escape Set + -- IBM Japan + langLIPS(39), -- LBP Image Processing System + langTIFF(40), -- Tagged Image File Format (Aldus) + langDiagnostic(41), + -- A hex dump of the input to the + -- interpreter + langPSPrinter(42), + -- The PostScript Language used for + -- control (with any PDLs) + -- Adobe Systems Incorporated + langCaPSL(43), -- Canon Print Systems Language + langEXCL(44), -- Extended Command Language + -- Talaris Systems Inc. + langLCDS(45), -- Line Conditioned Data Stream + -- Xerox Corporation + langXES(46), -- Xerox Escape Sequences + -- Xerox Corporation + langPCLXL(47), -- Printer Control Language. Extended + -- language features for printing, and + -- printer control. + -- Hewlett-Packard Co. + langART(48), -- Advanced Rendering Tools (ART). + -- Page Description language + -- originally developed for the Laser + -- Press printers. + -- Technical reference manual: "ART IV + -- Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langTIPSI(49), -- Transport Independent Printer + -- System Interface (ref. IEEE Std. + -- 1284.1) + langPrescribe(50), + -- Page description and printer + -- control language. It can be + -- described with ordinary ASCII + + -- Technical reference manual: + -- "PRESCRIBE II Programming Manual" + langLinePrinter(51), + -- A simple-text character stream which + -- supports the control codes LF, VT, + -- FF, and plus Centronics or + -- Dataproducts Vertical Format Unit + -- (VFU) language is commonly used on + -- many older model line and matrix + -- printers. + langIDP(52), -- Imaging Device Protocol + -- Apple Computer. + langXJCL(53), -- Xerox Job Control Language (JCL). + -- A Job Control language originally + -- developed for the LaserPress printers + -- and is capable of switching PDLs. + -- Technical reference manual: + -- "ART IV Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langPDF(54), -- Adobe Portable Document Format + -- Adobe Systems, Inc. + langRPDL(55), -- Ricoh Page Description Language for + -- printers. + -- Technical manual "RPDL command + -- reference" No.307029 + -- RICOH, Co. LTD + langIntermecIPL(56), + -- Intermec Printer Language for label + -- printers. + -- Technical Manual: "IPL Programmers + -- Reference Manual" + -- Intermec Corporation + langUBIFingerprint(57), + -- An intelligent basic-like programming + -- language for label printers. + -- Reference Manual: "UBI Fingerprint + -- 7.1", No. 1-960434-00 + -- United Barcode Industries + langUBIDirectProtocol(58), + -- An intelligent control language for + -- label printers. + -- Programmers guide: " UBI Direct + -- Protocol", No. 1-960419-00 + -- United Barcode Industries + langFujitsu(59) + + -- Fujitsu Printer Language + -- Reference Manual: + -- "FM Printer Sequence" No. 80HP-0770 + -- FUJITSU LIMITED + } + +-- +-- Input/Output Group Textual Conventions +-- + +PrtInputTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by a specific component or + components." + SYNTAX INTEGER { + other(1), + unknown(2), + sheetFeedAutoRemovableTray(3), + sheetFeedAutoNonRemovableTray(4), + sheetFeedManual(5), + continuousRoll(6), + continuousFanFold(7) + } + +PrtOutputTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "The Type of technology supported by this output sub-unit." + SYNTAX INTEGER { + other(1), + unknown(2), + removableBin(3), + unRemovableBin(4), + continuousRollDevice(5), + mailBox(6), + continuousFanFold(7) + } + +PrtOutputStackingOrderTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + + DESCRIPTION + "The current state of the stacking order for the associated + output sub-unit. 'firstToLast' means that as pages are output, + the front of the next page is placed against the back of the + previous page. 'lastToFirst' means that as pages are output, the + back of the next page is placed against the front of the + previous page." + SYNTAX INTEGER { + unknown(2), + firstToLast(3), + lastToFirst(4) + } + +PrtOutputPageDeliveryOrientationTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are delivered + to the associated output sub-unit. Values are Face-Up and Face + Down (Note: interpretation of these values is, in general, + context-dependent based on locale; presentation of these values + to an end-user should be normalized to the expectations of the + user." + SYNTAX INTEGER { + faceUp(3), + faceDown(4) + } + +-- +-- Marker Group Textual Conventions +-- + +PrtMarkerMarkTechTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of marking technology used for this marking sub-unit" + SYNTAX INTEGER { + other(1), + unknown(2), + electrophotographicLED(3), + electrophotographicLaser(4), + electrophotographicOther(5), + impactMovingHeadDotMatrix9pin(6), + impactMovingHeadDotMatrix24pin(7), + + impactMovingHeadDotMatrixOther(8), + impactMovingHeadFullyFormed(9), + impactBand(10), + impactOther(11), + inkjetAqueous(12), + inkjetSolid(13), + inkjetOther(14), + pen(15), + thermalTransfer(16), + thermalSensitive(17), + thermalDiffusion(18), + thermalOther(19), + electroerosion(20), + electrostatic(21), + photographicMicrofiche(22), + photographicImagesetter(23), + photographicOther(24), + ionDeposition(25), + eBeam(26), + typesetter(27) + } + +PrtMarkerCounterUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The + time units of measure are provided for a device like a + strip recorder that does not or cannot track the physical + dimensions of the media and does not use characters, + lines or sheets." + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + characters(5), + lines(6), + impressions(7), + sheets(8), + dotRow(9), + hours(11), + feet(16), + meters(17) + } + + +PrtMarkerSuppliesTypeTC ::= TEXTUAL-CONVENTION + -- This value is a type 3 enumeration. + STATUS current + DESCRIPTION + "The type of this supply." + SYNTAX INTEGER { + other(1), + unknown(2), + toner(3), + wasteToner(4), + ink(5), + inkCartridge(6), + inkRibbon(7), + wasteInk(8), + opc(9), -- photo conductor + developer(10), + fuserOil(11), + solidWax(12), + ribbonWax(13), + wasteWax(14), + fuser(15), + coronaWire(16), + fuserOilWick(17), + cleanerUnit(18), + fuserCleaningPad(19), + transferUnit(20), + tonerCartridge(21), + fuserOiler(22), + -- Values for Finisher MIB + water(23), + wasteWater(24), + glueWaterAdditive(25), + wastePaper(26), + bindingSupply(27), + bandingSupply(28), + stitchingWire(29), + shrinkWrap(30), + paperWrap(31), + staples(32), + inserts(33), + covers(34) + -- End of values for Finisher MIB + } + + +PrtMarkerSuppliesSupplyUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "Unit of this marker supply container/receptacle." + SYNTAX INTEGER { + other(1), + unknown(2), + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + impressions(7), + sheets(8), + hours(11), + thousandthsOfOunces(12), + tenthsOfGrams(13), + hundrethsOfFluidOunces(14), + tenthsOfMilliliters(15), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), -- e.g. number of staples + percent(19) + } + +PrtMarkerSuppliesClassTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply + that is consumed or a receptacle that is filled." + SYNTAX INTEGER { + other(1), + supplyThatIsConsumed(3), + receptacleThatIsFilled(4) + } + +PrtMarkerColorantRoleTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The role played by this colorant." + SYNTAX INTEGER { -- Colorant Role + other(1), + process(3), + spot(4) + + } + +PrtMarkerAddressabilityUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +-- +-- Media Path Textual Conventions +-- + +PrtMediaPathMaxSpeedPrintUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all + media paths in the printer." + SYNTAX INTEGER { + tenThousandthsOfInchesPerHour(3),-- .0001/hour + micrometersPerHour(4), + charactersPerHour(5), + linesPerHour(6), + impressionsPerHour(7), + sheetsPerHour(8), + dotRowPerHour(9), + feetPerHour(16), + metersPerHour(17) + } + +PrtMediaPathTypeTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of the media path for this media path." + SYNTAX INTEGER { + other(1), + unknown(2), + longEdgeBindingDuplex(3), + shortEdgeBindingDuplex(4), + + simplex(5) + } + +-- +-- Interpreter Group Textual Conventions +-- + +PrtInterpreterTwoWayTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + SYNTAX INTEGER { + yes(3), + no(4) + } + +-- +-- Console Group Textual Conventions +-- + +PrtConsoleColorTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The color of this light." + SYNTAX INTEGER { + other(1), + unknown(2), + white(3), + red(4), + green(5), + blue(6), + cyan(7), + magenta(8), + yellow(9), + orange(10) + } + +PrtConsoleDisableTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "This value indicates whether or not input is accepted from + + the operator console. A value of 'operatorConsoleEnabled' + indicates that input is accepted from the console, and a value + of 'operatorConsoleDisabled' indicates that input is not + accepted from the console. The other values indicate that + limited input is accepted from the console, and the limitations + are product specific. Limitations are generally less restrictive + for operatorConsoleEnabledLevel1 than for + operatorConsoleEnabledLeve2, which is less restrictive than + operatorConsoleEnabledLevel3." + SYNTAX INTEGER { + operatorConsoleEnabled(3), + operatorConsoleDisabled(4) + } + +-- +-- Alert Group Textual Conventions +-- + +PrtAlertSeverityLevelTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry in the + table. A critical alert is binary by nature and definition. A + warning is defined to be a non-critical alert. The original and + most common warning is unary. The binary warning was added later + and given a more distinguished name." + SYNTAX INTEGER { + other(1), + critical(3), + warning(4), + warningBinaryChangeEvent(5) + } + +PrtAlertTrainingLevelTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The level of training required to handle this alert, if human + intervention is required. The noInterventionRequired value + should be used if the event does not require any human + intervention. The training level is an enumeration that is + determined and assigned by the printer manufacturer based on the + information or the training required to handle this alert. The + + printer will break alerts into these different training levels. + It is the responsibility of the management application in the + system to determine how a particular alert is handled and how + and to whom that alert is routed. The following are the four + training levels of alerts: + + Field Service - Alerts that typically require advanced + training and technical knowledge of the printer and its sub + units. An example of a technical person would be a + manufacturer's Field Service representative, or other person + formally trained by the manufacturer or similar + representative. + Trained - Alerts that require an intermediate or moderate level + of knowledge of the printer and its sub-units. A typical + examples of alerts that a trained operator can handle is + replacing toner cartridges. + Untrained - Alerts that can be fixed without prior + training either because the action to correct the alert is + obvious or the printer can help the untrained person fix the + problem. A typical example of such an alert is reloading + paper trays and emptying output bins on a low end printer. + Management - Alerts that have to do with overall operation of + and configuration of the printer. Examples of management + events are configuration change of sub-units." + SYNTAX INTEGER { + other(1), + unknown(2), + untrained(3), + trained(4), + fieldService(5), + management(6), + noInterventionRequired(7) + } + +PrtAlertGroupTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration for values in the range + -- 1 to 29. + -- Values of 30 and greater are for use in other MIBs that augment + -- tables in the Printer MIB. Therefore, other MIBs may assign + -- alert codes of 30 or higher to use the alert table from the + -- Printer MIB without requiring revising and re-publishing this + -- document. + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + + is related. Input, output, and markers are examples of printer + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printer MIB. + + NOTE: Alert type codes have been added for the host resources + MIB storage table and device table. These additional types are + for situations in which the printer's storage and device objects + must generate alerts (and possibly traps for critical alerts)." + SYNTAX INTEGER { + other(1), + hostResourcesMIBStorageTable(3), + hostResourcesMIBDeviceTable(4), + generalPrinter(5), + cover(6), + localization(7), + input(8), + output(9), + marker(10), + markerSupplies(11), + markerColorant(12), + mediaPath(13), + channel(14), + interpreter(15), + consoleDisplayBuffer(16), + consoleLights(17), + alert(18), + -- Values for Finisher MIB + finDevice(30), + finSupply(31), + finSupplyMediaInput(32), + finAttributeTable(33) + -- End of values for Finisher MIB + } + +PrtAlertCodeTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The code that describes the type of alert for this entry in the + table. Binary change event alerts describe states of the subunit + while unary change event alerts describe a single event. The + same alert code can be used for a binary change event or a unary + change event, depending on implementation. Also, the same alert + code can be used to indicate a critical or a non-critical + + (warning) alert, depending on implementation. The value of + prtAlertSeverityLevel specifies binary vs. unary and critical + vs. non-critical for each event for the implementation. + + While there are some specific codes for many subunits, the + generic codes should be used for most subunit alerts. The + network management station can then query the subunit specified + by prtAlertGroup to determine further subunit status and other + subunit information. + + An agent shall not add two entries to the alert table for the + same event, one containing a generic event code and the other + containing a specific event code; the agent shall add only one + entry in the alert table for each event; either generic + (preferred) or specific, not both. + + Implementation of the unary change event + alertRemovalOfBinaryChangeEntry(1801) is optional. When + implemented, this alert code shall indicate to network + management stations that the trailing edge of a binary change + event has occurred and the corresponding alert entry has been + removed from the alert table. As with all events, the + alertRemovalOfBinaryChangeEntry(1801) alert shall be placed at + the end of the alert table. Such an alert table entry shall + specify the following information: + + prtAlertSeverityLevel warningUnaryChangeEvent(4) + prtAlertTrainingLevel noInterventionRequired(7) + prtAlertGroup alert(18) + prtAlertGroupIndex the index of the row in the + alert table of the binary + change event that this event + has removed. + prtAlertLocation unknown (-2) + prtAlertCode alertRemovalOfBinaryChangeEntry(1801) + prtAlertDescription + prtAlertTime the value of sysUpTime at + the time of the removal of the + binary change event from the + alert table. + + Optionally, the agent may generate a trap coincident with + removing the binary change event and placing the unary change + event alertRemovalOfBinaryChangeEntry(1801) in the alert table. + For such a trap, the prtAlertIndex sent with the above trap + + parameters shall be the index of the + alertRemovalOfBinaryChangeEvent row that was added to the + prtAlertTable; not the index of the row that was removed from + the prtAlertTable." + SYNTAX INTEGER { + other(1), + -- an event that is not represented + -- by one of the alert codes + -- specified below. + unknown(2), + -- The following generic codes are common to + -- multiple groups. The NMS may + -- examine the prtAlertGroup object to determine + -- what group to query for further information. + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6), + configurationChange(7), + jam(8), + subunitMissing(9), + -- The subunit tray, bin, etc. + -- has been removed. + subunitLifeAlmostOver(10), + subunitLifeOver(11), + subunitAlmostEmpty(12), + subunitEmpty(13), + subunitAlmostFull(14), + subunitFull(15), + subunitNearLimit(16), + subunitAtLimit(17), + subunitOpened(18), + subunitClosed(19), + subunitTurnedOn(20), + subunitTurnedOff(21), + subunitOffline(22), + subunitPowerSaver(23), + subunitWarmingUp(24), + subunitAdded(25), + subunitRemoved(26), + subunitResourceAdded(27), + subunitResourceRemoved(28), + subunitRecoverableFailure(29), + subunitUnrecoverableFailure(30), + subunitRecoverableStorageError(31), + + subunitUnrecoverableStorageError(32), + subunitMotorFailure(33), + subunitMemoryExhausted(34), + subunitUnderTemperature(35), + subunitOverTemperature(36), + subunitTimingFailure(37), + subunitThermistorFailure(38), + -- general Printer group + doorOpen(501), -- DEPRECATED + -- Use coverOpened(3) + doorClosed(502), -- DEPRECATED + -- Use coverClosed(4) + powerUp(503), + powerDown(504), + printerNMSReset(505), + -- The printer has been reset by some + -- network management station(NMS) + -- writing into 'prtGeneralReset'. + printerManualReset(506), + -- The printer has been reset manually. + printerReadyToPrint(507), + -- The printer is ready to print. (i.e., + -- not warming up, not in power save + -- state, not adjusting print quality, + -- etc.). + + -- Input Group + inputMediaTrayMissing(801), + inputMediaSizeChange(802), + inputMediaWeightChange(803), + inputMediaTypeChange(804), + inputMediaColorChange(805), + inputMediaFormPartsChange(806), + inputMediaSupplyLow(807), + inputMediaSupplyEmpty(808), + inputMediaChangeRequest(809), + -- An interpreter has detected that a + -- different medium is need in this input + -- tray subunit. The prtAlertDescription may + -- be used to convey a human readable + -- description of the medium required to + -- satisfy the request. + inputManualInputRequest(810), + -- An interpreter has detected that manual + -- input is required in this subunit. The + + -- prtAlertDescription may be used to convey + -- a human readable description of the medium + -- required to satisfy the request. + inputTrayPositionFailure(811), + -- The input tray failed to position correctly. + inputTrayElevationFailure(812), + inputCannotFeedSizeSelected(813), + -- Output Group + outputMediaTrayMissing(901), + outputMediaTrayAlmostFull(902), + outputMediaTrayFull(903), + outputMailboxSelectFailure(904), + -- Marker group + markerFuserUnderTemperature(1001), + markerFuserOverTemperature(1002), + markerFuserTimingFailure(1003), + markerFuserThermistorFailure(1004), + markerAdjustingPrintQuality(1005), + -- Marker Supplies group + markerTonerEmpty(1101), + markerInkEmpty(1102), + markerPrintRibbonEmpty(1103), + markerTonerAlmostEmpty(1104), + markerInkAlmostEmpty(1105), + markerPrintRibbonAlmostEmpty(1106), + markerWasteTonerReceptacleAlmostFull(1107), + markerWasteInkReceptacleAlmostFull(1108), + markerWasteTonerReceptacleFull(1109), + markerWasteInkReceptacleFull(1110), + markerOpcLifeAlmostOver(1111), + markerOpcLifeOver(1112), + markerDeveloperAlmostEmpty(1113), + markerDeveloperEmpty(1114), + markerTonerCartridgeMissing(1115), + -- Media Path Device Group + mediaPathMediaTrayMissing(1301), + mediaPathMediaTrayAlmostFull(1302), + mediaPathMediaTrayFull(1303), + mediaPathcannotDuplexMediaSelected(1304), + -- Interpreter Group + interpreterMemoryIncrease(1501), + interpreterMemoryDecrease(1502), + interpreterCartridgeAdded(1503), + interpreterCartridgeDeleted(1504), + interpreterResourceAdded(1505), + + interpreterResourceDeleted(1506), + interpreterResourceUnavailable(1507), + interpreterComplexPageEncountered(1509), + -- The interpreter has encountered a page + -- that is too complex for the resources that + -- are available. + -- Alert Group + alertRemovalOfBinaryChangeEntry(1801) + -- A binary change event entry has been + -- removed from the alert table. This unary + -- change alert table entry is added to the + -- end of the alert table. + } + +-- The General Printer Group +-- +-- The general printer sub-unit is responsible for the overall +-- control and status of the printer. There is exactly one +-- general printer sub-unit in a printer. +-- +-- Implementation of every object in this group is mandatory except for +-- prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, +-- prtGeneralPrinterName, prtGeneralSerialNumber, +-- prtAlertCriticalEvents, and prtAlertAllEvents. + + +prtGeneral OBJECT IDENTIFIER ::= { printmib 5 } + +prtGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of general information per printer. + Objects in this table are defined in various + places in the MIB, nearby the groups to + which they apply. They are all defined + here to minimize the number of tables that would + otherwise need to exist." + ::= { prtGeneral 1 } + +prtGeneralEntry OBJECT-TYPE + SYNTAX PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "An entry exists in this table for each device entry in the host + resources MIB device table with a device type of 'printer'" + INDEX { hrDeviceIndex } + ::= { prtGeneralTable 1 } + +PrtGeneralEntry ::= SEQUENCE { + -- Note that not all of the objects in this sequence are in + -- the general printer group. The group to which an + -- object belongs is tagged with a label "General", "Input" + -- "Output", etc. after each entry in the following sequence. + -- + prtGeneralConfigChanges Counter32, -- General + prtGeneralCurrentLocalization Integer32, -- General + prtGeneralReset PrtGeneralResetTC, + -- General + prtGeneralCurrentOperator OCTET STRING, + -- Responsible Party + prtGeneralServicePerson OCTET STRING, + -- Responsible Party + prtInputDefaultIndex Integer32, -- Input + prtOutputDefaultIndex Integer32, -- Output + prtMarkerDefaultIndex Integer32, -- Marker + prtMediaPathDefaultIndex Integer32, -- Media Path + prtConsoleLocalization Integer32, -- Console + prtConsoleNumberOfDisplayLines Integer32, -- Console + prtConsoleNumberOfDisplayChars Integer32, -- Console + prtConsoleDisable PrtConsoleDisableTC, + -- Console, + prtAuxiliarySheetStartupPage PresentOnOff, + -- AuxiliarySheet + prtAuxiliarySheetBannerPage PresentOnOff, + -- AuxiliarySheet + prtGeneralPrinterName OCTET STRING, + -- General V2 + prtGeneralSerialNumber OCTET STRING, + -- General V2 + prtAlertCriticalEvents Counter32, -- Alert V2 + prtAlertAllEvents Counter32 -- Alert V2 + } + +prtGeneralConfigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "Counts configuration changes within the printer. A + configuration change is defined to be an action that results in + a change to any MIB object other than those that reflect status + or level, or those that act as counters or gauges. In addition, + any action that results in a row being added or deleted from any + table in the Printer MIB is considered a configuration change. + Such changes will often affect the capability of the printer to + service certain types of print jobs. Management applications may + cache infrequently changed configuration information about sub + units within the printer. This object should be incremented + whenever the agent wishes to notify management applications that + any cached configuration information for this device is to be + considered 'stale'. At this point, the management application + should flush any configuration information cached about this + device and fetch new configuration information. + + The following are examples of actions that would cause the + prtGeneralConfigChanges object to be incremented: + + - Adding an output bin + - Changing the media in a sensing input tray + - Changing the value of prtInputMediaType + + Note that the prtGeneralConfigChanges counter would not be + incremented when an input tray is temporarily removed to load + additional paper or when the level of an input device changes." + + ::= { prtGeneralEntry 1 } + +prtGeneralCurrentLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to the + current language, country, and character set to be used for + localized string values that are identified as being dependent + on the value of this object. Note that this object does not + apply to localized strings in the prtConsole group or to any + object that is not explicitly identified as being localized + according to prtGeneralCurrentLocalization. When an object's + 'charset' is controlled by the value of + prtGeneralCurrentLocalization, it MUST specify + LocalizedDescriptionStringTC as its syntax." + + ::= { prtGeneralEntry 2 } + +prtGeneralReset OBJECT-TYPE + -- This value is a type 3 enumeration. + SYNTAX PrtGeneralResetTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'powerCycleReset', 'resetToNVRAM', or + 'resetToFactoryDefaults' will result in the resetting of the + printer. When read, this object will always have the value + 'notResetting(3)', and a SET of the value 'notResetting' shall + have no effect on the printer. Some of the defined values are + optional. However, every implementation must support at least + the values 'notResetting' and 'resetToNVRAM'." + ::= { prtGeneralEntry 3 } + +-- The Responsible Party group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtGeneralCurrentOperator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person who is responsible for operating + this printer. It is suggested that this string include + information that would enable other humans to reach the + operator, such as a phone number. As a convention to + facilitate automatic notification of the operator by the + agent or network management station, the phone number, + fax number or email address should be indicated by the + URL schemes 'tel:', 'fax:' and 'mailto:', respectively. + If either the phone, fax, or email information is not + available, then a line should not be included for this + information. + + NOTE: For interoperability purposes, it is advisable to + use email addresses formatted according to RFC 822 [9] + requirements." + ::= { prtGeneralEntry 4 } + +prtGeneralServicePerson OBJECT-TYPE + + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person responsible for servicing this + printer. It is suggested that this string include + information that would enable other humans to reach the + service person, such as a phone number. As a convention + to facilitate automatic notification of the operator by + the agent or network management station, the phone + number, fax number or email address should be indicated + by the URL schemes 'tel:', 'fax:' and 'mailto:', + respectively. If either the phone, fax, or email + information is not available, then a line should not + be included for this information. + + NOTE: For interoperability purposes, it is advisable to use + email addresses formatted per RFC 822 [9] requirements." + + ::= { prtGeneralEntry 5 } + +-- Default indexes section +-- +-- The following four objects are used to specify the indexes of +-- certain subunits used as defaults during the printing process. + +prtInputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the default input + sub-unit: that is, this object selects the default source of + input media. + + This value shall be -1 if there is no default input subunit + specified for the printer as a whole. In this case, the actual + default input subunit may be specified by means outside the + scope of this MIB, such as by each interpreter in a printer with + multiple interpreters." + + ::= { prtGeneralEntry 6 } + +prtOutputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtOutputIndex corresponding to the default output + sub-unit; that is, this object selects the default output + destination. + + This value shall be -1 if there is no default output subunit + specified for the printer as a whole. In this case, the actual + default output subunit may be specified by means outside the + scope of this MIB, such as by each interpreter in a printer with + multiple interpreters." + + ::= { prtGeneralEntry 7 } + +prtMarkerDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the + default marker sub-unit; that is, this object selects the + default marker." + ::= { prtGeneralEntry 8 } + +prtMediaPathDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMediaPathIndex corresponding to + the default media path; that is, the selection of the + default media path." + ::= { prtGeneralEntry 9 } + +-- Console general section +-- +-- The following four objects describe overall parameters of the +-- printer console subsystem. + +prtConsoleLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + "The value of the prtLocalizationIndex corresponding to + the language, country, and character set to be used for the + console. This localization applies both to the actual display + on the console as well as the encoding of these console objects + in management operations. When an object's 'charset' is + controlled by the value of prtConsoleLocalization, it MUST + specify ConsoleDescriptionStringTC as its syntax." + ::= { prtGeneralEntry 10 } + +prtConsoleNumberOfDisplayLines OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of lines on the printer's physical + display. This value is 0 if there are no lines on the + physical display or if there is no physical display" + ::= { prtGeneralEntry 11 } + +prtConsoleNumberOfDisplayChars OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of characters per line displayed on the physical + display. This value is 0 if there are no lines on the physical + display or if there is no physical display" + ::= { prtGeneralEntry 12 } + +prtConsoleDisable OBJECT-TYPE + SYNTAX PrtConsoleDisableTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value indicates how input is (or is not) accepted from + the operator console." + ::= { prtGeneralEntry 13 } + +-- The Auxiliary Sheet Group +-- +-- The auxiliary sheet group allows the administrator to control +-- the production of auxiliary sheets by the printer. This group +-- contains only the "prtAuxiliarySheetStartupPage" and +-- "prtAuxiliarySheetBannerPage" objects. +-- + +-- This group is optional. However, to claim conformance to this +-- group it is necessary to implement every object in the group. + +prtAuxiliarySheetStartupPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing a startup page. If enabled, + a startup page will be printed shortly after power-up, when the + device is ready. Typical startup pages include test patterns + and/or printer configuration information." + ::= { prtGeneralEntry 14 } + +prtAuxiliarySheetBannerPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing banner pages at the + beginning of jobs. This is a master switch which applies to all + jobs, regardless of interpreter." + ::= { prtGeneralEntry 15 } + +-- Administrative section (The General V2 Group) +-- +-- The following two objects are used to specify administrative +-- information assigned to the printer. + +prtGeneralPrinterName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administrator-specified name for this printer. Depending + upon implementation of this printer, the value of this object + may or may not be same as the value for the MIB-II 'SysName' + object." + ::= { prtGeneralEntry 16 } + +prtGeneralSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + "A recorded serial number for this device that indexes some type + device catalog or inventory. This value is usually set by the + device manufacturer but the MIB supports the option of writing + for this object for site-specific administration of device + inventory or tracking." + ::= { prtGeneralEntry 17 } + +-- General alert table section (Alert Table V2 Group) +-- +-- The following two objects are used to specify counters +-- associated with the Alert Table. + +prtAlertCriticalEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the number of critical alert events that + have been recorded in the alert table. The value of this object + is RESET in the event of a power cycle operation (i.e., the + value is not persistent." + ::= { prtGeneralEntry 18 } + +prtAlertAllEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the total number of alert event entries + (critical and non-critical) that have been recorded in the alert + table" + ::= { prtGeneralEntry 19 } + +-- The Cover Table +-- +-- The cover portion of the General print sub-unit describes the +-- covers and interlocks of the printer. The Cover Table has an +-- entry for each cover and interlock. + +prtCover OBJECT IDENTIFIER ::= { printmib 6 } + +prtCoverTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "A table of the covers and interlocks of the printer." + ::= { prtCover 1 } + +prtCoverEntry OBJECT-TYPE + SYNTAX PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a cover or interlock. + Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtCoverIndex } + ::= { prtCoverTable 1 } + +PrtCoverEntry ::= SEQUENCE { + prtCoverIndex Integer32, + prtCoverDescription LocalizedDescriptionStringTC, + prtCoverStatus PrtCoverStatusTC + } + +prtCoverIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this Cover sub + unit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new cover + sub-units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtCoverEntry 1 } + +prtCoverDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer provided cover sub-mechanism name in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtCoverEntry 2 } + +prtCoverStatus OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtCoverStatusTC + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this cover sub-unit." + ::= { prtCoverEntry 3 } + +-- The Localization Table +-- +-- The localization portion of the General printer sub-unit is +-- responsible for identifying the natural language, country, and +-- character set in which character strings are expressed. There +-- may be one or more localizations supported per printer. The +-- available localizations are represented by the Localization +-- table. + +prtLocalization OBJECT IDENTIFIER ::= { printmib 7 } + +prtLocalizationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The available localizations in this printer." + ::= { prtLocalization 1 } + +prtLocalizationEntry OBJECT-TYPE + SYNTAX PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A description of a localization. + Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtLocalizationIndex } + ::= { prtLocalizationTable 1 } + +PrtLocalizationEntry ::= SEQUENCE { + prtLocalizationIndex Integer32, + prtLocalizationLanguage OCTET STRING, + prtLocalizationCountry OCTET STRING, + prtLocalizationCharacterSet CodedCharSet + } + +prtLocalizationIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this + localization entry. Although these values may change due to a + major reconfiguration of the device (e.g., the addition of new + localization data to the printer), values are expected to remain + stable across successive printer power cycles." + ::= { prtLocalizationEntry 1 } + +prtLocalizationLanguage OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character language code from ISO 639. Examples en, + ca, fr, de." + ::= { prtLocalizationEntry 2 } + +prtLocalizationCountry OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character country code from ISO 3166, a blank string (two + space characters) shall indicate that the country is not + defined. Examples: US, GB, FR, DE, ..." + ::= { prtLocalizationEntry 3 } + +prtLocalizationCharacterSet OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set used for this localization." + ::= { prtLocalizationEntry 4 } + +-- The System Resources Tables +-- +-- The Printer MIB makes use of the Host Resources MIB to +-- define system resources by referencing the storage +-- and device groups of the print group. In order to +-- determine, amongst multiple printers serviced by +-- one agent, which printer owns a particular resource, +-- the prtStorageRef and prtDeviceRef tables associate + +-- particular storage and device entries to printers. + +prtStorageRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtGeneral 2 } + +prtStorageRefEntry OBJECT-TYPE + SYNTAX PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB storage table that represents storage associated + with a printer managed by this agent." + INDEX { hrStorageIndex, prtStorageRefSeqNumber } + ::= { prtStorageRefTable 1 } + +PrtStorageRefEntry ::= SEQUENCE { + prtStorageRefSeqNumber Integer32, + prtStorageRefIndex Integer32 + } + +prtStorageRefSeqNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrStorageIndex. This object allows a storage entry to + point to the multiple printer devices with which it is + associated." + ::= { prtStorageRefEntry 1 } + +prtStorageRefIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + storageEntry is associated with." + ::= { prtStorageRefEntry 2 } + + +prtDeviceRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtGeneral 3 } + +prtDeviceRefEntry OBJECT-TYPE + SYNTAX PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB device table that represents a device associated + with a printer managed by this agent." + INDEX { hrDeviceIndex, prtDeviceRefSeqNumber } + ::= { prtDeviceRefTable 1 } + +PrtDeviceRefEntry ::= SEQUENCE { + prtDeviceRefSeqNumber Integer32, + prtDeviceRefIndex Integer32 + } + +prtDeviceRefSeqNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrDeviceIndex. This object allows a device entry to + point to the multiple printer devices with which it is + associated." + ::= { prtDeviceRefEntry 1 } + +prtDeviceRefIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + deviceEntry is associated with." + ::= { prtDeviceRefEntry 2 } + + +-- The Input Group +-- +-- Input sub-units are managed as a tabular, indexed collection +-- of possible devices capable of providing media for input to +-- the printing process. Input sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other media +-- characteristics, and may be capable of indicating current +-- status or capacity. +-- +-- Implementation of every object in this group is mandatory except for +-- prtInputMediaLoadTimeout and prtInputNextIndex. + +prtInput OBJECT IDENTIFIER ::= { printmib 8 } + +prtInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of providing media for input to + the printing process." + ::= { prtInput 2 } + +prtInputEntry OBJECT-TYPE + SYNTAX PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of providing media for input to + the printing process. Entries may exist in the table for each + device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtInputIndex } + ::= { prtInputTable 1 } + +PrtInputEntry ::= SEQUENCE { + prtInputIndex Integer32, + prtInputType PrtInputTypeTC, + prtInputDimUnit PrtMediaUnitTC, + prtInputMediaDimFeedDirDeclared Integer32, + prtInputMediaDimXFeedDirDeclared Integer32, + prtInputMediaDimFeedDirChosen Integer32, + prtInputMediaDimXFeedDirChosen Integer32, + prtInputCapacityUnit PrtCapacityUnitTC, + prtInputMaxCapacity Integer32, + + prtInputCurrentLevel Integer32, + prtInputStatus PrtSubUnitStatusTC, + prtInputMediaName OCTET STRING, + prtInputName OCTET STRING, + prtInputVendorName OCTET STRING, + prtInputModel OCTET STRING, + prtInputVersion OCTET STRING, + prtInputSerialNumber OCTET STRING, + prtInputDescription LocalizedDescriptionStringTC, + prtInputSecurity PresentOnOff, + prtInputMediaWeight Integer32, + prtInputMediaType OCTET STRING, + prtInputMediaColor OCTET STRING, + prtInputMediaFormParts Integer32, + prtInputMediaLoadTimeout Integer32, + prtInputNextIndex Integer32 + } + +prtInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this input sub + unit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of n input sub- + units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtInputEntry 1 } + +prtInputType OBJECT-TYPE + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by the input sub-unit. Note, + the Optional Input Class provides for a descriptor field to + further qualify the other choice." + ::= { prtInputEntry 2 } + +prtInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The unit of measurement for use calculating and relaying + dimensional values for this input sub-unit." + ::= { prtInputEntry 3 } + +prtInputMediaDimFeedDirDeclared OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the feed direction, of the media that is (or, if empty, was or + will be) in this input sub-unit. The feed direction is the + direction in which the media is fed on this sub-unit. This + dimension is measured in input sub-unit dimensional units + (controlled by prtInputDimUnit, which uses PrtMediaUnitTC). If + this input sub-unit can reliably sense this value, the value is + sensed by the printer and may not be changed by management + requests. Otherwise, the value may be changed. The value (-1) + means other and specifically means that this sub-unit places no + restriction on this parameter. The value (-2) indicates + unknown." + ::= { prtInputEntry 4 } + +prtInputMediaDimXFeedDirDeclared OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the cross feed direction, of the media that is (or, if empty, + was or will be) in this input sub-unit. The cross feed + direction is ninety degrees relative to the feed direction + associated with this sub-unit. This dimension is measured in + input sub-unit dimensional units (controlled by prtInputDimUnit, + which uses PrtMediaUnitTC). If this input sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed by management requests. Otherwise, the value may be + changed. The value (-1) means other and specifically means that + this sub-unit places no restriction on this parameter. The value + (-2) indicates unknown." + ::= { prtInputEntry 5 } + +prtInputMediaDimFeedDirChosen OBJECT-TYPE + SYNTAX Integer32 + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the feed direction) is present in this input source. Note that + this value will be used even if the input tray is empty. Feed + dimension measurements are taken relative to the feed direction + associated with that sub-unit and are in input sub-unit + dimensional units (controlled by prtInputDimUnit, which uses + PrtMediaUnitTC). If the printer supports the declared dimension, + the granted dimension is the same as the declared dimension. If + not, the granted dimension is set to the closest dimension that + the printer supports when the declared dimension is set. The + value (-1) means other and specifically indicates that this + sub-unit places no restriction on this parameter. The value (-2) + indicates unknown." + ::= { prtInputEntry 6 } + +prtInputMediaDimXFeedDirChosen OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the cross feed direction) is present in this input source. Note + that this value will be used even if the input tray is empty. + The cross feed direction is ninety degrees relative to the feed + direction associated with this sub-unit. This dimension is + measured in input sub-unit dimensional units (controlled by + prtInputDimUnit, which uses PrtMediaUnitTC). If the printer + supports the declare dimension, the granted dimension is the + same as the declared dimension. If not, the granted dimension is + set to the closest dimension that the printer supports when the + declared dimension is set. The value (-1) means other and + specifically indicates that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 7 } + +prtInputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this input sub-unit." + + ::= { prtInputEntry 8 } + +prtInputMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value reflects claimed + capacity. If this input sub-unit can reliably sense this value, + the value is sensed by the printer and may not be changed by + management requests; otherwise, the value may be written (by a + Remote Control Panel or a Management Application). The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 9 } + +prtInputCurrentLevel OBJECT-TYPE + SYNTAX Integer32 -- in capacity units + -- (PrtCapacityUnitTC). + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). If this input sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed by management requests; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. The value (-3) means + that the printer knows that at least one unit remains." + ::= { prtInputEntry 10 } + +prtInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this input sub-unit." + ::= { prtInputEntry 11 } + +prtInputMediaName OBJECT-TYPE + + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the media contained in this input sub-unit; + This description is intended for display to a human operator. + This description is not processed by the printer. It is used to + provide information not expressible in terms of the other media + attributes (e.g. prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaType). An example would be 'legal tender bond + paper'." + REFERENCE + "See Appendix C, 'Media Names'." + ::= { prtInputEntry 12 } + +-- INPUT MEASUREMENT +-- +-- _______ | | +-- ^ | | +-- | | | | +-- | |_ _ _ _ _ _ _ _| _______________ |direction +-- | | | ^ v +-- MaxCapacity | Sheets | | +-- | | left | CurrentLevel +-- | | in | | +-- v | tray | v +-- _______ +_______________+ _______ + +-- The Extended Input Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input sub-unit." + ::= { prtInputEntry 13 } + +prtInputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The vendor name of this input sub-unit." + ::= { prtInputEntry 14 } + +prtInputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name of this input sub-unit." + ::= { prtInputEntry 15 } + +prtInputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this input sub-unit." + ::= { prtInputEntry 16 } + +prtInputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this input sub-unit." + ::= { prtInputEntry 17 } + +prtInputDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this input sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtInputEntry 18 } + +prtInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this input sub-unit has some security associated + with it." + + ::= { prtInputEntry 19 } + +-- The Input Media Group +-- +-- The Input Media Group supports identification of media +-- installed or available for use on a printing device. +-- Medium resources are identified by name, and include a +-- collection of characteristic attributes that may further be +-- used for selection and management of them. +-- The Input Media group consists of a set of optional +-- "columns" in the Input Table. In this manner, a minimally +-- conforming implementation may choose to not support reporting +-- of media resources if it cannot do so. +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtInputMediaWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the medium associated with this input sub-unit in + grams / per meter squared. The value (-2) means unknown." + ::= { prtInputEntry 20 } + +prtInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input sub + unit. This name need not be processed by the printer; it might + simply be displayed to an operator. The standardized string + values from ISO 10175 (DPA) and ISO 10180 (SPDL) are: + + stationery Separately cut sheets of an opaque + material + transparency Separately cut sheets of a transparent + material + envelope Envelopes that can be used for + conventional mailing purposes + envelope-plain Envelopes that are not preprinted and + have no windows + envelope-window Envelopes that have windows for + + addressing purposes + continuous-long Continuously connected sheets of an + opaque material connected along the + long edge + continuous-short Continuously connected sheets of an + opaque material connected along the + short edge + tab-stock Media with tabs + multi-part-form Form medium composed of multiple layers + not pre-attached to one another; each + sheet may be drawn separately from an + input source + labels Label stock + multi-layer Form medium composed of multiple layers + which are pre-attached to one another; + e.g., for use with impact printers. + + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes." + ::= { prtInputEntry 21 } + +prtInputMediaColor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the color of the medium associated with + this input sub-unit using standardized string values + from ISO 10175 (DPA) and ISO 10180 (SPDL) which are: + + other + unknown + white + pink + yellow + buff + goldenrod + blue + green + transparent + + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes." + + ::= { prtInputEntry 22 } + +prtInputMediaFormParts OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of parts associated with the medium + associated with this input sub-unit if the medium is a + multi-part form. The value (-1) means other and + specifically indicates that the device places no + restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 23 } + +-- The Input Switching Group +-- +-- The input switching group allows the administrator to set the +-- input subunit time-out for the printer and to control the +-- automatic input subunit switching by the printer when an input +-- subunit becomes empty. +-- +-- This group is optional. However, to claim conformance to this +-- group, it is required to implement every object in the group. + +prtInputMediaLoadTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the printer is not able to print due to a subunit being + empty or the requested media must be manually loaded, the + printer will wait for the duration (in seconds) specified by + this object. Upon expiration of the time-out, the printer will + take the action specified by prtInputNextIndex. + + The event which causes the printer to enter the waiting state is + product specific. If the printer is not waiting for manually fed + media, it may switch from an empty subunit to a different + subunit without waiting for the time-out to expire. + + A value of (-1) implies 'other' or 'infinite' which translates + to 'wait forever'. The action which causes printing to continue + is product specific. A value of (-2) implies 'unknown'." + ::= { prtInputEntry 24 } + + +prtInputNextIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the input subunit + which will be used when this input subunit is emptied and the + time-out specified by prtInputMediaLoadTimeout expires. A value + of zero(0) indicates that auto input switching will not occur + when this input subunit is emptied. If the time-out specified by + prtInputLoadMediaTimeout expires and this value is zero(0), the + job will be aborted. A value of (-1) means other. The value (-2) + means 'unknown' and specifically indicates that an + implementation specific method will determine the next input + subunit to use at the time this subunit is emptied and the time + out expires. The value(-3) means input switching is not + supported for this subunit." + ::= { prtInputEntry 25 } + +-- The Output Group +-- +-- Output sub-units are managed as a tabular, indexed collection +-- of possible devices capable of receiving media delivered from +-- the printing process. Output sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other characteristics, +-- and may be capable of indicating current status or capacity. +-- +-- Implementation of every object in this group is mandatory. + +prtOutput OBJECT IDENTIFIER ::= { printmib 9 } + +prtOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of receiving media delivered + from the printing process." + ::= { prtOutput 2 } + +prtOutputEntry OBJECT-TYPE + SYNTAX PrtOutputEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Attributes of a device capable of receiving media delivered + from the printing process. Entries may exist in the table for + each device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtOutputIndex } + ::= { prtOutputTable 1 } + +PrtOutputEntry ::= SEQUENCE { + prtOutputIndex Integer32, + prtOutputType PrtOutputTypeTC, + prtOutputCapacityUnit PrtCapacityUnitTC, + prtOutputMaxCapacity Integer32, + prtOutputRemainingCapacity Integer32, + prtOutputStatus PrtSubUnitStatusTC, + prtOutputName OCTET STRING, + prtOutputVendorName OCTET STRING, + prtOutputModel OCTET STRING, + prtOutputVersion OCTET STRING, + prtOutputSerialNumber OCTET STRING, + prtOutputDescription LocalizedDescriptionStringTC, + prtOutputSecurity PresentOnOff, + prtOutputDimUnit PrtMediaUnitTC, + prtOutputMaxDimFeedDir Integer32, + prtOutputMaxDimXFeedDir Integer32, + prtOutputMinDimFeedDir Integer32, + prtOutputMinDimXFeedDir Integer32, + prtOutputStackingOrder PrtOutputStackingOrderTC, + prtOutputPageDeliveryOrientation + PrtOutputPageDeliveryOrientationTC, + prtOutputBursting PresentOnOff, + prtOutputDecollating PresentOnOff, + prtOutputPageCollated PresentOnOff, + prtOutputOffsetStacking PresentOnOff + } + +prtOutputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by this printer to identify this + output sub-unit. Although these values may change due + to a major reconfiguration of the sub-unit (e.g. the + addition of new output devices to the printer), values + + are expected to remain stable across successive printer + power cycles." + ::= { prtOutputEntry 1 } + +prtOutputType OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtOutputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology supported by this output sub-unit." + ::= { prtOutputEntry 2 } + +prtOutputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this output sub-unit." + ::= { prtOutputEntry 3 } + +prtOutputMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this output sub-unit in output sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value essentially + reflects claimed capacity. If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed by management requests; otherwise, the value may be + written (by a Remote Control Panel or a Management Application). + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown." + ::= { prtOutputEntry 4 } + +prtOutputRemainingCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The remaining capacity of the possible output sub-unit capacity + + in output sub-unit capacity units (PrtCapacityUnitTC)of this + output sub-unit. If this output sub-unit can reliably sense this + value, the value is sensed by the printer and may not be + modified by management requests; otherwise, the value may be + written (by a Remote Control Panel or a Management Application). + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. The value (-3) means that the printer knows + that there remains capacity for at least one unit." + ::= { prtOutputEntry 5 } + +prtOutputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this output sub-unit." + ::= { prtOutputEntry 6 } + +-- OUTPUT MEASUREMENT +-- +-- _______ | | ________ +-- ^ | | ^ +-- | | | | +-- | | |RemainingCapacity +-- MaxCapacity| | | +-- | | | v ^ +-- | |_ _ _ _ _ _ _ _ | _______________ |direction +-- | | Sheets | | +-- | | in | +-- v | Output | +-- _______ +________________+ + +-- The Extended Output Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this output sub-unit." + ::= { prtOutputEntry 7 } + + +prtOutputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this output sub-unit." + ::= { prtOutputEntry 8 } + +prtOutputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name assigned to this output sub-unit." + ::= { prtOutputEntry 9 } + +prtOutputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this output sub-unit." + ::= { prtOutputEntry 10 } + +prtOutputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this output sub-unit." + ::= { prtOutputEntry 11 } + +prtOutputDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this output sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtOutputEntry 12 } + +prtOutputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + + STATUS current + DESCRIPTION + "Indicates if this output sub-unit has some security associated + with it and if that security is enabled or not." + ::= { prtOutputEntry 13 } + +-- The Output Dimensions Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + dimensional values for this output sub-unit." + ::= { prtOutputEntry 14 } + +prtOutputMaxDimFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 15 } + +prtOutputMaxDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + + be changed with management protocol operations." + ::= { prtOutputEntry 16 } + +prtOutputMinDimFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 17 } + +prtOutputMinDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 18 } + +-- The Output Features Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputStackingOrder OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtOutputStackingOrderTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the stacking order for the + associated output sub-unit. 'FirstToLast' means + that as pages are output the front of the next page is + + placed against the back of the previous page. + 'LasttoFirst' means that as pages are output the back + of the next page is placed against the front of the + previous page." + ::= { prtOutputEntry 19 } + +prtOutputPageDeliveryOrientation OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtOutputPageDeliveryOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are + delivered to the associated output sub-unit. Values are + faceUp and faceDown. (Note: interpretation of these + values is in general context-dependent based on locale; + presentation of these values to an end-user should be + normalized to the expectations of the user)." + ::= { prtOutputEntry 20 } + +prtOutputBursting OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the outputting sub-unit supports + bursting, and if so, whether the feature is enabled. Bursting is + the process by which continuous media is separated into + individual sheets, typically by bursting along pre-formed + perforations." + ::= { prtOutputEntry 21 } + +prtOutputDecollating OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports decollating, and + if so, whether the feature is enabled. Decollating is the + process by which the individual parts within a multi-part form + are separated and sorted into separate stacks for each part." + ::= { prtOutputEntry 22 } + +prtOutputPageCollated OBJECT-TYPE + SYNTAX PresentOnOff + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output sub-unit supports page + collation, and if so, whether the feature is enabled. See + glossary for definition of how this document defines collation." + ::= { prtOutputEntry 23 } + +prtOutputOffsetStacking OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports offset stacking, + and if so, whether the feature is enabled. See glossary for how + Offset Stacking is defined by this document." + ::= { prtOutputEntry 24 } + +-- The Marker Group +-- +-- A marker is the mechanism that produces marks on the print +-- media. The marker sub-units and their associated supplies are +-- represented by the Marker Group in the model. A printer can +-- contain one or more marking mechanisms. Some examples of +-- multiple marker sub-units are: a printer +-- with separate markers for normal and magnetic ink or an +-- imagesetter that can output to both a proofing device and +-- final film. Each marking device can have its own set of +-- characteristics associated with it, such as marking technology +-- and resolution. +-- +-- Implementation of every object in this group is mandatory. + +prtMarker OBJECT IDENTIFIER ::= { printmib 10 } + +-- The printable area margins as listed below define an area of +-- the print media which is guaranteed to be printable for all +-- combinations of input, media paths, and interpreters for this +-- marker. + +prtMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "" + ::= { prtMarker 2 } + +prtMarkerEntry OBJECT-TYPE + SYNTAX PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtMarkerIndex } + ::= { prtMarkerTable 1 } + +PrtMarkerEntry ::= SEQUENCE { + prtMarkerIndex Integer32, + prtMarkerMarkTech PrtMarkerMarkTechTC, + prtMarkerCounterUnit PrtMarkerCounterUnitTC, + prtMarkerLifeCount Counter32, + prtMarkerPowerOnCount Counter32, + prtMarkerProcessColorants Integer32, + prtMarkerSpotColorants Integer32, + prtMarkerAddressabilityUnit PrtMarkerAddressabilityUnitTC, + prtMarkerAddressabilityFeedDir Integer32, + prtMarkerAddressabilityXFeedDir Integer32, + prtMarkerNorthMargin Integer32, + prtMarkerSouthMargin Integer32, + prtMarkerWestMargin Integer32, + prtMarkerEastMargin Integer32, + prtMarkerStatus PrtSubUnitStatusTC + } + +prtMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marking + SubUnit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new marking + sub-units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtMarkerEntry 1 } + +prtMarkerMarkTech OBJECT-TYPE + -- This value is a type 2 enumeration + + SYNTAX PrtMarkerMarkTechTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of marking technology used for this marking sub-unit." + ::= { prtMarkerEntry 2 } + +prtMarkerCounterUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerCounterUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The time units of + measure are provided for a device like a strip recorder that + does not or cannot track the physical dimensions of the media + and does not use characters, lines or sheets." + ::= { prtMarkerEntry 3 } + +prtMarkerLifeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted during the + life of printer using units of measure as specified by + prtMarkerCounterUnit." + ::= { prtMarkerEntry 4 } + +prtMarkerPowerOnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted since the + equipment was most recently powered on using units of measure as + specified by prtMarkerCounterUnit." + ::= { prtMarkerEntry 5 } + +prtMarkerProcessColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The number of process colors supported by this marker. A + process color of 1 implies monochrome. The value of this object + and prtMarkerSpotColorants cannot both be 0. The value of + prtMarkerProcessColorants must be 0 or greater." + ::= { prtMarkerEntry 6 } + +prtMarkerSpotColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of spot colors supported by this marker. The value + of this object and prtMarkerProcessColorants cannot both be 0. + Must be 0 or greater." + ::= { prtMarkerEntry 7 } + +prtMarkerAddressabilityUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerAddressabilityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + ::= { prtMarkerEntry 8 } + +prtMarkerAddressabilityFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the feed + direction per 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' or + 'infinite' while a value of (-2) implies 'unknown'." + ::= { prtMarkerEntry 9 } + +prtMarkerAddressabilityXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + cross feed direction in 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' or + + 'infinite' while a value of (-2) implies 'unknown'." + ::= { prtMarkerEntry 10 } + +prtMarkerNorthMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin, in units identified by prtMarkerAddressabilityUnit, + from the leading edge of the medium as the medium flows through + the marking engine with the side to be imaged facing the + observer. The leading edge is the North edge and the other edges + are defined by the normal compass layout of directions with the + compass facing the observer. Printing within the area bounded + by all four margins is guaranteed for all interpreters. The + value (-2) means unknown." + ::= { prtMarkerEntry 11 } + +prtMarkerSouthMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the South edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 12 } + +prtMarkerWestMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the West edge (see prtMarkerNorthMargin) of the + medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 13 } + +prtMarkerEastMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The margin from the East edge (see prtMarkerNorthMargin) of the + medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 14 } + +prtMarkerStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this marker sub-unit." + ::= { prtMarkerEntry 15 } + +-- The Marker Supplies Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtMarkerSupplies OBJECT IDENTIFIER ::= { printmib 11 } + +prtMarkerSuppliesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the marker supplies available on this printer." + ::= { prtMarkerSupplies 1 } + +prtMarkerSuppliesEntry OBJECT-TYPE + SYNTAX PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a marker supply. Entries may exist in the table + for each device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtMarkerSuppliesIndex } + ::= { prtMarkerSuppliesTable 1 } + +PrtMarkerSuppliesEntry ::= SEQUENCE { + prtMarkerSuppliesIndex Integer32, + prtMarkerSuppliesMarkerIndex Integer32, + prtMarkerSuppliesColorantIndex Integer32, + prtMarkerSuppliesClass PrtMarkerSuppliesClassTC, + prtMarkerSuppliesType PrtMarkerSuppliesTypeTC, + + prtMarkerSuppliesDescription LocalizedDescriptionStringTC, + prtMarkerSuppliesSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + prtMarkerSuppliesMaxCapacity Integer32, + prtMarkerSuppliesLevel Integer32 + } + +prtMarkerSuppliesIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marker + supply. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new marker + supplies to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtMarkerSuppliesEntry 1 } + +prtMarkerSuppliesMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marking sub + unit with which this marker supply sub-unit is associated." + ::= { prtMarkerSuppliesEntry 2 } + +prtMarkerSuppliesColorantIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerColorantIndex corresponding to the + colorant with which this marker supply sub-unit is associated. + This value shall be 0 if there is no colorant table or if this + supply does not depend on a single specified colorant." + ::= { prtMarkerSuppliesEntry 3 } + +prtMarkerSuppliesClass OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply that + + is consumed or a receptacle that is filled." + ::= { prtMarkerSuppliesEntry 4 } + +prtMarkerSuppliesType OBJECT-TYPE + -- This value is a type 3 enumeration + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this supply." + ::= { prtMarkerSuppliesEntry 5 } + +prtMarkerSuppliesDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply container/receptacle in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMarkerSuppliesEntry 6 } + +prtMarkerSuppliesSupplyUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this marker supply container/receptacle." + ::= { prtMarkerSuppliesEntry 7 } + +prtMarkerSuppliesMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in prtMarkerSuppliesSupplyUnit. If this supply + container/receptacle can reliably sense this value, the value is + reported by the printer and is read-only; otherwise, the value + may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtMarkerSuppliesEntry 8 } + + +prtMarkerSuppliesLevel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; remaining + space if this supply is a receptacle. If this supply + container/receptacle can reliably sense this value, the value is + reported by the printer and is read-only; otherwise, the value + may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. A value of (-3) means + that the printer knows that there is some supply/remaining + space, respectively." + ::= { prtMarkerSuppliesEntry 9 } + +-- The Marker Colorant Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtMarkerColorant OBJECT IDENTIFIER ::= { printmib 12 } + +prtMarkerColorantTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all of the colorants available on the printer." + ::= { prtMarkerColorant 1 } + +prtMarkerColorantEntry OBJECT-TYPE + SYNTAX PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a colorant available on the printer. Entries may + exist in the table for each device index with a device type of + 'printer'." + INDEX { hrDeviceIndex, prtMarkerColorantIndex } + ::= { prtMarkerColorantTable 1 } + +PrtMarkerColorantEntry ::= SEQUENCE { + prtMarkerColorantIndex Integer32, + + prtMarkerColorantMarkerIndex Integer32, + prtMarkerColorantRole PrtMarkerColorantRoleTC, + prtMarkerColorantValue OCTET STRING, + prtMarkerColorantTonality Integer32 + } + +prtMarkerColorantIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this colorant. + Although these values may change due to a major reconfiguration + of the device (e.g. the addition of new colorants to the + printer) , values are expected to remain stable across + successive printer power cycles." + ::= { prtMarkerColorantEntry 1 } + +prtMarkerColorantMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marker sub + unit with which this colorant entry is associated." + ::= { prtMarkerColorantEntry 2 } + +prtMarkerColorantRole OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerColorantRoleTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role played by this colorant." + ::= { prtMarkerColorantEntry 3 } + +prtMarkerColorantValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color of this colorant using standardized + string names from ISO 10175 (DPA) and ISO 10180 (SPDL) such as: + other + unknown + + white + red + green + blue + cyan + magenta + yellow + black + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes" + ::= { prtMarkerColorantEntry 4 } + +prtMarkerColorantTonality OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The distinct levels of tonality realizable by a marking sub + unit when using this colorant. This value does not include the + number of levels of tonal difference that an interpreter can + obtain by techniques such as half toning. This value must be at + least 2." + ::= { prtMarkerColorantEntry 5 } + +-- The Media Path Group +-- +-- The media paths encompass the mechanisms in the printer that +-- move the media through the printer and connect all other media +-- related sub-units: inputs, outputs, markers and finishers. A +-- printer contains one or more media paths. These are +-- represented by the Media Path Group in the model. The Media +-- Path group has some attributes that apply to all +-- paths plus a table of the separate media paths. + +prtMediaPath OBJECT IDENTIFIER ::= { printmib 13 } + +prtMediaPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtMediaPath 4 } + + +prtMediaPathEntry OBJECT-TYPE + SYNTAX PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtMediaPathIndex } + ::= { prtMediaPathTable 1 } + +PrtMediaPathEntry ::= SEQUENCE { + prtMediaPathIndex Integer32, + prtMediaPathMaxSpeedPrintUnit + PrtMediaPathMaxSpeedPrintUnitTC, + prtMediaPathMediaSizeUnit PrtMediaUnitTC, + prtMediaPathMaxSpeed Integer32, + prtMediaPathMaxMediaFeedDir Integer32, + prtMediaPathMaxMediaXFeedDir Integer32, + prtMediaPathMinMediaFeedDir Integer32, + prtMediaPathMinMediaXFeedDir Integer32, + prtMediaPathType PrtMediaPathTypeTC, + prtMediaPathDescription LocalizedDescriptionStringTC, + prtMediaPathStatus PrtSubUnitStatusTC + } + +prtMediaPathIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this media path. + Although these values may change due to a major reconfiguration + of the device (e.g. the addition of new media paths to the + printer), values are expected to remain stable across successive + printer power cycles." + ::= { prtMediaPathEntry 1 } + +prtMediaPathMaxSpeedPrintUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMediaPathMaxSpeedPrintUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all media + paths in the printer." + + ::= { prtMediaPathEntry 2 } + +prtMediaPathMediaSizeUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The units of measure of media size for use in calculating and + relaying dimensional values for all media paths in the printer." + ::= { prtMediaPathEntry 3 } + +prtMediaPathMaxSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum printing speed of this media path expressed in + prtMediaPathMaxSpeedUnit's. A value of (-1) implies 'other'." + ::= { prtMediaPathEntry 4 } + +prtMediaPathMaxMediaFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size in the feed direction of this + media path expressed in units of measure specified by + PrtMediaPathMediaSizeUnit. A value of (-1) implies 'unlimited' + a value of (-2) implies 'unknown'" + ::= { prtMediaPathEntry 5 } + +prtMediaPathMaxMediaXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 6 } + +prtMediaPathMinMediaFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The minimum physical media size in the feed direction of this + media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 7 } + +prtMediaPathMinMediaXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 8 } + +prtMediaPathType OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtMediaPathTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the media path for this media path." + ::= { prtMediaPathEntry 9 } + +prtMediaPathDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer-provided description of this media path in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMediaPathEntry 10 } + +prtMediaPathStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this media path." + ::= { prtMediaPathEntry 11 } + +-- The Print Job Delivery Channel Group +-- +-- Implementation of every object in this group is mandatory except for + +-- prtChannelInformation. +-- +-- Print Job Delivery Channels are independent sources of print +-- data. Here, print data is the term used for the information +-- that is used to construct printed pages and may have both data +-- and control aspects. The output of a channel is in a form +-- suitable for input to one of the interpreters as a +-- stream. A channel may be independently enabled (allowing +-- print data to flow) or disabled (stopping the flow of +-- print data). A printer may have one or more channels. +-- +-- The Print Job Delivery Channel table describes the +-- capabilities of the printer and not what is currently being +-- performed by the printer +-- +-- Basically, the print job delivery channel abstraction +-- describes the final processing step of getting the print data +-- to an interpreter. It might include some level of +-- decompression or decoding of print stream data. +-- channel. All of these aspects are hidden in the channel +-- abstraction. +-- +-- There are many kinds of print job delivery channels; some of +-- which are based on networks and others which are not. For +-- example, a channel can be a serial (or parallel) connection; +-- it can be a service, such as the UNIX Line Printer Daemon +-- (LPD), offering services over a network connection; or +-- it could be a disk drive into which a floppy disk with +-- the print data is inserted. Each print job delivery channel is +-- identified by the electronic path and/or service protocol +-- used to deliver print data to a print data interpreter. +-- +-- Channel example Implementation +-- +-- serial port channel bi-directional data channel +-- parallel port channel often uni-directional channel +-- IEEE 1284 port channel bi-directional channel +-- SCSI port channel bi-directional +-- Apple PAP channel may be based on LocalTalk, +-- Ethernet or Tokentalk +-- LPD Server channel TCP/IP based, port 515 +-- Netware Remote Printer SPX/IPX based channel +-- Netware Print Server SPX/IPX based channel +-- +-- It is easy to note that this is a mixed bag. There are + +-- some physical connections over which no (or very meager) +-- protocols are run (e.g. the serial or old parallel ports) +-- and there are services which often have elaborate +-- protocols that run over a number of protocol stacks. In +-- the end, what is important is the delivery of print data +-- through the channel. +-- +-- The print job delivery channel sub-units are represented by +-- the Print Job Delivery Channel Group in the Model. It has a +-- current print job control language, which can be used to +-- specify which interpreter is to be used for the print data and +-- to query and change environment variables used by the +-- interpreters (and Management Applications). There is also a +-- default interpreter that is to be used if an interpreter is +-- not explicitly specified using the Control Language. + +-- The first seven items in the Print Job Delivery Channel Table +-- define the "channel" itself. A channel typically depends on +-- other protocols and interfaces to provide the data that flows +-- through the channel. +-- +-- Control of a print job delivery channel is largely limited to +-- enabling or disabling the entire channel itself. It is likely +-- that more control of the process of accessing print data +-- will be needed over time. Thus, the ChannelType will +-- allow type-specific data to be associated with each +-- channel (using ChannelType specific groups in a fashion +-- analogous to the media specific MIBs that are associated +-- with the IANAIfType in the Interfaces Table). As a first +-- step in this direction, each channel will identify the +-- underlying Interface on which it is based. This is the +-- eighth object in each row of the table. + +-- The Print Job Delivery Channel Table +-- +-- The prtChannelTable represents the set of input data sources +-- which can provide print data to one or more of the +-- interpreters available on a printer + +prtChannel OBJECT IDENTIFIER ::= { printmib 14 } + +prtChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "" + ::= { prtChannel 1 } + +prtChannelEntry OBJECT-TYPE + SYNTAX PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtChannelIndex } + ::= { prtChannelTable 1 } + +PrtChannelEntry ::= SEQUENCE { + prtChannelIndex Integer32, + prtChannelType PrtChannelTypeTC, + prtChannelProtocolVersion OCTET STRING, + prtChannelCurrentJobCntlLangIndex Integer32, + prtChannelDefaultPageDescLangIndex Integer32, + prtChannelState PrtChannelStateTC, + prtChannelIfIndex Integer32, + prtChannelStatus PrtSubUnitStatusTC, + prtChannelInformation OCTET STRING + } + +prtChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this data + channel. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new data + channels to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtChannelEntry 1 } + +prtChannelType OBJECT-TYPE + SYNTAX PrtChannelTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this print data channel. This object provides the + linkage to ChannelType-specific groups that may (conceptually) + + extend the prtChannelTable with additional details about that + channel." + ::= { prtChannelEntry 2 } + +prtChannelProtocolVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the protocol used on this channel. The format + used for version numbering depends on prtChannelType." + ::= { prtChannelEntry 3 } + +prtChannelCurrentJobCntlLangIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Control + Language Interpreter for this channel. This interpreter defines + the syntax used for control functions, such as querying or + changing environment variables and identifying job boundaries + (e.g. PJL, PostScript, NPAP). A value of zero indicates that + there is no current Job Control Language Interpreter for this + channel" + ::= { prtChannelEntry 4 } + +prtChannelDefaultPageDescLangIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Page + Description Language Interpreter for this channel. This + interpreter defines the default Page Description Language + interpreter to be used for the print data unless the Control + Language is used to select a specific interpreter (e.g., PCL, + PostScript Language, auto-sense). A value of zero indicates that + there is no default page description language interpreter for + this channel." + ::= { prtChannelEntry 5 } + +prtChannelState OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtChannelStateTC + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this print data channel. The value determines + whether control information and print data is allowed through + this channel or not." + ::= { prtChannelEntry 6 } + +prtChannelIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of ifIndex in the ifTable; see the interface section + of MIB-II (RFC 1213 [14]) which corresponds to this channel. + When more than one row of the ifTable is relevant, this is the + index of the row representing the topmost layer in the interface + hierarchy. A value of zero indicates that no interface is + associated with this channel." + ::= { prtChannelEntry 7 } + +prtChannelStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the channel." + ::= { prtChannelEntry 8 } + +prtChannelInformation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Auxiliary information to allow a printing application to use + the channel for data submission to the printer. An application + capable of using a specific PrtChannelType should be able to use + the combined information from the prtChannelInformation and + other channel and interface group objects to 'bootstrap' its use + of the channel. prtChannelInformation is not intended to + provide a general channel description, nor to provide + information that is available once the channel is in use. + + The encoding and interpretation of the prtChannelInformation + object is specific to channel type. The description of each + + PrtChannelType enum value for which prtChannelInformation is + defined specifies the appropriate encoding and interpretation, + including interaction with other objects. For channel types + that do not specify a prtChannelInformation value, its value + shall be null (0 length). + + When a new PrtChannelType enumeration value is registered, its + accompanying description must specify the encoding and + interpretation of the prtChannelInformation value for the + channel type. prtChannelInformation semantics for an existing + PrtChannelType may be added or amended in the same manner as + described in section 2.4.1 for type 2 enumeration values. + + The prtChannelInformation specifies values for a collection of + channel attributes, represented as text according to the + following rules: + + 1. The prtChannelInformation is not affected by localization. + + 2. The prtChannelInformation is a list of entries representing + the attribute values. Each entry consists of the following + items, in order: + + a. A keyword, composed of alphabetic characters (A-Z, a-z) + represented by their NVT ASCII [10] codes, that + identifies a channel attribute, + + b. The NVT ASCII code for an Equals Sign (=) (code 61) to + delimit the keyword, + + c. A data value encoded using rules specific to the + PrtChannelType to with the prtChannelInformation applies which + must in no case allow an octet with value 10 (the NVT ASCII Line + Feed code), + + d. the NVT ASCII code for a Line Feed character (code 10) to + delimit the data value. + + No other octets shall be present. + + Keywords are case-sensitive. Conventionally, keywords are + capitalized (including each word of a multi-word keyword) and + since they occupy space in the prtChannelInformation, they are + kept short. + + + 3. If a channel attribute has multiple values, it is represented + by multiple entries with the same keyword, each specifying one + value. Otherwise, there shall be at most one entry for each + attribute. + + 4. By default, entries may appear in any order. If there are + ordering constraints for particular entries, these must be + specified in their definitions. + + 5. The prtChannelInformation value by default consists of text + represented by NVT ASCII graphics character codes. However, + other representations may be specified: + + a. In cases where the prtChannelInformation value contains + information not normally coded in textual form, whatever + symbolic representation is conventionally used for the + information should be used for encoding the + prtChannelInformation value. (For instance, a binary port value + might be represented as a decimal number using NVT ASCII codes.) + Such encoding must be specified in the definition of the value. + + b. The value may contain textual information in a character set + other than NVT ASCII graphics characters. (For instance, an + identifier might consist of ISO 10646 text encoded using the + UTF-8 encoding scheme.) Such a character set and its encoding + must be specified in the definition of the value. + + 6. For each PrtChannelType for which prtChannelInformation + entries are defined, the descriptive text associated with the + PrtChannelType enumeration value shall specify the following + information for each entry: + + Title: Brief description phrase, e.g.: 'Port name', + 'Service Name', etc. + + Keyword: The keyword value, e.g.: 'Port' or 'Service' + + Syntax: The encoding of the entry value if it cannot be + directly represented by NVT ASCII. + + Status: 'Mandatory', 'Optional', or 'Conditionally + Mandatory' + + Multiplicity: 'Single' or 'Multiple' to indicate whether the + entry may be present multiple times. + + + Description: Description of the use of the entry, other + information required to complete the definition + (e.g.: ordering constraints, interactions between + entries). + + Applications that interpret prtChannelInformation should ignore + unrecognized entries, so they are not affected if new entry + types are added." + + ::= { prtChannelEntry 9 } + +-- The Interpreter Group +-- +-- The interpreter sub-units are responsible for the conversion +-- of a description of intended print instances into images that +-- are to be marked on the media. A printer may have one or more +-- interpreters. The interpreter sub-units are represented by the +-- Interpreter Group in the Model. Each interpreter is generally +-- implemented with software running on the System Controller +-- sub-unit. The Interpreter Table has one entry per interpreter +-- where the interpreters include both Page Description Language +-- (PDL) Interpreters and Control Language Interpreters. +-- +-- Implementation of every object in this group is mandatory. + +prtInterpreter OBJECT IDENTIFIER ::= { printmib 15 } + +-- Interpreter Table +-- +-- The prtInterpreterTable is a table representing the +-- interpreters in the printer. An entry shall be placed in the +-- interpreter table for each interpreter on the printer. + +prtInterpreterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtInterpreter 1 } + +prtInterpreterEntry OBJECT-TYPE + SYNTAX PrtInterpreterEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtInterpreterIndex } + ::= { prtInterpreterTable 1 } + +PrtInterpreterEntry ::= SEQUENCE { + prtInterpreterIndex Integer32, + prtInterpreterLangFamily PrtInterpreterLangFamilyTC, + prtInterpreterLangLevel OCTET STRING, + prtInterpreterLangVersion OCTET STRING, + prtInterpreterDescription LocalizedDescriptionStringTC, + prtInterpreterVersion OCTET STRING, + prtInterpreterDefaultOrientation PrtPrintOrientationTC, + prtInterpreterFeedAddressability Integer32, + prtInterpreterXFeedAddressability Integer32, + prtInterpreterDefaultCharSetIn CodedCharSet, + prtInterpreterDefaultCharSetOut CodedCharSet, + prtInterpreterTwoWay PrtInterpreterTwoWayTC + } + +prtInterpreterIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each PDL or control language for which there + exists an interpreter or emulator in the printer. The value is + used to identify this interpreter. Although these values may + change due to a major reconfiguration of the device (e.g. the + addition of new interpreters to the printer), values are + expected to remain stable across successive printer power + cycles." + ::= { prtInterpreterEntry 1 } + +prtInterpreterLangFamily OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtInterpreterLangFamilyTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The family name of a Page Description Language (PDL) or control + language which this interpreter in the printer can interpret or + emulate." + + ::= { prtInterpreterEntry 2 } + +prtInterpreterLangLevel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of the language which this interpreter is + interpreting or emulating. This might contain a value like '5e' + for an interpreter which is emulating level 5e of the PCL + language. It might contain '2' for an interpreter which is + emulating level 2 of the PostScript language. Similarly it might + contain '2' for an interpreter which is emulating level 2 of the + HPGL language." + ::= { prtInterpreterEntry 3 } + +prtInterpreterLangVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code or version of the language which this interpreter + is interpreting or emulating." + ::= { prtInterpreterEntry 4 } + +prtInterpreterDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string to identify this interpreter in the localization + specified by prtGeneralCurrentLocalization as opposed to the + language which is being interpreted. It is anticipated that + this string will allow manufacturers to unambiguously identify + their interpreters." + ::= { prtInterpreterEntry 5 } + +prtInterpreterVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code, version number, or other product specific + information tied to this interpreter. This value is associated + with the interpreter, rather than with the version of the + + language which is being interpreted or emulated." + ::= { prtInterpreterEntry 6 } + +prtInterpreterDefaultOrientation OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtPrintOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current orientation default for this interpreter. This + value may be overridden for a particular job (e.g., by a command + in the input data stream)." + ::= { prtInterpreterEntry 7 } + +prtInterpreterFeedAddressability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the feed + direction in 10000 prtMarkerAddressabilityUnits (see + prtMarkerAddressabilityFeedDir ) for this interpreter. The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter." + ::= { prtInterpreterEntry 8 } + +prtInterpreterXFeedAddressability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the cross feed + direction in 10000 prtMarkerAddressabilityUnits (see + prtMarkerAddressabilityXFeedDir) for this interpreter. The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter." + ::= { prtInterpreterEntry 9 } + +prtInterpreterDefaultCharSetIn OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default coded character set for input octets encountered + outside a context in which the Page Description Language + + established the interpretation of the octets. (Input octets are + presented to the interpreter through a path defined in the + channel group.) This value shall be (2) if there is no default." + ::= { prtInterpreterEntry 10 } + +prtInterpreterDefaultCharSetOut OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default character set for data coming from this interpreter + through the printer's output channel (i.e. the 'backchannel'). + This value shall be (2) if there is no default." + ::= { prtInterpreterEntry 11 } + +prtInterpreterTwoWay OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtInterpreterTwoWayTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + ::= { prtInterpreterEntry 12 } + +-- The Console Group +-- +-- Many printers have a console on the printer, the operator +-- console, that is used to display and modify the state of the +-- printer. The console can be as simple as a few indicators and +-- switches or as complicated as full screen displays and +-- keyboards. There can be at most one such console. + +-- Implementation of every object in this group is mandatory. + +-- The Display Buffer Table + +prtConsoleDisplayBuffer OBJECT IDENTIFIER ::= { printmib 16 } + +prtConsoleDisplayBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Physical display buffer for printer console display or + + operator panel" + ::= { prtConsoleDisplayBuffer 5 } + +prtConsoleDisplayBufferEntry OBJECT-TYPE + SYNTAX PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each physical line on + the display. Lines cannot be added or deleted. Entries may + exist in the table for each device index with a device type of + 'printer'." + INDEX { hrDeviceIndex, prtConsoleDisplayBufferIndex } + ::= { prtConsoleDisplayBufferTable 1 } + +PrtConsoleDisplayBufferEntry ::= SEQUENCE { + prtConsoleDisplayBufferIndex Integer32, + prtConsoleDisplayBufferText ConsoleDescriptionStringTC + } + +prtConsoleDisplayBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each console line in the printer. The value + is used to identify this console line. Although these values may + change due to a major reconfiguration of the device (e.g. the + addition of new console lines to the printer). Values are + normally expected to remain stable across successive printer + power cycles." + ::= { prtConsoleDisplayBufferEntry 1 } + +prtConsoleDisplayBufferText OBJECT-TYPE + SYNTAX ConsoleDescriptionStringTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The content of a line in the logical display buffer of + the operator's console of the printer. When a write + operation occurs, normally a critical message, to one of + the LineText strings, the agent should make that line + displayable if a physical display is present. Writing a zero + length string clears the line. It is an implementation-specific + matter as to whether the agent allows a line to be overwritten + + before it has been cleared. Printer generated strings shall be + in the localization specified by prtConsoleLocalization. + Management Application generated strings should be localized by + the Management Application." + ::= { prtConsoleDisplayBufferEntry 2 } + +-- The Console Light Table + +prtConsoleLights OBJECT IDENTIFIER ::= { printmib 17 } + +prtConsoleLightTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtConsoleLights 6 } + +prtConsoleLightEntry OBJECT-TYPE + SYNTAX PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtConsoleLightIndex } + ::= { prtConsoleLightTable 1 } + +PrtConsoleLightEntry ::= SEQUENCE { + prtConsoleLightIndex Integer32, + prtConsoleOnTime Integer32, + prtConsoleOffTime Integer32, + prtConsoleColor PrtConsoleColorTC, + prtConsoleDescription ConsoleDescriptionStringTC + } + +prtConsoleLightIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this light. + Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new lights + to the printer). Values are normally expected to remain stable + + across successive printer power cycles." + ::= { prtConsoleLightEntry 1 } + +prtConsoleOnTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOffTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off." + ::= { prtConsoleLightEntry 2 } + +prtConsoleOffTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOnTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off." + ::= { prtConsoleLightEntry 3 } + +prtConsoleColor OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtConsoleColorTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The color of this light." + ::= { prtConsoleLightEntry 4 } + +prtConsoleDescription OBJECT-TYPE + SYNTAX ConsoleDescriptionStringTC + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The vendor description or label of this light in the + localization specified by prtConsoleLocalization." + ::= { prtConsoleLightEntry 5 } + +-- The Alerts Group +-- +-- The prtAlertTable lists all the critical and non-critical +-- alerts currently active in the printer. A critical alert is +-- one that stops the printer from printing immediately and +-- printing can not continue until the critical alert condition +-- is eliminated. Non-critical alerts are those items that do +-- not stop printing but may at some future time. +-- The table contains information on the severity, component, +-- detail location within the component, alert code and +-- description of each critical alert that is currently active +-- within the printer. See 2.2.13 for a more complete +-- description of the alerts table and its management. +-- +-- Each parameter in the Trap PDU is a full OID which itself is +-- indexed by the host resources MIB "hrDeviceIndex" object. In +-- order for a management station to obtain the correct +-- "hrDeviceIndex" associated with a particular Trap PDU, the +-- "hrDeviceIndex" value can be extracted from the returned OID +-- value in the Trap PDU when the PDU is received by the +-- Management station. +-- +-- Implementation of every object in this group is mandatory. + +prtAlert OBJECT IDENTIFIER ::= { printmib 18 } + +prtAlertTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtAlert 1 } + +prtAlertEntry OBJECT-TYPE + SYNTAX PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtAlertIndex } + ::= { prtAlertTable 1 } + +PrtAlertEntry ::= SEQUENCE { + prtAlertIndex Integer32, + prtAlertSeverityLevel PrtAlertSeverityLevelTC, + prtAlertTrainingLevel PrtAlertTrainingLevelTC, + prtAlertGroup PrtAlertGroupTC, + prtAlertGroupIndex Integer32, + prtAlertLocation Integer32, + prtAlertCode PrtAlertCodeTC, + prtAlertDescription LocalizedDescriptionStringTC, + prtAlertTime TimeTicks + } + +prtAlertIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to determine which alerts have been added + or removed from the alert table. This is an incrementing integer + initialized to 1 when the printer is reset. (i.e. The first + event placed in the alert table after a reset of the printer + shall have an index value of 1.) When the printer adds an alert + to the table, that alert is assigned the next higher integer + value from the last item entered into the table. If the index + value reaches its maximum value, the next index value used must + be 1. + + NOTE: The management application will read the alert table when + a trap or event notification occurs or at a periodic rate and + then parse the table to determine if any new entries were added + by comparing the last known index value with the current highest + index value. The management application will then update its + copy of the alert table. When the printer discovers that an + alert is no longer active, the printer shall remove the row for + that alert from the table and shall reduce the number of rows in + the table. The printer may add or delete any number of rows + from the table at any time. The management station can detect + when binary change alerts have been deleted by requesting an + attribute of each alert, and noting alerts as deleted when that + retrieval is not possible. The objects 'prtAlertCriticalEvents' + + and 'prtAlertAllEvents' in the 'prtGeneralTable' reduce the + need for management applications to scan the 'prtAlertTable'." + ::= { prtAlertEntry 1 } + +prtAlertSeverityLevel OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtAlertSeverityLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry into the + table." + ::= { prtAlertEntry 2 } + +prtAlertTrainingLevel OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtAlertTrainingLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See textual convention PrtAlertTrainingLevelTC" + ::= { prtAlertEntry 3 } + +prtAlertGroup OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtAlertGroupTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + is related. Input, output, and markers are examples of printer + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printmib." + ::= { prtAlertEntry 4 } + +prtAlertGroupIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index of the row within the principle table in the + group identified by prtAlertGroup that represents the sub-unit + of the printer that caused this alert. The combination of the + + prtAlertGroup and the prtAlertGroupIndex defines exactly which + printer sub-unit caused the alert; for example, Input #3, Output + #2, and Marker #1. Every object in this MIB is indexed with + hrDeviceIndex and optionally, another index variable. If this + other index variable is present in the table that generated the + alert, it will be used as the value for this object. Otherwise, + this value shall be -1." + ::= { prtAlertEntry 5 } + +prtAlertLocation OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sub-unit location that is defined by the printer + manufacturer to further refine the location of this alert within + the designated sub-unit. The location is used in conjunction + with the Group and GroupIndex values; for example, there is an + alert in Input #2 at location number 7. The value (-2) indicates + unknown" + ::= { prtAlertEntry 6 } + +prtAlertCode OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtAlertCodeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See associated textual convention PrtAlertCodeTC" + ::= { prtAlertEntry 7 } + +prtAlertDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of this alert entry in the localization + specified by prtGeneralCurrentLocalization. The description is + provided by the printer to further elaborate on the enumerated + alert or provide information in the case where the code is + classified as 'other' or 'unknown'. The printer is required to + return a description string but the string may be a null + string." + ::= { prtAlertEntry 8 } + + +prtAlertTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this alert was + generated. Implementation of this optional object is STRONGLY + RECOMMENDED for improved reliability and interworking." + ::= { prtAlertEntry 9 } + +printerV1Alert OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The value of the enterprise-specific OID in an SNMPv1 trap sent + signaling a critical event in the prtAlertTable." + ::= { prtAlert 2 } + +printerV2AlertPrefix OBJECT IDENTIFIER ::= { printerV1Alert 0 } + +printerV2Alert NOTIFICATION-TYPE + OBJECTS { prtAlertIndex, prtAlertSeverityLevel, prtAlertGroup, + prtAlertGroupIndex, prtAlertLocation, prtAlertCode } + STATUS current + DESCRIPTION + "This trap is sent whenever a critical event is added to the + prtAlertTable." + ::= { printerV2AlertPrefix 1 } + +-- Note that the SNMPv2 to SNMPv1 translation rules dictate that +-- the preceding structure will result in SNMPv1 traps of the +-- following form: +-- +-- printerAlert TRAP-TYPE +-- ENTERPRISE printerV1Alert +-- VARIABLES { prtAlertIndex, prtAlertSeverityLevel, +-- prtAlertGroup, prtAlertGroupIndex, +-- prtAlertLocation, prtAlertCode } +-- DESCRIPTION +-- "This trap is sent whenever a critical event is added +-- to the prtAlertTable." +-- ::= 1 + +-- Conformance Information + +prtMIBConformance OBJECT IDENTIFIER ::= { printmib 2 } + + +-- compliance statements + +prtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB." + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + object. Any additional states are optional." + + OBJECT prtGeneralCurrentLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralCurrentOperator + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralServicePerson + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralPrinterName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralSerialNumber + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaDimFeedDirDeclared + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaType + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaColor + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaFormParts + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputRemainingCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimXFeedDir + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputStackingOrder + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageDeliveryOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputBursting + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDecollating + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageCollated + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputOffsetStacking + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerDefaultIndex + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMediaPathDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelCurrentJobCntlLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelDefaultPageDescLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelState + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetIn + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetOut + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisable + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisplayBufferText + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtResponsiblePartyGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedInputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputMediaGroup + DESCRIPTION + "This group is unconditionally optional." + + + GROUP prtExtendedOutputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputDimensionsGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputFeaturesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerSuppliesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerColorantGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTimeGroup + DESCRIPTION + "This group is unconditionally optional." + + -- the prtResponsiblePartyGroup, prtExtendedInputGroup, + -- prtInputMediaGroup, prtExtendedOutputGroup, + -- prtOutputDimensionsGroup, prtOutputFeaturesGroup, + -- prtMarkerSuppliesGroup, prtMarkerColorantGroup, + -- and the prtAlertTimeGroup are completely optional. + + -- New to version 2 of this printer MIB: + OBJECT prtAuxiliarySheetStartupPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAuxiliarySheetBannerPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaLoadTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + OBJECT prtInputNextIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtAuxiliarySheetGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputSwitchingGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtGeneralV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTableV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtChannelV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTrapGroup + DESCRIPTION + "This group is unconditionally optional." + ::= { prtMIBConformance 1 } + +prtMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 2 } + +prtGeneralGroup OBJECT-GROUP + OBJECTS { prtGeneralConfigChanges, + prtGeneralCurrentLocalization, + prtGeneralReset, prtCoverDescription, + prtCoverStatus, + prtLocalizationLanguage, prtLocalizationCountry, + prtLocalizationCharacterSet, prtStorageRefIndex, + prtDeviceRefIndex } + STATUS current + DESCRIPTION + "The general printer group." + ::= { prtMIBGroups 1 } + + +prtResponsiblePartyGroup OBJECT-GROUP + OBJECTS { prtGeneralCurrentOperator, prtGeneralServicePerson } + STATUS current + DESCRIPTION + "The responsible party group contains contact information for + humans responsible for the printer." + ::= { prtMIBGroups 2 } + +prtInputGroup OBJECT-GROUP + OBJECTS { prtInputDefaultIndex, prtInputType, prtInputDimUnit, + prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, + prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputCapacityUnit, + prtInputMaxCapacity, prtInputCurrentLevel, prtInputStatus, + prtInputMediaName } + STATUS current + DESCRIPTION + "The input group." + ::= { prtMIBGroups 3 } + +prtExtendedInputGroup OBJECT-GROUP + OBJECTS { prtInputName, prtInputVendorName, prtInputModel, + prtInputVersion, prtInputSerialNumber, + prtInputDescription, prtInputSecurity } + STATUS current + DESCRIPTION + "The extended input group." + ::= { prtMIBGroups 4 } + +prtInputMediaGroup OBJECT-GROUP + OBJECTS { prtInputMediaWeight, prtInputMediaType, + prtInputMediaColor, prtInputMediaFormParts } + STATUS current + DESCRIPTION + "The input media group." + ::= { prtMIBGroups 5 } + +prtOutputGroup OBJECT-GROUP + OBJECTS { prtOutputDefaultIndex, prtOutputType, + prtOutputCapacityUnit, prtOutputMaxCapacity, + prtOutputRemainingCapacity, prtOutputStatus } + STATUS current + DESCRIPTION + + "The output group." + ::= { prtMIBGroups 6 } + +prtExtendedOutputGroup OBJECT-GROUP + OBJECTS { prtOutputName, prtOutputVendorName, prtOutputModel, + prtOutputVersion, prtOutputSerialNumber, + prtOutputDescription, prtOutputSecurity } + STATUS current + DESCRIPTION + "The extended output group." + ::= { prtMIBGroups 7 } + +prtOutputDimensionsGroup OBJECT-GROUP + OBJECTS { prtOutputDimUnit, prtOutputMaxDimFeedDir, + prtOutputMaxDimXFeedDir, prtOutputMinDimFeedDir, + prtOutputMinDimXFeedDir } + STATUS current + DESCRIPTION + "The output dimensions group" + ::= { prtMIBGroups 8 } + +prtOutputFeaturesGroup OBJECT-GROUP + OBJECTS { prtOutputStackingOrder, + prtOutputPageDeliveryOrientation, prtOutputBursting, + prtOutputDecollating, prtOutputPageCollated, + prtOutputOffsetStacking } + STATUS current + DESCRIPTION + "The output features group." + ::= { prtMIBGroups 9 } + +prtMarkerGroup OBJECT-GROUP + OBJECTS { prtMarkerDefaultIndex, prtMarkerMarkTech, + prtMarkerCounterUnit, prtMarkerLifeCount, + prtMarkerPowerOnCount, prtMarkerProcessColorants, + prtMarkerSpotColorants, prtMarkerAddressabilityUnit, + prtMarkerAddressabilityFeedDir, + prtMarkerAddressabilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerStatus } + STATUS current + DESCRIPTION + "The marker group." + ::= { prtMIBGroups 10 } + + +prtMarkerSuppliesGroup OBJECT-GROUP + OBJECTS { prtMarkerSuppliesMarkerIndex, + prtMarkerSuppliesColorantIndex, prtMarkerSuppliesClass, + prtMarkerSuppliesType, prtMarkerSuppliesDescription, + prtMarkerSuppliesSupplyUnit, + prtMarkerSuppliesMaxCapacity, prtMarkerSuppliesLevel } + STATUS current + DESCRIPTION + "The marker supplies group." + ::= { prtMIBGroups 11 } + +prtMarkerColorantGroup OBJECT-GROUP + OBJECTS { prtMarkerColorantMarkerIndex, prtMarkerColorantRole, + prtMarkerColorantValue, prtMarkerColorantTonality } + STATUS current + DESCRIPTION + "The marker colorant group." + ::= { prtMIBGroups 12 } + +prtMediaPathGroup OBJECT-GROUP + OBJECTS { prtMediaPathDefaultIndex, prtMediaPathMaxSpeedPrintUnit, + prtMediaPathMediaSizeUnit, prtMediaPathMaxSpeed, + prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, + prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtMediaPathType, + prtMediaPathDescription, prtMediaPathStatus} + STATUS current + DESCRIPTION + "The media path group." + ::= { prtMIBGroups 13 } + +prtChannelGroup OBJECT-GROUP + OBJECTS { prtChannelType, prtChannelProtocolVersion, + prtChannelCurrentJobCntlLangIndex, + prtChannelDefaultPageDescLangIndex, prtChannelState, + prtChannelIfIndex, prtChannelStatus + } + STATUS current + DESCRIPTION + "The channel group." + ::= { prtMIBGroups 14 } + +prtInterpreterGroup OBJECT-GROUP + OBJECTS { prtInterpreterLangFamily, prtInterpreterLangLevel, + + prtInterpreterLangVersion, prtInterpreterDescription, + prtInterpreterVersion, prtInterpreterDefaultOrientation, + prtInterpreterFeedAddressability, + prtInterpreterXFeedAddressability, + prtInterpreterDefaultCharSetIn, + prtInterpreterDefaultCharSetOut, prtInterpreterTwoWay } + STATUS current + DESCRIPTION + "The interpreter group." + ::= { prtMIBGroups 15 } + +prtConsoleGroup OBJECT-GROUP + OBJECTS { prtConsoleLocalization, prtConsoleNumberOfDisplayLines, + prtConsoleNumberOfDisplayChars, prtConsoleDisable, + prtConsoleDisplayBufferText, prtConsoleOnTime, + prtConsoleOffTime, prtConsoleColor, + prtConsoleDescription } + STATUS current + DESCRIPTION + "The console group." + ::= { prtMIBGroups 16 } + +prtAlertTableGroup OBJECT-GROUP + OBJECTS { prtAlertSeverityLevel, prtAlertTrainingLevel, + prtAlertGroup, prtAlertGroupIndex, prtAlertLocation, + prtAlertCode, prtAlertDescription } + STATUS current + DESCRIPTION + "The alert table group. Implementation of prtAlertTime is + RECOMMENDED." + ::= { prtMIBGroups 17 } + +prtAlertTimeGroup OBJECT-GROUP + OBJECTS { prtAlertTime } + STATUS current + DESCRIPTION + "The alert time group." + ::= { prtMIBGroups 18 } + +prtAuxiliarySheetGroup OBJECT-GROUP + OBJECTS { prtAuxiliarySheetStartupPage, + prtAuxiliarySheetBannerPage } + STATUS current + DESCRIPTION + "The auxiliary sheet group." + + ::= { prtMIBGroups 19 } + +prtInputSwitchingGroup OBJECT-GROUP + OBJECTS { prtInputMediaLoadTimeout, prtInputNextIndex } + STATUS current + DESCRIPTION + "The input switching group." + ::= { prtMIBGroups 20 } + +prtGeneralV2Group OBJECT-GROUP + OBJECTS { prtGeneralPrinterName, prtGeneralSerialNumber } + STATUS current + DESCRIPTION + "The general printer group with new v2 objects." + ::= { prtMIBGroups 21 } + +prtAlertTableV2Group OBJECT-GROUP + OBJECTS { prtAlertCriticalEvents, prtAlertAllEvents } + STATUS current + DESCRIPTION + "The alert table group with new v2 objects." + ::= { prtMIBGroups 22 } + +prtChannelV2Group OBJECT-GROUP + OBJECTS { prtChannelInformation } + STATUS current + DESCRIPTION + "The channel group with a new v2 object." + ::= { prtMIBGroups 23 } + +prtAlertTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { printerV2Alert } + STATUS current + DESCRIPTION + "The alert trap group." + ::= { prtMIBGroups 24 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.diff b/test/smidiff/SMIDIFF-TEST-001-MIB.diff new file mode 100644 index 0000000..e69de29 diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.new b/test/smidiff/SMIDIFF-TEST-001-MIB.new new file mode 100644 index 0000000..17ba0ad --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-001-MIB.new @@ -0,0 +1,33 @@ +SMIDIFF-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 1 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.old b/test/smidiff/SMIDIFF-TEST-001-MIB.old new file mode 100644 index 0000000..17ba0ad --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-001-MIB.old @@ -0,0 +1,33 @@ +SMIDIFF-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 1 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.diff b/test/smidiff/SMIDIFF-TEST-002-MIB.diff new file mode 100644 index 0000000..87f2439 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.diff @@ -0,0 +1,18 @@ +./SMIDIFF-TEST-002-MIB.new:119 range of type `MyInt' changed from `(0..9)' to `(0..7)' +./SMIDIFF-TEST-002-MIB.new:125 size of type `MyString' changed from `(0..9)' to `(0..7)' +./SMIDIFF-TEST-002-MIB.new:35 implicit type for `scalar1' replaces type `DisplayString' +./SMIDIFF-TEST-002-MIB.old:35 info: previous definition of `scalar1' +./SMIDIFF-TEST-002-MIB.new:36 size of type used in `scalar1' changed from `(0..255)' to `(1..255)' +./SMIDIFF-TEST-002-MIB.new:45 range of type used in `scalar2' changed from `(0..9)' to `(0..2)' +./SMIDIFF-TEST-002-MIB.new:52 warning: type `Integer32' replaces implicit type for `scalar3' +./SMIDIFF-TEST-002-MIB.old:52 info: previous definition of `scalar3' +./SMIDIFF-TEST-002-MIB.new:52 range `(0..9)' removed from type used in `scalar3' +./SMIDIFF-TEST-002-MIB.old:52 info: previous definition of `scalar3' +./SMIDIFF-TEST-002-MIB.new:79 range of type used in `scalar6' changed from `(0..9|12..15)' to `(0..9|13..15)' +./SMIDIFF-TEST-002-MIB.new:88 range of type used in `scalar7' changed from `(0..9|12..15)' to `(0..9)' +./SMIDIFF-TEST-002-MIB.new:96 range of type used in `scalar8' changed from `(0..9)' to `(0..9|12..15)' +./SMIDIFF-TEST-002-MIB.new:104 range of type used in `scalar9' changed from `(0..9|20..29)' to `(0..29)' +./SMIDIFF-TEST-002-MIB.new:111 warning: type `OctetString' replaces implicit type for `scalar10' +./SMIDIFF-TEST-002-MIB.old:109 info: previous definition of `scalar10' +./SMIDIFF-TEST-002-MIB.new:111 size `(0..255)' removed from type used in `scalar10' +./SMIDIFF-TEST-002-MIB.old:109 info: previous definition of `scalar10' diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.new b/test/smidiff/SMIDIFF-TEST-002-MIB.new new file mode 100644 index 0000000..c95228f --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.new @@ -0,0 +1,131 @@ +SMIDIFF-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 2 } + +scalar1 OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Assuming the original range of a display string to be 0..255, + it will be reduced to 1..255" + ::= { libsmiTest002Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER (0..2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be reduced from 0..9 to 0..2." + ::= { libsmiTest002Mib 2 } + +scalar3 OBJECT-TYPE +-- This causes trouble! smidiff does not know the name/path of the module +-- where INTEGER is defined. + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be removed." + ::= { libsmiTest002Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Single range. No changes." + ::= { libsmiTest002Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. No change." + ::= { libsmiTest002Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER (0..9|13..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be reduced + from 12..15 to 13..15." + ::= { libsmiTest002Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be removed." + ::= { libsmiTest002Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be added." + ::= { libsmiTest002Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER (0..29) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Gap will be filled." + ::= { libsmiTest002Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Size restriction will be removed." + ::= { libsmiTest002Mib 10 } + +MyInt ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX INTEGER (0..7) + +MyString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX OCTET STRING (SIZE(0..7)) + +END diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.old b/test/smidiff/SMIDIFF-TEST-002-MIB.old new file mode 100644 index 0000000..dfeee0e --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.old @@ -0,0 +1,129 @@ +SMIDIFF-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 2 } + +scalar1 OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Assuming the original range of a display string to be 0..255, + it will be reduced to 1..255" + ::= { libsmiTest002Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be reduced from 0..9 to 0..2." + ::= { libsmiTest002Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be removed." + ::= { libsmiTest002Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Single range. No changes." + ::= { libsmiTest002Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. No change." + ::= { libsmiTest002Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be reduced + from 12..15 to 13..15." + ::= { libsmiTest002Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be removed." + ::= { libsmiTest002Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be added." + ::= { libsmiTest002Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER (0..9|20..29) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Gap will be filled." + ::= { libsmiTest002Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Size restriction will be removed." + ::= { libsmiTest002Mib 10 } + +MyInt ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX INTEGER (0..9) + +MyString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX OCTET STRING (SIZE(0..9)) + +END diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.diff b/test/smidiff/SMIDIFF-TEST-003-MIB.diff new file mode 100644 index 0000000..6c65198 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.diff @@ -0,0 +1,14 @@ +./SMIDIFF-TEST-003-MIB.new:35 default value added to `scalar1' +./SMIDIFF-TEST-003-MIB.new:44 named number `blue' removed from type used in `scalar2' +./SMIDIFF-TEST-003-MIB.new:52 named bit `yellow' added without starting in a new byte in type used in `scalar3' +./SMIDIFF-TEST-003-MIB.new:60 warning: named number `yellow' added to type used in `scalar4' +./SMIDIFF-TEST-003-MIB.new:76 named number `blue' removed from type used in `scalar6' +./SMIDIFF-TEST-003-MIB.new:84 warning: named number `green' added to type used in `scalar7' +./SMIDIFF-TEST-003-MIB.new:84 named number `green' removed from type used in `scalar7' +./SMIDIFF-TEST-003-MIB.new:92 warning: named number `green' changed to `white' at type used in `scalar8' +./SMIDIFF-TEST-003-MIB.new:100 warning: named number `yellow' added to type used in `scalar9' +./SMIDIFF-TEST-003-MIB.new:108 warning: named number `yellow' added to type used in `scalar10' +./SMIDIFF-TEST-003-MIB.new:116 warning: named number `yellow' added to type used in `scalar11' +./SMIDIFF-TEST-003-MIB.new:124 warning: named number `yellow' added to type used in `scalar12' +./SMIDIFF-TEST-003-MIB.new:132 warning: named number `pink' added to type used in `scalar13' +./SMIDIFF-TEST-003-MIB.new:140 named number `pink' removed from type used in `scalar14' diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.new b/test/smidiff/SMIDIFF-TEST-003-MIB.new new file mode 100644 index 0000000..872d1c9 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.new @@ -0,0 +1,155 @@ +SMIDIFF-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 3 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + DEFVAL {{ red, green }} + ::= { libsmiTest003Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Last bit removed." + ::= { libsmiTest003Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2), yellow(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in the same byte)." + ::= { libsmiTest003Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2), yellow(8) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in a new byte)." + ::= { libsmiTest003Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. No changes." + ::= { libsmiTest003Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Last number removed." + ::= { libsmiTest003Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(0), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER { red(-1), white(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number at start." + ::= { libsmiTest003Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX INTEGER { red(-1), yellow(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number in the middle." + ::= { libsmiTest003Mib 10 } + +scalar11 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2), yellow(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number." + ::= { libsmiTest003Mib 11 } + +scalar12 OBJECT-TYPE + SYNTAX INTEGER { yellow(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number." + ::= { libsmiTest003Mib 12 } + +scalar13 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number in the middle." + ::= { libsmiTest003Mib 13 } + +scalar14 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Removed a negative number from the middle." + ::= { libsmiTest003Mib 14 } + +scalar15 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed order of definition. Should not produce error msg." + ::= { libsmiTest003Mib 15 } +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.old b/test/smidiff/SMIDIFF-TEST-003-MIB.old new file mode 100644 index 0000000..99fb732 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.old @@ -0,0 +1,156 @@ +SMIDIFF-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 3 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest003Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Last bit removed." + ::= { libsmiTest003Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in the same byte)." + ::= { libsmiTest003Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in a new byte)." + ::= { libsmiTest003Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. No changes." + ::= { libsmiTest003Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Last number removed." + ::= { libsmiTest003Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number at start." + ::= { libsmiTest003Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number in the middle." + ::= { libsmiTest003Mib 10 } + +scalar11 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number." + ::= { libsmiTest003Mib 11 } + +scalar12 OBJECT-TYPE + SYNTAX INTEGER { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number." + ::= { libsmiTest003Mib 12 } + +scalar13 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number in the middle." + ::= { libsmiTest003Mib 13 } + +scalar14 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Removed a negative number from the middle." + ::= { libsmiTest003Mib 14 } + +scalar15 OBJECT-TYPE + SYNTAX INTEGER { red(0), yellow(-2), pink(-1), blue(2), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed order of definition. Should not produce error msg." + ::= { libsmiTest003Mib 15 } + + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.diff b/test/smidiff/SMIDIFF-TEST-004-MIB.diff new file mode 100644 index 0000000..5e9a764 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.diff @@ -0,0 +1,7 @@ +./SMIDIFF-TEST-004-MIB.new:11 warning: contact of `SMIDIFF-TEST-004-MIB' changed +./SMIDIFF-TEST-004-MIB.new:11 warning: description of module identity definition `SMIDIFF-TEST-004-MIB' changed +./SMIDIFF-TEST-004-MIB.old:11 info: previous definition of `SMIDIFF-TEST-004-MIB' +./SMIDIFF-TEST-004-MIB.new:43 warning: legal status change from `current' to `deprecated' for `scalar2' +./SMIDIFF-TEST-004-MIB.old:41 info: previous definition of `scalar2' +./SMIDIFF-TEST-004-MIB.new:51 status change from `deprecated' to `current' for `scalar3' +./SMIDIFF-TEST-004-MIB.old:49 info: previous definition of `scalar3' diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.new b/test/smidiff/SMIDIFF-TEST-004-MIB.new new file mode 100644 index 0000000..ec6423a --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.new @@ -0,0 +1,59 @@ +SMIDIFF-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest004Mib MODULE-IDENTITY + LAST-UPDATED "200110080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Torsten Klie + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + EMail: tklie@ibr.cs.tu-bs.de" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version. + This description has changed." + REVISION "200110080000Z" + DESCRIPTION + "Initial Revision. Now we use revision. In the old version only + lastUpdated was used. This should not produce an error message." + ::= { smidiffTestMib 4 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest004Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "BITS. Legal status change from current to deprecated." + ::= { libsmiTest004Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Illegal status change from deprecated to current." + ::= { libsmiTest004Mib 3 } + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.old b/test/smidiff/SMIDIFF-TEST-004-MIB.old new file mode 100644 index 0000000..50c9fcf --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.old @@ -0,0 +1,57 @@ +SMIDIFF-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest004Mib MODULE-IDENTITY + LAST-UPDATED "200110080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + + ::= { smidiffTestMib 4 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest004Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Legal status change from current to deprecated." + ::= { libsmiTest004Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "BITS. Illegal status change from deprecated to current." + ::= { libsmiTest004Mib 3 } + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.diff b/test/smidiff/SMIDIFF-TEST-005-MIB.diff new file mode 100644 index 0000000..3da876c --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.diff @@ -0,0 +1,10 @@ +SMIDIFF-TEST-005-MIB +./SMIDIFF-TEST-005-MIB.new:90 changed kind of index from `index' to `augment' in node `table2Entry' +./SMIDIFF-TEST-005-MIB.old:90 info: previous definition of `table2Entry' +./SMIDIFF-TEST-005-MIB.new:185 index of `table4Entry' changed from `t4c1' to `t4c2' +./SMIDIFF-TEST-005-MIB.old:184 info: previous definition of `table4Entry' +./SMIDIFF-TEST-005-MIB.new:208 implicit type for `t4c2' replaces type `Integer32' +./SMIDIFF-TEST-005-MIB.old:207 info: previous definition of `t4c2' +./SMIDIFF-TEST-005-MIB.new:208 range `(0..27)' added to type used in `t4c2' +./SMIDIFF-TEST-005-MIB.new:232 index of `table5Entry' changed from augmenting `table1Entry' to augmenting `table3Entry' +./SMIDIFF-TEST-005-MIB.old:231 info: previous definition of `table5Entry' diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.new b/test/smidiff/SMIDIFF-TEST-005-MIB.new new file mode 100644 index 0000000..ceeee2d --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.new @@ -0,0 +1,271 @@ +SMIDIFF-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 5 } + +table1 OBJECT-TYPE + SYNTAX SEQUENCE OF Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 1 } + +table1Entry OBJECT-TYPE + SYNTAX Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t1c1 } + ::= { table1 1 } + +Table1Entry ::= SEQUENCE { + t1c1 Integer32, + t1c2 Integer32, + t1c3 Integer32 +} + +t1c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 1 } + +t1c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 2 } + +t1c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 3 } + +table2 OBJECT-TYPE + SYNTAX SEQUENCE OF Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 2 } + +table2Entry OBJECT-TYPE + SYNTAX Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed INDEX to AUGMENTS." + --INDEX { t1c1, t2c1 } + AUGMENTS { table1Entry } + ::= { table2 1 } + +Table2Entry ::= SEQUENCE { + t2c1 Integer32, + t2c2 Integer32, + t2c3 Integer32 +} + +t2c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 1 } + +t2c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 2 } + +t2c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 3 } + +table3 OBJECT-TYPE + SYNTAX SEQUENCE OF Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table. No changes." + ::= { libsmiTest005Mib 3 } + +table3Entry OBJECT-TYPE + SYNTAX Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t3c1 } + ::= { table3 1 } + +Table3Entry ::= SEQUENCE { + t3c1 Integer32, + t3c2 Integer32, + t3c3 Integer32 +} + +t3c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 1 } + +t3c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 2 } + +t3c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 3 } + +table4 OBJECT-TYPE + SYNTAX SEQUENCE OF Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table." + ::= { libsmiTest005Mib 4 } + +table4Entry OBJECT-TYPE + SYNTAX Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index will change." + INDEX { t4c2 } + ::= { table4 1 } + +Table4Entry ::= SEQUENCE { + t4c1 Integer32, + t4c2 Integer32, + t4c3 Integer32 +} + +t4c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 1 } + +t4c2 OBJECT-TYPE + SYNTAX Integer32 (0..27) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 2 } + +t4c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 3 } + +table5 OBJECT-TYPE + SYNTAX SEQUENCE OF Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 5 } + +table5Entry OBJECT-TYPE + SYNTAX Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed index." + AUGMENTS { table3Entry } + ::= { table5 1 } + +Table5Entry ::= SEQUENCE { + t5c1 Integer32, + t5c2 Integer32, + t5c3 Integer32 +} + +t5c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 1 } + +t5c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 2 } + +t5c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.old b/test/smidiff/SMIDIFF-TEST-005-MIB.old new file mode 100644 index 0000000..8542441 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.old @@ -0,0 +1,270 @@ +SMIDIFF-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 5 } + +table1 OBJECT-TYPE + SYNTAX SEQUENCE OF Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 1 } + +table1Entry OBJECT-TYPE + SYNTAX Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t1c1 } + ::= { table1 1 } + +Table1Entry ::= SEQUENCE { + t1c1 Integer32, + t1c2 Integer32, + t1c3 Integer32 +} + +t1c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 1 } + +t1c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 2 } + +t1c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 3 } + +table2 OBJECT-TYPE + SYNTAX SEQUENCE OF Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 2 } + +table2Entry OBJECT-TYPE + SYNTAX Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed INDEX to AUGMENTS." + INDEX { t1c1, t2c1 } + ::= { table2 1 } + +Table2Entry ::= SEQUENCE { + t2c1 Integer32, + t2c2 Integer32, + t2c3 Integer32 +} + +t2c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 1 } + +t2c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 2 } + +t2c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 3 } + +table3 OBJECT-TYPE + SYNTAX SEQUENCE OF Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table. No changes." + ::= { libsmiTest005Mib 3 } + +table3Entry OBJECT-TYPE + SYNTAX Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t3c1 } + ::= { table3 1 } + +Table3Entry ::= SEQUENCE { + t3c1 Integer32, + t3c2 Integer32, + t3c3 Integer32 +} + +t3c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 1 } + +t3c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 2 } + +t3c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 3 } + +table4 OBJECT-TYPE + SYNTAX SEQUENCE OF Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table." + ::= { libsmiTest005Mib 4 } + +table4Entry OBJECT-TYPE + SYNTAX Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index will change." + INDEX { t4c1 } + ::= { table4 1 } + +Table4Entry ::= SEQUENCE { + t4c1 Integer32, + t4c2 Integer32, + t4c3 Integer32 +} + +t4c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 1 } + +t4c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 2 } + +t4c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 3 } + +table5 OBJECT-TYPE + SYNTAX SEQUENCE OF Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 5 } + +table5Entry OBJECT-TYPE + SYNTAX Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed index." + AUGMENTS { table1Entry } + ::= { table5 1 } + +Table5Entry ::= SEQUENCE { + t5c1 Integer32, + t5c2 Integer32, + t5c3 Integer32 +} + +t5c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 1 } + +t5c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 2 } + +t5c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.diff b/test/smidiff/SMIDIFF-TEST-006-MIB.diff new file mode 100644 index 0000000..8f51df4 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.diff @@ -0,0 +1,5 @@ +./SMIDIFF-TEST-006-MIB.new:39 implicit type for `scalar1' replaces type `MyNewDisplayString' +./SMIDIFF-TEST-006-MIB.old:41 info: previous definition of `scalar1' +./SMIDIFF-TEST-006-MIB.new:40 size of type used in `scalar1' changed from `(0..255)' to `(1..255)' +./SMIDIFF-TEST-006-MIB.new:39 description removed from `scalar1' +./SMIDIFF-TEST-006-MIB.old:41 info: previous definition of `scalar1' diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.new b/test/smidiff/SMIDIFF-TEST-006-MIB.new new file mode 100644 index 0000000..fd97066 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.new @@ -0,0 +1,44 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 6 } + +MyNewDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX MyDisplayString + +scalar1 OBJECT-TYPE + SYNTAX MyNewDisplayString (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + ::= { libsmiTest006Mib 1 } +END diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.old b/test/smidiff/SMIDIFF-TEST-006-MIB.old new file mode 100644 index 0000000..1f378ef --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.old @@ -0,0 +1,48 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 6 } + +MyNewDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX MyDisplayString + +scalar1 OBJECT-TYPE + SYNTAX MyNewDisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest006Mib 1 } +END diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.diff b/test/smidiff/SMIDIFF-TEST-007-MIB.diff new file mode 100644 index 0000000..1b8e3c8 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.diff @@ -0,0 +1,10 @@ +./SMIDIFF-TEST-007-MIB.new:35 warning: type `Foo' has been added +./SMIDIFF-TEST-007-MIB.new:40 warning: type `FooBar' has been added +./SMIDIFF-TEST-007-MIB.new:45 warning: type `Foo' replaces implicit type for `scalar1' +./SMIDIFF-TEST-007-MIB.old:35 info: previous definition of `scalar1' +./SMIDIFF-TEST-007-MIB.new:53 warning: type `FooBar' replaces implicit type for `scalar2' +./SMIDIFF-TEST-007-MIB.old:43 info: previous definition of `scalar2' +./SMIDIFF-TEST-007-MIB.new:53 warning: named number `bar' added to type used in `scalar2' +./SMIDIFF-TEST-007-MIB.new:61 warning: type `Foo' replaces implicit type for `scalar3' +./SMIDIFF-TEST-007-MIB.old:51 info: previous definition of `scalar3' +./SMIDIFF-TEST-007-MIB.new:61 named number `bar' removed from type used in `scalar3' diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.new b/test/smidiff/SMIDIFF-TEST-007-MIB.new new file mode 100644 index 0000000..1421d08 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.new @@ -0,0 +1,69 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 7 } + +Foo ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "" + SYNTAX INTEGER { foo(1) } + +FooBar ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "" + SYNTAX INTEGER { foo(1), bar(2) } + +scalar1 OBJECT-TYPE + SYNTAX Foo + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX FooBar + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX Foo + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.old b/test/smidiff/SMIDIFF-TEST-007-MIB.old new file mode 100644 index 0000000..ff1b5d1 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.old @@ -0,0 +1,59 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 7 } + +scalar1 OBJECT-TYPE + SYNTAX INTEGER { foo(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER { foo(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX INTEGER { foo(1), bar(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-MIB b/test/smidiff/SMIDIFF-TEST-MIB new file mode 100644 index 0000000..275eabc --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-MIB @@ -0,0 +1,40 @@ +SMIDIFF-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +smidiffTestMib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module represents the toplevel module of + a collection of MIB modules to check the capabilities + of smidiff." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { ibr 10 } + +MyDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX DisplayString +END diff --git a/test/smidump-cm.test b/test/smidump-cm.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-cm.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-cm.test.in b/test/smidump-cm.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-cm.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-corba.test b/test/smidump-corba.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-corba.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-corba.test.in b/test/smidump-corba.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-corba.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-identifiers.test b/test/smidump-identifiers.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-identifiers.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-identifiers.test.in b/test/smidump-identifiers.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-identifiers.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-imports.test b/test/smidump-imports.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-imports.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-imports.test.in b/test/smidump-imports.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-imports.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-jax.test b/test/smidump-jax.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-jax.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-jax.test.in b/test/smidump-jax.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-jax.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-metrics.test b/test/smidump-metrics.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-metrics.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-metrics.test.in b/test/smidump-metrics.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-metrics.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-mosy.test b/test/smidump-mosy.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-mosy.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-mosy.test.in b/test/smidump-mosy.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-mosy.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-netsnmp.test b/test/smidump-netsnmp.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-netsnmp.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-netsnmp.test.in b/test/smidump-netsnmp.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-netsnmp.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-orig-smiv2.test b/test/smidump-orig-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-orig-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-orig-smiv2.test.in b/test/smidump-orig-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-orig-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-python.test b/test/smidump-python.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-python.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-python.test.in b/test/smidump-python.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-python.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-sming.test b/test/smidump-sming.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-sming.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-sming.test.in b/test/smidump-sming.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-sming.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv1.test b/test/smidump-smiv1.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv1.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv1.test.in b/test/smidump-smiv1.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv1.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2-smiv2.test b/test/smidump-smiv2-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv2-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2-smiv2.test.in b/test/smidump-smiv2-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv2-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2.test b/test/smidump-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2.test.in b/test/smidump-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-tree.test b/test/smidump-tree.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-tree.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-tree.test.in b/test/smidump-tree.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-tree.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-types.test b/test/smidump-types.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-types.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-types.test.in b/test/smidump-types.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-types.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-xml.test b/test/smidump-xml.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-xml.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-xml.test.in b/test/smidump-xml.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-xml.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-yang.test b/test/smidump-yang.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-yang.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-yang.test.in b/test/smidump-yang.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-yang.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smilint-smiv2.test b/test/smilint-smiv2.test new file mode 100755 index 0000000..618b97b --- /dev/null +++ b/test/smilint-smiv2.test @@ -0,0 +1,56 @@ +#!/bin/sh +# +# smilint-FORMAT.test -- +# +# smilint test for various input formats. +# +# FORMAT=xxx : +# Check `smilint -l9' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/smilint-xxx/ output files. +# + +FORMAT=`echo $0 | sed -e 's/^.*smilint-\(.*\).test/\1/'` +ACTUALDIR=smilint-${FORMAT}.out +NOMINALDIR=dumps/smilint-${FORMAT} + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + echo "comparing \`smilint -l9 dumps/${FORMAT}/$mib' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smilint -c/dev/null -l9 ../dumps/${FORMAT}/$mib > $mib 2>&1 + cd .. + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$mib ${NOMINALDIR}/$mib > ${ACTUALDIR}/$mib.diff + if [ ! -s ${ACTUALDIR}/$mib.diff ] ; then + rm ${ACTUALDIR}/$mib.diff + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smilint output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +rm -f sync-dumps +cat > sync-dumps < $mib 2>&1 + cd .. + @DIFF@ ${ACTUALDIR}/$mib ${NOMINALDIR}/$mib > ${ACTUALDIR}/$mib.diff + if [ ! -s ${ACTUALDIR}/$mib.diff ] ; then + rm ${ACTUALDIR}/$mib.diff + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smilint output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +rm -f sync-dumps +cat > sync-dumps < dump-svg-script.h + +dump-svg.o: dump-svg-script.h + +smidump_SOURCES = smidump.c smidump.h shhopt.c \ + dump-sming.c dump-smi.c dump-yang.c \ + dump-imports.c dump-types.c dump-tree.c \ + dump-mosy.c dump-corba.c dump-netsnmp.c \ + dump-jax.c dump-xml.c dump-identifiers.c \ + dump-metrics.c dump-cm.c dump-python.c \ + dump-perl.c dump-scli.c dump-xsd.c dump-sppi.c \ + dump-sizes.c dump-svg-script.h dump-svg.c \ + rea.h rea.c dump-compliance.c dump-boilerplate.c \ + dstring.h dstring.c \ + fortopat.h fortopat.c fprint.h fprint.c + +smidump_LDADD = ../lib/libsmi.la -lm + +smidiff_SOURCES = smidiff.c shhopt.c +smidiff_LDADD = ../lib/libsmi.la + +MOSTLYCLEANFILES = dump-svg-script.h diff --git a/tools/Makefile.in b/tools/Makefile.in new file mode 100644 index 0000000..ac834b5 --- /dev/null +++ b/tools/Makefile.in @@ -0,0 +1,696 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the tools Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 8090 2008-04-18 12:56:29Z strauss $ +# + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = smiquery$(EXEEXT) smilint$(EXEEXT) smidump$(EXEEXT) \ + smidiff$(EXEEXT) smixlate$(EXEEXT) +subdir = tools +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/mib2svg.cgi.in $(srcdir)/smicache.1.in \ + $(srcdir)/smicache.in $(srcdir)/smidiff.1.in \ + $(srcdir)/smidump.1.in $(srcdir)/smilint.1.in \ + $(srcdir)/smiquery.1.in $(srcdir)/smistrip.1.in \ + $(srcdir)/smistrip.in $(srcdir)/smixlate.1.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = smistrip smicache smiquery.1 smilint.1 smidump.1 \ + smidiff.1 smistrip.1 smicache.1 smixlate.1 mib2svg.cgi +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(man1dir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_smidiff_OBJECTS = smidiff.$(OBJEXT) shhopt.$(OBJEXT) +smidiff_OBJECTS = $(am_smidiff_OBJECTS) +smidiff_DEPENDENCIES = ../lib/libsmi.la +am_smidump_OBJECTS = smidump.$(OBJEXT) shhopt.$(OBJEXT) \ + dump-sming.$(OBJEXT) dump-smi.$(OBJEXT) dump-yang.$(OBJEXT) \ + dump-imports.$(OBJEXT) dump-types.$(OBJEXT) \ + dump-tree.$(OBJEXT) dump-mosy.$(OBJEXT) dump-corba.$(OBJEXT) \ + dump-netsnmp.$(OBJEXT) dump-jax.$(OBJEXT) dump-xml.$(OBJEXT) \ + dump-identifiers.$(OBJEXT) dump-metrics.$(OBJEXT) \ + dump-cm.$(OBJEXT) dump-python.$(OBJEXT) dump-perl.$(OBJEXT) \ + dump-scli.$(OBJEXT) dump-xsd.$(OBJEXT) dump-sppi.$(OBJEXT) \ + dump-sizes.$(OBJEXT) dump-svg.$(OBJEXT) rea.$(OBJEXT) \ + dump-compliance.$(OBJEXT) dump-boilerplate.$(OBJEXT) \ + dstring.$(OBJEXT) fortopat.$(OBJEXT) fprint.$(OBJEXT) +smidump_OBJECTS = $(am_smidump_OBJECTS) +smidump_DEPENDENCIES = ../lib/libsmi.la +am_smilint_OBJECTS = smilint.$(OBJEXT) shhopt.$(OBJEXT) +smilint_OBJECTS = $(am_smilint_OBJECTS) +smilint_DEPENDENCIES = ../lib/libsmi.la +am_smiquery_OBJECTS = smiquery.$(OBJEXT) shhopt.$(OBJEXT) +smiquery_OBJECTS = $(am_smiquery_OBJECTS) +smiquery_DEPENDENCIES = ../lib/libsmi.la +am_smixlate_OBJECTS = smixlate.$(OBJEXT) shhopt.$(OBJEXT) \ + dstring.$(OBJEXT) +smixlate_OBJECTS = $(am_smixlate_OBJECTS) +smixlate_DEPENDENCIES = ../lib/libsmi.la +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(smidiff_SOURCES) $(smidump_SOURCES) $(smilint_SOURCES) \ + $(smiquery_SOURCES) $(smixlate_SOURCES) +DIST_SOURCES = $(smidiff_SOURCES) $(smidump_SOURCES) \ + $(smilint_SOURCES) $(smiquery_SOURCES) $(smixlate_SOURCES) +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = -I../lib +EXTRA_DIST = smidump.h shhopt.h \ + $(man_MANS) \ + dump-fig.c \ + dump-svg-script.js + +bin_SCRIPTS = smistrip smicache +man_MANS = smiquery.1 smilint.1 smidump.1 smidiff.1 \ + smistrip.1 smicache.1 smixlate.1 + +smiquery_SOURCES = smiquery.c shhopt.c +smiquery_LDADD = ../lib/libsmi.la +smilint_SOURCES = smilint.c shhopt.c +smilint_LDADD = ../lib/libsmi.la +smixlate_SOURCES = smixlate.c shhopt.c dstring.h dstring.c +smixlate_LDADD = ../lib/libsmi.la +smidump_SOURCES = smidump.c smidump.h shhopt.c \ + dump-sming.c dump-smi.c dump-yang.c \ + dump-imports.c dump-types.c dump-tree.c \ + dump-mosy.c dump-corba.c dump-netsnmp.c \ + dump-jax.c dump-xml.c dump-identifiers.c \ + dump-metrics.c dump-cm.c dump-python.c \ + dump-perl.c dump-scli.c dump-xsd.c dump-sppi.c \ + dump-sizes.c dump-svg-script.h dump-svg.c \ + rea.h rea.c dump-compliance.c dump-boilerplate.c \ + dstring.h dstring.c \ + fortopat.h fortopat.c fprint.h fprint.c + +smidump_LDADD = ../lib/libsmi.la -lm +smidiff_SOURCES = smidiff.c shhopt.c +smidiff_LDADD = ../lib/libsmi.la +MOSTLYCLEANFILES = dump-svg-script.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign tools/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +smistrip: $(top_builddir)/config.status $(srcdir)/smistrip.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smicache: $(top_builddir)/config.status $(srcdir)/smicache.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smiquery.1: $(top_builddir)/config.status $(srcdir)/smiquery.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smilint.1: $(top_builddir)/config.status $(srcdir)/smilint.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump.1: $(top_builddir)/config.status $(srcdir)/smidump.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidiff.1: $(top_builddir)/config.status $(srcdir)/smidiff.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smistrip.1: $(top_builddir)/config.status $(srcdir)/smistrip.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smicache.1: $(top_builddir)/config.status $(srcdir)/smicache.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smixlate.1: $(top_builddir)/config.status $(srcdir)/smixlate.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +mib2svg.cgi: $(top_builddir)/config.status $(srcdir)/mib2svg.cgi.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +smidiff$(EXEEXT): $(smidiff_OBJECTS) $(smidiff_DEPENDENCIES) + @rm -f smidiff$(EXEEXT) + $(LINK) $(smidiff_OBJECTS) $(smidiff_LDADD) $(LIBS) +smidump$(EXEEXT): $(smidump_OBJECTS) $(smidump_DEPENDENCIES) + @rm -f smidump$(EXEEXT) + $(LINK) $(smidump_OBJECTS) $(smidump_LDADD) $(LIBS) +smilint$(EXEEXT): $(smilint_OBJECTS) $(smilint_DEPENDENCIES) + @rm -f smilint$(EXEEXT) + $(LINK) $(smilint_OBJECTS) $(smilint_LDADD) $(LIBS) +smiquery$(EXEEXT): $(smiquery_OBJECTS) $(smiquery_DEPENDENCIES) + @rm -f smiquery$(EXEEXT) + $(LINK) $(smiquery_OBJECTS) $(smiquery_LDADD) $(LIBS) +smixlate$(EXEEXT): $(smixlate_OBJECTS) $(smixlate_DEPENDENCIES) + @rm -f smixlate$(EXEEXT) + $(LINK) $(smixlate_OBJECTS) $(smixlate_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dstring.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-boilerplate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-cm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-compliance.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-corba.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-identifiers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-imports.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-jax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-metrics.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-mosy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-netsnmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-perl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-python.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-scli.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sizes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-smi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sming.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sppi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-svg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-tree.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-types.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-xml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-xsd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-yang.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fortopat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rea.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shhopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smidiff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smilint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smiquery.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smixlate.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-binSCRIPTS + +install-html: install-html-am + +install-info: install-info-am + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-binSCRIPTS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-man uninstall-man1 + + +dump-svg-script.h: dump-svg-script.js + (echo "const char *code =";cat dump-svg-script.js | sed -e 's/\\/&&/g;s/"/\\"/g;s/^/"/;s/$$/\\n"/'; echo ";") > dump-svg-script.h + +dump-svg.o: dump-svg-script.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tools/dstring.c b/tools/dstring.c new file mode 100644 index 0000000..5ad5835 --- /dev/null +++ b/tools/dstring.c @@ -0,0 +1,231 @@ +/* + * dstring.c -- + * + * Implementation of the dynamic string abstract data type. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "dstring.h" + +#if !defined va_copy +# if defined __va_copy +# define va_copy __va_copy /* C99 draft proposal */ +# else +# define va_copy(lhs,rhs) (lhs) = (rhs) +# endif +#endif + +#if 0 +/* These functions should not be needed if inlining works properly. */ +char* +dstring_str(dstring_t *ds) +{ + return ds ? ds->str : NULL; +} + +size_t +dstring_len(dstring_t *ds) +{ + return ds ? ds->len : 0; +} +#endif + +static inline dstring_t* +dstring_grow(dstring_t *ds, size_t len) +{ + if (ds) { + ds->str = realloc(ds->str, len + 1); + if (! ds->str) { + exit(EXIT_FAILURE); + } + ds->str[len] = '\0'; + ds->len = len; + } + return ds; +} + +dstring_t* +dstring_new(void) +{ + dstring_t *ds; + + ds = calloc(1, sizeof(dstring_t)); + if (! ds) { + exit(EXIT_FAILURE); + } + return dstring_grow(ds, 0); +} + +dstring_t* +dstring_delete(dstring_t *ds) +{ + if (ds) { + if (ds->str) free(ds->str); + free(ds); + } + return NULL; +} + +dstring_t* +dstring_assign(dstring_t *ds, const char *s) +{ + if (ds && s) { + ds = dstring_grow(ds, strlen(s)); + strcpy(ds->str, s); + } + return ds; +} + +dstring_t* +dstring_append(dstring_t *ds, const char *s) +{ + if (ds && s) { + ds = dstring_grow(ds, ds->len + strlen(s)); + strcat(ds->str, s); + } + return ds; +} + + +dstring_t* +dstring_append_char(dstring_t *ds, const char c) +{ + if (ds) { + ds = dstring_grow(ds, ds->len + 1); + ds->str[ds->len-1] = c; + } + return ds; +} + + +dstring_t* +dstring_concat(dstring_t *ds, ...) +{ + va_list ap; + const char *s; + + if (ds) { + va_start(ap, ds); + for (s = va_arg(ap, char*); s; s = va_arg(ap, char*)) { + ds = dstring_append(ds, s); + } + va_end(ap); + } + return ds; +} + +dstring_t* +dstring_append_printf(dstring_t *ds, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + ds = dstring_append_vprintf(ds, format, ap); + va_end(ap); + return ds; +} + +dstring_t * +dstring_append_vprintf(dstring_t *ds, const char *format, va_list _ap) +{ + int n, o; + va_list ap; + + if (ds) { + o = ds->len; + while (1) { + va_copy(ap, _ap); + n = vsnprintf(ds->str + o, ds->len+1 - o, format, ap); + va_end(ap); + if (n > -1 && n+o <= ds->len) { + if (n+o < ds->len) { + dstring_truncate(ds, n+o); + } + return ds; + } + if (n > 0) { + ds = dstring_grow(ds, n + o); /* C99 */ + } else { + ds = dstring_grow(ds, ds->len + ds->len); /* GLIBC */ + } + } + } + + return ds; +} + +dstring_t* +dstring_printf(dstring_t *ds, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + ds = dstring_vprintf(ds, format, ap); + va_end(ap); + return ds; +} + +dstring_t* +dstring_vprintf(dstring_t *ds, const char *format, va_list _ap) +{ + int n; + va_list ap; + + if (ds) { + while (1) { + va_copy(ap, _ap); + n = vsnprintf(ds->str, ds->len+1, format, ap); + va_end(ap); + if (n > -1 && n <= ds->len) { + if (n < ds->len) { + dstring_truncate(ds, n); + } + return ds; + } + if (n > 0) { + ds = dstring_grow(ds, n); /* C99 */ + } else { + ds = dstring_grow(ds, ds->len + ds->len); /* GLIBC */ + } + } + } + return ds; +} + +dstring_t* +dstring_truncate(dstring_t *ds, int len) +{ + if (ds && len < ds->len) { + ds = dstring_grow(ds, len); + } + return ds; +} + +dstring_t* +dstring_expand(dstring_t *ds, int len, char fill) +{ + if (ds && len > ds->len) { + int i, old = ds->len; + ds = dstring_grow(ds, len); + for (i = old; i < len; i++) { + ds->str[i] = fill; + } + } + return ds; +} diff --git a/tools/dstring.h b/tools/dstring.h new file mode 100644 index 0000000..7e2a693 --- /dev/null +++ b/tools/dstring.h @@ -0,0 +1,90 @@ +/* + * dstring.h -- + * + * This file implements an abstract data type for dynamic strings. + * + * Note: The behavior of the functions that modify the a dynamic + * string is undefined if an argument strings points into the + * dynamic string itself. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#ifndef _DSTRING_H_ +#define _DSTRING_H_ + +#include + +#ifdef __GNUC__ +# define inline /* extern */ static inline +#else +#ifdef HAVE_WIN_H +# define inline __inline +#endif +#endif + +struct dstring { + char *str; + size_t len; +}; + +typedef struct dstring dstring_t; + +inline char* +dstring_str(dstring_t *ds) +{ + return ds ? ds->str : NULL; +} + +inline size_t +dstring_len(dstring_t *ds) +{ + return ds ? ds->len : 0; +} + +extern dstring_t* +dstring_new(void); + +extern dstring_t* +dstring_delete(dstring_t *ds); + +extern dstring_t* +dstring_assign(dstring_t *ds, const char *s); + +extern dstring_t* +dstring_concat(dstring_t *ds, ...); + +extern dstring_t* +dstring_append(dstring_t *ds, const char *s); + +extern dstring_t* +dstring_append_char(dstring_t *ds, const char c); + +extern dstring_t* +dstring_append_printf(dstring_t *ds, const char *format, ...); + +extern dstring_t* +dstring_append_vprintf(dstring_t *ds, const char *format, va_list ap); + +extern dstring_t* +dstring_printf(dstring_t *ds, const char *format, ...); + +extern dstring_t* +dstring_vprintf(dstring_t *ds, const char *format, va_list ap); + +extern dstring_t* +dstring_truncate(dstring_t *ds, int len); + +extern dstring_t* +dstring_expand(dstring_t *ds, int len, char fill); + +#ifdef __GNUC__ +#undef inline +#endif + +#endif diff --git a/tools/dump-boilerplate.c b/tools/dump-boilerplate.c new file mode 100644 index 0000000..1676c88 --- /dev/null +++ b/tools/dump-boilerplate.c @@ -0,0 +1,241 @@ +/* + * dump-boilerplate.c -- + * + * Operations to dump security considerations boilerplates SMI modules. + * + * Copyright (c) 2008 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-identifiers.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int moduleLen = 0; +static int identifierLen = 0; + +static void fprintBoilerplate(FILE *f, int modc, SmiModule **modv) +{ + SmiNode *smiNode; + int i, roobjs = 0, rwobjs = 0; + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (!smiNode->name) continue; + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + rwobjs++; + } + if (smiNode->access == SMI_ACCESS_READ_WRITE + || smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_NOTIFY) { + roobjs++; + } + } + } + + if (roobjs == 0 && rwobjs == 0) { + fprintf(f, + "This module does not define any management objects. Instead, it\n" + "defines a set of textual conventions which may be used by other MIB\n" + "modules to define management objects.\n" + "\n" + "Meaningful security considerations can only be written in the MIB\n" + "modules that define management objects. This document has therefore\n" + "no impact on the security of the Internet.\n"); + return; + } + + if (rwobjs) { + fprintf(f, + "# if you have any read-write and/or read-create objects, please\n" + "# describe their specific sensitivity or vulnerability.\n" + "# RFC 2669 has a very good example.\n" + "\n" + "There are a number of management objects defined in this MIB module\n" + "with a MAX-ACCESS clause of read-write and/or read-create. Such\n" + "objects may be considered sensitive or vulnerable in some network\n" + "environments. The support for SET operations in a non-secure\n" + "environment without proper protection can have a negative effect on\n" + "network operations. These are the tables and objects and their\n" + "sensitivity/vulnerability:\n" + "\n"); + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE + && smiNode->name) { + fprintf(f, " %-*s # explain sensitivity\n", + identifierLen, smiNode->name); + } + } + fprintf(f, "\n"); + } + } else { + fprintf(f, + "There are no management objects defined in this MIB module that have\n" + "a MAX-ACCESS clause of read-write and/or read-create. So, if this\n" + "MIB module is implemented correctly, then there is no risk that an\n" + "intruder can alter or create any management objects of this MIB\n" + "module via direct SNMP SET operations.\n" + "\n"); + } + + if (roobjs) { + fprintf(f, + "# for all MIB modules you must evaluate whether any readable objects\n" + "# are sensitive or vulnerable (for instance, if they might reveal\n" + "# customer information or violate personal privacy laws such as\n" + "# those of the European Union if exposed to unathorized parties)\n" + "\n" + "Some of the readable objects in this MIB module (i.e., objects with a\n" + "MAX-ACCESS other than not-accessible) may be considered sensitive or\n" + "vulnerable in some network environments. It is thus important to\n" + "control even GET and/or NOTIFY access to these objects and possibly\n" + "to even encrypt the values of these objects when sending them over\n" + "the network via SNMP. These are the tables and objects and their\n" + "sensitivity/vulnerability:\n" + "\n"); + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if ((smiNode->access == SMI_ACCESS_READ_WRITE + || smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_NOTIFY) + && smiNode->name) { + fprintf(f, " %-*s # explain sensitivity\n", + identifierLen, smiNode->name); + } + } + fprintf(f, "\n"); + } + + fprintf(f, + "SNMP versions prior to SNMPv3 did not include adequate security.\n" + "Even if the network itself is secure (for example by using IPsec),\n" + "even then, there is no control as to who on the secure network is\n" + "allowed to access and GET/SET (read/change/create/delete) the objects\n" + "in this MIB module.\n" + "\n" + "It is RECOMMENDED that implementers consider the security features as\n" + "provided by the SNMPv3 framework (see [RFC3410], section 8),\n" + "including full support for the SNMPv3 cryptographic mechanisms (for\n" + "authentication and privacy).\n" + "\n" + "Further, deployment of SNMP versions prior to SNMPv3 is NOT\n" + "RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to\n" + "enable cryptographic security. It is then a customer/operator\n" + "responsibility to ensure that the SNMP entity giving access to an\n" + "instance of this MIB module is properly configured to give access to\n" + "the objects only to those principals (users) that have legitimate\n" + "rights to indeed GET or SET (change/create/delete) them.\n" + "\n"); + } +} + + + +static void dumpBoilerplate(int modc, SmiModule **modv, int flags, + char *output) +{ + SmiNode *smiNode; + int i, len; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (moduleLen = 0, identifierLen = 0, i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + len = strlen(smiNode->name); + if (len > identifierLen) identifierLen = len; + } + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united security considerations boilerplate (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintBoilerplate(f, modc, modv); + + } else { + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s security considerations boilerplate (generated by smidump " + SMI_VERSION_STRING ")\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintBoilerplate(f, 1, &(modv[i])); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initBoilerplate() +{ + + static SmidumpDriver driver = { + "boilerplate", + dumpBoilerplate, + SMI_FLAG_NODESCR, + 0, + "generate security considerations boilerplate text", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-cm.c b/tools/dump-cm.c new file mode 100644 index 0000000..10f0a78 --- /dev/null +++ b/tools/dump-cm.c @@ -0,0 +1,1209 @@ +/* + * dump-cm.c -- + * + * Operations to dump conceptual models for MIB modules. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-cm.c 2718 2005-08-24 06:59:15Z sperner $ + */ + + +/* + * -- TO DO -- + * + * Berechnungen der UML Diagramme debuggen + * + */ + + + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" + + + +/* + * Definitions used by the dia output driver (node layout). + */ + +static const float HEADFONTSIZETABLE = (float)0.51; +static const float HEADSPACESIZETABLE = (float)0.6; +static const float ATTRFONTSIZE = (float)0.48; +static const float ATTRSPACESIZE = (float)2.4; +static const float RECTCORRECTION = (float)0.85; +static const float EDGEYSPACING = (float)2.0; +static const float TABLEHEIGHT = (float)2.6; /* headline of the table */ +static const float TABLEELEMHEIGHT = (float)0.675; /* height of one attribute */ + +/* + * global dia graph layout + */ +static const float YSPACING = (float)3.0; /* y space between nodes */ +static const float XSPACING = (float)4.0; /* x space between nodes */ +static const float NEWLINEDISTANCE = (float)40.0; /* length of one line */ +static const float XOFFSET = (float)2.0; /* left upper start of graph */ +static const float YOFFSET = (float)5.0; /* left upper start of graph */ + +/* + * position of the dia info note + */ +static const float XNOTE = (float)1.0; /* left upper corner of note */ +static const float YNOTE = (float)1.0; /* left upper corner of note */ + +/* + * Stereotype Name + */ +static const char* STEREOTYPE = "smi mib class"; + +/* + * Property String for index objects + */ +static const char* INDEXPROPERTY = " {index}"; + + +/* -------------- main functions ------------------------------------------- */ + + +/* + * Creates the graph nodes of the given module + */ +static void algCreateNodes(SmiModule *module) +{ + SmiNode *node; + + /* get tables and scalars from the MIB module */ + for (node = smiGetFirstNode(module, SMI_NODEKIND_TABLE); + node; + node = smiGetNextNode(node, SMI_NODEKIND_TABLE)) { + if (node->status != SMI_STATUS_OBSOLETE) { + if (!SUPPRESS_DEPRECATED || node->status != SMI_STATUS_DEPRECATED) + graphInsertNode(graph, node); + } + } + for (node = smiGetFirstNode(module, SMI_NODEKIND_SCALAR); + node; + node = smiGetNextNode(node, SMI_NODEKIND_SCALAR)) { + if (node->status != SMI_STATUS_OBSOLETE) { + if (!SUPPRESS_DEPRECATED || node->status != SMI_STATUS_DEPRECATED) + graphInsertNode(graph, node); + } + } +} + + + +/* ------ XML primitives ------ */ + + + + +static void diaPrintXMLHeader() +{ + printf("\n"); + printf("\n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" #A4#\n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +static void diaPrintXMLClose() +{ + printf(" \n"); + printf("\n"); +} + +/* + * prints the type of a given node + */ +static void diaPrintXMLType(SmiNode *smiNode, int index) +{ + printf(" \n"); + if (index) { + printf(" #%s%s#\n", + algGetTypeName(smiNode), INDEXPROPERTY); + } else { + printf(" #%s#\n", algGetTypeName(smiNode)); + } + printf(" \n"); +} + +/* + * index = 0 -> no index element + * index = 1 -> index element -> printed with "+" + */ +static void diaPrintXMLAttribute(SmiNode *node, int index) +{ + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", node->name); + printf(" \n"); + + diaPrintXMLType(node,index); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + if (node->access == SMI_ACCESS_NOT_ACCESSIBLE) { + printf(" \n"); + } else { + printf(" \n"); + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + if (node->nodekind == SMI_NODEKIND_SCALAR) { + printf(" \n"); + } else { + printf(" \n"); + } + + printf(" \n"); + printf(" \n"); +} + +/* + * prints the related scalars for a given table + */ +static void diaPrintXMLRelatedScalars(GraphNode *node) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tEdge->dia.flags |= DIA_PRINT_FLAG; + tEdge->endNode->dia.flags |= DIA_PRINT_FLAG; + + diaPrintXMLAttribute(tEdge->endNode->smiNode,0); + } + } +} + +/* + * prints all columns objects of the given node + */ +static void diaPrintXMLAllColumns(GraphNode *node) +{ + SmiModule *module = NULL; + SmiNode *smiNode = NULL; + SmiNode *ppNode; + + module = smiGetNodeModule(node->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(node->smiNode, smiNode) && + cmpSmiNodes(node->smiNode, ppNode)) + diaPrintXMLAttribute(smiNode, 0); + } +} + +/* + * adds the index to an augmenting table (row-element) + */ +static void diaPrintAugmentIndex(GraphNode *tNode) +{ + GraphEdge *tEdge; + SmiElement *smiElement; + + for (tEdge = graphGetFirstEdgeByNode(graph, tNode); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, tNode)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(tNode->smiNode, tEdge->startNode->smiNode)) { + diaPrintXMLAttribute(smiGetElementNode(smiElement),1); + } + } + } + } +} + +static void diaPrintXMLObject(GraphNode *node, float x, float y) +{ + SmiElement *smiElement; + + if (!node) return; + if (node->dia.flags & DIA_PRINT_FLAG) return; + + node->dia.x = x; + node->dia.y = y; + node->dia.flags |= DIA_PRINT_FLAG; /* object is now printed */ + + printf(" \n", + node->smiNode->name); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n",node->dia.w); + printf(" \n"); + printf(" \n"); + printf(" \n",node->dia.h); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", + smiGetFirstChildNode(node->smiNode)->name); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", STEREOTYPE); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + if (node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + diaPrintXMLRelatedScalars(node); + + diaPrintAugmentIndex(node); + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + diaPrintXMLAttribute(smiGetElementNode(smiElement),1); + } + + if (PRINT_DETAILED_ATTR) { + diaPrintXMLAllColumns(node); + } + } + + printf(" \n"); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +/* + * prints a group of scalars denoted by group + */ +static void diaPrintXMLGroup(int group, float x, float y) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) break; + } + + if (!tNode) return; + + printf(" \n", + smiGetParentNode(tNode->smiNode)->name); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n",0.0); + printf(" \n"); + printf(" \n"); + printf(" \n",0.0); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", + smiGetParentNode(tNode->smiNode)->name); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", STEREOTYPE); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + diaPrintXMLAttribute(tNode->smiNode,0); + } + } + + printf(" \n"); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +static float getRectSX(GraphNode *tNode) +{ + return (float) (tNode->dia.w / 2.0 + tNode->dia.x - RECTCORRECTION); +} + +static float getRectEX(GraphNode *tNode) +{ + return (float) (tNode->dia.w / 2.0 + tNode->dia.x + RECTCORRECTION); +} + +static float getRectSY(GraphNode *tNode) +{ + return (float) (tNode->dia.y - 2.0 - RECTCORRECTION); +} + +static float getRectEY(GraphNode *tNode) +{ + return (float) (tNode->dia.y - 2.0 + RECTCORRECTION); +} + + +static int getConPoint(GraphNode *snode, GraphNode *enode) +{ + float x1,y1,x2,y2; + int con = 1; + + x1 = snode->dia.x; + y1 = snode->dia.y; + x2 = enode->dia.x; + y2 = enode->dia.y; + + if (x1 == x2 && y1 < y2) con = 6; + if (x1 == x2 && y1 > y1) con = 1; + if (x1 > x2 && y1 == y2) con = 3; + if (x1 < x2 && y1 == y2) con = 4; + if (x1 > x2 && y1 > y2) con = 0; + if (x1 > x2 && y1 < y2) con = 5; + if (x1 < x2 && y1 > y2) con = 2; + if (x1 < x2 && y1 < y2) con = 7; + + return con; +} + +static float getObjX(GraphNode *node, int con) +{ + switch (con) { + case 0 : + return node->dia.x; + break; + case 1 : + return (float) (node->dia.w / 2.0 + node->dia.x); + break; + case 2 : + return node->dia.x + node->dia.w; + break; + case 3 : + return node->dia.x; + break; + case 4 : + return node->dia.x + node->dia.w; + break; + case 5 : + return node->dia.x; + break; + case 6 : + return (float) (node->dia.w / 2.0 + node->dia.x); + break; + case 7 : + return node->dia.x + node->dia.w; + break; + } + return 0.0; +} + +static float getObjY(GraphNode *node, int con) +{ + switch (con) { + case 0 : + return node->dia.y; + break; + case 1 : + return node->dia.y; + break; + case 2 : + return node->dia.y; + break; + case 3 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 4 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 5 : + return node->dia.y + node->dia.h; + break; + case 6 : + return node->dia.y + node->dia.h; + break; + case 7 : + return node->dia.y + node->dia.h; + break; + } + return 0.0; +} + +static float getObjYRel(GraphEdge *edge, int con) +{ + GraphNode *node, *node2; + float dist; + + node = edge->startNode; + node2 = edge->endNode; + if (node->dia.y < node2->dia.y) { + dist = ABS(((node->dia.y + node->dia.h) - node2->dia.y ) / 2.0); + } else { + dist = ABS((node->dia.y - (node2->dia.y + node2->dia.h)) / 2.0); + } + + switch (con) { + case 0 : + return node->dia.y - dist; + break; + case 1 : + return node->dia.y - dist; + break; + case 2 : + return node->dia.y - dist; + break; + case 3 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 4 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 5 : + return node->dia.y + node->dia.h + dist; + break; + case 6 : + return node->dia.y + node->dia.h + dist; + break; + case 7 : + return node->dia.y + node->dia.h + dist; + break; + } + return 0.0; +} + +/* + * diaPrintXMLCoordinates + * + * prints and calculates the coordinates of a given edge + */ +static void diaPrintXMLCoordinates(GraphEdge *tEdge) +{ + int scon, econ; + + scon = getConPoint(tEdge->startNode, tEdge->endNode); + econ = getConPoint(tEdge->endNode, tEdge->startNode); + + printf(" \n"); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjY(tEdge->startNode,scon)); + printf(" \n"); + printf(" \n"); + printf(" \n" + ,getRectSX(tEdge->startNode) + ,getRectSY(tEdge->startNode) + ,getRectEX(tEdge->startNode) + ,getRectEY(tEdge->startNode)); + printf(" \n"); + printf(" \n"); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjY(tEdge->startNode,scon)); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjYRel(tEdge,scon)); + printf(" \n" + ,getObjX(tEdge->endNode,econ) + ,getObjYRel(tEdge,scon)); + printf(" \n" + ,getObjX(tEdge->endNode,econ) + ,getObjY(tEdge->endNode,econ)); + printf(" \n"); +} + +/* + * diaPrintXMLConPoints + * + * prints the connection points of an edge + */ +static void diaPrintXMLConPoints(GraphEdge *tEdge) +{ + int scon, econ; + + scon = getConPoint(tEdge->startNode, tEdge->endNode); + econ = getConPoint(tEdge->endNode, tEdge->startNode); + + printf(" \n"); + printf(" \n", + tEdge->startNode->smiNode->name,scon); + printf(" \n", + tEdge->endNode->smiNode->name, econ); + printf(" \n"); +} + +static void diaPrintXMLDependency(GraphEdge *tEdge) +{ + if (tEdge->dia.flags & DIA_PRINT_FLAG) return; + tEdge->dia.flags |= DIA_PRINT_FLAG; + + printf(" \n", + tEdge->startNode->smiNode->name, + tEdge->endNode->smiNode->name); + + diaPrintXMLCoordinates(tEdge); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + diaPrintXMLConPoints(tEdge); + + printf(" \n"); +} + +/* + * Aggregation is a special case of the association. + * If aggregate = 1 it is an aggregation if 0 it is an association. + */ +static void diaPrintXMLAssociation(GraphEdge *tEdge, int aggregate) +{ + if (tEdge->dia.flags & DIA_PRINT_FLAG) return; + tEdge->dia.flags |= DIA_PRINT_FLAG; + if (aggregate > 1) aggregate = 1; + if (aggregate < 0) aggregate = 0; + + printf(" \n", + tEdge->startNode->smiNode->name, + tEdge->endNode->smiNode->name); + + diaPrintXMLCoordinates(tEdge); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + switch(tEdge->indexkind) { + case SMI_INDEX_UNKNOWN : + switch (tEdge->enhancedindex) { + case GRAPH_ENHINDEX_UNKNOWN : + break; + case GRAPH_ENHINDEX_TYPES : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_NAMES : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_NOTIFICATION : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_INDEX : + /* should not occur - is handled below */ + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_REROUTE : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_POINTER : + printf(" #%s#\n",""); + break; + } + break; + case SMI_INDEX_INDEX : + printf(" #%s#\n",""); + break; + case SMI_INDEX_AUGMENT : + printf(" #%s#\n","augments"); + break; + case SMI_INDEX_SPARSE : + printf(" #%s#\n","sparses"); + break; + case SMI_INDEX_REORDER : + printf(" #%s#\n","reorders"); + break; + case SMI_INDEX_EXPAND : + printf(" #%s#\n","expands"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" # #\n"); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" #1#\n"); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" #0#\n"); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" #0#\n"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf(" #1#\n"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" # #\n"); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" #*#\n"); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" #*#\n"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf(" #0..1#\n"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",aggregate); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + diaPrintXMLConPoints(tEdge); + + printf(" \n"); +} + +static void diaPrintXMLConnection(GraphEdge *tEdge) +{ + switch (tEdge->connection) { + case GRAPH_CON_UNKNOWN: + break; + case GRAPH_CON_AGGREGATION : + diaPrintXMLAssociation(tEdge,1); + break; + case GRAPH_CON_DEPENDENCY : + diaPrintXMLDependency(tEdge); + break; + case GRAPH_CON_ASSOCIATION : + diaPrintXMLAssociation(tEdge,0); + break; + } +} + +/* + * diaPrintXMLInfoNote + * + * Prints an UML note with a short information on it (Modulename and + * smidump version). + */ +static void diaPrintXMLInfoNote(int modc, SmiModule **modv) +{ + size_t length; + float width; + char *note; + int i; + + const char *s1 = "Conceptual model of "; + const char *s2 = "- generated by smidump " SMI_VERSION_STRING; + + /* + * Calculate the length of the string... + */ + + length = strlen(s1) + strlen(s2) + 1; + + for (i = 0; i < modc; i++) { + length += strlen(modv[i]->name) + 1; + } + + /* + * ... before allocating a buffer and putting the string together. + */ + + note = xmalloc(length); + strcpy(note, s1); + for (i = 0; i < modc; i++) { + strcat(note, modv[i]->name); + strcat(note, " "); + } + strcat(note, s2); + + width = (float)strlen(note) * (float)0.76; /* don't ask */ + + printf("\n"); + printf(" \n"); + printf(" \n",XNOTE, YNOTE); + printf(" \n"); + printf(" \n"); + printf(" \n", + XNOTE-0.5, YNOTE-0.5, XNOTE-0.5 + width, YNOTE - 0.5 + 1.7); + printf(" \n"); + printf(" \n"); + printf(" \n",XNOTE, YNOTE); + printf(" \n"); + printf(" \n"); + printf(" \n", width); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", note); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n", XNOTE + 0.35, YNOTE + 1.28); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf("\n"); + + xfree(note); +} + +/* + * diaCalcSize + * + * Calculates the size of a given node for the UML representation. + */ +static GraphNode *diaCalcSize(GraphNode *node) +{ + GraphEdge *tEdge; + SmiNode *tNode,*ppNode; + SmiElement *smiElement; + SmiModule *module; + + if (node->smiNode->nodekind == SMI_NODEKIND_SCALAR) return node; + + node->dia.w = (strlen(node->smiNode->name)+4) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + + node->dia.h = TABLEHEIGHT; + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + node->dia.w = max(node->dia.w, (strlen(tNode->name) + + strlen(algGetTypeName(tNode)) + + strlen(INDEXPROPERTY)) + * ATTRFONTSIZE + + ATTRSPACESIZE); + node->dia.h += TABLEELEMHEIGHT; + } + + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + node->dia.h += TABLEELEMHEIGHT; + tNode = tEdge->endNode->smiNode; + + node->dia.w = max(node->dia.w, (strlen(tNode->name) + + strlen(algGetTypeName(tNode))) + * ATTRFONTSIZE + + ATTRSPACESIZE); + } + } + + if (PRINT_DETAILED_ATTR && node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + module = smiGetNodeModule(node->smiNode); + + for (tNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + tNode; + tNode = smiGetNextNode(tNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(tNode); + ppNode = smiGetParentNode(ppNode); + + if (cmpSmiNodes(node->smiNode, ppNode)) { + int len; + char *typeName; + + typeName = algGetTypeName(tNode); + len = strlen(tNode->name) + (typeName ? strlen(typeName) : 0); + node->dia.h += TABLEELEMHEIGHT; + node->dia.w = max(node->dia.w, len) + * ATTRFONTSIZE + + ATTRSPACESIZE; + } + } + } + + return node; +} + +static float diaPrintNode(GraphNode *node, float x, float y) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (! (tEdge->dia.flags & DIA_PRINT_FLAG)) { + if (node == tEdge->startNode) { + y += tEdge->endNode->dia.h + YSPACING; + diaPrintXMLObject(tEdge->endNode, x, y); + diaPrintXMLConnection(tEdge); + y = diaPrintNode(tEdge->startNode, x, y); + /* (x+tEdge->startNode->dia.w+XSPACING),y); */ + + y = diaPrintNode(tEdge->endNode, + (x+tEdge->startNode->dia.w+XSPACING), y); + } + } + } + + return y; +} + +static void diaPrintXML(int modc, SmiModule **modv) +{ + GraphNode *tNode; + GraphEdge *tEdge; + float x,y,ydiff; + int group; + + diaPrintXMLHeader(); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + tNode = diaCalcSize(tNode); + } + + diaPrintXMLInfoNote(modc, modv); + + x = XOFFSET; + y = YOFFSET; + ydiff = 0; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (! (tEdge->dia.flags & DIA_PRINT_FLAG)) { + diaPrintXMLObject(tEdge->startNode, x, y); + x = x + tEdge->startNode->dia.w + XSPACING; + + diaPrintXMLObject(tEdge->endNode, x, y); + diaPrintXMLConnection(tEdge); + + ydiff = tEdge->startNode->dia.h; + + y = diaPrintNode(tEdge->startNode,x,y); + y = diaPrintNode(tEdge->endNode,x,y); + + y = y + ydiff + YSPACING; + x = XOFFSET; + } + } + + x = XOFFSET; + y += ydiff; + ydiff = 0; + + /* printing singular tables */ + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph,tNode) && + tNode->smiNode->nodekind != SMI_NODEKIND_SCALAR) { + diaPrintXMLObject(tNode,x,y); + + x += tNode->dia.w + XSPACING; + ydiff = max(ydiff, tNode->dia.h); + if (x >= NEWLINEDISTANCE) { + x = XOFFSET; + y += ydiff + YSPACING; + } + } + } + + /* printing scalar groups */ + x = XOFFSET; + y += ydiff + YSPACING; + for (group = 1; + group <= algGetNumberOfGroups(); + group++) { + diaPrintXMLGroup(group,x,y); + x += 2.0; + y += 2.0; + } + + diaPrintXMLClose(); +} + + + +/* ------------------------------------------------------------------------- */ + +static void printModuleNames(int modc, SmiModule **modv) +{ + int i; + + printf("Conceptual model of: "); + + for (i = 0; i < modc; i++) { + printf("%s ", modv[i]->name); + } + + printf("(generated by smidump " SMI_VERSION_STRING ")\n\n"); +} + + + +static void dumpCm(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + for (i = 0; i < modc; i++) { + algCreateNodes(modv[i]); + } + + if (XPLAIN) { + printModuleNames(modc, modv); + printf("\n--- First Phase - loading tables and scalars\n\n"); + graphShowNodes(graph); + printf("\n"); + } + + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); + + if (!XPLAIN) { + diaPrintXML(modc, modv); + } + graphExit(graph); + graph = NULL; + } else { + for (i = 0; i < modc; i++) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + algCreateNodes(modv[i]); + + if (XPLAIN) { + printModuleNames(1, &(modv[i])); + printf("\n--- First Phase - loading tables and scalars\n\n"); + graphShowNodes(graph); + printf("\n"); + } + + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); + + if (!XPLAIN) { + diaPrintXML(1, &(modv[i])); + } + + graphExit(graph); + graph = NULL; + } + } + + if (fflush(stdout) || ferror(stdout)) { + perror("smidump: write error"); + exit(1); + } +} + + + +void initCm() +{ + static SmidumpDriverOption opt[] = { + { "explain", OPT_FLAG, &XPLAIN, 0, + "explain what the algorithm does"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "cm", + dumpCm, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_OUTPUT, + "reverse engineered conceptual model", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-compliance.c b/tools/dump-compliance.c new file mode 100644 index 0000000..525796d --- /dev/null +++ b/tools/dump-compliance.c @@ -0,0 +1,298 @@ +/* + * dump-compliances.c -- + * + * Operations to dump compliances in a human readable format. + * + * Copyright (c) 2005 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-compliances.c 1571 2003-07-14 22:58:42Z schoenw $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static char *getFlags(SmiNode *smiNode) +{ + + switch (smiNode->access) { + case SMI_ACCESS_UNKNOWN: + return "---"; + case SMI_ACCESS_NOT_ACCESSIBLE: + return "---"; + case SMI_ACCESS_NOTIFY: + return "--n"; + case SMI_ACCESS_EVENT_ONLY: + return "--n"; + case SMI_ACCESS_READ_ONLY: + return "r-n"; + case SMI_ACCESS_READ_WRITE: + return "rwn"; + case SMI_ACCESS_NOT_IMPLEMENTED: + return "---"; + case SMI_ACCESS_INSTALL: + return "-i-"; + case SMI_ACCESS_INSTALL_NOTIFY: + return "-in"; + case SMI_ACCESS_REPORT_ONLY: + return "--r"; + } + + return ""; +} + + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getTypeName(SmiNode *smiNode) +{ + char *type; + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + if (!parentType) + return NULL; + smiType = parentType; + } + + type = xstrdup(smiType->name); + return type; +} + + + +static void fprintGroup(FILE *f, SmiNode *smiNode, char c, + int *typelen, int *namelen, int pass) +{ + SmiElement *smiElement; + SmiNode *smiObject; + SmiModule *smiModule; + char *type_name; + int tlen = 9, nlen = 9; + + switch (smiNode->nodekind) { + case SMI_NODEKIND_GROUP: + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiObject = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + type_name = getTypeName(smiObject); + if (pass == 1) { + if (type_name) { + int newlen = strlen(type_name); + tlen = (tlen < newlen) ? newlen : tlen; + } + if (smiObject->name) { + int newlen = strlen(smiObject->name); + nlen = (nlen < newlen) ? newlen : nlen; + } + } else if (pass == 2) { + fprintf(f, " %c%c%s %-*s %-*s (%s)\n", + getStatusChar(smiObject->status), c, + getFlags(smiObject), + *typelen, type_name ? type_name : "-", + *namelen, smiObject->name, smiNode->name); + } + xfree(type_name); + } + break; + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + smiObject = smiNode; + type_name = getTypeName(smiObject); + if (pass == 1) { + if (type_name) { + int newlen = strlen(type_name); + tlen = tlen < newlen ? newlen : tlen; + } + if (smiObject->name) { + int newlen = strlen(smiObject->name); + nlen = (nlen < newlen) ? newlen : nlen; + } + } else if (pass == 2) { + fprintf(f, " %c%c%s %-*s %s\n", + getStatusChar(smiObject->status), 'r', + getFlags(smiObject), + *typelen, type_name ? type_name : "-", + smiObject->name); + } + xfree(type_name); + break; + default: + break; + } + + if (pass == 1) { + if (typelen) *typelen = tlen; + if (namelen) *namelen = nlen; + } +} + + + +static void fprintCompliance(FILE *f, SmiNode *smiNode, + int *typelen, int *namelen, int pass) +{ + SmiElement *smiElement; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + int tlen = 0, nlen = 0; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + fprintGroup(f, smiGetElementNode(smiElement), 'm', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + fprintGroup(f, smiGetOptionNode(smiOption), 'c', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } + + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + fprintGroup(f, smiGetRefinementNode(smiRefinement), 'r', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i, typelen = 0, namelen = 0; + + for (i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE), i++) { + fprintf(f, "%s%s:\n", i ? "\n" : "", smiNode->name); + fprintCompliance(f, smiNode, &typelen, &namelen, 1); + fprintCompliance(f, smiNode, &typelen, &namelen, 2); + } +} + + + +static void +dumpCompliances(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s compliances (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintCompliances(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initCompliances() +{ + static SmidumpDriver driver = { + "compliances", + dumpCompliances, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "compliances with all included objects / notifications", + /* opt, */ NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-corba.c b/tools/dump-corba.c new file mode 100644 index 0000000..50e4a3e --- /dev/null +++ b/tools/dump-corba.c @@ -0,0 +1,1739 @@ +/* + * dump-corba.c -- + * + * Operations to dump CORBA IDL and OID definitions. This is based + * on the JIDM Specification Translation developed by the JIDM task + * force, published as Open Group + * document C802 (ISBN 1-85912-256-6, January 2000). + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-corba.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 13 /* column to start multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + + +static int current_column = 0; + +static int silent = 0; + + +/* + * The following list of IDL keywords is taken from the CORBA + * 2.3.1 IDL specification section 3.2.4 (October 1999). + */ + + +static char *idlKeywords[] = { + "abstract", + "any", "attribute", "boolean", "case", + "char", "const", "context", "custom", + "default", "double", "enum", "exception", + "factory", "FALSE", "fixed", "float", + "in", "inout", "interface", "long", + "module", "native", "object", "octet", + "oneway", "out", "private", "public", + "raises", "readonly", "sequence", "short", + "string", "struct", "supports", "switch", + "TRUE", "truncatable", "typedef", "unsigned", + "union", "valuebase", "valuetype", "void", + "wchar", "wstring", NULL +}; + + +/* + * Structure used to build a list of imported types. + */ + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + +/* + * Structure used to build dictionaries that translate names + * into IDL names following the generic JIDM rules. + */ + + +typedef struct IdlEntry { + char *module; + char *name; + char *idlname; + struct IdlEntry *nextPtr; +} IdlEntry; + +static IdlEntry *idlModuleNameList = NULL; +static IdlEntry *idlNodeNameList = NULL; +static IdlEntry *idlTypeNameList = NULL; +static IdlEntry *idlVBTypeNameList = NULL; + +static IdlEntry **idlNameLists[] = { + &idlModuleNameList, &idlNodeNameList, + &idlTypeNameList, &idlVBTypeNameList, + NULL +}; + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static char* dictFindName(IdlEntry *list, char *module, char* name) +{ + IdlEntry *p; + + for (p = list; p; p = p->nextPtr) { + if (! strcasecmp(p->module, module) + && ((! p->name && ! name) || ! strcasecmp(p->name, name))) { + return p->idlname; + } + } + + return NULL; +} + + + +static char* dictAddName(IdlEntry **listPtr, char *module, char *name) +{ + IdlEntry *p; + char *s, *idl; + int i; + + /* + * Create a new IDL identifier by translating hyphens + * to underscores. + */ + + s = name ? name : module; + idl = xmalloc(strlen(s) + 1); + for (i = 0; s[i]; i++) { + idl[i] = (s[i] == '-') ? '_' : s[i]; + } + idl[i] = 0; + + /* + * Check for any collisions with IDL keywords or previously + * created IDL identifiers. + */ + + for (i = 0; idlKeywords[i]; i++) { + if (! strcasecmp(idlKeywords[i], idl)) { + fprintf(stderr, "smidump: " + "`%s' (%s%s%s) collides with IDL keyword `%s'\n", + idl, module, name ? "::" : "", name ? name : "", + idlKeywords[i]); + } + } + + for (i = 0; idlNameLists[i]; i++) { + IdlEntry *list = *(idlNameLists[i]); + for (p = list; p; p = p->nextPtr) { + if (! strcasecmp(p->idlname, idl)) { + fprintf(stderr, "smidump: " + "`%s' (%s%s%s) collides with `%s' (%s%s%s)\n", + idl, module, + name ? "::" : "", name ? name : "", + p->idlname, p->module, + p->name ? "::" : "", p->name ? p->name : ""); + } + } + } + + /* + * Safe the translated identifier in the dictionary. + */ + + p = xmalloc(sizeof(IdlEntry)); + p->module = xstrdup(module); + p->name = name ? xstrdup(name) : NULL; + p->idlname = idl; + p->nextPtr = *listPtr; + *listPtr = p; + + return idl; +} + + + +static void dictFree(IdlEntry **list) +{ + IdlEntry *p, *q; + + for (p = *list; p; ) { + q = p; + p = p->nextPtr; + xfree(q->module); + if (q->name) xfree(q->name); + xfree(q->idlname); + xfree(q); + } + + *list = NULL; +} + + + +static char* getIdlModuleName(char *module) +{ + char *s; + + s = dictFindName(idlModuleNameList, module, NULL); + if (! s) { + s = dictAddName(&idlModuleNameList, module, NULL); + } + return s; +} + + + +static char *getIdlNodeName(char *module, char *name) +{ + char *s; + s = dictFindName(idlNodeNameList, module, name); + if (! s) { + s = dictAddName(&idlNodeNameList, module, name); + } + return s; +} + + + +static char* getIdlTypeName(char *module, char *name) +{ + char *s, *type_name; + + type_name = xmalloc(strlen(name) + 10); + sprintf(type_name, "%sType", name); + type_name[0] = toupper((int) type_name[0]); + + s = dictFindName(idlTypeNameList, module, type_name); + if (! s) { + s = dictAddName(&idlTypeNameList, module, type_name); + } + + xfree(type_name); + return s; +} + + + +static char* getIdlVBTypeName(char *module, char *name, int *isnew) +{ + char *s, *vbTypeName; + + vbTypeName = xmalloc(strlen(name) + 10); + sprintf(vbTypeName, "%sVBType", name); + vbTypeName[0] = toupper((int) vbTypeName[0]); + + if (isnew) { + *isnew = 0; + } + s = dictFindName(idlVBTypeNameList, module, vbTypeName); + if (! s) { + if (isnew) { + *isnew = 1; + } + s = dictAddName(&idlVBTypeNameList, module, vbTypeName); + } + + xfree(vbTypeName); + return s; +} + + + +static int current(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + return 1; + default: + return 0; + } +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getAccessString(SmiAccess access, int create) +{ + if (create && (access == SMI_ACCESS_READ_WRITE)) { + return "read-create"; + } else { + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + } +} + + + +static char *getBaseTypeString(SmiBasetype basetype) +{ + switch(basetype) { + case SMI_BASETYPE_UNKNOWN: + return "ASN1_Null"; + case SMI_BASETYPE_POINTER: + return "ASN1_Null"; + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "ASN1_Integer"; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + return "ASN1_OctetString"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "ASN1_ObjectIdentifier"; + case SMI_BASETYPE_UNSIGNED32: + return "ASN1_Unsigned"; + case SMI_BASETYPE_INTEGER64: + return "ASN1_Integer64"; + case SMI_BASETYPE_UNSIGNED64: + return "ASN1_Unsigned64"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return "ASN1_Real"; + } + + return NULL; +} + + +static char *getIdlAnyTypeName(SmiNode *smiNode, SmiType *smiType) +{ + SmiModule *smiModule; + char *typeName; + + if (! smiType->name) { + smiModule = smiGetNodeModule(smiNode); + if (smiModule && strlen(smiModule->name)) { + typeName = getIdlTypeName(smiModule->name, smiNode->name); + } else { + typeName = getBaseTypeString(smiType->basetype); + } + } else { + smiModule = smiGetTypeModule(smiType); + if (smiModule && strlen(smiModule->name)) { + typeName = getIdlTypeName(smiModule->name, smiType->name); + } else { + typeName = getBaseTypeString(smiType->basetype); + } + } + + return typeName; +} + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* TODO */ + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiTypeModule; + SmiElement *smiElement; + SmiNode *smiNodeIndex; + SmiNodekind kind = SMI_NODEKIND_SCALAR + | SMI_NODEKIND_COLUMN | SMI_NODEKIND_ROW; + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + + switch (smiNode->nodekind) { + case SMI_NODEKIND_ROW: + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNodeIndex = smiGetElementNode(smiElement); + smiType = smiGetNodeType(smiNodeIndex); + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + } + break; + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + smiType = smiGetNodeType(smiNode); + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + break; + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, const char *s) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0); + } + } + } + putc('\"', f); + current_column++; +} + + + +static void fprintMultiline(FILE *f, const char *s) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS, "", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0); + } + } + } + putc('\n', f); + current_column++; +} + + + +static char * +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void +fprintCommentString(FILE *f, char *s) +{ + int i, len; + + if (s) { + fprintf(f, " * "); + len = strlen(s); + for (i = 0; i < len; i++) { + fputc(s[i], f); + if (s[i] == '\n') { + fprintf(f, " * "); + } + } + fputc('\n', f); + } +} + + + +static char* translate(char *s) +{ + int i; + + s = xstrdup(s); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + return s; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && current(childNode->status)) { + return 1; + } + } + + return 0; +} + + + +static int isCreatable(SmiNode *smiNode) +{ + SmiNode *childNode; + + if ((isGroup(smiNode) || smiNode->nodekind == SMI_NODEKIND_ROW) + && current(smiNode->status)) { + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) + && current(childNode->status) + && childNode->access == SMI_ACCESS_READ_WRITE) { + return 1; + } + } + } + + return 0; +} + + + +static void fprintDescription(FILE *f, SmiNode *smiNode, int indent) +{ + fprint(f, "\n"); + fprintSegment(f, indent, "/*\n", 0); + if (smiNode->description) { + fprintMultiline(f, smiNode->description); + } + if (smiNode->reference) { + fprintSegment(f, indent, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference); + fprint(f, "\n\n"); + } + if (smiNode->units) { + fprintSegment(f, indent, "UNITS:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->units); + fprint(f, "\n\n"); + } + fprintSegment(f, indent, "*/\n", 0); +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode) +{ + SmiElement *smiElement; + int j; + + for (j = 0, smiElement = smiGetFirstElement(indexNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, " "); + } + fprint(f, smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ +} + + + +static void fprintIncludes(FILE *f, SmiModule *smiModule) +{ + Import *import; + char *lastModulename = NULL; + + fprint(f, "#include \n"); + fprint(f, "#include \n"); + + for (import = importList; import; import = import->nextPtr) { + if (!lastModulename + || strcmp(lastModulename, import->module)) { + fprint(f, "#include <%s.idl>\n", + getIdlModuleName(import->module)); + lastModulename = import->module; + } + } + + fprint(f, "\n"); +} + + + +static void fprintImportedTypedefs(FILE *f, SmiModule *smiModule) +{ + Import *import; + int cnt = 0; + char *idlTypeName; + + for (import = importList; import; import = import->nextPtr) { + cnt++; + idlTypeName = getIdlTypeName(import->module, import->name); + fprintSegment(f, INDENT, "typedef ", 0); + fprint(f, "%s::%s %s;\n", + getIdlModuleName(import->module), idlTypeName, idlTypeName); + } + + if (cnt) { + fprint(f, "\n"); + } +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + char *idlModuleName; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + idlModuleName = getIdlModuleName(smiModule->name); + fprintSegment(f, INDENT, "const ", 0); + fprint(f, "string moduleIdentity = \"%s\";\n", smiNode->name); + fprintSegment(f, INDENT, "const ", 0); + fprint(f, "ASN1_ObjectIdentifier %s = \"::%s::%s\";\n\n", + getIdlModuleName(smiNode->name), + idlModuleName, smiNode->name); + if (! silent) { + fprintSegment(f, INDENT, "/*\n", 0); + if (smiModule->description) { + fprintMultiline(f, smiModule->description); + fprint(f, "\n"); + } + smiRevision = smiGetFirstRevision(smiModule); + fprintSegment(f, INDENT, "LAST-UPDATED:", INDENTVALUE); + fprint(f, smiRevision + ? getTimeString(smiRevision->date) : "197001010000Z"); + fprint(f, "\n\n"); + fprintSegment(f, INDENT, "ORGANIZATION:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization); + fprint(f, "\n\n"); + fprintSegment(f, INDENT, "CONTACT-INFO:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo); + fprint(f, "\n\n"); + for (; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (! smiRevision->description || + strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION:", INDENTVALUE); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "REVISION-DESCRIPTION:", 0); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description); + } else { + fprintMultilineString(f, "..."); + } + fprint(f, "\n\n"); + } + } + fprintSegment(f, INDENT, "*/", 0); + fprint(f, "\n\n"); + } + } + +} + + + +static void fprintType(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *idlTypeName; + char *nnName; + int i; + + if (! silent) { + if (smiType->name) { + fprintSegment(f, INDENT, "/*\n", 0); + if (smiType->description) { + fprintMultiline(f, smiType->description); + } + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference); + fprint(f, "\n\n"); + } + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT:", 0); + fprint(f, " %s\n", smiType->format); + fprint(f, "\n\n"); + } + fprintSegment(f, INDENT, "*/\n", 0); + } + } + if (! smiType->name) { + idlTypeName = getIdlTypeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + } else { + idlTypeName = getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name); + } + fprintSegment(f, INDENT, "typedef ", 0); + fprint(f, "%s %s; \n", + getBaseTypeString(smiType->basetype), idlTypeName); + + if (smiType->basetype == SMI_BASETYPE_ENUM) { + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, INDENT, "const ", 0); + nnName = translate(nn->name); + fprint(f, "%s %s_%s = %s;\n", idlTypeName, idlTypeName, nnName, + getValueString(&nn->value, smiType)); + xfree(nnName); + } + fprintSegment(f, INDENT, "const string ", 0); + fprint(f, "%s_NameNumberList = \"", idlTypeName); + for (i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; + i++, nn = smiGetNextNamedNumber(nn)) { + nnName = translate(nn->name); + if (i) { + fprint(f, " , "); + } + fprint(f, "%s (%s)", nnName, getValueString(&nn->value, smiType)); + xfree(nnName); + } + fprint(f, "\";\n"); + } + fprint(f, "\n"); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (current(smiType->status)) { + fprintType(f, NULL, smiType); + } + } + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + if (current(smiNode->status)) { + smiType = smiGetNodeType(smiNode); + if (smiType && ! smiType->name) { + fprintType(f, smiNode, smiType); + } + } + } +} + + + +static void fprintAttribute(FILE *f, SmiNode *smiNode) +{ + char *idlTypeName = NULL, *idlNodeName; + SmiType *smiType; + SmiModule *smiModule; + + if (smiNode->access < SMI_ACCESS_READ_ONLY) { + return; + } + + smiType = smiGetNodeType(smiNode); + smiModule = smiGetNodeModule(smiNode); + + if (! smiType) { + return; + } + + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + idlTypeName = getIdlAnyTypeName(smiNode, smiType); + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, + smiNode->access == SMI_ACCESS_READ_ONLY + ? "readonly attribute" : "attribute", 0); + + fprint(f, " %s %s;\n", idlTypeName, idlNodeName); +} + + + +static void fprintGroupInterface(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode; + char *idlNodeName; + SmiModule *smiModule, *childModule; + + smiModule = smiGetNodeModule(smiNode); + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + fprintSegment(f, INDENT, "interface", 0); + fprint(f, " %s : SNMPMgmt::SmiEntry {\n", idlNodeName); + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_TABLE + && current(childNode->status)) { + if (! silent) { + fprintDescription(f, childNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "SNMPMgmt::SmiTableIterator", 0); + childModule = smiGetNodeModule(childNode); + fprint(f, " get_%s();\n", getIdlNodeName(childModule->name, + childNode->name)); + } + if (childNode->nodekind == SMI_NODEKIND_SCALAR + && current(childNode->status)) { + fprintAttribute(f, childNode); + } + } + + fprintSegment(f, INDENT, "};\n\n", 0); +} + + + +static void fprintRowInterface(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode, *relatedNode; + char *idlModuleName, *idlNodeName; + + idlNodeName = getIdlNodeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + if (! silent) { + fprintDescription(f, smiNode, INDENT); + } + fprintSegment(f, INDENT, "interface", 0); + if (smiNode->indexkind == SMI_INDEX_AUGMENT + || smiNode->indexkind == SMI_INDEX_SPARSE) { + relatedNode = smiGetRelatedNode(smiNode); + idlModuleName = getIdlModuleName(smiGetNodeModule(relatedNode)->name); + fprint(f, " %s : %s::%s {\n", idlNodeName, + idlModuleName, relatedNode->name); + } else { + fprint(f, " %s : SNMPMgmt::SmiEntry {\n", idlNodeName); + } + + if (smiNode->indexkind == SMI_INDEX_INDEX + || smiNode->indexkind == SMI_INDEX_REORDER) { + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, "const ", 0); + fprint(f, "string IndexVarList = \""); + fprintIndex(f, smiNode); + fprint(f, "\";\n"); + } + + /* SMI_INDEX_EXPAND ? */ + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_COLUMN + && current(childNode->status)) { + fprintAttribute(f, childNode); + } + } + + fprintSegment(f, INDENT, "};\n\n", 0); +} + + + +static void fprintInterfaces(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + fprintGroupInterface(f, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW + && current(smiNode->status)) { + fprintRowInterface(f, smiNode); + } + } +} + + + +static void fprintConstructor(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode; + SmiNode *indexNode; + SmiType *smiType; + SmiModule *smiModule; + SmiElement *smiElement = NULL; + char *idlNodeName; + char *idlChildNodeName, *idlChildTypeName; + int cnt = 0; + + smiModule = smiGetNodeModule(smiNode); + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s create_%s (\n", idlNodeName, idlNodeName); + + /* First include the INDEXes as parameters to allow row creation + for rows with not-accesible index objects. */ + + if (smiNode->indexkind == SMI_INDEX_INDEX + || smiNode->indexkind == SMI_INDEX_REORDER) { + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + cnt++; + indexNode = smiGetElementNode(smiElement); + idlChildNodeName = + getIdlNodeName(smiGetNodeModule(indexNode)->name, + indexNode->name); + smiType = smiGetNodeType(indexNode); + idlChildTypeName = getIdlAnyTypeName(indexNode, smiType); + if (cnt > 1) { + fprint(f, ",\n"); + } + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s %s", idlChildTypeName, idlChildNodeName); + } + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) + && current(childNode->status) + && childNode->access == SMI_ACCESS_READ_WRITE) { + + /* Test if this column is already used as parameter + because it is an INDEX of the row. */ + + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + indexNode = smiGetElementNode(smiElement); + if (indexNode == childNode) { + break; + } + } + } + + if (! smiElement) { + cnt++; + idlChildNodeName = + getIdlNodeName(smiGetNodeModule(childNode)->name, + childNode->name); + smiType = smiGetNodeType(childNode); + idlChildTypeName = getIdlAnyTypeName(childNode, smiType); + if (cnt > 1) { + fprint(f, ",\n"); + } + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s %s", idlChildTypeName, idlChildNodeName); + } + } + } + fprint(f, "\n"); + + fprintSegment(f, 2*INDENT, ") raises (\n", 0); + fprintSegment(f, 3*INDENT, "SNMPMgmt::AlreadyExists,\n", 0); + fprintSegment(f, 3*INDENT, "CosLifeCycle::InvalidCriteria,\n", 0); + fprintSegment(f, 3*INDENT, "CosLifeCycle::CannotMeetCriteria\n", 0); + fprintSegment(f, 2*INDENT, ");\n", 0); +} + + + +static void fprintFactory(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (isCreatable(smiNode)) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "interface SmiEntryFactory : " + "SNMPMgmt::GenericFactory {\n", 0); + } + fprintConstructor(f, smiNode); + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintNotificationVBTypes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *listSmiNode; + SmiElement *smiElement; + SmiType *smiType; + char *idlTypeName; + char *idlVBTypeName; + int isnew; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + listSmiNode = smiGetElementNode(smiElement); + idlVBTypeName = getIdlVBTypeName( + smiGetNodeModule(listSmiNode)->name, + listSmiNode->name, &isnew); + if (isnew && listSmiNode) { + smiType = smiGetNodeType(listSmiNode); + if (smiType) { + idlTypeName = getIdlAnyTypeName(listSmiNode, smiType); + fprintSegment(f, INDENT, "struct ", 0); + fprint(f, "%s {\n", idlVBTypeName); + fprintSegment(f, 2*INDENT, "string var_name;\n", 0); + fprintSegment(f, 2*INDENT, "string var_index;\n", 0); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %s;\n", idlTypeName, + smiGetElementNode(smiElement)->name); + fprintSegment(f, INDENT, "};\n\n", 0); + } + } + } + } +} + + + +static void fprintNotificationTypes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + char *idlTypeName; + char *idlVBTypeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + fprintSegment(f, INDENT, "struct ", 0); + fprint(f, "%s {\n", idlTypeName); + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + idlVBTypeName = getIdlVBTypeName(smiGetNodeModule( + smiGetElementNode(smiElement))->name, + smiGetElementNode(smiElement)->name, NULL); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %s;\n", idlVBTypeName, + smiGetElementNode(smiElement)->name); + } + fprintSegment(f, INDENT, "};\n\n", 0); + } + } +} + + + +static void fprintPushNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + char *idlNodeName; + char *idlTypeName; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + if (cnt == 1) { + if (! silent) { + fprintSegment(f, INDENT, + "/* typed push event communication */\n", 0); + } + fprintSegment(f, INDENT, "interface Notifications : ", 0); + fprint(f, "SNMPMgmt::Notifications {\n"); + } + idlNodeName = getIdlNodeName(smiModule->name, + smiNode->name); + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "void ", 0); + fprint(f, "%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "in CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "in CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "in ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintPullNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int cnt = 0; + char *idlNodeName; + char *idlTypeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + if (cnt == 1) { + if (! silent) { + fprintSegment(f, INDENT, + "/* typed pull event communication */\n", 0); + } + fprintSegment(f, INDENT, "interface PullNotifications : ", 0); + fprint(f, "SNMPMgmt::PullNotifications {\n"); + } + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "void ", 0); + fprint(f, "pull_%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "out CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "out CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "out ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "out ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + fprintSegment(f, 2*INDENT, "boolean ", 0); + fprint(f, "try_%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "out CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "out CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "out ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + char *idlTypeName; + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "out ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintDefVals(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + int cnt = 0; + char *idlTypeName; + + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + smiType = smiGetNodeType(smiNode); + if (smiType) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "/* pseudo */\n", 0); + fprintSegment(f, INDENT, "interface DefaultValues {\n", 0); + } + if (! silent) { + fprintSegment(f, 2*INDENT, "/* DEFVAL: ", 0); + fprint(f, " %s */\n", + getValueString(&smiNode->value, smiType)); + } + fprintSegment(f, 2*INDENT, "", 0); + idlTypeName = getIdlAnyTypeName(smiNode, smiType); + fprint(f, "%s %s();\n\n", idlTypeName, smiNode->name); + } + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintDisplayHints(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int cnt = 0; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (current(smiType->status) && smiType->format) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "/* pseudo */\n", 0); + fprintSegment(f, INDENT, "interface TextualConventions {\n", 0); + } + fprint(f, "\n"); + if (! silent) { + fprintSegment(f, 2*INDENT, "/*\n", 0); + if (smiType->description) { + fprintMultiline(f, smiType->description); + } + if (smiType->reference) { + fprintSegment(f, 2*INDENT, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference); + } + if (smiType->format) { + fprintSegment(f, 2*INDENT, "DISPLAY-HINT:", 0); + fprint(f, " %s\n", smiType->format); + } + fprintSegment(f, 2*INDENT, "*/\n", 0); + } + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "string %sToString (in %s Value);\n", smiType->name, + getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name)); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %sFromString (in string str);\n", + getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name), + smiType->name); + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void dumpIdl(SmiModule *smiModule) +{ + char *idlModuleName; + FILE *f; + SmiRevision *smiRevision; + char *date; + + f = createFile(getIdlModuleName(smiModule->name), ".idl"); + if (! f) { + return; + } + + fprintf(f, + "/* \t\t\t\t\t\t-- DO NOT EDIT --\n" + " * Generated by smidump version " SMI_VERSION_STRING ":\n"); + + fprintf(f, " * smidump -f corba %s\n *\n", smiModule->name); + + fprintf(f, + " * Derived from %s:\n", smiModule->name); + fprintCommentString(f, smiModule->description); + + for (smiRevision = smiGetFirstRevision(smiModule); + smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + date = getStringTime(smiRevision->date); + fprintf(f, + " *\n" + " * Revision %s:\n", date); + fprintCommentString(f, smiRevision->description); + } + + fprintf(f, + " *\n * $I" "d$\n" + " */\n" + "\n"); + + idlModuleName = getIdlModuleName(smiModule->name); + createImportList(smiModule); + + fprint(f, "#ifndef _%s_IDL_\n", idlModuleName); + fprint(f, "#define _%s_IDL_\n\n", idlModuleName); + + fprintIncludes(f, smiModule); + + fprint(f, "module %s {\n\n", idlModuleName); + + fprintImportedTypedefs(f, smiModule); + fprintModule(f, smiModule); + fprintTypedefs(f, smiModule); + fprintInterfaces(f, smiModule); + fprintNotificationVBTypes(f, smiModule); + fprintNotificationTypes(f, smiModule); + fprintPushNotifications(f, smiModule); + fprintPullNotifications(f, smiModule); + fprintFactory(f, smiModule); + fprintDefVals(f, smiModule); + fprintDisplayHints(f, smiModule); + + fprint(f, "};\n\n"); + fprint(f, "#endif /* !_%s_IDL_ */\n", idlModuleName); + + freeImportList(); + dictFree(&idlModuleNameList); + dictFree(&idlNodeNameList); + dictFree(&idlTypeNameList); + dictFree(&idlVBTypeNameList); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void fprintNameAndOid(FILE *f, SmiNode *smiNode, SmiNode *smiParentNode) +{ + unsigned int i; + char *idlModuleName; + + idlModuleName = getIdlModuleName(smiGetNodeModule(smiNode)->name); + + if (smiParentNode) { + fprint(f, "::%s::%s::%s ", + idlModuleName, smiParentNode->name, smiNode->name); + } else { + fprint(f, "::%s::%s ", idlModuleName, smiNode->name); + } + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, "%s%u", i ? "." : "", smiNode->oid[i]); + } + fprint(f, " "); +} + + + +static void dumpOid(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + FILE *f; + + f = createFile(getIdlModuleName(smiModule->name), ".oid"); + if (! f) { + return; + } + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (isGroup(smiNode)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "Group not-accessible\n"); + /* XXX what if the node is also of SMI_NODEKIND_MODULE ?? */ + continue; + } + + smiType = smiGetNodeType(smiNode); + + switch (smiNode->nodekind) { + case SMI_NODEKIND_NODE: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "ASN1_ObjectIdentifier not-accessible\n"); + } + break; + case SMI_NODEKIND_SCALAR: + if (smiType && current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "%s %s\n", + getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access, 0)); + } + break; + case SMI_NODEKIND_TABLE: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "Table not-accessible\n"); + } + break; + case SMI_NODEKIND_ROW: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "TableEntry not-accessible\n"); + } + break; + case SMI_NODEKIND_COLUMN: + if (smiType && current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + int create = smiParentNode ? smiParentNode->create : 0; + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "%s %s\n", + getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access, create)); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if (current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "Notification not-accessible\n"); + } + break; + case SMI_NODEKIND_GROUP: + break; + case SMI_NODEKIND_COMPLIANCE: + break; + } + } + + dictFree(&idlModuleNameList); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + +static void dumpCorba(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + for (i = 0; i < modc; i++) { + dumpIdl(modv[i]); + dumpOid(modv[i]); + } +} + + + +void initCorba() +{ + + static SmidumpDriver driver = { + "corba", + dumpCorba, + 0, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "corba IDL interface and OID definitions (JIDM)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-fig.c b/tools/dump-fig.c new file mode 100644 index 0000000..0075793 --- /dev/null +++ b/tools/dump-fig.c @@ -0,0 +1,220 @@ +/* + * dump-fig.c -- + * + * Operations to dump graphic representation of MIBs in fig format. + * + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-fig.c 1050 2000-11-29 16:34:45Z strauss $ + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +#define X_OFFSET 225 +#define Y_OFFSET 225 +#define X_INDENT 225 +#define Y_INDENT 225 + + + +static void setupPage() +{ + printf("#FIG 3.2\n" + "#\n" + "# This FIG file has been generated by smidump " SMI_VERSION_STRING + ". Do not edit.\n#\n" + "Landscape\n" + "Center\n" + "Metric\n" + "A4\n" + "50.00\n" + "Single\n" + "-1\n" + "1200 2\n"); +} + + + +static void printString(int x, int y, int angle, char *string) +{ + int height = 180, length = 22; + + printf("4 0 0 0 0 18 12 0.0 4 %d %d %d %d %s\\001\n", + height, length, x, y, string); +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && childNode->status == SMI_STATUS_CURRENT) { + return 1; + } + } + + return 0; +} + + + +static void printGroup(int *x, int *y, SmiNode *smiNode) +{ + SmiNode *childNode; + char string[4096]; + + *y += Y_OFFSET; + printString(*x, *y, 0, smiNode->name); + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + if (childNode->status != SMI_STATUS_OBSOLETE) { + *y += Y_OFFSET; + sprintf(string, "%s(%d)", childNode->name, + childNode->oid[childNode->oidlen-1]); + printString(*x + X_INDENT, *y, 0, string); + } + } + } + *y += Y_OFFSET; +} + + + +static void printGroups(int *x, int *y, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printGroup(x, y, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printGroup(x, y, smiNode); + } + } +} + + + +void dumpFigTree(Module *module) +{ + SmiModule *smiModule; + int x, y; + + smiModule = module->smiModule; + + setupPage(); + + x = X_OFFSET, y = Y_OFFSET; + printGroups(&x, &y, smiModule); +} + + + +static void printClass(int *x, int *y, SmiNode *smiNode) +{ + SmiNode *childNode; + SmiType *smiType; + char string[4096]; + + *y += Y_OFFSET; + printString(*x, *y, 0, smiNode->name); + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + if (childNode->status != SMI_STATUS_OBSOLETE) { + smiType = smiGetNodeType(childNode); + *y += Y_OFFSET; + sprintf(string, "%s : %s", childNode->name, smiType->name); + printString(*x + X_INDENT, *y, 0, string); + } + } + } + *y += Y_OFFSET; +} + + + +static void printClasses(int *x, int *y, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printClass(x, y, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printClass(x, y, smiNode); + } + } +} + + + +void dumpFigUml(Module *module) +{ + SmiModule *smiModule; + int x, y; + + smiModule = module->smiModule; + + setupPage(); + + x = X_OFFSET, y = Y_OFFSET; + printClasses(&x, &y, smiModule); +} + + + +void init_fig() +{ + static SmidumpDriver driverTree = { + "fig-tree", + dumpFigTree, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "tree graphics in xfig fig format", + NULL, + NULL + }; + static SmidumpDriver driverUml = { + "fig-uml", + dumpFigUml, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "UML graphics in xfig fig format", + NULL, + NULL + }; + + smidumpRegisterDriver(&driverTree); + smidumpRegisterDriver(&driverUml); +} diff --git a/tools/dump-identifiers.c b/tools/dump-identifiers.c new file mode 100644 index 0000000..bca18aa --- /dev/null +++ b/tools/dump-identifiers.c @@ -0,0 +1,226 @@ +/* + * dump-identifiers.c -- + * + * Operations to dump flat identifier lists for SMI modules. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-identifiers.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int moduleLen = 0; +static int identifierLen = 0; + +static int showlines = 0; +static int showpath = 0; +static int ctagfmt = 0; + + +static char *smiStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + + + +static void fprintNodeIdentifiers(FILE *f, int modc, SmiModule **modv) +{ + SmiNode *smiNode; + unsigned int j; + int i; + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + if (ctagfmt) { + fprintf(f, "%*s", -identifierLen, smiNode->name); + fprintf(f, " %d", smiGetNodeLine(smiNode)); + fprintf(f, " %*s", -moduleLen, modv[i]->path); + fprintf(f, " %s OBJECT-TYPE -- %s\n", smiNode->name, + smiStringNodekind(smiNode->nodekind)); + } else { + fprintf(f, "%*s", + -moduleLen, showpath ? modv[i]->path : modv[i]->name); + if (showlines) { + fprintf(f, ":%d:", smiGetNodeLine(smiNode)); + } + fprintf(f, " %*s %-12s ", -identifierLen, smiNode->name, + smiStringNodekind(smiNode->nodekind)); + for (j = 0; j < smiNode->oidlen; j++) { + fprintf(f, j ? ".%u" : "%u", smiNode->oid[j]); + } + fprintf(f, "\n"); + } + } + } + } +} + + + +static void fprintTypeIdentifiers(FILE *f, int modc, SmiModule **modv) +{ + SmiType *smiType; + int i; + + for (i = 0; i < modc; i++) { + for (smiType = smiGetFirstType(modv[i]); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->name) { + if (ctagfmt) { + fprintf(f, "%*s", -identifierLen, smiType->name); + fprintf(f, " %d", smiGetTypeLine(smiType)); + fprintf(f, " %*s", -moduleLen, modv[i]->path); + fprintf(f, " %s TEXTUAL-CONVENTION\n", smiType->name); + } else { + fprintf(f, "%*s", + -moduleLen, showpath ? modv[i]->path : modv[i]->name); + if (showlines) { + fprintf(f, ":%d:", smiGetTypeLine(smiType)); + } + fprintf(f, " %*s %-12s\n", -identifierLen, smiType->name, + "type"); + } + } + } + } +} + + + +static void dumpIdentifiers(int modc, SmiModule **modv, int flags, + char *output) +{ + SmiNode *smiNode; + int i, len; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (moduleLen = 0, identifierLen = 0, i = 0; i < modc; i++) { + if (showpath) { + len = strlen(modv[i]->path); + } else { + len = strlen(modv[i]->name); + } + if (len > moduleLen) moduleLen = len; + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + len = strlen(smiNode->name); + if (len > identifierLen) identifierLen = len; + } + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united list of identifiers (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintTypeIdentifiers(f, modc, modv); + fprintNodeIdentifiers(f, modc, modv); + + } else { + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s list of identifiers (generated by smidump " + SMI_VERSION_STRING ")\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintTypeIdentifiers(f, 1, &(modv[i])); + fprintNodeIdentifiers(f, 1, &(modv[i])); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initIdentifiers() +{ + + static SmidumpDriverOption opt[] = { + { "lines", OPT_FLAG, &showlines, 0, + "show line numbers"}, + { "path", OPT_FLAG, &showpath, 0, + "show file path instead of module name"}, + { "ctag", OPT_FLAG, &ctagfmt, 0, + "show symbols in [g]ctag format"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "identifiers", + dumpIdentifiers, + SMI_FLAG_NODESCR, + 0, + "list of all identifiers", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-imports.c b/tools/dump-imports.c new file mode 100644 index 0000000..175a659 --- /dev/null +++ b/tools/dump-imports.c @@ -0,0 +1,199 @@ +/* + * dump-imports.c -- + * + * Operations to dump import hierarchies in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-imports.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +typedef struct Imports { + char *module; + int count; + struct Imports *nextPtr; +} Imports; + + + +static Imports *getImports(SmiModule *smiModule, int *n) +{ + SmiImport *smiImport; + Imports *imports; + int i; + size_t size; + + for (smiImport = smiGetFirstImport(smiModule), *n = 0; + smiImport; smiImport = smiGetNextImport(smiImport)) { + (*n)++; + } + + size = (*n + 1) * sizeof(Imports); + imports = xmalloc(size); + memset(imports, 0, size); + + for (smiImport = smiGetFirstImport(smiModule), *n = 0; + smiImport; smiImport = smiGetNextImport(smiImport)) { + + if (!smiImport->module) continue; + + for (i = 0; i < *n; i++) { + if (strcmp(smiImport->module, imports[i].module) == 0) { + break; + } + } + + if (i == *n) { + imports[i].module = xstrdup(smiImport->module); + if (imports[i].module) { + imports[i].count = 0; + (*n)++; + } + } + imports[i].count++; + } + + return imports; +} + + + +static void freeImports(Imports *imports, int n) +{ + int i; + + for (i = 0; i < n; i++) { + xfree(imports[i].module); + } + + xfree(imports); +} + + + +static int fprintImports(FILE *f, SmiModule *smiModule, char *prefix, + Imports *backtrace) +{ + SmiModule *smiModule2; + Imports *imports, *imp; + int i, n, recurse = 0, done = 0; + + for (imp = backtrace; imp; imp = imp->nextPtr) { + if (strcmp(imp->module, smiModule->name) == 0) { + fprintf(stderr, "%s (recursion - aborted)\n", prefix); + return 0; + } + } + + imp = (Imports *) xmalloc(sizeof(Imports)); + imp->module = smiModule->name; + imp->nextPtr = backtrace; + backtrace = imp; + + imports = getImports(smiModule, &n); + + for (i = 0; i < n; i++) { + char *newprefix; + + smiModule2 = smiGetModule(imports[i].module); + recurse = (NULL == smiGetFirstImport(smiModule2)); + if (recurse) { + fprintf(f, "%s |\n", prefix); + } + fprintf(f, "%s +--%s [%d identifier%s]\n", prefix, imports[i].module, + imports[i].count, imports[i].count > 1 ? "s" : ""); + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (i == n-1) { + strcat(newprefix, " "); + } else { + strcat(newprefix, " |"); + } + done = fprintImports(f, smiModule2, newprefix, backtrace); + if (! recurse && done) { + if (i == n-1) { + fprintf(f, "%s \n", prefix); + } else { + fprintf(f, "%s |\n", prefix); + } + } + xfree(newprefix); + } + + freeImports(imports, n); + xfree(backtrace); + + return recurse; +} + + + +static void dumpImports(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s imports tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintf(f, "%s\n", modv[i]->name); + fprintImports(f, modv[i], "", NULL); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initImports() +{ + + static SmidumpDriver driver = { + "imports", + dumpImports, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "recursive list of all imports", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-jax.c b/tools/dump-jax.c new file mode 100644 index 0000000..289a342 --- /dev/null +++ b/tools/dump-jax.c @@ -0,0 +1,1528 @@ +/* + * dump-jax.c -- + * + * Operations to generate JAX AgentX class files. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-jax.c 1455 2002-10-30 09:17:37Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +static char *package = NULL; + + + +static struct { + SmiBasetype basetype; + char *smitype; + char *javatype; + char *agentxtype; +} convertType[] = { + { SMI_BASETYPE_OCTETSTRING, "Opaque", "byte[]", "OPAQUE" }, + { SMI_BASETYPE_UNSIGNED32, "TimeTicks", "long", "TIMETICKS" }, + { SMI_BASETYPE_UNSIGNED32, "Counter", "long", "COUNTER32" }, + { SMI_BASETYPE_UNSIGNED32, "Counter32", "long", "COUNTER32" }, + { SMI_BASETYPE_OCTETSTRING, "IpAddress", "byte[]", "IPADDRESS" }, + { SMI_BASETYPE_INTEGER32, NULL, "int", "INTEGER" }, + { SMI_BASETYPE_OCTETSTRING, NULL, "byte[]", "OCTETSTRING" }, + { SMI_BASETYPE_OBJECTIDENTIFIER, NULL, "AgentXOID", "OBJECTIDENTIFIER" }, + { SMI_BASETYPE_UNSIGNED32, NULL, "long", "GAUGE32" }, + { SMI_BASETYPE_INTEGER64, NULL, "long", "INTEGER" }, + { SMI_BASETYPE_UNSIGNED64, NULL, "long", "COUNTER64" }, + { SMI_BASETYPE_ENUM, NULL, "int", "INTEGER" }, + { SMI_BASETYPE_BITS, NULL, "byte[]", "OCTETSTRING" }, + { SMI_BASETYPE_UNKNOWN, NULL, NULL, NULL } +}; + + + +static char* translate1Upper(char *m) +{ + static char *sarray[5]; + static int spos = 0; + char *s; + int i; + + s = sarray[spos]; + spos++; + if (spos == 5) spos = 0; + if (s) xfree(s); + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + if (islower((int) s[0])) { + s[0] = toupper(s[0]); + } + + return s; +} + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static char *getJavaType(SmiType *smiType) +{ + int i; + + if (smiType) { + for(i=0; convertType[i].basetype != SMI_BASETYPE_UNKNOWN; i++) { + if (smiType->basetype == convertType[i].basetype) + return convertType[i].javatype; + } + } + + return ""; +} + + + +static char *getAgentXType(SmiType *smiType) +{ + int i; + SmiType *parentType; + SmiModule *smiModule; + + if (smiType) { + + parentType = smiGetParentType(smiType); + if (parentType) { + smiModule = smiGetTypeModule(parentType); + if (smiModule && strlen(smiModule->name)) { + smiType = parentType; + } + } + + for(i=0; convertType[i].basetype != SMI_BASETYPE_UNKNOWN; i++) { + if (smiType->basetype == convertType[i].basetype) { + if (!convertType[i].smitype) { + return convertType[i].agentxtype; + } + if ((smiType->name) && + (!strcmp(convertType[i].smitype, smiType->name))) { + return convertType[i].agentxtype; + } + } + } + } + + return ""; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + return 1; + } + } + + return 0; +} + + + +static int isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static unsigned int getMaxSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + unsigned int max = 0, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + size = 65535; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 128; + break; + default: + return 0xffffffff; + } + + for(smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->maxValue.value.unsigned32 > max) { + max = smiRange->maxValue.value.unsigned32; + } + } + if (max > 0 && max < size) { + size = max; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = getMaxSize(parentType); + if (psize < size) { + size = psize; + } + } + + return size; +} + + + +static void dumpTable(SmiNode *smiNode) +{ + FILE *f; + SmiNode *parentNode, *columnNode; + unsigned int i; + char *vb_type; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the table %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXTable\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "\n" + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXTable;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXTable\n{\n\n", + translate1Upper(parentNode->name)); + + fprintf(f, + " // entry OID\n" + " private final static long[] OID = {"); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n\n"); + + fprintf(f, + " // constructors\n" + " public %s()\n", translate1Upper(parentNode->name)); + fprintf(f, + " {\n" + " oid = new AgentXOID(OID);\n" + "\n" + " // register implemented columns\n"); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_ONLY) { + fprintf(f, + " columns.addElement(new Long(%d));\n", + columnNode->oid[columnNode->oidlen-1]); + } + } + fprintf(f, + " }\n\n"); + + fprintf(f, + " public %s(boolean shared)\n", + translate1Upper(parentNode->name)); + fprintf(f, + " {\n" + " super(shared);\n" + "\n" + " oid = new AgentXOID(OID);\n" + "\n" + " // register implemented columns\n"); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_ONLY) { + fprintf(f, + " columns.addElement(new Long(%d));\n", + columnNode->oid[columnNode->oidlen-1]); + } + } + fprintf(f, + " }\n\n"); + + fprintf(f, + " public AgentXVarBind getVarBind(AgentXEntry entry," + " long column)\n"); + fprintf(f, + " {\n" + " AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance());\n" + "\n" + " switch ((int)column) {\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " case %d: // %s\n", + columnNode->oid[columnNode->oidlen-1], + columnNode->name); + fprintf(f, + " {\n"); + fprintf(f, + " %s value = ((%s)entry).get_%s();\n", + getJavaType(smiGetNodeType(columnNode)), + translate1Upper(smiNode->name), + columnNode->name); + fprintf(f, + " return new AgentXVarBind(oid, " + "AgentXVarBind.%s, value);\n", + getAgentXType(smiGetNodeType(columnNode))); + + fprintf(f, + " }\n"); + } + } + + fprintf(f, + " }\n" + "\n" + " return null;\n" + " }\n\n"); + + fprintf(f, + " public int setEntry(AgentXSetPhase phase,\n" + " AgentXEntry entry,\n" + " long column,\n" + " AgentXVarBind vb)\n"); + fprintf(f, + " {\n" + "\n" + " switch ((int)column) {\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_WRITE) { + fprintf(f, + " case %d: // %s\n", + columnNode->oid[columnNode->oidlen-1], + columnNode->name); + fprintf(f, + " {\n"); + fprintf(f, + " if (vb.getType() != AgentXVarBind.%s)\n" + " return AgentXResponsePDU.WRONG_TYPE;\n", + getAgentXType(smiGetNodeType(columnNode))); + vb_type = getJavaType(smiGetNodeType(columnNode)); + vb_type = strcmp("byte[]", vb_type) ? vb_type : "bytes"; + fprintf(f, + " else\n" + " return ((%s)entry).set_%s(phase, vb.%sValue());\n", + translate1Upper(smiNode->name), + columnNode->name, + vb_type); + + fprintf(f, + " }\n"); + } + } + + fprintf(f, + " }\n" + "\n" + " return AgentXResponsePDU.NOT_WRITABLE;\n" + " }\n\n"); + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void dumpEntry(SmiNode *smiNode) +{ + FILE *f; + SmiNode *columnNode, *indexNode; + SmiType *smiType; + SmiRange *smiRange; + SmiElement *element; + int cnt; + char *p; + char init[20]; + + f = createFile(translate1Upper(smiNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the table row %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXTable, AgentXEntry\n" + " */\n\n", smiNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXEntry\n{\n\n", + translate1Upper(smiNode->name)); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + + smiType = smiGetNodeType(columnNode); + if (!smiType) continue; + p = getJavaType(smiType); + if (!strcmp(p, "long")) { + strcpy(init, "0"); + } else if (!strcmp(p, "int")) { + strcpy(init, "0"); + } else if (!strcmp(p, "byte[]")) { + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue))))) { + sprintf(init, "new byte[%ld]", + smiRange->maxValue.value.integer32); + } else { + sprintf(init, "new byte[0]"); + } + } else if (!strcmp(p, "AgentXOID")) { + strcpy(init, "new AgentXOID()"); + } else { + strcpy(init, "null"); + } + fprintf(f, + " protected %s %s = %s;\n", + getJavaType(smiGetNodeType(columnNode)), + columnNode->name, + init); + + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " protected %s undo_%s = %s;\n", + getJavaType(smiGetNodeType(columnNode)), + columnNode->name, + init); + } + } + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (!strcmp(columnNode->name, indexNode->name)) + break; + } + if (!columnNode) { + if (!cnt) { + fprintf(f, " // foreign indices\n"); + } + cnt++; + fprintf(f, " protected %s %s;\n", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + } + fprintf(f, "\n"); + + fprintf(f, + " public %s(", translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 4 + 7 + 1 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s %s", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + fprintf(f, ")\n" + " {\n"); + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + fprintf(f, " this.%s = %s;\n", + indexNode->name, indexNode->name); + } + fprintf(f, "\n"); + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + + p = getJavaType(smiGetNodeType(indexNode)); + if (!strcmp(p, "long")) { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } else if (!strcmp(p, "int")) { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } else if (!strcmp(p, "byte[]")) { + smiType = smiGetNodeType(indexNode); + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue)))) || + (smiNode->implied && (!smiGetNextElement(element)))) { + fprintf(f, " instance.appendImplied(%s);\n", + indexNode->name); + } else { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } + } else if (!strcmp(p, "AgentXOID")) { + if (smiNode->implied && (!smiGetNextElement(element))) { + fprintf(f, " instance.appendImplied(%s);\n", + indexNode->name); + } else { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } + } else { + fprintf(f, " // [smidump: type of %s not supported]\n", + indexNode->name); + } + } + + fprintf(f, + " }\n" + "\n"); + + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name, indexNode->name); + } + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + smiType = smiGetNodeType(columnNode); + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + if (indexNode == columnNode) break; + } + if (!element) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + columnNode->name, columnNode->name); + } + } + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + columnNode->name, + getJavaType(smiGetNodeType(columnNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + columnNode->name, + columnNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + columnNode->name, + columnNode->name); + } else { + fprintf(f, + " %s = value;\n", + columnNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + columnNode->name, + columnNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " undo_%s = null;\n", + columnNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + +static void dumpEntryImpl(SmiNode *smiNode) +{ + FILE *f; + SmiNode *columnNode, *indexNode; + SmiType *smiType; + SmiElement *element; + int cnt; + + f = createFile(translate1Upper(smiNode->name), "Impl.java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING ". It\n" + " * is intended to be edited by the application programmer and\n" + " * to be used within a Java AgentX sub-agent environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class extends the Java AgentX (JAX) implementation of\n" + " the table row %s defined in %s.\n" + " */\n\n", smiNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %sImpl extends %s\n{\n\n", + translate1Upper(smiNode->name), + translate1Upper(smiNode->name)); + + fprintf(f, + " // constructor\n" + " public %sImpl(", translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 4 + 7 + 1 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s %s", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + fprintf(f, ")\n" + " {\n" + " super("); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 2 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s", indexNode->name); + } + fprintf(f,");\n"); + + fprintf(f, + " }\n" + "\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + smiType = smiGetNodeType(columnNode); + if (!smiType) continue; + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + columnNode->name, columnNode->name); + } + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + columnNode->name, + getJavaType(smiGetNodeType(columnNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + columnNode->name, + columnNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + columnNode->name, + columnNode->name); + } else { + fprintf(f, + " %s = value;\n", + columnNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + columnNode->name, + columnNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " undo_%s = null;\n", + columnNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static SmiNode *dumpScalars(SmiNode *smiNode) +{ + FILE *f; + char *vb_type; + SmiNode *parentNode, *currNode; + SmiType *smiType; + SmiRange *smiRange; + unsigned int i; + char *p; + char init[20]; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), ".java"); + if (! f) { + return NULL; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the scalar group %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXGroup, AgentXScalars\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "import java.util.Enumeration;\n" + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXScalars;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXScalars\n{\n\n", + translate1Upper(parentNode->name)); + + fprintf(f, + " private final static long[] %sOID = {", + translate1Upper(parentNode->name)); + for (i = 0; i < parentNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", parentNode->oid[i]); + } + fprintf(f, "};\n\n"); + + /* ------- variable definitions */ + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " protected AgentXOID %sOID;\n" + " protected final static long[] %sName = {", + translate1Upper(currNode->name), + translate1Upper(currNode->name) + ); + for (i = 0; i < currNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", currNode->oid[i]); + } + fprintf(f, ", 0};\n"); + + smiType = smiGetNodeType(currNode); + p = getJavaType(smiType); + if (!strcmp(p, "long")) { + strcpy(init, "0"); + } else if (!strcmp(p, "int")) { + strcpy(init, "0"); + } else if (!strcmp(p, "byte[]")) { + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue))))) { + sprintf(init, "new byte[%ld]", + smiRange->maxValue.value.integer32); + } else { + sprintf(init, "new byte[0]"); + } + } else if (!strcmp(p, "AgentXOID")) { + strcpy(init, "new AgentXOID()"); + } else { + strcpy(init, "null"); + } + fprintf(f, + " protected %s %s = %s;\n", + getJavaType(smiGetNodeType(currNode)), + currNode->name, + init); + + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " protected %s undo_%s = %s;\n", + getJavaType(smiGetNodeType(currNode)), + currNode->name, + init); + } + } + /* ------- constructor */ + fprintf(f, + " public %s()\n {\n" + " oid = new AgentXOID(%sOID);\n" + " data = new Vector();\n", + translate1Upper(parentNode->name), + translate1Upper(parentNode->name)); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " %sOID = new AgentXOID(%sName);\n" + " data.addElement(%sOID);\n", + translate1Upper(currNode->name), + translate1Upper(currNode->name), + translate1Upper(currNode->name)); + } + fprintf(f," }\n\n"); + /* ------- get & set methods */ + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + smiType = smiGetNodeType(currNode); + if (currNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + currNode->name, currNode->name); + } + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + currNode->name, + getJavaType(smiGetNodeType(currNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + currNode->name, + currNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + currNode->name, + currNode->name); + } else { + fprintf(f, + " %s = value;\n", + currNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + currNode->name, + currNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " undo_%s = null;\n", + currNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + /* ------ handle get get-next and set requests */ + fprintf(f, + " public AgentXVarBind getScalar(AgentXOID pos," + " AgentXOID oid)\n" + " {\n" + " if ((pos == null) || (pos.compareTo(oid) != 0))\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.NOSUCHOBJECT);\n" + " else {\n" + ); + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " if (pos == %sOID)\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.%s, \n" + " get_%s());\n", + translate1Upper(currNode->name), + getAgentXType(smiGetNodeType(currNode)), + currNode->name + ); + } + fprintf(f, + " }\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.NOSUCHOBJECT);\n }\n\n"); + + fprintf(f, + " public int setScalar(AgentXSetPhase phase," + " AgentXOID pos,\n" + " AgentXVarBind inVb)\n {\n" + " if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0))\n" + " return AgentXResponsePDU.INCONSISTENT_NAME;\n" + " else {\n" + ); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + vb_type = getJavaType(smiGetNodeType(currNode)); + vb_type = strcmp("byte[]", vb_type) ? vb_type : "bytes"; + if (currNode->access == SMI_ACCESS_READ_WRITE) + fprintf(f, + " if (pos == %sOID)\n" + " return " + "set_%s(phase, inVb.%sValue());\n", + translate1Upper(currNode->name), + currNode->name, + vb_type + ); + } + fprintf(f, + " }\n" + " return AgentXResponsePDU.NOT_WRITABLE;\n" + " }\n\n"); + fprintf(f, + " public AgentXVarBind getNextScalar(AgentXOID pos," + " AgentXOID oid)\n {\n" + " if ((pos == null) || (pos.compareTo(oid) <= 0))\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.ENDOFMIBVIEW);\n" + " else {\n" + ); + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " if (pos == %sOID)\n" + " return new AgentXVarBind(pos," + " AgentXVarBind.%s, \n" + " get_%s());\n", + translate1Upper(currNode->name), + getAgentXType(smiGetNodeType(currNode)), + currNode->name + ); + } + fprintf(f, + " }\n" + " return new AgentXVarBind(pos," + " AgentXVarBind.ENDOFMIBVIEW);\n }\n\n"); + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + /* skip all already processed nodes */ + for(; + smiNode && (smiNode->nodekind == SMI_NODEKIND_SCALAR); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + } + return smiNode; +} + +static void dumpNotifications(SmiNode *smiNode) +{ + FILE *f; + int cnt; + unsigned int i; + SmiElement *element; + SmiNode *elementNode; + + SmiType *snt; + snt = smiGetNodeType(smiNode); + + f = createFile(translate1Upper(smiNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXNotification;\n" + "import java.util.Vector;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXNotification\n{\n\n", + translate1Upper(smiNode->name)); + + fprintf(f, + " private final static long[] %s_OID = {", + smiNode->name); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n"); + fprintf(f, + " private static AgentXVarBind snmpTrapOID_VarBind =\n" + " new AgentXVarBind(snmpTrapOID_OID,\n" + " AgentXVarBind.OBJECTIDENTIFIER,\n" + " new AgentXOID(%s_OID));\n\n", + smiNode->name); + + for (element = smiGetFirstElement(smiNode), cnt = 1; + element; + element = smiGetNextElement(element), cnt++) { + elementNode = smiGetElementNode(element); + fprintf(f, " private final static long[] OID%d = {", cnt); + for (i = 0; i < elementNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", elementNode->oid[i]); + } + fprintf(f, + "};\n" + " private final AgentXOID %s_OID = " + "new AgentXOID(OID%d", + elementNode->name, cnt); + fprintf(f,");\n"); +#if 0 + if (elementNode->nodekind != SMI_NODEKIND_COLUMN || + (smiGetNodeModule(elementNode) != smiGetNodeModule(smiNode))) { + fprintf(f, + " private static AgentXVarBind varBind_%s = new AgentXVarBind(\n" + " %sOID, AgentXVarBind.%s\n);\n", + elementNode->name, + elementNode->name, + getAgentXType(smiGetNodeType(elementNode))); + } +#endif + } + fprintf(f, + "\n\n public %s(", + translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + elementNode = smiGetElementNode(element); + if (smiGetNodeModule(elementNode) == smiGetNodeModule(smiNode)) { + if (cnt) fprintf(f,", "); + cnt++; + fprintf(f, "%s %s_%d", + translate1Upper(smiGetParentNode(elementNode)->name), + smiGetParentNode(elementNode)->name, cnt); + } + } + fprintf(f, ") {\n" + " AgentXOID oid;\n" + " AgentXVarBind varBind;\n" + "\n" + " // add the snmpTrapOID object\n" + " varBindList.addElement(snmpTrapOID_VarBind);\n"); + for (element = smiGetFirstElement(smiNode), cnt = 1; + element; + element = smiGetNextElement(element), cnt++) { + elementNode = smiGetElementNode(element); + + if (smiGetNodeModule(elementNode) == smiGetNodeModule(smiNode)) { + + fprintf(f, + "\n // add the %s %s object of %s_%d\n", + elementNode->name, + elementNode->nodekind == SMI_NODEKIND_COLUMN ? + "columnar" : "scalar", + smiGetParentNode(elementNode)->name, cnt); + + if (elementNode->nodekind == SMI_NODEKIND_COLUMN) { + fprintf(f, + " oid = %s_OID;\n" + " oid.appendImplied(%s_%d.getInstance());\n", + elementNode->name, + smiGetParentNode(elementNode)->name, cnt); + fprintf(f, + " varBind = new AgentXVarBind(oid,\n" + " AgentXVarBind.%s,\n" + " %s_%d.get_%s());\n", + getAgentXType(smiGetNodeType(elementNode)), + smiGetParentNode(elementNode)->name, cnt, + elementNode->name); + fprintf(f, + " varBindList.addElement(varBind);\n"); + } else { + fprintf(f, + " oid = %s_OID;\n", + elementNode->name); + fprintf(f, + " oid.append(0);\n"); + fprintf(f, + " varBind = new AgentXVarBind(oid,\n" + " AgentXVarBind.%s,\n" + " %s_%d.get_%s());\n", + getAgentXType(smiGetNodeType(elementNode)), + smiGetParentNode(elementNode)->name, cnt, + elementNode->name); + fprintf(f, + " varBindList.addElement(varBind);\n"); + } + + } else { + fprintf(f, + " // the notification's object %s " + "is not contained in this module.\n", + elementNode->name); + } + } + + fprintf(f, + " }\n\n"); + + fprintf(f, + " public Vector getVarBindList() {\n" + " return varBindList;\n }\n\n"); + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + +static void dumpScalarImpl(SmiNode *smiNode) +{ + FILE *f; + SmiNode *parentNode, *currNode; + SmiType *smiType; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), "Impl.java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING ". It\n" + " * is intended to be edited by the application programmer and\n" + " * to be used within a Java AgentX sub-agent environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class extends the Java AgentX (JAX) implementation of\n" + " the scalar group %s defined in %s.\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "import java.util.Enumeration;\n" + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "\n"); + + fprintf(f, "public class %sImpl extends %s\n{\n\n", + translate1Upper(parentNode->name), + translate1Upper(parentNode->name)); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + smiType = smiGetNodeType(currNode); + if (currNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + currNode->name, currNode->name); + } + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + currNode->name, + getJavaType(smiGetNodeType(currNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + currNode->name, + currNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + currNode->name, + currNode->name); + } else { + fprintf(f, + " %s = value;\n", + currNode->name); + } + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + currNode->name, + currNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " undo_%s = null;\n", + currNode->name); + } else { + fprintf(f, + " undo_%s = -1; // TODO: better check!\n", + currNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n" + "\n"); + } + } + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + +static void dumpJax(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + int i; + + for (i = 0; i < modc; i++) { + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + dumpTable(smiNode); + dumpEntry(smiNode); + dumpEntryImpl(smiNode); + } + } + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_SCALAR); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_SCALAR)) { + dumpScalarImpl(smiNode); + smiNode = dumpScalars(smiNode); + } + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + dumpNotifications(smiNode); + } + } +} + + + +void initJax() +{ + static SmidumpDriverOption opt[] = { + { "package", OPT_STRING, &package, 0, + "make classes part of a given package"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "jax", + dumpJax, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "Java AgentX sub-agent classes in separate files", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-metrics.c b/tools/dump-metrics.c new file mode 100644 index 0000000..9c49a46 --- /dev/null +++ b/tools/dump-metrics.c @@ -0,0 +1,1687 @@ +/* + * dump-metrics.c -- + * + * Operations to compute and dump some MIB metrics. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * Copyright (c) 2004 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-metrics.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + # revisions + # imports + # row creations: + # count node references in notification definitions + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int raw = 0; + +static int silent = 0; + + +typedef struct BasetypeCounter { + unsigned long total; + unsigned long unknown; + unsigned long integer32; + unsigned long octetstring; + unsigned long objectidentifier; + unsigned long unsigned32; + unsigned long integer64; + unsigned long unsigned64; + unsigned long float32; + unsigned long float64; + unsigned long float128; + unsigned long enums; + unsigned long bits; + unsigned long pointer; +} BasetypeCounter; + + +typedef struct StatusCounter { + unsigned long total; + unsigned long current; + unsigned long deprecated; + unsigned long obsolete; +} StatusCounter; + + + +typedef struct AccessCounter { + unsigned long total; + unsigned long noaccess; + unsigned long notify; + unsigned long readonly; + unsigned long readwrite; +} AccessCounter; + + + +typedef struct IndexCounter { + unsigned long total; + unsigned long index; + unsigned long augment; + unsigned long reorder; + unsigned long sparse; + unsigned long expand; +} IndexCounter; + + + +typedef struct IndexLenCounter { + unsigned long total; + unsigned long length[11]; +} IndexLenCounter; + + + +typedef struct TableLenCounter { + unsigned long total; + unsigned long length[81]; +} TableLenCounter; + + + +typedef struct ScalarLenCounter { + unsigned long total; + unsigned long length[81]; +} ScalarLenCounter; + + + +typedef struct IndexComplexityCounter { + unsigned long total; + unsigned long complexity[100]; +} IndexComplexityCounter; + + + +typedef struct LengthCounter { + unsigned long total; + unsigned long descr; + unsigned long descr_len; + unsigned long reference; + unsigned long reference_len; + unsigned long units; + unsigned long units_len; + unsigned long format; + unsigned long format_len; +} LengthCounter; + + + +typedef struct RowStatusCounter { + unsigned long basetables; + unsigned long rowstatus; + unsigned long storagetype; +} RowStatusCounter; + + + +typedef struct Metrics { + BasetypeCounter basetypesColumns; + BasetypeCounter basetypesScalars; + BasetypeCounter basetypesAll; + StatusCounter statusTypes; + StatusCounter statusTables; + StatusCounter statusColumns; + StatusCounter statusScalars; + StatusCounter statusNotifications; + StatusCounter statusGroups; + StatusCounter statusCompliances; + StatusCounter statusAll; + AccessCounter accessColumns; + AccessCounter accessScalars; + AccessCounter accessAll; + IndexCounter indexTables; + IndexLenCounter indexLenTables; + IndexComplexityCounter indexComplexity; + TableLenCounter tableLength; + ScalarLenCounter scalarLength; + LengthCounter lengthTypes; + LengthCounter lengthTables; + LengthCounter lengthRows; + LengthCounter lengthColumns; + LengthCounter lengthScalars; + LengthCounter lengthNotifications; + LengthCounter lengthAll; +} Metrics; + + + +typedef struct UsageCounter { + char *module; + char *name; + unsigned count; + struct UsageCounter *nextPtr; +} UsageCounter; + + +static UsageCounter *typeList = NULL; +static UsageCounter *extTypeList = NULL; +static UsageCounter *extNodeList = NULL; +static UsageCounter *extModuleList = NULL; +static UsageCounter *indexComplexityList = NULL; + +#define INCR_NODE 0x01 +#define INCR_TYPE 0x02 + + +static char* +getDateString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + return s; +} + + + +static char* +language(SmiLanguage language) +{ + return + (language == SMI_LANGUAGE_UNKNOWN) ? "-" : + (language == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (language == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (language == SMI_LANGUAGE_SMING) ? "SMIng" : + "-"; +} + + + +static int +calcSize(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + int size = 0; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->name) { + size++; + } + } + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + case SMI_NODEKIND_NOTIFICATION: + size++; + break; + default: + break; + } + } + + return size; +} + + + +typedef void (*ForEachIndexFunc) (FILE *f, SmiNode *groupNode, SmiNode *smiNode, void *data); + +static void +foreachIndexDo(FILE *f, SmiNode *smiNode, ForEachIndexFunc func, void *data) +{ + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = smiNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + (func) (f, smiNode, iNode, data); + } + } + } +} + + + +static UsageCounter* +incrUsageCounter(UsageCounter *uCntList, char *module, char *name, int incr) +{ + UsageCounter *uCnt; + + for (uCnt = uCntList; uCnt; uCnt = uCnt->nextPtr) { + if (strcmp(uCnt->module, module) == 0 + && (! name || strcmp(uCnt->name, name) == 0)) { + break; + } + } + + if (! uCnt) { + uCnt = (UsageCounter *) xmalloc(sizeof(UsageCounter)); + uCnt->module = xstrdup(module); + uCnt->name = name ? xstrdup(name) : NULL; + uCnt->count = 0; + uCnt->nextPtr = uCntList; + uCntList = uCnt; + } + + uCnt->count += incr; + return uCntList; +} + + + +static void +incrTypeAndNodeUsageCounter(SmiModule *smiModule, SmiNode *smiNode, int flags) +{ + SmiType *smiType; + char *extModule; + + /* + * First check whether the node is external. If yes, increment the + * external node counter and we are done. + */ + + extModule = smiGetNodeModule(smiNode)->name; + if (extModule + && strcmp(extModule, smiModule->name) != 0) { + if (flags & INCR_NODE) { + extNodeList = incrUsageCounter(extNodeList, + extModule, smiNode->name, 1); + extModuleList = incrUsageCounter(extModuleList, extModule, NULL, 1); + } + return; + } + + /* + * Next, check whether the type of the node is external. If yes, + * increment the external type counter and we are done. Do not + * count base types (that is types that have no parent type). + */ + + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + if (smiType->name && smiGetParentType(smiType)) { + char *extModule = smiGetTypeModule(smiType)->name; + if (extModule /* && *extModule */ + && strcmp(extModule, smiModule->name) != 0) { + if (flags & INCR_TYPE) { + extTypeList = incrUsageCounter(extTypeList, + extModule, smiType->name, 1); + extModuleList = incrUsageCounter(extModuleList, extModule, NULL, 1); + } + } + } + + /* + * Finally, count the type name (whether external or not does not + * matter here nor does it matter whether it is a base type or + * not). + */ + + if (! smiType->name && smiGetParentType(smiType)) { + smiType = smiGetParentType(smiType); + } + typeList = incrUsageCounter(typeList, smiGetTypeModule(smiType)->name, + smiType->name, 1); +} + + + +static void +incrIndexComplexityCounter(SmiModule *smiModule, SmiNode *smiNode, int complexity) +{ + indexComplexityList = incrUsageCounter(indexComplexityList, + smiModule->name, smiNode->name, complexity); +} + + + +static int +cmp(const void *va, const void *vb) +{ + UsageCounter **a = (UsageCounter **) va; + UsageCounter **b = (UsageCounter **) vb; + + if ((*a)->count > (*b)->count) return -1; + if ((*a)->count < (*b)->count) return 1; + + if ((*a)->module && (*b)->module) { + int x = strcmp((*a)->module, (*b)->module); + if (x) return x; + } + + if ((*a)->name && (*b)->name) { + int x = strcmp((*a)->name, (*b)->name); + if (x) return x; + } + + return 0; +} + + + +static int +fprintRevisions(FILE *f, int modLen, SmiRevision *smiRevision, + SmiModule *smiModule, int size) +{ + int n = 0; + + if (smiRevision) { + n = fprintRevisions(f, modLen, + smiGetNextRevision(smiRevision), smiModule, -1); + fprintf(f, "%-*s %7s ", modLen, smiModule->name, + (size >= 0) ? language(smiModule->language) : "-"); + if (size >= 0) { + fprintf(f, "%4d", size); + } else { + fprintf(f, " -"); + } + fprintf(f, " %3d %s\n", n, getDateString(smiRevision->date)); + n++; + } + + if (!smiRevision && size >= 0) { + fprintf(f, "%-*s %7s ", modLen, smiModule->name, + language(smiModule->language)); + fprintf(f, "%4d", size); + fprintf(f, " - ----------\n"); + } + + return n; +} + + + +static void +fprintRevision(FILE *f, int modc, SmiModule **modv) +{ + int i; + int modLen = 8; + + for (i = 0; i < modc; i++) { + if (modLen < strlen(modv[i]->name)) { + modLen = strlen(modv[i]->name); + } + } + + fprintf(f, "%-*s LANGUAGE SIZE REVISION DATE\n", modLen, "MODULE"); + + for (i = 0; i < modc; i++) { + fprintRevisions(f, modLen, smiGetFirstRevision(modv[i]), + modv[i], calcSize(modv[i])); + } + fprintf(f, "\n"); + +} + + + +static void +fprintTypeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to defined types (including base types) in the set of loaded MIB\n" +"# modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s USAGE\n", modLen, "MODULE", nameLen, "TYPE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintExtTypeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined types (excluding base types) in the set of loaded\n" +"# MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s EXT-USAGE\n", modLen, "MODULE", nameLen, "TYPE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintExtNodeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined nodes in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s EXT-USAGE\n", modLen, "MODULE", nameLen, "NODE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintModuleUsage(FILE *f, UsageCounter *modUsageList) +{ + UsageCounter *uCnt; + int modLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = modUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = modUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined items (such as types or objects) accumulated by\n" +"# the defining MIB module in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s EXT-USAGE\n", modLen, "MODULE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s ", modLen, sortCnt[i]->module); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintIndexComplexity(FILE *f, UsageCounter *modUsageList) +{ + UsageCounter *uCnt; + int modLen = 8; + int nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = modUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = modUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the index complexity\n" +"# in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s COMPLEXITY\n", modLen, "MODULE", nameLen, "TABLE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count); + } + } + + xfree(sortCnt); +} + + + +static void +freeUsageCounter(UsageCounter *usageCounterList) +{ + UsageCounter *uCnt, *p; + + for (uCnt = usageCounterList; uCnt; ) { + p = uCnt, uCnt = uCnt->nextPtr; + xfree(p->module); + xfree(p->name); + xfree(p); + } +} + + + +static void +incrBasetypeCounter(BasetypeCounter *basetypeCounter, SmiNode *smiNode) +{ + SmiType *smiType; + + smiType = smiGetNodeType(smiNode); + if (smiType) { + basetypeCounter->total++; + switch (smiType->basetype) { + case SMI_BASETYPE_UNKNOWN: + basetypeCounter->unknown++; + break; + case SMI_BASETYPE_INTEGER32: + basetypeCounter->integer32++; + break; + case SMI_BASETYPE_OCTETSTRING: + basetypeCounter->octetstring++; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + basetypeCounter->objectidentifier++; + break; + case SMI_BASETYPE_UNSIGNED32: + basetypeCounter->unsigned32++; + break; + case SMI_BASETYPE_INTEGER64: + basetypeCounter->integer64++; + break; + case SMI_BASETYPE_UNSIGNED64: + basetypeCounter->unsigned64++; + break; + case SMI_BASETYPE_FLOAT32: + basetypeCounter->float32++; + break; + case SMI_BASETYPE_FLOAT64: + basetypeCounter->float64++; + break; + case SMI_BASETYPE_FLOAT128: + basetypeCounter->float128++; + break; + case SMI_BASETYPE_ENUM: + basetypeCounter->enums++; + break; + case SMI_BASETYPE_BITS: + basetypeCounter->bits++; + break; + case SMI_BASETYPE_POINTER: + basetypeCounter->pointer++; + break; + } + } +} + + + +static void +incrStatusCounter(StatusCounter *cnt, SmiStatus smiStatus) +{ + cnt->total++; + switch (smiStatus) { + case SMI_STATUS_CURRENT: + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + cnt->current++; + break; + case SMI_STATUS_DEPRECATED: + cnt->deprecated++; + break; + case SMI_STATUS_OBSOLETE: + cnt->obsolete++; + break; + case SMI_STATUS_UNKNOWN: + break; + } +} + + + +static void +incrAccessCounter(AccessCounter *cnt, SmiAccess smiAccess) +{ + cnt->total++; + switch (smiAccess) { + case SMI_ACCESS_NOT_ACCESSIBLE: + cnt->noaccess++; + break; + case SMI_ACCESS_NOTIFY: + cnt->notify++; + break; + case SMI_ACCESS_READ_ONLY: + cnt->readonly++; + break; + case SMI_ACCESS_READ_WRITE: + cnt->readwrite++; + break; + case SMI_ACCESS_INSTALL: + case SMI_ACCESS_INSTALL_NOTIFY: + case SMI_ACCESS_REPORT_ONLY: + case SMI_ACCESS_UNKNOWN: + case SMI_ACCESS_NOT_IMPLEMENTED: + case SMI_ACCESS_EVENT_ONLY: + break; + } +} + + + +static void +incrIndexCounter(IndexCounter *cnt, SmiIndexkind indexkind) +{ + cnt->total++; + switch (indexkind) { + case SMI_INDEX_INDEX: + cnt->index++; + break; + case SMI_INDEX_AUGMENT: + cnt->augment++; + break; + case SMI_INDEX_REORDER: + cnt->reorder++; + break; + case SMI_INDEX_SPARSE: + cnt->sparse++; + break; + case SMI_INDEX_EXPAND: + cnt->expand++; + break; + case SMI_INDEX_UNKNOWN: + break; + } +} + + + +static void +incrIndexLenCounter(IndexLenCounter *cnt, int len) +{ + cnt->total++; + if (len < sizeof(cnt->length)/sizeof(cnt->length[0])) { + cnt->length[len]++; + } else { + fprintf(stderr, "smidump: index len overflow: %d\n", len); + } +} + + + +static void +incrTableLenCounter(TableLenCounter *cnt, int len) +{ + cnt->total++; + if (len < sizeof(cnt->length)/sizeof(cnt->length[0])) { + cnt->length[len]++; + } else { + fprintf(stderr, "smidump: table len overflow: %d\n", len); + } +} + + + +static void +incrIndexComplexityMetric(IndexComplexityCounter *cnt, int cmplx) +{ + cnt->total++; + if (cmplx < sizeof(cnt->complexity)/sizeof(cnt->complexity[0])) { + cnt->complexity[cmplx]++; + } else { + fprintf(stderr, "smidump: index complexity overflow: %d\n", cmplx); + } +} + + + +static void +incrLengthCounter(LengthCounter *cnt, char *description, char *reference, + char *units, char *format) +{ + cnt->total++; + if (description) { + cnt->descr++; + cnt->descr_len += strlen(description); + } + + if (reference) { + cnt->reference++; + cnt->reference_len += strlen(reference); + } + if (units) { + cnt->units++; + cnt->units_len += strlen(units); + } + if (format) { + cnt->format++; + cnt->format_len += strlen(format); + } +} + + + +static void +incrRowStatusCounter(SmiNode *rowNode) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiModule; + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name) { + smiModule = smiGetTypeModule(smiType); + if (smiModule && smiModule->name + && strcmp(smiType->name, "RowStatus") == 0 + && strcmp(smiModule->name, "SNMPv2-TC") == 0) { + break; + } + } + } + + if (smiNode) { +#if 0 + fprintf(stderr, "** %s\t%s\t%s\n", rowNode->name, + smiNode->name, smiType->name); + /* xxx count rows indexed by ifIndex, InterfaceIndex, InterfaceIndexOrZero, ... */ +#endif + } +} + + + +static void +count(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + int *cnt = (int *) data; + + (*cnt)++; +} + + + +static void +complexity(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + int *cmplx = (int *) data; + SmiType *smiType; + unsigned long min, max; + + smiType = smiGetNodeType(col); + if (! smiType) { + return; + } + + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + *cmplx += 1; + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_BITS: + *cmplx += 2; + min = smiGetMinSize(smiType); + max = smiGetMaxSize(smiType); + if (min != max) { + *cmplx += 1; + } + break; + default: /* ignore everything else */ + break; + } +} + + + +static void +yadayada(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + SmiModule *smiModule = (SmiModule *) data; + int flags = 0; + + if (col->access == SMI_ACCESS_NOT_ACCESSIBLE) { + flags |= INCR_TYPE; + } + flags |= INCR_NODE; + + incrTypeAndNodeUsageCounter(smiModule, col, flags); +} + + + +static void +addMetrics(Metrics *metrics, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + size_t len; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + len = smiNode->description ? strlen(smiNode->description) : 0; + switch (smiNode->nodekind) { + case SMI_NODEKIND_TABLE: + incrStatusCounter(&metrics->statusTables, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrLengthCounter(&metrics->lengthTables, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + break; + case SMI_NODEKIND_ROW: + incrIndexCounter(&metrics->indexTables, smiNode->indexkind); + incrLengthCounter(&metrics->lengthRows, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrRowStatusCounter(smiNode); + { + int cnt = 0; + foreachIndexDo(NULL, smiNode, count, &cnt); + incrIndexLenCounter(&metrics->indexLenTables, cnt); + foreachIndexDo(NULL, smiNode, yadayada, smiModule); + } + { + int cmplx = 0; + foreachIndexDo(NULL, smiNode, complexity, &cmplx); + incrIndexComplexityCounter(smiModule, smiNode, cmplx); + incrIndexComplexityMetric(&metrics->indexComplexity, cmplx); + } + /* count the childs ... */ + { + SmiModule *smiModule = smiGetModule("SNMPv2-TC"); + SmiNode *childNode; + SmiType *rowStatus = smiGetType(smiModule, "RowStatus"); + SmiType *storageType = smiGetType(smiModule, "StorageType"); + /* include index elements not in table */ + int n = 0; + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + n++; + if (rowStatus == smiGetNodeType(childNode)) { + fprintf(stderr, "**** GEEEEEE - ROWSTATUS\n"); + } + if (storageType == smiGetNodeType(childNode)) { + fprintf(stderr, "**** GEEEEEE - STORAGETYPE\n"); + } + } + incrTableLenCounter(&metrics->tableLength, n); + } + break; + case SMI_NODEKIND_COLUMN: + incrBasetypeCounter(&metrics->basetypesColumns, smiNode); + incrBasetypeCounter(&metrics->basetypesAll, smiNode); + incrStatusCounter(&metrics->statusColumns, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrAccessCounter(&metrics->accessColumns, smiNode->access); + incrAccessCounter(&metrics->accessAll, smiNode->access); + incrLengthCounter(&metrics->lengthColumns, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrTypeAndNodeUsageCounter(smiModule, smiNode, INCR_TYPE); + break; + case SMI_NODEKIND_SCALAR: + incrBasetypeCounter(&metrics->basetypesScalars, smiNode); + incrBasetypeCounter(&metrics->basetypesAll, smiNode); + incrStatusCounter(&metrics->statusScalars, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrAccessCounter(&metrics->accessScalars, smiNode->access); + incrAccessCounter(&metrics->accessAll, smiNode->access); + incrLengthCounter(&metrics->lengthScalars, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrTypeAndNodeUsageCounter(smiModule, smiNode, INCR_TYPE); + break; + case SMI_NODEKIND_NOTIFICATION: + incrStatusCounter(&metrics->statusNotifications, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrLengthCounter(&metrics->lengthNotifications, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + break; + case SMI_NODEKIND_GROUP: + incrStatusCounter(&metrics->statusGroups, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + break; + case SMI_NODEKIND_COMPLIANCE: + incrStatusCounter(&metrics->statusCompliances, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + break; + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + + /* + * Ignore all types with empty descriptions coming from the + * "SNMPv2-SMI" module since they are not really defined + * types but part of the language itself. + */ + + if (! smiType->description) { + SmiModule *m = smiGetTypeModule(smiType); + if (m && strcmp(m->name, "SNMPv2-SMI") == 0) { + continue; + } + } + + incrStatusCounter(&metrics->statusTypes, smiType->status); + incrStatusCounter(&metrics->statusAll, smiType->status); + incrLengthCounter(&metrics->lengthTypes, + smiType->description, smiType->reference, + smiType->units, smiType->format); + incrLengthCounter(&metrics->lengthAll, + smiType->description, smiType->reference, + smiType->units, smiType->format); + } +} + + + +static void +fprintBasetypeCounter(FILE *f, BasetypeCounter *cnt, const char *s) +{ + if (!s && ! cnt) { + if (! silent) { + fputs( +"# The following table shows the basetype usage distribution in the\n" +"# set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128\n", + "CATEGORY"); + return; + } + + if (raw) { + fprintf(f, "%-10s %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu\n", s, + cnt->integer32, cnt->unsigned32, + cnt->integer64, cnt->unsigned64, + cnt->octetstring, cnt->objectidentifier, + cnt->enums, cnt->bits, + cnt->float32, cnt->float64, cnt->float128); + } else { + fprintf(f, "%-10s %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%%\n", s, + cnt->total ? (double) cnt->integer32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->unsigned32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->integer64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->unsigned64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->octetstring * 100 / cnt->total : 0, + cnt->total ? (double) cnt->objectidentifier * 100 / cnt->total : 0, + cnt->total ? (double) cnt->enums * 100 / cnt->total : 0, + cnt->total ? (double) cnt->bits * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float128 * 100 / cnt->total : 0); + } +} + + + + +static void +fprintStatusCounter(FILE *f, StatusCounter *cnt, char *s) +{ + if (!s || !cnt) { + if (! silent) { + fputs( +"# The following table shows the status distribution of various\n" +"# definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %8s %11s %9s\n", "CATEGORY", + "TOTAL", "CURRENT", "DEPRECATED", "OBSOLETE"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %8lu %11lu %9lu\n", s, + cnt->total, cnt->current, cnt->deprecated, cnt->obsolete); + } else { + fprintf(f, "%-14s %8lu %7.1f%% %10.1f%% %8.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->current * 100 / cnt->total : 0, + cnt->total ? (double) cnt->deprecated * 100 / cnt->total : 0, + cnt->total ? (double) cnt->obsolete * 100 / cnt->total : 0); + } +} + + + +static void +fprintAccessCounter(FILE *f, AccessCounter *cnt, char *s) +{ + if (!s || !cnt) { + if (! silent) { + fputs( +"# The following table shows the access mode distribution of all scalar\n" +"# or column definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %10s %9s %7s %8s\n", "CATEGORY", + "TOTAL", "READWRITE", "READONLY", "NOTIFY", "NOACCES"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %10lu %9lu %7lu %8lu\n", s, + cnt->total, cnt->readwrite, cnt->readonly, + cnt->notify, cnt->noaccess); + } else { + fprintf(f, "%-14s %8lu %9.1f%% %8.1f%% %6.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->readwrite * 100 / cnt->total : 0, + cnt->total ? (double) cnt->readonly * 100 / cnt->total : 0, + cnt->total ? (double) cnt->notify * 100 / cnt->total : 0, + cnt->total ? (double) cnt->noaccess * 100 / cnt->total : 0); + } +} + + + +static void +fprintIndexCounter(FILE *f, IndexCounter *cnt, char *s) +{ + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table index kind distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + fprintf(f, "%-14s %8s %8s %8s %8s %8s %8s\n", "CATEGORY", + "TOTAL", "INDEX", "AUGMENT", "REORDER", "SPARSE", "EXPAND"); + } + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %8lu %8lu %8lu %8lu %8lu\n", s, + cnt->total, cnt->index, cnt->augment, + cnt->reorder, cnt->sparse, cnt->expand); + } else { + fprintf(f, "%-14s %8lu %7.1f%% %7.1f%% %7.1f%% %7.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->index * 100 / cnt->total : 0, + cnt->total ? (double) cnt->augment * 100 / cnt->total : 0, + cnt->total ? (double) cnt->reorder * 100 / cnt->total : 0, + cnt->total ? (double) cnt->sparse * 100 / cnt->total : 0, + cnt->total ? (double) cnt->expand * 100 / cnt->total : 0); + } +} + + + +static void +fprintIndexLenCounter(FILE *f, IndexLenCounter *cnt, char *s) +{ + int i; + int n = sizeof(cnt->length)/sizeof(cnt->length[0]); + char buf[42]; + + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table index length distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s %6s ", "CATEGORY", "TOTAL"); + for (i = 1; i < n; i++) { + sprintf(buf, "[%d]", i); + fprintf(f, " %5s", buf); + } + fprintf(f, "\n"); + return; + } + + fprintf(f, "%-10s %6lu ", s, cnt->total); + if (raw) { + for (i = 1; i < n; i++) { + fprintf(f, " %5lu", cnt->length[i]); + } + } else { + for (i = 1; i < n; i++) { + fprintf(f, " %4.1f%%", (double) cnt->length[i] * 100 / cnt->total); + } + } + + fprintf(f, "\n"); +} + + + +static void +fprintTableLenCounter(FILE *f, TableLenCounter *cnt, char *s) +{ + int i; + int n = sizeof(cnt->length)/sizeof(cnt->length[0]); + char buf[42]; + + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table length distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s %6s ", "CATEGORY", "TOTAL"); + for (i = 1; i < n; i++) { + sprintf(buf, "[%d]", i); + fprintf(f, " %5s", buf); + } + fprintf(f, "\n"); + return; + } + + fprintf(f, "%-10s %6lu ", s, cnt->total); + if (raw) { + for (i = 1; i < n; i++) { + fprintf(f, " %5lu", cnt->length[i]); + } + } else { + for (i = 1; i < n; i++) { + fprintf(f, " %4.1f%%", (double) cnt->length[i] * 100 / cnt->total); + } + } + + fprintf(f, "\n"); +} + + + +static void +fprintLengthCounter(FILE *f, LengthCounter *cnt, char *s) +{ + if (! s) { + if (! silent) { + fputs( +"# The following table shows the text clause usage distribution of all\n" +"# definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %12s %10s %8s %8s\n", "CATEGORY", + "TOTAL", "DESCRIPTION", "REFERENCE", "UNIT", "FORMAT"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %12lu %10lu %8lu %8lu\n", s, + cnt->total, cnt->descr, cnt->reference, + cnt->units, cnt->format); + } else { + fprintf(f, "%-14s %8lu %11.1f%% %9.1f%% %7.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->descr * 100 / cnt->total : 0, + cnt->total ? (double) cnt->reference * 100 / cnt->total : 0, + cnt->total ? (double) cnt->units * 100 / cnt->total : 0, + cnt->total ? (double) cnt->format * 100 / cnt->total : 0); + } +} + + + +static void +fprintLengthCounter2(FILE *f, LengthCounter *cnt, char *s) +{ + if (! s) { + if (! silent) { + fprintf(f, +"# The following table shows the %s text length distribution (in\n" +"# bytes) of all definitions contained in the set of loaded MIB modules.\n" +"\n", raw ? "total" : "average"); + } + fprintf(f, "%-14s %8s %12s %10s %8s %8s\n", "CATEGORY", + "TOTAL", "DESCRIPTION", "REFERENCE", "UNIT", "FORMAT"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %12lu %10lu %8lu %8lu\n", s, + cnt->total, cnt->descr_len, cnt->reference_len, + cnt->units_len, cnt->format_len); + } else { + fprintf(f, "%-14s %8lu %12.1f %10.1f %8.1f %8.1f\n", s, + cnt->total, + cnt->descr ? (double) cnt->descr_len / cnt->descr : 0, + cnt->reference ? (double) cnt->reference_len / cnt->reference : 0, + cnt->units ? (double) cnt->units_len / cnt->units : 0, + cnt->format ? (double) cnt->format_len / cnt->format : 0); + } +} + + + +static void +fprintfComplexity(FILE *f, Metrics *metrics) +{ + unsigned long cmplx = 0, fctrs = 0; + unsigned long total_cmplx = 0, total_fctrs = 0; + + if (! silent) { + fputs( +"# The following table shows the complexity metrics of the set of loaded\n" +"# MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %8s %8s %8s\n", "CATEGORY", "TOTAL", + "RAW", "WEIGHT", "COMPLEXITY"); + + cmplx = metrics->accessScalars.readonly * 1; + fctrs = metrics->accessScalars.readonly; + fprintf(f, "%-14s %8lu %8lu\n", "Scalars (ro):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessScalars.readwrite * 2; + fctrs = metrics->accessScalars.readwrite; + fprintf(f, "%-14s %8lu %8lu\n", "Scalars (rw):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessColumns.readonly * 2; + fctrs = metrics->accessColumns.readonly; + fprintf(f, "%-14s %8lu %8lu\n", "Columns (ro):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessColumns.readwrite * 3; + fctrs = metrics->accessColumns.readwrite; + fprintf(f, "%-14s %8lu %8lu\n", "Columns (rw):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + /* readcreate tables ? */ + + /* table index complexity ? */ + + { + int i; + cmplx = 0; + for (i = 0; i < 100; i++) { + cmplx += 3 * i * metrics->indexComplexity.complexity[i]; + } + fprintf(f, "%-14s %8lu %8lu\n", "Indexes:", metrics->indexComplexity.total, cmplx); + } + + fprintf(f, "%-14s %8lu %8lu\n", "Summary:", total_fctrs, total_cmplx); +} + + + +static void +fprintMetrics(FILE *f, Metrics *metrics) +{ + fprintStatusCounter(f, NULL, NULL); + fprintStatusCounter(f, &metrics->statusTypes, "Types:"); + fprintStatusCounter(f, &metrics->statusTables, "Tables:"); + fprintStatusCounter(f, &metrics->statusColumns, "Columns:"); + fprintStatusCounter(f, &metrics->statusScalars, "Scalars:"); + fprintStatusCounter(f, &metrics->statusNotifications, "Notifications:"); + fprintStatusCounter(f, &metrics->statusGroups, "Groups:"); + fprintStatusCounter(f, &metrics->statusCompliances, "Compliances:"); + fprintStatusCounter(f, &metrics->statusAll, "Summary:"); + fprintf(f, "\n"); + fprintAccessCounter(f, NULL, NULL); + fprintAccessCounter(f, &metrics->accessColumns, "Columns:"); + fprintAccessCounter(f, &metrics->accessScalars, "Scalars:"); + fprintAccessCounter(f, &metrics->accessAll, "Summary:"); + fprintf(f, "\n"); + fprintIndexCounter(f, NULL, NULL); + fprintIndexCounter(f, &metrics->indexTables, "Tables:"); + fprintf(f, "\n"); + fprintIndexLenCounter(f, NULL, NULL); + fprintIndexLenCounter(f, &metrics->indexLenTables, "Tables:"); + fprintf(f, "\n"); + fprintTableLenCounter(f, NULL, NULL); + fprintTableLenCounter(f, &metrics->tableLength, "Tables:"); + fprintf(f, "\n"); + fprintLengthCounter(f, NULL, NULL); + fprintLengthCounter(f, &metrics->lengthTypes, "Types:"); + fprintLengthCounter(f, &metrics->lengthTables, "Tables:"); + fprintLengthCounter(f, &metrics->lengthColumns, "Columns:"); + fprintLengthCounter(f, &metrics->lengthScalars, "Scalars:"); + fprintLengthCounter(f, &metrics->lengthNotifications, "Notifications:"); + fprintLengthCounter(f, &metrics->lengthAll, "Summary:"); + fprintf(f, "\n"); + fprintLengthCounter2(f, NULL, NULL); + fprintLengthCounter2(f, &metrics->lengthTypes, "Types:"); + fprintLengthCounter2(f, &metrics->lengthTables, "Tables:"); + fprintLengthCounter2(f, &metrics->lengthColumns, "Columns:"); + fprintLengthCounter2(f, &metrics->lengthScalars, "Scalars:"); + fprintLengthCounter2(f, &metrics->lengthNotifications, "Notifications:"); + fprintLengthCounter2(f, &metrics->lengthAll, "Summary:"); + fprintf(f, "\n"); + fprintBasetypeCounter(f, NULL, NULL); + fprintBasetypeCounter(f, &metrics->basetypesColumns, "Columns:"); + fprintBasetypeCounter(f, &metrics->basetypesScalars, "Scalars:"); + fprintBasetypeCounter(f, &metrics->basetypesAll, "Summary:"); + fprintf(f, "\n"); + fprintfComplexity(f, metrics); + fprintf(f, "\n"); + fprintTypeUsage(f, typeList); + freeUsageCounter(typeList), typeList = NULL; + fprintf(f, "\n"); + fprintExtTypeUsage(f, extTypeList); + freeUsageCounter(extTypeList), extTypeList = NULL; + fprintf(f, "\n"); + fprintExtNodeUsage(f, extNodeList); + freeUsageCounter(extNodeList), extNodeList = NULL; + fprintf(f, "\n"); + fprintModuleUsage(f, extModuleList); + freeUsageCounter(extModuleList), extModuleList = NULL; + fprintf(f, "\n"); + fprintIndexComplexity(f, indexComplexityList); + freeUsageCounter(indexComplexityList), indexComplexityList = NULL; + fprintf(f, "\n"); +} + + + +static void +dumpMetrics(int modc, SmiModule **modv, int flags, char *output) +{ + Metrics metrics; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! silent) { + int pos = 8888; + fprintf(f, "# united module metrics [%d modules] " + "(generated by smidump " SMI_VERSION_STRING ")\n", modc); + fprintf(f, "#\n# smidump -u -f metrics"); + if (raw) fprintf(f, " --metrics-raw"); + for (i = 0; i < modc; i++) { + int len = strlen(modv[i]->name); + if (pos + len > 70) { + fprintf(f, " \\\n#\t"), pos = 8; + } + fprintf(f, "%s ", modv[i]->name); + pos += len + 1; + } + fprintf(f, "%s\n", (pos == 8) ? "" : "\n"); + } + + fprintRevision(f, modc, modv); + + for (i = 0; i < modc; i++) { + memset(&metrics, 0, sizeof(Metrics)); + } + for (i = 0; i < modc; i++) { + addMetrics(&metrics, modv[i]); + } + fprintMetrics(f, &metrics); + } else { + for (i = 0; i < modc; i++) { + if (! silent) { + fprintf(f, "# %s module metrics (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + fprintRevision(f, 1, modv+i); + + memset(&metrics, 0, sizeof(Metrics)); + addMetrics(&metrics, modv[i]); + fprintMetrics(f, &metrics); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void +initMetrics() +{ + static SmidumpDriverOption opt[] = { + { "raw", OPT_FLAG, &raw, 0, + "generate raw statistics (no percentages)"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "metrics", + dumpMetrics, + 0, + 0, + "metrics characterizing MIB modules", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-mosy.c b/tools/dump-mosy.c new file mode 100644 index 0000000..d2adeb4 --- /dev/null +++ b/tools/dump-mosy.c @@ -0,0 +1,547 @@ +/* + * dump-mosy.c -- + * + * Operations to dump MIB modules in the MOSY output format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-mosy.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static char *ignoreTypeRanges[] = { + "TimeTicks", + "Counter32", + "Gauge32", + "Counter64", + NULL +}; + + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + + +static char *getAccessString(SmiAccess access, int create) +{ + return + (create && (access == SMI_ACCESS_READ_WRITE)) ? "read-create" : + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; +} + + +static char *getBasetypeString(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectID" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "INTEGER" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, ".%u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->decl != SMI_DECL_IMPL_OBJECT) + && ((parentNode->name && strlen(parentNode->name)) + && (smiIsImported(smiModule, NULL, parentNode->name) + || (!importedParent + && (smiGetNodeModule(parentNode) == smiModule)) + || (parentNode->oidlen == 1)))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getValueString(SmiValue *valuePtr) +{ + static char s[1024]; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* not required in MOSY format */ + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + } + + return s; +} + + + +static void printIndex(FILE *f, SmiNode *smiNode) +{ + char *indexname; + int i; + SmiElement *smiElement; + + fprintf(f, "%%%-19s %-16s \"", "ei", smiNode->name); + indexname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, " "); + if (indexname) { + fprintf(f, "%s", indexname); + } + indexname = smiGetElementNode(smiElement)->name; + } + if (indexname) { + fprintf(f, "%s%s%s", + (i > 0) ? " " : "", + (smiNode->implied) ? "*" : "", + indexname); + } + fprintf(f, "\"\n"); +} + + + +static void printAssignements(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + + cnt++; + + if (smiNode->status == SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s object-id\n", smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType, *smiParentType; + SmiNamedNumber *nn; + char *type_name; + + for (i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + smiParentType = smiGetParentType(smiType); + type_name = smiParentType->name; + + if (smiParentType->decl == SMI_DECL_IMPLICIT_TYPE) { + smiParentType = smiGetParentType(smiParentType); + type_name = smiParentType->name; + } + if (smiParentType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + type_name = "ObjectID"; + } + if (smiParentType->basetype == SMI_BASETYPE_ENUM) { + type_name = "INTEGER"; + } + + fprintf(f, "%%%-19s %-16s %-15s \"%s\"\n", "tc", + smiType->name, type_name, + smiType->format ? smiType->format : ""); + + for (i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + fprintf(f, "%%%-19s %-16s %-15s %s\n", "es", + smiType->name, nn->name, + getValueString(&nn->value)); + } + } +} + + + +static void printObjects(FILE *f, SmiModule *smiModule) +{ + int i, j, ignore, cnt = 0, aggregate, create; + char *type_name; + SmiNode *smiNode, *relatedNode; + SmiType *smiType; + SmiNamedNumber *smiNamedNumber; + SmiRange *smiRange; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (smiNode->nodekind != SMI_NODEKIND_NODE + && smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_TABLE + && smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + continue; + } + + cnt++; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + fprintf(f, "%-20s %s\n", smiNode->name, + getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s object-id\n", smiNode->name); + } + continue; + } + + aggregate = smiNode->nodekind == SMI_NODEKIND_TABLE + || smiNode->nodekind == SMI_NODEKIND_ROW; + + type_name = NULL; + smiType = smiGetNodeType(smiNode); + if (!aggregate) { + if (! smiType) { + continue; + } + type_name = getBasetypeString(smiType->basetype); + if (smiType && (smiType->decl != SMI_DECL_IMPLICIT_TYPE)) { + type_name = smiType->name; + if (!strcmp(type_name, "ObjectIdentifier")) { + type_name = "ObjectID"; + } + } + + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + type_name = smiGetParentType(smiType)->name; + if (smiType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + type_name = "ObjectID"; + } + if (smiType->basetype == SMI_BASETYPE_ENUM) { + type_name = "INTEGER"; + } + } + } else { + type_name = "Aggregate"; + } + + if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + create = smiGetParentNode(smiNode)->create; + } else { + create = 0; + } + + fprintf(f, "%-20s %-16s ", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%-15s %-15s %s\n", type_name, + getAccessString(smiNode->access, create), + getStatusString(smiNode->status)); + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + printIndex(f, smiNode); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + if (relatedNode) { + fprintf(f, "%%%-19s %-16s %s\n", "ea", + smiNode->name, relatedNode->name); + } + break; + case SMI_INDEX_SPARSE: + if (relatedNode) { + printIndex(f, relatedNode); + } + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + for (i = 0, smiNamedNumber = smiGetFirstNamedNumber(smiType); + smiNamedNumber; + i++, smiNamedNumber = smiGetNextNamedNumber(smiNamedNumber)) { + fprintf(f, "%%%-19s %-16s %-15s %s\n", "ev", + smiNode->name, smiNamedNumber->name, + getValueString(&smiNamedNumber->value)); + } + + for (ignore = 0, j = 0; ignoreTypeRanges[j]; j++) { + if (strcmp(type_name, ignoreTypeRanges[j]) == 0) { + ignore++; + break; + } + } + + if (! ignore) { + for (smiRange = smiGetFirstRange(smiType); + smiRange; + smiRange = smiGetNextRange(smiRange)) { + fprintf(f, "%%%-19s %-16s %-15s ", "er", + smiNode->name, + getValueString(&smiRange->minValue)); + fprintf(f, "%s\n", getValueString(&smiRange->maxValue)); + } + } + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printNotifications(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s notification\n", smiNode->name); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNodeMember; + SmiElement *smiElement; + int cnt = 0, objects, notifications; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + cnt ++; + + for (objects = 0, notifications = 0, + smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNodeMember = smiGetElementNode(smiElement); + + objects += + (smiNodeMember->nodekind == SMI_NODEKIND_SCALAR) + || (smiNodeMember->nodekind == SMI_NODEKIND_COLUMN); + notifications += + (smiNodeMember->nodekind == SMI_NODEKIND_NOTIFICATION); + } + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s %s\n", smiNode->name, + (objects && ! notifications) ? "object-group" : + (! objects && notifications) ? "notification-group" : "group"); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printCompliances(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + cnt++; + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s module-compliance\n", smiNode->name); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpMosy(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, + "-- automatically generated by smidump %s, do not edit!\n", + SMI_VERSION_STRING); + fprintf(f, + "\n-- object definitions compiled from %s\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "-- WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + SmiNode *parent = smiGetParentNode(smiNode); + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, !parent || parent->nodekind == SMI_NODEKIND_UNKNOWN )); + fprintf(f, "%%n0 %-16s module-identity\n", smiNode->name); + fprintf(f, "\n"); + } + + printAssignements(f, modv[i]); + printTypedefs(f, modv[i]); + printObjects(f, modv[i]); + printNotifications(f, modv[i]); + printGroups(f, modv[i]); + printCompliances(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initMosy() +{ + + static SmidumpDriver driver = { + "mosy", + dumpMosy, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "intermediate format generated by the mosy compiler", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-netsnmp.c b/tools/dump-netsnmp.c new file mode 100644 index 0000000..90cae16 --- /dev/null +++ b/tools/dump-netsnmp.c @@ -0,0 +1,1343 @@ +/* + * dump-netsnmp.c -- + * + * Operations to generate NET-SNMP mib module implementation code. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-netsnmp.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * - assume that we build a dynamic loadable module + * - update to 4.X version of the UCD API + * - generate #defines for deprecated and obsolete objects + * - generate stub codes for the various functions + * - generate type and range checking code + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + +static int noMgrStubs = 0; +static int noAgtStubs = 0; + + +static char *getAccessString(SmiAccess access) +{ + if (access == SMI_ACCESS_READ_WRITE) { + return "RWRITE"; + } else if (access == SMI_ACCESS_READ_ONLY) { + return "RONLY"; + } else { + return ""; + } +} + + +static char *getBaseTypeString(SmiBasetype basetype) +{ + switch(basetype) { + case SMI_BASETYPE_UNKNOWN: + return "ASN_NULL"; + case SMI_BASETYPE_POINTER: + return "ASN_NULL"; + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "ASN_INTEGER"; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + return "ASN_OCTET_STR"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "ASN_OBJECT_ID"; + case SMI_BASETYPE_UNSIGNED32: + return "ASN_INTEGER"; + case SMI_BASETYPE_INTEGER64: + return "ASN_INTEGER"; + case SMI_BASETYPE_UNSIGNED64: + return "ASN_INTEGER"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return "ASN_Real"; + } + + return NULL; +} + + + +static char* translate(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + return s; +} + + + +static char* translateUpper(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (islower((int) s[i])) { + s[i] = toupper(s[i]); + } + } + + return s; +} + + + +static char* translateLower(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static char* translateFileName(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '_') s[i] = '-'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + return 1; + } + } + + return 0; +} + + + +static int isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static void printHeaderTypedef(FILE *f, SmiModule *smiModule, + SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cModuleName, *cGroupName, *cName; + unsigned minSize, maxSize; + + cModuleName = translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "/*\n" + " * C type definitions for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "typedef struct %s {\n", cGroupName); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) +#if 0 + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE) +#endif + ) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " uint32_t *%s;\n", cName); + if (maxSize != minSize) { + fprintf(f, + " size_t _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " u_char *%s;\n", cName); + if (maxSize != minSize) { + fprintf(f, + " size_t _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " int32_t *%s;\n", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " uint32_t *%s;\n", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + " int64_t *%s; \n", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + " uint64_t *%s; \n", cName); + break; + default: + fprintf(f, + " /* ?? */ __%s; \n", cName); + break; + } + xfree(cName); + } + } + + fprintf(f, + " void *_clientData;\t\t" + "/* pointer to client data structure */\n"); + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, " struct %s *_nextPtr;\t" + "/* pointer to next table entry */\n", cGroupName); + } + fprintf(f, + "\n /* private space to hold actual values */\n\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) +#if 0 + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE) +#endif + ) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + fprintf(f, + " uint32_t __%s[%u];\n", cName, maxSize); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + fprintf(f, + " u_char __%s[%u];\n", cName, maxSize); + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " int32_t __%s;\n", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " uint32_t __%s;\n", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + " int64_t __%s; \n", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + " uint64_t __%s; \n", cName); + break; + default: + fprintf(f, + " /* ?? */ __%s; \n", cName); + break; + } + xfree(cName); + } + } + + fprintf(f, "} %s_t;\n\n", cGroupName); + + fprintf(f, + "/*\n" + " * C manager interface stubs for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "extern int\n" + "%s_mgr_get_%s(struct snmp_session *s, %s_t **%s);\n", + cModuleName, cGroupName, cGroupName, cGroupName); + fprintf(f, "\n"); + + fprintf(f, + "/*\n" + " * C agent interface stubs for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "extern int\n" + "%s_agt_read_%s(%s_t *%s);\n", + cModuleName, cGroupName, cGroupName, cGroupName); + fprintf(f, "extern int\n" + "%s_agt_register_%s();\n\n", + cModuleName, cGroupName); + xfree(cGroupName); + xfree(cModuleName); +} + + + +static void printHeaderTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + char *cModuleName; + char *cSmiNodeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + printHeaderTypedef(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } + + if (cnt) { + /* + * Should this go into the agent implementation module? + */ + cModuleName = translateLower(smiModule->name); + fprintf(f, "typedef struct %s {\n", cModuleName); + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cSmiNodeName = translate(smiNode->name); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, " %s_t\t*%s;\n", cSmiNodeName, cSmiNodeName); + } else { + fprintf(f, " %s_t\t%s;\n", cSmiNodeName, cSmiNodeName); + } + xfree(cSmiNodeName); + } + } + fprintf(f, "} %s_t;\n\n", cModuleName); + xfree(cModuleName); + } +} + + + +static void dumpHeader(SmiModule *smiModule, char *baseName) +{ + char *pModuleName; + char *cModuleName; + FILE *f; + + pModuleName = translateUpper(smiModule->name); + + f = createFile(baseName, ".h"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This C header file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP package.\n" + " *\n" + " * This header is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name); + + fprintf(f, "#ifndef _%s_H_\n", pModuleName); + fprintf(f, "#define _%s_H_\n\n", pModuleName); + + fprintf(f, "#include \n\n"); + + fprintf(f, + "#ifdef HAVE_STDINT_H\n" + "#include \n" + "#endif\n\n"); + + printHeaderTypedefs(f, smiModule); + + fprintf(f, + "/*\n" + " * Initialization function:\n" + " */\n\n"); + cModuleName = translateLower(smiModule->name); + fprintf(f, "void %s_agt_init(void);\n\n", cModuleName); + xfree(cModuleName); + + fprintf(f, "#endif /* _%s_H_ */\n", pModuleName); + + fclose(f); + xfree(pModuleName); +} + + + +static void printAgtReadMethodDecls(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of read methods for groups of scalars and tables:\n" + " */\n\n"); + } + fprintf(f, + "static unsigned char *\nread_%s_stub(struct variable *," + " oid *, size_t *, int, size_t *, WriteMethod **);\n", + smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtWriteMethodDecls(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of write methods for writable objects:\n" + " */\n\n"); + } + fprintf(f, + "static int\nwrite_%s_stub(int," + " u_char *, u_char, int, u_char *, oid *, int);\n", + smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtDefinesGroup(FILE *f, SmiNode *groupNode, int cnt) +{ + char *cName, *cGroupName; + SmiNode *smiNode; + SmiType *smiType; + int num = 0; + unsigned int i; + + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Definitions of tags that are used internally to read/write\n" + " * the selected object type. These tags should be unique.\n" + " */\n\n"); + } + + cGroupName = translate(groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + cName = translateUpper(smiNode->name); + fprintf(f, "#define %-32s %d\n", cName, + smiNode->oid[smiNode->oidlen-1]); + xfree(cName); + } + } + fprintf(f, "\n"); + + if (num) { + fprintf(f, "static oid %s_base[] = {", cGroupName); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", groupNode->oid[i]); + } + fprintf(f, "};\n\n"); + fprintf(f, "struct variable %s_variables[] = {\n", cGroupName); + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + cName = translateUpper(smiNode->name); + fprintf(f, " { %s, %s, %s, read_%s_stub, %d, {%d} },\n", + cName, getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access), + cGroupName, 1, smiNode->oid[smiNode->oidlen-1]); + xfree(cName); + } + } + fprintf(f, "};\n\n"); + } + + xfree(cGroupName); +} + + + +static void printAgtDefines(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printAgtDefinesGroup(f, smiNode, ++cnt); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtRegister(FILE *f, SmiNode *groupNode, int cnt) +{ + SmiNode *smiNode; + char *cGroupName; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + fprintf(f, "\n"); + + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Registration functions for the various MIB groups.\n" + " */\n\n"); + } + + cGroupName = translate(groupNode->name); + + fprintf(f, "int register_%s()\n{\n", cGroupName); + fprintf(f, + " return register_mib(\"%s\",\n" + " %s_variables,\n" + " sizeof(struct variable),\n" + " sizeof(%s_variables)/sizeof(struct variable),\n" + " %s_base,\n" + " sizeof(%s_base)/sizeof(oid));\n", + cGroupName, cGroupName, cGroupName, cGroupName, cGroupName); + fprintf(f, "};\n\n"); + + xfree(cGroupName); +} + + + +static void printAgtInit(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printAgtRegister(f, smiNode, ++cnt); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtReadMethod(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cName, *sName, *lName; + + sName = translate(groupNode->name); + + fprintf(f, + "static unsigned char *\nread_%s_stub(struct variable *vp,\n" + " oid *name,\n" + " size_t *length,\n" + " int exact,\n" + " size_t *var_len,\n" + " WriteMethod **write_method)\n" + "{\n", sName); + + fprintf(f, " static %s_t %s;\n\n", sName, sName); + + smiNode = smiGetFirstChildNode(groupNode); + if (smiNode && smiNode->nodekind == SMI_NODEKIND_SCALAR) { + fprintf(f, + " /* check whether the instance identifier is valid */\n" + "\n" + " if (header_generic(vp, name, length, exact, var_len,\n" + " write_method) == MATCH_FAILED) {\n" + " return NULL;\n" + " }\n" + "\n"); + } + + fprintf(f, + " /* call the user supplied function to retrieve values */\n" + "\n" + " read_%s(&%s);\n" + "\n", sName, sName); + + fprintf(f, + " /* return the current value of the variable */\n" + "\n" + " switch (vp->magic) {\n" + "\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + cName = translateUpper(smiNode->name); + lName = translate(smiNode->name); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + continue; + } + fprintf(f, " case %s:\n", cName); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintf(f, + " *var_len = %s._%sLength;\n" + " return (unsigned char *) %s.%s;\n", + sName, lName, sName, lName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + fprintf(f, + " *var_len = %s._%sLength;\n" + " return (unsigned char *) %s.%s;\n", + sName, lName, sName, lName); + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " return (unsigned char *) &%s.%s;\n", + sName, lName); + break; + default: + fprintf(f, + " /* add code to return the value here */\n"); + } + fprintf(f, "\n"); + xfree(cName); + xfree(lName); + } + } + + fprintf(f, + " default:\n" + " ERROR_MSG(\"\");\n" + " }\n" + "\n" + " return NULL;\n" + "}\n" + "\n"); + + xfree(sName); +} + + + +static void printAgtReadMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Read methods for groups of scalars and tables:\n" + " */\n\n"); + } + printAgtReadMethod(f, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtWriteMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of write methods for writable objects:\n" + " */\n\n"); + } + fprintf(f, + "static int\nwrite_%s_stub(int action,\n" + " u_char *var_val,\n" + " u_char var_val_type,\n" + " int var_val_len,\n" + " u_char *statP,\n" + " oid *name,\n" + " int name_len)\n" + "{\n", smiNode->name); + fprintf(f, + " return SNMP_ERR_NOERROR;\n" + "}\n\n"); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpAgtStub(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-agt-stub"); + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP agent library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n", + baseName); + + printAgtReadMethodDecls(f, smiModule); + printAgtWriteMethodDecls(f, smiModule); + printAgtDefines(f, smiModule); + printAgtInit(f, smiModule); + + printAgtReadMethods(f, smiModule); + printAgtWriteMethods(f, smiModule); + + fclose(f); + xfree(stubModuleName); +} + + + +static void printMgrOidDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName; + unsigned int i; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && smiNode->access != SMI_ACCESS_NOTIFY) { + cName = translate(smiNode->name); + fprintf(f, "static oid %s[] = {", cName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n"); + xfree(cName); + } + } + fprintf(f, "\n"); +} + + + +static void printMgrGetScalarAssignement(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cGroupName, *cName; + unsigned maxSize, minSize; + + cGroupName = translate(groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + fprintf(f, + " if (vars->name_length > sizeof(%s)/sizeof(oid)\n" + " && memcmp(vars->name, %s, sizeof(%s)) == 0) {\n", + cName, cName, cName); + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + fprintf(f, + " (*%s)->__%s = *vars->val.integer;\n" + " (*%s)->%s = &((*%s)->__%s);\n", + cGroupName, cName, + cGroupName, cName, cGroupName, cName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " memcpy((*%s)->__%s, vars->val.string, vars->val_len);\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " (*%s)->_%sLength = vars->val_len;\n", + cGroupName, cName); + } + fprintf(f, + " (*%s)->%s = (*%s)->__%s;\n", + cGroupName, cName, cGroupName, cName); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + break; + default: + break; + } + fprintf(f, + " }\n"); + xfree(cName); + } + } + + xfree(cGroupName); +} + + + +static void printMgrGetMethod(FILE *f, SmiModule *smiModule, + SmiNode *groupNode) +{ + SmiNode *smiNode; + char *cModuleName, *cGroupName; + + cModuleName = translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "int %s_mgr_get_%s(struct snmp_session *s, %s_t **%s)\n" + "{\n" + " struct snmp_session *peer;\n" + " struct snmp_pdu *request, *response;\n" + " struct variable_list *vars;\n" + " int status;\n" + "\n", + cModuleName, cGroupName, cGroupName, cGroupName); + + fprintf(f, + " request = snmp_pdu_create(SNMP_MSG_GETNEXT);\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + fprintf(f, + " snmp_add_null_var(request, %s, sizeof(%s)/sizeof(oid));\n", + smiNode->name, smiNode->name); + } + } + + fprintf(f, + "\n" + " peer = snmp_open(s);\n" + " if (!peer) {\n" + " snmp_free_pdu(request);\n" + " return -1;\n" + " }\n" + "\n" + " status = snmp_synch_response(peer, request, &response);\n" + " if (status != STAT_SUCCESS) {\n" + " if (response) snmp_free_pdu(response);\n" + " snmp_close(peer);\n" + " return -2;\n" + " }\n" + "\n"); + + /* generate code for error checking and handling */ + + fprintf(f, + " *%s = (%s_t *) malloc(sizeof(%s_t));\n" + " if (! *%s) {\n" + " if (response) snmp_free_pdu(response);\n" + " snmp_close(peer);\n" + " return -4;\n" + " }\n" + "\n", + cGroupName, cGroupName, cGroupName, cGroupName); + + fprintf(f, + " for (vars = response->variables; vars; vars = vars->next_variable) {\n"); + printMgrGetScalarAssignement(f, groupNode); + fprintf(f, + " }\n" + "\n"); + + +#if 0 + if (response->errstat != SNMP_ERR_NOERROR) { + return -3; + } + + /* copy to data structures */ + + /* cleanup */ + +#endif + + fprintf(f, + " if (response) snmp_free_pdu(response);\n" + "\n" + " if (snmp_close(peer) == 0) {\n" + " return -5;\n" + " }\n" + "\n" + " return 0;\n" + "}\n\n"); + + xfree(cGroupName); + xfree(cModuleName); +} + + + + +static void printMgrGetMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + printMgrGetMethod(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpMgrStub(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-mgr-stub"); + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n", + baseName); + + printMgrOidDefinitions(f, smiModule); + + printMgrGetMethods(f, smiModule); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(stubModuleName); +} + + + +static void dumpAgtImpl(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName, *cModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-agt"); + + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + cModuleName = translateLower(smiModule->name); + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP agent library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n", + baseName); + + fprintf(f, + "static oid %s_caps[] = {0,0};\n" + "\n", + cModuleName); + + fprintf(f, + "void init_%s(void)\n" + "{\n" +#if 0 + /* create an entry in the sysORTable */ + + register_sysORTable(if_mib_caps, sizeof(if_mib_caps), + "IF-MIB implementation version 0.0."); + + /* register the various parts of the MIB */ + + register_interfaces(); + register_ifEntry(); + + /* register essential callbacks */ + + snmp_register_callback(SNMP_CALLBACK_LIBRARY, + SNMP_CALLBACK_SHUTDOWN, + term_if_mib, NULL); +#endif + "}\n" + "\n", + cModuleName); + + + fprintf(f, + "void deinit_%s()\n" + "{\n" + " unregister_sysORTable(%s_caps, sizeof(%s_caps));\n" + "}\n" + "\n", + cModuleName, cModuleName, cModuleName); + + fprintf(f, + "int term_%s()\n" + "{\n" + " deinit_%s();\n" + " return 0;\n" + "}\n" + "\n", + cModuleName, cModuleName); + + xfree(cModuleName); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(stubModuleName); +} + + + +static void dumpNetSnmp(int modc, SmiModule **modv, int flags, char *output) +{ + char *baseName; + int i; + + if (flags & SMIDUMP_FLAG_UNITE) { + /* not implemented yet */ + } else { + for (i = 0; i < modc; i++) { + baseName = output ? output : translateFileName(modv[i]->name); + dumpHeader(modv[i], baseName); + if (! noAgtStubs) { + dumpAgtStub(modv[i], baseName); + dumpAgtImpl(modv[i], baseName); + } + if (! noMgrStubs) { + dumpMgrStub(modv[i], baseName); + } + if (! output) xfree(baseName); + } + } + +} + + + +void initNetsnmp() +{ + static SmidumpDriverOption opt[] = { + { "no-mgr-stubs", OPT_FLAG, &noMgrStubs, 0, + "do not generate manager stub code"}, + { "no-agt-stubs", OPT_FLAG, &noAgtStubs, 0, + "do not generate agent stub code"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "netsnmp", + dumpNetSnmp, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "ANSI C code for the NET-SNMP package", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-perl.c b/tools/dump-perl.c new file mode 100644 index 0000000..dbf533e --- /dev/null +++ b/tools/dump-perl.c @@ -0,0 +1,1129 @@ +/* + * dump-perl.c -- + * + * Operations to dump SMIng module information in Perl format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2000 WideAwake Ltd. + * Copyright (c) 2000 Martin Schulz martin.schulz@myrealbox.com + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-perl.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +typedef struct PerlEscape { + char character; + char *escape; +} PerlEscape; + +static PerlEscape perlEscapes [] = { + { '\'', "\\'" }, + { '\\', "\\\\" }, + { 0, NULL } +}; + + +static int current_column = 0; + +static char* currentModuleName = NULL; + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + fputs ("'", f); + current_column += 3; + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; perlEscapes[j].character; j++) { + if (perlEscapes[j].character == s[i]) break; + } + if (perlEscapes[j].character) { + fputs(perlEscapes[j].escape, f); + current_column += strlen(perlEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; + } + } + fputs ("'", f); + current_column += 3; + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "%s", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, const char *tag, + SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "{\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"type\" => \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", currentModuleName); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"oid\" => \""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + + if (smiNode->create) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"create\" => \"true\"", 0); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" => \"%s\"", getStringStatus(smiNode->status)); + } + if (smiNode->implied) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"implied\" => \"true\"", 0); + } + fprint(f, ",\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag, + const char *name) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "}, # %s\n", name); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiValue min, max; + int rc; + + if (! smiGetFirstRange(smiType)) { + return; + } + + fprintSegment(f, indent, "\"ranges\" => (\n", 0); + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "{\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" => \"%s\",\n", + getValueString(&range->minValue, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" => \"%s\"\n", + getValueString(&range->maxValue, smiType)); + fprintSegment(f, indent, "},\n", 0); + } + fprintSegment(f, indent, "),\n", 0); + + rc = smiGetMinMaxRange(smiType, &min, &max); + + if (rc == 0 + && min.basetype != SMI_BASETYPE_UNKNOWN + && max.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"range\" => {\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" => \"%s\",\n", + getValueString(&min, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" => \"%s\"\n", + getValueString(&max, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "\"", 0); + fprint(f, "%s\" => ", nn->name); + fprint(f, "\"%s\",\n", getValueString(&nn->value, smiType)); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"DEFVAL\" => ", 0); + fprint(f, "\"%s\"", getValueString(smiValue, smiType)); + fprint(f, ",\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\"description\" =>\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, ",\n"); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\"reference>\" =>\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, ",\n"); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"DISPLAY-HINT\" => \"%s\",\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"UNITS\" => \"%s\",\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"access\" => \"%s\",\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement, int asArray) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + if (tag) { + if (asArray) { + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", smiNode->name); + } else { + fprint(f, "\"%s\" => {\n", smiNode->name); + } + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"type\" => \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\"\n", smiModule->name); + fprintSegment(f, indent, "},\n", 0); + } else { + if (asArray) { + fprint(f, "{ \"module\" => \"%s\", ", smiModule->name); + fprint(f, "\"name\" => \"%s\" },\n", smiNode->name); + } else { + fprint(f, "\"%s\" => \"%s\",\n", smiNode->name, smiModule->name); + } + } + } +} + + + +static void fprintIndexModule(FILE *f, int indent, const char *modname, + const char *nodename, const char *indexkind) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" => {\n", indexkind); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", modname); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", nodename); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + if (smiNode->implied) { + fprintSegment(f, indent, "\"indeximplied\" => \"true\",\n", 0); + } + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintSegment(f, indent, "\"index\" => [\n", 0); + fprintElementList(f, indent + INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent, "], #index\n", 0); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "augments"); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "reorders"); + fprintSegment(f, indent, "\"index\" => [\n", 0); + fprintElementList(f, indent + INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent, "], #index\n", 0); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "sparse"); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "expands"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + int there_were_revisions = 0; + + currentModuleName = smiModule->name; + + if (smiModule->organization) { + fprintSegment(f, INDENT, "\"organization\" =>", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->organization); + fprint(f, ",\n"); + } + + if (smiModule->contactinfo) { + fprintSegment(f, INDENT, "\"contact\" =>", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->contactinfo); + fprint(f, ",\n"); + } + fprintDescription(f, INDENT, smiModule->description); + fprintReference(f, INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"revisions\" => [\n", 0); + there_were_revisions = 1; + } + fprintSegment(f, 2 * INDENT, "{\n", 0); + fprintSegment(f, 3 * INDENT, "", 0); + fprint(f, "\"date\" => \"%s\",\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 3 * INDENT, smiRevision->description); + fprintSegment(f, 2 * INDENT, "},\n", 0); + i++; + } + if (there_were_revisions) { + fprintSegment(f, INDENT, "],\n", 0); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"identity\" => \"%s\",\n", smiNode->name); + } + fprint(f, "\n"); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + SmiIdentifier lastModule = NULL; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, + smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"imports\" => [\n", 0); + } + if (smiImport->module == NULL) + continue; + + if ( lastModule == NULL || strcmp(lastModule, smiImport->module)) { + if ( lastModule ) { + fprintSegment(f, 3 * INDENT, "]\n", 0); + fprintSegment(f, 2 * INDENT, "},\n", 0); + } + fprintSegment(f, 2 * INDENT, "{\n", 0); + fprintSegment(f, 3 * INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", + smiImport->module); + fprintSegment(f, 3 * INDENT, "\"names\" => [\n", 0); + } + fprintSegment(f, 4 * INDENT, "", 0); + fprint(f, "\"%s\",\n", smiImport->name); + lastModule = smiImport->module; + } + if (lastModule) { + fprintSegment(f, 3 * INDENT, "],\n", 0); + fprintSegment(f, 2 * INDENT, "}\n", 0); + } + + if (i) { + fprintSegment(f, INDENT, "], # imports\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "", 0); + if (smiType->name) { + fprint(f, "\"%s\" => ", smiType->name); + } + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"basetype\" => \"%s\",\n", + getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" => \"%s\",\n", getStringStatus(smiType->status)); + } + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\"parent\" => {\n", 0); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"module\" => \"%s\",\n", parentModule->name); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"name\" => \"%s\",\n", parentType->name); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "},", 0); + if (smiType->name) { + fprint(f, " # %s\n", smiType->name); + } else { + fprint(f, "\n", smiType->name); + } +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"typedefs\" => {\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "}, # typedefs\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "capabilities"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + /* indent += INDENT; */ + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + /* indent += 2 * INDENT; */ + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN */ +/* && smiNode->nodekind != SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(indent + INDENT, "row", smiNode->name); */ +/* printNodeEndTag(indent, "table", smiNode->name); */ +/* } */ + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\"syntax\" => {\n", 0); + smiModule = smiGetTypeModule(smiType); + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\"type\" => "); + if (smiType->name && smiModule) { + fprint(f, "{ \"module\" => \"%s\", \"name\" => \"%s\"},\n", + smiModule->name, smiType->name); + } else { + fprint(f, "\n"); + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "},\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + + fprintNodeEndTag(f, indent, tag, smiNode->name); +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, + lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, + lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"nodes\" => [\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(3 * INDENT, "row", smiNode->name); */ +/* printNodeEndTag(2 * INDENT, "table", smiNode->name); */ +/* } */ + + if (i) { + fprintSegment(f, INDENT, "], # nodes\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintSegment(f, indent + INDENT, "\"objects\" => [\n", 0); + fprintElementList(f, indent + 2 * INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent + INDENT, "],\n", 0); + + fprintNodeEndTag(f, indent, "notification", smiNode->name); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"notifications\" => [\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # notifications\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintSegment(f, indent + INDENT, "\"members\" => [\n", 0); + fprintElementList(f, indent + 2 * INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent + INDENT, "], # members\n", 0); + + fprintNodeEndTag(f, indent, "group", smiNode->name); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"groups\" => [\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # groups\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\"requires\" => [\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode), 1); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"%s\" => {\n", optSmiNode->name); + fprintSegment(f, indent + 2*INDENT, "\"type\" => \"optional\",\n", 0); + fprintSegment(f, indent + 2*INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", optSmiModule->name); + fprintDescription(f, indent + 2 * INDENT, smiOption->description); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + fprintSegment(f, indent, "], # requires\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" => {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", smiModule->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"syntax\" => {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" => ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"writesyntax\" => {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" => ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\"refinements\" => {\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "}, # refinements\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance", smiNode->name); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\"compliances\" => [\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # compliances\n\n", 0); + } +} + + + +static void dumpPerlModule(FILE *f, SmiModule *smiModule) +{ + time_t now; + char *lang; + + now = time(NULL); + fprint(f, "# Perl version 5\t\t\t\t\t\tDO NOT EDIT\n#\n"); + fprint(f, "# Generated by smidump " SMI_VERSION_STRING ":\n#\n"); + fprintf(f, "# smidump -f perl %s\n\n", smiModule->name); + + fprint(f, "{\n"); + + fprint(f, "\"%s\" => {\n", smiModule->name); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n\n", smiModule->name); + + fprintSegment(f, INDENT, "# Compiler Info\n", 0); + fprint(f, ""); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"path\" => \"%s\",\n", smiModule->path); + + lang = getStringLanguage(smiModule->language); + if (lang) { + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"language\" => \"%s\",\n", lang); + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "# Module Identity\n", 0); + fprintModule(f, smiModule); + + fprintSegment(f, INDENT, "# Imports\n", 0); + fprintImports(f, smiModule); + fprintSegment(f, INDENT, "# Module Body\n", 0); + fprintTypedefs(f, smiModule); + fprintNodes(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, " } # %s\n", smiModule->name); + fprint(f, "};\n"); +} + + + +static void dumpPerl(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpPerlModule(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initPerl() +{ + static SmidumpDriver driver = { + "perl", + dumpPerl, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "Perl MIB dictionaries", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-python.c b/tools/dump-python.c new file mode 100644 index 0000000..5798cea --- /dev/null +++ b/tools/dump-python.c @@ -0,0 +1,1112 @@ +/* + * dump-python.c -- + * + * Operations to dump SMIng module information in Python format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2000 WideAwake Ltd. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-python.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - value representations (getValueString()) + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + +static int silent = 0; + + +typedef struct PythonEscape { + char character; + char *escape; +} PythonEscape; + +static PythonEscape pythonEscapes [] = { + { 0, NULL } +}; + + +static int current_column = 0; + +static char* currentModuleName = NULL; + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + fputs("\"\"\"", f); + current_column += 3; + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; pythonEscapes[j].character; j++) { + if (pythonEscapes[j].character == s[i]) break; + } + if (pythonEscapes[j].character) { + fputs(pythonEscapes[j].escape, f); + current_column += strlen(pythonEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; +#ifdef INDENTTEXTS + /* printSegment(column + INDENTTEXTS, "", 0); */ +#endif + } + } + fputs("\"\"\"", f); + current_column += 3; + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "%s", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, const char *tag, + SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"nodetype\" : \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"moduleName\" : \"%s\",\n", currentModuleName); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"oid\" : \""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + + if (smiNode->create) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"create\" : \"true\"", 0); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" : \"%s\"", getStringStatus(smiNode->status)); + } + if (smiNode->implied) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"implied\" : \"true\"", 0); + } + fprint(f, ",\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "}, # %s\n", tag); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiValue min, max; + int rc; + + if (! smiGetFirstRange(smiType)) { + return; + } + + fprintSegment(f, indent, "\"ranges\" : [\n", 0); + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "{\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" : \"%s\",\n", + getValueString(&range->minValue, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" : \"%s\"\n", + getValueString(&range->maxValue, smiType)); + fprintSegment(f, indent, "},\n", 0); + } + fprintSegment(f, indent, "],\n", 0); + + rc = smiGetMinMaxRange(smiType, &min, &max); + + if (rc == 0 + && min.basetype != SMI_BASETYPE_UNKNOWN + && max.basetype != SMI_BASETYPE_UNKNOWN) { + + fprintSegment(f, indent, "\"range\" : {\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" : \"%s\",\n", getValueString(&min, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" : \"%s\"\n", getValueString(&max, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "\"", 0); + fprint(f, "%s\" : {\n", nn->name); + fprintSegment(f, indent + INDENT, + "\"nodetype\" : \"namednumber\",\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"number\" : \"%s\"\n", + getValueString(&nn->value, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"default\" : ", 0); + fprint(f, "\"%s\"", getValueString(smiValue, smiType)); + fprint(f, ",\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\"description\" :\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, ",\n"); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\"reference>\" :\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, ",\n"); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"format\" : \"%s\",\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"units\" : \"%s\",\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"access\" : \"%s\",\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"nodetype\" : \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" : \"%s\"\n", smiModule->name); + fprintSegment(f, indent, "},\n", 0); + } +} + +static void fprintListElement(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\",\n", smiNode->name); + } +} + + + +static void fprintIndexModule(FILE *f, int indent, const char *modname, + const char *nodename, const char *indexkind) +{ + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "{ \"%s\" : {\n", modname); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"indexkind\" : \"%s\",\n", indexkind); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"relatedNode\" : \"%s\",\n", nodename); + fprintSegment(f, indent + INDENT, "}},\n", 0); +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + fprintSegment(f, indent, "\"linkage\" : [\n", 0); + if (smiNode->implied) { + /* fprintSegment(f, indent + INDENT, "\"implied\" : \"true\",\n", 0); */ + } + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintListElement(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "augments"); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "reorders"); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "sparse"); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "expands"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintSegment(f, indent, "],\n", 0); +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + char *lang; + int there_were_revisions = 0; + + lang = getStringLanguage(smiModule->language); + currentModuleName = smiModule->name; + + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"%s\" : {\n", smiModule->name); + fprintSegment(f, 2 * INDENT, "\"nodetype\" : \"module\",\n", 0); + if (lang) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\"language\" : \"%s\",\n", lang); + } + + if (smiModule->organization) { + fprintSegment(f, 2 * INDENT, "\"organization\" :", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->organization); + fprint(f, ",\n"); + } + + if (smiModule->contactinfo) { + fprintSegment(f, 2 * INDENT, "\"contact\" :", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->contactinfo); + fprint(f, ",\n"); + } + fprintDescription(f, 2 * INDENT, smiModule->description); + fprintReference(f, 2 * INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + if (i == 0) { + fprintSegment(f, 2 * INDENT, "\"revisions\" : (\n", 0); + there_were_revisions = 1; + } + fprintSegment(f, 3 * INDENT, "{\n", 0); + fprintSegment(f, 4 * INDENT, "", 0); + fprint(f, "\"date\" : \"%s\",\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 4 * INDENT, smiRevision->description); + fprintSegment(f, 3 * INDENT, "},\n", 0); + i++; + } + if (there_were_revisions) { + fprintSegment(f, 2 * INDENT, "),\n", 0); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\"identity node\" : \"%s\",\n", smiNode->name); + } + + fprintSegment(f, INDENT, "},\n\n", 0); +} + + + +static void fprintImport(FILE *f, int indent, SmiImport *smiImport) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "{\"module\" : \"%s\", \"name\" : \"%s\"},\n", + smiImport->module, smiImport->name); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"imports\" : (\n", 0); + } + fprintImport(f, 2 * INDENT, smiImport); + } + + if (i) { + fprintSegment(f, INDENT, "),\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "", 0); + if (smiType->name) { + fprint(f, "\"%s\" : ", smiType->name); + } + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"basetype\" : \"%s\",\n", + getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" : \"%s\",\n", getStringStatus(smiType->status)); + } + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentType->name && + parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\"parent module\" : {\n", 0); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"name\" : \"%s\",\n", parentModule->name); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"type\" : \"%s\",\n", parentType->name); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"typedefs\" : {\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "}, # typedefs\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "capabilities"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + /* indent += INDENT; */ + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + /* indent += 2 * INDENT; */ + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN */ +/* && smiNode->nodekind != SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(indent + INDENT, "row"); */ +/* printNodeEndTag(indent, "table"); */ +/* } */ + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\"syntax\" : {\n", 0); + smiModule = smiGetTypeModule(smiType); + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\"type\" : "); + if (smiType->name && smiModule) { + fprintf(f, "{ \"module\" :\"%s\", \"name\" : \"%s\"},\n", + smiModule->name, smiType->name); + } else { + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "},\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + +#if 0 + if (smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_TABLE) { + fprintNodeEndTag(f, indent, tag); + } +#else + fprintNodeEndTag(f, indent, tag); +#endif +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, + lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, + lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"nodes\" : {\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(3 * INDENT, "row"); */ +/* printNodeEndTag(2 * INDENT, "table"); */ +/* } */ + + if (i) { + fprintSegment(f, INDENT, "}, # nodes\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + + fprintSegment(f, indent + INDENT, "\"objects\" : {\n", 0); + fprintElementList(f, indent + 2 * INDENT, "object", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "},\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "notification"); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"notifications\" : {\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # notifications\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + + fprintSegment(f, indent + INDENT, "\"members\" : {\n", 0); + fprintElementList(f, indent + 2 * INDENT, "member", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "}, # members\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "group"); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"groups\" : {\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # groups\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\"requires\" : {\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode)); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"%s\" : {\n", optSmiNode->name); + fprintSegment(f, indent + 2*INDENT, + "\"nodetype\" : \"optional\",\n", 0); + fprintSegment(f, indent + 2*INDENT, "", 0); + fprint(f, "\"module\" : \"%s\",\n", optSmiModule->name); + fprintDescription(f, indent + 2 * INDENT, smiOption->description); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + fprintSegment(f, indent, "}, # requires\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" : \"%s\",\n", smiModule->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"syntax\" : {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" : ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "}, # syntax\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"writesyntax\" : {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" : ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "}, # writesyntax\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\"refinements\" : {\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "}, # refinements\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance"); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\"compliances\" : {\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # compliances\n\n", 0); + } +} + + + +static void dumpPythonModule(FILE *f, SmiModule *smiModule) +{ + if (! silent) { + fprint(f, "# python version 1.0\t\t\t\t\t\tDO NOT EDIT\n#\n"); + fprint(f, "# Generated by smidump version " + SMI_VERSION_STRING ":\n#\n"); + fprintf(f, "# smidump -f python %s\n\n", smiModule->name); + } + + fprint(f, "FILENAME = \"%s\"\n\n", smiModule->path); + + fprint(f, "MIB = {\n"); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"moduleName\" : \"%s\",\n\n", smiModule->name); + + fprintModule(f, smiModule); + fprintImports(f, smiModule); + fprintTypedefs(f, smiModule); + fprintNodes(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, "}\n"); +} + + + +static void dumpPython(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpPythonModule(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initPython() +{ + static SmidumpDriver driver = { + "python", + dumpPython, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "Python MIB dictionaries", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-scli.c b/tools/dump-scli.c new file mode 100644 index 0000000..34c5c69 --- /dev/null +++ b/tools/dump-scli.c @@ -0,0 +1,3393 @@ +/* + * dump-scli.c -- + * + * Operations to generate MIB module stubs for the scli package. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * Copyright (c) 2004 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-scli.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * - range checks for 64 bit numbers + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + +#include + +#ifdef HAVE_REGEX_H +#include +#else +#define regex_t int +#define regcomp(a, b, c) 1 +#define regexec(a, b, c, d, e) 0 +#define regerror(a,b,c,d) strncpy(c, "regex not supported", d) +#define regfree(a) +#endif + +static char *prefix = NULL; +static char *include = NULL; +static char *exclude = NULL; +static int sflag = 0; +static int cflag = 0; +static int dflag = 0; +static regex_t _incl_regex, *incl_regex = NULL; +static regex_t _excl_regex, *excl_regex = NULL; + +static char *keywords_c99[] = { + "auto", "enum", "restrict", "unsigned", + "break", "extern", "return", "void", + "case", "float", "short", "volatile", + "char", "for", "signed", "while", + "const", "goto", "sizeof", "_Bool", + "continue", "if", "static", "_Complex", + "default", "inline", "struct", "_Imaginary", + "do", "int", "switch", + "double", "long", "typedef", + "else", "register", "union", + NULL +}; + + + +static int +isKeyword(char *m) +{ + int i; + + for (i = 0; keywords_c99[i]; i++) { + if (strcmp(m, keywords_c99[i]) == 0) { + return 1; + } + } + return 0; +} + + + +static char * +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void +fprintCommentString(FILE *f, char *s) +{ + int i, len; + + if (s) { + fprintf(f, " * "); + len = strlen(s); + for (i = 0; i < len; i++) { + fputc(s[i], f); + if (s[i] == '\n') { + fprintf(f, " * "); + } + } + fputc('\n', f); + } +} + + + +static void +fprintTopComment(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + char *date; + + fprintf(f, + "/* \t\t\t\t\t\t-- DO NOT EDIT --\n" + " * Generated by smidump version " SMI_VERSION_STRING ":\n"); + + fprintf(f, " * smidump -f scli"); + if (sflag) { + fprintf(f, " --scli-set"); + } + if (cflag) { + fprintf(f, " --scli-create"); + } + if (dflag) { + fprintf(f, " --scli-delete"); + } + if (prefix) { + fprintf(f, " \\\n * --scli-prefix='%s'", prefix); + } + if (include) { + fprintf(f, " \\\n * --scli-include='%s'", include); + } + if (exclude) { + fprintf(f, " \\\n * --scli-exclude='%s'", exclude); + } + fprintf(f, " %s\n *\n", smiModule->name); + + fprintf(f, + " * Derived from %s:\n", smiModule->name); + fprintCommentString(f, smiModule->description); + + for (smiRevision = smiGetFirstRevision(smiModule); + smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + date = getStringTime(smiRevision->date); + fprintf(f, + " *\n" + " * Revision %s:\n", date); + fprintCommentString(f, smiRevision->description); + } + +#if 0 + if (smiModule->organization || smiModule->contactinfo) { + fprintf(f, " *\n * Contact:\n"); + printCommentString(f, smiModule->organization); + fprintf(f, " *\n"); + printCommentString(f, smiModule->contactinfo); + } +#endif + + fprintf(f, + " *\n * $I" "d$\n" + " */\n" + "\n"); +} + + + +static char* +translate(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateUpper(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (islower((int) s[i])) { + s[i] = toupper(s[i]); + } + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateLower(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateFileName(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '_') s[i] = '-'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static FILE * +createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static int +isGroup(SmiNode *smiNode, SmiNodekind memberkind) +{ + SmiNode *childNode; + int status; + + if (incl_regex) { + if (! smiNode->name) { + return 0; + } + status = regexec(incl_regex, smiNode->name, (size_t) 0, NULL, 0); + if (status != 0) { + return 0; + } + } + + if (excl_regex) { + if (! smiNode->name) { + return 0; + } + status = regexec(excl_regex, smiNode->name, (size_t) 0, NULL, 0); + if (status == 0) { + return 0; + } + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind & memberkind) { + return 1; + } + } + + return 0; +} + + + +static int +isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static int +isIndex(SmiNode *groupNode, SmiNode *smiNode) +{ + SmiElement *smiElement; + + /* + * Perhaps this test needs to be more sophisticated if you have + * really creative cross-table indexing constructions... + */ + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + if (smiNode == smiGetElementNode(smiElement)) { + return 1; + } + } + + return 0; +} + + + +static int +isWritable(SmiNode *treeNode, SmiNodekind nodekind) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstChildNode(treeNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (nodekind) + && (smiNode->access >= SMI_ACCESS_READ_WRITE)) { + break; + } + } + + return (smiNode != NULL); +} + + + +static char* +getSnmpType(SmiType *smiType) +{ + struct { + char *module; + char *name; + char *tag; + } typemap[] = { + { "RFC1155-SMI","Counter", "GNET_SNMP_VARBIND_TYPE_COUNTER32" }, + { "SNMPv2-SMI", "Counter32", "GNET_SNMP_VARBIND_TYPE_COUNTER32" }, + { "RFC1155-SMI","TimeTicks", "GNET_SNMP_VARBIND_TYPE_TIMETICKS" }, + { "SNMPv2-SMI", "TimeTicks", "GNET_SNMP_VARBIND_TYPE_TIMETICKS" }, + { "RFC1155-SMI","Opaque", "GNET_SNMP_VARBIND_TYPE_OPAQUE" }, + { "SNMPv2-SMI", "Opaque", "GNET_SNMP_VARBIND_TYPE_OPAQUE" }, + { "RFC1155-SMI","IpAddress", "GNET_SNMP_VARBIND_TYPE_IPADDRESS" }, + { "SNMPv2-SMI", "IpAddress", "GNET_SNMP_VARBIND_TYPE_IPADDRESS" }, + { NULL, NULL, NULL } + }; + + SmiBasetype basetype = smiType->basetype; + + do { + int i; + for (i = 0; typemap[i].name; i++) { + if (smiType->name + && (strcmp(smiType->name, typemap[i].name) == 0)) { + return typemap[i].tag; + } + } + } while ((smiType = smiGetParentType(smiType))); + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "GNET_SNMP_VARBIND_TYPE_INTEGER32"; + case SMI_BASETYPE_UNSIGNED32: + return "GNET_SNMP_VARBIND_TYPE_UNSIGNED32"; + case SMI_BASETYPE_INTEGER64: + return NULL; + case SMI_BASETYPE_UNSIGNED64: + return "GNET_SNMP_VARBIND_TYPE_COUNTER64"; + case SMI_BASETYPE_OCTETSTRING: + return "GNET_SNMP_VARBIND_TYPE_OCTETSTRING"; + case SMI_BASETYPE_BITS: + return "GNET_SNMP_VARBIND_TYPE_OCTETSTRING"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "GNET_SNMP_VARBIND_TYPE_OBJECTID"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return NULL; + case SMI_BASETYPE_UNKNOWN: + return NULL; + case SMI_BASETYPE_POINTER: + return NULL; + } + return NULL; +} + + + +typedef void (*ForEachIndexFunc) (FILE *f, SmiNode *groupNode, SmiNode *smiNode, int flags, int maxlen, char *name); + + +/* + * Check whether we have duplicate nodes in the INDEX. If yes, + * generate a unique name. + */ + +static char* +getIndexName(SmiNode *indexNode, SmiNode *iNode, SmiElement *smiElement) +{ + SmiElement *se; + SmiNode *sn; + int n = 0, m = 0, tail = 0; + char *name; + + for (se = smiGetFirstElement(indexNode); + se; se = smiGetNextElement(se)) { + sn = smiGetElementNode(se); + if (strcmp(sn->name, iNode->name) == 0) { + n++; + if (! tail) m++; + } + if (se == smiElement) tail = 1; + } + if (n > 1) { + smiAsprintf(&name, "%s%d", iNode->name, m); + } else { + name = xstrdup(iNode->name); + } + return name; +} + + +static void +foreachIndexDo(FILE *f, SmiNode *smiNode, ForEachIndexFunc func, + int flags, int maxlen) +{ + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = smiNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + char *name = getIndexName(indexNode, iNode, smiElement); + (func) (f, smiNode, iNode, flags, maxlen, name); + if (name) xfree(name); + } + } + } +} + + + +static void +printIndexParamsFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + fprintf(f, ", %s%s", flags ? "guint32 *" : "", cName); + if (minSize != maxSize) { + fprintf(f, ", %s_%sLength", + flags ? "guint16 " : "", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + fprintf(f, ", %s%s", flags ? "guchar *" : "", cName); + if (minSize != maxSize) { + fprintf(f, ", %s_%sLength", + flags ? "guint16 " : "", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, ", %s%s", flags ? "gint32 " : "", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, ", %s%s", flags ? "guint32 " : "", cName); + break; + default: + fprintf(f, "/* ?? %s */", cName); + break; + } + xfree(cName); +} + + + +static void +printIndexParamsPassFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName, *gName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + gName = translate(smiNode->name); + cName = translate(iNode->name); + fprintf(f, ", %s->%s", gName, cName); + switch (iType->basetype) { + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (minSize != maxSize) { + fprintf(f, ", %s->_%sLength", gName, cName); + } + break; + default: + break; + } + xfree(cName); + xfree(gName); +} + + + +static void +printIndexAssignmentFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName, *gName, *dName, *dModuleName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + gName = translate(smiNode->name); + cName = translate(iNode->name); + dName = translateUpper(iNode->name); + dModuleName = translateUpper(smiGetNodeModule(iNode)->name); + switch (iType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintf(f, " memcpy(%s->%s, %s, _%sLength * sizeof(guint32));\n", + gName, cName, cName, cName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (minSize != maxSize) { + fprintf(f, " memcpy(%s->%s, %s, _%sLength);\n", + gName, cName, cName, cName); + } else { + fprintf(f, " memcpy(%s->%s, %s, %s_%sLENGTH);\n", + gName, cName, cName, dModuleName, dName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, " %s->%s = %s;\n", + gName, cName, cName); + break; + default: + fprintf(f, " /* ?? %s */\n", cName); + break; + } + xfree(dModuleName); + xfree(dName); + xfree(cName); + xfree(gName); +} + + + +static void +printHeaderEnumeration(FILE *f, SmiModule *smiModule, + SmiNode * smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *cName, *cPrefix; + char *dName, *dModuleName; + char *name; + int len; + + if (smiType && smiType->name) { + name = smiType->name; + } else if (smiNode && smiNode->name) { + name = smiNode->name; + } else { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cName = translate(name); + dName = translateUpper(name); + + for (len = 0, nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + if (len < strlen(nn->name)) { + len = strlen(nn->name); + } + } + for (nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + char *dEnum = translateUpper(nn->name); + fprintf(f, "#define %s_%s_%-*s %d\n", + dModuleName, dName, len, dEnum, + (int) nn->value.value.integer32); + xfree(dEnum); + } + fprintf(f, "\nextern GNetSnmpEnum const %s_enums_%s[];\n\n", + cPrefix, cName); + + xfree(dName); + xfree(cName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printHeaderEnumerations(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiType *smiType; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + const char *header = + "/*\n" + " * Tables to map enumerations to strings and vice versa.\n" + " */\n" + "\n"; + + for (smiNode = smiGetFirstNode(smiModule, groupkind); + smiNode; + smiNode = smiGetNextNode(smiNode, groupkind)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, groupkind)) { + continue; + } + smiType = smiGetNodeType(smiNode); + if (smiType && !smiType->name + && smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + if (! cnt) { + fputs(header, f); + } + cnt++; + printHeaderEnumeration(f, smiModule, smiNode, smiType); + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + if (! cnt) { + fputs(header, f); + } + cnt++; + printHeaderEnumeration(f, smiModule, NULL, smiType); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printHeaderIdentities(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *moduleIdentityNode, *parentNode; + int cnt = 0; + unsigned int i; + char *dName, *dModuleName; + char *cModuleName; + + moduleIdentityNode = smiGetModuleIdentityNode(smiModule); + + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, SMI_NODEKIND_NODE)) { + continue; + } + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + if (! cnt) { + fprintf(f, + "/*\n" + " * Tables to map identities to strings and vice versa.\n" + " */\n" + "\n"); + } + cnt++; + dName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%s\t", dModuleName, dName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? "," : "", smiNode->oid[i]); + } + fprintf(f, "\n"); + xfree(dName); + } + + if (cnt) { + cModuleName = translateLower(smiModule->name); + fprintf(f, + "\n" + "extern GNetSnmpIdentity const %s_identities[];\n" + "\n", + cModuleName); + xfree(cModuleName); + } + + xfree(dModuleName); +} + + + +static void +printHeaderNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + unsigned int i; + char *dName, *dModuleName; + char *cModuleName; + + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (! cnt) { + fprintf(f, + "/*\n" + " * Tables to map notifications to strings and vice versa.\n" + " */\n" + "\n"); + } + cnt++; + dName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%s\t", dModuleName, dName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? "," : "", smiNode->oid[i]); + } + fprintf(f, "\n"); + xfree(dName); + } + + if (cnt) { + cModuleName = translateLower(smiModule->name); + fprintf(f, + "\n" + "extern GNetSnmpIdentity const %s_notifications[];\n" + "\n", + cModuleName); + xfree(cModuleName); + } + + xfree(dModuleName); +} + + + +static void +printParam(FILE *f, SmiNode *smiNode) +{ + char *cName, *dNodeName, *dModuleName; + unsigned minSize, maxSize; + SmiType *smiType; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + cName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + dModuleName = translateUpper(smiModule ? smiModule->name : ""); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + ", guint32 *%s", cName); + if (maxSize != minSize) { + fprintf(f, + ", guint16 _%sLength", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + ", guchar *%s", cName); + if (maxSize != minSize) { + fprintf(f, + ", guint16 _%sLength", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + ", gint32 %s", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + ", guint32 %s", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + ", gint64 %s", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + ", guint64 %s", cName); + break; + default: + fprintf(f, + " /* ?? */ _%s", cName); + break; + } + xfree(cName); +} + + + +static void +printCreateMethodPrototype(FILE *f, SmiNode *groupNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(groupNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(groupNode->name); + + fprintf(f, + "extern void\n" + "%s_create_%s(GNetSnmp *s", cPrefix, cNodeName); + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printDeleteMethodPrototype(FILE *f, SmiNode *groupNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(groupNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(groupNode->name); + + fprintf(f, + "extern void\n" + "%s_delete_%s(GNetSnmp *s", cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printSetMethodPrototype(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(smiNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(smiNode->name); + + fprintf(f, + "extern void\n" + "%s_set_%s(GNetSnmp *s", + cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + printParam(f, smiNode); + + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printMethodPrototypes(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name + && strcmp(smiType->name, "RowStatus") == 0) { + if (cflag) printCreateMethodPrototype(f, groupNode); + if (dflag) printDeleteMethodPrototype(f, groupNode); + } else { + if (! isIndex(groupNode, smiNode)) { + if (sflag) printSetMethodPrototype(f, groupNode, smiNode); + } + } + } + } + } +} + + + +static void +printHeaderTypedefMemberComment(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + char *s = NULL; + + switch (smiNode->access) { + case SMI_ACCESS_READ_WRITE: + s = "rw"; + break; + case SMI_ACCESS_READ_ONLY: + s = "ro"; + break; + case SMI_ACCESS_NOT_ACCESSIBLE: + s = "na"; + break; + case SMI_ACCESS_NOTIFY: + s = "no"; + break; + default: + break; + } + if (s) fprintf(f, "%s", s); + s = smiRenderType(smiType, SMI_RENDER_NAME | SMI_RENDER_QUALIFIED); + if (s) { + fprintf(f, " %s", s); + free(s); + } + if (smiNode->units) { + fprintf(f, " [%s]", smiNode->units); + } else if (smiType->units) { + fprintf(f, " [%s]", smiNode->units); + } +} + + + +static void +printHeaderTypedefMember(FILE *f, SmiNode *smiNode, + SmiType *smiType, int isIndex, int maxlen, char *name) +{ + char *cName, *dNodeName, *dModuleName; + unsigned minSize, maxSize; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cName = translate(name ? name : smiNode->name); + dNodeName = translateUpper(name ? name : smiNode->name); + dModuleName = translateUpper(smiModule ? smiModule->name : ""); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + if (isIndex && maxSize > 128 - smiNode->oidlen) { + maxSize = 128 - smiNode->oidlen; + } + if (isIndex) { + fprintf(f, " guint32 %s[%u];", cName, maxSize); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+2, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } else { + fprintf(f, " guint32 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } + if (maxSize == minSize) { + fprintf(f, + "#define %s_%sLENGTH %u\n", + dModuleName, dNodeName, maxSize); + } else { + fprintf(f, + "#define %s_%sMINLENGTH %u\n", + dModuleName, dNodeName, minSize); + fprintf(f, + "#define %s_%sMAXLENGTH %u\n", + dModuleName, dNodeName, maxSize); + fprintf(f, + " guint16 _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + if (isIndex && maxSize > 128 - smiNode->oidlen) { + maxSize = 128 - smiNode->oidlen; + } + if (isIndex) { + fprintf(f, " guchar %s[%u];", cName, maxSize); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+2, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } else { + fprintf(f, " guchar *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } + if (maxSize == minSize) { + fprintf(f, + "#define %s_%sLENGTH %u\n", + dModuleName, dNodeName, maxSize); + } else { + fprintf(f, + "#define %s_%sMINLENGTH %u\n", + dModuleName, dNodeName, minSize); + fprintf(f, + "#define %s_%sMAXLENGTH %u\n", + dModuleName, dNodeName, maxSize); + fprintf(f, + " guint16 _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, " gint32 %s%s;", isIndex ? "" : "*", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5+isIndex, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, " guint32 %s%s;", isIndex ? "" : "*", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5+isIndex, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, " gint64 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, " guint64 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + default: + fprintf(f, + " /* ?? */ _%s; \n", cName); + break; + } + xfree(dModuleName); + xfree(dNodeName); + xfree(cName); +} + + + +static void +printHeaderTypedefMemberIndex(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + printHeaderTypedefMember(f, iNode, iType, 1, maxlen, name); +} + + + +static void +printHeaderTypedef(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cPrefix, *dModuleName, *cGroupName, *dGroupName, *dNodeName; + int writable = 0, count = 0, len = 0; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + dGroupName = translateUpper(groupNode->name); + + fprintf(f, + "/*\n" + " * C type definitions for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (len < strlen(smiNode->name)) { + len = strlen(smiNode->name); + } + } + } + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + dNodeName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%-*s (1 << %d) \n", dModuleName, len, dNodeName, count); + xfree(dNodeName); + count++; + } + } + + if (count) { + fprintf(f, "\n"); + } + + fprintf(f, "typedef struct {\n"); + + foreachIndexDo(f, groupNode, printHeaderTypedefMemberIndex, 0, len); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (isIndex(groupNode, smiNode)) { + continue; + } + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + writable++; + } + smiType = smiGetNodeType(smiNode); + if (! smiType) { + continue; + } + printHeaderTypedefMember(f, smiNode, smiType, 0, len, 0); + } + } + + fprintf(f, "} %s_%s_t;\n\n", cPrefix, cGroupName); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + char *cTableName; + SmiNode *tableNode; + + tableNode = smiGetParentNode(groupNode); + if (tableNode) { + cTableName = translate(tableNode->name); + fprintf(f, "extern void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t ***%s, gint64 mask);\n\n", + cPrefix, cTableName, + cPrefix, cGroupName, cGroupName); + fprintf(f, "extern void\n" + "%s_free_%s(%s_%s_t **%s);\n\n", + cPrefix, cTableName, + cPrefix, cGroupName, cGroupName); + xfree(cTableName); + } + } + fprintf(f, "extern %s_%s_t *\n" + "%s_new_%s(void);\n\n", + cPrefix, cGroupName, cPrefix, cGroupName); + fprintf(f, "extern void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s", + cPrefix, cGroupName, + cPrefix, cGroupName, + cGroupName); + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + } + fprintf(f, ", gint64 mask);\n\n"); + if (writable) { + fprintf(f, "extern void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask);\n\n", + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + } + fprintf(f, "extern void\n" + "%s_free_%s(%s_%s_t *%s);\n\n", + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + printMethodPrototypes(f, groupNode); + + xfree(dGroupName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printHeaderTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + printHeaderTypedef(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +dumpHeader(SmiModule *smiModule, char *baseName) +{ + char *pModuleName; + FILE *f; + + pModuleName = translateUpper(smiModule->name); + + f = createFile(baseName, ".h"); + if (! f) { + return; + } + + fprintTopComment(f, smiModule); + + fprintf(f, + "#ifndef _%s_H_\n" + "#define _%s_H_\n" + "\n" + "#include \"gsnmp.h\"\n" + "\n" + "G_BEGIN_DECLS\n" + "\n", + pModuleName, pModuleName); + + printHeaderEnumerations(f, smiModule); + printHeaderIdentities(f, smiModule); + printHeaderNotifications(f, smiModule); + printHeaderTypedefs(f, smiModule); + + fprintf(f, + "G_END_DECLS\n" + "\n" + "#endif /* _%s_H_ */\n", + pModuleName); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(pModuleName); +} + + + +static void +printStubEnumeration(FILE *f, SmiModule *smiModule, + SmiNode *smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *cName, *cPrefix; + char *dName, *dModuleName; + char *name; + int len; + + if (smiType && smiType->name) { + name = smiType->name; + } else if (smiNode && smiNode->name) { + name = smiNode->name; + } else { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cName = translate(name); + dName = translateUpper(name); + + fprintf(f, "GNetSnmpEnum const %s_enums_%s[] = {\n", + cPrefix, cName); + for (len = 0, nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + if (len < strlen(nn->name)) { + len = strlen(nn->name); + } + } + for (nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + char *dEnum = translateUpper(nn->name); + fprintf(f, " { %s_%s_%s,%*s \"%s\" },\n", + dModuleName, dName, dEnum, + len - strlen(dEnum), "", nn->name); + xfree(dEnum); + } + fprintf(f, + " { 0, NULL }\n" + "};\n" + "\n"); + + xfree(dName); + xfree(cName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printStubEnumerations(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiType *smiType; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, groupkind); + smiNode; + smiNode = smiGetNextNode(smiNode, groupkind)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, groupkind)) { + continue; + } + smiType = smiGetNodeType(smiNode); + if (smiType && !smiType->name + && smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + cnt++; + printStubEnumeration(f, smiModule, smiNode, smiType); + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + cnt++; + printStubEnumeration(f, smiModule, NULL, smiType); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printStubIdentities(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *moduleIdentityNode, *parentNode; + char *cName, *cModuleName; + char *dName, *dModuleName; + int cnt = 0; + + moduleIdentityNode = smiGetModuleIdentityNode(smiModule); + + cModuleName = translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, SMI_NODEKIND_NODE)) { + continue; + } + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + cnt++; + cName = translate(smiNode->name); + dName = translateUpper(smiNode->name); + fprintf(f, + "static guint32 const %s[]\n\t= { %s_%s };\n", + cName, dModuleName, dName); + xfree(dName); + xfree(cName); + } + + if (cnt) { + fprintf(f, + "\n" + "GNetSnmpIdentity const %s_identities[] = {\n", + cModuleName); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + cName = translate(smiNode->name); + fprintf(f, " { %s,\n" + " G_N_ELEMENTS(%s),\n" + " \"%s\" },\n", + cName, cName, smiNode->name); + xfree(cName); + } + + fprintf(f, + " { 0, 0, NULL }\n" + "};\n" + "\n" + "\n"); + } + + xfree(dModuleName); + xfree(cModuleName); +} + + + +static void +printStubNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName, *cModuleName; + char *dName, *dModuleName; + int cnt = 0; + + cModuleName = translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + cnt++; + cName = translate(smiNode->name); + dName = translateUpper(smiNode->name); + fprintf(f, + "static guint32 const %s[]\n\t= { %s_%s };\n", + cName, dModuleName, dName); + xfree(dName); + xfree(cName); + } + + if (cnt) { + fprintf(f, + "\n" + "GNetSnmpIdentity const %s_notifications[] = {\n", + cModuleName); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + cName = translate(smiNode->name); + fprintf(f, " { %s,\n" + " G_N_ELEMENTS(%s),\n" + " \"%s\" },\n", + cName, cName, smiNode->name); + xfree(cName); + } + + fprintf(f, + " { 0, 0, NULL }\n" + "};\n" + "\n" + "\n"); + } + + xfree(dModuleName); + xfree(cModuleName); +} + + + +static int +printSizeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + unsigned int minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize >= 65535) continue; + if (f) { + if (cnt) { + fprintf(f, ", %u, %u", minSize, maxSize); + } else { + fprintf(f, "static guint16 %s_constraints[] = {%uU, %uU", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printInteger32RangeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + long minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.integer32; + maxSize = smiRange->maxValue.value.integer32; + if (minSize < -2147483647 && maxSize > 2147483646) continue; + if (f) { + if (cnt) { + fprintf(f, ", %ldL, %ldL", minSize, maxSize); + } else { + fprintf(f, "static gint32 %s_constraints[] = {%ldL, %ldL", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printUnsigned32RangeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + unsigned long minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize >= 4294967295UL) continue; + if (f) { + if (cnt) { + fprintf(f, ", %luUL, %luUL", minSize, maxSize); + } else { + fprintf(f, "static guint32 %s_constraints[] = {%luUL, %luUL", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printConstraints(FILE *f, SmiNode *smiNode, SmiNode *groupNode, int flags) +{ + SmiType *smiType; + int cnt; + + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return 0; + } + + /* + * Generally suppress all INDEX objects (treat them as if they + * were not-accessible). This is a cheap optimization for SMIv1 + * MIBs where these objects were generally read-only. + */ + + if (flags && isIndex(groupNode, smiNode)) { + return 0; + } + + if (smiNode->access == SMI_ACCESS_NOT_ACCESSIBLE + || smiNode->access == SMI_ACCESS_NOTIFY) { + return 0; + } + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + cnt = printSizeConstraints(f, smiNode, smiType); + break; + case SMI_BASETYPE_INTEGER32: + cnt = printInteger32RangeConstraints(f, smiNode, smiType); + break; + case SMI_BASETYPE_UNSIGNED32: + cnt = printUnsigned32RangeConstraints(f, smiNode, smiType); + break; + default: + cnt = 0; + break; + } + + return cnt; +} + + + +static int +printScalarsAttributesContraints(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + int n = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + n += printConstraints(f, smiNode, groupNode, 0); + } + return n; +} + + + +static int +printTableAttributesConstraints(FILE *f, SmiNode *rowNode) +{ + SmiNode *smiNode; + int idx, cnt, n = 0; + + for (smiNode = smiGetFirstChildNode(rowNode), idx = 0, cnt = 0; + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (isIndex(rowNode, smiNode)) idx++; + cnt++; + } + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + n += printConstraints(f, smiNode, rowNode, cnt > idx); + } + return n; +} + + + +static void +printStubContraints(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + cnt += printTableAttributesConstraints(f, smiNode); + } else { + cnt += printScalarsAttributesContraints(f, smiNode); + } + } + } + + if (cnt) { + fprintf(f, "\n\n"); + } +} + + + +static void +printAttribute(FILE *f, SmiNode *smiNode, SmiNode *groupNode, int flags) +{ + SmiType *smiType; + char *snmpType; + char *dModuleName, *dNodeName; + char *cPrefix, *cGroupName, *cNodeName; + unsigned maxSize = 0, minSize = 0; + int cnt; + + smiType = smiGetNodeType(smiNode); + if (!smiType) { + return; + } + + snmpType = getSnmpType(smiType); + if (!snmpType) { + return; + } + + /* + * Generally suppress all INDEX objects (treat them as if they + * were not-accessible). This is a cheap optimization for SMIv1 + * MIBs where these objects were generally read-only. + */ + + if (flags && isIndex(groupNode, smiNode)) { + return; + } + + if (smiNode->access == SMI_ACCESS_NOT_ACCESSIBLE + || smiNode->access == SMI_ACCESS_NOTIFY) { + return; + } + + dModuleName = translateUpper(smiGetNodeModule(smiNode)->name); + dNodeName = translateUpper(smiNode->name); + cNodeName = translate(smiNode->name); + cGroupName = translate(groupNode->name); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiGetNodeModule(smiNode)->name); + + fprintf(f, + " { %u, %s,\n" + " %s_%s, \"%s\",\n", + smiNode->oid[smiNode->oidlen-1], snmpType, + dModuleName, dNodeName, smiNode->name); + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + cnt = printSizeConstraints(NULL, smiNode, smiType); + break; + case SMI_BASETYPE_INTEGER32: + cnt = printInteger32RangeConstraints(NULL, smiNode, smiType); + break; + case SMI_BASETYPE_UNSIGNED32: + cnt = printUnsigned32RangeConstraints(NULL, smiNode, smiType); + break; + default: + cnt = 0; + break; + } + if (cnt) { + fprintf(f, " %s_constraints,\n", cNodeName); + } else { + fprintf(f, " NULL,\n"); + } + + if (! flags && isIndex(groupNode, smiNode)) { + fprintf(f, " -1,\n"); + } else { + fprintf(f, + " G_STRUCT_OFFSET(%s_%s_t, %s),\n", + cPrefix, cGroupName, cNodeName); + } + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + break; + default: + break; + } + if (minSize != maxSize) { + fprintf(f, + " G_STRUCT_OFFSET(%s_%s_t, _%sLength)", + cPrefix, cGroupName, cNodeName); + } else { + fprintf(f, + " 0"); + } + + fprintf(f, + ",\n" + " %s },\n", + (smiNode->access > SMI_ACCESS_READ_ONLY) ? "GSNMP_ATTR_FLAG_WRITABLE" : "0"); + + xfree(cPrefix); + xfree(cGroupName); + xfree(cNodeName); + xfree(dNodeName); + xfree(dModuleName); +} + + + +static void +printScalarsAttributes(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + printAttribute(f, smiNode, groupNode, 0); + } +} + + + +static void +printTableAttributes(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + SmiNode *smiNode; + int idx, cnt; + + for (smiNode = smiGetFirstChildNode(rowNode), idx = 0, cnt = 0; + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (isIndex(rowNode, smiNode)) idx++; + cnt++; + } + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + printAttribute(f, smiNode, rowNode, cnt > idx); + } +} + + + +static void +printStubAttributes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName; + int cnt = 0; + unsigned int i; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + cName = translate(smiNode->name); + + fprintf(f, "static guint32 const %s_oid[] = {", cName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n\n"); + + fprintf(f, + "static GNetSnmpAttribute %s_attr[] = {\n", + cName); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printTableAttributes(f, smiModule, smiNode); + } else { + printScalarsAttributes(f, smiModule, smiNode); + } + fprintf(f, + " { 0, 0, 0, NULL }\n" + "};\n" + "\n"); + xfree(cName); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printInteger32RangeChecks(FILE *f, char *cGroupName, char *cName, + SmiType *smiType) +{ + SmiRange *smiRange; + long int minSize, maxSize; + int c; + + for (c = 0; smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.integer32; + maxSize = smiRange->maxValue.value.integer32; + if (! c) { + fprintf(f, " if ("); + } else { + fprintf(f, "\n && "); + } + if (minSize == -2147483647 - 1) { + fprintf(f, "(%s->%s > %ld)", cGroupName, cName, maxSize); + } else if (maxSize == 2147483647) { + fprintf(f, "(%s->%s < %ld)", cGroupName, cName, minSize); + } else if (minSize == maxSize) { + fprintf(f, "(%s->%s != %ld)", cGroupName, cName, maxSize); + } else { + fprintf(f, "(%s->%s < %ld || %s->%s > %ld)", + cGroupName, cName, minSize, + cGroupName, cName, maxSize); + } + c++; + } + } + + if (c) { + fprintf(f, ") {\n" + " return -1;\n" + " }\n"); + } +} + + + +static void +printUnsigned32RangeChecks(FILE *f, char *cGroupName, char *cName, + SmiType *smiType) +{ + SmiRange *smiRange; + unsigned long minSize, maxSize; + int c; + + for (c = 0; smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize == 4294967295U) { + continue; + } + if (! c) { + fprintf(f, " if ("); + } else { + fprintf(f, "\n && "); + } + if (minSize == 0) { + fprintf(f, "(%s->%s > %lu)", cGroupName, cName, maxSize); + } else if (maxSize == 4294967295U) { + fprintf(f, "(%s->%s < %lu)", cGroupName, cName, minSize); + } else if (minSize == maxSize) { + fprintf(f, "(%s->%s != %lu)", cGroupName, cName, maxSize); + } else { + fprintf(f, "(%s->%s < %lu || %s->%s > %lu)", + cGroupName, cName, minSize, + cGroupName, cName, maxSize); + } + c++; + } + } + if (c) { + fprintf(f, ") {\n" + " return -1;\n" + " }\n"); + } +} + + + +static void +printUnpackMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiElement *smiElement; + SmiNode *indexNode = NULL; + SmiNode *iNode; + SmiType *iType; + char *cPrefix, *cGroupName, *cName, *name; + unsigned maxSize, minSize; + int last = 0; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + switch (groupNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = groupNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(groupNode); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + /* + * First check if there are OID or string types so that we + * know whether we need some additional variables. + */ + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (iType + && (iType->basetype == SMI_BASETYPE_OCTETSTRING + || iType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER)) { + break; + } + } + } + + fprintf(f, + "static inline int\n" + "unpack_%s(GNetSnmpVarBind *vb, %s_%s_t *%s)\n" + "{\n" + " guint8 idx = %u;\n" + "%s" + "\n", + cGroupName, cPrefix, cGroupName, cGroupName, + groupNode->oidlen + 1, + smiElement ? " guint16 i, len;\n" : ""); + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) { + continue; + } + name = getIndexName(indexNode, iNode, smiElement); + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " %s->%s = vb->oid[idx++];\n", + cGroupName, cName); + printInteger32RangeChecks(f, cGroupName, cName, iType); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " %s->%s = vb->oid[idx++];\n", + cGroupName, cName); + printUnsigned32RangeChecks(f, cGroupName, cName, iType); + break; + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid_len - idx;\n"); + } else { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid[idx++];\n"); + } + if (minSize != maxSize) { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " if (vb->oid_len < idx + len) return -1;\n" + " for (i = 0; i < len; i++) {\n" + " %s->%s[i] = vb->oid[idx++];\n" + " }\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " %s->_%sLength = len;\n", cGroupName, cName); + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n" + " if (vb->oid_len < idx + len) return -1;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid_len - idx;\n"); + } else { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid[idx++];\n" + " if (vb->oid_len < idx + len) return -1;\n"); + } + if (minSize != maxSize) { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " %s->%s[i] = vb->oid[idx++];\n" + " }\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " %s->_%sLength = len;\n", cGroupName, cName); + } + break; + default: + fprintf(f, + " /* XXX how to unpack %s->%s ? */\n", + cGroupName, cName); + break; + } + xfree(cName); + if (name) xfree(name); + } + } + + fprintf(f, + " if (vb->oid_len > idx) return -1;\n" + " return 0;\n" + "}\n\n"); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printPackMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiElement *smiElement; + SmiNode *indexNode = NULL; + SmiNode *iNode; + SmiType *iType; + char *cGroupName, *cName, *name; + unsigned maxSize, minSize; + int last = 0; + + cGroupName = translate(groupNode->name); + + switch (groupNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = groupNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(groupNode); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + /* + * First check if there are OID or string types so that we + * know whether we need some additional variables. + */ + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (iType + && (iType->basetype == SMI_BASETYPE_OCTETSTRING + || iType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER)) { + break; + } + } + } + + fprintf(f, + "static inline gint8\n" + "pack_%s(guint32 *base", + cGroupName); + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + fprintf(f, + ")\n" + "{\n" + " guint8 idx = %u;\n" + "%s" + "\n", + groupNode->oidlen + 1, + smiElement ? " guint16 i, len;\n" : ""); + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) { + continue; + } + name = getIndexName(indexNode, iNode, smiElement); + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " base[idx++] = %s;\n", + cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " base[idx++] = %s;\n", + cName); + break; + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " len = _%sLength;\n", + cName); + } else { + fprintf(f, + " len = _%sLength;\n" + " base[idx++] = len;\n", + cName); + } + if (minSize == maxSize) { + fprintf(f, + " if (len != %u) return -1;\n", + minSize); + } else { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " base[idx++] = %s[i];\n" + " if (idx >= 128) return -1;\n" + " }\n", + cName); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " len = _%sLength;\n", + cName); + } else { + fprintf(f, + " len = _%sLength;\n" + " base[idx++] = len;\n", + cName); + } + if (minSize == maxSize) { + fprintf(f, + " if (len != %u) return -1;\n", + minSize); + } else { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " base[idx++] = %s[i];\n" + " if (idx >= 128) return -1;\n" + " }\n", + cName); + break; + default: + fprintf(f, + " /* XXX how to pack %s ? */\n", cGroupName); + break; + } + xfree(cName); + if (name) xfree(name); + } + } + + fprintf(f, + " return idx;\n" + "}\n\n"); + + xfree(cGroupName); +} + + + +static void +printAssignMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + printUnpackMethod(f, smiModule, groupNode); + printPackMethod(f, smiModule, groupNode); + } + + fprintf(f, + "static inline %s_%s_t *\n" + "assign_%s(GList *vbl)\n" + "{\n" + " %s_%s_t *%s;\n" + " char *p;\n" + "\n", + cPrefix, cGroupName, cGroupName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = %s_new_%s();\n" + " p = (char *) %s + sizeof(%s_%s_t);\n" + " * (GList **) p = vbl;\n" + "\n", + cGroupName, cPrefix, cGroupName, + cGroupName, cPrefix, cGroupName); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, + " if (unpack_%s((GNetSnmpVarBind *) vbl->data, %s) < 0) {\n" + " g_warning(\"%%s: invalid instance identifier\", \"%s\");\n" + " g_free(%s);\n" + " return NULL;\n" + " }\n\n", + cGroupName, cGroupName, cGroupName, cGroupName); + } + + fprintf(f, + " gnet_snmp_attr_assign(vbl, %s_oid, G_N_ELEMENTS(%s_oid),\n" + " %s_attr, %s);\n" + "\n" + " return %s;\n" + "}\n" + "\n", cGroupName, cGroupName, cGroupName, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printGetTableMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + SmiNode *tableNode; + char *cPrefix, *cModuleName, *cRowName, *cTableName; + unsigned int i; + + tableNode = smiGetParentNode(rowNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cModuleName = translateLower(smiModule->name); + cRowName = translate(rowNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t ***%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cTableName, cPrefix, cRowName, cRowName); + + fprintf(f, + " GList *row;\n" + " int i;\n"); + + fprintf(f, " static guint32 const _base[] = {"); + for (i = 0; i < rowNode->oidlen; i++) { + fprintf(f, "%u, ", rowNode->oid[i]); + } + fprintf(f, "0};\n"); + fprintf(f, " guint32 base[128];\n"); + + fprintf(f, + "\n" + " *%s = NULL;\n" + " memcpy(base, _base, sizeof(_base));\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, %u, %u, %s_attr, mask);\n", + rowNode->oidlen+1, rowNode->oidlen, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_table(s, in);\n" + " /* gnet_snmp_varbind_list_free(in); */\n" + "\n"); + fprintf(f, + " if (out) {\n" + " *%s = (%s_%s_t **) g_malloc0((g_list_length(out) + 1) * sizeof(%s_%s_t *));\n" + " for (row = out, i = 0; row; row = g_list_next(row), i++) {\n" + " (*%s)[i] = assign_%s(row->data);\n" + " }\n" + " }\n" + "}\n" + "\n", + cRowName, cPrefix, cRowName, + cPrefix, cRowName, + cRowName, cRowName); + + xfree(cTableName); + xfree(cRowName); + xfree(cModuleName); + xfree(cPrefix); +} + + + +static void +printGetRowMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + char *cPrefix, *cRowName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cRowName = translate(rowNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s", + cPrefix, cRowName, cPrefix, cRowName, cRowName); + foreachIndexDo(f, rowNode, printIndexParamsFunc, 1, 0); + fprintf(f, + ", gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n"); + + fprintf(f, + " guint32 base[128];\n" + " gint8 len;\n" + "\n" + " memcpy(base, %s_oid, sizeof(%s_oid));\n", + cRowName, cRowName); + + fprintf(f, + " len = pack_%s(base", + cRowName); + + foreachIndexDo(f, rowNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ");\n" + " if (len < 0) {\n" + " g_warning(\"%%s: invalid index values\", \"%s\");\n" + " s->error_status = GNET_SNMP_PDU_ERR_INTERNAL;\n" + " return;\n" + " }\n", + cRowName); + + fprintf(f, + "\n" + " *%s = NULL;\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, len, %u, %s_attr, mask);\n", + rowNode->oidlen, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_get(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " if (s->error_status != GNET_SNMP_PDU_ERR_NOERROR) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " return;\n" + " }\n" + " *%s = assign_%s(out);\n" + " }\n" + "}\n" + "\n", cRowName, cRowName); + + xfree(cRowName); + xfree(cPrefix); +} + + + +static void +printSetRowMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + char *cPrefix, *cRowName, *cTableName; + SmiNode *tableNode; + + tableNode = smiGetParentNode(rowNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cRowName = translate(rowNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cRowName, cPrefix, cRowName, cRowName); + + fprintf(f, + " guint32 base[128];\n" + " gint8 len;\n" + "\n" + " memcpy(base, %s_oid, sizeof(%s_oid));\n", + cRowName, cRowName); + + fprintf(f, + " len = pack_%s(base", cRowName); + + foreachIndexDo(f, rowNode, printIndexParamsPassFunc, 0, 0); + + fprintf(f, + ");\n" + " if (len < 0) {\n" + " g_warning(\"%%s: invalid index values\", \"%s\");\n" + " s->error_status = GNET_SNMP_PDU_ERR_INTERNAL;\n" + " return;\n" + " }\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_set(s, &in, base, len, %u, %s_attr, mask, %s);\n", + rowNode->oidlen, cRowName, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_set(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " }\n" + "}\n" + "\n"); + + xfree(cTableName); + xfree(cRowName); + xfree(cPrefix); +} + + + +static void +printCreateMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_create_%s(GNetSnmp *s", + cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + " gint32 create = 4; /* SNMPv2-TC::RowStatus createAndGo */\n" + "\n", + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = %s_new_%s();\n", + cGroupName, cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexAssignmentFunc, 0, 0); + + fprintf(f, " %s->%s = &create;\n", + cGroupName, cNodeName); + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printDeleteMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_delete_%s(GNetSnmp *s", + cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + " gint32 destroy = 6; /* SNMPv2-TC::RowStatus destroy */\n" + "\n", + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s_get_%s(s, &%s", + cPrefix, cGroupName, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ", %s_%s);\n" + " if (s->error_status || !%s) return;\n", + dModuleName, dNodeName, + cGroupName); + + fprintf(f, " %s->%s = &destroy;\n", + cGroupName, cNodeName); + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printSetMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiType *smiType; + SmiModule *smiModule; + unsigned minSize, maxSize; + + smiModule = smiGetNodeModule(smiNode); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s", + cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + printParam(f, smiNode); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + "\n", cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s_get_%s(s, &%s", + cPrefix, cGroupName, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ", %s_%s);\n" + " if (s->error_status || !%s) return;\n", + dModuleName, dNodeName, + cGroupName); + + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, " %s->%s = %s;\n", + cGroupName, cNodeName, cNodeName); + if (minSize != maxSize) { + fprintf(f, " %s->_%sLength = _%sLength;\n", + cGroupName, cNodeName, cNodeName); + } + break; + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, " %s->%s = &%s;\n", + cGroupName, cNodeName, cNodeName); + break; + default: + fprintf(f, " /* ?? */\n"); + break; + } + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printGetScalarsMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + unsigned int i; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, " static const guint32 _base[] = {"); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%u, ", groupNode->oid[i]); + } + fprintf(f, "0};\n"); + fprintf(f, " guint32 base[128];\n"); + + fprintf(f, + "\n" + " *%s = NULL;\n" + " memcpy(base, _base, sizeof(_base));\n" + "\n", + cGroupName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, %u, %u, %s_attr, mask);\n", + groupNode->oidlen + 1, groupNode->oidlen, cGroupName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_getnext(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " if (s->error_status != GNET_SNMP_PDU_ERR_NOERROR) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " return;\n" + " }\n" + " *%s = assign_%s(out);\n" + " }\n" + "}\n" + "\n", cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printSetScalarsMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + unsigned int i; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, " static guint32 base[] = {"); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%u, ", groupNode->oid[i]); + } + fprintf(f, "0, 0};\n\n"); + + fprintf(f, + " gnet_snmp_attr_set(s, &in, base, %u, %u, %s_attr, mask, %s);\n", + groupNode->oidlen + 2, groupNode->oidlen, cGroupName, cGroupName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_set(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " }\n" + "}\n" + "\n"); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printNewMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "%s_%s_t *\n" + "%s_new_%s()\n" + "{\n" + " %s_%s_t *%s;\n" + "\n", + cPrefix, cGroupName, + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = (%s_%s_t *) g_malloc0(sizeof(%s_%s_t) + sizeof(gpointer));\n" + " return %s;\n" + "}\n" + "\n", + cGroupName, cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printFreeTableMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *tableNode; + char *cPrefix, *cGroupName, *cTableName; + + tableNode = smiGetParentNode(groupNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_free_%s(%s_%s_t **%s)\n" + "{\n" + " int i;\n" + "\n", + cPrefix, cTableName, cPrefix, cGroupName, cGroupName); + + fprintf(f, + " if (%s) {\n" + " for (i = 0; %s[i]; i++) {\n" + " %s_free_%s(%s[i]);\n" + " }\n" + " g_free(%s);\n" + " }\n" + "}\n" + "\n", + cGroupName, cGroupName, cPrefix, + cGroupName, cGroupName, cGroupName); + + xfree(cTableName); + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printFreeMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_free_%s(%s_%s_t *%s)\n" + "{\n" + " GList *vbl;\n" + " char *p;\n" + "\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, + " if (%s) {\n" + " p = (char *) %s + sizeof(%s_%s_t);\n" + " vbl = * (GList **) p;\n" + " g_list_foreach(vbl, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(vbl);\n" + " g_free(%s);\n" + " }\n" + "}\n" + "\n", + cGroupName, cGroupName, cPrefix, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printStubMethod2(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name + && strcmp(smiType->name, "RowStatus") == 0) { + if (cflag) printCreateMethod(f, groupNode, smiNode); + if (dflag) printDeleteMethod(f, groupNode, smiNode); + } else { + if (! isIndex(groupNode, smiNode)) { + if (sflag) printSetMethod(f, groupNode, smiNode); + } + } + } + } + } +} + + + +static void +printStubMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + printNewMethod(f, smiModule, smiNode); + printAssignMethod(f, smiModule, smiNode); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printGetTableMethod(f, smiModule, smiNode); + printGetRowMethod(f, smiModule, smiNode); + if (isWritable(smiNode, SMI_NODEKIND_COLUMN)) { + printSetRowMethod(f, smiModule, smiNode); + } + } else { + printGetScalarsMethod(f, smiModule, smiNode); + if (isWritable(smiNode, SMI_NODEKIND_SCALAR)) { + printSetScalarsMethod(f, smiModule, smiNode); + } + } + printFreeMethod(f, smiModule, smiNode); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printFreeTableMethod(f, smiModule, smiNode); + } + printStubMethod2(f, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +dumpStubs(SmiModule *smiModule, char *baseName) +{ + FILE *f; + + f = createFile(baseName, ".c"); + if (! f) { + return; + } + + fprintTopComment(f, smiModule); + + fprintf(f, + "#include \"%s.h\"\n" + "\n", + baseName); + + printStubEnumerations(f, smiModule); + printStubIdentities(f, smiModule); + printStubNotifications(f, smiModule); + + printStubContraints(f, smiModule); + printStubAttributes(f, smiModule); + printStubMethods(f, smiModule); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void +dumpScli(int modc, SmiModule **modv, int flags, char *output) +{ + char *baseName; + int i, code; + + if (include) { + incl_regex = &_incl_regex; + code = regcomp(incl_regex, include, REG_EXTENDED|REG_NOSUB); + if (code != 0) { + char buffer[256]; + regerror(code, incl_regex, buffer, sizeof(buffer)); + fprintf(stderr, "smidump: regular expression error: %s\n", buffer); + exit(1); + } + } + + if (exclude) { + excl_regex = &_excl_regex; + code = regcomp(excl_regex, exclude, REG_EXTENDED|REG_NOSUB); + if (code != 0) { + char buffer[256]; + regerror(code, excl_regex, buffer, sizeof(buffer)); + fprintf(stderr, "smidump: regular expression error: %s\n", buffer); + if (incl_regex) { + regfree(incl_regex); + } + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + /* not implemented yet */ + } else { + for (i = 0; i < modc; i++) { + baseName = output ? output : translateFileName(modv[i]->name); + dumpHeader(modv[i], baseName); + dumpStubs(modv[i], baseName); + if (! output) xfree(baseName); + } + } + + if (incl_regex) { + regfree(incl_regex); + incl_regex = NULL; + } + if (excl_regex) { + regfree(excl_regex); + excl_regex = NULL; + } +} + + + +void initScli() +{ + static SmidumpDriverOption opt[] = { + { "prefix", OPT_STRING, &prefix, 0, + "use prefix instead of module name in stubs"}, + { "include", OPT_STRING, &include, 0, + "include stubs for groups matching a regex"}, + { "exclude", OPT_STRING, &exclude, 0, + "exclude stubs for groups matching a regex"}, + { "set", OPT_FLAG, &sflag, 0, + "generate set stubs for writable objects"}, + { "create", OPT_FLAG, &cflag, 0, + "generate create stubs for tables using RowStatus"}, + { "delete", OPT_FLAG, &dflag, 0, + "generate delete stubs for tables using RowStatus"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "scli", + dumpScli, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "ANSI C manager stubs for the gsnmp package", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-sizes.c b/tools/dump-sizes.c new file mode 100644 index 0000000..5abbd97 --- /dev/null +++ b/tools/dump-sizes.c @@ -0,0 +1,1345 @@ +/* + * dump-sizes.c -- + * + * Operations to compute and dump SNMPv3 PDU sizes. + * + * Copyright (c) 2003 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-sizes.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +static int silent = 0; +static int detail = 0; + +/* + * help functions + */ +#define m_abs(a) ((a) < 0 ? -(a) : (a)) + +typedef struct WellKnowType { + char *module; + char *name; + int max; + int mean; + int min; +} WellKnowType; + +static WellKnowType specialTypes[] = { + { "SNMPv2-TC", "PhysAddress", 65535, 6, 0 }, + { "INET-ADDRESS-MIB", "InetAddress", 255, 4, 0 }, + { "IANATn3270eTC-MIB", "IANATn3270eAddress", 255, 4, 0 }, + { NULL, NULL, 0, 0, 0 } +}; + + + +typedef enum len_type { + len_min, + len_mean, + len_max +} len_type; + + + +static SmiInteger32 +getAbsMinEnum(SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MAX; + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (abs(nn->value.value.integer32) < min) { + min = abs(nn->value.value.integer32); + } + } + return min; +} + + + +static SmiInteger32 +getAbsMaxEnum(SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiInteger32 max = 0; + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (abs(nn->value.value.integer32) > max) { + max = abs(nn->value.value.integer32); + } + } + return max; +} + + + +static SmiInteger32 +getAbsMinInteger32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMinInteger32(parent) : 0; + } + + for (; range; range = smiGetNextRange(range)) { + if (abs(range->minValue.value.integer32) < min) { + min = abs(range->minValue.value.integer32); + } + } + return min; +} + + + +static SmiInteger32 +getAbsMaxInteger32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 max = SMI_BASETYPE_INTEGER32_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent + ? getAbsMaxInteger32(parent) : SMI_BASETYPE_INTEGER32_MAX; + } + + for (; range; range = smiGetNextRange(range)) { + if (abs(range->maxValue.value.integer32) > max) { + max = abs(range->maxValue.value.integer32); + } + } + return max; +} + + + +static SmiUnsigned32 +getMinUnsigned32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 min = 0xffffffff; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMinUnsigned32(parent) : 0; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->minValue.value.unsigned32 < min) { + min = range->minValue.value.unsigned32; + } + } + return min; +} + + + +static SmiUnsigned32 +getMaxUnsigned32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiUnsigned32 max = 0; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMaxUnsigned32(parent) : 0xffffffff; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->maxValue.value.unsigned32 > max) { + max = range->maxValue.value.unsigned32; + } + } + return max; +} + + + +static SmiInteger64 +getAbsMinInteger64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 min = SMI_BASETYPE_INTEGER64_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMinInteger64(parent) : min; + } + + for (; range; range = smiGetNextRange(range)) { + if (m_abs(range->minValue.value.integer64) < min) { + min = m_abs(range->minValue.value.integer64); + } + } + return min; +} + + + +static SmiInteger64 +getAbsMaxInteger64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 max = SMI_BASETYPE_INTEGER64_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMaxInteger64(parent) : max; + } + + for (; range; range = smiGetNextRange(range)) { + if (m_abs(range->maxValue.value.integer64) > max) { + max = m_abs(range->maxValue.value.integer64); + } + } + return max; +} + + + +static SmiUnsigned64 +getMinUnsigned64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 min = SMI_BASETYPE_UNSIGNED64_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMinUnsigned64(parent) : min; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->minValue.value.unsigned64 < min) { + min = range->minValue.value.unsigned64; + } + } + return min; +} + + + +static SmiUnsigned64 +getMaxUnsigned64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiUnsigned64 max = SMI_BASETYPE_UNSIGNED64_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMaxUnsigned64(parent) : max; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->maxValue.value.unsigned64 > max) { + max = range->maxValue.value.unsigned64; + } + } + return max; +} + + + +static int +ber_len_length(int length) +{ + int len; + + if (length < 0x80) { + return 1; + } + + for (len = 0; length > 0; len++) { + length >>= 8; + } + return len; +} + + + +static int +ber_len_subid(SmiSubid subid) +{ + int len = 0; + + do { + subid >>= 7; + len++; + } while (subid > 0); + return len; +} + + + +static int +ber_len_oid(const SmiSubid *oid, unsigned int oidlen) +{ + int len = 0; + int i; + + len += ber_len_subid(oid[1] + oid[0] * 40); + for (i = 2; i < oidlen; i++) { + len += ber_len_subid(oid[i]); + } + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_int32(const SmiInteger32 value) +{ + SmiInteger32 val = value; + unsigned char ch, sign; + int lim; + int len = 0; + + if (val < 0) { + lim = -1; + sign = 0x80; + } else { + lim = 0; + sign = 0x00; + } + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != lim) || (unsigned char) (ch & 0x80) != sign); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_uint32(const SmiUnsigned32 value) +{ + SmiUnsigned32 val = value; + unsigned char ch; + int len = 0; + + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != 0) || (ch & 0x80) != 0x00); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_int64(const SmiInteger64 value) +{ + SmiInteger64 val = value; + unsigned char ch, sign; + int lim; + int len = 0; + + if (val < 0) { + lim = -1; + sign = 0x80; + } else { + lim = 0; + sign = 0x00; + } + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != lim) || (unsigned char) (ch & 0x80) != sign); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_uint64(const SmiUnsigned64 value) +{ + SmiUnsigned64 val = value; + unsigned char ch; + int len = 0; + + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != 0) || (ch & 0x80) != 0x00); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_val_oid(SmiType *smiType, len_type flags) +{ + SmiSubid oid[128]; + unsigned int oidlen = sizeof(oid)/sizeof(oid[0]); + int i; + + switch (flags) { + case len_max: + oid[0] = 2; + for (i = 1; i < 128; i++) { + oid[i] = 4294967295UL; + } + break; + case len_mean: + /* see Aiko's measurements */ + for (oidlen = 0; oidlen < 15; oidlen++) { + oid[oidlen] = 1; + } + break; + case len_min: + oid[0] = oid[1] = 0, oidlen = 2; + break; + } + return ber_len_oid(oid, oidlen); +} + + + +static int +ber_len_val_octs(SmiType *smiType, len_type flags) +{ + int len = 0; + + SmiModule *smiModule; + + smiModule = smiGetTypeModule(smiType); + if (smiModule && smiModule->name && smiType->name) { + int i; + for (i = 0; specialTypes[i].module; i++) { + if (strcmp(specialTypes[i].module, smiModule->name) == 0 + && (strcmp(specialTypes[i].name, smiType->name) == 0)) { + break; + } + } + if (specialTypes[i].module) { + switch (flags) { + case len_max: + return specialTypes[i].max; + break; + case len_mean: + return specialTypes[i].mean; + break; + case len_min: + return specialTypes[i].min; + break; + } + } + } + + switch (flags) { + case len_max: + len = smiGetMaxSize(smiType); + break; + case len_mean: + len = (smiGetMaxSize(smiType) + smiGetMinSize(smiType)) / 2; + break; + case len_min: + len = smiGetMinSize(smiType); + break; + } + return len; +} + + + +static int +ber_len_val_bits(SmiType *smiType, len_type flags) +{ + int len = 0; + + switch (flags) { + case len_max: + len = smiGetMaxSize(smiType); + break; + case len_mean: + len = (smiGetMaxSize(smiType) + smiGetMinSize(smiType)) / 2; + break; + case len_min: + len = smiGetMinSize(smiType); + break; + } + return len; +} + + + +static int +ber_len_val_enum(SmiType *smiType, len_type flags) +{ + SmiInteger32 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxEnum(smiType); + break; + case len_mean: + val = (getAbsMaxEnum(smiType) + getAbsMinEnum(smiType)) / 2; + break; + case len_min: + val = getAbsMinEnum(smiType); + break; + } + return ber_len_int32(val); +} + + + +static int +ber_len_val_int32(SmiType *smiType, len_type flags) +{ + SmiInteger32 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxInteger32(smiType); + break; + case len_mean: + val = (getAbsMaxInteger32(smiType) + getAbsMinInteger32(smiType)) / 2; + break; + case len_min: + val = getAbsMinInteger32(smiType); + break; + } + return ber_len_int32(val); +} + + + +static int +ber_len_val_uint32(SmiType *smiType, len_type flags) +{ + SmiUnsigned32 val = 0; + + switch (flags) { + case len_max: + val = getMaxUnsigned32(smiType); + break; + case len_mean: + val = (getMaxUnsigned32(smiType) + getMinUnsigned32(smiType)) / 2; + break; + case len_min: + val = getMinUnsigned32(smiType); + break; + } + return ber_len_uint32(val); +} + + + +static int +ber_len_val_int64(SmiType *smiType, len_type flags) +{ + SmiInteger64 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxInteger64(smiType); + break; + case len_mean: + val = (getAbsMaxInteger64(smiType) + getAbsMinInteger64(smiType)) / 2; + break; + case len_min: + val = getAbsMinInteger64(smiType); + break; + } + return ber_len_int64(val); +} + + + +static int +ber_len_val_uint64(SmiType *smiType, len_type flags) +{ + SmiUnsigned64 val = 0; + + switch (flags) { + case len_max: + val = getMaxUnsigned64(smiType); + break; + case len_mean: + val = (getMaxUnsigned64(smiType) + getMinUnsigned64(smiType)) / 2; + break; + case len_min: + val = getMinUnsigned64(smiType); + break; + } + return ber_len_uint64(val); +} + + + +static int +ber_len_val(SmiType *smiType, len_type flags) +{ + int len = 0; + + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + len = ber_len_val_oid(smiType, flags); + break; + case SMI_BASETYPE_OCTETSTRING: + len = ber_len_val_octs(smiType, flags); + break; + case SMI_BASETYPE_BITS: + len = ber_len_val_bits(smiType, flags); + break; + case SMI_BASETYPE_ENUM: + len = ber_len_val_enum(smiType, flags); + break; + case SMI_BASETYPE_INTEGER32: + len = ber_len_val_int32(smiType, flags); + break; + case SMI_BASETYPE_UNSIGNED32: + len = ber_len_val_uint32(smiType, flags); + break; + case SMI_BASETYPE_INTEGER64: + len = ber_len_val_int64(smiType, flags); + break; + case SMI_BASETYPE_UNSIGNED64: + len = ber_len_val_uint64(smiType, flags); + break; + default: + break; + } + + return len; +} + + + +static void +append_index(SmiSubid *oid, unsigned int *oidlen, + SmiNode *indexNode, len_type flags) +{ + SmiInteger32 int32 = 0; + SmiUnsigned32 uint32 = 0; + SmiType *indexType; + SmiModule *indexModule; + int i, len = 0; + + if (! indexNode) return; + + indexType = smiGetNodeType(indexNode); + if (! indexType) return; + + indexModule = smiGetTypeModule(indexType); + + switch (indexType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + + switch (flags) { + case len_max: + len = 128 - *oidlen; + if (indexNode->implied) len--; + break; + case len_mean: + len = 16; + break; + case len_min: + len = 2; + break; + } + + if (! indexNode->implied && *oidlen < 128) { + oid[(*oidlen)++] = len; + } + for (i = 0; i < len && *oidlen < 128; i++) { + switch (flags) { + case len_max: + if (i == 0) { + oid[(*oidlen)++] = 2; + } else { + oid[(*oidlen)++] = 4294967295UL; + } + break; + case len_mean: + oid[(*oidlen)++] = i + 1; + break; + case len_min: + oid[(*oidlen)++] = 0; + break; + } + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + switch (flags) { + case len_max: + len = smiGetMaxSize(indexType); + break; + case len_mean: + len = (smiGetMaxSize(indexType) + smiGetMinSize(indexType) / 2); + break; + case len_min: + len = smiGetMinSize(indexType); + break; + } + + if (indexModule && indexModule->name && indexType->name) { + int i; + for (i = 0; specialTypes[i].module; i++) { + if (strcmp(specialTypes[i].module, indexModule->name) == 0 + && (strcmp(specialTypes[i].name, indexType->name) == 0)) { + break; + } + } + if (specialTypes[i].module) { + switch (flags) { + case len_max: + len = specialTypes[i].max; + break; + case len_mean: + len = specialTypes[i].mean; + break; + case len_min: + len = specialTypes[i].min; + break; + } + } + } + + if (! indexNode->implied && *oidlen < 128) { + oid[(*oidlen)++] = len; + } + for (i = 0; i < len && *oidlen < 128; i++) { + switch (flags) { + case len_max: + oid[(*oidlen)++] = 255; + break; + case len_mean: + if (i == 0) { + oid[(*oidlen)++] = 1; + } else { + oid[(*oidlen)++] = (i%2) ? 85 : 170; + } + break; + case len_min: + oid[(*oidlen)++] = 0; + break; + } + } + break; + case SMI_BASETYPE_ENUM: + switch (flags) { + case len_max: + int32 = getAbsMaxEnum(indexType); + break; + case len_mean: + int32 = (getAbsMaxEnum(indexType) - getAbsMinEnum(indexType)) / 2; + break; + case len_min: + int32 = getAbsMinEnum(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = int32; + } + break; + case SMI_BASETYPE_INTEGER32: + switch (flags) { + case len_max: + int32 = getAbsMaxInteger32(indexType); + break; + case len_mean: + int32 = (getAbsMaxInteger32(indexType) + + getAbsMinInteger32(indexType)) / 2; + break; + case len_min: + int32 = getAbsMinInteger32(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = int32; + } + break; + case SMI_BASETYPE_UNSIGNED32: + switch (flags) { + case len_max: + uint32 = getMaxUnsigned32(indexType); + break; + case len_mean: + uint32 = (getMaxUnsigned32(indexType) + + getMinUnsigned32(indexType)) / 2; + break; + case len_min: + uint32 = getMinUnsigned32(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = uint32; + } + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED64: + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_POINTER: + /* should never really get here */ + break; + } +} + +#undef DUMP_OID + +static int +ber_len_varbind(SmiNode *smiNode, len_type flags) +{ + SmiNode *row; + SmiSubid oid[128]; + unsigned int oidlen = sizeof(oid)/sizeof(oid[0]); + int len = 0; +#ifdef DUMP_OID + int x; +#endif + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { + oid[oidlen] = smiNode->oid[oidlen]; + } + oid[oidlen++] = 0; + break; + case SMI_NODEKIND_COLUMN: + for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { + oid[oidlen] = smiNode->oid[oidlen]; + } + row = smiGetParentNode(smiNode); + if (row) { + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (row->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = row; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(row); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + append_index(oid, &oidlen, iNode, flags); + } + } + } + break; + default: + return 0; + } + +#ifdef DUMP_OID + fprintf(stderr, "%-32s\t", smiNode->name); + for (x = 0; x < oidlen; x++) { + fprintf(stderr, ".%u", oid[x]); + } + fprintf(stderr, "\n"); +#endif + + len += ber_len_oid(oid, oidlen); + len += ber_len_val(smiGetNodeType(smiNode), flags); + len += ber_len_length(len) + 1; + + return len; +} + + + +static int +isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + && childNode->access > SMI_ACCESS_NOTIFY) { + return 1; + } + } + + return 0; +} + + + +static void +dumpSizeOfPDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode) +{ + SmiNode *child; + int worst = 0; + int best = 0; + int avg = 0; + int b, w, a, n = 0; + + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE + || child->access == SMI_ACCESS_READ_ONLY) { + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + + best += b, worst += w, avg += a, n++; + } + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(n-1); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); + + if (detail) { + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE + || child->access == SMI_ACCESS_READ_ONLY) { + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", child->name, a, b, w); + } + } + } +} + + + +static void +dumpSizeOfCreatePDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode, + int ignoreDefaultColumns) +{ + SmiNode *child; + SmiType *childType; + SmiModule *childTypeModule; + + int worst = 0; + int best = 0; + int avg = 0; + int b, w, a, n = 0; + int isRowStatus; + + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE) { + + /* Ensure RowStatus columns are present even if they + * have a default value. */ + + childType = smiGetNodeType(child); + childTypeModule = childType + ? smiGetTypeModule(childType) : NULL; + + isRowStatus + = (childType && childType->name + && childTypeModule && childTypeModule->name) + ? (strcmp(childType->name, "RowStatus") == 0 + && strcmp(childTypeModule->name, "SNMPv2-TC") == 0) + : 0; + + /* xxx at least one PDU must be present xxx */ + + if (ignoreDefaultColumns + && child->value.basetype != SMI_BASETYPE_UNKNOWN + && !isRowStatus) { + continue; + } + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + +#if 0 + fprintf(f, " %-32s\t[%d..%d] | %d\n", child->name, b, w, a); +#endif + + best += b, worst += w, avg += a, n++; + } + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(n-1); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); +} + + + +static void +dumpSizeOfNotificationPDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *varNode; + int worst = 0; + int best = 0; + int avg = 0; + int w, b, a; + int len = 0; + static const SmiSubid snmpTrapOid0[] + = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }; + static const int snmpTrapOid0Len + = sizeof(snmpTrapOid0) / sizeof(SmiSubid); + + b = 15, w = 19, a = 18; + best += b, worst += w, avg += a; + + len += ber_len_oid(smiNode->oid, smiNode->oidlen); + len += ber_len_oid(snmpTrapOid0, snmpTrapOid0Len); + len += ber_len_length(len) + 1; + b = len, w = len, a = len; + best += b, worst += w, avg += a; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + varNode = smiGetElementNode(smiElement); + if (! varNode) continue; + + b = ber_len_varbind(varNode, len_min); + a = ber_len_varbind(varNode, len_mean); + w = ber_len_varbind(varNode, len_max); + + best += b, worst += w, avg += a; + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(0); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); + + if (detail) { + b = 15, w = 19, a = 18; + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", "sysUpTime", a, b, w); + + len = 0; + len += ber_len_oid(smiNode->oid, smiNode->oidlen); + len += ber_len_oid(snmpTrapOid0, snmpTrapOid0Len); + len += ber_len_length(len) + 1; + b = len, w = len, a = len; + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", "snmpTrapOID", a, b, w); + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + varNode = smiGetElementNode(smiElement); + if (! varNode) continue; + + b = ber_len_varbind(varNode, len_min); + a = ber_len_varbind(varNode, len_mean); + w = ber_len_varbind(varNode, len_max); + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", varNode->name, a, b, w); + } + } +} + + + +static void +dumpGroupPduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + dumpSizeOfPDU(f, smiModule, smiNode); + } + } +} + + + +static void +dumpFullRowCreatePduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->create) { + dumpSizeOfCreatePDU(f, smiModule, smiNode, 0); + } + } +} + + + +static void +dumpSmallRowCreatePduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->create) { + dumpSizeOfCreatePDU(f, smiModule, smiNode, 1); + } + } +} + + + +static void +dumpNotificationPduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + dumpSizeOfNotificationPDU(f, smiModule, smiNode); + } +} + + + +static void +dumpSizes(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! silent) { + int pos = 8888; + fprintf(f, "# united module PDU sizes (generated by smidump " + SMI_VERSION_STRING ")\n"); + fprintf(f, "#\n# smidump -u -f sizes"); + for (i = 0; i < modc; i++) { + int len = strlen(modv[i]->name); + if (pos + len > 70) { + fprintf(f, " \\\n#\t"), pos = 8; + } + fprintf(f, "%s ", modv[i]->name); + pos += len + 1; + } + fprintf(f, "%s\n", (pos == 8) ? "" : "\n"); + } + fprintf(f, "\n# size of PDUs for groups and rows:\n\n"); + for (i = 0; i < modc; i++) { + dumpGroupPduSizes(f, modv[i]); + } + fprintf(f, "\n# size of one-shot row creation PDUs including columns with default values:\n\n"); + for (i = 0; i < modc; i++) { + dumpFullRowCreatePduSizes(f, modv[i]); + } + fprintf(f, "\n# size of one-shot row creation PDUs excluding columns with default values:\n\n"); + for (i = 0; i < modc; i++) { + dumpSmallRowCreatePduSizes(f, modv[i]); + } + fprintf(f, "\n# size of notification PDUs:\n\n"); + for (i = 0; i < modc; i++) { + dumpNotificationPduSizes(f, modv[i]); + } + } else { + for (i = 0; i < modc; i++) { + if (! silent) { + fprintf(f, "# %s module PDU sizes (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + fprintf(f, "\n# size of PDUs for groups and rows:\n\n"); + dumpGroupPduSizes(f, modv[i]); + fprintf(f, "\n# size of one-shot row creation PDUs including columns with default values:\n\n"); + dumpFullRowCreatePduSizes(f, modv[i]); + fprintf(f, "\n# size of one-shot row creation PDUs excluding columns with default values:\n\n"); + dumpSmallRowCreatePduSizes(f, modv[i]); + fprintf(f, "\n# size of notification PDUs:\n\n"); + dumpNotificationPduSizes(f, modv[i]); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + +void +initSizes() +{ + static SmidumpDriverOption opt[] = { + { "variables", OPT_FLAG, &detail, 0, + "show detailed information the sizes of variables"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "sizes", + dumpSizes, + SMI_FLAG_NODESCR, + 0, + "RFC 3416 PDU sizes excluding message / transport headers", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-smi.c b/tools/dump-smi.c new file mode 100644 index 0000000..6a13d7a --- /dev/null +++ b/tools/dump-smi.c @@ -0,0 +1,2045 @@ +/* + * dump-smi.c -- + * + * Operations to dump SMIv1/v2 module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-smi.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +extern int smiAsprintf(char **strp, const char *format, ...); + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 16 /* column to start values, except multiline */ +#define INDENTTEXTS 9 /* column to start multiline texts */ +#define INDENTTEXTS2 15 /* column to start indented multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + + + +static char *convertTypev1[] = { + NULL, "Counter32", NULL, "Counter", + NULL, "Gauge32", NULL, "Gauge", + NULL, "Integer32", NULL, "INTEGER", + NULL, "Unsigned32", NULL, "Gauge", + NULL, "Bits", NULL, "OCTET STRING", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, NULL, NULL, NULL }; + + +static char *convertTypev2[] = { + NULL, "INTEGER", NULL, "Integer32", + NULL, "Enumeration", NULL, "INTEGER", + NULL, "Bits", NULL, "BITS", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, "Counter", NULL, "Counter32", + NULL, "Gauge", NULL, "Gauge32", + NULL, NULL, NULL, NULL }; + +static char *convertTypePIBtoMIB[] = { + NULL, "Unsigned64", NULL, "IBRUnsigned64", + NULL, "Integer64", NULL, "IBRInteger64", +/* XXX This breaks SMIv2 -> SMIv? compilation such that the IMPORT statement + for SnmpAdminString is removed. I've remove this as a quick fix, but I'm + not sure what to do for PIB compilation here. + NULL, "SnmpAdminString", NULL, "OCTET STRING", +*/ + NULL, NULL, NULL, NULL }; + +static char *convertImportv2[] = { + "IRTF-NMRG-SMING-TYPES", "IpAddress", "SNMPv2-SMI", "IpAddress", + "IRTF-NMRG-SMING-TYPES", "Counter32", "SNMPv2-SMI", "Counter32", + "IRTF-NMRG-SMING-TYPES", "Gauge32", "SNMPv2-SMI", "Gauge32", + "IRTF-NMRG-SMING-TYPES", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "IRTF-NMRG-SMING-TYPES", "Opaque", "SNMPv2-SMI", "Opaque", + "IRTF-NMRG-SMING-TYPES", "Counter64", "SNMPv2-SMI", "Counter64", + "IRTF-NMRG-SMING-TYPES", "DisplayString", "SNMPv2-TC", "DisplayString", + "IRTF-NMRG-SMING-TYPES", "PhysAddress", "SNMPv2-TC", "PhysAddress", + "IRTF-NMRG-SMING-TYPES", "MacAddress", "SNMPv2-TC", "MacAddress", + "IRTF-NMRG-SMING-TYPES", "TruthValue", "SNMPv2-TC", "TruthValue", + "IRTF-NMRG-SMING-TYPES", "TestAndIncr", "SNMPv2-TC", "TestAndIncr", + "IRTF-NMRG-SMING-TYPES", "AutonomousType", "SNMPv2-TC", "AutonomousType", + "IRTF-NMRG-SMING-TYPES", "InstancePointer", "SNMPv2-TC", "InstancePointer", + "IRTF-NMRG-SMING-TYPES", "VariablePointer", "SNMPv2-TC", "VariablePointer", + "IRTF-NMRG-SMING-TYPES", "RowPointer", "SNMPv2-TC", "RowPointer", + "IRTF-NMRG-SMING-TYPES", "RowStatus", "SNMPv2-TC", "RowStatus", + "IRTF-NMRG-SMING-TYPES", "TimeStamp", "SNMPv2-TC", "TimeStamp", + "IRTF-NMRG-SMING-TYPES", "TimeInterval", "SNMPv2-TC", "TimeInterval", + "IRTF-NMRG-SMING-TYPES", "DateAndTime", "SNMPv2-TC", "DateAndTime", + "IRTF-NMRG-SMING-TYPES", "StorageType", "SNMPv2-TC", "StorageType", + "IRTF-NMRG-SMING-TYPES", "TDomain", "SNMPv2-TC", "TDomain", + "IRTF-NMRG-SMING-TYPES", "TAddress", "SNMPv2-TC", "TAddress", + "IRTF-NMRG-SMING", NULL, "SNMPv2-SMI", NULL, + + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + +/* import types for PIB to MIB conversion */ + + NULL, NULL, NULL, NULL }; + +static char *convertImportv1[] = { + "IRTF-NMRG-SMING-TYPES", "IpAddress", "RFC1155-SMI", "IpAddress", + "IRTF-NMRG-SMING-TYPES", "Counter32", "RFC1155-SMI", "Counter", + "IRTF-NMRG-SMING-TYPES", "Gauge32", "RFC1155-SMI", "Gauge", + "IRTF-NMRG-SMING-TYPES", "TimeTicks", "RFC1155-SMI", "TimeTicks", + "IRTF-NMRG-SMING-TYPES", "Opaque", "RFC1155-SMI", "Opaque", + "IRTF-NMRG-SMING-TYPES", "Counter64", NULL, NULL, + "IRTF-NMRG-SMING", "mib-2", "RFC1213-MIB", "mib-2", + + "SNMPv2-SMI", "IpAddress", "RFC1155-SMI", "IpAddress", + "SNMPv2-SMI", "Counter32", "RFC1155-SMI", "Counter", + "SNMPv2-SMI", "Gauge32", "RFC1155-SMI", "Gauge", + "SNMPv2-SMI", "TimeTicks", "RFC1155-SMI", "TimeTicks", + "SNMPv2-SMI", "Opaque", "RFC1155-SMI", "Opaque", + "SNMPv2-SMI", "Integer32", NULL, NULL, + "SNMPv2-SMI", "Unsigned32", NULL, NULL, + "SNMPv2-SMI", "Counter64", NULL, NULL, + "SNMPv2-SMI", "mib-2", "RFC1213-MIB", "mib-2", + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "ObjectName", NULL, NULL, + "SNMPv2-SMI", "NotificationName", NULL, NULL, + "SNMPv2-SMI", "ObjectSyntax", NULL, NULL, + "SNMPv2-SMI", "SimpleSyntax", NULL, NULL, + "SNMPv2-SMI", "ApplicationSyntax", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int smiv1 = 0; +static int silent = 0; +static int pibtomib = 0; + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static int invalidType(SmiBasetype basetype) +{ + if (smiv1) { + return (basetype == SMI_BASETYPE_INTEGER64) + || (basetype == SMI_BASETYPE_UNSIGNED64) + || (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } else if (!pibtomib) { + return (basetype == SMI_BASETYPE_INTEGER64) + || (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } else { + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } +} + + + +static char *getStatusString(SmiStatus status) +{ + if (smiv1) { + return + (status == SMI_STATUS_CURRENT) ? "mandatory" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; + } else { + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; + } +} + + + +static char *getAccessString(SmiAccess access, int create) +{ + if (smiv1) { + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "read-only" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + + } else { + if (create && (access == SMI_ACCESS_READ_WRITE)) { + return "read-create"; + } else { + if (pibtomib) + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "read-only" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + (access == SMI_ACCESS_INSTALL) ? "read-create" : + (access == SMI_ACCESS_INSTALL_NOTIFY) ? "read-create" : + ""; + else + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + } + } +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char **convertType; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + convertType = smiv1 ? convertTypev1 : convertTypev2; + + if (typeName && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + if (pibtomib) + for(i=0; convertTypePIBtoMIB[i+1]; i += 4) { + if ((!strcmp(typeName, convertTypePIBtoMIB[i+1])) && + ((!typeModule) || (!convertTypePIBtoMIB[i]) || + (!strcmp(typeModule, convertTypePIBtoMIB[i])))) { + return convertTypePIBtoMIB[i+3]; + } + } + for(i=0; convertType[i+1]; i += 4) { + if ((!strcmp(typeName, convertType[i+1])) && + ((!typeModule) || (!convertType[i]) || + (!strcmp(typeModule, convertType[i])))) { + return convertType[i+3]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "INTEGER"; + } + if (basetype == SMI_BASETYPE_BITS) { + if (smiv1) { + return "OCTET STRING"; + } else { + return "BITS"; + } + } + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + if (parentNode->decl != SMI_DECL_IMPL_OBJECT) { + sprintf(append, " %u%s", parentNode->oid[parentNode->oidlen-1], s); + } else { + sprintf(append, " %s(%u)%s", + parentNode->name, + parentNode->oid[parentNode->oidlen-1], s); + } + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->decl != SMI_DECL_IMPL_OBJECT) && + ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1)))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getUppercaseString(char *s) +{ + static char *ss; + + ss = xstrdup(s); + ss[0] = (char)toupper((int)ss[0]); + return ss; +} + + + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + + + +static int isNotificationGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_NOTIFICATION) { + return 0; + } + } + + return 1; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + char **convertImport; + int i; + + convertImport = smiv1 ? convertImportv1 : convertImportv2; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + if (! newImport) { + return NULL; + } + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + SmiModule *smiModule2; + + if (pibtomib) { + addImport("TUBS-SMI", "ibrpibtomib"); + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_UNSIGNED32) + addImport("SNMPv2-SMI", "Unsigned32"); + else if (smiType->basetype == SMI_BASETYPE_UNSIGNED64) + addImport("TUBS-SMI", "IBRUnsigned64"); + else if (smiType->basetype == SMI_BASETYPE_INTEGER64) + addImport("TUBS-SMI", "IBRInteger64"); + } + if (smiGetFirstNode(smiModule, SMI_NODEKIND_TABLE) != NULL) + addImport("SNMPv2-TC", "RowStatus"); + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->indexkind == SMI_INDEX_SPARSE) { + SmiNode *smiNode2 = smiGetRelatedNode(smiNode); + while (smiNode2 && (smiNode2->indexkind == SMI_INDEX_SPARSE)) + smiNode2 = smiGetRelatedNode(smiNode2); + if (smiNode2) { + smiModule2 = smiGetNodeModule(smiNode2); + if (smiModule != smiModule2) + addImport(smiModule2->name, smiNode2->name); + } + } + } + } + + for(smiNode = smiGetFirstNode(smiModule, kind); smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiModule2 = smiGetTypeModule(smiType); + if (smiModule2 && (smiModule2 != smiModule)) { + size_t len = strlen(smiModule2->name); + if (len && smiType->name) { + if (pibtomib && (len > 4) && + !strcmp(&smiModule2->name[len - 4], "-PIB")) { + char *newName = xmalloc(len + 5); + strcpy(newName, smiModule2->name); + strcat(newName, "-MIB"); + addImport(newName, smiType->name); + } else + addImport(smiModule2->name, smiType->name); + } + } + } + + if (pibtomib) { + if (smiType && (smiType->basetype == SMI_BASETYPE_UNSIGNED32)) + addImport("SNMPv2-SMI", "Unsigned32"); + if (smiType && (smiType->basetype == SMI_BASETYPE_UNSIGNED64)) + addImport("TUBS-SMI", "IBRUnsigned64"); + if (smiType && (smiType->basetype == SMI_BASETYPE_INTEGER64)) + addImport("TUBS-SMI", "IBRInteger64"); + } + + if (! smiv1 && + smiType && smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + + if ((!smiv1) && + (smiNode->value.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + (!strcmp(smiNode->value.value.ptr, "zeroDotZero"))) { + addImport("SNMPv2-SMI", "zeroDotZero"); + } + } + + smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN + | SMI_NODEKIND_TABLE | SMI_NODEKIND_ROW); + if (smiNode) { + addImport(smiv1 ? "RFC-1212" : "SNMPv2-SMI", "OBJECT-TYPE"); + } + + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + if (smiNode) { + addImport(smiv1 ? "RFC-1215" : "SNMPv2-SMI", + smiv1 ? "TRAP-TYPE" : "NOTIFICATION-TYPE"); + } + + if (! smiv1) { + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + if (strcmp("SNMPv2-SMI", smiModule->name)) { + addImport("SNMPv2-SMI", "MODULE-IDENTITY"); + } + } + } + + if (! smiv1) { + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + if (strcmp("SNMPv2-SMI", smiModule->name)) { + addImport("SNMPv2-SMI", "OBJECT-IDENTITY"); + } + break; + } + } + } + + if (! smiv1) { + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + if (smiNode) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "MODULE-COMPLIANCE"); + } + } + } + + if (! smiv1) { + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (isObjectGroup(smiNode)) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "OBJECT-GROUP"); + } + } else if (isNotificationGroup(smiNode)) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "NOTIFICATION-GROUP"); + } + } + } + } + + if (! smiv1) { + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->description) { + if (strcmp("SNMPv2-TC", smiModule->name)) { + addImport("SNMPv2-TC", "TEXTUAL-CONVENTION"); + } + break; + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if (islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (!smiv1 && smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, + int length, int comment) +{ + char *format; + + if (comment) { + format = "-- %*c%s"; + /* if (column >= 3) column -= 3; */ + } else { + format = "%*c%s"; + } + + fprint(f, format, column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string, int comment) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0, comment); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static void fprintMultilineString2(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS2 - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS2, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + if (smiv1) { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } else { + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + } + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType, const int comment) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + int i, c = comment; + + if (pibtomib && ((smiType->basetype == SMI_BASETYPE_UNSIGNED64) || + (smiType->basetype == SMI_BASETYPE_INTEGER64))) { + c = 1; + fprint(f, " -- commented out by smidump\n-- "); + } + c = c || (smiv1 && smiType->basetype == SMI_BASETYPE_BITS); + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + if (c) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", INDENTVALUE, c); + fprint(f, " { "); + } else { + fprint(f, " { "); + } + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s, c); + } + if (i) { + fprint(f, " }"); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, " (SIZE("); + } else { + fprint(f, " ("); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s, 0); + } + if (i) { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, ")"); + } + fprint(f, ")"); + } + } +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement, *smiFirstElement; + int n, j; + + for (n = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + n++, smiElement = smiGetNextElement(smiElement)); + if (pibtomib && (n > 1)) + smiFirstElement = smiGetNextElement(smiGetFirstElement(indexNode)); + else + smiFirstElement = smiGetFirstElement(indexNode); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0, smiElement = smiFirstElement; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + if (indexNode->implied && ((j+1) == n)) { + fprintWrapped(f, INDENTVALUE + 2, "IMPLIED ", 0); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintImports(FILE *f) +{ + Import *import; + char *lastModulename = NULL; + char *importedModulename, *importedDescriptor; + int i; + char **convertImport; + + convertImport = smiv1 ? convertImportv1 : convertImportv2; + + for(import = importList; import; import = import->nextPtr) { + importedModulename = import->module; + importedDescriptor = import->name; + + if (!strlen(importedModulename)) + continue; + + for(i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(importedModulename, convertImport[i]) + && !strcmp(importedDescriptor, convertImport[i+1])) { + importedModulename = convertImport[i+2]; + importedDescriptor = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(importedModulename, convertImport[i])) { + importedModulename = convertImport[i+2]; + break; + } + } + + if (importedModulename && importedDescriptor && + strlen(importedDescriptor)) { + if ((!lastModulename) || + strcmp(importedModulename, lastModulename)) { + if (!lastModulename) { + fprint(f, "IMPORTS"); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s", lastModulename); + } + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0, 0); + } else { + fprint(f, ", "); + } + fprintWrapped(f, INDENT, importedDescriptor, 0); + lastModulename = importedModulename; + } + } + if (lastModulename) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s;\n\n", lastModulename); + } +} + + + +static void fprintModuleIdentity(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + if (smiv1 && smiNode) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s MODULE-IDENTITY\n", smiNode->name); + } else { + fprint(f, "%s MODULE-IDENTITY\n", smiNode->name); + } + fprintSegment(f, INDENT, "LAST-UPDATED", INDENTVALUE, smiv1); + smiRevision = smiGetFirstRevision(smiModule); + if (smiRevision) + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + else + fprint(f, "\"197001010000Z\"\n"); + fprintSegment(f, INDENT, "ORGANIZATION", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization, smiv1); + fprint(f, "\n"); + fprintSegment(f, INDENT, "CONTACT-INFO", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo, smiv1); + fprint(f, "\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiModule->description) { + fprintMultilineString(f, smiModule->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (!smiRevision->description + || strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION", INDENTVALUE, smiv1); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + smiv1); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description, + smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + if (smiNode) { + fprintSegment(f, INDENT, "::= ", 0, smiv1); + if (!pibtomib) + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + else + fprint(f, "{ ibrpibtomib %d }\n\n", + smiNode->oid[smiNode->oidlen - 1]); + } + /* TODO: else error */ + + fprint(f, "\n"); + } + } +} + + + +static void fprintTypeDefinition(FILE *f, SmiType *smiType) +{ + int invalid; + + if (smiType->status == SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (invalid) { + fprint(f, "-- %s ::=\n", smiType->name); + } else { + fprint(f, "%s ::=\n", smiType->name); + } + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } +} + + + +static void fprintTypeDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + fprintTypeDefinition(f, smiType); + } +} + + + +static void fprintTextualConvention(FILE *f, SmiType *smiType) +{ + SmiType *baseType; + SmiModule *baseModule; + int i, invalid; + + char *smiv2basetypes[] = { + "SNMPv2-SMI", "IpAddress", + "SNMPv2-SMI", "Counter32", + "SNMPv2-SMI", "Gauge32", + "SNMPv2-SMI", "TimeTicks", + "SNMPv2-SMI", "Counter64", + NULL, NULL + }; + + if (smiType->status != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (smiv1 && !invalid) { + fprint(f, "%s ::=\n", smiType->name); + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + + if (! smiv1 || ! silent) { + + if (smiv1 || invalid) { + fprint(f, "-- %s ::= TEXTUAL-CONVENTION\n", smiType->name); + } else { + fprint(f, "%s ::= TEXTUAL-CONVENTION\n", smiType->name); + } + + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\"%s\"\n", smiType->format); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, + smiv1 || invalid); + fprint(f, "%s\n", getStatusString(smiType->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + if (smiType->description) { + fprintMultilineString(f, smiType->description, + smiv1 || invalid); + } else { + fprintMultilineString(f, "...", smiv1 || invalid); + } + fprint(f, "\n"); + + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference, + smiv1 || invalid); + fprint(f, "\n"); + } + + for (baseType = smiGetParentType(smiType); + baseType; + baseType = smiGetParentType(baseType)) { + SmiType *parent = smiGetParentType(baseType); + + baseModule = smiGetTypeModule(baseType); + if (baseModule && baseModule->name) { + for (i = 0; smiv2basetypes[i]; i += 2) { + if (strcmp(smiv2basetypes[i+1], baseType->name) == 0 + && strcmp(smiv2basetypes[i], baseModule->name) == 0) { + parent = NULL; + } + } + } + + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, + smiv1 || invalid || parent); + fprint(f, "%s", + getTypeString(baseType->basetype, baseType)); + fprintSubtype(f, smiType, smiv1 || invalid || parent); + if (parent) { + fprintf(f, "\n"); + } + if (!parent) break; + } + fprint(f, "\n\n"); + } + } +} + + + +static void fprintTextualConventions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + fprintTextualConvention(f, smiType); + } +} + + +static int isInIndex(SmiNode *node, SmiNode *parentNode) +{ + SmiElement *element; + + if ((parentNode->indexkind != SMI_INDEX_INDEX) && + (parentNode->indexkind != SMI_INDEX_EXPAND)) + return 0; + + for (element = smiGetNextElement(smiGetFirstElement(parentNode)); element; + element = smiGetNextElement(element)) + if (smiGetElementNode(element)->name && + node->name && + !strcmp(smiGetElementNode(element)->name, node->name)) + return 1; + return 0; +} + + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *rowNode, *colNode, *smiParentNode, *relatedNode; + SmiType *smiType; + SmiNodekind nodekinds; + int i, invalid, create, assignement, indentsequence, addrowstatus; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for(smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + smiType = smiGetNodeType(smiNode); + smiParentNode = smiGetParentNode(smiNode); + + create = smiParentNode ? smiParentNode->create : 0; + + invalid = !smiType ? 0 : invalidType(smiType->basetype); + assignement = 0; + + if (invalid && silent + && (smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN)) { + continue; + } + + if (smiNode == smiGetModuleIdentityNode(smiModule)) { + continue; + } + + if ((smiNode->nodekind == SMI_NODEKIND_NODE) && + (smiNode->status == SMI_STATUS_UNKNOWN)) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else if (smiNode->nodekind == SMI_NODEKIND_NODE) { + if (smiv1) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + /* TODO: real agent capabilities */ + fprint(f, "-- This has been an SMIv2 AGENT-CAPABILITIES node:\n"); + if (smiv1) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } + } else { + if (invalid) { + fprint(f, "-- %s OBJECT-TYPE\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-TYPE\n", smiNode->name); + } + } + + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW) || + (smiType)) { + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, invalid); + if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprint(f, "SEQUENCE OF "); + rowNode = smiGetFirstChildNode(smiNode); + if (rowNode) { + smiType = smiGetNodeType(rowNode); + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(rowNode->name); + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else { + fprint(f, "\n"); + } + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + char *s = getUppercaseString(smiNode->name); + /* guess type name is uppercase row name */ + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else if (smiType) { + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n"); + } else { + fprint(f, "%s\n", + getTypeString(smiType->basetype, smiType)); + } + } + } + + if (! assignement && smiNode->units) { + fprintSegment(f, INDENT, "UNITS", INDENTVALUE, smiv1 || invalid); + fprint(f, "\"%s\"\n", smiNode->units); + } + + if (! assignement && + smiNode->nodekind != SMI_NODEKIND_CAPABILITIES && + smiNode->nodekind != SMI_NODEKIND_NODE) { + if (smiv1) { + fprintSegment(f, INDENT, "ACCESS", INDENTVALUE, invalid); + } else { + fprintSegment(f, INDENT, "MAX-ACCESS", INDENTVALUE, 0); + } + if (pibtomib) { + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW)) + fprint(f, "not-accessible\n"); + else if ((smiNode->nodekind == SMI_NODEKIND_COLUMN) && + isInIndex(smiNode, smiParentNode)) + fprint(f, "not-accessible\n"); + else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) + fprint(f, "read-create\n"); + else + fprint(f, "%s\n", getAccessString(smiNode->access, create)); + } else + fprint(f, "%s\n", getAccessString(smiNode->access, create)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, invalid); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, invalid); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + } + + if (! assignement && smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1 || invalid); + fprint(f, "\n"); + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_AUGMENT: + if (smiv1 && ! invalid) { + if (relatedNode) { + fprintIndex(f, relatedNode, invalid); + } + } + if ((! smiv1 || ! silent) && relatedNode) { + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, + smiv1 || invalid); + fprint(f, "{ %s }\n", relatedNode->name); + } + break; + case SMI_INDEX_SPARSE: + if (! invalid) { + while (relatedNode && + (relatedNode->indexkind == SMI_INDEX_SPARSE)) + relatedNode = smiGetRelatedNode(relatedNode); + if (relatedNode) { + fprintIndex(f, relatedNode, invalid); + } + } + /* TODO: non-local name if non-local */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, INDENT, "DEFVAL", INDENTVALUE, invalid); + fprint(f, "{ %s }", getValueString(&smiNode->value, smiType)); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, invalid); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + + smiType = smiGetNodeType(smiNode); + addrowstatus = 0; + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (pibtomib) + addrowstatus = 1; + if (smiType) { + fprint(f, "%s ::= SEQUENCE {", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(smiNode->name); + fprint(f, "%s ::= SEQUENCE {", s); + xfree(s); + } + /* Find the last valid node in this sequence. We need it + * to suppress its trailing comma. Compute the longest + * column name so that we can adjust the indentation of + * the type names in the SEQUENCE definition. */ + for(indentsequence = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + int len = strlen(colNode->name); + if (len > indentsequence) indentsequence = len; + smiType = smiGetNodeType(colNode); + if (smiType && !invalidType(smiType->basetype)) { + relatedNode = colNode; + } + } + if (pibtomib) { + int len = strlen(smiParentNode->name) + 9; + if (len > 64) + len = 64; + indentsequence = len; + } + if (relatedNode) relatedNode = smiGetNextChildNode(relatedNode); + indentsequence = (2*INDENT + indentsequence + 1) / INDENT * INDENT; + /* TODO: non-local name? */ + for(i = 0, invalid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + if (! invalid || ! silent) { + if (i && (relatedNode != colNode)) { + fprint(f, ","); + } + fprint(f, "\n"); + } + + smiType = smiGetNodeType(colNode); + invalid = (smiType == NULL) || invalidType(smiType->basetype); + + if (! invalid || ! silent) { + fprintSegment(f, INDENT, colNode->name, indentsequence, + invalid); + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + } else if (smiType) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetNodeType(colNode))); + } else { + fprint(f, ""); + } + } + i++; + } + if (pibtomib) { + size_t len = strlen(smiParentNode->name); + int maxid; + char *rowStatus = xmalloc(len + 10); + strcpy(rowStatus, smiParentNode->name); + if (len > 55) + len = 55; + strcpy(&rowStatus[len], "RowStatus"); + fprint(f, ",\n"); + fprintSegment(f, INDENT, rowStatus, indentsequence, 0); + fprint(f, "RowStatus\n}\n\n"); + + fprint(f, "%s OBJECT-TYPE\n", rowStatus); + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, 0); + fprint(f, "RowStatus\n"); + fprintSegment(f, INDENT, "MAX-ACCESS", INDENTVALUE, 0); + fprint(f, "read-create\n"); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "PIB to MIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + for (maxid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; colNode = smiGetNextChildNode(colNode)) + if (colNode->oidlen && + (colNode->oid[colNode->oidlen - 1] > maxid)) + maxid = colNode->oid[colNode->oidlen - 1]; + fprint(f, "{ %s %d }\n\n", + smiGetFirstChildNode(smiParentNode)->name, + (maxid + 1) > 128 ? (maxid + 1) : 128); + xfree(rowStatus); + } else + fprint(f, "\n}\n\n"); + } + } +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiElement *smiElement; + int j; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (smiv1) { + fprint(f, "%s TRAP-TYPE\n", smiNode->name); + parentNode = smiGetParentNode(smiNode); + while ((parentNode->oidlen > 0) && + ((!parentNode->name) || + (!parentNode->oid[parentNode->oidlen-1]))) { + parentNode = smiGetParentNode(parentNode); + } + fprintSegment(f, INDENT, "ENTERPRISE", INDENTVALUE, 0); + fprint(f, "%s\n", parentNode->name); + } else { + fprint(f, "%s NOTIFICATION-TYPE\n", smiNode->name); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + if (smiv1) { + fprintSegment(f, INDENT, "VARIABLES", INDENTVALUE, 0); + } else { + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + } + fprint(f, "{ "); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + } + + if (! smiv1 || ! silent) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, 0); + if (smiv1) { + fprint(f, "%d\n\n", smiNode->oid[smiNode->oidlen-1]); + } else { + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int j, objectGroup = 0, notificationGroup = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + objectGroup = isObjectGroup(smiNode); + if (! objectGroup) { + notificationGroup = isNotificationGroup(smiNode); + } + + if (smiv1 || (!objectGroup && !notificationGroup)) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (!objectGroup && !notificationGroup) { + continue; + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s %s\n", smiNode->name, + objectGroup ? "OBJECT-GROUP" : "NOTIFICATION-GROUP"); + } else { + fprint(f, "%s %s\n", smiNode->name, + objectGroup ? "OBJECT-GROUP" : "NOTIFICATION-GROUP"); + } + + if (objectGroup) { + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, smiv1); + } else { + fprintSegment(f, INDENT, "NOTIFICATIONS", INDENTVALUE, smiv1); + } + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, smiv1); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, smiv1); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } +} + + + +static void fprintModuleCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + char *module; + char *done = NULL; /* "+" separated list of module names */ + char s[1024]; + int j; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (smiv1) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s MODULE-COMPLIANCE\n", smiNode->name); + } else { + fprint(f, "%s MODULE-COMPLIANCE\n", smiNode->name); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + /* `this module' always first */ + done = xstrdup("+"); + for (module = smiModule->name; module; ) { + + fprint(f, "\n"); + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, smiv1); + if (strlen(module) && strcmp(smiModule->name, module)) { + fprint(f, "%s\n", module); + } else { + if (smiv1) { + fprint(f, "-- -- this module\n"); + } else { + fprint(f, "-- this module\n"); + } + } + + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode(smiElement))->name, module)) { + if (j) { + fprint(f, ", "); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", + INDENTVALUE, smiv1); + fprint(f, "{ "); + } + j++; + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, + smiv1); + } + } + if (j) { + fprint(f, " }\n"); + } + + for(smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "GROUP", + INDENTVALUE, smiv1); + fprint(f, "%s\n", smiNode2->name); + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiOption->description) { + fprintMultilineString2(f, smiOption->description, + smiv1); + } else { + fprintMultilineString2(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "OBJECT", + INDENTVALUE, smiv1); + fprint(f, "%s\n", smiNode2->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "SYNTAX", INDENTVALUE, + smiv1); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, smiv1); + fprint(f, "\n"); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "WRITE-SYNTAX", + INDENTVALUE, smiv1); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, smiv1); + fprint(f, "\n"); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "MIN-ACCESS", + INDENTVALUE, smiv1); + fprint(f, "%s\n", + getAccessString(smiRefinement->access, 0)); + /* we assume, that read-create does not appear in + * an OT refinement. + */ + } + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiRefinement->description) { + fprintMultilineString2(f, + smiRefinement->description, + smiv1); + } else { + fprintMultilineString2(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + /* + * search the next module name in the list of mandatory + * groups, optional groups and refinements. + */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", + smiGetNodeModule(smiGetElementNode(smiElement))->name); + if ((!strstr(done, s))) { + module = + smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + if (!module) { + ; /* TODO: search in options list */ + } + if (!module) { + ; /* TODO: search in refinements list */ + } + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, smiv1); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } + xfree(done); +} + + + +static void dumpSmi(FILE *f, SmiModule *smiModule, int flags) +{ + if (smiModule->language == SMI_LANGUAGE_SPPI) /* PIB to MIB conversion */ + pibtomib = 1; + else + pibtomib = 0; + + createImportList(smiModule); + + fprint(f, "--\n"); + fprint(f, "-- This %s module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n", smiv1 ? "SMIv1" : "SMIv2"); + fprint(f, "--\n\n"); + if (pibtomib && smiv1) { + fprint(f, "--\n"); + fprint(f, "-- WARNING: SPPI to SMIv1 conversion is not explicitly " \ + "supported.\n"); + fprint(f, "-- Expect flawed output.\n"); + fprint(f, "--\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "--\n-- WARNING: this output may be incorrect due to " + "significant parse errors\n--\n\n"); + } + fprint(f, "%s%s DEFINITIONS ::= BEGIN\n\n", smiModule->name, + (pibtomib ? "-MIB" : "")); + + fprintImports(f); + fprintModuleIdentity(f, smiModule); + fprintTypeDefinitions(f, smiModule); + fprintTextualConventions(f, smiModule); + fprintObjects(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintModuleCompliances(f, smiModule); + + fprint(f, "END -- end of module %s%s.\n", smiModule->name, + (pibtomib ? "-MIB" : "")); + + freeImportList(); +} + + +static void dumpSmiV1(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + smiv1 = 1; + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpSmi(f, modv[i], flags); + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + } + + if (output) { + fclose(f); + } +} + + +static void dumpSmiV2(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + smiv1 = 0; + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpSmi(f, modv[i], flags); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSmi() +{ + static SmidumpDriver driver1 = { + "smiv1", + dumpSmiV1, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIv1 (RFC 1155, RFC 1212, RFC 1215)", + NULL, + NULL + }; + + static SmidumpDriver driver2 = { + "smiv2", + dumpSmiV2, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIv2 (RFC 2578, RFC 2579, RFC 2580)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver1); + smidumpRegisterDriver(&driver2); +} diff --git a/tools/dump-sming.c b/tools/dump-sming.c new file mode 100644 index 0000000..181001a --- /dev/null +++ b/tools/dump-sming.c @@ -0,0 +1,1695 @@ +/* + * dump-sming.c -- + * + * Operations to dump SMIng module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-sming.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 2 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +static char *excludeType[] = { + "ObjectSyntax", + "SimpleSyntax", + "ApplicationSyntax", + NULL }; + +static char *convertType[] = { + "INTEGER", "Integer32", + "OCTET STRING", "OctetString", + "OBJECT IDENTIFIER", "Pointer", + + "Gauge", "Gauge32", + "Counter", "Counter32", + "NetworkAddress", "IpAddress", /* ??? */ + + NULL, NULL }; + +static char *convertImport[] = { + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + "SNMPv2-SMI", "ObjectName", NULL, NULL, + "SNMPv2-SMI", "NotificationName", NULL, NULL, + "SNMPv2-SMI", "ObjectSyntax", NULL, NULL, + "SNMPv2-SMI", "SimpleSyntax", NULL, NULL, + "SNMPv2-SMI", "Integer32", NULL, NULL, + "SNMPv2-SMI", "Unsigned32", NULL, NULL, + "SNMPv2-SMI", "ApplicationSyntax", NULL, NULL, + "SNMPv2-SMI", "IpAddress", "IRTF-NMRG-SMING", "IpAddress", + "SNMPv2-SMI", "Counter32", "IRTF-NMRG-SMING", "Counter32", + "SNMPv2-SMI", "TimeTicks", "IRTF-NMRG-SMING", "TimeTicks", + "SNMPv2-SMI", "Opaque", "IRTF-NMRG-SMING", "Opaque", + "SNMPv2-SMI", "Counter64", "IRTF-NMRG-SMING", "Counter64", + "SNMPv2-SMI", "Gauge32", "IRTF-NMRG-SMING", "Gauge32", + "SNMPv2-SMI", "mib-2", "IRTF-NMRG-SMING-SNMP", "mib-2", + + "SNMPv2-TC", "TimeStamp", "IRTF-NMRG-SMING", "TimeStamp", + "SNMPv2-TC", "TimeInterval", "IRTF-NMRG-SMING", "TimeInterval", + "SNMPv2-TC", "DateAndTime", "IRTF-NMRG-SMING", "DateAndTime", + "SNMPv2-TC", "TruthValue", "IRTF-NMRG-SMING", "TruthValue", + "SNMPv2-TC", "PhysAddress", "IRTF-NMRG-SMING", "PhysAddress", + "SNMPv2-TC", "MacAddress", "IRTF-NMRG-SMING", "MacAddress", + "SNMPv2-TC", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "SNMPv2-TC", "TestAndIncr", "IRTF-NMRG-SMING-SNMP", "TestAndIncr", + "SNMPv2-TC", "AutonomousType", "IRTF-NMRG-SMING-SNMP", "AutonomousType", + "SNMPv2-TC", "VariablePointer", "IRTF-NMRG-SMING-SNMP", "VariablePointer", + "SNMPv2-TC", "RowPointer", "IRTF-NMRG-SMING-SNMP", "RowPointer", + "SNMPv2-TC", "RowStatus", "IRTF-NMRG-SMING-SNMP", "RowStatus", + "SNMPv2-TC", "StorageType", "IRTF-NMRG-SMING-SNMP", "StorageType", + "SNMPv2-TC", "TDomain", "IRTF-NMRG-SMING-SNMP", "TDomain", + "SNMPv2-TC", "TAddress", "IRTF-NMRG-SMING-SNMP", "TAddress", + "SNMPv2-SMI", NULL, "IRTF-NMRG-SMING", NULL, + "SNMPv2-TC", "TEXTUAL-CONVENTION", NULL, NULL, + "SNMPv2-TC", NULL, "IRTF-NMRG-SMING-TYPES", NULL, + "SNMPv2-CONF", "OBJECT-GROUP", NULL, NULL, + "SNMPv2-CONF", "NOTIFICATION-GROUP", NULL, NULL, + "SNMPv2-CONF", "MODULE-COMPLIANCE", NULL, NULL, + "SNMPv2-CONF", "AGENT-CAPABILITIES", NULL, NULL, + + "RFC1155-SMI", "OBJECT-TYPE", NULL, NULL, + "RFC1155-SMI", "ObjectName", NULL, NULL, + "RFC1155-SMI", "ObjectSyntax", NULL, NULL, + "RFC1155-SMI", "SimpleSyntax", NULL, NULL, + "RFC1155-SMI", "ApplicationSyntax", NULL, NULL, + "RFC1155-SMI", "Gauge", "IRTF-NMRG-SMING-TYPES", "Gauge32", + "RFC1155-SMI", "Counter", "IRTF-NMRG-SMING-TYPES", "Counter32", + "RFC1155-SMI", "TimeTicks", "IRTF-NMRG-SMING-TYPES", "TimeTicks", + "RFC1155-SMI", "IpAddress", "IRTF-NMRG-SMING-TYPES", "IpAddress", + "RFC1155-SMI", "NetworkAddress", NULL, NULL, /* ??? */ + "RFC1155-SMI", "Opaque", "IRTF-NMRG-SMING", "Opaque", + "RFC1155-SMI", NULL, "IRTF-NMRG-SMING", NULL, + "RFC1158-MIB", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "RFC-1212", "OBJECT-TYPE", NULL, NULL, + "RFC1213-MIB", "mib-2", "IRTF-NMRG-SMING-SNMP", "mib-2", + "RFC1213-MIB", "system", "SNMPv2-MIB", "system", + "RFC1213-MIB", "interfaces", "IF-MIB", "interfaces", +/* "RFC1213-MIB", "at", "RFC1213-MIB", "at", */ + "RFC1213-MIB", "ip", "IP-MIB", "ip", + "RFC1213-MIB", "icmp", "IP-MIB", "icmp", + "RFC1213-MIB", "tcp", "TCP-MIB", "tcp", + "RFC1213-MIB", "udp", "UDP-MIB", "udp", +/* "RFC1213-MIB", "egp", "RFC1213-MIB", "egp", */ + "RFC1213-MIB", "transmission", "SNMPv2-SMI", "transmission", + "RFC1213-MIB", "snmp", "SNMPv2-MIB", "snmp", + "RFC1213-MIB", "sysDescr", "SNMPv2-MIB", "sysDescr", + "RFC1213-MIB", "sysObjectID", "SNMPv2-MIB", "sysObjectID", + "RFC1213-MIB", "sysUpTime", "SNMPv2-MIB", "sysUpTime", + "RFC1213-MIB", "ifIndex", "IF-MIB", "ifIndex", +/* TODO ...many more objects from RFC1213-MIB.. */ + "RFC1213-MIB", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "RFC1213-MIB", "PhysAddress", "IRTF-NMRG-SMING", "PhysAddress", + "RFC-1215", "TRAP-TYPE", NULL, NULL, + + + + + /* TODO: how to convert more SMIv1 information? */ + + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int silent = 0; + + +/* + * Structure used to build a list of imported types. + */ + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + if ((!typeModule) && (typeName) && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + for(i=0; convertType[i]; i += 2) { + if (!strcmp(typeName, convertType[i])) { + return convertType[i+1]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "Enumeration"; + } + if (basetype == SMI_BASETYPE_BITS) { + return "Bits"; + } + } + + if (!typeName) { + return getStringBasetype(basetype); + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, ".%u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + int i; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiTypeModule; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if (islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char s[200]; + char *p; + + va_start(ap, fmt); +#ifdef HAVE_VSNPRINTF + current_column += vsnprintf(s, sizeof(s), fmt, ap); +#else + current_column += vsprintf(s, fmt, ap); /* buffer overwrite */ +#endif + va_end(ap); + + fputs(s, f); + + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, len; + + fprintSegment(f, column - 1 + INDENTTEXTS, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, column + INDENTTEXTS, "", 0); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[100]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + sprintf(s, "%G", valuePtr->value.float32); + break; + case SMI_BASETYPE_FLOAT64: + sprintf(s, "%lG", valuePtr->value.float64); + break; + case SMI_BASETYPE_FLOAT128: + sprintf(s, "%LG", valuePtr->value.float128); + break; + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.integer32 == valuePtr->value.integer32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + /* if (nn->value.value.unsigned64 == ((i/8)*8 + (7-(i%8)))) */ + if (nn->value.value.unsigned64 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(&s[strlen(s)], "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /*nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + }*/ + sprintf(s, "%s", typePtr->value.value.ptr); + break; + case SMI_BASETYPE_POINTER: + /*nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + }*/ + sprintf(s, "%s", valuePtr->value.ptr); + break; + default: + sprintf(s, "%s", ""); + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[100]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + fprint(f, " ("); + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } else if(smiType->basetype == SMI_BASETYPE_POINTER) { + nn = smiGetFirstNamedNumber(smiType); + if(nn) + fprint(f, " (%s)",nn->name); + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " ("); + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } +} + +static void fprintAttributeSubtype(FILE *f, SmiAttribute *smiAttribute) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[100]; + int i; + + if ((smiAttribute->basetype == SMI_BASETYPE_ENUM) || + (smiAttribute->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetAttributeFirstNamedNumber(smiAttribute); + nn ; i++, nn = smiGetAttributeNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + fprint(f, " ("); + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiGetAttributeParentType(smiAttribute))); + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } else if(smiAttribute->basetype == SMI_BASETYPE_POINTER) { + nn = smiGetAttributeFirstNamedNumber(smiAttribute); + if(nn) + fprint(f, " (%s)",nn->name); + } else { + for(i = 0, range = smiGetAttributeFirstRange(smiAttribute); + range ; i++, range = smiGetAttributeNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " ("); + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiGetAttributeParentType(smiAttribute))); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiGetAttributeParentType(smiAttribute))); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiGetAttributeParentType(smiAttribute))); + } + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *import; + char *lastModuleName = NULL; + int pos = 0, len, maxlen = 0; + + createImportList(smiModule); + + for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) { + len = strlen(import->module); + maxlen = (len > maxlen) ? len : maxlen; + } + + for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) { + int yaba = !lastModuleName || strcmp(import->module, lastModuleName); + if (yaba) { + if (lastModuleName) { + fprint(f, ");\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "import %-*s (", maxlen, import->module); + pos = INDENT + 12 + maxlen; + } else { + fprint(f, ", "); + } + len = strlen(import->name); + if (len + pos > INDENTMAX) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0); + fprintSegment(f, INDENT, "", 0); + fprint(f, " %-*s ", maxlen, ""); + pos = INDENT + 12 + maxlen; + } + fprint(f, "%s", import->name); + pos += len; + lastModuleName = import->module; + } + + if (lastModuleName) { + fprintf(f, ");\n"); + } + + fprint(f, "\n"); + + freeImportList(); +} + + + + +static void fprintRevisions(FILE *f, SmiModule *smiModule) +{ + int i; + SmiRevision *smiRevision; + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, INDENT, "revision {\n", 0); + fprintSegment(f, 2 * INDENT, "date", INDENTVALUE); + fprint(f, "\"%s\";\n", getStringTime(smiRevision->date)); + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiRevision->description); + fprint(f, ";\n"); + fprintSegment(f, INDENT, "};\n", 0); + i++; + } + if (i) { + fprint(f, "\n"); + } +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + if ((!(strcmp(smiModule->name, "SNMPv2-SMI"))) || + (!(strcmp(smiModule->name, "RFC1155-SMI")))) { + for(j=0; excludeType[j]; j++) { + if (!strcmp(smiType->name, excludeType[j])) break; + } + if (excludeType[j]) break; + } + + if (!i && !silent) { + fprint(f, "//\n// TYPE DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "typedef %s {\n", smiType->name); + + fprintSegment(f, 2 * INDENT, "type", INDENTVALUE); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + + if (smiType->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiType->value, smiType)); + fprint(f, ";\n"); + } + + if (smiType->format) { + fprintSegment(f, 2 * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n", smiType->format); + } + if (smiType->units) { + fprintSegment(f, 2 * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiType->units); + } + if ((smiType->status != SMI_STATUS_UNKNOWN) && + (smiType->status != SMI_STATUS_MANDATORY) && + (smiType->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiType->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiType->description); + fprint(f, ";\n"); + if (smiType->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiType->reference); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintIdentities(FILE *f, SmiModule *smiModule) +{ + int i; + SmiIdentity *smiIdentity; + SmiIdentity *tmpIdentity; + + for(i = 0, smiIdentity = smiGetFirstIdentity(smiModule); + smiIdentity; smiIdentity = smiGetNextIdentity(smiIdentity)) { + + if (!i && !silent) { + fprint(f, "//\n// IDENTITY DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "identity %s {\n", smiIdentity->name); + + tmpIdentity = smiGetParentIdentity(smiIdentity); + if (tmpIdentity) { + fprintSegment(f, 2 * INDENT, "parent", INDENTVALUE); + fprint(f, "%s", tmpIdentity->name); + fprint(f, ";\n"); + } + + if ((smiIdentity->status != SMI_STATUS_UNKNOWN) && + (smiIdentity->status != SMI_STATUS_MANDATORY) && + (smiIdentity->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiIdentity->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiIdentity->description); + fprint(f, ";\n"); + if (smiIdentity->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiIdentity->reference); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintExtensions(FILE *f, SmiModule *smiModule) +{ + int i; + SmiMacro *smiMacro; + + for(i = 0, smiMacro = smiGetFirstMacro(smiModule); + smiMacro; smiMacro = smiGetNextMacro(smiMacro)) { + + if (!i && !silent) { + fprint(f, "//\n// EXTENSION DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "extension %s {\n", smiMacro->name); + + if ((smiMacro->status != SMI_STATUS_UNKNOWN) && + (smiMacro->status != SMI_STATUS_MANDATORY) && + (smiMacro->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiMacro->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->description); + fprint(f, ";\n"); + if (smiMacro->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->reference); + fprint(f, ";\n"); + } + + if(smiMacro->abnf) { + fprintSegment(f, 2 * INDENT, "abnf", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->abnf); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintUniqueStatement(FILE *f, SmiClass *smiClass) +{ + SmiAttribute *attributePtr; + int i; + + if(smiIsClassScalar(smiClass)) + { + fprintSegment(f, 2 * INDENT, "unique", INDENTVALUE); + fprint(f, "();\n"); + } + + attributePtr = smiGetFirstUniqueAttribute(smiClass); + if (attributePtr) { + fprintSegment(f, 2 * INDENT, "unique", INDENTVALUE); + fprint(f, "("); + for (i=0; attributePtr; + attributePtr = smiGetNextUniqueAttribute(attributePtr)) + { + if (i) { + fprint(f, ", %s",attributePtr->name); + } else { + fprint(f, "%s",attributePtr->name); + } + i++; + } + fprint(f, ");\n\n"); + } +} +static void fprintAttributes(FILE *f, SmiClass *smiClass) +{ + int i; + SmiAttribute *smiAttribute; + SmiType *tmpType; + SmiClass *tmpClass; + + for (i = 0, smiAttribute = smiGetFirstAttribute(smiClass); + smiAttribute; smiAttribute = smiGetNextAttribute(smiAttribute)) { + + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "attribute %s {\n", smiAttribute->name); + + tmpType = smiGetAttributeParentType(smiAttribute); + if (tmpType) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s ", tmpType->name); + fprintAttributeSubtype(f, smiAttribute); + fprint(f, ";\n"); + fprintSegment(f, 3 * INDENT, "access", INDENTVALUE); + switch (smiAttribute->access) { + case SMI_ACCESS_READ_ONLY: + fprint(f, "readonly;\n"); + break; + case SMI_ACCESS_READ_WRITE: + fprint(f, "readwrite;\n"); + break; + case SMI_ACCESS_EVENT_ONLY: + fprint(f, "eventonly;\n"); + break; + default: + fprint(f, ";\n"); + break; + } + + if (smiAttribute->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, 3 * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiAttribute->value, smiGetAttributeParentType(smiAttribute))); + fprint(f, ";\n"); + } + + if (smiAttribute->format) { + fprintSegment(f, 3 * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n", smiAttribute->format); + } + if (smiAttribute->units) { + fprintSegment(f, 3 * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiAttribute->units); + } + } + + tmpClass = smiGetAttributeParentClass(smiAttribute); + if (tmpClass) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s;\n", tmpClass->name); + } + + if ((smiAttribute->status != SMI_STATUS_UNKNOWN) && + (smiAttribute->status != SMI_STATUS_MANDATORY) && + (smiAttribute->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 3 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiAttribute->status)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiAttribute->description); + fprint(f, ";\n"); + if (smiAttribute->reference) { + fprintSegment(f, 3 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiAttribute->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, 2*INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintEvents(FILE *f, SmiClass *smiClass) +{ + int i; + SmiEvent *smiEvent; + + for(i = 0, smiEvent = smiGetFirstEvent(smiClass); + smiEvent; smiEvent = smiGetNextEvent(smiEvent)) { + /* + if (!i && !silent) { + fprint(f,"\n"); + fprintSegment(f, 2 * INDENT, "// ATTRIBUTE DEFINITIONS\n\n",0); + }*/ + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "event %s {\n", smiEvent->name); + + if ((smiEvent->status != SMI_STATUS_UNKNOWN) && + (smiEvent->status != SMI_STATUS_MANDATORY) && + (smiEvent->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 3 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiEvent->status)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiEvent->description); + fprint(f, ";\n"); + if (smiEvent->reference) { + fprintSegment(f, 3 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiEvent->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, 2*INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintClasses(FILE *f, SmiModule *smiModule) +{ + int i; + SmiClass *smiClass; + SmiClass *tmpClass; + + for (i = 0, smiClass = smiGetFirstClass(smiModule); + smiClass; smiClass = smiGetNextClass(smiClass)) { + + if (!i && !silent) { + fprint(f, "//\n// CLASS DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "class %s {\n", smiClass->name); + + tmpClass = smiGetParentClass(smiClass); + if (tmpClass) { + fprintSegment(f, 2 * INDENT, "extends", INDENTVALUE); + fprint(f, "%s;\n\n", tmpClass->name); + } + + fprintAttributes(f,smiClass); + + fprintUniqueStatement(f,smiClass); + + fprintEvents(f,smiClass); + + if ((smiClass->status != SMI_STATUS_UNKNOWN) && + (smiClass->status != SMI_STATUS_MANDATORY) && + (smiClass->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiClass->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiClass->description); + fprint(f, ";\n"); + if (smiClass->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiClass->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode, *relatedNode; + SmiElement *smiElement; + SmiType *smiType; + int indent = 0; + int lastindent = -1; + char *s = NULL; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + indent = 0; + s = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + indent = 0; + s = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + indent = 0; + s = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + indent = 1; + s = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + indent = 2; + s = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + indent = 0; + s = "scalar"; + } + + if (!i && !silent) { + fprint(f, "//\n// OBJECT DEFINITIONS\n//\n\n"); + } + + for (j = lastindent; j >= indent; j--) { + fprintSegment(f, (1 + j) * INDENT, "", 0); + fprint(f, "};\n"); + } + fprint(f, "\n"); + lastindent = indent; + + if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "-- This has been an SMIv2 AGENT-CAPABILITIES node:\n"); + } + + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "%s %s {\n", s, smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, (2 + indent) * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, (2 + indent) * INDENT, "type", INDENTVALUE); + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } else { + fprint(f, "%s;\n", + getTypeString(smiType->basetype, smiType)); + } + } + + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + if (smiNode->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, (2 + indent) * INDENT, "access", INDENTVALUE); + fprint(f, "%s;\n", getAccessString(smiNode->access)); + } + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + if (smiNode->implied) { + fprintSegment(f, (2 + indent) * INDENT, "index implied", + INDENTVALUE); + } else { + fprintSegment(f, (2 + indent) * INDENT, "index", INDENTVALUE); + } + fprint(f, "("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "augments", + INDENTVALUE); + fprint(f, "%s;\n", relatedNode->name); + /* TODO: non-local name if non-local */ + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "", 0); + fprint(f, "reorders %s", relatedNode->name); + /* TODO: non-local name if non-local */ + if (smiNode->implied) { + fprint(f, " implied"); + } + fprint(f, " ("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "sparse", INDENTVALUE); + fprint(f, "%s;\n", relatedNode->name); + /* TODO: non-local name if non-local */ + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "", 0); + fprint(f, "expands %s", relatedNode->name); + /* TODO: non-local name if non-local */ + if (smiNode->implied) { + fprint(f, " implied"); + } + fprint(f, " ("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiNode->create) { + fprintSegment(f, (2 + indent) * INDENT, "create", INDENTVALUE); + /* TODO: create list */ + fprint(f, ";\n"); + } + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, (2 + indent) * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiNode->value, smiType)); + fprint(f, ";\n"); + } + + if (smiNode->format) { + fprintSegment(f, (2 + indent) * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n",smiNode->format); + } + if (smiNode->units) { + fprintSegment(f, (2 + indent) * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiNode->units); + } + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, (2 + indent) * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + if (smiNode->description) { + fprintSegment(f, (2 + indent) * INDENT, "description", + INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, (2 + indent) * INDENT, + smiNode->description); + fprint(f, ";\n"); + } + if (smiNode->reference) { + fprintSegment(f, (2 + indent) * INDENT, "reference", + INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, (2 + indent) * INDENT, + smiNode->reference); + fprint(f, ";\n"); + } + i++; + } + + if (i) { + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "};\n\n"); + } +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (!i && !silent) { + fprint(f, "//\n// NOTIFICATION DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "notification %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + fprintSegment(f, 2 * INDENT, "objects", INDENTVALUE); + fprint(f, "("); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (!i && !silent) { + fprint(f, "//\n// GROUP DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "group %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + fprintSegment(f, 2 * INDENT, "members", INDENTVALUE); + fprint(f, "("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode, *smiNode2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i && !silent) { + fprint(f, "//\n// COMPLIANCE DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "compliance %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "mandatory", INDENTVALUE); + fprint(f, "("); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } + + if ((smiOption = smiGetFirstOption(smiNode))) { + fprint(f, "\n"); + for(; smiOption; smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "optional %s {\n", smiNode2->name); + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiOption->description); + fprint(f, ";\n"); + fprintSegment(f, 2 * INDENT, "};\n", 0); + } + } + + if ((smiRefinement = smiGetFirstRefinement(smiNode))) { + fprint(f, "\n"); + for(; smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "refine %s {\n", + smiGetRefinementNode(smiRefinement)->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, 3 * INDENT, "writetype", INDENTVALUE); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 3 * INDENT, "access", INDENTVALUE); + fprint(f, "%s;\n", getAccessString(smiRefinement->access)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, + smiRefinement->description); + fprint(f, ";\n"); + fprintSegment(f, 2 * INDENT, "};\n", 0); + } + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void dumpSming(int modc, SmiModule **modv, int flags, char *output) +{ + SmiModule *smiModule; + SmiNode *smiNode; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + smiModule = modv[i]; + + fprint(f, "//\n"); + fprint(f, "// This module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n"); + fprint(f, "//\n"); + fprint(f, "module %s ", smiModule->name); + fprint(f, "{\n"); + fprint(f, "\n"); + + fprintImports(f, smiModule); + + if (! silent) { + fprint(f, "//\n// MODULE META INFORMATION\n//\n\n"); + } + fprintSegment(f, INDENT, "organization", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->organization); + fprint(f, ";\n\n"); + fprintSegment(f, INDENT, "contact", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->contactinfo); + fprint(f, ";\n\n"); + fprintSegment(f, INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->description); + fprint(f, ";\n\n"); + if (smiModule->reference) { + fprintSegment(f, INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->reference); + fprint(f, ";\n\n"); + } + + fprintRevisions(f, smiModule); + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, INDENT, "identity", INDENTVALUE); + fprint(f, "%s;\n\n", smiNode->name); + } + + fprintExtensions(f, smiModule); + fprintIdentities(f, smiModule); + fprintTypedefs(f, smiModule); + fprintClasses(f, smiModule); + fprintObjects(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, "}; // end of module %s.\n", smiModule->name); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSming() +{ + static SmidumpDriver driver = { + "sming", + dumpSming, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIng", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-sppi.c b/tools/dump-sppi.c new file mode 100644 index 0000000..2b703f2 --- /dev/null +++ b/tools/dump-sppi.c @@ -0,0 +1,1745 @@ +/* + * dump-sppi.c -- + * + * Operations to dump SPPI module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 16 /* column to start values, except multiline */ +#define INDENTTEXTS 9 /* column to start multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + +static char *convertType[] = { + NULL, "INTEGER", NULL, "Integer32", + NULL, "Bits", NULL, "BITS", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, "IpAddress", NULL, "InetAddress", + NULL, "Counter64", NULL, "Unsigned64", + NULL, "Counter32", NULL, "Unsigned32", + NULL, "Gauge32", NULL, "Unsigned32", + NULL, NULL, NULL, NULL }; + +static char *convertTypeMibToPib[] = { + NULL, "SnmpAdminString", NULL, "OCTET STRING", + NULL, NULL, NULL, NULL }; + +static char *convertImport[] = { + "SNMPv2-SMI", "Integer32", "COPS-PR-SPPI", "Integer32", + "SNMPv2-SMI", "Unsigned32", "COPS-PR-SPPI", "Unsigned32", + "SNMPv2-SMI", "TimeTicks", "COPS-PR-SPPI", "TimeTicks", + "SNMPv2-SMI", "IpAddress", "INET-ADDRESS-MIB", "InetAddress", + "SNMPv2-SMI", "MODULE-IDENTITY","COPS-PR-SPPI", "MODULE-IDENTITY", + "SNMPv2-SMI", "MODULE-COMPLIANCE","COPS-PR-SPPI", "MODULE-COMPLIANCE", + "SNMPv2-SMI", "OBJECT-TYPE", "COPS-PR-SPPI", "OBJECT-TYPE", + "SNMPv2-SMI", "OBJECT-IDENTITY","COPS-PR-SPPI", "OBJECT-IDENTITY", + "SNMPv2-TC", "TEXTUAL-CONVENTION","COPS-PR-SPPI", "TEXTUAL-CONVENTION", + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int silent = 0; +static int mibtopib = 0; + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static int invalidType(SmiBasetype basetype) +{ + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); +} + + + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + ""; +} + + + +static char *getAccessString(SmiAccess access, int pibaccess) +{ + return + (access == SMI_ACCESS_NOTIFY) ? "notify" : + (access == SMI_ACCESS_INSTALL) ? "install" : + (access == SMI_ACCESS_INSTALL_NOTIFY) ? "install-notify" : + (access == SMI_ACCESS_REPORT_ONLY) ? "report-only" : + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? + (pibaccess == 1 ? "report-only" : "not-accessible") : + mibtopib ? "notify" : + ""; +} + + +static int isSmiOnlyType(char *type) +{ + return (!strcmp(type, "Counter32") || + !strcmp(type, "Counter64") || + !strcmp(type, "Gauge32")); +} + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + if (typeName && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + if (mibtopib) + for(i=0; convertTypeMibToPib[i+1]; i += 4) { + if ((!strcmp(typeName, convertTypeMibToPib[i+1])) && + ((!typeModule) || (!convertTypeMibToPib[i]) || + (!strcmp(typeModule, convertTypeMibToPib[i])))) { + return convertTypeMibToPib[i+3]; + } + } + for(i=0; convertType[i+1]; i += 4) { + if ((!strcmp(typeName, convertType[i+1])) && + ((!typeModule) || (!convertType[i]) || + (!strcmp(typeModule, convertType[i])))) { + return convertType[i+3]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "INTEGER"; + } + if (basetype == SMI_BASETYPE_BITS) { + return "BITS"; + } + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, " %u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getUppercaseString(char *s) +{ + static char *ss; + + ss = xstrdup(s); + ss[0] = (char)toupper((int)ss[0]); + return ss; +} + + + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + int i; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + if (! newImport) { + return NULL; + } + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + SmiModule *smiModule2; + + if (mibtopib) { + addImport("TUBS-SMI", "ibrmibtopib"); + if (smiGetFirstNode(smiModule, SMI_NODEKIND_COLUMN)) { + addImport("COPS-PR-SPPI", "MODULE-COMPLIANCE"); + addImport("COPS-PR-SPPI", "OBJECT-GROUP"); + addImport("COPS-PR-SPPI", "OBJECT-IDENTITY"); + addImport("COPS-PR-SPPI-TC", "InstanceId"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, kind); smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiModule2 = smiGetTypeModule(smiType); + if (smiModule2 && (smiModule2 != smiModule)) { + if (strlen(smiModule2->name) && smiType->name && + !isSmiOnlyType(smiType->name)) { + addImport(smiModule2->name, smiType->name); + } + } + } + + if (smiType && smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("COPS-PR-SPPI", "Integer32"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_INTEGER64) { + addImport("COPS-PR-SPPI", "Integer64"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_UNSIGNED32) { + addImport("COPS-PR-SPPI", "Unsigned32"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_UNSIGNED64) { + addImport("COPS-PR-SPPI", "Unsigned64"); + } + + if ((smiNode->value.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + (!strcmp(smiNode->value.value.ptr, "zeroDotZero"))) { + addImport("SNMPv2-SMI", "zeroDotZero"); + } + } + + smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN + | SMI_NODEKIND_TABLE | SMI_NODEKIND_ROW); + if (smiNode) { + addImport("COPS-PR-SPPI", "OBJECT-TYPE"); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "MODULE-IDENTITY"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "OBJECT-IDENTITY"); + } + break; + } + } + + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + if (smiNode) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "MODULE-COMPLIANCE"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "OBJECT-GROUP"); + } + } + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->description) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "TEXTUAL-CONVENTION"); + } + } + if (smiType->decl == SMI_DECL_TEXTUALCONVENTION) { + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + addImport("COPS-PR-SPPI", "Integer32"); + break; + case SMI_BASETYPE_INTEGER64: + addImport("COPS-PR-SPPI", "Integer64"); + break; + case SMI_BASETYPE_UNSIGNED32: + addImport("COPS-PR-SPPI", "Unsigned32"); + break; + case SMI_BASETYPE_UNSIGNED64: + addImport("COPS-PR-SPPI", "Unsigned64"); + break; + default: + break; + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if ((islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) && + !isSmiOnlyType(smiImport->name)) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, + int length, int comment) +{ + char *format; + + if (comment) { + format = "-- %*c%s"; + /* if (column >= 3) column -= 3; */ + } else { + format = "%*c%s"; + } + + fprint(f, format, column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string, int comment) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0, comment); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType, const int comment) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + if (comment) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", INDENTVALUE, comment); + fprint(f, " { "); + } else { + fprint(f, " { "); + } + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s, comment); + } + if (i) { + fprint(f, " }"); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, " (SIZE("); + } else { + fprint(f, " ("); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s, 0); + } + if (i) { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, ")"); + } + fprint(f, ")"); + } + } +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + int n, j; + + /* PIBs can contain both a PIB-INDEX | EXTENDS | AUGMENTS and an + INDEX clause. The index list's first element is the PIB-INDEX + (or EXTENDS/AUGMENTS) followed by the elements belonging to the + INDEX clause. */ + + for (n = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + n++, smiElement = smiGetNextElement(smiElement)); + if (mibtopib) { + SmiNode *smiParentNode = smiGetParentNode(indexNode); + size_t len = strlen(smiParentNode->name); + char *instanceId = xmalloc(len + 11); + + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + fprintSegment(f, INDENT, "PIB-INDEX", INDENTVALUE, 0); + fprint(f, "{ "); + fprintWrapped(f, INDENTVALUE + 2, instanceId, 0); + fprint(f, " }\n"); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, 0); + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + } + xfree(instanceId); + } + else + for (j = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!j) { + switch (indexNode->indexkind) { + case SMI_INDEX_INDEX: + fprintSegment(f, INDENT, "PIB-INDEX", INDENTVALUE, + comment); + break; + case SMI_INDEX_AUGMENT: + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, + comment); + break; + case SMI_INDEX_SPARSE: + fprintSegment(f, INDENT, "EXTENDS", INDENTVALUE, + comment); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_REORDER: + case SMI_INDEX_EXPAND: + fprintSegment(f, INDENT, "-- unsupported indexing --", + INDENTVALUE, comment); + break; + } + fprint(f, "{ "); + } else if (j == 1) { + fprint(f, " }\n"); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, comment); + fprint(f, "{ "); + } else + fprint(f, ", "); + if (indexNode->implied && ((j+1) == n)) { + fprintWrapped(f, INDENTVALUE + 2, "IMPLIED ", 0); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintUniqueness(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + int j; + + smiElement = smiGetFirstUniquenessElement(indexNode); + if (!smiElement) + return; + fprintSegment(f, INDENT, "UNIQUENESS", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0; smiElement; j++, + smiElement = smiGetNextElement(smiElement)) { + if (j) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintInstallErrors(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + SmiNode *smiNode; + int j; + char *id; + + smiElement = smiGetFirstElement(indexNode); + if (!smiElement) + return; + fprintSegment(f, INDENT, "INSTALL-ERRORS", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0; smiElement; j++, + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + id = xmalloc(strlen(smiNode->name) + 10); + sprintf(id, "%s (%ld)%s", smiNode->name, + smiNode->oidlen ? (long)smiNode->oid : 0, + smiGetNextElement(smiElement) ? ", " : ""); + fprintWrapped(f, 2+INDENTVALUE, id, 0); + xfree(id); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintImports(FILE *f) +{ + Import *import; + char *lastModulename = NULL; + char *importedModulename, *importedDescriptor; + int i; + + for(import = importList; import; import = import->nextPtr) { + importedModulename = import->module; + importedDescriptor = import->name; + + if (!strlen(importedModulename)) + continue; + + for(i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(importedModulename, convertImport[i]) + && !strcmp(importedDescriptor, convertImport[i+1])) { + importedModulename = convertImport[i+2]; + importedDescriptor = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(importedModulename, convertImport[i])) { + importedModulename = convertImport[i+2]; + break; + } + } + + if (importedModulename && importedDescriptor && + strlen(importedDescriptor)) { + if ((!lastModulename) || + strcmp(importedModulename, lastModulename)) { + if (!lastModulename) { + fprint(f, "IMPORTS"); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s", lastModulename); + } + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0, 0); + } else { + fprint(f, ", "); + } + fprintWrapped(f, INDENT, importedDescriptor, 0); + lastModulename = importedModulename; + } + } + if (lastModulename) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s;\n\n", lastModulename); + } +} + + + +static void fprintModuleIdentity(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode, *smiNode2; + SmiElement *smiElement; + char *id; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + fprint(f, "%s MODULE-IDENTITY\n", smiNode->name); + fprintSegment(f, INDENT, "SUBJECT-CATEGORIES", INDENTVALUE, 0); + fprint(f, "{ "); + smiElement = smiGetFirstElement(smiNode); + if (smiElement && smiGetElementNode(smiElement)) + { + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode2 = smiGetElementNode(smiElement); + id = xmalloc(strlen(smiNode2->name) + 10); + if (smiNode2->oidlen) + sprintf(id, "%s (%ld)%s", smiNode2->name, (long)smiNode2->oid, + smiGetNextElement(smiElement) ? ", " : ""); + else + sprintf(id, "%s%s", smiNode2->name, + smiGetNextElement(smiElement) ? ", " : ""); + fprintWrapped(f, 2+INDENTVALUE, id, 0); + xfree(id); + } + fprint(f, " }\n"); + } else { + /* No SUBJECT-CATEGORIES entry was present, add one */ + fprint(f, "all } -- added by smidump\n"); + } + fprintSegment(f, INDENT, "LAST-UPDATED", INDENTVALUE, 0); + smiRevision = smiGetFirstRevision(smiModule); + if (smiRevision) + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + else + fprint(f, "\"197001010000Z\"\n"); + fprintSegment(f, INDENT, "ORGANIZATION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization, 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "CONTACT-INFO", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo, 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiModule->description) { + fprintMultilineString(f, smiModule->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (!smiRevision->description + || strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION", INDENTVALUE, 0); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + 0); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + if (smiNode) { + fprintSegment(f, INDENT, "::= ", 0, 0); + if (!mibtopib) + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + else + fprint(f, "{ ibrmibtopib %d }\n\n", + smiNode->oid[smiNode->oidlen - 1]); + } + /* TODO: else error */ + + fprint(f, "\n"); + } +} + + + +static void fprintTypeDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int invalid; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->status == SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (invalid) { + fprint(f, "-- %s ::=\n", smiType->name); + } else { + fprint(f, "%s ::=\n", smiType->name); + } + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + } +} + + + +static void fprintTextualConventions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int invalid; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->status != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + fprint(f, "%s ::= TEXTUAL-CONVENTION\n", smiType->name); + + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT", INDENTVALUE, + invalid); + fprint(f, "\"%s\"\n", smiType->format); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, + invalid); + fprint(f, "%s\n", getStatusString(smiType->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + invalid); + fprint(f, "\n"); + if (smiType->description) { + fprintMultilineString(f, smiType->description, + invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference, + invalid); + fprint(f, "\n"); + } + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, + invalid); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + } +} + + + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *rowNode, *colNode, *smiParentNode, *relatedNode; + SmiType *smiType; + SmiNodekind nodekinds; + int i, invalid, create, assignement, indentsequence, addinstanceid; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + for(smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + smiType = smiGetNodeType(smiNode); + smiParentNode = smiGetParentNode(smiNode); + + create = smiParentNode ? smiParentNode->create : 0; + + invalid = !smiType ? 0 : invalidType(smiType->basetype); + assignement = 0; + + if (invalid && silent + && (smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN)) { + continue; + } + + if (smiNode == smiGetModuleIdentityNode(smiModule)) { + continue; + } + + if ((smiNode->nodekind == SMI_NODEKIND_NODE) && + (smiNode->status == SMI_STATUS_UNKNOWN)) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else if (smiNode->nodekind == SMI_NODEKIND_NODE) { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } else { + if (invalid) { + fprint(f, "-- %s OBJECT-TYPE\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-TYPE\n", smiNode->name); + } + } + + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW) || + (smiType)) { fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, invalid); + if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprint(f, "SEQUENCE OF "); + rowNode = smiGetFirstChildNode(smiNode); + if (rowNode) { + smiType = smiGetNodeType(rowNode); + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(rowNode->name); + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else { + fprint(f, "\n"); + } + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + char *s = getUppercaseString(smiNode->name); + /* guess type name is uppercase row name */ + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else if (smiType) { + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n"); + } else { + fprint(f, "%s\n", + getTypeString(smiType->basetype, smiType)); + } + } + } + + if (! assignement && smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprintSegment(f, INDENT, "PIB-ACCESS", INDENTVALUE, 0); + fprint(f, "%s\n", getAccessString(smiNode->access, 1)); + } + + if (! assignement && smiType && smiType->name && + !strcmp(smiType->name, "ReferenceId")) { + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + fprintSegment(f, INDENT, "PIB-REFERENCES", INDENTVALUE, 0); + fprint(f, "{ %s }\n", relatedNode->name); + } + } + + if (! assignement && smiType && smiType->name && + !strcmp(smiType->name, "TagReferenceId")) { + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + fprintSegment(f, INDENT, "PIB-TAG", INDENTVALUE, 0); + fprint(f, "{ %s }\n", relatedNode->name); + } + } + + if (! assignement) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, invalid); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, invalid); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + } + + if (smiNode->nodekind == SMI_NODEKIND_TABLE) + fprintInstallErrors(f, smiNode, invalid); + + if (! assignement && smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, invalid); + fprint(f, "\n"); + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_AUGMENT: + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, invalid); + fprint(f, "{ %s }\n", relatedNode->name); + break; + case SMI_INDEX_SPARSE: + fprintSegment(f, INDENT, "EXTENDS", INDENTVALUE, invalid); + fprint(f, "{ %s }\n", relatedNode->name); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_REORDER: + case SMI_INDEX_EXPAND: + break; + } + + if (smiNode->nodekind == SMI_NODEKIND_ROW) + fprintUniqueness(f, smiNode, invalid); + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, INDENT, "DEFVAL", INDENTVALUE, invalid); + fprint(f, "{ %s }", getValueString(&smiNode->value, smiType)); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, invalid); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + + smiType = smiGetNodeType(smiNode); + addinstanceid = 0; + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (mibtopib) + addinstanceid = 1; + if (smiType) { + fprint(f, "%s ::= SEQUENCE {", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(smiNode->name); + fprint(f, "%s ::= SEQUENCE {", s); + xfree(s); + } + /* Find the last valid node in this sequence. We need it + * to suppress its trailing comma. Compute the longest + * column name so that we can adjust the indentation of + * the type names in the SEQUENCE definition. */ + for(indentsequence = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + int len = strlen(colNode->name); + if (len > indentsequence) indentsequence = len; + smiType = smiGetNodeType(colNode); + if (smiType && !invalidType(smiType->basetype)) { + relatedNode = colNode; + } + } + if (mibtopib) { + int len = strlen(smiParentNode->name) + 10; + if (len > 64) + len = 64; + indentsequence = len; + } + if (relatedNode) relatedNode = smiGetNextChildNode(relatedNode); + indentsequence = (2*INDENT + indentsequence + 1) / INDENT * INDENT; + /* TODO: non-local name? */ + for(i = 0, invalid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + if (! invalid || ! silent) { + if (i && (relatedNode != colNode)) { + fprint(f, ","); + } + fprint(f, "\n"); + } + + smiType = smiGetNodeType(colNode); + invalid = (smiType == NULL) || invalidType(smiType->basetype); + + if (! invalid || ! silent) { + fprintSegment(f, INDENT, colNode->name, indentsequence, + invalid); + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + } else if (smiType) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetNodeType(colNode))); + } else { + fprint(f, ""); + } + } + i++; + } + if (mibtopib) { + size_t len = strlen(smiParentNode->name); + int maxid; + char *instanceId = xmalloc(len + 11); + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + fprint(f, ",\n"); + fprintSegment(f, INDENT, instanceId, indentsequence, 0); + fprint(f, "InstanceId\n}\n\n"); + + fprint(f, "%s OBJECT-TYPE\n", instanceId); + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, 0); + fprint(f, "InstanceId\n"); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + for (maxid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; colNode = smiGetNextChildNode(colNode)) + if (colNode->oidlen && + (colNode->oid[colNode->oidlen - 1] > maxid)) + maxid = colNode->oid[colNode->oidlen - 1]; + fprint(f, "{ %s %d }\n\n", + smiGetFirstChildNode(smiParentNode)->name, + (maxid + 1) > 128 ? (maxid + 1) : 128); + xfree(instanceId); + } else + fprint(f, "\n}\n\n"); + } + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int j, objectGroup = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + objectGroup = isObjectGroup(smiNode); + + if (!objectGroup) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (!objectGroup) { + continue; + } + + fprint(f, "%s %s\n", smiNode->name, "OBJECT-GROUP"); + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, 0); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } +} + + + +static void fprintModuleCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + char *module; + char *done = NULL; /* "+" separated list of module names */ + char s[1024]; + int j; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + fprint(f, "%s MODULE-COMPLIANCE\n", smiNode->name); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, 0); + fprint(f, "\n"); + } + + /* `this module' always first */ + done = xstrdup("+"); + for (module = smiModule->name; module; ) { + + fprint(f, "\n"); + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, 0); + if (strlen(module) && strcmp(smiModule->name, module)) { + fprint(f, "%s\n", module); + } else { + fprint(f, "-- this module\n"); + } + + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode(smiElement))->name, module)) { + if (j) { + fprint(f, ", "); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", + INDENTVALUE, 0); + fprint(f, "{ "); + } + j++; + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, + 0); + } + } + if (j) { + fprint(f, " }\n"); + } + + for(smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "GROUP", + INDENTVALUE, 0); + fprint(f, "%s\n", smiNode2->name); + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, 0); + fprint(f, "\n"); + if (smiOption->description) { + fprintMultilineString(f, smiOption->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "OBJECT", + INDENTVALUE, 0); + fprint(f, "%s\n", smiNode2->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "SYNTAX", INDENTVALUE, + 0); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, 0); + fprint(f, "\n"); + } + +/* if ((smiRefinement->access == SMI_ACCESS_NOTIFY) || + (smiRefinement->access >= SMI_REPORT_ONLY)) {*/ + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "PIB-MIN-ACCESS", + INDENTVALUE, 0); + fprint(f, "%s\n", + getAccessString(smiRefinement->access, 0)); + /* we assume, that read-create does not appear in + * an OT refinement. + */ + } + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, 0); + fprint(f, "\n"); + if (smiRefinement->description) { + fprintMultilineString(f, + smiRefinement->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + /* + * search the next module name in the list of mandatory + * groups, optional groups and refinements. + */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", + smiGetNodeModule(smiGetElementNode(smiElement))->name); + if ((!strstr(done, s))) { + module = + smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + if (!module) { + ; /* TODO: search in options list */ + } + if (!module) { + ; /* TODO: search in refinements list */ + } + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + xfree(done); + + if (mibtopib) { + char *newCompliance = xmalloc(65); + char *newGroup = xmalloc(65); + char *newId = xmalloc(65); + int len, maxid; + + for (maxid = 0, smiNode2 = smiGetFirstChildNode(smiNode); + smiNode2; smiNode2 = smiGetNextChildNode(smiNode2)) + if (smiNode2->oidlen && + (smiNode2->oid[smiNode2->oidlen - 1] > maxid)) + maxid = smiNode2->oid[smiNode2->oidlen - 1]; + maxid++; + + smiNode = smiGetModuleIdentityNode(smiModule); + if (!smiNode || !newCompliance || !newGroup) + return; + len = strlen(smiNode->name); + + memset(newId, 0, 65); + strncpy(newId, smiNode->name, 46); + strcat(newId + (len > 46 ? 46 : len), "MIBtoPIBCompliance"); + + memset(newCompliance, 0, 65); + strncpy(newCompliance, smiNode->name, 46); + strcat(newCompliance + (len > 46 ? 46 : len), "MIBtoPIBModuleComp"); + + memset(newGroup, 0, 65); + strncpy(newGroup, smiNode->name, 51); + strcat(newGroup + (len > 51 ? 51 : len), "MIBtoPIBGroup"); + + fprintf(f, "-- The following three items were added in order " \ + "to create a RFC compliant\n-- SPPI module. They do not " \ + "provide any usable content.\n-- %s\n-- %s\n-- %s\n\n", + newId, newCompliance, newGroup); + + fprint(f, "%s OBJECT-IDENTITY\n", newId); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s %d }\n\n", smiNode->name, (maxid > 128 ? maxid : 128)); + + fprint(f, "%s MODULE-COMPLIANCE\n", newCompliance); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, 0); + fprint(f, "-- this module\n"); + + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", INDENTVALUE, 0); + fprint(f, "{ "); + + fprintWrapped(f, INDENTVALUE + 2, newGroup, 0); + fprint(f, "}\n"); + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s 1 }\n\n", newId); + + fprint(f, "%s OBJECT-GROUP\n", newGroup); + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + fprint(f, "{ "); + for (len=0, smiNode2 = smiGetFirstNode(smiModule, SMI_NODEKIND_COLUMN); + smiNode2; len = 1, + smiNode2 = smiGetNextNode(smiNode2, SMI_NODEKIND_COLUMN)) { + if (len) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, smiNode2->name, 0); + } + for (smiNode2 = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode2; smiNode2 = smiGetNextNode(smiNode2, SMI_NODEKIND_ROW)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode2); + size_t len = strlen(smiParentNode->name); + char *instanceId = xmalloc(len + 11); + + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + if (len) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, instanceId, 0); + xfree(instanceId); + } + + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic" \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s 2 }\n\n", newId); + + xfree(newCompliance); + xfree(newGroup); + } +} + + + +static void doDumpSppi(FILE *f, SmiModule *smiModule) +{ + if (smiModule->language != SMI_LANGUAGE_SPPI) /* MIB to PIB conversion */ + mibtopib = 1; + else + mibtopib = 0; + + createImportList(smiModule); + + fprint(f, "--\n"); + fprint(f, "-- This SPPI module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n"); + fprint(f, "--\n\n"); + fprint(f, "%s%s PIB-DEFINITIONS ::= BEGIN\n\n", smiModule->name, + mibtopib ? "-PIB" : ""); + + fprintImports(f); + fprintModuleIdentity(f, smiModule); + fprintTypeDefinitions(f, smiModule); + fprintTextualConventions(f, smiModule); + fprintObjects(f, smiModule); + fprintGroups(f, smiModule); + fprintModuleCompliances(f, smiModule); + + fprint(f, "END -- end of module %s.\n", smiModule->name); + + freeImportList(); +} + + +static void dumpSppi(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + doDumpSppi(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSppi() +{ + static SmidumpDriver driver = { + "sppi", + dumpSppi, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SPPI (RFC 3159)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-svg-script.h b/tools/dump-svg-script.h new file mode 100644 index 0000000..d1836b0 --- /dev/null +++ b/tools/dump-svg-script.h @@ -0,0 +1,616 @@ +const char *code = +"//The scripts for the tooltip and moveobj are based on work from\n" +"//SVG - Learning By Coding - http://www.datenverdrahten.de/svglbc/\n" +"//Author: Dr. Thomas Meinike 11/03 - thomas@handmadecode.de\n" +"var svgdoc,svgroot,paths,revert;\n" +"var collapsed = new Array(2);\n" +"var name = new Array(%i);\n" +"var clickStatus = new Array(%i);\n" +"var redCount = new Array(%i);\n" +"var salmonCount = new Array(%i);\n" +"var moveObj,rect,x,y,attr1,attr2,wert1,wert2,zoom=1,active=false;\n" +"\n" +"function MoveObj(evt)\n" +"{\n" +" if (active) {\n" +" var roundx, roundy;\n" +" var curtrans=svgroot.currentTranslate;\n" +" var ctx=curtrans.x;\n" +" var cty=curtrans.y;\n" +"\n" +" x=evt.clientX()\n" +" y=evt.clientY()\n" +" wert1=(x-ctx)*zoom*%.2f+%.2f+attr1-5;\n" +" wert2=(y-cty)*zoom*%.2f+%.2f+attr2-5;\n" +" roundx=Math.round(wert1*100)/100;\n" +" roundy=Math.round(wert2*100)/100;\n" +"\n" +" moveObj.setAttribute(\"transform\",\"translate(\"+roundx+\",\"+roundy+\")\");\n" +" }\n" +"}\n" +"\n" +"function ClickObj(evt)\n" +"{\n" +" rect=evt.target.parentNode.getElementsByTagName(\"rect\").item(0);\n" +" moveObj=evt.target.parentNode;\n" +" attr1=rect.getAttribute(\"width\")/2;\n" +" attr2=rect.getAttribute(\"height\")/2;\n" +" active=true;\n" +"}\n" +"\n" +"function OutOfObj(evt)\n" +"{\n" +" if (active) {\n" +" active=false;\n" +" findAdjacentEdges();\n" +" }\n" +"}\n" +"\n" +"function findAdjacentEdges()\n" +"{\n" +" var rectl, rectlid, i, nodenames;\n" +" rectl = rect;\n" +" rectlid = rectl.getAttribute(\"id\");\n" +" for (i=0; i Math.PI-beta && alpha < Math.PI+beta)\n" +" || alpha > 2*Math.PI-beta) {\n" +" //intersection at left or right border\n" +" if (nodesx < nodeex) {\n" +" edgesx = nodesx - 0 + nodesw/2;\n" +" } else {\n" +" edgesx = nodesx - nodesw/2;\n" +" }\n" +" if (nodesy < nodeey) {\n" +" edgesy = nodesy - 0 + Math.abs(nodesw*Math.tan(alpha)/2);\n" +" } else {\n" +" edgesy = nodesy - Math.abs(nodesw*Math.tan(alpha)/2);\n" +" }\n" +" } else {\n" +" //intersection at top or bottom border\n" +" if (nodesy < nodeey) {\n" +" edgesy = nodesy - 0 + nodesh/2;\n" +" } else {\n" +" edgesy = nodesy - nodesh/2;\n" +" }\n" +" if (nodesx < nodeex) {\n" +" edgesx = nodesx - 0 + Math.abs(nodesh/(2*Math.tan(alpha)));\n" +" } else {\n" +" edgesx = nodesx - Math.abs(nodesh/(2*Math.tan(alpha)));\n" +" }\n" +" }\n" +"\n" +" //calculate intersection of edge and endNode\n" +" beta = Math.atan(nodeeh/nodeew);\n" +" if (alpha < beta\n" +" || (alpha > Math.PI-beta && alpha < Math.PI+beta)\n" +" || alpha > 2*Math.PI-beta) {\n" +" //intersection at left or right border\n" +" if (nodesx > nodeex) {\n" +" edgeex = nodeex - 0 + nodeew/2;\n" +" } else {\n" +" edgeex = nodeex - nodeew/2;\n" +" }\n" +" if (nodesy > nodeey) {\n" +" edgeey = nodeey - 0 + Math.abs(nodeew*Math.tan(alpha)/2);\n" +" } else {\n" +" edgeey = nodeey - Math.abs(nodeew*Math.tan(alpha)/2);\n" +" }\n" +" } else {\n" +" //intersection at top or bottom border\n" +" if (nodesy > nodeey) {\n" +" edgeey = nodeey - 0 + nodeeh/2;\n" +" } else {\n" +" edgeey = nodeey - nodeeh/2;\n" +" }\n" +" if (nodesx > nodeex) {\n" +" edgeex = nodeex - 0 + Math.abs(nodeeh/(2*Math.tan(alpha)));\n" +" } else {\n" +" edgeex = nodeex - Math.abs(nodeeh/(2*Math.tan(alpha)));\n" +" }\n" +" }\n" +"\n" +" //set new edge coordinates\n" +" sx=Math.round(edgesx*100)/100;\n" +" ex=Math.round(edgeex*100)/100;\n" +" sy=Math.round(edgesy*100)/100;\n" +" ey=Math.round(edgeey*100)/100;\n" +"\n" +" if (sx < ex) {\n" +" if (revert[j] == 1) {\n" +" revert[j] = 0;\n" +" flipEdgeMarks(edge);\n" +" }\n" +" edge.setAttribute(\"d\",\"M \"+sx+\" \"+sy+\" \"+ex+\" \"+ey);\n" +" } else {\n" +" if (revert[j] == 0) {\n" +" revert[j] = 1;\n" +" flipEdgeMarks(edge);\n" +" }\n" +" edge.setAttribute(\"d\",\"M \"+ex+\" \"+ey+\" \"+sx+\" \"+sy);\n" +" }\n" +"}\n" +"\n" +"function flipEdgeMarks(edge)\n" +"{\n" +" var attr, i, j, done, textpaths, pathnamei, offset;\n" +"\n" +" //revert start- and end-markers\n" +" attr = edge.attributes;\n" +" done = 0;\n" +" for (i=0;iend\n" +" edge.removeAttribute(\"marker-start\");\n" +" edge.setAttribute(\"marker-end\",\"url(#arrowend)\");\n" +" break;\n" +" }\n" +" }\n" +" if (attr.item(i).nodeName == \"marker-end\") {\n" +" for (j=i;jstart\n" +" edge.removeAttribute(\"marker-end\");\n" +" edge.setAttribute(\"marker-start\",\"url(#arrowstart)\");\n" +" break;\n" +" }\n" +" }\n" +" }\n" +"\n" +" //revert cardinalities\n" +" textpaths = svgdoc.getElementsByTagName(\"textPath\");\n" +" for (i=0;i targetX) {\n" +" nextObj.style.setProperty(\"visibility\",\"visible\");\n" +" gapY += 15;\n" +" if (collapsed[0][targetID] == 1) {\n" +" targetID = collapsed[1][targetID];\n" +" } else {\n" +" targetID++;\n" +" }\n" +" nextObj = svgdoc.getElementById(\"MI\"+targetID);\n" +" if (nextObj == null)\n" +" break;\n" +" } else {\n" +" break;\n" +" }\n" +" }\n" +" if (nextObj == null)\n" +" return;\n" +" //move following texts downwards\n" +" while (nextObj != null) {\n" +" attr = nextObj.attributes;\n" +" for (i=0;i targetX) {\n" +" nextObj.style.setProperty(\"visibility\",\"hidden\");\n" +" gapY += 15;\n" +" if (collapsed[0][targetID] == 1) {\n" +" targetID = collapsed[1][targetID];\n" +" } else {\n" +" targetID++;\n" +" }\n" +" nextObj = svgdoc.getElementById(\"MI\"+targetID);\n" +" if (nextObj == null)\n" +" break;\n" +" } else {\n" +" break;\n" +" }\n" +" }\n" +" //save next uncollapsed element in array\n" +" collapsed[1][clickedID] = targetID;\n" +" if (nextObj == null)\n" +" return;\n" +" //move following texts upwards\n" +" while (nextObj != null) {\n" +" attr = nextObj.attributes;\n" +" for (i=0;i nodeex) {\n" +" revert[j] = 1;\n" +" } else {\n" +" revert[j] = 0;\n" +" }\n" +" }\n" +"}\n" +"\n" +"function setStatus(evt, color1, color2)\n" +"{\n" +" var clickObj = evt.getTarget();\n" +" var clickObjName = clickObj.getAttribute('id');\n" +"\n" +" //find i corresponding to the clicked object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] == \"\") {\n" +" name[i] = clickObjName;\n" +" break;\n" +" }\n" +" if (name[i] != clickObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //toggle click status, color clicked object\n" +" if (clickStatus[i] == 0) {\n" +" clickStatus[i] = 1;\n" +" clickObj.setAttribute(\"style\",\"fill: \"+color1);\n" +" } else {\n" +" clickStatus[i] = 0;\n" +" clickObj.setAttribute(\"style\",\"fill: \"+color2);\n" +" }\n" +"\n" +" //adjust color-counter\n" +" if (color1 == 'red') {\n" +" if (clickStatus[i] == 1) {\n" +" redCount[i]++;\n" +" } else {\n" +" redCount[i]--;\n" +" }\n" +" }\n" +" if (color1 == 'salmon') {\n" +" if (clickStatus[i] == 1) {\n" +" salmonCount[i]++;\n" +" } else {\n" +" salmonCount[i]--;\n" +" }\n" +" }\n" +"\n" +" if (clickStatus[i] == 0 && salmonCount[i] > 0) {\n" +" clickObj.setAttribute(\"style\",\"fill: salmon\");\n" +" }\n" +"}\n" +"\n" +"function changeColor(evt, targetObjName, color1, color2)\n" +"{\n" +" var clickObj = evt.getTarget();\n" +" var clickObjName = clickObj.getAttribute('id');\n" +" var targetObj = svgDocument.getElementById(targetObjName);\n" +"\n" +" //find i corresponding to the clicked object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] != clickObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //find j corresponding to the target object\n" +" for (j=0; j<%i; j++) {\n" +" if (name[j] == \"\") {\n" +" name[j] = targetObjName;\n" +" break;\n" +" }\n" +" if (name[j] != targetObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //adjust color-counter\n" +" if (color1 == 'red') {\n" +" if (clickStatus[i] == 1) {\n" +" redCount[j]++;\n" +" } else {\n" +" redCount[j]--;\n" +" }\n" +" }\n" +" if (color1 == 'salmon') {\n" +" if (clickStatus[i] == 1) {\n" +" salmonCount[j]++;\n" +" } else {\n" +" salmonCount[j]--;\n" +" }\n" +" }\n" +"}\n" +"\n" +"function colorText(targetObjName, color)\n" +"{\n" +" var targetObj = svgDocument.getElementById(targetObjName);\n" +"\n" +" //find i corresponding to the target object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] != targetObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //color text\n" +" if (i == %i) {\n" +" targetObj.setAttribute(\"style\",\"fill: \"+color);\n" +" return;\n" +" }\n" +" if (redCount[i] == 0 && salmonCount[i] == 0) {\n" +" targetObj.setAttribute(\"style\",\"fill: \"+color);\n" +" }\n" +" if (salmonCount[i] > 0) {\n" +" if (color == 'red') {\n" +" targetObj.setAttribute(\"style\",\"fill: red\");\n" +" } else {\n" +" if (redCount[i] > 0) {\n" +" targetObj.setAttribute(\"style\",\"fill: red\");\n" +" } else {\n" +" targetObj.setAttribute(\"style\",\"fill: salmon\");\n" +" }\n" +" }\n" +" }\n" +"}\n" +; diff --git a/tools/dump-svg-script.js b/tools/dump-svg-script.js new file mode 100644 index 0000000..d25282f --- /dev/null +++ b/tools/dump-svg-script.js @@ -0,0 +1,614 @@ +//The scripts for the tooltip and moveobj are based on work from +//SVG - Learning By Coding - http://www.datenverdrahten.de/svglbc/ +//Author: Dr. Thomas Meinike 11/03 - thomas@handmadecode.de +var svgdoc,svgroot,paths,revert; +var collapsed = new Array(2); +var name = new Array(%i); +var clickStatus = new Array(%i); +var redCount = new Array(%i); +var salmonCount = new Array(%i); +var moveObj,rect,x,y,attr1,attr2,wert1,wert2,zoom=1,active=false; + +function MoveObj(evt) +{ + if (active) { + var roundx, roundy; + var curtrans=svgroot.currentTranslate; + var ctx=curtrans.x; + var cty=curtrans.y; + + x=evt.clientX() + y=evt.clientY() + wert1=(x-ctx)*zoom*%.2f+%.2f+attr1-5; + wert2=(y-cty)*zoom*%.2f+%.2f+attr2-5; + roundx=Math.round(wert1*100)/100; + roundy=Math.round(wert2*100)/100; + + moveObj.setAttribute("transform","translate("+roundx+","+roundy+")"); + } +} + +function ClickObj(evt) +{ + rect=evt.target.parentNode.getElementsByTagName("rect").item(0); + moveObj=evt.target.parentNode; + attr1=rect.getAttribute("width")/2; + attr2=rect.getAttribute("height")/2; + active=true; +} + +function OutOfObj(evt) +{ + if (active) { + active=false; + findAdjacentEdges(); + } +} + +function findAdjacentEdges() +{ + var rectl, rectlid, i, nodenames; + rectl = rect; + rectlid = rectl.getAttribute("id"); + for (i=0; i Math.PI-beta && alpha < Math.PI+beta) + || alpha > 2*Math.PI-beta) { + //intersection at left or right border + if (nodesx < nodeex) { + edgesx = nodesx - 0 + nodesw/2; + } else { + edgesx = nodesx - nodesw/2; + } + if (nodesy < nodeey) { + edgesy = nodesy - 0 + Math.abs(nodesw*Math.tan(alpha)/2); + } else { + edgesy = nodesy - Math.abs(nodesw*Math.tan(alpha)/2); + } + } else { + //intersection at top or bottom border + if (nodesy < nodeey) { + edgesy = nodesy - 0 + nodesh/2; + } else { + edgesy = nodesy - nodesh/2; + } + if (nodesx < nodeex) { + edgesx = nodesx - 0 + Math.abs(nodesh/(2*Math.tan(alpha))); + } else { + edgesx = nodesx - Math.abs(nodesh/(2*Math.tan(alpha))); + } + } + + //calculate intersection of edge and endNode + beta = Math.atan(nodeeh/nodeew); + if (alpha < beta + || (alpha > Math.PI-beta && alpha < Math.PI+beta) + || alpha > 2*Math.PI-beta) { + //intersection at left or right border + if (nodesx > nodeex) { + edgeex = nodeex - 0 + nodeew/2; + } else { + edgeex = nodeex - nodeew/2; + } + if (nodesy > nodeey) { + edgeey = nodeey - 0 + Math.abs(nodeew*Math.tan(alpha)/2); + } else { + edgeey = nodeey - Math.abs(nodeew*Math.tan(alpha)/2); + } + } else { + //intersection at top or bottom border + if (nodesy > nodeey) { + edgeey = nodeey - 0 + nodeeh/2; + } else { + edgeey = nodeey - nodeeh/2; + } + if (nodesx > nodeex) { + edgeex = nodeex - 0 + Math.abs(nodeeh/(2*Math.tan(alpha))); + } else { + edgeex = nodeex - Math.abs(nodeeh/(2*Math.tan(alpha))); + } + } + + //set new edge coordinates + sx=Math.round(edgesx*100)/100; + ex=Math.round(edgeex*100)/100; + sy=Math.round(edgesy*100)/100; + ey=Math.round(edgeey*100)/100; + + if (sx < ex) { + if (revert[j] == 1) { + revert[j] = 0; + flipEdgeMarks(edge); + } + edge.setAttribute("d","M "+sx+" "+sy+" "+ex+" "+ey); + } else { + if (revert[j] == 0) { + revert[j] = 1; + flipEdgeMarks(edge); + } + edge.setAttribute("d","M "+ex+" "+ey+" "+sx+" "+sy); + } +} + +function flipEdgeMarks(edge) +{ + var attr, i, j, done, textpaths, pathnamei, offset; + + //revert start- and end-markers + attr = edge.attributes; + done = 0; + for (i=0;iend + edge.removeAttribute("marker-start"); + edge.setAttribute("marker-end","url(#arrowend)"); + break; + } + } + if (attr.item(i).nodeName == "marker-end") { + for (j=i;jstart + edge.removeAttribute("marker-end"); + edge.setAttribute("marker-start","url(#arrowstart)"); + break; + } + } + } + + //revert cardinalities + textpaths = svgdoc.getElementsByTagName("textPath"); + for (i=0;i targetX) { + nextObj.style.setProperty("visibility","visible"); + gapY += 15; + if (collapsed[0][targetID] == 1) { + targetID = collapsed[1][targetID]; + } else { + targetID++; + } + nextObj = svgdoc.getElementById("MI"+targetID); + if (nextObj == null) + break; + } else { + break; + } + } + if (nextObj == null) + return; + //move following texts downwards + while (nextObj != null) { + attr = nextObj.attributes; + for (i=0;i targetX) { + nextObj.style.setProperty("visibility","hidden"); + gapY += 15; + if (collapsed[0][targetID] == 1) { + targetID = collapsed[1][targetID]; + } else { + targetID++; + } + nextObj = svgdoc.getElementById("MI"+targetID); + if (nextObj == null) + break; + } else { + break; + } + } + //save next uncollapsed element in array + collapsed[1][clickedID] = targetID; + if (nextObj == null) + return; + //move following texts upwards + while (nextObj != null) { + attr = nextObj.attributes; + for (i=0;i nodeex) { + revert[j] = 1; + } else { + revert[j] = 0; + } + } +} + +function setStatus(evt, color1, color2) +{ + var clickObj = evt.getTarget(); + var clickObjName = clickObj.getAttribute('id'); + + //find i corresponding to the clicked object + for (i=0; i<%i; i++) { + if (name[i] == "") { + name[i] = clickObjName; + break; + } + if (name[i] != clickObjName) + continue; + break; + } + + //toggle click status, color clicked object + if (clickStatus[i] == 0) { + clickStatus[i] = 1; + clickObj.setAttribute("style","fill: "+color1); + } else { + clickStatus[i] = 0; + clickObj.setAttribute("style","fill: "+color2); + } + + //adjust color-counter + if (color1 == 'red') { + if (clickStatus[i] == 1) { + redCount[i]++; + } else { + redCount[i]--; + } + } + if (color1 == 'salmon') { + if (clickStatus[i] == 1) { + salmonCount[i]++; + } else { + salmonCount[i]--; + } + } + + if (clickStatus[i] == 0 && salmonCount[i] > 0) { + clickObj.setAttribute("style","fill: salmon"); + } +} + +function changeColor(evt, targetObjName, color1, color2) +{ + var clickObj = evt.getTarget(); + var clickObjName = clickObj.getAttribute('id'); + var targetObj = svgDocument.getElementById(targetObjName); + + //find i corresponding to the clicked object + for (i=0; i<%i; i++) { + if (name[i] != clickObjName) + continue; + break; + } + + //find j corresponding to the target object + for (j=0; j<%i; j++) { + if (name[j] == "") { + name[j] = targetObjName; + break; + } + if (name[j] != targetObjName) + continue; + break; + } + + //adjust color-counter + if (color1 == 'red') { + if (clickStatus[i] == 1) { + redCount[j]++; + } else { + redCount[j]--; + } + } + if (color1 == 'salmon') { + if (clickStatus[i] == 1) { + salmonCount[j]++; + } else { + salmonCount[j]--; + } + } +} + +function colorText(targetObjName, color) +{ + var targetObj = svgDocument.getElementById(targetObjName); + + //find i corresponding to the target object + for (i=0; i<%i; i++) { + if (name[i] != targetObjName) + continue; + break; + } + + //color text + if (i == %i) { + targetObj.setAttribute("style","fill: "+color); + return; + } + if (redCount[i] == 0 && salmonCount[i] == 0) { + targetObj.setAttribute("style","fill: "+color); + } + if (salmonCount[i] > 0) { + if (color == 'red') { + targetObj.setAttribute("style","fill: red"); + } else { + if (redCount[i] > 0) { + targetObj.setAttribute("style","fill: red"); + } else { + targetObj.setAttribute("style","fill: salmon"); + } + } + } +} diff --git a/tools/dump-svg.c b/tools/dump-svg.c new file mode 100644 index 0000000..4220a54 --- /dev/null +++ b/tools/dump-svg.c @@ -0,0 +1,3342 @@ +/* + * dump-svg.c -- + * + * Operations to extract a SVG diagram from MIB modules. + * This driver is based on the cm-driver by A. Mueller. + * Mail comments and suggestions to sperner@ibr.cs.tu-bs.de + * + * Copyright (c) 2004-2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-svg.c 8090 2008-04-18 12:56:29Z strauss $ + */ + + + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" +#include "dump-svg-script.h" + +#define URL "http://www.ibr.cs.tu-bs.de/projects/libsmi/svg/mib2svg.cgi?" + + + +extern int smiAsprintf(char **strp, const char *format, ...); + + + +/* + * Definitions used by the svg output driver (node layout). + */ + +/* FIXME int or float? */ +static const float HEADFONTSIZETABLE = (float)7; +static const float HEADSPACESIZETABLE = (float)4; +static const float ATTRFONTSIZE = (float)7; +static const float ATTRSPACESIZE = (float)2; +static const float TABLEHEIGHT = (float)20; /*headline of the table*/ +static const float TABLEELEMHEIGHT = (float)15; /*height of one attribute*/ +static const float TABLEBOTTOMHEIGHT = (float)5; /*bottom of the table*/ + +static const int MODULE_INFO_WIDTH =150; +/* The description of RowStatus is quite long... :-/ */ +static const int DYN_TEXT =470; + +/* used by the springembedder */ +static const int ITERATIONS =100; + +static char *link; +static const char *linkcolor = "blue"; + + + +/* ------ Misc. ----------------- */ + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + if (tm->tm_hour == 0 && tm->tm_min == 0) { + smiAsprintf(&s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + } else { + smiAsprintf(&s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + } + return s; +} + + + +/* -------------- main functions ------------------------------------------- */ + + + +/* + * Creates the graph nodes of the given module + */ +static void algCreateNodes(SmiModule *module) +{ + SmiNode *node; + GraphNode *newNode; + + /* get tables and scalars from the MIB module */ + for (node = smiGetFirstNode(module, SMI_NODEKIND_TABLE); + node; + node = smiGetNextNode(node, SMI_NODEKIND_TABLE)) { + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + newNode = graphInsertNode(graph, node); + newNode->smiModule = module; + } + for (node = smiGetFirstNode(module, SMI_NODEKIND_SCALAR); + node; + node = smiGetNextNode(node, SMI_NODEKIND_SCALAR)) { + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + newNode = graphInsertNode(graph, node); + newNode->smiModule = module; + } +} + + + +/* ------ XML primitives ------ */ + + + +/* + * parseTooltip: Parse any input to output to make the text safe for the + * ShowTooltipMZ-functin in the ecma-script. + */ +static void parseTooltip(char *input, char *output) +{ + int i, j; + + for (i = j = 0; input[i]; i++) { + switch (input[i]) { + case '\n': + output[j++] = '\\'; + output[j++] = 'n'; + break; + case '\\': + output[j++] = '\\'; + output[j++] = '\\'; + break; + case '\"': + /* quotes are not allowed in strings. */ + /* See chapter 3.4.5 in "Understanding SNMP MIBs" */ + break; + case '&': + output[j++] = '&'; + output[j++] = 'a'; + output[j++] = 'm'; + output[j++] = 'p'; + output[j++] = ';'; + break; + case '<': + output[j++] = '&'; + output[j++] = 'l'; + output[j++] = 't'; + output[j++] = ';'; + break; + case '>': + output[j++] = '&'; + output[j++] = 'g'; + output[j++] = 't'; + output[j++] = ';'; + break; + case '\'': + /* It seems, ' doesn't work... */ + output[j++] = '\\'; + output[j++] = '\''; + break; + default: + output[j++] = input[i]; + } + } + output[j] = '\0'; +} + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + +static int isNotificationGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_NOTIFICATION) { + return 0; + } + } + + return 1; +} + +static char *printFillColor(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "rgb(0%,0%,0%)" : + (status == SMI_STATUS_DEPRECATED) ? "rgb(40%,40%,40%)" : + (status == SMI_STATUS_OBSOLETE) ? "rgb(60%,60%,60%)" : + (status == SMI_STATUS_MANDATORY) ? "rgb(0%,0%,0%)" : + (status == SMI_STATUS_OPTIONAL) ? "rgb(20%,20%,20%)" : + ""; +} + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + +/* + * Prints the footer of the SVG output file. + */ +static void printSVGClose(float xMin, float yMin, float xMax, float yMax) +{ + float scale; + + scale = max((xMax-xMin)/CANVASWIDTH,(yMax-yMin)/CANVASHEIGHT); + /* enclose whole canvas in its bounding box */ + /* + printf(" \n"); + */ + if (!STATIC_OUTPUT) { + printf(" \n", + xMin, yMin, scale); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" "); + printf("dyn. Text\n"); + printf(" dyn. Text\n"); + printf(" \n"); + printf(" \n"); + } + printf("\n"); +} + +/* + * FIXME stimmt das? + * index = 0 -> no index element + * index = 1 -> index element -> printed with "+" + */ +static void printSVGAttribute(SmiNode *node, SmiNode *tableNode, int index, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + int i, target_exists = 0; + size_t length; + char *tooltip, *tooltipDescription, *typeDescription; + const char *baseTypeTooltipText = "This is a basetype."; + const char *isDefined = " is defined in module "; + + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + return; + + printf(" name); + } + printf(" fill=\"%s\"", printFillColor(node->status)); + printf(" x=\"%.2f\" y=\"%.2f\">\n", + *textXOffset + ATTRSPACESIZE + 4, *textYOffset); + + *textYOffset += TABLEELEMHEIGHT; + + /* FIXME + rintf(" textLength=\"100\" lengthAdjust=\"spacingAndGlyphs\""); */ + + if (!index) { + if (node->access == SMI_ACCESS_NOT_ACCESSIBLE) { + printf(" -"); + } else { + printf(" +"); + } + } + + printf("description) { + tooltip = (char *)xmalloc(2*strlen(node->description)); + parseTooltip(node->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + if (index) { + for (i=0; i\n", linkcolor); + printf(" name); + } + printf("&mibs=%s\">\n", smiGetNodeModule(node)->name); + printf(" %s:\n", node->name); + printf(" \n"); + } else { + printf(">%s:\n", node->name); + } + } else { + printf(">%s:\n", node->name); + } + } else { + printf(">%s:\n", node->name); + } + + printf(" name); + strcat(tooltip, ":\\n\\n"); + strcat(tooltip, tooltipDescription); + } else { + length = strlen(tooltipDescription) + 150; + tooltip = (char *)xmalloc(length); + strcpy(tooltip, tooltipDescription); + } + } else { + length = strlen(tooltipDescription); + tooltip = (char *)xmalloc(length); + strcpy(tooltip, tooltipDescription); + } + xfree(tooltipDescription); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } else if (isBaseType(node)) { + length = strlen(baseTypeTooltipText) + 1; + tooltip = (char *)xmalloc(length); + strcpy(tooltip, baseTypeTooltipText); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + } + printf(">%s", algGetTypeName(node)); + switch (node->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(node->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); +} + +/* + * prints the related scalars for a given table + */ +static void printSVGRelatedScalars(GraphNode *node, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + + printSVGAttribute(tEdge->endNode->smiNode, tableNode, 0, + modc, modv, + textYOffset, textXOffset); + } + } +} + +/* + * prints all columns objects of the given node + */ +static void printSVGAllColumns(GraphNode *node, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + SmiModule *module = NULL; + SmiNode *smiNode = NULL; + SmiNode *ppNode; + + module = smiGetNodeModule(node->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(node->smiNode, smiNode) && + cmpSmiNodes(node->smiNode, ppNode)) + printSVGAttribute(smiNode, tableNode, 0, + modc, modv, + textYOffset, textXOffset); + } +} + +/* + * adds the index to an augmenting table (row-element) + */ +static void printSVGAugmentIndex(GraphNode *tNode, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + GraphEdge *tEdge; + SmiElement *smiElement; + + for (tEdge = graphGetFirstEdgeByNode(graph, tNode); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, tNode)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(tNode->smiNode, tEdge->startNode->smiNode)) { + printSVGAttribute(smiGetElementNode(smiElement), tableNode, + 1, modc, modv, + textYOffset, textXOffset); + } + } + } + } +} + +/* + * print "This module doesn't contain any objects" + */ +static void printNoObjects() +{ + printf(" \n"); + printf(" \n"); + printf(" This module doesn't\n"); + printf(" \n"); + printf(" \n"); + printf(" contain any objects.\n"); + printf(" \n"); +} + +/* + * print "This module only contains textual conventions" + */ +static void printOnlyTCs() +{ + printf(" \n"); + printf(" \n"); + printf(" This module only contains\n"); + printf(" \n"); + printf(" \n"); + printf(" textual conventions.\n"); + printf(" \n"); +} + +/* + * create svg-output for the given node + */ +static void printSVGObject(GraphNode *node, int *classNr, + int modc, SmiModule **modv) +{ + SmiElement *smiElement; + float textXOffset, textYOffset, xOrigin, yOrigin; + size_t length = 1; + char *tooltip, *tooltipTable, *tooltipEntry; + const char *blankLine = "\\n-- -- --\\n"; + + if (!node) return; + + xOrigin = node->dia.w/-2; + yOrigin = node->dia.h/-2; + textYOffset = yOrigin + TABLEHEIGHT + TABLEELEMHEIGHT; + textXOffset = xOrigin; + + printf(" \n", + node->dia.x + node->component->xOffset, + node->dia.y + node->component->yOffset); + printf(" smiNode->name); + printf(" x=\"%.2f\" y=\"%.2f\" width=\"%.2f\" height=\"%.2f\"\n", + xOrigin, yOrigin, node->dia.w, node->dia.h); + printf(" fill=\"white\" stroke=\"black\"/>\n"); + if (!STATIC_OUTPUT) { + printf(" \n"); + } + printf(" dia.w, yOrigin + TABLEHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + printf(" smiNode->status)); + printf(" style=\"text-anchor:middle; font-weight:bold\""); + + /* descriptions for the table and the entries */ + if (!STATIC_OUTPUT) { + if (node->smiNode->description) { + tooltipTable=(char *)xmalloc(2*strlen(node->smiNode->description)); + parseTooltip(node->smiNode->description, tooltipTable); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + tooltipEntry=(char *)xmalloc(2*strlen(smiGetFirstChildNode( + node->smiNode)->description)); + parseTooltip(smiGetFirstChildNode(node->smiNode)->description, + tooltipEntry); + } + + if (node->smiNode->description) { + length += strlen(tooltipTable); + } + if (node->smiNode->description + && smiGetFirstChildNode(node->smiNode)->description) { + length += strlen(blankLine); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + length += strlen(tooltipEntry); + } + tooltip = (char *)xmalloc(length); + + strcpy(tooltip, "\0"); + if (node->smiNode->description) { + strcat(tooltip, tooltipTable); + } + if (node->smiNode->description + && smiGetFirstChildNode(node->smiNode)->description) { + strcat(tooltip, blankLine); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + strcat(tooltip, tooltipEntry); + } + + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + + if (node->smiNode->description) { + xfree(tooltipTable); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + xfree(tooltipEntry); + } + xfree(tooltip); + } + + printf(">\n"); + printf(" %s",smiGetFirstChildNode(node->smiNode)->name); + switch (node->smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(node->smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + + (*classNr)++; + + if (node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + if (node->dia.relatedScalars) { + /* A */ + printSVGRelatedScalars(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + + printf(" dia.w, + textYOffset - TABLEELEMHEIGHT + TABLEBOTTOMHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + textYOffset += TABLEBOTTOMHEIGHT; + } + + if (node->dia.indexObjects) { + /* B */ + printSVGAugmentIndex(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + /* C */ + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + printSVGAttribute(smiGetElementNode(smiElement), node->smiNode, + 1, modc, modv, + &textYOffset, &textXOffset); + } + + printf(" dia.w, + textYOffset - TABLEELEMHEIGHT + TABLEBOTTOMHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + textYOffset += TABLEBOTTOMHEIGHT; + } + + /* D */ + if (PRINT_DETAILED_ATTR) { + printSVGAllColumns(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + } + } + + printf(" \n"); +} + +/* + * prints a group of scalars denoted by group + */ +static void printSVGGroup(int group, int *classNr, + int modc, SmiModule **modv) +{ + GraphNode *tNode; + float textXOffset, textYOffset, xOrigin, yOrigin; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) break; + } + + if (!tNode) return; + + xOrigin = tNode->dia.w/-2; + yOrigin = tNode->dia.h/-2; + textYOffset = yOrigin + TABLEHEIGHT + TABLEELEMHEIGHT; + textXOffset = xOrigin; + + printf(" \n", + tNode->dia.x + tNode->component->xOffset, + tNode->dia.y + tNode->component->yOffset); + printf(" smiNode)->name); + printf(" x=\"%.2f\" y=\"%.2f\" width=\"%.2f\" height=\"%.2f\"\n", + xOrigin, yOrigin, tNode->dia.w, tNode->dia.h); + printf(" fill=\"white\" stroke=\"black\"/>\n"); + if (!STATIC_OUTPUT) { + printf(" \n"); + } + printf(" dia.w, yOrigin + TABLEHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + printf(" smiNode)->status)); + printf(" style=\"text-anchor:middle; font-weight:bold\">\n"); + /* groups don't seem to have a description. */ + printf(" %s", smiGetParentNode(tNode->smiNode)->name); + switch (smiGetParentNode(tNode->smiNode)->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", + getStatusString(smiGetParentNode(tNode->smiNode)->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + + (*classNr)++; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + printSVGAttribute(tNode->smiNode, tNode->smiNode, 0, + modc, modv, + &textYOffset, &textXOffset); + } + } + + printf(" \n"); +} + +static void calculateIntersectionPoints(GraphEdge *tEdge) +{ + float alpha, beta; + const float PI = acos(-1); + + /* calculate intersection of edge and startNode */ + alpha = atan2(tEdge->startNode->dia.y-tEdge->endNode->dia.y, + tEdge->startNode->dia.x-tEdge->endNode->dia.x); + beta = atan2(tEdge->startNode->dia.h, tEdge->startNode->dia.w); + if (alpha < 0) + alpha += PI; + if (alpha < beta + || (alpha > PI-beta && alpha < PI+beta) + || alpha > 2*PI-beta) { + /* intersection at left or right border */ + if (tEdge->startNode->dia.x < tEdge->endNode->dia.x) { + tEdge->dia.startX = tEdge->startNode->dia.x + + tEdge->startNode->dia.w/2; + } else { + tEdge->dia.startX = tEdge->startNode->dia.x - + tEdge->startNode->dia.w/2; + } + if (tEdge->startNode->dia.y < tEdge->endNode->dia.y) { + tEdge->dia.startY = tEdge->startNode->dia.y + + fabsf(tEdge->startNode->dia.w*tan(alpha)/2); + } else { + tEdge->dia.startY = tEdge->startNode->dia.y - + fabsf(tEdge->startNode->dia.w*tan(alpha)/2); + } + } else { + /* intersection at top or bottom border */ + if (tEdge->startNode->dia.y < tEdge->endNode->dia.y) { + tEdge->dia.startY = tEdge->startNode->dia.y + + tEdge->startNode->dia.h/2; + } else { + tEdge->dia.startY = tEdge->startNode->dia.y - + tEdge->startNode->dia.h/2; + } + if (tEdge->startNode->dia.x < tEdge->endNode->dia.x) { + tEdge->dia.startX = tEdge->startNode->dia.x + + fabsf(tEdge->startNode->dia.h/(2*tan(alpha))); + } else { + tEdge->dia.startX = tEdge->startNode->dia.x - + fabsf(tEdge->startNode->dia.h/(2*tan(alpha))); + } + } + + /* calculate intersection of edge and endNode */ + alpha = atan2(tEdge->startNode->dia.y-tEdge->endNode->dia.y, + tEdge->startNode->dia.x-tEdge->endNode->dia.x); + beta = atan2(tEdge->endNode->dia.h, tEdge->endNode->dia.w); + if (alpha < 0) + alpha += PI; + if (alpha < beta + || (alpha > PI-beta && alpha < PI+beta) + || alpha > 2*PI-beta) { + /* intersection at left or right border */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) { + tEdge->dia.endX = tEdge->endNode->dia.x + tEdge->endNode->dia.w/2; + } else { + tEdge->dia.endX = tEdge->endNode->dia.x - tEdge->endNode->dia.w/2; + } + if (tEdge->startNode->dia.y > tEdge->endNode->dia.y) { + tEdge->dia.endY = tEdge->endNode->dia.y + + fabsf(tEdge->endNode->dia.w*tan(alpha)/2); + } else { + tEdge->dia.endY = tEdge->endNode->dia.y - + fabsf(tEdge->endNode->dia.w*tan(alpha)/2); + } + } else { + /* intersection at top or bottom border */ + if (tEdge->startNode->dia.y > tEdge->endNode->dia.y) { + tEdge->dia.endY = tEdge->endNode->dia.y + tEdge->endNode->dia.h/2; + } else { + tEdge->dia.endY = tEdge->endNode->dia.y - tEdge->endNode->dia.h/2; + } + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) { + tEdge->dia.endX = tEdge->endNode->dia.x + + fabsf(tEdge->endNode->dia.h/(2*tan(alpha))); + } else { + tEdge->dia.endX = tEdge->endNode->dia.x - + fabsf(tEdge->endNode->dia.h/(2*tan(alpha))); + } + } +} + +static void printSVGDependency(GraphEdge *tEdge) +{ + int revert = 0; + + calculateIntersectionPoints(tEdge); + + /* print text upside down, if angle is between 180° and 360° */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) + revert = 1; + + printf(" startNode->smiNode->name, + tEdge->endNode->smiNode->name); + if (!revert) { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset, + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset); + } else { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset, + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset); + } + printf(" stroke-dasharray=\"10, 10\" stroke=\"black\""); + if (!revert) { + printf(" marker-end=\"url(#arrowend)\"/>\n"); + } else { + printf(" marker-start=\"url(#arrowstart)\"/>\n"); + } +} + +/* + * Aggregation is a special case of the association. + * If aggregate = 1 it is an aggregation if 0 it is an association. + */ +static void printSVGAssociation(GraphEdge *tEdge, int aggregate) +{ + int revert = 0; + + if (aggregate > 1) aggregate = 1; + if (aggregate < 0) aggregate = 0; + + calculateIntersectionPoints(tEdge); + + /* expands should have cardinalities 1 * */ + if (tEdge->indexkind==SMI_INDEX_EXPAND) + tEdge->cardinality = GRAPH_CARD_ONE_TO_MANY; + + /* print text upside down, if angle is between 180° and 360° */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) + revert = 1; + + /* print edge */ + printf(" startNode->smiNode->name, + tEdge->endNode->smiNode->name); + if (!revert) { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset, + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset); + } else { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset, + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset); + } + printf(" stroke=\"black\""); + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_EXPAND) { + if (!revert) { + printf(" marker-start=\"url(#arrowstart)\""); + } else { + printf(" marker-end=\"url(#arrowend)\""); + } + } else if (tEdge->indexkind==SMI_INDEX_REORDER) { + printf(" marker-start=\"url(#arrowstart)\""); + printf(" marker-end=\"url(#arrowend)\""); + } + printf("/>\n"); + + /* edges without labels are finished here */ + if (tEdge->cardinality==GRAPH_CARD_UNKNOWN) + return; + + /* print labels */ + printf(" \n"); + printf(" startNode->smiNode->name, tEdge->endNode->smiNode->name); + if (!revert) { + printf(" startOffset=\"10%%\">\n"); + } else { + printf(" startOffset=\"90%%\">\n"); + } + switch (tEdge->cardinality) { + case GRAPH_CARD_ZERO_TO_ONE: + case GRAPH_CARD_ZERO_TO_MANY: + printf(" 0"); + break; + case GRAPH_CARD_ONE_TO_ONE: + case GRAPH_CARD_ONE_TO_MANY: + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE: + printf(" 1"); + break; + case GRAPH_CARD_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_REORDER || + tEdge->indexkind==SMI_INDEX_EXPAND) { + printf(" \n"); + printf(" \n", + tEdge->startNode->smiNode->name, tEdge->endNode->smiNode->name); + } + switch(tEdge->indexkind) { + case SMI_INDEX_AUGMENT: + printf(" augments"); + break; + case SMI_INDEX_SPARSE: + printf(" sparsly augments"); + break; + case SMI_INDEX_REORDER: + printf(" reorders"); + break; + case SMI_INDEX_EXPAND: + printf(" expands"); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_INDEX: + ; + } + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_REORDER || + tEdge->indexkind==SMI_INDEX_EXPAND) { + printf("\n"); + printf(" \n"); + } + + printf(" \n"); + printf(" startNode->smiNode->name, tEdge->endNode->smiNode->name); + if (!revert) { + printf(" startOffset=\"90%%\">\n"); + } else { + printf(" startOffset=\"10%%\">\n"); + } + switch (tEdge->cardinality) { + case GRAPH_CARD_ONE_TO_ONE: + case GRAPH_CARD_ZERO_TO_ONE: + printf(" 1"); + break; + case GRAPH_CARD_ONE_TO_MANY: + case GRAPH_CARD_ZERO_TO_MANY: + printf(" *"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE: + printf(" 0..1"); + break; + case GRAPH_CARD_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); +} + +static void printSVGConnection(GraphEdge *tEdge) +{ + switch (tEdge->connection) { + case GRAPH_CON_UNKNOWN: + break; + case GRAPH_CON_AGGREGATION : /* never used??? */ + printSVGAssociation(tEdge,1); + break; + case GRAPH_CON_DEPENDENCY : + printSVGDependency(tEdge); + break; + case GRAPH_CON_ASSOCIATION : + printSVGAssociation(tEdge,0); + break; + } +} + +/* + * Prints the title of the SVG output file (Modulename and smidump version). + * TODO + * Print title somewhere into the SVG. + * Make size of SVG configurable. + */ +static void printSVGHeaderAndTitle(int modc, SmiModule **modv, + int miCount, int idCount, + float xMin, float yMin, + float xMax, float yMax) +{ + size_t length1; + char *note1; + int i; + const char *s11 = "Conceptual model of "; + const char *s12 = "- generated by smidump " SMI_VERSION_STRING; + float scale; + + scale = max((xMax-xMin)/CANVASWIDTH,(yMax-yMin)/CANVASHEIGHT); + + /* + * Calculate the length of the string... + */ + + length1 = strlen(s11) + strlen(s12) + 1; + for (i = 0; i < modc; i++) { + length1 += strlen(modv[i]->name) + 1; + } + + /* + * ... before allocating a buffer and putting the string together. + */ + + note1 = xmalloc(length1); + strcpy(note1, s11); + for (i = 0; i < modc; i++) { + strcat(note1, modv[i]->name); + strcat(note1, " "); + } + strcat(note1, s12); + + printf("\n"); + printf("\n"); + printf("\n\n"); + + if (!STATIC_OUTPUT) { + /* css-stylesheet for the tooltip-text */ + printf("\n\n"); + + /* the ecma-script for the tooltip */ + /* and the folding of the module information */ + /* and the colorizing of the text */ + printf("\n\n"); + } + + printf(" %s\n", note1); + + /* definitions for the arrowheads */ + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n\n"); + + xfree(note1); +} + +/* + * Calculates the size of a given node for the UML representation. + * + * FIXME this algorithm may work good for a monospace-font. we have some + * problems with the proportional-font. :-( + */ +static GraphNode *calcNodeSize(GraphNode *node, int *idCount) +{ + GraphEdge *tEdge; + SmiNode *tNode,*ppNode; + SmiElement *smiElement; + SmiModule *module; + float lastHeight; + int stringlen; + + if (node->smiNode->nodekind == SMI_NODEKIND_SCALAR) return node; + + node->use = 1; + node->dia.x = (float) rand(); + node->dia.y = (float) rand(); + node->dia.x /= (float) RAND_MAX; + node->dia.y /= (float) RAND_MAX; + node->dia.w = strlen(node->smiNode->name) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + node->dia.h = TABLEHEIGHT + TABLEBOTTOMHEIGHT; + + lastHeight = node->dia.h; + /* A */ + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + + tNode = tEdge->endNode->smiNode; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +2; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + if (node->dia.h > lastHeight) { + node->dia.relatedScalars = 1; + node->dia.h += TABLEBOTTOMHEIGHT; + } + + lastHeight = node->dia.h; + /* B */ + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(node->smiNode, tEdge->startNode->smiNode)) { + + tNode = smiGetElementNode(smiElement); + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + + strlen(algGetTypeName(tNode)) +3; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + } + } + } + } + + /* C */ + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +3; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + } + if (node->dia.h > lastHeight) { + node->dia.indexObjects = 1; + node->dia.h += TABLEBOTTOMHEIGHT; + } + + /* D */ + if (PRINT_DETAILED_ATTR && node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + module = smiGetNodeModule(node->smiNode); + + for (tNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + tNode; + tNode = smiGetNextNode(tNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(tNode); + ppNode = smiGetParentNode(ppNode); + + if (cmpSmiNodes(node->smiNode, ppNode)) { + int len; + char *typeName; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + typeName = algGetTypeName(tNode); + len = strlen(tNode->name) + (typeName ? strlen(typeName)+2 : 1); + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + len += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, len + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + } + + return node; +} + +/* + * Calculates the size of a group-node for the UML representation. + */ +static GraphNode *calcGroupSize(int group, int *idCount) +{ + GraphNode *calcNode, *node; + SmiNode *tNode; + int stringlen; + + for (calcNode = graph->nodes; calcNode; calcNode = calcNode->nextPtr) { + if (calcNode->group == group) break; + } + + if (!calcNode) return NULL; + + calcNode->use = 1; + calcNode->dia.w = strlen(calcNode->smiNode->name) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + calcNode->dia.h = TABLEHEIGHT + TABLEBOTTOMHEIGHT; + + for (node = graph->nodes; node; node = node->nextPtr) { + if (node->group == group) { + tNode = node->smiNode; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +2; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + calcNode->dia.w = max(calcNode->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + calcNode->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + + return calcNode; +} + + +/* ------------------------------------------------------------------------- */ + + + +static int invalidType(SmiBasetype basetype) +{ + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); +} + +static int countTCs(int modc, SmiModule **modv) +{ + SmiType *smiType; + int i, invalid, j = 0; + + for (i=0; istatus != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (!invalid) { + j++; + } + } + } + } + + return j; +} + + +static void calcModuleIdentityCount(int modc, SmiModule **modv, + int *miCount, int modId[]) +{ + int i; + SmiNode *smiNode; + SmiRevision *smiRevision; + + /* MODULE-IDENTITY */ + (*miCount)++; + for (i = 0; i < modc; i++) { + modId[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + modId[i] = 1; + /* revision history of the module */ + smiRevision = smiGetFirstRevision(modv[i]); + if (!smiRevision) { + (*miCount)++; + } else { + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + (*miCount)++; + } + } + } + } +} + +static void calcNotificationTypeCount(int modc, SmiModule **modv, + int *miCount, int nType[]) +{ + int i; + SmiNode *smiNode; + + /* NOTIFICATION-TYPE */ + (*miCount)++; + for (i = 0; i < modc; i++) { + nType[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the notification */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + nType[i] = 1; + } + } + } +} + +static void calcObjectGroupCount(int modc, SmiModule **modv, + int *miCount, int oGroup[]) +{ + int i; + SmiNode *smiNode; + + /* OBJECT-GROUP */ + (*miCount)++; + for (i = 0; i < modc; i++) { + oGroup[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the group */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isObjectGroup(smiNode)) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + oGroup[i] = 1; + } + } + } +} + +static void calcNotificationGroupCount(int modc, SmiModule **modv, + int *miCount, int nGroup[]) +{ + int i; + SmiNode *smiNode; + + /* NOTIFICATION-GROUP */ + (*miCount)++; + for (i = 0; i < modc; i++) { + nGroup[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the group */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isNotificationGroup(smiNode)) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + nGroup[i] = 1; + } + } + } +} + +static void calcModuleComplianceCount(int modc, SmiModule **modv, + int *miCount, int mCompl[]) +{ + int i; + char *done = NULL; + char s[1024]; + char *module; + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiElement *smiElement; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + + /* MODULE-COMPLIANCE */ + (*miCount)++; + for (i = 0; i < modc; i++) { + mCompl[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the compliance */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + mCompl[i] = 1; + /* modules for the compliance */ + done = xstrdup("+"); + for (module = modv[i]->name; module; ) { + /* name of the module */ + (*miCount)++; + /* mandatory groups */ + (*miCount)++; + /* groups */ + for (smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + (*miCount)++; + } + } + /* objects */ + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + (*miCount)++; + } + } + /* find next module */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", smiGetNodeModule(smiGetElementNode( + smiElement))->name); + if ((!strstr(done, s))) { + module = smiGetNodeModule(smiGetElementNode( + smiElement))->name; + break; + } + } + } + xfree(done); + } + } + } +} + +/* + * calculate the number of entries in the module-information-section. + * headings for empty sections are counted here, but they are omitted + * in the svg, so the calculated number is an upper bound. the maximal + * size of this gap is 4*(modc+1). this may be considered as a bug. + */ +static void prepareModInfo(int modc, SmiModule **modv, int *miCount, + int modId[], int nType[], int oGroup[], int nGroup[], int mCompl[]) +{ + calcModuleIdentityCount(modc, modv, miCount, modId); + calcNotificationTypeCount(modc, modv, miCount, nType); + calcObjectGroupCount(modc, modv, miCount, oGroup); + calcNotificationGroupCount(modc, modv, miCount, nGroup); + calcModuleComplianceCount(modc, modv, miCount, mCompl); +} + + +/* ------------------------------------------------------------------------- */ + +static void populateMarkupList(SmiNode *smiNode, int *miNr, + StringListElem markupList[], int miCount) +{ + int i; + SmiElement *smiElement; + StringListElem *lastElem; + StringListElem *tElem; + StringListElem *newElem; + StringListElem *cloneElem; + + markupList[*miNr].miElem = smiNode->name; + markupList[*miNr].status = smiNode->status; + markupList[*miNr].nextPtr = NULL; + + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + newElem = xmalloc(sizeof(StringListElem)); + memset(newElem, 0, sizeof(StringListElem)); + newElem->miElem = smiGetElementNode(smiElement)->name; + newElem->status = smiGetElementNode(smiElement)->status; + + if (markupList[*miNr].nextPtr == NULL) { + markupList[*miNr].nextPtr = newElem; + } else { + for (tElem = markupList[*miNr].nextPtr; + tElem; tElem = tElem->nextPtr) { + lastElem = tElem; + } + lastElem->nextPtr = newElem; + } + if (isNotificationGroup(smiNode)) { + for (i=0; imiElem) + continue; + for (tElem = markupList[i].nextPtr; + tElem; tElem = tElem->nextPtr) { + cloneElem = xmalloc(sizeof(StringListElem)); + memcpy(cloneElem, tElem, sizeof(StringListElem)); + newElem->nextPtr = cloneElem; + newElem = newElem->nextPtr; + } + } + } + } +} + +static void printInformationNode(SmiNode *smiNode, + float *x, float *y, int *miNr, + StringListElem markupList[], int miCount) +{ + int j, k; + char *tooltip; + SmiElement *smiElement; + StringListElem *tElem; + + printf(" \n", *x, *y); + printf(" name); + printf(" fill=\"%s\"", printFillColor(smiNode->status)); + + if (!STATIC_OUTPUT) { + smiElement = smiGetFirstElement(smiNode); + if (smiElement || smiNode->description) { + printf(" onmousemove=\""); + } + if (smiNode->description) { + tooltip = (char *)xmalloc(2*strlen(smiNode->description)); + parseTooltip(smiNode->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiElement && smiNode->description) { + printf(";"); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + printf(";"); + } + printf("colorText('%s','red')", + smiGetElementNode(smiElement)->name); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','red')", tElem->miElem); + } + } + } + } + if (j || smiNode->description) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onclick=\"setStatus(evt,'red','%s')", + printFillColor(smiNode->status)); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + printf(";changeColor(evt,'%s','red','%s')", + smiGetElementNode(smiElement)->name, + printFillColor(smiGetElementNode(smiElement)->status)); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','red','%s')", + tElem->miElem, printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement || smiNode->description) { + printf(" onmouseout=\""); + } + if (smiNode->description) { + printf("HideTooltip(evt)"); + } + if (smiElement && smiNode->description) { + printf(";"); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + printf(";"); + } + printf("colorText('%s',", smiGetElementNode(smiElement)->name); + printf("'%s')", + printFillColor(smiGetElementNode(smiElement)->status)); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + } + if (j || smiNode->description) { + printf("\""); + } + } + + printf(">%s", smiNode->name); + switch (smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; +} + +static void printComplianceNode(SmiNode *smiNode, int modc, SmiModule **modv, + float *x, float *y, int *miNr, int i, + StringListElem markupList[], int miCount) +{ + int j, k, foreign_exists, textColor = 0; + char *tooltip; + char *done = NULL; + char s[1024]; + char *module; + SmiNode *smiNode2; + SmiModule *smiModule2; + SmiElement *smiElement; + /* SmiRevision *smiRevision; */ + SmiOption *smiOption; + SmiRefinement *smiRefinement; + StringListElem *tElem; + + printf(" \n", *x, *y); + printf(" status) { + case SMI_STATUS_DEPRECATED: + printf(" fill=\"rgb(40%%,40%%,40%%)\""); + textColor = 40; + break; + case SMI_STATUS_OBSOLETE: + printf(" fill=\"rgb(60%%,60%%,60%%)\""); + textColor = 60; + break; + case SMI_STATUS_CURRENT: + case SMI_STATUS_MANDATORY: + printf(" fill=\"rgb(0%%,0%%,0%%)\""); + textColor = 0; + break; + case SMI_STATUS_OPTIONAL: + printf(" fill=\"rgb(20%%,20%%,20%%)\""); + textColor = 20; + break; + case SMI_STATUS_UNKNOWN: + ; + } + printf(">\n"); + + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" description) { + tooltip = (char *)xmalloc(2*strlen(smiNode->description)); + parseTooltip(smiNode->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + printf("\" onmouseout=\"HideTooltip(evt)\""); + } + printf(">%s", smiNode->name); + switch (smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + + /* modules for the compliance */ + *x += TABLEELEMHEIGHT; + done = xstrdup("+"); + for (module = modv[i]->name; module; ) { + foreign_exists = 0; + if (module == modv[i]->name) { + foreign_exists = 1; + } else { + for (j = 0; j < modc; j++) { + if (module == modv[j]->name) { + foreign_exists = 1; + break; + } + } + } + printf(" \n", *x, *y); + printf(" \n", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + if (!foreign_exists && !STATIC_OUTPUT) { + printf(" \n", linkcolor); + printf(" name); + } + printf("&mibs=%s\">", module); + printf("%s", module); + printf("\n"); + printf(" \n"); + } else { + printf(" %s\n", module); + } + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + + /* mandatory groups */ + *x += TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + printf(" \n", *x, *y); + printf(" name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT && foreign_exists) { + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onmousemove=\""); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + if (j) { + printf(";"); + } + printf("colorText('%s','red')", + smiGetElementNode(smiElement)->name); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','red')", tElem->miElem); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onclick=\"setStatus(evt,'red','%s')", + printFillColor(smiNode->status)); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + printf(";changeColor(evt,'%s','red','%s')", + smiGetElementNode(smiElement)->name, + printFillColor(smiGetElementNode(smiElement)->status)); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','red','%s')", + tElem->miElem, printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onmouseout=\""); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + if (j) { + printf(";"); + } + printf("colorText('%s',", + smiGetElementNode(smiElement)->name); + printf("'%s')", + printFillColor(smiGetElementNode(smiElement)->status)); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + } + printf(">Mandatory Groups\n"); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + + /* groups */ + for (smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + printf(" \n", *x, *y); + printf(" name, smiNode2->name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" onmousemove=\""); + if (smiOption->description) { + tooltip = (char *)xmalloc(2*strlen( + smiOption->description)); + parseTooltip(smiOption->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiOption->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s','salmon')", smiNode2->name); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','salmon')", + tElem->miElem); + } + } + } + + if (foreign_exists) { + printf("\" onclick=\"setStatus(evt,'salmon','%s')", + printFillColor(smiNode2->status)); + printf(";changeColor(evt,'%s','salmon','%s')", + smiNode2->name, printFillColor(smiNode2->status)); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','salmon','%s')", + tElem->miElem, + printFillColor(tElem->status)); + } + } + } + + printf("\" onmouseout=\""); + if (smiOption->description) { + printf("HideTooltip(evt)"); + } + if (smiOption->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s',", smiNode2->name); + printf("'%s')", printFillColor(smiNode2->status)); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + printf("\""); + } + printf(">Group %s\n", smiNode2->name); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + + /* objects */ + for (smiRefinement = smiGetFirstRefinement(smiNode); smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + printf(" \n", *x, *y); + printf(" name, smiNode2->name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" onmousemove=\""); + if (smiRefinement->description) { + tooltip = (char *)xmalloc(2*strlen( + smiRefinement->description)); + parseTooltip(smiRefinement->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiRefinement->description && foreign_exists) + printf(";"); + if (foreign_exists) + printf("colorText('%s','salmon')", smiNode2->name); + + if (foreign_exists) { + printf("\" onclick=\"setStatus(evt,'salmon','%s')", + printFillColor(smiNode2->status)); + printf(";changeColor(evt,'%s','salmon','%s')", + smiNode2->name, printFillColor(smiNode2->status)); + } + + printf("\" onmouseout=\""); + if (smiRefinement->description) { + printf("HideTooltip(evt)"); + } + if (smiRefinement->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s',", smiNode2->name); + printf("'%s')", printFillColor(smiNode2->status)); + } + printf("\""); + } + printf(">Object %s\n", smiNode2->name); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + *x -= TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + + /* find next module */ + done = xrealloc(done, strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", smiGetNodeModule(smiGetElementNode( + smiElement))->name); + if ((!strstr(done, s))) { + module = smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + } + xfree(done); + *x -= TABLEELEMHEIGHT; +} + +static void printModuleIdentity(int modc, SmiModule **modv, + float *x, float *y, int *miNr) +{ + int i, j; + char *tooltip; + SmiNode *smiNode; + /* SmiElement *smiElement; */ + SmiRevision *smiRevision; + GraphNode *tNode; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Modules\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name and description of the module. */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" description || modc > 1) { + printf(" onmousemove=\""); + } + if (modv[i]->description) { + tooltip = (char *)xmalloc(2*strlen(modv[i]->description)); + parseTooltip(modv[i]->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (modv[i]->description && modc > 1) { + printf(";"); + } + if (modc > 1) { + j = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiModule == modv[i] && tNode->use) { + if (j) { + printf(";"); + } + if (tNode->group == 0) { + printf("colorText('%s','blanchedalmond')", + tNode->smiNode->name); + } else { + printf("colorText('%s','blanchedalmond')", + smiGetParentNode(tNode->smiNode)->name); + } + j++; + } + } + } + if (modv[i]->description || modc > 1) { + printf("\" onmouseout=\""); + } + if (modv[i]->description) { + printf("HideTooltip(evt)"); + } + if (modv[i]->description && modc > 1) { + printf(";"); + } + if (modc > 1) { + j = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiModule == modv[i] && tNode->use) { + if (j) { + printf(";"); + } + if (tNode->group == 0) { + printf("colorText('%s','white')", + tNode->smiNode->name); + } else { + printf("colorText('%s','white')", + smiGetParentNode(tNode->smiNode)->name); + } + j++; + } + } + } + if (modv[i]->description || modc > 1) { + printf("\""); + } + } + printf(">%s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* revision history of the module. */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + smiRevision = smiGetFirstRevision(modv[i]); + if (!smiRevision) { + printf(" \n", + *miNr, *x, *y); + printf(" 1970-01-01\n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + } else { + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + printf(" \n", *x, *y); + printf(" description && strcmp( + smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + tooltip = (char *)xmalloc(2* + strlen(smiRevision->description)); + parseTooltip(smiRevision->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", + tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + printf(">%s\n", getTimeString(smiRevision->date)); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printNotificationType(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int nType[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Notifications\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!nType[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the notification */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], + SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printObjectGroup(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int oGroup[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Object Groups\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!oGroup[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the group */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isObjectGroup(smiNode)) + continue; + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printNotificationGroup(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int nGroup[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Notification Groups\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!nGroup[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the group */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isNotificationGroup(smiNode)) + continue; + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printModuleCompliance(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int mCompl[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Compliance Statements\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!mCompl[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the compliance */ + *x += 2*TABLEELEMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], + SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_COMPLIANCE)) { + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + printComplianceNode(smiNode, modc, modv, x, y, miNr, i, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printModuleInformation(int modc, SmiModule **modv, + float x, float y, float maxHeight, + int modId[], int nType[], int oGroup[], + int nGroup[], int mCompl[], int miCount) +{ + int i, j, miNr = 0; + float scale = 1, miHeight; + int modIdPrint = 0; + int nTypePrint = 0, oGroupPrint = 0, nGroupPrint = 0, mComplPrint = 0; + + StringListElem *markupList = xcalloc(miCount,sizeof(StringListElem)); + + /* only print sections containig information */ + for (i = 0; i < modc; i++) { + modIdPrint |= modId[i]; + nTypePrint |= nType[i]; + oGroupPrint |= oGroup[i]; + nGroupPrint |= nGroup[i]; + mComplPrint |= mCompl[i]; + } + + /* count blank lines */ + i = 0; + j = 0; + if (modIdPrint) { + i++; + } else { + j++; + } + if (nTypePrint) { + i++; + } else { + j++; + } + if (oGroupPrint) { + i++; + } else { + j++; + } + if (nGroupPrint) { + i++; + } else { + j++; + } + if (mComplPrint) { + i++; + } else { + j++; + } + if (i>1) + i--; + + /* test if we must shrink moduleInformation to fit it into canvas */ + miHeight = ((miCount + i - (2 * j)) * 15 + 10); + if (miHeight > maxHeight) + scale *= maxHeight/miHeight; + + printf(" \n", + x, y, scale); + + /* now use x and y as relative coordinates. */ + x = 0; + y = 10; + + if (modIdPrint) + printModuleIdentity(modc, modv, &x, &y, &miNr); + if (nTypePrint) + printNotificationType(modc, modv, &x, &y, &miNr, nType, markupList, + miCount); + if (oGroupPrint) + printObjectGroup(modc, modv, &x, &y, &miNr, oGroup, markupList, + miCount); + if (nGroupPrint) + printNotificationGroup(modc, modv, &x, &y, &miNr, nGroup, markupList, + miCount); + if (mComplPrint) + printModuleCompliance(modc, modv, &x, &y, &miNr, mCompl, markupList, + miCount); + + printf(" \n"); + + if (markupList) xfree(markupList); +} + + +/* ------------------------------------------------------------------------- */ + + +static float fa(float d, float k) +{ + return (float) (d*d/k); +} + +static float fr(float d, float k) +{ + return (float) (k*k/d); +} + +static int overlap(GraphNode *vNode, GraphNode *uNode) +{ + if (vNode->dia.x+vNode->dia.w/2>=uNode->dia.x-uNode->dia.w/2 && + vNode->dia.x-vNode->dia.w/2<=uNode->dia.x+uNode->dia.w/2 && + vNode->dia.y+vNode->dia.h/2>=uNode->dia.y-uNode->dia.h/2 && + vNode->dia.y-vNode->dia.h/2<=uNode->dia.y+uNode->dia.h/2) { + return 1; + } else { + return 0; + } +} + +/* + * test if node and edge intersect + */ +static float intersect(GraphNode *node, GraphEdge *edge) +{ + float a, b, intersect = 0; + + /* handle case in which edge is parallel to y-axis */ + if (edge->endNode->dia.x == edge->startNode->dia.x) { + if ((node->dia.x-node->dia.w/2 < edge->endNode->dia.x && + node->dia.x+node->dia.w/2 < edge->endNode->dia.x) || + (node->dia.x-node->dia.w/2 > edge->endNode->dia.x && + node->dia.x+node->dia.w/2 > edge->endNode->dia.x)) + return intersect; + intersect = node->dia.x - edge->startNode->dia.x; + } else { + /* calculate a and b for y=ax+b */ + a = (edge->endNode->dia.y - edge->startNode->dia.y) / + (edge->endNode->dia.x - edge->startNode->dia.x); + b = edge->startNode->dia.y - (a * edge->startNode->dia.x); + /* test if entire node is above or under edge */ + if ((node->dia.y-node->dia.h/2 - (a * node->dia.x-node->dia.w/2) > b && + node->dia.y+node->dia.h/2 - (a * node->dia.x-node->dia.w/2) > b && + node->dia.y-node->dia.h/2 - (a * node->dia.x+node->dia.w/2) > b && + node->dia.y+node->dia.h/2 - (a * node->dia.x+node->dia.w/2) > b) || + (node->dia.y-node->dia.h/2 - (a * node->dia.x-node->dia.w/2) < b && + node->dia.y+node->dia.h/2 - (a * node->dia.x-node->dia.w/2) < b && + node->dia.y-node->dia.h/2 - (a * node->dia.x+node->dia.w/2) < b && + node->dia.y+node->dia.h/2 - (a * node->dia.x+node->dia.w/2) < b)) + return intersect; + intersect = (a * node->dia.x - node->dia.y + b) / + (float)(sqrt(a*a+1)); + } + /* test if node is over upper end of edge or under lower end of edge */ + if (node->dia.y+node->dia.h/2 < + min(edge->startNode->dia.y,edge->endNode->dia.y) || + node->dia.y-node->dia.h/2 > + max(edge->startNode->dia.y,edge->endNode->dia.y)) { + intersect = 0; + return intersect; + } + /* node and edge intersect */ + return intersect; +} + +/* + * Implements the springembedder. Look at LNCS 2025, pp. 71-86. + * and: http://citeseer.ist.psu.edu/fruchterman91graph.html + * Input: Graph with known width and height of nodes. + * Output: Coordinates (x,y) for the nodes. + * Only the nodes and edges with use==1 are considered. + */ +static void layoutComponent(GraphComponent *component, + int nodeoverlap, int edgeoverlap) +{ + int i; + float k, xDelta, yDelta, absDelta, absDisp, t, dist; + GraphNode *vNode, *uNode; + GraphEdge *eEdge; + + k = 400; + t = 200; + + for (i=0; ifirstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + vNode->dia.xDisp = 0; + vNode->dia.yDisp = 0; + for (uNode = component->firstComponentNode; uNode; + uNode = uNode->nextComponentNode) { + if (vNode==uNode) + continue; + xDelta = vNode->dia.x - uNode->dia.x; + yDelta = vNode->dia.y - uNode->dia.y; + absDelta = (float) (sqrt(xDelta*xDelta + yDelta*yDelta)); + vNode->dia.xDisp += (xDelta/absDelta)*fr(absDelta, k); + vNode->dia.yDisp += (yDelta/absDelta)*fr(absDelta, k); + /* add another repulsive force if the nodes overlap */ + if (nodeoverlap && overlap(vNode, uNode)) { + vNode->dia.xDisp += 4*(xDelta/absDelta)*fr(1/absDelta, k); + vNode->dia.yDisp += 4*(yDelta/absDelta)*fr(1/absDelta, k); + } + } + } + for (eEdge = graph->edges; eEdge; eEdge = eEdge->nextPtr) { + if (!eEdge->use || eEdge->startNode->component != component) + continue; + /* add another repulsive force if edge and any node overlap */ + if (edgeoverlap) { + for (vNode = component->firstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + if (eEdge->startNode == vNode || + eEdge->endNode == vNode || + overlap(eEdge->startNode, vNode) || + overlap(eEdge->endNode, vNode)) + continue; + if ((dist = intersect(vNode, eEdge))) { + if (eEdge->startNode->dia.x == eEdge->endNode->dia.x) { + eEdge->startNode->dia.xDisp -= + 8*(dist/fabsf(dist))*fr(1/dist, k); + eEdge->endNode->dia.xDisp -= + 8*(dist/fabsf(dist))*fr(1/dist, k); + vNode->dia.xDisp += + 8*(dist/fabsf(dist))*fr(1/dist, k); + } else { + xDelta = -1*(eEdge->endNode->dia.y + -eEdge->startNode->dia.y) + /(eEdge->endNode->dia.x + -eEdge->startNode->dia.x); + yDelta = 1; + absDelta = (float) (sqrt(xDelta*xDelta + + yDelta*yDelta)); + eEdge->startNode->dia.xDisp += + 8*(xDelta/absDelta)*fr(1/dist, k); + eEdge->startNode->dia.yDisp += + 8*(yDelta/absDelta)*fr(1/dist, k); + eEdge->endNode->dia.xDisp += + 8*(xDelta/absDelta)*fr(1/dist, k); + eEdge->endNode->dia.yDisp += + 8*(yDelta/absDelta)*fr(1/dist, k); + vNode->dia.xDisp -= + 8*(xDelta/absDelta)*fr(1/dist, k); + vNode->dia.yDisp -= + 8*(yDelta/absDelta)*fr(1/dist, k); + } + } + } + } + /* calculate attractive forces */ + xDelta = eEdge->startNode->dia.x - eEdge->endNode->dia.x; + yDelta = eEdge->startNode->dia.y - eEdge->endNode->dia.y; + absDelta = (float) (sqrt(xDelta*xDelta + yDelta*yDelta)); + eEdge->startNode->dia.xDisp -= (xDelta/absDelta)*fa(absDelta, k); + eEdge->startNode->dia.yDisp -= (yDelta/absDelta)*fa(absDelta, k); + eEdge->endNode->dia.xDisp += (xDelta/absDelta)*fa(absDelta, k); + eEdge->endNode->dia.yDisp += (yDelta/absDelta)*fa(absDelta, k); + } + /* limit the maximum displacement to the temperature t */ + for (vNode = component->firstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + absDisp = (float) (sqrt(vNode->dia.xDisp*vNode->dia.xDisp + + vNode->dia.yDisp*vNode->dia.yDisp)); + vNode->dia.x += (vNode->dia.xDisp/absDisp)*min(absDisp, t); + vNode->dia.y += (vNode->dia.yDisp/absDisp)*min(absDisp, t); + } + /* reduce the temperature as the layout approaches a better configuration */ + t *= 0.9; + } +} + + +/* ------------------------------------------------------------------------- */ + + +static void addNodeToComponent(GraphNode *tNode, GraphComponent *tComponent) +{ + GraphEdge *tEdge; + + tNode->component = tComponent; + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (!tEdge->use) + continue; + if (tEdge->startNode == tNode && tEdge->endNode->component == NULL) { + tEdge->endNode->nextComponentNode = tNode->nextComponentNode; + tNode->nextComponentNode = tEdge->endNode; + addNodeToComponent(tEdge->endNode, tComponent); + } + if (tEdge->endNode == tNode && tEdge->startNode->component == NULL) { + tEdge->startNode->nextComponentNode = tNode->nextComponentNode; + tNode->nextComponentNode = tEdge->startNode; + addNodeToComponent(tEdge->startNode, tComponent); + } + } +} + + +/* split the graph into components */ +static void splitGraphIntoComponents() +{ + GraphNode *tNode; + GraphComponent *tComponent; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!tNode->use) + continue; + if (tNode->component == NULL) { + tComponent = graphInsertComponent(graph); + tComponent->firstComponentNode = tNode; + addNodeToComponent(tNode, tComponent); + } + } +} + + +/* layout components (except first) and calculate bounding boxes and offsets */ +static void layoutComponents(float *yMin, float *yMax, float *x) +{ + GraphNode *tNode; + GraphComponent *tComponent; + + *x=10; + for (tComponent = graph->components->nextPtr; tComponent; + tComponent = tComponent->nextPtr) { + layoutComponent(tComponent, 0, 0); + /* FIXME do we need a stage with nodeoverlap and without edgeoverlap? */ + layoutComponent(tComponent, 1, 0); + layoutComponent(tComponent, 1, 1); + + for (tNode = tComponent->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + if (tNode->dia.x - tNode->dia.w/2 < tComponent->xMin) + tComponent->xMin = tNode->dia.x - tNode->dia.w/2; + if (tNode->dia.x + tNode->dia.w/2 > tComponent->xMax) + tComponent->xMax = tNode->dia.x + tNode->dia.w/2; + if (tNode->dia.y - tNode->dia.h/2 < tComponent->yMin) + tComponent->yMin = tNode->dia.y - tNode->dia.h/2; + if (tNode->dia.y + tNode->dia.h/2 > tComponent->yMax) + tComponent->yMax = tNode->dia.y + tNode->dia.h/2; + } + + tComponent->xOffset = *x - tComponent->xMin; + *x += 10 + tComponent->xMax - tComponent->xMin; + tComponent->yOffset = -0.5*(tComponent->yMin+tComponent->yMax); + if (tComponent->yMin + tComponent->yOffset < *yMin) + *yMin = tComponent->yMin + tComponent->yOffset; + if (tComponent->yMax + tComponent->yOffset > *yMax) + *yMax = tComponent->yMax + tComponent->yOffset; + } +} + + +/* Print SVG to stdout */ +static void printSVG(int modc, SmiModule **modv, int miCount, int idCount, + float xMin, float yMin, float xMax, float yMax, + int nodecount, int TCcount, + int modId[], int nType[], int oGroup[], + int nGroup[], int mCompl[]) +{ + GraphComponent *tComponent; + GraphNode *tNode; + GraphEdge *tEdge; + int classNr=0; + + /* output of svg to stdout begins here */ + printSVGHeaderAndTitle(modc, modv, miCount, idCount, + xMin, yMin, xMax, yMax); + + /* module doesn't contain any objects. */ + if (nodecount == 0) { + if (TCcount > 0) { + printOnlyTCs(); + } else { + printNoObjects(); + } + } + + /* loop through components (except first) to print edges and nodes */ + for (tComponent = graph->components->nextPtr; tComponent; + tComponent = tComponent->nextPtr) { + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (!tEdge->use || tEdge->startNode->component != tComponent) + continue; + printSVGConnection(tEdge); + } + for (tNode = tComponent->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + printSVGObject(tNode, &classNr, modc, modv); + } + /* enclose component in its bounding box */ + /* + printf(" xMin + tComponent->xOffset, + tComponent->yMin + tComponent->yOffset, + tComponent->xMax - tComponent->xMin, + tComponent->yMax - tComponent->yMin); + printf(" fill=\"none\" stroke=\"green\" stroke-width=\"1\"/>\n"); + */ + } + + /* print single nodes */ + for (tNode = graph->components->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + if (tNode->group == 0) { + printSVGObject(tNode, &classNr, modc, modv); + } else { + printSVGGroup(tNode->group, &classNr, modc, modv); + } + } + + /* print Module-Information */ + printModuleInformation(modc, modv, xMax-MODULE_INFO_WIDTH, yMin+10, + yMax-yMin, + modId, nType, oGroup, nGroup, mCompl, miCount); + + /* output of svg to stdout ends here */ + printSVGClose(xMin, yMin, xMax, yMax); +} + + +/* prepare nodes and edges for drawing */ +static void prepareNodesAndEdges(int *idCount, float *xMax, int *nodecount, + int *singleNodes, float *maxHeight) +{ + GraphNode *tNode, *lastNode = NULL; + GraphEdge *tEdge; + GraphComponent *tComponent; + float x=10; + int group; + + /* find edges which are supposed to be drawn */ + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (tEdge->connection != GRAPH_CON_UNKNOWN + && tEdge->startNode->smiNode->nodekind != SMI_NODEKIND_SCALAR + && tEdge->endNode->smiNode->nodekind != SMI_NODEKIND_SCALAR + && tEdge->startNode != tEdge->endNode) { + tEdge->use = 1; + tEdge->startNode->degree++; + tEdge->endNode->degree++; + } + } + + tComponent = graphInsertComponent(graph); + + /* prepare nodes which are supposed to be drawn */ + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + tNode = calcNodeSize(tNode, idCount); + if (tNode->smiNode->nodekind != SMI_NODEKIND_SCALAR) { + (*nodecount)++; + if (tNode->degree == 0) { + /* single nodes are members of the first component. */ + if (tComponent->firstComponentNode == NULL) { + tComponent->firstComponentNode = tNode; + } else { + lastNode->nextComponentNode = tNode; + } + lastNode = tNode; + tNode->component = tComponent; + tNode->dia.x = x + tNode->dia.w/2; + x += 10 + tNode->dia.w; + tNode->dia.y = 0; + if (tNode->dia.h > *maxHeight) + *maxHeight = tNode->dia.h; + } + } + } + for (group = 1; group <= algGetNumberOfGroups(); group++) { + tNode = calcGroupSize(group, idCount); + (*nodecount)++; + /* groupnodes are members of the first component. */ + if (tComponent->firstComponentNode == NULL) { + tComponent->firstComponentNode = tNode; + } else { + lastNode->nextComponentNode = tNode; + } + lastNode = tNode; + tNode->component = tComponent; + tNode->dia.x = x + tNode->dia.w/2; + x += 10 + tNode->dia.w; + tNode->dia.y = 0; + if (tNode->dia.h > *maxHeight) + *maxHeight = tNode->dia.h; + } + *xMax = x; + if (tComponent->firstComponentNode == NULL) + *singleNodes = 0; +} + + + +/* + * generate SVG diagram and print it to stdout: + * - identify and prepare nodes and egdes + * - split graph into its components + * - layout components + * - prepare module information + * - print header + * - print components + * - print module information + * - print footer + */ +static void generateSVG(int modc, SmiModule **modv) +{ + int nodecount=0, singleNodes=1, miCount=0; + int i, idCount=0, TCcount=0, miPrint=0; + float x=10, xMin=0, yMin=0, xMax=0, yMax=0, maxHeight=0; + + int *modId = xcalloc(modc,sizeof(int)); + int *nType = xcalloc(modc,sizeof(int)); + int *oGroup = xcalloc(modc,sizeof(int)); + int *nGroup = xcalloc(modc,sizeof(int)); + int *mCompl = xcalloc(modc,sizeof(int)); + + /* prepare nodes and edges for drawing */ + prepareNodesAndEdges(&idCount, &xMax, &nodecount, &singleNodes, &maxHeight); + + /* split the graph into components */ + splitGraphIntoComponents(); + + /* layout components (except first) and calculate bounding boxes and offsets */ + layoutComponents(&yMin, &yMax, &x); + + if (graph->components->nextPtr) + yMin -= 10; + yMax += 10; + if (x > xMax) + xMax = x; + + /* adjust values for the first component (component of single nodes) */ + graph->components->yOffset = yMax + maxHeight/2; + if (singleNodes) + yMax += maxHeight + 10; + + /* module doesn't contain any objects. */ + if (nodecount == 0) { + TCcount = countTCs(modc, modv); + if (TCcount > 0) { + xMax += 160; + } else { + xMax += 130; + } + yMax += 40; + } + + /* count entries in the ModuleInformation-Section */ + prepareModInfo(modc, modv, &miCount, modId, nType, oGroup, nGroup, mCompl); + idCount += miCount; + + /* enlarge canvas for ModuleInformation if it is supposed to be printed */ + for (i = 0; i < modc; i++) { + miPrint |= modId[i]; + miPrint |= nType[i]; + miPrint |= oGroup[i]; + miPrint |= nGroup[i]; + miPrint |= mCompl[i]; + } + if (miPrint) { + xMax += MODULE_INFO_WIDTH; + } + + printSVG(modc, modv, miCount, idCount, xMin, yMin, xMax, yMax, nodecount, + TCcount, modId, nType, oGroup, nGroup, mCompl); + + xfree(mCompl); + xfree(nGroup); + xfree(oGroup); + xfree(nType); + xfree(modId); +} + + + +static void buildLink(int modc, SmiModule **modv) +{ + size_t length; + const char *url = URL; + /* note: first string, so no & required */ + const char *widthstr = "width="; + const char *heightstr = "&height="; + const char *deprstr = "&deprobs=deprecated"; + const char *deprobsstr = "&deprobs=obsolete"; + char width[15]; + char height[15]; + + length = strlen(url); + sprintf(width, "%i", CANVASWIDTH); + sprintf(height, "%i", CANVASHEIGHT); + length += strlen(widthstr) + strlen(width); + length += strlen(heightstr) + strlen(height); + if (SHOW_DEPRECATED) { + length += strlen(deprstr); + } + if (SHOW_DEPR_OBSOLETE) { + length += strlen(deprobsstr); + } + link = xmalloc(length + 1); + strcpy(link, url); + strcat(link, widthstr); + strcat(link, width); + strcat(link, heightstr); + strcat(link, height); + if (SHOW_DEPRECATED) { + strcat(link, deprstr); + } + if (SHOW_DEPR_OBSOLETE) { + strcat(link, deprobsstr); + } +} + + +static void calcConceptualModel() +{ + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); +} + + +/* ------------------------------------------------------------------------- */ + + + +static void dumpSvg(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + buildLink(modc, modv); + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + for (i = 0; i < modc; i++) { + algCreateNodes(modv[i]); + } + + calcConceptualModel(); + + generateSVG(modc, modv); + + graphExit(graph); + graph = NULL; + } else { + for (i = 0; i < modc; i++) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + algCreateNodes(modv[i]); + + calcConceptualModel(); + + generateSVG(1, &(modv[i])); + + graphExit(graph); + graph = NULL; + } + } + + if (fflush(stdout) || ferror(stdout)) { + perror("smidump: write error"); + exit(1); + } + + xfree(link); +} + + + +void initSvg() +{ + static SmidumpDriverOption opt[] = { + { "width", OPT_INT, &CANVASWIDTH, 0, + "width of the svg output (default=1100)"}, + { "height", OPT_INT, &CANVASHEIGHT, 0, + "height of the svg output (default=700)"}, + { "show-deprecated", OPT_FLAG, &SHOW_DEPRECATED, 0, + "show deprecated items"}, + { "show-depr-obsolete", OPT_FLAG, &SHOW_DEPR_OBSOLETE, 0, + "show deprecated and obsolete items"}, + { "static-output", OPT_FLAG, &STATIC_OUTPUT, 0, + "disable all interactivity (e.g. for printing)"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "svg", + dumpSvg, + 0, + SMIDUMP_DRIVER_CANT_OUTPUT, + "SVG diagram", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-tree.c b/tools/dump-tree.c new file mode 100644 index 0000000..3db2265 --- /dev/null +++ b/tools/dump-tree.c @@ -0,0 +1,540 @@ +/* + * dump-tree.c -- + * + * Operations to dump the OID tree in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-tree.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int pmodc = 0; +static SmiModule **pmodv = NULL; + +static int ignoreconformance = 0; +static int ignoreleafs = 0; +static int full = 0; +static int compact = 0; + +static char *getFlags(SmiNode *smiNode) +{ + + switch (smiNode->access) { + case SMI_ACCESS_UNKNOWN: + return "---"; + case SMI_ACCESS_NOT_ACCESSIBLE: + return "---"; + case SMI_ACCESS_EVENT_ONLY: + return "---"; + case SMI_ACCESS_NOTIFY: + return "--n"; + case SMI_ACCESS_READ_ONLY: + return "r-n"; + case SMI_ACCESS_READ_WRITE: + return "rwn"; + case SMI_ACCESS_NOT_IMPLEMENTED: + return "---"; + case SMI_ACCESS_INSTALL: + return "-i-"; + case SMI_ACCESS_INSTALL_NOTIFY: + return "-in"; + case SMI_ACCESS_REPORT_ONLY: + return "--r"; + } + + return ""; +} + + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getTypeName(SmiNode *smiNode) +{ + char *type; + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + if (!parentType) + return NULL; + smiType = parentType; + } + + type = xstrdup(smiType->name); + return type; +} + + + +static void fprintIndex(FILE *f, SmiNode *smiNode) +{ + char *indexname; + int i; + SmiElement *smiElement; + + indexname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, ","); + if (indexname) { + fprintf(f, indexname); + } + indexname = smiGetElementNode(smiElement)->name; + } + if (indexname) { + fprintf(f, "%s%s%s", + (i > 0) ? "," : "", + (smiNode->implied) ? "*" : "", + indexname); + } +} + + + +static void fprintObjects(FILE *f, SmiNode *smiNode) +{ + char *objectname; + int i; + SmiElement *smiElement; + + objectname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, ","); + if (objectname) { + fprintf(f, objectname); + } + objectname = smiGetElementNode(smiElement)->name; + } + if (objectname) { + fprintf(f, "%s%s", (i > 0) ? "," : "", objectname); + } +} + + + +static int isPartOfLoadedModules(SmiNode *smiNode) +{ + SmiModule *smiModule; + int i; + + smiModule = smiGetNodeModule(smiNode); + + for (i = 0; i < pmodc; i++) { + if (strcmp(pmodv[i]->name, smiModule->name) == 0) { + return 1; + } + } + return 0; +} + +/* + * The following function pruneSubTree() is tricky. There are some + * interactions between the supported options. See the detailed + * comments below. Good examples to test the implemented behaviour + * are: + * + * smidump -u -f tree --tree-no-leaf IF-MIB ETHER-CHIPSET-MIB + * + * (And the example above does _not_ work in combination with + * --tree-no-conformance so the code below is still broken.) + */ + +static int pruneSubTree(SmiNode *smiNode) +{ + SmiNode *childNode; + + const int confmask = (SMI_NODEKIND_GROUP | SMI_NODEKIND_COMPLIANCE); + const int leafmask = (SMI_NODEKIND_GROUP | SMI_NODEKIND_COMPLIANCE + | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR + | SMI_NODEKIND_ROW | SMI_NODEKIND_NOTIFICATION); + + if (! smiNode) { + return 1; + } + + /* + * First, prune all nodes which the user has told us to ignore. + * In the case of ignoreleafs, we have to special case nodes with + * an unknown status (which actually represent OBJECT-IDENTITY + * definitions). More special case code is needed to exclude + * module identity nodes. + */ + + if (ignoreconformance && (smiNode->nodekind & confmask)) { + return 1; + } + + if (ignoreleafs) { + if (smiNode->nodekind & leafmask) { + return 1; + } + if (smiNode->nodekind == SMI_NODEKIND_NODE + && smiNode->status != SMI_STATUS_UNKNOWN) { + SmiModule *smiModule = smiGetNodeModule(smiNode); + if (smiModule && smiNode != smiGetModuleIdentityNode(smiModule)) { + return 1; + } + } + } + + /* + * Next, generally do not prune nodes that belong to the set of + * modules we are looking at. + */ + + if (isPartOfLoadedModules(smiNode)) { + if (!ignoreconformance || !smiGetFirstChildNode(smiNode)) { + return 0; + } + } + + /* + * Finally, prune all nodes where all child nodes are pruned. + */ + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + /* + * In the case of ignoreleafs, we have to peek at the child + * nodes. Otherwise, we would prune too much. we still want to + * see the path to the leafs we have pruned away. This also + * interact with the semantics of ignoreconformance since we + * still want in combination with ignoreleafs to see the path + * to the pruned conformance leafs. + */ + + if (ignoreleafs && (childNode->nodekind & leafmask)) { + if (isPartOfLoadedModules(childNode)) { + if (ignoreconformance && (childNode->nodekind & confmask)) { + return 1; + } + return 0; + } + } + + if (! pruneSubTree(childNode)) { + return 0; + } + } + + return 1; +} + + + +static void fprintSubTree(FILE *f, SmiNode *smiNode, + char *prefix, size_t typefieldlen) +{ + SmiNode *childNode, *indexNode; + SmiNodekind lastNodeKind = SMI_NODEKIND_UNKNOWN; + SmiType *type; + int i = 0, cnt, prefixlen; + size_t newtypefieldlen = 9; + char c = 0; + char *type_name; + + if (smiNode) { + prefixlen = strlen(prefix); + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + type_name = getTypeName(smiNode); + if (type_name) { + fprintf(f, "%s-- %s %-*s %s(%u)\n", + prefix, + getFlags(smiNode), + typefieldlen, + type_name, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + xfree(type_name); + } + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + case SMI_NODEKIND_ROW: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + fprintf(f, "%s--%s(%u) [", prefix, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + fprintIndex(f, smiNode); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + if (indexNode) { + fprintIndex(f, indexNode); + } + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintf(f, "]\n"); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + case SMI_NODEKIND_NOTIFICATION: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + fprintf(f, "%s--%s(%u) [", prefix, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + fprintObjects(f, smiNode); + fprintf(f, "]\n"); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + default: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + if (smiNode->oid) + if (prefixlen > 0) { + fprintf(f, "%s--%s(%u)\n", prefix, + smiNode->name ? smiNode->name : " ", + smiNode->oid[smiNode->oidlen-1]); + } else { + unsigned int j; + fprintf(f, "%s--%s(", prefix, + smiNode->name ? smiNode->name : " "); + for (j = 0; j < smiNode->oidlen; j++) { + fprintf(f, "%s%u", j ? "." : "", smiNode->oid[j]); + } + fprintf(f, ")\n"); + } + else + fprintf(f, "%s--%s(?)\n", prefix, + smiNode->name ? smiNode->name : " "); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + } + for (childNode = smiGetFirstChildNode(smiNode), cnt = 0; + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (! pruneSubTree(childNode)) { + type = smiGetNodeType(childNode); + if (type) { + type_name = getTypeName(childNode); + if (type_name) { + if (strlen(type_name) > newtypefieldlen) { + newtypefieldlen = strlen(type_name); + } + xfree(type_name); + } + } + cnt++; + } + } + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + char *newprefix; + if (pruneSubTree(childNode)) { + continue; + } + i++; + if (! compact && + ((childNode->nodekind != SMI_NODEKIND_COLUMN + && childNode->nodekind != SMI_NODEKIND_SCALAR) + || (lastNodeKind != childNode->nodekind))) { + fprintf(f, "%s |\n", prefix); + } + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (cnt == 1 || cnt == i) { + strcat(newprefix, " "); + } else { + strcat(newprefix, " |"); + } + fprintSubTree(f, childNode, newprefix, newtypefieldlen); + xfree(newprefix); + lastNodeKind = childNode->nodekind; + } + } +} + + + +static void fprintTree(FILE *f) +{ + SmiNode *smiNode; + SmiNode *childNode; + SmiNode *nextNode; + int cnt; + + smiNode = smiGetNode(NULL, "iso"); + + if (! full) { + do { + for (childNode = smiGetFirstChildNode(smiNode), cnt = 0, nextNode = NULL; + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (! pruneSubTree(childNode)) { + cnt++; + if (! nextNode) { + nextNode = childNode; + } + } + } + if (cnt == 1) { + smiNode = nextNode; + } + } while (cnt == 1); + } + + if (smiNode) { + fprintSubTree(f, smiNode, "", 0); + } +} + + + +static void dumpTree(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + pmodc = modc; + pmodv = modv; + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united registration tree (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTree(f); + + } else { + + for (i = 0; i < modc; i++) { + + pmodc = 1; + pmodv = &(modv[i]); + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s registration tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTree(f); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initTree() +{ + static SmidumpDriverOption opt[] = { + { "no-conformance", OPT_FLAG, &ignoreconformance, 0, + "do not show conformance nodes"}, + { "no-leafs", OPT_FLAG, &ignoreleafs, 0, + "do not show leaf nodes"}, + { "full-root", OPT_FLAG, &full, 0, + "generate the full path to the root"}, + { "compact", OPT_FLAG, &compact, 0, + "generate a more compact representation"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "tree", + dumpTree, + SMI_FLAG_NODESCR, + 0, + "structure of the OID tree", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-types.c b/tools/dump-types.c new file mode 100644 index 0000000..50fdf4c --- /dev/null +++ b/tools/dump-types.c @@ -0,0 +1,697 @@ +/* + * dump-types.c -- + * + * Operations to dump the type hierarchy in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-types.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * Decide how we want to name the implicitely defined types. + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int noimplicit = 0; + + +typedef struct BaseTypeCount { + SmiBasetype basetype; + int counter; +} BaseTypeCount; + + +static BaseTypeCount basetypes[] = { + { SMI_BASETYPE_INTEGER32, 0 }, + { SMI_BASETYPE_OCTETSTRING, 0 }, + { SMI_BASETYPE_OBJECTIDENTIFIER, 0 }, + { SMI_BASETYPE_UNSIGNED32, 0 }, + { SMI_BASETYPE_INTEGER64, 0 }, + { SMI_BASETYPE_UNSIGNED64, 0 }, + { SMI_BASETYPE_FLOAT32, 0 }, + { SMI_BASETYPE_FLOAT64, 0 }, + { SMI_BASETYPE_FLOAT128, 0 }, + { SMI_BASETYPE_ENUM, 0 }, + { SMI_BASETYPE_BITS, 0 }, + { SMI_BASETYPE_UNKNOWN, 0 } +}; + + +typedef struct TypeNode { + SmiType *smiType; + SmiModule *smiModule; + SmiBasetype smiBasetype; + struct TypeNode *nextNodePtr; + struct TypeNode *childNodePtr; +} TypeNode; + + +static TypeNode typeRoot = { + NULL, NULL, SMI_BASETYPE_UNKNOWN, NULL, NULL +}; + + +static int pmodc = 0; +static SmiModule **pmodv = NULL; + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getFlags(SmiModule *smiModule, SmiType *smiType) +{ + static char flags[4]; + int i; + + memset(flags, 0, sizeof(flags)); + strcpy(flags, "---"); + + switch (smiType->decl) { + case SMI_DECL_IMPLICIT_TYPE: + flags[0] = 'i'; + break; + case SMI_DECL_TYPEASSIGNMENT: + flags[0] = 'a'; + break; + case SMI_DECL_TEXTUALCONVENTION: + case SMI_DECL_TYPEDEF: + flags[0] = 't'; + break; + default: + break; + } + + for (i = 0; i < pmodc; i++) { + if (strcmp(pmodv[i]->name, smiModule->name) == 0) { + break; + } + } + + if ((!smiModule) || (strlen(smiModule->name) == 0)) { + flags[2] = 'b'; +#if 0 /* xxx fixme */ + } else if (!moduleList) { + flags[2] = '-'; + } else if (mPtr) { + flags[2] = 'l'; +#endif + } else { + flags[2] = 'i'; + } + + return flags; +} + + + +static void initBaseTypeCount() +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + basetypes[i].counter = 0; + } +} + + + +static void incrBaseTypeCount(SmiBasetype basetype) +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + if (basetypes[i].basetype == basetype) { + basetypes[i].counter++; + } + } +} + + + +static int getBaseTypeCount(SmiBasetype basetype) +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + if (basetypes[i].basetype == basetype) { + return basetypes[i].counter; + } + } + + return -1; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (!nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} + + + +static void addToTypeTree(TypeNode *root, + SmiModule *smiModule, SmiType *smiType) +{ + TypeNode *newType, **typePtrPtr; + SmiType *smiParentType; + SmiModule *smiParentModule; + + if (! root) { + return; + } + + smiParentType = smiGetParentType(smiType); + smiParentModule = smiParentType ? smiGetTypeModule(smiParentType) : NULL; + + if ((root->smiModule == smiParentModule && root->smiType == smiParentType) + || (! root->smiModule && ! root->smiType + && root->smiBasetype == smiType->basetype)) { + + newType = xmalloc(sizeof(TypeNode)); + newType->smiModule = smiModule; + newType->smiType = smiType; + newType->smiBasetype = smiType->basetype; + newType->childNodePtr = NULL; + newType->nextNodePtr = NULL; + + for (typePtrPtr = &(root->childNodePtr); + *typePtrPtr; typePtrPtr = &((*typePtrPtr)->nextNodePtr)) ; + *typePtrPtr = newType; + return; + } + + if (root->nextNodePtr) { + addToTypeTree(root->nextNodePtr, smiModule, smiType); + } + + if (root->childNodePtr) { + addToTypeTree(root->childNodePtr, smiModule, smiType); + } +} + + + +static void freeTypeTree(TypeNode *root) +{ + if (root->childNodePtr) { + if (root->childNodePtr->smiModule) { + freeTypeTree(root->childNodePtr); + root->childNodePtr = NULL; + } else { + freeTypeTree(root->childNodePtr); + } + } + + if (root->nextNodePtr) { + if (root->nextNodePtr->smiModule) { + freeTypeTree(root->nextNodePtr); + root->nextNodePtr = NULL; + } else { + freeTypeTree(root->nextNodePtr); + } + } + + if (root->smiModule) { + xfree(root); + } +} + + + +static TypeNode *findInTypeTree(TypeNode *root, + SmiModule *smiModule, SmiType *smiType) +{ + TypeNode *result = NULL; + + if (root->smiModule && root->smiModule == smiModule + && smiType->name + && root->smiType && root->smiType == smiType) { + result = root; + } + + if (!result && root->childNodePtr) { + result = findInTypeTree(root->childNodePtr, smiModule, smiType); + } + + if (!result && root->nextNodePtr) { + result = findInTypeTree(root->nextNodePtr, smiModule, smiType); + } + + return result; +} + + + +static char* getTypeName(TypeNode *typeNode) +{ + SmiRefinement *smiRefinement; + SmiType *smiType; + char *name = "?"; + + if (typeNode->smiType->name) { +#if 1 + return xstrdup(typeNode->smiType->name); +#else + char *s; + s = xmalloc(strlen(typeNode->smiType->name)+ + strlen(typeNode->smiModule ? typeNode->smiModule->name : "") +3); + sprintf(s, "%s::%s", typeNode->smiModule ? typeNode->smiModule->name : "", + typeNode->smiType->name); + return s; +#endif + + } else if (typeNode->smiModule) { + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(typeNode->smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiGetNodeType(smiNode) == typeNode->smiType) { + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + } + + for (smiNode = smiGetFirstNode(typeNode->smiModule, + SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiType = smiGetRefinementType(smiRefinement); + if (smiType == typeNode->smiType) { + smiNode = smiGetRefinementNode(smiRefinement); + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType == typeNode->smiType) { + smiNode = smiGetRefinementNode(smiRefinement); + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + } + } + } + + return xstrdup(name); +} + + + +static void fprintRestrictions(FILE *f, SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiRange *range; + char s1[40], s2[40]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; nn = smiGetNextNamedNumber(nn), i++) { + fprintf(f, "%s%s(%ld)", (i == 0) ? " {" : ", ", + nn->name, nn->value.value.integer32); + } + if (i) fprintf(f, "}"); + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; range = smiGetNextRange(range), i++) { + strcpy(s1, getValueString(&range->minValue, smiType)); + strcpy(s2, getValueString(&range->maxValue, smiType)); + fprintf(f, "%s%s", (i == 0) ? " [" : ", ", s1); + if (strcmp(s1, s2)) fprintf(f, "..%s", s2); + } + if (i) fprintf(f, "]"); + } +} + + + +static void fprintTypeTree(FILE *f, TypeNode *root, char *prefix) +{ + TypeNode *typeNode, *nextNode; + char *name; + int namelen = -1; + + if (root->smiModule) { + fprintf(f, "%s |\n", prefix); + } + + for (typeNode = root; typeNode; typeNode = typeNode->nextNodePtr) { + if (typeNode->smiType) { + int len; + name = getTypeName(typeNode); + len = strlen(name); + if (len > namelen) namelen = len; + xfree(name); + } + } + + for (typeNode = root; typeNode; typeNode = typeNode->nextNodePtr) { + if (typeNode != &typeRoot) { + char c = '+', *flags; + if (typeNode->smiType) { + name = getTypeName(typeNode); + c = getStatusChar(typeNode->smiType->status); + if (getBaseTypeCount(typeNode->smiBasetype)) { + flags = getFlags(typeNode->smiModule, typeNode->smiType); + if (flags && *flags) { + fprintf(f, "%s %c-- %s %-*s", prefix, c, flags, + namelen, name); + } else { + fprintf(f, "%s %c--%-*s", prefix, c, + namelen, name); + } + fprintRestrictions(f, typeNode->smiType); + if (typeNode->smiType->format) { + fprintf(f, "\t\"%s\"", typeNode->smiType->format); + } + fprintf(f, "\n"); + } + xfree(name); + } else { + fprintf(f, "xxxx\n"); + } + } + if (typeNode->childNodePtr) { + char *newprefix; + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (typeNode != &typeRoot) { + for (nextNode = typeNode->nextNodePtr; + nextNode; nextNode = nextNode->nextNodePtr) { + if (getBaseTypeCount(nextNode->smiBasetype)) { + break; + } + } + if (nextNode) { + strcat(newprefix, " |"); + } else { + strcat(newprefix, " "); + } + } + fprintTypeTree(f, typeNode->childNodePtr, newprefix); + xfree(newprefix); + for (nextNode = typeNode->nextNodePtr; + nextNode; nextNode = nextNode->nextNodePtr) { + if (getBaseTypeCount(nextNode->smiBasetype)) { + break; + } + } + if (nextNode) { + fprintf(f, "%s |\n", prefix); + } + } + } +} + + + +static void addType(SmiType *smiType) +{ + SmiModule *smiModule; + SmiType *smiParentType; + + smiModule = smiGetTypeModule(smiType); + if (! smiModule) { + return; + } + + if (findInTypeTree(&typeRoot, smiModule, smiType)) { + return; + } + + smiParentType = smiGetParentType(smiType); + if (smiParentType && smiParentType->name) { + if (smiParentType) { + addType(smiParentType); + } + } + + addToTypeTree(&typeRoot, smiModule, smiType); + incrBaseTypeCount(smiType->basetype); +} + + + +static void dumpTypes(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiRefinement *smiRefinement; + int i; + FILE *f = stdout; + const unsigned int nodekind = SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + pmodc = modc; + pmodv = modv; + + initBaseTypeCount(); + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_UNITE)) { + initBaseTypeCount(); + } + + for (smiType = smiGetFirstType(modv[i]); + smiType; + smiType = smiGetNextType(smiType)) { + addType(smiType); + } + + for (smiNode = smiGetFirstNode(modv[i], nodekind); + smiNode; + smiNode = smiGetNextNode(smiNode, nodekind)) { + smiType = smiGetNodeType(smiNode); + if (smiType) { + if (!noimplicit && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + } + + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + if (!noimplicit + && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + if (!noimplicit + && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + } + } + + if (! (flags & SMIDUMP_FLAG_UNITE)) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s type derivation tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTypeTree(f, &typeRoot, ""); + freeTypeTree(&typeRoot); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united type derivation tree (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTypeTree(f, &typeRoot, ""); + freeTypeTree(&typeRoot); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initTypes() +{ + static SmidumpDriverOption opt[] = { + { "no-implicit", OPT_FLAG, &noimplicit, 0, + "ignore implicit type definitions"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "types", + dumpTypes, + SMI_FLAG_NODESCR, + 0, + "recursive list of all derived types", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-xml.c b/tools/dump-xml.c new file mode 100644 index 0000000..b752d55 --- /dev/null +++ b/tools/dump-xml.c @@ -0,0 +1,1030 @@ +/* + * dump-xml.c -- + * + * Operations to dump SMIng module information in XML format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xml.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - value representations (getValueString()) + * - finish DTD and check against it + * - shall we nest tables like in SMIng? + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 2 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +static int disableschema = 0; +static int disabledoctype = 0; + + + +typedef struct XmlEscape { + char character; + char *escape; +} XmlEscape; + +static XmlEscape xmlEscapes [] = { + { '<', "<" }, + { '>', ">" }, + { '&', "&" }, + { 0, NULL } +}; + + +static int current_column = 0; + + + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; xmlEscapes[j].character; j++) { + if (xmlEscapes[j].character == s[i]) break; + } + if (xmlEscapes[j].character) { + fputs(xmlEscapes[j].escape, f); + current_column += strlen(xmlEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + } + } + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, + const char *tag, SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "<%s name=\"%s\"", tag, smiNode->name); + fprint(f, " oid=\""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + if (smiNode->create) { + fprint(f, " create=\"true\""); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, " status=\"%s\"", getStringStatus(smiNode->status)); + } + fprint(f, ">\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\n", tag); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + + for(range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "minValue, smiType)); + fprint(f, " max=\"%s\"", getValueString(&range->maxValue, smiType)); + fprint(f, "/>\n"); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "name); + fprint(f, " number=\"%s\"", getValueString(&nn->value, smiType)); + fprint(f, "/>\n"); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s", getValueString(smiValue, smiType)); + fprint(f, "\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, "\n"); + fprintSegment(f, indent, "\n", 0); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, "\n"); + fprintSegment(f, indent, "\n", 0); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + fprint(f, "<%s module=\"%s\" name=\"%s\"/>\n", + tag, smiModule->name, smiNode->name); + } +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + fprintSegment(f, indent, "implied) { + fprint(f, " implied=\"true\""); + } + fprint(f, ">\n"); + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + char *lang; + + lang = getStringLanguage(smiModule->language); + + fprintSegment(f, INDENT, "", 0); + if (lang) { + fprint(f, "\n", + smiModule->name, lang); + } else { + fprint(f, "\n", smiModule->name); + } + + if (smiModule->organization) { + fprintSegment(f, 2 * INDENT, "", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->organization); + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "\n", 0); + } + + if (smiModule->contactinfo) { + fprintSegment(f, 2 * INDENT, "", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->contactinfo); + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "\n", 0); + } + fprintDescription(f, 2 * INDENT, smiModule->description); + fprintReference(f, 2 * INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 3 * INDENT, smiRevision->description); + fprintSegment(f, 2 * INDENT, "\n", 0); + i++; + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\n", smiNode->name); + } + + fprintSegment(f, INDENT, "\n\n", 0); +} + + + +static void fprintImport(FILE *f, int indent, SmiImport *smiImport) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\n", + smiImport->module, smiImport->name); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintImport(f, 2 * INDENT, smiImport); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "name) { + fprint(f, " name=\"%s\"", smiType->name); + } + fprint(f, " basetype=\"%s\"", getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprint(f, " status=\"%s\"", getStringStatus(smiType->status)); + } + fprint(f, ">\n"); + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentType->name && + parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\n", + parentModule->name, parentType->name); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + indent += INDENT; + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + indent += 2 * INDENT; + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + + if (lastSmiNode + && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + fprintNodeEndTag(f, indent + INDENT, "row"); + fprintNodeEndTag(f, indent, "table"); + } + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\n", 0); + smiModule = smiGetTypeModule(smiType); + if (smiType->name && smiModule) { + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\n", + smiModule->name, smiType->name); + } else { + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + if (smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_TABLE) { + fprintNodeEndTag(f, indent, tag); + } +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + + if (lastSmiNode + && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { + fprintNodeEndTag(f, 3 * INDENT, "row"); + fprintNodeEndTag(f, 2 * INDENT, "table"); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + + fprintSegment(f, indent + INDENT, "\n", 0); + fprintElementList(f, indent + 2 * INDENT, "object", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "notification"); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + + fprintSegment(f, indent + INDENT, "\n", 0); + fprintElementList(f, indent + 2 * INDENT, "member", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "group"); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode)); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", 0); + } + + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "\n", smiModule->name, smiNode->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\n", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\n", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance"); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void dumpXml(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + fprint(f, "\n"); + if (!disabledoctype) { + fprint(f, "\n"); + } + fprint(f, "\n"); + fprint(f, "\n"); + fprint(f, "\n"); + + if (!disableschema) { + fprint(f, "\n"); + } else { + fprint(f, "\n"); + } + + fprintModule(f, modv[i]); + fprintImports(f, modv[i]); + fprintTypedefs(f, modv[i]); + fprintNodes(f, modv[i]); + fprintNotifications(f, modv[i]); + fprintGroups(f, modv[i]); + fprintCompliances(f, modv[i]); + + fprint(f, "\n"); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initXml() +{ + + static SmidumpDriverOption opt[] = { + { "no-schema", OPT_FLAG, &disableschema, 0, + "disable XML Schema spec in the toplevel element"}, + { "no-doctype", OPT_FLAG, &disabledoctype, 0, + "disable DOCTYPE spec in the XML prolog"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "xml", + dumpXml, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "intermediate SMI XML exchange format", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-xsd.c b/tools/dump-xsd.c new file mode 100644 index 0000000..6a50b55 --- /dev/null +++ b/tools/dump-xsd.c @@ -0,0 +1,2163 @@ +/* + * dump-xsd.c -- + * + * Operations to dump SMI module information as XML schema definitions. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xsd.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "fortopat.h" + + +#define INDENT 2 /* indent factor */ + +static int ind = 0; + +#ifndef MIN +#define MIN(a,b) ((a)) < ((b)) ? ((a)) : ((b)) +#endif /* #ifndef MIN */ + +static char *schemaLocation = "http://www.ibr.cs.tu-bs.de/projects/libsmi/xsd/"; +static int container = 0; +static char *containerBasename = "container"; +static int *nestAugmentedTables = 0; +static int *nestSubtables = 0; + +typedef struct XmlEscape { + char character; + char *escape; +} XmlEscape; + +static XmlEscape xmlEscapes [] = { + { '<', "<" }, + { '>', ">" }, + { '&', "&" }, + { 0, NULL } +}; + +typedef struct TypePrefix { + char *type; + char *prefix; + struct TypePrefix *next; +} TypePrefix; + +static TypePrefix *typePrefixes = NULL; + + + +/* some forward declarations */ +static void fprintElement( FILE *f, SmiNode *smiNode, SmiNode *parentNode ); +static char* getTypePrefix( char *typeName ); + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + +static char* getStringStatus(SmiStatus status) +{ + char *statStr; + + switch( status ) { + case SMI_STATUS_CURRENT: + statStr = "current"; + break; + case SMI_STATUS_DEPRECATED: + statStr = "deprecated"; + break; + case SMI_STATUS_OBSOLETE: + statStr = "obsolete"; + break; + case SMI_STATUS_MANDATORY: + statStr = "mandatory"; + break; + case SMI_STATUS_OPTIONAL: + statStr = "optional"; + break; + case SMI_STATUS_UNKNOWN: + default: + statStr = "unknown"; + break; + } + return statStr; +} + +static char* getStringAccess( SmiAccess smiAccess ) +{ + switch( smiAccess ) { + case SMI_ACCESS_NOT_IMPLEMENTED: return "not-implemented"; + case SMI_ACCESS_NOT_ACCESSIBLE : return "not-accessible"; + case SMI_ACCESS_NOTIFY : return "notify"; + case SMI_ACCESS_READ_ONLY : return "read-only"; + case SMI_ACCESS_READ_WRITE : return "read-write"; + case SMI_ACCESS_UNKNOWN: + default: return "unknown"; + } +} +#if 0 +static char +*getStringValue(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} +#endif /* 0 */ + +static int smiPow( int base, unsigned int exponent ) +{ + unsigned int i; + int ret = 1; + + if( exponent == 0 ) { + return 1; + } + + for( i = 0; i < exponent; i++ ) { + ret *= base; + } + return ret; +} + +static void fprintSegment(FILE *f, int relindent, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + + if ((ind == 0) || (ind + relindent == 0)) { + ind += relindent; + } else { + if (relindent < 0) ind += relindent; + fprintf(f, "%*c", ind * INDENT, ' '); + if (relindent > 0) ind += relindent; + } + vfprintf(f, fmt, ap); + + va_end(ap); +} + + + +static void fprintMultilineString(FILE *f, const char *s) +{ + int i, j, len; + + fprintSegment(f, 0, ""); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; xmlEscapes[j].character; j++) { + if (xmlEscapes[j].character == s[i]) break; + } + if (xmlEscapes[j].character) { + fputs(xmlEscapes[j].escape, f); + } else { + putc(s[i], f); + } + if (s[i] == '\n') { + fprintSegment(f, 0, ""); + } + } + } +} + + + +static void fprintDocumentation(FILE *f, const char *description) +{ + if (description) { + fprintSegment(f, 1, "\n"); + fprintMultilineString(f, description); + fprintf(f, "\n"); + fprintSegment(f, -1, "\n"); + } +} + +static void fprintNamedNumber( FILE *f, SmiNamedNumber *nn ) +{ + fprintSegment( f, 1, "\n", nn->name ); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "%d\n", + (int)nn->value.value.integer32 ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static void fprintStdRestHead( FILE *f, SmiType *smiType ) +{ + char *baseTypeName = getStringBasetype(smiType->basetype); + char *prefix = getTypePrefix( baseTypeName ); + + if( prefix ) { + fprintSegment(f, 1, "\n", + prefix, baseTypeName ); + } + else { + fprintSegment(f, 1, "\n", baseTypeName ); + } +} + + +static void fprintHexOrAsciiType( FILE *f, SmiType *parent, + SmiInteger32 minLength, + SmiInteger32 maxLength, + char *name, int hex ) +{ + char *prefix = parent ? getTypePrefix( parent->name ) : NULL; + char *typeFlag = hex ? "Hex" : "Ascii"; + + if( name ) { + fprintSegment( f, 1, "\n", + name, typeFlag ); + } else { + fprintSegment( f, 1, "\n"); + } + if( prefix ) { + fprintSegment( f, 1, "\n", + prefix, parent->name, typeFlag ); + } + else { + fprintSegment( f, 1, "\n", + parent->name, typeFlag ); + } + + if( minLength > 0 ) { + fprintSegment( f, 0, "\n", + (int)minLength ); + } + if( maxLength > -1 ) { + fprintSegment( f, 0, "\n", + (int)maxLength ); + } + + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static int dhInParent( SmiType *smiType ) +{ + SmiType *parent = smiGetParentType( smiType ); + + if( smiType->format && parent->format ) { + return ! strcmp( smiType->format, parent->format ); + } + return 0; +} + +#define MD_DH_INT_NORMAL 1 +#define MD_DH_INT_DECIMAL 2 +#define MD_DH_INT_BIN 3 +#define MD_DH_INT_OCT 4 +#define MD_DH_INT_HEX 5 + +/* parse a (integer) display hint and specify the offset, if used */ +static int getIntDHType( char *hint, int *offset ) +{ + switch( hint[ 0 ] ) { + + case 'd': + if( hint[1] ) { + *offset = 0; + *offset = atoi( &hint[2] ); + return MD_DH_INT_DECIMAL; + } + return MD_DH_INT_NORMAL; + + case 'b': + /* binary value */ + return MD_DH_INT_BIN; + case 'o': + /* octet value */ + return MD_DH_INT_OCT; + case 'x': + /* hex value */ + return MD_DH_INT_HEX; + default: + /* should not occur */ + return 0; + } +} + + +static void fprintRestriction(FILE *f, SmiType *smiType) +{ + SmiRange *smiRange; + + /* print ranges etc. */ + switch( smiType->basetype ) { + + case SMI_BASETYPE_INTEGER32: + { + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MIN; + SmiInteger32 max = SMI_BASETYPE_INTEGER32_MAX; + int offset = 0, useDecPoint = 0; + + if( smiType->format ) { + /* we have a display hint here, so check if we have to use + a decimal point */ + useDecPoint = + getIntDHType( smiType->format, &offset ) == MD_DH_INT_DECIMAL; + /* xxx: other display hint types (binary, oct, hex) */ + } + + if( useDecPoint ) { + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "\n", offset ); + } + else { + fprintStdRestHead( f, smiType ); + } + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( min == SMI_BASETYPE_INTEGER32_MIN || + smiRange->minValue.value.integer32 < min ) { + min = smiRange->minValue.value.integer32; + } + if( max == SMI_BASETYPE_INTEGER32_MAX || + smiRange->maxValue.value.integer32 > max ) { + max = smiRange->maxValue.value.integer32; + } + smiRange = smiGetNextRange( smiRange ); + } + + /* print minimu value */ + if( useDecPoint ) { + fprintSegment( f, 0, "\n", + (int)min / smiPow( 10, offset ), + abs( (int)min % smiPow( 10, offset ) ) ); + } else { + fprintSegment( f, 0, "\n", + (int)min ); + } + + /* print maximum value */ + if( useDecPoint ) { + fprintSegment( f, 0, "\n", + (int)max / smiPow( 10, offset ), + abs( (int)max % smiPow( 10, offset ) ) ); + } else { + fprintSegment( f, 0, "\n", + (int)max ); + } + + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_OCTETSTRING: + { + SmiInteger32 minLength, maxLength; + unsigned int numSubRanges = 0; + + minLength = 0; + maxLength = -1; + + /* get range details */ + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + if( minLength == 0 || + smiRange->minValue.value.integer32 < minLength ) { + minLength = smiRange->minValue.value.integer32; + } + if( smiRange->maxValue.value.integer32 > maxLength ) { + maxLength = smiRange->maxValue.value.integer32; + } + numSubRanges++; + } + + + + if( smiType->format && + ( smiType->decl == SMI_DECL_IMPLICIT_TYPE || + smiType->decl == SMI_DECL_TEXTUALCONVENTION ) && + ! dhInParent( smiType ) ) { + /* + fprintStringUnion( f, indent, smiType, + minLength, maxLength, 0, NULL ); + */ + char *pattern; + + fprintSegment( f, 1, "\n" ); + + /* create regexp */ + pattern = smiFormatToPattern(smiType->format, + smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 0, "\n", pattern); + xfree(pattern); + } + else { + fprintf( f, "\n" ); + } + fprintSegment( f, -1, "\n"); + } + else { + SmiType *parent = smiGetParentType( smiType ); + /* + fprintStringUnion( f, indent, smiType, + minLength, maxLength, secondTime, + smiType->name ); + */ + if( parent ) { + if( parent->format ) { + char *pattern; + + pattern = smiFormatToPattern(parent->format, + smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 1, "\n" ); + fprintSegment(f, 0, "\n", + pattern); + fprintSegment( f, -1, "\n"); + xfree(pattern); + } + } + + + else if( smiType->name && + ! strcmp( smiType->name, "IpAddress" ) ) { + SmiUnsigned32 lengths[] = {4, 4}; + lengths[0] = 4; lengths[1] = 4; + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 0, "\n" ); + fprintSegment( f, -1, "\n"); + } + + else { + + + char *prefix = getTypePrefix( parent->name ); + + if( prefix ) { + fprintSegment( f, 1, "\n", + prefix, parent->name ); + } else { + fprintSegment( f, 1, "\n", + parent->name ); + } + + /* print length restriction */ + if( minLength > 0 ) + fprintSegment( f, 0, "\n", + (int)minLength ); + if( maxLength > -1 ) + fprintSegment( f, 0, "\n", + (int)maxLength ); + fprintSegment( f, -1, "\n"); + } + + + } + } + break; + } + + case SMI_BASETYPE_FLOAT128: + { +/* SmiFloat128 min, max; */ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT64: + { +/* SmiFloat64 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT32: + { +/* SmiFloat32 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_INTEGER64: + { +/* SmiInteger64 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_UNSIGNED64: + { + SmiUnsigned64 min, max; + + min = SMI_BASETYPE_UNSIGNED64_MIN; + max = SMI_BASETYPE_UNSIGNED64_MAX; + + fprintStdRestHead( f, smiType ); + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( smiRange->minValue.value.unsigned64 < min ) { + min = smiRange->minValue.value.unsigned64; + } + if( smiRange->maxValue.value.unsigned64 > max ) { + max = smiRange->maxValue.value.unsigned64; + } + smiRange = smiGetNextRange( smiRange ); + } + fprintSegment( f, 0, "\n", + (unsigned long)min ); + + fprintSegment( f, 0, "\n", + (unsigned long)max ); + + fprintSegment(f, -1, "\n"); + + break; + } + + case SMI_BASETYPE_UNSIGNED32: + { + SmiUnsigned32 min, max; + + min = 0; + max = 4294967295UL; + + fprintStdRestHead( f, smiType ); + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( smiRange->minValue.value.unsigned32 < min ) { + min = smiRange->minValue.value.unsigned32; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned32; + } + smiRange = smiGetNextRange( smiRange ); + } + fprintSegment( f, 0, "\n", + (unsigned int)min ); + + fprintSegment( f, 0, "\n", + (unsigned int)max ); + + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_BITS: + { + SmiNamedNumber *nn; + + fprintSegment(f, 1, "\n"); + + /* iterate named numbers */ + for( nn = smiGetFirstNamedNumber( smiType ); + nn; + nn = smiGetNextNamedNumber( nn ) ) { + fprintNamedNumber( f, nn ); + } + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintSegment( f, 0, + "\n"); + break; + case SMI_BASETYPE_UNKNOWN: + /* should not occur */ + break; + case SMI_BASETYPE_POINTER: + /* TODO */ + break; + } +} + + +static unsigned int getNamedNumberCount( SmiType *smiType ) +{ + SmiNamedNumber *nn; + unsigned int ret = 0; + + for( nn = smiGetFirstNamedNumber( smiType ); + nn; + nn = smiGetNextNamedNumber( nn ) ) { + ret++; + } + + return ret; +} + + +static void fprintBitList( FILE *f, SmiType *smiType ) +{ + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintRestriction( f, smiType ); + fprintSegment( f, -1, "\n" ); + fprintSegment( f, -1, "\n" ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, 0, "\n", + getNamedNumberCount( smiType ) ); + fprintSegment( f, -1, "\n"); +} +static int getNumSubRanges( SmiType *smiType ) +{ + SmiRange *smiRange; + int num = 0; + + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + num++; + } + + return num; +} + + +static void fprintSubRangeType( FILE *f, + SmiRange *smiRange, SmiType *smiType ) +{ + + switch( smiType->basetype ) { + + case SMI_BASETYPE_UNSIGNED32: { + SmiUnsigned32 min, max; + + min = 0; + max = 4294967295UL; + + if( smiRange->minValue.value.unsigned32 < min ) { + min = smiRange->minValue.value.unsigned32; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned32; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", + (unsigned int)min ); + + fprintSegment( f, 0, "\n", + (unsigned int)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_INTEGER32: { + SmiInteger32 min, max; + + min = SMI_BASETYPE_INTEGER32_MIN; + max = SMI_BASETYPE_INTEGER32_MAX; + + if( min == SMI_BASETYPE_INTEGER32_MIN || + smiRange->minValue.value.integer32 < min ) { + min = smiRange->minValue.value.integer32; + } + if( max == SMI_BASETYPE_INTEGER32_MAX || + smiRange->maxValue.value.integer32 > max ) { + max = smiRange->maxValue.value.integer32; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", (int)min ); + + fprintSegment( f, 0, "\n", (int)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + + } + + case SMI_BASETYPE_OCTETSTRING: { + SmiInteger32 minLength, maxLength; + + minLength = 0; + maxLength = -1; + + if( smiRange->minValue.value.integer32 < minLength ) { + minLength = smiRange->minValue.value.integer32; + } + if( smiRange->maxValue.value.integer32 > maxLength ) { + maxLength = smiRange->maxValue.value.integer32; + } + fprintHexOrAsciiType( f, smiType, + minLength, maxLength, NULL, 1 ); + break; + } + + case SMI_BASETYPE_FLOAT128: + { +/* SmiFloat128 min, max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT64: + { +/* SmiFloat64 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT32: + { +/* SmiFloat32 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_INTEGER64: + { +/* SmiInteger64 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_UNSIGNED64: + { + SmiUnsigned64 min, max; + + min = SMI_BASETYPE_UNSIGNED64_MIN; + max = SMI_BASETYPE_UNSIGNED64_MAX; + + if( smiRange->minValue.value.unsigned64 < min ) { + min = smiRange->minValue.value.unsigned64; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned64; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", + (unsigned long)min ); + + fprintSegment( f, 0, "\n", + (unsigned long)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + /* should not occur */ + break; + + } +} + +static void fprintDisplayHint( FILE *f, char *format ) +{ + fprintSegment( f, 0, "%s\n", format ); +} + +static void fprintLengths(FILE *f, SmiType *smiType) +{ + SmiRange *smiRange = smiGetFirstRange(smiType); + + if (! smiRange) { + return; + } + + fprintSegment(f, 1, "\n"); + for (smiRange = smiGetFirstRange(smiType); + smiRange; smiRange = smiGetNextRange(smiRange)) { + fprintSegment(f, 0, "\n", + smiRange->minValue.value.unsigned32, + smiRange->maxValue.value.unsigned32); + } + fprintSegment( f, -1, "\n"); +} + + +static void fprintTypedef(FILE *f, SmiType *smiType, const char *name) +{ + SmiRange *smiRange; + unsigned int numSubRanges = getNumSubRanges( smiType ); + + if ( name ) { + fprintSegment(f, 1, "\n", name); + } + + else { + /* unnamed simple type */ + fprintSegment(f, 1, "\n"); + } + + if( smiType->description ) { + fprintSegment( f, 1, "\n"); + fprintDocumentation(f, smiType->description); + if( smiType->format ) { + fprintSegment( f, 1, "\n"); + fprintDisplayHint( f, smiType->format ); + if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + fprintLengths( f, smiType ); + } + fprintSegment( f, -1, "\n"); + } + fprintSegment( f, -1, "\n"); + } + + if( ( numSubRanges > 1 ) && + ( smiType->basetype != SMI_BASETYPE_OCTETSTRING ) ) { + + fprintSegment( f, 1, "\n"); + + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + fprintSubRangeType( f, smiRange, smiType ); + } + + fprintSegment( f, -1, "\n"); + } + else if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintBitList( f, smiType ); + } + else { + fprintRestriction(f, smiType ); + } + fprintSegment(f, -1, "\n"); + + /* print an empty line after global types */ + if( smiType->decl != SMI_DECL_IMPLICIT_TYPE && name ) { + fprintf( f, "\n" ); + } +} + + +static char* getTypePrefix( char *typeName ) +{ + TypePrefix *iterTPr; + + if( !typeName ) { + return NULL; + } + + for( iterTPr = typePrefixes; iterTPr; iterTPr = iterTPr->next ) { + if( ! strcmp( iterTPr->type, typeName ) ) { + return iterTPr->prefix; + } + } + + return NULL; +} + + +static void fprintAnnotationElem( FILE *f, SmiNode *smiNode ) { + int i; + + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + + if( smiNode->nodekind == SMI_NODEKIND_ROW && + ( smiNode->implied || smiNode->create ) ) { + fprintSegment( f, 0, "implied ) { + fprintf( f, " implied=\"yes\"" ); + } + if( smiNode->create ) { + fprintf( f, " create=\"yes\"" ); + } + fprintf( f, "/>\n" ); + } + + fprintSegment( f, 0, "%s\n", + getStringAccess( smiNode->access ) ); + fprintSegment( f, 0, ""); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprintf( f, "\n" ); + + fprintSegment( f, 0, "%s\n", + getStringStatus( smiNode->status ) ); + if( smiNode->value.basetype != SMI_BASETYPE_UNKNOWN ) { + char *defval = smiRenderValue( &smiNode->value, + smiGetNodeType( smiNode ), + SMI_RENDER_FORMAT | SMI_RENDER_NAME ); + fprintSegment( f, 0, "%s\n", defval ); + + } + + + if( smiNode->format ) { + fprintDisplayHint( f, smiNode->format ); + } + + if( smiNode->units ) { + fprintSegment( f, 0, "%s\n", smiNode->units ); + } + + fprintSegment( f, -1, "\n"); + fprintDocumentation( f, smiNode->description ); + fprintSegment( f, -1, "\n"); + +} + +static int hasChildren( SmiNode *smiNode, SmiNodekind nodekind ) +{ + SmiNode *iterNode; + int childNodeCount = 0; + + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ){ + if( nodekind & iterNode->nodekind ) { + childNodeCount++; + } + } + return childNodeCount; +} + +static void +fprintTypeWithHint( FILE *f, SmiNode *smiNode, SmiType *smiType, char *hint ) +{ + char *pattern; + + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintDisplayHint( f, hint ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, 1, "\n"); + + pattern = smiFormatToPattern(hint, smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 0, "\n", pattern); + xfree(pattern); + } + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static char *getParentDisplayHint( SmiType *smiType ) +{ + SmiType *iterType; + + for( iterType = smiGetParentType( smiType ); + iterType; + iterType = smiGetParentType( iterType ) ) { + if( iterType->format ) { + return iterType->format; + } + } + return NULL; +} + + +static void fprintIndexAttr( FILE *f, SmiNode *smiNode, SmiNode *augments ) +{ + char *typeName, *prefix; + SmiType *smiType; + + smiType = smiGetNodeType( smiNode ); + if( !smiType ) { +/* fprint( f, "\n", smiNode->name );*/ + return; + } + + typeName = smiType->name ? + smiType->name : + getStringBasetype( smiType->basetype ); + prefix = getTypePrefix( typeName ); + + + if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintSegment( f, 1, "\n", + smiNode->name, + smiNode->name, + getStringBasetype( smiType->basetype ) ); + fprintAnnotationElem( f, smiNode ); + } + + else if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + char *hint = getParentDisplayHint( smiType ); + + fprintSegment( f, 1, "\n", smiNode->name ); + fprintAnnotationElem( f, smiNode ); + if( ! hint ) { + fprintTypedef( f, smiType, NULL ); + } + else { + fprintTypeWithHint( f, smiNode, smiType, hint ); + } + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + } + + /* check for other (implicit) types */ + else if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + fprintAnnotationElem( f, smiNode ); + fprintTypedef( f, smiType, NULL ); + } + + else { + if( prefix ) { + fprintSegment( f, 1,"name, prefix, typeName ); + fprintf( f, "use=\"required\">\n" ); + } + else { + fprintSegment( f, 1, "name, typeName ); + fprintf( f, "use=\"required\">\n" ); + } + + if( augments ) { + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "%s\n", augments->name ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + } + else { + fprintAnnotationElem( f, smiNode ); + } + } + fprintSegment( f, -1, "\n"); +} + +static int containsIndex( SmiNode *parentNode, SmiNode *idxNode ) +{ + SmiElement *iterElement; + + + for( iterElement = smiGetFirstElement( parentNode ); + iterElement; + iterElement = smiGetNextElement( iterElement ) ) { + SmiNode *iterNode = smiGetElementNode( iterElement ); + if( iterNode == idxNode ) + return 1; + } + return 0; +} + +static void fprintIndex( FILE *f, + SmiNode *smiNode, SmiNode *augments, SmiNode *parent ) +{ + SmiNode *iterNode; + SmiElement *iterElem; + + /* iterate INDEX columns */ + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + iterNode = smiGetElementNode( iterElem ); + if( ! parent || (parent && !containsIndex( parent, iterNode ) ) ) { + fprintIndexAttr( f, iterNode, augments ); + } + } + + /* print AUGMENTS-clause */ + iterNode = smiGetRelatedNode( smiNode ); + if( iterNode ) { + fprintIndex( f, iterNode, iterNode, NULL ); + } +} + +/* counts index elements of a table row node */ +static int numIndex( SmiNode *smiNode ) +{ + SmiElement *iterElem; + int ret = 0; + + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + ret++; + } + return ret; +} + + +/* checks if the second node is a subtable of the first node */ +static int +isSubTable( SmiNode *smiNode, SmiNode *subNode ) +{ + SmiElement *iterElement; + unsigned int numIdx = numIndex( smiNode ), numSubIdx = numIndex( subNode ); + + /* compare number of index elements */ + if( numSubIdx <= numIdx ) { + /* does not have more index elements --> no subtable */ + return 0; + } + + /* compare all index elements */ + for( iterElement = smiGetFirstElement( smiNode ); + iterElement; + iterElement = smiGetNextElement( iterElement ) ) { + SmiElement *iterSubElement = smiGetFirstElement( subNode ); + SmiNode *iterSubNode; + SmiNode *idxNode = smiGetElementNode( iterElement ); + + for( iterSubElement = smiGetFirstElement( subNode ); + iterSubElement; + iterSubElement = smiGetNextElement( iterSubElement ) ) { + + iterSubNode = smiGetElementNode( iterSubElement ); + if( idxNode == iterSubNode ){ + return 1; + } + } + } + return 0; +} + + +static void fprintComplexType( FILE *f, SmiNode *smiNode, const char *name, + SmiNode *parent ) +{ + SmiNode *iterNode; + int numChildren; + + if( name ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + } else { + fprintSegment( f, 1, "\n" ); + } + +/* fprintAnnotationElem( f, smiNode ); */ + + numChildren = hasChildren( smiNode, SMI_NODEKIND_ANY ); + + fprintSegment( f, 1, "\n"); + + /* print child elements */ + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + + fprintElement( f, iterNode, NULL ); + + } + + /* print augmentations */ + if( nestAugmentedTables ) { + for( iterNode = smiGetFirstNode( smiGetNodeModule( smiNode ), + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + SmiNode *augmNode = smiGetRelatedNode( iterNode ); + if( augmNode == smiNode ) { + SmiNode *augIterNode; + for( augIterNode = smiGetFirstChildNode( iterNode ); + augIterNode; + augIterNode = smiGetNextChildNode( augIterNode ) ) { + + fprintElement( f, augIterNode, NULL ); + } + } + } + } + + /* print subtables */ + if( nestSubtables ) { + for( iterNode = smiGetFirstNode( smiGetNodeModule( smiNode ), + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( isSubTable( smiNode, iterNode ) ) { +/* fputs( "\n", f );*/ + fprintElement( f, iterNode, smiNode ); +/* fputs( "\n", f );*/ + } + } + } + + fprintSegment( f, -1, "\n"); + fprintIndex( f, smiNode, NULL, parent ); + + fprintSegment( f, -1, "\n"); + if( name ) { + /* we are printing out a global type, + so let's leave a blank line after it. */ + fprintf( f, "\n" ); + } + + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + if( iterNode->nodekind == SMI_NODEKIND_NODE ) { + fprintComplexType( f, iterNode, iterNode->name, NULL ); + } + } + +} + + +static void fprintElement( FILE *f, SmiNode *smiNode, SmiNode *parentNode ) +{ + switch( smiNode->nodekind ) { + SmiType *smiType; + + case SMI_NODEKIND_NODE : + { + SmiNode *iterNode; + + fprintSegment( f, 1, "\n", smiNode->name); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + if( iterNode->nodekind == SMI_NODEKIND_SCALAR ) { + fprintElement( f, iterNode, NULL ); + } + } + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + } + break; + + case SMI_NODEKIND_TABLE : + { + SmiNode *iterNode; + + /* ignore tables and just include their entries */ + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + fprintElement( f, iterNode, NULL ); + } + break; + } + + case SMI_NODEKIND_ROW: + + fprintSegment( f, 1, "\n", + smiNode->name ); + + fprintAnnotationElem( f, smiNode ); + + fprintComplexType( f, smiNode, NULL, parentNode ); + fprintSegment( f, -1, "\n"); + break; + + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + { + SmiElement *iterElem; + char *prefix; + char *typeName; + + /* check if we are index column */ + for( iterElem = smiGetFirstElement( smiGetParentNode( smiNode ) ) ; + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + if( smiNode == smiGetElementNode( iterElem ) ) { + /* we are index coulumn ==> do not print element */ + return; + } + } + + if( smiNode->access < SMI_ACCESS_READ_ONLY ) { + /* only print accessible nodes */ + return; + } + + smiType = smiGetNodeType( smiNode ); + + if( smiType->name ) { + typeName = smiType->name; + } + else { + typeName = getStringBasetype( smiType->basetype ); + } + prefix = getTypePrefix( typeName ); + +#if 0 + if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintSegment( f, 1, "\n", + smiNode->name, + smiNode->name, + getStringBasetype( smiType->basetype ) ); + fprintAnnotationElem( f, smiNode ); + } + +// else if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { +#endif /* 0 */ + + if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + + char *hint = getParentDisplayHint( smiType ); + + fprintSegment( f, 1, "\n", smiNode->name ); + fprintAnnotationElem( f, smiNode ); + if( ! hint ) { + fprintTypedef( f, smiType, NULL ); + } + else { + fprintTypeWithHint( f, smiNode, smiType, hint ); + } + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + } + + else if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + fprintAnnotationElem( f, smiNode ); + fprintTypedef( f, smiType, NULL ); + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + fprintSegment( f, -1, "\n"); + break; + } + + case SMI_NODEKIND_NOTIFICATION: + fprintSegment( f, 0, "\n", smiNode->name ); + break; + + default: + fprintf( f, "\n\n", smiNode->nodekind ); + + } +} + + +static void fprintImplicitTypes( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + SmiType *smiType; + + for(iterNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN); + iterNode; + iterNode = smiGetNextNode(iterNode, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN)) { + smiType = smiGetNodeType( iterNode ); + if( smiType ) { + switch( smiType->basetype ) { + + case SMI_BASETYPE_BITS: + if( ! getTypePrefix( smiType->name ) ) { + fprintTypedef( f, smiType, iterNode->name ); + break; + } + + case SMI_BASETYPE_OCTETSTRING: +#if 0 + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintTypedef( f, INDENT, smiType, iterNode->name ); + } +#endif /* 0 */ + break; + default: + break; + } + } + } +} + + +#if 0 +static void fprintRows( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + fprintElement( f, iterNode, NULL ); + } + } +} +#endif + +static void fprintImports( FILE *f, SmiModule *smiModule ) +{ + SmiImport *iterImp; + char *lastModName = ""; + + fprintSegment( f, 0, "\n", schemaLocation, schemaLocation ); + for( iterImp = smiGetFirstImport( smiModule ); + iterImp; + iterImp = smiGetNextImport( iterImp ) ) { + /* assume imports to be ordered by module names */ + if( strcmp( iterImp->module, lastModName ) ) { + fprintSegment( f, 0, "\n", + schemaLocation, iterImp->module, + schemaLocation, iterImp->module ); + } + lastModName = iterImp->module; + } + fprintf( f, "\n"); + +} + + +/* + * Check if given table io a sub table of another table. + * If so, its parent table is returned (NULL otherwise). + */ +static SmiNode *isASubTable( SmiNode *smiNode, SmiModule *smiModule ) +{ + SmiNode *iterNode; + int numIdxDiff = -1; + SmiNode *retNode = NULL; + + for( iterNode = smiGetFirstNode( smiModule, + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, + SMI_NODEKIND_ROW ) ) { + + if( isSubTable( iterNode, smiNode ) ) { + + if( (numIdxDiff == -1) || + ((numIndex( smiNode ) - numIndex( iterNode )) < numIdxDiff) ) { + retNode = iterNode; + numIdxDiff = numIndex( smiNode ) - numIndex( iterNode ); + } + + } + } + return retNode; +} + + +static void fprintGroupTypes( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode, *iterNode2; + + /* scalar groups */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NODE ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NODE ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_SCALAR ) ) { + fprintSegment(f, 1, "\n", + iterNode->name); + fprintSegment( f, 1, "\n"); + for( iterNode2 = smiGetFirstChildNode( iterNode ); + iterNode2; + iterNode2 = smiGetNextChildNode( iterNode2 ) ) { + if( iterNode2->nodekind == SMI_NODEKIND_SCALAR ) { + fprintElement( f, iterNode2, NULL ); + } + } + fprintSegment( f, -1, "\n"); + fprintSegment(f, -1, "\n"); + } + } + + /* rows */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, + SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + + /* skip nested subtables here */ + if( nestSubtables ){ + if( isASubTable( iterNode, smiModule ) != NULL ) { + continue; + } + } + + /* skip table augmentations here */ + if( nestAugmentedTables ) { + if( iterNode->indexkind == SMI_INDEX_AUGMENT ) { + continue; + } + } + + fprintComplexType( f, iterNode, iterNode->name, NULL ); + + } + } +} + + +#if 0 +static void fprintNotifications( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NOTIFICATION ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NOTIFICATION ) ) { + fprintElement( f, iterNode, NULL ); + } +} +#endif + + +static void fprintModuleHead(FILE *f, SmiModule *smiModule) +{ + if( smiModule->description ) { + fprintSegment(f, 1, "\n"); + fprintDocumentation(f, smiModule->description); + fprintSegment(f, -1, "\n\n"); + } + +} + + +static void fprintKey( FILE *f, SmiNode *smiNode ) +{ + SmiNode *relNode; + SmiElement *iterElem; + + switch( smiNode->indexkind ) { + + case SMI_INDEX_INDEX: + + /* print key */ +/* fprintSegment( f, 1, "\n", smiNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n");*/ + break; + + case SMI_INDEX_AUGMENT: + + /* print keyref */ + fprintSegment( f, 1, "name ); + fprintf( f, "refer=\"%sKey\">\n", relNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( relNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n"); + + /* print unique clause */ + fprintSegment( f, 1, "\n", smiNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( relNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n"); + break; + + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + /* SMIng, not implemented yet */ + break; + + default: + fprintf( f, "\n" ); + break; + } +} + + +static void fprintGroupElements(FILE *f, SmiModule *smiModule) +{ + SmiNode *iterNode; + + /* scalar groups */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NODE ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NODE ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_SCALAR ) ) { + + if (container) { + fprintSegment(f, 1, "\n", + iterNode->name, + smiModule->name, iterNode->name); + } else { + fprintSegment(f, 1, "\n", + iterNode->name, iterNode->name); + } + fprintAnnotationElem( f, iterNode ); + fprintSegment( f, -1, "\n" ); + } + } + + /* rows */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + /* skip nested subtables here */ + if( nestSubtables ){ + if( isASubTable( iterNode, smiModule ) != NULL ) { + continue; + } + } + + /* skip table augmentations here */ + if( nestAugmentedTables ) { + if( iterNode->indexkind == SMI_INDEX_AUGMENT ) { + continue; + } + } + + if (container) { + fprintSegment(f, 1, "\n", + iterNode->name, + smiModule->name, iterNode->name); + fprintKey( f, iterNode ); + } else { + fprintSegment(f, 1, "\n", + iterNode->name, iterNode->name); + } + fprintAnnotationElem( f, iterNode ); + fprintSegment( f, -1, "\n" ); + } + } +} + + +static char *getSubTableXPath( SmiNode *smiNode, SmiModule *smiModule ) +{ + char *ret; + SmiNode *parentTable = isASubTable( smiNode, smiModule ); + + if( parentTable ) { + smiAsprintf( &ret, "%s/%s", + getSubTableXPath( parentTable, smiModule ), + smiNode->name ); + } + else { + smiAsprintf( &ret, "%s", smiNode->name ); + } + return ret; +} + + +static void fprintKeys( FILE *f, SmiModule *smiModule ) +{ + + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + + SmiElement *iterElem; + + /* print only keys for base tables */ + if( iterNode->indexkind != SMI_INDEX_INDEX ) { + continue; + } + + /* print key */ + fprintSegment( f, 1, "\n", iterNode->name ); + fprintSegment( f, 0, "\n", + nestSubtables ? + getSubTableXPath( iterNode, smiModule ) : iterNode->name ); + + for( iterElem = smiGetFirstElement( iterNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n"); + } + + +} + + +static void fprintContextHead(FILE *f) +{ + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); +} + + +static void fprintContextFoot(FILE *f, SmiModule **modv, int modc) +{ + int i; + + fprintSegment( f, -1, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + + for( i=0; i < modc; i++ ) { + fprintKeys( f, modv[ i ] ); + } + fprintSegment( f, -1, "\n\n"); +} + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + fprintf(f, "\n"); + fprintTypedef(f, smiType, smiType->name); + } +} + + +static void registerType( char *type, char *module ) +{ + TypePrefix *oldTPr = NULL, *iterTPr = NULL; + + for( iterTPr = typePrefixes; iterTPr; iterTPr = iterTPr->next ) { + oldTPr = iterTPr; + } + if( ! oldTPr ) { + /* type prefixes do not exist yet */ + typePrefixes = xmalloc( sizeof( TypePrefix ) ); + typePrefixes->type = type; + typePrefixes->prefix = module; + typePrefixes->next = NULL; + } + else { + /* create new TypePrefix */ + oldTPr->next = xmalloc( sizeof( TypePrefix ) ); + oldTPr->next->type = type; + oldTPr->next->prefix = module; + oldTPr->next->next = NULL; + } +} + + +static void dumpXsdModules(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + SmiImport *iterImp; + char *lastModName = ""; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + fprintf(f, "\n"); + fprintf(f, "\n"); + + fputs( "\n\n", f ); + + fprintSegment(f, 1, "name); + + fprintf(f, " xmlns=\"%s%s\"\n", + schemaLocation, modv[i]->name); +/* fprintf(f, " xmlns:xmn=\"http://www.w3.org/XML/1998/namespace\"\n"); */ + fprintf(f, " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n"); + fprintf(f, " xmlns:smi=\"%ssmi\"\n", schemaLocation); + + for( iterImp = smiGetFirstImport( modv[i] ); + iterImp; + iterImp = smiGetNextImport( iterImp ) ) { + registerType( iterImp->name, iterImp->module ); + /* assume imports to be ordered by module names */ + if( strcmp( iterImp->module, lastModName ) ) { + fprintf( f, " xmlns:%s=\"%s%s\"\n", + iterImp->module, schemaLocation, iterImp->module ); + } + lastModName = iterImp->module; + } + + fprintf(f, " xml:lang=\"en\"\n"); + fprintf(f, " elementFormDefault=\"qualified\"\n"); + fprintf(f, " attributeFormDefault=\"unqualified\">\n\n"); + + fprintModuleHead(f, modv[i]); + fprintImports(f, modv[i]); + fprintContextHead(f); + fprintGroupElements(f, modv[i]); + fprintContextFoot(f, modv, 0); + fprintGroupTypes(f, modv[i]); + fprintImplicitTypes(f, modv[i]); + fprintTypedefs(f, modv[i]); + + fprintSegment(f, -1, "\n"); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + +static void dumpXsdContainer(int modc, SmiModule **modv, int flags, + char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + fprintf(f, "\n"); + fprintf(f, "\n"); + + fputs( "\n\n", f ); + + fprintSegment(f, 1, "name, schemaLocation, modv[i]->name); + } + + fprintf(f, " xml:lang=\"en\"\n"); + fprintf(f, " elementFormDefault=\"qualified\"\n"); + fprintf(f, " attributeFormDefault=\"unqualified\">\n\n"); + + /* imports */ + for (i = 0; i < modc; i++) { + fprintSegment( f, 0, "\n", + schemaLocation, modv[i]->name, + schemaLocation, modv[i]->name); + } + fprintf( f, "\n"); + + /* context */ + fprintContextHead(f); + for (i = 0; i < modc; i++) { + /* per module elements */ + fprintGroupElements(f, modv[i]); + } + fprintContextFoot(f, modv, modc); + + fprintSegment(f, -1, "\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + +static void dumpXsd(int modc, SmiModule **modv, int flags, char *output) +{ + /* register smi basetypes */ + registerType( "Integer32", "smi" ); + registerType( "ObjectIdentifier", "smi" ); + registerType( "OctetString", "smi" ); + registerType( "Unsigned32", "smi" ); + registerType( "Unsigned64", "smi" ); + + /* make sure url ends with '/' */ + if( schemaLocation[ strlen( schemaLocation ) - 1 ] != '/' ) { + smiAsprintf( &schemaLocation, "%s%c", schemaLocation, '/'); + } + + if (container) { + dumpXsdContainer(modc, modv, flags, output); + } else { + dumpXsdModules(modc, modv, flags, output); + } + + /* delete type-prefix-mapping */ + free( typePrefixes ); /* XXX: TODO: free all malloced types in a loop */ +} + + +void initXsd() +{ + + static SmidumpDriverOption opt[] = { + { "schema-url", OPT_STRING, &schemaLocation, 0, + "URI prefix for schema definitions and namespaces" }, + { "container", OPT_FLAG, &container, 0, + "generate a container schema" }, + { "nest-augments", OPT_FLAG, &nestAugmentedTables, 0, + "Nest rows of augmented tables in the base tables" }, + { "nest-subtables", OPT_FLAG, &nestSubtables, 0, + "Nest subtables in the base tables" }, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "xsd", + dumpXsd, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "XML schema definitions", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-yang.c b/tools/dump-yang.c new file mode 100644 index 0000000..be383a9 --- /dev/null +++ b/tools/dump-yang.c @@ -0,0 +1,1426 @@ +/* + * dump-yang.c -- + * + * Operations to dump MIB modules in the YANG output format. + * + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-yang.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" +#include "fprint.h" +#include "fortopat.h" + +/* + * TODO: + * - reproduce the table comment text as a yang comment + * - fix the format strings to xsd pattern algorithm so that it + * produces more accurate results + * - compute proper boundaries for binary/string length restrictions + * - translate notifications properly (whatever that means ;-) + * - handle opaque in a reasonable way (test case AGGREGATE-MIB) + */ + +static int sflag = 0; /* generate smi: extensions */ +static int nflag = 0; /* generate notifications */ +static int INDENT = 2; /* indent factor */ + +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define URNBASE "urn:ietf:params:xml:ns:yang:smiv2:" + + +#define FLAG_CONFIG_FALSE 0x01 + + +static const char *convertType[] = { + + /* + * Translation of the SMIng built-in types to the YANG + * equivalents. + */ + + "", "Integer32", NULL, "int32", + "", "Integer64", NULL, "int64", + "", "Unsigned32", NULL, "uint32", + "", "Unsigned64", NULL, "uint64", + "", "OctetString", NULL, "binary", + "", "Enumeration", NULL, "enumeration", + "", "Bits", NULL, "bits", + "", "ObjectIdentifier", "yang-types", "object-identifier", + + /* + * We want to do these translations as well in order to retire the + * SNMPv2-SMI module which is not really an SMIv2 module but part + * of the definition of SNMPv2-SMI itself. + */ + + "SNMPv2-SMI", "Integer32", NULL, "int32", + "SNMPv2-SMI", "Integer64", NULL, "int64", + "SNMPv2-SMI", "Unsigned32", NULL, "uint32", + "SNMPv2-SMI", "Opaque", NULL, "binary", + "SNMPv2-SMI", "Counter32", "yang-types", "counter32", + "SNMPv2-SMI", "Counter64", "yang-types", "counter64", + "SNMPv2-SMI", "Gauge32", "yang-types", "gauge32", + "SNMPv2-SMI", "TimeTicks", "yang-types", "timeticks", + "SNMPv2-SMI", "IpAddress", "inet-types", "ipv4-address", + + /* + * And we like to do the same for RFC1155-SMI definitions... + */ + + "RFC1155-SMI", "Opaque", NULL, "binary", + "RFC1155-SMI", "Counter", "yang-types", "counter32", + "RFC1155-SMI", "Gauge", "yang-types", "gauge32", + "RFC1155-SMI", "TimeTicks", "yang-types", "timeticks", + "RFC1155-SMI", "IpAddress", "inet-types", "ipv4-address", + + /* + * We also translate frequently used SNMPv2-TCs that have a YANG + * equivalent. Note that DateAndTime is slightly different from + * the ISO profile used by date-and-time. + */ + + "SNMPv2-TC", "PhysAddress", "yang-types", "phys-address", + "SNMPv2-TC", "MacAddress", "ieee-types", "mac-address", + "SNMPv2-TC", "TimeStamp", "yang-types", "timestamp", + + NULL, NULL, NULL, NULL +}; + + +static const char *convertImport[] = { + + /* + * Things that are not types but removed from imports... + */ + + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + "SNMPv2-SMI", "mib-2", NULL, NULL, + "SNMPv2-TC", "TEXTUAL-CONVENTION", NULL, NULL, + "SNMPv2-CONF", "OBJECT-GROUP", NULL, NULL, + "SNMPv2-CONF", "NOTIFICATION-GROUP", NULL, NULL, + "SNMPv2-CONF", "MODULE-COMPLIANCE", NULL, NULL, + "SNMPv2-CONF", "AGENT-CAPABILITIES", NULL, NULL, + "SNMPv2-MIB", "snmpTraps", NULL, NULL, + + NULL, NULL, NULL, NULL +}; + +/* + * SMIv2 modules we never like to import from... + */ + +static const char *ignoreImports[] = { + "RFC1155-SMI", "SNMPv2-SMI", "SNMPv2-CONF", NULL +}; + + +/* + * Structure used to build a list of imported types. + */ + +typedef struct Import { + char *module; + char *prefix; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + +static int silent = 0; + + +static char* +getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + +static char* +getStringDate(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + return s; +} + + + +static char* +getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << i%8)) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} + + +static int +isPrefixUnique(const char *prefix) +{ + Import *import; + + for (import = importList; import; import = import->nextPtr) { + if (strcmp(prefix, import->prefix) == 0) { + return 0; + } + } + + return 1; +} + + +static char* +guessNicePrefix(const char *moduleName) +{ + char *prefix; + int i, d; + + char *specials[] = { + "yang-smi", "smi", + "yang-types", "yang", + "inet-types", "inet", + "ieee-types", "ieee", + "SNMPv2-TC", "smiv2", + NULL, NULL + }; + + for (i = 0; specials[i]; i +=2) { + if (strcmp(moduleName, specials[i]) == 0) { + if (isPrefixUnique(specials[i+1])) { + return xstrdup(specials[i+1]); + } + } + } + + prefix = xstrdup(moduleName); + for (i = 0; prefix[i]; i++) { + prefix[i] = tolower(prefix[i]); + } + + for (i = 0, d = 0; prefix[i]; i++) { + if (prefix[i] == '-') { + d++; + if (d > 1) { + prefix[i] = 0; + if (isPrefixUnique(prefix)) { + return prefix; + } + prefix[i] = '-'; + } + } + } + + return prefix; +} + + +static const char* +getModulePrefix(const char *moduleName) +{ + Import *import; + static char *prefix = NULL; + + for (import = importList; import; import = import->nextPtr) { + if (strcmp(moduleName, import->module) == 0) { + return import->prefix; + } + } + + if (prefix) xfree(prefix); + prefix = guessNicePrefix(moduleName); + return prefix; +} + + + +static Import* +addImport(char *module, char *name) +{ + Import **import, *newImport; + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c == 0) return *import; + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->prefix = guessNicePrefix(module); + + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void +createImportList(SmiModule *smiModule) +{ + SmiImport *smiImport; + SmiIdentifier impModule, impName; + SmiType *smiType; + SmiNode *smiNode; + int i; + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + + impModule = smiImport->module; + impName = smiImport->name; + + for (i = 0; convertType[i]; i += 4) { + if (strcmp(smiImport->module, convertType[i]) == 0 + && strcmp(smiImport->name, convertType[i+1]) == 0) { + impModule = (SmiIdentifier) convertType[i+2]; + impName = (SmiIdentifier) convertType[i+3]; + break; + } + } + + if (! impModule || ! impName) continue; + + for (i = 0; convertImport[i]; i += 4) { + if (strcmp(smiImport->module, convertImport[i]) == 0 + && strcmp(smiImport->name, convertImport[i+1]) == 0) { + impModule = (SmiIdentifier) convertImport[i+2]; + impName = (SmiIdentifier) convertImport[i+3]; + break; + } + } + + if (! impModule || ! impName) continue; +#if 0 + fprintf(stderr, "%s\t%s\n", impModule, impName); +#endif + addImport(impModule, impName); + } + + /* + * Add import for the smi:oid extension and friends. + */ + + if (sflag) { + addImport("yang-smi", "oid"); + } + + /* + * Add import for yang-types that were originally ASN.1 + * builtins... + */ + + for (smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + SmiType *parentType = smiGetParentType(smiType); + if (parentType && strcmp(parentType->name, "ObjectIdentifier") == 0) { + addImport("yang-types", "object-identifier"); + } + } + + for (smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN)) { + smiType = smiGetNodeType(smiNode); + if (! smiType->name) { + smiType = smiGetParentType(smiType); + } + if (smiType && strcmp(smiType->name, "ObjectIdentifier") == 0) { + addImport("yang-types", "object-identifier"); + } + } +} + + + +static void +freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + xfree(import->prefix); + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static int +isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && childNode->status == SMI_STATUS_CURRENT) { + return 1; + } + } + + return 0; +} + + +static int +isIndex(SmiNode *groupNode, SmiNode *smiNode) +{ + SmiElement *smiElement; + int cnt = 0; + + /* + * We return an indication whether smiNode is part of an index. In + * fact, we return number of times smiNode is part of an index + * since we sometimes have to disambiguate names... + */ + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + if (smiNode == smiGetElementNode(smiElement)) { + cnt++; + } + } + + return cnt; +} + + +static void +fprintRevisions(FILE *f, int indent, SmiModule *smiModule) +{ + int i; + SmiRevision *smiRevision; + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, indent, "revision ", 0); + fprint(f, "\"%s\" {\n", getStringDate(smiRevision->date)); + fprintSegment(f, 2 * indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * indent, smiRevision->description); + fprint(f, ";\n"); + fprintSegment(f, indent, "}\n", 0); + i++; + } + if (i) { + fprint(f, "\n"); + } +} + + +static void +fprintImports(FILE *f, SmiModule *smiModule) +{ + Import *import; + int i, len = 4; + + for (import = importList; import; import = import->nextPtr) { + for (i = 0; ignoreImports[i]; i++) { + if (strcmp(ignoreImports[i], import->module) == 0) { + break; + } + } + if (ignoreImports[i] == NULL) { + if (strlen(import->module) > len) len = strlen(import->module); + } + } + + for (import = importList; import; import = import->nextPtr) { + for (i = 0; ignoreImports[i]; i++) { + if (strcmp(ignoreImports[i], import->module) == 0) { + break; + } + } + if (ignoreImports[i] == NULL) { + fprintSegment(f, INDENT, "import", 0); + fprint(f, " %-*s { prefix \"%s\"; }\n", len, + import->module, import->prefix); + } + } + fprint(f, "\n"); + +} + + + + +static void +fprintSubtype(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + char *tkw, *lkw, *vkw; + int i = 0; + int len = 4; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for (nn = smiGetFirstNamedNumber(smiType); + nn ; nn = smiGetNextNamedNumber(nn)) { + if (strlen(nn->name) > len) len = strlen(nn->name); + } + + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + if (! i) { + fprint(f, " {\n"); + } + tkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "bits" : "enumeration"; + lkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "bit" : "enum"; + vkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "position" : "value"; + sprintf(s, "%s %-*s { %s %s; }\n", + lkw, len, nn->name, + vkw, getValueString(&nn->value, smiType)); + fprintSegment(f, indent + INDENT, s, 0); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " {\n"); + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprintSegment(f, indent + INDENT, "length \"", 0); + } else { + fprintSegment(f, indent + INDENT, "range \"", 0); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprint(f, s); + } + if (i) { + fprint(f, "\";\n"); + } + } + + if (smiType->format + && smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + + char *pattern; + pattern = smiFormatToPattern(smiType->format, + smiGetFirstRange(smiType)); + if (pattern) { + if (! i) { + fprint(f, "{\n"); + } + fprintSegment(f, indent + INDENT, "pattern \"", 0); + fprint(f, "%s\";\n", pattern); + xfree(pattern); + i++; + } + } + + if (! i) { + fprint(f, ";\n"); + } else { + fprintSegment(f, indent, "}\n", 0); + } +} + + +static void +fprintStatus(FILE *f, int indent, SmiStatus status) +{ + if ((status != SMI_STATUS_CURRENT) && + (status != SMI_STATUS_UNKNOWN) && + (status != SMI_STATUS_MANDATORY) && + (status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, indent, "status", 0); + fprint(f, " %s;\n", getStringStatus(status)); + } +} + + +static void +fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "units", 0); + fprint(f, " \"%s\";\n", units); + } +} + + +static void +fprintFormat(FILE *f, int indent, const char *format) +{ + if (sflag && format) { + fprintSegment(f, 2 * INDENT, "smi:display-hint", 0); + fprint(f, " \"%s\";\n", format); + } +} + + +static void +fprintObjectIdentifier(FILE *f, int indent, SmiSubid *oid, int oidlen) +{ + int i; + + if (sflag && oid && oidlen) { + fprintSegment(f, indent, "smi:oid", 0); + fprint(f, " \""); + for (i=0; i < oidlen; i++) { + fprint(f, "%s%d", i ? "." : "", oid[i]); + } + fprint(f, "\";\n"); + } +} + + +static void +fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, description); + fprint(f, ";\n"); + } +} + + +static void +fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, reference); + fprint(f, ";\n"); + } +} + + +static void +fprintConfig(FILE *f, int indent, SmiAccess access) +{ + if (access == SMI_ACCESS_READ_WRITE) { + fprintSegment(f, indent, "config true;\n", 0); + } else { + fprintSegment(f, indent, "config false;\n", 0); + } +} + + +static void +fprintDefault(FILE *f, int indent, SmiValue *value, SmiType *smiType) +{ + if (sflag && value->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "smi:default", 0); + fprint(f, " \"%s\";\n", getValueString(value, smiType)); + } +} + + +static int +fprintTypename(FILE *f, SmiType *smiType, int format) +{ + const char *typeModule = NULL, *typeName = NULL; + SmiModule *smiModule; + int i; + + if (! smiType) return 0; + + smiModule = smiGetTypeModule(smiType); + + if (smiType && ! smiType->name) { + return fprintTypename(f, smiGetParentType(smiType), format); + } + + for (i = 0; convertType[i]; i += 4) { + if (strcmp(smiModule->name, convertType[i]) == 0 + && strcmp(smiType->name, convertType[i+1]) == 0) { + typeModule = convertType[i+2]; + typeName = convertType[i+3]; + break; + } + } + + if (! typeName) { + typeModule = smiModule->name; + typeName = smiType->name; + } + + if (typeModule) { + typeModule = getModulePrefix(typeModule); + } + + /* + * We handle a special case here. If we have a format string and + * the type is binary, we turn it into string. + */ + + if (! typeModule && typeName && strcmp(typeName, "binary") == 0) { + if (format) { + typeName = "string"; + } + } + + if (typeModule && typeName) { + fprint(f, "%s:%s", typeModule, typeName); + } else { + fprint(f, "%s", typeName); + } + + return 1; +} + + +static void +fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType, *baseType; + + for (i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + baseType = smiGetParentType(smiType); + + if (!i && !silent) { + fprintSegment(f, INDENT, "/*** TYPE DEFINITIONS ***/\n\n", 0); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "typedef %s {\n", smiType->name); + + fprintSegment(f, 2 * INDENT, "type ", 0); + fprintTypename(f, baseType, smiType->format != NULL); + fprintSubtype(f, 2 * INDENT, smiType); + + fprintUnits(f, 2 * INDENT, smiType->units); + fprintStatus(f, 2 * INDENT, smiType->status); + fprintDescription(f, 2 * INDENT, smiType->description); + fprintReference(f, 2 * INDENT, smiType->reference); + fprintFormat(f, 2 * INDENT, smiType->format); + fprintDefault(f, 2 * INDENT, &smiType->value, smiType); + + fprintSegment(f, INDENT, "}\n\n", 0); + i++; + } +} + + +static void +fprintPath(FILE *f, SmiNode *smiNode) +{ + SmiNode *entryNode = NULL; + SmiNode *tableNode = NULL; + SmiNode *contNode = NULL; + SmiModule *smiModule = NULL; + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + contNode = smiGetParentNode(smiNode); + break; + case SMI_NODEKIND_COLUMN: + entryNode = smiGetParentNode(smiNode); + tableNode = smiGetParentNode(entryNode); + contNode = smiGetParentNode(tableNode); + break; + case SMI_NODEKIND_ROW: + entryNode = smiNode; + tableNode = smiGetParentNode(entryNode); + contNode = smiGetParentNode(tableNode); + break; + case SMI_NODEKIND_TABLE: + contNode = smiGetParentNode(tableNode); + break; + default: + break; + } + + smiModule = smiGetNodeModule(contNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), contNode->name); + } + if (contNode == smiNode) return; + + if (entryNode) { + smiModule = smiGetNodeModule(entryNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), entryNode->name); + } + if (entryNode == smiNode) return; + } + + smiModule = smiGetNodeModule(smiNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), smiNode->name); + } +} + + +static void +fprintLeaf(FILE *f, int indent, SmiNode *smiNode, int flags) +{ + SmiType *smiType; + SmiAccess config; + + smiType = smiGetNodeType(smiNode); + + fprintSegment(f, indent, "leaf ", 0); + fprint(f, "%s {\n", smiNode->name); + + fprintSegment(f, indent + INDENT, "type ", 0); + fprintTypename(f, smiType, smiNode->format != NULL); + if (! smiType->name) { + fprintSubtype(f, indent + INDENT, smiType); + } else { + fprint(f, ";\n"); + } + + fprintUnits(f, indent + INDENT, smiNode->units); + if (flags & FLAG_CONFIG_FALSE) { + config = SMI_ACCESS_READ_ONLY; + } else { + config = smiNode->access; + } + fprintConfig(f, indent + INDENT, config); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintFormat(f, indent + INDENT, smiNode->format); + fprintDefault(f, indent + INDENT, &smiNode->value, smiType); + fprintObjectIdentifier(f, indent + INDENT, smiNode->oid, smiNode->oidlen); + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintKeyrefLeaf(FILE *f, int indent, SmiNode *smiNode, int flags) +{ + SmiNode *entryNode; + SmiAccess config; + + entryNode = smiGetParentNode(smiNode); + fprintSegment(f, indent, "leaf ", 0); + fprint(f, "%s {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "type keyref {\n", 0); + fprintSegment(f, indent + 2 * INDENT, "path \"", 0); + fprintPath(f, smiNode); + fprint(f, "\";\n"); + fprintSegment(f, indent + INDENT, "}\n", 0); + if (flags & FLAG_CONFIG_FALSE) { + config = SMI_ACCESS_READ_ONLY; + } else { + config = entryNode->create + ? SMI_ACCESS_READ_WRITE : SMI_ACCESS_READ_ONLY; + } + fprintConfig(f, indent + INDENT, config); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, + "Automagically generated keyref leaf."); + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintKey(FILE *f, int indent, SmiNode *smiNode) +{ + SmiElement *smiElement; + int j; + + fprintSegment(f, indent, "key \"", 0); + + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, " "); + } + fprintWrapped(f, indent + 5, + smiGetElementNode(smiElement)->name); + } + fprint(f, "\";\n"); +} + + +static void +fprintLeafs(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *childNode; + int c; + + for (c = 0, childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_COLUMN) { + fprint(f, "\n"); + fprintLeaf(f, indent, childNode, 0); + c++; + } + } +} + + +static void +fprintList(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *entryNode; + SmiNode *childNode; + SmiNode *parentNode; + SmiElement *smiElement; + + entryNode = smiGetFirstChildNode(smiNode); + + fprint(f, "\n"); + fprintSegment(f, indent, "/* XXX table comments here XXX */\n", 0); + fprint(f, "\n"); + + fprintSegment(f, indent, "list", 0); + fprint(f, " %s {\n\n", entryNode->name); + + fprintKey(f, indent + INDENT, entryNode); + fprintStatus(f, indent + INDENT, entryNode->status); + fprintDescription(f, indent + INDENT, entryNode->description); + fprintReference(f, indent + INDENT, entryNode->reference); + fprintObjectIdentifier(f, indent + INDENT, + entryNode->oid, entryNode->oidlen); + fprint(f, "\n"); + + for (smiElement = smiGetFirstElement(entryNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + childNode = smiGetElementNode(smiElement); + parentNode = smiGetParentNode(childNode); + if (childNode->nodekind == SMI_NODEKIND_COLUMN + && parentNode != entryNode) { + fprintKeyrefLeaf(f, indent + INDENT, childNode, 0); + } + } + + fprintLeafs(f, indent + INDENT, entryNode); + + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintAugment(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *baseEntryNode = NULL; + + if (smiNode) { + baseEntryNode = smiGetRelatedNode(smiNode); + } + if (! smiNode || ! baseEntryNode) { + return; + } + + fprint(f, "\n"); + fprintSegment(f, indent, "/* XXX table comments here XXX */\n", 0); + fprint(f, "\n"); + + fprintSegment(f, indent, "augment", 0); + fprint(f, " \""); + fprintPath(f, baseEntryNode); + fprint(f, "\" {\n"); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintLeafs(f, indent + INDENT, smiNode); + fprintObjectIdentifier(f, indent + INDENT, + smiNode->oid, smiNode->oidlen); + fprintSegment(f, indent, "}\n\n", 0); +} + + +static void +fprintAugments(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->nodekind == SMI_NODEKIND_ROW + && smiNode->indexkind == SMI_INDEX_AUGMENT) { + fprintAugment(f, INDENT, smiNode); + } + } + +} + + +static void +fprintContainer(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *childNode; + int c; + + fprintSegment(f, indent, "container", 0); + fprint(f, " %s {\n\n", smiNode->name); + + for (c = 0, childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (c) { + fprint(f, "\n"); + } + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + fprintLeaf(f, indent + INDENT, childNode, 0); + c++; + } + if (childNode->nodekind == SMI_NODEKIND_TABLE) { + SmiNode *entryNode = smiGetFirstChildNode(childNode); + if (entryNode) { + switch (entryNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + fprintList(f, indent + INDENT, childNode); + c++; + break; +#if 0 + case SMI_INDEX_AUGMENT: + fprintAugment(f, indent + INDENT, childNode); + c++; + break; +#endif + default: + break; + } + } + } + } + + fprintObjectIdentifier(f, indent + INDENT, + smiNode->oid, smiNode->oidlen); + + fprintSegment(f, indent, "}\n\n", 0); +} + + +static void +fprintContainers(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + fprintContainer(f, INDENT, smiNode); + } + } +} + + +static void +fprintNamespace(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** NAMESPACE / PREFIX DEFINITION ***/\n\n", 0); + } + + fprintSegment(f, indent, "namespace ", 0); + fprint(f, "\"%s%s\";\n", URNBASE, smiModule->name); + fprintSegment(f, indent, "prefix ", 0); + fprint(f, "\"%s\";\n\n", getModulePrefix(smiModule->name)); +} + + +static void +fprintLinkage(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** LINKAGE (IMPORTS / INCLUDES) ***/\n\n", 0); + } + fprintImports(f, smiModule); +} + + +static void +fprintMeta(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** META INFORMATION ***/\n\n", 0); + } + fprintSegment(f, indent, "organization", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->organization); + fprint(f, ";\n\n"); + fprintSegment(f, indent, "contact", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->contactinfo); + fprint(f, ";\n\n"); + fprintSegment(f, indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->description); + fprint(f, ";\n\n"); + if (smiModule->reference) { + fprintSegment(f, indent, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->reference); + fprint(f, ";\n\n"); + } +} + + +static void +fprintNotificationIndex(FILE *f, int indent, + SmiNode *entryNode, SmiNode *ignoreNode) +{ + SmiElement *smiElement; + SmiNode *childNode; + SmiNode *parentNode; + + for (smiElement = smiGetFirstElement(entryNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + childNode = smiGetElementNode(smiElement); + parentNode = smiGetParentNode(childNode); + if (childNode != ignoreNode) { + fprintKeyrefLeaf(f, indent, childNode, FLAG_CONFIG_FALSE); + } + } +} + + +static int +GetPosition(SmiElement *startElement, SmiElement *thisElement) +{ + SmiElement *smiElement; + SmiNode *smiNode; + SmiNode *thisNode = smiGetElementNode(thisElement); + int cnt = 0; + + for (smiElement = startElement, cnt = 0; + smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (smiNode == thisNode) cnt++; + } + + if (cnt <= 1) { + return 0; + } + + for (smiElement = startElement, cnt = 0; + smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (smiNode == thisNode) cnt++; + if (smiElement == thisElement) { + break; + } + } + return cnt; +} + + +static void +fprintNotification(FILE *f, SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *vbNode, *entryNode; + int c, cnt; + + fprintSegment(f, INDENT, "notification", 0); + fprint(f, " %s {\n", smiNode->name); + fprintStatus(f, INDENT + INDENT, smiNode->status); + fprintDescription(f, INDENT + INDENT, smiNode->description); + fprintReference(f, INDENT + INDENT, smiNode->reference); + fprintObjectIdentifier(f, INDENT + INDENT, smiNode->oid, smiNode->oidlen); + fprint(f, "\n"); + + for (c = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + c++, smiElement = smiGetNextElement(smiElement)) { + vbNode = smiGetElementNode(smiElement); + if (! vbNode) continue; + + cnt = GetPosition(smiGetFirstElement(smiNode), smiElement); + + entryNode = (vbNode->nodekind == SMI_NODEKIND_COLUMN) + ? smiGetParentNode(vbNode) : NULL; + + fprintSegment(f, INDENT + INDENT, "container ", 0); + if (cnt) { + fprintf(f, "%s-%s-%d {\n", smiNode->name, vbNode->name, cnt); + } else { + fprintf(f, "%s-%s {\n", smiNode->name, vbNode->name); + } + + if (entryNode) { + switch (entryNode->indexkind) { + case SMI_INDEX_INDEX: + fprintNotificationIndex(f, INDENT + INDENT + INDENT, + entryNode, vbNode); + break; + case SMI_INDEX_AUGMENT: + fprintNotificationIndex(f, INDENT + INDENT + INDENT, + smiGetRelatedNode(entryNode), vbNode); + break; + default: + break; + } + } + + if (entryNode && isIndex(entryNode, vbNode)) { + fprintKeyrefLeaf(f, INDENT + INDENT + INDENT, + vbNode, FLAG_CONFIG_FALSE); + } else { + fprintLeaf(f, INDENT + INDENT + INDENT, + vbNode, FLAG_CONFIG_FALSE); + } + fprintSegment(f, INDENT + INDENT, "}\n\n", 0); + } + + fprintSegment(f, INDENT, "}\n", 0); +} + + +static void +fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int c; + + for (c = 0, smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_NOTIFICATION); + smiNode; + c++, smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_NOTIFICATION)) { + if (c) { + fprint(f, "\n"); + } + fprintNotification(f, smiNode); + } +} + + +static void +dumpYang(int modc, SmiModule **modv, int flags, char *output) +{ + SmiModule *smiModule; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + fprint_indent_texts = INDENT; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + smiModule = modv[i]; + + createImportList(smiModule); + + fprint(f, "/*\n"); + fprint(f, " * This module has been generated by smidump " + SMI_VERSION_STRING ":\n"); + fprint(f, " *\n"); + fprint(f, " * smidump -f yang"); + if (silent) { + fprint(f, " -q"); + } + if (sflag) { + fprint(f, " --yang-smi-extensions"); + } + if (nflag) { + fprint(f, " --yang-no-notifications"); + } + fprint(f, " %s\n", smiModule->name); + fprint(f, " *\n"); + fprint(f, " * Do not edit. Edit the source file instead!\n"); + fprint(f, " */\n\n"); + fprint(f, "module %s {\n", smiModule->name); + fprint(f, "\n"); + + fprintNamespace(f, INDENT, smiModule); + fprintLinkage(f, INDENT, smiModule); + fprintMeta(f, INDENT, smiModule); + fprintRevisions(f, INDENT, smiModule); + + fprintTypedefs(f, modv[i]); + fprintContainers(f, modv[i]); + fprintAugments(f, modv[i]); + + if (! nflag) { + fprintNotifications(f, modv[i]); + } + + fprint(f, "} /* end of module %s */\n", smiModule->name); + + freeImportList(); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initYang() +{ + static SmidumpDriverOption opt[] = { + { "smi-extensions", OPT_FLAG, &sflag, 0, + "generate smi extensions" }, + { "no-notifications", OPT_FLAG, &nflag, 0, + "do not generate notifications" }, + { "indent", OPT_INT, &INDENT, 0, + "indentation (default 2)" }, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "yang", + dumpYang, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "YANG format", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/fortopat.c b/tools/fortopat.c new file mode 100644 index 0000000..607dda6 --- /dev/null +++ b/tools/fortopat.c @@ -0,0 +1,773 @@ +/* + * fortopat.c -- + * + * Implementation of format string to xsd pattern conversion. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xsd.c 7372 2007-10-17 15:26:40Z tklie $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +#include "fortopat.h" + + +#ifndef MIN +#define MIN(a,b) ((a)) < ((b)) ? ((a)) : ((b)) +#endif + + +/* definition of commonly used display hints */ +#define LIBSMI_DH_TP_IPV4Z_ADDR "1d.1d.1d.1d%4d:2d" +#define LIBSMI_DH_UDP_IPV4 "1d.1d.1d.1d/2d" +#define LIBSMI_DH_IPV4Z_ADDR "1d.1d.1d.1d%4d" +#define LIBSMI_DH_IPV4_ADDR "1d.1d.1d.1d" +#define LIBSMI_DH_LDP_ID "1d.1d.1d.1d:2d" +#define LIBSMI_DH_IPV6_ADDR "2x:2x:2x:2x:2x:2x:2x:2x" +#define LIBSMI_DH_IPV6Z_ADDR "2x:2x:2x:2x:2x:2x:2x:2x%4d" +#define LIBSMI_DH_TP_IPV6_ADDR "0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d" +#define LIBSMI_DH_TP_IPV6Z_ADDR "0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d" +#define LIBSMI_DH_HEX "1x" +#define LIBSMI_DH_HEX_COLON "1x:" +#define LIBSMI_DH_DOUBLE_HEX_COLON "2x:" +#define LIBSMI_DH_ASCII "255a" +#define LIBSMI_DH_UTF8 "255t" +#define LIBSMI_DH_ASCII_CHAR "1a" +#define LIBSMI_DH_DATETIME "2d-1d-1d,1d.1d.1d,1a1d:1d" +#define LIBSMI_DH_DATETIME2 "2d-1d-1d,1d:1d:1d.1d,1a1d:1d" +#define LIBSMI_DH_IPX_ADDR "4x.1x:1x:1x:1x:1x:1x.2d" + + +/* list of parts of a display hint */ +typedef struct DH { + unsigned int number; +/* int repeat; // repeat not yet supported */ + char type; + char separator[3]; +/* char repTerm; // repeat not yet supported */ + struct DH *next; +} DH; + + + + + +static int +smiPow(int base, unsigned int exponent) +{ + unsigned int i; + int ret = 1; + + if (exponent == 0) { + return 1; + } + + for (i = 0; i < exponent; i++) { + ret *= base; + } + return ret; +} + + + +static unsigned int +numDigits(unsigned int val) +{ + int ret = 1; + + for (; val / 10; val = val / 10) { + ret++; + } + + return ret; +} + + + +static int +getBracketLevel(char *bracketString) +{ + int level = 0; + char *c = bracketString; + + while(level >= 0 && *c != '\0') { + switch(*c) { + case '(': + level++; + break; + case ')': + level--; + break; + default: + break; + } + c++; + } + + return level; +} + + + +/* parse a display hint and create a list of DHs */ +static struct DH* +parseDH(const char *hint) +{ + struct DH *iterDH = (struct DH *)malloc( sizeof( struct DH ) ); + struct DH *ret = iterDH; + struct DH *oldIterDH = iterDH; + unsigned int pos = 0; + + if (!ret) { + return NULL; + } + + memset(iterDH, 0, sizeof(struct DH)); + + while( pos < strlen( hint ) ) { + + if( ! iterDH ) { + iterDH = (struct DH *)malloc( sizeof( struct DH ) ); + if( ! iterDH ) return NULL; + memset(iterDH, 0, sizeof(struct DH)); + oldIterDH->next = iterDH; + oldIterDH = iterDH; + } + + switch( hint[ pos ] ) { + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + unsigned int endPos; + char *strNum; + + /* find end of number */ + for( endPos = pos; isdigit( hint[ endPos ] ); endPos++ ); + + /* parse number */ + strNum = (char *)malloc( endPos - pos ); + strncpy( strNum, &hint[ pos ], endPos - pos ); + strNum[ endPos - pos ] = '\0'; + iterDH->number = atoi( strNum ); + free( strNum ); + + /* forward the position pointer */ + pos = endPos; + break; + } + + case 'a': + case 'b': + case 'd': + case 'o': + case 't': + case 'x': + iterDH->type = hint[ pos++ ]; + if( isdigit( hint[ pos ] ) || hint[ pos ] == '*' ) { + iterDH = iterDH->next; + } + break; + + case '*': + /* repeat not supported */ + return NULL; + + default: + if( iterDH->separator ) { + /* iterDH->repTerm = hint[ pos++ ]; // repeat not supported */ + pos++; + } + else { + iterDH->separator[0] = hint[ pos++ ]; + if (iterDH->separator[0] == '.' ) { + iterDH->separator[0] = '\\'; + iterDH->separator[1] = '.'; + } + } + if( isdigit( hint[ pos ] ) || hint[ pos ] == '*' ) { + iterDH = iterDH->next; + } + break; + } + } + return ret; +} + +static char* +getSimpleCharFacet_XSD(char dhType, unsigned int number, + unsigned int minL, unsigned int maxL) +{ + char *ret; + char *baseRegExp; + + /* determine base regular expression, depending on display hint type */ + switch( dhType ) { + case 'a': + baseRegExp = "\\p{IsBasicLatin}"; + break; + case 't': + baseRegExp = "."; + break; + default: + /* XXX - fix this to use the normal error reporting mechanism XXX */ + fprintf(stderr, + "displayHint.c: Error: unknown display hint type\n"); + return NULL; + } + + smiAsprintf( &ret, "%s{%d,%d}", baseRegExp, minL, MIN( number, maxL)); + return ret; +} + + +/* check if the hint is known and (if so) return the XSD translation */ +static char* +getKnownDisplayHint_XSD(const char *hint, + SmiUnsigned32 *lengths, unsigned int numSubranges) +{ + int i; + char *ret = ""; + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV4Z_ADDR ) ) + /* this is a simplyfied restriction. + * We could restrict more, + * but then, the pattern will be very hard to read / understand */ + return xstrdup("(\\d{1,3}.){3}\\d{1,3})%\\d{1,10}:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_UDP_IPV4 ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}/\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV4Z_ADDR ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}%\\d{1,10}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV4_ADDR ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}"); + + if( ! strcmp( hint, LIBSMI_DH_LDP_ID ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV6_ADDR ) ) + return xstrdup("([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV6Z_ADDR ) ) + return xstrdup("([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}%\\d{1,10}"); + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV6_ADDR ) ) + return xstrdup("\\[([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}\\]:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV6Z_ADDR ) ) + return xstrdup("\\[([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}%\\d{1,10}\\]:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_HEX ) ) + return xstrdup("[0-9A-Fa-f]{2}"); + + if( ! strcmp( hint, LIBSMI_DH_HEX_COLON ) ) + return xstrdup("[0-9A-Fa-f]{2}:"); + + if( ! strcmp( hint, LIBSMI_DH_DOUBLE_HEX_COLON ) ) + return xstrdup("[0-9A-Fa-f]{4}:"); + + if( ! strcmp( hint, LIBSMI_DH_ASCII ) ) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( 'a', 255, 0, 255 ); + case 1: + return getSimpleCharFacet_XSD( 'a', 255, lengths[0], lengths[1] ); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf(&ret, "%s)|(", ret); + smiAsprintf(&ret, "%s%s", ret, + getSimpleCharFacet_XSD('a', 255, + lengths[i], lengths[i+1])); + + } + smiAsprintf(&ret, "%s)", ret); + return ret; + } + } + + if( ! strcmp(hint, LIBSMI_DH_UTF8 )) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( 't' , 255, 0, 255 ); + case 1: + return getSimpleCharFacet_XSD( 't' , 255, lengths[0], lengths[1]); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf( &ret, "%s)|(", ret ); + smiAsprintf(&ret, "%s%s", + ret, getSimpleCharFacet_XSD('t', 255, + lengths[i], + lengths[i+1])); + } + smiAsprintf( &ret, "%s)", ret ); + return ret; + } + } + + if( ! strcmp( hint, LIBSMI_DH_ASCII_CHAR )) + return xstrdup("\\p{IsBasicLatin}{0,1}"); + + /* we assume here date-time-value, i.e. the number of digits are fixed */ + if( ! strcmp( hint, LIBSMI_DH_DATETIME ) ) + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}.){2}\\d{2},\\p{IsBasicLatin}\\d{2}:\\d{2}"); + + if( ! strcmp( hint, LIBSMI_DH_DATETIME2 ) ) { + if( numSubranges >1 ) + /* there are more subranges, + * assume: lengths = 8 | lengths = 11 + * thus: last 3 octets (time zone info) is optional */ + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}:){2}\\d{2}(,[\\+\\-]\\d{2}:\\d{2}){0,1}"); + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}:){2}\\d{2},[\\+\\-]\\d{2}:\\d{2}"); + } + if( !strcmp( hint, LIBSMI_DH_IPX_ADDR ) ) + return xstrdup("[0-9A-Fa-f]{8}.([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}.\\d{1,4}"); + + else return NULL; +} + + + +/* build a regexp pattern from a display hint + * + * Some documentation: First of all, it is checked whether the display hint + * matches againts one of the well known display hints. If so, a direct mapping + * is applied. Note that most cases ignore any additional length information + * (except DATETIME and ASCII / UTF8). + * If no match can be found, the display hint is parsed and seperated + * into a list of blocks (DH struct). A display hint block consists of + * o the number of octets to be used (unsigned int "number"), + * o a charakter representing the type (char "type"), + * o the separator (char[3] "separator"), + * o a pointer to the next display hint block in the list. + * + * Then, it is checked whether it is a "simple" display hint, + * i.e. is hint that consists only of a single block and + * ASCII / UTF-8 restriction (type 'a' or 't'; as in 100a, 127t). + * (Maybe this can be extended for other simple hints.) + * + * If all of the above matches fail, the hints blocks are converted + * step by step using the these Mappings: + * o ASCII: \p{IsBasicLatin} + * o UTF-8: . + * o Binary: (0|1){8} (8 digits (0 or 1)) + * o Decimal: [0-9]{3} (3 decimal digits) + * o Octal: [0-7]{3} (3 octal digits) + * o Hexadecimal: [0-9A-Fa-f]{2} (2 hexadecimal digits) + * The conversion is not straight forward, + * because there may be also (even several) length restrictions + * and we have to count (or try to estimate) the used octets. Thus, + * it is sometimes necessary to generate multiple patterns + * with different length specification. + * + * Unfortunately, the conversion still is quite difficult to understand + * although I added some comments. The good news is, that all IETF MIBs + * (and all other MIBs coming with libsmi) can be converted "the easy way" + * (i.e. without the difficult conversion loop).*/ + +char* getStrDHType(const char *hint, + SmiUnsigned32 *lengths, unsigned int numSubranges) +{ + unsigned int i = 0; + char *ret = lengths[ i ] ? "(" : "(("; + char *r2 = getKnownDisplayHint_XSD( hint, lengths, numSubranges ); + DH *dh; + int bl; + + r2 = NULL; + + if( r2 ) { + /* if( lengths[ i ] && lengths[i+1] < 65535 ) { + fputs( "LENGTH: ", stdout ); + fprintf( stdout, "min: %d, max: %d ; ", lengths[i], lengths[i+1] ); + fprintf( stdout, "hint was: %s\n", hint ); + } + if( numSubranges > 1 ) fputs( "MORE_SUBRANGES\n", stdout );*/ + return r2; + } + dh = parseDH( hint ); + bl = 0; + + if(! dh ) return NULL; + + /* check if we have a "simple" display hint (e.g. "100a") */ + if( !dh->next && ( dh->type == 'a' || dh->type == 't' ) ) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( dh->type , dh->number, 0, dh->number ); + case 1: + return getSimpleCharFacet_XSD( dh->type , dh->number, lengths[0], lengths[1]); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf( &ret, "%s)|(", ret ); + smiAsprintf( &ret, "%s%s", + ret, getSimpleCharFacet_XSD(dh->type, dh->number, + lengths[i], + lengths[i+1])); + } + smiAsprintf(&ret, "%s)", ret); + return ret; + } + } + + /* no "easy match was possible, so start the "hard" loop */ + do { + unsigned int octetsUsed = 0; + DH *iterDH; + + for( iterDH = dh; iterDH; iterDH = iterDH->next ) { + char *baseRegexp = NULL; + + switch( iterDH->type ) { + + case 'a': + /* ascii character */ + baseRegexp = "(\\p{IsBasicLatin})"; + break; + + case 't': + /* utf-8 character */ + baseRegexp = "."; + break; + + case 'b': + /* binary number */ + baseRegexp = "((0|1){8})"; + break; + + case 'd': + /* decimal number */ + baseRegexp = "([0-9]{3})"; + break; + + case 'o': + /* octal number */ + baseRegexp = "([0-7]{3})"; + break; + + case 'x': + /* hexadecimal number */ + baseRegexp = "([0-9A-Fa-f]{2})"; + break; + + default: + fputs( "smidump: Warning: unknown type of display-hint", + stderr ); + } + + + if( iterDH->number < lengths[ i ] ) { + /* there are more octets to come */ + if( iterDH->type == 'd' ) { + /* decimal number needs to be treated differently */ + if( iterDH->next ){ + /* we still have another diplay hint block coming */ + smiAsprintf( &ret, "%s(0|[1-9](([0-9]){0,%d}))", + ret, + numDigits(smiPow(255, + iterDH->number ))-1 ); + + /* adjust number of used digits */ + octetsUsed += iterDH->number; + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s",ret, iterDH->separator ); + } + } + else { + /* no orther display hint coming up. + * we are at the last iteration */ + smiAsprintf( &ret, "%s((0|[1-9](([0-9]){0,%d})", + ret, + numDigits( smiPow( 255, + iterDH->number ) ) - 1 ); + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", + ret, iterDH->separator ); + } + if( lengths[ i+1 ] - 1 - octetsUsed ) { + /* not all digits for maximum string length (length[i+1 ]) + * have been used, so we have to add some digits */ + smiAsprintf(&ret, + "%s){%u,%u})(0|[1-9](([0-9]){0,%d}))", + ret, lengths[ i ] - 1 - octetsUsed, + lengths[ i+1 ] - 1 - octetsUsed, + numDigits( + smiPow( 255, iterDH->number ))- 1 ); + } + else { + /* maximum number of digets have been used, + * so let's terminate the pattern for this round*/ + smiAsprintf( &ret, "%s)", ret ); + } + + /* adjust the used digit counter */ + octetsUsed += iterDH->number; + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, we must exit the loop */ + break; + } + } + } + else { + /* type other than decimal */ + if( iterDH->next ){ + /* there will be another display hint block */ + smiAsprintf( &ret, "%s(%s{%d})", + ret, + baseRegexp, iterDH->number ); + + /* adjust number of used octets */ + octetsUsed += iterDH->number; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + } + else { + /* we are the last display hint block */ + smiAsprintf( &ret, "%s(%s", + ret, baseRegexp ); + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + + smiAsprintf( &ret, "(%s){%u,%u})%s", + ret, lengths[ i ] - 1, lengths[ i+1 ] - 1, + baseRegexp ); + + /* adjust the number of used octets */ + octetsUsed += iterDH->number; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + } + } + } + else { + /* might be the last one */ + + if( iterDH->type == 'd' ) { + /* decimal number needs to be treated differently */ + if( iterDH->number < lengths[ i+1 ] ) { + /* we are not using the maximun number of octets */ + smiAsprintf( &ret, "%s(0|[1-9]([0-9]{0,%d}))", + ret, + numDigits( smiPow( 255, iterDH->number ) ) ); + + /* adjust the number of used octets */ + octetsUsed += lengths[ i ]; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + } + else { + /* we have used the maximum number of octets */ + smiAsprintf( &ret, "%s(0|[1-9]([0-9]{0,%d})", + ret, + numDigits( smiPow( 255, lengths[ i+1 ] ) ) ); + } + } + else { + /* type is not decimal */ + smiAsprintf( &ret, "%s(%s", ret, baseRegexp ); + if( iterDH->next ) { + /* there will be another display hint block */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* minLength = 0, maxLength = 65535, + * i.e. no restriction at all */ + smiAsprintf( &ret, "%s)*",ret ); + } + else{ + /* we have a different length restriction */ + smiAsprintf( &ret, "%s){%u,%u}",ret, lengths[ i ], + MIN( iterDH->number, + lengths[ i + 1] ) - 1 ); + } + + /* adjust the number of used octets */ + octetsUsed += lengths[ i ]; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + } + else { + /* we are the ast display hint block */ + octetsUsed += lengths[ i ]; + if( iterDH->separator && + octetsUsed < lengths[ i + 1 ] ) { + /* we have a separator char and + * still not reached the maximum number of octets */ + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* we have no length restriction */ + smiAsprintf( &ret, "%s%s)*%s", + ret, iterDH->separator, baseRegexp ); + } + else { + /* we have a length restriction */ + smiAsprintf( &ret, "%s%s){%u,%u}%s", + ret, iterDH->separator, + lengths[ i ], lengths[ i + 1] - 1, + baseRegexp ); + } + } + else { + /* we don't have a separator char or + * have used the maximum number of octets */ + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* no lengths restriction */ + smiAsprintf( &ret, "%s)*%s", + ret, iterDH->separator ); + /* TBD: what, if there is no separator ??? */ + } + else { + /* we have a length restriction */ + smiAsprintf( &ret, "%s){%u,%u}%s", + ret, lengths[ i ], + lengths[ i + 1], + iterDH->separator ); + /* TBD: what, if there is no separator ??? */ + } + } + } + } + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + } + } + /* adjust the "pointer" for the lenghts array */ + i += 2; + + if( i < numSubranges * 2 ) { + /* we are not the last subrange, so we have to extend the pattern */ + smiAsprintf( &ret, "%s)|(", ret ); + } + else { + /* we are the last subrange */ + smiAsprintf( &ret, "%s)", ret ); + if( ! lengths[ 0 ] ) { + smiAsprintf( &ret, "%s){0,1}", ret ); + } + } + } while( i < numSubranges * 2 ); + + /* check if all brackets have been closed */ + if( getBracketLevel( ret ) ) { + bl = getBracketLevel( ret ); + fprintf( stderr, "%d\n", bl ); + if( bl > 0 ) { + /* TODO: add a warning that brackets have been added */ + for(; bl; bl--) { + smiAsprintf( &ret, "%s)", ret ); + } + } + else { + /* TODO: some error handling */ + } + } + return ret; +} + +/* + * Perhaps we should introduce another parameter (flags) which + * controls whether shortcuts are taken and such things... + */ + +extern char* +smiFormatToPattern(const char *format, SmiRange *smiRange) +{ + SmiRange *range = smiRange; + SmiUnsigned32 *lengths = NULL; + int num = 0, lp; + char *pattern; + + for (range = smiRange; range; range = smiGetNextRange(range)) { + num++; + } + + /* copy ranges to array (no clue why this is being done) */ + + if (num) { + lengths = xmalloc(2 * num * sizeof(SmiUnsigned32)); + for (range = smiRange, lp = 0; range; range = smiGetNextRange(range)) { + lengths[lp++] = range->minValue.value.unsigned32; + lengths[lp++] = range->maxValue.value.unsigned32; + } + } else { + lengths = xmalloc( 2 * sizeof(SmiUnsigned32)); + lengths[0] = 0; + lengths[1] = 65535; + } + + pattern = getStrDHType(format, lengths, num); + xfree(lengths); + + return pattern; +} diff --git a/tools/fortopat.h b/tools/fortopat.h new file mode 100644 index 0000000..5e7ce40 --- /dev/null +++ b/tools/fortopat.h @@ -0,0 +1,43 @@ +/* + * fortopat.h -- + * + * Header file for format string to xsd pattern conversion. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.h 7289 2007-09-28 06:48:22Z schoenw $ + */ + +#ifndef _FORTOPAT_H +#define _FORTOPAT_H + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +/* + * Convert the octet string format string in fmt to an xsd pattern + * with the ranges given by range. The pattern is returned as an + * allocated string and must be xfree()d by the caller. On failure, + * a NULL pointer will be returned. + */ + +extern char* smiFormatToPattern(const char *format, SmiRange *range); + +#endif diff --git a/tools/fprint.c b/tools/fprint.c new file mode 100644 index 0000000..b1462a2 --- /dev/null +++ b/tools/fprint.c @@ -0,0 +1,107 @@ +/* + * fprint.c -- + * + * This file defines commonly used utility functions to produce + * nicely indented output. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: fprint.c 8024 2008-04-11 13:25:26Z schoenw $ + */ + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "fprint.h" + +/* + * This module keeps internal state. Hence, these functions are not + * thread safe. Note, however, that multi-threaded concurrent output + * generation may not be such a wonderful idea anyway - so using + * static variables may be good enough. + */ + + +int fprint_current_column = 0; +int fprint_indent_max = 64; +int fprint_indent_texts = 4; + + + +void +fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + fprint_current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + fprint_current_column = strlen(p) - 1; + } + free(s); +} + + + +void +fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +void +fprintWrapped(FILE *f, int column, char *string) +{ + if ((fprint_current_column + strlen(string)) > fprint_indent_max) { + putc('\n', f); + fprint_current_column = 0; + fprintSegment(f, column, "", 0); + } + fprint(f, "%s", string); +} + + + +void +fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, len; + + fprintSegment(f, column - 1 + fprint_indent_texts, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + fprint_current_column++; + if (s[i] == '\n') { + fprint_current_column = 0; + fprintSegment(f, column + fprint_indent_texts, "", 0); + } + } + } + putc('\"', f); + fprint_current_column++; +} diff --git a/tools/fprint.h b/tools/fprint.h new file mode 100644 index 0000000..438ea09 --- /dev/null +++ b/tools/fprint.h @@ -0,0 +1,36 @@ +/* + * fprint.h -- + * + * Header-file for commonly used utility functions to produce + * nicely indented output. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: fprint.h 7289 2007-09-28 06:48:22Z schoenw $ + */ + +#ifndef _FPRINT_H +#define _FPRINT_H + +#include +#include + +extern int fprint_current_column; +extern int fprint_indent_max; +extern int fprint_indent_texts; + +extern void fprintInit(int indent_max, int indent_texts); + +extern void fprint(FILE *f, char *fmt, ...); + +extern void fprintSegment(FILE *f, int column, char *string, int length); + +extern void fprintWrapped(FILE *f, int column, char *string); + +extern void fprintMultilineString(FILE *f, int column, const char *s); + +#endif diff --git a/tools/mib2svg.cgi.in b/tools/mib2svg.cgi.in new file mode 100644 index 0000000..1cd0cee --- /dev/null +++ b/tools/mib2svg.cgi.in @@ -0,0 +1,148 @@ +#!/usr/bin/perl -w -T +use strict; +use CGI qw(:standard); +#set this for testing purposes only +#use CGI::Carp qw(fatalsToBrowser); +use File::Temp; + +#some security-settings +$CGI::POST_MAX = 1024 * 100; +$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; + +#gather all mibs in smipath into @mibnames +my $smipath = "@smipath@"; +my @smidirs = split(/:/,$smipath); +my @mibnames; +foreach my $dir (@smidirs) { + opendir(MIBDIR,$dir); + my @entries = grep !/^\.\.?\z/, readdir(MIBDIR); + closedir(MIBDIR); + @mibnames = (@mibnames, @entries); +} + +if (param()) { + #params present. + my @options; + my $localfh; + my $localfn; + my @mibs = param('mibs'); + my $width = param('width'); + my $height = param('height'); + + #parse options and add safe strings to the options-array + if (param('deprobs')) { + if (param('deprobs') eq "deprecated") { + @options = (@options, "--svg-show-deprecated"); + } elsif (param('deprobs') eq "obsolete") { + @options = (@options, "--svg-show-depr-obsolete"); + } + } + + if (param('static')) { + @options = (@options, "--svg-static-output"); + } + + if ($width =~ /(\d+)/) { + if ($1 <= 2147483647) { + @options = (@options, "--svg-width=$1"); + } + } + if ($height =~ /(\d+)/) { + if ($1 <= 2147483647) { + @options = (@options, "--svg-height=$1"); + } + } + + #parse selected MIBs + foreach my $mibname (@mibnames) { + foreach my $mib (@mibs) { + if ($mibname eq $mib) { + $mibname =~ /([\w\-]+)/; + @options = (@options, "$1"); + } + } + } + + #handle file upload + if (param('uploadmib')) { + my $remotefh = upload('uploadmib'); + ($localfh, $localfn) + = File::Temp->tempfile('tempMIBXXXX', DIR => '/tmp', UNLINK => 1) + or die "Error opening outfile\n"; + while (<$remotefh>) { + print $localfh $_; + } + close $remotefh; + close $localfh; + @options = (@options, $localfn); + } + + #call smidump + my $res = open (SMIDUMP, "-|"); + die "Couldn't open pipe to subprocess" unless defined($res); + exec "@prefix@/bin/smidump",'-u','-f','svg',@options + or die "Couldn't exec smidump" if $res == 0; + my @svg = ; + close (SMIDUMP); + + #serve svg + my $svglength = @svg; + if ($svglength eq 0) { + print header; + print start_html("MIB to SVG"); + print h2("Sorry, smidump output contained no data."); + print end_html; + } else { + #FIXME - or + ? + print header(-TYPE => "image/svg-xml"); + print "@svg"; + } + +} else { + #no params present + #send form + print header; + print start_html("MIB to SVG"); + print h2("Generate a SVG Diagram from MIB Modules"); + print start_multipart_form(); + + print p("select one or more MIBs: ", scrolling_list( + -NAME => "mibs", + -VALUES => [@mibnames], + -SIZE => 10, + -MULTIPLE => 1, + )); + + print p("or upload a MIB: ", filefield( + -NAME => "uploadmib" + )); + + print p("diagram width: ", textfield( + -NAME => "width", + -DEFAULT => "1100" + )); + print p("diagram height: ", textfield( + -NAME => "height", + -DEFAULT => "700" + )); + + print p(radio_group( + -NAME => "deprobs", + -VALUES => [ qw(none deprecated obsolete) ], + -LINEBREAK => 1, + -LABELS => { + none => "show only current objects", + deprecated => "show current and deprecated objects", + obsolete => "show all objects", + }, + )); + + print p(checkbox( + -NAME => "static", + -LABEL => "generate a smaller, non-interactive SVG diagram", + )); + + print p(submit("generate SVG"), reset("reset form")); + print end_form; + print end_html; +} diff --git a/tools/rea.c b/tools/rea.c new file mode 100644 index 0000000..3b9948f --- /dev/null +++ b/tools/rea.c @@ -0,0 +1,1820 @@ +/* + * rea.c -- + * + * This file holds the reverse engineering algorithm common for + * dump-cm.c and dump-svg.c. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * Copyright (c) 2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.c 7823 2008-03-01 13:53:12Z schoenw $ + */ + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" + + + +/* + * Constants used by the reverse engineering algorithm. + */ + +static char *pointer[] = { + "Index", NULL +}; + +static char *suffix[] = { + "OrZero", NULL +}; + +static char *supportObjs[] = { + "RowStatus", "StorageType", NULL +}; + +static char *baseTypes[] = { + "Integer32", "OctetString", "Unsigned32", "Integer64", + "Unsigned64", "Float32", "Float64", "Float128", + "Enumeration", "Counter32", "Counter64","Bits", + "Gauge", "Gauge32", "Integer", "TimeTicks", + "IpAddress", "Opaque", "ObjectIdentifier", + NULL +}; + + + +/* + * driver output control + */ + +/* + * variables for svg-output + * + * When you change CANVASHEIGHT, CANVASWIDTH values here, you should + * also change them in initSvg() and the cgi-script. + */ + +int CANVASHEIGHT = 700; /* height of the svg */ +int CANVASWIDTH = 1100; /* width of the svg */ +int SHOW_DEPRECATED = 0; /* false, show deprecated objects */ +int SHOW_DEPR_OBSOLETE = 0; /* false, show deprecated and + obsolete objects */ +int STATIC_OUTPUT = 0; /* false, enable interactivity */ +/* variables for cm-driver */ +int XPLAIN = 0; /* false, generates ASCII output */ +int XPLAIN_DEBUG = 0; /* false, generates additional + output in xplain-mode */ +int SUPPRESS_DEPRECATED = 1; /* true, suppresses deprecated + objects */ +/* common variables */ +int PRINT_DETAILED_ATTR = 1; /* true, prints all column + objects */ +int IGNORE_IMPORTED_NODES = 1; /* true, ignores nodes which are + imported from other MIBs*/ + +/* + * global variables + */ +Graph *graph = NULL; /* the graph */ + + + + + +/* ------ Misc. ----------------- */ + + + + + +/* + * cmpSmiNodes + * + * Compares two SmiNode and returns 1 if they are equal and 0 otherwise. + */ +int cmpSmiNodes(SmiNode *node1, SmiNode *node2) +{ + SmiModule *module1, *module2; + + module1 = smiGetNodeModule(node1); + module2 = smiGetNodeModule(node2); + + if (!node1 || !node2 || !module1 || !module2) return 0; + + return (strcmp(node1->name, node2->name) == 0 && + strcmp(module1->name, module2->name) == 0); +} + +/* + * strpfxlen + * + * Returns the number of identical characters at the beginning of s1 and s2. + */ +static int strpfxlen(const char *s1, const char *s2) +{ + int i; + + for (i = 0; s1[i] && s2[i]; i++) { + if (s1[i] != s2[i]) { + break; + } + } + + return i; +} + + + + + +/* ------ Graph primitives ------ */ + + + + + +/* + * graphInsertNode + * + * Inserts a new node into an existing graph. + * + * Result : pointer to the new node + */ +GraphNode *graphInsertNode(Graph *graph, SmiNode *smiNode) +{ + GraphNode *newNode; + GraphNode *tNode; + GraphNode *lastNode; + + newNode = xmalloc(sizeof(GraphNode)); + memset(newNode, 0, sizeof(GraphNode)); + newNode->smiNode = smiNode; + + if (graph->nodes == NULL) { + graph->nodes = newNode; + return newNode; + } + + lastNode = NULL; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + lastNode = tNode; + } + + lastNode->nextPtr = newNode; + + return newNode; +} + +/* + * graphInsertComponent + * + * Inserts a new component into an existing graph. + * + * Result : pointer to the new component + */ +GraphComponent *graphInsertComponent(Graph *graph) +{ + GraphComponent *newComponent; + GraphComponent *tComponent; + GraphComponent *lastComponent; + + newComponent = xmalloc(sizeof(GraphComponent)); + memset(newComponent, 0, sizeof(GraphComponent)); + + if (graph->components == NULL) { + graph->components = newComponent; + return newComponent; + } + + lastComponent = NULL; + for (tComponent = graph->components; tComponent; + tComponent = tComponent->nextPtr) { + lastComponent = tComponent; + } + + lastComponent->nextPtr = newComponent; + + return newComponent; +} + +/* + * graphInsertEdge + * + * Inserts a new edge into an existing list of edges. + * + * Input : graph = pointer to an edge structure + * startNode = pointer to the starting node of the edge + * endNode = pointer to the ending node of the edge + * indexkind = type of relationship between the two nodes + * + * Result : pointer to the new edge + */ +static GraphEdge *graphInsertEdge(Graph *graph, GraphNode *startNode, + GraphNode *endNode, + SmiIndexkind indexkind, + GraphEnhIndex enhancedindex) +{ + GraphEdge *newEdge; + GraphEdge *tEdge; + GraphEdge *lastEdge; + + newEdge = xmalloc(sizeof(GraphEdge)); + memset(newEdge, 0, sizeof(GraphEdge)); + newEdge->startNode = startNode; + newEdge->endNode = endNode; + newEdge->indexkind = indexkind; + newEdge->connection = GRAPH_CON_ASSOCIATION; + newEdge->enhancedindex = enhancedindex; + + switch (newEdge->indexkind) { + case SMI_INDEX_AUGMENT : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ONE; + break; + case SMI_INDEX_SPARSE : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ZERO_OR_ONE; + break; + case SMI_INDEX_EXPAND : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + case SMI_INDEX_REORDER : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ONE; + break; + case SMI_INDEX_INDEX : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + case SMI_INDEX_UNKNOWN : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + } + + if (graph->edges == NULL) { + graph->edges = newEdge; + return newEdge; + } + + lastEdge = NULL; + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + lastEdge = tEdge; + } + + lastEdge->nextPtr = newEdge; + + return newEdge; +} + +/* + * graphExit + * + * Frees all memory allocated by the graph. + */ +void graphExit(Graph *graph) +{ + GraphEdge *tEdge, *dummyEdge; + GraphNode *tNode, *dummyNode; + GraphComponent *tComponent, *dummyComponent; + + if (graph) { + + dummyNode = NULL; + tNode = graph->nodes; + while (tNode != NULL) { + dummyNode = tNode; + tNode = tNode->nextPtr; + + xfree(dummyNode); + } + + dummyEdge = NULL; + tEdge = graph->edges; + while (tEdge != NULL) { + dummyEdge = tEdge; + tEdge = tEdge->nextPtr; + + xfree(dummyEdge); + } + + dummyComponent = NULL; + tComponent = graph->components; + while (tComponent != NULL) { + dummyComponent = tComponent; + tComponent = tComponent->nextPtr; + + xfree(dummyComponent); + } + + xfree(graph); + } +} + +/* + * graphGetFirstEdgeByNode + * + * Returns the first edge adjacent to the given node (as startNode or EndNode). + */ +GraphEdge *graphGetFirstEdgeByNode(Graph *graph, GraphNode *node) +{ + GraphEdge *tEdge; + + if (!graph || !node) { + return NULL; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == node->smiNode->name || + tEdge->endNode->smiNode->name == node->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, node->smiNode) || + cmpSmiNodes(tEdge->endNode->smiNode, node->smiNode)) break; + } + + return tEdge; +} + +/* + * graphGetNextEdgeByNode + * + * Returns the next edge adjacent to the given node (as startNode or EndNode) + * after the given edge. + */ +GraphEdge *graphGetNextEdgeByNode(Graph *graph, + GraphEdge *edge, + GraphNode *node) +{ + GraphEdge *tEdge; + + if (!graph || !node) { + return NULL; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == + edge->startNode->smiNode->name && + tEdge->endNode->smiNode->name == + edge->endNode->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode,edge->startNode->smiNode) && + cmpSmiNodes(tEdge->endNode->smiNode,edge->endNode->smiNode)) + break; + } + + for (tEdge = tEdge->nextPtr; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == node->smiNode->name || + tEdge->endNode->smiNode->name == node->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, node->smiNode) || + cmpSmiNodes(tEdge->endNode->smiNode, node->smiNode)) break; + } + + return tEdge; +} + +/* + * graphCheckForRedundantEdge + * + * Finds redundant edges and returns 1 if one is found and 0 otherwise. + */ +static int graphCheckForRedundantEdge(Graph *graph, + GraphNode *startNode, + GraphNode *endNode) +{ + GraphEdge *tEdge; + + if (!graph || !startNode || !endNode) { + return 0; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == startNode->smiNode->name && + tEdge->endNode->smiNode->name == endNode->smiNode->name) {*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, startNode->smiNode) && + cmpSmiNodes(tEdge->endNode->smiNode, endNode->smiNode)) { + + return 1; + } + } + + return 0; +} + +/* + * graphGetNode + * + * Returns the graph node containing smiNode. + */ +static GraphNode *graphGetNode(Graph *graph, SmiNode *smiNode) +{ + GraphNode *tNode; + + if (!smiNode || !graph) { + return NULL; + } + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->name == smiNode->name) { + break; + } + } + + return tNode; +} + +/* + * graphShowNodes + * + * Prints the nodes of the graph. + */ +void graphShowNodes(Graph *graph) +{ + GraphNode *tNode; + + if (!graph->nodes) { + printf("No nodes!\n"); + return; + } + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) + printf(" [TABLE]"); + else printf("[SCALAR]"); + printf("%40s [%s]\n", tNode->smiNode->name, + smiGetNodeModule(tNode->smiNode)->name); + } +} + +/* + * graphShowEdges + * + * Prints the edges with their attributes in the following order : + * - start node + * - reason for the link + * - connection type in UML + * - cardinality + * - index relationship derived from the row-objects of the tables + * + */ +static void graphShowEdges(Graph *graph) +{ + GraphEdge *tEdge; + + if (!graph->edges) { + printf("No edges!\n"); + return; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (XPLAIN_DEBUG) { + switch (tEdge->enhancedindex) { + case GRAPH_ENHINDEX_UNKNOWN : + printf("[UNKNOWN] "); + break; + case GRAPH_ENHINDEX_NOTIFICATION : + break; + case GRAPH_ENHINDEX_NAMES : + printf(" [NAMES] "); + break; + case GRAPH_ENHINDEX_TYPES : + printf(" [TYPES] "); + break; + case GRAPH_ENHINDEX_INDEX : + printf(" [INDEX] "); + break; + case GRAPH_ENHINDEX_REROUTE : + printf("[REROUTE] "); + break; + case GRAPH_ENHINDEX_POINTER : + printf("[POINTER] "); + break; + } + } + + switch (tEdge->connection) { + case GRAPH_CON_AGGREGATION: + printf("AG."); + break; + case GRAPH_CON_DEPENDENCY: + printf("D. "); + break; + case GRAPH_CON_ASSOCIATION: + printf("A. "); + break; + case GRAPH_CON_UNKNOWN: + break; + } + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" (-:-) "); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" (1:1) "); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" (1:n) "); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" (0:1) "); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" (0:n) "); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf("(1:0..1) "); + break; + } + + switch (tEdge->indexkind) { + case SMI_INDEX_UNKNOWN : + printf("GENERIC "); + break; + case SMI_INDEX_INDEX : + printf(" INDEX "); + break; + case SMI_INDEX_AUGMENT : + printf("AUGMENT "); + break; + case SMI_INDEX_SPARSE : + printf(" SPARSE "); + break; + case SMI_INDEX_EXPAND : + printf(" EXPAND "); + break; + case SMI_INDEX_REORDER : + printf("REORDER "); + break; + } + printf("%29s - ",tEdge->startNode->smiNode->name); + printf("%s\n",tEdge->endNode->smiNode->name); + } +} + + + + + +/* ------ algorithm primitives ------ */ + + + +/* + * algCountIndexElements + * + * Returns the number of index elements in a given row entry. + */ + +static int algCountIndexElements(SmiNode *smiNode) +{ + int count; + SmiElement *smiElement; + + if (smiNode->nodekind != SMI_NODEKIND_ROW) { + return 0; + } + + count = 0; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + count++; + } + + return count; +} + +/* + * algInsertEdge + * + * Inserts an edge in a given graph. The edge is adjacent to snode + * and enode. + * The type of edge is given in indexkind and the enhanced index as + * an additional information in enhancedindex. + * Nodes which are not loaded yet into the node list of the graph + * are added (nodes from imported MIBs). + */ +static void algInsertEdge(SmiNode *snode, SmiNode *enode, + SmiIndexkind indexkind, + GraphEnhIndex enhancedindex) +{ + GraphNode *startNode; + GraphNode *endNode; + + if (!graph) return; + + startNode = graphGetNode(graph, snode); + endNode = graphGetNode(graph, enode); + + /* insert imported nodes into graph if needed */ + if (startNode == NULL) { + if (IGNORE_IMPORTED_NODES) return; + + startNode = graphInsertNode(graph, snode); + } + if (endNode == NULL) { + if (IGNORE_IMPORTED_NODES) return; + + endNode = graphInsertNode(graph, enode); + } + + if (graphCheckForRedundantEdge(graph, startNode, endNode) == 0 && + graphCheckForRedundantEdge(graph, endNode, startNode) == 0) { + graphInsertEdge(graph, startNode, endNode, indexkind, enhancedindex); + } +} + +/* + * algGetGroupByFatherNode + * + * Returns the group number associated with the father node of the + * given node. If there is no group the result is 0 for no + * grouping. + */ +static int algGetGroupByFatherNode(SmiNode *smiNode) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + !graphGetFirstEdgeByNode(graph, tNode)) { + if (cmpSmiNodes(smiGetParentNode(smiNode), + smiGetParentNode(tNode->smiNode))) { + return tNode->group; + } + } + } + + return 0; +} + +/* + * algGetNumberOfGroups + * + * Returns the number of groups. + */ +int algGetNumberOfGroups() +{ + GraphNode *tNode; + int maxGroup; + + maxGroup = 0; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + maxGroup = max(maxGroup, tNode->group); + } + + return maxGroup; +} + +/* + * algPrintGroup + * + * Prints the group with the number group. + */ +static void algPrintGroup(int group) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + printf("%2d - %35s\n", group, tNode->smiNode->name); + } + } +} + +/* + * algGetTypeDescription + * + * Returns the description of the data type used in smiNode. + */ +char *algGetTypeDescription(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + return smiType->description; +} + +/* + * algGetTypeName + * + * Returns the name of the data type used in smiNode. + */ +char *algGetTypeName(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + return smiType->name; +} + +/* + * algGetTypeModule + * + * Returns the module which defines the data type used in smiNode. + */ +SmiModule *algGetTypeModule(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + SmiModule *smiModule; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + smiModule = smiGetTypeModule(smiType); + + return smiModule; +} + +/* + * algCountElementsFromOtherTables + * + * Returns the number of index objects derived from other tables than + * the given one. + */ +static int algCountElementsFromOtherTables(SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *tNode; + int elems = 0; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + if (cmpSmiNodes(smiGetParentNode(smiGetParentNode(tNode)), + smiGetParentNode(smiNode)) != 1) { + elems++; + } + } + + return elems; +} + +/* + * algGetNumberOfRows + * + * Returns the number of rows = + * number of elements in smiNode - number of rows + * + RowStatus-Objects + StorageType-Objects + * + * If the number is > 0 it is only a supporting table (like entLPMappingTable) + * and if the number is < 0 it is a "full" table (like ifTable). + * + * Subroutine for algCheckForDependency. + */ +static int algGetNumberOfRows(SmiNode *smiNode) +{ + SmiNode *tSmiNode; + SmiNode *table; + int i, elemCount; + + elemCount = 0; + table = smiNode; + tSmiNode = smiGetFirstChildNode(table); + + elemCount = algCountIndexElements(tSmiNode) - + algCountElementsFromOtherTables(tSmiNode); + + for (tSmiNode = smiGetNextNode(tSmiNode, SMI_NODEKIND_COLUMN); + tSmiNode; + tSmiNode = smiGetNextNode(tSmiNode, SMI_NODEKIND_COLUMN)) { + + if (cmpSmiNodes(table, smiGetParentNode(smiGetParentNode(tSmiNode))) + != 1) { + break; + } + + for (i = 0; supportObjs[i]; i++) { + char *typeName = algGetTypeName(tSmiNode); + if (typeName && (strcasecmp(typeName, supportObjs[i]) == 0)) { + break; + } + } + + if (!supportObjs[i]) elemCount--; + } + + return elemCount; +} + +/* + * isBaseType + * + * returns 1 if smiElement is a basetype used in SMIv2/SMIng. Otherwise + * the result is 0. + */ +int isBaseType(SmiNode *node) +{ + int i; + + for (i = 0; baseTypes[i]; i++) { + if (strcasecmp(algGetTypeName(node), baseTypes[i]) == 0) { + return 1; + } + } + + return 0; +} + +/* + * algFindEqualType + * + * Looks in all tables indices for an equal type to the type used in typeNode. + * It returns the first table found which is different to startTable. + * + * Subroutine for algCheckForDependency. + */ +static SmiNode *algFindEqualType(SmiNode *startTable, SmiNode *typeNode) +{ + SmiElement *smiElement; + SmiNode *tSmiNode; + char *typeName; + GraphNode *tNode; + + typeName = algGetTypeName(typeNode); + /* if (isBaseType(typeNode)) return NULL; */ + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + tSmiNode = tNode->smiNode; + if (cmpSmiNodes(tSmiNode, startTable) == 1) break; + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tSmiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + /* found type matching ? */ + if (strcmp(typeName, + algGetTypeName(smiGetElementNode + (smiElement))) == 0) { + return tSmiNode; + } + } + + } + } + + return NULL; +} + +/* + * 0 = totaly equal (order and objects) + * 1 = equal objects but different order + * 2 = inequal + * 3 = error; + */ + static int equalElements(SmiNode *firstRow, SmiNode *secondRow) +{ + int i,j,number1, number2; + SmiElement *elemFirst, *elemSecond; + + if (!firstRow->nodekind == SMI_NODEKIND_ROW || + !secondRow->nodekind == SMI_NODEKIND_ROW) { + /* printf("no row entries\n"); */ + return 3; + } + + if (cmpSmiNodes(firstRow, secondRow) == 1) { + /* printf("same objects\n"); */ + return 3; + } + + number1 = algCountIndexElements(firstRow); + number2 = algCountIndexElements(secondRow); + + if (number1 != number2) { + /* printf("Different number of elements\n"); */ + return 2; + } + + i = 0; + for (elemFirst = smiGetFirstElement(firstRow); + elemFirst; + elemFirst = smiGetNextElement(elemFirst)) { + i++; + + j = 0; + for (elemSecond = smiGetFirstElement(secondRow); + elemSecond; + elemSecond = smiGetNextElement(elemSecond)) { + j++; + if (i == j && cmpSmiNodes(smiGetElementNode(elemFirst), + smiGetElementNode(elemSecond)) == 1) { + break; + } + } + + /* maybe same elements but in different order */ + if (!elemSecond) break; + } + if (!elemFirst) { + /* printf("totaly equal\n"); */ + return 0; + } + + for (elemFirst = smiGetFirstElement(firstRow); + elemFirst; + elemFirst = smiGetNextElement(elemFirst)) { + + for (elemSecond = smiGetFirstElement(secondRow); + elemSecond; + elemSecond = smiGetNextElement(elemSecond)) { + + if (cmpSmiNodes(smiGetElementNode(elemFirst), + smiGetElementNode(elemSecond)) == 1) { + break; + } + } + + /* maybe same elements but in different order */ + if (!elemSecond) break; + } + + if (!elemFirst) { + /* printf("Equal\n"); */ + return 1; + } + else { + /* printf("inequal"); */ + return 2; + } +} + +/* + * algIsIndexElement + * + * Tests whether a given node is part of the index of a particular + * table. Returns 1 if the node is an index node and 0 otherwise. + */ + +int algIsIndexElement(SmiNode *table, SmiNode *node) +{ + SmiElement *smiElement; + SmiNode *row; + + if (node->nodekind != SMI_NODEKIND_TABLE) { + return 0; + } + + row = smiGetFirstChildNode(table); + if (!row || row->nodekind != SMI_NODEKIND_ROW) { + return 0; + } + + for (smiElement = smiGetFirstElement(row); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + SmiNode *indexNode = smiGetElementNode(smiElement); + if (cmpSmiNodes(indexNode, node)) { + return 1; + } + } + + return 0; +} + +/* -------------- main functions ------------------------------------------- */ + + + + +/* + * algCheckForExpandRel + * + * Checks the given table for an expand relationship to an other table. + * + * 1. gets the expanded table (father node of smiNode) + * 2. gets the base table by walking through the elements of the smiNode + * starting at the end. The first table found which is different from the + * expanded table is the first candidate for the base table. + * 3. comparing the number of elements in both tables + * if the number in the expanded table is greater -> 5. + * if the number in the base table is greater -> 4. + * 4. getting a second base table candidate : + * It is possible that a table expands an other table which is expanded + * by this. + * Therefore it is hard to track the base table. + * - scanning all tables which are different from the expanded table + * - the base table must have : + * - least elements + * - the same elementes must occur as in the expanded table + * 5. the elements in both tables are checked for equality + */ +static void algCheckForExpandRel(SmiNode *smiNode) +{ + SmiNode *tNode; + SmiNode *baseTable; + SmiNode *expTable; + SmiElement *smiElement; + SmiElement *findElement; + unsigned int refcounter; + unsigned int basecounter; + + if (!smiNode) return; + + expTable = smiGetParentNode(smiNode); + + /* count the elements in the given table <- father of smiNode */ + refcounter = algCountIndexElements(smiNode); + + /* find the base table <- via the last element which does not refer to + the expTable */ + baseTable = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + tNode = smiGetParentNode(tNode); + tNode = smiGetParentNode(tNode); + + if (cmpSmiNodes(tNode, expTable) == 1) break; + + baseTable = tNode; + } + + if (!baseTable) return; + + /* count the elements in the basetable */ + basecounter = algCountIndexElements(smiGetFirstChildNode(baseTable)); + + /* are baseTable and expTable identical ? */ + if (basecounter >= refcounter) { + + /* searching for new base table candidate in order to handle multiple + indices */ + for (baseTable = smiGetNextNode(baseTable, SMI_NODEKIND_TABLE); + baseTable; + baseTable = smiGetNextNode(baseTable, SMI_NODEKIND_TABLE)) { + + basecounter = algCountIndexElements(smiGetFirstChildNode(baseTable)); + + if (basecounter < refcounter) { + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(expTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + + /*if (smiGetParentNode(smiGetParentNode(tNode))->name == + expTable->name) break; */ + if (cmpSmiNodes(smiGetParentNode(smiGetParentNode(tNode)), + expTable) == 1) break; + + for (findElement = smiGetFirstElement( + smiGetFirstChildNode(baseTable)); + findElement; + findElement = smiGetNextElement(findElement)) { + if (cmpSmiNodes(tNode, smiGetElementNode(findElement)) + == 1) break; + } + + if (!findElement) { + return; + } + } + break; + } + } + + if (!baseTable) { + return; + } + } + + for (smiElement = smiGetFirstElement(smiGetFirstChildNode(baseTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + + for (findElement = smiGetFirstElement(smiGetFirstChildNode(expTable)); + findElement; + findElement = smiGetNextElement(findElement)) { + if (cmpSmiNodes(tNode, smiGetElementNode(findElement)) == 1) + break; + } + + if (!findElement) { + return; + } + } + + algInsertEdge(baseTable, expTable, SMI_INDEX_EXPAND, + GRAPH_ENHINDEX_INDEX); +} + +/* + * algCheckForSparseRel + * + * Checks the given table for a sparse relationship to an other table. + * + * Criterias for a sparse relationship : + * - same number of index elements in both tables + * - the same order of this elements + * 1. Getting the basetable via the last element in the index of smiNode. + * 2. comparing the number of elements + */ +static void algCheckForSparseRel(SmiNode *smiNode) +{ + SmiNode *tNode = NULL; + SmiNode *table; + SmiElement *smiElement; + unsigned int basecounter; + + if (!smiNode) return; + + table = smiGetParentNode(smiNode); + + basecounter = algCountIndexElements(smiNode); + + /* getting the basetable via the father node of the last element + to handle multiple instanceing */ + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + } + + if (! tNode) { + return; + } + + tNode = smiGetParentNode(tNode); + if (equalElements(smiNode, tNode) == 0) { + algInsertEdge(smiGetParentNode(tNode), smiGetParentNode(smiNode), + SMI_INDEX_SPARSE, GRAPH_ENHINDEX_INDEX); + } +} + +/* + * algCheckForReOrderRel + * + * Checks the given table for a reorder relationship to an other table. + * + * Criterias for reoder relationships : + * - same number of elements + * - same elements must occur in a different order + */ +static void algCheckForReorderRel(SmiNode *smiNode) +{ + SmiNode *tNode; + GraphNode *graphNode; + + if (!smiNode) { + return; + } + + for (graphNode = graph->nodes; + graphNode; + graphNode = graphNode->nextPtr) { + tNode = graphNode->smiNode; + if (tNode->nodekind == SMI_NODEKIND_TABLE) { + if (equalElements(smiNode, smiGetFirstChildNode(tNode)) == 1) { + algInsertEdge(smiGetParentNode(smiNode), tNode, + SMI_INDEX_REORDER, GRAPH_ENHINDEX_INDEX); + break; + } + } + } +} + +/* + * algGetIndexkind + * + * Gets the indexkind of the given table. The row object of the table is + * passed to this function. + * Therefore three subfunctions are called to get the indexkind. + * - algChechForExpandRel + * - algCheckForSparseRel + * - algCheckForReOrderRel + * Look there for further information. + */ +static void algGetIndexkind(SmiNode *row) +{ + algCheckForExpandRel(row); + algCheckForSparseRel(row); + algCheckForReorderRel(row); +} + +/* + * algLinkTables + * + * Links the tables of the given module. + * + * 1. Getting the tables and the scalars from the given module. + * 2. Linking the tables : + * - AUGMENT no work to do just adding the corresponding edge + * - for other relationships the subfunction algGetIndexkind is called + * look there for further information + */ +void algLinkTables() +{ + GraphNode *tGraphNode; + SmiNode *node; + SmiNode *tSmiNode; + + /* linking the tables */ + for (tGraphNode = graph->nodes; + tGraphNode; + tGraphNode = tGraphNode->nextPtr) { + node = tGraphNode->smiNode; + + if (node->nodekind == SMI_NODEKIND_TABLE) { + node = smiGetFirstChildNode(node); + + if (node->nodekind == SMI_NODEKIND_ROW) { + + /* get the relationship between the tables and insert + the edges */ + if (node->indexkind == SMI_INDEX_INDEX) { + algGetIndexkind(node); + } else { + tSmiNode = node; + node = smiGetRelatedNode(node); + node = smiGetParentNode(node); + algInsertEdge(node, + smiGetParentNode(tSmiNode), + tSmiNode->indexkind, + GRAPH_ENHINDEX_INDEX); + } + } + } + } + + if (XPLAIN) { + printf("--- Second Phase - linking the tables\n\n"); + graphShowEdges(graph); + } +} + +/* + * algCheckLinksByName + * + * Reordering the connections by looking at the names. + * Related objects are linked (if their names are related). + * Every expand relationship is examined. Therefore number of + * identical characters at the beginning of the both table names is + * counted. + * Then every sparse relationship (only the ending node) is checked if + * there is better connection with more identical characters at the beginning. + * The starting node must be same as in the expand relationship to make sure + * that there are no unrelated tables are linked. + * Only legal overlappings lead to a new edge. A illegal overlap is : + * - when the next character in both strings is a lower case character + * because if something like this is detected the two strings are + * corresponding in the middle of their names and not at defined points + * like suffix or prefix (-> the next character must be upper case or NULL) + */ +void algCheckLinksByName() +{ + GraphEdge *tEdge, *tEdge2, *newEdge; + char *start, *end, *end2; + int overlap, longestOverlap, i; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->indexkind == SMI_INDEX_EXPAND) { + + start = tEdge->startNode->smiNode->name; + end = tEdge->endNode->smiNode->name; + + overlap = strpfxlen(start,end); + + /* + * looking for better connection with longer overlap + * maybe better to traverse the edges with graphGetNextEdgeByNode + * using tEdge->startNode + */ + newEdge = NULL; + longestOverlap = overlap; + for (tEdge2 = graphGetFirstEdgeByNode(graph,tEdge->startNode); + tEdge2; + tEdge2 = graphGetNextEdgeByNode(graph, tEdge2, + tEdge->startNode)) { + + /* + * must be a sparse relationship to get a correct new edge + */ + if (tEdge2->indexkind == SMI_INDEX_SPARSE) { + end2 = tEdge2->endNode->smiNode->name; + + /* + * new overlap longer and different tables ? + */ + i = strpfxlen(end,end2); + if (overlap < i && + !cmpSmiNodes(tEdge->endNode->smiNode, + tEdge2->endNode->smiNode)) { + /* + * legal overlap ? + */ + if (islower((int)end[i]) && islower((int)end2[i])) { + break; + } + + longestOverlap=i; + newEdge = tEdge2; + } + } + } + + /* better connection found -> changing the edge */ + if (newEdge) { + tEdge->startNode = newEdge->endNode; + } + } + } + + if (XPLAIN) { + printf("\n--- Third Phase - reordering the connections\n\n"); + graphShowEdges(graph); + } +} + +/* + * algLinkObjectsByNames + * + * Links Scalars to Tables using the prefix + * Links Tables to Tables using the prefix + */ +static void algLinkObjectsByNames() +{ + GraphNode *tNode, *tNode2; + int overlap,minoverlap,new; + + /* getting the minimum overlap for all nodes */ + minoverlap = 10000; + tNode2 = graph->nodes; + if (tNode2) { + for (tNode = tNode2->nextPtr; tNode; tNode = tNode->nextPtr) { + minoverlap = min(minoverlap, strpfxlen(tNode->smiNode->name, + tNode2->smiNode->name)); + } + } + + /* + * prefix overlap of one is too short to create any usefull edges + */ + if (minoverlap == 1) return; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode)) { + overlap = minoverlap; + + for (tNode2 = graph->nodes; tNode2; tNode2 = tNode2->nextPtr) { + if (cmpSmiNodes(tNode->smiNode, tNode2->smiNode)) continue; + + new = strpfxlen(tNode->smiNode->name, tNode2->smiNode->name); + + if (new >= overlap) { + + /* + * no scalar - scalar edges + */ + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + continue; + } + + /* + * is it a legal prefix + * (if the next char is NULL || uppercase) + */ + if (tNode->smiNode->name[new] && + tNode2->smiNode->name[new]) { + if (!isupper((int)tNode->smiNode->name[new]) || + !isupper((int)tNode2->smiNode->name[new])) continue; + } + + overlap = new; + } + } + + if (overlap == minoverlap) continue; + + new = 0; + for (tNode2 = graph->nodes; tNode2; tNode2 = tNode2->nextPtr) { + if (cmpSmiNodes(tNode->smiNode, tNode2->smiNode)) continue; + + new = strpfxlen(tNode->smiNode->name, tNode2->smiNode->name); + + if (new == overlap && new > minoverlap) { + + /* + * a scalar should only be adjacent to one node + */ + if (tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR && + graphGetFirstEdgeByNode(graph,tNode2)) continue; + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + graphGetFirstEdgeByNode(graph,tNode)) continue; + + /* + * adding only table -> scalar edges + */ + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + continue; + } + + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + algInsertEdge(tNode2->smiNode, tNode->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_NAMES); + } else { + algInsertEdge(tNode->smiNode, tNode2->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_NAMES); + } + } + } + } + } +} + + +/* + * algGroupScalars + * + * Grouping the scalars using a common fathernode. + */ +static void algGroupScalars() +{ + GraphNode *tNode; + int actGroup, fGroup; + + actGroup = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode) && + tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + fGroup = algGetGroupByFatherNode(tNode->smiNode); + if (fGroup == 0) { + tNode->group = ++actGroup; + } + else { + tNode->group = fGroup; + } + } + } + + if (XPLAIN) { + printf("Scalar Groups : \n"); + + if (algGetNumberOfGroups() != 0) { + for (actGroup = 1; + actGroup <= algGetNumberOfGroups(); + actGroup++) { + algPrintGroup(actGroup); + printf("\n"); + } + } else printf("No groups!\n"); + printf("\n"); + } +} + +/* + * algLinkLonelyTables + * + * Links isolated tables with other tables via the types of the + * index objects. + * If no type is found the types are checked via the suffix if they differ + * only in the range (-OrZero). Therefore the suffix-vector is checked. + * Basetypes used in SMIv1/v2/ng are sorted out. + */ +static void algLinkLonelyTables() +{ + SmiElement *smiElement, *smiElement2 = NULL; + GraphNode *tNode, *tNode2; + int i; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode) && + tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + for (tNode2 = graph->nodes; + tNode2; + tNode2 = tNode2->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE && + tNode != tNode2) { + + for (smiElement2 = smiGetFirstElement( + smiGetFirstChildNode(tNode2->smiNode)); + smiElement2; + smiElement2 = smiGetNextElement(smiElement2)) { + + if (strcasecmp(algGetTypeName( + smiGetElementNode(smiElement2)), + algGetTypeName( + smiGetElementNode(smiElement))) + == 0) { + + if (isBaseType(smiGetElementNode(smiElement)) + == 1){ + continue; + } + + graphInsertEdge(graph,tNode2, tNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_TYPES); + break; + } + else { + for (i = 0; suffix[i]; i++) { + if (strstr( + algGetTypeName( + smiGetElementNode(smiElement)), + suffix[i])) { + graphInsertEdge(graph,tNode2, + tNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_TYPES); + break; + } + } + + if (suffix[i]) break; + } + } + } + if (smiElement2) break; + } + if (tNode2) break; + } + + } + } +} + +/* + * algConnectLonelyNodes + * + * Connect the isolated nodes (scalars and tables) + * + * 1. Trying to link tables via the type of the index objects + * 2. Trying to link scalars to tables using the names + * 3. Trying to group scalars which have not been adjacent to any edge. + */ +void algConnectLonelyNodes() +{ + if (XPLAIN) { + printf("\n--- Fourth Phase - connecting isolated nodes\n\n"); + } + + algLinkLonelyTables(); + + algLinkObjectsByNames(); + + algGroupScalars(); + + if (XPLAIN) { + graphShowEdges(graph); + } +} + +/* + * Subfunction of algCheckForDependencies + * + * change UML-edges to dependecy if possible + */ +static void createDependencies() +{ + GraphEdge *tEdge; + int elemCount; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->indexkind == SMI_INDEX_UNKNOWN) { + + if (tEdge->startNode->smiNode->nodekind == SMI_NODEKIND_TABLE && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + elemCount = algGetNumberOfRows(tEdge->startNode->smiNode); + if (elemCount >= 0) tEdge->connection = GRAPH_CON_DEPENDENCY; + + elemCount = algGetNumberOfRows(tEdge->endNode->smiNode); + if (elemCount >= 0) tEdge->connection = GRAPH_CON_DEPENDENCY; + } + } + } +} + +/* + * returns 1 if a new rerouting edge creates a loop and 0 otherwise + */ +static int isloop(GraphEdge *tEdge, SmiNode *depTable) +{ + GraphEdge *loopEdge; + + for (loopEdge = graphGetFirstEdgeByNode(graph, tEdge->endNode); + loopEdge; + loopEdge = graphGetNextEdgeByNode(graph,loopEdge,tEdge->endNode)) { + + if ((cmpSmiNodes(loopEdge->startNode->smiNode, depTable)) || + (cmpSmiNodes(loopEdge->endNode->smiNode, depTable) && + (loopEdge != tEdge))) { + return 1; + } + } + + return 0; +} + +/* + * subfunction of algCheckForDependency + */ +static void rerouteDependencyEdge(GraphEdge *tEdge) +{ + SmiNode *startTable, *endTable, *depTable; + SmiElement *smiElement; + + startTable = tEdge->startNode->smiNode; + endTable = tEdge->endNode->smiNode; + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(endTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + /* look only at expanded indices (only present in endTable) */ + if (cmpSmiNodes(endTable, smiGetParentNode( + smiGetParentNode(smiGetElementNode(smiElement)))) == 1) { + depTable = algFindEqualType(startTable, + smiGetElementNode(smiElement)); + + /* depTable different to endTable? */ + if (depTable && !cmpSmiNodes(depTable, endTable)) { + + /* prevent loops */ + if (isloop(tEdge, depTable)) continue; + + algInsertEdge(depTable, + startTable, SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_REROUTE); + break; + } + } + } +} + +/* + * algCheckForDependency + * + * Tries to change connection types from association to dependency by + * looking at the types. + * + * 1. Supporting tables are revealed. Supporting tables consist only + * index objects and RowStatus-Objects and/or Storage-Type/Objects. + * 2. If a supporting table is found the connection type is changed to + * dependency. + * 3. Now the types of the index objects are checked (only in the end-table). + * If the same type is found in an other table the start-table is going to + * be connected with it (inserting a new edge). + * The end-table is still connected to the start-table. + */ +void algCheckForDependency() +{ + GraphEdge *tEdge; + + createDependencies(); + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->connection == GRAPH_CON_DEPENDENCY) { + + rerouteDependencyEdge(tEdge); + } + } + + if (XPLAIN) { + printf("\n--- Fifth Phase - checking for dependency relationships\n\n"); + graphShowEdges(graph); + } +} + +/* + * + */ +static SmiNode *algFindTable(SmiNode *node) +{ + GraphNode *tNode; + SmiNode *smiNode; + SmiElement *smiElement; + char *toFind; + + if (!node) return NULL; + + toFind = xstrdup(node->name + + strpfxlen(node->name, smiGetParentNode(node)->name)); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + if (cmpSmiNodes(node, tNode->smiNode)) continue; + smiNode = smiGetFirstChildNode(tNode->smiNode); + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (strstr(smiNode->name, toFind)) { + xfree(toFind); + return smiGetParentNode(smiGetParentNode(smiNode)); + } + } + } + } + + xfree(toFind); + + return NULL; +} + +/* + * Creates edges based on column-objects pointing to other tables. + * Column-objects with a substring "Index" are examined. + */ +void algCheckForPointerRels() +{ + GraphNode *tNode; + SmiModule *module; + SmiNode *smiNode = NULL; + SmiNode *ppNode, *table; + int i; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + module = smiGetNodeModule(tNode->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(tNode->smiNode, smiNode) && + cmpSmiNodes(tNode->smiNode, ppNode)) { + + for (i = 0; pointer[i]; i++) { + if (strstr(smiNode->name, pointer[i])) { + /* printf("%s \n",smiNode->name); */ + table = algFindTable(smiNode); + if (table) { + algInsertEdge(table, tNode->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_POINTER); + } + } + } + } + } + } + } + + if (XPLAIN) { + printf("\n--- Sixth Phase - checking for pointer relationships\n\n"); + graphShowEdges(graph); + } +} diff --git a/tools/rea.h b/tools/rea.h new file mode 100644 index 0000000..e215711 --- /dev/null +++ b/tools/rea.h @@ -0,0 +1,226 @@ +/* + * rea.h -- + * + * Common header-file for dump-cm.c and dump-svg.c. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * Copyright (c) 2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.h 7382 2007-10-19 23:40:24Z schoenw $ + */ + +#ifndef _REA_H +#define _REA_H + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +#define ABS(a) ((float)((a > 0.0) ? (a) : (-(a)))) + + + +typedef enum GraphCardinality { + GRAPH_CARD_UNKNOWN = 0, + GRAPH_CARD_ONE_TO_ONE = 1, + GRAPH_CARD_ONE_TO_MANY = 2, + GRAPH_CARD_ZERO_TO_ONE = 3, + GRAPH_CARD_ZERO_TO_MANY = 4, + GRAPH_CARD_ONE_TO_ZERO_OR_ONE = 5 +} GraphCardinality; + +typedef enum GraphConnection { + GRAPH_CON_UNKNOWN = 0, + GRAPH_CON_AGGREGATION = 1, + GRAPH_CON_DEPENDENCY = 2, + GRAPH_CON_ASSOCIATION = 3 +} GraphConnection; + +typedef enum GraphEnhIndex { + GRAPH_ENHINDEX_UNKNOWN = 0, + GRAPH_ENHINDEX_NOTIFICATION = 1, + GRAPH_ENHINDEX_TYPES = 2, + GRAPH_ENHINDEX_NAMES = 3, + GRAPH_ENHINDEX_INDEX = 4, + GRAPH_ENHINDEX_REROUTE = 5, + GRAPH_ENHINDEX_POINTER = 6 +} GraphEnhIndex; + +/* + * Definition used by the dia output driver. + */ + +#define DIA_PRINT_FLAG 0x01 + +typedef struct DiaNode { + int flags; /* flags for the dia xml output driver */ + float x,y; /* coordinates (left upper corner) */ + float xDisp,yDisp; /* displacement vector for springembedder */ + float w,h; /* width and height of the dia node */ + int relatedScalars; /* has related scalars -> print them */ + int indexObjects; /* has index objects -> print them */ +} DiaNode; + +typedef struct DiaEdge { + int flags; /* flags for the dia xml output driver */ + float startX, startY; /* Intersection of edge and startNode */ + float endX, endY; /* Intersection of edge and endNode */ +} DiaEdge; + +/* + * Generic structure for moduleInformation string-lists. + */ + +typedef struct StringListElem { + struct StringListElem *nextPtr; + SmiStatus status; + char *miElem; +} StringListElem; + +/* + * Generic structures for the internal graph representation. + */ + +typedef struct GraphComponent { + struct GraphComponent *nextPtr; + struct GraphNode *firstComponentNode; + float xMin; + float xMax; + float yMin; + float yMax; + float xOffset; + float yOffset; +} GraphComponent; + +typedef struct GraphNode { + struct GraphNode *nextPtr; + SmiNode *smiNode; + SmiModule *smiModule; + int group; /* group number of this graph node */ + int use; /* use node in the layout-algorithm */ + int degree; /* quantity of adjacent nodes */ + GraphComponent *component; /* component the node belongs to */ + struct GraphNode *nextComponentNode; + DiaNode dia; +} GraphNode; + +typedef struct GraphEdge { + struct GraphEdge *nextPtr; + GraphNode *startNode; + GraphNode *endNode; + SmiIndexkind indexkind; + GraphConnection connection; + GraphCardinality cardinality; + GraphEnhIndex enhancedindex; + int use; /* use edge in the layout-algorithm */ + DiaEdge dia; +} GraphEdge; + +typedef struct Graph { + GraphNode *nodes; + GraphEdge *edges; + GraphComponent *components; +} Graph; + + + +/* + * driver output control + */ +extern int CANVASHEIGHT; +extern int CANVASWIDTH; +extern int SHOW_DEPRECATED; +extern int SHOW_DEPR_OBSOLETE; +extern int STATIC_OUTPUT; +extern int XPLAIN; +extern int XPLAIN_DEBUG; +extern int SUPPRESS_DEPRECATED; +extern int PRINT_DETAILED_ATTR; +extern int IGNORE_IMPORTED_NODES; + + +/* + * global variables + */ +extern Graph *graph; + +/* + * help functions + */ +#ifndef max +#define max(a, b) ((a < b) ? b : a) +#endif +#ifndef min +#define min(a, b) ((a < b) ? a : b) +#endif + + + +/* ------ Misc. ----------------- */ + +extern int cmpSmiNodes(SmiNode *node1, SmiNode *node2); + + + +/* ------ Graph primitives ------ */ + +extern GraphNode *graphInsertNode(Graph *graph, SmiNode *smiNode); + +extern GraphComponent *graphInsertComponent(Graph *graph); + +extern void graphExit(Graph *graph); + +extern GraphEdge *graphGetFirstEdgeByNode(Graph *graph, GraphNode *node); + +extern GraphEdge *graphGetNextEdgeByNode(Graph *graph, + GraphEdge *edge, + GraphNode *node); + +extern void graphShowNodes(Graph *graph); + + + +/* ------ algorithm primitives ------ */ + +extern int algGetNumberOfGroups(); + +extern char *algGetTypeDescription(SmiNode *smiNode); + +extern char *algGetTypeName(SmiNode *smiNode); + +extern SmiModule *algGetTypeModule(SmiNode *smiNode); + +extern int isBaseType(SmiNode *node); + +extern int algIsIndexElement(SmiNode *table, SmiNode *node); + + + +/* -------------- main functions ------------------------------------------- */ + +extern void algLinkTables(); + +extern void algCheckLinksByName(); + +extern void algConnectLonelyNodes(); + +extern void algCheckForDependency(); + +extern void algCheckForPointerRels(); + +#endif + diff --git a/tools/shhopt.c b/tools/shhopt.c new file mode 100644 index 0000000..ea139ec --- /dev/null +++ b/tools/shhopt.c @@ -0,0 +1,432 @@ +/* $Id: shhopt.c 1418 2002-07-22 17:06:19Z schoenw $ */ +/*------------------------------------------------------------------------ + | FILE shhopt.c + | + | DESCRIPTION Functions for parsing command line arguments. Values + | of miscellaneous types may be stored in variables, + | or passed to functions as specified. + | + | REQUIREMENTS Some systems lack the ANSI C -function strtoul. If your + | system is one of those, you'll ned to write one yourself, + | or get the GNU liberty-library (from prep.ai.mit.edu). + | + | WRITTEN BY Sverre H. Huseby + +----------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "shhopt.h" + +/*-----------------------------------------------------------------------+ +| PRIVATE DATA | ++-----------------------------------------------------------------------*/ + +static void optFatalFunc(const char *, ...); +static void (*optFatal)(const char *format, ...) = optFatalFunc; + +/*-----------------------------------------------------------------------+ +| PRIVATE FUNCTIONS | ++-----------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------ + | NAME optFatalFunc + | + | FUNCTION Show given message and abort the program. + | + | INPUT format, ... + | Arguments used as with printf(). + | + | RETURNS Never returns. The program is aborted. + */ +void +optFatalFunc(const char *format, ...) +{ + va_list ap; + + fflush(stdout); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + exit(99); +} + +/*------------------------------------------------------------------------ + | NAME optStructCount + | + | FUNCTION Get number of options in a optStruct. + | + | INPUT opt array of possible options. + | + | RETURNS Number of options in the given array. + | + | DESCRIPTION Count elements in an optStruct-array. The strcture must + | be ended using an element of type OPT_END. + */ +static int +optStructCount(optStruct opt[]) +{ + int ret = 0; + + while (opt[ret].type != OPT_END) + ++ret; + return ret; +} + +/*------------------------------------------------------------------------ + | NAME optMatch + | + | FUNCTION Find a matching option. + | + | INPUT opt array of possible options. + | s string to match, without `-' or `--'. + | lng match long option, otherwise short. + | + | RETURNS Index to the option if found, -1 if not found. + | + | DESCRIPTION Short options are matched from the first character in + | the given string. + */ +static int +optMatch(optStruct opt[], const char *s, int lng) +{ + int nopt, q; + const char *p; + size_t matchlen = 0; + + nopt = optStructCount(opt); + if (lng) { + if ((p = strchr(s, '=')) != NULL) + matchlen = p - s; + else + matchlen = strlen(s); + } + for (q = 0; q < nopt; q++) { + if (lng) { + if (!opt[q].longName) + continue; + if (strncmp(s, opt[q].longName, matchlen) == 0) + return q; + } else { + if (!opt[q].shortName) + continue; + if (*s == opt[q].shortName) + return q; + } + } + return -1; +} + +/*------------------------------------------------------------------------ + | NAME optString + | + | FUNCTION Return a (static) string with the option name. + | + | INPUT opt the option to stringify. + | lng is it a long option? + | + | RETURNS Pointer to static string. + */ +static char * +optString(optStruct *opt, int lng) +{ + static char ret[31]; + + if (lng) { + strcpy(ret, "--"); + strncpy(ret + 2, opt->longName, 28); + } else { + ret[0] = '-'; + ret[1] = opt->shortName; + ret[2] = '\0'; + } + return ret; +} + +/*------------------------------------------------------------------------ + | NAME optNeedsArgument + | + | FUNCTION Check if an option requires an argument. + | + | INPUT opt the option to check. + | + | RETURNS Boolean value. + */ +static int +optNeedsArgument(optStruct *opt) +{ + return opt->type == OPT_STRING + || opt->type == OPT_INT + || opt->type == OPT_UINT + || opt->type == OPT_LONG + || opt->type == OPT_ULONG; +} + +/*------------------------------------------------------------------------ + | NAME argvRemove + | + | FUNCTION Remove an entry from an argv-array. + | + | INPUT argc pointer to number of options. + | argv array of option-/argument-strings. + | i index of option to remove. + | + | OUTPUT argc new argument count. + | argv array with given argument removed. + */ +static void +argvRemove(int *argc, char *argv[], int i) +{ + if (i >= *argc) + return; + while (i++ < *argc) + argv[i - 1] = argv[i]; + --*argc; +} + +/*------------------------------------------------------------------------ + | NAME optExecute + | + | FUNCTION Perform the action of an option. + | + | INPUT opt array of possible options. + | arg argument to option, if it applies. + | lng was the option given as a long option? + | + | RETURNS Nothing. Aborts in case of error. + */ +static void +optExecute(optStruct *opt, char *arg, int lng) +{ + switch (opt->type) { + case OPT_FLAG: + if (opt->flags & OPT_CALLFUNC) + ((void (*)(void)) opt->arg)(); + else + *((int *) opt->arg) = 1; + break; + + case OPT_STRING: + if (opt->flags & OPT_CALLFUNC) + ((void (*)(char *)) opt->arg)(arg); + else + *((char **) opt->arg) = arg; + break; + + case OPT_INT: + case OPT_LONG: { + long tmp; + char *e; + + tmp = strtol(arg, &e, 10); + if (*e) + optFatal("invalid number `%s'\n", arg); + if (errno == ERANGE + || (opt->type == OPT_INT && (tmp > INT_MAX || tmp < INT_MIN))) + optFatal("number `%s' to `%s' out of range\n", + arg, optString(opt, lng)); + if (opt->type == OPT_INT) { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(int)) opt->arg)((int) tmp); + else + *((int *) opt->arg) = (int) tmp; + } else /* OPT_LONG */ { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(long)) opt->arg)(tmp); + else + *((long *) opt->arg) = tmp; + } + break; + } + + case OPT_UINT: + case OPT_ULONG: { + unsigned long tmp; + char *e; + + tmp = strtoul(arg, &e, 10); + if (*e) + optFatal("invalid number `%s'\n", arg); + if (errno == ERANGE + || (opt->type == OPT_UINT && tmp > UINT_MAX)) + optFatal("number `%s' to `%s' out of range\n", + arg, optString(opt, lng)); + if (opt->type == OPT_UINT) { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(unsigned)) opt->arg)((unsigned) tmp); + else + *((unsigned *) opt->arg) = (unsigned) tmp; + } else /* OPT_ULONG */ { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(unsigned long)) opt->arg)(tmp); + else + *((unsigned long *) opt->arg) = tmp; + } + break; + } + + default: + break; + } +} + +/*-----------------------------------------------------------------------+ +| PUBLIC FUNCTIONS | ++-----------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------ + | NAME optSetFatalFunc + | + | FUNCTION Set function used to display error message and exit. + | + | SYNOPSIS #include "shhopt.h" + | void optSetFatalFunc(void (*f)(const char *, ...)); + | + | INPUT f function accepting printf()'like parameters, + | that _must_ abort the program. + */ +void +optSetFatalFunc(void (*f)(const char *, ...)) +{ + optFatal = f; +} + +/*------------------------------------------------------------------------ + | NAME optParseOptions + | + | FUNCTION Parse commandline options. + | + | SYNOPSIS #include "shhopt.h" + | void optParseOptions(int *argc, char *argv[], + | optStruct opt[], int allowNegNum); + | + | INPUT argc Pointer to number of options. + | argv Array of option-/argument-strings. + | opt Array of possible options. + | allowNegNum + | a negative number is not to be taken as + | an option. + | + | OUTPUT argc new argument count. + | argv array with arguments removed. + | + | RETURNS Nothing. Aborts in case of error. + | + | DESCRIPTION This function checks each option in the argv-array + | against strings in the opt-array, and `executes' any + | matching action. Any arguments to the options are + | extracted and stored in the variables or passed to + | functions pointed to by entries in opt. + | + | Options and arguments used are removed from the argv- + | array, and argc is decreased accordingly. + | + | Any error leads to program abortion. + */ +void +optParseOptions(int *argc, char *argv[], optStruct opt[], int allowNegNum) +{ + int ai, /* argv index. */ + optarg, /* argv index of option argument, or -1 if none. */ + mi, /* Match index in opt. */ + done; + char *arg, /* Pointer to argument to an option. */ + *o, /* pointer to an option character */ + *p; + + /* + * Loop through all arguments. + */ + for (ai = 0; ai < *argc; ) { + /* + * "--" indicates that the rest of the argv-array does not + * contain options. + */ + if (strcmp(argv[ai], "--") == 0) { + argvRemove(argc, argv, ai); + break; + } + + if (allowNegNum && argv[ai][0] == '-' && isdigit(argv[ai][1])) { + ++ai; + continue; + } else if (strncmp(argv[ai], "--", 2) == 0) { + /* long option */ + /* find matching option */ + if ((mi = optMatch(opt, argv[ai] + 2, 1)) < 0) + optFatal("unrecognized option `%s'\n", argv[ai]); + + /* possibly locate the argument to this option. */ + arg = NULL; + if ((p = strchr(argv[ai], '=')) != NULL) + arg = p + 1; + + /* does this option take an argument? */ + optarg = -1; + if (optNeedsArgument(&opt[mi])) { + /* option needs an argument. find it. */ + if (!arg) { + if ((optarg = ai + 1) == *argc) + optFatal("option `%s' requires an argument\n", + optString(&opt[mi], 1)); + arg = argv[optarg]; + } + } else { + if (arg) + optFatal("option `%s' doesn't allow an argument\n", + optString(&opt[mi], 1)); + } + /* perform the action of this option. */ + optExecute(&opt[mi], arg, 1); + /* remove option and any argument from the argv-array. */ + if (optarg >= 0) + argvRemove(argc, argv, ai); + argvRemove(argc, argv, ai); + } else if (*argv[ai] == '-') { + /* A dash by itself is not considered an option. */ + if (argv[ai][1] == '\0') { + ++ai; + continue; + } + /* Short option(s) following */ + o = argv[ai] + 1; + done = 0; + optarg = -1; + while (*o && !done) { + /* find matching option */ + if ((mi = optMatch(opt, o, 0)) < 0) + optFatal("unrecognized option `-%c'\n", *o); + + /* does this option take an argument? */ + optarg = -1; + arg = NULL; + if (optNeedsArgument(&opt[mi])) { + /* option needs an argument. find it. */ + arg = o + 1; + if (!*arg) { + if ((optarg = ai + 1) == *argc) + optFatal("option `%s' requires an argument\n", + optString(&opt[mi], 0)); + arg = argv[optarg]; + } + done = 1; + } + /* perform the action of this option. */ + optExecute(&opt[mi], arg, 0); + ++o; + } + /* remove option and any argument from the argv-array. */ + if (optarg >= 0) + argvRemove(argc, argv, ai); + argvRemove(argc, argv, ai); + } else { + /* a non-option argument */ + ++ai; + } + } +} diff --git a/tools/shhopt.h b/tools/shhopt.h new file mode 100644 index 0000000..3fe1cbe --- /dev/null +++ b/tools/shhopt.h @@ -0,0 +1,41 @@ +/* $Id: shhopt.h 8040 2008-04-14 09:20:35Z schoenw $ */ +#ifndef SHHOPT_H +#define SHHOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* constants for recognized option types. */ +typedef enum { + OPT_END, /* nothing. used as ending element. */ + OPT_FLAG, /* no argument following. sets variable to 1. */ + OPT_STRING, /* string argument. */ + OPT_INT, /* signed integer argument. */ + OPT_UINT, /* unsigned integer argument. */ + OPT_LONG, /* signed long integer argument. */ + OPT_ULONG /* unsigned long integer argument. */ +} optArgType; + +/* flags modifying the default way options are handeled. */ +#define OPT_CALLFUNC 1 /* pass argument to a function. */ + +typedef struct { + char shortName; /* short option name. */ + char *longName; /* long option name, no including '--'. */ + optArgType type; /* option type. */ + void *arg; /* pointer to variable to fill with argument, + * or pointer to function if type == OPT_FUNC. */ + int flags; /* modifier flags. */ +} optStruct; + + +extern void optSetFatalFunc(void (*f)(const char *, ...)); +extern void optParseOptions(int *argc, char *argv[], + optStruct opt[], int allowNegNum); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/smicache.1 b/tools/smicache.1 new file mode 100644 index 0000000..568213e --- /dev/null +++ b/tools/smicache.1 @@ -0,0 +1,64 @@ +.\" +.\" $Id: smicache.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smicache 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smicache \- caching method for use with libsmi +.SH SYNOPSIS +.B smicache +[ +.B "-Vh" +] [ +.BI "-d " dir +] [ +.BI "-p " prefix +] +[ +.I mib +] +.SH DESCRIPTION +The \fBsmicache\fP program can be used by libsmi to fetch MIB modules that +cannot be found in regular local MIB directories. +.SH OPTIONS +.TP +.B "-V" +Show the smicache version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.BI "-d " dir +Write fetched module file(s) to directory \fIdir\fP. +.TP +.BI "-p " prefix +Use the URL prefix \fIprefix\fP for fetching modules. +.TP +.I mib +The MIB module to be fetched. +.PP +Note that \fBsmicache\fP is just a very simple script that builds on +the wget program to retrieve files from URLs. It does not handle +the file attributes of retrieved modules in any special way, so that +you have to care about permissions in multi-user environments. +.SH "EXAMPLE" +\fBSmicache\fP can be used by putting the following line into the +global configuration file: +.nf + + cache /usr/local/share/mibs/cache \\ + /usr/local/bin/smicache \\ + -d /usr/local/share/mibs/cache \\ + -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +.fi +You might want to chmod 1777 /usr/local/share/mibs/cache. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 2001-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smicache.1.in b/tools/smicache.1.in new file mode 100644 index 0000000..568213e --- /dev/null +++ b/tools/smicache.1.in @@ -0,0 +1,64 @@ +.\" +.\" $Id: smicache.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smicache 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smicache \- caching method for use with libsmi +.SH SYNOPSIS +.B smicache +[ +.B "-Vh" +] [ +.BI "-d " dir +] [ +.BI "-p " prefix +] +[ +.I mib +] +.SH DESCRIPTION +The \fBsmicache\fP program can be used by libsmi to fetch MIB modules that +cannot be found in regular local MIB directories. +.SH OPTIONS +.TP +.B "-V" +Show the smicache version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.BI "-d " dir +Write fetched module file(s) to directory \fIdir\fP. +.TP +.BI "-p " prefix +Use the URL prefix \fIprefix\fP for fetching modules. +.TP +.I mib +The MIB module to be fetched. +.PP +Note that \fBsmicache\fP is just a very simple script that builds on +the wget program to retrieve files from URLs. It does not handle +the file attributes of retrieved modules in any special way, so that +you have to care about permissions in multi-user environments. +.SH "EXAMPLE" +\fBSmicache\fP can be used by putting the following line into the +global configuration file: +.nf + + cache /usr/local/share/mibs/cache \\ + /usr/local/bin/smicache \\ + -d /usr/local/share/mibs/cache \\ + -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +.fi +You might want to chmod 1777 /usr/local/share/mibs/cache. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 2001-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smicache.in b/tools/smicache.in new file mode 100644 index 0000000..fa83eb5 --- /dev/null +++ b/tools/smicache.in @@ -0,0 +1,80 @@ +#!@SH@ +# +# smicache -- +# +# A simple caching method, used by the config file `cache' directive. +# +# Copyright (c) 2001 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# $Id: smicache.in 8090 2008-04-18 12:56:29Z strauss $ +# +# NOTE, that this script relies on wget and getopts +# (shell builtin like in bash or standalone). +# +# NOTE, that smicache has just been an experiment. It is NOT suggested +# to use it in a production environment. + +WGET=@WGET@ +GETOPTS=getopts +VERSION=@VERSION@ + +prefix=http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ +dir=/tmp + + + +do_version () { + echo "smicache $VERSION" +} + + + +do_usage () { + echo "Usage: smicache [-Vh] [-d dir] [-p prefix] mib" + echo "-V show version and license information" + echo "-h show usage information" + echo "-d dir use dir as the caching directory" + echo "-p prefix use prefix as the URL prefix for fetching modules" + echo "mib name of the module to be fetched" +} + + + +do_fetch () { + $WGET -q -O "$dir/$1" "$prefix/$1" +} + + + +while $GETOPTS Vhd:p: c ; do + case $c in + d) dir="$OPTARG" + ;; + p) prefix="$OPTARG" + ;; + h) do_usage + exit 0 + ;; + V) do_version + exit 0 + ;; + *) do_usage + exit 1 + ;; + esac +done + +shift `expr $OPTIND - 1` + + + +if [ $# -eq 1 ] ; then + do_fetch $1 +else + do_usage +fi + +exit 0 diff --git a/tools/smidiff.1 b/tools/smidiff.1 new file mode 100644 index 0000000..398ff99 --- /dev/null +++ b/tools/smidiff.1 @@ -0,0 +1,87 @@ +.\" +.\" $Id: smidiff.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smidiff 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidiff \- check differences between a pair of SMI or SPPI modules +.SH SYNOPSIS +.B smidiff +[ +.B "-Vhsm" +] [ +.BI "-c " file +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] [ +.BI "-p " module +] +.I "oldmodule newmodule" +.SH DESCRIPTION +The \fBsmidiff\fP program is used to check differences between a pair +of SMI MIB modules or SPPI PIB modules. +E.g., it can be used to detect changes in updated MIB +modules that can cause interoperability problems with existing +implementations. SMIv1/v2 and SPPI style MIB/PIB modules are +supported. +.PP +Note that conformance statements are currently not checked. +.PP +Messages describing the differences are written to the standard output +channel while error and warning messages generated by the parser +are written to the standard error channel. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +.TP +.I oldmodule +The original module. +.TP +.I newmodule +The updated module. +.PP +If a module argument represents a path name (identified by containing +at least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 2001 T. Klie, TU Braunschweig, Germany +.br +(C) 2001 J. Schoenwaelder, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidiff.1.in b/tools/smidiff.1.in new file mode 100644 index 0000000..398ff99 --- /dev/null +++ b/tools/smidiff.1.in @@ -0,0 +1,87 @@ +.\" +.\" $Id: smidiff.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smidiff 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidiff \- check differences between a pair of SMI or SPPI modules +.SH SYNOPSIS +.B smidiff +[ +.B "-Vhsm" +] [ +.BI "-c " file +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] [ +.BI "-p " module +] +.I "oldmodule newmodule" +.SH DESCRIPTION +The \fBsmidiff\fP program is used to check differences between a pair +of SMI MIB modules or SPPI PIB modules. +E.g., it can be used to detect changes in updated MIB +modules that can cause interoperability problems with existing +implementations. SMIv1/v2 and SPPI style MIB/PIB modules are +supported. +.PP +Note that conformance statements are currently not checked. +.PP +Messages describing the differences are written to the standard output +channel while error and warning messages generated by the parser +are written to the standard error channel. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +.TP +.I oldmodule +The original module. +.TP +.I newmodule +The updated module. +.PP +If a module argument represents a path name (identified by containing +at least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 2001 T. Klie, TU Braunschweig, Germany +.br +(C) 2001 J. Schoenwaelder, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidiff.c b/tools/smidiff.c new file mode 100644 index 0000000..4df9ca4 --- /dev/null +++ b/tools/smidiff.c @@ -0,0 +1,3211 @@ +/* + * smidiff.c -- + * + * Compute and check differences between MIB modules. + * + * Copyright (c) 2001 T. Klie, Technical University of Braunschweig. + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2001 F. Strauss, Technical University of Braunschweig. + * Copyright (c) 2006 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidiff.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - replacing an implicit type with a named type should cause a real + * error if the new type is formally not identical (Mike Heard) + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + +static int errorLevel = 6; /* smidiff/libsmi error level (inclusive) */ +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static char *oldCompl = NULL; /* name of old compliance statement */ +static char *newCompl = NULL; /* name of new compliance statement */ + +/* the `:' separates the view identifier */ +static const char *oldTag = "smidiff:old"; +static const char *newTag = "smidiff:new"; + + +#define CODE_SHOW_PREVIOUS 0x01 +#define CODE_SHOW_PREVIOUS_IMPLICIT 0x02 + + +typedef struct Error { + int level; /* error level - roughly the same as smilint */ + int id; /* error id used in the error() invocation */ + char *tag; /* tag for error identification on cmd line */ + char *fmt; /* the complete error format string */ + char *description; /* description of the error message */ +} Error; + + +#define ERR_INTERNAL 0 +#define ERR_TYPE_REMOVED 1 +#define ERR_TYPE_ADDED 2 +#define ERR_NODE_REMOVED 3 +#define ERR_NODE_ADDED 4 +#define ERR_BASETYPE_CHANGED 5 +#define ERR_DECL_CHANGED 6 +#define ERR_LEGAL_STATUS_CHANGED 8 +#define ERR_PREVIOUS_DEFINITION 9 +#define ERR_STATUS_CHANGED 10 +#define ERR_DESCR_ADDED 11 +#define ERR_DESCR_REMOVED 12 +#define ERR_DESCR_CHANGED 13 +#define ERR_REF_ADDED 14 +#define ERR_REF_REMOVED 15 +#define ERR_REF_CHANGED 16 +#define ERR_FORMAT_ADDED 17 +#define ERR_FORMAT_REMOVED 18 +#define ERR_FORMAT_CHANGED 19 +#define ERR_UNITS_ADDED 20 +#define ERR_UNITS_REMOVED 21 +#define ERR_UNITS_CHANGED 22 +#define ERR_ACCESS_ADDED 23 +#define ERR_ACCESS_REMOVED 24 +#define ERR_ACCESS_CHANGED 25 +#define ERR_NAME_ADDED 26 +#define ERR_NAME_REMOVED 27 +#define ERR_NAME_CHANGED 28 +#define ERR_TO_IMPLICIT 29 +#define ERR_FROM_IMPLICIT 30 +#define ERR_RANGE_ADDED 31 +#define ERR_RANGE_REMOVED 32 +#define ERR_RANGE_CHANGED 33 +#define ERR_DEFVAL_ADDED 34 +#define ERR_DEFVAL_REMOVED 35 +#define ERR_DEFVAL_CHANGED 36 +#define ERR_ORGA_ADDED 37 +#define ERR_ORGA_REMOVED 38 +#define ERR_ORGA_CHANGED 39 +#define ERR_CONTACT_ADDED 40 +#define ERR_CONTACT_REMOVED 41 +#define ERR_CONTACT_CHANGED 42 +#define ERR_SMIVERSION_CHANGED 43 +#define ERR_REVISION_ADDED 44 +#define ERR_REVISION_REMOVED 45 +#define ERR_REVISION_CHANGED 46 +#define ERR_LENGTH_CHANGED 47 +#define ERR_LENGTH_OF_TYPE_CHANGED 48 +#define ERR_LENGTH_ADDED 49 +#define ERR_MEMBER_ADDED 50 +#define ERR_MEMBER_REMOVED 51 +#define ERR_MEMBER_CHANGED 52 +#define ERR_OBJECT_ADDED 53 +#define ERR_OBJECT_REMOVED 54 +#define ERR_OBJECT_CHANGED 55 +#define ERR_NAMED_NUMBER_ADDED 56 +#define ERR_NAMED_NUMBER_REMOVED 57 +#define ERR_NAMED_NUMBER_CHANGED 58 +#define ERR_NAMED_BIT_ADDED_OLD_BYTE 59 +#define ERR_NODEKIND_CHANGED 60 +#define ERR_INDEXKIND_CHANGED 61 +#define ERR_INDEX_CHANGED 62 +#define ERR_TYPE_IS_AND_WAS 63 +#define ERR_RANGE_OF_TYPE_CHANGED 64 +#define ERR_RANGE_OF_TYPE_ADDED 65 +#define ERR_RANGE_OF_TYPE_REMOVED 66 +#define ERR_TYPE_BASED_ON 67 +#define ERR_INDEX_AUGMENT_CHANGED 68 +#define ERR_NAMED_NUMBER_OF_TYPE_REMOVED 69 +#define ERR_NAMED_NUMBER_TO_TYPE_ADDED 70 +#define ERR_NAMED_NUMBER_OF_TYPE_CHANGED 71 +#define ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE 72 +#define ERR_LENGTH_REMOVED 73 +#define ERR_PREVIOUS_IMPLICIT_DEFINITION 74 +#define ERR_STATUS_CHANGED_IMPLICIT 75 +#define ERR_LEGAL_STATUS_CHANGED_IMPLICIT 76 +#define ERR_LENGTH_OF_TYPE_ADDED 77 +#define ERR_LENGTH_OF_TYPE_REMOVED 78 +#define ERR_STATUS_ADDED 79 +#define ERR_STATUS_REMOVED 80 +#define ERR_MANDATORY_GROUP_ADDED 81 +#define ERR_MANDATORY_GROUP_REMOVED 82 +#define ERR_MANDATORY_EXT_GROUP_ADDED 83 +#define ERR_MANDATORY_EXT_GROUP_REMOVED 84 +#define ERR_OPTION_ADDED 85 +#define ERR_OPTION_REMOVED 86 +#define ERR_EXT_OPTION_ADDED 87 +#define ERR_EXT_OPTION_REMOVED 88 +#define ERR_REFINEMENT_ADDED 89 +#define ERR_REFINEMENT_REMOVED 90 +#define ERR_EXT_REFINEMENT_ADDED 91 +#define ERR_EXT_REFINEMENT_REMOVED 92 +#define ERR_MANDATORY_REMOVED 93 +#define ERR_MANDATORY_ADDED 94 +#define ERR_OPTIONAL_REMOVED 95 +#define ERR_OPTIONAL_ADDED 96 +#define ERR_MANDATORY_EXT_REMOVED 97 +#define ERR_MANDATORY_EXT_ADDED 98 +#define ERR_OPTIONAL_EXT_REMOVED 99 +#define ERR_OPTIONAL_EXT_ADDED 100 + +static Error errors[] = { + { 0, ERR_INTERNAL, "internal", + "internal error!!!", NULL }, + { 1, ERR_TYPE_REMOVED, "type-removed", + "type `%s' has been deleted", NULL }, + { 5, ERR_TYPE_ADDED, "type-added", + "type `%s' has been added", NULL }, + { 1, ERR_NODE_REMOVED, "node-removed", + "%s `%s' has been deleted", NULL }, + { 5, ERR_NODE_ADDED, "node-added", + "%s `%s' has been added", NULL }, + { 1, ERR_BASETYPE_CHANGED, "basetype-changed", + "base type of `%s' changed", NULL }, + { 5, ERR_DECL_CHANGED, "decl-changed", + "declaration changed for `%s'", NULL }, + { 5, ERR_LEGAL_STATUS_CHANGED, "status-change", + "legal status change from `%s' to `%s' for `%s'", NULL }, + { 6, ERR_PREVIOUS_DEFINITION, "previous-definition", + "previous definition of `%s'", NULL }, + { 2, ERR_STATUS_CHANGED, "status-change", + "status change from `%s' to `%s' for `%s'", NULL }, + { 5, ERR_DESCR_ADDED, "description-added", + "description added to `%s'", NULL }, + { 2, ERR_DESCR_REMOVED, "description-removed", + "description removed from `%s'", NULL }, + { 5, ERR_DESCR_CHANGED, "description-changed", + "description of %s `%s' changed", NULL }, + { 5, ERR_REF_ADDED, "ref-added", + "reference added to `%s'", NULL }, + { 3, ERR_REF_REMOVED, "ref-removed", + "reference removed from `%s'", NULL }, + { 5, ERR_REF_CHANGED, "ref-changed", + "reference of `%s' changed", NULL }, + { 5, ERR_FORMAT_ADDED, "format-added", + "format added to `%s'", NULL }, + { 3, ERR_FORMAT_REMOVED, "format-removed", + "format removed from `%s'", NULL }, + { 5, ERR_FORMAT_CHANGED, "format-changed", + "format of `%s' changed", NULL }, + { 5, ERR_UNITS_ADDED, "units-added", + "units added to `%s'", NULL }, + { 3, ERR_UNITS_REMOVED, "units-removed", + "units removed from `%s'", NULL }, + { 5, ERR_UNITS_CHANGED, "units-changed", + "units of `%s' changed", NULL }, + { 5, ERR_ACCESS_ADDED, "access-added", + "access added to `%s'", NULL }, + { 3, ERR_ACCESS_REMOVED, "access-removed", + "access removed from `%s'", NULL }, + { 5, ERR_ACCESS_CHANGED, "access-changed", + "access of `%s' changed from `%s' to `%s'", NULL }, + { 5, ERR_NAME_ADDED, "name-added", + "name added to `%s'", NULL }, + { 3, ERR_NAME_REMOVED, "name-removed", + "name removed from `%s'", NULL }, + { 5, ERR_NAME_CHANGED, "name-changed", + "name changed from `%s' to `%s'", NULL }, + { 3, ERR_TO_IMPLICIT, "to-implicit", + "implicit type for `%s' replaces type `%s'", NULL }, + { 5, ERR_FROM_IMPLICIT, "from-implicit", + "type `%s' replaces implicit type for `%s'", NULL }, + { 3, ERR_RANGE_ADDED, "range-added", + "range `%s' added to type used in `%s'", NULL }, + { 3, ERR_RANGE_REMOVED, "range-removed", + "range `%s' removed from type used in `%s'", NULL }, + { 3, ERR_RANGE_CHANGED, "range-changed", + "range of type used in `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_DEFVAL_ADDED, "defval-added", + "default value added to `%s'", NULL }, + { 3, ERR_DEFVAL_REMOVED, "defval-removed", + "default value removed from `%s'", NULL }, + { 3, ERR_DEFVAL_CHANGED, "defval-changed", + "default value of `%s' changed", NULL }, + { 5, ERR_ORGA_ADDED, "organization-added", + "organization added to `%s'", NULL }, + { 3, ERR_ORGA_REMOVED, "organization-removed", + "organization removed from `%s'", NULL }, + { 5, ERR_ORGA_CHANGED, "organization-changed", + "organization of `%s' changed", NULL }, + { 5, ERR_CONTACT_ADDED, "contact-added", + "contact added to `%s'", NULL }, + { 3, ERR_CONTACT_REMOVED, "contact-removed", + "contact removed from `%s'", NULL }, + { 5, ERR_CONTACT_CHANGED, "contact-changed", + "contact of `%s' changed", NULL }, + { 3, ERR_SMIVERSION_CHANGED, "smi-version-changed", + "SMI version changed", NULL }, + { 5, ERR_REVISION_ADDED, "revision-added", + "revision `%s' added", NULL }, + { 3, ERR_REVISION_REMOVED, "revision-removed", + "revision `%s' removed", NULL }, + { 5, ERR_REVISION_CHANGED, "revision-changed", + "revision `%s' changed", NULL }, + { 3, ERR_LENGTH_CHANGED, "range-changed", + "size of type used in `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_LENGTH_OF_TYPE_CHANGED, "range-changed", + "size of type `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_LENGTH_ADDED, "range-added", + "size `%s' added to type used in `%s'", NULL }, + { 2, ERR_MEMBER_ADDED, "member-added", + "member `%s' added to group `%s'", NULL }, + { 2, ERR_MEMBER_REMOVED, "member-removed", + "member `%s' removed from group `%s'", NULL }, + { 3, ERR_MEMBER_CHANGED, "member-changed", + "member `%s' changed in group `%s'", NULL }, + { 3, ERR_OBJECT_ADDED, "object-added", + "object `%s' added", NULL }, + { 2, ERR_OBJECT_REMOVED, "object-removed", + "object `%s' removed", NULL }, + { 3, ERR_OBJECT_CHANGED, "object-changed", + "object `%s' changed", NULL }, + { 5, ERR_NAMED_NUMBER_ADDED, "named-number-added", + "named number `%s' added to type used in `%s'", NULL }, + { 2, ERR_NAMED_NUMBER_REMOVED, "named-number-removed", + "named number `%s' removed from type used in `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_CHANGED, "named-number-changed", + "named number `%s' changed to `%s' at type used in `%s'", NULL }, + { 3, ERR_NAMED_BIT_ADDED_OLD_BYTE, "named-bit-added-old-byte", + "named bit `%s' added without starting in a new byte in type used in `%s'", NULL }, + { 3, ERR_LENGTH_REMOVED, "range-removed", + "size `%s' removed from type used in `%s'", NULL }, + { 2, ERR_NODEKIND_CHANGED, "nodekind-changed", + "node kind of `%s' changed", NULL }, + { 2, ERR_INDEXKIND_CHANGED, "indexkind-changed", + "changed kind of index from `%s' to `%s' in node `%s'", NULL }, + { 2, ERR_INDEX_CHANGED, "index-changed", + "index of `%s' changed from %s to %s", NULL }, + { 5, ERR_TYPE_IS_AND_WAS, "type-is-and-was", + "type changed from %s to %s", NULL }, + { 3, ERR_RANGE_OF_TYPE_CHANGED, "range-changed", + "range of type `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_RANGE_OF_TYPE_ADDED, "range-added", + "range `%s' added to type `%s'", NULL }, + { 3, ERR_RANGE_OF_TYPE_REMOVED, "range-removed", + "range `%s' removed from type `%s'", NULL }, + { 6, ERR_TYPE_BASED_ON, "type-based-on", + "type `%s' based on `%s'", NULL }, + { 2, ERR_INDEX_AUGMENT_CHANGED, "index-changed", + "index of `%s' changed from augmenting `%s' to augmenting `%s'", NULL }, + { 2, ERR_NAMED_NUMBER_OF_TYPE_REMOVED, "named-number-removed", + "named number `%s' removed from type `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_TO_TYPE_ADDED, "named-number-added", + "named number `%s' added to type `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_OF_TYPE_CHANGED, "named-number-changed", + "named number `%s' changed to `%s' in type `%s'", NULL }, + { 3, ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE, "named-bit-added-old-byte", + "named bit `%s' added without starting in a new byte in type `%s'", NULL }, + { 6, ERR_PREVIOUS_IMPLICIT_DEFINITION, "previous-definition", + "previous implicit definition", NULL }, + { 2, ERR_STATUS_CHANGED_IMPLICIT, "status-change", + "status change from `%s' to `%s' for implicit type", NULL }, + { 5, ERR_LEGAL_STATUS_CHANGED_IMPLICIT, "status-change", + "legal status change from `%s' to `%s' for implicit type", NULL }, + { 3, ERR_LENGTH_OF_TYPE_ADDED, "range-added", + "size `%s' added to type `%s'", NULL }, + { 3, ERR_LENGTH_OF_TYPE_REMOVED, "range-removed", + "size `%s' removed from type `%s'", NULL }, + { 5, ERR_STATUS_ADDED, "status-added", + "status added to `%s'", NULL }, + { 3, ERR_STATUS_REMOVED, "status-removed", + "status removed from `%s'", NULL }, + { 2, ERR_MANDATORY_GROUP_ADDED, "mandatory-added", + "mandatory group `%s' added to `%s'", NULL }, + { 2, ERR_MANDATORY_GROUP_REMOVED, "mandatory-removed", + "mandatory group `%s' removed from `%s'", NULL }, + { 2, ERR_MANDATORY_EXT_GROUP_ADDED, "mandatory-added", + "mandatory group `%s::%s' added to `%s'", NULL }, + { 2, ERR_MANDATORY_EXT_GROUP_REMOVED, "mandatory-removed", + "mandatory group `%s::%s' removed from `%s'", NULL }, + { 2, ERR_OPTION_ADDED, "option-added", + "optional group `%s' added to `%s'", NULL }, + { 2, ERR_OPTION_REMOVED, "option-removed", + "optional group `%s' removed from `%s'", NULL }, + { 2, ERR_EXT_OPTION_ADDED, "option-added", + "optional group `%s::%s' added to `%s'", NULL }, + { 2, ERR_EXT_OPTION_REMOVED, "option-removed", + "optional group `%s::%s' removed from `%s'", NULL }, + { 5, ERR_REFINEMENT_ADDED, "refinement-added", + "object refinement for `%s' added to `%s'", NULL }, + { 2, ERR_REFINEMENT_REMOVED, "refinement-removed", + "object refinement for `%s' removed from `%s'", NULL }, + { 5, ERR_EXT_REFINEMENT_ADDED, "refinement-added", + "object refinement for `%s::%s' added to `%s'", NULL }, + { 2, ERR_EXT_REFINEMENT_REMOVED, "refinement-removed", + "object refinement for `%s::%s' removed from `%s'", NULL }, + { 3, ERR_MANDATORY_REMOVED, "mandatory-removed", + "%s `%s' is mandatory under `%s' but not mandatory under `%s'", NULL }, + { 3, ERR_MANDATORY_ADDED, "mandatory-added", + "%s `%s' is not mandatory under `%s' but mandatory under `%s'", NULL }, + { 3, ERR_OPTIONAL_REMOVED, "optional-removed", + "%s `%s' is conditionally optional under `%s' but not under `%s'", NULL }, + { 3, ERR_OPTIONAL_ADDED, "optional-added", + "%s `%s' is not conditionally optional under `%s' but under `%s'", NULL }, + { 3, ERR_MANDATORY_EXT_REMOVED, "mandatory-removed", + "%s `%s::%s' is mandatory under `%s' but not mandatory under `%s'", NULL }, + { 3, ERR_MANDATORY_EXT_ADDED, "mandatory-added", + "%s `%s::%s' is not mandatory under `%s' but mandatory under `%s'", NULL }, + { 3, ERR_OPTIONAL_EXT_REMOVED, "optional-removed", + "%s `%s::%s' is conditionally optional under `%s' but not under `%s'", NULL }, + { 3, ERR_OPTIONAL_EXT_ADDED, "optional-added", + "%s `%s::%s' is not conditionally optional under `%s' but under `%s'", NULL }, + { 0, 0, NULL, NULL } +}; + + + +static char *smiStringDecl(SmiDecl macro) +{ + return + (macro == SMI_DECL_UNKNOWN) ? "unknown construct" : + (macro == SMI_DECL_IMPLICIT_TYPE) ? "implicit construct" : + (macro == SMI_DECL_TYPEASSIGNMENT) ? "type assignment" : + (macro == SMI_DECL_IMPL_SEQUENCEOF) ? "implicit sequence-of construct" : + (macro == SMI_DECL_VALUEASSIGNMENT) ? "value assignment" : + (macro == SMI_DECL_OBJECTTYPE) ? "object definition" : + (macro == SMI_DECL_OBJECTIDENTITY) ? "object identity definition" : + (macro == SMI_DECL_MODULEIDENTITY) ? "module identity definition" : + (macro == SMI_DECL_NOTIFICATIONTYPE) ? "notification definition" : + (macro == SMI_DECL_TRAPTYPE) ? "trap definition" : + (macro == SMI_DECL_OBJECTGROUP) ? "object group definition" : + (macro == SMI_DECL_NOTIFICATIONGROUP) ? "notification group definition" : + (macro == SMI_DECL_MODULECOMPLIANCE) ? "module compliance definition" : + (macro == SMI_DECL_AGENTCAPABILITIES) ? "agent capabilities definition" : + (macro == SMI_DECL_TEXTUALCONVENTION) ? "textual convention definition" : + (macro == SMI_DECL_MACRO) ? "macro definition" : + (macro == SMI_DECL_COMPL_GROUP) ? "optional group" : + (macro == SMI_DECL_COMPL_OBJECT) ? "object refinement" : + (macro == SMI_DECL_MODULE) ? "module" : + (macro == SMI_DECL_TYPEDEF) ? "typedef" : + (macro == SMI_DECL_NODE) ? "node" : + (macro == SMI_DECL_SCALAR) ? "scalar" : + (macro == SMI_DECL_TABLE) ? "table" : + (macro == SMI_DECL_ROW) ? "row" : + (macro == SMI_DECL_COLUMN) ? "column" : + (macro == SMI_DECL_NOTIFICATION) ? "notification" : + (macro == SMI_DECL_GROUP) ? "group" : + (macro == SMI_DECL_COMPLIANCE) ? "compliance" : + ""; +} + + + +static void +setErrorSeverity(char *pattern, int severity) +{ + int i; + + for (i = 0; errors[i].fmt; i++) { + if (strstr(errors[i].tag, pattern) == errors[i].tag) { + errors[i].level = severity; + } + } +} + + + +static void +printError(SmiModule *smiModule, int id, int line, va_list ap) +{ + int i; + + /* + * Search for the tag instead of just using the id as an index so + * that we do not run into trouble if the id is bogus. + */ + + for (i = 0; errors[i].fmt; i++) { + if (errors[i].id == id) break; + } + if (! errors[i].fmt) { + i = 0; /* assumes that 0 is the internal error */ + } + + if (errors[i].level <= errorLevel) { + fprintf(stdout, "%s", smiModule->path); + + if (line >= 0) { + fprintf(stdout, ":%d", line); + } + fprintf(stdout, " "); + if (sFlag) { + fprintf(stdout, "[%d] ", errors[i].level); + } + if (mFlag) { + fprintf(stdout, "{%s} ", errors[i].tag); + } + switch (errors[i].level) { + case 4: + case 5: + fprintf(stdout, "warning: "); + break; + case 6: + fprintf(stdout, "info: "); + break; + } + vfprintf(stdout, errors[i].fmt, ap); + fprintf(stdout, "\n"); + } +} + + + +static void +printErrorAtLine(SmiModule *smiModule, int id, int line, ...) +{ + va_list ap; + + va_start(ap, line); + printError(smiModule, id, line, ap); + va_end(ap); +} + + + +static char* +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char* +getStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "unknown" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + + + +static int +diffStrings(const char *s1, const char *s2) +{ + int i, j; + + for (i = 0, j = 0; s1[i] && s2[j]; i++, j++) { + while (s1[i] && isspace((int) s1[i])) i++; + while (s2[j] && isspace((int) s2[j])) j++; + if (! s1[i] || ! s2[j]) break; + if (s1[i] != s2[j]) { + return 1; + } + } + return (s1[i] != s2[j]); +} + + + +static int +checkName(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *oldName, char *newName) +{ + int code = 0; + + if (!oldName && newName) { + printErrorAtLine(newModule, ERR_NAME_ADDED, + newLine, newName); + } + + if (oldName && !newName) { + printErrorAtLine(oldModule, ERR_NAME_REMOVED, + oldLine, oldName); + } + + if (oldName && newName && strcmp(oldName, newName) != 0) { + printErrorAtLine(newModule, ERR_NAME_CHANGED, + newLine, oldName, newName); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkDecl(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiDecl oldDecl, SmiDecl newDecl) +{ + int code = 0; + + if (oldDecl != newDecl) { + printErrorAtLine(newModule, ERR_DECL_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + return code; +} + + + +static char* +getStringStatus(SmiStatus status) +{ + char *statStr; + + switch( status ) { + case SMI_STATUS_CURRENT: + statStr = "current"; + break; + case SMI_STATUS_DEPRECATED: + statStr = "deprecated"; + break; + case SMI_STATUS_OBSOLETE: + statStr = "obsolete"; + break; + case SMI_STATUS_MANDATORY: + statStr = "mandatory"; + break; + case SMI_STATUS_OPTIONAL: + statStr = "optional"; + break; + case SMI_STATUS_UNKNOWN: + default: + statStr = "unknown"; + break; + } + return statStr; +} + + + +static int +checkStatus(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiStatus oldStatus, SmiStatus newStatus) +{ + int code = 0; + + if (oldStatus == newStatus) { + return code; + } + + if (oldStatus == SMI_STATUS_UNKNOWN) { + printErrorAtLine(newModule, ERR_STATUS_ADDED, + newLine, name); + } else if (newStatus == SMI_STATUS_UNKNOWN) { + printErrorAtLine(newModule, ERR_STATUS_REMOVED, + newLine, name); + + } else if (((oldStatus == SMI_STATUS_CURRENT + && (newStatus == SMI_STATUS_DEPRECATED + || newStatus == SMI_STATUS_OBSOLETE))) + || ((oldStatus == SMI_STATUS_DEPRECATED + && newStatus == SMI_STATUS_OBSOLETE))) { + if (name) { + printErrorAtLine(newModule, ERR_LEGAL_STATUS_CHANGED, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus), + name); + code |= CODE_SHOW_PREVIOUS; + } else { + printErrorAtLine(newModule, ERR_LEGAL_STATUS_CHANGED_IMPLICIT, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus)); + code |= CODE_SHOW_PREVIOUS_IMPLICIT; + } + } else { + if (name) { + printErrorAtLine(newModule, ERR_STATUS_CHANGED, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus), + name); + code |= CODE_SHOW_PREVIOUS; + } else { + printErrorAtLine(newModule, ERR_STATUS_CHANGED_IMPLICIT, + newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus)); + code |= CODE_SHOW_PREVIOUS_IMPLICIT; + } + } + + return code; +} + + + +static char* +getStringAccess( SmiAccess smiAccess ) +{ + switch( smiAccess ) { + case SMI_ACCESS_NOT_IMPLEMENTED: return "not-implemented"; + case SMI_ACCESS_NOT_ACCESSIBLE : return "not-accessible"; + case SMI_ACCESS_NOTIFY : return "notify"; + case SMI_ACCESS_READ_ONLY : return "read-only"; + case SMI_ACCESS_READ_WRITE : return "read-write"; + case SMI_ACCESS_UNKNOWN: + default: return "unknown"; + } +} + + + +static int +checkAccess(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiAccess oldAccess, SmiAccess newAccess) +{ + int code = 0; + + if (oldAccess == newAccess) { + return code; + } + + if (oldAccess == SMI_ACCESS_UNKNOWN) { + printErrorAtLine(newModule, ERR_ACCESS_ADDED, + newLine, name); + } else if (newAccess == SMI_ACCESS_UNKNOWN) { + printErrorAtLine(newModule, ERR_ACCESS_REMOVED, + newLine, name); + } else { + printErrorAtLine(newModule, ERR_ACCESS_CHANGED, + newLine, name, + getStringAccess( oldAccess ), + getStringAccess( newAccess )); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkDescription(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiDecl decl, char *oldDescr, char *newDescr) +{ + int code = 0; + + if (!oldDescr && newDescr) { + printErrorAtLine(newModule, ERR_DESCR_ADDED, + newLine, name); + } + + if (oldDescr && !newDescr) { + printErrorAtLine(newModule, ERR_DESCR_REMOVED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldDescr && newDescr && diffStrings(oldDescr, newDescr)) { + printErrorAtLine(newModule, ERR_DESCR_CHANGED, + newLine, smiStringDecl(decl), name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkReference(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldRef, char *newRef) +{ + int code = 0; + + if (!oldRef && newRef) { + printErrorAtLine(newModule, ERR_REF_ADDED, + newLine, name); + } + + if (oldRef && !newRef) { + printErrorAtLine(oldModule, ERR_REF_REMOVED, + oldLine, name); + } + + if (oldRef && newRef && diffStrings(oldRef, newRef) != 0) { + printErrorAtLine(newModule, ERR_REF_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkFormat(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldFormat, char *newFormat) +{ + int code = 0; + + if (!oldFormat && newFormat) { + printErrorAtLine(newModule, ERR_FORMAT_ADDED, + newLine, name); + } + + if (oldFormat && !newFormat) { + printErrorAtLine(oldModule, ERR_FORMAT_REMOVED, + oldLine, name); + } + + if (oldFormat && newFormat && strcmp(oldFormat, newFormat) != 0) { + printErrorAtLine(newModule, ERR_FORMAT_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkUnits(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldUnits, char *newUnits) +{ + int code = 0; + + if (!oldUnits && newUnits) { + printErrorAtLine(newModule, ERR_UNITS_ADDED, + newLine, name); + } + + if (oldUnits && !newUnits) { + printErrorAtLine(oldModule, ERR_UNITS_REMOVED, + oldLine, name); + } + + if (oldUnits && newUnits && strcmp(oldUnits, newUnits) != 0) { + printErrorAtLine(newModule, ERR_UNITS_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static SmiType* +findTypeWithRange(SmiType *smiType) +{ + SmiType *iterType; + + for (iterType = smiType; iterType; iterType = smiGetParentType(iterType)) { + if (smiGetFirstRange(iterType)) { + return iterType; + } + } + return NULL; +} + + +/* This function assumes that the compared values have the same basetype. + * If the basetype is different, no comparison is done + * and '0' will be returned. Same for SMI_BASETYPE_UNKNOWN. + */ +static int +cmpSmiValues( SmiValue a, SmiValue b ) +{ + unsigned int i; + int changed = 0; + + switch (a.basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM : + changed = (a.value.integer32 != b.value.integer32); + break; + case SMI_BASETYPE_UNSIGNED32: + changed = (a.value.unsigned32 != b.value.unsigned32); + break; + case SMI_BASETYPE_INTEGER64: + changed = (a.value.integer64 != b.value.integer64); + break; + case SMI_BASETYPE_UNSIGNED64: + changed = (a.value.unsigned64 != b.value.unsigned64); + break; + case SMI_BASETYPE_FLOAT32: + changed = (a.value.float32 != b.value.float32); + break; + case SMI_BASETYPE_FLOAT64: + changed = (a.value.float64 != b.value.float64); + break; + case SMI_BASETYPE_FLOAT128: + changed = (a.value.float128 != b.value.float128); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + changed = (a.len != b.len) + || (memcmp(a.value.ptr, b.value.ptr, a.len) != 0); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + changed = (a.len != b.len); + for (i = 0; !changed && i < a.len; i++) { + changed = (a.value.oid[i] - b.value.oid[i]); + } + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + /* this should not occur */ + break; + } + + return changed; +} + +#if 0 +static char* +getTypeName(SmiType *smiType, SmiModule *smiModule) +{ + char* name; + SmiModule * tm; + + if( ! smiType ) { + return 0; + } + + if( smiType->name ) { + tm = smiGetTypeModule( smiType ); + if( smiModule != tm ) { + if( smiModule->name ) { + name = (char *)malloc( strlen( smiType->name ) + + strlen( tm->name ) + 5 ); + sprintf( name, "%s::%s", + tm->name, smiType->name ); + } + else { + name = strdup( smiType->name ); + } + } + else { + name = strdup( smiType->name ); + } + } + else { + name = NULL; + } + return name; +} + +static void +iterateTypeImports(char *typeName, + SmiType *smiType, SmiType *smiTwR, + int line, + SmiModule *smiModule) +{ + SmiType *iterType, *oldIterType; + char *iterTypeName, *oldIterTypeName = strdup( typeName ); + + iterType = smiType; + while( 1 ) { + iterType = smiGetParentType( iterType ); + iterTypeName = getTypeName( iterType, smiModule ); + if( (!iterType) || !iterTypeName ) { + return; + } + printErrorAtLine( smiGetTypeModule( smiType ), + ERR_TYPE_BASED_ON, + line, + oldIterTypeName, + iterTypeName ); + free( oldIterTypeName ); + oldIterTypeName = iterTypeName; + oldIterType = iterType; + } +} +#endif + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + +static char* +getStringSubrange(SmiRange *range, SmiType *smiType) +{ + char *minStr, *maxStr, *str; + minStr = strdup( getValueString(&range->minValue, smiType) ); + maxStr = strdup( getValueString(&range->maxValue, smiType) ); + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + str = malloc( strlen( minStr ) + strlen( maxStr ) + 3 ); + if( !str ) { + return NULL; + } + sprintf(str, "%s..%s", minStr, maxStr); + } else { + str = strdup( minStr ); + } + + return str; +} + + +static char* +getStringRange(SmiType *smiType) +{ + SmiRange *range; + int i; + char *str, *subRange; + + str = NULL; + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + + if (i) { + str = realloc( str, strlen( str ) +2 ); + if( str ) { + sprintf(str, "%s|", str); + } + + } + else { + str = strdup("("); + } + + subRange = getStringSubrange( range, smiType ); + if( !subRange ) { + return NULL; + } + str = realloc( str, strlen( str ) + strlen( subRange ) + 1 ); + if( !str ) { + return NULL; + } + sprintf( str, "%s%s", str, subRange ); + + } + str = realloc( str, strlen( str ) + 2 ); + if( str ) { + sprintf(str, "%s)", str); + } + return str; +} + +static void +printRangeChangeError( SmiType *oldTwR, SmiType *newTwR, + SmiModule *newModule, char *name ) +{ + char *strOldRange, *strNewRange; + int error, errorOT; + if( newTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_CHANGED; + errorOT = ERR_LENGTH_OF_TYPE_CHANGED; + } + else { + error = ERR_RANGE_CHANGED; + errorOT = ERR_RANGE_OF_TYPE_CHANGED; + } + strOldRange = getStringRange( oldTwR ); + strNewRange = getStringRange( newTwR ); + if( name ) { + printErrorAtLine(newModule, + error, + smiGetTypeLine( newTwR ), + name, strOldRange, strNewRange ); + } + else { + printErrorAtLine(newModule, + errorOT, + smiGetTypeLine( newTwR ), + oldTwR->name, strOldRange, strNewRange ); + } + free( strOldRange ); + free( strNewRange ); +} + +static void +checkRanges(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, + SmiType *oldType, SmiType *newType) +{ + SmiType *oldTwR, *newTwR; /* parent types with ranges */ + + oldTwR = findTypeWithRange(oldType); + newTwR = findTypeWithRange(newType); + + if (!oldTwR && newTwR) { + char *strRange; + int error, errorOT; + + strRange = getStringRange( newTwR ); + if( newTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_ADDED; + errorOT = ERR_LENGTH_OF_TYPE_ADDED; + } + else { + error = ERR_RANGE_ADDED; + errorOT = ERR_RANGE_OF_TYPE_ADDED; + } + if( name ) { + printErrorAtLine(newModule, error, + newLine, strRange, name); + } + else { + printErrorAtLine( newModule, errorOT, + newLine, strRange, newTwR->name ); + } + + free( strRange ); + return; + } + + if (oldTwR && !newTwR) { + char *strRange; + int error, errorOT; + + strRange = getStringRange( oldTwR ); + if( oldTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_REMOVED; + errorOT = ERR_LENGTH_OF_TYPE_REMOVED; + } + else { + error = ERR_RANGE_REMOVED; + errorOT = ERR_RANGE_OF_TYPE_REMOVED; + } + if( name ) { + printErrorAtLine( newModule, error, + newLine, strRange, name); + } + else { + printErrorAtLine( newModule, errorOT, + newLine, strRange, oldTwR->name ); + } + free( strRange ); + + if( oldTwR == oldType ) { + + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, name); + } + else { + SmiModule *modTwR; + int line; + + modTwR = smiGetTypeModule( oldTwR ); + line = smiGetTypeLine( oldTwR ); + + printErrorAtLine( modTwR, ERR_PREVIOUS_DEFINITION, + line, name ); + + } + return; + } + + if (oldTwR && newTwR) { + + SmiRange *oldRange, *newRange; + oldRange = smiGetFirstRange(oldTwR); + newRange = smiGetFirstRange(newTwR); + + while( oldRange || newRange ) { + + if( oldRange && newRange ) { + + if(cmpSmiValues(oldRange->minValue, newRange->minValue) || + cmpSmiValues(oldRange->maxValue, newRange->maxValue)) { + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + } + + else if (oldRange){ + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + + else if( newRange ) { + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + + oldRange = smiGetNextRange( oldRange ); + newRange = smiGetNextRange( newRange ); + } + } +} + + + +static void +checkDefVal(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, + SmiValue oldVal, SmiValue newVal) +{ + if ((oldVal.basetype != SMI_BASETYPE_UNKNOWN) && + (newVal.basetype == SMI_BASETYPE_UNKNOWN)) { + printErrorAtLine(newModule, ERR_DEFVAL_REMOVED, newLine, name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + return; + } + + if ((oldVal.basetype == SMI_BASETYPE_UNKNOWN) && + (newVal.basetype != SMI_BASETYPE_UNKNOWN)) { + printErrorAtLine(newModule, ERR_DEFVAL_ADDED, newLine, name); + return; + } + +#if 0 /* changed base type is reported, anyway. */ + if (oldVal.basetype != newVal.basetype) { + printErrorAtLine(newModule, ERR_DEFVAL_CHANGED, newLine, name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + return; + } +#endif + + if (cmpSmiValues(oldVal, newVal)) { + printErrorAtLine(newModule, ERR_DEFVAL_CHANGED, newLine,name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + } +} + + + +static void +checkNamedNumbers(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiNode *smiNode, + SmiType *oldType, SmiType *newType) +{ + SmiNamedNumber *oldNN, *newNN; + + oldNN = smiGetFirstNamedNumber( oldType ); + newNN = smiGetFirstNamedNumber( newType ); + + while( oldNN || newNN ) { + if( oldNN && !newNN ) { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_REMOVED, newLine, + oldNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, oldNN->name, name); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( !oldNN && newNN ) { + /* check if new byte has been started (bits only) */ + if( newType->basetype == SMI_BASETYPE_BITS ) { + SmiNamedNumber *veryOldNN = NULL, *iterNN; + + /* find largest old named number */ + for( iterNN = smiGetFirstNamedNumber( oldType ); + iterNN; iterNN = smiGetNextNamedNumber( iterNN ) ) { + veryOldNN = iterNN; + } + + if( veryOldNN ) { + /* we assume that we have bits, and the named numbers + of bits are stored in NN->value.value.unsigned32 */ + if( newNN->value.value.unsigned32 / 8 <= + veryOldNN->value.value.unsigned32 / 8 ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_BIT_ADDED_OLD_BYTE, + newLine, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE, + newLine, newNN->name, name ); + } + } + else { + if( smiNode ){ + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, + smiNode->name); + } + else { + printErrorAtLine(newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + } + else { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + } + else { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + newNN = smiGetNextNamedNumber( newNN ); + } + else if( oldNN && newNN ) { + switch( oldType->basetype ) { + case SMI_BASETYPE_BITS: + /* we assume that we have bits, and the named numbers + of bits are stored in NN->value.value.unsigned32 */ + if( oldNN->value.value.unsigned32 < + newNN->value.value.unsigned32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_REMOVED, + newLine, + oldNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, + oldNN->name, name ); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( oldNN->value.value.unsigned32 > + newNN->value.value.unsigned32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name ); + } + newNN = smiGetNextNamedNumber( newNN ); + } + else { + if( strcmp( oldNN->name, newNN->name ) ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_CHANGED, + newLine, + oldNN->name, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_CHANGED, + newLine, + oldNN->name, newNN->name, name ); + } + } + oldNN = smiGetNextNamedNumber( oldNN ); + newNN = smiGetNextNamedNumber( newNN ); + } + break; + case SMI_BASETYPE_ENUM: + /* we assume that we have an enumeration, and the named numbers + of an enumeration are stored in NN->value.value.integer32 */ + if( oldNN->value.value.integer32 < + newNN->value.value.integer32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_REMOVED, + newLine,oldNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, oldNN->name, name ); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( oldNN->value.value.integer32 > + newNN->value.value.integer32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_ADDED, + newLine ,newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name ); + } + newNN = smiGetNextNamedNumber( newNN ); + } + else { + if( strcmp( oldNN->name, newNN->name ) ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_CHANGED, + newLine, oldNN->name, + newNN->name, smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_CHANGED, + newLine, oldNN->name, + newNN->name, name ); + } + } + oldNN = smiGetNextNamedNumber( oldNN ); + newNN = smiGetNextNamedNumber( newNN ); + } + break; + default: + break; + } + } + } +} + + +static void +checkTypeCompatibility(SmiModule *oldModule, SmiNode *oldNode, + SmiType *oldType, + SmiModule *newModule, int newLine, + SmiType *newType) +{ + int oldLine; + char *oldName; + + if ((!oldType) && (!newType)) return; + + if (!oldType) { + if (newType->name) { + printErrorAtLine(newModule, ERR_TYPE_ADDED, + smiGetTypeLine(newType)); + } + return; + } + + if (!newType) { + if (oldType->name) { + printErrorAtLine(oldModule, ERR_TYPE_REMOVED, + smiGetTypeLine(oldType)); + } + return; + } + + if (oldType->basetype != newType->basetype) { + if( newType->name ) { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + smiGetTypeLine(newType), newType->name); + } + else { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + smiGetTypeLine(newType), "implicit type"); + } + if( oldType->name ) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), oldType->name); + } + else { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), "implicit type" ); + } + } + + oldLine = oldNode ? smiGetNodeLine( oldNode ) : smiGetTypeLine( oldType ); + checkNamedNumbers(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine( newType ), + oldType->name, + oldNode, + oldType, + newType); + + oldName = oldNode ? oldNode->name : NULL; + checkRanges(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine( newType ), + oldName, + oldType, + newType); +} + + +static void +checkNodeTypeCompatibility(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + SmiType *oldType, *newType; + + const int oldLine = smiGetNodeLine(oldNode); + const int newLine = smiGetNodeLine(newNode); + + oldType = smiGetNodeType(oldNode); + newType = smiGetNodeType(newNode); + + if ((!oldType) && (!newType)) return; + + if (oldType && newType && oldType->basetype != newType->basetype) { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + newLine, newNode->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, oldNode->name); + return; + } + + checkNamedNumbers(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine(newType), + oldType->name, + oldNode, + oldType, + newType); + checkRanges(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine(newType), + oldNode->name, + oldType, + newType); +} + + +static void +checkTypes(SmiModule *oldModule, SmiNode *oldNode, SmiType *oldType, + SmiModule *newModule, SmiNode *newNode, SmiType *newType) +{ + int code = 0; + + code |= checkName(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + oldType->name, newType->name); + + checkTypeCompatibility(oldModule, oldNode, oldType, + newModule, + newNode ? smiGetNodeLine(newNode) : smiGetTypeLine(newType), + newType); + + checkDefVal(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + oldType->name, + oldType->value, newType->value); + + code |= checkDecl(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->decl, newType->decl); + + if (newType->name) { + code |= checkStatus(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, oldType->status, newType->status); + } + + code |= checkFormat(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->format, newType->format); + + code |= checkUnits(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->units, newType->units); + + code |= checkDescription(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, oldType->decl, + oldType->description, newType->description); + + code |= checkReference(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->reference, newType->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), oldType->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetTypeLine(oldType)); + } +} + + + +static void +diffTypes(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiType *oldType, *newType; + + /* + * First check whether the old type definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for (oldType = smiGetFirstType(oldModule); + oldType; + oldType = smiGetNextType(oldType)) { + + smiInit(newTag); + newType = smiGetType(newModule, oldType->name); + if (newType) { + checkTypes(oldModule, NULL, oldType, + newModule, NULL, newType); + } else { + printErrorAtLine(oldModule, ERR_TYPE_REMOVED, + smiGetTypeLine(oldType), oldType->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newType = smiGetFirstType(newModule); + newType; + newType = smiGetNextType(newType)) { + + smiInit(oldTag); + oldType = smiGetType(oldModule, newType->name); + if (! oldType) { + printErrorAtLine(newModule, ERR_TYPE_ADDED, + smiGetTypeLine(newType), newType->name); + } + smiInit(newTag); + } +} + + + +static int +checkNodekind(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + int code = 0; + + if (oldNode->nodekind != newNode->nodekind) { + printErrorAtLine(newModule, ERR_NODEKIND_CHANGED, + smiGetNodeLine(newNode), newNode->name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static char* +getStringIndexkind( SmiIndexkind indexkind ) +{ + switch( indexkind ) { + case SMI_INDEX_INDEX : return "index"; + case SMI_INDEX_AUGMENT: return "augment"; + case SMI_INDEX_REORDER: return "reorder"; + case SMI_INDEX_SPARSE : return "sparse"; + case SMI_INDEX_EXPAND : return "expand"; + case SMI_INDEX_UNKNOWN: + default: return "unknown"; + } +} + +static char* +getStringIndexList( SmiNode *smiNode ) +{ + SmiNode *indexNode; + SmiElement *smiElement; + char *strIdxLst; + + smiElement = smiGetFirstElement( smiNode ); + indexNode = smiGetElementNode( smiElement ); + strIdxLst = (char *)malloc( strlen( indexNode->name ) + 3); + if( strIdxLst ) { + sprintf( strIdxLst, "`%s'", indexNode->name ); + } + smiElement = smiGetNextElement( smiElement ); + while ( smiElement ) { + indexNode = smiGetElementNode( smiElement ); + strIdxLst = (char *)realloc( strIdxLst, + strlen( strIdxLst ) + + strlen( indexNode->name ) + 4 ); + sprintf( strIdxLst, "%s, `%s'", strIdxLst, indexNode->name ); + smiElement = smiGetNextElement( smiElement ); + } + return strIdxLst; +} + +static void +checkIndex(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + if (newNode->indexkind == SMI_INDEX_UNKNOWN + && oldNode->indexkind == SMI_INDEX_UNKNOWN) { + return; + } + + if( newNode->indexkind != oldNode->indexkind) { + printf( "%s\n", newModule->name ); + printErrorAtLine( newModule, ERR_INDEXKIND_CHANGED, + smiGetNodeLine( oldNode ), + getStringIndexkind( oldNode->indexkind ), + getStringIndexkind( newNode->indexkind ), + newNode->name ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( newNode ), oldNode->name ); + + } + + switch (newNode->indexkind) { + SmiElement *oldElement, *newElement; + SmiNode *oldRelNode, *newRelNode; + int i; + + case SMI_INDEX_INDEX: + /* compare OIDs of all index elements */ + oldElement = smiGetFirstElement( oldNode ); + newElement = smiGetFirstElement( newNode ); + while( oldElement && newElement ) { + SmiNode *oldIndexNode, *newIndexNode; + + oldIndexNode = smiGetElementNode( oldElement ); + newIndexNode = smiGetElementNode( newElement ); + + if( oldIndexNode->oidlen != newIndexNode->oidlen ) { + char *oldIdxLst, *newIdxLst; + oldIdxLst = getStringIndexList( oldNode ); + newIdxLst = getStringIndexList( newNode ); + printErrorAtLine( newModule, ERR_INDEX_CHANGED, + smiGetNodeLine( newNode ), oldNode->name, + oldIdxLst, newIdxLst); + free( oldIdxLst ); + free( newIdxLst ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + return; + } + + for( i = 0; i < oldIndexNode->oidlen; i++ ) { + if( oldIndexNode->oid[i] != newIndexNode->oid[i] ) { + char *oldIdxLst, *newIdxLst; + oldIdxLst = getStringIndexList( oldNode ); + newIdxLst = getStringIndexList( newNode ); + printErrorAtLine( newModule, ERR_INDEX_CHANGED, + smiGetNodeLine( newNode ), + oldNode->name, + oldIdxLst, newIdxLst); + free( oldIdxLst ); + free( newIdxLst ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), + oldNode->name ); + return; + } + } + oldElement = smiGetNextElement( oldElement ); + newElement = smiGetNextElement( newElement ); + } + break; + + case SMI_INDEX_AUGMENT: + /* compare OIDs of related nodes */ + oldRelNode = smiGetRelatedNode( oldNode ); + newRelNode = smiGetRelatedNode( newNode ); + + if( !oldRelNode || !newRelNode ) { + /* should not occur */ + return; + } + if( oldRelNode->oidlen != newRelNode->oidlen ) { + printErrorAtLine( newModule, ERR_INDEX_AUGMENT_CHANGED, + smiGetNodeLine( newNode ), oldNode->name, + oldRelNode->name, newRelNode->name); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + return; + } + for( i = 0; i < oldRelNode->oidlen; i++ ) { + if( oldRelNode->oid[i] != newRelNode->oid[i] ) { + printErrorAtLine( newModule, ERR_INDEX_AUGMENT_CHANGED, + smiGetNodeLine( newNode ), + oldNode->name, + oldRelNode->name, newRelNode->name); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + } + } + break; + + case SMI_INDEX_UNKNOWN: + return; + + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + /* xxx do things for SMI-NG */ + break; + } +} + + +static void +checkObject(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + int code = 0; + SmiType *oldType, *newType; + + const int oldLine = smiGetNodeLine(oldNode); + const int newLine = smiGetNodeLine(newNode); + + oldType = smiGetNodeType(oldNode); + newType = smiGetNodeType(newNode); + + code |= checkName(oldModule, oldLine, newModule, newLine, + oldNode->name, newNode->name); + + if (oldType && newType) { + if (oldType->name && !newType->name) { + printErrorAtLine(newModule, ERR_TO_IMPLICIT, + smiGetNodeLine(newNode), + newNode->name, oldType->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } else if (!oldType->name && newType->name) { + printErrorAtLine(newModule, ERR_FROM_IMPLICIT, + smiGetNodeLine(newNode), + newType->name, oldNode->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + } + + checkNodeTypeCompatibility(oldModule, oldNode, + newModule, newNode); + + code |= checkDecl(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->status, newNode->status); + + code |= checkAccess(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->access, newNode->access); + + code |= checkNodekind(oldModule, oldNode, newModule, newNode); + + checkIndex(oldModule, oldNode, newModule, newNode); + + + checkDefVal(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->value, newNode->value); + + code |= checkFormat(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->format, newNode->format); + + code |= checkUnits(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->units, newNode->units); + + code |= checkDescription(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, oldLine, newModule, newLine, + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffObjects(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, nodekinds); + oldNode; + oldNode = smiGetNextNode(oldNode, nodekinds)) { + + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkObject(oldModule, oldNode, newModule, newNode); + } else { + switch (oldNode->nodekind) { + case SMI_NODEKIND_NODE: + case SMI_NODEKIND_TABLE: + case SMI_NODEKIND_ROW: + case SMI_NODEKIND_COLUMN: + case SMI_NODEKIND_SCALAR: + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, nodekinds); + newNode; + newNode = smiGetNextNode(newNode, nodekinds)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static int +checkObjects(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + int code = 0; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + printErrorAtLine(oldModule, ERR_OBJECT_REMOVED, + smiGetNodeLine(oldNode), oldNode->name); + code |= CODE_SHOW_PREVIOUS; + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + printErrorAtLine(newModule, ERR_OBJECT_ADDED, + smiGetNodeLine(newNode), newNode->name); + } + smiInit(newTag); + } + + return code; +} + + + +static void +checkNotification(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkObjects(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffNotifications(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_NOTIFICATION); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_NOTIFICATION)) { + + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkNotification(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_NOTIFICATION); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_NOTIFICATION)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static int +checkOrganization(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldOrga, char *newOrga) +{ + int code = 0; + + if (! oldOrga && newOrga) { + printErrorAtLine(newModule, ERR_ORGA_ADDED, + newLine, name); + } + + if (oldOrga && !newOrga) { + printErrorAtLine(oldModule, ERR_ORGA_REMOVED, + oldLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldOrga && newOrga && diffStrings(oldOrga, newOrga)) { + printErrorAtLine(newModule, ERR_ORGA_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkContact(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldContact, char *newContact) +{ + int code = 0; + + if (! oldContact && newContact) { + printErrorAtLine(newModule, ERR_CONTACT_ADDED, + newLine, name); + } + + if (oldContact && !newContact) { + printErrorAtLine(oldModule, ERR_CONTACT_REMOVED, + oldLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldContact && newContact && diffStrings(oldContact, newContact)) { + printErrorAtLine(newModule, ERR_CONTACT_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static void +diffModules(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldIdentityNode, *newIdentityNode; + SmiRevision *oldRev, *newRev; + int oldLine = -1, newLine = -1; + int code = 0; + + if (oldModule->language != newModule->language) { + printErrorAtLine(newModule, ERR_SMIVERSION_CHANGED, -1); + } + + oldIdentityNode = smiGetModuleIdentityNode(oldModule); + if (oldIdentityNode) { + oldLine = smiGetNodeLine(oldIdentityNode); + } + newIdentityNode = smiGetModuleIdentityNode(newModule); + if (newIdentityNode) { + newLine = smiGetNodeLine(newIdentityNode); + } + + code |= checkOrganization(oldModule, oldLine, + newModule, newLine, + newModule->name, + oldModule->organization, newModule->organization); + + code |= checkContact(oldModule, oldLine, newModule, newLine, + newModule->name, + oldModule->contactinfo, newModule->contactinfo); + + code |= checkDescription(oldModule, oldLine, + newModule, newLine, + newModule->name, SMI_DECL_MODULEIDENTITY, + oldModule->description, newModule->description); + + code |= checkReference(oldModule, oldLine, newModule, newLine, newModule->name, + oldModule->reference, newModule->reference); + + /* + * First check whether the old revisions still exist and + * whether there are any updates. + */ + + smiInit(oldTag); + for (oldRev = smiGetFirstRevision(oldModule); + oldRev; oldRev = smiGetNextRevision(oldRev)) { + smiInit(newTag); + for (newRev = smiGetFirstRevision(newModule); + newRev; newRev = smiGetNextRevision(newRev)) { + if (oldRev->date == newRev->date) { + break; + } + } + if (newRev) { + if ((diffStrings(oldRev->description, newRev->description)) && + diffStrings( + "[Revision added by libsmi due to a LAST-UPDATED clause.]", + oldRev->description)) { + printErrorAtLine(newModule, ERR_REVISION_CHANGED, + smiGetRevisionLine(newRev), + getStringTime(newRev->date)); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetRevisionLine(oldRev), + getStringTime(oldRev->date)); + } + } else { + printErrorAtLine(oldModule, ERR_REVISION_REMOVED, + smiGetRevisionLine(oldRev), + getStringTime(oldRev->date)); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new revisions. + */ + + smiInit(newTag); + for (newRev = smiGetFirstRevision(newModule); + newRev; newRev = smiGetNextRevision(newRev)) { + smiInit(oldTag); + for (oldRev = smiGetFirstRevision(oldModule); + oldRev; oldRev = smiGetNextRevision(oldRev)) { + if (oldRev->date == newRev->date) { + break; + } + } + if (!oldRev) { + printErrorAtLine(newModule, ERR_REVISION_ADDED, + smiGetRevisionLine(newRev), + getStringTime(newRev->date)); + } + smiInit(newTag); + } + + if (code & CODE_SHOW_PREVIOUS && oldLine >= 0) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, oldModule->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + oldLine); + } +} + + + +static void +checkMember(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + printErrorAtLine(oldModule, ERR_MEMBER_REMOVED, + smiGetNodeLine(oldNode), + oldElemNode->name, oldNode->name); + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + printErrorAtLine(newModule, ERR_MEMBER_ADDED, + smiGetNodeLine(newNode), + newElemNode->name, newNode->name); + } + smiInit(newTag); + } +} + + + +static void +checkGroup(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code = checkName(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + oldNode->name, newNode->name); + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + checkMember(oldModule, oldTag, newModule, newTag, oldNode, newNode); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffGroups(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_GROUP); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_GROUP)) { + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkGroup(oldModule, oldTag, newModule, newTag, oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_GROUP); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_GROUP)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static void +checkComplMandatory(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + if (strcmp(smiGetNodeModule(oldElemNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_MANDATORY_EXT_GROUP_REMOVED, + smiGetNodeLine(oldNode), + oldModule->name, oldElemNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_MANDATORY_GROUP_REMOVED, + smiGetNodeLine(oldNode), + oldElemNode->name, + oldNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + if (strcmp(smiGetNodeModule(newElemNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_MANDATORY_EXT_GROUP_ADDED, + smiGetNodeLine(newNode), + newModule->name, newElemNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_MANDATORY_GROUP_ADDED, + smiGetNodeLine(newNode), + newElemNode->name, newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkComplOptions(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code; + SmiOption *oldOption, *newOption; + SmiNode *oldOptionNode, *newOptionNode; + + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldNode); + oldOption; oldOption = smiGetNextOption(oldOption)) { + oldOptionNode = smiGetOptionNode(oldOption); + smiInit(newTag); + for (newOption = smiGetFirstOption(newNode); + newOption; newOption = smiGetNextOption(newOption)) { + newOptionNode = smiGetOptionNode(newOption); + if (strcmp(oldOptionNode->name, newOptionNode->name) == 0) { + break; + } + } + if (! newOption) { + if (strcmp(smiGetNodeModule(oldOptionNode)->name, + oldModule->name)) { + printErrorAtLine(oldModule, ERR_EXT_OPTION_REMOVED, + smiGetOptionLine(oldOption), + oldModule->name, oldOptionNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_OPTION_REMOVED, + smiGetOptionLine(oldOption), + oldOptionNode->name, + oldNode->name); + } + } else { + code = 0; + code |= checkDescription(oldModule, smiGetOptionLine(oldOption), + newModule, smiGetOptionLine(newOption), + newOptionNode->name, SMI_DECL_COMPL_GROUP, + oldOption->description, + newOption->description); + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetOptionLine(oldOption), + oldOptionNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newOption = smiGetFirstOption(newNode); + newOption; newOption = smiGetNextOption(newOption)) { + newOptionNode = smiGetOptionNode(newOption); + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldNode); + oldOption; oldOption = smiGetNextOption(oldOption)) { + oldOptionNode = smiGetOptionNode(oldOption); + if (strcmp(oldOptionNode->name, newOptionNode->name) == 0) { + break; + } + } + if (! oldOption) { + if (strcmp(smiGetNodeModule(newOptionNode)->name, + newModule->name)) { + printErrorAtLine(newModule, ERR_EXT_OPTION_ADDED, + smiGetOptionLine(newOption), + newModule->name, newOptionNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_OPTION_ADDED, + smiGetOptionLine(newOption), + newOptionNode->name, + newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkComplRefinements(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code; + SmiRefinement *oldRefinement, *newRefinement; + SmiNode *oldRefinementNode, *newRefinementNode; + + smiInit(oldTag); + for (oldRefinement = smiGetFirstRefinement(oldNode); + oldRefinement; oldRefinement = smiGetNextRefinement(oldRefinement)) { + oldRefinementNode = smiGetRefinementNode(oldRefinement); + smiInit(newTag); + for (newRefinement = smiGetFirstRefinement(newNode); + newRefinement; newRefinement = smiGetNextRefinement(newRefinement)) { + newRefinementNode = smiGetRefinementNode(newRefinement); + if (strcmp(oldRefinementNode->name, newRefinementNode->name) == 0) { + break; + } + } + if (! newRefinement) { + if (strcmp(smiGetNodeModule(oldRefinementNode)->name, + oldModule->name)) { + printErrorAtLine(oldModule, ERR_EXT_REFINEMENT_REMOVED, + smiGetRefinementLine(oldRefinement), + oldModule->name, oldRefinementNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_REFINEMENT_REMOVED, + smiGetRefinementLine(oldRefinement), + oldRefinementNode->name, + oldNode->name); + } + } else { + code = 0; + code |= checkDescription(oldModule, smiGetRefinementLine(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + newRefinementNode->name, + SMI_DECL_COMPL_OBJECT, + oldRefinement->description, + newRefinement->description); + + code |= checkAccess(oldModule, + smiGetRefinementLine(oldRefinement), + newModule, + smiGetRefinementLine(newRefinement), + newRefinementNode->name, + oldRefinement->access, newRefinement->access); + + checkTypeCompatibility(oldModule, oldRefinementNode, + smiGetRefinementType(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + smiGetRefinementType(newRefinement)); + + checkTypeCompatibility(oldModule, oldRefinementNode, + smiGetRefinementWriteType(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + smiGetRefinementWriteType(newRefinement)); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetRefinementLine(oldRefinement), + oldRefinementNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newRefinement = smiGetFirstRefinement(newNode); + newRefinement; newRefinement = smiGetNextRefinement(newRefinement)) { + newRefinementNode = smiGetRefinementNode(newRefinement); + smiInit(oldTag); + for (oldRefinement = smiGetFirstRefinement(oldNode); + oldRefinement; oldRefinement = smiGetNextRefinement(oldRefinement)) { + oldRefinementNode = smiGetRefinementNode(oldRefinement); + if (strcmp(oldRefinementNode->name, newRefinementNode->name) == 0) { + break; + } + } + if (! oldRefinement) { + if (strcmp(smiGetNodeModule(newRefinementNode)->name, + newModule->name)) { + printErrorAtLine(newModule, ERR_EXT_REFINEMENT_ADDED, + smiGetRefinementLine(newRefinement), + newModule->name, newRefinementNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_REFINEMENT_ADDED, + smiGetRefinementLine(newRefinement), + newRefinementNode->name, + newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkCompliance(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code = checkName(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + oldNode->name, newNode->name); + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } + + checkComplMandatory(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + checkComplOptions(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + checkComplRefinements(oldModule, oldTag, newModule, newTag, + oldNode, newNode); +} + + + +static void +diffCompliances(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_COMPLIANCE); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_COMPLIANCE)) { + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkCompliance(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_COMPLIANCE); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_COMPLIANCE)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static SmiNode* +findGroupElement(SmiNode *groupNode, const char *name) +{ + SmiElement *smiElement = NULL; + SmiNode *smiNode = NULL; + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (strcmp(smiNode->name, name) == 0) { + return smiNode; + } + } + return NULL; +} + + +static SmiNode* +findGroupsElement(SmiNode *groupNode, const char *name) +{ + SmiElement *smiElement = NULL; + SmiNode *smiNode = NULL, *foundNode; + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + foundNode = findGroupElement(smiNode, name); + if (foundNode) { + return foundNode; + } + } + return NULL; +} + + + +static void +diffOldNewComplianceMandatory(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldComplNode, SmiNode *newComplNode) +{ + SmiElement *oldGroupElement, *newGroupElement, *oldElement, *newElement; + SmiNode *oldGroupNode, *newGroupNode, *oldNode, *newNode; + + smiInit(oldTag); + for (oldGroupElement = smiGetFirstElement(oldComplNode); + oldGroupElement; + oldGroupElement = smiGetNextElement(oldGroupElement)) { + oldGroupNode = smiGetElementNode(oldGroupElement); + for (oldElement = smiGetFirstElement(oldGroupNode); + oldElement; + oldElement = smiGetNextElement(oldElement)) { + oldNode = smiGetElementNode(oldElement); + smiInit(newTag); + newNode = findGroupsElement(newComplNode, oldNode->name); + if (! newNode) { + if (strcmp(smiGetNodeModule(oldNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_MANDATORY_EXT_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldModule->name, oldNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(oldModule, ERR_MANDATORY_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(oldTag); + } + } + + smiInit(newTag); + for (newGroupElement = smiGetFirstElement(newComplNode); + newGroupElement; + newGroupElement = smiGetNextElement(newGroupElement)) { + newGroupNode = smiGetElementNode(newGroupElement); + for (newElement = smiGetFirstElement(newGroupNode); + newElement; + newElement = smiGetNextElement(newElement)) { + newNode = smiGetElementNode(newElement); + smiInit(oldTag); + oldNode = findGroupsElement(oldComplNode, newNode->name); + if (! oldNode) { + if (strcmp(smiGetNodeModule(newNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_MANDATORY_EXT_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newModule->name, newNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(newModule, ERR_MANDATORY_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(newTag); + } + } +} + + + +static void +diffOldNewComplianceOptional(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldComplNode, SmiNode *newComplNode) +{ + SmiElement *oldElement, *newElement; + SmiOption *oldOption, *newOption; + SmiNode *oldGroupNode, *newGroupNode, *oldNode, *newNode; + + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldComplNode); + oldOption; + oldOption = smiGetNextOption(oldOption)) { + oldGroupNode = smiGetOptionNode(oldOption); + for (oldElement = smiGetFirstElement(oldGroupNode); + oldElement; + oldElement = smiGetNextElement(oldElement)) { + oldNode = smiGetElementNode(oldElement); + smiInit(newTag); + newNode = findGroupsElement(newComplNode, oldNode->name); + if (! newNode) { + if (strcmp(smiGetNodeModule(oldNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_OPTIONAL_EXT_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldModule->name, oldNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(oldModule, ERR_OPTIONAL_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name, + oldComplNode->name, + newComplNode->name); + } + } else { + /* xxx compare group condition description here? xxx */ + } + smiInit(oldTag); + } + } + + smiInit(newTag); + for (newOption = smiGetFirstOption(newComplNode); + newOption; + newOption = smiGetNextOption(newOption)) { + newGroupNode = smiGetOptionNode(newOption); + for (newElement = smiGetFirstElement(newGroupNode); + newElement; + newElement = smiGetNextElement(newElement)) { + newNode = smiGetElementNode(newElement); + smiInit(oldTag); + oldNode = findGroupsElement(oldComplNode, newNode->name); + if (! oldNode) { + if (strcmp(smiGetNodeModule(newNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_OPTIONAL_EXT_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newModule->name, newNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(newModule, ERR_OPTIONAL_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(newTag); + } + } +} + + + +static void +diffOldNewCompliance(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + const char *oldCompl, const char *newCompl) +{ + SmiNode *smiNode; + SmiNode *oldComplNode = NULL, *newComplNode = NULL; + + for (smiNode = smiGetFirstNode(oldModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if (strcmp(smiNode->name, oldCompl) == 0) { + oldComplNode = smiNode; + } + } + + if (! oldComplNode) { + fprintf(stderr, "smidiff: unable to find old compliance `%s'\n", + oldCompl); + } + + for (smiNode = smiGetFirstNode(newModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if (strcmp(smiNode->name, newCompl) == 0) { + newComplNode = smiNode; + } + } + + if (! newComplNode) { + fprintf(stderr, "smidiff: unable to find new compliance `%s'\n", + newCompl); + } + + if (!oldComplNode || !newComplNode) { + return; + } + + diffOldNewComplianceMandatory(oldModule, oldTag, + newModule, newTag, + oldComplNode, newComplNode); + diffOldNewComplianceOptional(oldModule, oldTag, + newModule, newTag, + oldComplNode, newComplNode); +} + + + +static void +usage() +{ + fprintf(stderr, + "Usage: smidiff [options] oldmodule newmodule\n" + " -V, --version show version and license information\n" + " -c, --config=file load a specific configuration file\n" + " -h, --help show usage information\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -m, --error-names print the name of errors in braces\n" + " -p, --preload=module preload \n" + " -s, --severity print the severity of errors in brackets\n" + " --old-compliance=name name of the old compliance statement\n" + " --new-compliance=name name of the new compliance statement\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smidiff " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smidiff"); } +static void level(int lev) { errorLevel = lev; } +static void ignore(char *ign) +{ + smiSetSeverity(ign, 9999); /* libsmi error messages */ + setErrorSeverity(ign, 9999); /* smidiff error messages */ +} + +static void preload(char *module) { + smiInit(oldTag); + smiLoadModule(module); + smiInit(newTag); + smiLoadModule(module); +} + + +int +main(int argc, char *argv[]) +{ + SmiModule *oldModule, *newModule; + int flags; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 0, "old-compliance", OPT_STRING, &oldCompl, 0 }, + { 0, "new-compliance", OPT_STRING, &newCompl, 0 }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + smiInit(oldTag); + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + smiSetFlags(flags); + smiSetErrorLevel(errorLevel); + + smiInit(newTag); + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + smiSetFlags(flags); + smiSetErrorLevel(errorLevel); + + optParseOptions(&argc, argv, opt, 0); + + if (argc != 3) { + usage(); + return 1; + } + + if (oldCompl && !newCompl) { + fprintf(stderr, "smidiff: missing new compliance statement name\n"); + return 1; + } + + if (!oldCompl && newCompl) { + fprintf(stderr, "smidiff: missing old compliance statement name\n"); + return 1; + } + + smiInit(oldTag); + smiSetErrorLevel(errorLevel); + oldModule = smiGetModule(smiLoadModule(argv[1])); + if (! oldModule) { + fprintf(stderr, "smidiff: cannot locate module `%s'\n", argv[1]); + smiExit(); + exit(1); + } + + smiInit(newTag); + smiSetErrorLevel(errorLevel); + newModule = smiGetModule(smiLoadModule(argv[2])); + if (! newModule) { + fprintf(stderr, "smidiff: cannot locate module `%s'\n", argv[2]); + smiExit(); + smiInit(oldTag); + smiExit(); + exit(2); + } + + if (oldCompl && newCompl) { + diffOldNewCompliance(oldModule, oldTag, newModule, newTag, + oldCompl, newCompl); + } else { + diffModules(oldModule, oldTag, newModule, newTag); + diffTypes(oldModule, oldTag, newModule, newTag); + diffObjects(oldModule, oldTag, newModule, newTag); + diffNotifications(oldModule, oldTag, newModule, newTag); + diffGroups(oldModule, oldTag, newModule, newTag); + diffCompliances(oldModule, oldTag, newModule, newTag); + } + + smiInit(oldTag); + smiExit(); + + smiInit(newTag); + smiExit(); + + if (fflush(stdout) || ferror(stdout)) { + perror("smidiff: write error"); + exit(1); + } + + return 0; +} diff --git a/tools/smidump.1 b/tools/smidump.1 new file mode 100644 index 0000000..08656d9 --- /dev/null +++ b/tools/smidump.1 @@ -0,0 +1,194 @@ +.\" +.\" $Id: smidump.1.in 7608 2008-01-22 13:05:41Z schoenw $ +.\" +.TH smidump 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidump \- dump SMI or SPPI modules in various formats +.SH SYNOPSIS +.B smidump +[ +.B "-Vhqusmk" +] [ +.BI "-c " file +] [ +.BI "-o " name +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-f " format +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmidump\fP program is used to dump the contents of a single MIB +or PIB +module or a collection of modules to stdout in a selectable output +format. This format may be a simple tree of nodes, types or imported +modules, but also a format fully compliant to SMIv1, SMIv2, SPPI or SMIng or +CORBA IDL or C source code. Smidump can thus be used to convert +modules from SMIv2 to SMIng and from SMIng to SMIv2, or to develop +template based agent code. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text contains a list of all +supported output formats. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-f \fIformat\fB, --format=\fIformat\fP +Use \fIformat\fP when dumping a module. Supported output formats are described +below. The default output format is SMIng. The \fIformat\fP argument is +case insensitive. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-o \fIname\fB, --output=\fIname\fB +Write the output in one or multiple files instead of stdout. The file +name(s) are derived from the \fIname\fP argument. Not all format +support this option. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main module(s). This may +be helpful if an incomplete main module misses to import some definitions. +.TP +\fB-q, --quiet\fP +Suppress comments from dumped modules. What kind of information +gets suppressed depends on the output format. +.TP +\fB-u, --unified\fP +Dump a unified output in case of multiple \fImodule(s)\fP instead of +multiple concatenated output sections. This is not supported for all +output formats. +.TP +\fB-k, --keep-going\fP +Continue as much as possible after serious parse errors. Note that +the output generated after serious parse errors may be incomplete +and should be used with care. +.TP +.I module(s) +These are the module(s) to be dumped. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "OUTPUT FORMATS" +The \fBsmidump\fP program supports the following output formats: +.TP 12 +sming +SMIng compliant format as defined in the SMIng Internet-Draft. +.TP +smiv2 +SMIv2 compliant format as defined in RFC 2578, RFC 2579, RFC 2580. +.TP +smiv1 +SMIv2 compliant format as defined in RFC 1155, RFC 1212, RFC 1215. +.TP +sppi +SPPI compliant format as defined in RFC 3159. If the underlying module +is not SPPI, there might be some mandatory information missing. +.TP +mosy +Format generated by the mosy compiler. +.TP +imports +Import hierarchy of a module. +.TP +types +Types defined in a module. +.TP +tree +OID registration tree structure of a module. +.TP +metrics +Metrics derived from a module (experimental). +.TP +identifiers +List of identifiers defined in a module. +.TP +compliances +Compliance definitions with all included objects and notifications. +.TP +corba +CORBA IDL and OID definitions following the JIDM specification translation +rules. +.TP +netsnmp +C source code files for usage within the net-snmp package (experimental). +.TP +scli +ANSI C manager stubs for usage within the scli package (experimental). +.TP +cm +Reverse engineered conceptual model in DIA XML file format (experimental). +.TP +svg +SVG diagram of a module (experimental). Use with \fB-u\fP when dumping multiple \fImodules\fP. +.TP +jax +Java AgentX sub-agent classes in separate files (experimental). +.TP +perl +Perl represention of the MIB module +(contributed by Martin Schulz ). +.TP +python +Python dictionaries represention of the MIB module +(contributed by Pat Knight ). +.TP +xml +SMI in XML format (experimental). +.TP +xsd +SMI in XML schema format (experimental). +.TP +sizes +SNMP best case / worst case RFC 3416 PDU sizes for typical PDUs +excluding SNMP message and transport headers (experimental). + +.SH "EXAMPLE" +This example converts the SMIv2 module IF-MIB in the current directory +to IF-MIB.sming in SMIng format. Note that the ./ prefix is used to +ensure reading the module from the current directory and not from a +place that libsmi guesses on its own. +.nf + + $ smidump -f sming ./IF-MIB > IF-MIB.sming +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidump.1.in b/tools/smidump.1.in new file mode 100644 index 0000000..08656d9 --- /dev/null +++ b/tools/smidump.1.in @@ -0,0 +1,194 @@ +.\" +.\" $Id: smidump.1.in 7608 2008-01-22 13:05:41Z schoenw $ +.\" +.TH smidump 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidump \- dump SMI or SPPI modules in various formats +.SH SYNOPSIS +.B smidump +[ +.B "-Vhqusmk" +] [ +.BI "-c " file +] [ +.BI "-o " name +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-f " format +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmidump\fP program is used to dump the contents of a single MIB +or PIB +module or a collection of modules to stdout in a selectable output +format. This format may be a simple tree of nodes, types or imported +modules, but also a format fully compliant to SMIv1, SMIv2, SPPI or SMIng or +CORBA IDL or C source code. Smidump can thus be used to convert +modules from SMIv2 to SMIng and from SMIng to SMIv2, or to develop +template based agent code. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text contains a list of all +supported output formats. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-f \fIformat\fB, --format=\fIformat\fP +Use \fIformat\fP when dumping a module. Supported output formats are described +below. The default output format is SMIng. The \fIformat\fP argument is +case insensitive. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-o \fIname\fB, --output=\fIname\fB +Write the output in one or multiple files instead of stdout. The file +name(s) are derived from the \fIname\fP argument. Not all format +support this option. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main module(s). This may +be helpful if an incomplete main module misses to import some definitions. +.TP +\fB-q, --quiet\fP +Suppress comments from dumped modules. What kind of information +gets suppressed depends on the output format. +.TP +\fB-u, --unified\fP +Dump a unified output in case of multiple \fImodule(s)\fP instead of +multiple concatenated output sections. This is not supported for all +output formats. +.TP +\fB-k, --keep-going\fP +Continue as much as possible after serious parse errors. Note that +the output generated after serious parse errors may be incomplete +and should be used with care. +.TP +.I module(s) +These are the module(s) to be dumped. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "OUTPUT FORMATS" +The \fBsmidump\fP program supports the following output formats: +.TP 12 +sming +SMIng compliant format as defined in the SMIng Internet-Draft. +.TP +smiv2 +SMIv2 compliant format as defined in RFC 2578, RFC 2579, RFC 2580. +.TP +smiv1 +SMIv2 compliant format as defined in RFC 1155, RFC 1212, RFC 1215. +.TP +sppi +SPPI compliant format as defined in RFC 3159. If the underlying module +is not SPPI, there might be some mandatory information missing. +.TP +mosy +Format generated by the mosy compiler. +.TP +imports +Import hierarchy of a module. +.TP +types +Types defined in a module. +.TP +tree +OID registration tree structure of a module. +.TP +metrics +Metrics derived from a module (experimental). +.TP +identifiers +List of identifiers defined in a module. +.TP +compliances +Compliance definitions with all included objects and notifications. +.TP +corba +CORBA IDL and OID definitions following the JIDM specification translation +rules. +.TP +netsnmp +C source code files for usage within the net-snmp package (experimental). +.TP +scli +ANSI C manager stubs for usage within the scli package (experimental). +.TP +cm +Reverse engineered conceptual model in DIA XML file format (experimental). +.TP +svg +SVG diagram of a module (experimental). Use with \fB-u\fP when dumping multiple \fImodules\fP. +.TP +jax +Java AgentX sub-agent classes in separate files (experimental). +.TP +perl +Perl represention of the MIB module +(contributed by Martin Schulz ). +.TP +python +Python dictionaries represention of the MIB module +(contributed by Pat Knight ). +.TP +xml +SMI in XML format (experimental). +.TP +xsd +SMI in XML schema format (experimental). +.TP +sizes +SNMP best case / worst case RFC 3416 PDU sizes for typical PDUs +excluding SNMP message and transport headers (experimental). + +.SH "EXAMPLE" +This example converts the SMIv2 module IF-MIB in the current directory +to IF-MIB.sming in SMIng format. Note that the ./ prefix is used to +ensure reading the module from the current directory and not from a +place that libsmi guesses on its own. +.nf + + $ smidump -f sming ./IF-MIB > IF-MIB.sming +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidump.c b/tools/smidump.c new file mode 100644 index 0000000..154144f --- /dev/null +++ b/tools/smidump.c @@ -0,0 +1,433 @@ +/* + * smidump.c -- + * + * Dump a MIB module conforming to a given format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidump.c 7870 2008-03-11 19:29:58Z schoenw $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" +#include "smidump.h" + + + +static void help(void); +static void usage(void); +static void version(void); +static void config(char *filename); +static void level(int lev); +static void quiet(void); +static void preload(char *module); +static void unified(void); +static void format(char *form); + + +static int flags; +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static int kFlag = 0; /* keep going after severe errors */ +static SmidumpDriver *driver; +static SmidumpDriver *firstDriver; +static SmidumpDriver *lastDriver; +static SmidumpDriver *defaultDriver; +static char *output; + +static int opts; +static optStruct *opt; +static optStruct genericOpt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'q', "quiet", OPT_FLAG, quiet, OPT_CALLFUNC }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'u', "unified", OPT_FLAG, unified, OPT_CALLFUNC }, + { 'f', "format", OPT_STRING, format, OPT_CALLFUNC }, + { 'o', "output", OPT_STRING, &output, 0 }, + { 'k', "keep-going", OPT_FLAG, &kFlag, 0 }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ +}; + + + +void *xmalloc(size_t size) +{ + char *m = malloc(size); + if (! m) { + fprintf(stderr, "smidump: malloc failed - running out of memory\n"); + exit(1); + } + + return m; +} + + + +void *xrealloc(void *ptr, size_t size) +{ + char *m = realloc(ptr, size); + if (! m) { + fprintf(stderr, "smidump: realloc failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +void *xcalloc(size_t nmemb, size_t size) +{ + char *m = calloc(nmemb, size); + if (! m) { + fprintf(stderr, "smidump: calloc failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +char *xstrdup(const char *s) +{ + char *m = strdup(s); + if (! m) { + fprintf(stderr, "smidump: strdup failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +void xfree(void *ptr) +{ + free(ptr); +} + + + +void smidumpRegisterDriver(SmidumpDriver *driver) +{ + int i; + + if (!firstDriver) { + firstDriver = driver; + lastDriver = driver; + } else { + lastDriver->next = driver; + lastDriver = driver; + } + + for (i = 0; driver->opt && driver->opt[i].type != OPT_END; i++) { + opt = xrealloc(opt, (opts+1) * sizeof(optStruct)); + memcpy(&opt[opts], &opt[opts-1], sizeof(optStruct)); + opt[opts-1].shortName = 0; + opt[opts-1].longName = xmalloc(strlen(driver->name) + + strlen(driver->opt[i].name) + 2); + sprintf(opt[opts-1].longName, "%s-%s", + driver->name, driver->opt[i].name); + opt[opts-1].type = driver->opt[i].type; + opt[opts-1].arg = driver->opt[i].arg; + opt[opts-1].flags = driver->opt[i].flags; + opts++; + } +} + + + +static void formats() +{ + SmidumpDriver *driver = firstDriver; + + for (driver = firstDriver; driver; driver = driver->next) { + fprintf(stderr, " %-14s: %s\n", driver->name, + driver->descr ? driver->descr : "..."); + } +} + + + +static void usage() +{ + int i; + SmidumpDriver *driver; + char *value = NULL; +#ifdef _MSC_VER + #if _MSC_VER >= 1400 +/* + %n in printf is a security vulnerability. Ref: + http://en.wikipedia.org/wiki/Format_string_vulnerabilities + MS decided it was important enough to disble it by default. Ref: + "ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/77a854ae-5b48-4865-89f4-f2dc5cf80f52.htm + Calling _set_printf_count_output() stops an invalid parameter crash. +*/ + int printf_state; + #endif +#endif + + fprintf(stderr, + "Usage: smidump [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -q, --quiet do not generate any comments\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -l, --level=level set maximum level of errors and warnings\n" + " -m, --error-names print the name of errors in braces\n" + " -s, --severity print the severity of errors in brackets\n" + " -f, --format=format use when dumping (default %s)\n" + " -o, --output=name use when creating names for output files\n" + " -u, --unified print a single unified output of all modules\n" + " -k, --keep-going continue after serious parse errors\n\n", + defaultDriver ? defaultDriver->name : "none"); + + fprintf(stderr, "Supported formats are:\n"); + formats(); + + for (driver = firstDriver; driver; driver = driver->next) { + if (! driver->opt) continue; + fprintf(stderr, "\nSpecific option for the \"%s\" format:\n", + driver->name); + for (i = 0; driver->opt && driver->opt[i].type != OPT_END; i++) { + int n; + switch (driver->opt[i].type) { + case OPT_END: + case OPT_FLAG: + value = NULL; + break; + case OPT_STRING: + value = "string"; + break; + case OPT_INT: + case OPT_UINT: + case OPT_LONG: + case OPT_ULONG: + value = "number"; + break; + } +#ifdef _MSC_VER + #if _MSC_VER >= 1400 + printf_state=_set_printf_count_output(1); + #endif +#endif + fprintf(stderr, " --%s-%s%s%s%n", + driver->name, driver->opt[i].name, + value ? "=" : "", + value ? value : "", + &n); +#ifdef _MSC_VER + #if _MSC_VER >= 1400 + (void)_set_printf_count_output(printf_state); + #endif +#endif + fprintf(stderr, "%*s%s\n", + 30-n, "", + driver->opt[i].descr ? driver->opt[i].descr : "..."); + } + } +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smidump " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smidump"); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void quiet() { flags |= SMIDUMP_FLAG_SILENT; } +static void preload(char *module) { smiLoadModule(module); } +static void unified() { flags |= SMIDUMP_FLAG_UNITE; } + +static void format(char *form) +{ + for (driver = firstDriver; driver; driver = driver->next) { + if (strcasecmp(driver->name, form) == 0) { + break; + } + } + if (!driver) { + fprintf(stderr, "smidump: invalid dump format `%s'" + " - supported formats are:\n", form); + formats(); + exit(1); + } +} + + + +static void +errorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + if (sFlag) { + fprintf(stderr, "[%d] ", severity); + } + if (mFlag) { + fprintf(stderr, "{%s} ", tag); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + if (severity <= 0) { + exit(1); + } +} + + + +int main(int argc, char *argv[]) +{ + char *modulename; + SmiModule *smiModule; + int smiflags, i; + SmiModule **modv = NULL; + int modc = 0; + + output = NULL; + firstDriver = lastDriver = defaultDriver = NULL; + + opts = sizeof(genericOpt) / sizeof(optStruct); + opt = xmalloc(sizeof(genericOpt)); + memcpy(opt, genericOpt, sizeof(genericOpt)); + + initCm(); + initCorba(); +#if 0 + initFig(); +#endif + initIdentifiers(); + initImports(); + initJax(); + initMetrics(); + initMosy(); + initNetsnmp(); + initPerl(); + initPython(); + initSming(); + initSmi(); defaultDriver = lastDriver; + initSppi(); +#if 0 + initSql(); +#endif + initScli(); + initSvg(); + initTree(); + initTypes(); + initSizes(); + initXml(); + initXsd(); + initCompliances(); + initYang(); + initBoilerplate(); + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smidump"); + else + smiInit(NULL); + + flags = 0; + driver = defaultDriver; + + optParseOptions(&argc, argv, opt, 0); + + if (!driver) { + fprintf(stderr, "smidump: no dump formats registered\n"); + smiExit(); + exit(1); + } + + if (sFlag || mFlag) { + smiSetErrorHandler(errorHandler); + } + + smiflags = smiGetFlags(); + smiflags |= SMI_FLAG_ERRORS; + smiflags |= driver->smiflags; + smiSetFlags(smiflags); + + if (flags & SMIDUMP_FLAG_UNITE && driver->ignflags & SMIDUMP_DRIVER_CANT_UNITE) { + fprintf(stderr, "smidump: %s format does not support united output:" + " ignoring -u\n", driver->name); + flags = (flags & ~SMIDUMP_FLAG_UNITE); + } + + if (output && driver->ignflags & SMIDUMP_DRIVER_CANT_OUTPUT) { + fprintf(stderr, "smidump: %s format does not support output option:" + " ignoring -o %s\n", driver->name, output); + output = NULL; + } + + modv = (SmiModule **) xmalloc((argc) * sizeof(SmiModule *)); + modc = 0; + + for (i = 1; i < argc; i++) { + modulename = smiLoadModule(argv[i]); + smiModule = modulename ? smiGetModule(modulename) : NULL; + if (smiModule) { + if ((smiModule->conformance) && (smiModule->conformance < 3)) { + flags |= SMIDUMP_FLAG_ERROR; + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(stderr, + "smidump: module `%s' contains errors, " + "expect flawed output\n", + argv[i]); + } + } + modv[modc++] = smiModule; + } else { + fprintf(stderr, "smidump: cannot locate module `%s'\n", + argv[i]); + } + } + + if (! (flags & SMIDUMP_FLAG_ERROR) || kFlag) { + (driver->func)(modc, modv, flags, output); + } else { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(stderr, + "smidump: aborting due to severe parsing errors\n" + "smidump: use the -k option to force continuation\n"); + } + } + + smiExit(); + + if (modv) xfree(modv); + + return 0; +} diff --git a/tools/smidump.h b/tools/smidump.h new file mode 100644 index 0000000..799579b --- /dev/null +++ b/tools/smidump.h @@ -0,0 +1,125 @@ +/* + * smidump.h -- + * + * This header contains the entry points into the modules + * which dump MIB modules in various output format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidump.h 7870 2008-03-11 19:29:58Z schoenw $ + */ + +#ifndef _SMIDUMP_H +#define _SMIDUMP_H + +#include "shhopt.h" + + + +/* + * The following flags can be passed to output drivers in the flags + * member of the struct above. + */ + +#define SMIDUMP_FLAG_SILENT 0x01 /* suppress comments */ +#define SMIDUMP_FLAG_UNITE 0x02 /* generated united output */ +#define SMIDUMP_FLAG_ERROR 0x04 /* parser hit serious parse errors */ + + +/* + * Driver capability flags which are used to warn about options not + * understood by a particular output driver. + */ + +#define SMIDUMP_DRIVER_CANT_UNITE 0x02 +#define SMIDUMP_DRIVER_CANT_OUTPUT 0x04 + + + +/* + * The data structure which represents a driver specific option. + * A static array of these options (with the last option's type + * being OPT_END) is used in SmidumpDriver. + * The SmidumpDriverOption structure is based on shhopt.h:optStruct. + */ + +typedef struct SmidumpDriverOption { + char *name; + optArgType type; + void *arg; + int flags; + char *descr; +} SmidumpDriverOption; + + + +/* + * The data structure which represents the entry point for an output + * driver. The ignflags contain the driver capabilities as described + * above. + */ + +typedef struct SmidumpDriver { + char *name; /* Name of the output driver. */ + void (*func) (int, SmiModule **, /* Output generating function. */ + int, char *); + int smiflags; /* Flags for the SMI parser. */ + int ignflags; /* Output driver flags ignored. */ + char *descr; /* Short description. */ + SmidumpDriverOption *opt; /* Driver specific options. */ + struct SmidumpDriver *next; +} SmidumpDriver; + + + +/* + * The entry points for the output drivers that currently exist for + * smidump. + */ + +extern void initSmi(void); +extern void initSming(void); +extern void initSppi(void); +extern void initSvg(void); +extern void initImports(void); +extern void initTypes(void); +extern void initTree(void); +extern void initIdentifiers(void); +extern void initMetrics(void); +extern void initMosy(void); +extern void initXml(void); +extern void initCorba(void); +extern void initCm(void); +extern void initNetsnmp(void); +extern void initJax(void); +extern void initPython(void); +extern void initPerl(void); +extern void initScli(void); +extern void initXsd(void); +extern void initSizes(void); +extern void initCompliances(void); +extern void initYang(void); +extern void initBoilerplate(void); + +extern void initSql(void); +extern void initFig(void); + + +/* + * The functions are wrappers for the malloc functions which handle + * memory allocation errors by terminating the program. + */ + +extern void *xmalloc(size_t size); +extern void *xrealloc(void *ptr, size_t size); +extern void *xcalloc(size_t nmemb, size_t size); +extern char *xstrdup(const char *s); +extern void xfree(void *ptr); + +extern void smidumpRegisterDriver(SmidumpDriver *driver); + +#endif /* _SMIDUMP_H */ diff --git a/tools/smilint.1 b/tools/smilint.1 new file mode 100644 index 0000000..1e06035 --- /dev/null +++ b/tools/smilint.1 @@ -0,0 +1,153 @@ +.\" +.\" $Id: smilint.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smilint 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smilint \- syntax and semantic checks of SMIv1/v2 and SPPI modules +.SH SYNOPSIS +.B smilint +[ +.B "-Vhersm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmilint\fP program is used to check MIB or PIB modules for syntax +errors and semantics at some degree. SMIv1/v2 style +MIB modules as well as SPPI PIB modules are supported. +.PP +The rules that \fBsmilint\fP is based on are taken from RFC 1155, RFC +1212 and RFC 1215 for SMIv1, RFCs 2578-2580 for SMIv2, RFC 3159 for SPPI. +.\" and the specification of SMIng that has been a research project +.\" within the Network Management Research Group of the IRTF. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smilint version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-e, --error-list\fP +Show a list of all known error messages and exit. Error messages can +have associated tags, shown in braces at the end of each line. The +tags can be used with the -i option to ignore certain error messages. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. +See below for a description of the error levels. The default error +level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +A list of error tags can be retrieved by calling smilint with the +-e option. +.TP +.I module(s) +These are the modules to be checked. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "ERROR AND WARNING LEVELS" +All generated error and warning messages have an associated severity level. +The actual severity levels are: +.IP 0 3 +Internal error, no recovery possible. Examples are memory allocation +failures. Errors of this level usually cause the application to abort. +.IP 1 3 +Major SMI/SPPI error, recovery somehow possible but may lead to severe +problems. Examples are lexically unexpected characters or unknown +keywords. Errors of this kind usually lead to follow-on errors. +.IP 2 3 +SMI/SPPI error which is probably tolerated by some +implementations. Examples are MIB/PIB modules which mix constructs +from different SMI/SPPI versions. +.IP 3 3 +SMI/SPPI error which is likely tolerated by many +implementations. Examples are misplaced SMIv2 MODULE-IDENTITY +invocations or SMIv2 textual conventions derived from other textual +conventions. +.IP 4 3 +Something which is not strictly an error but which is recommended to +be changed. Warnings of this level are usually considered during MIB +reviews. +.IP 5 3 +Something that is basically correct but might be problematic in +certain environments or usage scenarios. Examples are warnings that +identifiers only differ in case or that type definitions are not used +within the defining module. +.IP 6 3 +Messages of this level are auxiliary notices. Examples are messages +that point to a previous definition in case of a redefinition. +.PP +Higher levels are currently not used and lead to the same effects as +level 6 does. Note that errors up to level 3 are errors violating the +specifications and must be fixed by the responsible author. The +warnings generated with level 4 should be considered during normal +MIB/PIB reviews. +.SH "EXAMPLE" +This example checks the file RMON2-MIB in the current directory (note +that the `./' prefix ensures this). The error level is raised to 6 +and warnings that claim about identifier names that exceed a length +of 32 characters are suppressed. +.nf + + $ smilint -l 6 -i namelength-32 ./RMON2-MIB + ./RMON2-MIB:3935: unexpected type restriction + ./RMON2-MIB:3936: unexpected type restriction + ./RMON2-MIB:3937: unexpected type restriction + ./RMON2-MIB:3938: unexpected type restriction + ./RMON2-MIB:3939: unexpected type restriction + ./RMON2-MIB:3940: unexpected type restriction + ./RMON2-MIB:4164: scalar object must not have a `read-create' access value + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +Other commonly used MIB checkers are +.BR mosy "(1) and " +.BR smicng "(1)." +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smilint.1.in b/tools/smilint.1.in new file mode 100644 index 0000000..1e06035 --- /dev/null +++ b/tools/smilint.1.in @@ -0,0 +1,153 @@ +.\" +.\" $Id: smilint.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smilint 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smilint \- syntax and semantic checks of SMIv1/v2 and SPPI modules +.SH SYNOPSIS +.B smilint +[ +.B "-Vhersm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmilint\fP program is used to check MIB or PIB modules for syntax +errors and semantics at some degree. SMIv1/v2 style +MIB modules as well as SPPI PIB modules are supported. +.PP +The rules that \fBsmilint\fP is based on are taken from RFC 1155, RFC +1212 and RFC 1215 for SMIv1, RFCs 2578-2580 for SMIv2, RFC 3159 for SPPI. +.\" and the specification of SMIng that has been a research project +.\" within the Network Management Research Group of the IRTF. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smilint version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-e, --error-list\fP +Show a list of all known error messages and exit. Error messages can +have associated tags, shown in braces at the end of each line. The +tags can be used with the -i option to ignore certain error messages. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. +See below for a description of the error levels. The default error +level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +A list of error tags can be retrieved by calling smilint with the +-e option. +.TP +.I module(s) +These are the modules to be checked. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "ERROR AND WARNING LEVELS" +All generated error and warning messages have an associated severity level. +The actual severity levels are: +.IP 0 3 +Internal error, no recovery possible. Examples are memory allocation +failures. Errors of this level usually cause the application to abort. +.IP 1 3 +Major SMI/SPPI error, recovery somehow possible but may lead to severe +problems. Examples are lexically unexpected characters or unknown +keywords. Errors of this kind usually lead to follow-on errors. +.IP 2 3 +SMI/SPPI error which is probably tolerated by some +implementations. Examples are MIB/PIB modules which mix constructs +from different SMI/SPPI versions. +.IP 3 3 +SMI/SPPI error which is likely tolerated by many +implementations. Examples are misplaced SMIv2 MODULE-IDENTITY +invocations or SMIv2 textual conventions derived from other textual +conventions. +.IP 4 3 +Something which is not strictly an error but which is recommended to +be changed. Warnings of this level are usually considered during MIB +reviews. +.IP 5 3 +Something that is basically correct but might be problematic in +certain environments or usage scenarios. Examples are warnings that +identifiers only differ in case or that type definitions are not used +within the defining module. +.IP 6 3 +Messages of this level are auxiliary notices. Examples are messages +that point to a previous definition in case of a redefinition. +.PP +Higher levels are currently not used and lead to the same effects as +level 6 does. Note that errors up to level 3 are errors violating the +specifications and must be fixed by the responsible author. The +warnings generated with level 4 should be considered during normal +MIB/PIB reviews. +.SH "EXAMPLE" +This example checks the file RMON2-MIB in the current directory (note +that the `./' prefix ensures this). The error level is raised to 6 +and warnings that claim about identifier names that exceed a length +of 32 characters are suppressed. +.nf + + $ smilint -l 6 -i namelength-32 ./RMON2-MIB + ./RMON2-MIB:3935: unexpected type restriction + ./RMON2-MIB:3936: unexpected type restriction + ./RMON2-MIB:3937: unexpected type restriction + ./RMON2-MIB:3938: unexpected type restriction + ./RMON2-MIB:3939: unexpected type restriction + ./RMON2-MIB:3940: unexpected type restriction + ./RMON2-MIB:4164: scalar object must not have a `read-create' access value + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +Other commonly used MIB checkers are +.BR mosy "(1) and " +.BR smicng "(1)." +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smilint.c b/tools/smilint.c new file mode 100644 index 0000000..1dcb57f --- /dev/null +++ b/tools/smilint.c @@ -0,0 +1,332 @@ +/* + * smilint.c -- + * + * MIB module checker main program. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + + +/* + * These are functions that are not officially exported by the libsmi. + * See the original prototype definitions in lib/error.h. + */ + +extern int smiGetErrorSeverity(int id); +extern char* smiGetErrorTag(int id); +extern char* smiGetErrorMsg(int id); +extern char* smiGetErrorDescription(int id); + + +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static int eFlag = 0; /* print the list of possible error messages */ +static int flags; + + +typedef struct Error { + int id; + int severity; + char *tag; + char *msg; + char *description; + int used; +} Error; + + +static Error *errors = NULL; + + +static void fold(FILE *f, int indent, const char *msg) +{ + const char *p, *s; + + if (! msg) { + fprintf(f, "\n"); + return; + } + + for (s = msg; *s; s++) { + for (p = s; *p && *p != '\n'; p++) ; + if (*p) { + fprintf(f, "%.*s\n%*s", p - s, s, indent, ""); + s = p; + } else { + fprintf(f, "%.*s\n", p - s, s); + break; + } + } +} + + + +static int compare(const void *v1, const void *v2) +{ + Error *err1 = (Error *) v1; + Error *err2 = (Error *) v2; + + if (err1->severity < err2->severity) { + return -1; + } + if (err1->severity > err2->severity) { + return 1; + } + return strcmp(err1->msg, err2->msg); +} + + + +static Error* errors_new() +{ + int i, cnt; + Error *errors; + + for (cnt = 0; smiGetErrorSeverity(cnt) >= 0; cnt++) ; + + errors = malloc((cnt + 1) * sizeof(Error)); + if (! errors) { + fprintf(stderr, "smilint: malloc failed - running out of memory\n"); + exit(1); + } + memset(errors, 0, (cnt + 1) * sizeof(Error)); + + for (i = 0; i < cnt; i++) { + errors[i].id = i; + errors[i].severity = smiGetErrorSeverity(i); + errors[i].tag = smiGetErrorTag(i); + errors[i].msg = smiGetErrorMsg(i); + errors[i].description = smiGetErrorDescription(i); + } + + qsort(errors, cnt, sizeof(Error), compare); + + return errors; +} + + +static void display_one(FILE *f, Error *error) +{ + const int indent = 12; + char *type, *tag; + + type = (error->severity <= 3) ? "Error:" : "Warning:"; + tag = (error->tag && strlen(error->tag)) + ? error->tag : ""; + fprintf(f, "%-*s %s (level %d%s)\n", + indent, type, tag, error->severity & 127, + error->severity & 128 ? ", ignored" : ""); + fprintf(f, "%-*s %s\n", indent, "Message:", + error->msg ? error->msg : ""); + if (error->description) { + fprintf(f, "%-*s ", indent, "Description:"); + fold(f, indent + 1, error->description); + } +} + + +static void display_all(Error *errors) +{ + int i; + + for (i = 0; errors[i].msg; i++) { + if (i) printf("\n"); + display_one(stdout, errors + i); + } +} + + + +static void display_used(Error *errors) +{ + int i, n; + + for (i = 0, n = 0; errors[i].msg; i++) { + if (errors[i].used && errors[i].description) n++; + } + + if (! n) { + return; + } + + fprintf(stderr, + "\nAdditional descriptions of some error/warning messages:\n"); + + for (i = 0; errors[i].msg; i++) { + if (! errors[i].used || !errors[i].description) continue; + if (i) fprintf(stderr, "\n"); + display_one(stderr, errors + i); + } +} + + + +static void usage() +{ + fprintf(stderr, + "Usage: smilint [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -e, --error-list print list of known error messages\n" + " -m, --error-names print the name of errors in braces\n" + " -s, --severity print the severity of errors in brackets\n" + " -r, --recursive print errors also for imported modules\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -I, --noignore=prefix do not ignore errors matching prefix pattern\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smilint " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smilint"); } +static void preload(char *module) { smiLoadModule(module); } +static void recursive() { flags |= SMI_FLAG_RECURSIVE; smiSetFlags(flags); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void ignore(char *ign) { smiSetSeverity(ign, 128); } +static void noignore(char *ign) { smiSetSeverity(ign, -1); } + + + +static void +errorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + int i; + + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + if (sFlag) { + fprintf(stderr, "[%d] ", severity); + } + if (mFlag) { + fprintf(stderr, "{%s} ", tag); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + if (severity <= 0) { + exit(1); + } + + /* If we are supposed to generate error descriptions, locate this + * error in our error list and increment its usage counter. Note + * that we assume that error tags are unique (and we should better + * check for this somewhere). */ + + if (errors) { + for (i = 0; errors[i].msg; i++) { + if (strcmp(errors[i].tag, tag) == 0) { + errors[i].used++; + break; + } + } + } +} + + + +int main(int argc, char *argv[]) +{ + int i; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'e', "error-list", OPT_FLAG, &eFlag, 0 }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'r', "recursive", OPT_FLAG, recursive, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 'I', "noignore", OPT_STRING, noignore, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smilint"); + else + smiInit(NULL); + + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + flags |= SMI_FLAG_NODESCR; + smiSetFlags(flags); + + optParseOptions(&argc, argv, opt, 0); + + if (eFlag) { + mFlag = 1; + errors = errors_new(); + } + + if (sFlag || mFlag) { + smiSetErrorHandler(errorHandler); + } + + if (eFlag && argc == 1) { + if (errors) { + display_all(errors); + free(errors); + } + smiExit(); + return 0; + } + + for (i = 1; i < argc; i++) { + if (smiLoadModule(argv[i]) == NULL) { + fprintf(stderr, "smilint: cannot locate module `%s'\n", + argv[i]); + smiExit(); + exit(1); + } + } + + if (eFlag) { + if (errors) { + display_used(errors); + free(errors); + } + } + + smiExit(); + + return 0; +} diff --git a/tools/smiquery.1 b/tools/smiquery.1 new file mode 100644 index 0000000..ec55f6c --- /dev/null +++ b/tools/smiquery.1 @@ -0,0 +1,66 @@ +.\" +.\" $Id: smiquery.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smiquery 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smiquery \- query single information from SMI MIB modules +.SH SYNOPSIS +.B smiquery +[ +.B "-Vh" +] [ +.BI "-p " module +] +.I command name +.SH DESCRIPTION +The \fBsmiquery\fP program is used to query information on a single +item from an MIB module, e.g. module meta information or a single type +definition. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smiquery version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text lists all available \fBcommand\fPs. +.TP +\fB-p \fImodule\fB, --preload \fImodule\fP +Preload the module \fImodule\fP before reading the main module. This may +be helpful if an incomplete main module misses to import some definitions. +.TP +.I command name +This specifies the kind of information to retrieve (module, imports, +revisions, node, parent, compliance, index, members, children, type, or +macro) and the item to retrieve. +.PP +The module in question is searched along a path, which is initialized by +the \fBSMIPATH\fP environment variable or by /usr/local/share/mibs if +\fBSMIPATH\fP is not set. Files with a \fB.sming\fP extension are +expected to be (old-style!) SMIng module files. Files +with a \fB.my\fP or without +any extension are expected to be SMIv1/v2 module files. +.SH "EXAMPLE" +This example queries for information on the node ifNumber defined +in the module IF-MIB. +.nf + + $ smiquery node IF-MIB::ifNumber + MibNode: IF-MIB::ifNumber + OID: 1.3.6.1.2.1.2.1 + Type: Integer32 + Declaration: OBJECT-TYPE + NodeKind: scalar + Access: read-only + Status: current + Description: The number of network interfaces (regardless of their + current state) present on this system. + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smiquery.1.in b/tools/smiquery.1.in new file mode 100644 index 0000000..648c128 --- /dev/null +++ b/tools/smiquery.1.in @@ -0,0 +1,66 @@ +.\" +.\" $Id: smiquery.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smiquery 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smiquery \- query single information from SMI MIB modules +.SH SYNOPSIS +.B smiquery +[ +.B "-Vh" +] [ +.BI "-p " module +] +.I command name +.SH DESCRIPTION +The \fBsmiquery\fP program is used to query information on a single +item from an MIB module, e.g. module meta information or a single type +definition. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smiquery version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text lists all available \fBcommand\fPs. +.TP +\fB-p \fImodule\fB, --preload \fImodule\fP +Preload the module \fImodule\fP before reading the main module. This may +be helpful if an incomplete main module misses to import some definitions. +.TP +.I command name +This specifies the kind of information to retrieve (module, imports, +revisions, node, parent, compliance, index, members, children, type, or +macro) and the item to retrieve. +.PP +The module in question is searched along a path, which is initialized by +the \fBSMIPATH\fP environment variable or by @mibdir@ if +\fBSMIPATH\fP is not set. Files with a \fB.sming\fP extension are +expected to be (old-style!) SMIng module files. Files +with a \fB.my\fP or without +any extension are expected to be SMIv1/v2 module files. +.SH "EXAMPLE" +This example queries for information on the node ifNumber defined +in the module IF-MIB. +.nf + + $ smiquery node IF-MIB::ifNumber + MibNode: IF-MIB::ifNumber + OID: 1.3.6.1.2.1.2.1 + Type: Integer32 + Declaration: OBJECT-TYPE + NodeKind: scalar + Access: read-only + Status: current + Description: The number of network interfaces (regardless of their + current state) present on this system. + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smiquery.c b/tools/smiquery.c new file mode 100644 index 0000000..4d4577d --- /dev/null +++ b/tools/smiquery.c @@ -0,0 +1,485 @@ +/* + * smiquery.c -- + * + * A simple SMI query program, using libsmi. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smiquery.c 2445 2005-06-13 10:44:30Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + + +static char *smiStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + +static char *smiStringAccess(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; +} + +static char *smiStringLanguage(SmiLanguage language) +{ + return + (language == SMI_LANGUAGE_UNKNOWN) ? "" : + (language == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (language == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (language == SMI_LANGUAGE_SMING) ? "SMIng" : + ""; +} + +static char *smiStringDecl(SmiDecl macro) +{ + return + (macro == SMI_DECL_UNKNOWN) ? "" : + (macro == SMI_DECL_IMPLICIT_TYPE) ? "" : + (macro == SMI_DECL_TYPEASSIGNMENT) ? "" : + (macro == SMI_DECL_IMPL_SEQUENCEOF) ? "" : + (macro == SMI_DECL_VALUEASSIGNMENT) ? "" : + (macro == SMI_DECL_OBJECTTYPE) ? "OBJECT-TYPE" : + (macro == SMI_DECL_OBJECTIDENTITY) ? "OBJECT-IDENTITY" : + (macro == SMI_DECL_MODULEIDENTITY) ? "MODULE-IDENTITY" : + (macro == SMI_DECL_NOTIFICATIONTYPE) ? "NOTIFICATIONTYPE" : + (macro == SMI_DECL_TRAPTYPE) ? "TRAP-TYPE" : + (macro == SMI_DECL_OBJECTGROUP) ? "OBJECT-GROUP" : + (macro == SMI_DECL_NOTIFICATIONGROUP) ? "NOTIFICATION-GROUP" : + (macro == SMI_DECL_MODULECOMPLIANCE) ? "MODULE-COMPLIANCE" : + (macro == SMI_DECL_AGENTCAPABILITIES) ? "AGENT-CAPABILITIES" : + (macro == SMI_DECL_TEXTUALCONVENTION) ? "TEXTUAL-CONVENTION" : + (macro == SMI_DECL_MODULE) ? "module" : + (macro == SMI_DECL_TYPEDEF) ? "typedef" : + (macro == SMI_DECL_NODE) ? "node" : + (macro == SMI_DECL_SCALAR) ? "scalar" : + (macro == SMI_DECL_TABLE) ? "table" : + (macro == SMI_DECL_ROW) ? "row" : + (macro == SMI_DECL_COLUMN) ? "column" : + (macro == SMI_DECL_NOTIFICATION) ? "notification" : + (macro == SMI_DECL_GROUP) ? "group" : + (macro == SMI_DECL_COMPLIANCE) ? "compliance" : + (macro == SMI_DECL_IMPL_OBJECT) ? "" : + ""; +} + +static char *smiStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + +static char *smiStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *format(const char *s) +{ + static char ss[20000]; + int i, j; + + if (!s) { + sprintf(ss, "-"); + } else { + for(i = 0, j = 0; s[i]; i++) { + ss[j++] = s[i]; + if (s[i] == '\n') { + sprintf(&ss[j], " "); + j += 14; + } + } + ss[j] = 0; + } + return ss; +} + + +static void usage() +{ + fprintf(stderr, + "Usage: smiquery [options] command name [command name ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + "\nSupported commands are:\n" + " module show information on module \n" + " imports show import list of module \n" + " node show information on node \n" + " compliance show information on compliance node \n" + " children show children list of node \n" + " type show information on type \n" + " macro show information on macro \n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smiquery " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smiquery"); } +static void preload(char *module) { smiLoadModule(module); } + + + +int main(int argc, char *argv[]) +{ + SmiModule *module; + SmiNode *node, *node2, *child, *parent; + SmiType *type, *parenttype; + SmiMacro *macro; + SmiNamedNumber *nn; + SmiRange *range; + SmiImport *import; + SmiRevision *revision; + SmiOption *option; + SmiRefinement *refinement; + SmiElement *element; + char *command, *name, *p; + int flags, i; + char s1[40], s2[40]; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smiquery"); + else + smiInit(NULL); + + flags = smiGetFlags(); + + optParseOptions(&argc, argv, opt, 0); + + if (!(argc % 2)) { + usage(); + return 1; + } + + for (i = 1; i < argc; i +=2) { + + command = argv[i]; + name = argv[i+1]; + + if (!strcmp(command, "module")) { + module = smiGetModule(name); + if (module) { + node = smiGetModuleIdentityNode(module); + printf(" Module: %s\n", format(module->name)); + if (module->path) + printf(" Pathname: %s\n", module->path); + if (node) + printf(" Object: %s\n", + smiRenderNode(node, SMI_RENDER_ALL)); + if (module->organization) + printf("Organization: %s\n", format(module->organization)); + if (module->contactinfo) + printf(" ContactInfo: %s\n", format(module->contactinfo)); + if (module->description) + printf(" Description: %s\n", format(module->description)); + if (module->reference) + printf(" Reference: %s\n", format(module->reference)); + printf(" Language: %s\n", smiStringLanguage(module->language)); + printf(" Conformance: %d\n", module->conformance); + printf(" Loaded: %s\n", smiIsLoaded(name) ? "yes" : "no"); + + for(revision = smiGetFirstRevision(module); + revision ; revision = smiGetNextRevision(revision)) { + printf(" Revision: %s", ctime(&revision->date)); + if (revision->description) + printf(" Description: %s\n", format(revision->description)); + } + } + } else if (!strcmp(command, "imports")) { + module = smiGetModule(name); + if (module && smiGetFirstImport(module)) { + printf(" Imports:"); + for(import = smiGetFirstImport(module); import ; ) { + printf(" %s::%s", import->module, import->name); + import = smiGetNextImport(import); + if (import) { + printf("\n "); + } + } + printf("\n"); + } + } else if (!strcmp(command, "node")) { + node = smiGetNode(NULL, name); + if (node) { + parent = smiGetParentNode(node); + } + if (node) { + type = smiGetNodeType(node); + printf(" MibNode: %s\n", smiRenderNode(node, SMI_RENDER_ALL)); + printf(" OID: %s\n", smiRenderOID(node->oidlen, node->oid, + 0)); + if (parent) + printf(" ParentNode: %s\n", + smiRenderNode(parent, SMI_RENDER_ALL)); + if (type) + printf(" Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + if (node->value.basetype != SMI_BASETYPE_UNKNOWN) + printf(" Default: %s\n", smiRenderValue(&node->value, type, + SMI_RENDER_ALL)); + if (node->decl != SMI_DECL_UNKNOWN) + printf(" Declaration: %s\n", smiStringDecl(node->decl)); + printf(" NodeKind: %s\n", smiStringNodekind(node->nodekind)); + if (node->nodekind == SMI_NODEKIND_ROW) { + printf (" Creatable: %s\n", node->create ? "yes" : "no"); + printf (" Implied: %s\n", node->implied ? "yes" : "no"); + } + switch (node->nodekind) { + case SMI_NODEKIND_ROW: p = "Index"; break; + case SMI_NODEKIND_COMPLIANCE: p = "Mandatory"; break; + case SMI_NODEKIND_CAPABILITIES: p = "Includes"; break; + case SMI_NODEKIND_GROUP: p = "Members"; break; + case SMI_NODEKIND_NOTIFICATION: p = "Objects"; break; + default: p = "Elements"; + } + if (smiGetFirstElement(node)) { + printf("%12s:", p); + for(element = smiGetFirstElement(node); + element ; ) { + node2 = smiGetElementNode(element); + printf(" %s", smiRenderNode(node2, SMI_RENDER_ALL)); + element = smiGetNextElement(element); + if (element) { + printf("\n "); + } + } + printf("\n"); + } + if (node->access != SMI_ACCESS_UNKNOWN) + printf(" Access: %s\n", smiStringAccess(node->access)); + if (node->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(node->status)); + if (node->format) + printf(" Format: %s\n", format(node->format)); + if (node->units) + printf(" Units: %s\n", format(node->units)); + if (node->description) + printf(" Description: %s\n", format(node->description)); + if (node->reference) + printf(" Reference: %s\n", format(node->reference)); + } + } else if (!strcmp(command, "compliance")) { + node = smiGetNode(NULL, name); + if (node) { + if (smiGetFirstElement(node)) { + printf(" Mandatory:"); + for(element = smiGetFirstElement(node); + element ; ) { + node2 = smiGetElementNode(element); + printf(" %s", smiRenderNode(node2, SMI_RENDER_ALL)); + element = smiGetNextElement(element); + if (element) { + printf("\n "); + } + } + printf("\n"); + } + if (smiGetFirstOption(node)) { + for(option = smiGetFirstOption(node); option ;) { + node2 = smiGetOptionNode(option); + printf(" Option: %s\n", + smiRenderNode(node2, SMI_RENDER_ALL)); + if (option->description) + printf(" Description: %s\n", + format(option->description)); + option = smiGetNextOption(option); + } + } + if (smiGetFirstRefinement(node)) { + for(refinement = smiGetFirstRefinement(node); + refinement ; + refinement = smiGetNextRefinement(refinement)) { + node2 = smiGetRefinementNode(refinement); + printf(" Refinement: %s\n", + smiRenderNode(node2, SMI_RENDER_ALL)); + type = smiGetRefinementType(refinement); + if (type) { + printf(" Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + } + type = smiGetRefinementWriteType(refinement); + if (type) { + module = smiGetTypeModule(type); + printf(" Write-Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + } + if (refinement->access != SMI_ACCESS_UNKNOWN) { + printf(" Access: %s\n", + smiStringAccess(refinement->access)); + } + if (refinement->description) + printf(" Description: %s\n", + format(refinement->description)); + } + } + } + } else if (!strcmp(command, "children")) { + node = smiGetNode(NULL, name); + if (node && smiGetFirstChildNode(node)) { + printf(" Children:"); + for(child = smiGetFirstChildNode(node); + child ; ) { + printf(" %s", smiRenderNode(child, SMI_RENDER_ALL)); + child = smiGetNextChildNode(child); + if (child) { + printf("\n "); + } + } + printf("\n"); + } + } else if (!strcmp(command, "type")) { + p = strrchr(name, ':'); + if (!p) p = strrchr(name, '.'); + if (!p) p = strrchr(name, '!'); + if (p) { + p++; + } else { + p = name; + } + if (islower((int)name[0]) || isdigit((int)name[0]) || + !isupper((int)p[0])) { + node = smiGetNode(NULL, name); + if (node) { + type = smiGetNodeType(node); + } else { + type = smiGetType(NULL, name); + } + } else { + type = smiGetType(NULL, name); + } + if (type) { + parenttype = smiGetParentType(type); + printf(" Type: %s\n", smiRenderType(type, SMI_RENDER_ALL)); + printf(" Basetype: %s\n", smiStringBasetype(type->basetype)); + if (parenttype) + printf(" Parent Type: %s\n", + smiRenderType(parenttype, SMI_RENDER_ALL)); + if (type->value.basetype != SMI_BASETYPE_UNKNOWN) + printf(" Default: %s\n", smiRenderValue(&type->value, type, + SMI_RENDER_ALL)); + if ((type->basetype == SMI_BASETYPE_ENUM) || + (type->basetype == SMI_BASETYPE_BITS)) { + if (smiGetFirstNamedNumber(type)) { + printf(" Numbers:"); + for(nn = smiGetFirstNamedNumber(type); + nn ; nn = smiGetNextNamedNumber(nn)) { + printf(" %s(%ld)", + nn->name, nn->value.value.integer32); + } + printf("\n"); + } + } else { + if (smiGetFirstRange(type)) { + printf(" Ranges:"); + for(range = smiGetFirstRange(type); + range ; range = smiGetNextRange(range)) { + strcpy(s1, smiRenderValue(&range->minValue, type, 0)); + strcpy(s2, smiRenderValue(&range->maxValue, type, 0)); + printf(" %s", s1); + if (strcmp(s1, s2)) printf("..%s", s2); + } + printf("\n"); + } + } + printf(" Declaration: %s\n", smiStringDecl(type->decl)); + if (type->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(type->status)); + if (type->format) + printf(" Format: %s\n", format(type->format)); + if (type->units) + printf(" Units: %s\n", format(type->units)); + if (type->description) + printf(" Description: %s\n", format(type->description)); + if (type->reference) + printf(" Reference: %s\n", format(type->reference)); + } + } else if (!strcmp(command, "macro")) { + macro = smiGetMacro(NULL, name); + if (macro) { + printf(" Macro: %s\n", format(macro->name)); + if (macro->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(macro->status)); + if (macro->description) + printf(" Description: %s\n", format(macro->description)); + if (macro->reference) + printf(" Reference: %s\n", format(macro->reference)); + } + } else { + usage(); + return 1; + } + } + + smiExit(); + + return 0; +} diff --git a/tools/smistrip.1 b/tools/smistrip.1 new file mode 100644 index 0000000..db0a4d9 --- /dev/null +++ b/tools/smistrip.1 @@ -0,0 +1,73 @@ +.\" +.\" $Id: smistrip.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smistrip 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smistrip \- extract MIB or PIB modules from text files, like RFCs or I-Ds +.SH SYNOPSIS +.B smistrip +[ +.B "-Vhn" +] [ +.BI "-d " dir +] [ +.BI "-m " module +] +[ +.I file(s) +] +.SH DESCRIPTION +The \fBsmistrip\fP program is used to extract MIB and PIB module +files from ASCII documents like RFCs or Internet Drafts. Modules are +identified by a starting ASN.1 DEFINITIONS clause and the matching +END clause. The output is written to files named by the modules' names. +.SH OPTIONS +.TP +.B "-V" +Show the smistrip version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.B "-n" +Print only what would be extracted, but do not write any output file. +.TP +.BI "-d " dir +Write module file(s) to directory \fIdir\fP instead of the current +working directory. +.TP +.BI "-m " module +Extract only the module \fImodule\fP instead of all modules found in +the input file(s). +.TP +.I file(s) +The input text file(s) from which modules will be extracted. If no file +is given, input is read from stdin. +.PP +Note that \fBsmistrip\fP tries to be smart about locating module start +and end, detecting page breaks and blank lines near page breaks. It +also tries to cut off blank prefixing columns from all lines of a +modules. However, there might by documents that cannot be parsed +correctly by \fBsmistrip\fP and probably produce incorrect output. +You might consider to use \fBsmilint\fP on every extracted module file +to check its syntactical correctness. +.SH "EXAMPLE" +This example extracts only the module IPV6-MIB from the file rfc2465 and +writes it to the directory /usr/local/tmp. +.nf + $ smistrip -d /usr/local/tmp -m IPV6-MIB rfc2465 +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smistrip.1.in b/tools/smistrip.1.in new file mode 100644 index 0000000..db0a4d9 --- /dev/null +++ b/tools/smistrip.1.in @@ -0,0 +1,73 @@ +.\" +.\" $Id: smistrip.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smistrip 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smistrip \- extract MIB or PIB modules from text files, like RFCs or I-Ds +.SH SYNOPSIS +.B smistrip +[ +.B "-Vhn" +] [ +.BI "-d " dir +] [ +.BI "-m " module +] +[ +.I file(s) +] +.SH DESCRIPTION +The \fBsmistrip\fP program is used to extract MIB and PIB module +files from ASCII documents like RFCs or Internet Drafts. Modules are +identified by a starting ASN.1 DEFINITIONS clause and the matching +END clause. The output is written to files named by the modules' names. +.SH OPTIONS +.TP +.B "-V" +Show the smistrip version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.B "-n" +Print only what would be extracted, but do not write any output file. +.TP +.BI "-d " dir +Write module file(s) to directory \fIdir\fP instead of the current +working directory. +.TP +.BI "-m " module +Extract only the module \fImodule\fP instead of all modules found in +the input file(s). +.TP +.I file(s) +The input text file(s) from which modules will be extracted. If no file +is given, input is read from stdin. +.PP +Note that \fBsmistrip\fP tries to be smart about locating module start +and end, detecting page breaks and blank lines near page breaks. It +also tries to cut off blank prefixing columns from all lines of a +modules. However, there might by documents that cannot be parsed +correctly by \fBsmistrip\fP and probably produce incorrect output. +You might consider to use \fBsmilint\fP on every extracted module file +to check its syntactical correctness. +.SH "EXAMPLE" +This example extracts only the module IPV6-MIB from the file rfc2465 and +writes it to the directory /usr/local/tmp. +.nf + $ smistrip -d /usr/local/tmp -m IPV6-MIB rfc2465 +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smistrip.in b/tools/smistrip.in new file mode 100644 index 0000000..4e7d3bf --- /dev/null +++ b/tools/smistrip.in @@ -0,0 +1,187 @@ +#!@SH@ +# +# smistrip -- +# +# Extract MIB and PIB modules from text files, like RFCs or I-Ds. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# $Id: smistrip.in 3434 2006-04-07 07:02:51Z strauss $ +# +# NOTE, that this script relies on awk (tested with GNU awk) and getopts +# (shell builtin like in bash or standalone). +# + +AWK=@AWK@ +GETOPTS=getopts +VERSION=@VERSION@ + + +do_version () { + echo "smistrip $VERSION" +} + + + +do_usage () { + echo "Usage: smistrip [-Vhn] [-i dir] [-d dir] [-m module] file1 [file2 [...]]" + echo "-V show version and license information" + echo "-h show usage information" + echo "-n do not write module files" + echo "-i dir try to read files from directory dir" + echo "-d dir write module to directory dir" + echo "-m module strip only the specified module" + echo "file1 ... input files to parse (RFCs, I-Ds, ...)" +} + + + +do_strip () { + if [ "$indir" ] ; then + FILE="$indir/$1" + else + FILE="$1" + fi + if [ ! -f "$FILE" -a -f "$FILE.gz" ] ; then + FILE="$FILE.gz" + fi + echo "$FILE" | grep -q '\.gz$' + if [ $? -ne 0 ] ; then + CMD=cat + else + CMD=zcat + fi + + $CMD "$FILE" | \ + tr -d '\015' | \ + grep -i -v '^[ ]*Internet[ \-]Draft' | \ + $AWK -vtest="$test" -vdir="$dir" -vsingle="$single" ' + + # start of module + /^[ \t]*[A-Za-z0-9-]* *(PIB-)?DEFINITIONS *(::=)? *(BEGIN)? *$/ { + module = $1 + skip = 9 + skipped = -1 + macro = 0 + n = 0 + } + + # process each line + { + # at the end of a page we go back one line (which is expected to + # be a separator line), and start the counter skipped to skip the + # next few lines. + if ($0 ~ /\[[pP]age [iv0-9]*\] */) { + # some drafts do not use that separator line. so keep it if + # there are non-blank characters. + if (!(line[n] ~ /^[ \t]*$/)) { print "WARNING: the line ::"line[n]":: should be a separator before a page break. It was kept. " ; n-- } + skipped = 0 + } + + # if we are skipping... + if (skipped >= 0) { + skipped++ + + # if we have skipped enough lines to the top of the next page... + if (skipped >= skip) { + skipped = -1 + } else { + + # finish skipping, if we find a non-empty line, but not before + # we have skipped four lines. remember the miminum of lines + # we have ever skipped to keep empty lines in a modules that + # appear near the top of a page. + if ((skipped >= 4) && ($0 ~ /[^ \t]/)) { + if (skipped < skip) { skip = skipped } + skipped = -1 + } + } + } + + # so, if we are not skipping and inside a module, remember the line. + if ((skipped == -1) && (length(module) > 0)) { + line[n++] = $0 + } + } + + # remember when we enter a macro definition + /^[ \t]*[A-Za-z0-9-]* *MACRO *::=/ { + macro = 1 + } + + # end of module + /^[ \t]*END[ \t]*$/ { + if (macro == 0) { + if ((length(single) == 0) || (single == module)) { + strip = 99 + for (i=0 ; i < n ; i++) { + # find the minimum column that contains non-blank characters + # in order to cut a blank prefix off. Ignore lines that only + # contain white spaces. + if (!(line[i] ~ /^[ \t]*$/)) { + p = match(line[i], "[^ ]") + if ((p < strip) && (length(line[i]) > p)) { strip = p } + } + } + + if (test != "1") { + if (dir) { + f = dir"/"module + } else { + f = module + } + for (i=0 ; i < n ; i++) { + print substr(line[i], strip) >f + } + } + + print module ": " n " lines." + } + module = "" + } else { + macro = 0 + } + } + ' +} + + + +while $GETOPTS Vhnm:i:d: c ; do + case $c in + n) test=1 + ;; + m) single=$OPTARG + ;; + i) indir=$OPTARG + ;; + d) dir=$OPTARG + ;; + h) do_usage + exit 0 + ;; + V) do_version + exit 0 + ;; + *) do_usage + exit 1 + ;; + esac +done + +shift `expr $OPTIND - 1` + + + +if [ $# -eq 0 ] ; then + do_strip - +else + for f in "$@" ; do + do_strip "$f" + done +fi + +exit 0 diff --git a/tools/smixlate.1 b/tools/smixlate.1 new file mode 100644 index 0000000..5bfe6b7 --- /dev/null +++ b/tools/smixlate.1 @@ -0,0 +1,84 @@ +.\" +.\" $Id: smixlate.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smixlate 1 "June 18, 2006" "IUB" "SMI Tools" +.SH NAME +smixlate \- translate SMI/SPPI identifiers +.SH SYNOPSIS +.B smixlate +[ +.B "-Vhm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] +.I "module(s)" +.SH DESCRIPTION + +The \fBsmixlate\fP program is used to translate identifiers and +especially OIDs into a more human readable format. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smixlate version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-a, --all\fP +Replace all OIDs including OID prefixes. Without this option, smixlate +will only translate OIDs with a corresponding notification, scalar, +column, row, or table definition. +.TP +\fB-f, --format\fP +Preserve the input format as much as possible by inserting/removing +white space characters. +.TP +.I module(s) +These are the modules to be loaded for the subsequent translation. If +a module argument represents a path name (identified by containing at +least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "EXAMPLE" +This example translates numeric OIDs in the input text into a more +human readable format. +.nf + + $ echo "what is this oid? 1.3.6.1.2.1.2.2.1.3" | \ + ./smixlate -l 0 /usr/local/share/mibs/ietf/* + what is this oid? ifType + $ + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHORS" +(C) 2006-2006 J. Schoenwaelder, International University Bremen, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smixlate.1.in b/tools/smixlate.1.in new file mode 100644 index 0000000..5bfe6b7 --- /dev/null +++ b/tools/smixlate.1.in @@ -0,0 +1,84 @@ +.\" +.\" $Id: smixlate.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smixlate 1 "June 18, 2006" "IUB" "SMI Tools" +.SH NAME +smixlate \- translate SMI/SPPI identifiers +.SH SYNOPSIS +.B smixlate +[ +.B "-Vhm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] +.I "module(s)" +.SH DESCRIPTION + +The \fBsmixlate\fP program is used to translate identifiers and +especially OIDs into a more human readable format. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smixlate version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-a, --all\fP +Replace all OIDs including OID prefixes. Without this option, smixlate +will only translate OIDs with a corresponding notification, scalar, +column, row, or table definition. +.TP +\fB-f, --format\fP +Preserve the input format as much as possible by inserting/removing +white space characters. +.TP +.I module(s) +These are the modules to be loaded for the subsequent translation. If +a module argument represents a path name (identified by containing at +least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "EXAMPLE" +This example translates numeric OIDs in the input text into a more +human readable format. +.nf + + $ echo "what is this oid? 1.3.6.1.2.1.2.2.1.3" | \ + ./smixlate -l 0 /usr/local/share/mibs/ietf/* + what is this oid? ifType + $ + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHORS" +(C) 2006-2006 J. Schoenwaelder, International University Bremen, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smixlate.c b/tools/smixlate.c new file mode 100644 index 0000000..d4d2b54 --- /dev/null +++ b/tools/smixlate.c @@ -0,0 +1,328 @@ +/* + * smixlate.c -- + * + * Translate OIDs located in the input stream. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" +#include "dstring.h" + +static int flags; +static int aFlag = 0; /* translate all OIDs */ +static int fFlag = 0; /* preserve formatting */ + +static void translate(dstring_t *token, dstring_t *subst) +{ + SmiNode *smiNode; + SmiSubid oid[256]; + unsigned int oidlen = 0; + unsigned int i; + char *p; + + assert(token && subst); + + dstring_truncate(subst, 0); + dstring_assign(subst, dstring_str(token)); + + for (oidlen = 0, p = strtok(dstring_str(token), ". "); p; + oidlen++, p = strtok(NULL, ". ")) { + oid[oidlen] = strtoul(p, NULL, 0); + } + + smiNode = smiGetNodeByOID(oidlen, oid); + if (smiNode && + (aFlag + || smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN + || smiNode->nodekind == SMI_NODEKIND_NOTIFICATION + || smiNode->nodekind == SMI_NODEKIND_TABLE + || smiNode->nodekind == SMI_NODEKIND_ROW)) { + dstring_assign(subst, smiNode->name); + for (i = smiNode->oidlen; i < oidlen; i++) { + dstring_append_printf(subst, ".%d", oid[i]); + } + } +} + + +static void process(FILE *stream) +{ + int c, space = 0; + enum { TXT, NUM, NUMDOT, NUMDOTNUM, OID, OIDDOT, EATSPACE } state = TXT; + dstring_t *token, *subst; + + token = dstring_new(); + subst = dstring_new(); + + if (! token || ! subst) { + return; + } + + /* + * Shall we require iswhite() or ispunct() before and after the + * OID? + * + * TODO: - translate instance identifier to something meaningful + * (e.g. foobar["name",32]) where possible + * - generate warnings if instance identifier are incomplete + * - provide a reverse translation service (-x) (but this is + * more complex since it is unclear how to identify names + * - make the white space magic optional + */ + + while ((c = fgetc(stream)) != EOF) { + switch (state) { + case TXT: + fputs(dstring_str(token), stdout); + dstring_truncate(token, 0); + if (isdigit(c) && c >= '0' && c <= '2') { + dstring_append_char(token, (char) c); + state = NUM; + } else { + fputc(c, stdout); + fflush(stdout); + } + break; + case NUM: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else if (c == '.') { + dstring_append_char(token, (char) c); + state = NUMDOT; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case NUMDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + state = NUMDOTNUM; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case NUMDOTNUM: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } if (c == '.') { + dstring_append_char(token, (char) c); + state = OID; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case OID: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else if (c == '.') { + dstring_append_char(token, (char) c); + state = OIDDOT; + } else { + translate(token, subst); + if (fFlag) { + if (dstring_len(subst) < dstring_len(token)) { + dstring_expand(subst, dstring_len(token), ' '); + } + } + fputs(dstring_str(subst), stdout); + if (dstring_len(subst) > dstring_len(token)) { + space = dstring_len(subst) - dstring_len(token) - 1; + } else { + space = 0; + } + if (fFlag && space > 0 && c == ' ') { + state = EATSPACE; + space--; + } else { + state = TXT; + space = 0; + fputc(c, stdout); + } + dstring_truncate(token, 0); + } + break; + case OIDDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + state = OID; + } else { + translate(token, subst); + fputs(dstring_str(subst), stdout); + fputc(c, stdout); + dstring_truncate(token, 0); + state = TXT; + } + break; + case EATSPACE: + if (c == ' ' && space > 0) { + space--; + } else { + state = TXT; + } + break; + } + } + + if (dstring_len(token)) { + switch (state) { + case TXT: + case NUM: + case NUMDOT: + case NUMDOTNUM: + fputs(dstring_str(token), stdout); + dstring_truncate(token, 0); + fputc(c, stdout); + fflush(stdout); + break; + case OID: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else { + translate(token, subst); + if (fFlag) { + if (dstring_len(subst) < dstring_len(token)) { + dstring_expand(subst, dstring_len(token), ' '); + } + } + fputs(dstring_str(subst), stdout); + if (dstring_len(subst) > dstring_len(token)) { + space = dstring_len(subst) - dstring_len(token) - 1; + } else { + space = 0; + } + if (fFlag && space > 0 && c == ' ') { + space--; + } else { + space = 0; + fputc(c, stdout); + } + dstring_truncate(token, 0); + } + break; + case OIDDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else { + translate(token, subst); + fputs(dstring_str(subst), stdout); + fputc(c, stdout); + dstring_truncate(token, 0); + } + break; + case EATSPACE: + if (c == ' ' && space > 0) { + space--; + } else { + fputc(c, stdout); + } + break; + } + } +} + + + +static void usage() +{ + fprintf(stderr, + "Usage: smixlate [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -r, --recursive print errors also for imported modules\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -I, --noignore=prefix do not ignore errors matching prefix pattern\n" + " -a, --all replace all OIDs (including OID prefixes)\n" + " -f, --format preserve formatting as much as possible\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smixlate " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smixlate"); } +static void preload(char *module) { smiLoadModule(module); } +static void recursive() { flags |= SMI_FLAG_RECURSIVE; smiSetFlags(flags); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void ignore(char *ign) { smiSetSeverity(ign, 128); } +static void noignore(char *ign) { smiSetSeverity(ign, -1); } + + + +int main(int argc, char *argv[]) +{ + int i; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'a', "all", OPT_FLAG, &aFlag, 0 }, + { 'f', "format", OPT_FLAG, &fFlag, 0 }, + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'r', "recursive", OPT_FLAG, recursive, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 'I', "noignore", OPT_STRING, noignore, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smixlate"); + else + smiInit(NULL); + + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + flags |= SMI_FLAG_NODESCR; + smiSetFlags(flags); + + optParseOptions(&argc, argv, opt, 0); + + for (i = 1; i < argc; i++) { + if (smiLoadModule(argv[i]) == NULL) { + fprintf(stderr, "smixlate: cannot locate module `%s'\n", + argv[i]); + smiExit(); + exit(1); + } + } + + + process(stdin); + + smiExit(); + + return 0; +} diff --git a/win/GNUmakefile b/win/GNUmakefile new file mode 100644 index 0000000..99f7372 --- /dev/null +++ b/win/GNUmakefile @@ -0,0 +1,155 @@ +# +# GNUmakefile -- +# +# GNU Makefile for w32 VC++ environment. +# +# Copyright (c) 2000-2005 Yigal Hochberg, DMH Software. +# Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. +# Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: GNUmakefile 2409 2005-05-30 13:14:21Z strauss $ + +## +## Project directories -- these may need to be customized for your site +## +## ROOT -- top of the source tree. +## TMPDIR -- location for .obj files. +## TOOLS32 -- location of VC++ compiler installation. +## +ROOT = ./.. +TMPDIR = . +TOOLS32 = C:\PROGRA~1\MICROS~2\VC98 + +## +## Installation paths: +## +## MIBROOT -- definition for default search path (unix-style) +## MIBDIR -- same in windows style +## BINDIR -- destination for the binaries (smidump.exe, ...) +## LIBDIR -- destination for the library (smi.lib) +## +MIBROOT = c:/smi/mibs +INSTROOT = c:\smi +MIBDIR = $(INSTROOT)\mibs +BINDIR = $(INSTROOT)\bin +LIBDIR = $(INSTROOT)\lib + +## +## This include is for smidump_SOURCES definition. +## +include ../tools/Makefile.am + +## +## Visual C++ tools +## +PATH := $(TOOLS32)\bin;$(PATH) + +cc32 = cl +implib = lib +CC = $(cc32) +CFLAGS = -nologo -W3 -DYY_NO_UNISTD_H +CC_INCL = #-I$(TOOLS32)/include +AR = $(implib) +ARFLAGS = -nologo +CP = copy +RM = del +MKDIR = md + +## +## Definitions: +## +#DEBUG = -W3 -Zi -Od /Yd +INCLUDES = -I$(ROOT)/lib -I$(ROOT)/win $(CC_INCL) +DEFINES = $(DEBUG) + +## +## Library objects +## +LIBSMIOBJS = $(patsubst %.c, %.obj, $(notdir $(wildcard ../lib/*.c))) win.obj \ + shhopt.obj + +## +## Tool objects +## +SMIQUERYOBJS = smiquery.obj +SMILINTOBJS = smilint.obj +SMIDUMPOBJS = $(filter-out %.h, $(smidump_SOURCES:.c=.obj)) + +## +## Targets +## +all: libs tools + +libs: smi.lib +tools: smiquery.exe smilint.exe smidump.exe + +smi.lib: $(LIBSMIOBJS) +smiquery.exe: $(SMIQUERYOBJS) smi.lib +smilint.exe: $(SMILINTOBJS) smi.lib +smidump.exe: $(SMIDUMPOBJS) smi.lib + +clean: + del *.lib + del *.obj + del *.exe + del *.ilk + del *.pdb + del *.mdp + +install: all install-doc install-bin install-lib install-mibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ..\README $(INSTROOT) + $(CP) ..\COPYING $(INSTROOT) + $(CP) README.win $(INSTROOT) + $(MKDIR) $(INSTROOT)\doc + $(CP) ..\doc\*.txt $(INSTROOT)\doc + $(CP) ..\doc\*.ps $(INSTROOT)\doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + +install-lib: + $(MKDIR) $(LIBDIR) + $(CP) *.lib $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)\iana + $(CP) ..\mibs\iana\*.* $(MIBDIR)\iana + $(MKDIR) $(MIBDIR)\ietf + $(CP) ..\mibs\ietf\*.* $(MIBDIR)\ietf + $(MKDIR) $(MIBDIR)\irtf + $(CP) ..\mibs\irtf\*.* $(MIBDIR)\irtf + $(MKDIR) $(MIBDIR)\tubs + $(CP) ..\mibs\tubs\*.* $(MIBDIR)\tubs + $(MKDIR) $(MIBDIR)\site + +## +## Generic rules +## +vpath %.c ../lib +vpath %.c ../tools + +%.obj : %.c + $(CC) $(CFLAGS) -c $(INCLUDES) $(DEFINES) -Fo$@ $< + +%.exe : + $(CC) $(CFLAGS) $(DEFINES) -o $(notdir $@) $^ + +%.lib : + $(AR) $(ARFLAGS) -out:$(notdir $@) $^ + +## +## Special compilation rules for scanner files +## +scanner-objs = scanner-smi.obj scanner-sming.obj + +$(scanner-objs) : %.obj : %.c + $(CC) -c $(CFLAGS) -D__STDC__ $(INCLUDES) $(DEFINES) -Fo$@ $< + diff --git a/win/Makefile.mingw b/win/Makefile.mingw new file mode 100644 index 0000000..72d1635 --- /dev/null +++ b/win/Makefile.mingw @@ -0,0 +1,204 @@ +# +# Makefile.mingw -- +# +# Makefile for win32 mingw environment. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.mingw 7949 2008-03-22 16:19:33Z schoenw $ +# + +## +## Installation paths: +## +## MIBDIR -- MIB destination (let it end with /mibs; check againt config.h) +## PIBDIR -- MIB destination (let it end with /pibs; check againt config.h) +## BINDIR -- destination for the binaries (smidump.exe, ...) +## +# INSTROOT = c:\smi +INSTROOT = c/smi +MIBDIR = $(INSTROOT)/mibs +PIBDIR = $(INSTROOT)/pibs +BINDIR = $(INSTROOT)/bin +LIBDIR = $(INSTROOT)/lib + +## +## Commands: +## + +## +## Linux cross-compile is now the way to go. +## compilation within win-environment works, but you need to +## change path an options settings to get installation work. +## +# CC = gcc +# CP = copy +# RM = del +# AR = ar +# MKDIR = -mkdir + +## +## Debian Linux mingw cross-compiler version: +## +CC = i586-mingw32msvc-gcc +CP = cp +RM = rm -f +AR = i586-mingw32msvc-ar +MKDIR = -mkdir + +## +## Definitions: +## +CFLAGS = -O2 -Wall +INCLUDES = -I. -I../lib -I../tools + +## +## Global Makefile settings +## +LIBSMIOBJS = \ + win.o \ + data.o \ + check.o \ + error.o \ + util.o \ + smi.o \ + parser-smi.o \ + scanner-smi.o \ + parser-sming.o \ + scanner-sming.o \ + snprintf.o + +TOOLSOBJS = \ + smiquery.o \ + smilint.o \ + smidump.o \ + smidiff.o \ + smixlate.o \ + shhopt.o \ + fprint.o \ + fortopat.o \ + rea.o \ + dstring.o \ + dump-sming.o \ + dump-smi.o \ + dump-imports.o \ + dump-types.o \ + dump-tree.o \ + dump-mosy.o \ + dump-corba.o \ + dump-cm.o \ + dump-jax.o \ + dump-netsnmp.o \ + dump-xml.o \ + dump-identifiers.o \ + dump-metrics.o \ + dump-python.o \ + dump-perl.o \ + dump-scli.o \ + dump-xsd.o \ + dump-sppi.o \ + dump-sizes.o \ + dump-svg.o \ + dump-compliance.o \ + dump-yang.o \ + dump-boilerplate.o +# dump-smiv3.o +# dump-fig.o + +SMILIB = libsmi.a + +## +## Implicit Targets +## +VPATH = .:../lib:../tools +.c.o: + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< + + +## +## Targets +## +all: libs tools + +libs: $(SMILIB) + +$(SMILIB): $(LIBSMIOBJS) + $(AR) -ruv $(SMILIB) $(LIBSMIOBJS) + +tools: smiquery.exe smilint.exe smidump.exe smidiff.exe smixlate.exe + +smiquery.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smiquery.exe smiquery.o shhopt.o $(SMILIB) + +smilint.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smilint.exe smilint.o shhopt.o $(SMILIB) + +smidump.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) \ + -o smidump.exe smidump.o dump-sming.o dump-smi.o \ + dump-imports.o dump-types.o dump-tree.o dump-mosy.o \ + dump-corba.o dump-netsnmp.o dump-cm.o dump-jax.o dump-xml.o \ + dump-identifiers.o dump-metrics.o dump-python.o dump-perl.o \ + dump-scli.o dump-xsd.o dump-sppi.o dump-sizes.o dump-svg.o \ + dump-compliance.o dump-yang.o dump-boilerplate.o \ + shhopt.o fprint.o fortopat.o rea.o $(SMILIB) + +smidiff.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smidiff.exe smidiff.o shhopt.o $(SMILIB) + +smixlate.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smixlate.exe smixlate.o shhopt.o dstring.o $(SMILIB) + +clean: + $(RM) *.o + $(RM) *.a + $(RM) *.exe + +install: all install-doc install-bin install-mibs install-pibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ../README $(INSTROOT) + $(CP) ../COPYING $(INSTROOT) + $(CP) ../ChangeLog $(INSTROOT) + $(CP) ../THANKS $(INSTROOT) + $(CP) ../TODO $(INSTROOT) + $(CP) README.mingw $(INSTROOT) + $(MKDIR) $(INSTROOT)/doc + -$(CP) ../doc/*.txt $(INSTROOT)/doc + -$(CP) ../doc/*.ps $(INSTROOT)/doc + -$(CP) ../doc/smi* $(INSTROOT)/doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + $(MKDIR) $(LIBDIR) + $(CP) *.a $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)/iana + -$(CP) ../mibs/iana/* $(MIBDIR)/iana + $(MKDIR) $(MIBDIR)/ietf + -$(CP) ../mibs/ietf/* $(MIBDIR)/ietf + $(MKDIR) $(MIBDIR)/irtf + -$(CP) ../mibs/irtf/* $(MIBDIR)/irtf + $(MKDIR) $(MIBDIR)/tubs + -$(CP) ../mibs/tubs/* $(MIBDIR)/tubs + $(MKDIR) $(MIBDIR)/site + -$(CP) ../mibs/site/* $(MIBDIR)/site + +install-pibs: + $(MKDIR) $(PIBDIR) + $(MKDIR) $(PIBDIR)/ietf + -$(CP) ../pibs/ietf/* $(PIBDIR)/ietf + $(MKDIR) $(PIBDIR)/tubs + -$(CP) ../pibs/tubs/* $(PIBDIR)/tubs + $(MKDIR) $(PIBDIR)/site + -$(CP) ../pibs/site/* $(PIBDIR)/site + +zip: install + (cd c; zip -r ../libsmi.zip .) + +## diff --git a/win/README.mingw b/win/README.mingw new file mode 100644 index 0000000..96f685d --- /dev/null +++ b/win/README.mingw @@ -0,0 +1,78 @@ + +LIBSMI NOTES FOR NATIVE WIN32 SUPPORT USING MINGW +================================================= + +@(#) $Id: README.mingw 7800 2008-02-27 13:55:53Z schoenw $ + +Mingw32 is a gcc based environment allowing to build free Win32 +executables. +URL:ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/ + +There are two possible setups. First, you can install the mingw +toolset on a Win32 system and compile the source code. The second +option is to install a mingw cross-compiler on Unix and to use a Unix +box for compilation. The Debian Linux distribution has mingw packages +which make this pretty easy. + + +USING MINGW ON WIN32 +==================== + +Fetch and install gcc-2.95.2-crtdll.exe or whatever the latest mingw +distribution is. Set your command.com PATH to c:\mingw\bin;%PATH% (or +whereever you have installed this package). + +To compile simply run + make -f Makefile.mingw +and to install a + make -f Makefile.mingw install +should do what you expect and + make -f Makefile.mingw zip +creates libsmi.zip ready to upload on the FTP server. + +Default path's are c:/smi/mibs/... for the MIB-files and c:/smi/bin +for the tools (smidump.exe, ...). + +Globalconfig is defined as c:/smi/smi.conf. + + +USING MINGW ON DEBIAN LINUX +=========================== + +Install the mingw packages. Edit the Makefile.mingw to set the +compiler and so on. There is already a template in Makefile.mingw. To +compile simply run: + + make -f Makefile.mingw + +Installation probably requires some more tweaking of the +Makefile.mingw since it was originally written for the Win32 +environment. + + +TODO's AND KNOWN PROBLEMS +========================= + +- The version define is hardwired in config.h. + +- The scanner, parser and the smi.h source have to be created within + a Unix or cygnus environment. + +- The SMIPATH separator character is the Windows style ; and not the + Unix style : . + +- Should use configure and not a handmade Makefile. + + +CONTRIBUTORS +============ + +The mingw support was contributed by: + + Erik Schoenfelder + Juergen Schoenwaelder + +--- +There are more things in heaven and earth, +Horatio, than are dreamt of in your philosophy. + -- Wm. Shakespeare, "Hamlet" diff --git a/win/README.win b/win/README.win new file mode 100644 index 0000000..c2eafef --- /dev/null +++ b/win/README.win @@ -0,0 +1,104 @@ + +LIBSMI NOTES FOR NATIVE WIN32 SUPPORT +===================================== + +@(#) $Id: README.win 8079 2008-04-17 18:12:48Z schoenw $ + +This directory contains some help to compile the libsmi and associated +tools on a Win32 platform (Windows 95, 98, 2000, NT) with the native +Microsoft Visual C++ compiler. The makefile has been tested with VC++ +6.0, but later versions should work very well too. + +An alternative GNUmakefile can be used with GNU make program. You +will need the GNU make "gmake.exe" for Win32 platform. + +There is a separate file README.mingw which explains how the libsmi +package can be compiled on Win32 platforms using the mingw version +of gcc. + + +Installation +============ + +(1) Set MSVC version used in ./config.nmake. Check the compiler path + macro TOOLS32 in ./config.nmake for the specific msvc installation. + +(2) To compile simply run + + nmake + +(3) and to install a + + nmake install + +should do what you expect. The default path's are c:\smi\mibs\... for +the MIB-files and c:\smi\bin for the tools (smidump.exe, ...). The +global configuration file is expected to be in c:\smi\smi.conf. + + +Alternative build with GNU make +=============================== + +GNU make uses GNUmakefile provided in this directory. + +(1) Make sure the compiler (cl.exe) is in PATH + +(2) To build simply run: + + gmake + + + +If you grabbed the CVS version and some files seems to be missing: +================================================================== + +You may generate these files on another platform (Linux seems to work +fine) by running: + + cd libsmi ## the sources from the CVS archive + ./autogen.sh ## generates configure script an runs it + cd lib + make errormacros.h parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c smi.h + cd ../tools + make dump-svg-script.h + + + +COMMENTS: +========= + +- The 64 bit integer types (unsigned and signed) are simply replaced + by their 64bit _int64 msvc counterparts. They work ok. see related + definitions ./config.h + +- The compiler path in ./config.nmake is hardwired (TOOLS32) + +- The installation directories are hardwired in config.h.in + +- Scanner and parser C files, errormacros.h and smi.h have been created + within a Unix environment and integrated with the distribution. If + you want to re-build them on a windows system you can use cygwin. + +- The default SMIPATH separator character is the Windows style `;' and + not the Unix style `:'. It can be changed using the + --with-pathseparator=C configure option. + + +FURTHER INFORMATION +=================== + +You may find further information online, along with the subscription +information on the libsmi mailing list at + + http://www.ibr.cs.tu-bs.de/projects/libsmi/. + + + Erik Schoenfelder + Juergen Schoenwaelder + Yigal Hochberg + + +--- + you should be afraid to use KDE because RMS might come to your + house and cleave your monitor with an axe or something :) diff --git a/win/config.h b/win/config.h new file mode 100644 index 0000000..e6e0856 --- /dev/null +++ b/win/config.h @@ -0,0 +1,89 @@ +/* + * config.h. Generated manually for windows / vc++ 6.0 + * + * @(#) $Id: config.h.in 8079 2008-04-17 18:12:48Z schoenw $ + */ + +/* Define if the SMIv1/v2 parser shall be active. */ +#define BACKEND_SMI + +/* Define if the SMIng parser shall be active. */ +#define BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#define DEFAULT_ERRORLEVEL 3 + +/* The maximum module import recursion depth. */ +#define MAX_LEX_DEPTH 30 + +/* The full pathname of the global configuration file. */ +#define DEFAULT_GLOBALCONFIG "c:/smi/smi.conf" + +/* The basename of the per-user configuration file searched in $HOME. */ +#define DEFAULT_USERCONFIG ".smirc" + +/* The default search path to lookup SMI module files. */ +#define DEFAULT_SMIPATH "c:/smi/mibs/ietf;c:/smi/mibs/iana;c:/smi/mibs/irtf;c:/smi/mibs/site;c:/smi/mibs/tubs" + +/* The default path separator character. */ +#define PATH_SEPARATOR ';' + +/* The default path separator character. */ +#define DIR_SEPARATOR '\\' + +/* The 64 bit integer types, their formats, and their min/max values. */ +#ifdef _MSC_VER /* msvc: max/min are defined in include/limits.h */ +#define UINT64_FORMAT "%I64u" +#define INT64_FORMAT "%I64d" +#define LIBSMI_UINT64_MAX _UI64_MAX +#define LIBSMI_INT64_MIN _I64_MIN +#define LIBSMI_INT64_MAX _I64_MAX +#else +#define UINT64_FORMAT "%llu" +#define INT64_FORMAT "%lld" +#define LIBSMI_UINT64_MAX 18446744073709551615ULL +#define LIBSMI_INT64_MIN -9223372036854775808LL +#define LIBSMI_INT64_MAX 9223372036854775807LL +#endif + +/* Define if dmalloc.h is present and shall be used. */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if getopt.h (argv[] option parser) is present. */ +#undef HAVE_GETOPT_H + +/* Define if pwd.h (/etc/passwd database) is present. */ +#undef HAVE_PWD_H + +/* Define if the string-to-long-long function is present in libc. */ +#undef HAVE_STRTOLL + +/* Define if the string-to-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOQ + +/* Define if the string-to-unsigned-long-long function is present in libc. */ +#undef HAVE_STRTOULL + +/* Define if the string-to-unsigned-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOUQ + +/* Define if the timegm() function is present in libc. */ +#undef HAVE_TIMEGM + +/* Define if you have the snprintf function. */ +#define HAVE_SNPRINTF 1 + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if the win.h header file is present. */ +#define HAVE_WIN_H 1 + +/* Name of package */ +#define PACKAGE "libsmi" + +/* Version number of package */ +#define VERSION "0.4.8" diff --git a/win/config.h.in b/win/config.h.in new file mode 100644 index 0000000..8451fda --- /dev/null +++ b/win/config.h.in @@ -0,0 +1,89 @@ +/* + * config.h. Generated manually for windows / vc++ 6.0 + * + * @(#) $Id: config.h.in 8079 2008-04-17 18:12:48Z schoenw $ + */ + +/* Define if the SMIv1/v2 parser shall be active. */ +#define BACKEND_SMI + +/* Define if the SMIng parser shall be active. */ +#define BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#define DEFAULT_ERRORLEVEL 3 + +/* The maximum module import recursion depth. */ +#define MAX_LEX_DEPTH 30 + +/* The full pathname of the global configuration file. */ +#define DEFAULT_GLOBALCONFIG "c:/smi/smi.conf" + +/* The basename of the per-user configuration file searched in $HOME. */ +#define DEFAULT_USERCONFIG ".smirc" + +/* The default search path to lookup SMI module files. */ +#define DEFAULT_SMIPATH "c:/smi/mibs/ietf;c:/smi/mibs/iana;c:/smi/mibs/irtf;c:/smi/mibs/site;c:/smi/mibs/tubs" + +/* The default path separator character. */ +#define PATH_SEPARATOR ';' + +/* The default path separator character. */ +#define DIR_SEPARATOR '\\' + +/* The 64 bit integer types, their formats, and their min/max values. */ +#ifdef _MSC_VER /* msvc: max/min are defined in include/limits.h */ +#define UINT64_FORMAT "%I64u" +#define INT64_FORMAT "%I64d" +#define LIBSMI_UINT64_MAX _UI64_MAX +#define LIBSMI_INT64_MIN _I64_MIN +#define LIBSMI_INT64_MAX _I64_MAX +#else +#define UINT64_FORMAT "%llu" +#define INT64_FORMAT "%lld" +#define LIBSMI_UINT64_MAX 18446744073709551615ULL +#define LIBSMI_INT64_MIN -9223372036854775808LL +#define LIBSMI_INT64_MAX 9223372036854775807LL +#endif + +/* Define if dmalloc.h is present and shall be used. */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if getopt.h (argv[] option parser) is present. */ +#undef HAVE_GETOPT_H + +/* Define if pwd.h (/etc/passwd database) is present. */ +#undef HAVE_PWD_H + +/* Define if the string-to-long-long function is present in libc. */ +#undef HAVE_STRTOLL + +/* Define if the string-to-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOQ + +/* Define if the string-to-unsigned-long-long function is present in libc. */ +#undef HAVE_STRTOULL + +/* Define if the string-to-unsigned-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOUQ + +/* Define if the timegm() function is present in libc. */ +#undef HAVE_TIMEGM + +/* Define if you have the snprintf function. */ +#define HAVE_SNPRINTF 1 + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if the win.h header file is present. */ +#define HAVE_WIN_H 1 + +/* Name of package */ +#define PACKAGE "libsmi" + +/* Version number of package */ +#define VERSION "@VERSION@" diff --git a/win/makefile b/win/makefile new file mode 100644 index 0000000..664a02c --- /dev/null +++ b/win/makefile @@ -0,0 +1,236 @@ +# +# makefile -- +# +# Makefile for VC++ (tested with version 6.0) for compiling +# libsmi and associated tools natively under Win32. +# +# Copyright (c) 2000-2008 Yigal Hochberg, DMH Software. +# Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. +# Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: makefile 8084 2008-04-18 07:51:26Z schoenw $ + +!include "config.nmake" +!include + + +!IFDEF ENABLE_LIBSMI_DLL +CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL /MD +!ENDIF + + + +## +## Global makefile settings +## + +LIBSMIOBJS = \ + $(TMPDIR)\win.obj \ + $(TMPDIR)\shhopt.obj \ + $(TMPDIR)\data.obj \ + $(TMPDIR)\check.obj \ + $(TMPDIR)\error.obj \ + $(TMPDIR)\util.obj \ + $(TMPDIR)\smi.obj \ + $(TMPDIR)\parser-smi.obj \ + $(TMPDIR)\scanner-smi.obj \ + $(TMPDIR)\parser-sming.obj \ + $(TMPDIR)\scanner-sming.obj \ + $(TMPDIR)\snprintf.obj + +SMIQUERYOBJS = \ + $(TMPDIR)\smiquery.obj \ + +SMILINTOBJS = \ + $(TMPDIR)\smilint.obj \ + +SMIXLATEOBJS = \ + $(TMPDIR)\smixlate.obj \ + $(TMPDIR)\dstring.obj \ + +SMIDUMPOBJS = \ + $(TMPDIR)\smidump.obj \ + $(TMPDIR)\dump-sming.obj \ + $(TMPDIR)\dump-smi.obj \ + $(TMPDIR)\dump-imports.obj \ + $(TMPDIR)\dump-types.obj \ + $(TMPDIR)\dump-tree.obj \ + $(TMPDIR)\dump-mosy.obj \ + $(TMPDIR)\dump-corba.obj \ + $(TMPDIR)\dump-netsnmp.obj \ + $(TMPDIR)\dump-jax.obj \ + $(TMPDIR)\dump-xml.obj \ + $(TMPDIR)\dump-cm.obj \ + $(TMPDIR)\dump-metrics.obj \ + $(TMPDIR)\dump-identifiers.obj \ + $(TMPDIR)\dump-python.obj \ + $(TMPDIR)\dump-perl.obj \ + $(TMPDIR)\dump-scli.obj \ + $(TMPDIR)\dump-xsd.obj \ + $(TMPDIR)\dump-sppi.obj \ + $(TMPDIR)\dump-sizes.obj \ + $(TMPDIR)\dump-svg.obj \ + $(TMPDIR)\dump-compliance.obj \ + $(TMPDIR)\dump-boilerplate.obj \ + $(TMPDIR)\dump-yang.obj \ + $(TMPDIR)\fprint.obj \ + $(TMPDIR)\rea.obj \ + $(TMPDIR)\fortopat.obj + +SMIDIFFOBJS = \ + $(TMPDIR)\smidiff.obj \ + +SMILIB = smi.lib +SMIDLL = smi.dll + +## +## Implicit Targets +## +.c.obj: + $(cc32) $(cdebug) $(cflags) $(INCLUDES) \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +{$(ROOT)\lib}.c{$(TMPDIR)}.obj: + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) $(INCLUDES) \ + -DYYMALLOC=malloc -DYYFREE=free \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +{$(ROOT)\tools}.c{$(TMPDIR)}.obj: + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) $(INCLUDES) \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +## +## Targets +## +all: libs tools + +!IFDEF ENABLE_LIBSMI_DLL +libs: $(SMILIB) $(SMIDLL) +!ELSE +libs: $(SMILIB) +!ENDIF + + +# special compilation rules +# (flex-src avoids missing unistd.h if _Win32 defined) +# +$(TMPDIR)\scanner-smi.obj : $(ROOT)\lib\scanner-smi.c + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) -D_Win32 -D__STDC__ $(INCLUDES) \ + -DYY_NEVER_INTERACTIVE \ + $(DEFINES) -Fo$(TMPDIR)\ $? + +$(TMPDIR)\scanner-sming.obj : $(ROOT)\lib\scanner-sming.c + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) -D_Win32 -D__STDC__ $(INCLUDES) \ + -DYY_NEVER_INTERACTIVE \ + $(DEFINES) -Fo$(TMPDIR)\ $? + +$(SMIDLL): $(SMILIB) + $(link) $(dlllflags) $(conlibsdll) /NODEFAULTLIB /machine:i386 msvcrt.lib shell32.lib version.lib /DEBUG /DEF:smi.def /OUT:smi.dll /IMPLIB:smi.lib $(LIBSMIOBJS) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smi.dll.manifest" -outputresource:smi.dll;1 +!ENDIF + +$(SMILIB): $(LIBSMIOBJS) + $(implib) /out:smi.lib $(LIBSMIOBJS) + +tools: smiquery.exe smilint.exe smixlate.exe smidump.exe smidiff.exe + +smiquery.exe: $(SMIQUERYOBJS) $(SMILIB) + $(cc32) $(DEFINES) /osmiquery.exe $(SMIQUERYOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smiquery.exe.manifest" -outputresource:smiquery.exe;1 +!ENDIF + +smilint.exe: $(SMILINTOBJS) $(SMILIB) + $(cc32) $(DEFINES) /osmilint.exe $(SMILINTOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smilint.exe.manifest" -outputresource:smilint.exe;1 +!ENDIF + +smidump.exe: $(SMIDUMPOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmidump.exe $(SMIDUMPOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smidump.exe.manifest" -outputresource:smidump.exe;1 +!ENDIF + +smidiff.exe: $(SMIDIFFOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmidiff.exe $(SMIDIFFOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smidiff.exe.manifest" -outputresource:smidiff.exe;1 +!ENDIF + +smixlate.exe: $(SMIXLATEOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmixlate.exe $(SMIXLATEOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smixlate.exe.manifest" -outputresource:smixlate.exe;1 +!ENDIF + +clean: + rm -f *.lib + rm -f *.obj + rm -f *.exe + rm -f *.ilk + rm -f *.pdb + rm -f *.mdp + rm -f *.dll + rm -f *.exp + +install: all install-doc install-bin install-lib install-mibs install-pibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ..\README $(INSTROOT) + $(CP) ..\COPYING $(INSTROOT) + $(CP) README.win $(INSTROOT) + $(MKDIR) $(INSTROOT)\doc + $(CP) ..\doc\*.txt $(INSTROOT)\doc + -$(CP) ..\doc\*.ps $(INSTROOT)\doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + +install-lib: + $(MKDIR) $(LIBDIR) + $(CP) *.lib $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)\iana + $(CP) ..\mibs\iana\*.* $(MIBDIR)\iana + $(MKDIR) $(MIBDIR)\ietf + $(CP) ..\mibs\ietf\*.* $(MIBDIR)\ietf + $(MKDIR) $(MIBDIR)\irtf + $(CP) ..\mibs\irtf\*.* $(MIBDIR)\irtf + $(MKDIR) $(MIBDIR)\tubs + $(CP) ..\mibs\tubs\*.* $(MIBDIR)\tubs + $(MKDIR) $(MIBDIR)\site + + +install-pibs: + $(MKDIR) $(PIBDIR) + $(MKDIR) $(PIBDIR)\ietf + $(CP) ..\pibs\ietf\*.* $(PIBDIR)\ietf + $(MKDIR) $(PIBDIR)\tubs + $(CP) ..\pibs\tubs\*.* $(PIBDIR)\tubs + $(MKDIR) $(PIBDIR)\site + +# !include "local.nmake" + +# +# Local Variables: +# mode: makefile +# make: "nmake" +# eval: (set (make-local-variable 'this-file) (file-name-nondirectory buffer-file-name)) +# eval: (set (make-local-variable 'compile-command) (concat make " -k -f " this-file)) +# End: +# + + +# EOF: makefile diff --git a/win/win.c b/win/win.c new file mode 100644 index 0000000..18f7dcc --- /dev/null +++ b/win/win.c @@ -0,0 +1,29 @@ +/* + * win.c -- + * + * Some helper functions to make this compile with vc++ for win32 + * + * Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: win.c 1107 2001-03-08 14:49:09Z schoenw $ + */ + +#include +#include +#include +#include +#include +#include + +#include "win.h" + +/* + * There are currently no Win32 specific compatibility functions since + * we replaced the getopt option parser with another option parser + * implementation. But we will keep this file around since I am sure + * we will need it again at some point in time. + */ diff --git a/win/win.h b/win/win.h new file mode 100644 index 0000000..c04b7f2 --- /dev/null +++ b/win/win.h @@ -0,0 +1,88 @@ +/* + * win.h -- + * + * Some helper functions to make libsmi compile with vc++ for win32. + * + * Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: win.h 8057 2008-04-15 14:31:18Z schoenw $ + */ + +#ifndef _WIN_H +#define _WIN_H + +#include +#include +#include + +/* + * The access() function exists in the Win32 API, but there are no + * defines for the mode parameter. So we provided them here. + */ + +#ifndef F_OK +#define F_OK 00 +#endif +#ifndef W_OK +#define W_OK 02 +#endif +#ifndef R_OK +#define R_OK 04 +#endif + +/* + * Other function prototypes... + */ + +#if ! defined(__GNUC__) && defined(__STDC__) +int __cdecl fileno(FILE *); +#endif + +/* + * isascii() is a non __STDC__ extension needed when __STDC__ is defined in + * Win32 environment. + */ + +#if defined(__STDC__) +#ifndef isascii +#define isascii(_c) ( (unsigned)(_c) < 0x80 ) +#endif +#endif + +/* + * Windows seems to lacks C99 function fabsf(), strtold(). Well, this + * is only true for some compilers on Windows - gcc is fine since it + * comes with a C99 library. + */ + +#if ! defined(__GNUC__) +#define fabsf fabs +#define strtold strtod +#endif + +/* + * Some Windows compilers seem to lack strtof() so we fake it here. + */ + +#if defined(_MSC_VER) +#define strtof(f1,f2) ((float)strtod(f1,f2)) + +/* + * Windows compiler writers love to issue warnings for C functions + * whose names were changed by C++ standards. Since access is used as + * the name of a structure member it has to be treated differently. + */ + +#define access(f1,f2) _access(f1,f2) +#define putenv _putenv +#define strdup _strdup +#define vsnprintf _vsnprintf +#define strcasecmp _stricmp + +#endif /* _MSC_VER */ + +#endif /* _WIN_H */ -- 2.7.4